< >
Home » ROS2与Navigation2入门教程 » ROS2与Navigation2入门教程-导航插件(Navigation Plugins)

ROS2与Navigation2入门教程-导航插件(Navigation Plugins)

说明:

  • 介绍导航插件(Navigation Plugins)

概述

  • Nav2中有许多插件接口可以供用户用来创建自己的自定义应用程序或算法。

  • 即成本地图图层、规划器、控制器、行为树和恢复器插件。

  • 下面列出了ROS 2导航软件堆栈的所有已知插件列表。

  • 如果您还知道某个其它插件,或者已经创建了一个新插件,请考虑提交包含该新插件信息的拉取请求。

  • 本文件可以在sphinx_docs/plugins/index.rst下找到并进行编辑。

  • 有关如何创建自定义插件的教程,请参阅“编写新的Costmap2D插件”、“编写新的规划器(Planner)插件”、“编写新的控制器(Controller)插件”、“编写新的行为树(Behavior Tree)插件”和“编写新的恢复器(Recovery)插件”。

成本地图图层(Costmap Layers)插件

插件名称创建者插件描述
体素图层Voxel LayerEitan Marder-Eppstein该插件使用深度传感器和激光传感器读数以及光线投射来清除空闲空间来维护持久的3D体素图层
距离图层Range LayerDavid Lu该插件使用概率模型将来自发布距离消息的传感器数据放到成本地图上
静态图层Static LayerEitan Marder-Eppstein该插件可以获取静态地图并将网格占用信息加载到成本地图中
膨胀图层Inflation LayerEitan Marder-Eppstein该插件可以使用指数衰减算法对成本地图中的致命障碍物进行膨胀
障碍物图层Obstacle LayerEitan Marder-Eppstein该插件可以使用光线投射来清除空闲空间,从而维护来自2D激光扫描的持久2D成本地图
时空体素图层Spatio-Temporal Voxel LayerSteve Macenski该插件可以使用传感器模型衰减算法来维护时间-3D稀疏体积的体素网格
非持久体素图层Non-Persistent Voxel LayerSteve Macenski该插件通过仅包含最多的测量值集合来维护3D占用网格

成本地图过滤器(Costmap Filters)插件

插件名称创建者插件描述
禁区过滤器Keepout FilterAlexey Merzlyakov该插件为机器人移动维护禁区/安全区和首选车道
速度过滤器Speed FilterAlexey Merzlyakov该插件用于在限速区域限制机器人的最大速度

控制器(Controllers)插件

插件名称创建者插件描述支持的传动系统
DWB控制器DWB ControllerDavid Lu该一个高度可配置的DWA实现,带有插件接口差分驱动、全向驱动、腿足驱动
TEB控制器TEB ControllerChristoph Rösmann类似于MPC的控制器,适用于阿克曼、差分驱动和完整约束机器人阿克曼、腿足驱动、全向驱动、差分驱动
受管制纯追踪Regulated Pure PursuitSteve Macenski具有自适应特征的纯追踪算法的变体,面向服务/工业机器人阿克曼、腿足驱动、差分驱动

规划器(Planners)插件

插件名称创建者插件描述支持的传动系统
NavFn规划器NavFn PlannerEitan Marder-Eppstein & Kurt Konolige使用A*或Dijkstras扩展的导航函数,假设2D完整约束粒子差分驱动、全向驱动、腿足驱动
Smac规划器SmacPlannerHybridSteve Macenski使用Dubin或Reeds-shepp运动模型的SE2混合A*实现,具有更平滑的多分辨率查询。适用于汽车、类汽车和阿克曼汽车机器人。阿克曼、差分驱动、全向驱动、腿足驱动
Smac2D规划器SmacPlanner2DSteve Macenski使用4或8个连接的邻域和更平滑的多分辨率查询的2D A*实现差分驱动、全向驱动、腿足驱动
Theta*规划器ThetaStarPlannerAnshumaan Singh使用4或8个连接邻域的 Theta*实现,假设机器人是 2D完整约束粒子差分驱动、全向驱动

恢复器(Recoveries)插件

插件名称创建者插件描述
清除成本地图Clear CostmapEitan Marder-Eppstein该插件可以提供在错误感知或机器人卡住的情况下用于清除给定成本地图的一种服务
旋转恢复器SpinSteve Macenski可配置角度的旋转恢复器可用于清除空闲空间并将机器人从潜在的局部故障中移出
后退恢复器Back UpBrian Wilcox可配置距离的后退恢复器可用于将卡住的机器人通过后退从卡住状态中移出
等待恢复器WaitSteve Macenski具有可配置时间的等待恢复器可用于在例如人流或获取更多传感器数据等基于时间的障碍物情况下进行等待。

航点任务执行器(Waypoint Task Executors)插件

插件名称创建者插件描述
在航点上等待WaitAtWaypointFetullah Atas在到达航点时执行等待行为的插件。
在航点行拍照PhotoAtWaypointFetullah Atas在到达航点时拍摄照片并将照片保存到指定目录的插件。
在航点上输入InputAtWaypointSteve Macenski在移向下一个航点前等待用户输入的插件。

目标检测器(Goal Checkers)插件

插件名称创建者插件描述
简单目标检测器SimpleGoalCheckerDavid Lu该插件用于检测机器人是否在目标位姿的平移距离和旋转距离范围内。
停止目标检测器StoppedGoalCheckerDavid Lu该插件用于检测机器人是否在目标位姿的平移距离和旋转距离范围内以及速度阈值内。

前进检测器(Progress Checkers)插件

插件名称创建者插件描述
简单前进检测器SimpleProgressCheckerDavid Lu该插件用于检查机器人是否能够在给定时间内移动最小距离以朝着目标位姿前进

Behavior Tree Nodes行为树节点

  • 行为树节点的相关插件

动作插件

动作插件名称创建者插件描述
后退动作Back Up ActionMichael Jeronimo此插件用于调用后退恢复器动作
清除整个成本地图服务Clear Entire Costmap ServiceCarl Delsey此插件用于调用清除整个成本地图服务
清除成本地图除外区域服务Clear Costmap Except Region ServiceGuillaume Doisy此插件用于调用清除成本地图中除外区域的服务
清除成本地图机器人周边区域服务Clear Costmap Around Robot ServiceGuillaume Doisy此插件用于调用清楚成本地图中机器人周边区域的服务
到位姿的路径计算动作Compute Path to Pose ActionMichael Jeronimo此插件用于调用Nav2规划器服务器
遵循路径动作Follow Path ActionMichael Jeronimo此插件用于调用Nav2控制器服务器
导航至位姿动作Navigate to Pose ActionMichael JeronimoBehaviorTree.CPP其他BTs的BT节点,用于调用Navigation2的子树动作
遵循路径动作Follow Path ActionMichael Jeronimo此插件用于调用Nav2控制器服务器
全局定位重新初始化服务Reinitalize Global Localization ServiceCarl Delsey此插件用于重新初始化AMCL到一个新的位姿
旋转动作Spin ActionCarl Delsey此插件用于调用旋转恢复器动作
等待动作Wait ActionSteve Macenski此插件用于调用等待恢复器动作
截断路径Truncate PathFrancisco Martín此插件用于修改路径使其更短
规划器选择器Planner SelectorPablo Iñigo Blasco此插件用于基于话题输入选择全局规划器,否则会使用默认规划器ID
控制器选择器Controller SelectorPablo Iñigo Blasco此插件用于基于话题输入选择控制器,否则会使用默认控制器ID
目标检测器选择器Goal Checker SelectorPablo Iñigo Blasco此插件用于基于话题输入选择目标检测器,否则会使用默认的目标检测器ID
通过多个位姿导航Navigate Through PosesSteve MacenskiBehaviorTree.CPP其他BTs的BT节点,用于调用Navigation2的NavThroughPoses动作
移除已经过的目标Remove Passed GoalsSteve Macenski此插件会从重新规划的路径中删除已经过的目标位姿或在用于剔除旧的经过点的容差范围内的目标位姿
通过多个位姿的路径计算Compute Path Through PosesSteve Macenski使用指定的规划器插件计算通过一组位姿而非单个最终目标位姿的路径

条件插件

插件名称创建者插件描述
目标到达条件插件Goal Reached ConditionCarl Delsey此插件用于检测是否在容差范围内到达了目标位姿
目标更新条件插件Goal Updated ConditionAitor Miguel Blanco此插件用于检测目标位姿是否更新
初始位姿接收条件Initial Pose received ConditionCarl Delsey此插件用于检测是否已经设置好了初始位姿
是否卡住条件插件Is Stuck ConditionMichael Jeronimo此插件用于检测机器人是否在前进中还是被卡住了
坐标转换可用条件Transform Available ConditionSteve Macenski此插件用于检测是否有可用的TF坐标变换。当成功时会为后续调用返回成功结果。
行进距离条件插件Distance Traveled ConditionSarthak Mittal此插件用于检测机器人是否已经行驶了给定的距离
过期条件插件Time Expired ConditionSarthak Mittal此插件用于检测是否已经过了一段给定的时间段
电池量低条件插件Is Battery Low ConditionSarthak Mittal此插件用于检测电量百分比是否低于指定的值

装饰器插件

装饰器插件名称创建者插件描述
频率控制器Rate ControllerMichael Jeronimo此插件用于将子节点限定至给定的频率
距离控制器Distance ControllerSarthak Mittal此插件用于根据机器人行驶的距离勾选子节点
速度控制器Speed ControllerSarthak Mittal此插件用于根据机器人当前速度将子节点限定至某个频率
目标更新器Goal UpdaterFrancisco Martín此插件用于更新通过话题订阅接收到的目标位姿
单次触发器Single TriggerSteve Macenski此插件用于为每次BT运行仅触发节点/子树一次

控制插件

插件名称创建者插件描述
流水线序列Pipeline SequenceCarl Delsey序列节点的一个变体,即使另一个子节点正在运行,也会重新勾选前面的子节点
恢复器RecoveryCarl Delsey节点必须包含2个子节点,且如果第一个子节点成功则返回成功。如果第一个子节点失败,则会勾选第二个子节点。如果第二个子节点成功,则会重试第一个子节点,然后返回其值
循环RobinRound RobinMohammad Haghighipanah会勾选第i个子节点直到返回结果,并会继续移至第i+1个子节点

参考:

  • https://navigation.ros.org/plugins/index.html

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与navigation2入门教程