주요 콘텐츠

ros2bagreader

ROS 2 bag 로그 파일 정보 액세스

R2021a 이후

    설명

    ros2bagreader 객체는 ROS 2 bag 파일 내 메시지의 인덱스입니다. 이 객체를 사용하여 ROS 2 bag 파일에서 메시지 데이터를 추출하거나, 특정 기준에 따라 메시지를 선택할 수 있습니다. ros2bagreader 객체는 sqlite3(DB3)과 MCAP 저장 형식을 지원합니다.

    생성

    설명

    bagReader = ros2bagreader(folderpath)는 입력 파일 또는 폴더에 있는 ROS 2 bag 파일의 모든 메시지를 포함하는 ros2bagreader 객체 bagReader를 만듭니다. folderpath 입력값은 FilePath 속성을 설정합니다.

    ROS 2 bag 파일을 사용하여 ROS 2 네트워크를 통해 송신되는 메시지를 저장할 수 있습니다. 그런 다음, 결과로 생성된 bag 파일을 오프라인 분석과 시각화에 사용할 수 있습니다.

    folderpath를 하나의 파일로 지정하여 bag 폴더의 단일 DB3 파일 또는 단일 MCAP 파일을 읽어올 수 있습니다. 또는 folderpath를 폴더로 지정하여 bag 폴더의 모든 DB3 파일 또는 MCAP 파일을 읽어올 수 있습니다. DB3 파일을 포함하는 bag 폴더에 대한 읽기 액세스 권한과 쓰기 액세스 권한이 있는지 확인하십시오. 하지만 MCAP 파일을 읽어오기 위해서는 bag 폴더에 대한 읽기 액세스 권한만 있어야 합니다.

    file 또는 message 압축 모드와 ZSTD 압축 형식으로 압축된 ROS 2 bag 파일을 읽어올 수 있습니다.

    참고

    압축된 ROS 2 bag 파일을 읽어오려면 folderpath를 폴더 위치로 지정합니다.

    ROS 2 bag 파일에 사용자 지정 메시지가 포함된 경우, ros2bagreader 객체를 만들기 전에 ros2genmsg 함수를 사용하여 MATLAB을 위한 사용자 지정 메시지를 만듭니다.

    예제

    속성

    모두 확장

    읽기 전용 속성입니다.

    ROS 2 bag 파일 또는 폴더의 절대 경로로, 문자형 벡터로 지정됩니다.

    데이터형: char

    읽기 전용 속성입니다.

    사용 가능한 ROS 2 bag 파일 목록으로, string형 배열로 지정됩니다.

    데이터형: string

    읽기 전용 속성입니다.

    첫 번째 메시지의 타임스탬프로, 스칼라로 지정됩니다(단위: 초).

    데이터형: double

    읽기 전용 속성입니다.

    마지막 메시지의 타임스탬프로, 스칼라로 지정됩니다(단위: 초).

    데이터형: double

    읽기 전용 속성입니다.

    메시지의 개수로, 스칼라로 지정됩니다.

    데이터형: double

    읽기 전용 속성입니다.

    사용 가능한 토픽의 테이블로, 테이블로 지정됩니다. 테이블의 각 행에는 하나의 토픽, 해당 토픽에 대한 메시지 개수, 메시지 유형, 메시지 정의가 나열됩니다.

    데이터형: table

    읽기 전용 속성입니다.

    사용 가능한 좌표 프레임 목록으로, 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 프레임 간에 특정 변환을 사용할 수 있는지 확인하려면 canTransform 객체 함수를 사용합니다. 변환을 쿼리하려면 getTransform 객체 함수를 사용합니다.

    데이터형: cell

    읽기 전용 속성입니다.

    메시지 목록으로, 테이블로 지정됩니다. 테이블의 각 행에는 하나의 메시지가 나열됩니다.

    데이터형: table

    객체 함수

    readMessagesros2bagreader 객체에서 메시지 읽어오기
    selectSelect subset of messages in ros2bagreader
    timetableCreate timetable for selected message properties in ROS 2 bag file
    getTransformReturn transformation between two coordinate frames
    canTransformVerify if transformation is available

    예제

    모두 축소

    ROS 2 bag 로그 파일이 들어 있는 ZIP 파일 압축을 풀고 로그 폴더의 전체 경로를 지정합니다.

    unzip("ros2_netwrk_bag.zip");
    folderPath = fullfile(pwd,"ros2_netwrk_bag");

    로그 파일의 모든 메시지를 포함하는 ros2bagreader 객체를 만듭니다.

    bagReader = ros2bagreader(folderPath);

    ros2bagreader 객체의 내용에 대한 정보를 가져옵니다.

    baginfo = ros2("bag","info",folderPath)
    baginfo = struct with fields:
             Path: 'C:\Users\ros2_netwrk_bag\ros2_netwrk_bag.db3'
          Version: '1'
        StorageId: 'sqlite3'
         Duration: 207.9020
            Start: [1×1 struct]
              End: [1×1 struct]
             Size: 16839538
         Messages: 166867
            Types: [4×1 struct]
           Topics: [4×1 struct]
    

    ros2bagreader 객체의 모든 메시지를 가져옵니다.

    msgs = readMessages(bagReader);

    토픽으로 필터링된, 메시지의 일부를 선택합니다.

    bagSel = select(bagReader,"Topic","/odom")
    bagSel = 
      ros2bagreader with properties:
    
               FilePath: 'C:\Users\ros2_netwrk_bag'
          AvailableBags: "ros2_netwrk_bag.db3"
              StartTime: 1.6020e+09
                EndTime: 1.6020e+09
        AvailableTopics: [1×3 table]
        AvailableFrames: {0×1 cell}
            MessageList: [5275×3 table]
            NumMessages: 5275
    

    선택한 부분의 메시지를 가져옵니다.

    msgsFiltered = readMessages(bagSel);

    버전 내역

    R2021a에 개발됨

    모두 확장