(57)【特許請求の範囲】
【請求項１】
コンピュータに、複数の可動部を有するロボット又はアニメーションキャラクタの動作を制御させるプログラムであって、
前記ロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順と、
可動部間の影響の度合いを前記グラフの構造上の熱拡散計算により求める計算手順
をコンピュータに実行させ、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を生成することを特徴とする、プログラム。
【請求項２】
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、請求項１記載のプログラム。
【請求項３】
前記計算手順は、
前記複数の可動部の数がｎ個の場合、前記グラフのリンクに付加された重みを用いて可動部ｉと可動部ｊの重みを（ｉ，ｊ）成分に持つｎ×ｎ行列Ｐを定義し、
Ｉをｎ×ｎの単位行列として前記行列Ｐを用いて次式の計算を行うことにより行列Ｍを求め、
【数１】
0005699648.tif 000022
前記行列Ｍの要素（ｉ，ｊ）は、前記可動部ｊを熱源として、前記熱源から時間ｔ内に重み付きの前記グラフ上を辿って前記可動部ｉに流入してきた熱量とみなすことを特徴とする、請求項１又は２記載のプログラム。
【請求項４】
前記計算手順は、行の和
【数２】
0005699648.tif 000023
が１となるような正規化を行うことを特徴とする、請求項３記載のプログラム。
【請求項５】
複数の可動部を有するロボットであって、
可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフを格納する記憶部と、
動かす動作可動部で時系列に定義された動作パターンを、前記記憶部に格納された前記グラフに基づいて更新する計算部と、
前記計算部により更新された動作パターンに基づいて前記複数の可動部を制御する指令部を備え、
前記計算部は、可動部間の影響の度合いを前記グラフの構造上の熱拡散計算により求め、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を生成することを特徴とする、ロボット。
【請求項６】
複数の可動部を有するロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順と、
可動部間の影響の度合いを前記グラフの構造上の熱拡散計算により求める計算手順
をコンピュータで実行し、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を生成することを特徴とする、動作制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット等のインタラクティブデバイスに設けられたモータ等の駆動部、或いは、コンピュータグラフィック（ＣＧ：Computer Graphic）アニメーションキャラクタの動作を制御する動作制御方法、ロボット及びプログラムに関する。
【背景技術】
【０００２】
介護ロボット、教育ロボット等を含むコミュニケーションロボットは、人間とのインタラクションを行う機能を有する。このようなコミュニケーションロボットは、人間から見て生き物らしい自然な動作、即ち、機械的ではない動作をすることで、インタラクションをより円滑にすることができる。
【０００３】
人間又は動物の体の特定部分の関節が大きく動いた場合、この関節と直接繋がっていない他の関節も、大きく動いた関節と連動して微小に動く。これは、関節が筋肉や皮膚に引っ張られたり、体の重心と姿勢が変化すると関節が受ける力の方向が変わること等による。又、このような他の関節と連動した動きの影響は、連鎖的に他の関節へも複雑に伝播していくものと考えられる。他の関節と連動した動きの影響で生じる関節の微小な動きは、例えばアームの先端を目標位置まで正確に移動させることが目的の産業用ロボット等では不要な動きであるが、人間との親和性を重視したコミュニケーションロボットにおいては、生き物らしい自然な動作を演出するために必要な動きである。
【０００４】
通常、コミュニケーションロボットは、各関節の動きを定義したモーション（又は、動作パターン）を予め作成しておき、コミュニケーションロボットが動作中は随時これらのモーションに従って動くことで「くしゃみ」や「手を振って喜ぶ」等の様々な動作又は表現を行う。しかし、従来のコミュニケーションロボットでは、これらのモーションにおいてある関節の動きは他の関節に伝わることがないため、モーションが定義されていない関節はモーションを実行中完全に停止（又は、静止）した状態にある。このように、モーションが定義されている関節のみが動くので、コミュニケーションロボットの動きが機械的になってしまう。例えば、コミュニケーションロボットが口を開けて首を大きく縦に振りながら「くしゃみ」をするモーションを予め定義しても、「くしゃみ」をする時に同時に腕や脚も微小に動かなければ、人間から見ると生き物として違和感のある不自然な動作になってしまう。
【０００５】
コミュニケーションロボットの不自然な動作に対処するため、現状では設計者が、関節間の影響による各関節の微小な動きを推定しながらモーションを作成している。例えば、「くしゃみ」のモーションを作成する際には、首の動きにつられて腕が動き、更に腕が動くと脚も微妙に動くといった各関節の動きを作成している。しかし、このようなモーションの作成には多大な労力と時間を要する。又、自然な動作をする１つのモーションを作成したとしても、連続して同じモーションを実行した場合等には、作成した微妙な関節の動きまで同じ動作が繰り返されるため、人間が見ると不自然な印象を受けてしまう。
【０００６】
ロボットの動作を補完する技術としては、例えばロボットの骨格リンクデータを保持し、ある部位の動きから運動学的に他の部位の動きを導く各種手法が提案されている。又、ロボットが歩行中に受ける重力等の力を計算することにより、実質的に下肢部分を自由に揺動させる手法（例えば、特許文献１）等も提案されている。しかし、これらの提案手法は、上記の如き筋肉や皮膚の張り、或いは、重心や姿勢の変化、或いは、その他多くの要因による微妙な動作を考慮したものではない。
【０００７】
筋肉や皮膚の張り等を考慮した、精密な体のモデルを作成して物理的なシミュレーションを行えば、上記の如き微妙な動作をある程度は再現できる可能性がある。しかし、このようなモデルの作成やシミュレーションは非常に困難であり、仮にそのようなモデルを作成できたとしても、このモデルを体の構造が異なる他のロボットには適用できない可能性が高い。
【０００８】
一方、アニメーション作成ツールによりＣＧアニメーションキャラクタを作成する場合、ロボットの場合と同様にアニメーションキャラクタの関節を動かすことで、画面上でアニメーションキャラクタに各種動作を行わせることができる。しかし、アニメーション作成ツールにより動かしたい関節のみを動かしたのでは、動く関節に影響されて微小な動作を行う他の関節の動きが生成されないため、ロボットの場合と同様にアニメーションキャラクタの動作が人間から見ると違和感のある不自然な動作になってしまう。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特表２００４−５３１４００号公報
【特許文献２】特開２００７−１２５６２９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来の動作制御方法では、ロボット又はアニメーションキャラクタの関節を動かす場合、モーション（又は、動作パターン）で定義された関節のみが動き他の関節は静止した状態にあるため、ロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることは難しいという問題があった。
【００１１】
そこで、本発明は、比較的簡単な制御でロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能な動作制御方法、ロボット及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一観点によれば、複数の可動部を有するロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順と、可動部間の影響の度合いを前記グラフの構造上の熱拡散計算により求める計算手順をコンピュータで実行し、前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を生成する動作制御方法が提供される。
【００１３】
本発明の一観点によれば、複数の可動部を有するロボットであって、可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフを格納する記憶部と、動かす動作可動部で時系列に定義された動作パターンを、前記記憶部に格納された前記グラフに基づいて更新する計算部と、前記計算部により更新された動作パターンに基づいて前記複数の可動部を制御する指令部を備え、前記計算部は、可動部間の影響の度合いを前記グラフの構造上の熱拡散計算により求め、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を生成するロボットが提供される。
【００１４】
本発明の一観点によれば、コンピュータに、複数の可動部を有するロボット又はアニメーションキャラクタの動作を制御させるプログラムであって、前記ロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順と、可動部間の影響の度合いを前記グラフの構造上の熱拡散計算により求める計算手順をコンピュータに実行させ、前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を生成するプログラムが提供される。
【発明の効果】
【００１５】
開示の動作制御方法、ロボット及びプログラムによれば、比較的簡単な制御でロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能となる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１実施例におけるインタラクティブデバイスの一例を示すブロック図である。
【図２】モータコマンドテーブルの一例を説明する図である。
【図３】関節グラフと重みの一例を説明する図である。
【図４】ｎ×ｎ行列の一例を示す図である。
【図５】ｎ×ｎ行列より求めた行列の一例を示す図である。
【図６】従属関節が動作関節より受ける影響量を説明する図である。
【図７】従属関節の動作量を決定する処理を説明するフローチャートである。
【図８】更新されたコマンドテーブルの一例を説明する図である。
【図９】１サイクル当たりの処理を説明するフローチャートである。
【図１０】１サイクル経過後の、更新されたコマンドテーブルの一例を説明する図である。
【図１１】従属関節が動作関節から受ける影響量を説明する図である。
【図１２】更新されたコマンドテーブルの一例を説明する図である。
【図１３】図４に示すｎ×ｎ行列の重みを考慮して生成される行列が、パラメータの違いによってどのように異なるのかを説明する図である。
【図１４】時間による従属関節への拡散熱量の違いを説明する図である。
【図１５】処理部全体の処理を説明するフローチャートである。
【図１６】編集ツールの画面の一例を示す図である。
【図１７】編集ツールの処理の一例を説明するフローチャートである。
【図１８】ＣＧアニメーションキャラクタの一例を示す図である。
【発明を実施するための形態】
【００１７】
開示の動作制御方法、ロボット及びプログラムでは、ロボット又はアニメーションキャラクタのモーション（又は、動作パターン）で定義された動作関節に加え、動作関節に影響されて微小な動作を行う他の従属関節の動きを自動的に生成することで、比較的簡単な制御でロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせる。
【００１８】
例えば、直接動かされていない従属関節を、直接動かされている動作関節の動きに応じて従属的に動かすことで、精密な体のモデルを作成して物理的なシミュレーションを行うのではなく、例えば設計者が自らの勘や経験に基づいて定義した関節グラフ構造を利用することで、ロボット又はアニメーションキャラクタに円滑な動作を行わせる。これにより、複数の関節を有するロボット又はアニメーションキャラクタであれば、基本的にはどのような構造のロボット又はアニメーションキャラクタであっても、比較的容易、且つ、比較的短時間に適切な動作制御が行える。
【００１９】
又、関節間の影響の度合いを関節グラフ構造上の熱拡散計算により求めることで、関節間の連鎖的及び相互的な影響を考慮した動作制御が可能となる。この結果、設計者が関節グラフ構造を作成する際の直感を自然に反映させたロボット又はアニメーションキャラクタの動きを生成することができる。ロボット又はアニメーションキャラクタの円滑な動作を実現することで、例えば人間との親和性を向上して生き物らしい自然な動作を演出することもできる。
【００２０】
以下に、開示の動作制御方法、ロボット及びプログラムの各実施例を図面と共に説明する。
【実施例】
【００２１】
（第１実施例）
図１は、本発明の第１実施例におけるインタラクティブデバイスの一例を示すブロック図である。この例では、インタラクティブデバイスはコミュニケーションロボットにより形成されている。
【００２２】
図１に示すコミュニケーションロボット（以下、単にロボットと言う）１は、処理部１１、記憶部１２、及び可動部群１３を有する。処理部１１は、ＣＰＵ（Central Processing Unit）等のプロセッサで形成されている。記憶部１２は、半導体記憶装置、光記憶装置、光磁気記憶装置、磁気記憶装置等で形成されており、複数の記憶装置、或いは、複数種類の記憶装置で形成されていても良い。半導体記憶装置には、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、メモリカード等が含まれる。光、光磁気、及び磁気記憶装置には、ディスク装置等が含まれる。記憶部１２は、可搬型の記憶装置を含んでも良い。可動部群１３は、ロボット１に設けられている複数の関節（図示せず）に相当する複数の可動部を有する。各可動部は、関節と、関節を駆動するモータ等の駆動部を有する。尚、以下の説明における「関節」とは、ロボット１のうち、例えば人間の体の関節に相当する部分に限定されず、可動部分を総称して指すものとする。
【００２３】
処理部１１は、モーション読み込み部１１１、熱分布計算部１１２、動き計算部１１３、及びモータ指令部１１４を有する。記憶部１２は、モーションデータベース（ＤＢ：Data-Base）１２１、関節グラフ１２２、モータコマンドテーブル１２３、熱分布１２４、及び処理部１１に動作制御処理を実行させるプログラム（図示せず）を格納している。処理部１１は、記憶部１２に格納されているプログラムを実行することで、モーション読み込み部１１１、熱分布計算部１１２、動き計算部１１３、及びモータ指令部１１４の夫々の機能を含むロボット１の各種機能を実現する。つまり、記憶部１２に格納されているプログラムには、処理部１１に動作制御処理を含むロボット１の処理を実行させる各手順が含まれる。プログラムを格納したコンピュータ読み取り可能な記憶媒体は、この例では記憶部１２を形成する少なくとも１つの記憶装置で形成可能である。
【００２４】
（モータコマンドテーブル）
この例では、ロボット１は、時間軸上で可動部群１３内の関節を駆動する各モータの回転角度を時系列で指定するモーションデータ（又は、動作パターンデータ）に基づいて動作することにより、様々な動作又は表現を行う。モーションデータは、ロボット１の動作実行時にモーション読み込み部１１１により各モータへの具体的な指示に逐次変換され、例えば図２に示すようなモータコマンドテーブル１２３に保持され管理される。図２は、モータコマンドテーブル１２３の一例を説明する図である。図２に示す例では、「口」、「首（tilt）」、「首（roll）」に対してモータの回転量の指令値が格納されている。首（pan）、首（tilt）、首（roll）は、互いに直交する３軸を中心としたロボット１の首の回転角度（パン、チルト、ロール）を示す。尚、関節は、図２に示す右耳、左耳、右まぶた、左まぶた、口、首(pan)、首(tilt)、首(roll)、右肩、左肩、右腕、左腕、右股、左股、右膝、及び左膝に限定されないことは、言うまでもない。
【００２５】
図２中、横軸で示す時刻の単位は、ロボット１の動作周期（例えば、０を含まない１０００ミリ秒以下の値）であり、四辺形で示された各フィールド内の符号付きの数値が、対応するモータの回転量の指令値（°）を表す。ロボット１が動作中は、モーション読み込み部１１１によりモーションＤＢ１２１から順次モーションデータが読み出され、記憶部１２内のモータコマンドテーブル１２３にコマンドが割り当てられる。例えば、複数のモーションデータが並行してモータコマンドテーブル１２３に割り当てられる。モータコマンドテーブル１２３の内容は、時間の経過と共に図２中矢印で示すように左側にずれて（即ち、スライドして）、時刻Ｔ０〜Ｔ１にスライドしてきたコマンドが対応するモータにモータ指定部１１４を介して送信される。このとき、時刻Ｔ０〜Ｔ１のフィールド内に数値が設定されている関節は、モーションデータにより動作が指定されている動作関節である。一方、フィールド内が空白の関節は、モーションデータにより動作が指定されていない関節であり、従来であれば停止している。この例では、従来であれば停止しているこれらの関節を従属関節と定義して、動作関節に従属させた微小な動きを生成する。従属関節と定義された関節に対しては、例えばモータコマンドテーブル１２３の時刻Ｔ０〜Ｔ１のフィールドに新たにコマンドを割り付ける。
【００２６】
（関節グラフ）
先ず、ロボット１の複数の関節のうち、設計者により「関連」があると判断された関節同士をリンクで結んだ関節グラフ１２２を記憶部１２に保持しておく。ここで、「関連」とは、例えば以下のような理由Ｒ１，Ｒ２により、ある関節の動きが他の関節に伝わることを言う。
Ｒ１：他の関節が筋肉や皮膚の動きに引っ張られる。
Ｒ２：体の重心と姿勢が変化することにより、各関節が受ける力の方向が変わる。
【００２７】
従って、関節グラフ１２２は、ロボット１の骨格的なリンク構造を定義したものではなく、設計者が上記の如き関節間の動きの影響を自由に想像、考慮して作成されたものである。つまり、関節グラフ１２２は、設計者が理由Ｒ１，Ｒ２等の関節間の動きの影響を考慮した上で任意に決定した条件に基づいて作成され、関節間の動きの影響に応じて関節同士をリンクで結んだものである。
【００２８】
（関節グラフのリンク上の重み）
関節グラフ１２２のリンクには、関節間の影響の度合いが関節間の重みとして付加（又は、設定）される。例えば、ロボット１が口を大きく開けた時、ロボット１が犬型の場合は耳も口の動きに連動して動くと予想できるが、その移動量は僅かであると仮定して口と耳とのリンク上の重みを小さく設定する。一方、肩の関節が大きく動いた時は、腕の関節も大きく動くと仮定し、肩と腕を結んでいるリンクの重みを比較的大きめに設定する。尚、この重みの付けの方法も、ロボット１の動きの個性として設計者が自由に設定可能である。
【００２９】
図３は、関節グラフ１２２とリンクに付加された重みの一例を説明する図である。関節グラフ１２２とそのリンクに付加された重みは、設計者により任意に定義可能である。図３中、○印は関節を示し、○印内には「右耳」、「口」等といった関節の名称（又は、部位）が示されている。リンクは○印と○印を接続する直線で表されており、直線の近傍に示されている数値はリンクに付加された重みを表す。
【００３０】
【数１】
0005699648.tif 000002
【００３１】
【数２】
0005699648.tif 000003
【００３２】
【数３】
0005699648.tif 000004
【００３３】
【数４】
0005699648.tif 000005
【００３４】
【数５】
0005699648.tif 000006
【００３５】
【数６】
0005699648.tif 000007
【００３６】
図６に示す関節グラフ１２２では、例えば右肩が首(tilt)と直結しているが、首(pan)と、首(roll) 経由でも首(tilt) に繋がっている。又、首(pan)及び首 (roll)は夫々首(tilt)に直結しているが、左肩経由でも首(tilt)に夫々異なる重み付きのリンクで繋がっている。ある関節が他の関節から受ける影響を考慮する上で、このような関節の相互接続による影響も考慮しても良い。実際の生き物も、関節同士は連鎖的に影響し合うものと考えるのが自然であるが、熱分布計算から求められる図６に示す関節グラフ１２２の影響量は、このような関節間の複数経路、及び各経路（即ち、リンク）に付加された異なる重み（即ち、図２で示した重み）を全て含んで計算した結果である。従って、関節グラフ１２２の影響量は、直結している関節間との重みのみにより定まる値ではない。
【００３７】
又、図６において、○印で表される関節を繋ぐ直線のうち、太線は同じ関節から延びる複数のリンクのうち影響量とリンク上の重みの積が最大のリンクを示す。各従属関節の回転方向は、この太線で示すリンクで接続された先の関節と、そのリンクに設定された動作パターンから決まる。
【００３８】
【数７】
0005699648.tif 000008
【００３９】
【数８】
0005699648.tif 000009
【００４０】
実際には、図７の如き処理、即ち、式（２）を用いた動作量の計算が動作関節の数分だけ行われた後に加算される。尚、上記の例では、首(tilt)だけが動作関節である。
【００４１】
【数９】
0005699648.tif 000010
【００４２】
モータ指令部１１４からモータへの指令は、図８に示す更新後のコマンドテーブル１２３の時刻Ｔ０〜Ｔ１にあるフィールド分が送信される。このようにして、ロボット１の動作の１サイクル当たりの処理が行われる。
【００４３】
【数１０】
0005699648.tif 000011
【００４４】
尚、１サイクル経過後は、コマンドテーブル１２３の内容が１つ左にスライドし、同様の処理が繰り返され、図８に示すコマンドテーブル１２３は１サイクル後に図１０に示すように更新される。図１０は、１サイクル経過後の、更新されたコマンドテーブル１２３の一例を説明する図である。図１０中、図８と同一部分には同一符号を付し、その説明は省略する。
【００４５】
【数１１】
0005699648.tif 000012
【００４６】
この結果、図９のフローチャートに従って各従属関節の動作量を、夫々の動作関節からの影響量を足し合わせて決定すると、図１０に示すコマンドテーブル１２３は図１２に示すように更新される。図１２は、更新されたコマンドテーブル１２３の一例を説明する図である。図１２中、図１０と同一部分には同一符号を付し、その説明は省略する。
【００４７】
【数１２】
0005699648.tif 000013
【００４８】
【数１３】
0005699648.tif 000014
【００４９】
図１５は、処理部１１全体の処理を説明するフローチャートである。図１５において、ステップＳ２１では、モーション読み込み部１１１が記憶部１２内のモーションＤＢ１２１からモーションを読み込む。ステップＳ２２では、モーション読み込み部１１１が読み込んだモーションを各モータへの具体的な指示に逐次変換して記憶部１２内のモータコマンドテーブル１２３に割り当てて保持する。ステップＳ２３では、動き計算部１１３が記憶部１２内に既に格納されている熱分布１２４に基づいて従属関節の動きを計算し、計算結果に基づいてモータコマンドテーブル１２３を例えば図８に示すように更新する。ステップＳ２４では、モータ指令部１１４が更新されたモータコマンドテーブル１２３に基づいて可動部群１３内の該当するモータを制御、即ち、作動させる。
【００５０】
【数１４】
0005699648.tif 000015
【００５１】
上記の如く、この例において定義する関節グラフ構造（即ち、関節間のリンクの仕方、重みの付け方、回転パターンの決め方）は、ロボット１の動きの個性として、ロボット１が夫々固有の物を持ち、又、動作モードに応じて任意にその構造を変更可能である。このため、設計者が直感的、且つ、容易に関節グラフ構造を作成し、編集可能とする編集ツールを用いても良い。図１６は、編集ツールの画面の一例を示す図であり、図１７は、編集ツールの処理の一例を説明するフローチャートである。編集ツールは、プロセッサ、記憶部、キーボード等の入力部、及び表示部を備えた汎用のコンピュータシステム（図示せず）に搭載される。
【００５２】
図１６に示す編集ツールの画面３０は、コンピュータシステムの表示部に表示され、設計者（又は、操作者）がコンピュータシステムの入力部から情報及び指示を入力することで関節グラフ構造の作成及び編集を可能とするＧＵＩ（Graphical User Interface）を提供する。図１６に示す例では、入力部から操作可能である、画面３０内にシミュレーションの開始を指示するためのシミュレーションボタン３１、関節間のリンクを書くペンツール３２、及び関節間の回転パターン（即ち、回転量、回転方向）の定義を決定する決定部３３が編集ツールの画面３０に含まれる。又、編集ツールの画面３０には、作成中又は編集中の関節グラフを表示する関節グラフ表示部３４も含まれる。
【００５３】
図１７に示す処理は、コンピュータシステムのプロセッサが記憶部に格納された編集ツールのプログラムを実行することにより実現される。図１７において、シミュレーションボタン３１が操作されると、ステップＳ３１では関節グラフ構造の作成手順が実行され、ステップＳ３２では作成中の関節グラフ上でのシミュレーション手順が実行される。ステップＳ３３では、関節グラフ構造の作成終了判定手順が実行され、ステップＳ３３の判定結果がＮＯであると処理はステップＳ３１へ戻り、判定結果がＹＥＳであると処理はステップＳ３４へ進む。ステップＳ３４では、関節グラフ構造設定書き出し手順が実行され、作成された関節グラフが表示部の画面３０内の関節グラフ表示部３４に表示されると共に、記憶部に設定され格納される。
【００５４】
ステップＳ３１の関節グラフ構造の作成手順は、入力部によりペンツール３２を操作することでロボット１の関節間のリンクの定義を行う定義手順３１１、入力部により決定部３３を操作することでリンク上の回転パターンの定義を決定して記憶部に設定する回転パターン設定手順３１２、及び入力部のテンキー等の操作によりリンク上の重みを入力して記憶部に設定する重み設定手順３１３を含む。
【００５５】
ステップＳ３２のシミュレーション手順は、入力部からの操作により動作関節とするノードを関節グラフ表示部３４に表示された関節グラフから選択する選択手順３２１、及び従属関節が動作関節から受ける影響をリアルタイムに計算して関節グラフ表示部３４に表示された関節グラフ上に表示する表示手順３２２を含む。
【００５６】
本実施例によれば、比較的簡単な制御でロボットに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能となる。又、編集ツールを用いることで、設計者は比較的簡単、且つ、容易に関節グラフの作成及び編集を行うことができる。
【００５７】
（第２実施例）
開示の動作制御方法、ロボット及びプログラムは、多関節で構成されるロボットを含むインタラクティブデバイスに限らず、多関節で構成されるＣＧアニメーションキャラクタの動き制御にも適用可能である。
【００５８】
アニメーション作成ツールによりＣＧアニメーションキャラクタを作成する場合、ロボットの場合と同様にアニメーションキャラクタの関節を動かすことで、画面上でアニメーションキャラクタに各種動作を行わせることができる。しかし、アニメーション作成ツールにより動かしたい動作関節のみを動かしたのでは、動作関節に影響されて微小な動作を行う他の従属関節の動きが生成されない。そこで、本発明の第２実施例では、上記第１実施例におけるロボットの場合と同様に、アニメーションキャラクタのモーション（又は、動作パターン）で定義された動作関節に加え、動作関節に影響されて微小な動作を行う他の従属関節の動きを自動的に生成する。これにより、比較的簡単な制御でアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能となる。
【００５９】
図１８は、ＣＧアニメーションキャラクタの一例を示す図である。図１８において、３００は多関節を有する人間型のＣＧアニメーションキャラクタを示し、４００は多関節を有する犬型のＣＧアニメーションキャラクタを示す。開示の動作制御方法をＣＧアニメーションキャラクタ３００又は４００の動き制御に適用することで、円滑な動きのＣＧアニメーションキャラクタ３００又は４００を自動生成することが可能となる。
【００６０】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
複数の可動部を有するロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順
をコンピュータで実行し、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、動作制御方法。
（付記２）
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、付記１記載の動作制御方法。
（付記３）
前記動作パターンは、各動作可動部の回転量及び回転方向を指定することを特徴とする、付記１又は２記載の動作制御方法。
（付記４）
可動部間の影響の度合いを前記グラフ構造上の熱拡散計算により求める計算手順を更に前記コンピュータで実行することを特徴とする、付記１乃至３のいずれか１項記載の動作制御方法。
【数１５】
0005699648.tif 000016
【数１６】
0005699648.tif 000017
（付記７）
複数の可動部を有するロボットであって、
可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフを格納する記憶部と、
動かす動作可動部で時系列に定義された動作パターンを、前記記憶部に格納された前記グラフに基づいて更新する計算部と、
前記計算部により更新された動作パターンに基づいて前記複数の可動部を制御する指令部を備え、
前記計算部は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、ロボット。
（付記８）
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、付記７記載のロボット。
（付記９）
前記動作パターンは、各動作可動部の回転量及び回転方向を指定することを特徴とする、付記７又は８記載のロボット。
（付記１０）
前記計算部は、可動部間の影響の度合いを前記グラフ構造上の熱拡散計算により求めることを特徴とする、付記７乃至９のいずれか１項記載のロボット。
【数１７】
0005699648.tif 000018
【数１８】
0005699648.tif 000019
（付記１３）
コンピュータに、複数の可動部を有するロボット又はアニメーションキャラクタの動作を制御させるプログラムであって、
前記ロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順
をコンピュータに実行させ、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、プログラム。
（付記１４）
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、付記１３記載のプログラム。
（付記１５）
前記動作パターンは、各動作可動部の回転量及び回転方向を指定することを特徴とする、付記１３又は１４記載のプログラム。
（付記１６）
可動部間の影響の度合いを前記グラフ構造上の熱拡散計算により求める計算手順を更に前記コンピュータに実行させることを特徴とする、付記１３乃至１５のいずれか１項記載のプログラム。
【数１９】
0005699648.tif 000020
【数２０】
0005699648.tif 000021
【符号の説明】
【００６１】
１      ロボット
１１      処理部
１２      記憶部
１３      可動部群
１１１      モーション読み込み部
１１２      熱分布計算部
１１３      動き計算部
１１４      モータ指令部
１２１      モーションＤＢ
１２２      関節グラフ
１２３      モータコマンドテーブル
１２４      熱分布
【図１】
0005699648.tif 000024
【図２】
0005699648.tif 000025
【図３】
0005699648.tif 000026
【図４】
0005699648.tif 000027
【図５】
0005699648.tif 000028
【図６】
0005699648.tif 000029
【図７】
0005699648.tif 000030
【図８】
0005699648.tif 000031
【図９】
0005699648.tif 000032
【図１０】
0005699648.tif 000033
【図１１】
0005699648.tif 000034
【図１２】
0005699648.tif 000035
【図１３】
0005699648.tif 000036
【図１４】
0005699648.tif 000037
【図１５】
0005699648.tif 000038
【図１６】
0005699648.tif 000039
【図１７】
0005699648.tif 000040
【図１８】
0005699648.tif 000041