Main Content

timeseries

選択したメッセージ プロパティの時系列オブジェクトの作成

説明

[ts,cols] = timeseries(bag) は、すべての数値およびスカラー メッセージ プロパティの時系列を作成します。この関数は、現在の BagSelection または rosbagreader オブジェクト bag 内の各メッセージを ts として評価します。cols 出力引数には、プロパティ名が文字ベクトルの cell 配列として格納されます。

返される時系列オブジェクトは、メッセージ全体ではなく特定のメッセージ プロパティのみを格納しているため、メモリ効率に優れています。

[ts,cols] = timeseries(bag,property) は、特定のメッセージ プロパティ property の時系列を作成します。プロパティ名は入れ子にすることもできます。たとえば、ロボットの x 軸上の位置を表す Pose.Pose.Position.X を指定できます。

[ts,cols] = timeseries(bag,property,...,propertyN) は、範囲を限定したメッセージ プロパティの時系列を作成します。各プロパティは、時系列オブジェクト内の異なる列です。

すべて折りたたむ

rosbag を読み込みます。ファイル パスを指定します。

bag = rosbag('ex_multiple_topics.bag');

特定のトピックを選択します。時系列では単一のトピックのみがサポートされます。

bagSelection = select(bag,'Topic','/odom');

'/odom' トピックの時系列を作成します。

ts = timeseries(bagSelection);

rosbag を読み込みます。ファイル パスを指定します。

bag = rosbag('ex_multiple_topics.bag');

特定のトピックを選択します。時系列では単一のトピックのみがサポートされます。

bagSelection = select(bag,'Topic','/odom');

'/odom' トピックにおける 'Pose.Pose.Position.X' プロパティの時系列を作成します。

ts = timeseries(bagSelection,'Pose.Pose.Position.X');

rosbag を読み込みます。ファイル パスを指定します。

bag = rosbag('ex_multiple_topics.bag');

特定のトピックを選択します。時系列では単一のトピックのみがサポートされます。

bagSelection = select(bag,'Topic','/odom');

'/odom' トピックにおけるすべての 'Twist' 角度プロパティの時系列を作成します。

ts = timeseries(bagSelection,'Twist.Twist.Angular.X', ...
          'Twist.Twist.Angular.Y', 'Twist.Twist.Angular.Z');

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

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

bagMsgs = rosbagreader("ros_multi_topics.bag")
bagMsgs = 
  rosbagreader with properties:

           FilePath: '/mathworks/devel/bat/Bdoc22b/build/matlab/toolbox/robotics/robotexamples/ros/data/bags/ros_multi_topics.bag'
          StartTime: 201.3400
            EndTime: 321.3400
        NumMessages: 36963
    AvailableTopics: [4x3 table]
    AvailableFrames: {0x1 cell}
        MessageList: [36963x4 table]

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

bagMsgs2 = select(bagMsgs,...
    Time=[bagMsgs.StartTime bagMsgs.StartTime + 1],...
    Topic='/odom')
bagMsgs2 = 
  rosbagreader with properties:

           FilePath: '/mathworks/devel/bat/Bdoc22b/build/matlab/toolbox/robotics/robotexamples/ros/data/bags/ros_multi_topics.bag'
          StartTime: 201.3400
            EndTime: 202.3200
        NumMessages: 99
    AvailableTopics: [1x3 table]
    AvailableFrames: {0x1 cell}
        MessageList: [99x4 table]

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

msgs = readMessages(bagMsgs2)
msgs=99×1 cell array
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 Odometry}
    {1x1 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: tsdata.timemetadata
            Data: [99x2 double]
        DataInfo: tsdata.datametadata

入力引数

すべて折りたたむ

rosbag のメッセージのインデックス。BagSelection または rosbagreader オブジェクトとして指定します。BagSelection オブジェクトは、rosbag を呼び出すことによって取得できます。

プロパティ名。string スカラーまたは文字ベクトルとして指定します。複数のプロパティを指定できます。各プロパティ名は個別の入力で、時系列オブジェクト内の異なる列を表します。

出力引数

すべて折りたたむ

時系列。Time オブジェクト ハンドルとして返されます。

プロパティ名のリスト。文字ベクトルの cell 配列として返されます。

バージョン履歴

R2019b で導入