目的
Google CartographerのAssets writer マニュアルを翻訳しました。
原文:googlecartographer assets_writer.rst
Github:cartographer_ros
Google Cartographerでは、SLAMのmapデータ・statusデータをAssets writerで保存します。
Assets writerで保存したデータは、Cartographerでまた呼び出して、状態を復元することができます。
Assets writer
SLAMの目的は、1つのセンサの軌跡を距離空間で計算することです。
より高いレベルでは、SLAMの入力はセンサデータであり、その出力はその時点までの軌道の最尤推定値となります。
リアルタイムで効率的なものにするために、Cartographerはセンサデータの大部分をすぐに送り出します。
軌道だけに興味があることは稀ですが、一度最尤の軌道が確立されると、全てのセンサデータを使用して、その周囲の情報を導き可視化することができます。Cartographerはこの目的で、assets writerを提供します。
以下のものを入力することができます。
1.ROS bagファイルの中で、SLAMに送り込まれる、元のセンサデータ
2.cartographerの状態、SLAMが生成する.pbstreamの中に含まれている。
3.センサー以外(i.e. rosbagからのTFデータやURDFファイル),
4.パイプラインの設定、.luaファイルで定義されているもの
Assets writerは、センサデータを通して、既知の軌跡をまとめます。
SLAMの点群データの色付け、フィルタリング、およびエクスポートにさまざまな形式で使用できます。
アセットライターの使用方法の詳細については、下記の例とcartographer/ioのヘッダーファイルを参照してください。
Sample usage
# Download the 3D backpack example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/b3-2016-04-05-14-14-00.bag
# Launch the 3D offline demo.
roslaunch cartographer_ros offline_backpack_3d.launch bag_filenames:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag
オフラインノードが終了するまで、コマンドラインで出力を監視します。
すべてのデータを処理してすべての最適化を完了した後、Cartographerの状態を表す"b3-2016-04-05-14-14-00.bag.pbstream"が書き込まれます。オンラインノードを実行して呼び出しても、同じ状態データを取得できます。
# Finish the first trajectory. No further data will be accepted on it.
rosservice call /finish_trajectory 0
# Ask Cartographer to serialize its current state.
rosservice call /write_state ${HOME}/Downloads/b3-2016-04-05-14-14-00.bag.pbstream
3Dバックパックのサンプル設定ファイルを使用してAssets writerを実行します。
roslaunch cartographer_ros assets_writer_backpack_3d.launch \
bag_filenames:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag \
pose_graph_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag.pbstream
執筆時点では、~/.rosに生成されます。
Configuration
assets writerは、パイプラインとしてモデル化されています。
これは、PointProcessorsとPointsBatchsで構成されています。
データは最初のプロセッサから次のプロセッサに流れ、各プロセッサには通過する前にPointsBatchを修正する機会があります。
例えば、assets_writer_backpack_3d.luaは、min_max_range_filterを使用して、センサから離れすぎている、もしくは離れすぎている点を削除します。その後、X-Raysを書き込み、センサフレームIDに応じてPointsBatchの色を付け直し、X-Raysのセットごとに新しい色を使って書き込みます。
個々のPointsProcessorsはすべてcartographer/ioサブディレクトリにあり、個々のヘッダーファイルにドキュメント化されています。
First-person visualization of point clouds
視点を動かして、点群見るためには2ステップの方法があります
まず最初に、可視化したい点を含むPLYファイルを作成し、可視化にはpoint_cloud_viewerを使用します。
最初のステップは通常、IntensityToColorPointsProcessorを使用して点に白以外の色を与え、次にそれらをPlyWritingPointsProcessorを使用してPLYに書き込むことによって成し遂げます。
例として、assets_writer_backpack_2d.luaがあります。
PLYを取得したら、point_cloud_viewerのREADMEに従ってディスク上のoctreeデータ構造を生成します。
その構造は、同じリポジトリ内のビューアの1つが表示することができます。