11: 2013-08-02 (金) 13:14:30 yoshida | 12: 2013-08-02 (金) 18:38:42 yoshida | ||
---|---|---|---|
Line 1: | Line 1: | ||
*逆運動で動かす [#o66404ae] | *逆運動で動かす [#o66404ae] | ||
- | **三角関数を使用する [#zdb959c7] | + | **幾何学的に角度を求める [#zdb959c7] |
逆運動(IK)とは指示された座標を元に関節の角度を求めるものです。~ | 逆運動(IK)とは指示された座標を元に関節の角度を求めるものです。~ | ||
- | 色々な計算手法がありますが、今回のロボットハンドでは三角関数をメインに角度を計算してみたいと思います。~ | + | 色々な計算手法がありますが、今回のロボットハンドでは余弦定理をメインに角度を計算してみたいと思います。~ |
尚、ハンド部分は角度計算に不要なので取り外します。~ | 尚、ハンド部分は角度計算に不要なので取り外します。~ | ||
#ref(RobotHand3D.png) | #ref(RobotHand3D.png) | ||
Line 60: | Line 60: | ||
D2D3 = L[2]; | D2D3 = L[2]; | ||
D3POS = L[3]; | D3POS = L[3]; | ||
- | D2POS = sqrt (pos[0] * pos[0] + pos[1] * pos[1] + pos[2] * pos[2]); | + | D2POS = sqrt (pos[0] * pos[0] + pos[1] * pos[1] + (pos[2] - (L[0]+L[1])) * (pos[2] - (L[0]+L[1]))); |
D2j = pos[2] - (L[0] + L[1]); | D2j = pos[2] - (L[0] + L[1]); | ||
jPOS = sqrt (pos[0] * pos[0] + pos[1] * pos[1]); | jPOS = sqrt (pos[0] * pos[0] + pos[1] * pos[1]); | ||
Line 78: | Line 78: | ||
</pre> | </pre> | ||
}} | }} | ||
- | 座標から角度を算出してアーム部分を動かすことができるようになりましたが、稼働部分、及び軸間の短さから指定できる座標は非常に狭い範囲になります。~ | ||
- | 範囲外の座標が指示された場合は途中で計算が破綻をきたしますので、acosの前に値のチェックを入れることで回避することができます。~ | ||
- | 又、アームを構成しているパーツによっては、指示されても移動できない出力軸の位置ができてしまいます。この場合はAX-12+への位置指定の前にチェックを入れて位置を指定しないようにしましょう。位置を指定してしまった場合にはFDIII-HCのスイッチをOFFして下さい。過度の負荷は故障の原因となります。~ | ||
+ | 座標から角度を出すことができるようになったので、これをモーションへ組み込んでみましょう。 | ||
[[次のチャプターへ>FDIIICHAPTER10.5]] | [[次のチャプターへ>FDIIICHAPTER10.5]] | ||
[[FDIII-HC Starter Kit Guide>LEARNINGGUIDE]]へ戻る | [[FDIII-HC Starter Kit Guide>LEARNINGGUIDE]]へ戻る |