テオ・ヤンセン機構(Jansen's Linkage)
1. 準備!
1.1 前提
テオ・ヤンセン機構をシミュレートする上での前提は大きく分けて以下①~⑤です。
①図1赤線で示したリンク長さa~mは固定です。
②図1青丸で示したリンク軸B,Oの座標は固定です。
③図1青丸で示したリンク軸Oを中心にリンク軸Aがくるくる回ります。
④図1リンク軸Aの座標に連動してリンクの軸C~Gが動きます。
⑤最終的にリンク軸Gがロボットのつま先として歩き出します!凄い!
図1:テオ・ヤンセン機構の各リンクと座標名
1.2 名前ボックス
EXCELでは名前ボックスと言う便利な機能が有り、これを使うとセルのアドレスに変数を割り当てる事が出来る様になります。
計算で使う変数をそのまま割り当てれば数式が直感的に書ける様になりますので非常に便利です。
今回は以下図2の通りセルに変数を登録しました。
1.2.1 リンク長さ
セル「O-9~O-21」に、リンク長さ「a~m」を登録
1.2.2 リンク軸座標X
セル「L-22~L29」に、リンク軸座標X「Ox~Gx」を登録
1.2.3 リンク軸座標Y
セル「M-22~M29」に、リンク軸座標Y「Oy~Gy」を登録
1.2.4 リンク軸A-O間角度θ
セル「N-7」に、リンク軸座標X「θ」を登録
※その他(N-26やO-31等)に関しては名前ボックスに登録無し
図2:EXCEL画面の左上辺りに有る「名前ボックス」
2. 計算!
表1に示した表(枠部分)をまるごとコピーしてEXCELシートのセル「J-5」に張り付ければそのまま計算できます。
使い方は、表1変数行に有る360と書かれている部分の角度(図1のmリンクの角度)を変更すればA~Gの座標が自動で計算出来ます!
表1:テオ・ヤンセン機構シミュレート
座標 | 角度 | 長さ | ||||
X | Y | θ | xc | yc | ||
変
数
|
θ | - | - | 360 | - | |
設
定
値
|
a | - | - | - | 120 | |
b | - | - | - | 123 | ||
c | - | - | - | 120 | ||
d | - | - | - | 120 | ||
e | - | - | - | 171 | ||
f | - | - | - | 120 | ||
g | - | - | - | 111 | ||
h | - | - | - | 198 | ||
i | - | - | - | 144 | ||
j | - | - | - | 153 | ||
k | - | - | - | 189 | ||
l | - | - | - | 24 | ||
m | - | - | - | 45 | ||
O | 347 | 127 | - | - | ||
計
算
値
|
A | =Ox+m*COS(RADIANS(θ)) | =Oy+m*SIN(RADIANS(θ)) | - | - | |
B | =Ox-a | =Oy+l | - | - | ||
C | =Bx+O25*COS(N25)+P25*COS(N25-PI()/2) | =By+O25*SIN(N25)+P25*SIN(N25-PI()/2) | =ATAN*1 | =(O30^2+b^2-j^2)/(2*O30) | =(b^2-O25^2)^0.5 | |
D | =Bx+O26*COS(N25)+P26*COS(N25+PI()/2) | =By+O26*SIN(N25)+P26*SIN(N25+PI()/2) | - | =(O30^2+cc^2-k^2)/(2*O30) | =(cc^2-O26^2)^0.5 | |
E | =Bx+O27*COS(N27)+P27*COS(N27-PI()/2) | =By+O27*SIN(N27)+P27*SIN(N27-PI()/2) | =ACOS*2+PI() | =(b^2+d^2-e^2)/(2*b) | =(d^2-O27^2)^0.5 | |
F | =Dx-O28*COS(N28)-P28*COS(N28-PI()/2) | =Dy-O28*SIN(N28)-P28*SIN(N28-PI()/2) | =ATAN*3 | =(O31^2+g^2-f^2)/(2*O31) | =ABS(g^2-O28^2)^0.5 | |
G | =Dx-O29*COS(N29)-P29*COS(N29-PI()/2) | =Dy-O29*SIN(N29)-P29*SIN(N29-PI()/2) | =ATAN*4 | =(g^2+i^2-h^2)/(2*g) | =(i^2-O29^2)^0.5 | |
AB | - | - | - | =((Ax-Bx)^2+(By-Ay)^2)^0.5 | ||
DE | - | - | - | =((Dx-Ex)^2+(Dy-Ey)^2)^0.5 |
3. まとめ
上手く行ったら座標計算もVBAに取り込んで、さらに2脚以上に動作を拡張し、最終的にArduinoIDEでGamebuino用のゲーム化(ストランドビーストがただ十字キーを押した横方向に歩くだけ)する予定です!計算負荷がなかなかきつそうです(;''∀'')
励みになりますのでよければクリック下さい(^o^)/