一键导入
ros2-debugging
ROS2 debugging with proper TF buffer timeouts. Use when checking transforms, topics, nodes, services, or tmux-managed ROS2 systems.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
ROS2 debugging with proper TF buffer timeouts. Use when checking transforms, topics, nodes, services, or tmux-managed ROS2 systems.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Current Moleworks Terra trenching runbook for full autonomous Beam6-style trench execution in simulation or on the robot. Use when investigating or running the two-stage flange/bottom trench flow, generate_trench_sequence_plans.py, beam6_sequence_stage.launch.py, BASE_CONTROL target registration, mesh_to_excavation_grid_map.py, workspace planner trench-axis metadata, Terra behavior-tree activation, Newton or Isaac/Terra simulation bringup, robot bringup, and 400 mm tool handoff.
Read recent Google Chat context, draft or send a reply in the correct DM or space, download collaborator attachments such as timesheets or PDFs, and handle simple meeting coordination by creating or updating a Google Calendar invite and posting the Meet link back in Chat. Use when Lorenzo asks to read a collaborator's recent messages, understand chat context before replying, send a Google Chat reply through the Chat API, pull a PDF or timesheet out of Chat, or create a meeting from a chat exchange.
Replay split DIG bags in the `moleworks_ros` container with bag TF, live self-filter, live elevation mapping, live excavation mapping, and Foxglove. Use when reviewing DIG episodes from `sensors/`, `state/`, `commands/`, `lidar/`, and optional `elevation_map/` bags.
Finalize RSL student grading and offboarding. Use when Lorenzo asks to find a student's grading sheet, extract or submit a grade, update the RSL student-project tracker like the onboarding workflow, request eDoz grade entry from admin staff, mark offboarding fields such as completed/report/grading/source/access-revoked only with evidence, or send a short Google Chat status reply after the handoff.
Validate the Newton + ROS Nav2 driving stack in a clean tmux session after bringup. Use when the user wants a repeatable navigation check in Newton sim, including health checks for the bridge/model/drive path and the lateral-shift golden test.
Start or restart the Moleworks ROS2 stack using the Newton simulator in the default moleworks_ros runtime shell, assuming the current shell is already inside the target container unless the user says otherwise. Use when you need a clean tmux layout for Newton bridge, robot/TF/RViz, perception (elevation + excavation mapping), optional Foxglove bridge, an isolated bridge-only validation stack on a specific ROS domain, or Terra failure capture and resume from saved checkpoints in Newton simulation, all with use_sim_time:=true.
| name | ros2-debugging |
| description | ROS2 debugging with proper TF buffer timeouts. Use when checking transforms, topics, nodes, services, or tmux-managed ROS2 systems. |
Keep this skill generic. Do not turn it into a project-specific launch runbook.
CRITICAL: Always use long timeouts (10-15 seconds minimum).
Tools like tf2_echo need 1-2 seconds to initialize their TF buffer before they can query transforms.
# CORRECT: Long timeout allows TF buffer to initialize
timeout 15 bash -lc 'ros2 run tf2_ros tf2_echo map BASE 2>&1' | head -20
# WRONG: Short timeout often fails before transform data appears
timeout 3 ros2 run tf2_ros tf2_echo map BASE
Why this matters:
tf2_echo needs time to initialize its TF buffer.head is fine if the timeout is long enough.If the stack namespaces TF topics, your debug node must join that namespace or remap the TF topics. Example for a Moleworks-style stack that publishes /mole/tf and /mole/tf_static:
timeout 15 bash -lc 'ros2 run tf2_ros tf2_echo map BASE_GRAV --ros-args -r __ns:=/mole 2>&1' | head -20
For ad-hoc Python probes using TransformListener, create the node inside the same namespace as the robot stack; otherwise you can get a false no tf even though the transform graph is healthy.
On crowded robot PCs, a fresh-shell ros2 topic list can look empty even when the
system is running. Treat that as a weak signal. Prefer direct checks for the
specific topic/service/node, longer timeouts, TF evidence, tmux process/logs, and
publisher ownership before restarting anything.
echo "ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-unset}"
ros2 topic list
timeout 10 ros2 topic hz /your_topic
timeout 10 ros2 topic echo /your_topic --once
ros2 topic info /your_topic --verbose
If you are running multiple ROS stacks on different domains:
ROS_DOMAIN_ID in the active shell before trusting any graph outputros2 node list
ros2 node info /your_node
ros2 service list
ros2 service call /service_name std_srvs/srv/Empty "{}"
ros2 param list /your_node
ros2 param get /your_node parameter_name
ros2 run tf2_tools view_frames
When running ROS commands in tmux, keep the pane alive long enough to inspect failures:
tmux new-window -n ros2
tmux send-keys -t ros2 "bash -lc 'ros2 launch your_package your_launch.py; exec bash -i'" C-m
sleep 0.5
tmux capture-pane -p -S -200 -t ros2
For multi-domain debugging, make the tmux target itself identify the domain, for example:
tmux new-session -d -s ros123_debug
tmux send-keys -t ros123_debug "bash -lc 'export ROS_DOMAIN_ID=123; ros2 topic list; exec bash -i'" C-m
moleworks_ros, also use newton-ros-parity.