Blog
はじめに
はじめまして。PFNで夏季インターンに続き、アルバイトをしている宮下恵です。普段は東京農工大学大学院で強化学習に関する研究をしており、ものづくりやロボットに興味があります。
「実センサを搭載したロボットカーの深層強化学習による自律制御」について報告させていただきます。
背景
パーソナルモビリティ・移動ロボットは様々な領域で注目されています。具体的には家庭内でのヘルパーロボット、工場内での無人搬送車などが挙げられます。これらのロボットは臨機応変に対応することが重要です。このような、知能を持つ実用的な移動ロボットシステムを作ることが今回のシステムの目的です。
PFNでも過去に移動ロボットのデモ(分散深層強化学習によるロボットカー制御、CES2016のロボットカー)を発表しています。こちらは先ほどご紹介したデモで開発したシステムを発展させたものです。これらのデモは深層強化学習をベースとして良い運転を学習させていました。
インターンの期間では過去のデモをより実用に近づけるテーマに取り組みました。
本テーマの概要とこれまでのデモとの違い
これまで開発されたロボットカーをより実用的にする上で、主に以下の3点が考えられます。
- ロボットカーに実センサを搭載すること
これまでのロボットカーは実センサを載せることができなかったため、天井カメラで車の位置を認識し、その結果から外部PCによるシミュレーションで仮想的なセンサ情報を生成していました。今回は実センサを搭載することで想定外の障害物が現れても回避できるように改良します。その一方で、検知した物体を区別できない難しさがあります。これまでは障害物と壁を区別して検知できる設定でしたが、今回はそのような区別ができません。 - ロボットカーの中で処理を完結させること
これまでは外部のサーバ上で推論を行い、得られた結果をロボットカーに送っていました。今回は推論もロボットカー上で行います。 - ロボットカー内部での自己位置推定
地図上で指定されたルートとの距離を測るためには自車位置の認識が必要となります。本テーマでは自己位置推定を実現し、様々な応用ができることを目標にします。
問題設定
ロボットカーの目標(報酬)は以下の2つです。
- 決められたルートに沿ってなるべく速く走ること
- 障害物や壁にぶつからずに走ること
この問題を強化学習を使って解いています。行動は前、右前、右、右後ろ、後ろ、左後ろ、左、左前、ブレーキの9種類です.LIDARで検知した物体までの距離、過去の行動、モータ制御命令の3種類の状態を入力して、いずれかの行動を選択します。
学習はシミュレータ上だけで行い、実機では学習済みのニューラルネットを用いて行動を選択します。強化学習の実装にはChainerRLを利用しています。
全体の構成
シミュレータ上で学習させたニューラルネットをあらかじめ用意しておきます。ロボットカーでは以下を繰り返し行います。
- センサ情報の取得
ロボットカーの前方に搭載されたLIDARから物体までの距離を検知します。 - 行動の選択
Raspberry Pi上で、3種類の状態を学習済みのニューラルネットに入力して行動を選択します。 - モータ制御命令の送信
選択した行動を元に、Raspberry PiからEV3にモータ制御命令を送ります。
まとめ
実センサを搭載し、かつ、ロボットカーの内部で処理が完結したシステムを構築することができました。このようなシンプルな構成で動作することが実証できたため、今後無人搬送車やパーソナルモビリティなどへの応用も考えられます。また、ロボットカーが自律であるため、簡単に動作させられるという利点があります。
さらに、冒頭の動画のように動く障害物を回避しながらルートに沿って走ることができました。しかし、まだ学習は完全ではなく衝突することもあるため、改善の余地は残っています。また、自己位置推定も様々な環境に対応できるようにはなっておらず、今後も改良の必要があります。
このテーマはメンターの皆様をはじめ、社員の方々に教えていただきつつ、進めておりました。この場をお借りしてお礼申し上げます。実機としての安定性や学習の改善など、まだまだ改良できる点があるので、応用を見据えながら今後も開発を進めていきたいと考えています。