[ROS] ROS Node와, 관련 명령어를 알아보자

HY K·2024년 8월 8일

ROS1

목록 보기
10/34

이번에는 ROS의 노드와 관련 명령어에 대해서 알아보자.

💡 ROS 노드(node)란?
ROS에서의 노드는 최소 단위의 실행 가능한 프로그램 혹은 프로세스라고 이해하면 된다. ROS의 최소 단위로 노드가 모여서 패키지를 구성하고, 패키지가 모여서 메타-패키지를 구성하게 된다.

ROS 노드 관련 명령어에 대해서 알아보자.

💡 전제조건
roscore를 당연히 실행해야 한다. 노드 정보를 등록하고, 노드 간의 상호작용을 관제하기 위해서는 말이다. 그리고 rosrun을 통해서 node를 실행시켜야 한다. 그래야 node 관련 정보 등을 확인 가능하다.

  1. rosnode list: 활성화 된 노드 목록 확인
$ rosnode list

roscore에 연결된 모든 노드의 목록을 확인할 수 있다.

  1. rosnode ping [노드이름]
$ rosnode ping <nodename>

지정한 노드와의 연결 테스트를 할 수있다. 만약 연결이 되어있지 않는다면 오류 메시지가 출력된다.

  1. rosnode info [노드이름]
$ rosnode info <nodename>

지정한 노드의 정보를 확인 가능하다. 토픽 발행/구독, 서비스, 노드 실행 URI 등에 대한 정보가 출력된다.

  1. rosnode machine [PC 이름 혹은 IP]
$ rosnode machine <PC_name or IP>

지정된 특정 PC 혹은 단말기에서 작동 중인 노드의 목록을 확인 가능하다.

  1. rosnode kill [노드이름]
$ rosnode kill <node_name>

실행 중인 노드를 종료하는 명령어이다. 노드가 실행된 터미널 창에서 Ctrl+c를 입력하여 직접 노드를 종료할 수도 있지만, kill 명령을 통해서 종료할 수도 있다. 이 명령어를 사용하면 노드 실행 터미널에서 경고 메시지가 출력되면서 노드가 종료된다.

  1. rosnode cleanup
$ rosnode cleanup

연결 정보가 확인되지 않는 유령 노드의 등록 정보를 삭제한다. 예기치 못한 일로 노드가 비정상적 종료되는 경우, 이 명령어를 통해 연결 정보가 끊어진 노드를 목록에서 삭제하게 된다. roscore를 중시했다가 재실행할 필요가 없기 때문에 유용하게 사용된다.

profile
로봇, 드론, SLAM, 제어 공학 초보

0개의 댓글