rosbag2 QoS とタイムスタンプ付きの録音・再生

rosbag2はタイムスタンプ付きの ROS 2 メッセージを記録し、それをROSインターフェースを通じて再生します。完成したバッグディレクトリは、必要なすべてのトピックが接続されていること、メッセージが物理的なタイミングを保持していたこと、あるいは保存がセンサーのバーストを持続していることを証明するものではありません。データ受容はトピックごとに実施されなければなりません。

互換性QoS、レコーダーがデータを受信できるかどうか、再生が消費者に届くかどうかに影響を与えます。ソースヘッダースタンプはレコーダー受信時間と異なる場合があります。圧縮、キャッシュサイズ、ストレージプラグイン、ファイル分割、取引リソースと回復動作。これらの選択肢はバッグと一緒に保存してください。

このガイドを、 ROS 2 QoS ガイドロボット学習データ品質監査と組み合わせてご利用ください。コマンドを再生する前にアクチュエーターを分離してください。

バッグをタイムドメッセージデータセットとして扱う

バッグの価値は、メッセージペイロード、トピック識別、タイプ定義、送信元タイムスタンプ、記録タイムスタンプ、および周囲のシステム構成から決まります。大きなファイルでも、高レートストリームのすべてのコマンドを説明する低レートモードのトピックを見逃すことがあります。

記録前に分析または再現の目標を定義してください。訓練、インシデント再構築、校正、可視化には異なるトピックと時間の正確さが必要です。必須およびオプションのストリームを含む機械可読のマニフェストを記録します。

デモンストレーション中にフランカのロボットアームを物理的に操作している人物
デモンストレーションが再利用可能なデータになるのは、ロボットの状態、コマンド、観察、タイミングが一体化されて初めてです。出典: Wikimedia Commons。ライセンス: CC BY-SA 4.0

トピック、型、想定レートを固定する

トピック名、種類、期待される出版社、名目上の料金、最大ギャップ、 QoS、保持優先順位をリストアップしてください。センサーや動作データを解釈するために必要な場合は、/tf、/tf_static、クロック、キャリブレーション、パラメータ、モード変更を含めてください。

自動発見は新しいトピックを捕捉できますが、短命なトピックがディスカバリーポーリングより先に現れることや、互換性のないエンドポイントがデータを交換することを保証するわけではありません。毎回のラン終了時に最終バッグのメタデータとマニフェストを比較してください。

契約項目記録前録音後故障信号
テーマと種類フリーズマニフェストメタデータの比較欠損したストリーム
レートとカウント推定持続時間カウント測定ギャップバーストロス
QoS出版社を調査する接続確認サイレントゼロカウント
時計時間源を宣言するステップとゼロタイムの検出壊れた年代記
構成バージョンソフトウェアとキャリブレーションバッグと一緒に保管してください解釈不能なデータ

QoS 無言で空っぽな話題を作り出すことができます

レコーダーはサブスクリプション制であり、出版社と互換性がある必要があります。信頼性と耐久性の不一致はコミュニケーションを妨げる可能性があります。オーバーライドは必要かもしれませんが、それは全体的に適用されるのではなく、検査済みエンドポイントから導き出されるべきです。

ミッション前にエンドポイント検査と短いトライアルを行ってください。 現在のrosbag2リポジトリとドキュメント はブランチごとに機能を追跡しているため、使用された正確なROSディストリビューションとパッケージバージョンをアーカイブしてください。

受信時とソーススタンプを別

メッセージヘッダーは、露出、サンプリング、ドライバー処理、または他のソース定義イベントを表すことがあります。rosbag2はレコーダーがシリアルメッセージを受信した時も記録します。ネットワーク遅延と実行遅延はこれらの時間を分けることができますが、一部のメッセージには標準的なヘッダーがありません。

各トピックのタイムスタンプの意味を文書化してください。ソースと記録時間分布を比較し、不可能な順序付けにフラグを立てましょう。単調記録時間のバッグでも、同期していない装置からのセンサースタンプを入れることは可能です。

5段階のrosbag2データ受容ワークフロー
各トピックがその契約と照合される際に、サイレント・オブ・デミセクションが発生します。出典:Physical AI Lab。

平均スループットではなくバーストのサイズ

平均バイト毎秒を計算し、同時にカメラ、ライダー、ポイントクラウドのバーストをテストします。シリアライズ、キャッシュコピー、圧縮およびストレージフラッシュは短いピークを生み出します。1つの逐次ファイルを用いたディスクベンチマークでは、パイプライン全体を再現することはできません。

レコーダーのキャッシュ占有状況、メッセージのドロップインジケーター、CPU、メモリ、ディスクレイテンシ、サーマルステートを監視します。ミッション期間中は全てのプロデューサーをアクティブにして進めましょう。メタデータ、分割、障害回復のためのスペースを残し、ファイルシステムを限界まで埋めるのではなく。

ボトルネックメートル法応力条件試験への緩和策
発見か QoS連結トピックカウント故出版社静的リストまたはオーバーライド
レコーダーキャッシュ占有率と落としセンサーバーストキャッシュと書き込みのチューニング
CPU利用率とコールバック遅延圧縮スレッドとコーデックの選択
保管書き込み遅延とキューフラッシュまたは熱限界より速いメディアか分割
再生コンシューマーサンプル年齢とキュー高いリプレイ率料金と QoS プラン

回復のためにストレージと分割を選んでください

ストレージプラグインはフォーマットや挙動が異なります。ファイル分割は、中断後にコピー、インデックス化、または回復すべきユニットを制限します。運用の取り扱いに応じてサイズや持続時間で分割しつつ、各セグメントで消費者が必要な一時的・ローカルコンテキストを受け取っているか確認してください。

代表的なメディアでの急激な電力喪失、プロセス終了、再インデックスまたは復旧手順のテスト。1つの大きなファイルを最大化する設計は、インシデント損失を増やしてフィールドアップロードの遅延を増やす可能性があります。

圧縮はストレージと計算、遅延を代償として使います

圧縮はCPUを消費し遅延を増やす一方で、ディスクの帯域幅や容量を削減します。メッセージ圧縮とファイル圧縮は、細分度や回復特性が異なります。高度に圧縮されたカメラトピックは、処理オーバーヘッドを支払う一方でほとんど得られないかもしれません。

録音パソコンで正確なトピックミックスとコーデックをベンチマークしてください。総落とし、CPUの尾端、書き込み遅延、最終サイズを測定します。レコーダーが最悪のケース入力より先行していることを確認せずに、ポリシーによる圧縮を有効にしないでください。

トリガー前後の証拠を残すスナップショット記録を活用する

循環型またはスナップショット型のワークフローは、最近のデータをメモリに保持し、イベントが発生すると書き込みます。これにより、間欠的な故障前のコンテキストを保存しつつ、シフト全体を保存しません。また、電力が切れたりトリガーが遅すぎたりするとバッファを失うリスクもあります。

バッファ持続時間、メモリキャップ、トリガーソース、イベント後間隔を定義します。複数のトリガー、分割動作、同時コピーのテストをしましょう。トリガーイベント自体を記録し、分析者が原因とキャプチャを整合させられるようにしましょう。

シミュレーション時刻と時刻の不連続を明示的に処理する

シミュレーション時間で記録する際、レコーダーは/clockに依存します。現在のrosbag2のドキュメントでは、最初の有効なクロックより前の記録はゼロタイム問題を引き起こす可能性があると警告しています。再生の挙動はクロックの公開や消費者のuse_sim_time設定にも依存します。

テスト:一時停止、リセット、後ろにジャンプして、再スタート。ワールド、シード、シミュレーター版を保存します。ダウンストリームツールが明示的にサポートしていない限り、タイムジャンプはエピソードの境界として扱うべきです。

再生は新しいエンドポイント契約を再作成します

再生中はrosbag2がパブリッシャーとなります。消費者 QoS、期待レート、クロックモード、起動順は記録と異なる場合があります。遅延消費者が入り始めた際には、過渡状態および静的変換が利用可能でなければなりません。

再生 QoS オーバーライドを点検し、消費者を制御された順序で開始します。サンドボックス名前空間を使い、ハードウェア出力を無効にしてください。記録された速度やアクチュエータのコマンドは、トピック名が一致しているからといって、生きたロボットに届くべきではありません。

各トピックをカウント、ギャップ、意味論で受け入れる

必要なストリームごとに、実際のカウントと持続時間および期待レートを比較し、メッセージ間ギャップを計算し、タイムスタンプの単調性やペイロードのサンプルを検査します。画像やカメラ情報、状態とコマンド、トランスフォームとポイントクラウドなど関連トピックをクロスチェックしましょう。

その後、リファレンスコンシューマーを繰り返し、有用な出力を検証します。ファイルサイズだけでは、欠落した低帯域幅トピック、破損したキャリブレーション、または時間領域の不一致を明らかにすることはできません。

録画を管理された手順として運用する

録画前に、ストレージ容量、時計、トピックマニフェスト、 QoS 接続、ソフトウェア設定を確認してください。記録後はクリーンに停止し、整合性チェックを実行し、ハッシュを計算し、マニフェストや権利情報を含むデータを移動します。

データがトレーニングやインシデント分析に入る前にリリースチェックリストを活用しましょう。

  • 必須トピック、種類、 QoS、料金を凍結しましょう。
  • ミッション期間中のバーストスループットのテスト。
  • ソースとタイムスタンプを比較し、記録してください。
  • 各トピックをカウント、ギャップ、リプレイで受け入れてください。
  • バッグはライブアクチュエーターの話題から隔離してください。

よくある質問

rosbag2は実行中のすべてのトピックを記録しますか?

選択または発見された適合するトピックのみが記録されます。短命で互換性がなかったり、過負荷になったストリームが存在しない場合もあります。

Reliable QoS は記録損失を排除しますか?

いいえ。互換性、キャッシュ、CPU、ストレージ、パブリッシャーの挙動がギャップや遅延を引き起こすことがあります。

圧縮は常に有効にすべきでしょうか?

いいえ。ベンチマークサイズの削減、CPUに対する遅延、実際のトピックミックスでのメッセージドロップ。

予想されるファイルサイズはバッグを受け入れるのに十分なのでしょうか?

いいえ。各トピックのカウント、ギャップ、タイムスタンプ、ペイロード、リプレイ結果を検証します。

バッグを実際のロボットに直接再生させることはできますか?

デフォルトでは安全ではありません。まず名前空間とハードウェアを分離し、コマンドトピックを検査し、再生環境を検証します。

記録データ証拠境界

ロスバッグはROSメッセージの録音であり、物理的な真実や完全なカバレッジの証明ではありません。利用する前に、時計、 QoS、コンテンツ、設定を必ず検証してください。