6 軸ロボットのオイラー角の計算
空間の方向はオイラー角でどのように表されるか?
このチュートリアルで例として使用されている Mecademic の Meca500 のような 6 軸ロボット アームを使用している場合、おそらくそのツール (エンド エフェクタ) の配置に関心があるでしょう。 ) さまざまな向きで。言い換えれば、エンドエフェクタを目的の位置と方向の両方(つまり、目的のポーズ)に動かすようにロボットをプログラムできる必要があります。 )。もちろん、いつでもロボットのエンドエフェクタをジョギングしたり、おおよそ目的のポーズに手で誘導したりできますが、このいわゆるオンライン プログラミング方法 退屈で非常に不正確です。目的のポーズをオフラインで計算して定義する方がはるかに効率的です。また、 ツール参照フレームを定義するために エンドエフェクタに関連付けられている場合 (ここに示されている画像のように)、フランジ参照フレームに対するそのツール参照フレームの姿勢を計算する必要があります。 .
3D 空間では、ポーズを定義するために最低 6 つのパラメータが必要です。たとえば、ロボットのエンドエフェクタの位置、より正確には TCP の位置 (ツールの中心点 )、通常は x として定義されます 、 y そして z ワールド基準フレームに対するツール基準フレームの原点の座標 .しかし、空間での向きをどのように定義するのでしょうか?
空間における向きの表現は複雑な問題です。 オイラーの回転定理 (3D) 空間では、剛体上の点が固定されたままになるような剛体の変位は、固定点を通る軸を中心とした 1 回の回転に相当すると述べています。したがって、このような回転は、3 つの独立したパラメーター (軸を記述するための 2 つと回転角度を表すための 1 つ) によって記述することができます。ただし、空間内の方向は、他にもいくつかの方法で表すことができ、それぞれに長所と短所があります。これらの表現のいくつかは、必要最小限の 3 つのパラメーターより多くを使用します。
1 つのデカルト (3D) 参照フレーム F から位置座標を変換する最も一般的な方法 、別のF'に 、回転行列です .したがって、この 3×3 マトリックスを使用して、参照フレーム F’ の向きを表すことができます。 参照フレームに関して F .ただし、この表現は後で明らかになるように必要になることが多いのですが、向きを定義するためのコンパクトで直感的な方法ではありません。 .この形式の表現は、4 つのスカラーの正規化されたベクトルで構成されます。クォータニオンは、回転行列よりもコンパクトであるだけでなく、近似誤差の影響を受けにくいため、一般にロボット コントローラーで使用されます。さらに、2 つの異なる方向間の補間中に、クォータニオンの要素が連続的に変化し、オイラー角などの 3 次元パラメーター化に固有の不連続性が回避されます。それにもかかわらず、クォータニオンは直感的でないため、ユーザーとロボットのコントローラーとの間の通信手段として使用されることはめったにありません。
オイラー角の詳細な定義
CAD ソフトウェアまたはロボット コントローラで空間内の方向をユーザーに伝えたり、ユーザーが方向を定義できるようにする最も一般的な方法は、オイラー角を使用することです。 .オイラー角という用語はしばしば誤用されるため、このインタラクティブなチュートリアルを用意しました。
オイラー角は 3 つの角度のセット (またはシーケンス) であり、α などで表すことができます。 、β 、γ . (多くの場合、オイラー角はロールで表されます 、ピッチ 、ヨー .) オイラー角は次のように定義されます:2 つのデカルト右手 3D 参照フレームを考えます。そのうちの 1 つを固定と任意に呼びます。 フレーム、もう一方は モバイルと呼ばれます フレーム。 2 つの参照フレームは、最初は一致しています。 3 番目のフレームの方向を定義するには (3 つのフレームはすべて同じ原点を共有します)、モバイル フレームを回転させて、以下に示す順序で 3 番目のフレームと一致するように移動フレームを移動します。
<オール>
3回転の順番が重要です。したがって、合計で 216 (6
3
) 可能なシーケンス:x →はい →z 、 y →はい →z 、 z →はい →z 、x’→y →z 、y’→y →z 、z’→y →z など。ただし、2 つの連続する回転が同じ軸を中心とする一連の 3 つの回転 (例:y →はい →z ) 一般的な向きを説明することはできません。さらに、最初のローテーションの前に、 x xと一致 '、y yと一致 '、および z zと一致 '。その結果、これら 216 の組み合わせすべてのうち、12 の一意で意味のある順序付けられた回転のシーケンス、または 12 のオイラー角の規則しか存在しません。 :XYZ, XYZ, XZX, XZY, YXY, YXZ, YZX, YZY, ZXY, ZXZ, ZYX, ZYZ.
とはいえ、12個の組み合わせのそれぞれは、他の3つのシーケンスに相当します。つまり、各オイラー角の規則は、4 つの異なる方法で記述できます。たとえば、ZYX 慣習はシーケンス z と同等です →はい →× 、x 「→はい 「→z '、y →z 「→x そして y →× →z '。幸いなことに、一部の回転が移動座標系の軸を中心とし、他の回転が固定軸を中心とするシーケンスでオイラー角を説明する人は誰もいません (例:y のようなシーケンス)。 →z 「→x そして y →× →z ').
したがって、12 の異なるオイラー角の慣習がありますが、それぞれは通常、2 つの異なる方法で記述されます。固定座標系の軸を中心とした一連の回転として、または、モバイルフレーム。したがって、固定とモバイルの規則について話すと便利ですが、それらは同等です。たとえば、固定の XYZ オイラー角の慣例は x で表されます →はい →z シーケンス、モバイル ZYX オイラー角の規則は z’ で表されます →うん →x'
ロボティクスでは、FANUC と KUKA は固定 XYZ オイラー角度規則を使用しますが、ABB はモバイル ZYX オイラー角度規則を使用します。さらに、カワサキ、オムロン アデプト テクノロジーズ、およびストーブリは、モバイル ZYZ オイラー角度規則を使用しています。最後に、CATIA と SolidWorks で使用されるオイラー角は、モバイル ZYZ オイラー角規則によって記述されます。
Mecademic では、モバイルの XYZ オイラー角の規則を使用しているため、オイラー角をシーケンス x として記述しています。 「→はい 「→z '。なぜ違うのですか?その理由は、軸対称ワークピースを処理するためのメカニカル グリッパー (ビデオを参照) を提供していたためです。このグリッパーは、ジョイント 6 のモーターによって作動します。このようなグリッパーを装備した 6 軸ロボットは、2 つの回転自由度しか制御できません。より具体的には、ジョイント6の軸の方向、すなわちワークピースの対称軸の方向である。選択されたオイラー角の規則では、角度 α そして β この方向を定義し、角度 γ は、制御不能な寄生回転に対応するため無視されます。
以下のアプレットは、オイラー角を理解するのに役立ちます。 1 番目、2 番目、3 番目の回転の x、y、z ボックスをクリックして、12 の可能なオイラー角規則の 1 つを選択できます。 (デフォルトのオイラー角シーケンスは、Mecademic が使用するものです。) 固定座標系または可動座標系の軸を中心とした回転を切り替えるには、これら 9 つのボックスのいずれかをダブルクリックする必要があります。固定フレームの軸はグレーで描かれ、可動フレームの軸は黒で描かれます。軸 x そして x ‘ は赤で描かれています y そして y ' は緑色、z そして z ' 青色の。 3 つの青い水平矢印のいずれかに沿ってマウスを滑らせると、対応するオイラー角が変化します。または、矢印の下にある対応するテキストボックスで、オイラー角の値 (度単位) を直接設定することもできます。最後に、参照フレーム上でマウスをドラッグして視点を変更できます。
<表>
R =R x (0°) R はい (0°) R z (0°) = |
|
回転行列によるオイラー角の計算
上記のアプレットを使用すると、特定の一連のオイラー角について、固定座標系に対する可動座標系の向きが右端のサブ図に表示されます。残念ながら、実際には状況は通常逆です。 2 つの参照座標系が頻繁にあり、一方の座標系の他方に対する座標系の向きを表すオイラー角を見つけたいとします。
少なくとも 2 つの軸が平行である向きについては、オイラー角を推測することができます。角度は試行錯誤で。たとえば、このチュートリアルの最初の画像をもう一度見て、グリッパーに関連付けられたツールの基準座標系の方向を定義する Mecademic で使用されている、フランジの基準座標系に対するオイラー角を見つけてみてください。答えは α =−90°, β =0°, γ =-90°。なかなか手に入りませんよね?したがって、より効率的にするには、やはり回転行列について学習する必要があります。
既に述べたように、空間内の任意の方向は 3×3 回転行列で表すことができます。たとえば、α の回転 軸xについて 、βの回転 y軸について 、γ の回転 軸について z 、それぞれ次の 3 つの回転行列に対応します:
R x (α ) = |
| 、 |
R はい (β ) = |
|
R z (γ ) = |
|
上記の行列を 基本回転行列と呼びます .一連の回転に対応する基本回転行列の積を取得するには、最初の回転に対応する基本回転行列を記述することから始めます。たとえば、最初の回転が x についての場合 (または x ‘) 軸、次に R と書く x (ψ )、ψ 回転角です。後続の回転ごとに、現在の結果を次の回転行列で事後乗算 (右乗算) するか (回転がモバイル参照フレームの軸を中心とする場合)、または現在の結果を次の回転行列で前乗算 (左乗算) します。 、回転が固定参照フレームの軸を中心とする場合。アプレットを使用して、基本的な回転行列の結果の積を確認します。たとえば、ローテーション シーケンス x 「→はい 「→z ' 製品に対応します R =R x (α )R はい (β )R z (γ )。したがって、Mecademic で使用されるオイラー角に対応する回転行列は次のとおりです。
R (α 、β , γ ) = |
|
したがって、特定の向きに対して、次の 2 つのことを行う必要があります。まず、向きに対応する回転行列を見つける必要があります。次に、いくつかの簡単な方程式を使用してオイラー角を抽出する必要があります。まず、回転行列を見つける 2 つの方法を示しましょう。
下の図に示す例を考えてみましょう。ここでは、フレームの向きを表す回転行列を見つける必要があります F’ フレーム F に関して . (常に x を表すことを思い出してください 赤の軸、y 軸は緑、z 軸は青色です。)
ここで、3 番目の参照フレームを F に合わせると、簡単にわかります。 、モバイル フレームとして機能し、このフレームを z を中心に回転させます。 ‘ θ の軸 度、y を中心に回転させます。 ‘ φ の軸 度、F の向きを取得します .したがって、探している回転行列は次のとおりです。
R 望ましい =R z (θ )R はい (φ ) = |
|
あるいは、上記の回転行列を直接取得することもできます。 1 列目、2 列目、3 列目は、x に沿った単位ベクトルの座標を表します。 、 y そして z フレーム F' のそれぞれの軸 、フレーム F に関して .
目的の向きを表す回転行列が得られたので、あとは 9 つのスカラー三角方程式のシステムを解く必要があります R 望ましい =R (α 、β , γ )、αの場合 、β 、γ .幸いなことに、この問題には一般的な解決策があり、使用する方程式を簡単に示します。
フレームの目的の向きを F' フレームに関して F 次の回転行列で表されます:
R 望ましい = |
|
次に、Mecademic で使用されるモバイル XYZ 規則に従って、オイラー角 (度) が次の 2 つのケースに従って取得されます。
ケース 1: r 1,3 ≠ ±1 (つまり、z' フレームの軸 F’ x に平行ではありません フレームの軸 F ).
β =asin(r 1,3 )、 γ =atan2(−r 1,2 、r 1,1 )、 α =atan2(−r 2,3 、r 3,3 ).
ケース 2: r 1,3 =±1 (つまり、z' フレームの軸 F’ x に平行です フレームの軸 F ).
β =r 1,3 90°、 γ =atan2(r 2,1 、r 2,2 )、 α =0.
一般的なケース 1 では、実際には、すべての角度が半開範囲 (-180°、 180°) にある 2 つの解のセットがあります。ただし、両方の解のセットを計算しても意味がないため、最初の解のみを示します、-90° <β <90°。また、ソリューションで関数 atan2(y, x) を使用していることにも注意してください。一部のプログラミング言語、一部の関数電卓、およびほとんどの表計算ソフトウェアでは、この関数の引数が逆になっていることに注意してください。
最後に、ケース 2 はいわゆる表現特異点に対応することに注意してください。 .この特異点は、3D 空間での向きの 3 つのパラメーター表現に存在します (Mecademic のオイラー角の選択だけではありません)。これは、球上の点を 2 つのパラメーターだけで表す問題に似ています。たとえば、地球上の南極と北極では経度が定義されていません。言い換えれば、この特異点はメカニズムの特異点とは何の関係もありません (例:いわゆる ジンバル ロック )、実際の物理的な問題 (自由度の損失など) に対応します。
エクササイズ
私たちに起こった次の現実の状況を考えてみてください。 Meca500 ロボットアームのエンドエフェクターに FISNAR ディスペンスバルブを取り付けたいと考えました。当然のことながら、アダプターを設計して機械加工したエンジニアは、オイラー角を気にせず、機械加工性と到達可能性だけに関心がありました。彼の設計では、基本的に 45° の 2 つの回転がありました。まず、彼はロボット フランジの正反対にある 2 つのねじ穴を使用してアダプターを取り付けました。これにより、最初の 45° の回転が生じました。次に、フランジ境界面とディスペンサーの軸の間の角度は 45° でした。
上の図は、実際の設置 (左) と、定義する必要のあるツール フレーム (右) を示しています。軸対称工具を使用する場合、工具の Z 軸を工具の軸に合わせるのが一般的な方法であることに注意してください。これは、モバイル XYZ オイラー角規則で特に役立ちます。これは、軸対称ツールを中心とした冗長回転が 3 番目のオイラー角 γ に対応するためです。したがって、最初の 2 つのオイラー角はツールの軸を定義し、3 番目のオイラー角はロボットの最適な構成を選択するために使用できます (つまり、特異点から遠い)。
例に戻ると、試行錯誤によってモバイル XYZ 規則に従ってオイラー角を導き出すことは不可能であることを示します。実際、このツール参照フレームの選択では、最終的な向きを次の 2 つの回転のシーケンスとして表すことができます:R =R z (45°)R はい (45°)。ここから、前述の式を使用してモバイル XYZ 規則に従ってオイラー角を抽出し、α を取得できます。 =−35.264°, β =30.000°、γ =54.735°。このような状況ではオイラー角を習得する必要があると確信していますか?
表現上の特異点と向きの誤り
モバイル XYZ オイラー角規則の場合、z' フレームの軸 F’ x に平行です フレームの軸 F 、αの無限のペアがあります と γ それは同じ向きを定義します。明らかに、目的の向きを定義するために必要なのは 1 つだけなので、α を任意に設定しました ゼロに等しいこと。より具体的には、β の場合 =90°、α の任意の組み合わせ と γ 、α + γ =φ など φ は任意の値で、同じ向きに対応し、Mecademic のコントローラによって {0,90°,φ} として出力されます。同様に、β の場合 =−90°、α の任意の組み合わせ と γ 、α − γ =φ φ は任意の値であり、同じ方向に対応し、Mecademic のコントローラによって {0,−90°,−φ} として出力されます。ただし、フレームの向きを表現しようとすると F’ フレームに関して F そして z' フレームの軸 F’ x にほぼ平行 フレームの軸 F (つまり、β が ±90° に非常に近い)、オイラー角は数値誤差に非常に敏感になります。 In such a case, you should enter as many digits after the decimal point as possible when defining the orientation using Euler angles.
Consider the following situation which has caused worries to several users of our Meca500. You set the orientation of the tool reference frame with respect to the world reference frame to {0°, 90°, 0°}, which is a representational singularity. Then you keep this orientation and move the end-effector in space to several positions. At some positions, because of numerical noise, the controller does not detect the condition r 1,3 = ±1 (Case 2, as mentioned above) and calculates the Euler angles as if the orientation did not correspond to a representational singularity. Thus, the controller returns something like {41.345°, 90.001°, −41.345°}, which seems totally wrong and very far away from {0°, 90°, 0°}. Well it’s not.
Unlike position errors, which are measured as √(Δx
2
+ Δy
2
+ Δz
2
), orientation errors are not directly related with the variations in the Euler angles, especially close to representational singularities. To better understand this so-called non-Euclidean nature of Euler angles, consider the spherical coordinates used to represent a location on Earth. At the North Pole, the latitude is 90° (North), but what is the longitude? Longitude is not defined at the North Pole, or it can be any value. Now imagine that we move only 1 mm away from the North Pole in the direction of Greenwich. In this case, the latitude will be 89.99999999°, but the longitude will now have the value of 0°. Imagine once again that you return to the North Pole and move 1 mm in the direction of Tokyo. The new longitude will be approximately 140°. Between your two locations, the error in longitude is 140°! However, the real angular error will be approximately 0.00000002°.
The situation described above is similar in all other Euler angles conventions. Depending on the Euler angle convention, the correspoding representation singularity occurs when a specific axis of frame F’ is parallel to another specific axis of frame F . In such a representation singularity, the first and third rotation become dependant.
In conclusion, unless you master Euler angles (or use sophisticated offline programming software), and more specifically the convention used for programming your robot, you will hardly be able to program anything but simple pick and place operations. Because robotics is not simple, we do our best to help you understand the basics.
産業オートメーション部品をお探しですか?お手伝いできます!
パーツを購入する自動制御システム