JP3963162B2 - ロボット装置及びロボット装置の制御方法ロボット装置 - Google Patents

ロボット装置及びロボット装置の制御方法ロボット装置 Download PDF

Info

Publication number
JP3963162B2
JP3963162B2 JP2003305308A JP2003305308A JP3963162B2 JP 3963162 B2 JP3963162 B2 JP 3963162B2 JP 2003305308 A JP2003305308 A JP 2003305308A JP 2003305308 A JP2003305308 A JP 2003305308A JP 3963162 B2 JP3963162 B2 JP 3963162B2
Authority
JP
Japan
Prior art keywords
bone
robot apparatus
play equipment
label
mouth
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.)
Expired - Fee Related
Application number
JP2003305308A
Other languages
English (en)
Other versions
JP2005074538A (ja
Inventor
成一 高村
亘 小久保
辰吾 鶴見
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2003305308A priority Critical patent/JP3963162B2/ja
Priority to US10/919,315 priority patent/US6952629B2/en
Priority to CNA2004100579523A priority patent/CN1590038A/zh
Priority to US11/081,540 priority patent/US7058476B2/en
Priority to US11/081,547 priority patent/US7062356B2/en
Publication of JP2005074538A publication Critical patent/JP2005074538A/ja
Application granted granted Critical
Publication of JP3963162B2 publication Critical patent/JP3963162B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0246Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Electromagnetism (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Manipulator (AREA)
  • Toys (AREA)

Description

本発明はロボット装置に関し、特に外部環境に基づいて自律的に行動するロボット装置に関する。
電気的若しくは磁気的な作用を用いて人間の動作に似せた運動を行う機械装置のことを「ロボット」という。ロボットの語源は、スラブ語の"ROBOTA(奴隷機械)"に由来すると言われている。わが国では、ロボットが普及し始めたのは1960年代末からであるが、その多くは、工場における生産作業の自動化・無人化などを目的としたマニピュレータや搬送ロボットなどの産業用ロボット(industrial robot)であった。
最近では、イヌやネコ、クマのように4足歩行の動物の身体メカニズムやその動作を模したペット型ロボット、あるいは、ヒトやサルなどの2足直立歩行を行う動物の身体メカニズムや動作を模した「人間形」若しくは「人間型」のロボット(humanoid robot)など、脚式移動ロボットの構造やその安定歩行制御に関する研究開発が進展し、実用化への期待も高まってきている。これら脚式移動ロボットは、クローラ式ロボットに比し不安定で姿勢制御や歩行制御が難しくなるが、階段の昇降や障害物の乗り越えなど、柔軟な歩行・走行動作を実現できるという点で優れている。
アーム式ロボットのように、ある特定の場所に植設して用いるような据置きタイプのロボットは、部品の組立・選別作業など固定的・局所的な作業空間でのみ活動する。これに対し、移動式のロボットは、作業空間は非限定的であり、所定の経路上または無経路上を自在に移動して、所定の若しくは任意の人的作業を代行したり、ヒトやイヌあるいはその他の生命体に置き換わる種々のサービスを提供することができる。
脚式移動ロボットの用途の1つとして、産業活動・生産活動等における各種の難作業の代行が挙げられる。例えば、原子力発電プラントや火力発電プラント、石油化学プラントにおけるメンテナンス作業、製造工場における部品の搬送・組立作業、高層ビルにおける清掃、火災現場その他における救助といったような危険作業・難作業の代行などである。
また、脚式移動ロボットの他の用途として、上述の作業支援というよりも、生活密着型、すなわち人間との「共生」あるいは「エンターティンメント」という用途が挙げられる。この種のロボットは、ヒトあるいはイヌ(ペット)、クマなどの比較的知性の高い脚式移動動物の動作メカニズムや四肢を利用した豊かな感情表現を忠実に再現する。また、あらかじめ入力された動作パターンを単に忠実に実行するだけではなく、ユーザ(あるいは他のロボット)から受ける言葉や態度(「褒める」とか「叱る」、「叩く」など)に対して動的に対応した、生き生きとした応答表現を実現することも要求される。
本件出願人は、特開2001−191280号公報等に、複数の脚を有するロボット装置がピンクのボールを認識し、ボールに接近し、ボールを蹴るという動作を行うための制御方法を開示している。
特開2001−191280号公報
しかし、上記ロボット装置は、ボールを蹴ったり、つついたりして、自身の体から離すように移動することはできても、咥える等してボールを保持したり、保持したまま移動したり、遊んだりすることはできなかった。遊具を咥えて持ち上げたり、咥えたまま運んだり、咥えたまま転がったりすれば、より豊かな生き生きとした動作を表現することができるはずである。
本発明は、上記実情に鑑みてなされたものであり、専用の遊具を認識し、遊具を咥え、咥えたまま運び、咥えたまま転がり、よって豊かな生き生きとした動作を行うことのできるロボット装置の提供を目的とする。
本発明に係るロボット装置は、上記課題を解決するために、外部環境に基づいて自律的に行動するロボット装置であって、所定のパターンで歩行可能な複数の脚部からなる移動手段と、外部環境内における被写体を撮像する画像撮像手段と、上記画像撮像手段によって撮像された被写体の画像データに含まれる特定色の領域に基づいてラベルを付すラベリング手段と、上記付されたラベルの円形度を計算する計算手段と、上記計算手段によって計算された円形度によって上記被写体中の遊具の骨スティック部及び骨側面を区別する判別手段と、上記判別手段によって区別された上記遊具を画像データの中心に保って上記移動手段によって上記遊具に近づくトラッキング手段と、遊具を咥えるための窪みが形成された下顎部と、この下顎部に対して移動する上顎部からなる口部と、上記口部と上記遊具との距離を判定する距離判定手段と、上記遊具の水平方向が上記口部の正面にあるか否かを判定する方向判定手段を備え、上記判別手段によって遊具の骨スティック部及び骨側面を判別したときは、上記トラッキング手段によって上記遊具に近づき、上記距離判定手段によって遊具までの距離が口部によって咥えられるほど近いと判定した場合であって上記方向判定手段によって上記遊具の水平方向が上記口部の正面にあると判定した場合は、上記口部を用いて上記遊具の上記骨スティック部を咥える。
判別手段が遊具の骨スティック部及び骨側面を判別したときは、トラッキング手段を用いて遊具に近づき、距離判定手段によって遊具までの距離が口部によって咥えられるほど近いと判定した場合であって方向判定手段が遊具の水平方向が口部の正面にあると判定した場合に口部を用いて遊具の骨スティック部を咥える。
本発明に係るロボット装置の制御方法は、上記課題を解決するために、外部環境に基づいて自律的に行動するロボット装置の制御方法であって、所定のパターンで歩行可能な複数の脚部からなる移動手段による移動工程と、外部環境内における被写体を撮像する画像撮像工程と、上記画像撮像工程によって撮像された被写体の画像データに含まれる特定色の領域に基づいてラベルを付すラベリング工程と、上記付されたラベルの円形度を計算する計算工程と、上記計算工程によって計算された円形度によって上記被写体中の遊具の骨スティック部及び骨側面を区別する判別工程と、上記判別工程によって区別された上記遊具を画像データの中心に保って上記移動工程によって上記遊具に近づくトラッキング工程と、遊具を咥えるための窪みが形成された下顎部と、この下顎部に対して移動する上顎部からなる口部と上記遊具との距離を判定する距離判定工程と、上記遊具の水平方向が上記口部の正面にあるか否かを判定する方向判定工程を備え、上記判別工程によって遊具の骨スティック部及び骨側面を判別したときは、上記トラッキング工程によって上記遊具に近づき、上記距離判定工程によって遊具までの距離が口部によって咥えられるほど近いと判定した場合であって上記方向判定工程によって上記遊具の水平方向が上記口部の正面にあると判定した場合は、上記口部を用いて上記遊具の上記骨スティック部を咥える。
判別手段が遊具の骨スティック部及び骨側面を判別したときは、トラッキング手段を用いて遊具に近づき、距離判定手段によって遊具までの距離が口部によって咥えられるほど近いと判定した場合であって方向判定手段が遊具の水平方向が口部の正面にあると判定した場合に口部を用いて遊具の骨スティック部を咥える。
本発明に係るロボット装置の遊具は、外部環境に基づいて自律的に行動するロボット装置の遊具において、ロボット装置の頭部ユニットに形成された口部によって咥えられる棒状の咥え部分と、その咥え部分を挟んで両端に略三角形状に形成された二つの側面部を有し、上記咥え部分及び二つの側面部の所定領域を上記ロボット装置による画像認識処理によってラベル付けされる色とし、そのラベルの円形度が計算されることによって咥え部分と側面部が区別されることによって上記課題を解決する。
本発明に係るロボット装置によれば、計算手段は咥え部分及び二つの側面部の所定領域に付けられた色に基づいたラベルの円形度を計算し、判別手段は円形度に基づいて咥え部分と側面部を区別するので、専用の遊具を認識でき、専用の遊具を咥えたり、咥えたまま運んだり、咥えたまま転がったりして、より豊かな生き生きとした動作を行うことができる。
本発明に係るロボット装置の制御方法によれば、計算工程は咥え部分及び二つの側面部の所定領域に付けられた色に基づいたラベルの円形度を計算し、判別工程は円形度に基づいて咥え部分と側面部を区別するので、専用の遊具を認識でき、専用の遊具を咥えたり、咥えたまま運んだり、咥えたまま転がったりして、より豊かな生き生きとした動作を行うことができる。
本発明に係るロボット装置の遊具によれば、ロボット装置の頭部ユニットに形成された口部によって咥えられる棒状の咥え部分と、その咥え部分を挟んで両端に略三角形状に形成された二つの側面部を有し、上記咥え部分及び二つの側面部の所定領域を上記ロボット装置による画像認識処理によってラベル付けされる色とし、そのラベルの円形度が計算されることによって咥え部分と側面部が区別され、ロボット装置に咥えられたり、咥えられた運ばれたりされる。
以下、本発明の実施の形態について図面を参照しながら説明する。この実施の形態は、周囲環境(或いは外部刺激)や内部状態に応じて自律行動をする自律型のロボット装置であり、特に4脚をそれぞれ自在に駆動しながら接地面に対して胴体部を移動する歩行動作を自律して行う。
このロボット装置は、後述するCPU(Central Processing Unit)によって実行される、画像認識処理アルゴリズム、骨咥え制御アルゴリズム、咥え検出アルゴリズムによって、後述する専用の遊具を認識し、近づいて咥えたり、咥えたまま歩行したり等の動作を行う。
先ず、ロボット装置の構成について説明する。
図1に示すように、本実施の形態によるロボット装置1は、4足歩行の脚式移動ロボットであり、胴体部ユニット2の前後左右にそれぞれ脚部ユニット3A,3B,3C,3Dが連結されると共に、胴体部ユニット2の前端部に頭部ユニット4が連結されて構成されている。頭部ユニット4には、本発明の遊具の具体例である骨の形状の遊具(以下、適宜、骨と記すこともある)200を咥えることのできる口(顎)部を備えている。口部は、上顎部と下顎部からなり、上記骨200の咥え部分203を咥えて確実に保持する構造を採る。口部の構造については詳細を後述する。
胴体部ユニット2には、図2に示すように、CPU10、DRAM(Dynamic Random Access Memory)11、フラッシュROM(Read 0nly Memory)12、PC(Personal Computer)カードインターフェース回路13及び信号処理回路14が内部バス15を介して相互に接続されることにより形成されたコントロール部16と、このロボット装置1の動力源としてのバッテリ17とが収納されている。また、胴体部ユニット2には、ロボット装置1の向きや動きの加速度を検出するための角速度センサ18及び加速度センサ19なども収納されている。
また、頭部ユニット4には、外部の状況を撮像するとともに、周囲の明るさを検出するためのCCD(Charge Coupled Device)カメラ20と、前方に位置する物体までの距離を測定するための距離センサ22と、外部音を集音するためのマイクロホン23と、各種音声を出力するためのスピーカ24と、ロボット装置1の「目」に相当するLED(Light Emitting Diode)(図示せず)などがそれぞれ所定位置に配置されている。
さらに、各脚部ユニット3A〜3Dの関節部分や各脚部ユニット3A〜3D及び胴体部ユニット2の各連結部分、並びに頭部ユニット4及び胴体部ユニット2の連結部分などにはそれぞれ自由度数分のアクチュエータ26〜26及びポテンショメータ27〜27が配設されている。例えば、アクチュエータ26〜26はサーボモータを構成として有している。サーボモータの駆動により、脚部ユニット3A〜3Dが制御されて、目標の姿勢或いは動作に遷移する。もちろん、歩行動作もサーボモータの駆動により制御された脚部ユニット3A〜3Dの接地面に対する自在な動きにより成される。
そして、これら角速度センサ18、加速度センサ19、タッチセンサ21、距離センサ22、マイクロホン23、スピーカ24、及び各ポテンショメータ27〜27などの各種センサ並びに、LED及び各アクチュエータ26 〜26は、それぞれ対応するハブ28〜28を介してコントロール部16の信号処理回路14と接続され、CCDカメラ20及びバッテリ17は、それぞれ信号処理回路14と直接接続されている。
信号処理回路l4は、上述の各センサから供給されるセンサデータや画像データ及び音声データを順次取り込み、これらをそれぞれ内部バス15を介してDRAM11内の所定位置に順次格納する。本実施の形態では、CCDカメラ20によって撮像された被写体の画像信号は、信号処理回路14によって所定の映像信号処理が施されて取り込まれ、画像データとされてDRAM11の所定の位置に格納される。また信号処理回路14は、これと共にバッテリ17から供給されるバッテリ残量を表すバッテリ残量データを順次取り込み、これをDRAM11内の所定位置に格納する。
このようにしてDRAM11に格納された各センサデータ、画像データ、音声データ及びバッテリ残量データは、この後CPU10がこのロボット装置1の動作制御を行う際に利用される。CPU10が行う動作制御としては、本発明の特徴である、画像認識処理アルゴリズム、骨咥え制御アルゴリズム、咥え検出アルゴリズムに基づいた各プログラム(画像認識処理プログラム、骨咥え検出プログラム、咥え検出プログラム)による制御がある。これらのアルゴリズムについては詳細を後述する。
実際上CPU10は、ロボット装置1の電源が投入された初期時、胴体部ユニット2の図示しないPCカードスロットに装填されたメモリカード29又はフラッシュROM12に格納された上記制御処理用の各プログラムをPCカードインターフェース回路13を介して又は直接読み出し、これをDRAM11に格納する。
また、CPU10は、この後上述のように信号処理回路14よりDRAM11に順次格納される各センサデータ、画像データ、音声データ及びバッテリ残量データに基づいて自己及び周囲の状況や、使用者からの指示及び働きかけの有無などを判断する。
さらに、CPU10は、この判断結果に基づいて決定すると共に、上記各プログラムに基づいて必要なアクチュエータ26〜26を駆動させることにより、頭部ユニット4の口部によって骨を咥えたり、頭部ユニット4を上下左右に振らせたり、各脚部ユニット3A〜3Dを駆動させて歩行させるなどの行動を行わせる。
また、この際CPU10は、必要に応じて音声データを生成し、これを信号処理回路14を介して音声信号としてスピーカ24に与えることにより当該音声信号に基づく音声を外部に出力させたり、上述のLEDを点灯、消灯又は点滅させる。このようにしてこのロボット装置1においては、自己及び周囲の状況や、使用者からの指示及び働きかけに応じて自律的に行動し得るようになされている。
図3にはロボット装置1が咥えて遊ぶ対象となる遊具の外観を示す。この遊具は、一般的に犬が咥えて遊ぶという観念を抱かせる骨の形状をしている。図3の(a)は遊具を安定した状態で床に置いた様子を示す。図3の(b)は遊具を縦にした状態で床に置いた様子を示す。図3の(c)は安定した状態で床に置かれた遊具の正面図である。図3の(d)は安定した状態で床に置かれた遊具の側面図である。この骨の形状の遊具は、スティック状の咥え部分203の両端に略トライアングル状の側面部201L,201Rを設けた形状である。咥え部分203はピンク色とされている。また側面部201L,201Rの外側には、太い略Y状にピンク色の領域202が設けられている。側面部201L,201Rの内側204L,204Rは、外周から咥え部分203に向かって厚くなるように形成されている。咥え部分203の長さは、ロボット装置1の頭部ユニット4の口部が咥えられるのに十分な長さとされている。また、上記内側204L,204Rを外周から咥え部分203に向かって厚くなるように形成しているため、ロボット装置が咥え部分203のいずれか側面部側を咥えたとしても、傾斜により中央部を咥えるようにするためである。
ロボット装置1は、この遊具200をCCDカメラ20を使って撮影し、その画像信号を信号処理部14にて処理し、画像データをDRAM11に格納する。ロボット装置1は、DRAM11から画像データを取得して、CPU10によって実行される画像認識処理プログラムにしたがって、自分の遊具であることを認識する。画像による認識は、咥え部分203、側面部201L,201Rのピンク色の形状識別により可能である。また、ピンク色の形状識別により咥え部分203の向きを判別し、咥えることができるか否かの判断を行うこともできる。咥え部分203のラベルの向きを基に骨の配置角度を検出することもできる。
ロボット装置1による遊具の認識方法について説明する。画像認識処理プログラムにしたがって行われるが、先ず認識方法の原理について説明する。ロボット装置1は、CCDカメラ20によって撮影した画像データから、ピンク領域の円形度を算出し、その値を用いて遊具を認識する。また、遊具の特徴部となる咥え部分、側面部分を区別する。円形度Rは、ピンク領域の面積とその周囲長を使って以下の式によって求められる。
R=4π面積/(周囲長*周囲長) ・・・(1)
また、ピンク領域に対して膨張処理と補填処理を施すことによって認識性能を向上することもできる。
図4には図形の種類が“円”、“正方形”、“正三角形”の場合の、面積、周囲長、円形度を示す。また、図5には上記遊具とピンクボールの実画像と、これらの画像処理結果(ピンクカラーテーブル領域の演算結果)を示す。
実際に、ロボット装置1は、上記(1)式によって求めた円形度と、さらに短期に記憶したデータにより、撮影した対象物を分類する。図6に示すように円形度は0.0から1.0まで円形に向かうにしたがって高くなる。言い換えると円形から形状が離れるほど小さい値になる。
例えば、円形度Rが0.7〜1.0のときには図7に実画像と画像処理結果を示すようなピンクボールであると識別する。また、円形度Rが0.55〜0.6のときには図8に実画像と画像処理結果を示すような上記遊具の側面部201L、201Rであると識別する。また、円形度Rが0.15〜0.5のときには図8に実画像と画像処理結果を示すような上記遊具の咥え部分203であると識別する。
また、円形度Rが0.0〜0.15のときにはノイズ地帯であり、0.5〜0.55のときには無所属地帯その1であるとする。また、円形度Rが0.6〜0.7のときには無所属地帯その2であるとする。照明条件や、見る角度によっては、時間の経過に伴って円形度Rが変化する場合がある。円形度Rがノイズ地帯に入っていても、ピンク領域が一定以上の面積があればピンクの不明物体に分類する。また、現在は、円形度Rが無所属地帯その1にあるが、咥え部分203を識別できた0.15〜0.5に入っていたという記憶があれば咥え部分203と識別する。同様に、0.55〜0.6に入っていたという記憶があれば側面部201と識別する。いずれの記憶もなければ、ピンクの不明物体とする。また、現在は、円形度Rが無所属地帯その2にあるが、ピンクボールを識別できた0.7〜1.0に入っていたという記憶があればピンクボールと識別する。同様に、0.55〜0.6に入っていたという記憶があれば側面部201と識別する。いずれの記憶もなければ、ピンクの不明物体とする。
このように円形度と短期の記憶にしたがった分類を行うことにより、上記遊具(骨200)とピンクボールとの誤識別を排除することができる。また、環境のロバストさにも適応できる。
次に、認識性能を向上するための補填処理及び膨張処理の原理について図9を参照しながら説明する。照明の影響によって、ピンクボールや上記遊具の一部には、白飛び102や影105を生じ、ボールや上記遊具の一部が欠けて見えることがある。すると、円形度の計測値が理論値と一致しにくくなり、形状を誤認識する原因となる。そこで、ラベル内を左右方向及び上下方向にスキャンし、左右両端の間、及び、上下両端の間で、ラベル付けされていない画素に対して、強制的にラベルを割り当てる。符号103は左右(横)方向スキャンによる補填を示し、符号104は上下(縦)方向スキャンによる補填を示す。白飛び102部分や、影105で暗くなった部分の色をラベルと同色に書き換える。これにより、補填したラベルの形状の円形度が理論値に近づき、認識精度が向上する。なお、補填処理によっても埋めきれない部分106は残ってしまうこともある。もちろん、もっと時間をかけて斜め方向にスキャンして強制的にラベルを割り当ててもよい。また、周囲の例えば8画素を強制的に同色に書き換える膨張処理を行ってもよい。この膨張処理では、ピンクは破線で示した領域まで膨張する。
次に、ロボット装置1がCPU10によって画像認識処理プログラムを実行することによって行う画像認識の処理の流れについて図10〜図21を参照して説明する。先ず、図10のステップS1にて画像データを取得する。CCDカメラ20にて撮影し、信号処理回路14によって映像信号処理が施され、DRAM11に格納されていた画像データである。次に、カラーデータテーブル(CDT)のピンクチャンネルのデータを取得する。ハード的に画像のどこがピンクになっているかが計算できるので、ピンクのチャンネルという画像に対してアクセスすると、x方向が何画素目でy方向が何画素目のこの画素はピンクであるか否かを1,0のデータで検出できる。例えば、ピンクなら1、ピンクでないなら0というデータである。
フローチャートでは、ステップS2にノイズ多発環境処理をオンにするか否かという分岐処理があるがこれについては後述する。ステップS3では、CDTのピンクチャンネルのデータに対して膨張処理を1回だけ施す。この膨張処理については図9を用いて説明した通りである。境界部のピンクの周囲8画素もピンクにして、照明の影響による白飛び等を埋めてしまおうとする処理である。ステップS4〜ステップS6は、ステップS2に続く処理であるのではここでは説明を省略する。
次に、ステップS7では、ラベリング処理を行う。ラベリング処理は、1つの画像中にピンクのかたまりが何個あるかを求める方法である。例えば、図8の(b)に示したように、遊具の咥え部分203に相当するピンクのかたまりと、側面部201Rに相当するピンクのかたまりがあったとすると、そのかたまりは2個あることになる。
ステップS8では、補填処理を行う。この補填処理についても図9を参照して既に説明したのでここでは省略する。ステップS3にて行った膨張処理でも埋めきれなかった白飛び等を埋めてしまおうとする処理である。
しかし、ステップS1の画像データ取得からピンクチャンネルのデータ取得処理にて、色温度等の関係でロボット装置1が木の床や、肌色等もピンクと誤認識してしまった場合には、その後の膨張処理、ラベリング処理、補填処理を行うことにより膨大なデータ処理をしてしまうことになる。これを避けるために、ノイズ多発環境となってしまったときには、収縮を行う。収縮というのは、上記膨張の反対であり、ある画素がピンクでなかったら、周りの8近傍もピンクではないとする。これにより小さなノイズは消すことができる、不必要に多くなってしまったラベリング数を減らすことができる。
このため、ステップS9にてラベル数が一定数以上であるか否かをチェックし、一定数(例えば10個)以上であると判断すると、ノイズ多発環境処理をオンにする(ステップS10)。そして、次の画像データを取得するときにはステップS2にてノイズ多発環境処理がオンにされていると判定するので、ステップS4に進んで収縮処理を行い、小さなノイズを消す。この収縮によりピンク領域は小さくなっているので、ステップS5にて収縮解除値を計算し、ステップS6により上記膨張処理を2回かける。
ステップS5では、ステップS4にて収縮をしたときに、収縮をする前よりもどのくらいピンクが減ったかという差分を出している。収縮処理の後にピンクでなくなった画素の累積を計算することになる。ピンクの点のようなノイズの場合、収縮によってノイズはピンクでないものになる。ピンクノイズがなくなり、さらに照明環境が変化してピンクボールだけとなった場合は、収縮によって変わるのはピンクボールの輪郭だけである。それによって、ピンクの減る量は全体としては、ピンクノイズの場合よりも少なくなる。このようにステップS5は、収縮によって何%が書き換えられたかを計算する処理を行う。
ステップS9にて依然としてラベル数が一定数よりも多いと判定すれば、次の画像データを取得したときにも、ステップS4にて収縮処理を行うことになる。ステップS9にてラベル数が一定数よりも少なくなったと判定し、さらにステップS11にてノイズ多発環境がオンであると判定するとステップS12に進む。ステップS12では、収縮解除条件をクリアしてもよいか否かを判断し、良ければステップS13にてノイズ多発環境処理をオフにする。
図22〜図26には、骨とボールの画像処理結果を示す。上記図10におけるステップS13までの処理手順によって得られた画像処理結果であり、これらの画像処理結果を元にして、後述の図11のステップS14〜ステップS19の処理手順が行われる。図22の(a)は、骨全体の画像である。図22の(b)は画像処理結果である。咥え部分と側面のピンク部分が若干膨張しているのが判る。図23の(a)は、骨の咥え部分を略正面から捉えた画像である。白飛びしている様子が判る。図23の(b)の画像処理結果では、咥え部分に補填処理、膨張処理を施した結果白飛びがなくなっている。また、図24の(a)は、縦置きの骨の画像である。図24の(b)の画像処理では、側面部分に補填処理を施した結果、三角形の底辺部分がほぼ直線になっている。図25の(a)は、ボールの画像である。照明の影響で白飛びが発生している。図25の(b)の画像処理結果では、補填処理及び膨張処理により白飛びがなくなり、膨張しているのが判る。図26の(a)は、骨とボールを一緒にした画像である。図26の(b)の画像処理結果では、それぞれのピンク部分が補填処理、膨張処理されている。
次に、図11のステップS14に進んで各ラベル、例えば上記遊具(骨:BONE)の咥え部分(スティック)と側面、ボール(BALL)、ピンク色の不明物体(PINK)の各ラベルについてステップS14に示すように、面積、重心、周囲長、円形度、画像上の傾き角を計算し、これらの情報と履歴(過去の記憶)から、各ラベルを、骨の咥え部分、骨の側面部分、ピンクボール、ピンク色の不明物体、ノイズに分類する。この図11のステップS14の各ラベル処理は、図12のサブルーチンを持つ。
図12のサブルーチンでは、ステップS21においてラベルを全数処理したかで分岐し、全数に達していないのであれば、ステップS22にて、各ラベルの面積:S、重心位置:(x、y)、周囲長:L、円形度:R=4πS/(L*L)、画像上の傾き角θ(2次モーメント方式)を計算する。
そして、上記ステップS22の情報を使ってステップS23にてラベルの円形度Rの値が上記遊具(骨)のスティック部分の範囲内にあるか否かをチェックする。例えば、円形度Rが0.4であり、上記図6においてスティック部分の範囲にあると判定するとステップS24に進んで骨スティック詳細処理を行う。このステップS24の骨スティック詳細処理については後述する。
ステップS23にてラベルの円形度の値が骨のスティック部分の範囲内にはなく、かつステップS25にて無所属地帯1の範囲内にあると判定するとステップS26に進んで無所属地帯1詳細処理を行う。このステップS26の無所属地帯1詳細処理についても後述する。
ステップS25にてラベルの円形度の値が無所属地帯1の範囲内にはなく、かつステップS27にて骨の側面部の範囲内にあると判定するとステップS28に進んで骨側面処理処理を行う。このステップS28の骨側面処理についても後述する。
ステップS27にてラベルの円形度の値が骨の側面部の範囲内にはなく、かつステップS29にて無所属地帯2の範囲内にあると判定するとステップS30に進んで無所属地帯2詳細処理を行う。このステップS30の無所属地帯2詳細処理についても後述する。
ステップS29にてラベルの円形度の値が無所属地帯2の範囲内にはなく、かつステップS31にてボールの範囲内にあると判定するとステップS32に進んでボール詳細処理を行う。このステップS32のボール詳細処理についても後述する。
ステップS29にてラベルの円形度の値が無所属地帯2の範囲内にはなく、かつステップS31にてボールの範囲内にない判定するとステップS33に進んで例外詳細処理を行う。このステップS33の例外詳細処理についても後述する。
ステップS24の骨スティック詳細処理、ステップS26の無所属地帯1詳細処理、ステップS28の骨側面詳細処理、ステップS30の無所属地帯2詳細処理、ステップS32のボール詳細処理、ステップS33の例外詳細処理が終わると、図13のステップS34、ステップS35、ステップS36及びステップS37を実行し、ステップS21に戻る。ステップS21にてラベルを全数処理したと判定すると、各ラベル処理は終了となる。
図14には、上記ステップS24の骨スティック詳細処理のサブルーチンを示す。先ず、ステップS2401にてラベル面積が識別面積(所定の閾値)以上、または前回フレームで骨のスティックを認識したかを判定する。ラベル面積Sは既に計算しているが、そのラベル面積Sが所定の閾値(例えば50画素や、100画素とか)以上であるか否かにより、信頼性を確保しようとする。物体が遠くにあるとロボット装置からは小さく見えることになる。そのときはボール、骨を誤認識しやすい。実際に40cmとか50cm離れたときには、どれくらいの画素が見えるとかは予め判っているので、その値を閾値として用い、ラベル面積Sが閾値以上か否かを判定することにより、誤認識が発生しない状況を作る。そして、ラベルを骨のスティック部分と認識する(ステップS2402)。または、前回フレームで骨と認識したというような過去のデータ(短期記憶)を用いてもよい。これは、過去では大きく見えて骨と認識し、その後、人がその骨を取り上げ、ロボット装置から離した場合を想定できる。この場合、ラベル面積は小さくなる。過去、一度は骨のスティックと記憶していた場合は、現在は小さくてもスティックと認識するようにしている(ステップS2402)。
ステップS2403では、ラベル面積がスティックと認識した、その他のラベル面積以上であるか否かを判定する。骨のスティック部分であると認識したラベルが複数あったときに、今認識処理したラベルと処理済みのラベルの面積を比較し、大きい方を残すのが目的である。今認識処理したラベルの面積の方が大きければ、ステップS2404にて骨のスティック部分の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。
ステップS2401にてラベル面積Sが識別面積以上ではなく、または前回のフレームで骨のスティックを認識していないと判定すれば、ステップS2405に進む。ステップS2405では、ラベル面積が検出最小面積以上、または前回フレームでピンク(ピンクの不明物体)が見えていたか否かを判定する。例えば、上記ステップS2401での識別面積を50画素とし、検出最小面積を10画素とした場合、今見ているラベルの面積が20画素であったならば、YESと判定し、ステップS2406に進み、ボールか骨ではないがピンクの不明物体であると認識する。ラベルの面積が10画素よりも小さいものは、ノイズとして破棄する。カメラから例えば80cmまでの距離がピンクとして認識できる距離で、40〜50cmに近づくと、ピンクが骨かボールであるとはっきりしてくることになるということを前提にしている。そして、ステップS2407にて、ラベル面積が、ピンクの不明物体と認識した、その他のラベル面積以上であるか否かを判定する。ピンクの不明物体と認識したラベルが複数あったときに、今認識処理したラベルと処理済みのラベルの面積を比較し、大きい方を残すのが目的である。今認識処理したラベルの面積の方が大きければ、ステップS2407にてピンクの不明物体の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。
次に、図15及び図16を参照して、上記ステップS26の無所属地帯1詳細処理のサブルーチンを説明する。先ず、ステップS2601にてラベル面積が識別面積(所定の閾値)以上、または前回フレームで骨のスティックか側面を認識したかを判定する。ラベル面積が識別面積以上であるかの判定は、上記ステップS2401と同様に、誤認識が発生しない状況を作るためである。また、前回フレームで骨のスティックか側面かを認識したかを判定するのは、やはり上記ステップS2401と同様に、過去、一度は骨のスティック又は側面と記憶していた場合は、現在は小さくてもスティック又は側面と認識するためである。
ステップS2602では、前回フレームで骨のスティックを認識したか否かを判定する。判定していればステップS2603に進んでラベルを骨のスティック部分と認識する。ステップS2604では、ラベル面積がスティックと認識した、その他のラベル面積以上であるか否かを判定する。骨のスティック部分であると認識したラベルが複数あったときに、今認識処理したラベルと処理済みのラベルの面積を比較し、大きい方を残すのが目的である。今認識処理したラベルの面積の方が大きければ、ステップS2605にて骨のスティック部分の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。
上記ステップS2601にてラベル面積Sが識別面積以上ではなく、または前回のフレームで骨のスティックか側面を認識していないと判定すれば、図16のステップS2606に進み、ラベル面積が検出最小面積以上、または前回フレームでピンクが見えていたか否かを判定する。ステップS2606にてラベル面積が検出最小面積以上、または前回フレームでピンクが見えていたと判定すると、ステップS2607に進んでラベルはボールか骨ではないがピンクの不明物体であると認識する。ステップS2608にて、ラベル面積が、ピンクの不明物体と認識した、その他のラベル面積以上であるか否かを判定する。ピンクの不明物体と認識したラベルが複数あったときに、今認識処理したラベルと処理済みのラベルの面積を比較し、大きい方を残すためである。今認識処理したラベルの面積の方が大きければ、ステップS2609にてピンクの不明物体の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。
上記ステップS2602にて、前回フレームで骨のスティックを認識していないと判定すればステップS2610に進んで前回フレームで骨の側面を認識したか否かを判定する。前回フレームで骨の側面部分を認識しているのであればステップS2611に進んでラベルを骨の側面部分と認識する。ステップS2612にて、ラベル面積が、側面と認識した、その他のラベル面積以上であるか否かを判定する。側面と認識したラベルが複数あったときに、今認識処理したラベルと処理済みのラベルの面積を比較し、大きい方を残すためである。今認識処理したラベルの面積の方が大きければ、ステップS2613にて骨の側面部分の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。ステップS2605、ステップS2609及びステップS2613の処理が終了するか、あるいはステップS2601、ステップS2604、ステップS2606、ステップS2608、ステップS2610、ステップS2612の各分岐処理にてNOと判定されると無所属地帯1詳細処理を終了する。
次に、図17を参照して、上記ステップS28の骨側面詳細処理のサブルーチンを説明する。先ず、ステップS2801にてラベル面積が識別面積(所定の閾値)以上、または前回フレームで側面を認識したか否かを判定する。ラベル面積が識別面積以上であるかの判定は、上記ステップS2401と同様に、誤認識が発生しない状況を作るためである。また、前回フレームで骨の側面を認識したかを判定するのは、やはり上記ステップS2401と同様に、過去、一度は骨の側面と記憶していた場合は、現在は小さくても側面と認識するためである。
ステップS2802では、ラベルを骨の側面部分と認識する。ステップS2803では、ラベル面積が側面と認識した、その他のラベル面積以上であるか否かを判定する。骨の側面部分であると認識したラベルが複数あったときの処理である。今認識処理したラベルの面積の方が大きければ、ステップS2804にて骨の側面部分の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。
上記ステップS2601にてラベル面積Sが識別面積以上ではなく、または前回のフレームで骨の側面を認識していないと判定すれば、ステップS2805に進み、ラベル面積が検出最小面積以上、または前回フレームでピンクが見えていたか否かを判定する。ステップS2805にてラベル面積が検出最小面積以上、または前回フレームでピンクが見えていたと判定すると、ステップS2806に進んでラベルはボールか骨ではないがピンクの不明物体であると認識する。ステップS2807にて、ラベル面積が、ピンクの不明物体と認識した、その他のラベル面積以上であるか否かを判定する。ピンクの不明物体と認識したラベルが複数あったときの処理である。今認識処理したラベルの面積の方が大きければ、ステップS2808にてピンクの不明物体の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。
次に、図18及び図19を参照して、上記ステップS30の無所属地帯2詳細処理のサブルーチンを説明する。先ず、ステップS3001にてラベル面積が識別面積(所定の閾値)以上、または前回フレームで骨の側面かボールを認識したかを判定する。
ステップS3002では、前回フレームで骨の側面を認識したか否かを判定する。判定していればステップS3003に進んでラベルを骨の側面部分と認識する。ステップS3004では、ラベル面積が骨の側面と認識した、その他のラベル面積以上であるか否かを判定する。骨の側面部分であると認識したラベルが複数あったときの処理である。今認識処理したラベルの面積の方が大きければ、ステップS3005にて骨の側面部分の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。
上記ステップS3001にてラベル面積Sが識別面積以上ではなく、または前回のフレームで骨の側面かボールを認識していないと判定すれば、図19のステップS3006に進み、ラベル面積が検出最小面積以上、または前回フレームでピンクが見えていたか否かを判定する。ステップS3006にてラベル面積が検出最小面積以上、または前回フレームでピンクが見えていたと判定すると、ステップS3007に進んでラベルはボールか骨ではないがピンクの不明物体であると認識する。ステップS3008では、ラベル面積が、ピンクの不明物体と認識した、その他のラベル面積以上であるか否かを判定する。ピンクの不明物体と認識したラベルが複数あったときの処理である。今認識処理したラベルの面積の方が大きければ、ステップS3009にてピンクの不明物体の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。
上記ステップS3002にて、前回フレームで骨の側面を認識していないと判定すればステップS3010に進んで前回フレームでボールを認識したか否かを判定する。前回フレームでボールを認識しているのであればステップS3011に進んでラベルをボールと認識する。ステップS3012にて、ラベル面積が、ボールと認識した、その他のラベル面積以上であるか否かを判定する。ボールと認識したラベルが複数あったときの処理である。今認識処理したラベルの面積の方が大きければ、ステップS3013にてボールの面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。ステップS3005、ステップS3009及びステップS3013の処理が終了するか、あるいはステップS3001、ステップS3004、ステップS3006、ステップS3008、ステップS3010、ステップS3012の各分岐処理にてNOと判定されると無所属地帯2詳細処理を終了する。
次に、図20を参照して、上記ステップS32のボール詳細処理のサブルーチンを説明する。先ず、ステップS3201にてラベル面積が識別面積(所定の閾値)以上、または前回フレームでボールを認識したかを判定する。ラベル面積が識別面積以上であるかの判定は、上記ステップS2401と同様に、誤認識が発生しない状況を作るためである。また、前回フレームでボールを認識したかを判定するのは、やはり上記ステップS2401と同様に、過去、一度はボールと記憶していた場合は、現在は小さくてもボールと認識するためである。
ステップS3202では、ラベルをボールと認識する。ステップS3203では、ラベル面積がボールと認識した、その他のラベル面積以上であるか否かを判定する。ボールであると認識したラベルが複数あったときの処理である。今認識処理したラベルの面積の方が大きければ、ステップS3204にて骨の側面部分の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。
上記ステップS3201にてラベル面積Sが識別面積以上ではなく、または前回のフレームでボールを認識していないと判定すれば、ステップS3205に進み、ラベル面積が検出最小面積以上、または前回フレームでピンクが見えていたか否かを判定する。ステップS3205にてラベル面積が検出最小面積以上、または前回フレームでピンクが見えていたと判定すると、ステップS3206に進んでラベルはボールか骨ではないがピンクの不明物体であると認識する。ステップS3207にて、ラベル面積が、ピンクの不明物体と認識した、その他のラベル面積以上であるか否かを判定する。ピンクの不明物体と認識したラベルが複数あったときの処理である。今認識処理したラベルの面積の方が大きければ、ステップS3208にてピンクの不明物体の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。
次に、図21を参照して、上記ステップS33の例外詳細処理のサブルーチンを説明する。ステップS3301では、ラベル面積が検出最小面積以上、または前回フレームでピンクが見えていたか否かを判定する。ステップS3301にてラベル面積が検出最小面積以上、または前回フレームでピンクが見えていたと判定すると、ステップS3302に進んでラベルはボールか骨ではないがピンクの不明物体であると認識する。ステップS3303にて、ラベル面積が、ピンクの不明物体と認識した、その他のラベル面積以上であるか否かを判定する。ピンクの不明物体と認識したラベルが複数あったときの処理である。今認識処理したラベルの面積の方が大きければ、ステップS3304にてピンクの不明物体の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。
以上の、骨スティック詳細処理(図12のステップS24)、無所属地帯1詳細処理(ステップS26)、骨側面詳細処理(ステップS28)、無所属地帯2詳細処理(ステップS30)、ボール詳細処理(ステップS32)、例外詳細処理(ステップS33)がそれぞれ終了し、どれかに分類されると、図12のステップS34に進む。ステップS34では、ラベル面積が検出最小面積以上、かつピンクと認識した、その他のラベル面積以上か否かを判定する。ピンクの不明物体と認識したラベルが複数あったときの処理である。今認識処理したラベルの面積の方が大きければ、ステップS35にてラベルをピンクの不明物体であると認識し、ステップS36にてピンクの不明物体の面積、重心、円形度、画像上の傾き角を本ラベルの値に更新する。このステップS34〜ステップS37の処理は、単にピンクのものをトラッキングしなさいというような指示が出された場合のために有効となる。形状にはとらわれず、ただピンクという色のみに左右される。そして、ステップS37にてラベルのインデックスをインクリメントし、ステップS21の処理に戻る。
そして、図11に戻り、ステップS15以降の処理を行うことになる。先ず、ステップS15では、時間ヒステリシスによるオン/オフ処理を行う。ある画像フレームで骨が見えたとしても、その時点ではアプリケーション側には骨であることを通知しない。時間ヒステリシスを持たせる。例えば、骨が見えていない状態から見えた場合には、見えたというフレームが連続して例えば3フレーム以上続いて始めて骨であることを通知する。逆に見えていたときから見えなくなったときにも、見えなくなって3フレーム以上続いたら見えなくなったと通知する。例えば、フレームレートは、速い場合で30fps又はCPUが他の処理を行っている場合には15fpsであり、3フレーム分をヒステリシスとしている。
次に、ステップS16にて面積を基に、スティックと側面の計算結果を骨に統合する。スティックと側面の面積が大きい方を使って骨と認識する処理である。ステップS17にて骨、ボール、ピンクの不明物体をそれぞれカメラ座標系、及びロボット座標系に変換する。床にどのように置かれているか等を判定するのに都合のよいように高さ方向が判るように変換する。
次に、ステップS18にて高さ情報を基に骨が縦置きになっているか否かを判定する。ステップS17での変換処理を元にしているので縦置きであるか横置きであるかを判定できる。ここでいう縦置きとは上記図3における(b)の状態であり、横置きとは図3の(a)、(c)、(d)の状態である。横置きの図3の(a)、(c)、(d)については、ロボット装置に対して斜めに置かれているか、正面に置かれているか、側面した見えないように置かれているかという状態を示す。したがって、ロボット装置は、骨が図3のいずれの状態にあるかによって、歩き続ける、トラッキングする、咥えるなどの行動を変えることができる。そして、ステップS19にて骨、ボール、ピンクの不明物体の認識結果をアプリケーションに提供する。
アプリケーションとしては、近くまで歩いていく処理、トラッキングする処理、頭でつついたり、脚で倒したりする処理、そして咥えるという処理がある。本実施の形態では、これら一連の処理を骨を咥える制御アルゴリズムとしてまとめて説明する。この骨咥え制御アルゴリズムには、咥え検出アルゴリズムも含まれる。
次に、図27及び図28を用いてロボット装置が骨を見つけて、歩いて近づき、トラッキングし、頭でつついたり、脚で倒したり、あるいはそのまま咥え部分203を咥えたりするまでの骨咥え制御アルゴリズムを説明する。上述した画像認識処理プログラムにしたがって、骨、ボール、ピンクの不明物体を認識した結果を貰ってステップS41以降を処理する。先ず、ステップS41にて骨が見えているか否かを判定する。ここで、見えていないのであれば、ステップS50に進んで、ピンクの不明物体が見えているのかを判定する。見えているのであれば、ステップS51にてトラッキングを行う。見えているものを画像の中央で捉えるように追跡する制御である。そして、ピンクの不明物体に近づいていき(ステップS52)、ステップS41に戻る。
ステップS41にて骨が見えていればステップS42にて骨をトラッキングし、画像の中央にキープしながら近づいていく。ステップS43では、骨の鉛直方向がロボットの接地平面に近いか否かを判定する。骨がロボットの歩行面と同じ位の高さの面に置いてあるか否かを検出する処理である。同じ位の高さの面に骨があればステップS44に進み、骨までの距離が咥えられるほど近いか否かを判定する。ステップS43にて骨がロボットの歩行面と同じ位の高さの面に置かれていないと判定すると、ステップS54にて待機するか又はステップS55にて「骨をくれ」とおねだりをする。ステップS54とステップS55の処理は、確率選択によって分岐する。過去に行った処理を基に確率を計算し、その確率にしたがって選択する。
ステップS44にて骨までの距離が咥えられるほど近いと判定すれば、ステップS45に進み、骨の水平方向がほぼ正面になるか否かを判定する。骨の水平方向がほぼ正面であると判定すれば、図28のステップS46に進む。ステップS45にて骨の水平方向がほぼ正面ではないと判定すると、ステップS57にてロボットは胴体のヨー軸をひねって向きを変えたり、又はステップS58にて真横に移動し向きを変えてステップS41に戻る。ステップS57とステップS58の処理は、確率選択によって分岐する。
次に、図28のステップS46では、骨が縦に置かれているか否かを判定する。骨が縦に置かれ、図3の(b)の状態になっていると判定すると、ステップS59にて縦置きの骨を咥えたり、又はステップS60にて頭や足で骨を倒す。ステップS59にて縦置きの骨を咥えた後は、後述のステップS49に進む。また、ステップS60にて頭や足で骨を倒したらステップS41に戻る。ステップS59とステップS60の処理も確率選択によって分岐する。
ステップS46にて骨が縦に置かれていないと判定すればステップS47に進み、骨の咥え部分の傾きが画面上でほぼ水平か否かを判定する。図3の(c)の状態であるか否かである。咥え部分が画面上でほぼ水平であると判定すれば、ステップS48に進み、横置きの骨を咥える。ステップS47にて咥え部分が画面上でほぼ水平でないと判定すれば、ステップS61にて頭や脚で傾きを整える。または、ステップS62にて骨に対して回り込み、ステップS41に戻る。ステップS61とステップS62の処理も確率選択によって分岐する。
ステップS48にて横置きの骨を咥えるか、又はステップS59にて縦置きの骨を咥えた後、ステップS49では咥え検出処理にて骨を咥えたと認識したか否かを判定する。この咥え検出処理については詳細を後述する。
次に、以上に説明した制御アルゴリズムによって行われるロボットのインタラクションの具体例について図29、図30及び図31を参照して説明する。
先ず、横置き骨を咥えにいき(図29の(a))、身をかがめて咥え(図29の(b))、横置き骨を咥えることに成功(図29の(c))したという具体例である。上記図27及び図28のフローチャートに沿って説明すれば、ステップS45にて骨の水平方向がほぼ正面にあると判定し、ステップS46にて骨が縦に置かれていないと判定し、ステップS47にて骨の咥え部分の傾きが画面上でほぼ水平であると判定し、ステップS48にて身をかがめて横置きの骨を咥える。そして、ステップS49の咥え検出処理で骨を咥えたと認識し終了している。
また、骨が縦置きに床面に置かれている場合には、ロボットは身体をひねり(図30の(a))、縦置きの骨に身体を寄せて(図30の(b))、縦置き骨を横から咥え(図30の(c))、骨を咥えたら身体を戻し(図30の(d))、縦置き骨を咥えることに成功(図30の(e))したという具体例である。上記図27及び図28のフローチャートに沿って説明すれば、ステップS45にて骨の水平方向がほぼ正面にあると判定し、ステップS46にて骨が縦に置かれていると判定し、ステップS59にて縦置きの骨を咥えにいき、ステップS49にて咥え検出処理で骨を咥えたと認識し終了している。
さらに、インタラクションの具体例としては、図31に示すように、咥えた後に、脚で骨を整え(図31の(a))、骨の側面を足先でこすり(図31の(b))、骨を回転し(図31の(c)、タイミングを合わせて回す(図31(d))という動作を行うようにしてもよい。
また、咥えた後に、人に近寄って、咥えている骨を渡すという動作を行うこともできる。音声認識で「もってこい」、「とってこい」、「ちょうだい」等の単語を認識し、音源方向に近づいたり、画像処理で顔を検出して、顔の方に近づき、「よしよし」等の音声単語や、撫でられ(接触)、適切な距離に到達、等を検知して、骨を渡すという一連の処理を行う。
また、咥えた骨を歩行面に立てたり、骨を身体の反動や手を使って投げたりすることも可能である。また、咥えた骨でボールを打ったり、咥えた骨を転がしたり、骨を口から外し、両手(或いは片手)で空中に保持することも可能である。
次に、ロボット装置1の頭部ユニット4における口(顎)の構造について説明する。ロボット装置1は、骨200の咥え部分203を咥えて持ち上げるという動作を行ので、口の構造にも技術的な特徴を有する。図32〜図34に示すように、ロボット装置は、頭部ユニット4の前方の下端部に、上下に回動する下顎部151を備えている。この下顎部151には、骨の咥え部分203を保持するのに適する窪み152を設けている。この窪み152には、ゴム材料を設けているので摩擦係数が高く、保持した骨を落としにくくしている。また、上顎部154には、上記骨を載せた下顎部151が閉じられた場合に骨の咥え部分203をしっかりと押さえられるように、やはりゴム材料からなる押さえ部153,153が付いている。図35に示すように、骨の咥え部分203を窪み152に入れ、下顎部151を閉じれば、上記押さえ部153,153と窪み152とで、確実に骨を保持することができる。また、図36に示すように、骨の咥え部203が下顎部151の上部に行きすぎても、それを戻し、窪み152の中に落とし込めば容易には骨を床面等に落下させることはない。
次に、上記図28のステップS49における咥え検出処理に用いる咥え検出アルゴリズムについて説明する。ロボット装置の上記図2に示したCPU10は、PWMと口関節角速度、角加速度から、口の関節に加わっている外部トルクの大きさと方向を計算し、骨を咥えた方向に、ある大きさ以上のトルクが加わった場合に何かを咥えたと判断する。何かを咥えたと判断した場合、即座にゲインを緩め、人間の指などを怪我から守る。また、そのときの関節角度から、骨を咥えたのか、その他のものを咥えたのかを判断し、その他のものを咥えた場合は、やはり怪我の発生を防ぐためにゲインをオフする。骨を咥えたと判断した場合には、モータを保護するために、骨を咥え続けるのに適したゲインに変更する。
このため、ロボット装置1は、図37に示すような構成の咥え検出及び制御部を備える。この咥え検出及び制御部は、指令装置160と、制御装置161と、把持検出装置162とからなる。CPU10が咥え検出アルゴリズムを実行したときの機能として示すことのできる構成である。指令装置160により出された関節指令値を制御装置161及び把持検出装置162に送り、把持検出装置162からの検出結果に基づいて指令装置160が上記関節指令値を変化させる。
制御装置161は、関節指令値に基づいて駆動装置163及び把持検出装置162に制御信号を供給する。駆動装置163は、上記制御信号に応じて駆動力を発生し、動作部164を動かす。
把持検出装置162は、口部が何かを把持したことを検出すると検出結果を指令装置160に送る。指令装置160は、上記検出結果に基づいて関節指令値を生成し、制御装置161に送る。
制御装置161は、PWM duty比と口関節角速度、角加速度から口の関節に加わっている外部トルクの大きさと方向を計算する。そして、骨を咥えた方向に、ある大きさ以上のトルクが加わった場合に何かを咥えたと判断する。制御装置161は、何かを咥えたと判断した場合、即座にゲインを緩める制御信号を駆動装置163に送る。人間の指などを怪我から守るためである。また、そのときの関節角度から、骨を咥えたのか、その他のものを咥えたのかを判断し、その他のものを咥えた場合は、やはり怪我の発生を防ぐためにゲインをオフする。骨を咥えたと判断した場合には、モータを保護するために、骨を咥え続けるのに適したゲインに変更する。
図38には、咥え検出及び制御部の処理の手順を示す。咥える機構は、上記図32〜図36に示した口の構造である。つまり、上顎部154に対して下顎部151を閉じる方向に回動することにより物体を把持する。関節は、上顎部154と下顎部151との角度であり、モーターは下顎部151を回動する駆動力を生む。
先ず、制御装置161は、関節指令値、PWM信号(duty比)を受け取っている(ステップS70)。ステップS71にて上記関節指令値からリンク質量の影響、関節摩擦の影響を算出する。次に、ステップS72にてモーターモデルから理論的なPWM Duty比を算出する。この算出は、上記ステップS71において算出したリンク質量の影響、関節摩擦の影響と、ゲインを基にして行われる。
制御装置161は、ステップS73にて理論的なPWM Duty比と制御信号の差を算出する。この算出は、ステップS72にて求めた理論的なPWM Duty比と予め受け取っていた制御信号の上記PWM信号(duty比)とを用いて行う。ステップS74では、ステップS73で求めたPWM信号の差の大きさ、符号、継続時間から関節への負担を推定する。
次に、制御装置161は、ステップS75にて上記ステップS74で推定した負担を基に、物体を把持する方向に負荷があるか否かを判定する。もし、把持する方向に負荷があれば、ステップS76に進んで駆動装置163のモータゲインが所定の値よりも大きいか否かを判定する。この所定の値は、人間に害を与えないために設けられる閾値であり、痛みを与えない位の力を発生するほどの値である。モータゲインが大きいと判定すればステップS77にて人間に危害を加えないようにモーターのゲインを弱める制御信号を駆動装置163に供給する。また、モーターゲインが大きくはないと判定すれば、ステップS78に進み、上顎部154と下顎部151との関節角から目的の物体、骨を把持したかどうかを判断する。
ステップS79にて目的の物体を把持したと判断すれば、ステップS80に進み、把持しつづけてもモーターが故障しないモーターゲインに設定する。また、目的の物体を把持したと判断しなければステップS81に進んで、人間に危害を加えないようにモーターのゲインをゼロにする。ステップS82にて結果を通知して終了する。
以上に説明したように、本実施の形態のロボット装置1は、画像認識処理プログラム、骨咥え検出プログラム、咥え検出プログラムを実行することにより、専用の遊具を認識し、遊具の置かれた場所に歩いて近づき、咥えたり、咥えたまま運んだり、咥えたまま転がったりして、より豊かな生き生きとした動作を行うことができる。
次に、ロボット装置1が実行する上記各プログラムを含めたソフトウェア構成について説明する。ロボット装置1におけるソフトウェア構成は、図39に示すようになる。この図39において、デバイス・ドライバ・レイヤ30は、プログラムの最下位層に位置し、複数のデバイス・ドライバからなるデバイス・ドライバ・セット31から構成されている。この場合、各デバイス・ドライバは、CCDカメラ20(図1及び図2)やタイマ等の通常のコンピュータで用いられるハードウェアに直接アクセスすることを許されたオブジェクトであり、対応するハードウェアからの割り込みを受けて処理を行う。
また、ロボティック・サーバ・オブジェクト32は、デバイス・ドライバ・レイヤ30の上位に位置し、例えば上述の各種センサやアクチュエータ25〜25等のハードウェアにアクセスするためのインターフェースを提供するソフトウェア群でなるバーチャル・ロボット33と、電源の切換えなどを管理するソフトウェア群でなるバワーマネージャ34と、他の種々のデバイス・ドライバを管理するソフトウェア群でなるデバイス・ドライバ・マネージャ35と、ロボット装置1の機構を管理するソフトウェア群でなるデザインド・ロボット36とから構成されている。
マネージャ・オブジェクト37は、オブジェクト・マネージャ38及びサービス・マネージャ39から構成されている。オブジェクト・マネージャ38は、ロボティック・サーバ・オブジェクト32、ミドル・ウェア・レイヤ40、及びアプリケーション・レイヤ41に含まれる各ソフトウェア群の起動や終了を管理するソフトウェア群であり、サービス・マネージャ39は、メモリカード29(図2)に格納されたコネクションファイルに記述されている各オブジェクト間の接続情報に基づいて各オブジェクトの接続を管理するソフトウェア群である。
ミドル・ウェア・レイヤ40は、ロボティック・サーバ・オブジェクト32の上位層に位置し、画像処理や音声処理などのこのロボット装置1の基本的な機能を提供するソフトウェア群から構成されている。
また、アプリケーション・レイヤ41は、ミドル・ウェア・レイヤ40の上位層に位置し、当該ミドル・ウェア・レイヤ40を構成する各ソフトウェア群によって処理された処理結果に基づいてロボット装置1の行動を決定するためのソフトウェア群から構成されている。
なお、ミドル・ウェア・レイヤ40及びアプリケーション・レイヤ41の具体なソフトウェア構成をそれぞれ図40、図41に示す。
ミドル・ウェア・レイヤ40は、図40に示すように、騒音検出用、温度検出用、明るさ検出用、音階認識用、距離検出用、姿勢検出用、咥え検出用、動き検出用及び色認識用の各信号処理モジュール50〜58並びに入力セマンティクスコンバータモジュール59などを有する認識系60と、出力セマンティクスコンバータモジュール68並びに姿勢管理用、トラッキング用、モーション再生用、歩行用、転倒復帰用、ライト点灯用及び音再生用の各信号処理モジュール61〜67などを有する出力系69とから構成されている。
認識系60の各信号処理モジュール50〜58は、ロボティック・サーバ・オブジェクト32のバーチャル・ロボット33によりDRAM11(図2)から読み出される各センサデータや画像データ及び音声データのうちの対応するデータを取り込み、当該データに基づいて所定の処理を施して、処理結果を入力セマンティクスコンバータモジュール59に与える。ここで、例えば、バーチャル・ロボット33は、所定の通信規約によって、信号の授受或いは変換をする部分として構成されている。
特に、咥え検出用モジュール56は、上記図37を参照して説明したように、何かを咥えたと判断した場合、即座にゲインを緩める。人間の指などを怪我から守るためである。また、そのときの関節角度から、骨を咥えたのか、その他のものを咥えたのかを判断し、その他のものを咥えた場合は、やはり怪我の発生を防ぐためにゲインをオフする。骨を咥えたと判断した場合には、モータを保護するために、骨を咥え続けるのに適したゲインに変更する。
入力セマンティクスコンバータモジュール59は、これら各信号処理モジュール50〜58から与えられる処理結果に基づいて、「うるさい」、「暑い」、「明るい」、「ボールを検出した」、「転倒を検出した」、「撫でられた」、「叩かれた」、「ドミソの音階が聞こえた」、「動く物体を検出した」、「障害物を検出した」又は「物体を咥えた」などの自己及び周囲の状況(内部状況及び外部状況)や、使用者からの指令及び働きかけを認識し、認識結果をアプリケーション・レイヤ41(図40)に出力する。
アプリケーション・レイヤ4lは、図41に示すように、行動モデルライブラリ70、行動切換モジュール71、学習モジュール72、感情モデル73及び本能モデル74の5つのモジュールから構成されている。
行動モデルライブラリ70には、図42に示すように、「バッテリ残量が少なくなった場合」、「転倒復帰する」、「障害物を回避する場合」、「感情を表現する場合」、「ボールを検出した場合」、「横置きの骨を咥える」、「縦置きの骨を咥える」、「縦置きの骨を頭で倒す」などの予め選択されたいくつかの条件項目にそれぞれ対応させて、それぞれ独立した行動モデル70〜70が設けられている。
そして、これら行動モデル70〜70は、それぞれ入力セマンティクスコンバータモジュール59から認識結果が与えられたときや、最後の認識結果が与えられてから一定時間が経過したときなどに、必要に応じて後述のように感情モデル73に保持されている対応する情動のパラメータ値や、本能モデル74に保持されている対応する欲求のパラメータ値を参照しながら続く行動をそれぞれ決定し、決定結果を行動切換モジュール71に出力する。
なお、この実施の形態の場合、各行動モデル70〜70は、次の行動を決定する手法として、図43に示すような1つのノード(状態)NODE〜NODEから他のどのノードNODE〜NODEに遷移するかを各ノードNODE〜NODEに間を接続するアークARC〜ARCに対してそれぞれ設定された遷移確率P〜Pに基づいて確率的に決定する有限確率オートマトンと呼ばれるアルゴリズムを用いる。
具体的に、各行動モデル70〜70は、それぞれ自己の行動モデル70〜70を形成するノードNODE〜NODEにそれぞれ対応させて、これらノードNODE〜NODEごとに図44に示すような状態遷移表80を有している。
この状態遷移表80では、そのノードNODE〜NODEにおいて遷移条件とする入力イベント(認識結果)が「入力イベント名」の列に優先順に列記され、その遷移条件についてのさらなる条件が「データ名」及び「データ範囲」の列における対応する行に記述されている。
したがって、図44の状態遷移表80で表されるノードNODE100では、「ボールを検出(BALL)」という認識結果が与えられた場合に、当該認識結果と共に与えられるそのボールの「大きさ(SIZE)」が「0から1000」の範囲であることや、「障害物を検出(OBSTACLE)」という認識結果が与えられた場合に、当該認識結果と共に与えられるその障害物までの「距離(DISTANCE)」が「0から100」の範囲であることが他のノードに遷移するための条件となっている。もちろん、「骨を検出」、「ピンクを検出」、或いは「物体を咥えたことを検出」という認識結果が与えられた場合に、当該認識結果と共に与えられる「距離」、「面積」、「ゲイン」が所定範囲であることが他のノードに遷移するための条件となっている。
また、このノードNODE100では、認識結果の入力がない場合においても、行動モデル70〜70が周期的に参照する感情モデル73及び本能モデル74にそれぞれ保持された各情動及び各欲求のパラメータ値のうち、感情モデル73に保持された「喜び(JOY)」、「驚き(SURPRISE)」若しくは「悲しみ(SUDNESS)」のいずれかのパラメータ値が「50から100」の範囲であるときには他のノードに遷移することができるようになっている。
また、状態遷移表80では、「他のノードヘの遷移確率」の欄における「遷移先ノード」の行にそのノードNODE〜 NODEから遷移できるノード名が列記されていると共に、「入力イベント名」、「データ値」及び「データの範囲」の列に記述された全ての条件が揃ったときに遷移できる他の各ノードNODE〜NODEへの遷移確率が「他のノードヘの遷移確率」の欄内の対応する箇所にそれぞれ記述され、そのノードNODE〜NODEに遷移する際に出力すべき行動が「他のノードヘの遷移確率」の欄における「出力行動」の行に記述されている。なお、「他のノードヘの遷移確率」の欄における各行の確率の和は100[%]となっている。
したがって、図44の状態遷移表80で表されるノードNODE100では、例えば「ボールを検出(BALL)」し、そのボールの「SIZE(大きさ)」が「0から1000」の範囲であるという認識結果が与えられた場合には、「30[%]」の確率で「ノードNODE120(node 120)」に遷移でき、そのとき「ACTION1」の行動が出力されることとなる。
各行動モデル70〜70は、それぞれこのような状態遷移表80として記述されたノードNODE〜 NODEがいくつも繋がるようにして構成されており、入力セマンティクスコンバータモジュール59から認識結果が与えられたときなどに、対応するノードNODE〜NODEの状態遷移表を利用して確率的に次の行動を決定し、決定結果を行動切換モジュール71に出力するようになされている。
図42に示す行動切換モジュール71は、行動モデルライブラリ70の各行動モデル70〜70からそれぞれ出力される行動のうち、予め定められた優先順位の高い行動モデル70〜70から出力された行動を選択し、当該行動を実行すべき旨のコマンド(以下、これを行動コマンドという。)をミドル・ウェア・レイヤ40の出力セマンティクスコンバータモジュール68に送出する。なお、この実施の形態においては、図42において下側に表記された行動モデル70〜70ほど優先順位が高く設定されている。
また、行動切換モジュール71は、行動完了後に出力セマンティクスコンバータモジュール68から与えられる行動完了情報に基づいて、その行動が完了したことを学習モジュール72、感情モデル73及び本能モデル74に通知する。
一方、学習モジュール72は、入力セマンティクスコンバータモジュール59から与えられる認識結果のうち、「叩かれた」や「撫でられた」など、使用者からの働きかけとして受けた教示の認識結果を入力する。
そして、学習モジュール72は、この認識結果及び行動切換モジュール71からの通知に基づいて、「叩かれた(叱られた)」ときにはその行動の発現確率を低下させ、「撫でられた(誉められた)」ときにはその行動の発現確率を上昇させるように、行動モデルライブラリ70における対応する行動モデル70〜70の対応する遷移確率を変更する。
他方、感情モデル73は、「喜び(joy)」、「悲しみ(sadness)」、「怒り(anger)」、「驚き(surprise)」、「嫌悪(disgust)」及び「恐れ(fear)」の合計6つの情動について、各情動ごとにその情動の強さを表すパラメータを保持している。そして、感情モデル73は、これら各情動のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール59から与えられる「叩かれた」及び「撫でられた」などの特定の認識結果と、経過時間及び行動切換モジュール71からの通知などに基づいて周期的に更新する。
具体的には、感情モデル73は、入力セマンティクスコンバータモジュール59から与えられる認識結果と、そのときのロボット装置1の行動と、前回更新してからの経過時間などに基づいて所定の演算式により算出されるそのときのその情動の変動量を△E[t]、現在のその情動のパラメータ値をE[t]、その情動の感度を表す係数をkとして、下記(2)式によって次の周期におけるその情動のパラメータ値E[t+1]を算出し、これを現在のその情動のパラメータ値E[t]と置き換えるようにしてその情動のパラメータ値を更新する。また、感情モデル73は、これと同様にして全ての情動のパラメータ値を更新する。
E[t+1]=E[t]+ke×ΔE[t] ・・・(2)
なお、各認識結果や出力セマンティクスコンバータモジュール68からの通知が各情動のパラメータ値の変動量△E[t]にどの程度の影響を与えるかは予め決められており、例えば「叩かれた」といった認識結果は「怒り」の情動のパラメータ値の変動量△E[t]に大きな影響を与え、「撫でられた」といった認識結果は「喜び」の情動のパラメータ値の変動量△E[t]に大きな影響を与えるようになっている。
ここで、出力セマンティクスコンバータモジュール68からの通知とは、いわゆる行動のフィードバック情報(行動完了情報)であり、行動の出現結果の情報であり、感情モデル73は、このような情報によっても感情を変化させる。これは、例えば、「吠える」といった行動により怒りの感情レベルが下がるといったようなことである。なお、出力セマンティクスコンバータモジュール68からの通知は、上述した学習モジュール72にも入力されており、学習モジュール72は、その通知に基づいて行動モデル70〜70の対応する遷移確率を変更する。
なお、行動結果のフィードバックは、行動切換モジュレータ71の出力(感情が付加された行動)によりなされるものであってもよい。
一方、本能モデル74は、「運動欲(exercise)」、「愛情欲(affection)」、「食欲(appetite)」及び「好奇心(curiosity)」の互いに独立した4つの欲求について、これら欲求ごとにその欲求の強さを表すパラメータを保持している。そして、本能モデル74は、これらの欲求のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール59から与えられる認識結果や、経過時間及び行動切換モジュール71からの通知などに基づいて周期的に更新する。
具体的には、本能モデル74は、「運動欲」、「愛情欲」及び「好奇心」については、認識結果、経過時間及び出力セマンティクスコンバータモジュール68からの通知などに基づいて所定の演算式により算出されるそのときのその欲求の変動量をΔI[k]、現在のその欲求のパラメータ値をI[k]、その欲求の感度を表す係数kとして、所定周期で(3)式を用いて次の周期におけるその欲求のパラメータ値I[k+1]を算出し、この演算結果を現在のその欲求のパラメータ値I[k]と置き換えるようにしてその欲求のパラメータ値を更新する。また、本能モデル74は、これと同様にして「食欲」を除く各欲求のパラメータ値を更新する。
I[k+1]=I[k]+ki×ΔI[k] ・・・(3)
なお、認識結果及び出力セマンティクスコンバータモジュール68からの通知などが各欲求のパラメータ値の変動量△I[k]にどの程度の影響を与えるかは予め決められており、例えば出力セマンティクスコンバータモジュール68からの通知は、「疲れ」のパラメータ値の変動量△I[k]に大きな影響を与えるようになっている。
なお、このロボット装置1においては、各情動及び各欲求(本能)のパラメータ値がそれぞれ0から100までの範囲で変動するように規制されており、また係数k、kの値も各情動及び各欲求ごとに個別に設定されている。
一方、ミドル・ウェア・レイヤ40の出力セマンティクスコンバータモジュール68は、図40に示すように、上述のようにしてアプリケーション・レイヤ41の行動切換モジュール71から与えられる「前進」、「喜ぶ」、「鳴く」又は「トラッキング(ボールを追いかける)」といった抽象的な行動コマンドを出力系69の対応する信号処理モジュール61〜67に与える。
そしてこれら信号処理モジュール61〜67は、行動コマンドが与えられると当該行動コマンドに基づいて、その行動を行うために対応するアクチュエータ25〜25(図2)に与えるべきサーボ指令値や、スピーカ24(図2)から出力する音の音声データ及び又は「目」のLEDに与える駆動データを生成し、これらのデータをロボティック・サーバ・オブジェクト32のバーチャル・ロボット33及び信号処理回路14(図2)を順次介して対応するアクチュエータ25〜25又はスピーカ24又はLEDに順次送出する。
以上に説明した、ミドル・ウェア・レイヤ40と、アプリケーション・レイヤ41と、バーチャルロボット33により、本発明で用いた画像認識処理、制御処理、咥え検出処理が構築される。
ミドル・ウェア・レイヤ40内の認識系60の騒音検出用、温度検出用、明るさ検出用、音階認識用、距離検出用、姿勢検出用、咥え検出用、動き検出用及び色認識用の各信号処理モジュール50〜58は、処理結果を入力セマンティクスコンバータモジュール59に与える。
入力セマンティクスコンバータモジュール59は、これら各信号処理モジュール50〜58から与えられる処理結果に基づいて、「うるさい」、「暑い」、「明るい」、「ボールを検出した」、「転倒を検出した」、「撫でられた」、「叩かれた」、「ドミソの音階が聞こえた」、「動く物体を検出した」、「障害物を検出した」又は「物体を咥えた」などの自己及び周囲の状況(内部状況及び外部状況)や、使用者からの指令及び働きかけを認識し、認識結果をアプリケーション・レイヤ41(図40)に出力する。
アプリケーション・レイヤ41の行動モデルライブラリ70、行動切換モジュール71、学習モジュール72、感情モデル73及び本能モデル74の5つのモジュールは、行動制御システム100の行動選択部101に相当する。
特に、行動モデルライブラリ70は、入力セマンティクスコンバータモジュール59から認識結果が与えられたときに、必要に応じて感情モデル73に保持されている対応する情動のパラメータ値や、本能モデル74に保持されている対応する欲求のパラメータ値を参照しながら続く行動をそれぞれ決定し、決定結果を行動切換モジュール71に出力する。具体的に、各行動モデル70〜70は、入力セマンティクスコンバータモジュール59から認識結果が与えられたときなどに、対応するノードNODE〜NODEの状態遷移表を利用して確率的に次の行動を決定し、決定結果を行動切換モジュール71に出力する。
例えば、上記画像認識処理によって骨を識別した後には、骨の配置された場所まで歩いていくが、その際に喜びを表現したり、歩く速さを変えたりする。また、上記骨咥え制御アルゴリズムと、咥え検出アルゴリズムに基づいて骨を咥えた後に、上記図31に示したように、転がったり万歳をしたり、咥えた骨を足で触ったりする行動を決定する。
ロボット装置の外観斜視図である。 ロボット装置の回路構成を示すブロック図である。 遊具(骨)の外観図である。 円形度を説明するための図である。 遊具(骨)の実画像とピンクカラーテーブル領域演算結果を示す図である。 円形度による識別を説明するための図である。 ボールの実画像とピンクカラーテーブル領域演算結果を示す図である。 遊具(骨)の側面部と咥え部分の実画像とピンクカラーテーブル領域演算結果を示す図である。 補填処理と膨張処理を説明するための図である。 骨、ボール、ピンクの画像認識処理手順の全体を示すフローチャートの一部のフローチャートである。 骨、ボール、ピンクの画像認識処理手順の全体を示すフローチャートの残部のフローチャートである。 骨、ボール、ピンクの各ラベル処理手順の一部を示すフローチャートである。 骨、ボール、ピンクの各ラベル処理手順の残部を示すフローチャートである。 骨スティック詳細処理手順を示すフローチャートである。 無所属地帯1詳細処理手順の一部を示すフローチャートである。 無所属地帯1詳細処理手順の残部を示すフローチャートである。 骨側面詳細処理手順を示すフローチャートである。 無所属地帯2詳細処理手順の一部を示すフローチャートである。 無所属地帯2詳細処理手順の残部を示すフローチャートである。 ボール詳細処理手順を示すフローチャートである。 例外詳細処理手順を示すフローチャートである。 骨の全体の実画像と画像処理結果を示す図である。 骨の咥え部分の実画像と画像処理結果を示す図である。 縦置きの骨の実画像と画像処理結果を示す図である。 ボールの実画像と画像処理結果を示す図である。 骨とボールの実画像と画像処理結果を示す図である。 骨咥え制御アルゴリズムの処理手順の一部を示すフローチャートである。 骨咥え制御アルゴリズムの処理手順の残部を示すフローチャートである。 横置きの骨を咥えるロボット装置のインタラクション例を示す図である。 縦置きの骨を咥えるロボット装置のインタラクション例を示す図である。 ロボット装置の他のインタラクション例を示す図である。 ロボット装置の骨を咥えるための口(顎)の構造を説明するための側面図である。 ロボット装置の骨を咥えるための口(顎)の構造を説明するための正面図である。 ロボット装置の骨を咥えるための口(顎)の構造を説明するための斜視図である。 ロボット装置の骨を咥えるための口(顎)の要部を説明するための側面図である。 ロボット装置の骨を咥えるための口(顎)の要部を説明するための側面図である。 咥え検出及び制御部のブロック構成図である。 咥え検出及び制御部の処理の手順を示すフローチャートである。 ロボット装置のソフトウェア構成を示すブロック図である。 ロボット装置のソフトウェア構成におけるミドル・ウェア・レイヤの構成を示すブロック図である。 ロボット装置のソフトウェア構成におけるアプリケーション・レイヤの構成を示すブロック図である。 アプリケーション・レイヤの行動モデルライブラリの構成を示すブロック図である。 ロボット装置の行動決定のための情報となる有限確率オートマトンを説明するために使用した図である。 有限確率オートマトンの各ノードに用意された状態遷移表を示す図である。
符号の説明
1 ロボット装置、2 胴体部、4 頭部、10 CPU、14 信号処理回路、20 CCDカメラ、200 遊具、201 側面部、203 咥え部分

Claims (13)

  1. 外部環境に基づいて自律的に行動するロボット装置であって、
    所定のパターンで歩行可能な複数の脚部からなる移動手段と、
    外部環境内における被写体を撮像する画像撮像手段と、
    上記画像撮像手段によって撮像された被写体の画像データに含まれる特定色の領域に基づいてラベルを付すラベリング手段と、
    上記付されたラベルの円形度を計算する計算手段と、
    上記計算手段によって計算された円形度によって上記被写体中の遊具の骨スティック部及び骨側面を区別する判別手段と、
    上記判別手段によって区別された上記遊具を画像データの中心に保って上記移動手段によって上記遊具に近づくトラッキング手段と、
    遊具を咥えるための窪みが形成された下顎部と、この下顎部に対して移動する上顎部からなる口部と、
    上記口部と上記遊具との距離を判定する距離判定手段と、
    上記遊具の水平方向が上記口部の正面にあるか否かを判定する方向判定手段を備え、
    上記判別手段によって遊具の骨スティック部及び骨側面を判別したときは、上記トラッキング手段によって上記遊具に近づき、上記距離判定手段によって遊具までの距離が口部によって咥えられるほど近いと判定した場合であって上記方向判定手段によって上記遊具の水平方向が上記口部の正面にあると判定した場合は、上記口部を用いて上記遊具の上記骨スティック部を咥えること
    を特徴とするロボット装置。
  2. 上記口部の下顎部の窪みに、当該窪みを除いた下顎部よりも摩擦係数の高い材料を用いて、咥えた遊具を保持する構造とすることを特徴とする請求項1記載のロボット装置。
  3. 上記口部によって遊具を咥えたことを検出する咥え検出アルゴリズムを実行する制御手段を備え、上記上顎部と上記下顎部との関節に対する負荷を推定し、推定した上記負荷が上記遊具を把持する方向にあるときには上記下顎部を動かすアクチュエータのゲインを調整することを特徴とする請求項1記載のロボット装置。
  4. 上記制御手段は、上記アクチュエータのゲインが所定の値よりも大きいと判定したときには、アクチュエータのゲインを下げることを特徴とする請求項3記載のロボット装置。
  5. 上記制御手段は、上記上顎部と上記下顎部との関節角度から上記口部が目的の物体を把持したか否かを判断することを特徴とする請求項4記載のロボット装置。
  6. 上記方向判定手段によって上記遊具が縦に直立していると判定した場合は、上記移動手段によって遊具に接触して遊具を倒すことを特徴とする請求項1記載のロボット装置。
  7. さらに上記遊具が上記ロボット装置の歩行面と同じ高さに置かれているか否かを判定する高さ判定手段を備え、上記遊具が上記ロボット装置の歩行面と同じ高さに置いてないと判定した場合は待機することを特徴とする請求項1記載のロボット装置。
  8. 外部環境に基づいて自律的に行動するロボット装置の制御方法であって、
    所定のパターンで歩行可能な複数の脚部からなる移動手段による移動工程と、
    外部環境内における被写体を撮像する画像撮像工程と、
    上記画像撮像工程によって撮像された被写体の画像データに含まれる特定色の領域に基づいてラベルを付すラベリング工程と、
    上記付されたラベルの円形度を計算する計算工程と、
    上記計算工程によって計算された円形度によって上記被写体中の遊具の骨スティック部及び骨側面を区別する判別工程と、
    上記判別工程によって区別された上記遊具を画像データの中心に保って上記移動工程によって上記遊具に近づくトラッキング工程と、
    遊具を咥えるための窪みが形成された下顎部と、この下顎部に対して移動する上顎部からなる口部と上記遊具との距離を判定する距離判定工程と、
    上記遊具の水平方向が上記口部の正面にあるか否かを判定する方向判定工程を備え、
    上記判別工程によって遊具の骨スティック部及び骨側面を判別したときは、上記トラッキング工程によって上記遊具に近づき、上記距離判定工程によって遊具までの距離が口部によって咥えられるほど近いと判定した場合であって上記方向判定工程によって上記遊具の水平方向が上記口部の正面にあると判定した場合は、上記口部を用いて上記遊具の上記骨スティック部を咥えること
    を特徴とするロボット装置の制御方法。
  9. 上記口部によって遊具を咥えたことを検出する咥え検出アルゴリズムを実行する制御工程をさらに備え、上記上顎部と上記下顎部との関節に対する負荷を推定し、推定した上記負荷が上記遊具を把持する方向にあるときには上記下顎部を動かすアクチュエータのゲインを調整することを特徴とする請求項8記載のロボット装置の制御方法。
  10. 上記制御工程は、上記アクチュエータのゲインが所定の値よりも大きいと判定したときには、アクチュエータのゲインを下げることを特徴とする請求項9記載のロボット装置の制御方法。
  11. 上記制御工程は、上記上顎部と上記下顎部との関節角度から上記口部が目的の物体を把持したか否かを判断することを特徴とする請求項10記載のロボット装置の制御方法。
  12. 上記方向判定工程によって上記遊具が縦に直立していると判定した場合は、上記移動工程によって遊具に接触して遊具を倒すことを特徴とする請求項8記載のロボット装置の制御方法。
  13. さらに上記遊具が上記ロボット装置の歩行面と同じ高さに置かれているか否かを判定する高さ判定工程を備え、上記遊具が上記ロボット装置の歩行面と同じ高さに置いてないと判定した場合は待機することを特徴とする請求項8記載のロボット装置の制御方法。
JP2003305308A 2003-08-28 2003-08-28 ロボット装置及びロボット装置の制御方法ロボット装置 Expired - Fee Related JP3963162B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2003305308A JP3963162B2 (ja) 2003-08-28 2003-08-28 ロボット装置及びロボット装置の制御方法ロボット装置
US10/919,315 US6952629B2 (en) 2003-08-28 2004-08-17 Robot apparatus, control method for robot apparatus, and toy for robot apparatus
CNA2004100579523A CN1590038A (zh) 2003-08-28 2004-08-27 机器人设备、机器人设备的控制方法和机器人设备用玩具
US11/081,540 US7058476B2 (en) 2003-08-28 2005-03-17 Robot apparatus, control method for robot apparatus, and toy for robot apparatus
US11/081,547 US7062356B2 (en) 2003-08-28 2005-03-17 Robot apparatus, control method for robot apparatus, and toy for robot apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003305308A JP3963162B2 (ja) 2003-08-28 2003-08-28 ロボット装置及びロボット装置の制御方法ロボット装置

Publications (2)

Publication Number Publication Date
JP2005074538A JP2005074538A (ja) 2005-03-24
JP3963162B2 true JP3963162B2 (ja) 2007-08-22

Family

ID=34214054

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003305308A Expired - Fee Related JP3963162B2 (ja) 2003-08-28 2003-08-28 ロボット装置及びロボット装置の制御方法ロボット装置

Country Status (3)

Country Link
US (3) US6952629B2 (ja)
JP (1) JP3963162B2 (ja)
CN (1) CN1590038A (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0969802B1 (de) * 1997-03-25 2002-05-29 Beiersdorf Aktiengesellschaft Emulgatorfreie feindisperse systeme vom typ wasser-in-öl
JP3963162B2 (ja) * 2003-08-28 2007-08-22 ソニー株式会社 ロボット装置及びロボット装置の制御方法ロボット装置
US7247783B2 (en) * 2005-01-22 2007-07-24 Richard Grossman Cooperative musical instrument
JP4456561B2 (ja) 2005-12-12 2010-04-28 本田技研工業株式会社 自律移動ロボット
CN101219284A (zh) * 2007-01-08 2008-07-16 鸿富锦精密工业(深圳)有限公司 仿生类装置
KR101337534B1 (ko) * 2007-07-24 2013-12-06 삼성전자주식회사 이동 로봇의 위치 인식 장치 및 방법
US8414350B2 (en) * 2008-08-18 2013-04-09 Rehco, Llc Figure with controlled motorized movements
US8057275B2 (en) * 2008-09-23 2011-11-15 Hasbro, Inc. Toy with pivoting portions capable of rolling over and methods thereof
KR101686170B1 (ko) * 2010-02-05 2016-12-13 삼성전자주식회사 주행 경로 계획 장치 및 방법
US8188390B1 (en) 2010-03-24 2012-05-29 Hasbro, Inc. Electromechanical toy with momentary actuator dual purpose cam mechanism preserving battery life
US8265792B2 (en) * 2010-04-15 2012-09-11 GM Global Technology Operations LLC Method and apparatus for calibrating multi-axis load cells in a dexterous robot
CN103177174A (zh) * 2011-12-26 2013-06-26 原相科技股份有限公司 互动式电子装置
EP3450118A4 (en) * 2016-04-28 2019-04-10 Fujitsu Limited ROBOT
CN106078752B (zh) * 2016-06-27 2019-03-19 西安电子科技大学 一种基于Kinect的仿人机器人人体行为模仿方法
EP3551395A4 (en) * 2017-04-06 2020-08-05 Hewlett-Packard Development Company, L.P. ROBOT
CN108733037B (zh) * 2017-04-17 2021-03-16 哈工大机器人集团股份有限公司 一种扫地机器人的可避让清扫方法
CN109510753A (zh) * 2017-09-15 2019-03-22 上海挖数互联网科技有限公司 Ip机器人群组的构建方法、交互响应方法和装置、存储介质、服务器
USD848552S1 (en) * 2017-10-06 2019-05-14 Kma Concepts Limited Posable toy horse
USD848550S1 (en) * 2017-10-06 2019-05-14 Kma Concepts Limited Posable toy bulldog
USD848549S1 (en) * 2017-10-06 2019-05-14 Kma Concepts Limited Posable toy dog
US10635102B2 (en) * 2017-10-17 2020-04-28 Steering Solutions Ip Holding Corporation Driver re-engagement assessment system for an autonomous vehicle
US10754318B2 (en) * 2017-12-21 2020-08-25 X Development Llc Robot interaction with objects based on semantic information associated with embedding spaces
US11097418B2 (en) 2018-01-04 2021-08-24 X Development Llc Grasping of an object by a robot based on grasp strategy determined using machine learning model(s)
CN108818515A (zh) * 2018-08-16 2018-11-16 邢明的 一种多功能警犬机器人
JP2020064385A (ja) * 2018-10-16 2020-04-23 ソニー株式会社 情報処理装置、情報処理方法および情報処理プログラム
CN111194702A (zh) * 2018-11-20 2020-05-26 广州佳可电子科技有限公司 一种低功耗智能宠物陪伴机器人
CN110026995B (zh) * 2019-04-22 2022-05-27 扬州哈工科创机器人研究院有限公司 一种仿真机器人的头部结构
CN112265592A (zh) * 2020-10-29 2021-01-26 德鲁动力科技(海南)有限公司 足式机器人的头部电路
CN113485405A (zh) * 2021-08-05 2021-10-08 Oppo广东移动通信有限公司 姿态获取方法、机器人和可读存储介质
USD1030917S1 (en) * 2022-07-15 2024-06-11 Shenzhen Tbz Technology Co., Ltd. Artificial intelligence robot dog

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS606555U (ja) * 1983-06-23 1985-01-17 株式会社 国際武道具商会 腕立て伏せ運動補助具
JPH11126017A (ja) * 1997-08-22 1999-05-11 Sony Corp 記憶媒体、ロボット、情報処理装置、並びに電子ペットシステム
JP2001157984A (ja) * 1999-11-30 2001-06-12 Sony Corp ロボット装置及びロボット装置の動作制御方法
US6773344B1 (en) * 2000-03-16 2004-08-10 Creator Ltd. Methods and apparatus for integration of interactive toys with interactive television and cellular communication systems
JP2002036158A (ja) * 2000-07-27 2002-02-05 Yamaha Motor Co Ltd 自律機能を有する電子機器
JP3918143B2 (ja) * 2000-12-28 2007-05-23 独立行政法人科学技術振興機構 植物認識システム
JP2003205483A (ja) * 2001-11-07 2003-07-22 Sony Corp ロボットシステム及びロボット装置の制御方法
US7180050B2 (en) * 2002-04-25 2007-02-20 Matsushita Electric Industrial Co., Ltd. Object detection device, object detection server, and object detection method
JP2003340759A (ja) * 2002-05-20 2003-12-02 Sony Corp ロボット装置およびロボット制御方法、記録媒体、並びにプログラム
WO2004023451A1 (en) * 2002-09-09 2004-03-18 Ingeeni Studios, Inc. Artificial intelligence platform
JP3963162B2 (ja) * 2003-08-28 2007-08-22 ソニー株式会社 ロボット装置及びロボット装置の制御方法ロボット装置

Also Published As

Publication number Publication date
US20050049752A1 (en) 2005-03-03
JP2005074538A (ja) 2005-03-24
US6952629B2 (en) 2005-10-04
US7058476B2 (en) 2006-06-06
US20050182520A1 (en) 2005-08-18
US7062356B2 (en) 2006-06-13
CN1590038A (zh) 2005-03-09
US20050182519A1 (en) 2005-08-18

Similar Documents

Publication Publication Date Title
JP3963162B2 (ja) ロボット装置及びロボット装置の制御方法ロボット装置
US7117190B2 (en) Robot apparatus, control method thereof, and method for judging character of robot apparatus
EP1151779B1 (en) Robot and action deciding method for robot
CN100445046C (zh) 机器人装置及其行为控制方法
US6889117B2 (en) Robot apparatus and method and system for controlling the action of the robot apparatus
JP7400923B2 (ja) 情報処理装置および情報処理方法
JP4086024B2 (ja) ロボット装置及びその行動制御方法
JP4239635B2 (ja) ロボット装置、その動作制御方法、及びプログラム
JP2001191276A (ja) ロボットシステム、ロボット装置及びその外装
JP2003039363A (ja) ロボット装置、ロボット装置の行動学習方法、ロボット装置の行動学習プログラム、及びプログラム記録媒体
JP3558222B2 (ja) ロボットの行動制御システム及び行動制御方法、並びにロボット装置
JP2003159674A (ja) ロボット装置、ロボット装置の外力検出方法及びロボット装置の外力検出プログラム、並びにロボット装置の外力検出のためのキャリブレーション方法及びロボット装置の外力検出のためのキャリブレーションプログラム
JPWO2019235067A1 (ja) 情報処理装置、情報処理システム、プログラム、及び情報処理方法
JP2004298975A (ja) ロボット装置、障害物探索方法
JP2004130427A (ja) ロボット装置及びロボット装置の動作制御方法
JP2004302645A (ja) 顔登録装置、顔登録方法、記録媒体、及びロボット装置
JP4379052B2 (ja) 動体検出装置、動体検出方法、及びロボット装置
JP2001154707A (ja) ロボット装置及びその制御方法
JP2001157983A (ja) ロボット装置及びロボット装置の性格判別方法
JP2001157979A (ja) ロボット装置及びその制御方法
JP2003266364A (ja) ロボット装置
JP2003266352A (ja) ロボット装置及びロボット装置の制御方法
JP3501123B2 (ja) ロボット装置及びロボット装置の行動制御方法
JP2004298976A (ja) ロボット装置及びロボット装置の認識制御方法
JP2004229003A (ja) ロボット装置、撮像方向切換方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060814

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070402

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070501

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070514

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100601

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110601

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120601

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees