ラジコン「働く車」の自動運転ーPart1 概要説明編


 こんにちは。

 昨年、ボールコントロールについてのブログを書きました。今回はAIを使用して、ラジコンの「働く車」の自動運転や自動操作に挑戦したいと思います。

 ここ数年、「車の自動運転」が注目されていますが、自動運転の実験に本物の車を使用するのは、コストや安全面からみて非常に敷居が高いため、ラジコン玩具の「働く車」を使用して自動運転に挑戦したいと思います。

 ラジコンの「働く車」は、子供が楽しく遊べる玩具として数千円程度で販売されていますが、その機能は驚くほど充実しています。「ショベルカー」にいたっては、ロボットアームの簡易版といった代物で、台座(上部旋回体)の回転や、アーム、バケットの上げ下げなど、「数千円でよくぞここまで!」という驚きの機能をもっています。

 Part1では、ラジコンの「働く車」の自動運転の概要を説明したいと思います。

 

1 全体像

 図1は、今回挑戦するラジコンの「働く車」を使った自動運転の全体像です。

 (1)初めにショベルカーを使って、土砂をダンプカーに積み込みます。
 (2)次に、ダンプカーが目的の位置まで土砂を運搬します。
 (3)最後に、ホイールローダが、ダンプが降ろした土砂をならします。

 この(1)~(3)までの流れを連携して動かすことにより、土砂を運んでならしていきます。


WorkCar_01

図1 全体像

 

2 働く車のコントロール方法

 通常、図2のように、ラジコンに付属しているコントローラを人が操作して、「働く車」を動かします。
 今回は、ラズベリーパイ(Raspberry Pi)を直接コントローラにつなげて、コンピュータから信号をコントローラに送ることにより、「働く車」を動かします(図3)。コンピュータ制御で使用するセンサー機材は、今回はカメラのみです。


WorkCar_02

図2 子供がラジコン機器をコントロール


WorkCar_03

図3 コンピュータがラジコン機器をコントロール

 

3 ラジコンの働く車の弱点

 購入して動かしてみてわかったのですが、ラジコンの働く車を制御しようとすると、次のように、いくつか弱点が見えてきます。


〇弱点1
 電池の減りが速い。

 いずれのラジコン機材も充電式ですが、操作してると約15~20分程度で電池がきれます。電池がきれたら再び充電しなければならず、作業に「間」があきます。これは予備電池を複数準備することで対応しました。

〇弱点2
 電圧が一定ではない。

 これはけっこう大きな弱点で、充電直後は電圧が高く、次第に電圧が下がり、最後は電池切れで動かなくなります。初めはキビキビと動きますが、最後になると動きがおそくなり、制御の指示で止まっているのか、何らかのエラーが起きて止まっているのか、あるいは単に電池切れで止まっているのか、わけがわからない状態になります。
 この影響はショベルカーの制御で大きかったため、ショベルカーは電池ではなく、(携帯充電用の)5Vの電源を、直接ショベルカーに接続して安定化を図りました。


〇弱点3
 速い

 子供のおもちゃとしては正解かもしれませんが、走るスピードがとにかく速い。
 「前進ボタンを押すと、速度が徐々に上がっていく」ことを期待していたのですが、前進ボタンを押すと、すぐにTOPスピードに到達します。ホイールローダではなく、当初はブルドーザ型のラジコン機材を準備したのですが、これが速い。おそらくコストを下げるために、RCスポーツカーなどと同じモータやギアを使っているようにみえます。土砂の上をジャンプしていきそうなスピードです。ダンプカーやホイールローダも速く、「走るスピードが速い」ことに、今回は一番苦労しました。
 ダンプカーについてはギアに変更し、速度を調整しました。


〇弱点4
 グラグラする。

 ショベルカーは、走る機能を備えたロボットアームと言えるほど、とても高機能です。しかしながら、アーム(ブーム)は長く、かつプラスティックでできているので、ぐらつきます。台座の回転速度や、アームを動かすスピードも速いので(ゆっくりした操作はできない)、「アームなどの速い動き」と「ぐらつき」にうまく対処する必要があります。


〇弱点5
 指示は基本ONかOFF

 「働く車」への指示は、基本ONかOFF。すなわち「働く車」に与えるアクションデータは、+1、0、-1などの離散値となり、微妙なコントロールはできません。

 

4 ラジコン制御の学習方法

 制御に使用するセンサーは「RGBカメラ」のみです。深度カメラも使用していません。土砂に接触したかの圧力センサーや、ショベルカーのアームの角度センサーなども使用していません。それぞれの機材には、位置や方向を把握するためにARマーカ―を取り付けています。

 制御の学習をすすめるとき、「シミュレータを使用できるか?」、「エキスパートデータを使用できるか?」が制御手法を選定するための大きなポイントになります。

 もしシミュレータを使用できれば、そのシミュレータを使用して、何回も(何十万回も)学習を繰り返すことができます。シミュレータを使用できなければ、実機を使って直接学習をすすめることになりますが、実機は電池切れや故障があるので現実的ではありません。
 一方、熟練者の操作を学習して制御を行う方法もあります。エキスパートデータ(熟練者の操作記録)を読み込み、状況Sのときはある行動Aを行うように学習を行います。

 図4は、制御の学習手法について、シミュレータ使用の有無、エキスパートデータ使用の有無別に整理したものです。
  ※制御の学習手法は、図4に記載した以外にも沢山あるようです。


WorkCar_04

図4 制御学習方法の分類例

 シミュレータが既にある、あるいはシミュレータを作成することができれば、「強化学習」(Reinforcement learning)という手法を利用することができます。エキスパートデータを使用することができれば、「模倣学習」(Imitation Learning) という手法も利用することもできます。

 逆強化学習は、エキスパートデータをもとに、あるべき「報酬」を推察し、その報酬を用いて強化学習を行う手法です。
 見まね学習予測学習はシミュレータを使用できない場合に、エキスパートデータのみで学習できる、とても有力な手法です。見まね学習は、WEBカメラで見た映像をもとに、動作を真似る手法です。

 図5は、ショベルカー、ダンプカー、ホイールローダの制御手法です。
 ダンプカー、ホイールローダは、前進、バック、回転の機能をもった車のシミュレータを作成し、一般的な強化学習で進めました。
 しかしショベルカーは、シミュレータの動きが三次元的になり、土砂の移動も考慮する必要があるため、シミュレータの作成には時間がかかりそうなので、今回はシミュレータは使用せずに、エキスパートデータのみを利用する「見まね学習」(learning by watching)を行いました。ある作業を10回ほど(人が手動で)ショベルカーを動かして記録をとり、その記録をエキスパートデータとして使用しています。


WorkCar_05

図5 ラジコン機器の制御方法の分類

 

 以上が「ラジコン働く車の自動運転」の概要です。

 次回は、エキスパートデータを使用して「見まね学習」(模倣学習)を行い、ラジコンのショベルカーをコンピュータで自動操作してみたいと思います。