読者です 読者をやめる 読者になる 読者になる

統失ニートの再受験日記

大体は海水魚について書きます。統失ですが、医学部再受験しようと思います。

倒立振り子5(測定)

Arduino

f:id:cmsan:20150329173212j:plain

釣り糸で釣り上げて重心を測ります。測定結果は、重さ{0.645}kg、タイヤ軸からの重心距離は{0.083}mでした。

従って、慣性モーメントは{I=0.00148}{a,b,c,d}の値はそれぞれ、{a=354.58}{c=-56.04}{b=-29.43}{d=6.20}となりました。重力加速度は{g=9.81}としました。

極の値は適当に{\lambda=-1+2j, -1-2j,-2+1j,-2-1j}と置きます。この極でどのように収束するか楽しみです。

{\lambda_i}{k_i}の関係式より、各{k_i}の値が求まります。ここもちょっと大変ですが頑張りましょう。前回記事 で求めた関係式に数値を代入して

   {-56.04k_2 + 6.20k_4 = -6}

   {-(354.58+6.20k_3 -56.04k_1) = 18}

   {-549.73k_4 = -30}

   {549.73k_3 = 25}

これより、{k_1=6.6537}{k_2=0.1131}{k_3=0.0455}{k_4=0.0546}となりました。よって、振り子に与える力{u}は、

   {u=6.6537θ +0.1131\dot θ + 0.0455x + 0.0546 \dot x}

となります。なるほど。

さて、次にArduinoから必要な力{u}を出力することを考えます。Arduinoから制御できるのは電流量だけです。なので、電流とモーターについて少し調べてみます。

今、私が購入したモーターはスプリントダッシュモーターですので、このモーターが出すトルクを調べて、適当にトルク{17}g.cm={0.001667}N.mくらい({14\sim 19}でばらつくみたいなので)にします。そして今回、シングルギアボックスのギア比{114.7:1}で作成しましたので、トルクを{114.7}倍します。よって、トルクはmks単位で{0.1911}N.mです。そして今、力{u}を加える向きと回転軸は垂直なので位置{r}と力{u}外積トルク{T}は、ただの掛け算となります。

f:id:cmsan:20150330145625j:plain

タイヤの半径は{r=29}mmなので、

   {T=r×u}

からこのモーターの出力する力はMAXで{6.5934}×{2}Nとなります。{2}をかけているのは、ロボットに{2}つのモーターがついているからです。(各タイヤに{1}つずつ)

また、モーター出力は電流量に比例するようなので、これで電流{i}の値を決めることができますね。

   {i=\frac{理論から得た力u}{6.5934×2} ×255}

としてArduinoでanalogWrite()関数から出力してやればよいわけです。{255}をかけているのはanalogWrite()関数の最大値が{255}だからです。

すなわち、理論からの予測で行くと振り子が安定できるのは角度{2}deg未満となり(仮に{θ=2}、他の値{0}を理論式{u}に代入すると、大体最大量弱の電流が必要になってしまいますね)、実験すると、ぎりぎり立とうとするもののすぐ倒れるような結果になると思います。ほとんど失敗ですが、予測に沿うか確認するため、このまま進めていきます。 失敗しても大丈夫です。たぶん。少し手はかかるかもしれませんが...

 

次は実験!...と行きたいですが、もう少し待ってください。次回は、角度検出のために必要なKalmanフィルタの話をします。