(58)【調査した分野】(Int.Cl.,DB名)
前記第1の時系列情報は、SMF(Standard MIDI File)フォーマットに準拠するデータ構造に含まれることを特徴とする請求項1に記載のデータ変換装置。
前記SMFフォーマットにおけるノートオン信号のノート番号及びベロシティは、CGモデルの構成要素の座標に関する情報として用いられることを特徴とする請求項2又は請求項3に記載のデータ変換装置。
前記SMFフォーマットにおけるデルタタイムは、CGモデルの構成要素の座標が変化する拍の長さに関する情報として用いられることを特徴とする請求項2から請求項4のいずれかに記載のデータ変換装置。
前記生成部は、前記所定のロボットに存在せず前記所定のCGモデルに存在する骨に関する前記第1の時系列情報に基づいて、当該骨に近接し、前記所定のロボットに存在する骨に関する前記第2の時系列情報を生成することを特徴とする請求項1から請求項7のいずれかに記載のデータ変換装置。
前記生成部は、前記所定のロボットに存在する骨に限界角度が規定される場合、前記第1の時系列情報における当該限界角度を超える角度を、当該限界角度として前記第2の時系列情報を生成することを特徴とする請求項1から請求項8のいずれかに記載のデータ変換装置。
前記生成部は、前記所定のロボットに存在する骨に限界角度が規定される場合、前記第1の時系列情報における当該限界角度を超える角度が、当該骨の角度及び当該骨の親である骨の角度の和と等しくなるように、前記第2の時系列情報を生成することを特徴とする請求項1から請求項9のいずれかに記載のデータ変換装置。
【発明を実施するための形態】
【0009】
本発明者らは、ロボットの動き制御に適したデータ構造を検討する上で、3次元コンピュータグラフィックス(3DCG(Three Dimensional Computer Graphics)、単にCG(Computer Graphics)などともいう)に着目した。3DCGでは、キャラクタ(CGモデル)を表現するために、様々なデータ構造が提案されており、例えば、人間などの複雑な骨格構造を持つキャラクタに適したデータ構造が提案されている(例えば、特許第3337938号公報、特許第3380158号公報など)。このようなCGモデル及びデータ構造を用いて、CGのアニメーション動画を作成することができる。
【0010】
本発明者らは、まず、音データ(例えば、楽曲データ、音声データなど)と同期が容易にできるCGモデルの動きデータ(モーションデータ)のデータ構造を検討した。そして、当該データ構造に従って生成されたCGモデルのモーションを用いて、ロボットのモーションを生成することを着想した。この際、CGモデルとロボットとの違いを考慮してモーションを修正する方法を見出した。これにより、ロボットのモーションを音データと容易に同期することができる。また、CGモデルと共通のデータ構造に基づくため、CGアニメーションとロボットの同期制御など、新たなサービスの展開が可能となる。
【0011】
具体的には、本発明の一態様によるデータ構造によれば、フレーム(CG動画を構成する静止画)単位や実時間単位ではなく、テンポに応じて実際の時間の長さが変化する拍単位(ビート単位)でCGモデルのモーションデータを構成することができる。当該データ構造を利用することにより、ロボットの動作を拍単位で制御することができる。
【0012】
なお、本発明の一態様に係る上記データ構造は、振り付け(choreography)データフォーマット、コリオデータフォーマットなどと呼ばれてもよい。また、コリオデータフォーマットで表現されるデータ、コリオデータフォーマットに準拠するデータ(例えば、コリオデータフォーマットに変換可能なフレーム単位の時系列データを含む)などのコリオデータフォーマットと互換性のあるデータは、コリオデータ、ダンスコリオデータなどと呼ばれてもよい。
【0013】
以下、本発明に係る実施形態について、添付図面を参照して詳細に説明する。
【0014】
(情報処理システム)
まず、本発明が適用される情報処理システムについて説明する。
図1は、本発明の一実施形態に係る情報処理システムの概略構成の一例を示す図である。
図1に示す情報処理システム1は、ロボット10と、ユーザ端末20と、サーバ30と、電子楽器40と、ネットワーク50と、を含む。
【0015】
ロボット10は、例えば、アルデバランロボティクス社のPEPPER(登録商標)、本田技研工業株式会社のASIMO(登録商標)など、比較的高性能な情報処理能力を有するロボットを想定するが、これらに限られるものではない。ロボット10の構造及び機能ブロックについては、
図2及び
図3で後述する。
【0016】
ユーザ端末20は、携帯電話、スマートフォン、タブレット型端末などの携帯端末(移動通信端末)であってもよいし、パソコン、多機能テレビ、セットトップボックス(例えば、Apple TV(登録商標)、Chromecast(登録商標))などの固定通信端末であってもよい。
【0017】
サーバ30は、ロボット10、ユーザ端末20及び/又は電子楽器40との間でコリオデータを送信及び/又は受信する機能を有する装置である。なお、当該コリオデータの送受信は、ロボット10、ユーザ端末20及び/又は電子楽器40からの要求により行われてもよいし、周期的又は所定のタイミングで行われてもよい。また、サーバ30は、コリオデータを用いて生成したデータ(例えば、動画など)を、ロボット10、ユーザ端末20及び/又は電子楽器40との間で送受信してもよい。
【0018】
電子楽器40は、MIDI(Musical Instrument Digital Interface)データ等の演奏情報に応じた音を発生する機能を有する装置である。例えば、電子楽器40は、電子ピアノ、シンセサイザーなどであるが、これに限られない。
【0019】
ネットワーク50は、機器間を接続し情報の通信を可能とする。例えば、ネットワーク50は、インターネット、モバイルネットワーク、LAN(Local Area Network)、WAN(Wide Area Network)などの様々なネットワークを含む。なお、ネットワーク50は、無線で構成されてもよいし、有線で構成されてもよい。
【0020】
なお、当該システム構成は一例であり、これに限られない。例えば、ロボット10、ユーザ端末20、サーバ30及び電子楽器40は、
図1ではそれぞれ複数含まれる構成としたが、各機器の数はこれに限られない。また、情報処理システム1は、ロボット10、ユーザ端末20、サーバ30及び電子楽器40の一部を含まない構成であってもよい。また、ネットワーク50に接続していないロボット10などであっても、所定の記憶媒体を接続することで、当該記憶媒体を介してコリオデータの入出力を行ってもよいし、内蔵する記憶装置を介してコリオデータを取得してもよい。
【0021】
図2は、本発明の一実施形態に係るロボットの一例を示す模式図である。
図2では骨格構造を構成する関節部を主に示している。
図2のロボットは、複数の関節部を有するロボットである。
図2Aは、2足直立歩行が可能な人間型ロボット(humanoid robot)である。
図2Bは、
図2Aのロボットを簡略化したような構成となっており、
図2Aに比べて一部の関節部が省略されている。
【0022】
図2Bのロボットは、鎖骨がなく、肩は胴体と独立した構成となっている。また、背骨や脚の骨がそれぞれ1本で表現されている。なお、
図2Bのロボットは、例えば脚部が胴体部と一体となった形状を有し、脚部の先に車輪(例えば、オムニホイール)、無限軌道などが配置される場合には、自走することが可能であってもよい。
【0023】
関節部のうち、一部は基準点(ルート)として、ロボット内で固定されていてもよい。例えば、
図2では、腰に相当する位置の関節部が、基準点として設定されている。
【0024】
各関節部は、本発明に係る技術分野での共通認識に基づいて説明されるロール/ピッチ/ヨー軸などで構成される。例えば、
図2において、肩に2軸(ロール/ピッチ)、肘に2軸(ロール/ヨー)、手首に1軸(ヨー)の自由度がある構成とすることができる。また、頭、指、足なども駆動する構成としてもよい。なお、関節部の数や、関節部における自由度は、
図2の構成に限られるものではない。
【0025】
図3は、本発明の一実施形態に係るロボットの機能構成の一例を示す図である。
図2に示すように、ロボット10は、送受信部11と、取得部12と、再生部(制御信号生成部)13と、出力部(駆動部)14と、入力部15と、生成部16と、制御部17と、を有する。ロボット10は、本発明に係る情報処理装置として、データ変換装置を構成することができる。また、ロボット10は、本発明の一態様に係る情報処理方法を実現することができ、コリオデータを用いて情報処理を行うステップを実行することができる。
【0026】
なお、
図3では、本実施形態における特徴部分の機能ブロックを主に示しており、ロボット10は、他の処理に必要な他の機能ブロックも有してもよい。
【0027】
送受信部11は、ネットワーク50を介して、他のロボット10、ユーザ端末20、サーバ30、電子楽器40との間で、コリオデータや必要な情報などの送受信を行う。送受信部11は、受信したコリオデータを、取得部12に出力する。また、送受信部11は、受信した所定のデータ(例えば、CGモデルのモーションデータ)を、生成部16に出力してもよい。また、送受信部11は、受信した種々の情報を制御部17に出力する。送受信部11は、本発明に係る技術分野での共通認識に基づいて説明されるトランスミッター/レシーバー、送受信回路又は送受信装置により構成することができる。なお、送受信部11は、送信部及び受信部から構成されてもよい。
【0028】
取得部12は、送受信部11及び/又は生成部16からコリオデータを取得する。取得部12は、取得したコリオデータを、送受信部11及び/又は再生部13に出力する。
【0029】
再生部(制御信号生成部)13は、取得部12から入力されたデータの再生を行って、出力部14に出力する。再生部(制御信号生成部)13は、例えば、後述の生成部16で修正されたコリオデータを解釈して、ロボットの動作(関節部の動作)を制御する信号(制御信号)を生成し、出力部14に出力する。
【0030】
また、再生部(制御信号生成部)13は、制御部17からの指示(例えば、CGモデルの構造とロボット10の構造との差分に関する情報を含む)に基づいて、CGモデル向けのコリオデータを解釈して、ロボット10の構造や動作の制限(例えば、各関節点の角度や移動速度の制限)を考慮して、ロボットが実現可能な動作を制御する信号(制御信号)を生成し、出力部14に出力してもよい。再生部(制御信号生成部)13の一部は、本発明に係る技術分野での共通認識に基づいて説明される信号生成器、信号生成回路又は信号生成装置から構成することができる。
【0031】
また、再生部13は、所定のコンテンツ(例えば、楽曲、音声などの音データ)の再生を行って、出力部14に出力してもよい。例えば、コンテンツが音データであれば、コンテンツに係る音声ファイルフォーマットに従って、出力部14が認識できる形式で再生用信号に変換する。再生部13の一部は、本発明に係る技術分野での共通認識に基づいて説明されるプレイヤー、画像/映像/音声処理回路、画像/映像/音声処理装置、アンプなどにより構成することができる。
【0032】
出力部(駆動部)14は、再生部13から入力された制御信号に基づいて、複数の関節部を駆動して、ロボット10の動作を実現する。具体的には、出力部14の一部は、ロボット10の関節部を構成し、各関節部は、制御信号に基づいて所定の軸周りの回転動作を行うモータ、当該モータの回転位置を検出するエンコーダ、当該エンコーダの出力に基づいて上記モータの回転位置・速度を制御するドライバなどにより構成される。なお、出力部(駆動部)14の構成はこれに限られず、本発明に係る技術分野での共通認識に基づいて説明されるアクチュエータ、駆動回路、駆動装置などにより構成することができる。
【0033】
また、出力部14は、再生部13から入力されたコンテンツの再生信号の出力を行う。例えば、出力部14の一部は、視覚的なデータ(例えば、CG動画)を表示する表示部と、音データを出力する音声出力部と、から構成されてもよい。表示部は、本発明に係る技術分野での共通認識に基づいて説明されるディスプレイ、モニタなどの表示装置により構成することができる。また、音声出力部は、本発明に係る技術分野での共通認識に基づいて説明されるスピーカーなどの出力装置により構成することができる。
【0034】
入力部15は、外部環境の情報を取得する。例えば、入力部15の一部は、静止画像及び/又は動画像を取得するカメラ、音声を取得するマイクロフォン、各種センサ(タッチセンサ、接地センサ、加速度センサ、傾斜センサ、ジャイロ、温度センサ(サーモグラフィ)、超音波センサ、測域センサ(レーザスキャンセンサ)、無線ビーム(レーダー)など)のいずれか又はこれらの組み合わせにより構成されてもよい。
【0035】
また、入力部15は、ユーザからの操作により、ロボット10に対する入力を受け付け、入力結果を制御部17に出力してもよい。入力部15の一部は、本発明に係る技術分野での共通認識に基づいて説明されるキーボード、マウスなどの入力装置により構成することができる。また、入力部15の一部は、表示部と一体となった構成(例えば、タッチパネル)としてもよい。
【0036】
また、入力部15は、所定の機器や記憶媒体と接続され、データの入力を受け付けてもよい。当該入力結果は、制御部17や、生成部16に出力される。この場合、入力部15の一部は、本発明に係る技術分野での共通認識に基づいて説明される入出力端子、入出力回路などを含んで構成することができる。
【0037】
生成部16は、送受信部11、入力部15などから取得部12を介して入力されたデータを用いて、コリオデータを生成する。生成部16は、制御部17からの指示(例えば、CGモデルの構造とロボット10の構造との差分に関する情報を含む)に基づいて、CGモデル向けのコリオデータを修正して、ロボット10向けのコリオデータを生成(コリオデータを変換)してもよい。生成したコリオデータは、送受信部11や取得部12、再生部13などに出力されてもよい。生成部16は、本発明に係る技術分野での共通認識に基づいて説明される演算器、演算回路、演算装置などにより構成することができる。
【0038】
制御部17は、ロボット10全体の制御を実施する。例えば、制御部17は、取得部12がコリオデータを取得したり、出力したりするタイミングを制御してもよい。また、制御部17は、生成部16が生成したコリオデータをロボット10に保存するように制御してもよい。制御部17は、本発明に係る技術分野での共通認識に基づいて説明されるコントローラ、制御回路又は制御装置により構成することができる。
【0039】
また、制御部17は、取得部12が取得したCGモデル向けのコリオデータに基づいて、当該CGモデルの構造と、ロボット10の構造との差分を検出(判断)し、当該差分に基づいて、生成部16(及び/又は再生部13)におけるコリオデータの変換を制御する。制御部17は、ロボット10の構造に関する情報を、予め有するものとする。ここで、ロボット10の構造に関する情報は、例えば、骨格構造、骨格構造に係る階層構造の初期状態、基準姿勢、各骨の長さ、各関節の可動範囲などに関する情報であるが、これらに限られない。なお、骨格構造については
図4を用いて後述する。
【0040】
また、制御部17は、変換されたロボット10向けのコリオデータを、取得部12を介して再生部13に出力するように制御することができる。なお、制御部17は、他のロボット10の構造に関する情報を保持する場合には、当該他のロボット10向けのコリオデータを生成するように生成部16を制御してもよい。
【0041】
なお、ユーザ端末20、サーバ30、電子楽器40なども、
図3に示す機能ブロックの全部又は一部を有してもよく、ロボット10と同様に本発明の一態様に係る情報処理方法を実現し、本発明の一態様に係るデータ変換装置を構成してもよい。例えば、ユーザ端末20、サーバ30、電子楽器40などが、ロボット10の代わりに、所定のCGモデル向けのコリオデータを修正して、所定のロボット10向けのコリオデータを生成してもよい。生成されたロボット10向けのコリオデータは、サーバ30などに保存されてもよいし、ロボット10に送信されてもよい。
【0042】
図3で示した機能ブロックのうち、一部がまとめられて本発明の一実施形態に係るデータ変換装置を構成してもよい。当該データ変換装置は、少なくとも、取得部12と、生成部16と、制御部17と、から構成される。当該データ変換装置によれば、生成部16が、制御部17からの指示に基づいて、取得部12で取得されたCGモデル向けのコリオデータを修正して、ロボット10向けのコリオデータを生成することができる。
【0043】
なお、上記実施形態の説明に用いたブロック図は、機能単位のブロックを示している。これらの機能ブロック(構成部)は、ハードウェア及びソフトウェアの任意の組み合わせによって実現される。また、各機能ブロックの実現手段は特に限定されない。すなわち、各機能ブロックは、物理的に結合した1つの装置により実現されてもよいし、物理的に分離した2つ以上の装置を有線又は無線で接続し、これら複数の装置により実現されてもよい。
【0044】
例えば、ロボット10やユーザ端末20などの各機能の一部又は全ては、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)、FPGA(Field Programmable Gate Array)などのハードウェアを用いて実現されてもよい。また、ロボット10やユーザ端末20などは、プロセッサ(CPU:Central Processing Unit)と、ネットワーク接続用の通信インターフェースと、メモリと、プログラムを保持したコンピュータ読み取り可能な記憶媒体と、を含むコンピュータ装置によって実現されてもよい。つまり、本発明の一実施形態に係るロボット10やユーザ端末20などは、CGモデル向けのデータ構造(コリオデータ)をロボット10向けのデータ構造(コリオデータ)に変換する処理を行うコンピュータとして機能してもよい。
【0045】
ここで、プロセッサやメモリなどは情報を通信するためのバスで接続される。また、コンピュータ読み取り可能な記録媒体は、例えば、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、EPROM(Erasable Programmable ROM)、CD−ROM(Compact Disc−ROM)、RAM(Random Access Memory)、ハードディスクなどの記憶媒体である。また、プログラムは、電気通信回線を介してネットワーク50から送信されてもよい。
【0046】
ロボット10やユーザ端末20などの機能構成は、上述のハードウェアによって実現されてもよいし、プロセッサによって実行されるソフトウェアモジュールによって実現されてもよいし、両者の組み合わせによって実現されてもよい。プロセッサは、オペレーティングシステムを動作させてユーザ端末の全体を制御する。また、プロセッサは、記憶媒体からプログラム、ソフトウェアモジュールやデータをメモリに読み出し、これらに従って各種の処理を実行する。
【0047】
ここで、当該プログラムは、本発明の一態様に係るコリオデータに関する情報処理を、コンピュータに実行させるプログラムであればよい。例えば、ロボット10の制御部17は、メモリに格納され、プロセッサで動作する制御プログラムによって実現されてもよく、他の機能ブロックについても同様に実現されてもよい。
【0048】
また、ソフトウェア、命令などは、伝送媒体を介して送受信されてもよい。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア及びデジタル加入者回線(DSL)などの有線技術及び/又は赤外線、無線及びマイクロ波などの無線技術を使用してウェブサイト、サーバ、又は他のリモートソースから送信される場合、これらの有線技術及び/又は無線技術は、伝送媒体の定義内に含まれる。
【0049】
本発明の一態様においては、上述したような各装置がコリオデータを利用する。以下では、まずコリオデータフォーマットについて説明し、コリオデータを用いたロボットの動作方法や、CGモデルの構造とロボットの構造との違いを考慮したコリオデータ調整方法について説明する。
【0050】
(コリオデータフォーマット)
本発明の一態様に係るコリオデータフォーマットは、CGモデルの構成要素の座標を、拍単位で時系列に指定するための時系列情報を含むデータのフォーマットである。なお、「拍単位」とは、「拍」で特定可能な単位であることをいい、1拍単位に限られず、8分の1拍単位などの分数拍単位や、2拍単位などの複数拍単位も含む。
【0051】
上述のように、本発明者らは、音データと同期が容易にできるCGモデルの動きデータを検討した。動きの再現性やデータ量、他システムとの連携などを鑑みた結果、本発明者らは、電子楽器の演奏情報の保存形式が、拍単位でのデータ構造の表現に好適であることを見出し、本発明の一態様に係るコリオデータフォーマットに至った。
【0052】
具体的なフォーマットの説明の前に、まずCGモデルの表現方法について説明する。本明細書では、骨格構造(多関節構造)を有するスケルトンモデルをCGモデルとして用いる場合を例に説明するが、本発明を適用可能なCGモデルはこれに限られるものではない。
【0053】
図4は、骨格構造(多関節構造)を有するスケルトンモデルの一例を示す図である。
図4Aは、スケルトンモデルの各構成要素及び基準姿勢を示し、
図4Bは、スケルトンモデルの構成要素間の関係を示す。なお、
図4に示す例は基本的な構成であり、さらに追加の構造(例えば、皮膚、指、毛髪、衣装、帽子、ステッキなど)を有していてもよい。
【0054】
図4Aに示すモデルは、複数の骨格から構成されており、各骨格は2つの関節点及びこれらをつなぐ骨(ボーン)から構成されている。
図4Aの「N」、「RS」などは骨の名称であり、この例では18本の骨が示されている。
【0055】
一般的にスケルトンモデルは、ある関節点を基準点(ルート)として、各関節点を介して接続される骨が階層構造を有するように構成されている。例えば、
図4Aの階層構造は
図4Bのように表される。
図4の場合、B1及びWの間の関節点がルートである。また、関節点や骨を比較する際、ルートに近い方を親といい、ルートから遠い方を子という。
【0056】
CGモデルを3次元空間に配置する際は、当該モデルを、ルートの位置を基準とした当該モデル用の座標系(ローカル座標系)上にモデリングする。そして、3次元空間全体を表す座標系(ワールド座標系、グローバル座標系)に、モデリングされたCGモデルをマッピングする。
【0057】
構成要素(関節点、骨など)の座標は、3次元空間の絶対座標又は相対座標として表されてもよいし、所定の関節点を基準とした所定の骨の相対角度として表されてもよい。例えば、骨の相対角度で座標を表現する場合、CGモデルの基準姿勢を
図4AのようなT字姿勢とし、当該姿勢時の各骨の角度を0°としてもよい。
【0058】
なお、階層構造やルートの位置は
図4の例に限られない。例えば、ルートの位置は両足の間(RF3とLF3との間)であってもよい。また、各構成要素の座標及び/又は角度は、ルートから末端にかけて順番に計算するフォワードキネマティクスを用いて算出してもよいし、子の位置から親の位置を逆計算するインバースキネマティクスを用いて算出してもよいし、両者の組み合わせ又はその他の方法を用いてもよい。また、骨格構造においては、上記の階層構造だけでなく、階層構造の初期状態や、各骨の長さや、各関節の可動範囲などが設定されてもよい。
【0059】
(SMFフォーマットとコリオデータフォーマット)
上述のように、本発明の一態様におけるコリオデータフォーマットは、電子楽器の演奏情報の保存形式に準拠することが好ましい。特に、広く普及しているMIDIデータの保存形式が好適である。次に、MIDIデータの保存形式の1つであるSMF(Standard MIDI File)フォーマットの概略を説明し、SMFフォーマットに準拠するコリオデータフォーマットを説明する。
【0060】
SMFフォーマットは、所定の制御情報を含むヘッダチャンクと、演奏データを含むトラックチャンクから構成される。演奏データは、デルタタイム及びMIDIイベントの組み合わせで構成される。ここで、デルタタイムは次のMIDIイベントが起こるまでの時間を表す。また、MIDIイベントは演奏内容を表すものであり、例えば、ノートオン(音を出す)、ノートオフ(音を止める)などがある。
【0061】
ノートオン信号は、対応するデルタタイムの経過後に特定の音を出すという信号である。ノートオン信号は、例えば、16進数で「9n kk vv」という3byteで表現でき、これは「チャンネルnでノート番号kkの音をベロシティvvで発音する」ということを意味する。
図5は、ノートオン信号の概念説明図である。
図5に示すように、チャンネルは楽譜におけるパート(所定の楽器の演奏パート)、ノート番号は音の高さ、ベロシティは楽器(鍵盤)を叩く速度(強さ)を表す。
【0062】
ノートオフ信号は、対応するデルタタイムの経過後に特定の音を消すという信号である。ノートオフ信号は、例えば、16進数で「8n kk vv」という3byteで表現でき、これは「チャンネルnでノート番号kkの音をベロシティvvで消音する」ということを意味する。
【0063】
ノート番号及びベロシティはいずれも10進数で0〜127の数値を取ることができる。なお、ベロシティが0のノートオン信号「9n kk 00」は、「チャンネルnでノート番号kkの音を消音する」というノートオフ信号と同じ意味を表す。
【0064】
図5におけるチャンネル0及び1に示される4分音符に対応するノートオン信号は、それぞれ「90 3E 04」及び「91 3C 02」のように表すことができる。
【0065】
本発明の一態様においては、各チャンネルを、それぞれCGモデルのいずれかの構成要素の座標に関する情報として扱う。つまり、コリオデータフォーマットは、CGモデルの構成要素の座標に関する拍単位の時系列情報を、複数含んで構成されてもよい。ここで、構成要素(例えば、骨、関節点など)の座標に関する情報とは、例えば、構成要素の絶対座標又は相対座標に関する情報であってもよいし、構成要素(例えば、骨)の相対角度として表されてもよい。
【0066】
CGモデルの構成要素の座標に関する情報としては、ノートオン信号のノート番号及び/又はベロシティを用いることができる。この場合、あるタイミングにおいて、所定の構成要素の特定の軸の角度及び/又は座標は、当該タイミングに対応する拍に配置されたノートオン信号から取得することができる。また、ノートオン信号及び/又はノートオフ信号のデルタタイムは、CGモデルの構成要素の座標が変化する拍の長さに関する情報として用いられてもよい。
【0067】
例えば、ノートオフ信号に対応するデルタタイムは、当該ノートオフ信号の直前のノートオン信号から算出される角度(又は座標)から、当該ノートオフ信号の直後のノートオン信号から算出される角度(又は座標)に遷移するのにかかる拍の長さを示してもよい。各ノートに関連付けられた所定の構成要素の角度及び/又は座標の遷移は、所定の規則に従って行われてもよい。例えば、所定の補間方法に基づいて、遷移中の速度や加速度を決定して用いてもよい。なお、デルタタイムは、正数であることが好ましい。
【0068】
ノートオン/オフ信号はSMFフォーマットで最も頻繁に用いられる信号であるため、MIDIに対応した電子楽器などにおいて、処理を高速に行うことが可能である。
【0069】
ノートオン信号においては、ノート番号により、比較的大きな単位で座標又は角度を大まかに特定し、ベロシティにより、比較的小さな単位で座標又は角度を詳細に特定してもよい。例えば、あるチャンネルにおけるノートオン信号が特定の軸方向の角度(例えば、x軸相対角度)を示す場合には、以下の式1で当該角度θを算出してもよい。
【0070】
(式1)
θ=(N−N
0)×θ
N+(V−V
0)×θ
V
ここで、Nはノート番号、N
0は基準とするノート番号、θ
Nはノート番号増分あたりの角度増加量、Vはベロシティ、V
0は基準とするベロシティ、θ
Vはベロシティ増分あたりの角度増加量である。
【0071】
例えば、N
0は60(鍵盤の中央の「C(ド)」音に対応)、V
0は1、θ
Nは5°、θ
Vは0.05°としてもよい。なお、N
0、V
0、θ
N、θ
Vなどは上記の値に限られない。
【0072】
また、あるチャンネルにおけるノートオン信号が特定の軸方向の座標を示す場合には、以下の式2で当該座標位置Pを算出してもよい。
【0073】
(式2)
P=(N−N
0)×P
N+(V−V
0)×P
V
ここで、Nはノート番号、N
0は基準とするノート番号、P
Nはノート番号増分あたりの座標増加量、Vはベロシティ、V
0は基準とするベロシティ、P
Vはベロシティ増分あたりの座標増加量である。
【0074】
例えば、N
0は60(鍵盤の中央の「C(ド)」音に対応)、V
0は1、P
Nは64cm、P
Vは0.5cmとしてもよい。また、P
Nは127cm、θ
Vは1cmとしてもよい。なお、N
0、V
0、P
N、P
Vなどは上記の値に限られない。
【0075】
また、上記とは逆に、ベロシティにより、比較的大きな単位で座標又は角度を大まかに特定し、ノート番号により、比較的小さな単位で座標又は角度を詳細に特定する構成としてもよい。さらに、システムエクスクルーシブ(SysEx)イベントなど、ノートオン/オフ以外の信号を用いてCGモデルの構成要素の座標に関する情報が特定されてもよい。
【0076】
構成要素の座標に関する情報は、例えば、ポジション情報及びポーズ情報に分類することができる。ポジション情報は、CGモデルの初期位置(例えば、CG動画の開始時における位置)からの相対位置を示す情報であり、例えばCGモデルの基準点(ルート)のx軸座標、y軸座標、z軸座標及び当該基準点の回転角度で表されてもよい。また、ポーズ情報は、CGモデルの基準姿勢に基づく角度又は位置を示す情報であり、例えば
図4AのようなT字姿勢を0°とし、いくつかの数の指定ボーンに関して、親骨と子骨との間のx軸相対角度、y軸相対角度及びz軸相対角度で表されてもよい。
【0077】
各構成要素(例えば、骨)の各座標に関する情報を、いずれのチャンネルに割り当てるかは、システムの運用形態などに応じて適宜選択することができる。1チャンネルにつき1つの構成要素の座標に関する情報を割り当てる場合、CGモデルを表現するのに必要なチャンネル数は、指定ボーン数を18とすると計58チャンネルである。具体的には、ポーズ情報のために18(ボーン数)×3(軸数)=54(チャンネル)が必要となり、ポジション情報のために3(ポジション座標)+1(ポジション基準角度)=4(チャンネル)が必要となる。MIDIポートは16チャンネルを含むことができるため、4MIDIポートあれば、ボーン数18から成るCGモデルの座標及び姿勢を表現することができる。なお、CGモデルの表情や指先などを表現する場合には、さらに追加でチャンネルが必要になるため、必要なMIDIポート数も増加する。
【0078】
一方、1チャンネルにつき構成要素の座標に関する情報を複数割り当ててもよい。例えば、1チャンネルで、所定の骨のx軸相対角度、y軸相対角度及びz軸相対角度を表現するように構成することができる。この場合、例えば、ノート番号を3分割して、比較的小さなノート番号(例えば、0〜42)をx軸相対角度、比較的中間のノート番号(例えば、43〜85)をy軸相対角度、比較的大きなノート番号(例えば、86〜127)をz軸相対角度として用いてもよい。なお、割り当て方法はこれに限られない。
【0079】
また、コリオデータフォーマットが準拠するSMFフォーマットは、特に制限されない。例えば、1トラックに全チャンネルの情報を含むフォーマット0であってもよいし、複数トラックで構成されるフォーマット1であってもよいし、フォーマット2であってもよい。さらに、既存のフォーマット0〜2でない新たなフォーマットを用いてもよい。また、コリオデータフォーマットは、CGモデルの構成要素の座標を拍単位で時系列に指定するための情報を有するものであれば、SMFフォーマットに限られない。
【0080】
図6は、本発明におけるデータ構造における各チャンネルのノートオン信号と、所定の構成要素との対応関係の一例を示す図である。上述のように、スケルトンモデルの一実施形態としては、各関節(又は骨)の角度はx軸角度、y軸角度及びz軸角度の3要素で表現される。
図6においては、
図4で示した「RA1」部分の骨のx軸角度、y軸角度及びz軸角度を示す情報が、それぞれ異なるチャンネルに割り当てられている。なお、
図6のx軸角度、y軸角度及びz軸角度が示す方向は一例であり、これに限られない。また、
図6に示す五線譜の中央の線に対応するノート番号が10進数で60であるものとし、式1においてN
0を60、V
0を1、θ
Nを5°、θ
Vを0.05°とする。
【0081】
図6において、x軸角度に対応するチャンネルのノートオン信号は、ノート番号が10進数で70、ベロシティが1である。したがって、式1によればx軸角度は+50°となる。また、y軸角度に対応するチャンネルのノートオン信号は、ノート番号が62、ベロシティが3である。したがって、式1によればy軸角度は+10.1°となる。また、z軸角度に対応するチャンネルのノートオン信号は、ノート番号が60、ベロシティが1である。したがって、式1によればz軸角度は0°となる。
【0082】
図7は、本発明に係るコリオデータフォーマットに準拠する具体的なデータ例を示す図である。
図7では、バイト単位のデータ列と、対応する情報と、が示されている。なお、
図7ではデータ列が複数の行に亘って示されているが、実際には連続したデータである。また、
図7のコリオデータフォーマットはSMFフォーマット1に準拠するものであるが、これに限られない。
【0083】
図7の一行目のデータ列は、MIDIヘッダに対応している。ここでは四分音符の分解能は48と設定されている。
図7の二行目のデータ列は、コンダクタトラックに対応している。一般的に、テンポはBPM(Beats Per Minute)単位を用いてコンダクタトラックで指定される。
図7ではBPMは120に設定されている。
図7の三行目及び四行目のデータ列は、通常のトラック(演奏トラック)に対応している。
【0084】
ノートオン信号100は、チャンネル0(例えば、ボーンID 0のx軸角度に対応する)においてノート番号3C、ベロシティ7Fの発音開始を指示している。ノートオン信号100は、対応するノートオフ信号110によって終了する。また、ノートオフ信号110のデルタタイムは6(8分の1拍に相当)である。このため、ノートオン信号100によって示される角度から、次のノートオン信号(ノートオン信号120)によって示される角度への遷移時間が8分の1拍であることを示している。
【0085】
また、同じチャンネルの信号が連続する場合には、ランニングステータスを用いて2回目以降のステータスバイトを省略することができる(ノートオン信号110、120)。ノートオン信号130は、別のチャンネル(チャンネル1)に関する情報を含んでいる。また、ノートオフ信号140及び150は、それぞれノートオン信号120及び130に対応する。
【0086】
以上説明したように、本発明に係るコリオデータフォーマットは、例えばSMFフォーマットと互換性を持ち、MIDIにおけるチャンネルごとに、CGモデルの構成要素の座標を拍単位で時系列に指定するための時系列情報(ノートオン/オフ信号の繰り返し)を含む。データ構造をSMFフォーマットとすることで、CGモデルの動作(ひいては、ロボットの動作)と、電子楽器など他の機器又はシステムとの連携が容易になる。
【0087】
コリオデータとしては、所定の拍の長さに対応するフレーム周期ごとに、所定の数の指定ボーンの3つの特定角によるポーズ情報と、4軸からなるポジション情報と、を持つデータが好適である。当該所定のフレーム周期は、所定のテンポ(例えば、BPM)に基づいて特定することができる。例えば、当該所定のフレーム周期は、所定のテンポにおけるある拍の長さ(例えば、1拍分、8分の1拍分など)に対応する周期であってもよい。また、当該所定のフレーム周期は、拍の長さに、単位時間あたりのフレーム数(例えば、FPS(Frames Per Second))を掛けることで算出できる。
【0088】
より具体的には、コリオデータは、8分の1拍単位で情報を保持することが好ましい。この理由について
図8及び9を用いて説明する。
図8は、1拍の中における典型的な角度変化のパターンの一例を示す図であり、
図9は、1拍の中における各8分の1拍を抽出する一例を示す図である。
【0089】
本発明者らは、生物(例えば、人、動物など)の構成要素の動き(例えば、角度)の変化が、拍単位で見ると、
図8に示すような加減、減加、単調増加又は単調減少のいずれかのパターンでほとんど表現されることに着目した。また、本発明者らは、当該着目点を鑑みた結果、
図9に示すように、1拍中に8つの点を抽出することで、動きの変化のパターンの判別と、動きが遷移するカーブの大まかな形の再現と、を行えることを見出し、コリオデータとして8分の1拍単位で情報を保持するという発想に至った。
【0090】
なお、コリオデータとして含まれる時系列情報は、8分の1拍単位に限られず、データ量と元モーションデータの再現性とのトレードオフなどを考慮して適宜増減させてもよい。
【0091】
(コリオデータフォーマットに従うデータを用いたロボット動作フロー)
図10は、コリオデータフォーマットに準拠したモーションデータを用いてロボットが動作する場合のフローの一例を示す。また、
図10のフローの実施例として、
図3に示した各機能ブロックが行う具体的な処理内容の一例について、
図11及び12を参照して説明する。
【0092】
図11は、保存されたコリオデータに基づく動作の一例を示す図である。また、
図12は、リアルタイムで生成されるコリオデータに基づく動作の一例を示す図である。
図11では、ロボット10が、別のロボット10、ユーザ端末20又はサーバ30に保存されるコリオデータに基づいて動作する場合を示し、
図12では、ロボット10が、電子楽器40から出力されるコリオデータに基づいて動作する場合を示すが、これに限られるものではない。例えば、ロボット10は、自装置に記憶されるコリオデータに基づいて動作することができる。
【0093】
図11において、シーケンサはMIDIデータ(コリオデータ)を取得するものであるから、
図3の取得部12に相当する。また、
図12において、シーケンサはMIDI信号(コリオデータ)を生成して取得するものであるから、
図3の生成部16(及び取得部12)に相当する。また、
図11及び12において、MIDIスルーボックスは、MIDI信号(コリオデータ)を取得するものであるから、
図3の取得部12に相当する。なお、
図11及び12では簡単のため省略しているが、MIDI信号は送受信部11を用いてネットワーク50を介して送受信される。
【0094】
また、
図11及び12では、ロボット10が受信するMIDI信号は、コリオデータを示すチャンネル(モーションチャンネルなどと呼ばれてもよい)及び音データを示すチャンネル(音声チャンネル、音楽チャンネルなどと呼ばれてもよい)を含むものとするが、これに限られず、少なくともコリオデータが含まれればよい。
【0095】
図10に示すフローでは、まず、各所定の拍におけるCGモデルの構成要素の座標に関する情報(相対角度など)を取得する(ステップS21)。具体的には、ステップS21において、取得部12(MIDIスルーボックス)はMIDI信号を取得して、モーションチャンネル及び音声チャンネルに分離し、モーションチャンネルを生成部16に出力する。
【0096】
次に、各拍におけるCGモデルの構成要素の座標に関する情報を、ロボット10の構成要素の座標に関する情報に変換する(ステップS22)。例えば、生成部16が当該変換を行って、変換結果を再生部13に出力する。当該変換は、CGモデル及びロボット10それぞれの骨格構造、階層構造の初期状態、基準姿勢、各骨の長さや、後述するようなロボット10の構造や動作の制限(例えば、各関節の可動範囲、移動速度の制限など)を考慮して、CGモデルの各構成要素について座標変換(例えば、位置、角度の調整)を行うことで実現されてもよい。また、当該変換で考慮されるこれらのパラメータは、コリオデータに含まれる構成としてもよい。
【0097】
次に、ロボット10の構成要素の座標を、ロボット10の制御単位時間に対応付ける(ステップS23)。ステップS23では、まず、再生部13は、生成部16から出力されたコリオデータ(SMFフォーマット)をデコーダにより解析し、各チャンネルのノートオン/オフ信号に基づいて、各構成要素の座標に関する時系列情報を取得する。
【0098】
ステップS23の対応付けは、所定のテンポ(例えば、BPM)と、ロボット10の制御単位時間(例えば、CPUやモータの性能などによって決まる、制御単位となる最小時間)と、に基づいて行うことができる。なお、ロボット10の制御単位時間は、CGモデルを動画として表示する際に単位時間あたりに処理させるフレーム数(例えば、FPS)に関連付けられていてもよい。
【0099】
ここでの所定のテンポは、コリオデータがテンポに関する情報を含む場合には、当該情報から取得されてもよい。また、ロボット10の動作と同期して再生される他のデータ(例えば、楽曲データ)から検出されたテンポであってもよいし、外部から設定された又は予め記憶されるテンポであってもよい。
【0100】
具体的には、ステップS23においては、再生部13は、ステップS21のコリオデータ(又はステップS22の変換結果)から第1のBPMを取得する。また、再生部13は、ロボット10の動作と同期して再生するデータ(例えば、楽曲データ)から第2のBPMを取得してもよい。そして、再生部13は、ステップS21で取得された時系列情報を、第1のBPMと第2のBPMとに基づいて時間方向に調整する。例えば、再生部13は、第1のBPMと第2のBPMとが異なる場合、ステップS21で取得された時系列情報を、第1のBPMを第2のBPMで割った値だけ伸縮させる。
【0101】
このようにして、再生部13は、ステップS21で取得された時系列情報又は上記伸縮が適用された時系列情報に基づいて、ロボット10の各制御単位時間に対応する時刻における各構成要素の座標(位置、角度など)を決定する。また、再生部13は、制御単位時間の所定のタイミング(例えば、開始タイミング)に対応する座標に関する情報がない場合には、近い時間の座標に関する情報から所定の補間方法(例えば、サインカーブ補間)を用いて、当該タイミングにおける座標を決定してもよい。
【0102】
コリオデータが含む角度又は座標に関する情報は量子化されているため、元データが閾値付近で微動するものであった場合は、ロボット10の動作にガタツキが生じる恐れがある。そこで、再生部13は、角度及び/又は座標に対して、補間処理を適用することで、ガタツキを抑制してもよい。この補間処理としては、例えば、
図12に示すように、ローパスフィルタを用いた指数移動平均などを用いることができる。
図12のようなリアルタイム再生の場合、未来のデータは利用できないため、ローパスフィルタの処理が好適である。
【0103】
最後に、ステップS23で決定された各構成要素(関節部)の座標に基づいて制御信号を生成し、当該制御信号に基づいて、各関節部の処理を制御する(ステップS24)。具体的には、ステップS24においては、再生部(制御信号生成部)13は、制御単位時間ごとに、関節部におけるモータの回転速度などを指示する情報を含む制御信号を生成する。そして、出力部14は、各関節部に対して制御信号を送信し、関節部を駆動させてロボット10を動作させる。なお、複数の制御単位時間の制御信号をまとめて送信してもよいし、所定の制御単位時間については、所定の関節部に対して制御信号が送信されなくてもよい(例えば、当該所定の関節部の位置及び角度が変わらない場合など)。
【0104】
なお、
図10では、ステップS22の処理を生成部16が行う例を示したが、これに限られない。例えば、ステップS21で取得部12がモーションチャンネルを直接再生部13に出力し、ステップS22で再生部13がCGモデル向けのコリオデータを解釈して、ロボット10の構造や動作の制限(例えば、各関節点の角度や移動速度の制限)を考慮して、座標を変換及び/又は修正する処理を行う構成としてもよい。
【0105】
また、
図11及び12に示すように、再生部13は、音声チャンネルを入力された場合には、MIDI音源によりモーションチャンネルが示すロボット10の動作と同期するように再生を行って、出力部14がスピーカーにより出力して音を出す構成とすることができる。
【0106】
また、
図12の例において、ロボット10の動作と同期して再生される他のデータ(例えば、楽曲データ)もコリオデータと同様にリアルタイムで取得される(ストリーミング配信される)構成としてもよい。当該構成では、通信状況の悪化により、パケットロス、遅延などが発生してストリーミング音源の再生が停止などする場合であっても、ストリーミングの進行に従って、適切に楽曲の拍に合わせてロボットの動作を制御することができる。
【0107】
以上までで、コリオデータのデータ構造、及びコリオデータを用いたロボットの動作方法について説明してきたが、CGモデルの構造(例えば、骨格構造)とロボットの構造との違いを考慮すると、さらに検討すべき課題が存在する。以下では、これらの課題とその解決方法について詳しく説明する。
【0108】
(ボーンのバランス調整)
ロボットの骨格構造は、コリオデータにより特定されるCGモデルの骨格構造と必ずしも同じとは限らない。一般的には、ハードウェア実装の簡単化などのため、CGモデルと比較してボーンが増える場合よりも減る場合の方が多い。骨格構造が一致しない場合に、適切にボーンの調整を行わなければ、ロボットが予期せぬ動作を行うことが懸念される。
【0109】
<ボーンが減る場合>
本発明者らは、CGモデルと比べてロボットのボーンが減る場合、ロボットに存在しないボーン(非存在ボーン、省略ボーンなどとも呼ぶ)がCGモデル上で担っていた情報(例えば、座標に関する情報(ボーンの傾きなど))を、どのように他のボーン(存在ボーン、非省略ボーンなどとも呼ぶ)に継承するかが重要であることに着目し、以下の3つの継承方法を着想した:(1)所定の割合(例えば、100:0、90:10など)に従って、省略ボーンの情報を、省略ボーンに近接する存在ボーンの情報にブレンドする、(2)省略ボーンの情報を、省略ボーンに近接する存在ボーンの情報に足し合わせる、(3)省略ボーンの情報は無視し、所定の方法で存在ボーンの情報を算出する。
【0110】
ここで、当該方法(3)において、所定の方法とは、例えば、ロボットが倒れないように省略ボーンに近接する存在ボーンの情報を算出する(初期状態(例えば、直立状態)を維持するなど)、他の存在ボーンの情報に基づいて算出する、などであってもよい。
【0111】
なお、近接するボーンとは、隣り合うボーンに限られない。例えば、近接するボーンは、隣の隣のボーンであってもよい。また、省略ボーンと関連性の高い(例えば、一緒に動くことが多い)ボーンを継承対象として用いてもよい。
【0112】
図13は、CGモデルの骨格とロボットの骨格が異なる場合のバランス調整の一例を示す図である。
図13AはCGモデルの骨格を示し、
図13Bはロボットの骨格を示す。
図13の例では、ロボットの骨格において、2本の鎖骨、1本の背骨及び脚の骨が省略ボーンである。なお、
図13A及び13Bのロボットは、それぞれ
図2A及び2Bのロボットの構成と同じである。
【0113】
背骨に関しては、2本の背骨の動きを1本でも表現できると考えられるため、上記(1)の方法によりブレンドすることが好ましい。したがって、
図3の再生部13は、
図13BにおけるボーンBの座標(位置、角度など)を、
図13AにおけるボーンB1及びB2の座標を所定の割合でブレンドすることで決定してもよい。
【0114】
また、鎖骨に関しては、上腕を補助する動きが多いため、上記(2)の方法により上腕に鎖骨の情報を加えることが好ましい。したがって、
図3の再生部13は、
図13BにおけるボーンRA1(LA1)の座標(位置、角度など)を、
図13AにおけるボーンRA1(LA1)の座標にボーンRS(LS)の座標を加えて決定してもよい。
【0115】
また、脚に関しては、存在しない脚を無理に再現しようとするとバランスが崩れるので、上記(3)の方法により、CGモデルの脚の情報は無視して、ロボットが倒れないように調整することが好ましい。したがって、
図3の再生部13は、
図13BにおけるボーンW(及び/又はF)の座標(位置、角度など)を、
図13AにおけるボーンW、RF1−3及びLF1−3の座標を無視して、他のボーンの座標に基づいて決定してもよい(例えば、ボーンB、W及びFが直線上に位置するように決定してもよい)。
【0116】
<ボーンが増える場合>
例えば、より細かな動きを表現するため、標準ボーンモデルに含まれる骨(背骨など)を中割りにする形で増やす(分割して増やす)ことが考えられる。本発明者らは、CGモデルと比べてロボットのボーンが増える場合(つまり、所定のボーンを複数のボーンにより表現する場合)、増えるボーンの特性を維持することが重要であることに着目し、以下の2つの継承方法を着想した:(1)中割りされるボーンの角度を所定の割合(例えば、50:50)で保持して、最終的な角度を一致させる、(2)中割りされるボーンの到達位置を保持するように、増えたボーンの角度を算出する。
【0117】
ボーンの角度が重要な場合(例えば、ロボットを視聴する人が、ボーンの角度が変わることにより、異なる体勢や表現に感じやすい、手などの部分について)には、上記(1)の方法が好ましい。また、関節点の位置が重要な場合(例えば、位置が変わるとロボットのバランスが崩れるなど、ロボットの動作に重要な脚、体幹部などの部分について)には、上記(2)の方法が好ましい。
【0118】
図14は、CGモデルの骨格とロボットの骨格が異なる場合のバランス調整の別の一例を示す図である。
図14A及び14Bは、ボーンが増える場合の上記方法(1)及び(2)をそれぞれ示す。
図14では、CGモデルにおけるボーンB2に対応する骨格が、ロボットではボーンB2a及びB2bに増加している。ボーンB1は、増加した複数の骨(ボーンB2a及びB2b)の一端の骨(ボーンB2a)に隣接する骨である。なお、
図14及び後述の
図15−17は、ロボットのボーンを所定の視点から見た平面図(例えば、x−y平面)を示している。
【0119】
図14Aでは、方法1により、ボーンB1に対するボーンB2bの角度が、元データ(CGモデル)の場合とロボットの場合とで同じα(CGモデルに存在する骨の角度)となるように制御されている。これにより、ボーンの増加前後で、ボーンB2bの末端の関節点の座標は、CGモデルのボーンB2の末端の関節点の座標と異なってしまうものの、ボーン増加範囲の末端のボーンB2b(増加した複数の骨の他端の骨)の、ボーンB1に対する角度を維持することができる。
【0120】
図14Bでは、方法2により、ボーンB2bの末端の関節点の位置(複数の骨の末端の位置)が、CGモデルのボーンB2の末端の関節点の位置(CGモデルに存在する骨の末端の位置)と同じになるように制御されている。これにより、ボーン増加範囲の調整が他のボーンに与える影響を好適に抑制することができる。
【0121】
なお、これらの方法で、増えたボーンに隣接するボーンの座標(角度、位置など)も合わせて修正されてもよい。例えば、CGモデルにおける隣接するボーンと、ロボットにおける隣接するボーンと、が同じ位置又は角度となるように制御されてもよい。
【0122】
以上の実施形態によれば、ロボットの骨格構造がコリオデータにより特定されるCGモデルの骨格構造と一致しない場合であっても、適切にボーンの調整を行うことが可能となる。このため、一旦作成したCGモデルのモーションを、広くロボットに適用することができる。
【0123】
(関節角度の制限)
ロボットはCGモデルと異なり、関節の稼働する角度に限界がある。これを限界角度ともいう。本発明者らは、各関節部(及び/又はボーン)に限界角度が規定(設定)される場合において、コリオデータから無理な角度を要求された(つまり、所定のボーンを、限界角度を超える角度にするように指示された)とき、なるべく見る側の人間にとって不自然でないように角度を制限することが重要であることに着目した。
【0124】
ここでは、前述のボーンの調整を済ませ、それぞれのボーンの角度(関節角度)のデータが保持されているが、まだ角度の制限が加えられていない場合を考える。なお、ボーンの調整を行う前に角度制限を適用してもよい。無理な角度を要求された場合、角度に制限を加える方法として、以下の2つの方法が考えられる:(1)所定の角度(例えば、限界角度)を超える角度は無視する(つまりボーンの角度を所定の角度とする)、(2)ボーンの角度を限界角度とし、曲げきれなかった角度(指定された角度と限界角度との差分)を親のボーンで代替する。なお、いずれのパターンであっても、最終的な角度を優先するか、位置を優先するかはボーンによって異なってもよい。
【0125】
図15は、本発明の一実施形態に係る関節角度の制限の一例を示す図である。
図15A及び15Bは、関節角度の制限の上記方法(1)及び(2)をそれぞれ示す。
図15では、CGモデル及びロボットのボーンB1及びB2が示されている。
図15では、ボーンB2の限界角度がβである場合に、コリオデータが角度α(α>β)をボーンB2の角度として指定する例を示す。
【0126】
図15Aでは、方法1により、ロボットは、所定の角度(限界角度β)を超える角度を所定の角度として解釈するため、ボーンB2がβだけ曲げられている。なお、所定の角度は限界角度に限られず、限界角度より小さい角度であってもよい。
【0127】
図15Bでは、方法2により、ロボットは、まずボーンB2に指定される角度αが限界角度βを超えることを認識する。そのため、まずボーンB2の角度を限界角度βに修正する。そして、ボーンB2の親であるボーンB1の角度を、曲げきれなかった角度であるα−βに設定する。このように、ボーンB2に設定される限界角度を超える角度(α)が、ボーンB2の角度(β)と、ボーンB2の親であるボーンB1の角度(α−β)と、の和と等しくなるようにすることで、各ボーンの角度が限界角度を超えないようにしつつ、最終的なボーンの角度を維持することができる。
【0128】
なお、
図15Bの例について、α−βがボーンB1の限界角度(例えば、γとする)を超えないものとして説明したが、超えた場合には、さらにボーンB1の親のボーンの角度を、ボーンB1及びB2が曲げきれなかったα−β−γとしてもよい。このように、曲げきれなかった角度はさらに親に伝搬させてもよい。
【0129】
(スピードの制限)
ロボットはCGモデルと異なり、各ボーンが遷移可能な速度には限界がある。これを限界速度ともいう。本発明者らは、各関節部(及び/又はボーン)に限界速度が規定(設定)される場合において、コリオデータから無理な速度を要求された(つまり、所定のボーンを限界速度で遷移させても、次の指定時間(例えば、次の拍)までに次の指定座標に到達できない)とき、なるべく動作の形(流れ)を保持したまま速度を落とす(速度を制限する)ことが重要であることに着目した。
【0130】
本発明者らは、特に、コリオデータがダンスの動きを示す場合を検討した。そして、本発明者らは、ダンスは一見表拍の動作の連続に見えるが、単に表拍におけるポーズを接続したところでダンスらしくはならないことに着目し、動作の前の縮んでいる状態である裏拍のポーズを重視することで、ダンスらしいメリハリのある動作を表現することを着想した。なお、裏拍とは、コリオデータにおける拍の後半部分に相当する。
【0131】
ここでは、前述のボーンの調整をし、それぞれのボーンに角度のデータが保持されており、これらが各関節の限界角度を超えていない状態で、無理な速度(限界速度を超える速度)を要求された場合を考える。なお、ボーンの調整や角度制限を行う前に速度制限を適用してもよい。無理な速度を要求された場合、速度に制限を加える方法として、以下の2つの方法が考えられる:(1)可能な範囲(限界速度を超えない範囲)でボーンの遷移を行う、(2)裏拍を優先して(裏拍のポーズは再現されるように)ボーンの遷移を行う。
【0132】
図16は、本発明の一実施形態に係るスピードの制限の一例を示す図である。
図16A及び16Bは、元データ(CGモデル)の拍ごとの動きと、元データにスピードの制限の上記方法(1)を適用した場合の拍ごとの動きと、をそれぞれ示す。
図16では、ボーンB1を基点としてボーンB2が左回転及び右回転を繰り返す例が示されている。また、
図16A及び16Bの両方で、裏拍600におけるポーズが一致しているものとする。
【0133】
図16Aは、限界速度が特に規定されていない場合に相当する。限界速度が規定されない場合には、ボーンの遷移距離がどれだけ離れていても、確実に到達するように遷移することができる。
【0134】
図16Bでは、ボーンB2には限界速度が存在するため、半拍の時間では、裏拍600の角度から表拍500の角度まで遷移し切ることができない。そこで、ロボットは、ボーンB2を限界速度で左回転させるものの、表拍500の時点から次の遷移(右回転)を開始する。遷移しきれなかった分の角度は無視される(つまり、本来のB2の遷移先(
図16Aの表拍500)には遷移しない)こととなる。
【0135】
また、限界速度のため、半拍の時間では、
図16Bにおける表拍500の角度から裏拍601の角度まで遷移し切ることができない。そこで、ロボットは、ボーンB2を限界速度で右回転させ、裏拍601から次の遷移(左回転)を開始する。
【0136】
このように、方法(1)によれば、ボーンを遷移し切れない場合には途中で遷移を打ち切ることにより、コリオデータで規定される拍を維持することができる。
【0137】
図17は、本発明の一実施形態に係るスピードの制限の別の一例を示す図である。
図17A及び17Bは、元データ(CGモデル)の拍ごとの動きと、元データにスピードの制限の上記方法(2)を適用した場合の拍ごとの動きと、をそれぞれ示す。その他の環境は
図16と同様であり、例えば
図17Aは
図16Aと同じである。
【0138】
図17Bでは、ボーンB2には限界速度が存在するため、半拍の時間では、裏拍600の角度から表拍500の角度まで遷移し切ることができない。そこで、ロボットは、コリオデータの時系列を先読みして次の裏拍(裏拍601)を参照し、次の裏拍の角度(及び/又は位置)への遷移が確実に実行できるように、表拍500におけるボーンB2の座標(角度及び/又は位置)を決定する。そして、ボーンB2を、裏拍600の角度から、決定した表拍500の角度に遷移させる。
【0139】
表拍500からは、次の遷移(右回転)を開始する。表拍500の角度は裏拍601の角度に確実に遷移できるように調整されているため、ロボットは限界速度以下の速度でボーンB2を右回転させ、裏拍601で元データと同じ角度にする。
【0140】
このように、方法(2)によれば、コリオデータの先読みにより、各裏拍のポーズを再現することができるため、メリハリのある動きを実現することができる。
【0141】
なお、方法(2)では、各表拍のポーズもできるだけ保持されることが好ましいが、裏拍のポーズを維持するためには、表拍のポーズは元データと全く異なるように調整されてもよい。
【0142】
また、方法(2)では、いくつかの裏拍のポーズを保持することが難しい場合は、できるだけ多くの裏拍のポーズが保持されるように、及び/又は重要な裏拍のポーズが保持されるように、表拍のポーズだけでなく裏拍のポーズも調整されてもよい。つまり、裏拍に相当する少なくとも一部のタイミングの座標が優先的に維持されるように、コリオデータ及び/又は各ボーンの動作を修正してもよい。
【0143】
ここで、本発明者らは、ロボットの動きが不自然にならないようにするために確実にコリオデータ(上述のボーンの調整や、限界角度を超えない制限を適用したコリオデータを含む)の元の動きを再現すべき重要な拍について検討した。コリオデータを作成する際には、所定の拍数(例えば、2拍、4拍、8拍など)で構成される一連の動作を組み合わせる手法をとることが考えられる。例えば、ダンスの動きを示すコリオデータは、8拍単位(ワンエイト)や、8拍×4の32拍単位(フォーエイト)で規定された振り付けを連結して作成してもよい。このような一連の動作は、例えば「ムーブ」と呼ばれてもよい。
【0144】
本発明者らは、上記の手法でコリオデータを作成する場合には、ムーブとムーブの連結点(整合点)の前後で動きの整合を取り、スムーズに動きを遷移させることが重要であることに着目した。そして、連結点の直前の裏拍、つまり、ムーブの最後の裏拍のポーズが保持されるように角度及び/又は速度の制限を適用することを着想した。
【0145】
図18は、本発明の一実施形態に係るスピードの制限のさらに別の一例を示す図である。
図18A及び18Bは、元データ(CGモデル)の拍ごとの動きと、元データにスピードの制限の上記方法(2)を適用した場合の拍ごとの動きと、をそれぞれ示す。
図18には、CGモデル又はロボットを上から見た視点で、ボーンB1(上腕に相当)及びB2(前腕に相当)の一連の動き(ムーブ)が例示されている。また、
図18A及び18Bの両方で、裏拍600におけるポーズが一致しているものとする。
【0146】
図18Bでは、ムーブの最後の裏拍である裏拍602のポーズが保持され、かつ裏拍601のポーズができるだけ保持されるように、表拍500及び501だけでなく、裏拍601のポーズが調整されている。各ボーンの経路は、各ボーンの末端(根から遠い方の関節点)の最終的な位置をもとに計算することができる。ボーンの経路計算について、
図19を参照して説明する。
【0147】
図19は、本発明の一実施形態に係るスピードの制限における、ボーンの経路計算の一例を示す図である。
図19では、
図18におけるボーンB2の末端の経路計算について説明するが、他のボーンについても同様な経路計算を適用することができる。
【0148】
まず、ロボットは、元データの各裏拍の位置から、時間的に後続の表拍の位置の到達可能性を確認する(図示しないステップ0)。本例の場合、元データの裏拍600の位置から表拍500の位置に半拍の時間で到達可能かを判断する。本例では、到達可能であるものとする。なお、到達可能でない場合、表拍500の位置を裏拍600の位置に近づけて、到達可能なように調整してもよい。
【0149】
次に、ロボットは、元データの各表拍の位置から、時間的に後続の裏拍の位置の到達可能性を確認する(ステップ1)。本例の場合、ステップ0の表拍500の位置から元データの裏拍601の位置に半拍の時間で到達可能かを判断する。本例では、到達可能でないものとする。このため、ロボットは、表拍500の位置を裏拍601の位置に近づける。なお、位置を近づける際は、できるだけ元データの裏拍600の位置から表拍500の位置への動きの変化が少なくなるように(例えば、1つの座標軸(ロボットの前後方向など)のみの値が変わるように)調整することが好ましい。
【0150】
次に、ロボットは、裏拍の位置間の到達可能性を確認する(ステップ2)。本例の場合、元データの裏拍601及び裏拍600の位置と、裏拍601及び裏拍602の位置と、についてそれぞれ1拍の時間で到達可能かを判断する。本例では、元データの裏拍601の位置から元データの裏拍602の位置に到達可能でないものとする。このため、ロボットは、裏拍601の位置を裏拍602の位置に近づける。
【0151】
次に、ロボットは、ステップ1で調整した表拍の位置を、ステップ2で調整した裏拍の位置を考慮して、再調整する(ステップ3)。この際、表拍の位置から裏拍の位置への到達可能性を維持したまま、ロボットの動きが不自然にならないように再調整されることが好ましい。例えば、本例では、ステップ1で縮めた表拍500の位置と、元データの裏拍601の位置と、を結んだ軌道上に、表拍500の位置を決定する。
【0152】
以上説明したようなボーンの経路計算によれば、限界速度の制限下において、メリハリのある動きを実現することができる。
【0153】
なお、
図19で上述したステップ0−3は、この順番に実行されなくてもよい。また、ステップ0−3の各処理は、繰り返し実行されてもよい。また、スピードの制限に係る表拍/裏拍の調整は、コリオデータ全体の拍に基づいてまとめて行われることが好ましいが、リアルタイム性が要求される場合などには、現在動作中の拍から近い拍のみを対象として行われてもよい。また、経路計算は上述のステップ0−3の処理に限られない。
【0154】
また、
図19では、ムーブの最後の裏拍のポーズが確実に保持されるようにスピードを調整する例を示したが、ポーズの再現性(例えば、各ボーンの座標、角度などが、コリオデータが示す値と同じであること)を保証するタイミングは、ムーブの最後の裏拍に限られない。例えば、ポーズの再現性を保証するタイミングは、他の裏拍であってもよいし、表拍であってもよいし、設定された特定の拍であってもよい。
【0155】
また、所定のタイミングに、ポーズの再現性を保証する優先度を設定してもよく、この場合、例えばムーブの最後の裏拍の優先度を他の拍の優先度より高く設定することが好ましい。各タイミング(拍)の優先度は、コリオデータにおける当該拍に対応するノートオン/オフ信号や、他のイベント(MIDIイベント、SysExイベントなど)によりロボットに通知されてもよい。
【0156】
また、所定のタイミング(例えば、周期的なタイミング)で、ポーズを強制的にコリオデータに合わせる(調整を行わない)拍が規定されてもよい。例えば、ポーズを強制的にコリオデータに合わせる拍は、コリオデータにおける当該拍に対応するノートオン/オフ信号や、他のイベント(MIDIイベント、SysExイベントなど)によりロボットに通知されてもよい。
【0157】
また、所定のタイミングで、各ボーンを所定の状態(例えば、初期状態)にリセットすることを示す情報(リセット情報)が、同様の信号及び/又はイベントによりロボットに通知されてもよい。この場合、ロボットは、コリオデータに含まれるリセット情報を検出すると、例えば検出したタイミングから所定の時間(例えば、1拍)かけて初期状態に各ボーンを遷移させるように制御してもよい。このように、強制的にポーズの調整を禁止したりポーズをリセットしたりすることにより、ポーズの調整が累積して仮に不自然なポーズが生じるような場合であっても、元の正常なポーズに戻すことが可能となる。
【0158】
上述したようなバランス調整及び/又は制限時の制御方法を示す情報(制御情報)が、コリオデータにおけるノートオン/オフ信号や、他のイベント(MIDIイベント、SysExイベントなど)に含まれてロボットに通知されてもよい。そして、ロボットは、コリオデータに含まれる当該情報に基づいて、ロボットの動作の最中にバランス調整、角度/スピードの制限などの調整方法を変更してもよい。これにより、ロボットが行う動作の内容に応じて適切な調整が可能となる。
【0159】
例えば、コリオデータが通常の動作(歩行など)から激しい動作(ダンスなど)に変わる動作を示す場合、歩行動作時はスピードの制限の上記方法(1)を適用し、ダンス時はスピードの制限の上記方法(2)を適用するように制御情報をコリオデータに含めてもよい。これにより、ダンス時には裏拍を重視するように、ロボットを動的に制御することができる。
【0160】
なお、上述のバランス調整、角度/スピードの制限を考慮した調整などは、
図3に示した生成部16によって、CGモデル向けのコリオデータからロボット10向けのコリオデータを生成するときに合わせて行われてもよい。また、これらの調整は、
図3に示した再生部13によって、
図10のステップS22における各構成要素の座標に関する時系列情報の変換の際に行われてもよい。
【0161】
なお、以上説明した各実施形態の適用は、CGモデルのモーションデータをロボットに利用する場合に限られない。例えば、あるCGモデルのモーションデータとして作成されたコリオデータを、他のCGモデルのモーションデータとして利用する場合にも、上述のバランス調整、角度/スピードの制限などが実施されてもよい。このような制御は、CGモデル間の骨格構造、階層構造の初期状態、基準姿勢、各骨の長さ、各関節の可動範囲などの違いを考慮して実現されてもよい。また、当該制御で考慮されるこれらのパラメータは、コリオデータに含まれる構成としてもよい。
【0162】
また、本明細書で説明した用語及び/又は本明細書の理解に必要な用語については、同一の又は類似する意味を有する用語と置き換えてもよい。また、本明細書で説明した情報、パラメータなどは、絶対値で表されてもよいし、所定の値からの相対値で表されてもよいし、対応する別の情報で表されてもよい。
【0163】
本明細書で説明した情報、信号などは、様々な異なる技術のいずれかを使用して表されてもよい。例えば、上記の説明全体に渡って言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、チップなどは、電圧、電流、電磁波、磁界若しくは磁性粒子、光場若しくは光子、又はこれらの任意の組み合わせによって表されてもよい。
【0164】
本明細書で説明した各態様/実施形態は単独で用いてもよいし、組み合わせて用いてもよいし、実行に伴って切り替えて用いてもよい。また、所定の情報の通知(例えば、「Xであること」の通知)は、明示的に行うものに限られず、暗黙的に(例えば、当該所定の情報の通知を行わないことによって)行われてもよい。
【0165】
本明細書で説明した各態様/実施形態の処理手順、シーケンス、フローチャートなどは、矛盾の無い限り、順序を入れ替えてもよい。例えば、本明細書で説明した方法については、例示的な順序で様々なステップの要素を提示しており、提示した特定の順序に限定されない。
【0166】
以上、本発明について詳細に説明したが、当業者にとっては、本発明が本明細書中に説明した実施形態に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。したがって、本明細書の記載は、例示説明を目的とするものであり、本発明に対して何ら制限的な意味を有するものではない。