본문으로 건너뛰기

ROS 기초 명령어

ROS 2 명령어로 노드를 실행하고, 노드가 주고받는 메시지를 확인해 봅니다.

명령어 구조

ROS 2 명령어는 대부분 ros2 <기능> <명령> 형태로 사용합니다. 이번 장에서는 다음 명령어를 사용합니다.

  • ros2 run <패키지 이름> <노드 이름>: 노드 실행
  • ros2 launch <패키지 이름> <Launch 파일 이름>: 여러 노드를 한 번에 실행(뒤에서 학습)
  • ros2 topic list: 토픽 목록 확인
  • ros2 topic echo <토픽 이름>: 토픽의 메시지 확인
  • ros2 topic info <토픽 이름>: 토픽 정보 확인

명령어 사용법이 궁금할 때는 뒤에 --help를 붙입니다. 예를 들어 ros2 topic --help를 입력하면 관련 도움말을 볼 수 있습니다.

노드 실행 - ros2 run

ros2 run <패키지 이름> <노드 이름>

노드를 실행하는 명령입니다. 먼저 ROS 2에서 제공하는 예제 노드인 talker를 실행해 보겠습니다.

$ ros2 run demo_nodes_py talker
[INFO] [1782712789.373064303] [talker]: Publishing: "Hello World: 0"
[INFO] [1782712790.356590512] [talker]: Publishing: "Hello World: 1"
[INFO] [1782712791.356629429] [talker]: Publishing: "Hello World: 2"

demo_nodes_py 패키지의 talker 노드를 실행했습니다. 화면에 Hello World 메시지가 계속 출력되는 것을 볼 수 있습니다.

이제 메시지를 수신하는 listener를 실행해 보겠습니다. talker가 실행 중인 터미널은 그대로 둔 상태에서 새 터미널을 열고 다음 명령을 입력합니다.

$ ros2 run demo_nodes_py listener
[INFO] [1782712914.854435363] [listener]: I heard: [Hello World: 8]
[INFO] [1782712915.840134572] [listener]: I heard: [Hello World: 9]
[INFO] [1782712916.841218739] [listener]: I heard: [Hello World: 10]
[INFO] [1782712917.844664240] [listener]: I heard: [Hello World: 11]
[INFO] [1782712918.837637240] [listener]: I heard: [Hello World: 12]
[INFO] [1782712919.837761574] [listener]: I heard: [Hello World: 13]

listenertalker가 보내는 메시지를 받는 노드입니다. talker가 보낸 Hello World 메시지가 listener에도 나타나는 것을 확인할 수 있습니다.

노드를 종료할 때에는 Ctrl+C를 입력합니다.

Jun-29-2026 15-08-26

토픽 목록 확인 - ros2 topic list

현재 사용 중인 토픽의 이름을 보여주는 명령입니다. 먼저 앞 단계에서 실행한 모든 노드를 종료한 뒤 다음 명령을 입력합니다.

$ ros2 topic list
/parameter_events
/rosout

직접 노드를 실행하지 않아도 ROS 2가 기본적으로 사용하는 두 토픽이 표시됩니다.

  • /parameter_events: 노드의 설정값이 바뀐 내용을 전달
  • /rosout: 노드가 출력한 로그를 전달

다시 talker 노드를 실행하고, 새 터미널에서 ros2 topic list를 입력합니다.

$ ros2 topic list
/chatter
/parameter_events
/rosout

이번에는 /chatter 토픽이 추가되었습니다. talker는 이 토픽을 통해 Hello World 메시지를 보냅니다.

토픽 메시지 확인 - ros2 topic echo

ros2 topic echo <토픽 이름>

토픽으로 전달되는 메시지를 화면에 보여주는 명령입니다. talker가 실행 중인 상태에서 /chatter 토픽을 확인해 보겠습니다.

$ ros2 topic echo /chatter
data: 'Hello World: 7'
---
data: 'Hello World: 8'
---
data: 'Hello World: 9'
---

data 뒤에 talker가 보낸 메시지가 표시됩니다. ---는 각 메시지를 구분하는 선입니다. 확인을 마쳤다면 Ctrl+C로 종료합니다.

토픽 정보 확인 - ros2 topic info

ros2 topic info <토픽 이름>

토픽이 어떤 데이터를 전달하는지, 몇 곳에서 보내고 받는지 보여주는 명령입니다. talker만 실행한 상태에서 새 터미널을 열고 다음 명령을 입력합니다.

$ ros2 topic info /chatter
Type: std_msgs/msg/String
Publisher count: 1
Subscription count: 0
  • Type: 전달하는 데이터의 종류
  • Publisher count: 메시지를 보내는 곳의 수
  • Subscription count: 메시지를 받는 곳의 수

/chatter는 문자열을 전달하는 std_msgs/msg/String 타입을 사용합니다. 현재 talker 한 곳에서 메시지를 보내고 있으며, 메시지를 받는 노드는 없다는 뜻입니다. listener를 실행하면 Subscription count가 1로 바뀝니다.

더 자세한 정보가 필요하면 명령어 뒤에 -v를 붙입니다.

$ ros2 topic info /chatter -v