メインコンテンツ

readMessages

R2026b

ros2bagreader オブジェクトからメッセージを読み取り

    説明

    msgs = readMessages(bag) は、ros2bagreader オブジェクト bag 内のすべてのメッセージからデータを返します。この関数は、メッセージを構造体の cell 配列として返します。

    例

    msgs = readMessages(bag,rows) は、rows で指定された行のメッセージからデータを返します。有効な行インデックスの範囲は 1 ~ bag.NumMessages です。readMessages は、メッセージ リスト全体が作成されるのを待つことなく、要求されたインデックス範囲のインデックス付けがバックグラウンドで完了するとすぐに読み取りを開始します。要求された範囲が現時点でインデックス付けの完了している部分を超えている場合、MATLAB® はその範囲が利用可能になるまで待機します。

    例

    すべて折りたたむ

    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\user\OneDrive - MathWorks\Documents\MATLAB\ExampleManager\user.Bdoc26b\ros-ex96596996\ros2_netwrk_bag'
          FileInformation: "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]
        CompressionFormat: 'none'
          CompressionMode: 'none'
    
    

    ros2bagreader オブジェクト内のすべてのメッセージを取得します。

    msgs = readMessages(bagReader);

    メッセージのサブセットを、トピックによるフィルター処理で選択します。

    bagSel = select(bagReader,"Topic","/odom")
    bagSel = 
      ros2bagreader with properties:
    
               FilePath: 'C:\Users\user\OneDrive - MathWorks\Documents\MATLAB\ExampleManager\user.Bdoc26b\ros-ex96596996\ros2_netwrk_bag'
          AvailableBags: "ros2_netwrk_bag.db3"
              StartTime: 1.6020e+09
                EndTime: <preparing>
        AvailableTopics: [1×3 table]
        AvailableFrames: {0×1 cell}
            MessageList: <preparing>
            NumMessages: 5275
    
    

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

    msgsFiltered = readMessages(bagSel);

    入力引数

    すべて折りたたむ

    ros2bagreader オブジェクト内のメッセージ。ros2bagreader オブジェクトとして指定します。

    ros2bagreader オブジェクトの行。n 要素ベクトルとして指定します。n はメッセージの取得元の行数です。ベクトルの各エントリは、bag 内の番号付きメッセージにそれぞれ対応します。行の範囲は [1 bag.NumMessages] です。

    出力引数

    すべて折りたたむ

    ROS 2 メッセージ データ。構造体の cell 配列として返されます。

    バージョン履歴

    R2021a で導入

    すべて展開する

    参考

    オブジェクト

    関数