目次 — 知りたいところから読む
不具合が出るたびに同じ場所を走り直すと、入力も設定も変わってしまう。rosbag2は入力を保存して比較の土台を作れる。ただし、ログを再生すればロボット全体が同じ動作をするわけではない。本記事はROS 2 Jazzyの一次資料に照らした手順で、実機・ROS環境での走行検証は行っていない。
最初に比較する境界を決める
例として、LiDARと車輪オドメトリを入力にする自己位置推定ノードを比較する。保存するのは入力の/scan、/odom、必要な/tf・/tf_staticである。推定ノードの出力は正解ではなく比較対象として別に保存する。画像を使う場合は画像だけでなく対応するCameraInfoも必要になる。
rosbag2のJazzy READMEで記録・情報表示・QoS上書きを確認した。調査日は2026-09-07。インストール済みパッケージの差を把握するため、ros2 bag record --helpとros2 bag play --helpの出力、パッケージのバージョンを実験記録へ残す。
記録と設定の保存
以下のtopic名とノード名は例である。既存の名前をros2 topic listとros2 node listで調べ、入力が配信されている状態で実行する。
ros2 topic info /scan --verbose
ros2 bag record -o replay-input --topics /scan /odom /tf /tf_static
記録はCtrl+Cで正常終了し、別のコマンドで確認する。
ros2 bag info replay-input
ros2 param dump /localizer > localizer-A.yaml
ノード名/localizerは自分の対象に置き換える。パラメータだけでなく、launchファイル、地図、URDF、外部キャリブレーション、ソフトウェアのコミット、開始姿勢も保存する。bag infoのメッセージ数が非ゼロでも、障害が起きた時間帯に必要な入力がそろっているとは限らない。各センサの時刻差と欠測区間も見る。
再生時の時刻とTFを一つにする
ライブの入力配信を止めた解析環境で、対象ノードとRVizにuse_sim_time=trueを設定する。対象ノードの起動方法はパッケージごとに異なる。起動後、次のように再生する。
ros2 bag play replay-input --clock 100 --rate 1.0
--clockは再生時刻の供給に使う。Jazzyのplay実装でオプションを確認できる。シミュレータなど別の/clock配信元を同時に動かさない。記録時にシミュレーション時刻を使う場合の--use-sim-timeと、再生時の--clockは役割が異なる。
特に注意したいのは/tfに複数の変換が混ざる点である。評価対象がmap→odomを新しく出すなら、記録済みmap→odomを同時に再生してはいけない。一方、入力として必要なodom→base_linkは残す必要がある。topic全体を除くだけでは分離できないことがあるので、記録時点で出力を分けるか、変換ごとのフィルタを用意する。座標フレームの役割はREP-105を参照する。
表示されないときの切り分け
| 症状 | 先に調べるもの |
|---|---|
| bagにはあるのに受信しない | topic名、型、購読側と再生側のQoS |
| 点群だけ出て位置が飛ぶ | 同じTFを配信するノードが二つないか |
| 過去・未来へのTF参照エラー | headerの時刻、use_sim_time、TFの収録範囲 |
| 2回目の再生だけ違う | フィルタの内部状態、地図、時刻巻き戻りへの対応 |
QoSは配信の信頼性や履歴保持の設定である。むやみに全topicをreliableへ変更せず、topic info --verboseから互換性を確認する。必要なtopicだけにQoS上書きYAMLを適用する。静的TFのdurabilityを変える場合は、遅れて参加した購読者への配信も確認する。
AとBを比較する実験票
Aを終了して状態を初期化し、設定一項目を変えたBを新しく起動する。bag、再生速度、開始姿勢、地図、処理対象の時間範囲を同じにする。出力軌跡、処理遅延、入力欠測、失敗時刻を残し、「最後まで動いた」だけを評価にしない。乱数やスレッドの順序による差があるため、同条件の反復も必要である。
この比較は固定した観測への反応を調べるものだ。制御出力が変われば本来の次の観測も変わるので、記録済みセンサ入力による再生だけで閉ループの走行性能を証明できない。
完了の判定
必要な入力を受信し、同じ変換の配信元が一つで、時刻が整合し、AとBの違いを設定の差として説明できれば比較の準備ができた。SLAM評価へ進み、軌跡の時間合わせと誤差計算を追加する。
コメント
コメントの投稿にはログインが必要です
まだコメントはありません。