上一節,主要介紹導航功能包Nav2的規劃部分,本節為控制部分:
控制器概述 Controller

注意黃色部分,具體看下圖。
插件 Plugins
- 控制器
- 過程檢查
- 目标檢查
控制器伺服器 Controller Server
[nav2_controller_server]
- 輸入:全局路徑,代價地圖
- 輸出:速度指令
預設為 DWB 控制器。
釋出速度:~/cmd_vel (geometry_msgs/Twist)
包含多個插件:
- 軌迹生成器插件
- 評分插件
- 目标檢查器插件
DWB控制器 DWB Controller
軌迹生成器插件
負責生成局部軌迹并輸出指令速度。
目前有兩個插件(一次隻能加載一個):
- 标準軌迹生成器
- 有限加速器
FollowPath:
plugin: "dwb_core::DWBLocalPlanner"
debug_trajectory_details: True
min_vel_x: 0.0
min_vel_y: 0.0
max_vel_x: 0.22
max_vel_y: 0.0
max_vel_theta: 1.0
min_speed_xy: 0.0
max_speed_xy: 0.22
min_speed_theta: 0.0
複制
評分插件 Critic Plugins
對軌迹生成器生成的軌迹進行評分。 可以加載多個插件并将它們的分數添加到每個軌迹的最終分數中。
示例:
- BaseObstacle:基于路徑經過代價地圖的位置
- ObstacleFootprint:基于驗證機器人足迹上的所有點都沒有接觸到代價地圖中标記的障礙物。
- GoalDist:基于軌迹使機器人與目标姿勢的接近程度。
- ...
critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]
複制
目标檢查器 Goal Checker
驗證機器人是否達到了目标
目前有兩個插件(一次隻能加載一個):
- SimpleGoalChecker - 檢查位置以檢視機器人是否已達到目标。
- StoppedGoalChecker - 檢查位置以及機器人是否已停止。
可以參數化目标“範圍”(位置、旋轉等...)。
goal_checker:
plugin: "nav2_controller::SimpleGoalChecker"
xy_goal_tolerance: 0.25
yaw_goal_tolerance: 0.25
stateful: True
複制
controller_server:
ros__parameters:
use_sim_time: False
controller_frequency: 20.0
min_x_velocity_threshold: 0.001
min_y_velocity_threshold: 0.5
min_theta_velocity_threshold: 0.001
controller_plugins: ["FollowPath"]
# DWB parameters
FollowPath:
plugin: "dwb_core::DWBLocalPlanner"
debug_trajectory_details: True
min_vel_x: 0.0
min_vel_y: 0.0
max_vel_x: 0.22
max_vel_y: 0.0
max_vel_theta: 1.0
min_speed_xy: 0.0
max_speed_xy: 0.22
min_speed_theta: 0.0
# Add high threshold velocity for turtlebot 3 issue.
# https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues/75
acc_lim_x: 2.5
acc_lim_y: 0.0
acc_lim_theta: 3.2
decel_lim_x: -2.5
decel_lim_y: 0.0
decel_lim_theta: -3.2
vx_samples: 20
vy_samples: 5
vtheta_samples: 20
sim_time: 1.7
linear_granularity: 0.05
angular_granularity: 0.025
transform_tolerance: 0.2
xy_goal_tolerance: 0.25
trans_stopped_velocity: 0.25
short_circuit_trajectory_evaluation: True
stateful: True
critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]
BaseObstacle.scale: 0.02
PathAlign.scale: 32.0
PathAlign.forward_point_distance: 0.1
GoalAlign.scale: 24.0
GoalAlign.forward_point_distance: 0.1
PathDist.scale: 32.0
GoalDist.scale: 24.0
RotateToGoal.scale: 32.0
RotateToGoal.slowing_factor: 5.0
RotateToGoal.lookahead_time: -1.0
controller_server_rclcpp_node:
ros__parameters:
use_sim_time: False
複制
下一節介紹恢複器。