본문 바로가기

Robotics

2일차 - ROS 용어 정리

반응형

til을 하고 있는데 12시 넘어 커밋해서 잔디가 안 심겼다... 아쉬워라...

ROS 용어 정리

ros

로봇 소프트웨어 플랫폼. 하드웨어 추상화, 하위 디바이스 제어, 센싱, 인식, 지도 작성, 모션 플래닝 등의 기능 구현, 프로세스 간의 메시지 파싱, 패키지 관리, 라이브러리 및 개발, 디버깅 도구를 제공한다.

master

노드 사이 연결과 메시지 통신을 위한 네임 서버 역할을 한다. roscore를 통해 실행하며, 마스터를 실행하면 각 노드의 이름을 등록하고 필요에 따라 정보를 받을 수 있다. 마스터를 제외한 노드 간에는 접속, 메시지 통신이 불가하다.

HTTP 기반의 XMLRPC(XML-Remote Procedure Call) 프로토콜을 사용하여 통신한다. 노드는 필요할 때만 마스터에 접속하여 정보를 등록하거나 다른 노드의 정보를 요청한다.

서버 주소와 포트로는 ROS_MASTER_URI 변수에 기재된 URI 주소와 포트를 사용한다. 기본값은 ${현재 로컬 IP}:11311이다.

node

ROS에서 실행되는 최소 단위의 프로세서를 지칭한다. ROS에서는 하나의 목적에 하나의 노드 작성을 권장하며, 재사용이 쉽게 구성하여 개발하길 권한다. 마이크로 서비스 아키텍쳐 개념. 모바일 로봇의 경우

  1. 센서 드라이브
  2. 센서 데이터를 이용한 변환
  3. 장애물 판단
  4. 모터 구동
  5. 엔코더 입력
  6. 내비게이션

등으로 노드를 세분화하여 작성한다.

노드 구동 시 마스터에 이름, publisher, subscriber, 서비스 서버, 서비스 클라이언트가 사용하는 토픽 및 서비스 이름, 메시지 형태, URI 주소와 포트가 등록된다. 마스터에 등록된 이러한 정보를 기반으로 노드 간 통신이 가능하다. URI 주소는 ROS_HOSTNAME 환경변수 값으로 지정되며, 포트는 임의의 고유값으로 설정된다.

노드-마스터 간 통신에서 XMLRPC를 사용하며, 노드-노드 간 접속 요청과 응답은 XMLRPC, 메시지 통신은 TCP/IP 기반의 TCPROS를 사용한다.

메시지

노드 간 데이터를 주고받을 때 메시지를 사용한다. 메시지는 int, float, bool, point 등 변수 형태이며, 메시지 안에 메시지를 품는 간단한 데이터 구조나 메시지 배열 등을 사용할 수 있다.

토픽

publisher-subscriber 관계에서 사용하며, publisher가 마스터에 토픽을 등록한 뒤 메시지를 일방 출력하면 마스터에 등록된 subscriber가 데이터를 수신하는 형태이다. 토픽은 publisher가 subscriber에게 일방적으로 데이터를 전달하는 단방향 통신이며, 비동기적으로 연속적인 메시지를 전달하는 통신 방법이기 때문에 센서 데이터의 전송에 적합하다.

서비스

요청과 응답을 사용하는 동기 방식의 메시지 교환 방법으로는 서비스가 있다. 서비스는 클라이언트의 요청이 있을 때 응답하는 서버를 가지고 있다. 서비스는 일회성 메시지 통신으로 요청과 응답이 완료되면 두 노드 간 접속이 끊긴다.

액션

액션은 서비스처럼 양방향 통신이 필요하나 요청 처리 후 응답까지 오랜 시간이 걸리고, 처리 상태가 필요한 경우 사용된다. 요청과 응답에 해당하는 goal과 result가 있으며, 중간 결과에 해당하는 feedback이 추가되었다. 액션 클라이언트가 goal을 액션 서버에 전달하면 액션 서버가 수행 상태에 따라 feedback과 result를 반환한다.

bag

ROS에서 주고받는 메시지 데이터를 저장할 때 사용하는 파일 포맷이다. bag을 재생하여 이전 상황을 그대로 재현할 수 있으며, 같은 실험을 수행하지 않아도 센서값을 반복하여 사용할 수 있다.

catkin

catkin은 ROS1의 빌드 시스템이다. CMake를 ROS에 맞게 수정한 시스템이며, 패키지 폴더에 CMakeLists.txt 파일이 있으면 사용할 수 있다. catkin 이전에는 rosbuild를 사용하였고, 이후에는 ament, ROS2에서는 colcon을 사용한다.

반응형