ROS1 开发指南
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/ros1-development-49d3。
技能介绍
它解决什么问题
ROS1 项目的故障往往不来自算法,而来自基础设施:职责过载的节点、队列配置不当的 topic、断裂的 TF 树、阻塞在回调里的线程。这个技能把这类高频问题的设计取舍和排查路径整理成一套工程约定,覆盖包结构、消息与服务定义、launch 文件编写,以及 topic / service / action 通信链路的调试。
核心能力与关键步骤
- 节点设计:坚持单一职责,每个节点只做一件事;初始化遵循统一的节点初始化模式,避免在构造函数里注册订阅和服务。
- 话题设计:明确命名约定,按数据频率和重要性选择队列大小;变化缓慢的数据交给 latched topic,而不是让调用方反复订阅。
- TF 变换树:每帧有且只有一个父帧,静态变换使用
static_transform_publisher,动态变换保持稳定发布频率,时间戳必须正确。 - 长任务处理:需要反馈或可取消的长时间任务交给
actionlib,而不是把逻辑硬塞进 service。 - 零拷贝传输:同一进程内传递图像、点云这类大块数据时使用 nodelet,跳过序列化开销。
- 调试与迁移:提供调试工具清单,以及一份 ROS1 → ROS2 的逐项对照(
rospy→rclpy、catkin_make→colcon build、全局参数服务器 → 节点级参数、nodelet → ROS2 Components 等)。迁移从叶子节点向内推进,过渡期用ros1_bridge并行运行两套栈。
适用边界
它提供的是设计约定和排查路径,不替代编译链与运行时环境。迁移清单只列出关键差异,具体包的改造仍需逐项验证。把参数服务器当作临时黑板存状态属于明确的反模式,不在推荐范围内。
使用场景
- 维护 ROS1 包时按单一职责拆分节点,并统一节点初始化模式。
- 调试 topic 通信时调整命名、队列大小,并为低频数据改用 latched topic。
- 排查 TF 变换问题时确认每帧唯一父帧、静态发布器与时间戳。
- 规划 ROS1 到 ROS2 迁移时从叶子节点向内改造,并用 ros1_bridge 并行运行。
适合人员
- 机器人算法工程师,需要设计 ROS1 节点职责、topic 与 action 接口。
- 机器人系统集成者,负责配置 catkin 工作区、launch 文件和 TF 变换。
- 从 ROS1 迁移到 ROS2 的工程师,需要逐项核对 API 与构建系统差异。