ESP32-S3 のプログラムで仮想モーターを動かす
ESP32-S3 でモーター 1 台を制御するサンプルが、パソコン上でフィードバックを読み取り、出力を調整できるようになりました。一時停止やステップ実行も含め、現在の開発状況を紹介します。
モーター制御では、コードを読むだけでは見つけにくい問題があります。フィードバックの方向が逆になっていないか、出力が上限に張り付いていないか。多くの場合、ボードとモーターを接続して初めて状況が見えてきます。こうした問題の一部を先にパソコン上で調べられるように、ESP32-S3 のシミュレーションに取り組んでいます。
最近、Botdraft でモーター 1 台を制御するサンプルが動くようになりました。ESP32-S3 向けにコンパイルした制御プログラムを、プロジェクト画面から実行できます。プログラムの出力でモーターモデルを動かし、モデルの動きを模擬エンコーダー経由でプログラムに返すと、プログラムが次の制御を決めます。Botdraft は引き続き仮称です。

現在動作している、モーター 1 台を制御するサンプルです。この図は模式図であり、製品のスクリーンショットではありません。
現在できること
このサンプルは、開始、一時停止、ステップ実行、実行再開ができます。一時停止すると、モデルのシミュレーション時刻もそのまま保持されます。1 ステップ進めると、プログラムがフィードバックを読み取って出力を調整し、画面上のモーターの姿勢も計算結果に合わせて更新されます。あるステップで止めて何が起きたかを確認し、その後で実行を続けられます。
まずは、制御プログラムのデバッグに役立てたいと考えています。出力を送った後、モデルは期待どおりに変化したか。プログラムは受け取ったフィードバックを使って何をしたか。こうした点を、ハードウェアを接続する前に開発者が確認できるようにしたいと考えています。
プログラムが読み取るフィードバックは、モデルの計算から得られます。
今後追加すること
現時点で動作しているのは、このモーター 1 台のサンプルです。任意の ESP32-S3 ファームウェアイメージをそのまま実行することは、まだできません。チップ内の周辺機能はさらに追加する必要があり、開発ボード全体の回路も完全にはシミュレーションしていません。
モーターモデルには、引き続き試験用のパラメーターを使っています。実機との比較はまだ行っていないため、この結果から特定の実物のモーターの挙動を判断することはできません。また、シミュレーション内の時間と、パソコンが実行に要する時間は異なります。実行速度も引き続き改善する必要があります。
次は、このプロジェクト画面で負荷の変化とフィードバックの中断に取り組みます。負荷を加えたときにプログラムがどう応答するか、エンコーダーの更新が止まったときにどう処理するかを確認していきます。これらのシナリオは、現在の画面ではまだ完了していません。周辺機能のモデルとモーターのパラメーターも追加し、入手できるメーカーの公開資料と照合していきます。
全体の方向性はプロジェクト紹介にまとめています。これまでのソフトウェアと出力機能の開発状況は、開発範囲の説明(英語)をご覧ください。