ROS2 .db3バッグへの対応状況
結論から書きます。LidarFlowは現時点で.db3を読み込めません。対応しているのはROS1の.bagと.mcapです。.db3をお持ちの場合は、コマンド1つでMCAPに変換すれば、そのまま通常のパイプラインで処理できます。
現在対応しているもの
- ・ROS1
.bag - ・
.mcap(ROS1・ROS2いずれの記録でも可) - ・
sensor_msgs/PointCloud2で配信されるLiDARデータ
未対応: ROS2の.db3(rosbag2のSQLiteストレージ形式)。 処理の途中で失敗させないため、アップロード時点で明示的にお断りしています。
.db3が別問題である理由
.db3バッグはメッセージストリームではなくSQLiteデータベースです。 読み取りにはrosbag2のストレージ層を経由する必要があり、内部のメッセージはROS1の定義ではなく ROS2の型定義に対してCDRシリアライズされています。MCAPはスキーマ情報をメッセージと一緒に持つ 自己記述型のコンテナなので、この2つの問題を回避できます。ROS2界隈がMCAPに移行しているのも同じ理由です。
いま.db3をお持ちの場合
公式のrosbag2 CLIでMCAPに変換してください。お使いのディストリビューション向けの MCAPストレージプラグイン(ros-$ROS_DISTRO-rosbag2-storage-mcap) を導入し、変換設定を書いて実行します。
# convert.yaml
output_bags:
- uri: my_bag_mcap
storage_id: mcap
all_topics: true
# 実行
ros2 bag convert -i my_bag -o convert.yaml参考: ros2/rosbag2 および mcap.dev。変換後は MCAPから点群へ変換 をご覧ください。
.db3のネイティブ対応をご希望ですか?
ロードマップには入っていますが、時期は未定です。メールアドレスをご登録いただければ、対応した際にご連絡します。他の用途には使用しません。
よくある質問
LidarFlowはROS2のbagファイルに対応していますか?
MCAP形式で記録されている場合のみ対応します。既定のSQLiteストレージ(.db3)で記録されたROS2バッグは、現時点ではアップロード検証で受け付けていません。ROS1の.bagと.mcapはどちらも利用できます。
.db3ファイルをMCAPに変換するには?
rosbag2のMCAPストレージプラグインを導入し、storage_idをmcapに設定した変換設定を用意して「ros2 bag convert -i my_bag -o convert.yaml」を実行します。生成された.mcapはそのままアップロードできます。
.db3への対応予定はありますか?
ロードマップには入っています。提供時期はまだお約束できないため、カウントダウンではなく登録フォームを用意しています。
現在対応しているフォーマットは?
ROS1の.bagと.mcapです。LiDARデータはsensor_msgs/PointCloud2(またはROS1のLivox CustomMsg)で記録されている必要があります。IMUとGNSSトピックは任意で、自動検出されます。