Burger Pro(ONAD)ROS2教程-8.导航

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

[远程PC]

export TURTLEBOT3_MODEL=burger

ros2 launch turtlebot3_bringup robot.launch.py

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

ROS 2使用Navigation2 

[远程电脑]

export TURTLEBOT3_MODEL=burger

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

nav3.png

估计初始姿态

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

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

nav4.png

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

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

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

[远程PC]

ros2 run turtlebot3_teleop teleop_keyboard

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

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

设置导航目标

单击Navigation2 GoalRViz2菜单中的按钮。

nav5.png

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

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

箭头的根是目的地的坐标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

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