二つのリンクをつなげたハンドのリーチングを学習させました。

この時の設定やプログラムの忘備録です。

以下、作成したゲームオブジェクトです。

リーてぃんぐのTargetはシンプルです。cube を作っただけで、Rigid Bodyは作っていません。Box Collidorはついています(はじめからついていたんだっけ?)。

ハンドは、中心の土台のBaseと、Link1、Link2、そして青の先端部 Endeffectorからなります。

Link1は、HingeでBaseにつながっています。
Link2は、HingeでLink1につながっています。
Endeffectorは、FixedJointでLink2につながっています。

Link1のHingeの設定です。

Use Spring にチェックを入れ、Springの設定をしています。
プログラムから、Target Positionを動かすことでハンドを動かします。

Link2も同様です。

Agentの設定をしているのは、Endeffectorです。

Script は、Roller Agent です(エージェント名が初めにやったもののままでした)。

Agentの観測は、Targetの座標と、Hinge1、Hinge2の角度です(Target Position)。

設定ファイルは、
ML-Agents/config/config.yaml に保存しました。

動作を確認してから、
全体をプレファブにして、16個並べました。

PPOを使って学習させたら、すぐに学習できました(10分くらいだったような)。

resumeを使うと、追加で学習させることができます。