(57)【要約】【課題】外部入力をユーザの好みの行動に反映させて、インタラクション性を高めることができるロボット装置を提供する。【解決手段】外部からの入力を外部入力検出部３１にて検出し、その外部入力に応じて開始キーフレームと終了キーフレーム間の補間フレーム数ｎを補間フレーム数決定部１０１にて決定する。変化量算出部１０３は、補間フレーム数ｎと二つのキーフレーム間の関節値の差から、各フレーム毎の変化量を算出し、関節角度計算部１０４に供給する。関節角度計算部１０４は、フレーム毎の変化量から、現在のフレームの関節角度値を計算し、動作制御部６４に供給する。動作制御部６４は、現在フレームの関節角度値にしたがってって該当するアクチュエータＡｉを動作させる。【選択図】　図２
2004130428.tif 000002
【特許請求の範囲】
【請求項１】
指定された開始のキーフレームと終了のキーフレームの間を補間フレームによって補間して所望のモーションを実行するロボット装置であって、
外部からの入力を検出する外部入力検出手段と、
前記外部入力検出手段により検出された外部入力に応じて前記キーフレーム間の補間フレーム数を決定する補間フレーム数決定手段とを備え、
前記補間フレーム数決定手段により決定された補間フレーム数に基づいて前記所望のモーションの対象となる関節の現在の関節角度値を計算しながら前記関節を動かすアクチュエータを動作させることを特徴とするロボット装置。
【請求項２】
前記外部入力検出手段は、外部に存在する所定の対象物との距離を検出することを特徴とする請求項１記載のロボット装置。
【請求項３】
前記フレーム数決定手段は、前記外部入力検出手段による入力種別に応じて該当する変数を取得し、取得した変数により補間フレーム数を変化させることを特徴とする請求項１記載のロボット装置。
【請求項４】
前記補間フレーム数決定手段により決定された補間フレーム数と前記二つのキーフレーム間の関節値の差からフレーム毎の変化量を算出する変化量算出手段と、前記変化量算出手段によって算出されたフレーム毎の変化量から現在フレームの関節角度値を計算する関節角度計算手段と、前記関節角度計算手段によって計算された現在フレームの関節角度値にしたがってって該当するアクチュエータを動作させる動作制御手段とを備えることを特徴とする請求項１記載のロボット装置。
【請求項５】
指定された開始のキーフレームと終了のキーフレームの間を補間フレームによって補間して、所望のモーションを実行するためのロボット装置の動作制御方法であって、
外部からの入力を検出する外部入力検出工程と、
前記外部入力検出工程により検出された外部入力に応じて前記キーフレーム間の補間フレーム数を決定する補間フレーム数決定工程と、
前記補間フレーム数決定工程により決定された補間フレーム数と前記二つのキーフレーム間の関節値の差から、フレーム毎の変化量を算出する変化量算出工程と、
前記変化量算出工程によって算出されたフレーム毎の変化量から、現在フレームの関節角度値を計算する関節角度計算工程と、
前記関節角度計算工程によって計算された現在フレームの関節角度値にしたがってって該当するアクチュエータを動作させる動作制御工程と
を備えることを特徴とするロボット装置の動作制御方法。
【請求項６】
前記外部入力検出工程は、外部に存在する所定の対象物との距離を検出することを特徴とする請求項５記載のロボット装置の動作制御方法。
【請求項７】
前記フレーム数決定工程は、前記外部入力検出工程による入力種別に応じて該当する変数を取得し、取得した変数により補間フレーム数を変化させることを特徴とする請求項５記載のロボット装置の動作制御方法。
【請求項８】
指定された開始のキーフレームと終了のキーフレームの間を補間フレームによって補間して、所望のモーションをロボット装置に実行させるための動作制御プログラムを記録している記録媒体であって、
前記動作制御プログラムは、
外部からの入力を検出する外部入力検出工程と、
前記外部入力検出工程により検出された外部入力に応じて前記キーフレーム間の補間フレーム数を決定する補間フレーム数決定工程と、
前記補間フレーム数決定工程により決定された補間フレーム数と前記二つのキーフレーム間の関節値の差から、フレーム毎の変化量を算出する変化量算出工程と、
前記変化量算出工程によって算出されたフレーム毎の変化量から、現在フレームの関節角度値を計算する関節角度計算工程と、
前記関節角度計算工程によって計算された現在フレームの関節角度値にしたがってって該当するアクチュエータを動作させる動作制御工程と
を備えてなるプログラムであり、このプログラムを記録していることを特徴とする記録媒体。
【請求項９】
指定された開始のキーフレームと終了のキーフレームの間を補間フレームによって補間して、所望のモーションをロボット装置に実行させる動作制御のためのプログラムであって、
外部からの入力を検出する外部入力検出工程と、
前記外部入力検出工程により検出された外部入力に応じて前記キーフレーム間の補間フレーム数を決定する補間フレーム数決定工程と、
前記補間フレーム数決定工程により決定された補間フレーム数と前記二つのキーフレーム間の関節値の差から、フレーム毎の変化量を算出する変化量算出工程と、
前記変化量算出工程によって算出されたフレーム毎の変化量から、現在フレームの関節角度値を計算する関節角度計算工程と、
前記関節角度計算工程によって計算された現在フレームの関節角度値にしたがってって該当するアクチュエータを動作させる動作制御工程と
を備えてなることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はロボット装置に関し、特に指定された開始のキーフレームと終了のキーフレームの間を補間フレームによって補間して、所望のモーションを実行するロボット装置、ロボット装置の動作制御方法、記録媒体並びにプログラムに関する。
【０００２】
【従来の技術】
電気的若しくは磁気的な作用を用いて人間の動作に似せた運動を行う機械装置のことを「ロボット」という。ロボットの語源は、スラブ語の”ＲＯＢＯＴＡ（奴隷機械）”に由来すると言われている。わが国では、ロボットが普及し始めたのは１９６０年代末からであるが、その多くは、工場における生産作業の自動化・無人化などを目的としたマニピュレータや搬送ロボットなどの産業用ロボット（ｉｎｄｕｓｔｒｉａｌ　ｒｏｂｏｔ）であった。
【０００３】
最近では、イヌやネコ、クマのように４足歩行の動物の身体メカニズムやその動作を模したペット型ロボット、或いは、ヒトやサルなどの２足直立歩行を行う動物の身体メカニズムや動作を模した「人間形」若しくは「人間型」のロボット（ｈｕｍａｎｏｉｄ　ｒｏｂｏｔ）など、脚式移動ロボットの構造やその安定歩行制御に関する研究開発が進展し、実用化への期待も高まってきている。これら脚式移動ロボットは、クローラ式ロボットに比し不安定で姿勢制御や歩行制御が難しくなるが、階段の昇降や障害物の乗り越えなど、柔軟な歩行・走行動作を実現できるという点で優れている。
【０００４】
アーム式ロボットのように、ある特定の場所に植設して用いるような据置きタイプのロボットは、部品の組立・選別作業など固定的・局所的な作業空間でのみ活動する。これに対し、移動式のロボットは、作業空間は非限定的であり、所定の経路上又は無経路上を自在に移動して、所定の若しくは任意の人的作業を代行したり、ヒトやイヌ或いはその他の生命体に置き換わる種々のサービスを提供することができる。
【０００５】
脚式移動ロボットの用途の１つとして、産業活動・生産活動等における各種の難作業の代行が挙げられる。例えば、原子力発電プラントや火力発電プラント、石油化学プラントにおけるメンテナンス作業、製造工場における部品の搬送・組立作業、高層ビルにおける清掃、火災現場その他における救助といったような危険作業・難作業の代行などである。
【０００６】
また、脚式移動ロボットの他の用途として、上述の作業支援というよりも、生活密着型、すなわち人間との「共生」或いは「エンターティンメント」という用途が挙げられる。この種のロボットは、ヒト或いはイヌ（ペット）、クマなどの比較的知性の高い脚式移動動物の動作メカニズムや四肢を利用した豊かな感情表現を忠実に再現する。また、予め入力された動作パターンを単に忠実に実行するだけではなく、ユーザ（或いは他のロボット）から受ける言葉や態度（「ほめる」とか「叱る」、「叩く」など）に対して動的に対応した、生き生きとした応答表現を実現することも要求される。
【０００７】
従来の玩具機械は、ユーザ操作と応答特性との関係が固定的であり、玩具の動作をユーザの好みに合わせて変更することはできない。この結果、ユーザは同じ動作した繰り返さない玩具をやがては飽きてしまうことになる。
【０００８】
これに対し、最近のエンターティンメントロボット等は、ユーザが編集したアクション（ＡＣＴＩＯＮ）を再生し、ユーザの好みに応じて行動することができるようになった（例えば、特許文献１参照）。一連のアクションを、例えばＬＥＤの点灯、音声と共に構成する動き又は動作（モーション、ＭＯＴＩＯＮ）を、例えばパーソナルコンピュータなどで起動させたモーションエディタを用いて作成し完成させる。完成したモーションの他、編集された音声、編集されたＬＥＤ点灯動作を含めたアクションに関するデータは、メモリカードに記憶される。このメモリカードをエンターティンメントロボットに装着する。そして、エンターティンメントロボットは、メモリカードに記憶されたモーションデータ等を用いてユーザの好みの行動を行う。
【０００９】
【特許文献１】
特開平１１−５８２７４号公報
【００１０】
【発明が解決しようとする課題】
ところで、これまで前記モーションエディタをＣＰＵにて起動させて一つのモーションを作成する際には、最初のポーズに相当するキーフレームと、最後のポーズに相当するキーフレームとの間に、固定的に補間フレームの数を設定していたため、どのような場合でも同一速度のモーションとなってしまっていた。
【００１１】
例えば、座っていずれかの前脚を上げるというモーションを作成した場合、予めキーフレーム間の補間フレーム数は固定的に設定していたので、どんな環境下でも、例えばユーザが近づいても、遠ざかっても同じ速度で前記モーションを行っていた。
【００１２】
したがって、従来は、ユーザの好みの行動を実行させることができるが、ユーザが原因となる、又は他が原因となる外部入力をその行動に反映させるようなことはなく、インタラクション（ｉｎｔｅｒｌｏｃｕｔｉｏｎ）という面では物足りなかった。
【００１３】
本発明は、前記実情に鑑みてなされたものであり、外部入力をユーザの好みの行動に反映させて、インタラクション性を高めることのできるロボット装置の提供を目的とする。
【００１４】
また、外部入力をユーザの好みの行動に反映させて、ロボット装置のインタラクション性を高めることができるロボット装置の行動制御方法の提供を目的とする。
また、外部入力をユーザの好みの行動に反映させて、ロボット装置にインタラクション性を高めた行動を実行させることができるプログラムを記録した記録媒体の提供を目的とする。
【００１５】
また、外部入力をユーザの好みの行動に反映させて、ロボット装置にインタラクション性を高めた行動を実行させることができるプログラムの提供を目的とする。
【００１６】
【課題を解決するための手段】
本発明に係るロボット装置は、前記課題を解決するために、指定された開始のキーフレームと終了のキーフレームの間を補間フレームによって補間して、所望のモーションを実行するロボット装置であって、外部からの入力を検出する外部入力検出手段と、前記外部入力検出手段により検出された外部入力に応じて前記キーフレーム間の補間フレーム数を決定する補間フレーム数決定手段とを備え、前記補間フレーム数決定手段により決定された補間フレーム数に基づいて前記所望のモーションの対象となる関節の現在の関節角度値を計算しながら前記関節を動かすアクチュエータを動作させる。
【００１７】
このため、本発明に係るロボット装置は、外部入力検出手段により検出された外部入力に応じて補間フレーム数決定手段が決定した補間フレーム数に基づいて所望のモーションの対象となる関節のアクチュエータを動作させる。
【００１８】
また、本発明に係るロボット装置は、前記補間フレーム数決定手段により決定された補間フレーム数に基づいて前記所望のモーションの対象となる関節の現在の関節角度値を計算しながら前記関節を動かすアクチュエータを動作させるために、前記補間フレーム数決定手段により決定された補間フレーム数と前記二つのキーフレーム間の関節値の差からフレーム毎の変化量を算出する変化量算出手段と、前記変化量算出手段によって算出されたフレーム毎の変化量から現在フレームの関節角度値を計算する関節角度計算手段と、前記関節角度計算手段によって計算された現在フレームの関節角度値にしたがってって該当するアクチュエータを動作させる動作制御手段とを備える。
【００１９】
このため、本発明に係るロボット装置は、外部入力検出手段により検出された外部入力に応じて補間フレーム数決定手段が開始キーフレームと終了キーフレーム間の補間フレーム数を決定し、変化量算出手段が補間フレーム数と二つのキーフレーム間の関節値の差から、フレーム毎の変化量を算出し、関節角度計算手段がフレーム毎の変化量から、現在フレームの関節角度値を計算し、動作制御手段が現在フレームの関節角度値にしたがってってアクチュエータを動作させる。
【００２０】
本発明に係るロボット装置の動作制御方法は、前記課題を解決するために、指定された開始のキーフレームと終了のキーフレームの間を補間フレームによって補間して、所望のモーションを実行するためのロボット装置の動作制御方法であって、外部からの入力を検出する外部入力検出工程と、前記外部入力検出工程により検出された外部入力に応じて前記キーフレーム間の補間フレーム数を決定する補間フレーム数決定工程と、前記補間フレーム数決定工程により決定された補間フレーム数と前記二つのキーフレーム間の関節値の差から、フレーム毎の変化量を算出する変化量算出工程と、前記変化量算出工程によって算出されたフレーム毎の変化量から、現在フレームの関節角度値を計算する関節角度計算工程と、前記関節角度計算工程によって計算された現在フレームの関節角度値にしたがってって該当するアクチュエータを動作させる動作制御工程とを備える。
【００２１】
このため、本発明に係るロボット装置の動作制御方法は、外部入力検出工程により検出された外部入力に応じて補間フレーム数決定工程が開始キーフレームと終了キーフレーム間の補間フレーム数を決定し、変化量算出工程が補間フレーム数と二つのキーフレーム間の関節値の差から、フレーム毎の変化量を算出し、関節角度計算工程がフレーム毎の変化量から、現在フレームの関節角度値を計算し、動作制御工程が現在フレームの関節角度値にしたがってってアクチュエータを動作させる。
【００２２】
また、本発明に係る記録媒体は、前記課題を解決するために、指定された開始のキーフレームと終了のキーフレームの間を補間フレームによって補間して、所望のモーションをロボット装置に実行させるための動作制御プログラムを記録している記録媒体であって、前記動作制御プログラムは、外部からの入力を検出する外部入力検出工程と、前記外部入力検出工程により検出された外部入力に応じて前記キーフレーム間の補間フレーム数を決定する補間フレーム数決定工程と、前記補間フレーム数決定工程により決定された補間フレーム数と前記二つのキーフレーム間の関節値の差から、フレーム毎の変化量を算出する変化量算出工程と、前記変化量算出工程によって算出されたフレーム毎の変化量から、現在フレームの関節角度値を計算する関節角度計算工程と、前記関節角度計算工程によって計算された現在フレームの関節角度値にしたがってって該当するアクチュエータを動作させる動作制御工程とを備えてなるプログラムであり、このプログラムを記録している。
【００２３】
本発明に係るプログラムは、前記課題を解決するために、指定された開始のキーフレームと終了のキーフレームの間を補間フレームによって補間して、所望のモーションをロボット装置に実行させる動作制御のためのプログラムであって、外部からの入力を検出する外部入力検出工程と、前記外部入力検出工程により検出された外部入力に応じて前記キーフレーム間の補間フレーム数を決定する補間フレーム数決定工程と、前記補間フレーム数決定工程により決定された補間フレーム数と前記二つのキーフレーム間の関節値の差から、フレーム毎の変化量を算出する変化量算出工程と、前記変化量算出工程によって算出されたフレーム毎の変化量から、現在フレームの関節角度値を計算する関節角度計算工程と、前記関節角度計算工程によって計算された現在フレームの関節角度値にしたがってって該当するアクチュエータを動作させる動作制御工程とを備えてなる。
【００２４】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照しながら説明する。この実施の形態は、バッテリから電力の供給を受けたサーボモータにより駆動される４本の脚、首等を動かして行動するエンターティンメントロボット装置である。
【００２５】
図１には、エンターティンメントロボット装置（以下、ロボットと記す）１の外観構成を示す。図１に示すように、ロボット１は、四つ足の例えば子ライオン形状のものとされており、胴体部ユニット２の前後左右に、それぞれ脚部ユニット３Ａ，３Ｂ，３Ｃ，３Ｄが連結されるとともに、胴体部ユニット２の前端部と後端部に、それぞれ頭部ユニット４と尻尾部ユニット５が連結されている。
【００２６】
尻尾部ユニット５は、胴体部ユニット２の上面に設けられたベース部から、２自由度をもって、湾曲又は揺動自在に引き出されている。
【００２７】
このような外観構成を有するロボット１においては、例えば、脚部ユニット３Ａ乃至３Ｄの関節の位置にそれぞれ設けられているサーボモータが駆動されて、各関節を所定角度だけ動かし、前脚を上下したり、後脚を上下しながら前進などの動作を行う。また、頭部ユニット４や、尻尾部ユニット５の各関節に設けられているサーボモータを所定角度だけ動かして、頭部をかしげたり、尻尾を振る動作を行う。
【００２８】
このロボット１は、内部状況や外部状況を判断し、自律的に行動を制御することができる。このとき、このロボット１は、予め設定されているアクションを行う他、ユーザの編集により後から追加されたアクションも行うこともできる。ユーザにより編集されたアクションを実行するとき、ロボット１は本発明に基づいて特徴的な動作を行う。
【００２９】
ユーザによるアクションの編集、特にモーションの編集は、ユーザによって指定された、開始のキーフレームと終了のキーフレームの間を補間フレームによって補間することによって行われる。ロボット１は、補間フレーム数ｎを、外部からの入力に基づいて可変に決定する。そして、決定された補間フレーム数ｎと、前記二つのキーフレームに基づいて前記サーボモータの駆動による各関節値の、各フレーム毎の変化量を算出し、現在のフレームの関節角度値を計算しながら、その関節角度値にしたがってって前記サーボモータを含めたアクチュエータを動作させる。このとき、開始キーフレームから終了キーフレームまでの前記補間フレームを含めた各フレームは、例えば１６ｍｓｅｃで再生される。もちろん、各フレームに相当するモーションも例えば１６ｍｓｅｃにて行われる。
【００３０】
ロボット１は、図２に機能的に示すように、外部からの入力を外部入力検出部３１にて検出し、その外部入力に応じて前記開始キーフレームと終了キーフレーム間の補間フレーム数ｎを補間フレーム数決定部１０１にて決定する。この補間フレーム数決定部１０１は、メモリ１０２にテーブルとして格納している入力検出値−補関フレーム数特性に基づいて例えば入力検出したユーザとの距離から補関フレーム数ｎを決定し、変化量算出部１０３に供給する。変化量算出部１０３は、前記補間フレーム数ｎと前記二つのキーフレーム間の関節角度値の差から、各フレーム毎の変化量を算出し、関節角度計算部１０４に供給する。関節角度計算部１０４は、前記フレーム毎の変化量から、現在のフレームの関節角度値を計算し、動作制御部６４に供給する。動作制御部６４は、前記現在フレームの関節角度値にしたがってって該当するアクチュエータＡｉを動作させる。
【００３１】
ここでは、外部入力検出部３１が、例えば距離センサ（Ｐｏｓｉｔｉｏｎ　Ｓｅｎｓｉｎｇ　Ｄｅｖｉｃｅ：ＰＳＤ）である位置検出センサから供給される信号に基づいて対象物までの距離を検出する位置検出部である場合の動作について概略的に説明する。例えば、メモリ１０２に格納されている距離−補間フレーム数特性が後述の図９に示すように、距離が長くなるほど補間フレーム数ｎがリニアに増えるものであるとき、つまり距離が短く（Ｌ１）なるほど補間フレーム数がリニアに少なくなるときを挙げる。例えばユーザがロボット１に手を近づけるほど、補間フレーム数決定部１０１は補間フレーム数ｎを少ない値（ｎ１）に決定する。また、距離が長く（Ｌ２）なるほど（Ｌ１＜Ｌ２）、補間フレーム数ｎを大きな値（ｎ２）とする（ｎ１＜ｎ２）。
【００３２】
今、距離が短いとき（Ｌ１）、補間フレーム数決定部１０１は、メモリ１０２のテーブルを参照して補間フレーム数ｎをｎ１と決定する。すると、変化量算出部１０３は、予め指定された開始キーフレームＦｓと、終了キーフレームＦｅ間の該当のアクチュエータの関節値の差θと、補間フレーム数ｎ１から、各フレーム毎の変化量Δθ１＝θ／ｎ１＋１を算出し、関節角度計算部１０４に供給する。関節角度計算部１０４は、フレーム毎の変化量Δθ１から、現在のフレームの関節角度値θｐ１を計算し、動作制御部６４に供給する。動作制御部６４は、現在フレームの関節角度値θｐ１にしたがってって該当するアクチュエータＡｉを動作させる。
【００３３】
一方、距離が長いとき（Ｌ２）、補間フレーム数決定部１０１は、メモリ１０２のテーブルを参照して補間フレーム数ｎをｎ２と決定する。すると、変化量算出部１０３は、予め指定された開始キーフレームＦｓと、終了キーフレームＦｅ間の該当のアクチュエータの関節値の差θと、補間フレーム数ｎ２から、各フレーム毎の変化量Δθ２＝θ／ｎ２＋１を算出し、関節角度計算部１０４に供給する。関節角度計算部１０４は、フレーム毎の変化量Δθ２から、現在のフレームの関節角度値θｐ２を計算し、動作制御部６４に供給する。動作制御部６４は、現在フレームの関節角度値θｐ２にしたがってって該当するアクチュエータＡｉを動作させる。
【００３４】
ここで、ｎ２＞ｎ１であるのでθ／ｎ２＜θ／ｎ１となり、さらに１フレームは１６ｍｓｅｃで再生されるので、距離が短いＬ１のときの方が、長いＬ２のときよりも、開始キーフレームＦｓから終了フレームＦｅまでの再生時間が短くなる。
【００３５】
次に、ロボット１の内部構成について図３のブロック図を用いて説明する。胴体部ユニット２には、ロボット１の全体を制御するコントローラ１０、ロボット１の動力源となるバッテリ１１、並びにバッテリセンサ１２、及び熱センサ１３からなる内部センサ１４などが格納されている。このコントローラ１０には、基本的に、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）１０Ａ、及びＣＰＵ１０Ａが各部を制御するための基本的な制御プログラムが記憶されているメモリ１０Ｂが設けられている。また、メモリ１０Ｂには、本発明のロボット装置の動作制御方法の具体例となる編集動作制御プログラムが格納されている。この編集動作制御プログラムについては詳細を後述するが、前記図２に示した機能ブロックを結果的に構成できるプログラムであり、前記開始キーフレームと終了キーフレームとの間の補間フレーム数ｎを決定し、決定された補間フレーム数ｎと、前記二つのキーフレームに基づいて前記サーボモータの駆動による各関節値の、各フレーム毎の変化量を算出し、現在のフレームの関節角度値を計算しながら、その関節角度値にしたがってって前記サーボモータを含めたアクチュエータを動作させるプログラムである。
【００３６】
また、コントローラ１０には、メモリカード１０ＤのためのＩ／Ｆ１０Ｃも設けられている。なお、メモリカード１０Ｄには、前記開始キーフレームと終了キーフレームと、それらキーフレームのときの各アクチュエータの関節角度値等のモーションデータが記憶されている。
【００３７】
図３に示すように、頭部ユニット４には、外部からの刺激を感知するセンサとしての、音を感知する「耳」に相当するマイクロフォン１５、ＣＣＤ（Ｃｈａｒｇｅ　Ｃｏｕｐｌｅｄ　Ｄｅｖｉｃｅ）やＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ　Ｍｅｔａｌ　Ｏｘｉｄｅ　Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）イメージセンサなどから構成され、光を感知する「目」に相当するカメラ１６、及びユーザが触れることによる圧力等を感知する触覚に相当するタッチセンサ１７が、それぞれ所定の位置に設けられている。また、頭部ユニット４には、対象物までの距離を測定するためのＰＳＤである位置検出センサ１８、及びロボット１の「口」に相当するスピーカ１９が所定の位置に設置されている。
【００３８】
脚部ユニット３Ａ乃至３Ｄのそれぞれの関節部分、脚部ユニット３Ａ乃至３Ｄのそれぞれと胴体部ユニット２の連結部分、頭部ユニット４と胴体部ユニット２の連結部分、並びに尻尾部ユニット５と胴体部ユニット２の連結部分などには、アクチュエータが設置されている。アクチュエータは、コントローラ１０からの指示に基づいて各部を動作させる。
【００３９】
図３の例においては、脚部ユニット３Ａには、アクチュエータ３ＡＡ１乃至３ＡＡｋが設けられ、脚部ユニット３Ｂには、アクチュエータ３ＢＡ１乃至３ＢＡｋが設けられている。また、脚部ユニット３Ｃには、アクチュエータ３ＣＡ１乃至３ＣＡｋが設けられ、脚部ユニット３Ｄには、アクチュエータ３ＤＡ１乃至３ＤＡｋが設けられている。さらに、頭部ユニット４には、アクチュエータ４Ａ１乃至４ＡＬが設けられており、尻尾部ユニット５には、アクチュエータ５Ａがそれぞれ設けられている。
【００４０】
以下、脚部ユニット３Ａ乃至３Ｄに設けられているアクチュエータ３ＡＡ１乃至３ＤＡｋ、頭部ユニット４に設けられているアクチュエータ４Ａ１乃至４ＡＬ、及び尻尾部ユニット５に設けられているアクチュエータ５Ａのそれぞれを個々に区別する必要がない場合、適宜、まとめて、アクチュエータ３ＡＡ１乃至５Ａと称する。
【００４１】
さらに、脚部ユニット３Ａ乃至３Ｄには、アクチュエータの他にスイッチ３ＡＢ乃至３ＤＢが、ロボット１の足の裏に相当する場所に設置されている。そして、ロボット１が歩行したとき、スイッチ３ＡＢ乃至３ＤＢが押下され、それを表わす信号がコントローラ１０に入力されるようになされている。
【００４２】
頭部ユニット４に設置されるマイクロフォン１５は、ユーザからの発話を含む周囲の音声（音）を集音し、得られた音声信号をコントローラ１０に出力する。カメラ１６は、周囲の状況を撮像し、得られた画像信号を、コントローラ１０に出力する。タッチセンサ１７は、例えば、頭部ユニット４の上部に設けられており、ユーザからの「撫でる」や「叩く」といった物理的な働きかけにより受けた圧力を検出し、その検出結果を圧力検出信号としてコントローラ１０に出力する。位置検出センサ１８は、例えば、赤外線を出射し、その反射光を受光したタイミングについての検出結果をコントローラ１０に出力する。
【００４３】
コントローラ１０は、マイクロフォン１５、カメラ１６、タッチセンサ１７、及び位置検出センサ１８から与えられる音声信号、画像信号、圧力検出信号、距離信号等に基づいて、周囲の状況や、ユーザからの指令、ユーザとの距離、ユーザからの働きかけなどの有無を判断し、その判断結果に基づいて、ロボット１が次にとる行動を決定する。そして、コントローラ１０は、その決定に基づいて、必要なアクチュエータを駆動させ、これにより、頭部ユニット４を上下左右に振らせたり、尻尾部ユニット５を動かせたり、脚部ユニット３Ａ乃至３Ｄのそれぞれを駆動して、ロボット１を歩行させたり、座ったり、座った状態でいずれかの脚を挙げたり、或いは前脚を振るいわゆるバイバイなどの行動をとらせる。
【００４４】
また、コントローラ１０は、位置検出センサ１８から与えられる信号に基づいて例えばユーザまでの距離や、ユーザの手までの距離を検出し、その検出結果に基づいて前記補間フレーム数ｎを決定し、決定した補間フレーム数ｎと、前記二つのキーフレームに基づいて前記サーボモータの駆動による各関節値の、各フレーム毎の変化量を算出し、現在のフレームの関節角度値を計算しながら、その関節角度値にしたがってって前記サーボモータを含めたアクチュエータを動作させる。
【００４５】
その他にも、コントローラ１０は、ロボット１の「目」の位置に設けられた、図示しないＬＥＤを点灯、消灯又は点滅させるなどの処理を行う。
【００４６】
図４は、図３のコントローラ１０の基本的な機能的構成例を示すブロック図である。なお、図４に示す各機能は、メモリ１０Ｂに記憶されている基本的な制御プログラムがＣＰＵ１０Ａにより実行されることで実現される。この基本的な制御プログラムに関連して起動されることになる、本発明の具体例である編集動作制御プログラムもＣＰＵ１０Ａにより実行されて行動管理部６２の一部として前記図２に示した機能部ブロックが構成される。
【００４７】
コントローラ１０は、基本的に、外部からの入力等を検出するセンサ入力処理部３１と、センサ入力処理部３１により検出された情報等に基づいて、ロボット１を動作させる情報処理部３２から構成されている。
【００４８】
そして、センサ入力処理部３１を構成する角度検出部４１は、アクチュエータ３ＡＡ１乃至５Ａのそれぞれに設けられるモータが駆動されたとき、通知される情報に基づいて、その角度を検出する。角度検出部４１により検出された角度情報は、情報処理部３２の行動管理部６２、及び音データ生成部６６に出力される。
【００４９】
音量検出部４２は、マイクロフォン１５から与えられる信号に基づいて、その音量を検出し、検出した音量情報を行動管理部６２、及び音データ生成部６６に出力する。
【００５０】
音声認識部４３は、マイクロフォン１５から与えられる音声信号について音声認識を行う。そして、音声認識部４３は、その音声認識結果としての、例えば、「歩け」、「伏せ」、「ボールを追いかけろ」等の指令その他を、音声認識情報として、本能・感情管理部６１、行動管理部６２、及び音データ生成部６６に通知する。
【００５１】
画像認識部４４は、カメラ１６から与えられる画像信号を用いて、画像認識を行う。そして、画像認識部４４は、その処理の結果、例えば、「赤い丸いもの」や、「地面に対して垂直な、かつ、所定の高さ以上の平面」、さらには「肌色であるもの」等を検出したときには、「ボールがある」や、「壁がある」、「人間（ユーザ）がいる」等の画像認識結果を画像認識情報として、本能・感情管理部６１、行動管理部６２、及び音データ生成部６６に通知する。
【００５２】
圧力検出部４５は、タッチセンサ１７から与えられる圧力検出信号を処理する。そして、圧力検出部４５は、その処理の結果、所定の閾値以上で、かつ、短時間の圧力を検出したときには、「叩かれた（しかられた）」と認識し、所定の閾値未満で、かつ、長時間の圧力を検出したときには、「撫でられた（ほめられた）」と認識して、その認識結果を、状態認識情報として、本能・感情管理部６１、行動管理部６２、及び音データ生成部６６に通知する。
【００５３】
位置検出部４６は、位置検出センサ１８から供給される信号に基づいて、所定の対象物までの距離を測定し、その距離情報を行動管理部６２、及び音データ生成部６６に通知する。例えば、位置検出部４６は、目の前に手が差し出されたとき、その手までの距離や、画像認識部４４により認識されたユーザやボールまでの距離等を検出する。
【００５４】
スイッチ入力検出部４７は、ロボット１の足の裏に相当する部分に設けられているスイッチ３ＡＢ乃至３ＤＢからの入力を検出し、例えば、ロボット１が歩行している状態において、その歩を進めるタイミングや、ユーザにより足の裏が触られたことを本能・感情管理部６１、及び行動管理部６２に通知する。
【００５５】
一方、情報処理部３２を構成する本能・感情管理部６１は、ロボット１の本能、及び感情を管理し、所定のタイミングで、ロボット１の本能を表わすパラメータや、感情を表わすパラメータを行動管理部６２、及び音データ生成部６６に出力する。
【００５６】
図５は、図４の本能・感情管理部６１の機能の例を模式的に示す図であり、図５に示すように、本能・感情管理部６１は、ロボット１の感情を表現する感情モデル８１と、本能を表現する本能モデル８２を記憶し、管理している。
【００５７】
感情モデル８１は、例えば、「うれしさ」、「悲しさ」、「怒り」、「驚き」、「恐れ」、「嫌悪」等の感情の状態（度合い）を、所定の範囲（例えば、０乃至１００等）の感情パラメータによってそれぞれ表し、音声認識部４３、画像認識部４４、及び圧力検出部４５からの出力や時間経過等に基づいて、その値を変化させる。
【００５８】
この例においては、感情モデル８１は、「うれしさ」を表わす感情ユニット８１Ａ、「悲しさ」を表わす感情ユニット８１Ｂ、「怒り」を表わす感情ユニット８１Ｃ、「驚き」を表わす感情ユニット８１Ｄ、「恐れ」を表わす感情ユニット８１Ｅ、及び、「嫌悪」を表わす感情ユニット８１Ｆから構成されている。
【００５９】
本能モデル８２は、例えば、「食欲」、「睡眠欲」、「運動欲」等の本能による欲求の状態（度合い）を、所定の範囲の本能パラメータによってそれぞれ表し、音声認識部４３、画像認識部４４、及び圧力検出部４５等からの出力や時間経過等に基づいて、その値を変化させる。また、本能モデル８２は、行動履歴に基づいて「運動欲」を表わすパラメータを高めたり、或いは、バッテリ残量に基づいて「食欲」を表わすパラメータを高めたりする。
【００６０】
この例においては、本能モデル８２は、「運動欲」を表わす本能ユニット８２Ａ、「愛情欲」を表わす本能ユニット８２Ｂ、「食欲」を表わす本能ユニット８２Ｃ、「好奇心」を表わす本能ユニット８２Ｄ、及び「睡眠欲」を表わす本能ユニット８２Ｅから構成されている。
【００６１】
本能・感情管理部６１は、このような感情ユニット８１Ａ乃至８１Ｆと本能ユニット８２Ａ乃至８２Ｅのパラメータを変化させることにより、ロボット１の感情と本能の状態を表現し、その変化をモデル化している。
【００６２】
また、感情ユニット８１Ａ乃至８１Ｆと本能ユニット８２Ａ乃至８２Ｅのパラメータは、外部からの入力だけでなく、図の矢印で示すように、それぞれのユニット同士が相互に影響しあうことによっても変化される。
【００６３】
例えば、「うれしさ」を表現する感情ユニット８１Ａと「悲しさ」を表現する感情ユニット８１Ｂが相互抑制的に結合することにより、本能・感情管理部６１は、ユーザにほめてもらったときには「うれしさ」を表現する感情ユニット８１Ａのパラメータを大きくするとともに、「悲しさ」を表現する感情ユニット８１Ｂのパラメータを小さくするなどして、表現する感情を変化させる。
【００６４】
また、感情モデル８１を構成する各ユニット同士、及び本能モデル８２を構成する各ユニット同士だけでなく、双方のモデルを超えて、それぞれのユニットのパラメータが変化される。
【００６５】
例えば、図に示すように、本能モデル８２の「愛情欲」を表わす本能ユニット８２Ｂや、「食欲」を表わす本能ユニット８２Ｃのパラメータの変化に応じて、感情モデル８１の「悲しさ」を表現する感情ユニット８１Ｂや「怒り」を表現する感情ユニット８１Ｃのパラメータが変化される。
【００６６】
具体的には、「食欲」を表わす本能ユニット８２Ｃのパラメータが大きくなったとき、感情モデル８１の「悲しさ」を表現する感情ユニット８１Ｂや、「怒り」を表現する感情ユニット８１Ｃのパラメータが大きくなる。
【００６７】
このようにして本能・感情管理部６１により管理される感情のパラメータ、又は本能のパラメータは、後述するように、例えば、所定の周期で計測され、行動管理部６２、及び音データ生成部６６に出力される。
【００６８】
なお、より詳細には、感情モデル８１や本能モデル８２だけでなく、成長モデルが本能・感情管理部６１に用意され、その成長段階によって、感情モデル８１や本能モデル８２の各ユニットのパラメータが変化される。この成長モデルは、例えば、「幼年期」、「青年期」、「熟年期」、「老年期」等の成長の状態（度合い）を、所定の範囲の値によってそれぞれ表し、音声認識部４３、画像認識部４４、及び圧力検出部４５等からの出力や時間経過等に基づいて、その値を変化させる。
【００６９】
なお、本能・感情管理部６１には、音声認識部４３、画像認識部４４、及び圧力検出部４５等から認識情報が供給される他に、行動管理部６２から、ロボット１の現在、又は過去の行動、具体的には、例えば、「長時間歩いた」などの行動の内容を示す行動情報が供給されるようになされている。そして、本能・感情管理部６１は、同一の認識情報等が与えられた場合であっても、行動情報により示されるロボット１の行動に応じて、異なる内部情報を生成する。
【００７０】
例えば、ロボット１がユーザに挨拶をし、ユーザに頭を撫でられた場合には、ユーザに挨拶をしたという行動情報と、頭を撫でられたという認識情報が本能・感情管理部６１に供給される。このとき、本能・感情管理部６１においては、「うれしさ」を表す感情ユニット８１Ａの値が増加される。
【００７１】
図４の説明に戻り、行動管理部６２は、音声認識部４３、及び画像認識部４４等から供給されてきた情報と、本能・感情管理部６１から供給されてきたパラメータ、及び時間経過等に基づいて次の行動を決定し、決定した行動の実行を指示するコマンドを姿勢遷移管理部６３に出力する。また、行動管理部６２は、ロボット１に発話をさせるとき、或いは所定の動作に対応する音をスピーカ１９から出力させるとき、音の出力を指示するコマンドを音声合成部６５に出力する。
【００７２】
また、行動管理部６２は、位置検出部４６から供給された、ユーザまでの距離や、ユーザの手までの距離を、前記図２に示した、補間フレーム数決定部１０１にて受け取り、補間フレーム数ｎを決定する。この補間フレーム数ｎを基に変化量算出部１０３にて変化量を算出し、関節角度計算部１０４にてさらに該当アクチュエータの関節角度を計算する。
【００７３】
図６は、図４の行動管理部６２の機能構成例を示す模式図である。行動管理部６２は、行動モデルライブラリ９１と行動選択部９２から構成されており、行動モデルライブラリ９１は、予め設定された条件（トリガ）に対応させて、図に示すように、各種の行動モデルを有している。
【００７４】
図の例においては、行動モデルライブラリ９１には、ボールを検出した場合にとる行動を示すボール対応行動モデル９１Ａ、ボールを見失った場合などにとる行動を示す自律検索行動モデル９１Ｂ、上述した感情モデル８１の変化を検出した場合にとる行動を示す感情表現行動モデル９１Ｃが用意されている。また、障害物を検出した場合にとる行動を示す障害物回避行動モデル９１Ｄ、転倒したことを検出した場合にとる行動を示す転倒復帰行動モデル９１Ｅ、及びバッテリ残量が少なくなった場合にとる行動を示すバッテリ管理行動モデル９１Ｆが用意されている。
【００７５】
さらに、ユーザの編集により後から追加されたモーションに対応するエディットモーション対応行動モデル９１Ｇも用意されている。このエディットモーション対応行動モデル９１Ｇに対応する機能が前記図２に示した各機能ブロック図である。つまり、本発明のロボット装置の動作制御方法の具体例となる編集動作制御プログラムは、行動管理部６２内のエディットモーション対応行動モデルに関する。なお、前記編集動作制御プログラムは、自律検索行動モデル９１Ｂと関連してもよいし、その一部とされてもよい。
【００７６】
そして、行動選択部９２は、音声認識部４３、画像認識部４４、圧力検出部４５、及び位置検出部４６等から供給される情報と、本能・感情管理部６１から供給される本能、感情を表わすパラメータ、及び時間経過等を参照し、ロボット１が次にとる行動を行動モデルライブラリ９１に用意されている行動モデルから選択する。
【００７７】
なお、行動選択部９２は、現在のロボット１の状態を表わすノードから、どの状態を表わすノードに遷移するのかを、それぞれのノード間を結ぶアークに設定されている遷移確率に基づいて決定する、有限確率オートマトンを用いて選択する。この有限確率オートマトンを用いての選択については、後述する。
【００７８】
以下には、開始キーフレームと終了キーフレームの間の補間フレーム数を、外部入力によって可変して決定し、それらの各フレームに応じて該当のアクチュエータを動かして、ユーザの所望の動作をインタラクション性を高めて実行するロボット１の動作の詳細について説明する。
【００７９】
先ず、図７には、外部入力の処理の手順を示す。これまでは、外部入力検出の具体例として対象物までの距離を測定するためのＰＳＤである位置検出センサ１８からの信号から位置を検出する位置検出部４６を挙げ、ユーザやユーザの手までの距離を外部入力としてきた。
【００８０】
この他にも外部入力としては、マイクロフォン１５が拾った例えばユーザによる手拍子による音を、音量検出部４２で検出し、その音の強弱パターンの時間間隔をリズムとして検出してもよい。このリズムの速さに基づいて補間フレーム数ｎを決定して、この決定された補間フレーム数ｎと、前記二つのキーフレームに基づいて前記サーボモータの駆動による各関節値の、各フレーム毎の変化量を算出し、現在のフレームの関節角度値を計算しながら、その関節角度値にしたがってって前記サーボモータを含めたアクチュエータを動作させてもよい。
【００８１】
例えば、リズムが遅いほど補間フレーム数ｎをリニア又はノンリニアに増やし、リズムが速いほど補間フレーム数ｎをリニア又はノンリニアに少なくすれば、リズムの速度にしたがってってロボット１の編集動作を可変させるという、インタラクション性を高めた動作を行わせることができる。
【００８２】
また、カメラ１６で検出し、画像認識部４４が認識した、灯りの点滅の間隔を外部入力として捉え、その点滅の時間間隔に応じて補間フレーム数ｎを決定することもできる。さらには、尻尾部ユニット５をアナログスティックとして用い、ユーザが左右又は上下に速度を変えて動かしてスイッチ５Ｂを可変に作動させて、スイッチ入力検出部４７を介してスイッチの切り換え速度を検出し、その切り換え速度に応じて補間フレーム数ｎを決定してもよい。
【００８３】
例えば、切り換え速度が遅いほど補間フレーム数ｎをリニア又はノンリニアに増やし、切り換え速度が速いほど補間フレーム数ｎをリニア又はノンリニアに少なくすれば、切り換え速度に応じてロボット１に編集動作を可変に実行させるという、インタラクション性を高めた動作を行わせることができる。
【００８４】
これらの各外部入力の種別は、新たにロボット１に設けた切り換えスイッチによって選択的に切り換えられてもよいし、或いはマイクロフォン１５，音声認識部４３を通して音声認識されて選択的に切り換えられてもよい。選択的に切り換えられた外部入力の種別は、コントローラ１０によって判別される。
【００８５】
なお、外部入力の種別に応じ、変数は、予め、図７に示すような処理手順により作成され、メモリ１０２に格納されている。先ず、外部入力の種別は、ステップＳ１にて、コントローラ１０によれ判別され、距離、リズム、切り換え速度が可変速度パラメータに変換され、入力種別毎に変数としてメモリ１０２に保存されている。
【００８６】
そして、コントローラ１０は、メモリ１０Ｂに格納された編集動作制御プログラムを逐次、ワークエリアとなるＲＡＭに取り出して実行しながら、メモリカード１０Ｄに格納されている前記モーションデータを、前記メモリ１０２に保存されている変数などを用いて演算していく。
【００８７】
先ず、図８に示すように、ステップＳ１１にてコマンドを受理するとコントローラ１０はコマンドを解読して、行動管理部６２の行動モデルライブラリにおいて行動選択部９２に行動を選択させようとする。
【００８８】
ステップＳ１２にて、現在フレームが開始又は終了のキーフレームであるか否かをチェックする。ここでキーフレームであることを判別すれば（ＹＥＳ）、ステップＳ１３に進む。
【００８９】
ステップＳ１３では、前記コマンドを解釈した結果、そのコマンドの指示する行動が外部可変再生を許可するものであるか否かを判別する。例えば、歩行動作等の、重心、４脚のバランス等を複雑に制御する必要のある動作では、可変再生が不適である。ここで、外部可変再生が可能（ＹＥＳ）であれば、行動管理部６２においてエディットモーション対応行動モデル９１Ｇが行動選択部９２にて選択される。そして、ステップＳ１４に進む。
【００９０】
ステップＳ１４ではユーザによって選択された外部入力の種別を判断する。その後、ステップＳ１５において、該当する変数を前記図７の処理にてストアされた変数から取得し、この取得した変数により、検出入力に応じて補間フレーム数ｎを変化させる。
【００９１】
次に、ステップＳ１６では、補間フレーム数ｎと、既にユーザによって設定されている開始キーフレーム及び終了キーフレームの関節値の差から、フレーム毎の変化量を算出する。
【００９２】
ステップＳ１７では算出された変化量から、現在フレームの関節角度値を計算し、該当のアクチュエータに設定し、ロボットを動作させる。そして、ステップＳ１８にて現在フレームを一つ進め、ステップＳ１９にて次のフレームがなく、最終フレームであると判定するまでステップＳ１２からの処理を繰り替える。
【００９３】
なお、ステップＳ１２にて現在フレームが前記二つのキーフレームでないと判定（ＮＯ）したときにはステップＳ１７に進み、前回のステップＳ１６にて算出された変化量を使用して、現在フレームの関節角度値を計算し、ロボットに設定して動作せせる。
【００９４】
また、ステップＳ１３にて外部可変再生が許可されていないコマンドであると判断したときには、ステップＳ１４と、ステップＳ１５を飛ばして、ステップＳ１６では予め設定されている固有のフレーム毎の変化量を算出する。
【００９５】
図９には、例えば距離−補間フレーム数特性を示す。変数は、本特性の関数値の基になっている。ここでは、距離が長くなるほど補間フレーム数ｎがリニアに増え、距離が短くなるほど補間フレーム数がリニアに少なくなる変数とされている。例えばユーザがロボット１に手を近づけるほど、補間フレーム数決定部１０１は補間フレーム数ｎを少ない値（ｎ１）に決定する。また、距離が長く（Ｌ２）なるほど（Ｌ１＜Ｌ２）、補間フレーム数ｎを大きな値（ｎ２）とする（ｎ１＜ｎ２）。
【００９６】
以下には図１０〜図１２を参照し、補間フレーム数ｎを１、２、５としたときの、開始キーフレームＦｓから終了キーフレームＦｅまでの再生時間（実行時間）の変化について説明する。なお、実施には、前記二つのキーフレーム間の補間フレーム数ｎは、数十フレームから数百フレームである。ここでは、説明の簡略化を図ったものである。
【００９７】
今、ロボット１が座った状態で、右前脚を挙げるモーションを編集する。右前脚３Ａの胴体部ユニット２側の関節Ｊ１は、開始キーフレームが０°であり、終了キーフレームが９０°であるとする。また、右前脚３Ａの肘関節Ｊ２は、開始キーフレームが０°であり、終了キーフレームが３０°であるとする。
【００９８】
例えば、位置検出部４６がユーザの手が２０ｃｍの距離にあることを検出したとき、コントローラ１０は図８に示す処理手順のステップＳ１５により補間フレーム数ｎを１に決定したとする。この補間フレームを図１０に示すようにＦｉ１とする。開始キーフレームから終了キーフレームまでの前記補間フレームを含めた各フレームは、例えば１６ｍｓｅｃで実行される。
【００９９】
すると、図８のステップＳ１６では、補間フレーム数ｎが１であり、二つのキーフレームの関節値の差がＪ１で９０°（＝θＪ１）、Ｊ２で３０°（＝θＪ２）であるので、各フレーム毎のＪ１とＪ２の変化量ΔθＪ１とΔθＪ２を、
ΔθＪ１＝θＪ１／２＝４５°
ΔθＪ２＝θＪ２／２＝１５°とする。
【０１００】
そして、ステップＳ１７にて現在フレームの関節角度値を計算する。開始キーフレームのＪ１、Ｊ２は共に０°であったので、補間フレームＦｉ１のときのＪ１、Ｊ２は、０＋ΔθＪ１＝４５°、０＋ΔθＪ２＝１５°となる。この各節角度値をアクチュエータに設定してロボット１を動作させる。
【０１０１】
次に、ステップＳ１８にて現在フレームが一つ進められ、ステップＳ１９にて次のフレームがあると判断するので、ステップＳ１２からの処理を繰り返す。そして、次のフレームは終了キーフレームＦｅであるので、ステップＳ１７に進んで算出された変化量ΔθＪ１とΔθＪ２を使用し、現在フレームの関節角度値をＪ１＝４５°＋ΔθＪ１＝９０°、Ｊ２＝１５°＋ΔθＪ２＝３０のように計算し、該当するアクチュエータに設定してロボット１を動作させる。
【０１０２】
このとき、前述したように、各フレームは、例えば１６ｍｓｅｃで実行されるので、開始キーフレームＦｓから終了キーフレームＦｅまでは、補関フレーム数ｎのとき、
１６ｍｓｅｃ×（ｎ＋１）
で表せるので、
補間フレーム数ｎ＝１であれば、１６×２＝３２ｍｓｅｃの時間がかかることになる。
【０１０３】
また、位置検出部４６がユーザの手が３０ｃｍの距離にあることを検出したとき、コントローラ１０は図８に示す処理手順のステップＳ１５により補間フレーム数ｎを２に決定したとする。
【０１０４】
この補間フレームを図１１に示すようにＦｉ１、Ｆｉ２とする。ここでも、開始キーフレームから終了キーフレームまでの前記補間フレームを含めた各フレームは、例えば１６ｍｓｅｃで実行される。
【０１０５】
すると、図８のステップＳ１６では、補間フレーム数ｎが２であり、二つのキーフレームの関節値の差がＪ１で９０°（＝θＪ１）、Ｊ２で３０°（＝θＪ２）であるので、各フレーム毎のＪ１とＪ２の変化量ΔθＪ１とΔθＪ２を、
ΔθＪ１＝θＪ１／３＝３０°
ΔθＪ２＝θＪ２／３＝１０°とする。
【０１０６】
そして、ステップＳ１７にて現在フレームの関節角度値を計算する。開始キーフレームのＪ１、Ｊ２は共に０°であったので、補間フレームＦｉ１のときのＪ１、Ｊ２は、０＋ΔθＪ１＝３０°、０＋ΔθＪ２＝１０°となる。この各節角度値をアクチュエータに設定してロボット１を動作させる。
【０１０７】
次に、ステップＳ１８にて現在フレームが一つ進められ、ステップＳ１９にて次のフレームがあると判断するので、ステップＳ１２からの処理を繰り返す。そして、次のフレームは補間フレームＦｉ２であるので、ステップＳ１７に進んで前回算出された変化量ΔθＪ１とΔθＪ２を使用し、現在フレームの関節角度値をＪ１＝３０°＋ΔθＪ１＝６０°、Ｊ２＝１０°＋ΔθＪ２＝２０°のように計算し、該当するアクチュエータに設定してロボット１を動作させる。
【０１０８】
次に、ステップＳ１８にて現在フレームがまた一つ進められ、ステップＳ１９にて次のフレームがあると判断するので、ステップＳ１２からの処理を繰り返す。そして、次のフレームは終了キーフレームＦｅであるので、ステップＳ１７に進んで算出された変化量ΔθＪ１とΔθＪ２を使用し、現在フレームの関節角度値をＪ１＝６０°＋ΔθＪ１＝９０°、Ｊ２＝２０°＋ΔθＪ２＝３０°のように計算し、該当するアクチュエータに設定してロボット１を動作させる。
【０１０９】
このとき、前述したように、各フレームは、例えば１６ｍｓｅｃで実行されるので、開始キーフレームＦｓから終了キーフレームＦｅまでは、補関フレーム数ｎのとき、
１６ｍｓｅｃ×（ｎ＋１）
で表せるので、
補間フレーム数ｎ＝２であれば、１６×３＝４８ｍｓｅｃの時間がかかることになる。
【０１１０】
また、位置検出部４６がユーザの手が１００ｃｍの距離にあることを検出したとき、コントローラ１０は図８に示す処理手順のステップＳ１５により補間フレーム数ｎを５に決定したとする。
【０１１１】
この補間フレームを図１２に示すようにＦｉ１、Ｆｉ２、Ｆｉ３、Ｆｉ４、Ｆｉ５とする。ここでも、開始キーフレームから終了キーフレームまでの前記補間フレームを含めた各フレームは、例えば１６ｍｓｅｃで実行される。
【０１１２】
すると、図８のステップＳ１６では、補間フレーム数ｎが５であり、二つのキーフレームの関節値の差がＪ１で９０°（＝θＪ１）、Ｊ２で３０°（＝θＪ２）であるので、各フレーム毎のＪ１とＪ２の変化量ΔθＪ１とΔθＪ２を、
ΔθＪ１＝θＪ１／６＝１５°
ΔθＪ２＝θＪ２／６＝５°とする。
【０１１３】
そして、ステップＳ１７にて現在フレームの関節角度値を計算する。開始キーフレームのＪ１、Ｊ２は共に０°であったので、補間フレームＦｉ１のときのＪ１、Ｊ２は、０＋ΔθＪ１＝１５°、０＋ΔθＪ２＝５°となる。この各節角度値をアクチュエータに設定してロボット１を動作させる。
【０１１４】
次に、ステップＳ１８にて現在フレームが一つ進められ、ステップＳ１９にて次のフレームがあると判断するので、ステップＳ１２からの処理を繰り返す。そして、次のフレームは補間フレームＦｉ２であるので、ステップＳ１７に進んで前回算出された変化量ΔθＪ１とΔθＪ２を使用し、現在フレームの関節角度値をＪ１＝１５°＋ΔθＪ１＝３０°、Ｊ２＝５°＋ΔθＪ２＝１０°のように計算し、該当するアクチュエータに設定してロボット１を動作させる。
【０１１５】
次に、ステップＳ１８にて現在フレームがまた一つ進められ、ステップＳ１９にて次のフレームがあると判断するので、ステップＳ１２からの処理を繰り返す。そして、次のフレームは補間フレームＦｉ３であるので、ステップＳ１７に進んで前回算出された変化量ΔθＪ１とΔθＪ２を使用し、現在フレームの関節角度値をＪ１＝３０°＋ΔθＪ１＝４５°、Ｊ２＝１０°＋ΔθＪ２＝１５°のように計算し、該当するアクチュエータに設定してロボット１を動作させる。
【０１１６】
ステップＳ１８にて現在フレームを一つづつ進め、現在フレームが補間フレームＦｉ４，Ｆｉ５であるとき、それぞれのＪ１は６０°、７５°となり、それぞれのＪ２は２０°、２５°となる。そして、最後に終了キーフレームＦｅのときのＪ１は９０°、Ｊ２は３０°となる。
【０１１７】
このとき、前述したように、各フレームは、例えば１６ｍｓｅｃで実行されるので、補間フレーム数ｎ＝５であれば、１６×６＝９６ｍｓｅｃの時間がかかることになる。
【０１１８】
前述したように、実際には、数十フレームから数百フレームをかけて、上記の動作は行われる。例えば、補間フレーム数ｎが９９であるとき、１６×１００＝１．６ｓｅｃの時間がかかる。
【０１１９】
このように、ロボット１は、ユーザの手との間の距離が、短いほど補間フレーム数ｎを小さく決定するので、開始キーフレームＦｓから終了フレームＦｅまでの再生時間を、前記距離が長いときよりも短時間にすることができる。これにより、ユーザとの距離が短いほど、ロボット１は動作を速くすることができるので、ロボット１は、外部入力をユーザの好みの行動に反映させて、インタラクション性を高めることができる。
【０１２０】
なお、前記動作例においては、前記距離−補間フレーム数特性の基になる変数を図７に示したように距離が増すほど補間フレーム数がリニアに増すようにしたが、図１３に示すようにノンリニアにしてもよい。また、図１４に示すように、距離が増すほど補間フレーム数がリニアに減少するようにしてもよい。前者の場合、距離が離れていくほど、補間フレーム数ｎの変化は少なくなり、よって動作の速さの違いがでなくなる。後者の場合は、距離が近いほど動作がゆっくりし、遠いほど動作が速くなる。
【０１２１】
次に、有限確率オートマトンを用いてのノード遷移の選択について図１５、図１６を参照して説明する。
【０１２２】
図１５に示す有限確率オートマトンは、例えば、現在の状態がノード０（ＮＯＤＥ０）である場合、確率Ｐ１でノード１（ＮＯＤＥ１）に遷移し、確率Ｐ２でノード２（ＮＯＤＥ２）に遷移し、確率Ｐｎでノードｎ（ＮＯＤＥｎ）に遷移することを示している。また、この有限確率オートマトンは、確率Ｐｎ−１でノード０（ＮＯＤＥ０）に遷移すること、すなわち、いずれのノードにも遷移しないことを示している。
【０１２３】
そして、行動モデルライブラリ９１に規定されるそれぞれの行動モデルは、複数の状態を表わすノードから構成されており、それぞれのノードには、他のノードに遷移する確率が記述された状態遷移表が設定されている。
【０１２４】
図１６は、行動モデルライブラリ９１に規定される、所定の行動モデルに属するノード１００（ＮＯＤＥ１００）の状態遷移表の例を示す図である。
【０１２５】
図１６においては、他のノード（又は自らのノード）に遷移する条件としての入力イベントが「入力イベント名」の欄に記載されており、遷移する条件として規定される「入力イベント名」についての、さらなる条件が「データ名」、及び「データ範囲」の欄に記載されている。
図の例において、ＩＤ「１」が設定されている情報は、「ボールを検出した」（入力イベント名「ＢＡＬＬ」）ことに関する情報が行動管理部６２に通知され、かつ、検出されたボールの大きさが「０乃至１０００」の範囲であるとき、「３０パーセント」の確率でノード１００からノード１２０に遷移することを示している。
【０１２６】
また、ＩＤ「２」が設定されている情報は、「頭を軽く叩かれた」（入力イベント名「ＰＡＴ」）ことに関する情報が行動管理部６２に通知されてきたとき、「４０パーセント」の確率でノード１００からノード１５０に遷移することを示している。
【０１２７】
また、ＩＤ「３」が設定されている情報は、「頭を強く叩かれた」（入力イベント名「ＨＩＴ」）ことに関する情報が行動管理部６２に通知されてきたとき、「２０パーセント」の確率でノード１００からノード１５０に遷移することを示している。
【０１２８】
さらに、ＩＤ「４」が設定されている情報は、「ユーザによって編集されたモーションを実行する」（入力イベント名「Ｅ　ＭＯＴＩＯＮ」）ことに関する情報が行動管理部６２に通知され、かつ、ユーザ又はユーザの手までの距離が「０〜２０」の範囲であることが通知されてきたとき、「１００パーセント」の確率でノード１００からノード１６００に遷移することを示している。
【０１２９】
ＩＤ「５」が設定されている情報は、「障害物を検出した」（入力イベント名「ＯＢＳＴＡＣＬＥ」）ことに関する情報が行動管理部６２に通知され、かつ、その障害物までの距離が「０乃至１００」の範囲であることが通知されてきたとき、「１００パーセント」の確率でノード１００からノード１０００に遷移することを示している。
【０１３０】
また、この例においては、音声認識部４３や画像認識部４４等からの入力がない場合であっても、感情モデル８１や本能モデル８２のパラメータに応じて他のノードに遷移するようになされている。
【０１３１】
例えば、ＩＤ「６」が設定されている情報は、感情モデル８１の「うれしさ（ＪＯＹ）」を表わす感情ユニット８１Ａのパラメータが「５０乃至１００」の範囲にあるとき、「５パーセント」の確率でノード１２０に遷移し、「３０パーセント」の確率でノード１５０に遷移することを示している。
【０１３２】
ＩＤ「７」が設定されている情報は、感情モデル８１の「驚き（ＳＵＲＰＲＩＳＥ）」を表わす感情ユニット８１Ｄのパラメータが「５０乃至１００」の範囲にあるとき、「１５パーセント」の確率でノード１０００に遷移することを示しており、ＩＤ「８」が設定されている情報は、感情モデル８１の「悲しみ（ＳＵＤＮＥＳＳ）」を表わす感情ユニット８１Ｂのパラメータが「５０乃至１００」の範囲にあるとき、「５０パーセント」の確率でノード１２０に遷移することを示している。
【０１３３】
また、図１６の状態遷移表には、それぞれのノードに遷移したとき、そこで出力される行動が「出力行動」の欄に記述されており、例えば、ノード１２０に遷移したとき、そこで出力される行動は「ＡＣＴＩＯＮ１」であり、ノード１５０に遷移したとき、そこで出力される行動は「ＡＣＴＩＯＮ２」であり、ノード１０００に遷移したとき、そこで出力される行動は「ＭＯＶＥ　ＢＡＣＫ」（後退）であるとされている。
【０１３４】
また、ノード１６００に遷移したとき、そこで出力される行動は、「ＡＣＴＩＯＮ４」である。これを、例えば、前述したように、補間フレーム数ｎのときに座ってから右前脚を挙げるという動作にすればよい。この「ＡＣＴＩＯＮ４」の行動は、前記距離−補間フレーム数特性に応じて決定された補間フレーム数ｎによって、モーションスピードが決定される。つまり、ノード１６００に遷移後、決定された補間フレーム数ｎによってモーションスピードをさらに変えることになる。本願発明では、例えばユーザ又はユーザの手までの距離にしたがってって補間フレーム数ｎを異ならせることにより、エディットモーションの速度を変えているためである。
【０１３５】
また、例えば、ＩＤ「９」が設定されている情報を入力イベント名「Ｅ　ＭＯＴＩＯＮ２」にし、例えば手拍子のリズムを検出したときに「１００パーセント」の確率でノード１００からノード１２００に遷移するようにすればよい。そして、ノード１２００の行動「ＡＣＴＩＯＮ３」では、手拍子のリズムに合わせて首を振る動作を補間フレーム数ｎを変えながら、動作速度を変化させて行う。
【０１３６】
行動選択部９２は、このような状態遷移表を参照することで状態を遷移させ、そのノードに設定されている行動を指示する情報を、本能・感情管理部６１、姿勢遷移管理部６３、及び音声合成部６５にそれぞれ出力する。
【０１３７】
例えば、遷移したノードに規定されている行動が「座ってから補間フレーム数ｎにて右前脚を挙げる」である場合、行動選択部９２は、それを指示するコマンドを姿勢遷移管理部６３を介して制御部６４に出力する。
【０１３８】
図４の説明に戻り、姿勢遷移管理部６３は、行動管理部６２から供給されるコマンドに基づいて、ロボット１の姿勢を現在の姿勢から次の姿勢に遷移させるための姿勢遷移情報を生成し、これを制御部６４に送出する。この制御部６４は、図２に示した動作制御部６４の機能を果たす。
【０１３９】
ここで、現在の姿勢から次に遷移可能な姿勢は、例えば、胴体や手や足の形状、重さ、各部の結合状態のようなロボット１の物理的形状と、関節が曲がる方向や角度のようなアクチュエータ３ＡＡ１乃至５Ａの機構とによって決定される。
【０１４０】
なお、姿勢には、現在の姿勢から直接遷移可能な姿勢と、直接遷移できない姿勢がある。例えば、４本足のロボット１は、手足を大きく投げ出して寝転んでいる状態から、伏せた状態へ直接遷移することはできるが、立った状態へ直接遷移することはできず、一旦、手足を胴体近くに引き寄せて伏せた姿勢になり、それから立ち上がるという２段階の動作が必要である。また、安全に実行できない姿勢も存在する。例えば、ロボット１は、４本足で立っている姿勢から、両前足を挙げてバンザイをしようとすると、簡単に転倒してしまう。
【０１４１】
このため、姿勢遷移管理部６３は、直接遷移可能な姿勢を予め登録しておき、行動管理部６２から供給されるコマンドが、直接遷移可能な姿勢を示す場合には、その姿勢遷移情報を制御部６４に送出する。
【０１４２】
一方、姿勢遷移情報が、直接遷移不可能な姿勢を示す場合には、姿勢遷移管理部６３は、遷移可能な他の姿勢に一旦遷移した後に、目的の姿勢まで遷移させるような姿勢遷移情報を生成し、制御部６４に送出する。これによりロボット１が、遷移不可能な姿勢を無理に実行しようとする事態や、転倒するような事態を回避することができる。
【０１４３】
制御部６４は、姿勢遷移管理部６３から供給されてきた姿勢遷移情報に基づいて、各部に設けられているアクチュエータ３ＡＡ１乃至５Ａを駆動し、ロボット１の動作を制御する。
【０１４４】
次に、モーションの編集システムについて図１７〜図２３を用いて説明する。予め、ユーザによって、開始キーフレームと終了キーフレームが指定されると、それら二つのキーフレームはもちろん、それら二つのキーフレームのときの各アクチュエータの関節角度も設定される。これら編集におけるモーションデータは、図１７の（ａ）に示すパーソナルコンピュータ１１０によってメモリカード１１１に書き込まれる。このメモリカード１１１は、ロボット１の例えば胴体部ユニット２に設けられているスロットに挿入され、メモリカードＩ／Ｆ１０Ｃと接続する。
【０１４５】
なお、パーソナルコンピュータ１１０は、図１８に示すように構成されており、モーション編集のためのプログラムをＲＯＭ１１５又はＨＤＤ１２０に格納している。ＣＰＵ１１２は、ＨＤＤ１２０に格納されているＯＳを起動したのち、バス１１３を通じて前記モーション編集プログラムをＲＯＭ１１５又はＨＤＤ１２０から取り出し、ＤＲＡＭ１１４を作業エリアにしながら逐次実行する。前記モーション編集プログラムの実行により、ディスプレイコントローラ１１６によって制御されるディスプレイ１１７には、後述の図１９〜図２３に示すような画像が表示され、その画像を用いてユーザがモーションの編集を行えるようになっている。もちろん、前記編集は、Ｉ／Ｏインターフェース１２１に接続されたキーボードや、マウス、ポインティングデバイスなどの操作部１２２を用いて行われる。また、メモリカード１１１は、メモリカードＩ／Ｆ１１８を介してＣＰＵ１１２に接続されており、前記操作部１２２を使ったユーザの編集操作によって指定された前記二つのキーフレーム等のモーションデータがその制御にしたがってって記憶される。なお、前記モーションデータは、通信Ｉ／Ｆ１１９を介した無線ＬＡＮを通じてロボット１に送信されてもよい。
【０１４６】
モーションの編集は、アクションの編集の一部とされている。よって、アクションエディタが図１９のように起動される。アクションの作成が選択された後、図２０において“素材”からモーションの作成が選択されと、アクションネームＡＣＴＩＯＮ　Ｎａｍｅや、Ｆｉｌｅ　Ｎａｍｅをユーザに入力させる。
【０１４７】
この後、図２１に示すアクションウィンドウが起動される。アクションウィンドウには、カレントタイム／フレーム表示２０１、トータルタイム／フレーム表示、カレントバー２０３、キーフレームチャンネル２０４等が表示される。そして、キーフレームチャンネル２０４には、図２２に示すような開始キーフレームと、終了キーフレームが例えば予め格納されてサンプルファイルの中から、ユーザにより選択されて表示され、設定がなされる。この二つのキーフレーム間の補間フレーム数ｎをマニュアルにて設定するか、或いはここでは設定せず、前述したように外部入力検出に応じて変化させるかは図２３に示すダイアログにてユーザにより選択される。
【０１４８】
もしも、図２３に示すダイアログにて、「設定する」が選択された場合には、補間フレームを設定するための処理が、ダイアログなどによって案内され、ユーザが固定の補間フレーム数を設定することになる。
【０１４９】
また、「ここでは設定しない」が選択された場合には、モーション編集処理を終了し、前記モーションデータをメモリカード１１１に格納する。このメモリカード１１１が、図１７に示したように、ロボット１に装着されると、メモリカードＩ／Ｆ１０Ｃと接続する。そして、ＣＰＵ１０Ａにて前記編集動作制御プログラムが実行されたときに、メモリカード１１１（図３におけるメモリカード１０Ｄと同一である）から前記モーションデータが読み出され、前記メモリ１０２に保存されている変数を用いて補間フレーム数ｎが決定される（図８のステップＳ１５）。この後、前記図８のステップＳ１６以下の処理が行われることにより、決定された補間フレーム数ｎと、前記二つのキーフレームに基づいて前記サーボモータの駆動による各関節値の、各フレーム毎の変化量を算出し、現在のフレームの関節角度値を計算しながら、その関節角度値にしたがってって前記サーボモータを含めたアクチュエータが動作される。
【０１５０】
したがって、前記モーションの編集システムによって設定された開始フレーム、終了フレームと、それらの関節値の差を基にして、ロボット１は、外部入力をユーザの好みの行動に反映させて、インタラクション性を高めながら動作することができる。
【０１５１】
【発明の効果】
本発明に係るロボット装置は、外部入力検出手段により検出された外部入力に応じて補間フレーム数決定手段が決定した補間フレーム数に基づいて所望のモーションの対象となる関節のアクチュエータを動作させるので、外部入力をユーザの好みの行動に反映させて、インタラクション性を高めることができる。
【０１５２】
本発明に係るロボット装置の動作制御方法は、外部入力検出工程により検出された外部入力に応じて補間フレーム数決定工程が開始キーフレームと終了キーフレーム間の補間フレーム数を決定し、変化量算出工程が補間フレーム数と二つのキーフレーム間の関節値の差から、フレーム毎の変化量を算出し、関節角度計算工程がフレーム毎の変化量から、現在フレームの関節角度値を計算し、動作制御工程が現在フレームの関節角度値にしたがってってロボット装置のアクチュエータを動作させるので、外部入力をユーザの好みに応じてロボット装置の行動に反映させて、ロボット装置のインタラクション性を高めることができる。
【０１５３】
本発明に係る記録媒体は、ロボット装置の動作制御プログラムを記憶しているので、ロボット装置の外部入力をユーザの好みに応じてロボット装置の行動に反映させて、ロボット装置のインタラクション性を高めることができる。
【０１５４】
本発明に係るプログラムは、ロボット装置の外部入力をユーザの好みに応じてロボット装置の行動に反映させて、ロボット装置のインタラクション性を高めることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態のエンタテインメントロボット装置の外観斜視図である。
【図２】ロボット装置の機能ブロック図である。
【図３】ロボット装置の内部構成図である。
【図４】コントローラの機能構成図である。
【図５】本能・感情管理部の機能例を模式的に示す図である。
【図６】行動管理部の機能例を模式的に示す図である。
【図７】外部入力の処理の手順を示すフローチャートである。
【図８】モーション再生処理の手順を示すフローチャートである。
【図９】距離−補間フレーム数特性の具体例を示す特性図である。
【図１０】補間フレーム数ｎ＝１のときの再生例を示す図である。
【図１１】補間フレーム数ｎ＝２のときの再生例を示す図である。
【図１２】補間フレーム数ｎ＝５のときの再生例を示す図である。
【図１３】距離−補間フレーム数特性の他の具体例を示す特性図である。
【図１４】距離−補間フレーム数特性の他の具体例を示す特性図である。
【図１５】有限オートマトンの例を示す図である。
【図１６】状態の遷移確率の例を示す図である。
【図１７】モーションの編集システムを説明するための図である。
【図１８】パーソナルコンピュータの内部構成を示すブロック図である。
【図１９】アクションエディタが起動されたときの画面表示例を示す図である。
【図２０】モーション作成を選択する状態を示す画面表示例を示す図である。
【図２１】アクションウィンドウを示す画面表示例を示す図である。
【図２２】ユーザにより選択されてキーフレームチャンネル上に表示されるキーフレームを示す図である。
【図２３】補間フレーム数ｎをマニュアルにて設定するか、或いは自動設定するのかをユーザに選択させるためのダイアログ表示例を示す図である。
【符号の説明】
１　エンタテインメントシステムロボット装置、１０　コントローラ、１０Ｂメモリ、１０Ｄ　メモリカード、１８　位置検出センサ、３１　外部入力検出部、４６　位置検出部、６２　行動管理部、６４　動作制御部、１０１　補間フレーム数決定部、１０３　変化量算出部、１０４　関節角度計算部
【図１】
2004130428.tif 000003
【図２】
2004130428.tif 000004
【図３】
2004130428.tif 000005
【図４】
2004130428.tif 000006
【図５】
2004130428.tif 000007
【図６】
2004130428.tif 000008
【図７】
2004130428.tif 000009
【図８】
2004130428.tif 000010
【図９】
2004130428.tif 000011
【図１０】
2004130428.tif 000012
【図１１】
2004130428.tif 000013
【図１２】
2004130428.tif 000014
【図１３】
2004130428.tif 000015
【図１４】
2004130428.tif 000016
【図１５】
2004130428.tif 000017
【図１６】
2004130428.tif 000018
【図１７】
2004130428.tif 000019
【図１８】
2004130428.tif 000020
【図１９】
2004130428.tif 000021
【図２０】
2004130428.tif 000022
【図２１】
2004130428.tif 000023
【図２２】
2004130428.tif 000024
【図２３】
2004130428.tif 000025