行为树导航器
源代码在 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