8: 2013-07-31 (水) 17:29:30 yoshida | 9: 2013-08-01 (木) 19:17:51 yoshida | ||
---|---|---|---|
Line 3: | Line 3: | ||
**三角関数を使用する [#zdb959c7] | **三角関数を使用する [#zdb959c7] | ||
逆運動(IK)とは指示された座標を元に関節の角度を求めるものです。~ | 逆運動(IK)とは指示された座標を元に関節の角度を求めるものです。~ | ||
- | 色々な計算手法がありますが、今回のロボットハンドでは三角関数をメインに角度を計算してみたいと思います。 | + | 色々な計算手法がありますが、今回のロボットハンドでは三角関数をメインに角度を計算してみたいと思います。~ |
+ | 尚、ハンド部分は角度計算に不要なので取り外します。~ | ||
+ | #ref(RobotHand3D.png) | ||
+ | 又、各アクチュエータと軸間の長さを次のように呼称することにします。 | ||
+ | #ref(id_rename.png) | ||
**2次元での角度算出 [#d90f6f7a] | **2次元での角度算出 [#d90f6f7a] | ||
- | 以降、各AX-12Aと軸の長さを次のように呼称することにします。~ | ||
- | #ref(id_rename.png) | ||
では三角形を見てみましょう。~ | では三角形を見てみましょう。~ | ||
三角形を作るのはD2、D3、posとなっています。~ | 三角形を作るのはD2、D3、posとなっています。~ | ||
Line 16: | Line 18: | ||
三辺の長さが決まったので余弦定理を使ってD3の角度を算出してみましょう。~ | 三辺の長さが決まったので余弦定理を使ってD3の角度を算出してみましょう。~ | ||
#ref(cosineD3.png) | #ref(cosineD3.png) | ||
- | コサインの値が取得できたので、これをアークコサインで角度に直します。~ | + | コサインの値が取得できたらアークコサインで角度にすることができます。~ |
- | ここでの角度はラジアンなので180を掛けてπ(円周率)で割れば度(デグリー)に変換できます。~ | + | ここでの角度はラジアンなので180を掛けてπ(円周率)で割れば度(デグリー)に変換することもできます。~ |
**3次元での角度計算 [#x04dbfff] | **3次元での角度計算 [#x04dbfff] | ||
- | X軸とY軸、Z軸を決めます。~ | ||
- | #ref(RobotHand3D.png) | ||
3次元においても角度の求め方は変わりませんので、D3の角度はそのまま使用します。~ | 3次元においても角度の求め方は変わりませんので、D3の角度はそのまま使用します。~ | ||
#ref(cosineD2.png) | #ref(cosineD2.png) | ||
同様にD2の角度を求めますが、ここで求まるのはD2、D3、posを頂点とした三角形の内角です。D2への指令角度とは異なりますので、注意が必要です。 | 同様にD2の角度を求めますが、ここで求まるのはD2、D3、posを頂点とした三角形の内角です。D2への指令角度とは異なりますので、注意が必要です。 | ||
#ref(triangle3D.png) | #ref(triangle3D.png) | ||
- | 指令値を出すため、もう一つ三角形を作ります。D2からZ軸に沿ってposの位置まで移動した点をjとし、D2、j、posを頂点とした直角三角形を作成します。D2の指令角度はこの三角形のD2の角度から先ほど求めたD2の角度を差し引きした角度になります。 | + | 指令値を出すため、もう一つ三角形を作ります。D2からZ軸に沿ってposの位置まで移動した点をjとし、D2、j、posを頂点とした直角三角形を作成します。D2の指令角度はこの三角形のD2の角度から先ほど求めたD2の角度を差し引きした角度になります。~ |
最後にD1の角度をアークタンジェントで求めれば角度計算は終了です。 | 最後にD1の角度をアークタンジェントで求めれば角度計算は終了です。 | ||
- | **条件について [#b1298fca] | + | **回転方向について [#b1298fca] |
- | 本ロボットハンドの構成ではD4の角度を変更することはありません。何故なら傾きを再現するには軸が足りていないからです。~ | + | 回転方向は軸を正から見て左回りになる方向をプラスとします。 |
- | 軸を追加すると角度を求める為に回転行列や平面、ベクトル計算等が必要となり本章の主旨とは異なってしまうため、ここでは触れません。~ | + | #ref(roll_pitch_yaw.png) |
- | 又、回転方向は軸を正から見て左回りになる方向をプラスとします。~ | + | |
**プログラミング [#bdefef6a] | **プログラミング [#bdefef6a] |