Itamika logo Itamika

ロボットアーム

ロボットアームとは

人の手のような動きをするロボットのことである 上のgifは垂直三関節ロボットアーム+(4自由度)であり、私が高専3年生の時に制御したロボットである ちなみに、人間の腕の自由度は7自由度である

運動学

オムニなどの足回りと同様に、ロボットアームも運動学を基礎に制御することが多い 今回の運動学モデルは、位置における運動学であることに注意したい

  • 順運動学→ロボットアームの関節角度と関節間の長さから、先端のXYZ座標を計算する
  • 逆運動学→ロボットアームの先のXYZの座標系と関節間の長さから、各関節の角度を計算する

動力学は、トルクと運動を変換するもので、静力学は、手先のトルクと関節トルクを変換するものであるが、今回は紹介しない Kinematics_Statics_Dynamics.png (23.0 kB) 以下に具体例を紹介する

順運動学

X=Lcosθ Y=LsinθX=Lcos\theta \\\ Y=Lsinθ

逆運動学

θ=arctanyx\theta=arctan\frac{y}{x} Kinematics-01-1.png (18.8 kB) 参考 Tajima Robotics

ヤコビ行列(ヤコビアン)

恐らく高専の授業で出てくると思う 簡単に言うと、偏微分の行列みたいなものである これで先ほどの、位置における順運動学から、ヤコビ行列による速度の順運動学を導出する また、このヤコビ行列から、逆ヤコビ行列による速度の逆運動学も導出できる 上のGifのロボットアームの例を見る 3自由度ロボットアーム.png (56.2 kB) 根本の関節から先端の関節の順で、 各関節間の長さをl1,l2,l3l_{1},l_{2},l_{3}とし、 各関節の角度をθ1,θ2,θ3\theta_{1},\theta_{2},\theta_{3}とすると、 位置の順運動学は a=l2cosθ2+cb=l2sinθ2+dc=l3cos(θ2+θ3)d=l3sin(θ2+θ3)a = l_{2}cos\theta_{2} + c \qquad b = l_{2}sin\theta_{2} + d \qquad c = l_{3}cos(\theta_{2} + \theta_{3}) \qquad d = l_{3}sin(\theta_{2} + \theta_{3}) とおくと、

x=acosθ1y=asinθ1z=b+l1 \Large \begin{aligned} x &= acos\theta_{1} \\ y &= asin\theta_{1} \\ z &= b + l_{1} \end{aligned}

よって、速度の順運動学はそれぞれ偏微分すると、

(dxdtdydtdzdt)=(asinθ1bcosθ1dcosθ1acosθ1bsinθ1dsinθ10ac)(dθ1dtdθ2dtdθ3dt)\Large \left(\begin{array}{ccc} \frac{dx}{dt} \\ \frac{dy}{dt} \\ \frac{dz}{dt} \end{array}\right) = \left(\begin{array}{ccc} -asin\theta_{1} & -bcos\theta_{1} & -dcos\theta_{1} \\ acos\theta_{1} & -bsin\theta_{1} & -dsin\theta_{1} \\ 0 & a & c \end{array}\right) \left(\begin{array}{ccc} \frac{d\theta_{1}}{dt} \\ \frac{d\theta_{2}}{dt} \\ \frac{d\theta_{3}}{dt} \end{array}\right)

となる それ以外は、ロボット運動/ロボットアーム/垂直三関節ロボットアームに書いてある

特異姿勢(特異点)

図のように、ある位置まで動かしてしまうと、特異姿勢となってしまう これは、単純に計算しただけでは、角速度が無限大に発散してしまい、暴走してしまう… 特異点.png (36.0 kB)

これの対策はいくつかあるが、一番簡単なのは特異姿勢にならないようにすることである しかし、ロボコンのように大きめに設計したら重量的にも展開制限的にも問題があるときがある そのときは、特異姿勢付近での動きをヤコビアン以外で近似するなどの方法や、動力学や静力学を使用するなどの方法が考えられているが、論文を探せばいっぱい出てくる

重力補償

ロボットアームは非線形なので、線形化しなければ制御することは難しい よって、一番大きいであろう非線形要素の重力項を補償するような制御が必要である

重力補償あり重力補償なし

制御方法

滑らかに制御するには、以下の2つのことが重要である

  • 軌道生成
  • 追従制御

軌道生成は、スプライン曲線などを利用して作成するのが簡単でよいが、最適制御などに基づいた経路生成を行うことも可能である この場合、何を最適にするかが問題であるが、目標への最速経路や、エネルギーの最小化などの様々な問題を考えることができる 追従制御においては、小型のロボットアームの場合だと、ホビー向けのサーボモータなどを使用するだけで行ける場合もある しかし、ロボコンで使用する場合、大型のパワー型になることが多い よって、足回りのと異なり、非線形要素が大変強いため、トルク制御や非線形制御理論などを用いる必要性が強くなる 高専時代に使用した制御方法は、分解加速度制御といい、[ロボット運動/ロボットアーム/分解加速度制御]に詳しくまとめているので、それを読んでほしい