こんにちは。
前回は、模倣学習を用いたショベルカーの自動運転を紹介しました。ショベルカーの操作になれたエキスパートが10回ほど操作を繰り返し、その操作内容を記録します。
次に、その記録データ(エキスパートデータ)をコンピュータが学習し、コンピュータがショベルカーを自動操作するという内容でした。
今回は強化学習を使用して、ダンプカーの自動運転に挑戦します。
強化学習は、何十万回と動作を試しながら、最善の行動をコンピュータが学習する方法です。多数回の試行を行うためには、動きにみあったシミュレータ(ソフトウェア)が必要となります。
シミュレータを相手に「何十万回も繰り返す」となると、学習に時間がかかって大変ですが、多数回繰り返すことで、今まで(人が)知らなかった行動も発見できるというメリットもあります。AlphaGoが世界TOP棋士に勝てたのも、この「何十万回と動作を試す」ことが大きな要因だと思います。
車を駐車場に停めるとき、「ハンドルの切り返し」を行うことがありますが、多数回の試行を行う強化学習では、この「切り返す」という技を自然に学習していきます。今回ご紹介するダンプカーも切り返しを行いながら目的地へ進んでいきます。
1 ダンプカーを動かす環境
図1は、コンピュータとダンプカーの連携図です。
はじめに、「ダンプ 移動シミュレータ」を使って強化学習を行います。コンピュータ内部で数十万回ダンプカーを動かしながら、その動きを学習します。
次に学習したネットワークの重みを使用し、カメラの画像をもとに、ダンプカー(実機)をコンピュータが自動運転します。
ラジコンのダンプカーは当初、移動速度がとても速かったため、後輪のギアを変更し速度を落としています。
この変更の影響は大きく、最終的にRaspberry Piをダンプカーに搭載し、Raspberry Piから直接、後輪の前進・後退、および前輪のハンドルを制御しています。この改修のおかげで速度は落ちましたが、前輪は+-15度しか切れない状況となりました。前輪へは0度(直進)、+-7.5度、+-15度の計5段階の指示が可能です。
図1 コンピュータとダンプカーの連携
図2は、コンピュータに接続したカメラの画像例です。カメラは真上に固定しています。
カメラ画像のARマーカをもとに、ダンプカーの位置や方向を逐次把握します。黄色い車両が、今回動かそうとしているダンプカーです。
図2 カメラ画像例
2 自動運転までの流れ
次ような手順で、ダンプカーが自動運転を学習していきます
(1) ダンプ 移動シミュレータの作成
ダンプカーの動きを数十万回繰り返すためには、シミュレータ(ソフトウェア)が必要になります。今回は次のような機能をもつ簡易的な「ダンプ 移動シミュレータ」を作成しました。
①後輪タイヤで前進、後退を行う。
後輪タイヤで前進、後退を行います。基本的には、前に進む、バックする、停止するの3パターンです。
②前輪タイヤでダンプカーの方向を決める。
前輪タイヤの向きで方向を決めます。前輪タイヤへは0度(直進)、+-7.5度、+-15度の角度を指示することができます。
ダンプカーは荷台の上げ下ろしができますが、ダンプカーの移動シミュレータには荷台の上げ下ろし機能はありません。実機での荷台の上げ下ろしは、「あるポイントに停止したら上げ下ろし動作を自動で行う」ように、プログラミングで実装しています。
(2) シミュレータを用いた強化学習の実行
図3はコンピュータ上で、「ダンプ 移動シミュレータ」を使用して学習している最中の動画です。
画面左下にある青い四角い箱は「出発車庫」、画面右下にある青い四角い箱は「到着車庫」をイメージしています。赤い部分はダンプカーの荷台です。
「到着車庫」にバックできれいに入ったら報酬を与えて、次に「出発車庫」にバックで戻ってきたら報酬を与えています。「出発車庫」にダンプカーが戻ってきたら1エピソードが終了です。「到着車庫」の位置は、エピソード毎に変更しています。
まだ学習途中なので壁にぶつかったりしていますが、切り返しも学習しつつあるようです。この学習をさらに続けていくと、ダンプカーはスムーズな動きを行うことができるようになっていきます。今回学習時間は、約15時間でした。
図3 ダンプシミュレータを使って強化学習を実行(動画)
(3) 実機の操作(自動運転)
強化学習の成果(ネットワークの重み)を使用して、真上に取り付けたカメラ画像をもとに、実機(ダンプカー)にコンピュータから指示を与えます。1ステップは0.1秒としています。
3 ダンプカーの自動運転
図4は、コンピュータが自動でダンプカーを運転している動画です。
土砂(パイプ枕)を積んだダンプカーが所定の位置まで移動し、土砂をおろした後、再びスタート地点に戻ってきています。
シミュレータで学習したとおりに動作しています。
図4 ダンプカーの自動運転(動画)
シミュレータでは、1エピソード毎に「到着車庫」の位置を変更しています。このような動きに対応できるのも、強化学習の強みと言えるのかもしれません。
おろした土砂を自動でならす(ラジコンの)ホイールローダについては、別の機会にブログでご紹介したいと思います。