ROS2(Humble / Iron / Jazzy 등) 기반 로봇 애플리케이션 개발, 디버깅 및 시뮬레이션 시 자주 쓰이는 필수 터미널 CLI 명령어 모음집입니다.
1. 워크스페이스 빌드 및 환경 설정 (Colcon & Environment)
빌드 및 의존성 관리
# 의존성 패키지 자동 설치
rosdep update
rosdep install --from-paths src --ignore-src -y
# 워크스페이스 전체 빌드 (소스 변경 사항 즉시 반영을 위한 심링크 빌드 권장)
colcon build --symlink-install
# 특정 패키지만 선택 지정 빌드
colcon build --packages-select <package_name> --symlink-install
# 빌드 결과 환경변수 소싱
source install/setup.bash
2. 노드 관리 (ros2 node)
실행 중인 ROS2 노드(Node)의 상태를 점검합니다.
# 실행 중인 모든 노드 목록 조회
ros2 node list
# 특정 노드의 상세 정보 (게시/구독 토픽, 서비스, 파라미터 등) 조회
ros2 node info /my_node_name
3. 토픽 관리 (ros2 topic)
데이터 스트림(Topic)을 발행, 수신, 분석합니다.
# 실행 중인 토픽 목록 조회 (메시지 타입 포함 -t)
ros2 topic list -t
# 토픽 데이터 실시간 수신 출력
ros2 topic echo /chatter
# 토픽 발행 속도(Hz) 및 대역폭(Bandwidth) 측정
ros2 topic hz /scan
ros2 topic bw /camera/image_raw
# 토픽 상세 정보 (Publisher/Subscriber 개수, QoS 등) 조회
ros2 topic info /chatter --verbose
# 커맨드라인에서 토픽 직접 발행 (Publish)
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.5, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.2}}"
# 10Hz 주기로 지속 발행 (-r 10)
ros2 topic pub -r 10 /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.2}}"
4. 서비스 관리 (ros2 service)
요청/응답(Request/Response) 방식의 서비스 통신을 점검하고 호출합니다.
# 활성화된 서비스 목록 조회
ros2 service list
# 특정 서비스의 타입 확인
ros2 service type /clear
# 터미널에서 서비스 직접 호출 (Call)
ros2 service call /spawn turtlesim/srv/Spawn "{x: 2.0, y: 2.0, theta: 0.0, name: 'turtle2'}"
5. 파라미터 관리 (ros2 param)
노드의 동적 설정값(Parameter)을 확인하고 실시간으로 변경합니다.
# 노드별 파라미터 목록 조회
ros2 param list
# 특정 파라미터 값 읽기
ros2 param get /turtlesim background_b
# 실행 중인 노드의 파라미터 값 즉시 변경
ros2 param set /turtlesim background_b 150
# 노드의 전체 파라미터를 YAML 파일로 덤프/저장
ros2 param dump /turtlesim > turtlesim_params.yaml
6. 액션 관리 (ros2 action)
장시간 수행되는 목표(Goal/Feedback/Result) 기반 통신을 확인합니다.
# 실행 중인 액션 서버/클라이언트 목록 조회
ros2 action list
# 특정 액션 상세 정보 확인
ros2 action info /turtle1/rotate_absolute
# 액션 목표(Goal) 직접 전송 및 결과 확인
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: 1.57}"
7. 인터페이스(메시지 타입) 조회 (ros2 interface)
# 메시지/서비스/액션 구조 상세 보기
ros2 interface show geometry_msgs/msg/Twist
ros2 interface show sensor_msgs/msg/LaserScan
# 패키지 내의 모든 인터페이스 목록 확인
ros2 interface package sensor_msgs
8. 런치 및 패키지 실행 (ros2 run & ros2 launch)
# 단일 노드 실행
ros2 run turtlesim turtlesim_node
# 런치 파일 실행 (파라미터 전달 가능)
ros2 launch my_robot_bringup robot.launch.py use_sim_time:=true
9. 로깅 및 녹화 / 재생 (ros2 bag)
센서 데이터 및 토픽 스트림을 녹화하거나 재실행합니다.
# 특정 토픽 파일로 녹화
ros2 bag record -o my_bag_data /scan /tf /cmd_vel
# 모든 토픽 녹화 (-a)
ros2 bag record -a -o all_topics_bag
# 녹화된 Bag 파일 정보 확인
ros2 bag info my_bag_data
# 녹화 데이터 재생
ros2 bag play my_bag_data
10. 유용한 환경 변수 (Environment Variables)
# 멀티 로봇/컴퓨터 도메인 격리 ID (0 ~ 232)
export ROS_DOMAIN_ID=11
# 로컬PC 내부에서만 통신하도록 제한 (외부 망 유출 방지)
export ROS_LOCALHOST_ONLY=1
# 사용 DDS 미들웨어 변경 (FastDDS / CycloneDDS)
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
💡 요약 팁
ros2 <command> -h명령어를 활용하면 사용 가능한 부가 옵션을 빠르게 확인할 수 있습니다.- 토픽 echo가 동작하지 않을 때는
ros2 topic info <topic> --verbose명령어로 QoS Mismatch 여부를 점검하세요.