[모두의연구소]DDS

ROSI·2023년 7월 15일
0

with_RL_study

목록 보기
1/4

ros2에서는 ros1처럼 마스터노드(roscore)를 사용할 필요가 없다.
DDS(data distribution service)프로토콜의 사용때문이다.
** DDS는 실시간 분산시스템에서 데이터 공유 및 통신을 위한 표준화된 프레임워크이다.

  • 마스터노드없이 다중노드실행이 가능하게 한다.
  • 실시간제어가 가능하다.
  • 통신제어, 데이터관리가 ps(publisher, subscriber)패턴을 지원하기때문에, 다양한 신기술 제품과 호환된다.

노드간 밀접하게 데이터를 교환하는 경우, DDS프로토콜을 거치지않고도 노드간 통신을 해야하는 경우가 있다. 아래의 기법을 사용한다. (레이어 diagram참고)
ros1에서는 nodelet api를 썼는데, 노드간 인터페이스를 제공하는 수준에서 그치고?
ros2에서는 inter process api를 썼는데, 속도가 훨씬 빠르다.
-> 실시간 제어가 가능할 정도의 속도로 노드간 통신가능

ros2에서도 dds프로토콜대신 ros1과의 연동을 위해 roscore를 사용하는 방식으로 바꿀 수도 있다.

ros1에서는
master노드에 노드의 정보를 xml/rpc로 등록한다.
노드간 통신할때는 master노드에 tcpros통신(ros에 맞게 패킷최적화했음. 일반 tcp프로토콜과는 통신안됨)에 필요한 정보를 요청하고, 얻은 정보를 바탕으로 tcp통신한다.

profile
https://songdaegeun.github.io/ 으로 블로그이전 중입니다

0개의 댓글