/Pendolino4

ESP32で作る倒立振子

Primary LanguageC++Apache License 2.0Apache-2.0

ESP32で作る倒立振子

写真

メカ

タミヤの「楽しい工作シリーズ」の部品を使用します。 「半日で作る倒立振子」を参考にしました。

写真

前面拡大 / 背面拡大

  • ユニバーサルプレート
  • ダブルギヤボックス(ギア比は114.7:1)
  • スリムタイヤセットの大径ホイール

回路

ALGYAN 6th IoT基板を使用します。 他のESP32搭載ボードも同等の回路構成にすれば利用できます。

図

写真

ソフトウェア

  • ESP32のソフトウェアはArduinoベース (説明省略)
  • 依存ライブラリ: arduinoWebSockets
  • 設定画面のHTMLソースはSPIFFSのアップローダでESP32の内蔵Flashに保存 (説明省略)

動作

  • SW3を押しながら電源ONまたはリセットするとWiFiはAPモードで起動します。そうでなければSTAモードで起動します。
  • ただし接続するAPが未設定の場合は必ずAPモードで起動します。接続するAPは後述の設定画面で設定します。
  • STAモードの場合、APに未接続の間はLED3が点滅します。APに接続すると消灯します。
  • ブラウザからアクセスがあったときLED3が点灯します。
  • 起動時には倒立振子の制御は待機状態になっています。このときLED2は点滅します。
  • 倒立振子をバランスする姿勢に立たせると制御を開始します。このときLED2が点灯します。
  • ただし初期状態では制御パラメータが全てゼロなのでモータは動きません。後述の設定画面でパラメータを調整します。
  • SW2を押すと制御のON⇔OFFをトグルします。制御OFFのときLED2は消灯します。
  • SW3を押すとIMUセンサのキャリブレーションを開始します。キャリブレーション中はLED1が点灯します。
  • キャリブレーションは制御をOFFにして静置した状態でおこなってください。
  • SW1はリセットボタンです。

Webブラウザからの設定

  • 最初はAPモードで起動します。
  • SSIDは esp32-xxxxxx (xxxxxxの部分はボード固有), パスワードは 12345678 です。
  • PCからこのAPに接続すると設定画面がブラウザで開きます。
  • STAモードを利用したい場合は、「アクセスポイントの設定」をクリックして、接続するAPのSSIDとパスワードを設定します。
  • STAモードで起動した場合、http://pendolino4.local/ にアクセスして設定画面を開きます。
  • このページで制御パラメータ θ0, K1, K2, K3, K4 を調整します。

スクリーンショット

パラメータ調整の手順

まず、制御をOFFにした状態でIMUセンサのキャリブレーションを行います。

次に倒立振子を指で支えて立たせ、ちょうどバランスするときのθの値を設定画面で読み取ります。この値をθ0に設定します。

そして、制御ゲインK1~K4を以下の手順で調整します。

  1. まずすべてのゲインをゼロにする。出力はゼロになる。
  2. 角度ゲインK1を上げると、倒れた姿勢を立て直すように動き、やがて行き過ぎて往復**(発振)するようになる。
  3. 角速度ゲインK2を上げると発振が収まる。
  4. 2~3の調整で、指一本で軽く触れるだけで安定し、指を動かすとついて来るようになる。
  5. 位置ゲインK3を上げると、指で引いたときに反対向きに抵抗する。指をはなすと行き過ぎて発振する。
  6. 速度ゲインK4を上げると、位置の発振が収束して自立する。
  7. ゲインを上げすぎるとノイズなどに過敏になり不安定になる。

【参考文献】
熊谷正朗 「車輪移動型倒立振子の開発にみるセンサの使い方」 (デザインウェーブマガジン 2007年8月号)

ファイル一覧

発表資料

動画

IMAGE ALT TEXT HERE

過去の関連作品

  • Pendolino1 (GR-KURUMIボード使用) → 資料, 動画
  • Pendolino2 (GPduino-BLEボード使用) → ソース
  • Pendolino3 (GPduino-WiFiボード使用) → ソース