YouDuck.ai

ドメインランダム化

最終更新

ドメインランダム化は、学習中にシミュレーションの物理パラメータを変動させ、ポリシーが特定の一組の値に依存しないようにする手法です。

microduck_rl は環境ごとに次の 4 つをランダム化します。

ランダム化する量 理由
バッテリー電圧 満充電と残量僅少では出せるトルクが違う
負荷時の電圧降下 複数のサーボが同時に力を出すと電圧が落ち、歩容に直接効く
指令遅延 実際の制御経路には遅延があり、ポリシーはそれに耐える必要がある
摩擦の大きさ 個体差と摩耗

実装は src/mjlab_microduck/actuator/FrictionDRBamActuator です。

「ノイズを足す」とは違う

ここが最も混同されます。

物理パラメータのランダム化では、並列環境それぞれに違うロボットがいます。こちらは電圧が高め、あちらは摩擦が大きめ。ポリシーは分布全体で成立する制御方法を見つけなければなりません。

観測にガウスノイズを足す場合、ロボットは同一で読み値が揺れるだけです。ポリシーが学ぶのは「ノイズを無視すること」であって、「違う機体に適応すること」ではありません。

後者はセンサノイズには有効ですが、sim2real の核心的な問題は解決しません。シミュレーションと実機の差はノイズではなく、系統的なパラメータのずれだからです。

代償

範囲を広げるほど頑健になり、性能の上限は下がります。最悪ケースに余裕を残す必要があるためです。どこまで広げるかは実験すべき事柄で、大きいほど良いわけではありません。