4-4 Raycast Observation
「Raycast Observation」では、エージェント周囲にレイ(光線)を飛ばした時のオブジェクトとヒットした場所と距離を「観察」として利用します。
Raycast Observationとは
「Raycast Observation」のデータ型を図で示すと、次のような「浮動小数配列」になります
レイとオブジェクトが衝突した場合はヒット数が「1」、ミスが「0」となり、エージェントとヒット場所との距離が保存されます。衝突しなかった場合はヒット数が「0」、ミスが「1」となり、距離も「0」になります。
オブジェクトとレイの個数やレイをどの方向へ照射するかの判断は、環境に応じて人間が決定します。
Raycast Observationの実装手順
①レイの衝突判定を行うオブジェクトにタグを指定
②「Ray Perception Sensor Component 3D」または「Ray Perception Sensor Component 2D」の追加
3D用または2D用にレイキャストを観察として利用するためのコンポーネント
Raycast Observationの学習環境の準備
以前作成した学習環境「RollerBall」をカスタマイズして「RaycastObservation」で学習します
学習環境の強化学習の要素を以下のように変更します。
| 観察 | ・Raycast Observation |
| 行動 | ・Discrete(サイズ1) 0:移動(0:なし,1:前進,2:後進,3:左回転,4:右回転) |
「Raycast Observation」は進行方向にレイを飛ばすので、進行方向を赤鼻で示すエージェント(RaycastAgent)に変更します。
学習環境のカスタマイズの手順は、次のとおりです。
Targetのタグの指定
RaycastAgentのボディ(Rigidbody・Material)の追加
RaycastAgentの赤鼻の追加
エージェントのコンポーネントの追加
①「RaycastAgent」に「Behavior Parameters」を追加
「Vector Observation」は使わないので、「Space Size」を「0」にします。行動はサイズ「1」で値の範囲「0 ~ 4」のDiscreteな行動を指定します。