(57)【要約】【課題】環境の変化に対してロバストな自己位置推定を可能にする技術を改善する。【解決手段】自律移動装置１００は、撮像部３３で撮影された画像を用いて地図の作成及び位置の推定を行う。自律移動装置１００は、制御部１０と記憶部２０とを備える。制御部１０は、周囲の環境の情報である環境情報を取得し、記憶部２０に保存されている環境地図の中から、周囲の環境に適合する環境地図を選択し、選択した環境地図を用いて位置を推定する。【選択図】図４
2019159520.tif 000002
【特許請求の範囲】
【請求項１】
撮像部で撮影された画像を用いて環境地図の作成及び位置の推定を行う自律移動装置であって、
制御部と記憶部とを備え、
前記制御部は、
周囲の環境の情報である環境情報を取得し、
前記記憶部に保存されている環境地図の中から、前記周囲の環境に適合する環境地図を選択し、
前記選択した環境地図を用いて位置を推定する、
自律移動装置。
【請求項２】
前記制御部は、前記環境情報を付加した環境地図を前記記憶部に保存する、
請求項１に記載の自律移動装置。
【請求項３】
前記制御部は、前記撮像部で画像を撮影することによって前記環境情報を取得する、
請求項１又は２に記載の自律移動装置。
【請求項４】
さらに充電器と通信する通信部を備え、
前記制御部は、前記充電器が備える充電器撮像部で撮影した画像を前記通信部で受信することによって前記環境情報を取得する、
請求項１から３のいずれか１項に記載の自律移動装置。
【請求項５】
さらにユーザが入力した情報を取得する入力部を備え、
前記制御部は、前記ユーザが入力した情報を前記入力部で取得することによって前記環境情報を取得する、
請求項１から４のいずれか１項に記載の自律移動装置。
【請求項６】
前記制御部が取得する前記環境情報は、前記周囲の環境の明るさの情報を含む、
請求項１から５のいずれか１項に記載の自律移動装置。
【請求項７】
前記制御部は、前記環境情報の取得を一定の位置で行う、
請求項１から６のいずれか１項に記載の自律移動装置。
【請求項８】
前記制御部は、前記環境情報の取得を充電器の上で行う、
請求項７に記載の自律移動装置。
【請求項９】
前記制御部は、
前記記憶部に保存されている環境地図の中から、以後利用する環境地図の候補となる複数の候補環境地図を抽出し、
前記抽出した複数の候補環境地図のそれぞれを用いて推定した位置の誤差が基準誤差以下となる候補環境地図を、以後利用する環境地図として選択する、
請求項１から８のいずれか１項に記載の自律移動装置。
【請求項１０】
前記記憶部に保存されている環境地図の中から、現在の前記環境情報との類似度の高い環境情報が付加された環境地図を、前記候補環境地図として、類似度の高い順に所定の候補数抽出する、
請求項９に記載の自律移動装置。
【請求項１１】
前記制御部は、前記記憶部に保存されている環境地図の中から、ランダムに選択した環境地図を、前記候補環境地図として抽出する、
請求項９又は１０に記載の自律移動装置。
【請求項１２】
前記制御部は、前記記憶部に保存されている環境地図の中から、ユーザが選択した環境地図を、前記候補環境地図として抽出する、
請求項９から１１のいずれか１項に記載の自律移動装置。
【請求項１３】
前記制御部は、
現在利用している環境地図を用いて推定した位置の誤差が基準誤差を超える場合、前記記憶部に保存されている環境地図の中から、前記周囲の環境に適合する環境地図を選択し直す、
請求項１から１２のいずれか１項に記載の自律移動装置。
【請求項１４】
撮像部で撮影された画像を用いて環境地図の作成及び位置の推定を行う自律移動装置の自律移動方法であって、
周囲の環境の情報である環境情報を取得し、
記憶部に保存されている環境地図の中から、前記周囲の環境に適合する環境地図を選択し、
前記選択した環境地図を用いて位置を推定する、
自律移動方法。
【請求項１５】
撮像部で撮影された画像を用いて環境地図の作成及び位置の推定を行う自律移動装置のコンピュータに、
周囲の環境の情報である環境情報を取得し、
記憶部に保存されている環境地図の中から、前記周囲の環境に適合する環境地図を選択し、
前記選択した環境地図を用いて位置を推定する、
処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自律移動装置、自律移動方法及びプログラムに関する。
【背景技術】
【０００２】
屋内を自動的に掃除する掃除機ロボットのような、環境地図を作成して自律的に移動する自律移動装置が普及してきている。環境地図を作成する際にカメラで撮影した画像を用いる場合、作成される環境地図の内容は照明等の環境に大きく影響を受ける。そのため、環境地図を作成した際の照明等の環境と異なる環境において、その環境地図を利用して自己位置の推定を行うと、位置推定の性能が大幅に悪化してしまう。この問題を解決する技術として、特許文献１には、周囲環境のランドマーク配置をもとに自己位置推定することにより、外乱による影響を抑制した自己位置推定をすることができる自律移動装置が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１６／０１６９５５号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載されている自律移動装置は、照明変化等の外乱要因（環境の変化）に影響されないランドマークを選択し、選択したランドマークを追跡するようにカメラを制御し、そのように追跡制御されているカメラで撮影したランドマークの配置をもとに自己位置を推定するため、環境の変化に対してロバストな自己位置推定ができる。しかし、環境の変化に影響されないランドマークとは、床の白線等の明確な形状を持つランドマーク（マーカー）であり、周囲にこのような明確なランドマークがない環境では、自律移動装置の動作が不安定になる可能性があった。したがって、従来の自律移動装置では、環境の変化に対してロバストな自己位置推定を可能にする技術に改善の余地がある。
【０００５】
本発明は、上記問題を解決するためになされたものであり、環境の変化に対してロバストな自己位置推定を可能にする技術を改善した自律移動装置、自律移動方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の自律移動装置は、
撮像部で撮影された画像を用いて環境地図の作成及び位置の推定を行う自律移動装置であって、
制御部と記憶部とを備え、
前記制御部は、
周囲の環境の情報である環境情報を取得し、
前記記憶部に保存されている環境地図の中から、前記周囲の環境に適合する環境地図を選択し、
前記選択した環境地図を用いて位置を推定する。
【発明の効果】
【０００７】
本発明によれば、環境の変化に対してロバストな自己位置推定を可能にする技術を改善することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態１に係る自律移動装置の外観を示す図である。
【図２】実施形態１に係る充電器の外観を示す図である。
【図３】実施形態１に係る充電器が送信する帰還信号を説明する図である。
【図４】実施形態１に係る自律移動装置の機能構成を示す図である。
【図５】実施形態１に係る自律移動装置が作成する環境地図のデータ構造を示す図である。
【図６】実施形態１に係る自律移動装置の起動時の処理のフローチャートである。
【図７】実施形態１に係る自律移動装置の自己位置推定スレッドのフローチャートである。
【図８】実施形態１に係る自律移動装置の環境地図保存処理のフローチャートである。
【図９】実施形態１に係る自律移動装置の環境地図抽出処理のフローチャートである。
【図１０】実施形態１に係る自律移動装置のＲｅｌｏｃａｌｉｚａｔｉｏｎ処理のフローチャートである。
【図１１】本発明の実施形態１の変形例２に係る自律移動装置の自己位置推定スレッドのフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態に係る自律移動装置について、図表を参照して説明する。なお、図中同一又は相当部分には同一符号を付す。
【００１０】
（実施形態１）
本発明の実施形態に係る自律移動装置は、地図（環境地図）を作成しながら、用途に応じて自律的に移動する装置である。この用途とは、例えば、警備監視用、屋内掃除用、ペット用、玩具用等である。
【００１１】
自律移動装置１００は、図１に示すように、外観上、帰還信号受信部３１（３１ａ，３１ｂ）、駆動部３２（３２ａ，３２ｂ）、撮像部３３、充電接続部３５、を備える。なお、図１には示されていないが、自律移動装置１００は、周囲に存在する物体（障害物）を検出する障害物センサを備えてもよい。また、自律移動装置１００の電池を充電するための充電器２００は、図２に示すように、外観上、帰還信号送信部５１（５１ａ，５１ｂ）、電力供給部５２、充電器撮像部５３を備える。
【００１２】
自律移動装置１００の充電接続部３５と充電器２００の電力供給部５２とが接続することにより、充電器２００から電力の供給を受けて、自律移動装置１００は内蔵している電池を充電することができる。なお、充電接続部３５及び電力供給部５２は、それぞれがお互いと接続するための接続端子である。これらは、駆動部３２により自律移動装置１００が充電器２００の上に移動することによって、接続される。この接続は、充電接続部３５と電力供給部５２とが接触することによって接続してもよいし、充電接続部３５と電力供給部５２とが近接することによって電磁誘導等により接続してもよい。
【００１３】
撮像部３３は、自律移動装置１００の前方から上部までの広範囲を撮影できる広角レンズを備える。このため、撮像部３３は天井の電灯が点灯しているか否かを判別可能な画像を撮影することができる。そして、自律移動装置１００は、撮像部３３を利用して単眼ＳＬＡＭ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｌｏｃａｌｉｚａｔｉｏｎ  Ａｎｄ  Ｍａｐｐｉｎｇ）処理を行うことができる。
【００１４】
実施形態１では使用されないが、充電器撮像部５３も、充電器２００の周囲から上部までの広範囲を撮影できる広角レンズを備える。充電器撮像部５３も、撮像部３３と同様に、天井の電灯が点灯しているか否かを判別可能な画像を撮影することができる。
【００１５】
自律移動装置１００の帰還信号受信部３１は、充電器２００から送信される帰還信号（赤外線ビーコン）を受信するためのデバイスである。自律移動装置１００の正面に向かって左に帰還信号受信部３１ａ、右に帰還信号受信部３１ｂと、合計２つの帰還信号受信部３１が備えられている。また、充電器２００の帰還信号送信部５１は、自律移動装置１００に帰還信号を送信するためのデバイスである。充電器２００の正面に向かって右に帰還信号送信部５１ａが、左に帰還信号送信部５１ｂが、それぞれ備えられている。そして、帰還信号送信部５１ａから送信される帰還信号と、帰還信号送信部５１ｂから送信される帰還信号とは、異なる信号になっている。したがって、帰還信号受信部３１は、各々左右どちらの帰還信号送信部５１からの帰還信号を受信したのかを判別することができる。
【００１６】
充電器２００の帰還信号送信部５１から送信される帰還信号の左右それぞれの受信可能範囲５４（５４ａ，５４ｂ）の一例を図３に示す。帰還信号送信部５１ａから送信される帰還信号は、受信可能範囲５４ａの内部に自律移動装置１００の帰還信号受信部３１が入ると受信できる。そして、帰還信号送信部５１ｂから送信される帰還信号は、受信可能範囲５４ｂの内部に自律移動装置１００の帰還信号受信部３１が入ると受信できる。したがって、自律移動装置１００は、受信可能範囲５４の内部に入ると充電器２００の存在する方向を把握することができる。そして、自律移動装置１００は、帰還信号送信部５１ａからの帰還信号を帰還信号受信部３１ａが受信し、帰還信号送信部５１ｂからの帰還信号を帰還信号受信部３１ｂが受信するように向きを調整しながら進むことによって、充電器２００の上に移動することができる。自律移動装置１００は、充電器２００の上に移動すると、充電接続部３５と電力供給部５２とが接続し、自律移動装置１００に内蔵されている電池を充電することができる。
【００１７】
駆動部３２は、独立２輪駆動型であって、車輪とモータとを備える移動手段である。自律移動装置１００は、２つの車輪の同一方向駆動により前後の平行移動（並進移動）を、２つの車輪の逆方向駆動によりその場での回転（向き変更）を、２つの車輪のそれぞれ速度を変えた駆動により旋回移動（並進＋回転（向き変更）移動）を、行うことができる。また、各々の車輪にはロータリエンコーダが備えられており、ロータリエンコーダで車輪の回転数を計測し、車輪の直径や車輪間の距離等の幾何学的関係を利用することで並進移動量及び回転量を計算できる。例えば、車輪の直径をＤ、回転数をＲ（ロータリエンコーダにより測定）とすると、その車輪の接地部分での並進移動量はπ・Ｄ・Ｒとなる。また、車輪の直径をＤ、車輪間の距離をＩ、右車輪の回転数をＲＲ、左車輪の回転数をＲＬとすると、向き変更の回転量は（右回転を正とすると）３６０°×Ｄ×（ＲＬ−ＲＲ）／（２×Ｉ）となる。この並進移動量及び回転量を逐次足し合わせていくことで、駆動部３２は、いわゆるオドメトリ（メカオドメトリ）として機能し、自己位置（移動開始時の位置及び向きを基準とした位置及び向き）を計測することができる。
【００１８】
図４に示すように、自律移動装置１００は、帰還信号受信部３１（３１ａ，３１ｂ）、駆動部３２（３２ａ，３２ｂ）、撮像部３３、充電接続部３５、に加えて、制御部１０、記憶部２０、通信部３４、を備える。
【００１９】
制御部１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等で構成され、記憶部２０に記憶されたプログラムを実行することにより、後述する各部（環境情報取得部１１、地図作成部１２、自己位置推定部１３、行動計画部１４、移動制御部１５）の機能を実現する。また、制御部１０は、時計（図示せず）を備え、現在日時の取得や経過時間のカウントをすることができる。
【００２０】
記憶部２０は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成され、ＲＯＭの一部又は全部は電気的に書き換え可能なメモリ（フラッシュメモリ等）で構成されている。記憶部２０は、機能的に、地図記憶部２１と、地図保存部２２と、を含む。ＲＯＭには制御部１０のＣＰＵが実行するプログラム及びプログラムを実行する上で予め必要なデータが記憶されている。ＲＡＭには、プログラム実行中に作成されたり変更されたりするデータが記憶される。
【００２１】
地図記憶部２１には、撮像部３３が撮影した画像の情報に基づいてＳＬＡＭ処理によって地図作成部１２が作成した環境地図が記憶される。環境地図は、図５に示すように、キーフレーム情報群及びＭａｐＰｏｉｎｔ情報群並びにこれらの情報を取得した際の環境情報を含み、各環境地図には地図ＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）が割り振られる。地図ＩＤは環境地図を一意に識別するためのＩＤである。
【００２２】
なお、キーフレームとは、ＳＬＡＭ処理において、撮像部３３が撮影した画像（フレーム）のうち３次元（３Ｄ）位置の推定に用いるフレームのことをいう。そして、図５に示すように、キーフレーム情報は、キーフレームを撮影した時の撮像部３３（自律移動装置１００）の環境地図（３次元空間）内での３Ｄ姿勢（位置（３Ｄ座標）及び向き）と、キーフレーム中に含まれる複数の特徴点の情報を含む。また、各キーフレーム情報には、当該キーフレームを一意に識別するためのＩＤであるキーフレームＩＤが割り振られる。
【００２３】
キーフレーム中に含まれる特徴点とは、キーフレーム（画像）中の、エッジ部分やコーナー部分等、画像内の特徴的な部分の点のことをいう。特徴点は、例えばＳＩＦＴ（Ｓｃａｌｅ−Ｉｎｖａｒｉａｎｔ  Ｆｅａｔｕｒｅ  Ｔｒａｎｓｆｏｒｍ）、ＳＵＲＦ（Ｓｐｅｅｄｅｄ  Ｕｐ  Ｒｏｂｕｓｔ  Ｆｅａｔｕｒｅｓ）、ＦＡＳＴ（Ｆｅａｔｕｒｅｓ  ｆｒｏｍ  Ａｃｃｅｌｅｒａｔｅｄ  Ｓｅｇｍｅｎｔ  Ｔｅｓｔ）等のアルゴリズムで検出することができる。そして、図５に示すように、特徴点の情報として、その特徴点のキーフレーム内における２Ｄ座標、特徴点の特徴量、そして、その特徴点の環境地図内における３Ｄ座標点が推定済であるならその特徴点に対応するＭａｐＰｏｉｎｔのＩＤを含む。その特徴点の環境地図内における３Ｄ座標がまだ推定されていないなら「対応するＭａｐＰｏｉｎｔのＩＤ」には、３Ｄ座標が未推定であることを示す特別なＩＤ（例えば０）が格納される。
【００２４】
なお、特徴点の特徴量としては、例えばＯＲＢ（Ｏｒｉｅｎｔｅｄ  ＦＡＳＴ  ａｎｄ  Ｒｏｔａｔｅｄ  ＢＲＩＥＦ）特徴を用いることができる。また、ＭａｐＰｏｉｎｔとは、ＳＬＡＭ処理によって、環境地図内における３Ｄ座標が推定できた特徴点の３Ｄ座標点のことをいう。ＭａｐＰｏｉｎｔの情報には図５に示すように、ＭａｐＰｏｉｎｔ  ＩＤ（ＭａｐＰｏｉｎｔを一意に識別するためのＩＤ）と、そのＭａｐＰｏｉｎｔの環境地図内における３Ｄ座標が含まれる。したがって、特徴点の情報に含まれる「対応するＭａｐＰｏｉｎｔのＩＤ」から、その特徴点の環境地図内における３Ｄ座標を取得することができる。
【００２５】
また、環境情報とは、電灯のＯＮ／ＯＦＦ、明るさ情報、時刻等、自律移動装置１００の位置推定に影響を及ぼすと考えられる周囲の環境の情報である。環境情報として重要なものは主に明るさに関係する情報（照明のＯＮ／ＯＦＦ、カーテンの開け閉め、窓からの日光の条件（朝と夕、天候）等）であるが、人の数、家具の配置等を含めてもよい。また、気温、湿度、気圧等は位置推定には直接は影響しないが、これらによって部屋の配置や人の出入りが変化するのであれば、これらの情報を環境情報に含めてもよい。
【００２６】
地図保存部２２は、記憶部２０の電気的に書き換え可能なＲＯＭ（フラッシュメモリ等）内に存在し、地図記憶部２１に記憶されている環境地図を、自律移動装置１００の電源が落とされた後も消滅しないように保存する。
【００２７】
通信部３４は、充電器２００やその他の外部装置と無線通信するためのアンテナを含む無線モジュールである。例えば、通信部３４は、Ｂｌｕｅｔｏｏｔｈ（登録商標）に基づく近距離無線通信を行うための無線モジュールである。通信部３４を用いることにより、自律移動装置１００は、充電器２００の備える充電器撮像部５３が撮影した画像データの受信や、外部装置とデータの受け渡し等を行うことができる。
【００２８】
次に、自律移動装置１００の制御部１０の機能的構成について説明する。制御部１０は、環境情報取得部１１、地図作成部１２、自己位置推定部１３、行動計画部１４、移動制御部１５、の機能を実現し、環境地図の作成、自己位置の推定、移動制御等を行う。また、制御部１０は、マルチスレッド機能に対応しており、複数のスレッド（異なる処理の流れ）を並行して実行することができる。
【００２９】
環境情報取得部１１は、撮像部３３が撮影した画像データに基づき、電灯のＯＮ／ＯＦＦ、明るさ情報等の、周囲の環境を表す環境情報を取得する。また、環境情報に日時情報が含まれる場合は、環境情報取得部１１は、制御部１０が備える時計から現在日時を取得する。
【００３０】
地図作成部１２は、撮像部３３が撮影した画像データを用いてＳＬＡＭ処理により、図５に示すキーフレーム情報群とＭａｐＰｏｉｎｔ情報群とからなる環境地図のデータを作成し、地図記憶部２１に書き込む。
【００３１】
自己位置推定部１３は、撮像部３３が撮影した画像データと地図作成部１２が作成した環境地図のデータとを用いてＳＬＡＭ処理により、自律移動装置１００の環境地図内の姿勢（位置（３Ｄ座標）及び向き）を推定する。なお、毎回「姿勢（位置及び向き）」と記載するのは煩雑であるため、本明細書及び特許請求の範囲では、単に「位置」と記載している場合でも、位置だけでなく向きも含むものとする。つまり「姿勢（位置及び向き）」を表す言葉として「位置」が用いられる場合がある。
【００３２】
行動計画部１４は、地図記憶部２１に記憶されている環境地図及び動作モードに基づき、移動先及び経路を設定する。なお、動作モードとは、自律移動装置１００の行動様式を定めるものである。自律移動装置１００は、例えば、ランダムに移動する「自由散歩モード」、地図の作成範囲を広げていく「地図作成モード」、後述するメインスレッド等から指定された場所に移動する「移動先指定モード」等の複数の動作モードを持つ。動作モードは、例えば、初期値は地図作成モードで、地図がある程度作成されたら（例えば地図作成モードで１０分経過したら）自由散歩モードになり、電池残量が少なくなったら充電器２００の位置を移動先に指定された移動先指定モードになるというように、予め変化する条件が設定されていてもよいし、外部（ユーザ、メインスレッド等）からの指示により、設定されてもよい。行動計画部１４が経路を設定する際には、地図作成部１２が作成した環境地図に基づき、自律移動装置１００の現在位置から移動先までの経路を設定する。
【００３３】
移動制御部１５は、行動計画部１４が設定した経路に沿って、自律移動装置１００を移動させるように駆動部３２を制御する。
【００３４】
以上、自律移動装置１００の機能構成について説明した。次に、自律移動装置１００で起動される各種処理について説明する。自律移動装置１００は、電源オフ時は充電器２００に接続して充電されており、電源が投入されると、充電器２００に接続された位置で、後述する起動処理が実行され、メインスレッドをはじめとする各種スレッドが並行して実行される。なお、メインスレッドとは、自律移動装置１００が用途に応じた処理を実行するためのスレッドであり、例えば屋内掃除用の処理を実行するスレッドである。では、自律移動装置１００の起動時の処理について、図６を参照して説明する。図６は、自律移動装置１００の起動時の処理のフローチャートである。
【００３５】
まず、自律移動装置１００の制御部１０は、メインスレッドを起動する（ステップＳ１０１）。メインスレッドは、次のステップで起動される自己位置推定スレッドから自律移動装置１００の現在の姿勢（環境地図内の３Ｄ座標及び向き）の情報を受けて、用途に応じた処理（例えば屋内掃除用の処理）を行うスレッドである。
【００３６】
次に、制御部１０は、ＳＬＡＭ処理用の各種スレッドを起動する（ステップＳ１０２）。ＳＬＡＭ処理用の各種スレッドとは、自律移動装置１００の位置を推定する自己位置推定スレッド、環境地図を作成する地図作成スレッド、ループクロージング処理を行うループクロージングスレッド等である。なお、ループクロージング処理とは、自律移動装置１００が、以前来たことのある同じ場所に戻ってきたことを認識した場合に、以前この同じ場所にいた時の姿勢の値と現在の姿勢の値とのずれを用いて、以前来た時から今までの移動軌跡中のキーフレームや、関連するＭａｐＰｏｉｎｔの３Ｄ位置を修正する処理をいう。
【００３７】
次に、制御部１０は、移動スレッドを起動する（ステップＳ１０３）。移動スレッドは、メインスレッドから移動命令を受けて、移動制御部１５が駆動部３２を制御して自律移動装置１００を移動させる処理を行うスレッドである。そして、これ以後は、自律移動装置１００は、この起動時の処理によって起動された各スレッドにより制御される。
【００３８】
ＳＬＡＭ処理用のスレッドのうち、自己位置推定スレッドについて、図７を参照して説明する。自己位置推定スレッドは、地図保存部２２に保存されている環境地図のうち現在の環境に適合した環境地図を選択し、その選択した環境地図を用いて追跡処理（自己位置の推定処理）を行うスレッドである。
【００３９】
まず、制御部１０は、地図保存部２２に環境地図が保存されているか否かを判定する（ステップＳ２０１）。地図保存部２２に環境地図が保存されていなければ（ステップＳ２０１；Ｎｏ）、制御部１０は初期状態からＳＬＡＭ処理を開始し、変数ＭＯＤＥにＴＲＡＣＫＩＮＧをセットし（ステップＳ２０２）、ステップＳ２１１に進む。なお、変数ＭＯＤＥは、自律移動装置１００が現在、自己位置を推定可能な状態（ＴＲＡＣＫＩＮＧ状態）なのか、推定できない状態（ＬＯＳＴ状態）なのかを表す変数である。
【００４０】
地図保存部２２に環境地図が保存されていれば（ステップＳ２０１；Ｙｅｓ）、制御部１０は、地図保存部２２に保存されている環境地図の中から現在の環境に適合する可能性の高い環境地図を抽出する処理である環境地図抽出処理を行う（ステップＳ２０３）。環境地図抽出処理の詳細については後述する。
【００４１】
そして、制御部１０は、現在の自己位置が不明な状態において環境地図を利用して自己位置を推定する処理であるＲｅｌｏｃａｌｉｚａｔｉｏｎ処理を行う（ステップＳ２０４）。Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理の詳細については後述する。
【００４２】
そして、制御部１０は、Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理が成功したか否かを判定する（ステップＳ２０５）。Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理が失敗したら（ステップＳ２０５；Ｎｏ）、制御部１０はメインスレッドやユーザから終了指示があるか否かを判定する（ステップＳ２０６）。終了指示があるなら（ステップＳ２０６；Ｙｅｓ）、自己位置推定スレッドを終了する。終了指示がないなら（ステップＳ２０６；Ｎｏ）、移動スレッドに移動指示を出して移動し（ステップＳ２０７）、ステップＳ２０４に戻って再度Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理を行う。なお、ステップＳ２０７での移動は、Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理の最初に取得する画像を変化させるための移動であり、例えば並行動作している他のスレッドの処理により自律移動装置１００が移動している場合は、ステップＳ２０７で改めて移動する必要はない。
【００４３】
一方、Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理が成功したら（ステップＳ２０５；Ｙｅｓ）、制御部１０は、Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理が成功した際に選択していた環境地図を地図記憶部２１に読み込んで、その後の自己位置推定に利用する（ステップＳ２０８）。そして、制御部１０は、変数ＭＯＤＥにＴＲＡＣＫＩＮＧをセットし（ステップＳ２０９）、ステップＳ２１１に進む。
【００４４】
ステップＳ２１１では、ＳＬＡＭによる追跡処理により、自己位置を推定する。この追跡処理は、まず、撮像部３３が撮影した画像データから特徴点を抽出し、抽出した特徴点と、環境地図に含まれる３Ｄ座標が推定済みであるキーフレームの特徴点との対応を、特徴量を利用して取得する。対応が取れた特徴点（対応特徴点）の数が追跡可能基準数（例えば１０）以上あれば、対応特徴点の画像中の２Ｄ座標と、環境地図内における３Ｄ座標との関係から、制御部１０は自己位置を推定することができる。この場合は追跡成功となる。対応特徴点の数が追跡可能基準数未満の場合は自己位置を推定しても誤差が大きくなってしまうため、制御部１０は、追跡失敗と判断して、自己位置の推定は行わない。
【００４５】
制御部１０は、追跡処理の後、追跡処理が成功したか否かを判定する（ステップＳ２１２）。追跡処理が成功したなら（ステップＳ２１２；Ｙｅｓ）、制御部１０は、追跡処理で取得した自己位置をメインスレッドに送信する（ステップＳ２１３）。そして、制御部１０は、規定時間（例えば１０秒）スリープする（ステップＳ２１４）。
【００４６】
一方、追跡処理が失敗したなら（ステップＳ２１２；Ｎｏ）、制御部１０は、変数ＭＯＤＥにＬＯＳＴをセットし（ステップＳ２２０）、メインスレッドに自己位置取得を失敗した旨を送信し（ステップＳ２２１）、ステップＳ２１４に進んで規定時間スリープする。
【００４７】
その後、制御部１０は、メインスレッドやユーザから終了指示があるか否かを判定する（ステップＳ２１５）。終了指示があるなら（ステップＳ２１５；Ｙｅｓ）、自己位置推定スレッドを終了する。終了指示がないなら（ステップＳ２１５；Ｎｏ）、環境地図を保存する処理である環境地図保存処理を行う（ステップＳ２１６）。環境地図保存処理の詳細については後述する。
【００４８】
次に、制御部１０は、変数ＭＯＤＥにセットされている値がＬＯＳＴであるか否かを判定する（ステップＳ２１０）。変数ＭＯＤＥにセットされている値がＬＯＳＴでないなら（ステップＳ２１０；Ｎｏ）、ＴＲＡＣＫＩＮＧ中であるということなので、ステップＳ２１１に進んで追跡処理を行う。
【００４９】
変数ＭＯＤＥにセットされている値がＬＯＳＴなら（ステップＳ２１０；Ｙｅｓ）、制御部１０は、現在利用している（地図記憶部２１に読み込まれている）環境地図を用いてＲｅｌｏｃａｌｉｚａｔｉｏｎ処理を行い（ステップＳ２１７）、そのＲｅｌｏｃａｌｉｚａｔｉｏｎ処理が成功したか否かを判定する（ステップＳ２１８）。Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理が成功したなら（ステップＳ２１８；Ｙｅｓ）、制御部１０は、変数ＭＯＤＥにＴＲＡＣＫＩＮＧをセットし（ステップＳ２１９）、ステップＳ２１３に進む。Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理が失敗したなら（ステップＳ２１８；Ｎｏ）、ステップＳ２２１に進む。
【００５０】
以上、自己位置推定スレッドの処理について説明した。次に、自己位置推定スレッド（図７）のステップＳ２１６で実行される環境地図保存処理について、図８を参照して説明する。この処理は、所定の時間（例えば１時間）毎に、地図記憶部２１に記憶されている地図を地図保存部２２に保存する処理である。
【００５１】
まず制御部１０は、環境地図を前回、地図保存部２２に保存してから、所定時間（例えば１時間）経過したか否かを判定する（ステップＳ３０１）。所定時間経過していないなら（ステップＳ３０１；Ｎｏ）、環境地図保存処理を終了する。所定時間経過しているなら（ステップＳ３０１；Ｙｅｓ）、制御部１０は、撮像部３３で画像を撮影する（ステップＳ３０２）。そして、制御部１０は、画像中の輝度が高い領域の数を数えることにより、点灯している電灯の数を取得する（ステップＳ３０３）。なお、画像中の輝度が高い領域とは、具体的には所定の輝度基準値以上の明るさをもつ領域である。撮像部３３は前方から上部までの広範囲を撮影できる広角レンズを備えるので、天井が撮像範囲に含まれており、天井の電灯の数を判別可能な画像を撮影することができる。ステップＳ３０３において、制御部１０は、環境情報取得部１１として機能する。
【００５２】
そして、制御部１０は、取得した点灯電灯数を環境情報として、地図記憶部２１に書き込む（ステップＳ３０４）。そして、制御部１０は、地図記憶部２１に記憶されている環境地図（図５に示すように環境情報が付加されている環境地図）を地図保存部２２に保存する（ステップＳ３０５）。
【００５３】
以上説明した環境地図保存処理により、地図保存部２２には所定時間毎に環境情報が付加された環境地図のデータが保存されていく。次に、自己位置推定スレッド（図７）のステップＳ２０３で実行される環境地図抽出処理について、図９を参照して説明する。この処理は、地図保存部２２に保存されている複数の環境地図の中から、現在の環境情報と一致又は類似する環境情報を含んだ環境地図を抽出する処理である。
【００５４】
まず、制御部１０は、撮像部３３で画像を撮影する（ステップＳ４０１）。そして、画像中の輝度が高い領域（所定の輝度基準値以上の明るさをもつ領域）の数を求めることにより、点灯している電灯の数を検出する（ステップＳ４０２）。
【００５５】
そして、制御部１０は、地図保存部２２に保存されている複数の環境地図の中から、環境情報（点灯電灯数）が同じか又は類似する環境地図を所定の候補数（Ｎ個）抽出し（ステップＳ４０３）、環境地図抽出処理を終了する。環境地図を抽出する際は、環境地図に付加されている環境情報が現在の環境情報に類似する順にＮ個抽出する。抽出されたＮ個の環境地図は、今後利用される環境地図の候補となるので、候補環境地図と呼ばれる。なお、Ｎには例えば５等、任意の数を設定してよいが、地図保存部２２に保存されている環境地図の個数が少ない場合には、Ｎ未満の個数の候補環境地図しか抽出できない場合もありうる。
【００５６】
以上説明した環境地図抽出処理により、地図保存部２２に保存されている複数の環境地図の中から環境情報が現在の環境情報と一致又は類似する候補環境地図がＮ個抽出される。次に、自己位置推定スレッド（図７）のステップＳ２０４で実行されるＲｅｌｏｃａｌｉｚａｔｉｏｎ処理について、図１０を参照して説明する。
【００５７】
まず、制御部１０は、撮像部３３で画像を撮影する（ステップＳ５０１）。そして、画像中の特徴点を検出し、検出した各特徴点の特徴量を算出する（ステップＳ５０２）。特徴点の検出方法や、用いる特徴量は任意だが、例えば、検出方法としてＦＡＳＴを用い、特徴量としてＯＲＢを用いることができる。
【００５８】
次に、制御部１０は、先に行われていた環境地図抽出処理で抽出されたＮ個の候補環境地図全てについて、特徴点の対応を確認したか否かを判定する（ステップＳ５０３）。全ての候補環境地図について特徴点対応を確認したなら（ステップＳ５０３；Ｙｅｓ）、Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理は失敗とし（ステップＳ５０４）、Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理を終了する。
【００５９】
まだ特徴点対応を確認していない候補環境地図が残っているなら（ステップＳ５０３；Ｎｏ）、制御部１０は、その残っている候補環境地図の中から１つを選択する（ステップＳ５０５）。そして、選択した候補環境地図のキーフレーム情報群の中から、ステップＳ５０１で取得した画像（取得画像）に類似するキーフレームを検索する（ステップＳ５０６）。この類似キーフレームの検索方法は任意だが、例えば、選択した候補環境地図内の全キーフレームを特徴量のヒストグラムで分類し、取得画像の特徴量のヒストグラムとヒストグラムの類似度によって類似検索をすると高速に検索することができる。
【００６０】
そして、制御部１０は、ステップＳ５０６で検索された類似キーフレームの３Ｄ座標が推定済の特徴点とステップＳ５０１で取得した取得画像の特徴点とで、特徴量により対応を取る。例えば、類似キーフレーム内のある特徴点（３Ｄ座標推定済）の特徴量と、取得画像内のある特徴点の特徴量との類似度が所定の基準類似度よりも高い場合、この２つの特徴点は対応が取れた特徴点（対応特徴点）であることとする。そして、このように対応が取れた特徴点の数を求める（ステップＳ５０７）。
【００６１】
そして、制御部１０は、対応特徴点の数が３より大きいか否かを判定する（ステップＳ５０８）。対応特徴点の数が３以下であれば（ステップＳ５０８；Ｎｏ）、ステップＳ５０３に戻る。なお、ステップＳ５０３に戻る前に、ステップＳ５０６に戻って、ステップＳ５０１で取得した画像に類似するキーフレームのうち、前回検索されなかった（つまり類似度の高さが２番以下の）類似キーフレームを検索してもよい。類似度が高くなくても、対応特徴点数が多い場合はあり得るからである。所定の回数（例えば３回）ステップＳ５０６に戻って別の類似キーフレームで対応特徴点の数を求めても、それが３以下なら（ステップＳ５０８；Ｎｏ）、ステップＳ５０３に戻る。
【００６２】
一方、対応特徴点の数が３より大きければ（ステップＳ５０８；Ｙｅｓ）、ステップＳ５０９に進む。取得画像内の特徴点のうち４点以上が類似キーフレーム内の特徴点（３Ｄ座標推定済）と対応が取れた場合、ＰｎＰ問題（Ｐｅｒｓｐｅｃｔｉｖｅ−ｎ−Ｐｏｉｎｔ  Ｐｒｏｂｌｅｍ）として、取得画像を取得した際の自律移動装置１００の姿勢（位置及び向き）を推定することができる。
【００６３】
ステップＳ５０９では、制御部１０は、このＰｎＰ問題を解いて自律移動装置１００の姿勢を推定し、この推定した姿勢を用いて、類似キーフレーム内の特徴点の２Ｄ座標と、取得画像内の特徴量による対応した特徴点（この対応を取る際には、３Ｄ座標を推定済みであるか否かは問わない）の２Ｄ座標と、の間の誤差（対応誤差）を算出する。そして、この対応誤差が基準誤差Ｔ以下であれば、その特徴点の位置は整合するとして、制御部１０は、そのような整合する対応特徴点の数（整合数）を求める（ステップＳ５０９）。
【００６４】
そして、制御部１０は、整合数が整合基準値Ｋ（例えば１０）よりも大きいか否かを判定する（ステップＳ５１０）。整合数が整合基準値Ｋ以下なら（ステップＳ５１０；Ｎｏ）、ステップＳ５０３に戻る。整合数が整合基準値Ｋより大きければ（ステップＳ５１０；Ｙｅｓ）、制御部１０は、ステップＳ５０９で推定した姿勢を類似キーフレームの３Ｄ姿勢に加算することにより自己位置を推定する（ステップＳ５１１）。そして、Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理は成功とし（ステップＳ５１２）、Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理を終了する。
【００６５】
以上説明したＲｅｌｏｃａｌｉｚａｔｉｏｎ処理により、自律移動装置１００は、自己位置を正しく推定できる環境地図を選択することができる。なお、図１０の処理では、候補環境地図のうち最初に整合数がＫを上回った環境地図を最終的に選択することになるが、全ての候補環境地図について整合数を求めて整合数が最も大きい環境地図を最終的に選択するようにしてもよいし、整合数を求める際に特徴点の座標位置の誤差も各候補環境地図について記憶しておき、最も誤差が小さい環境地図を最終的に選択するようにしてもよい。
【００６６】
以上説明した自己位置推定スレッドの処理により、自律移動装置１００は、起動時の環境に最も適合した環境地図を選択することができるので、環境の変化に対してロバストな自己位置推定を行うことができる。
【００６７】
（実施形態１の変形例１）
実施形態１では、環境情報として点灯している電灯の数のみを用いた。電灯の数を環境情報として用いるだけでも、１つの環境地図を使い続ける従来技術と比べると環境の変化に対するロバスト性は向上するが、さらにロバスト性を向上させるために他の情報を用いてもよい。例えば、実施形態１の変形例１として、環境情報に、天井の電灯のＯＮ／ＯＦＦの情報と、周囲の環境の明るさの情報を用いる例を説明する。
【００６８】
実施形態１では、点灯電灯数のみを環境情報としている。これに対し、実施形態１の変形例１では、電灯のＯＮ／ＯＦＦの情報と、周囲の環境の明るさの情報と、を環境情報とするため、環境情報を（天井の電灯のＯＮ又はＯＦＦ，周囲の環境の明るさ）という２次元ベクトルで表す。実施形態１では、環境地図保存処理（図８）でも環境地図抽出処理（図９）でも、点灯電灯数をそのまま環境情報として用いることができたが、実施形態１の変形例１では、それぞれの処理において、環境情報として、（天井の電灯のＯＮ又はＯＦＦ，周囲の環境の明るさ）という２次元ベクトルを生成する。
【００６９】
ここで、天井の電灯のＯＮ／ＯＦＦの判定は、撮像部３３が撮影した画像中で、撮影範囲の上部にあたる領域中に、周囲に比べて極端に輝度の高い領域があるか否かを判定することによって行うことができる。例えば、撮影画像の上半分の領域の中に、画像全体の平均輝度の高輝度基準値（例えば１０）倍以上の輝度の領域が存在したら、天井の電灯が点灯していると判定する。
【００７０】
また、周囲の環境の明るさの情報に関しては、この情報を得るために、自律移動装置１００は、明るさセンターを別途備えてもよいが、撮像部３３で周囲の環境の明るさを取得してもよい。例えば、撮像部３３の露出時間を明るさ測定用の値に設定して、自律移動装置１００が存在している部屋を撮影して画像を取得し、該画像の全ての画素値の平均値又は中央値を周囲の環境の明るさとしてもよい。
【００７１】
環境情報の２次元ベクトルの最初の値（天井の電灯のＯＮ又はＯＦＦ）は、電灯がＯＮなら１、ＯＦＦなら０の二値を取り、環境情報の２次元ベクトルの２番目の値（周囲の環境の明るさ）は、上記画素値の平均値又は中央値を取る。そして、上述した環境地図保存処理では、このような２次元ベクトルの環境情報を環境地図に付加して保存する。また、環境地図抽出処理では、画像撮影して得た環境情報の２次元ベクトルと、地図保存部２２に保存されている環境地図それぞれに付加された環境情報の２次元ベクトルと、の間で類似度を求め、類似度の高い順にＮ個の候補環境地図を抽出する。なお、２次元ベクトル間の類似度は、例えば、それぞれのベクトルのノルムを１に正規化してから内積を取ることにより得ることができる。
【００７２】
以上説明した実施形態１の変形例１では、周囲の明るさの変化が環境情報に反映されるため、電灯のＯＮ／ＯＦＦに対する影響だけでなく、窓から入ってくる日差しが太陽の位置によって変わることの影響、ブラインドの開け閉めによる影響等にも対応できる。したがって、地図保存部２２に保存されている環境地図の中からより現在の環境に適合した環境地図を選択することができ、環境の変化に対してよりロバストな自己位置推定を行うことができる。
【００７３】
なお、環境情報として、さらに多くの情報を用いる場合も、環境情報を表すベクトルの次元数を増やすことにより対応できる。また、ベクトルの次元数が増えても、環境情報の類似度は、類似度計算の対象となる２つのベクトルのノルムを１に正規化してから内積を取ることにより得ることができる。環境情報を表すベクトルの次元数を増加させれば、地図保存部２２に保存されている環境地図の中からさらに現在の環境に適合した環境地図を選択できる可能性が高まり、環境の変化に対してさらにロバストな自己位置推定を行うことができるようになる。なお、上述の実施形態１の変形例１では、環境情報を２次元ベクトル等のベクトルで表す例を示したが、環境情報はベクトルで表さなければならないわけではなく、任意のデータ構造を採用することができる。
【００７４】
（実施形態１の変形例２）
上述の実施形態では、自己位置推定スレッド（図７）のステップＳ２１７におけるＲｅｌｏｃａｌｉｚａｔｉｏｎ処理が失敗しても利用している環境地図を変更することはしなかった。しかし、例えば自律移動装置１００が長時間移動し続ける場合等、時間の変化とともに周囲の明るさ等の環境が変化してしまう場合も考えられる。このような場合に、利用する環境地図を随時変更可能な実施形態１の変形例２について説明する。
【００７５】
実施形態１の変形例２に係る自己位置推定スレッドは、図１１に示すように、実施形態１に係る自己位置推定スレッド（図７）に、ステップＳ２３１及びステップＳ２３３〜ステップＳ２３５の処理を追加し、ステップＳ２１８の処理をステップＳ２３２の処理に置き換えた処理になっている。これらの点以外は、実施形態１の変形例２は、実施形態１と同様である。追加された処理は、ステップＳ２１７の「現環境地図にてＲｅｌｏｃａｌｉｚａｔｉｏｎ」を２回連続で失敗したことを判定するためにフラグ変数Ｆを導入し、２回連続で失敗したらステップＳ２０３からやり直すための処理である。
【００７６】
まず、ステップＳ２３１では、制御部１０はフラグ変数Ｆを０に初期化する。そして、ステップＳ２３２では、ステップＳ２１７でのＲｅｌｏｃａｌｉｚａｔｉｏｎ処理が成功した場合は（ステップＳ２３２；Ｙｅｓ）、ステップＳ２１８同様にステップＳ２１９に進むが、Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理が失敗した場合は（ステップＳ２３２；Ｎｏ）、制御部１０はフラグ変数Ｆが１か否かを判定する（ステップＳ２３３）。
【００７７】
フラグ変数Ｆが１でないなら（ステップＳ２３３；Ｎｏ）、制御部１０はフラグ変数Ｆに１をセットし（ステップＳ２３４）、ステップＳ２２１に進む。フラグ変数Ｆが１なら（ステップＳ２３３；Ｙｅｓ）、制御部１０はフラグ変数Ｆを０に初期化して（ステップＳ２３５）、ステップＳ２０３に戻り、環境地図抽出から処理をやり直す。以上説明した処理以外の処理は、実施形態１に係る自己位置推定スレッド（図７）と同じなので、説明を省略する。
【００７８】
以上説明した自己位置推定スレッドの処理により、現在利用している環境地図でＲｅｌｏｃａｌｉｚａｔｉｏｎが２回連続で失敗した場合には、候補環境地図の抽出から処理をやり直すことになり、その時点での環境情報に一致又は類似する環境情報が付加された環境地図の選択が行われる。したがって、環境が変化した場合でも、再度その時点での環境に適合した環境地図を選択することができ、環境の変化に対してよりロバストな自己位置推定を行うことができる。
【００７９】
（実施形態１の変形例３）
上述の実施形態では、環境情報を取得する手段として自律移動装置１００が備える撮像部３３を利用していたが、環境情報を取得する手段として充電器２００が備える充電器撮像部５３を利用する実施形態１の変形例３を説明する。
【００８０】
実施形態１の変形例３に係る自律移動装置１００は、電灯の点灯状況、周囲の環境の明るさ等を取得する際に、通信部３４を介して充電器２００に撮影指示を出し、充電器２００が備える充電器撮像部５３が撮影した画像を通信部３４で受信する。なお、図示しないが、充電器２００も、自律移動装置１００の通信部３４と通信可能な通信部を備えている。実施形態１の変形例３に係る自律移動装置１００は、環境情報を取得するための画像の撮影を撮像部３３の代わりに充電器撮像部５３で行う点以外は、実施形態１に係る自律移動装置１００と同じである。なお、環境情報を取得するための画像の撮影を常に充電器撮像部５３で行うのではなく、適宜撮像部３３と充電器撮像部５３とを使い分けたり、常に撮像部３３と充電器撮像部５３の両方を使ったりしてもよい。
【００８１】
以上説明した実施形態１の変形例３では、環境情報を取得するための画像の撮影を充電器２００の充電器撮像部５３で行うが、充電器２００は移動しないため、充電器撮像部５３は固定された位置から画像を撮影できる。このため、自律移動装置１００と共に移動する撮像部３３を用いる場合に比べ、環境情報をより安定的に取得することができる。したがって、このより安定的な環境情報に基づいて、現在の環境により適合した環境地図を選択することができるので、環境の変化に対してよりロバストな自己位置推定を行うことができる。
【００８２】
（実施形態１の変形例４）
上述の実施形態１の変形例３では、充電器２００が充電器撮像部５３と通信部を備える必要があったが、自律移動装置１００の撮像部３３を用いて同様の効果を得る実施形態１の変形例４について説明する。
【００８３】
実施形態１の変形例４に係る自律移動装置１００は、電源ＯＦＦ時は充電器２００の上で充電されているようにする。すると、自律移動装置１００は、電源が投入された直後は常に充電器２００の上にあるので、電源投入直後に撮像部３３で撮影した画像は、変形例３に係る充電器２００に固定されている充電器撮像部５３で撮影した画像と同じものとして扱うことができる。そして、実施形態１の変形例４に係る自己位置推定スレッドで実行される環境地図保存処理では、環境情報が付加された環境地図を地図保存部２２に保存する処理を、所定時間経過の度に行うのではなく、自律移動装置１００が充電器２００に戻った時に行う。
【００８４】
以上説明した実施形態１の変形例４に係る自律移動装置１００は、環境情報を取得するための画像の撮影を常に充電器２００の上で行うため、実施形態１の変形例３と同様に環境情報の変化をより安定的に取得することができる。したがって、このより安定的な環境情報に基づいて、現在の環境により適合した環境地図を選択することができるので、環境の変化に対してよりロバストな自己位置推定を行うことができる。
【００８５】
（実施形態１の変形例５）
上述の実施形態では、自律移動装置１００は、環境地図抽出処理（図９）において、環境情報を取得するために周囲の環境を撮像部３３（又は充電器撮像部５３）で撮影し、撮影により取得した環境情報に類似する環境情報が付加された環境地図を候補環境地図として抽出していた。しかし、候補環境地図の選択はユーザが行ってもよい。候補環境地図をユーザが選択できる実施形態１の変形例５について説明する。
【００８６】
実施形態１の変形例５では、制御部１０は、環境地図抽出処理（図９）の際に、画像を撮影することによって環境情報を取得する必要はなく、ユーザが選択した環境地図を候補環境地図として抽出する。その際、ユーザは外部の端末装置等から通信部３４を介して地図保存部２２に記憶されている環境地図の中から選択したい環境地図を任意の数（例えばＮ個）選択する。そして、制御部１０は、ユーザが選択した候補環境地図を用いて、Ｒｅｌｏｃａｌｉｚａｔｉｏｎ処理（図１０）を行う。
【００８７】
ユーザが環境地図を選択しやすくするために、環境地図の選択に用いる外部の端末装置は、各環境地図に付加されている環境情報が意味する内容をわかりやすく提示してもよい。例えば、各環境地図について、「保存日時：２０１８年３月１日  １０：００、電灯点灯数：１、明るさ：１０００ルクス」のように環境情報を表示した上で、ユーザが環境地図を選択できるようにしてもよい。
【００８８】
以上説明した実施形態１の変形例５では、地図保存部２２に記憶されている環境地図の中からユーザが候補環境地図を選択することができるため、環境情報の類似度により抽出したのでは現在の環境に適合した環境地図をうまく抽出できないような特殊な場合においても、現在の環境により適合した環境地図をユーザ自身が選択することができるので、環境の変化に対してよりロバストな自己位置推定を行うことができる。なお、自律移動装置１００は、マイクや音声認識機能を備えることにより、ユーザが選択する環境地図を音声認識によって取得してもよい。また、候補環境地図の全てをユーザが選択するのではなく、候補環境地図の一部をユーザが選択し、残りは環境情報の類似度に基づいて制御部１０が抽出するようにしてもよい。
【００８９】
（実施形態１の変形例６）
上述の実施形態では、自律移動装置１００は、環境地図保存処理（図８）において、環境情報を取得するために周囲の環境を撮像部３３（又は充電器撮像部５３）で撮影し、撮影によって取得した環境情報を付加した環境地図を地図保存部２２に保存していた。しかし、環境地図を保存する際に付加する環境情報はユーザが入力してもよい。環境地図に付加する環境情報をユーザが入力することができる実施形態１の変形例６について説明する。
【００９０】
実施形態１の変形例６では、制御部１０は、環境地図保存処理（図８）の際に、画像を撮影することによって環境情報を取得する必要はなく、ユーザが入力した環境情報とともに環境地図を保存する。その際ユーザは、それまでに自律移動装置１００が作成した環境地図に付加させたい任意の環境情報を、外部の端末装置等から通信部３４を介して自律移動装置１００に入力する。この時、通信部３４は、ユーザが入力した情報を取得する入力部として機能する。そして、制御部１０は、ユーザが入力した環境情報を付加した環境地図を地図保存部２２に保存する。
【００９１】
以上説明した実施形態１の変形例６では、ユーザが環境情報を自律移動装置１００に入力することができるため、環境情報を適切に取得できないような特殊な場合においても、現在の環境を適切に表す環境情報をユーザ自身が自律移動装置１００に入力することができる。その結果、候補環境地図の抽出の際に、現在の環境に適合した環境地図が抽出されやすくなり、環境の変化に対してよりロバストな自己位置推定を行うことができる。なお、自律移動装置１００は、マイクや音声認識機能を備えることにより、ユーザが入力する環境情報を音声認識によって取得してもよい。この場合、マイクが入力部として機能する。
【００９２】
また、全ての環境地図について、環境地図に付加する環境情報をユーザが入力するのではなく、制御部１０によって適切な環境情報を取得するのが難しい環境であるとユーザが考えた場合等、ユーザが環境情報の入力を希望した時だけユーザが入力した環境情報を環境地図に付加し、それ以外の場合は画像を撮影すること等によって環境情報取得部１１が取得した環境情報を環境地図に付加するようにしてもよい。
【００９３】
（実施形態１の変形例７）
上述の実施形態では、環境地図抽出処理（図９）において、現在の環境情報に一致又は類似する環境情報が付加された環境地図を候補環境地図として抽出していたが、ランダムに選択した環境地図を候補環境地図として抽出する実施形態１の変形例７について説明する。
【００９４】
実施形態１の変形例７では、地図保存部２２に保存されている環境地図の中からランダムに選択した環境地図を候補環境地図に加える。例えば、Ｎ個の候補環境地図を抽出する際に、Ｎ−１個は現在の環境情報に一致又は類似する順に抽出し、残りの１個は、地図保存部２２に保存されている環境地図のうち、まだ抽出されていない環境地図の中からランダムに１個の環境地図を選択し、それを候補環境地図に加える。
【００９５】
以上説明した実施形態１の変形例７では、環境情報に影響されずにランダムに選択された環境地図が候補環境地図に含まれるようになる。そのため、環境情報の類似度によっては現在の環境に適合する環境地図を抽出できないような特殊な場合においても、現在の環境に適合した環境地図が選択される可能性を高めることができ、環境の変化に対してよりロバストな自己位置推定を行うことができる。なお、ランダムに選択する環境地図の個数は１個に限られず、２個やＮ個等、Ｎ以下の任意の個数を設定してもよい。
【００９６】
また、上述の実施形態及び変形例は適宜組み合わせることができる。例えば、実施形態１の変形例５と変形例７とを組み合わせることにより、環境情報の類似度に基づいて制御部１０により抽出された候補環境地図以外に、ユーザにより選択された環境地図や、ランダムに選択された環境地図を候補環境地図に含ませることができる。このようにすると、環境情報の類似度に基づいて抽出したのでは現在の環境に適合した環境地図をうまく抽出できないような特殊な場合においても、現在の環境により適合した環境地図を選択することができる可能性がさらに高まり、環境の変化に対してよりロバストな自己位置推定を行うことができる。
【００９７】
なお、自律移動装置１００の各機能は、通常のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等のコンピュータによっても実施することができる。具体的には、上記実施形態では、自律移動装置１００が行う自律移動制御処理のプログラムが、記憶部２０のＲＯＭに予め記憶されているものとして説明した。しかし、プログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）及びＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  Ｄｉｓｃ）等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータに読み込んでインストールすることにより、上述の各機能を実現することができるコンピュータを構成してもよい。
【００９８】
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【００９９】
（付記１）
撮像部で撮影された画像を用いて環境地図の作成及び位置の推定を行う自律移動装置であって、
制御部と記憶部とを備え、
前記制御部は、
周囲の環境の情報である環境情報を取得し、
前記記憶部に保存されている環境地図の中から、前記周囲の環境に適合する環境地図を選択し、
前記選択した環境地図を用いて位置を推定する、
自律移動装置。
【０１００】
（付記２）
前記制御部は、前記環境情報を付加した環境地図を前記記憶部に保存する、
付記１に記載の自律移動装置。
【０１０１】
（付記３）
前記制御部は、前記撮像部で画像を撮影することによって前記環境情報を取得する、
付記１又は２に記載の自律移動装置。
【０１０２】
（付記４）
さらに充電器と通信する通信部を備え、
前記制御部は、前記充電器が備える充電器撮像部で撮影した画像を前記通信部で受信することによって前記環境情報を取得する、
付記１から３のいずれか１つに記載の自律移動装置。
【０１０３】
（付記５）
さらにユーザが入力した情報を取得する入力部を備え、
前記制御部は、前記ユーザが入力した情報を前記入力部で取得することによって前記環境情報を取得する、
付記１から４のいずれか１つに記載の自律移動装置。
【０１０４】
（付記６）
前記制御部が取得する前記環境情報は、前記周囲の環境の明るさの情報を含む、
付記１から５のいずれか１つに記載の自律移動装置。
【０１０５】
（付記７）
前記制御部は、前記環境情報の取得を一定の位置で行う、
付記１から６のいずれか１つに記載の自律移動装置。
【０１０６】
（付記８）
前記制御部は、前記環境情報の取得を充電器の上で行う、
付記７に記載の自律移動装置。
【０１０７】
（付記９）
前記制御部は、
前記記憶部に保存されている環境地図の中から、以後利用する環境地図の候補となる複数の候補環境地図を抽出し、
前記抽出した複数の候補環境地図のそれぞれを用いて推定した位置の誤差が基準誤差以下となる候補環境地図を、以後利用する環境地図として選択する、
付記１から８のいずれか１つに記載の自律移動装置。
【０１０８】
（付記１０）
前記記憶部に保存されている環境地図の中から、現在の前記環境情報との類似度の高い環境情報が付加された環境地図を、前記候補環境地図として、類似度の高い順に所定の候補数抽出する、
付記９に記載の自律移動装置。
【０１０９】
（付記１１）
前記制御部は、前記記憶部に保存されている環境地図の中から、ランダムに選択した環境地図を、前記候補環境地図として抽出する、
付記９又は１０に記載の自律移動装置。
【０１１０】
（付記１２）
前記制御部は、前記記憶部に保存されている環境地図の中から、ユーザが選択した環境地図を、前記候補環境地図として抽出する、
付記９から１１のいずれか１つに記載の自律移動装置。
【０１１１】
（付記１３）
前記制御部は、
現在利用している環境地図を用いて推定した位置の誤差が基準誤差を超える場合、前記記憶部に保存されている環境地図の中から、前記周囲の環境に適合する環境地図を選択し直す、
付記１から１２のいずれか１つに記載の自律移動装置。
【０１１２】
（付記１４）
撮像部で撮影された画像を用いて環境地図の作成及び位置の推定を行う自律移動装置の自律移動方法であって、
周囲の環境の情報である環境情報を取得し、
記憶部に保存されている環境地図の中から、前記周囲の環境に適合する環境地図を選択し、
前記選択した環境地図を用いて位置を推定する、
自律移動方法。
【０１１３】
（付記１５）
撮像部で撮影された画像を用いて環境地図の作成及び位置の推定を行う自律移動装置のコンピュータに、
周囲の環境の情報である環境情報を取得し、
記憶部に保存されている環境地図の中から、前記周囲の環境に適合する環境地図を選択し、
前記選択した環境地図を用いて位置を推定する、
処理を実行させるためのプログラム。
【符号の説明】
【０１１４】
１０…制御部、１１…環境情報取得部、１２…地図作成部、１３…自己位置推定部、１４…行動計画部、１５…移動制御部、２０…記憶部、２１…地図記憶部、２２…地図保存部、３１，３１ａ，３１ｂ…帰還信号受信部、３２，３２ａ，３２ｂ…駆動部、３３…撮像部、３４…通信部、３５…充電接続部、５１，５１ａ，５１ｂ…帰還信号送信部、５２…電力供給部、５３…充電器撮像部、５４，５４ａ，５４ｂ…受信可能範囲、１００…自律移動装置、２００…充電器
【図１】
2019159520.tif 000003
【図２】
2019159520.tif 000004
【図３】
2019159520.tif 000005
【図４】
2019159520.tif 000006
【図５】
2019159520.tif 000007
【図６】
2019159520.tif 000008
【図７】
2019159520.tif 000009
【図８】
2019159520.tif 000010
【図９】
2019159520.tif 000011
【図１０】
2019159520.tif 000012
【図１１】
2019159520.tif 000013