コミュニケーションロボット
【課題】より生物らしい反応行動を実行するロボットを提供する。
【解決手段】ロボットとそのロボットおよび協働する人間の各部位の3次元位置座標に基づいて、人間が一定距離以内にロボットに接近しているかどうか判断したとき、ステップS45で、人間の手とロボットの各タッチセンサとの間の距離Dlh(n),Drh(n)を検出し、その距離が所定の接近距離L以内でかつ最も小さいロボットの部位(タッチセンサ)Tlh,Trhを検出する。Tlh,Trhが両方とも「0」でないときには、CPUは、人間の視線方向に基づいて推定接触部位Teを特定または推定する。ただし、視線方向と推定接触部位とが一致しないときには、距離Dlh(n)およびDrh(n)の小さい方を推定接触部位Teとして特定する。
【解決手段】ロボットとそのロボットおよび協働する人間の各部位の3次元位置座標に基づいて、人間が一定距離以内にロボットに接近しているかどうか判断したとき、ステップS45で、人間の手とロボットの各タッチセンサとの間の距離Dlh(n),Drh(n)を検出し、その距離が所定の接近距離L以内でかつ最も小さいロボットの部位(タッチセンサ)Tlh,Trhを検出する。Tlh,Trhが両方とも「0」でないときには、CPUは、人間の視線方向に基づいて推定接触部位Teを特定または推定する。ただし、視線方向と推定接触部位とが一致しないときには、距離Dlh(n)およびDrh(n)の小さい方を推定接触部位Teとして特定する。
【発明の詳細な説明】
【技術分野】
【0001】
この発明はコミュニケーションロボットに関し、特にたとえば、タッチセンサを備え、人間の触行動に反応する、コミュニケーションロボットに関する。
【背景技術】
【0002】
この種のコミュニケーションロボット(人とコミュニケーションを行うことができるロボット)の一例が、特許文献1に開示される。
【特許文献1】特開2002−355783[B25J 13/00 A63H 3/33 11/00 B25J 5/00]
【発明の開示】
【発明が解決しようとする課題】
【0003】
特許文献1におけるコミュニケーションロボットでは、人がタッチセンサに触れると、その人間の触行動に反応して、触行動を知覚したことを人間に知らせ、それによって人間とのコミュニケーションの一層の円滑化を図っている。
【0004】
他方、人間に限らず他の動物でも同様であるが、他人が実際にタッチする前に、何らかの手段で、そのことを事前に察知し、その触行動を回避したり、あるいはそれに迎合する反応行動をすることがある。しかしながら、特許文献1の従来技術では、コミュニケーションロボットは人間が実際にロボットにタッチするまでは触行動を検知することはできず、その意味では、「生物らしさ」をやや欠いているといわざるを得ない。
【0005】
それゆえに、この発明の主たる目的は、新規な、コミュニケーションロボットシステムを提供することである。
【0006】
この発明の他の目的は、より生物らしい反応が可能な、コミュニケーションロボットシステムを提供することである。
【課題を解決するための手段】
【0007】
請求項1の発明は、人間による触行動を検知するコミュニケーションロボットであって、人間が所定範囲内に存在するかどうか検出する存在検出手段、および存在検出手段によって人間が所定範囲内に存在することを検出したとき、人間の手が所定距離以内に接近している部位を推定接触部位として特定する第1特定手段を備える、コミュニケーションロボットシステムである。
【0008】
請求項1の発明では、コミュニケーションロボット(実施例で対応または相当する部分を例示する参照符号は「10」。以下同様。)は、CPU(50)を含み、このCPUは、存在検出手段として働き、たとえばモーションキャプチャ(76)からのロボットおよび人間のそれぞれの部位の三次元座標に基づいて、人間がロボットから所定範囲内に存在するかどうか判断する。具体的には、CPUは、人間が、その人間の手の長さを基準とした所定距離の範囲に存在するかどうか判断する(S37,S39)。CPUはまた、第1特定手段として機能し、人間が所定範囲内に存在すると判断したとき、人間の手が所定距離以内に接近している部位があるかどうか判断し、そのような部位があれば、その部位を推定接触部位として特定する(S49-S59))。
【0009】
請求項1の発明によれば、人間が実際にタッチしなくても、人間の触行動を検知することができ、より生物らしい、コミュニケーションロボットが得られる。
【0010】
請求項2の発明は、第1特定手段は、人間の手が所定距離以内に接近している部位が複数あるかどうか判断する第1判断手段を含み、第1判断手段で人間の手が所定距離以内に接近している部位が複数あることを検出したとき所定条件を満たしている1つの部位を推定接触部位として特定する、請求項1記載のコミュニケーションロボットである。
【0011】
請求項2の発明では、CPUはまた、第1判断手段として機能し、人間の手が所定距離以内に接近している部位が複数あるかどうか判断する(S49)。そして、第1特定手段は、第1判断手段で人間の手が所定距離以内に接近している部位が複数あることを検出したとき所定条件を満たす部位を推定接触部位として特定する(S57)。
【0012】
請求項2の発明によれば、人間の手が接近した部位が複数存在しても、そのどれか1つを推定接触部位として特定できるので、触行動に対する反応行動を生起する場合でも、正しい反応行動を生起させることができる。
【0013】
請求項3の発明は、所定条件は前記人間の視線が向いているかどうかである、請求項2記載のコミュニケーションロボットである。
【0014】
請求項3の発明では、CPUは、たとえば人間の視線ベクトルを計算することによって、人間の視線が向く方向を推定し、その視線が向けられた部位が、人間が接触しようとしている部位であるとして特定する(S51)ので、人間が関心を持っている部位を正しく推定接触部位として特定することができる。
【0015】
請求項4の発明は、第1特定手段は、人間の手が所定距離以内に接近している部位が1つだけのときには当該部位を推定接触部位として特定する、請求項2または3記載のコミュニケーションロボットである。
【0016】
請求項4の発明では、CPUは、人間の手が所定距離以内に接近している部位が1つだけのときには、その部位を推定接触部位として特定する(S55)。
【0017】
請求項5の発明は、第1特定手段が特定した推定接触部位に応じて反応行動を生起させる反応行動生起所定手段をさらに備える、請求項1ないし4のいずれかに記載のコミュニケーションロボットである。
【0018】
請求項5の発明では、CPUは、また反応行動生起手段として機能し、反応行動生起手段は、推定接触部位に応じて異なる反応行動(表1)を生起する(S7)。したがって、人間が実際にタッチしなくても推定接触部位に応じた反応行動を実行することができる。
【0019】
請求項6の発明は、複数の部位に設けられた複数のタッチセンサ、およびタッチセンサからのセンサ入力に応じて人間が実際にタッチした実接触部位を特定する第2特定手段をさらに備える、請求項1ないし5のいずれかに記載のコミュニケーションロボットである。
【0020】
請求項6の発明では、CPUは複数のタッチセンサ(721−728)からセンサ入力によって、人間が実際にタッチした実接触部位も特定できるので、この点では従来のコミュニケーションロボットと同様に人間による触行動を感知することができる。
【0021】
請求項7の発明は、第2特定手段は、複数のタッチセンサからセンサ入力があるかどうか判断する第2判断手段を含み、第2判断手段で複数のタッチセンサからセンサ入力があるかことを検出したとき人間の視線方向に応じて1つの実接触部位を特定する、請求項6記載のコミュニケーションロボットである。
【0022】
請求項7の発明では、CPU(第2特定手段)は、第2判断手段(S25)で複数のタッチセンサからセンサ入力があるかことを検出したとき<人間の視線方向に応じて1つの実接触部位を特定する(S27−S31)。人間が関心を持っている部位を正しく推定接触部位として特定することができる。
【発明の効果】
【0023】
この発明によれば、人間が実際にタッチしなくても、人間の触行動を検知することができ、場合によってはその触行動に対する反応行動を生起することができるので、従来のものに比べてより生物らしい、コミュニケーションロボットが得られる。
【0024】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0025】
図1に示すこの発明の一実施例のコミュニケーションロボット(以下、単に「ロボット」ということがある。)10は、台車12を含み、この台車12の下面には、このロボット10を自律移動させる車輪14が設けられる。この車輪14は、車輪モータ(図2において参照番号「70」で示す。)によって駆動され、台車12すなわちロボット10を前後左右任意の方向に動かすことができる。なお、図示しないが、この台車12の前面には、衝突センサ(図2において、参照番号「74」で示す。)が取り付けられ、この衝突センサは、台車12への人や他の障害物の接触を検知する。そして、ロボット10の移動中に障害物との接触を検知すると、直ちに車輪14の駆動を停止してロボット10の移動を急停止させて衝突を未然に防ぐ。
【0026】
なお、ロボット10の背の高さは、この実施例では、人、特に子供に威圧感をあたえることがないように、100cm程度とされている。ただし、この背の高さは任意に変更可能である。
【0027】
台車12の上には、多角形柱のセンサ取付パネル16が設けられ、このセンサ取付パネル16の各面には、超音波距離センサ18が取り付けられる。この超音波距離センサ18は、取付パネル16すなわちロボット10の周囲の主として人との間の距離を計測するものである。
【0028】
台車12の上には、さらに、下部が上述の取付パネル16に囲まれて、ロボット10の胴体が直立するように取り付けられる。この胴体は下部胴体20と上部胴体22とから構成され、これら下部胴体20および上部胴体22は、連結部24によって、連結される。連結部24には、図示しないが、昇降機構が内蔵されていて、この昇降機構を用いることによって、上部胴体22の高さすなわちロボット10の高さを変化させることができる。昇降機構は、後述のように、腰モータ(図2において参照番号「68」で示す。)によって駆動される。上で述べたロボット10の身長100cmは、上部胴体22をそれの最下位置にしたときの値である。したがって、ロボット10の身長は100cm以上にすることができる。
【0029】
ただし、下部胴体20と上部胴体22とを一体化して、身長を調整できない1つの胴体とすることも可能である。
【0030】
上部胴体22のほぼ中央には、1つの全方位カメラ26と、1つのマイク28とが設けられる。全方位カメラ26は、ロボット10の周囲を撮影するもので、後述の眼カメラ46と区別される。マイク28は、周囲の音、とりわけ人の声を取り込む。
【0031】
上部胴体22の両肩には、それぞれ、肩関節30Rおよび30Lによって、上腕32Rおよび32Lが取り付けられる。肩関節30Rおよび30Lは、それぞれ3軸の自由度を有する。すなわち、肩関節30Rは、X軸,Y軸およびZ軸のそれぞれの軸廻りにおいて上腕32Rの角度を制御できる。Y軸は、上腕32Rの長手方向(または軸)に並行な軸であり、X軸およびZ軸は、そのY軸に、それぞれ異なる方向から直交する軸である。肩関節30Lは、A軸,B軸およびC軸のそれぞれの軸廻りにおいて上腕32Lの角度を制御できる。B軸は、上腕32Lの長手方向(または軸)に並行な軸であり、A軸およびC軸は、そのB軸に、それぞれ異なる方向から直交する軸である。
【0032】
上腕32Rおよび32Lのそれぞれの先端には、肘関節34Rおよび34Lを介して、前腕36Rおよび36Lが取り付けられる。肘関節34Rおよび34Lは、それぞれ、W軸およびD軸の軸廻りにおいて、前腕36Rおよび36Lの角度を制御できる。
【0033】
なお、上腕32Rおよび32Lならびに前腕36Rおよび36L(いずれも図1)の変位を制御するX,Y,X,W軸およびA,B,C,D軸では、「0度」がホームポジションであり、このホームポジションでは、上腕32Rおよび32Lならびに前腕36Rおよび36Lは下方向に向けられる。
【0034】
また、図3に示すように、上部胴体22の肩関節30Rおよび30Lを含む肩の部分や上述の上腕32Rおよび32Lならびに前腕36Rおよび36L、さらには頭部42や腹部には、それぞれ、タッチセンサ721−728が設けられていて、これらのタッチセンサ721−728は、人がロボット10のこれらの部位に接触したかどうかを検知する。これらのタッチセンサは図2においては参照番号72で包括的に示す。
【0035】
前腕36Rおよび36Lのそれぞれの先端には、手に相当する球体38Rおよび38Lがそれぞれ固定的に取り付けられる。なお、この球体38Rおよび38Lに代えて、この実施例のロボット10と異なり指の機能が必要な場合には、人の手の形をした「手」を用いることも可能である。
【0036】
上部胴体22の中央上方には、首関節40を介して、頭部42が取り付けられる。この首関節40は、3つの自由度を有し、S軸,T軸およびU軸の各軸廻りに角度制御可能である。S軸は首から真上に向かう軸であり、T軸およびU軸は、それぞれ、このS軸に対して異なる方向で直交する軸である。頭部42には、人の口に相当する位置に、スピーカ44が設けられ、目に相当する位置に眼カメラ46が設けられる。スピーカ44は、ロボット10が、それの周囲の人に対して音声または声によってコミュニケーションを図るために用いられる。眼カメラ46は、ロボット10に接近した人の顔や他の部分を撮影してその映像信号を取り込む。ただし、スピーカ44は、ロボット10の他の部位たとえば胴体に設けられてもよい。
【0037】
なお、上述の全方位カメラ26および眼カメラ46のいずれも、たとえばCCDやCMOSのように固体撮像素子を用いるカメラであってよい。
【0038】
図1に示すロボット10の制御系の構成が図2のブロック図に示される。図2に示すように、このロボット10は、全体の制御のためにマイクロコンピュータまたはCPU50を含み、このCPU50には、バス52を通して、メモリ54,モータ制御ボード56,センサ入力/出力ボード58および音声入力/出力ボード60が接続される。
【0039】
メモリ54は、図示しないが、ROMやRAMを含み、ROMにはこのロボット10の制御プログラムが予め書き込まれているとともに、スピーカ44から発生すべき音声または声の音声データが格納されている。RAMは、一時記憶メモリとして用いられるとともに、ワーキングメモリとして利用され得る。
【0040】
モータ制御ボード56は、たとえばDSP(Digital Signal Processor)で構成され、各腕や頭部の各軸モータを制御する。すなわち、モータ制御ボード56は、CPU50からの制御データを受け、右肩関節30RのX,YおよびZ軸のそれぞれの角度を制御する3つのモータと右肘関節34Rの軸Wの角度を制御する1つのモータとの計4つのモータ(図2ではまとめて、「右腕モータ」として示す。)62の回転角度を調節する。また、モータ制御ボード56は、左肩関節30LのA,BおよびC軸のそれぞれの角度を制御する3つのモータと左肘関節34LのD軸の角度を制御する1つのモータとの計4つのモータ(図2ではまとめて、「左腕モータ」として示す。)64の回転角度を調節する。モータ制御ボード56は、また、頭部42のS,TおよびU軸のそれぞれの角度を制御する3つのモータ(図2ではまとめて、「頭部モータ」として示す。)66の回転角度を調節する。モータ制御ボード56は、また、腰モータ68、および車輪14を駆動する2つのモータ(図2ではまとめて、「車輪モータ」として示す。)70を制御する。
【0041】
なお、この実施例の上述のモータは、車輪モータ70を除いて、制御を簡単化するためにそれぞれステッピングモータまたはパルスモータであるが、車輪モータ70と同様に、直流モータであってよい。
【0042】
センサ入力/出力ボード58も、同様に、DSPで構成され、各センサやカメラからの信号を取り込んでCPU50に与える。すなわち、超音波距離センサ18の各々からの反射時間に関するデータがこのセンサ入力/出力ボード58を通して、CPU50に入力される。また、全方位カメラ26からの映像信号が、必要に応じてこのセンサ入力/出力ボード58で所定の処理が施された後、CPU50に入力される。眼カメラ46からの映像信号も、同様にして、CPU50に与えられる。なお、この図2では、図1で説明したタッチセンサは、まとめて「タッチセンサ72」として表され、それらのタッチセンサ72からの信号がセンサ入力/出力ボード58を介して、CPU50に与えられる。
【0043】
なお、スピーカ44には音声入力/出力ボード60を介して、CPU50から、合成音声データが与えられ、それに応じて、スピーカ44からはそのデータに従った音声または声が出力される。そして、マイク28からの音声入力が、音声入力/出力ボード60を介して、CPU50に取り込まれる。
【0044】
ここで、図2では包括的に示されるタッチセンサ72について詳細に説明する。この実施例のロボット10では、図3に示すように、合計8つのタッチセンサ721−728が設けられる。タッチセンサ721は、頭部42の上面(頭頂)に設けられ、タッチセンサ722および725がそれぞれ左肩および右肩に設けられる。左手上腕32Lおよび左手前腕34Lにタッチセンサ723および724が配置され、右手上腕32Rおよび左手前腕34Rにタッチセンサ7256および727が配置される。そして、胸および/または腹にタッチセンサ728が設けられる。なお、タッチセンサ721−728には、それぞれ、(1)−(8)の番号が付与され、それらの中心位置をP1−P8で表している。
【0045】
ただし、タッチセンサの個数やそれらが配置される場所または部位は、この実施例に限定されるものではなく、適宜変更することができる。
【0046】
さらに、実施例のコミュニケーションロボットシステムでは、図2に示す光学式モーションキャプチャ76を用いる。モーションキャプチャはよく知られているように、現実の人物や物体の動きや姿勢をディジタル的に記録するシステムであり、人体や物体に装着するマーカ(marker)とこれを検出するトラッカ(tracker)とを組み合わせてキャプチャする。光学式では、たとえばマーカとして反射シールを用い、複数のカメラをトラッカとして用いる。
【0047】
実施例で説明すると、図1に示すコミュニケーションロボット10に、図4に黒丸で示すように、19個の反射シールをマーカ78として装着する。他方、そのロボット10に対して触行動を行うなどコミュニケーションを図る人間80に、図5に黒丸で示すように、同じく19個の反射シールをマーカ78として装着する。そして、ロボット10と人間80とを同時に、図2に示す複数のMC(モーションキャプチャ)カメラ821−82nで撮影して、それらのカメラ821−82nからの画像信号をMCコンピュータ84に入力する。MCコンピュータ84では、各マーカ78(図4および図5)の3次元位置(座標)をリアルタイムに計算し、それを、バス52を通して、ロボットコンピュータすなわちCPU50に与える。ただし、MCコンピュータ84とロボットコンピュータ50とは、有線ではなく、無線LANによって連係するようにしてもよい。
【0048】
モーションキャプチャシステム(3次元動作計測装置)76としては、公知のモーションキャプチャシステムが適用されるが、発明者等の実験では、VICON社(http://www./vicon.com/)の光学式のモーションキャプチャシステムを用いた。この場合には12台のMCカメラ82を使用する。
【0049】
なお、ロボット10の動きや姿勢は必ずしもモーションキャプチャを用いなくても把握できる。たとえば、上で説明した各腕や頭部の各軸モータ、右腕モータ62、左腕モータ64、頭部モータ66の回転角度からロボット10の動きや姿勢を計算によって求めることができる。しかしながら、実施例では、CPU50のリアルタイムの計算量を軽減するために、モーションキャプチャ76を用いるようにした。
【0050】
図6は図1および図2に示す実施例のCPU50の動作を説明するためのフローチャートであり、最初のステップS1では、CPU50は、ロボット10のオペレータから停止命令が入力されたかどうか判断する。ステップS1で“YES”が判断されれば、当然、処理は終了する。
【0051】
ステップS1で“NO”が判断されたときには、CPU50は、次のステップS3で、人間80によるロボット10への接触行動があったかどうか、そして接触行動があったならロボットのどの場所または部位に接触されたかを判定する。
【0052】
ここで、図7−図11を参照して、このステップS3のサブルーチンについて詳細に説明する。
【0053】
図7の最初のステップS21では、CPU50は、ロボット10の各部についてタッチセンサの接触反応の有無をチェックする。具体的には、CPU50はセンサ入出力ボード58(図2)を通してタッチセンサ72すなわち図3に示すタッチセンサ721−728について、センサ入力があったかどうか判定する。そして、センサ入力があった場合には、CPU50は、図2のメモリ54内に形成されているタッチセンサフラグTs_flag(n)を「1」にセットする。ただし、カッコ内の「n」は、タッチセンサの番号を表し、実施例の場合「1−8」である。センサ入力がない場合には、CPU50は、該当のフラグTs_flag(n)に「0」を書き込む。なお、センサ入力のあるタッチセンサの個数も同時にカウントされていて、タッチセンサフラグに「1」を書き込むつど、CPU50は、同じメモリ54に形成したタッチセンサカウンタTs_countをインクリメントする(+1)。
【0054】
続くステップS23において、CPU50は、タッチセンサカウンタTs_countのカウント値が「1」以上かどうか判定する。このステップS23で“YES”が判定されるということは、先のステップS21において少なくも1つのタッチセンサからセンサ入力があったこと、つまり人間80(図5)がロボット10のどこかに、実際にタッチ(接触)したことを意味し、“NO”が判定されるということは、人間80がロボット10に実際にはタッチ(接触)しなかったことを意味する。
【0055】
そして、ステップS23で“YES”の場合、続くステップS25において、CPU50は、カウンタTs_countのカウント値が「2以上」かどうか判断する(Ts_count>1)。このステップS25は第2判断手段として機能し、このステップS25で“YES”が判断されるということは、ステップS21で2つ以上のタッチセンサからセンサ入力があったこと、つまりロボット10の複数の場所または部位が人間によって触られたことを意味する。この実施例では、ロボット10の複数の場所にタッチがあった場合でも、どこか1つの場所に特定するようにしている。そのために、ステップS27以下のステップが実行される。
【0056】
第2特定手段を構成するステップS27では、簡単にいうと、CPU50は、そのときの人間80の視線方向によって接触場所を特定する。
【0057】
相手の人間の視線方向は、図5に示すように頭部に取り付けられたマーカの座標から視線ベクトルとして算出する。具体的には、頭部前方に取り付けられた2箇所のマーカ位置を、図9に示すように、右側のものをPright_head_frontとし、左側のものをPleft_head_frontとし、後方に取り付けられたマーカ位置をPcenter_head_backとし、これらのマーカ位置(座標)から視線ベクトルを算出する。視線ベクトルEyeVectorは、Pcenter_head_backからPright_head_frontとPleft_head_frontを結ぶ線の中心位置へのベクトルとする。視線ベクトルは次の数1によって求めることができる。
【0058】
【数1】
【0059】
そして、この視線ベクトルEyeVectorが向く方向のタッチセンサTeを特定する。つまり、視線ベクトルEyeVectorの方向にあるタッチセンサが、8つのタッチセンサ721−728(図3)のどれに該当するか判断する。
【0060】
ここで、まず、ロボットの体の各タッチセンサ721−728の中心座標P1−P8は次のようにして求められる。
【0061】
ロボットの各タッチセンサ721−728の中心点P1−P8は、タッチセンサ721−728の付近に取り付けられたマーカの座標からのベクトルを予め知っていれば、容易に算出できる。ただし、この場合、先の図3および図4に示すように、タッチセンサ721−728の付近のマーカは、ロボットが動作してもタッチセンサ721−728の中心点P1−P8との相対位置が変化しないところに設置しておく必要がある。
【0062】
以下の具体例では、一例として、肩部のタッチセンサ722(725)の中心位置P1−P8の座標Ptouchsensor_shoulderを計算する方法を説明する。
【0063】
肩に取り付けられたマーカの座標Pshoulderから、肩部タッチセンサ722(725)の中心座標Ptouchsensor_shoulderへのベクトルVshoulder(=Ptouchsensor_shoulder−Pshoulder)を予め計測しておく。このベクトルVshoulderを用いることにより、ロボットが動作中の肩部タッチセンサ722(725)の中心位置P1(P5)の座標はPtouchsensor_shoulder=Pshoulder+Vshoulderで求められる。
【0064】
また、ロボット10の各部中心(タッチセンサ中心)点は、ロボットの身体中心座標が分かっていれば、現在のロボットの関節各情報から、順運動学方程式を解くことによっても算出することが可能である。
【0065】
次に、図10において、点と直線の距離dは、数2で求まる。ただし、図10においても数2においても、ベクトル記号は、便宜上省略している。
【0066】
【数2】
【0067】
つまり、視線ベクトルを正規化したベクトルと相手(人間)の頭部後方位置に取り付けたマーカの座標から、視線方向を示す直線を算出し、各タッチセンサの中心座標位置P1−P8(図3)との距離D(n)を上記の点と直線の距離dの式より算出する。ただし、(n)はタッチセンサ721−728の番号、であり、実施例では「1−8」である。
【0068】
具体例において上記数2との対応を考えると、点p1は、相手の頭部後方に取り付けたマーカ位置Pcenter_head_backに対応し、点p2は、各タッチセンサ721−728の中心位置Ptouchsensor_nに対応し、正規化した方向ベクトルv(ただし、ベクトル記号は便宜上省略する)は(EyeVector/|EyeVector|)に相当する。そして、数2に従って距離dを計算し、それをD(n)とする。
【0069】
このようにして、視線方向の直線と各タッチセンサ721−728の中心との間の距離D(n)が求まる。そして、図11に示すように、この距離D(n)が任意の閾値L以下であるタッチセンサを実際に接触行為のあったタッチセンサTeと推定する。
【0070】
その後、CPU50は、ステップS29において、視線方向から推定したタッチセンサTeとステップS21で検出した接触反応箇所とが一致しているかどうか判断する。つまり、フラグTs_flag(Te)が「1」かどうか判断する。ただし、(Te)は推定したタッチセンサ721−728の番号「1−8」のいずれかである。
【0071】
そして、ステップS29で“YES”が判断されると、CPU50は、ステップS31において、視線方向から推定したタッチセンサTeを、実際に接触のあったタッチセンサとして同定し、リターンする。
【0072】
ステップS29で“NO”なら、つまり、視線方向から推定したタッチセンサTeとステップS21で検出した接触反応箇所とが一致しない場合には、ステップS33で判定不能と認識し、リターンする。
【0073】
なお、ステップS25で“NO”が判断されたとき、つまり、ステップS21で接触反応を検出したタッチセンサが1つだけであった場合には、そのとき検出したタッチセンサを実際にタッチされたタッチセンサであると認識し(ステップS35)、リターンする。
【0074】
以上の説明のように、ステップS25−S31,S35は、相手の人間80がロボット10のどこかに実際にタッチした場合に、実接触部位を特定するための第2特定手段として機能する。
【0075】
ただし、この実施例は、人間が実際にはタッチしない場合でも、人間がタッチしようとする「気配」を察知し、実際にタッチがある場合の触行動に対すると同じような反応行動を生起することによって、より生物らしいコミュニケーションロボットシステムを得ようとするものである。そこで、CPU50は、実際にタッチがない場合でも、ステップS37以降を実行して人間の触行動があったかどうか認識する。
【0076】
第1判断手段を構成するステップS37では、CPU50は、相手の人間との間の距離Dbを計算する。
【0077】
まず、ロボット10および人間80のそれぞれの体の中心座標を求める。具体的には、体の中心座標Pbodycenterは両肩に取り付けたマーカの各座標の中心位置で表し、次の数3のとおりである。
【0078】
【数3】
【0079】
数3に従ってロボット10の体と人80の体のそれぞれの中心座標Probot_bodycenterおよびPhuman_bodycenterが求まる。この2点間の距離をDbとすると、距離Dbは数4で与えられる。
【0080】
【数4】
【0081】
その後、第1判断手段を構成するステップS39において、CPU50は、相手の人間の手の長さLaに基づいて、ロボット10が明らかに相手の手の届く範囲に存在するかどうかをチェックする。一例としては、ロボット10が相手80の手の長さLaの2倍の範囲内に存在すれば、相手はロボットにタッチできると考え、上記距離DbがLa*2の範囲内かどうか判断する。ただし、このような閾値(La*2)は適宜変更可能である。
【0082】
ここで、相手の人間の手の長さLaの求め方の一例を説明する。相手の体の肩、肘および手先に取り付けられたマーカの位置から相手の腕の長さを算出する。つまり、数5に示すように、肘から肩までの距離+肘から手先までの距離=腕の長さLaとする。
【0083】
【数5】
【0084】
もし、第1判断手段すなわちステップS39において、“NO”と判断されたなら、次のステップS41において、触行動はないと認識し、リターンする。
【0085】
もし、ステップS39において“YES”なら、図8に示すステップS43に進む。このステップS43以降のステップが第1特定手段を構成するが、まず、ステップS43では、CPU50は、数6に従って、相手の左手とロボットの体の各タッチセンサの中心点Pnとの距離(左手距離)Dlh(n)を算出(n=1−8)するとともに、相手の右手とロボットの体の各タッチセンサの中心点Pnとの距離(右手距離)Drh(n)を算出(n=1−8)する。
【0086】
【数6】
【0087】
そして、次のステップS45では、CPU50は、接近距離L(これは、可変の閾値である。)より小さい左手距離Dlh(n)の中で、最も小さくなるnを左手接触推定部位Tlhとして、図2のメモリ54に形成されている左手レジスタTlhに書き込む(If min{Dlh(n)}<L →Tlh=n)。ただし、接近距離Lより近いDlh(n)がない場合はその左手レジスタTlhには「0」を書き込む(If min{Dlh(n)}>L →Tlh=0)。
【0088】
さらに、同じステップS45で、CPU50は、接近距離L(可変閾値)より小さい右手距離Drh(n)の中で、最も小さくなるnを右手接触推定部位Trhとして、図2のメモリ54に形成されている右手レジスタTrhに書き込む(If min{Drh(n)}<L →Trh=n)。ただし、接近距離Lより近いDrh(n)がない場合はその右手レジスタTrhには「0」を書き込む(If min{Drh(n)}>L →Trh=0)。
【0089】
続くステップS47において、CPU50は、相手の右手および左手が接触しそうなロボットの部位はあるのかどうか判断する。具体的には、左手レジスタTlhと右手レジスタTrhとがともに、「0」かどうかチェックする。その理由は、上で説明したように、レジスタTlhおよびTrhは接近距離Lより近いDlh(n)およびDrh(n)がないときそれぞれ「0」に設定されるので、これが「0」かどうかで接触しそうな部位の有無分かるからである。
【0090】
このステップS47で“NO”が判断されるということは、少なくとも相手の右手か左手かがロボットのどこかに接近していることを意味する。したがって、次のステップS49で、DlhおよびDrhがともに「0」ではないか(Dlh≠0、Drh≠0)どうか、つまり、相手の人間の左手も右手もともに接近距離Lより近い状態かどうか判断する。
【0091】
もし、ステップS49で“YES”が判断されると、つまり、相手の人間の左手および右手がともに接近距離Lより近い場合には、CPU50は、人間がタッチしようといている(距離Lより接近している)ロボットの部位をどこか1つだけ特定する必要がある。その特定方法としては、先に説明したステップS27と同様に、人間の視線方向を推定の手がかりとする。つまり、次にCPU50は、ステップS51において、相手の人間の顔の向きと目の位置より相手の視線の方向を算出し、実際に人間がロボットにタッチしている訳ではないが、その視線に基づいて、近接部位を推定接触タッチセンサTeとして推定する。
【0092】
相手の人間の視線方向を表す視線ベクトルEyeVectorは、先に図5を参照して説明したように、頭部に取り付けられた3つのマーカPright_head_front、Pleft_head_front、Pcenter_head_backの座標から数1に従って算出できる。そして、この視線ベクトルEyeVectorが向く方向のタッチセンサTeを特定する。つまり、視線ベクトルEyeVectorの方向にあるタッチセンサが、8つのタッチセンサ721−728(図3)のどれに該当するか判断する。
【0093】
その後、CPU50は、ステップS53において、視線方向から推定したタッチセンサTeとステップS45で検出した左手レジスタTlhおよび右手レジスタTrhにそれぞれ登録されているタッチセンサの番号とが一致しているかどうか判断する。つまり、Te=TlhまたはTe=Trhが充足されているかどうか、判断する。
【0094】
一致しているとき、つまり、Te=TlhまたはTe=Trhのいずれかが充足されているときには、CPU50は、ステップS55で、そのタッチセンサTeの位置を、人間80がタッチしようとしているロボット10の場所または部位であると特定して、リターンする。
【0095】
一致していないときには、CPU50は、ステップS57において、ロボット10により近いほうの人間の手を推定接触部位として特定する。具体的には、ステップS43で求めた左手距離Dlhおよび右手距離Drhを比較し、左手距離Dlhが右手距離Drhより小さい(Dlh<Drh)ときには、CPU50は、推定接触部位Tとして左手接触部位Tlhを特定して、リターンする。逆に、左手距離Dlhが右手距離Drhより大きい(Dlh>Drh)ときには、CPU50は、推定接触部位Tとして右手接触部位Trhを特定して、リターンする。
【0096】
さらに、先のステップS49で“NO”が判断されたとき、つまり推定接触部位TlhまたはTrhのどちらかが「0」であるときには、どちらか一方の手だけが接触する可能性があるので、CPU50は、ステップS59において、そのどちらか一方の推定接触部位TlhまたはTrhを推定接触部位Tとして特定し、リターンする。
【0097】
最後に、ステップS47で“NO”が判断されたときには、接触しようとする人間の手はなく、推定接触部位TlhおよびTrhはともに「0」であり、その場合には、CPU50は、ステップS61において、接触行為はないと判断して、リターンする。
【0098】
このようにして、図6のステップS3において、人間80が実際にロボット10に対してタッチしているかあるいはタッチしようとしているか(触行動の有無)を検知することができる。
【0099】
そして、ステップS3で図7および図8に示すサブルーチンを実行した結果、人間80による触行動が確認されたときには、ステップS5で“YES”が判断されることになり、CPU50は、図6の次のステップS7において、接触場所または推定接触場所に応じて異なる反応行動をロボット10に命令する。つまり、ステップS7は、反応行動生起手段として機能する。表1はそのような反応行動の一例を示す。ただし、この表1に例示する反応行動は、基本的には、人間に触られるのを嫌がる、という反応行動であるが、逆に、人間に対して好感を表す反応行動やそれらの混在した反応行動を設定することも当然可能である。
【0100】
【表1】
【0101】
表1に示すように、たとえば接触部位または推定接触部位が頭部であるとき、すなわち、Te=T(1)であったとき、CPU50はロボット10を後退させるように、図2に示すモータ制御ボード56を通して車輪モータ70を制御する。
【0102】
たとえば、接触部位または推定接触部位が腹部であるとき、すなわち、Te=T(8)であったとき、CPU50は、腹部を触られないように腹部を手でガードしながらロボット10を後退させるように、モータ制御ボード56を通して、右腕モータ62および左腕モータ64ならびに車輪モータ70を制御する。
【0103】
たとえば、接触部位または推定接触部位が左肩であるとき、すなわち、Te=T(2)であったとき、CPU50は、左肩を人間から遠ざけるようにロボット10を回転させるように、モータ制御ボード56を通して、腰モータ68を制御する。接触部位または推定接触部位が右肩であるとき、すなわち、Te=T(5)であったとき、CPU50は、右肩を人間から遠ざけるように、ロボット10を回転させるように腰モータ68を制御する。
【0104】
たとえば、接触部位または推定接触部位が左上腕であるとき、すなわち、Te=T(3)であったとき、CPU50は、左上腕を人間から遠ざけるようにロボット10を回転させながら左上腕を後ろに下げるように、モータ制御ボード56を通して、腰モータ68を制御するとともに、左腕モータ64を制御する。接触部位または推定接触部位が右上腕であるとき、すなわち、Te=T(6)であったとき、CPU50は、右上腕を人間から遠ざけるようにロボット10を回転させながら左上腕を後ろに下げるように、腰モータ68および右腕モータ62を制御する。
【0105】
たとえば、接触部位または推定接触部位が左前腕であるとき、すなわち、Te=T(4)であったとき、CPU50は、左前腕を人間から遠ざけるようにロボット10を回転させながら左前腕を後ろに下げるように、モータ制御ボード56を通して、腰モータ68を制御するとともに、左腕モータ64を制御する。接触部位または推定接触部位が右上腕であるとき、すなわち、Te=T(7)であったとき、CPU50は、右前腕を人間から遠ざけるようにロボット10を回転させながら左前腕を後ろに下げるように、腰モータ68および右腕モータ62を制御する。
【0106】
なお、いずれの反応行動中でも、ロボット10の眼カメラ46(図2)が近づく人間の手を注視するように、CPU50は、頭部モータ66などを制御する。
【0107】
以上のように、受身状態(Recipient Mode)では、ロボット10の体に人間80の手が実際にタッチするかあるいはタッチするほどに接近するかを検知したときには、所定の反応行動を行うものであるが、図6において、ステップS5で人間の触行動を検知しなかったときには、CPU50は、次のステップS9で、所定時間以上連続して待機状態であるかどうか判断する。ただし、待機状態とは、たとえば、センサボード58(図2)からどんなセンサ入力もない状態をいうものとする。そして、ステップS9で“NO”が判断されるとき、つまり、所定時間内に何らかのセンサ入力があったときには、CPU50は、先のステップS3に戻って先に説明した方法で触行動の有無を検知する。ステップS9で“YES”が判断されたときには、CPU50は、ステップS11で待機状態となる。待機状態では、CPU50は、ロボット10が人間80に対して、アイコンコンタクトを維持したり、対人距離を維持したりするなどの所定の処理を実行するものとする(Idling Mode)。
【0108】
ただし、一定時間以上待機状態が継続した場合には、ロボット10を作用主状態(Agent Mode)として、たとえば自分の手(腕)を使って人間の手を触るなどの主体的行動を実行させることもできる。
【0109】
なお、上で説明した実施例では人間やロボットの各部位の3次元位置座標を検出するために、マーカ78をカメラ801−80n(図2)で撮影する方式のモーションキャプチャを採用した。しかしながら、他の方法(たとえば磁気)を利用するモーションキャプチャを用いてもよく、さらに、モーションキャプチャではなく、一般的な画像処理によって人間やロボットの腕の状態や位置を検出するようにしてもよい。また、ロボット10の場合には、各関節角を検知することによって各部位の3次元位置座標を特定するようにしてもよい。
【0110】
また、実施例では、第1特定手段によって所定距離以内に接近した部位が2以上あるとき、その中から1つの部位を推定接触部位として特定する際の条件として、人間の視線が向けられているかどうかという条件を用いた。しかしながら、第1特定手段は、たとえば人間の手がより接近していることを条件で1つの推定接触部位を特定するなど、別の条件を採用してもよい。
【図面の簡単な説明】
【0111】
【図1】図1はこの発明の一実施例のコミュニケーションロボットの構成の一例を示す図解図である。
【図2】図2は図1に示すコミュニケーションロボットの電気的な構成を示すブロック図である。
【図3】図3は図1に示すコミュニケーションロボットに設けられているタッチセンサの配置を例示する図解図である。
【図4】図4は図1に示すコミュニケーションロボットに装着したマーカの配置を例示する図解図である。
【図5】図5はコミュニケーションロボットと協働する人間に装着したマーカの配置を例示する図解図である。
【図6】図6はこの実施例の動作を示すフロー図である。
【図7】図7は図6のサブルーチンの一部を示すフロー図である。
【図8】図8は図7に後続するサブルーチンの一部を示すフロー図である。
【図9】図9は実施例における人間の視線方向を検出する方法を説明する図解図である。
【図10】図10は実施例における人間の視線方向の直線とタッチセンサの中心との間の距離を検出する方法を説明する図解図である。
【図11】図11は実施例におけるタッチ場所または部位を特定または推定する方法を説明する図解図である。
【符号の説明】
【0112】
10 …コミュニケーションロボット
50 …CPU
72,721−728 …タッチセンサ
76 …モーションキャプチャ
821−82n …モーションキャプチャ(MC)カメラ
84 …MCコンピュータ
【技術分野】
【0001】
この発明はコミュニケーションロボットに関し、特にたとえば、タッチセンサを備え、人間の触行動に反応する、コミュニケーションロボットに関する。
【背景技術】
【0002】
この種のコミュニケーションロボット(人とコミュニケーションを行うことができるロボット)の一例が、特許文献1に開示される。
【特許文献1】特開2002−355783[B25J 13/00 A63H 3/33 11/00 B25J 5/00]
【発明の開示】
【発明が解決しようとする課題】
【0003】
特許文献1におけるコミュニケーションロボットでは、人がタッチセンサに触れると、その人間の触行動に反応して、触行動を知覚したことを人間に知らせ、それによって人間とのコミュニケーションの一層の円滑化を図っている。
【0004】
他方、人間に限らず他の動物でも同様であるが、他人が実際にタッチする前に、何らかの手段で、そのことを事前に察知し、その触行動を回避したり、あるいはそれに迎合する反応行動をすることがある。しかしながら、特許文献1の従来技術では、コミュニケーションロボットは人間が実際にロボットにタッチするまでは触行動を検知することはできず、その意味では、「生物らしさ」をやや欠いているといわざるを得ない。
【0005】
それゆえに、この発明の主たる目的は、新規な、コミュニケーションロボットシステムを提供することである。
【0006】
この発明の他の目的は、より生物らしい反応が可能な、コミュニケーションロボットシステムを提供することである。
【課題を解決するための手段】
【0007】
請求項1の発明は、人間による触行動を検知するコミュニケーションロボットであって、人間が所定範囲内に存在するかどうか検出する存在検出手段、および存在検出手段によって人間が所定範囲内に存在することを検出したとき、人間の手が所定距離以内に接近している部位を推定接触部位として特定する第1特定手段を備える、コミュニケーションロボットシステムである。
【0008】
請求項1の発明では、コミュニケーションロボット(実施例で対応または相当する部分を例示する参照符号は「10」。以下同様。)は、CPU(50)を含み、このCPUは、存在検出手段として働き、たとえばモーションキャプチャ(76)からのロボットおよび人間のそれぞれの部位の三次元座標に基づいて、人間がロボットから所定範囲内に存在するかどうか判断する。具体的には、CPUは、人間が、その人間の手の長さを基準とした所定距離の範囲に存在するかどうか判断する(S37,S39)。CPUはまた、第1特定手段として機能し、人間が所定範囲内に存在すると判断したとき、人間の手が所定距離以内に接近している部位があるかどうか判断し、そのような部位があれば、その部位を推定接触部位として特定する(S49-S59))。
【0009】
請求項1の発明によれば、人間が実際にタッチしなくても、人間の触行動を検知することができ、より生物らしい、コミュニケーションロボットが得られる。
【0010】
請求項2の発明は、第1特定手段は、人間の手が所定距離以内に接近している部位が複数あるかどうか判断する第1判断手段を含み、第1判断手段で人間の手が所定距離以内に接近している部位が複数あることを検出したとき所定条件を満たしている1つの部位を推定接触部位として特定する、請求項1記載のコミュニケーションロボットである。
【0011】
請求項2の発明では、CPUはまた、第1判断手段として機能し、人間の手が所定距離以内に接近している部位が複数あるかどうか判断する(S49)。そして、第1特定手段は、第1判断手段で人間の手が所定距離以内に接近している部位が複数あることを検出したとき所定条件を満たす部位を推定接触部位として特定する(S57)。
【0012】
請求項2の発明によれば、人間の手が接近した部位が複数存在しても、そのどれか1つを推定接触部位として特定できるので、触行動に対する反応行動を生起する場合でも、正しい反応行動を生起させることができる。
【0013】
請求項3の発明は、所定条件は前記人間の視線が向いているかどうかである、請求項2記載のコミュニケーションロボットである。
【0014】
請求項3の発明では、CPUは、たとえば人間の視線ベクトルを計算することによって、人間の視線が向く方向を推定し、その視線が向けられた部位が、人間が接触しようとしている部位であるとして特定する(S51)ので、人間が関心を持っている部位を正しく推定接触部位として特定することができる。
【0015】
請求項4の発明は、第1特定手段は、人間の手が所定距離以内に接近している部位が1つだけのときには当該部位を推定接触部位として特定する、請求項2または3記載のコミュニケーションロボットである。
【0016】
請求項4の発明では、CPUは、人間の手が所定距離以内に接近している部位が1つだけのときには、その部位を推定接触部位として特定する(S55)。
【0017】
請求項5の発明は、第1特定手段が特定した推定接触部位に応じて反応行動を生起させる反応行動生起所定手段をさらに備える、請求項1ないし4のいずれかに記載のコミュニケーションロボットである。
【0018】
請求項5の発明では、CPUは、また反応行動生起手段として機能し、反応行動生起手段は、推定接触部位に応じて異なる反応行動(表1)を生起する(S7)。したがって、人間が実際にタッチしなくても推定接触部位に応じた反応行動を実行することができる。
【0019】
請求項6の発明は、複数の部位に設けられた複数のタッチセンサ、およびタッチセンサからのセンサ入力に応じて人間が実際にタッチした実接触部位を特定する第2特定手段をさらに備える、請求項1ないし5のいずれかに記載のコミュニケーションロボットである。
【0020】
請求項6の発明では、CPUは複数のタッチセンサ(721−728)からセンサ入力によって、人間が実際にタッチした実接触部位も特定できるので、この点では従来のコミュニケーションロボットと同様に人間による触行動を感知することができる。
【0021】
請求項7の発明は、第2特定手段は、複数のタッチセンサからセンサ入力があるかどうか判断する第2判断手段を含み、第2判断手段で複数のタッチセンサからセンサ入力があるかことを検出したとき人間の視線方向に応じて1つの実接触部位を特定する、請求項6記載のコミュニケーションロボットである。
【0022】
請求項7の発明では、CPU(第2特定手段)は、第2判断手段(S25)で複数のタッチセンサからセンサ入力があるかことを検出したとき<人間の視線方向に応じて1つの実接触部位を特定する(S27−S31)。人間が関心を持っている部位を正しく推定接触部位として特定することができる。
【発明の効果】
【0023】
この発明によれば、人間が実際にタッチしなくても、人間の触行動を検知することができ、場合によってはその触行動に対する反応行動を生起することができるので、従来のものに比べてより生物らしい、コミュニケーションロボットが得られる。
【0024】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0025】
図1に示すこの発明の一実施例のコミュニケーションロボット(以下、単に「ロボット」ということがある。)10は、台車12を含み、この台車12の下面には、このロボット10を自律移動させる車輪14が設けられる。この車輪14は、車輪モータ(図2において参照番号「70」で示す。)によって駆動され、台車12すなわちロボット10を前後左右任意の方向に動かすことができる。なお、図示しないが、この台車12の前面には、衝突センサ(図2において、参照番号「74」で示す。)が取り付けられ、この衝突センサは、台車12への人や他の障害物の接触を検知する。そして、ロボット10の移動中に障害物との接触を検知すると、直ちに車輪14の駆動を停止してロボット10の移動を急停止させて衝突を未然に防ぐ。
【0026】
なお、ロボット10の背の高さは、この実施例では、人、特に子供に威圧感をあたえることがないように、100cm程度とされている。ただし、この背の高さは任意に変更可能である。
【0027】
台車12の上には、多角形柱のセンサ取付パネル16が設けられ、このセンサ取付パネル16の各面には、超音波距離センサ18が取り付けられる。この超音波距離センサ18は、取付パネル16すなわちロボット10の周囲の主として人との間の距離を計測するものである。
【0028】
台車12の上には、さらに、下部が上述の取付パネル16に囲まれて、ロボット10の胴体が直立するように取り付けられる。この胴体は下部胴体20と上部胴体22とから構成され、これら下部胴体20および上部胴体22は、連結部24によって、連結される。連結部24には、図示しないが、昇降機構が内蔵されていて、この昇降機構を用いることによって、上部胴体22の高さすなわちロボット10の高さを変化させることができる。昇降機構は、後述のように、腰モータ(図2において参照番号「68」で示す。)によって駆動される。上で述べたロボット10の身長100cmは、上部胴体22をそれの最下位置にしたときの値である。したがって、ロボット10の身長は100cm以上にすることができる。
【0029】
ただし、下部胴体20と上部胴体22とを一体化して、身長を調整できない1つの胴体とすることも可能である。
【0030】
上部胴体22のほぼ中央には、1つの全方位カメラ26と、1つのマイク28とが設けられる。全方位カメラ26は、ロボット10の周囲を撮影するもので、後述の眼カメラ46と区別される。マイク28は、周囲の音、とりわけ人の声を取り込む。
【0031】
上部胴体22の両肩には、それぞれ、肩関節30Rおよび30Lによって、上腕32Rおよび32Lが取り付けられる。肩関節30Rおよび30Lは、それぞれ3軸の自由度を有する。すなわち、肩関節30Rは、X軸,Y軸およびZ軸のそれぞれの軸廻りにおいて上腕32Rの角度を制御できる。Y軸は、上腕32Rの長手方向(または軸)に並行な軸であり、X軸およびZ軸は、そのY軸に、それぞれ異なる方向から直交する軸である。肩関節30Lは、A軸,B軸およびC軸のそれぞれの軸廻りにおいて上腕32Lの角度を制御できる。B軸は、上腕32Lの長手方向(または軸)に並行な軸であり、A軸およびC軸は、そのB軸に、それぞれ異なる方向から直交する軸である。
【0032】
上腕32Rおよび32Lのそれぞれの先端には、肘関節34Rおよび34Lを介して、前腕36Rおよび36Lが取り付けられる。肘関節34Rおよび34Lは、それぞれ、W軸およびD軸の軸廻りにおいて、前腕36Rおよび36Lの角度を制御できる。
【0033】
なお、上腕32Rおよび32Lならびに前腕36Rおよび36L(いずれも図1)の変位を制御するX,Y,X,W軸およびA,B,C,D軸では、「0度」がホームポジションであり、このホームポジションでは、上腕32Rおよび32Lならびに前腕36Rおよび36Lは下方向に向けられる。
【0034】
また、図3に示すように、上部胴体22の肩関節30Rおよび30Lを含む肩の部分や上述の上腕32Rおよび32Lならびに前腕36Rおよび36L、さらには頭部42や腹部には、それぞれ、タッチセンサ721−728が設けられていて、これらのタッチセンサ721−728は、人がロボット10のこれらの部位に接触したかどうかを検知する。これらのタッチセンサは図2においては参照番号72で包括的に示す。
【0035】
前腕36Rおよび36Lのそれぞれの先端には、手に相当する球体38Rおよび38Lがそれぞれ固定的に取り付けられる。なお、この球体38Rおよび38Lに代えて、この実施例のロボット10と異なり指の機能が必要な場合には、人の手の形をした「手」を用いることも可能である。
【0036】
上部胴体22の中央上方には、首関節40を介して、頭部42が取り付けられる。この首関節40は、3つの自由度を有し、S軸,T軸およびU軸の各軸廻りに角度制御可能である。S軸は首から真上に向かう軸であり、T軸およびU軸は、それぞれ、このS軸に対して異なる方向で直交する軸である。頭部42には、人の口に相当する位置に、スピーカ44が設けられ、目に相当する位置に眼カメラ46が設けられる。スピーカ44は、ロボット10が、それの周囲の人に対して音声または声によってコミュニケーションを図るために用いられる。眼カメラ46は、ロボット10に接近した人の顔や他の部分を撮影してその映像信号を取り込む。ただし、スピーカ44は、ロボット10の他の部位たとえば胴体に設けられてもよい。
【0037】
なお、上述の全方位カメラ26および眼カメラ46のいずれも、たとえばCCDやCMOSのように固体撮像素子を用いるカメラであってよい。
【0038】
図1に示すロボット10の制御系の構成が図2のブロック図に示される。図2に示すように、このロボット10は、全体の制御のためにマイクロコンピュータまたはCPU50を含み、このCPU50には、バス52を通して、メモリ54,モータ制御ボード56,センサ入力/出力ボード58および音声入力/出力ボード60が接続される。
【0039】
メモリ54は、図示しないが、ROMやRAMを含み、ROMにはこのロボット10の制御プログラムが予め書き込まれているとともに、スピーカ44から発生すべき音声または声の音声データが格納されている。RAMは、一時記憶メモリとして用いられるとともに、ワーキングメモリとして利用され得る。
【0040】
モータ制御ボード56は、たとえばDSP(Digital Signal Processor)で構成され、各腕や頭部の各軸モータを制御する。すなわち、モータ制御ボード56は、CPU50からの制御データを受け、右肩関節30RのX,YおよびZ軸のそれぞれの角度を制御する3つのモータと右肘関節34Rの軸Wの角度を制御する1つのモータとの計4つのモータ(図2ではまとめて、「右腕モータ」として示す。)62の回転角度を調節する。また、モータ制御ボード56は、左肩関節30LのA,BおよびC軸のそれぞれの角度を制御する3つのモータと左肘関節34LのD軸の角度を制御する1つのモータとの計4つのモータ(図2ではまとめて、「左腕モータ」として示す。)64の回転角度を調節する。モータ制御ボード56は、また、頭部42のS,TおよびU軸のそれぞれの角度を制御する3つのモータ(図2ではまとめて、「頭部モータ」として示す。)66の回転角度を調節する。モータ制御ボード56は、また、腰モータ68、および車輪14を駆動する2つのモータ(図2ではまとめて、「車輪モータ」として示す。)70を制御する。
【0041】
なお、この実施例の上述のモータは、車輪モータ70を除いて、制御を簡単化するためにそれぞれステッピングモータまたはパルスモータであるが、車輪モータ70と同様に、直流モータであってよい。
【0042】
センサ入力/出力ボード58も、同様に、DSPで構成され、各センサやカメラからの信号を取り込んでCPU50に与える。すなわち、超音波距離センサ18の各々からの反射時間に関するデータがこのセンサ入力/出力ボード58を通して、CPU50に入力される。また、全方位カメラ26からの映像信号が、必要に応じてこのセンサ入力/出力ボード58で所定の処理が施された後、CPU50に入力される。眼カメラ46からの映像信号も、同様にして、CPU50に与えられる。なお、この図2では、図1で説明したタッチセンサは、まとめて「タッチセンサ72」として表され、それらのタッチセンサ72からの信号がセンサ入力/出力ボード58を介して、CPU50に与えられる。
【0043】
なお、スピーカ44には音声入力/出力ボード60を介して、CPU50から、合成音声データが与えられ、それに応じて、スピーカ44からはそのデータに従った音声または声が出力される。そして、マイク28からの音声入力が、音声入力/出力ボード60を介して、CPU50に取り込まれる。
【0044】
ここで、図2では包括的に示されるタッチセンサ72について詳細に説明する。この実施例のロボット10では、図3に示すように、合計8つのタッチセンサ721−728が設けられる。タッチセンサ721は、頭部42の上面(頭頂)に設けられ、タッチセンサ722および725がそれぞれ左肩および右肩に設けられる。左手上腕32Lおよび左手前腕34Lにタッチセンサ723および724が配置され、右手上腕32Rおよび左手前腕34Rにタッチセンサ7256および727が配置される。そして、胸および/または腹にタッチセンサ728が設けられる。なお、タッチセンサ721−728には、それぞれ、(1)−(8)の番号が付与され、それらの中心位置をP1−P8で表している。
【0045】
ただし、タッチセンサの個数やそれらが配置される場所または部位は、この実施例に限定されるものではなく、適宜変更することができる。
【0046】
さらに、実施例のコミュニケーションロボットシステムでは、図2に示す光学式モーションキャプチャ76を用いる。モーションキャプチャはよく知られているように、現実の人物や物体の動きや姿勢をディジタル的に記録するシステムであり、人体や物体に装着するマーカ(marker)とこれを検出するトラッカ(tracker)とを組み合わせてキャプチャする。光学式では、たとえばマーカとして反射シールを用い、複数のカメラをトラッカとして用いる。
【0047】
実施例で説明すると、図1に示すコミュニケーションロボット10に、図4に黒丸で示すように、19個の反射シールをマーカ78として装着する。他方、そのロボット10に対して触行動を行うなどコミュニケーションを図る人間80に、図5に黒丸で示すように、同じく19個の反射シールをマーカ78として装着する。そして、ロボット10と人間80とを同時に、図2に示す複数のMC(モーションキャプチャ)カメラ821−82nで撮影して、それらのカメラ821−82nからの画像信号をMCコンピュータ84に入力する。MCコンピュータ84では、各マーカ78(図4および図5)の3次元位置(座標)をリアルタイムに計算し、それを、バス52を通して、ロボットコンピュータすなわちCPU50に与える。ただし、MCコンピュータ84とロボットコンピュータ50とは、有線ではなく、無線LANによって連係するようにしてもよい。
【0048】
モーションキャプチャシステム(3次元動作計測装置)76としては、公知のモーションキャプチャシステムが適用されるが、発明者等の実験では、VICON社(http://www./vicon.com/)の光学式のモーションキャプチャシステムを用いた。この場合には12台のMCカメラ82を使用する。
【0049】
なお、ロボット10の動きや姿勢は必ずしもモーションキャプチャを用いなくても把握できる。たとえば、上で説明した各腕や頭部の各軸モータ、右腕モータ62、左腕モータ64、頭部モータ66の回転角度からロボット10の動きや姿勢を計算によって求めることができる。しかしながら、実施例では、CPU50のリアルタイムの計算量を軽減するために、モーションキャプチャ76を用いるようにした。
【0050】
図6は図1および図2に示す実施例のCPU50の動作を説明するためのフローチャートであり、最初のステップS1では、CPU50は、ロボット10のオペレータから停止命令が入力されたかどうか判断する。ステップS1で“YES”が判断されれば、当然、処理は終了する。
【0051】
ステップS1で“NO”が判断されたときには、CPU50は、次のステップS3で、人間80によるロボット10への接触行動があったかどうか、そして接触行動があったならロボットのどの場所または部位に接触されたかを判定する。
【0052】
ここで、図7−図11を参照して、このステップS3のサブルーチンについて詳細に説明する。
【0053】
図7の最初のステップS21では、CPU50は、ロボット10の各部についてタッチセンサの接触反応の有無をチェックする。具体的には、CPU50はセンサ入出力ボード58(図2)を通してタッチセンサ72すなわち図3に示すタッチセンサ721−728について、センサ入力があったかどうか判定する。そして、センサ入力があった場合には、CPU50は、図2のメモリ54内に形成されているタッチセンサフラグTs_flag(n)を「1」にセットする。ただし、カッコ内の「n」は、タッチセンサの番号を表し、実施例の場合「1−8」である。センサ入力がない場合には、CPU50は、該当のフラグTs_flag(n)に「0」を書き込む。なお、センサ入力のあるタッチセンサの個数も同時にカウントされていて、タッチセンサフラグに「1」を書き込むつど、CPU50は、同じメモリ54に形成したタッチセンサカウンタTs_countをインクリメントする(+1)。
【0054】
続くステップS23において、CPU50は、タッチセンサカウンタTs_countのカウント値が「1」以上かどうか判定する。このステップS23で“YES”が判定されるということは、先のステップS21において少なくも1つのタッチセンサからセンサ入力があったこと、つまり人間80(図5)がロボット10のどこかに、実際にタッチ(接触)したことを意味し、“NO”が判定されるということは、人間80がロボット10に実際にはタッチ(接触)しなかったことを意味する。
【0055】
そして、ステップS23で“YES”の場合、続くステップS25において、CPU50は、カウンタTs_countのカウント値が「2以上」かどうか判断する(Ts_count>1)。このステップS25は第2判断手段として機能し、このステップS25で“YES”が判断されるということは、ステップS21で2つ以上のタッチセンサからセンサ入力があったこと、つまりロボット10の複数の場所または部位が人間によって触られたことを意味する。この実施例では、ロボット10の複数の場所にタッチがあった場合でも、どこか1つの場所に特定するようにしている。そのために、ステップS27以下のステップが実行される。
【0056】
第2特定手段を構成するステップS27では、簡単にいうと、CPU50は、そのときの人間80の視線方向によって接触場所を特定する。
【0057】
相手の人間の視線方向は、図5に示すように頭部に取り付けられたマーカの座標から視線ベクトルとして算出する。具体的には、頭部前方に取り付けられた2箇所のマーカ位置を、図9に示すように、右側のものをPright_head_frontとし、左側のものをPleft_head_frontとし、後方に取り付けられたマーカ位置をPcenter_head_backとし、これらのマーカ位置(座標)から視線ベクトルを算出する。視線ベクトルEyeVectorは、Pcenter_head_backからPright_head_frontとPleft_head_frontを結ぶ線の中心位置へのベクトルとする。視線ベクトルは次の数1によって求めることができる。
【0058】
【数1】
【0059】
そして、この視線ベクトルEyeVectorが向く方向のタッチセンサTeを特定する。つまり、視線ベクトルEyeVectorの方向にあるタッチセンサが、8つのタッチセンサ721−728(図3)のどれに該当するか判断する。
【0060】
ここで、まず、ロボットの体の各タッチセンサ721−728の中心座標P1−P8は次のようにして求められる。
【0061】
ロボットの各タッチセンサ721−728の中心点P1−P8は、タッチセンサ721−728の付近に取り付けられたマーカの座標からのベクトルを予め知っていれば、容易に算出できる。ただし、この場合、先の図3および図4に示すように、タッチセンサ721−728の付近のマーカは、ロボットが動作してもタッチセンサ721−728の中心点P1−P8との相対位置が変化しないところに設置しておく必要がある。
【0062】
以下の具体例では、一例として、肩部のタッチセンサ722(725)の中心位置P1−P8の座標Ptouchsensor_shoulderを計算する方法を説明する。
【0063】
肩に取り付けられたマーカの座標Pshoulderから、肩部タッチセンサ722(725)の中心座標Ptouchsensor_shoulderへのベクトルVshoulder(=Ptouchsensor_shoulder−Pshoulder)を予め計測しておく。このベクトルVshoulderを用いることにより、ロボットが動作中の肩部タッチセンサ722(725)の中心位置P1(P5)の座標はPtouchsensor_shoulder=Pshoulder+Vshoulderで求められる。
【0064】
また、ロボット10の各部中心(タッチセンサ中心)点は、ロボットの身体中心座標が分かっていれば、現在のロボットの関節各情報から、順運動学方程式を解くことによっても算出することが可能である。
【0065】
次に、図10において、点と直線の距離dは、数2で求まる。ただし、図10においても数2においても、ベクトル記号は、便宜上省略している。
【0066】
【数2】
【0067】
つまり、視線ベクトルを正規化したベクトルと相手(人間)の頭部後方位置に取り付けたマーカの座標から、視線方向を示す直線を算出し、各タッチセンサの中心座標位置P1−P8(図3)との距離D(n)を上記の点と直線の距離dの式より算出する。ただし、(n)はタッチセンサ721−728の番号、であり、実施例では「1−8」である。
【0068】
具体例において上記数2との対応を考えると、点p1は、相手の頭部後方に取り付けたマーカ位置Pcenter_head_backに対応し、点p2は、各タッチセンサ721−728の中心位置Ptouchsensor_nに対応し、正規化した方向ベクトルv(ただし、ベクトル記号は便宜上省略する)は(EyeVector/|EyeVector|)に相当する。そして、数2に従って距離dを計算し、それをD(n)とする。
【0069】
このようにして、視線方向の直線と各タッチセンサ721−728の中心との間の距離D(n)が求まる。そして、図11に示すように、この距離D(n)が任意の閾値L以下であるタッチセンサを実際に接触行為のあったタッチセンサTeと推定する。
【0070】
その後、CPU50は、ステップS29において、視線方向から推定したタッチセンサTeとステップS21で検出した接触反応箇所とが一致しているかどうか判断する。つまり、フラグTs_flag(Te)が「1」かどうか判断する。ただし、(Te)は推定したタッチセンサ721−728の番号「1−8」のいずれかである。
【0071】
そして、ステップS29で“YES”が判断されると、CPU50は、ステップS31において、視線方向から推定したタッチセンサTeを、実際に接触のあったタッチセンサとして同定し、リターンする。
【0072】
ステップS29で“NO”なら、つまり、視線方向から推定したタッチセンサTeとステップS21で検出した接触反応箇所とが一致しない場合には、ステップS33で判定不能と認識し、リターンする。
【0073】
なお、ステップS25で“NO”が判断されたとき、つまり、ステップS21で接触反応を検出したタッチセンサが1つだけであった場合には、そのとき検出したタッチセンサを実際にタッチされたタッチセンサであると認識し(ステップS35)、リターンする。
【0074】
以上の説明のように、ステップS25−S31,S35は、相手の人間80がロボット10のどこかに実際にタッチした場合に、実接触部位を特定するための第2特定手段として機能する。
【0075】
ただし、この実施例は、人間が実際にはタッチしない場合でも、人間がタッチしようとする「気配」を察知し、実際にタッチがある場合の触行動に対すると同じような反応行動を生起することによって、より生物らしいコミュニケーションロボットシステムを得ようとするものである。そこで、CPU50は、実際にタッチがない場合でも、ステップS37以降を実行して人間の触行動があったかどうか認識する。
【0076】
第1判断手段を構成するステップS37では、CPU50は、相手の人間との間の距離Dbを計算する。
【0077】
まず、ロボット10および人間80のそれぞれの体の中心座標を求める。具体的には、体の中心座標Pbodycenterは両肩に取り付けたマーカの各座標の中心位置で表し、次の数3のとおりである。
【0078】
【数3】
【0079】
数3に従ってロボット10の体と人80の体のそれぞれの中心座標Probot_bodycenterおよびPhuman_bodycenterが求まる。この2点間の距離をDbとすると、距離Dbは数4で与えられる。
【0080】
【数4】
【0081】
その後、第1判断手段を構成するステップS39において、CPU50は、相手の人間の手の長さLaに基づいて、ロボット10が明らかに相手の手の届く範囲に存在するかどうかをチェックする。一例としては、ロボット10が相手80の手の長さLaの2倍の範囲内に存在すれば、相手はロボットにタッチできると考え、上記距離DbがLa*2の範囲内かどうか判断する。ただし、このような閾値(La*2)は適宜変更可能である。
【0082】
ここで、相手の人間の手の長さLaの求め方の一例を説明する。相手の体の肩、肘および手先に取り付けられたマーカの位置から相手の腕の長さを算出する。つまり、数5に示すように、肘から肩までの距離+肘から手先までの距離=腕の長さLaとする。
【0083】
【数5】
【0084】
もし、第1判断手段すなわちステップS39において、“NO”と判断されたなら、次のステップS41において、触行動はないと認識し、リターンする。
【0085】
もし、ステップS39において“YES”なら、図8に示すステップS43に進む。このステップS43以降のステップが第1特定手段を構成するが、まず、ステップS43では、CPU50は、数6に従って、相手の左手とロボットの体の各タッチセンサの中心点Pnとの距離(左手距離)Dlh(n)を算出(n=1−8)するとともに、相手の右手とロボットの体の各タッチセンサの中心点Pnとの距離(右手距離)Drh(n)を算出(n=1−8)する。
【0086】
【数6】
【0087】
そして、次のステップS45では、CPU50は、接近距離L(これは、可変の閾値である。)より小さい左手距離Dlh(n)の中で、最も小さくなるnを左手接触推定部位Tlhとして、図2のメモリ54に形成されている左手レジスタTlhに書き込む(If min{Dlh(n)}<L →Tlh=n)。ただし、接近距離Lより近いDlh(n)がない場合はその左手レジスタTlhには「0」を書き込む(If min{Dlh(n)}>L →Tlh=0)。
【0088】
さらに、同じステップS45で、CPU50は、接近距離L(可変閾値)より小さい右手距離Drh(n)の中で、最も小さくなるnを右手接触推定部位Trhとして、図2のメモリ54に形成されている右手レジスタTrhに書き込む(If min{Drh(n)}<L →Trh=n)。ただし、接近距離Lより近いDrh(n)がない場合はその右手レジスタTrhには「0」を書き込む(If min{Drh(n)}>L →Trh=0)。
【0089】
続くステップS47において、CPU50は、相手の右手および左手が接触しそうなロボットの部位はあるのかどうか判断する。具体的には、左手レジスタTlhと右手レジスタTrhとがともに、「0」かどうかチェックする。その理由は、上で説明したように、レジスタTlhおよびTrhは接近距離Lより近いDlh(n)およびDrh(n)がないときそれぞれ「0」に設定されるので、これが「0」かどうかで接触しそうな部位の有無分かるからである。
【0090】
このステップS47で“NO”が判断されるということは、少なくとも相手の右手か左手かがロボットのどこかに接近していることを意味する。したがって、次のステップS49で、DlhおよびDrhがともに「0」ではないか(Dlh≠0、Drh≠0)どうか、つまり、相手の人間の左手も右手もともに接近距離Lより近い状態かどうか判断する。
【0091】
もし、ステップS49で“YES”が判断されると、つまり、相手の人間の左手および右手がともに接近距離Lより近い場合には、CPU50は、人間がタッチしようといている(距離Lより接近している)ロボットの部位をどこか1つだけ特定する必要がある。その特定方法としては、先に説明したステップS27と同様に、人間の視線方向を推定の手がかりとする。つまり、次にCPU50は、ステップS51において、相手の人間の顔の向きと目の位置より相手の視線の方向を算出し、実際に人間がロボットにタッチしている訳ではないが、その視線に基づいて、近接部位を推定接触タッチセンサTeとして推定する。
【0092】
相手の人間の視線方向を表す視線ベクトルEyeVectorは、先に図5を参照して説明したように、頭部に取り付けられた3つのマーカPright_head_front、Pleft_head_front、Pcenter_head_backの座標から数1に従って算出できる。そして、この視線ベクトルEyeVectorが向く方向のタッチセンサTeを特定する。つまり、視線ベクトルEyeVectorの方向にあるタッチセンサが、8つのタッチセンサ721−728(図3)のどれに該当するか判断する。
【0093】
その後、CPU50は、ステップS53において、視線方向から推定したタッチセンサTeとステップS45で検出した左手レジスタTlhおよび右手レジスタTrhにそれぞれ登録されているタッチセンサの番号とが一致しているかどうか判断する。つまり、Te=TlhまたはTe=Trhが充足されているかどうか、判断する。
【0094】
一致しているとき、つまり、Te=TlhまたはTe=Trhのいずれかが充足されているときには、CPU50は、ステップS55で、そのタッチセンサTeの位置を、人間80がタッチしようとしているロボット10の場所または部位であると特定して、リターンする。
【0095】
一致していないときには、CPU50は、ステップS57において、ロボット10により近いほうの人間の手を推定接触部位として特定する。具体的には、ステップS43で求めた左手距離Dlhおよび右手距離Drhを比較し、左手距離Dlhが右手距離Drhより小さい(Dlh<Drh)ときには、CPU50は、推定接触部位Tとして左手接触部位Tlhを特定して、リターンする。逆に、左手距離Dlhが右手距離Drhより大きい(Dlh>Drh)ときには、CPU50は、推定接触部位Tとして右手接触部位Trhを特定して、リターンする。
【0096】
さらに、先のステップS49で“NO”が判断されたとき、つまり推定接触部位TlhまたはTrhのどちらかが「0」であるときには、どちらか一方の手だけが接触する可能性があるので、CPU50は、ステップS59において、そのどちらか一方の推定接触部位TlhまたはTrhを推定接触部位Tとして特定し、リターンする。
【0097】
最後に、ステップS47で“NO”が判断されたときには、接触しようとする人間の手はなく、推定接触部位TlhおよびTrhはともに「0」であり、その場合には、CPU50は、ステップS61において、接触行為はないと判断して、リターンする。
【0098】
このようにして、図6のステップS3において、人間80が実際にロボット10に対してタッチしているかあるいはタッチしようとしているか(触行動の有無)を検知することができる。
【0099】
そして、ステップS3で図7および図8に示すサブルーチンを実行した結果、人間80による触行動が確認されたときには、ステップS5で“YES”が判断されることになり、CPU50は、図6の次のステップS7において、接触場所または推定接触場所に応じて異なる反応行動をロボット10に命令する。つまり、ステップS7は、反応行動生起手段として機能する。表1はそのような反応行動の一例を示す。ただし、この表1に例示する反応行動は、基本的には、人間に触られるのを嫌がる、という反応行動であるが、逆に、人間に対して好感を表す反応行動やそれらの混在した反応行動を設定することも当然可能である。
【0100】
【表1】
【0101】
表1に示すように、たとえば接触部位または推定接触部位が頭部であるとき、すなわち、Te=T(1)であったとき、CPU50はロボット10を後退させるように、図2に示すモータ制御ボード56を通して車輪モータ70を制御する。
【0102】
たとえば、接触部位または推定接触部位が腹部であるとき、すなわち、Te=T(8)であったとき、CPU50は、腹部を触られないように腹部を手でガードしながらロボット10を後退させるように、モータ制御ボード56を通して、右腕モータ62および左腕モータ64ならびに車輪モータ70を制御する。
【0103】
たとえば、接触部位または推定接触部位が左肩であるとき、すなわち、Te=T(2)であったとき、CPU50は、左肩を人間から遠ざけるようにロボット10を回転させるように、モータ制御ボード56を通して、腰モータ68を制御する。接触部位または推定接触部位が右肩であるとき、すなわち、Te=T(5)であったとき、CPU50は、右肩を人間から遠ざけるように、ロボット10を回転させるように腰モータ68を制御する。
【0104】
たとえば、接触部位または推定接触部位が左上腕であるとき、すなわち、Te=T(3)であったとき、CPU50は、左上腕を人間から遠ざけるようにロボット10を回転させながら左上腕を後ろに下げるように、モータ制御ボード56を通して、腰モータ68を制御するとともに、左腕モータ64を制御する。接触部位または推定接触部位が右上腕であるとき、すなわち、Te=T(6)であったとき、CPU50は、右上腕を人間から遠ざけるようにロボット10を回転させながら左上腕を後ろに下げるように、腰モータ68および右腕モータ62を制御する。
【0105】
たとえば、接触部位または推定接触部位が左前腕であるとき、すなわち、Te=T(4)であったとき、CPU50は、左前腕を人間から遠ざけるようにロボット10を回転させながら左前腕を後ろに下げるように、モータ制御ボード56を通して、腰モータ68を制御するとともに、左腕モータ64を制御する。接触部位または推定接触部位が右上腕であるとき、すなわち、Te=T(7)であったとき、CPU50は、右前腕を人間から遠ざけるようにロボット10を回転させながら左前腕を後ろに下げるように、腰モータ68および右腕モータ62を制御する。
【0106】
なお、いずれの反応行動中でも、ロボット10の眼カメラ46(図2)が近づく人間の手を注視するように、CPU50は、頭部モータ66などを制御する。
【0107】
以上のように、受身状態(Recipient Mode)では、ロボット10の体に人間80の手が実際にタッチするかあるいはタッチするほどに接近するかを検知したときには、所定の反応行動を行うものであるが、図6において、ステップS5で人間の触行動を検知しなかったときには、CPU50は、次のステップS9で、所定時間以上連続して待機状態であるかどうか判断する。ただし、待機状態とは、たとえば、センサボード58(図2)からどんなセンサ入力もない状態をいうものとする。そして、ステップS9で“NO”が判断されるとき、つまり、所定時間内に何らかのセンサ入力があったときには、CPU50は、先のステップS3に戻って先に説明した方法で触行動の有無を検知する。ステップS9で“YES”が判断されたときには、CPU50は、ステップS11で待機状態となる。待機状態では、CPU50は、ロボット10が人間80に対して、アイコンコンタクトを維持したり、対人距離を維持したりするなどの所定の処理を実行するものとする(Idling Mode)。
【0108】
ただし、一定時間以上待機状態が継続した場合には、ロボット10を作用主状態(Agent Mode)として、たとえば自分の手(腕)を使って人間の手を触るなどの主体的行動を実行させることもできる。
【0109】
なお、上で説明した実施例では人間やロボットの各部位の3次元位置座標を検出するために、マーカ78をカメラ801−80n(図2)で撮影する方式のモーションキャプチャを採用した。しかしながら、他の方法(たとえば磁気)を利用するモーションキャプチャを用いてもよく、さらに、モーションキャプチャではなく、一般的な画像処理によって人間やロボットの腕の状態や位置を検出するようにしてもよい。また、ロボット10の場合には、各関節角を検知することによって各部位の3次元位置座標を特定するようにしてもよい。
【0110】
また、実施例では、第1特定手段によって所定距離以内に接近した部位が2以上あるとき、その中から1つの部位を推定接触部位として特定する際の条件として、人間の視線が向けられているかどうかという条件を用いた。しかしながら、第1特定手段は、たとえば人間の手がより接近していることを条件で1つの推定接触部位を特定するなど、別の条件を採用してもよい。
【図面の簡単な説明】
【0111】
【図1】図1はこの発明の一実施例のコミュニケーションロボットの構成の一例を示す図解図である。
【図2】図2は図1に示すコミュニケーションロボットの電気的な構成を示すブロック図である。
【図3】図3は図1に示すコミュニケーションロボットに設けられているタッチセンサの配置を例示する図解図である。
【図4】図4は図1に示すコミュニケーションロボットに装着したマーカの配置を例示する図解図である。
【図5】図5はコミュニケーションロボットと協働する人間に装着したマーカの配置を例示する図解図である。
【図6】図6はこの実施例の動作を示すフロー図である。
【図7】図7は図6のサブルーチンの一部を示すフロー図である。
【図8】図8は図7に後続するサブルーチンの一部を示すフロー図である。
【図9】図9は実施例における人間の視線方向を検出する方法を説明する図解図である。
【図10】図10は実施例における人間の視線方向の直線とタッチセンサの中心との間の距離を検出する方法を説明する図解図である。
【図11】図11は実施例におけるタッチ場所または部位を特定または推定する方法を説明する図解図である。
【符号の説明】
【0112】
10 …コミュニケーションロボット
50 …CPU
72,721−728 …タッチセンサ
76 …モーションキャプチャ
821−82n …モーションキャプチャ(MC)カメラ
84 …MCコンピュータ
【特許請求の範囲】
【請求項1】
人間による触行動を検知するコミュニケーションロボットであって、
人間が所定範囲内に存在するかどうか検出する存在検出手段、および
前記存在検出手段によって人間が前記所定範囲内に存在することを検出したとき、前記人間の手が所定距離以内に接近している部位を推定接触部位として特定する第1特定手段を備える、コミュニケーションロボットシステム。
【請求項2】
前記第1特定手段は、前記人間の手が前記所定距離以内に接近している部位が複数あるかどうか判断する第1判断手段を含み、前記第1判断手段で前記人間の手が前記所定距離以内に接近している部位が複数あることを検出したとき所定条件を満たす1つの部位を前記推定接触部位として特定する、請求項1記載のコミュニケーションロボット。
【請求項3】
前記所定条件は前記人間の視線が向いているかどうかである、請求項2記載のコミュニケーションロボット。
【請求項4】
前記第1特定手段は、前記人間の手が前記所定距離以内に接近している部位が1つだけのときには当該部位を前記推定接触部位として特定する、請求項2または3記載のコミュニケーションロボット。
【請求項5】
前記第1特定手段が特定した推定接触部位に応じて反応行動を生起させる反応行動生起手段をさらに備える、請求項1ないし4のいずれかに記載のコミュニケーションロボット。
【請求項6】
複数の部位に設けられた複数のタッチセンサ、および
前記タッチセンサからのセンサ入力に応じて人間が実際にタッチした実接触部位を特定する第2特定手段をさらに備える、請求項1ないし5のいずれかに記載のコミュニケーションロボット。
【請求項7】
前記第2特定手段は、複数のタッチセンサからセンサ入力があるかどうか判断する第2判断手段を含み、前記第2判断手段で複数のタッチセンサからセンサ入力があるかことを検出したとき前記人間の視線方向に応じて1つの実接触部位を特定する、請求項6記載のコミュニケーションロボット。
【請求項1】
人間による触行動を検知するコミュニケーションロボットであって、
人間が所定範囲内に存在するかどうか検出する存在検出手段、および
前記存在検出手段によって人間が前記所定範囲内に存在することを検出したとき、前記人間の手が所定距離以内に接近している部位を推定接触部位として特定する第1特定手段を備える、コミュニケーションロボットシステム。
【請求項2】
前記第1特定手段は、前記人間の手が前記所定距離以内に接近している部位が複数あるかどうか判断する第1判断手段を含み、前記第1判断手段で前記人間の手が前記所定距離以内に接近している部位が複数あることを検出したとき所定条件を満たす1つの部位を前記推定接触部位として特定する、請求項1記載のコミュニケーションロボット。
【請求項3】
前記所定条件は前記人間の視線が向いているかどうかである、請求項2記載のコミュニケーションロボット。
【請求項4】
前記第1特定手段は、前記人間の手が前記所定距離以内に接近している部位が1つだけのときには当該部位を前記推定接触部位として特定する、請求項2または3記載のコミュニケーションロボット。
【請求項5】
前記第1特定手段が特定した推定接触部位に応じて反応行動を生起させる反応行動生起手段をさらに備える、請求項1ないし4のいずれかに記載のコミュニケーションロボット。
【請求項6】
複数の部位に設けられた複数のタッチセンサ、および
前記タッチセンサからのセンサ入力に応じて人間が実際にタッチした実接触部位を特定する第2特定手段をさらに備える、請求項1ないし5のいずれかに記載のコミュニケーションロボット。
【請求項7】
前記第2特定手段は、複数のタッチセンサからセンサ入力があるかどうか判断する第2判断手段を含み、前記第2判断手段で複数のタッチセンサからセンサ入力があるかことを検出したとき前記人間の視線方向に応じて1つの実接触部位を特定する、請求項6記載のコミュニケーションロボット。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2007−69303(P2007−69303A)
【公開日】平成19年3月22日(2007.3.22)
【国際特許分類】
【出願番号】特願2005−258855(P2005−258855)
【出願日】平成17年9月7日(2005.9.7)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成17年4月1日付け、支出負担行為担当官 総務省大臣官房会計課企画官、研究テーマ「ネットワーク・ヒューマン・インターフェースの総合的な研究開発(ネットワークロボットの技術)」に関する委託研究、産業活力再生特別措置法第30条の適用を受ける特許出願
【出願人】(393031586)株式会社国際電気通信基礎技術研究所 (905)
【Fターム(参考)】
【公開日】平成19年3月22日(2007.3.22)
【国際特許分類】
【出願日】平成17年9月7日(2005.9.7)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成17年4月1日付け、支出負担行為担当官 総務省大臣官房会計課企画官、研究テーマ「ネットワーク・ヒューマン・インターフェースの総合的な研究開発(ネットワークロボットの技術)」に関する委託研究、産業活力再生特別措置法第30条の適用を受ける特許出願
【出願人】(393031586)株式会社国際電気通信基礎技術研究所 (905)
【Fターム(参考)】
[ Back to top ]