(ros/navigation)how to build a map using logged data 怎样用记录的数据创建地图

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]

 

你可能感兴趣的:(导航,ROS)