今回はレゴのライントレースボットの旋回軌道の理論値を求めてみる。
ライントレースボットを作った記事がこちらで、
thom.hateblo.jp
前回旋回軌道の理論値を求めようとして失敗した記事がこちら。
thom.hateblo.jp
そして今回はやりたいことにピッタリな記事を見つけたのでそちらを参考に計算していこうと思う。
まずはこちら。
www.mech.tohoku-gakuin.ac.jp
色々と難しいことが書いてあるけど、重要なのは「対向2輪型」というキーワード。
キーワードさえ手に入れれば、ググり放題だ。
これでもっと簡単な説明が書いたサイトを探してみよう。
そして見つけたのがこちら。
tajimarobotics.com
残念ながら数式の表記が崩れているけど、2つのサイトの図を見て気づいた。
前回は左タイヤと右タイヤの軌道を別々に考えてたからややこしかったのであって、要は同心円状の軌道になるわけだから、2つの円を描いて考えれば良いのだ。
いつもどおりまずは紙。ごちゃっと書きなぐる。
次にExcelで作図。
円周の長さは2×円周率×半径なので、この2つの円周をタイヤの軌道が通るとすると、内輪は2πR(1)で1週、外輪は2πR(2)で1週することになる。
2πR(1):2πR(2)の両側を2πで割ってR(1):R(2)ということは、タイヤスピードの比と半径の比は同じになりそうだ。
つまりR(2) = R(1) * タイヤ速度比。
一方、R(2)は、R(1) + 車軸の長さ(左右のタイヤ間隔)と考えることもできる。
つまり、
連立方程式爆誕!
これを解けば、車軸の長さと左右タイヤの速度比から旋回軌道を計算できることになる。
Excelを起動してるので、そのままVBAでやってみた。
タイヤの速度比は4、車軸の長さは10とした。
Const HUGE_NUMBER = 1E+308 Sub 旋回軌道計算() velocity_ratio = 4 shaft_width = 10 minimal = HUGE_NUMBER For inner_radius = 0 To shaft_width Step 0.01 tmp_diff = Abs(inner_radius * velocity_ratio - (inner_radius + shaft_width)) If minimal >= tmp_diff Then minimal = tmp_diff Else Debug.Print "Inner_Radius: "; inner_radius Debug.Print "Outer_Radius: "; inner_radius + shaft_width Exit For End If Next End Sub
結果は次のとおり。
Inner_Radius: 3.33999999999997 Outer_Radius: 13.34
内輪は半径3.3の弧を描くように移動し、外輪は13.34の弧を描くように移動することが分かる。
単位は車軸に依存するので今回はセンチメートルで考える。
疑り深い私は、念のため製図ソフトFusion360でも同心円を書いて寸法を入れてみた。
こっちは直径になるので倍にしているが、誤差はあるものの概ね正しい値が出ている。
よし、ということで先日作った実機↓でやってみた。
(写真は先日の動画から使いまわし)
ところが、全然理論値どおりになってない。
だいたい3~4cmは大回りしている印象。
なんで????と思ってよく見たら。。
タイヤ滑ってる!!
外輪のグリップが強いので内輪が少し引きずられているのか、あるいは後輪がカーブについてこれてないせいかは不明。
ということで、現実の物理法則から主要素だけ取り出しても、他の要素の影響が大きくて計算通りには動かないという結果に終わった。
しかしこうやって考察を積み重ねて色々調べることで知識も付くし、その知識がまた面白いことをするのにいつか役立ったりするし、今回も結果として楽しめたからそれで良かったかなと思う。
以上