(57)【要約】  【構成】動作生成システム１０は身体表現可能なコミュニケーションロボット１２を含み、ロボット制御装置１６は、モーションキャプチャシステム１８によって計測した人間１４とコミュニケーションロボット１２の身体動作データおよびマイク２４から取得した発話計測データに基づいて、人間１４の動作の状態を検出する。そして、人間１４の動作に協力的な動作（模倣動作および同調動作）を実現するための複数の行動モジュールが記憶された行動モジュールＤＢ２０から、検出された状態に応じた行動モジュールを選択する。行動モジュールの実行によって当該協力的な動作を実現するための制御データが生成され、コミュニケーションロボット１２では制御データに基づいて当該協力的な動作が実現される。  【効果】相手の状態に応じて適切な模倣動作や同調動作のような協力的動作をコミュニケーションロボットに実行させることができる。【選択図】  図１
2006088276.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも腕を含む身体部位と身体部位を駆動するアクチュエータとを有するコミュニケーションロボットを備え、コミュニケーションの相手の動作に対応する動作を前記コミュニケーションロボットに実行させる動作生成システムであって、
前記コミュニケーションロボットに前記相手の動作に対応する動作を実行させるための複数の行動プログラムを記憶したプログラム記憶手段、
前記相手および前記コミュニケーションロボットの動作を検出して動作に関するデータを生成する動作検出手段、
前記動作に関するデータに基づいて前記相手の状態を検出する状態検出手段、
前記状態検出手段によって検出された前記相手の状態に応じて、前記プログラム記憶手段に記憶された複数の行動プログラムから行動プログラムを選択する選択手段、
前記選択手段によって選択された行動プログラムに従って、当該動作を実現するための制御データを生成する生成手段、および
前記制御データに基づいて前記アクチュエータを制御するアクチュエータ制御手段を備える、動作生成システム。
【請求項２】
前記コミュニケーションロボットの身体部位は頭をさらに含み、
前記プログラム記憶手段に記憶される行動プログラムは、前記コミュニケーションロボットに前記相手に対して協力的な動作を実行させるための行動プログラムを含む、請求項１記載の動作生成システム。
【請求項３】
前記プログラム記憶手段に記憶される行動プログラムは、前記コミュニケーションロボットに前記相手を模倣する模倣動作を実行させるための行動プログラムを含み、
前記動作検出手段は、前記相手および前記コミュニケーションロボットの身体動作を検出して身体動作データを生成する身体動作検出手段を含み、
前記状態検出手段は、少なくとも前記身体動作データに基づいて前記相手の状態を検出し、
前記生成手段は、前記選択手段によって前記模倣動作を実行するための行動プログラムが選択されたとき、前記身体動作データに基づいて前記制御データを生成する、請求項１または２記載の動作生成システム。
【請求項４】
前記プログラム記憶手段は、前記模倣動作を実行させるための複数の行動プログラムを記憶していて、
前記状態検出手段は、前記相手が特定動作をしている手に関する第１状態を検出する第１状態検出手段、および前記相手に衝突するおそれのある前記コミュニケーションロボットの腕に関する第２状態を検出する第２状態検出手段を含み、
前記選択手段は、前記第１状態が前記相手のどちらかの手を示す場合、前記第２状態の示す腕とは異なる腕で前記特定動作を模倣する動作を実行させるための行動プログラムを選択する、請求項３記載の動作生成システム。
【請求項５】
前記状態検出手段は、前記特定動作の方向に関する第３状態を検出する第３状態検出手段をさらに含み、
前記選択手段は、前記第２状態がいずれの腕も示さない場合、前記第３状態の示す方向に対応する側の腕で前記特定動作を模倣する動作を実行させるための行動プログラムを選択する、請求項４記載の動作生成システム。
【請求項６】
前記状態検出手段は、前記相手が前記特定動作に使用している手に関する第４状態を、前記相手の手の肩からの距離、前記相手の手の過去一定時間の動き、および前回検出された第４状態に基づいて検出し、
前記選択手段は、前記第１状態の示す手と前記第４状態の示す手とが同じでないとき、前記模倣動作ではない動作を実行させるための行動プログラムを選択する、請求項４記載の動作生成システム。
【請求項７】
前記選択手段は、特定動作を模倣する動作を実行させるための行動プログラムの選択が一定時間以上続いたとき、前記状態検出手段によって検出された前記相手の状態に応じて前記行動プログラムの再選択をする、請求項３ないし６のいずれかに記載の動作生成システム。
【請求項８】
前記特定動作は指差しまたは方向を指し示す身体動作を含む、請求項３ないし７のいずれかに記載の動作生成システム。
【請求項９】
前記動作検出手段は、前記相手の発話を検出して発話に関するデータを生成する発話検出手段を含み、
前記状態検出手段は、前記発話に関するデータに基づいて前記相手の発話の状態を検出し、
前記選択手段は、前記状態検出手段によって検出された前記相手の発話の状態が所定条件を満たすとき、前記頭を用いて前記相手に協力的な動作を実行させるための行動プログラムを選択する、請求項２記載の動作生成システム。
【請求項１０】
前記コミュニケーションロボットは音声を出力する音声出力手段をさらに備えていて、
前記プログラム記憶手段に記憶される行動プログラムは、発話をするための行動プログラムを含み、
前記動作検出手段は、前記相手の発話を検出して発話に関するデータを生成する発話検出手段を含み、
前記状態検出手段は、前記発話に関するデータに基づいて前記相手の発話の状態を検出し、
前記選択手段は、前記コミュニケーションロボットの身体部位および発話ごとに行動プログラムを選択するものであって、前記状態検出手段によって検出された少なくとも前記相手の発話の状態に応じて、前記発話をするための行動プログラムを選択し、
前記生成手段は、前記選択手段によって発話をするための行動プログラムが選択されたとき、当該発話をするための制御データを生成し、
前記音声出力手段は、前記制御データに基づいて音声を出力する、請求項１ないし９のいずれかに記載の動作生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は動作生成システムに関し、特にたとえば、人間などコミュニケーションの相手の動作に対応する動作（協力的な動作ないし模倣する動作など）をコミュニケーションロボットに実行させる、動作生成システムに関する。
【背景技術】
【０００２】
本件出願人は、特許文献１等で、人間と相互作用するコミュニケーションロボットを提案してきた。
【０００３】
また、本発明者等のこれまでの研究において、人間が、たとえばアイコンタクトや同調する動作のような、コミュニケーションロボットの動作に対応する協力的な身体動作を行うことによって、コミュニケーションロボットと人間との相互作用における引き込み（Entrainment）が生じることが見出されている（たとえば非特許文献１）。
【特許文献１】特開２００２−３５５７８３号公報
【非特許文献１】神田崇行外３名（T. Kanda, H. Ishiguro, M. Imai, and T. Ono）: 「人‐ロボット相互作用の身体動作解析」（“Body Movement Analysis of Human-Robot Interaction”）, Proc. of International Joint Conference on Artificial Intelligence, pp. 177-182, 2003.
【発明の開示】
【発明が解決しようとする課題】
【０００４】
人間が自然なコミュニケーションのためにロボットに対応して協力的に振舞うことがわかってきているが、人間に対して協力的な動作を自律的に実行することが可能なコミュニケーションロボットは未だ開発されていない。
【０００５】
また、背景技術のコミュニケーションロボットを用いて、たとえば、協力的な動作として、人間の動作を模倣するロボットを作ることを考えた場合、単に人真似をするロボットを作ると問題が生じる。たとえば、ロボットは常に人間の真似をするだけになってしまうので、人間とのコミュニケーションが成り立たなくなる。また、至近距離でコミュニケーションが行われている場合、常に人間と同一の動作を行うだけであれば、人間にぶつかる危険性がある。
【０００６】
それゆえに、この発明の主たる目的は、コミュニケーションの相手の動作に対応する適切な動作をコミュニケーションロボットに実行させることができる、動作生成システムを提供することである。
【０００７】
この発明の他の目的は、相手の動作の状態に応じて適切な協力的な動作や模倣動作をコミュニケーションロボットに実行させることができる、動作生成システムを提供することである。
【課題を解決するための手段】
【０００８】
請求項１の発明は、少なくとも腕を含む身体部位と身体部位を駆動するアクチュエータとを有するコミュニケーションロボットを備え、コミュニケーションの相手の動作に対応する動作をコミュニケーションロボットに実行させる動作生成システムであって、コミュニケーションロボットに相手の動作に対応する動作を実行させるための複数の行動プログラムを記憶したプログラム記憶手段、相手およびコミュニケーションロボットの動作を検出して動作に関するデータを生成する動作検出手段、動作に関するデータに基づいて相手の状態を検出する状態検出手段、状態検出手段によって検出された相手の状態に応じて、プログラム記憶手段に記憶された複数の行動プログラムから行動プログラムを選択する選択手段、選択手段によって選択された行動プログラムに従って、当該動作を実現するための制御データを生成する生成手段、および制御データに基づいてアクチュエータを制御するアクチュエータ制御手段を備える、動作生成システムである。
【０００９】
請求項１の発明では、動作検出手段が、コミュニケーションロボットとコミュニケーションの相手の動作を検出して動作に関するデータを生成する。実施例では、たとえばモーションキャプチャシステムによって身体動作に関するデータが取得され、また、マイクによって発話に関するデータが取得される。この検出した動作に関するデータに基づいて、状態検出手段は、相手の状態を検出する。選択手段は、プログラム記憶手段に記憶された相手の動作に対応する動作のための複数のプログラムの中から、検出された相手の状態に応じた行動プログラムを選択する。生成手段は、選択された行動プログラムに従って、当該動作を実現するためのコミュニケーションロボットの制御データを生成する。アクチュエータ制御手段は、生成された制御データに基づいて、身体部位を駆動するアクチュエータを制御する。このようにして、コミュニケーションロボットの少なくとも腕を含む身体部位が駆動され、相手の動作に対応する動作が実現される。したがって、請求項１の発明によれば、相手とコミュニケーションロボットの動作を検出し、その検出した動作に関するデータに基づいて検出された相手の状態に応じて、対応動作のための行動プログラムが選択されるので、コミュニケーションロボットに相手の状態に応じた適切な動作を実行させることが可能である。
【００１０】
請求項２の発明は、請求項１の発明に従属し、コミュニケーションロボットの身体部位は頭をさらに含み、プログラム記憶手段に記憶される行動プログラムは、コミュニケーションロボットに相手に対して協力的な動作を実行させるための行動プログラムを含む。請求項２の発明では、コミュニケーションロボットに、腕だけでなく頭を使用して相手の状態に応じた協力的な動作を実行させることが可能である。したがって、コミュニケーションロボットと相手とのコミュニケーションをより自然なものにすることができる。
【００１１】
請求項３の発明は、請求項１または２の発明に従属し、プログラム記憶手段に記憶される行動プログラムは、コミュニケーションロボットに相手を模倣する模倣動作を実行させるための行動プログラムを含み、動作検出手段は、相手およびコミュニケーションロボットの身体動作を検出して身体動作データを生成する身体動作検出手段を含み、状態検出手段は、少なくとも身体動作データに基づいて相手の状態を検出し、生成手段は、選択手段によって模倣動作を実行するための行動プログラムが選択されたとき、身体動作データに基づいて制御データを生成する。
【００１２】
請求項３の発明では、プログラム記憶手段には、相手の動作を模倣する動作を実行させるためのプログラムが記憶されている。動作検出手段は、コミュニケーションロボットと相手の身体動作を検出して身体動作データを生成する。実施例では、たとえば光学式のモーションキャプチャシステムが適用され、コミュニケーションロボットと相手の身体の特徴点の３次元位置座標データが取得される。状態検出手段は少なくとも身体動作データに基づいて相手の状態を検出する。この検出された相手の状態に応じて、選択手段は、模倣動作を実行するための行動プログラムを選択することができる。生成手段は、選択手段によって模倣動作を実行するための行動プログラムが選択されたとき、身体動作データに基づいて、当該模倣動作を実現するための制御データを生成する。したがって、請求項３の発明によれば、コミュニケーションロボットに、相手の状態に応じて適切な相手の模倣動作を実行させることができる。したがって、相手に協力的な動作としての模倣動作を適切に実行することができるので、自然で円滑なコミュニケーションを実現できる。
【００１３】
請求項４の発明は、請求項３の発明に従属し、プログラム記憶手段は、模倣動作を実行させるための複数の行動プログラムを記憶していて、状態検出手段は、相手が特定動作をしている手に関する第１状態を検出する第１状態検出手段、および相手に衝突するおそれのあるコミュニケーションロボットの腕に関する第２状態を検出する第２状態検出手段を含み、選択手段は、第１状態が相手のどちらかの手を示す場合、第２状態の示す腕とは異なる腕で特定動作を模倣する動作を実行させるための行動プログラムを選択する。
【００１４】
請求項４の発明では、第１状態検出手段は、身体動作データに基づいて、相手が特定動作をしている手に関する第１状態を検出する。たとえば、実施例では、第１状態は相手が指差し等を行っている手を示す。第２状態検出手段は、身体動作データに基づいて、相手に衝突するおそれのあるコミュニケーションロボットの腕に関する第２状態を検出する。そして、選択手段は、第１状態が相手のどちらかの手を示す場合、つまり、相手が特定動作をしている場合には、第２状態の示す腕とは異なる腕による特定動作の模倣動作のための行動プログラムをプログラム記憶手段から選択する。したがって、請求項４の発明によれば、相手の特定動作と同一の動作をすれば相手に衝突するおそれがあるときに、衝突するおそれのない腕を用いた模倣動作を実行することができる。したがって、相手の動作を模倣する動作を安全に実行することができる。
【００１５】
請求項５の発明は、請求項４の発明に従属し、状態検出手段は、特定動作の方向に関する第３状態を検出する第３状態検出手段をさらに含み、選択手段は、第２状態がいずれの腕も示さない場合、第３状態の示す方向に対応する側の腕で特定動作を模倣する動作を実行させるための行動プログラムを選択する。
【００１６】
請求項５の発明では、第３状態検出手段は、特定動作の方向に関する第３状態を検出する。たとえば、実施例では、第３状態は、コミュニケーションロボットから見て特定動作が行われている方向を示す。そして、選択手段は、第２状態がいずれの腕も示さない場合、つまり、いずれの腕も相手に衝突するおそれがない場合には、第３状態の示す方向に対応する側の腕による特定動作の模倣動作のための行動プログラムを選択する。したがって、請求項５の発明によれば、安全性が確保されている場合には、相手の動作が示す方向に応じた腕で模倣動作を実行することができるので、より自然な模倣動作を実現できる。
【００１７】
請求項６の発明は、請求項４の発明に従属し、状態検出手段は、相手が特定動作に使用している手に関する第４状態を、相手の手の肩からの距離、相手の手の過去一定時間の動き、および検出された第４状態に基づいて検出し、選択手段は、第１状態の示す手と第４状態の示す手とが同じでないとき、模倣動作ではない動作を実行させるための行動プログラムを選択する。
【００１８】
請求項６の発明では、状態検出手段は、第４状態として、相手が特定動作に使用している手を検出する。この第４状態の検出は、相手の手の肩からの距離、相手の手の過去一定時間の動き、および前回検出された第４状態に基づいて行われる。たとえば、実施例では、前回の第４状態に示されない手に関しての距離と動きとの両者が、前回の第４状態に示す手に関しての距離と動きとの両者よりも大きくなった場合にのみ、使用している手が変更されたものとみなして、第４状態の示す手が切り替えられる。そして、選択手段は、第１状態の示す手と第４状態の示す手とが同じでないとき、つまり、特定動作をしている手と特定動作に使用されている手とが異なるものとなったときには、特定動作が終わっているとみなして、模倣動作ではない動作を実行させるための行動プログラムを選択する。したがって、請求項６の発明によれば、特定動作が変化するときに的確に対応して、相手の動作が変更されても模倣動作をし続けるようなことがないので、自然で違和感のない模倣動作を実現できる。
【００１９】
請求項７の発明は、請求項３ないし６の発明のいずれかに従属し、選択手段は、特定動作を模倣する動作を実行させるための行動プログラムの選択が一定時間以上続いたとき、状態検出手段によって検出された相手の状態に応じて行動プログラムの再選択をする。
【００２０】
請求項７の発明では、特定動作のための行動プログラムの選択が一定時間以上続いたときに行動プログラムが相手の状態に応じて再選択される。したがって、請求項７の発明によれば、コミュニケーションロボットが模倣動作を長々と続けるようなことがなく、模倣動作の実現される時間を適切なものにすることができるので、相手を模倣する動作を自然に行うことができる。
【００２１】
請求項８の発明は、請求項３ないし７の発明のいずれかに従属し、特定動作は指差しまたは方向を指し示す身体動作を含む。請求項８の発明では、状態検出手段によって、特定動作としての指差しまたは方向を指し示す身体動作に関して、相手の状態が検出されることとなる。したがって、たとえば実施例の順路案内状況のような指差し等が人間によって行われる場合において、コミュニケーションロボットに適切に相手の模倣動作を実行させることができ、円滑なコミュニケーションを実現できる。
【００２２】
請求項９の発明は、請求項２の発明に従属し、動作検出手段は、相手の発話を検出して発話に関するデータを生成する発話検出手段を含み、状態検出手段は、発話に関するデータに基づいて相手の発話の状態を検出し、選択手段は、状態検出手段によって検出された相手の発話の状態が所定条件を満たすとき、頭を用いて相手に協力的な動作を実行させるための行動プログラムを選択する。
【００２３】
請求項９の発明では、発話検出手段は、相手の発話を検出して発話に関するデータを生成して、状態検出手段は相手の発話の状態を検出する。選択手段は、相手の発話の状態が所定条件を満たすとき、頭を用いて相手に協力的な動作を実行させるための行動プログラムを選択する。したがって、コミュニケーションロボットは、相手の発話の状態に応じた協力的な動作を、頭を用いた身体動作によって実現することができる。
【００２４】
請求項１０の発明は、請求項１ないし９の発明のいずれかに従属し、コミュニケーションロボットは音声を出力する音声出力手段をさらに備えていて、プログラム記憶手段に記憶される行動プログラムは、発話をするための行動プログラムを含み、動作検出手段は、相手の発話を検出して発話に関するデータを生成する発話検出手段を含み、状態検出手段は、発話に関するデータに基づいて相手の発話の状態を検出し、選択手段は、コミュニケーションロボットの身体部位および発話ごとに行動プログラムを選択するものであって、状態検出手段によって検出された少なくとも相手の発話の状態に応じて、発話をするための行動プログラムを選択し、生成手段は、選択手段によって発話をするための行動プログラムが選択されたとき、当該発話をするための制御データを生成し、音声出力手段は、制御データに基づいて音声を出力する。
【００２５】
請求項１０の発明では、コミュニケーションロボットには音声出力手段が設けられる。プログラム記憶手段には、発話をするための行動プログラムが記憶される。発話検出手段は、相手の発話を検出して発話に関するデータを生成し、この発話に関するデータに基づいて、状態検出手段は相手の発話の状態を検出する。選択手段は、コミュニケーションロボットの身体部位および発話ごとに行動プログラムを選択することができるので、検出された少なくとも発話の状態に応じて、発話をするための行動プログラムを選択する。生成手段は、発話をするための行動プログラムが選択されたとき、当該発話をするための制御データを生成する。そして、音声出力手段は、発話をするための制御データに基づいて音声を出力する。したがって、コミュニケーションロボットは、検出された相手の発話状態に応じて適切な発話をすることができるので、身体動作とともに発話を用いて相手の動作に対応する動作、協力的な動作、あるいは模倣動作などを実行することができ、より円滑なコミュニケーションを実現できる。
【発明の効果】
【００２６】
この発明によれば、コミュニケーションの相手とコミュニケーションロボットの動作に関するデータに基づいて、相手の状態を検出し、その検出された状態に応じて、相手の動作に対応する動作としての協力的な動作や模倣動作のための行動プログラムを選択するようにしている。したがって、相手の動作の状態に応じて、適切な協力的な動作や模倣動作をコミュニケーションロボットに実行させることができるので、自然で円滑なコミュニケーションを実現することができる。
【００２７】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００２８】
図１を参照して、この実施例の動作生成システム１０は、コミュニケーションロボット（以下、単に「ロボット」ともいう。）１２に、人間１４の動作（行動）に応じて、協力的な動作を実行させるためのものであり、協力的な動作として特に人間１４の身体動作を模倣する（すなわち類似あるいは同一の）動作や、人間１４の動作に同調する動作などを実行させるためのものである。この動作生成システム１０は、少なくとも腕を含む身体部位を有して身体表現の可能なロボット１２、ロボット１２に実行させる行動を制御するロボット制御装置１６、および身体動作を検出するモーションキャプチャシステム１８を含む。
【００２９】
ロボット制御装置１６は、パーソナルコンピュータまたはワークステーション等のコンピュータからなり、ＣＰＵ、ＲＡＭ、ＲＯＭおよびＨＤＤ等を備える。ロボット１２の行動を制御するためのプログラムおよびデータは主記憶装置としてのＨＤＤ等に格納されていて、ＣＰＵはこのプログラムに従って処理を実行する。ロボット制御装置１６の内部または外部には、行動モジュールデータベース（ＤＢ）２０、および発話計測データＤＢ２２が設けられる。行動モジュールＤＢ２０には、後述するように、ロボット１２の各行動を実現するためのモジュール化された各プログラム（行動モジュールと呼ばれる。）が記憶される。発話計測データＤＢ２２には、マイク２４によって取得される人間１４の発話に関するデータが記憶される。マイク２４は、この実施例ではロボット１２に設けられている。ロボット１２は、所定周期でマイク２４から人間１４の発話の音量を計測して、その取得した発話計測データをロボット制御装置１６に送信する。ロボット制御装置１６は、ロボット１２から発話計測データを受信して、発話計測データＤＢ２２に格納する。発話計測データは計測時刻（フレーム）に関連付けて格納されている。
【００３０】
なお、ロボット制御装置１６とモーションキャプチャシステム１８とは、たとえばＨＵＢ（図示せず）を介して有線または無線ＬＡＮで互いに接続される。また、ロボット１２は、たとえばＨＵＢに接続されたアクセスポイント（図示せず）を介して無線ＬＡＮでロボット制御装置１６と接続される。
【００３１】
ロボット制御装置１６のＣＰＵは、検出した人間１４の動作（身体動作および発話）に基づいて、適切な行動モジュールを選択して実行する。人間１４の動作に関するデータのうち身体動作に関するデータは、モーションキャプチャシステム１８から取得される。行動モジュールの実行の結果、ロボット制御装置１６のＣＰＵは、その行動を実現するための指令データをロボット１２に送信する。
【００３２】
モーションキャプチャシステム（３次元動作計測装置）１８としては、公知のモーションキャプチャシステムが適用される。たとえばＶＩＣＯＮ社（http://www.vicon.com/）の光学式のモーションキャプチャシステムが適用されてよい。モーションキャプチャシステム１８は、パーソナルコンピュータまたはワークステーションなどのコンピュータを含み、その内部または外部には、人間１４およびロボット１２の身体動作に関する数値データを記憶する３次元動作計測データＤＢ２６が設けられる。このモーションキャプチャシステム１８においては、図２に示すように、複数（少なくとも３つ）の赤外線照射機能を有するカメラ２８が、玄関、廊下、部屋等のような適宜の空間において、ロボット１２および人間１４に対して互いに異なる方向に配置され、ロボット１２と人間１４との相互作用における身体動作を検出する。ロボット１２と人間１４には、複数の赤外線反射マーカ３０が取り付けられる。人間１４には、たとえば頭頂，眼の上，首，肩，肘，手先（手首）等のような人間１４の動作を特徴付ける特徴点すなわち人間１４の動作を特定可能な部分に、各マーカ３０が取り付けられる。人間１４は、たとえば、マーカ３０の取り付けられた帽子や服を着用してよい。また、ロボット１２にも、同様にして、その動作を特定可能な特徴点（頭頂，眼の上，首，肩，肘，手先等）に各マーカ３０が取り付けられる。モーションキャプチャシステム１８のコンピュータは、カメラ２８から画像データをたとえば６０Ｈｚ（１秒間に６０フレーム）で取得し、画像データの画像処理によって、その計測時のすべての画像データにおける各マーカ３０の２次元位置を抽出する。そして、コンピュータは、２次元位置に基づいて、実空間における各マーカ３０の３次元位置座標データを算出し、その算出した３次元位置座標データを３次元動作計測データとして３次元動作計測データＤＢ２６に格納する。３次元動作計測データは計測時刻（フレーム）に関連付けて格納されている。
【００３３】
ロボット１２は、人間のような身体を有し、その身体を用いて、コミュニケーションのために必要な複雑な身体動作を生成する。具体的には、図３を参照して、ロボット１２は台車３２を含み、この台車３２の下面には、このロボット１２を自律移動させる車輪３４が設けられる。この車輪３４は、車輪モータ（ロボット１２の内部構成を示す図４において参照番号「３６」で示す。）によって駆動され、台車３２すなわちロボット１２を前後左右任意の方向に動かすことができる。なお、図３では示さないが、この台車３２の前面には、衝突センサ（図４において参照番号「３８」で示す。）が取り付けられ、この衝突センサ３８は、台車３２への人や他の障害物の接触を検知する。そして、ロボット１２の移動中に障害物との接触を検知すると、直ちに車輪３４の駆動を停止してロボット１２の移動を急停止させる。
【００３４】
なお、ロボット１２の背の高さは、この実施例では、人、特に子供に威圧感をあたえることがないように、１００ｃｍ程度とされている。ただし、この背の高さは任意に変更可能である。
【００３５】
台車３２の上には、多角形柱のセンサ取付パネル４０が設けられ、このセンサ取付パネル４０の各面には、超音波距離センサ４２が取り付けられる。この超音波距離センサ４２は、取付パネル４０すなわちロボット１２の周囲の主として人との間の距離を計測するものである。
【００３６】
台車３２の上には、さらに、ロボット１２の胴体が、その下部が上述の取付パネル４０に囲まれて、直立するように取り付けられる。この胴体は下部胴体４４と上部胴体４６とから構成され、これら下部胴体４４および上部胴体４６は、連結部４８によって連結される。連結部４８には、図示しないが、昇降機構が内蔵されていて、この昇降機構を用いることによって、上部胴体４６の高さすなわちロボット１２の高さを変化させることができる。昇降機構は、後述のように、腰モータ（図４において参照番号「５０」で示す。）によって駆動される。上で述べたロボット１２の身長１００ｃｍは、上部胴体４６をそれの最下位置にしたときの値である。したがって、ロボット１２の身長は１００ｃｍ以上にすることができる。
【００３７】
上部胴体４６のほぼ中央には、１つの全方位カメラ５２と、１つのマイク２４とが設けられる。全方位カメラ５２は、ロボット１２の周囲を撮影するもので、後述の眼カメラ５４と区別される。マイク２４は、上述のように、周囲の音、とりわけ人の声を取り込む。
【００３８】
上部胴体４６の両肩には、それぞれ、肩関節５６Ｒおよび５６Ｌによって、上腕５８Ｒおよび５８Ｌが取り付けられる。肩関節５６Ｒおよび５６Ｌは、それぞれ３軸の自由度を有する。すなわち、右肩関節５６Ｒは、Ｘ軸，Ｙ軸およびＺ軸の各軸廻りにおいて上腕５８Ｒの角度を制御できる。Ｙ軸は、上腕５８Ｒの長手方向（または軸）に平行な軸であり、Ｘ軸およびＺ軸は、そのＹ軸に、それぞれ異なる方向から直交する軸である。左肩関節５６Ｌは、Ａ軸，Ｂ軸およびＣ軸の各軸廻りにおいて上腕５８Ｌの角度を制御できる。Ｂ軸は、上腕５８Ｌの長手方向（または軸）に平行な軸であり、Ａ軸およびＣ軸は、そのＢ軸に、それぞれ異なる方向から直交する軸である。
【００３９】
上腕５８Ｒおよび５８Ｌのそれぞれの先端には、肘関節６０Ｒおよび６０Ｌを介して、前腕６２Ｒおよび６２Ｌが取り付けられる。肘関節６０Ｒおよび６０Ｌは、それぞれ、Ｗ軸およびＤ軸の軸廻りにおいて、前腕６２Ｒおよび６２Ｌの角度を制御できる。
【００４０】
なお、上腕５８Ｒおよび５８Ｌならびに前腕６２Ｒおよび６２Ｌ（いずれも図３）の変位を制御するＸ，Ｙ，Ｚ，Ｗ軸およびＡ，Ｂ，Ｃ，Ｄ軸では、「０度」がホームポジションであり、このホームポジションでは、上腕５８Ｒおよび５８Ｌならびに前腕６２Ｒおよび６２Ｌは下方向に向けられる。
【００４１】
また、図３では示さないが、上部胴体４６の肩関節５６Ｒおよび５６Ｌを含む肩の部分や上述の上腕５８Ｒおよび５８Ｌならびに前腕６２Ｒおよび６２Ｌを含む腕の部分には、それぞれ、タッチセンサ（図４において参照番号６４で包括的に示す。）が設けられていて、これらのタッチセンサ６４は、人がロボット１２のこれらの部位に接触したかどうかを検知する。
【００４２】
前腕６２Ｒおよび６２Ｌのそれぞれの先端には、手に相当する球体６６Ｒおよび６６Ｌがそれぞれ固定的に取り付けられる。なお、この球体６６Ｒおよび６６Ｌに代えて、この実施例のロボット１２と異なり指の機能が必要な場合には、人の手の形をした「手」を用いることも可能である。
【００４３】
上部胴体４６の中央上方には、首関節６８を介して、頭部７０が取り付けられる。この首関節６８は、３軸の自由度を有し、Ｓ軸，Ｔ軸およびＵ軸の各軸廻りに角度制御可能である。Ｓ軸は首から真上に向かう軸であり、Ｔ軸およびＵ軸は、それぞれ、このＳ軸に対して異なる方向で直交する軸である。頭部７０には、人の口に相当する位置に、スピーカ７２が設けられる。スピーカ７２は、ロボット１２が、それの周囲の人に対して音声または声によってコミュニケーションを図るために用いられる。ただし、スピーカ７２は、ロボット１２の他の部位たとえば胴体に設けられてもよい。
【００４４】
また、頭部７０には、目に相当する位置に眼球部７４Ｒおよび７４Ｌが設けられる。眼球部７４Ｒおよび７４Ｌは、それぞれ眼カメラ５４Ｒおよび５４Ｌを含む。なお、右の眼球部７４Ｒおよび左の眼球部７４Ｌをまとめて眼球部７４といい、右の眼カメラ５４Ｒおよび左の眼カメラ５４Ｌをまとめて眼カメラ５４ということもある。眼カメラ５４は、ロボット１２に接近した人の顔や他の部分ないし物体等を撮影してその映像信号を取り込む。
【００４５】
なお、上述の全方位カメラ５２および眼カメラ５４のいずれも、たとえばＣＣＤやＣＭＯＳのように固体撮像素子を用いるカメラであってよい。
【００４６】
たとえば、眼カメラ５４は眼球部７４内に固定され、眼球部７４は眼球支持部（図示せず）を介して頭部７０内の所定位置に取り付けられる。眼球支持部は、２軸の自由度を有し、α軸およびβ軸の各軸廻りに角度制御可能である。α軸およびβ軸は頭部７０に対して設定される軸であり、α軸は頭部７０の上へ向かう方向の軸であり、β軸はα軸に直交しかつ頭部７０の正面側（顔）が向く方向に直交する方向の軸である。この実施例では、頭部７０がホームポジションにあるとき、α軸はＳ軸に平行し、β軸はＵ軸に平行するように設定されている。このような頭部７０において、眼球支持部がα軸およびβ軸の各軸廻りに回転されることによって、眼球部７４ないし眼カメラ５４の先端（正面）側が変位され、カメラ軸すなわち視線方向が移動される。
【００４７】
なお、眼カメラ５４の変位を制御するα軸およびβ軸では、「０度」がホームポジションであり、このホームポジションでは、図３に示すように、眼カメラ５４のカメラ軸は頭部７０の正面側（顔）が向く方向に向けられ、視線は正視状態となる。
【００４８】
図４には、ロボット１２の内部構成を示すブロック図が示される。図４に示すように、このロボット１２は、全体の制御のためにマイクロコンピュータまたはＣＰＵ７６を含み、このＣＰＵ７６には、バス７８を通して、メモリ８０，モータ制御ボード８２，センサ入力／出力ボード８４および音声入力／出力ボード８６が接続される。
【００４９】
メモリ８０は、図示しないが、ＲＯＭやＨＤＤ、ＲＡＭ等を含み、ＲＯＭまたはＨＤＤにはこのロボット１２の制御プログラムおよびデータ等が予め格納されている。ＣＰＵ７６は、このプログラムに従って処理を実行する。また、ＲＡＭは、一時記憶メモリとして用いられるとともに、ワーキングメモリとして利用され得る。
【００５０】
モータ制御ボード８２は、たとえばＤＳＰ(Digital Signal Processor)で構成され、右腕、左腕、頭および眼等の身体部位を駆動するためのモータを制御する。すなわち、モータ制御ボード８２は、ＣＰＵ７６からの制御データを受け、右肩関節５６ＲのＸ，ＹおよびＺ軸のそれぞれの角度を制御する３つのモータと右肘関節６０Ｒの軸Ｗの角度を制御する１つのモータを含む計４つのモータ（図４ではまとめて、「右腕モータ」として示す。）８８の回転角度を調節する。また、モータ制御ボード８２は、左肩関節５６ＬのＡ，ＢおよびＣ軸のそれぞれの角度を制御する３つのモータと左肘関節６０ＬのＤ軸の角度を制御する１つのモータとを含む計４つのモータ（図４ではまとめて、「左腕モータ」として示す。）９０の回転角度を調節する。モータ制御ボード８２は、また、首関節６８のＳ，ＴおよびＵ軸のそれぞれの角度を制御する３つのモータ（図４ではまとめて、「頭部モータ」として示す。）９２の回転角度を調節する。モータ制御ボード８２は、また、腰モータ５０、および車輪３４を駆動する２つのモータ（図４ではまとめて、「車輪モータ」として示す。）３６を制御する。さらに、モータ制御ボード８２は、右眼球部７４Ｒのα軸およびβ軸のそれぞれの角度を制御する２つのモータ（図４ではまとめて、「右眼球モータ」として示す。）９４の回転角度を調節し、また、左眼球部７４Ｌのα軸およびβ軸のそれぞれの角度を制御する２つのモータ（図４ではまとめて、「左眼球モータ」として示す。）９６の回転角度を調節する。
【００５１】
なお、この実施例の上述のモータは、車輪モータ３６を除いて、制御を簡単化するためにそれぞれステッピングモータまたはパルスモータであるが、車輪モータ３６と同様に、直流モータであってよい。
【００５２】
センサ入力／出力ボード８４も、同様に、ＤＳＰで構成され、各センサやカメラからの信号を取り込んでＣＰＵ７６に与える。すなわち、超音波距離センサ４２の各々からの反射時間に関するデータがこのセンサ入力／出力ボード８４を通して、ＣＰＵ７６に入力される。また、全方位カメラ５２からの映像信号が、必要に応じてこのセンサ入力／出力ボード８４で所定の処理が施された後、ＣＰＵ７６に入力される。眼カメラ５４からの映像信号も、同様にして、ＣＰＵ７６に与えられる。また、タッチセンサ６４からの信号がセンサ入力／出力ボード８４を介してＣＰＵ７６に与えられる。
【００５３】
スピーカ７２には音声入力／出力ボード８６を介して、ＣＰＵ７６から、合成音声データが与えられ、それに応じて、スピーカ７２からはそのデータに従った音声または声が出力される。また、マイク２４からの音声入力が、音声入力／出力ボード８６を介してＣＰＵ７６に取り込まれる。
【００５４】
通信ＬＡＮボード９８も、同様に、ＤＳＰで構成され、ＣＰＵ７６から与えられた送信データを無線通信装置１００に与え、無線通信装置１００から送信データを送信させる。また、通信ＬＡＮボード９８は無線通信装置１００を介してデータを受信し、受信データをＣＰＵ７６に与える。
【００５５】
この実施例では、たとえば人間１４が指差しをしたり、方向を指示する身振り（ジェスチャ）をしたりするような順路案内状況において、人間１４に対して協力的な動作（模倣動作や同調動作など）をロボット１２に行わせる場合が想定される。なお、模倣動作を含む協力的な動作を行う状況はこの順路案内状況に限定されるものではなく適宜変更され得る。
【００５６】
順路案内状況は、たとえば、ロボット１２が人間１４に対して「会議室へはどう行けばいいの？」と順路を尋ねる言葉を話し掛けたりすることによって引き起こされる。このような状況において、ロボット１２が、人間１４の動作に応じて、その動作に協力的な動作を実行する。つまり、たとえば、人間どうしのコミュニケーションでは、順路案内状況で人間が指差しをして方向を示すような特定動作を行った場合に、相手が同じように指差しをするという模倣動作がよく行われる。また、人間が指差しをして方向を示した場合にその方向に顔を向けたり、人間が発話も交えて順路案内を説明した場合には、相槌を打ったりうなずいたりする。このように、人間の動作に同調する動作もよく行われる。人間はこのような相手の動作に協力的な動作を無意識的に行って、円滑で自然なコミュニケーションを実現している。
【００５７】
そこで、この実施例では、模倣動作の一例として、人間１４が順路案内状況で特定動作を行ったとき、すなわち、順路を案内するために指差しをして方向を示したとき、ロボット１２は、人間１４の指した方向と同じ方向に指差し（方向を指し示すジェスチャ）をする。また、人間１４が指差しではなく手を動かしているとき、ロボット１２は人間１４と同じ動きをする。これらの場合において、模倣動作に使用するロボット１２の腕は、人間１４との衝突の危険性を考慮して選択され、したがって、模倣動作としては、同一の動作ばかりでなく類似する動作も行われる。このように、ロボット１２が、人間１４の動作の模倣動作、すなわち、人間１４の行動に類似するあるいは同一の行動を示すことによって、人間１４との間で自然で円滑なコミュニケーションを実現することができる。
【００５８】
また、同調する動作の一例としては、人間１４が順路を案内するために指差しをして方向を示したとき、ロボット１２は人間１４の指した方向を見る（顔を向ける）。また、ロボット１２は、指差しがなされていないときなどには、人間１４にアイコンタクトをする。また、人間１４の発話の状態に応じて、相槌を打ったり、うなづいたりする。
【００５９】
具体的には、人間１４およびロボット１２の身体動作は、モーションキャプチャシステム１８によって計測され、各マーカ取付点の３次元位置座標データとして３次元動作計測データＤＢ２６に記憶される。また、人間１４の発話は、ロボット１２に設けられたマイク２４によって取得され、発話計測データとしてロボット制御装置１６の発話計測データＤＢ２２に記憶される。ロボット制御装置１６は、３次元動作計測データＤＢ２６に記憶された身体動作データ（３次元動作計測データ）、および発話計測データＤＢ２２に記憶された発話に関するデータ（発話計測データ）に基づいて、人間１４の状態をほぼリアルタイムに検出し、行動モジュールＤＢ２０に格納された複数の行動モジュールの中からロボット１２に実行させるべき行動モジュールを選択する。
【００６０】
図５には、行動モジュールＤＢ２０に記憶される複数の行動モジュールの内容の一例が示される。行動モジュールは、身体動作および発話を用いた行動をロボット１２に実行させるためのプログラムであり、たとえばお辞儀、「こんにちは」と言う、抱っこするといった行動ごとに予め準備されている。この図５では、この実施例の順路案内状況において使用される協力的動作（模倣動作および同調動作）のための行動モジュールを含む複数の行動モジュールの一例が示されている。行動モジュールＤＢ２０では、右腕、左腕および頭の動作ならびに発話のための各行動モジュールが、各識別子に関連付けて記憶されている。
【００６１】
右腕の動作に関しては、人間の右手と同じ動きをする行動モジュール（Ｒｓｒ：識別子）、人間の左手と同じ動きをする行動モジュール（Ｒｓｌ）、右手で指された方向を指差しする行動モジュール（Ｒｐｒ）、左手で指された方向を指差しする行動モジュール（Ｒｐｌ）、および何もしない行動モジュール（Ｒｎｏ）が記憶される。左腕の動作に関しては、人間の左手と同じ動きをする行動モジュール（Ｌｓｌ）、人間の右手と同じ動きをする行動モジュール（Ｌｓｒ）、右手で指された方向を指差しする行動モジュール（Ｌｐｒ）、左手で指された方向を指差しする行動モジュール（Ｌｐｌ）、および何もしない行動モジュール（Ｌｎｏ）が記憶される。頭の動作に関しては、アイコンタクトをする行動モジュール（Ｈｅｃ）、右手で指された方向を見る行動モジュール（Ｈｒｐ）、左手で指された方向を見る行動モジュール（Ｈｌｐ）、および、うなずく行動モジュール（Ｈｎｄ）が記憶される。また、発話に関しては、「え？」と言う行動モジュール（Ｓｅｈ）、「うん」と言う行動モジュール（Ｓｕｎ）、「うんうん」と言う行動モジュール（Ｓｕｕ）、および「それで」と言う行動モジュール（Ｓｓｄ）が記憶される。
【００６２】
上記両腕および頭に関連した各行動モジュールでは、モーションキャプチャシステム１８によって取得された３次元動作計測データに基づいて、両腕および頭の各関節の各軸モータ（右腕モータ８８、左腕モータ９０および頭部モータ９２）の目標角度（角度制御データ）がそれぞれ算出される。たとえば、人間１４の手と同じ動きをする行動モジュール（Ｒｓｒ、Ｒｓｌ、Ｌｓｌ、Ｌｓｒ）では、まず、３次元動作計測データに基づいて人間１４の右手および左手の肩および肘の角度をそれぞれ計算する。そして、人間１４がするのと同じ運動をロボット１２が示すように、ロボット１２の右腕の肩関節５６Ｒおよび肘関節６０Ｒ、ならびに左腕の肩関節５６Ｌおよび肘関節６０Ｌの各モータ（右腕モータ８８および左腕モータ９０）の目標角度を、人間１４の右手および左手の角度に基づいてそれぞれ算出する。また、人間１４が指した方向を指差しする行動モジュール（Ｒｐｒ、Ｒｐｌ、Ｌｐｒ、Ｌｐｌ）では、同様に、人間１４の右手および左手の肩および肘の角度をそれぞれ計算する。そして、人間１４が指した方向をロボット１２が指差しするように、ロボット１２の右腕モータ８８または左腕モータ９０の目標角度を、人間１４の右手および左手の角度に基づいてそれぞれ算出する。また、何もしない行動モジュール（Ｒｎｏ、Ｌｎｏ）では、ロボット１２の右腕モータ８８および左腕モータ９０の目標角度を、それぞれホームポジションを示す角度に変更するか、あるいは、現在と同じ角度に保持する。また、アイコンタクトをする行動モジュール（Ｈｅｃ）では、人間１４の頭の方向ベクトルおよびロボット１２の頭部７０の方向ベクトルを算出して、これら２つのベクトルが反対方向を示すように、ロボット１２の頭部７０の望ましい角度すなわち頭部モータ９２の目標角度を算出する。また、人間１４が指差した方向を見る行動モジュール（Ｈｒｐ、Ｈｌｐ）では、まず、人間１４の右手または左手の肩および肘の角度をそれぞれ算出する。そして、人間１４が指した方向をロボット１２が見るように、ロボット１２の頭部モータ９２の目標角度を算出する。なお、発話に関する行動モジュールでは、該当する発話内容を示す合成音声データ（発話内容データ）をＨＤＤ等から読み出す。
【００６３】
このような行動モジュールの中から、ロボット制御装置１６は、人間１４の動作の状態に従って、適切な行動モジュールを選択する。選択の際には、人間１４の動作の状態として、現在の動作の状態と過去の動作の状態とが検出される。
【００６４】
現在の動作の状態としては、３次元動作計測データＤＢ２６から取得された３次元動作計測データおよび発話計測データＤＢ２２から取得された発話計測データに基づいて、この実施例では、次の６つの状態が判別される。
【００６５】
すなわち、（１）人間１４は右（または左）手で指差しをしているかが判別される。その結果、右手である場合には、指差しに関する状態を示す変数Pointに右手を示すデータが設定され、左手である場合には変数Pointに左手を示すデータが設定され、または、人間１４が指差しをしていない場合には変数Pointに指差し無しを示すデータが設定される。人間１４の行動が指差しであることの条件は、たとえば、人間１４の肩および肘の角度の値が所定の角度の範囲内にあることである。なお、変数Pointの初期値は無しを示すデータが設定される。（２）人間１４はロボット１２のどちら側（右または左）の方へ指差しをしているかが判別される。その結果、右である場合には、方向に関する状態を示す変数Directionに右を示すデータが設定され、左である場合には変数Directionに左を示すデータが設定される。なお、変数Directionの初期値は方向無しを示すデータが設定される。（３）右（または左）手は動いているかが判別される。詳しくは、右（または左）手の動きの速度が閾値以上かが判別される。その結果、両手である場合には、動きに関する状態を示す変数Moveに両手を示すデータが設定され、右手である場合には変数Moveに右手を示すデータが設定され、左手である場合には変数Moveに左手を示すデータが設定され、両手とも動いていない場合には変数Moveに動き無しを示すデータが設定される。なお、変数Moveの初期値は無しを示すデータが設定される。（４）人間１４は順路案内（指差しまたは方向を示すジェスチャ等）のために右（または左）手を使用しているかが判別される。その結果、右手である場合には、使用に関する状態を示す変数Activeに右手を示すデータが設定され、左手である場合には変数Activeに左手を示すデータが設定され、使用されていない場合には変数Activeに使用無しを示すデータが設定される。詳しくは、この使用または活動の状態は、現在の状態および過去の状態に基づいて判定される。つまり、前回のActiveに設定された手、過去の一定時間における右および左手の動き、および現在のフレームにおける手の肩からの距離の３つの観点に基づいて、判定される。前回のActiveが無しに設定されている場合には、過去一定時間の動きの多い方の手がActiveに設定される。前回のActiveがどちらかの手である場合には、Activeに設定されていない方の手に関してその肩からの距離および過去一定時間の動きの両者が、Activeに設定されている方の手に関してその肩からの距離および過去一定時間の動きの両者よりも大きくなったときにのみ、Activeに設定される手が切り替えられる。なお、変数Activeの初期値は無しを示すデータが設定される。（５）人間１４はロボット１２の右（または左）腕の当たるかもしれない場所にいるかが判別される。その結果、右手である場合には、衝突に関する状態を示す変数Hitに右手を示すデータが設定され、左手である場合には変数Hitに左手を示すデータが設定され、人間１４が当たらない場所にいる場合には変数Hitに衝突無しを示すデータが設定される。なお、変数Hitの初期値は無しを示すデータが設定される。（６）人間１４は発話しているかが判別される。詳しくは、発話に掛かった時間が計測されて、発話に関する変数Speechにその計測された発話時間が設定される。また、発話無し��経過している時間が計測されて変数Nospeechに設定される。なお、変数Speechおよび変数Nospeechの初期値はそれぞれゼロが設定される。
【００６６】
また、過去の動作の状態としては、行動モジュールの過去の選出に基づいて、この実施例では、次の４つの状態が判別される。すなわち、（１）腕の動作の選択について、指差しに応ずる行動モジュールＲｐｒ、Ｒｐｌ、ＬｐｒまたはＬｐｌは、過去一定時間続いているかが判別される。（２）頭の動作の選択について、頭に関連した行動モジュールは過去所定時間続いているかが判別される。（３）頭の動作の選択について、指差しに応ずる行動モジュールＨｒｐまたはＨｌｐは過去一定時間続いているかが判別される。（４）発話の選択について、最後に選択された発話に関する行動モジュールは何であったかが判別される。
【００６７】
ロボット制御装置１６は、検出された人間１４の動作の状態に基づいて、行動選択規則に従って、実行すべき行動モジュールを選択する。行動選択規則は、この実施例では、腕動作、頭動作および発話に関する各選択処理プログラムとしてＨＤＤ等に予め記憶されており、各選択処理プログラムに従って腕動作、頭動作および発話の各選択処理が実行される。この行動選択規則は、発明者等の実験によって得た知識に基づいて作成されている。そして、ロボット制御装置１６は、選択した行動モジュールを実行することによって、必要に応じて上述のような各モータの目標角度の算出等を行って、当該行動の実行を指示する指令データをロボット１２に送信する。送信される指令データには、この実施例では、身体動作に関する行動モジュールの場合には、当該行動を実現するための各モータの角度制御データ（目標角度データ）が含まれ、また、発話に関する行動モジュールの場合には発話の内容を示す発話内容データ（合成音声データ）が含まれる。
【００６８】
ロボット１２は、行動モジュール実行時には、ロボット制御装置１６からの指令データを受信して、その指令データに基づいて当該行動を実行する。身体動作に関する指令データの場合には角度制御データに従って各モータが制御され、また、発話に関する指令データの場合には音声合成データに従って音声が出力される。このようにして、人間１４の行動を模倣する行動あるいは同調する行動がロボット１２によって実現される。
【００６９】
図６には、ロボット制御装置１６の順路案内状況における動作の一例が示される。図６の最初のステップＳ１で、ロボット制御装置１６のＣＰＵは、状態検出処理を実行する。この処理の動作は図７から図９に詳細に示される。
【００７０】
図７の最初のステップＳ２１で、モーションキャプチャシステム１８のコンピュータを介して３次元動作計測データＤＢ２６から、人間１４の身体動作の状態を検出するために必要な３次元動作計測データを取得する。次に、ステップＳ２３で、人間１４が右手で指差しをしているか否かを判断する。たとえば、３次元動作計測データに基づいて人間１４の右肩および右肘の角度を算出して、それら角度が指差し状態を示す所定の角度範囲内にあるかどうかが判定される。
【００７１】
ステップＳ２３で“ＹＥＳ”であれば、ステップＳ２５で、指差しの状態を示す変数Pointに右手を示すデータを設定する。続いて、ステップＳ２７で、人間１４の右手がロボット１２の右側を指しているか否かを判断する。たとえば、人間１４の右の前腕の指す方向が、ロボット１２の中心から見てロボット１２の右腕の存在する側であるか、または左腕の存在する側であるかが判定される。ステップＳ２７で“ＹＥＳ”であれば、方向の状態を示す変数Directionに右を示すデータを設定する。一方、ステップＳ２７で“ＮＯ”であれば、つまり、人間１４がロボット１２の左側を指している場合には、ステップＳ３１で、変数Directionに左を示すデータを設定する。ステップＳ２９またはステップＳ３１を終了すると、処理はステップＳ４５へ進む。
【００７２】
一方、ステップＳ２３で“ＮＯ”であれば、ステップＳ３３で、人間１４が左手で指差しをしているか否かを判断する。たとえば、人間１４の左肩および左肘の角度を算出して、それら角度が指差し状態を示す所定の角度範囲内にあるかどうかが判定される。
【００７３】
ステップＳ３３で“ＹＥＳ”であれば、ステップＳ３５で、変数Pointに左手を示すデータを設定する。続いて、ステップＳ３７で、人間１４の左手がロボット１２の右側を指しているか否かを判断する。たとえば、人間の左の前腕の指す方向が、ロボット１２の中心から見てロボット１２の右腕の存在する側であるか、または左腕の存在する側であるかが判定される。ステップＳ３７で“ＹＥＳ”であれば、変数Directionに右を示すデータを設定し、ステップＳ３７で“ＮＯ”であれば、変数Directionに左を示すデータを設定する。ステップＳ３９またはステップＳ４１を終了すると、処理はステップＳ４５へ進む。
【００７４】
また、ステップＳ３３で“ＮＯ”であれば、つまり、人間１４が右手でも左手でも指差しをしていない場合には、ステップＳ４３で、変数Pointに指差し無しを示すデータを設定する。
【００７５】
ステップＳ４５では、人間１４の右手が動いているか否かを判定する。たとえば、３次元動作計測データに基づいて人間１４の右手の動く速度を算出して、その算出した速度が所定の閾値以上であるか否かが判定される。ステップＳ４５で“ＮＯ”であれば、ステップＳ４７で、人間１４の左手が動いているか否かを判定する。たとえば、人間の左手の動く速度を算出して、その速度が所定の閾値以上であるかが判定される。ステップＳ４７で“ＮＯ”であれば、人間１４の両手とも動いていないとみなして、ステップＳ４９で動きの状態を示す変数Moveに動き無しを示すデータを設定する。一方、ステップＳ４７で“ＹＥＳ”であれば、ステップＳ５１で変数Moveに左手を示すデータを設定する。また、ステップＳ４５で“ＹＥＳ”であれば、続くステップＳ５３で、上述のステップＳ４７と同様にして、人間１４の左手が動いているか否かを判定する。ステップＳ５３で“ＹＥＳ”であれば、人間１４の両手とも動いているとみなして、ステップＳ５５で変数Moveに両手を示すデータを設定する。一方、ステップＳ５３で“ＮＯ”であれば、ステップＳ５７で変数Moveに右手を示すデータを設定する。ステップＳ４９、Ｓ５１、Ｓ５５またはＳ５７を終了すると、処理は図８のステップＳ５９へ進む。
【００７６】
図８のステップＳ５９では、手の使用状態を示す変数Activeに無しを示すデータが設定されているか否かを判断する。ステップＳ５９で“ＹＥＳ”であれば、つまり、前回の処理の時点では順路案内のためにどちらの手も使用されていないと判定されていた場合等には、ステップＳ６１で、人間１４の左手の過去一定時間（たとえば１秒）の動きが、右手の過去一定時間の動きよりも多いか否かを判定する。ステップＳ６１で“ＹＥＳ”であれば、左手が順路案内のために使用されているとみなして、ステップＳ６３で変数Activeに左手を示すデータを設定する。一方、ステップＳ６１で“ＮＯ”であれば、ステップＳ６５で、左手の過去一定時間の動きが、右手の過去一定時間の動き以下であるか否かを判定する。ステップＳ６５で“ＹＥＳ”であれば、右手が順路案内ために使用されているとみなして、ステップＳ６７で変数Activeに右手を示すデータを設定する。ステップＳ６５で“ＮＯ”であれば、つまり、どちらの手も過去一定時間の間に動きがない場合には、ステップＳ６９で変数Activeに無しを示すデータを設定する。ステップＳ６３、Ｓ６７またはＳ６９を終了すると、処理は図９のステップＳ８９へ進む。
【００７７】
一方、ステップＳ５９で“ＮＯ”であれば、ステップＳ７１で、上述のステップＳ６１と同様にして、左手の動きが右手の動きよりも多いか否かを判断する。ステップＳ７１で“ＹＥＳ”であれば、ステップＳ７３で、現在のフレームの３次元動作計測データに基づいて、左手の肩からの距離が右手の肩からの距離よりも長いか否かを判断する。ここで、手の肩からの距離は、人間１４の身体を真上から見た場合の手（手先ないし手首）と肩との距離である。ステップＳ７３で“ＹＥＳ”であれば、つまり、過去一定時間における左手の動きが右手の動きよりも多く、かつ、左手が右手よりも肩から離れている場合には、左手が順路案内のために使用されているものとみなして、ステップＳ７５で変数Activeに左手を示すデータを設定する。
【００７８】
一方、ステップＳ７１で“ＮＯ”であれば、ステップＳ７７で、上述のステップＳ６５と同様にして、左手の動きが右手の動き以下であるか否かを判断する。ステップＳ７７で“ＹＥＳ”であれば、ステップＳ７９で、現在のフレームの３次元動作計測データに基づいて、左手の肩からの距離が右手の肩からの距離以下であるか否かを判断する。ステップＳ７９で“ＹＥＳ”であれば、つまり、過去一定時間における右手の動きが左手の動き以上であり、かつ、右手が左手以上に肩から離れている場合には、右手が順路案内のために使用されているものとみなして、ステップＳ８１で変数Activeに右手を示すデータを設定する。ステップＳ７５またはＳ８１を終了すると、処理は図９のステップＳ８９へ進む。
【００７９】
一方、ステップＳ７３で“ＮＯ”である場合、ステップＳ７７で“ＮＯ”である場合、またはステップＳ７９で“ＮＯ”である場合には、処理はステップＳ８３へ進んで、前回と同じ手をActiveに設定する。つまり、ステップＳ８３では、変数Activeに左手を示すデータが設定されているか否かを判断する。ステップＳ８３で“ＹＥＳ”であれば、ステップＳ８５で変数Activeに左手を示すデータを設定し、ステップＳ８３で“ＮＯ”であれば、ステップＳ８７で変数Activeに右手を示すデータを設定して、処理は図９のステップＳ８９へ進む。
【００８０】
図９のステップＳ８９では、人間１４がロボット１２の右手の当たるかもしれない場所にいるか否かを判断する。つまり、たとえば、３次元動作計測データに基づいて、ロボット１２の右腕（球体６６Ｒ、前腕６２Ｒ、肘関節６０Ｒ、上腕５８Ｒおよび肩関節５６Ｒ）の可動範囲に人間１４が存在しているか否かが判定される。ステップＳ８９で“ＹＥＳ”であれば、ステップＳ９１で、衝突の状態を示す変数Hitに右手を示すデータを設定する。
【００８１】
一方、ステップＳ８９で“ＮＯ”であれば、ステップＳ９３で、人間１４がロボット１２の左手の当たるかもしれない場所にいるか否かを判断する。たとえば、ロボット１２の左腕（球体６６Ｌ、前腕６２Ｌ、肘関節６０Ｌ、上腕５８Ｌおよび肩関節５６Ｌ）の可動範囲に人間１４が存在しているか否かが判定される。ステップＳ９３で“ＹＥＳ”であれば、ステップＳ９５で変数Hitに左手を示すデータを設定する。
【００８２】
また、ステップＳ９３で“ＮＯ”であれば、ステップＳ９７で、ロボット１２の両手と人間１４とが衝突するおそれがないので、変数Hitに無しを示すデータを設定する。
【００８３】
続いて、ステップＳ９９で、発話計測データＤＢ２２から人間１４の発話状態を検出するために必要な発話計測データを取得する。この発話計測データに基づいて、ステップＳ１０１で、人間１４が話しているか否かを判断する。
【００８４】
ステップＳ１０１で“ＹＥＳ”であれば、ステップＳ１０３で発話時間Speechの計測処理を実行する。たとえば、発話開始の検出に応じて発話時間のカウントを開始し、発話終了を検出するまで発話時間のカウントを継続し、発話終了を検出したとき変数Speechに計測した発話時間を設定する。
【００８５】
一方、ステップＳ１０１で“ＮＯ”であれば、ステップＳ１０５で、発話なし時間Nospeechの計測処理を実行する。たとえば、発話終了の検出に応じて発話なし時間のカウントを開始し、発話開始を検出するまで発話なし時間のカウントを継続するとともに、変数Nospeechに発話なし時間を設定する。ステップＳ１０３またはＳ１０５を終了すると、この状態検出処理を終了する。
【００８６】
図６に戻って、ステップＳ１を終了すると、ステップＳ３で腕動作選択処理を実行する。この腕の行動モジュールを選択するための処理の動作は図１０から図１２に詳細に示される。
【００８７】
図１０の最初のステップＳ１３１で、腕動作に関する前回の行動モジュールが指差しの何れか（Ｒｐｒ、Ｒｐｌ、ＬｐｒまたはＬｐｌ）であったか否かを判断する。ステップＳ１３１で“ＹＥＳ”であれば、ステップＳ１３３で指差し動作Ｒｐｒ、Ｒｐｌ、ＬｐｒまたはＬｐｌが一定時間以上続いているか否かを判断する。ステップＳ１３３で“ＮＯ”であれば、つまり、指差しの行動モジュールが一定時間以上続いていない場合には、その行動モジュールの実行を継続すべく、ステップＳ１３５で、前回と同じ行動モジュールを選択する。ステップＳ１３５を終了すると、この腕動作選択処理を終了する。
【００８８】
一方、ステップＳ１３３で“ＹＥＳ”であれば、つまり、指差しの行動モジュールが一定時間以上続いている場合には、ステップＳ１で検出された状態に応じた行動モジュールの再選択を行うべく、処理はステップＳ１３７へ進む。これによって、ロボット１２が指差しを模倣する動作を長々と続けるようなことがなく、その模倣動作の実現される時間を適切なものにすることができ、自然な模倣動作を実現できる。また、ステップＳ１３１で“ＮＯ”であれば、同様に、ステップＳ１３７へ進む。
【００８９】
ステップＳ１３７では、指差しの状態を示す変数Pointに左手を示すデータが設定されているか否かを判断する。ステップＳ１３７で“ＹＥＳ”であれば、ステップＳ１３９で、使用の状態を示す変数Activeに左手を示すデータが設定されているか否かを判断する。ステップＳ１３９で“ＹＥＳ”であれば、衝突の状態を示す変数Hitに左手を示すデータが設定されているか否かを判断する。ステップＳ１４１で“ＹＥＳ”であれば、つまり、人間１４が左手を使用して指差し動作を行っていて、かつ、ロボット１２の左腕の当たり得る位置に存在している場合には、ステップＳ１４３で、左手で指された方向を右腕で指差すための行動モジュールＲｐｌを選択する。
【００９０】
このように、人間１４の身体動作をそのまま真似をすると人間１４にぶつかる恐れのある場合には、模倣動作として、使用する腕を変更した類似する動作を選択する。したがって、人間１４の動作を模倣する動作を安全に行うことができ、円滑で自然なコミュニケーションを実現できる。
【００９１】
一方、ステップＳ１４１で“ＮＯ”であれば、ステップＳ１４５で変数Hitに右手を示すデータが設定されているか否かを判断する。ステップＳ１４５で“ＹＥＳ”であれば、つまり、人間１４が左手を使用して指差し動作を行っていて、かつ、ロボット１２の右腕の当たり得る位置に存在している場合には、ステップＳ１４７で、左手で指された方向を左腕で指差すための行動モジュールＬｐｌを選択する。この場合、安全が確保されているので、模倣動作として、同じ腕を使用する同一の動作を選択する。
【００９２】
また、ステップＳ１４５で“ＮＯ”であれば、つまり、変数Hitに無しを示すデータが設定されている場合には、ステップＳ１４９で、指差しの方向を示す変数Directionに右を示すデータが設定されているか否かを判断する。ステップＳ１４９で“ＹＥＳ”であれば、つまり、人間１４がロボット１２の腕の当たり得る位置に存在せず、かつ、左手でロボット１２から見て右側を指している場合には、ステップＳ１５１で、左手で指された方向を右腕で指差すための行動モジュールＲｐｌを選択する。
【００９３】
一方、ステップＳ１４９で“ＮＯ”であれば、つまり、変数Directionに左を示すデータが設定されている場合、つまり、人間１４がロボット１２の腕の当たり得る位置に存在せず、かつ、左手でロボット１２から見て左側を指している場合には、ステップＳ１５３で、左手で指された方向を左腕で指差すための行動モジュールＬｐｌを選択する。
【００９４】
このように、安全性が確保されている場合には、人間１４の指している方向に対応する側の腕を使用した模倣動作を選択する。したがって、ロボット１２は、指差しする方向と同じ側の腕を使用するので、人間１４の動作を模倣する動作をより自然な形で行うことができ、自然で円滑なコミュニケーションを実現することができる。
【００９５】
ステップＳ１４３、Ｓ１４７、Ｓ１５１またはＳ１５３を終了すると、ステップＳ１３３等での判断に使用するために指差し動作時間のカウントを開始して、この腕動作選択処理を終了する。
【００９６】
また、ステップＳ１３９で“ＮＯ”であれば、つまり、左手で指差しをしている状態ではあるが、左手を使用していると認められない場合には、左手による指差しが終わっているとみなして、ステップＳ１５５で、右腕および左腕で何もしない動作をするための行動モジュールＲｎｏおよびＬｎｏを選択する。このように、人間１４が動作に使用する手を検出するようにしたので、動作が変化するときに的確に対応することができる。つまり、動作が変更されても模倣動作をし続けるようなことがないので、自然で違和感のない模倣動作を実現できる。ステップＳ１５５を終了すると、この腕動作選択処理を終了する。
【００９７】
また、ステップＳ１３７で“ＮＯ”であれば、ステップＳ１５７で変数Pointに右手を示すデータが設定されているか否かを判断する。ステップＳ１５７で“ＹＥＳ”であれば、処理は図１１のステップＳ１５９へ進む。
【００９８】
図１１のステップＳ１５９では、変数Activeに右手を示すデータが設定されているか否かを判断する。ステップＳ１５９で“ＹＥＳ”であれば、ステップＳ１６１で変数Hitに右手を示すデータが設定されているか否かを判断する。ステップＳ１６１で“ＹＥＳ”であれば、つまり、人間１４が右手を使用して指差し動作を行っていて、かつ、ロボット１２の右腕の当たり得る位置に存在している場合には、ステップＳ１６３で、右手で指された方向を左腕で指差すための行動モジュールＬｐｒを選択する。このようにして、安全に模倣動作を行うことができる。
【００９９】
一方、ステップＳ１６１で“ＮＯ”であれば、ステップＳ１６５で変数Hitに左手を示すデータが設定されているか否かを判断する。ステップＳ１６５で“ＹＥＳ”であれば、つまり、人間１４が右手を使用して指差し動作を行っていて、かつ、ロボット１２の左腕の当たり得る位置に存在している場合には、ステップＳ１６７で、右手で指された方向を右腕で指差すための行動モジュールＲｐｒを選択する。
【０１００】
また、ステップＳ１６５で“ＮＯ”であれば、つまり、変数Hitに無しを示すデータが設定されている場合には、ステップＳ１６９で、変数Directionに右を示すデータが設定されているか否かを判断する。ステップＳ１６９で“ＹＥＳ”であれば、つまり、人間１４がロボット１２の腕の当たり得る位置に存在せず、かつ、右手でロボット１２から見て右側を指している場合には、ステップＳ１７１で、右手で指された方向を右腕で指差すための行動モジュールＲｐｒを選択する。
【０１０１】
一方、ステップＳ１６９で“ＮＯ”であれば、つまり、変数Directionに左を示すデータが設定されている場合、つまり、人間１４がロボット１２の腕の当たり得る位置に存在せず、かつ、右手でロボット１２からみて左側を指している場合には、ステップＳ１７３で、右手で指された方向を左腕で指差すための行動モジュールＬｐｒを選択する。このようにして、自然に模倣動作を行うことができる。
【０１０２】
ステップＳ１６３、Ｓ１６７、Ｓ１７１またはＳ１７３を終了すると、ステップＳ１３３等での判断に使用するために指差し動作時間のカウントを開始して、この腕動作選択処理を終了する。
【０１０３】
また、ステップＳ１５９で“ＮＯ”であれば、つまり、右手で指差しをしている状態であるが、右手を使用していると認められない場合には、右手による指差しが終わっているとみなして、図１０のステップＳ１５５で、行動モジュールＲｎｏおよびＬｎｏを選択する。
【０１０４】
また、図１０のステップＳ１５７で“ＮＯ”であれば、つまり、変数Pointに無しを示すデータが設定されている場合には、処理は図１２のステップＳ１７５へ進む。
【０１０５】
図１２のステップＳ１７５では、変数Hitに無しを示すデータが設定されているか否かを判断する。ステップＳ１７５で“ＹＥＳ”であれば、ステップＳ１７７で動きの状態を示す変数Moveに両手を示すデータが設定されているか否かを判断する。ステップＳ１７７で“ＹＥＳ”であれば、つまり、人間１４が指差しではなく両手を動かしていて、かつ、ロボット１２の腕の当たり得る位置に存在していない場合には、ステップＳ１７９で、右腕で人間１４の右手と同じ動きをする行動モジュールＲｓｒ、および左腕で人間１４の左手と同じ動きをする行動モジュールＬｓｌを選択する。このように、この実施例では、人間１４が指差しを行っていない場合でも、安全が確保されていれば、模倣動作を実行させる。
【０１０６】
一方、ステップＳ１７７で“ＮＯ”であれば、ステップＳ１８１で変数Moveに右手を示すデータが設定されているか否かを判断する。ステップＳ１８１で“ＹＥＳ”であれば、つまり、人間１４が指差しではなく右手を動かしていて、かつ、ロボット１２の腕の当たり得る位置に存在していない場合には、ステップＳ１８３で、行動モジュールＲｓｒを選択する。
【０１０７】
また、ステップＳ１８１で“ＮＯ”であれば、ステップＳ１８５で変数Moveに左手を示すデータが設定されているか否かが判断される。ステップＳ１８５で“ＹＥＳ”であれば、つまり、人間１４が指差しではなく左手を動かしていて、かつ、ロボット１２の腕の当たり得る位置に存在していない場合には、ステップＳ１８７で行動モジュールＬｓｌを選択する。なお、ステップＳ１７９、Ｓ１８３またはＳ１８７を終了すると、この腕動作選択処理を終了する。
【０１０８】
また、ステップＳ１８５で“ＮＯ”であれば、つまり、変数Moveに無しを示すデータが設定されている場合には、人間１４が手を動かしていないものとみなして、図１０のステップＳ１５５へ進んで、行動モジュールＲｎｏおよびＬｎｏを選択する。
【０１０９】
一方、図１２のステップＳ１７５で“ＮＯ”であれば、つまり、人間１４がロボット１２の腕の当たり得る位置に存在している場合には、ステップＳ１８９で、変数Activeに右手を示すデータが設定されているか否かを判断する。ステップＳ１８９で“ＹＥＳ”であれば、ステップＳ１９１で変数Hitに右手を示すデータが設定されているか否かを判断する。ステップＳ１９１で“ＮＯ”であれば、つまり、人間１４が指差しではないが右手を使用していて、かつ、ロボット１２の左腕の当たり得る位置に存在している場合には、ステップＳ１９３で行動モジュールＲｓｒを選択する。
【０１１０】
一方、ステップＳ１９１で“ＹＥＳ”であれば、つまり、変数Hitに右手を示すデータが設定されている場合、つまり、人間１４が指差しではないが右手を使用していて、かつ、ロボット１２の右腕の当たり得る位置に存在している場合には、ステップＳ１９５で、左腕で人間１４の右手と同じ動きをするための行動モジュールＬｓｒを選択する。この場合にも、使用する腕を変更して模倣動作を安全に行うことができる。ステップＳ１９３またはＳ１９５を終了すると、この腕動作選択処理を終了する。
【０１１１】
一方、ステップＳ１８９で“ＮＯ”であれば、ステップＳ１９７で変数Activeに左手を示すデータが設定されているか否かを判断する。ステップＳ１９７で“ＹＥＳ”であれば、ステップＳ１９９で変数Hitに左手を示すデータが設定されているか否かを判断する。ステップＳ１９９で“ＹＥＳ”であれば、つまり、人間１４が指差しではなく左手を使用していて、かつ、ロボット１２の左腕の当たり得る位置に存在している場合には、ステップＳ２０１で、右腕で人間１４の左手と同じ動きをするための行動モジュールＲｓｌを選択する。この場合にも、腕を替えて人間１４の模倣動作を安全に行うことができる。
【０１１２】
一方、ステップＳ１９９で“ＮＯ”であれば、つまり、変数Hitに右手を示すデータが設定されている場合、つまり、人間１４が指差しではなく左手を使用していて、かつ、ロボット１２の右腕の当たり得る位置に存在している場合には、ステップＳ２０３で行動モジュールＬｓｌを選択する。ステップＳ２０１またはＳ２０３を終了すると、この腕動作選択処理を終了する。
【０１１３】
また、ステップＳ１９７で“ＮＯ”であれば、つまり、変数Activeに無しを示すデータが設定されている場合、つまり、人間１４が指差しをせず、かつ、両手とも使用せず、かつ、ロボット１２のどちらかの腕に当たり得る位置に存在している場合には、図１０のステップＳ１５５で行動モジュールＲｎｏおよびＬｎｏを選択する。
【０１１４】
図６に戻って、ステップＳ３の腕動作選択処理を終了すると、ステップＳ５で頭動作選択処理を実行する。この頭の行動モジュールを選択するための処理の動作は図１３に詳細に示される。
【０１１５】
図１３の最初のステップＳ２２１で、頭動作に関する前回の行動モジュールが所定時間以上続いているか否かを判断する。ステップＳ２２１で“ＮＯ”であれば、前回の行動モジュールの実行を継続すべく、ステップＳ２２３で前回と同じ行動モジュールを選択する。ステップＳ２２３を終了すると、この頭動作選択処理を終了する。
【０１１６】
一方、ステップＳ２２１で“ＹＥＳ”であれば、ステップＳ２２５で、前回の行動モジュールが、指差しに同調するあるいは協力的な頭動作、すなわち、右手で指された方向を見るための行動モジュールＨｒｐまたは左手で指された方向を見るための行動モジュールＨｌｐであったか否かを判断する。ステップＳ２２５で“ＮＯ”であれば、人間１４の動作状態に応じて行動モジュールを選択すべく、処理はステップＳ２２９へ進む。
【０１１７】
一方、ステップＳ２２５で“ＹＥＳ”であれば、ステップＳ２２７で、指差しに応じた行動モジュールＨｒｐまたはＨｌｐは一定時間以上続いているか否かを判断する。なお、ステップＳ２２７で判定される一定時間は、ステップＳ２２１で判定される所定時間よりも長い時間であって、たとえば人間１４の指差し動作に対して同調したとみなされるのに十分な時間が設定されている。ステップＳ２２７で“ＮＯ”であれば、人間１４の状態に応じた動作を行うべく、処理はステップＳ２２９へ進む。
【０１１８】
ステップＳ２２９では、変数Pointに左手を示すデータが設定されているか否かを判断する。ステップＳ２２９で“ＹＥＳ”であれば、つまり、行動モジュールＨｒｐまたはＨｌｐが一定時間以上続いておらず、かつ、人間１４が左手で指差しを行っている場合には、あるいは、前回の行動モジュールが指差しに同調する動作ＨｒｐおよびＨｌｐ以外であり、かつ、人間１４が左手で指差しを行っている場合には、ステップＳ２３１で、行動モジュールＨｌｐを選択する。
【０１１９】
一方、ステップＳ２２９で“ＮＯ”であれば、ステップＳ２３３で変数Pointに右手を示すデータが設定されているか否かを判断する。ステップＳ２３３で“ＹＥＳ”であれば、つまり、行動モジュールＨｒｐまたはＨｌｐが一定時間以上続いておらず、かつ、人間１４が右手で指差しを行っている場合には、あるいは、前回の行動モジュールが指差しに協力的な動作ＨｒｐおよびＨｌｐ以外であり、かつ、人間１４が右手で指差しを行っている場合には、ステップＳ２３５で、行動モジュールＨｒｐを選択する。
【０１２０】
ステップＳ２３１またはＳ２３５を終了すると、ステップＳ２２１およびステップＳ２２７等での判定に使用するために頭動作に関する行動モジュールの実行時間のカウントを開始して、この頭動作選択処理を終了する。ただし、ステップＳ２２７で“ＮＯ”と判断されていた場合には、カウント開始を実行せずに、この頭動作選択処理を終了する。
【０１２１】
また、ステップＳ２３３で“ＮＯ”であれば、つまり、変数Pointに無しを示すデータが設定されている場合、つまり、人間１４が指差しを行っていない場合には、ステップＳ２３７で、アイコンタクトをするための行動モジュールＨｅｃを選択する。なお、ステップＳ２２７で“ＹＥＳ”である場合、つまり、人間１４の指差しに十分な時間同調した場合にも、ステップＳ２３７で行動モジュールＨｅｃを選択する。ステップＳ２３７を終了すると、ステップＳ２２１等での判定に使用するために頭動作に関する行動モジュールの実行時間のカウントを開始して、この頭動作選択処理を終了する。
【０１２２】
図６に戻って、ステップＳ５を終了すると、ステップＳ７で、発話選択処理を実行する。この発話の行動モジュールを選択するための処理の動作は図１４に詳細に示される。
【０１２３】
図１４の最初のステップＳ２５１で、人間１４が発話した時間を示す変数Speechの値がたとえば１秒以上２秒未満であるか否かを判断する。ステップＳ２５１で“ＹＥＳ”であれば、ステップＳ２５３で発話に関する前回の行動モジュールが「え？」と発話するための行動モジュールＳｅｈであるか否かを判断する。ステップＳ２５３で“ＮＯ”であれば、ステップＳ２５５で行動モジュールＳｅｈを選択する。この場合、人間１４の発話時間が短いので、ロボット１２は聞き取れなかったことを表現する。また、ステップＳ２５３で“ＹＥＳ”であれば、この発話選択処理を終了する。
【０１２４】
一方、ステップＳ２５１で“ＮＯ”であれば、ステップＳ２５７で変数Speechの値がたとえば２秒以上５秒未満であるか否かを判断する。ステップＳ２５７で“ＹＥＳ”であれば、ステップＳ２５９で、「うん」と発話するための行動モジュールＳｕｎ、および、うなずくための行動モジュールＨｎｄを選択する。この場合、人間１４の発話時間が適度な長さであるので、ロボット１２は普通に相槌を打つ。なお、ここでは頭動作に関する行動モジュールも一緒に選択される。
【０１２５】
また、ステップＳ２５７で“ＮＯ”であれば、ステップＳ２６１で変数Speechがたとえば５秒以上であるか否かを判断する。ステップＳ２６１で“ＹＥＳ”であれば、ステップＳ２６３で、「うんうん」と発話するための行動モジュールＳｕｕ、および、うなずくための行動モジュールＨｎｄを選択する。この場合、人間１４の発話時間が比較的長いので、ロボット１２はその長い発話に応じた相槌を打つ。
【０１２６】
一方、ステップＳ２６１で“ＮＯ”であれば、ステップＳ２６５で発話なし時間を示す変数Nospeechがたとえば３秒以上であるか否かを判断する。ステップＳ２６５で“ＹＥＳ”であれば、ステップＳ２６７で、「それで」と発話するための行動モジュールＳｓｄを選択する。この場合、人間１４の無言の時間が長くなったので、ロボット１２は人間１４の話を先へ促す。
【０１２７】
ステップＳ２５５、Ｓ２５９、Ｓ２６３またはＳ２６７を終了すると、または、ステップＳ２６５で“ＮＯ”であれば、この発話選択処理を終了する。
【０１２８】
図６に戻って、ステップＳ７を終了すると、ステップＳ９で、行動モジュールを実行するか否かを判断する。行動モジュールは、たとえば、腕、頭または発話に関する行動モジュールの各選択が変更された場合、または、各行動モジュールの実行に要する所定時間が経過した場合等に実行される。
【０１２９】
ステップＳ９で“ＮＯ”であれば、行動モジュールを実行せずに、処理はステップＳ１５へ進む。一方、ステップＳ９で“ＹＥＳ”であれば、ステップＳ１１で、反応の遅延時間が経過したか否かを判断する。人間１４が何かを行うときに、ロボット１２がこの種の模倣動作や同調動作（たとえば、人間１４が指差しをするときに、ロボット１２の頭がすぐに同じ方向を向く）を即座に実行するならば、明らかに不自然である。したがって、発明者等は、人間同士のコミュニケーション実験において取得した反応の遅延時間をこのロボット制御装置１６に実装し、ロボット１２が所定の遅延時間経過後に模倣動作や同調動作を行うようにしている。発明者等の実験によれば、反応遅延時間は平均的には０．８９秒であれば自然な振る舞いに感じられるので、所定の遅延時間としては、この値、あるいはその近傍の値（たとえば１秒程度）を設定する。
【０１３０】
ステップＳ１１で“ＹＥＳ”であれば、つまり、実行すべき行動モジュール（すなわち、選択に変更のあった行動モジュール、もしくは所定時間経過した行動モジュール）が選択されてから所定の遅延時間が経過した場合には、ステップＳ１３で、行動モジュール実行処理を実行する。この処理の動作の詳細は図１５に示される。
【０１３１】
図１５の最初のステップＳ２８１で、実行すべき行動モジュールを行動モジュールＤＢ２０から読み出して、起動する。これによって、腕動作または頭動作に関する行動モジュールの場合には、たとえば３次元動作計測データを用いながら、各モータの目標角度が算出される。また、発話に関する行動モジュールの場合には、発話内容データがＨＤＤ等から読み出される。
【０１３２】
そして、ステップＳ２８３で、各モータの目標角度データ（角度制御データ）または発話内容データを含む指令データを生成して、この指令データをロボット１２に送信する。
【０１３３】
続いて、ステップＳ２８５で実行すべき行動モジュールが残っているか否かを判断して、“ＹＥＳ”であれば、その行動モジュールについて、ステップＳ２８１およびＳ２８３の処理を実行する。ステップＳ２８５で“ＮＯ”であれば、この行動モジュール実行処理を終了する。
【０１３４】
図６に戻って、ステップＳ１５では、模倣動作ないし同調動作を終了するか否かを判断する。たとえば、人間１４が立ち去った等、順路案内状況が終了したか否かが判定される。ステップＳ１５で“ＮＯ”であれば、処理はステップＳ１に戻る。ステップＳ１５で“ＹＥＳ”であれば、この順路案内状況における行動の処理を終了する。
【０１３５】
図１６には、ロボット１２の行動モジュール実行時の動作の一例が示される。ステップＳ３０１で、ロボット１２のＣＰＵ７６は、ロボット制御装置１６からの指令データを受信したか否かを判断する。ステップＳ３０１で“ＮＯ”であれば、この行動モジュール実行時の処理を終了する。
【０１３６】
一方、ステップＳ３０１で“ＹＥＳ”であれば、ステップＳ３０３で、指令データが身体動作に関するか否かを判断する。ステップＳ３０３で“ＹＥＳ”であれば、ステップＳ３０５で、目標角度データをモータ制御ボード８２に与えて、各モータ８８、９０または９２を制御する。協力的な動作を実現する行動モジュールが選択されていた場合には、ロボット１２の右腕、左腕または頭部は、人間１４の動作の状態に応じた模倣動作または同調動作を示すこととなる。
【０１３７】
また、ステップＳ３０３で“ＮＯ”であれば、つまり、指令データが発話に関するデータである場合には、ステップＳ３０７で、発話内容データを音声入力／出力ボード８６に与えて、スピーカ７２からその音声を出力する。これによって、ロボット１２は人間１４の動作の状態に応じた発話を行う。ステップＳ３０５またはＳ３０７を終了すると、この処理を終了する。
【０１３８】
この実施例によれば、人間１４の模倣をする際に、人間１４とロボット１２の身体動作データを計測して、その身体動作データに基づいて人間１４の動作の状態を検出し、その検出された状態に適切な行動モジュールを選択するようにしている。したがって、人間１４の動作の状態に応じて適切な模倣動作をロボット１２に実行させることができ、自然で円滑なコミュニケーションを実現できる。
【０１３９】
また、この実施例では、人間１４の動作を模倣する動作に加えて、たとえば指された方向に顔を向ける動作や発話に応じた相槌等のような人間１４の動作に同調する動作も、検出された状態に応じて選択するようにしたので、人間１４の行動に同調する動作もロボット１２に適切に実行させることができる。したがって、人間１４に協力的な動作をロボット１２に適切に実行させることによって、人間１４とロボット１２との間で自然かつ円滑なコミュニケーションを実現できる。
【０１４０】
被験者を使用した発明者等の実験によれば、ロボット１２が相互作用する人間（被験者）に対応する協力的な行動（上述の実施例における模倣動作および同調動作）を実行することによって、人間はロボット１２と円滑にコミュニケーションをすることができるということが証明されている。また、この実験では、身体動作因子に関しては、傾聴、共有および共感の観点において重要な効果があり、発話因子に関しては、共有の観点において重要な効果があることが検証されている。さらに、身体動作因子および発話因子の両方が、共感するコミュニケーションの観点、および信頼できるコミュニケーションの観点に影響を及ぼすことが検証されている。したがって、身体動作因子と発話因子の調和によって、共感しかつ信頼できるコミュニケーションが促進され、より円滑なコミュニケーションが実現できるのである。
【０１４１】
なお、上述の実施例では、人間１４の発話の音量を計測して発話時間の長さに応じて行動モジュールを選択するようにしている。しかしながら、ロボット制御装置１６に音声認識のためのプログラムおよびデータを備えさせるようにしてもよい。つまり、この場合には、ロボット制御装置１６は、人間１４の発話の音声データを取得して音声認識をすることによってその発話内容を検出し、検出した発話内容に応じて発話または身体動作に関する行動モジュールを選択することが可能である。
【０１４２】
また、上述の各実施例では、ロボット１２の腕、頭、眼などの身体部位を駆動するアクチュエータとして電力を駆動源とするモータを用いた。しかしながら、ロボット１２は、たとえば空気圧（または負圧）、油圧、圧電素子あるいは形状記憶合金などによる他のアクチュエータによって身体表現をするロボット１２であってもよい。
【０１４３】
また、上述の各実施例では、ロボット１２に模倣動作などの協力的な動作を実行させるようにしていた。しかしながら、この発明にかかる動作生成システム１０では、人間１４およびロボット１２の動作をたとえばモーションキャプチャシステム１８やマイク２４でリアルタイムに検出してその動作に関するデータ（身体動作データおよび発話に関するデータ）を生成することが可能であるので、ロボット１２には、人間１４の動作に協力的な動作よりも広い範囲で、人間１４の動作に対応する動作を適切に実行させることができる。たとえば、ロボット１２と人間１４とがお別れする状況や再会した状況などにおいて、人間１４が手を上げたときにロボット１２がその人間１４に抱きつくようにすることも可能である。もちろんこのような抱きつき動作を実現するための行動モジュールを行動モジュールＤＢ２０に予め記憶しておく。また、人間１４が手を上げたときに、この抱きつき動作のための行動モジュールが、人間１４の動作の状態（Hit、Activeなど）に応じて選択される腕動作選択処理プログラムもロボット制御装置１６に記憶される。この場合には、ロボット１２の手先の動きの範囲を算出し、人間１４との相対位置関係を検出するとともに、手や腕などに配置しているタッチセンサ６４の信号によって人間１４を適切に抱きしめることができる。また、タッチセンサ６４がオン／オフの２値を検出するものでなく、接触の強さ（圧力）を検知可能なセンサである場合、たとえば、本件出願人が平成１５年３月２４日付けで出願した特願２００３−８０１０６号で詳細に示した皮膚センサ等である場合には、抱きつき時のセンサ出力を検出することによって、人間１４をきつく締め付けることがないようにすることも可能である。
【０１４４】
また、上述の各実施例では、ロボット１２とは別個にロボット制御装置１６を設けるようにしたが、ロボット制御装置１６の機能、すなわち、模倣動作を行うためのプログラム等を、行動モジュールＤＢ２０および発話計測データＤＢ２２を含めてロボット１２に内蔵するようにしてもよい。
【０１４５】
また、上述の各実施例では、コミュニケーションの相手は人間１４であったが、ロボット１２の相手は人間に限られず、たとえば他のコミュニケーションロボットであってもよい。
【図面の簡単な説明】
【０１４６】
【図１】この発明の一実施例の動作生成システムの概要を示す図解図である。
【図２】マーカの取付位置の一例を示す図解図である。
【図３】図１のコミュニケーションロボットの外観の一例を示す図解図（正面図）である。
【図４】図１のコミュニケーションロボットの電気的構成の一例を示すブロック図である。
【図５】図１の行動モジュールＤＢに記憶される行動モジュールの内容の一例を示す図解図である。
【図６】図１のロボット制御装置の真似時の動作の一例を示すフロー図である。
【図７】図６の状態検出処理の動作の一例の一部を示すフロー図である。
【図８】図７の続きの一部を示すフロー図である。
【図９】図８の続きを示すフロー図である。
【図１０】図６の腕動作選択処理の動作の一例の一部を示すフロー図である。
【図１１】図１０の続きの一部を示すフロー図である。
【図１２】図１０の続きの他の一部を示すフロー図である。
【図１３】図６の頭動作選択処理の動作の一例を示すフロー図である。
【図１４】図６の発話選択処理の動作の一例を示すフロー図である。
【図１５】図６の行動モジュール実行処理の動作の一例を示すフロー図である。
【図１６】図１のコミュニケーションロボットの行動時の動作の一例を示すフロー図である。
【符号の説明】
【０１４７】
１０  …動作生成システム
１２  …コミュニケーションロボット
１４  …人間
１６  …ロボット制御装置
１８  …モーションキャプチャシステム
２０  …行動モジュールＤＢ
２４  …マイク
５６Ｒ，５６Ｌ  …肩関節
５８Ｒ，５８Ｌ  …上腕
６０Ｒ，６０Ｌ  …肘関節
６２Ｒ，６２Ｌ  …前腕
６８  …首関節
７０  …頭部
８２  …モータ制御ボード
８８  …右腕モータ
９０  …左腕モータ
９２  …頭部モータ
【図１】
2006088276.tif 000003
【図２】
2006088276.tif 000004
【図３】
2006088276.tif 000005
【図４】
2006088276.tif 000006
【図５】
2006088276.tif 000007
【図６】
2006088276.tif 000008
【図７】
2006088276.tif 000009
【図８】
2006088276.tif 000010
【図９】
2006088276.tif 000011
【図１０】
2006088276.tif 000012
【図１１】
2006088276.tif 000013
【図１２】
2006088276.tif 000014
【図１３】
2006088276.tif 000015
【図１４】
2006088276.tif 000016
【図１５】
2006088276.tif 000017
【図１６】
2006088276.tif 000018