1: 2013-07-03 (水) 20:16:26 yoshida | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | *逆運動で動かすには [#o66404ae] | ||
+ | **三角関数を使用する [#zdb959c7] | ||
+ | 逆運動(IK)とは簡単に言ってしまえば指示された座標を元に関節の角度を求めるものです。~ | ||
+ | 色々な計算手法がありますが、幸いなことにロボットハンドは2DOFなので有効な座標に到達する場合、ほぼ三角形を描くことになります。~ | ||
+ | このため三角関数だけで角度を算出することができます。 | ||
+ | |||
+ | **2次元での角度算出 [#d90f6f7a] | ||
+ | #ref(triangle2D.png) | ||
+ | C点がID2、B点がID3の軸となり、A点がロボットハンドの先端になります。~ | ||
+ | ABCを結ぶと三角形が出来上がりです。~ | ||
+ | BCとABは軸間の長さになるので、ACが分かれば∠A、∠B、∠Cが算出可能となります。~ | ||
+ | ACは三平方の定理から求めます。~ | ||
+ | #ref(inclined_AC.png) | ||
+ | これで三辺の長さが求まったので余弦定理で角度を算出しましょう。 | ||
+ | 以後ABをc、ACをb、BCをaと称します。~ | ||
+ | #ref(cosine.png) | ||
+ | まずはこれを変形して∠Aのコサインを求めます。~ | ||
+ | #ref(cosineA.png) | ||
+ | コサインの値が取得できたので、これをアークコサインで角度に直します。~ | ||
+ | ここでの角度はラジアンなので180倍してπ(円周率)で割れば度°(デグリー)に変換できます。~ | ||
+ | 実際には∠Aは不要なので、∠Bと∠Cを求めます。~ |