ローンチ記念公開記念につき現在すべて無料でご利用いただけます。クレジットカード登録は不要です
rosbagをPCDに変換

rosbagPCDに、オンラインで変換。

「rosbagをPCDに変換する」という言葉は、まったく異なる2つの作業を指すことがあります。すべてのPointCloud2フレームをディスクに書き出したい場合もあれば、記録全体から1つのマッピング済み点群がほしい場合もあります。どちらの作業を行っているかによって、選ぶべき方法は変わります。

「rosbagをPCDに変換する」の本当の意味

フレーム書き出しとマッピング済み出力は別物です。

フレーム書き出し

タイムスタンプ付きPCDのフォルダ1つ。

bag_to_pcdのようなローカルツールは1つのトピックを読み込み、タイムスタンプ付きPCDファイルのフォルダを書き出します。センサーストリームのデバッグやフィールドの確認、1フレームを別ツールに渡す用途には最適です。

マッピング済み出力

走行全体の点群マップ1つ。

本当に必要なのが点群マップであれば、LiDAR SLAMと、可能であればGNSSによるジオリファレンスが必要です。これはまさにLidarFlowが担う仕事です。

Register · Map
lowhigh
実際に得られるもの

rosbagからマッピング済み出力まで、ブラウザ4画面で完結します。

/velodyne_points · PointCloud2ok
/gnss/fix · NavSatFixok
/imu/data · Imuok
/tf_static · TFok
バッグを確認する

SLAMを実行する前に、LidarFlowが検出したトピックを一覧表示し、利用可能なものにフラグを立てます。

$ros2 run pcl_ros bag_to_pcd \
$ --ros-args -p bag_path:=bag/
$ -p topic_name:=/pc
$ -p output_directory:=pcds
CLIの手間を省く

ローカルでの変換にはROS環境、適切なpcl_rosビルド、正確なトピック名が必要です。ブラウザ経由ならその3つすべてが不要になります。

slam
実行状況を確認する

SLAM、レジストレーション、ジオリファレンスの各処理を、不透明なログではなく明確な実行進捗として可視化します。

output.pcd248 MB
map.ply112 MB
trajectory.csv1.4 MB
metadata.json12 KB
マッピング済み成果物をダウンロードする

タイムスタンプ付きフレームのディレクトリではなく、1つのマッピング済み点群とPLY、軌跡、メタデータを取得できます。

現実的な3つの方法

ローカルCLI、独自Python、またはブラウザワークフロー。

1

上流のCLI

すでにROS環境があり、フレーム単位の書き出しだけが必要であれば、上流ツールを直接使うのが手軽です。

ros2 run pcl_ros bag_to_pcd --ros-args \
  -p bag_path:=rosbag2_2025_01_01/ \
  -p topic_name:=/pointcloud \
  -p output_directory:=pcds

タイムスタンプ付きフレーム書き出しには良い選択肢です。完全なマッピングパイプラインではありません。

2

Pythonスクリプト

独自のフィルタリング、フィールド変換、一度限りの後処理が必要であれば、小さなPythonスクリプトでより細かい制御ができます。

import rosbag
from sensor_msgs import point_cloud2

with rosbag.Bag("input.bag") as bag:
    for _, msg, t in bag.read_messages("/pc"):
        points = list(point_cloud2.read_points(msg))
        # write one PCD per frame

柔軟ですが、残りのパイプラインは自分で管理する必要があります。

3

LidarFlow

生フレームのフォルダではなくマッピング済み出力がほしい場合は、ブラウザから記録をアップロードするだけで、検証、SLAM、ジオリファレンス、成果物の配信までLidarFlowが処理します。

  • .mcapまたはROS1の.bagをアップロード
  • 実行前にトピックを検証
  • output.pcdmap.ply、メタデータ、軌跡データをダウンロード
面倒なつなぎ込みは不要
バッグをアップロードすれば、マッピング済みの点群が受信箱に届きます。
どちらを使うべきか

仕事全体を解決できる、最小限のツールを選びましょう。

ローカルの方法を使う場合

  • 1つのトピックをデバッグするためにフレーム単位のPCDだけが必要な場合。
  • SLAMを実行する前にタイムスタンプ、フィールド、フレームごとのカバレッジを確認したい場合。

LidarFlowを使う場合

  • タイムスタンプ付き書き出しのディレクトリではなく、1つのマッピング済み点群が必要な場合。
  • 実行状況、QA、ダウンロードを1つのブラウザ画面で完結させたい場合。
  • すべてのオペレーターのPCでROS、SLAM、ストレージのつなぎ込みを維持したくない場合。

現在の対応範囲

対応しているのはROS1の.bag.mcapです。ROS2の.db3は未対応で、その点をあいまいにせず、 変換による回避手順を ROS2 .db3対応状況 のページに記載しています。テスト期間中につき無料です。

関連ページ: PCDファイルとは MCAPの場合 対応LiDARセンサー

よくある質問

ROSをインストールせずにrosbagをPCDへ変換できますか?

できます。.bagまたは.mcapをブラウザからアップロードすると、再構成はLidarFlow側で実行され、output.pcdとmap.plyが返ります。お手元の環境には何もインストールしません。pcl_rosやGLIMを使う手動の方法では、動作するROS環境が必要です。

生の点群ダンプとSLAMで再構成した地図は何が違いますか?

ダンプは各PointCloud2メッセージをセンサー座標系のまま個別ファイルに書き出したものです。フレーム間でセンサーが動いているため、単純に重ねるとぼやけた点群になります。SLAMによる再構成では軌跡を推定し、ループを閉じ、ドリフトを補正するため、すべてのスキャンが一つの整合した地図座標系に収まります。

ROS2のバッグ(.db3)にも対応していますか?

現時点では未対応です。対応しているのはROS1の.bagと.mcapです。.db3をお持ちの場合は、rosbag2のMCAPストレージプラグインでMCAPに変換してからアップロードしてください。ROS2 .db3対応状況のページから順番待ちリストにご登録いただけます。

rosbagにGPSやGNSSのデータがない場合はどうなりますか?

実行は可能です。記録開始地点を原点とするローカル座標系のメトリック地図が得られます。WGS84へのジオリファレンスのみGNSS測位値を必要とするため、その工程だけがスキップされます。

次のステップ

PCDフレームのディレクトリではなく、マップが必要ですか?