1 how to build a map using logged data 怎样用记录的数据创建地图
描述:怎样用记录的转换和激光扫描数据创建二维地图。
创建地图
1. 如果作为源校验(相对于二进制安装),构建gmapping:
rosmake gmapping
2. 获取一个包。有两个选择:
1 用机器人创建一个包
2 下载一个现有的包做测试
任何一种方式,都会得到一个包。
3. 启动核心
roscore
4. 在其他节点启动前,确保use_sim_time设置为true
<pre name="code" class="javascript"> rosparam set use_sim_time true
5. 启动slam_gmapping,它将会接收激光扫描(在这个例子中,在base_scan话题上),并且创建地图:
rosrun gmapping slam_gmapping scan:=base_scan
注意:在PR2上,odom坐标系称为odom_combined。使用这个命令:
rosrun gmapping slam_gmapping scan:=base_scan _odom_frame:=odom_combined
6. 在一个新终端,开始回放bag文件,莱维slam_gmapping提供数据:
rosbag play --clock <name of the bag that you downloaded / created in step 2>
等待rosbag完成并退出。
7. 使用map_server包的map_saver保存新地图到磁盘:
rosrun map_server map_saver
现在就有了一个地图,本地保存为map.pgm。可以用任何图像浏览器(gimp,eog,gthumb等)查看;
下载一个测试包
使用wget命令来下载测试包,
wget http://pr.willowgarage.com/data/gmapping/basic_localization_stage.bag
自己创建包
1 启动机器人,发布激光扫描和转换数据,摇杆操纵启用(不同机器人的细节不同);
2 开始记录扫描和转换(注意scan话题可能因为机器人不同而不同):
rosbag record -O mylaserdata /base_scan /tf
将会在当前目录开始写文件,文件名字为’mylaserdata_<DATE>-topic.bag’
3 驱动机器人转一圈。常用的建议:
? 尝试限制快速旋转,因为他们在扫描匹配上最难。降低操纵杆的最大允许速度比较有用。
? 用激光雷达可视化机器”看到”的;如果激光不能看到,则地图上就不会有。
? 人类走动通常不会出现问题,除非他随着机器人走,在激光的视野内。
? 回路闭合是最难的部分。关闭回路时,确保多行驶5-10米,来获得回路始端和终端之间的大量重叠。
4 杀掉rosbag实例,并且注意创建的文件的名字。
变化:查看创建地图的进展
如果看到结果前,不介意等待直到记录数据回放和创建地图过程完成,可以再rviz中查看进展:
rosrun rviz rviz
添加地图显示,设置话题 /map
Author: wsh
Email: [email protected]