このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
rosbagまたは包は,ROSメッセージデータを保存するためのROSのファイル形式です。これらの袋は多くの場合,1つ以上のROSトピックにサブスクライブし,受け取ったメッセージデータを効率的なファイル構造で保存することにより作成されます。MATLAB®では,これらのrosbagファイルの読み取り,メッセージデータのフィルター処理や抽出ができます。以下の節では,MATLAB®でのrosbagの構造と,データを抽出するためのワークフローの詳細を説明します。
rosbagログファイルにアクセスする場合,rosbag
を呼び出し,オブジェクトのファイルパスを指定します。MATLABはその後、rosbag からのすべてのメッセージのインデックスが含まれるBagSelection
オブジェクトを作成します。
BagSelection
オブジェクトには,rosbagに関連する以下のプロパティがあります。
FilePath
: rosbagファイルの絶対パスの文字ベクトル。
开始时间
:最初のメッセージが記録された時間を表すスカラー。
EndTime
:最後のメッセージが記録された時間を表すスカラー。
NumMessages
:ファイルに含まれるメッセージの数を表すスカラー。
AvailableTopics
:包に記録されたトピックとメッセージタイプのリスト。これは各トピックのメッセージの数,メッセージタイプ,メッセージの定義を一覧表示する表データとして保存されます。表データ型の詳細については,表内のデータへのアクセスを参照してください。この表の出力例を以下に示します。
ans = NumMessagesMessageTypeMessageDefinition___________ ______________________ _________________ /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
:包にあるすべてのメッセージのリスト。メッセージが記録された時点のタイムスタンプで行が並べ替えられます。このリストにはインデックス付けができ,リストの一部をこの方法で選択できます。选择
を呼び出すと,タイムスタンプ,トピック,またはメッセージタイプに基づきサブセットを選択できます。
また,BagSelection
オブジェクトにはすべてのメッセージのインデックスが格納されていることに注意してください。ただし,データの抽出には関数を使用しなければなりません。これらの情報の抽出の詳細について,インデックスに基づいてメッセージを细胞配列として取得する場合はreadMessages
を,指定したプロパティのデータを時系列として読み取る場合はtimeseries
を参照してください。
rosbagを扱う際,データの抽出方法について一般的な手順があります。
rosbagを読み込む:rosbag
とファイルパスを呼び出し,ファイルを読み込んでBagSelection
を作成します。
使用可能なメッセージを調べる:BagSelection
のプロパティ(AvailableTopics
、NumMessages
、开始时间
、EndTime
、MessageList
)を調べ,解析のためにメッセージのサブセットを選択する方法を決めます。
メッセージを選択する:选择
を呼び出して,目的のプロパティに基づきメッセージを選択します。
メッセージデータを抽出する:readMessages
またはtimeseries
を呼び出し,メッセージデータを细胞配列または時系列データ構造体として取得します。
データを可視化,解析,または処理する:抽出したデータを特定の用途のために使用します。データをプロットしたり,データを処理するためのアルゴリズムを開発できます。
以下の図も,このワークフローを示したものです。
MATLABでは,rosbagのサポートについていくつかの制限があります。
rosbag
|readMessages
|BagSelection