ミニ④:外側 PID
送受信コンソールの基本形は完成。ここから PID を仕上げる。
見るのは角度、角加速度、推定電流 Id。自律立ち上がりは次のステップ。
内側は推定電流。外側の採用は P=0.030、D=0.0043、I=0、符号は −1 です。 電流の上限は ±0.6 A、外側の電圧は 6.7 V です。 詳しい最終条件は Step 5 です。自律立ち上がりは、このあとです。
Step 0: 構想
もう立たせる番?
立ち上がりは次です。このミニは、手で頂点の近くを持ったときの PID です。 画面と CSV の見方は ミニ③ Step 4 です。 見る列は3つです。
| 見るもの | CSV のどこ |
|---|---|
| 角度 | e(目標との差)、eIMU(IMU の絶対角) |
| 角加速度 | 列はまだ無い。速さは omega(度/秒)。角加速度は、その omega がどれだけ急に変わるか |
| 推定電流 | Id(アンペア)。同じ値が pwm(ミリアンペア) |
済んでいること
| 項目 | いま |
|---|---|
| コンソール | 基本形は完成。ミニ③ Step 4 |
| 重さ | 139.3 g。DC 版は 109.9 g。重心はモータ軸の近く。ミニ② Step 4 |
| 符号 | −1。時計回りのずれには、マイナスの電流 |
| P の試し | 0.015 A/°、D=0、I=0。約 5° から一度目標へ寄り、プラス側の約 4°〜6° で止まった |
| そのときの天井 | Id は ±0.07 A。Ud は ±2.00 V。0.015×5°=0.075 A なので、5° で電流の天井 |
| Step | 決めること |
|---|---|
| 1 | 済。ファーム上限は ±0.6 A、6.7 V。Step 1 |
| 2 | 暫定。P=0.030。D=0、I=0 で左右に往復。Step 2 |
| 3 | 完了。D=0.0043。約 91 秒、傾きは 8° 以内。Step 3 |
| 4 | 完了。採用は I=0。P と D はそのまま。Step 4 |
| 5 | 済。最終条件は Step 5。P=0.030、D=0.0043、I=0 |
Step 0 は OK。自律立ち上がりは、PID のあと。
Step 1: トルクの上限
先に、いまの力が何度までかです。重さの実測は ミニ② Step 4 です。 回る中心から重心までの長さは、設計メモの 2.5 cm のまま使います。量り直した角度ではありません。
| 項目 | 骨組みの数字 |
|---|---|
| 重さ | Mini RW 139.3 g。DC 版 109.9 g(約 1.27 倍) |
| 重心 | ほぼモータ軸の近く。長さの仮定は 2.5 cm |
| 0.07 A | 組んだ実測は約 3.4 mN·m |
| 釣り合う角度 | およそ 6°。前の「およそ 8°」は、この重さの前の目安 |
| ±10° に要る力 | およそ 6 mN·m。0.07 A のままでは届かない |
| 試しのときの天井 | 基板は ±0.07 A と 2 V。5° で P=0.015 がすでに当たった |
| 決めたファーム上限 | 電流 ±0.6 A。電圧 6.7 V。下の表 |
部品の上限(2026-10-06)
壊さないための天井です。決めたファーム上限は、この表の 0.8 倍以下です。 モータの電流は 2S から Mini へ直接行きます。5 V の降圧 BP5293-50 は ATOM 用で、モータ電流は通りません。
| 部品 | 上限 | この機体 |
|---|---|---|
| モータ 2208 80KV | 巻線は実測 10.09 Ω。カタログ KV は 80 | 満充電 8.4 V を止めた軸にかけると、約 0.83 A(8.4÷10.09)。連続電流のカタログ値は、正本に残っていない |
| ドライバ SimpleFOC Mini v1.0 | DRV8313。電源の公開範囲は 8〜35 V。1 相 2.5 A。ヒートシンクなしで長く流す目安は 2 A 未満。絶対最大 5 A | 2S でモータが先に 0.83 A に当たる。ドライバの 2 A が先にはならない。シャントは無い |
| 電源 LiPo 2S | 満充電は約 8.4 V。ベンチの 9.0 V は、この機体に使わない | 実測も Vps=8.4。Mini の公開下限は 8 V なので、満充電は入る。公称 7.4 V まで下がると、公開範囲の外 |
| BP5293-50 | 入力 7〜26 V。出力 5.0 V。最大 1 A | ATOM の 5 V だけ。2S を ATOM の 5 V に直結しない。電池が 7 V を下回ると、5 V 側が先に落ちうる |
ファームの上限(HW × 0.8)
Step 2 で P を選ぶときの天井です。2026-10-06 に決定し、同じ日に ATOM(COM6)と JC4827(COM7)へ書き込みました。
| 部品の上限 | × 0.8 | ファームの上限 | |
|---|---|---|---|
| 電流 | 0.83 A(8.4 V ÷ 10.09 Ω) | 0.664 A | 0.6 A |
| 電圧 | 8.4 V(2S の満充電) | 6.72 V | 6.7 V |
電圧も電流と同じ掛け算です。2S の 8.4 V × 0.8 = 6.72 V。安全側に切って 6.7 V です。 ドライバの 35 V には掛けません。この機体の電源は 2S だからです。
このファームは空間ベクトル PWM です。波形を崩さずに出せる電圧は 8.4 ÷ √3 ≈ 4.8 V までです。 6.7 V を 7 V や 7.5 V に上げても、コイルへ届く電圧は増えません。 止めた軸で実際に出せる電流は、およそ 4.8 ÷ 10.09 ≈ 0.48 A です。 ホイールが約 30 rad/s だと逆起電力は約 3.6 V で、残る電圧から電流は約 0.12 A です。
ファーム上限は、電流 0.6 A、電圧 6.7 V。2026-10-06 に両基板へ書き込み済み。電圧の天井は 6.7 V のまま。
Step 2: ±10°の P
電流の式は Id = (−1) × (Kp × e + Kd × ω) です。この Step の I は 0、D も 0 から始めます。
符号 −1 は残しています。上限は ±0.6 A と 6.7 V です。
|e| が 45° 以上になると、電圧 Ud を 0 にします。12° では止めません。
| 始め方 | e がおよそ ±10°。開始できるのは、いままでどおり 12° 以内 |
| P の上げ方 | 0.02、0.03、0.04 A/°。小さい方から。D=0、I=0 |
| 見ること | 左右に交互に傾き始める P。あわせて e、eIMU、Id、Ud |
| 上限 | 0.6 A か 6.7 V に当たったかも、CSV で残す |
| 暫定(2026-10-06) | P=0.030、D=0、I=0。左右に往復した。約 4 秒で ±20〜22° まで育ち、Id は ±0.6 A、Ud は ±6.7 V に当たった |
Step 3: D
P で ±10° に触れてから。ジャイロの omega を足して、行き過ぎを抑えます。
I はまだ 0 です。
| 見るもの | omega の変化(角加速度)。列そのものはまだ無い |
| この試行の偏り | ARM の前、omega は約 0.4〜0.5 °/s。機体が回っている速さではない |
| ダイヤル | 1 目盛り 0.0001。上限は 0.020。両基板に書き込み済み |
| 暫定(2026-10-06) | D=0.0043。P=0.030、I=0 |
D を上げたときの山
P=0.030、I=0 のままです。
| D | 続いた時間 | 読み取り |
|---|---|---|
| 0.0010 | 約 5 秒、そのあと約 7 秒 | 山は約 −12° と +9°。同じ側の山まで約 1.0 秒 |
| 0.0015 | 約 11 秒 | 山の大きさはほぼ同じ。往復は約 1.0 秒 |
| 0.0020 | 約 15 秒 | 往復は約 1.4 秒に遅くなった。マイナス側の山は約 −12° のまま。ホイールは約 60〜70 rad/s で、Ud は ±6.7 V に張り付いた |
| 0.0043 | 約 91 秒 | ふだんの山は約 ±2°。いちばん大きくて約 ±4.4°。hold は 90(|e| が 8° 以内)。|Id| は約 0.23 A まで。|Ud| は約 2.8 V まで。ホイールは約 ±32 rad/s まで |
2026-10-06・D=0.0043。時刻の 0 は ARM です。その直前の e は約 −5.5° でした。
緑帯は ARM から E-STOP まで。点線は |e|=8(hold の内側)です。
e は ±8° の内側。ふだんは約 ±2°、いちばん大きくて約 ±4.6°。
Id は約 ±0.23 A、Ud は約 −1.9〜+2.8 V
e が約 +4.6° まで振れ、そのあと ±数度の揺れになる。
最初の Ud は約 2.8 V
D=0.0043 のタイムライン
| おおよそ | 出来事 | 読み取り |
|---|---|---|
| 0 s | ARM | 直前は e≈−5.5°、omega≈0.5、Id=0、Ud=0 |
| 0 s の直後 | 最初のサンプル | e=−4.16、omega=46.3、Id=−0.074。式 −(0.030×e + 0.0043×ω) と同じ |
| 約 1 s | hold=1 | ここから |e|≤8° の秒数が増える |
| 約 91 s | E-STOP | hold=90。そのあと e は 22°、67°、87° と倒れた。87° は制御中の山ではない |
揺れは 0° の前後で、約 0.5〜1 秒ごとに続いています。e はおよそ −1° 付近に寄ることが多いです。Step 4 で I を足して見ましたが、山が大きくなったので、この残りは消さずに I=0 のままにします。
Step 4: I
D=0.0043 で残った、およそ −1° のずれを、小さい I で消せるかを見ました。 P と D は動かしません。結果は、I を足すと山が大きくなりました。採用は I=0 です。
| 式 | u = Kp×e + Kd×ω + Ki×∫e。電流は Id = (−1)×u |
| 採用(2026-10-06) | P=0.030、D=0.0043、I=0。ATOM と JC4827 の両方に入っています |
| 上げ方 | I は 0 から、1 目盛り 0.001。上限は 0.020。P と D はそのまま |
| 0.001〜0.003 | I=0 のときと、角度も角速度もほぼ同じ。平均の角度は少しマイナスのまま |
| 0.004 | 終わりの山が少し大きくなった。角度は約 −3.2°〜+2.4°、角速度は約 38 °/s、電流は約 0.15 A |
| 0.006 | 山がはっきり大きくなった。角度は約 −7.6°、角速度は約 65 °/s、電流は約 0.35 A |
| 0 に戻したあと | 約 20 秒で小さくなった。終わりの約 6 秒は、角度が約 −3°〜+0.8°(平均約 −0.9°)、角速度は約 ±25 °/s、電流は約 0.10 A |
| 条件 | |Id| が 0.6 A のあいだは、同じ向きへ積分を足さない。この試行の電流の山は約 0.37 A で、天井には当たらない |
| 採用 | I=0。残る約 −1° は、この I では消さない |
I は 0 でよい。P=0.030、D=0.0043 はそのまま。
Step 5: まとめ
2026-10-06 の最終条件です。ソースは mini_rw の main.cpp。
代表の記録は、D=0.0043・I=0 で約 91 秒立っていた
Web_html/hub/assets/mini-rw/mini-rw-csv.txt です。
P=0.030、D=0.0043、I=0 の様子( YouTube「mini rw01」 )。
最終ファーム
2026-10-06 に両方の基板へ書いたソースです。起動値は P=0.030、D=0.0043、I=0 です。
ATOM(COM6)mini_rw JC4827(COM7)jc4827
SimpleFOC 推定電流トルク
シャントは使いません。指令はアンペアです。コイル電圧は、電流 × 巻線抵抗に、回っているぶんの電圧を足したものです。
motor.controller = MotionControlType::torque;
motor.torque_controller = TorqueControlType::voltage;
motor.phase_resistance = 10.09f;
motor.KV_rating = 80.0f;
極対数は 7 です。phase_resistance は実測の 10.09 Ω です。
上限設定値
| 項目 | 値 |
|---|---|
| 外側の電流 | ±0.6 A。motor.current_limit も同じ |
| 外側の電圧 | 6.7 V。motor.voltage_limit。下げられる下限は 0.5 V |
| ドライバの電源 | 8.4 V。driver.voltage_power_supply と driver.voltage_limit。2S 満充電の想定。外側の 6.7 V とは別 |
| 倒れ | 角度の差が 45° 以上なら、電圧を 0 にする。45° 未満で戻す |
| P のつまみ | 0〜0.040 A/°。1 目盛り 0.001 |
| D のつまみ | 0〜0.020 A/(°/s)。1 目盛り 0.0001 |
| I のつまみ | 0〜0.020。1 目盛り 0.001。積分は ±20 °·s。電流が 0.6 A のあいだは、同じ向きへ足さない |
6.7 V を 7 V や 7.5 V に上げても、コイルへ届く電圧は増えません。 波形を崩さない範囲はおよそ 4.8 V なので、止めた軸で出せる電流はおよそ 0.48 A です。
PID 制御
角度の差は e = eIMU − 目標 − trim です。時計回りがプラス。0° は基板が水平なときです。
u = Kp×e + Kd×ω + Ki×∫e
Id = (−1)×u
Id は ±0.6 A で切ります。DC 版の Kp=60 は PWM の数字なので、この電流にはコピーしません。
最終 PID 値
| 項目 | 採用 |
|---|---|
| P | 0.030 A/° |
| D | 0.0043 A/(°/s) |
| I | 0 |
| 符号 | −1 |
| そのときの挙動 | 約 91 秒、hold=90。ふだんの山は約 ±2°、最大約 ±4.4°。電流は約 0.23 A まで。平均の角度はおよそ −1° に寄る |
最終は P=0.030、D=0.0043、I=0。電流 ±0.6 A、電圧 6.7 V。自律立ち上がりは、このあと。