行为树导航器

源代码在 Github.

BT Navigator(行为树导航器)模块实现了 NavigateToPose、NavigateThroughPoses 和其他任务接口。 它是一种基于行为树的导航实现,旨在实现导航任务的灵活性 并提供一种轻松指定复杂机器人行为(包括恢复)的方法。

考虑查看:ref:groot_introduction 教程,了解如何使用 Groot 来可视化和修改行为树。

确保检查本页未讨论的非默认导航器插件的所有参数(例如“CoverageNavigator”或自定义附加功能)。

参数

navigators:

Type

Default

vector<string>

{‘navigate_to_pose’, ‘navigate_through_poses’}

Description

Iron 的新功能:实现“nav2_core::BehaviorTreeNavigator”接口的导航器类型的插件。 它们使用自定义接口定义实现自定义操作服务器,并使用该数据填充和处理行为树导航请求。插件类在同一个命名空间下定义,请参阅下面的示例。默认值对应于“NavigateToPoseNavigator”和“NavigateThroughPosesNavigator”导航器。

default_nav_to_pose_bt_xml:

Type

Default

string

N/A

Description

“NavigateToPose” 的默认行为树 XML 描述路径,有关此文件的详细信息,请参阅 :ref:“configuring_behavior_tree_xml”。

此参数在银河系之前曾是“default_bt_xml_filename”。 您可以使用替换来指定文件路径,如“$(find-pkg-share my_package)/behavior_tree/my_nav_to_pose_bt.xml”。但是,如果留空,则将从“nav2_bt_navigator”包中加载默认行为树 XML。

default_nav_through_poses_bt_xml:

Type

Default

string

N/A

Description

“NavigateThroughPoses” 的默认行为树 XML 描述路径,有关此文件的详细信息,请参阅 :ref:“configuring_behavior_tree_xml”。在添加“NavigateThroughPoses”后,Galactic 新增了此内容。

您可以使用替换来指定文件路径,例如“$(find-pkg-share my_package)/behavior_tree/my_nav_through_poses_bt.xml”。但是,如果留空,则将从“nav2_bt_navigator”包中加载默认行为树 XML。

always_reload_bt_xml:

Type

Default

bool

false

Description

始终加载请求的行为树 XML 描述,无论当前活动 XML 的名称是什么。

plugin_lib_names:

Type

Default

vector<string>

[“”]

Description

行为树节点共享库列表。所有 Nav2 BT 库均自动包含在内,因此只需包含您的新自定义插件(Jazzy 的新功能)。

bt_loop_duration:

Type

Default

int

10

Description

BT 执行每次迭代的持续时间(以毫秒为单位)。

default_server_timeout:

Type

Default

int

20

Description

BT 操作节点等待操作服务器确认时的默认超时值(以毫秒为单位)。 如果提供了输入端口“server_timeout”,则此值将被 BT 节点覆盖。

wait_for_service_timeout:

Type

Default

int

1000

Description 在 BT 初始化时,操作或服务 BT 节点等待服务或操作服务器确认的默认超时值(以毫秒为单位)(例如“wait_for_action_server(timeout)”)。 如果提供了输入端口“wait_for_service_timeout”,则此值将被 BT 节点覆盖。 :action_server_result_timeout:

Type

Default

Unit

double

900.0

seconds

Description 如果未产生结果,则操作服务器丢弃目标句柄的超时值(以秒为单位)。这在 rcl 中默认为 15 分钟,但在此 PR #1012 中更改为 10 秒,这可能小于 Nav2 中某些操作的运行时间。对于大多数应用程序,只要服务器内的操作不超过此期限,就不需要调整。 此问题已向 OSRF 提出,以寻找另一种解决方案来避免记账时出现活动目标超时,因此这是一个半临时的解决方法

transform_tolerance:

Type

Default

Unit

double

0.1

seconds

Description

TF 变换容差。

global_frame:

Type

Default

string

map

Description

參考框架。

robot_base_frame:

Type

Default

string

base_link

Description

行为树 XML 描述的路径。

odom_topic:

Type

Default

string

odom

Description

发布里程计的主题

goal_blackboard_id:

Type

Default

string

“goal”

Description

用于为“NavigateToPose”行为树提供目标的黑板变量。应与 BT XML 文件的端口匹配。

path_blackboard_id:

Type

Default

string

“path”

Description

黑板变量用于从行为树中获取“NavigateThroughPoses”反馈的路径。应与 BT XML 文件的端口名称匹配。

goals_blackboard_id:

Type

Default

string

“goals”

Description

用于为“NavigateThroughPoses”的行为树提供目标的黑板变量。应与 BT XML 文件的端口匹配。

use_sim_time:

Type

Default

bool

false

Description

使用模拟提供的时间。

error_code_names:

Type

Default

vector<string>

[“compute_path_error_code”, “follow_path_error_code”]

Description

要比较的错误代码列表。

bond_heartbeat_period:

Type

Default

double

0.1

Description

生命周期节点债券机制发布周期(在 /bond 主题上)。如果小于或等于 0.0,则禁用。

Example

bt_navigator:
  ros__parameters:
    use_sim_time: true
    global_frame: map
    robot_base_frame: base_link
    transform_tolerance: 0.1
    default_nav_to_pose_bt_xml: replace/with/path/to/bt.xml # or $(find-pkg-share my_package)/behavior_tree/my_nav_to_pose_bt.xml
    default_nav_through_poses_bt_xml: replace/with/path/to/bt.xml # or $(find-pkg-share my_package)/behavior_tree/my_nav_through_poses_bt.xml
    always_reload_bt_xml: false
    goal_blackboard_id: goal
    goals_blackboard_id: goals
    path_blackboard_id: path
    navigators: ['navigate_to_pose', 'navigate_through_poses']
    navigate_to_pose:
      plugin: "nav2_bt_navigator::NavigateToPoseNavigator" # In Iron and older versions, "/" was used instead of "::"
    navigate_through_poses:
      plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator" # In Iron and older versions, "/" was used instead of "::"
    plugin_lib_names:
      - nav2_compute_path_to_pose_action_bt_node
      - nav2_follow_path_action_bt_node
      - nav2_back_up_action_bt_node
      - nav2_spin_action_bt_node
      - nav2_wait_action_bt_node
      - nav2_clear_costmap_service_bt_node
      - nav2_is_stuck_condition_bt_node
      - nav2_goal_reached_condition_bt_node
      - nav2_initial_pose_received_condition_bt_node
      - nav2_goal_updated_condition_bt_node
      - nav2_reinitialize_global_localization_service_bt_node
      - nav2_rate_controller_bt_node
      - nav2_distance_controller_bt_node
      - nav2_speed_controller_bt_node
      - nav2_recovery_node_bt_node
      - nav2_pipeline_sequence_bt_node
      - nav2_round_robin_node_bt_node
      - nav2_transform_available_condition_bt_node
      - nav2_time_expired_condition_bt_node
      - nav2_distance_traveled_condition_bt_node
      - nav2_single_trigger_bt_node
    error_code_names:
      - compute_path_error_code
      - follow_path_error_code
      # - smoother_error_code, navigate_to_pose_error_code, navigate_through_poses_error_code, etc