본문 바로가기
ros2_python/Ros2 개념

ros2_DDS

by 알 수 없는 사용자 2022. 4. 26.

참고

https://hi-space.github.io/2021/11/09/ros.html

ros2 설명

https://design.ros2.org/articles/ros_on_dds.html

dds 설명

https://docs.ros.org/en/rolling/Concepts/About-Domain-ID.html

Domain_id 설명( 먼말일까? ) 스ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ..

 


 

 

ROS1에서는 rosMaster가 켜지면 "XMLRPC + TCPROS"을 이용한 커뮤니케이션 기능을 통해서 Node간의 연결을 이어준다.

ROS2에서는 "DDS(RTPS)"를 사용한 커뮤니케이션 기능을 통해서 Node간의 연결을 이어준다.

 

 

DDS :

  • 데이터 중심의 분산 시스템의 publish/subscribe 형 middleware
  • ROSMaster 없이 DDS 간 통신 가능 (fault tolerant, flexible)
  • Discovery, 메시지 정의, 메시지 직렬화, publish-subscribe 전송 제공
  • 통신 프로토콜: RTSP (Real Time Publish Subscribe)
    • UDP 기반으로 구현되어 있지만 QoS를 도입해 TCP의 장점을 가지고 있음
    • ROS1의 TCPROS, UDPROS 프로토콜 대체
  • 유선 프로토콜과 UDP 소켓만 사용하여 shared message로 프로세스 간 message traffic을 최적화

 

ROS_DOMAIN_ID

  • DDS에서 서로 다른 logical 네트워크가 physical 네트워크를 공유하도록 하는 메커니즘
  • 동일한 도메인의 노드는 서로에게 자유롭게 통신할 수 있지만, 다른 도메인의 노드는 X

QoS

  • 노드 간 통신 QoS 정책 제공
  • UDP처럼 빠르게 전송하거나 TCP처럼 신뢰성 있게 전송 가능

노드 관리

  • 노드의 수명 주기 관리
  • 노드를 online으로 다시 시작하거나 교체 가능 

 

 

  • 실시간 스레드 우선 순위 지정
    • 실시간 일정 정책 사용
  • 실시간 코드에서 비결정성의 원인 피하기
    • 메모리 할당 및 관리
    • 동기화 기본 요소 차단
    • 인쇄, 로깅
    • 네트워크 액세스, 특히 TCP/IP
    • 비실시간 장치 드라이버
    • 하드 디스크 액세스
    • 페이지 부재
  • 실시간 사용 사례에 대한 사용자 정의
    • 메모리 관리
    • 동기화
    • 스케줄링

 

 

따라서 ROS 1.msg 파일은 계속 사용되며 .msg 파일은 DDS 전송과 함께 사용할 수 있도록 .idl 파일로 변환됩니다. 언어별 파일은 .msg 파일과 .idl 파일 모두에 대해 생성될 뿐만 아니라 ROS와 DDS in-memory 인스턴스 간의 변환을 위한 변환 함수도 생성될 것이다. ROS 2 API는 메모리의 .msg 스타일 메시지 개체와 단독으로 작동하며 게시하기 전에 .idl 개체로 변환한다.

긍게 결론 : msg srv 같은 토픽들은 DDS 전송 할때 .idl파일로 변환 된다.

               파이썬코드로 사용 될때는 .msg .srv 파일로 변환되서 사용된다.

 

 

 

'ros2_python > Ros2 개념' 카테고리의 다른 글

ROS2 ENV 환경변수 정리  (0) 2023.02.04
ros2_QoSProfile 관련설명  (0) 2022.07.05
ros2_tree구조  (0) 2022.04.27
Ros1 과 Ros2 차이  (0) 2022.04.22
ros2 설치부터  (0) 2022.04.22

댓글