【Nav2中文网】五、普通教程(六)动态对象追踪

阅读: 评论:0

【Nav2中文网】五、普通教程(六)动态对象追踪

【Nav2中文网】五、普通教程(六)动态对象追踪

  • 本教程来自:Nav2中文网
  • Nav2交流社区:
  • ROS2/Nav2千人交流群:(QQ)139707339
  • 更多精彩教程请关注微信公众号:鱼香ROS
  • 欢迎添加机器人小伊微信,解锁机器人学习特殊服务

动态对象追踪 [待校准@1238]

  • 概述
  • 教程指南

概述

本教程展示了如何将Nav2用于从A点到B点以外的不同任务。在这种情况下,我们将使用Nav2无限期地跟踪一个移动的物体。 [校准@混沌无形]

此任务在跟踪一个人或另一个机器人的情况下非常有用。以下是可以使用此功能创建的应用程序的一些示例视频。 “Carry My Luggage” RoboCup家庭测试,其中 CATIE Robotics 团队成功执行测试,以及这个真实的 (未来的) 世界应用: [校准@混沌无形]

The requirements for this task are as follows:

  • 变化仅限于用于导航的行为树。当需要时,这行为树可以在 NavigateToPose 行动中选择,或可以是默认行为树。它是由运行时可配置的插件组成的。 [校准@混沌无形]
  • 规划器和控制器的配置将不会被修改。 [校准@混沌无形]
  • 该行动将无限期地运行,直到它被发起者取消。 [校准@混沌无形]

检测要跟踪的动态物体(如人)不在本教程的范围内。如下图所示,您的应用程序应该为感兴趣的对象提供一个检测器,将初始位姿发送到 NavigateToPose 动作(action),并在任务期间更新话题。存在许多不同类型的探测器,你可以利用它们来实现这一应用: [校准@混沌无形]

Tutorial Steps

0- Create the Behavior Tree

让我们从这个简单的行为树开始。此行为树以1 hz重新规划新路径,并将该路径传递给控制器来跟踪: [校准@混沌无形]

<root main_tree_to_execute="MainTree"><BehaviorTree ID="MainTree"><PipelineSequence name="NavigateWithReplanning"><RateController hz="1.0"><ComputePathToPose goal="{goal}" path="{path}" planner_id="GridBased"/></RateController><FollowPath path="{path}" controller_id="FollowPath"/></PipelineSequence></BehaviorTree>
</root>

首先,让我们让这个行为运行到出现故障为止。为此,我们将使用 KeepRunningUntilFailure 控制节点。 [校准@混沌无形]

<root main_tree_to_execute="MainTree"><BehaviorTree ID="MainTree"><PipelineSequence name="NavigateWithReplanning"><RateController hz="1.0"><ComputePathToPose goal="{goal}" path="{path}" planner_id="GridBased"/></RateController><KeepRunningUntilFailure><FollowPath path="{path}" controller_id="FollowPath"/></KeepRunningUntilFailure></PipelineSequence></BehaviorTree>
</root>

然后,我们将使用装饰器 GoalUpdater 来接受我们试图跟踪的动态对象位姿的更新。该节点将当前目标作为输入,并订阅话题 /goal_update 。如果收到关于这个话题的新目标,则它将新目标定为 updated_goal 。 [校准@混沌无形]

<root main_tree_to_execute="MainTree"><BehaviorTree ID="MainTree"><PipelineSequence name="NavigateWithReplanning"><RateController hz="1.0"><GoalUpdater input_goal="{goal}" output_goal="{updated_goal}"><ComputePathToPose goal="{updated_goal}" path="{path}" planner_id="GridBased"/></GoalUpdater></RateController><KeepRunningUntilFailure><FollowPath path="{path}" controller_id="FollowPath"/></KeepRunningUntilFailure></PipelineSequence></BehaviorTree>
</root>

为了与目标保持一定距离,我们将使用动作节点 TruncatePath 。这个节点修改了路径,使其变短,这样我们就不会试图导航到感兴趣的对象。我们可以用输入端口distance来设置到目标的理想距离。 [校准@混沌无形]

<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>

现在,你可以保存此行为树,并把它应用在导航任务中。 [校准@混沌无形]

作为参考,这个确切的行为树是可用于<[.xml](.xml)>_的电池,包括在 [](.html#id1)nav2_bt_navigator包中。 [校准@混沌无形]

1- 设置Rviz的点击点 [校准@混沌无形]

我们将使用RViz而不是一个完整的应用程序,这样你就可以在家里测试,而不需要找一个探测器来开始。我们将使用工具栏上的 “ “clicked point” ” 按钮替换对象检测,以向Nav2提供目标更新。这个按钮允许你将坐标数据发布到话题 /clicked_point 。这个点需要通过clicked_point_to_pose程序发送到行为树上,该程序来自这个 仓库 <[]()>_。在你的工作区克隆这个仓库,构建,并在终端输入。 [校准@混沌无形]

ros2runnav2_test_utilsclicked_point_to_pose

或者,您可以在你rviz配置文件 goal_updates 中重新映射此话题。 [校准@混沌无形]

2- 在Nav2模拟中运行动态对象跟踪 [校准@混沌无形]

在终端启动Nav2: [校准@混沌无形]

ros2launchnav2_bringuptb3_simulation_launch.pydefault_bt_xml_filename:=/path/l

打开RViz,在初始化机器人位置后,命令机器人导航到任何位置。使用按钮点击的点来模拟对感兴趣的物体进行新的检测,如本教程头部的视频所示。 [校准@混沌无形]

当你有探测器检测障碍率较高 (1 hz,10 hz,100 hz) 时,你会看到一个反应更灵敏的机器人跟随你检测到的感兴趣的对象! [校准@混沌无形]

  • 本文主要校准贡献:混沌无形
  • 本文遵循知识共享协议,禁止未授权商用转载

本文发布于:2024-02-01 04:31:34,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170673309433872.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:文字识别接口
标签:中文网   对象   教程   动态
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23