メインコンテンツ

select

rosbag 内のメッセージのサブセットを選択

R2021b 以降

    説明

    bagreadersel = select(bagreader) は、rosbagreader オブジェクト bagreader 内のすべてのメッセージを含む rosbagreader オブジェクト bagreadersel を返します。

    この関数は、rosbagreader オブジェクトのコピーを作成するか、指定したメッセージ選択を含む新しい rosbagreader オブジェクトを返します。

    bagreadersel = select(bagreader,Name=Value) は、1 つ以上の名前と値の引数を使用して追加のパラメーターを指定します。たとえば Topic="/odom" は、メッセージのサブセットを、トピック /odom によるフィルター処理で選択します。

    すべて折りたたむ

    rosbag ログ ファイルを読み込み、選択した条件に基づいて特定のメッセージを解析します。

    rosbag ログ ファイルにあるすべてのメッセージの rosbagreader オブジェクトを作成します。

    bagMsgs = rosbagreader("ex_multiple_topics.bag")
    bagMsgs = 
      rosbagreader with properties:
    
               FilePath: '/tmp/Bdoc25b_2988451_749712/tp57470b32/ros-ex26633229/ex_multiple_topics.bag'
              StartTime: 201.3400
                EndTime: 321.3400
            NumMessages: 36963
        AvailableTopics: [4×3 table]
        AvailableFrames: {0×1 cell}
            MessageList: [36963×4 table]
    
    

    メッセージのサブセットを、タイムスタンプとトピックに基づいて選択します。

    bagMsgs2 = select(bagMsgs,...
        Time=[bagMsgs.StartTime bagMsgs.StartTime + 1],...
        Topic='/odom')
    bagMsgs2 = 
      rosbagreader with properties:
    
               FilePath: '/tmp/Bdoc25b_2988451_749712/tp57470b32/ros-ex26633229/ex_multiple_topics.bag'
              StartTime: 201.3400
                EndTime: 202.3200
            NumMessages: 99
        AvailableTopics: [1×3 table]
        AvailableFrames: {0×1 cell}
            MessageList: [99×4 table]
    
    

    選択内容にあるメッセージを cell 配列として取得します。

    msgs = readMessages(bagMsgs2)
    msgs=99×1 cell array
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
        {1×1 Odometry}
          ⋮
    
    

    特定のメッセージ プロパティを時系列として返します。

    ts = timeseries(bagMsgs2,...
        'Pose.Pose.Position.X', ...
        'Twist.Twist.Angular.Y')
      timeseries
    
      Timeseries contains duplicate times.
    
      Common Properties:
                Name: '/odom Properties'
                Time: [99x1 double]
            TimeInfo: [1x1 tsdata.timemetadata]
                Data: [99x2 double]
            DataInfo: [1x1 tsdata.datametadata]
    
      More properties, Methods
    

    入力引数

    すべて折りたたむ

    rosbag のメッセージのインデックス。rosbagreader オブジェクトとして指定します。

    名前と値の引数

    すべて折りたたむ

    オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

    例: Topic="/odom" は、メッセージのサブセットを、トピック /odom によるフィルター処理で選択します。

    ROS メッセージ タイプ。string スカラー、文字ベクトル、string スカラーの cell 配列、または文字ベクトルの cell 配列として指定します。複数のメッセージ タイプを指定する場合は cell 配列を使用します。

    例: select(bagreader,MessageType={"nav_msgs/Odometry","rosgraph_msgs/Clock"})

    データ型: char | string | cell

    rosbag 選択の開始時間と終了時間。n 行 2 列のベクトルとして指定します。

    例: select(bagreader,Time=[bag.StartTime,bag.StartTime+1])

    データ型: double

    ROS トピック名。string スカラー、文字ベクトル、string スカラーの cell 配列、または文字ベクトルの cell 配列として指定します。複数のトピック名を指定する場合は cell 配列を使用します。

    例: select(bagreader,Topic={"/odom","/clock"})

    データ型: char | string | cell

    出力引数

    すべて折りたたむ

    rosbag メッセージのコピーまたはサブセット。rosbagreader オブジェクトとして返されます。

    バージョン履歴

    R2021b で導入