← プロジェクト概要に戻る Mini 04 ミニ④完了

ミニ④:外側 PID

送受信コンソールの基本形は完成。ここから PID を仕上げる。
見るのは角度、角加速度、推定電流 Id。自律立ち上がりは次のステップ。

2026年10月6日 | slug mini-rw-pid | 正本 docs/hardware/mini-rw.md | ファームは mini_rw(新規 PIO は作らない)

ミニ④完了(2026-10-06)
内側は推定電流。外側の採用は P=0.030、D=0.0043、I=0、符号は −1 です。 電流の上限は ±0.6 A、外側の電圧は 6.7 V です。 詳しい最終条件は Step 5 です。自律立ち上がりは、このあとです。

Step 0: 構想

Chocofon(B):
もう立たせる番?
AIチューター:
立ち上がりは次です。このミニは、手で頂点の近くを持ったときの 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
AIチューター:
電圧も電流と同じ掛け算です。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 の内側)です。

D=0.0043 の全体: ARM から約91秒、e・omega・Id・Ud。傾きは ±8° の内側
0〜91 秒(全体) — ARM から E-STOP まで約 90.9 秒。 e は ±8° の内側。ふだんは約 ±2°、いちばん大きくて約 ±4.6°。 Id は約 ±0.23 A、Ud は約 −1.9〜+2.8 V
D=0.0043 の立ち上がり 0〜20秒: e が約5°から小さい揺れに入る。e・omega・Id・Ud
0〜20 秒(約 5° からの立ち上がり) — 始まりで e が約 +4.6° まで振れ、そのあと ±数度の揺れになる。 最初の Ud は約 2.8 V

D=0.0043 のタイムライン

おおよそ出来事読み取り
0 sARM直前は 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 shold=1ここから |e|≤8° の秒数が増える
約 91 sE-STOPhold=90。そのあと e は 22°、67°、87° と倒れた。87° は制御中の山ではない

生ログ: Web_html/hub/assets/mini-rw/mini-rw-csv.txt (955 行。時刻 0 は ARM の t_ms=434607)

揺れは 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.003I=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 値

項目採用
P0.030 A/°
D0.0043 A/(°/s)
I0
符号−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。自律立ち上がりは、このあと。

更新 2026-10-06(ミニ④完了。推定電流 R=10.09。上限は ±0.6 A、6.7 V。採用は P=0.030、D=0.0043、I=0)| Hub projects/mini-rw-pid | 前: ミニ③ 測って残す