【Nav2中文网】十、导航插件

导航插件

Nav2提供了很多插件接口供用户创建自己的自定义程序或算法。即代价地图层、规划器、控制器、行为树和脱困插件。下面列出了所有可以用于ROS2导航的已知插件列表。如果你知道一个插件,或者你已经创建了一个新的插件,可以考虑将此插件通过提交一个pull request到我们的仓库中。 [校准@小鱼]

可以在 sphinx_docs/plugins/index.rst 下找到并编辑此文件。有关如何创建自定义的插件的教程,请参阅 编写新的二维代价地图(Costmap2D)插件, 编写新的二维代价地图(Costmap2D)插件编写新的控制器插件 [待校准@2100]编写新的规划器插件编写新的恢复插件 [待校准@2180][校准@小鱼]

代价地图层(Costmap Layers)

插件名称 创建者 描述
-
体素图层 Voxel Layer Eitan Marder-Eppstein 利用深度传感器的数据和激光传感器射线投影数据来擦除空间中障碍信息以维护持久体素层。 [校准@mzebra]
- - -
测距图层 Range Layer David Lu 使用概率模型将传感器的测距数据生成在costmap上 [校准@mzebra]
静态图层 Static Layer Eitan Marder-Eppstein 获取静态 map 并将其中的栅格占据信息加载到costmap中 [校准@mzebra]
膨胀图层 Inflation Layer Eitan Marder-Eppstein 用指数衰减算法对代价地图(costmap)中的致命障碍物进行膨胀 [校准@mzebra]
障碍物图层 Obstacle Layer Eitan Marder-Eppstein 通过从2D的雷达扫描数据在持久层2D costmap更新自由空间 [校准@小鱼]
时空体素层 Spatio-Temporal Voxel Layer [校准@mzebra] Steve Macenski 通过传感器衰减模型维护当前的3D稀疏体素网格 [校准@mzebra]
非持久体素层 Non-Persistent Voxel Layer [校准@mzebra] Steve Macenski 该插件通过测量数据最多的数据维护3D占据栅格地图 [校准@mzebra]

代价地图过滤器(Costmap Filters)

插件名称 创建者 描述
-
禁区过滤器 Keepout Filter Alexey Merzlyakov 维持运行时的导航禁区/导航安全区和首选车道 [校准@mzebra]
- - -
速度过滤器 Speed Filter [校准@mzebra] Alexey Merzlyakov 限制机器人在限速区域的最大速度 [校准@小鱼]

控制器(Controllers)

插件名称 创建者 描述 传动系统支持
-
DWB Controller David Lu!! 基于DWA的可高度配置的实现,并提供插件接口 [校准@小鱼] 差分式、全向式、腿足式 [校准@小鱼]
- - - -
TEB Controller Christoph Rösmann 一个类似MPC的控制器,适用于阿克曼式、差分式和具备完整约束的机器人。 [校准@小鱼] 阿克曼式(Ackermann)、腿足式、全向式、差分式 [校准@小鱼]
受监管的纯追踪 Regulated Pure Pursuit Steve Macenski 针对服务/工业机器人在追踪算法的基础上增加了自适应性。 [校准@小鱼] 阿克曼式(Ackermann)、腿足式、差分式 [校准@小鱼]
旋转补偿控制器 Rotation Shim Controller Steve Macenski 在主控制器进行路径跟踪之前, “shim” 控制器负责将机器人旋转到路径的方向。 [校准@小鱼] 差速式,全向式、模型旋转到位 [校准@小鱼]

规划器(Planners)

插件名称 创建者 描述 传动系统支持
-
NavFn Planner Eitan Marder-Eppstein & Kurt Konolige 使用A*或Dijkstra扩展的导航规划函数,并假设粒子在二维空间(2D)具备完整性约束 [校准@小鱼] 差分式、全向式、腿足式 [校准@小鱼]
- - - -
SmacPlannerHybrid(原 SmacPlanner ) Steve Macenski 一个使用Dubin或Reeds-shepp运动模型的 SE2混合A*实现,该实现更加平滑且支持多分辨率查询。适用于汽车、类似汽车和阿克曼汽车机器人运动学模型。 [校准@小鱼] 阿克曼式(Ackermann)、差分式、全向式、腿足式 [校准@小鱼]
SmacPlanner2D Steve Macenski 使用4或8个连接邻域的二维空间(2D)A*算法的实现,该实现更加平滑并支持多分辨率查询。 [校准@小鱼] 差分式、全向式、腿足式 [校准@小鱼]
SmacPlannerLattice Steve Macenski 使用预先生成的最小控制集实现的一种状态栅格规划器(State Lattice Planner),可用于任意类型的运动学可行的车辆,包括阿克曼式、差分式、全向式和腿足式机器人的脚本生成器。 [校准@小鱼] 差分式、全向式、阿克曼式、腿足式、任意/自定义的 [校准@小鱼]
ThetaStarPlanner Anshumaan Singh 使用4或8个连接邻域实现的Theta* 算法,并假设粒子在二维空间(2D)具备完整性约束 [校准@小鱼] 差分式、全向式 [校准@小鱼]

恢复(Recoveries)

插件名称 创建者 描述
-
清除代价地图 Clear Costmap Eitan Marder-Eppstein 在错误的感知或机器人卡住的情况下用于清除给定代价地图(costmap)的服务 [校准@小鱼]
- - -
自旋 Spin Steve Macenski 旋转恢复器可通过配置角度来扫除障碍空间,并推动机器人排除潜在的局部故障 [校准@小鱼]
后退 Back Up Brian Wilcox 后退恢复器可以通过配置后退距离,使机器人从卡住状态中恢复正常 [校准@小鱼]
等待 Wait Steve Macenski 等待恢复器可以配置等待时间,其主要可用于如人流阻挡或短时内传感器数据不足的情况。 [校准@小鱼]

路点任务执行器(Waypoint Task Executors)

插件名称 创建者 描述
-
在路点上等待 WaitAtWaypoint Fetullah Atas 该插件用于在航点到达时执行等待行为。 [校准@小鱼]
- - -
在路点拍照 PhotoAtWaypoint Fetullah Atas 该插件在航点到达时将采集并保存照片到指定目录。 [校准@小鱼]
在路点输入 InputAtWaypoint Steve Macenski 该插件用于在移动到下一个路点之前等待用户输入。 [校准@小鱼]

目标检查器(Goal Checkers)

插件名称 创建者 描述
-
简单目标检查器 SimpleGoalChecker [校准@小鱼] David Lu!! 该插件用于检查当前的机器人位姿是否在目标位姿的平移和旋转范围内。 [校准@小鱼]
- - -
停止目标检查器 StoppedGoalChecker [校准@小鱼] David Lu!! 该插件检查机器人是否在目标的平移距离和旋转距离范围之内,以及当前速度是否在指定阈值内。 [校准@小鱼]

进度检查器(Progress Checkers)

插件名称 创建者 描述
-
SimpleProgressChecker David Lu!! 该插件用于检查机器人是否能够在给定时间内朝着目标移动给定的最小距离。 [校准@小鱼]
- - -

行为树节点(Behavior Tree Nodes)

动作(Action)插件名称 创建者 描述
-
倒退动作 Back Up Action [校准@小鱼] Michael Jeronimo 调用后退恢复(backup recovery)动作
- - -
清除整个代价地服务 Clear Entire Costmap Service [校准@小鱼] Carl Delsey 调用服务清除整个代价地图(Costmap) [校准@小鱼]
清除某个区域外的代价地图 Clear Costmap Except Region Service [校准@小鱼] Guillaume Doisy 调用服务清除某些区域之外的代价地图 [校准@小鱼]
清除机器人周围代价地图服务 Clear Costmap Around Robot Service [校准@小鱼] Guillaume Doisy 该节点调用服务清除机器人周围的代价地图 [校准@小鱼]
计算到某个姿态的路径 Compute Path to Pose Action [校准@小鱼] Michael Jeronimo 调用Nav2规划器服务 [校准@小鱼]
路径跟随动作 Follow Path Action [校准@小鱼] Michael Jeronimo 调用Nav2控制器服务 [校准@小鱼]
导航到点动作 Navigate to Pose Action [校准@小鱼] Michael Jeronimo BehaviorTree.CPP行为树的其他节点,可以将Nav2作为子树动作进行调用 [校准@小鱼]
全局定位重新初始化服务 Reinitalize Global Localization Service [校准@小鱼] Carl Delsey 重新初始化AMCL到一个新的位姿 [校准@小鱼]
自旋动作 Spin Action [校准@小鱼] Carl Delsey 调用自旋恢复器动作 [校准@小鱼]
等待动作 Wait Action [校准@小鱼] Steve Macenski 调用等待恢复器动作 [校准@小鱼]
缩短路径 Truncate Path [校准@小鱼] Francisco Martín 修改路径使其更短 [校准@小鱼]
规划器选择器 Planner Selector [校准@小鱼] Pablo Iñigo Blasco 根据话题(Topic)的输入选择一个全局规划器,否则使用默认的规划器的ID [校准@小鱼]
控制器选择器 Controller Selector [校准@小鱼] Pablo Iñigo Blasco 根据话题(Topic)的输入选择一个控制器,否则使用默认的控制器ID [校准@小鱼]
目标检查器选择器 Goal Checker Selector [校准@小鱼] Pablo Iñigo Blasco 根据话题(Topic)的输入选择一个目标检查器,否则使用默认的目标检查器ID [校准@小鱼]
通过多个位姿进行导航 Navigate Through Poses [校准@小鱼] Steve Macenski BehaviorTree.CPP行为树的其他节点,可以对Nav2的NavThroughPoses进行调用 [校准@小鱼]
移除已经经过的目标 Remove Passed Goals [校准@小鱼] Steve Macenski 移除已经通过的目标点或在允许的范围内从重新规划的路径中剔除旧的路点 [校准@小鱼]
计算一条通过多个给定目标点路径 Compute Path Through Poses [校准@小鱼] Steve Macenski 通使用特殊的规划器来计算一条可以通过多个目标点的路径,而不是计算到仅需达一个目标点的路径 [校准@小鱼]
条件(Condition)插件名称 创建者 描述
-
目标是否到达判断节点 Goal Reached Condition [校准@小鱼] Carl Delsey 检测机器人是否在容许误差的情况下到达目标附近 [校准@小鱼]
- - -
目标更新判断节点 Goal Updated Condition [校准@小鱼] Aitor Miguel Blanco 检查导航目标是否被更新(抢占)。 [校准@小鱼]
初始位置是否接受判断节点 Initial Pose received Condition [校准@小鱼] Carl Delsey 检查初始姿势是否已经被设置 [校准@小鱼]
是否卡住判断节点 Is Stuck Condition [校准@小鱼] Michael Jeronimo 检查机器人是否在前进或卡住 [校准@小鱼]
TF变换是否有效判断节点 Transform Available Condition [校准@小鱼] Steve Macenski 检查TF变换是否有效,如有效后续调用都会返回有效。 [校准@小鱼]
前进距离判断节点 Distance Traveled Condition [校准@小鱼] Sarthak Mittal 检查机器人是否已经行驶了给定的距离。 [校准@小鱼]
时间过期判断节点 Time Expired Condition [校准@小鱼] Sarthak Mittal 检查是否已经过了一段给定的时间。 [校准@小鱼]
电池电量底判断节点 Is Battery Low Condition [校准@小鱼] Sarthak Mittal 检查电池百分比是否低于指定值。 [校准@小鱼]
装饰器(Decorator)插件名称 创建者 描述
-
频率控制器 Rate Controller [校准@小鱼] Michael Jeronimo 将子节点限定为给定速率 [校准@小鱼]
- - -
距离控制器 Distance Controller [校准@小鱼] Sarthak Mittal 根据机器人行进的距离勾选子节点 [校准@小鱼]
速度控制器 Speed Controller [校准@小鱼] Sarthak Mittal 基于当前机器人速度限制子节点的速率。 [校准@小鱼]
目标更新器 Goal Updater [校准@小鱼] Francisco Martín 通过话题订阅更新导航目标 [校准@小鱼]
单次触发器 Single Trigger [校准@小鱼] Steve Macenski 用于控制每次行为树运行时仅运行一次节点/子树 [校准@小鱼]
控制(Control)插件名称 创建者 描述
-
流水线序列 Pipeline Sequence [校准@小鱼] Carl Delsey 序列节点(sequence)的变体,即使另外一个子结点正在运行,也可以重新勾选(运行)前面的节点。 [校准@小鱼]
- - -
恢复器 Recovery [校准@小鱼] Carl Delsey 此节点必须包含2个子节点,如果第一个子结点成功,则返回成功。如果第一个失败,第二个子结点将被勾选。如果第二个成功,则会再次尝试运行第一个子结点,然后返回其运行结果 [校准@小鱼]
轮询调度 Round Robin [校准@小鱼] Mohammad Haghighipanah 勾选第 i 子节点并等待结果返回,接着勾选第 i+1 个节点 [校准@小鱼]
  • 本文主要校准贡献:小鱼
  • 本文遵循知识共享协议,禁止未授权商用转载

猜你喜欢

转载自blog.csdn.net/qq_27865227/article/details/124376914