工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 自動制御システム

6軸ロボット制御のためのオイラー角マスターガイド

オイラー角で空間の向きをどう表現するか?

メカデミックのMeca500のような6軸ロボットアームを使用する場合、そのツール(エンドエフェクタ)をさまざまな向きで位置決めしたいと考えるでしょう。つまり、ロボットをプログラミングして、エンドエフェクタを目標位置「だけでなく」目標姿勢(すなわち目標「ポーズ」)に移動させる必要があります。もちろん、ロボットのエンドエフェクタをジョグ操作やハンドガイドでおおよその目標ポーズに動かすことはできますが、このいわゆる「オンライン プログラミング手法」は面倒で、非常に不正確です。目標ポーズをオフラインで計算・定義する方がはるかに効率的です。また、エンドエフェクタに関連付けられた「ツール基準座標系」(ここに示す画像のように)を定義するには、そのツール基準座標系の「フランジ基準座標系」に対するポーズを計算する必要があります。

3D空間では、ポーズを定義するために最低6つのパラメータが必要です。例えば、ロボットのエンドエフェクタ、より正確には「TCP」(ツールセンターポイント)の位置は、通常、ツール基準座標系の原点を「ワールド基準座標系」に対するx、y、z座標で定義します。では、空間での向きはどう定義すればよいのでしょうか?

空間での向きの表現は複雑な問題です。「オイラーの回転定理」によれば、(3D)空間において、剛体上の一点が固定されたままの剛体の変位は、その固定点を通る軸周りの単一回転と等価です。したがって、この回転は3つの独立したパラメータ(軸を記述する2つと回転角を記述する1つ)で記述できます。しかし、空間での向きはいくつかの他の方法でも表現でき、それぞれに長所と短所があります。これらの表現の中には、必要最小限の3パラメータより多くを使用するものもあります。

ある直交(3D)基準座標系Fから別の基準座標系F'へ位置座標を変換する最も一般的な方法は「回転行列」です。この3×3行列は、基準座標系F'の基準座標系Fに対する向きを表現するために使用できます。しかし、この表現は後でわかるようにしばしば必要ですが、向きを定義するためのコンパクトで直感的な方法ではありません。
向きを定義するもう一つのよりコンパクトな方法は「クォータニオン」です。この表現形式は、4つのスカラからなる正規化ベクトルで構成されます。クォータニオンは一般的にロボットコントローラで使用されます。なぜなら、回転行列よりコンパクトであるだけでなく、近似誤差の影響を受けにくいからです。さらに、2つの異なる向きの間の補間中、クォータニオンの要素は連続的に変化し、オイラー角のような3次元パラメータ化に固有の不連続性を回避します。それでも、クォータニオンはユーザーとロボットコントローラ間のコミュニケーション手段としてはほとんど使用されません。直感的でないからです。

オイラー角の詳細な定義

空間での向きをユーザーに伝えたり、ユーザーがCADソフトウェアやロボットコントローラで向きを定義したりするために、最も一般的に使用されているのが「オイラー角」です。オイラー角という用語はしばしば誤用されるため、このインタラクティブなチュートリアルを用意しました。

オイラー角は、例えばα、β、γで表される3つの角度のセット(というよりシーケンス)です。(オイラー角はしばしば「ロール」「ピッチ」「ヨー」で表されます。)オイラー角は次のように定義されます:2つの直交右手系3D基準座標系を考えます。一方を任意に「固定」フレームと呼び、もう一方を「移動」フレームと呼びます。この2つの基準座標系は最初一致しています。第3のフレームの向きを定義するため(すべての3フレームは同じ原点を共有)、移動フレームを以下の順序で第3フレームと一致させるように回転させます。

  1. 固定フレームのx、y、またはz軸、または移動フレームのx'、y'、またはz'軸周りにα度回転、
  2. 次に固定フレームのx、y、またはz軸、または移動フレームのx'、y'、またはz'軸周りにβ度回転、
  3. 最後に固定フレームのx、y、またはz軸、または移動フレームのx'、y'、またはz'軸周りにγ度回転。

3回の回転を行う順序が重要です。したがって、合計216(63)通りのシーケンスが可能です:x→y→z、y→y→z、z→y→z、x'→y→z、y'→y→z、z'→y→z、など。しかし、連続する2回の回転が同じ軸周りであるシーケンス(例:y→y→z)は一般的な向きを記述できません。また、最初の回転の前には、xはx'と一致し、yはy'と一致し、zはz'と一致します。したがって、これら216の組み合わせのうち、意味のある順序付き回転シーケンス、すなわち「12のオイラー角規約」はわずか12通りしか存在しません:XYX、XYZ、XZX、XZY、YXY、YXZ、YZX、YZY、ZXY、ZXZ、ZYX、ZYZ。
ただし、これら12の組み合わせそれぞれは、他の3つのシーケンスと等価です。つまり、各オイラー角規約は4通りの異なる方法で記述できます。例えば、「ZYX」規約は、z→y→x、x'→y'→z'、y→z'→x、y→x→z'のシーケンスと等価です。幸い、固定フレーム軸周りの回転と移動フレーム軸周りの回転が混在するシーケンス(例:y→z'→x、y→x→z')でオイラー角を記述する人はいません。
したがって、12通りの異なるオイラー角規約がありますが、それぞれは通常2通りの方法で記述されます:固定フレームの軸周りの回転シーケンスとして、または移動フレームの軸周りの回転シーケンスとして。したがって、固定規約と移動規約について話すのは便利ですが、それらは等価です。例えば、固定XYZオイラー角規約はx→y→zシーケンスで記述され、移動ZYXオイラー角規約はz'→y'→x'シーケンスで記述されますが、両者は等価です。
ロボティクスでは、ファナックとクーカは固定XYZオイラー角規約を使用し、ABBは移動ZYXオイラー角規約を使用します。さらに、川崎、オムロンアデプトテクノロジーズ、シュタウブリは移動ZYZオイラー角規約を使用します。最後に、CATIAとSolidWorksで使用されるオイラー角は、移動ZYZオイラー角規約で記述されます。

メカデミックでは移動XYZオイラー角規約を使用し、したがってオイラー角をx'→y'→z'のシーケンスとして記述します。なぜ異なるのか?理由は、軸対称ワークを扱うためのメカニカルグリッパーを提供していたことがあり(動画参照)、それがジョイント6のモータで駆動されていたからです。このようなグリッパーを装備した6軸ロボットは、2つの回転自由度、より具体的にはジョイント6の軸、すなわちワークの対称軸の方向しか制御できません。選択したオイラー角規約では、角度αとβがこの方向を定義し、角度γは制御不能な寄生回転に対応するため無視されます。
以下のアプレットはオイラー角を理解するのに役立ちます。最初、2番目、3番目の回転のx、y、zボックスをクリックして、12通りのオイラー角規約のいずれかを選択できます(デフォルトはメカデミックで使用されるシーケンス)。固定フレーム軸周りの回転と移動フレーム軸周りの回転を切り替えるには、これら9つのボックスのいずれかをダブルクリックします。固定フレームの軸は灰色で、移動フレームの軸は黒で描画されます。xとx'軸は赤、yとy'軸は緑、zとz'軸は青で描画されます。3つの青い水平矢印のいずれかに沿ってマウスを動かすと、対応するオイラー角が変化します。あるいは、矢印の下のテキストボックスに直接オイラー角の値(度)を設定することもできます。最後に、基準座標系上でマウスをドラッグすると視点を変更できます。


α: β: γ:
R = Rx(0°) Ry(0°) Rz(0°) =
1.000 0.000 0.000
0.000 1.000 0.000
0.000 0.000 1.000

回転行列によるオイラー角の計算

上記のアプレットでは、与えられたオイラー角セットに対して、移動フレームの固定フレームに対する向きが右端のサブ図に表示されます。しかし残念ながら、実際には通常その逆の状況です。2つの基準座標系があり、一方のフレームの他方に対する向きを記述するオイラー角を求めたいのです。
少なくとも2軸が平行な向きであれば、試行錯誤でオイラー角を推測できるかもしれません。例えば、このチュートリアル冒頭の画像を見て、メカデミックで使用されるオイラー角、すなわちグリッパーに関連付けられたツール基準座標系のフランジ基準座標系に対する向きを定義するオイラー角を求めてみてください。答えはα = -90°、β = 0°、γ = -90°です。そう簡単ではありませんね?効率的に行うには、やはり回転行列について学ぶ必要があります。
前述したように、空間のあらゆる向きは3×3回転行列で表現できます。例えば、x軸周りのα回転、y軸周りのβ回転、z軸周りのγ回転は、それぞれ以下の3つの基本回転行列に対応します:

Rx(α) =
1 0 0
0 cos(α) -sin(α)
0 sin(α) cos(α)
、
Ry(β) =
cos(β) 0 sin(β)
0 1 0
-sin(β) 0 cos(β)
、
Rz(γ) =
cos(γ) -sin(γ) 0
sin(γ) cos(γ) 0
0 0 1
。

これらを「基本回転行列」と呼びます。回転シーケンスに対応する基本回転行列の積を得るには、最初の回転に対応する基本回転行列を書くことから始めます。例えば、最初の回転がx(またはx')軸周りなら、Rx(ψ)と書きます(ψは回転角)。以降の各回転について、移動基準座標系の軸周りの回転なら現在の結果に次の回転行列を右から掛け(後乗算)、固定基準座標系の軸周りの回転なら左から掛けます(前乗算)。アプレットを使って基本回転行列の積の結果を見てみましょう。例えば、回転シーケンスx'→y'→z'は、積R = Rx(α)Ry(β)Rz(γ)に対応します。したがって、メカデミックで使用されるオイラー角に対応する回転行列は:

R(α, β, γ) =
cos(β)cos(γ) -cos(β)sin(γ) sin(β)
cos(α)sin(γ) + sin(α)sin(β)cos(γ) cos(α)cos(γ) - sin(α)sin(β)sin(γ) -sin(α)cos(β)
sin(α)sin(γ) - cos(α)sin(β)cos(γ) sin(α)cos(γ) + cos(α)sin(β)sin(γ) cos(α)cos(β)
。

したがって、与えられた向きに対して2つのことを行う必要があります:まず、目標の向きに対応する回転行列を見つけること。次に、いくつかの簡単な方程式を使ってオイラー角を抽出すること。まず、回転行列を見つける2つの方法を示しましょう。
下図の例では、フレームF'のフレームFに対する向きを表す回転行列を求める必要があります。(x軸を赤、y軸を緑、z軸を青で表すことを思い出してください。)

ここでは、フレームFと一致する第3の基準座標系を移動フレームとして配置し、このフレームをそのz'軸周りにθ度回転させ、次にy'軸周りにφ度回転させると、フレームFの向きが得られることがわかります。したがって、求める回転行列は:

Rdesired = Rz(θ)Ry(φ) =
cos(θ)cos(φ) -sin(θ) cos(θ)sin(φ)
sin(θ)cos(φ) cos(θ) sin(θ)sin(φ)
-sin(φ) 0 cos(φ)
。

あるいは、上記の回転行列を直接得ることもできます。その第1、第2、第3列は、それぞれフレームF'のx、y、z軸に沿った単位ベクトルの、フレームFに対する座標を表します。
目標の向きを表す回転行列が得られたら、Rdesired = R(α, β, γ)という9つのスカラ三角方程式の系をα、β、γについて解くだけです。幸い、この問題には一般解があり、使用する方程式を示します。
フレームF'のフレームFに対する目標の向きが以下の回転行列で表されるとします:

Rdesired =
r1,1 r1,2 r1,3
r2,1 r2,2 r2,3
r3,1 r3,2 r3,3
。

メカデミックで使用される移動XYZ規約に従ったオイラー角(度)は、以下の2つのケースに従って得られます:
ケース1: r1,3 ≠ ±1(すなわち、フレームF'のz'軸がフレームFのx軸と平行でない)。

β = asin(r1,3)、γ = atan2(-r1,2, r1,1)、α = atan2(-r2,3, r3,3)。

ケース2: r1,3 = ±1(すなわち、フレームF'のz'軸がフレームFのx軸と平行)。

β = r1,390°、γ = atan2(r2,1, r2,2)、α = 0。

一般的なケース1では、実際にはすべての角度が半開区間(-180°, 180°]にある2組の解があります。しかし、両方の解を計算するのは無意味なので、-90° < β < 90°となる最初の解のみを提示します。また、解にatan2(y, x)関数を使用しています。一部のプログラミング言語、一部の科学計算機、ほとんどのスプレッドシートソフトでは、この関数の引数が逆順であることに注意してください。
最後に、ケース2はいわゆる「表現特異点」に対応することに注意してください。この特異点は、3D空間での向きの3パラメータ表現のいずれにも存在します(メカデミックのオイラー角選択だけでなく)。これは、球面上の点を2パラメータだけで表現する問題と似ています。例えば、地球の南極と北極では経度が定義されません。つまり、この特異点は機構の特異点(いわゆる「ジンバルロック」)とは無関係で、それらは実際の物理的問題(自由度の喪失など)に対応します。

演習

私たちに実際に起きた次の状況を考えてみましょう。FISNARディスペンシングバルブをMeca500ロボットアームのエンドエフェクタに取り付けたいと考えました。当然、アダプタを設計・加工したエンジニアはオイラー角など気にせず、加工性と到達性のみを重視していました。彼の設計では、本質的に2つの45°回転がありました。まず、ロボットフランジの対向する2つのネジ穴を使ってアダプタを取り付けたため、最初の45°回転が生じました。次に、フランジインターフェース面とディスペンサー軸の間の角度が45°でした。

上図は実際の取り付け(左)と定義が必要だったツールフレーム(右)を示しています。軸対称ツールを使用する場合、ツールのz軸をツールの軸に合わせるのが一般的です。これは移動XYZオイラー角規約では特に有用で、軸対称ツール周りの冗長回転が第3オイラー角γに対応するためです。したがって、最初の2つのオイラー角がツールの軸を定義し、第3の角度でロボットの最適なコンフィギュレーション(特異点から遠いもの)を選択できます。

この例に戻ると、移動XYZ規約によるオイラー角を試行錯誤で求めるのは不可能であることを示します。このツール基準座標系の選択では、最終的な向きを以下の2回の回転シーケンスとして表現できます:R = Rz(45°)Ry(45°)。ここから、前述の方程式を使って移動XYZ規約によるオイラー角を抽出すると:α = -35.264°、β = 30.000°、γ = 54.735°が得られます。このような状況ではオイラー角をマスターする必要があると納得していただけたでしょうか?

表現特異点と向き誤差

移動XYZオイラー角規約の場合、フレームF'のz'軸がフレームFのx軸と平行になると、同じ向きを定義するαとγの組み合わせが無限に存在します。目標の向きを定義するには1つあれば十分なので、α = 0と任意に設定しました。より具体的には、β = 90°の場合、α + γ = φ(φは任意の値)を満たすαとγのあらゆる組み合わせが同じ向きに対応し、メカデミックのコントローラでは{0, 90°, φ}として出力されます。同様に、β = -90°の場合、α - γ = φを満たすαとγのあらゆる組み合わせが同じ向きに対応し、{0, -90°, -φ}として出力されます。しかし、フレームF'のz'軸がフレームFのx軸と「ほぼ」平行(βが±90°に非常に近い)な向きを表現しようとすると、オイラー角は数値誤差に対して非常に敏感になります。このような場合、オイラー角を使って向きを定義する際は、小数点以下の桁数をできるだけ多く入力する必要があります。
メカ500の複数のユーザーを悩ませた次の状況を考えてみましょう。ツール基準座標系のワールド基準座標系に対する向きを{0°, 90°, 0°}に設定しました。これは表現特異点です。この向きを維持したままエンドエフェクタを空間内のいくつかの位置に移動させます。ある位置では、数値ノイズのためにコントローラがr1,3 = ±1(前述のケース2)の条件を検出できず、表現特異点に対応しない向きとしてオイラー角を計算してしまいます。すると、{41.345°, 90.001°, -41.345°}のような値が返され、{0°, 90°, 0°}からは全く異なり、まったく間違っているように見えます。しかし、間違ってはいません。
位置誤差が√(Δx2 + Δy2 + Δz2)で測定されるのとは異なり、向き誤差はオイラー角の変化と直接関係していません。特に表現特異点付近ではそうです。このオイラー角の非ユークリッド的性質を理解するために、地球上の位置を表す球面座標を考えてみましょう。北極では緯度は90°(北)ですが、経度はどうでしょう?北極では経度は定義されない、または任意の値を取ります。北極からグリニッジ方向にわずか1mm移動したと想像してください。この場合、緯度は89.99999999°になりますが、経度は0°という値を持ちます。再び北極に戻り、東京方向に1mm移動すると、新しい経度は約140°になります。2地点間の経度誤差は140°です!しかし、実際の角度誤差は約0.00000002°しかありません。
上記で説明した状況は、他のすべてのオイラー角規約でも同様です。オイラー角規約に応じて、フレームF'の特定の軸がフレームFの別の特定の軸と平行になるとき、対応する表現特異点が発生します。この表現特異点では、第1と第3の回転が従属的になります。
結論として、オイラー角(特にロボットプログラミングに使用される規約)をマスターしない限り(または高度なオフライン プログラミング ソフトウェアを使用しない限り)、シンプルなピックアンドプレース作業以外をプログラミングすることは困難です。ロボティクスはシンプルではないため、私たちは基礎を理解していただくために最善を尽くしています。

自動制御システム

  1. セプロ、射出成形向け新コンパクト6軸ロボット・モデルでラインアップ拡充
  2. NPE 2018:より速く、より賢く、より協働的なロボットたち
  3. Star Automation、NPE2018で書道ロボットを披露
  4. 複数ロボット統合セルでシェイカーカップを1サイクルで完成:効率最大化
  5. igus Inc.、±0.5mm精度の低コスト・高速組立ロボットを発表
  6. Schunk、ノースカロライナ州モリスビルでロボットグリッパー組立拡大:ローカル生産とカスタマイズ強化
  7. 射出成形自動化:エキスパートの洞察と新たなトレンド
  8. Wittmann Battenfeld、高クランプ力成形向け新ロボットラインWX153を発表
  9. Universal Robots、Kim Povlsen氏を社長に任命しデンマークロボティクスのリーダーシップ強化
  10. GP4:安川電機のコンパクト6軸ロボット、超高速・高精度自動化を実現
  11. ファナック、SCARAロボットライン拡充:6モデル、3-20kgペイロード、400-1100mmリーチ