2021.11.14オムニホイールロボット上で倒立振子の安定化をしてみたいと思い、本記事を執筆しています。今回は運動方程式の導出とシステムの線形化までです。大学のときにドローン上での三次元倒立振子の研究をやっていました。以下、当時の動画です。~3次元倒立振子実験~上の動画の実験では、実験室の天井に計測用カメラを設置する必要あり、個人で実験するのは少しむずかしいなと思うところがありました。ような小型で姿勢角を計測できるデバイスもあるので、もしかしたら上記のようなシステムを外部観測機器なしで構築できるのではないかと思っています。倒立振子で実現可能性を探るというのが今回の試みの趣旨になります。倒立振子」をすでにやっている研究室はありました。今回は運動方程式を導出するため、以下の二つのサイトと論文を参考にしました。使った運動方程式の導出方法を説明しています。なじみがなかったので、両方のサイトを行ったり来たりしながら運動方程式を導出しました。以下のようなシステムを考えます。削り出しパーツを使う予定で考えています。ここらへんは、今後詳細を練っていく予定(12月か来年1月あたりを予定)です。含めた状態変数ベクトルは、以下のようになります。際にはこれらの変数も使っています。(導出した運動方程式にこれらの変数は出てきません。し、さらにセンサも棒の中心位置に置くことにしました。そのため、下記のパラメータは使いません。$m_s$:棒の重量$m_m$:姿勢角計測用センサの重量$l_m$:振子の一端(ロボット側)からの姿勢角計測用センサの距離$l_{gp}$:振子の一端(ロボット側)からの振子の重心の距離このとき、重心周りの振子の慣性テンソルは以下のようになります。軸周りの慣性モーメントはゼロとしました。運動方程式と線形近似システムの導出この節では、運動方程式導出の大まかな流れを解説します。上がっているソースコードを読んでみてください。振子の位置エネルギーを設定。各モータが出力する力を入力として、入力ベクトルを定義。登録に関しては、このサイトを参考にしました。以下の方法で、運動方程式を導出する。計算させると、運動方程式の左辺は以下のようになります。右辺は要素がすべてゼロの列ベクトルです。状態ベクトルに設定する。以下としていることに注意。$$平衡点を設定する。行列は、以下のようになります。使った場合とで結果が同じになるかどうか確かめてみました。ロボットの位置エネルギーで、ロボットの重心は基準の高さなので、ゼロになっています。和なので、正しい式になっています。下記で、この2つのエネルギーの整合性を確かめていきます。ちなみに本筋と関係ないですが、長い数式にスクロールバーを表示させる方法はこのサイトを参考にしました。場所に位置しています。以下のように表されます。