Note: 该教程假设你已经完成了ROS Navigationamclmove_baseroch_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_ENABLEfalse

在导航或其他应用中都禁止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移动到你想要它到达的地方了。

Wiki: cn/roch/Tutorials/Using package of roch_navigation (last edited 2017-03-01 09:17:28 by SawYer)