TurtleBot3 ROS2入门教程-17.导航Gazebo模拟

Gazebo模拟器中的SLAM类似,您可以在虚拟导航世界中选择或创建各种环境和机器人模型。但是,在运行导航之前,必须准备好完整的地图。除了准备模拟环境(而不是启动机器人)之外,导航模拟与现实世界中的 TurtleBot3导航非常相似。

1.启动模拟世界

终止Ctrl+C前面部分启动的所有应用程序。

在上一节的SLAM中,我们使用TurtleBot3 World创建了地图。同样的Gazebo环境也将用于导航。

使用参数TURTLEBOT3_MODEL指定您的TurtleBot模型(burgerwafflewaffle_pi)。

export TURTLEBOT3_MODEL=burger

ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

turtlebot3_world.png

如何加载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.重复步骤12,直到LDS传感器数据叠加在保存的地图上。

4.启动键盘遥操作节点,在地图上精确定位机器人。

ros2 run turtlebot3_teleop teleop_keyboard

5. 稍微前后移动机器人以收集周围的环境信息,并在地图上缩小TurtleBot3的估计位置,该位置以微小的绿色箭头显示。

 

6. 通过在遥控节点终端输入Ctrl+C来终止键盘遥控节点,以防止在导航期间从多个节点发布不同的cmd_vel值。

 

4.设置导航目标

1.单击RViz2菜单中的Navigation2 Goal按钮。

2.点击地图设置机器人的目的地,并将绿色箭头拖向机器人将要面对的方向。

这个绿色箭头是一个标记,可以指定机器人的目的地。

箭头的根是x目的地y的坐标,角度θ由箭头的方向决定。

一旦设置了xy、θ,TurtleBot3将立即开始移动到目的地。

阅读有关Navigation2的更多信息

机器人将根据全局路径规划器创建一条到达Navigation2目标的路径。然后,机器人沿着该路径移动。如果路径上存在障碍物,Navigation2将使用局部路径规划器来避开障碍物。

如果无法创建导航2目标的路径,则设置导航2目标可能会失败。如果您希望在机器人到达目标位置之前停止机器人,请将TurtleBot3的当前位置设置为导航2 目标。