ラジコン「働く車」の自動運転ーPart2 模倣学習 「ショベルカー」


 こんにちは。

 前回のブログでは、ラジコン「働く車」の自動運転の概要を紹介しました。今回はラジコンのショベルカーの自動操作について紹介したいと思います。

 強化学習を行うためには、ショベルカーのシミュレータが必要になります。しかし、ショベルカーの動きは三次元的で、土砂の移動も考慮する必要があるため、シミュレータの作成自体に時間がかかりそうです。そこで今回は、シミュレータを使用せずに、エキスパートデータ(熟練者の操作記録、エキスパートの行動軌跡)のみで学習を行う「模倣学習」(Imitation Learning)を用いて、ショベルカーの自動操作を行いたいと思います。

 センサーとして使用するのは「1台のカメラ」のみです。カメラ画像のみを使用しているので、模倣学習の中でも、「見まね学習」(learning by watching)と言われるジャンルの学習方法になります。

 

1 ショベルカーを動かす環境

 図1は、コンピュータとショベルカーの連携図です。はじめに、キーボードを使って、人(熟練者)がショベルカーを操作し、その時のカメラ画像と人の操作(行動)を、「操作記録データ」(エキスパートデータ)として保管します。次に、このエキスパートデータをコンピュータが学習し、最終的にコンピュータがショベルカーを自動操作するという流れになります。


コンピュータとショベルカーの連携

図1 コンピュータとショベルカーの連携

 図2は、コンピュータに接続したカメラの画像例です。このカメラ画像がエキスパートデータとして保管されます。ショベルカーの自動操作では、カメラからリアルタイムに届くこの画像のみを使って、コンピュータがショベルカーを自動操作します。


模倣学習用のカメラ画像例

図2 カメラ画像例

 図2の右下にある白い粉のようなものは、運ぶ「土砂」の代用品です。白いストローを細かく切ったようなパイプ枕の中身を、土砂の代用品として使っています。当初は、シュレッダーの紙くずを土砂の代用品にしようと考えていましたが、紙くずは意外に硬く、ショベルカーのバケットの刃先が紙くずの中に入らないことがわかりました。試してみないとわからないことが多いです。

 このパイプ枕は、ブルドーザで課題があることが(あとで)わかりましたが、このままパイプ枕を土砂の代用品として使用します。

 ショベルカーは、このパイプ枕の中身をすくって、ダンプカーの荷台に積み込むことを目標としています。

 図3は、ショベルカーを動かすための環境です。右上にある1台のWEBカメラで、ショベルカーの動作画像を取得します。


模倣学習でコンピュータを使ってショベルカーを動かす環境

図3 ショベルカーを動かす環境

 

2 自動操作までの流れ

 次ような手順で、ショベルカーの操作を学習していきます。


(1) エキスパートデータの作成

 ショベルカーは土砂をすくって、ダンプカーの荷台に土砂を積み込むことを目標としています。はじめに、この操作をエキスパート(人)が行い、その操作記録をデータとして保管します。具体的には次の通りです。

①エキスパートがキーボードを操作し、ショベルカーを動かす。

 ショベルカーはキーボードの操作でも動くように設定されています。ショベルカーが土砂をすくって、ダンプカーの荷台に積み込むように、エキスパートがキーボードを(正確に)操作します。このとき、カメラ画像とその操作内容をエキスパートデータとして保管します。

②上記の①の操作を10回繰り返し、エキスパートデータを10種類作成します。

 この10種類のエキスパートデータをもとに、コンピュータが学習を行います。

 図4-1は、キーボードを操作し、エキスパートデータを作成しているときの様子です。図4-2は、キーボードを使ってショベルカーを(人が)操作しているときの動画です。この動画はスマートフォンで撮ったもので、WEBカメラの画像ではありません。キーボードを使ったショベルカーの操作に(すでに)習熟しているので、無駄のない動きでショベルカー用のエキスパートデータを作成しています。


エキスパートがキーボードを操作し、ショベルカー自動操作のためのエキスパートデータを作成

図4-1 エキスパートデータの作成

図4-2 キーボードでショベルカーを操作(動画)


(2) エキスパートデータを読み込み学習を実行

 エキスパートデータを読み込んで学習を行います。図5は学習に使用するデータ例です。画像を時系列に並べて、全体で10画像程度を時系列データとして、1つの状態(インプットデータ)にしています。1ステップ(1アクション)は0.1秒とし、この画像の「状態」から、そのときの「行動」を学習します。


模倣学習用 データ構成例

図5 学習用データの構成例


(3) 推測の実行(自動操作)

 学習したモデルを使用して、カメラ画像からショベルカーの行動(アクション)をコンピュータで推測し、Raspberry Pi経由でショベルカーに指示を与えます。

 

3 ショベルカーの自動操作

 図6は、学習したモデルを使用して、コンピュータが自動でショベルカーを操作している動画です。「土砂をすくって、ダンプカーの荷台に積み込む」動作を3回繰り返したあと、終了します。1台のWEBカメラの画像のみで、この自動操作を実現しています。
 (土砂をダンプカーに積み込んだあと、ショベルカーを初期位置に一旦戻す処理をいれています。)

 実機の動作は、学習に使用したエキスパートデータとは常に微妙にずれていますが、1台のWEBカメラの画像のみでうまくコントロールされているようです。

図6 ショベルカーの自動操作(動画)

 

 今回はWEBカメラから取得した画像をINPUTデータ(センサーデータ)として学習に使用しましたが、他のセンサーデータ(音、振動、温度、圧力など)でも原理は同じですので、エキスパートデータ(熟練者の操作記録、エキスパートの行動軌跡)があれば、センサーデータが「ある状態」のとき、エキスパートが「とるべき行動」をコンピュータに学習させることが可能です。

 次回は、強化学習を使用した(ラジコン)ダンプカーの自動運転をご紹介したいと思います。