WEBカメラのみを使用し、AI(模倣学習)でラジコン「ショベルカー」を自動運転。「ショベルカー」こんにちは。前回のブログでは、ラジコン「働く車」の自動運転の概要を紹介しました。今回はラジコンのショベルカーの自動操作について紹介したいと思います。強化学習を行うためには、ショベルカーのシミュレータが必要になります。ショベルカーの動きは三次元的で、土砂の移動も考慮する必要があるため、シミュレータの作成自体に時間がかかりそうです。Learning)を用いて、ショベルカーの自動操作を行いたいと思います。センサーとして使用するのは「1台のカメラ」のみです。watching)と言われるジャンルの学習方法になります。図1は、コンピュータとショベルカーの連携図です。はじめに、キーボードを使って、人(熟練者)がショベルカーを操作し、その時のカメラ画像と人の操作(行動)を、「操作記録データ」(エキスパートデータ)として保管します。次に、このエキスパートデータをコンピュータが学習し、最終的にコンピュータがショベルカーを自動操作するという流れになります。図2は、コンピュータに接続したカメラの画像例です。このカメラ画像がエキスパートデータとして保管されます。ショベルカーの自動操作では、カメラからリアルタイムに届くこの画像のみを使って、コンピュータがショベルカーを自動操作します。図2の右下にある白い粉のようなものは、運ぶ「土砂」の代用品です。白いストローを細かく切ったようなパイプ枕の中身を、土砂の代用品として使っています。当初は、シュレッダーの紙くずを土砂の代用品にしようと考えていましたが、紙くずは意外に硬く、ショベルカーのバケットの刃先が紙くずの中に入らないことがわかりました。試してみないとわからないことが多いです。このパイプ枕は、ブルドーザで課題があることが(あとで)わかりましたが、このままパイプ枕を土砂の代用品として使用します。ショベルカーは、このパイプ枕の中身をすくって、ダンプカーの荷台に積み込むことを目標としています。図3は、ショベルカーを動かすための環境です。右上にある1台のWEBカメラで、ショベルカーの動作画像を取得します。自動操作までの流れ次ような手順で、ショベルカーの操作を学習していきます。エキスパートデータの作成ショベルカーは土砂をすくって、ダンプカーの荷台に土砂を積み込むことを目標としています。はじめに、この操作をエキスパート(人)が行い、その操作記録をデータとして保管します。具体的には次の通りです。1エキスパートがキーボードを操作し、ショベルカーを動かす。ショベルカーはキーボードの操作でも動くように設定されています。ショベルカーが土砂をすくって、ダンプカーの荷台に積み込むように、エキスパートがキーボードを(正確に)操作します。このとき、カメラ画像とその操作内容をエキスパートデータとして保管します。2上記の1の操作を10回繰り返し、エキスパートデータを10種類作成します。この10種類のエキスパートデータをもとに、コンピュータが学習を行います。図4-1は、キーボードを操作し、エキスパートデータを作成しているときの様子です。図4-2は、キーボードを使ってショベルカーを(人が)操作しているときの動画です。この動画はスマートフォンで撮ったもので、WEBカメラの画像ではありません。キーボードを使ったショベルカーの操作に(すでに)習熟しているので、無駄のない動きでショベルカー用のエキスパートデータを作成しています。エキスパートデータを読み込み学習を実行エキスパートデータを読み込んで学習を行います。図5は学習に使用するデータ例です。画像を時系列に並べて、全体で10画像程度を時系列データとして、1つの状態(インプットデータ)にしています。1ステップ(1アクション)は0.1秒とし、この画像の「状態」から、そのときの「行動」を学習します。Pi経由でショベルカーに指示を与えます。図6は、学習したモデルを使用して、コンピュータが自動でショベルカーを操作している動画です。「土砂をすくって、ダンプカーの荷台に積み込む」動作を3回繰り返したあと、終了します。1台のWEBカメラの画像のみで、この自動操作を実現しています。(土砂をダンプカーに積み込んだあと、ショベルカーを初期位置に一旦戻す処理をいれています。)実機の動作は、学習に使用したエキスパートデータとは常に微妙にずれていますが、1台のWEBカメラの画像のみでうまくコントロールされているようです。)でも原理は同じですので、エキスパートデータ(熟練者の操作記録、エキスパートの行動軌跡)があれば、センサーデータが「ある状態」のとき、エキスパートが「とるべき行動」をコンピュータに学習させることが可能です。次回は、強化学習を使用した(ラジコン)ダンプカーの自動運転をご紹介したいと思います。