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

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

单击实际机器人所在的地图,然后将绿色大箭头拖向机器人所面向的方向。
重复步骤1和2,直到LDS传感器数据叠加在保存的地图上。
启动键盘遥控节点,在地图上精确定位机器人。
[远程PC]
ros2 run turtlebot3_teleop teleop_keyboard
稍微前后移动机器人,收集周围环境信息,缩小地图上TurtleBot3的估计位置(以绿色小箭头显示)。
使用Ctrl+C终止键盘遥控操作节点,以防止在导航期间从多个节点发布不同的cmd_vel值。
设置导航目标
单击Navigation2 GoalRViz2菜单中的按钮。

点击地图设置机器人的目的地,并将绿色箭头拖向机器人将要面对的方向。
这个绿色箭头是一个标记,可以指定机器人的目的地。
箭头的根是目的地的坐标x,y角度θ由箭头的方向决定。
一旦设置了x、y、θ,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
此系数设定前向模拟时间(以秒为单位)。设置过小的系数会使机器人难以穿过狭窄空间,而过大的系数则会限制动态转弯。您可以在下图中观察到代表模拟路径的黄线长度的差异。