ヘビはくねくね動くということで前に進むらしいのです。
なので、くねくね動かす方法を考えます。
くね、と言って右に振り
くね、と言って左に振ればいいのではないでしょうか?
というと、周期的な運動だと考えられるのでsin関数をそのまま入力すればいいのではないか
と考えます。
4自由度2関節のヘビなので、まず片方の関節の1自由度だけを検討します。
例えば、先ほどtheta4の逆関数として
y=f(theta4)を求めたので、
f(theta4) = sin(t)という角度を与えたとします。
ですが、この逆関数はasinなのでsinでは無くなってしまいます。
なので、切り返しが滑らかでは無くなります。
なので
=sin(sin(t))
とかにしてみます。
思惑どおりです。(グラフ上はsinになってしまっていますが)
しかし、このままではだめです。
切り返しが90度であればこのままでもいいのですが、
切り返しが90°出ないとき、もちろんヘビは90度まで曲がっていないようですから、
なので、この結果をそのまま使いません。
このグラフの単位はradですが、
degだと思いなおしたり、クネクネの振幅を命令したいと思ったり、速度0から始めたいと思えば
(この時点で2関節にした時に面倒だなと思い始めるわけですが)
1関節分のくねくねはこれでとりあえず完成です。
2関節目も同様に考えますが、
なにやら、ヘビを見ていると隣り合った関節が、
同時に同じ、あるいは同時に逆ということは無いように思われます。
なので、くねくねには位相のずれを与えるべきです。
例えば、
という感じで、ずらしておきます。
実際は、2本のグラフを書いておいて、縦線を時間軸にそって動かす。
その交点を、その時間の角度として与えます。
これで、くねくね軌道は完成です。
このくねくね軌道は、周期A1、振幅A2、位相のずれA3の3つの変数を持ちます。
実際のところ、yはmaxでd3までしかとれませんので、比として与えられます。
theta3 = arcsin(y/d3)
というところで
Y=y/d3
とします。
Y_1 = sin(%pi*sin([A1]*t)/2 * [A2]/d3)
Y_2 = sin(%pi*sin([A1]*t-[A3])/2 * [A2]/d3)
と与えることにします。
[0回]
PR