ドメインランダム化
最終更新
ドメインランダム化は、学習中にシミュレーションの物理パラメータを変動させ、ポリシーが特定の一組の値に依存しないようにする手法です。
microduck_rl は環境ごとに次の 4 つをランダム化します。
| ランダム化する量 | 理由 |
|---|---|
| バッテリー電圧 | 満充電と残量僅少では出せるトルクが違う |
| 負荷時の電圧降下 | 複数のサーボが同時に力を出すと電圧が落ち、歩容に直接効く |
| 指令遅延 | 実際の制御経路には遅延があり、ポリシーはそれに耐える必要がある |
| 摩擦の大きさ | 個体差と摩耗 |
実装は src/mjlab_microduck/actuator/ の FrictionDRBamActuator です。
「ノイズを足す」とは違う
ここが最も混同されます。
物理パラメータのランダム化では、並列環境それぞれに違うロボットがいます。こちらは電圧が高め、あちらは摩擦が大きめ。ポリシーは分布全体で成立する制御方法を見つけなければなりません。
観測にガウスノイズを足す場合、ロボットは同一で読み値が揺れるだけです。ポリシーが学ぶのは「ノイズを無視すること」であって、「違う機体に適応すること」ではありません。
後者はセンサノイズには有効ですが、sim2real の核心的な問題は解決しません。シミュレーションと実機の差はノイズではなく、系統的なパラメータのずれだからです。
代償
範囲を広げるほど頑健になり、性能の上限は下がります。最悪ケースに余裕を残す必要があるためです。どこまで広げるかは実験すべき事柄で、大きいほど良いわけではありません。