逆運動学の問題はどのように解決できますか?


20

ロボットアームの順運動学は簡単に解決できます。Denavit–Hartenberg変換行列を使用して各ジョイントを表現できます。

たとえば、ジョイントが線形アクチュエーターである場合、変換マトリックスを使用できます。th

ここで、拡張長は d iによって定義されますT=[10000100001d0001]d

一方、回転リンクは次のようになります。

ここで、 αは角度であり、そして Lは、リンクの長さです。T=[100L0cosαα00αcosα00001]αL

我々は、すべての変換行列を乗算することにより、エンドエフェクタの位置と方向を見つけることができます:T

問題は、逆問題をどのように解決するかです。

数学的には、所望のエンドエフェクタの位置のために、パラメータが見つける日間のIα Iように、Π T iは = Mを。この方程式を解く方法は何ですか?MdαT=M

回答:


11

昔、私が学んでいたときにこれを作りながら、私は簡単な勾配追従を使用してIK問題を解決しました。

モデルでは、各ジョイントを各ジョイントごとに少しずつ回転させて、エンドポイントの位置エラーにどの程度の差があるかを確認します。それを行ったら、次に各ジョイントを、それが与える利益に比例する量だけ回転させます。その後、あなたは十分に近くなるまでそれを何度も繰り返します。

一般的に、これは勾配追従または丘追従として知られています。2自由度のロボットアームを想像してください。

IK

ジョイントAを少し回転させると、終点が方向aに移動ます。ジョイントBを少し回転させると、終点が方向bに移動します。これらの両方は、ターゲットにほぼ同じ量だけ近づけるため、両方のジョイントをほぼ同じ速度で回転させる必要があります。

ターゲットまでの距離と関節角度のグラフをプロットすると、次のようになります。

IK

私はいくつかの輪郭に色をつけました。このアルゴリズムがたどる経路を見ることができます。あなたが気づくのは、関節空間では、とられる経路が最適に見えないということです。曲線を描きます。ただし、実空間では、終点がターゲットに対してかなり直線になっていることがわかります。また、実際には問題の解決策が2つあり、アルゴリズムが最も近いものを見つけたことがわかります。

これが逆運動学の問題を解決する唯一の方法ではありません。確かに最善の方法でもありません。

長所:

  • 概念的にはシンプルで、これを学んでいるだけなら素晴らしい。
  • Denavit–Hartenberg変換行列を見て恐怖を感じても、実装は簡単です。
  • 非常に一般的であり、エンドポイントがどのように移動するかを推定できる限り、あらゆる種類のジョイント(回転、線形、その他)を使用できます。
  • ゼロまたは無限の数のソリューションがある場合でも、うまく対処します。

短所:

  • 遅いので、解決策を見つけるのに何度も繰り返します。ただし、計算されたアルゴリズムの進行状況を実際のアームだけで追跡できる場合は問題ありません。
  • 極小値にとどまることがあります。IE十分に良いものを見つけた場合、最良の解決策を見つけられないかもしれません。

私の非常に古いウェブサイトにそれについての詳細があります:見栄えの良いテクスチャ化された光源の弾む楽しいスマートで伸縮性のあるページ


3

ヤコビ行列を中心としたこの問題に対する多くの解決策があります。このスライドショーはヤコビアンの方法をカバーしており、私がよく知らない巡回座標降下法にも言及しています。

このテーマに関するリソースはたくさんあります。「逆運動学のヤコビアン」をグーグルに尋ねたら。

また、M ITの導入ロボティクスに関するオープンコースの講義ノートの5.3章も参照してください。


1

2つの広範なアプローチがあります。

  • エンドエフェクタポーズが与えられた解析ソリューションは、ジョイント座標を直接計算します。一般に、ソリューションは一意ではないため、可能なジョイント座標のセットを計算できます。ロボットがその環境(またはそれ自体)で物事にぶつかる原因となる場合もあれば、特定のソリューションの選択に役立つ場合もあります。肘を上(または下)にしたり、ロボットの腕を胴体の左(または右)にしたい場合があります。一般に、解析ソリューションの取得には制約があります。6軸ロボットの場合、球面手首(すべての軸が交差する)が想定されます。多くの異なるタイプのロボットの分析ソリューションは数十年にわたって計算されてきたものであり、おそらくロボットのソリューションを提供する論文を見つけることができます。
  • 他の回答で説明されている数値解は、最適化アプローチを使用して、順運動学が正しい解を与えるまで関節座標を調整します。繰り返しになりますが、これに関する膨大な文献と、多くのソフトウェアがあります。

Robotics Toolbox for MATLABを使用して、Denavit-Hartenbergパラメーターを使用して、よく知られている6軸ロボットのモデルを作成します

>> mdl_puma560
>> p560

p560 = 

Puma 560 [Unimation]:: 6 axis, RRRRRR, stdDH, fastRNE            
 - viscous friction; params of 8/95;                             
+---+-----------+-----------+-----------+-----------+-----------+
| j |     theta |         d |         a |     alpha |    offset |
+---+-----------+-----------+-----------+-----------+-----------+
|  1|         q1|          0|          0|     1.5708|          0|
|  2|         q2|          0|     0.4318|          0|          0|
|  3|         q3|    0.15005|     0.0203|    -1.5708|          0|
|  4|         q4|     0.4318|          0|     1.5708|          0|
|  5|         q5|          0|          0|    -1.5708|          0|
|  6|         q6|          0|          0|          0|          0|
+---+-----------+-----------+-----------+-----------+-----------+

次に、ランダムな関節座標を選択します

>> q = rand(1,6)
q =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

次に、順運動学を計算します

>> T = p560.fkine(q)
T = 
   -0.9065    0.0311   -0.4210  -0.02271
    0.2451    0.8507   -0.4649   -0.2367
    0.3437   -0.5247   -0.7788    0.3547
         0         0         0         1

6つの関節と球形の手首を持つロボットの公開された解析ソリューションを使用して、逆運動学を計算できます

>> p560.ikine6s(T)
ans =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

そして出来上がり、元の関節座標があります。

数値解

>> p560.ikine(T)
Warning: ikine: rejected-step limit 100 exceeded (pose 1), final err 0.63042 
> In SerialLink/ikine (line 244) 
Warning: failed to converge: try a different initial value of joint coordinates 
> In SerialLink/ikine (line 273) 

ans =

     []

失敗しました。これは、通常、適切な初期ソリューションが必要なため、これは一般的な問題です。やってみよう

>> p560.ikine(T, 'q0', [1 1 0 0 0 0])
ans =
    0.7922    0.9595    0.6557    0.0357    0.8491    0.9340

これで回答が得られますが、分析ソリューションとは異なります。IK問題には複数の解決策があるので、それでも大丈夫です。フォワードキネマティクスを計算することにより、ソリューションが正しいことを確認できます。

>> p560.fkine(ans)
ans = 
   -0.9065    0.0311   -0.4210  -0.02271
    0.2451    0.8507   -0.4649   -0.2367
    0.3437   -0.5247   -0.7788    0.3547
         0         0         0         1

そして、それが私たちが始めた変換と同じであることを確認します(それはそうです)。

その他のリソース:


0

6DOFのロボットの逆運動学を計算したい場合は、パイパーのソリューションを使用した方が良いでしょう。6自由度のロボットがあり、3軸が交差している場合、それを使用できます。あなたが簡単にそれを証明できる簡単な証拠があります。


証明の詳細を教えていただけますか?
50k4

Robotics Parhamsagharichiha へようこそ。ご回答いただきありがとうございますが、いくつかの説明とコンテキストを提供する包括的な回答を探しています。1行の回答ではこれを行うことができないため、回答を編集して、それが正しい理由、理想的には引用を説明してください。説明を含まない回答は削除される場合があります。
チャック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.