(57)【要約】      （修正有）【課題】より生物らしい反応行動を実行するロボットを提供する。【解決手段】ロボットとそのロボットおよび協働する人間の各部位の３次元位置座標に基づいて、人間が一定距離以内にロボットに接近しているかどうか判断したとき、ステップＳ４５で、人間の手とロボットの各タッチセンサとの間の距離Ｄｌｈ（ｎ），Ｄｒｈ（ｎ）を検出し、その距離が所定の接近距離Ｌ以内でかつ最も小さいロボットの部位（タッチセンサ）Ｔｌｈ，Ｔｒｈを検出する。Ｔｌｈ，Ｔｒｈが両方とも「０」でないときには、ＣＰＵは、人間の視線方向に基づいて推定接触部位Ｔｅを特定または推定する。ただし、視線方向と推定接触部位とが一致しないときには、距離Ｄｌｈ（ｎ）およびＤｒｈ（ｎ）の小さい方を推定接触部位Ｔｅとして特定する。【選択図】図８
2007069303.tif 000002
【特許請求の範囲】
【請求項１】
人間による触行動を検知するコミュニケーションロボットであって、
人間が所定範囲内に存在するかどうか検出する存在検出手段、および
前記存在検出手段によって人間が前記所定範囲内に存在することを検出したとき、前記人間の手が所定距離以内に接近している部位を推定接触部位として特定する第１特定手段を備える、コミュニケーションロボットシステム。
【請求項２】
前記第１特定手段は、前記人間の手が前記所定距離以内に接近している部位が複数あるかどうか判断する第１判断手段を含み、前記第１判断手段で前記人間の手が前記所定距離以内に接近している部位が複数あることを検出したとき所定条件を満たす１つの部位を前記推定接触部位として特定する、請求項１記載のコミュニケーションロボット。
【請求項３】
前記所定条件は前記人間の視線が向いているかどうかである、請求項２記載のコミュニケーションロボット。
【請求項４】
前記第１特定手段は、前記人間の手が前記所定距離以内に接近している部位が１つだけのときには当該部位を前記推定接触部位として特定する、請求項２または３記載のコミュニケーションロボット。
【請求項５】
前記第１特定手段が特定した推定接触部位に応じて反応行動を生起させる反応行動生起手段をさらに備える、請求項１ないし４のいずれかに記載のコミュニケーションロボット。
【請求項６】
複数の部位に設けられた複数のタッチセンサ、および
前記タッチセンサからのセンサ入力に応じて人間が実際にタッチした実接触部位を特定する第２特定手段をさらに備える、請求項１ないし５のいずれかに記載のコミュニケーションロボット。
【請求項７】
前記第２特定手段は、複数のタッチセンサからセンサ入力があるかどうか判断する第２判断手段を含み、前記第２判断手段で複数のタッチセンサからセンサ入力があるかことを検出したとき前記人間の視線方向に応じて１つの実接触部位を特定する、請求項６記載のコミュニケーションロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はコミュニケーションロボットに関し、特にたとえば、タッチセンサを備え、人間の触行動に反応する、コミュニケーションロボットに関する。
【背景技術】
【０００２】
この種のコミュニケーションロボット（人とコミュニケーションを行うことができるロボット）の一例が、特許文献１に開示される。
【特許文献１】特開２００２−３５５７８３[B25J 13/00 A63H 3/33 11/00 B25J 5/00]
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特許文献１におけるコミュニケーションロボットでは、人がタッチセンサに触れると、その人間の触行動に反応して、触行動を知覚したことを人間に知らせ、それによって人間とのコミュニケーションの一層の円滑化を図っている。
【０００４】
他方、人間に限らず他の動物でも同様であるが、他人が実際にタッチする前に、何らかの手段で、そのことを事前に察知し、その触行動を回避したり、あるいはそれに迎合する反応行動をすることがある。しかしながら、特許文献１の従来技術では、コミュニケーションロボットは人間が実際にロボットにタッチするまでは触行動を検知することはできず、その意味では、「生物らしさ」をやや欠いているといわざるを得ない。
【０００５】
それゆえに、この発明の主たる目的は、新規な、コミュニケーションロボットシステムを提供することである。
【０００６】
この発明の他の目的は、より生物らしい反応が可能な、コミュニケーションロボットシステムを提供することである。
【課題を解決するための手段】
【０００７】
請求項１の発明は、人間による触行動を検知するコミュニケーションロボットであって、人間が所定範囲内に存在するかどうか検出する存在検出手段、および存在検出手段によって人間が所定範囲内に存在することを検出したとき、人間の手が所定距離以内に接近している部位を推定接触部位として特定する第１特定手段を備える、コミュニケーションロボットシステムである。
【０００８】
請求項１の発明では、コミュニケーションロボット（実施例で対応または相当する部分を例示する参照符号は「１０」。以下同様。）は、ＣＰＵ（５０）を含み、このＣＰＵは、存在検出手段として働き、たとえばモーションキャプチャ（７６）からのロボットおよび人間のそれぞれの部位の三次元座標に基づいて、人間がロボットから所定範囲内に存在するかどうか判断する。具体的には、ＣＰＵは、人間が、その人間の手の長さを基準とした所定距離の範囲に存在するかどうか判断する（Ｓ３７，Ｓ３９）。ＣＰＵはまた、第１特定手段として機能し、人間が所定範囲内に存在すると判断したとき、人間の手が所定距離以内に接近している部位があるかどうか判断し、そのような部位があれば、その部位を推定接触部位として特定する（Ｓ４９-Ｓ５９））。
【０００９】
請求項１の発明によれば、人間が実際にタッチしなくても、人間の触行動を検知することができ、より生物らしい、コミュニケーションロボットが得られる。
【００１０】
請求項２の発明は、第１特定手段は、人間の手が所定距離以内に接近している部位が複数あるかどうか判断する第１判断手段を含み、第１判断手段で人間の手が所定距離以内に接近している部位が複数あることを検出したとき所定条件を満たしている１つの部位を推定接触部位として特定する、請求項１記載のコミュニケーションロボットである。
【００１１】
請求項２の発明では、ＣＰＵはまた、第１判断手段として機能し、人間の手が所定距離以内に接近している部位が複数あるかどうか判断する（Ｓ４９）。そして、第１特定手段は、第１判断手段で人間の手が所定距離以内に接近している部位が複数あることを検出したとき所定条件を満たす部位を推定接触部位として特定する（Ｓ５７）。
【００１２】
請求項２の発明によれば、人間の手が接近した部位が複数存在しても、そのどれか１つを推定接触部位として特定できるので、触行動に対する反応行動を生起する場合でも、正しい反応行動を生起させることができる。
【００１３】
請求項３の発明は、所定条件は前記人間の視線が向いているかどうかである、請求項２記載のコミュニケーションロボットである。
【００１４】
請求項３の発明では、ＣＰＵは、たとえば人間の視線ベクトルを計算することによって、人間の視線が向く方向を推定し、その視線が向けられた部位が、人間が接触しようとしている部位であるとして特定する（Ｓ５１）ので、人間が関心を持っている部位を正しく推定接触部位として特定することができる。
【００１５】
請求項４の発明は、第１特定手段は、人間の手が所定距離以内に接近している部位が１つだけのときには当該部位を推定接触部位として特定する、請求項２または３記載のコミュニケーションロボットである。
【００１６】
請求項４の発明では、ＣＰＵは、人間の手が所定距離以内に接近している部位が１つだけのときには、その部位を推定接触部位として特定する（Ｓ５５）。
【００１７】
請求項５の発明は、第１特定手段が特定した推定接触部位に応じて反応行動を生起させる反応行動生起所定手段をさらに備える、請求項１ないし４のいずれかに記載のコミュニケーションロボットである。
【００１８】
請求項５の発明では、ＣＰＵは、また反応行動生起手段として機能し、反応行動生起手段は、推定接触部位に応じて異なる反応行動（表１）を生起する（Ｓ７）。したがって、人間が実際にタッチしなくても推定接触部位に応じた反応行動を実行することができる。
【００１９】
請求項６の発明は、複数の部位に設けられた複数のタッチセンサ、およびタッチセンサからのセンサ入力に応じて人間が実際にタッチした実接触部位を特定する第２特定手段をさらに備える、請求項１ないし５のいずれかに記載のコミュニケーションロボットである。
【００２０】
請求項６の発明では、ＣＰＵは複数のタッチセンサ（７２１−７２８）からセンサ入力によって、人間が実際にタッチした実接触部位も特定できるので、この点では従来のコミュニケーションロボットと同様に人間による触行動を感知することができる。
【００２１】
請求項７の発明は、第２特定手段は、複数のタッチセンサからセンサ入力があるかどうか判断する第２判断手段を含み、第２判断手段で複数のタッチセンサからセンサ入力があるかことを検出したとき人間の視線方向に応じて１つの実接触部位を特定する、請求項６記載のコミュニケーションロボットである。
【００２２】
請求項７の発明では、ＣＰＵ（第２特定手段）は、第２判断手段（Ｓ２５）で複数のタッチセンサからセンサ入力があるかことを検出したとき＜人間の視線方向に応じて１つの実接触部位を特定する（Ｓ２７−Ｓ３１）。人間が関心を持っている部位を正しく推定接触部位として特定することができる。
【発明の効果】
【００２３】
この発明によれば、人間が実際にタッチしなくても、人間の触行動を検知することができ、場合によってはその触行動に対する反応行動を生起することができるので、従来のものに比べてより生物らしい、コミュニケーションロボットが得られる。
【００２４】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００２５】
図１に示すこの発明の一実施例のコミュニケーションロボット（以下、単に「ロボット」ということがある。）１０は、台車１２を含み、この台車１２の下面には、このロボット１０を自律移動させる車輪１４が設けられる。この車輪１４は、車輪モータ（図２において参照番号「７０」で示す。）によって駆動され、台車１２すなわちロボット１０を前後左右任意の方向に動かすことができる。なお、図示しないが、この台車１２の前面には、衝突センサ（図２において、参照番号「７４」で示す。）が取り付けられ、この衝突センサは、台車１２への人や他の障害物の接触を検知する。そして、ロボット１０の移動中に障害物との接触を検知すると、直ちに車輪１４の駆動を停止してロボット１０の移動を急停止させて衝突を未然に防ぐ。
【００２６】
なお、ロボット１０の背の高さは、この実施例では、人、特に子供に威圧感をあたえることがないように、１００ｃｍ程度とされている。ただし、この背の高さは任意に変更可能である。
【００２７】
台車１２の上には、多角形柱のセンサ取付パネル１６が設けられ、このセンサ取付パネル１６の各面には、超音波距離センサ１８が取り付けられる。この超音波距離センサ１８は、取付パネル１６すなわちロボット１０の周囲の主として人との間の距離を計測するものである。
【００２８】
台車１２の上には、さらに、下部が上述の取付パネル１６に囲まれて、ロボット１０の胴体が直立するように取り付けられる。この胴体は下部胴体２０と上部胴体２２とから構成され、これら下部胴体２０および上部胴体２２は、連結部２４によって、連結される。連結部２４には、図示しないが、昇降機構が内蔵されていて、この昇降機構を用いることによって、上部胴体２２の高さすなわちロボット１０の高さを変化させることができる。昇降機構は、後述のように、腰モータ（図２において参照番号「６８」で示す。）によって駆動される。上で述べたロボット１０の身長１００ｃｍは、上部胴体２２をそれの最下位置にしたときの値である。したがって、ロボット１０の身長は１００ｃｍ以上にすることができる。
【００２９】
ただし、下部胴体２０と上部胴体２２とを一体化して、身長を調整できない１つの胴体とすることも可能である。
【００３０】
上部胴体２２のほぼ中央には、１つの全方位カメラ２６と、１つのマイク２８とが設けられる。全方位カメラ２６は、ロボット１０の周囲を撮影するもので、後述の眼カメラ４６と区別される。マイク２８は、周囲の音、とりわけ人の声を取り込む。
【００３１】
上部胴体２２の両肩には、それぞれ、肩関節３０Ｒおよび３０Ｌによって、上腕３２Ｒおよび３２Ｌが取り付けられる。肩関節３０Ｒおよび３０Ｌは、それぞれ３軸の自由度を有する。すなわち、肩関節３０Ｒは、Ｘ軸，Ｙ軸およびＺ軸のそれぞれの軸廻りにおいて上腕３２Ｒの角度を制御できる。Ｙ軸は、上腕３２Ｒの長手方向（または軸）に並行な軸であり、Ｘ軸およびＺ軸は、そのＹ軸に、それぞれ異なる方向から直交する軸である。肩関節３０Ｌは、Ａ軸，Ｂ軸およびＣ軸のそれぞれの軸廻りにおいて上腕３２Ｌの角度を制御できる。Ｂ軸は、上腕３２Ｌの長手方向（または軸）に並行な軸であり、Ａ軸およびＣ軸は、そのＢ軸に、それぞれ異なる方向から直交する軸である。
【００３２】
上腕３２Ｒおよび３２Ｌのそれぞれの先端には、肘関節３４Ｒおよび３４Ｌを介して、前腕３６Ｒおよび３６Ｌが取り付けられる。肘関節３４Ｒおよび３４Ｌは、それぞれ、Ｗ軸およびＤ軸の軸廻りにおいて、前腕３６Ｒおよび３６Ｌの角度を制御できる。
【００３３】
なお、上腕３２Ｒおよび３２Ｌならびに前腕３６Ｒおよび３６Ｌ（いずれも図１）の変位を制御するＸ，Ｙ，Ｘ，Ｗ軸およびＡ，Ｂ，Ｃ，Ｄ軸では、「０度」がホームポジションであり、このホームポジションでは、上腕３２Ｒおよび３２Ｌならびに前腕３６Ｒおよび３６Ｌは下方向に向けられる。
【００３４】
また、図３に示すように、上部胴体２２の肩関節３０Ｒおよび３０Ｌを含む肩の部分や上述の上腕３２Ｒおよび３２Ｌならびに前腕３６Ｒおよび３６Ｌ、さらには頭部４２や腹部には、それぞれ、タッチセンサ７２１−７２８が設けられていて、これらのタッチセンサ７２１−７２８は、人がロボット１０のこれらの部位に接触したかどうかを検知する。これらのタッチセンサは図２においては参照番号７２で包括的に示す。
【００３５】
前腕３６Ｒおよび３６Ｌのそれぞれの先端には、手に相当する球体３８Ｒおよび３８Ｌがそれぞれ固定的に取り付けられる。なお、この球体３８Ｒおよび３８Ｌに代えて、この実施例のロボット１０と異なり指の機能が必要な場合には、人の手の形をした「手」を用いることも可能である。
【００３６】
上部胴体２２の中央上方には、首関節４０を介して、頭部４２が取り付けられる。この首関節４０は、３つの自由度を有し、Ｓ軸，Ｔ軸およびＵ軸の各軸廻りに角度制御可能である。Ｓ軸は首から真上に向かう軸であり、Ｔ軸およびＵ軸は、それぞれ、このＳ軸に対して異なる方向で直交する軸である。頭部４２には、人の口に相当する位置に、スピーカ４４が設けられ、目に相当する位置に眼カメラ４６が設けられる。スピーカ４４は、ロボット１０が、それの周囲の人に対して音声または声によってコミュニケーションを図るために用いられる。眼カメラ４６は、ロボット１０に接近した人の顔や他の部分を撮影してその映像信号を取り込む。ただし、スピーカ４４は、ロボット１０の他の部位たとえば胴体に設けられてもよい。
【００３７】
なお、上述の全方位カメラ２６および眼カメラ４６のいずれも、たとえばＣＣＤやＣＭＯＳのように固体撮像素子を用いるカメラであってよい。
【００３８】
図１に示すロボット１０の制御系の構成が図２のブロック図に示される。図２に示すように、このロボット１０は、全体の制御のためにマイクロコンピュータまたはＣＰＵ５０を含み、このＣＰＵ５０には、バス５２を通して、メモリ５４，モータ制御ボード５６，センサ入力／出力ボード５８および音声入力／出力ボード６０が接続される。
【００３９】
メモリ５４は、図示しないが、ＲＯＭやＲＡＭを含み、ＲＯＭにはこのロボット１０の制御プログラムが予め書き込まれているとともに、スピーカ４４から発生すべき音声または声の音声データが格納されている。ＲＡＭは、一時記憶メモリとして用いられるとともに、ワーキングメモリとして利用され得る。
【００４０】
モータ制御ボード５６は、たとえばＤＳＰ(Digital Signal Processor)で構成され、各腕や頭部の各軸モータを制御する。すなわち、モータ制御ボード５６は、ＣＰＵ５０からの制御データを受け、右肩関節３０ＲのＸ，ＹおよびＺ軸のそれぞれの角度を制御する３つのモータと右肘関節３４Ｒの軸Ｗの角度を制御する１つのモータとの計４つのモータ（図２ではまとめて、「右腕モータ」として示す。）６２の回転角度を調節する。また、モータ制御ボード５６は、左肩関節３０ＬのＡ，ＢおよびＣ軸のそれぞれの角度を制御する３つのモータと左肘関節３４ＬのＤ軸の角度を制御する１つのモータとの計４つのモータ（図２ではまとめて、「左腕モータ」として示す。）６４の回転角度を調節する。モータ制御ボード５６は、また、頭部４２のＳ，ＴおよびＵ軸のそれぞれの角度を制御する３つのモータ（図２ではまとめて、「頭部モータ」として示す。）６６の回転角度を調節する。モータ制御ボード５６は、また、腰モータ６８、および車輪１４を駆動する２つのモータ（図２ではまとめて、「車輪モータ」として示す。）７０を制御する。
【００４１】
なお、この実施例の上述のモータは、車輪モータ７０を除いて、制御を簡単化するためにそれぞれステッピングモータまたはパルスモータであるが、車輪モータ７０と同様に、直流モータであってよい。
【００４２】
センサ入力／出力ボード５８も、同様に、ＤＳＰで構成され、各センサやカメラからの信号を取り込んでＣＰＵ５０に与える。すなわち、超音波距離センサ１８の各々からの反射時間に関するデータがこのセンサ入力／出力ボード５８を通して、ＣＰＵ５０に入力される。また、全方位カメラ２６からの映像信号が、必要に応じてこのセンサ入力／出力ボード５８で所定の処理が施された後、ＣＰＵ５０に入力される。眼カメラ４６からの映像信号も、同様にして、ＣＰＵ５０に与えられる。なお、この図２では、図１で説明したタッチセンサは、まとめて「タッチセンサ７２」として表され、それらのタッチセンサ７２からの信号がセンサ入力／出力ボード５８を介して、ＣＰＵ５０に与えられる。
【００４３】
なお、スピーカ４４には音声入力／出力ボード６０を介して、ＣＰＵ５０から、合成音声データが与えられ、それに応じて、スピーカ４４からはそのデータに従った音声または声が出力される。そして、マイク２８からの音声入力が、音声入力／出力ボード６０を介して、ＣＰＵ５０に取り込まれる。
【００４４】
ここで、図２では包括的に示されるタッチセンサ７２について詳細に説明する。この実施例のロボット１０では、図３に示すように、合計８つのタッチセンサ７２１−７２８が設けられる。タッチセンサ７２１は、頭部４２の上面（頭頂）に設けられ、タッチセンサ７２２および７２５がそれぞれ左肩および右肩に設けられる。左手上腕３２Ｌおよび左手前腕３４Ｌにタッチセンサ７２３および７２４が配置され、右手上腕３２Ｒおよび左手前腕３４Ｒにタッチセンサ７２５６および７２７が配置される。そして、胸および／または腹にタッチセンサ７２８が設けられる。なお、タッチセンサ７２１−７２８には、それぞれ、（１）−（８）の番号が付与され、それらの中心位置をＰ１−Ｐ８で表している。
【００４５】
ただし、タッチセンサの個数やそれらが配置される場所または部位は、この実施例に限定されるものではなく、適宜変更することができる。
【００４６】
さらに、実施例のコミュニケーションロボットシステムでは、図２に示す光学式モーションキャプチャ７６を用いる。モーションキャプチャはよく知られているように、現実の人物や物体の動きや姿勢をディジタル的に記録するシステムであり、人体や物体に装着するマーカ(marker)とこれを検出するトラッカ(tracker)とを組み合わせてキャプチャする。光学式では、たとえばマーカとして反射シールを用い、複数のカメラをトラッカとして用いる。
【００４７】
実施例で説明すると、図１に示すコミュニケーションロボット１０に、図４に黒丸で示すように、１９個の反射シールをマーカ７８として装着する。他方、そのロボット１０に対して触行動を行うなどコミュニケーションを図る人間８０に、図５に黒丸で示すように、同じく１９個の反射シールをマーカ７８として装着する。そして、ロボット１０と人間８０とを同時に、図２に示す複数のＭＣ（モーションキャプチャ）カメラ８２１−８２ｎで撮影して、それらのカメラ８２１−８２ｎからの画像信号をＭＣコンピュータ８４に入力する。ＭＣコンピュータ８４では、各マーカ７８（図４および図５）の３次元位置（座標）をリアルタイムに計算し、それを、バス５２を通して、ロボットコンピュータすなわちＣＰＵ５０に与える。ただし、ＭＣコンピュータ８４とロボットコンピュータ５０とは、有線ではなく、無線ＬＡＮによって連係するようにしてもよい。
【００４８】
モーションキャプチャシステム（３次元動作計測装置）７６としては、公知のモーションキャプチャシステムが適用されるが、発明者等の実験では、ＶＩＣＯＮ社（ｈｔｔｐ：／／ｗｗｗ．／ｖｉｃｏｎ．ｃｏｍ／）の光学式のモーションキャプチャシステムを用いた。この場合には１２台のＭＣカメラ８２を使用する。
【００４９】
なお、ロボット１０の動きや姿勢は必ずしもモーションキャプチャを用いなくても把握できる。たとえば、上で説明した各腕や頭部の各軸モータ、右腕モータ６２、左腕モータ６４、頭部モータ６６の回転角度からロボット１０の動きや姿勢を計算によって求めることができる。しかしながら、実施例では、ＣＰＵ５０のリアルタイムの計算量を軽減するために、モーションキャプチャ７６を用いるようにした。
【００５０】
図６は図１および図２に示す実施例のＣＰＵ５０の動作を説明するためのフローチャートであり、最初のステップＳ１では、ＣＰＵ５０は、ロボット１０のオペレータから停止命令が入力されたかどうか判断する。ステップＳ１で“ＹＥＳ”が判断されれば、当然、処理は終了する。
【００５１】
ステップＳ１で“ＮＯ”が判断されたときには、ＣＰＵ５０は、次のステップＳ３で、人間８０によるロボット１０への接触行動があったかどうか、そして接触行動があったならロボットのどの場所または部位に接触されたかを判定する。
【００５２】
ここで、図７−図１１を参照して、このステップＳ３のサブルーチンについて詳細に説明する。
【００５３】
図７の最初のステップＳ２１では、ＣＰＵ５０は、ロボット１０の各部についてタッチセンサの接触反応の有無をチェックする。具体的には、ＣＰＵ５０はセンサ入出力ボード５８（図２）を通してタッチセンサ７２すなわち図３に示すタッチセンサ７２１−７２８について、センサ入力があったかどうか判定する。そして、センサ入力があった場合には、ＣＰＵ５０は、図２のメモリ５４内に形成されているタッチセンサフラグTs_flag(n)を「１」にセットする。ただし、カッコ内の「ｎ」は、タッチセンサの番号を表し、実施例の場合「１−８」である。センサ入力がない場合には、ＣＰＵ５０は、該当のフラグＴｓ＿ｆｌａｇ（ｎ）に「０」を書き込む。なお、センサ入力のあるタッチセンサの個数も同時にカウントされていて、タッチセンサフラグに「１」を書き込むつど、ＣＰＵ５０は、同じメモリ５４に形成したタッチセンサカウンタＴｓ＿ｃｏｕｎｔをインクリメントする（＋１）。
【００５４】
続くステップＳ２３において、ＣＰＵ５０は、タッチセンサカウンタＴｓ＿ｃｏｕｎｔのカウント値が「１」以上かどうか判定する。このステップＳ２３で“ＹＥＳ”が判定されるということは、先のステップＳ２１において少なくも１つのタッチセンサからセンサ入力があったこと、つまり人間８０（図５）がロボット１０のどこかに、実際にタッチ（接触）したことを意味し、“ＮＯ”が判定されるということは、人間８０がロボット１０に実際にはタッチ（接触）しなかったことを意味する。
【００５５】
そして、ステップＳ２３で“ＹＥＳ”の場合、続くステップＳ２５において、ＣＰＵ５０は、カウンタＴｓ＿ｃｏｕｎｔのカウント値が「２以上」かどうか判断する（Ｔｓ＿ｃｏｕｎｔ＞１）。このステップＳ２５は第２判断手段として機能し、このステップＳ２５で“ＹＥＳ”が判断されるということは、ステップＳ２１で２つ以上のタッチセンサからセンサ入力があったこと、つまりロボット１０の複数の場所または部位が人間によって触られたことを意味する。この実施例では、ロボット１０の複数の場所にタッチがあった場合でも、どこか１つの場所に特定するようにしている。そのために、ステップＳ２７以下のステップが実行される。
【００５６】
第２特定手段を構成するステップＳ２７では、簡単にいうと、ＣＰＵ５０は、そのときの人間８０の視線方向によって接触場所を特定する。
【００５７】
相手の人間の視線方向は、図５に示すように頭部に取り付けられたマーカの座標から視線ベクトルとして算出する。具体的には、頭部前方に取り付けられた２箇所のマーカ位置を、図９に示すように、右側のものをＰｒｉｇｈｔ＿ｈｅａｄ＿ｆｒｏｎｔとし、左側のものをＰｌｅｆｔ＿ｈｅａｄ＿ｆｒｏｎｔとし、後方に取り付けられたマーカ位置をＰｃｅｎｔｅｒ＿ｈｅａｄ＿ｂａｃｋとし、これらのマーカ位置（座標）から視線ベクトルを算出する。視線ベクトルＥｙｅＶｅｃｔｏｒは、Ｐｃｅｎｔｅｒ＿ｈｅａｄ＿ｂａｃｋからＰｒｉｇｈｔ＿ｈｅａｄ＿ｆｒｏｎｔとＰｌｅｆｔ＿ｈｅａｄ＿ｆｒｏｎｔを結ぶ線の中心位置へのベクトルとする。視線ベクトルは次の数１によって求めることができる。
【００５８】
【数１】
2007069303.tif 000003
【００５９】
そして、この視線ベクトルＥｙｅＶｅｃｔｏｒが向く方向のタッチセンサＴｅを特定する。つまり、視線ベクトルＥｙｅＶｅｃｔｏｒの方向にあるタッチセンサが、８つのタッチセンサ７２１−７２８（図３）のどれに該当するか判断する。
【００６０】
ここで、まず、ロボットの体の各タッチセンサ７２１−７２８の中心座標Ｐ１−Ｐ８は次のようにして求められる。
【００６１】
ロボットの各タッチセンサ７２１−７２８の中心点Ｐ１−Ｐ８は、タッチセンサ７２１−７２８の付近に取り付けられたマーカの座標からのベクトルを予め知っていれば、容易に算出できる。ただし、この場合、先の図３および図４に示すように、タッチセンサ７２１−７２８の付近のマーカは、ロボットが動作してもタッチセンサ７２１−７２８の中心点Ｐ１−Ｐ８との相対位置が変化しないところに設置しておく必要がある。
【００６２】
以下の具体例では、一例として、肩部のタッチセンサ７２２（７２５）の中心位置Ｐ１−Ｐ８の座標Ｐｔｏｕｃｈｓｅｎｓｏｒ＿ｓｈｏｕｌｄｅｒを計算する方法を説明する。
【００６３】
肩に取り付けられたマーカの座標Ｐｓｈｏｕｌｄｅｒから、肩部タッチセンサ７２２（７２５）の中心座標Ｐｔｏｕｃｈｓｅｎｓｏｒ＿ｓｈｏｕｌｄｅｒへのベクトルＶｓｈｏｕｌｄｅｒ（＝Ｐｔｏｕｃｈｓｅｎｓｏｒ＿ｓｈｏｕｌｄｅｒ−Ｐｓｈｏｕｌｄｅｒ）を予め計測しておく。このベクトルＶｓｈｏｕｌｄｅｒを用いることにより、ロボットが動作中の肩部タッチセンサ７２２（７２５）の中心位置Ｐ１（Ｐ５）の座標はＰｔｏｕｃｈｓｅｎｓｏｒ＿ｓｈｏｕｌｄｅｒ＝Ｐｓｈｏｕｌｄｅｒ＋Ｖｓｈｏｕｌｄｅｒで求められる。
【００６４】
また、ロボット１０の各部中心（タッチセンサ中心）点は、ロボットの身体中心座標が分かっていれば、現在のロボットの関節各情報から、順運動学方程式を解くことによっても算出することが可能である。
【００６５】
次に、図１０において、点と直線の距離ｄは、数２で求まる。ただし、図１０においても数２においても、ベクトル記号は、便宜上省略している。
【００６６】
【数２】
2007069303.tif 000004
【００６７】
つまり、視線ベクトルを正規化したベクトルと相手（人間）の頭部後方位置に取り付けたマーカの座標から、視線方向を示す直線を算出し、各タッチセンサの中心座標位置Ｐ１−Ｐ８（図３）との距離Ｄ（ｎ）を上記の点と直線の距離ｄの式より算出する。ただし、（ｎ）はタッチセンサ７２１−７２８の番号、であり、実施例では「１−８」である。
【００６８】
具体例において上記数２との対応を考えると、点ｐ１は、相手の頭部後方に取り付けたマーカ位置Ｐｃｅｎｔｅｒ＿ｈｅａｄ＿ｂａｃｋに対応し、点ｐ２は、各タッチセンサ７２１−７２８の中心位置Ｐｔｏｕｃｈｓｅｎｓｏｒ＿ｎに対応し、正規化した方向ベクトルｖ（ただし、ベクトル記号は便宜上省略する）は（ＥｙｅＶｅｃｔｏｒ／｜ＥｙｅＶｅｃｔｏｒ｜）に相当する。そして、数２に従って距離ｄを計算し、それをＤ（ｎ）とする。
【００６９】
このようにして、視線方向の直線と各タッチセンサ７２１−７２８の中心との間の距離Ｄ（ｎ）が求まる。そして、図１１に示すように、この距離Ｄ（ｎ）が任意の閾値Ｌ以下であるタッチセンサを実際に接触行為のあったタッチセンサＴｅと推定する。
【００７０】
その後、ＣＰＵ５０は、ステップＳ２９において、視線方向から推定したタッチセンサＴｅとステップＳ２１で検出した接触反応箇所とが一致しているかどうか判断する。つまり、フラグＴｓ＿ｆｌａｇ（Ｔｅ）が「１」かどうか判断する。ただし、（Ｔｅ）は推定したタッチセンサ７２１−７２８の番号「１−８」のいずれかである。
【００７１】
そして、ステップＳ２９で“ＹＥＳ”が判断されると、ＣＰＵ５０は、ステップＳ３１において、視線方向から推定したタッチセンサＴｅを、実際に接触のあったタッチセンサとして同定し、リターンする。
【００７２】
ステップＳ２９で“ＮＯ”なら、つまり、視線方向から推定したタッチセンサＴｅとステップＳ２１で検出した接触反応箇所とが一致しない場合には、ステップＳ３３で判定不能と認識し、リターンする。
【００７３】
なお、ステップＳ２５で“ＮＯ”が判断されたとき、つまり、ステップＳ２１で接触反応を検出したタッチセンサが１つだけであった場合には、そのとき検出したタッチセンサを実際にタッチされたタッチセンサであると認識し（ステップＳ３５）、リターンする。
【００７４】
以上の説明のように、ステップＳ２５−Ｓ３１，S３５は、相手の人間８０がロボット１０のどこかに実際にタッチした場合に、実接触部位を特定するための第２特定手段として機能する。
【００７５】
ただし、この実施例は、人間が実際にはタッチしない場合でも、人間がタッチしようとする「気配」を察知し、実際にタッチがある場合の触行動に対すると同じような反応行動を生起することによって、より生物らしいコミュニケーションロボットシステムを得ようとするものである。そこで、ＣＰＵ５０は、実際にタッチがない場合でも、ステップＳ３７以降を実行して人間の触行動があったかどうか認識する。
【００７６】
第１判断手段を構成するステップＳ３７では、ＣＰＵ５０は、相手の人間との間の距離Ｄｂを計算する。
【００７７】
まず、ロボット１０および人間８０のそれぞれの体の中心座標を求める。具体的には、体の中心座標Ｐｂｏｄｙｃｅｎｔｅｒは両肩に取り付けたマーカの各座標の中心位置で表し、次の数３のとおりである。
【００７８】
【数３】
2007069303.tif 000005
【００７９】
数３に従ってロボット１０の体と人８０の体のそれぞれの中心座標Ｐｒｏｂｏｔ＿ｂｏｄｙｃｅｎｔｅｒおよびＰｈｕｍａｎ＿ｂｏｄｙｃｅｎｔｅｒが求まる。この２点間の距離をＤｂとすると、距離Ｄｂは数４で与えられる。
【００８０】
【数４】
2007069303.tif 000006
【００８１】
その後、第１判断手段を構成するステップＳ３９において、ＣＰＵ５０は、相手の人間の手の長さＬａに基づいて、ロボット１０が明らかに相手の手の届く範囲に存在するかどうかをチェックする。一例としては、ロボット１０が相手８０の手の長さＬａの２倍の範囲内に存在すれば、相手はロボットにタッチできると考え、上記距離ＤｂがＬａ＊２の範囲内かどうか判断する。ただし、このような閾値（Ｌａ＊２）は適宜変更可能である。
【００８２】
ここで、相手の人間の手の長さＬａの求め方の一例を説明する。相手の体の肩、肘および手先に取り付けられたマーカの位置から相手の腕の長さを算出する。つまり、数５に示すように、肘から肩までの距離＋肘から手先までの距離＝腕の長さＬａとする。
【００８３】
【数５】
2007069303.tif 000007
【００８４】
もし、第１判断手段すなわちステップＳ３９において、“ＮＯ”と判断されたなら、次のステップＳ４１において、触行動はないと認識し、リターンする。
【００８５】
もし、ステップＳ３９において“ＹＥＳ”なら、図８に示すステップＳ４３に進む。このステップＳ４３以降のステップが第１特定手段を構成するが、まず、ステップＳ４３では、ＣＰＵ５０は、数６に従って、相手の左手とロボットの体の各タッチセンサの中心点Ｐｎとの距離（左手距離）Ｄｌｈ（ｎ）を算出（ｎ＝１−８）するとともに、相手の右手とロボットの体の各タッチセンサの中心点Ｐｎとの距離（右手距離）Ｄｒｈ(ｎ)を算出（ｎ＝１−８）する。
【００８６】
【数６】
2007069303.tif 000008
【００８７】
そして、次のステップＳ４５では、ＣＰＵ５０は、接近距離Ｌ（これは、可変の閾値である。）より小さい左手距離Ｄｌｈ（ｎ）の中で、最も小さくなるｎを左手接触推定部位Ｔｌｈとして、図２のメモリ５４に形成されている左手レジスタＴｌｈに書き込む（Ｉｆ ｍｉｎ｛Ｄｌｈ（ｎ）｝＜Ｌ →Ｔｌｈ=ｎ）。ただし、接近距離Ｌより近いＤｌｈ（ｎ）がない場合はその左手レジスタＴｌｈには「０」を書き込む（Iｆ ｍｉｎ｛Ｄｌｈ（ｎ）｝＞Ｌ →Ｔｌｈ＝０）。
【００８８】
さらに、同じステップＳ４５で、ＣＰＵ５０は、接近距離Ｌ（可変閾値）より小さい右手距離Ｄｒｈ（ｎ）の中で、最も小さくなるｎを右手接触推定部位Ｔｒｈとして、図２のメモリ５４に形成されている右手レジスタＴｒｈに書き込む（Ｉｆ ｍｉｎ｛Ｄｒｈ（ｎ）｝＜Ｌ →Ｔｒｈ＝ｎ）。ただし、接近距離Ｌより近いＤｒｈ（ｎ）がない場合はその右手レジスタＴｒｈには「０」を書き込む（Ｉｆ ｍｉｎ｛Ｄｒｈ（ｎ）｝＞Ｌ →Ｔｒｈ＝０）。
【００８９】
続くステップＳ４７において、ＣＰＵ５０は、相手の右手および左手が接触しそうなロボットの部位はあるのかどうか判断する。具体的には、左手レジスタＴｌｈと右手レジスタＴｒｈとがともに、「０」かどうかチェックする。その理由は、上で説明したように、レジスタＴｌｈおよびＴｒｈは接近距離Ｌより近いＤｌｈ（ｎ）およびＤｒｈ（ｎ）がないときそれぞれ「０」に設定されるので、これが「０」かどうかで接触しそうな部位の有無分かるからである。
【００９０】
このステップＳ４７で“ＮＯ”が判断されるということは、少なくとも相手の右手か左手かがロボットのどこかに接近していることを意味する。したがって、次のステップＳ４９で、ＤｌｈおよびＤｒｈがともに「０」ではないか（Ｄｌｈ≠０、Ｄｒｈ≠０）どうか、つまり、相手の人間の左手も右手もともに接近距離Ｌより近い状態かどうか判断する。
【００９１】
もし、ステップＳ４９で“ＹＥＳ”が判断されると、つまり、相手の人間の左手および右手がともに接近距離Ｌより近い場合には、ＣＰＵ５０は、人間がタッチしようといている（距離Ｌより接近している）ロボットの部位をどこか１つだけ特定する必要がある。その特定方法としては、先に説明したステップＳ２７と同様に、人間の視線方向を推定の手がかりとする。つまり、次にＣＰＵ５０は、ステップＳ５１において、相手の人間の顔の向きと目の位置より相手の視線の方向を算出し、実際に人間がロボットにタッチしている訳ではないが、その視線に基づいて、近接部位を推定接触タッチセンサＴｅとして推定する。
【００９２】
相手の人間の視線方向を表す視線ベクトルＥｙｅＶｅｃｔｏｒは、先に図５を参照して説明したように、頭部に取り付けられた３つのマーカＰｒｉｇｈｔ＿ｈｅａｄ＿ｆｒｏｎｔ、Ｐｌｅｆｔ＿ｈｅａｄ＿ｆｒｏｎｔ、Ｐｃｅｎｔｅｒ＿ｈｅａｄ＿ｂａｃｋの座標から数１に従って算出できる。そして、この視線ベクトルＥｙｅＶｅｃｔｏｒが向く方向のタッチセンサＴｅを特定する。つまり、視線ベクトルＥｙｅＶｅｃｔｏｒの方向にあるタッチセンサが、８つのタッチセンサ７２１−７２８（図３）のどれに該当するか判断する。
【００９３】
その後、ＣＰＵ５０は、ステップＳ５３において、視線方向から推定したタッチセンサＴｅとステップＳ４５で検出した左手レジスタＴｌｈおよび右手レジスタＴｒｈにそれぞれ登録されているタッチセンサの番号とが一致しているかどうか判断する。つまり、Ｔｅ＝ＴｌｈまたはＴｅ＝Ｔｒｈが充足されているかどうか、判断する。
【００９４】
一致しているとき、つまり、Ｔｅ＝ＴｌｈまたはＴｅ＝Ｔｒｈのいずれかが充足されているときには、ＣＰＵ５０は、ステップＳ５５で、そのタッチセンサＴｅの位置を、人間８０がタッチしようとしているロボット１０の場所または部位であると特定して、リターンする。
【００９５】
一致していないときには、ＣＰＵ５０は、ステップＳ５７において、ロボット１０により近いほうの人間の手を推定接触部位として特定する。具体的には、ステップＳ４３で求めた左手距離Ｄｌｈおよび右手距離Ｄｒｈを比較し、左手距離Ｄｌｈが右手距離Ｄｒｈより小さい（Ｄｌｈ＜Ｄｒｈ）ときには、ＣＰＵ５０は、推定接触部位Ｔとして左手接触部位Ｔｌｈを特定して、リターンする。逆に、左手距離Ｄｌｈが右手距離Ｄｒｈより大きい（Ｄｌｈ＞Ｄｒｈ）ときには、ＣＰＵ５０は、推定接触部位Ｔとして右手接触部位Ｔｒｈを特定して、リターンする。
【００９６】
さらに、先のステップＳ４９で“ＮＯ”が判断されたとき、つまり推定接触部位ＴｌｈまたはＴｒｈのどちらかが「０」であるときには、どちらか一方の手だけが接触する可能性があるので、ＣＰＵ５０は、ステップＳ５９において、そのどちらか一方の推定接触部位ＴｌｈまたはＴｒｈを推定接触部位Ｔとして特定し、リターンする。
【００９７】
最後に、ステップＳ４７で“ＮＯ”が判断されたときには、接触しようとする人間の手はなく、推定接触部位ＴｌｈおよびＴｒｈはともに「０」であり、その場合には、ＣＰＵ５０は、ステップＳ６１において、接触行為はないと判断して、リターンする。
【００９８】
このようにして、図６のステップＳ３において、人間８０が実際にロボット１０に対してタッチしているかあるいはタッチしようとしているか（触行動の有無）を検知することができる。
【００９９】
そして、ステップＳ３で図７および図８に示すサブルーチンを実行した結果、人間８０による触行動が確認されたときには、ステップＳ５で“ＹＥＳ”が判断されることになり、ＣＰＵ５０は、図６の次のステップＳ７において、接触場所または推定接触場所に応じて異なる反応行動をロボット１０に命令する。つまり、ステップＳ７は、反応行動生起手段として機能する。表１はそのような反応行動の一例を示す。ただし、この表１に例示する反応行動は、基本的には、人間に触られるのを嫌がる、という反応行動であるが、逆に、人間に対して好感を表す反応行動やそれらの混在した反応行動を設定することも当然可能である。
【０１００】
【表１】
2007069303.tif 000009
【０１０１】
表１に示すように、たとえば接触部位または推定接触部位が頭部であるとき、すなわち、Ｔｅ＝Ｔ（１）であったとき、ＣＰＵ５０はロボット１０を後退させるように、図２に示すモータ制御ボード５６を通して車輪モータ７０を制御する。
【０１０２】
たとえば、接触部位または推定接触部位が腹部であるとき、すなわち、Ｔｅ＝Ｔ（８）であったとき、ＣＰＵ５０は、腹部を触られないように腹部を手でガードしながらロボット１０を後退させるように、モータ制御ボード５６を通して、右腕モータ６２および左腕モータ６４ならびに車輪モータ７０を制御する。
【０１０３】
たとえば、接触部位または推定接触部位が左肩であるとき、すなわち、Ｔｅ＝Ｔ（２）であったとき、ＣＰＵ５０は、左肩を人間から遠ざけるようにロボット１０を回転させるように、モータ制御ボード５６を通して、腰モータ６８を制御する。接触部位または推定接触部位が右肩であるとき、すなわち、Ｔｅ＝Ｔ（５）であったとき、ＣＰＵ５０は、右肩を人間から遠ざけるように、ロボット１０を回転させるように腰モータ６８を制御する。
【０１０４】
たとえば、接触部位または推定接触部位が左上腕であるとき、すなわち、Ｔｅ＝Ｔ（３）であったとき、ＣＰＵ５０は、左上腕を人間から遠ざけるようにロボット１０を回転させながら左上腕を後ろに下げるように、モータ制御ボード５６を通して、腰モータ６８を制御するとともに、左腕モータ６４を制御する。接触部位または推定接触部位が右上腕であるとき、すなわち、Ｔｅ＝Ｔ（６）であったとき、ＣＰＵ５０は、右上腕を人間から遠ざけるようにロボット１０を回転させながら左上腕を後ろに下げるように、腰モータ６８および右腕モータ６２を制御する。
【０１０５】
たとえば、接触部位または推定接触部位が左前腕であるとき、すなわち、Ｔｅ＝Ｔ（４）であったとき、ＣＰＵ５０は、左前腕を人間から遠ざけるようにロボット１０を回転させながら左前腕を後ろに下げるように、モータ制御ボード５６を通して、腰モータ６８を制御するとともに、左腕モータ６４を制御する。接触部位または推定接触部位が右上腕であるとき、すなわち、Ｔｅ＝Ｔ（７）であったとき、ＣＰＵ５０は、右前腕を人間から遠ざけるようにロボット１０を回転させながら左前腕を後ろに下げるように、腰モータ６８および右腕モータ６２を制御する。
【０１０６】
なお、いずれの反応行動中でも、ロボット１０の眼カメラ４６（図２）が近づく人間の手を注視するように、ＣＰＵ５０は、頭部モータ６６などを制御する。
【０１０７】
以上のように、受身状態（Ｒｅｃｉｐｉｅｎｔ  Ｍｏｄｅ）では、ロボット１０の体に人間８０の手が実際にタッチするかあるいはタッチするほどに接近するかを検知したときには、所定の反応行動を行うものであるが、図６において、ステップＳ５で人間の触行動を検知しなかったときには、ＣＰＵ５０は、次のステップＳ９で、所定時間以上連続して待機状態であるかどうか判断する。ただし、待機状態とは、たとえば、センサボード５８（図２）からどんなセンサ入力もない状態をいうものとする。そして、ステップＳ９で“ＮＯ”が判断されるとき、つまり、所定時間内に何らかのセンサ入力があったときには、ＣＰＵ５０は、先のステップＳ３に戻って先に説明した方法で触行動の有無を検知する。ステップＳ９で“ＹＥＳ”が判断されたときには、ＣＰＵ５０は、ステップＳ１１で待機状態となる。待機状態では、ＣＰＵ５０は、ロボット１０が人間８０に対して、アイコンコンタクトを維持したり、対人距離を維持したりするなどの所定の処理を実行するものとする（Ｉｄｌｉｎｇ  Ｍｏｄｅ）。
【０１０８】
ただし、一定時間以上待機状態が継続した場合には、ロボット１０を作用主状態（Ａｇｅｎｔ  Ｍｏｄｅ）として、たとえば自分の手（腕）を使って人間の手を触るなどの主体的行動を実行させることもできる。
【０１０９】
なお、上で説明した実施例では人間やロボットの各部位の３次元位置座標を検出するために、マーカ７８をカメラ８０１−８０ｎ（図２）で撮影する方式のモーションキャプチャを採用した。しかしながら、他の方法（たとえば磁気）を利用するモーションキャプチャを用いてもよく、さらに、モーションキャプチャではなく、一般的な画像処理によって人間やロボットの腕の状態や位置を検出するようにしてもよい。また、ロボット１０の場合には、各関節角を検知することによって各部位の３次元位置座標を特定するようにしてもよい。
【０１１０】
また、実施例では、第１特定手段によって所定距離以内に接近した部位が２以上あるとき、その中から１つの部位を推定接触部位として特定する際の条件として、人間の視線が向けられているかどうかという条件を用いた。しかしながら、第１特定手段は、たとえば人間の手がより接近していることを条件で１つの推定接触部位を特定するなど、別の条件を採用してもよい。
【図面の簡単な説明】
【０１１１】
【図１】図１はこの発明の一実施例のコミュニケーションロボットの構成の一例を示す図解図である。
【図２】図２は図１に示すコミュニケーションロボットの電気的な構成を示すブロック図である。
【図３】図３は図１に示すコミュニケーションロボットに設けられているタッチセンサの配置を例示する図解図である。
【図４】図４は図１に示すコミュニケーションロボットに装着したマーカの配置を例示する図解図である。
【図５】図５はコミュニケーションロボットと協働する人間に装着したマーカの配置を例示する図解図である。
【図６】図６はこの実施例の動作を示すフロー図である。
【図７】図７は図６のサブルーチンの一部を示すフロー図である。
【図８】図８は図７に後続するサブルーチンの一部を示すフロー図である。
【図９】図９は実施例における人間の視線方向を検出する方法を説明する図解図である。
【図１０】図１０は実施例における人間の視線方向の直線とタッチセンサの中心との間の距離を検出する方法を説明する図解図である。
【図１１】図１１は実施例におけるタッチ場所または部位を特定または推定する方法を説明する図解図である。
【符号の説明】
【０１１２】
１０  …コミュニケーションロボット
５０  …ＣＰＵ
７２，７２１−７２８  …タッチセンサ
７６  …モーションキャプチャ
８２１−８２ｎ  …モーションキャプチャ（ＭＣ）カメラ
８４  …ＭＣコンピュータ
【図１】
2007069303.tif 000010
【図２】
2007069303.tif 000011
【図３】
2007069303.tif 000012
【図４】
2007069303.tif 000013
【図５】
2007069303.tif 000014
【図６】
2007069303.tif 000015
【図７】
2007069303.tif 000016
【図８】
2007069303.tif 000017
【図９】
2007069303.tif 000018
【図１０】
2007069303.tif 000019
【図１１】
2007069303.tif 000020