(57)【要約】【課題】自律移動装置の地図を作成する技術を改善する。【解決手段】自律移動装置１００は、障害検出部３０と、地図作成部１２と、障害消去部１３と、経路設定部１４と、を備える。障害検出部３０は、障害物を検出する。地図作成部１２は、障害検出部３０が検出した障害物の情報を環境地図に記録する。障害消去部１３は、地図作成部１２が記録した障害物の情報を前記環境地図から消去する。経路設定部１４は、環境地図に記録された情報に基づいて移動経路を設定する。【選択図】図１
2019012504.tif 000002
【特許請求の範囲】
【請求項１】
障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、
を備える自律移動装置。
【請求項２】
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部を含む、
請求項１に記載の自律移動装置。
【請求項３】
前記地図作成部は、前記障害物の情報を前記障害物の位置毎に前記環境地図に記録する、
請求項１又は２に記載の自律移動装置。
【請求項４】
前記障害消去部は、前記位置毎に、前記障害検出部が前記位置で前記障害物を検出した回数に応じて、前記障害物の情報を前記環境地図から消去する速度である消去速度を調整する、
請求項３に記載の自律移動装置。
【請求項５】
前記障害消去部は、前記障害検出部が前記障害物を検出したら、前記障害物を検出した位置における前記消去速度を基準障害調整値だけ遅くする、
請求項４に記載の自律移動装置。
【請求項６】
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部と、障害物を遠方から検出する遠方障害検出部と、を備え、
前記近接障害検出部が前記障害物を検出したときの前記基準障害調整値は、前記遠方障害検出部が前記障害物を検出したときの前記基準障害調整値よりも大きい、
請求項５に記載の自律移動装置。
【請求項７】
前記障害消去部は、前記障害検出部が前記障害物を検出しなかったら、前記障害物を検出しなかった位置における前記消去速度を基準非障害調整値だけ速くする、
請求項４から６のいずれか１項に記載の自律移動装置。
【請求項８】
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部と、障害物を遠方から検出する遠方障害検出部と、を備え、
前記近接障害検出部が前記障害物を検出しなかったときの前記基準非障害調整値は、前記遠方障害検出部が前記障害物を検出しなかったときの前記基準非障害調整値よりも大きい、
請求項７に記載の自律移動装置。
【請求項９】
前記障害検出部は、前記障害物に衝突したことを検出することによって、障害物を検出する衝突センサを含む、
請求項１から８のいずれか１項に記載の自律移動装置。
【請求項１０】
前記障害検出部は、落下する場所であるクリフを検出することによって、障害物を検出するクリフセンサを含む、
請求項１から９のいずれか１項に記載の自律移動装置。
【請求項１１】
前記障害物の位置を遠方から取得する障害位置取得部をさらに備え、
前記地図作成部は、前記障害位置取得部が取得した前記障害物の位置の情報を前記環境地図に記録する、
請求項１から１０のいずれか１項に記載の自律移動装置。
【請求項１２】
前記障害消去部は、前記障害検出部が検出した障害物の情報を前記環境地図から消去し、前記障害位置取得部が取得した位置に存在する障害物の情報を前記環境地図から消去しない、
請求項１１に記載の自律移動装置。
【請求項１３】
前記障害消去部は、前記障害位置取得部が取得した位置に存在する障害物の情報も前記環境地図から消去し、前記障害検出部が検出した障害物の情報を前記環境地図から消去する速度は、前記障害位置取得部が取得した位置に存在する障害物の情報を前記環境地図から消去する速度より速い、
請求項１１に記載の自律移動装置。
【請求項１４】
前記障害位置取得部は、前記障害物までの距離である測距データを取得する測域センサからの情報を用いて前記障害物の位置を取得する、
請求項１１から１３のいずれか１項に記載の自律移動装置。
【請求項１５】
前記障害位置取得部は、所定の方向毎に障害物の存否を確認し、障害物の存在を確認した場合には前記障害物までの距離である測距データを取得し、
前記地図作成部は、前記障害位置取得部が前記障害物の存否を確認した回数に対する前記測距データを取得した回数の割合を存在確率として前記環境地図に記録する、
請求項１１から１４のいずれか１項に記載の自律移動装置。
【請求項１６】
前記地図作成部は、前記障害物の位置に対応する前記環境地図上の位置における前記障害物の存在確率を算出し、前記存在確率を前記環境地図に記録する、
請求項１から１５のいずれか１項に記載の自律移動装置。
【請求項１７】
前記地図作成部は、前記存在確率を対数オッズにより前記環境地図に記録する、
請求項１５又は１６に記載の自律移動装置。
【請求項１８】
障害物を検出する障害検出ステップと、
前記障害検出ステップで検出した障害物の情報を環境地図に記録する地図作成ステップと、
前記地図作成ステップで記録した障害物の情報を減衰させることにより前記環境地図から消去する障害消去ステップと、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップと、
を含む自律移動方法。
【請求項１９】
コンピュータに、
障害物を検出する障害検出ステップ、
前記障害検出ステップで検出した障害物の情報を環境地図に記録する地図作成ステップ、
前記地図作成ステップで記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去ステップ、及び、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップ、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、地図を作成して自律移動する技術に関する。
【背景技術】
【０００２】
用途に応じて自律的に移動する自律移動装置が普及してきている。例えば、屋内の掃除のために自律的に移動する自律移動装置が知られている。このような自律移動装置は、測域センサ等を使って周囲に存在する物体（障害物）までの距離を検出し、周囲の環境のどこに障害物が存在するかを表す地図を作成することが多い。そして、障害物の中には移動するものも存在するため、移動する障害物に対応するための技術開発も行われている。例えば、特許文献１には、移動する障害物のゴースト（該障害物の過去の位置に残る、該障害物がまだそこに存在しているかのように見えるデータ）を地図から除去することにより、効率的な移動を行うことができる自律移動装置が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１０２４８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の自律移動装置は、センサで検出した障害物が移動しているか否かを判定し、移動しているなら、該障害物のゴーストを地図から除去することができる。しかし、センサで検出できない障害物のゴーストについては地図から除去することはできない。したがって、従来の自律移動装置では、地図を作成する技術に改善の余地がある。
【０００５】
本発明は、自律移動装置の地図を作成する技術を改善することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の自律移動装置は、
障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、
を備える。
【発明の効果】
【０００７】
本発明によれば、自律移動装置の地図を作成する技術を改善することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態１に係る自律移動装置の機能構成を示す図である。
【図２】実施形態１に係る自律移動装置の外観を示す図である。
【図３】（Ａ）測域センサでのスキャン例を示す図である。（Ｂ）測域センサで得られる測距データの例を示す図である。
【図４】実施形態１に係る自律移動装置のソフトウェアモジュールの全体構成を示す図である。
【図５】実施形態１に係る自律移動装置が解決する課題を説明する図である。
【図６】実施形態１に係る地図作成モジュールのフローチャートである。
【図７】実施形態１に係る測域センサ地図更新処理のフローチャートである。
【図８】実施形態１に係る衝突センサ地図更新処理のフローチャートである。
【図９】実施形態１に係る経路設定モジュールのフローチャートである。
【図１０】実施形態１に係る移動制御モジュールのフローチャートである。
【図１１】本発明の変形例１に係る測域センサ地図更新処理のフローチャートである。
【図１２】本発明の実施形態２に係る自律移動装置の機能構成を示す図である。
【図１３】実施形態２に係る自律移動装置の外観を示す図である。
【図１４】実施形態２に係る自律移動装置のソフトウェアモジュールの全体構成を示す図である。
【図１５】実施形態２に係る地図作成モジュールのフローチャートである。
【図１６】実施形態２に係るクリフセンサ地図更新処理のフローチャートである。
【図１７】本発明の実施形態３に係る自律移動装置の機能構成を示す図である。
【図１８】実施形態３に係る自律移動装置のソフトウェアモジュールの全体構成を示す図である。
【図１９】実施形態３に係る移動制御モジュールのフローチャートである。
【図２０】実施形態３に係る地図作成モジュールのフローチャートである。
【図２１】実施形態３に係る測域センサ地図更新処理のフローチャートである。
【図２２】実施形態３に係る衝突センサ地図更新処理のフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について、図表を参照して説明する。なお、図中同一又は相当部分には同一符号を付す。
【００１０】
（実施形態１）
本発明の実施形態に係る自律移動装置は、周囲の地図を作成しながら、用途に応じて自律的に移動する装置である。この用途とは、例えば、警備監視用、屋内掃除用、ペット用、玩具用等である。
【００１１】
図１に示すように、本発明の実施形態１に係る自律移動装置１００は、制御部１０、記憶部２０、障害検出部３０、撮像部４１、駆動部４２、測域センサ４３、通信部４４、を備える。
【００１２】
制御部１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等で構成され、記憶部２０に記憶されたプログラムを実行することにより、後述する各部（位置姿勢推定部１１、地図作成部１２、障害消去部１３、経路設定部１４、移動制御部１５）の機能を実現する。また、制御部１０は、タイマー（図示せず）を備え、経過時間をカウントすることができる。
【００１３】
記憶部２０は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ)、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等で構成され、機能的に、画像記憶部２１、特徴点記憶部２２、地図記憶部２３、更新量記憶部２４、衝突データ記憶部２５及び測距データ記憶部２６を含む。ＲＯＭには制御部１０のＣＰＵが実行するプログラムや、プログラムを実行する上で予め必要なデータが記憶されている。ＲＡＭには、プログラム実行中に作成されたり変更されたりするデータが記憶される。
【００１４】
画像記憶部２１には、撮像部４１が撮影した画像が記憶される。ただし、記憶容量を節約するために、撮影した全ての画像を記憶しなくても良い。自律移動装置１００は、画像記憶部２１に記憶された複数の画像を用いて、ＳＬＡＭ（Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｌｏｃａｌｉｚａｔｉｏｎ  Ａｎｄ  Ｍａｐｐｉｎｇ）処理により、自機位置（自己位置及び向き）の推定を行う。自機位置の推定に用いた画像については、その画像の情報と共に、その画像を撮影した時の自機位置の情報も記憶される。
【００１５】
特徴点記憶部２２には、画像記憶部２１に記憶された画像に含まれている特徴点のうち、実空間における３次元位置（Ｘ，Ｙ，Ｚ）が求められた特徴点について、その３次元位置とその特徴点の特徴量とが紐付けられて記憶される。特徴点とは画像中のコーナー部分等、画像内の特徴的な部分のことであり、ＳＩＦＴ（Ｓｃａｌｅ−Ｉｎｖａｒｉａｎｔ  Ｆｅａｔｕｒｅ  Ｔｒａｎｓｆｏｒｍ）やＳＵＲＦ（Ｓｐｅｅｄｅｄ  Ｕｐ  Ｒｏｂｕｓｔ  Ｆｅａｔｕｒｅｓ）等のアルゴリズムを用いて取得することができる。また、特徴点の特徴量は、例えばＳＩＦＴ等で得られる特徴量である。上述のＳＬＡＭ処理では、特徴点記憶部２２に記憶されている特徴点の３次元位置に基づいて自己位置の推定を行うため、特徴点記憶部２２は、ＳＬＡＭ用の地図の情報を記憶していると考えることもできる。
【００１６】
地図記憶部２３には、障害検出部３０からの情報に基づいて地図作成部１２が作成した環境地図（後述する衝突センサ地図）と、測域センサ４３からの情報に基づいて地図作成部１２が作成した環境地図（後述する測域センサ地図）と、が記憶される。環境地図は、床面を例えば５ｃｍ×５ｃｍの格子（グリッド）に分割し、各格子点に対応する位置（格子点を中心とする、該格子と同一の形状の領域）における障害物の存在確率を、該格子点の値として表した占有格子地図である。なお、「各格子点に対応する位置」の代わりに、「各格子に対応する位置（格子の領域）」を用いても良い。なお、占有格子地図の各格子点の値は、その場所に障害物が存在する可能性が高いほど大きな値になり、障害物が存在しない可能性が高いほど小さな値になるので、便宜上「存在確率」と呼んでいるだけで、厳密な存在確率である必要はない。占有格子地図の各格子点の値として記録する存在確率の数値としては、存在確率Ｐ（０から１までの範囲の実数）の値そのものでも良いが、本実施形態においては対数オッズＬ（整数）を用いる。ＰとＬとの関係はｋを正の定数とすると、以下の式（１）で表すことができる。
Ｐ＝１−１／（１＋ｅｘｐ（ｋＬ））・・・（１）
【００１７】
式（１）から分かるように、Ｐ＝０．５の時にＬ＝０、Ｐ＝０の時にＬ＝−∞、Ｐ＝１の時にＬ＝∞となり、対数オッズを用いることによって、確率を整数値で扱うことができる。そして、各格子点の値Ｌを基準値と比較した時の大小によって、その格子点に対応する位置における障害物の存否を表すことができる。なお、本実施形態においては、Ｌの値として、最小値（Ｌｍｉｎ）を−１２７、最大値（Ｌｍａｘ）を１２７とし、占有格子地図の各格子点の値の初期値はＬ＝０とすることとする。そして、例えばＬが存在基準値（例えば１０）より大きければその格子点に障害物が存在し、Ｌが不存在基準値（例えば−１０）未満ならその格子点には障害物は存在せず、Ｌが不存在基準値以上、存在基準値未満ならその格子点における障害物の存否は不明として扱うこととする。もっともこれらの値は任意に変更可能である。
【００１８】
更新量記憶部２４には、地図記憶部２３に記憶されている各地図用の更新量（各格子点の値を更新する量）が記憶される。測域センサ地図用の更新量としては、全ての格子点に共通な値Δｒ（例えば５）が記憶されている。また、衝突センサ地図用の更新量としては、衝突センサ地図の格子点毎に、その格子点の値の更新量Δｃ（例えば初期値として１０）が記憶されている。更新量Δｃは、衝突センサ地図から、障害物の情報を消去する速度（消去速度）と考えることができる。
【００１９】
衝突データ記憶部２５には、後述する衝突センサ３１が衝突を検出した時の自律移動装置１００の自己位置及び向きと、該衝突を検出した衝突センサ３１の自律移動装置１００における位置と、に基づいて得られる、衝突した物体（障害物）の位置を示すデータ（衝突データ）が記憶される。
【００２０】
測距データ記憶部２６には、測域センサ４３が検出した物体までの距離を示す測距データが、該物体が検出された角度の情報とともに記憶される。
【００２１】
障害検出部３０は、自律移動装置１００が障害物に近接することによって当該障害物を検出するセンサを備える。なお、障害物とは、自律移動装置１００が移動できない場所を総称するものであり、壁、物体、穴、崖等を含む。実施形態１においては、障害検出部３０は、障害物に衝突したことを検出することによって該障害物を検出する衝突センサ３１を備える。衝突センサ３１の個数は任意であるが、図２に示すように、自律移動装置１００は、衝突センサ３１として、自律移動装置１００の真正面の衝突センサ３１ｂと、正面より少し右寄りの衝突センサ３１ａと、正面より少し左寄りの衝突センサ３１ｃを備える。物体がこれらの衝突センサ３１に衝突すると、衝突された衝突センサ３１は衝突を検出したことを制御部１０に通知する。すると制御部１０は、その時点における自律移動装置１００の自己位置及び向きと、衝突検出を通知した衝突センサ３１の自律移動装置１００における位置と、に基づき、衝突した物体の位置を示す衝突データを衝突データ記憶部２５に登録する。
【００２２】
撮像部４１は、図２に示すように、単眼の撮像装置（カメラ）を備える。撮像部４１は、例えば、３０ｆｐｓ（ｆｒａｍｅｓ  ｐｅｒ  ｓｅｃｏｎｄ）で画像（フレーム）を取得する。自律移動装置１００は、撮像部４１が逐次取得した画像に基づいて、ＳＬＡＭ処理により、自己位置と周囲環境とをリアルタイムに認識しながら、自律移動を行う。
【００２３】
駆動部４２は、独立２輪駆動型であって、車輪とモータとを備える移動手段である。図２では、右の車輪を駆動部４２ａ、左の車輪を駆動部４２ｂとして示している。自律移動装置１００は、２つの車輪の同一方向駆動により前後の平行移動（並進移動）を、２つの車輪の逆方向駆動によりその場での回転（向き変更）を、２つの車輪のそれぞれ速度を変えた駆動により旋回移動（並進＋回転（向き変更）移動）を、行うことができる。また、各々の車輪にはロータリエンコーダが備えられており、ロータリエンコーダで車輪の回転数を計測し、車輪の直径や車輪間の距離等の幾何学的関係を利用することで並進移動量及び回転量を計算できる。
【００２４】
例えば、車輪の直径をＤ、回転数をＲ（ロータリエンコーダにより測定）とすると、その車輪の接地部分での並進移動量はπ・Ｄ・Ｒとなる。また、車輪の直径をＤ、車輪間の距離をＩ、右車輪の回転数をＲＲ、左車輪の回転数をＲＬとすると、向き変更の回転量は（右回転を正とすると）３６０°×Ｄ×（ＲＬ−ＲＲ）／（２×Ｉ）となる。この並進移動量や回転量を逐次足し合わせていくことで、駆動部４２は、いわゆるオドメトリとして機能し、自機の位置（移動開始時の自己位置及び向きを基準とした自己位置及び向き）を推定するのに用いることができる。ここでは、自機の「向き」のことを自機の「姿勢」とも言うこととする。
【００２５】
なお、車輪の代わりにクローラを備えるようにしても良いし、複数（例えば二本）の足を備えて足で歩行することによって移動を行うようにしても良い。これらの場合も、二つのクローラの動きや、足の動きに基づいて、車輪の場合と同様に自己位置や向き（姿勢）の推定が可能である。
【００２６】
測域センサ４３は、周囲に存在する物体（障害物）を検出し、該物体までの距離（測距データ）を取得する。測域センサ４３は、例えば、図２に示すように自律移動装置１００の上部に備えられた２次元レーザースキャナにより構成され、近接していない物体でも遠方から検出し、該物体までの距離を取得することができる。測域センサ４３は、図３に示すように、所定の角度範囲（例えば−３０度から＋３０度までの範囲）でレーザー光によるスキャニングをすることにより、周囲の当該角度範囲に存在する物体までの距離（測距データ）を所定の角度（例えば１度）毎に取得することができる。その方向に物体が無ければ、その角度に対する測距データは無しとなる。例えば、測域センサ４３が図３（Ａ）に示すスキャンをすると、図３（Ｂ）に示す測距データを取得できる。測域センサ４３は、定期的に（例えば１秒間に３０回の頻度で）、周囲を観測（スキャン）し、物体を検出すると、該物体までの距離を示す測距データと該物体が検出された角度の情報とを制御部１０に送信する。すると、制御部１０は、これらの情報（物体までの距離及び該物体が検出された角度）を測距データ記憶部２６に登録する。
【００２７】
通信部４４は、外部装置と通信するためのモジュールであり、外部装置と無線通信する場合にはアンテナを含む無線モジュールである。例えば、通信部４４は、Ｂｌｕｅｔｏｏｔｈ（登録商標）に基づく近距離無線通信を行うための無線モジュールである。通信部４４を用いることにより、自律移動装置１００は、外部とデータの受け渡し等を行うことができる。例えば、ユーザが自律移動装置１００に目的地を指示する際には、この通信部４４を介して目的地の情報を伝えても良い。
【００２８】
次に、制御部１０の機能について説明する。制御部１０は、位置姿勢推定部１１、地図作成部１２、障害消去部１３、経路設定部１４及び移動制御部１５を含み、環境地図の作成や自律移動装置１００の移動制御等を行う。また、制御部１０は、マルチスレッド機能に対応しており、複数のスレッド（異なる処理の流れ）を並行して実行することができる。
【００２９】
位置姿勢推定部１１は、撮像部４１が撮影し画像記憶部２１に記憶された画像を複数用いて、ＳＬＡＭ処理により自律移動装置１００の自己位置及び姿勢を推定する。また、この自己位置及び姿勢の推定の際には、位置姿勢推定部１１は、駆動部４２から取得可能なオドメトリの情報も用いることができる。
【００３０】
地図作成部１２は、衝突センサ３１や、測域センサ４３からの情報を用いて障害物（物体）の位置を記録した環境地図を作成し、地図記憶部２３に記憶する。この環境地図は、上述したように平面を格子点に分割し、各格子点に衝突センサ３１や測域センサ４３で検出された物体（障害物）の存在確率を示す数値を記録した占有格子地図である。地図作成部１２は、障害物を検出するセンサ毎に別個の占有格子地図を作成する。したがって、これらの各地図を区別するために、地図作成部１２が衝突センサ３１からの情報に基づいて作成する占有格子地図を衝突センサ地図と呼び、地図作成部１２が測域センサ４３からの情報に基づいて作成する占有格子地図を測域センサ地図と呼ぶ。
【００３１】
例えば、地図作成部１２は、衝突センサ３１からの情報に基づき、衝突した位置に対応する格子点における障害物の存在を衝突センサ地図に記録する。また、地図作成部１２は、測域センサ４３からの情報に基づき、測域センサ４３が検出した各格子点における障害物の存在を測域センサ地図に記録する。
【００３２】
障害消去部１３は、地図作成部１２が環境地図（衝突センサ地図）に記録した障害物の情報を、時間経過に応じて環境地図（衝突センサ地図）から消去する。この消去は後述する衝突センサ地図更新処理で行われるが、詳細は後述する。
【００３３】
経路設定部１４は、地図記憶部２３に記憶されている環境地図の情報に基づいて、目的地までの移動経路を設定する。
【００３４】
移動制御部１５は、経路設定部１４が設定した移動経路に沿って自機を移動させるように、駆動部４２を制御する。
【００３５】
以上、自律移動装置１００の機能構成について説明した。次に、自律移動装置１００の制御部１０が実行するソフトウェアモジュールの全体構成について、図４を参照して説明する。図４中、位置姿勢推定モジュール５１は上記機能構成で説明した位置姿勢推定部１１に対応し、地図作成モジュール５２は地図作成部１２に対応し、経路設定モジュール５３は経路設定部１４に対応し、移動制御モジュール５４は移動制御部１５に対応する。
【００３６】
これらのソフトウェアモジュールは、自律移動装置１００の電源が入ると、それぞれ別スレッドとして起動し、並行して実行が開始される。位置姿勢推定モジュール５１は、撮像部４１から取得する画像情報を用いてＳＬＡＭ処理を行い、駆動部４２から取得するオドメトリ情報も用いて、自己位置及び姿勢を推定する。地図作成モジュール５２は、位置姿勢推定モジュール５１が推定した自己位置及び姿勢と、衝突センサ３１から得られる衝突データと、測域センサ４３から得られる測距データと、に基づき、環境地図を作成する。
【００３７】
経路設定モジュール５３は、位置姿勢推定モジュール５１が推定した自己位置及び姿勢と、地図作成モジュール５２が作成した環境地図と、に基づき、経路を設定する。移動制御モジュール５４は、位置姿勢推定モジュール５１が推定した自己位置及び姿勢と、地図作成モジュール５２が作成した環境地図と、経路設定モジュール５３が設定した経路と、に基づき、駆動部４２を制御する移動制御情報（主に速度情報）を生成する。そして、駆動部４２は、移動制御モジュール５４が生成した移動制御情報に基づいて駆動され、目的地への移動が行われる。
【００３８】
ここで、自律移動装置１００が解決する課題について、図５を参照して説明する。自律移動装置１００は、図５の（１）に示すように、障害物７０が小さいと、測域センサ４３で障害物７０を検出することができず、環境地図には障害物７０が記録されない。そして、自律移動装置１００が前進して、図５の（２）に示すように、障害物７０に衝突すると、衝突センサ３１により障害物７０が検出され、衝突センサ３１による環境地図（衝突センサ地図）に障害物７０が記録される。そして、その後、自律移動装置１００が障害物７０を避けて移動し続けると、障害物７０が除去されていたとしても、自律移動装置１００はそのことを検出することができず、図５の（３）に示すように、環境地図（衝突センサ地図）にいつまでも障害物７０が残ることになる。
【００３９】
では、自律移動装置１００が、図５の（３）における障害物７０を、環境地図（衝突センサ地図）から消去する仕組みについて、以下に説明する。まず、地図作成モジュール５２の処理内容について、図６を参照して説明する。なお、以下では、測域センサ地図を２次元配列変数ＭＡ［ｉ，ｊ］、衝突センサ地図を２次元配列変数ＭＢ［ｉ，ｊ］、測域センサ地図と衝突センサ地図とを統合した環境地図を２次元配列変数ＭＩ［ｉ，ｊ］、衝突センサ地図用の更新量を２次元配列変数ＤＣ［ｉ，ｊ］で、それぞれ表すものとする。ここで、ｘｓｉｚｅを環境地図のＸ方向の最大の格子点の座標、ｙｓｉｚｅを環境地図のＹ方向の最大の格子点の座標とすると、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅである。
【００４０】
まず、地図作成部１２は、地図記憶部２３に記憶されている測域センサ地図を初期化する（ステップＳ１０１）。地図の初期化は、占有格子地図の全ての格子点の値を０にすることにより行われる。具体的には、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅの全てのｉ及びｊについて、ＭＡ［ｉ，ｊ］＝０を実行する。
【００４１】
次に、地図作成部１２は、地図記憶部２３に記憶されている衝突センサ地図を初期化する（ステップＳ１０２）。具体的には、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅの全てのｉ及びｊについて、ＭＢ［ｉ，ｊ］＝０を実行する。
【００４２】
次に、障害消去部１３は、更新量記憶部２４に記憶されている衝突センサ地図用の更新量Δｃを初期化する（ステップＳ１０３）。この時の初期値は任意であるが例えば１０とする。具体的な処理としては、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅの全てのｉ及びｊについて、ＤＣ［ｉ，ｊ］＝１０を実行する。
【００４３】
次に制御部１０は、自律移動装置１００が動作を終了するか否かを判定する（ステップＳ１０４）。ユーザが自律移動装置１００の電源を落とした場合や、バッテリーの残量が所定量（例えば残り３％等）を下回った場合等に、自律移動装置１００は動作を終了する。自律移動装置１００が動作を終了するなら（ステップＳ１０４；Ｙｅｓ）、処理を終了する。動作を終了しないなら（ステップＳ１０４；Ｎｏ）、地図作成部１２は、位置姿勢推定部１１がその時点で推定している自己位置及び姿勢を取得する（ステップＳ１０５）。
【００４４】
次に地図作成部１２は、測域センサ地図更新処理を行う（ステップＳ１０６）。測域センサ地図更新処理の詳細については、後述する。次に地図作成部１２は、衝突センサ地図更新処理を行う（ステップＳ１０７）。衝突センサ地図更新処理の詳細については、後述する。次に、地図作成部１２は、測域センサ地図と衝突センサ地図とを統合した環境地図を作成し（ステップＳ１０８）、ステップＳ１０４に戻る。
【００４５】
測域センサ地図と衝突センサ地図とを統合した環境地図は、測域センサ地図と衝突センサ地図のどちらか一方にしか記録されていない情報でも自律移動装置１００が認識できるようにするための地図である。具体的には、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅの全てのｉ及びｊについて、以下の処理を行う。
（１）もし、ＭＡ［ｉ，ｊ］＜０かつＭＢ［ｉ，ｊ］＜０ならＭＩ［ｉ，ｊ］＝ｍｉｎ（ＭＡ［ｉ，ｊ］，ＭＢ［ｉ，ｊ］）
（２）もし、ＭＡ［ｉ，ｊ］≧０又はＭＢ［ｉ，ｊ］≧０ならＭＩ［ｉ，ｊ］＝ｍａｘ（ＭＡ［ｉ，ｊ］，ＭＢ［ｉ，ｊ］）
【００４６】
次に、図６のステップＳ１０６で行われる測域センサ地図更新処理について、図７を参照して説明する。まず、地図作成部１２は、測距データ記憶部２６に新たに登録された測距データが存在するか否かを判定する（ステップＳ２０１）。測距データ記憶部２６に新たに登録された測距データが存在しないなら（ステップＳ２０１；Ｎｏ）、測域センサ地図更新処理を終了する。
【００４７】
測距データ記憶部２６に新たに登録された測距データが存在するなら（ステップＳ２０１；Ｙｅｓ）、地図作成部１２は、測距データ記憶部２６から該測距データを取得し、図６のステップＳ１０５で取得した自己位置及び姿勢を用いて、該測距データを測域センサ地図における座標に変換する（ステップＳ２０２）。この座標は、測域センサ地図上において、測域センサ４３によって障害物が検出された格子点（領域）を示しており、このステップにおいて、地図作成部１２は、障害物の位置を遠方から取得する障害位置取得部として機能する。ここでは、例えば、測域センサ地図における［ｍ，ｎ］の座標に障害物が検出されたこととする。
【００４８】
そして、地図作成部１２は、障害物が検出された格子点の値に更新量Δｒを加算する（ステップＳ２０３）。具体的には、ＭＡ［ｍ，ｎ］＝ＭＡ［ｍ，ｎ］＋Δｒを実行する。ただし、この時、ＭＡ［ｍ，ｎ］が最大値Ｌｍａｘを超える場合には、ＭＡ［ｍ，ｎ］＝Ｌｍａｘとする。
【００４９】
次に、地図作成部１２は、測域センサ４３の観測（スキャン）範囲内で障害物が検出されなかった格子点の値から更新量Δｒを減算する（ステップＳ２０４）。具体的には、障害物が検出された方向については［ｍ，ｎ］の手前の全ての［ｉ，ｊ］、障害物が検出されなかった方向については測域センサ４３の観測範囲内の全ての［ｉ，ｊ］に対して、ＭＡ［ｉ，ｊ］＝ＭＡ［ｉ，ｊ］−Δｒを実行する。ただし、この時、ＭＡ［ｉ，ｊ］が最小値Ｌｍｉｎを下回る場合には、ＭＡ［ｉ，ｊ］＝Ｌｍｉｎとする。
【００５０】
そして、地図作成部１２は、測距データ記憶部２６から、ステップＳ２０２で取得した測距データを削除し（ステップＳ２０５）、ステップＳ２０１に戻る。以上の測域センサ地図更新処理によって、測域センサ地図は更新され、測域センサ地図の各格子点の値により、障害物の存在確率が表されることになる。
【００５１】
なお、測域センサ地図における各格子点の値として、対数オッズＬの代わりに、観測回数（該格子点を測域センサ４３で観測（スキャン）した回数）と検出回数（該格子点の位置に障害物が存在することを測域センサ４３が検出した回数）のペアを記録し、各格子点における障害物の存在確率を、観測回数に対する検出回数の割合として定義しても良い。
【００５２】
次に、図６のステップＳ１０７で行われる衝突センサ地図更新処理について、図８を参照して説明する。まず、障害消去部１３は、衝突センサ地図の各格子点の値を減衰させる（ステップＳ３０１）。ステップＳ３０１は障害消去ステップとも呼ばれる。このステップでは、具体的には、障害消去部１３は、全てのｉ及びｊに対して、以下の処理を行う。
（１）もしＭＢ［ｉ，ｊ］＞０ならＭＢ［ｉ，ｊ］＝ＭＢ［ｉ，ｊ］−ＤＣ［ｉ，ｊ］
（２）もしＭＢ［ｉ，ｊ］＜０ならＭＢ［ｉ，ｊ］＝ＭＢ［ｉ，ｊ］＋ＤＣ［ｉ，ｊ］
【００５３】
そして、地図作成部１２は、図６のステップＳ１０５で取得した自己位置に対応する衝突センサ地図の格子点の値を最小値Ｌｍｉｎに設定する（ステップＳ３０２）。具体的には、自己位置の座標を［ｐ，ｑ］とすると、ＭＢ［ｐ，ｑ］＝Ｌｍｉｎを実行する。そして、障害消去部１３は、自己位置に対応する衝突センサ地図の格子点の値の更新量Δｃを基準非障害調整値（例えば５）だけ増加させる（ステップＳ３０３）。具体的には、自己位置の座標を［ｐ，ｑ］とすると、ＤＣ［ｐ，ｑ］＝ＤＣ［ｐ，ｑ］＋５を実行する。なお、もしここで、ＤＣ［ｐ，ｑ］がＬｍａｘを超えるようなら、ＤＣ［ｐ，ｑ］＝Ｌｍａｘとする。
【００５４】
次に、地図作成部１２は、衝突データ記憶部２５に新たに登録された衝突データが存在するか否かを判定する（ステップＳ３０４）。ステップＳ３０４は、障害検出ステップとも呼ばれる。衝突データ記憶部２５に新たに登録された衝突データが存在しないなら（ステップＳ３０４；Ｎｏ）、衝突センサ地図更新処理を終了する。
【００５５】
衝突データ記憶部２５に新たに登録された衝突データが存在するなら（ステップＳ３０４；Ｙｅｓ）、地図作成部１２は、衝突データ記憶部２５から該衝突データ（衝突した障害物の存在する位置を示す座標）を取得して、衝突した障害物の存在する衝突センサ地図の格子点の値を最大値Ｌｍａｘに設定する（ステップＳ３０５）。具体的には、衝突した障害物の座標を［ｖ，ｗ］とすると、ＭＢ［ｖ，ｗ］＝Ｌｍａｘを実行する。ステップＳ３０５は地図作成ステップとも呼ばれる。そして、障害消去部１３は、衝突した障害物の存在する格子点の値の更新量Δｃを基準障害調整値（例えば５）だけ減少させる（ステップＳ３０６）。具体的には、衝突した障害物の座標を［ｖ，ｗ］とすると、ＤＣ［ｖ，ｗ］＝ＤＣ［ｖ，ｗ］−５を実行する。なお、もしここで、ＤＣ［ｐ，ｑ］が０以下になるようなら、ＤＣ［ｖ，ｗ］＝１とする。
【００５６】
そして、地図作成部１２は、衝突データ記憶部２５から、ステップＳ３０５で取得した衝突データを削除し（ステップＳ３０７）、ステップＳ３０４に戻る。以上の衝突センサ地図更新処理によって、衝突センサ地図は更新され、ステップＳ３０１の減衰処理によって、障害物のゴーストが残るのを防ぐ。また、格子点の値の更新量Δｃの値自体も増減されることによって、障害物が存在する可能性の高い格子点では減衰速度を遅くし、障害物が存在する可能性の低い格子点では減衰速度を速くしている。これによって、移動しない障害物に再度衝突してしまう頻度を下げるとともに、移動する障害物に対しての追随速度を速める効果を得ている。
【００５７】
次に、地図作成モジュール５２で作成された地図を用いて目的地までの経路を設定する経路設定モジュール５３の処理内容について、図９を参照して説明する。
【００５８】
まず、制御部１０は、自律移動装置１００が動作を終了するか否かを判定する（ステップＳ４０１）。動作を終了するなら（ステップ４０１；Ｙｅｓ）、処理を終了する。動作を終了しないなら（ステップＳ４０１；Ｎｏ）、経路設定部１４は、目的地が設定されたか否かを判定する（ステップＳ４０２）。目的地は、自律移動装置１００のユーザが通信部４４を介して設定することもあるし、自律移動装置１００が必要に応じて（例えば、バッテリー残量が所定量（例えば１０％）を下回った場合に、充電ステーションを目的地に設定する等）自律的に設定することもある。
【００５９】
目的地が設定されていないなら（ステップＳ４０２；Ｎｏ）、ステップＳ４０１に戻る。目的地が設定されているなら（ステップＳ４０２；Ｙｅｓ）、経路設定部１４は、地図作成部１２が作成した、その時点で最新の環境地図を取得する（ステップＳ４０３）。この環境地図は、測域センサ地図と衝突センサ地図とを統合した環境地図（２次元配列変数ＭＩ［ｉ，ｊ］で表される地図）である。次に、経路設定部１４は、位置姿勢推定部１１が推定した現在の自己位置及び姿勢を取得する（ステップＳ４０４）。そして、経路設定部１４は、取得した環境地図並びに自己位置及び姿勢と設定された目的地とに基づき、現在位置から目的地までの経路を設定する（ステップＳ４０５）。ステップＳ４０５は、経路設定ステップとも呼ばれる。
【００６０】
そして、経路設定部１４は、経路が設定できたか否か（経路が存在するか否か）を判定する（ステップＳ４０６）。経路が存在しないなら（ステップＳ４０６；Ｎｏ）、ユーザにその旨を通知する等のエラー処理を行い（ステップＳ４０８）、ステップＳ４０１に戻る。経路が存在するなら（ステップＳ４０６；Ｙｅｓ）、経路設定部１４は、設定した経路を移動制御モジュール５４に通知し（ステップＳ４０７）、ステップＳ４０１に戻る。
【００６１】
以上の経路設定モジュール５３の処理により、目的地までの経路が得られる。次に、この経路を用いて目的地まで移動制御を行う移動制御モジュール５４の処理内容について、図１０を参照して説明する。
【００６２】
まず、制御部１０は、自律移動装置１００が動作を終了するか否かを判定する（ステップＳ５０１）。動作を終了するなら（ステップＳ５０１；Ｙｅｓ）、処理を終了する。動作を終了しないなら（ステップＳ５０１；Ｎｏ）、移動制御部１５は、経路設定モジュール５３により経路が設定されたか否か（経路設定モジュール５３が設定した経路が通知されたか否か）を判定する（ステップＳ５０２）。経路が通知されていないなら（ステップＳ５０２；Ｎｏ）、経路がまだ設定されていないということなので、ステップＳ５０１に戻る。
【００６３】
経路が通知されたなら（ステップＳ５０２；Ｙｅｓ）、経路が設定されたということなので、移動制御部１５は、経路設定モジュール５３が設定したその経路を取得する（ステップＳ５０３）。次に、移動制御部１５は、位置姿勢推定部１１が推定した現在の自己位置及び姿勢を取得する（ステップＳ５０４）。そして、移動制御部１５は、自機が目的地に到着したか否かを判定する（ステップＳ５０５）。なお、経路の情報には、目的地の情報も含まれるため、移動制御部１５は、現在の位置が経路に含まれる目的地と一致するか否かを判定することにより、目的地に到着したか否かを判定することができる。
【００６４】
目的地に到着したなら（ステップＳ５０５；Ｙｅｓ）、ステップＳ５０１に戻る。目的地に到着していないなら（ステップＳ５０５；Ｎｏ）、移動制御部１５は、地図作成部１２が作成した、その時点で最新の環境地図を取得する（ステップＳ５０６）。この環境地図は、測域センサ地図と衝突センサ地図とを統合した環境地図（２次元配列変数ＭＩ［ｉ，ｊ］で表される地図）である。そして、移動制御部１５は、取得した環境地図及び経路に基づき、経路に沿って移動可能か否かを判定する（ステップＳ５０７）。
【００６５】
経路に沿って移動が可能でないなら（ステップＳ５０７；Ｎｏ）、移動制御部１５は、駆動部４２を制御して移動を停止させ（ステップＳ５０９）、経路設定モジュール５３にエラーを通知し（ステップＳ５１０）、ステップＳ５０１に戻る。経路に沿って移動可能なら（ステップＳ５０７；Ｙｅｓ）、経路に沿って移動するように駆動部４２を制御し（ステップＳ５０８）、ステップＳ５０４に戻る。
【００６６】
以上の移動制御モジュール５４の処理により、自律移動装置１００は、目的地まで移動することができる。そして、以上説明したように、障害消去部１３は、衝突センサ地図における障害物の存在確率を時間経過に応じて低下させる。また、障害消去部１３は、この存在確率を低下させる速度を衝突センサ地図の格子点毎に異なる値に設定可能にしているので、物体の性質に応じてその存在確率を効率的に低下させることができる。このため、過去に障害物に衝突した場所でも、ある程度時間が経過した後は、経路設定モジュール５３は、その場所を回避しない経路を設定することができ、自律移動装置１００は、本来必要のない障害物回避動作をすることを防ぐことができ、効率的に移動できるようになる。
【００６７】
（変形例１）
実施形態１に係る衝突センサ地図の各格子点の値の更新量の増減は、自律移動装置１００の移動経路上の位置及び衝突した位置にそれぞれ対応する格子点についてしか行うことができない。測域センサ更新処理でもこの更新量の増減を行うことによって、更新量の調整頻度を向上させることができる変形例１について説明する。
【００６８】
変形例１は、実施形態１と比較すると、図７を参照して説明した測域センサ地図更新処理のみが異なる。そこで、変形例１に係る測域センサ地図更新処理について、図１１を参照して説明する。また、図１１中、ステップＳ２０１からステップＳ２０５までの処理は、図７と同じであるため、説明を省略する。
【００６９】
変形例１に係る測域センサ地図更新処理では、ステップＳ２０４の後で、障害消去部１３は、測域センサ４３で検出された障害物の位置に対応する衝突センサ地図の格子点の値の更新量Δｃの値を基準障害調整値（例えば５）だけ減少させる（ステップＳ２１１）。具体的には、測域センサ４３で検出された障害物の座標を［ｍ，ｎ］とすると、ＤＣ［ｍ，ｎ］＝ＤＣ［ｍ，ｎ］−５を実行する。ただし、この時、ＤＣ［ｍ，ｎ］が０以下になるようなら、ＤＣ［ｍ，ｎ］＝０とする。この場合、［ｍ，ｎ］の場所は壁のように動かない障害物である可能性が高いことと、測域センサ４３で検出可能な障害物は、その存否を頻繁に確認できるため、該障害物が移動したり除去されたりしたら、（該障害物に衝突しなくても）すぐにΔｃに反映できるためである。
【００７０】
次に、障害消去部１３は、測域センサ４３の観測（スキャン）範囲内で障害物が検出されなかった位置に対応する衝突センサ地図の格子点の値の更新量Δｃの値を基準非障害調整値（例えば５）だけ増加させる（ステップＳ２１２）。具体的には、測域センサ４３で検出された障害物の座標を［ｍ，ｎ］とすると、該障害物が検出された方向については［ｍ，ｎ］の手前の全ての［ｉ，ｊ］、該障害物が検出されなかった方向については測域センサ４３の観測範囲内の全ての［ｉ，ｊ］に対して、ＤＣ［ｉ，ｊ］＝ＤＣ［ｉ，ｊ］＋５を実行する。ただし、この時、ＤＣ［ｉ，ｊ］がＬｍａｘを超えるようなら、ＤＣ［ｉ，ｊ］＝Ｌｍａｘとする。
【００７１】
そして、ステップＳ２０５に進む。これ以降は、実施形態１に係る測域センサ地図更新処理と同じである。以上説明した変形例１では、衝突センサ地図の格子点の値の更新量Δｃを、測域センサ４３による障害物の検出状況を用いて増減させることができる。このため、衝突センサ地図の更新時に、移動しない障害物は衝突センサ地図から消去されなくなり、移動する障害物は衝突センサ地図から消去される速度をより一層早めることができる。したがって、変形例１に係る自律移動装置１００は、障害物の移動を短時間で環境地図に反映させることができるので、より効率的に移動できるようになる。
【００７２】
（変形例２）
変形例１のステップＳ２１１の処理において、障害消去部１３は、測域センサ４３で検出された障害物の位置に対応する衝突センサ地図の格子点の値の更新量Δｃの値を初期値（例えば１０）にリセットしても良い。具体的には、測域センサ４３で検出された障害物の座標を［ｍ，ｎ］とすると、ＤＣ［ｍ，ｎ］＝１０を実行する。今まで障害物の無かった場所に急に障害物が出現すると、その場所に対応する更新量Δｃの値が非常に大きくなっている場合がある。その場合、衝突センサ地図更新処理によって、衝突センサ地図の減衰が行われると、衝突センサ地図からすぐにその障害物の情報が消去されてしまうおそれがある。しかし、上記のようにステップＳ２１１の処理で更新量Δｃの値を初期値にすれば、この問題はなくなる。したがって、変形例２に係る自律移動装置１００は、急に出現した障害物に対しても、回避する経路を設定できるため、より効率的に移動できるようになる。
【００７３】
（変形例３）
さらに、上記変形例１と変形例２の処理を組み合わせることもできる。例えば、Δｃをリセットするか否かを判定するリセット基準値（例えば１００）を設定しておく。そして、ステップＳ２１１において、障害消去部１３は、測域センサ４３で検出された障害物の位置に対応する衝突センサ地図の格子点の値の更新量Δｃの値が、リセット基準値を超えていたら初期値（例えば１０）にリセットし、リセット基準値以下なら基準障害調整値だけ減少させる処理を行っても良い。このようにすると、変形例３に係る自律移動装置１００は、障害物の移動や急な出現に対しても適切に環境地図に反映させることができるので、より効率的に移動できるようになる。
【００７４】
（実施形態２）
障害物に近接することによって当該障害物を検出するセンサとしては、衝突センサだけでなく、クリフセンサも挙げることができる。クリフセンサとは、周囲に床面が存在するか否かを検出することによって、床面が存在しない場所であるクリフ（穴、崖等）を検出するセンサである。自律移動装置は、クリフセンサを備えることで、例えばテーブル等の台の上から落下することを防止することができる。自律移動装置がクリフセンサを備えた実施形態２について説明する。
【００７５】
実施形態２に係る自律移動装置１０１は、図１２に示すように、実施形態１に係る自律移動装置１００の記憶部２０にクリフデータ記憶部２７が追加され、障害検出部３０にクリフセンサ３２が追加された構成である。また、地図記憶部２３には、クリフセンサ３２からのデータを用いて作成したクリフセンサ地図も記憶され、更新量記憶部２４には、クリフセンサ地図の各格子点の値の更新量Δｇも記憶される。更新量Δｇは、クリフセンサ地図から、クリフの情報を消去する速度（消去速度）と考えることができる。なお、以下では、クリフセンサ地図を２次元配列変数ＭＣ［ｉ，ｊ］、測域センサ地図と衝突センサ地図とクリフセンサ地図とを統合した環境地図を２次元配列変数ＭＩ［ｉ，ｊ］、クリフセンサ地図用の更新量を２次元配列変数ＤＧ［ｉ，ｊ］で、それぞれ表すものとする。
【００７６】
クリフデータ記憶部２７には、クリフセンサ３２がクリフを検出した時の自律移動装置１０１の自己位置及び向きと、該クリフを検出したクリフセンサ３２の自律移動装置１０１における位置と、に基づいて得られる、クリフ（穴、崖等）の位置を示すデータ（クリフデータ）が記憶される。
【００７７】
クリフセンサ３２は、周囲に床面が存在するか否かを検出することによって、床面が存在しない場所であるクリフ（穴、崖等）を検出するセンサである。クリフセンサ３２の個数は任意であるが、図１３に示すように、自律移動装置１０１は、クリフセンサ３２を自律移動装置の真正面の位置に１つ備える。クリフセンサ３２がクリフを検出すると、クリフセンサ３２はクリフを検出したことを制御部１０に通知する。すると制御部１０は、その時点における自律移動装置１０１の自己位置及び向きと、クリフを検出したクリフセンサ３２の自律移動装置１０１における位置と、に基づき、クリフの位置を示すクリフデータをクリフデータ記憶部２７に登録する。
【００７８】
自律移動装置１０１の制御部１０が実行するソフトウェアモジュールの全体構成は、図１４に示すように、図４を参照して説明した自律移動装置１００のソフトウェアモジュールの全体構成に、クリフセンサ３２が追加された構成になっている。自律移動装置１０１の地図作成モジュール５２は、クリフセンサ３２から得られるクリフデータも用いて環境地図を作成する。この点以外は、自律移動装置１００と同じである。
【００７９】
自律移動装置１０１の地図作成モジュール５２の処理内容について、図１５を参照して説明する。この処理は、図６を参照して説明した自律移動装置１００の地図作成モジュール５２の処理内容と一部を除き共通なので、異なる点を中心に説明する。
【００８０】
ステップＳ１０１からステップＳ１０３までの処理は、図６の処理と同じである。ステップＳ１０３の次に、障害消去部１３は、更新量記憶部２４に記憶されているクリフセンサ地図用の更新量Δｇを初期化する（ステップＳ１１１）。この時の初期値は任意であるが例えば１０とする。具体的な処理としては、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅの全てのｉ及びｊについて、ＤＧ［ｉ，ｊ］＝１０を実行する。
【００８１】
その後の、ステップＳ１０４からステップＳ１０７までの処理は、図６の処理と同じである。ステップＳ１０７の次に、地図作成部１２は、クリフセンサ地図更新処理を行う（ステップＳ１１２）。クリフセンサ地図更新処理の詳細については、後述する。その後、地図作成部１２は、測域センサ地図と衝突センサ地図とクリフセンサ地図とを統合した環境地図を作成し（ステップＳ１１３）、ステップＳ１０４に戻る。
【００８２】
測域センサ地図と衝突センサ地図とクリフセンサ地図とを統合した環境地図は、測域センサ地図、衝突センサ地図及びクリフセンサ地図のどれか１つにしか記録されていない情報でも自律移動装置１０１が認識できるようにするための地図である。具体的には、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅの全てのｉ及びｊについて、以下の処理を行う。
（１）もし、ＭＡ［ｉ，ｊ］＜０かつＭＢ［ｉ，ｊ］＜０かつＭＣ［ｉ，ｊ］＜０ならＭＩ［ｉ，ｊ］＝ｍｉｎ（ＭＡ［ｉ，ｊ］，ＭＢ［ｉ，ｊ］，ＭＣ［ｉ，ｊ］）
（２）もし、ＭＡ［ｉ，ｊ］≧０又はＭＢ［ｉ，ｊ］≧０又はＭＣ［ｉ，ｊ］≧０ならＭＩ［ｉ，ｊ］＝ｍａｘ（ＭＡ［ｉ，ｊ］，ＭＢ［ｉ，ｊ］，ＭＣ［ｉ，ｊ］）
【００８３】
次に、図１５のステップＳ１１２で行われるクリフセンサ地図更新処理について、図１６を参照して説明する。まず、障害消去部１３は、クリフセンサ地図の各格子点の値を減衰させる（ステップＳ６０１）。具体的には、全てのｉ及びｊに対して、以下の処理を行う。
（１）もしＭＣ［ｉ，ｊ］＞０ならＭＣ［ｉ，ｊ］＝ＭＣ［ｉ，ｊ］−ＤＧ［ｉ，ｊ］
（２）もしＭＣ［ｉ，ｊ］＜０ならＭＣ［ｉ，ｊ］＝ＭＣ［ｉ，ｊ］＋ＤＧ［ｉ，ｊ］
【００８４】
そして、地図作成部１２は、図１５のステップＳ１０５で取得した自己位置に対応するクリフセンサ地図の格子点の値を最小値Ｌｍｉｎに設定する（ステップＳ６０２）。具体的には、自己位置の座標を［ｐ，ｑ］とすると、ＭＣ［ｐ，ｑ］＝Ｌｍｉｎを実行する。そして、障害消去部１３は、自己位置に対応するクリフセンサ地図の格子点の値の更新量Δｇを基準非障害調整値（例えば５）だけ増加させる（ステップＳ６０３）。具体的には、自己位置の座標を［ｐ，ｑ］とすると、ＤＧ［ｐ，ｑ］＝ＤＧ［ｐ，ｑ］＋５を実行する。なお、もしここで、ＤＧ［ｐ，ｑ］がＬｍａｘを超えるようなら、ＤＧ［ｐ，ｑ］＝Ｌｍａｘとする。
【００８５】
次に、地図作成部１２は、クリフデータ記憶部２７に新たに登録されたクリフデータが存在するか否かを判定する（ステップＳ６０４）。クリフデータ記憶部２７に新たに登録されたクリフデータが存在しないなら（ステップＳ６０４；Ｎｏ）、クリフセンサ地図更新処理を終了する。
【００８６】
クリフデータ記憶部２７に新たに登録されたクリフデータが存在するなら（ステップＳ６０４；Ｙｅｓ）、地図作成部１２は、クリフデータ記憶部２７から該クリフデータ（検出されたクリフの存在する位置を示す座標）を取得して、クリフセンサ地図の検出されたクリフの存在する格子点の値を最大値Ｌｍａｘに設定する（ステップＳ６０５）。具体的には、衝突した障害物の座標を［ｖ，ｗ］とすると、ＭＣ［ｖ，ｗ］＝Ｌｍａｘを実行する。そして、障害消去部１３は、検出されたクリフの存在する格子点の値の更新量Δｇを基準障害調整値（例えば５）だけ減少させる（ステップＳ６０６）。具体的には、衝突した障害物の座標を［ｖ，ｗ］とすると、ＤＧ［ｖ，ｗ］＝ＤＧ［ｖ，ｗ］−５を実行する。なお、もしここで、ＤＧ［ｐ，ｑ］が０以下になるようなら、ＤＧ［ｖ，ｗ］＝１とする。
【００８７】
そして、地図作成部１２は、クリフデータ記憶部２７から、ステップＳ６０５で取得したクリフデータを削除し（ステップＳ６０７）、ステップＳ６０４に戻る。以上のクリフセンサ地図更新処理によって、クリフセンサ地図は更新され、ステップＳ６０１の減衰処理によって、クリフのゴーストが残るのを防ぐ。また、格子点の値の更新量Δｇの値自体も増減されることによって、クリフが存在する可能性の高い格子点では減衰速度を遅くし、クリフが存在する可能性の低い格子点では減衰速度を速くしている。これによって、変化しないクリフ（例えばテーブルや台の縁等）に再度接近してしまう頻度を下げるとともに、変化するクリフ（例えばマンホールのような蓋が開閉する穴）に対しての追随速度を速める効果を得ている。したがって、実施形態２に係る自律移動装置１０１は、クリフの出現や消失に対しても適切に環境地図に反映できるので、効率的に移動できるようになる。
【００８８】
（変形例４）
実施形態２に係る自律移動装置１０１は、障害検出部３０が衝突センサ３１とクリフセンサ３２を含んでいるが、障害検出部３０は、これらに限らず、なんらかの障害物を、近接することによって検出できるセンサであれば、任意のセンサＸを含むことができる。そして、その場合、地図作成部１２は、地図記憶部２３にセンサＸからのデータを用いて作成したセンサＸ地図も記録し、備えているセンサ毎の環境地図を全て統合した環境地図を作成する。また、更新量記憶部２４には、センサＸ地図の各格子点の値の更新量Δｘも記憶される。センサＸとしては、例えば悪路を検出する床面センサ、床の濡れている部分や水たまりを検出する水分センサ等が考えられる。障害検出部３０が備えるセンサの種類を増やすことによって、自律移動装置は様々な環境により柔軟に対応した環境地図を作成でき、効率的に移動できるようになる。
【００８９】
（実施形態３）
上述の各実施形態では、障害検出部３０は衝突センサ３１、クリフセンサ３２等の、障害物に近接することによって障害物を検出するセンサ（近接障害検出部）を備える。そして、障害検出部３０が検出した障害物については、確実に存在するものとして、衝突センサ地図のその位置の格子点の値を最大値Ｌｍａｘに設定する。しかし、障害検出部３０は、近接せずに遠方から障害物を検出できるセンサ（遠方障害検出部、例えば測域センサ４３）を備えても良い。この場合、障害検出部３０が検出した障害物については（測域センサ４３によって検出された障害物だけでなく、衝突センサ３１等の障害物に近接することによって障害物を検出するセンサによって検出された障害物についても）、その障害物のその位置における存在確率を更新するようにしても良い。具体的には、衝突センサ地図のその位置（衝突した障害物の位置）の格子点の値を最大値Ｌｍａｘを設定するのではなく、その位置の格子点の値に更新量Δｒを加算する処理を行っても良い。このようにすることによって、衝突センサ地図も測域センサ地図も同様の考え方で更新及び減衰させる実施形態３について説明する。
【００９０】
実施形態３に係る自律移動装置１０２は、図１７に示すように、実施形態１に係る自律移動装置１００の障害検出部３０に、衝突センサ３１だけでなく、測域センサ４３も備える構成である。地図記憶部２３は、測域センサ地図（ＭＡ［ｉ，ｊ］）、衝突センサ地図（ＭＢ［ｉ，ｊ］）、両センサ地図を統合した環境地図（ＭＩ［ｉ，ｊ］）を記憶する。更新量記憶部２４は、衝突センサ地図用の更新量と測域センサ地図用の更新量を記憶する。衝突センサ地図用の更新量としては、全ての格子点に共通な値Δｃｏと、格子点［ｉ，ｊ］に対する更新量（減衰量）の値ＤＣＴ［ｉ，ｊ］がある。測域センサ地図用の更新量としては、全ての格子点に共通な値Δｒｏと、格子点［ｉ，ｊ］に対する更新量（減衰量）の値ＤＲＴ［ｉ，ｊ］がある。ここで、ｘｓｉｚｅを環境地図のＸ方向の最大の格子点の座標、ｙｓｉｚｅを環境地図のＹ方向の最大の格子点の座標とすると、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅである。
【００９１】
更新量Δｃｏは、衝突センサ地図の自己位置（自機が存在する場所なので、障害物は存在しない）の格子点の値から減算する値であり、また、衝突センサ３１が障害物を検出したときにその障害物の位置の格子点の値に加算する値である。更新量ＤＣＴ［ｉ，ｊ］は、衝突センサ地図を減衰させる時に用いる各格子点の値の減衰量である。これらの値は全て正の数であり、例えば１０を設定することができる。また、ＤＣＴ［ｉ，ｊ］の値が大きくなりすぎると、衝突センサ地図から障害物の情報を消去する速度が速くなりすぎてしまうので、最大値ＤＣｍａｘを設定しておき、ＤＣＴ［ｉ，ｊ］の値がＤＣｍａｘ以上になった場合には、ＤＣＴ［ｉ，ｊ］＝ＤＣｍａｘとするのが望ましい。ＤＣｍａｘの値は、障害物の消去に要する時間と地図の減衰周期とによって適切な値が異なる（障害物の消去に要する時間を地図の減衰周期で割った値で、Ｌｍａｘを割った値になる）が、例えば障害物を消去させる時間を最短でも６０秒以上にしたい場合で、減衰処理の周期が５秒ならば、ＤＣｍａｘ＝Ｌｍａｘ／１２となる。
【００９２】
更新量Δｒｏは、測域センサ地図で、測域センサ４３により障害物が検出されなかった位置の格子点の値から減算する値であり、また、測域センサ４３が障害物を検出したときにその障害物の位置の格子点の値に加算する値である。更新量ＤＲＴ［ｉ，ｊ］は、測域センサ地図を減衰させる時に用いる各格子点の値の減衰量である。これらの値も全て正の数であり、例えば５を設定することができる。また、ＤＲＴ［ｉ，ｊ］の値が大きくなりすぎると、測域センサ地図から障害物の情報を消去する速度が速くなりすぎてしまうので、最大値ＤＲｍａｘを設定しておき、ＤＲＴ［ｉ，ｊ］の値がＤＲｍａｘ以上になった場合には、ＤＲＴ［ｉ，ｊ］＝ＤＲｍａｘとするのが望ましい。ＤＲｍａｘの値は、障害物の消去に要する時間と地図の減衰周期とによって適切な値が異なる（障害物の消去に要する時間を地図の減衰周期で割った値で、Ｌｍａｘを割った値になる）が、例えば障害物を消去させる時間を最短でも６０秒以上にしたい場合で、減衰処理の周期が５秒ならば、ＤＲｍａｘ＝Ｌｍａｘ／１２となる。
【００９３】
自律移動装置１０２の制御部１０が実行するソフトウェアモジュールの全体構成は、図１８に示すように、図４を参照して説明した自律移動装置１００のソフトウェアモジュールの全体構成から経路設定モジュール５３が削除された構成になっている。実際には、後述する移動制御モジュール５４のフローチャートからわかるように、自律移動装置１００の経路設定モジュール５３と移動制御モジュール５４を合わせたものが、自律移動装置１０２の移動制御モジュール５４になっている。上述の各実施形態では、各ソフトウェアモジュールがそれぞれ別スレッドで実行されるものとして説明した。しかし、これらの一部又は全部が同一のスレッドで実行されても良いことを示すために、実施形態３では、経路設定モジュール５３と移動制御モジュール５４とが同一のスレッド（自律移動装置１０２の移動制御モジュール５４）で実行される例を説明する。
【００９４】
自律移動装置１０２の移動制御モジュール５４の処理内容について、図１９を参照して説明する。
【００９５】
まず、制御部１０は、自律移動装置１０２が動作を終了するか否かを判定する（ステップＳ７０１）。動作を終了するなら（ステップＳ７０１；Ｙｅｓ）、処理を終了する。動作を終了しないなら（ステップＳ７０１；Ｎｏ）、経路設定部１４は、目的地が設定されたか否かを判定する（ステップＳ７０２）。目的地は、自律移動装置１０２のユーザが通信部４４を介して設定することもあるし、自律移動装置１０２が必要に応じて（例えば、バッテリー残量が所定量（例えば１０％）を下回った場合に、充電ステーションを目的地に設定する等）自律的に設定することもある。
【００９６】
目的地が設定されていないなら（ステップＳ７０２；Ｎｏ）、ステップＳ７０１に戻る。目的地が設定されているなら（ステップＳ７０２；Ｙｅｓ）、経路設定部１４は、位置姿勢推定部１１が推定した現在の自己位置及び姿勢を取得する（ステップＳ７０３）。次に、経路設定部１４は、後述する地図作成モジュール５２の処理により作成された、その時点で最新の環境地図を取得する（ステップＳ７０４）。この環境地図は、測域センサ地図と衝突センサ地図とを統合した環境地図（２次元配列変数ＭＩ［ｉ，ｊ］で表される地図）である。そして、経路設定部１４は、取得した環境地図並びに自己位置及び姿勢と設定された目的地とに基づき、現在位置から目的地までの経路を設定する（ステップＳ７０５）。ステップＳ７０５は、経路設定ステップとも呼ばれる。
【００９７】
そして、経路設定部１４は、経路が設定できたか否か（経路が存在するか否か）を判定する（ステップＳ７０６）。経路が存在しないなら（ステップＳ７０６；Ｎｏ）、移動制御部１５は、駆動部４２を制御して移動を停止させ（ステップＳ７０７）、経路が存在しない旨を例えば通信部４４を介してユーザに通知する等のエラー処理を行い（ステップＳ７０８）、ステップＳ７０１に戻る。
【００９８】
経路が存在する（設定できた）なら（ステップＳ７０６；Ｙｅｓ）、移動制御部１５は、自機が目的地に到着したか否かを判定する（ステップＳ７０９）。なお、ステップＳ７０５で設定された経路の情報には、目的地の情報も含まれるため、移動制御部１５は、自己位置が経路の情報に含まれる目的地と一致するか否かを判定することにより、目的地に到着したか否かを判定することができる。
【００９９】
目的地に到着したなら（ステップＳ７０９；Ｙｅｓ）、目的地に到着したことをユーザに通知し（ステップＳ７１０）、ステップＳ７０１に戻る。目的地に到着していないなら（ステップＳ７０９；Ｎｏ）、移動制御部１５は、経路に沿って移動可能か否かを判定する（ステップＳ７１１）。移動可能でなければ（ステップＳ７１１；Ｎｏ）、ステップＳ７０７へ進んでエラー処理を行う。移動可能なら（ステップＳ７１１；Ｙｅｓ）、経路に沿って移動するように駆動部４２を制御する（ステップＳ７１２）。
【０１００】
そして、移動制御部１５は、位置姿勢推定部１１が推定した現在の自己位置及び姿勢を取得する（ステップＳ７１３）。次に、移動制御部１５は、後述する地図作成モジュール５２の処理により作成された、その時点で最新の環境地図を取得する（ステップＳ７１４）。そして、移動制御部１５は、取得した環境地図が、それまでの環境地図から更新されているか否かを判定する（ステップＳ７１５）。更新されているなら（ステップＳ７１５；Ｙｅｓ）、ステップＳ７０５に戻って経路を設定し直す。更新されていなければ（ステップＳ７１５；Ｎｏ）、ステップＳ７０９に戻る。
【０１０１】
以上の移動制御モジュール５４の処理により、自律移動装置１０２は、目的地まで移動することができる。
【０１０２】
次に、自律移動装置１０２の地図作成モジュール５２の処理内容について、図２０を参照して説明する。この処理は図６を参照して説明した、自律移動装置１００の地図作成モジュール５２の処理内容のうち、ステップＳ１０３の処理を、ステップＳ１２１及びステップＳ１２２に置き換えた処理になっており、また、ステップＳ１０６の測域センサ地図更新及びステップＳ１０７の衝突センサ地図更新の各処理の内容も、自律移動装置１００の処理とは異なる。そこで、ステップＳ１２１及びステップＳ１２２の処理内容を説明し、その後、自律移動装置１０２の測域センサ地図更新及び衝突センサ地図更新の各処理の内容の説明を行う。
【０１０３】
まず、ステップＳ１２１では、障害消去部１３は、更新量記憶部２４に記憶されている測域センサ地図用の更新量（減衰量）であるＤＲＴ［ｉ，ｊ］を初期化する。この初期化時の初期値は任意であるが、例えば５とすることができる。具体的な処理としては、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅの全てのｉ及びｊについて、ＤＲＴ［ｉ，ｊ］＝５を実行する。
【０１０４】
次に、ステップＳ１２２では、障害消去部１３は、更新量記憶部２４に記憶されている衝突センサ地図用の更新量（減衰量）であるＤＣＴ［ｉ，ｊ］を初期化する。この初期化時の初期値は任意であるが、例えば１０とすることができる。具体的な処理としては、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅの全てのｉ及びｊについて、ＤＣＴ［ｉ，ｊ］＝１０を実行する。
【０１０５】
次に、地図作成モジュール５２の処理（図２０）のステップＳ１０６で行われる測域センサ地図更新処理について、図２１を参照して説明する。
【０１０６】
現在の自機の位置（自己位置）の座標を［ｐ，ｑ］で表すとすると、まず、障害消去部１３は、自己位置に対応する測域センサ地図の格子点の更新量（減衰量）であるＤＲＴ［ｐ，ｑ］を測域センサ地図用の基準非障害調整値（例えば３）だけ増加させる（ステップＳ２２１）。つまり、測域センサ地図用の基準非障害調整値を３とすると、ＤＲＴ［ｐ，ｑ］＝ＤＲＴ［ｐ，ｑ］＋３を実行する。ただし、ＤＲＴ［ｐ，ｑ］の値がＤＲＴの最大値ＤＲｍａｘより大きくなる場合には、ＤＲＴ［ｐ，ｑ］＝ＤＲｍａｘとする。
【０１０７】
次に、地図作成部１２は、測距データ記憶部２６に新たに登録された測距データが存在するか否かを判定する（ステップＳ２２２）。測距データ記憶部２６に新たに登録された測距データが存在するなら（ステップＳ２２２；Ｙｅｓ）、地図作成部１２は、測距データ記憶部２６から該測距データを取得し、図２０のステップＳ１０５で取得した自己位置及び姿勢を用いて、該測距データを測域センサ地図における座標に変換する（ステップＳ２２３）。この座標は、測域センサ地図上において、測域センサ４３によって障害物が検出された格子点（領域）を示しており、このステップにおいて、地図作成部１２は、障害物の位置を遠方から取得する障害位置取得部として機能する。ここでは、例えば、測域センサ地図における［ｍ，ｎ］の座標に障害物が検出されたこととする。
【０１０８】
そして、地図作成部１２は、測域センサ地図において、障害物が検出された格子点の値に更新量Δｒｏを加算する（ステップＳ２２４）。具体的には、ＭＡ［ｍ，ｎ］＝ＭＡ［ｍ，ｎ］＋Δｒｏを実行する。ただし、この時、ＭＡ［ｍ，ｎ］が最大値Ｌｍａｘを超える場合には、ＭＡ［ｍ，ｎ］＝Ｌｍａｘとする。
【０１０９】
次に、地図作成部１２は、測域センサ地図において、測域センサ４３の観測（スキャン）範囲内で障害物が検出されなかった格子点の値から更新量Δｒｏを減算する（ステップＳ２２５）。具体的には、障害物が検出された方向については［ｍ，ｎ］の手前の全ての［ｉ，ｊ］、障害物が検出されなかった方向については測域センサ４３の観測範囲内の全ての［ｉ，ｊ］に対して、ＭＡ［ｉ，ｊ］＝ＭＡ［ｉ，ｊ］−Δｒｏを実行する。ただし、この時、ＭＡ［ｉ，ｊ］が最小値Ｌｍｉｎを下回る場合には、ＭＡ［ｉ，ｊ］＝Ｌｍｉｎとする。
【０１１０】
そして、障害消去部１３は、障害物が検出された格子点に対応する測域センサ地図の更新量（減衰量）ＤＲＴ［ｍ，ｎ］の値を測域センサ地図用の基準障害調整値（例えば３）だけ減少させ、障害物が検出されなかった格子点に対応する測域センサ地図の更新量（減衰量）ＤＲＴ［ｉ，ｊ］の値を測域センサ地図用の基準非障害調整値（例えば３）だけ増加させる（ステップＳ２２６）。なお、もしここで、ＤＲＴ［ｍ，ｎ］が０以下になるようなら、ＤＲＴ［ｍ，ｎ］＝１とする。また、ＤＲＴ［ｉ，ｊ］がＤＲｍａｘ以上になるようなら、ＤＲＴ［ｉ，ｊ］＝ＤＲｍａｘとする。
【０１１１】
次に、障害消去部１３は、障害物が検出された格子点に対応する衝突センサ地図の更新量（減衰量）ＤＣＴ［ｍ，ｎ］の値を基準障害調整値（例えば５）だけ減少させ、障害物が検出されなかった格子点に対応する衝突センサ地図の更新量（減衰量）ＤＣＴ［ｉ，ｊ］の値を基準非障害調整値（例えば５）だけ増加させる（ステップＳ２２７）。なお、もしここで、ＤＣＴ［ｍ，ｎ］が０以下になるようなら、ＤＣＴ［ｍ，ｎ］＝１とする。また、ＤＣＴ［ｉ，ｊ］がＤＣｍａｘ以上になるようなら、ＤＣＴ［ｉ，ｊ］＝ＤＲｍａｘとする。
【０１１２】
そして、地図作成部１２は、測距データ記憶部２６から、ステップＳ２２３で取得した測距データを削除し（ステップＳ２２８）、ステップＳ２２２に戻る。
【０１１３】
一方、ステップＳ２２２において、測距データ記憶部２６に新たに登録された測距データが存在しないなら（ステップＳ２２２；Ｎｏ）、障害消去部１３は、前回測域センサ地図に対して減衰処理をしてから一定時間（減衰処理の周期であり、例えば５秒）が経過したか否かを判定する（ステップＳ２２９）。一定時間が経過していないなら（ステップＳ２２９；Ｎｏ）、測域センサ地図更新処理を終了する。一定時間が経過しているなら（ステップＳ２２９；Ｙｅｓ）、障害消去部１３が測域センサ地図を減衰して（ステップＳ２３０）から、測域センサ地図更新処理を終了する。
【０１１４】
ステップＳ２３０は障害消去ステップとも呼ばれる。このステップでは、具体的には、障害消去部１３は、測域センサ地図の全ての格子点、つまり、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅの全てのｉ及びｊに対して、以下の処理を行う。（ただし、以下の処理のうち必須なのは（１）の処理であり、（２）の処理は行わなくても良い。）
（１）もしＭＡ［ｉ，ｊ］＞０ならＭＡ［ｉ，ｊ］＝ＭＡ［ｉ，ｊ］−ＤＲＴ［ｉ，ｊ］
（２）もしＭＡ［ｉ，ｊ］＜０ならＭＡ［ｉ，ｊ］＝ＭＡ［ｉ，ｊ］＋ＤＲＴ［ｉ，ｊ］
【０１１５】
以上の測域センサ地図更新処理によって、測域センサ地図は更新され、測域センサ地図の各格子点の値により、障害物の存在確率が表されることになる。
【０１１６】
次に、地図作成モジュール５２の処理（図２０）のステップＳ１０７で行われる衝突センサ地図更新処理について、図２２を参照して説明する。
【０１１７】
現在の自機の位置（自己位置）の座標を［ｐ，ｑ］で表すとすると、まず、障害消去部１３は、自己位置に対応する衝突センサ地図の格子点の更新量（減衰量）であるＤＣＴ［ｐ，ｑ］を基準非障害調整値（例えば５）だけ増加させる（ステップＳ３２１）。つまり、基準非障害調整値を５とすると、ＤＣＴ［ｐ，ｑ］＝ＤＣＴ［ｐ，ｑ］＋５を実行する。ただし、ＤＣＴ［ｐ，ｑ］の値がＤＲＴの最大値ＤＣｍａｘより大きくなる場合には、ＤＣＴ［ｐ，ｑ］＝ＤＣｍａｘとする。
【０１１８】
次に、障害消去部１３は、自己位置に対応する衝突センサ地図の格子点の値から更新量Δｃｏを減算する（ステップＳ３２２）。具体的には、ＭＢ［ｐ，ｑ］＝ＭＢ［ｐ，ｑ］−Δｃｏを実行する。ただし、この時、ＭＢ［ｐ，ｑ］が最小値Ｌｍｉｎを下回る場合には、ＭＢ［ｐ，ｑ］＝Ｌｍｉｎとする。
【０１１９】
そして、地図作成部１２は、衝突データ記憶部２５に新たに登録された衝突データが存在するか否かを判定する（ステップＳ３２３）。衝突データ記憶部２５に新たに登録された衝突データが存在するなら（ステップＳ３２３；Ｙｅｓ）、地図作成部１２は、衝突データ記憶部２５から該衝突データを取得し、図２０のステップＳ１０５で取得した自己位置及び姿勢を用いて、該衝突データを衝突センサ地図における座標に変換する（ステップＳ３２４）。この座標は、衝突センサ地図上において、衝突センサ３１によって障害物が検出された格子点（領域）を示している。ここでは、例えば、衝突センサ地図における［ｍ，ｎ］の座標に障害物が検出されたこととする。
【０１２０】
そして、地図作成部１２は、衝突センサ地図において、障害物が検出された格子点の値に更新量Δｃｏを加算する（ステップＳ３２５）。具体的には、ＭＢ［ｍ，ｎ］＝ＭＢ［ｍ，ｎ］＋Δｃｏを実行する。ただし、この時、ＭＢ［ｍ，ｎ］が最大値Ｌｍａｘを超える場合には、ＭＢ［ｍ，ｎ］＝Ｌｍａｘとする。
【０１２１】
そして、障害消去部１３は、障害物が検出された格子点に対応する衝突センサ地図の更新量（減衰量）ＤＣＴ［ｍ，ｎ］の値を基準障害調整値（例えば５）だけ減少させる（ステップＳ３２６）。なお、もしここで、ＤＣＴ［ｍ，ｎ］が０以下になるようなら、ＤＣＴ［ｍ，ｎ］＝１とする。
【０１２２】
そして、地図作成部１２は、衝突データ記憶部２５から、ステップＳ３２４で取得した衝突データを削除し（ステップＳ３２７）、ステップＳ３２３に戻る。
【０１２３】
一方、ステップＳ３２３において、衝突データ記憶部２５に新たに登録された衝突データが存在しないなら（ステップＳ３２３；Ｎｏ）、障害消去部１３は、前回衝突センサ地図に対して減衰処理をしてから一定時間（減衰処理の周期であり、例えば５秒）が経過したか否かを判定する（ステップＳ３２８）。一定時間が経過していないなら（ステップＳ３２８；Ｎｏ）、衝突センサ地図更新処理を終了する。一定時間が経過しているなら（ステップＳ３２８；Ｙｅｓ）、障害消去部１３が衝突センサ地図を減衰して（ステップＳ３２９）から、測域センサ地図更新処理を終了する。
【０１２４】
ステップＳ３２９は障害消去ステップとも呼ばれる。このステップでは、具体的には、障害消去部１３は、衝突センサ地図の全ての格子点、つまり、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅの全てのｉ及びｊに対して、以下の処理を行う。（ただし、以下の処理のうち必須なのは（１）の処理であり、（２）の処理は行わなくても良い。）
（１）もしＭＢ［ｉ，ｊ］＞０ならＭＢ［ｉ，ｊ］＝ＭＢ［ｉ，ｊ］−ＤＣＴ［ｉ，ｊ］
（２）もしＭＢ［ｉ，ｊ］＜０ならＭＢ［ｉ，ｊ］＝ＭＢ［ｉ，ｊ］＋ＤＣＴ［ｉ，ｊ］
【０１２５】
以上の衝突センサ地図更新処理によって、衝突センサ地図は更新され、衝突センサ地図の各格子点の値により、障害物の存在確率が表されることになる。
【０１２６】
以上の各処理によって、自律移動装置１０２では、障害消去部１３は、衝突センサ地図における障害物存在確率を時間経過に応じて低下させるだけでなく、測域センサ地図における障害物存在確率も時間経過に応じて低下させる。そして、障害消去部１３は、この存在確率を低下させる速度を、衝突センサ地図及び測域センサ地図の格子点毎に異なる値に設定可能にしているので、物体の性質に応じてその存在確率を効率的に低下させることができる。
【０１２７】
例えば、自己位置には障害物は存在しないことは自明なので、自己位置の格子点の値の更新量（減衰量）を増加させることによって、障害物の存在確率を低下させる速度を大きくしている。また、障害物を検出した場所に対応する格子点の値の更新量（減衰量）を減少させることによって、障害物を検出した直後は、その障害物の存在確率を低下させる速度を小さくしている。また、障害物が検出されなかった場所に対応する格子点の値の更新量（減衰量）を増加させることによって、検出されないにもかかわらず地図に残っている障害物の存在確率を低下させる速度を大きくしている。
【０１２８】
このような処理により、過去に衝突した障害物だけでなく、過去に測域センサ４３で検出したが、その後、測域センサ４３の観測（スキャン）範囲外になっている場所の障害物も、ある程度時間が経過すると、その障害物の情報は消去される。したがって、自律移動装置１０２は、過去にその障害物が存在した場所を回避しない経路を設定して、移動することができる。このため、自律移動装置１０２は、本来必要のない障害物回避動作をすることを防ぐことができ、効率的に移動できるようになる。
【０１２９】
また、自律移動装置１０２では、過去に障害物が存在した場所が、測域センサ４３の観測範囲外になっている場合には、時間の経過により、その障害物の情報は地図から消去される。このため、その障害物があった場所も、一定時間経過後には障害物がないと判断されるため、目的地までの移動経路に含まれやすくなり、結果として、その場所を測域センサ４３で観測できる可能性が高まる。
【０１３０】
なお、自律移動装置１０２は、障害検出部３０として、衝突センサ３１と測域センサ４３とを備えているが、どちらか片方のみを使用しても良い。この場合、衝突センサ地図又は測域センサ地図をそのまま環境地図として用いることができる。
【０１３１】
また、障害消去部１３は、衝突センサ地図における障害物存在確率を時間経過に応じて低下させる速度である衝突センサ地図減衰速度（基準障害調整値及び基準非障害調整値により調整）と、測域センサ地図における障害物存在確率を時間経過に応じて低下させる速度である測域センサ地図減衰速度（測域センサ地図用の基準障害調整値及び測域センサ地図用の基準非障害調整値により調整）とを異ならせることができる。衝突センサ３１は測域センサ４３に比べて非常に狭い範囲でしか障害物を検出できないため、一般的には、衝突センサ地図減衰速度の調整量を測域センサ地図減衰速度の調整量よりも大きくする方が良いと考えられる。この方が、衝突センサ地図における障害物に対しての追随速度を速めることができるからである。
【０１３２】
そのため、上述の実施形態３では、ＤＣＴの初期値をＤＲＴの初期値よりも大きくし、衝突センサ地図用の基準非障害調整値を測域センサ地図用の基準非障害調整値よりも大きくし、衝突センサ地図用の基準障害調整値を測域センサ用の基準障害調整値よりも大きくしている。
【０１３３】
なお、上記各実施形態では、位置姿勢推定部１１は、ＳＬＡＭ処理により自律移動装置１００の自己位置及び姿勢を推定しているが、これに限られない。例えば、位置姿勢推定部１１は、ＳＬＡＭ処理を行わずに、駆動部４２から取得できるオドメトリの情報のみによって自己位置及び姿勢を推定しても良い。また、位置姿勢推定部１１は、例えばＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）衛星からの電波を取得し、ＧＰＳによって自己位置及び姿勢を推定しても良い。
【０１３４】
また、上記各実施形態では、測距データ記憶部２６には、測域センサ４３が検出した物体までの距離を示す測距データが、該物体が検出された角度の情報とともに記憶されているが、これに限られない。例えば、測距データ記憶部２６には、衝突データ記憶部２５と同様に、測域センサ４３で周囲を観測（スキャン）した時の自律移動装置の自己位置及び向きと、測域センサ４３が取得した測距データ及び角度と、に基づいて得られる、測域センサ４３で検出された物体（障害物）の位置を示すデータを記憶しても良い。このようにすると、測域センサ地図更新処理（図７、図１１、図２１）における、測距データを地図の座標に変換する処理（ステップＳ２０２、ステップＳ２２３）が不要となる。
【０１３５】
また、上記各実施形態では、各センサ地図を統合した環境地図を作成する際に、各センサ地図の各格子点の値の最大値を採用しているが、これに限られない。例えば、各センサ地図における障害物の存在確率の積を採用しても良い。例えば、図６又は図２０のステップＳ１０８で、地図作成部１２は、０≦ｉ≦ｘｓｉｚｅ，０≦ｊ≦ｙｓｉｚｅの全てのｉ及びｊについて、以下の計算によって、測域センサ地図と衝突センサ地図を統合した環境地図を作成しても良い。
ＭＩ［ｉ，ｊ］＝１−（１／（１＋ｅｘｐ（ｋ×ＭＡ［ｉ，ｊ］））×（１／（１＋ｅｘｐ（ｋ×ＭＢ［ｉ，ｊ］））
【０１３６】
また、実施形態１において、測域センサ４３を備えず、衝突センサ３１のみで障害物を検出するようにしても良い。この場合、測域センサ地図の作成及び更新も不要であり、この自律移動装置１００は、衝突センサ地図のみを環境地図として用いることができる。
【０１３７】
また、上述する各実施形態において、測域センサ４３を備えない代わりに、デプスカメラ又はソナーを備え、これらによって観測された障害物を測域センサ地図と同様の環境地図に記録するようにしても良い。
【０１３８】
また、上述する各実施形態において、測域センサ４３を備えず、撮像部４１が撮影した画像を用いたｖｉｓｕａｌ  ＳＬＡＭによって障害物を検出するようにし、ｖｉｓｕａｌ  ＳＬＡＭで検出された障害物を測域センサ地図と同様の環境地図に記録するようにしても良い。
【０１３９】
また、上述する各実施形態においては、ユーザにエラー等を通知するのは、例えば通信部４４を介して行うこととしていたが、自律移動装置がディスプレイやスピーカー等の出力部を備えて、出力部によりユーザにエラー等を通知しても良い。また、上述する各実施形態においては、ユーザから目的地等の指示を受け付ける際には、例えば通信部４４を介して行うこととしていたが、自律移動装置がタッチパネルやマイク等の入力部を備えて、入力部によりユーザからの指示を受け付けるようにしても良い。
【０１４０】
また、上述する実施形態１又は実施形態２の測域センサ地図更新処理（図７、図１１）において、ステップＳ２０１の直前に、測域センサ地図を減衰する処理（衝突センサ地図更新処理（図８）のステップＳ３０１に相当する処理）を行っても良い。具体的には、障害消去部１３は、全てのｉ及びｊに対して、以下の処理を行う。ただし、以下のΔｓ（測域センサ地図用の減衰量）は例えば１等、更新量Δｒや更新量Δｃよりも小さな値を予め設定しておく。
（１）もしＭＡ［ｉ，ｊ］＞０ならＭＡ［ｉ，ｊ］＝ＭＡ［ｉ，ｊ］−Δｓ
（２）もしＭＡ［ｉ，ｊ］＜０ならＭＡ［ｉ，ｊ］＝ＭＡ［ｉ，ｊ］＋Δｓ
【０１４１】
なお、衝突センサ地図の減衰処理と同様に、測域センサ地図の格子点毎に、その格子点の値の減衰量Δｓを（例えばＤＳ［ｉ，ｊ］に）記憶して、各格子点で障害物が測域センサ４３によって検出されたか否かに応じて、各格子点の値の減衰量Δｓを増減させても良い。以上の処理により、実施形態３と同様に、測域センサ４３の観測（スキャン）範囲外にある障害物のゴーストが残るのを防ぐことができる。
【０１４２】
なお、自律移動装置１００，１０１，１０２の各機能は、通常のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等のコンピュータによっても実施することができる。具体的には、上記実施形態では、自律移動装置１００，１０１，１０２が行う自律移動制御処理のプログラムが、記憶部２０のＲＯＭに予め記憶されているものとして説明した。しかし、プログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）及びＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  Ｄｉｓｃ）等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータに読み込んでインストールすることにより、上述の各機能を実現することができるコンピュータを構成しても良い。
【０１４３】
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【０１４４】
（付記１）
障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、
を備える自律移動装置。
【０１４５】
（付記２）
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部を含む、
付記１に記載の自律移動装置。
【０１４６】
（付記３）
前記地図作成部は、前記障害物の情報を前記障害物の位置毎に前記環境地図に記録する、
付記１又は２に記載の自律移動装置。
【０１４７】
（付記４）
前記障害消去部は、前記位置毎に、前記障害検出部が前記位置で前記障害物を検出した回数に応じて、前記障害物の情報を前記環境地図から消去する速度である消去速度を調整する、
付記３に記載の自律移動装置。
【０１４８】
（付記５）
前記障害消去部は、前記障害検出部が前記障害物を検出したら、前記障害物を検出した位置における前記消去速度を基準障害調整値だけ遅くする、
付記４に記載の自律移動装置。
【０１４９】
（付記６）
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部と、障害物を遠方から検出する遠方障害検出部と、を備え、
前記近接障害検出部が前記障害物を検出したときの前記基準障害調整値は、前記遠方障害検出部が前記障害物を検出したときの前記基準障害調整値よりも大きい、
付記５に記載の自律移動装置。
【０１５０】
（付記７）
前記障害消去部は、前記障害検出部が前記障害物を検出しなかったら、前記障害物を検出しなかった位置における前記消去速度を基準非障害調整値だけ速くする、
付記４から６のいずれか１つに記載の自律移動装置。
【０１５１】
（付記８）
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部と、障害物を遠方から検出する遠方障害検出部と、を備え、
前記近接障害検出部が前記障害物を検出しなかったときの前記基準非障害調整値は、前記遠方障害検出部が前記障害物を検出しなかったときの前記基準非障害調整値よりも大きい、
付記７に記載の自律移動装置。
【０１５２】
（付記９）
前記障害検出部は、前記障害物に衝突したことを検出することによって、障害物を検出する衝突センサを含む、
付記１から８のいずれか１つに記載の自律移動装置。
【０１５３】
（付記１０）
前記障害検出部は、落下する場所であるクリフを検出することによって、障害物を検出するクリフセンサを含む、
付記１から９のいずれか１つに記載の自律移動装置。
【０１５４】
（付記１１）
前記障害物の位置を遠方から取得する障害位置取得部をさらに備え、
前記地図作成部は、前記障害位置取得部が取得した前記障害物の位置の情報を前記環境地図に記録する、
付記１から１０のいずれか１つに記載の自律移動装置。
【０１５５】
（付記１２）
前記障害消去部は、前記障害検出部が検出した障害物の情報を前記環境地図から消去し、前記障害位置取得部が取得した位置に存在する障害物の情報を前記環境地図から消去しない、
付記１１に記載の自律移動装置。
【０１５６】
（付記１３）
前記障害消去部は、前記障害位置取得部が取得した位置に存在する障害物の情報も前記環境地図から消去し、前記障害検出部が検出した障害物の情報を前記環境地図から消去する速度は、前記障害位置取得部が取得した位置に存在する障害物の情報を前記環境地図から消去する速度より速い、
付記１１に記載の自律移動装置。
【０１５７】
（付記１４）
前記障害位置取得部は、前記障害物までの距離である測距データを取得する測域センサからの情報を用いて前記障害物の位置を取得する、
付記１１から１３のいずれか１つに記載の自律移動装置。
【０１５８】
（付記１５）
前記障害位置取得部は、所定の方向毎に障害物の存否を確認し、障害物の存在を確認した場合には前記障害物までの距離である測距データを取得し、
前記地図作成部は、前記障害位置取得部が前記障害物の存否を確認した回数に対する前記測距データを取得した回数の割合を存在確率として前記環境地図に記録する、
付記１１から１４のいずれか１つに記載の自律移動装置。
【０１５９】
（付記１６）
前記地図作成部は、前記障害物の位置に対応する前記環境地図上の位置における前記障害物の存在確率を算出し、前記存在確率を前記環境地図に記録する、
付記１から１５のいずれか１つに記載の自律移動装置。
【０１６０】
（付記１７）
前記地図作成部は、前記存在確率を対数オッズにより前記環境地図に記録する、
付記１５又は１６に記載の自律移動装置。
【０１６１】
（付記１８）
障害物を検出する障害検出ステップと、
前記障害検出ステップで検出した障害物の情報を環境地図に記録する地図作成ステップと、
前記地図作成ステップで記録した障害物の情報を減衰させることにより前記環境地図から消去する障害消去ステップと、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップと、
を含む自律移動方法。
【０１６２】
（付記１９）
コンピュータに、
障害物を検出する障害検出ステップ、
前記障害検出ステップで検出した障害物の情報を環境地図に記録する地図作成ステップ、
前記地図作成ステップで記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去ステップ、及び、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップ、
を実行させるためのプログラム。
【０１６３】
（付記２０）
障害物に近接することによって当該障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、
を備える自律移動装置。
【０１６４】
（付記２１）
障害物に近接することによって当該障害物を検出する障害検出ステップと、
前記障害検出ステップで検出した障害物の情報を環境地図に記録する地図作成ステップ
と、
前記地図作成ステップで記録した障害物の情報を前記環境地図から消去する障害消去ス
テップと、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップと、
を含む自律移動方法。
【０１６５】
（付記２２）
コンピュータに、
障害物に近接することによって当該障害物を検出する障害検出ステップ、
前記障害検出ステップで検出した障害物の情報を環境地図に記録する地図作成ステップ
、
前記地図作成ステップで記録した障害物の情報を前記環境地図から消去する障害消去ス
テップ、及び、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップ、
を実行させるためのプログラム。
【符号の説明】
【０１６６】
１０…制御部、１１…位置姿勢推定部、１２…地図作成部、１３…障害消去部、１４…経路設定部、１５…移動制御部、２０…記憶部、２１…画像記憶部、２２…特徴点記憶部、２３…地図記憶部、２４…更新量記憶部、２５…衝突データ記憶部、２６…測距データ記憶部、２７…クリフデータ記憶部、３０…障害検出部、３１，３１ａ，３１ｂ，３１ｃ…衝突センサ、３２…クリフセンサ、４１…撮像部、４２，４２ａ，４２ｂ…駆動部、４３…測域センサ、４４…通信部、５１…位置姿勢推定モジュール、５２…地図作成モジュール、５３…経路設定モジュール、５４…移動制御モジュール、７０…障害物、１００，１０１，１０２…自律移動装置
【図１】
2019012504.tif 000003
【図２】
2019012504.tif 000004
【図３】
2019012504.tif 000005
【図４】
2019012504.tif 000006
【図５】
2019012504.tif 000007
【図６】
2019012504.tif 000008
【図７】
2019012504.tif 000009
【図８】
2019012504.tif 000010
【図９】
2019012504.tif 000011
【図１０】
2019012504.tif 000012
【図１１】
2019012504.tif 000013
【図１２】
2019012504.tif 000014
【図１３】
2019012504.tif 000015
【図１４】
2019012504.tif 000016
【図１５】
2019012504.tif 000017
【図１６】
2019012504.tif 000018
【図１７】
2019012504.tif 000019
【図１８】
2019012504.tif 000020
【図１９】
2019012504.tif 000021
【図２０】
2019012504.tif 000022
【図２１】
2019012504.tif 000023
【図２２】
2019012504.tif 000024