ラジコン「働く車」の自動運転ーPart3 強化学習 「ダンプカー」


 こんにちは。

 前回は、模倣学習を用いたショベルカーの自動運転を紹介しました。ショベルカーの操作になれたエキスパートが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エピソード毎に「到着車庫」の位置を変更しています。このような動きに対応できるのも、強化学習の強みと言えるのかもしれません。

 おろした土砂を自動でならす(ラジコンの)ホイールローダについては、別の機会にブログでご紹介したいと思います。