TurtleBot3 ROS2入门教程-13.导航

警告:按照这些说明操作时,您的TurtleBot3可能会发生意外移动和旋转。请将机器人放置在地面上的安全位置。

笔记

ü 导航应在远程PC上运行。

ü 在执行以下操作之前,请确保在TurtleBot3上启动Bringup

ü 导航使用SLAM创建的地图。运行导航前,请准备好地图。

导航用于在给定环境中将机器人从一个位置移动到指定的目的地。为此,需要一张包含描述给定环境中家具、物体和墙壁的几何信息的地图。如上一节 SLAM所述,我们利用传感器获取的距离信息和机器人自身的姿态信息创建了一张地图。

运行导航节点

如果Bringup未在TurtleBot3 SBC上运行,请启动Bringup

使用Ctrl+Alt+T在远程PC上打开一个新终端,并使用Raspberry PiIP地址连接到它。默认密码是ubuntu

[远程PC]

ssh ubuntu@{IP_ADDRESS_OF_RASPBERRY_PI}

export TURTLEBOT3_MODEL=${TB3_MODEL}

ros2 launch turtlebot3_bringup robot.launch.py

使用Ctrl+Alt+T从远程电脑打开一个新终端并启动导航节点。

ROS 2使用Navigation2

使用参数TURTLEBOT3_MODEL指定您的TurtleBot3模型(burgerwafflewaffle_pi

[远程电脑]

export TURTLEBOT3_MODEL=burger

ros2 launch turtlebot3_navigation2 navigation2.launch.py map:=$HOME/map.yaml

如何保存TURTLEBOT3_MODEL参数?

估计初始姿态

在运行导航之前,必须进行初始姿态估计,因为此过程会初始化对导航至关重要的AMCL参数。TurtleBot3必须正确定位在地图上,并且LDS传感器数据必须与显示的地图重叠。

单击2D Pose EstimateRViz2 菜单中的按钮。

单击实际机器人所在的地图,然后将绿色大箭头拖向机器人所面向的方向。

重复步骤12,直到LDS传感器数据叠加在保存的地图上。

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

[远程PC]

ros2 run turtlebot3_teleop teleop_keyboard

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

使用Ctrl+C终止键盘遥控操作节点,以防止在导航期间从多个节点发布不同的cmd_vel值。

设置导航目标

单击Navigation2 GoalRViz2菜单中的按钮。

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

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

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

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

了解有关Navigation2的更多信息

调优指南

Navigation2 堆栈包含许多参数,可用于调整不同机器人的性能。虽然它与 ROS1 导航类似,但更多详细信息,请参阅由郑凯宇撰写的《Navigation2 配置指南》或《ROS导航调优指南》。

代价地图参数

inflation_layer.inflation_radius

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

此参数定义了检测到的障碍物周围不可到达的膨胀区域。生成的路径将被规划为不穿过此区域。将此值设置为略大于机器人半径是安全的。更多信息,请参阅costmap_2d wiki

inflation_layer.cost_scaling_factor

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

这是一个与costmap值成反比的因子。如果此参数增加,costmap的值就会减少。

机器人穿越障碍物的最佳路径是选择障碍物之间的中间路径。此参数设置的值较小,将创建距离障碍物较远的路径。

dwb_控制器

最大速度

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

该因素设定了平移速度的最大值。

最小速度x

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

此系数设定平移速度的最小值。如果将其设置为负值,机器人可以向后移动。

最大速度

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人的最大y速度(以米/秒为单位)。

最小速度

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人的最小y速度(以米/秒为单位)。

max_vel_theta

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

设置最大旋转速度的值。机器人的旋转速度不能超过此值。

最小速度_theta

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

设置最小旋转速度的值。机器人的旋转速度不能低于此值。

最大速度xy

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人最大平移速度的绝对值,以米/秒为单位。

最小速度xy

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人最小平移速度的绝对值,以米/秒为单位。

acc_lim_x

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人的x加速度限制(以米/^2 为单位)。

acc_lim_y

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人的y加速度限制(以米/^2 为单位)。

acc_lim_theta

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人的旋转加速度极限(以弧度/^2为单位)。

减速极限

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人在 x 方向的减速限制,以 m/s^2 为单位。

decel_lim_y

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人在y方向的减速限制,以m/s^2 为单位。

decel_lim_theta

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人在 theta 方向的减速限制,以 rad/s^2 为单位。

xy_goal_tolerance

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人达到目标姿势时允许的 x,y 距离。

偏航目标容差

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

机器人达到目标姿势时允许的偏航角。

变换容差

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

允许tf消息的延迟。

模拟时间

定义于turtlebot3_navigation2/param/${TB3_MODEL}.yaml

此系数设定前向模拟时间(以秒为单位)。设置过小的系数会使机器人难以穿过狭窄空间,而过大的系数则会限制动态转弯。您可以在下图中观察到代表模拟路径的黄线长度的差异。