TL

動作計画(RRT・PRM)

障害物だらけの高次元空間でも経路が瞬時に見つかる理由を、RRTとPRMのサンプリング原理と完全性の違いから解き明かします。

応用ロボティクス動作計画RRTPRM経路探索アルゴリズム最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.RRT はスタートから木を急速展開し1回限りの経路探索に強く、PRM は空間全体にロードマップを事前構築し複数回のクエリに強い。用途で使い分ける。
  • 2.格子探索のA*は自由空間を離散化してから最短経路を保証するが、次元が上がると格子数が指数的に爆発する。サンプリングベース手法はこの次元の呪いを確率的探索で回避する。
  • 3.完全性には解像度完全性と確率完全性があり、RRT/PRMはサンプル数を無限に増やせば解を見つける確率完全性しか持たない。最短性も保証しない。

なぜ格子探索では足りないのか

ロボットアームや移動ロボットの動作計画は、障害物を避けながらスタート姿勢からゴール姿勢まで、ロボットが取りうる**配置空間(コンフィギュレーション空間、C空間)**上で経路を求める問題です。C空間の次元はロボットの自由度(関節数)と一致し、6軸アームなら6次元、移動ロボット単体でも姿勢を含めれば3次元になります。

A*やダイクストラ法のような格子探索は、この空間を格子状に離散化し、各格子点をノードとしてグラフ探索を行えば最短経路を保証します。しかし格子点の数は次元数に対して指数的に増えます。1軸あたり100分割しても、6次元なら100の6乗、すなわち1兆ノードに達し、メモリにも計算時間にも収まりません。これが次元の呪いで、産業用アームのような多自由度ロボットでは格子探索は事実上使えません。

サンプリングベース動作計画は、空間全体を網羅的に離散化する代わりに、C空間からランダムに点をサンプリングし、それらを衝突のない直線(局所プランナ)でつなぐことで経路を探します。空間全体を陽に表現しないため、次元が上がっても衝突判定の回数さえ許容できれば計算量が破綻しにくいのが利点です。代表的な2手法が**RRT(Rapidly-exploring Random Tree、急速展開ランダム木)PRM(Probabilistic Roadmap、確率的ロードマップ)**です。

C空間と衝突判定

動作計画は「作業空間(ロボットが動く実空間)」ではなく「C空間(関節角などロボットの内部状態がなす空間)」上で行います。作業空間では単純な障害物でも、C空間では複雑に歪んだ形になることがあります。RRT・PRMはC空間の形を明示的に計算せず、サンプリングした点や線分ごとに「衝突しているか」だけを判定するブラックボックス的な衝突判定器(コリジョンチェッカー)を呼び出すことで、C空間の複雑さを回避します。

RRT:スタートから木を急速展開する

RRTは、スタート点を根としてツリー(木構造)をC空間内に伸ばしていくことで経路を探します。1回のクエリ(スタートとゴールの組)ごとに専用の木を1本作る、使い捨て型のアルゴリズムです。

RRT の擬似コード:

  T ← 木を初期化、根 = スタート姿勢

  repeat(規定回数または解が見つかるまで):
    1. x_rand ← C空間からランダムに1点サンプリング
       (一定確率でゴール点そのものをサンプリングするゴールバイアスを使うことが多い)
    2. x_near ← 木 T の中で x_rand に最も近いノード
    3. x_new  ← x_near から x_rand の方向へ、
                 ステップ幅 delta だけ進んだ点
    4. x_near → x_new の線分が衝突しなければ:
         x_new を木 T に追加(x_near を親とする辺を張る)
         x_new がゴール近傍に達したら経路を復元して終了

要点は手順3の「ステップ幅を制限して伸ばす」操作です。ランダム点そのものへ木を伸ばすのではなく、既存の木から一定距離だけ進んだ点を新ノードとするため、木は空間の未探索領域へ向かって偏りなく急速に広がります。ランダム点は空間全体から一様に選ばれるため、木が疎な(まだ広がっていない)領域ほど「最も近いノード」に選ばれやすくなり、結果として木は自然に空間全体を埋めるように成長します。これがRRTの「急速展開」という名前の由来です。

観点RRTPRM
構造スタート単根の木(双方向RRTはスタート・ゴール双方から木を伸ばす)空間全体に張るグラフ(ロードマップ)
向いている用途1回限りのクエリ、動的な環境同じ環境で複数回クエリを繰り返す用途
構築のタイミングクエリのたびにオンラインで構築オフラインで事前構築、クエリはオンラインで高速
得意分野高次元・狭い通路以外での高速な解発見静的環境での使い回し、複数始終点対応
弱点毎回作り直すため使い回せない狭い通路にサンプルが乗りにくい(狭い通路問題)

実務ではさらに、得られた経路の折れ線をなめらかにする**経路平滑化(ショートカット法やスプライン化)**を後処理として必ず行います。RRTが返す経路はステップ幅delta刻みのジグザグな折れ線であり、そのままではロボットの実行に適さないためです。

PRM:ロードマップを事前に作っておく

PRMは、クエリ(スタートとゴールの組)に依存しないロードマップをあらかじめ空間全体に構築し、個々のクエリではロードマップ上のグラフ探索だけを行う、2段階のアルゴリズムです。

PRM の擬似コード(学習フェーズ):

  V ← 空集合(ノード集合), E ← 空集合(辺集合)

  repeat(規定数のサンプルに達するまで):
    1. q ← C空間からランダムに1点サンプリング
    2. q が衝突していなければ q を V に追加
    3. q の近傍ノード群(k近傍や半径r以内)それぞれについて:
         q との間の線分が衝突しなければ、その辺を E に追加

  → グラフ G = (V, E) がロードマップとして完成

クエリフェーズ(スタート・ゴールごとに毎回):
  1. スタート点・ゴール点をそれぞれロードマップに接続
  2. グラフ G 上で A* やダイクストラ法により最短経路を探索

学習フェーズはクエリと無関係にオフラインで一度だけ行えるため、同じ環境(工場の棚配置など障害物が変わらない環境)で何度も経路計画を行うロボットアームのような用途に向きます。クエリフェーズはロードマップという疎なグラフ上の探索に帰着するため高速です。

PRMの弱点は狭い通路問題です。2つの部屋を結ぶ細い通路のような領域は、ランダムサンプリングでは衝突しない点が生成される確率自体が低く、ロードマップに反映されにくくなります。対策として、障害物近傍を優先的にサンプリングするガウシアンサンプリングやブリッジサンプリング(障害物内の2点の中点を試す手法)など、一様サンプリングを偏らせる派生手法が使われます。

RRT・PRMの主要な派生系統

どちらも基本形の弱点を補う形で多数の派生が生まれています。時系列と狙いを整理すると次の通りです。

  • RRT系: RRT(1998年、LaValle)→ RRT-Connect(双方向に木を伸ばし高速化)→ RRT*(Karaman & Frazzoli、2011年、漸近最適性を追加)→ Informed RRT*(一度解を得たら楕円領域にサンプリングを限定し収束を高速化)。
  • PRM系: PRM(1996年、Kavraki他)→ Lazy PRM(辺の衝突判定をクエリ時まで遅延しコストを削減)→ PRM*(RRT*と同じ考え方で漸近最適性を追加)。

RRTとPRMは「近傍ノードの中でコストが最小になるよう親を選び直す(rewire)」処理を加えることで、サンプル数を無限に増やすと最適経路に確率1で収束する漸近最適性を持ちます。基本形のRRT/PRMにはこの性質はなく、最初に見つかった経路をそのまま返すだけです。

完全性という評価軸

動作計画アルゴリズムの理論的性質を比較するとき、**完全性(completeness)**という概念が軸になります。

完全性の種類定義該当するアルゴリズム
完全(complete)解が存在すれば有限時間で必ず見つけ、存在しなければ「なし」と有限時間で判定できる厳密なC空間分解法(多くは低次元専用で実用は限定的)
解像度完全(resolution complete)離散化の解像度を細かくする極限で解を見つけることが保証される格子探索(A*・ダイクストラ法)
確率完全(probabilistically complete)サンプル数を無限に増やせば解を発見する確率が1に収束する(有限時間での保証はない)RRT・PRM(基本形・派生形とも)

RRT・PRMはいずれも確率完全性しか持ちません。つまり「解が存在するのに永遠に見つからない」ことは実用上は稀ですが、理論上は有限時間内に解を発見できるという保証がない点、また基本形は最短経路を返す保証がない点が、Aのような格子探索との決定的な違いです。Aは探索空間を格子に落とし込んだ時点でその格子上の最短性は保証しますが、格子の粗さが真の最適解を歪める点、そして先述の次元の呪いにより高次元では現実的な時間で終わらない点が弱点です。RRT*/PRM*は確率完全性に加えて漸近最適性を持ちますが、有限サンプルでの最適性は依然として保証されません。

狭い通路・非ホロノミック拘束という現実の壁

基本のRRT/PRMは「任意の2点を直線で結んで衝突判定する」ことを前提にしますが、車輪型ロボットのように旋回半径に制約がある非ホロノミック系では直線移動そのものが実行不可能です。この場合は局所プランナを、曲率制約を満たすDubins経路やReeds-Shepp経路に置き換えたKinodynamic RRT(状態空間RRT)を使います。狭い通路問題とあわせて、サンプリングベース手法を実機に適用する際は「サンプリングの偏り」と「局所接続の実行可能性」の両方を環境・機体ごとに調整する必要があります。

試験・面接での頻出ポイント
  • RRT: スタート単根の木を最近傍点からステップ幅deltaだけ伸ばして急速展開。1回のクエリ向け。
  • PRM: クエリ非依存のロードマップをオフライン構築し、クエリ時はグラフ探索のみ。複数回クエリ向け。
  • 弱点: RRTは使い回し不可、PRMは狭い通路問題(サンプルが乗りにくい)。
  • 完全性: 格子探索(A*)は解像度完全、RRT/PRMは確率完全にとどまり有限時間の保証がない。
  • 漸近最適性: RRT*/PRM*はrewireにより無限サンプルで最適解に確率収束するが、基本形にはこの保証がない。

まとめ

RRTとPRMは、C空間を陽に離散化せずランダムサンプリングと局所的な衝突判定だけで経路を探すことで、格子探索が次元の呪いに阻まれる多自由度ロボットの動作計画を現実的な計算量で解く手法です。要点は、(1) RRTはスタートから木を急速展開する使い捨て型でオンラインの1回クエリに向くこと、(2) PRMはクエリ非依存のロードマップを事前構築し同一環境での繰り返しクエリに向くこと、(3) 両者ともサンプル数を無限に増やせば解を見つける確率完全性しか持たず、Aが持つ解像度完全性や最短性の保証は基本形にはないこと、(4) RRT/PRMはrewireや遅延評価などの派生で漸近最適性や高速化を獲得してきたこと。狭い通路問題や非ホロノミック拘束といった実務上の壁を理解した上で使い分けることが、実機への適用では欠かせません。

ロボティクス Article

動作計画(RRT・PRM)を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

ロボティクス

比較で見る軸

難易度: advanced / カテゴリ: ロボティクス / タグ数: 6

導入後に効く点

格子探索のA*は自由空間を離散化してから最短経路を保証するが、次元が上がると格子数が指数的に爆発する。サンプリングベース手法はこの次元の呪いを確率的探索で回避する。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
ロボティクス
タグ数
6

判断チェックリスト

  • 自社の用途が「ロボティクス / 動作計画」に近いか確認する。
  • 強みである「RRT はスタートから木を急速展開し1回限りの経路探索に強く、PRM は空間全体にロードマップを事前構築し複数回のクエリに強い。用途で使い分ける。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

ロボティクス動作計画RRTPRM経路探索ロボティクス動作計画RRT