ROS2与Navigation2入门教程-跟随动态点(Follow Dynamic Point)行为树
说明:
- 介绍行为树XMLs,跟随动态点(Follow Dynamic Point)行为树
跟随动态点(Follow Dynamic Point)行为树
此行为树实现了机器人从起点开始然后尝试长时间跟随动态点的导航行为。
这个“动态点”可以是一个人、另一个机器人、一根虚拟的胡萝卜和其它任何东西。
唯一的要求就是想要跟随的位姿已发布到BT节点GoalUpdater中列出的话题上。
在此行为树中,会以1 hz的频率进行路径重新规划,就像在导航至某个位姿(Navigate To Pose)行为树中使用ComputePathToPose节点所做的那样。但是,这次在重新规划路径时,此行为树会根据更新的目标位姿话题中的最新信息来更新goal。在规划好了到这个动态点的路径后,会使用TruncatePath节点从靠近动态点的路径末端删除路径点。
这个行为树节点很有用,因为它可以让机器人始终与障碍物保持至少distance参数设定的距离,即使机器人停下来。
此行为树还会消除尝试在成本地图上可能被占用的空间中进行路径规划所涉及的任何偏离路径行为。
在计算到动态点的新路径并进行截断后,此行为树会再次通过FollowPath节点将该新路径传递给控制器。但是,请注意,FollowPath节点位于KeepRunningUntilFailure装饰器节点下,用于确保控制器继续执行直到出现故障模式。这个行为树会无限期执行下去,直到导航请求被抢占或者取消为止。
<root main_tree_to_execute="MainTree">
<BehaviorTree ID="MainTree">
<PipelineSequence name="NavigateWithReplanning">
<RateController hz="1.0">
<Sequence>
<GoalUpdater input_goal="{goal}" output_goal="{updated_goal}">
<ComputePathToPose goal="{updated_goal}" path="{path}" planner_id="GridBased"/>
</GoalUpdater>
<TruncatePath distance="1.0" input_path="{path}" output_path="{truncated_path}"/>
</Sequence>
</RateController>
<KeepRunningUntilFailure>
<FollowPath path="{truncated_path}" controller_id="FollowPath"/>
</KeepRunningUntilFailure>
</PipelineSequence>
</BehaviorTree>
</root>
参考:
- https://navigation.ros.org/behavior_trees/trees/follow_point.html
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号