(57)【特許請求の範囲】
【請求項１】
走行を制御する走行制御部と、
前記走行に伴って変化する位置を検出する位置検出部と、
周囲の光景を撮影する撮像部と、
撮影された画像から複数の特徴点を抽出する特徴点抽出部と、
走行領域内の複数の位置において前記撮像部が撮影した画像に係る特徴点とその撮影が行われた位置とが関連付けられて登録された位置情報を予め格納する位置情報データベース格納部と、
目標とすべき位置において前記撮像部が撮影した画像に係る特徴点を格納するクエリ格納部と、
前記クエリ格納部に格納された特徴点と前記位置情報データベース格納部に格納された各位置情報に含まれる特徴点との配置関係を照合し、対応する配置関係にある特徴点を最も多く含む位置情報に基づいて目標位置を決定する目標位置決定部と、
１以上の候補位置で撮影された画像に係る特徴点を、各候補位置を目標として選択する場合に用いる選択指示と関連付けてそれぞれ記憶する候補位置記憶部と、
目標へ走行すべき走行指示を受付ける指示受領部とを備え、
前記走行指示は、何れかの候補位置に係る前記選択指示を含み、
前記目標位置決定部は、前記走行指示に含まれる選択指示と前記候補位置記憶部に格納された選択指示とを照合し、対応する選択指示に関連付けられた特徴点を前記クエリ格納部に格納し、
前記走行制御部は、前記走行指示に応答して選択された目標への走行を開始し、前記位置検出部が検出する現在の位置と決定された目標位置とに基づいてその目標位置への走行を制御する自走式電子機器。
【請求項２】
前記撮像部は、走行中に逐次撮影を行い、
前記走行制御部は、走行中に前記撮像部が撮影した画像に係る特徴点と前記位置情報データベースとして格納された各位置の画像に係る特徴点とを照合して、前記位置検出部が検出する位置を補正する請求項１に記載の自走式電子機器。
【請求項３】
前記目標位置決定部は、前記クエリ格納部に格納された特徴点と、各位置情報に含まれる特徴点との間で、対応する配置関係にある特徴点の組み合わせがあるか否かを調べ、対応する配置関係にある特徴点の組み合わせが少なくとも１組存在する場合、その組み合わせに係る予め定められた数の特徴点を基準特徴点とし、少なくとも１つの基準特徴点とそれ以外の特徴点からなる特徴点の組み合わせについて特徴点の配置関係を調べ、対応する配置関係にある特徴点の組み合わせの対を最も多く含む位置情報に基づいて前記目標位置を決定する請求項１または２に記載の自走式電子機器。
【請求項４】
対応する配置関係は、前記クエリ格納部に格納された特徴点のうち３点と、各位置情報に含まれる特徴点のうち３点について、３点がなす三角形の全ての辺の長さが等しいか否かに基づいて判断され、
前記目標位置決定部は、配置関係が対応する一対の三角形の頂点をなすそれぞれ３つの特徴点を基準特徴点とし、各対の３つの基準特徴点のうち２つの基準特徴点と基準特徴点以外の１つの特徴点がなす三角形について、さらに配置関係が対応するものが何対あるかを調べて、対応する対を最も多く含む位置情報に基づいて前記目標位置を決定する請求項１〜３の何れか一つに記載の自走式電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、自走式電子機器に関し、より具体的には走行する領域内の複数の位置で周囲の光景を撮影して画像データベースを作成し、到達すべき目標位置で周囲の光景を撮影し、前記画像と照合して目標位置へ走行する自走式電子機器に関する。
【背景技術】
【０００２】
周囲の障害物等を検出するセンサーを備えて自律的に走行して作業を行う自走式電子機器が知られている。例えば、掃除機や空気清浄機や警備用の装置などがある。そして、そのセンサーの一つとして、あるいは他の目的で周囲の光景を撮影するカメラを有する自走式電子機器が知られている。
自走式電子機器は、作業領域の目的に沿って走行を制御するために走行に関して様々なモードを有する。一例としてある自走式掃除機の場合、走行の制御に関して、「自動運転モード」、「壁際モード」および「スポットモード」を有する。「自動運転モード」は不在時に宅内をくまなく掃除させる為のモードである。「壁際モード」は、自走式掃除機が壁に沿って進みながら掃除をするモードである。「壁際モード」を選択することで、壁際をきれいにできる。また、「スポットモード」では、ユーザーが指定した領域の周辺のみ掃除するためのモードである。領域を指定する単純な方法は、ユーザーがその領域に自走式掃除機を運んで持って行くというものである。
【０００３】
以上のような、状況に応じた走行の制御に関連する幾つかの技術が提案されている。例えば、複数の掃除領域の中から掃除する領域を選択して掃除させるため、自律走行用センサーの出力と記憶した地図情報から現在位置を特定し、現在位置を基に選択された掃除領域まで自律走行するロボットクリーナが提案されている（例えば、特許文献１参照）。また、直近に走行した回数が少ない領域を特定して走行経路を探索するサーバー装置と通信し、ユーザーに指定された領域のうちで過去に走行した回数が少ない領域を優先的に走行する経路を算出する自走式電子機器が提案されている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−８５３０５号公報
【特許文献２】特開２０１４−８５８２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述の「自動運転モード」は、ユーザーが例えばリモコンの掃除開始ボタンを押すなどワンタッチで指示を与えると、それに応答して自走式電子機器が部屋の広さや障害物の所在を検出して自律的に走行するようにできる。「壁際モード」についても、ユーザーがワンタッチで指示を与えると、自走式電子機器が壁の位置を検出し壁に沿った領域を走行するようにできる。
しかし、「スポットモード」の場合、ユーザーが意図する領域を自走式電子機器が自動的に推測することはできない。意図する領域を自走式電子機器に指示する単純な方法として、ユーザーは掃除等の作業をさせたい位置へ自走式電子機器を移動させ、そのうえでリモコン等によってスポットモードでの作業開始の指示を与え、これによって領域を指定することができる。このようにスポットモードについては、作業をさせる前に作業をさせたい場所まで自走式機器を移動させる必要がある。利便性の側面からは他のモードに劣るといえる。
【０００６】
ユーザーが自ら自走式電子機器を運んで移動させる代わりに、前述の特許文献１や２のようにスマートフォン等の携帯通信機器を使って位置を指示する手法もある。
例えば自走式掃除機が、移動方向を検出するジャイロセンサー、移動量を検出するエンコーダ、障害物を検出して自走式電子機器を自律的に走行させる自律走行部、およびユーザーが有するスマートフォンと通信する無線ＬＡＮ等の通信手段を備えているものとする。このように構成された自走式電子機器に、基点である充電台からの相対位置をユーザーのスマートフォンから指示すると、その指示に応答して自走式電子機器が目的の位置へ移動させる制御が考えられる。
ここで、自走式電子機器に指示を与えるスマートフォンは、その画面上に、部屋の間取りおよび障害物となる家具や家電等の「モノ」の配置を示すマップを表示するアプリを用意しておくことが考えられる。
【０００７】
ユーザーが自走式掃除機に掃除させたいマップ上の位置をタッチすると、アプリがホームポジションからの相対距離を指示できるようにする。このようなシステムでは、画面がタッチされるとタッチされた画面上の位置と画面上の充電台との位置関係から、充電台と自走式掃除機に掃除させたい位置との相対位置を計算し、自走式電子機器に送信する。自走式電子機器側では、スマートフォンから受信した相対位置に基づいて自律走行部が自走式電子機器を相対位置が示す場所へ走行させるのである。
【０００８】
ところが、ここで一つ問題がある。このようなシステムでは間取り図やモノの配置となるマップを作るのにユーザーの手間がかかる。さらに、そのマップは、マップ上に示されるモノの位置が現実のモノと同じ位置関係になければ、高い精度での位置指定ができない。即ち、マップ上の位置情報が実際の部屋内のモノの配置と正しく対応付けられていないといけない。従って、マップを作成する際に、実際の部屋内でどのような位置関係および距離間隔でモノが配置されているかを計測する必要がある。誰でも気軽に使えるようにするためには、マップ情報を作成する手間を簡略化することが望まれる。
さらにいえば、このようなシステムではユーザーがスマートフォンを所有していないと自走式掃除機に位置を指示できない。スマートフォンを所有していないユーザーはこのシステムを使えない。また、スマートフォンの操作が苦手なユーザーもある。そのようなユーザーにとって、このシステムは使うのが難しく、利便性の観点からも改善が望まれる。
【０００９】
一方、通常の人間の行動を考えてみると「ソファーの前を掃除しておいて」というような指示が人間同士では普通である。電子機器に対してもこのような直感的な指示ができることが望ましい。
近年では音声認識技術が進歩しており、話者の意図を的確に認識することが可能になってきた。つまり、「ソファーの前を掃除しておいて」という指示の意図は、機械でも容易に識別できる。よって、自走式電子機器が、「ソファーの前」がどこであるかを認識し、その位置を目標位置に設定して自律走行できれば直感的で簡単な指示が可能になる。
【００１０】
この発明は、以上のような事情を考慮してなされたものであって、自走式電子機器が目標位置で撮影した画像と走行領域内の複数の位置で撮影した画像を格納する位置情報データベースとを照合して、自律的に目標位置へ走行できる電子機器を提供するものである。
さらに、目標位置で撮影した画像を、音声等による直感的な指示と対応付ければ、位置に関して自走式電子機器に対して直感的な指示が可能になる。例えば「ソファーの前」のように人間が直感的に理解できる位置情報を自走式電子機器が認識可能な位置情報、即ち、基点からの相対位置の情報と対応付けて認識するための重要な要素となる技術を提供するものである。
【課題を解決するための手段】
【００１１】
この発明は、走行を制御する走行制御部と、前記走行に伴って変化する位置を検出する位置検出部と、周囲の光景を撮影する撮像部と、撮影された画像から複数の特徴点を抽出する特徴点抽出部と、走行領域内の複数の位置において前記撮像部が撮影した画像に係る特徴点とその撮影が行われた位置とが関連付けられて登録された位置情報を予め格納する位置情報データベース格納部と、目標とすべき位置において前記撮像部が撮影した画像に係る特徴点を格納するクエリ格納部と、前記クエリ格納部に格納された特徴点と前記位置情報データベース格納部に格納された各位置情報に含まれる特徴点との配置関係を照合し、対応する配置関係にある特徴点を最も多く含む位置情報に基づいて目標位置を決定する目標位置決定部とを備え、前記走行制御部は、前記位置検出部が検出する現在の位置と決定された目標位置とに基づいてその目標位置への走行を制御する自走式電子機器を提供する。
【発明の効果】
【００１２】
この発明による自走式電子機器において、前記クエリ格納部は目標とすべき位置において前記撮像部が撮影した画像に係る特徴点を格納し、前記目標位置決定部は前記クエリ格納部に格納された特徴点と前記位置情報データベース格納部に格納された各位置での特徴点とを照合し、対応する特徴点に関連付けられた位置情報を目標の位置情報とし、前記走行制御部は前記位置検出部が検出する現在の位置と決定された目標位置とに基づいてその目標位置への走行を制御するので、前記自走式電子機器が目標位置で撮影した画像と走行領域内の複数の位置で撮影した画像を格納する位置情報データベースとを照合して、自律的に目標位置へ走行できる。
【図面の簡単な説明】
【００１３】
【図１】の発明の実施形態に係る自走式掃除機の電気的な構成を示すブロック図である。
【図２】この発明の一実施形態である自走式掃除機の外観斜視図である。
【図３】図２に示す自走式掃除機の底面図である。
【図４】図２に示す自走式掃除機の前後方向に沿った垂直断面図である。
【図５】図２に示す自走式掃除機の水平断面図である。
【図６Ａ】この実施形態にかかる自走式掃除機が、充電台にドッキングしているホームポジションの位置を示す平面図である。
【図６Ｂ】図６Ａに示す自走式掃除機が、ホームポジションから離れた位置にある様子を示す平面図である。
【図７】この実施形態において、自走式掃除機が走行する部屋の間取りの一例と区画を示す説明図である。
【図８】この実施形態における自走式掃除機が位置情報データベースを作成する際、ホームポジションからスタートして各区画で順次撮影を行う様子を示す説明図である。
【図９】実施形態において、機器制御部が位置情報データベースを作成する際に実行する全体の処理を示すフローチャートである。
【図１０】実施形態において、機器制御部が位置情報データベース作成における特徴点情報の作成処理を示すフローチャートである。
【図１１】実施形態において、機器制御部が位置情報データベース作成における距離情報の作成処理を示すフローチャートである。
【図１２】この実施形態において作成される位置情報データベースのデータ構造を示す説明図である。
【図１３】この実施形態において特徴点として検出する画素パターンを示す説明図である。
【図１４】この実施形態において、物体の一例としてのテーブルが撮影された画像から特徴点が抽出される位置を視覚的に示す説明図である。
【図１５】の実施形態において、機器制御部が実行する位置の推定の全体の処理を示すフローチャートである。
【図１６】図１５に示すマッチング処理の手順を示すフローチャートである。
【図１７】図１６に示す基準点の決定処理の詳細を示すフローチャートである。
【図１８】図１７に示す基準点ペアの検索処理、即ち対応する基準点を検索する処理を示すフローチャートである。
【図１９】図１６に示す対応点の検索処理を示すフローチャートである。
【図２０Ａ】この実施形態において、特徴点のマッチングに用いる基準点の決定処理を視覚的に示す第１の説明図である。
【図２０Ｂ】この実施形態において、特徴点のマッチングに用いる基準点の決定処理を視覚的に示す第２の説明図である。
【図２１】この実施形態において、特徴点のマッチングによる画像検索を視覚的に示す説明図である。
【図２２】この実施形態において、算出するスコアの概念を視覚的に示す説明図である。
【図２３】この実施形態において、撮影された部屋の配置と撮影位置を示す説明図である。
【図２４Ａ】この実施形態において、図２３に示す部屋内の候補位置で撮影された画像の一例を示す説明図である。
【図２４Ｂ】図２３に示す位置（１）で撮影された画像の例を示す説明図である。
【図２５Ａ】図２４Ａと同じ位置で撮影された画像を示す説明図である。
【図２５Ｂ】図２３に示す位置（２）で撮影された画像の例を示す説明図である。
【図２６Ａ】図２４Ａと同じ位置で撮影された画像を示す説明図である。
【図２６Ｂ】図２３に示す位置（３）で撮影された画像の例を示す説明図である。
【図２７Ａ】図２４Ａと同じ位置で撮影された画像を示す説明図である。
【図２７Ｂ】図２３に示す位置（４）で撮影された画像の例を示す説明図である。
【図２８Ａ】図２４Ａと同じ位置で撮影された画像を示す説明図である。
【図２８Ｂ】図２３に示す位置（５）で撮影された画像の例を示す説明図である。
【図２９】図２４Ａに示す特徴点が画像から抽出される様子を視覚的に示す説明図である。
【発明を実施するための形態】
【００１４】
以下、図面を用いてこの発明をさらに詳述する。なお、以下の説明は、すべての点で例示であって、この発明を限定するものと解されるべきではない。
（実施の形態１）
≪自走式電子機器の具体的態様≫
はじめに、この発明の自走式電子機器の一例として自走式掃除機について説明する。
図１はこの発明の実施形態に係る自走式掃除機の電気的な構成を示すブロック図である。また、図２はこの発明の実施形態に係る自走式掃除機の外観斜視図であり、図３は図２に示す自走式掃除機の底面図である。また、図４は図２に示す自走式掃除機の前後方向に沿った垂直断面図である。図５は、図２に示す自走式掃除機の水平断面図である。
【００１５】
≪自走式掃除機の構成≫
図２および図３に示すように、実施の形態１に係る自走式掃除機１は、平盤形の筐体２を備える。なお、実施の形態１の場合、筐体２は円盤形であるが、これに限定されず、例えば平面視の形状が楕円形状あるいは四角形、五角形、六角形等の多角形状であってもよい。
筐体２は、円形に形成された天板を含む。天板は、その前部を構成する天板前部２ｂ1と、中間部から後部に亘って構成する蓋部２ｂ2から構成され、蓋部２ｂ2は天板前部２ｂ1との境界側の側部に配置された図示しないヒンジ部を支点にして上方へ開く。天板前部２ｂ1の前端部には、内部に配置された回路基板１１Ｓの熱を逃がす複数の空気孔２ｂ11が形成されている。
【００１６】
また、筐体２は環状に形成された側板を含む。また、図４および図５に示すように筐体２は内部構造壁２ｄを含む。側板は、それぞれ円弧形の側板前半部２ｃ1と側板後半部２ｃ2とから構成される。側板前半部２ｃ1はバンパーとして機能するよう、図示しない弾発部材を介して内部構造壁２ｄに対して移動可能に嵌め合わされている。側板前半部２ｃ1には、側板前半部２ｃ1の衝突を検出する衝突センサー１４Ｃが内部に設けられている（図２〜図５に図示せず）。さらに、側板前半部２ｃ1には、前方および左右斜め前方の３箇所に超音波受信部１４Ａが配置されると共に、３箇所の超音波受信部１４Ａの間の２箇所に超音波送信部１４Ｂが配置されている。
さらに、筐体２の前部表面の外部から視認できる位置に誘導信号受信部２４、撮像部１３３および充電用接続部１３が設けられている。充電用接続部１３は、後述する充電台２０１との接続端子およびその接続端子と充電池１２とを結ぶ配線を含む。
【００１７】
筐体２は、底部に設けられた吸込口３１、後部の斜め上方に設けられた第１排気口３２および外周部に設けられた第２排気口３３を有し、筐体２の内部には集塵部１５および電動送風機１１５が配置されている。集塵部１５は、室内の塵埃を集める部分であり、集塵容器１５ａと、集塵フィルター１５ｂとを備える。集塵容器１５ａには、吸込口３１と連通する流入路に通じる流入口と、電動送風機１１５と連通するダクト部１１４に通じる排気口とが形成されている。
第２排気口３３は、前方へ向かって開口し、集塵部１５および電動送風機１１５を通過した空気流を前方へ向けて吹き出すように構成されている。なお、ここで言う「前方」とは、自走式掃除機が直進する方向と平行方向を意味するが、厳密に平行方向でなくてもよく、多少の斜め方向も含まれる。
【００１８】
自走式掃除機１の底面の前半部には、吸込口３１の奥に配置された回転ブラシ９、吸込口３１の左右斜め前方に形成されたサイドブラシ１０と、吸込口３１の左右斜め後方位置に形成された後述する左駆動輪２２Ｌおよび右駆動輪２２Ｒが設けられている。回転ブラシ９およびサイドブラシ１０は、ブラシモータ１１９によって駆動され回転する。また、底面の後半部の左右方向における中間位置には回動自在な後輪２６が設けられている。後輪２６の車輪は回転自在である。なお、図３と図４においては、後輪２６が前方へ１８０°回動した状態を二点差線で記している。
自走式掃除機１は、設置された場所の床面を自走しながら、床面（走行面）上の塵埃を含む空気を吸い込み、塵埃を除去した空気を排気することにより床面上を掃除する。自走式掃除機１は、障害検出部１４により検出された障害物を自律的に回避して走行し、掃除が終了すると自律的に図示しない充電ステーションに帰還する機能を有する。
なお、この明細書で床面は木製の平らな床に限らない。カーペット、マット、畳などであっても自走式掃除機１が走行可能な面であればよい。また、床面は平面に限らず、例えばある程度曲がった面や凹凸のある面や段差のある面であっても走行可能であればよい。
【００１９】
図１に示すように、この自走式掃除機１は、駆動部２３、回路基板１１Ｓ、障害検出部１４および充電池１２を備える。
駆動部２３は、左輪駆動モータ２１Ｌ、右輪駆動モータ２１Ｒ、左駆動輪２２Ｌ、右駆動輪２２Ｒを備える。左輪駆動モータ２１Ｌ、右輪駆動モータ２１Ｒ、左輪エンコーダ７１Ｌおよび右輪エンコーダ７１Ｒ、左駆動輪２２Ｌおよび右駆動輪２２Ｒを有して自走式掃除機１を走行させる。なお、左輪駆動モータ２１Ｌおよび右輪駆動モータ２１Ｒがステッピングモータの場合は、エンコーダに代えてモータの駆動パルス数を用いてもよい。この実施例では、左輪エンコーダ７１Ｌおよび右輪エンコーダ７１Ｒが実際にエンコーダを備えるものとして説明する。
【００２０】
回路基板１１Ｓは、機器制御部１１、記憶部６１、左輪ドライバ１２１Ｌ、右輪ドライバ１２１Ｒ、ジャイロセンサー２０、送風機ドライバ１２３およびブラシドライバ１２５を備える。
左輪ドライバ１２１Ｌは、左輪駆動モータ２１Ｌを電気的に駆動し、右輪ドライバ１２１Ｒは、右輪駆動モータ２１Ｒを電気的に駆動する。ジャイロセンサー２０は、走行方向の変化を検出する。送風機ドライバ１２３は、電動送風機１１５を電気的に駆動する。ブラシドライバ１２５は、ブラシモータ１１９を電気的に駆動する。
【００２１】
機器制御部１１は、ドライバを介して左輪駆動モータ２１Ｌ、右輪駆動モータ２１Ｒ、イオン発生器１２０、電動送風機１１５およびブラシモータ１１９を制御する。
また、機器制御部１１は、自走式掃除機１の走行を制御する走行制御部１１ａ、位置検出部１１ｂ、特徴点抽出部１１ｃおよび目標位置決定部１１ｄの機能を包含する。
走行制御部１１ａは、左輪エンコーダ７１Ｌおよび右輪エンコーダ７１Ｒからのエンコーダの信号を用いて左輪駆動モータ２１Ｌおよび右輪駆動モータ２１Ｒの回転を制御することにより自走式掃除機１の走行を制御する。
位置検出部１１ｂは、前記エンコーダ信号に基づいてホームポジションから自走式掃除機１が走行した距離および方向を取得する。なお、この実施形態でホームポジションは、後述する充電台２０１に自走式掃除機１がドッキングした状態における自走式掃除機１の部屋内の位置であって、位置検出部１１ｂが検出する位置の基準となる位置である。
【００２２】
図６Ａは、この実施形態にかかる自走式掃除機１が、充電台２０１にドッキングしているホームポジションの位置を示す平面図である。図６Ｂは、図６Ａに示す自走式掃除機１が、ホームポジションから離れた位置にある様子を示す平面図である。図６Ａおよび図６Ｂで、自走式掃除機１がホームポジションにあるときの中心の位置を部屋座標の原点「Ｏ」（オー）で示している。また、部屋座標原点から横方向に延びる座標軸のｘ軸と縦方向に伸びる座標軸のｙ軸を示している。なお、図６Ａおよび図６Ｂにおいて自走式掃除機１と充電台２０１は実体が存在するのに対して、原点Ｏ、ｘ軸およびｙ軸は概念上のものである。
図６Ｂは、自走式掃除機１が部屋座標原点からｘ軸方向にマイナス１５センチメートル、ｙ軸方向に２０センチメートルの位置にあることを示している。
位置検出部１１ｂは、図６Ａに示すホームポジションを基準としてｘ方向およびｙ方向の座標値で自走式掃除機１の位置を検出する。
機器制御部１１は、自走式掃除機１の各構成要素の動作を制御する部分であり、主として、ＣＰＵ、ＲＡＭ、Ｉ／Ｏコントローラ、タイマー等からなるマイクロコンピュータによって実現される。
【００２３】
ＣＰＵは、後述する記憶部６１に予め格納されＲＡＭに展開された制御プログラムに基づいて処理を実行し、各ハードウェアを有機的に動作させてこの発明の清掃機能、走行機能などを実行する。
記憶部６１は、自走式掃除機１の各種機能を実現するために必要な情報や、制御プログラムを記憶するメモリである。この実施形態では、不揮発性メモリとしてフラッシュメモリとＲＡＭとが組み合わせて用いられる。記憶部６１は、位置情報データベース格納部６１ａおよびクエリ格納部６１ｂを含む。
なお、図１には図示していないが、記憶部６１は、目標位置の候補となる候補位置で撮影された画像に係る特徴点を、各候補位置を目標として選択する場合に用いる選択指示と関連付けてそれぞれ記憶する候補位置記憶部を含んでもよい。
【００２４】
障害検出部１４は、超音波受信部１４Ａ、超音波送信部１４Ｂ、衝突センサー１４Ｃおよび床面検出センサー１８を備える。床面検出センサー１８は、筐体２の底部における左右方向の中央かつ前端部および左右のサイドブラシ１０の軸心位置にそれぞれ配置されている。
障害検出部１４、特に超音波受信部１４Ａおよび超音波送信部１４Ｂは、自走式掃除機１が走行中に、室内の壁や机、いすなどの障害物に接触又は近づいたことを検出する部分である。壁面や障害物を検出しながらそれに沿って自走式掃除機１が走行するために用いられる。また、超音波受信部１４Ａは、障害物までのおおよその距離を測定することができる。障害検出部１４は、超音波受信部１４Ａおよび超音波送信部１４Ｂを用いて障害物への近接を検出する。超音波受信部１４Ａおよび超音波送信部１４Ｂに代えて、あるいは超音波受信部１４Ａおよび超音波送信部１４Ｂと共に、赤外線測距センサーなど他の方式の非接触センサーを用いてもよい。
衝突センサー１４Ｃは、自走式掃除機１が走行時に障害物と接触したことを検出するために、例えば、筐体２の側板前半部２ｃ1の内部に配置される。ＣＰＵは、衝突センサー１４Ｃからの出力信号に基づいて側板前半部２ｃ1が障害物に衝突したことを知る。
【００２５】
各床面検出センサー１８は下り階段等、自走式掃除機１が回避して走行すべき大きな段差を検出する。
ＣＰＵは、障害検出部１４から出力された信号に基づいて、障害物や段差の存在する位置を認識する。認識された障害物や段差の位置に基づいて、その障害物や段差を避けて次に走行すべき方向を決定する。なお、左右の床面検出センサー１８は、段差に対して斜め方向に侵入した場合など前方の床面検出センサー１８が段差の検出に失敗した場合に下り階段を検出し、自走式掃除機１の下り階段への落下を防止する。
ジャイロセンサー２０は、自走式掃除機１が走行するとき走行方向の情報を走行制御部１１ａに提供する。
さらにまた、自走式掃除機１は、誘導信号受信部２４、充電用接続部１３、報知部５５、電動送風機１１５、ブラシモータ１１９およびイオン発生器１２０を備える。さらに、無線通信部１３１、撮像部１３３および音声認識部１３５を備える。
左輪駆動モータ２１Ｌは、左駆動輪２２Ｌを回転および停止させ、右輪駆動モータ２１Ｒは、右駆動輪２２Ｒを回転および停止させる。左駆動輪２２Ｌおよび右駆動輪２２Ｒを独立して正逆両方向に回転させ得るように駆動モータを構成することにより、自走式掃除機１の前進、後退、旋回、加減速などの走行状態を実現している。
【００２６】
走行制御部１１ａは、右駆動輪２２Ｒおよび左駆動輪２２Ｌを同一方向に正回転させて、中央の超音波受信部１４Ａが配置されている前方へ自走式掃除機１を走行させる。また、左駆動輪２２Ｌおよび右駆動輪２２Ｒを同一方向に逆回転して後退させ、互いに逆方向に回転させまたは互いに異なる速度で回転させることにより自走式掃除機１を旋回させる。互いに異なる速度は一方の駆動輪が停止する場合を含む。
例えば、走行制御部１１ａは、障害検出部１４の各センサーにより掃除領域の周縁に到達したと判断したら、左駆動輪２２Ｌおよび右駆動輪２２Ｒを減速させた後に停止させる。その後、左駆動輪２２Ｌおよび右駆動輪２２Ｒを互いに逆方向に回転させて自走式掃除機１を９０°旋回させ、吸込口３１の開口幅に等しい距離だけ進んでさらに９０°旋回させて元の進路と逆方向へ走行させる。つづら折り状に前述の旋回を繰り返して自走式掃除機１をジグザグ走行させて、清掃領域内をくまなく清掃できるように制御する。
さらに自走式掃除機１は左輪エンコーダ７１Ｌおよび右輪エンコーダ７１Ｒを備えているので、左駆動輪２２Ｌおよび右駆動輪２２Ｒがそれぞれどれだけ回転したかを検出して自走式掃除機１が走行する際の旋回角を検出したり、移動した距離を検出したりできる。つまり、ホームポジションから目標位置までの距離と方向が与えられると、その目標位置へ自律的に移動することが可能である。
【００２７】
また、障害検出部１４が進路上の障害物を検出した場合、走行制御部１１ａは自走式掃除機１を減速もしくは停止させた後に旋回させて障害物を避けるように向きを変える。その障害物が検知されなくなるまで進んだら元の進路の延長上へ近づける方向へ自走式掃除機１を旋回させて走行を続ける。また、各床面検出センサー１８が床面を検知しなくなった場合、自走式掃除機１を一旦停止させて後退および／または旋回させ、階段等の段差から落下しないように走行を制御する。このようにして、走行制御部１１ａは、設置場所の全体あるいは所望範囲全体に渡って障害物を避けながら自走式掃除機１を走行させる。
なお、この実施形態で、前方とは、自走式掃除機１の前進方向、即ち図３において後輪２６から吸込口３１へ向かう方向をいうものとし、後方とは、自走式掃除機１の後退方向、即ち図３において吸込口３１から後輪２６へ向かう方向をいうものとする。
【００２８】
誘導信号受信部２４は、赤外線を受信するための赤外線センサーであり、筐体２の前方部に配置される。誘導信号受信部２４は、ドッキング・ステーションとしての充電台２０１の誘導信号送出部２０３から出射される位置標識信号（ビーコン）等を受信する。さらに、図１に図示しないリモコン装置からの赤外線信号を受信してもよい。機器制御部１１は、受信されたリモコンからの赤外線信号を認識して、ユーザーが与えた指示に応答する。
機器制御部１１は、充電台２０１の誘導信号送出部２０３から出射される信号を誘導信号受信部２４で検知し、充電台２０１のある方向を認識する。走行制御部１１ａは、掃除が終了した場合、充電池１２の充電残量が少なくなった場合、あるいは予め定められた清掃作業の期間が経過した場合などに、充電台２０１のある方向へ走行させて、自走式掃除機１を充電台２０１まで帰還させる。ただし、障害物があれば、それを避けながら充電台２０１の方向へ移動させる。
報知部５５は、自走式掃除機１の状態をユーザーに知らせるものである。この実施形態において、報知部５５は、音を出力する音響出力回路とスピーカである。別の態様として、筐体２の上部、より具体的には例えば天板前部２ｂ1や側板後半部２ｃ2にＬＥＤランプ等を用いた表示部を設けてもよい。さらに別の態様として、ユーザーの所有するスマートフォン等通信機能を有する情報処理装置に無線通信部１３１を通じて通知してもよい。
【００２９】
無線通信部１３１は、自走式掃除機１が外部の機器と通信する無線通信回路である。典型例として、無線ＬＡＮ方式の通信回路が挙げられる。それに代えて、あるいはそれに加えて、例えばＬＴＥなどの移動体通信の通信方式で通信するものであってもよい。外部の機器は、例えば、ユーザーが使用するスマートフォンである。無線通信部１３１は、前記スマートフォンを用いてユーザーが与えた指示に係る無線信号を受信する。機器制御部１１は、受信した無線信号を認識して、前記指示に応答する。
なお、図１には図示していないが、無線通信部１３１は、目標へ走行すべき走行指示を受付ける指示受領部としての機能を包含してもよい。
撮像部１３３の具体的態様は、機器組込型のカメラモジュールである。静止画だけでなく、動画撮影が可能であってもよい。撮像部１３３は、図２に示すように誘導信号受信部２４の上方に取り付けられ、自走式掃除機１の上方および周囲の光景を撮影する。撮像部１３３としてのカメラモジュールは広角レンズを備えており、上方だけでなく側方の光景も撮影する。
音声認識部１３５は、ユーザーが発する音声を感知して予め定められた指示か否かを認識するマイクおよび音声認識回路である。図１には図示していないが、音声認識部は、目標へ走行すべき走行指示を受付ける指示受領部としての機能を包含してもよい。即ち、指示受領部としての機能は、前述の無線通信部１３１によって実現されてもよく、この音声認識部１３５によって実現されてもよく、両者がそれぞれ指示受領部の機能を実現してもよい。
以上が、この実施形態に係る自走式掃除機の構成の説明である。
【００３０】
充電台についても少し述べておく。充電台２０１は、充電端子部２０２および誘導信号送出部２０３を備える。充電台２０１に自走式掃除機１がドッキングすること、即ち、充電台２０１の充電端子部２０２と自走式掃除機１の充電用接続部１３とが電気的に接触することにより、自走式掃除機１は充電台２０１からの電力の供給を受ける。充電台２０１にドッキングした状態で、自走式掃除機１の充電池１２が充電される。誘導信号送出部２０３は、ビーコン信号を生成する信号生成回路と生成された赤外光信号を放射するＬＥＤからなる。
充電台２０１は、一般に部屋の隅など、邪魔にならない場所に置かれることが多く、一旦置き位置が決めたらずっとその位置に置かれることが多い。自走式掃除機１は掃除が終わると充電のために充電台２０１に帰還し、充電池１２を充電する。つまり、自走式掃除機１は掃除をしていないときは充電台で充電池１２の充電をしながら待機している。
【００３１】
≪位置情報データベース作成の概要≫
次に、この実施形態において位置情報データベースを作成する手順の概要を説明する。
位置情報データベースの作成は、自走式掃除機１が走行する部屋の複数の位置、好ましくは実質的に任意の位置といえる程多数の位置において、撮像部１３３が撮影する周囲の光景をデータベースに登録する処理である。平易にいえば、自走式掃除機にその部屋の各位置における光景を覚えさせる処理ともいえる。
位置情報データベースを作成する指示が、例えばユーザーの「部屋の特長を覚えて」という音声メッセージとして予め定められているとする。音声認識部１３５がこの音声を受けて指示と認識すると、それに応答して機器制御部１１は、走行制御部１１ａとしてホームポジションから予め決められたルールに従って自走式掃除機１を部屋内の各所に走行させる。そして、撮像部１３３に各位置での光景を撮影させる。さらに機器制御部１１は特徴点抽出部１１ｃとして、撮影された各位置での画像から特徴点をそれぞれ抽出する。その画像が部屋内のどの位置で撮影されたものかを示す部屋座標は、左輪エンコーダ７１Ｌおよび右輪エンコーダ７１Ｒからのエンコーダ信号を用いて位置検出部１１ｂとしての機器制御部１１が検出する。位置検出部１１ｂは、さらにジャイロセンサー２０を用いて部屋座標の精度を高めてもよい。
【００３２】
機器制御部１１は、各位置で撮影された画像から抽出された複数の特徴点につて、各特徴点が抽出された画像内の位置を表す特徴点情報と、室内の位置を示す部屋座標とを関連付けて位置情報データベース格納部６１ａに格納する。特徴点情報は、各特徴点の前記画像内の位置を示す特徴点座標と、画像内の各特徴点の配置関係を示す情報（距離情報）とを有する。
部屋内のある位置で撮影された画像に基づいて作成された特徴点情報とその位置を表す部屋座標とが関連付けられた情報をその位置の位置情報と呼ぶ。機器制御部１１は、各撮影位置における位置情報を位置情報データベース格納部６１ａに格納する。部屋内の複数の位置において位置情報を作成して位置情報データベース格納部６１ａに格納する処理を「位置情報データベースの作成」という。
【００３３】
この実施形態における位置情報データベースの作成の手順は次の通りである。
充電台２０１とドッキングした状態で位置情報データベースの作成を求める指示を受付けると、機器制御部１１は走行制御部１１ａとして、自走式掃除機１を部屋内の各所に走行させるように制御する。掃除を行う場合にも、自走式掃除機１は部屋内をくまなく走行して掃除を行うので、位置情報データベースを作成する場合と掃除を行う場合とで同じ走行パターンを適用してもよい。このとき、部屋内の走行面を予め定められたサイズの縦横マトリクス状に区画割りし、区画毎に写真を撮影して特徴点を抽出して特徴点情報を作成し、特徴点情報と部屋座標とが関連付けられた位置情報を位置情報データベースに格納していく。
【００３４】
図７は、この実施形態において、自走式掃除機１が走行する部屋の間取りの一例と区画を示す説明図である。図７に示す部屋３００には、テーブル３０１、ソファー３０３、テレビ３０５、本棚３０７、空気清浄機３０９といった家具類が置かれている。これらの家具類は、自走式掃除機１にとって障害物であり、例えばテレビ３０５の置台のある場所は走行できない。また、部屋の隅（図７の右上の隅）には、充電台２０１が置かれている。部屋３００内を縦横に走る鎖線で区切られた矩形領域は、区画の単位を示している。家具類は実体があるが、区画は仮想的なものである。
この実施形態において、位置情報データベースの作成の際に自走式掃除機１が部屋内を走行するルールは、予め定められた間隔（ピッチ）で往復路をシフトさせながらジグザグ運転を行うことを基本とする。即ち、自走式掃除機１は、走行路前方に障害物が検出されるまでは直進し、障害物である壁を検出したらその障害物との衝突を避けるように側方（この実施形態では右側とする）へ９０°旋回する。そして、予め定められたピッチの３０ｃｍだけ進むとさらに右側へ９０°旋回して折り返す。その後、再び障害物を見つけるまで直進するといったルールに従って走行する。
【００３５】
位置検出部１１ｂは、走行した経路の部屋座標を検出する。走行制御部１１ａは、基本のジグザグ運転を続けて自走式掃除機１がホームポジションの反対側の隅まで部屋内を走行したと判断したら、ホームポジションからのジグザグ運転中に障害物を回避するために走行しなかった領域の走行を試みる。障害物を回避するために折り返してしまった床面の領域が残っている場合、その領域を走行するためである。
なお、位置情報データベースを作成する際のジグザグ運転の折返しピッチ、言い換えれば区画のピッチは、掃除を行う場合の折返しピッチと同じであってもよいが異なってもよい。
【００３６】
図８は、この実施形態における自走式掃除機１が位置情報データベースを作成する際、ホームポジションからスタートして各区画で順次撮影を行う様子を示す説明図である。図８で、充電台２０１を始点とする矢印は自走式掃除機１の走行路を示している。その矢印に沿って並ぶ丸印は、各区画で機器制御部１１が撮像部１３３に撮影をさせる位置を示す。図８に示すように、機器制御部１１は、自走式掃除機１をジグザグ走行させて、１区画進む毎にその区画に対応する光景を撮像部１３３に撮影させる。そして、部屋座標と関連付けた位置情報を位置情報データベース格納部６１ａに格納する。
図８に示す縦横マトリックス状の区画は、一つの区画の大きさが縦横それぞれ３０ｃｍであるとする。その場合、機器制御部１１は、自走式掃除機１が３０ｃｍ直進する毎にその位置で撮像部１３３に周囲の光景を撮影させる。３０ｃｍ直進したことは、位置検出部１１ｂが検出した現在位置の部屋座標を前回撮影した位置の部屋座標と比較して判断する。そして、特徴点抽出部１１ｃは、撮影された画像から特徴点を抽出する。そして、抽出された複数の特徴点の画像内におけるそれぞれの座標値（特徴点座標）とそれらの特徴点の配置関係とを表す特徴点情報を作成する。なお、この明細書において特徴点座標を表す場合には、大文字のＸおよびＹを用いることとする。図６Ａおよび図６Ｂで、部屋内の自走式掃除機１の位置を表す部屋座標に小文字のｘおよびｙを用いたので、それとの区別を明確にするためである。
【００３７】
機器制御部１１は、ある画像に係る特徴点情報を作成する際に、その画像内の特徴点の配置関係を表す距離情報を作成する。この実施形態において距離情報は、同じ画像に含まれる２つの特徴点の距離をすべての特徴点について計算したデータである。特徴点情報は、それぞれの特徴点についてその特徴点の位置を示す特徴点座標を含む。さらに、その特徴点と画像内の全ての特徴点との間の距離を表す距離情報を含む。特徴点情報は、同じ画像内のすべての特徴点について特徴点座標と距離情報とをそれぞれ組み合わせてなる情報である。位置情報は、位置検出部が検出した部屋座標（撮影位置のｘおよびｙ座標値）を前記特徴点情報と関連付けた情報であり、位置情報データベースは部屋内の各位置における位置情報を格納するデータベースである。
機器制御部１１は、自走式掃除機１を走行させながら走行可能な区画の位置情報と部屋座標とを位置情報データベース格納部６１ａに格納していく。ただし、現在位置が既に位置情報データベース格納部６１ａに格納された区画内であれば、重複した撮影および位置情報の格納は行わない。このようにして、部屋内の走行可能な領域の各区画について位置情報を位置情報データベース格納部６１ａに格納したら、機器制御部１１は、自走式掃除機１を充電台２０１に帰還させてホームポジションへ戻す。
以上が、位置情報データベース作成の概要である。
【００３８】
≪目標位置の学習≫
上述のように作成された位置情報データベースは、自走式掃除機１を走行させるべき目標位置を決定するために用いられる。
この実施形態において、自走式掃除機１は、ユーザーの操作によって目標位置を学習する。一旦その目標位置を学習したら、その後ユーザーが指示を与えるだけで、自走式掃除機１は学習した位置へ走行することが可能になる。学習させる目標位置は１つに限らない。複数の位置を学習させておくことができる。自走式掃除機１に学習させた位置は、その後の目標位置となり得るので候補位置とよぶ。
【００３９】
候補位置を学習させる段階で、ユーザーは自走式掃除機１を候補位置へ持って行く。候補位置の床面に自走式を置いた状態で、その位置を学習するように自走式掃除機１に指示をする。例えば、ユーザーが「ソファー前だよ、この場所を覚えて」と音声で指示を与える。
音声認識部１３５がこの音声を受けて指示と認識すると、指示に応答して自走式掃除機１は、その位置で撮像部１３３により周囲の光景を撮影する。さらに、撮影された画像から複数の特徴点を抽出し、抽出された各特徴点に係る特徴点情報を作成し、さらに特徴点情報を用いて距離情報を作成し、クエリ格納部６１ｂに格納する。ここで、特徴点を抽出する手法、特徴点情報および距離情報の作成手順は、位置情報データベースの作成の局面と同様の処理である。
目標位置決定部１１ｄとして機器制御部１１は、クエリ格納部６１ｂに格納された距離情報に最も類似する距離情報を持つ位置情報を位置情報データベースの中から検索する。この明細書では、この処理を「位置の推定」という。即ち、候補位置での距離情報に基づいて最近傍探索の処理を行う。なお、探索に要する処理時間やメモリ量を削減するために厳密な最近傍探索に代えて近似最近傍探索を行ってもよい。
【００４０】
そして、探索処理によって位置情報データベース中のから見出した位置情報に格納されている部屋座標（ｘおよびｙ座標）を、目標位置として決定し、その部屋座標を候補位置の部屋座標として記憶部６１に格納する。
さらに、学習した候補位置を他の候補位置と識別するキーワードと関連付ける。即ち、「ソファー前だよ」の部分から、学習した位置を候補位置の部屋座標と関連付けて記憶部６１に格納する。
あるいは、ユーザーが単に「この位置を覚えて」という指示を与えると、それに応答して画像を撮影して特徴点を抽出し、位置情報データベースを検索して部屋座標を決定する。その後、機器制御部１１は、報知部５５に「この位置の名前を言って！」と質問の音声メッセージを出力させる。それに応えてユーザーが、例えば「テレビの前」と言うと、音声認識部１３５がその音声を認識する。機器制御部１１は、認識した音声を候補位置の部屋座標と関連付けて記憶部６１に格納する。
【００４１】
以後、ユーザーが「ソファー前を掃除して」という音声を発すると、音声認識部１３５がユーザーの音声を受付けて「ソファー前」へ移動して「掃除」するようにとの指示と認識する。走行制御部１１ａは、記憶部６１に格納された候補位置のうち、「ソファー前」に関連付けられた部屋座標を検索して取得し、取得した部屋座標が示す位置へ自走式掃除機１を走行させた後、その周囲を掃除し、掃除を終えたらホームポジションに戻るように制御する。
同様に、ユーザーの「テレビの前を掃除して」の音声を認識すると、機器制御部１１は、すでに学習したテレビの前の位置へ自走式掃除機１を走行させ、その周囲を掃除し、掃除を終えたらホームポジションに戻るように制御する。
【００４２】
≪位置情報データベース作成の処理手順≫
さらに位置情報データベース作成のより詳しい処理を説明する。
位置情報データベースは、部屋内の各位置で撮像部１３３が撮影した周囲の光景の画像から得られる特徴点情報と、その撮影がなされた位置について位置検出部１１ｂが検出した部屋座標原点からの相対位置とが紐付けられて登録されたデータベースである。
図９〜図１１は、この実施形態において、機器制御部１１が位置情報データベースを作成する際に実行する処理を示すフローチャートである。図９は全体の処理を示し、図１０は特徴点情報の作成を示し、図１１は距離情報の作成を示す。
【００４３】
図９のフローチャートに沿って、処理の手順を説明する。
ユーザーからの指示を受付けたら、機器制御部１１は、その指示に応答して位置情報データベースの作成を行う。
はじめに機器制御部１１は、以下の処理に用いる変数を初期化する。例えば、部屋座標の座標値を格納する一時変数ｘおよびｙに、ホームポジションを示す座標値ゼロをセットする。また、自走式掃除機１の走行方向を表す変数Ｒに初期値ゼロをセットする。
ここで、変数Ｒは、０〜３の値をとり、各値は、
Ｒ＝０：進行方向が、部屋座標のｙ軸のプラス方向（図６Ａの上方向）
Ｒ＝１：進行方向が、部屋座標のｘ軸のプラス方向（図６Ａの右方向）
Ｒ＝２：進行方向が、部屋座標のｙ軸のマイナス方向（図６Ａの下方向）
Ｒ＝３：進行方向が、部屋座標のｘ軸のマイナス方向（図６Ａの左方向）
のようにｘおよびｙ座標のプラスおよびマイナス方向を表すものとする。そして例えば、走行中前方に障害物を検出した場合、機器制御部１１は、障害物を回避するために自走式掃除機１を９０°右旋回させる。それと共に方向変数Ｒに１を加算する（ただし、Ｒ＝３の場合はゼロにする）。
さらに機器制御部１１は、自走式掃除機を１８０度旋回させた後に部屋内の走行を開始させる（ステップＳ１１）。
【００４４】
部屋内を走行中に機器制御部１１は、走行面の前方に障害物を検出したか否かを調べる（ステップＳ１３）。障害物があれば（ステップＳ１３のＹ）、その直前で自走式掃除機１を左または右へ９０°旋回させてジグザグ走行を行うように制御する（ステップＳ１５）。障害物がなければ（ステップＳ１３のＮ）前進を続けて（ステップＳ１７）、新たな区画の撮影位置に到達するまでそのまま前進させる。走行中、機器制御部１１は、位置検出部１１ｂとして左輪エンコーダ７１Ｌおよび右輪エンコーダ７１Ｒから得たエンコーダ信号に基づいて走行距離と走行方向を計算する。そして、自走式掃除機１が現在、ホームポジションを基準とする部屋座標のどの位置にいるかを計算する。部屋座標を算出する処理の詳細については後述する。
（ステップＳ１９）。新たな区画の撮影位置に到達したら、その位置で既に位置情報を位置情報データベースに登録したか否かを調べる（ステップＳ２１）。既に登録済の場合（ステップＳ２１のＹ）、ルーチンはステップＳ２９へ進む。
【００４５】
その位置での位置情報が未登録の場合（ステップＳ２１のＮ）、機器制御部１１は、撮像部１３３にその位置の光景を撮影させる。さらに、特徴点抽出部１１ｃとして、撮影された画像から特徴点を抽出して特徴点情報を作成する処理を行う（ステップＳ２３）。特徴点情報を作成する詳細な処理は図１０に示しており、図１０の説明で詳しく述べるが、特徴点の画像中の位置（座標値）を、それぞれの特徴点について表す情報である。特徴点情報は、１つの画像から抽出された複数の特徴点の配列ｆｐ［］として表される。
さらに機器制御部１１は、作成された特徴点情報に基づいて距離情報を作成する（ステップＳ２５）。距離情報を作成する詳細な処理は図１１に示しており、図１１の説明で詳しく述べるが、１つの画像中の２つの特徴点の距離を全ての組合せについて表したものであり、２つの特徴点に対応する２次元配列ｄｓ［］［］として表される。
【００４６】
そして、機器制御部１１は、位置検出部１１ｂとして検出したその位置の部屋座標を、特徴点情報、距離情報と関連付けて位置情報とし、位置情報を位置情報デーベース格納部６１ａに格納する（ステップＳ２７）。
そして、部屋内の走行可能なすべての区画について位置情報を位置情報データベースに登録したか否かを判断する（ステップＳ２９）。
まだ、走行を試みるべき区画が残っていれば（ステップＳ２９のＮ）、ルーチンはステップＳ１３へ戻り、障害物を避けながら走行して各区画での位置情報の登録を繰り返す。
一方、全ての区画が登録されたと判断したら（ステップＳ２９のＹ）、処理を終了する。
【００４７】
≪部屋座標の算出≫
前述のステップＳ１９で述べた部屋座標算出の詳細について述べる。
位置検出部１１ｂは、自走式掃除機１のホームポジションからの相対位置を逐次検出する。
前回、自走式掃除機１の位置を検出してから、今回位置を検出するまでの間に、自走式掃除機が距離Ｄ走行したとする。この距離Ｄは、左輪エンコーダ７１Ｌおよび右輪エンコーダ７１Ｒからのエンコーダ信号に基づいて算出する。両者のエンコーダ信号のカウント数が等しければ直進していると判断する。両者の符号が異なるが絶対値が等しい場合、自走式掃除機が旋回していると判断する。ここで、エンコーダ信号の符号は駆動輪の回転方向を表すものとする。
【００４８】
さらに、両者に差があれば、自走式掃除機１が走行方向を変えて走行したと判断する。両者の差に応じて変化した進行方向と走行距離を検出できる。進行方向が緩やかに変化する場合は左右の回転数を制御して直進しようとするので、説明を単純にするためにこの実施形態において走行パターンは直進と９０°旋回のみとする。即ち、ここでは、自走式掃除機１はｘ軸またはｙ軸に沿って直進して距離Ｄだけ走行したものとする。
【００４９】
位置検出部１１ｂは、前回および今回の位置検出において進行方向を示す変数Ｒの値を参照する。仮定したように自走式掃除機１がｘ軸またはｙ軸に沿って直進しているので、前回と今回とで変数Ｒの値は等しい。前回位置を検出した際の部屋座標が（ｘｉ，ｙｉ）とするとき、
Ｒ＝０の場合、今回の部屋座標（ｘｊ，ｙｊ）は、前回の部屋座標値に対してｙ座標値にＤを加えた位置と算出する。即ち、
ｘｊ＝ｘｉ，  ｙｊ＝ｙｉ＋Ｄ
とする。
Ｒ＝１の場合、前回の部屋座標値に対してｘ座標値にＤを加えた位置と算出する。
ｘｊ＝ｘｉ＋Ｄ，  ｙｊ＝ｙｉ
Ｒ＝２の場合、前回の部屋座標値に対してｙ座標値からＤを減じた位置と算出する。
ｘｊ＝ｘｉ，  ｙｊ＝ｙｉ−Ｄ
Ｒ＝３の場合、前回の部屋座標値に対してｘ座標値からＤを減じた位置と算出する。
ｘｊ＝ｘｉ−Ｄ，  ｙｊ＝ｙｉ
なお、自走式掃除機１が旋回のみの場合、今回の部屋座標（ｘｊ，ｙｊ）は、前回の部屋座標値と等しく、変数Ｒが変化する。
部屋座標の座標値の単位としては、例えば図７に示す縦横マトリックス状の１区画の大きさを１単位としてもよい。前述の座標値（ｘｊ，ｙｊ）がセンチメートルの単位で計測され、１区画の大きさが縦横共に３０センチメートルの場合、部屋座標の座標値は、ｘｊおよびｙｊをそれぞれ３０ｃｍで除した値になる。
【００５０】
≪特徴点情報の作成処理の詳細≫
続いて、図９のステップＳ２３に示す特徴点情報の作成処理の詳細について、図１０のフローチャートを用いて説明する。図１０は、図９のステップＳ２３に示す処理の詳細を示すフローチャートである。
図１０で、特徴点抽出部１１ｃとして機器制御部１１は、撮像部１３３に周囲の光景を撮影させる（ステップＳ３１）。そして、撮影した画像を白と黒の２値化する（ステップＳ３３）。２値化処理は、例えばＰ−タイル法、モード法など既知のアルゴリズムを適用すればよい。なお、２値化処理で得られた画像の横幅（Ｘ方向の画素数）を「ＷＩＤＴＨ」で表し、その画像の高さ（Ｙ方向の画素数）を「ＨＥＩＧＨＴ」で表すこととする。
【００５１】
続いて、以後の処理に用いる変数を初期化する（ステップＳ３５）。具体的には、撮影された画像内における特徴点のＸ方向の何番目の画素であるかを示す変数、言い換えればＸ座標を表す変数ＸにＸ＝０を設定する。同様に、画像内における特徴点のＹ方向の何番目の画素であるかを示す変数、言い換えればＹ座標をそれぞれ表す変数ＹにＹ＝０を設定する。さらに、１つの画像中の特徴点を表す配列変数である特徴点配列ｆｐ［］のすべての要素をクリアする。また、特徴点配列ｆｐ［］を示すポインタの変数ｉにｉ＝０を設定する。この実施形態で、特徴点情報は、特徴点配列ｆｐ［］として表される。
【００５２】
続いて、特徴点抽出部１１ｃは、特徴点座標（Ｘ，Ｙ）−（Ｘ＋２，Ｙ＋２）の範囲で構成される３×３の画素マトリックスが、予め定められたコーナーとしてのパターンに該当するか否かをチェックする。即ち、画素マトリックス中央の注目画素（Ｘ＋１，Ｙ＋１）とそれを囲む８画素の参照エリアからなる３×３の画素マトリックスを、コーナーのパターンと照合する（マッチングを行う）（ステップＳ３７のマッチング処理）。なお、コーナーのパターンは、図１３に具体例を示しており後述するが、３×３画素マトリックスとして予め用意されている。
注目画素を含む画素マトリックスがコーナーのパターンにマッチしている場合（ステップＳ３７のＹ）、次の処理を行う。注目画素が特徴点であるとして、注目画素（Ｘ＋１，Ｙ＋１）の特徴点座標値を特徴点配列ｆｐ［］に格納してポインタｉの値を１増やす（ステップＳ３９）。
一方、注目画素を含む画素マトリックスがコーナーのパターンにマッチしていない場合（ステップＳ３７のＮ）、特徴点配列ｆｐ［］への格納は行わない。
【００５３】
続いて特徴点抽出部１１ｃは、画素のＸ方向の数を表す変数Ｘの値を１増やして（ステップＳ４１）注目画素を右側へシフトさせたうえで、注目画素と参照エリアからなる３×３画素マトリックスが画像の右端に達したか否かを調べる（ステップＳ４３）。即ち、変数Ｘの値が「ＷＩＤＴＨ」−２に達したか否かを調べる。ここで、「−２」は、３画素分の幅を持つ３×３画素マトリックスが画像からはみ出さないという条件に基づく。
右端に達していなければ（ステップＳ４３のＹ）、ルーチンはステップＳ３７へ戻り、シフト後の注目画素がコーナーのパターンに該当するか否かを調べる。
一方、シフト後の画素マトリックスが画像の右端からはみ出した場合（ステップＳ４３のＮ）、特徴点抽出部１１ｃは、変数Ｙを１増やして注目画素を下方向にシフトさせる。それと共に、変数ＸにＸ＝０を設定してシフト後のラインの左端に注目画素を移動させる（ステップＳ４５）。このようにして、次のラインの走査する準備をするが、その前に走査開始前に下方向へシフトした画素マトリックスが画像の下端に達しているかを確認する（ステップＳ４７）。即ち、変数Ｙの値が「ＨＥＩＧＨＴ」−２に達したか否かを調べる。「−２」は、３画素分の幅を持つ３×３画素マトリックスが画像からはみ出さないという条件に基づく。
【００５４】
下端に達していなければ（ステップＳ４７のＹ）、ルーチンはステップＳ３７へ戻り、シフト後の注目画素がコーナーのパターンに該当するか否かを調べる。
一方、シフト後の画素マトリックスが画像の下端からはみ出した場合（ステップＳ４７のＮ）、操作が終了したと判断し、そのときのポインタ変数ｉの値を変数「ＦＰＭＡＸ」に格納する。ＦＰＭＡＸと特徴点配列ｆｐ［］とは、その画像に対応する特徴点情報を提供する。
【００５５】
≪距離情報の作成処理の詳細≫
続いて、図９のステップＳ２５に示す距離情報の作成処理の詳細について、図１１のフローチャートを用いて説明する。図１１は、図９のステップＳ２５に示す処理の詳細を示すフローチャートである。
図１１で、機器制御部１１は、同じ画像内の２つの特徴点の距離を各特徴点の組合せについてそれぞれ算出する。
最初に変数の初期化処理を行う。まず、１つ目の特徴点を参照するためのインデックス変数ｈ１にｈ１＝０を設定する（ステップＳ５１）。さらに、２つの特徴点の距離を格納する２次元の距離情報配列ｄｓ［］［］の各要素をゼロにクリアする。
次に、２つ目の特徴点を参照するためのインデックス変数ｈ２にｈ２＝０を設定する（ステップＳ５３）。
【００５６】
続いて、変数ｈ１とｈ２の値が等しいかどうかを調べる（ステップＳ５５）。初期化後はｈ１＝ｈ２＝０であるから、両者は等しい（ステップＳ５５のＹ）。両者が等しい場合、同じ特徴点を指し示しているので距離ｄを０にする（ステップＳ５７）。一方、ｈ１とｈ２が同じでない場合に、ｈ１、ｈ２がそれぞれ指し示す特徴点ｆｐ［ｈ１］とｆｐ［ｈ２］との距離を計算する（ステップＳ５９）。２つの特徴点の距離ｄは、２点の特徴点の特徴点座標をそれぞれ（Ｘ０，Ｙ０）および（Ｘ１，Ｙ１）とするとき、
ｄ＝√｛（Ｘ１−Ｘ０）＾２＋（Ｙ０−Ｙ１）＾２｝
で求められる。即ち、２次元平面のユークリッド距離として計算できる。
【００５７】
以上のステップＳ５７またはＳ５９で距離を求めたら、求まった距離ｄを、距離情報配列ｄｓ［ｈ１］［ｈ２］に格納する（ステップＳ６１）。
例えば、１つ目の要素である特徴点と４つ目の要素である特徴点距離がｄ１４の場合、ｈ１＝０，ｈ２＝３となるため距離情報配列ｄｓ［０］［３］にｄ１４を格納する。即ち、
ｄｓ［０］［３］＝ｄ１４
なお、４つ目の要素である特徴点と１つ目の要素である特徴点の距離ｄ４１は、ｈ１＝３，ｈ２＝０となるため、ｄｓ［３］［０］＝ｄ４１となる。ここで、ｄｓ［０］［３］とｄｓ［３］［０］とは同じ情報であるので、いずれか一方を省略してもよい。ここでは、説明を単純にするために２つの特徴点の全ての組合せについて距離を計算して距離情報配列ｄｓ［］［］に格納するものとして説明する。
【００５８】
次に、機器制御部１１は、２つ目の特徴点を参照するインデックスｈ２を１つ増加させたうえで（ステップＳ６３）、ｈ２がすべての特徴点を参照したかどうかを調べる（ステップＳ６５）。即ち、ｈ２の値がＦＰＭＡＸ達したか否かを調べる。ここで変数ＦＰＭＡＸには、図１０で特徴点情報を作成する際にその画像から抽出された特徴点の数が格納されている。
ｈ２がＦＰＭＡＸに達していない、即ち、ｈ２＜ＦＰＭＡＸの場合（ステップＳ６５のＹ）、ルーチンはステップＳ５５へ戻って新たな２つの特徴点の距離を計算して距離情報配列ｄｓ［］［］に格納する。
一方、ｈ２がＦＰＭＡＸに達した場合（ステップＳ６５のＮ）、ルーチンはステップＳ６７へ進み、１つ目の特徴点を参照するインデックス変数ｈ１を１つ増加させたうえで（ステップＳ６７）、ｈ１がすべての特徴点を参照したかどうかを調べる（ステップＳ６９）。
【００５９】
ｈ１がＦＰＭＡＸに達していない、即ち、ｈ１＜ＦＰＭＡＸの場合（ステップＳ６９のＹ）、ルーチンはステップＳ５３へ戻る。そして、ｈ２をゼロに初期化し、新たな１つ目の特徴点について、画像中のすべての特徴点との距離を計算して距離情報配列ｄｓ［］［］に格納する。即ち、新たなｈ１についてｈ２が０からＦＰＭＡＸ−１までの組合せのそれぞれの距離を計算して距離情報配列ｄｓ［］［］に格納する。
一方、前記ステップＳ６９で、ｈ１がＦＰＭＡＸに達した場合（ステップＳ６９のＮ）は、処理を終了する。
【００６０】
≪位置情報データベースのデータ構造≫
図１２は、この実施形態において作成される位置情報データベースのデータ構造を示す説明図である。
図１２に示すように、位置情報データベースは、各部屋座標における位置情報からなる。図１２の例では、ｎ箇所の異なる部屋座標の位置における位置情報が位置情報データベースに格納されている。各位置情報は、その位置を表す部屋座標の値ｘおよびｙとその位置で撮影された画像に係る特徴点配列（即ち、特徴点情報）からなる。
特徴点情報は、１つの画像から抽出された特徴点の配列である。図１２の例では、１つの画像からｍ個の特徴点が抽出されている。
特徴点配列中の各特徴点に対応する１つの要素は、その特徴点の画像内での位置を示す特徴点座標（Ｘ，Ｙ）と、前記特徴点を１つ目の特徴点として画像内のすべての特徴点との距離を示す距離情報ｄｓ［］［］からなる。ｍ個の特徴点のうちｈ番目の特徴点に係る距離情報は、ｄｓ［ｈ］［ｋ］で表される。ただし、ｋは０から（ｍ−１）までｍ個の値をとり、よって、ｄｓ［ｈ］［ｋ］は、ｈが固定でｋがｍ個の要素からなる。
【００６１】
≪特徴点とするパターンの例≫
図１３は、この実施形態において特徴点として検出する画素パターンを示す説明図である。図１３で、それぞれの画素パターンは３×３の画素マトリックスを示しており、画素マトリックス内の各画素は２値化された白または黒を表している。
この実施形態では、２値化後の画像の３×３画素マトリックスの領域を、予め定められたコーナーの画素パターンとマッチングしていく。図１３は、予め定められたコーナーの画素パターンを種類別に示している。
図１３で、（ａ）の８通りの画素パターンは直角コーナーの検出パターンを示す。（ｂ）の８通りの画素パターンは、鈍角コーナーの検出パターンを示す。また、（ｃ）の８通りの画素パターンは鋭角コーナーの検出パターンを示す。これらの何れかの画素パターンとマッチした場合、その３×３画素マトリックスの中央の画素を特徴点座標とする。
【００６２】
これに対して、（ｄ）の８通りの画素パターンはエッジのパターンである。コーナーでないので、特徴点としては抽出しない。
ただし、これは一例であって、コーナーに加えてエッジも特徴点として抽出する態様も考えられる。また、３×３画素マトリックスは一例に過ぎず、他の大きさの画素マトリックスをマッチングに適用する態様も考えられる。
なお、画像から特徴点を抽出する手法としては、ＳＩＦＴ、ＳＵＲＦ、ＯＲＢ、ＡＫＡＺＥなどが知られており、これら周知のアルゴリズムを適用すればよい。
【００６３】
図１４は、この実施形態において、物体の一例としてのテーブルが撮影された画像から特徴点が抽出される位置を視覚的に示す説明図である。図１４に示すように、テーブルの画像を２値化した後、画像内の注目画素を縦横にシフトさせていきながら３×３の画素マトリックスが図１３のコーナー検出パターンとマッチする点を探していく。例えば、テーブルの手前左側の脚の下端は、直角コーナーの検出パターンとマッチするので特徴点として抽出される。また、テーブルの手前右側の脚の下端は、鈍角コーナーのパターンとマッチするので特徴点として抽出される。一方、テーブルの手前中央部には、エッジのパターンが存在するが、コーナーでないために特徴点としない。このようにして、テーブルの画像からコーナーの検出パターンとマッチする複数の特徴点が抽出される。
【００６４】
≪位置の推定処理≫
続いて、この実施形態における位置の推定の詳細を説明する。
なお、「位置の推定」処理においてデータの検索は演算時間がかかるので、特徴点の演算処理は自走式掃除機１が充電台２０１にドッキングしている待機中に行ってもよい。
また、予め学習させたい位置で撮像部１３３に撮影を行わせるが、位置情報データベースの作成処理は掃除をしながら行うようにしてもよい。そして、位置情報データベースの作成を終えてデータベースが完成してから「位置の推定」処理のためのデータ検索を行ってもよい。
【００６５】
図１５は、この実施形態において、機器制御部１１が実行する位置の推定の全体の処理を示すフローチャートである。
例えば、「ソファー前だよ、この場所を覚えて」といった位置推定を要求するユーザーの指示に応答して機器制御部１１は、目標位置決定部１１ｄとして次の処理を実行する。
まず、その位置で撮像部１３３に周囲の光景を撮影させる。撮影された画像から特徴点情報を作成する（ステップＳ１０１）。特徴点情報の作成処理は、図１０で述べた処理と同様であるため詳細説明は省略するが、画像から複数の特徴点を抽出し、各特徴点を要素とする特徴点配列ｆｐ［］に特徴点情報を作成する。そして、その特徴点配列ｆｐ［］および特徴点数の値を示すＦＰＭＡＸの内容をクエリ格納部６１ｂに格納する。
【００６６】
続いて目標位置決定部１１ｄは、距離情報の作成を行う（ステップＳ１０３）。図１１の処理と同様であるため詳細説明は省略するが、作成された特徴点配列ｆｐ［］に基づいて、２つの特徴点のすべての組み合わせについて特徴点間の距離を計算し、距離情報配列ｄｓ［］［］に格納する。そして、距離情報配列ｄｓ［］［］の内容をクエリ格納部６１ｂに格納する。
さらに、目標位置決定部１１ｄは、以下の処理で使用する変数を初期化する（ステップＳ１０５）。まず、位置情報データベースを参照するためのインデックス変数ｊにｊ＝０（ゼロ）を設定して位置情報データベースに格納されている複数の位置情報のうち最初の位置情報を指すようにする。また、最大スコアを格納する一時変数ｓｍａｘにｓｍａｘ＝０（ゼロ）を設定してクリアする。そして、最大スコアを参照するためのインデックス変数ｋにｋ＝−１を設定する。また、比較用の特徴点配列ｃｆｐ［］、比較用の特徴点数の変数ＣＦＰＭＡＸおよび比較用の距離情報配列ｃｄｓ［］［］をクリアする。
【００６７】
次に、目標位置決定部１１ｄは、候補位置で撮影され前記ステップＳ１０１およびＳ１０３で撮影され特徴点情報および距離情報を用いて、位置情報データベースに格納されたすべての位置情報と順次マッチングを行うループ処理を実行する。
まず、位置情報データベースを参照するインデックスｊが、位置情報データベースに格納された位置情報の数を示す値、ＲＭＡＸ未満か否かを調べる（ステップＳ１０７）。変数ｊの初期値はゼロであるからその場合のステップＳ１０７の判定はＹｅｓとなりルーチンはステップＳ１０９へ進む。一方、判定がＮｏ、即ち、すべての位置情報についてマッチングを終えた場合は処理を終了する。
【００６８】
前記ステップＳ１０７の判定がＹの場合、目標位置決定部１１ｄは、インデックス変数ｊを用いて位置情報データベースの一つの位置情報を取り出す（ステップＳ１０９）。すなわち、その位置情報をクエリ格納部６１ｂに格納された目標位置に係る情報との比較対象とする。そして取り出した位置情報に係る特徴点配列を比較用の特徴点配列ｃｆｐ［］にコピーし、その特徴点数をＣＦＰＭＡＸにコピーする。さらに、前記位置情報に係る距離情報を比較用の距離情報配列ｃｄｓ［］［］にコピーする。
なお、比較対象とされた位置情報は、ステップＳ１１７からステップＳ１０７へ戻るループ処理によって順次変更され、位置情報データベース中のすべての位置情報と比較がなされるまでループする。
【００６９】
続いて目標位置決定部１１ｄは、特徴点配列ｆｐ［］、ｃｆｐ［］、距離情報配列ｄｓ［］［］、ｃｄｓ［］［］を用いて、マッチングの程度を表すスコアｓを計算する（ステップＳ１１１）。ｆｐ［］は、クエリ格納部６１ｂの特徴点配列であり、ｃｆｐ［］は比較対象が格納された特徴点配列である。ｄｓ［］［］は、クエリ格納部６１ｂの距離情報配列であり、ｃｄｓ［］［］は、比較対象が格納された距離情報配列である。スコアｓの計算手順の詳細は、図１６で説明する。
目標位置決定部１１ｄは、算出されたスコアｓがｓｍａｘより大きいか否かを調べる（ステップＳ１１３）。スコアｓがｓｍａｘより大きい場合（ステップＳ１１３のＹ）、変数ｓｍａｘにスコアｓを設定する。また、最大スコア参照用のインデックス変数ｋにｊで更新する（ステップＳ１１５）。即ち、変数ｓｍａｘにこれまでのうちで一番高いスコアを格納し、そのスコアを持つ位置情報を参照するインデックスを変数ｋに格納する。
そして、インデックス変数ｊを１つ増加させた後（ステップＳ１１７）、ルーチンはステップＳ１０７へ戻る。
【００７０】
以上のようにして、位置情報データベースに格納されたすべての位置情報について、マッチングを行って、最高のスコアを与える位置情報のインデックスを変数ｋに格納し、そのスコアをｓｍａｘに格納して処理を終了する。
処理が終了した時点で、変数ｋは、クエリ格納部６１ｂに格納された目標位置での特徴と最も類似した特徴を有する位置情報を指している。類似する位置情報が見つからなかった場合、変数ｋは初期値のｋ＝−１のままとなる。変数ｋが−１でないときは、変数ｋで参照する位置情報、即ち、位置情報データベースのｋ番目のレコードに相当する位置情報の部屋座標（ｘ，ｙ）が推定された目標位置である。
【００７１】
≪マッチング処理≫
図１５のステップＳ１１１で実行するマッチング処理の詳細について説明する。
図１６は、この実施形態におけるマッチング処理の手順を示すフローチャートである。
図１６で、まず目標位置決定部１１ｄは、スコアを格納する変数ｓをｓ＝０に設定してクリアする（ステップＳ１２１）。
そして、スコアの演算にあたり、クエリ格納部６１ｂに格納された特徴点配列ｆｐ［］に係る特徴点の中から特徴点座標の位置関係を評価するための基準特徴点（以下、単に基準点）を決定する処理を行う（ステップＳ１２３）。即ち、特徴点配列ｆｐ［］を比較対象の位置情報が格納された特徴点配列ｃｆｐ［］とのマッチングを調べるに際して、マッチングの基準とする特徴点（基準点）を決定する。
【００７２】
この実施形態において、マッチングは、特徴点配列ｆｐ［］中の３つの点と合同な三角形が特徴点配列ｃｆｐ［］中に少なくとも１つ存在するかに基づいて決定する。合同な三角形の対を構成する６点（３点と対をなす３点）を基準点と呼ぶ。基準点を構成する双方の３点のうち２点を選び、その２点（マッチング用基準点）と他のインデックス変数ｑ１で示される特徴点でマッチングの程度を表すスコアを計算する。図１７でその詳細を説明するが、ステップＳ１２３では、クエリ格納部６１ｂに格納された特徴点配列ｆｐ［］のうち３点の組合せと、位置情報データベース中の比較対象とされた位置情報の特徴点配列ｃｆｐ［］のうちの３点の組合せを順次比較していく。そして、配置関係が対応する３点（３点を頂点とする三角形が合同な３点）を１つ見出して基準点の３点とする。見出した３点のうちｆｐ［］側の２点（マッチング用基準点）を指すインデックス変数をｐ１、ｐ２に、ｃｆｐ［］側の２点（マッチング用基準点）を指すインデックス変数をｐ３、ｐ４に設定する。ｆｐ［ｐ１］がｃｆｐ［ｐ３］と対応し、ｆｐ［ｐ２］がｃｆｐ［ｐ４］と対応する。
【００７３】
特徴点配列ｆｐ［］中の２つのマッチング用基準点が決定されたら、次に目標位置決定部１１ｄは、特徴点配列ｆｐ［］の参照に用いるインデックス変数ｑ１をｑ１＝０に設定してクリアする（ステップＳ１２５）。続いて目標位置決定部１１ｄは、インデックス変数ｑ１の値が特徴点配列ｆｐ［］を構成する特徴点の数ＦＰＭＡＸ未満か否かを調べる（ステップＳ１２７）。即ち、クエリ格納部６１ｂに格納されたすべての特徴点について特徴点座標をチェックしたかどうかを調べる。
変数ｑ１がＦＰＭＡＸ未満であれば（ステップＳ１２７のＹ）、対応点を検索する処理（ステップＳ１２９）を行う。対応点の検索処理については、図１９でその詳細を説明するが、比較対象の特徴点配列ｃｆｐ［］の中に、対応する三角形に係る対応点があるかどうか調べる。その結果、対応点があれば（ステップＳ１３１のＹ）スコアｓを１だけ増加させる（ステップＳ１３３）。対応点がなければ（ステップＳ１３１のＮ）スコアｓはそのままにする。なお、図１９で説明するが、前記ステップＳ１２９で、同じ距離関係にある３点が見つからない場合、変数ｍ１の値にｍ１＝−１が設定されて戻る。
【００７４】
その後、目標位置決定部１１ｄはインデックス変数ｑ１を１だけ増加させる（ステップＳ１３５）。そして、ルーチンはステップＳ１２７へ戻り、ループする。
以上のようにして、特徴点配列ｆｐ［］を構成するすべての特徴点について対応点の検索を行ったら（ステップＳ１２７のＮ）、処理を終了する。処理が終了した時点で、スコアｓは、ステップＳ１２３で決定された２つのマッチング用基準点と同一画像内の他の１つの特徴点の３点を頂点とする複数組の三角形のうちで、合同な三角形（対応する３つの点）がいくつあるかを表している。スコアｓが大きい程、特徴点配列ｆｐ［］と比較対象の特徴点配列ｃｆｐ［］との特徴点の配置関係が類似している。
【００７５】
≪基準点の決定≫
図１７は、図１６に示すマッチング処理において、ステップＳ１２３に示す基準点の決定処理の詳細を示すフローチャートである。
図１７で、目標位置決定部１１ｄは、処理に用いる変数ｍ１、ｍ２およびｍ３にそれぞれゼロを設定してクリアする（ステップＳ１４１）。ｍ１、ｍ２およびｍ３は、いずれも特徴点配列ｆｐ［］の参照に用いるインデックス変数であり、以下の処理では参照する特徴点が重複しないように異なる値をとりながら変化する。
次に目標位置決定部１１ｄは、インデックス変数ｍ２にｍ２＝ｍ１＋１を設定する（ステップＳ１４３）。ステップＳ１４３はループ内にあって繰り返し処理されるが、初回はｍ１が初期値（ゼロ）であって、ｍ２はそれより１つ大きな値、ｍ２＝０＋１＝１になる。
【００７６】
続いて目標位置決定部１１ｄは、インデックス変数ｍ３にｍ３＝ｍ２＋１を設定する（ステップＳ１４５）。ステップＳ１４５はループ内にあって繰り返し処理されるが、初回はｍ２が１であってｍ３はそれより１つ大きな値、ｍ３＝１＋１＝２である。
続いて、目標位置決定部１１ｄは、基準点の検索処理を実行する（ステップＳ１４７）。即ち、クエリ格納部６１ｂに格納されている特徴点配列ｆｐ［］のうち、現在のｍ１、ｍ２およびｍ３を用いてそれぞれ参照される特徴点配列ｆｐ［ｍ１］、ｆｐ［ｍ２］、ｆｐ［ｍ３］の３つの特徴点を得る。それらを基準点のうち一方の３点と仮定した場合、それと同じ距離関係にある特徴点（基準点の他方）が位置情報データベース内の比較対象とされている位置情報にあるか検索する。対応する３点を探索する処理の詳細は、図１８で説明する。
【００７７】
探索の結果、基準点、即ち、同じ距離関係にある３点の対が存在する場合（ステップＳ１４９のＹ）は処理を終了するが、存在しなければ（ステップＳ１４９のＮ）以下の処理をループする。なお、図１８で説明するが、前記ステップＳ１４９で、基準点が見つからない場合、変数ｐ１の値にｐ１＝−１が設定されて戻る。一方、対応する基準点が見つかった場合、ペアをなす双方の３点のうち２点、ペア全体として４点を参照するインデックス変数がｐ１〜ｐ４に設定される。
まず、目標位置決定部１１ｄは、ｍ１，ｍ２およびｍ３の３つのインデックス変数のうちでもっとも大きな値をとるｍ３を１つ増加させて（ステップＳ１５１）、特徴点数ＦＰＭＡＸ未満か否かを調べる（ステップＳ１５３）。即ち、インデックスが特徴点配列の範囲内を指しているか調べる。
特徴点配列の範囲内であれば（ステップＳ１５３のＹ）、ルーチンはステップＳ１４７へ戻る。そして、更新されたｍ３とｍ１とｍ２を用いて参照される特徴点を基準点のうちの一方と仮定し、それと同じ距離関係にある特徴点が位置情報データベース内の各位置情報にあるか検索する。
【００７８】
一方、変数ｍ３が特徴点配列の範囲内になければ（ステップＳ１５３のＮ）、ｍ３がとり得る範囲を網羅したものとして、今度は変数ｍ２を１つ増加させる（ステップＳ１５５）。そして、ｍ２が（ＦＰＭＡＸ−１）未満か否かを調べる（ステップＳ１５７）。即ち、ｍ２の値がインデックスとしてとり得る範囲内にあるか調べる。なお、ｍ３と重複しないように、ｍ２がとる最大値はｍ３の最大値であるＦＰＭＡＸより１つ少ない。
ｍ２がとり得る値の範囲内であれば（ステップＳ１５７のＹ）、ルーチンはステップＳ１４５へ戻り、更新されたｍ２に対するｍ３の値を設定する。そして、ｍ１、ｍ２、ｍ３を用いて参照される特徴点を基準点のうちの一方と仮定した場合、それと同じ距離関係にある特徴点が位置情報データベース内の各位置情報にあるか検索する。
【００７９】
一方、変数ｍ２がとり得る値の範囲内になければ（ステップＳ１５７のＮ）、ｍ２がとり得る範囲を網羅したものとして、今度は変数ｍ１を１つ増加させる（ステップＳ１５９）。そして、ｍ１が（ＦＰＭＡＸ−２）未満か否かを調べる（ステップＳ１６１）。即ち、ｍ１の値がインデックスとしてとり得る範囲内にあるか調べる。なお、ｍ２およびｍ３と重複しないように、ｍ１がとる最大値はｍ３の最大値であるＦＰＭＡＸより２つ少ない。
【００８０】
ｍ１がとり得る値の範囲内であれば（ステップＳ１６１のＹ）、ルーチンはステップＳ１４３へ戻り、更新されたｍ１に対するｍ２およびｍ３の値を設定する。そして、ｍ１、ｍ２、ｍ３を用いて参照される特徴点を基準点の一方と仮定した場合、それと同じ距離関係にある特徴点が位置情報データベース内の各位置情報にあるか検索する。
一方、変数ｍ１がとり得る値の範囲内になければ（ステップＳ１６１のＮ）、ｍ１がとり得る範囲を網羅したものと判断する。そして、ｍ１，ｍ２およびｍ３がとり得るすべての範囲で特徴点配列ｆｐ［］の特徴点を組み合わせてみても対応する３点がなかったことを示すため、変数ｍ１にｍ１＝−１を設定し（ステップＳ１６３）、基準点の抽出処理を終了する。
以上のように、図１７の処理で、クエリ格納部６１ｂに格納された特徴点配列ｆｐ［］中の３点と同じ距離関係の３点が比較対象の位置情報ｃｆｐ［］（図１５のステップＳ１０９で取得されたもの）中に見つからなかった場合、変数ｍ１はｍ１＝−１の値をとる。対応する基準点が見つかった場合、特徴点配列ｆｐ［］、ｃｆｐ［］の基準点を示す特徴点座標のインデックスに係る値が一旦、変数ｍ１，ｍ２，ｍ３、ｎ１，ｎ２，ｎ３のいずれかに格納される。そして、後から図１８で詳細に説明するが、それらの値は最終的に変数ｐ１，ｐ２，ｐ３およびｐ４に入る。
【００８１】
≪３点の距離関係で対応関係をチェックすることの妥当性≫
ここで、３点の距離関係を用いて対応関係をチェックしているのは、比較する２つの画像に収められている特徴点が回転や水平・垂直移動していることを考慮したものである。
即ち、自走式掃除機１が床面を走行して位置が変わると、位置が変化に対応して撮像部１３３で撮影される画像が変化する。この実施形態に於いて、撮像部１３３は上方とその周囲の光景を撮影するところ、床面と平行な天井面にある物体あるいは天井面に近くにある物体から抽出される特徴点は、平行移動および回転のみの変化を受ける。
自走式掃除機１の位置の変化に伴う画像の変化を幾何学的変換と捉えると、天井面は回転および並進のみの幾何学的変換、即ちユークリッド変換として考えることができる。２点間の距離は、画像がユークリッド変換を受けても変わらない。即ち、２点の距離は平行移動（並進）および回転の幾何学的変換に対する不変量（幾何学的返還を受けても変わらない量）として知られている。
【００８２】
天井面から離れた位置にある物体の画像については、自走式掃除機１の移動に伴って回転や並進以外の他に、縮小拡大、剪断歪み（矩形が平行四辺形になる歪み）さらには射影歪（矩形が台形になる歪み）みの変形を受ける。しかし、区画が細かければ、目標位と最近傍の区画の位置は近く、それらの位置で撮影された画像の差異は小さく、拡大縮小、剪断歪みあるいは射影歪みは無視できる。ただし、同じ位置でも自走式掃除機１の方向の違いによる回転の影響は無視できない。
以上のように、回転と並進を伴うユークリッド変換を考慮して対応する画像を検索すればよい。従って、ユークリッド変換に対する不変量である特徴点間の距離関係を用いた検索は有効である。
【００８３】
≪対応する基準点の検索−基準点決定時≫
図１８は、図１７のステップＳ１４７に示す基準点の検索処理、即ち対応する３点を検索する処理を示すフローチャートである。
図１８で、目標位置決定部１１ｄは、比較用の特徴点配列を参照するインデックス変数ｎ１、ｎ２およびｎ３をクリアする（ステップＳ１７１）。即ち、変数ｎ１，ｎ２およびｎ３にｎ１＝０、ｎ２＝０、ｎ３＝０をそれぞれ設定する。また、それぞれ対をなす３点のうち基準点とする２点を格納する４つのインデックス変数ｐ１，ｐ２，ｐ３およびｐ４をクリアする。
【００８４】
次に目標位置決定部１１ｄは、インデックス変数ｎ２にｎ２＝ｎ１＋１を設定する（ステップＳ１７３）。ステップＳ１７３はループ内にあって繰り返し処理されるが、初回はｎ１が初期値（ゼロ）であって、ｎ２はそれより１つ大きな値、ｎ２＝０＋１＝１になる。
さらに目標位置決定部１１ｄは、インデックス変数ｎ３にｎ３＝ｎ２＋１を設定する（ステップＳ１７５）。ステップＳ１７５はループ内にあって繰り返し処理されるが、初回はｎ２が１であってｎ３はそれより１つ大きな値、ｎ３＝１＋１＝２である。
【００８５】
続いて、目標位置決定部１１ｄは、特徴点配列ｆｐ［ｍ１］，ｆｐ［ｍ２］およびｆｐ［ｍ３］の３つの特徴点と、比較用の特徴点配列ｆｐ［ｎ１］，ｆｐ［ｎ２］およびｆｐ［ｎ３］の３つの特徴点が、同じ距離関係にあるか否かを調べる。具体的には、それぞれの３つの特徴点が、以下の距離条件１、距離条件２または距離条件３の何れかを満たすか否かを調べる。
ここで、特徴点配列ｆｐ［］に基づく距離情報配列がｄｓ［］［］、比較用特徴点配列ｃｆｐ［］に基づく比較用距離情報配列がｃｄｓ［］［］であり、距離を比較する場合の許容誤差をＤＬＩＭＩＴとし、Ｘの絶対値をＡＢＳ（Ｘ）で表すものとする。
許容誤差ＤＬＩＭＩＴについて述べると、位置情報が登録された位置と候補位置とが全く同じ位置とは限らないので、撮影された画像を照合する場合に、ある程度の誤差を許容する必要ある。ただし、この許容誤差は認識精度に影響するので十分考慮して設定されるべきである。
【００８６】
前記距離条件１は、
ＡＢＳ（ｄｓ［ｍ１］［ｍ２］−ｃｄｓ［ｎ１］［ｎ２］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｍ２］［ｍ３］−ｃｄｓ［ｎ２］［ｎ３］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｍ３］［ｍ１］−ｃｄｓ［ｎ３］［ｎ１］）＜ＤＬＩＭＩＴ
である。即ち、３点の距離関係、言い換えると３点を頂点とする三角形の各辺の長さの相違がいずれも許容誤差未満の範囲にあって三角形どうしが実質的に合同であることを表している。
【００８７】
前記距離条件２は、
ＡＢＳ（ｄｓ［ｍ１］［ｍ２］−ｃｄｓ［ｎ２］［ｎ３］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｍ２］［ｍ３］−ｃｄｓ［ｎ３］［ｎ１］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｍ３］［ｍ１］−ｃｄｓ［ｎ１］［ｎ２］）＜ＤＬＩＭＩＴ
である。これは、３点の対応関係が「距離条件１」と異なるものの、距離関係がいずれも許容誤差以下の範囲にあることを表している。
【００８８】
前記距離条件３は、
ＡＢＳ（ｄｓ［ｍ１］［ｍ２］−ｃｄｓ［ｎ３］［ｎ１］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｍ２］［ｍ３］−ｃｄｓ［ｎ１］［ｎ２］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｍ３］［ｍ１］−ｃｄｓ［ｎ２］［ｎ３］）＜ＤＬＩＭＩＴ
である。
これは、３点の対応関係が「距離条件１」や「距離条件２」と異なるものの、距離関係がいずれも許容誤差以下の範囲にあることを表している。
【００８９】
目標位置決定部１１ｄは、まず前記距離条件１が満たされているかを調べる（ステップＳ１７７）。距離条件１が満たされていれば（ステップＳ１７７のＹ）、インデックス変数ｐ３にｐ３＝ｎ１を設定し、同様にｐ４にｐ４＝ｎ２を設定する（ステップＳ２０１）。ｐ３およびｐ４は、比較用の特徴点配列ｃｆｐ［］を参照するためのインデックス変数である。
さらに、目標位置決定部１１ｄは、クエリ格納部６１ｂに格納された特徴点配列ｆｐ［］を参照するためのインデックス変数ｐ１にｐ１＝ｍ１を設定し、同様にｐ２にｐ２＝ｍ２を設定する（ステップＳ２０７）。そして、処理を終了する。
【００９０】
一方、前記距離条件１が満たされない場合（ステップＳ１７７のＮ）、ルーチンはステップＳ１７９へ進み、前記距離条件２が満たされているかを調べる。距離条件２が満たされていれば（ステップＳ１７９のＹ）、比較用特徴点配列ｃｆｐ［］を参照するためのインデックス変数ｐ３にｐ３＝ｎ２を設定し、同様にｐ４にｐ４＝ｎ３を設定する（ステップＳ２０３）。その後、ルーチンは前述のステップＳ２０７へ進み、インデックス変数ｐ１にｐ１＝ｍ１を設定し、同様にｐ２にｐ２＝ｍ２を設定して処理を終了する。
前記距離条件２が満たされない場合（ステップＳ１７９のＮ）、ルーチンはステップＳ１８１へ進み、前記距離条件３が満たされているかを調べる。距離条件３が満たされていれば（ステップＳ１８１のＹ）、比較用特徴点配列ｃｆｐ［］を参照するためのインデックス変数ｐ３にｐ３＝ｎ３を設定し、同様にｐ４にｐ４＝ｎ１を設定する（ステップＳ２０５）。その後、ルーチンは前述のステップＳ２０７へ進み、インデックス変数ｐ１にｐ１＝ｍ１を設定し、同様にｐ２にｐ２＝ｍ２を設定して処理を終了する。
【００９１】
以上のように、同じ距離関係にある基準点のペアを見出したら、クエリ格納部６１ｂに格納された特徴点配列ｆｐ［］と位置情報データベース中の比較用特徴点配列ｃｆｐ［］との対応する点を参照するインデックス変数を設定して処理を終了する。
一方、距離条件１〜３の何れも満たされない場合（ステップＳ１８１のＮ）、目標位置決定部１１ｄは、次の処理を行う。まず、ｎ１，ｎ２およびｎ３の３つのインデックス変数のうちでもっとも大きな値をとるｎ３を１つ増加させる（ステップＳ１８３）。そして、特徴点数ＣＦＰＭＡＸ未満か否かを調べる（ステップＳ１８５）。即ち、インデックスが比較用特徴点配列の範囲内を指しているか調べる。
比較用特徴点配列の範囲内であれば（ステップＳ１８５のＹ）、ルーチンはステップＳ１７７へ戻る。そして、更新されたｎ３とｎ１とｎ２を用いて参照される比較用特徴点を基準点ペアのうちの一方と仮定した場合、距離条件１〜３の何れかを満たす他方の基準点ペアがクエリ格納部６１ｂに格納された特徴点配列内にあるか検索する。
【００９２】
一方、変数ｎ３が比較用特徴点配列の範囲内になければ（ステップＳ１８５のＮ）、ｎ３がとり得る範囲を網羅したものとして、今度は変数ｎ２を１つ増加させる（ステップＳ１８７）。そして、ｎ２が（ＣＦＰＭＡＸ−１）未満か否かを調べる（ステップＳ１８９）。即ち、ｎ２の値がインデックスとしてとり得る範囲内にあるか調べる。なお、ｎ３と重複しないように、ｎ２がとる最大値はｎ３の最大値であるＣＦＰＭＡＸより１つ少ない。
ｎ２がとり得る値の範囲内であれば（ステップＳ１８９のＹ）、ルーチンはステップＳ１７５へ戻り、更新されたｎ２に対するｎ３の値を設定する。そして、ｎ１、ｎ２、ｎ３を用いて参照される特徴点を基準点ペアのうちの一方と仮定した場合、距離条件１〜３の何れかを満たす他方の基準点ペアがクエリ格納部６１ｂに格納された特徴点配列内にあるか検索する。
【００９３】
一方、変数ｎ２がとり得る値の範囲内になければ（ステップＳ１８９のＮ）、ｎ２がとり得る範囲を網羅したものとして、今度は変数ｎ１を１つ増加させる（ステップＳ１９１）。そして、ｎ１が（ＦＰＭＡＸ−２）未満か否かを調べる（ステップＳ１９３）。即ち、ｎ１の値がインデックスとしてとり得る範囲内にあるか調べる。なお、ｎ２およびｎ３と重複しないように、ｎ１がとる最大値はｎ３の最大値であるＦＰＭＡＸより２つ少ない。
ｎ１がとり得る値の範囲内であれば（ステップＳ１９３のＹ）、ルーチンはステップＳ１７３へ戻り、更新されたｎ１に対するｎ２およびｎ３の値を設定する。そして、ｎ１、ｎ２、ｎ３を用いて参照される特徴点を基準点ペアのうちの一方と仮定した場合、距離条件１〜３の何れかを満たす他方の基準点ペアがクエリ格納部６１ｂに格納された特徴点配列内にあるか検索する。
【００９４】
一方、変数ｎ１がとり得る値の範囲内になければ（ステップＳ１９３のＮ）、ｎ１がとり得る範囲を網羅したものと判断する。
目標位置決定部１１ｄは、ｎ１，ｎ２およびｎ３がとり得るすべての範囲で特徴点配列ｆｐ［］の特徴点の組み合わせてみても対応する３点がなかったことを示すため、変数ｐ１にｐ１＝−１を設定し（ステップＳ１９５）、基準点ペアの抽出処理を終了する。
以上のように、図１８の処理で基準点ペアが見つからなかった場合、変数ｐ１はｐ１＝−１の値をとる。一方、基準点ペアが見つかった場合、対応する点を参照するインデックス変数がｐ１〜ｐ４に設定される。基準点のうちｆｐ［ｐ１］の特徴点とｃｆｐ［ｐ３］の特徴点とが対応し、さらにｆｐ［ｐ２］の特徴点とｃｆｐ［ｐ４］の特徴点とが対応する。
【００９５】
≪対応点の検索処理≫
続いて、図１６のステップＳ１２９に示す対応点の検索処理の詳細について説明する。
図１９は、図１６に示す対応点の検索処理を示すフローチャートである。図１９に示すように、目標位置決定部１１ｄは、まず、比較用特徴点配列ｃｆｐ［］を参照するためのインデックス変数ｑ２にｑ２＝０を設定してクリアする（ステップＳ２１１）。
そして、特徴点配列ｆｐ［ｑ１］に係る特徴点と他の任意の２点からなる３つの特徴点と、比較用特徴点配列ｃｆｐ［ｑ２］に係る特徴点と他の任意の２点からなる３つの特徴点とが、以下の距離条件Ａ，Ｂ，Ｃの何れかに適合するかを調べる（ステップＳ２１３）。
【００９６】
前記距離条件Ａは、
ＡＢＳ（ｄｓ［ｐ１］［ｐ２］−ｃｄｓ［ｐ３］［ｐ４］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｐ２］［ｑ１］−ｃｄｓ［ｐ４］［ｑ２］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｑ１］［ｐ１］−ｃｄｓ［ｑ２］［ｐ３］）＜ＤＬＩＭＩＴ
である。これは、３点を頂点とする三角形の各辺の長さがいずれも許容誤差未満の範囲で等しく、三角形どうしが実質的に合同であることを表している。
【００９７】
前記距離条件Ｂは、
ＡＢＳ（ｄｓ［ｐ１］［ｐ２］−ｃｄｓ［ｐ４］［ｑ２］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｐ２］［ｑ１］−ｃｄｓ［ｑ２］［ｐ３］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｑ１］［ｐ１］−ｃｄｓ［ｐ３］［ｐ４］）＜ＤＬＩＭＩＴ
である。これは、３点の対応関係が「距離条件Ａ」と異なるものの、三角形どうしが実質的に合同であることを表している。
【００９８】
前記距離条件Ｃは、
ＡＢＳ（ｄｓ［ｐ１］［ｐ２］−ｃｄｓ［ｑ２］［ｐ３］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｐ２］［ｑ１］−ｃｄｓ［ｐ３］［ｐ４］）＜ＤＬＩＭＩＴ、かつ
ＡＢＳ（ｄｓ［ｑ１］［ｐ１］−ｃｄｓ［ｐ４］［ｑ２］）＜ＤＬＩＭＩＴ
である。これは、３点の対応関係が「距離条件Ａ」や「距離条件Ｂ」と異なるものの、三角形どうしが実質的に合同であることを表している。
即ち、クエリ格納部６１ｂに格納された３つの特徴点ｆｐ［ｐ１］，ｆｐ［ｐ２］，ｆｐ［ｑ１］と位置情報データベース中のある位置情報に係る３つの特徴点ｃｆｐ［ｐ３］，ｃｆｐ［ｐ４］，ｃｆｐ［ｑ２］とが同じ距離関係にあるかどうかを判断する。ここで、ｆｐ［ｐ１］，ｆｐ［ｐ２］，ｃｆｐ［ｐ３］，ｃｆｐ［ｐ４］は、ステップＳ１２３の処理で決定されたマッチング用基準点である。
【００９９】
距離条件Ａ，Ｂ，Ｃの何れかを満たしていれば（ステップＳ２１３のＹ）、処理を終了する。
一方、距離条件Ａ，Ｂ，Ｃの何れも満たさない場合（ステップＳ２１３のＮ）、目標位置決定部１１ｄは、まずインデックス変数ｑ２を１だけ増加させて（ステップＳ２１５）、ｑ２が特徴点数ＣＦＰＭＡＸ未満か否かを調べる（ステップＳ２１７）。特徴点配列ｃｆｐ［］のすべての座標の組み合わせについてチェックするためのループ処理に係る判断である。
ｑ２がＣＦＰＭＡＸ未満であれば、ルーチンはステップＳ２１３へ戻り、更新されたインデックス変数ｑ２について、前記距離条件Ａ，Ｂ，Ｃの何れかに適合するか否かを調べる。
【０１００】
一方、ｑ２がＣＦＰＭＡＸに達したら、特徴点配列ｃｆｐ［］のすべてのすべての座標の組み合わせについてチェックしたが、前記距離条件Ａ，Ｂ，Ｃのいずれにも適合しなかったと判断する。それを表すために、インデックス変数ｑ２にｑ２＝−１を設定し（ステップＳ２１９）、処理を終了する。
以上が、対応点の検索処理である。
【０１０１】
≪特徴点のマッチングの視覚的説明≫
図１６〜図１９に示す特徴点配列ｆｐ［］と比較用特徴点配列ｃｆｐ［］の特徴点のマッチング処理について、その処理を視覚的に説明する。
図２０Ａおよび図２０Ｂは、この実施形態において、特徴点のマッチングに用いる基準点の決定処理を視覚的に示す説明図である。
図２０Ａに示すように、目標位置決定部１１ｄは、基準点を決定する場合にまず特徴点配列ｆｐ［］と比較用特徴点配列ｃｆｐ［］からそれぞれ３つの特徴点を選ぶ。ｆｐ［］から３つの特徴点を選ぶ組合せは複数存在し、同様にｃｆｐ［］から３つの特徴点を選ぶ組合せも複数存在する。
目標位置決定部１１ｄは、３点のうち２点の特徴点間の距離、即ち３点を頂点とする三角形の３つの辺の長さを計算する。そして、３辺の長さが同じ三角形をｆｐ［］とｃｆｐ［］から探す。図２０Ａに示す例で、ｆｐ［］は１５個の特徴点からなり、ｃｆｐ［］は１２個の特徴点からなる。それぞれに星印で示す３つの特徴点が、合同な三角形であり、丸印は他の特徴点を示す。
【０１０２】
合同な三角形を見出したらその３つの頂点（特徴点）のうち２点をマッチング用基準点として選び、マッチング用基準点の２点とそれ以外の特徴点との距離関係を調べる。そして、２つのマッチング用基準点と他の１つの特徴点の３点が同じ距離関係にあるもの、即ち合同な三角形をなすもの（基準点ペア）をｆｐ［］とｃｆｐ［］から探す。見つかった合同な三角形の数をスコアとして計算する。
図２０Ｂで、ｆｐ［］の１５個の特徴点から３つの基準点を除くと、特徴点の数は１２点である。それら１２点と２点のマッチング用基準点がなす三角形は１２通り存在する。一方、ｃｆｐ［］の１２個の特徴点から３つの基準点を除くと、特徴点の数は９点である。それら９点と２点のマッチング用基準点がなす三角形は９通り存在する。そこで、ｆｐ［］に係る１２個の三角形とｃｆｐ［］に係る９個の三角形のうちで合同な三角形の組合せが何個存在するかをしらべて、その数をマッチングのスコアｓとする。図２０Ｂの場合、ＯＫの特徴点が９個あるので、スコアｓはｓ＝９／１２である。
なお、三角形の辺の長さを比較する際にはある程度の誤差を許容する。フローチャートの説明では、この許容誤差の値をＤＬＩＭＩＴとしている。ＤＬＩＭＩＴの大きさは、認識精度に影響するのでカメラ特性や撮影間隔によって設計者により適宜決定されるべきである。
前述のように２点間の距離は回転および並進を伴うユークリッド変換に対して不変であるから、ｆｐ［］とｃｆｐ［］とで自走式掃除機１の向きが異なっていても高い精度でマッチングが判断できる。
【０１０３】
図２１は、この実施形態において、特徴点のマッチングによる画像検索を視覚的に示す説明図である。位置（視点）が異なると同一物体を見ても特徴点の配置関係が変化する。マッチング対象の画像と各位置における画像の特徴点の配置関係を照合して、マッチング対象の画像と配置関係が最も似た画像に基づいて視点の位置（撮影位置）を決定できる。具体的には、各特徴点に対してマッチングの基準となる２つの特徴点（マッチング用基準点）からの距離を計算し、マッチング対象と距離の関係が近いものはＯＫ、そうでないものはＮＧとしてＯＫの特徴点数をスコアとすればよい。
【０１０４】
図２２は、この実施形態において、算出するスコアの概念を視覚的に示す説明図である。図２２で、目標位置として学習させる場所の画像から特徴点配列ｆｐ［］が作成される。位置情報データベースの各位置における画像は、マッチングを行う際に比較用特徴点配列ｃｆｐ［］に格納される。両者に距離関係の対応する３点が見つかった場合に、スコアｓの計算が行われる。スコアｓの分母は、特徴点配列ｆｐ［］の特徴点数から図２２に星印で示す基準点の数３を差引いたものである。スコアｓの分岐は、両者の基準点（星印で示す）を重ね合わせたとき、○印で示す他の特徴点のうち重なった特徴点の数である。
【０１０５】
≪部屋の画像のマッチング例≫
図２３は、この実施形態において、撮影された部屋の配置と撮影位置を示す説明図である。自走式掃除機は、縦横マトリクス状の区画の各位置で周囲の光景を撮影して得られる位置情報を位置情報データベース格納部に格納するが、ここでは説明を単純にするため（１）〜（５）５箇所の位置で撮影された画像で説明する。
図２３において、破線で枠を示した照明Ａ、照明Ｂおよびエアコンは、天井または天井付近に配置された物体である。それ以外の物体は床面に配置されているが、いずれもかなりの高さがある。
【０１０６】
この実施形態で、撮像部１３３は、上方と周囲の光景が一度に撮影可能な魚眼レンズを備え、上方に向けて撮影を行う。
図２４Ａは、この実施形態において、図２３に示す部屋内の候補位置で撮影された画像の一例を示す説明図である。自走式掃除機１に目標位置として学習させたい位置の画像である。
図２４Ｂは、図２３に示す位置（１）で撮影された画像の例を示す説明図である。
図２４Ａと図２４Ｂは、両者の画像から抽出される特徴点を示している。特徴点は、基準点を星印で、他の点を○印で示している。さらに、距離関係が一致した特徴点は実線で示し、距離関係が一致しない特徴点を鎖線で示している。両者のマッチングに係るスコアは、ｓ＝４／８である。
【０１０７】
図２５Ａは、図２４Ａと同じ位置で撮影された画像を示す説明図である。
図２５Ｂは、図２３に示す位置（２）で撮影された画像の例を示す説明図である。
特徴点の表記方法は、図２４Ａおよび図２４Ｂと同様である。マッチングのスコアは、ｓ＝６／８である。
図２６Ａは、図２４Ａと同じ位置で撮影された画像を示す説明図である。
図２６Ｂは、図２３に示す位置（３）で撮影された画像の例を示す説明図である。
特徴点の表記方法は、図２４Ａおよび図２４Ｂと同様である。マッチングのスコアは、ｓ＝５／８である。
図２７Ａは、図２４Ａと同じ位置で撮影された画像を示す説明図である。
図２７Ｂは、図２３に示す位置（４）で撮影された画像の例を示す説明図である。
特徴点の表記方法は、図２４Ａおよび図２４Ｂと同様である。マッチングのスコアは、ｓ＝１／８である。
【０１０８】
図２８Ａは、図２４Ａと同じ位置で撮影された画像を示す説明図である。
図２８Ｂは、図２３に示す位置（５）で撮影された画像の例を示す説明図である。
特徴点の表記方法は、図２４Ａおよび図２４Ｂと同様である。マッチングのスコアは、ｓ＝１／８である。
よって、目標位置決定部１１ｄは、最大のスコアを与える図２５Ｂの位置を、目標位置と判断する。
図２９は、図２４Ａに示す特徴点が画像から抽出される様子を視覚的に示す説明図である。
特徴点抽出部１１ｃは、撮像部１３３で撮影された画像を二値化し、コーナーを表す画素の位置を特徴点として抽出する。
【０１０９】
（実施の形態２）
実施の形態１で、目標位置決定部１１ｄは、ユーザーが候補位置を学習させる段階で、位置情報データベースの最近傍探索を行って候補位置の部屋座標を取得した。それと異なる態様として、候補位置の学習段階においては、その位置で撮影した画像から特徴点情報と距離情報を作成し、その特徴点情報と距離情報をその候補位置を識別するキーワードと関連付けて記憶部６１に格納してもよい。
その後、ユーザーから「テレビの前を掃除して」との指示を受けた際に、記憶部６１に格納された候補位置のうち「テレビの前」のキーワードに該当する候補位置を検索し、距離情報を取得する。そして、最近傍探索を行って位置情報データベースの中で距離情報が最も類似する位置情報を見出して、その位置情報に係る部屋座標をもとめてもよい。
この態様によれば、位置情報データベースの作成が未だ行われていなくても候補位置を学習させることが可能である。位置情報データベースは、学習した候補位置へ移動すべき指示をうける次点までに作成されていればよい。
【０１１０】
（実施の形態３）
また、ユーザーからの指示に応答して位置情報データベースの作成を行うだけでなく、例えば、自走式掃除機１が部屋の掃除をしているときに、位置情報データベースを合わせて作成してもよい。掃除の度に位置情報データベースをチェックし、更新すれば部屋の模様替えがあったことを検出できる。その場合、ユーザーに部屋の光景が代わったので候補位置の学習をやり直すべきことを知らせることができる。
【０１１１】
（実施の形態４）
あるいは、位置情報データベースの作成が未だ行われていない段階で候補位置の学習がなされた場合に限って、候補位置の部屋座標に代えて特徴点情報と距離情報を格納していてもよい。そして、位置情報データベースが完成した時点で先近傍検索を行って候補位置の部屋座標を求め、特徴点情報と距離情報を部屋座標で置換してもよい。
【０１１２】
（実施の形態５）
以上の実施形態で、３つの基準点の場合について説明したが、基準点の数は必ずしも３つに限定されるものでない。３以上の数であってもよい。例えば、４つの基準点を用いる場合、合同な四角形を探すことにする。三角形よりも辺の数が多ければ、偶然に合同なものが見つかる可能性はより小さくなるので精度のよいマッチングが実現できる。ただし、辺の数が多いと距離の計算量が増えるので、設計者は適当な数を選択すべきである。
なお、基準点が４点の場合、マッチング用基準点は３点にすればよい。２点でもかまわないが、その場合は任意の他の２点との組合せについてスコアを計算することになるのでスコアを計算する処理量が多くなるが、スコアが多数の組み合わせに基づいて計算されるので、マッチングの精度は高い。
なお、３つの基準点の場合、マッチング用基準点の数は２つに限らず１つでもよい。ただし、スコアの計算量が多くなる。
【０１１３】
（実施の形態６）
以上の実施形態では、２点間の距離に基づいて特徴点の対応関係を判断した。これは、２点の距離がユークリッド変換に対して不変量であるとの考えに基づく。しかし、２点間の距離に限らず、ユークリッド変換に対する不変量（ユークリッド不変量）であれば適用可能である。例えば、二つの直線間の角度や、閉領域の面積はユークリッド不変量であるので、２点の距離に代えてその何れかの不変量を用いてもよい。
さらに、ユークリッド変換よりも変形の自由度の高い相似変換、アフィン変換や射影変換に対応できるように相似変換のもとでの不変量（相似不変量）、アフィン変換のもとでの不変量（アフィン不変量）や射影変換のもとでの不変量（射影不変量）を用いてもよい。
【０１１４】
相似不変量としては、２直線間の角度のほかに、距離の比、面積の比などが知られている。また、アフィン不変量としては位置直線上の３点の距離の比が知られている。射影不変量としては、複比が知られている。
自由度の高い幾何学的変換に対する不変量を用いれば、異なる位置（視点）で撮影された画像の歪みの影響を受けにくくなる反面、不変量の計算処理の負荷が大きくなるので、その不変量を適用してマッチングを行うかは、設計者が適宜選択すべきである。
【０１１５】
以上に述べたように、
（i）この発明による自走式電子機器は、走行を制御する走行制御部と、前記走行に伴って変化する位置を検出する位置検出部と、周囲の光景を撮影する撮像部と、撮影された画像から複数の特徴点を抽出する特徴点抽出部と、走行領域内の複数の位置において前記撮像部が撮影した画像に係る特徴点とその撮影が行われた位置とが関連付けられて登録された位置情報を予め格納する位置情報データベース格納部と、目標とすべき位置において前記撮像部が撮影した画像に係る特徴点を格納するクエリ格納部と、前記クエリ格納部に格納された特徴点と前記位置情報データベース格納部に格納された各位置情報に含まれる特徴点との配置関係を照合し、対応する配置関係にある特徴点を最も多く含む位置情報に基づいて目標位置を決定する目標位置決定部とを備え、前記走行制御部は、前記位置検出部が検出する現在の位置と決定された目標位置とに基づいてその目標位置への走行を制御することを特徴とする。
【０１１６】
この発明において、位置検出部は、走行に伴って変化する位置を検出するものである。その具体的な態様は、例えば、車輪あるいは車輪を駆動する駆動モータに配置されるエンコーダである。駆動モータがステッピングモータの場合は駆動パルスをカウントしてもよい。車輪は前進と後退とで回転方向が逆になるので、回転方向を検出できる手段が必要である。
また、特徴点は、画像の特徴を表す複数の点である。画像から特徴点を抽出する手法としては、ＳＩＦＴ、ＳＵＲＦ、ＯＲＢ、ＡＫＡＺＥなどが知られており、これら周知のアルゴリズムが適用可能である。
【０１１７】
さらにまた、特徴点の配置関係とは、照合の対象とされる双方の画像に係る複数の特徴点の中に、特徴点どうしの相対的な位置関係が対応するものがあるか否かを意味する。ここで対応するとは、ある程度の誤差を含んでいても許容範囲内であればよい。特徴点の配置関係を評価する具体的な態様としては、例えば、予め定められた数の特徴点について２点間の距離が全ての組み合わせについて等しいか否かを計算するやり方が挙げられるが、これに限らない。
【０１１８】
さらに、この発明の好ましい態様について説明する。
（ii）前記撮像部は、走行中に逐次撮影を行い、前記走行制御部は、走行中に前記撮像部が撮影した画像に係る特徴点と前記位置情報データベースとして格納された各位置の画像に係る特徴点とを照合して、前記位置検出部が検出する位置を補正してもよい。
このようにすれば、走行中に撮影された画像に係る特徴点と位置情報データベースに係る特徴点とを照合して現在の位置を推定し、推定された現在位置を用いて前記位置検出部が検出する位置情報を補正し、安定して現在の位置を決定することができる。
【０１１９】
（iii）１以上の候補位置で撮影された画像に係る特徴点を、各候補位置を目標として選択する場合に用いる選択指示と関連付けてそれぞれ記憶する候補位置記憶部と、目標へ走行すべき走行指示を受付ける指示受領部とをさらに備え、前記走行指示は、何れかの候補位置に係る前記選択指示を含み、前記目標位置決定部は、前記走行指示に含まれる選択指示と前記候補位置記憶部に格納された選択指示とを照合し、対応する選択指示に関連付けられた特徴点を前記クエリ格納部に格納し、前記走行制御部は、前記走行指示に応答して選択された目標への走行を開始してもよい。
【０１２０】
このようにすれば、予め１以上の候補位置を候補位置記憶部に記憶させておくことで、その後はそれらの候補位置の一つを選択する選択指示を含んだ走行指示を与えることで、前記自走式電子機器が選択した位置へ走行することが可能になる。
走行指示が例えば音声による指示であれば、候補位置に対して、「ソファーの前」、「テレビの前」、「机の下」等の一意的な音声による選択指示を関連付けておく。それらのうち何れかの選択指示を含み、「を掃除しておいて」の音声が走行指示であることを示すものとする。そうすれば、自走式掃除機は、「ソファーの前を掃除しておいて」というユーザーの呼びかけを目標位置が「ソファーの前」に関連付けられた候補位置であり、それを目標に走行せよという指示であると認識できる。よって、ソファーの前へ走行し、スポットモードで作業を行うということが実現できる。
【０１２１】
（iv）前記目標位置決定部は、前記クエリ格納部に格納された特徴点と、各位置情報に含まれる特徴点との間で、対応する配置関係にある特徴点の組み合わせがあるか否かを調べ、対応する配置関係にある特徴点の組み合わせが少なくとも１組存在する場合、その組み合わせに係る予め定められた数の特徴点を基準特徴点とし、少なくとも１つの基準特徴点とそれ以外の特徴点からなる特徴点の組み合わせについて特徴点の配置関係を調べ、対応する配置関係にある特徴点の組み合わせの対を最も多く含む位置情報に基づいて前記目標位置を決定してもよい。
このようにすれば、クエリ格納部に格納された特徴点と位置情報データベースとして格納された特徴点を照合する際、対応する配置関係にある特徴点の組み合わせが存在するものについて、対応する対がいくつあるかを調べて、対を最も多く含む位置情報に係る位置を目標位置に決定できる。
【０１２２】
（v）対応する配置関係は、前記クエリ格納部に格納された特徴点のうち３点と、各位置情報に含まれる特徴点のうち３点について、３点がなす三角形の全ての辺の長さが等しいか否かに基づいて判断され、前記目標位置決定部は、配置関係が対応する一対の三角形の頂点をなすそれぞれ３つの特徴点を基準特徴点とし、各対の３つの基準特徴点のうち２つの基準特徴点と基準特徴点以外の１つの特徴点がなす三角形について、さらに配置関係が対応するものが何対あるかを調べて、対応する対を最も多く含む位置情報に基づいて前記目標位置を決定してもよい。
このようにすれば、３つの特徴点がなす三角形の辺の長さを照合することによって特徴点の配置関係が対応するか否かを判断できる。
この発明の好ましい態様には、上述した複数の態様のうちの何れかを組み合わせたものも含まれる。
前述した実施の形態の他にも、この発明について種々の変形例があり得る。それらの変形例は、この発明の範囲に属さないと解されるべきものではない。この発明には、請求の範囲と均等の意味および前記範囲内でのすべての変形とが含まれるべきである。
【符号の説明】
【０１２３】
１：自走式掃除機、    ２：筐体、    ２ｂ1：天板前部、    ２ｂ11：空気孔、    ２ｂ2：蓋部、    ２ｃ1：側板前半部、    ２ｃ2：側板後半部、    ２ｄ：内部構造壁、    ９：回転ブラシ、    １０：サイドブラシ、    １１：機器制御部、    １１ａ：走行制御部、    １１ｂ：位置検出部、    １１ｃ：特徴点抽出部、    １１ｄ：目標位置決定部、    １１Ｓ：回路基板、    １２：充電池、    １３：充電用接続部、    １４：障害検出部、    １４Ａ：超音波受信部、    １４Ｂ：超音波送信部、    １４Ｃ：衝突センサー、    １５：集塵部、    １５ａ：集塵容器、    １５ｂ：集塵フィルター、    １８：床面検出センサー、    ２０：ジャイロセンサー、    ２１Ｌ：左輪駆動モータ、    ２１Ｒ：右輪駆動モータ、    ２２Ｌ：左駆動輪、    ２２Ｒ：右駆動輪、    ２３：駆動部、    ２４：誘導信号受信部、    ２６：後輪、    ３１：吸込口、    ３２：第１排気口、    ３３：第２排気口、    ５５：報知部、    ６１：記憶部、    ６１ａ：位置情報データベース格納部、    ６１ｂ：クエリ格納部、    ７１Ｌ：左輪エンコーダ、    ７１Ｒ：右輪エンコーダ、    １１４：ダクト部、    １１５：電動送風機、    １１９：ブラシモータ、    １２０：イオン発生器、    １２１Ｌ：左輪ドライバ、    １２１Ｒ：右輪ドライバ、    １２３：送風機ドライバ    １２５：ブラシドライバ、    １３１：無線通信部、    １３３：撮像部、    １３５：音声認識部
２０１：充電台、    ２０２：充電端子部、    ２０３：誘導信号送出部
３００：部屋、    ３０１：テーブル、    ３０３：ソファー、    ３０５：テレビ、    ３０７：本棚、    ３０９：空気清浄機
【図１】
0006609463.tif 000002
【図２】
0006609463.tif 000003
【図３】
0006609463.tif 000004
【図４】
0006609463.tif 000005
【図５】
0006609463.tif 000006
【図６Ａ】
0006609463.tif 000007
【図６Ｂ】
0006609463.tif 000008
【図７】
0006609463.tif 000009
【図８】
0006609463.tif 000010
【図９】
0006609463.tif 000011
【図１０】
0006609463.tif 000012
【図１１】
0006609463.tif 000013
【図１２】
0006609463.tif 000014
【図１３】
0006609463.tif 000015
【図１４】
0006609463.tif 000016
【図１５】
0006609463.tif 000017
【図１６】
0006609463.tif 000018
【図１７】
0006609463.tif 000019
【図１８】
0006609463.tif 000020
【図１９】
0006609463.tif 000021
【図２０Ａ】
0006609463.tif 000022
【図２０Ｂ】
0006609463.tif 000023
【図２１】
0006609463.tif 000024
【図２２】
0006609463.tif 000025
【図２３】
0006609463.tif 000026
【図２４Ａ】
0006609463.tif 000027
【図２４Ｂ】
0006609463.tif 000028
【図２５Ａ】
0006609463.tif 000029
【図２５Ｂ】
0006609463.tif 000030
【図２６Ａ】
0006609463.tif 000031
【図２６Ｂ】
0006609463.tif 000032
【図２７Ａ】
0006609463.tif 000033
【図２７Ｂ】
0006609463.tif 000034
【図２８Ａ】
0006609463.tif 000035
【図２８Ｂ】
0006609463.tif 000036
【図２９】
0006609463.tif 000037