おーみんだよ。

おーみんだよ。

プログラミング(主にUnity)や気になるニュースについて。

【Unity】ML-Agentsを用いて動く物体を追従するAI飛行機を作る。

f:id:bookreadkun:20190325075251p:plain

おはようございます。おーみん(@Ooooooomin_365)です。

 

現在Unityで機械学習を勉強中です。

前回の記事ではある物体の方向へ動いていくAI飛行機を作成した内容を書きました。

【Unity】ML-Agentsを用いて物体を特定の位置へ行くよう機械学習させる。 - おーみんだよ。

 

今回の記事では前回止まっていた物体を動かして、その物体を追従するAI飛行機についてまとめていこうと思います。

 

 

 

 

Agents(AI飛行機)のプログラムは以下になります。

f:id:bookreadkun:20190327075502p:plain

f:id:bookreadkun:20190327075512p:plain

f:id:bookreadkun:20190327075522p:plain

f:id:bookreadkun:20190327075531p:plain

f:id:bookreadkun:20190327075540p:plain


プログラムの"Enemyplace"となっている部分がありますが、これが動く物体を指しています(当初は敵の位置への着陸を試みるためにこのようなオブジェクト名にしましたが、今は空母などへの着陸をイメージしているので後程オブジェクト名は変えようと思います(;^_^A


プログラムの説明も後程別記事で解説するので今回は簡単に。

37行目と63行目の関数はそれぞれAI飛行機と動く物体の操作に関するプログラムです。動く物体はZ座標上を行ったり来たりする様子になっています。

 

86行目の関数は、AI飛行機が画面の白いステージ外に出たら減点する設定。

 

113行目の関数内ではAI飛行機が動く物体を感知した際(OnTrigger機能)、物体に近づくほど高報酬を与える仕組みを作っています(最接近すると報酬を最高値である"1"にする)。

 

129行目の関数内では、物体を感知したのにも関わらずその感知範囲外に出てしまった時に減点をしています。この関数により、動く物体を感知した際はしっかり物体に追従しようとなるわけですな。

 

137行目の関数はAI飛行機がステージ外に出てしまったときに振り出しへ戻る設定。

 

今は単に動く物体の上空に来れただけなので、次はこの物体に着陸するAI飛行機を作っていこうと思います。

 

結構難しそうな気がしますが・・・まあ頑張りますw

 

では!