(57)【要約】【課題】複数のセンサの座標系間での任意の座標変換を実現するための技術を提供することである。【解決手段】本開示の一態様は、複数の座標系をノードとし、２つの座標系間の変換関数をエッジとするグラフ構造において、第１の座標系から第２の座標系までの変換経路を検出するステップと、前記グラフ構造において前記変換経路が検出されると、前記検出された変換経路に従って前記第１の座標系を前記第２の座標系に変換する変換関数を導出するステップと、を有する座標情報取得方法に関する。【選択図】図４
2020190888.tif 000002
【特許請求の範囲】
【請求項１】
複数の座標系をノードとし、２つの座標系間の変換関数をエッジとするグラフ構造において、第１の座標系から第２の座標系までの変換経路を検出するステップと、
前記グラフ構造において前記変換経路が検出されると、前記検出された変換経路に従って前記第１の座標系を前記第２の座標系に変換する変換関数を導出するステップと、を有する座標情報取得方法。
【請求項２】
前記第１の座標系は移動体の座標系であり、前記第２の座標系は非移動体の座標系である、請求項１記載の座標情報取得方法。
【請求項３】
前記変換関数に従って前記移動体を前記第２の座標系内の目標位置へ移動させるステップを更に有する、請求項２記載の座標情報取得方法。
【請求項４】
前記２つの座標系間の変換関数は、確度と関連付けされる、請求項１乃至３何れか一項記載の座標情報取得方法。
【請求項５】
前記導出するステップは、前記第１の座標系から前記第２の座標系までの複数の変換経路が検出されると、前記検出された変換経路のうち前記確度が最も高い変換経路に従って前記第１の座標系を前記第２の座標系に変換する変換関数を導出する、請求項４記載の座標情報取得方法。
【請求項６】
前記確度が更新されると、前記更新された確度に基づいた変換関数によって前記グラフ構造を更新するステップを更に有する、請求項４又は５記載の座標情報取得方法。
【請求項７】
移動体のオドメトリは、前記第１の座標系に基づき規定され、
目標位置を撮像する撮像装置の撮像範囲は、前記第２の座標系に基づき規定される、請求項１乃至６何れか一項記載の座標情報取得方法。
【請求項８】
移動体が第３の座標系に基づき規定される撮像装置の撮像範囲に入ると、前記第１の座標系を前記第３の座標系に変換する変換関数を取得するステップを更に有する、請求項１乃至７何れか一項記載の座標情報取得方法。
【請求項９】
所定の移動動作によって移動体を移動させるステップと、
前記所定の移動動作を撮像した映像に対して透視変換を実行するステップと、
前記透視変換の結果として前記移動体の第４の座標系を取得するステップと、
を更に有する、請求項１乃至８何れか一項記載の座標情報取得方法。
【請求項１０】
前記所定の移動動作は、同一直線上に３点が並ばない４点以上の座標を抽出することを可能にする、請求項９記載の座標情報取得方法。
【請求項１１】
前記所定の移動動作は、コの字状の軌跡によるものである、請求項１０記載の座標情報取得方法。
【請求項１２】
複数の座標系をノードとし、２つの座標系間の変換関数をエッジとするグラフ構造において、第１の座標系から第２の座標系までの変換経路を検出する変換経路検出部と、
前記グラフ構造において前記変換経路が検出されると、前記検出された変換経路に従って前記第１の座標系を前記第２の座標系に変換する変換関数を導出する変換関数導出部と、
を有する制御装置。
【請求項１３】
複数の座標系をノードとし、２つの座標系間の変換関数をエッジとするグラフ構造において、第１の座標系から第２の座標系までの変換経路を検出する処理と、
前記グラフ構造において前記変換経路が検出されると、前記検出された変換経路に従って前記第１の座標系を前記第２の座標系に変換する変換関数を導出する処理と、
をコンピュータに実行させるプログラム。
【請求項１４】
複数の座標系をノードとし、２つの座標系間の変換関数をエッジとするグラフ構造において、第１の座標系から第２の座標系までの変換経路を検出する変換経路検出部と、
前記グラフ構造において前記変換経路が検出されると、前記検出された変換経路に従って前記第１の座標系を前記第２の座標系に変換する変換関数を導出する変換関数導出部と、
を有する制御装置を含む移動体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、座標情報取得方法、制御装置、移動体及びプログラムに関する。
【背景技術】
【０００２】
ロボットや自動運転車などの移動体には、自己の位置を推定するための複数のセンサが通常組み込まれている。このようなセンサとして、車輪回転数により走行距離（オドメトリ）を計測するオドメータ、レーザ光を利用した隣接物体を検知及び測距するＬＩＤＡＲ（Ｌｉｇｈｔ  Ｄｅｔｅｃｔｉｏｎ  ａｎｄ  Ｒａｎｇｉｎｇ）装置、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）装置、ランドマーク認識を実現する車載カメラなどがあげられる。
【０００３】
一方、このようなセンサを搭載していない移動体の位置や姿勢を移動体の周辺に配置された固定カメラや深度センサなどを介し検出する技術もまた提案されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】PLAGEMANN Christian, et al., "Real-time identification and localization of body parts from depth images", Robotics and Automation (ICRA), 2010 IEEE International Conference on IEEE, 2010, p.3108-3113.
【非特許文献２】VAUGHAN Richard T., et al., "Localization-space trails for robot teams", IEEE Transactions on Robotics and Automation, 2002, 18.5: 796-812.
【非特許文献３】BATALIN Maxmi A., SUKHATME Gaurav S, HATTIG Myron, "Mobile robot navigation using a sensor network". Robotics and Automation, 2004, Proceedings ICRA'04 2004, IEEE International Conference on IEEE 2004, p.636-641.
【非特許文献４】GOEL Puneet, ROUMELIOTIS Stergios I, SUKHATME Gaurav S., "Robust localization using relative and absolute position estimates", Intelligent Robots and Systems, 1999 IROS'99 Proceedings, 1999 IEEE/RSJ International Conference on IEEE 1999, p.1134-1140.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本開示の課題は、複数のセンサの座標系間での任意の座標変換を実現するための技術を提供することである。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本開示の一態様は、複数の座標系をノードとし、２つの座標系間の変換関数をエッジとするグラフ構造において、第１の座標系から第２の座標系までの変換経路を検出するステップと、前記グラフ構造において前記変換経路が検出されると、前記検出された変換経路に従って前記第１の座標系を前記第２の座標系に変換する変換関数を導出するステップと、を有する座標情報取得方法に関する。
【図面の簡単な説明】
【０００７】
【図１】本開示の一実施例による移動体の移動に伴う座標系間の座標変換を示す概略図である。
【図２】本開示の一実施例による移動体のハードウェア構成を示すブロック図である。
【図３】本開示の一実施例による制御装置の機能構成を示すブロック図である。
【図４】本開示の一実施例による制御処理を示すフローチャートである。
【図５】本開示の一実施例による移動体、ドック及び撮像装置の配置を示す図である。
【図６】本開示の一実施例による移動体の移動動作に基づく透視変換を示す図である。
【図７】本開示の一実施例による変換関係を示すグラフ構造を示す図である。
【図８】本開示の他の実施例による変換関係を示すグラフ構造を示す図である。
【図９】本開示の一実施例による制御装置のハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【０００８】
以下、図面に基づいて本発明の実施の形態を説明する。以下の実施形態では、ロボット装置などの移動体の動作を制御する制御装置が開示される。
［本開示の概略］
本開示を概略すると、制御装置は、例えば、ロボット装置などの移動体に組み込まれ、移動体の始動時の位置を原点とし、例えば、移動に伴うオドメトリの変化に従って移動体の位置を追跡するための第１の座標系を有する。ユーザなどから移動体を目標位置に移動させる指示を受信すると、制御装置は、複数の座標系をノードとし、２つの座標系間の変換関数をエッジとするグラフ構造を予め保持し、目標位置を撮像可能な撮像装置の座標系と移動体の座標系との間の変換経路を当該グラフ構造から検出する。そして、制御装置は、検出した変換経路に従って移動体の座標系から撮像装置の座標系への座標変換を規定する変換関数を導出し、導出した変換関数に従って移動体を目標位置に移動させる。
【０００９】
例えば、図１に示される本実施形態の環境状態においては、それぞれ座標系を有する移動体Ｓ及び固定カメラＣ１，Ｃ２，Ｃ３がある。カメラＣ１とＣ２とは撮像範囲が重複していないが、カメラＣ１とＣ２との位置関係は事前に知られており、カメラＣ１の撮像範囲に基づく座標系Ｃ＿Ｃ１からカメラＣ２の撮像範囲に基づく座標系Ｃ＿Ｃ２への変換関数ｔｆＣ１→Ｃ２が定義可能である。また、カメラＣ２とＣ３の位置関係は事前に知られていないが、撮像範囲内に存在する特徴点、例えば、特定の物体や床などに設けられた特徴があり、この特徴点を介しカメラＣ２の撮像範囲Ｃ＿Ｃ２に基づく座標系からカメラＣ３の撮像範囲に基づく座標系Ｃ＿Ｃ３への変換関数ｔｆＣ２→Ｃ３が定義可能である。また、カメラＣ１の撮像範囲内に移動体Ｓが存在するとき、移動体ＳのオドメトリからカメラＣ１の撮像範囲に基づく座標系Ｃ＿Ｃ１への変換関数ｔｆＳ→Ｃ１が定義可能である。従って、移動体Ｓの座標系Ｃ＿Ｓ及びカメラＣ１，Ｃ２，Ｃ３のそれぞれの座標系Ｃ＿Ｃ１，Ｃ＿Ｃ２，Ｃ＿Ｃ３をノードとし、各座標系間で定義可能な変換関数をエッジとして有するグラフ構造によって、上述した座標変換関係は図１の右側に示されるグラフ構造により記述できる。
【００１０】
ここで、移動体ＳをカメラＣ３の撮像範囲内の目標位置に移動する移動指示を受信すると、制御装置は、移動体Ｓの座標系Ｃ＿Ｓ（第１の座標系の一例）をカメラＣ３の座標系Ｃ＿Ｃ３（第２の座標系の一例）に変換し、移動体Ｓの移動距離及び移動方向などの移動経路（例えば、オドメトリ）を決定する必要がある。制御装置は、第１の座標系Ｃ＿Ｓから第２の座標系Ｃ＿Ｃ３への変換経路（ｔｆＳ→Ｃ１，ｔｆＣ１→Ｃ２，ｔｆＣ２→Ｃ３）をグラフ構造において検出し、検出された変換経路に従って座標系Ｃ＿Ｓから座標系Ｃ＿Ｃ３への変換関数ｔｆＳ→Ｃ３を導出可能であると判断する。制御装置は、導出した変換関数ｔｆＳ→Ｃ３に従って、現在位置から目標位置まで移動体Ｓを移動するためのオドメトリを決定することができる。
【００１１】
なお、本明細書において、カメラ等の撮像装置及び後述するドックはそれぞれ座標系を有するセンサの一例である。また、移動体の目標位置を検知範囲に含むセンサの座標系を第２の座標系とする。
［移動体］
まず、図２を参照して、本開示の一例の移動体を説明する。図２は、本開示の一実施例による移動体の構成を示すブロック図である。
【００１２】
図２に示されるように、本開示の一実施例による移動体１０は、可動部２０、検知部３０、通信部４０及び制御装置１００を有する。例えば、移動体１０は、可動式のロボット装置、自動運転車、無人航空機などであってもよく、撮像装置をはじめとする他の座標系を有する他のセンサの感知範囲内における目標位置が他のセンサの座標系において指定されると、指定された目標位置に到達するように、制御装置１００による制御下で可動部２０を駆動させる。
【００１３】
可動部２０は、移動体１０を移動させるための車輪、キャタピラ、回転翼などの可動要素から構成され、制御装置１００によって制御される。具体的には、制御装置１００は、移動体１０を所望の位置に移動させるため、可動部２０を制御する。
【００１４】
検知部３０は、可動部２０の可動状態を検知するセンサ、移動体１０の近傍のオブジェクトを検出する近接センサなどの各種センサから構成され、センサによって検知された情報、又はそれから得られる位置情報を制御装置１００に提供する。
【００１５】
通信部４０は、撮像装置やサーバなどの外部装置と通信するための通信回路から構成され、制御装置１００と外部装置との間のデータ送受信を実行する。好ましくは、当該データ送受信は、無線通信によって実現される。
【００１６】
制御装置１００は、移動体１０を制御し、具体的には、以降において詳述されるように、可動部２０、検知部３０、通信部４０などの各構成要素を制御する。
【００１７】
なお、本開示による移動体１０は、上述したハードウェア構成に限定されず、他の何れか適切なハードウェア構成を有してもよい。また、制御装置１００の機能部の一部又は全ては、必ずしも移動体１０内に組み込まれる必要はなく、例えば、移動体１０は、通信接続された制御装置１００によって遠隔操作されてもよい。
［制御装置］
次に、図３〜８を参照して、本開示の一実施例による制御装置を説明する。図３は、本開示の一実施例による制御装置の機能構成を示すブロック図である。
【００１８】
図３に示されるように、本開示の一実施例による制御装置１００は、指示取得部１１０、変換経路検出部１２０、変換関数導出部１３０及び移動制御部１４０を有する。
【００１９】
指示取得部１１０は、第１の座標系を有する移動体１０を第２の座標系における目標位置に移動させる指示を取得する。具体的には、移動体１０は、移動体１０の起動位置などを原点とする第１の座標系を有し、目標位置は、撮像装置などによって撮像された映像内の位置として指定される。すなわち、第１の座標系は移動体１０の座標系であり、第２の座標系は非移動体の座標系である。目標位置は、撮像装置の撮像範囲に基づく第２の座標系における位置であり、撮像装置の撮像範囲に基づく第２の座標系は、移動体１０の第１の座標系とは異なっている。このため、移動体１０を目標位置に移動するには、撮像装置の第２の座標系における目標位置が移動体１０の第１の座標系の何れの位置に対応するか決定する必要がある。
【００２０】
変換経路検出部１２０は、例えば、第１の座標系と、第１の座標系と異なる第２の座標系を有する複数の座標系をノードとし、２つの座標系間の変換関数をエッジとするグラフ構造において、移動体１０の第１の座標系から目標位置を撮像している撮像装置の第２の座標系までの変換経路を検出する。変換経路検出部１２０は、例えば、移動体１０の移動可能範囲にある撮像装置及び撮像装置の座標系間の変換関数などに関する情報を予め取得し、取得した情報に基づき各撮像装置の座標系をノードとし、２つの座標系間の変換関数をノード間のエッジとするグラフ構造を構成及び保持する。当該グラフ構造は、例えば、図１の右側に示されるような有向グラフであってもよく、移動体１０の移動、カメラの追加又は削除などに伴って動的に更新されうる。
【００２１】
例えば、図１に示された例において、移動体１０をカメラＣ３の撮像範囲内の目標位置に移動する移動指示を受信すると、変換経路検出部１２０は、保持しているグラフ構造において移動体１０の第１の座標系Ｃ＿Ｓから第２の座標系Ｃ＿Ｃ３への変換経路があるか確認し、当該変換経路（ｔｆＳ→Ｃ１，ｔｆＣ１→Ｃ２，ｔｆＣ２→Ｃ３）を検出すると、検出した変換経路を変換関数導出部１３０に通知する。なお、このような変換経路が検出できなかった場合、変換経路検出部１２０は、何らかのエラー処理を行ってもよい。例えば、エラー処理は、その場で停止する、ユーザや管理者に変換できないことを示し、代替の座標を要求する、あるいは、緊急時の移動先が定められており、その位置がわかる場合には移動体をその座標へと移動する、などであってもよい。
［センサ］
センサは、それぞれ座標系を有する。
【００２２】
一実施例では、２つ又はそれ以上の座標系間の変換関数は、確度（ｃｅｒｔａｉｎｔｙ）と関連付けされてもよい。変換関数は、画角、収差やレンズの歪み、オドメータのドリフトなどから誤差を内包しており、変換関数の出力は確度を含むことが好ましい。例えば、図１に示された例では、変換関数ｔｆＣ２→Ｃ３は撮像範囲内の特徴点に基づき決定されているため、当該特徴点の周囲では確度は高くなるが、特徴点から離れた点では確度が低くなるよう設定することができる。また、収差に基づいて、撮像範囲内中央に近い位置よりも端部に近い位置において確度を低く設定することができる。
【００２３】
また、確度は動的に決定されてもよい。例えば、移動体１０の移動中に新たな特徴点が加えられた場合、変換関数の出力の確度を高くすることができ、他方、移動体１０のオドメトリのように誤差が蓄積する場合、移動体１０の移動によって変換関数の出力の確度を低下させてもよい。また、変換経路検出部１２０は、何れかの確度が更新された場合、更新された確度に基づいた変換関数によってグラフ構造を更新してもよい。
【００２４】
変換関数導出部１３０は、変換経路が検出されると、検出された変換経路に従って移動体１０の第１の座標系を目標位置を撮像している撮像装置の第２の座標系に変換する変換関数を導出する。例えば、図１に示された例において、移動体１０の第１の座標系Ｃ＿Ｓから移動目標の第２の座標系Ｃ＿Ｃ３への変換経路（ｔｆＳ→Ｃ１，ｔｆＣ１→Ｃ２，ｔｆＣ２→Ｃ３）が検出されたという通知を受信すると、変換関数導出部１３０は、検出された変換経路に従って第１の座標系Ｃ＿Ｓから第２の座標系Ｃ＿Ｃ３への変換関数ｔｆＳ→Ｃ３を導出する。具体的には、変換関数ｔｆＳ→Ｃ３は、変換経路上の３つの変換関数ｔｆＳ→Ｃ１，ｔｆＣ１→Ｃ２，ｔｆＣ２→Ｃ３の合成関数を導出し、当該合成関数を変換関数ｔｆＳ→Ｃ３としてもよい。例えば、変換関数ｔｆＳ→Ｃ３は、入力された第２の座標系Ｃ＿Ｃ３上の目標位置の座標を移動体１０の現在位置からの移動経路（例えば、移動方向、移動距離など）又はオドメトリに変換する関数であってもよい。変換関数導出部１３０は、このように取得した変換関数を移動制御部１４０にわたす。
【００２５】
一実施例では、移動体１０の第１の座標系から目標位置を撮像している撮像装置の第２の座標系までの複数の変換経路が検出されると、変換関数導出部１３０は、検出された変換経路のうち確度が最も高い変換経路に従って移動体１０の第１の座標系を目標位置を撮像している撮像装置の第２の座標系に変換する変換関数を導出してもよい。具体的には、各変換関数に確度が関連付けされている場合、変換経路検出部１２０は、これらの変換関数の確度を合成する予め規定された関数を利用し、当該関数に基づき合成された確度を算出してもよい。当該合成関数は、例えば、確度の和又は積のようなものでもよいし、所定の閾値で切り上げ・切り下げを行うものでもよいし、あるいは、別途２つの変数を入力として１つの値を得るような複雑な関数でもよい。変換経路検出部１２０は、検出された複数の変換経路のそれぞれについて、変換経路上の変換関数の合成された確度を算出し、合成された確度が最大となる変換経路、又は合成された確度が大きい変換経路のうちのいくつかを変換関数導出部１３０に通知することができる。変換関数導出部１３０は、通知された変換経路に従って変換関数を導出してもよい。
【００２６】
移動制御部１４０は、導出された変換関数に従って移動体１０による目標位置への移動を制御し、変換関数に従って移動体１０を第２の座標系内の目標位置へ移動させる。具体的には、移動制御部１４０は、移動体１０の第１の座標系から目標位置を撮像している撮像装置の第２の座標系までの導出された変換経路に基づき、移動体１０の現在位置から目標位置までの移動経路又はオドメトリを決定し、決定した移動経路又はオドメトリに従って移動体１０を目標位置に移動させる。例えば、変換関数導出部１３０から変換関数ｔｆＳ→Ｃ３を取得すると、移動制御部１４０は、変換関数ｔｆＳ→Ｃ３に座標系Ｃ＿Ｃ３上の目標位置を入力し、座標系Ｃ＿Ｓ上の変換された目標位置を取得し、取得した座標系Ｃ＿Ｓ上の目標位置に移動するための移動経路又はオドメトリに従って移動体１０の可動部２０を駆動させる。
【００２７】
一実施例では、移動体１０が第３の座標系に基づき規定される撮像装置の撮像範囲に入ると、移動体１０の第１の座標系を当該第３の座標系に変換する変換関数を取得してもよい。例えば、移動体１０が現在位置から第２の座標系Ｃ＿Ｃ３上の目標位置に移動する際、移動体１０は第３の座標系Ｃ＿Ｃ２を通過する。移動体１０が第３の座標系Ｃ＿Ｃ２を通過する際、変換経路検出部１２０は、移動体１０の第１の座標系Ｃ＿Ｓから第３の座標系Ｃ＿Ｃ２への変換関数ｔｆＳ→Ｃ２を取得可能であり、具体的には、カメラＣ２によって撮像された第３の座標系Ｃ＿Ｃ２上の移動体１０の位置と撮像された位置の第１の座標系Ｃ＿Ｓ上の座標位置とに基づき、第１の座標系Ｃ＿Ｓから第２の座標系Ｃ＿Ｃ２への変換関数ｔｆＳ→Ｃ２を決定できる。このようにして、新たな変換関数ｔｆＳ→Ｃ２を取得すると、変換経路検出部１２０は、取得した変換関数ｔｆＳ→Ｃ２を追加することによってグラフ構造を更新することができる。また、変換関数ｔｆＳ→Ｃ２の確度も取得できた場合、変換経路検出部１２０は、変換関数ｔｆＳ→Ｃ２を当該確度と関連付けてグラフ構造に登録してもよい。このようにして、移動体１０が移動するに従って、動的にグラフ構造を更新することができる。
【００２８】
図４は、本開示の一実施例による制御処理を示すフローチャートである。制御装置１００は、図示された制御処理に従って移動体１０の移動を制御する。
【００２９】
図４に示されるように、ステップＳ１０１において、指示取得部１１０は、移動体１０を目標位置に移動させる指示を取得する。例えば、指示取得部１１０は、オドメトリに基づき規定される第１の座標系Ｃ＿Ｓを有する移動体１０をカメラＣ３の第２の座標系Ｃ＿Ｃ３上の目標位置に移動する移動指示を受信する。
【００３０】
ステップＳ１０２において、変換経路検出部１２０は、グラフ構造において移動体１０の第１の座標系Ｃ＿Ｓから第２の座標系Ｃ＿Ｃ３までの変換経路を検出する。変換経路検出部１２０は、座標系間の変換関数の存在を示す情報をグラフ構造として保持し、第１の座標系Ｃ＿Ｓから第２の座標系Ｃ＿Ｃ３までの変換経路をグラフ構造から検出する。
【００３１】
ステップＳ１０３において、変換関数導出部１３０は、検出された変換経路に従って移動体１０の第１の座標系Ｃ＿Ｓを第２の座標系Ｃ＿Ｃ３に変換する変換関数ｔｆＳ→Ｃ３を導出する。例えば、図１に示されるような移動体１０の第１の座標系Ｃ＿Ｓから第２の座標系Ｃ＿Ｃ３への変換経路（ｔｆＳ→Ｃ１，ｔｆＣ１→Ｃ２，ｔｆＣ２→Ｃ３）が検出されると、変換関数導出部１３０は、変換経路上の３つの変換関数ｔｆＳ→Ｃ１，ｔｆＣ１→Ｃ２，ｔｆＣ２→Ｃ３の合成関数を導出し、当該合成関数を変換関数ｔｆＳ→Ｃ３としてもよい。
【００３２】
ステップＳ１０４において、移動制御部１４０は、導出された変換関数に従って移動体１０による目標位置への移動を制御する。例えば、変換関数ｔｆＳ→Ｃ３が導出されると、移動制御部１４０は、導出された変換関数ｔｆＳ→Ｃ３に目標位置を入力し、第１の座標系Ｃ＿Ｓ上の変換された目標位置に対応する移動経路又はオドメトリに従って移動体１０の可動部２０を制御する。
【００３３】
環境状態は、図１に示された移動体１０とカメラＣ１，Ｃ２，Ｃ３とから構成される必要はなく、本開示による制御処理は、図５に示されるような環境状態にも適用可能である。すなわち、図５に示される第２の実施形態の環境状態では、カメラＣ１、移動体１０及び移動体１０のドックＤ１が室内に配置されている。移動体１０は、ドックＤ１に対する近接センサなどの検知部３０を有し、移動体１０がドックＤ１の十分近くにあるとき、検知部３０は、移動体１０とドックＤ１との間の距離及び方向を検知できる。例えば、ドック１０の近接センサは、ビーコンが重畳された超音波信号を発信し、検知部３０は、ドック１０から発信された超音波信号を受信可能な指向性を備えた近接センサを搭載している。この場合、検知部３０は、移動体１０を回転させることによって、あるいは、近接センサを回転させることによって、どの方角から超音波信号が到来するか判断することができる。また、カメラＣ１は部屋全体を撮像範囲としてもよい。移動体１０は自己の第１の座標系Ｃ＿Ｓを有し、例えば、起動時などの初期状態では第１の座標系Ｃ＿Ｓの原点Ｃ＿Ｓ（０，０）にあるとする。また、カメラＣ１もまた撮像範囲に関して座標系Ｃ＿Ｃ１を有し、ドックＤ１もまた座標系Ｃ＿Ｄ１を有し、初期状態では座標系Ｃ＿Ｄ１の原点にあるとする。以下の実施例では、座標系は２次元とされるが、本開示はこれに限定されず、３次元座標系であってもよいし、あるいは、オイラー角のような姿勢を含む座標系であってもよい。
【００３４】
また、制御装置１００は、カメラＣ１が撮像する映像における座標系Ｃ＿Ｃ１上の移動体１０の位置を知っているとする。例えば、これは、カメラＣ１に座標検出機能が備えられることによって実現されてもよいし、あるいは、ネットワークなどを介し遠隔のサーバから座標系Ｃ＿Ｃ１上の移動体１０の位置を通知されることによって実現されてもよい。初期状態では、制御装置１００は、現在位置、すなわち、第１の座標系Ｃ＿Ｓの原点Ｃ＿Ｓ（０，０）に関する第１の座標系Ｃ＿Ｓ上の座標と座標系Ｃ＿Ｃ１の座標との関係のみ知っており、その他の点に関する関係については知らないと仮定する。すなわち、変換経路検出部１２０は、原点Ｃ＿Ｓ（０，０）に関する第１の座標系Ｃ＿Ｓ上の座標から座標系Ｃ＿Ｃ１の座標への変換関数ｔｆＳ→Ｃ１しか知らず、室内で移動体１０を移動させるためには、他の点に関して変換関数ｔｆＳ→Ｃ１を把握する必要がある。
【００３５】
このような環境状態において、指示取得部１１０が移動体１０をドックＤ１に移動する移動指示を受信したとする。当該移動指示に応答して、変換経路検出部１２０は、原点以外の点に関して変換関数ｔｆＳ→Ｃ１を把握するため、移動制御部１４０に透視変換モードに入るよう指示する。透視変換モードに入ると、移動制御部１４０は、所定の移動動作によって移動体１０を移動させ、当該所定の移動動作を撮像した映像に対して透視変換を実行し、透視変換の結果として移動体１０の透視変換された座標系を取得する。例えば、当該所定の移動動作は、図６に示されるようなコの字又はＵ字状の軌跡を取得するものであってもよい。すなわち、移動制御部１４０は、移動体１０を一定の距離Ｌだけ直線移動させ、次に時計回りに約９０度回転させて距離Ｌだけ直線移動させ、さらに時計回りに約９０度回転させて距離Ｌだけ直線移動させる。例えば、図示されるように、移動制御部１４０は、移動体１０をＣ＿Ｓ（０，０）→Ｃ＿Ｓ（０，１）→Ｃ＿Ｓ（１，１）→Ｃ＿Ｓ（１，０）のように移動させる。
【００３６】
そして、変換経路検出部１２０は、Ｃ＿Ｓ（０，０），Ｃ＿Ｓ（０，１），Ｃ＿Ｓ（１，１）及びＣ＿Ｓ（１，０）に対応するカメラＣ１の座標系Ｃ＿Ｃ１上の撮像位置を示す映像を取得し、取得した映像に対して透視変換を実行することによって透視変換後の座標系Ｃ＿Ｇ１を取得できる。しかしながら、本開示の移動動作はこれに限定されず、透視変換に必要とされる同一直線上に３点が並ばない４点以上の座標を抽出することを可能にする任意の移動動作であってもよい。また、透視変換に必要とされる座標の取得は、上述した所定の移動動作に限定されず、例えば、部屋の床の形状又は模様などの既知の情報を利用してもよい。
【００３７】
このようにして透視変換後の座標系Ｃ＿Ｇ１を取得すると、変換経路検出部１２０は、座標系Ｃ＿Ｓ，Ｃ＿Ｃ１，Ｃ＿Ｇ１の間の関係に基づき相互の変換関数ｔｆＳ→Ｇ１，ｔｆＧ１→Ｓ，ｔｆＣ１→Ｇ１，ｔｆＧ１→Ｃ１を取得できる。また、変換経路検出部１２０は、カメラＣ１により撮像されたドックＤ１の画像に基づき、カメラＣ１の座標系Ｃ＿Ｃ１とドックＤ１の座標系Ｃ＿Ｄ１との間の変換関数ｔｆＣ１→Ｄ１，ｔｆＤ１→Ｃ１も取得できる。ただし、変換関数ｔｆＣ１→Ｄ１，ｔｆＤ１→Ｃ１は、ドックＤ１の座標系Ｃ＿Ｄ１の原点に限定されたものでありうる。このようにして取得した変換関数に基づき、変換経路検出部１２０は、図７に示されるようなグラフ構造（以降、座標系グラフと呼ぶ）を構成することができる。
【００３８】
上述したように、これらの変換関数には確度が関連付けされうる。確度は、センサの特性や画像、検知時の環境、対象物の物理量の変化量、変換対象及び変換後の座標値などに依存する。例えば、カメラの例では、透視変換に利用した座標の各点を頂点とする凸集合内に含まれる点を変換する確度は高くなる一方、そこから離れるに従って誤差が大きくなるため、確度は低くなる。また、一般的には、解像度や微振動のため、カメラに近い点の座標の変換の確度は高くなる一方、カメラから離れた点の確度は低くなる。例えば、ドックＤ１の座標は、Ｃ＿Ｄ１（０，０）が最も正確にその座標を表していると言える。
【００３９】
確度の具体的な算出方法について、透視変換の場合、歪みがない画像（例えば、レンズ歪みのないカメラによる鉛直方向から撮像された画像）と透視変換後の画像では、互いに対応する点の座標に相違はなく、撮影された角度によって透視変換後の座標が変わることになる。このとき、透視変換前の座標と透視変換後の座標との差が大きいほど、確度は下がると考えられる。このため、変換対象の点Ｐについての確度を考えるとき、まず点Ｐに最も近い透視変換のための使用した点Ｑが選ばれる。透視変換後のそれぞれの点Ｐ'，Ｑ'について、Ｐ−Ｑ間の距離ＤｏとＰ'−Ｑ'間の距離Ｄｔとの差分に基づき確度Ｋを決定できる。例えば、Ｄｔ≧Ｄｏである場合、Ｋ＝Ｄｏ／Ｄｔとし、Ｄｔ＜Ｄｏである場合、Ｋ＝Ｄｔ／Ｄｏとしてもよい。
【００４０】
また、ある程度の補正が必要である場合、Ｋを更に関数の引数とすることも可能である。例えば、ＤｏとＤｔとの比が１に近いところでは確度を下げたくない場合、Ｋを対数などの関数を利用して補正してもよい。また、Ｄｏ，Ｄｔとの間の所定の対応関係に基づき、確度が決定されてもよい。あるいは、透視変換に利用した座標の各点を頂点とする凸集合内ではある手法を利用して確度を決定し、凸集合外では他の手法を利用して確度を決定するなど、異なる手法によって確度を決定してもよい。
【００４１】
移動体１０がドックＤ１に移動するためには、座標Ｃ＿Ｄ１（０，０）を移動体１０の座標系Ｃ＿Ｓに変換する必要がある。すなわち、変換経路検出部１２０は、保持している座標系グラフにおいて座標系Ｃ＿Ｄ１から座標系Ｃ＿Ｓへの変換経路を検出する必要がある。変換経路検出部１２０は、図７に示される座標系グラフから座標系Ｃ＿Ｄ１から座標系Ｃ＿Ｓへの変換経路ｔｆＤ１→Ｃ１，ｔｆＣ１→Ｇ１，ｔｆＧ１→Ｓを検出することができ、変換関数導出部１３０は、検出された変換経路ｔｆＤ１→Ｃ１，ｔｆＣ１→Ｇ１，ｔｆＧ１→Ｓに従って変換関数ｔｆＤ１→Ｓを導出する。移動制御部１４０は、変換関数ｔｆＤ１→Ｓに目標位置Ｃ＿Ｄ１（０，０）を入力し、変換関数ｔｆＤ１→Ｓから出力された移動経路又はオドメトリに従って移動体１０を移動させる。なお、変換関数ｔｆＤ１→Ｃ１は、上述したように、Ｃ＿Ｄ１（０，０）以外の点の確度は十分でなく、Ｃ＿Ｄ１（０，０）については十分な確度によって変換可能である。
【００４２】
また、移動体１０がドックＤ１への移動動作中にドックＤ１の近接センサの範囲内に入ると、変換経路検出部１２０は、変換関数ｔｆＤ１→Ｓ，ｔｆＳ→Ｄ１を取得することができ、図８に示されるように、取得した変換関数ｔｆＤ１→Ｓ，ｔｆＳ→Ｄ１を座標系グラフに追加する。このとき、座標系Ｃ＿Ｄ１から座標系Ｃ＿Ｓへの変換経路は、ｉ）ｔｆＤ１→Ｃ１，ｔｆＣ１→Ｇ１，ｔｆＧ１→Ｓと、ｉｉ）ｔｆＤ１→Ｓとの２つとなる。ｉ）ｔｆＤ１→Ｃ１，ｔｆＣ１→Ｇ１，ｔｆＧ１→Ｓと、ｉｉ）ｔｆＤ１→Ｓとに関連付けされる確度を比較すると、上述したように、変換経路ｉ）はＣ＿Ｄ１（０，０）以外の点については十分な確度を実現できず、以降の移動動作では、Ｃ＿Ｄ１（０，０）以外の点についても十分な確度が得られる変換経路ｉｉ）が利用されることになる。
【００４３】
カメラ等のセンサは、例えば移動体１０の移動に追従するよう検知範囲を変更させてもよい。
［制御装置のハードウェア構成］
実施形態における制御装置１００において、各機能は、アナログ回路、デジタル回路又はアナログ・デジタル混合回路で構成された回路であってもよい。また、各機能の制御を行う制御回路を備えていてもよい。各回路の実装は、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）等によるものであってもよい。
【００４４】
上記の全ての記載において、制御装置１００の少なくとも一部はハードウェアで構成されていてもよいし、ソフトウェアで構成され、ソフトウェアの情報処理によりＣＰＵ（Central Processing Unit）等が実施をしてもよい。ソフトウェアで構成される場合には、制御装置１００及びその少なくとも一部の機能を実現するプログラムを記憶媒体に収納し、コンピュータに読み込ませて実行させるものであってもよい。記憶媒体は、磁気ディスク（例えばフレキシブルディスク）や光ディスク（例えばＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ）等の着脱可能なものに限定されず、ハードディスク装置やメモリを利用するＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などの固定型の記憶媒体であってもよい。すなわち、ソフトウェアによる情報処理がハードウェア資源を用いて具体的に実装されるものであってもよい。さらに、ソフトウェアによる処理は、ＦＰＧＡ等の回路に実装され、ハードウェアが実行するものであってもよい。ジョブの実行は、例えば、ＧＰＵ（Graphics Processing Unit）等のアクセラレータを使用して行ってもよい。
【００４５】
例えば、コンピュータが読み取り可能な記憶媒体に記憶された専用のソフトウェアをコンピュータが読み出すことにより、コンピュータを上記の実施形態の装置とすることができる。記憶媒体の種類は特に限定されるものではない。また、通信ネットワークを介してダウンロードされた専用のソフトウェアをコンピュータがインストールすることにより、コンピュータを上記の実施形態の装置とすることができる。こうして、ソフトウェアによる情報処理が、ハードウェア資源を用いて、具体的に実装される。
【００４６】
図９は、本発明の一実施形態におけるハードウェア構成の一例を示すブロック図である。制御装置１００は、プロセッサ１０１と、主記憶装置１０２と、補助記憶装置１０３と、ネットワークインタフェース１０４と、デバイスインタフェース１０５と、を備え、これらがバス１０６を介して接続されたコンピュータ装置として実現できる。
【００４７】
なお、図９の制御装置１００は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、１台の制御装置１００が示されているが、ソフトウェアが複数のコンピュータ装置にインストールされて、当該複数の制御装置１００それぞれがソフトウェアの異なる一部の処理を実行してもよい。この場合、複数の制御装置１００それぞれがネットワークインタフェース１０４等を介して、通信してもよい。
【００４８】
プロセッサ１０１は、制御装置１００の制御部および演算装置を含む電子回路（処理回路、Processing circuit、Processing circuitry）である。プロセッサ１０１は、制御装置１００の内部構成の各装置などから入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を各装置などに出力する。具体的には、プロセッサ１０１は、制御装置１００のＯＳ（Operating System）や、アプリケーションなどを実行することにより、制御装置１００を構成する各構成要素を制御する。プロセッサ１０１は、上記の処理を行うことができれば特に限られるものではない。制御装置１００及びそれらの各構成要素は、プロセッサ１０１により実現される。ここで、処理回路とは、１チップ上に配置された１又は複数の電気回路を指してもよいし、２つ以上のチップあるいはデバイス上に配置された１又は複数の電気回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線又は無線により通信してもよい。
【００４９】
主記憶装置１０２は、プロセッサ１０１が実行する命令および各種データなどを記憶する記憶装置であり、主記憶装置１０２に記憶された情報がプロセッサ１０１により直接読み出される。補助記憶装置１０３は、主記憶装置１０２以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、メモリでもストレージでもよい。また、メモリには、揮発性メモリと、不揮発性メモリがあるが、いずれでもよい。制御装置１００内において各種データを保存するためのメモリ、例えば、メモリは、主記憶装置１０２又は補助記憶装置１０３により実現されてもよい。例えば、メモリの少なくとも一部は、この主記憶装置１０２又は補助記憶装置１０３に実装されていてもよい。別の例として、アクセラレータが備えられている場合には、前述したメモリの少なくとも一部は、当該アクセラレータに備えられているメモリ内に実装されていてもよい。
【００５０】
ネットワークインタフェース１０４は、無線又は有線により、通信ネットワーク１０８に接続するためのインタフェースである。ネットワークインタフェース１０４は、既存の通信規格に適合したものを用いればよい。ネットワークインタフェース１０４により、通信ネットワーク１０８を介して通信接続された外部装置１０９Ａと情報のやり取りが行われてもよい。
【００５１】
外部装置１０９Ａは、例えば、カメラ、モーションキャプチャ、出力先デバイス、外部のセンサ、入力元デバイスなどが含まれる。また、外部装置１０９Ａは、制御装置１００の構成要素の一部の機能を有する装置でもよい。そして、制御装置１００は、制御装置１００の処理結果の一部を、クラウドサービスのように通信ネットワーク１０８を介して受け取ってもよい。
【００５２】
デバイスインタフェース１０５は、外部装置１０９Ｂと直接接続するＵＳＢ（Universal Serial Bus）などのインタフェースである。外部装置１０９Ｂは、外部記憶媒体でもよいし、ストレージ装置でもよい。メモリは、外部装置１０９Ｂにより実現されてもよい。
【００５３】
外部装置１０９Ｂは出力装置でもよい。出力装置は、例えば、画像を表示するための表示装置でもよいし、音声などを出力する装置などでもよい。例えば、ＬＣＤ（Liquid Crystal Display）、ＣＲＴ（Cathode Ray Tube）、ＰＤＰ（Plasma Display Panel）、有機ＥＬ（ElectroLuminescence）ディスプレイ、スピーカなどがあるが、これらに限られるものではない。
【００５４】
なお、外部装置１０９Ｂは入力装置でもよい。入力装置は、キーボード、マウス、タッチパネル、マイクロフォンなどのデバイスを備え、これらのデバイスにより入力された情報を制御装置１００に与える。入力装置からの信号はプロセッサ１０１に出力される。
【００５５】
例えば、本実施形態における制御装置１００の指示取得部１１０、変換経路検出部１２０、変換関数導出部１３０及び移動制御部１４０等は、プロセッサ１０１により実現されてもよい。また、制御装置１００のメモリは、主記憶装置１０２又は補助記憶装置１０３により実現されてもよい。また、制御装置１００は、１又は複数のメモリを搭載してもよい。
【００５６】
本明細書において、"ａ，ｂおよびｃの少なくとも１つ"は、ａ，ｂ，ｃ，ａ−ｂ，ａ−ｃ，ｂ−ｃ，ａ−ｂ−ｃの組み合わせだけでなく、ａ−ａ，ａ−ｂ−ｂ，ａ−ａ−ｂ−ｂ−ｃ−ｃなどの同じ要素の複数の組み合わせも含む表現である。また、ａ−ｂ−ｃ−ｄの組み合わせのように、ａ，ｂ，ｃ以外の要素を含む構成もカバーする表現である。
【００５７】
同様に、本明細書において、"ａ，ｂ又はｃの少なくとも１つ"は、ａ，ｂ，ｃ，ａ−ｂ，ａ−ｃ，ｂ−ｃ，ａ−ｂ−ｃの組み合わせだけでなく、ａ−ａ，ａ−ｂ−ｂ，ａ−ａ−ｂ−ｂ−ｃ−ｃなどの同じ要素の複数の組み合わせも含む表現である。また、ａ−ｂ−ｃ−ｄの組み合わせのように、ａ，ｂ，ｃ以外の要素を含む構成もカバーする表現である。
【００５８】
以上、本開示の実施例について詳述したが、本開示は上述した特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本開示の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００５９】
１０  移動体
２０  可動部
３０  検知部
４０  通信部
１００  制御装置
１０１  プロセッサ
１０２  主記憶装置
１０３  補助記憶装置
１０４  ネットワークインタフェース
１０５  デバイスインタフェース
１１０  指示取得部
１２０  変換経路検出部
１３０  変換関数導出部
１４０  移動制御部
【図１】
2020190888.tif 000003
【図２】
2020190888.tif 000004
【図３】
2020190888.tif 000005
【図４】
2020190888.tif 000006
【図５】
2020190888.tif 000007
【図６】
2020190888.tif 000008
【図７】
2020190888.tif 000009
【図８】
2020190888.tif 000010
【図９】
2020190888.tif 000011