TurtleBot3 ROS2入门教程-17.导航Gazebo模拟
与Gazebo模拟器中的SLAM类似,您可以在虚拟导航世界中选择或创建各种环境和机器人模型。但是,在运行导航之前,必须准备好完整的地图。除了准备模拟环境(而不是启动机器人)之外,导航模拟与现实世界中的 TurtleBot3导航非常相似。
1.启动模拟世界
终止Ctrl+C前面部分启动的所有应用程序。
在上一节的SLAM中,我们使用TurtleBot3 World创建了地图。同样的Gazebo环境也将用于导航。
使用参数TURTLEBOT3_MODEL指定您的TurtleBot模型(burger,waffle,waffle_pi)。
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

如何加载TurtleBot3 House
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_house.launch.py
2.运行导航节点
使用Ctrl+Alt+T从远程PC打开一个新终端并运行Navigation2节点。
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True map:=$HOME/map.yaml
3.估计初始姿态
在运行导航之前,必须进行初始姿态估计,因为此过程会初始化对精确导航至关重要的AMCL参数。TurtleBot3必须位于地图上的正确位置,并且LDS传感器数据必须与显示的地图完全重叠。
1.单击RViz2菜单中的2D Pose Estimate按钮。
2.点击机器人实际所在位置的地图,然后将绿色大箭头拖向机器人所面向的方向。
3.重复步骤1和2,直到LDS传感器数据叠加在保存的地图上。
4.启动键盘遥操作节点,在地图上精确定位机器人。
ros2 run turtlebot3_teleop teleop_keyboard
5. 稍微前后移动机器人以收集周围的环境信息,并在地图上缩小TurtleBot3的估计位置,该位置以微小的绿色箭头显示。
6. 通过在遥控节点终端输入Ctrl+C来终止键盘遥控节点,以防止在导航期间从多个节点发布不同的cmd_vel值。
4.设置导航目标
1.单击RViz2菜单中的Navigation2 Goal按钮。
2.点击地图设置机器人的目的地,并将绿色箭头拖向机器人将要面对的方向。
这个绿色箭头是一个标记,可以指定机器人的目的地。
箭头的根是x目的地y的坐标,角度θ由箭头的方向决定。
一旦设置了x、y、θ,TurtleBot3将立即开始移动到目的地。
阅读有关Navigation2的更多信息
机器人将根据全局路径规划器创建一条到达Navigation2目标的路径。然后,机器人沿着该路径移动。如果路径上存在障碍物,Navigation2将使用局部路径规划器来避开障碍物。
如果无法创建导航2目标的路径,则设置导航2目标可能会失败。如果您希望在机器人到达目标位置之前停止机器人,请将TurtleBot3的当前位置设置为导航2 目标。