車輪 2 つだけで立っているロボットです。何もしなければすぐ倒れますが、1 秒に 100 回「どっちに傾いているか」を測って車輪を動かし、倒れずに立ち続けます。押したり、センサーを遅くしたりして試してください。
この 3 つを 1 秒に 100 回くりかえしている
| ステップ | 本物ではこうする | このリポジトリ |
|---|---|---|
| 測る | ジャイロと加速度センサー(IMU)で測る。どちらもノイズやずれがあるので、2 つを混ぜて本当の傾きを推定する(カルマンフィルタなど) | 04_estimation |
| 決める | 4 つの重みは、ロボットの運動方程式から計算しておく(LQR という方法)。PID 制御で作ることも多い | 02_dynamics 03_control |
| 車輪を回す | モーターに流す電流を変える。出せる力には上限があるので、強く押されすぎると立て直せない | 03_control |
| 遅れ | センサー・計算・通信には必ず遅れがある。シミュレーションで立てても、実機で倒れる原因の代表 | 07 (予定) |
どれも「測る → 決める → 動かす」を高速でくりかえしています。これがフィードバック制御です。止まっているように見えても、ずっと小さく動いて立て直し続けています。