下面将逐一解释Nav2(ROS2 jazzy Navigation 2)参数配置文件中各个参数的含义和作用。配置文件涉及多个节点,包括 amcl
、bt_navigator
、controller_server
、local_costmap
、global_costmap
、map_saver
、planner_server
、smoother_server
、behavior_server
、waypoint_follower
、velocity_smoother
、collision_monitor
、docking_server
以及 loopback_simulator
。每个节点的参数配置如下:
1. amcl
(自适应蒙特卡洛定位)
功能:amcl
用于机器人在已知地图上的定位,通过粒子滤波算法结合激光传感器和里程计数据估计机器人的位姿。
参数详解:
-
alpha1, alpha2, alpha3, alpha4, alpha5: 运动模型的噪声参数,分别对应旋转角度和线性移动的不确定性,用于描述机器人运动时的误差。
-
base_frame_id: 机器人的基坐标系,通常为
"base_link"
,用于表示机器人自身的参考框架。 -
beam_skip_distance: 激光束跳过的距离阈值,超过此距离的激光束将被忽略。
-
beam_skip_error_threshold: 激光束跳过时的误差阈值,超过此阈值会影响定位精度。
-
beam_skip_threshold: 激光束跳过的判定阈值,用于决定是否跳过某个激光束。
-
do_beamskip: 是否启用激光束跳过功能,
false
表示禁用。 -
global_frame_id: 全局参考框架,通常为
"map"
,用于全局定位和地图表示。 -
lambda_short: 激光传感器模型中的短尾概率参数,用于处理异常短的激光测量。
-
laser_likelihood_max_dist: 激光测量的最大可能距离,超过此距离的测量将不用于定位。
-
laser_max_range: 激光传感器的最大测量范围。
-
laser_min_range: 激光传感器的最小测量范围,
-1.0
通常表示不限制。 -
laser_model_type: 激光传感器模型类型,
"likelihood_field"
表示使用似然场模型。 -
max_beams: 每次处理的最大激光束数,限制计算量。
-
max_particles: 粒子滤波中的最大粒子数,影响定位的精度和计算负担。
-
min_particles: 粒子滤波中的最小粒子数,保证定位的稳定性。
-
odom_frame_id: 里程计的坐标框架,通常为
"odom"
,用于表示机器人的里程计参考。 -
pf_err: 粒子滤波中的误差参数,用于调整滤波器的响应。
-
pf_z: 粒子滤波中的权重更新参数,影响粒子的重新采样。
-
recovery_alpha_fast & recovery_alpha_slow: 恢复行为中的参数,用于快速和慢速恢复策略。
-
resample_interval: 重新采样的间隔,决定粒子滤波器何时重新采样粒子。
-
robot_model_type: 机器人运动模型类型,
"nav2_amcl::DifferentialMotionModel"
表示使用差分驱动模型。 -
save_pose_rate: 保存位姿的频率,单位为Hz。
-
sigma_hit: 激光传感器模型中的命中概率标准差,影响传感器模型的精度。
-
tf_broadcast: 是否广播TF变换,
true
表示启用。 -
transform_tolerance: TF变换的容忍时间,决定变换的有效性时间窗口。
-
update_min_a: 触发定位更新的最小角度变化量。
-
update_min_d: 触发定位更新的最小位移变化量。
-
z_hit, z_max, z_rand, z_short: 激光传感器模型中的概率参数,用于组合不同类型的激光测量。
-
scan_topic: 激光扫描数据的主题名称,通常为
"scan"
。
2. bt_navigator
(行为树导航器)
功能:bt_navigator
使用行为树(Behavior Tree)管理导航任务,协调不同的导航行为插件。
参数详解:
-
global_frame: 全局参考框架,通常为
"map"
。 -
robot_base_frame: 机器人的基坐标框架,通常为
"base_link"
。 -
odom_topic: 里程计数据的主题名称,通常为
"/odom"
。 -
bt_loop_duration: 行为树循环的持续时间,单位为秒。
-
default_server_timeout: 默认的服务器超时时间,单位为秒。
-
wait_for_service_timeout: 等待服务的超时时间,单位为秒。
-
action_server_result_timeout: 动作服务器结果的超时时间,单位为秒。
-
navigators: 使用的导航器插件列表,例如
["navigate_to_pose", "navigate_through_poses"]
。 -
navigate_to_pose:
-
plugin: 使用的导航器插件类型,
"nav2_bt_navigator::NavigateToPoseNavigator"
。
-
-
navigate_through_poses:
-
plugin: 使用的导航器插件类型,
"nav2_bt_navigator::NavigateThroughPosesNavigator"
。
-
-
plugin_lib_names: 用于添加自定义行为树插件的库名称列表,内置插件会自动添加。
-
error_code_names: 定义错误码名称,用于路径计算和跟随过程中错误处理,例如
["compute_path_error_code", "follow_path_error_code"]
。
3. controller_server
(控制器服务器)
功能:controller_server
负责机器人轨迹的控制,生成速度命令以驱动机器人沿规划路径前进。
参数详解:
-
controller_frequency: 控制器的频率,单位为Hz。
-
costmap_update_timeout: 代价地图更新的超时时间,单位为秒。
-
min_x_velocity_threshold: 最小线速度阈值,低于此值时认为机器人静止。
-
min_y_velocity_threshold: 最小横向速度阈值。
-
min_theta_velocity_threshold: 最小角速度阈值。
-
failure_tolerance: 控制器失败的容忍度。
-
progress_checker_plugins: 进度检查插件列表,例如
["progress_checker"]
。 -
goal_checker_plugins: 目标检查插件列表,例如
["general_goal_checker"]
,可选"precise_goal_checker"
。 -
controller_plugins: 控制器插件列表,例如
["FollowPath"]
。 -
use_realtime_priority: 是否使用实时优先级,
false
表示禁用。
具体插件参数:
Progress Checker (progress_checker
)
-
plugin: 使用的进度检查插件类型,
"nav2_controller::SimpleProgressChecker"
。 -
required_movement_radius: 需要的移动半径,用于判断是否有足够的进展。
-
movement_time_allowance: 移动时间的允许范围,单位为秒。
Goal Checker (general_goal_checker
)
-
stateful: 是否为有状态检查器,
True
表示启用。 -
plugin: 使用的目标检查插件类型,
"nav2_controller::SimpleGoalChecker"
。 -
xy_goal_tolerance: 目标位置的容忍范围,单位为米。
-
yaw_goal_tolerance: 目标朝向的容忍范围,单位为弧度。
控制器插件 (FollowPath
)
-
plugin: 使用的控制器插件类型,
"nav2_mppi_controller::MPPIController"
。 -
time_steps: 预测时间步数。
-
model_dt: 运动模型的时间步长,单位为秒。
-
batch_size: 批处理大小,用于并行计算。
-
ax_max, ax_min, ay_max, az_max: 加速度的最大和最小值,分别对应x、y、z轴。
-
vx_std, vy_std, wz_std: 速度的标准差,用于噪声生成。
-
vx_max, vx_min, vy_max, wz_max: 速度的最大和最小值,分别对应线速度和角速度。
-
iteration_count: 迭代次数,用于优化。
-
prune_distance: 修剪距离,用于减少不必要的轨迹。
-
transform_tolerance: TF变换的容忍时间,单位为秒。
-
temperature: 温度参数,用于控制随机性的影响。
-
gamma: 折扣因子,用于累积奖励的计算。
-
motion_model: 运动模型类型,
"DiffDrive"
表示差分驱动模型。 -
visualize: 是否启用可视化,
true
表示启用。 -
regenerate_noises: 是否重新生成噪声,
true
表示启用。
轨迹可视化 (TrajectoryVisualizer
)
-
trajectory_step: 轨迹步长。
-
time_step: 时间步长,单位为秒。
Ackermann 约束 (AckermannConstraints
)
-
min_turning_r: 最小转弯半径。
批评器(Critics)
-
critics: 使用的批评器列表,用于评估轨迹质量,例如:
-
"ConstraintCritic"
-
"CostCritic"
-
"GoalCritic"
-
"GoalAngleCritic"
-
"PathAlignCritic"
-
"PathFollowCritic"
-
"PathAngleCritic"
-
"PreferForwardCritic"
-
具体批评器参数:
-
ConstraintCritic:
-
enabled: 是否启用,
true
表示启用。 -
cost_power: 成本幂次。
-
cost_weight: 成本权重。
-
-
GoalCritic:
-
enabled: 是否启用。
-
cost_power: 成本幂次。
-
cost_weight: 成本权重。
-
threshold_to_consider: 考虑阈值。
-
-
GoalAngleCritic:
-
enabled: 是否启用。
-
cost_power: 成本幂次。
-
cost_weight: 成本权重。
-
threshold_to_consider: 考虑阈值。
-
-
PreferForwardCritic:
-
enabled: 是否启用。
-
cost_power: 成本幂次。
-
cost_weight: 成本权重。
-
threshold_to_consider: 考虑阈值。
-
-
CostCritic:
-
enabled: 是否启用。
-
cost_power: 成本幂次。
-
cost_weight: 成本权重。
-
critical_cost: 临界成本值。
-
consider_footprint: 是否考虑机器人占用空间。
-
collision_cost: 碰撞成本值。
-
near_goal_distance: 接近目标的距离阈值。
-
trajectory_point_step: 轨迹点步长。
-
-
PathAlignCritic:
-
enabled: 是否启用。
-
cost_power: 成本幂次。
-
cost_weight: 成本权重。
-
max_path_occupancy_ratio: 最大路径占用比例。
-
trajectory_point_step: 轨迹点步长。
-
threshold_to_consider: 考虑阈值。
-
offset_from_furthest: 距离最远点的偏移量。
-
use_path_orientations: 是否使用路径方向。
-
-
PathFollowCritic:
-
enabled: 是否启用。
-
cost_power: 成本幂次。
-
cost_weight: 成本权重。
-
offset_from_furthest: 距离最远点的偏移量。
-
threshold_to_consider: 考虑阈值。
-
-
PathAngleCritic:
-
enabled: 是否启用。
-
cost_power: 成本幂次。
-
cost_weight: 成本权重。
-
offset_from_furthest: 距离最远点的偏移量。
-
threshold_to_consider: 考虑阈值。
-
max_angle_to_furthest: 最大角度阈值。
-
mode: 模式选择。
-
4. local_costmap
(局部代价地图)
功能:local_costmap
用于表示机器人周围的局部环境,包含障碍物和安全区域信息,支持动态更新。
参数详解:
-
update_frequency: 局部代价地图的更新频率,单位为Hz。
-
publish_frequency: 局部代价地图的发布频率,单位为Hz。
-
global_frame: 全局参考框架,通常为
"odom"
。 -
robot_base_frame: 机器人的基坐标框架,通常为
"base_link"
。 -
rolling_window: 是否使用滚动窗口,
true
表示地图随机器人移动而滚动。 -
width, height: 局部代价地图的宽度和高度,单位为米。
-
resolution: 地图的分辨率,单位为米/栅格。
-
robot_radius: 机器人的半径,单位为米,用于安全距离计算。
-
plugins: 使用的代价地图插件列表,例如
["voxel_layer", "inflation_layer"]
。
具体插件参数:
Inflation Layer (inflation_layer
)
-
plugin: 使用的插件类型,
"nav2_costmap_2d::InflationLayer"
。 -
cost_scaling_factor: 成本缩放因子,用于计算膨胀成本。
-
inflation_radius: 膨胀半径,单位为米,用于增加障碍物周围的安全区域。
Voxel Layer (voxel_layer
)
-
plugin: 使用的插件类型,
"nav2_costmap_2d::VoxelLayer"
。 -
enabled: 是否启用,
True
表示启用。 -
publish_voxel_map: 是否发布体素地图,
True
表示启用。 -
origin_z: 地图的Z轴原点,单位为米。
-
z_resolution: Z轴方向的分辨率,单位为米。
-
z_voxels: Z轴方向的体素数。
-
max_obstacle_height: 最大障碍物高度,超过此高度的障碍物将被忽略。
-
mark_threshold: 标记阈值,用于判断是否标记障碍物。
-
observation_sources: 观测源列表,例如
["scan"]
。
Scan (scan
)
-
topic: 激光扫描数据的主题名称,通常为
"/scan"
。 -
max_obstacle_height: 最大障碍物高度,单位为米。
-
clearing: 是否清除旧的障碍物信息,
True
表示启用。 -
marking: 是否标记新的障碍物信息,
True
表示启用。 -
data_type: 数据类型,通常为
"LaserScan"
。 -
raytrace_max_range: 射线追踪的最大范围,单位为米。
-
raytrace_min_range: 射线追踪的最小范围,单位为米。
-
obstacle_max_range: 障碍物的最大检测范围,单位为米。
-
obstacle_min_range: 障碍物的最小检测范围,单位为米。
Static Layer (static_layer
)
-
plugin: 使用的插件类型,
"nav2_costmap_2d::StaticLayer"
。 -
map_subscribe_transient_local: 是否使用瞬态本地订阅,
True
表示启用。
其他参数:
-
always_send_full_costmap: 是否总是发送完整的代价地图,
True
表示启用。
5. global_costmap
(全局代价地图)
功能:global_costmap
用于表示整个工作空间的全局环境,支持全局路径规划。
参数详解:
-
update_frequency: 全局代价地图的更新频率,单位为Hz。
-
publish_frequency: 全局代价地图的发布频率,单位为Hz。
-
global_frame: 全局参考框架,通常为
"map"
。 -
robot_base_frame: 机器人的基坐标框架,通常为
"base_link"
。 -
robot_radius: 机器人的半径,单位为米,用于安全距离计算。
-
resolution: 地图的分辨率,单位为米/栅格。
-
track_unknown_space: 是否跟踪未知区域,
true
表示启用。 -
plugins: 使用的代价地图插件列表,例如
["static_layer", "obstacle_layer", "inflation_layer"]
。
具体插件参数:
Obstacle Layer (obstacle_layer
)
-
plugin: 使用的插件类型,
"nav2_costmap_2d::ObstacleLayer"
。 -
enabled: 是否启用,
True
表示启用。 -
observation_sources: 观测源列表,例如
["scan"]
。
Scan (scan
)
-
topic: 激光扫描数据的主题名称,通常为
"/scan"
。 -
max_obstacle_height: 最大障碍物高度,单位为米。
-
clearing: 是否清除旧的障碍物信息,
True
表示启用。 -
marking: 是否标记新的障碍物信息,
True
表示启用。 -
data_type: 数据类型,通常为
"LaserScan"
。 -
raytrace_max_range: 射线追踪的最大范围,单位为米。
-
raytrace_min_range: 射线追踪的最小范围,单位为米。
-
obstacle_max_range: 障碍物的最大检测范围,单位为米。
-
obstacle_min_range: 障碍物的最小检测范围,单位为米。
Static Layer (static_layer
)
-
plugin: 使用的插件类型,
"nav2_costmap_2d::StaticLayer"
。 -
map_subscribe_transient_local: 是否使用瞬态本地订阅,
True
表示启用。
Inflation Layer (inflation_layer
)
-
plugin: 使用的插件类型,
"nav2_costmap_2d::InflationLayer"
。 -
cost_scaling_factor: 成本缩放因子,用于计算膨胀成本。
-
inflation_radius: 膨胀半径,单位为米,用于增加障碍物周围的安全区域。
其他参数:
-
always_send_full_costmap: 是否总是发送完整的代价地图,
True
表示启用。
6. map_saver
(地图保存器)
功能:map_saver
用于将机器人当前的地图保存为文件,方便后续使用。
参数详解:
-
save_map_timeout: 保存地图的超时时间,单位为秒。
-
free_thresh_default: 空闲空间的阈值,通常为0.25,用于区分自由区域和障碍物。
-
occupied_thresh_default: 占用空间的阈值,通常为0.65,用于区分障碍物。
-
map_subscribe_transient_local: 是否使用瞬态本地订阅,
True
表示启用。
7. planner_server
(规划器服务器)
功能:planner_server
负责全局路径规划,生成从起点到目标点的路径。
参数详解:
-
expected_planner_frequency: 期望的规划器频率,单位为Hz。
-
planner_plugins: 使用的规划器插件列表,例如
["GridBased"]
。 -
costmap_update_timeout: 代价地图更新的超时时间,单位为秒。
具体插件参数:
Grid-Based Planner (GridBased
)
-
plugin: 使用的规划器插件类型,
"nav2_navfn_planner::NavfnPlanner"
。 -
tolerance: 规划容忍度,单位为米,决定规划器何时认为到达目标。
-
use_astar: 是否使用A*算法,
false
表示不使用。 -
allow_unknown: 是否允许规划路径经过未知区域,
true
表示允许。
8. smoother_server
(平滑器服务器)
功能:smoother_server
负责对全局路径进行平滑处理,生成更为平滑和可执行的轨迹。
参数详解:
-
smoother_plugins: 使用的平滑器插件列表,例如
["simple_smoother"]
。
具体插件参数:
Simple Smoother (simple_smoother
)
-
plugin: 使用的平滑器插件类型,
"nav2_smoother::SimpleSmoother"
。 -
tolerance: 平滑容忍度,决定平滑程度。
-
max_its: 最大迭代次数,用于平滑算法的迭代控制。
-
do_refinement: 是否进行细化处理,
True
表示启用。
9. behavior_server
(行为服务器)
功能:behavior_server
管理机器人的各种行为,如旋转、后退、等待等,支持复杂的行为组合。
参数详解:
-
local_costmap_topic: 局部代价地图的主题名称,通常为
local_costmap/costmap_raw
。 -
global_costmap_topic: 全局代价地图的主题名称,通常为
global_costmap/costmap_raw
。 -
local_footprint_topic: 局部足迹的主题名称,通常为
local_costmap/published_footprint
。 -
global_footprint_topic: 全局足迹的主题名称,通常为
global_costmap/published_footprint
。 -
cycle_frequency: 行为循环频率,单位为Hz。
-
behavior_plugins: 使用的行为插件列表,例如
["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
。 -
spin:
-
plugin: 使用的行为插件类型,
"nav2_behaviors::Spin"
。
-
-
backup:
-
plugin: 使用的行为插件类型,
"nav2_behaviors::BackUp"
。
-
-
drive_on_heading:
-
plugin: 使用的行为插件类型,
"nav2_behaviors::DriveOnHeading"
。
-
-
wait:
-
plugin: 使用的行为插件类型,
"nav2_behaviors::Wait"
。
-
-
assisted_teleop:
-
plugin: 使用的行为插件类型,
"nav2_behaviors::AssistedTeleop"
。
-
-
local_frame: 局部参考框架,通常为
"odom"
。 -
global_frame: 全局参考框架,通常为
"map"
。 -
robot_base_frame: 机器人的基坐标框架,通常为
"base_link"
。 -
transform_tolerance: TF变换的容忍时间,单位为秒。
-
simulate_ahead_time: 模拟前进时间,单位为秒。
-
max_rotational_vel: 最大旋转速度,单位为弧度/秒。
-
min_rotational_vel: 最小旋转速度,单位为弧度/秒。
-
rotational_acc_lim: 旋转加速度限制,单位为弧度/秒²。
10. waypoint_follower
(航点跟随器)
功能:waypoint_follower
负责按顺序跟随预设的航点,实现路径跟随和任务执行。
参数详解:
-
loop_rate: 循环频率,单位为Hz。
-
stop_on_failure: 在任务失败时是否停止,
false
表示不停止。 -
action_server_result_timeout: 动作服务器结果的超时时间,单位为秒。
-
waypoint_task_executor_plugin: 使用的航点任务执行插件类型,
"wait_at_waypoint"
。 -
wait_at_waypoint:
-
plugin: 使用的任务执行插件类型,
"nav2_waypoint_follower::WaitAtWaypoint"
。 -
enabled: 是否启用,
True
表示启用。 -
waypoint_pause_duration: 在航点处暂停的时间,单位为秒。
-
11. velocity_smoother
(速度平滑器)
功能:velocity_smoother
用于对生成的速度命令进行平滑处理,避免机器人动作过于剧烈。
参数详解:
-
smoothing_frequency: 平滑处理的频率,单位为Hz。
-
scale_velocities: 是否缩放速度,
False
表示不缩放。 -
feedback: 反馈模式,
"OPEN_LOOP"
表示开环。 -
max_velocity: 最大速度列表,分别对应x、y、z轴,单位为米/秒和弧度/秒。
-
min_velocity: 最小速度列表,分别对应x、y、z轴,单位为米/秒和弧度/秒。
-
max_accel: 最大加速度列表,分别对应x、y、z轴,单位为米/秒²和弧度/秒²。
-
max_decel: 最大减速度列表,分别对应x、y、z轴,单位为米/秒²和弧度/秒²。
-
odom_topic: 里程计数据的主题名称,通常为
"odom"
。 -
odom_duration: 里程计数据的有效时间窗口,单位为秒。
-
deadband_velocity: 死区速度列表,分别对应x、y、z轴,单位为米/秒和弧度/秒。
-
velocity_timeout: 速度命令的超时时间,单位为秒。
12. collision_monitor
(碰撞监控器)
功能:collision_monitor
监控机器人周围的环境,检测潜在碰撞并采取相应的安全措施。
参数详解:
-
base_frame_id: 机器人的基坐标框架,通常为
"base_link"
。 -
odom_frame_id: 里程计的坐标框架,通常为
"odom"
。 -
cmd_vel_in_topic: 输入的速度命令主题名称,通常为
"cmd_vel_smoothed"
。 -
cmd_vel_out_topic: 输出的速度命令主题名称,通常为
"cmd_vel"
。 -
state_topic: 碰撞监控状态的主题名称,通常为
"collision_monitor_state"
。 -
transform_tolerance: TF变换的容忍时间,单位为秒。
-
source_timeout: 数据源的超时时间,单位为秒。
-
base_shift_correction: 是否启用基座位移校正,
True
表示启用。 -
stop_pub_timeout: 停止命令发布的超时时间,单位为秒。
-
polygons: 多边形区域列表,用于定义不同的安全区域和行为类型,例如
["FootprintApproach"]
。
具体多边形参数:
FootprintApproach
-
type: 多边形类型,通常为
"polygon"
。 -
action_type: 行为类型,
"approach"
表示靠近。 -
footprint_topic: 足迹数据的主题名称,通常为
"/local_costmap/published_footprint"
。 -
time_before_collision: 碰撞前的时间预警,单位为秒。
-
simulation_time_step: 仿真时间步长,单位为秒。
-
min_points: 最小检测点数。
-
visualize: 是否可视化,
False
表示不启用。 -
enabled: 是否启用,
True
表示启用。
观测源参数:
-
observation_sources: 使用的观测源列表,例如
["scan"]
。
Scan (scan
)
-
type: 观测源类型,通常为
"scan"
。 -
topic: 激光扫描数据的主题名称,通常为
"scan"
。 -
min_height: 最小高度,单位为米,过滤低于此高度的障碍物。
-
max_height: 最大高度,单位为米,过滤高于此高度的障碍物。
-
enabled: 是否启用,
True
表示启用。
13. docking_server
(对接服务器)
功能:docking_server
负责机器人与充电桩的对接与断开,实现自动充电功能。
参数详解:
-
controller_frequency: 控制器的频率,单位为Hz。
-
initial_perception_timeout: 初始感知超时时间,单位为秒。
-
wait_charge_timeout: 等待充电的超时时间,单位为秒。
-
dock_approach_timeout: 对接接近的超时时间,单位为秒。
-
undock_linear_tolerance: 断开时线性位置的容忍度,单位为米。
-
undock_angular_tolerance: 断开时角度位置的容忍度,单位为弧度。
-
max_retries: 最大重试次数。
-
base_frame: 机器人的基坐标框架,通常为
"base_link"
。 -
fixed_frame: 固定参考框架,通常为
"odom"
。 -
dock_backwards: 是否支持反向对接,
false
表示不支持。 -
dock_prestaging_tolerance: 对接预定位的容忍度,单位为米。
-
dock_plugins: 对接类型列表,例如
['simple_charging_dock']
。
具体对接插件参数:
Simple Charging Dock (simple_charging_dock
)
-
plugin: 使用的对接插件类型,
'opennav_docking::SimpleChargingDock'
。 -
docking_threshold: 对接阈值,决定何时认为对接成功。
-
staging_x_offset: 预定位的X轴偏移量,单位为米。
-
use_external_detection_pose: 是否使用外部检测姿态,
true
表示启用。 -
use_battery_status: 是否使用电池状态,
false
表示不启用。 -
use_stall_detection: 是否使用停滞检测,
false
表示不启用。 -
external_detection_timeout: 外部检测的超时时间,单位为秒。
-
external_detection_translation_x: 外部检测的X轴平移,单位为米。
-
external_detection_translation_y: 外部检测的Y轴平移,单位为米。
-
external_detection_rotation_roll: 外部检测的Roll旋转,单位为弧度。
-
external_detection_rotation_pitch: 外部检测的Pitch旋转,单位为弧度。
-
external_detection_rotation_yaw: 外部检测的Yaw旋转,单位为弧度。
-
filter_coef: 过滤系数,用于平滑检测数据。
对接实例参数:
-
docks: 对接实例列表,例如
['home_dock']
。
Home Dock (home_dock
)
-
type: 对接类型,
'simple_charging_dock'
。 -
frame: 对接参考框架,通常为
"map"
。 -
pose: 对接位置的姿态,格式为
[x, y, z]
。
控制器参数:
-
controller:
-
k_phi: 角度控制增益。
-
k_delta: 位置控制增益。
-
v_linear_min: 最小线速度,单位为米/秒。
-
v_linear_max: 最大线速度,单位为米/秒。
-
14. loopback_simulator
(回环仿真器)
功能:loopback_simulator
用于仿真环境中回环机器人的运动和传感器数据,常用于测试和开发。
参数详解:
-
base_frame_id: 机器人的基坐标框架,通常为
"base_link"
。 -
odom_frame_id: 里程计的坐标框架,通常为
"odom"
。 -
map_frame_id: 地图的坐标框架,通常为
"map"
。 -
scan_frame_id: 激光扫描的坐标框架,通常为
"laser"
,在tb4_loopback_simulator.launch.py
中会重映射为'rplidar_link'
。 -
update_duration: 更新的持续时间,单位为秒。
总结:
以上就是对Ros2 jazzy版本的Navigation参数配置文件的解析,仅提供参考学习使用。下面附上一份完整案例。
案例:
amcl:
ros__parameters:
alpha1: 0.2
alpha2: 0.2
alpha3: 0.2
alpha4: 0.2
alpha5: 0.2
base_frame_id: "base_link"
beam_skip_distance: 0.5
beam_skip_error_threshold: 0.9
beam_skip_threshold: 0.3
do_beamskip: false
global_frame_id: "map"
lambda_short: 0.1
laser_likelihood_max_dist: 2.0
laser_max_range: 100.0
laser_min_range: -1.0
laser_model_type: "likelihood_field"
max_beams: 60
max_particles: 2000
min_particles: 500
odom_frame_id: "odom"
pf_err: 0.05
pf_z: 0.99
recovery_alpha_fast: 0.0
recovery_alpha_slow: 0.0
resample_interval: 1
robot_model_type: "nav2_amcl::DifferentialMotionModel"
save_pose_rate: 0.5
sigma_hit: 0.2
tf_broadcast: true
transform_tolerance: 1.0
update_min_a: 0.2
update_min_d: 0.25
z_hit: 0.5
z_max: 0.05
z_rand: 0.5
z_short: 0.05
scan_topic: scan
bt_navigator:
ros__parameters:
global_frame: map
robot_base_frame: base_link
odom_topic: /odom
bt_loop_duration: 10
default_server_timeout: 20
wait_for_service_timeout: 1000
action_server_result_timeout: 900.0
navigators: ["navigate_to_pose", "navigate_through_poses"]
navigate_to_pose:
plugin: "nav2_bt_navigator::NavigateToPoseNavigator"
navigate_through_poses:
plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator"
# 'default_nav_through_poses_bt_xml' and 'default_nav_to_pose_bt_xml' are use defaults:
# nav2_bt_navigator/navigate_to_pose_w_replanning_and_recovery.xml
# nav2_bt_navigator/navigate_through_poses_w_replanning_and_recovery.xml
# They can be set here or via a RewrittenYaml remap from a parent launch file to Nav2.
# plugin_lib_names is used to add custom BT plugins to the executor (vector of strings).
# Built-in plugins are added automatically
# plugin_lib_names: []
error_code_names:
- compute_path_error_code
- follow_path_error_code
controller_server:
ros__parameters:
controller_frequency: 20.0
costmap_update_timeout: 0.30
min_x_velocity_threshold: 1.0
min_y_velocity_threshold: 1.0
min_theta_velocity_threshold: 1.0
failure_tolerance: 0.3
progress_checker_plugins: ["progress_checker"]
goal_checker_plugins: ["general_goal_checker"] # "precise_goal_checker"
controller_plugins: ["FollowPath"]
use_realtime_priority: false
# Progress checker parameters
progress_checker:
plugin: "nav2_controller::SimpleProgressChecker"
required_movement_radius: 0.5
movement_time_allowance: 10.0
# Goal checker parameters
#precise_goal_checker:
# plugin: "nav2_controller::SimpleGoalChecker"
# xy_goal_tolerance: 0.25
# yaw_goal_tolerance: 0.25
# stateful: True
general_goal_checker:
stateful: True
plugin: "nav2_controller::SimpleGoalChecker"
xy_goal_tolerance: 0.25
yaw_goal_tolerance: 0.25
FollowPath:
plugin: "nav2_mppi_controller::MPPIController"
time_steps: 56
model_dt: 0.05
batch_size: 2000
ax_max: 3.0
ax_min: -3.0
ay_max: 3.0
az_max: 3.5
vx_std: 0.2
vy_std: 0.2
wz_std: 0.4
vx_max: 10.0
vx_min: -10.0
vy_max: 10.0
wz_max: 5.0
iteration_count: 1
prune_distance: 1.7
transform_tolerance: 0.1
temperature: 0.3
gamma: 0.015
motion_model: "DiffDrive"
visualize: true
regenerate_noises: true
TrajectoryVisualizer:
trajectory_step: 5
time_step: 3
AckermannConstraints:
min_turning_r: 0.2
critics: [
"ConstraintCritic", "CostCritic", "GoalCritic",
"GoalAngleCritic", "PathAlignCritic", "PathFollowCritic",
"PathAngleCritic", "PreferForwardCritic"]
ConstraintCritic:
enabled: true
cost_power: 1
cost_weight: 4.0
GoalCritic:
enabled: true
cost_power: 1
cost_weight: 5.0
threshold_to_consider: 1.4
GoalAngleCritic:
enabled: true
cost_power: 1
cost_weight: 3.0
threshold_to_consider: 0.5
PreferForwardCritic:
enabled: true
cost_power: 1
cost_weight: 5.0
threshold_to_consider: 0.5
CostCritic:
enabled: true
cost_power: 1
cost_weight: 3.81
critical_cost: 300.0
consider_footprint: true
collision_cost: 1000000.0
near_goal_distance: 1.0
trajectory_point_step: 2
PathAlignCritic:
enabled: true
cost_power: 1
cost_weight: 14.0
max_path_occupancy_ratio: 0.05
trajectory_point_step: 4
threshold_to_consider: 0.5
offset_from_furthest: 20
use_path_orientations: false
PathFollowCritic:
enabled: true
cost_power: 1
cost_weight: 5.0
offset_from_furthest: 5
threshold_to_consider: 1.4
PathAngleCritic:
enabled: true
cost_power: 1
cost_weight: 2.0
offset_from_furthest: 4
threshold_to_consider: 0.5
max_angle_to_furthest: 1.0
mode: 0
# TwirlingCritic:
# enabled: true
# twirling_cost_power: 1
# twirling_cost_weight: 10.0
local_costmap:
local_costmap:
ros__parameters:
update_frequency: 5.0
publish_frequency: 2.0
global_frame: odom
robot_base_frame: base_link
rolling_window: true
width: 3
height: 3
resolution: 0.05
robot_radius: 0.22
plugins: ["voxel_layer", "inflation_layer"]
inflation_layer:
plugin: "nav2_costmap_2d::InflationLayer"
cost_scaling_factor: 3.0
inflation_radius: 0.15
voxel_layer:
plugin: "nav2_costmap_2d::VoxelLayer"
enabled: True
publish_voxel_map: True
origin_z: 0.0
z_resolution: 0.05
z_voxels: 16
max_obstacle_height: 2.0
mark_threshold: 0
observation_sources: scan
scan:
topic: /scan
max_obstacle_height: 2.0
clearing: True
marking: True
data_type: "LaserScan"
raytrace_max_range: 3.0
raytrace_min_range: 0.0
obstacle_max_range: 2.5
obstacle_min_range: 0.0
static_layer:
plugin: "nav2_costmap_2d::StaticLayer"
map_subscribe_transient_local: True
always_send_full_costmap: True
global_costmap:
global_costmap:
ros__parameters:
update_frequency: 1.0
publish_frequency: 1.0
global_frame: map
robot_base_frame: base_link
robot_radius: 0.22
resolution: 0.05
track_unknown_space: true
plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
obstacle_layer:
plugin: "nav2_costmap_2d::ObstacleLayer"
enabled: True
observation_sources: scan
scan:
topic: /scan
max_obstacle_height: 2.0
clearing: True
marking: True
data_type: "LaserScan"
raytrace_max_range: 3.0
raytrace_min_range: 0.0
obstacle_max_range: 2.5
obstacle_min_range: 0.0
static_layer:
plugin: "nav2_costmap_2d::StaticLayer"
map_subscribe_transient_local: True
inflation_layer:
plugin: "nav2_costmap_2d::InflationLayer"
cost_scaling_factor: 3.0
inflation_radius: 0.15
always_send_full_costmap: True
# The yaml_filename does not need to be specified since it going to be set by defaults in launch.
# If you'd rather set it in the yaml, remove the default "map" value in the tb3_simulation_launch.py
# file & provide full path to map below. If CLI map configuration or launch default is provided, that will be used.
# map_server:
# ros__parameters:
# yaml_filename: ""
map_saver:
ros__parameters:
save_map_timeout: 5.0
free_thresh_default: 0.25
occupied_thresh_default: 0.65
map_subscribe_transient_local: True
planner_server:
ros__parameters:
expected_planner_frequency: 20.0
planner_plugins: ["GridBased"]
costmap_update_timeout: 1.0
GridBased:
plugin: "nav2_navfn_planner::NavfnPlanner"
tolerance: 0.5
use_astar: false
allow_unknown: true
smoother_server:
ros__parameters:
smoother_plugins: ["simple_smoother"]
simple_smoother:
plugin: "nav2_smoother::SimpleSmoother"
tolerance: 1.0e-10
max_its: 1000
do_refinement: True
behavior_server:
ros__parameters:
local_costmap_topic: local_costmap/costmap_raw
global_costmap_topic: global_costmap/costmap_raw
local_footprint_topic: local_costmap/published_footprint
global_footprint_topic: global_costmap/published_footprint
cycle_frequency: 10.0
behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
spin:
plugin: "nav2_behaviors::Spin"
backup:
plugin: "nav2_behaviors::BackUp"
drive_on_heading:
plugin: "nav2_behaviors::DriveOnHeading"
wait:
plugin: "nav2_behaviors::Wait"
assisted_teleop:
plugin: "nav2_behaviors::AssistedTeleop"
local_frame: odom
global_frame: map
robot_base_frame: base_link
transform_tolerance: 0.1
simulate_ahead_time: 2.0
max_rotational_vel: 5.0
min_rotational_vel: 2.0
rotational_acc_lim: 3.2
waypoint_follower:
ros__parameters:
loop_rate: 20
stop_on_failure: false
action_server_result_timeout: 900.0
waypoint_task_executor_plugin: "wait_at_waypoint"
wait_at_waypoint:
plugin: "nav2_waypoint_follower::WaitAtWaypoint"
enabled: True
waypoint_pause_duration: 200
velocity_smoother:
ros__parameters:
smoothing_frequency: 20.0
scale_velocities: False
feedback: "OPEN_LOOP"
max_velocity: [10.0, 10.0, 2.0]
min_velocity: [-10.0, -10.0, -2.0]
max_accel: [2.5, 2.0, 3.2]
max_decel: [-2.5, -2.0, -3.2]
odom_topic: "odom"
odom_duration: 0.1
deadband_velocity: [0.0, 0.0, 0.0]
velocity_timeout: 1.0
collision_monitor:
ros__parameters:
base_frame_id: "base_link"
odom_frame_id: "odom"
cmd_vel_in_topic: "cmd_vel_smoothed"
cmd_vel_out_topic: "cmd_vel"
state_topic: "collision_monitor_state"
transform_tolerance: 0.2
source_timeout: 1.0
base_shift_correction: True
stop_pub_timeout: 2.0
# Polygons represent zone around the robot for "stop", "slowdown" and "limit" action types,
# and robot footprint for "approach" action type.
polygons: ["FootprintApproach"]
FootprintApproach:
type: "polygon"
action_type: "approach"
footprint_topic: "/local_costmap/published_footprint"
time_before_collision: 1.2
simulation_time_step: 0.1
min_points: 6
visualize: False
enabled: True
observation_sources: ["scan"]
scan:
type: "scan"
topic: "scan"
min_height: 0.15
max_height: 2.0
enabled: True
docking_server:
ros__parameters:
controller_frequency: 50.0
initial_perception_timeout: 5.0
wait_charge_timeout: 5.0
dock_approach_timeout: 30.0
undock_linear_tolerance: 0.05
undock_angular_tolerance: 0.1
max_retries: 3
base_frame: "base_link"
fixed_frame: "odom"
dock_backwards: false
dock_prestaging_tolerance: 0.5
# Types of docks
dock_plugins: ['simple_charging_dock']
simple_charging_dock:
plugin: 'opennav_docking::SimpleChargingDock'
docking_threshold: 0.05
staging_x_offset: -0.7
use_external_detection_pose: true
use_battery_status: false # true
use_stall_detection: false # true
external_detection_timeout: 1.0
external_detection_translation_x: -0.18
external_detection_translation_y: 0.0
external_detection_rotation_roll: -1.57
external_detection_rotation_pitch: -1.57
external_detection_rotation_yaw: 0.0
filter_coef: 0.1
# Dock instances
# The following example illustrates configuring dock instances.
# docks: ['home_dock'] # Input your docks here
# home_dock:
# type: 'simple_charging_dock'
# frame: map
# pose: [0.0, 0.0, 0.0]
controller:
k_phi: 3.0
k_delta: 2.0
v_linear_min: 0.15
v_linear_max: 0.15
loopback_simulator:
ros__parameters:
base_frame_id: "base_link"
odom_frame_id: "odom"
map_frame_id: "map"
scan_frame_id: "laser" # tb4_loopback_simulator.launch.py remaps to 'rplidar_link'
update_duration: 0.02