動作制御方法、ロボット及びプログラム
【課題】動作制御方法、ロボット及びプログラムにおいて、比較的簡単な制御でロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることを可能にすることを目的とする。
【解決手段】複数の可動部を有するロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新し、更新された動作パターンに基づいて複数の可動部を制御し、前記更新は、グラフに基づいて動作可動部に加え、動作可動部に影響されて動作する従属可動部の動作を自動的に生成するように構成する。
【解決手段】複数の可動部を有するロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新し、更新された動作パターンに基づいて複数の可動部を制御し、前記更新は、グラフに基づいて動作可動部に加え、動作可動部に影響されて動作する従属可動部の動作を自動的に生成するように構成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット等のインタラクティブデバイスに設けられたモータ等の駆動部、或いは、コンピュータグラフィック(CG:Computer Graphic)アニメーションキャラクタの動作を制御する動作制御方法、ロボット及びプログラムに関する。
【背景技術】
【0002】
介護ロボット、教育ロボット等を含むコミュニケーションロボットは、人間とのインタラクションを行う機能を有する。このようなコミュニケーションロボットは、人間から見て生き物らしい自然な動作、即ち、機械的ではない動作をすることで、インタラクションをより円滑にすることができる。
【0003】
人間又は動物の体の特定部分の関節が大きく動いた場合、この関節と直接繋がっていない他の関節も、大きく動いた関節と連動して微小に動く。これは、関節が筋肉や皮膚に引っ張られたり、体の重心と姿勢が変化すると関節が受ける力の方向が変わること等による。又、このような他の関節と連動した動きの影響は、連鎖的に他の関節へも複雑に伝播していくものと考えられる。他の関節と連動した動きの影響で生じる関節の微小な動きは、例えばアームの先端を目標位置まで正確に移動させることが目的の産業用ロボット等では不要な動きであるが、人間との親和性を重視したコミュニケーションロボットにおいては、生き物らしい自然な動作を演出するために必要な動きである。
【0004】
通常、コミュニケーションロボットは、各関節の動きを定義したモーション(又は、動作パターン)を予め作成しておき、コミュニケーションロボットが動作中は随時これらのモーションに従って動くことで「くしゃみ」や「手を振って喜ぶ」等の様々な動作又は表現を行う。しかし、従来のコミュニケーションロボットでは、これらのモーションにおいてある関節の動きは他の関節に伝わることがないため、モーションが定義されていない関節はモーションを実行中完全に停止(又は、静止)した状態にある。このように、モーションが定義されている関節のみが動くので、コミュニケーションロボットの動きが機械的になってしまう。例えば、コミュニケーションロボットが口を開けて首を大きく縦に振りながら「くしゃみ」をするモーションを予め定義しても、「くしゃみ」をする時に同時に腕や脚も微小に動かなければ、人間から見ると生き物として違和感のある不自然な動作になってしまう。
【0005】
コミュニケーションロボットの不自然な動作に対処するため、現状では設計者が、関節間の影響による各関節の微小な動きを推定しながらモーションを作成している。例えば、「くしゃみ」のモーションを作成する際には、首の動きにつられて腕が動き、更に腕が動くと脚も微妙に動くといった各関節の動きを作成している。しかし、このようなモーションの作成には多大な労力と時間を要する。又、自然な動作をする1つのモーションを作成したとしても、連続して同じモーションを実行した場合等には、作成した微妙な関節の動きまで同じ動作が繰り返されるため、人間が見ると不自然な印象を受けてしまう。
【0006】
ロボットの動作を補完する技術としては、例えばロボットの骨格リンクデータを保持し、ある部位の動きから運動学的に他の部位の動きを導く各種手法が提案されている。又、ロボットが歩行中に受ける重力等の力を計算することにより、実質的に下肢部分を自由に揺動させる手法(例えば、特許文献1)等も提案されている。しかし、これらの提案手法は、上記の如き筋肉や皮膚の張り、或いは、重心や姿勢の変化、或いは、その他多くの要因による微妙な動作を考慮したものではない。
【0007】
筋肉や皮膚の張り等を考慮した、精密な体のモデルを作成して物理的なシミュレーションを行えば、上記の如き微妙な動作をある程度は再現できる可能性がある。しかし、このようなモデルの作成やシミュレーションは非常に困難であり、仮にそのようなモデルを作成できたとしても、このモデルを体の構造が異なる他のロボットには適用できない可能性が高い。
【0008】
一方、アニメーション作成ツールによりCGアニメーションキャラクタを作成する場合、ロボットの場合と同様にアニメーションキャラクタの関節を動かすことで、画面上でアニメーションキャラクタに各種動作を行わせることができる。しかし、アニメーション作成ツールにより動かしたい関節のみを動かしたのでは、動く関節に影響されて微小な動作を行う他の関節の動きが生成されないため、ロボットの場合と同様にアニメーションキャラクタの動作が人間から見ると違和感のある不自然な動作になってしまう。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特表2004−531400号公報
【特許文献2】特開2007−125629号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
従来の動作制御方法では、ロボット又はアニメーションキャラクタの関節を動かす場合、モーション(又は、動作パターン)で定義された関節のみが動き他の関節は静止した状態にあるため、ロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることは難しいという問題があった。
【0011】
そこで、本発明は、比較的簡単な制御でロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能な動作制御方法、ロボット及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の一観点によれば、複数の可動部を有するロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順をコンピュータで実行し、前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする動作制御方法が提供される。
【0013】
本発明の一観点によれば、複数の可動部を有するロボットであって、可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフを格納する記憶部と、動かす動作可動部で時系列に定義された動作パターンを、前記記憶部に格納された前記グラフに基づいて更新する計算部と、前記計算部により更新された動作パターンに基づいて前記複数の可動部を制御する指令部を備え、前記計算部は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とするロボットが提供される。
【0014】
本発明の一観点によれば、コンピュータに、複数の可動部を有するロボット又はアニメーションキャラクタの動作を制御させるプログラムであって、前記ロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順をコンピュータに実行させ、前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とするプログラムが提供される。
【発明の効果】
【0015】
開示の動作制御方法、ロボット及びプログラムによれば、比較的簡単な制御でロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能となる。
【図面の簡単な説明】
【0016】
【図1】本発明の第1実施例におけるインタラクティブデバイスの一例を示すブロック図である。
【図2】モータコマンドテーブルの一例を説明する図である。
【図3】関節グラフと重みの一例を説明する図である。
【図4】n×n行列の一例を示す図である。
【図5】n×n行列より求めた行列の一例を示す図である。
【図6】従属関節が動作関節より受ける影響量を説明する図である。
【図7】従属関節の動作量を決定する処理を説明するフローチャートである。
【図8】更新されたコマンドテーブルの一例を説明する図である。
【図9】1サイクル当たりの処理を説明するフローチャートである。
【図10】1サイクル経過後の、更新されたコマンドテーブルの一例を説明する図である。
【図11】従属関節が動作関節から受ける影響量を説明する図である。
【図12】更新されたコマンドテーブルの一例を説明する図である。
【図13】図4に示すn×n行列の重みを考慮して生成される行列が、パラメータの違いによってどのように異なるのかを説明する図である。
【図14】時間による従属関節への拡散熱量の違いを説明する図である。
【図15】処理部全体の処理を説明するフローチャートである。
【図16】編集ツールの画面の一例を示す図である。
【図17】編集ツールの処理の一例を説明するフローチャートである。
【図18】CGアニメーションキャラクタの一例を示す図である。
【発明を実施するための形態】
【0017】
開示の動作制御方法、ロボット及びプログラムでは、ロボット又はアニメーションキャラクタのモーション(又は、動作パターン)で定義された動作関節に加え、動作関節に影響されて微小な動作を行う他の従属関節の動きを自動的に生成することで、比較的簡単な制御でロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせる。
【0018】
例えば、直接動かされていない従属関節を、直接動かされている動作関節の動きに応じて従属的に動かすことで、精密な体のモデルを作成して物理的なシミュレーションを行うのではなく、例えば設計者が自らの勘や経験に基づいて定義した関節グラフ構造を利用することで、ロボット又はアニメーションキャラクタに円滑な動作を行わせる。これにより、複数の関節を有するロボット又はアニメーションキャラクタであれば、基本的にはどのような構造のロボット又はアニメーションキャラクタであっても、比較的容易、且つ、比較的短時間に適切な動作制御が行える。
【0019】
又、関節間の影響の度合いを関節グラフ構造上の熱拡散計算により求めることで、関節間の連鎖的及び相互的な影響を考慮した動作制御が可能となる。この結果、設計者が関節グラフ構造を作成する際の直感を自然に反映させたロボット又はアニメーションキャラクタの動きを生成することができる。ロボット又はアニメーションキャラクタの円滑な動作を実現することで、例えば人間との親和性を向上して生き物らしい自然な動作を演出することもできる。
【0020】
以下に、開示の動作制御方法、ロボット及びプログラムの各実施例を図面と共に説明する。
【実施例】
【0021】
(第1実施例)
図1は、本発明の第1実施例におけるインタラクティブデバイスの一例を示すブロック図である。この例では、インタラクティブデバイスはコミュニケーションロボットにより形成されている。
【0022】
図1に示すコミュニケーションロボット(以下、単にロボットと言う)1は、処理部11、記憶部12、及び可動部群13を有する。処理部11は、CPU(Central Processing Unit)等のプロセッサで形成されている。記憶部12は、半導体記憶装置、光記憶装置、光磁気記憶装置、磁気記憶装置等で形成されており、複数の記憶装置、或いは、複数種類の記憶装置で形成されていても良い。半導体記憶装置には、RAM(Random Access Memory)、ROM(Read Only Memory)、メモリカード等が含まれる。光、光磁気、及び磁気記憶装置には、ディスク装置等が含まれる。記憶部12は、可搬型の記憶装置を含んでも良い。可動部群13は、ロボット1に設けられている複数の関節(図示せず)に相当する複数の可動部を有する。各可動部は、関節と、関節を駆動するモータ等の駆動部を有する。尚、以下の説明における「関節」とは、ロボット1のうち、例えば人間の体の関節に相当する部分に限定されず、可動部分を総称して指すものとする。
【0023】
処理部11は、モーション読み込み部111、熱分布計算部112、動き計算部113、及びモータ指令部114を有する。記憶部12は、モーションデータベース(DB:Data-Base)121、関節グラフ122、モータコマンドテーブル123、熱分布124、及び処理部11に動作制御処理を実行させるプログラム(図示せず)を格納している。処理部11は、記憶部12に格納されているプログラムを実行することで、モーション読み込み部111、熱分布計算部112、動き計算部113、及びモータ指令部114の夫々の機能を含むロボット1の各種機能を実現する。つまり、記憶部12に格納されているプログラムには、処理部11に動作制御処理を含むロボット1の処理を実行させる各手順が含まれる。プログラムを格納したコンピュータ読み取り可能な記憶媒体は、この例では記憶部12を形成する少なくとも1つの記憶装置で形成可能である。
【0024】
(モータコマンドテーブル)
この例では、ロボット1は、時間軸上で可動部群13内の関節を駆動する各モータの回転角度を時系列で指定するモーションデータ(又は、動作パターンデータ)に基づいて動作することにより、様々な動作又は表現を行う。モーションデータは、ロボット1の動作実行時にモーション読み込み部111により各モータへの具体的な指示に逐次変換され、例えば図2に示すようなモータコマンドテーブル123に保持され管理される。図2は、モータコマンドテーブル123の一例を説明する図である。図2に示す例では、「口」、「首(tilt)」、「首(roll)」に対してモータの回転量の指令値が格納されている。首(pan)、首(tilt)、首(roll)は、互いに直交する3軸を中心としたロボット1の首の回転角度(パン、チルト、ロール)を示す。尚、関節は、図2に示す右耳、左耳、右まぶた、左まぶた、口、首(pan)、首(tilt)、首(roll)、右肩、左肩、右腕、左腕、右股、左股、右膝、及び左膝に限定されないことは、言うまでもない。
【0025】
図2中、横軸で示す時刻の単位は、ロボット1の動作周期(例えば、0を含まない1000ミリ秒以下の値)であり、四辺形で示された各フィールド内の符号付きの数値が、対応するモータの回転量の指令値(°)を表す。ロボット1が動作中は、モーション読み込み部111によりモーションDB121から順次モーションデータが読み出され、記憶部12内のモータコマンドテーブル123にコマンドが割り当てられる。例えば、複数のモーションデータが並行してモータコマンドテーブル123に割り当てられる。モータコマンドテーブル123の内容は、時間の経過と共に図2中矢印で示すように左側にずれて(即ち、スライドして)、時刻T0〜T1にスライドしてきたコマンドが対応するモータにモータ指定部114を介して送信される。このとき、時刻T0〜T1のフィールド内に数値が設定されている関節は、モーションデータにより動作が指定されている動作関節である。一方、フィールド内が空白の関節は、モーションデータにより動作が指定されていない関節であり、従来であれば停止している。この例では、従来であれば停止しているこれらの関節を従属関節と定義して、動作関節に従属させた微小な動きを生成する。従属関節と定義された関節に対しては、例えばモータコマンドテーブル123の時刻T0〜T1のフィールドに新たにコマンドを割り付ける。
【0026】
(関節グラフ)
先ず、ロボット1の複数の関節のうち、設計者により「関連」があると判断された関節同士をリンクで結んだ関節グラフ122を記憶部12に保持しておく。ここで、「関連」とは、例えば以下のような理由R1,R2により、ある関節の動きが他の関節に伝わることを言う。
R1:他の関節が筋肉や皮膚の動きに引っ張られる。
R2:体の重心と姿勢が変化することにより、各関節が受ける力の方向が変わる。
【0027】
従って、関節グラフ122は、ロボット1の骨格的なリンク構造を定義したものではなく、設計者が上記の如き関節間の動きの影響を自由に想像、考慮して作成されたものである。つまり、関節グラフ122は、設計者が理由R1,R2等の関節間の動きの影響を考慮した上で任意に決定した条件に基づいて作成され、関節間の動きの影響に応じて関節同士をリンクで結んだものである。
【0028】
(関節グラフのリンク上の重み)
関節グラフ122のリンクには、関節間の影響の度合いが関節間の重みとして付加(又は、設定)される。例えば、ロボット1が口を大きく開けた時、ロボット1が犬型の場合は耳も口の動きに連動して動くと予想できるが、その移動量は僅かであると仮定して口と耳とのリンク上の重みを小さく設定する。一方、肩の関節が大きく動いた時は、腕の関節も大きく動くと仮定し、肩と腕を結んでいるリンクの重みを比較的大きめに設定する。尚、この重みの付けの方法も、ロボット1の動きの個性として設計者が自由に設定可能である。
【0029】
図3は、関節グラフ122とリンクに付加された重みの一例を説明する図である。関節グラフ122とそのリンクに付加された重みは、設計者により任意に定義可能である。図3中、○印は関節を示し、○印内には「右耳」、「口」等といった関節の名称(又は、部位)が示されている。リンクは○印と○印を接続する直線で表されており、直線の近傍に示されている数値はリンクに付加された重みを表す。
【0030】
【数1】
【0031】
【数2】
【0032】
【数3】
【0033】
【数4】
【0034】
【数5】
【0035】
【数6】
【0036】
図6に示す関節グラフ122では、例えば右肩が首(tilt)と直結しているが、首(pan)と、首(roll) 経由でも首(tilt) に繋がっている。又、首(pan)及び首 (roll)は夫々首(tilt)に直結しているが、左肩経由でも首(tilt)に夫々異なる重み付きのリンクで繋がっている。ある関節が他の関節から受ける影響を考慮する上で、このような関節の相互接続による影響も考慮しても良い。実際の生き物も、関節同士は連鎖的に影響し合うものと考えるのが自然であるが、熱分布計算から求められる図6に示す関節グラフ122の影響量は、このような関節間の複数経路、及び各経路(即ち、リンク)に付加された異なる重み(即ち、図2で示した重み)を全て含んで計算した結果である。従って、関節グラフ122の影響量は、直結している関節間との重みのみにより定まる値ではない。
【0037】
又、図6において、○印で表される関節を繋ぐ直線のうち、太線は同じ関節から延びる複数のリンクのうち影響量とリンク上の重みの積が最大のリンクを示す。各従属関節の回転方向は、この太線で示すリンクで接続された先の関節と、そのリンクに設定された動作パターンから決まる。
【0038】
【数7】
【0039】
【数8】
【0040】
実際には、図7の如き処理、即ち、式(2)を用いた動作量の計算が動作関節の数分だけ行われた後に加算される。尚、上記の例では、首(tilt)だけが動作関節である。
【0041】
【数9】
【0042】
モータ指令部114からモータへの指令は、図8に示す更新後のコマンドテーブル123の時刻T0〜T1にあるフィールド分が送信される。このようにして、ロボット1の動作の1サイクル当たりの処理が行われる。
【0043】
【数10】
【0044】
尚、1サイクル経過後は、コマンドテーブル123の内容が1つ左にスライドし、同様の処理が繰り返され、図8に示すコマンドテーブル123は1サイクル後に図10に示すように更新される。図10は、1サイクル経過後の、更新されたコマンドテーブル123の一例を説明する図である。図10中、図8と同一部分には同一符号を付し、その説明は省略する。
【0045】
【数11】
【0046】
この結果、図9のフローチャートに従って各従属関節の動作量を、夫々の動作関節からの影響量を足し合わせて決定すると、図10に示すコマンドテーブル123は図12に示すように更新される。図12は、更新されたコマンドテーブル123の一例を説明する図である。図12中、図10と同一部分には同一符号を付し、その説明は省略する。
【0047】
【数12】
【0048】
【数13】
【0049】
図15は、処理部11全体の処理を説明するフローチャートである。図15において、ステップS21では、モーション読み込み部111が記憶部12内のモーションDB121からモーションを読み込む。ステップS22では、モーション読み込み部111が読み込んだモーションを各モータへの具体的な指示に逐次変換して記憶部12内のモータコマンドテーブル123に割り当てて保持する。ステップS23では、動き計算部113が記憶部12内に既に格納されている熱分布124に基づいて従属関節の動きを計算し、計算結果に基づいてモータコマンドテーブル123を例えば図8に示すように更新する。ステップS24では、モータ指令部114が更新されたモータコマンドテーブル123に基づいて可動部群13内の該当するモータを制御、即ち、作動させる。
【0050】
【数14】
【0051】
上記の如く、この例において定義する関節グラフ構造(即ち、関節間のリンクの仕方、重みの付け方、回転パターンの決め方)は、ロボット1の動きの個性として、ロボット1が夫々固有の物を持ち、又、動作モードに応じて任意にその構造を変更可能である。このため、設計者が直感的、且つ、容易に関節グラフ構造を作成し、編集可能とする編集ツールを用いても良い。図16は、編集ツールの画面の一例を示す図であり、図17は、編集ツールの処理の一例を説明するフローチャートである。編集ツールは、プロセッサ、記憶部、キーボード等の入力部、及び表示部を備えた汎用のコンピュータシステム(図示せず)に搭載される。
【0052】
図16に示す編集ツールの画面30は、コンピュータシステムの表示部に表示され、設計者(又は、操作者)がコンピュータシステムの入力部から情報及び指示を入力することで関節グラフ構造の作成及び編集を可能とするGUI(Graphical User Interface)を提供する。図16に示す例では、入力部から操作可能である、画面30内にシミュレーションの開始を指示するためのシミュレーションボタン31、関節間のリンクを書くペンツール32、及び関節間の回転パターン(即ち、回転量、回転方向)の定義を決定する決定部33が編集ツールの画面30に含まれる。又、編集ツールの画面30には、作成中又は編集中の関節グラフを表示する関節グラフ表示部34も含まれる。
【0053】
図17に示す処理は、コンピュータシステムのプロセッサが記憶部に格納された編集ツールのプログラムを実行することにより実現される。図17において、シミュレーションボタン31が操作されると、ステップS31では関節グラフ構造の作成手順が実行され、ステップS32では作成中の関節グラフ上でのシミュレーション手順が実行される。ステップS33では、関節グラフ構造の作成終了判定手順が実行され、ステップS33の判定結果がNOであると処理はステップS31へ戻り、判定結果がYESであると処理はステップS34へ進む。ステップS34では、関節グラフ構造設定書き出し手順が実行され、作成された関節グラフが表示部の画面30内の関節グラフ表示部34に表示されると共に、記憶部に設定され格納される。
【0054】
ステップS31の関節グラフ構造の作成手順は、入力部によりペンツール32を操作することでロボット1の関節間のリンクの定義を行う定義手順311、入力部により決定部33を操作することでリンク上の回転パターンの定義を決定して記憶部に設定する回転パターン設定手順312、及び入力部のテンキー等の操作によりリンク上の重みを入力して記憶部に設定する重み設定手順313を含む。
【0055】
ステップS32のシミュレーション手順は、入力部からの操作により動作関節とするノードを関節グラフ表示部34に表示された関節グラフから選択する選択手順321、及び従属関節が動作関節から受ける影響をリアルタイムに計算して関節グラフ表示部34に表示された関節グラフ上に表示する表示手順322を含む。
【0056】
本実施例によれば、比較的簡単な制御でロボットに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能となる。又、編集ツールを用いることで、設計者は比較的簡単、且つ、容易に関節グラフの作成及び編集を行うことができる。
【0057】
(第2実施例)
開示の動作制御方法、ロボット及びプログラムは、多関節で構成されるロボットを含むインタラクティブデバイスに限らず、多関節で構成されるCGアニメーションキャラクタの動き制御にも適用可能である。
【0058】
アニメーション作成ツールによりCGアニメーションキャラクタを作成する場合、ロボットの場合と同様にアニメーションキャラクタの関節を動かすことで、画面上でアニメーションキャラクタに各種動作を行わせることができる。しかし、アニメーション作成ツールにより動かしたい動作関節のみを動かしたのでは、動作関節に影響されて微小な動作を行う他の従属関節の動きが生成されない。そこで、本発明の第2実施例では、上記第1実施例におけるロボットの場合と同様に、アニメーションキャラクタのモーション(又は、動作パターン)で定義された動作関節に加え、動作関節に影響されて微小な動作を行う他の従属関節の動きを自動的に生成する。これにより、比較的簡単な制御でアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能となる。
【0059】
図18は、CGアニメーションキャラクタの一例を示す図である。図18において、300は多関節を有する人間型のCGアニメーションキャラクタを示し、400は多関節を有する犬型のCGアニメーションキャラクタを示す。開示の動作制御方法をCGアニメーションキャラクタ300又は400の動き制御に適用することで、円滑な動きのCGアニメーションキャラクタ300又は400を自動生成することが可能となる。
【0060】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
複数の可動部を有するロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順
をコンピュータで実行し、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、動作制御方法。
(付記2)
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、付記1記載の動作制御方法。
(付記3)
前記動作パターンは、各動作可動部の回転量及び回転方向を指定することを特徴とする、付記1又は2記載の動作制御方法。
(付記4)
可動部間の影響の度合いを前記グラフ構造上の熱拡散計算により求める計算手順を更に前記コンピュータで実行することを特徴とする、付記1乃至3のいずれか1項記載の動作制御方法。
【数15】
【数16】
(付記7)
複数の可動部を有するロボットであって、
可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフを格納する記憶部と、
動かす動作可動部で時系列に定義された動作パターンを、前記記憶部に格納された前記グラフに基づいて更新する計算部と、
前記計算部により更新された動作パターンに基づいて前記複数の可動部を制御する指令部を備え、
前記計算部は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、ロボット。
(付記8)
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、付記7記載のロボット。
(付記9)
前記動作パターンは、各動作可動部の回転量及び回転方向を指定することを特徴とする、付記7又は8記載のロボット。
(付記10)
前記計算部は、可動部間の影響の度合いを前記グラフ構造上の熱拡散計算により求めることを特徴とする、付記7乃至9のいずれか1項記載のロボット。
【数17】
【数18】
(付記13)
コンピュータに、複数の可動部を有するロボット又はアニメーションキャラクタの動作を制御させるプログラムであって、
前記ロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順
をコンピュータに実行させ、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、プログラム。
(付記14)
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、付記13記載のプログラム。
(付記15)
前記動作パターンは、各動作可動部の回転量及び回転方向を指定することを特徴とする、付記13又は14記載のプログラム。
(付記16)
可動部間の影響の度合いを前記グラフ構造上の熱拡散計算により求める計算手順を更に前記コンピュータに実行させることを特徴とする、付記13乃至15のいずれか1項記載のプログラム。
【数19】
【数20】
【符号の説明】
【0061】
1 ロボット
11 処理部
12 記憶部
13 可動部群
111 モーション読み込み部
112 熱分布計算部
113 動き計算部
114 モータ指令部
121 モーションDB
122 関節グラフ
123 モータコマンドテーブル
124 熱分布
【技術分野】
【0001】
本発明は、ロボット等のインタラクティブデバイスに設けられたモータ等の駆動部、或いは、コンピュータグラフィック(CG:Computer Graphic)アニメーションキャラクタの動作を制御する動作制御方法、ロボット及びプログラムに関する。
【背景技術】
【0002】
介護ロボット、教育ロボット等を含むコミュニケーションロボットは、人間とのインタラクションを行う機能を有する。このようなコミュニケーションロボットは、人間から見て生き物らしい自然な動作、即ち、機械的ではない動作をすることで、インタラクションをより円滑にすることができる。
【0003】
人間又は動物の体の特定部分の関節が大きく動いた場合、この関節と直接繋がっていない他の関節も、大きく動いた関節と連動して微小に動く。これは、関節が筋肉や皮膚に引っ張られたり、体の重心と姿勢が変化すると関節が受ける力の方向が変わること等による。又、このような他の関節と連動した動きの影響は、連鎖的に他の関節へも複雑に伝播していくものと考えられる。他の関節と連動した動きの影響で生じる関節の微小な動きは、例えばアームの先端を目標位置まで正確に移動させることが目的の産業用ロボット等では不要な動きであるが、人間との親和性を重視したコミュニケーションロボットにおいては、生き物らしい自然な動作を演出するために必要な動きである。
【0004】
通常、コミュニケーションロボットは、各関節の動きを定義したモーション(又は、動作パターン)を予め作成しておき、コミュニケーションロボットが動作中は随時これらのモーションに従って動くことで「くしゃみ」や「手を振って喜ぶ」等の様々な動作又は表現を行う。しかし、従来のコミュニケーションロボットでは、これらのモーションにおいてある関節の動きは他の関節に伝わることがないため、モーションが定義されていない関節はモーションを実行中完全に停止(又は、静止)した状態にある。このように、モーションが定義されている関節のみが動くので、コミュニケーションロボットの動きが機械的になってしまう。例えば、コミュニケーションロボットが口を開けて首を大きく縦に振りながら「くしゃみ」をするモーションを予め定義しても、「くしゃみ」をする時に同時に腕や脚も微小に動かなければ、人間から見ると生き物として違和感のある不自然な動作になってしまう。
【0005】
コミュニケーションロボットの不自然な動作に対処するため、現状では設計者が、関節間の影響による各関節の微小な動きを推定しながらモーションを作成している。例えば、「くしゃみ」のモーションを作成する際には、首の動きにつられて腕が動き、更に腕が動くと脚も微妙に動くといった各関節の動きを作成している。しかし、このようなモーションの作成には多大な労力と時間を要する。又、自然な動作をする1つのモーションを作成したとしても、連続して同じモーションを実行した場合等には、作成した微妙な関節の動きまで同じ動作が繰り返されるため、人間が見ると不自然な印象を受けてしまう。
【0006】
ロボットの動作を補完する技術としては、例えばロボットの骨格リンクデータを保持し、ある部位の動きから運動学的に他の部位の動きを導く各種手法が提案されている。又、ロボットが歩行中に受ける重力等の力を計算することにより、実質的に下肢部分を自由に揺動させる手法(例えば、特許文献1)等も提案されている。しかし、これらの提案手法は、上記の如き筋肉や皮膚の張り、或いは、重心や姿勢の変化、或いは、その他多くの要因による微妙な動作を考慮したものではない。
【0007】
筋肉や皮膚の張り等を考慮した、精密な体のモデルを作成して物理的なシミュレーションを行えば、上記の如き微妙な動作をある程度は再現できる可能性がある。しかし、このようなモデルの作成やシミュレーションは非常に困難であり、仮にそのようなモデルを作成できたとしても、このモデルを体の構造が異なる他のロボットには適用できない可能性が高い。
【0008】
一方、アニメーション作成ツールによりCGアニメーションキャラクタを作成する場合、ロボットの場合と同様にアニメーションキャラクタの関節を動かすことで、画面上でアニメーションキャラクタに各種動作を行わせることができる。しかし、アニメーション作成ツールにより動かしたい関節のみを動かしたのでは、動く関節に影響されて微小な動作を行う他の関節の動きが生成されないため、ロボットの場合と同様にアニメーションキャラクタの動作が人間から見ると違和感のある不自然な動作になってしまう。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特表2004−531400号公報
【特許文献2】特開2007−125629号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
従来の動作制御方法では、ロボット又はアニメーションキャラクタの関節を動かす場合、モーション(又は、動作パターン)で定義された関節のみが動き他の関節は静止した状態にあるため、ロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることは難しいという問題があった。
【0011】
そこで、本発明は、比較的簡単な制御でロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能な動作制御方法、ロボット及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の一観点によれば、複数の可動部を有するロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順をコンピュータで実行し、前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする動作制御方法が提供される。
【0013】
本発明の一観点によれば、複数の可動部を有するロボットであって、可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフを格納する記憶部と、動かす動作可動部で時系列に定義された動作パターンを、前記記憶部に格納された前記グラフに基づいて更新する計算部と、前記計算部により更新された動作パターンに基づいて前記複数の可動部を制御する指令部を備え、前記計算部は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とするロボットが提供される。
【0014】
本発明の一観点によれば、コンピュータに、複数の可動部を有するロボット又はアニメーションキャラクタの動作を制御させるプログラムであって、前記ロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順をコンピュータに実行させ、前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とするプログラムが提供される。
【発明の効果】
【0015】
開示の動作制御方法、ロボット及びプログラムによれば、比較的簡単な制御でロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能となる。
【図面の簡単な説明】
【0016】
【図1】本発明の第1実施例におけるインタラクティブデバイスの一例を示すブロック図である。
【図2】モータコマンドテーブルの一例を説明する図である。
【図3】関節グラフと重みの一例を説明する図である。
【図4】n×n行列の一例を示す図である。
【図5】n×n行列より求めた行列の一例を示す図である。
【図6】従属関節が動作関節より受ける影響量を説明する図である。
【図7】従属関節の動作量を決定する処理を説明するフローチャートである。
【図8】更新されたコマンドテーブルの一例を説明する図である。
【図9】1サイクル当たりの処理を説明するフローチャートである。
【図10】1サイクル経過後の、更新されたコマンドテーブルの一例を説明する図である。
【図11】従属関節が動作関節から受ける影響量を説明する図である。
【図12】更新されたコマンドテーブルの一例を説明する図である。
【図13】図4に示すn×n行列の重みを考慮して生成される行列が、パラメータの違いによってどのように異なるのかを説明する図である。
【図14】時間による従属関節への拡散熱量の違いを説明する図である。
【図15】処理部全体の処理を説明するフローチャートである。
【図16】編集ツールの画面の一例を示す図である。
【図17】編集ツールの処理の一例を説明するフローチャートである。
【図18】CGアニメーションキャラクタの一例を示す図である。
【発明を実施するための形態】
【0017】
開示の動作制御方法、ロボット及びプログラムでは、ロボット又はアニメーションキャラクタのモーション(又は、動作パターン)で定義された動作関節に加え、動作関節に影響されて微小な動作を行う他の従属関節の動きを自動的に生成することで、比較的簡単な制御でロボット又はアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせる。
【0018】
例えば、直接動かされていない従属関節を、直接動かされている動作関節の動きに応じて従属的に動かすことで、精密な体のモデルを作成して物理的なシミュレーションを行うのではなく、例えば設計者が自らの勘や経験に基づいて定義した関節グラフ構造を利用することで、ロボット又はアニメーションキャラクタに円滑な動作を行わせる。これにより、複数の関節を有するロボット又はアニメーションキャラクタであれば、基本的にはどのような構造のロボット又はアニメーションキャラクタであっても、比較的容易、且つ、比較的短時間に適切な動作制御が行える。
【0019】
又、関節間の影響の度合いを関節グラフ構造上の熱拡散計算により求めることで、関節間の連鎖的及び相互的な影響を考慮した動作制御が可能となる。この結果、設計者が関節グラフ構造を作成する際の直感を自然に反映させたロボット又はアニメーションキャラクタの動きを生成することができる。ロボット又はアニメーションキャラクタの円滑な動作を実現することで、例えば人間との親和性を向上して生き物らしい自然な動作を演出することもできる。
【0020】
以下に、開示の動作制御方法、ロボット及びプログラムの各実施例を図面と共に説明する。
【実施例】
【0021】
(第1実施例)
図1は、本発明の第1実施例におけるインタラクティブデバイスの一例を示すブロック図である。この例では、インタラクティブデバイスはコミュニケーションロボットにより形成されている。
【0022】
図1に示すコミュニケーションロボット(以下、単にロボットと言う)1は、処理部11、記憶部12、及び可動部群13を有する。処理部11は、CPU(Central Processing Unit)等のプロセッサで形成されている。記憶部12は、半導体記憶装置、光記憶装置、光磁気記憶装置、磁気記憶装置等で形成されており、複数の記憶装置、或いは、複数種類の記憶装置で形成されていても良い。半導体記憶装置には、RAM(Random Access Memory)、ROM(Read Only Memory)、メモリカード等が含まれる。光、光磁気、及び磁気記憶装置には、ディスク装置等が含まれる。記憶部12は、可搬型の記憶装置を含んでも良い。可動部群13は、ロボット1に設けられている複数の関節(図示せず)に相当する複数の可動部を有する。各可動部は、関節と、関節を駆動するモータ等の駆動部を有する。尚、以下の説明における「関節」とは、ロボット1のうち、例えば人間の体の関節に相当する部分に限定されず、可動部分を総称して指すものとする。
【0023】
処理部11は、モーション読み込み部111、熱分布計算部112、動き計算部113、及びモータ指令部114を有する。記憶部12は、モーションデータベース(DB:Data-Base)121、関節グラフ122、モータコマンドテーブル123、熱分布124、及び処理部11に動作制御処理を実行させるプログラム(図示せず)を格納している。処理部11は、記憶部12に格納されているプログラムを実行することで、モーション読み込み部111、熱分布計算部112、動き計算部113、及びモータ指令部114の夫々の機能を含むロボット1の各種機能を実現する。つまり、記憶部12に格納されているプログラムには、処理部11に動作制御処理を含むロボット1の処理を実行させる各手順が含まれる。プログラムを格納したコンピュータ読み取り可能な記憶媒体は、この例では記憶部12を形成する少なくとも1つの記憶装置で形成可能である。
【0024】
(モータコマンドテーブル)
この例では、ロボット1は、時間軸上で可動部群13内の関節を駆動する各モータの回転角度を時系列で指定するモーションデータ(又は、動作パターンデータ)に基づいて動作することにより、様々な動作又は表現を行う。モーションデータは、ロボット1の動作実行時にモーション読み込み部111により各モータへの具体的な指示に逐次変換され、例えば図2に示すようなモータコマンドテーブル123に保持され管理される。図2は、モータコマンドテーブル123の一例を説明する図である。図2に示す例では、「口」、「首(tilt)」、「首(roll)」に対してモータの回転量の指令値が格納されている。首(pan)、首(tilt)、首(roll)は、互いに直交する3軸を中心としたロボット1の首の回転角度(パン、チルト、ロール)を示す。尚、関節は、図2に示す右耳、左耳、右まぶた、左まぶた、口、首(pan)、首(tilt)、首(roll)、右肩、左肩、右腕、左腕、右股、左股、右膝、及び左膝に限定されないことは、言うまでもない。
【0025】
図2中、横軸で示す時刻の単位は、ロボット1の動作周期(例えば、0を含まない1000ミリ秒以下の値)であり、四辺形で示された各フィールド内の符号付きの数値が、対応するモータの回転量の指令値(°)を表す。ロボット1が動作中は、モーション読み込み部111によりモーションDB121から順次モーションデータが読み出され、記憶部12内のモータコマンドテーブル123にコマンドが割り当てられる。例えば、複数のモーションデータが並行してモータコマンドテーブル123に割り当てられる。モータコマンドテーブル123の内容は、時間の経過と共に図2中矢印で示すように左側にずれて(即ち、スライドして)、時刻T0〜T1にスライドしてきたコマンドが対応するモータにモータ指定部114を介して送信される。このとき、時刻T0〜T1のフィールド内に数値が設定されている関節は、モーションデータにより動作が指定されている動作関節である。一方、フィールド内が空白の関節は、モーションデータにより動作が指定されていない関節であり、従来であれば停止している。この例では、従来であれば停止しているこれらの関節を従属関節と定義して、動作関節に従属させた微小な動きを生成する。従属関節と定義された関節に対しては、例えばモータコマンドテーブル123の時刻T0〜T1のフィールドに新たにコマンドを割り付ける。
【0026】
(関節グラフ)
先ず、ロボット1の複数の関節のうち、設計者により「関連」があると判断された関節同士をリンクで結んだ関節グラフ122を記憶部12に保持しておく。ここで、「関連」とは、例えば以下のような理由R1,R2により、ある関節の動きが他の関節に伝わることを言う。
R1:他の関節が筋肉や皮膚の動きに引っ張られる。
R2:体の重心と姿勢が変化することにより、各関節が受ける力の方向が変わる。
【0027】
従って、関節グラフ122は、ロボット1の骨格的なリンク構造を定義したものではなく、設計者が上記の如き関節間の動きの影響を自由に想像、考慮して作成されたものである。つまり、関節グラフ122は、設計者が理由R1,R2等の関節間の動きの影響を考慮した上で任意に決定した条件に基づいて作成され、関節間の動きの影響に応じて関節同士をリンクで結んだものである。
【0028】
(関節グラフのリンク上の重み)
関節グラフ122のリンクには、関節間の影響の度合いが関節間の重みとして付加(又は、設定)される。例えば、ロボット1が口を大きく開けた時、ロボット1が犬型の場合は耳も口の動きに連動して動くと予想できるが、その移動量は僅かであると仮定して口と耳とのリンク上の重みを小さく設定する。一方、肩の関節が大きく動いた時は、腕の関節も大きく動くと仮定し、肩と腕を結んでいるリンクの重みを比較的大きめに設定する。尚、この重みの付けの方法も、ロボット1の動きの個性として設計者が自由に設定可能である。
【0029】
図3は、関節グラフ122とリンクに付加された重みの一例を説明する図である。関節グラフ122とそのリンクに付加された重みは、設計者により任意に定義可能である。図3中、○印は関節を示し、○印内には「右耳」、「口」等といった関節の名称(又は、部位)が示されている。リンクは○印と○印を接続する直線で表されており、直線の近傍に示されている数値はリンクに付加された重みを表す。
【0030】
【数1】
【0031】
【数2】
【0032】
【数3】
【0033】
【数4】
【0034】
【数5】
【0035】
【数6】
【0036】
図6に示す関節グラフ122では、例えば右肩が首(tilt)と直結しているが、首(pan)と、首(roll) 経由でも首(tilt) に繋がっている。又、首(pan)及び首 (roll)は夫々首(tilt)に直結しているが、左肩経由でも首(tilt)に夫々異なる重み付きのリンクで繋がっている。ある関節が他の関節から受ける影響を考慮する上で、このような関節の相互接続による影響も考慮しても良い。実際の生き物も、関節同士は連鎖的に影響し合うものと考えるのが自然であるが、熱分布計算から求められる図6に示す関節グラフ122の影響量は、このような関節間の複数経路、及び各経路(即ち、リンク)に付加された異なる重み(即ち、図2で示した重み)を全て含んで計算した結果である。従って、関節グラフ122の影響量は、直結している関節間との重みのみにより定まる値ではない。
【0037】
又、図6において、○印で表される関節を繋ぐ直線のうち、太線は同じ関節から延びる複数のリンクのうち影響量とリンク上の重みの積が最大のリンクを示す。各従属関節の回転方向は、この太線で示すリンクで接続された先の関節と、そのリンクに設定された動作パターンから決まる。
【0038】
【数7】
【0039】
【数8】
【0040】
実際には、図7の如き処理、即ち、式(2)を用いた動作量の計算が動作関節の数分だけ行われた後に加算される。尚、上記の例では、首(tilt)だけが動作関節である。
【0041】
【数9】
【0042】
モータ指令部114からモータへの指令は、図8に示す更新後のコマンドテーブル123の時刻T0〜T1にあるフィールド分が送信される。このようにして、ロボット1の動作の1サイクル当たりの処理が行われる。
【0043】
【数10】
【0044】
尚、1サイクル経過後は、コマンドテーブル123の内容が1つ左にスライドし、同様の処理が繰り返され、図8に示すコマンドテーブル123は1サイクル後に図10に示すように更新される。図10は、1サイクル経過後の、更新されたコマンドテーブル123の一例を説明する図である。図10中、図8と同一部分には同一符号を付し、その説明は省略する。
【0045】
【数11】
【0046】
この結果、図9のフローチャートに従って各従属関節の動作量を、夫々の動作関節からの影響量を足し合わせて決定すると、図10に示すコマンドテーブル123は図12に示すように更新される。図12は、更新されたコマンドテーブル123の一例を説明する図である。図12中、図10と同一部分には同一符号を付し、その説明は省略する。
【0047】
【数12】
【0048】
【数13】
【0049】
図15は、処理部11全体の処理を説明するフローチャートである。図15において、ステップS21では、モーション読み込み部111が記憶部12内のモーションDB121からモーションを読み込む。ステップS22では、モーション読み込み部111が読み込んだモーションを各モータへの具体的な指示に逐次変換して記憶部12内のモータコマンドテーブル123に割り当てて保持する。ステップS23では、動き計算部113が記憶部12内に既に格納されている熱分布124に基づいて従属関節の動きを計算し、計算結果に基づいてモータコマンドテーブル123を例えば図8に示すように更新する。ステップS24では、モータ指令部114が更新されたモータコマンドテーブル123に基づいて可動部群13内の該当するモータを制御、即ち、作動させる。
【0050】
【数14】
【0051】
上記の如く、この例において定義する関節グラフ構造(即ち、関節間のリンクの仕方、重みの付け方、回転パターンの決め方)は、ロボット1の動きの個性として、ロボット1が夫々固有の物を持ち、又、動作モードに応じて任意にその構造を変更可能である。このため、設計者が直感的、且つ、容易に関節グラフ構造を作成し、編集可能とする編集ツールを用いても良い。図16は、編集ツールの画面の一例を示す図であり、図17は、編集ツールの処理の一例を説明するフローチャートである。編集ツールは、プロセッサ、記憶部、キーボード等の入力部、及び表示部を備えた汎用のコンピュータシステム(図示せず)に搭載される。
【0052】
図16に示す編集ツールの画面30は、コンピュータシステムの表示部に表示され、設計者(又は、操作者)がコンピュータシステムの入力部から情報及び指示を入力することで関節グラフ構造の作成及び編集を可能とするGUI(Graphical User Interface)を提供する。図16に示す例では、入力部から操作可能である、画面30内にシミュレーションの開始を指示するためのシミュレーションボタン31、関節間のリンクを書くペンツール32、及び関節間の回転パターン(即ち、回転量、回転方向)の定義を決定する決定部33が編集ツールの画面30に含まれる。又、編集ツールの画面30には、作成中又は編集中の関節グラフを表示する関節グラフ表示部34も含まれる。
【0053】
図17に示す処理は、コンピュータシステムのプロセッサが記憶部に格納された編集ツールのプログラムを実行することにより実現される。図17において、シミュレーションボタン31が操作されると、ステップS31では関節グラフ構造の作成手順が実行され、ステップS32では作成中の関節グラフ上でのシミュレーション手順が実行される。ステップS33では、関節グラフ構造の作成終了判定手順が実行され、ステップS33の判定結果がNOであると処理はステップS31へ戻り、判定結果がYESであると処理はステップS34へ進む。ステップS34では、関節グラフ構造設定書き出し手順が実行され、作成された関節グラフが表示部の画面30内の関節グラフ表示部34に表示されると共に、記憶部に設定され格納される。
【0054】
ステップS31の関節グラフ構造の作成手順は、入力部によりペンツール32を操作することでロボット1の関節間のリンクの定義を行う定義手順311、入力部により決定部33を操作することでリンク上の回転パターンの定義を決定して記憶部に設定する回転パターン設定手順312、及び入力部のテンキー等の操作によりリンク上の重みを入力して記憶部に設定する重み設定手順313を含む。
【0055】
ステップS32のシミュレーション手順は、入力部からの操作により動作関節とするノードを関節グラフ表示部34に表示された関節グラフから選択する選択手順321、及び従属関節が動作関節から受ける影響をリアルタイムに計算して関節グラフ表示部34に表示された関節グラフ上に表示する表示手順322を含む。
【0056】
本実施例によれば、比較的簡単な制御でロボットに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能となる。又、編集ツールを用いることで、設計者は比較的簡単、且つ、容易に関節グラフの作成及び編集を行うことができる。
【0057】
(第2実施例)
開示の動作制御方法、ロボット及びプログラムは、多関節で構成されるロボットを含むインタラクティブデバイスに限らず、多関節で構成されるCGアニメーションキャラクタの動き制御にも適用可能である。
【0058】
アニメーション作成ツールによりCGアニメーションキャラクタを作成する場合、ロボットの場合と同様にアニメーションキャラクタの関節を動かすことで、画面上でアニメーションキャラクタに各種動作を行わせることができる。しかし、アニメーション作成ツールにより動かしたい動作関節のみを動かしたのでは、動作関節に影響されて微小な動作を行う他の従属関節の動きが生成されない。そこで、本発明の第2実施例では、上記第1実施例におけるロボットの場合と同様に、アニメーションキャラクタのモーション(又は、動作パターン)で定義された動作関節に加え、動作関節に影響されて微小な動作を行う他の従属関節の動きを自動的に生成する。これにより、比較的簡単な制御でアニメーションキャラクタに円滑な動作、例えば人間からみて違和感のない自然な動作を行わせることが可能となる。
【0059】
図18は、CGアニメーションキャラクタの一例を示す図である。図18において、300は多関節を有する人間型のCGアニメーションキャラクタを示し、400は多関節を有する犬型のCGアニメーションキャラクタを示す。開示の動作制御方法をCGアニメーションキャラクタ300又は400の動き制御に適用することで、円滑な動きのCGアニメーションキャラクタ300又は400を自動生成することが可能となる。
【0060】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
複数の可動部を有するロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順
をコンピュータで実行し、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、動作制御方法。
(付記2)
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、付記1記載の動作制御方法。
(付記3)
前記動作パターンは、各動作可動部の回転量及び回転方向を指定することを特徴とする、付記1又は2記載の動作制御方法。
(付記4)
可動部間の影響の度合いを前記グラフ構造上の熱拡散計算により求める計算手順を更に前記コンピュータで実行することを特徴とする、付記1乃至3のいずれか1項記載の動作制御方法。
【数15】
【数16】
(付記7)
複数の可動部を有するロボットであって、
可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフを格納する記憶部と、
動かす動作可動部で時系列に定義された動作パターンを、前記記憶部に格納された前記グラフに基づいて更新する計算部と、
前記計算部により更新された動作パターンに基づいて前記複数の可動部を制御する指令部を備え、
前記計算部は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、ロボット。
(付記8)
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、付記7記載のロボット。
(付記9)
前記動作パターンは、各動作可動部の回転量及び回転方向を指定することを特徴とする、付記7又は8記載のロボット。
(付記10)
前記計算部は、可動部間の影響の度合いを前記グラフ構造上の熱拡散計算により求めることを特徴とする、付記7乃至9のいずれか1項記載のロボット。
【数17】
【数18】
(付記13)
コンピュータに、複数の可動部を有するロボット又はアニメーションキャラクタの動作を制御させるプログラムであって、
前記ロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順
をコンピュータに実行させ、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、プログラム。
(付記14)
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、付記13記載のプログラム。
(付記15)
前記動作パターンは、各動作可動部の回転量及び回転方向を指定することを特徴とする、付記13又は14記載のプログラム。
(付記16)
可動部間の影響の度合いを前記グラフ構造上の熱拡散計算により求める計算手順を更に前記コンピュータに実行させることを特徴とする、付記13乃至15のいずれか1項記載のプログラム。
【数19】
【数20】
【符号の説明】
【0061】
1 ロボット
11 処理部
12 記憶部
13 可動部群
111 モーション読み込み部
112 熱分布計算部
113 動き計算部
114 モータ指令部
121 モーションDB
122 関節グラフ
123 モータコマンドテーブル
124 熱分布
【特許請求の範囲】
【請求項1】
コンピュータに、複数の可動部を有するロボット又はアニメーションキャラクタの動作を制御させるプログラムであって、
前記ロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順
をコンピュータに実行させ、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、プログラム。
【請求項2】
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、請求項1記載のプログラム。
【請求項3】
可動部間の影響の度合いを前記グラフ構造上の熱拡散計算により求める計算手順を更に前記コンピュータに実行させることを特徴とする、請求項1又は2記載のプログラム。
【請求項4】
複数の可動部を有するロボットであって、
可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフを格納する記憶部と、
動かす動作可動部で時系列に定義された動作パターンを、前記記憶部に格納された前記グラフに基づいて更新する計算部と、
前記計算部により更新された動作パターンに基づいて前記複数の可動部を制御する指令部を備え、
前記計算部は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、ロボット。
【請求項5】
複数の可動部を有するロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順
をコンピュータで実行し、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、動作制御方法。
【請求項1】
コンピュータに、複数の可動部を有するロボット又はアニメーションキャラクタの動作を制御させるプログラムであって、
前記ロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順
をコンピュータに実行させ、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、プログラム。
【請求項2】
前記グラフの各リンクには、可動部間の影響の度合いが重みとして付加されていることを特徴とする、請求項1記載のプログラム。
【請求項3】
可動部間の影響の度合いを前記グラフ構造上の熱拡散計算により求める計算手順を更に前記コンピュータに実行させることを特徴とする、請求項1又は2記載のプログラム。
【請求項4】
複数の可動部を有するロボットであって、
可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフを格納する記憶部と、
動かす動作可動部で時系列に定義された動作パターンを、前記記憶部に格納された前記グラフに基づいて更新する計算部と、
前記計算部により更新された動作パターンに基づいて前記複数の可動部を制御する指令部を備え、
前記計算部は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、ロボット。
【請求項5】
複数の可動部を有するロボット又はアニメーションキャラクタの動作が、動かす動作可動部で時系列に定義された動作パターンを、記憶部に格納されており可動部間の動きの影響に応じて可動部同士をリンクで結んだグラフに基づいて更新する更新手順と、
前記更新手順により更新された動作パターンに基づいて前記複数の可動部を制御する制御手順
をコンピュータで実行し、
前記更新手順は、前記グラフに基づいて前記動作可動部に加え、前記動作可動部に影響されて動作する従属可動部の動作を自動的に生成することを特徴とする、動作制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2012−157964(P2012−157964A)
【公開日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願番号】特願2011−21062(P2011−21062)
【出願日】平成23年2月2日(2011.2.2)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願日】平成23年2月2日(2011.2.2)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]