참고
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 |
댓글