Arduino 倒立振子 |
前回までで倒立するところまでは完成しましたので、つづいて赤外線リモコンで遠隔操作への挑戦です。赤外線リモコンのスケッチはネット上に沢山公開されているので、これらを参考にしながら手持ちのリモコン端末用にスケッチを作ります。ここまでは比較的簡単な作業です。
次に、このリモコンを使って機体を前後進、左右旋回をさせようということで、スケッチのなかで倒立させるためのモーターへの出力値に右旋回の場合は左車輪に出力値をプラス、右車輪にはマイナスすれば、その場旋回するはずです。左旋回の場合はその逆です。旋回をやめる場合は与えた余分な出力値をゼロにすればということです。
早速、スケッチをそのように変更して、運転してみます。問題なく旋回します。これは簡単だなと思ったのはつかのま、前後進は同じ要領で前進の場合は両車輪にプラス、後進はマイナスということで試してみましたが、機体は一瞬その動きを見せるもののすぐにもとの倒立状態でその場で停止します。よくよく考えれば当たり前で、もともと外乱が加わっても倒立状態になるようにプログラムされているから外乱が加わって一瞬動こうとしてももとに戻るわけです。
さてどうしたものか、ここからが試行錯誤の連続になりました。ネット上に沢山ある例では単純に出力値の増減で前後進しているものが大半で、どうもこの機体の参考にはならないようです。試行錯誤もすでに一週間を過ぎた頃に、増減する出力値を一度に与えずに徐々に増減させてみてはということで、そのようにプログラムしてみると、不思議なことに前後進するようになってきました。
これが、その動画です。
リモコン操作で狭い机上を前後進、左右旋回できるようになりました。一応これで目的は果たしましたが、まだ問題があります。広い場所で動かしてみるとしばらく前後進すると加速がついて制御が追い付かず転倒してしまいあす。速度フィードバックはとれないので解決方法はないかと思います。倒立し易いようにと重量のあるバッテリーを一番上に持ってきたのが災いしたようです。走り出すと慣性力でどんどん加速してしまいす。
そういう視点であらためて参考にしたINSTABOT製の機体をみると、やはりバッテリーは下部に置かれています。ということで、機体の大改造をやらねばならないかと思案中です。
kookyさんが参考されたINSTABOTのArduino
のソースは前進後進時、加える電圧を除々
に大きくしてるのが、不思議だった
のですが、これがミソだったのですね。
当方は、ターゲット角度を変えることに
より操縦しているBalanduinoを参考に
制御しようとテストしているところなので
すが、除々に電圧を増やす方式もテストし
てみます。情報ありがとうごさいます。
当方の倒立振子ロボットも制御できました。
ターゲット角度をずらすことによって制御してます。
この方法でも、走りだします。
ターゲット角度が重力が働く鉛直よりずれているので、
その分進行方向に重力の分力が働き続けるので、走り出す
のだと思います。これはkookyさんの方法も同様で、結果的
に進行方向に常に力を加ていることになり走り出すのだと
思います。
力の制御が必要なようですね。