산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 사물 인터넷 기술

ROS2 + DDS:상호 운용성에 대한 현장 가이드

ROS 2가 연결 프레임워크로 DDS를 사용하도록 설계되었지만(자세한 내용은 내 이전 블로그 게시물 - ROS 2 + DDS:When Ecosystems Merge 참조) 통합 프로세스에는 순수한 DDS 시스템을 위해 수용해야 하는 몇 가지 단점이 있습니다. ROS 2 시스템과 원활하게 상호 운용됩니다. 이 블로그는 상호 운용성에 대한 실용적인 현장 가이드 역할을 하며 ROS 2의 "Bouncy Bolson"(2018년 7월) 릴리스와 이를 완화하는 방법에 대해 알려진 몇 가지 문제를 다룹니다.

ROS 2로 업데이트

ROS 2는 진화하는 프로젝트입니다. 향후 ROS 2 릴리스에는 상호 운용성에 영향을 주는 변경 사항이 있을 수 있습니다. 즉, rmw_connext_cpp를 사용할 때 항상 기억하십시오. ROS 2 아래 레이어 – 여전히 Connext DDS입니다. 비 ROS 구현과 동일한 방법을 사용하여 Connext 라이브러리 고유의 기능과 유연성을 계속 사용할 수 있습니다. 시스템을 제어할 수 있습니다.

다음은 순수 DDS와 ROS 2 시스템 간의 상호 운용성에 영향을 줄 수 있는 설정의 요약입니다(달리 지정되지 않는 한 ROS 2 "Bouncy Bolson").

주제 이름 및 파티션

ROS 2는 토픽의 이름 또는 DDS 파티션에 인코딩하여 토픽 데이터의 네임스페이스를 식별합니다. 사용자 데이터 주제는 DDS에서 다음과 같이 인코딩된 "rt"(ROS 주제) 네임스페이스에 있습니다.

주제 데이터 유형

ROS2에서 Connext RMW 계층을 사용할 때 검색 중에 모든 ROS2 "rt/*" 주제가 동일한 데이터 유형을 갖는 것으로 보고된다는 것을 눈치채셨을 것입니다.

이 유형의 정의는 ROS2 rmw_connext_cpp 계층에 의해 삽입되어 주제 데이터가 변경되지 않더라도 주제 데이터의 직렬화를 나타냅니다. 원래 데이터 유형을 사용하여 DDS 주제와 연결을 시도하면 QoS 불일치가 발생하여 연결을 방해합니다.

가장 쉬운 해결책은 ROS2 참가자로부터 이 유형 코드 발표를 억제하는 것입니다. 이것은 ROS2 참가자를 시작하는 데 사용되는 디렉토리에 USER_QOS_PROFILES.xml 파일을 추가하여 수행할 수 있습니다. 이 파일에는 다음과 같은 유형 코드 및 유형 개체 공유를 억제하는 QoS 설정이 포함되어 있습니다.

이 파일은 또한 "Best Effort"로 안정성을 설정합니다. 이것은 시작점의 예일 뿐입니다.

또한 이 QoS 파일은 QoS 파일과 동일한 디렉토리에 대해 시작된 ROS2 참가자에게만 영향을 줍니다. 필요한 경우 모든 ROS2 참가자는 별도의 디렉터리에 고유한 사용자 정의 QoS 파일을 가질 수 있습니다.

교통수단 선택

DDS 시스템을 ROS2 시스템에 연결하면 주소 지정 불가 로케이터/전송 장치가 설치되지 않았다는 경고가 표시될 수 있습니다. 이것은 참가자 A(udpv4)가 참가자 B(udpv4, udpv6)를 발견하는 것과 같이 사용 가능한 전송 목록이 다른 참가자의 결과입니다. 참가자 A가 udpv6을 사용하여 연결할 수 없다는 경고가 표시됩니다.

ROS2에서 Connext RMW를 사용한 전송 선택은 Connext 전용 시스템에서와 동일한 방법을 사용합니다.

<올>
  • 와 같이 섹션에 추가하여 USER_QOS_PROFILES.xml 파일에 허용된 전송을 설정합니다.

    <마스크>UDPV4|SHMEM

  • "NDDS_DISCOVERY_PEERS" 파일을 애플리케이션 실행에 사용된 디렉토리에 추가하여 초기 피어를 설정(및 멀티캐스트 활성화/비활성화)합니다. 일반 텍스트 파일에는 localhost,192.168.1.12,shmem://와 같이 검색을 위해 원하는 피어 목록이 쉼표로 구분되어 있어야 합니다. (이 예는 멀티캐스트 검색을 비활성화합니다)
  • ROS2에서 RMW 선택

    ROS2에서 RMW 레이어로 Connext를 선택하도록 환경 변수를 설정해야 합니다.

    RMW_IMPLEMENTATION=rmw_connext_cpp

    다음과 같이 ROS2 애플리케이션을 시작할 때 명령줄에서 전달할 수도 있습니다.

    RMW_IMPLEMENTATION=rmw_connext_cpp ros2 demo_nodes_cpp 토커 실행

    무제한 지원

    일부 ROS2 주제는 무제한 시퀀스와 문자열을 사용합니다. 이러한 주제를 사용하여 상호 운용하려는 DDS 애플리케이션은 DDS 코드 생성기에서 '무제한 지원'을 활성화해야 합니다.

    <강한>

    RTI를 통한 예측

    ROS2 라인업의 중요한(일시적이긴 하지만) 격차(주제 데이터의 기록 및 재생)를 다루는 이 시리즈의 다음 기사를 기대해 주십시오.

    RTI 팀과 함께 시작하여 커뮤니케이션 시스템을 개선할 준비가 되셨다면 지금 바로 문의하십시오. 전문가가 도와드릴 준비가 되어 있습니다.


    사물 인터넷 기술

    1. 레이저 마킹 가이드
    2. 오픈 DDS 대 RTI DDS 소프트웨어
    3. ROS2 + DDS:다시 재생
    4. ROS2 + DDS 통합:생태계가 병합될 때 | RTI
    5. ROS 로봇
    6. 신속한 제조 지침
    7. IoT와 함께하는 길 위에서
    8. 산업용 IoT 플랫폼 구매자 가이드
    9. PCB 보강재 가이드
    10. 중장비 현장 서비스 및 수리 안내