Skip to content
Development
Skill

/ros2-troubleshooting

Diagnose ROS 2 Jazzy faults that reading the code cannot settle: QoS mismatch, sensor-mount and frame errors (REP 103/105), and odometry calibrated against CAD instead of the floor. Ships four runnable pass/fail checks.

From plugin
claude-ros2-skills
192 skills
Install
$ npx -y skills add Leehyunbin0131/claude-ros2-skills --skill ros2-troubleshooting --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/ros2-troubleshooting

Context preview

The summary Claude sees to decide when to auto-load this skill.

Diagnose ROS 2 Jazzy faults that reading the code cannot settle: QoS mismatch, sensor-mount and frame errors (REP 103/105), and odometry calibrated against CAD instead of the floor. Ships four runnable pass/fail checks.

SKILL.md

ros2-troubleshooting.SKILL.md
name: ros2-troubleshooting
description: "Diagnose ROS 2 Jazzy faults that reading the code cannot settle: QoS mismatch, sensor-mount and frame errors (REP 103/105), and odometry calibrated against CAD instead of the floor. Ships four runnable pass/fail checks."

ROS 2 troubleshooting

Most of this skill is scripts that turn a suspicion into an exit code. Run one before reasoning about the symptom.

Bundled checks

`scripts/` sits next to this file — resolve the path from this skill's own directory, not the user's CWD. Under a plugin install that is `${CLAUDE_PLUGIN_ROOT}/skills/ros2-troubleshooting/scripts/`.

They are plain scripts: invoke with `python3` and a real path. There is no package to `ros2 run`, and inventing one is a known failure mode. Exit code **0 = PASS, 1 = FAIL, 2 = no data**. Tell the user the command you ran.

source /opt/ros/jazzy/setup.bash
python3 <this-skill>/scripts/check_qos_compat.py --topic /scan

| Script | Answers | | :--- | :--- | | `check_qos_compat.py --topic /scan` | Why a healthy publisher delivers nothing to this subscriber | | `check_tf_tree.py --sensors laser_frame,imu_link` | Does `map->odom->base_link` resolve, and does each sensor's mount RPY match the hardware | | `check_imu_gravity.py [--topic /imu/data]` | Is the IMU mounted the way the URDF claims — gravity ~+9.81 on +Z at rest | | `check_odom_direction.py [--topic /odom]` | Does odometry agree with the direction the robot physically moved |

`check_tf_tree.py` prints `VERIFY PHYSICALLY` for any ~180° roll or yaw **even when that mounting is deliberate**. It asks for a comparison against the hardware; it is not a verdict. Report it that way.

References

Load the one the symptom points at.

  • **`references/frames.md`** — REP 103/105 axis conventions, and the

misalignment symptoms that follow from getting them wrong. `CLAUDE.md` treats this file as ground truth for any frame or TF question.

  • **`references/runtime.md`** — what a QoS mismatch actually looks like on

Jazzy, the two other policies that fail the same way, and why `ros2 topic echo` cannot detect any of them.

  • **`references/calibration.md`** — correcting `diff_drive_controller` wheel

radius and separation against a tape measure, in the order that works. Read when odometry is consistent but wrong by a ratio.

Read more
Ships withclaude-ros2-skills

Claude Code skills for ROS 2 Jazzy — establish the unknowns first, verify against the installed system, prove the result ran.

Get the whole plugin
Stats
19
Stars
3
Forks
Maintained
Maintenance
Python
Language
Apache-2.0
License
1mo ago
Last commit
2mo ago
Created

Repo: Leehyunbin0131/claude-ros2-skills

Other skills on claude-ros2-skills.