グローバルプランナーは、ルートスケール環境モデルを用いてロボットの姿勢から目標への経路を計算します。ローカルコントローラはその経路と現在の近傍状態を消費して、実行可能な速度や軌道コマンドを生成します。これらの責任、遺物、故障状況を別々に測定することで航行は改善されます。
グローバルとローカルというラベルは、重要度や絶対頻度ではなく範囲を表しています。プランナーは頻繁に再計画でき、コントローラーは軌道を前方に予測することがあります。境界は出力であり、パスは意図されたジオメトリを表し、制御出力は動態、フットプリント、現在の障害物、コマンドタイミングを尊重しなければなりません。
このガイドを Nav2 コストマップガイド や モーションプランニング、軌道最適化ガイドと一緒にご利用ください。アルゴリズムを切り替える前に、パスとコマンドの両方の証拠を保存してください。
まずはプランナーとコントローラーの契約から始める
プランナーはスタート、目標、環境表現を受け取り、経路または失敗を返します。コントローラは現在の姿勢、速度、経路、局所制約を受け取り、制御出力または故障を返します。境界にあるすべての成果物に対して、フレーム、タイムスタンプ、更新ルール、有効性を定義します。
Nav2の ナビゲーションコンセプト では、プランナーをパス計算プラグインとして、コントローラーをパスフォローまたはローカルタスクプラグインとして説明しています。可能な限りミッションロジックはこれらのアルゴリズムの外に置き、プラグインの置き換えがリトライや目標、安全ポリシーを静かに変えないようにしましょう。

大域パスを最短距離以上で判断する
利用可能なグローバルパスは、フットプリントに対して衝突有効性があり、スタート地点と目標に接続され、未知空間ポリシーと互換性があり、コントローラーにとって妥当でなければなりません。最短幾何学的距離は、角に近づいたり、急な進路変更を生んだり、運用上のボトルネックとなるエリアに入り込むことがあります。
固定されたスタート目標セット上で、経路長、最小クリアランス、曲率または方位の不連続性、計算時間、故障率を測定します。一つの見せ場ルートではなく、分布を比較してください。すべての結果に対してコストマップとプラグインパラメータを保持し、経路の違いを説明可能に保ちます。
| 遺物 | プロデューサー | 受理証拠 | 典型的な欠陥 |
|---|---|---|---|
| グローバルパス | プランナー | 有効性、クリアランス、継続性、年齢 | 不可能な角や古びたルート |
| 平滑化された経路 | より滑らかに | 衝突再チェックとジオメトリ | 障害物へのショートカット |
| 速度指令 | コントローラー | 制限、実現可能性、タイムスタンプ | 振動または飽和 |
| 進行状態 | プログレッスチェッカー | 距離と時間帯 | 偽の失速やエンドレススリップ |
| ゴール結果 | ゴールチェッカー | 位置、航位および作業許容差 | 早すぎる成功 |
経路平滑化は妥当性を保持する
滑らか化は急な変化を減らし、制御を向上させますが、移動経路のポイントは障害物のクリアランスを減らしたり、狭い通路を侵害したりします。平滑化された経路を、衝突と境界検証が必要な新しい成果物として扱い、見た目の後処理として扱うべきではありません。
プランナー、別のスムーマー、またはコントローラーが参照を修正したかどうかを記録します。各段階が消費した正確な経路を比較してください。ロボットが角を切り取った場合、元のグローバルパスのみのプロットでは、後に導入された幾何学の原因をコントローラーに帰すことがあります。
コントローラーを現行の現地証拠と照らして評価する
コントローラーは、フットプリントの衝突、運動学的または動的制限、近くの障害物を尊重しつつ、参照に従うコマンドを生成すべきです。デプロイされたリリースの Nav2 コントローラーサーバーのドキュメント を確認してください。ローカルマップと状態はコマンドホライズンに十分対応していなければなりません。
指令率、年齢、加速度、飽和度、予測クリアランスおよび追跡誤差を測定します。拒否された候補やコントローラー診断は利用可能な場合は保存してください。総合成功率だけでは、コントローラーが目標を円滑に達成したのか、繰り返しの振動と回復後に成功したのかを隠します。

プランナーとコントローラーフレームの時間は一貫性を保つ
グローバルパスはマップフレームで表現でき、制御はオドメトリーとベースフレームに依存します。経路を不一定のタイミングで変換すると、静止した経路がロボットに対して相対的に動いているように見えることがあります。各段階ごとに変換ルックアップ時間と許容差を定義します。
画面時間ではなく、ロボットのメッセージのタイムスタンプを使ってください。変換遅延と局在補正を注入し、その後パス置換とコマンド挙動を観察します。宣言された時間契約内で変換できないデータは、開示せずに最新の変換を使う代わりに拒否してください。
| 症状 | 最初に検査した所有者 | 証拠 | 勝手に決めつけないでください |
|---|---|---|---|
| 道はない | プランナーおよびグローバルマップ | スタート、目標、マップ、結果コード | コントローラの欠陥 |
| 道は存在するがロボットは止まる | コントローラーとローカルマップ | 命令理由と拒否理由 | プランナー解決モーション |
| ロボットは振動します | コントローラー、ジオメトリ、ローカライゼーション | 候補とポーズトレース | パラメータは1つで十分です |
| ロボットは「スタック」と宣言しません | プログレッスチェッカー | 変位と時間 | 車輪の動きは進歩に等しい |
| 目標の成功は間違っています | ゴールチェッカー | ポーズ、方位、そして許容範囲 | パスの終点は成功を定義します |
プログレスチェッカーを明示的な故障検出器として使う
進捗チェックは、一定時間の経過期間を越えた移動が十分かどうかを判断します。この半径と許容度は、局在ノイズ、指令速度、機動の種類、サイト制約を反映しなければなりません。ゆっくり慎重に進む方法が有効であり、スピンホイールは物理的な変位なしにオドメトリーを実現できます。
ブロックされた動き、低摩擦の滑り、局所ドリフト、意図的な遅いゾーン、一時停止の挙動をテストします。チェッカーが使うポーズの源を特定しましょう。進行失敗は、行動ツリーがプランナー失敗や目標拒否と区別できる名前付きのエラーを生じさせるべきです。
パスフォローとは独立して目標受容を定義します
ゴールチェッカーは位置と向きが十分に近いタイミングを判断し、チェックを越えて状態を保持することができます。公差は作業自体から求められます。トランジットウェイポイント、エレベーターの進入、ドッキングの段階姿勢は異なる精度と方位要件が必要です。
精度が重要な場合は独立したポーズ測定で成功を確かめましょう。複数の方向からのアプローチ試験と、局在補後の試験。検知および制御能力以下の公差を厳しくしてはいけません。その結果、タスクの成果を改善することなく終わりのない最終振動が生まれます。
意味のあるイベントの再計画のトリガー
定期的な再計画は簡単ですが、計算を無駄にし、良い経路を小さな変動で置き換えることがあります。イベント駆動型再計画は、無効な経路、変更された目標、持続的な局所的な障害に反応できますが、信頼できる条件に依存します。多くのシステムは、有界周期トリガーと妥当性チェックを組み合わせています。
プランナーの遅延やトラフィック下のパスチャーンを測定します。コントローラーが新しい経路を採用した時と、既存の経路が現地で実現可能なまま計画が失敗した場合にどうなるかを定義してください。代替品が承認チェックを通過する前に、最後の有効なプランを消去しないでください。
アルゴリズムをロボットのジオメトリやミッションに合わせる
グリッドベース、格子プランナー、ハイブリッドプランナーは、方位、モーションプリミティブ、車両運動学について異なる仮定を行っています。また、コントローラーは最適化、サンプリング、トラッキングの挙動にも異なります。ベンチマーク調整前にロボットの制約やサイトジオメトリから候補を選びます。
アルゴリズム全体で一つのシナリオマトリックスを使いましょう:オープントラベル、狭い通路、逆行、急カーブ、動的障害、ゴールアプローチ。レポート、コンピュートプラットフォーム、ロード。アンロードシミュレーションで勝利したプラグインは、デプロイされたエッジコンピュータのコマンド期限を逃すことがあります。
同期された成果物チェーンによるナビゲーションの診断
目標、スタートポーズ、グローバルおよびローカルコストマップ、生および平滑化されたパス、変換、コントローラーコマンド、進行状況、目標状態、そしてビヘイビアツリーの結果をキャプチャします。それらを一つのタイムラインに配置しましょう。この連鎖は、間違った幾何学が計画されたのか、変換されたのか、従ったのか、あるいは受け入れられたのかを示します。
まずは誤った成果物から始めましょう。もし経路がすでに致命的なセルを横切っているなら、コントローラーの調整は最初の解決策ではありません。パスが有効でコマンドが出ない場合は、プランナーを交換する前にローカルの実現可能性、状態の年齢、コントローラーの結果を確認してください。
テスト遷移と故障挙動
プランナーのタイムアウト、コントローラーのタイムアウト、無効パス、障害物挿入、ローカライゼーションジャンプ、ステイル変換、コマンドリジェクションを注入します。新しい目標が来たらキャンセルと所有権を確認しましょう。ナビゲーションアクションが失敗した後、ロボットは旧式のコマンドストリームを続けてはいけません。
故障の出現から検出、コマンド抑制、回復、最終報告までの時間を測定します。システム負荷や断続的なエラーも含めてください。非同期タイミングでは、どのコンポーネントが最初に故障するかが変わることが多いからです。
測定された作曲としてのナビゲーションをリリースする
バージョンプランナー、スムーマー、コントローラー、プログレッションチェッカー、目標チェッカー、マップ、フットプリント、ビヘイビアツリーを組み合わせて使えます。シナリオレベルの結果とテールレイテンシを保持しましょう。パラメータや証拠が示されていないアルゴリズム名だけでは再現可能なナビゲーションシステムを定義しません。
各変更ごとに簡潔なリリースチェックリストを使いましょう。
- 生の経路や滑らかな経路を独立して検証します。
- 指揮の年齢、実現可能性、制限を測定してください。
- タスク固有のケースで進捗や目標チェックツールをテストします。
- 再計画の頻度と経路の引き継ぎを制御します。
- 再調整する前に、最も古い誤った成果物を追跡してください。
よくある質問
ローカルコントローラーはローカルプランナーと同じですか?
「ローカルプランナー」という用語は、古いROSの用語でよく使われています。 Nav2、経路をたどったりローカルタスクを実行し、制御努力を生み出すコントローラーを指します。
グローバルプランナーはどのくらいの頻度で再計画すべきでしょうか?
測定された環境動態を使い、時間と経路の妥当性を計算します。周期的およびイベント駆動型トリガーはそれぞれに限定された振る舞いが必要です。
コントローラーで悪いグローバルパスを修正できますか?
能力の範囲内で局所的な障害を回避することは可能だが、世界的に無効または不可能なルートを修復することは期待すべきではない。
なぜロボットは目的地に到達するのに完走できないのでしょうか?
ゴールチェッカーは、ロボットが満たせない位置や方位許容差を求めたり、姿勢の証拠が一貫していない場合もあります。
ナビゲーションの失敗を最も早く診断する方法は何ですか?
同期した目標、マップ、パス、変換、コマンド、チェッカー状態を保存し、最も早い誤った成果物を見つけます。
ナビゲーション出力とモーションバウンダリー
プランナーパスとコントローラーコマンドはアプリケーション出力であり、安全指定の保護機能ではありません。独立した動きの制限、保護、停止行動は依然として必要です。