ROS2项目诊断与排除

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

ROS2 运行程序/工程体检与问题诊断,覆盖 humble、jazzy、lyrical 三个版本,静态检查工程文件 + 动态分析运行态信息,输出可对外分享的分级问题报告。当用户提到检查 ROS2 工程、ROS2 程序报错/跑不起来、排查 ROS2 问题、ROS2 哪里有问题、ROS2 build 失败、分析 ROS2 日志、ros2 doctor 分析,或上传 ROS2 工程文件/日志希望定位问题时触发。不适用于非 ROS2 项目、ROS1、编写新代码、纯 ROS2 知识问答。

一句话选型结论

按资料字段整理

ROS2项目诊断与排除是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_580d2d1c/ros2-program-checker
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_580d2d1c仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791625176
正文体量10.4 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
ROS2项目诊断与排除当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

10.4 KB
模型实际读到的说明书原文,来自技能仓库

ROS2 工程体检与问题诊断

概述

对 ROS2 工程项目(workspace)做全方位体检,识别工程建设各环节的问题:环境配置、包结构、构建配置、代码质量、运行通信。覆盖 humble / jazzy / lyrical 三个版本,支持 Python 与 C++ 节点。最终输出带严重级别和修复建议的诊断报告,既可用于自己排查,也可直接对外分享。

你的工作方式

  1. 证据优先:每个问题都必须有具体支撑——文件内容、行号、命令输出或日志片段。没有证据不下结论。
  2. 分级报告:问题按严重级别分级(🔴 错误 / 🟡 警告 / 🟢 提示),让读者一眼看到优先级。
  3. 先静态后动态:先检查已有工程文件(不需要用户额外操作),再按需指导用户补充运行态信息。
  4. 版本意识:检查时始终以目标 ROS2 版本为基准,善用 references/version-matrix.md 对照版本差异,避免用旧版本经验误判新版本行为。
  5. 定位优先于修复:用户要的是"哪里有问题"——先给出准确位置和原因,再给修复建议;修复建议要具体到文件、代码或命令。

检查流程

Phase 1 需求与信息收集 → Phase 2 静态检查(工程文件)
→ Phase 3 动态检查(运行态,可选)→ Phase 4 版本特定检查
→ Phase 5 汇总诊断报告 →(用户补充信息后)复查更新

Phase 1:需求与信息收集

1. 判断检查类型,据此决定流程走向:

用户情况 检查类型 流程
上传了工程文件/目录 静态为主 直接进入 Phase 2
描述运行现象 + 贴了日志/命令输出 动态为主 先收集素材,进入 Phase 3
有工程文件也有运行现象 混合(最常见) 完整流程
只有现象描述,无任何素材 需先收集 指导用户提供素材(见下)

2. 确认目标版本(humble / jazzy / lyrical),来源优先级:
- 用户明确说出;
- 工程文件线索:package.xml 依赖范围、setup.py/CMakeLists.txt 中的版本约束、launch 文件;
- 运行态输出:ros2 doctor --report 或 echo $ROS_DISTRO;
- 无法确定时,检查中同时标注"此问题在三个版本下的表现差异",不要卡住流程。

3. 收集素材,按可用性取用:
- 工程文件:workspace 目录结构、各包的 package.xml、CMakeLists.txt、setup.py/setup.cfg、launch 文件、Python/C++ 源码;
- 运行态信息:ros2 doctor --report 输出、ros2 node/topic/service/action list、tf 树、错误日志(~/.ros/log/)、colcon build 日志;
- 素材不足时,提供 scripts/collect_info.sh 给用户:让其在目标机器上运行,把生成的报告文本传回来。这个脚本会自动收集环境与运行态信息,比自己逐个贴命令省事得多。

> 确认门:如果用户目标版本不明确,或素材明显不足以支撑诊断,先花 1 次提问确认,不要基于猜测长篇分析。

Phase 2:静态检查(工程文件)

按 references/checklist.md 的静态检查清单逐项检查。核心检查面:

  • workspace 结构:src 目录、包目录命名(ROS2 要求小写+下划线)、install/ 索引与 src 是否一致;
  • package.xml:包名/版本/描述合法性、<depend>/<build_depend>/<exec_depend> 依赖声明是否与实际 import/include 一致、格式版本;
  • 构建配置:
  • C++:CMakeLists.txt 的 find_package、ament_target_dependencies、install(DIRECTORY ...) 是否齐全;
  • Python:setup.py 的 entry_points 是否声明了 console_scripts、setup.cfg 的 script 目录、package.xml 是否声明 exec_depend 于 Python 依赖;
  • launch 文件:XML/Python 语法、节点名/命名空间/参数/remap 引用是否与节点实现一致、executable 名称是否对应入口点;
  • 代码常见问题(Python + C++ 都要查):见 references/common-issues.md 第 5 节"代码类"。

静态检查发现的每个问题记录为:位置(文件:行)→ 问题 → 依据 → 影响 → 修复建议。

Phase 3:动态检查(运行态)

静态检查完成后,如果问题集中在运行/通信层面,或用户提供了运行现象,进行动态检查:

指导用户执行(或分析用户已提供的输出):

  1. 环境体检:ros2 doctor、ros2 doctor --report——检查平台/网络/环境/RMW 配置;
  2. 节点状态:ros2 node list、ros2 node info <node>——节点是否存活、话题/服务是否注册;
  3. 话题通信:ros2 topic list -t、ros2 topic info <topic> -v、必要时 ros2 topic echo——重点核对:发布者/订阅者配对、消息类型一致、QoS 兼容;
  4. 服务与动作:ros2 service list、ros2 action list——客户端/服务端是否配对;
  5. tf 树:ros2 run tf2_tools view_frames 或 ros2 run tf2_ros tf2_echo <a> <b>——tf 树不允许闭环、每帧仅一个父帧,断裂会导致下游感知/控制失效;
  6. 日志:~/.ros/log/ 下最近的 run 日志,找异常堆栈。

动态检查的分析要点与常见故障模式见 references/common-issues.md。注意:ros2doctor 只做环境体检、不查代码逻辑,别把它当全部。

Phase 4:版本特定检查

对照 references/version-matrix.md,做三项核对:

  1. 环境匹配:目标版本 ↔ Ubuntu/Python 版本是否匹配(例如 humble 装到 Ubuntu 24.04 上就是典型的配置错位);
  2. API 差异:工程用到的 API 在目标版本下的可用性/行为差异(特别是 humble→jazzy→lyrical 迁移时的断裂点);
  3. 已知问题:目标版本的已知缺陷与规避方式,若与用户现象吻合,直接给出结论。

Phase 5:汇总诊断报告

按下方模板输出一份完整报告,同时直接在对话中给出最关键结论(3 条以内),完整报告作为附件或代码块输出。

诊断报告模板

报告设计为可对外分享:结构固定、术语自洽(首次出现的缩写给出全称)、每条问题可独立阅读。始终使用以下模板:

# ROS2 工程体检报告

- 检查时间:YYYY-MM-DD
- 目标版本:humble / jazzy / lyrical
- 检查范围:静态检查(工程文件) / 动态检查(运行态) / 混合
- 检查对象:<workspace 或系统简述>

## 执行摘要

共发现 **X** 个问题:🔴 错误 **Y** 个、🟡 警告 **Z** 个、🟢 提示 **W** 个。

最关键的问题:<1-3 条,一句话各>

## 问题清单

### 🔴 错误(必须修复,否则影响构建或运行)

| # | 位置 | 问题 | 影响 | 修复建议 |
|---|------|------|------|----------|
| 1 | 文件:行 | ... | ... | ... |

### 🟡 警告(建议修复,可能导致不稳定或潜在故障)

| # | 位置 | 问题 | 影响 | 修复建议 |
|---|------|------|------|----------|

### 🟢 提示(优化建议,不影响功能)

| # | 位置 | 问题 | 建议 |
|---|------|------|------|

## 版本兼容性说明

<目标版本相关的环境匹配、API 差异、迁移注意点>

## 检查覆盖范围

- ✅ 已检查:<列出已检查的层面>
- ⬜ 未检查:<列出因缺素材未能检查的层面,以及如何补齐>

严重级别定义:
- 🔴 错误:直接导致构建失败、节点崩溃、通信完全中断——必须修复;
- 🟡 警告:当前能用但存在隐患——依赖缺失、QoS 不匹配、资源泄漏、规范不符;
- 🟢 提示:优化项——性能、可维护性、最佳实践。

复查与多轮修改

用户补充新素材或修复部分问题后,只复查受影响的检查面,更新报告中对应条目,并在执行摘要中标注"第 N 轮复查"。不要每轮都重新输出完整旧报告。

工作流示例

示例 1:混合检查(用户上传工程 + 报告 build 失败)
> 用户:"我的 ROS2 工程 build 失败了,帮我看看哪里有问题"并上传 workspace。
1. Phase 1:目标版本——从 package.xml 依赖和用户描述判断(假设 jazzy);
2. Phase 2:静态检查——发现 CMakeLists.txt 中 ament_target_dependencies 缺少 rclcpp,package.xml 缺少对应 <depend>;同时发现 launch 文件引用的可执行名与入口点不一致;
3. Phase 3:动态检查——指导用户运行 colcon build 并回传日志,确认第一个错误即缺失依赖报错,与静态发现吻合;
4. Phase 4:版本检查——确认所用 API 在 jazzy 无变化,排除版本因素;
5. Phase 5:输出报告,🔴 错误 2 个(构建配置、依赖声明),🟡 警告 1 个(launch 引用),每条带修复代码。

示例 2:动态为主(用户贴 ros2 doctor 输出 + 现象)
> 用户:"两个机器人的节点互相收不到数据,ros2 doctor 有网络警告"。
1. Phase 1:动态为主,素材 = doctor 输出 + 现象;
2. Phase 3:分析 doctor 输出——网络模块告警;指导用户确认 ROS_DOMAIN_ID 和 RMW_IMPLEMENTATION 是否一致;
3. Phase 4:版本矩阵核对——确认两者版本一致;
4. Phase 5:报告定位为多机通信配置问题(domain id / RMW 不一致或防火墙),给出修复命令。

资源目录

scripts/

collect_info.sh —— 在目标机器上运行的信息收集脚本,自动汇总环境与运行态信息。用户素材不足时提供给用户使用。

references/

  • version-matrix.md —— humble/jazzy/lyrical 三版本差异对照表(环境、工具链、API、迁移注意点),Phase 4 使用;
  • common-issues.md —— 常见问题模式库(按症状分类:环境/构建/运行/代码/迁移),Phase 2-3 使用;
  • checklist.md —— 静态检查项与动态检查命令清单,Phase 2-3 使用。

assets/

本技能无需输出模板以外的静态资源,目录已删除。

常见问题

5 问
答案由本站依据条目字段整理
ROS2项目诊断与排除怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_580d2d1c/ros2-program-checker。安装方式为未标注。装完刷新技能列表或重开客户端。

ROS2项目诊断与排除支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

ROS2项目诊断与排除权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

ROS2项目诊断与排除收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

ROS2项目诊断与排除用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。