Autoware 培训笔记 No. 1——构建点云地图
1. 首记
相信许多刚开始玩无人驾驶的人都用过Autoware,对runtime manager都比较熟悉,虽然可以通过各种渠道了解到有些设置,甚至有些设置的app下参数的含义,但是,在真车的使用过程中,不是每个人能将这些配置,以及配置下的参数设置正确。我最近刚刚参加Udacity、PIX以及Autoware三方发起的培训活动,培训针对Autoware最基本的“可以让车跑起来”这件事的最基本设置(包括设置勾选与参数设置)做了详细的讲解,对于Autoware的初学者真的有很大帮助,通过这次培训,我们培训team可以让一部真车沿着地图上的waypoints跑起来,收获很大。
我会把这次培训针对Autoware的部分充分整理出来,供大家参考,有真车的人可以试试。
我用到的数据的地址为:链接: https://pan.baidu.com/s/10oW1THdu7_g5-7VWoFHq6Q 提取码: qcum
2. 致谢
感谢我们team中的勤劳的老司机理想、聪明伶俐可爱的geek明明、一直默默付出的Miss黄为我们成功完成项目作出的努力。感谢Udacity的腿哥在背后的付出与支持,感谢PIX辛勤的为我们服务,感谢Autoware的导师Alex对我们的指导,Alex对我提出的问题总是能给予详细耐心的回答。
特别感谢曾sir,我的整理是在曾sir的前期工作之上的。曾sir的博客地址为:dowson.live
3. 地图构建
玩自动驾驶的都应该明白为什么要构建地图,这里就赘述了。直接上操作
3.1. 首先启动runtime manager,进入autoware/ros/文件夹运行
./run
3.2. 启动激光雷达
(1)针对velodyne 多线lidar
如果你有velodyne激光可以启动默认配置:[Sensing] 页面下 [Lidars] 选项下针对你的velodyne选择,velodyne激光对应的发布的点云topic:/velodyne_packets,frame_id:velodyne,topic会被重映射成为/points_raw。
例如:假如你有16线激光,点选 [velodyne VLP-16] 的 [config],点选[ref],加载/home/pix/Autoware/ros/src/sensing/drivers/lid ar/packages/velodyne/velodyne_pointcloud/param s/VLP16db.yaml路径下的配置文件(自己多线激光雷达可以针对这个配置改写),退出 [config],勾选 [velodyne VLP-16] 选项(一般的操作都是先修改config或者app下的配置或参数文件,然后勾选选项)。

这是你可以通过,命令
rostopic echo /points_raw
查看是否有点云数据输出。
当然也可以通过autoware提供的 [Topics] 工具进行查看,这里介绍一下这个工具。[Topics] 工具不仅可以查看Topic输出,还可以查看Topic的一些详细信息。

以上左图是 [Topics] 工具,左侧是Topic,新打开一个节点后可以点击 [Refresh],会刷新Topic。如果查看某个topic,比如,上图我点开了左侧的/points_raw topic,勾选 [echo],对话框中会显示topic中的内容,[Info] 中会显示topic(/points_raw)对应的类型,以及发布者和订阅者。
(2)针对其他品牌多线lidar
如果你有其他品牌的激光,他们发布的topic不是/velodyne_packets,且frame_id同样不对应,这时可以自己写个程序转一下,参照:https://www.cnblogs.com/hgl0417/p/11067660.html。然后单独运行你的lidar driver node,将你的点云数据模拟成velodyne数据。此时,不需要点选runtime manager上的lidar配置文件(每个配置文件对应一个package或者node,意义在于将对应的topic发布,此时你已经发布了topic,所以不需要在点选上述配置文件)。
3.3. 录制点云数据
点击runtime manager右下角 [ROSBAG] 按钮,在弹出的对话框中点击下方点击 [Refresh] 按钮刷新话题列表,找到/points_raw 并勾选,如下图。

老司机开车,点击 [Start] 按钮,等数据录完,点击 [Stop],此时数据会保存在autoware/ros目录下。此时,数据录制完毕。
3.4. 回放点云数据
为了查看数据录制效果,需要数据回放数据。
(1)点击进入 [Simulaton] 页面,点击界面右上方 [Ref] 按钮,加载之前录制的 bag 文件。

(2)点击 [Play] 按钮播放数据,然后再点击 [Pause] 暂停播放。此时你会发现右边进度条有数值出现,如下所示。
注意:在进行此步骤的时候确保之前启动的 [Sensing] 下的传感器驱动关闭,或者关闭自己的lidar driver。

(3)右下方的 Rviz 按钮,启动 Rviz 可视化窗口。在 Rviz 界面中左菜单栏中找到 Fixed Frame, 在该栏目中修改 world 为 velodyne。点击左下角 [Add] 按钮,加载 By Topic 下 /points_raw 话题的 PointCloud2 选项。
点击 runtime manager 下的 [Simulation] 菜单的 [Pause] 按钮,此时在 Rviz 中可以看到之前记录的数据被显示出来。如下所示。

3.5. 建图
这里,需要先讲一下autoware的建图用坐标系之间的关系,基本坐标系有四类:分别为世界坐标系:world;地图坐标系:map;车的坐标系base_link;传感器坐标系:velodyne。他们之间的转换关系,如下:

从world到map的坐标系转换与从base_link到velodyne的坐标系转换是固定的,用ROS的TF即可。从map到base_link的映射就需要scan-to-map的算法,autoware在建图采用的是ndt matching。
(1)设置从base_link到velodyne坐标系的TF。
在 [Setup] 菜单中,确保 [Localizer] 下选项为 [Velodyne],在 [Baselink to Localizer] 中设置好各个参数之后点击 TF 按钮,其中x、y、z、yaw、pitch、roll表示真车雷达中心点与车身后轴中心点的相对位置关系(右手坐标系,真车后车轴为原点),此时可以点击[Vehicle Model],如果[Vehicle Model]为空,那么会加载一个默认模型(在rviz显示时,如果有激光雷达数据,车辆会显示为黑色)。如下所示。

(2)设置map到base_link转换
在 [Compulting] 菜单栏中找到 [lidar_localizer]下的 [Ndt_Mapping] 选项,设置 [app],并勾选。Ndt_Mapping会有一些设置需要注意一下,如下图:

参数用默认,如果有GPU(一定有,因为没有CUDA不能安装autoware),可以选择 [pcl_anh_gpu]。
(3)设置从world到map转换
点击 [Map] 页面,点击 [TF] 的 [ref] 选择 autoware/ros/src/.config/tf/tf_local.launch 文件,这是加载默认world到map的坐标转换,打开tf_local.launch文件如下:
<launch>
<node pkg="tf" type="static_transform_publisher" name="world_to_map" args="0 0 0 0 0 0 /world /map 10" />
</launch>
args的参数“0 0 0 0 0 0 /world /map 10”表示:从/world坐标系转换到/map坐标系的x, y, z, roll, pitch, yaw转换,且频率为10Hz。
点击 [TF] 按钮,如下图:

(4)制作点云地图
和回放点云数据一样,点击进入 [Simulaton] 页面,点击界面右上方 [Ref] 按钮,加载之前录制的 bag 文件,点击 [Play] 按钮播放数据,然后再点击 [Pause] 暂停播放。点击runtime manager右下方的 [Rviz] 按钮,启动 Rviz 可视化窗口。加载Rviz的配置文件,路径为:autoware/ros/src/.config/rviz/ndt_mapping.rviz。加载后rviz的配置文件后,回到runtime manager的 [Simulaton] 页面,再次点击 [Pause] 开始播放,这是可以看到Rviz 可视化窗口显示如下:

可以看到有一辆黑色小车在跑,而且它的激光雷达数据在RViz中不断累加。
注意:由于rviz会占用大量的系统资源,所以在见图过程中不需要打开rviz的显示,只需要查看terminal上的显示即可,如下所示

注意:上图的最下面的(Process/Input): (1688 / 1697),这两个数字前一个数字表示正在处理的点云帧数,后一个表示加载的点云帧数。如果两个数字相差过大,会出现运行错误。我们使用的gpu是gtx1080,根据曾sir的描述,针对gtx1080,如果前后两个数字相差1000以上,就要按[Simulaton] 页面的[Pause] 按键,暂停加载,等待一下正在处理的数字,两个数字重新接近之后,可以再次按 [Pause] 按键运行。
运行停止,表示地图生成完毕。
(5)保存点云地图
打开 [Compulting] 下的 [Ndt_Mapping] 选项的 [app],如下所示:

点击 [ref] 选择保存地图的路径,将 [Filter Resolution] 参数设置为0.2,点击 [PCD OUTPUT]按钮,开始保存pcd文件。此时,可以在保存的路径里看到一个.pcd文件,该文件就是地图文件。
(6)查看地图文件
选择runtime manager的 [Map] 菜单,点击 [Point Cloud] 按钮的 [ref],加载刚才保存.pcd文件,并点击 [Point Cloud] 按钮,进度条显示OK,则加载完毕,如下所示:

点击runtime manager 右下角的 [RViz] ,在RViz显示界面点击左下角的 [Add] 按钮,通过 [By Topic] 找到/points_map 并打开,在rviz中显示如下:

到此为止,点云地图制作完毕。
(7)点云地图评价
总结为一下几点:
- 地图是否扭曲变形
- 地图在闭合处z方向是否对齐
- 扫描在墙壁上的点是否很粗
- 扫描在树木上的点是否有从影
引用:
dowson.live
原创文章,转载请引用。
Autoware 培训笔记 No. 1——构建点云地图的更多相关文章
- Autoware 培训笔记 No. 2——基于点云的定位
1. 前言 构建出地图后,应该测试点云地图定位效果,这里用到ndt的scan_matching方法,这是一种scan-to-map方法.这里用的是我们自己采集的数据进行仿真. 本章内容有和No. 1重 ...
- Autoware 培训笔记 No. 4——寻迹
1. 前言 好多初创公司公布出来的视频明显都是寻迹的效果,不是说寻迹不好,相反可以证明,寻迹是自动技术开始的第一步. 自动驾驶寻迹:一种能够自动按照给定的路线(通常是采用不同颜色或者其他信号标记来引导 ...
- Autoware 培训笔记 No. 3——录制航迹点
1.前言 航迹点用于知道汽车运行,autoware的每个航迹点包含x, y, z, yaw, velocity信息. 航迹点录制有两种方式,可以开车录制航迹点,也可以采集数据包,线下录制航迹点,我分开 ...
- 《CMake实践》笔记三:构建静态库(.a) 与 动态库(.so) 及 如何使用外部共享库和头文件
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...
- 《Linux就该这么学》培训笔记_ch00_认识Linux系统和红帽认证
<Linux就该这么学>培训笔记_ch00_认识Linux系统和红帽认证 文章最后会post上书本的笔记照片. 文章主要内容: 认识开源 Linux系统的种类及优势特性 认识红帽系统及红帽 ...
- 《Linux就该这么学》培训笔记_ch20使用LNMP架构部署动态网站环境
<Linux就该这么学>培训笔记_ch20使用LNMP架构部署动态网站环境 文章最后会post上书本的笔记照片. 文章主要内容: 源码包程序 LNMP动态网站架构 配置Mysql服务 配置 ...
- python抓取数据构建词云
1.词云图 词云图,也叫文字云,是对文本中出现频率较高的"关键词"予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨. 先看几个词 ...
- ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理
ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理 计划时间:第二天下午 背景:数据量大,工程大 目的:自动化,批处理,定制业务流程,不写程序 教程:Pdf/343 数据:chap8/ex5 ...
- Train-Alypay-Cloud:蚂蚁大数据平台培训开课通知(第三次)- 培训笔记3(机器学习平台)
ylbtech-Train-Alypay-Cloud:蚂蚁大数据平台培训开课通知(第三次)- 培训笔记3(机器学习平台) 机器学习平台 一站式可视化机器学习 https://pai.cloud.ali ...
随机推荐
- Mac 应用程序不能打开解决方法
Mac 应用程序不能打开解决方法 关键是 文件原本是可执行文件,由于权限丢失,才变成了类型不明的文件,导致软件无法打开. 参考: https://www.macbl.com/article/tips/ ...
- 公益:开放一台Nacos服务端给各位Spring Cloud爱好者
之前开放过一台公益Eureka Server给大家,以方便大家在阅读我博客中教程时候做实验.由于目前在连载Spring Cloud Alibaba,所以对应的也部署了一台Nacos,并且也开放出来,给 ...
- 死磕 java同步系列之ReentrantLock源码解析(一)——公平锁、非公平锁
问题 (1)重入锁是什么? (2)ReentrantLock如何实现重入锁? (3)ReentrantLock为什么默认是非公平模式? (4)ReentrantLock除了可重入还有哪些特性? 简介 ...
- Java关键字之abstract、final、static用法
abstract:即抽象的,可以修饰类.方法: 修饰类:当有一个方法为抽象方法时,这个类就是抽象类,抽象类不能被new,它是一个不完整的类. 修饰方法:这个方法就是抽象的,即只能方法的定义,没有方法的 ...
- 0基础入门学习Python(第3章)
第三章 成为高手前必须知道的一些基础知识 3.1 变量 一个值的名字,存储在内存中,我把把这块内存称为变量,大多数语言,把这个过程称之为,给变量赋值,把值存储在变量中. Python这里的做法稍有不同 ...
- 六个office免费学习的精品教程 office自学教程让你从小白到高手
今天给大家分享六个免费学习的精品教程,包括了word,ppt,excel常用的办公三剑客,学会这三个让你办公无忧,也能让你靠这些技术找到一份好工作,这些office自学教程让你从小白到高手. 一.PP ...
- 阿里云centos7安装python3.7.4和pip3
亲测有效,针对 阿里云 centos 7 轻量服务器 python ==> 3.7.4 pip ==> 3 一,打开python官网,找到下载Python的tgz文件,有两种方式下载 ( ...
- 记录console的使用
一般信息:console.info("这是info") 除错信息:console.debug() 警告提示:console.warn() 错误提示:console.error() ...
- Spark的Monitoring
一.启动历史页面监控配置: $ vi spark-defaults.conf spark.eventLog.enabled true spark.eventLog.dir hdfs://hadoop0 ...
- MYSQL第一课
rm-rf /* 不能用 完全删除 数据库不能直接存储数据 table 表 DB 数据库 DBMS 数据库操作系统 SQL 结构化查询语言 语句不区分大小写,但字符串常量区区分大小写.建议命令大写. ...