ros1

Provides design patterns and debugging guidance for ROS1 node, launch, and package development.

Updated Aug 16, 2026
One-click install
npx skills add https://github.com/three1324/yeonjinautomotive --skill ros1-three1324
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ros1
Source: https://github.com/three1324/yeonjinautomotive/tree/main/.claude/skills/ros1
Command: npx skills add https://github.com/three1324/yeonjinautomotive --skill ros1-three1324

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Building ROS1 systems involves many subtle pitfalls—blocking callbacks, misconfigured queues, broken TF trees, and monolithic nodes—that cause hard-to-diagnose runtime failures. This Skill codifies proven design patterns, common failure modes, and debugging workflows so you can write correct ROS1 code the first time. ## Core Features & Use Cases - Node and Topic Design Patterns: Enforces single-responsibility nodes, correct initialization order, proper queue sizes, and latched topics for static data. - Launch Files, TF, and Actionlib: Provides templates for configurable launch files, transform broadcasting/lookup with exception handling, and preemptible action servers. - Debugging and Migration: Covers diagnostic commands (rostopic, rqt_graph, roswtf, rosbag) and a ROS1-to-ROS2 migration checklist. - Use Case: When a rospy subscriber callback blocks other callbacks during heavy computation, apply the documented MultiThreadedSpinner or worker-thread queue pattern to restore responsiveness. ## Quick Start Ask the AI to review my rospy node for common ROS1 pitfalls and suggest fixes for threading, queue sizes, and parameter handling.

Frequently Asked Questions about ros1

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I structure a ROS1 node in Python correctly?

Initialize with rospy.init_node, load parameters first, create publishers before subscribers, and spin with rospy.Rate in a loop. Keep each node single-purpose rather than combining perception, planning, and control in one class.

Why does my rospy callback block other callbacks?

ROS1 uses a single-threaded spinner by default, so a long-running callback blocks all others. Use rospy.MultiThreadedSpinner or offload work to a separate thread fed by a bounded queue.

What queue_size should I use for ROS1 topics?

Use queue_size=1 for high-frequency sensor data like images and point clouds so stale messages are dropped, and around 10 for commands you must not miss. Never use queue_size=0, which is unbounded and can cause memory bloat.

How do I synchronize camera and lidar messages in ROS1?

Use message_filters.ApproximateTimeSynchronizer with a slop tolerance such as 0.05 seconds instead of comparing header timestamps directly. Exact timestamp equality across different sensors almost never occurs.

How do I migrate ROS1 code to ROS2?

Map rospy to rclpy, catkin to colcon, XML launch files to Python launch files, and nodelets to ROS2 components. Migrate leaf nodes first and use the ros1_bridge package to run both stacks during transition.

When should I use nodelets instead of regular ROS1 nodes?

Use nodelets when nodes exchange large data like images or point clouds within the same process, since they pass shared pointers and eliminate serialization overhead. For small messages or cross-machine communication, regular nodes are sufficient.