使用ROSBAG进行建图
Autoware主要采用了离线的建图方式进行建图,即利用录制好了数据包进行建图(详细注意事项请参考上一节autoware实车实战之一:如何快速适配环境、让自己的小车跑起来_lu~yo的博客-CSDN博客)。
这里,首先介绍一下Autoware建图用的坐标系之间的关系,Autoware用的坐标系有四类:世界坐标系world,地图坐标系map,小车坐标系base_link,传感器坐标系velodyne,它们之间的关系如图所示:
从world到map的坐标系转换与从base_link到velodyne的坐标系转换是固定的,用ROS的TF即可。从map到base_link的映射就需要正态分布变换(NDT)算法,autoware在建图采用的是ndt_mapping。
-
-
-
单独打开Autoware功能:
-
-
建图需要单独打开autoware,不能同时运行打开雷达等其他传感器,雷达等其他传感器信息由ROSBAG提供。
roslaunch runtime_manager runtime_manager.launch
运行成功后,会弹出runtime_manager控制界面:
-
-
-
加载点云数据.bag文件
-
-
点击进 [Simulaton]页面,点击界面右上方[Ref] 按钮,加载之前录制的bag 文件。
-
-
-
回放点云数据
-
-
点击[Play]按钮开始播放数据,然后点击[Pause]暂停播放。此时你会发现右边进度条有数值出现,如下所示:
-
-
-
加载从base_link到velodyne坐标系的TF,加载小车模型
-
-
点击进入[Setup]页面,确保[Localizer]下选项为[Velodyne],在[Baselink to Localizer]中设置好各个参数之后点击 TF 按钮,其中x、y、z、yaw、pitch、roll表示真车雷达中心点与车身后轴中心点的相对位置关系。
选择合适的urdf小车模型,然后点击[Vehicle Model]加载模型,如果[Vehicle Model]为空,那么会加载一个默认模型(在rviz显示时,如果有激光雷达数据,车辆会显示为黑色)。
-
-
-
设置从world到map转换
-
-
新建文件
<launch>
<node pkg="tf" type="static_transform_publisher" name="world_to_map" args="0 0 0 0 0 0 /world /map 10" />
</launch>
然后点击[Map]页面,先点击[TF]的[ref],选择刚刚新建的tf.launch再点击[TF]加载该文件。
-
-
-
设置map到base_link转换
-
-
在[Compulting]菜单栏中找到[lidar_localizer]下的[Ndt_Mapping]选项,需要先设置[app]的一些参数后(对app内的参数数据修改完成时,需要按回车键,左侧的滑动栏位置发生变化数据才能保存成功),才能勾选[Ndt_Mapping]。Ndt_Mapping有一些参数设置需要注意一下,如下图:
Resolution:ndt分辨率,最大建图精度越低,默认为1即可
Step size:步长,默认为0.1
Transformation epsilon:两次正态变换允许的最大值,默认为0.01米
Maximum iterations:最大迭代次数,默认为30次
Leaf size:点云降采样用的体素叶大小,室内可设置小点,室外可设置大点
Minimum scan range:设置雷达最小范围,过滤较近处雷达点云,推荐设置小点:0.15米
Maximum scan range:设置雷达最大范围,过滤较远处雷达点云,默认200米
在[method type]栏中,勾选[pcl_anh]选项(无GPU加速的选[pcl_generic],有GPU加速的选[pcl_anh_gpu]。另外,如果要用到里程计或者imu辅助定位的,把[use odometry]或者[use imu]选项勾选上。
-
-
-
继续播放点云数据包
-
-
点击进 [Simulaton]页面,再次点击[Pause]按钮可以继续播放数据,此时命令行打印一些日志信息如下所示:
红框位置中,左边数字为已处理的数据,右侧的数字为总的数据,二者不能相差太大,相差太大程序有可能卡死,推荐相差200左右就按下[Pause]按钮暂停播放数据,等待当前数据处理完成就再次点击[Pause]按钮继续播放数据。
-
-
-
保存3D点云地图
-
-
等待点云数据加载完毕,命令行停止打印相关日志时,如图所示,便可保存点云地图。
打开[Compulting]页面,找到[lidar_localizer]下的[Ndt_Mapping]选项,点击[app],在[ref]中选择点云地图保存的路径后,点击[PCD OUTPUT]即可保存点云地图。
保存完地图之后,可以通过[pcl_viewer 点云文件]命令打开点云地图查看当前建图效果。