ROS2与Navigation2入门教程-配置控制器服务器(Controller Server)
说明:
- 介绍如何配置控制器服务器(Controller Server)
概述
其源代码位于Github网站上。
控制器服务器(Controller Server)实现了用于处理导航堆栈控制器请求的服务器,并托管了一个地图插件实现。该服务器会使用控制器、进度检测器和目标检测器的路径和插件名称,并调用正确的插件。
参数
- controller_frequency参数:
数据类型:double
默认值:20.0
描述:用于设置运行控制器的频率(单位为Hz)。
- controller_plugins参数:
数据类型:vector<string>
默认值:[‘FollowPath’]
描述:设置用于处理请求和参数的控制器插件的映射名称列表。
- *注:此列表中定义的每个插件命名空间下都要有一个plugin参数,用于定义要在命名空间中加载的插件类型。
- 例如:
controller_server:
ros__parameters:
controller_plugins: ["FollowPath"]
FollowPath:
plugin: "dwb_core::DWBLocalPlanner"
progress_checker_plugin参数:
数据类型:string
默认值:‘progress_checker’
描述:设置用于检测机器人进展情况的进度检测器插件的映射名称。*注:定义的插件命名空间下要有一个plugin参数,用于定义要在命名空间中加载的插件类型。
例如:
controller_server:
ros__parameters:
progress_checker_plugin: "progress_checker"
progress_checker:
plugin: "nav2_controller::SimpleProgressChecker"
- goal_checker_plugin参数:
数据类型:string
默认值:‘goal_checker’
描述:设置用于检测是否已经到达目标位置的目标检测器插件的映射名称。
- *注:定义的插件命名空间下要有一个plugin参数,用于定义要在命名空间中加载的插件类型。例如:
controller_server:
ros__parameters:
goal_checker_plugin: "goal_checker"
goal_checker:
plugin: "nav2_controller::SimpleGoalChecker"
- min_x_velocity_threshold参数:
数据类型:double
默认值:0.0001
描述:在将消息发送到控制器插件之前,控制器服务器会对接收到的里程计消息速度部分进行过滤。低于此阈值(单位为m/s)的里程计值会被设置为0.0。
- min_y_velocity_threshold参数:
数据类型:double
默认值:0.0001
描述:在将消息发送到控制器插件之前,控制器服务器会对接收到的里程计消息速度部分进行过滤。低于此阈值(单位为m/s)的里程计值会被设置为0.0。此参数用于非完整约束机器人。
- min_theta_velocity_threshold参数:
数据类型:double
默认值:0.0001
描述:在将消息发送到控制器插件之前,控制器服务器会对接收到的里程计消息速度部分进行过滤。低于此阈值(单位为弧度/秒即rad/s)的里程计值会被设置为0.0。
- failure_tolerance参数:
数据类型:double
默认值:0.0
描述:在nav2_msgs::action::FollowPath动作失败之前,被调用的控制器插件可以失败(即该插件的 computeVelocityCommands函数抛出异常)的最大持续时间,单位为秒。将此参数设置为特殊值-1.0来使该持续时间无限,设置为0来禁用此功能,设置为任何正值来设置适当超时。
- speed_limit_topic参数:
数据类型:string
默认值:‘speed_limit’
描述:用于设置要订阅的限速话题名称。该话题可以由速度过滤器发布(请参阅速度过滤器参数配置页面)。如果提供外部服务器来发布这些速度限制消息,也可以在没有速度过滤器的情况下使用此参数。
提供的插件
- 下面列出的插件都位于nav2_controller命名空间中:
SimpleProgressChecker
该插件用于检测机器人是否取得进展(是否在前进)。
其参数包括:
- <nav2_controller plugin>是在控制器服务器的 progress_checker_plugin_id 参数中定义的nav2_controller插件名称。
<nav2_controller plugin>.required_movement_radius参数
数据类型:double
默认值:0.5
描述:用于设置机器人必须移动的最小量才能算作朝着目标前进了或者有进展(单位为m)。
- <nav2_controller plugin>.movement_time_allowance参数
数据类型:double
默认值:10.0
描述:用于设置机器人必须移动最小半径允许的最长时间(单位为秒)。
SimpleGoalChecker
该插件用于检测机器人是否到达了目标位姿。
其参数包括:
- <nav2_controller plugin>是在控制器服务器的 goal_checker_plugin_id 参数中定义的nav2_controller插件名称。
<nav2_controller plugin>. xy_goal_tolerance参数
数据类型:double
默认值:0.25
描述:用于设置满足目标完成标准的平移容差(单位为m)。
- <nav2_controller plugin>. yaw_goal_tolerance参数
数据类型:double
默认值:0.25
描述:用于设置满足目标完成标准的旋转容差(单位为弧度rad)。
- <nav2_controller plugin>. stateful参数
数据类型:bool
默认值:true
描述:用于设置旋转到目标方向后是否检查XY位置容差,以防定位发生微小变化。
StoppedGoalChecker
该插件用于检测机器人是否到达了目标位姿并停下来。
其参数包括:
- <nav2_controller plugin>是在控制器服务器的 goal_checker_plugin_id 参数中定义的nav2_controller插件名称。
<nav2_controller plugin>. trans_stopped_velocity参数
数据类型:double
默认值:0.25
描述:用于设置平移停止速度(单位为m/s),当机器人速度低于该速度时会被认为满足容差而处于停止状态。
- <nav2_controller plugin>. rot_stopped_velocity参数
数据类型:double
默认值:0.25
描述:用于设置旋转停止速度(单位为rad/s),当机器人速度低于该速度时会被认为满足容差而处于停止状态。
默认插件
- 当progress_checker_plugin、goal_checker_plugin或controller_plugins参数未被覆盖时,会加载以下默认插件:
命名空间(Namespace) | 默认插件(Plugin) | |
“progress_checker” | “nav2_controller::SimpleProgressChecker” | |
“goal_checker” | “nav2_controller::SimpleGoalChecker” | |
“FollowPath” | “dwb_core::DWBLocalPlanner” |
示例
controller_server:
ros__parameters:
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
failure_tolerance: 0.3
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
FollowPath:
plugin: "dwb_core::DWBLocalPlanner"
参考:
- https://navigation.ros.org/configuration/packages/configuring-controller-server.html
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号