ROS2与Navigation2入门教程-配置DWB控制器(DWB Controller)
说明:
- 介绍如何配置DWB控制器(DWB Controller)
概述
其源代码位于Github网站上。
DWB控制器是默认控制器。它是David Lu控制器为ROS 2专门修改的一个分支。
控制器
DWB控制器
DWB控制器的参数包括:
是控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 .critics参数:
数据类型:vector<string>
默认值:N/A
描述:用于设置要使用的评分插件列表。
.default_critic_namespaces参数:
数据类型:vector<string>
默认值:[“dwb_critics”]
描述:用于设置要加载的评分插件命名空间。
.prune_plan参数:
数据类型:bool
默认值:true
描述:用于设置是否剪切掉路径中已经过的旧点。
.shorten_transformed_plan参数:
数据类型:bool
默认值:true
描述:用于确定是否要将完整的规划路径传递给评分插件。
.prune_distance参数:
数据类型:double
默认值:1.0
描述:用于设置向后剪切路径中已经过的旧点的长度或距离(单位为m)。
.debug_trajectory_details参数:
数据类型:bool
默认值:false
描述:用于设置是否发布调试信息(在什么话题上发布???)。
.trajectory_generator_name参数:
数据类型:string
默认值:“dwb_plugins::StandardTrajectoryGenerator”
描述:用于设置轨迹生成器插件名称。
.goal_checker_name参数:
数据类型:string
默认值:“dwb_plugins::SimpleGoalChecker”
描述:用于设置目标检测器插件名称。
.transform_tolerance参数:
数据类型:double
默认值:0.1
描述:用于设置TF坐标变换的容差(单位为秒)。
.short_circuit_trajectory_evaluation参数:
数据类型:bool
默认值:true
描述:用于设置是否在找到最佳结果轨迹后停止评估。
.path_distance_bias参数(旧有的Legacy):
数据类型:double
默认值:N/A
描述:此参数为PathAlign.scale的旧版本,请改用PathAlign.scale参数。
.goal_distance_bias参数(旧有的Legacy):
数据类型:double
默认值:N/A
描述:此参数为GoalAlign.scale的旧版本,请改用GoalAlign.scale参数。
.occdist_scale参数(旧有的Legacy):
数据类型:double
默认值:N/A
描述:此参数为ObstacleFootprint.scale的旧版本,请改用ObstacleFootprint.scale参数。
. max_scaling_factor参数(旧有的Legacy):
数据类型:double
默认值:N/A
描述:此参数为ObstacleFootprint.max_scaling_factor的旧版本,请改用ObstacleFootprint.max_scaling_factor参数。
. scaling_speed参数(旧有的Legacy):
数据类型:double
默认值:N/A
描述:此参数为ObstacleFootprint.scaling_speed的旧版本,请改用ObstacleFootprint.scaling_speed参数。
. PathAlign.scale参数:
数据类型:double
默认值:32.0
描述:用于设置对齐路径评分插件的加权比例,会覆盖本地默认值。
. GoalAlign.scale参数:
数据类型:double
默认值:24.0
描述:用于设置目标位姿对齐评分插件的加权比例,会覆盖本地默认值。
. PathDist.scale参数:
数据类型:double
默认值:32.0
描述:用于设置路径距离评分插件的加权比例,会覆盖本地默认值。
. GoalDist.scale参数:
数据类型:double
默认值:24.0
描述:用于设置目标位姿距离评分插件的加权比例,会覆盖本地默认值。
XYTheta迭代器(Iterator)
XYTheta迭代器的参数包括:
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 . vx_samples参数:
数据类型:int
默认值:20
描述:用于设置X速度方向上的速度样本数。
.vy_samples参数:
数据类型:int
默认值:5
描述:用于设置Y速度方向上的速度样本数。
.vtheta_samples参数:
数据类型:int
默认值:20
描述:用于设置角度方向上的速度样本数。
Kinematic参数
- Kinematic的参数包括:
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 . max_vel_theta参数:
数据类型:double
默认值:0.0
描述:用于设置最大角速度(单位为弧度/秒即rad/s)。
. min_speed_xy参数:
数据类型:double
默认值:0.0
描述:用于设置最小平移速度(单位为m/s)。
. max_speed_xy参数:
数据类型:double
默认值:0.0
描述:用于设置最大平移速度(单位为m/s)。
. min_speed_theta参数:
数据类型:double
默认值:0.0
描述:用于设置最小角速度(单位为rad/s)。
. min_vel_x参数:
数据类型:double
默认值:0.0
描述:用于设置X轴方向上的最小速度(单位为m/s)。
. min_vel_y参数:
数据类型:double
默认值:0.0
描述:用于设置Y轴方向上的最小速度(单位为m/s)。
. max_vel_x参数:
数据类型:double
默认值:0.0
描述:用于设置X轴方向上的最大速度(单位为m/s)。
. max_vel_y参数:
数据类型:double
默认值:0.0
描述:用于设置Y轴方向上的最大速度(单位为m/s)。
. acc_lim_x参数:
数据类型:double
默认值:0.0
描述:用于设置X轴方向上的最大加速度(单位为m/s2)。
. acc_lim_y参数:
数据类型:double
默认值:0.0
描述:用于设置Y轴方向上的最大加速度(单位为m/s2)。
. acc_lim_theta参数:
数据类型:double
默认值:0.0
描述:用于设置最大旋转加速度(单位为rad/s2)。
. decel_lim_x参数:
数据类型:double
默认值:0.0
描述:用于设置X轴方向上的最大减速度(单位为m/s2)。
. decel_lim_y参数:
数据类型:double
默认值:0.0
描述:用于设置Y轴方向上的最大减速度(单位为m/s2)。
. decel_lim_theta参数:
数据类型:double
默认值:0.0
描述:用于设置最大旋转(角度)减速度(单位为rad/s2)。
发布者(Publisher)
发布者的参数包括:
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 . publish_evaluation参数:
数据类型:bool
默认值:true
描述:用于设置是否发布局部路径规划评估结果。
. publish_global_plan参数:
数据类型:bool
默认值:true
描述:用于设置是否发布全局路径规划。
. publish_transformed_plan参数:
数据类型:bool
默认值:true
描述:用于设置是否发布里程计坐标系中的全局路径规划。
. publish_local_plan参数:
数据类型:bool
默认值:true
描述:用于设置是否发布局部规划器的路径规划。
. publish_trajectories参数:
数据类型:bool
默认值:true
描述:用于设置是否发布调试轨迹。
. publish_cost_grid_pc参数:
数据类型:bool
默认值:false
描述:用于设置是否发布成本网格。
. marker_lifetime参数:
数据类型:double
默认值:0.1
描述:用于设置保留标记的时间。
插件
- 下面列出的两个插件均位于dwb_plugins命名空间中:
LimitedAccelGenerator
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 此插件只有一个参数,即:
.sim_time参数
数据类型:double
默认值:1.7
描述:用于设置向前仿真的时间(单位为秒)。
StandardTrajectoryGenerator
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 该插件包含以下6个参数:
.sim_time参数
数据类型:double
默认值:1.7
描述:用于设置向前仿真的时间(单位为秒)。
.discretize_by_time参数
数据类型:bool
默认值:false
描述:用于设置是否用时间进行离散化。如果为true,则按时间向前仿真。如果为false,则按线性和角度粒度进行前向仿真。
. time_granularity参数
数据类型:double
默认值:0.5
描述:用于设置时间粒度,即向前投射的时间。
. linear_granularity参数
数据类型:double
默认值:0.5
描述:用于设置线性粒度,即向前投射的线性距离。
. angular_granularity参数
数据类型:double
默认值:0.025
描述:用于设置角度粒度,即向前投射的角度距离。
.include_last_point参数
数据类型:bool
默认值:true
描述:用于设置是否包含轨迹中的最后位姿。
轨迹评分插件(critics)
- 下面列出的各个轨迹评分插件均位于dwb_critics命名空间中:
BaseObstacleCritic
此评分插件基于路径经过成本地图的位置对轨迹进行评分。
要正确使用此轨迹,必须使用成本地图中的膨胀层以机器人的半径扩展障碍物。
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 :DWB控制器定义的 .critics参数中定义的 BaseObstacleCritic评分插件(critic)名称。 该插件包含以下2个参数:
. .sum_scores参数
数据类型:bool
默认值:false
描述:用于设置是否允许对分数求和。
. .scale参数
数据类型:double
默认值:1.0
描述:用于设置评分插件的加权比例。
GoalAlignCritic
此评分插件基于轨迹与目标位姿的对齐程度对轨迹进行评分。
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 :DWB控制器定义的 .critics参数中定义的 BaseObstacleCritic评分插件(critic)名称。 该插件包含以下3个参数:
. .forward_point_distance参数
数据类型:double
默认值:0.325
描述:用于设置机器人前方点的距离以用于计算角度变化。
. .aggregation_type参数
数据类型:string
默认值:“last”
描述:用于设置汇总类型,可以是最后、总和、乘积这三种汇总方法。
. .scale参数
数据类型:double
默认值:1.0
描述:用于设置评分插件的加权比例。
GoalDistCritic
此评分插件基于轨迹使机器人与目标位姿的接近程度对轨迹进行评分。
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 :DWB控制器定义的 .critics参数中定义的 BaseObstacleCritic评分插件(critic)名称。 该插件包含以下2个参数:
. .aggregation_type参数
数据类型:string
默认值:“last”
描述:用于设置汇总类型,可以是最后、总和、乘积这三种汇总方法。
. .scale参数
数据类型:double
默认值:1.0
描述:用于设置评分插件的加权比例。
ObstacleFootprintCritic
此评分插件基于验证机器人足迹上的所有点都没有接触到成本地图中标记的障碍物来对轨迹进行评分。
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 :DWB控制器定义的 .critics参数中定义的 BaseObstacleCritic评分插件(critic)名称。 该插件包含以下2个参数:
. .sum_scores参数
数据类型:bool
默认值:false
描述:用于设置是否允许对分数求和。
. .scale参数
数据类型:double
默认值:1.0
描述:用于设置评分插件的加权比例。
OscillationCritic
此评分插件用于防止机器人只是前后移动。
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 :DWB控制器定义的 .critics参数中定义的 BaseObstacleCritic评分插件(critic)名称。 该插件包含以下5个参数:
. .oscillation_reset_dist参数
数据类型:double
默认值:0.05
描述:用于设置移动到复位振荡看门狗的最小距离 (单位为m)。
. .oscillation_reset_angle参数
数据类型:double
默认值:0.2
描述:用于设置移动到复位振荡看门狗的最小角度距离 (单位为弧度)。
. .oscillation_reset_time参数
数据类型:double
默认值:-1.0
描述:调用重置时的持续时间。如果设为-1,则无法重置。
. .x_only_threshold参数
数据类型:double
默认值:0.05
描述:用于设置在X速度方向上要检查的阈值。
. .scale参数
数据类型:double
默认值:1.0
描述:用于设置评分插件的加权比例。
PathAlignCritic
此评分插件基于轨迹与全局路径规划器提供的路径的对齐程度对轨迹进行评分。
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 :DWB控制器定义的 .critics参数中定义的 BaseObstacleCritic评分插件(critic)名称。 该插件包含以下3个参数:
. .forward_point_distance参数
数据类型:double
默认值:0.325
描述:用于设置机器人前方点的距离以用于计算角度变化。
. .aggregation_type参数
数据类型:string
默认值:“last”
描述:用于设置汇总类型,可以是最后、总和、乘积这三种汇总方法。
. .scale参数
数据类型:double
默认值:1.0
描述:用于设置评分插件的加权比例。
PathDistCritic
此评分插件基于轨迹与全局路径规划器提供的路径的接近程度对轨迹进行评分。
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 :DWB控制器定义的 .critics参数中定义的 BaseObstacleCritic评分插件(critic)名称。 该插件包含以下2个参数:
. .aggregation_type参数
数据类型:string
默认值:“last”
描述:用于设置汇总类型,可以是最后、总和、乘积这三种汇总方法。
. .scale参数
数据类型:double
默认值:1.0
描述:用于设置评分插件的加权比例。
PreferForwardCritic
此评分插件会让机器人能够向前移动的轨迹得分更高。
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 :DWB控制器定义的 .critics参数中定义的 BaseObstacleCritic评分插件(critic)名称。 该插件包含以下5个参数:
. .penalty参数
数据类型:double
默认值:1.0
描述:用于设置施加给向后移动的惩罚力度。
. .strafe_x参数
数据类型:double
默认值:0.1
描述:用于设置施加惩罚前X方向上的最小速度。
. .strafe_theta参数
数据类型:double
默认值:0.2
描述:用于设置施加惩罚前的最小角速度。
. .theta_scale参数
数据类型:double
默认值:10.0
描述:用于设置角速度分量的权重比例。
. .scale参数
数据类型:double
默认值:1.0
描述:用于设置评分插件的加权比例。
RotateToGoalCritic
此评分插件的功能为:只有当机器人足够接近目标位置时,才允许机器人旋转到目标方向。
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 :DWB控制器定义的 .critics参数中定义的 BaseObstacleCritic评分插件(critic)名称。 该插件包含以下5个参数:
. .xy_goal_tolerance参数
数据类型:double
默认值:0.25
描述:用于设置满足目标完成标准的容差(单位为m)。
. .trans_stopped_velocity参数
数据类型:double
默认值:0.25
描述:用于设置停止速度(单位为弧度/秒),当机器人速度低于该速度时会被认为满足容差而处于停止状态。
. .slowing_factor参数
数据类型:double
默认值:5.0
描述:用于设置旋转到目标位姿时减慢机器人运动的因子。
. .lookahead_time参数
数据类型:double
默认值:-1
描述:如果>0,则为等待碰撞的时间量。
. .scale参数
数据类型:double
默认值:1.0
描述:用于设置评分插件的加权比例。
TwirlingCritic
此评分插件用于防止完整约束机器人在到达目标的过程中旋转。
:控制器服务器的controller_plugin_ids参数中定义的DWB插件名称。 :DWB控制器定义的 .critics参数中定义的 BaseObstacleCritic评分插件(critic)名称。 该插件包含以下1个参数:
. .scale参数
数据类型:double
默认值:1.0
描述:用于设置评分插件的加权比例。
示例
controller_server:
ros__parameters:
# controller server parameters (see Controller Server for more info)
use_sim_time: True
controller_frequency: 20.0
min_x_velocity_threshold: 0.001
min_y_velocity_threshold: 0.5
min_theta_velocity_threshold: 0.001
progress_checker_plugin: "progress_checker"
goal_checker_plugin: "goal_checker"
controller_plugins: ["FollowPath"]
progress_checker:
plugin: "nav2_controller::SimpleProgressChecker"
required_movement_radius: 0.5
movement_time_allowance: 10.0
goal_checker:
plugin: "nav2_controller::SimpleGoalChecker"
xy_goal_tolerance: 0.25
yaw_goal_tolerance: 0.25
stateful: True
# DWB controller parameters
FollowPath:
plugin: "dwb_core::DWBLocalPlanner"
debug_trajectory_details: True
min_vel_x: 0.0
min_vel_y: 0.0
max_vel_x: 0.26
max_vel_y: 0.0
max_vel_theta: 1.0
min_speed_xy: 0.0
max_speed_xy: 0.26
min_speed_theta: 0.0
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
GoalAlign.scale: 24.0
PathAlign.forward_point_distance: 0.1
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
参考:
- https://navigation.ros.org/configuration/packages/configuring-dwb-controller.html
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号