ROS 2 시스템 개요와 개념 학습 (2)

Parameter

Control Parameter, Wheelbase, Track width와 Wheel radius, Sensor calibration Parameter와 Noise Parameter 등 시스템을 구성하는 수많은 매개변수들이 존재하며, ROS 2에서는 이를 Parameter Server라는 것으로 다루고 있습니다.

Namespace Parameter

  • 다수의 로봇을 다루는 경우, 종류는 같지만 별도의 Parameter가 필요합니다.
  • 이러한 경우를 대비하여 ROS 2에서는 namespace라는 기능을 지원합니다. topic과 node 앞에 별도의 접미사를 추가하여 서로 다른 객체임을 구별하는 방식입니다.

TF2

  • ROS 2에서는 TF2라는 특수한 형태로 좌표계와 시간을 함께 다루고 있습니다.
  • ROS 2에서 사용하는 좌표계는 x축이 정면을 바라봅니다. (ISO 8855와 동일)


일반적으로 널리 사용되는 frame 이름들이 있습니다. 함께 살피고 넘어가겠습니다.

TF Tree

  • tf tree는 현 시점의 모든 tf frame들을 그래프로 표시한 그림입니다.
  • tf tree에서 모든 tf가 연결되어있어야 시스템이 정상 동작하며, 센서를 추가 부착한 경우 반드시 tf tree를 확인합니다.
example) rlidar to RH_WHEEL



잘못된 tf tree의 예시

DDS 용어들

  • ROS 2는 DDS를 차용했기 때문에 통신 레벨에서 최적화를 이루기 위해 DDS에 대한 이해를 필요로합니다. 
  • 주요한 DDS 개념과 용어를 살피고 다양한 개선점들을 살펴보겠습니다.


DDS QoS

  • TCPROS/UDPROS라는 자체 프로토콜을 사용했던 기존 ROS 1과는 달리, ROS 2에서는 QoS 옵션을 통해 원하는 기능을 선택적으로 사용할 수 있습니다. 
  • 상황에 따라 데이터의 신뢰성이 중요할 수도 있고, 버퍼의 크기를 크게 하여 Topic의 안정성을 높여야 할 수도 있습니다. 이러한 통신의 품질을 옵션화하기 위해서, DDS에서는 아래와 같은 22가지의 QoS Policy를 정의하고 있습니다.
22개의 QoS Policy 중 주요한 몇가지를 추려보았습니다.

센서 데이터 통신, 제어 데이터 통신 등 ROS 2에서는 상황에 따라 자주 사용되는 QoS 조합을 묶어 RMW QoS Profile이라는 이름으로 제공하고 있습니다.

DDS IDL

  • DDS에서는 특정 개발 언어에 의존적이지 않는 데이터 통신을 위해 IDL(Interface Description Language)을 사용합니다.
  • IDL을 통해 언어 중립적인 방법으로 인터페이스를 표현함으로써, 같은 언어를 사용하지 않는 Node 사이의 통신을 가능하게 합니다.
OMG의 Interface Definition Language Version 3.5에 따른 사용 가능한 Primitive 키워드들은 아래와 같습니다.

IDL 빌드 결과 예시

DDS Domain ID

  • 각 DDS Participant들은 특정 Domain에 속하게 됩니다. 기본적으로 ROS 2에서는 Domain ID 0을 사용하고 있으며, 같은 Domain ID를 사용하는 Participant들 사이에서만 통신이 가능합니다.
  • 예를 들어 저의 경우, 강의를 하다보면 같은 Domain ID를 갖는 수강자 두분이 서로 통신이 되는 것을 오류로 착각하는 경우가 많습니다.

DDS Vendors

  • DDS는 표준으로 이를 통한 제품을 개발하여 판매하는 다양한 Vendor들이 존재합니다.
  • 무료 DDS인 eProsima 부터 국산 DDS인 Gurum DDS, ADLink에 합병된 Cyclone DDS와 최고 사양을 가진 rti connext까지 다양한 Vendor들이 자신만의 특징을 갖고 영업 중입니다.

Complete and Continue