笔记来源:机器人开发与实践(古月)

或者直接运行这个脚本文件:

(如果你没有在.bracsh文件中加入source,建议加入或者在脚本文件的上面中添加source....,最后记得要把文件的权限变一下)

#!/bin/bash
gnome-terminal --window -e 'bash -c "roscore; exec bash"' \
--tab -e  'bash -c " sleep 3 ;roslaunch mrobot_gazebo mrobot_laser_nav_gazebo.launch; exec bash"' \
--tab -e  'bash -c " sleep 6 ;roslaunch mrobot_navigation gmapping_demo.launch; exec bash"' \
--tab -e  'bash -c " sleep 6 ;roslaunch mrobot_teleop mrobot_teleop.launch; exec bash"' \

或者按照下面的这些步骤来:

在终端中输入如下命令,启动Gazebo仿真环境和gmapping节点:

roslaunch mrobot_gazebo mrobot_laser_nav_gazebo.launch
roslaunch mrobot_navigation gmapping_demo.launch

运行成功后以后Gazebo和rviz都会启动,Gazebo中的机器人模型会静止在仿真环境的中间位置,而rviz中的机器人会同步显示,另外,rviz中的相关参数的选项可以更改,这样看起来会更加直观。

现在启动键盘控制节点:

roslaunch mrobot_teleop mrobot_teleop.launch
在键盘的终端中控制机器人移动,然后构建出二维栅格地图,并且,随着机器人的移动,rviz的更新显示,gmapping会自动矫正之前建的地图和机器人的位置偏差。

构建好地图之后,使用以下命令来保存当前的地图:

rosrun map_server map_saver
没有添加参数的话,地图会默认保存到当前的终端目录下,默认命名为map(包含一个map.pgm地图数据文件,还有一个map.yaml文件)map.pgm地图数据文件可以使用GIMP等软件进行编辑;map.yaml是一个关于地图的配置文件,代码如下:

image: map.pgm    地图数据文件
resolution: 0.050000    地图分辨率
origin: [-15.400000, -12.200000, 0.000000]    起始位置
negate: 0    
occupied_thresh: 0.65    地图数据的阀值
free_thresh: 0.196

关于map_server地图包:

rosrun map_server map_saver -f /home/xxx/map/mm
使用-f选项为指定地图的存放目录和名称
/home/xxx/map/为地图目录路径,mm为地图名称,生成后得到mm.yaml和mm.pgm两个文件
另外,map (nav_msgs/OccupancyGrid),通过指定话题来获取地图