ROS 占有格子マップに注釈を入れる
SLAM をチューニングしてやっとそれっぽい占有格子マップができたあと、それを論文・レポート・プレゼンに載せたい、そのときに 計画した経路 を上に描いたり、目標位置 にラベルを付けたり、進入禁止ゾーン を陰影で示したくなる、そんな用途のために drawtonomy の ROS マップ取り込みがあります。
drawtonomy が .pgm + .yaml でやること
Section titled “drawtonomy が .pgm + .yaml でやること”drawtonomy は ROS のマップ(.pgm 画像と .yaml のメタデータ)を読み込んで、次のように扱います。
resolutionとoriginを見て、キャンバス上に正しい縮尺で配置する。- その上にレーン、交差点、車両、歩行者、信号、矢印、テキストなどの注釈を書き加える。
- 注釈は drawtonomy のシェイプとして別管理になるので、元の
.pgm自体は書き換えられない。
なぜわざわざ注釈を入れるか
Section titled “なぜわざわざ注釈を入れるか”- 論文の図:「Figure 3: nav2 が障害物を避けながら計画した経路」。生の占有格子マップだけだと正直何が起きているか伝わりにくい。経路や目標位置を描き加えると、図がストーリーを語ってくれます。
- 社内ドキュメント:進入禁止ゾーン、充電ドックの位置、エリア名などを描き加えた SLAM マップは、チームの入れ替わりにも残るたぐいの成果物になります。
- 講義資料:nav2 や AMCL を教えるとき、注釈付きマップは「Planner が見ている世界」を学生に見せるための素材として使えます。
- 不具合の再現用:「このマップでこの経路を計画させたらここで止まった」というのを、図 1 枚で説明できます。
- 取り込む。Import → ROS map。
.pgmと.yamlを一緒に渡します(zip にしてもよいです)。 - 縮尺を確認。yaml の
resolutionとoriginが自動的に反映され、drawtonomy のルーラーがメートル単位で長さを表示します。 - 注釈を入れる。Lane、Vehicle、Path、Polygon、Text シェイプを使います。Polygon を薄い透明度にすると、進入禁止ゾーンの陰影として使えます。
.drawtonomy.svg(drawtonomy 独自の SVG 形式)で保存する。SLAM マップへの注釈はほぼ必ず後から手を入れます — 進入禁止ゾーンが追加されたり、エリア名が変わったり、マップ自体を取り直したり。.drawtonomy.svgで保存しておけば、開き直したときに注釈がすべて元の位置に戻るので、変更は「描き直し」ではなく「編集」で済みます。- 配布用に書き出す。同じシーンから、ベクター不要のドキュメント向けには PNG、論文・スライド向けにはフラット SVG(マップを背景ラスタにして、注釈をベクターで重ねたもの)を書き出します。
書き出すときのコツ
Section titled “書き出すときのコツ”- アクセントの色は 1 色に絞る。グレースケールのマップに何色も乗せると視覚的にうるさくなります。
- スケールバーは手で足す。Linestring + Text で簡単に足せます。drawtonomy 側で自動描画はしませんが、ルーラーで何メートルかは分かるので、それを目安に作ります。
- drawtonomy は
nav2のmap_server用のマップ編集ツール(grid をクロップ・拡張・回転する CLI ツール群)を置き換えるものではありません。それらは ROS のツールチェーンで扱ってください。 - 注釈レイヤは drawtonomy ネイティブの構造で持っています。「真実の出どころ」は
.drawtonomy.svgファイルに置いておき、別ツールで注釈ジオメトリを使いたいときだけフラット SVG を書き出すのがおすすめです。
詳しくは ROS 占有格子マップを取り込む を参照してください。