ROS Robotics
사용 시기
사용자가 다음 주제 중 하나와 관련된 요청을 할 때 이 스킬을 사용하세요:
catkin_ws,colcon_ws,src/CMakeLists.txt,package.xml,setup.py- ROS 1 / ROS 2 패키지 생성, 이전, 빌드, 테스트, 디버깅
launch/launch.py, 파라미터 YAML,URDF/Xacro, RViz, TFtopic/service/action/msg/srv/QoS- 섀시, IMU, LiDAR, 카메라, 위치 추정, SLAM, Navigation2,
ros2_control - Gazebo / Ignition 시뮬레이션, 센서 시뮬레이션,
ros_gz_bridge - Docker 컨테이너화된 ROS 개발,
docker-compose다중 노드 오케스트레이션 - Lifecycle 노드,
rclcpp_components컴포넌트화, 프로세스 내 통신 rosbag2기록 및 재생,mcap, 오프라인 진단- SLAM 매핑 (Cartographer, SLAM Toolbox, ORB-SLAM)
- DDS / QoS 구성,
ROS_DOMAIN_ID, RMW 선택, 다중 머신 네트워킹 - 사용자 정의
msg/srv/action인터페이스 정의 및 생성 - 다중 로봇 시스템, 네임스페이스 격리, 크로스 머신 통신
- MoveIt 2 모션 계획, SRDF, 운동학 플러그인
- ROS 2 CI/CD (GitHub Actions, colcon test, ament_lint)
- Foxglove Studio / PlotJuggler 데이터 시각화 및 오프라인 분석
- MCU / RTOS / UART / CAN /
micro-ROS협업 개발
먼저 할 일
1. 작업 공간 식별
python scripts/detect_ros_workspace.py <workspace-path>
2. 일관성 검사 수행
python scripts/check_ros_workspace_consistency.py <workspace-path>
3. 문제에 따라 최소한의 필수 문서 로드
- ROS 1:
references/ros1-catkin.md - ROS 2:
references/ros2-colcon.md - 혼합 / 이전:
references/interop-and-migration.md - 모델 / TF:
references/robot-description-and-tf.md - 내비게이션:
references/navigation2.md - 제어:
references/ros2-control.md - 임베디드:
references/micro-ros-and-embedded.md - 시뮬레이션:
references/gazebo-simulation.md - Lifecycle / 컴포넌트:
references/lifecycle-and-components.md - DDS / QoS / 네트워킹:
references/dds-qos-networking.md - 기록 재생 / 진단:
references/rosbag-diagnostics.md - SLAM / 매핑:
references/slam-mapping.md - Docker:
references/docker-ros.md - 사용자 정의 인터페이스:
references/custom-interfaces.md - 다중 로봇:
references/multi-robot.md - MoveIt 2:
references/moveit2.md - CI/CD:
references/ros2-cicd.md - 시각화:
references/foxglove-visualization.md - 문제 해결:
references/debug-playbooks.md - 검토:
references/review-checklist.md
반드시 지켜야 할 원칙
- 빌드 시스템을 먼저 식별한 후 코드를 수정하세요.
package.xml/CMakeLists.txt일관성을 먼저 수정한 후 리팩토링을 논의하세요.- TF, 타임스탬프, 프레임, 단위를 먼저 확인한 후 알고리즘을 의심하세요.
- 먼저 증거 사슬을 확보한 후 수정하세요: 빌드 출력, 토픽, TF, 파라미터, 로그는 검증 가능해야 합니다.
- ROS 1 → ROS 2는 먼저 브리징 또는 계층화하고, 한 번에 모두 다시 작성하지 마세요.
- MCU /
micro-ROS의 경우 ROS 그래프 진입이 실제로 필요한지 먼저 판단하세요.
일반적인 작업 처리 방식
패키지 추가 또는 수정
- 패키지 유형을 먼저 판단:
catkin,ament_cmake,ament_python - 종속성 선언을 먼저 추가하고, 빌드 로직을 추가한 다음, 설치 규칙을 추가하세요.
- 사용자 정의
msg/srv/action은 생성 순서와 종속성 순환을 우선 확인하세요 (자세한 내용은references/custom-interfaces.md참조).
빌드 실패
- 먼저
rosdep실행 - 그다음
package.xml과 빌드 스크립트 확인 - 환경이 올바르게 source 되었는지 확인
- 시스템 종속성, ABI, 배포판 호환성 확인
정상 실행되지만 로봇 동작이 잘못됨
- launch, namespace, remap, 파라미터를 먼저 확인
- 그다음 토픽 이름, 주파수, 타임스탬프, 단위,
frame_id확인 - TF가 단일 루트인지, 정적/동적이 구분되어 있는지 확인
- 마지막으로 알고리즘 자체를 의심
Nav2 / ros2_control
- Navigation2는
/cmd_vel경로, 위치 추정 품질, 제어 주파수 및 섀시 단위를 우선적으로 확인 ros2_control은 하드웨어 인터페이스 유형, 컨트롤러 YAML, 읽기/쓰기 주기 및 활성 상태를 우선 확인
MCU / micro-ROS
- Linux 측 브리지 노드가 충분한지 먼저 판단
- MCU가 ROS 2 그래프에 반드시 진입해야 하는 경우에만
micro-ROS고려 - 바이트 순서, 체크섬, 타임아웃, 재연결, 시간 소스 및 연결 끊김 보호를 엄격히 확인
반패턴
- 동일한 패키지에
catkin과ament혼용 CMakeLists.txt만 수정하고package.xml은 수정하지 않음- TF, 타임스탬프, 단위, 좌표축 정의 무시
- 드라이버, 프로토콜, 필터링, 제어, 진단을 모두 하나의 큰 노드에 넣음
- ROS 1 → ROS 2 이전 시 API 교체만 하고 시스템 검증은 수행하지 않음
출력 요구 사항
이 스킬을 사용하여 작업을 처리할 때는 다음을 우선 출력하세요:
- 현재 작업 공간 및 패키지 유형 판단
- 주요 근거 및 가정
- 수정 사항 및 이유
- 최소 빌드 / 테스트 / 실행 명령어
- 위험 요소 및 회귀 검사 지점