rosbags를 관리하는 9가지 멋진 오픈 소스 도구

Nov 24 2022
Evocargo 엔지니어가 선택한 선택 ROS를 처음 시작했든 이미 심오한 개발자이든 특정 작업과 작업을 더 쉽고 빠르거나 더 편리하게 수행할 수 있다고 느낄 수 있습니다. 예를 들어 멋진 보기에서 가방의 메타데이터를 표시하는 것과 같은 ROS용 도구를 바로 지금 만들 생각을 할 수도 있습니다.

Evocargo 엔지니어의 선택

ROS를 막 시작했든 이미 심오한 개발자든 관계없이 특정 작업과 작업을 더 쉽고 빠르고 편리하게 수행할 수 있다고 느낄 수 있습니다. 예를 들어 멋진 보기에서 가방의 메타데이터를 표시하는 것과 같은 ROS용 도구를 바로 지금 만들 생각을 할 수도 있습니다. 그 전에 오픈 소스 ROS 패키지 선택을 확인하십시오 — 많은 시간과 노력을 절약할 수 있는 기성 솔루션을 찾을 수 있습니다.

이 게시물에서는 백 데이터를 시각화하고 편집하는 데 도움이 되는 ROS 백용 패키지에 중점을 둡니다. 일부 패키지의 경우 더 나아가 특정 제품 요구 사항에 맞게 패키지를 업그레이드할 수 있는 방법을 시연합니다.

자율주행차는 인지, 위치추적, 충돌회피, 자가진단 등 자율주행차의 필수 작업에 필요한 방대한 양의 데이터를 생성한다. 이러한 데이터는 신경망 교육 및 사고 조사에 사용되므로 매우 귀중한 자산입니다. 예를 들어, 미국 고속도로 교통 안전국(National Highway Traffic Safety Administration )은 자율 시스템의 안전성을 조사 하고 결과를 요약 하기 위해 SAE 레벨 2-5 ADAS(Advanced Driver Assistance Systems)가 장착된 차량과 관련된 특정 충돌을 보고하도록 일부 제조업체 및 운영자에게 의무화 했습니다. 충돌 보고서 . 이는 다른 국가에서도 일반적인 관행이 될 수 있습니다.

생성된 데이터의 추정치는 온보드 장비 및 애플리케이션 시나리오로 인해 차량마다 다를 수 있습니다. 여러 대의 고해상도 카메라, 라이다, 레이더 및 기타 센서가 탑재된 자율주행차 한 대는 통근 몇 시간 동안 최대 15TB의 데이터를 생성할 수 있습니다. 이것은 논스톱 승객 여행을 하는 로보택시가 하루에 450TB를 처리할 수 있다는 것을 의미합니다(자세한 내용 은 여기 및 여기 참조 ).

ROS를 사용하는 경우 모든 데이터는 나중에 인덱싱하고 주석을 달고 재생할 수 있도록 기록 및 저장되는 백 파일에 기록됩니다.

그림 1. ROS 백 파일 목록

따라서 탐색하고 분석해야 하는 인상적인 파일 목록이 생성됩니다. 이를 해결하기 위해 이 기사에서 설명하기 위해 선택한 무료 ROS 패키지를 사용할 수 있습니다. 그들 중 일부는 ROS 인덱스 에 포함되고 일부는 포함되지 않습니다. 그리고 그들 중 일부는 ROS 1 전용으로 설계되었습니다 — 우리는 그것에 대해 메모할 것입니다.

멋진 UI로 가방 보기

그림 1 에서 볼 수 있듯이 백은 기본적으로 디렉토리에 있는 파일입니다. 명령줄 인터페이스를 사용하여 작업해야 하며 할 수 있는 일이 많지 않습니다. 기본적으로 ROS를 사용하면 bag 파일을 재생하고, bag에 대한 정보를 보고, 크기와 기간을 보고, 주제, 유형을 볼 수 있습니다. 메시지 수와 수량. 데이터가 쌓일수록 필요한 것을 찾기가 더 어려워집니다.

Southwest Research Institute 의 Bag Database 도구는 디렉토리에서 ROS 백 파일을 모니터링할 수 있는 친숙한 웹 인터페이스를 제공합니다. 녹화 날짜, 경로, 해당 이미지 등과 같은 많은 유용한 메타데이터를 볼 수 있습니다.

가방과의 상호 작용이 훨씬 쉽고 효율적이 됩니다!

그림 2. Bag Database에서 Bag 보기

또한 Bag Database 를 사용하면 격리된 Docker 컨테이너에서 실행할 수 있는 다양한 사후 처리 스크립트를 추가할 수 있습니다. 예를 들어 Evocargo에서는 bag_indexer단일 PNG 이미지에 가방 내용물의 포괄적인 요약을 표시하는 스크립트를 작성했습니다.

그림 3. Bag Database의 스크립트로 생성된 Bag 요약

한눈에 살펴보면 다음과 같은 아이디어를 얻을 수 있습니다.

  • 썸네일을 통한 차선 품질, 조명 및 기상 조건
  • 주행 거리 측정, GNSS 및 현지화를 기반으로 한 참조 경로 및 편차
  • 주어진 시간 또는 위치에서 속도
  • 차량 제어 모드 또는 차량을 수동으로 작동해야 하는 시간
  • 승차 거리 및 시간
  • 가방 이름 등

정보 블록의 위치 및 색상, 카메라 이미지의 썸네일 수와 같은 스냅샷의 매개변수는 구성 파일에서 정의됩니다.

Bag Database 에서 스크립트 는 bag_indexer다음과 같습니다.

그림 4. 사후 처리 스크립트를 추가하는 창

자세한 내용과 스크립트의 예 는 Bag 데이터베이스 문서 를 참조하십시오 .

메타데이터 추가

Bag 메타데이터에는 녹화 위치, OS 및 소프트웨어 버전, 연결된 장치, 날씨 조건, 작업과 같은 Bag 녹화 조건에 대한 세부 정보가 포함됩니다. 일반적으로 이러한 데이터는 별도의 파일에 저장합니다. 그러나 일부 Bag Visualizer(예: Bag Database )는 메타데이터를 백 파일에 통합해야 합니다.

ROS1 백 파일에 바로 메타데이터를 쓰려면 rosbag_metadata 패키지 를 사용할 수 있습니다 . 즉시 ROS 패키지 버전, git 저장소 및 git-commit 해시에 대한 정보, 환경 변수, 네트워크 구성과 같은 시스템 데이터와 함께 의견을 저장합니다. 이러한 모든 데이터는 YAML 파일의 텍스트로 /metadata 주제에 추가됩니다.

rosbag_metadata 를 있는 그대로 사용 하거나 특별한 제품 요구 사항을 충족하도록 제공할 수 있습니다. 예를 들어 Evocargo의 물류 서비스의 경우 자동차 모델 및 번호, 원시 보정 정보 및 지도와 같은 보다 구체적인 정보가 필요했습니다. 따라서 자율 차량 관리에 더 적합한 rosbag_metadata 를 기반으로 자체 패키지를 만들었습니다 . 그리고 필요할 때 더 많은 필드를 쉽게 추가할 수 있습니다.

그림 8. 가방에 제품별 메타데이터 추가

재생 및 시각화

ROS 1의 옵션 중 하나는 Cruise 엔지니어 가 개발하고 오픈 소스로 제공하는 백 재생 및 시각화 웹 도구인 Webviz 입니다. ROS 백 파일을 드래그 앤 드롭하여 데이터에 대한 즉각적인 시각적 통찰력을 얻을 수 있습니다. 저것과 같이 쉬운! 또한 웹 앱이므로 특별한 환경을 배포할 필요가 없습니다.

그림 5. 이 그림은 Esther S. Weon의 "Webviz: 로봇 데이터 시각화를 위한 오픈 소스 플랫폼" 기사에서 가져온 것입니다.

인터페이스를 사용자 정의할 수 있어 패널을 추가하고 한 곳에서 관련 데이터를 더 많이 볼 수 있습니다. 또한 다른 도구와 통합할 수 있습니다. 예를 들어 Bag Database 창 에서 바로 Webviz 를 열 수 있습니다. (이 설정은 여기 에 설명되어 있습니다 .)

그림 6. Bag Database의 메뉴에서 Webviz 웹 앱 열기

여기서 언급하고 싶은 또 다른 도구는 Foxglove Studio 입니다. 로보틱스에서 시각화와 분석이라는 동일한 목적을 가지고 있지만 ROS 1과 ROS 2를 모두 지원하고 상업적 지원을 제공함으로써 더 나아갑니다. Cruise의 Webviz 프로젝트의 포크로 시작하여 현재 적극적으로 개발되고 기능 세트를 확장하고 있습니다. 크로스 플랫폼 웹 앱과 Linux, macOS 및 Windows 장치에서 더 많은 기능과 사용자 지정 패널 확장을 잠금 해제하는 데스크톱 앱으로 모두 사용할 수 있습니다.

그림 7. Foxglove 인터페이스에서 가방 재생

Medium 의 블로그에서 Foxglove Studio 개발 및 업데이트에 대한 자세한 내용을 읽 거나 웹사이트 를 방문할 수 있습니다 .

가방 편집

ROS 1에서 백 파일을 편집하려면 Davide Faconti 의 rosbag_editor 를 확인하십시오 . 이 도구는 bag 파일에 일괄 변경 사항을 적용하는 것을 허용하지 않지만 예를 들어 시연을 위해 특정 bag을 편집하는 데 유용할 수 있습니다. 간단한 UI를 통해 주제의 이름을 수동으로 변경하고 제거하고, 파일의 시작 또는 끝을 잘라서 백의 지속 시간을 변경하고, 파일 크기를 더 작게 만들기 위해 압축 유형을 변경하고, 변형을 제거할 수 있습니다.

Evocargo에서는 ROS1에 기록된 가방을 일괄 편집할 수 있는 도구가 필요했기 때문에 엔지니어 Vladimir Burmistrov 가 ros_bag_migration 패키지 를 만들었습니다 . 기록된 백의 메시지 형식을 변경할 수 있습니다. 메시지의 이름을 바꾸고 삭제할 수 있을 뿐만 아니라 메시지를 둘로 나누고 특정 메시지 버전에 정의된 규칙을 적용할 수도 있습니다. 이 패키지는 업데이트된 메시지 정의 세트로 새 백을 기록하기로 결정하고 호환성을 위해 이전 백을 변경하려는 상황에 완벽하게 작동합니다.

그래프 작성

다음 으로 놀라운 그래프 빌더( Davide Faconti 의 또 다른 패키지)인 PlotJuggler 에 대해 이야기하겠습니다 . PlotJuggler 를 사용하면 시스템 또는 로봇 내부에서 흐르는 모든 데이터를 분석할 수 있습니다. 다음과 같은 기능 덕분에 디버깅이 훨씬 쉬워졌습니다.

  • 실시간으로 또는 PlotJuggler에 하나 또는 여러 개의 .bag 파일을 로드하여 ROS 주제의 데이터에 대한 그래프를 작성할 수 있습니다 .
  • 그림 9. 백 파일을 통해 슬라이딩
  • 여러 데이터 플롯을 추가하고 관리하는 것은 매우 사용자 친화적입니다. 예를 들어 일부 2D 데이터를 가져와 모든 타임스탬프에 대한 2D 위치를 시각화하여 플롯하여 XY 탭을 생성할 수 있습니다.
  • 예를 들어 데이터의 오프셋을 제거하고, 크기를 조정하고, 통합하고, 이상값을 제거하는 등 플롯에 대한 내장형 데이터 변환 기회가 많이 있습니다. 다양한 소스의 데이터를 비교하는 데 매우 유용한 변환 조합을 만들 수도 있습니다.
  • 적합한 변형 함수를 찾지 못한 경우 직접 생성할 수 있습니다. 예를 들어 쿼터니언에서 Yaw 각도를 추출하고 시각화하는 함수를 작성할 수 있습니다.
  • 마지막으로 중요한 것은! 킬러 기능: 가방을 다룰 때 "ROS Topic Re-Publisher"를 활성화할 수 있습니다. 즉, 시간 슬라이더를 원하는 순간으로 드래그할 수 있으며 PlotJuggler 는 선택한 타임스탬프에 해당하는 모든 항목의 데이터를 게시합니다. 이는 특정 순간의 카메라 이미지를 보거나 진단 메시지를 확인하거나 RVIZ와 같은 다른 시각화 도구에서 모든 데이터를 시각화하려는 경우에 매우 유용합니다.

메시지 전달

테스트 및 디버깅을 위해서는 실험 결과를 안정적으로 재현하는 것이 중요합니다. 예를 들어, 특정 센서 데이터가 포함된 가방에서 현지화 알고리즘을 테스트할 때 이 알고리즘을 실행할 때마다 동일한 결과를 기대할 수 있습니다. 그러나 ROS의 게시-구독 논리는 100% 메시지 전달을 보장할 수 없으며 노드가 동일한 순서로 백의 모든 메시지를 처리하지 않을 가능성이 있습니다.

ROS 1 용 batch_ros 패키지를 사용하면 작업에 중요한 주제를 백 파일에 지정할 수 있습니다. batch_ros는 이러한 주제의 각 메시지를 게시한 후 동기화 서비스 호출을 기다립니다. 노드가 정의된 순서대로 메시지를 하나씩 처리한 후 백 파일의 메시지가 게시되도록 합니다.

그림 10. 주제 중 하나에 대한 메시지가 전송된 후 재생이 중지되고 플레이어가 게시를 계속하라는 신호를 보내는 노드에서 트리거 서비스가 호출될 때까지 기다립니다.

따라서 batch_ros 는 백의 결정적이고 반복 가능한 처리를 보장합니다.

녹화 상태

백이 기록되는 동안 기본 ROS 1 구성은 "기록 중..." 메시지만 표시합니다. 문제가 발생하면 작업이 완료되고 실패한 경우에만 알 수 있습니다. 기록 프로세스를 보다 유익하게 만들려면 ROS 1용 rosbag_fancy 터미널 인터페이스를 사용해 보십시오. 기록 중인 주제, 메모리 사용량, 백 파일 크기 등과 같은 유용한 데이터를 모두 매우 간단한 테이블에 실시간으로 표시합니다.

그림 11. 이 그림은 github의 rosbag_fancy 페이지에서 가져온 것입니다.

다음 문제 및 가능한 해결 방법으로 안내하는 삭제된 메시지( Drops )의 수를 확인할 수도 있습니다.

여기까지 읽어 주셔서 감사합니다. ROS에 대한 경험을 우리가 하는 것만큼 향상시키는 것을 좋아해야 합니다! 요약해보자. 이 게시물에서는 Bag Database , rosbag_metadata , Webviz , Foxglove Studio , rosbag_editor , ros_bag_migration , PlotJuggler , rosbag_fancybatch_ros 와 같은 ROS 패키지를 살펴 보았습니다 .

이 패키지 선택이 유용하다고 생각되면 박수를 치고 댓글을 달아 알려주세요. 예를 들어 테스트, 시뮬레이션, 문서화 및 기타 목적을 위한 주목할만한 ROS 패키지가 있습니다.