Controller Server
Source code on Github.
控制器服务器实现用于处理堆栈控制器请求的服务器,并托管插件实现的映射。 它将接收控制器、进度检查器和目标检查器的路径和插件名称,并调用相应的插件。 它还托管本地成本地图。
参数
- controller_frequency:
Type
Default
double
20.0
- Description
运行控制器的频率 (Hz)。
- use_realtime_priority:
Type
Default
bool
false
- Description
为控制器服务器添加软实时优先级,以更好地确保资源用于代码库的时间敏感部分。这将使控制器的执行线程的优先级高于系统其余部分(“90”),以满足调度期限,从而减少错过的循环率。要使用此功能,您可以在“/etc/security/limits.conf”中设置以下内容,以授予用户空间访问提升的优先级权限:“<username> soft rtprio 99 <username> hard rtprio 99”
- publish_zero_velocity:
Type
Default
bool
true
- Description
是否在目标退出时发布零速度命令。这对于在目标终止时停止机器人很有用。
- action_server_result_timeout:
Type
Default
Unit
double
10.0
seconds
- Description
如果未产生结果,则操作服务器丢弃目标句柄的超时值(以秒为单位)。这在 rcl 中默认为 15 分钟,但在此 PR #1012 中更改为 10 秒,这可能小于 Nav2 中某些操作的运行时间。对于大多数应用程序,只要服务器内的操作不超过此期限,就不需要调整。 此问题已向 OSRF 提出,以寻找另一种解决方案来避免记账时出现活动目标超时,因此这是一个半临时的解决方法
- controller_plugins:
Type
Default
vector<string>
[‘FollowPath’]
- Description
用于处理请求和参数的控制器插件的映射名称列表。
- Note
此列表中定义的每个插件命名空间都需要有一个:code:plugin 参数来定义要在命名空间中加载的插件类型。
Example:
controller_server: ros__parameters: controller_plugins: ["FollowPath"] FollowPath: plugin: "dwb_core::DWBLocalPlanner"
- progress_checker_plugins:
Type
Default
vector<string>
[“progress_checker”]
- Description
此列表中定义的每个插件命名空间都需要有一个:code:plugin 参数来定义要在命名空间中加载的插件类型。
- Note
定义的插件命名空间需要有一个:code:plugin 参数来定义要在命名空间中加载的插件的类型。
Example:
controller_server: ros__parameters: progress_checker_plugins: ["progress_checker"] # progress_checker_plugin: "progress_checker" For Humble and older progress_checker: plugin: "nav2_controller::SimpleProgressChecker"
- goal_checker_plugins:
Type
Default
vector<string>
[“goal_checker”]
- Description
用于检查目标的目标检查器插件的映射名称已达到。当插件数量超过 2 个时,每个
FollowPath
操作都需要在其goal_checker_id
字段中指定目标检查器插件名称。- Note
定义的插件命名空间需要有一个:code:plugin 参数来定义要在命名空间中加载的插件的类型。
Example:
controller_server: ros__parameters: goal_checker_plugins: ["goal_checker"] goal_checker: plugin: "nav2_controller::SimpleGoalChecker"
- min_x_velocity_threshold:
Type
Default
double
0.0001
- Description
控制器服务器在将收到的里程计消息发送到控制器插件之前,会过滤其中的速度部分。 低于此阈值(以米/秒为单位)的里程计值将设置为 0.0。
- min_y_velocity_threshold:
Type
Default
double
0.0001
- Description
控制器服务器在将收到的里程计消息发送到控制器插件之前,会过滤其中的速度部分。 低于此阈值(以米/秒为单位)的里程计值将设置为 0.0。对于非完整机器人
- min_theta_velocity_threshold:
Type
Default
double
0.0001
- Description
控制器服务器在将收到的里程计消息发送到控制器插件之前,会过滤其中的速度部分。 低于此阈值(以弧度/秒为单位)的里程计值将设置为 0.0。
- failure_tolerance:
Type
Default
double
0.0
- Description
在
nav2_msgs::action::FollowPath
操作失败之前,被调用的控制器插件可以失败(即插件的computeVelocityCommands
函数抛出异常)的最大持续时间(以秒为单位)。 将其设置为特殊值 -1.0 使其无限,设置为 0 表示禁用,设置为任何正值表示适当的超时。
- speed_limit_topic:
Type
Default
string
“speed_limit”
- Description
要订阅的限速主题名称。这可以通过 Speed Filter 发布(请参阅:ref:speed_filter 配置页面)。如果您提供外部服务器来发布“这些消息 <https://github.com/ros-planning/navigation2/blob/main/nav2_msgs/msg/SpeedLimit.msg>”,您也可以在没有 Speed Filter 的情况下使用它。
- odom_topic:
Type
Default
string
“odom”
- Description
从中获取瞬时速度测量值的主题。
- enable_stamped_cmd_vel:
Type
Default
bool
false
- Description
是否使用 geometry_msgs::msg::Twist 或 geometry_msgs::msg::TwistStamped 速度数据。 True 使用 TwistStamped,false 使用 Twist。
- bond_heartbeat_period:
Type
Default
double
0.1
- Description
生命周期节点债券机制发布周期(在 /bond 主题上)。如果小于或等于 0.0,则禁用。
Provided Plugins
下面列出的插件位于“nav2_controller”命名空间内。
Default Plugins
当:code:progress_checker_plugins、:code:goal_checker_plugin 或 :code:controller_plugins 参数未被覆盖时,将加载以下默认插件:
Namespace
Plugin
“progress_checker”
“nav2_controller::SimpleProgressChecker”
“goal_checker”
“nav2_controller::SimpleGoalChecker”
“FollowPath”
“dwb_core::DWBLocalPlanner”
Example
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
odom_topic: "odom"
progress_checker_plugins: ["progress_checker"] # progress_checker_plugin: "progress_checker" For Humble and older
goal_checker_plugins: ["goal_checker"] # goal_checker_plugin: "goal_checker" For Galactic and older
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"