Main Content

ROS ログ ファイル (rosbag)

はじめに

rosbag または bag は、ROS メッセージ データを保存するための ROS のファイル形式です。これらの bag は多くの場合、1 つ以上の ROS トピックにサブスクライブし、受け取ったメッセージ データを効率的なファイル構造で保存することにより作成されます。MATLAB® では、これらの rosbag ファイルの読み取り、メッセージ データのフィルター処理や抽出ができます。以下の節では、MATLAB® での rosbag の構造と、データを抽出するためのワークフローの詳細を説明します。

MATLAB の rosbag 構造体

rosbag ログファイルにアクセスする場合、rosbag を呼び出し、オブジェクトのファイル パスを指定します。MATLAB はその後、rosbag からのすべてのメッセージのインデックスが含まれる BagSelection オブジェクトを作成します。

BagSelection オブジェクトには、rosbag に関連する以下のプロパティがあります。

  • FilePath: rosbag ファイルの絶対パスの文字ベクトル。

  • StartTime: 最初のメッセージが記録された時間を表すスカラー。

  • EndTime: 最後のメッセージが記録された時間を表すスカラー。

  • NumMessages: ファイルに含まれるメッセージの数を表すスカラー。

  • AvailableTopics: bag に記録されたトピックとメッセージ タイプのリスト。これは各トピックのメッセージの数、メッセージ タイプ、メッセージの定義を一覧表示する table データとして保存されます。table データ型の詳細については、table 内のデータへのアクセスを参照してください。この table の出力例を以下に示します。

    ans = 
    
                               NumMessages         MessageType          MessageDefinition
                               ___________    ______________________    _________________
    
        /clock                 12001          rosgraph_msgs/Clock       [1x185  char]    
        /gazebo/link_states    11999          gazebo_msgs/LinkStates    [1x1247 char]    
        /odom                  11998          nav_msgs/Odometry         [1x2918 char]    
        /scan                    965          sensor_msgs/LaserScan     [1x2123 char]    
  • MessageList: bag にあるすべてのメッセージのリスト。メッセージが記録された時点のタイム スタンプで行が並べ替えられます。このリストにはインデックス付けができ、リストの一部をこの方法で選択できます。select を呼び出すと、タイム スタンプ、トピック、またはメッセージ タイプに基づきサブセットを選択できます。

また、BagSelection オブジェクトにはすべてのメッセージのインデックスが格納されていることに注意してください。ただし、データの抽出には関数を使用しなければなりません。これらの情報の抽出の詳細について、インデックスに基づいてメッセージを cell 配列として取得する場合は readMessages を、指定したプロパティのデータを時系列として読み取る場合は timeseries を参照してください。

rosbag の選択のワークフロー

rosbag を扱う際、データの抽出方法について一般的な手順があります。

  • rosbag を読み込む: rosbag とファイル パスを呼び出し、ファイルを読み込んで BagSelection を作成します。

  • 使用可能なメッセージを調べる: BagSelection のプロパティ (AvailableTopicsNumMessagesStartTimeEndTimeMessageList) を調べ、解析のためにメッセージのサブセットを選択する方法を決めます。

  • メッセージを選択する: select を呼び出して、目的のプロパティに基づきメッセージを選択します。

  • メッセージ データを抽出する: readMessages または timeseries を呼び出し、メッセージ データを cell 配列または時系列データ構造体として取得します。

  • データを可視化、解析、または処理する: 抽出したデータを特定の用途のために使用します。データをプロットしたり、データを処理するためのアルゴリズムを開発できます。

以下の図も、このワークフローを示したものです。

Workflow for rosbag selection.

制限

MATLAB では、rosbag のサポートについていくつかの制限があります。

  • MATLAB では、圧縮されていない rosbag のみ解析可能です。圧縮された rosbag を解凍するためのツールについては、ROS Wiki を参照してください。

  • v2.0 形式の rosbag のみがサポートされます。bag の各種形式の詳細については、ROS Wiki を参照してください。

  • rosbag のファイル パスは常にアクセス可能でなければなりません。メッセージ選択処理ではデータは取得されないため、メッセージ データにアクセスしたときにファイルが読み取り可能である必要があります。

参考

| |

関連するトピック