以下、発明の実施の形態を通じて本発明を説明するが、特許請求の範囲に係る発明を以下の実施形態に限定するものではない。また、実施形態で説明する構成の全てが課題を解決するための手段として必須であるとは限らない。
図1は、本実施形態に係る機械学習方法が行われるシステムの全体を説明するための概念図である。システムは、全体として、ニューラルネットワークの機械学習を行う機械学習装置として機能する。本実施形態において機械学習を行うニューラルネットワークは、与えられた地図情報と検出された移動体情報等を入力すると、移動ロボットが移動すべき目的地までの経路を出力するようコンピュータを機能させる経路生成ニューラルネットワーク(以下、経路生成NNと呼ぶ)である。
システムは、経路生成NNの第1学習ステップまでを行うシミュレーションPC300と、その後の第2学習ステップを行う移動ロボット100を含む。移動ロボット100は、無線ユニット700を介してインターネット600と接続されている。また、シミュレーションPC300およびシステムサーバ500も、インターネット600と接続されている。
ここでは、第1学習ステップを行う環境と第2学習ステップを行う環境とが離れた場所であって、インターネット600を介して互いに接続され得る環境を想定している。具体的には、シミュレーションPCで第1学習ステップまで学習した経路生成NNは、システムサーバ500を経由して移動ロボット100へ実装される。なお、インターネット600を介さず、着脱可能なメモリを利用して、経路生成NNをシミュレーションPC300から移動ロボット100へ移す構成であっても構わない。また、第1学習ステップを行う環境と第2学習ステップを行う環境とが近ければ、近接無線通信を利用することもできる。
第2学習ステップが行われる環境は、移動ロボット100が実際に運用される環境、あるいはそれに近い環境であることが望ましい。例えば、複数の移動ロボット100のそれぞれを別々の環境で運用することを予定している場合は、まず、シミュレーションPC300で一括して経路生成NNに第1学習ステップの学習を行わせる。そして、各移動ロボット100へ当該経路生成NNを実装し、それぞれが運用される環境で第2学習ステップの学習を行わせると良い。
図2は、経路生成NNが実装される移動ロボットの一例である移動ロボット100の外観を示す斜視図である。移動ロボット100は、大きく分けて台車部110と本体部120によって構成される。台車部110は、円筒形状の筐体内に、それぞれが走行面に接地する2つの駆動輪111と1つのキャスター112とを支持している。2つの駆動輪111は、互いに回転軸芯が一致するように配設されている。それぞれの駆動輪111は、不図示のモータによって独立して回転駆動される。キャスター112は、従動輪であり、台車部110から鉛直方向に延びる旋回軸が車輪の回転軸から離れて車輪を軸支するように設けられており、台車部110の移動方向に倣うように追従する。
台車部110は、上面の周縁部にレーザスキャナ133を備える。レーザスキャナ133は、水平面内の一定の範囲をステップ角ごとにスキャンして、それぞれの方向に障害物が存在するか否かを出力する。さらに、障害物が存在する場合には、その障害物までの距離を出力する。移動ロボット100は、レーザスキャナ133の連続する出力を解析することにより、障害物が動作しているか否か、動作している場合にはその動作方向およびその速度を把握することができる。
本体部120は、主に、台車部110の上面に搭載された胴部121、胴部121の上面に載置された頭部122、胴部121の側面に支持されたアーム123、およびアーム123の先端部に設置されたハンド124を備える。アーム123とハンド124は、不図示のモータを介して駆動され、様々な物体を制御された姿勢で把持する。胴部121は、不図示のモータの駆動力により、台車部110に対して鉛直軸周りに回転することができる。胴部121の上部には、円周方向に押圧ユニット143が設けられている。押圧ユニット143は、円周方向に沿って複数の押圧スイッチが整列された円環状の押圧スイッチ群である。押圧ユニット143は、胴部121に対して放射方向のどの方向から押されたかを検出する。
頭部122は、主に、ステレオカメラ131、マイク132および表示パネル141を備える。ステレオカメラ131は、同じ画角を有する2つのカメラユニットが互いに離間して配置された構成を有し、それぞれのカメラユニットで撮像された撮像信号を出力する。マイク132は、周辺環境で発生する音や使用者の声を音声信号に変換する。表示パネル141は、例えば液晶パネルであり、設定されたキャラクターの顔をアニメーションで表示したり、移動ロボット100に関する情報をテキストやアイコンで表示したりする。
頭部122は、不図示のモータの駆動力により、胴部121に対して鉛直軸周りに回転することができる。したがって、ステレオカメラ131は、任意の方向の対象物を撮像することができ、また、表示パネル141は、任意の方向へ向けて表示内容を呈示することができる。移動ロボット100は、ステレオカメラ131で撮像された撮像信号を解析することによっても、周囲の障害物までの距離や方向、障害物が動作する場合にはその動作方向およびその速度を把握することができる。
図3は、移動ロボット100の制御ブロック図である。制御部150は、例えばCPUであり、例えば胴部121に備えられたコントロールユニットに格納されている。台車駆動ユニット145は、駆動輪111と駆動輪111を駆動するための駆動回路やモータを含む。制御部150は、台車駆動ユニット145へ駆動信号を送ることにより、駆動輪の回転制御を実行する。また、制御部150は、台車駆動ユニット145からエンコーダ等のフィードバック信号を受け取って、台車部110の移動方向や移動速度を把握する。
上体駆動ユニット146は、アーム123およびハンド124を含む把持部、胴部121および頭部122と、これらを駆動するための駆動回路やモータを含む。制御部150は、上体駆動ユニット146へ駆動信号を送ることにより、把持動作や姿勢変更を実現する。また、制御部150は、上体駆動ユニット146からエンコーダ等のフィードバック信号を受け取って、アーム123およびハンド124の位置や移動速度、胴部121および頭部122の向きや回転速度を把握する。
表示パネル141は、制御部150が生成した画像信号を受信して表示する。制御部150は、上述のように、キャラクター等の画像信号を生成して、表示パネル141へ表示させる。表示パネル141がタッチパネルを備える場合には、表示パネル141は、タッチ信号を制御部150へ送信する。
ステレオカメラ131は、制御部150からの要求に従って周辺環境を撮像し、撮像信号を制御部150へ引き渡す。制御部150は、撮像信号を用いて画像処理を実行する。マイク132は、周辺環境で発生する音や使用者の声を音声信号に変換して制御部150へ引き渡す。レーザスキャナ133は、制御部150からの要求に従って移動方向に障害物が存在するか否かを検出し、その結果である検出信号を制御部150へ引き渡す。ステレオカメラ131およびレーザスキャナ133は、移動ロボット100の周囲で動作する障害物を検知する検知部としての機能も担う。
メモリ180は、不揮発性の記憶媒体であり、例えばソリッドステートドライブが用いられる。メモリ180は、移動ロボット100を制御するための制御プログラムや第2学習ステップを実行するための機械学習プログラムの他にも、制御や演算に用いられる様々なパラメータ値、関数、ルックアップテーブル等を記憶している。メモリ180は、特に、自律移動することが予定されている空間を記述した地図情報のデータベースである地図DB181と、学習中のあるいは学習済みの経路生成NN200の記憶領域を含む。
地図DB181は、例えばシステムサーバ500から送られてくる地図情報を蓄積する。制御部150は、移動ロボット100が存在する地図情報を地図DB181から読み出して参照する。経路生成NN200は、第2学習ステップの機械学習を開始するに当たり、上述のようにシステムサーバ500から送られてきたものである。あるいは、移動ロボット100の運用段階においては、他の移動ロボット100により同一環境で第2学習ステップの機械学習が行われた、学習済みの経路生成NNのコピーであっても良い。制御部150は、学習段階において第2学習ステップの機械学習を行う場合、および運用段階において目的地までの経路を決定する場合に、経路生成NN200をメモリ380から読み出して後述する演算を行う。
押圧ユニット143は、円環状に配置された複数の押圧スイッチのうち、どのスイッチが押圧されたかを示す押圧信号を出力する。制御部150は、受け取った押圧信号から、押圧ユニット143が放射方向のどの方向から押されたかを認識する。通信ユニット190は、例えば無線LANユニットであり、無線ユニット700との間で無線通信を行う。通信ユニット190は、システムサーバ500から送られてくる地図情報や経路生成NN200を制御部150へ引き渡す。
制御部150は、メモリ180から読み出した制御プログラムや機械学習プログラムを実行することにより移動ロボット100全体の制御と処理とを実行する。制御部150は、制御と処理に関わる様々な演算を実行する機能演算部としての役割も担う。学習部151および演算部152は、機能演算部の例である。学習部151は、メモリ380から学習中の経路生成NN200を読み出して、第2学習ステップの機械学習を実行する。演算部152は、メモリ380から学習済みの経路生成NN200を読み出して、目的地まで到達する経路を演算する。
図4は、シミュレーションPC300の制御ブロック図である。演算部350は、例えばCPUであり、シミュレーションPC300の全体を制御する。ディスプレイ341は、例えば液晶パネルであり、演算部350が生成した画像信号を表示する。入力ユニット342は、例えばディスプレイ341に重畳されたタッチパネルや、キーボードやマウスであり、使用者の操作入力を電気信号に変換して演算部350へ引き渡す。
メモリ380は、不揮発性の記憶媒体であり、例えばソリッドステートドライブが用いられる。メモリ380は、移動ロボット100を制御するための制御プログラムや第1学習ステップを実行するための機械学習プログラムの他にも、制御や演算に用いられる様々なパラメータ値、関数、ルックアップテーブル等を記憶している。メモリ380は、特に、学習中あるいは学習前の経路生成NN200の記憶領域を含む。演算部350は、メモリ380から学習中または学習前の経路生成NN200を読み出して、第1学習ステップの機械学習を実行する。
通信ユニット390は、例えば有線LANユニットであり、インターネット600への接続を実現する。通信ユニット390は、第1学習ステップの学習を終えた経路生成NN200をシステムサーバ500へ引き渡す。
次に、地図情報について説明する。地図情報は、対象空間の様子を記述するデータ構造を含む。図5は、対象空間を記述するデータ構造について説明する概念図である。
移動ロボット100が移動する対象空間は、移動ロボットが移動する移動平面として、複数のセルに区分されて二次元的に表現される。図の例では、移動平面は、横m個(mは2以上の自然数)、縦n個(nは2以上の自然数)の正方セルで区分されている。各セルは、移動平面の全体に対する位置を表わすアドレスが個別に割り当てられている。
図の例において、斜線で示されたセルは、対象空間において静止した障害物(以下、第1障害物と呼ぶ場合がある)が存在することを表わしている。すなわち、移動ロボット100は、斜線で示されたセルを通過できない。また、移動中に移動ロボット100の一部が斜線で示されたセルと干渉することも許されない。例えば、部屋の中央付近に置かれたテーブルや、壁際に設置されている棚や、部屋の四方の柱などは、第1障害物として、その位置と大きさに合わせて対応するセルが斜線にされている。
このようなデータ構造で表現された対象空間の移動平面に対して、移動ロボットの出発地(菱形のマーク)と目的地(星形のマーク)が与えられる。出発地を表わす菱形のマークは、移動ロボット(本実施形態では移動ロボット100)が占有する移動平面上での面積を考慮して、その大きさが定められる。すなわち、出発地にある菱形のマークを、その外形が斜線のセルに掛かることなく星形のマークの位置まで掃引できる経路のすべてが、移動経路の候補となる。そのような移動経路の候補のうち、どの経路が最適であるかを、使用者が決めて入力する。なお、ここでの使用者は、本機械学習の方法を用いたシステムを利用して学習データを提供する者であり移動ロボット100を実際に使用する者でも良いし、移動ロボット100を実際には使用しない補助者でも良い。
使用者がこの作業を繰り返すごとに、経路生成NN200の第1学習ステップのための教師データが生成される。すなわち、第1学習ステップのための教師データは、m×n個のセルに区分された移動平面に配置された第1障害物のレイアウトと、設定された出発地および目的地とを入力値とし、使用者によって決定された移動経路を正解の出力値とするものである。
図6は、第1学習ステップにおける教師データの生成について具体的に説明する説明図であり、シミュレーションPC300のディスプレイ341の様子を表わしている。
演算部350は、m×n個のセルに区分された移動平面に対して第1障害物をランダムに配置する。このとき、配置する第1障害物は、現実的に存在し得る障害物を想定して、その大きさや個数を予め制限しても良い。例えば、対象空間がオフィスであるときには、机やキャビネットなどの障害物が想定でき、工場内であるときには、工作機械や搬送装置などの障害物が想定できる。演算部350は、移動平面の枠内に第1障害物を斜線で描いて表示する。
演算部350は、更に、出発地と目的地の位置をランダムに決定して菱形のマーク(出発地)と星形のマーク(目的地)を表示する。出発地は、第1障害物が配置されていないセルから選択されて決定され、目的地は、第1障害物が配置されていないセルおよび第1障害物の周縁部のセルから選択されて決定される。上述のように、菱形のマーク大きさは、経路生成NN200が実装される移動ロボットの面積に対応して定められる。なお、移動平面の大きさ、第1障害物の制限、移動ロボットの大きさ等の基礎条件は、予め使用者によって指定される。
入力ユニット342としてディスプレイ341にタッチパネルが重畳されている。使用者は、図示するように「出発地から目的地までの経路を入力して下さい」などと促されると、菱形のマークをディスプレイ341上でドラッグして星形のマークまで移動させる。ドラッグにより生成された軌跡は、ラインとして表示される。演算部350は、決定ボタンがタッチされたら、この軌跡を使用者によって決定された移動経路の正解として記録する。なお、演算部350は、ドラッグ中に菱形のマークが斜線で表わされた第1障害物と接触した場合には、再試行を使用者に要求する。
演算部350は、このように生成された第1障害物のレイアウト、出発地、目的地および正解の移動経路のセットを一つの教師データとしてメモリ380に記録する。演算部350は、予め定められた数の教師データが揃うまで、あるいは使用者が打ち切りを指示するまでこの作業を繰り返し使用者に行わせる。
図7は、第1学習ステップのうち経路生成NN200が教師データを用いて学習する学習の概念を説明する図である。図6で示す作業を繰り返して教師データが準備されたら、経路生成NN200を教師あり学習により学習させる。ここで経路生成NN200に与える入力値は、上述のように、m×n個のセルに区分された移動平面に配置された第1障害物のレイアウトと、設定された出発地および目的地であり、動作する障害物は存在しないものとする。演算部350は、学習中の経路生成NN200が出力する移動経路と、正解の移動経路との誤差を評価し、当該誤差が減るように誤差逆伝播法を用いて各エッジの重みを更新する。誤差の評価は、例えば、出発地と目的地の間に等間隔で設けられる基準点同士の距離の総和で行い、当該総和が小さいほど正解に近い移動経路と評価する。
上述の例では、教師データが一定数揃ってから纏めて経路生成NN200の学習を行ったが、演算部350は、教師データが生成されるたびに経路生成NN200の学習を行っても良い。第1学習ステップを終えた経路生成NN200は、上述のようにインターネット600を経由して、移動ロボット100に実装される。
図8は、第2学習ステップにおける学習の様子を示す概念図である。第2学習ステップが行われる環境は、上述のように、移動ロボット100が実際に運用される環境、あるいはそれに近い環境であることが望ましい。すなわち、第2学習ステップは、移動ロボット100の将来の運用に合わせて、実際の環境あるいは類似する環境において、現実に発生し得る動作する障害物(以下、第2障害物と呼ぶ場合がある)への対処を学習するステップである。なお、第2学習ステップを行う使用者は、第1学習ステップを行った使用者と異なっていても構わない。また、移動ロボット100の付近に居る者が行っても良いし、移動ロボット100から離れている者が行っても良い。
移動ロボット100は、第2学習ステップを行う空間の地図情報を取得している。すなわち、m×n個のセルに区分された移動平面に、実際に配置されているテーブルや柱などの第1障害物が記述された地図情報を、地図DB181に有している。例えば、図示されているテーブル900は、第1障害物として地図情報に記述されている。
学習部151は、現在地を出発地とし、第1障害物が配置されていないセルおよび第1障害物の周縁部のセルからランダムに選択したセルを目的地として設定する。そして、経路生成NN200を用いて目的地までの移動経路を生成する。移動経路を生成したら、台車駆動ユニット145へ駆動信号を送信し、当該移動経路に沿って移動ロボット100を移動させる。
例えば、目的地が図中の容器910の近傍に対応するセルである場合に、地図情報に記述されていない第2障害物が環境中に存在しなければ、移動ロボット100は、経路生成NN200が決定した移動経路に沿った点線の白抜き矢印方向へ進む。しかし、ステレオカメラ131またはレーザスキャナ133によって移動方向に動作する並存者を検出した場合には、学習部151は、その旨を指示者である使用者に知らせて、進むべき方向の指示を仰ぐ。なお、並存者は、移動ロボット100が移動する環境中に並存し得る人物であり、移動ロボット100にとっては第2障害物の一つである。
使用者は、状況を認識した上で、移動ロボット100が第2障害物と接触しないように、回避すべき方向を移動ロボット100へ示す。ここでは、使用者は、回避すべき方向へ向かって押圧ユニット143を押すことにより、移動ロボット100へ当該方向を示す。学習部151は、押圧ユニット143が押された方向を取得して、例えば実線の白抜き矢印で示すように、回避すべき方向を認識する。学習部151は、認識した回避方向に基づいて、第2障害物を回避して目的地に到達する移動経路を計算する。
使用者は、このように押圧ユニット143を回避方向へ押すことにより、直接的あるいは間接的に目的地に到達するまでの移動経路の少なくとも一部を示していると言える。使用者による移動経路の少なくとも一部の示し方は、押圧ユニット143の押圧に限らず、様々な方法を採用し得る。例えば、学習部151は、ステレオカメラ131の出力画像から使用者が示す動作を解析してその方向を認識することもできる。一例としては、学習部151は、使用者が指を差した方向や、ジェスチャーで示した方向を回避方向と認識する。あるいは、学習部151は、マイク132が出力する音声信号から使用者が発する音声を解析してその方向を認識することもできる。一例としては、学習部151は、「45度右へ旋回しろ」などの音声から回避方向と認識する。
また、移動ロボット100が押圧力とその方向を検出できるグリップを備えるような場合には、学習部151は、使用者が当該グリップを把持して移動ロボット100に加える力とその方向を解析して回避方向と認識することもできる。このようなグリップを備えて使用者の押圧方向を継続して検出する場合や、音声やジェスチャーを継続して解析する場合には、学習部151は、単に回避方向を認識するだけでなく、使用者によって示される回避経路として認識することもできる。
第2障害物は、環境中に並存し得る人物に限らず、他の移動ロボットや屋内モビリティ、ロボットアーム、環境によっては動物なども対象になり得る。すなわち、移動ロボット100は、将来運用される環境において認識すべき第2障害物に合わせて第2学習ステップを実行することができる。
図9は、第2学習ステップにおける教師データの生成について説明する説明図である。図9(a)は、第1学習ステップを終えた経路生成NN200によって生成された出発地から目的地までの移動経路を太線で表わす。上述のように、出発地は菱形のマークで示され、目的地は星形のマークで示されている。この段階においては、第2障害物は考慮されていない。
図9(b)は、移動ロボット100が二重丸のマークで示す第2障害物を認識した時点の様子を表わす。点線の経路は既に移動を終えた経路である。二重丸のマークは、第2障害物が存在する位置に対応するセルに重ねて描かれている。黒い矢印は第2障害物の動作ベクトルを示し、移動ロボット100が認識した時点における第2障害物の動作方向とその速度を表現している。すなわち、学習部151は、第2障害物を検出した場合には、自機との相対的な位置、動作方向および動作速度を認識する。
白抜き矢印は、使用者によって示された回避方向を示す。学習部151は、使用者によって示された回避方向に合致する回避経路を、既存のアルゴリズムを用いて生成する。回避経路は、第2障害物を発見した発見地点から、当該第2障害物を回避して、迅速かつ円滑に図9(a)の移動経路に復帰する経路である。図9(c)は、そのようにして生成した回避経路と、復帰後の元の移動経路とを接続した移動経路である。
学習部151は、図9(c)の太線で示す第2障害物を認識した認識地点から目的地までの移動経路を、図9(b)の太線で示す元の移動経路、第2障害物の相対的な位置、動作方向およびその動作速度を入力値とした場合の正解としてメモリ180に記録する。すなわち、このような入力値に対する正解のセットを一つの教師データとして記録する。なお、図9(b)の太線で示す元の移動経路は、第2障害物を発見した地点から目的地までの移動経路である。学習部151は、予め定められた数の教師データが揃うまで、あるいは使用者が打ち切りを指示するまでこの作業を繰り返し使用者に行わせる。
図10は、第2学習ステップのうち経路生成NN200が教師データを用いて学習する学習の概念を説明する概念図である。図9で示す作業を繰り返して教師データが準備されたら、経路生成NN200を教師あり学習により学習させる。
正解ラベルは、上述のように、第2障害物を回避する回避経路と復帰後の元の移動経路とを接続した移動経路であるが、第2障害物の状況によっては、元の移動経路に復帰することなく目的地に到達する移動経路であっても良い。学習部151は、学習中の経路生成NN200が出力する移動経路と、正解の移動経路との誤差を評価し、当該誤差が減るように誤差逆伝播法を用いて各エッジの重みを更新する。誤差の評価は、例えば、認識地点と目的地の間に等間隔で設けられる基準点同士の距離の総和で行い、当該総和が小さいほど正解に近い移動経路と評価する。
上述の例では、教師データが一定数揃ってから纏めて経路生成NN200の学習を行ったが、学習部151は、教師データが生成されるたびに経路生成NN200の学習を行っても良い。第2学習ステップを終えた経路生成NN200は、現に第2学習ステップを実行した移動ロボット100において運用に供される。あるいは、同様の環境で自律移動する移動ロボットに移されて運用に供される。
次に、本実施形態に係る機械学習方法の処理についてフローを用いて説明する。図11は、本実施形態に係る機械学習方法のうち、主に第1学習ステップの処理について説明するフロー図である。第1学習ステップは、上述のように、シミュレーションPC300で行われる。ここでは、教師データを得るたびに経路生成NN200の学習を行う手法について説明する。
シミュレーションPC300の演算部350は、ステップS101で、これから学習を行う経路生成NN200が学習後に実装される予定の移動ロボットの移動空間を想定して、当該空間に関する設定を行う。具体的には、移動平面の広さを定義するために一つのセルの大きさやm×nのセルの区分数を、使用者の指定に従って設定する。そして、未学習の経路生成NN200を生成する。また、この段階において、演算部350は、第1障害物の大きさや個数の制限、移動ロボットの大きさ等の基礎条件を受け付けても良い。基礎条件を受け付けた場合には、後の処理における処理条件として用いられる。
演算部350は、ステップS102で、設定された移動平面に対して静止障害物、出発地、目的地をランダムに生成する。そして、図6に示すような映像信号に変換して、ディスプレイ341に表示する。ステップS103へ進み、演算部350は、使用者に指定された正解の移動経路を受け付ける。例えば、使用者が入力ユニット342を操作して出発地に表示された菱形のマークを目的地の星形のマークまでドラッグした軌跡を正解の移動経路として取得する。このとき、演算部350は、例えばスプライン補間などの処理によって滑らかな曲線に修正しても良い。また、基礎条件として入力された移動ロボットの条件に対して移動不可能な軌跡であれば、再度の入力を促しても良い。
ステップS104へ進み、演算部350は、ステップS102とステップS104によって生成された教師データを学習中の経路生成NN200に与えて、上述の学習演算を実行する。そして、ステップS105へ進み、当該教師データによる学習演算によって、これまでに実行された学習演算の回数が予定された繰り返し回数を達成したか否かを確認する。すなわち、予め定められた教師データ数の学習を終えたか否かを確認する。終えていなければ、ステップS102へ戻って一連の処理を繰り返す。終えていればステップS106へ進む。
演算部350は、ステップS106で、第1学習ステップを終えた経路生成NN200を、通信ユニット190を介して移動ロボット100へ引き渡す。第1学習ステップを終えた経路生成NN200は、移動平面に配置された第1障害物のレイアウトと、設定された出発地および目的地とを入力すれば、第1障害物を回避した移動経路を出力する能力を有する。移動ロボット100の制御部150は、当該経路生成NN200をメモリ180へ取り込んで、第2学習ステップを実行するための機械学習プログラムが利用可能なように実装する。
第1学習ステップを終えた経路生成NN200の実装が完了したら、移動ロボット100で第2学習ステップを行う。図12は、本実施形態に係る機械学習方法のうち、主に第2学習ステップの処理について説明するフロー図である。ここでは、教師データを得るたびに経路生成NN200の学習を行う手法について説明する。
学習部は、ステップS107で、移動ロボット100がこれから第2学習ステップを行う空間の地図情報を取得する。ここで取得する地図情報は、ステップS101で設定された空間に対応する。すなわち、第2学習ステップを行う空間の移動平面は、第1学習ステップで学習を行った移動平面と同等の広さであり、取得する地図情報は、図5を用いて説明したデータ構造を有する。なお、他の表現形式を採用する地図情報を取得した場合には、制御部150がデータ変換を行ってデータ構造を一致させる。また、対象とする移動平面の広さが互いに異なる複数の経路生成NN200がメモリ180に存在する場合には、これから第2学習ステップを行う空間の移動平面に対応する経路生成NN200を選択する。
学習部151は、ステップS108で、移動ロボット100の現在地を取得する。すなわち、学習部151は、ステップS107で取得した地図情報に対して移動ロボット100がどこに存在するかを同定する。例えば、ステレオカメラ131で取得した画像から解析した周囲の環境と地図情報とを比較して、移動ロボット100の現在地を同定する。
続いて学習部151は、ステップS109で、取得した地図情報に対して第1障害物が配置されていないセルおよび第1障害物の周縁部のセルからランダムに選択したセルを目的地として設定する。そして、ステップS110へ進み、学習部151は、経路生成NN200を用いて目的地までの移動経路を生成する。なお、この段階における経路生成NN200への入力値は、取得した地図情報に示された第1障害物のレイアウトと、出発地(現在地)および目的地であり、第2障害物に関する情報は与えない。移動経路を生成したら、台車駆動ユニット145へ駆動信号を送信し、当該移動経路に沿って移動ロボット100を移動させる。
学習部151は、移動中に、動作する障害物である第2障害物が周囲に存在するかを監視する。具体的には、ステレオカメラ131の画像や、レーザスキャナ133の出力信号を周期的に解析して、周囲に存在する第2障害物を検知する。ステップS111で、第2障害物を検知していないと判断したらステップS115へ進み、検知したと判断したらステップS112へ進む。
学習部151は、ステップS112へ進むと、図8を用いて説明したように、検知した第2障害物に対する正解としての回避経路あるいは回避方向を使用者から受け付ける。そして、ステップS113で、図9を用いて説明したように、目的地までの移動経路を修正する。学習部151は、このように修正した移動経路を、元の移動経路、第2障害物の相対的な位置、動作方向およびその動作速度を入力値とした場合の正解として、教師データを整える。教師データを整えたらステップS114へ進み、経路生成NN200を教師あり学習により学習させる。当該教師データによる学習を終えたら、ステップS115へ進む。
ステップS115へ進むと、学習部151は、ステップS109で設定された目的地に移動ロボット100が到達したか否かを判断する。到達していないと判断したら、ステップS111へ戻り、目的地までの移動を継続する。到達したと判断したら、ステップS116へ進む。ステップS116へ進むと、学習部151は、これまでに実行されたステップS114の学習演算の回数が予定された繰り返し回数を達成したか否かを確認する。すなわち、予め定められた教師データ数の学習を終えたか否かを確認する。終えていなければ、ステップS108へ戻って一連の処理を繰り返す。終えていれば第2学習ステップを終了する。
次に、このように学習された学習済みの経路生成NN200が、移動ロボット100においてどのように利用されるかについて説明する。図13は、学習済みの経路生成NN200が実装された移動ロボット100の自律移動処理について説明するフロー図である。
移動ロボット100の制御部150は、ステップS201で、これから自律移動を行う空間の地図情報を取得する。取得する地図情報は、第2学習ステップのステップS107で取得した地図情報と同様に第1障害物が記述された地図情報であり、ステップS107で取得した地図情報がそのまま利用できるのであれば、ステップS201をスキップしても良い。ステップS202へ進み、制御部150は、第2学習ステップのステップS108と同様に、現在地を取得する。ステップS203へ進み、制御部150は、目的地を取得する。具体的には、使用者から目的地の入力を受け付けたり、与えられたタスクを実行するために移動すべき地点を当該タスクから抽出して目的地と定めたりする。なお、地図情報をサーバ500から地図DB181へ取り込むときの通信ユニット190は、制御部150と協働して、地図情報を取得する取得部として機能する。また、使用者が目的地を入力する場合やタスクを入力する場合の入力ユニットは、制御部150と協働して、目的地を取得する取得部として機能する。
ステップS204へ進むと、制御部150は、メモリ180から学習済みの経路生成NN200を読み出す。そして、演算部152は、読み出された経路生成NN200を用いて目的地までの移動経路を生成する。なお、この段階における経路生成NN200への入力値は、取得した地図情報に示された第1障害物のレイアウトと、出発地(現在地)および目的地であり、第2障害物に関する情報は与えない。ただし、移動開始前に既に第2障害物を検知している場合には、当該第2障害物の相対的な位置、動作方向およびその動作速度を入力値に加えても良い。演算部152が移動経路を生成したら、制御部150は、台車駆動ユニット145へ駆動信号を送信し、当該移動経路に沿って移動ロボット100を移動させる。
制御部150は、移動中に、動作する障害物である第2障害物が周囲に存在するかを監視する。具体的には、ステレオカメラ131の画像や、レーザスキャナ133の出力信号を周期的に解析して、周囲に存在する第2障害物を検知する。ステップS205で、第2障害物を検知していないと判断したらステップS207へ進み、検知したと判断したらステップS206へ進む。
ステップS206へ進むと、演算部152は、再び経路生成NN200を用いて目的地までの移動経路を更新する。このときの入力値は、元の移動経路、検知した第2障害物の相対的な位置、動作方向およびその動作速度である。移動経路が更新されたら、制御部150は、台車駆動ユニット145へ駆動信号を送信し、更新された移動経路に沿って移動ロボット100を移動させる。
ステップS207へ進むと、制御部150は、ステップS203で取得した目的地に移動ロボット100が到達したか否かを判断する。到達していないと判断したら、ステップS205へ戻り、目的地までの移動を継続する。到達したと判断したら、一連の移動処理を終了する。
なお、上述のフローにおいては、ステップS205で第2障害物を検知するごとにステップS206で経路の更新を行っているが、検知した第2障害物が元の移動経路に沿った移動に対して影響を与えないと判断する場合には、経路の更新を行わなくても良い。例えば、第2障害物が移動ロボット100の移動経路から遠ざかる方向へ動作している場合には、経路の更新を行わない。
以上説明した本実施形態においては、第2学習ステップにおいて、現実の環境下で動作する障害物(第2障害物)を検知することにより、第2障害物に対する教師データを生成したが、仮想的な第2障害物に対する教師データを含ませても良い。例えば、学習部151は、現実の第2障害物を検知したときに取得した当該第2障害物の動作速度と同じ速度で動作する仮想的な第2障害物を、様々な相対位置に様々な動作方向に発生させる。学習部151は、このような仮想的な第2障害物を、現実の第2障害物と同様に認識したものとして扱う。そして、学習部151は、その仮想的な第2障害物を、例えば表示パネル141にCGで表示する。使用者は、表示パネル141に表示されたCGによる第2障害物を確認し、それを回避する回避経路あるいは回避方向を移動ロボット100へ与える。このようにして、仮想的な第2障害物に対しても教師データを生成すれば、経路生成NN200の学習効果を高めることができる。
さらには、第2学習ステップも第1学習ステップに統合して、全行程をシミュレーションで実行することにより、より多くの教師データを生成することもできる。図14は、全行程をシミュレーションで実行する場合の教師データの生成について説明する説明図である。この場合のシミュレーションは、図6を用いて説明した第1学習ステップにおける教師データの生成と同様に、シミュレーションPC300で実行される。
演算部350は、m×n個のセルに区分された仮想空間における移動平面に対して第1障害物と第2障害物をランダムに配置する(第1配置ステップ)。図においては、第1障害物を斜線で示し、第2障害物を二重丸のマークで示している。演算部350は、更に、出発地と目的地の位置をランダムに決定して菱形のマーク(出発地)と星形のマーク(目的地)を表示する(第2配置ステップ)。第1障害物および第2障害物の配置個数は、1つでもあっても良いし、複数であっても良い。出発地は、初期状態における移動ロボットの現在地である。図6を用いて説明した第1学習ステップの場合と同様に、出発地は、第1障害物が配置されていないセルから選択されて決定され、目的地は、第1障害物が配置されていないセルおよび第1障害物の周縁部のセルから選択されて決定される。このように、第1障害物、第2障害物、出発地、目的地は、ランダムに決定しても良いし、予めあるいは動的に設定された確率やアルゴリズムに基づいて決定しても良い。
演算部350は、シミュレーションの開始と共に、第2障害物を予め設定された条件に従って動作させる(動作ステップ)。第2障害物の動作方向や動作速度は、実際に移動ロボットを運用する空間に現実的に存在し得る障害物を想定して予め設定される。図においては第2障害物の動作方向を模式的に矢印で示しているが、シミュレーションにおいては二重丸のマークが矢印方向へ設定された速度で移動する。
演算部350は、使用者から第1障害物と第2障害物を回避して出発地から目的地へ向かう移動経路の指定を受け付ける(受付ステップ)。具体的には、シミュレーションが開始して第2障害物が動き始めると、使用者は、図示するように「出発地から目的地までの経路を入力して下さい」などと促され、静止した第1障害物および動作する第2障害物と接触させないように、菱形のマークをディスプレイ341上でドラッグして星形のマークまで移動させる。使用者は、第2障害物が菱形マークへ接近してくる場合には、一旦停止させたり、迂回経路を進んだりすることにより第2障害物を回避する。ドラッグにより生成された軌跡は、ラインとして表示される。演算部350は、決定ボタンがタッチされたら、この軌跡を使用者によって決定された移動経路の正解として記録する。
なお、図6を用いて説明した第1学習ステップにおいては、第1障害物のみを対象とするので、生成される教師データには時間的な要素は含まれなかった。しかし、第2障害物を移動させつつそれを回避する本シミュレーションにおいては、教師データは、第2障害物の動作とそれを回避する移動ロボットの経路として経時情報を含む。すなわち、第2障害物がどの方向からどのような速度で接近してきた場合にどのように回避すべきかを、第1障害物との相対的な関係を含めて学習できるだけの情報を有する。
演算部350は、このように蓄積された教師データにより、経路生成NN200を教師あり学習により学習させる。このように学習された学習済みの経路生成NN200が移動ロボット100へ実装されれば、図8を用いて説明した学習作業を行わなくても良い。あるいは、図8を用いて説明した学習作業の作業量を軽減できる。
なお、受付ステップにおいて、移動ロボットが第1障害物と交叉するような移動経路を指定された場合には、演算部350は、交叉しないように部分的に移動経路を修正しても良い。ある程度大雑把な指定でも受け付けるようにすれば、短期間でより多くの教師データを蓄積することが期待できる。一方で、移動ロボットが第2障害物と接触するような移動経路を指定された場合には、使用者の経路指定を再度受け付ける。例えば、接触する前の時点まで戻して再度指定させる。第2障害物は動作する障害物であるので、的確な回避経路を使用者から与えられる方が教師データとして相応しい。
また、受付ステップで使用者から受け付けた移動経路に対して、第1障害物および第2障害物との接触の有無、接触が生じた場合の接触位置から目的地までの経路距離、第1障害物および第2障害物から経路までの距離、移動経路の経路距離、移動経路の滑らかさ、移動経路を移動するのに要する時間の少なくともいずれかを評価指標とする得点を計算して使用者に呈示する得点呈示ステップを含んでも良い。得点を演算する演算部350は、第1障害物および第2障害物との接触があればその接触回数に応じて減点する。また、接触の位置から目的地までの経路距離が短いほど高得点とする。また、第1障害物および第2障害物から経路までの距離が近い場合は、安全性の観点から減点する。出発地から目的地までの移動経路の経路距離が短いほど高得点とする。また、出発地から目的地までの移動経路が滑らであれば高得点とする。移動経路を移動するのに要する時間が短いほど高得点とする。このような得点を呈示することにより、使用者は操作を積極的に楽しんだり、競争心を持ったりすることができるので、継続してシミュレーションを行わせることができる。すなわち、多くの教師データを蓄積することができる。
また、図6を用いて説明した第1学習ステップの後に、ここで説明したシミュレーションを実行するようにしても良い。具体的には、まず第1学習ステップにより、第1障害物が与えられた場合に出発地から目的地までの移動経路を生成できるようにする。そして、第2配置ステップと動作ステップの間に、出発地から目的地まで第1障害物を回避した仮移動経路を生成する生成ステップを加える。動作ステップにおいては、第2障害物を動作させると共に、出発地から仮移動経路に沿って移動ロボットを予め設定された条件に従って移動させる。受付ステップでは、仮移動経路に沿って進む菱形マークが、二重丸のマークと接触しそうになった場合に両移動を一旦停止させ、回避動作の指定を使用者から受け付ける。演算部350は、部分的に指定された回避経路を元の仮移動経路に組み込むことにより、教師データとしての移動経路を生成する。このように構成すれば、動作する第2障害物を回避する経路生成の学習を集中して行うことができるので、作業効率が向上する。なお、仮移動経路の生成は、第1学習ステップの成果を用いるのではなく、他のアルゴリズム等を利用しても良い。