NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Gamebuinoで自作ゲーム!その2(リンク軸の座標計算)

イメージ 1
テオ・ヤンセン機構(Jansen's Linkage)
 
 前回に引き続き今回は「テオ・ヤンセン機構」の軸の座標を計算する式をEXCELで作ってみました!

1. 準備!

1.1 前提
 テオ・ヤンセン機構をシミュレートする上での前提は大きく分けて以下①~⑤です。
 
  ①図1赤線で示したリンク長さa~mは固定です。
  ②図1青丸で示したリンク軸B,Oの座標は固定です。
  ③図1青丸で示したリンク軸Oを中心にリンク軸Aがくるくる回ります。
  ④図1リンク軸Aの座標に連動してリンクの軸C~Gが動きます。
  ⑤最終的にリンク軸Gがロボットのつま先として歩き出します!凄い!
 
イメージ 1
 図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日紙に書いた三角を見てたら頭痛が…_| ̄|○
 
 表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
※座標計算は「roombaの日記」さんを参考にさせて頂きました有難う御座います

 

3. まとめ

 座標計算はEXCELシートで行って、この値を元に図1のオートシェープをVBA で動かす予定です!
 上手く行ったら座標計算もVBAに取り込んで、さらに2脚以上に動作を拡張し、最終的にArduinoIDEでGamebuino用のゲーム化(ストランドビーストがただ十字キーを押した横方向に歩くだけ)する予定です!計算負荷がなかなかきつそうです(;''∀'')
 
イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【Gamebuinoで自作ゲーム!】目次に戻る


 

*1:Ay-By)/(Ax-Bx

*2:Bx-Cx)/(b

*3:Ey-Dy)/(Ex-Dx

*4:Fy-Dy)/(Fx-Dx