第二章 Nav2行为
Nav2使用行为树来控制导航行为。行为树用于建立导航到目标位置以及机器人无法导航的情况的标准。
本节解释Nav2如何使用行为树。
什么是行为树导航
nav2_bt_navigator是行为树的包
由以下部分组成:
1. bt_navigator节点和配置文件
2. bt_navigator节点的behavior
3. behavior_server节点和其配置文件
bt_navigator和behavior_server的连接方式使用行为树指定。本单元中学习如何创建此类行为并将其提供给导航系统。
bt_navigator节点
必须管理其他导航相关节点在行为树中的定义。
必须给bt_navigator创建一个行为,确定它如何移动机器人。
如何创建一个行为
要创建行为,请使用可用性为的节点类型创建XML文件。此XML文件提供给bt_behavior,以便在需要时执行。
behavior.xml例子
<!--
This Behavior Tree replans the global path periodically at 1 Hz, and it also has
recovery actions.
-->
<root main_tree_to_execute="MainTree">
<BehaviorTree ID="MainTree">
<RecoveryNode number_of_retries="6" name="NavigateRecovery">
<PipelineSequence name="NavigateWithReplanning">
<RateController hz="1.0">
<RecoveryNode number_of_retries="1" name="ComputePathToPose">
<ComputePathToPose goal="{goal}" path="{path}" planner_id="GridBased"/>
<ClearEntireCostmap service_name="global_costmap/clear_entirely_global_costmap"/>
</RecoveryNode>
</RateController>
<RecoveryNode number_of_retries="1" name="FollowPath">
<FollowPath path="{path}" controller_id="FollowPath"/>
<ClearEntireCostmap service_name="local_costmap/clear_entirely_local_costmap"/>
</RecoveryNode>
</PipelineSequence>
<SequenceStar name="RecoveryActions">
<ClearEntireCostmap service_name="local_costmap/clear_entirely_local_costmap"/>
<ClearEntireCostmap service_name="global_costmap/clear_entirely_global_costmap"/>
<Spin spin_dist="1.57"/>
<Wait wait_duration="5"/>
</SequenceStar>
</RecoveryNode>
</BehaviorTree>
</root>
可以等价为如下图

分析XML文件
对于每个行为,由以下tag开始
<root main_tree_to_execute="MainTree">
<BehaviorTree ID="MainTree">
...
</BehaviorTree>
</root>
root标记要执行的子树
behaviortree标签标记具有更定媒称的行为树 ID就是它的名字
接下来,在behavior标记中,按构建所需行为的顺序包含要使用的行为树节点。例如,对于导航课程的默认行为,你需要以下行为
每秒重新规划全局路径
跟随那个路径
如果机器人卡住,执行一下顺序
1.清除本地costmap
2. 清除全局costmap
3. 旋转以检查新的障碍物,再次构建costmap
4. 等待五秒,然后返回主要行为
看看它是如何在Nav2提供的行为节点实现的。
使用BT节点
RecoveryNode
此节点用于封装其他两个节点,并通过以下方式控制其激活
1.此节点将开始执行第一个子节点
2. 如果第一个子节点SUCCESS,那么节点返回SUCCESS
3. 如果第一个子节点failure,执行第二个子节点
4. 如果第二个子节点success,执行第一个子节点

Nav2使用行为树进行导航控制,包括bt_navigator和behavior_server节点。行为树定义了导航到目标及机器人无法导航时的行为。创建行为通过XML文件实现,如`behavior.xml`示例所示,包含重规划路径、跟随路径和恢复动作。行为节点如RecoveryNode、PipelineSequence和RateController协同工作,处理导航过程中的不同阶段。在电池电量低于25%时,可以通过IsBatteryLow和Inverter节点中断导航。Nav2的恢复行为包括旋转、后退和等待,用于解决机器人被卡住的问题。
最低0.47元/天 解锁文章

1669

被折叠的 条评论
为什么被折叠?



