Unity ML-Agentsを使って歩行者を回避する移動ロボットを作ってみた その2

2023年08月10日

こんにちは。M1の五月女です。 今回は前回の記事の続きの説明をしていきたいと思います。

前回はUnity上で歩行者を含む都市環境を作成し、その中で強化学習をすることによって、歩行者を回避する移動ロボットの走行モデルを作成しました。

前回までは学習環境として以下の4種類の環境を使用していました(環境はランダムに切り替わるわけではなく、4つのエージェントが同時に同じ環境で学習します)。 img

しかしながら、このように固定の環境で同時並行で学習を行うと、その環境に適応しすぎて、未知の環境に対応できなくなるという問題点があります。 また同時に別の環境で複数のエージェントを学習させると、学習に偏りが生まれてしまう恐れもあり、あまり好ましいとは言えません(1つの環境の方で報酬を稼ぎまくって、別の環境での学習が進まなくなることがある、ということです)。

そこで、今回は前回作成した環境A,B,C,Dに16パターンの学習環境を用意し、エピソード毎にランダムに切り替わるように変更を加えました。 それぞれの環境A~Dで、以下ような内容の学習を行いました。

■右側に車道がある状態での歩道上の直進 × 1

■左側に車道がある状態での歩道上の直進 × 1

■横断歩道上での直進 × 2

以上の4パターンを環境A~Dに配置して、合計4×4=16パターンとなります。

学習方法自体は前回と同様に、歩行者を3~4人ほど配置して学習させました。

今回は学習で使用した環境とは別の環境上でテストします。つまり、未知の環境でどれくらい走れるのかをテストします。 テストの内容に関しては、学習時と同様の内容です。以下のシチュエーション1~4の通りです。

■シチュエーション1:右側に車道がある状態での歩道上の直進

■シチュエーション2:左側に車道がある状態での歩道上の直進

■シチュエーション3,4:横断歩道上での直進

それぞれ100エピソード分ずつテストし、到達率を計測した結果、以下のような到達率となりました。

■シチュエーション1:66%

■シチュエーション2:93%

■シチュエーション3:83%

■シチュエーション4:84%

シチュエーション1がやや低い結果となりましたが、悪くない結果なのではないでしょうか。 シチュエーション1だけやや悪い結果となっているのは、よくよく見返してみると候補地点がどれも似通った環境しかなかったので、そこが原因かなと思います。この結果を良化させるためには、より異なる(似ていない)環境を候補地点として追加してあげないとダメかな、と考えています。

もう少し全体的に良い結果を出せた後には、ランダムな人の見た目で学習させたいな、と思っています(前回も似たようなことを言っていたかもしれません)。それらをどのように実装するかが今後の課題となるでしょう。 長期的な将来展望としては、遅くとも今年度中には実機のロボットに作成した走行モデルを適用させて、走らせてみたいなと考えています。