こんにちは。
前回のブログでは、ラジコン「働く車」の自動運転の概要を紹介しました。今回はラジコンのショベルカーの自動操作について紹介したいと思います。
強化学習を行うためには、ショベルカーのシミュレータが必要になります。しかし、ショベルカーの動きは三次元的で、土砂の移動も考慮する必要があるため、シミュレータの作成自体に時間がかかりそうです。そこで今回は、シミュレータを使用せずに、エキスパートデータ(熟練者の操作記録、エキスパートの行動軌跡)のみで学習を行う「模倣学習」(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データ(センサーデータ)として学習に使用しましたが、他のセンサーデータ(音、振動、温度、圧力など)でも原理は同じですので、エキスパートデータ(熟練者の操作記録、エキスパートの行動軌跡)があれば、センサーデータが「ある状態」のとき、エキスパートが「とるべき行動」をコンピュータに学習させることが可能です。
次回は、強化学習を使用した(ラジコン)ダンプカーの自動運転をご紹介したいと思います。