【解決手段】空間画像を取得する空間画像取得部31と、空間内に存在する物体の自装置からの距離情報を取得する距離情報取得部31と、空間内に存在する複数の基準物体の位置と基準物体間の実測距離とを含むマップ情報を記憶するマップ情報記憶部44と、各基準物体に係る第1推論モデル情報を記憶するモデル情報記憶部43と、空間画像に対して第1推論モデル情報に基づく推論を行い空間画像に含まれる基準物体を検出する物体検出部33と、物体検出部によって2以上の基準物体が検出されたとき、検出された基準物体をマップ情報内で特定する物体特定部34と、特定された基準物体のマップ情報内での位置と、距離情報に基づく各基準物体と自装置との距離と、実測距離と、に基づいて、空間内での自装置の位置を推定する位置推定部35と、を備える。
走行手段と、該走行手段を駆動する駆動手段と、請求項1乃至6の何れか一項に記載の位置推定装置と、該位置推定装置による制御に基づいて前記駆動手段を制御する駆動制御手段と、
を備えることを特徴とする移動体。
空間画像取得部と、距離情報取得部と、マップ情報記憶部と、モデル情報記憶部と、物体検出部と、物体特定部と、位置推定部と、を備え、空間内での自装置の位置を推定する位置推定装置の位置推定方法であって、
前記マップ情報記憶部は、前記空間内に存在する複数の基準物体の位置と、予め測定した基準物体間の実測距離と、を含むマップ情報を記憶し、
前記モデル情報記憶部は、予め学習した各基準物体に係る第1推論モデル情報を記憶し、
前記空間画像取得部が、前記空間を撮像した空間画像を取得するステップと、
前記距離情報取得部が、前記空間内に存在する物体の自装置からの距離情報を取得するステップと、
前記物体検出部が、前記空間画像に対して前記第1推論モデル情報に基づく推論を行い前記空間画像に含まれる基準物体を検出するステップと、
前記物体特定部が、前記物体検出部によって2以上の基準物体が検出されたとき、検出された基準物体を前記マップ情報内で特定するステップと、
前記位置推定部が、特定された基準物体の前記マップ情報内での位置と、前記距離情報に基づく各基準物体と自装置との距離と、前記実測距離と、に基づいて、前記空間内での自装置の位置を推定するステップと、
を含むことを特徴とする位置推定方法。
【発明を実施するための形態】
【0008】
以下に、図面を参照して、本発明の実施の形態を詳細に説明する。
図1は、本実施形態に係る空間内の位置推定方法の概念を説明する図であり、(a)は空間を横方向から見たときの概念図、(b)は空間を上方向からみたときの概念図である。
本実施形態の位置推定方法を実行する位置推定装置1は、例えば空間内を自律的に走行する移動する移動体2に搭載され得る。
移動体2に搭載された位置推定装置1は、移動体2の移動に伴って移動し、空間内の任意の地点において自装置(位置推定装置1)の位置を推定する。
また位置推定装置1は、移動体2に搭載されて自装置の位置を推定し、推定位置に基づいて移動体2の移動を制御することも可能である。
ただし位置推定装置1は、移動体2への搭載を前提とするものではなく、また空間内の移動を前提とするものではない。本実施形態の特徴的な方法によって自己位置を推定し、空間内での自装置の位置が変更されても適宜自装置の位置を推定することができる。
位置推定装置1は、移動体2に搭載されるのではなく、人、例えば現場の作業員が身につけて用いてもよい。下記に説明する位置推定装置1による位置推定によって作業員は自身の位置を把握し、あるいは監督者は、各作業員がどの場所にいるかを把握することが出来る。
【0009】
図1(a)に示すように、位置推定装置1は、例えば移動体2に搭載され、屋内空間の床面を移動する。屋内空間の天井面には、火災報知器の熱センサや照明器具、非常口灯といった設備が設けられている。また、位置推定装置1は画角内の深度情報(距離情報)を取得可能なデプスセンサ20と、空間内を撮像可能なカメラと、を備えている。
空間内を撮像可能なカメラは、例えば、前向きに設置された前方カメラ21と、上向きに設置された上方カメラ22と、を含む。
前方カメラ21は、位置推定装置1の移動方向の前方を撮像可能である。
上方カメラ22は、90度から110度程度の視野角を有し、位置推定装置1の移動方向の上側を撮像可能である。
デプスセンサ20は、前方カメラ21と同じ位置推定装置1の移動方向前方の深度情報(距離情報)を取得可能である。
位置推定装置1の移動方向は、位置推定装置1が移動体2に搭載される場合には、移動体2の移動方向である。
また位置推定装置1の移動方向は、位置推定装置1を人が身につける場合には、人の移動方向である。
図1(b)に示すように、位置推定装置1は、例えば移動体2の移動に伴って、天井面に存在する物体A(例えば、熱センサ)、物体B(例えば、非常口灯)、物体C(例えば、照明器具)との距離を変化させていく。位置推定装置1は、デプスセンサ20、前方カメラ21を用い、自装置とこれら基準となる物体(基準物体)との距離に基づいて、空間内における自装置の位置を推定するのである。
後述するが、基準物体は2つ以上必要であり、また、天井面における設置位置が基本的に変わらない(移設がされない)物体である必要がある。なお、基準となる物体は、天井面に設置されたものではなく床面に設置されたものであってもよい。ただし、基準物体がすべて同一面にあることが望ましい。すなわち、基準物体がすべて天井面にあるか、すべて床面にあることが望ましい。
【0010】
図2は、本実施形態に係る位置推定装置の基本構成を示す図である。
上記のように位置推定装置1は、画角内の深度情報(距離情報)を取得可能なデプスセンサ20と、空間内を撮像可能な前方カメラ21及び上方カメラ22と、を備えている。
デプスセンサ20と前方カメラ21は、それらの画角が基本的に位置推定装置1の進行方向に対して前方を向くように設置されている。
デプスセンサ20と前方カメラ21は、移動体2の移動に応じて、移動方向前方の空間画像と距離画像を取得できる。
従って、前方カメラ21によって、
図3(a)に示すような前方の空間画像を取得することができる。またデプスセンサ20によっては、距離情報として
図3(b)に示すような前方の距離画像を取得することができる。デプスセンサ20は、たとえばステレオカメラであり、視差画像として距離画像を取得することができる。その他デプスセンサとして、赤外線センサや単眼カメラを用いることができる。
デプスセンサ20と前方カメラ21を統合して、前方の空間画像と距離画像を同時に取得するようにしてもよい。
位置推定装置1は、前方カメラ21で撮像した前方の空間画像に対してAI推論による画像認識を行って上記基準物体を2つ以上検出し、予め用意された空間マップ内に物体を特定する。さらに位置推定装置1は、デプスセンサ20で取得した深度情報に基づいて、特定した物体との距離を計測する。
基準物体間の距離は予め実測されているので、位置推定装置1は、計測された物体との距離と物体間の実測値とを用いた三角測量(後述する)によって、空間マップ内の自装置の位置を推定することができる。
上方カメラ22は上向きに設置されて、真上など空間内の上方を撮像することが出来る。
後述するように上方カメラ22によって撮像した上向きの空間画像に対しても、AI推論による画像認識を行う。広視野角のレンズを有する一つのカメラによって前方カメラ21と上方カメラ22を統合して、前方の距離画像と、上方の距離画像を一つのカメラで撮像することも可能である。ただし、空間画像の外側(空間の上側や下側)などに歪みが生じるため、画像認識に用いるには適切な校正、補正が必要である。
【0011】
移動体2に搭載された位置推定装置1が移動体2の移動を制御する場合、位置推定装置1は移動体2に対して電気的及び機械的に接続される。
図4は、位置推定装置を搭載した移動体の概略構成例を示す図である。
移動体2は、一例として、タイヤ(走行手段)と、タイヤの駆動源としてのモータ101と、モータ101の駆動を制御する駆動制御部102と、を備える。モータに101よってタイヤが回転駆動されることにより走行が可能である。移動体2は走行手段としてタイヤに替えてキャタピラなどを備えてもよい。
位置推定装置1は、推定位置と、空間マップ内に設定した目標物体の位置と、に応じて、目標物体への経路を設定し、設定した経路に応じた移動方向を移動体2に指示する。
移動体2は、指示された移動方向に向かって進行することで目標物体に到達することができる。
位置推定装置1が移動体2に搭載されることによって、移動体2は、位置推定装置1から入力される移動方向に基づいて、目標物体までの自律走行をすることができる。
目標物体は、上記の基準物体(物体A〜物体C)の中の何れかであってもよいし、基準物体とは別の物体であってもよい。
図4に示す移動体2は、位置推定装置1から入力される移動方向に基づいて移動するように構成されている。
それに限らず移動体2は、移動体2自体が備える機能によって自律走行可能に構成されてもよい。この場合、位置推定装置1は、自装置の位置推定のみを行う。
【0012】
図5は、本実施形態の位置推定装置の機能構成を説明する図であり、(a)はハードウェアによる機能ブロック図、(b)はソフトウェアによる機能ブロック図である。
図5(a)に示すように、位置推定装置1は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、位置推定装置1の機能を実現するプログラムを実行するCPU(Central Processing Unit)11と、CPU11による処理のために各種のプログラムや一時データ、変数が展開されるRAM(Random Access Memory)12と、プログラムやデータが格納されるHDD(Hard Disk Drive)13や不図示のROM(Read Only Memory)と、を備えている。
また、位置推定装置1は、I/Oインターフェイス14を備え、I/Oインターフェイス14を介してデプスセンサ20、前方カメラ21、上方カメラ22と、接続されている。
位置推定装置20は、移動体2に搭載される場合、I/Oインターフェイス14を介して移動体2に接続される。
【0013】
CPU11は、位置推定装置1が備えて制御部を実現する制御回路の一例であり、制御回路としては、その他にマルチコアCPU、FPGA(Field Programmable Gate Array)、PLD(Programmable Logic Device)などのプロセッサを適用することができる。
HDD13は、内蔵するハードディスク(Hard Disk)を駆動するドライブ装置であり、HDD13は記憶媒体としてのハードディスクに格納されたプログラムやデータを読み出し、またハードディスクにデータを書き込む。
【0014】
また、位置推定装置1は、FD(Floppy Disk)、CD(Compact Disc)やDVD(Digital Versatile Disc)、BD(Blu-ray(登録商標) Disk)などの光学ディスク、フラッシュメモリなどの着脱可能な記憶媒体200に対してプログラムやデータを読み書きする読書装置15を備えてもよい。
読書装置15は、FDD(Floppy Disk Drive)、CDD(Compact Disc Drive)、DVDD(Digital Versatile Disc Drive)、BDD(Blu-ray(登録商標) Disk Drive)、USB(Universal Serial Bus)などである。
CPU11、RAM12、HDD13、I/Oインターフェイス14、読書装置15は例えば内部バスを介して接続されている。
【0015】
また
図5(b)に示すように、CPU11は、制御部10Aとして、空間画像取得部31と、距離情報取得部32と、物体検出部33と、物体特定部34と、位置推定部35と、を実行する。位置推定装置1が移動体2の移動を制御する場合、CPU11は、さらに移動制御部36と、近接制御部37を実行する。
これらの処理部は、位置推定装置1の制御部10Aの機能を実現するプログラムであり、当該プログラムは、HDD13に含まれるハードディスクや記憶媒体200に格納され得る。プログラムは、HDD13や読書装置15によってハードディスクや記憶媒体200からRAM12に読み出されてCPU11によって実行される。
【0016】
HDD13やRAM12は、位置推定装置1の記憶部10Bを構成する。
記憶部10Bは、空間画像記憶部41、距離情報記憶部42と、モデル情報記憶部43と、マップ情報記憶部44と、を備える。
モデル情報記憶部43は、予め学習した各基準物体に係る推論モデル情報(推論モデル)を記憶する。基準物体に係る推論モデル情報は、CNN(畳み込みニューラルネットワーク)の推論モデルである。CNNの推論モデルは、位置推定装置1が自己位置を推定する基準として用いる基準物体をAI推論によって前方カメラ21による前方の空間画像から検出するために用いる。
予めマップ情報内に位置が登録されている基準物体のうちのどれが空間画像内に存在するかを判別できればよいため、この用途ではCNNが用いられる。
【0017】
モデル情報記憶部43は、さらに、位置推定装置1がマップ情報内の物体に最も接近した状態での推論モデル情報を記憶している。この推論モデル情報は、CNNよりも厳密な画素単位での推論を可能とする、例えばセマンティックセグメンテーションの推論モデルである。
係る推論モデルは、位置推定装置1を搭載した移動体2が、マップ情報内の物体に到達したあと、その物体に最も接近するために用いられる。
位置推定装置1が物体に最も接近するためには、物体の輪郭を含めた詳細な形状情報が必要であり、セマンティックセグメンテーションではそのような情報を空間画像から取得可能である。
マップ情報記憶部44は、空間内に存在する複数の基準物体の位置と、予め測定した基準物体間の実測距離と、を含むマップ情報(マップデータ)を記憶する。
マップデータは、基準物体以外に、移動体2の移動目標としての目標物体の位置を含み得る。
【0018】
空間画像取得部31は、前方カメラ21又は上方カメラ22を用いて空間を撮像した空間画像を取得して空間画像記憶部41に格納する処理を行う。
距離情報取得部32は、デプスセンサ20を用いて空間内に存在する物体の自装置からの距離情報を取得して距離情報記憶部42に格納する処理を行う。距離情報は、例えば距離画像である。
物体検出部33は、空間画像に対してモデル情報記憶部43に格納される推論モデルに基づく推論を行い、空間画像に含まれる基準物体を検出する処理を行う。
物体特定部34は、物体検出部によって2以上の基準物体が検出されたとき、検出された基準物体を、マップ情報記憶部44に記憶されるマップデータ内で特定する処理を行う。
位置推定部35は、特定された基準物体のマップデータ内での位置と、距離情報に基づく各基準物体と自装置との距離と、実測距離と、に基づいて、空間内での自装置(位置推定装置1)の位置を推定する処理を行う。このような位置推定装置1は、カメラ機能を備えるスマートフォンによって実現することができる。
位置推定装置1は表示装置を備えてもよく、位置推定部35はマップデータ内の推定位置を表示装置に表示可能であってもよい。
位置推定装置1を携行する作業員等が空間内の自己位置を確認するのに好適である。
位置推定装置1は通信インターフェイスを備えてもよく、位置推定部35はマップデータ内の推定位置を、外部装置に送信可能であってもよい。
位置推定装置1を携行する作業員等の空間内の位置を監督者が確認したり、位置推定装置1を搭載した移動体2の空間内の位置を管理者が確認したりするのに好適である。
【0019】
移動制御部36は、位置推定部35による位置推定装置1の推定位置と、空間マップ内に設定した目標物体の位置と、に基づいて、位置推定装置1を搭載した移動体2の目標物体への移動を制御する。移動制御部36は、位置推定部35による推定位置と、目標物体の位置と、に基づいて目標物体への経路を設定し、設定した経路に基づく移動方向を移動体2に指示する。
近接制御部37は、移動制御部36による制御によって移動体2が目標物体に到達したあと、移動体2が最も目標物体に近接するように、移動体2の位置を調整させる制御を行う。
より具体的には、近接制御部37は、空間画像に対して、モデル情報記憶部43に格納される上記セマンティックセグメンテーションの推論モデルに基づく推論を行い、推論結果として空間画像に含まれる目標物体を検出する。
そして近接制御部37は、検出される目標物体に付与される外接矩形と、推論モデルにおける物体の外接矩形と、がずれている場合、このずれが解消する移動方向を移動体2に指示する。
【0020】
なお、移動体2が位置推定装置1から推定位置を入力され、目標物体への経路と移動方向を決定する制御、目標物体に最接近するための制御を移動体2が行ってもよい。この場合、移動制御部36、近接制御部37の少なくとも一つを移動体2が備えてもよい。
駆動制御部102が、位置推定装置1から推定位置を入力された推定位置に基づいて目標物体への経路と移動方向を決定し、モータ102を制御する。
移動体2が、
図5に示す位置推定装置1の機能を全て備えても良い。その場合、移動体2は、自己位置を推定しながら目標物体に向けての自律走行が可能な自律走行装置である。
【0021】
図6は、モデル情報記憶部に格納されている推論モデル情報を説明する図である。
AI推論による物体検知は、ニューラルネットワーク、特に畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)を用いて実行することができる。CNNで用いる推論モデルは、位置推定装置による位置推定処理に先立って深層学習によって生成される。
具体的には、空間内の天井面や床面に設置された物体のうち、2以上の物体(物体A、物体B、物体C)を基準物体として選択する。
そして、これらの基準物体を様々な角度や条件(明暗など)で撮像した画像群を入力とし、CNNを用いて特徴データを抽出する。同じ特徴データを有する基準物体に対してアノテーションを実行し、CNNによる基準物体の推論モデルを作成する。推論モデルの作成の際には、空間内に物体が存在しえる座標も条件に加えることで精度よく推論モデルを作成することができる。作成した推論モデルは学習済みモデルとして位置推定装置1のモデル情報記憶部43に格納される。
【0022】
なお、
図6に示したように、CNNでは、入力画像における物体(例えば物体A〜C)のクラス全体から特徴データを抽出して推論モデルを作成し、推論もクラス単位で行われる。
入力画像からは物体の特徴のみが抽出され、入力画像内での物体の位置や、入力画像内での物体とそれ以外の違いは考慮されない。よって、CNNの推論モデルは、物体の輪郭などの情報は持ち得ず、推論結果は空間画像内にどの物体が存在するのかを示す矩形情報に過ぎない。
それに対し、セマンティックセグメンテーション(下記に言及する)では、物体を構成する画素と外側の画素の各画素に対して、CNN推論モデルに基づく物体のクラスがマッピングされることで推論モデルが作成される。
従って、推論モデルでは、物体を構成する画素と外側の画素とが明確に分離して定義される。空間画像に対する推論結果として、物体の輪郭に近接した近接矩形が得られる。
【0023】
図7は、マップ情報記憶部に格納されているマップデータを説明する図である。
マップデータは、位置推定装置1が位置推定処理を行う空間を上側からみた平面座標内の基準物体の位置を示している。例えば、マップデータには、空間内の天井面に実在する基準物体の位置が定義されている。
図7に示すマップデータにおいて、座標(x
a,y
a)の位置に基準物体としての物体A(例えば、熱センサ)が定義されている。座標(x
b,y
b)の位置に基準物体としての物体B(例えば、非常口灯)が定義されている。さらに、座標(x
c,y
c)の位置に基準物体としての物体C(例えば、照明器具)が定義されている。
そしてマップデータには、予め実測された物体Aと物体Bの間の距離、物体Bと物体Cの間の距離、物体Aと物体Cの間の距離が規定されている。
【0024】
図8は、三角測量による位置推定方法を説明する図である。
マップ内の位置推定装置1の位置は、空間画像内に検出された2以上の物体との距離に基づいて、以下のように算出することができる。
位置推定装置1は、前方カメラ21が撮像した空間画像内に検出された基準物体が物体Aと物体Bの2つであった場合、自装置のマップ内の位置E(x
e,y
e)を、以下の数式から算出することができる。
演算を簡易とするために物体A、物体Bを通る線分をx軸とすると、物体Aの座標は(x
a,0)、物体Bの座標は(x
b,0)で表される。
物体Aと物体Bとの距離は、実測済み距離dとして、マップデータに登録されている。
位置Eと物体Aとの距離α、位置Eと物体Bとの距離βは、デプスセンサ20による距離画像(深度情報)から得られる。
図8における△ABEにおいて∠ABEをθとする。
このとき、位置Eから線分ABに下ろした垂線と線分ABとの交点をFとすると、線分BFの長さx1は、β・cosθである。
このとき、位置Eのx成分x
eは、
x
e=x
b+x1
で表される。
上記のように、x1=β・cosθであるので、
x
e=x
b+β・cosθが成り立つ。
余弦定理から、cosθ=(β
2+d
2−α
2)/2βdであるので、
x
eは、x
e=x
b+β・(β
2+d
2−α
2)/2βd=x
b+(β
2+d
2−α
2)/2d
で表される。
一方、位置Eのy成分y
eはピタゴラス定理に基づいて、
y
e=√(β
2−x1
2)
で表される。
このようにして、位置推定装置1は、マップ内の実測済み距離と、各基準物体の座標、空間画像内に検出された2以上の基準物体との距離を用いて、自装置のマップ内の位置E(x
e,y
e)を算出することができる。
【0025】
図9は、位置推定装置を搭載した移動体の移動に伴う連続的な位置推定を説明する図である。
上記に述べたように、本実施形態の位置推定装置1は移動体2への搭載を前提としたものではない。位置推定装置1を搭載した移動体2や、位置推定装置1を携行した人が移動することで、空間内における位置推定装置1の位置が変化した場合でも、空間画像内に2以上の物体を検出することで、位置推定装置1は、空間内における自装置の位置を推定することができる。
図9に説明において、位置推定装置1が取得する空間画像は前方カメラ21が撮像した空間画像である。
時点t1において、位置推定装置1が位置E1に存在するとき、位置推定装置1が取得する空間画像には、物体A、物体Bが検出される。距離情報に基づく自装置と物体Aの距離e1、物体Bへの距離f1、物体Aと物体Bとの間の実測距離と、に基づいて、
図8で説明した原理に基づいて位置E1の座標(x1,y1)を算出する。
時点t2において、位置推定装置1が位置E2に存在するとき、位置推定装置1が取得する空間画像からは物体A、物体Bが検出される。距離情報に基づく自装置と物体Aの距離e2、物体Bへの距離f2、物体Aと物体Bとの間の実測距離と、に基づいて、
図8で説明した原理に基づいて位置E2の座標(x2,y2)を算出する。
【0026】
時点t3において、位置推定装置1が位置E3に存在するとき、位置推定装置1が取得する空間画像からは物体Bが検出されるが物体Aが検出されない。空間画像内に検出される物体は一つのみであり、
図8で説明した原理に基づいて位置E3の座標を算出することは出来ない。
続いて、時点t4において、位置推定装置1が位置E4に存在するとき、位置推定装置1が取得する空間画像からは物体B、物体Cが検出される。
距離情報に基づく自装置から物体Bへの距離f4と、自装置から物体Cへの距離g4と、物体Bと物体Cとの間の実測距離と、に基づいて、
図8で説明した原理に基づいて位置E4の座標(x4,y4)を算出する。
【0027】
このように、本実施形態の位置推定装置1は、空間画像内に2以上の基準物体を検出することで、位置推定装置1は、空間内における自装置の位置を推定することができ、自装置の移動によって空間が画像内に検出される基準物体の位置や、検出される基準物体自体が変化したとしても、自装置の位置を容易に推定することができる。
【0028】
図10は、位置推定装置のCPUが実行する位置推定処理の流れを説明するフローチャートである。
位置推定処理の開始時点で、推論モデルは、モデル情報記憶部43に格納され、マップデータはマップ情報記憶部44に格納されている。
位置推定処理を開始すると、CPU11(空間画像取得処理部31)は、ステップS101において、前方カメラ21を用いた前方の空間画像の撮像を開始する。撮像された空間画像は、例えば1フレーム毎に、空間画像記憶部41に順次格納される。
CPU11(距離情報取得部32)は、ステップS102において、デプスセンサ20を用いた距離情報の取得を開始する。取得された距離情報は距離情報記憶部42に順次格納される。
同一時点で取得された空間画像と距離情報は紐づけて管理され、一の空間画像内の距離情報が特定可能であることが望ましい。
【0029】
CPU11(物体検出部33)は、ステップS103において、空間画像記憶部41に格納された空間画像に対して、モデル情報記憶部43に格納されているCNNの推論モデルによるAI推論を実行する。
CPU11(物体検出部33)は、ステップS104において、AI推論の結果、1フレームの空間画像内に基準物体を検出したか否かを判定する。基準物体を検出したか否かは、推論モデルとの一致確率が所定の閾値以上であることで判定される。
【0030】
1フレームの空間画像内に基準物体が検出されない場合には(ステップS104でNo)、CPU11(物体検出部33)は、ステップS103において、空間画像記憶部41に格納された次フレーム以降の空間画像について、ステップS103乃至ステップS104の処理を繰り返す。
位置推定装置1を搭載した移動体2あるいは位置推定装置1を携行する人が移動しなければ、次フレーム以降も空間画像の内容は同じであり基準物体は検出されないが、位置推定装置1を搭載した移動体2あるいは位置推定装置1を携行する人が移動した場合に、次フレーム以降の空間画像に基準物体が検出される可能性がある。
基準物体を検出したと判定した場合(ステップS104でYes)、検出した基準物体(物体A、物体B、物体C)を、CPU11(物体特定部34)は、ステップS105において、マップ情報記憶部44に格納されるマップデータの検索を行い、ステップS106において、検出した基準物体をマップデータ内に特定する。
CPU11(位置推定部35)は、ステップS107において、距離情報記憶部42に格納されている空間画像に対応する距離情報を用いて、特定した基準物体までの距離を推定する。
【0031】
CPU11(位置推定部35)は、ステップS108において、1フレームの空間画像内に2以上の物体を特定して距離の推定を完了したか否かを判定する。
1フレームの空間画像内に1以下の物体しか検出されず2以上の物体までの距離の推定を完了していない場合(ステップS108でNo)、CPU11(位置推定部35)は、ステップS103において、空間画像記憶部41に格納された次フレーム以降の空間画像について、ステップS103乃至ステップS107の処理を繰り返す。
位置推定装置1を搭載した移動体2あるいは位置推定装置1を携行する人が移動しなければ、次フレーム以降も空間画像の内容は同じであり検出される物体にも変化はないが、位置推定装置1を搭載した移動体2あるいは位置推定装置1を携行する人が移動した場合に、次フレーム以降の空間画像に検出される物体も変化する可能性がある。
【0032】
ステップS108において、2以上の物体までの距離の推定を完了したと判定した場合(ステップS108でYes)、CPU11(位置推定部35)は、ステップS109において、特定された2以上の物体までの推定距離と、予め実測された特定物体間の距離と、に基づいてマップ内の座標を算出し、これを自装置の位置としてRAMに格納する。
CPU11は、ステップS110において、位置推定処理を終了するか否かを判定する。
位置推定処理を終了すると判定した場合には、CPU11は、位置推定処理を終了する。
位置推定処理を継続する場合には、CPU11は、ステップS103に処理を戻し、次フレーム以降の空間画像に対して、ステップS103乃至ステップS109の処理を実行する。
【0033】
以上のように構成することで、不変である可能性が高い空間の天井面(あるいは床面)に既知の(すでにマップデータに登録された)物体が2つ以上存在すれば、位置推定装置1は、自装置の位置を推定することができる。
天井面あるいは床面に存在する物体の推論モデルを作成し、その位置をマップデータに登録することのみで位置推定装置1による自己位置の推定が可能である。ビーコン装置など追加の設備投資の必要は皆無であり経済的である。
仮に、天井面あるいは床面において物体の位置が変更になったとしても、マップデータ内の物体の位置を更新するのみで、位置推定装置1による自己位置の推定が引き続き可能である。
【0034】
上記の説明では、位置推定装置1を搭載した移動体2あるいは位置推定装置1を携行する人の移動に応じて、位置推定装置1が自装置の位置を推定する方法を説明した。
位置推定装置1はさらに、上記の位置推定処理によって位置推定装置1の位置を推定しつつ、位置推定装置1を搭載した移動体2を設定された目標物体に向かって移動するように制御することができる。目標物体は、マップデータ内に予め設定することができる。
目標物体の設定は、位置推定装置1をPCやスマートフォン等の外部装置に有線又は無線で接続した状態で、専用のアプリケーションソフトなどを使用してマップデータを編集することによって行えてもよい。
位置推定装置1自体に、マップデータを編集して目標物体の設定が可能なインターフェイスを備えても良い。その場合、位置推定装置1はマップデータを表示するための表示装置や操作ボタン、あるいはタッチパネル式の表示画面を備えることができる。
下記の説明では、目標物体として位置推定に用いる基準物体A〜Cを用いるが、それに限らず、位置推定に用いないその他の物体でもよい。ただし当該の物体の座標をマップデータ内に登録しておく必要がある。
目標物体は、1つ以上設定可能であり、空間内の移動を開始した位置から、複数の目標物体を自律的に巡回するように移動体2を制御することもできる。
【0035】
図11は、位置推定装置が設定する移動体の移動経路を例示する図である。
図11(a)は、
図9と同じ座標(x1、y1)の位置E1から移動を開始する移動体2が、座標(x
a,y
a)の位置にある物体Aに向かう経路の一例である。
図11(b)は、
図9と同じ座標(x1、y1)の位置E1から移動を開始する移動体2が、座標(x
b,y
b)の位置にある物体Bに向かう経路の一例である。
図11(c)は、
図9と同じ座標(x1、y1)の位置E1から移動を開始する移動体2が、座標(x
c,y
c)の位置にある物体Cに向かう経路の一例である。
位置推定装置1は、位置座標を推定しながら、設計した経路に基づいて目標物体に向かって移動するように移動体2を制御することができる。
目標物体への移動中、
図8、
図9等で説明した位置推定処理によって常に自装置(位置推定装置1)の位置座標を取得しているので、位置推定装置1は、正確に移動体2を制御して目標物体に向けて移動させることができる。
位置推定装置1は、位置推定処理によって推定した位置座標と、マップデータに登録されている目標物体の座標と、が一致したときに移動体2が目標物体に到達したとみなすことができる。
【0036】
図12は、位置推定装置のCPUが実行する移動制御処理の流れを説明するフローチャートである。
図12の移動制御処理は
図10の位置推定処理と並行して行う。
図10のステップS101、ステップS102におけるカメラの撮像開始と、デプスカメラの撮像開始は、
図12の処理開始時点ですでに行われているものとする。
CPU11(移動制御部36)は、ステップ201において、目標物体の設定がなされているか否かを判定する。
目標物体の設定がなされていると判定した場合(ステップS201でYes)、CPU11(移動制御部36)は、ステップS202においてマップデータを検索する。CPU11(移動制御部36)は、ステップS203において、マップデータ内に定義される目標物体の座標を取得する。
【0037】
次いでCPU11(移動制御部36)は、ステップS204において、
図10の位置推定処理によって算出されている位置推定装置1の位置をRAMから取得する。
CPU11(移動制御部36)は、ステップS204で推定した位置推定装置1の位置と、ステップS203で取得した目標物体の座標と、に基づいて、ステップS205において、
図11で説明した現在位置から目標物体の座標までの移動経路を決定する。
CPU11(移動制御部36)は、ステップS206おいて、決定した移動経路に基づいて、移動体2に対して移動方向を指示する。
CPU11(移動制御部36)は、ステップS207において、移動体2の移動に応じて、
図10の位置推定処理によって常に推定されている位置推定装置1の位置をRAMから取得する。
【0038】
CPU11(移動制御部36)は、ステップS208において、マップデータ内において、位置推定装置1の位置と目標物体の座標とが一致したか否かを判定する。
自装置の位置と目標物体の座標とが一致しないと判定した場合(ステップS208でNo)、CPU11(移動制御部36)は、ステップS205に処理を戻し、位置推定装置1の位置から目標物体の座標までの移動経路を決定する。これは、前回処理で決定した経路を踏襲してもよいし、障害物の存在などに応じて、新たな経路を決定し直してもよい。
位置推定装置1の位置と目標物体の座標とが一致したと判定した場合(ステップS208でYes)、CPU11は、ステップS209において、位置推定装置1を搭載した移動体2が、目標物体に近接したと判定してRAM上の近接フラグをONにし、移動制御処理を終了する。
上記の構成によれば、位置推定装置1を搭載した移動体2は、空間内における自らの位置を位推定位置1によって推定しながら、目標物体に向けて移動することができる。
【0039】
なお、ステップS205、ステップS207において、推定位置が取得出来ないことがある。例えば、
図9の時点t3について説明したように、位置推定装置1が取得する空間画像からは物体Bが検出されるが物体Aが検出されず、位置推定が出来なくなったような場合である。
この場合、CPU11(移動制御部36)は、移動体2を回頭させて別の基準物体を探すようにする。その結果、
図9の時点t4のように別の基準物体が見つかって位置推定が可能となると、新たな移動経路を決定して目標物体への移動を再開出来る。
【0040】
ところで、移動体2を目標物体に到達させたあと、移動体2を目標物体に最も接近させるためには、より厳密な位置推定と移動制御が必要である。
以下では、移動体2を目標物体に最も接近させるための処理を説明する。
位置推定装置1は、移動体2を目標物体に最も接近させるための制御に、上記のセマンティックセグメンテーションを利用する。
上記のようにセマンティックセグメンテーションは、画像内の各画素をオブジェクトクラスに当てはめる手法であり、画像内の特定物体の輪郭を抽出することができる。
セマンティックセグメンテーションは、画像の画素ごとの輝度及び色度に基づいて領域分けを行い、領域分けにより分けられた領域の輪郭形状から領域が示す物体の種類を決定する。領域が表す物体の種類は、例えばCNNの推論モデルから決定できる。
位置推定装置1は、空間内の天井面や床面に設置された基準物体を識別するための推論処理ではCNNを用いていた。しかし、CNNでは推論結果として物体の大まかな外接矩形が得られるのみであった。
それに対してセマンティックセグメンテーションでは、物体の輪郭に沿った外接矩形を得ることができる。この外接矩形を用いることで、位置推定装置1は正確に移動体2を目標物体に最も接近させることができる。
【0041】
図13は、位置推定装置を搭載した移動体が目標物体に移動して最接近するまでの動作と目標物体との関係を示す図である。
図13(a)において、位置推定装置1を搭載した移動体2が、目標物体60に対して接近している。前方カメラ21の画角は正面方向を向いており、位置推定装置1による位置推定を行いながら、決定された移動経路に従って目標物体60に近づいていく。
図13(b)において、位置推定装置1による推定位置が目標物体の座標と一致し、移動体2は位置推定装置1に到達する。
図13(c)において、位置推定装置1は、目標物体60に対して最も接近するために、空間画像を撮像するカメラを前方カメラ21から、上方カメラ22に切り替える。上記のように上側を向いた上方カメラ22の視野角は90度〜110度程度あり、天井にある目標物体60を画角内に捕らえることが出来る。
そして位置推定装置1は、カメラ21で撮像された空間画像に対してセマンティックセグメンテーションによる推論を行って目標物体の輪郭に沿った外接矩形を得る。
位置推定装置1は、目標物体60を真下から見上げたときのセマンティックセグメンテーションの推論モデルを備えている。
位置推定装置1は、推論によって得られた外接矩形の、上記推論モデルにおける外接矩形に対するずれ量を算出し、このずれ量が解消するように移動体2を移動させ、回転させる。
その結果、
図13(d)において、位置推定装置1は、目標物体60を真下から見上げる位置、すなわち目標物体60に対して最も接近した位置に至る。
【0042】
図14は、移動体を目標物体に最も接近させるための制御を詳しく説明する図である。
(1)は、物体を真下から見上げたときのセマンティックセグメンテーション(以下、SSと略して表記する)推論モデルを表す画像を示している。
位置推定装置1は物体の真下にあるときに物体に最接近していると考えられるため、物体を真下から見上げたときのSS推論モデルを、移動体を目標物体に最も接近させるための制御に用いる。SS推論モデルを用いた推論結果として、画像に含まれる物体の輪郭と、その外接矩形を得ることができる。
【0043】
(1)に示すSS推論モデルでは、通常のCNNよりも詳細に、物体の画素とその外側の画素を区別して学習することができる。よって、(1)のSS推論モデルでは、目標物体60を真下から見上げて上方カメラ22で撮像した空間画像50において、目標物体60の画素と、その外側の例えば天井70の画素と、が区別して学習されている。目標物体60は、上記の基準物体A〜Cの何れかであってもよいし、同じ空間に存在する他の物体であっても構わない。
また目標物体60と天井70の画素とが明確に区別されていることで、目標物体60の輪郭に沿った外接矩形(バウンディングボックス)65が付与される。目標物体60の形状に関わらず目標物体60の輪郭に沿った外接矩形65が付与される。
SS推論モデルは、上方カメラ22の画角すなわち空間画像50内における外接矩形65の4点座標、空間画像50内における外接矩形65の角度、外接矩形65の対角線の長さ等の情報を含んでいる。
【0044】
(2)は、上方カメラ22で撮像した空間画像50から、(1)のSS推論モデルを用いた推論によって識別した目標物体60の画像(推論結果)を示している。
位置推定装置1は、
図13(c)に示したように、上方カメラ22によって、(2)の空間画像50を撮像している。
(2)の推論結果においても、目標物体60と、その外側の天井70と、が識別されている。しかし、(2)の空間画像50は、目標物体60を真下から見上げて撮像したものではない。
従って、(2)の空間画像50において識別した目標物体60に付与される外接矩形66は、空間画像50内の位置や角度が外接矩形65とはずれている。
このずれを解消するように、位置推定装置1を搭載した移動体2を移動させることで、移動体2を目標物体60の真下、すなわち、最も目標物体60に近い位置に移動させることができる。
【0045】
(3)は、SS推論モデルにおける目標物体60の外接矩形65と、識別した目標物体60の外接矩形66と、のずれを解消する制御を示している。下記の説明は一例であり、最終的にずれが解消すれば必ずしもこのような処理に限定されない。
(3)において、(a)は、外接矩形66の外接矩形65に対するずれ量を示している。
位置推定装置1は、近接制御部37の制御によって、例えば、(a)でずれている外接矩形65及び外接矩形66それぞれの中心(対角線の交点)同士が一致するまで、ずれに向かって、すなわち(b)における矢印方向(前方向、左方向)に移動体2を移動させる。
(c)において、外接矩形65及び外接矩形66それぞれの中心が一致すると、位置推定装置1は、近接制御部37の制御によって、外接矩形65及び外接矩形66の頂点座標が一致するまで、ずれに向かって、すなわち(c)に示す方向に移動体2をカーブ(方向転換)させる。
これによって、(d)に示すように、外接矩形65及び外接矩形66が一致し、
図13(d)に示したように、移動体2が目標物体60の真下に移動したことになる。
【0046】
近接制御部37は、外接矩形65及び外接矩形66のずれが解消するまで移動体2を移動させながら、SS推論モデルを用いた目標物体60の識別を繰り返し行う。
あるいは、最初に空間画像50から目標物体60を識別した(2)の場合におけるずれ量から移動方向と回転量を算出したうえで、算出した値に応じて移動体2を移動させてもよい。
この場合には、移動体2が移動する毎にSS推論モデルを用いた目標物体60の識別を行う必要がない。
【0047】
図15は、位置推定装置のCPUが実行する近接制御処理の流れを説明するフローチャートである。
CPU11(空間画像取得部31)は、ステップS211において、近接フラグがONであるか否かを判定する。
近接フラグがONとなったと判定した場合(ステップS211でYes)、CPU11(空間画像取得部31)は、空間画像を取得するカメラを前方カメラ21から上方カメラ22に切り替える。
CPU11(近接制御部33)は、ステップS213において、上方カメラ22の撮像(空間画像)に対して、SS推論モデルによるAI推論を行い、推論結果として物体を検出する。
CPU11(近接制御部33)は、ステップS214において、推論モデルによる物体の外接矩形と、推論結果による物体の外接矩形と、を比較する。
比較の結果、CPU11(近接制御部33)は、ステップS215において、外接矩形同士のずれ量(移動方向、回転量)を算出する。
【0048】
CPU11(近接制御部33)は、ステップS216において、移動体2に対して、外接矩形同士のずれに向かって移動するように指示する。
CPU11(近接制御部33)は、ステップS217において、外接矩形同士のずれが解消したか否かを判定する。
CPU11(近接制御部33)は、外接矩形同士のずれが解消したと判定した場合(ステップS217でYes)、ステップS218において、近接フラグをOFFにする。
次の目標物体がある場合には、
図12の移動制御処理と
図15の近接制御処理を繰り返し実行してもよい。
【0049】
以上のように構成したことにより、目標物体60を撮像し、セマンティックセグメンテーションによる推論と比較を含む簡便な処理を行うことのみで、位置推定装置1を搭載した移動体2を、目標物体60に最も近づける制御が可能となる。
なお、上記では、位置推定装置1を搭載した移動体2を目標物体60に最も近づける制御において、セマンティックセグメンテーションの推論結果である外接矩形を用いている。
ただし、それに限らず、セマンティックセグメンテーションの推論で得られる輪郭の情報を用いてもよい。すなわち、推論モデルの輪郭情報と、推論結果の輪郭情報が一致するように、移動体2を移動させる制御を行うのである。しかし、輪郭情報を使った制御は計算量が多くなり、非常に高負荷となるため、外接矩形を用いた方が有利である。
近接制御部33は、
図14(3)で説明したずれ量を解消するため移動方向と回転量を、位置推定装置1が備える表示装置に表示してもよい。
位置推定装置1を携行する作業員等は表示を確認しながら移動することによって、自らが目標物体に最も接近したか否かを判断することが出来る。
【0050】
<第1の態様>
第1の態様は、空間内での自装置の位置を推定する位置推定装置1であって、空間を撮像した空間画像を取得する空間画像取得部31と、空間内に存在する物体の自装置からの距離情報を取得する距離情報取得部32と、空間内に存在する複数の基準物体の位置と、予め測定した基準物体間の実測距離と、を含むマップ情報を記憶するマップ情報記憶部44と、予め学習した各基準物体に係る第1推論モデル情報を記憶するモデル情報記憶部43と、空間画像に対して第1推論モデル情報に基づく推論を行い空間画像に含まれる基準物体を検出する物体検出部33と、物体検出部によって2以上の基準物体が検出されたとき、検出された基準物体をマップ情報内で特定する物体特定部34と、特定された基準物体のマップ情報内での位置と、距離情報に基づく各基準物体と自装置との距離と、実測距離と、に基づいて、空間内での自装置の位置を推定する位置推定部35と、を備える位置推定装置である。
このように構成したので、位置推定装置1は、空間画像内に2以上の基準物体を検出することで、空間内における自装置の位置を容易に推定することができる。
【0051】
<第2の態様>
第2の態様は、位置推定装置を搭載した移動体を、空間内における任意の目標物体の位置まで移動させる制御を行う移動制御部を備え、マップ情報は、目標物体の位置を含み、移動制御部は、位置推定部が推定する位置が目標物体の位置と一致するように、移動体を移動させる制御を行う位置推定装置である。
位置推定装置1を搭載した移動体2は、位置推定装置1によって空間内において自らの位置を推定しつつ、空間内に存在する目標物体に向けて移動することができる。
【0052】
<第3の態様>
第3の態様は、モデル情報記憶部は、予め学習した位置推定装置が目標物体に最も接近したときの各目標物体に係る第2推論モデル情報を記憶し、物体検出部は、位置推定部が推定する位置がマップ情報内における目標物体の位置と一致したあと、第2推論モデル情報に基づいて空間画像に対して推論を行うことによって目標物体を検出し、物体検出部が検出した目標物体の画像情報が第2推論モデル情報の画像情報と一致するように、移動体を制御する近接制御部をさらに備える位置推定装置である。
位置推定装置1を搭載した移動体2を、簡単な処理で目標物体60に最も近づける制御が可能となる。
【0053】
<第4の態様>
第4の態様は、走行手段101と、該走行手段101を駆動する駆動手段102と、請求項1乃至6の何れか一項に記載の位置推定装置1と、位置推定装置1による制御に基づいて駆動手段102を制御する駆動制御手段103と、を備える。
位置推定装置1を搭載した移動体2は、位置推定装置1によって空間内において自らの位置を推定しつつ、空間内に存在する目標物体に向けて移動することができる。