본문 바로가기
개발일지

ROS node/ROS 노드란 무엇일까? ros책

by 코드의신 2023. 1. 11.
반응형

1. ROS 노드

 

노드(node)란 ROS에서 실행되는 최소 단위의 프로세스입니다.

 

노드는 데이터 전처리, 데이터 시각화, 모터 구동 등 하나의 역할을 수행하며 메시지를 이용하여 다른 노드들과도 데이터를 주고 받을 수 있습니다.

 

즉 ROS에서는 노드들 간 서로 데이터를 주고 받을 수 있습니다.

 

노드가 메시지를 이용하여 다른 노드와 데이터를 주고 받을 때 토픽, 서비스, 액션 방식을 활용하는데 

 

첫번째로 토픽은 단방향 메시지 송수식 방식이며 대부분 토픽으로 주고 받습니다.

 

두번째로 서비스는 양방향 메시지로 요청, 응답 방식이 있습니다.

 

세번째로 액션은 양방향 메시지 요청 방식과 더불어 중간 결과값을 알 수 있는 방식입니다.

 

2. 노드에 대한 이해

ROS를 사용할 때 사용 되는 로봇은 많은 노드를 가지고 있을 수 있습니다.

 

각기 다른 노드들은 서로의 역할을 수행하는데 하나로 합칠 경우 여러 기능을 가질 수 있게 됩니다.

 

하지만 여러 노드를 사용할 때 문제가 있는 노드가 있더라도 로봇 시스템이 작동할 수 있습니다.

 

이 때 많은 노드들 중 문제가 있는 노드를 어떻게 확인해야 할까요?

 

ROS에는 노드 검사를 위한 도구가 존재합니다. rosbash라는 도구인데 rosnode 명령어로 노드 확인이 가능합니다.

 

rosnode info [노드명] :노드 정보 출력합니다.
rosnode kill [노드명] : 실행 중인 노드 종료.
rosnode list : 해당 명령어는 실행 중인 노드를 나열하는 것이므로 꼭 먼저 확인하셔야 합니다.
rosnode machine [machine_name] : 특정 시스템이나 시스템 목록에서 실행 중인 노드를 나열합니다.
rosnode ping: 노드의 연결을 확인합니다.
rosnode cleanup: 연결할 수 없는 노드의 등록을 제거합니다.

 

먼저 rosnode list를 해봅시다.

rosnode list
rosnode list

현재 실행중인 노드가 나오게 됩니다. 여기서 나온 노드 중 정보를 출력 해보도록 하겠습니다.

rosnode info
rosnode info

해당 노드에 대한 정보를 모니터링 할 수 있습니다.

위의 명령어를 이용해서 모니터링 해보세요.

 

해당 내용은 "3/e ROS 로보틱스 프로그래밍" 책을 통해 공부했습니다.

반응형

댓글