Smart Motion

RoboDK では、「Smart Motion」と「Collision-Free Motion Planner(PRM)」の両方が、ロボットが障害物にぶつかることなく移動できるよう設計されています。ただし、その実現には異なる数学的アプローチとワークフローが採用されています。

コリジョンフリー・モーションプランナーのモーションプランニング機能は、「確率的ロードマップ(PRM)」と呼ばれるモーションプランニングアルゴリズムを使用し、ロボットの作業領域内で自動的に衝突のないパスを作成します。

ターゲットの接続方法

これら2つのモーションプランナーの最大の違いは、ロボットが動作する前に必要な準備作業の量にあります。

PRMプランナーは、恒久的な道路網を構築するような仕組みの工具です。まず「構築フェーズ」を実行し、数分かけてランダムにポイントを配置し、それらを巨大なロードマップとして結びつけようと試みます。マップが仕上げられれば、「道路」はすでに構築されているため、パスの検索は瞬時に行われます。しかし、ステーション内のテーブルやボックス、その他のオブジェクトを1つでも移動させると、マップ全体が使い物にならなくなり、一から再構築する必要があります。

Smart Motionは、これよりもはるかに柔軟に動作するように設計されています。時間のかかるマップ構築のステップはありません。ロボットが現在どこにいるか、どこへ移動する必要があるかを正確に把握し、障害物を回避する安全な「トンネル」を見つけ出します。これはワンステップのプロセスです。ポイント(ターゲット)を選択し、「生成」をクリックするだけで、ロボットが移動します。作業セル内でオブジェクトを移動させた場合でも、新しいマップを待つことなく、もう一度「パス生成」をクリックするだけで済みます。

注:この点において、Smart Motionはワークフローを中断させずに進められるため、より効率的です。ステーションのレイアウトにわずかな変更を加えるたびに、15分間作業を中断して「再マッピング」を行う必要がありません。

計算時間

モーションプランニングにおける「速度」とは、単にロボットの移動速度だけでなく、プランナーが計算に要する時間の長さにも関係します。

PRMプランナーの「クエリフェーズ」(マップ上のパス検索)は非常に高速ですが、その一方で「構築フェーズ」が非常に長くなります。ステーションが常に静的な状態であれば問題ありませんが、頻繁に変更が行われる場合は時間がかかってしまいます。

Smart Motionは、単一の「AからBへ」という問題を驚くほど高速に解決するアルゴリズムを採用しています。パスの両端から同時に探索を開始し、中央で合流します。これにより、一般的なタスクのほとんどにおいて、「思考時間」はほとんど気にならないほど短くなります。

狭い空間でのナビゲーション

あらゆるモーションプランナーにおいて、衝突の検出と回避が焦点となります。したがって、生成される安全なパスの精度は非常に重要な要素となります。

PRMプランナーは、マッピング段階で配置したランダムなポイントに依存しています。もしランダムなポイントが狭い空間の内側に配置されていない場合、たとえ十分なスペースがあっても、ロボットは通行不能であると判断してしまいます。サンプル数を増やし、サンプルあたりのエッジ数を増やすことで、よりきめ細かいロードマップが生成されます。生成には時間がかかりますが、より正確な解が得られます。

Smart Motionには、このような扱いにくい箇所に対応するための「Constrained Space」オプションが用意されています。これを有効にすると、ソルバーはデカルト座標系ではなく関節座標系で動作するよう強制されます。これにより、ポーズが検証される際、システムが一意の関節構成を特定できるようになり、単一のデカルト座標系ポーズに対して複数の解が存在するという問題を防止します。要するに、これによりプランナーがロボットの位置と構成を記憶しやすくなり、見つかったパスが確実に維持されるようになります。

滑らかさと安全性

どちらのモーションプランナーでも、ロボットが周囲の状況をどの程度「考慮」するかを制御することができます。

PRMプランナーを使用してより滑らかで安全なパスを得るには、「サンプル数」と「サンプルあたりのエッジ数」を適宜増やす必要があります。これによりマップの精度は向上しますが、待機時間が長くなります。

Smart Motionでは、以下の制限を持つシンプルな「パス品質」スライダーを使用します:

1.「粗(Coarse)」:広々とした空間で、即座に回答を得るために使用します。

2.「Fine」:これは複雑な作業に使用されます。ロボットに「ごく小さなステップ」を踏みながら移動させ、衝突をチェックし、全体的に滑らかなパスを生成するようにします。