返回顶部
r

ros2-engineering-skills ROS2工程技能

>

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.2
安全检测
已通过
213
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

ros2-engineering-skills

ROS 2 工程技能

一个面向ROS 2开发的渐进式技能体系——从第一个工作空间到生产级车队部署。以下每个部分都为您提供关键的决策框架;详细的模式、代码模板和反模式则存放在references/目录中。在编写代码前,请先阅读相关的参考文件。

如何使用本技能

  1. 1. 识别用户正在构建的内容(参见下方的决策路由表)。
  2. 阅读匹配的references/*.md文件以获取详细指导。
  3. 在您生成的每一段代码中应用核心工程原则。
  4. 当多个领域交叉时(例如Nav2 + ros2_control),请阅读这两个文件。

决策路由表

用户正在做...请阅读
创建工作空间、包或构建配置references/workspace-build.md
编写节点、执行器、回调组
references/nodes-executors.md | | 话题、服务、动作、自定义接口、QoS | references/communication.md | | 生命周期节点、组件加载、组合 | references/lifecycle-components.md | | 启动文件、条件逻辑、事件处理程序 | references/launch-system.md | | tf2、URDF、xacro、robotstatepublisher | references/tf2-urdf.md | | ros2_control、硬件接口、控制器 | references/hardware-interface.md | | 实时约束、PREEMPT_RT、内存、抖动 | references/realtime.md | | Nav2、SLAM、代价地图、行为树 | references/navigation.md | | MoveIt 2、规划场景、抓取管线 | references/manipulation.md | | 相机、激光雷达、PCL、cv_bridge、深度处理 | references/perception.md | | 单元测试、集成测试、launch_testing、CI | references/testing.md | | ros2 doctor、追踪、性能分析、rosbag2 | references/debugging.md | | Docker、交叉编译、车队部署、OTA | references/deployment.md | | Gazebo、Isaac Sim、仿真到实机、usesimtime | references/simulation.md | | SROS2、DDS安全、证书、供应链 | references/security.md | | micro-ROS、MCU/RTOS、XRCE-DDS、rclc | references/micro-ros.md | | 多机器人车队、Open-RMF、DDS发现规模 | references/multi-robot.md | | 消息类型、单位、协方差、坐标系约定 | references/message-types.md | | ROS 1迁移、ros1_bridge、混合操作 | references/migration-ros1.md |

当一个任务跨越多个领域时,请阅读所有相关文件,并通过优先考虑安全性、其次是确定性、最后是简洁性来协调相互冲突的建议。

横切关注点——安全性: 安全性并不仅限于references/security.md。每个领域都应考虑其安全影响:硬件接口需要在认证失败时安全关闭,DDS话题可能需要加密,部署镜像需要供应链验证,车队通信必须使用TLS。在审查任何领域的代码时,请检查数据路径是否跨越了信任边界。

核心工程原则

这些原则适用于您生成的每一个ROS 2制品,无论其领域如何。

1. 发行版感知

始终询问用户的目标ROS 2发行版。关键差异:

特性Foxy (已停止支持)Humble (LTS)Jazzy (LTS)Kilted (非LTS)Rolling
停止支持日期2023年6月 (已结束)2027年5月2029年5月2025年11月滚动更新
Ubuntu
20.04 | 22.04 | 24.04 | 24.04 | 最新版 |
| 默认DDS | Fast DDS | Fast DDS | Fast DDS | Fast DDS | Fast DDS |
| Zenoh支持 | — | — | — | 一级支持 | 一级支持 |
| 类型描述支持 | 否 | 否 | 是 | 是 | 是 |
| 服务自省 | 否 | 否 | 是 | 是 | 是 |
| EventsExecutor | 否 | 否 | 实验性 | 稳定版 (+ rclpy) | 稳定版 (+ rclpy) |
| 默认包格式 | sqlite3 | sqlite3 | MCAP | MCAP | MCAP |
| ros2_control接口 | 不适用 (独立) | 2.x | 4.x | 4.x | 最新版 |
| CMake推荐 | amenttargetdeps | amenttargetdeps | 两者均可 | targetlinklibs | targetlinklibs |

当用户未指定时,默认使用最新的LTS版本(Jazzy)。在Dockerfile、CI和文档中锁定确切的发行版,以确保构建可重现。

2. C++ vs Python 决策

根据节点的角色选择语言,而非个人偏好。

使用 rclcpp (C++) 当:

  • - 节点位于运行频率≥100 Hz的控制回路中
  • 需要确定性内存分配(实时路径)
  • 节点是硬件驱动或控制器插件
  • 需要进程内零拷贝通信

使用 rclpy (Python) 当:

  • - 节点用于编排、监控或参数管理
  • 需要快速原型开发且频繁迭代
  • 大量使用Python原生的ML框架(PyTorch、TensorFlow)
  • 节点不在延迟关键路径上

混合栈是正常的。 一个典型的机器人有C++驱动/控制器和Python编排/监控。注意:component_container(组合)只能通过pluginlib加载C++组件。Python节点作为独立进程运行,但可以共享一个启动文件并通过零开销的主机内DDS进行通信。

进程内通信适用于共享同一进程的任何节点——不仅限于可组合组件。任何在同一进程中实例化并设置useintraprocess_comms(true)的节点都可以使用零拷贝传输。

3. 包结构约定

每个包都应遵循此布局。工作空间内的一致性可减少上手时间,并使CI脚本可移植。

my_package/
├── CMakeLists.txt # 或纯Python包的setup.py
├── package.xml # 格式3,使用标签
├── config/
│ └── params.yaml # 默认参数
├── launch/
│ └── bringup.launch.py # Python启动文件
├── include/my_package/ # C++公共头文件(如果是库)
├── src/ # C++源文件
├── mypackage/ # Python模块(如果是amentpython或混合包)
├── test/ # gtest、pytest、launch_testing
├── urdf/ # URDF/xacro(如果适用)
├── msg/ srv/ action/ # 自定义接口(优先使用专用的_interfaces包)
└── README.md

将接口定义分离到*_interfaces包中,以便下游包可以依赖接口而无需引入实现。

4. 参数规范

  • - 在节点构造函数中声明每个参数,包括类型、描述、范围和默认值——绝不使用未声明的参数。
  • 使用带有FloatingPointRange或IntegerRange的ParameterDescriptor来设置数值边界。参数服务器会在设置时拒绝超出范围的值。
  • 将相关参数分组到命名空间前缀下:controller.kp、controller.ki、controller.kd。
  • 从config/params.yaml加载默认值;允许在启动时覆盖。
  • 对于动态重配置,注册一个setparameterscallback,并在接受新值之前原子性地验证它们。

5. 错误处理理念

  • - 节点不得静默地吞掉错误。以适当的严重级别记录日志,然后采取安全操作(停止运动、请求帮助、转换到错误状态)。
  • 优先使用生命周期节点错误转换,而非临时的布尔标志。
  • 调用服务时,始终显式处理服务不可用和未来超时的情况。
  • 对于硬件驱动,区分瞬态错误(带退避重试)和致命错误(转换到FINALIZED状态并通知操作员)。

6. 服务质量默认值

从这些配置开始,并根据用例进行调整:

| 用例 | 可靠性 | 持久性 | 历史记录 |

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 ros2-engineering-skills-1776059061 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 ros2-engineering-skills-1776059061 技能

通过命令行安装

skillhub install ros2-engineering-skills-1776059061

下载

⬇ 下载 ros2-engineering-skills v1.0.2(免费)

文件大小: 209.11 KB | 发布时间: 2026-4-15 14:13

v1.0.2 最新 2026-4-15 14:13
Version 1.0.2 - WSL testing setup and CI improvements

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部