(57)【特許請求の範囲】
【請求項１】
２つの関節点及びこれらをつなぐ骨から成る骨格により構成される所定のコンピュータグラフィックス（ＣＧ）モデルの構成要素の座標を拍単位で時系列に指定するための第１の時系列情報を取得する取得部と、
前記第１の時系列情報に基づいて、前記所定のＣＧモデルの構造と所定のロボットの構造との差分を検出する制御部と、
前記差分に基づいて、前記第１の時系列情報を修正して前記所定のロボットの構成要素の座標を拍単位で時系列に指定するための第２の時系列情報を生成する生成部と、を有し、
前記生成部は、以下の（１）から（４）の少なくとも１つに従って動作することを特徴とするデータ変換装置：
（１）前記所定のロボットに存在せず前記所定のＣＧモデルに存在する骨に関する前記第１の時系列情報を無視する、
（２）前記所定のＣＧモデルに存在する骨を前記所定のロボットに存在する複数の骨で表現する場合、前記複数の骨の一端の骨に隣接する骨と前記複数の骨の他端の骨との成す角度が、前記所定のＣＧモデルに存在する骨の角度と等しくなるように、前記複数の骨に関する前記第２の時系列情報を生成する、
（３）前記所定のＣＧモデルに存在する骨を前記所定のロボットに存在する複数の骨で表現する場合、前記複数の骨の末端の位置を、前記所定のＣＧモデルに存在する骨の末端の位置と等しくなるように、前記複数の骨に関する前記第２の時系列情報を生成する、
（４）前記所定のロボットに存在する骨に限界速度が規定される場合、前記第１の時系列情報において裏拍に相当する少なくとも一部のタイミングの座標が優先的に維持されるように、前記第２の時系列情報を生成する。
【請求項２】
前記第１の時系列情報は、ＳＭＦ（Standard  MIDI  File）フォーマットに準拠するデータ構造に含まれることを特徴とする請求項１に記載のデータ変換装置。
【請求項３】
前記ＳＭＦフォーマットのチャンネルは、１つ又は複数の前記第１の時系列情報に対応することを特徴とする請求項２に記載のデータ変換装置。
【請求項４】
前記ＳＭＦフォーマットにおけるノートオン信号のノート番号及びベロシティは、ＣＧモデルの構成要素の座標に関する情報として用いられることを特徴とする請求項２又は請求項３に記載のデータ変換装置。
【請求項５】
前記ＳＭＦフォーマットにおけるデルタタイムは、ＣＧモデルの構成要素の座標が変化する拍の長さに関する情報として用いられることを特徴とする請求項２から請求項４のいずれかに記載のデータ変換装置。
【請求項６】
前記第１の時系列情報は、ＣＧモデルの骨の相対角度に関する情報を含むことを特徴とする請求項１から請求項５のいずれかに記載のデータ変換装置。
【請求項７】
前記第１の時系列情報は、ＣＧモデルの初期位置からの相対距離に関する情報及び／又はＣＧモデルの基準点の回転角度に関する情報を含むことを特徴とする請求項１から請求項６のいずれかに記載のデータ変換装置。
【請求項８】
前記生成部は、前記所定のロボットに存在せず前記所定のＣＧモデルに存在する骨に関する前記第１の時系列情報に基づいて、当該骨に近接し、前記所定のロボットに存在する骨に関する前記第２の時系列情報を生成することを特徴とする請求項１から請求項７のいずれかに記載のデータ変換装置。
【請求項９】
前記生成部は、前記所定のロボットに存在する骨に限界角度が規定される場合、前記第１の時系列情報における当該限界角度を超える角度を、当該限界角度として前記第２の時系列情報を生成することを特徴とする請求項１から請求項８のいずれかに記載のデータ変換装置。
【請求項１０】
前記生成部は、前記所定のロボットに存在する骨に限界角度が規定される場合、前記第１の時系列情報における当該限界角度を超える角度が、当該骨の角度及び当該骨の親である骨の角度の和と等しくなるように、前記第２の時系列情報を生成することを特徴とする請求項１から請求項９のいずれかに記載のデータ変換装置。
【請求項１１】
前記生成部は、前記所定のロボットに存在する骨に限界速度が規定される場合、当該限界速度を超えないように、前記第２の時系列情報を生成することを特徴とする請求項１から請求項１０のいずれかに記載のデータ変換装置。
【請求項１２】
複数の関節部を有するロボットであって、
２つの関節点及びこれらをつなぐ骨から成る骨格により構成される所定のコンピュータグラフィックス（ＣＧ）モデルの構成要素の座標を拍単位で時系列に指定するための第１の時系列情報を取得する取得部と、
前記第１の時系列情報に基づいて、前記所定のＣＧモデルの構造と前記ロボットの構造との差分を検出する制御部と、
前記差分に基づいて、前記第１の時系列情報を修正して前記ロボットの構成要素の座標を拍単位で時系列に指定するための第２の時系列情報を生成する生成部と、
前記第２の時系列情報に基づいて、前記複数の関節部の動作を制御する制御信号を生成する再生部と、
前記制御信号に基づいて、前記複数の関節部を駆動する駆動部と、を有し、
前記生成部は、以下の（１）から（４）の少なくとも１つに従って動作することを特徴とするロボット：
（１）前記ロボットに存在せず前記所定のＣＧモデルに存在する骨に関する前記第１の時系列情報を無視する、
（２）前記所定のＣＧモデルに存在する骨を前記ロボットに存在する複数の骨で表現する場合、前記複数の骨の一端の骨に隣接する骨と前記複数の骨の他端の骨との成す角度が、前記所定のＣＧモデルに存在する骨の角度と等しくなるように、前記複数の骨に関する前記第２の時系列情報を生成する、
（３）前記所定のＣＧモデルに存在する骨を前記ロボットに存在する複数の骨で表現する場合、前記複数の骨の末端の位置を、前記所定のＣＧモデルに存在する骨の末端の位置と等しくなるように、前記複数の骨に関する前記第２の時系列情報を生成する、
（４）前記ロボットに存在する骨に限界速度が規定される場合、前記第１の時系列情報において裏拍に相当する少なくとも一部のタイミングの座標が優先的に維持されるように、前記第２の時系列情報を生成する。
【請求項１３】
コンピュータに、
２つの関節点及びこれらをつなぐ骨から成る骨格により構成される所定のコンピュータグラフィックス（ＣＧ）モデルの構成要素の座標を拍単位で時系列に指定するための第１の時系列情報を取得するステップと、
前記第１の時系列情報に基づいて、前記所定のＣＧモデルの構造と所定のロボットの構造との差分を検出するステップと、
前記差分に基づいて、前記第１の時系列情報を修正して前記所定のロボットの構成要素の座標を拍単位で時系列に指定するための第２の時系列情報を生成するステップと、ここで、前記生成するステップは、以下の（１）から（４）の少なくとも１つに従って動作する、を実行させるためのプログラム：
（１）前記所定のロボットに存在せず前記所定のＣＧモデルに存在する骨に関する前記第１の時系列情報を無視する、
（２）前記所定のＣＧモデルに存在する骨を前記所定のロボットに存在する複数の骨で表現する場合、前記複数の骨の一端の骨に隣接する骨と前記複数の骨の他端の骨との成す角度が、前記所定のＣＧモデルに存在する骨の角度と等しくなるように、前記複数の骨に関する前記第２の時系列情報を生成する、
（３）前記所定のＣＧモデルに存在する骨を前記所定のロボットに存在する複数の骨で表現する場合、前記複数の骨の末端の位置を、前記所定のＣＧモデルに存在する骨の末端の位置と等しくなるように、前記複数の骨に関する前記第２の時系列情報を生成する、
（４）前記所定のロボットに存在する骨に限界速度が規定される場合、前記第１の時系列情報において裏拍に相当する少なくとも一部のタイミングの座標が優先的に維持されるように、前記第２の時系列情報を生成する。
【請求項１４】
２つの関節点及びこれらをつなぐ骨から成る骨格により構成される所定のコンピュータグラフィックス（ＣＧ）モデルの構成要素の座標を拍単位で時系列に指定するための第１の時系列情報を取得するステップと、
前記第１の時系列情報に基づいて、前記所定のＣＧモデルの構造と所定のロボットの構造との差分を検出するステップと、
前記差分に基づいて、前記第１の時系列情報を修正して前記所定のロボットの構成要素の座標を拍単位で時系列に指定するための第２の時系列情報を生成するステップと、を有し、
前記生成するステップは、以下の（１）から（４）の少なくとも１つに従って動作することを特徴とする情報処理方法：
（１）前記所定のロボットに存在せず前記所定のＣＧモデルに存在する骨に関する前記第１の時系列情報を無視する、
（２）前記所定のＣＧモデルに存在する骨を前記所定のロボットに存在する複数の骨で表現する場合、前記複数の骨の一端の骨に隣接する骨と前記複数の骨の他端の骨との成す角度が、前記所定のＣＧモデルに存在する骨の角度と等しくなるように、前記複数の骨に関する前記第２の時系列情報を生成する、
（３）前記所定のＣＧモデルに存在する骨を前記所定のロボットに存在する複数の骨で表現する場合、前記複数の骨の末端の位置を、前記所定のＣＧモデルに存在する骨の末端の位置と等しくなるように、前記複数の骨に関する前記第２の時系列情報を生成する、
（４）前記所定のロボットに存在する骨に限界速度が規定される場合、前記第１の時系列情報において裏拍に相当する少なくとも一部のタイミングの座標が優先的に維持されるように、前記第２の時系列情報を生成する。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの動作制御に関する。
【背景技術】
【０００２】
近年、産業分野だけではなく、医療、サービス業など他の業種や、一般家庭においてもロボットの導入が増加してきている。現代のロボットは、高い情報処理能力を持つものが存在することから、例えばロボットのモーションをソフトウェア制御する方法が提案されている（例えば、特許文献１）。これにより、例えば振付師や設計者が考案した動作（例えば、ダンス）を行わせるようなプログラムをロボットに実行させることで、ロボットに所望の動作を実現させることが可能となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４５９２２７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のロボット制御の動作プログラミングにおいては、設計者がロボットの各制御点（関節など）における位置や速度（間節角度、角速度など）を入力する必要がある。しかしながら、例えばロボットに楽曲に合わせて踊らせる動作を作成することを考えると、動きを楽曲に同期させるための微妙な調整が必要となってしまい、動作の作成が困難であるという課題がある。
【０００５】
本発明は、かかる点に鑑みてなされたものであり、ロボットの動作を楽曲と容易に同期させることができるデータ変換装置、ロボット、プログラム及び情報処理方法を提供することを目的の１つとする。
【課題を解決するための手段】
【０００６】
本発明の一態様に係るデータ変換装置は、２つの関節点及びこれらをつなぐ骨から成る骨格により構成される所定のコンピュータグラフィックス（ＣＧ）モデルの構成要素の座標を拍単位で時系列に指定するための第１の時系列情報を取得する取得部と、前記第１の時系列情報に基づいて、前記所定のＣＧモデルの構造と所定のロボットの構造との差分を検出する制御部と、前記差分に基づいて、前記第１の時系列情報を修正して前記所定のロボットの構成要素の座標を拍単位で時系列に指定するための第２の時系列情報を生成する生成部と、を有し、前記生成部は、以下の（１）から（４）の少なくとも１つに従って動作する：（１）前記所定のロボットに存在せず前記所定のＣＧモデルに存在する骨に関する前記第１の時系列情報を無視する、（２）前記所定のＣＧモデルに存在する骨を前記所定のロボットに存在する複数の骨で表現する場合、前記複数の骨の一端の骨に隣接する骨と前記複数の骨の他端の骨との成す角度が、前記所定のＣＧモデルに存在する骨の角度と等しくなるように、前記複数の骨に関する前記第２の時系列情報を生成する、（３）前記所定のＣＧモデルに存在する骨を前記所定のロボットに存在する複数の骨で表現する場合、前記複数の骨の末端の位置を、前記所定のＣＧモデルに存在する骨の末端の位置と等しくなるように、前記複数の骨に関する前記第２の時系列情報を生成する、（４）前記所定のロボットに存在する骨に限界速度が規定される場合、前記第１の時系列情報において裏拍に相当する少なくとも一部のタイミングの座標が優先的に維持されるように、前記第２の時系列情報を生成する。
【発明の効果】
【０００７】
本発明によれば、ロボットの動作を楽曲と容易に同期させることができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態に係る情報処理システムの概略構成の一例を示す図である。
【図２】本発明の一実施形態に係るロボットの一例を示す模式図である。
【図３】本発明の一実施形態に係るロボットの機能構成の一例を示す図である。
【図４】骨格構造（多関節構造）を有するスケルトンモデルの一例を示す図である。
【図５】ノートオン信号の概念説明図である。
【図６】本発明の一実施形態に係るデータ構造における各チャンネルのノートオン信号と、所定の構成要素との対応関係の一例を示す図である。
【図７】本発明の一実施形態に係るコリオデータフォーマットに準拠する具体的なデータ例を示す図である。
【図８】１拍の中における典型的な角度変化のパターンの一例を示す図である。
【図９】１拍の中における各８分の１拍を抽出する一例を示す図である。
【図１０】コリオデータフォーマットに準拠したモーションデータを用いてロボットが動作する場合のフローの一例を示す。
【図１１】保存されたコリオデータに基づく動作の一例を示す図である。
【図１２】リアルタイムでコリオデータに基づく動作の一例を示す図である。
【図１３】ＣＧモデルの骨格とロボットの骨格が異なる場合のバランス調整の一例を示す図である。
【図１４】ＣＧモデルの骨格とロボットの骨格が異なる場合のバランス調整の別の一例を示す図である。
【図１５】本発明の一実施形態に係る関節角度の制限の一例を示す図である。
【図１６】本発明の一実施形態に係るスピードの制限の一例を示す図である。
【図１７】本発明の一実施形態に係るスピードの制限の別の一例を示す図である。
【図１８】本発明の一実施形態に係るスピードの制限のさらに別の一例を示す図である。
【図１９】本発明の一実施形態に係るスピードの制限における、ボーンの経路計算の一例を示す図である。
【発明を実施するための形態】
【０００９】
本発明者らは、ロボットの動き制御に適したデータ構造を検討する上で、３次元コンピュータグラフィックス（３ＤＣＧ（Three  Dimensional  Computer  Graphics）、単にＣＧ（Computer  Graphics）などともいう）に着目した。３ＤＣＧでは、キャラクタ（ＣＧモデル）を表現するために、様々なデータ構造が提案されており、例えば、人間などの複雑な骨格構造を持つキャラクタに適したデータ構造が提案されている（例えば、特許第３３３７９３８号公報、特許第３３８０１５８号公報など）。このようなＣＧモデル及びデータ構造を用いて、ＣＧのアニメーション動画を作成することができる。
【００１０】
本発明者らは、まず、音データ（例えば、楽曲データ、音声データなど）と同期が容易にできるＣＧモデルの動きデータ（モーションデータ）のデータ構造を検討した。そして、当該データ構造に従って生成されたＣＧモデルのモーションを用いて、ロボットのモーションを生成することを着想した。この際、ＣＧモデルとロボットとの違いを考慮してモーションを修正する方法を見出した。これにより、ロボットのモーションを音データと容易に同期することができる。また、ＣＧモデルと共通のデータ構造に基づくため、ＣＧアニメーションとロボットの同期制御など、新たなサービスの展開が可能となる。
【００１１】
具体的には、本発明の一態様によるデータ構造によれば、フレーム（ＣＧ動画を構成する静止画）単位や実時間単位ではなく、テンポに応じて実際の時間の長さが変化する拍単位（ビート単位）でＣＧモデルのモーションデータを構成することができる。当該データ構造を利用することにより、ロボットの動作を拍単位で制御することができる。
【００１２】
なお、本発明の一態様に係る上記データ構造は、振り付け（choreography）データフォーマット、コリオデータフォーマットなどと呼ばれてもよい。また、コリオデータフォーマットで表現されるデータ、コリオデータフォーマットに準拠するデータ（例えば、コリオデータフォーマットに変換可能なフレーム単位の時系列データを含む）などのコリオデータフォーマットと互換性のあるデータは、コリオデータ、ダンスコリオデータなどと呼ばれてもよい。
【００１３】
以下、本発明に係る実施形態について、添付図面を参照して詳細に説明する。
【００１４】
（情報処理システム）
まず、本発明が適用される情報処理システムについて説明する。図１は、本発明の一実施形態に係る情報処理システムの概略構成の一例を示す図である。図１に示す情報処理システム１は、ロボット１０と、ユーザ端末２０と、サーバ３０と、電子楽器４０と、ネットワーク５０と、を含む。
【００１５】
ロボット１０は、例えば、アルデバランロボティクス社のＰＥＰＰＥＲ（登録商標）、本田技研工業株式会社のＡＳＩＭＯ（登録商標）など、比較的高性能な情報処理能力を有するロボットを想定するが、これらに限られるものではない。ロボット１０の構造及び機能ブロックについては、図２及び図３で後述する。
【００１６】
ユーザ端末２０は、携帯電話、スマートフォン、タブレット型端末などの携帯端末（移動通信端末）であってもよいし、パソコン、多機能テレビ、セットトップボックス（例えば、Apple  TV（登録商標）、Chromecast（登録商標））などの固定通信端末であってもよい。
【００１７】
サーバ３０は、ロボット１０、ユーザ端末２０及び／又は電子楽器４０との間でコリオデータを送信及び／又は受信する機能を有する装置である。なお、当該コリオデータの送受信は、ロボット１０、ユーザ端末２０及び／又は電子楽器４０からの要求により行われてもよいし、周期的又は所定のタイミングで行われてもよい。また、サーバ３０は、コリオデータを用いて生成したデータ（例えば、動画など）を、ロボット１０、ユーザ端末２０及び／又は電子楽器４０との間で送受信してもよい。
【００１８】
電子楽器４０は、ＭＩＤＩ（Musical  Instrument  Digital  Interface）データ等の演奏情報に応じた音を発生する機能を有する装置である。例えば、電子楽器４０は、電子ピアノ、シンセサイザーなどであるが、これに限られない。
【００１９】
ネットワーク５０は、機器間を接続し情報の通信を可能とする。例えば、ネットワーク５０は、インターネット、モバイルネットワーク、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）などの様々なネットワークを含む。なお、ネットワーク５０は、無線で構成されてもよいし、有線で構成されてもよい。
【００２０】
なお、当該システム構成は一例であり、これに限られない。例えば、ロボット１０、ユーザ端末２０、サーバ３０及び電子楽器４０は、図１ではそれぞれ複数含まれる構成としたが、各機器の数はこれに限られない。また、情報処理システム１は、ロボット１０、ユーザ端末２０、サーバ３０及び電子楽器４０の一部を含まない構成であってもよい。また、ネットワーク５０に接続していないロボット１０などであっても、所定の記憶媒体を接続することで、当該記憶媒体を介してコリオデータの入出力を行ってもよいし、内蔵する記憶装置を介してコリオデータを取得してもよい。
【００２１】
図２は、本発明の一実施形態に係るロボットの一例を示す模式図である。図２では骨格構造を構成する関節部を主に示している。図２のロボットは、複数の関節部を有するロボットである。図２Ａは、２足直立歩行が可能な人間型ロボット（humanoid  robot）である。図２Ｂは、図２Ａのロボットを簡略化したような構成となっており、図２Ａに比べて一部の関節部が省略されている。
【００２２】
図２Ｂのロボットは、鎖骨がなく、肩は胴体と独立した構成となっている。また、背骨や脚の骨がそれぞれ１本で表現されている。なお、図２Ｂのロボットは、例えば脚部が胴体部と一体となった形状を有し、脚部の先に車輪（例えば、オムニホイール）、無限軌道などが配置される場合には、自走することが可能であってもよい。
【００２３】
関節部のうち、一部は基準点（ルート）として、ロボット内で固定されていてもよい。例えば、図２では、腰に相当する位置の関節部が、基準点として設定されている。
【００２４】
各関節部は、本発明に係る技術分野での共通認識に基づいて説明されるロール／ピッチ／ヨー軸などで構成される。例えば、図２において、肩に２軸（ロール／ピッチ）、肘に２軸（ロール／ヨー）、手首に１軸（ヨー）の自由度がある構成とすることができる。また、頭、指、足なども駆動する構成としてもよい。なお、関節部の数や、関節部における自由度は、図２の構成に限られるものではない。
【００２５】
図３は、本発明の一実施形態に係るロボットの機能構成の一例を示す図である。図２に示すように、ロボット１０は、送受信部１１と、取得部１２と、再生部（制御信号生成部）１３と、出力部（駆動部）１４と、入力部１５と、生成部１６と、制御部１７と、を有する。ロボット１０は、本発明に係る情報処理装置として、データ変換装置を構成することができる。また、ロボット１０は、本発明の一態様に係る情報処理方法を実現することができ、コリオデータを用いて情報処理を行うステップを実行することができる。
【００２６】
なお、図３では、本実施形態における特徴部分の機能ブロックを主に示しており、ロボット１０は、他の処理に必要な他の機能ブロックも有してもよい。
【００２７】
送受信部１１は、ネットワーク５０を介して、他のロボット１０、ユーザ端末２０、サーバ３０、電子楽器４０との間で、コリオデータや必要な情報などの送受信を行う。送受信部１１は、受信したコリオデータを、取得部１２に出力する。また、送受信部１１は、受信した所定のデータ（例えば、ＣＧモデルのモーションデータ）を、生成部１６に出力してもよい。また、送受信部１１は、受信した種々の情報を制御部１７に出力する。送受信部１１は、本発明に係る技術分野での共通認識に基づいて説明されるトランスミッター／レシーバー、送受信回路又は送受信装置により構成することができる。なお、送受信部１１は、送信部及び受信部から構成されてもよい。
【００２８】
取得部１２は、送受信部１１及び／又は生成部１６からコリオデータを取得する。取得部１２は、取得したコリオデータを、送受信部１１及び／又は再生部１３に出力する。
【００２９】
再生部（制御信号生成部）１３は、取得部１２から入力されたデータの再生を行って、出力部１４に出力する。再生部（制御信号生成部）１３は、例えば、後述の生成部１６で修正されたコリオデータを解釈して、ロボットの動作（関節部の動作）を制御する信号（制御信号）を生成し、出力部１４に出力する。
【００３０】
また、再生部（制御信号生成部）１３は、制御部１７からの指示（例えば、ＣＧモデルの構造とロボット１０の構造との差分に関する情報を含む）に基づいて、ＣＧモデル向けのコリオデータを解釈して、ロボット１０の構造や動作の制限（例えば、各関節点の角度や移動速度の制限）を考慮して、ロボットが実現可能な動作を制御する信号（制御信号）を生成し、出力部１４に出力してもよい。再生部（制御信号生成部）１３の一部は、本発明に係る技術分野での共通認識に基づいて説明される信号生成器、信号生成回路又は信号生成装置から構成することができる。
【００３１】
また、再生部１３は、所定のコンテンツ（例えば、楽曲、音声などの音データ）の再生を行って、出力部１４に出力してもよい。例えば、コンテンツが音データであれば、コンテンツに係る音声ファイルフォーマットに従って、出力部１４が認識できる形式で再生用信号に変換する。再生部１３の一部は、本発明に係る技術分野での共通認識に基づいて説明されるプレイヤー、画像／映像／音声処理回路、画像／映像／音声処理装置、アンプなどにより構成することができる。
【００３２】
出力部（駆動部）１４は、再生部１３から入力された制御信号に基づいて、複数の関節部を駆動して、ロボット１０の動作を実現する。具体的には、出力部１４の一部は、ロボット１０の関節部を構成し、各関節部は、制御信号に基づいて所定の軸周りの回転動作を行うモータ、当該モータの回転位置を検出するエンコーダ、当該エンコーダの出力に基づいて上記モータの回転位置・速度を制御するドライバなどにより構成される。なお、出力部（駆動部）１４の構成はこれに限られず、本発明に係る技術分野での共通認識に基づいて説明されるアクチュエータ、駆動回路、駆動装置などにより構成することができる。
【００３３】
また、出力部１４は、再生部１３から入力されたコンテンツの再生信号の出力を行う。例えば、出力部１４の一部は、視覚的なデータ（例えば、ＣＧ動画）を表示する表示部と、音データを出力する音声出力部と、から構成されてもよい。表示部は、本発明に係る技術分野での共通認識に基づいて説明されるディスプレイ、モニタなどの表示装置により構成することができる。また、音声出力部は、本発明に係る技術分野での共通認識に基づいて説明されるスピーカーなどの出力装置により構成することができる。
【００３４】
入力部１５は、外部環境の情報を取得する。例えば、入力部１５の一部は、静止画像及び／又は動画像を取得するカメラ、音声を取得するマイクロフォン、各種センサ（タッチセンサ、接地センサ、加速度センサ、傾斜センサ、ジャイロ、温度センサ（サーモグラフィ）、超音波センサ、測域センサ（レーザスキャンセンサ）、無線ビーム（レーダー）など）のいずれか又はこれらの組み合わせにより構成されてもよい。
【００３５】
また、入力部１５は、ユーザからの操作により、ロボット１０に対する入力を受け付け、入力結果を制御部１７に出力してもよい。入力部１５の一部は、本発明に係る技術分野での共通認識に基づいて説明されるキーボード、マウスなどの入力装置により構成することができる。また、入力部１５の一部は、表示部と一体となった構成（例えば、タッチパネル）としてもよい。
【００３６】
また、入力部１５は、所定の機器や記憶媒体と接続され、データの入力を受け付けてもよい。当該入力結果は、制御部１７や、生成部１６に出力される。この場合、入力部１５の一部は、本発明に係る技術分野での共通認識に基づいて説明される入出力端子、入出力回路などを含んで構成することができる。
【００３７】
生成部１６は、送受信部１１、入力部１５などから取得部１２を介して入力されたデータを用いて、コリオデータを生成する。生成部１６は、制御部１７からの指示（例えば、ＣＧモデルの構造とロボット１０の構造との差分に関する情報を含む）に基づいて、ＣＧモデル向けのコリオデータを修正して、ロボット１０向けのコリオデータを生成（コリオデータを変換）してもよい。生成したコリオデータは、送受信部１１や取得部１２、再生部１３などに出力されてもよい。生成部１６は、本発明に係る技術分野での共通認識に基づいて説明される演算器、演算回路、演算装置などにより構成することができる。
【００３８】
制御部１７は、ロボット１０全体の制御を実施する。例えば、制御部１７は、取得部１２がコリオデータを取得したり、出力したりするタイミングを制御してもよい。また、制御部１７は、生成部１６が生成したコリオデータをロボット１０に保存するように制御してもよい。制御部１７は、本発明に係る技術分野での共通認識に基づいて説明されるコントローラ、制御回路又は制御装置により構成することができる。
【００３９】
また、制御部１７は、取得部１２が取得したＣＧモデル向けのコリオデータに基づいて、当該ＣＧモデルの構造と、ロボット１０の構造との差分を検出（判断）し、当該差分に基づいて、生成部１６（及び／又は再生部１３）におけるコリオデータの変換を制御する。制御部１７は、ロボット１０の構造に関する情報を、予め有するものとする。ここで、ロボット１０の構造に関する情報は、例えば、骨格構造、骨格構造に係る階層構造の初期状態、基準姿勢、各骨の長さ、各関節の可動範囲などに関する情報であるが、これらに限られない。なお、骨格構造については図４を用いて後述する。
【００４０】
また、制御部１７は、変換されたロボット１０向けのコリオデータを、取得部１２を介して再生部１３に出力するように制御することができる。なお、制御部１７は、他のロボット１０の構造に関する情報を保持する場合には、当該他のロボット１０向けのコリオデータを生成するように生成部１６を制御してもよい。
【００４１】
なお、ユーザ端末２０、サーバ３０、電子楽器４０なども、図３に示す機能ブロックの全部又は一部を有してもよく、ロボット１０と同様に本発明の一態様に係る情報処理方法を実現し、本発明の一態様に係るデータ変換装置を構成してもよい。例えば、ユーザ端末２０、サーバ３０、電子楽器４０などが、ロボット１０の代わりに、所定のＣＧモデル向けのコリオデータを修正して、所定のロボット１０向けのコリオデータを生成してもよい。生成されたロボット１０向けのコリオデータは、サーバ３０などに保存されてもよいし、ロボット１０に送信されてもよい。
【００４２】
図３で示した機能ブロックのうち、一部がまとめられて本発明の一実施形態に係るデータ変換装置を構成してもよい。当該データ変換装置は、少なくとも、取得部１２と、生成部１６と、制御部１７と、から構成される。当該データ変換装置によれば、生成部１６が、制御部１７からの指示に基づいて、取得部１２で取得されたＣＧモデル向けのコリオデータを修正して、ロボット１０向けのコリオデータを生成することができる。
【００４３】
なお、上記実施形態の説明に用いたブロック図は、機能単位のブロックを示している。これらの機能ブロック（構成部）は、ハードウェア及びソフトウェアの任意の組み合わせによって実現される。また、各機能ブロックの実現手段は特に限定されない。すなわち、各機能ブロックは、物理的に結合した１つの装置により実現されてもよいし、物理的に分離した２つ以上の装置を有線又は無線で接続し、これら複数の装置により実現されてもよい。
【００４４】
例えば、ロボット１０やユーザ端末２０などの各機能の一部又は全ては、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＰＬＤ（Programmable  Logic  Device）、ＦＰＧＡ（Field  Programmable  Gate  Array）などのハードウェアを用いて実現されてもよい。また、ロボット１０やユーザ端末２０などは、プロセッサ（ＣＰＵ：Central  Processing  Unit）と、ネットワーク接続用の通信インターフェースと、メモリと、プログラムを保持したコンピュータ読み取り可能な記憶媒体と、を含むコンピュータ装置によって実現されてもよい。つまり、本発明の一実施形態に係るロボット１０やユーザ端末２０などは、ＣＧモデル向けのデータ構造（コリオデータ）をロボット１０向けのデータ構造（コリオデータ）に変換する処理を行うコンピュータとして機能してもよい。
【００４５】
ここで、プロセッサやメモリなどは情報を通信するためのバスで接続される。また、コンピュータ読み取り可能な記録媒体は、例えば、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Read  Only  Memory）、ＥＰＲＯＭ（Erasable  Programmable  ＲＯＭ）、ＣＤ−ＲＯＭ（Compact  Disc−ＲＯＭ）、ＲＡＭ（Random  Access  Memory）、ハードディスクなどの記憶媒体である。また、プログラムは、電気通信回線を介してネットワーク５０から送信されてもよい。
【００４６】
ロボット１０やユーザ端末２０などの機能構成は、上述のハードウェアによって実現されてもよいし、プロセッサによって実行されるソフトウェアモジュールによって実現されてもよいし、両者の組み合わせによって実現されてもよい。プロセッサは、オペレーティングシステムを動作させてユーザ端末の全体を制御する。また、プロセッサは、記憶媒体からプログラム、ソフトウェアモジュールやデータをメモリに読み出し、これらに従って各種の処理を実行する。
【００４７】
ここで、当該プログラムは、本発明の一態様に係るコリオデータに関する情報処理を、コンピュータに実行させるプログラムであればよい。例えば、ロボット１０の制御部１７は、メモリに格納され、プロセッサで動作する制御プログラムによって実現されてもよく、他の機能ブロックについても同様に実現されてもよい。
【００４８】
また、ソフトウェア、命令などは、伝送媒体を介して送受信されてもよい。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア及びデジタル加入者回線（ＤＳＬ）などの有線技術及び／又は赤外線、無線及びマイクロ波などの無線技術を使用してウェブサイト、サーバ、又は他のリモートソースから送信される場合、これらの有線技術及び／又は無線技術は、伝送媒体の定義内に含まれる。
【００４９】
本発明の一態様においては、上述したような各装置がコリオデータを利用する。以下では、まずコリオデータフォーマットについて説明し、コリオデータを用いたロボットの動作方法や、ＣＧモデルの構造とロボットの構造との違いを考慮したコリオデータ調整方法について説明する。
【００５０】
（コリオデータフォーマット）
本発明の一態様に係るコリオデータフォーマットは、ＣＧモデルの構成要素の座標を、拍単位で時系列に指定するための時系列情報を含むデータのフォーマットである。なお、「拍単位」とは、「拍」で特定可能な単位であることをいい、１拍単位に限られず、８分の１拍単位などの分数拍単位や、２拍単位などの複数拍単位も含む。
【００５１】
上述のように、本発明者らは、音データと同期が容易にできるＣＧモデルの動きデータを検討した。動きの再現性やデータ量、他システムとの連携などを鑑みた結果、本発明者らは、電子楽器の演奏情報の保存形式が、拍単位でのデータ構造の表現に好適であることを見出し、本発明の一態様に係るコリオデータフォーマットに至った。
【００５２】
具体的なフォーマットの説明の前に、まずＣＧモデルの表現方法について説明する。本明細書では、骨格構造（多関節構造）を有するスケルトンモデルをＣＧモデルとして用いる場合を例に説明するが、本発明を適用可能なＣＧモデルはこれに限られるものではない。
【００５３】
図４は、骨格構造（多関節構造）を有するスケルトンモデルの一例を示す図である。図４Ａは、スケルトンモデルの各構成要素及び基準姿勢を示し、図４Ｂは、スケルトンモデルの構成要素間の関係を示す。なお、図４に示す例は基本的な構成であり、さらに追加の構造（例えば、皮膚、指、毛髪、衣装、帽子、ステッキなど）を有していてもよい。
【００５４】
図４Ａに示すモデルは、複数の骨格から構成されており、各骨格は２つの関節点及びこれらをつなぐ骨（ボーン）から構成されている。図４Ａの「Ｎ」、「ＲＳ」などは骨の名称であり、この例では１８本の骨が示されている。
【００５５】
一般的にスケルトンモデルは、ある関節点を基準点（ルート）として、各関節点を介して接続される骨が階層構造を有するように構成されている。例えば、図４Ａの階層構造は図４Ｂのように表される。図４の場合、Ｂ１及びＷの間の関節点がルートである。また、関節点や骨を比較する際、ルートに近い方を親といい、ルートから遠い方を子という。
【００５６】
ＣＧモデルを３次元空間に配置する際は、当該モデルを、ルートの位置を基準とした当該モデル用の座標系（ローカル座標系）上にモデリングする。そして、３次元空間全体を表す座標系（ワールド座標系、グローバル座標系）に、モデリングされたＣＧモデルをマッピングする。
【００５７】
構成要素（関節点、骨など）の座標は、３次元空間の絶対座標又は相対座標として表されてもよいし、所定の関節点を基準とした所定の骨の相対角度として表されてもよい。例えば、骨の相対角度で座標を表現する場合、ＣＧモデルの基準姿勢を図４ＡのようなＴ字姿勢とし、当該姿勢時の各骨の角度を０°としてもよい。
【００５８】
なお、階層構造やルートの位置は図４の例に限られない。例えば、ルートの位置は両足の間（ＲＦ３とＬＦ３との間）であってもよい。また、各構成要素の座標及び／又は角度は、ルートから末端にかけて順番に計算するフォワードキネマティクスを用いて算出してもよいし、子の位置から親の位置を逆計算するインバースキネマティクスを用いて算出してもよいし、両者の組み合わせ又はその他の方法を用いてもよい。また、骨格構造においては、上記の階層構造だけでなく、階層構造の初期状態や、各骨の長さや、各関節の可動範囲などが設定されてもよい。
【００５９】
（ＳＭＦフォーマットとコリオデータフォーマット）
上述のように、本発明の一態様におけるコリオデータフォーマットは、電子楽器の演奏情報の保存形式に準拠することが好ましい。特に、広く普及しているＭＩＤＩデータの保存形式が好適である。次に、ＭＩＤＩデータの保存形式の１つであるＳＭＦ（Standard  MIDI  File）フォーマットの概略を説明し、ＳＭＦフォーマットに準拠するコリオデータフォーマットを説明する。
【００６０】
ＳＭＦフォーマットは、所定の制御情報を含むヘッダチャンクと、演奏データを含むトラックチャンクから構成される。演奏データは、デルタタイム及びＭＩＤＩイベントの組み合わせで構成される。ここで、デルタタイムは次のＭＩＤＩイベントが起こるまでの時間を表す。また、ＭＩＤＩイベントは演奏内容を表すものであり、例えば、ノートオン（音を出す）、ノートオフ（音を止める）などがある。
【００６１】
ノートオン信号は、対応するデルタタイムの経過後に特定の音を出すという信号である。ノートオン信号は、例えば、１６進数で「９ｎ  ｋｋ  ｖｖ」という３ｂｙｔｅで表現でき、これは「チャンネルｎでノート番号ｋｋの音をベロシティｖｖで発音する」ということを意味する。図５は、ノートオン信号の概念説明図である。図５に示すように、チャンネルは楽譜におけるパート（所定の楽器の演奏パート）、ノート番号は音の高さ、ベロシティは楽器（鍵盤）を叩く速度（強さ）を表す。
【００６２】
ノートオフ信号は、対応するデルタタイムの経過後に特定の音を消すという信号である。ノートオフ信号は、例えば、１６進数で「８ｎ  ｋｋ  ｖｖ」という３ｂｙｔｅで表現でき、これは「チャンネルｎでノート番号ｋｋの音をベロシティｖｖで消音する」ということを意味する。
【００６３】
ノート番号及びベロシティはいずれも１０進数で０〜１２７の数値を取ることができる。なお、ベロシティが０のノートオン信号「９ｎ  ｋｋ  ００」は、「チャンネルｎでノート番号ｋｋの音を消音する」というノートオフ信号と同じ意味を表す。
【００６４】
図５におけるチャンネル０及び１に示される４分音符に対応するノートオン信号は、それぞれ「９０  ３Ｅ  ０４」及び「９１  ３Ｃ  ０２」のように表すことができる。
【００６５】
本発明の一態様においては、各チャンネルを、それぞれＣＧモデルのいずれかの構成要素の座標に関する情報として扱う。つまり、コリオデータフォーマットは、ＣＧモデルの構成要素の座標に関する拍単位の時系列情報を、複数含んで構成されてもよい。ここで、構成要素（例えば、骨、関節点など）の座標に関する情報とは、例えば、構成要素の絶対座標又は相対座標に関する情報であってもよいし、構成要素（例えば、骨）の相対角度として表されてもよい。
【００６６】
ＣＧモデルの構成要素の座標に関する情報としては、ノートオン信号のノート番号及び／又はベロシティを用いることができる。この場合、あるタイミングにおいて、所定の構成要素の特定の軸の角度及び／又は座標は、当該タイミングに対応する拍に配置されたノートオン信号から取得することができる。また、ノートオン信号及び／又はノートオフ信号のデルタタイムは、ＣＧモデルの構成要素の座標が変化する拍の長さに関する情報として用いられてもよい。
【００６７】
例えば、ノートオフ信号に対応するデルタタイムは、当該ノートオフ信号の直前のノートオン信号から算出される角度（又は座標）から、当該ノートオフ信号の直後のノートオン信号から算出される角度（又は座標）に遷移するのにかかる拍の長さを示してもよい。各ノートに関連付けられた所定の構成要素の角度及び／又は座標の遷移は、所定の規則に従って行われてもよい。例えば、所定の補間方法に基づいて、遷移中の速度や加速度を決定して用いてもよい。なお、デルタタイムは、正数であることが好ましい。
【００６８】
ノートオン／オフ信号はＳＭＦフォーマットで最も頻繁に用いられる信号であるため、ＭＩＤＩに対応した電子楽器などにおいて、処理を高速に行うことが可能である。
【００６９】
ノートオン信号においては、ノート番号により、比較的大きな単位で座標又は角度を大まかに特定し、ベロシティにより、比較的小さな単位で座標又は角度を詳細に特定してもよい。例えば、あるチャンネルにおけるノートオン信号が特定の軸方向の角度（例えば、ｘ軸相対角度）を示す場合には、以下の式１で当該角度θを算出してもよい。
【００７０】
（式１）
θ＝（Ｎ−Ｎ０）×θＮ＋（Ｖ−Ｖ０）×θＶ
ここで、Ｎはノート番号、Ｎ０は基準とするノート番号、θＮはノート番号増分あたりの角度増加量、Ｖはベロシティ、Ｖ０は基準とするベロシティ、θＶはベロシティ増分あたりの角度増加量である。
【００７１】
例えば、Ｎ０は６０（鍵盤の中央の「Ｃ（ド）」音に対応）、Ｖ０は１、θＮは５°、θＶは０．０５°としてもよい。なお、Ｎ０、Ｖ０、θＮ、θＶなどは上記の値に限られない。
【００７２】
また、あるチャンネルにおけるノートオン信号が特定の軸方向の座標を示す場合には、以下の式２で当該座標位置Ｐを算出してもよい。
【００７３】
（式２）
Ｐ＝（Ｎ−Ｎ０）×ＰＮ＋（Ｖ−Ｖ０）×ＰＶ
ここで、Ｎはノート番号、Ｎ０は基準とするノート番号、ＰＮはノート番号増分あたりの座標増加量、Ｖはベロシティ、Ｖ０は基準とするベロシティ、ＰＶはベロシティ増分あたりの座標増加量である。
【００７４】
例えば、Ｎ０は６０（鍵盤の中央の「Ｃ（ド）」音に対応）、Ｖ０は１、ＰＮは６４ｃｍ、ＰＶは０．５ｃｍとしてもよい。また、ＰＮは１２７ｃｍ、θＶは１ｃｍとしてもよい。なお、Ｎ０、Ｖ０、ＰＮ、ＰＶなどは上記の値に限られない。
【００７５】
また、上記とは逆に、ベロシティにより、比較的大きな単位で座標又は角度を大まかに特定し、ノート番号により、比較的小さな単位で座標又は角度を詳細に特定する構成としてもよい。さらに、システムエクスクルーシブ（ＳｙｓＥｘ）イベントなど、ノートオン／オフ以外の信号を用いてＣＧモデルの構成要素の座標に関する情報が特定されてもよい。
【００７６】
構成要素の座標に関する情報は、例えば、ポジション情報及びポーズ情報に分類することができる。ポジション情報は、ＣＧモデルの初期位置（例えば、ＣＧ動画の開始時における位置）からの相対位置を示す情報であり、例えばＣＧモデルの基準点（ルート）のｘ軸座標、ｙ軸座標、ｚ軸座標及び当該基準点の回転角度で表されてもよい。また、ポーズ情報は、ＣＧモデルの基準姿勢に基づく角度又は位置を示す情報であり、例えば図４ＡのようなＴ字姿勢を０°とし、いくつかの数の指定ボーンに関して、親骨と子骨との間のｘ軸相対角度、ｙ軸相対角度及びｚ軸相対角度で表されてもよい。
【００７７】
各構成要素（例えば、骨）の各座標に関する情報を、いずれのチャンネルに割り当てるかは、システムの運用形態などに応じて適宜選択することができる。１チャンネルにつき１つの構成要素の座標に関する情報を割り当てる場合、ＣＧモデルを表現するのに必要なチャンネル数は、指定ボーン数を１８とすると計５８チャンネルである。具体的には、ポーズ情報のために１８（ボーン数）×３（軸数）＝５４（チャンネル）が必要となり、ポジション情報のために３（ポジション座標）＋１（ポジション基準角度）＝４（チャンネル）が必要となる。ＭＩＤＩポートは１６チャンネルを含むことができるため、４ＭＩＤＩポートあれば、ボーン数１８から成るＣＧモデルの座標及び姿勢を表現することができる。なお、ＣＧモデルの表情や指先などを表現する場合には、さらに追加でチャンネルが必要になるため、必要なＭＩＤＩポート数も増加する。
【００７８】
一方、１チャンネルにつき構成要素の座標に関する情報を複数割り当ててもよい。例えば、１チャンネルで、所定の骨のｘ軸相対角度、ｙ軸相対角度及びｚ軸相対角度を表現するように構成することができる。この場合、例えば、ノート番号を３分割して、比較的小さなノート番号（例えば、０〜４２）をｘ軸相対角度、比較的中間のノート番号（例えば、４３〜８５）をｙ軸相対角度、比較的大きなノート番号（例えば、８６〜１２７）をｚ軸相対角度として用いてもよい。なお、割り当て方法はこれに限られない。
【００７９】
また、コリオデータフォーマットが準拠するＳＭＦフォーマットは、特に制限されない。例えば、１トラックに全チャンネルの情報を含むフォーマット０であってもよいし、複数トラックで構成されるフォーマット１であってもよいし、フォーマット２であってもよい。さらに、既存のフォーマット０〜２でない新たなフォーマットを用いてもよい。また、コリオデータフォーマットは、ＣＧモデルの構成要素の座標を拍単位で時系列に指定するための情報を有するものであれば、ＳＭＦフォーマットに限られない。
【００８０】
図６は、本発明におけるデータ構造における各チャンネルのノートオン信号と、所定の構成要素との対応関係の一例を示す図である。上述のように、スケルトンモデルの一実施形態としては、各関節（又は骨）の角度はｘ軸角度、ｙ軸角度及びｚ軸角度の３要素で表現される。図６においては、図４で示した「ＲＡ１」部分の骨のｘ軸角度、ｙ軸角度及びｚ軸角度を示す情報が、それぞれ異なるチャンネルに割り当てられている。なお、図６のｘ軸角度、ｙ軸角度及びｚ軸角度が示す方向は一例であり、これに限られない。また、図６に示す五線譜の中央の線に対応するノート番号が１０進数で６０であるものとし、式１においてＮ０を６０、Ｖ０を１、θＮを５°、θＶを０．０５°とする。
【００８１】
図６において、ｘ軸角度に対応するチャンネルのノートオン信号は、ノート番号が１０進数で７０、ベロシティが１である。したがって、式１によればｘ軸角度は＋５０°となる。また、ｙ軸角度に対応するチャンネルのノートオン信号は、ノート番号が６２、ベロシティが３である。したがって、式１によればｙ軸角度は＋１０．１°となる。また、ｚ軸角度に対応するチャンネルのノートオン信号は、ノート番号が６０、ベロシティが１である。したがって、式１によればｚ軸角度は０°となる。
【００８２】
図７は、本発明に係るコリオデータフォーマットに準拠する具体的なデータ例を示す図である。図７では、バイト単位のデータ列と、対応する情報と、が示されている。なお、図７ではデータ列が複数の行に亘って示されているが、実際には連続したデータである。また、図７のコリオデータフォーマットはＳＭＦフォーマット１に準拠するものであるが、これに限られない。
【００８３】
図７の一行目のデータ列は、ＭＩＤＩヘッダに対応している。ここでは四分音符の分解能は４８と設定されている。図７の二行目のデータ列は、コンダクタトラックに対応している。一般的に、テンポはＢＰＭ（Beats  Per  Minute）単位を用いてコンダクタトラックで指定される。図７ではＢＰＭは１２０に設定されている。図７の三行目及び四行目のデータ列は、通常のトラック（演奏トラック）に対応している。
【００８４】
ノートオン信号１００は、チャンネル０（例えば、ボーンＩＤ  ０のｘ軸角度に対応する）においてノート番号３Ｃ、ベロシティ７Ｆの発音開始を指示している。ノートオン信号１００は、対応するノートオフ信号１１０によって終了する。また、ノートオフ信号１１０のデルタタイムは６（８分の１拍に相当）である。このため、ノートオン信号１００によって示される角度から、次のノートオン信号（ノートオン信号１２０）によって示される角度への遷移時間が８分の１拍であることを示している。
【００８５】
また、同じチャンネルの信号が連続する場合には、ランニングステータスを用いて２回目以降のステータスバイトを省略することができる（ノートオン信号１１０、１２０）。ノートオン信号１３０は、別のチャンネル（チャンネル１）に関する情報を含んでいる。また、ノートオフ信号１４０及び１５０は、それぞれノートオン信号１２０及び１３０に対応する。
【００８６】
以上説明したように、本発明に係るコリオデータフォーマットは、例えばＳＭＦフォーマットと互換性を持ち、ＭＩＤＩにおけるチャンネルごとに、ＣＧモデルの構成要素の座標を拍単位で時系列に指定するための時系列情報（ノートオン／オフ信号の繰り返し）を含む。データ構造をＳＭＦフォーマットとすることで、ＣＧモデルの動作（ひいては、ロボットの動作）と、電子楽器など他の機器又はシステムとの連携が容易になる。
【００８７】
コリオデータとしては、所定の拍の長さに対応するフレーム周期ごとに、所定の数の指定ボーンの３つの特定角によるポーズ情報と、４軸からなるポジション情報と、を持つデータが好適である。当該所定のフレーム周期は、所定のテンポ（例えば、ＢＰＭ）に基づいて特定することができる。例えば、当該所定のフレーム周期は、所定のテンポにおけるある拍の長さ（例えば、１拍分、８分の１拍分など）に対応する周期であってもよい。また、当該所定のフレーム周期は、拍の長さに、単位時間あたりのフレーム数（例えば、ＦＰＳ（Frames  Per  Second））を掛けることで算出できる。
【００８８】
より具体的には、コリオデータは、８分の１拍単位で情報を保持することが好ましい。この理由について図８及び９を用いて説明する。図８は、１拍の中における典型的な角度変化のパターンの一例を示す図であり、図９は、１拍の中における各８分の１拍を抽出する一例を示す図である。
【００８９】
本発明者らは、生物（例えば、人、動物など）の構成要素の動き（例えば、角度）の変化が、拍単位で見ると、図８に示すような加減、減加、単調増加又は単調減少のいずれかのパターンでほとんど表現されることに着目した。また、本発明者らは、当該着目点を鑑みた結果、図９に示すように、１拍中に８つの点を抽出することで、動きの変化のパターンの判別と、動きが遷移するカーブの大まかな形の再現と、を行えることを見出し、コリオデータとして８分の１拍単位で情報を保持するという発想に至った。
【００９０】
なお、コリオデータとして含まれる時系列情報は、８分の１拍単位に限られず、データ量と元モーションデータの再現性とのトレードオフなどを考慮して適宜増減させてもよい。
【００９１】
（コリオデータフォーマットに従うデータを用いたロボット動作フロー）
図１０は、コリオデータフォーマットに準拠したモーションデータを用いてロボットが動作する場合のフローの一例を示す。また、図１０のフローの実施例として、図３に示した各機能ブロックが行う具体的な処理内容の一例について、図１１及び１２を参照して説明する。
【００９２】
図１１は、保存されたコリオデータに基づく動作の一例を示す図である。また、図１２は、リアルタイムで生成されるコリオデータに基づく動作の一例を示す図である。図１１では、ロボット１０が、別のロボット１０、ユーザ端末２０又はサーバ３０に保存されるコリオデータに基づいて動作する場合を示し、図１２では、ロボット１０が、電子楽器４０から出力されるコリオデータに基づいて動作する場合を示すが、これに限られるものではない。例えば、ロボット１０は、自装置に記憶されるコリオデータに基づいて動作することができる。
【００９３】
図１１において、シーケンサはＭＩＤＩデータ（コリオデータ）を取得するものであるから、図３の取得部１２に相当する。また、図１２において、シーケンサはＭＩＤＩ信号（コリオデータ）を生成して取得するものであるから、図３の生成部１６（及び取得部１２）に相当する。また、図１１及び１２において、ＭＩＤＩスルーボックスは、ＭＩＤＩ信号（コリオデータ）を取得するものであるから、図３の取得部１２に相当する。なお、図１１及び１２では簡単のため省略しているが、ＭＩＤＩ信号は送受信部１１を用いてネットワーク５０を介して送受信される。
【００９４】
また、図１１及び１２では、ロボット１０が受信するＭＩＤＩ信号は、コリオデータを示すチャンネル（モーションチャンネルなどと呼ばれてもよい）及び音データを示すチャンネル（音声チャンネル、音楽チャンネルなどと呼ばれてもよい）を含むものとするが、これに限られず、少なくともコリオデータが含まれればよい。
【００９５】
図１０に示すフローでは、まず、各所定の拍におけるＣＧモデルの構成要素の座標に関する情報（相対角度など）を取得する（ステップＳ２１）。具体的には、ステップＳ２１において、取得部１２（ＭＩＤＩスルーボックス）はＭＩＤＩ信号を取得して、モーションチャンネル及び音声チャンネルに分離し、モーションチャンネルを生成部１６に出力する。
【００９６】
次に、各拍におけるＣＧモデルの構成要素の座標に関する情報を、ロボット１０の構成要素の座標に関する情報に変換する（ステップＳ２２）。例えば、生成部１６が当該変換を行って、変換結果を再生部１３に出力する。当該変換は、ＣＧモデル及びロボット１０それぞれの骨格構造、階層構造の初期状態、基準姿勢、各骨の長さや、後述するようなロボット１０の構造や動作の制限（例えば、各関節の可動範囲、移動速度の制限など）を考慮して、ＣＧモデルの各構成要素について座標変換（例えば、位置、角度の調整）を行うことで実現されてもよい。また、当該変換で考慮されるこれらのパラメータは、コリオデータに含まれる構成としてもよい。
【００９７】
次に、ロボット１０の構成要素の座標を、ロボット１０の制御単位時間に対応付ける（ステップＳ２３）。ステップＳ２３では、まず、再生部１３は、生成部１６から出力されたコリオデータ（ＳＭＦフォーマット）をデコーダにより解析し、各チャンネルのノートオン／オフ信号に基づいて、各構成要素の座標に関する時系列情報を取得する。
【００９８】
ステップＳ２３の対応付けは、所定のテンポ（例えば、ＢＰＭ）と、ロボット１０の制御単位時間（例えば、ＣＰＵやモータの性能などによって決まる、制御単位となる最小時間）と、に基づいて行うことができる。なお、ロボット１０の制御単位時間は、ＣＧモデルを動画として表示する際に単位時間あたりに処理させるフレーム数（例えば、ＦＰＳ）に関連付けられていてもよい。
【００９９】
ここでの所定のテンポは、コリオデータがテンポに関する情報を含む場合には、当該情報から取得されてもよい。また、ロボット１０の動作と同期して再生される他のデータ（例えば、楽曲データ）から検出されたテンポであってもよいし、外部から設定された又は予め記憶されるテンポであってもよい。
【０１００】
具体的には、ステップＳ２３においては、再生部１３は、ステップＳ２１のコリオデータ（又はステップＳ２２の変換結果）から第１のＢＰＭを取得する。また、再生部１３は、ロボット１０の動作と同期して再生するデータ（例えば、楽曲データ）から第２のＢＰＭを取得してもよい。そして、再生部１３は、ステップＳ２１で取得された時系列情報を、第１のＢＰＭと第２のＢＰＭとに基づいて時間方向に調整する。例えば、再生部１３は、第１のＢＰＭと第２のＢＰＭとが異なる場合、ステップＳ２１で取得された時系列情報を、第１のＢＰＭを第２のＢＰＭで割った値だけ伸縮させる。
【０１０１】
このようにして、再生部１３は、ステップＳ２１で取得された時系列情報又は上記伸縮が適用された時系列情報に基づいて、ロボット１０の各制御単位時間に対応する時刻における各構成要素の座標（位置、角度など）を決定する。また、再生部１３は、制御単位時間の所定のタイミング（例えば、開始タイミング）に対応する座標に関する情報がない場合には、近い時間の座標に関する情報から所定の補間方法（例えば、サインカーブ補間）を用いて、当該タイミングにおける座標を決定してもよい。
【０１０２】
コリオデータが含む角度又は座標に関する情報は量子化されているため、元データが閾値付近で微動するものであった場合は、ロボット１０の動作にガタツキが生じる恐れがある。そこで、再生部１３は、角度及び／又は座標に対して、補間処理を適用することで、ガタツキを抑制してもよい。この補間処理としては、例えば、図１２に示すように、ローパスフィルタを用いた指数移動平均などを用いることができる。図１２のようなリアルタイム再生の場合、未来のデータは利用できないため、ローパスフィルタの処理が好適である。
【０１０３】
最後に、ステップＳ２３で決定された各構成要素（関節部）の座標に基づいて制御信号を生成し、当該制御信号に基づいて、各関節部の処理を制御する（ステップＳ２４）。具体的には、ステップＳ２４においては、再生部（制御信号生成部）１３は、制御単位時間ごとに、関節部におけるモータの回転速度などを指示する情報を含む制御信号を生成する。そして、出力部１４は、各関節部に対して制御信号を送信し、関節部を駆動させてロボット１０を動作させる。なお、複数の制御単位時間の制御信号をまとめて送信してもよいし、所定の制御単位時間については、所定の関節部に対して制御信号が送信されなくてもよい（例えば、当該所定の関節部の位置及び角度が変わらない場合など）。
【０１０４】
なお、図１０では、ステップＳ２２の処理を生成部１６が行う例を示したが、これに限られない。例えば、ステップＳ２１で取得部１２がモーションチャンネルを直接再生部１３に出力し、ステップＳ２２で再生部１３がＣＧモデル向けのコリオデータを解釈して、ロボット１０の構造や動作の制限（例えば、各関節点の角度や移動速度の制限）を考慮して、座標を変換及び／又は修正する処理を行う構成としてもよい。
【０１０５】
また、図１１及び１２に示すように、再生部１３は、音声チャンネルを入力された場合には、ＭＩＤＩ音源によりモーションチャンネルが示すロボット１０の動作と同期するように再生を行って、出力部１４がスピーカーにより出力して音を出す構成とすることができる。
【０１０６】
また、図１２の例において、ロボット１０の動作と同期して再生される他のデータ（例えば、楽曲データ）もコリオデータと同様にリアルタイムで取得される（ストリーミング配信される）構成としてもよい。当該構成では、通信状況の悪化により、パケットロス、遅延などが発生してストリーミング音源の再生が停止などする場合であっても、ストリーミングの進行に従って、適切に楽曲の拍に合わせてロボットの動作を制御することができる。
【０１０７】
以上までで、コリオデータのデータ構造、及びコリオデータを用いたロボットの動作方法について説明してきたが、ＣＧモデルの構造（例えば、骨格構造）とロボットの構造との違いを考慮すると、さらに検討すべき課題が存在する。以下では、これらの課題とその解決方法について詳しく説明する。
【０１０８】
（ボーンのバランス調整）
ロボットの骨格構造は、コリオデータにより特定されるＣＧモデルの骨格構造と必ずしも同じとは限らない。一般的には、ハードウェア実装の簡単化などのため、ＣＧモデルと比較してボーンが増える場合よりも減る場合の方が多い。骨格構造が一致しない場合に、適切にボーンの調整を行わなければ、ロボットが予期せぬ動作を行うことが懸念される。
【０１０９】
＜ボーンが減る場合＞
本発明者らは、ＣＧモデルと比べてロボットのボーンが減る場合、ロボットに存在しないボーン（非存在ボーン、省略ボーンなどとも呼ぶ）がＣＧモデル上で担っていた情報（例えば、座標に関する情報（ボーンの傾きなど））を、どのように他のボーン（存在ボーン、非省略ボーンなどとも呼ぶ）に継承するかが重要であることに着目し、以下の３つの継承方法を着想した：（１）所定の割合（例えば、１００：０、９０：１０など）に従って、省略ボーンの情報を、省略ボーンに近接する存在ボーンの情報にブレンドする、（２）省略ボーンの情報を、省略ボーンに近接する存在ボーンの情報に足し合わせる、（３）省略ボーンの情報は無視し、所定の方法で存在ボーンの情報を算出する。
【０１１０】
ここで、当該方法（３）において、所定の方法とは、例えば、ロボットが倒れないように省略ボーンに近接する存在ボーンの情報を算出する（初期状態（例えば、直立状態）を維持するなど）、他の存在ボーンの情報に基づいて算出する、などであってもよい。
【０１１１】
なお、近接するボーンとは、隣り合うボーンに限られない。例えば、近接するボーンは、隣の隣のボーンであってもよい。また、省略ボーンと関連性の高い（例えば、一緒に動くことが多い）ボーンを継承対象として用いてもよい。
【０１１２】
図１３は、ＣＧモデルの骨格とロボットの骨格が異なる場合のバランス調整の一例を示す図である。図１３ＡはＣＧモデルの骨格を示し、図１３Ｂはロボットの骨格を示す。図１３の例では、ロボットの骨格において、２本の鎖骨、１本の背骨及び脚の骨が省略ボーンである。なお、図１３Ａ及び１３Ｂのロボットは、それぞれ図２Ａ及び２Ｂのロボットの構成と同じである。
【０１１３】
背骨に関しては、２本の背骨の動きを１本でも表現できると考えられるため、上記（１）の方法によりブレンドすることが好ましい。したがって、図３の再生部１３は、図１３ＢにおけるボーンＢの座標（位置、角度など）を、図１３ＡにおけるボーンＢ１及びＢ２の座標を所定の割合でブレンドすることで決定してもよい。
【０１１４】
また、鎖骨に関しては、上腕を補助する動きが多いため、上記（２）の方法により上腕に鎖骨の情報を加えることが好ましい。したがって、図３の再生部１３は、図１３ＢにおけるボーンＲＡ１（ＬＡ１）の座標（位置、角度など）を、図１３ＡにおけるボーンＲＡ１（ＬＡ１）の座標にボーンＲＳ（ＬＳ）の座標を加えて決定してもよい。
【０１１５】
また、脚に関しては、存在しない脚を無理に再現しようとするとバランスが崩れるので、上記（３）の方法により、ＣＧモデルの脚の情報は無視して、ロボットが倒れないように調整することが好ましい。したがって、図３の再生部１３は、図１３ＢにおけるボーンＷ（及び／又はＦ）の座標（位置、角度など）を、図１３ＡにおけるボーンＷ、ＲＦ１−３及びＬＦ１−３の座標を無視して、他のボーンの座標に基づいて決定してもよい（例えば、ボーンＢ、Ｗ及びＦが直線上に位置するように決定してもよい）。
【０１１６】
＜ボーンが増える場合＞
例えば、より細かな動きを表現するため、標準ボーンモデルに含まれる骨（背骨など）を中割りにする形で増やす（分割して増やす）ことが考えられる。本発明者らは、ＣＧモデルと比べてロボットのボーンが増える場合（つまり、所定のボーンを複数のボーンにより表現する場合）、増えるボーンの特性を維持することが重要であることに着目し、以下の２つの継承方法を着想した：（１）中割りされるボーンの角度を所定の割合（例えば、５０：５０）で保持して、最終的な角度を一致させる、（２）中割りされるボーンの到達位置を保持するように、増えたボーンの角度を算出する。
【０１１７】
ボーンの角度が重要な場合（例えば、ロボットを視聴する人が、ボーンの角度が変わることにより、異なる体勢や表現に感じやすい、手などの部分について）には、上記（１）の方法が好ましい。また、関節点の位置が重要な場合（例えば、位置が変わるとロボットのバランスが崩れるなど、ロボットの動作に重要な脚、体幹部などの部分について）には、上記（２）の方法が好ましい。
【０１１８】
図１４は、ＣＧモデルの骨格とロボットの骨格が異なる場合のバランス調整の別の一例を示す図である。図１４Ａ及び１４Ｂは、ボーンが増える場合の上記方法（１）及び（２）をそれぞれ示す。図１４では、ＣＧモデルにおけるボーンＢ２に対応する骨格が、ロボットではボーンＢ２ａ及びＢ２ｂに増加している。ボーンＢ１は、増加した複数の骨（ボーンＢ２ａ及びＢ２ｂ）の一端の骨（ボーンＢ２ａ）に隣接する骨である。なお、図１４及び後述の図１５−１７は、ロボットのボーンを所定の視点から見た平面図（例えば、ｘ−ｙ平面）を示している。
【０１１９】
図１４Ａでは、方法１により、ボーンＢ１に対するボーンＢ２ｂの角度が、元データ（ＣＧモデル）の場合とロボットの場合とで同じα（ＣＧモデルに存在する骨の角度）となるように制御されている。これにより、ボーンの増加前後で、ボーンＢ２ｂの末端の関節点の座標は、ＣＧモデルのボーンＢ２の末端の関節点の座標と異なってしまうものの、ボーン増加範囲の末端のボーンＢ２ｂ（増加した複数の骨の他端の骨）の、ボーンＢ１に対する角度を維持することができる。
【０１２０】
図１４Ｂでは、方法２により、ボーンＢ２ｂの末端の関節点の位置（複数の骨の末端の位置）が、ＣＧモデルのボーンＢ２の末端の関節点の位置（ＣＧモデルに存在する骨の末端の位置）と同じになるように制御されている。これにより、ボーン増加範囲の調整が他のボーンに与える影響を好適に抑制することができる。
【０１２１】
なお、これらの方法で、増えたボーンに隣接するボーンの座標（角度、位置など）も合わせて修正されてもよい。例えば、ＣＧモデルにおける隣接するボーンと、ロボットにおける隣接するボーンと、が同じ位置又は角度となるように制御されてもよい。
【０１２２】
以上の実施形態によれば、ロボットの骨格構造がコリオデータにより特定されるＣＧモデルの骨格構造と一致しない場合であっても、適切にボーンの調整を行うことが可能となる。このため、一旦作成したＣＧモデルのモーションを、広くロボットに適用することができる。
【０１２３】
（関節角度の制限）
ロボットはＣＧモデルと異なり、関節の稼働する角度に限界がある。これを限界角度ともいう。本発明者らは、各関節部（及び／又はボーン）に限界角度が規定（設定）される場合において、コリオデータから無理な角度を要求された（つまり、所定のボーンを、限界角度を超える角度にするように指示された）とき、なるべく見る側の人間にとって不自然でないように角度を制限することが重要であることに着目した。
【０１２４】
ここでは、前述のボーンの調整を済ませ、それぞれのボーンの角度（関節角度）のデータが保持されているが、まだ角度の制限が加えられていない場合を考える。なお、ボーンの調整を行う前に角度制限を適用してもよい。無理な角度を要求された場合、角度に制限を加える方法として、以下の２つの方法が考えられる：（１）所定の角度（例えば、限界角度）を超える角度は無視する（つまりボーンの角度を所定の角度とする）、（２）ボーンの角度を限界角度とし、曲げきれなかった角度（指定された角度と限界角度との差分）を親のボーンで代替する。なお、いずれのパターンであっても、最終的な角度を優先するか、位置を優先するかはボーンによって異なってもよい。
【０１２５】
図１５は、本発明の一実施形態に係る関節角度の制限の一例を示す図である。図１５Ａ及び１５Ｂは、関節角度の制限の上記方法（１）及び（２）をそれぞれ示す。図１５では、ＣＧモデル及びロボットのボーンＢ１及びＢ２が示されている。図１５では、ボーンＢ２の限界角度がβである場合に、コリオデータが角度α（α＞β）をボーンＢ２の角度として指定する例を示す。
【０１２６】
図１５Ａでは、方法１により、ロボットは、所定の角度（限界角度β）を超える角度を所定の角度として解釈するため、ボーンＢ２がβだけ曲げられている。なお、所定の角度は限界角度に限られず、限界角度より小さい角度であってもよい。
【０１２７】
図１５Ｂでは、方法２により、ロボットは、まずボーンＢ２に指定される角度αが限界角度βを超えることを認識する。そのため、まずボーンＢ２の角度を限界角度βに修正する。そして、ボーンＢ２の親であるボーンＢ１の角度を、曲げきれなかった角度であるα−βに設定する。このように、ボーンＢ２に設定される限界角度を超える角度（α）が、ボーンＢ２の角度（β）と、ボーンＢ２の親であるボーンＢ１の角度（α−β）と、の和と等しくなるようにすることで、各ボーンの角度が限界角度を超えないようにしつつ、最終的なボーンの角度を維持することができる。
【０１２８】
なお、図１５Ｂの例について、α−βがボーンＢ１の限界角度（例えば、γとする）を超えないものとして説明したが、超えた場合には、さらにボーンＢ１の親のボーンの角度を、ボーンＢ１及びＢ２が曲げきれなかったα−β−γとしてもよい。このように、曲げきれなかった角度はさらに親に伝搬させてもよい。
【０１２９】
（スピードの制限）
ロボットはＣＧモデルと異なり、各ボーンが遷移可能な速度には限界がある。これを限界速度ともいう。本発明者らは、各関節部（及び／又はボーン）に限界速度が規定（設定）される場合において、コリオデータから無理な速度を要求された（つまり、所定のボーンを限界速度で遷移させても、次の指定時間（例えば、次の拍）までに次の指定座標に到達できない）とき、なるべく動作の形（流れ）を保持したまま速度を落とす（速度を制限する）ことが重要であることに着目した。
【０１３０】
本発明者らは、特に、コリオデータがダンスの動きを示す場合を検討した。そして、本発明者らは、ダンスは一見表拍の動作の連続に見えるが、単に表拍におけるポーズを接続したところでダンスらしくはならないことに着目し、動作の前の縮んでいる状態である裏拍のポーズを重視することで、ダンスらしいメリハリのある動作を表現することを着想した。なお、裏拍とは、コリオデータにおける拍の後半部分に相当する。
【０１３１】
ここでは、前述のボーンの調整をし、それぞれのボーンに角度のデータが保持されており、これらが各関節の限界角度を超えていない状態で、無理な速度（限界速度を超える速度）を要求された場合を考える。なお、ボーンの調整や角度制限を行う前に速度制限を適用してもよい。無理な速度を要求された場合、速度に制限を加える方法として、以下の２つの方法が考えられる：（１）可能な範囲（限界速度を超えない範囲）でボーンの遷移を行う、（２）裏拍を優先して（裏拍のポーズは再現されるように）ボーンの遷移を行う。
【０１３２】
図１６は、本発明の一実施形態に係るスピードの制限の一例を示す図である。図１６Ａ及び１６Ｂは、元データ（ＣＧモデル）の拍ごとの動きと、元データにスピードの制限の上記方法（１）を適用した場合の拍ごとの動きと、をそれぞれ示す。図１６では、ボーンＢ１を基点としてボーンＢ２が左回転及び右回転を繰り返す例が示されている。また、図１６Ａ及び１６Ｂの両方で、裏拍６００におけるポーズが一致しているものとする。
【０１３３】
図１６Ａは、限界速度が特に規定されていない場合に相当する。限界速度が規定されない場合には、ボーンの遷移距離がどれだけ離れていても、確実に到達するように遷移することができる。
【０１３４】
図１６Ｂでは、ボーンＢ２には限界速度が存在するため、半拍の時間では、裏拍６００の角度から表拍５００の角度まで遷移し切ることができない。そこで、ロボットは、ボーンＢ２を限界速度で左回転させるものの、表拍５００の時点から次の遷移（右回転）を開始する。遷移しきれなかった分の角度は無視される（つまり、本来のＢ２の遷移先（図１６Ａの表拍５００）には遷移しない）こととなる。
【０１３５】
また、限界速度のため、半拍の時間では、図１６Ｂにおける表拍５００の角度から裏拍６０１の角度まで遷移し切ることができない。そこで、ロボットは、ボーンＢ２を限界速度で右回転させ、裏拍６０１から次の遷移（左回転）を開始する。
【０１３６】
このように、方法（１）によれば、ボーンを遷移し切れない場合には途中で遷移を打ち切ることにより、コリオデータで規定される拍を維持することができる。
【０１３７】
図１７は、本発明の一実施形態に係るスピードの制限の別の一例を示す図である。図１７Ａ及び１７Ｂは、元データ（ＣＧモデル）の拍ごとの動きと、元データにスピードの制限の上記方法（２）を適用した場合の拍ごとの動きと、をそれぞれ示す。その他の環境は図１６と同様であり、例えば図１７Ａは図１６Ａと同じである。
【０１３８】
図１７Ｂでは、ボーンＢ２には限界速度が存在するため、半拍の時間では、裏拍６００の角度から表拍５００の角度まで遷移し切ることができない。そこで、ロボットは、コリオデータの時系列を先読みして次の裏拍（裏拍６０１）を参照し、次の裏拍の角度（及び／又は位置）への遷移が確実に実行できるように、表拍５００におけるボーンＢ２の座標（角度及び／又は位置）を決定する。そして、ボーンＢ２を、裏拍６００の角度から、決定した表拍５００の角度に遷移させる。
【０１３９】
表拍５００からは、次の遷移（右回転）を開始する。表拍５００の角度は裏拍６０１の角度に確実に遷移できるように調整されているため、ロボットは限界速度以下の速度でボーンＢ２を右回転させ、裏拍６０１で元データと同じ角度にする。
【０１４０】
このように、方法（２）によれば、コリオデータの先読みにより、各裏拍のポーズを再現することができるため、メリハリのある動きを実現することができる。
【０１４１】
なお、方法（２）では、各表拍のポーズもできるだけ保持されることが好ましいが、裏拍のポーズを維持するためには、表拍のポーズは元データと全く異なるように調整されてもよい。
【０１４２】
また、方法（２）では、いくつかの裏拍のポーズを保持することが難しい場合は、できるだけ多くの裏拍のポーズが保持されるように、及び／又は重要な裏拍のポーズが保持されるように、表拍のポーズだけでなく裏拍のポーズも調整されてもよい。つまり、裏拍に相当する少なくとも一部のタイミングの座標が優先的に維持されるように、コリオデータ及び／又は各ボーンの動作を修正してもよい。
【０１４３】
ここで、本発明者らは、ロボットの動きが不自然にならないようにするために確実にコリオデータ（上述のボーンの調整や、限界角度を超えない制限を適用したコリオデータを含む）の元の動きを再現すべき重要な拍について検討した。コリオデータを作成する際には、所定の拍数（例えば、２拍、４拍、８拍など）で構成される一連の動作を組み合わせる手法をとることが考えられる。例えば、ダンスの動きを示すコリオデータは、８拍単位（ワンエイト）や、８拍×４の３２拍単位（フォーエイト）で規定された振り付けを連結して作成してもよい。このような一連の動作は、例えば「ムーブ」と呼ばれてもよい。
【０１４４】
本発明者らは、上記の手法でコリオデータを作成する場合には、ムーブとムーブの連結点（整合点）の前後で動きの整合を取り、スムーズに動きを遷移させることが重要であることに着目した。そして、連結点の直前の裏拍、つまり、ムーブの最後の裏拍のポーズが保持されるように角度及び／又は速度の制限を適用することを着想した。
【０１４５】
図１８は、本発明の一実施形態に係るスピードの制限のさらに別の一例を示す図である。図１８Ａ及び１８Ｂは、元データ（ＣＧモデル）の拍ごとの動きと、元データにスピードの制限の上記方法（２）を適用した場合の拍ごとの動きと、をそれぞれ示す。図１８には、ＣＧモデル又はロボットを上から見た視点で、ボーンＢ１（上腕に相当）及びＢ２（前腕に相当）の一連の動き（ムーブ）が例示されている。また、図１８Ａ及び１８Ｂの両方で、裏拍６００におけるポーズが一致しているものとする。
【０１４６】
図１８Ｂでは、ムーブの最後の裏拍である裏拍６０２のポーズが保持され、かつ裏拍６０１のポーズができるだけ保持されるように、表拍５００及び５０１だけでなく、裏拍６０１のポーズが調整されている。各ボーンの経路は、各ボーンの末端（根から遠い方の関節点）の最終的な位置をもとに計算することができる。ボーンの経路計算について、図１９を参照して説明する。
【０１４７】
図１９は、本発明の一実施形態に係るスピードの制限における、ボーンの経路計算の一例を示す図である。図１９では、図１８におけるボーンＢ２の末端の経路計算について説明するが、他のボーンについても同様な経路計算を適用することができる。
【０１４８】
まず、ロボットは、元データの各裏拍の位置から、時間的に後続の表拍の位置の到達可能性を確認する（図示しないステップ０）。本例の場合、元データの裏拍６００の位置から表拍５００の位置に半拍の時間で到達可能かを判断する。本例では、到達可能であるものとする。なお、到達可能でない場合、表拍５００の位置を裏拍６００の位置に近づけて、到達可能なように調整してもよい。
【０１４９】
次に、ロボットは、元データの各表拍の位置から、時間的に後続の裏拍の位置の到達可能性を確認する（ステップ１）。本例の場合、ステップ０の表拍５００の位置から元データの裏拍６０１の位置に半拍の時間で到達可能かを判断する。本例では、到達可能でないものとする。このため、ロボットは、表拍５００の位置を裏拍６０１の位置に近づける。なお、位置を近づける際は、できるだけ元データの裏拍６００の位置から表拍５００の位置への動きの変化が少なくなるように（例えば、１つの座標軸（ロボットの前後方向など）のみの値が変わるように）調整することが好ましい。
【０１５０】
次に、ロボットは、裏拍の位置間の到達可能性を確認する（ステップ２）。本例の場合、元データの裏拍６０１及び裏拍６００の位置と、裏拍６０１及び裏拍６０２の位置と、についてそれぞれ１拍の時間で到達可能かを判断する。本例では、元データの裏拍６０１の位置から元データの裏拍６０２の位置に到達可能でないものとする。このため、ロボットは、裏拍６０１の位置を裏拍６０２の位置に近づける。
【０１５１】
次に、ロボットは、ステップ１で調整した表拍の位置を、ステップ２で調整した裏拍の位置を考慮して、再調整する（ステップ３）。この際、表拍の位置から裏拍の位置への到達可能性を維持したまま、ロボットの動きが不自然にならないように再調整されることが好ましい。例えば、本例では、ステップ１で縮めた表拍５００の位置と、元データの裏拍６０１の位置と、を結んだ軌道上に、表拍５００の位置を決定する。
【０１５２】
以上説明したようなボーンの経路計算によれば、限界速度の制限下において、メリハリのある動きを実現することができる。
【０１５３】
なお、図１９で上述したステップ０−３は、この順番に実行されなくてもよい。また、ステップ０−３の各処理は、繰り返し実行されてもよい。また、スピードの制限に係る表拍／裏拍の調整は、コリオデータ全体の拍に基づいてまとめて行われることが好ましいが、リアルタイム性が要求される場合などには、現在動作中の拍から近い拍のみを対象として行われてもよい。また、経路計算は上述のステップ０−３の処理に限られない。
【０１５４】
また、図１９では、ムーブの最後の裏拍のポーズが確実に保持されるようにスピードを調整する例を示したが、ポーズの再現性（例えば、各ボーンの座標、角度などが、コリオデータが示す値と同じであること）を保証するタイミングは、ムーブの最後の裏拍に限られない。例えば、ポーズの再現性を保証するタイミングは、他の裏拍であってもよいし、表拍であってもよいし、設定された特定の拍であってもよい。
【０１５５】
また、所定のタイミングに、ポーズの再現性を保証する優先度を設定してもよく、この場合、例えばムーブの最後の裏拍の優先度を他の拍の優先度より高く設定することが好ましい。各タイミング（拍）の優先度は、コリオデータにおける当該拍に対応するノートオン／オフ信号や、他のイベント（ＭＩＤＩイベント、ＳｙｓＥｘイベントなど）によりロボットに通知されてもよい。
【０１５６】
また、所定のタイミング（例えば、周期的なタイミング）で、ポーズを強制的にコリオデータに合わせる（調整を行わない）拍が規定されてもよい。例えば、ポーズを強制的にコリオデータに合わせる拍は、コリオデータにおける当該拍に対応するノートオン／オフ信号や、他のイベント（ＭＩＤＩイベント、ＳｙｓＥｘイベントなど）によりロボットに通知されてもよい。
【０１５７】
また、所定のタイミングで、各ボーンを所定の状態（例えば、初期状態）にリセットすることを示す情報（リセット情報）が、同様の信号及び／又はイベントによりロボットに通知されてもよい。この場合、ロボットは、コリオデータに含まれるリセット情報を検出すると、例えば検出したタイミングから所定の時間（例えば、１拍）かけて初期状態に各ボーンを遷移させるように制御してもよい。このように、強制的にポーズの調整を禁止したりポーズをリセットしたりすることにより、ポーズの調整が累積して仮に不自然なポーズが生じるような場合であっても、元の正常なポーズに戻すことが可能となる。
【０１５８】
上述したようなバランス調整及び／又は制限時の制御方法を示す情報（制御情報）が、コリオデータにおけるノートオン／オフ信号や、他のイベント（ＭＩＤＩイベント、ＳｙｓＥｘイベントなど）に含まれてロボットに通知されてもよい。そして、ロボットは、コリオデータに含まれる当該情報に基づいて、ロボットの動作の最中にバランス調整、角度／スピードの制限などの調整方法を変更してもよい。これにより、ロボットが行う動作の内容に応じて適切な調整が可能となる。
【０１５９】
例えば、コリオデータが通常の動作（歩行など）から激しい動作（ダンスなど）に変わる動作を示す場合、歩行動作時はスピードの制限の上記方法（１）を適用し、ダンス時はスピードの制限の上記方法（２）を適用するように制御情報をコリオデータに含めてもよい。これにより、ダンス時には裏拍を重視するように、ロボットを動的に制御することができる。
【０１６０】
なお、上述のバランス調整、角度／スピードの制限を考慮した調整などは、図３に示した生成部１６によって、ＣＧモデル向けのコリオデータからロボット１０向けのコリオデータを生成するときに合わせて行われてもよい。また、これらの調整は、図３に示した再生部１３によって、図１０のステップＳ２２における各構成要素の座標に関する時系列情報の変換の際に行われてもよい。
【０１６１】
なお、以上説明した各実施形態の適用は、ＣＧモデルのモーションデータをロボットに利用する場合に限られない。例えば、あるＣＧモデルのモーションデータとして作成されたコリオデータを、他のＣＧモデルのモーションデータとして利用する場合にも、上述のバランス調整、角度／スピードの制限などが実施されてもよい。このような制御は、ＣＧモデル間の骨格構造、階層構造の初期状態、基準姿勢、各骨の長さ、各関節の可動範囲などの違いを考慮して実現されてもよい。また、当該制御で考慮されるこれらのパラメータは、コリオデータに含まれる構成としてもよい。
【０１６２】
また、本明細書で説明した用語及び／又は本明細書の理解に必要な用語については、同一の又は類似する意味を有する用語と置き換えてもよい。また、本明細書で説明した情報、パラメータなどは、絶対値で表されてもよいし、所定の値からの相対値で表されてもよいし、対応する別の情報で表されてもよい。
【０１６３】
本明細書で説明した情報、信号などは、様々な異なる技術のいずれかを使用して表されてもよい。例えば、上記の説明全体に渡って言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、チップなどは、電圧、電流、電磁波、磁界若しくは磁性粒子、光場若しくは光子、又はこれらの任意の組み合わせによって表されてもよい。
【０１６４】
本明細書で説明した各態様／実施形態は単独で用いてもよいし、組み合わせて用いてもよいし、実行に伴って切り替えて用いてもよい。また、所定の情報の通知（例えば、「Ｘであること」の通知）は、明示的に行うものに限られず、暗黙的に（例えば、当該所定の情報の通知を行わないことによって）行われてもよい。
【０１６５】
本明細書で説明した各態様／実施形態の処理手順、シーケンス、フローチャートなどは、矛盾の無い限り、順序を入れ替えてもよい。例えば、本明細書で説明した方法については、例示的な順序で様々なステップの要素を提示しており、提示した特定の順序に限定されない。
【０１６６】
以上、本発明について詳細に説明したが、当業者にとっては、本発明が本明細書中に説明した実施形態に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。したがって、本明細書の記載は、例示説明を目的とするものであり、本発明に対して何ら制限的な意味を有するものではない。
【符号の説明】
【０１６７】
１…情報処理システム
１０…ロボット
１１…送受信部
１２…取得部
１３…再生部（制御信号生成部）
１４…出力部（駆動部）
１５…入力部
１６…生成部
１７…制御部
２０…ユーザ端末
３０…サーバ
４０…電子楽器
５０…ネットワーク
【図１】
0006684556.tif 000002
【図２】
0006684556.tif 000003
【図３】
0006684556.tif 000004
【図４】
0006684556.tif 000005
【図５】
0006684556.tif 000006
【図６】
0006684556.tif 000007
【図７】
0006684556.tif 000008
【図８】
0006684556.tif 000009
【図９】
0006684556.tif 000010
【図１０】
0006684556.tif 000011
【図１１】
0006684556.tif 000012
【図１２】
0006684556.tif 000013
【図１３】
0006684556.tif 000014
【図１４】
0006684556.tif 000015
【図１５】
0006684556.tif 000016
【図１６】
0006684556.tif 000017
【図１７】
0006684556.tif 000018
【図１８】
0006684556.tif 000019
【図１９】
0006684556.tif 000020