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 여부를 점검하세요.