ここでは、マニピュレータを数式化して解析するに辺り、座標系を設定し、各関節を動かすと手先はどう動くか、逆に手先の目標を設定したときに各関節をどうしたらいいかについて検討します。
回転関節 | |
直動関節 | |
ボールジョイント |
さて、実際にロボットの機構を単純に書くために、各関節を記号化します。
3次元のロボットを2次元で書くため、いくつかの書き方があります。
それらを右の図に合わせて示しました。
回転関節については、一番上は紙面に垂直なもの、二番目と三番目は紙面上に軸がある場合です。二番目と三番目は同じ回転を表しますが、本によって違ったり、前者は構造的に腕の途中にある関節(ねじれる関節)、後者は屈曲する関節として書分けている場合もあるようです。
スライドについては、一番上をよく見掛けますが、二番目、三番目もあります。三番目は伸縮を表します。
ボールジョイントについては、そのまんまです。書くのが面倒だと、下の図のように二重丸にすることもあります。なお、この図では大きめに書いてありますが、ボールジョイントは駆動のない補助的な関節であることが多いため、回転などより小さめに書いた方が見やすくなります。
なお、これらの表記は平面で書く場合の表記法です。立体感を得やすいように鳥瞰図のように斜め方向から見た図などでは、これらの記号を使うこともありますし、円筒で回転関節を表すこともあります。
いずれにせよ、見せたい相手と、書いた本人が、ちゃんとわかるように統一して書きましょう。
このような図を書く場合に注意すべき点は、なるべく実態を表すようにすることです。
関節の数と順序があっているのは当然として、関節の軸間の関係がわかるようにすることが重要です。
たとえば、これらの図では、複数の回転関節の複合である股関節や足首関節などを記述するため、
各回転関節の軸が一点で交わることを明記しています。
ちなみに、このように回転軸をクロスさせると後述の座標変換や運動学の演算式が簡素化します。
ただし、実際にこのようなメカを設計製作することは容易ではありません。
右図に機構の記述例を示します。左が上で示した記述法で、そのうち左端の4脚ロボットの足の例を斜めから見たものを右に示します。直感的には、斜め方向から立体的に書いてある方がいいのですが。
まず、ロボットの各リンクごとに座標軸を設定します。リンクや座標軸の番号は以下のように定義します。
次に座標系を各リンクごとに設定します。リンク i には、座標系 i を固定します。
Zi-1, Ziの座標軸は上の規定通り、回転軸に設定します(ぞれぞれ、左の黄色線とオレンジの線)。
次に、Xi-1軸ですが、上から三番目の図に赤で書いたように、2本の回転軸の両者に垂直な線を見つけて、そこに設定します。
2本の軸が平行な場合は、そういう線は無数にありますが、それ以外の場合は、必ず一本のそういう線が存在します(別の見方をすれば、2本の線を最短距離で結ぶ線です)。
あとは、Yi-1は自動的に決まります。
ちなみに、Xi, Yiについては次のリンクの形に依存するので、ここでは想像して適当にきめてあります。また、関節iは適当な角度にまがっています。
さて、この場合の、座標系i-1から座標系iまでの、同次変換行列を求めてみます。
座標系i-1から座標系iまでは、次の4つの変換を組み合わせることでたどれます。
最終的に、これらを順に掛け合わせて、座標系i-1から座標系iに至る同次変換行列を得ます。
また、これまでの内容に従って、
このロボットは2個の回転関節と直動関節からなるロボットです。
動作形態としては、根本側の回転関節1・2によって、手先の水平面内での位置を決め、直動関節3によって手先を上下させることで、手先でものを搬送できます。
ただし、3次元空間で位置、姿勢をすべて決定づけるには独立した6関節(6自由度)必要であるの対して3関節しかないため、手先の位置をきめることしかできません。
姿勢はそれに連動します(手先の鉛直軸まわりの姿勢は関節1・2で決まり、手先を鉛直から傾けることはできない)。
まず、座標軸を設定します。基本的には上で示した方針で、あとは分かりやすくなるように設定します。
ちなみに、教科書にも準拠していますが、Y軸の向きが一部異なります(教科書の図は右手系と左手系がごっちゃのため、右手に統一した)。
座標系が決まりましたので、DHのパラメータ出しを行います。
各リンクごとに
以上をもとに、同次変換行列を求めます。
なお、この程度の機構の場合、わざわざこのDHの方法をしなくても、高校並の方法でも簡単に求まります。
それと比較してみるとよいでしょう。
座標系は次のように設定します。
具体的に右の図で確認します。
ロボットのリンクがこんな形をしていることは稀ですが(必然性なくこんな設計したら普通は上司や量産部や工場に怒られます:-))、説明上、こんな形に書いてあります。
緑のリンクが、着目するリンク、リンク i-1 です。i-1に着目するのは、パラメータの番号設定の関係です。
青のリンクはそれぞれ一個前のリンクi-2と、一個あとのリンクiです。リンク 座標系の設定 リンクパラメータ
なお、回転に関しては正の方向に注意する必要があります。
また、本によって、aiではなくai-1を使っているなど、微妙に複数ありますが、ここでは授業の教科書に統一します。
この表記法は、リンクを、となりのリンクとの関係も含めて、四つのパラメータ a,α,d,θで表す方法です。
同次変換行列は12個の有効な要素がありますが、それを4パラメータで済ませることができます。
また、上式は一見するとややこしいのですが、実際にはそれぞれの値が単純になります。
一般的なロボットで良く見られる回転関節の場合はθiが関節角度(元のZiの定義そのもの)、直動の場合にはdiが直動の量(直動方向にZiをとる=Zi方向に移動するdiがパラメータ、θi=0)になります。
リンクの長さがゼロということは不思議に見えますが、計算を簡単にする意味で、ロボットを設計するときに見られる場合です。二方向、三方向に曲げたい関節は、回転関節を2個、3個組み合わせて作りますが、そのときに回転軸が1点でクロスするように中間リンクを設計します。
そういう場合に、ai=0がでます。
回転軸が平行な関節が続く場合です。4つ以上連続して並べると無駄ですが、3個までは連続して並べる場合があります。逆に、3個の連続した関節があり両端は複数の方向に曲がるような場合(肩−肘−手首 or 股−膝−足首)、複数の方向の中から中間の関節と同じ向に曲がる関節を意図的に並ぶようにすると、計算が楽になります。
例、股関節 Roll,Pitch,Yaw、膝P、足首R,Pの時、(Y-R-P)-P-(P-R)と、Pを膝側に集める。
普通のロボットを設計する範囲では、αiはゼロにならないまでも、直角とか、反転とかですみます。
構造をシンプルに設計した場合は、di=0になる場合が多いでしょう。
だいたいこのような状況が多いため、同次変換行列は一般にシンプルになります。
となります。
リンクiの座標系i上で規定された点、例えば腕上の特定の点を、基準座標系でどこに見えるかをこの同次変換で知ることができます。
教科書にも載っている、右図に示すロボットで実際にモデルを数式化してみます。座標系の設定 各部のパラメータ
リンク番号は根本からつけますので、土台(紫)を0、上腕(橙)を1、下腕(緑)を2、手先(黄)を3とします。
Z軸は関節軸(回転軸or直動軸)にとり、X軸はZ軸の共通垂線にとります。
ここで、このロボットはすべてのZ軸が平行なので、Xはどこにとっても構いませんが、機構にあわせて、X1とX2は同一平面で土台と上腕の接合面におきました。
X3はX2と平行になるように、X0は関節角度が0(基準位置)となるときにX1と平行になるように設定しました。
なお、上述の設定では、座標系0は関節が基準位置のときに座標系1に一致するようにというガイドラインがありますが、ここではロボットの基準面に取ったほうがあとが楽そうなので、座標系0は1を土台の面まで平行移動したところにしました。
となっています(右図参照)。
Z0軸方向にd1だけ平行移動してから、関節1の関節角度θ1だけ回転、a1=0、α1=0
X1軸方向にa2移動、関節2の角度θ2だけ回転、α2=0、d2=0
X2軸方向にa3移動、X2軸回りにα3=180度(π)回転、回転後のZ2軸方向(鉛直下向)にd3移動、θ3=0
表にまとめると、
ここで変数(動く部分)はθ1, θ2, d3です。リンク a α d θ 1 0 0 d1 θ1 2 a2 0 0 θ2 3 a3 π d3 0
よって、土台の座標系0からみた手先3の座標系の変換は
となります。
一般的にみられる(上の図のような)直列リンク型の機構では順運動学が(めんどうながらも)単純に求められ、逆運動学は簡単には求められないか、数式として得られない場合があります。 一方、並列リンク型の機構では逆運動学は単純に得られるものの、順運動学が得られない場合があります。 以下では上のロボットを例に解いてみますが、その過程に注意してみてください。 2脚ロボットのような複雑な機構の場合にも、股関節のような複合関節で回転軸が一点で交わるようにすると解きやすくなることが、わかると思います。
関節変位は
※教科書の式とかなりちがいますが、cos-1を使うかtan-1を使うかの違いです。数値計算で検算してみると、教科書のθ2の式は、ちょっと怪しげな気が。θ1=φ─θ2という時点で怪しい気が。
で、手先についてはその位置だけに着目して、座標系3の原点とします。
順運動学はすでにもとまっていて、
です。残りは幾何学的にみてみます。
ロボットを上方からみた図を右のように表します。ここで、手先が座標(r1,r2)に来るためには、(届くなら)関節2の位置が二通りになります。
手先の位置を別の見方で表すと、
となります。また、余弦定理より
が成り立ちます。よって、
と求められます。また、
よりθ1も求まります。
すでに順運動学が直接的な式で求まっている場合は、それを直接微分すればヤコビ行列が得られます。
まず、運動学の式は先ほどの通り
です。よって定義通りに計算すると、
となります。
ヤコビ行列を分解した列ベクトル
は、ある関節を動かした影響が手先座標
こまかなところは剛体の力学の勉強し直しが必要になりそうなので、概念だけ以下に示します。
これをつかうと、「悲惨な式」をすべて求めなくても、部分的な関係(同次変換行列など)を積み重ねることでヤコビ行列を得ることができます。
このとき、軸の位置、向き、手先位置をすべて基準座標系(リンク0)に変換しておく。
伸縮方向を直前までの同次変換行列で基準座標系に変換しておく
もし、ロボットがある姿勢の時にヤコビ行列に逆行列があれば、
ちなみに、これは直列リンクなマニピュレータの場合で、位置の逆運動学がもとまるけど順運動学が求まらないようなパラレルリンクのマニピュレータの場合、立場が逆になります。
となり、「手先の速度から関節速度」がもとまります。つまり、手先の速度をきめてやれば、それを実現するための関節の速度が得られるわけです。これは速度の逆運動学です。
では、行列式がゼロになるということはどういうことかと考えます。
すでに求めているロボットのヤコビ行列
実際のロボットの上で、この行列式=0の意味を考えてみましょう。このロボットに限らず、人間の肘や膝を考えてもわかりますが、関節が真っ直ぐになった状態では、当然ながらそれ以上は手先を遠ざけることはできません。
手や足の場合、手首足首の関節で、位置だけならより遠くに持っていくことが出来る場合もありますが、姿勢が変わってしまいます。
それとは反対に、縮めようとすると関節を急速に曲げなければなりません(数学上はそれすら出来ないことになっている)。
このような状態を特異点、そのときのロボットの姿勢を特異姿勢といいます。機構の面からは死点ともいいます(自動車のエンジンなどでも使う)。
実際の例としては、最近みられる歩行ロボットがことごとく膝関節をある程度まげた状態で歩いているのも、一般には膝関節の特異点を避けるためです。膝関節を多少曲げておくと、膝関節を真っ直ぐに伸ばしたときに比べて関節にかかる力が大きくなります。
その観点からは伸ばしておいた方よく、人間が歩くときは膝を真っ直ぐして着地します。
しかし、歩行ロボットの制御分野ではそこまで進んでいないということになります。
より、行列式を求めると、
となります。
この式において、ロボットの構造上 a が0になることは想定されませんが、sin(θ2)=0は状況としてあり得ます。
sin(θ2)=0は2つ目の関節が真っ直ぐに伸びた状態か(θ2=0)、もしくは完全に折り畳まれた状態(θ2=π)です(後者はロボットの作りによっては無理)。
このとき、行列式が求められなくなり、速度の逆運動学が成り立たないことになります。
この特異点では、特定の方向への運動が出来なくなっています。また、特異姿勢のそばでは、ちょっとの動きをするために、関節を極端に高速に動かす必要があります。
(肘を伸ばした状態から、手首を1センチほど肩に近づけてみてください。肘関節の角度が急に大きくなることがわかります。一方、肘関節が大きく曲がった状態で手首を近づける場合はあまり動きません。)
そのため、マニピュレータに任意の作業をさせる場合は、マニピュレータの運動範囲を制限して特異姿勢に近づかないようにしなければなりません。
ところが、この1自由度余る分を何らかの形で決めなければなりません。
ほかの制約があるときは、それを組み込むことになりますが、そうでないときは逆運動学も求められずに、関節が一個余分なだけでやっかいなことになります。
そこで考案されたのが「疑似逆行列」です。
文字通り、「疑似」的に「逆行列」相当の働きをするようにしたものです。
疑似逆行列は
で与えられます。
ちなみに、加えられた1自由度分の制約は「全関節の動きをなるべく押さえる」という意味で、
という条件です。この時、
で速度の逆運動学が得られます。
これまでたびたび、「多自由度関節は軸を直交させた方がいい」と述べてきたのは、この観点によるものです。
たとえば、6自由度の腕ロボットを設計するとき、手首に3自由度を配置し(ロボットアームの先端に近いところに回転軸を寄せる)の関節を一点で交わるように、さらに肩の関節を2自由度にして1点で軸が交わるように設計したとします。
(3軸は工夫が必要ですが2軸は案外簡単)
このとき、ロボットの逆運動学は6個もθが入った三角関数ごちゃごちゃの式を解くことになりますが、これを直接解かずに、以下のような手順で各関節の角度を決められます。