例えば、秋田の竿燈をイメージして貰えば分かりますが、重心が支点よりも上にある場合には傾きを判断して動きの制御しないと状態を保持できません。実は、二本足で歩行する人間もそうだと思いますが。
こういうものを総称して『倒立振子』というようですが、M5Stackには9軸センサ内蔵モデルを使えば自分の状態を検知できるのでフィードバック系を与えれば同様な機能を実現できます。
フィードバック制御にはPID制御という古典的ですが実用的な手法を使ってパラメータを決定します。
3Dプリンタのstlファイルやソースコードは以下のリンクにおいてあります。
https://github.com/chateight/reversed_pendulum
姿勢制御というのは現代でも例えば、人工衛星や身近な例では車の安全装置などにも使われますが、それらの一番基本的な制御になるんだろうと思います。
PID制御の特性として、
① 電池電圧が変化するとPIDパラメータの最適値は変動します、モーター特性が変わるので当然ですが
② 同じような理由でループ時間が変わると同様にPIDパラメータも変更が必要になります
これらを除外するには、モデル化するのがベターですが、現物のモデルは簡単には作れないしモデルを作ってもその精度が問われることになりそうです。