PWMマイクロサーボを真面目にモデリングしてみる
— PTK7465を同定してMuJoCoでSim2Real歩行 —

Home > 電子工作 > PWMマイクロサーボを真面目にモデリングしてみる — PTK7465を同定してMuJoCoでSim2Real歩行 —

本記事にはアフィリエイト広告が含まれます。

すき 0
うんこ 0

最近はAIエージェント Codexを使って方針や報酬設計丸投げの強化学習にハマっています。

PWMマイクロサーボを用いたロボでも結果が出ており大変に満足しております。

AIエージェント Codex で 強化学習2 起き上がりロボ

AIエージェント Codex で 強化学習3 起き上がり4脚ロボット

 

ここでは更に踏み込んでPWMマイクロサーボのモデリングについて考えます。

 

AudiostockでBGM・効果音を販売中!

PWMマイクロサーボ PTK 7465 MG

前出の起き上がりロボでは、強化学習結果の出力となる行動ベクトルをサーボモータの変化量にして、それほどスピードを求めない動作に収めたのでサーボのモデリングが雑でも問題がありませんでした。

しかし例えば4脚ロボットのバク転などの高速動作が必要な場合は、シミュレーション時にサーボモデルが大きく寄与します。
以下は実機の4脚ロボバク転動作をSim.でも実現できるようにサーボモデルを手で調整した結果です。

このモデル定数が実機に本当に一致しているかは不明ですが、定数を変えるとバク転ができなかったりとモデリングの重要性を十分に理解できました。
ちなみにSim.のMuJoCoモデルでサーボに<position>アクチュエータを用いて kp = 0.8, kv = 0.04 としました。

実機のモータはPWMマイクロサーボ PTK7465です。

PTK 7465 MG を用いた4脚ロボットの製法

ここではPWMマイクロサーボ PTK7465を真面目にモデリングして、シミュレーション・強化学習や設計に用いられるレベルにしたいと思います。

 

モータ同定

PTK7465をモデリングしていきます。

これまでに QDDモータとシリアルサーボモータはシステム同定してモデリングを実施したことがあります。

↓QDDモータをモデリングして強化学習実施

AIエージェント Codex で 倒立振子3 ーモータモデルの同定手法を確立ー

 

↓シリアルサーボモータをモデリングして強化学習実施

AIエージェント Codex で 強化学習4 車輪倒立振子

 

今回はPWMマイクロサーボの同定を実施するのですが、これまでと大きく違う問題がございます。
PWMサーボはエンコーダがないので回転位置をモータから入手することができません。

測定治具

そこで同定専用の測定治具をこしらえました。

サーボ回転軸に磁石を付けて磁気エンコーダで位置を測定できるようにしました。

 

測定治具でモータを動かして磁気エンコーダで回転位置を取得してログをとり、
Sim.上のサーボMuJoCoモデルのパラメータとフィッティングします。

フィッティング

治具で同定用のログデータを取得 (3種)
・ステップ応答:0 -> ±30° -> ±60° -> ±90°
・正弦波応答:振幅 20°, 40°  周波数 1.0~3.0 Hz

 

ログとMuJoCoサーボモデルの<position>アクチュエータの定数でフィッティング

当初の適当なパラメータからCodexにお願いして調整してフィッティングしてもらいました。
かなり実測に一致してますね。
forcerange (最大トルク)のみ PTK7465仕様の 5.5 kgf・cm @ 7.4Vから算出した値(±0.54 N・m)に固定しました。

<position>アクチュエータのパラメータは以下の通りになりました
kp:0.8 → 3.19
kv:0.04 → 0.0359
forcerange:±1.0 → ±0.54
<joint> damping:0.02 → 0.0531
<joint> armature:0.0001 → 5.42e-06

これによって遂に PWMマイクロサーボ PTK7465 のモデルが完成しました。

 

Wheel-legged ロボ

イイ感じのサーボモデルができたので、以前製作した Wheel-legged ロボ の歩行を検討したいと思います。

こちらの倒立モードと直立モードのある凄いロボ

ただ直立時の歩行がちょっと遅い。。。
シミュレーションで歩行を改善したいと思います。

MuJoCoモデルを作製し足もIKで動くようになりました。
使用している8個のサーボのパラメータは前節で同定した値としております。

足踏み動作探索

制作したMuJoCoモデルでCodexに最適動作を探索してもらいます。
足上げ、転倒、定位置保持、Yaw軸回転抑制で評価してもらって足踏み動作の探索をしてもらいました。

足が重いので足上げが厳しそうですがなんとか足踏みしています。

探索してもらった足踏み動作を実機に移植

Sim.と同じように動けていますが、実機では足が接触してしまい転ぶ。。。

 

評価に足の接触にペナルティを加えて再探索

足の接触はなさそうですが 足が更に上がらなくなったような。。。とりあえず実機に移植

たしかに足の接触が軽減され転ばなくはなりました。
Sim.モデルの精度は高そうです。

歩行動作探索

先ほどの足踏みをベースに歩行動作の探索をCodexに依頼

一応歩いてるけどねぇ。

実機に移植

やっぱダメだ。
足底の摩擦とかもモデリングしないときついな。
あとこのロボ足重すぎる。

 

2足歩行ロボット

ちょっと Wheel-legged ロボ がテーマとしてむず過ぎるので、足のタイヤをとって単純な2足歩行ロボにして出直します。

 

早速 歩行動作を探索

足が軽くなったのですごくスムーズな歩行になりました。

 

実機に移植

見事にSim. 同様のスムーズな歩行が実現されました。
PWMサーボとは思えないほどの素敵な歩行よ

 

旋回動作も同様に実施

Yaw軸のサーボがないのでかなりもたつくけど旋回のSim2Realも達成!

 

おわりに

ここでは測定治具をこしらえてPWMマイクロサーボ PTK7465の同定作業を行いモデリングを実施しました。

Wheel-legged ロボ はちょっと足が重すぎてうまくいきませんでしたが、PTK7465を用いた2足歩行ロボのSim2Realは非常にうまくいき、サーボのモデリング精度の高さとその有用性を確認することができました。

 

以後はこのサーボモデルをもとに色々新規設計や強化学習もできると思うので、またまた幅が広がり楽しみも増え大変嬉しいです。

次はYaw軸ありの2足歩行ロボに挑戦かな。

 

コメントはこちらから

メールアドレスが公開されることはありません。コメントのみでもOKです。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください