ゆるエンジニアはいろいろ遊びたい

FAエンジニアが週末にいろいろ遊ぶブログです

AtomMatrixで倒立振子を作った

AtomMatrixで倒立振子を作っていた記事を見つけたので、マネをして自分も作ってみました。
ネットで検索すると丁寧に作り方を解説している記事が見つかると思いますので、詳しくは書きません。
構成は

  • AtomMatrix
  • AtomicMotionBase V1.2
  • FEETECH ギアードモーター FM90
  • タイヤ FS90R対応

となっています。
モーターとAtomicMotionBaseは両面テープで貼り付けて、裏側にアクリルプレートを貼り付けて補強しています。
重心が後ろよりになっていたため、モーターのみ3mmのアクリルプレートで重心が前よりになるように調整しました。

スケッチはgithubで公開されていたためそれを使いましたが、いろいろ変更しました。

  1. PS4コントローラによるマニュアル運転追加
  2. ジャイロセンサのデッドゾーン追加
  3. バッテリー残量表示追加
  4. ブラウザでのPIDパラメータと目標角度設定追加

動かした動画はXにてポストしています。


githubに公開されているスケッチでは目標角度付近での安定性が低く、デッドゾーンを設定して目標値付近の数値がばたついても無視するようにしたところ、非常に動作が安定しました。
PID制御の方式については、速度型PIDらしくて計算式が通常のPIDと違っていましたが、パラメータの設定で動作が安定するようになりました。
ポイントとしては、目標角度の設定と、水平がとれている走行面で調整をすることです。
走行面の水平が取れていないと重心が変わってしまい、目標角度に到達しても傾いてしまいます。
カーペットなどのぼこぼこした面ではふらつきやすい反面、安定してしまえば微動だにしません。
完全直立を目指していたのですが、いざそれが実現して全くゆらゆらしなくなるとなんかつまらないと感じました。
やっぱり倒立振子はゆらゆら揺れてこそなんだなぁ。と思った次第です。