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