이번에는 ROS의 노드와 관련 명령어에 대해서 알아보자.
💡 ROS 노드(node)란?
ROS에서의 노드는 최소 단위의 실행 가능한 프로그램 혹은 프로세스라고 이해하면 된다. ROS의 최소 단위로 노드가 모여서 패키지를 구성하고, 패키지가 모여서 메타-패키지를 구성하게 된다.
ROS 노드 관련 명령어에 대해서 알아보자.
💡 전제조건
roscore를 당연히 실행해야 한다. 노드 정보를 등록하고, 노드 간의 상호작용을 관제하기 위해서는 말이다. 그리고 rosrun을 통해서 node를 실행시켜야 한다. 그래야 node 관련 정보 등을 확인 가능하다.
$ rosnode list
roscore에 연결된 모든 노드의 목록을 확인할 수 있다.
$ rosnode ping <nodename>
지정한 노드와의 연결 테스트를 할 수있다. 만약 연결이 되어있지 않는다면 오류 메시지가 출력된다.
$ rosnode info <nodename>
지정한 노드의 정보를 확인 가능하다. 토픽 발행/구독, 서비스, 노드 실행 URI 등에 대한 정보가 출력된다.
$ rosnode machine <PC_name or IP>
지정된 특정 PC 혹은 단말기에서 작동 중인 노드의 목록을 확인 가능하다.
$ rosnode kill <node_name>
실행 중인 노드를 종료하는 명령어이다. 노드가 실행된 터미널 창에서 Ctrl+c를 입력하여 직접 노드를 종료할 수도 있지만, kill 명령을 통해서 종료할 수도 있다. 이 명령어를 사용하면 노드 실행 터미널에서 경고 메시지가 출력되면서 노드가 종료된다.
$ rosnode cleanup
연결 정보가 확인되지 않는 유령 노드의 등록 정보를 삭제한다. 예기치 못한 일로 노드가 비정상적 종료되는 경우, 이 명령어를 통해 연결 정보가 끊어진 노드를 목록에서 삭제하게 된다. roscore를 중시했다가 재실행할 필요가 없기 때문에 유용하게 사용된다.