特許第6870574号(P6870574)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ カシオ計算機株式会社の特許一覧

特許6870574自律移動装置、自律移動方法及びプログラム
<>
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000002
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000003
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000004
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000005
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000006
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000007
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000008
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000009
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000010
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000011
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000012
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000013
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000014
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000015
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000016
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000017
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000018
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000019
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000020
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000021
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000022
  • 特許6870574-自律移動装置、自律移動方法及びプログラム 図000023
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6870574
(24)【登録日】2021年4月19日
(45)【発行日】2021年5月12日
(54)【発明の名称】自律移動装置、自律移動方法及びプログラム
(51)【国際特許分類】
   G05D 1/02 20200101AFI20210426BHJP
【FI】
   G05D1/02 H
   G05D1/02 S
【請求項の数】20
【全頁数】35
(21)【出願番号】特願2017-208778(P2017-208778)
(22)【出願日】2017年10月30日
(65)【公開番号】特開2019-12504(P2019-12504A)
(43)【公開日】2019年1月24日
【審査請求日】2019年6月12日
(31)【優先権主張番号】特願2017-129015(P2017-129015)
(32)【優先日】2017年6月30日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】100095407
【弁理士】
【氏名又は名称】木村 満
(72)【発明者】
【氏名】前野 泰士
【審査官】 大古 健一
(56)【参考文献】
【文献】 特開2005−310043(JP,A)
【文献】 特開2007−323402(JP,A)
【文献】 特開2017−83919(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05D 1/00−1/12
(57)【特許請求の範囲】
【請求項1】
障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を前記障害物の位置毎に環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、を備え、
前記障害消去部は、前記障害検出部が前記障害物を検出したら、前記障害物を検出した位置における前記障害物の情報を前記環境地図から消去する速度である消去速度を基準障害調整値だけ遅くする、
自律移動装置。
【請求項2】
前記障害消去部は、前記位置毎に、前記障害検出部が前記位置で前記障害物を検出した回数に応じて、前記消去速度を遅くする、
請求項1に記載の自律移動装置。
【請求項3】
障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を前記障害物の位置毎に環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、を備え、
前記障害消去部は、前記障害検出部が前記障害物を検出しなかったら、前記障害物を検出しなかった位置における前記障害物の情報を前記環境地図から消去する速度である消去速度を基準非障害調整値だけ速くする、
自律移動装置。
【請求項4】
前記障害消去部は、前記位置毎に、前記障害検出部が前記位置で前記障害物を検出した回数に応じて、前記消去速度を速くする、
請求項3に記載の自律移動装置。
【請求項5】
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部を含む、
請求項1から4のいずれか1項に記載の自律移動装置。
【請求項6】
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部と、障害物を遠方から検出する遠方障害検出部と、を備え、
前記近接障害検出部が前記障害物を検出したときの前記基準障害調整値は、前記遠方障害検出部が前記障害物を検出したときの前記基準障害調整値よりも大きい、
請求項1又は2に記載の自律移動装置。
【請求項7】
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部と、障害物を遠方から検出する遠方障害検出部と、を備え、
前記近接障害検出部が前記障害物を検出しなかったときの前記基準非障害調整値は、前記遠方障害検出部が前記障害物を検出しなかったときの前記基準非障害調整値よりも大きい、
請求項3又は4に記載の自律移動装置。
【請求項8】
前記障害検出部は、前記障害物に衝突したことを検出することによって、障害物を検出する衝突センサを含む、
請求項1からのいずれか1項に記載の自律移動装置。
【請求項9】
前記障害検出部は、落下する場所であるクリフを検出することによって、障害物を検出するクリフセンサを含む、
請求項1からのいずれか1項に記載の自律移動装置。
【請求項10】
前記障害物の位置を遠方から取得する障害位置取得部をさらに備え、
前記地図作成部は、前記障害位置取得部が取得した前記障害物の位置の情報を前記環境地図に記録する、
請求項1からのいずれか1項に記載の自律移動装置。
【請求項11】
障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、
前記障害物の位置を遠方から取得する障害位置取得部と、を備え、
前記地図作成部は、前記障害位置取得部が取得した前記障害物の位置の情報を前記環境地図に記録し、
前記障害消去部は、前記障害検出部が検出した障害物の情報を前記環境地図から消去し、前記障害位置取得部が取得した位置に存在する障害物の情報を前記環境地図から消去しない、
自律移動装置。
【請求項12】
障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、
前記障害物の位置を遠方から取得する障害位置取得部と、を備え、
前記地図作成部は、前記障害位置取得部が取得した前記障害物の位置の情報を前記環境地図に記録し、
前記障害消去部は、前記障害位置取得部が取得した位置に存在する障害物の情報も前記環境地図から消去し、前記障害検出部が検出した障害物の情報を前記環境地図から消去する速度は、前記障害位置取得部が取得した位置に存在する障害物の情報を前記環境地図から消去する速度より速い、
自律移動装置。
【請求項13】
前記障害位置取得部は、前記障害物までの距離である測距データを取得する測域センサからの情報を用いて前記障害物の位置を取得する、
請求項10から12のいずれか1項に記載の自律移動装置。
【請求項14】
前記障害位置取得部は、所定の方向毎に障害物の存否を確認し、障害物の存在を確認した場合には前記障害物までの距離である測距データを取得し、
前記地図作成部は、前記障害位置取得部が前記障害物の存否を確認した回数に対する前記測距データを取得した回数の割合を存在確率として前記環境地図に記録する、
請求項10から13のいずれか1項に記載の自律移動装置。
【請求項15】
前記地図作成部は、前記障害物の位置に対応する前記環境地図上の位置における前記障害物の存在確率を算出し、前記存在確率を前記環境地図に記録する、
請求項1から14のいずれか1項に記載の自律移動装置。
【請求項16】
障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、を備え、
前記地図作成部は、前記障害物の位置に対応する前記環境地図上の位置における前記障害物の存在確率を算出し、前記存在確率を対数オッズにより前記環境地図に記録する、
自律移動装置。
【請求項17】
障害物を検出する障害検出ステップと、
前記障害検出ステップで検出した障害物の情報を前記障害物の位置毎に環境地図に記録する地図作成ステップと、
前記地図作成ステップで記録した障害物の情報を減衰させることにより前記環境地図から消去する障害消去ステップと、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップと、を含み、
前記障害消去ステップは、前記障害検出ステップが前記障害物を検出したら、前記障害物を検出した位置における前記障害物の情報を前記環境地図から消去する速度である消去速度を基準障害調整値だけ遅くする、
自律移動方法。
【請求項18】
障害物を検出する障害検出ステップと、
前記障害検出ステップで検出した障害物の情報を前記障害物の位置毎に環境地図に記録する地図作成ステップと、
前記地図作成ステップで記録した障害物の情報を減衰させることにより前記環境地図から消去する障害消去ステップと、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップと、を含み、
前記障害消去ステップは、前記障害検出ステップが前記障害物を検出しなかったら、前記障害物を検出しなかった位置における前記障害物の情報を前記環境地図から消去する速度である消去速度を基準非障害調整値だけ速くする、
自律移動方法。
【請求項19】
コンピュータに、
障害物を検出する障害検出ステップ、
前記障害検出ステップで検出した障害物の情報を前記障害物の位置毎に環境地図に記録する地図作成ステップ、
前記地図作成ステップで記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去ステップ、及び、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップ、を実行させるプログラムであって、
前記障害消去ステップは、前記障害検出ステップが前記障害物を検出したら、前記障害物を検出した位置における前記障害物の情報を前記環境地図から消去する速度である消去速度を基準障害調整値だけ遅くする、
プログラム。
【請求項20】
コンピュータに、
障害物を検出する障害検出ステップ、
前記障害検出ステップで検出した障害物の情報を前記障害物の位置毎に環境地図に記録する地図作成ステップ、
前記地図作成ステップで記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去ステップ、及び、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップ、を実行させるプログラムであって、
前記障害消去ステップは、前記障害検出ステップが前記障害物を検出しなかったら、前記障害物を検出しなかった位置における前記障害物の情報を前記環境地図から消去する速度である消去速度を基準非障害調整値だけ速くする、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、地図を作成して自律移動する技術に関する。
【背景技術】
【0002】
用途に応じて自律的に移動する自律移動装置が普及してきている。例えば、屋内の掃除のために自律的に移動する自律移動装置が知られている。このような自律移動装置は、測域センサ等を使って周囲に存在する物体(障害物)までの距離を検出し、周囲の環境のどこに障害物が存在するかを表す地図を作成することが多い。そして、障害物の中には移動するものも存在するため、移動する障害物に対応するための技術開発も行われている。例えば、特許文献1には、移動する障害物のゴースト(該障害物の過去の位置に残る、該障害物がまだそこに存在しているかのように見えるデータ)を地図から除去することにより、効率的な移動を行うことができる自律移動装置が記載されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2010−102485号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に記載の自律移動装置は、センサで検出した障害物が移動しているか否かを判定し、移動しているなら、該障害物のゴーストを地図から除去することができる。しかし、センサで検出できない障害物のゴーストについては地図から除去することはできない。したがって、従来の自律移動装置では、地図を作成する技術に改善の余地がある。
【0005】
本発明は、自律移動装置の地図を作成する技術を改善することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明の自律移動装置は、
障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を前記障害物の位置毎に環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、を備え、
前記障害消去部は、前記障害検出部が前記障害物を検出したら、前記障害物を検出した位置における前記障害物の情報を前記環境地図から消去する速度である消去速度を基準障害調整値だけ遅くする
【発明の効果】
【0007】
本発明によれば、自律移動装置の地図を作成する技術を改善することができる。
【図面の簡単な説明】
【0008】
図1】本発明の実施形態1に係る自律移動装置の機能構成を示す図である。
図2】実施形態1に係る自律移動装置の外観を示す図である。
図3】(A)測域センサでのスキャン例を示す図である。(B)測域センサで得られる測距データの例を示す図である。
図4】実施形態1に係る自律移動装置のソフトウェアモジュールの全体構成を示す図である。
図5】実施形態1に係る自律移動装置が解決する課題を説明する図である。
図6】実施形態1に係る地図作成モジュールのフローチャートである。
図7】実施形態1に係る測域センサ地図更新処理のフローチャートである。
図8】実施形態1に係る衝突センサ地図更新処理のフローチャートである。
図9】実施形態1に係る経路設定モジュールのフローチャートである。
図10】実施形態1に係る移動制御モジュールのフローチャートである。
図11】本発明の変形例1に係る測域センサ地図更新処理のフローチャートである。
図12】本発明の実施形態2に係る自律移動装置の機能構成を示す図である。
図13】実施形態2に係る自律移動装置の外観を示す図である。
図14】実施形態2に係る自律移動装置のソフトウェアモジュールの全体構成を示す図である。
図15】実施形態2に係る地図作成モジュールのフローチャートである。
図16】実施形態2に係るクリフセンサ地図更新処理のフローチャートである。
図17】本発明の実施形態3に係る自律移動装置の機能構成を示す図である。
図18】実施形態3に係る自律移動装置のソフトウェアモジュールの全体構成を示す図である。
図19】実施形態3に係る移動制御モジュールのフローチャートである。
図20】実施形態3に係る地図作成モジュールのフローチャートである。
図21】実施形態3に係る測域センサ地図更新処理のフローチャートである。
図22】実施形態3に係る衝突センサ地図更新処理のフローチャートである。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について、図表を参照して説明する。なお、図中同一又は相当部分には同一符号を付す。
【0010】
(実施形態1)
本発明の実施形態に係る自律移動装置は、周囲の地図を作成しながら、用途に応じて自律的に移動する装置である。この用途とは、例えば、警備監視用、屋内掃除用、ペット用、玩具用等である。
【0011】
図1に示すように、本発明の実施形態1に係る自律移動装置100は、制御部10、記憶部20、障害検出部30、撮像部41、駆動部42、測域センサ43、通信部44、を備える。
【0012】
制御部10は、CPU(Central Processing Unit)等で構成され、記憶部20に記憶されたプログラムを実行することにより、後述する各部(位置姿勢推定部11、地図作成部12、障害消去部13、経路設定部14、移動制御部15)の機能を実現する。また、制御部10は、タイマー(図示せず)を備え、経過時間をカウントすることができる。
【0013】
記憶部20は、ROM(Read Only Memory)、RAM(Random Access Memory)等で構成され、機能的に、画像記憶部21、特徴点記憶部22、地図記憶部23、更新量記憶部24、衝突データ記憶部25及び測距データ記憶部26を含む。ROMには制御部10のCPUが実行するプログラムや、プログラムを実行する上で予め必要なデータが記憶されている。RAMには、プログラム実行中に作成されたり変更されたりするデータが記憶される。
【0014】
画像記憶部21には、撮像部41が撮影した画像が記憶される。ただし、記憶容量を節約するために、撮影した全ての画像を記憶しなくても良い。自律移動装置100は、画像記憶部21に記憶された複数の画像を用いて、SLAM(Simultaneous Localization And Mapping)処理により、自機位置(自己位置及び向き)の推定を行う。自機位置の推定に用いた画像については、その画像の情報と共に、その画像を撮影した時の自機位置の情報も記憶される。
【0015】
特徴点記憶部22には、画像記憶部21に記憶された画像に含まれている特徴点のうち、実空間における3次元位置(X,Y,Z)が求められた特徴点について、その3次元位置とその特徴点の特徴量とが紐付けられて記憶される。特徴点とは画像中のコーナー部分等、画像内の特徴的な部分のことであり、SIFT(Scale−Invariant Feature Transform)やSURF(Speeded Up Robust Features)等のアルゴリズムを用いて取得することができる。また、特徴点の特徴量は、例えばSIFT等で得られる特徴量である。上述のSLAM処理では、特徴点記憶部22に記憶されている特徴点の3次元位置に基づいて自己位置の推定を行うため、特徴点記憶部22は、SLAM用の地図の情報を記憶していると考えることもできる。
【0016】
地図記憶部23には、障害検出部30からの情報に基づいて地図作成部12が作成した環境地図(後述する衝突センサ地図)と、測域センサ43からの情報に基づいて地図作成部12が作成した環境地図(後述する測域センサ地図)と、が記憶される。環境地図は、床面を例えば5cm×5cmの格子(グリッド)に分割し、各格子点に対応する位置(格子点を中心とする、該格子と同一の形状の領域)における障害物の存在確率を、該格子点の値として表した占有格子地図である。なお、「各格子点に対応する位置」の代わりに、「各格子に対応する位置(格子の領域)」を用いても良い。なお、占有格子地図の各格子点の値は、その場所に障害物が存在する可能性が高いほど大きな値になり、障害物が存在しない可能性が高いほど小さな値になるので、便宜上「存在確率」と呼んでいるだけで、厳密な存在確率である必要はない。占有格子地図の各格子点の値として記録する存在確率の数値としては、存在確率P(0から1までの範囲の実数)の値そのものでも良いが、本実施形態においては対数オッズL(整数)を用いる。PとLとの関係はkを正の定数とすると、以下の式(1)で表すことができる。
P=1−1/(1+exp(kL))・・・(1)
【0017】
式(1)から分かるように、P=0.5の時にL=0、P=0の時にL=−∞、P=1の時にL=∞となり、対数オッズを用いることによって、確率を整数値で扱うことができる。そして、各格子点の値Lを基準値と比較した時の大小によって、その格子点に対応する位置における障害物の存否を表すことができる。なお、本実施形態においては、Lの値として、最小値(Lmin)を−127、最大値(Lmax)を127とし、占有格子地図の各格子点の値の初期値はL=0とすることとする。そして、例えばLが存在基準値(例えば10)より大きければその格子点に障害物が存在し、Lが不存在基準値(例えば−10)未満ならその格子点には障害物は存在せず、Lが不存在基準値以上、存在基準値未満ならその格子点における障害物の存否は不明として扱うこととする。もっともこれらの値は任意に変更可能である。
【0018】
更新量記憶部24には、地図記憶部23に記憶されている各地図用の更新量(各格子点の値を更新する量)が記憶される。測域センサ地図用の更新量としては、全ての格子点に共通な値Δr(例えば5)が記憶されている。また、衝突センサ地図用の更新量としては、衝突センサ地図の格子点毎に、その格子点の値の更新量Δc(例えば初期値として10)が記憶されている。更新量Δcは、衝突センサ地図から、障害物の情報を消去する速度(消去速度)と考えることができる。
【0019】
衝突データ記憶部25には、後述する衝突センサ31が衝突を検出した時の自律移動装置100の自己位置及び向きと、該衝突を検出した衝突センサ31の自律移動装置100における位置と、に基づいて得られる、衝突した物体(障害物)の位置を示すデータ(衝突データ)が記憶される。
【0020】
測距データ記憶部26には、測域センサ43が検出した物体までの距離を示す測距データが、該物体が検出された角度の情報とともに記憶される。
【0021】
障害検出部30は、自律移動装置100が障害物に近接することによって当該障害物を検出するセンサを備える。なお、障害物とは、自律移動装置100が移動できない場所を総称するものであり、壁、物体、穴、崖等を含む。実施形態1においては、障害検出部30は、障害物に衝突したことを検出することによって該障害物を検出する衝突センサ31を備える。衝突センサ31の個数は任意であるが、図2に示すように、自律移動装置100は、衝突センサ31として、自律移動装置100の真正面の衝突センサ31bと、正面より少し右寄りの衝突センサ31aと、正面より少し左寄りの衝突センサ31cを備える。物体がこれらの衝突センサ31に衝突すると、衝突された衝突センサ31は衝突を検出したことを制御部10に通知する。すると制御部10は、その時点における自律移動装置100の自己位置及び向きと、衝突検出を通知した衝突センサ31の自律移動装置100における位置と、に基づき、衝突した物体の位置を示す衝突データを衝突データ記憶部25に登録する。
【0022】
撮像部41は、図2に示すように、単眼の撮像装置(カメラ)を備える。撮像部41は、例えば、30fps(frames per second)で画像(フレーム)を取得する。自律移動装置100は、撮像部41が逐次取得した画像に基づいて、SLAM処理により、自己位置と周囲環境とをリアルタイムに認識しながら、自律移動を行う。
【0023】
駆動部42は、独立2輪駆動型であって、車輪とモータとを備える移動手段である。図2では、右の車輪を駆動部42a、左の車輪を駆動部42bとして示している。自律移動装置100は、2つの車輪の同一方向駆動により前後の平行移動(並進移動)を、2つの車輪の逆方向駆動によりその場での回転(向き変更)を、2つの車輪のそれぞれ速度を変えた駆動により旋回移動(並進+回転(向き変更)移動)を、行うことができる。また、各々の車輪にはロータリエンコーダが備えられており、ロータリエンコーダで車輪の回転数を計測し、車輪の直径や車輪間の距離等の幾何学的関係を利用することで並進移動量及び回転量を計算できる。
【0024】
例えば、車輪の直径をD、回転数をR(ロータリエンコーダにより測定)とすると、その車輪の接地部分での並進移動量はπ・D・Rとなる。また、車輪の直径をD、車輪間の距離をI、右車輪の回転数をR、左車輪の回転数をRとすると、向き変更の回転量は(右回転を正とすると)360°×D×(R−R)/(2×I)となる。この並進移動量や回転量を逐次足し合わせていくことで、駆動部42は、いわゆるオドメトリとして機能し、自機の位置(移動開始時の自己位置及び向きを基準とした自己位置及び向き)を推定するのに用いることができる。ここでは、自機の「向き」のことを自機の「姿勢」とも言うこととする。
【0025】
なお、車輪の代わりにクローラを備えるようにしても良いし、複数(例えば二本)の足を備えて足で歩行することによって移動を行うようにしても良い。これらの場合も、二つのクローラの動きや、足の動きに基づいて、車輪の場合と同様に自己位置や向き(姿勢)の推定が可能である。
【0026】
測域センサ43は、周囲に存在する物体(障害物)を検出し、該物体までの距離(測距データ)を取得する。測域センサ43は、例えば、図2に示すように自律移動装置100の上部に備えられた2次元レーザースキャナにより構成され、近接していない物体でも遠方から検出し、該物体までの距離を取得することができる。測域センサ43は、図3に示すように、所定の角度範囲(例えば−30度から+30度までの範囲)でレーザー光によるスキャニングをすることにより、周囲の当該角度範囲に存在する物体までの距離(測距データ)を所定の角度(例えば1度)毎に取得することができる。その方向に物体が無ければ、その角度に対する測距データは無しとなる。例えば、測域センサ43が図3(A)に示すスキャンをすると、図3(B)に示す測距データを取得できる。測域センサ43は、定期的に(例えば1秒間に30回の頻度で)、周囲を観測(スキャン)し、物体を検出すると、該物体までの距離を示す測距データと該物体が検出された角度の情報とを制御部10に送信する。すると、制御部10は、これらの情報(物体までの距離及び該物体が検出された角度)を測距データ記憶部26に登録する。
【0027】
通信部44は、外部装置と通信するためのモジュールであり、外部装置と無線通信する場合にはアンテナを含む無線モジュールである。例えば、通信部44は、Bluetooth(登録商標)に基づく近距離無線通信を行うための無線モジュールである。通信部44を用いることにより、自律移動装置100は、外部とデータの受け渡し等を行うことができる。例えば、ユーザが自律移動装置100に目的地を指示する際には、この通信部44を介して目的地の情報を伝えても良い。
【0028】
次に、制御部10の機能について説明する。制御部10は、位置姿勢推定部11、地図作成部12、障害消去部13、経路設定部14及び移動制御部15を含み、環境地図の作成や自律移動装置100の移動制御等を行う。また、制御部10は、マルチスレッド機能に対応しており、複数のスレッド(異なる処理の流れ)を並行して実行することができる。
【0029】
位置姿勢推定部11は、撮像部41が撮影し画像記憶部21に記憶された画像を複数用いて、SLAM処理により自律移動装置100の自己位置及び姿勢を推定する。また、この自己位置及び姿勢の推定の際には、位置姿勢推定部11は、駆動部42から取得可能なオドメトリの情報も用いることができる。
【0030】
地図作成部12は、衝突センサ31や、測域センサ43からの情報を用いて障害物(物体)の位置を記録した環境地図を作成し、地図記憶部23に記憶する。この環境地図は、上述したように平面を格子点に分割し、各格子点に衝突センサ31や測域センサ43で検出された物体(障害物)の存在確率を示す数値を記録した占有格子地図である。地図作成部12は、障害物を検出するセンサ毎に別個の占有格子地図を作成する。したがって、これらの各地図を区別するために、地図作成部12が衝突センサ31からの情報に基づいて作成する占有格子地図を衝突センサ地図と呼び、地図作成部12が測域センサ43からの情報に基づいて作成する占有格子地図を測域センサ地図と呼ぶ。
【0031】
例えば、地図作成部12は、衝突センサ31からの情報に基づき、衝突した位置に対応する格子点における障害物の存在を衝突センサ地図に記録する。また、地図作成部12は、測域センサ43からの情報に基づき、測域センサ43が検出した各格子点における障害物の存在を測域センサ地図に記録する。
【0032】
障害消去部13は、地図作成部12が環境地図(衝突センサ地図)に記録した障害物の情報を、時間経過に応じて環境地図(衝突センサ地図)から消去する。この消去は後述する衝突センサ地図更新処理で行われるが、詳細は後述する。
【0033】
経路設定部14は、地図記憶部23に記憶されている環境地図の情報に基づいて、目的地までの移動経路を設定する。
【0034】
移動制御部15は、経路設定部14が設定した移動経路に沿って自機を移動させるように、駆動部42を制御する。
【0035】
以上、自律移動装置100の機能構成について説明した。次に、自律移動装置100の制御部10が実行するソフトウェアモジュールの全体構成について、図4を参照して説明する。図4中、位置姿勢推定モジュール51は上記機能構成で説明した位置姿勢推定部11に対応し、地図作成モジュール52は地図作成部12に対応し、経路設定モジュール53は経路設定部14に対応し、移動制御モジュール54は移動制御部15に対応する。
【0036】
これらのソフトウェアモジュールは、自律移動装置100の電源が入ると、それぞれ別スレッドとして起動し、並行して実行が開始される。位置姿勢推定モジュール51は、撮像部41から取得する画像情報を用いてSLAM処理を行い、駆動部42から取得するオドメトリ情報も用いて、自己位置及び姿勢を推定する。地図作成モジュール52は、位置姿勢推定モジュール51が推定した自己位置及び姿勢と、衝突センサ31から得られる衝突データと、測域センサ43から得られる測距データと、に基づき、環境地図を作成する。
【0037】
経路設定モジュール53は、位置姿勢推定モジュール51が推定した自己位置及び姿勢と、地図作成モジュール52が作成した環境地図と、に基づき、経路を設定する。移動制御モジュール54は、位置姿勢推定モジュール51が推定した自己位置及び姿勢と、地図作成モジュール52が作成した環境地図と、経路設定モジュール53が設定した経路と、に基づき、駆動部42を制御する移動制御情報(主に速度情報)を生成する。そして、駆動部42は、移動制御モジュール54が生成した移動制御情報に基づいて駆動され、目的地への移動が行われる。
【0038】
ここで、自律移動装置100が解決する課題について、図5を参照して説明する。自律移動装置100は、図5の(1)に示すように、障害物70が小さいと、測域センサ43で障害物70を検出することができず、環境地図には障害物70が記録されない。そして、自律移動装置100が前進して、図5の(2)に示すように、障害物70に衝突すると、衝突センサ31により障害物70が検出され、衝突センサ31による環境地図(衝突センサ地図)に障害物70が記録される。そして、その後、自律移動装置100が障害物70を避けて移動し続けると、障害物70が除去されていたとしても、自律移動装置100はそのことを検出することができず、図5の(3)に示すように、環境地図(衝突センサ地図)にいつまでも障害物70が残ることになる。
【0039】
では、自律移動装置100が、図5の(3)における障害物70を、環境地図(衝突センサ地図)から消去する仕組みについて、以下に説明する。まず、地図作成モジュール52の処理内容について、図6を参照して説明する。なお、以下では、測域センサ地図を2次元配列変数MA[i,j]、衝突センサ地図を2次元配列変数MB[i,j]、測域センサ地図と衝突センサ地図とを統合した環境地図を2次元配列変数MI[i,j]、衝突センサ地図用の更新量を2次元配列変数DC[i,j]で、それぞれ表すものとする。ここで、xsizeを環境地図のX方向の最大の格子点の座標、ysizeを環境地図のY方向の最大の格子点の座標とすると、0≦i≦xsize,0≦j≦ysizeである。
【0040】
まず、地図作成部12は、地図記憶部23に記憶されている測域センサ地図を初期化する(ステップS101)。地図の初期化は、占有格子地図の全ての格子点の値を0にすることにより行われる。具体的には、0≦i≦xsize,0≦j≦ysizeの全てのi及びjについて、MA[i,j]=0を実行する。
【0041】
次に、地図作成部12は、地図記憶部23に記憶されている衝突センサ地図を初期化する(ステップS102)。具体的には、0≦i≦xsize,0≦j≦ysizeの全てのi及びjについて、MB[i,j]=0を実行する。
【0042】
次に、障害消去部13は、更新量記憶部24に記憶されている衝突センサ地図用の更新量Δcを初期化する(ステップS103)。この時の初期値は任意であるが例えば10とする。具体的な処理としては、0≦i≦xsize,0≦j≦ysizeの全てのi及びjについて、DC[i,j]=10を実行する。
【0043】
次に制御部10は、自律移動装置100が動作を終了するか否かを判定する(ステップS104)。ユーザが自律移動装置100の電源を落とした場合や、バッテリーの残量が所定量(例えば残り3%等)を下回った場合等に、自律移動装置100は動作を終了する。自律移動装置100が動作を終了するなら(ステップS104;Yes)、処理を終了する。動作を終了しないなら(ステップS104;No)、地図作成部12は、位置姿勢推定部11がその時点で推定している自己位置及び姿勢を取得する(ステップS105)。
【0044】
次に地図作成部12は、測域センサ地図更新処理を行う(ステップS106)。測域センサ地図更新処理の詳細については、後述する。次に地図作成部12は、衝突センサ地図更新処理を行う(ステップS107)。衝突センサ地図更新処理の詳細については、後述する。次に、地図作成部12は、測域センサ地図と衝突センサ地図とを統合した環境地図を作成し(ステップS108)、ステップS104に戻る。
【0045】
測域センサ地図と衝突センサ地図とを統合した環境地図は、測域センサ地図と衝突センサ地図のどちらか一方にしか記録されていない情報でも自律移動装置100が認識できるようにするための地図である。具体的には、0≦i≦xsize,0≦j≦ysizeの全てのi及びjについて、以下の処理を行う。
(1)もし、MA[i,j]<0かつMB[i,j]<0ならMI[i,j]=min(MA[i,j],MB[i,j])
(2)もし、MA[i,j]≧0又はMB[i,j]≧0ならMI[i,j]=max(MA[i,j],MB[i,j])
【0046】
次に、図6のステップS106で行われる測域センサ地図更新処理について、図7を参照して説明する。まず、地図作成部12は、測距データ記憶部26に新たに登録された測距データが存在するか否かを判定する(ステップS201)。測距データ記憶部26に新たに登録された測距データが存在しないなら(ステップS201;No)、測域センサ地図更新処理を終了する。
【0047】
測距データ記憶部26に新たに登録された測距データが存在するなら(ステップS201;Yes)、地図作成部12は、測距データ記憶部26から該測距データを取得し、図6のステップS105で取得した自己位置及び姿勢を用いて、該測距データを測域センサ地図における座標に変換する(ステップS202)。この座標は、測域センサ地図上において、測域センサ43によって障害物が検出された格子点(領域)を示しており、このステップにおいて、地図作成部12は、障害物の位置を遠方から取得する障害位置取得部として機能する。ここでは、例えば、測域センサ地図における[m,n]の座標に障害物が検出されたこととする。
【0048】
そして、地図作成部12は、障害物が検出された格子点の値に更新量Δrを加算する(ステップS203)。具体的には、MA[m,n]=MA[m,n]+Δrを実行する。ただし、この時、MA[m,n]が最大値Lmaxを超える場合には、MA[m,n]=Lmaxとする。
【0049】
次に、地図作成部12は、測域センサ43の観測(スキャン)範囲内で障害物が検出されなかった格子点の値から更新量Δrを減算する(ステップS204)。具体的には、障害物が検出された方向については[m,n]の手前の全ての[i,j]、障害物が検出されなかった方向については測域センサ43の観測範囲内の全ての[i,j]に対して、MA[i,j]=MA[i,j]−Δrを実行する。ただし、この時、MA[i,j]が最小値Lminを下回る場合には、MA[i,j]=Lminとする。
【0050】
そして、地図作成部12は、測距データ記憶部26から、ステップS202で取得した測距データを削除し(ステップS205)、ステップS201に戻る。以上の測域センサ地図更新処理によって、測域センサ地図は更新され、測域センサ地図の各格子点の値により、障害物の存在確率が表されることになる。
【0051】
なお、測域センサ地図における各格子点の値として、対数オッズLの代わりに、観測回数(該格子点を測域センサ43で観測(スキャン)した回数)と検出回数(該格子点の位置に障害物が存在することを測域センサ43が検出した回数)のペアを記録し、各格子点における障害物の存在確率を、観測回数に対する検出回数の割合として定義しても良い。
【0052】
次に、図6のステップS107で行われる衝突センサ地図更新処理について、図8を参照して説明する。まず、障害消去部13は、衝突センサ地図の各格子点の値を減衰させる(ステップS301)。ステップS301は障害消去ステップとも呼ばれる。このステップでは、具体的には、障害消去部13は、全てのi及びjに対して、以下の処理を行う。
(1)もしMB[i,j]>0ならMB[i,j]=MB[i,j]−DC[i,j]
(2)もしMB[i,j]<0ならMB[i,j]=MB[i,j]+DC[i,j]
【0053】
そして、地図作成部12は、図6のステップS105で取得した自己位置に対応する衝突センサ地図の格子点の値を最小値Lminに設定する(ステップS302)。具体的には、自己位置の座標を[p,q]とすると、MB[p,q]=Lminを実行する。そして、障害消去部13は、自己位置に対応する衝突センサ地図の格子点の値の更新量Δcを基準非障害調整値(例えば5)だけ増加させる(ステップS303)。具体的には、自己位置の座標を[p,q]とすると、DC[p,q]=DC[p,q]+5を実行する。なお、もしここで、DC[p,q]がLmaxを超えるようなら、DC[p,q]=Lmaxとする。
【0054】
次に、地図作成部12は、衝突データ記憶部25に新たに登録された衝突データが存在するか否かを判定する(ステップS304)。ステップS304は、障害検出ステップとも呼ばれる。衝突データ記憶部25に新たに登録された衝突データが存在しないなら(ステップS304;No)、衝突センサ地図更新処理を終了する。
【0055】
衝突データ記憶部25に新たに登録された衝突データが存在するなら(ステップS304;Yes)、地図作成部12は、衝突データ記憶部25から該衝突データ(衝突した障害物の存在する位置を示す座標)を取得して、衝突した障害物の存在する衝突センサ地図の格子点の値を最大値Lmaxに設定する(ステップS305)。具体的には、衝突した障害物の座標を[v,w]とすると、MB[v,w]=Lmaxを実行する。ステップS305は地図作成ステップとも呼ばれる。そして、障害消去部13は、衝突した障害物の存在する格子点の値の更新量Δcを基準障害調整値(例えば5)だけ減少させる(ステップS306)。具体的には、衝突した障害物の座標を[v,w]とすると、DC[v,w]=DC[v,w]−5を実行する。なお、もしここで、DC[p,q]が0以下になるようなら、DC[v,w]=1とする。
【0056】
そして、地図作成部12は、衝突データ記憶部25から、ステップS305で取得した衝突データを削除し(ステップS307)、ステップS304に戻る。以上の衝突センサ地図更新処理によって、衝突センサ地図は更新され、ステップS301の減衰処理によって、障害物のゴーストが残るのを防ぐ。また、格子点の値の更新量Δcの値自体も増減されることによって、障害物が存在する可能性の高い格子点では減衰速度を遅くし、障害物が存在する可能性の低い格子点では減衰速度を速くしている。これによって、移動しない障害物に再度衝突してしまう頻度を下げるとともに、移動する障害物に対しての追随速度を速める効果を得ている。
【0057】
次に、地図作成モジュール52で作成された地図を用いて目的地までの経路を設定する経路設定モジュール53の処理内容について、図9を参照して説明する。
【0058】
まず、制御部10は、自律移動装置100が動作を終了するか否かを判定する(ステップS401)。動作を終了するなら(ステップ401;Yes)、処理を終了する。動作を終了しないなら(ステップS401;No)、経路設定部14は、目的地が設定されたか否かを判定する(ステップS402)。目的地は、自律移動装置100のユーザが通信部44を介して設定することもあるし、自律移動装置100が必要に応じて(例えば、バッテリー残量が所定量(例えば10%)を下回った場合に、充電ステーションを目的地に設定する等)自律的に設定することもある。
【0059】
目的地が設定されていないなら(ステップS402;No)、ステップS401に戻る。目的地が設定されているなら(ステップS402;Yes)、経路設定部14は、地図作成部12が作成した、その時点で最新の環境地図を取得する(ステップS403)。この環境地図は、測域センサ地図と衝突センサ地図とを統合した環境地図(2次元配列変数MI[i,j]で表される地図)である。次に、経路設定部14は、位置姿勢推定部11が推定した現在の自己位置及び姿勢を取得する(ステップS404)。そして、経路設定部14は、取得した環境地図並びに自己位置及び姿勢と設定された目的地とに基づき、現在位置から目的地までの経路を設定する(ステップS405)。ステップS405は、経路設定ステップとも呼ばれる。
【0060】
そして、経路設定部14は、経路が設定できたか否か(経路が存在するか否か)を判定する(ステップS406)。経路が存在しないなら(ステップS406;No)、ユーザにその旨を通知する等のエラー処理を行い(ステップS408)、ステップS401に戻る。経路が存在するなら(ステップS406;Yes)、経路設定部14は、設定した経路を移動制御モジュール54に通知し(ステップS407)、ステップS401に戻る。
【0061】
以上の経路設定モジュール53の処理により、目的地までの経路が得られる。次に、この経路を用いて目的地まで移動制御を行う移動制御モジュール54の処理内容について、図10を参照して説明する。
【0062】
まず、制御部10は、自律移動装置100が動作を終了するか否かを判定する(ステップS501)。動作を終了するなら(ステップS501;Yes)、処理を終了する。動作を終了しないなら(ステップS501;No)、移動制御部15は、経路設定モジュール53により経路が設定されたか否か(経路設定モジュール53が設定した経路が通知されたか否か)を判定する(ステップS502)。経路が通知されていないなら(ステップS502;No)、経路がまだ設定されていないということなので、ステップS501に戻る。
【0063】
経路が通知されたなら(ステップS502;Yes)、経路が設定されたということなので、移動制御部15は、経路設定モジュール53が設定したその経路を取得する(ステップS503)。次に、移動制御部15は、位置姿勢推定部11が推定した現在の自己位置及び姿勢を取得する(ステップS504)。そして、移動制御部15は、自機が目的地に到着したか否かを判定する(ステップS505)。なお、経路の情報には、目的地の情報も含まれるため、移動制御部15は、現在の位置が経路に含まれる目的地と一致するか否かを判定することにより、目的地に到着したか否かを判定することができる。
【0064】
目的地に到着したなら(ステップS505;Yes)、ステップS501に戻る。目的地に到着していないなら(ステップS505;No)、移動制御部15は、地図作成部12が作成した、その時点で最新の環境地図を取得する(ステップS506)。この環境地図は、測域センサ地図と衝突センサ地図とを統合した環境地図(2次元配列変数MI[i,j]で表される地図)である。そして、移動制御部15は、取得した環境地図及び経路に基づき、経路に沿って移動可能か否かを判定する(ステップS507)。
【0065】
経路に沿って移動が可能でないなら(ステップS507;No)、移動制御部15は、駆動部42を制御して移動を停止させ(ステップS509)、経路設定モジュール53にエラーを通知し(ステップS510)、ステップS501に戻る。経路に沿って移動可能なら(ステップS507;Yes)、経路に沿って移動するように駆動部42を制御し(ステップS508)、ステップS504に戻る。
【0066】
以上の移動制御モジュール54の処理により、自律移動装置100は、目的地まで移動することができる。そして、以上説明したように、障害消去部13は、衝突センサ地図における障害物の存在確率を時間経過に応じて低下させる。また、障害消去部13は、この存在確率を低下させる速度を衝突センサ地図の格子点毎に異なる値に設定可能にしているので、物体の性質に応じてその存在確率を効率的に低下させることができる。このため、過去に障害物に衝突した場所でも、ある程度時間が経過した後は、経路設定モジュール53は、その場所を回避しない経路を設定することができ、自律移動装置100は、本来必要のない障害物回避動作をすることを防ぐことができ、効率的に移動できるようになる。
【0067】
(変形例1)
実施形態1に係る衝突センサ地図の各格子点の値の更新量の増減は、自律移動装置100の移動経路上の位置及び衝突した位置にそれぞれ対応する格子点についてしか行うことができない。測域センサ更新処理でもこの更新量の増減を行うことによって、更新量の調整頻度を向上させることができる変形例1について説明する。
【0068】
変形例1は、実施形態1と比較すると、図7を参照して説明した測域センサ地図更新処理のみが異なる。そこで、変形例1に係る測域センサ地図更新処理について、図11を参照して説明する。また、図11中、ステップS201からステップS205までの処理は、図7と同じであるため、説明を省略する。
【0069】
変形例1に係る測域センサ地図更新処理では、ステップS204の後で、障害消去部13は、測域センサ43で検出された障害物の位置に対応する衝突センサ地図の格子点の値の更新量Δcの値を基準障害調整値(例えば5)だけ減少させる(ステップS211)。具体的には、測域センサ43で検出された障害物の座標を[m,n]とすると、DC[m,n]=DC[m,n]−5を実行する。ただし、この時、DC[m,n]が0以下になるようなら、DC[m,n]=0とする。この場合、[m,n]の場所は壁のように動かない障害物である可能性が高いことと、測域センサ43で検出可能な障害物は、その存否を頻繁に確認できるため、該障害物が移動したり除去されたりしたら、(該障害物に衝突しなくても)すぐにΔcに反映できるためである。
【0070】
次に、障害消去部13は、測域センサ43の観測(スキャン)範囲内で障害物が検出されなかった位置に対応する衝突センサ地図の格子点の値の更新量Δcの値を基準非障害調整値(例えば5)だけ増加させる(ステップS212)。具体的には、測域センサ43で検出された障害物の座標を[m,n]とすると、該障害物が検出された方向については[m,n]の手前の全ての[i,j]、該障害物が検出されなかった方向については測域センサ43の観測範囲内の全ての[i,j]に対して、DC[i,j]=DC[i,j]+5を実行する。ただし、この時、DC[i,j]がLmaxを超えるようなら、DC[i,j]=Lmaxとする。
【0071】
そして、ステップS205に進む。これ以降は、実施形態1に係る測域センサ地図更新処理と同じである。以上説明した変形例1では、衝突センサ地図の格子点の値の更新量Δcを、測域センサ43による障害物の検出状況を用いて増減させることができる。このため、衝突センサ地図の更新時に、移動しない障害物は衝突センサ地図から消去されなくなり、移動する障害物は衝突センサ地図から消去される速度をより一層早めることができる。したがって、変形例1に係る自律移動装置100は、障害物の移動を短時間で環境地図に反映させることができるので、より効率的に移動できるようになる。
【0072】
(変形例2)
変形例1のステップS211の処理において、障害消去部13は、測域センサ43で検出された障害物の位置に対応する衝突センサ地図の格子点の値の更新量Δcの値を初期値(例えば10)にリセットしても良い。具体的には、測域センサ43で検出された障害物の座標を[m,n]とすると、DC[m,n]=10を実行する。今まで障害物の無かった場所に急に障害物が出現すると、その場所に対応する更新量Δcの値が非常に大きくなっている場合がある。その場合、衝突センサ地図更新処理によって、衝突センサ地図の減衰が行われると、衝突センサ地図からすぐにその障害物の情報が消去されてしまうおそれがある。しかし、上記のようにステップS211の処理で更新量Δcの値を初期値にすれば、この問題はなくなる。したがって、変形例2に係る自律移動装置100は、急に出現した障害物に対しても、回避する経路を設定できるため、より効率的に移動できるようになる。
【0073】
(変形例3)
さらに、上記変形例1と変形例2の処理を組み合わせることもできる。例えば、Δcをリセットするか否かを判定するリセット基準値(例えば100)を設定しておく。そして、ステップS211において、障害消去部13は、測域センサ43で検出された障害物の位置に対応する衝突センサ地図の格子点の値の更新量Δcの値が、リセット基準値を超えていたら初期値(例えば10)にリセットし、リセット基準値以下なら基準障害調整値だけ減少させる処理を行っても良い。このようにすると、変形例3に係る自律移動装置100は、障害物の移動や急な出現に対しても適切に環境地図に反映させることができるので、より効率的に移動できるようになる。
【0074】
(実施形態2)
障害物に近接することによって当該障害物を検出するセンサとしては、衝突センサだけでなく、クリフセンサも挙げることができる。クリフセンサとは、周囲に床面が存在するか否かを検出することによって、床面が存在しない場所であるクリフ(穴、崖等)を検出するセンサである。自律移動装置は、クリフセンサを備えることで、例えばテーブル等の台の上から落下することを防止することができる。自律移動装置がクリフセンサを備えた実施形態2について説明する。
【0075】
実施形態2に係る自律移動装置101は、図12に示すように、実施形態1に係る自律移動装置100の記憶部20にクリフデータ記憶部27が追加され、障害検出部30にクリフセンサ32が追加された構成である。また、地図記憶部23には、クリフセンサ32からのデータを用いて作成したクリフセンサ地図も記憶され、更新量記憶部24には、クリフセンサ地図の各格子点の値の更新量Δgも記憶される。更新量Δgは、クリフセンサ地図から、クリフの情報を消去する速度(消去速度)と考えることができる。なお、以下では、クリフセンサ地図を2次元配列変数MC[i,j]、測域センサ地図と衝突センサ地図とクリフセンサ地図とを統合した環境地図を2次元配列変数MI[i,j]、クリフセンサ地図用の更新量を2次元配列変数DG[i,j]で、それぞれ表すものとする。
【0076】
クリフデータ記憶部27には、クリフセンサ32がクリフを検出した時の自律移動装置101の自己位置及び向きと、該クリフを検出したクリフセンサ32の自律移動装置101における位置と、に基づいて得られる、クリフ(穴、崖等)の位置を示すデータ(クリフデータ)が記憶される。
【0077】
クリフセンサ32は、周囲に床面が存在するか否かを検出することによって、床面が存在しない場所であるクリフ(穴、崖等)を検出するセンサである。クリフセンサ32の個数は任意であるが、図13に示すように、自律移動装置101は、クリフセンサ32を自律移動装置の真正面の位置に1つ備える。クリフセンサ32がクリフを検出すると、クリフセンサ32はクリフを検出したことを制御部10に通知する。すると制御部10は、その時点における自律移動装置101の自己位置及び向きと、クリフを検出したクリフセンサ32の自律移動装置101における位置と、に基づき、クリフの位置を示すクリフデータをクリフデータ記憶部27に登録する。
【0078】
自律移動装置101の制御部10が実行するソフトウェアモジュールの全体構成は、図14に示すように、図4を参照して説明した自律移動装置100のソフトウェアモジュールの全体構成に、クリフセンサ32が追加された構成になっている。自律移動装置101の地図作成モジュール52は、クリフセンサ32から得られるクリフデータも用いて環境地図を作成する。この点以外は、自律移動装置100と同じである。
【0079】
自律移動装置101の地図作成モジュール52の処理内容について、図15を参照して説明する。この処理は、図6を参照して説明した自律移動装置100の地図作成モジュール52の処理内容と一部を除き共通なので、異なる点を中心に説明する。
【0080】
ステップS101からステップS103までの処理は、図6の処理と同じである。ステップS103の次に、障害消去部13は、更新量記憶部24に記憶されているクリフセンサ地図用の更新量Δgを初期化する(ステップS111)。この時の初期値は任意であるが例えば10とする。具体的な処理としては、0≦i≦xsize,0≦j≦ysizeの全てのi及びjについて、DG[i,j]=10を実行する。
【0081】
その後の、ステップS104からステップS107までの処理は、図6の処理と同じである。ステップS107の次に、地図作成部12は、クリフセンサ地図更新処理を行う(ステップS112)。クリフセンサ地図更新処理の詳細については、後述する。その後、地図作成部12は、測域センサ地図と衝突センサ地図とクリフセンサ地図とを統合した環境地図を作成し(ステップS113)、ステップS104に戻る。
【0082】
測域センサ地図と衝突センサ地図とクリフセンサ地図とを統合した環境地図は、測域センサ地図、衝突センサ地図及びクリフセンサ地図のどれか1つにしか記録されていない情報でも自律移動装置101が認識できるようにするための地図である。具体的には、0≦i≦xsize,0≦j≦ysizeの全てのi及びjについて、以下の処理を行う。
(1)もし、MA[i,j]<0かつMB[i,j]<0かつMC[i,j]<0ならMI[i,j]=min(MA[i,j],MB[i,j],MC[i,j])
(2)もし、MA[i,j]≧0又はMB[i,j]≧0又はMC[i,j]≧0ならMI[i,j]=max(MA[i,j],MB[i,j],MC[i,j])
【0083】
次に、図15のステップS112で行われるクリフセンサ地図更新処理について、図16を参照して説明する。まず、障害消去部13は、クリフセンサ地図の各格子点の値を減衰させる(ステップS601)。具体的には、全てのi及びjに対して、以下の処理を行う。
(1)もしMC[i,j]>0ならMC[i,j]=MC[i,j]−DG[i,j]
(2)もしMC[i,j]<0ならMC[i,j]=MC[i,j]+DG[i,j]
【0084】
そして、地図作成部12は、図15のステップS105で取得した自己位置に対応するクリフセンサ地図の格子点の値を最小値Lminに設定する(ステップS602)。具体的には、自己位置の座標を[p,q]とすると、MC[p,q]=Lminを実行する。そして、障害消去部13は、自己位置に対応するクリフセンサ地図の格子点の値の更新量Δgを基準非障害調整値(例えば5)だけ増加させる(ステップS603)。具体的には、自己位置の座標を[p,q]とすると、DG[p,q]=DG[p,q]+5を実行する。なお、もしここで、DG[p,q]がLmaxを超えるようなら、DG[p,q]=Lmaxとする。
【0085】
次に、地図作成部12は、クリフデータ記憶部27に新たに登録されたクリフデータが存在するか否かを判定する(ステップS604)。クリフデータ記憶部27に新たに登録されたクリフデータが存在しないなら(ステップS604;No)、クリフセンサ地図更新処理を終了する。
【0086】
クリフデータ記憶部27に新たに登録されたクリフデータが存在するなら(ステップS604;Yes)、地図作成部12は、クリフデータ記憶部27から該クリフデータ(検出されたクリフの存在する位置を示す座標)を取得して、クリフセンサ地図の検出されたクリフの存在する格子点の値を最大値Lmaxに設定する(ステップS605)。具体的には、衝突した障害物の座標を[v,w]とすると、MC[v,w]=Lmaxを実行する。そして、障害消去部13は、検出されたクリフの存在する格子点の値の更新量Δgを基準障害調整値(例えば5)だけ減少させる(ステップS606)。具体的には、衝突した障害物の座標を[v,w]とすると、DG[v,w]=DG[v,w]−5を実行する。なお、もしここで、DG[p,q]が0以下になるようなら、DG[v,w]=1とする。
【0087】
そして、地図作成部12は、クリフデータ記憶部27から、ステップS605で取得したクリフデータを削除し(ステップS607)、ステップS604に戻る。以上のクリフセンサ地図更新処理によって、クリフセンサ地図は更新され、ステップS601の減衰処理によって、クリフのゴーストが残るのを防ぐ。また、格子点の値の更新量Δgの値自体も増減されることによって、クリフが存在する可能性の高い格子点では減衰速度を遅くし、クリフが存在する可能性の低い格子点では減衰速度を速くしている。これによって、変化しないクリフ(例えばテーブルや台の縁等)に再度接近してしまう頻度を下げるとともに、変化するクリフ(例えばマンホールのような蓋が開閉する穴)に対しての追随速度を速める効果を得ている。したがって、実施形態2に係る自律移動装置101は、クリフの出現や消失に対しても適切に環境地図に反映できるので、効率的に移動できるようになる。
【0088】
(変形例4)
実施形態2に係る自律移動装置101は、障害検出部30が衝突センサ31とクリフセンサ32を含んでいるが、障害検出部30は、これらに限らず、なんらかの障害物を、近接することによって検出できるセンサであれば、任意のセンサXを含むことができる。そして、その場合、地図作成部12は、地図記憶部23にセンサXからのデータを用いて作成したセンサX地図も記録し、備えているセンサ毎の環境地図を全て統合した環境地図を作成する。また、更新量記憶部24には、センサX地図の各格子点の値の更新量Δxも記憶される。センサXとしては、例えば悪路を検出する床面センサ、床の濡れている部分や水たまりを検出する水分センサ等が考えられる。障害検出部30が備えるセンサの種類を増やすことによって、自律移動装置は様々な環境により柔軟に対応した環境地図を作成でき、効率的に移動できるようになる。
【0089】
(実施形態3)
上述の各実施形態では、障害検出部30は衝突センサ31、クリフセンサ32等の、障害物に近接することによって障害物を検出するセンサ(近接障害検出部)を備える。そして、障害検出部30が検出した障害物については、確実に存在するものとして、衝突センサ地図のその位置の格子点の値を最大値Lmaxに設定する。しかし、障害検出部30は、近接せずに遠方から障害物を検出できるセンサ(遠方障害検出部、例えば測域センサ43)を備えても良い。この場合、障害検出部30が検出した障害物については(測域センサ43によって検出された障害物だけでなく、衝突センサ31等の障害物に近接することによって障害物を検出するセンサによって検出された障害物についても)、その障害物のその位置における存在確率を更新するようにしても良い。具体的には、衝突センサ地図のその位置(衝突した障害物の位置)の格子点の値を最大値Lmaxを設定するのではなく、その位置の格子点の値に更新量Δrを加算する処理を行っても良い。このようにすることによって、衝突センサ地図も測域センサ地図も同様の考え方で更新及び減衰させる実施形態3について説明する。
【0090】
実施形態3に係る自律移動装置102は、図17に示すように、実施形態1に係る自律移動装置100の障害検出部30に、衝突センサ31だけでなく、測域センサ43も備える構成である。地図記憶部23は、測域センサ地図(MA[i,j])、衝突センサ地図(MB[i,j])、両センサ地図を統合した環境地図(MI[i,j])を記憶する。更新量記憶部24は、衝突センサ地図用の更新量と測域センサ地図用の更新量を記憶する。衝突センサ地図用の更新量としては、全ての格子点に共通な値Δcoと、格子点[i,j]に対する更新量(減衰量)の値DCT[i,j]がある。測域センサ地図用の更新量としては、全ての格子点に共通な値Δroと、格子点[i,j]に対する更新量(減衰量)の値DRT[i,j]がある。ここで、xsizeを環境地図のX方向の最大の格子点の座標、ysizeを環境地図のY方向の最大の格子点の座標とすると、0≦i≦xsize,0≦j≦ysizeである。
【0091】
更新量Δcoは、衝突センサ地図の自己位置(自機が存在する場所なので、障害物は存在しない)の格子点の値から減算する値であり、また、衝突センサ31が障害物を検出したときにその障害物の位置の格子点の値に加算する値である。更新量DCT[i,j]は、衝突センサ地図を減衰させる時に用いる各格子点の値の減衰量である。これらの値は全て正の数であり、例えば10を設定することができる。また、DCT[i,j]の値が大きくなりすぎると、衝突センサ地図から障害物の情報を消去する速度が速くなりすぎてしまうので、最大値DCmaxを設定しておき、DCT[i,j]の値がDCmax以上になった場合には、DCT[i,j]=DCmaxとするのが望ましい。DCmaxの値は、障害物の消去に要する時間と地図の減衰周期とによって適切な値が異なる(障害物の消去に要する時間を地図の減衰周期で割った値で、Lmaxを割った値になる)が、例えば障害物を消去させる時間を最短でも60秒以上にしたい場合で、減衰処理の周期が5秒ならば、DCmax=Lmax/12となる。
【0092】
更新量Δroは、測域センサ地図で、測域センサ43により障害物が検出されなかった位置の格子点の値から減算する値であり、また、測域センサ43が障害物を検出したときにその障害物の位置の格子点の値に加算する値である。更新量DRT[i,j]は、測域センサ地図を減衰させる時に用いる各格子点の値の減衰量である。これらの値も全て正の数であり、例えば5を設定することができる。また、DRT[i,j]の値が大きくなりすぎると、測域センサ地図から障害物の情報を消去する速度が速くなりすぎてしまうので、最大値DRmaxを設定しておき、DRT[i,j]の値がDRmax以上になった場合には、DRT[i,j]=DRmaxとするのが望ましい。DRmaxの値は、障害物の消去に要する時間と地図の減衰周期とによって適切な値が異なる(障害物の消去に要する時間を地図の減衰周期で割った値で、Lmaxを割った値になる)が、例えば障害物を消去させる時間を最短でも60秒以上にしたい場合で、減衰処理の周期が5秒ならば、DRmax=Lmax/12となる。
【0093】
自律移動装置102の制御部10が実行するソフトウェアモジュールの全体構成は、図18に示すように、図4を参照して説明した自律移動装置100のソフトウェアモジュールの全体構成から経路設定モジュール53が削除された構成になっている。実際には、後述する移動制御モジュール54のフローチャートからわかるように、自律移動装置100の経路設定モジュール53と移動制御モジュール54を合わせたものが、自律移動装置102の移動制御モジュール54になっている。上述の各実施形態では、各ソフトウェアモジュールがそれぞれ別スレッドで実行されるものとして説明した。しかし、これらの一部又は全部が同一のスレッドで実行されても良いことを示すために、実施形態3では、経路設定モジュール53と移動制御モジュール54とが同一のスレッド(自律移動装置102の移動制御モジュール54)で実行される例を説明する。
【0094】
自律移動装置102の移動制御モジュール54の処理内容について、図19を参照して説明する。
【0095】
まず、制御部10は、自律移動装置102が動作を終了するか否かを判定する(ステップS701)。動作を終了するなら(ステップS701;Yes)、処理を終了する。動作を終了しないなら(ステップS701;No)、経路設定部14は、目的地が設定されたか否かを判定する(ステップS702)。目的地は、自律移動装置102のユーザが通信部44を介して設定することもあるし、自律移動装置102が必要に応じて(例えば、バッテリー残量が所定量(例えば10%)を下回った場合に、充電ステーションを目的地に設定する等)自律的に設定することもある。
【0096】
目的地が設定されていないなら(ステップS702;No)、ステップS701に戻る。目的地が設定されているなら(ステップS702;Yes)、経路設定部14は、位置姿勢推定部11が推定した現在の自己位置及び姿勢を取得する(ステップS703)。次に、経路設定部14は、後述する地図作成モジュール52の処理により作成された、その時点で最新の環境地図を取得する(ステップS704)。この環境地図は、測域センサ地図と衝突センサ地図とを統合した環境地図(2次元配列変数MI[i,j]で表される地図)である。そして、経路設定部14は、取得した環境地図並びに自己位置及び姿勢と設定された目的地とに基づき、現在位置から目的地までの経路を設定する(ステップS705)。ステップS705は、経路設定ステップとも呼ばれる。
【0097】
そして、経路設定部14は、経路が設定できたか否か(経路が存在するか否か)を判定する(ステップS706)。経路が存在しないなら(ステップS706;No)、移動制御部15は、駆動部42を制御して移動を停止させ(ステップS707)、経路が存在しない旨を例えば通信部44を介してユーザに通知する等のエラー処理を行い(ステップS708)、ステップS701に戻る。
【0098】
経路が存在する(設定できた)なら(ステップS706;Yes)、移動制御部15は、自機が目的地に到着したか否かを判定する(ステップS709)。なお、ステップS705で設定された経路の情報には、目的地の情報も含まれるため、移動制御部15は、自己位置が経路の情報に含まれる目的地と一致するか否かを判定することにより、目的地に到着したか否かを判定することができる。
【0099】
目的地に到着したなら(ステップS709;Yes)、目的地に到着したことをユーザに通知し(ステップS710)、ステップS701に戻る。目的地に到着していないなら(ステップS709;No)、移動制御部15は、経路に沿って移動可能か否かを判定する(ステップS711)。移動可能でなければ(ステップS711;No)、ステップS707へ進んでエラー処理を行う。移動可能なら(ステップS711;Yes)、経路に沿って移動するように駆動部42を制御する(ステップS712)。
【0100】
そして、移動制御部15は、位置姿勢推定部11が推定した現在の自己位置及び姿勢を取得する(ステップS713)。次に、移動制御部15は、後述する地図作成モジュール52の処理により作成された、その時点で最新の環境地図を取得する(ステップS714)。そして、移動制御部15は、取得した環境地図が、それまでの環境地図から更新されているか否かを判定する(ステップS715)。更新されているなら(ステップS715;Yes)、ステップS705に戻って経路を設定し直す。更新されていなければ(ステップS715;No)、ステップS709に戻る。
【0101】
以上の移動制御モジュール54の処理により、自律移動装置102は、目的地まで移動することができる。
【0102】
次に、自律移動装置102の地図作成モジュール52の処理内容について、図20を参照して説明する。この処理は図6を参照して説明した、自律移動装置100の地図作成モジュール52の処理内容のうち、ステップS103の処理を、ステップS121及びステップS122に置き換えた処理になっており、また、ステップS106の測域センサ地図更新及びステップS107の衝突センサ地図更新の各処理の内容も、自律移動装置100の処理とは異なる。そこで、ステップS121及びステップS122の処理内容を説明し、その後、自律移動装置102の測域センサ地図更新及び衝突センサ地図更新の各処理の内容の説明を行う。
【0103】
まず、ステップS121では、障害消去部13は、更新量記憶部24に記憶されている測域センサ地図用の更新量(減衰量)であるDRT[i,j]を初期化する。この初期化時の初期値は任意であるが、例えば5とすることができる。具体的な処理としては、0≦i≦xsize,0≦j≦ysizeの全てのi及びjについて、DRT[i,j]=5を実行する。
【0104】
次に、ステップS122では、障害消去部13は、更新量記憶部24に記憶されている衝突センサ地図用の更新量(減衰量)であるDCT[i,j]を初期化する。この初期化時の初期値は任意であるが、例えば10とすることができる。具体的な処理としては、0≦i≦xsize,0≦j≦ysizeの全てのi及びjについて、DCT[i,j]=10を実行する。
【0105】
次に、地図作成モジュール52の処理(図20)のステップS106で行われる測域センサ地図更新処理について、図21を参照して説明する。
【0106】
現在の自機の位置(自己位置)の座標を[p,q]で表すとすると、まず、障害消去部13は、自己位置に対応する測域センサ地図の格子点の更新量(減衰量)であるDRT[p,q]を測域センサ地図用の基準非障害調整値(例えば3)だけ増加させる(ステップS221)。つまり、測域センサ地図用の基準非障害調整値を3とすると、DRT[p,q]=DRT[p,q]+3を実行する。ただし、DRT[p,q]の値がDRTの最大値DRmaxより大きくなる場合には、DRT[p,q]=DRmaxとする。
【0107】
次に、地図作成部12は、測距データ記憶部26に新たに登録された測距データが存在するか否かを判定する(ステップS222)。測距データ記憶部26に新たに登録された測距データが存在するなら(ステップS222;Yes)、地図作成部12は、測距データ記憶部26から該測距データを取得し、図20のステップS105で取得した自己位置及び姿勢を用いて、該測距データを測域センサ地図における座標に変換する(ステップS223)。この座標は、測域センサ地図上において、測域センサ43によって障害物が検出された格子点(領域)を示しており、このステップにおいて、地図作成部12は、障害物の位置を遠方から取得する障害位置取得部として機能する。ここでは、例えば、測域センサ地図における[m,n]の座標に障害物が検出されたこととする。
【0108】
そして、地図作成部12は、測域センサ地図において、障害物が検出された格子点の値に更新量Δroを加算する(ステップS224)。具体的には、MA[m,n]=MA[m,n]+Δroを実行する。ただし、この時、MA[m,n]が最大値Lmaxを超える場合には、MA[m,n]=Lmaxとする。
【0109】
次に、地図作成部12は、測域センサ地図において、測域センサ43の観測(スキャン)範囲内で障害物が検出されなかった格子点の値から更新量Δroを減算する(ステップS225)。具体的には、障害物が検出された方向については[m,n]の手前の全ての[i,j]、障害物が検出されなかった方向については測域センサ43の観測範囲内の全ての[i,j]に対して、MA[i,j]=MA[i,j]−Δroを実行する。ただし、この時、MA[i,j]が最小値Lminを下回る場合には、MA[i,j]=Lminとする。
【0110】
そして、障害消去部13は、障害物が検出された格子点に対応する測域センサ地図の更新量(減衰量)DRT[m,n]の値を測域センサ地図用の基準障害調整値(例えば3)だけ減少させ、障害物が検出されなかった格子点に対応する測域センサ地図の更新量(減衰量)DRT[i,j]の値を測域センサ地図用の基準非障害調整値(例えば3)だけ増加させる(ステップS226)。なお、もしここで、DRT[m,n]が0以下になるようなら、DRT[m,n]=1とする。また、DRT[i,j]がDRmax以上になるようなら、DRT[i,j]=DRmaxとする。
【0111】
次に、障害消去部13は、障害物が検出された格子点に対応する衝突センサ地図の更新量(減衰量)DCT[m,n]の値を基準障害調整値(例えば5)だけ減少させ、障害物が検出されなかった格子点に対応する衝突センサ地図の更新量(減衰量)DCT[i,j]の値を基準非障害調整値(例えば5)だけ増加させる(ステップS227)。なお、もしここで、DCT[m,n]が0以下になるようなら、DCT[m,n]=1とする。また、DCT[i,j]がDCmax以上になるようなら、DCT[i,j]=DRmaxとする。
【0112】
そして、地図作成部12は、測距データ記憶部26から、ステップS223で取得した測距データを削除し(ステップS228)、ステップS222に戻る。
【0113】
一方、ステップS222において、測距データ記憶部26に新たに登録された測距データが存在しないなら(ステップS222;No)、障害消去部13は、前回測域センサ地図に対して減衰処理をしてから一定時間(減衰処理の周期であり、例えば5秒)が経過したか否かを判定する(ステップS229)。一定時間が経過していないなら(ステップS229;No)、測域センサ地図更新処理を終了する。一定時間が経過しているなら(ステップS229;Yes)、障害消去部13が測域センサ地図を減衰して(ステップS230)から、測域センサ地図更新処理を終了する。
【0114】
ステップS230は障害消去ステップとも呼ばれる。このステップでは、具体的には、障害消去部13は、測域センサ地図の全ての格子点、つまり、0≦i≦xsize,0≦j≦ysizeの全てのi及びjに対して、以下の処理を行う。(ただし、以下の処理のうち必須なのは(1)の処理であり、(2)の処理は行わなくても良い。)
(1)もしMA[i,j]>0ならMA[i,j]=MA[i,j]−DRT[i,j]
(2)もしMA[i,j]<0ならMA[i,j]=MA[i,j]+DRT[i,j]
【0115】
以上の測域センサ地図更新処理によって、測域センサ地図は更新され、測域センサ地図の各格子点の値により、障害物の存在確率が表されることになる。
【0116】
次に、地図作成モジュール52の処理(図20)のステップS107で行われる衝突センサ地図更新処理について、図22を参照して説明する。
【0117】
現在の自機の位置(自己位置)の座標を[p,q]で表すとすると、まず、障害消去部13は、自己位置に対応する衝突センサ地図の格子点の更新量(減衰量)であるDCT[p,q]を基準非障害調整値(例えば5)だけ増加させる(ステップS321)。つまり、基準非障害調整値を5とすると、DCT[p,q]=DCT[p,q]+5を実行する。ただし、DCT[p,q]の値がDRTの最大値DCmaxより大きくなる場合には、DCT[p,q]=DCmaxとする。
【0118】
次に、障害消去部13は、自己位置に対応する衝突センサ地図の格子点の値から更新量Δcoを減算する(ステップS322)。具体的には、MB[p,q]=MB[p,q]−Δcoを実行する。ただし、この時、MB[p,q]が最小値Lminを下回る場合には、MB[p,q]=Lminとする。
【0119】
そして、地図作成部12は、衝突データ記憶部25に新たに登録された衝突データが存在するか否かを判定する(ステップS323)。衝突データ記憶部25に新たに登録された衝突データが存在するなら(ステップS323;Yes)、地図作成部12は、衝突データ記憶部25から該衝突データを取得し、図20のステップS105で取得した自己位置及び姿勢を用いて、該衝突データを衝突センサ地図における座標に変換する(ステップS324)。この座標は、衝突センサ地図上において、衝突センサ31によって障害物が検出された格子点(領域)を示している。ここでは、例えば、衝突センサ地図における[m,n]の座標に障害物が検出されたこととする。
【0120】
そして、地図作成部12は、衝突センサ地図において、障害物が検出された格子点の値に更新量Δcoを加算する(ステップS325)。具体的には、MB[m,n]=MB[m,n]+Δcoを実行する。ただし、この時、MB[m,n]が最大値Lmaxを超える場合には、MB[m,n]=Lmaxとする。
【0121】
そして、障害消去部13は、障害物が検出された格子点に対応する衝突センサ地図の更新量(減衰量)DCT[m,n]の値を基準障害調整値(例えば5)だけ減少させる(ステップS326)。なお、もしここで、DCT[m,n]が0以下になるようなら、DCT[m,n]=1とする。
【0122】
そして、地図作成部12は、衝突データ記憶部25から、ステップS324で取得した衝突データを削除し(ステップS327)、ステップS323に戻る。
【0123】
一方、ステップS323において、衝突データ記憶部25に新たに登録された衝突データが存在しないなら(ステップS323;No)、障害消去部13は、前回衝突センサ地図に対して減衰処理をしてから一定時間(減衰処理の周期であり、例えば5秒)が経過したか否かを判定する(ステップS328)。一定時間が経過していないなら(ステップS328;No)、衝突センサ地図更新処理を終了する。一定時間が経過しているなら(ステップS328;Yes)、障害消去部13が衝突センサ地図を減衰して(ステップS329)から、測域センサ地図更新処理を終了する。
【0124】
ステップS329は障害消去ステップとも呼ばれる。このステップでは、具体的には、障害消去部13は、衝突センサ地図の全ての格子点、つまり、0≦i≦xsize,0≦j≦ysizeの全てのi及びjに対して、以下の処理を行う。(ただし、以下の処理のうち必須なのは(1)の処理であり、(2)の処理は行わなくても良い。)
(1)もしMB[i,j]>0ならMB[i,j]=MB[i,j]−DCT[i,j]
(2)もしMB[i,j]<0ならMB[i,j]=MB[i,j]+DCT[i,j]
【0125】
以上の衝突センサ地図更新処理によって、衝突センサ地図は更新され、衝突センサ地図の各格子点の値により、障害物の存在確率が表されることになる。
【0126】
以上の各処理によって、自律移動装置102では、障害消去部13は、衝突センサ地図における障害物存在確率を時間経過に応じて低下させるだけでなく、測域センサ地図における障害物存在確率も時間経過に応じて低下させる。そして、障害消去部13は、この存在確率を低下させる速度を、衝突センサ地図及び測域センサ地図の格子点毎に異なる値に設定可能にしているので、物体の性質に応じてその存在確率を効率的に低下させることができる。
【0127】
例えば、自己位置には障害物は存在しないことは自明なので、自己位置の格子点の値の更新量(減衰量)を増加させることによって、障害物の存在確率を低下させる速度を大きくしている。また、障害物を検出した場所に対応する格子点の値の更新量(減衰量)を減少させることによって、障害物を検出した直後は、その障害物の存在確率を低下させる速度を小さくしている。また、障害物が検出されなかった場所に対応する格子点の値の更新量(減衰量)を増加させることによって、検出されないにもかかわらず地図に残っている障害物の存在確率を低下させる速度を大きくしている。
【0128】
このような処理により、過去に衝突した障害物だけでなく、過去に測域センサ43で検出したが、その後、測域センサ43の観測(スキャン)範囲外になっている場所の障害物も、ある程度時間が経過すると、その障害物の情報は消去される。したがって、自律移動装置102は、過去にその障害物が存在した場所を回避しない経路を設定して、移動することができる。このため、自律移動装置102は、本来必要のない障害物回避動作をすることを防ぐことができ、効率的に移動できるようになる。
【0129】
また、自律移動装置102では、過去に障害物が存在した場所が、測域センサ43の観測範囲外になっている場合には、時間の経過により、その障害物の情報は地図から消去される。このため、その障害物があった場所も、一定時間経過後には障害物がないと判断されるため、目的地までの移動経路に含まれやすくなり、結果として、その場所を測域センサ43で観測できる可能性が高まる。
【0130】
なお、自律移動装置102は、障害検出部30として、衝突センサ31と測域センサ43とを備えているが、どちらか片方のみを使用しても良い。この場合、衝突センサ地図又は測域センサ地図をそのまま環境地図として用いることができる。
【0131】
また、障害消去部13は、衝突センサ地図における障害物存在確率を時間経過に応じて低下させる速度である衝突センサ地図減衰速度(基準障害調整値及び基準非障害調整値により調整)と、測域センサ地図における障害物存在確率を時間経過に応じて低下させる速度である測域センサ地図減衰速度(測域センサ地図用の基準障害調整値及び測域センサ地図用の基準非障害調整値により調整)とを異ならせることができる。衝突センサ31は測域センサ43に比べて非常に狭い範囲でしか障害物を検出できないため、一般的には、衝突センサ地図減衰速度の調整量を測域センサ地図減衰速度の調整量よりも大きくする方が良いと考えられる。この方が、衝突センサ地図における障害物に対しての追随速度を速めることができるからである。
【0132】
そのため、上述の実施形態3では、DCTの初期値をDRTの初期値よりも大きくし、衝突センサ地図用の基準非障害調整値を測域センサ地図用の基準非障害調整値よりも大きくし、衝突センサ地図用の基準障害調整値を測域センサ用の基準障害調整値よりも大きくしている。
【0133】
なお、上記各実施形態では、位置姿勢推定部11は、SLAM処理により自律移動装置100の自己位置及び姿勢を推定しているが、これに限られない。例えば、位置姿勢推定部11は、SLAM処理を行わずに、駆動部42から取得できるオドメトリの情報のみによって自己位置及び姿勢を推定しても良い。また、位置姿勢推定部11は、例えばGPS(Global Positioning System)衛星からの電波を取得し、GPSによって自己位置及び姿勢を推定しても良い。
【0134】
また、上記各実施形態では、測距データ記憶部26には、測域センサ43が検出した物体までの距離を示す測距データが、該物体が検出された角度の情報とともに記憶されているが、これに限られない。例えば、測距データ記憶部26には、衝突データ記憶部25と同様に、測域センサ43で周囲を観測(スキャン)した時の自律移動装置の自己位置及び向きと、測域センサ43が取得した測距データ及び角度と、に基づいて得られる、測域センサ43で検出された物体(障害物)の位置を示すデータを記憶しても良い。このようにすると、測域センサ地図更新処理(図7図11図21)における、測距データを地図の座標に変換する処理(ステップS202、ステップS223)が不要となる。
【0135】
また、上記各実施形態では、各センサ地図を統合した環境地図を作成する際に、各センサ地図の各格子点の値の最大値を採用しているが、これに限られない。例えば、各センサ地図における障害物の存在確率の積を採用しても良い。例えば、図6又は図20のステップS108で、地図作成部12は、0≦i≦xsize,0≦j≦ysizeの全てのi及びjについて、以下の計算によって、測域センサ地図と衝突センサ地図を統合した環境地図を作成しても良い。
MI[i,j]=1−(1/(1+exp(k×MA[i,j]))×(1/(1+exp(k×MB[i,j]))
【0136】
また、実施形態1において、測域センサ43を備えず、衝突センサ31のみで障害物を検出するようにしても良い。この場合、測域センサ地図の作成及び更新も不要であり、この自律移動装置100は、衝突センサ地図のみを環境地図として用いることができる。
【0137】
また、上述する各実施形態において、測域センサ43を備えない代わりに、デプスカメラ又はソナーを備え、これらによって観測された障害物を測域センサ地図と同様の環境地図に記録するようにしても良い。
【0138】
また、上述する各実施形態において、測域センサ43を備えず、撮像部41が撮影した画像を用いたvisual SLAMによって障害物を検出するようにし、visual SLAMで検出された障害物を測域センサ地図と同様の環境地図に記録するようにしても良い。
【0139】
また、上述する各実施形態においては、ユーザにエラー等を通知するのは、例えば通信部44を介して行うこととしていたが、自律移動装置がディスプレイやスピーカー等の出力部を備えて、出力部によりユーザにエラー等を通知しても良い。また、上述する各実施形態においては、ユーザから目的地等の指示を受け付ける際には、例えば通信部44を介して行うこととしていたが、自律移動装置がタッチパネルやマイク等の入力部を備えて、入力部によりユーザからの指示を受け付けるようにしても良い。
【0140】
また、上述する実施形態1又は実施形態2の測域センサ地図更新処理(図7図11)において、ステップS201の直前に、測域センサ地図を減衰する処理(衝突センサ地図更新処理(図8)のステップS301に相当する処理)を行っても良い。具体的には、障害消去部13は、全てのi及びjに対して、以下の処理を行う。ただし、以下のΔs(測域センサ地図用の減衰量)は例えば1等、更新量Δrや更新量Δcよりも小さな値を予め設定しておく。
(1)もしMA[i,j]>0ならMA[i,j]=MA[i,j]−Δs
(2)もしMA[i,j]<0ならMA[i,j]=MA[i,j]+Δs
【0141】
なお、衝突センサ地図の減衰処理と同様に、測域センサ地図の格子点毎に、その格子点の値の減衰量Δsを(例えばDS[i,j]に)記憶して、各格子点で障害物が測域センサ43によって検出されたか否かに応じて、各格子点の値の減衰量Δsを増減させても良い。以上の処理により、実施形態3と同様に、測域センサ43の観測(スキャン)範囲外にある障害物のゴーストが残るのを防ぐことができる。
【0142】
なお、自律移動装置100,101,102の各機能は、通常のPC(Personal Computer)等のコンピュータによっても実施することができる。具体的には、上記実施形態では、自律移動装置100,101,102が行う自律移動制御処理のプログラムが、記憶部20のROMに予め記憶されているものとして説明した。しかし、プログラムを、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)及びMO(Magneto−Optical Disc)等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータに読み込んでインストールすることにより、上述の各機能を実現することができるコンピュータを構成しても良い。
【0143】
以上、本発明の好ましい実施形態について説明したが、本発明は係る特定の実施形態に限定されるものではなく、本発明には、特許請求の範囲に記載された発明とその均等の範囲が含まれる。以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【0144】
(付記1)
障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、
を備える自律移動装置。
【0145】
(付記2)
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部を含む、
付記1に記載の自律移動装置。
【0146】
(付記3)
前記地図作成部は、前記障害物の情報を前記障害物の位置毎に前記環境地図に記録する、
付記1又は2に記載の自律移動装置。
【0147】
(付記4)
前記障害消去部は、前記位置毎に、前記障害検出部が前記位置で前記障害物を検出した回数に応じて、前記障害物の情報を前記環境地図から消去する速度である消去速度を調整する、
付記3に記載の自律移動装置。
【0148】
(付記5)
前記障害消去部は、前記障害検出部が前記障害物を検出したら、前記障害物を検出した位置における前記消去速度を基準障害調整値だけ遅くする、
付記4に記載の自律移動装置。
【0149】
(付記6)
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部と、障害物を遠方から検出する遠方障害検出部と、を備え、
前記近接障害検出部が前記障害物を検出したときの前記基準障害調整値は、前記遠方障害検出部が前記障害物を検出したときの前記基準障害調整値よりも大きい、
付記5に記載の自律移動装置。
【0150】
(付記7)
前記障害消去部は、前記障害検出部が前記障害物を検出しなかったら、前記障害物を検出しなかった位置における前記消去速度を基準非障害調整値だけ速くする、
付記4から6のいずれか1つに記載の自律移動装置。
【0151】
(付記8)
前記障害検出部は、障害物に近接することによって当該障害物を検出する近接障害検出部と、障害物を遠方から検出する遠方障害検出部と、を備え、
前記近接障害検出部が前記障害物を検出しなかったときの前記基準非障害調整値は、前記遠方障害検出部が前記障害物を検出しなかったときの前記基準非障害調整値よりも大きい、
付記7に記載の自律移動装置。
【0152】
(付記9)
前記障害検出部は、前記障害物に衝突したことを検出することによって、障害物を検出する衝突センサを含む、
付記1から8のいずれか1つに記載の自律移動装置。
【0153】
(付記10)
前記障害検出部は、落下する場所であるクリフを検出することによって、障害物を検出するクリフセンサを含む、
付記1から9のいずれか1つに記載の自律移動装置。
【0154】
(付記11)
前記障害物の位置を遠方から取得する障害位置取得部をさらに備え、
前記地図作成部は、前記障害位置取得部が取得した前記障害物の位置の情報を前記環境地図に記録する、
付記1から10のいずれか1つに記載の自律移動装置。
【0155】
(付記12)
前記障害消去部は、前記障害検出部が検出した障害物の情報を前記環境地図から消去し、前記障害位置取得部が取得した位置に存在する障害物の情報を前記環境地図から消去しない、
付記11に記載の自律移動装置。
【0156】
(付記13)
前記障害消去部は、前記障害位置取得部が取得した位置に存在する障害物の情報も前記環境地図から消去し、前記障害検出部が検出した障害物の情報を前記環境地図から消去する速度は、前記障害位置取得部が取得した位置に存在する障害物の情報を前記環境地図から消去する速度より速い、
付記11に記載の自律移動装置。
【0157】
(付記14)
前記障害位置取得部は、前記障害物までの距離である測距データを取得する測域センサからの情報を用いて前記障害物の位置を取得する、
付記11から13のいずれか1つに記載の自律移動装置。
【0158】
(付記15)
前記障害位置取得部は、所定の方向毎に障害物の存否を確認し、障害物の存在を確認した場合には前記障害物までの距離である測距データを取得し、
前記地図作成部は、前記障害位置取得部が前記障害物の存否を確認した回数に対する前記測距データを取得した回数の割合を存在確率として前記環境地図に記録する、
付記11から14のいずれか1つに記載の自律移動装置。
【0159】
(付記16)
前記地図作成部は、前記障害物の位置に対応する前記環境地図上の位置における前記障害物の存在確率を算出し、前記存在確率を前記環境地図に記録する、
付記1から15のいずれか1つに記載の自律移動装置。
【0160】
(付記17)
前記地図作成部は、前記存在確率を対数オッズにより前記環境地図に記録する、
付記15又は16に記載の自律移動装置。
【0161】
(付記18)
障害物を検出する障害検出ステップと、
前記障害検出ステップで検出した障害物の情報を環境地図に記録する地図作成ステップと、
前記地図作成ステップで記録した障害物の情報を減衰させることにより前記環境地図から消去する障害消去ステップと、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップと、
を含む自律移動方法。
【0162】
(付記19)
コンピュータに、
障害物を検出する障害検出ステップ、
前記障害検出ステップで検出した障害物の情報を環境地図に記録する地図作成ステップ、
前記地図作成ステップで記録した障害物の情報を時間経過に応じて前記環境地図から消去する障害消去ステップ、及び、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップ、
を実行させるためのプログラム。
【0163】
(付記20)
障害物に近接することによって当該障害物を検出する障害検出部と、
前記障害検出部が検出した障害物の情報を環境地図に記録する地図作成部と、
前記地図作成部が記録した障害物の情報を前記環境地図から消去する障害消去部と、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定部と、
を備える自律移動装置。
【0164】
(付記21)
障害物に近接することによって当該障害物を検出する障害検出ステップと、
前記障害検出ステップで検出した障害物の情報を環境地図に記録する地図作成ステップ
と、
前記地図作成ステップで記録した障害物の情報を前記環境地図から消去する障害消去ス
テップと、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップと、
を含む自律移動方法。
【0165】
(付記22)
コンピュータに、
障害物に近接することによって当該障害物を検出する障害検出ステップ、
前記障害検出ステップで検出した障害物の情報を環境地図に記録する地図作成ステップ

前記地図作成ステップで記録した障害物の情報を前記環境地図から消去する障害消去ス
テップ、及び、
前記環境地図に記録された情報に基づいて移動経路を設定する経路設定ステップ、
を実行させるためのプログラム。
【符号の説明】
【0166】
10…制御部、11…位置姿勢推定部、12…地図作成部、13…障害消去部、14…経路設定部、15…移動制御部、20…記憶部、21…画像記憶部、22…特徴点記憶部、23…地図記憶部、24…更新量記憶部、25…衝突データ記憶部、26…測距データ記憶部、27…クリフデータ記憶部、30…障害検出部、31,31a,31b,31c…衝突センサ、32…クリフセンサ、41…撮像部、42,42a,42b…駆動部、43…測域センサ、44…通信部、51…位置姿勢推定モジュール、52…地図作成モジュール、53…経路設定モジュール、54…移動制御モジュール、70…障害物、100,101,102…自律移動装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22