ROS2与Navigation2入门教程-导航插件(Navigation Plugins)
说明:
- 介绍导航插件(Navigation Plugins)
概述
Nav2中有许多插件接口可以供用户用来创建自己的自定义应用程序或算法。
即成本地图图层、规划器、控制器、行为树和恢复器插件。
下面列出了ROS 2导航软件堆栈的所有已知插件列表。
如果您还知道某个其它插件,或者已经创建了一个新插件,请考虑提交包含该新插件信息的拉取请求。
本文件可以在sphinx_docs/plugins/index.rst下找到并进行编辑。
有关如何创建自定义插件的教程,请参阅“编写新的Costmap2D插件”、“编写新的规划器(Planner)插件”、“编写新的控制器(Controller)插件”、“编写新的行为树(Behavior Tree)插件”和“编写新的恢复器(Recovery)插件”。
成本地图图层(Costmap Layers)插件
插件名称 | 创建者 | 插件描述 |
体素图层Voxel Layer | Eitan Marder-Eppstein | 该插件使用深度传感器和激光传感器读数以及光线投射来清除空闲空间来维护持久的3D体素图层 |
距离图层Range Layer | David Lu | 该插件使用概率模型将来自发布距离消息的传感器数据放到成本地图上 |
静态图层Static Layer | Eitan Marder-Eppstein | 该插件可以获取静态地图并将网格占用信息加载到成本地图中 |
膨胀图层Inflation Layer | Eitan Marder-Eppstein | 该插件可以使用指数衰减算法对成本地图中的致命障碍物进行膨胀 |
障碍物图层Obstacle Layer | Eitan Marder-Eppstein | 该插件可以使用光线投射来清除空闲空间,从而维护来自2D激光扫描的持久2D成本地图 |
时空体素图层Spatio-Temporal Voxel Layer | Steve Macenski | 该插件可以使用传感器模型衰减算法来维护时间-3D稀疏体积的体素网格 |
非持久体素图层Non-Persistent Voxel Layer | Steve Macenski | 该插件通过仅包含最多的测量值集合来维护3D占用网格 |
成本地图过滤器(Costmap Filters)插件
插件名称 | 创建者 | 插件描述 |
禁区过滤器Keepout Filter | Alexey Merzlyakov | 该插件为机器人移动维护禁区/安全区和首选车道 |
速度过滤器Speed Filter | Alexey Merzlyakov | 该插件用于在限速区域限制机器人的最大速度 |
控制器(Controllers)插件
插件名称 | 创建者 | 插件描述 | 支持的传动系统 |
DWB控制器DWB Controller | David Lu | 该一个高度可配置的DWA实现,带有插件接口 | 差分驱动、全向驱动、腿足驱动 |
TEB控制器TEB Controller | Christoph Rösmann | 类似于MPC的控制器,适用于阿克曼、差分驱动和完整约束机器人 | 阿克曼、腿足驱动、全向驱动、差分驱动 |
受管制纯追踪Regulated Pure Pursuit | Steve Macenski | 具有自适应特征的纯追踪算法的变体,面向服务/工业机器人 | 阿克曼、腿足驱动、差分驱动 |
规划器(Planners)插件
插件名称 | 创建者 | 插件描述 | 支持的传动系统 |
NavFn规划器NavFn Planner | Eitan Marder-Eppstein & Kurt Konolige | 使用A*或Dijkstras扩展的导航函数,假设2D完整约束粒子 | 差分驱动、全向驱动、腿足驱动 |
Smac规划器SmacPlannerHybrid | Steve Macenski | 使用Dubin或Reeds-shepp运动模型的SE2混合A*实现,具有更平滑的多分辨率查询。适用于汽车、类汽车和阿克曼汽车机器人。 | 阿克曼、差分驱动、全向驱动、腿足驱动 |
Smac2D规划器SmacPlanner2D | Steve Macenski | 使用4或8个连接的邻域和更平滑的多分辨率查询的2D A*实现 | 差分驱动、全向驱动、腿足驱动 |
Theta*规划器ThetaStarPlanner | Anshumaan Singh | 使用4或8个连接邻域的 Theta*实现,假设机器人是 2D完整约束粒子 | 差分驱动、全向驱动 |
恢复器(Recoveries)插件
插件名称 | 创建者 | 插件描述 |
清除成本地图Clear Costmap | Eitan Marder-Eppstein | 该插件可以提供在错误感知或机器人卡住的情况下用于清除给定成本地图的一种服务 |
旋转恢复器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行为树节点
- 行为树节点的相关插件
动作插件
动作插件名称 | 创建者 | 插件描述 |
后退动作Back Up Action | Michael Jeronimo | 此插件用于调用后退恢复器动作 |
清除整个成本地图服务Clear Entire Costmap Service | Carl Delsey | 此插件用于调用清除整个成本地图服务 |
清除成本地图除外区域服务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其他BTs的BT节点,用于调用Navigation2的子树动作 |
遵循路径动作Follow Path Action | Michael Jeronimo | 此插件用于调用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 | 此插件用于基于话题输入选择全局规划器,否则会使用默认规划器ID |
控制器选择器Controller Selector | Pablo Iñigo Blasco | 此插件用于基于话题输入选择控制器,否则会使用默认控制器ID |
目标检测器选择器Goal Checker Selector | Pablo Iñigo Blasco | 此插件用于基于话题输入选择目标检测器,否则会使用默认的目标检测器ID |
通过多个位姿导航Navigate Through Poses | Steve Macenski | BehaviorTree.CPP其他BTs的BT节点,用于调用Navigation2的NavThroughPoses动作 |
移除已经过的目标Remove Passed Goals | Steve Macenski | 此插件会从重新规划的路径中删除已经过的目标位姿或在用于剔除旧的经过点的容差范围内的目标位姿 |
通过多个位姿的路径计算Compute Path Through Poses | Steve Macenski | 使用指定的规划器插件计算通过一组位姿而非单个最终目标位姿的路径 |
条件插件
插件名称 | 创建者 | 插件描述 |
目标到达条件插件Goal Reached Condition | Carl Delsey | 此插件用于检测是否在容差范围内到达了目标位姿 |
目标更新条件插件Goal Updated Condition | Aitor Miguel Blanco | 此插件用于检测目标位姿是否更新 |
初始位姿接收条件Initial Pose received Condition | Carl Delsey | 此插件用于检测是否已经设置好了初始位姿 |
是否卡住条件插件Is Stuck Condition | Michael Jeronimo | 此插件用于检测机器人是否在前进中还是被卡住了 |
坐标转换可用条件Transform Available Condition | Steve Macenski | 此插件用于检测是否有可用的TF坐标变换。当成功时会为后续调用返回成功结果。 |
行进距离条件插件Distance Traveled Condition | Sarthak Mittal | 此插件用于检测机器人是否已经行驶了给定的距离 |
过期条件插件Time Expired Condition | Sarthak Mittal | 此插件用于检测是否已经过了一段给定的时间段 |
电池量低条件插件Is Battery Low Condition | Sarthak Mittal | 此插件用于检测电量百分比是否低于指定的值 |
装饰器插件
装饰器插件名称 | 创建者 | 插件描述 |
频率控制器Rate Controller | Michael Jeronimo | 此插件用于将子节点限定至给定的频率 |
距离控制器Distance Controller | Sarthak Mittal | 此插件用于根据机器人行驶的距离勾选子节点 |
速度控制器Speed Controller | Sarthak Mittal | 此插件用于根据机器人当前速度将子节点限定至某个频率 |
目标更新器Goal Updater | Francisco Martín | 此插件用于更新通过话题订阅接收到的目标位姿 |
单次触发器Single Trigger | Steve Macenski | 此插件用于为每次BT运行仅触发节点/子树一次 |
控制插件
插件名称 | 创建者 | 插件描述 |
流水线序列Pipeline Sequence | Carl Delsey | 序列节点的一个变体,即使另一个子节点正在运行,也会重新勾选前面的子节点 |
恢复器Recovery | Carl Delsey | 节点必须包含2个子节点,且如果第一个子节点成功则返回成功。如果第一个子节点失败,则会勾选第二个子节点。如果第二个子节点成功,则会重试第一个子节点,然后返回其值 |
循环RobinRound Robin | Mohammad Haghighipanah | 会勾选第i个子节点直到返回结果,并会继续移至第i+1个子节点 |
参考:
- https://navigation.ros.org/plugins/index.html
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号