본문 바로가기
Robotics AI

[ROS 2] 개념 및 용어 정리

by 3n952 2024. 5. 9.
ROS 2에서 robotic system을 구현하는 데 필요한 몇 가지의 개념이 있다.
ROS 2 tutorial에서 공부한 내용을 바탕으로 정리해 보자!

1. Node(노드)

ROS graph는 ROS 2에서의 모든 데이터를 동시에 처리하는 네트워크를 일컫는다.

ROS graph에서 실행가능한 모든 파일은 연결되어야 하고, 이를 매핑하고 시각화할 줄도 알아야 한다.

 

 

위의 영상을 보면 전반적인 ROS system의 흐름을 보여준다. (ROS graph)

이는 Node와 Node들 사이에 데이터가 오가면서 이뤄진다.

 

여기서 Node는 로봇의 바퀴를 제어한다던지 측정 데이터를 publishing 한다던지와 같은 single, modular의 목적을 가지고 있어야 한다.

각각의 Node는 topic, service, action, parameter를 통해 다른 노드와 데이터를 주거나 받을 수 있다.

따라서 Node는 데이터의 내용을 수행하는 한 단위의 프로세서라고 이해했다. 즉, ROS2가 동작하는 하나의 단위.

(ex. node가 2개 있다면 node 1은 카메라 센서로 이미지 받기 node 2는 로봇 바퀴 제어하기)

 

추가적으로 ROS 2에서 Node는 c++, python과 같은 executable이 하나 이상 포함되어 있다고 한다.

 

결국 ROS에서는 Node들 사이에 주고받는 데이터가 서로 다른 특징을 가지고 다른 노드로 오가게 되는데

여기서 '서로 다른 특징을 가지는 방식'이 Topic, service, parameter, action이 된다.

 

2. Topic(토픽)

ROS 2는 복잡한 system을 여러 modular nodes로 나눈다.

node 간의 message 교환을 위해 bus 역할을 하는 topic이 필요하다.

 

topic은 publisher - subscriber model로 구성되어 있다.

Publisher는 데이터를 발생 (Publish)하는 노드이다.

Subscriber는 Publisher가 Topic에 쓴 Message를 받거나 읽는 노드이다.

이 두 노드 사이의 비동기식 단방향 메세지 통신을 topic이라고 한다.

지속적으로 센서 데이터를 생성해 내고 이를 받아 처리하는 경우에 적합한 형태이다.

 

노드가 여러 데이터를 pub 할 수도 있고 동시에 topic을 sub 할 수도 있다.

이때 topic은 point-to-point일 필요는 없다. 

1:1, 1:다, 다:다 모든 경우가 가능하다고 한다.

 

 

3. Service(서비스)

 

 

service는 server와 client사이에서 Request와 Respond가 호출되는 동기식 양방향 메세지 통신 방법이다.

서비스는 토픽과 달리 특별한 상황에서 호출할 때만 데이터가 통신된다.

즉, 특정 목적의 작업에 해당되는 서비스를 일회성으로 요청하는 것이다.

 

 

4. Action(액션)

Action은 서버와 클라이언트 간의 비동기식 양방향 메세지 통신이다.

요청 후에 응답까지 오랜 시간이 걸리고 중간 결과 값이 필요할 때 사용하는 장기적인 실행 작업이다.

또한 service와 topic을 기반으로 구축되는데, 이때 goal service, feedback topic, result service의 세 부분으로 이뤄진다.

 

 

5. Parameter(파라미터)

node의 구성하는 값이다. 즉 노드에서 사용하는 파라미터를 의미한다.

매개변수를 노드 설정이라고 판단할 수 있다.

노드는 매개변수를 정수, 부동 소수점, boolean, 문자열 등등으로 저장할 수 있다고 한다.

이는 파라미터 서버에서 관리하고 프로그램이 동작하는 도중에 실시간으로 변경 가능하다.

(ex. 모터가 돌아가는 최대 최소 속도의 값 파라미터)

 


references
[1] ros2 tutorial, https://docs.ros.org/en/foxy/Tutorials.html

'Robotics AI' 카테고리의 다른 글

[Coppeliasim] Coppeliasim 설치하기  (0) 2024.08.20
[Mac M1] ROS2 + Gazebo 설치하기  (1) 2024.04.02
ROS(robot operating system)의 등장 배경  (2) 2024.03.27