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

ROS2 + DDS:다시 재생

실제 테스트가 필요하며 종종 비용이 많이 듭니다. 분산 및 자율 시스템을 만드는 데 일부입니다. 테스트는 시스템이 다양한 시나리오를 거치도록 설계되었으며 실시간 데이터 수집은 이러한 테스트에서 지속적인 가치를 창출할 수 있습니다.

GPS, 카메라, LiDAR, RADAR, 가속도계, 자이로스코프, 나침반, 속도계, 제어 신호, 매핑 및 환경을 포함하는 (반)자율 차량의 도로 테스트에 대해 생각해 보십시오. 데이터. 이는 *많은* 양의 데이터이며… 확보하는 데 매우 비쌉니다. 이 모든 데이터를 실제 테스트가 실행되는 것처럼 온디맨드 재생을 위해 녹음할 수 있다면 좋지 않을까요? 모든 테스트 세션의 디지털 라이브러리를 구축하고 재생 시 수정할 수 있어 더욱 반복 가능한 테스트 시나리오를 생성할 수 있다면 어떨까요?

DDS 사용자는 RTI Recording Service를 통해 고대역폭/대용량 녹음 및 재생 기능을 오랫동안 사용할 수 있다는 사실을 알고 계셨습니까? RTI 기록 서비스의 사용 사례는 해군 함선의 해상 시험과 같이 확장된 현장 배치 중에 모든 시스템 데이터를 지속적으로(24/7) 기록하는 것입니다. DDS의 분산 특성으로 인해 녹음 대역폭과 용량은 거의 무제한입니다. 데이터 홍수에 보조를 맞추기 위해 녹음 서비스의 여러 인스턴스를 시작할 수 있습니다.

ROS 생태계에는 Rosbag이라는 자체 녹음 서비스가 있지만 이 글을 쓰는 시점에서 Rosbag은 ROS2용으로 최근에 출시되었습니다. 다행히 ROS2는 DDS를 기본 연결 프레임워크로 사용하므로 현장에서 입증된 RTI 기록 서비스를 사용하여 언제든지 재생을 위해 ROS2에서 고대역폭 데이터를 기록하는 것이 간단해야 합니다.

그렇게 합시다...

레코더 구성

RTI 녹음 서비스는 필요한 QoS 설정과 함께 모든 또는 선택된 주제를 녹음하도록 XML 파일로 구성할 수 있습니다. 이 예에서는 중간 대역폭 주제(ROS2 LiDAR 데이터)를 기록한 다음 ROS2로 다시 재생하도록 설정합니다. 이 모든 것이 순수한 DDS 도구 세트에서 제공됩니다.

RTI 기록 서비스는 일반적으로 기존 데이터베이스의 열에 기록하기 위해 데이터를 역직렬화합니다. ROS2 LiDAR 데이터는 샘플당 많은 수의 포인트를 가지고 있으므로 이 경우 레코더에 데이터를 역직렬화하지 않고 데이터베이스의 단일 열로 기록하도록 지시하겠습니다. 나머지 XML 파일은 레코더에 기록할 주제와 데이터 유형, 데이터를 저장할 위치를 알려줍니다.

이 파일은 "ros2_record.xml"이라는 이름의 내가 만든 XML 파일에 포함되어 있습니다.

 xsi:noNamespaceSchemaLocation="http://community.rti.com/schema/5.3.1/rti_record.xsd"> 

<레코더 이름="simple_example">

<원격 액세스>
<활성화>참
0



<레코더_데이터베이스>
ros2_replay_example.dat




<도메인 이름="도메인0">
0

RTIDDS_DESERIALIZEMODE_NEVER




rt/velodyne_points
*





domain0


ros-rt



<도메인_유형_구성>
<도메인_그룹>
<요소>
<도메인_필터>
<요소>도메인0

<유형_구성>

<파일_그룹>
<요소>
<파일명>
PointCloud2.xml

<유형>
<요소>
거짓
sensor_msgs::msg::dds_::PointCloud2_
<등록된_유형_이름>
sensor_msgs::msg::dds_::PointCloud2_

<주제>
rt/velodyne_points



2147483647


<경로>
<요소>.







위 XML 파일을 사용하여 RTI Recording Service를 시작하려면 다음 명령을 사용합니다(위 XML 파일과 동일한 디렉토리에서 실행).

rtirecord -cfgFile ros2_record.xml -cfgName simple_example

이렇게 하면 LiDAR 데이터를 구독하고 프로그램을 닫을 때까지 계속해서 기록할 기록 서비스가 시작됩니다. 최종 결과는 "ros2_replay_example.dat_0_0"이라는 SQLite 데이터베이스 파일입니다.

녹화 세션(첫 번째 숫자)과 이것이 시퀀스에 있는 데이터베이스 파일(파일은 자동으로 사용자가 선택할 수 있는 파일로 제한됨)을 구별하기 위해 파일 이름에 숫자가 추가됩니다. 크기가 너무 커지면 닫히고 다음 데이터 기간을 저장하기 위해 다른 파일이 열립니다. 이렇게 하면 데이터베이스 파일이 너무 커지는 것을 방지할 수 있습니다.

재생기 구성

이제 ROS2 LiDAR 데이터를 기록했으므로 ROS2에서 재생할 수 있는지 봅시다.

이전 블로그 기사(A Field Guide to Interoperability and When Ecosystems Merge)에서 언급했듯이 ROS2는 호환성을 보장하기 위해 몇 가지 설정이 필요합니다. 이 예에서는 검색 중 유형 코드 정보를 보내는 것이 ROS2 "Bouncy Bolson" 릴리스의 기본 구성과 호환되도록 억제되었지만 rmw_connext_cpp를 실행하는 경우 ROS2에서도 이 조정이 이루어질 수 있습니다. RMW 레이어로.

주제, 도메인 및 파일 정보와 함께 이러한 설정은 다른 XML 파일에 저장됩니다.

 
xsi:noNamespaceSchemaLocation="http://community.rti.com/schema/5.3.1/rti_replay.xsd">






주석>
재생 서비스 예

<시간 제어>
1
자동
5




ros2_replay_example.dat_0_0
거짓


<참가자>
0
<참가자_qos>

0
0





<유형_구성>

<파일_그룹>
<요소>
<파일명>
PointCloud2.xml

<유형>
<요소>
거짓
sensor_msgs::msg::dds_::PointCloud2_
<등록된_유형_이름>
sensor_msgs::msg::dds_::PointCloud2_

rt/velodyne_points


2147483647


<경로><요소>.



<세션 이름="A_세션">


<입력>
*
<유형_이름>*
*
<도메인_이름>*





기록된 데이터를 ROS2로 다시 재생하려면:

rtireplay -cfgFile ros2_replay.xml -cfgName simple_example

결과

이제 일련의 자동 시뮬레이터 세션 동안 생성된 ROS2 LiDAR 데이터를 수집했으며 예상대로 모두 주문형으로 재생할 수 있습니다.

좋습니다! 이제 전용 자동차 시뮬레이터(또는 실제 차량) 없이도 주문형 LiDAR 데이터를 재생할 수 있습니다.

로 플레이하는 것이 재미있었습니다. LiDAR 데이터의 재생을 가속화하기 위해 재생 XML 파일의 변수. 그것은 *매우* 빠른 자동차의 승객이 된 것과 같았습니다!

ROS2 및 DDS에 대한 자세한 내용은 이전 RTI 블로그 게시물을 확인하세요.

상호 운용성과 생태계 병합에 대한 현장 가이드


사물 인터넷 기술

  1. 오픈 DDS 대 RTI DDS 소프트웨어
  2. MQTT 및 DDS:IoT의 M2M 통신
  3. Connext DDS 및 산업용 IoT:알아야 할 상위 5가지 사항
  4. 4차 산업혁명
  5. IoT에서 데이터 규정 준수
  6. 데이터로 무엇을 해야 합니까?!
  7. 사물인터넷 민주화
  8. 연결성 5가지 트렌드
  9. 10대 IIoT 플랫폼
  10. 데이터 센터의 미래