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"