コストマップNav2移動ロボットがどこを移動できるかに関するいくつかの主張を組み合わせています。静的レイヤーはマッピングされた占有率を、観察レイヤーはライブ障害物の追加および除去、インフレーションはジオメトリを段階的なクリアランスコストに変換し、フィルターは禁止や速度制限などのポリシーを適用します。最終グリッドはプランナーとコントローラーが消費する契約です。
配置は、古びた観測や誤ったフットプリント、フレームの不一致を含んでいても、RVizでは説得力があるように見えることがあります。レイヤーのソース、タイムスタンプ、変換、更新動作、故障応答が観察可能な後にのみ調整してください。そうでなければ、パラメータの変更によって症状が隠れてしまい、環境モデルを修正するのではなく、
このガイドを ロボット SLAM ガイド と TF2 フレームガイドと一緒に使ってください。生産リリース前に、代表的なフロア、障害物、交通状況でロボットを検証してください。
コストマップを層状の環境契約として扱う
コストマップは生のセンサー画像ではありません。各プラグインは、宣言されたフレーム、寸法、組み合わせルール、タイミングに基づいて特定のソースをセルコストに変換します。マップされた壁、一時的な障害物、クリアランス、制限区域、未知空間をどの層が所有しているかを記録し、2つのレイヤーが静かに矛盾しないようにしましょう。
現在の Nav2 Costmap 2Dドキュメント では、プラグインとフィルターを別々に説明しています。設定レビューではこの区別を保ちましょう。通常のプラグインはコストマップに寄与し、レイヤーマップの後にポリシー効果(禁止や速度制限など)にフィルターをかけます。

グローバルマップとローカルマップの責任を選んでください
グローバルコストマップは通常、安定したグローバルフレーム内でルートスケール環境を表し、ローカルのローリングコストマップは制御のための現在の近接制約を提供します。異なる次元、更新速度、観測源を用いることがあります。両方のマップに1つの構成をコピーすると、リソースを無駄にし、故障の所有権が混乱します。
各マップについて、その計画用者、フレーム、ロールウィンドウの挙動、解像度、そして最大許容年齢を明記してください。グローバルプランナーはローカルコントローラーよりも遅い地図更新を許容するかもしれませんが、変換やソースの新規性がナビゲーション契約を超えるグリッドを消費すべきではありません。
| レイヤーまたは設定 | 主な職務 | 失敗の症状 | 最初の証拠 |
|---|---|---|---|
| 静的層 | 地図上の居住状況 | ルートは壁やブロックの開口部を越えます | 地図版と枠 |
| 障害物層 | 2Dマーキングとクリアリング | 一時的なオブジェクトの欠失または持続的なゴースト | スキャン年齢とレイトレース |
| ボクセル層 | 3D観測バッファリング | 高さ障害物の扱いが誤り | 点群とボクセル設定 |
| インフレーション層 | クリアランスコスト | 手抜きや無駄な迂回 | 敷地面積とコスト勾配 |
| 防水フィルター | ポリシー制限 | ロボットが禁止区域に侵入 | マスクのアライメントとフィルター情報 |
チューニングクリアランスの前にロボットジオメトリを凍結します
ベースが円でうまく表現されていない場合はポリゴンフットプリントを使いましょう。衝突する固定突起を含め、アタッチメントや荷重がフットプリントをどのように更新するかを定義します。パッドは追加の余白です。条件によって異なる誤った物理的輪郭や位置づけの不確実性を補正すべきではありません。
固定ロボットの周囲に既知の点を配置し、複数の方位で衝突分類を確認することで幾何学を検証します。非対称フットプリントを回転させることで、直線的な経路に隠れた誤差が露呈することがあります。フットプリントを機械的構成に合わせて変え、未知のペイロード形状を最小基数と仮定する代わりに却下します。
静的レイヤーをバージョン管理された地図証拠として設定します
静的レイヤーは通常占有グリッドに割り当てられ、マッピングされた構造物をコストマップに転送します。マップのトピック、フレーム、耐久性の挙動、更新の予定があるかどうかを確認しましょう。意図されたマップを受け取る前に起動したロボットは、空の環境モデルや古い環境モデルで準備完了状態に見えることがあります。
マップの識別子とチェックサムをデプロイメントレコードに保存します。テストの交換、再起動、そしてマップサーバーの喪失。静的証拠が消失した際にロボットが停止するのか、有界間隔で続けるのか、あるいは別のモードに劣化するのかを判断します。正しい選択は、現地の地図や運用リスクによって異なります。

障害物の登録と解除を個別に観測できるようにする
観測層は通常、検出から細胞をマークし、センサー光線に沿ってクリアします。ソースは正しくマークできますが、クリアリングはレイトレース範囲、最小範囲、変換タイミング、無効リターンの違いが異なるため失敗します。両方の操作を、センサーフィールドの各部分に出入りする一時的な障害物を設置して検査します。
障害物とレイトレースの範囲は、最大パンフレット距離ではなく、検証済みのセンサー性能から設定します。ソースの種類、トピック、フレーム、永続性、期待レートを記録します。発生源が停止した場合、障害物の証拠がどれくらい残るか、その持続時間が停止距離の仮定と一致するかを測定します。
| テスト | 制御された変化 | 期待マップ応答 | 拒否するタイミング |
|---|---|---|---|
| マーキング | ターゲットを挿入 | 細胞は限界内で占有される | 目標の省略または遅延 |
| クリアリング | ターゲットを削除 | レイはセルを許可された状態に戻します | ゴーストは限界を超えて存在します |
| 発生源の損失 | 停止メッセージ | 宣言されたステールデータポリシーが発生します | 古いグリッドは現代的に見えます |
| 変換遅延 | 遅延TF | 更新は却下または制限されています | 誤った障害は受け入れられた |
| 再開 | 再起動センサーとコストマップ | レイヤーは重複状態なしで回復します | 未知の隙間が隠されている |
高さが判定を変える場合にのみボクセルデータを使用します
ボクセル層は、衝突情報を2次元に投影する前に三次元観測値をバッファリングできます。障害物の高さやオーバーハング挙動が重要な場合に有用ですが、その垂直起点、解像度、ボクセル数、マーキング閾値がロボットのボディに対して別のモデルを生み出します。
衝突ジオメトリやセンサーの配置から障害物の最小高度と最大高度を選択します。低いパレット、テーブルの端、フォーク、オーバーハングをテストしましょう。3D点雲は、地盤の除去、まばらな帰還、投影の閾値によって該当構造が破棄される場合、正しい障害物の決定を保証するものではありません。
フットプリントクリアランスや挙動からインフレを調整する
インフレにより、より高コストの致命的な障害物が割り当てられるため、プランナーや管制官はクリアランスを優先できるようになります。インフレ半径は影響を受ける近隣地域を定義し、スケーリングファクターはコストの下落速度を左右します。これらのパラメータは好みに影響を与えます。これらは正確なフットプリントの衝突判定を置き換えるものではありません。
必要な物理的なクリアランスと位置づけの不確実性から始め、次に通路、ドア、角をテストします。接触フリーパス率、経路長、偽ブロッキングを測定します。ロボットが狭い開口部付近で振動する場合は、単に膨張を縮小する前に、形状、局在、制御者の挙動を検査してください。
アライメントされたマスクで「禁止」ポリシーとスピードポリシーを適用する
コストマップフィルターは、禁止ゾーンやスピードゾーンなどのポリシーオーバーレイを表現できます。マスクやメタデータは、意図されたマップフレーム、原点、解像度と一致しなければなりません。視覚的にずれたマスクは、フィルタープラグインがアクティブでエラーを報告しなくても危険なポリシーギャップを生み出します。
すべての境界線の両側とマップの再読み込み後にテストしてください。誰がポリシー変更を所有し、ロボットがどれくらいの速さでそれを受け取るかを記録しましょう。欠損または古くなった必須フィルターは、未フィルターのコストマップ使用許可としてではなく、準備度の失敗として扱いましょう。
予算の更新、公開、変換のタイミングを別々に行う
更新頻度はマップが入力を処理する頻度を制御します。公開頻度は、消費者や可視化に対して表現がどれくらいの頻度で送信されるかを制御します。センサー速度、変換の利用可能性、実行遅延も細胞の年齢に影響を与えます。公開頻度が増えても、古くなった情報源の証拠が新鮮になるわけではありません。
タイムスタンプの観測と、CPUおよびネットワーク負荷下でのマップ到着遅延の測定。平均率だけでなく、最悪ケースや高パーセンタイルの年齢も追跡しましょう。必要なすべてのソースに対してタイムアウト応答を定義し、最後に表示されたグリッドがまだ妥当に見えるためコントローラが続行しないようにしましょう。
未知空間と確認された自由空間を分離する
不明とは、その地域が占有されているか自由であるかではなく、システムに証拠がないことを意味します。未知空間の追跡や計画者が通過できるかどうかの選択は、ミッションの文脈に従うべきです。探検、マッピングされた倉庫、公共通路には異なる方針が必要になることがあります。
エクササイズマップの境界、センサーシャドウ、新たに開放されたエリア。未知のセルの挙動をログや受け入れ結果で報告してください。未知を自由に変換することで、ロボットが観測されていない領域に入った理由を説明する証拠を排除しつつ、到達しやすさを向上させる可能性があります。
パラメータ調整前にレイヤー所有権を診断する
ナビゲーションが失敗した場合は、個々のレイヤー出力、コストマップ、変換、フットプリント、センサーサンプル、プランナーリクエストを共通のタイムラインに保存してください。封鎖ルートは静的な壁、未クリアの観測、膨張、または禁止マスクなどから来ることがあります。是正措置は所有者によって異なります。
一度に一つの仮説を変え、可能な限り同じ証拠を繰り返していきましょう。誤検知停止、障害物の見逃し、経路クリアランス、回復時間を比較してください。環境の変動が元の欠陥を隠す可能性があるため、単一の視覚的に改善されたランで成功を宣言するのは避けてください。
物理回帰スイートでコストマップをリリースします
ガラス、暗い素材、細い脚、低い物体、張り出し、扉、狭い通路、移動する人、そしてソースの故障のためのトライアルを作る。ロボットの回転数や運搬荷物も含めてください。検出とクリア、そして動き中に変換やマップが再開した際の反応も確認してください。
ソフトウェアのバージョン、プラグインの順序、パラメータ、マップ、センサーファームウェア、テストディストリビューションを結果とともに保存します。ジオメトリ、センシング、ローカライズ、ナビゲーションプラグインが変わるたびにこのリリースチェックリストを使用してください。
- 各レイヤーごとにソース、フレーム、年齢制限を指定してください。
- マーキングとクリアリングは別々の動作として確認してください。
- ポリシーの仮面を整え、古びた強制的なフィルターを拒否しましょう。
- 展開したフットプリントとの物理的なクリアランスを測定してください。
- インシデント診断のための個別の層証拠を保管してください。
よくある質問
コストマップのデフォルトプラグイン Nav2 は何ですか?
現在の Nav2 ドキュメントでは、プラグインリストが上書きされていない場合、静的層、障害物層、インフレ層がデフォルトとして記載されています。
グローバルコストマップとローカルコストマップは同じレイヤーを使うべきでしょうか?
必ずしもそうとは限りません。消費者、フレーム、空間範囲、更新率、必要な証拠は異なる場合があります。
インフレーションはロボットを物理的に大きくするのでしょうか?
いいえ。障害物周辺のセルコストが変わります。フットプリントとパディングは衝突のジオメトリとマージンを表しています。
なぜ障害物は取り除かれた後も残るのでしょうか?
クリアリングには有効な光線、射程、変換、タイミングが欠けている場合があります。マーキングとは別にクリアリングを点検してください。
RVizのコストマップだけで受け入れに足りますか?
いいえ。受理には、時間制限のある物理的試験、発生源損失挙動、代表的な条件下での測定クリアランスが必要です。
コストマップの証拠と安全境界
コストマップはアプリケーション環境モデルであり、独立した安全等級保護装置ではありません。ロボットや職場のリスクに対する検知、タイミング、停止の安全対策を検証します。