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 ...
随机推荐
- idea整合svn
如果遇到找不到svn.exe的情况.可以重新运行svn的安装程序.勾选上svn的安装.
- HttpClient 如何设置超时时间
今天分享一个巨坑,就是 HttpClient.这玩意有多坑呢?就是每个版本都变,近日笔者深受其害. 先看一下代码,我要发送请求调用一个c++接口. public static String doPos ...
- jquery 图片缩放插件使用
https://cdn.bootcss.com/d3-transition/1.1.1/d3-transition.js http://www.jq22.com/jquery-info9291
- SSRS 关于日期参数的范围限制
在进行SSRS Report开发的时候,我们往往会有日期\时间范围限制的需求,但参数的报表参数并没有相关的事件\属性来设置. 所以,我们需要曲线救国. 这里要说的这种方法,仅支持Microsoft S ...
- logistic regression评价方法
1.sensitivity,也叫recall,true positive rate,含义是预测为正向的case中对的(true positive)和所有事实为正向的case的比例. 2.specifi ...
- Flask—好的博客
https://www.cnblogs.com/cwp-bg/p/8892403.html https://www.cnblogs.com/ExMan/p/9825710.html https://w ...
- [日常] 安装windows+deepin双系统
我的测试电脑上安装了三个系统,分别是win7 , ubuntu16.04 ,deepin15.11下面的步骤是安装deepin系统的过程 1.制作启动u盘,直接使用官方工具制作就可以了,我的已经制作好 ...
- 7、zabbix自定义监控阈值-前端页面报警
找个值监控一下: #监控passwd #默认是间隔是1小时,我们改成10秒,下面我们要把报警打开 #我们在被监控上的主机上创建一个新用户,过10秒,界面上就会报警了 ----------------- ...
- Html学习之四(页面布局)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- linux虚拟机安装python 及 配置环境变量
一.安装anaconda 下载anaconda安装包 (wget -P filepath 下载链接) linux下安装anaconda教程,并添加清华镜像 sh Anaconda3-5.3.1-Lin ...