エンコーダでホイール角速度を見る — AS5600 → ww
倒立はできた。でもホイールが一方向に加速して張り付く問題が残っていた。
解決の第一歩は「疑似 bias」ではなく、本当の角速度 ωw を測ること。
磁気エンコーダ AS5600 を付け、無線コンソール JC4827 の画面と CSV に
ww を載せた(外ループはまだ入れない)。
LINK 中に JC4827 LIVE 行の
ww が手回しで動く。CSV は asOk=1。
制御(PID)は変えていない — 測って見せるだけ。
Chocofon(B)
ホイールがずっと同じ向きに回り続ける… 見えないものを測らないと直らない?
AIチューター
まず机上で読む → 筐体に付ける → テレメに載せる。外ループは最後。
管理人
①C GO。Step ごと確認。Step3 合格。Step4(外ループ)は別 GO。
なぜエンコーダか
ミニ④’ で分かったこと:
- 機械の左右偏りはおもりでだいたい潰せる
- ソフトの疑似 bias(指令
uの積分)では「両方向行き来」まで届かない - 足りないのは 外側の自由度 — ホイール角速度 ωw → 0 に寄せる外ループ
そのためにまず ωw を測り、TX/CSV で見えるようにする(このページの Step0〜3)。 外ループ本体は Step4 以降。
呼称の注意: これはミニ⑤(自律立ち上がり)ではない。 Stretch ①C(段C・エンコーダ)。
この Stretch の Goal
ホイール角速度 ωw を測り、外ループで ωw→0 に寄せて、 一方向加速に張り付かない倒立を机上で示す。
| 区分 | 内容 |
|---|---|
| 合格(全体) | 倒立 30秒級を維持したまま、ホイールが両方向に行き来する(または一符号に張り付かない) |
| 測る量 | AS5600 → ωw、e / u / pwm、hold(JC4827 CSV) |
| 汚さない | ATOM 制御ループで重い printf しない。ログは JC4827/CSV |
Step 0〜3 まで(ここまでの結果)
| Step | やったこと | 結果 |
|---|---|---|
| 0・2 | 取付台・マグネット・すき間調整(写真) | 取付済。すき間はモータ位置で合わせ、モータねじで固定 |
| 1 | 机上読取だけ(as5600_readout_atoms3・モータ OFF) |
手回しで角度/ω が滑らか。agc=255 は残るが実用可 |
| 2 | 筐体前面に固定・読取確認 | 読取は実用レベルで OK |
| 3 | テレメに ww(rad/s)を載せる。外ループなし |
合格 — 画面・CSV で ww が動く。asOk=1 |
| 4 | 外ループ(ωw→0)を薄いゲインで入れる | 管理人 GO 待ち |
| 5 | 評価 CSV+グラフで Before/After | 未着手 |
Step 0〜2:AS5600 の取り付け
ホイールの中心マグネットと、前面のAS5600で角度(→角速度 ωw)を読む。 センサ側の台を先に作り、マグネットをホイールに付け、最後にすき間を合わせる。
センサ台を無理に前後させず、モータ(ホイール)の位置をスライドして調整する。
決まったらモータねじで固定。目安はマグネット〜センサ面 1〜2 mm。
1. AS5600 取り付け台を作る
3D プリントの三又台に AS5600 基板をねじ止め。配線は Port.A 向け (SDA=G1 / SCL=G2、VCC・GND。DIR は GND 側)。
2. ホイールにマグネットを装着
黄色いリアクションホイールの回転中心にネオジムマグネットを付ける。 センサは、このマグネットの真向かいになる位置に来る。
3. 筐体に載せ、すき間をモータ位置で調整
取り付け台をロッド側に固定し、ホイール前面と向かい合わせる。 すき間はセンサ台ではなく、モータ/ホイールを前後して合わせ、モータねじでロックする。
このあと Step1 の机上読取(as5600_readout_atoms3)で手回し確認 →
Step3 で ww テレメへ。
Step 3 でわかったこと
見える数字
| 名前 | 意味 | どこで見る |
|---|---|---|
omega |
振子の角速度(dps) | 従来どおり CSV/画面 |
ww |
ホイール角速度 ωw(rad/s) | JC4827 LIVE 行・CSV 末尾付近 |
asOk |
AS5600 認識(1=OK) | CSV(flags bit1) |
ハマりどころ(学び)
Wire1(I2C1)で Port.A を読もうとしたら、IMU と同じバスと衝突して
ww がずっと 0.00 になった。正解は
M5.Ex_I2C(I2C0)。ピンは Step1 と同じ
SDA=G1 / SCL=G2。
- ATOM と JC4827 は
TeleTelemetryを同時更新(片方だけだと LINK が取れない) - 制御ループ内では AS5600 を読むだけで
printfしない(遅延で倒立が崩れる)
CSV 列(評価用)
t_ms,seq,link,peer,armed,e,omega,u,pwm,hold,kp,kd,ki,trim,bias,biasOn,asOk,ww
JC4827 Serial で v → CSV ON。手回しで末尾 ww が動くことを確認。
再現(書き込み)
# ATOM(倒立 + AS5600 → tele)
cd PlatformIO/PlatformIO_Projects/rw_pendulum_torque
pio run -e balance_atoms3 -t upload
# JC4827(画面 ww + CSV)— 同時更新必須
cd PlatformIO/PlatformIO_Projects/jc4827_tx_tuner
pio run -e jc4827 -t upload
pio device monitor -e jc4827 -b 115200
机上読取だけ戻すとき:
pio run -e as5600_readout_atoms3 -t upload
次にやること
Step3 合格を認める。外ループ(Step4)は別途 GO。
測れて見せられる状態になったので、ゲイン入れは慎重に・薄くから。
- Step 4 — ωw→0 の外ループ(薄いゲイン)
- Step 5 — 評価 CSV+グラフで Before/After
正本:
rw-pendulum-wheel-bias.md
| コード:
src_balance_atom/main.cpp
| 評価:
JC4827 無線コンソール
前:
ミニ④’ 片側回転調査
|
プロジェクト概要