こんにちは。
昨年、ボールコントロールについてのブログを書きました。今回はAIを使用して、ラジコンの「働く車」の自動運転や自動操作に挑戦したいと思います。
ここ数年、「車の自動運転」が注目されていますが、自動運転の実験に本物の車を使用するのは、コストや安全面からみて非常に敷居が高いため、ラジコン玩具の「働く車」を使用して自動運転に挑戦したいと思います。
ラジコンの「働く車」は、子供が楽しく遊べる玩具として数千円程度で販売されていますが、その機能は驚くほど充実しています。「ショベルカー」にいたっては、ロボットアームの簡易版といった代物で、台座(上部旋回体)の回転や、アーム、バケットの上げ下げなど、「数千円でよくぞここまで!」という驚きの機能をもっています。
Part1では、ラジコンの「働く車」の自動運転の概要を説明したいと思います。
1 全体像
図1は、今回挑戦するラジコンの「働く車」を使った自動運転の全体像です。
(1)初めにショベルカーを使って、土砂をダンプカーに積み込みます。
(2)次に、ダンプカーが目的の位置まで土砂を運搬します。
(3)最後に、ホイールローダが、ダンプが降ろした土砂をならします。
この(1)~(3)までの流れを連携して動かすことにより、土砂を運んでならしていきます。
図1 全体像
2 働く車のコントロール方法
通常、図2のように、ラジコンに付属しているコントローラを人が操作して、「働く車」を動かします。
今回は、ラズベリーパイ(Raspberry Pi)を直接コントローラにつなげて、コンピュータから信号をコントローラに送ることにより、「働く車」を動かします(図3)。コンピュータ制御で使用するセンサー機材は、今回はカメラのみです。
図2 子供がラジコン機器をコントロール
図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に記載した以外にも沢山あるようです。
図4 制御学習方法の分類例
シミュレータが既にある、あるいはシミュレータを作成することができれば、「強化学習」(Reinforcement learning)という手法を利用することができます。エキスパートデータを使用することができれば、「模倣学習」(Imitation Learning) という手法も利用することもできます。
逆強化学習は、エキスパートデータをもとに、あるべき「報酬」を推察し、その報酬を用いて強化学習を行う手法です。
見まね学習、予測学習はシミュレータを使用できない場合に、エキスパートデータのみで学習できる、とても有力な手法です。見まね学習は、WEBカメラで見た映像をもとに、動作を真似る手法です。
図5は、ショベルカー、ダンプカー、ホイールローダの制御手法です。
ダンプカー、ホイールローダは、前進、バック、回転の機能をもった車のシミュレータを作成し、一般的な強化学習で進めました。
しかしショベルカーは、シミュレータの動きが三次元的になり、土砂の移動も考慮する必要があるため、シミュレータの作成には時間がかかりそうなので、今回はシミュレータは使用せずに、エキスパートデータのみを利用する「見まね学習」(learning by watching)を行いました。ある作業を10回ほど(人が手動で)ショベルカーを動かして記録をとり、その記録をエキスパートデータとして使用しています。
図5 ラジコン機器の制御方法の分類
以上が「ラジコン働く車の自動運転」の概要です。
次回は、エキスパートデータを使用して「見まね学習」(模倣学習)を行い、ラジコンのショベルカーをコンピュータで自動操作してみたいと思います。