Main Content

ros2bagreader

ROS 2 bag ログ ファイル情報へのアクセス

R2021a 以降

    説明

    ros2bagreader オブジェクトは、ROS 2 bag ファイル内のメッセージのインデックスです。このオブジェクトを使用して、ROS 2 bag ファイルからメッセージ データを抽出したり、特定の条件に基づいてメッセージを選択したりできます。ros2bagreader オブジェクトは、sqlite3 (DB3) および MCAP ストレージ形式をサポートします。

    作成

    説明

    bagReader = ros2bagreader(folderpath)ros2bagreader オブジェクト bagReader を作成します。このオブジェクトには、入力ファイルまたはフォルダーの ROS 2 bag ファイルから得られるすべてのメッセージが含まれます。folderpath の入力で FilePath プロパティが設定されます。

    ROS 2 bag ファイルを使用して、ROS 2 ネットワーク経由で送信されるメッセージを保存できます。結果として得られた bag ファイルは、オフライン解析および可視化に使用できます。

    folderpath を単一ファイルとして指定すると、bag フォルダー内の単一の DB3 または MCAP ファイルを読み取ることができます。また、folderpath をフォルダーとして指定すると、bag フォルダー内のすべての DB3 または MCAP ファイルを読み取ることもできます。DB3 ファイルが含まれる bag フォルダーへの読み取りおよび書き込みアクセス権があることを確認してください。ただし、MCAP ファイルを読み取るには、bag フォルダーへの読み取りアクセスのみが必要です。

    圧縮された ROS 2 bag ファイルを、file または message 圧縮モードおよび ZSTD 圧縮形式で読み取ることができます。

    メモ

    圧縮された ROS 2 bag ファイルを読み取るには、フォルダーの場所として folderpath を指定します。

    ROS 2 bag ファイルにカスタム メッセージが含まれている場合は、ros2bagreader オブジェクトを作成する前に、関数 ros2genmsg を使用して MATLAB 用のカスタム メッセージを作成します。

    プロパティ

    すべて展開する

    この プロパティ は読み取り専用です。

    ROS 2 bag ファイルまたはフォルダーの絶対パス。文字ベクトルとして指定します。

    データ型: char

    この プロパティ は読み取り専用です。

    使用可能な ROS 2 bag ファイルのリスト。string 配列として指定します。

    データ型: string

    この プロパティ は読み取り専用です。

    最初のメッセージのタイムスタンプ。秒単位のスカラーとして指定します。

    データ型: double

    この プロパティ は読み取り専用です。

    最後のメッセージのタイムスタンプ。秒単位のスカラーとして指定します。

    データ型: double

    この プロパティ は読み取り専用です。

    メッセージ数。スカラーとして指定します。

    データ型: double

    この プロパティ は読み取り専用です。

    使用可能なトピックの table。table として指定します。table の各行は、1 つのトピック、このトピックのメッセージ数、メッセージ タイプ、およびメッセージの定義を示します。

    データ型: table

    この プロパティ は読み取り専用です。

    使用可能な座標系のリスト。文字ベクトルの cell 配列として指定します。座標系間の特定の変換が使用可能かどうかを確認するには、オブジェクト関数 canTransform を使用します。変換をクエリするには、オブジェクト関数 getTransform を使用します。

    データ型: cell

    この プロパティ は読み取り専用です。

    メッセージのリスト。table として指定します。table の各行は、1 つのメッセージを示します。

    データ型: 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\echakrab\OneDrive - MathWorks\Documents\MATLAB\ExampleManager\echakrab.Bdoc22b.ros2bagExamples\ros-ex96596996\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");

    選択内容にあるメッセージを取得します。

    msgsFiltered = readMessages(bagSel);

    バージョン履歴

    R2021a で導入

    すべて展開する