bagは、ROSにおけるmessageのdataを蓄えるROSにおけるファイルフォーマットの一つです。Bags -- それらの拡張子が'.bag'であるが故の名前 --はROSの中で重要な役回りを持ちます。そして、それを蓄えたり処理したり解析したり可視化したりするようなツールが豊富に存在します。

Computation Graphのオンラインでの使用

Bagsは基本的にrosbagによって作られます。rosbagは、一つ以上のROSのtopicsに対してサブスクライブさせて、連続したメッセージのデータを受け取るたびにファイルの中に蓄えます.これらのバグファイルは、情報を取得した同じtopicに対してかまたは、リマップされた新しいtopicに対してデータを送り、記録時と同じような状態を再現することができます。

ROS Computation Graphの中でバグファイルを使用することは、一般的にROSのnodesに同じデータを渡すこととなんら違いはありませんが、メッセージデータの中に蓄えられたタイムスタンプ付のデータを使用すると、問題のあたりの時間まわりを実行することができます。これのために、rosbagツールは、データをファイルに記録するときの時間に対応したsimulated clockをパブリッシュするオプション機能がついてます。

バグファイルのフォーマットは、ROSのネットワークのトランスポート層で使われるのと同じ表現でメッセージを蓄えるので、記録するのにも再現するのにもとても効率のよいものとなっております。

オフラインでの使用とデータのマイグレーション

BagsはデータのログをとるためのROSにおける主要な機構ですので、オフラインのときの様々なツールが存在します。使用者は、バグファイルのツールチェインを用いて、近いうちに使うため、データセットを記録し、可視化し、ラベル付を行い、保存します。バグファイルは、PR2ロボットの長期のハードウェア診断のログの記録をするためにも使われます。

rxbagのようなツールは、値をプロットしたり、イメージを表示したりして、バグファイルを可視化することができます。また、rostopicのコマンドを用いて、コンソールからすぐにバグファイルのデータを検査することもできます。

rosrecordのパッケージにあるprogrammatic APIsはC++ や Pythonのパッケージに蓄えられたメッセージを反復させることができます。より迅速なバグファイルの実行をするには、rosbagがバグファイルをrebaggingすることをサポートしており、特定のフィルタに一致するメッセージを新しいバグファイルに抜き出すことを可能にします。

バグファイルに蓄えられたデータは、価値の高いものが多いため、バグファイルはmsgファイルが更新されたときでも、簡単にマイグレートできるようにデザインされています。バグファイルのフォーマットは、対応するメッセージデータのmsgファイルを蓄え、rosbagmigrationのようなツールは、バグファイルが古くなったときに、自動的にバグファイルをアップデートするためのルールを書くことができるようにしてくれます。

Bag ツール

  • rosbag: 記録や再現、そのほかの行動をするための統合されたコンソールツール.

  • rxbag: バグファイルデータを可視化するためのグラフィカルなツール.

  • rostopic: echolistのコマンドはバグファイルのときも使用できます。

古いツール

以下のツールは、rosbagに内包されましたが、未だにサポートされています。

Bag フォーマット

バグファイルの基礎となるフォーマットは、ユーザと関連があってはなりません。変更には従いつつも、後方の互換性については、プログラムのアクセスライブラリやカスタムの変更ライブラリによって保持されます。

Wiki: ja/Bags (last edited 2013-02-15 09:05:54 by Yuto Inagaki)