Note: 该教程假设你已经完成了ROS Navigation,amcl,move_base和roch_bringup. |
Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. |
Roch的SLAM地图构建和导航
Description: 如何使用Gmapping生成地图,以及使用激光在静态地图中导航。Keywords: Roch 地图创建和导航
Tutorial Level: BEGINNER
Next Tutorial: Setup the Navigation Stack for Roch
这里假设你有一台Roch,如果你第一次使用,你可以在Gazebo中仿真Roch。
note:在你学习roch_navigation,你应该配置你想要使用的传感器,配置过程请参阅该教程。
启动Gmapping示例程序
该示例程序是用于地图创建的,所以你要注意3D传感器r200,确保变量ROCH_3D_SENSOR_NAV_ENABLE为false。
使用gmapping,你应该选择传感器,但是只能是一个
你应该将ROCH_LASER_ENABLE设置为false来禁止激光。
在导航中禁止3D传感器,你应该修改参数ROCH_3D_SENSOR_NAV_ENABLE为false。
在导航或其他应用中都禁止3D传感器,你可以修改ROCH_3D_SENSOR_ENABLE参数为false。
note,在导航中如果你使用两个传感器将会得到无法预料的错误。
Roch机器人上
使用ssh链接Roch的控制板或PC:
ssh <Roch_PC_NAME>@<IP_OF_Roch>
例如: ssh ubuntu@192.168.1.100
启动机器人:
roslaunch roch_bringup minimal.launch
然后启动gmapping示例应用:
roslaunch roch_navigation gmapping_demo.launch
在启动gmapping示例程序之后,你应该控制Roch移动,输入如下命令:
roslaunch roch_teleop keyboard_teleop.launch
关于roch_teleop的代码,请参阅turtlebot_follower。
在你的PC上
这里假设你在你的PC上安装了ROS,并且ROS_MASTER_URI参数已经设置为指向你的Roch机器人。如果你还没有配置该值,请参阅网络配置来设置ROS_MASTER_URI和ROS_HOSTNAME。
- 在rviz中查看地图
roslaunch roch_viz view_navigation.launch
完成地图创建
你可以使用如下命令来保存你的地图:
rosrun map_server map_saver -f <map_path>/<map_name>
note:map_name是一个没有后缀像.pgm的文件名,不要关闭运行地图创建的终端直到地图保存完毕。
加载AMCL
在该部分,我们学习如何在已知的地图中使用roch_navigation来导航。在我们启动amcl_demo.launch,让我们来了解一些内容。 在amcl_demo.launch中主要有两部分,一部分是amcl,另一部分是move_base。 在该部分中,我们需要使用一个变量是ROCH_MAP_FILE,该变量总是指向你创建的地图。
例如,你创建的地图在~/map,在该文件夹中有两个文件my_map.yaml和my_map.pgm。 注意:my_map是我们实验用的地图名。 然后在Roch上,修改~/.bashrc文件:
export ROCH_MAP_FILE=~/maps/my_map.yaml
运行示例程序
1.在Roch上,启动驱动:
roslaunch roch_bringup minimal.launch
2.在Roch上,运行amcl_demo.launch:
roslaunch roch_navigation amcl_demo.launch
3.在你的PC机上,运行rviz:
roslaunch roch_viz view_navigation.launch
Rviz
定位
当rviz打开后,首先你应该将roch机器人在地图上大概的定位,使用如下方式: 1.点击"2D Pose Estimate"按钮; 2.在地图上点击定位Roch的大概位置,沿着Roch的方向拖动; 现在你会看到Roch移动到你在地图上指定的位置上了。
发送目标
Roch在地图上定位后,你会看到Roch和地图中的模型相匹配了,你可以在地图中发送目标了: 1.点击"2D Nav Goal"按钮; 2.点击你想让Roch到达的目标点并沿着Roch应该朝向的方向拖动。 现在你可以看到Roch移动到你想要它到达的地方了。