(57)【要約】【課題】他の通信装置を検出し、当該他の通信装置から地図データを受信して合成する場合に、処理負荷を軽減できる通信装置を提供する。【解決手段】ロボットは、通信が可能な範囲内に在る他のロボットを画像や無線通信により検出したことを条件に、当該他のロボットから受信した地図データと、メモリから読み出した地図データとのマッチ／マージ処理を行う。【選択図】図１３
2007156016.tif 000002
【特許請求の範囲】
【請求項１】
他の通信装置を検出する検出手段と、
前記検出手段が前記他の通信装置を検出した場合に、前記他の通信装置から地図データを受信する通信手段と、
地図データを記憶するメモリと、
前記通信手段が受信した地図データと前記メモリに記憶されている地図データとを比較して所定のマッチング条件を満足していると判断したことを条件に、前記通信手段が受信した地図データと、前記メモリに記憶されている地図データとを合成して新たな地図データを生成する処理手段と
を有する通信装置。
【請求項２】
前記検出手段は、通信装置同士の地図データをマッチングすることによって前記他の通信装置を検出する場合に比べて少ない処理量で前記他の通信装置を検出する
請求項１に記載の通信装置。
【請求項３】
前記検出手段は、無線通信や画像マッチングにより前記他の通信装置を検出する
請求項２に記載の通信装置。
【請求項４】
前記通信手段は、前記他の通信装置から前記地図データの一部である部分地図データを受信し、
前記処理手段は、前記通信手段が受信した前記部分地図データと、前記メモリが記憶されている前記地図データとを比較して前記所定のマッチング条件を満足しているか否かの判断を行い、当該所定のマッチング条件を満足していると判断したことを条件に、前記他の通信装置から前記地図データの全体を受信して前記合成を行う
請求項１に記載の通信装置。
【請求項５】
前記マッチング条件を満たしていないと前記処理手段が判断した場合に、予め決められた所定の条件を満たすまで、前記通信手段による前記部分地図データの受信と、前記処理手段による前記マッチング条件を満たすか否かの判断とを繰り返し行う
請求項４に記載の通信装置。
【請求項６】
前記処理手段は、前記合成を行った後に、前記他の通信装置と通信可能である間、前記他の通信装置から受信した部分地図データで前記新たな地図データを順次更新する
請求項１に記載の通信装置。
【請求項７】
前記通信装置がマスタであるか否かを判断するマスタ判断手段
をさらに有し、
前記処理手段は、前記通信装置がマスタであると前記マスタ判断手段が判断したことを条件に、前記他の通信手段からの前記通信手段が受信した前記地図データを基に、前記マッチング条件を満足しているか否かの判断処理と、前記新たな地図データの生成処理とを行う
請求項１に記載の通信装置。
【請求項８】
前記マスタ判断手段は、前記他の通信装置との間で何れがマスタであるかの調停を行う
請求項７に記載の通信装置。
【請求項９】
前記処理手段は、前記通信装置がマスタであると前記マスタ判断手段が判断している間、前記通信手段が前記他の通信装置から受信した部分地図データを基に、前記新たな地図データを更新する
請求項７に記載の通信装置。
【請求項１０】
前記処理手段は、複数の通信装置を複数の地図データに割り当て、前記通信手段が受信した部分地図データを基に、当該部分地図データを送信した他の通信装置が割り当てられた前記地図データを更新する
請求項１に記載の通信装置。
【請求項１１】
撮像位置が異なる複数のカメラと、
前記複数のカメラの撮像結果を基に、ステレオ計測を行うことで撮像対象の距離情報を取得し、撮像対象領域内に規定された各３次元グリッドの対象物による占有状態を示す３次元グリッドデータを生成し、当該３次元グリッドデータを基に前記通信装置の移動を制御する移動制御手段と
をさらに有する請求項１に記載の通信装置。
【請求項１２】
通信装置が行うデータ処理方法であって、
他の通信装置を検出する検出工程と、
前記検出工程で他の通信装置を検出した場合に、前記他の通信装置から地図データを受信する受信工程と、
前記受信工程で受信した地図データと、当該通信装置が記憶している地図データとを比較して、所定のマッチング条件を満足するか否かを判断する判断工程と、
前記判断工程で前記所定のマッチング条件を満足すると判断した場合に、前記受信工程で受信した地図データと、当該通信装置が記憶している地図データとを合成して新たな地図データを生成する生成工程と
を有するデータ処理方法。
【請求項１３】
通信装置が実行するプログラムであって、
他の通信装置を検出する検出手順と、
前記検出手順で他の通信装置を検出した場合に、前記他の通信装置から地図データを受信する受信手順と、
前記受信手順で受信した地図データと、当該通信装置が記憶している地図データとを比較して、所定のマッチング条件を満足するか否かを判断する判断手順と、
前記判断手順で前記所定のマッチング条件を満足すると判断した場合に、前記受信手順で受信した地図データと、当該通信装置が記憶している地図データとを合成して新たな地図データを生成する生成手順と
を前記通信装置に実行させるプログラム。
【請求項１４】
複数の通信装置の間で所定の条件に従ってマスタ及びスレーブを決定する決定工程と、
前記決定工程でスレーブとなった通信装置が、自らが取得した部分地図データを、前記決定工程でマスタとなった通信装置に送信する送信工程と、
前記マスタとなった通信装置が、自らが記憶する地図データを、前記送信工程で受信した前記部分地図データを基に更新する更新工程と
を有する通信方法。
【請求項１５】
前記マスタとなった通信装置が、前記第２の工程で受信した地図データと、当該通信装置が記憶している地図データとを比較して、所定のマッチング条件を満足するか否かを判断する判断工程
をさらに有し、
前記更新工程は、前記判断工程で前記所定のマッチング条件を満足すると判断したことを条件に前記更新を行う
請求項１４に記載の通信方法。
【請求項１６】
前記更新工程は、前記マスタとなった通信装置が、複数のスレーブとなった通信装置を複数の地図データに割り当て、前記スレーブとなった通信装置から受信した部分地図データを基に、当該スレーブとなった通信装置が割り当てられた前記地図データを更新する
請求項１４に記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置が他の通信装置からの地図データを基に新たな地図データを生成する通信装置、データ処理方法、プログラムおよび通信方法に関する。
【背景技術】
【０００２】
例えば、自律型ロボットは、産業用ロボットと異なり、周囲の外部状態やロボット自身の内部状態に応じて自律的に動作を行うことのできるロボットである。自律型ロボットは、歩行動作では、外部の障害物を検出して障害物を回避するような行動経路を計画することができなくてはならない。従来のロボットのなかには、自身のおかれた環境の地図データを基に行動経路を決定できるものが提案されている。
【０００３】
このようなロボットは、予め指定された地図データの他、自らがカメラなどの撮像結果を基に地図データを生成および更新する。
近年、複数のロボットが互いを検出したときに、自らが記憶する地図データを送受信して新たな地図データを生成するシステムが開示されている。
従来のロボットは、地図データの合成に用いる地図データのマッチング処理の機能を利用して、自らが記憶する地図データと他のロボットから受信した地図データとをマッチングする事によって、他のロボットを検出している。
【非特許文献１】A. Howard, “Multi-robot Simultaneous Localization and Mapping using Particle Filters”,  Robotics: Science and Systems I, 2005   more details of [Howard et al. 2004]
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来のロボットでは、上述したように他のロボット（通信装置）の検出を地図データのマッチングにより行うため、その精度は高いが処理負荷が非常に大きく、リアルタイムでの処理が難しいという問題がある。
【０００５】
本発明は上述した従来技術の問題点を解決するために、他の通信装置を検出し、当該他の通信装置から地図データを受信して合成する場合に、処理負荷を軽減できる通信装置、データ処理方法、プログラムおよび通信方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した従来技術の問題点を解決し、上述した目的を達成するため、第１の観点の発明の通信装置は、他の通信装置を検出する検出手段と、前記検出手段が前記他の通信装置を検出した場合に、前記他の通信装置から地図データを受信する通信手段と、地図データを記憶するメモリと、前記通信手段が受信した地図データと前記メモリに記憶されている地図データとを比較して所定のマッチング条件を満足していると判断したことを条件に、前記通信手段が受信した地図データと、前記メモリに記憶されている地図データとを合成して新たな地図データを生成する処理手段とを有する。
【０００７】
第２の観点の発明のデータ処理方法は、通信装置が行うデータ処理方法であって、他の通信装置を検出する検出工程と、前記検出工程で他の通信装置を検出した場合に、前記他の通信装置から地図データを受信する受信工程と、前記受信工程で受信した地図データと、当該通信装置が記憶している地図データとを比較して、所定のマッチング条件を満足するか否かを判断する判断工程と、前記判断工程で前記所定のマッチング条件を満足すると判断した場合に、前記受信工程で受信した地図データと、当該通信装置が記憶している地図データとを合成して新たな地図データを生成する生成工程とを有する。
【０００８】
第３の観点の発明のプログラムは、通信装置が実行するプログラムであって、他の通信装置を検出する検出手順と、前記検出手順で他の通信装置を検出した場合に、前記他の通信装置から地図データを受信する受信手順と、前記受信手順で受信した地図データと、当該通信装置が記憶している地図データとを比較して、所定のマッチング条件を満足するか否かを判断する判断手順と、前記判断手順で前記所定のマッチング条件を満足すると判断した場合に、前記受信手順で受信した地図データと、当該通信装置が記憶している地図データとを合成して新たな地図データを生成する生成手順とを前記通信装置に実行させる。
【０００９】
第４の観点の発明の通信方法は、複数の通信装置の間で所定の条件に従ってマスタ及びスレーブを決定する決定工程と、前記決定工程でスレーブとなった通信装置が、自らが取得した部分地図データを、前記決定工程でマスタとなった通信装置に送信する送信工程と、前記マスタとなった通信装置が、自らが記憶する地図データを、前記送信工程で受信した前記部分地図データを基に更新する更新工程とを有する。
【発明の効果】
【００１０】
本発明により、他の通信装置を検出し、当該他の通信装置から地図データを受信して合成する場合に、処理負荷を軽減できる通信装置、データ処理方法、プログラムおよび通信方法を提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態に係わるロボットについて説明する。
＜第１実施形態＞
先ず、本実施形態の構成要素と、本発明の構成要素との対応関係を説明する。
ロボット１が本発明の通信装置の一例である。また、図１に示すロボット検出部１３が本発明の検出手段の一例であり、通信部１２が本発明の通信手段の一例であり、メモリ１８が本発明のメモリの一例であり、ＣＰＵ１９が本発明の処理手段の一例である。また、地図データＭＡＰが本発明の地図データの一例であり、パッチデータが本発明の部分地図データの一例である。
また、図１に示すプログラムＰＲＧが本発明のプログラムの一例である。
【００１２】
図１は、本発明の実施形態のロボット１の機能ブロック図である。
図１に示すように、ロボット１は、例えば、ＣＣＤ(Charge-Coupled Devices)カメラ１０Ｒ，１０Ｌ、通信部１２、ロボット検出部１３、アクチュエータ群１６、センサ群１７、メモリ１８およびＣＰＵ１９を有する。
［ＣＣＤカメラ１０Ｒ，１０Ｌ］
ＣＣＤカメラ１０Ｒ，１０Ｌは、それぞれ撮像結果に応じた右画像データＳ１０Ｒおよび左画像データＳ１０ＬをＣＰＵ１９に出力する。
【００１３】
［通信部１２］
通信部１２は、他のロボットとの間で、地図データの送受信を行う。
【００１４】
［ロボット検出部１３］
ロボット検出部１３は、通信部１２による通信が可能な範囲内に在る他のロボットを検出し、他のロボットを検出すると、その旨を図６に示すマッチ／マージ部３５に通知する。
ロボット検出部１３による他のロボット検出機能としては、ロボットのカメラから得られる画像によって他のロボットを検出する機能がある、それぞれが持つ地図データをマッチングすることによって他のロボットを検出する方法に比べて、検出精度は低いが、処理負荷が小さいものが用いられる。
【００１５】
ロボット検出部１３は、例えば、bluetoothやwifiなど無線を利用して他のロボットの位置を検出する。すなわち、ロボット検出部１３は、無線基地局間の電波の到着時間や、電波強度を計測することによって、基地局間の距離を同定し、これを複数の基地局に対して、もしくは、移動を伴って複数回行うことによって、三角測量の原理で位置を検出する。位置検出精度は±１ｍ程度である。
ロボット検出部１３が採用する位置検出方法としては、基地局でアソシエーションした端末を検出するCell-ID方式、基地局で電波の到達時間を測定し三辺測量を行う電波到達時間差方式（TDOA(Time Difference of Arrival)）、基地局で電波強度を測定し三辺測量を行う電波受信強度方式（RSSI(Received Signal Strength  Indicator)）などが採用される。 
なお、通信部１２およびロボット検出部１３は、一つの通信処理回路によって実現してもよい。
また、例えば、図２（Ａ）に示すように、ロボットの左足に青、右足に赤のマークが付されている場合に、ＣＰＵ１９において、ＣＣＤカメラ１０Ｒ，１０Ｌから入力した右画像データＳ１０Ｒ及び左画像データＳ１０Ｌから得た図２（Ｂ）に示す画像を基に、赤と青の組み合わせパターンを特定したときにロボットを検出したと判断してもよい。但し、本実施形態における地図データのマッチングに比べて処理負荷が小さいものであることが好ましい。
ロボット検出部１３は、他のロボットを検出すると、例えば、通信部１２を介して、当該他のロボットにその旨を通知する。
【００１６】
［アクチュエータ群１６］
アクチュエータ群１６は、ロボット１の動きを駆動する各種のアクチュエータである。
アクチュエータ群１６は、ＣＰＵ１９からの制御信号Ｓ１５によって駆動される。
センサ群１７は、ロボット１の所定箇所に設置された赤外線センサなどの非接触型センサや接触型センサなどである。
【００１７】
［センサ群１７］
センサ群１７は、検出信号Ｓ１７をＣＰＵ１９に出力する。
【００１８】
［メモリ１８］
メモリ１８は、ＣＰＵ１９が実行するプログラムＰＲＧ、並びにデータを記憶する。
【００１９】
［ＣＰＵ１９］
ＣＰＵ１９は、メモリ１８から読み出したプログラムＰＲＧに基づいて以下に示す処理を実行する。
ＣＰＵ１９は、ＣＣＤカメラ１０Ｒ，１０Ｌから入力した右画像データＳ１０Ｒと左画像データＳ１０Ｌの視差情報（disparity data）（距離情報）を計算し、カラー画像データ（ＹＵＶ：輝度Ｙ、ＵＶ色差）Ｓ１２ａ及び視差画像データ（ＹＤＲ：輝度Ｙ、視差Ｄ、信頼度Ｒ）Ｓ１２ｂをフレーム毎に左右交互に算出する。
ここで、視差とは、空間中のある点が左側カメラ及び右側カメラに写像される点の違いを示し、そのカメラからの距離に応じて変化するものである。
ＣＰＵ１９は、ステレオ画像処理装置１２から入力したカラー画像データＳ１２ａ及び視差画像データＳ１２ｂを用いて、後述するソフトウェア構成によって画像処理を行う。
【００２０】
以下、図１に示すロボット１の構成をさらに詳細に説明する。
図３に示すように、ロボット１は、２足歩行タイプであり、日常生活上の様々な場面における人的活動を支援する実用ロボットである。
ロボット１は、内部状態（怒り、悲しみ、喜び、楽しみ等）に応じて行動できるほか、人間が行う基本的な動作を表出できるエンターテインメントロボットである。ロボットは、３次元環境クラスデータを生成し、これを基に行動経路を決定する。
【００２１】
図３に示すように、ロボット１は、体幹部ユニット２０２の所定の位置に頭部ユニット２０３が連結されるとともに、左右２つの腕部ユニット２０４Ｒ／Ｌと、左右２つの脚部ユニット２０５Ｒ／Ｌが連結されて構成されている。
【００２２】
図３に示すロボット１が具備する関節自由度構成を図３に模式的に示す。
頭部ユニット２０３を支持する首関節は、首関節ヨー軸１０１と、首関節ピッチ軸１０２と、首関節ロール軸１０３という３自由度を有している。
【００２３】
また、上肢を構成する各々の腕部ユニット２０４Ｒ／Ｌは、肩関節ピッチ軸１０７と、肩関節ロール軸１０８と、上腕ヨー軸１０９と、肘関節ピッチ軸１１０と、前腕ヨー軸１１１と、手首関節ピッチ軸１１２と、手首関節ロール軸１１３と、手部１１４とで構成される。
手部１１４は、実際には、複数本の指を含む多関節・多自由度構造体である。ただし、手部１１４の動作は、ロボット１の姿勢制御や歩行制御に対する寄与や影響が少ないので、本明細書では簡単のため、ゼロ自由度と仮定する。したがって、各腕部は７自由度を有するとする。
また、体幹部ユニット２０２は、体幹ピッチ軸１０４と、体幹ロール軸１０５と、体幹ヨー軸１０６という３自由度を有する。
【００２４】
また、下肢を構成する各々の脚部ユニット２０５Ｒ／Ｌは、股関節ヨー軸１１５と、股関節ピッチ軸１１６と、股関節ロール軸１１７と、膝関節ピッチ軸１１８と、足首関節ピッチ軸１１９と、足首関節ロール軸１２０と、足底１２１とで構成される。
本明細書中では、股関節ピッチ軸１１６と股関節ロール軸１１７の交点は、ロボット１の股関節位置を定義する。人体の足底１２１は、実際には多関節・多自由度の足底を含んだ構造体であるが、本明細書においては、簡単のためロボット１の足底は、ゼロ自由度とする。したがって、各脚部は、６自由度で構成される。
以上を総括すれば、ロボット１全体としては、合計で３＋７×２＋３＋６×２＝３２自由度を有することになる。ただし、エンターテインメント向けのロボット１が必ずしも３２自由度に限定されるわけではない。設計・制作上の制約条件や要求仕様等に応じて、自由度すなわち関節数を適宜増減することができることはいうまでもない。
【００２５】
上述したようなロボット１がもつ各自由度は、実際にはアクチュエータを用いて実装される。外観上で余分な膨らみを排してヒトの自然体形状に近似させること、２足歩行という不安定構造体に対して姿勢制御を行うこと等の要請から、アクチュエータは小型かつ軽量であることが好ましい。
なお、図４に示すアクチュエータによって図１に示すアクチュエータ群１６が構成され、図４に示すセンサによって図１に示すセンサ群１７が構成される。
【００２６】
このようなロボットは、ロボット全体の動作を制御する制御システムを例えば体幹部ユニット２０２等に備える。
図５は、本実施形態のロボット１の制御システム構成を示す模式図である。
図５に示すように、制御システムは、ユーザ入力等に動的に反応して情緒判断や感情表現を司る思考制御モジュール２００と、アクチュエータ３５０の駆動等、ロボット１の全身協調運動を制御する運動制御モジュール３００とで構成される。
【００２７】
思考制御モジュール２００は、情緒判断や感情表現に関する演算処理を実行するＣＰＵ（Central Processing Unit）２１１（図１に示すＣＰＵ１９）や、ＲＡＭ（Random Access Memory）２１２、ＲＯＭ（Read Only Memory）２１３及び外部記憶装置（ハード・ディスク・ドライブ等）２１４等で構成され、モジュール内で自己完結した処理を行うことができる、独立駆動型の情報処理装置である。
【００２８】
この思考制御モジュール２００は、画像入力装置２５１から入力される画像データや音声入力装置２５２から入力される音声データ等、外界からの刺激等にしたがって、ロボット１の現在の感情や意思を決定する。すなわち、上述したように、入力される画像データからユーザの表情を認識し、その情報をロボット２０１の感情や意思に反映させることで、ユーザの表情に応じた行動を発現することができる。
ここで、画像入力装置２５１は、例えばＣＣＤ（Charge Coupled Device）カメラを複数備えており、これらのカメラにより撮像した画像から距離画像を得ることができる。
本実施形態では、画像入力装置２５１は、図１に示すＣＣＤカメラ１０Ｒ，１０Ｌに対応している。
また、音声入力装置２５２は、例えばマイクロホンを複数備えている。
【００２９】
思考制御モジュール２００は、意思決定に基づいた動作又は行動シーケンス、すなわち四肢の運動を実行するように、運動制御モジュール３００に対して指令を発行する。
【００３０】
運動制御モジュール３００は、ロボット１の全身協調運動を制御するＣＰＵ３１１（図１に示すＣＰＵ１９）や、ＲＡＭ３１２、ＲＯＭ３１３及び外部記憶装置（ハード・ディスク・ドライブ等）３１４等で構成され、モジュール内で自己完結した処理を行うことができる独立駆動型の情報処理装置である。また、外部記憶装置３１４には、例えば、オフラインで算出された歩行パターンや目標とするＺＭＰ軌道、その他の行動計画を蓄積することができる。
この運動制御モジュール３００には、図２に示したロボット１の全身に分散するそれぞれの関節自由度を実現するアクチュエータ３５０、対象物との距離を測定する距離計測センサ（図示せず）、体幹部ユニット２０２の姿勢や傾斜を計測する姿勢センサ３５１、左右の足底の離床又は着床を検出する接地確認センサ３５２，３５３、足底１２１の足底１２１に設けられる荷重センサ、バッテリ等の電源を管理する電源制御装置３５４等の各種の装置が、バス・インターフェース（Ｉ／Ｆ）３１０経由で接続されている。
ここで、姿勢センサ３５１は、例えば加速度センサとジャイロ・センサの組合せによって構成され、接地確認センサ３５２，３５３は、近接センサ又はマイクロ・スイッチ等で構成される。
【００３１】
思考制御モジュール２００と運動制御モジュール３００は、共通のプラットフォーム上
で構築され、両者間はバス・インターフェース２１０，３１０を介して相互接続されている。
【００３２】
運動制御モジュール３００では、思考制御モジュール２００から指示された行動を体現すべく、各アクチュエータ３５０による全身協調運動を制御する。すなわち、ＣＰＵ３１１は、思考制御モジュール２００から指示された行動に応じた動作パターンを外部記憶装置３１４から取り出し、又は、内部的に動作パターンを生成する。そして、ＣＰＵ３１１は、指定された動作パターンにしたがって、足部運動、ＺＭＰ軌道、体幹運動、上肢運動、腰部水平位置及び高さ等を設定するとともに、これらの設定内容に従った動作を指示す
る指令値を各アクチュエータ３５０に転送する。
【００３３】
ＣＰＵ３１１は、姿勢センサ３５１の出力信号によりロボット１の体幹部ユニット２０２の姿勢や傾きを検出するとともに、各接地確認センサ３５２，３５３の出力信号により各脚部ユニット２０５Ｒ／Ｌが遊脚又は立脚のいずれの状態であるかを検出することによって、ロボット１の全身協調運動を適応的に制御することができる。更に、ＣＰＵ３１１は、ＺＭＰ位置が常にＺＭＰ安定領域の中心に向かうように、ロボット１の姿勢や動作を制御する。
【００３４】
また、運動制御モジュール３００は、思考制御モジュール２００において決定された意
思通りの行動がどの程度発現されたか、すなわち処理の状況を、思考制御モジュール２０
０に返すようになっている。このようにしてロボット１は、制御プログラムに基づいて自己及び周囲の状況を判断し、自律的に行動することができる。
【００３５】
以下、図１および図５に示すＣＰＵ１９（ＣＰＵ３１１）の機能を説明する。
図６は、図１および図５に示すＣＰＵ１９の一部の機能の機能ブロック図である。
図６に示すように、ＣＰＵ１９は、例えば、画像前処理部３０、距離データ生成部３１、平面検出部３２、地図生成部３３、マッチ／マージ部３５、並びに動き制御部３６を有する。
図６に示す構成要素の各々は、ＣＰＵ１９がプログラムＰＲＧを実行して実現してよいし、専用のハードウェアにより実現してもよい。
【００３６】
［画像前処理部３０］
画像前処理部３０は、ＣＣＤカメラ１０Ｒ，１０Ｌから入力した右画像データＳ１０Ｒと左画像データＳ１０Ｌの視差情報（disparity data）（距離情報）を計算し、カラー画像データ（ＹＵＶ：輝度Ｙ、ＵＶ色差）Ｓ１２ａ及び視差画像データ（ＹＤＲ：輝度Ｙ、視差Ｄ、信頼度Ｒ）Ｓ１２ｂをフレーム毎に左右交互に算出する。
ここで、視差とは、空間中のある点が左側カメラ及び右側カメラに写像される点の違いを示し、そのカメラからの距離に応じて変化するものである。
カラー画像データＳ１２ａ及び視差画像データＳ１２ｂは、ＣＰＵ（制御部）１５に入力される。
画像前処理部３０は、上記生成したカラー画像データＳ１２ａ及び視差画像データＳ１２ｂを距離データ生成部３１に出力する。
【００３７】
［距離データ生成部３１］
距離データ生成部３１は、図１に示すステレオ画像処理装置１２から入力したカラー画像データＳ１２ａ及び視差画像データＳ１２ｂを基に、ロボット１から画像（環境）内の対象物までの３次元距離を示す距離データ（ステレオデータ）Ｓ３１を生成し、これを平面検出部３２および地図生成部３３に出力する。
【００３８】
［平面検出部３２］
平面検出部３２は、距離データ生成部３１から入力した距離データＳ３１から環境内に存在する複数の平面を検出し、それを示す平面データＳ３２を地図生成部３３に出力する。
ここでの平面の検出方法としては、線分拡張法、ハフ変換等を利用した公知の平面検出技術を適用することができる。ノイズを含む距離データから階段のように複数平面を検出する代表例として、線分拡張法による平面検出を行うと正確に平面を検出することができる。
【００３９】
［地図生成部３３］
地図生成部３３は、距離データ生成部３１から入力した距離データＳ３１と平面検出部３２から入力した上記平面検出データＳ３２とに基づいて、地図データＭＡＰ（３次元グリット地図データ）を生成し、これをメモリ１８に書き込む。
【００４０】
先ず、地図生成部３３による地図データＭＡＰの生成処理について説明する。
地図データＭＡＰは、周囲の環境を水平方向及び垂直方向に所定の大きさの格子（グリッド；Grid）に分割して表したものである。
地図生成部３３は、距離データ生成部３１からの距離データＳ３１と、平面検出部３２からの平面データＳ３２とに基づいて、例えば、４メートル四方、高さ１メートルの空間を、水平解像度４センチ及び垂直解像度１センチの直方体空間を１グリッド単位（１セルと記す。）とし、その集合によって表現された地図データＭＡＰを生成する。
地図生成部３３は、各セルに物体によって占有されているか否かの確率を付与し、観測データに基づいて各セルの占有確率を変更させている。また、地図生成部３３は、占有確率に閾値を設け、占有確率が閾値より大きいか否かによって環境の状態を地図として表現している。
本具体例では、高さ方向の解像度がセル分解能に依存しないため、垂直解像度は、１セ
ンチよりも粗くできる。
【００４１】
地図生成部３３は、３次元グリッドで表される実空間Ｓ５００における全ての単位グリッド（以下、セルと記す。）ｐ（ｘ，ｙ，ｚ）に対して次の処理を行う。
地図生成部３３は、撮像画像内に像として映し出された測定点（３次元グリッド）と観測中心（ステレオカメラ中心）とを結ぶ直線上には障害物が存在しないというアルゴリズムに基づいて地図データＭＡＰを作成及び／又は更新している。
【００４２】
地図生成部３３は、上述のアルゴリズムに基づいて、測定対象点であるセルｐとロボットのステレオカメラ１１Ｌ，１１Ｒとを結ぶ線分の間に存在するセルに対して、エンプティ（Empty）処理を行う。続いて、測定点ｐにあたるセルに対してオキュパイド（Occupied）処理を行う。
地図データＭＡＰは、セルＣに対して障害物の存在確率（障害物によって占有されている確率）ｐ（ｃ）を保持しており、このエンプティ処理及びオキュパイド処理は、これら各セルに対して統計的な処理である。
エンプティ処理は、障害物の存在確率を低下させる処理であり、オキュパイド処理は障害物の存在確率を増加させる処理である。本具体例では、エンプティ処理及びオキュパイド処理の存在確率を算出する手法の一例として、ベイズの更新則を用いる。
【００４３】
地図生成部３３は、エンプティ処理において式（１）により占有確率を減少させ、オキュパイド処理において式（２）により占有確率を増加させる。
式（１）は、セルＣの占有確率を示すｐ（ｃ）が“占有”という条件下にあるセルＣの確率を表しており、式（１）又は式（２）においてセルＣが占有されているか又は占有されていないかを表す確率ｐ（occ｜・・・）、ｐ（empty｜・・・）は、予め決められた閾値ｔｈである。
【００４４】
［数１］
ｐ（ｃ）←ｐ（ｃ｜ｅｍｐｔｙ）＝ｐ（ｅｍｐｔｙ｜ｃ）ｐ（ｃ）／｛ｐ（ｅｍｐｔｙ｜ｃ）ｐ（ｃ）＋ｐ（ｅｍｐｔｙ｜ｃ~）ｐ（ｃ~）｝
…（１）
【００４５】
［数２］
ｐ（ｃ）←ｐ（ｃ｜ｏｃｃ）＝ｐ（ｏｃｃ｜ｃ）ｐ（ｃ）／｛ｐ（ｏｃｃ｜ｃ）ｐ（ｃ）＋ｐ（ｏｃｃ｜ｃ~）ｐ（ｃ~）｝
…（２）
【００４６】
本具体例では、３次元グリッドとして表される領域は、例えば、４メートル四方、水平解像度４センチ及び垂直解像度１センチを１セルとした３次元グリッドで表現されている。
【００４７】
地図生成部３３が生成する地図データＭＡＰは、例えば、３次元座標（ｘ、ｙ、ｚ）の各セルについて、その占有確率ＯＧ（ｘ、ｙ、ｚ）（＝ｐ（ｃ））を示している。
【００４８】
［マッチ／マージ部３５］
図７は、図６に示すマッチ／マージ部３５の処理を説明するためのフローチャートである。
ステップＳＴ１：
マッチ／マージ部３５は、図１に示す通信部１２が他のロボットから受信した地図データＭＡＰａを通信部１２から入力する。
【００４９】
ステップＳＴ２：
マッチ／マージ部３５は、ステップＳＴ１で入力した地図データＭＡＰａと、メモリ１８から読み出した地図データＭＡＰとを比較してマッチング処理を行う。
具体的には、マッチ／マージ部３５は、地図データＭＡＰａと地図データＭＡＰとの間でオーバーラップした部分を検出する。
例えば、マッチ／マージ部３５は、図８に示すように、地図データＭＡＰａ内のパッチ（部分地図）データＰＭａと、地図データＭＡＰ内のパッチデータＰＭとを並行回転移動させながら順に比較する。
マッチ／マージ部３５は、任意の回転角度において、下記式（３）あるいは下記式（４）により、スコアｓｃｏｒｅを算出する。下記式（３），（４）において、Ａｉ，Ｂｉは、それぞれパッチデータＰＭａ，ＰＭの画素位置ｉの画素値（１又は０）である。
【００５０】
【数３】
2007156016.tif 000003
【００５１】
【数４】
2007156016.tif 000004
【００５２】
ステップＳＴ３：
マッチ／マージ部３５は、複数の部分地図データの各々について複数の角度におけるスコアｓｃｏｒｅを算出し、その最小値が所定のしきい値以上であれば、マッチング成功と判断してステップＳＴ４に進み、そうでない場合にはマッチング不成功と判断して処理を終了する。
【００５３】
ステップＳＴ４：
マッチ／マージ部３５は、マッチ／マージ部３５は、ステップＳＴ１で入力した地図データＭＡＰａと、メモリ１８から読み出した地図データＭＡＰとのマージ（合成）処理を行う。
このとき、マッチ／マージ部３５は、ステップＳＴ２で検出したマッチングが成立した部分地図データと、その回転角度との情報を基に、上記マージ処理を行う。
マッチ／マージ部３５は、例えば、図９に示すように、移動したロボット１と、ロボット１０１とが図１０に示す地図データＭＡＰ，ＭＡＰａを送受信した場合に、ロボット１において、図１１に示す新たな地図データＭＡＰを生成する。
【００５４】
［動き制御部３６］
動き制御部３６は、例えば、現在地から予め設定された目標地に移動するルートを、メモリ１８から読み出した地図データＭＡＰを基に決定する。次に、動き制御部３６は、センサ群１７の検出データを基に障害物などを回避してロボット１が上記決定したルール上を移動するように、アクチュエータ群１６を制御する。
【００５５】
図１２は、図６に示す動き制御部３６の処理例を説明するためのフローチャートである。
ステップＳＴ１１：
動き制御部３６は、例えば、入力した距離データＳ３１及び平面検出データＳ３２、センサ群１７の検出結果、あるいはメモリ１８から読み出した地図データＭＡＰを基に、ロボット１の移動方向に、ロボット１が移動できない障害物があるか否かを判断し、その障害物があると判断するとステップＳＴ１２に進み、そうでない場合にはステップＳＴ１３に進む。
【００５６】
ステップＳＴ１２：
動き制御部３６は、例えば、入力した距離データＳ３１及び平面検出データＳ３２、センサ群１７の検出結果、あるいはメモリ１８から読み出した地図データＭＡＰを基に、ロボット１が移動できる新たな方向を探索して、その探索した方向に移動するようにアクチュエータ群１６を制御する。
【００５７】
ステップＳＴ１３：
動き制御部３６は、ロボット１の移動方向に端に移動すれば回避できる障害物があるか否かを判断し、障害物があると判断するとステップＳＴ１４に進み、そうでない場合にはステップＳＴ１５に進む。
【００５８】
ステップＳＴ１４：
動き制御部３６は、障害物を回避するように、例えば、道路を横方向に移動するようにアクチュエータ群１６を制御する。
【００５９】
ステップＳＴ１５：
動き制御部３６は、既に決定されたパスに従って直進移動するようにアクチュエータ群１６を制御する。
【００６０】
［動作例］
以下、ロボット１の全体動作例を説明する。
図１３は、ロボット１の全体動作例を説明するためのフローチャートである。
ステップＳＴ２１：
図６に示すロボット１は、例えば、予め決められた処理に基づいて初期データとしての地図データＭＡＰを生成し、これをメモリ１８に書き込む。
このとき、ロボット１は、予め決められた地図データをそのまま地図データＭＡＰとして用いてもよいし、ロボット１が所定時間移動した間に入力した距離データＳ３１及び平面検出データＳ３２を基に地図データＭＡＰを生成してもよい。
【００６１】
ステップＳＴ２２：
マップ生成部３３は、新たな距離データＳ３１及び平面検出データＳ３２を入力したか否かを判断し、入力したと判断するとステップＳＴ２３に進み、そうでない場合にはステップＳＴ２４に進む。
【００６２】
ステップＳＴ２３：
マップ生成部３３は、ステップＳＴ２２で入力した新たな距離データＳ３１及び平面検出データＳ３２を基に、メモリ１８から読み出した地図データＭＡＰに新たな地図データを追加して更新処理を行う。
そして、マップ生成部３３は、上記更新処理した地図データＭＡＰをメモリ１８に再び書き込む。
【００６３】
ステップＳＴ２４：
図１に示すロボット検出部１３は、通信部１２による通信が可能な範囲内に在る他のロボットを検出すると、ステップＳＴ２５に進みその旨を図６に示すマッチ／マージ部３５に通知し、そうでない場合にはステップＳＴ２６に進む。
【００６４】
ステップＳＴ２５：
マッチ／マージ部３５は、ステップＳＴ２４で検出し他のロボットから通信部１２が受信した地図データＭＡＰａと、メモリ１８から読み出した地図データＭＡＰとのマッチ／マージ処理を図７に示す手順で行い、その結果をメモリ１８に書き込む。
【００６５】
ステップＳＴ２６：
動き制御部３６は、例えば、現在地から予め設定された目標地に移動するルートを、メモリ１８から読み出した地図データＭＡＰを基に決定する。次に、動き制御部３６は、センサ群１７の検出データを基に障害物などを回避してロボット１が上記決定したルール上を移動するように、アクチュエータ群１６を制御する。
【００６６】
以上説明したように、ロボット１では、ロボット検出部１３において地図データのマッチング処理などによるロボット検出に比べて検出精度は低いが処理負荷が小さいものを用いる。そして、検出したロボットとの間で地図データＭＡＰ，ＭＡＰａの送受信を行う。
また、ロボット１では、他のロボットから受信した地図データＭＡＰａと、自らが保持する地図データＭＡＰとを図７に示すようにマッチング成功したことを条件にマージして新たな地図データＭＡＰを生成する。このとき、マッチング処理は、画像マッチングであり、非常に高精度である。
ロボット１によれば、上述したように、検出精度が低く処理負荷が小さいロボット検出処理でロボットを検出したことを条件に、検出精度が高く処理負荷が大きい画像マッチング処理を行う。そのため、地図マージ処理の精度を従来通り高品質に保ちながら、全体の処理負荷を小さくできる。
【００６７】
＜第２実施形態＞
本実施形態のロボットは、マッチ／マージ部３５ａの処理を除いて、基本点に第１実施形態のロボット１と同じである。
以下、マッチ／マージ部３５ａの処理について説明する。
図１４は、図６に示すマッチ／マージ部３５ａの処理を説明するためのフローチャートである。
ステップＳＴ３１：
マッチ／マージ部３５ａは、図１に示す通信部１２が他のロボットから受信したパッチデータＰＭａを通信部１２から入力する。
当該パッチデータは、例えば、他のロボットが保持するマップデータＭＡＰａのうち、地図の周辺部分に関するデータである。
【００６８】
ステップＳＴ３２：
マッチ／マージ部３５aは、ステップＳＴ３１で入力したパッチデータＰＭａとマッチング（一致）する部分を、メモリ１８から読み出した地図データＭＡＰ内で探索する。
例えば、マッチ／マージ部３５aは、他のロボットから入力したパッチデータＰＭａを回転させながら、メモリ１８から読み出し地図データＭＡＰ内で一致する部分を、上記式（３）、（４）を用いて説明した手法で探索する。
【００６９】
ステップＳＴ３３：
マッチ／マージ部３５aは、ステップＳＴ３２でマッチングする部分が探索できた場合（マッチングに成功した場合）にステップＳＴ３４に進み、そうでない場合に処理を終了する。
【００７０】
ステップＳＴ３４：
マッチ／マージ部３５aは、通信部１２を介してマップデータＭＡＰaを他のロボットから受信するように指示を出す。
これにより、通信部１２が、他のロボットからマップデータＭＡＰaを受信する。
【００７１】
ステップＳＴ３５：
マッチ／マージ部３５aは、ステップＳＴ３４で受信した地図データＭＡＰａと、メモリ１８から読み出した地図データＭＡＰとのマージ（合成）処理を行う。
このとき、マッチ／マージ部３５は、ステップＳＴ３２で検出したマッチングが成立した部分地図データと、その並進回転移動量との情報を基に、上記マージ処理を行う。
【００７２】
本実施形態のロボットでは、図１４に示すように、パッチデータを用いたマッチング処理で成功したことを条件に、他のロボットからマップデータＭＡＰaを受信する。そのため、結果としてマージ処理を行わない場合に、膨大なデータ量の不要なマップデータＭＡＰaを他のロボットから受信することを回避できる。
【００７３】
＜第３実施形態＞
本実施形態のロボットは、マッチ／マージ部３５ｂの処理を除いて、基本点に第１実施形態のロボット１と同じである。
本実施形態では、第２実施形態においてマッチングに不成功だった場合に、予め決められたマージを行わない条件を満たすまで他のロボットからパッチデータの受信とマッチング処理とを繰り返して行う。
【００７４】
以下、マッチ／マージ部３５ａの処理について説明する。
図１５は、図６に示すマッチ／マージ部３５ｂの処理を説明するためのフローチャートである。
ステップＳＴ４１：
マッチ／マージ部３５ｂは、図１に示す通信部１２が他のロボットから受信したパッチデータＰＭａを通信部１２から入力する。
当該パッチデータは、例えば、他のロボットが保持するマップデータＭＡＰａのうち、地図の周辺部分に関するデータである。
【００７５】
ステップＳＴ４２：
マッチ／マージ部３５ｂは、ステップＳＴ４１で入力したパッチデータＰＭａとマッチング（一致）する部分を、メモリ１８から読み出した地図データＭＡＰ内で探索する。
例えば、マッチ／マージ部３５ｂは、他のロボットから入力したパッチデータＰＭａを回転させながら、メモリ１８から読み出し地図データＭＡＰ内で一致する部分を、上記式（３）、（４）を用いて説明した手法で探索する。
【００７６】
ステップＳＴ４３：
マッチ／マージ部３５ｂは、ステップＳＴ４２でマッチングする部分が探索できた場合（マッチングに成功した場合）にステップＳＴ４４に進み、そうでない場合にステップＳＴ４６に進む。
【００７７】
ステップＳＴ４４：
マッチ／マージ部３５ｂは、通信部１２を介してマップデータＭＡＰaを他のロボットから受信するように指示を出す。
これにより、通信部１２が、他のロボットからマップデータＭＡＰaを受信する。
【００７８】
ステップＳＴ４５：
マッチ／マージ部３５ｂは、ステップＳＴ４４で受信した地図データＭＡＰａと、メモリ１８から読み出した地図データＭＡＰとのマージ（合成）処理を行う。
このとき、マッチ／マージ部３５は、ステップＳＴ４２で検出したマッチングが成立した部分地図データと、その回転角度との情報を基に、上記マージ処理を行う。
【００７９】
ステップＳＴ４６：
マッチ／マージ部３５ｂは、マージ処理を行わない条件、例えば、図１５に示す処理を開始してから所定時間経過したなどの条件を満たしたか否かを判断し、満たしたと判断した場合に処理を終了し、そうでない場合にステップＳＴ４１の処理に戻る。
【００８０】
本実施形態のロボットでは、上述した第２実施形態の効果に加えて、マージ処理を行わない条件を満たすまでステップＳＴ４１，ＳＴ４２，ＳＴ４３の処理を繰り返すため、パッチデータータの受信に失敗した場合でも、その後に受信したパッチデータを基に処理を行うことができるという効果が得られる。すなわち、通信障害に対して高い耐性を得ることができる。
【００８１】
＜第４実施形態＞
本実施形態のロボットは、マッチ／マージ部３５ｃの処理を除いて、基本点に第１実施形態のロボット１と同じである。
本実施形態では、第３実施形態においてマージ処理を行った後に、他のロボットと通信可能な間は、当該他のロボットからパッチデータ受信してそのマッチデータを基に地図データＭＡＰの更新処理を行う。
【００８２】
以下、マッチ／マージ部３５ｃの処理について説明する。
図１６は、図６に示すマッチ／マージ部３５ｃの処理を説明するためのフローチャートである。
ステップＳＴ５１：
マッチ／マージ部３５ｃは、図１に示す通信部１２が他のロボットから受信したパッチデータＰＭａを通信部１２から入力する。
当該パッチデータは、例えば、他のロボットが保持するマップデータＭＡＰａのうち、地図の周辺部分に関するデータである。
【００８３】
ステップＳＴ５２：
マッチ／マージ部３５ｃは、ステップＳＴ５１で入力したパッチデータＰＭａとマッチング（一致）する部分を、メモリ１８から読み出した地図データＭＡＰ内で探索する。
例えば、マッチ／マージ部３５ｃは、他のロボットから入力したパッチデータＰＭａを回転させながら、メモリ１８から読み出し地図データＭＡＰ内で一致する部分を、上記式（１）、（２）を用いて説明した手法で探索する。
【００８４】
ステップＳＴ５３：
マッチ／マージ部３５ｃは、ステップＳＴ５２でマッチングする部分が探索できた場合（マッチングに成功した場合）にステップＳＴ５４に進み、そうでない場合に処理を終了する。
【００８５】
ステップＳＴ５４：
マッチ／マージ部３５ｃは、通信部１２を介してマップデータＭＡＰaを他のロボットから受信するように指示を出す。
これにより、通信部１２が、他のロボットからマップデータＭＡＰaを受信する。
【００８６】
ステップＳＴ５５：
マッチ／マージ部３５ｃは、ステップＳＴ３４で受信した地図データＭＡＰａと、メモリ１８から読み出した地図データＭＡＰとのマージ（合成）処理を行う。
このとき、マッチ／マージ部３５は、ステップＳＴ３２で検出したマッチングが成立した部分地図データと、その回転角度との情報を基に、上記マージ処理を行う。
【００８７】
ステップＳＴ５６：
マッチ／マージ部３５ｃは、通信部１２およびロボット検出部１３からの信号に基づいて、当該他のロボットと通信可能な状態であるか否かを判断し、通信可能な状態であると判断するとステップＳＴ５７に進み、そうでない場合には処理を終了する。
【００８８】
ステップＳＴ５７：
マッチ／マージ部３５ｃは、図１に示す通信部１２が他のロボットから受信したパッチデータＰＭａを通信部１２から入力する。
ステップＳＴ５８：
マッチ／マージ部３５ｃは、ステップＳＴ５７で入力したパッチデータＰＭａと、メモリ１８から読み出した地図データＭＡＰとのマージ（合成）処理を行う。
【００８９】
ステップＳＴ５８：
このとき、マッチ／マージ部３５は、ステップＳＴ３２で検出したマッチングが成立した部分地図データと、その回転角度との情報を基に、上記マージ処理を行う。
【００９０】
ステップＳＴ５９：
マッチ／マージ部３５ｃは、マージ処理を行わない条件、例えば、図１５に示す処理を開始してから所定時間経過したなどの条件を満たしたか否かを判断し、満たしたと判断した場合に処理を終了し、そうでない場合にステップＳＴ５１の処理に戻る。
【００９１】
本実施形態のロボットでは、上述した第３実施形態の効果に加えて、他のロボットと通信可能状態である間、当該他のロボットから受信したパッチデータＰＭａを基に、地図データＭＡＰを更新できる。
【００９２】
なお、上述した第３および第４実施形態は、パッチデータではなく地図データ全体でマッチング処理を行う場合（第１実施形態）にも同様に適用できる。
【００９３】
＜第５実施形態＞
本実施形態のロボットは、マッチ／マージ部３５ｄの処理を除いて、基本点に第１実施形態のロボット１と同じである。
本実施形態では、ロボット１が他のロボットと地図データの送受信を行う際に、何れか一方のみがマスタとなり、マスタのみが地図データを受信してその更新処理を行う。
【００９４】
以下、マッチ／マージ部３５ｄの処理について説明する。
図１７は、図６に示すマッチ／マージ部３５ｄによるマスタフラグデータの設定処理を説明するためのフローチャートである。
ステップＳＴ６１：
マッチ／マージ部３５ｄは、図１に識別データもエスロボット検出部１３が他のロボットを検出したことを示す通知を受信すると、ステップＳＴ６２に進む。
【００９５】
ステップＳＴ６２：
マッチ／マージ部３５ｄは、メモリ１８から読み出したロボット１のＩＤ（識別データ）を、通信部１２を介して上記他のロボットに送信すると共に、当該他のロボットからそのＩＤを受信する。
【００９６】
ステップＳＴ６３：
マッチ／マージ部３５ｄは、ロボット１のＩＤと、ステップＳＴ６２で受信した上記他のＩＤとを比較して、ロボット１のＩＤの方が大きい場合にステップＳＴ６４に進み、そうでない場合にステップＳＴ６１に戻る。
【００９７】
ステップＳＴ６４：
マッチ／マージ部３５ｄは、マスタフラグＭＦに“偽”を示す例えば「０」を設定する。
【００９８】
図１８は、マッチ／マージ部３５ｄが行う地図データのマッチング／マージ処理等を説明するためのフローチャートである。
当該図１８に示す処理は、上述した図１７に示す処理と並行して実行される。
ステップＳＴ７１：
図６に示す本実施形態のロボットのマップ生成部３３は、例えば、予め決められた処理に基づいて初期データとしての地図データＭＡＰを生成し、これをメモリ１８に書き込む。
このとき、マップ生成部３３は、予め決められた地図データをそのまま地図データＭＡＰとして用いてもよいし、ロボットが所定時間移動した間に入力した距離データＳ３１及び平面検出データＳ３２を基に地図データＭＡＰを生成してもよい。
【００９９】
ステップＳＴ７２：
マッチ／マージ部３５ｄは、マスタフラグＭＦに“真”を示す例えば「１」を初期値として設定する。
【０１００】
ステップＳＴ７３：
マッチ／マージ部３５ｄは、例えば、メモリ１８から読み出したマスタデータＭＤを基に自らがマスタであるか否かを判断し、マスタであると判断した場合にステップＳＴ７４に進み、そうでない場合にステップＳＴ７５に進む。
【０１０１】
ステップＳＴ７４：
マッチ／マージ部３５ｄは、図１３に示す処理ＥＶを行う。
【０１０２】
ステップＳＴ７５：
動き制御部３６は、例えば、現在地から予め設定された目標地に移動するルートを、メモリ１８から読み出した地図データＭＡＰを基に決定する。次に、動き制御部３６は、センサ群１７の検出データを基に障害物などを回避してロボット１が上記決定したルール上を移動するように、アクチュエータ群１６を制御する。
【０１０３】
なお、上述した実施形態では、ＩＤが大きいロボットをマスタとする場合を例示したが、ＩＤが小さい方をマスタとしたり、それ以外の規則に従ってマスタを決定してもよい。
【０１０４】
本実施形態のロボットによれば、マスタのみが地図データを更新し、マスタ以外のスレーブは自らが保持する地図データＭＡＰａを送信する処理のみを行う。そのため、本実施形態によれば、スレーブとなったロボットの処理負荷を軽減できる。
【０１０５】
＜第６実施形態＞
本実施形態のロボットは、マッチ／マージ部３５ｅの処理を除いて、基本点に第１実施形態のロボット１と同じである。
【０１０６】
以下、マッチ／マージ部３５ｅの処理について説明する。
図１９は、図６に示すマッチ／マージ部３５ｅの処理を説明するためのフローチャートである。
ステップＳＴ８１：
マッチ／マージ部３５ｅは、図１に示す通信部１２が他のロボットから受信したパッチデータＰＭａを通信部１２から入力する。
【０１０７】
ステップＳＴ８２：
マッチ／マージ部３５ｅは、ステップＳＴ８１で入力したパッチデータＰＭａとマッチング（一致）する部分を、メモリ１８から読み出した地図データＭＡＰ内で探索する。
例えば、マッチ／マージ部３５ｅは、他のロボットから入力したパッチデータＰＭａを回転させながら、メモリ１８から読み出し地図データＭＡＰ内で一致する部分を、上記式（１）、（２）を用いて説明した手法で探索する。
【０１０８】
ステップＳＴ８３：
マッチ／マージ部３５ｅは、ステップＳＴ８２でマッチングする部分が探索できた場合（マッチングに成功した場合）にステップＳＴ８５に進み、そうでない場合にステップＳＴ８４に進む。
【０１０９】
ステップＳＴ８４：
マッチ／マージ部３５ｅは、マージ処理を行わない条件、例えば、図１８に示す処理を開始してから所定時間経過したなどの条件を満たしたか否かを判断し、満たしたと判断した場合に処理を終了し、そうでない場合にステップＳＴ８１の処理に戻る。
【０１１０】
ステップＳＴ８５：
マッチ／マージ部３５ｅは、他のロボットとの間でマスタ調整処理を行う。当該マスタ調整処理は、例えば図１７に示す処理である。
【０１１１】
ステップＳＴ８６：
マッチ／マージ部３５ｅは、ステップＳＴ８５の処理により、ロボット１がマスタになった場合にステップＳＴ８７に進み、そうでない場合に処理を終了する。
【０１１２】
ステップＳＴ８７：
マッチ／マージ部３５ｅは、通信部１２を介してマップデータＭＡＰaを他のロボットから受信するように指示を出す。
これにより、通信部１２が、他のロボットからマップデータＭＡＰaを受信する。
【０１１３】
ステップＳＴ８８：
マッチ／マージ部３５ｅは、ステップＳＴ８７で受信した地図データＭＡＰａと、メモリ１８から読み出した地図データＭＡＰとのマージ（合成）処理を行う。
【０１１４】
ステップＳＴ８９：
マッチ／マージ部３５ｅは、再びロボット１がマスタであるか否かの判断を行い、マスタであると判断した場合にステップＳＴ９０に進み、そうでない場合に処理を終了する。
【０１１５】
ステップＳＴ９０：
マッチ／マージ部３５ｅは、通信部１２を介してパッチデータＰＭａを他のロボットから受信するように指示を出す。
これにより、通信部１２が、他のロボットからパッチデータＰＭａを受信する。
【０１１６】
ステップＳＴ９１：
マッチ／マージ部３５ｅは、ステップＳＴ９０で受信したパッチデータＰＭａを基に、メモリ１８から読み出した地図データＭＡＰを更新し、その後、ステップＳＴ８９の処理を行う。
【０１１７】
＜第７実施形態＞
本実施形態では、複数のロボットを、マスタロボットと、スレーブロボットとに分類する。
そして、スレーブロボットはマスタロボットに自らが得たパッチデータと地図データとを送信するが、マッチマージ処理は行わない。
一方、マスタロボットは、スレーブロボットから、パッチデータ及び地図データを受信し、それらのマッチ／マージ処理して地図データを更新する。
また、マスタロボットは、複数の地図データを並行して生成する。
【０１１８】
以下、マスタロボットの処理について説明する。
図２０は、マスタデータの設定処理を説明するためのフローチャートである。
ステップＳＴ１０１：
マスタロボットのマッチ／マージ部３５ｆは、例えば、複数の地図データＭＡＰ［１，．．．，ｎ］を生成する。
ステップＳＴ１０２：
マスタロボットのマッチ／マージ部３５ｆは、複数のグループＧＲＯＵＰ［１，．．．，ｎ］を規定する。
【０１１９】
ステップＳＴ１０３：
マッチ／マージ部３５ｆは、通信部１２が他のスレーブロボットａからパッチデータＰＭａを受信したか否かを判断し、受信したと判断するとステップＳＴ１０４に進み、そうでない場合にはステップＳＴ１０６に進む。
【０１２０】
ステップＳＴ１０４：
マッチ／マージ部３５ｆは、スレーブロボットａのグループｇを、例えば、対応表データータなどを基に特定する。
そして、マッチ／マージ部３５ｆは、スレーブロボットａから受信したパッチデータＰＭａを基に、グループｇに対応した地図データＭＡＰ［ｇ］を更新する。
【０１２１】
ステップＳＴ１０５：
マッチ／マージ部３５ｆは、スレーブロボットａが他のスレーブロボットｂを検出したか否かをスレーブロボットａからのデータを基に特定し、検出したと判断した場合にはステップＳＴ１０６に進み、そうではない場合にはステップＳＴ１０８に進む。
【０１２２】
ステップＳＴ１０６：
マッチ／マージ部３５ｆは、スレーブロボットａに対応した地図データＭＡＰ［ａ］内に、スレーブロボットｂに対応した地図データＭＡＰ［ｂ］を合成（マージ）する処理を行う。
【０１２３】
ステップＳＴ１０７：
ステップＳＴ３５ｆは、スレーブロボットｂに対応した地図データＭＡＰ［ｂ］内に、スレーブロボットａに対応した地図データＭＡＰ［ａ］を合成（マージ）する処理を行う。
【０１２４】
ステップＳＴ１０８：
マスタロボットの図６に示す動き制御部３６は、例えば、現在地から予め設定された目標地に移動するルートを、メモリ１８から読み出した地図データＭＡＰを基に決定する。次に、動き制御部３６は、センサ群１７の検出データを基に障害物などを回避してロボット１が上記決定したルール上を移動するように、アクチュエータ群１６を制御する。
【０１２５】
以下、図１９に示すステップＳＴ１０６の処理を説明する。
図２１は、図２０に示すステップＳＴ１０６の処理を説明するためのフローチャートである。
ステップＳＴ１１１：
マスタロボットのマッチ／マージ部３５ｆは、スレーブロボットａのグループｇと、スレーブロボットｂのグループｈとを、対応表データなどを基に特定する。
ステップＳＴ１１２：
マスタロボットのマッチ／マージ部３５ｆは、グループｇとｈとが同じであるか否かを判断し、同じであれば図２０の処理を終了し、そうでなければステップＳＴ１１３に進む。
【０１２６】
ステップＳＴ１１３：
マスタロボットの図１に示す通信部１２は、スレーブロボットａからパッチデータＰＭａを受信する。
ステップＳＴ１１４：
マスタロボットのマッチ／マージ部３５ｆは、ステップＳＴ１１３で受信したパッチデータＰＭａと、グループｈの地図データＭＡＰ［ｈ］とのマッチング処理を行う。
ステップＳＴ１１５：
マスタロボットのマッチ／マージ部３５ｆは、ステップＳＴ１１４のマッチング処理で成功した場合にはステップＳＴ１１７に進み、そうでない場合にはステップＳＴ１１６に進む。
【０１２７】
ステップＳＴ１１６：
マスタロボットのマッチ／マージ部３５ｆは、マージ処理を行わない条件、例えば、図２０に示す処理を開始してから所定時間経過したなどの条件を満たしたか否かを判断し、満たしたと判断した場合に図２０の処理を終了し、そうでない場合にステップＳＴ１１１の処理に戻る。
【０１２８】
ステップＳＴ１１７：
マスタロボットのマッチ／マージ部３５ｆは、地図データＭＡＰ［ｇ］を、地図データＭＡＰ［ｈ］にマージする処理を行う。
ステップＳＴ１１８：
マスタロボットのマッチ／マージ部３５ｆは、変数ｉに初期値「１」を代入する。
【０１２９】
ステップＳＴ１１９：
マスタロボットのマッチ／マージ部３５ｆは、「ｉ＞ｎ」の条件を満たすか否かを判断し、満たすと判断すると図２０の処理を終了し、満たさないと判断するとステップＳＴ１２０に進む。
ここで、ｎは、グループの数を示している。
【０１３０】
ステップＳＴ１２０：
マスタロボットのマッチ／マージ部３５ｆは、グループＧＲＯＵＰ［ｉ］が「ｇ」であるか否かを判断し、「ｇ」であると判断するとステップＳＴ１２１に進み、そうでない場合にはステップＳＴ１１２に進む。
ステップＳＴ１２１：
マスタロボットのマッチ／マージ部３５ｆは、グループＧＲＯＵＰ［ｉ］としてグループｈを設定する。
ステップＳＴ１２２：
マスタロボットのマッチ／マージ部３５ｆは、変数ｉを「１」だけインクリメントしてステップＳＴ１１９に進む。
【０１３１】
以上説明したように、本実施形態では、スレーブロボットはパッチデータを生成して、これをマスタロボットに送信する。また、マスタロボットのみが、スレーブロボットから受信したパッチデータを基に地図データを構成し、複数の地図データをマージ処理する。
これにより、スレーブロボットの構成を非常に簡単にできる。
【０１３２】
本発明は上述した実施形態には限定されない。
すなわち、当業者は、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し、様々な変更、コンビネーション、サブコンビネーション、並びに代替を行ってもよい。
例えば、上述した実施形態では、本発明の通信装置として、２足歩行のロボット１を例示したが、通信装置として、例えば、車輪による移動体、あるいは１足や３足以上のロボットを用いてもよい。また、本発明の通信装置は、ロボット以外でも、通信機能を備えていれば固定式のカメラ装置であってもよい。
【０１３３】
なお、上述した実施形態では、地図生成部３３において、３次元グリッドの各々の占有確率を示す地図データＭＡＰを生成する場合を例示したが、例えば図２２に示すように、ノードｎｏｄｅとエッジｅｄｇｅとからなるグラフを構築し、当該グラフを示す地図データを生成してもよい。この場合に、各ノードｎｏｄｅは、何らかの特徴又はサブマップを示している。また、各エッジｅｄｇｅは、ノードｎｏｄｅ間のパスを示している。
また、地図生成部３３は、図２３に示すように、ＳＬＡＭ(Simultaneous Localization and Map Building)を基にしたカルマンフィルタを用いて、図２３に示すように、テレビ、椅子、テーブルなどのランドマークＬＭを規定した地図データＭＡＰを生成してもよい。
【図面の簡単な説明】
【０１３４】
【図１】図１は、本発明の実施形態に係わるロボットの機能ブロック図である。
【図２】図２は、図１に示すロボット検出部の一例を説明するための図である。
【図３】図３は、本発明の実施形態のロボットの外観図である。
【図４】図４は、本発明の実施形態のロボットの駆動系を説明するための図である。
【図５】図５は、本発明の実施形態のロボットの制御系を説明するための図である。
【図６】図６は、図１に示すＣＰＵの機能ブロック図である。
【図７】図７は、図６に示すマッチ／マージ部の処理を説明するためのフローチャートである。
【図８】図８は、図６に示すマッチ／マージ部の処理を説明するするための図である。
【図９】図９は、図６に示すマッチ／マージ部の処理を説明するするための図である。
【図１０】図１０は、図６に示すマッチ／マージ部の処理を説明するするための図である。
【図１１】図１１は、図６に示すマッチ／マージ部の処理を説明するするための図である。
【図１２】図１２は、図６に示す動き制御部の処理例を説明するためのフローチャートである。
【図１３】図１３は、本発明の第１実施形態のロボットの全体動作例を説明するためのフローチャートである。
【図１４】図１４は、本発明の第２実施形態のマッチ／マージ部３５の処理を説明するためのフローチャートである。
【図１５】図１５は、本発明の第３実施形態のマッチ／マージ部３５の処理を説明するためのフローチャートである。
【図１６】図１６は、本発明の第４実施形態のマッチ／マージ部３５の処理を説明するためのフローチャートである。
【図１７】図１７は、本発明の第５実施形態の図６に示すマッチ／マージ部によるマスタフラグデータの設定処理を説明するためのフローチャートである。
【図１８】図１８は、本発明の第５実施形態のマッチ／マージ部が行う地図データのマッチング／マージ処理等を説明するためのフローチャートである。
【図１９】図１９は、本発明の第６実施形態の図６に示すマッチ／マージ部の処理を説明するためのフローチャートである。
【図２０】図２０は、本発明の第７実施形態の図６に示すマッチ／マージ部によるマスタデータの設定処理を説明するためのフローチャートである。
【図２１】図２１は、図２０に示すステップＳＴ１０６の処理を説明するためのフローチャートである。
【図２２】図２２は、本発明の実施形態における地図データの変形例を説明するための図である。
【図２３】図２３は、本発明の実施形態における地図データの変形例を説明するための図である。
【符号の説明】
【０１３５】
１０Ｌ，１０Ｒ…ＣＣＤカメラ、１２…通信部、１３…ロボット検出部、１６…アクチュエータ群、１７…センサ群、１８…メモリ、１９…ＣＰＵ、３０…画像前処理部、３１…距離データ生成部、３２…平面検出部、３３…マップ生成部、３５…マッチ／マージ部、３６…動き制御部
【図１】
2007156016.tif 000005
【図３】
2007156016.tif 000006
【図４】
2007156016.tif 000007
【図５】
2007156016.tif 000008
【図６】
2007156016.tif 000009
【図７】
2007156016.tif 000010
【図８】
2007156016.tif 000011
【図９】
2007156016.tif 000012
【図１０】
2007156016.tif 000013
【図１１】
2007156016.tif 000014
【図１２】
2007156016.tif 000015
【図１３】
2007156016.tif 000016
【図１４】
2007156016.tif 000017
【図１５】
2007156016.tif 000018
【図１６】
2007156016.tif 000019
【図１７】
2007156016.tif 000020
【図１８】
2007156016.tif 000021
【図１９】
2007156016.tif 000022
【図２０】
2007156016.tif 000023
【図２１】
2007156016.tif 000024
【図２２】
2007156016.tif 000025
【図２３】
2007156016.tif 000026
【図２】
2007156016.tif 000027