Semiconductor, Embedded/2. ROS

ROS2 - (2) Message, DDS 이론 및 실습

잇(IT) 2024. 9. 23. 10:27

Message Communication

 

- Node : ROS에서 최소 단위의 실행 가능한 프로세스

- Package : 하나 이상의 Node 또는 Node 실행을 위한 정보 등을 묶어 놓은 것

(ex) Turtlesim)

- Meta Package : Package의 묶음

 

ROS에서는 최소한의 실행 단위로 프로그램을 나누어 프로그래밍, 노드는 각각 별개의 프로그램으로 보면 된다.

수많은 노드들이 연동되는 ROS 시스템의 특성 상 노드와 노드 사이에 입력과 출력 데이터를 서로 주고 받도록 설계해야 한다.

 

* 노드의 이해와 더불어 노드 간 데이터 교환 방법, 데이터 유형에 대한 이해가 필요하다.


ROS2 Message Communication

Node 간 주고 받는 데이터를  Message라 칭하며, 주고 받는 방식을 Message 통신이라 한다.

Message 데이터는 integer, floating point, boolean, string과 같은 변수로 구성한다.

Message를 주고받는 통신 방법에 따라 Topic, Service, Action, Parameter로 구분한다.

 

 

ROS에서 사용되는 각 메시지 통신 방법의 목적과 사용 방법은 다르지만 Topic의 Publish, Subscribe의 개념을 응용한다.

 

DDS의 Real Time Publish와 Subscribe Protocol인 DDSI-RTPS를 사용한다.

 

DDS 도입으로 기존 메시지 형태 이외 OMG의 IDL을 사용한다. (메시지 정의 및 직렬화를 더 쉽게, 더 포괄적으로 다룰 수 있게 되었다.)

DCPS, DLRL의 내용이 적용된 DDSI-RTPS을 채용했다. (실시간 데이터 전송 보장)

DDS의 사용으로 Node 간의 동적 검색 기능을 지원한다. (Master가 없어도 여러 DDS 간의 통신이 가능하다.)

QoS를 매개변수 형태로 설정할 수 있다.

DDS-Security 도입으로 보안이 강화되었다.


DDS

10가지 특징

1. Industry Standards

산업 표준을 지키고 있기 때문에 사용처가 다양하다. (IoT, 자동차, 국방, 항공, 우주 분야로 확장이 가능하다.)

2. OS Independent

다양한 운영체제를 지원하고 있다. (Linux, Windows, MacOS, Android, VxWorks 등...)

3. Language Independent

C뿐만 아니라 Python에서도 구현이 가능하다. 각 회사에서 DDS 제품을 생산하여 판매하고 있다.

ROS2에서는 이러한 미들웨어를 유저가 원하는 사용 목적에 맞게 선택하여 사용할 수 있도록 ROS Middleware(RMW) 형태로 지원한다.

C++, Python, Java 등 API를 제공하고 있다는 것을 알 수 있다.

rcl(ROS Client Library, 라이브러리), rmw(ROS Middle Ware, 미들웨어)

(파란색 부분은 기업에서 생성한 MiddleWare에 해당한다.)

4. Transport on UDP/IP

5. Data Centricity

Middle Ware와 QoS를 지원한다. Middle Ware는 어떤 데이터인지, 데이터가 어떤 형식인지, 데이터를 어떻게 보낼 것인지, 데이터를 어떻게 안전하게 보낼 것인지에 대한 기능이 DDS Middle Ware에 포함되어 있다.

6. Dynamic Discovery

DCPS(Data-Cenric Publish-Subscribe)이라는 개념이 기술되어 있다. Data가 어떤 형태를 띄고 있는지 기술하고 있는 특징이 있다.

7. Scalable Architecture

다양한 분야에 사용할 수 있는 확장성의 장점이 있다. 표준에 맞게 Node를 잘사용하면 관리에 용이하다.

8. Interoperability

DDS는 상호 운영성을 지원한다.

9. QoS

QoS에 대한 설정이 가능하다. 22가지의 항목이 존재한다. TCP, UDP 방식을 선택적으로 사용할 수 있다.

10. Security

DDS 보안 사양을 ROS에 적용하여 보안에 대한 이슈를 통신단부터 해결했다. SROS2라는 툴을 개발했다.


DDS 사용 예시

RWM_IMPLEMENTATION 변수로 RMW 변경 가능

rmw_cycloneadds_cpp
rmw_fastrtps_cpp
rmw_connext_cpp
rmw_gurumdds_cpp

 


ROS2 Basic

 

패키지 설치

sudo apt update
sudo apt install <pkg-name>
(ex) sudo apt install ros-humble-turtlesim

 

패키지 확인

ros2 pkg list
ros2 pkg executables turtlesim

 

turtlesim에서 사용 가능한 패키지를 위와 같이 확인할 수 있다.

 

패키지의 노드 실행

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key

 

 

- 노드와 메시지 통신

노드들은 서로 유기적으로 Message로 연결되어 사용된다.

수행하고자 하는 Task가 많아질수록 메시지로 연결되는 노드가 늘어나며 시스템이 확장된다.

 

A <-> C : Topic

B <-> C : Service

A <-> B : Action

 

 

728x90