(57)【要約】【課題】地図作成処理及び顔認識処理を行う際の全体の処理バランスを改善できる。【解決手段】自律移動装置１００は、画像を取得する撮像部３１と、撮像部３１が取得した画像に基づいて、自機位置を推定しながら周囲の地図を作成する地図作成部１１と、撮像部３１が取得した画像から人の顔を検出、識別及び追跡することによって認識する顔認識部１２と、地図作成部１１により基準地図情報量以上の地図が作成されたか否かを判定する地図作成判定部１３と、自機の周囲に人が存在することを検出しているか否か及び推定できるか否かを判断する存否判断部１４と、地図作成判定部１３での判定結果及び存否判断部１４での判断結果に基づき、地図作成部１１の処理量及び顔認識部１２の処理量を調整する処理量調整部１５と、を備える。【選択図】図２
2018055167.tif 000002
【特許請求の範囲】
【請求項１】
画像を取得する撮像部と、
前記撮像部が取得した画像に基づいて、自機位置を推定しながら周囲の地図を作成する地図作成部と、
前記撮像部が取得した画像から人の顔を認識する顔認識部と、
前記地図作成部により基準地図情報量以上の前記地図が作成されたか否かを判定する地図作成判定部と、
自機の周囲に前記人が存在することを検出しているか否か及び推定できるか否かを判断する存否判断部と、
前記地図作成判定部での判定結果及び前記存否判断部での判断結果に基づき、前記地図作成部の処理量及び前記顔認識部の処理量を調整する処理量調整部と、
を備える自律移動装置。
【請求項２】
前記処理量調整部は、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されていないと判定した場合、又は、前記存否判断部が前記人が存在することを検出しておらず推定もできないと判断した場合は、前記顔認識部の処理量を減らして前記地図作成部の処理量を増やし、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されたと判定し、かつ、前記存否判断部が前記人が存在することを検出しているか又は推定できると判断した場合は、前記地図作成部の処理量を減らして前記顔認識部の処理量を増やす、
請求項１に記載の自律移動装置。
【請求項３】
前記顔認識部の行う処理は、前記画像から人の顔を検出し、画像中で顔の写っている領域を取得する顔検出処理と、前記顔検出処理で検出した顔を前記撮像部が逐次取得している画像中で追跡する顔追跡処理と、を含み、
前記顔認識部は、前記顔追跡処理を実行中である場合は、前記顔検出処理は行わない、
請求項１又は２に記載の自律移動装置。
【請求項４】
前記処理量調整部は、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されたと判定し、かつ、前記存否判断部が前記人が存在することを検出しているか又は推定できると判断した場合は、前記地図作成部に前記地図を作成させないことによって、前記地図作成部の処理量を減らす、
請求項１から３のいずれか１項に記載の自律移動装置。
【請求項５】
前記顔認識部の行う処理は、前記画像から人の顔を検出し、画像中で顔の写っている領域を取得する顔検出処理を含み、
前記処理量調整部は、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されていないと判定した場合、又は、前記存否判断部が前記人が存在することを検出しておらず推定もできないと判断した場合は、前記顔認識部の前記顔検出処理の処理頻度を標準顔検出頻度より少なくすることによって、前記顔認識部の処理量を減らす、
請求項１から４のいずれか１項に記載の自律移動装置。
【請求項６】
前記処理量調整部は、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されていないと判定した場合、又は、前記存否判断部が前記人が存在することを検出しておらず推定もできないと判断した場合は、前記地図作成部の地図作成処理の処理頻度を標準地図作成頻度より多くすることによって、前記地図作成部の処理量を増やす、
請求項１から５のいずれか１項に記載の自律移動装置。
【請求項７】
前記顔認識部の行う処理は、前記画像から人の顔を検出し、画像中で顔の写っている領域を取得する顔検出処理を含み、
前記処理量調整部は、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されたと判定し、かつ、前記存否判断部が前記人が存在することを検出しているか又は推定できると判断した場合は、前記顔認識部の前記顔検出処理の処理頻度を標準顔検出頻度より多くすることによって、前記顔認識部の処理量を増やす、
請求項１から６のいずれか１項に記載の自律移動装置。
【請求項８】
前記地図作成部は、前記撮像部が取得した画像中の特徴点の３次元位置を算出することによって前記地図を作成し、
前記地図作成判定部は、前記地図作成部が自機位置を推定した後に、３次元位置を算出した前記特徴点の数が基準特徴点数以上になった場合に、基準地図情報量以上の前記地図が作成されたと判定する、
請求項１から７のいずれか１項に記載の自律移動装置。
【請求項９】
前記地図作成判定部は、前記地図作成部が自機位置を推定した後に、自機位置を中心とする基準半径の円内の地図の情報を取得した場合に、基準地図情報量以上の前記地図が作成されたと判定する、
請求項１から８のいずれか１項に記載の自律移動装置。
【請求項１０】
前記顔認識部の行う処理は、前記画像から人の顔を検出し、画像中で顔の写っている領域を取得する顔検出処理を含み、
前記存否判断部は、前記顔認識部が前記顔検出処理により前記人の顔を検出している場合は、自機の周囲に人が存在することを検出していると判断する、
請求項１から９のいずれか１項に記載の自律移動装置。
【請求項１１】
人の音声を検出する音声検出部をさらに備え、
前記存否判断部は、前記音声検出部が、前記音声を検出している場合は、自機の周囲に人が存在することを検出していると判断する、
請求項１から１０のいずれか１項に記載の自律移動装置。
【請求項１２】
現在時刻を取得する時計部と、
場所及び時間帯毎の、人の統計的な存在確率を求めるための統計情報を記憶する統計情報記憶部と、
をさらに備え、
前記存否判断部は、前記地図作成部が自機位置を推定でき、かつ、推定した前記自機位置、前記時計部が取得した現在時刻、及び、前記統計情報記憶部に記憶されている前記統計情報に基づいて求めた前記人の統計的な存在確率が基準存在確率以上の場合に、自機の周囲に人が存在することを推定できると判断する、
請求項１から１１のいずれか１項に記載の自律移動装置。
【請求項１３】
人の顔認識を行いながら周囲の地図作成を行う自律移動方法であって、
周囲の地図を作成できていない場合又は人の存在を検出しておらず推定もできない場合は、顔認識処理の処理量を減らして地図作成処理の処理量を増やし、
周囲の地図を作成できており、人の存在を検出しているか又は推定できる場合は、地図作成処理の処理量を減らして顔認識処理の処理量を増やす、
自律移動方法。
【請求項１４】
自機位置を推定しながら周囲の地図を作成する地図作成ステップと、
人の顔を認識する顔認識ステップと、
前記地図作成ステップで基準地図情報量以上の前記地図が作成されたか否かを判定する地図作成判定ステップと、
自機の周囲に前記人が存在することを検出しているか否か及び推定できるか否かを判断する存否判断ステップと、
前記地図作成判定ステップでの判定結果及び前記存否判断ステップでの判断結果に基づき、前記地図作成ステップの処理量及び前記顔認識ステップの処理量を調整する処理量調整ステップと、
を含む自律移動方法。
【請求項１５】
コンピュータを、
自機位置を推定しながら周囲の地図を作成する地図作成部、
人の顔を認識する顔認識部、
前記地図作成部により基準地図情報量以上の前記地図が作成されたか否かを判定する地図作成判定部、
自機の周囲に前記人が存在することを検出しているか否か及び推定できるか否かを判断する存否判断部、
前記地図作成判定部での判定結果及び前記存否判断部での判定結果に基づき、前記地図作成部の処理量及び前記顔認識部の処理量を調整する処理量調整部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自律移動装置、自律移動方法及びプログラムに関する。
【背景技術】
【０００２】
周囲の環境の地図を作成して、作成した地図に基づいて自律的に移動する自律移動装置（自律移動ロボット）が知られている。また、画像をパターン認識して、物体を識別する装置も知られている。これらの装置において、地図の作成処理及び物体の識別処理は、どちらも処理量が非常に多いため、処理バランスの改善を図る技術開発も進められている。例えば、特許文献１には、サーバがデータ量の多い第１の特徴量辞書を備え、端末装置から送信された入力画像の特徴量に基づいて、第１の特徴量辞書から抽出した、データ量の少ない第２の特徴量辞書を端末装置に送信し、端末装置が入力画像の特徴量をサーバから受信した第２の特徴量辞書と照合することにより、端末装置の処理リソースが少なくても高い物体識別の性能を発揮する物体識別システムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−２０３６６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示されている物体識別システムは、物体識別の処理において、２つの特徴量辞書を使い分け、サーバでの特徴量辞書の処理量を増やす代わりに、端末装置での物体識別の処理量を減らすことにより、物体識別システム全体の処理バランスを改善している。しかし、この物体識別システムは地図の作成処理を行わないため、特許文献１には、地図の作成処理を含めた全体の処理バランスを改善する技術に関しては記載されておらず、また、そのような技術に関しての示唆もない。自律移動装置が周囲の環境の地図を作成しながら、顔を認識する処理を行う場合には、地図作成処理及び顔認識処理という、処理量が非常に多い２つの処理を並行して進める必要があるが、その際の全体の処理バランスを改善する仕組みについては、従来提案されていなかった。
【０００５】
本発明はこのような事情に鑑みてなされたものであって、地図作成処理及び顔認識処理を行う際の全体の処理バランスを改善できる自律移動装置、自律移動方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明に係る自律移動装置は、
画像を取得する撮像部と、
前記撮像部が取得した画像に基づいて、自機位置を推定しながら周囲の地図を作成する地図作成部と、
前記撮像部が取得した画像から人の顔を認識する顔認識部と、
前記地図作成部により基準地図情報量以上の前記地図が作成されたか否かを判定する地図作成判定部と、
自機の周囲に前記人が存在することを検出しているか否か及び推定できるか否かを判断する存否判断部と、
前記地図作成判定部での判定結果及び前記存否判断部での判断結果に基づき、前記地図作成部の処理量及び前記顔認識部の処理量を調整する処理量調整部と、
を備える。
【発明の効果】
【０００７】
本発明によれば、地図作成処理及び顔識別処理を行う際の全体の処理バランスを改善できる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態に係る自律移動装置の外観を示す図である。
【図２】実施形態に係る自律移動装置の機能構成を示すブロック図である。
【図３】実施形態に係る自律移動装置の地図作成部及び顔認識部のソフトウェア構成を説明する図である。
【図４】実施形態に係る自律移動制御処理全体のフローチャートである。
【図５】実施形態に係る地図作成判定スレッドの処理のフローチャートである。
【図６】実施形態に係る存否判断スレッドの処理のフローチャートである。
【図７】実施形態に係る処理量調整スレッドの処理のフローチャートである。
【図８】実施形態の変形例に係る自律移動装置及びサーバの機能構成を示すブロック図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態に係る自律移動装置、自律移動方法及びプログラムについて、図面を参照して説明する。なお、図中同一または相当部分には同一符号を付す。
【００１０】
本発明の実施形態に係る自律移動装置１００は、図１に示すように、外観上、撮像部３１と駆動部３２を備える。ただし、自律移動装置１００の形状は、図１に示す形状に限定されない。例えば、二足歩行する人型ロボットの形状や、四足歩行する動物型ロボットの形状であっても良い。
【００１１】
撮像部３１は、画像を撮影する単眼の撮像装置（カメラ）を備える。撮像部３１は、例えば、３０ｆｐｓ（ｆｒａｍｅ  ｐｅｒ  ｓｅｃｏｎｄ）で画像（フレーム）を撮影して取得する。自律移動装置１００は、撮像部３１が逐次取得した画像に基づいて、自機位置の推定と周囲環境の地図の作成とを実時間（リアルタイム）で行いながら、自律移動を行う。また、撮像部３１が取得した画像から人の顔を認識し、周囲にいる人を識別して、その人に対する動作を行う。地図の作成に用いる画像を取得する撮像部３１と、人の顔を認識するのに用いる画像を取得する撮像部３１とは、それぞれ専用の撮像部を別々に備えても良いし、同一の撮像部３１を兼用しても良い。
【００１２】
駆動部３２は、車輪とモータとを備える移動手段である。車輪の代わりにクローラを備えるようにしても良い。また、自律移動装置１００の形状によっては、複数（例えば２本）の足を備え、足で歩行することによって移動しても良い。この場合、駆動部３２は、複数の足と、その足を動かすモータとを備える。
【００１３】
図２に示すように、自律移動装置１００は、撮像部３１、駆動部３２に加えて、制御部１０、記憶部２０、音声検出部３３、通信部３４、を備える。
【００１４】
制御部１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等を備え、記憶部２０に記憶されたプログラムを実行することにより、後述する各部（地図作成部１１、顔認識部１２、地図作成判定部１３、存否判断部１４、処理量調整部１５、動作制御部１６）の機能を実現する。なお、制御部１０は、マルチスレッド機能に対応しており、複数のスレッド（異なる処理の流れ）を並行して実行することができる。また、制御部１０は図示しない時計部を備え、現在時刻を取得することができる。
【００１５】
記憶部２０は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ)、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成され、機能的には、後述する画像記憶部２１、地図記憶部２２、顔画像記憶部２３、統計情報記憶部２４を含む。ＲＯＭは制御部１０のＣＰＵが実行するプログラムや、プログラムを実行する上で予め必要なデータを記憶する。ＲＡＭは、プログラム実行中に作成されたり変更されたりするデータが記憶される。
【００１６】
画像記憶部２１は、撮像部３１が撮影した画像を記憶する。ただし、記憶容量の節約のために、撮影したすべての画像を記憶しなくてもよく、また画像自体ではなく、画像の特徴量を記憶するようにしても良い。後述するトラッキングスレッドにおいて自機位置（姿勢）の推定ができた時の画像をキーフレームと呼び、キーフレームについては、画像の情報だけでなく、その画像を撮影した時の自機位置（自機の位置及び向き）の情報もキーフレーム画像の情報に紐付けて記憶する。
【００１７】
地図記憶部２２は、地図作成部１１が作成した地図の情報（特徴点の３次元位置や障害物の３次元位置の情報）を記憶する。なお、地図作成部１１により３次元位置が求められた特徴点のことをＭａｐ点と呼ぶ。
【００１８】
顔画像記憶部２３は、顔認識部１２が顔を認識する際に、撮像部３１が撮影した画像中の顔と照合するための顔の画像を記憶する。顔画像記憶部２３に記憶されている顔の画像には、その顔の人の氏名又はＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）コードが紐付けされており、顔認識部１２は、認識した顔が誰の顔なのかを識別することができる。
【００１９】
統計情報記憶部２４は、時間帯及び場所毎の、人の存在確率を求めるための統計情報を記憶する。
【００２０】
音声検出部３３は、マイクロホン等の音声入力デバイスと、音声を認識する音声認識デバイスを備える。音声検出部３３は、音声認識デバイスが音声を認識したら人の発した音声を検出したとみなすことにより、音声を検出する。音声検出部３３は、音声認識デバイスを備える代わりに、制御部１０内に音声認識部を備えることによって、音声を検出しても良い。
【００２１】
通信部３４は、外部装置と通信するためのモジュールである。外部装置と無線通信する場合には、ＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）回路、ＢＢ（Ｂａｓｅ  Ｂａｎｄ）回路、アンテナ等を備える。通信部３４は、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）に基づく近距離無線通信を行うための無線モジュールである。
【００２２】
次に、制御部１０の機能構成について説明する。制御部１０は、機能的には、地図作成部１１、顔認識部１２、地図作成判定部１３、存否判断部１４、処理量調整部１５、動作制御部１６を備える。
【００２３】
地図作成部１１は、画像記憶部２１に記憶されている画像の情報に基づき、ＳＬＡＭ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｌｏｃａｌｉｚａｔｉｏｎ  ａｎｄ  Ｍａｐｐｉｎｇ）により、自機位置の推定と、自機の周囲の環境の地図の作成を行う。そして、作成した地図の情報を地図記憶部２２に記憶する。なお、ここでＳＬＡＭと呼んでいるのは、特定のアルゴリズムに限定する意図ではない。地図作成部１１は、自機位置の推定と、自機の周囲の環境の地図の作成を行えるアルゴリズムであれば、任意のアルゴリズムを使用することができる。
【００２４】
顔認識部１２は、撮像部３１が撮影した画像の中から人の顔を検出し、検出した顔を認識することによって、周囲にいる人を識別する。
【００２５】
地図作成判定部１３は、地図作成部１１により自機の周囲の地図が作成済みか否かを判定する。より具体的には、地図作成判定部１３は、地図作成部１１により基準地図情報量以上の地図が作成されたか否かを判定する。ここで、基準地図情報量は、地図作成部１１が作成する地図の種類によって異なるため、詳細は後述する。地図作成部１１が自機位置の推定ができない場合、及び、地図作成部１１が自機位置の推定はできるが自機位置の周囲の地図を作成できていない場合は、地図作成判定部１３は、地図作成部１１により基準地図情報量以上の地図が作成されていないと判定する。また、ユーザが自律移動装置１００を持ち上げてどこか別の場所に運んだ場合や、自律移動装置１００が高い場所から落下した場合等、自律移動装置１００の周囲の環境が急に変化してしまう場合がある。このような場合、撮像部３１で撮影した画像から本来あるべき特徴点が抽出されなかったり、異常な特徴点が抽出されたりすることにより、自機位置の推定ができなくなるため、地図作成判定部１３は、地図作成部１１により基準地図情報量以上の地図が作成されていないと判定する。
【００２６】
なお、ＳＬＡＭによって作成される地図は大きく分けると２種類ある。１つは、特徴点の３次元位置の集まりを地図の情報とするランドマークベースの地図である。もう１つは地図を格子状に表現するグリッドベースの地図である。地図作成部１１が作成する地図の種類によって、地図作成判定部１３の判定の仕方が変わる。
【００２７】
地図作成部１１が、ランドマークベースの地図を作成する場合は、ＳＬＡＭにより、３次元位置（自機位置推定に用いることが可能な３次元位置）を算出した特徴点の数を基準特徴点数（例えば１００個）以上、地図記憶部２２に記憶した場合に、地図作成判定部１３は、地図作成部１１により基準地図情報量以上の地図が作成されたと判定する。つまり、この場合は、基準地図情報量は、基準特徴点数である。ランドマークベースの地図を使用するＳＬＡＭは、グリッドベースの地図を使用するＳＬＡＭと比較して、自機位置の推定精度が高いというメリットがある。したがって、基準特徴点数を、適切に設定することにより、地図作成部１１が地図記憶部２２に記憶されている地図の情報を用いて自機位置を確実に推定できるようになると、地図作成判定部１３は、地図作成部１１により基準地図情報量以上の地図が作成されたと判定することになる。
【００２８】
また、地図作成部１１が、グリッドベースの地図を作成する場合は、推定した自機位置を中心とする、基準半径（例えば５ｍ）を半径とする円内の地図の作成を完了したら、地図作成判定部１３は、地図作成部１１により基準地図情報量以上の地図が作成されたと判定する。ここで、基準半径を半径とする円内の地図の作成を完了したとは、その円内に存在する全てのグリッド（格子）について、情報（例えば、そのグリッド内の障害物の有無）を取得し、地図記憶部２２に記憶したことをいう。つまり、この場合は、基準地図情報量は、基準半径を半径とする円内に存在する全てのグリッド数である。グリッドベースの地図を使用するＳＬＡＭは、ランドマークベースの地図を使用するＳＬＡＭと比較して、自機位置近辺の地図を素早く構築できるというメリットがある。したがって、基準半径を適切に設定することにより、自律移動装置１００がすぐに移動できる範囲の地図が作成されると、地図作成判定部１３は、地図作成部１１により基準地図情報量以上の地図が作成されたと判定することになる。
【００２９】
地図作成部１１が、これら２種類の地図を両方とも作成する場合は、地図作成判定部１３は、どちらかの地図が条件を満たすまで作成された場合に、地図作成部１１により基準地図情報量以上の地図が作成されたと判定しても良いし、２種類の地図の両方ともが条件を満たすまで作成された場合に、地図作成部１１により基準地図情報量以上の地図が作成されたと判定しても良い。なお、地図作成部１１が作成する地図が上記の２種類以外の場合も、その地図の特徴に応じて、地図記憶部２２に格納される情報量に基準となる閾値（基準地図情報量）を設定すれば良い。そして、地図作成部１１がこの基準地図情報量以上、地図の情報を地図記憶部２２に記憶すると、地図作成判定部１３は、地図作成部１１により基準地図情報量以上の地図が作成されたと判定する。
【００３０】
存否判断部１４は、自機の周囲に人が存在することを検出しているか否か及び推定できるか否かを判断する。撮像部３１が撮影した画像の中から顔認識部１２が人の顔を検出している場合は、存否判断部１４は、自機の周囲に人が存在することを検出していると判断する。この判断方法は、人の存在の検出に関し、余計な検出部や処理を追加する必要がないというメリットがある。また、音声検出部３３が音声を検出したら、存否判断部１４は、自機の周囲に人が存在することを検出していると判断する。この判断方法は、撮像部３１で撮影できていない人の存在を検出できるというメリットがある。また、自機位置が推定できている場合には、現在時刻の自機位置の周囲における人の統計的な存在確率を求め、その存在確率が基準存在確率（例えば５０％）以上なら、存否判断部１４は、自機の周囲に人が存在することを推定できると判断する。この判断方法は、撮像部３１でも音声検出部３３でも検出できなかった人の存在を推定できるというメリットがある。
【００３１】
ここで、人の統計的な存在確率は、現在時刻が深夜（例えば午前０時〜午前６時）なら基準存在確率未満である。また、人が平日の日中は仕事に出ている場合は、現在時刻が平日の日中（例えば午前９時〜午後６時）なら、人が家に存在する統計的な確率は基準存在確率未満である。逆に、人が家で活動している時間帯（例えば平日の午後６時〜午前０時、及び、休日の午前６時〜午前０時）なら、人が家に存在する統計的な確率は基準存在確率以上である。自律移動装置１００は、ユーザの行動特性に応じた標準的な存在確率を求めるための統計情報を予め統計情報記憶部２４に記憶している。存否判断部１４は、地図作成部１１が推定した現在の自機位置、制御部１０が備える時計部が取得した現在時刻、及び、統計情報記憶部２４が記憶している統計情報に基づき、自機位置の周囲に人が存在する確率を求める。そして、求めた存在確率が基準存在確率以上なら、存否判断部１４は、自機の周囲に人が存在することを推定できると判断する。
【００３２】
なお、存否判断部１４が自機の周囲に人が存在するか否かを判断する際に、温度や周囲の明るさの情報をも用いるようにしても良い。例えば、自律移動装置１００が温度センサ（図示せず）を備え、温度センサが人の体温を感知したら、存否判断部１４は、自機の周囲に人が存在することを推定できると判断しても良い。また、自律移動装置１００が明るさセンサ（図示せず）を備え、明るさセンサが周囲が明るいことを感知したら、存否判断部１４は、自機の周囲に人が存在することを推定できると判断しても良い。このようにすることによって、撮像部３１でも音声検出部３３でも人を検出できず、統計的な存在確率も基準存在確率未満であった場合でも、人が存在する可能性があることを推定できるというメリットがある。また、存否判断部１４は、統計情報記憶部２４が記憶している統計情報、温度センサが感知した温度及び明るさセンサが感知した明るさを総合的に用いて、人の存在確率を求め、その存在確率が基準存在確率以上か否かによって自機の周囲に人が存在するか否かを判断しても良い。
【００３３】
処理量調整部１５は、地図作成判定部１３の判定結果及び存否判断部１４の判断結果に基づいて、地図作成部１１の処理量及び顔認識部１２の処理量の調整を行う。
【００３４】
動作制御部１６は、地図作成部１１が作成した地図の情報及び顔認識部１２が識別した人の情報に基づき、現在の状況を把握して、自律移動装置１００の次に行う動作を決定し、決定した動作を行うように駆動部３２を制御する。通常、自律移動装置１００は、充電器等から出発し、その付近から次第に広範囲を散策しながら地図を作成していく。そして、人物を検出したら、状況に応じて、その人に近づいたり、追跡したり、会話したり、尻尾や手を振ったり、逃げたりといった動作を行うことが考えられる。また、動作制御部１６は、把握した状況又はユーザからの指示に基づいて目的地が設定された場合は、現在位置から目的地までの経路を求め、目的地に向かってその経路に沿って進むように駆動部３２を制御する。
【００３５】
以上、自律移動装置１００の構成について説明した。次に、自律移動装置１００の備える地図作成部１１及び顔認識部１２の処理の概要について、図３を参照して説明する。
【００３６】
地図作成部１１の処理は、トラッキングスレッド１１１、マッピング＋バンドルアジャストメントスレッド１１２及びループクロージングスレッド１１３で行われる。地図作成部１１が起動すると、この３つのスレッドが起動し、並行して処理が行われる。なお、地図作成部１１の処理はこれに限定されるものではない。例えば、マッピング＋バンドルアジャストメントスレッド１１２が、マッピングスレッドとバンドルアジャストメントスレッドの２つに分かれていても良いし、複数のスレッドが１つのスレッドにまとめられて処理されても良い。
【００３７】
トラッキングスレッド１１１は、撮像部３１が撮影した画像と画像記憶部２１に記憶されている画像とで、画像中の特徴点の対応を抽出することにより、自機位置を推定する。１回の処理は比較的軽く、通常毎フレーム処理を行う。なお、自機位置（姿勢）が推定できた時には、その自機位置（姿勢）の情報も、撮像部３１が撮像した画像（キーフレーム）と紐付けて画像記憶部２１に記憶する。
【００３８】
マッピング＋バンドルアジャストメントスレッド１１２は、画像記憶部２１に記憶されている画像の情報を用いて地図の作成を行う。例えば、２つのキーフレームの間で対応する特徴点を抽出し、その特徴点の３次元位置を求めて地図記憶部２２に記憶することにより地図を作成する。３次元位置が求められた特徴点のことをＭａｐ点とも呼ぶので、この例の場合、地図記憶部２２には、Ｍａｐ点の３次元位置が記憶されていく。処理は比較的重いので、通常、数フレーム〜数十フレーム毎に行う。
【００３９】
なお、マッピング＋バンドルアジャストメントスレッド１１２は、処理時間に余裕のある場合にはバンドルアジャストメント処理も行う。バンドルアジャストメント処理とは、キーフレームを撮影した時の自機の姿勢（キーフレーム姿勢）とＭａｐ点の３次元位置とを同時に推定する非線形最適化法であり、Ｍａｐ点をキーフレーム上に投影させたときに発生する誤差が最小になるような最適化を行う処理である。このバンドルアジャストメント処理を行うことで、キーフレーム姿勢とＭａｐ点の３次元位置の精度向上を図ることができる。しかし、バンドルアジャストメント処理は大変重いため、処理時間に余裕がある場合にしか行われない。
【００４０】
ループクロージングスレッド１１３は、ループクロージング処理を行う。ループクロージング処理とは、自律移動装置１００が、以前来たことのある場所の近くに戻ってきたことを検出した場合に、以前の自機位置（姿勢）の値と現在の自機位置（姿勢）の値とのずれを用いて、以前来た時から今までの軌跡中のキーフレームや、関連するＭａｐ点の３次元位置を修正する処理である。この処理は重いが、自律移動装置１００が、以前来たことのある場所の近くに戻ってきたことを検出できた場合にのみ実行される。ループクロージング処理を実行すると、自機位置の推定精度及び地図の精度が向上する。
【００４１】
地図作成部１１は、以上の３つのスレッドを並行して動作させることにより、トラッキングスレッド１１１による自機位置推定処理と、マッピング＋バンドルアジャストメントスレッド１１２による地図作成処理とを並行して行う。そして、以前来たことのある場所の近くに戻ってきたことを検出できた場合には、ループクロージング処理も実行して、自機位置の推定精度及び地図の精度を向上させる。
【００４２】
顔認識部１２の処理は、顔検出スレッド１２１、顔識別スレッド１２２及び顔トラッキングスレッド１２３で行われる。顔認識部１２が起動すると、この３つのスレッドが起動し、並行して処理が行われる。なお、顔認識部１２の処理はこれに限定されるものではない。例えば、顔トラッキングスレッド１２３がなくても良い。この構成でも、顔トラッキングスレッド１２３による顔の追跡精度よりは精度が落ちるが、顔検出スレッド１２１により、顔を検出し続けることが可能である。また、顔検出スレッド１２１と顔トラッキングスレッド１２３とを１つにまとめて処理しても良い。
【００４３】
顔検出スレッド１２１は、撮像部３１が撮影した画像から人の顔を検出し、画像中で顔の写っている領域を取得する顔検出処理を行う。処理の重さは中程度であり、通常は、数フレーム毎に１回行う。
【００４４】
顔識別スレッド１２２は、顔検出スレッド１２１が検出した顔を、顔画像記憶部２３に記憶されている顔の画像と比較照合することによって認識し、その顔の人物を識別する顔識別処理を行う。処理は重く、通常、顔検出スレッド１２１が顔を検出した際に行われる。
【００４５】
顔トラッキングスレッド１２３は、顔検出スレッド１２１が検出した顔を、撮像部３１が逐次撮影している画像中で追跡する顔追跡処理を行う。通常は、１フレーム前の顔の位置付近で特徴点を追跡することによって行う。１回の処理は比較的軽い。
【００４６】
顔認識部１２は、以上の３つのスレッドが動作することにより、人の顔の検出及び識別を行う。具体的には、顔検出スレッド１２１の顔検出処理により人を検出すると、顔識別スレッド１２２の顔識別処理によりその人を識別し、顔トラッキングスレッド１２３の顔トラッキング処理により、画像中にその人が存在する限り、その人が画像中のどこにいるかを追跡し続ける。
【００４７】
以上説明した地図作成部１１及び顔認識部１２の処理は、画像中から特徴点を抽出する処理等を繰り返し行う必要があるため、どちらの処理も非常に処理量が多く、時間がかかる。自律移動装置１００は、画像の解像度を高めたり、特徴点をより多く抽出したりことによって、地図作成の精度や顔認識の精度を高めることができるが、精度を高めると処理時間が長くなり、実時間での処理が不可能となる。自律移動装置１００は、実時間で動作することが求められるため、実時間内で処理できるようにするためには、どこかの精度を落とさざるを得ない場合が多い。
【００４８】
そこで、自律移動装置１００は、状況に応じて、重要度の低い処理の処理量を減らすことによって、重要度の高い処理の処理量を増やしても実時間内で処理できるようにしている。この全体の処理バランスの改善により、重要度の高い処理について精度を向上させることができる。この仕組みについて、以下、説明する。
【００４９】
まず、自律移動装置１００の自律移動制御処理の全体のフローについて、図４を参照して説明する。自律移動装置１００が起動すると、この自律移動制御処理が開始される。
【００５０】
まず、制御部１０は、必要な変数を初期化する（ステップＳ１０１）。この必要な変数としては、例えば、ＭＡＰ＿Ｆ変数（周囲の地図が作成済みであることを示すフラグ変数）及びＥＸＩＳＴ＿Ｆ変数（周囲に人が存在する可能性が高いことを示すフラグ変数）が挙げられる。ステップＳ１０１では、これらの変数を０に初期化する。なお、これらの変数は、後述する地図作成判定スレッド、存否判断スレッド及び処理量調整スレッドにおいて、アクセス可能な変数である。
【００５１】
次に、地図作成部１１が地図作成部１１の内部の各スレッドを起動する（ステップＳ１０２）。このステップで、地図作成部１１は、トラッキングスレッド１１１、マッピング＋バンドルアジャストメントスレッド１１２及びループクロージングスレッド１１３の各スレッドを起動し、各スレッドの処理が並行して実行開始される。
【００５２】
次に、顔認識部１２が顔認識部１２の内部の各スレッドを起動する（ステップＳ１０３）。このステップで、顔認識部１２は、顔検出スレッド１２１、顔識別スレッド１２２及び顔トラッキングスレッド１２３の各スレッドを起動し、各スレッドの処理が並行して実行開始される。
【００５３】
次に、制御部１０は、地図作成判定スレッドを起動する（ステップＳ１０４）。地図作成判定スレッドの詳細は後述する。次に、制御部１０は、存否判断スレッドを起動する（ステップＳ１０５）。存否判断スレッドの詳細は後述する。次に、制御部１０は、処理量調整スレッドを起動する（ステップＳ１０６）。処理量調整スレッドの詳細は後述する。
【００５４】
次に、制御部１０は、自律移動装置１００が動作を終了するか否かを判定する（ステップＳ１０７）。ユーザが自律移動装置１００の電源を落とした場合や、バッテリーの残量が基準バッテリー残量（例えばバッテリーの残り３％等）を下回った場合等に、自律移動装置１００は動作を終了する。自律移動装置１００が動作を終了するなら（ステップＳ１０７；Ｙｅｓ）、処理を終了する。動作を終了しないなら（ステップＳ１０７；Ｎｏ）、自律移動装置１００に必要な動作を行わせるために、動作制御部１６が、駆動部３２を制御する（ステップＳ１０８）。そして、ステップＳ１０７に戻る。
【００５５】
自律移動装置１００は、以上説明したように、必要な各スレッドを起動した後は、動作を終了するまで、動作制御部１６が、駆動部３２を制御し続ける。次に、ステップＳ１０４で起動される地図作成判定スレッドの処理について、図５を参照して説明する。
【００５６】
まず、地図作成判定部１３は、地図作成部１１のトラッキングスレッド１１１にて、自機位置の推定を行うことが可能か否かを判定する（ステップＳ２０１）。自機位置の推定が不可能であるなら（ステップＳ２０１；Ｎｏ）、地図作成判定部１３は、ＭＡＰ＿Ｆ変数に０を代入し（ステップＳ２０４）、処理をステップＳ２０５へ進める。自機位置の推定が可能なら（ステップＳ２０１；Ｙｅｓ）、地図作成判定部１３は、地図作成部１１のマッピング＋バンドルアジャストメントスレッド１１２にて、自機の周囲の地図が作成済みであるか否かを判定する（ステップＳ２０２）。
【００５７】
自機位置の周囲の地図が作成済みでないなら（ステップＳ２０２；Ｎｏ）、地図作成判定部１３は、ＭＡＰ＿Ｆ変数に０を代入し（ステップＳ２０４）、処理をステップＳ２０５へ進める。自機位置の周囲の地図が作成済みなら（ステップＳ２０２；Ｙｅｓ）、地図作成判定部１３は、ＭＡＰ＿Ｆ変数に１を代入し（ステップＳ２０３）、処理をステップＳ２０５へ進める。
【００５８】
そして、地図作成判定部１３は、自律移動装置１００が動作を終了するか否かを判定する（ステップＳ２０５）。自律移動装置１００が動作を終了するなら（ステップＳ２０５；Ｙｅｓ）、処理を終了する。動作を終了しないなら（ステップＳ２０５；Ｎｏ）、ステップＳ２０１に戻る。
【００５９】
以上の、地図作成判定スレッドの処理により、ＭＡＰ＿Ｆ変数に現在までの地図作成部１１の処理状況が反映される。ＭＡＰ＿Ｆ変数が０というのは、自機位置の推定ができていないか、または地図が十分に作成できていないことを示す。ＭＡＰ＿Ｆ変数が１というのは、自機位置の推定ができており、周囲の地図も作成できていることを示す。
【００６０】
なお、ステップＳ２０２の判定処理の詳細は、前述したように、地図作成部１１で作成する地図の種類によって異なる。地図作成部１１が、ランドマークベースの地図を作成する場合は、ＳＬＡＭにより、３次元位置（自機位置推定に用いることが可能な３次元位置）を算出した特徴点の数を基準特徴点数（例えば１００個）以上、地図記憶部２２に記憶していたら、「自機の周囲の地図は作成済み」と判定する。また、地図作成部１１が、グリッドベースの地図を作成する場合は、推定した自機位置を中心とする、基準半径（例えば５ｍ）を半径とする円内に存在する全てのグリッド（格子）について、情報（例えば、そのグリッド内の障害物の有無）を取得し、地図記憶部２２に記憶していたら、「自機の周囲の地図は作成済み」と判定する。また、判定内容はこれに限らず、自機位置推定が可能になった後に、地図記憶部２２に基準地図情報量以上の情報が記憶されたことを判定する内容であれば、地図の種類に応じた任意の判定方法を採用することができる。
【００６１】
次に、図４に示す自律移動制御の全体フローのステップＳ１０５で起動される存否判断スレッドの処理について、図６を参照して説明する。
【００６２】
まず、存否判断部１４は、音声検出部３３で音声が過去１０秒以内に検出されたか否かを判定する（ステップＳ３０１）。ここで、「過去１０秒以内」というのは一例であり、状況に応じて増減しても良い。音声が検出されたなら（ステップＳ３０１；Ｙｅｓ）、存否判断部１４は、ＥＸＩＳＴ＿Ｆ変数に１を代入し（ステップＳ３０５）、処理をステップＳ３０７に進める。音声が検出されていないなら（ステップＳ３０１；Ｎｏ）、存否判断部１４は、顔認識部１２の顔検出スレッド１２１にて、現在顔が検出されているか否かを判定する（ステップＳ３０２）。なお、この判定も、ステップＳ３０１と同様に、状況に応じて「過去ｎ秒以内に顔が検出されたか？」等のように、検出判定の時間幅を持たせても良い。
【００６３】
顔が検出されているなら（ステップＳ３０２；Ｙｅｓ）、存否判断部１４は、ＥＸＩＳＴ＿Ｆ変数に１を代入し（ステップＳ３０５）、処理をステップＳ３０７に進める。顔が検出されていないなら（ステップＳ３０２；Ｎｏ）、存否判断部１４は、地図作成部１１のトラッキングスレッド１１１にて、自機位置の推定を行うことが可能か否かを判定する（ステップＳ３０３）。自機位置の推定が可能なら（ステップＳ３０３；Ｙｅｓ）、存否判断部１４は、推定された自機位置の周囲に、その時刻に人が存在する確率が基準存在確率以上であるか否かを、統計情報記憶部２４に記憶されている統計情報に基づいて判定する（ステップＳ３０４）。
【００６４】
自機位置の周囲に、現在時刻に人が存在する確率が基準存在確率以上であるなら（ステップＳ３０４；Ｙｅｓ）、存否判断部１４は、ＥＸＩＳＴ＿Ｆ変数に１を代入し（ステップＳ３０５）、処理をステップＳ３０７に進める。自機位置の周囲に、現在時刻に人が存在する確率が基準存在確率未満なら（ステップＳ３０４；Ｎｏ）、存否判断部１４は、ＥＸＩＳＴ＿Ｆ変数に０を代入し（ステップＳ３０６）、処理をステップＳ３０７に進める。
【００６５】
ステップＳ３０３で、自機位置の推定が可能でないなら（ステップＳ３０３；Ｎｏ）、存否判断部１４は、ＥＸＩＳＴ＿Ｆ変数に０を代入し（ステップＳ３０６）、処理をステップＳ３０７に進める。
【００６６】
そして、存否判断部１４は、自律移動装置１００が動作を終了するか否かを判定する（ステップＳ３０７）。自律移動装置１００が動作を終了するなら（ステップＳ３０７；Ｙｅｓ）、処理を終了する。動作を終了しないなら（ステップＳ３０７；Ｎｏ）、ステップＳ３０１に戻る。
【００６７】
以上の、存否判断スレッドの処理により、ＥＸＩＳＴ＿Ｆ変数に、周囲の人の存在状況が反映される。ＥＸＩＳＴ＿Ｆ変数が０というのは、音声も顔も検出されず、しかも、周囲の人の統計的な存在確率が基準存在確率未満であることを示す。ＥＸＩＳＴ＿Ｆ変数が１というのは、音声若しくは顔が検出されているか、又は、周囲の人の統計的な存在確率が基準存在確率以上であることを示す。
【００６８】
なお、トラッキングスレッド１１１において、自機位置が推定できている場合に、その周囲にいる人を検出できたか否かの情報を、その時の時刻情報と紐付けて、統計情報記憶部２４に追加記憶していくようにしても良い。そして、存否判断スレッドでは、この統計情報記憶部２４に追加記憶した情報も用いることによって、より精度を高めた「周囲に人が存在する統計的な確率」に基づいて、ＥＸＩＳＴ＿Ｆ変数に値を代入するようにしても良い。
【００６９】
次に、図４に示す自律移動制御の全体フローのステップＳ１０６で起動される処理量調整スレッドの処理について、図７を参照して説明する。
【００７０】
まず、処理量調整部１５は、ＭＡＰ＿Ｆ変数＝０であるか又はＥＸＩＳＴ＿Ｆ変数＝０であるか否かを判定する（ステップＳ４０１）。ＭＡＰ＿Ｆ変数＝０であるか又はＥＸＩＳＴ＿Ｆ変数＝０であるなら（ステップＳ４０１；Ｙｅｓ）、処理量調整部１５は、地図作成部１１の処理量を増やし（ステップＳ４０２）、顔認識部１２の処理量を減らす（ステップＳ４０３）。そして、ステップＳ４０１に戻る。
【００７１】
ＭＡＰ＿Ｆ変数＝１であり、かつ、ＥＸＩＳＴ＿Ｆ変数＝１であるなら（ステップＳ４０１；Ｎｏ）、処理量調整部１５は、地図作成部の処理量を減らす（ステップＳ４０４）。そして、処理量調整部１５は、顔認識部１２の顔トラッキングスレッド１２３にて、現在顔のトラッキングが継続中であるか否かを判定する（ステップＳ４０５）。
【００７２】
顔のトラッキングが継続中であるなら（ステップＳ４０５；Ｙｅｓ）、処理量調整部１５は、顔認識部１２の顔検出スレッド１２１における新たな顔検出を停止させる（ステップＳ４０６）。これは簡単には、顔検出スレッド１２１を停止させれば良い。そして、処理量調整部１５は、顔認識部１２の顔トラッキングスレッド１２３の処理量を増やし（ステップＳ４０７）、ステップＳ４０９に進む。顔をトラッキングしていないなら（ステップＳ４０５；Ｎｏ）、処理量調整部１５は、顔認識部１２の顔検出スレッド１２１の処理量を増やし（ステップＳ４０８）、ステップＳ４０９に進む。
【００７３】
そして、処理量調整部１５は、自律移動装置１００が動作を終了するか否かを判定する（ステップＳ４０９）。自律移動装置１００が動作を終了するなら（ステップＳ４０９；Ｙｅｓ）、処理を終了する。動作を終了しないなら（ステップＳ４０９；Ｎｏ）、ステップＳ４０１に戻る。
【００７４】
以上の、処理量調整スレッドの処理により、処理量調整部１５は、自機位置の推定ができない場合、周囲の地図を作成できていない場合、又は、人の存在を検出しておらず、かつ、人の統計的な存在確率が基準存在確率未満の場合には、地図作成部１１の処理量を標準地図作成処理量（地図作成部１１での通常の処理量）より増やし、顔認識部１２の処理量を標準顔認識処理量（顔認識部１２での通常の処理量）より減らす。そして、自機位置の推定ができ、周囲の地図を作成できており、しかも、人の存在を検出したか、又は、人の統計的な存在確率が基準存在確率以上の場合には、地図作成部１１の処理量を標準地図作成処理量より減らし、顔認識部１２の処理量を標準顔認識処理量より増やす。
【００７５】
ここで、地図作成部１１の処理量を標準地図作成処理量より増やす方法としては、処理量調整部１５が、地図作成部１１の各スレッドで使用している画像の解像度を標準地図画像解像度（地図作成部１１の通常の処理で用いている画像の解像度）よりも高くしたり、特徴点の検索範囲を標準特徴点検索範囲（地図作成部１１の通常の処理で特徴点を検索している範囲）より広げて特徴点を多く抽出したりすることが、挙げられる。また、処理量調整部１５が、マッピング＋バンドルアジャストメントスレッド１１２による地図作成処理の処理頻度を標準地図作成頻度（通常の地図作成処理の処理頻度。例えば５フレーム毎に１回。）より多くすることによって、地図作成部１１の処理量を標準地図作成処理量より増やしても良い。例えば、通常５フレーム毎に１回地図作成処理を行っているなら、これを３フレーム毎に１回等に増やしても良い。これにより、地図記憶部２２に記憶される情報量を多くすることができる。また、ループクロージングスレッド１１３がループクロージングする条件を少し緩めたり（例えば、特徴点の類似判断の判断基準を緩め、類似度が基準類似度（通常の類似判断で用いる類似度）よりも例えば２０％小さくても、類似する特徴点であると判断する）、自律移動装置１００が積極的に回転したり（これにより、比較対象となる特徴点が増える）することで、ループクロージング処理の頻度を高めることにより、処理量調整部１５が地図作成部１１の処理量を標準地図作成処理量より増やしても良い。これにより、画像記憶部２１や地図記憶部２２に記憶されている情報の精度を向上させることができる。
【００７６】
また、地図作成部１１の処理量を標準地図作成処理量より減らす方法としては、マッピング＋バンドルアジャストメントスレッド１１２による地図作成処理の処理頻度を標準地図作成頻度より少なくしたり、マッピング＋バンドルアジャストメントスレッド１１２及びループクロージングスレッド１１３を停止させることにより、地図作成処理、バンドルアジャストメント処理及びループクロージング処理を停止させたりすることが、挙げられる。処理量調整部１５が、地図作成部１１のこれらの処理を停止させ、トラッキングスレッド１１１による自機位置の推定処理のみを行わせる（つまり、地図を作成させず、バンドルアジャストメントやループクロージング処理も行わせない）ことによって、地図作成部１１の処理量を標準地図作成処理量より減らすことができる。また、地図作成部１１の各スレッドで使用している画像の解像度を標準地図画像解像度より低くしたり、特徴点の検索範囲を標準特徴点検索範囲より狭くして特徴点の抽出数を少なくしたりすることによっても、処理量調整部１５は、地図作成部１１の処理量を標準地図作成処理量より減らすことができる。処理量調整部１５は、地図作成部１１の処理量を減らすことによって、自律移動装置１００の処理リソースを、顔認識部１２の処理に振り向けることができる。
【００７７】
また、顔認識部１２の処理量を標準顔認識処理量より増やす方法としては、処理量調整部１５が、顔認識部１２の各スレッドで使用している画像の解像度を標準顔画像解像度（顔画像部１２の通常の処理で用いている画像の解像度）よりも高くしたり、抽出する特徴点を標準顔画像特徴点数（顔画像部１２の通常の処理で抽出している顔画像の特徴点数）よりも増やしたりすることが挙げられる。また、現在顔トラッキングスレッド１２３にて、顔をトラッキング中（顔追跡処理を実行中）であるか否かに応じて顔認識部１２の各スレッド間でも処理量を調整するのが望ましい。例えば、顔追跡処理を実行中でないなら、処理量調整部１５は、顔検出スレッド１２１による顔を検出する際に用いる画像の解像度を標準顔画像解像度より高くしたり、顔検出処理の頻度を標準顔検出頻度（顔検出スレッド１２１での顔検出処理の通常の処理頻度。例えば３フレーム毎に１回。）より多くしたりする。例えば、毎フレーム顔検出処理を行う等である。これにより、顔検出の精度を向上させることができる。
【００７８】
なお、顔トラッキングスレッド１２３にて顔追跡処理を実行中なら、現在追跡中の顔に集中した方が処理の効率化が図れるため、顔認識部１２は、顔検出スレッド１２１を停止して、新たな顔の検出を停止し、顔トラッキングスレッド１２３による顔のトラッキング処理（顔追跡処理）の処理量を標準顔追跡処理量（顔トラッキングスレッド１２３の通常の処理量）より増やして、現在トラッキングしている顔を見失わないようにする。例えば、使用する画像の解像度を標準顔画像解像度より高くしたり、抽出する特徴点を標準顔画像特徴点数より増やすことにより、顔の一部が隠れたり、顔の向きが変化したりしても、顔のトラッキング（追跡）を継続できるようになる。
【００７９】
また、顔認識部１２の処理量を標準顔認識処理量より減らす方法としては、処理量調整部１５が、顔認識部１２の各スレッドで使用している画像の解像度を標準顔画像解像度より低くしたり（例えば縦横とも１／２のピクセル数にする）、抽出する特徴点を標準顔画像特徴点数より減らしたりすることが挙げられる。また、処理量調整部１５が、顔検出スレッド１２１による顔検出処理の頻度を標準顔検出頻度より少なくしたりすることも挙げられる。例えば、通常は３フレームごとに１回、顔検出処理を行っているなら、その頻度を６フレーム毎に１回とか、１０フレーム毎に１回にする等である。処理量調整部１５は、顔認識部１２の処理量を減らすことによって、自律移動装置１００の処理リソースを、地図作成部１１の処理に振り向けることができる。
【００８０】
また、こちらも、顔トラッキングスレッド１２３にて、顔追跡処理を実行中であるか否かに応じて顔認識部１２の各スレッド間で処理量を調整するのが望ましい。例えば、顔追跡処理を実行中でないなら、顔認識部１２は、顔検出スレッド１２１による顔検出処理の処理頻度を標準顔検出頻度より少なくし、顔検出スレッド１２１が顔を検出するまでは顔トラッキングスレッド１２３による顔の追跡処理を停止することができる。そして、顔追跡処理を実行中なら、現在追跡中の顔に集中した方が処理の効率化が図れるため、顔認識部１２は、顔検出スレッド１２１を停止する。これにより、新たな顔の検出が停止されるので、顔識別スレッド１２２の処理も実質的に停止し、顔トラッキングスレッド１２３による顔追跡処理のみが行われることになる。
【００８１】
以上説明したように、自律移動装置１００は、自機位置の推定状況、地図の作成状況及び人の検出又は推定状況に基づき、地図作成部１１の処理と顔認識部１２の処理の処理量を処理量調整部１５が調整することによって、現在の状況下でより重要度の高い処理に処理リソースを割り当て、重要度の低い処理は停止したり間引いたりすることによって、自律移動装置１００の全体の処理バランスを改善することができる。
【００８２】
なお、本発明に係る自律移動装置１００の各機能は、通常のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等のコンピュータによっても実施することができる。具体的には、上記実施形態では、自律移動装置１００が行う自律移動制御処理のプログラムが、記憶部２０のＲＯＭに予め記憶されているものとして説明した。しかし、プログラムを、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ、フレキシブルディスク、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  Ｄｉｓｃ）等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータに読み込んでインストールすることにより、上述の各機能を実現することができるコンピュータを構成してもよい。また、このプログラムは、ネットワークを介してコンピュータにダウンロードされてもよい。
【００８３】
また、このコンピュータは自律移動装置１００に内蔵してもよいし、自律移動装置１００とは別個に存在してもよい。すなわち、図８に示すように、制御部や記憶部を外部のサーバ２００に設けてもよい。クラウドコンピューティング技術により、自律移動装置１００の制御部１０は、撮像部３１や音声検出部３３等で取得したデータを通信部３４を介して外部のサーバ２００に送信し、演算処理を該サーバ２００にさせた後に、サーバ２００が行った演算処理の結果を通信部３４を介して受信し、駆動部３２等を制御してもよい。図８では、サーバ２００の制御部４０が地図作成部１１、顔認識部１２、地図作成判定部１３、存否判断部１４、処理量調整部１５及び動作制御部１６を備える構成となっているが、サーバ２００の制御部４０と自律移動装置１００の制御部１０とのどちらかに各部が備わっていればよい。各部をサーバ２００の制御部４０が備えるか自律移動装置１００の制御部１０が備えるかについては、任意である。自律移動装置１００の記憶部２０と、サーバ２００の記憶部５０についても同様である。
【００８４】
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【００８５】
（付記１）
画像を取得する撮像部と、
前記撮像部が取得した画像に基づいて、自機位置を推定しながら周囲の地図を作成する地図作成部と、
前記撮像部が取得した画像から人の顔を認識する顔認識部と、
前記地図作成部により基準地図情報量以上の前記地図が作成されたか否かを判定する地図作成判定部と、
自機の周囲に前記人が存在することを検出しているか否か及び推定できるか否かを判断する存否判断部と、
前記地図作成判定部での判定結果及び前記存否判断部での判断結果に基づき、前記地図作成部の処理量及び前記顔認識部の処理量を調整する処理量調整部と、
を備える自律移動装置。
【００８６】
（付記２）
前記処理量調整部は、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されていないと判定した場合、又は、前記存否判断部が前記人が存在することを検出しておらず推定もできないと判断した場合は、前記顔認識部の処理量を減らして前記地図作成部の処理量を増やし、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されたと判定し、かつ、前記存否判断部が前記人が存在することを検出しているか又は推定できると判断した場合は、前記地図作成部の処理量を減らして前記顔認識部の処理量を増やす、
付記１に記載の自律移動装置。
【００８７】
（付記３）
前記顔認識部の行う処理は、前記画像から人の顔を検出し、画像中で顔の写っている領域を取得する顔検出処理と、前記顔検出処理で検出した顔を前記撮像部が逐次取得している画像中で追跡する顔追跡処理と、を含み、
前記顔認識部は、前記顔追跡処理を実行中である場合は、前記顔検出処理は行わない、
付記１又は２に記載の自律移動装置。
【００８８】
（付記４）
前記処理量調整部は、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されたと判定し、かつ、前記存否判断部が前記人が存在することを検出しているか又は推定できると判断した場合は、前記地図作成部に前記地図を作成させないことによって、前記地図作成部の処理量を減らす、
付記１から３のいずれか１つに記載の自律移動装置。
【００８９】
（付記５）
前記顔認識部の行う処理は、前記画像から人の顔を検出し、画像中で顔の写っている領域を取得する顔検出処理を含み、
前記処理量調整部は、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されていないと判定した場合、又は、前記存否判断部が前記人が存在することを検出しておらず推定もできないと判断した場合は、前記顔認識部の前記顔検出処理の処理頻度を標準顔検出頻度より少なくすることによって、前記顔認識部の処理量を減らす、
付記１から４のいずれか１つに記載の自律移動装置。
【００９０】
（付記６）
前記処理量調整部は、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されていないと判定した場合、又は、前記存否判断部が前記人が存在することを検出しておらず推定もできないと判断した場合は、前記地図作成部の地図作成処理の処理頻度を標準地図作成頻度より多くすることによって、前記地図作成部の処理量を増やす、
付記１から５のいずれか１つに記載の自律移動装置。
【００９１】
（付記７）
前記顔認識部の行う処理は、前記画像から人の顔を検出し、画像中で顔の写っている領域を取得する顔検出処理を含み、
前記処理量調整部は、
前記地図作成判定部が基準地図情報量以上の前記地図が作成されたと判定し、かつ、前記存否判断部が前記人が存在することを検出しているか又は推定できると判断した場合は、前記顔認識部の前記顔検出処理の処理頻度を標準顔検出頻度より多くすることによって、前記顔認識部の処理量を増やす、
付記１から６のいずれか１つに記載の自律移動装置。
【００９２】
（付記８）
前記地図作成部は、前記撮像部が取得した画像中の特徴点の３次元位置を算出することによって前記地図を作成し、
前記地図作成判定部は、前記地図作成部が自機位置を推定した後に、３次元位置を算出した前記特徴点の数が基準特徴点数以上になった場合に、基準地図情報量以上の前記地図が作成されたと判定する、
付記１から７のいずれか１つに記載の自律移動装置。
【００９３】
（付記９）
前記地図作成判定部は、前記地図作成部が自機位置を推定した後に、自機位置を中心とする基準半径の円内の地図の情報を取得した場合に、基準地図情報量以上の前記地図が作成されたと判定する、
付記１から８のいずれか１つに記載の自律移動装置。
【００９４】
（付記１０）
前記顔認識部の行う処理は、前記画像から人の顔を検出し、画像中で顔の写っている領域を取得する顔検出処理を含み、
前記存否判断部は、前記顔認識部が前記顔検出処理により前記人の顔を検出している場合は、自機の周囲に人が存在することを検出していると判断する、
付記１から９のいずれか１つに記載の自律移動装置。
【００９５】
（付記１１）
人の音声を検出する音声検出部をさらに備え、
前記存否判断部は、前記音声検出部が、前記音声を検出している場合は、自機の周囲に人が存在することを検出していると判断する、
付記１から１０のいずれか１つに記載の自律移動装置。
【００９６】
（付記１２）
現在時刻を取得する時計部と、
場所及び時間帯毎の、人の統計的な存在確率を求めるための統計情報を記憶する統計情報記憶部と、
をさらに備え、
前記存否判断部は、前記地図作成部が自機位置を推定でき、かつ、推定した前記自機位置、前記時計部が取得した現在時刻、及び、前記統計情報記憶部に記憶されている前記統計情報に基づいて求めた前記人の統計的な存在確率が基準存在確率以上の場合に、自機の周囲に人が存在することを推定できると判断する、
付記１から１１のいずれか１つに記載の自律移動装置。
【００９７】
（付記１３）
人の顔認識を行いながら周囲の地図作成を行う自律移動方法であって、
周囲の地図を作成できていない場合又は人の存在を検出しておらず推定もできない場合は、顔認識処理の処理量を減らして地図作成処理の処理量を増やし、
周囲の地図を作成できており、人の存在を検出しているか又は推定できる場合は、地図作成処理の処理量を減らして顔認識処理の処理量を増やす、
自律移動方法。
【００９８】
（付記１４）
自機位置を推定しながら周囲の地図を作成する地図作成ステップと、
人の顔を認識する顔認識ステップと、
前記地図作成ステップで基準地図情報量以上の前記地図が作成されたか否かを判定する地図作成判定ステップと、
自機の周囲に前記人が存在することを検出しているか否か及び推定できるか否かを判断する存否判断ステップと、
前記地図作成判定ステップでの判定結果及び前記存否判断ステップでの判断結果に基づき、前記地図作成ステップの処理量及び前記顔認識ステップの処理量を調整する処理量調整ステップと、
を含む自律移動方法。
【００９９】
（付記１５）
コンピュータを、
自機位置を推定しながら周囲の地図を作成する地図作成部、
人の顔を認識する顔認識部、
前記地図作成部により基準地図情報量以上の前記地図が作成されたか否かを判定する地図作成判定部、
自機の周囲に前記人が存在することを検出しているか否か及び推定できるか否かを判断する存否判断部、
前記地図作成判定部での判定結果及び前記存否判断部での判定結果に基づき、前記地図作成部の処理量及び前記顔認識部の処理量を調整する処理量調整部、
として機能させるためのプログラム。
【符号の説明】
【０１００】
１０，４０…制御部、１１…地図作成部、１２…顔認識部、１３…地図作成判定部、１４…存否判断部、１５…処理量調整部、１６…動作制御部、２０，５０…記憶部、２１…画像記憶部、２２…地図記憶部、２３…顔画像記憶部、２４…統計情報記憶部、３１…撮像部、３２…駆動部、３３…音声検出部、３４，６１…通信部、１００…自律移動装置、１１１…トラッキングスレッド、１１２…マッピング＋バンドルアジャストメントスレッド、１１３…ループクロージングスレッド、１２１…顔検出スレッド、１２２…顔識別スレッド、１２３…顔トラッキングスレッド、２００…サーバ
【図１】
2018055167.tif 000003
【図２】
2018055167.tif 000004
【図３】
2018055167.tif 000005
【図４】
2018055167.tif 000006
【図５】
2018055167.tif 000007
【図６】
2018055167.tif 000008
【図７】
2018055167.tif 000009
【図８】
2018055167.tif 000010