JP2007041657A - 移動体制御方法および移動体 - Google Patents
移動体制御方法および移動体 Download PDFInfo
- Publication number
- JP2007041657A JP2007041657A JP2005222179A JP2005222179A JP2007041657A JP 2007041657 A JP2007041657 A JP 2007041657A JP 2005222179 A JP2005222179 A JP 2005222179A JP 2005222179 A JP2005222179 A JP 2005222179A JP 2007041657 A JP2007041657 A JP 2007041657A
- Authority
- JP
- Japan
- Prior art keywords
- moving body
- path
- moving
- robot
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 88
- 230000033001 locomotion Effects 0.000 claims abstract description 70
- 238000003384 imaging method Methods 0.000 claims description 18
- 230000009471 action Effects 0.000 claims description 15
- 230000009194 climbing Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 abstract description 139
- 230000006870 function Effects 0.000 abstract description 31
- 230000008569 process Effects 0.000 description 60
- 238000001514 detection method Methods 0.000 description 41
- 238000005259 measurement Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 24
- 210000002414 leg Anatomy 0.000 description 12
- 238000009826 distribution Methods 0.000 description 7
- 230000007613 environmental effect Effects 0.000 description 7
- 238000000605 extraction Methods 0.000 description 6
- 210000004394 hip joint Anatomy 0.000 description 6
- 239000000284 extract Substances 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- CIWBSHSKHKDKBQ-JLAZNSOCSA-N Ascorbic acid Chemical compound OC[C@H](O)[C@H]1OC(=O)C(O)=C1O CIWBSHSKHKDKBQ-JLAZNSOCSA-N 0.000 description 4
- 230000008451 emotion Effects 0.000 description 4
- 210000002683 foot Anatomy 0.000 description 4
- 102220111708 rs77809780 Human genes 0.000 description 4
- 102220182402 rs80133178 Human genes 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 238000012790 confirmation Methods 0.000 description 3
- 210000000544 articulatio talocruralis Anatomy 0.000 description 2
- 230000008921 facial expression Effects 0.000 description 2
- 210000001624 hip Anatomy 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 210000001503 joint Anatomy 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 210000000323 shoulder joint Anatomy 0.000 description 2
- 210000001364 upper extremity Anatomy 0.000 description 2
- OVGWMUWIRHGGJP-WVDJAODQSA-N (z)-7-[(1s,3r,4r,5s)-3-[(e,3r)-3-hydroxyoct-1-enyl]-6-thiabicyclo[3.1.1]heptan-4-yl]hept-5-enoic acid Chemical compound OC(=O)CCC\C=C/C[C@@H]1[C@@H](/C=C/[C@H](O)CCCCC)C[C@@H]2S[C@H]1C2 OVGWMUWIRHGGJP-WVDJAODQSA-N 0.000 description 1
- 101100161473 Arabidopsis thaliana ABCB25 gene Proteins 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 101000988961 Escherichia coli Heat-stable enterotoxin A2 Proteins 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- 101100096893 Mus musculus Sult2a1 gene Proteins 0.000 description 1
- 101150081243 STA1 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 210000002310 elbow joint Anatomy 0.000 description 1
- 210000003414 extremity Anatomy 0.000 description 1
- 210000000245 forearm Anatomy 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 210000000629 knee joint Anatomy 0.000 description 1
- 210000003141 lower extremity Anatomy 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 210000000707 wrist Anatomy 0.000 description 1
- 210000003857 wrist joint Anatomy 0.000 description 1
Images
Landscapes
- Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
- Manipulator (AREA)
Abstract
【課題】 移動体が利用可能な移動動作が変化した場合でも、適切な移動動作を選択してパス上を移動できる移動体制御方法を提供する。
【解決手段】 パス決定部36が、CPU15が機能として利用可能な処理部35_1〜35_6等を特定し、その利用な処理部を基に、目標位置までの複数のパスを動的に特定する。そして、パス決定部36が、処理部35_1〜35_6を順次選択的に指示してロボット1に走行動作を行わせる。
【選択図】 図5
【解決手段】 パス決定部36が、CPU15が機能として利用可能な処理部35_1〜35_6等を特定し、その利用な処理部を基に、目標位置までの複数のパスを動的に特定する。そして、パス決定部36が、処理部35_1〜35_6を順次選択的に指示してロボット1に走行動作を行わせる。
【選択図】 図5
Description
本発明は、撮像画像を基に移動する移動体を制御する移動体制御方法と、その移動体に関する。
例えば、自律型ロボットは、産業用ロボットと異なり、周囲の外部状態やロボット自身の内部状態に応じて自律的に動作を行うことのできるロボットである。例えば、自律型ロボットは、歩行動作では、外部の障害物を検出して障害物を回避するような行動経路を計画することができなくてはならない。従来のロボットのなかには、自身のおかれた環境の障害物地図を作成し、これに基づいて行動経路を決定できるロボットも提案されている。
ところで、従来のロボットは、自らが備える機能、例えば、通常歩行、階段走行、よじ登り動作、ジャンプ動作などを行う機能が正常であるとの前提でロボットが移動するパスを決定し、ロボットを動作させている。
ところで、上述した機能は、その一部が故障する場合があるが、従来のロボットでは、全ての機能を正常に動作するという前提で、パス上の移動過程で利用する機能を順次決定するため、故障した機能が選択され、ロボットがパスを移動できない場合がある。
ところで、上述した機能は、その一部が故障する場合があるが、従来のロボットでは、全ての機能を正常に動作するという前提で、パス上の移動過程で利用する機能を順次決定するため、故障した機能が選択され、ロボットがパスを移動できない場合がある。
本発明は上述した従来技術の問題点を解決するために、移動体が利用可能な移動動作が変化した場合でも、適切な移動動作を選択してパス上を移動できる移動体制御方法および移動体を提供することを目的とする。
上述した従来技術の問題点を解決し、上述した目的を達成するため、第1の観点の発明の移動体制御方法は、移動体が目標位置まで移動する動作を制御する移動体制御方法であって、前記移動体の現在位置から前記目標位置までのパスの状態を検出する第1の工程と、前記移動体が実行可能な複数の移動動作を特定する第2の工程と、前記第1の工程で検出したパスの状態に基づいて、前記第2の工程で特定した前記移動体が実行可能な複数の種類の移動動作のうち、前記移動体の位置の状態に適合した移動動作を順次選択し、当該選択した移動動作を前記移動体が行うように制御する第3の工程とを有する。
第2の観点の発明の移動体は、異なる複数の撮像位置からの撮像対象領域の撮像結果を生成する撮像手段と、走行手段と、前記撮像手段が生成した前記撮像結果を基に、前記移動体の現在位置から前記目標位置までのパスの状態を検出し、前記移動体が実行可能な複数の移動動作を特定し、前記検出したパスの状態に基づいて、前記第2の工程で特定した前記移動体が実行可能な複数の種類の移動動作のうち、前記移動体の位置の状態に適合した移動動作を順次選択し、当該選択した移動動作を前記移動体が行うように前記走行手段を制御する制御手段とを有する。
本発明によれば、移動体が利用可能な移動動作が変化した場合でも、適切な移動動作を選択してパス上を移動できる移動体制御方法および移動体を提供することができる。
以下、本発明の実施形態に係わるロボットについて説明する。
先ず、本実施形態の構成要素と、本発明の構成要素との対応関係を説明する。
図5に示す環境クラス分類部34の処理が本発明の第1の工程の一例であり、図22に示すパス決定部36のステップST61の処理が本発明の第2の工程の一例であり、ステップST62〜ST64、図24および図25の処理が本発明の第3の工程の一例である。
また、図23の処理が、本発明の第4の工程の一例である。
先ず、本実施形態の構成要素と、本発明の構成要素との対応関係を説明する。
図5に示す環境クラス分類部34の処理が本発明の第1の工程の一例であり、図22に示すパス決定部36のステップST61の処理が本発明の第2の工程の一例であり、ステップST62〜ST64、図24および図25の処理が本発明の第3の工程の一例である。
また、図23の処理が、本発明の第4の工程の一例である。
また、図1に示すCCDカメラ10R,10Lが本発明の撮像手段の一例であり、図3および図4に示す脚部などが本発明の走行手段の一例であり、図1に示すCPU15が本発明の制御手段の一例である。
本実施形態のロボット1は、ロボット1では、図5等に示すように、CPU15が機能として利用可能な処理部35_1〜35_6等を特定し(図22に示すステップST61)、その利用な処理部を基に、目標位置までの複数のパスを動的に特定する(ステップST62)。
これにより、例えば、処理部35_1〜35_6あるいはそれによって制御されるアクチュエータ群16などの機械部位が故障した場合に、その故障した機能に対応した処理部による制御を利用しないで目標位置に達するパスを選択することができる。
これにより、例えば、処理部35_1〜35_6あるいはそれによって制御されるアクチュエータ群16などの機械部位が故障した場合に、その故障した機能に対応した処理部による制御を利用しないで目標位置に達するパスを選択することができる。
図1は、本発明の実施形態のロボット1の機能ブロック図である。
図1に示すように、ロボット1は、例えば、CCDカメラ10R,10L、ステレオ画像処理装置12、CPU15、アクチュエータ群16およびセンサ群17を有する。
CCDカメラ10R,10Lは、それぞれ撮像結果に応じた右画像データS10Rおよび左画像データS10Lをステレオ画像処理装置12に出力する。
図1に示すように、ロボット1は、例えば、CCDカメラ10R,10L、ステレオ画像処理装置12、CPU15、アクチュエータ群16およびセンサ群17を有する。
CCDカメラ10R,10Lは、それぞれ撮像結果に応じた右画像データS10Rおよび左画像データS10Lをステレオ画像処理装置12に出力する。
ステレオ画像処理装置12は、CCDカメラ10R,10Lから入力した右画像データS10Rと左画像データS10Lの視差情報(disparity data)(距離情報)を計算し、カラー画像データ(YUV:輝度Y、UV色差)S12a及び視差画像データ(YDR:輝度Y、視差D、信頼度R)S12bをフレーム毎に左右交互に算出する。
ここで、視差とは、空間中のある点が左側カメラ及び右側カメラに写像される点の違いを示し、そのカメラからの距離に応じて変化するものである。
カラー画像データS12a及び視差画像データS12bは、CPU(制御部)15に入力される。
CPU15は、ステレオ画像処理装置12から入力したカラー画像データS12a及び視差画像データS12bを用いて、後述するソフトウェア構成によって、画像処理を行う。
ここで、視差とは、空間中のある点が左側カメラ及び右側カメラに写像される点の違いを示し、そのカメラからの距離に応じて変化するものである。
カラー画像データS12a及び視差画像データS12bは、CPU(制御部)15に入力される。
CPU15は、ステレオ画像処理装置12から入力したカラー画像データS12a及び視差画像データS12bを用いて、後述するソフトウェア構成によって、画像処理を行う。
アクチュエータ群16は、ロボット1の動きを駆動する各種のアクチュエータである。
アクチュエータ群16は、CPU15からの制御信号S15によって駆動される。
センサ群17は、ロボット1の所定箇所に設置された赤外線センサなどの非接触型センサや接触型センサなどである。
センサ群17は、検出信号S17をCPU15に出力する。
アクチュエータ群16は、CPU15からの制御信号S15によって駆動される。
センサ群17は、ロボット1の所定箇所に設置された赤外線センサなどの非接触型センサや接触型センサなどである。
センサ群17は、検出信号S17をCPU15に出力する。
以下、図1に示すロボット1の構成をさらに詳細に説明する。
図2に示すように、ロボット1は、2足歩行タイプであり、日常生活上の様々な場面における人的活動を支援する実用ロボットである。
ロボット1は、内部状態(怒り、悲しみ、喜び、楽しみ等)に応じて行動できるほか、人間が行う基本的な動作を表出できるエンターテインメントロボットである。ロボットは、3次元環境クラスデータを生成し、これを基に行動経路を決定する。
図2に示すように、ロボット1は、2足歩行タイプであり、日常生活上の様々な場面における人的活動を支援する実用ロボットである。
ロボット1は、内部状態(怒り、悲しみ、喜び、楽しみ等)に応じて行動できるほか、人間が行う基本的な動作を表出できるエンターテインメントロボットである。ロボットは、3次元環境クラスデータを生成し、これを基に行動経路を決定する。
図2に示すように、ロボット1は、体幹部ユニット202の所定の位置に頭部ユニット203が連結されるとともに、左右2つの腕部ユニット204R/Lと、左右2つの脚部ユニット205R/Lが連結されて構成されている。
図2に示すロボット1が具備する関節自由度構成を図3に模式的に示す。
頭部ユニット203を支持する首関節は、首関節ヨー軸101と、首関節ピッチ軸102と、首関節ロール軸103という3自由度を有している。
頭部ユニット203を支持する首関節は、首関節ヨー軸101と、首関節ピッチ軸102と、首関節ロール軸103という3自由度を有している。
また、上肢を構成する各々の腕部ユニット204R/Lは、肩関節ピッチ軸107と、肩関節ロール軸108と、上腕ヨー軸109と、肘関節ピッチ軸110と、前腕ヨー軸111と、手首関節ピッチ軸112と、手首関節ロール軸113と、手部114とで構成される。
手部114は、実際には、複数本の指を含む多関節・多自由度構造体である。ただし、手部114の動作は、ロボット1の姿勢制御や歩行制御に対する寄与や影響が少ないので、本明細書では簡単のため、ゼロ自由度と仮定する。したがって、各腕部は7自由度を有するとする。
また、体幹部ユニット202は、体幹ピッチ軸104と、体幹ロール軸105と、体幹ヨー軸106という3自由度を有する。
手部114は、実際には、複数本の指を含む多関節・多自由度構造体である。ただし、手部114の動作は、ロボット1の姿勢制御や歩行制御に対する寄与や影響が少ないので、本明細書では簡単のため、ゼロ自由度と仮定する。したがって、各腕部は7自由度を有するとする。
また、体幹部ユニット202は、体幹ピッチ軸104と、体幹ロール軸105と、体幹ヨー軸106という3自由度を有する。
また、下肢を構成する各々の脚部ユニット205R/Lは、股関節ヨー軸115と、股関節ピッチ軸116と、股関節ロール軸117と、膝関節ピッチ軸118と、足首関節ピッチ軸119と、足首関節ロール軸120と、足底121とで構成される。
本明細書中では、股関節ピッチ軸116と股関節ロール軸117の交点は、ロボット1の股関節位置を定義する。人体の足底121は、実際には多関節・多自由度の足底を含んだ構造体であるが、本明細書においては、簡単のためロボット1の足底は、ゼロ自由度とする。したがって、各脚部は、6自由度で構成される。
以上を総括すれば、ロボット1全体としては、合計で3+7×2+3+6×2=32自由度を有することになる。ただし、エンターテインメント向けのロボット1が必ずしも32自由度に限定されるわけではない。設計・制作上の制約条件や要求仕様等に応じて、自由度すなわち関節数を適宜増減することができることはいうまでもない。
本明細書中では、股関節ピッチ軸116と股関節ロール軸117の交点は、ロボット1の股関節位置を定義する。人体の足底121は、実際には多関節・多自由度の足底を含んだ構造体であるが、本明細書においては、簡単のためロボット1の足底は、ゼロ自由度とする。したがって、各脚部は、6自由度で構成される。
以上を総括すれば、ロボット1全体としては、合計で3+7×2+3+6×2=32自由度を有することになる。ただし、エンターテインメント向けのロボット1が必ずしも32自由度に限定されるわけではない。設計・制作上の制約条件や要求仕様等に応じて、自由度すなわち関節数を適宜増減することができることはいうまでもない。
上述したようなロボット1がもつ各自由度は、実際にはアクチュエータを用いて実装される。外観上で余分な膨らみを排してヒトの自然体形状に近似させること、2足歩行という不安定構造体に対して姿勢制御を行うこと等の要請から、アクチュエータは小型かつ軽量であることが好ましい。
なお、図3および図4に示すアクチュエータによって図1に示すアクチュエータ群16が構成され、図3および図4に示すセンサによって図1に示すセンサ群17が構成される。
なお、図3および図4に示すアクチュエータによって図1に示すアクチュエータ群16が構成され、図3および図4に示すセンサによって図1に示すセンサ群17が構成される。
このようなロボットは、ロボット全体の動作を制御する制御システムを例えば体幹部ユニット202等に備える。
図3および図4は、本実施形態のロボット1の制御システム構成を示す模式図である。
図3および図4に示すように、制御システムは、ユーザ入力等に動的に反応して情緒判断や感情表現を司る思考制御モジュール200と、アクチュエータ350の駆動等、ロボット1の全身協調運動を制御する運動制御モジュール300とで構成される。
図3および図4は、本実施形態のロボット1の制御システム構成を示す模式図である。
図3および図4に示すように、制御システムは、ユーザ入力等に動的に反応して情緒判断や感情表現を司る思考制御モジュール200と、アクチュエータ350の駆動等、ロボット1の全身協調運動を制御する運動制御モジュール300とで構成される。
思考制御モジュール200は、情緒判断や感情表現に関する演算処理を実行するCPU(Central Processing Unit)211や、RAM(Random Access Memory)212、ROM(Read Only Memory)213及び外部記憶装置(ハード・ディスク・ドライブ等)214等で構成され、モジュール内で自己完結した処理を行うことができる、独立駆動型の情報処理装置である。
この思考制御モジュール200は、画像入力装置251から入力される画像データや音声入力装置252から入力される音声データ等、外界からの刺激等にしたがって、ロボット1の現在の感情や意思を決定する。すなわち、上述したように、入力される画像データからユーザの表情を認識し、その情報をロボット201の感情や意思に反映させることで、ユーザの表情に応じた行動を発現することができる。
ここで、画像入力装置251は、例えばCCD(Charge Coupled Device)カメラを複数備えており、これらのカメラにより撮像した画像から距離画像を得ることができる。
本実施形態では、画像入力装置251は、図1に示すCCDカメラ10R,10Lに対応している。
また、音声入力装置252は、例えばマイクロホンを複数備えている。
ここで、画像入力装置251は、例えばCCD(Charge Coupled Device)カメラを複数備えており、これらのカメラにより撮像した画像から距離画像を得ることができる。
本実施形態では、画像入力装置251は、図1に示すCCDカメラ10R,10Lに対応している。
また、音声入力装置252は、例えばマイクロホンを複数備えている。
思考制御モジュール200は、意思決定に基づいた動作又は行動シーケンス、すなわち四肢の運動を実行するように、運動制御モジュール300に対して指令を発行する。
運動制御モジュール300は、ロボット1の全身協調運動を制御するCPU311(図1に示すCPU15)や、RAM312、ROM313及び外部記憶装置(ハード・ディスク・ドライブ等)314等で構成され、モジュール内で自己完結した処理を行うことができる独立駆動型の情報処理装置である。また、外部記憶装置314には、例えば、オフラインで算出された歩行パターンや目標とするZMP軌道、その他の行動計画を蓄積することができる。
この運動制御モジュール300には、図2に示したロボット1の全身に分散するそれぞれの関節自由度を実現するアクチュエータ350、対象物との距離を測定する距離計測センサ(図示せず)、体幹部ユニット202の姿勢や傾斜を計測する姿勢センサ351、左右の足底の離床又は着床を検出する接地確認センサ352,353、足底121の足底121に設けられる荷重センサ、バッテリ等の電源を管理する電源制御装置354等の各種の装置が、バス・インターフェース(I/F)310経由で接続されている。
ここで、姿勢センサ351は、例えば加速度センサとジャイロ・センサの組合せによって構成され、接地確認センサ352,353は、近接センサ又はマイクロ・スイッチ等で構成される。
この運動制御モジュール300には、図2に示したロボット1の全身に分散するそれぞれの関節自由度を実現するアクチュエータ350、対象物との距離を測定する距離計測センサ(図示せず)、体幹部ユニット202の姿勢や傾斜を計測する姿勢センサ351、左右の足底の離床又は着床を検出する接地確認センサ352,353、足底121の足底121に設けられる荷重センサ、バッテリ等の電源を管理する電源制御装置354等の各種の装置が、バス・インターフェース(I/F)310経由で接続されている。
ここで、姿勢センサ351は、例えば加速度センサとジャイロ・センサの組合せによって構成され、接地確認センサ352,353は、近接センサ又はマイクロ・スイッチ等で構成される。
思考制御モジュール200と運動制御モジュール300は、共通のプラットフォーム上
で構築され、両者間はバス・インターフェース210,310を介して相互接続されている。
で構築され、両者間はバス・インターフェース210,310を介して相互接続されている。
運動制御モジュール300では、思考制御モジュール200から指示された行動を体現すべく、各アクチュエータ350による全身協調運動を制御する。すなわち、CPU311は、思考制御モジュール200から指示された行動に応じた動作パターンを外部記憶装置314から取り出し、又は、内部的に動作パターンを生成する。そして、CPU311は、指定された動作パターンにしたがって、足部運動、ZMP軌道、体幹運動、上肢運動、腰部水平位置及び高さ等を設定するとともに、これらの設定内容に従った動作を指示す
る指令値を各アクチュエータ350に転送する。
る指令値を各アクチュエータ350に転送する。
CPU311は、姿勢センサ351の出力信号によりロボット1の体幹部ユニット202の姿勢や傾きを検出するとともに、各接地確認センサ352,353の出力信号により各脚部ユニット205R/Lが遊脚又は立脚のいずれの状態であるかを検出することによって、ロボット1の全身協調運動を適応的に制御することができる。更に、CPU311は、ZMP位置が常にZMP安定領域の中心に向かうように、ロボット1の姿勢や動作を制御する。
また、運動制御モジュール300は、思考制御モジュール200において決定された意
思通りの行動がどの程度発現されたか、すなわち処理の状況を、思考制御モジュール20
0に返すようになっている。このようにしてロボット1は、制御プログラムに基づいて自己及び周囲の状況を判断し、自律的に行動することができる。
思通りの行動がどの程度発現されたか、すなわち処理の状況を、思考制御モジュール20
0に返すようになっている。このようにしてロボット1は、制御プログラムに基づいて自己及び周囲の状況を判断し、自律的に行動することができる。
以下、図1および図4に示すCPU15(CPU311)の機能を説明する。
図5は、図1および図4に示すCPU15の機能ブロック図である。
図5に示すように、CPU15は、例えば、距離データ生成部31、平面検出部32、グリッドマップ生成部33、環境クラス分類部34、通常走行処理部35_1、階段走行処理部35_2、注意走行処理部35_3、這動作処理部35_4、ステップオーバ処理部35_5、よじ登り/ジャンプ処理部35_6,パス決定部36、並びに動き制御部37を有する。
図5は、図1および図4に示すCPU15の機能ブロック図である。
図5に示すように、CPU15は、例えば、距離データ生成部31、平面検出部32、グリッドマップ生成部33、環境クラス分類部34、通常走行処理部35_1、階段走行処理部35_2、注意走行処理部35_3、這動作処理部35_4、ステップオーバ処理部35_5、よじ登り/ジャンプ処理部35_6,パス決定部36、並びに動き制御部37を有する。
[距離データ生成部31]
距離データ生成部31は、図1に示すステレオ画像処理装置12から入力したカラー画像データS12a及び視差画像データS12bを基に、ロボット1から画像(環境)内の対象物までの3次元距離を示す距離データ(ステレオデータ)S31を生成し、これを平面検出部32およびグリッドマップ生成部33に出力する。
距離データ生成部31は、例えば、図6に示すような画像(環境)内の距離データS31を生成する。図6に示す実空間S500には、ロボット1が登行可能な平面PL501とPL502とを備える階段(Staircase)ST503と、ロボット1が登行不可能な障害物(Obstacle)OB504,505とが示されている。
また、図7は、ロボット1が外界を撮影している様子を示す模式図である。
ここでは、床面(基準面)をx−y平面とし、高さ方向をz軸としたとき、図7に示すように、画像入力部(ステレオカメラ)を頭部ユニット203に有するロボット1の視野範囲は、ロボット1の前方の所定範囲となる。ロボット1は、視野範囲にある環境を認識して距離データS31を生成する。
距離データ生成部31は、図1に示すステレオ画像処理装置12から入力したカラー画像データS12a及び視差画像データS12bを基に、ロボット1から画像(環境)内の対象物までの3次元距離を示す距離データ(ステレオデータ)S31を生成し、これを平面検出部32およびグリッドマップ生成部33に出力する。
距離データ生成部31は、例えば、図6に示すような画像(環境)内の距離データS31を生成する。図6に示す実空間S500には、ロボット1が登行可能な平面PL501とPL502とを備える階段(Staircase)ST503と、ロボット1が登行不可能な障害物(Obstacle)OB504,505とが示されている。
また、図7は、ロボット1が外界を撮影している様子を示す模式図である。
ここでは、床面(基準面)をx−y平面とし、高さ方向をz軸としたとき、図7に示すように、画像入力部(ステレオカメラ)を頭部ユニット203に有するロボット1の視野範囲は、ロボット1の前方の所定範囲となる。ロボット1は、視野範囲にある環境を認識して距離データS31を生成する。
[平面検出部32]
平面検出部32は、距離データ生成部31から入力した距離データS31から環境内に存在する複数の平面を検出し、それを示す平面データS32をグリッドマップ生成部33に出力する。
ここでの平面の検出方法としては、線分拡張法、ハフ変換等を利用した公知の平面検出技術を適用することができる。ノイズを含む距離データから階段のように複数平面を検出する代表例として、線分拡張法による平面検出を行うと正確に平面を検出することができる。
平面検出部32は、距離データ生成部31から入力した距離データS31から環境内に存在する複数の平面を検出し、それを示す平面データS32をグリッドマップ生成部33に出力する。
ここでの平面の検出方法としては、線分拡張法、ハフ変換等を利用した公知の平面検出技術を適用することができる。ノイズを含む距離データから階段のように複数平面を検出する代表例として、線分拡張法による平面検出を行うと正確に平面を検出することができる。
線分拡張法は、視野内において支配的な平面だけでなく、例えば階段など複数の平面が
存在する場合であっても確実に複数平面を検出することができ、平面を検出する際に抽出
する線分抽出において、距離データの点の分布に応じて適応的に線分をフィッティングさ
せることにより観測ノイズに対してロバストな平面検出結果を得ることができる。
存在する場合であっても確実に複数平面を検出することができ、平面を検出する際に抽出
する線分抽出において、距離データの点の分布に応じて適応的に線分をフィッティングさ
せることにより観測ノイズに対してロバストな平面検出結果を得ることができる。
平面検出部32は、図8に示すように、画像を構成する距離データから同一平面にあると推定される距離データ点群を選択し、この距離データ点群毎に線分を抽出する線分抽出部51と、画像内に含まれる、線分抽出部51よって抽出された全線分からなる線分群から、該画像内に存在する1又は複数の平面領域を検出する領域拡張部52とを有する。
領域拡張部52は、線分群から同一平面上に存在すると推定される任意の3本の線分を選択し、これらから基準平面を求める。そして、選択した3本の線分に隣接する線分がこの基準平面と同一平面に属するか否かを判定し、同一平面に属すると判定した場合にはその領域拡張用線分としての線分により基準平面を更新するとともに基準平面の領域を拡張する。
領域拡張部52は、線分群から同一平面上に存在すると推定される任意の3本の線分を選択し、これらから基準平面を求める。そして、選択した3本の線分に隣接する線分がこの基準平面と同一平面に属するか否かを判定し、同一平面に属すると判定した場合にはその領域拡張用線分としての線分により基準平面を更新するとともに基準平面の領域を拡張する。
線分抽出部51は、その距離画像における列又は行毎の各データ列において、3次元空間内で同一平面上にあると推定される距離データ点群を抽出し、この距離データ点群から距離データ点群の分布に応じて1以上の線分を生成する。すなわち、分布に偏りがあると判断された場合には、データ点群は同一平面上にないと判断し、データ点群を分割し、分割したデータ点群それぞれについて再度分布に偏りがあるかを判断する処理を繰り返し、分布に偏りがない場合にはそのデータ点群から線分を生成する。全てのデータ列について以上の処理を行い、生成した線分群S51を領域拡張部52に出力する。
領域拡張部52は、この線分S51において、同一の平面に属すると推定される線分を3本選択し、これらから基準平面としての種となる平面を求める。この種となる平面の領域(領域種:seed region)に対して、該領域種と同一平面に属する線分を順次統合していくことで拡張していく領域拡張によって距離画像を複数の平面に分割し、平面群の平面データS32を出力する。
平面検出部32は、ハフ変換のように、取得した画像に含まれる支配的な平面を検出するのみならず、階段など複数平面が含まれている場合であっても平面を検出可能とするため、線分拡張法により平面を検出する。そして、この際、距離データ点の分布に応じて線分を生成することにより、計測ノイズに対してロバストな検出結果を得ることができるものである。
図9は、線分拡張法による平面検出方法を説明する図である。
線分拡張法による平面検出では、図9に示すように、まず、焦点Fから撮影された画像20において、行方向又は列方向のデータ列における処理をする。画像内の例えば行方向の画素列(image row:イメージロウ)において、距離データ点が同一の平面に属するならば直線となることを利用し、同一平面に属すると推定される距離データ点からなる線分を生成する。そして、得られた複数の線分からなる線分群において、同一平面を構成するとされる線分群に基づき平面を推定、検出する方法である。
線分拡張法による平面検出では、図9に示すように、まず、焦点Fから撮影された画像20において、行方向又は列方向のデータ列における処理をする。画像内の例えば行方向の画素列(image row:イメージロウ)において、距離データ点が同一の平面に属するならば直線となることを利用し、同一平面に属すると推定される距離データ点からなる線分を生成する。そして、得られた複数の線分からなる線分群において、同一平面を構成するとされる線分群に基づき平面を推定、検出する方法である。
図10は、線分拡張法による平面検出処理を示すフローチャートである。
図10に示すように、まず、平面検出部32は、距離データS31を入力し(ステップST1)、距離画像の行方向(又は列方向)の各画素列において同一平面に属すると推定されるデータ点から線分を求める(ステップST2)。
そして、平面検出部32は、これらの線分群のなかから同一平面に属すると推定される線分を抽出し、これらの線分からなる平面を求める(ステップST3)。このステップS3では、まず、平面検出部32は、平面の種となる領域(以下、領域種(seed region)という。)を選び、該当する領域種を選択する。この選択においては、上下隣接する行方向(又は左右隣接する列方向)の1ラインを含む3本の線分が同一平面にあることを条件とする。ここで、平面検出部32は、選択した3本の線分からなる領域種が属する平面を基準平面とし、3本の線分から平均して求まる平面を求めておく。また、3本の線分からなる領域を基準平面領域とする。
図10に示すように、まず、平面検出部32は、距離データS31を入力し(ステップST1)、距離画像の行方向(又は列方向)の各画素列において同一平面に属すると推定されるデータ点から線分を求める(ステップST2)。
そして、平面検出部32は、これらの線分群のなかから同一平面に属すると推定される線分を抽出し、これらの線分からなる平面を求める(ステップST3)。このステップS3では、まず、平面検出部32は、平面の種となる領域(以下、領域種(seed region)という。)を選び、該当する領域種を選択する。この選択においては、上下隣接する行方向(又は左右隣接する列方向)の1ラインを含む3本の線分が同一平面にあることを条件とする。ここで、平面検出部32は、選択した3本の線分からなる領域種が属する平面を基準平面とし、3本の線分から平均して求まる平面を求めておく。また、3本の線分からなる領域を基準平面領域とする。
そして、平面検出部32は、選択した領域種に隣接する行方向(又は列方向)の画素列からなる直線と上記基準平面とが同じ平面であるかどうかを空間的な距離を比較することで判断し、同じ平面である場合には、その隣接する線分を基準平面領域に追加し(領域拡張処理)、追加した線分を含めたものとして上記基準平面を更新し(平面更新処理)、これを平面領域に隣接するデータ列に同一平面の線分が存在しなくなるまで繰り返し行う。そして、以上領域種を検索して平面更新及び領域拡張処理を、種となる領域(3本の線分)が存在しなくなるまで繰り返し実行する。最後に、得られた複数の領域群のなかから同一平面を構成するものを連結する。そして、本実施の形態においては、得られた平面に属する線分群のうち、平面から所定の閾値以上外れる線分を除いて再度平面を求める平面再算出処理をステップST4として更に設け、最終的な平面とするが、詳細は後述する。
ここで、3次元距離データから線分を検出し、これを同一平面毎にまとめた領域を1つの平面とする処理は従来の線分拡張法による平面検出処理であるが、本実施の形態においては、ステップST2における線分抽出方法が従来とは異なる。すなわち、上述したように、距離データ点から線分を求めて距離データ点にできるだけフィットするように線分を生成しようとしても、距離データの精度に応じて閾値を変更しなければ、over-segmentation又はunder-segmentationなどもの問題が生じてしまう。そこで、本実施の形態においては、この線分抽出において、距離データの分布を解析することで、距離データの精度、ノイズに応じて適応的に閾値を変更する手法を導入するものとする。
上述した平面検出処理によって検出される平面について、図11、図12を用いて説明する。平面検出部32によって検出される平面が、例えば、図11、図12に示す階段STAの場合について説明する。図11(a)、図12(a)は階段を正面からみた図であり、図11(b)、図12(b)は階段を側面からみた図であり、図11(c)、図12(c)は階段を斜めからみた図である。
本明細書においては、人間、ロボットなどが階段を昇降するために使用する面(足又は可動脚部を載せる面)を踏面といい、一の踏面からその次の踏面までの高さ(1段の階段の高さ)を蹴り上げということとする。また、階段は、地面に近い方から1段目、2段目とカウントすることとする。
図11に示す階段STA1は、段数が3段の階段であり、蹴り上げ4cm、1,2段面の踏面の大きさは幅30cm、奥行き10cm、最上段である3段目の踏面のみ、幅30cm、奥行き21cmとなっている。また、図12に示す階段STA2も段数が3段の階段であり、蹴り上げ3cm、1,2段面の踏面の大きさは幅33cm、奥行き12cm、最上段である3段目の踏面のみ、幅33cm、奥行き32cmとなっている。
[グリッドマップ生成部33]
グリッドマップ生成部33は、距離データ生成部31から入力した距離データS31と平面検出部32から入力した上記平面検出データS32とに基づいて、3次元グリッドマップデータGMおよびフロア高さデータFHを生成し、これらを環境クラス分類部34に出力する。
グリッドマップ生成部33は、距離データ生成部31から入力した距離データS31と平面検出部32から入力した上記平面検出データS32とに基づいて、3次元グリッドマップデータGMおよびフロア高さデータFHを生成し、これらを環境クラス分類部34に出力する。
先ず、グリッドマップ生成部33による3次元グリッドマップデータGMの生成処理について説明する。
3次元グリッドマップデータGMは、周囲の環境を水平方向及び垂直方向に所定の大きさの格子(グリッド;Grid)に分割して表したものである。
グリッドマップ生成部33は、距離データ生成部31からの距離データS31と、平面検出部32からの平面データS32とに基づいて、例えば、4メートル四方、高さ1メートルの空間を、水平解像度4センチ及び垂直解像度1センチの直方体空間を1グリッド単位(1セルと記す。)とし、その集合によって表現された3次元グリッドマップデータGMを生成する。
グリッドマップ生成部33は、各セルに物体によって占有されているか否かの確率を付与し、観測データに基づいて各セルの占有確率を変更させている。また、グリッドマップ生成部33は、占有確率に閾値を設け、占有確率が閾値より大きいか否かによって環境の状態を地図として表現している。
本具体例では、高さ方向の解像度がセル分解能に依存しないため、垂直解像度は、1セ
ンチよりも粗くできる。
3次元グリッドマップデータGMは、周囲の環境を水平方向及び垂直方向に所定の大きさの格子(グリッド;Grid)に分割して表したものである。
グリッドマップ生成部33は、距離データ生成部31からの距離データS31と、平面検出部32からの平面データS32とに基づいて、例えば、4メートル四方、高さ1メートルの空間を、水平解像度4センチ及び垂直解像度1センチの直方体空間を1グリッド単位(1セルと記す。)とし、その集合によって表現された3次元グリッドマップデータGMを生成する。
グリッドマップ生成部33は、各セルに物体によって占有されているか否かの確率を付与し、観測データに基づいて各セルの占有確率を変更させている。また、グリッドマップ生成部33は、占有確率に閾値を設け、占有確率が閾値より大きいか否かによって環境の状態を地図として表現している。
本具体例では、高さ方向の解像度がセル分解能に依存しないため、垂直解像度は、1セ
ンチよりも粗くできる。
グリッドマップ生成部33は、3次元グリッドで表される実空間S500における全ての単位グリッド(以下、セルと記す。)p(x,y,z)に対して次の処理を行う。
グリッドマップ生成部33は、撮像画像内に像として映し出された測定点(3次元グリッド)と観測中心(ステレオカメラ中心)とを結ぶ直線上には障害物が存在しないというアルゴリズムに基づいて3次元グリッドマップデータGMを作成及び/又は更新している。
図13は、3次元グリッドマップデータGMが観測結果に応じて更新される様子をy軸方向からの側面図として模式的に表したものである。ロボット1の視野領域(Field of View)にないセル(斜線のセル)は、まだ測定していないセルを表す。ロボット1によって測定されたセルは黒塗りで表され、測定点にあたるセルとの間のセルは、白塗りで表されている。ハッチング領域は、未確認領域であることを示している。
グリッドマップ生成部33は、撮像画像内に像として映し出された測定点(3次元グリッド)と観測中心(ステレオカメラ中心)とを結ぶ直線上には障害物が存在しないというアルゴリズムに基づいて3次元グリッドマップデータGMを作成及び/又は更新している。
図13は、3次元グリッドマップデータGMが観測結果に応じて更新される様子をy軸方向からの側面図として模式的に表したものである。ロボット1の視野領域(Field of View)にないセル(斜線のセル)は、まだ測定していないセルを表す。ロボット1によって測定されたセルは黒塗りで表され、測定点にあたるセルとの間のセルは、白塗りで表されている。ハッチング領域は、未確認領域であることを示している。
グリッドマップ生成部33は、上述のアルゴリズムに基づいて、測定対象点であるセルpとロボットのステレオカメラ11L,11Rとを結ぶ線分の間に存在するセルに対して、エンプティ(Empty)処理を行う。続いて、測定点pにあたるセルに対してオキュパイド(Occupied)処理を行う。
3次元グリッドマップデータGMは、セルCに対して障害物の存在確率(障害物によって占有されている確率)p(c)を保持しており、このエンプティ処理及びオキュパイド処理は、これら各セルに対して統計的な処理である。
エンプティ処理は、障害物の存在確率を低下させる処理であり、オキュパイド処理は障害物の存在確率を増加させる処理である。本具体例では、エンプティ処理及びオキュパイド処理の存在確率を算出する手法の一例として、ベイズの更新則を用いる。
3次元グリッドマップデータGMは、セルCに対して障害物の存在確率(障害物によって占有されている確率)p(c)を保持しており、このエンプティ処理及びオキュパイド処理は、これら各セルに対して統計的な処理である。
エンプティ処理は、障害物の存在確率を低下させる処理であり、オキュパイド処理は障害物の存在確率を増加させる処理である。本具体例では、エンプティ処理及びオキュパイド処理の存在確率を算出する手法の一例として、ベイズの更新則を用いる。
グリッドマップ生成部33は、エンプティ処理において式(1)により占有確率を減少させ、オキュパイド処理において式(2)により占有確率を増加させる。
式(1)は、セルCの占有確率を示すp(c)が“占有”という条件下にあるセルCの確率を表しており、式(1)又は式(2)においてセルCが占有されているか又は占有されていないかを表す確率p(occ|・・・)、p(empty|・・・)は、予め決められた閾値thである。
式(1)は、セルCの占有確率を示すp(c)が“占有”という条件下にあるセルCの確率を表しており、式(1)又は式(2)においてセルCが占有されているか又は占有されていないかを表す確率p(occ|・・・)、p(empty|・・・)は、予め決められた閾値thである。
[数1]
p(c)←p(c|empty)=p(empty|c)p(c)/{p(empty|c)p(c)+p(empty|c~)p(c~)}
…(1)
p(c)←p(c|empty)=p(empty|c)p(c)/{p(empty|c)p(c)+p(empty|c~)p(c~)}
…(1)
[数2]
p(c)←p(c|occ)=p(occ|c)p(c)/{p(occ|c)p(c)+p(occ|c~)p(c~)}
…(2)
p(c)←p(c|occ)=p(occ|c)p(c)/{p(occ|c)p(c)+p(occ|c~)p(c~)}
…(2)
このように障害物の存在確率が与えられた3次元グリッドマップデータGMが示す内容を図14に示す。本具体例では、3次元グリッドとして表される領域は、例えば、4メートル四方、水平解像度4センチ及び垂直解像度1センチを1セルとした3次元グリッドで表現されている。
図15では、説明の便宜上、図6に示す実空間S500と同じ領域が3次元グリッドとして表されているが、実際のロボット1は、例えば1秒間に30回というように所定間隔毎に周囲の状態を取得していくため、ロボット1が移動している場合には、3次元グリッドとして表現される空間S500は、時々刻々と変化することになる。取得されたセルは、見えたところ1、見えないところ0.5とする。占有確率は、1秒間に30回測定するうちに徐々に更新されていく。
グリッドマップ生成部33が生成する3次元グリッドマップデータGMは、例えば、3次元座標(x、y、z)の各セルについて、その占有確率OG(x、y、z)(=p(c))を示している。
以下、グリッドマップ生成部33によるフロア高さデータFHの生成処理を説明する。
グリッドマップ生成部33は、2次元高さ地図(2D Height Map)のセルに対して、3次元グリッドマップデータGMから得られるセルの占有確率データ(障害物存在確率データ)を用いてフロア高さデータFHを検証する。
グリッドマップ生成部33は、2次元高さ地図(2D Height Map)のセルに対して、3次元グリッドマップデータGMから得られるセルの占有確率データ(障害物存在確率データ)を用いてフロア高さデータFHを検証する。
本具体例では、グリッドマップ生成部33において、フロア高さデータFHを、3次元グリッドマップデータGMを用いて生成する。
3次元グリッドマップデータGMは、幾何学的に測定点と観測中心(ステレオカメラ中心)とを結ぶ直線上には、障害物は存在しないというアルゴリズムに基づいて作成及び/又は更新される。
グリッドマップ生成部33は、フロア高さデータFHのセルの高さ情報を3次元グリッドのセルに対応付けしたときの占有確率を3次元グリッドのセルの占有確率を参照して更新する処理を行う。
3次元グリッドマップデータGMは、幾何学的に測定点と観測中心(ステレオカメラ中心)とを結ぶ直線上には、障害物は存在しないというアルゴリズムに基づいて作成及び/又は更新される。
グリッドマップ生成部33は、フロア高さデータFHのセルの高さ情報を3次元グリッドのセルに対応付けしたときの占有確率を3次元グリッドのセルの占有確率を参照して更新する処理を行う。
図16は、フロア高さデータFHを示す。
フロア高さデータFHは、矩形状格子で表される2次元グリッドの各セルに対して、高さ情報hの情報と無効フラグ(invalid Flag)とを保持している。
図16では、図6における平面PL501に対応するセルに高さh=30が、平面PL502に対応するセルに高さh=60が与えられている。また、このセルがロボット1には登行不可能な高さ情報をもっている場合には、無効フラグ(inv)が与えられる。
フロア高さデータFHは、矩形状格子で表される2次元グリッドの各セルに対して、高さ情報hの情報と無効フラグ(invalid Flag)とを保持している。
図16では、図6における平面PL501に対応するセルに高さh=30が、平面PL502に対応するセルに高さh=60が与えられている。また、このセルがロボット1には登行不可能な高さ情報をもっている場合には、無効フラグ(inv)が与えられる。
フロア高さデータFHも3次元グリッドマップデータGMと同様に、例えば、4メートル四方、水平解像度4センチを1セルとした2次元グリッドで表現される。フロア高さデータFHでは、垂直方向の解像度は、考慮されておらず、各セルに対して高さ情報が割り当てられている。無効フラグとは、ロボット1に対して、障害物にあたることを示しているが、無効フラグを用意する代わりに、例えば、−10000などのように空間を表現するに非現実的な値を与えることで無効、すなわちロボット1に対する障害物であることを表してもよい。
図17は、グリッドマップ生成部33によるフロア高さデータFHの生成処理を説明するフローチャートである。
グリッドマップ生成部33は、対基準面高さ地図としてのフロア高さデータFHにおける高さ情報を取得し、この高さ情報を3次元グリッドマップデータGMの高さ座標に対応させ、対応した3次元グリッドのセルの占有確率が3次元グリッドにおいて障害物と認識するか否かを決めている閾値より大きいか否かを比較し、閾値より小さい場合、このセルは障害物でないと判断し、閾値より大きい場合、このセルは障害物であると判断し、対応する対基準面高さ地図の高さ情報を更新している。
グリッドマップ生成部33は、対基準面高さ地図としてのフロア高さデータFHにおける高さ情報を取得し、この高さ情報を3次元グリッドマップデータGMの高さ座標に対応させ、対応した3次元グリッドのセルの占有確率が3次元グリッドにおいて障害物と認識するか否かを決めている閾値より大きいか否かを比較し、閾値より小さい場合、このセルは障害物でないと判断し、閾値より大きい場合、このセルは障害物であると判断し、対応する対基準面高さ地図の高さ情報を更新している。
グリッドマップ生成部33は、全セル(x、y)に対してフロア高さデータFHを参照してグリッドの高さを取得する(ステップST11)。
高さ情報hに無効フラグが立っていた場合、処理を終了する(ステップST12;yes)。
高さ情報hに無効フラグが立っていた場合、処理を終了する(ステップST12;yes)。
一方、高さ情報hが有効であった場合、すなわち高さ情報hがあてはめられていた場合、高さ情報hを3次元グリッドに対応させて3次元グリッドにおけるインデックスkを求める(ステップST13)。続いて、3次元グリッド内のセル(x、y、z)の障害物の存在確率p(Cxyz)が3次元グリッドにおいて障害物と認識するか否かを決めている閾値thより大きいか否かを比較する(ステップST14)。
閾値より小さい場合(ステップST14;no)、このセルは障害物でないと判断する。
このとき、グリッドマップ生成部33においてセル(x、y)を3次元グリッドマップデータGMを作成するアルゴリズムに基づいて更新する。閾値より大きい場合(ステップST14;yes)、このセルは障害物であると判断し処理を終了する。すなわち、この場合には、フロア高さデータFHの高さ情報hを更新しない。
このとき、グリッドマップ生成部33においてセル(x、y)を3次元グリッドマップデータGMを作成するアルゴリズムに基づいて更新する。閾値より大きい場合(ステップST14;yes)、このセルは障害物であると判断し処理を終了する。すなわち、この場合には、フロア高さデータFHの高さ情報hを更新しない。
以上の処理は、図13に示したように、グリッドのうち視野角領域に相当するセル領域
にのみ適用することで計算量の削減が可能となる。図13では、この視野角領域に相当するセル領域をバウンディングボックス(Bounding Box)と記している。
にのみ適用することで計算量の削減が可能となる。図13では、この視野角領域に相当するセル領域をバウンディングボックス(Bounding Box)と記している。
グリッドマップ生成部33は、平面検出部32による平面データS32と、3次元グリッドマップデータGMとからフロア高さデータFHを更新している。
ロボット1の視野領域にある計測空間内に含まれる全ての計測点(セル)pに対して、計測点pが属する平面が水平面であって、且つ計測点pに対応する3次元グリッドマップデータGMのセルの障害物存在確率が閾値thよりも高い場合に、計測点pに対応する高さ情報を更新する。
ロボット1の視野領域にある計測空間内に含まれる全ての計測点(セル)pに対して、計測点pが属する平面が水平面であって、且つ計測点pに対応する3次元グリッドマップデータGMのセルの障害物存在確率が閾値thよりも高い場合に、計測点pに対応する高さ情報を更新する。
グリッドマップ生成部33によるフロア高さデータFHの更新処理を図18に示す。
グリッドマップ生成部33は、まず、視野領域にある全計測点(セル)pに対して、計測点pが属する平面情報を取得する(ステップST21)。
平面情報としては、平面検出部32による平面検出結果である平面データS32を用いる。具体的には、計測点pが検出されたどの平面に属するかを表した平面ID(p_id)を取得し、このp_idが有効である場合には(ステップST22;yes)、このpidをキーとして検出された平面群のなかから計測点pが属する平面情報を検索する(ステップST23)。
グリッドマップ生成部33は、まず、視野領域にある全計測点(セル)pに対して、計測点pが属する平面情報を取得する(ステップST21)。
平面情報としては、平面検出部32による平面検出結果である平面データS32を用いる。具体的には、計測点pが検出されたどの平面に属するかを表した平面ID(p_id)を取得し、このp_idが有効である場合には(ステップST22;yes)、このpidをキーとして検出された平面群のなかから計測点pが属する平面情報を検索する(ステップST23)。
次に、グリッドマップ生成部33は、計測点pが属する平面が水平面であるかどうかを検証し、水平面でない場合(ステップST24;no)には終了する。一方、水平面である場合(ステップST24;yes)、計測点pに対応する3次元グリッドのセルの障害物存在確率を参照する(ステップST25)。
具体的には、グリッドマップ生成部33は、フロア高さデータFHにおける計測点pの位置情報(x,y,z)から3次元グリッドの位置情報としてのインデックス(i,j,k)を求め、このインデックスに基づいて3次元グリッドのセルを参照する。
インデックス(i,j,k)を求める処理において、本実施例では、各計測点のノイズの影響を低減するため、高さ情報hとして、計測点pの実計測高さではなく、計測点pが属する平面の高さ(平均化された高さ;plane.m_z)を利用している。勿論、計測点pの高さをそのまま利用してもよい。
具体的には、グリッドマップ生成部33は、フロア高さデータFHにおける計測点pの位置情報(x,y,z)から3次元グリッドの位置情報としてのインデックス(i,j,k)を求め、このインデックスに基づいて3次元グリッドのセルを参照する。
インデックス(i,j,k)を求める処理において、本実施例では、各計測点のノイズの影響を低減するため、高さ情報hとして、計測点pの実計測高さではなく、計測点pが属する平面の高さ(平均化された高さ;plane.m_z)を利用している。勿論、計測点pの高さをそのまま利用してもよい。
続いて、グリッドマップ生成部33は、計測点pに対応する高さ情報hを更新するか否かを決定する(ステップST26)。ここでは、計測点pに対応する3次元グリッドの占有確率が障害物が存在することを示す閾値thよりも大きい場合(ステップST26;yes)、フロア高さデータFHの対応するセル(i,j)を高さ情報hで更新する(ステップST27)。
フロア高さデータFHにおけるセル(i,j)の更新則としては、幾つかの方法があげられる。例えば、上書き更新とする場合、計測された最大値を保持する場合等があげられる。上書き更新とする場合には、セル(i,j)の高さを取得されたhによって常に上書きする。また、最大値を保持する場合には、セル(i,j)の高さが今までの高さ情報hより低いとき、又はセル(i,j)に無効フラグが立っている場合にのみ、新しい値hで更新する。このほかに、今までの高さ情報hと新しい値との平均をとってもよい。
図19は、この一連の処理によって作成された環境地図を表している。上述したように、フロア高さデータFHを3次元グリッドマップデータGMによって補完する。環境地図は、2次元グリッドのセルに対して高さ情報h又は障害物(obs)か否かがあてはめられたものになっている。
グリッドマップ生成部33が生成するフロア高さデータFHは、例えば、2次元座標(x、y)の各々について、そのフロア高さFloor(x,y)を示している。
[環境クラス分類部34]
環境クラス分類部34は、グリッドマップ生成部33から3次元グリッドマップデータGMおよびフロア高さデータFHを入力し、これらを基に、2次元セル(x,y)に対応する位置を、例えば、障害物、でこぼこ、トンネル、未知、フロア、階段、境界部のいずれかに分類した環境クラス分類データである変数env_type(x,y)を生成し、これをパス決定部35に出力する。
環境クラス分類部34は、グリッドマップ生成部33から3次元グリッドマップデータGMおよびフロア高さデータFHを入力し、これらを基に、2次元セル(x,y)に対応する位置を、例えば、障害物、でこぼこ、トンネル、未知、フロア、階段、境界部のいずれかに分類した環境クラス分類データである変数env_type(x,y)を生成し、これをパス決定部35に出力する。
環境クラス分類部34は、先ず、フロア高さデータFHを基に、2次元座標(x、y)のセル(x、y)のフロア高さFloor(x,y)を取得し、これをhfに代入する。
なお、フロア高さFloor(x,y)=−∞(inv)の場合には、フロアが無い、あるいはフロアではないことを示している。
次に、環境クラス分類部34は、2次元座標(x、y)上の「z>hf」を満たす3次元座標(x、y、z)の占有確率OG(x、y、z)を、3次元グリッドマップデータGMから取得する。
そして、環境クラス分類部34は、上記セル(x、y)上記取得した占有確率OG(x、y、z)のうち、しきい値Poccを超えるものを特定し、そのうち最も高いzを障害物の高さを示すObstacle(x,y,hf)とする。
そして、上記セル(x、y)の「z>hf」の全てのzにおいて、占有確率OG(x、y、z)が所定しきい値Pocc(例えば、0.8)を超えていない場合に、Obstacle(x,y,hf)=−∞(障害ではない)とする。
なお、フロア高さFloor(x,y)=−∞(inv)の場合には、フロアが無い、あるいはフロアではないことを示している。
次に、環境クラス分類部34は、2次元座標(x、y)上の「z>hf」を満たす3次元座標(x、y、z)の占有確率OG(x、y、z)を、3次元グリッドマップデータGMから取得する。
そして、環境クラス分類部34は、上記セル(x、y)上記取得した占有確率OG(x、y、z)のうち、しきい値Poccを超えるものを特定し、そのうち最も高いzを障害物の高さを示すObstacle(x,y,hf)とする。
そして、上記セル(x、y)の「z>hf」の全てのzにおいて、占有確率OG(x、y、z)が所定しきい値Pocc(例えば、0.8)を超えていない場合に、Obstacle(x,y,hf)=−∞(障害ではない)とする。
また、環境クラス分類部34は、上記セル(x、y)の上記取得した占有確率OG(x、y、z)のうち、しきい値Poccを超えるものを特定し、そのうち最も低いzを天井の高さを示すCeiling(x,y,hf)とする。
そして、上記セル(x、y)の「z>hf」の全てのzにおいて、占有確率OG(x、y、z)が所定しきい値Pocc(例えば、0.8)を超えていない場合に、Ceiling(x,y,hf)=−∞(天井ではない)とする。
そして、上記セル(x、y)の「z>hf」の全てのzにおいて、占有確率OG(x、y、z)が所定しきい値Pocc(例えば、0.8)を超えていない場合に、Ceiling(x,y,hf)=−∞(天井ではない)とする。
また、環境クラス分類部34は、フロア高さデータFHが示す上記セル(x、y)のフロア高さFloor(x,y)と、当該セルに隣接する2次元座標(x’、y’)の隣接セル(x’、y’)のフロア高さFloor(x’,y’)との差分の絶対値の最大値をΔh(x、y)として算出する。
図20は、環境クラス分類部34による各セル(x、y)の環境クラス分類処理を説明するためのフローチャートである。
先ず、環境クラス分類部34は、上述したように、グリッドマップ生成部33から入力した3次元グリッドマップデータGMおよびフロア高さデータFHを基に、各セル(x、y)の上記フロア高さFloor(x,y)、上記Obstacle(x,y,hf)、Ceiling(x,y,hf)をそれぞれ取得あるいは生成し、それぞれを変数f,o,cに代入する(ステップST41)。
先ず、環境クラス分類部34は、上述したように、グリッドマップ生成部33から入力した3次元グリッドマップデータGMおよびフロア高さデータFHを基に、各セル(x、y)の上記フロア高さFloor(x,y)、上記Obstacle(x,y,hf)、Ceiling(x,y,hf)をそれぞれ取得あるいは生成し、それぞれを変数f,o,cに代入する(ステップST41)。
次に、環境クラス分類部34は、「変数o>f」の条件を満たすか否かを判断し、満たすと判断するとステップST43に進み、そうでない場合にはステップST51に進む(ステップST42)。
ここで、条件「変数o>f」を満たさない場合(ステップST51に進む場合)は、例えば、「Obstacle(x,y,hf)=−∞(障害ではない)」と設定された場合である。
ここで、条件「変数o>f」を満たさない場合(ステップST51に進む場合)は、例えば、「Obstacle(x,y,hf)=−∞(障害ではない)」と設定された場合である。
次に、環境クラス分類部34は、「変数fがinv(無効)ではない」且つ「c>f+d_tunnel」の条件を満たすか否かを判断し(ステップST43)、満たすと判断すると、セル(x、y)はトンネルであると判定し(ステップST44)、そうでない場合にはステップST45に進む。
ここで、「d_tunnel」は、ロボット1が、天井下において這いながら走行可能な最小高さを示している。すなわち、トンネル内の最小高さを示している。
ここで、「d_tunnel」は、ロボット1が、天井下において這いながら走行可能な最小高さを示している。すなわち、トンネル内の最小高さを示している。
そして、環境クラス分類部34は、「変数oが所定のしきい値を超えていない」という条件を満たすか否かを判断し、当該条件を満たすと判断すると、セル(x,y)は荒れた面(clutter)であると判定する(ステップST47)。
ここで、「変数oが所定のしきい値を超えていない」という条件は、例えば、変数oが示す障害物の高さが、ロボット1が乗り越えられた程度に小さい場合に満たされる。
一方、環境クラス分類部34は、「変数oが所定のしきい値を超えていない」という条件を満たさないと判断すると、セル(x,y)は障害物(obstacle)であると判定する(ステップST46)。
なお、上記荒れた面は、ロボット1が簡単に乗り越えることができる程度の障害しかない面を意味している。
また、上記障害物は、ロボット1が走行できない程度に大きい障害物を意味している。
ここで、「変数oが所定のしきい値を超えていない」という条件は、例えば、変数oが示す障害物の高さが、ロボット1が乗り越えられた程度に小さい場合に満たされる。
一方、環境クラス分類部34は、「変数oが所定のしきい値を超えていない」という条件を満たさないと判断すると、セル(x,y)は障害物(obstacle)であると判定する(ステップST46)。
なお、上記荒れた面は、ロボット1が簡単に乗り越えることができる程度の障害しかない面を意味している。
また、上記障害物は、ロボット1が走行できない程度に大きい障害物を意味している。
環境クラス分類部34は、ステップST51において、変数fが無効(inv)であるか否かを判断し(ステップST51)、無効であると判断するとセル(x、y)は未知(unknown)であると判断し(ステップST52)、無効ではないと判断するとステップST53に進む。
環境クラス分類部34は、ステップST53において、前述したように、セル(x、y)のフロア高さFloor(x,y)と、当該セルに隣接する2次元座標(x’、y’)の隣接セル(x’、y’)のフロア高さFloor(x’,y’)との差分の絶対値の最大値をΔh(x、y)として算出する。そして、環境クラス分類部34は、変数dに上記算出したΔh(x、y)を代入する(ステップST52)。
次に、環境クラス分類部34は、条件「d<d_step」を満たすか否かを判断し、満たすと判断すると、セル(x、y)はフロア(floor)であると判定し(ステップST55)、そうでない場合にはステップST56に進む。
ここで、「d_step」は、ロボット1が通常歩行できる段差の最大高さを示し、予め設定される。
また、フロアは、ロボット1が容易に通常歩行できる平面である。
次に、環境クラス分類部34は、条件「d<d_step」を満たすか否かを判断し、満たすと判断すると、セル(x、y)はフロア(floor)であると判定し(ステップST55)、そうでない場合にはステップST56に進む。
ここで、「d_step」は、ロボット1が通常歩行できる段差の最大高さを示し、予め設定される。
また、フロアは、ロボット1が容易に通常歩行できる平面である。
環境クラス分類部34は、ステップST54において、条件「d<d_stairs」を満たすか否かを判断し、満たすと判断すると、セル(x、y)は階段(stairs)であると判定し(ステップST57)、そうでない場合にはセル(x,y)は境界部(border)であると判定する(ステップST58)。
ここで、「d_stairs」は、ロボット1が階段上り歩行可能な段差の高さの最大値を示し、予め設定される。
ここで、「d_stairs」は、ロボット1が階段上り歩行可能な段差の高さの最大値を示し、予め設定される。
環境クラス分類部34による上述した処理により、3次元座標(x,y,z)で規定されるセルの状態が、例えば、図21に示すように分類(判定)される。
環境クラス分類部34は、上述したように、全セル(x,y)について判定した状態の結果を変数env_type(x,y)に格納し、これをパス決定部36に出力する。
なお、環境クラス分類部34は、変数env_type(x,y)をパス決定部36に出力する前に、所定のメモリ(例えば、図4に示すRAR1312や外部記憶装置314)に書き込み、それを読み出してパス決定部36に出力する。
環境クラス分類部34は、上述したように、全セル(x,y)について判定した状態の結果を変数env_type(x,y)に格納し、これをパス決定部36に出力する。
なお、環境クラス分類部34は、変数env_type(x,y)をパス決定部36に出力する前に、所定のメモリ(例えば、図4に示すRAR1312や外部記憶装置314)に書き込み、それを読み出してパス決定部36に出力する。
なお、上述した例では、セル(x、y)の状態として、floor、obstacle,unknown,stairs,border,tunnel,clutterを例示したが、それ以外にも、環境クラス分類部34は、障害物が接近した狭い領域を意味するnarrow、傾斜面を意味するramp、人間等を意味するhuman、階段を意味するladder、通常のドアを意味するdoor、エレベータを意味するelevator、エスカレータを意味するescalatorなどのその他の状態を判定してもよい。
[動作機能部]
CPU15は、例えば、デフォルトとして、通常走行処理部35_1、階段走行処理部35_2、注意走行処理部35_3、這動作処理部35_4、ステップオーバ処理部35_5、よじ登り/ジャンプ処理部35_6を、例えば、プログラムを実行して実現する。
上記処理部35_1〜35_6の各々には、例えば、(name、info,types,cost,sensors,excuter)という属性データが割り当てられている。
nameは、その処理部(モジュール)の名前を示す。
infoは、その処理部の機能の記述、例えば、プログラムコードを示す。
typesは、その処理部によって対応可能なセルの状態を示す。
costは、ロボット1が移動する最適パス(経路)を決定する際に、その処理部の処理に割り当てるコストを示す。当該コストは、その処理部の制御による動作をロボット1が行った場合に、その位置を通過するのに要する時間に比例した値を持つ。
sensorsは、その処理部の処理に入力として必要なセンサを示す。
excuteは、その処理部の処理を実行するシステム(ハードウェア)を示す。
CPU15は、例えば、デフォルトとして、通常走行処理部35_1、階段走行処理部35_2、注意走行処理部35_3、這動作処理部35_4、ステップオーバ処理部35_5、よじ登り/ジャンプ処理部35_6を、例えば、プログラムを実行して実現する。
上記処理部35_1〜35_6の各々には、例えば、(name、info,types,cost,sensors,excuter)という属性データが割り当てられている。
nameは、その処理部(モジュール)の名前を示す。
infoは、その処理部の機能の記述、例えば、プログラムコードを示す。
typesは、その処理部によって対応可能なセルの状態を示す。
costは、ロボット1が移動する最適パス(経路)を決定する際に、その処理部の処理に割り当てるコストを示す。当該コストは、その処理部の制御による動作をロボット1が行った場合に、その位置を通過するのに要する時間に比例した値を持つ。
sensorsは、その処理部の処理に入力として必要なセンサを示す。
excuteは、その処理部の処理を実行するシステム(ハードウェア)を示す。
通常走行処理部35_1は、例えば、ロボット1が平坦なフロアを2足歩行する一連の動作を動き制御部37に指示する処理を行う。
階段走行処理部35_2は、例えば、ロボット1が階段を2足歩行する一連の動作を動き制御部37に指示する処理を行う。
注意走行処理部35_3は、例えば、ロボット1がセンサ群17からの検出信号を基に表面状態を確認しながら、ゆっくりとした動作で慎重に歩行する一連の動作を動き制御部37に指示する処理を行う。
這動作処理部35_4は、例えば、高い障害物がある場合に、ロボット1が腰を屈めて頭を避けて歩いたり、膝をついて歩いたり、四足で這いつくばって歩く一連の這動作を制御する。
ステップオーバ処理部35_5は、ロボット1が小さい障害物を跨いで移動する一連の動作を動き制御部37に指示する。
よじ登り/ジャンプ処理部35_6は、ロボット1が障害物を手を利用してよじ登ったり、境界部をジャンプしたりする一連の動作を動き制御部37に指示する。
階段走行処理部35_2は、例えば、ロボット1が階段を2足歩行する一連の動作を動き制御部37に指示する処理を行う。
注意走行処理部35_3は、例えば、ロボット1がセンサ群17からの検出信号を基に表面状態を確認しながら、ゆっくりとした動作で慎重に歩行する一連の動作を動き制御部37に指示する処理を行う。
這動作処理部35_4は、例えば、高い障害物がある場合に、ロボット1が腰を屈めて頭を避けて歩いたり、膝をついて歩いたり、四足で這いつくばって歩く一連の這動作を制御する。
ステップオーバ処理部35_5は、ロボット1が小さい障害物を跨いで移動する一連の動作を動き制御部37に指示する。
よじ登り/ジャンプ処理部35_6は、ロボット1が障害物を手を利用してよじ登ったり、境界部をジャンプしたりする一連の動作を動き制御部37に指示する。
CPU15が実現する処理部としては、上述したものの他にも、横方向にゆっくり歩く動作(sideways)を規定する処理部、人間と会話をする動作(dialog)を規定する処理部、障害物を移動する動作(manupulate)を規定する処理部、ドアを開ける動作(open door)を規定する処理部、傾斜面を移動する動作(slide)を規定する処理部、エレベータを使う動作(use elevator)を規定する処理部、エスカレータを使う動作(use escalator)を規定する処理部などがある。
CPU15は、上述した処理部のうち、何れかを予めデフォルトとして備え、それらはユーザからの指示などにより削除可能である。
また、CPU15は、デフォルトとして備えた処理部に加えて、新たな処理部を追加可能である。
また、CPU15は、デフォルトとして備えた処理部に加えて、新たな処理部を追加可能である。
[パス決定部36]
パス決定部36は、環境クラス分類部34から入力した、全セル(x,y)について判定した状態の結果を示す変数env_type(x,y)と、上述した利用可能な動作機能部のリストとに基づいて、ロボット1が現在地から目的地に移動する最適なパスを決定する。
また、パス決定部36は、利用可能な動作機能部のリストを常時更新する。
また、パス決定部36は、上記決定したパスとロボット1の移動状況に基づいて、適切な処理部を順次選択し、ロボット1の動作を制御させる。
パス決定部36は、環境クラス分類部34から入力した、全セル(x,y)について判定した状態の結果を示す変数env_type(x,y)と、上述した利用可能な動作機能部のリストとに基づいて、ロボット1が現在地から目的地に移動する最適なパスを決定する。
また、パス決定部36は、利用可能な動作機能部のリストを常時更新する。
また、パス決定部36は、上記決定したパスとロボット1の移動状況に基づいて、適切な処理部を順次選択し、ロボット1の動作を制御させる。
先ず、パス決定部36による最適パスの決定処理を説明する。
図22は、図5に示すパス決定部36による最適パスの決定処理を説明するためのフローチャートである。
パス決定部36は、利用可能機能リストを参照して、利用可能な処理部を特定する(ステップST61)。
本実施形態では、一例として、図5に示すように、利用可能な処理部が、通常走行処理部35_1、階段走行処理部35_2、注意走行処理部35_3、這動作処理部35_4、ステップオーバ処理部35_5、並びによじ登り/ジャンプ処理部35_6である場合を説明する。
図22は、図5に示すパス決定部36による最適パスの決定処理を説明するためのフローチャートである。
パス決定部36は、利用可能機能リストを参照して、利用可能な処理部を特定する(ステップST61)。
本実施形態では、一例として、図5に示すように、利用可能な処理部が、通常走行処理部35_1、階段走行処理部35_2、注意走行処理部35_3、這動作処理部35_4、ステップオーバ処理部35_5、並びによじ登り/ジャンプ処理部35_6である場合を説明する。
次に、パス決定部36は、環境クラス分類部34から入力した変数env_type(x,y)を基に、ロボット1の現在位置から目標位置に達する複数のパス(経路)を特定する(ステップST62)。
次に、パス決定部36は、ステップST62で特定した複数のパスの各々について、そのパス上の座標(x、y)と、その変数env_type(x,y)が示す状態と、その状態を移動するロボット1の機能部に割り当てられた上記コストcostとを基に、コストを算出する(ステップST63)。
次に、パス決定部36は、ステップST62で特定した複数のパスのうち、ステップST63で算出したコストが最小のパスを決定する(ステップST64)。
具体的には、パス決定部36は、上記複数のパスの各々について、当該パス上の座標(x,y)に対応する上記コストcostの総和を計算し、その総和が最小のパスを決定する。
次に、パス決定部36は、ステップST62で特定した複数のパスのうち、ステップST63で算出したコストが最小のパスを決定する(ステップST64)。
具体的には、パス決定部36は、上記複数のパスの各々について、当該パス上の座標(x,y)に対応する上記コストcostの総和を計算し、その総和が最小のパスを決定する。
以下、パス決定部36による利用可能機能リストの更新処理を説明する。
図23は、図5に示すパス決定部36による利用可能機能リスト更新処理を説明するためのフローチャートである。
パス決定部36は、ロボット1の動作を規定する新たな処理部(機能)が追加されたか否かを判断し(ステップST61)、追加されたと判断するとステップST62に進み、そうでない場合にはステップST63に進む。
パス決定部36は、利用可能機能リストに、新たに追加された機能(処理部)のエントリを追加する(ステップST62)。
ここで、ロボット1のCPU15への上記機能の追加は、プログラムモジュールの追加や、あるいは専用ハードウェアの追加によって実現される。
図23は、図5に示すパス決定部36による利用可能機能リスト更新処理を説明するためのフローチャートである。
パス決定部36は、ロボット1の動作を規定する新たな処理部(機能)が追加されたか否かを判断し(ステップST61)、追加されたと判断するとステップST62に進み、そうでない場合にはステップST63に進む。
パス決定部36は、利用可能機能リストに、新たに追加された機能(処理部)のエントリを追加する(ステップST62)。
ここで、ロボット1のCPU15への上記機能の追加は、プログラムモジュールの追加や、あるいは専用ハードウェアの追加によって実現される。
パス決定部36は、利用可能機能リストのエントリとなっている機能が削除されたか、あるいは、故障したかを判断し(ステップST63)、そうであると判断するとステップST64に進み、そうではないと判断するとステップST61に戻る。
パス決定部36は、利用可能機能リストから、上記削除あるいは故障した機能のエントリを削除する(ステップST64)。
パス決定部36は、利用可能機能リストから、上記削除あるいは故障した機能のエントリを削除する(ステップST64)。
以下、パス決定部36による処理部の選択処理を説明する。
図24および図25は、図5に示すパス決定部36による処理部の選択処理を説明するためのフローチャートである。
パス決定部36は、動き制御部37の制御の進行状況、CCDカメラ10R,10Lの撮像結果、並びにセンサ群27からの検出信号の少なくとも一つに基づいて、ロボット1が次に移動するセル(x、y)を特定する(ステップST71)。
次に、パス決定部36は、ステップST71で特定したセル(x、y)の変数env_type(x,y)を変数tに代入する(ステップST72)。
図24および図25は、図5に示すパス決定部36による処理部の選択処理を説明するためのフローチャートである。
パス決定部36は、動き制御部37の制御の進行状況、CCDカメラ10R,10Lの撮像結果、並びにセンサ群27からの検出信号の少なくとも一つに基づいて、ロボット1が次に移動するセル(x、y)を特定する(ステップST71)。
次に、パス決定部36は、ステップST71で特定したセル(x、y)の変数env_type(x,y)を変数tに代入する(ステップST72)。
次に、パス決定部36は、変数tがfloorを示すか否かを判断し(ステップST73)、floorを示す場合に通常走行処理部35_1に対して動作指示を出力し(ステップST74)、そうでない場合にステップST75に進む。
ステップST74において、動き制御部37が、通常走行処理部35_1からの指示に基づいて、ロボット1に通常走行動作を行わせるようにアクチュエータ群16を制御する。
ステップST74において、動き制御部37が、通常走行処理部35_1からの指示に基づいて、ロボット1に通常走行動作を行わせるようにアクチュエータ群16を制御する。
次に、パス決定部36は、変数tがstairsを示すか否かを判断し(ステップST75)、stairsを示す場合に階段走行処理部35_2に対して動作指示を出力し(ステップST76)、そうでない場合にステップST77に進む。
ステップST76において、動き制御部37が、階段走行処理部35_2からの指示に基づいて、ロボット1に階段走行動作を行わせるようにアクチュエータ群16を制御する。
ステップST76において、動き制御部37が、階段走行処理部35_2からの指示に基づいて、ロボット1に階段走行動作を行わせるようにアクチュエータ群16を制御する。
次に、パス決定部36は、変数tがunknownを示すか否かを判断し(ステップST77)、unknownを示す場合に注意走行処理部35_3に対して動作指示を出力し(ステップST78)、そうでない場合にステップST79に進む。
ステップST78において、動き制御部37が、注意走行処理部35_3からの指示に基づいて、ロボット1に注意走行動作を行わせるようにアクチュエータ群16を制御する。
ステップST78において、動き制御部37が、注意走行処理部35_3からの指示に基づいて、ロボット1に注意走行動作を行わせるようにアクチュエータ群16を制御する。
次に、パス決定部36は、変数tがtunnelを示すか否かを判断し(ステップST79)、tunnelを示す場合に這動作処理部35_4に対して動作指示を出力し(ステップST80)、そうでない場合にステップST81に進む。
ステップST80において、動き制御部37が、這動作処理部35_4からの指示に基づいて、ロボット1に這動作を行わせるようにアクチュエータ群16を制御する。
ステップST80において、動き制御部37が、這動作処理部35_4からの指示に基づいて、ロボット1に這動作を行わせるようにアクチュエータ群16を制御する。
次に、パス決定部36は、変数tがclutterを示すか否かを判断し(ステップST81)、clutterを示す場合にステップオーバ処理部35_5に対して動作指示を出力し(ステップST82)、そうでない場合にステップST83に進む。
ステップST82において、動き制御部37が、ステップオーバ処理部35_5からの指示に基づいて、ロボット1にステップオーバ動作を行わせるようにアクチュエータ群16を制御する。
ステップST82において、動き制御部37が、ステップオーバ処理部35_5からの指示に基づいて、ロボット1にステップオーバ動作を行わせるようにアクチュエータ群16を制御する。
次に、パス決定部36は、変数tがborderを示すか否かを判断し(ステップST83)、borderを示す場合によじ登り/ジャンプ処理部35_6に対して動作指示を出力し(ステップST84)、そうでない場合にステップST85に進む。
ステップST84において、動き制御部37が、よじ登り/ジャンプ処理部35_6からの指示に基づいて、ロボット1によじ登り動作あるいはジャンプ動作を行わせるようにアクチュエータ群16を制御する。
ステップST84において、動き制御部37が、よじ登り/ジャンプ処理部35_6からの指示に基づいて、ロボット1によじ登り動作あるいはジャンプ動作を行わせるようにアクチュエータ群16を制御する。
次に、パス決定部36は、動き制御部37の制御の進行状況、CCDカメラ10R,10Lの撮像結果、並びにセンサ群27からの検出信号の少なくとも一つに基づいて、目的地に到達したか否かを判断し(ステップST85)、目的地に到達したと判断すると処理を終了し、そうでない場合にはステップST71に戻る。
パス決定部36は、例えば、図26に示すように、領域AR1,AR3,AR5はfloorであり通常走行処理部35_1に制御を行わせ、領域AR2はstairsであり階段走行処理部35_2に制御を行わせ、領域AR4は境界部でありよじ登り/ジャンプ処理部35_6に制御を行わせ、領域AR6はunknownであり注意走行処理部35_3に制御を行わせる。
また、パス決定部36は、例えば、図27に示すように、ロボット1の現在位置(Robot)から目的地(Goal)までの最適パスを決定する。
また、パス決定部36は、例えば、図27に示すように、ロボット1の現在位置(Robot)から目的地(Goal)までの最適パスを決定する。
[動き制御部37]
動き制御部37は、通常走行処理部35_1、階段走行処理部35_2、注意走行処理部35_3、這動作処理部35_4、ステップオーバ処理部35_5、よじ登り/ジャンプ処理部35_6などからの指示に基づいて、アクチュエータ群16を駆動し、所望の動作をロボット1に実行させる。
動き制御部37は、通常走行処理部35_1、階段走行処理部35_2、注意走行処理部35_3、這動作処理部35_4、ステップオーバ処理部35_5、よじ登り/ジャンプ処理部35_6などからの指示に基づいて、アクチュエータ群16を駆動し、所望の動作をロボット1に実行させる。
[ロボット1の全体動作]
以下、図1に示すロボット1の全体動作例を説明する。
CCDカメラ10R,10Lが、それぞれ撮像結果に応じた右画像データS10Rおよび左画像データS10Lをステレオ画像処理装置12に出力する。
そして、ステレオ画像処理装置12が、CCDカメラ10R,10Lから入力した右画像データS10Rと左画像データS10Lの視差情報(disparity data)(距離情報)を計算し、カラー画像データ(YUV:輝度Y、UV色差)S12a及び視差画像データ(YDR:輝度Y、視差D、信頼度R)S12bをフレーム毎に左右交互に算出し、これをCPU15(図5に示す距離データ生成部31)に出力する。
以下、図1に示すロボット1の全体動作例を説明する。
CCDカメラ10R,10Lが、それぞれ撮像結果に応じた右画像データS10Rおよび左画像データS10Lをステレオ画像処理装置12に出力する。
そして、ステレオ画像処理装置12が、CCDカメラ10R,10Lから入力した右画像データS10Rと左画像データS10Lの視差情報(disparity data)(距離情報)を計算し、カラー画像データ(YUV:輝度Y、UV色差)S12a及び視差画像データ(YDR:輝度Y、視差D、信頼度R)S12bをフレーム毎に左右交互に算出し、これをCPU15(図5に示す距離データ生成部31)に出力する。
次に、距離データ生成部31が、ステレオ画像処理装置12から入力したカラー画像データS12a及び視差画像データS12bを基に、画像(環境)内の対象物についての3次元の距離データ(ステレオデータ)S31を生成し、これを平面検出部32およびグリッドマップ生成部33に出力する。
次に、平面検出部32は、距離データ生成部31から入力した距離データS31から環境内に存在する複数の平面を検出し、それを示す平面データS32をグリッドマップ生成部33に出力する。
次に、グリッドマップ生成部33が、距離データ生成部31から入力した距離データS31と平面検出部32から入力した上記平面検出データS32とに基づいて、3次元グリッドマップデータGMおよびフロア高さデータFHを生成し、これらを環境クラス分類部34に出力する。
次に、平面検出部32は、距離データ生成部31から入力した距離データS31から環境内に存在する複数の平面を検出し、それを示す平面データS32をグリッドマップ生成部33に出力する。
次に、グリッドマップ生成部33が、距離データ生成部31から入力した距離データS31と平面検出部32から入力した上記平面検出データS32とに基づいて、3次元グリッドマップデータGMおよびフロア高さデータFHを生成し、これらを環境クラス分類部34に出力する。
次に、環境クラス分類部34が、グリッドマップ生成部33から3次元グリッドマップデータGMおよびフロア高さデータFHを入力し、これらを基に、2次元セル(x,y)に対応する位置を、例えば、障害物、でこぼこ、トンネル、未知、フロア、階段、境界部のいずれかに分類した環境クラス分類データである変数env_type(x,y)を生成し、これをパス決定部35に出力する。
次に、パス決定部36が、環境クラス分類部34から入力した、全セル(x,y)について判定した状態の結果を示す変数env_type(x,y)と、上述した利用可能な動作機能部のリストとに基づいて、ロボット1が現在地から目的地に移動する最適なパスを決定する。
また、パス決定部36は、利用可能な動作機能部のリストを常時更新する。
また、パス決定部36は、上記決定したパスとロボット1の移動状況に基づいて、適切な処理部35_1〜35_6を順次選択する。
そして、選択された処理部35_1〜35_6が動き制御部37に指示を出す。
次に、動き制御部37が、上記選択された処理部35_1〜35_6からの指示に基づいて、アクチュエータ群16を駆動し、所望の動作をロボット1に実行させる。
次に、パス決定部36が、環境クラス分類部34から入力した、全セル(x,y)について判定した状態の結果を示す変数env_type(x,y)と、上述した利用可能な動作機能部のリストとに基づいて、ロボット1が現在地から目的地に移動する最適なパスを決定する。
また、パス決定部36は、利用可能な動作機能部のリストを常時更新する。
また、パス決定部36は、上記決定したパスとロボット1の移動状況に基づいて、適切な処理部35_1〜35_6を順次選択する。
そして、選択された処理部35_1〜35_6が動き制御部37に指示を出す。
次に、動き制御部37が、上記選択された処理部35_1〜35_6からの指示に基づいて、アクチュエータ群16を駆動し、所望の動作をロボット1に実行させる。
以上説明したように、ロボット1では、図5等に示すように、CPU15が機能として利用可能な処理部35_1〜35_6等を特定し(図22に示すステップST61)、その利用な処理部を基に、目標位置までの複数のパスを動的に特定する(ステップST62)。
これにより、例えば、処理部35_1〜35_6あるいはそれによって制御されるアクチュエータ群16などの機械部位が故障した場合に、その故障した機能に対応した処理部による制御を利用しないで目標位置に達するパスを選択することができる。
また、新たな処理部を追加して利用可能にした場合に、その追加した処理部の機能を利用してロボット1が走行可能なパスを選択枠に入れることができる。
また、ロボット1は、それが位置する環境に応じて利用可能な処理部を動的に変更して最適パスを決定することも可能である。
また、ロボット1では、上記複数のパスの各々について、そのパス上の2次元座標の変数env_type(x,y)と、それに対応付けられたコスト(時間コスト)とを基に、コストの和を最小にするパスを選択するため、最短時間で到達できるパスを高い信頼性で選択できる。
これにより、例えば、処理部35_1〜35_6あるいはそれによって制御されるアクチュエータ群16などの機械部位が故障した場合に、その故障した機能に対応した処理部による制御を利用しないで目標位置に達するパスを選択することができる。
また、新たな処理部を追加して利用可能にした場合に、その追加した処理部の機能を利用してロボット1が走行可能なパスを選択枠に入れることができる。
また、ロボット1は、それが位置する環境に応じて利用可能な処理部を動的に変更して最適パスを決定することも可能である。
また、ロボット1では、上記複数のパスの各々について、そのパス上の2次元座標の変数env_type(x,y)と、それに対応付けられたコスト(時間コスト)とを基に、コストの和を最小にするパスを選択するため、最短時間で到達できるパスを高い信頼性で選択できる。
また、ロボット1では、環境クラス分類部34において、3次元グリッドマップデータGMおよびフロア高さデータFHを基に、2次元座標(x、y)の各々についてその状態を分類した変数env_type(x,y)を生成する。
そして、パス決定部36において、ロボット1の移動過程において、ロボット1の2次元位置(x、y)に応じて、それに対応した上記状態を特定し、その状態に予め対応付けられた処理部35_1〜35_6を選択してロボット1の動作を駆動させる。
ロボット1では、上述したように、予め2次元座標(x、y)の状態を分類した変数env_type(x,y)を生成し、これを図4に示すRAM312などに記憶する。
これにより、ロボット1の動作時に、パス決定部36は、環境クラス分類部34から変数env_type(x,y)を読み出すだけで、ロボット1が次に移動する位置の状態を取得でき、それを基にロボット1の次の動作を短時間で決定できると共に、処理負荷を従来に比べて軽減できる。
また、ロボット1では、次元座標(x、y)の状態を分類した変数env_type(x,y)をRAM312などのメモリに記憶していれば十分であり、変数env_type(x,y)を生成後に、グリッドマップデータGMおよびフロア高さデータFHを保持する必要が無く、メモリを効率的に使用できる。
そして、パス決定部36において、ロボット1の移動過程において、ロボット1の2次元位置(x、y)に応じて、それに対応した上記状態を特定し、その状態に予め対応付けられた処理部35_1〜35_6を選択してロボット1の動作を駆動させる。
ロボット1では、上述したように、予め2次元座標(x、y)の状態を分類した変数env_type(x,y)を生成し、これを図4に示すRAM312などに記憶する。
これにより、ロボット1の動作時に、パス決定部36は、環境クラス分類部34から変数env_type(x,y)を読み出すだけで、ロボット1が次に移動する位置の状態を取得でき、それを基にロボット1の次の動作を短時間で決定できると共に、処理負荷を従来に比べて軽減できる。
また、ロボット1では、次元座標(x、y)の状態を分類した変数env_type(x,y)をRAM312などのメモリに記憶していれば十分であり、変数env_type(x,y)を生成後に、グリッドマップデータGMおよびフロア高さデータFHを保持する必要が無く、メモリを効率的に使用できる。
本発明は上述した実施形態には限定されない。
すなわち、当業者は、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し、様々な変更、コンビネーション、サブコンビネーション、並びに代替を行ってもよい。
例えば、上述した実施形態では、本発明の移動体として、2足歩行のロボット1を例示したが、移動体として、例えば、車輪による移動体、あるいは1足や3足以上のロボットを用いてもよい。
すなわち、当業者は、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し、様々な変更、コンビネーション、サブコンビネーション、並びに代替を行ってもよい。
例えば、上述した実施形態では、本発明の移動体として、2足歩行のロボット1を例示したが、移動体として、例えば、車輪による移動体、あるいは1足や3足以上のロボットを用いてもよい。
10L,10R…CCDカメラ、12…ステレオ画像処理装置、15…CPU、16…アクチュエータ群、17…センサ群、31…距離データ生成部、32…平面検出部、33…グリッドマップ生成部、34…環境クラス分類部、35_1…通常走行処理部、35_2…階段走行処理部、35_3…注意走行処理部、35_4…這動作処理部、35_5…ステップオーバ処理部、35_6…よじ登り/ジャンプ処理部、36…パス決定部、37…動き制御部
Claims (11)
- 移動体が目標位置まで移動する動作を制御する移動体制御方法であって、
前記移動体の現在位置から前記目標位置までのパスの状態を検出する第1の工程と、
前記移動体が実行可能な複数の移動動作を特定する第2の工程と、
前記第1の工程で検出したパスの状態に基づいて、前記第2の工程で特定した前記移動体が実行可能な複数の種類の移動動作のうち、前記移動体の位置の状態に適合した移動動作を順次選択し、当該選択した移動動作を前記移動体が行うように制御する第3の工程と
を有する移動体制御方法。 - 前記移動体が実行可能な前記移動動作を追加または削除する第4の工程
をさらに有し、
前記第2の工程は、前記第4の工程で追加または削除された後の前記実行可能な移動動作を特定する
請求項1に記載の移動体制御方法。 - 前記第3の工程は、
前記移動体の現在位置から前記目標位置までの複数のパスの各々について、当該パスを前記移動体を走行した場合の走行コストの総和を計算し、当該総和を最小にする前記パスを、前記移動体が移動するパスとして選択する
請求項1に記載の移動体制御方法。 - 前記第1の工程は、異なる複数の撮像位置からの撮像対象領域の撮像結果を基に、前記パス上の位置の状態を判定し、
前記第3の工程は、前記移動体の位置について前記判定した状態に予め対応付けられた移動動作を選択する
請求項1に記載の移動体制御方法。 - 前記第1の工程は、
撮像対象領域内に規定された各3次元グリッドの対象物による占有状態を示す3次元グリッドデータを生成し、
前記生成した3次元グリッドデータを基に、前記3次元グリッドの2次元位置の各々について、予め決められた複数の状態のうち何れの状態であるかを判定し、
当該判定した状態に応じて前記パスの状態を検出する
請求項1に記載の移動体制御方法。 - 前記第1の工程は、前記2次元位置の各々が、前記移動体が移動できるフロアあるいは階段と、前記移動体が移動できない障害物との何れであるかを判定する
請求項5に記載の移動体制御方法。 - 前記移動体は、2つの脚部がある人間型のロボットであり、
前記複数の種類の移動動作は、通常走行、階段走行、注意走行、這動作、ステップオーバ、よじ登り動作、並びにジャンプ動作のうち何れかである
請求項1に記載の移動体制御方法。 - 異なる複数の撮像位置からの撮像対象領域の撮像結果を生成する撮像手段と、
走行手段と、
前記撮像手段が生成した前記撮像結果を基に、前記移動体の現在位置から前記目標位置までのパスの状態を検出し、前記移動体が実行可能な複数の移動動作を特定し、前記検出したパスの状態に基づいて、前記第2の工程で特定した前記移動体が実行可能な複数の種類の移動動作のうち、前記移動体の位置の状態に適合した移動動作を順次選択し、当該選択した移動動作を前記移動体が行うように前記走行手段を制御する制御手段と
を有する移動体。 - 前記制御手段は、前記移動体が実行可能な前記移動動作を追加または削除する
請求項8に記載の移動体。 - 前記制御手段は、前記移動体の現在位置から前記目標位置までの複数のパスの各々について、当該パスを前記移動体を走行した場合の走行コストの総和を計算し、当該総和を最小にする前記パスを、前記移動体が移動するパスとして選択する
請求項8に記載の移動体。 - 前記走行手段は、2つの脚部であり、
人間型のロボットである
請求項8に記載の移動体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005222179A JP2007041657A (ja) | 2005-07-29 | 2005-07-29 | 移動体制御方法および移動体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005222179A JP2007041657A (ja) | 2005-07-29 | 2005-07-29 | 移動体制御方法および移動体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007041657A true JP2007041657A (ja) | 2007-02-15 |
Family
ID=37799609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005222179A Pending JP2007041657A (ja) | 2005-07-29 | 2005-07-29 | 移動体制御方法および移動体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007041657A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010009236A (ja) * | 2008-06-25 | 2010-01-14 | Toyota Central R&D Labs Inc | 平面領域推定装置及びプログラム |
JP2014078254A (ja) * | 2009-08-31 | 2014-05-01 | Neato Robotics Inc | 移動ロボット環境の同時局在化およびマッピング方法および装置 |
JP2018142316A (ja) * | 2017-02-28 | 2018-09-13 | トヨタ自動車株式会社 | 可観測性グリッドベースの自律的環境探索 |
JP2019053367A (ja) * | 2017-09-13 | 2019-04-04 | 株式会社アルファメディア | 画像処理装置および移動支援装置 |
CN110941258A (zh) * | 2018-09-21 | 2020-03-31 | 日本电产株式会社 | 移动体的控制方法及移动体的控制*** |
US10816974B2 (en) | 2017-02-28 | 2020-10-27 | Toyota Jidosha Kabushiki Kaisha | Proactive acquisition of data for maintenance of appearance model by mobile robot |
CN114243544A (zh) * | 2022-02-25 | 2022-03-25 | 国网辽宁省电力有限公司电力科学研究院 | 一种基于机器人的gis竖直腔体检修***及检修方法 |
-
2005
- 2005-07-29 JP JP2005222179A patent/JP2007041657A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010009236A (ja) * | 2008-06-25 | 2010-01-14 | Toyota Central R&D Labs Inc | 平面領域推定装置及びプログラム |
JP2014078254A (ja) * | 2009-08-31 | 2014-05-01 | Neato Robotics Inc | 移動ロボット環境の同時局在化およびマッピング方法および装置 |
JP2018142316A (ja) * | 2017-02-28 | 2018-09-13 | トヨタ自動車株式会社 | 可観測性グリッドベースの自律的環境探索 |
US10754351B2 (en) | 2017-02-28 | 2020-08-25 | Toyota Jidosha Kabushiki Kaisha | Observability grid-based autonomous environment search |
US10816974B2 (en) | 2017-02-28 | 2020-10-27 | Toyota Jidosha Kabushiki Kaisha | Proactive acquisition of data for maintenance of appearance model by mobile robot |
JP2019053367A (ja) * | 2017-09-13 | 2019-04-04 | 株式会社アルファメディア | 画像処理装置および移動支援装置 |
JP7101350B2 (ja) | 2017-09-13 | 2022-07-15 | 株式会社アルファメディア | 画像処理装置および移動支援装置 |
CN110941258A (zh) * | 2018-09-21 | 2020-03-31 | 日本电产株式会社 | 移动体的控制方法及移动体的控制*** |
CN114243544A (zh) * | 2022-02-25 | 2022-03-25 | 国网辽宁省电力有限公司电力科学研究院 | 一种基于机器人的gis竖直腔体检修***及检修方法 |
CN114243544B (zh) * | 2022-02-25 | 2022-05-20 | 国网辽宁省电力有限公司电力科学研究院 | 一种基于机器人的gis竖直腔体检修***及检修方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007041656A (ja) | 移動体制御方法および移動体 | |
JP4479372B2 (ja) | 環境地図作成方法、環境地図作成装置、及び移動型ロボット装置 | |
JP3994950B2 (ja) | 環境認識装置及び方法、経路計画装置及び方法、並びにロボット装置 | |
JP4636016B2 (ja) | 平面検出装置、平面検出方法、及び平面検出装置を搭載したロボット装置 | |
JP4618247B2 (ja) | ロボット装置及びその動作制御方法 | |
US7769491B2 (en) | Obstacle avoiding apparatus, obstacle avoiding method, obstacle avoiding program, and mobile robot apparatus | |
CN112666939B (zh) | 一种基于深度强化学习的机器人路径规划算法 | |
US7386163B2 (en) | Obstacle recognition apparatus and method, obstacle recognition program, and mobile robot apparatus | |
JP2007041657A (ja) | 移動体制御方法および移動体 | |
KR20210068446A (ko) | 지형 인식 스텝 플래닝 시스템 | |
CN114503043A (zh) | 受限移动性建图 | |
JP2004298977A (ja) | 行動制御装置、行動制御方法及び行動制御プログラム、並びに移動型ロボット装置 | |
WO2004018159A1 (ja) | 環境同定装置及び環境同定方法、並びにロボット装置 | |
JP2009165823A (ja) | 移動ロボットの経路計画方法および装置 | |
JP2006205348A (ja) | 障害物回避装置、障害物回避方法及び障害物回避プログラム並びに移動型ロボット装置 | |
CN112097769A (zh) | 仿信鸽脑-海马的无人机同时定位与建图导航***及方法 | |
JP6892393B2 (ja) | 足接地位置追随装置、その動きを制御する方法、コンピュータ実行可能なプログラム、及びそれを格納したコンピュータ読取可能な非一時的な情報記録媒体 | |
Wahrmann et al. | Vision-based 3d modeling of unknown dynamic environments for real-time humanoid navigation | |
Chignoli et al. | Rapid and reliable quadruped motion planning with omnidirectional jumping | |
Haddeler et al. | Explore bravely: Wheeled-legged robots traverse in unknown rough environment | |
KR102246236B1 (ko) | 퓨전 슬램에서 맵을 업데이트하는 방법 및 이를 구현하는 로봇 | |
JP7250571B2 (ja) | 倒立振子型ロボット | |
CN107970610B (zh) | 一种3d场景垂直空间飞行路线的规划方法和装置 | |
Mishra et al. | Perception engine using a multi-sensor head to enable high-level humanoid robot behaviors | |
Baek et al. | A Mobile Robot Framework in Industrial Disaster for Human Rescue |