(57)【特許請求の範囲】
【請求項１】
多関節構造体のビヘイビアの作成・編集を支援するためのオーサリング・システムであって、
多関節構造体のビヘイビアの作成・編集を支援するためのオーサリング・システムであって、
ユーザから操作画面を介して入力されるコマンドやデータを受容するユーザ入力部と、
ユーザに対して前記多関節構造体のビヘイビアを作成・編集するための作業場を操作画面上で提供するユーザ提示部と、
ビヘイビアの構成要素となる、多関節構造体の各関節の時系列的な動作を記述したモーション・データを含むアクション、又は、複数のアクションの配列からなるアクションのグループを有するライブラリと、
前記操作画面上におけるユーザ入力に基づいてビヘイビアを規定するプログラムを生成するプログラム生成部と、
を具備し、
前記プログラム生成部は、
前記ユーザ入力操作を介したユーザ操作に応じて、ビヘイビアを開始又は終了するターミナルを表すターミナル・ボックスを前記操作画面上に配置し、該ターミナル・ボックスのプロパティ・ダイアログを通じて、ターミナルの名前をユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、アクション又はアクションのグループから後続の複数のアクション又はアクションのグループへの分岐を表すブランチ・ボックスを前記操作画面上に配置し、該ブランチ・ボックスのプロパティ・ダイアログを通じて、アクション又はアクションのグループから後続の複数のアクション又はアクションのグループの各々へ分岐する条件をユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、アクションを表すアクション・ボックスを前記操作画面上に配置し、該アクション・ボックスのプロパティ・ダイアログを通じて、該アクションを実現するコマンドをユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、アクションのグループを表すグループ・ボックスを前記操作画面上に配置し、該グループ・ボックスのプロパティ・ダイアログを通じて、ターミナルの名前をユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、前記操作画面上で接続側のボックスの出力端子と被接続側のボックスの入力端子を結線するとともに、接続側のボックスに非接続側のボックスが後続する接続関係を形成し、該結線のプロパティ・ダイアログを通じて、該ボックス間の接続を許可又は不許可する条件をユーザに設定させる、
ことを特徴とするオーサリング・システム。
【請求項２】
アクションはアクションの再生と時間的に同期して音声出力されるサウンド・データをさらに含む、
ことを特徴とする請求項１に記載のオーサリング・システム。
【請求項３】
アクションはアクションの再生と時間的に同期して表示出力される表示インジケータの点灯動作並びに消滅動作を記述したインジケータ表示データをさらに含む、
ことを特徴とする請求項１に記載のオーサリング・システム。
【請求項４】
前記ユーザ提示部はビヘイビアの各構成要素間の接続関係をフローチャート編集形式で提示する、
ことを特徴とする請求項１に記載のオーサリング・システム。
【請求項５】
多関節構造体のビヘイビアの作成・編集を支援するためのオーサリング方法であって、
ユーザから操作画面を介して入力されるコマンドやデータを受容するユーザ入力ステップと、
ユーザに対して前記多関節構造体のビヘイビアを作成・編集するための作業場を操作画面上で提供するユーザ提示ステップと、
ビヘイビアの構成要素となる、多関節構造体の各関節の時系列的な動作を記述したモーション・データを含むアクション、又は、複数のアクションの配列からなるアクションのグループをライブラリに登録するステップと、
前記操作画面上におけるユーザ入力に基づいてビヘイビアの構成要素どうしの接続関係を形成して、ビヘイビアを規定するプログラムを生成するプログラム生成ステップと、
を有し、
前記プログラム生成ステップでは、
前記ユーザ入力操作を介したユーザ操作に応じて、ビヘイビアを開始又は終了するターミナルを表すターミナル・ボックスを前記操作画面上に配置し、該ターミナル・ボックスのプロパティ・ダイアログを通じて、ターミナルの名前をユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、アクション又はアクションのグループから後続の複数のアクション又はアクションのグループへの分岐を表すブランチ・ボックスを前記操作画面上に配置し、該ブランチ・ボックスのプロパティ・ダイアログを通じて、アクション又はアクションのグループから後続の複数のアクション又はアクションのグループの各々へ分岐する条件をユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、アクションを表すアクション・ボックスを前記操作画面上に配置し、該アクション・ボックスのプロパティ・ダイアログを通じて、該アクションを実現するコマンドをユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、アクションのグループを表すグループ・ボックスを前記操作画面上に配置し、該グループ・ボックスのプロパティ・ダイアログを通じて、ターミナルの名前をユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、前記操作画面上で接続側のボックスの出力端子と被接続側のボックスの入力端子を結線するとともに、接続側のボックスに非接続側のボックスが後続する接続関係を形成し、該結線のプロパティ・ダイアログを通じて、該ボックス間の接続を許可又は不許可する条件をユーザに設定させる、
ことを特徴とするオーサリング方法。
【請求項６】
アクションはアクションの再生と時間的に同期して音声出力されるサウンド・データをさらに含む、
ことを特徴とする請求項５に記載のオーサリング方法。
【請求項７】
アクションはアクションの再生と時間的に同期して表示出力される表示インジケータの点灯動作並びに消滅動作を記述したインジケータ表示データをさらに含む、
ことを特徴とする請求項５に記載のオーサリング方法。
【請求項８】
前記ユーザ提示ステップではビヘイビアの各構成要素間の接続関係をフローチャート編集形式で提示する、
ことを特徴とする請求項５に記載のオーサリング方法。
【請求項９】
多関節構造体のビヘイビアの作成・編集を支援するための処理をコンピュータ・システム上で実行するように記述されたコンピュータ・ソフトウェアをコンピュータ可読形式で物理的に格納した記憶媒体であって、前記コンピュータ・ソフトウェアは、前記コンピュータを、
ユーザから操作画面を介して入力されるコマンドやデータを受容するユーザ入力部、
ユーザに対して前記多関節構造体のビヘイビアを作成・編集するための作業場を操作画面上で提供するユーザ提示部、
ビヘイビアの構成要素となる、多関節構造体の各関節の時系列的な動作を記述したモーション・データを含むアクション、又は、複数のアクションの配列からなるアクションのグループを有するライブラリ、
前記操作画面上におけるユーザ入力に基づいてビヘイビアを規定するプログラムを生成するプログラム生成部、
として機能させ、
前記プログラム生成部は、
前記ユーザ入力操作を介したユーザ操作に応じて、ビヘイビアを開始又は終了するターミナルを表すターミナル・ボックスを前記操作画面上に配置し、該ターミナル・ボックスのプロパティ・ダイアログを通じて、ターミナルの名前をユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、アクション又はアクションのグループから後続の複数のアクション又はアクションのグループへの分岐を表すブランチ・ボックスを前記操作画面上に配置し、該ブランチ・ボックスのプロパティ・ダイアログを通じて、アクション又はアクションのグループから後続の複数のアクション又はアクションのグループの各々へ分岐する条件をユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、アクションを表すアクション・ボックスを前記操作画面上に配置し、該アクション・ボックスのプロパティ・ダイアログを通じて、該アクションを実現するコマンドをユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、アクションのグループを表すグループ・ボックスを前記操作画面上に配置し、該グループ・ボックスのプロパティ・ダイアログを通じて、ターミナルの名前をユーザに設定させ、
前記ユーザ入力操作を介したユーザ操作に応じて、前記操作画面上で接続側のボックスの出力端子と被接続側のボックスの入力端子を結線するとともに、接続側のボックスに非接続側のボックスが後続する接続関係を形成し、該結線のプロパティ・ダイアログを通じて、該ボックス間の接続を許可又は不許可する条件をユーザに設定させる、
ことを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、所定のシナリオに従ったデータの作成・編集を支援するためのオーサリング・システム及びオーサリング方法に係り、特に、ロボットの所定の動作パターンを記述する一連のコマンド／データの作成・編集を支援するオーサリング・システム及びオーサリング方法に関する。
【０００２】
更に詳しくは、本発明は、ロボットの動作状態を規定する部品の集合を用いて動作パターンの作成・編集を支援するオーサリング・システム及びオーサリング方法に係り、特に、各関節アクチュエータの動作など１以上の時系列データの組み合わせからなるロボットのアクションを部品化してコンピュータ・ディスプレイ上に配置するとともに、各アクションの結合関係をディスプレイ上のＧＵＩ操作により規定することでロボットのビヘイビアの作成・編集を行うことができるオーサリング・システム及びオーサリング方法に関する。
【０００３】
【従来の技術】
電気的若しくは磁気的な作用を用いて人間の動作に似せた運動を行う機械装置のことを「ロボット」という。ロボットの語源は、スラブ語のＲＯＢＯＴＡ(奴隷機械)に由来すると言われている。わが国では、ロボットが普及し始めたのは１９６０年代末からであるが、その多くは、工場における生産作業の自動化・無人化などを目的としたマニピュレータや搬送ロボットなどの産業用ロボット（industrial robot）であった。
【０００４】
最近では、イヌやネコのように４足歩行の動物の身体メカニズムやその動作を模したペット型ロボット、あるいは、ヒトやサルなどの２足直立歩行を行う動物の身体メカニズムや動作を模した「人間形」若しくは「人間型」のロボット（humanoid robot）など、脚式移動ロボットの構造やその安定歩行制御に関する研究開発が進展し、実用化への期待も高まってきている。これら脚式移動ロボットは、クローラ式ロボットに比し不安定で姿勢制御や歩行制御が難しくなるが、階段の昇降や障害物の乗り越え等、柔軟な歩行・走行動作を実現できるという点で優れている。
【０００５】
アーム式ロボットのように、ある特定の場所に植設して用いるような据置きタイプのロボットは、部品の組立・選別作業など固定的・局所的な作業空間でのみ活動する。これに対し、移動式のロボットは、作業空間は非限定的であり、所定の経路上または無経路上を自在に移動して、所定の若しくは任意の人的作業を代行したり、ヒトやイヌあるいはその他の生命体に置き換わる種々のサービスを提供することができる。
【０００６】
脚式移動ロボットの用途の１つとして、産業活動・生産活動等における各種の難作業の代行が挙げられる。例えば、原子力発電プラントや火力発電プラント、石油化学プラントにおけるメンテナンス作業、製造工場における部品の搬送・組立作業、高層ビルにおける清掃、火災現場その他における救助といったような危険作業・難作業の代行などである。
【０００７】
また、脚式移動ロボットの他の用途として、上述の作業支援というよりも、生活密着型、すなわち人間との「共生」あるいは「エンターティンメント」という用途が挙げられる。この種のロボットは、ヒトあるいはイヌ（ペット）などの比較的知性の高い脚式歩行動物の動作メカニズムや四肢を利用した豊かな感情表現をエミュレートする。また、予め入力された動作パターンを単に忠実に実行するだけではなく、相手の言葉や態度（「褒める」とか「叱る」、「叩く」など）に対して動的に対応した、生き生きとした応答表現を実現することも要求される。
【０００８】
従来の玩具機械は、ユーザ操作と応答動作との関係が固定的であり、玩具の動作をユーザの好みに合わせて変更することはできない。この結果、ユーザは同じ動作しか繰り返さない玩具をやがては飽きてしまうことになる。
【０００９】
これに対し、インテリジェントなロボットは、動作に起因する行動モデルや学習モデルを備えており、外部からの音声や画像、触覚などの入力情報に基づいてモデルを変化させて動作を決定することにより、自律的な思考及び動作制御を実現する。ロボットが感情モデルや本能モデルを用意することにより、ロボット自身の感情や本能に従った自律的な行動を表出することができる。また、ロボットが画像入力装置や音声入出力装置を装備し、画像認識処理や音声認識処理を行うことにより、より高度な知的レベルで人間とのリアリスティックなコミュニケーションを実現することも可能となる。
【００１０】
また、ユーザ操作などの外部からの刺激を検出したことに応答してこのモデルを変更する、すなわち「学習効果」を付与することによって、ユーザにとって飽きない又は好みに適応した動作パターンを提供することができる。
【００１１】
昨今の脚式移動ロボットは高い情報処理能力を備えており、ロボットそのものを一種の計算機システムとして捉えることができる。したがって、ロボット上で実現される動作パターン、あるいは、複数の基本的な動作パターンの組合せによって構成される高度且つ複雑な一連の動作シーケンスは、コンピュータ・プログラミングと同様の作業によって構築される。
【００１２】
また、今後ますますロボットの普及率が高まり、産業界のみならず一般家庭や日常生活にもロボットが深く浸透していくことが予想される。とりわけ、エンターティンメント性を追求する製品に関しては、コンピュータやコンピュータ・プログラミングに関する高度な知識を持たない一般消費者層がロボットを購入して使用するケースが多いと予想される。
【００１３】
したがって、このような一般ユーザにとっても、ロボットの動作シーケンスを対話的な処理により比較的容易且つ効率的に作成・編集することを支援するためのツール、すなわちオーサリング・システムを提供することが好ましいと考えられる。
【００１４】
【発明が解決しようとする課題】
本発明の目的は、所定のシナリオに従ったデータの作成・編集を支援することができる、優れたオーサリング・システム及びオーサリング方法を提供することにある。
【００１５】
本発明の更なる目的は、ロボットなどの多関節構造体の所定の動作パターンを記述する一連のコマンド／データの作成・編集を支援することができる、優れたオーサリング・システム及びオーサリング方法を提供することにある。
【００１６】
本発明の更なる目的は、ロボットの動作状態を規定する部品の集合を用いて動作パターンの作成・編集を支援することができる、優れたオーサリング・システム及びオーサリング方法を提供することにある。
【００１７】
本発明の更なる目的は、各関節アクチュエータの動作など１以上の時系列データの組み合わせからなるロボットのアクションを部品化してコンピュータ・ディスプレイ上に配置するとともに、各アクションの結合関係をディスプレイ上のＧＵＩ操作により規定することでロボットのビヘイビアの作成・編集を行うことができる、優れたオーサリング・システム及びオーサリング方法を提供することにある。
【００１８】
【課題を解決するための手段及び作用】
本発明は、上記課題を参酌してなされたものであり、その第１の側面は、多関節構造体のビヘイビアの作成・編集を支援するためのオーサリング・システム又は方法であって、
ユーザから操作画面を介して入力されるコマンドやデータを受容するユーザ入力部又はステップと、
ユーザに対して前記他関節構造体のビヘイビアを作成・編集するための作業場を操作画面上で提供するユーザ提示部又はステップと、
操作画面上におけるユーザ入力に基づいてビヘイビアの構成要素どうしの接続関係を形成して、ビヘイビアを規定するプログラムを生成するプログラム生成部又はステップと、
を具備することを特徴とするオーサリング・システム又は方法である。
【００１９】
但し、ここで言う「システム」とは、複数の装置（又は特定の機能を実現する機能モジュール）が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。
【００２０】
また、ビヘイビアの構成要素には、アクション、複数のアクションを組み合わせたグループ、分岐、終端を含めることができる。
【００２１】
また、アクションは、多関節構造体の各関節の時系列的な動作を記述したモーション・データと、アクションの再生と時間的に同期して音声出力されるサウンド・データと、アクションの再生と時間的に同期して表示出力される表示インジケータの点灯／消滅動作を記述したインジケータ表示データとを、時間軸上で同期的に組み合わせることによって構成される。
【００２２】
本発明の第１の側面に係るオーサリング・システム又は方法によれば、アクションを部品化してコンピュータ・ディスプレイ上に配置するとともに、各アクションの結合関係をディスプレイ上のＧＵＩ操作により規定することで、フローチャート・エディタの感覚でロボットのビヘイビアの作成・編集を行うことができる。また、ビヘイビアは、アクションの再生順序や、条件分岐、ループを含めることができる。
【００２３】
前記ユーザ提示部又はステップは、ビヘイビアの各構成要素間の接続関係をフローチャート編集形式で提示することにより、プログラムに関する知識が深くない一般しょうひ社葬のユーザであっても、ＧＵＩ画面操作に従って比較的容易にビヘイビアを作成・編集することができる。
【００２４】
前記ユーザ提示部又はステップは、ビヘイビアの各構成要素の詳細な属性情報を設定する属性設定画面をユーザに提供するようにしてもよい。
【００２５】
また、本発明の第２の側面は、多関節構造体のビヘイビアの作成・編集を支援するための処理をコンピュータ・システム上で実行するように記述されたコンピュータ・ソフトウェアをコンピュータ可読形式で物理的に格納した記憶媒体であって、前記コンピュータ・ソフトウェアは、
ユーザから操作画面を介して入力されるコマンドやデータを受容するユーザ入力ステップと、
ユーザに対して前記他関節構造体のビヘイビアを作成・編集するための作業場を操作画面上で提供するユーザ提示ステップと、
操作画面上におけるユーザ入力に基づいてビヘイビアの構成要素どうしの接続関係を形成して、ビヘイビアを規定するプログラムを生成するプログラム生成ステップと、
を具備することを特徴とする記憶媒体である。
【００２６】
本発明の第２の側面に係る記憶媒体は、例えば、様々なプログラム・コードを実行可能な汎用性のコンピュータ・システムに対して、コンピュータ・ソフトウェアをコンピュータ可読な形式で物理的に提供する媒体である。このような媒体は、例えば、ＣＤ（Compact Disc）やＦＤ（Floppy Disc）、ＭＯ（Magneto-Optical disc）などの着脱自在で可搬性の記憶媒体である。あるいは、ネットワーク（ネットワークは無線、有線の区別を問わない）などの伝送媒体などを経由してコンピュータ・ソフトウェアを特定のコンピュータ・システムにコンピュータ可読形式で提供することも技術的に可能である。
【００２７】
このような記憶媒体は、コンピュータ・システム上で所定のコンピュータ・ソフトウェアの機能を実現するための、コンピュータ・ソフトウェアと記憶媒体との構造上又は機能上の協働的関係を定義したものである。換言すれば、本発明の第２の側面に係る記憶媒体を介して所定のコンピュータ・ソフトウェアをコンピュータ・システムにインストールすることによって、コンピュータ・システム上では協働的作用が発揮され、本発明の第１の側面に係るオーサリング・システム及びオーサリング方法と同様の作用効果を得ることができる。
【００２８】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【００２９】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施例を詳解する。
【００３０】
Ａ．ロボットの構成
図１には、本発明を実施に供される、四肢による脚式歩行を行う移動ロボット１の外観構成を示している。図示の通り、該ロボット１は、四肢を有する動物の形状や構造をモデルにして構成された多関節型の移動ロボットである。とりわけ本実施例の移動ロボット１は、愛玩動物の代表例であるイヌの形状及び構造を模してデザインされたペット型ロボットという側面を有し、例えば人間の住環境において人間と共存するとともに、ユーザ操作に応答した動作表現することができる。
【００３１】
移動ロボット１は、胴体部ユニット２と、頭部ユニット３と、尻尾４と、四肢すなわち脚部ユニット６Ａ〜６Ｄで構成される。
【００３２】
頭部ユニット３は、ロール、ピッチ及びヨーの各軸方向（図示）の自由度を持つ首関節７を介して、胴体部ユニット２の略前上端に配設されている。また、頭部ユニット３には、イヌの「目」に相当するＣＣＤ（Charge Coupled Device：電荷結合素子）カメラ１５と、「耳」に相当するマイクロフォン１６と、「口」に相当するスピーカ１７と、触感に相当するタッチセンサ１８と、複数のＬＥＤインジケータ１９が搭載されている。これら以外にも、生体の五感を構成するセンサを含んでいても構わない。
【００３３】
尻尾４は、ロール及びピッチ軸の自由度を持つ尻尾関節８を介して、胴体部ユニット２の略後上端に湾曲若しくは揺動自在に取り付けられている。
【００３４】
脚部ユニット６Ａ及び６Ｂは前足を構成し、脚部ユニット６Ｃ及び６Ｄは後足を構成する。各脚部ユニット６Ａ〜６Ｄは、それぞれ、大腿部ユニット９Ａ〜９Ｄ及び脛部ユニット１０Ａ〜１０Ｄの組み合わせで構成され、胴体部ユニット２の底面の前後左右の各隅部に取り付けられている。大腿部ユニット９Ａ〜９Ｄは、ロール、ピッチ、ヨーの各軸の自由度を持つ股関節１１Ａ〜１１Ｄによって、胴体部ユニット２の各々の所定部位に連結されている。また、大腿部ユニット９Ａ〜９Ｄと脛部ユニット１０Ａ〜１０Ｄの間は、ロール及びピッチ軸の自由度を持つ膝関節１２Ａ〜１２Ｄによって連結されている。
【００３５】
図示のように構成された脚式移動ロボット１は、後述する制御部からの指令により各関節アクチュエータを駆動することによって、例えば、頭部ユニット３を上下左右に振らせたり、尻尾４を振らせたり、各足部ユニット６Ａ〜６Ｄを同期協調的に駆動させて歩行や走行などの動作を実現することができる。
【００３６】
なお、移動ロボット１の関節自由度は、実際には各軸毎に配備され関節アクチュエータ（図示しない）の回転駆動によって提供される。また、脚式移動ロボット１が持つ関節自由度の個数は任意であり、本発明の要旨を限定するものではない。
【００３７】
図２には、移動ロボット１の電気・制御系統の構成図を模式的に示している。
同図に示すように、移動ロボット１は、全体の動作の統括的制御やその他のデータ処理を行う制御部２０と、入出力部４０と、駆動部５０と、電源部６０とで構成される。以下、各部について説明する。
【００３８】
入出力部４０は、入力部として移動ロボット１の目に相当するＣＣＤカメラ１５や、耳に相当するマイクロフォン１６、触感に相当するタッチセンサ１８、あるいは五感に相当するその他の各種のセンサを含む。また、出力部として、口に相当するスピーカ１７、あるいは点滅の組み合わせや点灯のタイミングにより顔の表情を形成するＬＥＤインジケータ１９などを装備している。これら出力部は、脚などによる機械運動パターン以外の形式で移動ロボット１からのユーザ・フィードバックを表現することができる。
【００３９】
移動ロボット１は、カメラ１５を含むことで、作業空間上に存在する任意の物体の形状や色彩を認識することができる。また、移動ロボット１は、カメラのような視覚手段の他に、赤外線、音波、超音波、電波などの発信波を受信する受信装置をさらに備えていてもよい。この場合、各伝送波を検知するセンサ出力に基づいて発信源からの位置や向きを計測することができる。
【００４０】
駆動部５０は、制御部２０が指令する所定の運動パターンに従って移動ロボット１の機械運動を実現する機能ブロックであり、首関節７、尻尾関節８、股関節１１Ａ〜１１Ｄ、膝関節１２Ａ〜１２Ｄなどのそれぞれの関節におけるロール、ピッチ、ヨーなど各軸毎に設けられた駆動ユニットで構成される。図示の例では、移動ロボット１はｎ個の関節自由度を有し、したがって駆動部５０はｎ個の駆動ユニットで構成される。各駆動ユニットは、所定軸回りの回転動作を行うモータ５１と、モータ５１の回転位置を検出するエンコーダ５２と、エンコーダ５２の出力に基づいてモータ５１の回転位置や回転速度を適応的に制御するドライバ５３の組み合わせで構成される。
【００４１】
電源部６０は、その字義通り、移動ロボット１内の各電気回路等に対して給電を行う機能モジュールである。本実施例に係る移動ロボット１は、バッテリを用いた自律駆動式であり、電源部６０は、充電バッテリ６１と、充電バッテリ６１の充放電状態を管理する充放電制御部６２とで構成される。
【００４２】
充電バッテリ６１は、例えば、複数本のニッケル・カドミウム電池セルをカートリッジ式にパッケージ化した「バッテリ・パック」の形態で構成される。
【００４３】
また、充放電制御部６２は、バッテリ６１の端子電圧や充電／放電電流量、バッテリ６１の周囲温度などを測定することでバッテリ６１の残存容量を把握し、充電の開始時期や終了時期などを決定するようになっている。充放電制御部６２が決定する充電の開始及び終了時期は制御部２０に通知され、移動ロボット１が充電オペレーションを開始及び終了するためのトリガとなる。
【００４４】
制御部２０は、「頭脳」に相当し、例えば移動ロボット１の頭部ユニット３あるいは胴体部ユニット２に搭載される。
【００４５】
図３には、制御部２０の構成をさらに詳細に図解している。同図に示すように、制御部２０は、メイン・コントローラとしてのＣＰＵ（Central Processing Unit）２１が、メモリその他の各回路コンポーネントや周辺機器とバス接続された構成となっている。バス２７は、データ・バス、アドレス・バス、コントロール・バスなどを含む共通信号伝送路である。バス２７上の各装置にはそれぞれに固有のアドレス（メモリ・アドレス又はＩ／Ｏアドレス）が割り当てられている。ＣＰＵ２１は、アドレス指定することによってバス２８上の特定の装置と通信することができる。
【００４６】
ＲＡＭ（Random Access Memory）２２は、ＤＲＡＭ（Dynamic RAM）などの揮発性メモリで構成された書き込み可能メモリであり、ＣＰＵ２１が実行するプログラム・コードをロードしたり、実行プログラムによる作業データの一時的な保存のために使用される。
【００４７】
ＲＯＭ（Read Only Memory）２３は、プログラムやデータを恒久的に格納する読み出し専用メモリである。ＲＯＭ２３に格納されるプログラム・コードには、移動ロボット１の電源投入時に実行する自己診断テスト・プログラムや、移動ロボット１の動作を規定する動作制御プログラムなどが挙げられる。
【００４８】
ロボット１の制御プログラムには、カメラ１５やマイクロフォン１６などのセンサ入力を処理する「センサ入力処理プログラム」、センサ入力と所定の動作モデルとに基づいて移動ロボット１の行動すなわち運動パターンを生成する「行動命令プログラム」、生成された運動パターンに従って各モータの駆動やスピーカ１７の音声出力などを制御する「駆動制御プログラム」などが含まれる。生成される運動パターンには、通常の歩行運動や走行運動以外に、「お手」、「お預け」、「お座り」や、「ワンワン」などの動物の鳴き声の発声などエンターティンメント性の高い動作を含んでいてもよい。
【００４９】
また、ロボット１のその他の制御プログラムとして、オーサリング・ツールを用いて作成・編集された各種の行動シーケンス・プログラムが含まれる。オーサリング・ツールは、例えばロボット１外部に設置されたコンピュータ・システム上で所定のソフトウェア実行環境下で起動する。但し、オーサリング・ツール並びに該ツール上で作成・編集されるプログラムついては後に詳解する。
【００５０】
不揮発性メモリ２４は、例えばＥＥＰＲＯＭ（Electrically Erasable and Programmable ROM）のように、電気的に消去再書き込みが可能なメモリ素子で構成され、逐次更新すべきデータを不揮発的に保持するために使用される。逐次更新すべきデータには、例えば、製造番号や暗号鍵などのセキュリティ情報や、移動ロボット１の行動パターンを規定する各種モデルなどが挙げられる。
【００５１】
インターフェース２５は、制御部２０外の機器と相互接続し、データ交換を可能にするための装置である。インターフェース２５は、例えば、カメラ１５やマイクロフォン１６、スピーカ１７との間でデータ入出力を行う。また、インターフェース２５は、駆動部５０内の各ドライバ５３−１…との間でデータやコマンドの入出力を行う。
【００５２】
また、インターフェース２５は、ＲＳ（Recommended Standard）−２３２Ｃなどのシリアル・インターフェース、ＩＥＥＥ（Institute of Electrical and electronics Engineers）１２８４などのパラレル・インターフェース、ＵＳＢ（Universal Serial Bus）インターフェース、ｉ−Ｌｉｎｋ（ＩＥＥＥ１３９４）インターフェース、ＳＣＳＩ（Small Computer System Interface）インターフェース、メモリ・カード・インターフェースなどのような、コンピュータの周辺機器接続用の汎用インターフェースを備え、ローカル接続された外部機器との間でプログラムやデータの移動を行うようにしてもよい。
【００５３】
また、インターフェース２５の他の例として、赤外線通信（ＩｒＤＡ）インターフェースを備え、外部機器と無線通信を行うようにしてもよい。
【００５４】
さらに、制御部２０は、無線通信インターフェース２６やネットワーク・インターフェース・カード（ＮＩＣ）２７などを含み、"ｂｌｕｅｔｏｏｔｈ"や"．１１Ｂ"のような近接無線通信、あるいはＬＡＮ（Local Area Network：例えばEthernet）やインターネットを経由して、外部のホスト・コンピュータ１００とデータ通信を行うことができる。
【００５５】
このような移動ロボット１とホストコンピュータ１００間におけるデータ通信の１つの目的は、ロボット１外部（すなわち遠隔）のコンピュータ資源を用いて、移動ロボット１の複雑な動作制御を演算したり、リモート・コントロールすることである。
【００５６】
また、該データ通信の他の目的は、動作モデルやその他のプログラム・コードなどロボット１の動作制御に必要なデータやプログラムを、ネットワーク経由で遠隔の装置から移動ロボット１に供給することにある。
【００５７】
また、該データ通信の他の目的は、ホスト・コンピュータ１００上でオーサリング・ツール（後述）を用いて作成・編集したロボット動作制御用プログラムのダウンロードや、このような動作制御用プログラムのホスト・コンピュータ１００とロボット１との協働的動作によるリアルタイムのデバッグ処理である。
【００５８】
制御部２０は、テンキー及び／又はアルファベット・キーからなるキーボード２９を備えておいてもよい。キーボード２９は、ロボット１の作業現場においてユーザが直接的なコマンド入力のために使用する他、パスワードなどの所有者認証情報の入力に用いられる。
【００５９】
本実施例に係る移動ロボット１は、制御部２０が所定の動作制御プログラムを実行することによって、自律的（すなわち人手が介在しない）な動作を行うことができる。また、画像入力（すなわちカメラ１５）、音声入力（すなわちマイク１６）、タッチセンサ１８などの人間や動物の五感に相当する入力装置を備えるとともに、これら外部入力に応答した理性的又は感情的な行動を実行するインテリジェンスを備えている。
【００６０】
図１〜図３に示すように構成された移動ロボット１は、以下のような特徴がある。すなわち、
【００６１】
（１）ある姿勢から他の姿勢へ遷移するように指示されたとき、各姿勢間を直接に遷移せず、あらかじめ用意された無理のない中間的な姿勢を経由して遷移することができる。
（２）姿勢遷移で任意の姿勢に到達したときに通知を受け取ることができる。
（３）頭部、足部、尻尾部などの各ユニット単位で姿勢を独立して管理しながら姿勢制御することができる。すなわち、ロボット１の全体の姿勢とは別に各ユニット毎に姿勢を管理することができる。
（４）動作命令の動作の詳細を示すためのパラメータを渡すことができる。
【００６２】
図３に示すように、本実施例に係る移動ロボット１は、ネットワーク経由で外部のホスト・コンピュータ１００と相互接続されている。あるいは、ホスト・コンピュータ１００とは、無線通信（例えば、ｂｌｕｅｔｏｏｔｈや．１１Ｂ近距離無線データ通信）やその他の通信手段によって接続されていてもよい。
【００６３】
ホスト・コンピュータ１００上では、所定のソフトウェア実行環境が構築され、該環境下では、オーサリング・ツールを起動して、ロボット１の動作シーケンスを対話的な処理により比較的容易且つ効率的に作成・編集することができる。但し、オーサリング・ツールの詳細については後述する。
【００６４】
図４には、ホスト・コンピュータ１００のハードウェア構成例を模式的に図解している。以下、コンピュータ１００内の各部について説明する。
【００６５】
システム１００のメイン・コントローラであるＣＰＵ（Central Processing Unit）１０１は、オペレーティング・システム（ＯＳ）の制御下で、各種のアプリケーションを実行するようになっている。ＯＳは、より好ましくはＧＵＩ（Graphical User Interface）環境を提供するが、例えば、ＵＮＩＸ、又は、米Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ９８／ＮＴでよい。
【００６６】
図示の通り、ＣＰＵ１０１は、バス１０７によって他の機器類（後述）と相互接続されている。バス１０７上の各機器にはそれぞれ固有のメモリ・アドレス又はＩ／Ｏアドレスが付与されており、ＣＰＵ１０１はこれらアドレスによって特定の機器へのアクセスが可能となっている。バス１０７は、データ・バス、アドレス・バス、コントロール・バスを含んだ共通信号伝送路であるが、その一例はＰＣＩ（Peripheral Component Interconnect）バスである。
【００６７】
メモリ１０２は、プロセッサ１０１において実行されるプログラム・コードを格納したり、実行中の作業データを一時保管するために使用される記憶装置である。同図に示すメモリ１０２は、不揮発及び揮発メモリ双方を含むものと理解されたい。
【００６８】
ディスプレイ・コントローラ１０３は、ＣＰＵ１０１が発行する描画命令を実際に処理するための専用コントローラであり、例えばＳＶＧＡ（Super Video Graphic Array）又はＸＧＡ（eXtended Graphic Array）相当のビットマップ描画機能をサポートする。ディスプレイ・コントローラ１０３において処理された描画データは、例えばフレーム・バッファ（図示しない）に一旦書き込まれた後、表示装置１１１に画面出力される。表示装置１１１は、例えば、ＣＲＴ（Cathode Ray Tube）ディスプレイや、液晶表示ディスプレイ（Liquid Crystal Display）などである。
【００６９】
入力機器インターフェース１０４は、キーボード１１２やマウス１１３などのユーザ入力機器をシステム１００に接続するための装置である。入力機器インターフェース１０４は、キーボード１１２によるキー入力又はマウス１１３を介した座標指示入力に応答して、ＣＰＵ１０１に対して割り込みを発生する。
【００７０】
ネットワーク・インターフェース１０５は、Ｅｔｈｅｒｎｅｔなどの所定の通信プロトコルに従って、システム１００をＬＡＮ（Local Area Network）などのネットワークに接続したり、あるいはｂｌｕｅｔｏｏｔｈや．１１Ｂのような近距離無線データ通信に接続することができる。ネットワーク・インターフェース１０５は、一般に、ＬＡＮアダプタ・カードの形態で提供され、マザーボード（図示しない）上のＰＣＩバス・スロットの装着して用いられる。
【００７１】
図３に示す例では、ホスト・コンピュータ１００は、無線データ通信やネットワーク経由でロボット１と相互接続されているが、勿論、他の通信手段やデータ移動手段によって両者が接続されていてもよい。例えば、メモリ・カード（メモリ・スティック）のような記録メディアを介してデータの交換や移動を行うようにしてもよい。
【００７２】
またネットワーク上では、複数のホスト・コンピュータ（図示しない）がトランスペアレントな状態で接続され、分散コンピューティング環境が構築されている。ネットワーク上では、ソフトウェア・プログラムやデータ・コンテンツなどの配信が行われる。例えば、本実施例に係るオーサリング・ツールや、該オーサリング・ツールで作成・編集したロボット用行動シーケンス・プログラム（さらには、行動シーケンスの素となるアクション・ファイル、モーション・ファイル、サウンド・ファイル、ＬＥＤ動作ファイル）などを、ネットワーク経由で配信することができる。また、このようなプログラム／データのネットワーク配信サービスを有料又は無料で行ってもよい。
【００７３】
外部機器インターフェース１０６は、ハード・ディスク・ドライブ（ＨＤＤ）１１４やメディア・ドライブ１１５などの外部装置をシステム１００に接続するための装置である。外部機器インターフェース１０６は、例えば、ＩＤＥ（Integrated Drive Electronics）やＳＣＳＩ（Small Computer System Interface）などのインターフェース規格に準拠する。
【００７４】
ＨＤＤ１１４は、記憶担体としての磁気ディスクを固定的に搭載した外部記憶装置であり（周知）、記憶容量やデータ転送速度などの点で他の外部記憶装置よりも優れている。ソフトウェア・プログラムを実行可能な状態でＨＤＤ１１６上に置くことをプログラムのシステムへの「インストール」と呼ぶ。通常、ＨＤＤ１１４には、プロセッサ５１１が実行すべきオペレーティング・システムのプログラム・コードや、アプリケーション・プログラム、デバイス・ドライバなどが不揮発的に格納されている。例えば、本実施例に係るオーサリング・ツールや、該オーサリング・ツールを用いて作成・編集したロボット用行動シーケンス・プログラム（さらには、行動シーケンスの素となるアクション・ファイル、モーション・ファイル、サウンド・ファイル、ＬＥＤ動作ファイルなど）を、ＨＤＤ１１４上にインストールすることができる。
【００７５】
また、メディア・ドライブ１１５は、ＣＤ（Compact Disc）やＭＯ（Magneto-Optical disc）、ＤＶＤ（Digital Versatile Disc）などの可搬型メディアを装填して、データ記録面にアクセスするための装置である。
【００７６】
可搬型メディアは、主として、ソフトウェア・プログラムやデータ・ファイルなどをコンピュータ可読形式のデータとしてバックアップすることや、これらをシステム間で移動（すなわち販売・流通・配布を含む）する目的で使用される。例えば、本実施例に係るオーサリング・ツールや、該オーサリング・ツールを用いて作成したロボット用行動シーケンス・プログラム（さらには、行動シーケンスとなるアクション・ファイル、モーション・ファイル、サウンド・ファイル、ＬＥＤ動作ファイル）などを、これら可搬型メディアを利用して機器間で物理的に流通・配布することができる。
【００７７】
なお、図４に示すようなホスト・コンピュータ１００の一例は、米ＩＢＭ社のパーソナル・コンピュータ"ＰＣ／ＡＴ（Personal Computer/Advanced Technology）"の互換機又は後継機である。勿論、他のアーキテクチャを備えた計算機システムを、本実施形態に係るホスト・コンピュータ１００として適用することも可能である。
【００７８】
Ｂ．オーサリング・システムの構成
本実施例では、ロボット１の所定の動作パターンを記述する一連のコマンド／データからなる動作制御プログラムを、ホスト・コンピュータ１００上で起動したオーサリング・ツールを用いて作成・編集することができる。また、このオーサリング・ツールを用いて作成・編集した動作制御プログラムを、例えばｂｌｕｅｔｏｏｔｈや．１１Ｂなどの無線通信手段を用いてロボット１側に転送して、ホスト・コンピュータ１００とロボット１との協働的動作によりデバッグ処理を行うようになっている。すなわち、ホスト・コンピュータ１００とロボット１間の有機的な結合により、移動ロボット１の動作制御プログラムの作成・編集を支援するためのオーサリング・システムが構築されている訳である。
【００７９】
図５には、オーサリング・システムの全体構成を模式的に図解している。
【００８０】
ホスト・コンピュータ１００側では、ユーザは、オーサリング・ツールが提供するＧＵＩ（Graphical User Interface）画面を用いてマウス操作により移動ロボット１の規定の行動シーケンスを作成・編集することができる（但し、行動シーケンス作成用のＧＵＩ画面並びに該ＧＵＩ画面上での編集操作の詳細については後述に譲る）。あるいは、ユーザは、通常のテキスト・エディタなどを用いて、スクリプト形式（例えばＣ言語などの高級言語形式）でロボット１の動作制御プログラムを作成・編集することができる。
【００８１】
オーサリング・ツールは、ユーザがＧＵＩ画面上で作成・編集した行動シーケンスや、テキスト・エディタ上で作成・編集したスクリプト形式の動作制御プログラムを、"ＲＣＯＤＥ"と呼ばれるアセンブラに類似する形式のニーモニック・コードに変換する。
【００８２】
ここで言うＲＣＯＤＥとは、簡単なコマンドを用いてロボット１を制御するように策定されたプログラム言語である。ＲＣＯＤＥは、"ＩＦ"や"ＧＯ"などの基本的な制御構造も備えているので、ロボット制御用最低水準スクリプト言語としても使用することができる。
【００８３】
ホスト・コンピュータ１００上で作成・編集されたＲＣＯＤＥ動作制御プログラムは、例えば、メモリ・スティックなどのメディアを利用してロボット１側に移動することができる。また、ＲＣＯＤＥ動作制御プログラムのデバッグ時には、ＲＣＯＤＥプログラムを１行ごとに取り出して、暗号化して、ｂｌｕｅｔｏｏｔｈや．１１Ｂなどの無線通信手段を利用してロボット１側に逐次転送するようになっている。
【００８４】
他方、ロボット１側では、ＲＣＯＤＥなどで記述された動作制御プログラムの実行及びデバッグ環境として、インタープリタ／デバッガと、ミドルウェアと、ドライバと、オペレーティング・システム（ＯＳ）とを備えている。
【００８５】
インタープリタは、ＲＣＯＤＥ形式で記述されたプログラムを１行ずつ読み込んで解釈して実行する高水準言語プログラムである。但し、デバッグ時などにおいて、ホスト・コンピュータ１００側から暗号化された形式でＲＣＯＤＥプログラムが送信される場合には、インタープリタは、これを一旦復号化してから解釈・実行を行う必要がある。
【００８６】
デバッガは、ＲＣＯＤＥプログラム中の誤り（バグ）を発見して、修正する作業を支援するプログラムである。すなわち、デバッガによれば、プログラムを指定した行で実行を止めたり、そのときのメモリや変数の内容を参照することができる。
【００８７】
ミドルウェアは、ロボット１の基本的な機能を提供するソフトウェア・モジュールの集まりであり、各モジュールの構成はロボット１の機械的・電気的な特性や仕様、形状などハードウェア属性の影響を受ける。ミドルウェアは、機能的に、認識系のミドルウェアと出力系のミドルウェアに大別される。
【００８８】
認識系のミドルウェアは、画像データや音声データ、その他のセンサから得られる検出データなど、ハードウェアからの生データを仮想ロボット経由で受け取ってこれらを処理するエンジンである。すなわち、各種入力情報に基づき、音声認識、距離検出、姿勢検出、接触、動き検出、色認識などの処理を行い、認識結果を得る。認識結果は、上位のアプリケーション層（行動シーケンス・プログラム）に通知される。
【００８９】
一方、出力系のミドルウェアでは、歩行、動きの再生、出力音の合成、ＬＥＤインジケータの点滅制御などの機能を提供する。すなわち、アプリケーション層において立案された行動計画を受け取って、ロボット１の各機能毎にロボットの各ジョイントのサーボ指令値や出力音、出力光（ＬＥＤ）、出力音声などを生成して、ロボット１上で実演する。
【００９０】
ドライバは、各関節アクチュエータやその他のハードウェアの操作を行うためのプログラム・コードである。
【００９１】
本実施例では、ミドルウェア並びにドライバは、オブジェクト指向プログラムによって実装されている。オブジェクト指向に基づくソフトウェアは、基本的に、データとそのデータに対する処理手続きとを一体化させた「オブジェクト」というモジュール単位で扱われる。また、必要に応じて複数のオブジェクトを作成したり組み合わせることで１つのソフトウェアが完成する。一般に、オブジェクト指向プログラミングによれば、ソフトウェアの開発と保守が効率化されると考えられている。
【００９２】
オペレーティング・システム（ＯＳ）は、これらオブジェクト間のデータ通信の管理や、その他のプログラム実行に関する制御を行う。ＯＳもオブジェクト指向プログラムにより実装される。
【００９３】
Ｃ．オーサリング・ツールを用いたロボット用動作プログラムの作成・編集
本実施例に係るオーサリング・ツールを用いて作成された動作シナリオは、「ビヘイビア」の作成・編集と、「アクション」の作成・編集とで成り立つ。ビヘイビアやアクションを制作するために必要となる情報は、「プロジェクト」と呼ばれるファイルにまとめて管理される。
【００９４】
アクションは、時間軸上で同期がとられたモーション・ファイルとサウンド・ファイルとＬＥＤ動作ファイルという各コンテンツを統合することによって構成される。１つのアクション・ファイルは、概ね１０秒程度で再生されるコマンド（「セマンティックス」とも呼ぶ）である。
【００９５】
モーション・ファイルは、移動ロボット１の各関節アクチュエータの動作を規定するファイルである。本実施例では、ＧＵＩ編集画面上で、移動ロボット１に所望のポーズをとらせた様子を描写した２以上のキーフレームを時系列的に配置することによって、モーションを規定することができる（後述）。
【００９６】
サウンド・ファイルは、スピーカ１７を介して音声出力するための音響データであり、例えばＭＩＤＩ（Musical Instrumental Digital Interface）やＷＡＶＥ形式のファイルとして構成される。例えば、ＭＩＤＩ形式で記述された音響ファイルは、音そのものの情報としてではなく、大きさ、長さ、音色や効果といった演奏情報を数値データに変換して音楽を表現することができる。本実施例では、ＧＵＩ編集画面を介して、音響を構成するＭＩＤＩ形式の各数値データを操作することによって演奏情報を編集することができる（後述）。
【００９７】
ＬＥＤ動作ファイルは、複数のＬＥＤインジケータ１９の点灯動作の組み合わせや点滅のタイミングを規定するためのデータであり、顔の表情を形成することを目的として利用される。本実施例では、ＬＥＤ動作ファイルはＭＩＤＩ形式で記述され、ＧＵＩ編集画面を介してＬＥＤ動作ファイルを自在に編集することができる（後述）。
【００９８】
本実施例では、後述するように、ＧＵＩ形式のアクション編集画面上でタイムラインを利用することによって、モーション、サウンド、LED動作などの各コンテンツ間の同期を容易にとることができるアクション編集のための作業環境が提供される。また、各コンテンツを個々のデータとして処理することができる他、他のコンテンツと統合した形式すなわちアクションの形式としても取り扱うことができる。
【００９９】
「ビヘイビア」とは、２以上のコマンドすなわちアクションを並べていくことにより構成される、移動ロボット１の振る舞いを規定するファイルである（図６を参照のこと）。アクションはスタートからエンドまで一方向で再生される。これに対して、ビヘイビアは、アクションを再生する順序を規定することができる。さらに、条件や確率に基づいた分岐や（図７を参照のこと）、複数のコマンドすなわちアクションをボックス化してサブルーチンを定義することができる（図８を参照のこと）。したがって、ビヘイビアは、アクションに比し、移動ロボット１のより高度で複雑な行動シーケンスを記述することができる。
【０１００】
プロジェクトは、移動ロボット１のコンフィギュレーション（ＣＰＣ：Configured Peripheral Component）と、オーサリング・システム上で制作されるビヘイビア・ファイル及びアクション・ファイルの参照リストを保持する。また、プロジェクトは、アクション・ファイルを制作するために必要な素材（コンテンツ）・ファイル（すなわち、モーション、サウンド、ＬＥＤ動作）の参照リストも保持する。ここで言うコンフィギュレーションとは、胴体、頭部、脚部などのロボット１の物理コンポーネントの組み合わせからなるハードウェア構成情報が設定されている。
【０１０１】
プロジェクト編集時には、図３４に示すような「プロジェクト・ウィンドウ」が表示される。図示の通り、プロジェクト・ウィンドウ内には、ビヘイビアの編集並びにアクションの編集に使用される、ビヘイビア・ファイル、アクション・ファイル、モーション・ファイル、サウンド・ファイル、ＬＥＤ動作ファイルなどの各ファイルのリストがツリー形式で表示されるようになっている。
【０１０２】
本実施例に係るオーサリング・システムは、機能的には、モーション、サウンド、ＬＥＤ動作などの各コンテンツからなるコマンドすなわちアクションを編集する「アクション編集サブシステム」と、２以上のコマンドすなわちアクションを並べていくことによりロボットのビヘイビアを編集する「ビヘイビア編集サブシステム」とで構成される。
【０１０３】
Ｃ−１．アクション編集サブシステム
アクション編集サブシステムは、ロボットの行動シーケンスすなわちビヘイビアで使用される個々のアクションを作成・編集するためのサブシステムである。
【０１０４】
アクションは、アクションを実行するための時間的な長さを持ち、初期ポーズと最終ポーズを規定する。実行時間内でのロボットの動き（モーション）と、サウンドと、ＬＥＤ動作などを設定により、アクションが構成される。アクションを規定するファイルのことを「アクション・ファイル」と呼ぶ。アクションが使用するモーション、サウンド、ＬＥＤ動作などのコンテンツはファイル外からの読み込みでもよい。
【０１０５】
後述するように、本実施例におけるアクション編集は時間軸上に従った編集を中心としたグラフィカルなユーザ・インターフェース、すなわち「アクション・エディタ」を採用する。アクション編集の中で、モーションを規定するポーズの３Ｄ編集、サウンド、ＬＥＤ動作など各コンテンツの編集を行う。これらのコンテンツは時系列データであり、アクション編集サブシステムは、各コンテンツを表示するチャンネルを２次元的なタイムライン形式のタイム・テーブル上で時間軸に沿って配置して表示するようにしているので、各時系列データ間での同期を視覚的に確認しながら作成・編集することができる。
【０１０６】
図９には、アクション編集サブシステムの機能構成を模式的に示している。同図に示すように、本実施例に係るアクション編集サブシステムは、特にアクションの編集向けにデザインされたものであり、アクション編集部と、キーフレーム編集部と、モーション編集部と、サウンド編集部と、ＬＥＤ動作編集部と、これら各機能モジュールによるユーザの編集作業をＧＵＩ画面による対話形式で実現するユーザ・インターフェース制御部とで構成される。
【０１０７】
アクション編集部は、モーション・ファイルとサウンド・ファイルとＬＥＤ動作ファイルとを時間軸上で同期がとられる形式で編集を行うための機能モジュールである。アクション編集部は、ユーザ・インターフェース制御部を介して、移動ロボット１の時間軸に沿った関節動作（モーション）と、サウンド及びＬＥＤ動作のタイミングを設定するためのアクション編集ウィンドウをユーザに提示する。アクション編集ウィンドウは、各種のファイルを時間軸上で設定するためのタイムライン形式のテーブルからなる編集領域を備えている。
【０１０８】
キーフレーム編集部は、キーフレーム、すなわちモーションを実行する移動ロボットの該当する時刻におけるポーズを描写した画像フレームを編集するための機能モジュールである。キーフレーム編集部は、アクション編集部に対するユーザ操作に応答して呼び出され、アクション編集ウィンドウ上で開かれるキーフレーム・チャンネルを介してユーザによる編集作業を受容する。キーフレーム・チャンネルでは、時間軸上の該当する各場所にキーフレームを表すサムネイルが置かれる。
【０１０９】
モーション編集部は、モーションすなわち移動ロボットを構成する各関節アクチュエータの時系列的な動作を編集するための機能モジュールである。モーション編集部は、アクション編集部に対するユーザ操作に応答して呼び出され、アクション編集ウィンドウ上で開かれるモーション・チャンネルを介してユーザによる編集作業を受容する。モーション・チャンネルでは、各関節アクチュエータの時系列的な動作を記述する各タイミングチャートが、生体モデルに従ってツリー状にリストアップ（ツリー・ビュー）される。
【０１１０】
サウンド編集部は、アクションの構成要素の１つであるサウンドの詳細を設定するための機能モジュールである。本実施例では、サウンドは、ＭＩＤＩ形式又はＷＡＶＥ形式で扱われる。サウンド編集部は、ユーザ・インターフェース制御部を介して、時間軸上に沿ってサウンドの詳細を設定するためのサウンド詳細ウィンドウをユーザに提示する。サウンド詳細ウィンドウは、横方向の時間軸と、縦方向のチャンネルで構成される２次元のタイムライン形式のテーブルからなる編集領域を備えている（後述）。
【０１１１】
ＬＥＤ動作編集部は、アクションの構成要素の１つであるＬＥＤ動作の詳細を設定するための機能モジュールである。本実施例では、ＬＥＤ動作は、ＭＩＤＩ形式で扱われる。ＬＥＤ動作編集部は、ユーザ・インターフェース制御部を介して、時間軸上に沿ってＬＥＤ動作の詳細を設定するためのＬＥＤ詳細ウィンドウをユーザに提示する。ＬＥＤ詳細ウィンドウは、横方向の時間軸と、縦方向のチャンネルで構成される２次元のタイムライン形式のテーブルからなる編集領域を備えている（後述）。
【０１１２】
ユーザ・インターフェース制御部は、プロジェクト編集時にはプロジェクト・ウィンドウ（前述）をユーザに提示するようになっている。
【０１１３】
また、ユーザ・インターフェース制御部は、各編集ウィンドウを介したユーザ指示に応答して、ビヘイビア・ファイル、アクション・ファイル、モーション・ファイル,サウンド・ファイル、ＬＥＤ動作ファイルを管理する各ファイル・システム（又はデータベース）にアクセスできるようになっている。
【０１１４】
図１０には、アクション編集ウィンドウの構成を概略的に示している。このアクション編集ウィンドウ上では、移動ロボット１の時間軸に沿った関節動作（モーション）と、サウンド及びＬＥＤ動作のタイミングを設定することができる。
該編集ウィンドウでの編集結果は、拡張子"act"を持つアクション・ファイルとして保存される。
【０１１５】
図示の通り、アクション編集ウィンドウの編集領域は、横方向の時間軸と、縦方向のチャンネルで構成される２次元のタイムライン形式のテーブルである。タイムライン・テーブル内には、時間ルーラと、キーフレーム・チャンネルと、モーション・チャンネルと、サウンド・チャンネルと、ＬＥＤ動作チャンネルで構成される。
【０１１６】
時間ルーラは、単位切り替えラジオ・ボタンを利用して、実時間表示とのフレーム数表示とを切り替えることができる（図１０に示す例では実時間表示が選択されている）。実時間表示の目盛の単位は、秒：ミリ秒（各２桁）表示とする。
【０１１７】
時間ルーラは、単位切り替えラジオ・ボタンの他に、終了時刻フィールドとカレント時刻表示フィールドを含んでいる。
【０１１８】
終了時刻フィールドには、編集中のアクションの終了時刻（すなわち動作時間）を示す時刻数値が表示される（図示の例では"09:40"（＝９秒４０）が表示されている）。また、カレント時刻表示フィールドには、カレント位置の時刻数値が表示される（図示の例では"04:60"（＝４秒６０）が表示されている）。これらのフィールドは編集可能なテキスト・フィールドであり、意味のある時刻数字が入力されると、それが終了時刻になって最終キーフレームが移動したり、あるいはその位置にカレント時刻が移動する。
【０１１９】
編集領域内では、時刻表示ラインとして、「キーフレーム・ライン」と、「最終時刻表示ライン」と、「カレント時刻ライン」がそれぞれ表示される。
【０１２０】
各キーフレームの時刻を示すキーフレーム・ラインが、各チャンネル上を交差する形で表示されるようにしている。したがって、ユーザは、モーション、サウンド、ＬＥＤ動作という各コンテンツの間での同期を目視で確認しながら編集作業を行うことができる。
【０１２１】
また、編集中のアクションの終了時刻を示す終了時刻ラインが各チャンネル上を交差する形で表示するようにしているので、ユーザは編集対象となる時間の範囲を視覚的に理解することができる。終了時刻ラインを最終ポーズ・キーフレーム・ラインととらえることもできる。
【０１２２】
また、現在時刻を示すカレント時刻ラインが各チャンネル上を交差する形で表示するようにしている。基本的に、いずれかのチャンネルの上をクリックすると、その位置にカレント時刻が移動する。
【０１２３】
キーフレーム・チャンネルは、時間ルーラが規定する時間軸に従ってキーフレームを表示するための領域である。
【０１２４】
図１０に示す例では、キーフレーム・チャンネルは、開閉操作可能である。図１１には、キーフレーム・チャンネルを開いた状態（キーフレーム詳細チャンネル）のアクション編集ウィンドウを示している。キーフレーム・チャンネルでは、時間軸上の該当する各場所にキーフレームを表すサムネイルが置かれる。ここで言う「キーフレーム」とは、モーションを実行する移動ロボットの該当する時刻におけるポーズを描写した画像フレームのことである。
【０１２５】
初期ポーズと最終ポーズは、それぞれキーフレーム・チャンネルの初めと終わりに位置する特別なキーフレームである。最初と最後のキーフレームはあらかじめ置かれている。
【０１２６】
キーフレーム・チャンネル上で、キーフレームが配置されていない時間では、この時間を挟む両端のキーフレームによって補間されるフレーム（以下では、「補間フレーム」とも言う）が再生されることになる。補間フレームはキーフレーム上では表示されない。本実施例に係るオーサリング・システムでは、キーフレーム・チャンネル上に各キーフレームを配置すると、各キーフレームで記述されたポーズを円滑につなぎ合わせるようなモーションが、コンピュータ処理により自動生成される。また、３Ｄモデルの重心を各キーフレームで設定して、３Ｄモデルの見た目上の動きを実機に近いものにすることができる。
【０１２７】
各キーフレームは、サムネイルの左端がキーフレームの時刻となるように、キーフレーム・チャンネル上に配置される。また、サムネイルを時間軸に沿って左右にドラッグすることで、キーフレームラインが追従して移動し、該当するキーフレームの時刻を変更することができる。また、最終ポーズのキーフレームの伸縮は、アクションの全体時間の伸縮となる。
【０１２８】
サムネイルをダブル・クリックすると、該当するポーズのポーズ編集ウィンドウが開いて、ポーズを編集することができる。但し、初期ポーズと最終ポーズは編集対象外であり、これらをダブルクリックしてもポーズ編集ウィンドウは開かない。
【０１２９】
モーション・チャンネルは、時間ルーラが規定する時間軸に沿ってモーションの内容を編集・表示するための領域である。
【０１３０】
本実施例では、モーション・チャンネルは、開閉操作可能である。図１２には、モーション・チャンネルを開いた状態（モーション詳細チャンネル）のアクション編集ウィンドウを示している。モーションは、移動ロボット１を構成する各関節アクチュエータの動作によって定義される。モーション・チャンネルでは、各関節アクチュエータの時系列的な動作を記述する各タイミングチャートが、生体モデルに従ってツリー状にリストアップ（ツリー・ビュー）される。
【０１３１】
それぞれのタイミングチャート上の折れ線グラフは、該当する関節アクチュエータの動きすなわち回転角度の時間的変化を示している。キーフレーム・ラインと折れ線との交差するポイントを上下にドラッグすることによって、該当する関節アクチュエータの当該時間における設定値を変更することができる。また、このようなドラッグ操作の結果、キーフレーム・ラインに該当するポーズも変化し、キーフレームの内容も自動更新される。
【０１３２】
サウンド・チャンネルは、時間ルーラが規定する時間軸に沿ってサウンド・データを表示するための領域である。本実施例では、アクション編集ウィンドウからは独立した「サウンド詳細ウィンドウ」を開いて、該ウィンドウ上でＭＩＤＩ形式のサウンド・データをＧＵＩ操作によって編集することができる。
【０１３３】
ＬＥＤ動作チャンネルは、時間ルーラが規定する時間軸に沿ってＬＥＤ動作データを表示するための領域である。本実施例では、アクション編集ウィンドウからは独立した「ＬＥＤ詳細ウィンドウ」を開いて、該ウィンドウ上でＭＩＤＩ形式のＬＥＤ動作データをＧＵＩ操作で編集することができる。
【０１３４】
図１３には、ＭＩＤＩ形式のサウンド・ファイルを編集するためのサウンド詳細ウィンドウの構成を概略的に示している。図示の通り、このサウンド詳細ウィンドウの編集領域は、横方向の時間軸と、縦方向のチャンネルで構成される２次元のタイムライン形式のテーブルである。タイムライン・テーブル内は、時間ルーラと、キーフレーム・チャンネルと、スコア・チャンネルと、ベロシティ・チャンネルとで構成される。
【０１３５】
時間ルーラは、単位切り替えラジオ・ボタンを利用して、実時間表示とのフレーム数表示とを切り替えることができる（図１３に示す例では実時間表示が選択されている）。時間ルーラには、単位切り替えラジオ・ボタンの他に、終了時刻フィールドとカレント時刻表示フィールドを含んでいる。終了時刻フィールドには、編集中のアクションの終了時刻を示す時刻数値が表示され、カレント時刻表示フィールドには、カレント位置の時刻数値が表示される。これらのフィールドに意味のある時刻数字が入力されると、それが終了時刻になって最終キーフレームが移動したり、あるいはその位置にカレント時刻が移動する。
【０１３６】
編集領域内では、時刻表示ラインとして、「キーフレーム・ライン」と、「最終時刻表示ライン」と、「カレント時刻ライン」がそれぞれ表示される。各キーフレーム（後述）の時刻を示すキーフレーム・ラインが、各チャンネル上を交差する形で表示されており、ユーザは、キーフレームとの同期を目視で確認しながらＭＩＤＩサウンドの編集作業を行うことができる。また、編集中のアクションの終了時刻を示す終了時刻ラインが各チャンネル上を交差する形で表示するようにしているので、ユーザは編集対象となる時間の範囲を視覚的に理解することができる。また、現在時刻を示すカレント時刻ラインが各チャンネル上を交差する形で表示するようにしている。基本的に、いずれかのチャンネルの上をクリックすると、その位置にカレント時刻が移動する。
【０１３７】
キーフレーム・チャンネルでは、時間ルーラが規定する時間軸に沿ってアクション編集ウィンドウから取得したキーフレーム位置が表示される。
【０１３８】
スコア・チャンネルは、ＧＵＩ操作によってＭＩＤＩサウンドを編集するための領域であり、ピアノ鍵盤（但し、移動ロボット１のモデルによってその有効音域は相違する）と、時間軸方向の基本グリッドによって構成される。
【０１３９】
ピアノ鍵盤では、ピアノ鍵盤のイメージ表示により移動ロボット１のハードウェア仕様などで許容される最大音域を表示するようになっている（あるいは、再生可能な音域を明るく表示し、それ以外をグレー表示するようにしてもよい）。
基本となるＣキー部分には、Ｃ３、Ｃ４などの絶対音の高さを表示する
【０１４０】
スコア部分には、設定された四分音符の時間幅のグリッドが表示される。また、拍子で設定された値（前述）によって、２グリッド（すなわち２拍子）、３グリッド（３拍子）、４グリッド（４拍子）のラインが強調される。
【０１４１】
スコア・チャンネル上には、時間軸の基準となる音長と、ピアノ・キーの高さによってスコアが構成される。１つの桝目を「セル」と呼ぶ。音のあるセルには色が付く。但し、一音のみの再生モデルの場合、同じ時間軸上の異なる音階には音は置けない。また、空の（すなわち色が付いていない）セルをクリックすると、選択されている音符マークの長さの音が置かれる。同一時間上の他の高さに音が存在するとき、音はクリックされた高さに置き換わる。既に音が存在するセルがクリックされると、その音が除かれる。
【０１４２】
ピアノ鍵盤の左側の領域に、１６分音符、八分音符、四分音符、二分音符、全音符、付点八分音符、付点四分音符、付点二分音符などの音符マークを表示しておく。これら音符マークは互いに排他的な選択状態を持ち、常にいずれか１つのみが選択されるものとする。また、マウス・クリック操作により選択アイテムが変化する。
【０１４３】
ベロシティ・チャンネルは、各音毎のベロシティの強さを表示する領域である。図１３に示す例では、音の強さは棒グラフで表示されるが、折れ線グラフで表示してもよい。各節点での音の強さは、棒グラフの最上端をドラッグすることによった調整することができる。デフォルトでは最大音量が設定されている。
【０１４４】
また、図１４には、ＷＡＶＥ形式のサウンド・ファイルを表示するためのサウンド詳細ウィンドウの構成を概略的に示している。図示の通り、サウンド詳細ウィンドウは、タイトル・バーと、メニュー・バーと、ＷＡＶＥ形式サウンド・ファイルの編集領域は、横方向の時間軸と、縦方向のチャンネルで構成される２次元のタイムライン形式のテーブルである。タイムライン・テーブル内は、時間ルーラと、キーフレーム・チャンネルと、ＷＡＶＥチャンネルとで構成される。
【０１４５】
時間ルーラは、単位切り替えラジオ・ボタンを利用して、実時間表示とのフレーム数表示とを切り替えることができる。
【０１４６】
終了時刻フィールドには、編集中のアクションの終了時刻（すなわち動作時間）を示す時刻数値が表示される。また、カレント時刻表示フィールドには、カレント位置の時刻数値が表示される。これらのフィールドに意味のある時刻数字が入力されるとそれが終了時刻になって最終キーフレームが移動したり、あるいはその位置にカレント時刻が移動する。
【０１４７】
編集領域内では、時刻表示ラインとして、「キーフレーム・ライン」と、「最終時刻表示ライン」と、「カレント時刻ライン」がそれぞれ表示される。各キーフレームの時刻を示すキーフレーム・ラインが、各チャンネル上を交差する形で表示されており、ユーザは、キーフレームとの同期を目視で確認しながらＷＡＶＥサウンドの編集作業を行うことができる。また、編集中のアクションの終了時刻を示す終了時刻ラインが各チャンネル上を交差する形で表示するようにしているので、ユーザは編集対象となる時間の範囲を視覚的に理解することができる。また、現在時刻を示すカレント時刻ラインが各チャンネル上を交差する形で表示するようにしている。基本的に、いずれかのチャンネルの上をクリックすると、その位置にカレント時刻が移動する。
【０１４８】
キーフレーム・チャンネルでは、時間ルーラが規定する時間軸に沿ってアクション編集ウィンドウから取得したキーフレーム位置が表示される。
【０１４９】
ＷＡＶＥチャンネルでは、図１４に示すように、ＷＡＶＥ形式のサウンド・ファイルの中身が波形として表示される。
【０１５０】
また、図１５には、ＭＩＤＩ形式で記述されたＬＥＤ動作ファイルを表示して編集するためのＬＥＤ詳細ウィンドウの構成を概略的に示している。図示の通り、サウンド詳細ウィンドウの編集領域は、横方向の時間軸と、縦方向のチャンネルで構成される２次元のタイムライン形式のテーブルである。タイムライン・テーブル内は、時間ルーラと、キーフレーム・チャンネルと、スコア・チャンネルとで構成される。
【０１５１】
時間ルーラは、単位切り替えラジオ・ボタンを利用して、実時間表示とのフレーム数表示とを切り替えることができる。時間ルーラは、単位切り替えラジオ・ボタンの他に、終了時刻フィールドとカレント時刻表示フィールドを含んでいる。終了時刻フィールドには、編集中のアクションの終了時刻を示す時刻数値が表示される。また、カレント時刻表示フィールドには、カレント位置の時刻数値が表示される。これらのフィールドに意味のある時刻数字が入力されると、それが終了時刻になって最終キーフレームが移動したり、あるいはその位置にカレント時刻が移動する。
【０１５２】
編集領域内では、時刻表示ラインとして、「キーフレーム・ライン」と、「最終時刻表示ライン」と、「カレント時刻ライン」がそれぞれ表示される。各キーフレームの時刻を示すキーフレーム・ラインが、各チャンネル上を交差する形で表示されており、ユーザは、キーフレームとの同期を目視で確認しながらＭＩＤＩ形式で記述されたＬＥＤ動作の編集作業を行うことができる。また、編集中のアクションの終了時刻を示す終了時刻ラインが各チャンネル上を交差する形で表示するようにしているので、ユーザは編集対象となる時間の範囲を視覚的に理解することができる。また、現在時刻を示すカレント時刻ラインが各チャンネル上を交差する形で表示するようにしている。基本的に、いずれかのチャンネルの上をクリックすると、その位置にカレント時刻が移動する。
【０１５３】
キーフレーム・チャンネルでは、時間ルーラが規定する時間軸に沿ってアクション編集ウィンドウから取得したキーフレーム位置が表示される。
【０１５４】
スコア・チャンネルは、ＧＵＩ操作によってＭＩＤＩ形式で記述されるＬＥＤ動作を編集するための領域であり、移動ロボット１本体上でＬＥＤを配置した部位のリストと、時間軸方向の基本グリッドによって構成される。本実施例では、でこ（でこぴん）と、右目αと、左目αと、右目βと、左目βと、右目γと、左目γと、しっぽαと、しっぽβの各部位にＬＥＤが配置されている。
【０１５５】
スコア・チャンネル上には、時間軸上に各部位のＬＥＤの点灯状況を表示することによって各部位リスト毎のスコアが構成される。１つの桝目を「セル」と呼ぶ。時間軸上でＬＥＤが点灯する部位に相当する位置のセルには、その色や点灯強度に応じた色が付く。
【０１５６】
スコア・チャンネルの左横には、ＬＥＤ部位ビジュアルが表示されている。これは、変更可能なＬＥＤの各部位をグラフィック表現したものである。
【０１５７】
また、ＬＥＤ部位ビジュアルの下方にはベロシティ・マークが表示されている。ベロシティ・マークは、上昇、最高位キープ、下降などの種類を表示したマークである。これらのマークは、互いに排他的な選択状態を持ち、常にどれか１つが選ばれている。また、マウス・クリックによって、選択アイテムが変化する。
【０１５８】
本実施例に係るアクション編集サブシステムは、上述のアクション編集ウィンドウ（図１０を参照のこと）上で編集したアクションの内容を視覚的に確認するために、プレビュー・ウィンドウを用意している。
【０１５９】
図１６には、プレビュー・ウィンドウの構成を概略的に示している。同図に示すように、プレビュー・ウィンドウは、「３Ｄビュー」と、「３Ｄ表示切り替えボタン群」と、「カレント時刻フィールド」と、「再生ボタン群」とで構成される。
【０１６０】
３Ｄビューには、コンピュータ・グラフィックス処理により生成された３次元移動ロボット１の映像が常に表示される。このビュー上でドラッグすることにより、視線方向を移動させて、ビューの見え方を変えることができる。また、図示しないが、２以上の視点から３Ｄモデルを同時にプレビューできるように構成してもよい。また、ビューの動きは、３Ｄ表示切り替えボタン群上でのユーザ入力操作と連動する。
【０１６１】
モーションの３Ｄ表示を作成処理する際に、３Ｄモデルにより各部位どうしの衝突（collision）や各関節の駆動速度のチェック機能を備えていてもよい。また、３Ｄモデルの重心を各キーフレームで設定して、３Ｄモデルの見た目上の動きを実機に近いものにすることができる。
【０１６２】
また、３Ｄビューの右側には、ＬＥＤ動作を表示するためのＬＥＤ動作プレビュー領域が配設されている。このプレビュー領域では、上述した３Ｄビュー上の移動ロボット１の動きと同期させて、移動ロボット１のＬＥＤが点滅する様子を表示するようになっている。
【０１６３】
３Ｄ表示切り替えボタン群には、「回転」、「ズームイン／アウト」、「パン」、「ホーム位置」という各ボタンが配設されている。ユーザは、これらのボタンをクリック操作することにより、３Ｄビュー内におけるロボットに対する視線方向を変更することができる。
【０１６４】
例えば、回転ボタンをクリックすると、回転モードになり、以降３Ｄビューをドラッグすると、３Ｄビュー内の移動ロボット１が回転する。また、ズームイン／アウト・ボタンをクリックすると、ズーム・モードになり、以降３Ｄビューを上下にドラッグすると、３Ｄビュー内の移動ロボット１がズームイン／アウトする。また、パン・ボタンをクリックすると、３Ｄビューはパン・モードになり、以降３Ｄビューを上下左右にドラッグすると３Ｄビューがパンすなわち高速移動する。また、ホーム位置ボタンをクリックすると、移動ロボット１の３次元表示がデフォルトのビューすなわちデフォルトの視線方向から見た状態に戻る。
【０１６５】
カレント時刻フィールドには、３Ｄビューに表示されている描画内容のカレント時刻が表示される。このフィールドに時刻として意味のある文字が入力されると、３Ｄビューの表示は該当する時刻のフレームに切り替わる。また、カレントの時刻位置を相対的にビジュアル表示するようになっている。
【０１６６】
再生ボタン群には、「フレームの巻き戻し」、「前のキーフレーム」、「プレイ／ストップ」、「フレームのコマ送り」、「フレーム送り」、「ループ再生」という各ボタンが配設されている。
【０１６７】
「フレームの巻き戻し」をクリックすると、３Ｄビューの表示が最初のフレームに戻る。「前のキーフレーム」をクリックすると、３Ｄビューの表示がカレント位置から直前のキーフレームに飛ぶ。また、「プレイ／ストップ」をクリックすると、３Ｄビュー表示の再生を開始又は停止する（プレイ中は、プレイ／ストップ・ボタンはストップとなり、ストップ中はプレイとして作用する）。また、「フレームのコマ送り」は、３Ｄビュー表示の再生中のみ有効であり、クリックされると１フレーム分がコマ送りされる。また、「フレーム送り」をクリックすると、３Ｄビューの表示が最後のフレームに進む。また、「ループ再生」をクリックすると、３Ｄビューの表示がループ再生される。
【０１６８】
また、本実施例に係るアクション編集サブシステムは、移動ロボット１の３次元的なポーズを、ドラッグを基調とするＧＵＩ操作により編集するためにポーズ・ウィンドウを用意している。ポーズ・ウィンドウ上で編集されるポーズは、例えば、モーションを構成するキーフレームとして利用することができる。
【０１６９】
図１７には、ポーズ・ウィンドウの構成を概略的に示している。このポーズ・ウィンドウ上では、移動ロボット１を構成する各関節アクチュエータの回転角度をＧＵＩ操作により直接指示して、所望のポーズを簡易に指定することができる。ポーズ・ウィンドウは、実体表示領域と、リスト指定領域と、設定値領域と、３Ｄ表示領域と、３Ｄ表示切替ボタン群と、表示切り替えポップアップとで構成される。
【０１７０】
実体指定領域では、移動ロボット１の展開平面図を表示され編集可能部位をユーザに選択させる。選択された部位は、リスト指定の項目が選択されて、３Ｄ表示上で強調表示又はブリンクされ、設定値エリアの内容が切り替わる。
【０１７１】
リスト指定領域では、移動ロボット１の編集可能部位とその設定値がリストとして表示される。ユーザはこのリストの中から特定の部位を選択すると、実体指定領域では該当する部位が強調表示され、３Ｄ表示領域では強調表示又はブリンクされ、設定値領域の内容が切り替わる。
【０１７２】
設定値領域では、各編集可能部位の設定部位名称、設定値、設定可能最小値並びに最大値が一覧表示されている。ユーザがある特定の部位を選択するとその内容が切り替わる。設定値は、入力可能フィールドで直接キー入力することができる。角度の表現は円弧表現とし、指定用のラインをドラッグすることによって設定値を変更することができる。
【０１７３】
３Ｄ表示領域では、３Ｄグラフィックスにより生成された移動ロボット１の全身画像が地面とともに描画される。ユーザは、この３Ｄ表示から該当する部位をクリックすることにより、その部位を選択することができ、選択部位は強調表示される。さらに、選択部位をドラッグすることにより、設定値を直接切り替えることができる。
【０１７４】
３Ｄ表示領域における表示内容は３Ｄ表示切り替えボタンと連動しており、この３Ｄ表示領域のビュー上をドラッグすることによりビューの見え方すなわち視線方向を変えることができる。
【０１７５】
３Ｄ表示切り替えボタン群には、「回転」、「ズームイン／アウト」、「パン」、「ホーム位置」という各ボタンが配設されている。ユーザは、これらのボタンをクリック操作することにより、３Ｄ表示領域内の視線方向を変更することができる。
【０１７６】
例えば、回転ボタンをクリックすると、回転モードになり、以降３Ｄ表示領域をドラッグすると３Ｄ表示領域内の移動ロボット１が回転する。また、ズームイン／アウト・ボタンをクリックすると、ズーム・モードになり、以降３Ｄ表示領域を上下にドラッグすると３Ｄ表示領域内で移動ロボット１がズームイン／アウトする。また、パン・ボタンをクリックするとパン・モードになり、以降３Ｄ表示領域を上下左右にドラッグすると３Ｄ表示領域内で移動ロボット１がパンすなわち高速移動する。また、ホーム位置ボタンをクリックすると、移動ロボット１の３次元表示がデフォルトの視線方向から見た状態に戻る。
【０１７７】
ポーズ・ウィンドウには、「ＯＫ」ボタンと「キャンセル」ボタンが用意されている。ＯＫボタンをクリックすると、該ウィンドウ内におけるすべての編集項目を有効にして、このウィンドウを閉じる。他方、キャンセル・ボタンをクリックするとすべての編集項目を無効にしてこのウィンドウを閉じる（周知）。
【０１７８】
また、本実施例に係るアクション編集サブシステムは、モーション・チャンネルで編集されたモーション、あるいはポーヴ・ウィンドウにより編集された各ポーズをキーフレームとしたモーションをプレビューするためのモーション・プレビューワを用意している。図１８には、モーション・プレビューワの構成を概略的に示している。
【０１７９】
モーション・プレビューワ上では、モーションをプレビューするとともに、アクション編集ウィンドウにペーストするために、ポーズをコピーすることが許容される。
【０１８０】
モーション・プレビューワ上では、モーションを構成する１以上のキーフレームすなわちポーズのサムネイルを表示するようになっている。キーフレームの配列は、例えば、モーション再生時の時系列に従う。
【０１８１】
Ｃ−２．ビヘイビア編集サブシステム
ビヘイビア編集サブシステムは、ロボットの行動シーケンスすなわちビヘイビアを作成・編集するためのサブシステムである。
【０１８２】
図６〜図８を参照しながら既に説明したように、ロボットの行動シーケンスすなわちビヘイビアは、２以上のコマンドすなわちアクションを並べていくことによって構成される。アクションはスタートからエンドまで一方向で再生される。これに対して、ビヘイビアは、アクションを再生する順序を規定することができる。さらに、センサからの入力などに基づいて条件判断を実行し、アクション起動の流れを分岐させることができる。また、複数のアクションやブランチをグループ化してサブルーチンとして機能させることにより、複雑なビヘイビアの作成・編集作業を容易で効率的にすることができる。
【０１８３】
ビヘイビアを規定するファイルのことを「ビヘイビア・ファイル」と呼ぶ。ビヘイビアにおいて使用するアクションの内容を、ファイル参照しても、あるいは読み込むようにしてもよい。
【０１８４】
本実施例におけるビヘイビア編集サブシステムは、使用するアクションを部品化してマウス操作により取り扱うことができるグラフィカルなユーザ・インターフェース、すなわち「ビヘイビア・エディタ」を採用する。ビヘイビアはその部品である２以上のアクションを配列することによって構成されることから、ビヘイビア・エディタは、外見的にはフローチャート・エディタの形式を採用する。ビヘイビア・エディタ画面上では、アクション間の連結に条件判断を形成したり、ループを形成したり、複数のアクションの配列をグループ化し部品として定義することができる。但し、ビヘイビア・エディタが提供するビヘイビア編集画面の詳細については、後述に譲る。
【０１８５】
図１９には、ビヘイビア編集サブシステムの機能構成を模式的に示している。
同図に示すように、本実施例に係るビヘイビア編集サブシステムは、特にビヘイビアの編集向けにデザインされたものであり、ビヘイビア編集部と、これら各機能モジュールによるユーザの編集作業をＧＵＩ画面による対話形式で実現するユーザ・インターフェース制御部とで構成される。
【０１８６】
ビヘイビア編集部は、アクション編集サブシステムにおいて作成されたアクションを部品として、複数のアクションを配列することにより（図６〜８を参照のこと）、１つのビヘイビアを完成させる。
【０１８７】
ビヘイビア編集部は、意図する動作すなわちアクションを表すボックスをライブラリから選択することができる。ライブラリからのアクションの選択はアクション選択部を介して行われる。アクション選択部の起動により、画面上にはアクション設定ウィンドウがポップアップ表示される。アクション設定ウィンドウ（後述）上では、アクションの詳細を対話形式で指定することができる。指定されたアクションは、編集画面上ではボックスとして配置される。
【０１８８】
複数のアクションの配列をグループ化して、部品として定義する場合には、グループ登録部を呼び出すことによって行われる。グループ登録部の起動により、画面上にはグループ設定ウィンドウがポップアップ表示され、グループの詳細を対話形式で指定することができる。グループは、グループ登録部を介してライブラリ内に登録され、以後はアクションと同様に、ビヘイビアを構成する部品として取り扱うことができ、編集画面上ではボックスとして表示される。
【０１８９】
ビヘイビアは、アクションどうしの単なる連結の他、後続の複数のアクションへの分岐並びに分岐のための条件判断を含んだり、アクションのループを形成することができる。
【０１９０】
アクションを接続する場合、接続側並びに被接続側それぞれのアクションに対して接続用の端子を形成する。端子の形成は、端子設定部によって行われる。端子設定部を起動することにより、編集画面上では端子設定ウィンドウがポップアップ表示され、端子の詳細を指定することができる。また、ビヘイビア編集画面上では、ボックスの端子どうしをドラッグすることにより該当するアクションどうしを連結することができる。
【０１９１】
あるアクションが複数のアクションへの分岐を設定する場合、分岐設定部を呼び出す。分岐設定部の起動により、編集画面上には分岐設定ウィンドウがポップアップ表示され、分岐の詳細を指定することができる。
【０１９２】
あるアクションが後続のアクションへ進むための条件を設定する場合、条件設定部を呼び出す。条件設定部の起動により、編集画面上には条件設定ウィンドウがポップアップ表示され、条件判断の詳細を指定することができる。
【０１９３】
ユーザ・インターフェース制御部によって、ビヘイビア編集ウィンドウがコンピュータ画面上に提示される。このビヘイビア編集ウィンドウ上では、基本的には、ビヘイビアの構成要素であるアクションを表すボックスを、分岐端子を用いて接続していくことにより、全体としてある所定の機能を実現するプログラムを組むことができる。接続関係が形成された複数のアクションをグループとして登録し、グループを表すボックスを、アクション・ボックスと同様に部品化して、ビヘイビア編集ウィンドウ上で取り扱うことができる。ビヘイビア編集ウィンドウは、外見上はフローチャート・エディタの形式を採用する。
【０１９４】
図２０には、ビヘイビア編集ウィンドウの構成を概略的に示している。
【０１９５】
図示の通り、ビヘイビア編集ウィンドウは、タイトル・バーと、メニュー・バーと、ツール・バーと、アクションやグループを分岐端子によって接続してフローチャート編集様式でプログラムを編集することができる編集領域とで構成される。
【０１９６】
メニュー・バーには「ファイル」、「編集」、「オブジェクト」、「ツール」、「表示倍率」、「ヘルプ」という各メニューが用意されている。
【０１９７】
メニュー「ファイル」を選択すると、さらに「新規ビヘイビア」、「ビヘイビアを開く」、「ビヘイビア保存」、「ビヘイビア新規保存」、並びに、「閉じる」という各サブ・メニューからなるプルダウン・メニューが出現する（図２１を参照のこと）。
【０１９８】
サブメニュー「新規ビヘイビア」を選択すると、新規のビヘイビアを生成する。既に未保存のアクションが開かれている場合、そのビヘイビアを保存するかどうかの確認をユーザにプロンプトするダイアログ（図示しない）が出現する。
【０１９９】
サブメニュー「ビヘイビアを開く」を選択すると、既存のビヘイビア・ファイルを開く。既に未保存のビヘイビアが開かれている場合、そのビヘイビアを保存するかどうかの確認をユーザにプロンプトするダイアログが出現する（同上）。
【０２００】
サブメニュー「ビヘイビア保存」を選択すると、該当するビヘイビア・ファイルを上書き保存する。未保存ファイルの場合、ビヘイビア新規保存（後述）と同様、ファイル設定ダイアログが出現して、ファイル名の入力をユーザにプロンプトする。
【０２０１】
サブメニュー「ビヘイビア新規保存」を選択すると、ファイル設定ダイアログ（図示しない）が出現して、ファイル名の入力をユーザにプロンプトする。
【０２０２】
サブメニュー「閉じる」を選択すると、起動中のビヘイビア編集ウィンドウを閉じる。該ウィンドウ内のビヘイビア・ファイルが未保存の場合には、ダイアログが出現して、これを保存するかどうかの確認をユーザにプロンプトする（同上）。
【０２０３】
また、メニュー「編集」を選択すると、さらに「元に戻す」、「切り取り」、「コピー」、「上書き貼り付け」、「挿入貼り付け」、並びに、「削除」という各サブ・メニューからなるプルダウン・メニューが出現する（図２２を参照のこと）。
【０２０４】
サブメニュー「元に戻す」を選択すると、直近の操作から順にアンドゥー処理が行われる。
【０２０５】
サブメニュー「切り取り」を選択すると、選択されたオブジェクトがカットされる。カットされたデータは、実際にはクリップボード内に一時的に保管される。
【０２０６】
サブメニュー「コピー」を選択すると、選択されたオブジェクトがコピーされる。コピーされたデータは、実際にはクリップボード内に一時的に保管される。
【０２０７】
サブメニュー「上書き貼り付け」を選択すると、クリップボードに保管されているオブジェクトがビヘイビア編集領域上にペーストされる。
【０２０８】
サブメニュー「削除」を選択すると、選択されたオブジェクトが削除される。
【０２０９】
メニュー「オブジェクト」は、ビヘイビア編集領域上に、プログラム編集用の部品となるオブジェクトを置いたり、設置したオブジェクトに対する操作を行うための機能を提供する。プログラム編集用の部品とは、ボックス化されたアクション、ブランチ、グループ、あるいはこれらボックス間を接続するためのターミナル（分岐端子）である。これらオブジェクトは、フローチャートの構成要素となる。
【０２１０】
メニュー「オブジェクト」を選択すると、さらに「アクションを置く」、「新規ブランチを置く」、「新規グループを置く」、「新規ターミナルを置く」、並びに、「プロパティ」という各サブ・メニューからなるプルダウン・メニューが出現する（図２３を参照のこと）。
【０２１１】
サブメニュー「アクションを置く」を選択すると、ファイル選択ダイアログ（図示しない）が出現して、アクション・ファイルの選択をユーザにプロンプトする。選択されたアクションは、オブジェクトすなわち「アクション・ボックス」として、ビヘイビア編集領域上に置かれる。そのアクションは、同時に自動的にプロジェクト・ウィンドウ（前述）に登録される。
【０２１２】
サブメニュー「新規ブランチを置く」を選択すると、新規のブランチを生成して、これに対応するオブジェクトすなわち「ブランチ・ボックス」をビヘイビア編集領域上に置く。新規のブランチにはデフォルトの名前が付けられ、ユーザはこれを適当な名前に変更することができる。
【０２１３】
サブメニュー「新規グループを置く」を選択すると、新規のグループを生成して、これに対応するオブジェクトすなわち「グループ・ボックス」をビヘイビア編集領域上に置く。新規のグループにはデフォルトの名前が付けられ、ユーザはこれを適当な名前に変更することができる。
【０２１４】
サブメニュー「新規ターミナルを置く」を選択すると、新規のターミナルを生成して、これをビヘイビア編集領域上に置く。新規のターミナルにはデフォルトの名前が付けられ、ユーザはこれを適当な名前に変更することができる。
【０２１５】
サブメニュー「プロパティ」を選択すると、選択されているオブジェクトのプロパティ・ダイアログが出現する。ユーザは、このダイアログ内で該当するオブジェクトのプロパティを設定することができる。但し、プロパティ・ダイアログに関しては後述する。
【０２１６】
なお、オブジェクト・メニューの各サブメニュー項目と同様の機能は、ツール・バー（後述）上でも提供される。
【０２１７】
メニュー「ツール」は、「アローツール」、「結線ツール」、「線切りツール」などのサブメニューを用意する。各サブメニューを用意すると、該当する機能が呼び出される。これらサブメニューと同じ機能は、ツール・バー上のツール・ボックスとして配設されている（後述）。
【０２１８】
また、メニュー「表示倍率」は、ビヘイビア編集領域の表示倍率を選択するためのメニュー項目である。本実施例では、１／４，１／２，等倍，２倍，４倍，８倍を選択肢として用意している。
【０２１９】
また、メニュー「ヘルプ」には、トピックやサポート・ウェブ、バージョン情報などのサブメニューが含まれている（周知）。
【０２２０】
ツール・バー内には、「アローツール」、「結線ツール」、「線切りツール」、「ルーペ」、「ごみ箱」などの頻繁に使用する機能を瞬時に呼び出すためのツール・ボックスと、「アクション」、「グループ」、「ブランチ」、「ターミナル」などのビヘイビア編集領域に置くべき部品すなわちオブジェクトを呼び出すためのオブジェクト・ボックスが配設されている。
【０２２１】
ツール・ボックス「アローツール」を指定すると、ビヘイビア編集領域内におけるマウス操作が、通常モード、すなわちオブジェクトを移動させるモードになる。
【０２２２】
ツール・ボックス「結線ツール」を指定すると、ビヘイビア編集領域内におけるマウス操作が、結線モード、すなわちオブジェクトどうしを結線するモードになる。
【０２２３】
ツール・ボックス「線切りツール」を指定すると、ビヘイビア編集領域以内におけるマウス操作が、線切りモード、すなわちオブジェクト間の結線を切断するモードになる。
【０２２４】
ツール・ボックス「ルーペ」を指定すると、マウスがクリックされた時点を一段階ずつ拡大表示する。また、コントロール・キーを押下しながらルーペをクリックすると、一段階ずつ縮小表示する。表示倍率範囲は、メニュー「表示倍率」内で用意されるサブメニュー項目（前述）に従う。
【０２２５】
ツール・ボックス「ごみ箱」を指定すると、マウスがクリックされたオブジェクトをビヘイビア編集領域から削除することができる。
【０２２６】
各ツール・ボックス「アローツール」、「結線ツール」、「線切りツール」、「ルーペ」は、排他的に選択される。
【０２２７】
ボックス「アクション」をツール・バーからビヘイビア編集領域内にドラッグすることにより、ドラッグ先には新規のアクション・ボックスが置かれる。これと同時に、この新規アクションの詳細を設定するためのプロパティ・ダイアログが画面上に出現する。
【０２２８】
図２４には、アクション・ボックスの詳細を指定するためのプロパティ・ダイアログを図解している。このアクション設定用のプロパティ・ダイアログは、ツール・バー内のアクション・ボックスをビヘイビア編集領域にドラッグすることによって呼び出される他、メニュー「オブジェクト」のサブメニュー項目「プロパティ」を経由して起動することができる。
【０２２９】
ユーザは、図示のダイアログ上で、名前フィールドに文字列を入力することによってアクション・ボックスの名前を指定することができる。また、コメント・フィールド上に、このアクション・ボックスに関するコメントを記入することができる。
【０２３０】
さらに、Ａｃｔｉｏｎ、Ｐａｒｔ、Ｓｏｕｎｄ、Ｖｏｌｕｍｅ＃などのコンボボックス内に、ＲＣＯＤＥのコマンド名やコマンド・パラメータを直接入力するか、又は、該ボックスの右端の▼ボタンを押して出現するリスト・ボックス（図示しない）から所望のコマンド又はコマンド・パラメータを選択することによって、１行すなわち１ステップ分のＲＣＯＤＥコマンドを設定することができる。
【０２３１】
これらＡｃｔｉｏｎ、Ｐａｒｔ、Ｓｏｕｎｄ、Ｖｏｌｕｍｅ＃などのコンボボックスを利用して１ステップ分のＲＣＯＤＥコマンドを設定し、さらに［追加（Ａ）］ボタンをクリックすると、コマンド・リスト上に順次登録される。
【０２３２】
また、このコマンド・リスト上で所定の行を選択してから、［変更（Ｍ）］ボタンをクリックすることによって、当該行は変更対象となり、その設定内容がＡｃｔｉｏｎ、Ｐａｒｔ、Ｓｏｕｎｄ、Ｖｏｌｕｍｅ＃などの各コンボボックスに表示される。また、このコマンド・リスト上で所定の行を選択してから、［削除（Ｄ）］ボタンをクリックすることによって、当該行をコマンド・リストから削除することができる。
【０２３３】
そして、このダイアログ上で動作ボックスの詳細の指定を完了すると、［閉じる（Ｃ）］ボタンをクリックすることによって、画面を介した指定内容がＲＣＯＤＥで記述された処理ルーチンとして登録されるとともに、このダイアログは閉じる。
【０２３４】
また、ボックス「ブランチ」をツール・バーからビヘイビア編集領域内にドラッグすることにより、ドラッグ先には新規のブランチ・ボックスが置かれる。これと同時に、この新規ブランチの詳細を設定するためのプロパティ・ダイアログが画面上に出現する。
【０２３５】
図２５には、ブランチ・ボックスの詳細を指定するためのプロパティ・ダイアログを図解している。このブランチ設定用のプロパティ・ダイアログは、ツール・バー内のブランチ・ボックスをビヘイビア編集領域にドラッグすることによって呼び出される他、メニュー「オブジェクト」のサブメニュー項目「プロパティ」を経由して起動することができる。
【０２３６】
ユーザは、図示のダイアログ上で、名前フィールドに文字列を入力することによってブランチ・ボックスの名前を指定することができる。図示の例では、当該分岐ボックスの名前として「モード分岐」が記入されている。また、コメント・フィールド上に、該ブランチ・ボックスに関するコメントを記入することができる。
【０２３７】
さらに、Ｔｙｐｅ、Ｖａｒｉａｂｌｅなどのコンボボックス内に、ＲＣＯＤＥのコマンド名やコマンド・パラメータを直接入力するか、又は、該ボックスの右端の▼ボタンを押して出現するリスト・ボックス（図示しない）から所望のコマンド又はコマンド・パラメータを選択することによって、当該分岐ボックスの条件判断を記述するＲＣＯＤＥコマンドを設定することができる。
【０２３８】
これらＴｙｐｅ、Ｖａｒｉａｂｌｅなどのコンボボックスを利用して分岐条件のＲＣＯＤＥコマンドを設定し、さらに［追加（Ａ）］ボタンをクリックすると、コマンド・リスト上に順次登録される。
【０２３９】
また、このコマンド・リスト上で所定の行を選択してから、［変更（Ｍ）］ボタンをクリックすることによって、当該行は変更対象となり、その設定内容がＴｙｐｅ、Ｖａｒｉａｂｌｅなどの各コンボボックスに表示される。また、このコマンド・リスト上で所定の行を選択してから、［削除（Ｄ）］ボタンをクリックすることによって、当該行をコマンド・リストから削除することができる。
【０２４０】
そして、このダイアログ上でブランチ・ボックスの詳細の指定を完了すると、［閉じる（Ｃ）］ボタンをクリックすることによって、指定内容がＲＣＯＤＥで記述された処理ルーチンとして登録されるとともに、ダイアログは閉じる。
【０２４１】
ブランチ・ボックスを利用することにより、センサ入力やユーザ変数値に応じて処理を分岐させることができる。
【０２４２】
また、ボックス「グループ」をツール・バーからビヘイビア編集領域内にドラッグすることにより、ドラッグ先には新規のグループ・ボックスが置かれる。これと同時に、この新規グループの詳細を設定するためのプロパティ・ダイアログが画面上に出現する。
【０２４３】
図２６には、グループ・ボックスの詳細を指定するためのプロパティ・ダイアログを図解している。このグループ設定用のプロパティ・ダイアログは、ツール・バー内のアクション・ボックスをビヘイビア編集領域にドラッグすることによって呼び出される他、メニュー「オブジェクト」のサブメニュー項目「プロパティ」を経由して起動することができる。
【０２４４】
同図に示すダイアログ上では、グループ名と、ビヘイビア編集領域内でグループ・ボックスに与えられる（表示される）名前を設定することができる。
【０２４５】
また、ボックス「ターミナル」をツール・バーからビヘイビア編集領域内にドラッグすることにより、ドラッグ先には新規のターミナル・ボックスが置かれる。これと同時に、この新規ターミナルの詳細を設定するためのプロパティ・ダイアログが画面上に出現する。
【０２４６】
図２７には、ターミナル・ボックスの詳細を指定するためのプロパティ・ダイアログを図解している。このターミナル設定用のプロパティ・ダイアログは、ツール・バー内のターミナル・ボックスをビヘイビア編集領域にドラッグすることによって呼び出される他、メニュー「オブジェクト」のサブメニュー項目「プロパティ」を経由して起動することができる。同図に示すダイアログ上では、ターミナルに与えられる（表示される）名前を設定することができる。
【０２４７】
ツール・バー内の結線ツールをクリックすることにより、ビヘイビア編集領域内の各ボックス間を接続することができることは既に述べた通りである。ボックス間を接続する際には接続の許可／不許可を判断するための条件を設定することができる。判断条件を設定したい場合には、条件（Condition）を設定するためのダイアログを呼び出せばよい。
【０２４８】
図２８には、接続条件の詳細を指定するためのプロパティ・ダイアログを図解している。この条件設定用のプロパティ・ダイアログは、例えば、メニュー「オブジェクト」のサブメニュー項目「プロパティ」を経由して起動することができる。このダイアログ内では、論理積（ＡＮＤ）、論理和（ＯＲ）などを用いた複数の条件（図示の例では最大４個の条件）の組み合わせを接続条件として設定することができる。
【０２４９】
次いで、ビヘイビア編集領域内でのプログラム編集処理について説明する。
【０２５０】
該編集領域内では、各オブジェクトのドラッグ・アンド・ドロップ操作が許容されている。アクションやグループ、ブランチなどの各オブジェクトは「ボックス」という形式で部品化されており、ユーザは、各ボックスやボックス間のドラッグ・アンド・ドロップ操作により、ボックス間の接続や切断を繰り返す作業を通じて、ボックスの連結関係により記述される、全体としてある機能を実現するプログラムを組むことができる。編集作業は、外見上はフローチャート・エディタの形式を採用する。
【０２５１】
図２０に示したような新規ビヘイビア編集ウィンドウ上で、ターミナル・ボックスのドラッグ・アンド・ドロップ操作により、プログラムやルーチンの開始を示す端子"ＳＴＡＲＴ"、並びに、プログラムやルーチンの終了を示す端子"ＲＥＴＵＲＮ"を置くことができる（図２９）。
【０２５２】
ターミナル・ボックスをビヘイビア編集領域上にドロップすることに連動して、図２７に示したようなプロパティ・ダイアログが起動して、端子の詳細を設定することができる。
【０２５３】
ＲＥＴＵＲＮは、プログラムやルーチンの出力端子を意味し、図示の通り、１つのプログラムやルーチンが複数の出力端子を備えていてもよい。
【０２５４】
アクション・ボックスやブランチ・ボックスを、ツール・バーからビヘイビア編集領域にドラッグ・アンド・ドロップすることによって、ビヘイビア編集領域上にアクション・ボックス並びにブランチ・ボックスを置くことができる。この際、アクションやブランチの詳細を設定するためのプロパティ・ダイアログ（図２４及び図２５を参照のこと）がポップアップ表示される。各プロパティ・ダイアログ上で、アクション・ボックスに割り当てるアクションの名前を指定したり、グループ・ボックスに割り当てるグループの名前を指定したり、新規ブランチ・ボックスに名前を与えたりすることができる。図３０には、ビヘイビア編集領域上に、アクション・ボックスやグループ・ボックスブランチ・ボックスを配置した様子を示している。
【０２５５】
図３０に示すように各ボックスは、ボックス名が表示されたボックス本体と、このボックス本体の上端に隣接するボックスの入力端子部と、ボックス本体の下端に隣接する出力端子部とで構成される。
【０２５６】
さらに、ツール・バー内の結線ツールをクリックすることにより、ビヘイビア編集領域は結線モードとなる。この動作モード下では、あるボックスの出力端子部と他のボックスの入力端子部の間をドラッグ操作することによって、ボックス間の接続関係を形成することができる。
【０２５７】
ボックス間を接続する際には接続の許可／不許可を判断するための条件を設定することができる。判断条件を設定したい場合には、条件（Condition）を設定するためのダイアログ（図２８を参照のこと）を呼び出せばよい。
【０２５８】
図３１には、ビヘイビア編集領域上に配置されたアクション・ボックスやグループ・ボックスブランチ・ボックスなどの各ボックス間に接続関係を形成した様子を示している。
【０２５９】
使用するボックスの配置並びに各ボックス間の接続関係を設定することによって、ビヘイビア編集領域上では、ある所定の機能を実現するプログラム又はプログラムの一部を構成するルーチンが組まれたことになる。ビヘイビア編集領域上では、プログラムやルーチンはフローチャートに類似した形式で表示されるので、ユーザは、フローチャートを編集する形式で、所望のプログラムやルーチンを比較的容易且つ直感的に編集することができる訳である。
【０２６０】
ビヘイビア編集領域上でフローチャート状に組まれたルーチンをグループとして登録することにより、これをアクションや既存のグループなどと同様に部品すなわちオブジェクトとして扱うことが可能となる。例えば他の（上位の）プログラムやルーチンを構築する際に、新たに登録したグループを使用することができる。
【０２６１】
例えば、図３１に示したようなビヘイビア編集領域上で形成されたプログラム又はルーチンをグループ化することもできる。
【０２６２】
図３２には、図３１に示したビヘイビア編集領域上で形成されたプログラム又はルーチンをグループ化したグループ・ボックスをビヘイビア編集領域に配置した様子を示している。例えば、このグループに対して"Group_012"なるグループ名を与えたとする。図３１からも分かるように、Group_012は、１個の入力端子と３個の出力端子を備えている。
【０２６３】
ビヘイビア編集領域上にアクションやグループ、ブランチなど他のオブジェクト・ボックスを配置して、これらボックスとGroup_012とを端子で接続することにより、Group_012を部品の一部すなわちルーチンとして利用したプログラム（図示しない）を組むことができる。
【０２６４】
また、一旦編集・登録したグループの詳細をビヘイビア編集領域に開いて、さらに編集作業を行うことができる。図３３には、図３２に示したグループ・ボックスを開いた様子を図解している。
【０２６５】
［追補］
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。
【０２６６】
本実施例では、イヌを模した４足歩行を行うペット型ロボットを例に挙げて本発明に係るオーサリング・システムについて詳解したが、本発明の要旨はこれに限定されない。例えば、ヒューマノイド・ロボットのような２足の脚式移動ロボットや、あるいは脚式以外の移動型ロボットに対しても、同様に本発明を適用することができることを充分理解されたい。
【０２６７】
また、本明細書の［特許請求の範囲］の欄に記載される「多関節構造体」は、脚式ロボットを始めとする多関節型ロボットのような物理的な機械装置には限定されない。例えば、コンピュータ・グラフィックスにより生成されるキャラクタを用いたアニメーションの動作シーケンスの作成・編集のために、本発明に係るオーサリング・システムを適用することも可能である。
【０２６８】
要するに、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０２６９】
【発明の効果】
以上詳記したように、本発明によれば、所定のシナリオに従ったデータの作成・編集を支援することができる、優れたオーサリング・システム及びオーサリング方法を提供することができる。
【０２７０】
また、本発明によれば、ロボットの所定の動作パターンを記述する一連のコマンド／データの作成・編集を支援することができる、優れたオーサリング・システム及びオーサリング方法を提供することができる。
【０２７１】
また、本発明によれば、ロボットの動作状態を規定する部品の集合を用いて動作パターンの作成・編集を支援することができる、優れたオーサリング・システム及びオーサリング方法を提供することができる。
【０２７２】
また、本発明によれば、各関節アクチュエータの動作など１以上の時系列データの組み合わせからなるロボットのアクションを部品化してコンピュータ・ディスプレイ上に配置するとともに、各アクションの結合関係をディスプレイ上のＧＵＩ操作により規定することでロボットのビヘイビアの作成・編集を行うことができる、優れたオーサリング・システム及びオーサリング方法を提供することができる。
【０２７３】
本発明に係るオーサリング・システム及びオーサリング方法によれば、ロボットを始めとする多関節構造体を新しい遊びとして扱うことができるツールを提供することができる。本発明によれば、コンピュータ・プログラミングに関する高度な知識がなくとも、ロボットを始めとする多関節構造体の行動をプログラムすることができ、簡単にコンテンツを作成することができる。例えば、ユーザは、多関節構造体を表現するためのツールとして使用することができ、言い換えれば、ロボットが提供するワールドを拡張することができる。
【０２７４】
本発明に係るオーサリング・システム及びオーサリング方法によれば、ユーザは、ＧＵＩ操作を介して、フローチャート・エディタ形式で多関節構造体の行動シーケンスに関するプログラミングを行うことができる。さらに、ライブラリを豊富に取り揃えることによって、ＧＵＩ画面上でのプログラミング作業をさらに簡単で効率的なものにすることができる。
【図面の簡単な説明】
【図１】本発明を実施に供される四肢による脚式歩行を行う移動ロボット１の外観構成を示した図である。
【図２】移動ロボット１の電気・制御系統の構成図を模式的に示した図である。
【図３】制御部２０の構成をさらに詳細に示した図である。
【図４】ホスト・コンピュータ１００のハードウェア構成例を模式的に示した図である。
【図５】本実施例に係るオーサリング・システムの全体構成を模式的に示した図である。
【図６】２以上のコマンドすなわちアクションを並べていくことによりロボットのビヘイビアを構成する様子を示した図である。
【図７】条件や確率に基づいた分岐をビヘイビアの中に含めた様子を示した図である。
【図８】複数のコマンドすなわちアクションをボックス化してサブルーチンを定義した様子を示した図である。
【図９】アクション編集サブシステムの機能構成を模式的に示したブロック図である。
【図１０】アクション編集ウィンドウの構成を概略的に示した図である。
【図１１】キーフレーム・チャンネルを開いた状態（キーフレーム詳細チャンネル）のアクション編集ウィンドウを示した図である。
【図１２】モーション・チャンネルを開いた状態（モーション詳細チャンネル）のアクション編集ウィンドウを示した図である。
【図１３】ＭＩＤＩ形式のサウンド・ファイルを編集するためのサウンド詳細ウィンドウの構成を概略的に示した図である。
【図１４】ＷＡＶＥ形式のサウンド・ファイルを表示するためのサウンド詳細ウィンドウの構成を概略的に示した図である。
【図１５】ＭＩＤＩ形式で記述されたＬＥＤ動作ファイルを表示して編集するためのＬＥＤ詳細ウィンドウの構成を概略的に示した図である。
【図１６】プレビュー・ウィンドウの構成を概略的に示した図である。
【図１７】ポーズ・ウィンドウの構成を概略的に示した図である。
【図１８】モーション・プレビューワの構成を概略的に示した図である。
【図１９】ビヘイビア編集サブシステムの機能構成を模式的に示した図である。
【図２０】ビヘイビア編集ウィンドウの構成を概略的に示した図である。
【図２１】ビヘイビア編集ウィンドウ内のメニュー「ファイル」のサブメニュー項目を示した図である。
【図２２】ビヘイビア編集ウィンドウ内のメニュー「編集」のサブメニュー項目を示した図である。
【図２３】ビヘイビア編集ウィンドウ内のメニュー「オブジェクト」のサブメニュー項目を示した図である。
【図２４】アクション・ボックスの詳細を指定するためのプロパティ・ダイアログを示した図である。
【図２５】ブランチ・ボックスの詳細を指定するためのプロパティ・ダイアログを示した図である。
【図２６】グループ・ボックスの詳細を指定するためのプロパティ・ダイアログを示した図である。
【図２７】ターミナル・ボックスの詳細を指定するためのプロパティ・ダイアログを示した図である。
【図２８】条件判断の詳細を指定するためのプロパティ・ダイアログを示した図である。
【図２９】ビヘイビア編集領域上にターミナルを置いた様子を示した図である。
【図３０】ビヘイビア編集領域上にアクション・ボックスやブランチ・ボックスを配置した様子を示した図である。
【図３１】ビヘイビア編集領域上に配置されたアクション・ボックスやグループ・ボックスブランチ・ボックスなどの各ボックス間に接続関係を形成した様子を示した図である。
【図３２】図３１に示したビヘイビア編集領域上で形成されたプログラム又はルーチンをグループ化したグループ・ボックスをビヘイビア編集領域に配置した様子を示した図である。
【図３３】図３２に示したグループ・ボックスを開いた様子を示した図である。
【図３４】プロジェクト・ウィンドウを示した図である。
【符号の説明】
１…移動ロボット
２…胴体部ユニット
３…頭部ユニット
４…尻尾
６Ａ〜６Ｄ…脚部ユニット
７…首関節
８…尻尾関節
９Ａ〜９Ｄ…大腿部ユニット
１０Ａ〜１０Ｄ…脛部ユニット
１１Ａ〜１１Ｄ…股関節
１２Ａ〜１２Ｄ…膝関節
１５…ＣＣＤカメラ
１６…マイクロフォン
１７…スピーカ
１８…タッチセンサ
１９…ＬＥＤインジケータ
２０…制御部
２１…ＣＰＵ
２２…ＲＡＭ
２３…ＲＯＭ
２４…不揮発メモリ
２５…インターフェース
２６…無線通信インターフェース
２７…ネットワーク・インターフェース・カード
２８…バス
２９…キーボード
４０…入出力部
５０…駆動部
５１…モータ
５２…エンコーダ
５３…ドライバ
【図１】
0004670136.tif 000002
【図２】
0004670136.tif 000003
【図３】
0004670136.tif 000004
【図４】
0004670136.tif 000005
【図５】
0004670136.tif 000006
【図６】
0004670136.tif 000007
【図７】
0004670136.tif 000008
【図８】
0004670136.tif 000009
【図９】
0004670136.tif 000010
【図１０】
0004670136.tif 000011
【図１１】
0004670136.tif 000012
【図１２】
0004670136.tif 000013
【図１３】
0004670136.tif 000014
【図１４】
0004670136.tif 000015
【図１５】
0004670136.tif 000016
【図１６】
0004670136.tif 000017
【図１７】
0004670136.tif 000018
【図１８】
0004670136.tif 000019
【図１９】
0004670136.tif 000020
【図２０】
0004670136.tif 000021
【図２１】
0004670136.tif 000022
【図２２】
0004670136.tif 000023
【図２３】
0004670136.tif 000024
【図２４】
0004670136.tif 000025
【図２５】
0004670136.tif 000026
【図２６】
0004670136.tif 000027
【図２７】
0004670136.tif 000028
【図２８】
0004670136.tif 000029
【図２９】
0004670136.tif 000030
【図３０】
0004670136.tif 000031
【図３１】
0004670136.tif 000032
【図３２】
0004670136.tif 000033
【図３３】
0004670136.tif 000034
【図３４】
0004670136.tif 000035