(57)【特許請求の範囲】
【請求項１】
挙動型の行動および動作型の行動のグループからなる移動ロボットの複数の行動を制御するためのプログラムを編集するための、コンピュータ上でユーザによって行われる方法であって、前記複数の行動が少なくとも１つの行動の主要フレーム（５０、６０）に属し、前記方法は、
前記少なくとも１つの行動の主要フレームに対し前の事象および後に続く事象のグループから選ばれた少なくとも１つの事象に、前記少なくとも１つの行動の主要フレームを接続するステップであって、前記少なくとも１つの主要フレームが制御ボックス（１０）に属する、ステップと、
前記少なくとも１つの行動の主要フレームに適用可能な制御ボックスのタイムライン（２０）を定義し、前記タイムラインが、前記タイムラインが挿入される制御ボックスにおいて定義されるロボットの行動に課せられる時間的制約を表し、制御ボックスの行動を同期するステップとを備え、
前記方法が、単位時間あたりのフレーム数によって定義されるタイムラインの進行の速度のパラメータを考慮するステップであって、前記パラメータがユーザによって定義されるか、所与の値に設定される、ステップをさらに備えることを特徴とする方法。
【請求項２】
前記行動の主要フレームが、少なくとも１つの行動層に属し、前記行動層が制御ボックスに属することを特徴とする、請求項１に記載の編集方法。
【請求項３】
前記行動の主要フレームが、挙動型のものであり、基本的な挙動へと分解され、各々が少なくとも１つの制御ボックスによって定義され、前記制御ボックスが前記基本的な挙動を定義し、少なくとも１つの流れ図内で相互接続されることを特徴とする、請求項１または２に記載の編集方法。
【請求項４】
少なくとも２つの挙動の主要フレームが、同期したタイムラインにしたがって進行し、各々が第２の挙動の主要フレームの少なくとも１つの制御ボックスに接続された第１の挙動の主要フレームの少なくとも１つの制御ボックスを備えることを特徴とする、請求項３に記載の編集方法。
【請求項５】
制御ボックスの少なくとも１つが、少なくとも１つの第２の制御ボックスを備えることを特徴とする、請求項３に記載の編集方法。
【請求項６】
制御ボックスの少なくとも１つが、ロボットによって直接的に翻訳されうるスクリプト（９０）を含み、前記スクリプトがユーザによって直接変更可能である、制御ボックスを備える、請求項３に記載の編集方法。
【請求項７】
少なくとも１つの第１の制御ボックスの少なくとも１つの出力が、事象を表す信号を伝達するコネクターにより、少なくとも１つの第２の制御ボックスの少なくとも１つの入力に接続される、請求項６に記載の編集方法。
【請求項８】
移動ロボットが、頭部と４本までの肢部とを備える、請求項１から７のいずれかに記載の編集方法。
【請求項９】
移動ロボットの前記複数の行動の１つが、少なくとも前記頭部と４本までの支部とを含むグループから選ばれたロボットの少なくとも１つの部分の動作であり、少なくとも１つのモーターの回転により定義される、請求項８に記載の編集方法。
【請求項１０】
少なくとも１つのモーターの少なくとも１つの回転が、動作画面（８０）上の前記少なくとも１つのモーターに対応するカーソル上でユーザの操作によって定義される、請求項９に記載の編集方法。
【請求項１１】
プログラムがコンピュータ上で実行されるとき、請求項１から１０のいずれかに記載の方法をユーザが行うことを可能にするように構成されたプログラムコード命令を含む、コンピュータ・プログラムであって、前記プログラムが、挙動型の行動および動作型の行動のグループからなる移動ロボットの複数の行動について翻訳またはコンパイルされうる言語でユーザが編集できるように適合されている、コンピュータ・プログラム。
【請求項１２】
プログラムコード命令を含み、前記プログラムコード命令が、移動ロボットの複数の行動をシミュレートするために少なくとも１つのコンピュータによって、または、前記移動ロボットの複数の行動を制御するために移動ロボットによって実行されうるものであり、前記行動が、挙動型の行動および動作型の行動のグループからなり、前記行動が、少なくとも１つの行動の主要フレーム（５０、６０）に属し、前記コンピュータ・プログラムが、請求項１１によるコンピュータ・プログラムによって生成される、コンピュータ・プログラム。
【請求項１３】
請求項１２によるコンピュータ・プログラムを実行するように構成された移動ロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はロボット・プログラミング・システムの分野に関する。より具体的に、それは関節肢の周りで動くまたはそれらを使用するロボット、特に人間又は動物の形態のロボットの挙動と動作を編集及び制御することに適用される。ロボットは、一定の人間の外見の特質：頭部、胴体、両腕、両手、両脚、両足等を持った瞬間から人型ロボットとみなされる。しかしながら人型ロボットは程度の差こそあれ精巧にされ得る。その四肢には多かれ少なかれ関節があり得る。それは自分のバランスを静的、又は動的に制御し、そして２本の脚で、場合によっては三次元で歩行し得る。それは周囲状況（「聞く」、「見る」、「触る」、「感じる」等）からの信号を拾い上げ、程度の差はあれども洗練された挙動に従って反応し、そして会話或いは身振りで他のロボット又は人間と互いに交流し得る。これらの能力を最高に引き出すために、そうした挙動のための命令を有するロボットのコンピュータ制御ユニットを提供するニーズが残っている。幾つかのロボットは、それらの使用特性に対応する挙動を実行するために必要な命令を自律的なやり方で探索する。しかしながら、ユーザーが新たな挙動及び動作をつくり出すために介入する必要性が残っている。必要な命令をプログラミングする第一の方法は、それらを所定の時間シーケンスで動作させることである。このプログラミング論理は、ロボットの挙動が時間と共に予測可能であるという利点を与える。一連の挙動は予測可能な時に生じる開始点と終了点を有する。例えば、米国特許第６，７１８，２３１号明細書により開示されている、ロボットの挙動を編集し、時間的にプログラミングするための方法を確認されたい。しかしながら、この論理はロボットとその周囲状況との相互作用が、共に不可避（経路上で障害物に遭遇する）であり、そして望ましい（周囲状況又はそのユーザーの要求に対するロボットの反応）という事実においてその限界に遭遇し、これらの事象はプログラミングされた挙動のシーケンスの進展を妨げる。これは、自動機械の理論に端を発する、事象型の別のプログラミング論理が、産業ロボットに対してと同様に人型ロボットに対して使用されている理由である。このプログラミング論理においては、リンクが複数の挙動を結合し、連鎖状の第二の事象は第一の事象の出力に依存している。この論理は周囲状況との相互作用の制御を可能にする。例えば、米国特許第６，４７０，２３５号明細書により開示されている、ロボットの編集方法、及び事象に関するプログラミングの方法を確認されたい。しかしながら、この論理は、期待される事象が起きるまで、事前にプログラミングされた挙動のシーケンスを妨げる欠点を示す。単純化された例は、この困難さの理解を容易にするであろう。ユーザーはロボットが最初の位置から、決まった瞬間にそれが到達しなければならない第二の位置に行くことを欲する。この経路において、それは周囲状況との相互作用（それが遭遇する別のロボットに挨拶する、物を集める、等）に依存する行動を行なう必要があり得る。時間に拘束されない、純粋に事象に関係するプログラミングは、この問題を解決出来ない。
【０００２】
２つの事象プログラミング論理と時間プログラミング論理を並置する方法が、特開２００２−１２０１７４号公報により開示されている。前記方法においては、しかしながらプログラマーは２つのプログラム・ブロックを両立させるために、その２つのうちの１つに介入しなければならない。従ってこの方法はプログラマーの介入無しに、２つの事象プログラミング論理と時間プログラミング論理を両立させることにある問題を解決しない。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、各々の事象に対するプログラマーの介入無しに、時間及び事象に関するプログラミング論理を組み合わせるロボットの挙動の、編集及びプログラミング用のシステムと方法を提供することにより、この問題を解決する。
【課題を解決するための手段】
【０００４】
このために、本発明は挙動型の行動のグループ、及び動作型の行動のグループに属し、かつ少なくとも１つの行動の主要フレームに属する移動ロボットの少なくとも１つの行動をユーザーが編集及び制御出来るようにする方法を開示し、方法において、前記行動の主要フレームが、前の事象のグループと後に続く事象のグループとから選ばれる少なくとも１つの事象と結ばれ、そしてタイムラインによって定義された時間的制約に従って進行する。
【０００５】
有利なことに、前記行動の主要フレームは少なくとも１つの行動層に属する。
【０００６】
有利なことに、前記行動層は制御ボックスに属する。
【０００７】
有利なことに、前記行動の主要フレームは挙動型であり、そして基本的な挙動へと分解され、各々は少なくとも１つの制御ボックスによって定義され、前記制御ボックスは少なくとも１つの流れ図の中で相互接続されている。
【０００８】
有利なことに、少なくとも２つの挙動の主要フレームが同じタイムラインに従って進行し、各々は、第二の挙動の主要フレームの少なくとも１つの制御ボックスに接続された、第一の挙動の主要フレームの少なくとも１つの制御ボックスを含む。
【０００９】
有利なことに、少なくとも１つの制御ボックスは少なくとも１つの第二制御ボックスを備える。
【００１０】
有利なことに、前記第二の制御ボックスは、ユーザーがより高いレベルの制御ボックスの動作パラメータを設定出来るようにする。
【００１１】
有利なことに、制御ボックスは、ロボットによって直接的に翻訳され得るスクリプトを含み、前記プログラムはユーザーによって直接変更可能である。
【００１２】
有利なことに、前記制御ボックスは少なくとも１つの入力と少なくとも１つの出力を備える。
【００１３】
有利なことに、少なくとも１つの第一制御ボックスの少なくとも１つの出力は、事象を表わす信号を伝達するコネクターにより、少なくとも１つの第二制御ボックスの少なくとも１つの入力に結ばれている。
【００１４】
有利なことに、移動ロボットは頭部と４本までの肢部とを備える。
【００１５】
有利なことに、行動は少なくとも頭部と４本までの肢部とを含むグループから選ばれた、ロボットの少なくとも１つの部分の動作であり、少なくとも１つのモーターの回転により定義される。
【００１６】
有利なことに、少なくとも１つのモーターの少なくとも１つの回転は、動き出すべきロボットの部分を表わす動作画面（８０）上に位置するカーソル上の、ユーザーの行動によって定義される。
【００１７】
本発明はまた、移動ロボットの行動を編集し制御する方法を実行するためのコンピュータ・プログラムと、前記プログラムを含む編集及び制御システムと、編集及び制御システムから命令を受けることができるロボットとを開示する。
【００１８】
本発明はまた、予めプログラミングされた挙動と動作制御ボックスの双方を使用できるようにする、ロボットにより実行されるべき、ユーザーにとって使いやすい命令の編集を可能にする利点を提供する。そのボックスは複雑な挙動を基本的な挙動へと分解可能にする、階層構造に編成される。基本的な挙動は、ロボットにより直接的に翻訳され得る、スクリプト言語においてプログラミングされることができる。スクリプトは共通のデータ構造を用いる複数のモジュールに編成され、それゆえ互いに独立している。ユーザーは階層的挙動ツリーの全レベルにおいて介入できる。ユーザーはまたツリーの分枝の挙動と、ツリーの別の分枝に属する他の挙動との間で、相互作用を作り出すことができる。ユーザーはまた、与えられた挙動を決定するであろう、ロボットの基本的な動作のレベルで介入できる。さらに、本システムは多くの開発環境（とりわけＰｙｔｈｏｎ、ＵＲＢＩのような言語、Ｗｉｎｄｏｗｓ  ＸＰ、Ｍａｃ  ＯＳ、ＵＮＩＸ等）に適合する。
【００１９】
本発明は以下に示す多数の例示的実施形態の記述、及びその添付図からより良く理解され、その様々な特徴と利点が現われるであろう。
【図面の簡単な説明】
【００２０】
【図１】本発明の１つの実施形態における、ロボットの挙動を編集しプログラミングするための、機能構成図である。
【図２】本発明の１つの実施形態における、ロボットの挙動を編集しプログラミングするための、システムの主要画面の視図である。
【図３】本発明の１つの実施形態における、ロボットの挙動層と動作層をユーザーが編集出来るようにする画面の視図である。
【図４】本発明の１つの実施形態における、ロボットにより実行されるべき挙動の主要フレームを編集し、プログラミングするために接続された、挙動制御ボックスを示す画面の視図である。
【図５】本発明の１つの実施形態における、ロボットの挙動を編集しプログラミングするための、システムの制御ボックス構造の機能的流れ図である。
【図６】本発明の１つの実施形態における、ロボットにより実行されるべき挙動の主要フレームを編集し、プログラミングするために接続された、挙動制御ボックス間の様々なタイプの接続を示す視図である。
【図７】本発明の１つの実施形態における、仮想ロボットのモーターのグラフィック表示上における直接的行動による、プログラミングの一例を示す視図である。
【図８ａ】本発明の１つの実施形態における、与えられた時間内に実行不可能な、ロボットの動作の一例を説明している画面の視図である。
【図８ｂ】本発明の１つの実施形態における、与えられた時間内に実行不可能な、ロボットの動作の一例を説明している画面の視図である。
【図９ａ】本発明の１つの実施形態における、ロボットの挙動の編集と制御の複雑な例を説明する画面の視図である。
【図９ｂ】本発明の１つの実施形態における、ロボットの挙動の編集と制御の複雑な例を説明する画面の視図である。
【図９ｃ】本発明の１つの実施形態における、ロボットの挙動の編集と制御の複雑な例を説明する画面の視図である。
【図１０ａ】本発明の１つの実施形態における、フレームの時間軸又はタイムラインと同期したロボットの挙動のシーケンスを編集し、制御する一例を説明する画面の視図である。
【図１０ｂ】本発明の１つの実施形態における、フレームの時間軸又はタイムラインと同期したロボットの挙動のシーケンスを編集し、制御する一例を説明する画面の視図である。
【図１０ｃ】本発明の１つの実施形態における、フレームの時間軸又はタイムラインと同期したロボットの挙動のシーケンスを編集し、制御する一例を説明する画面の視図である。
【図１１】本発明の１つの実施形態における、ロボットの挙動実行の直接プログラミングを可能にする、スクリプトの一例を示す。
【発明を実施するための形態】
【００２１】
図１は本発明の１つの実施形態における、ロボットの挙動を編集しプログラミングするための、機能構成図である。
【００２２】
本発明の方法及びシステムにより制御されるロボットは、頭部、胴体、及び四肢を有する人型ロボットであり得る。各々の部分は関節を有し、各関節は１つ以上のモーターにより制御される。本発明は、仮想のロボットにおいてシミュレートされ、有線又は無線リンクにより本システムに接続された、真のロボットにおいて実行される挙動を作り出すことにより、本システムのユーザーがそのようなロボットを制御出来るようにする。
【００２３】
それは（例えば直進、ｎステップによる右又は左への歩行、片手を頭上に上げる「挨拶」の動作、スピーチ等のような）実行されるべき挙動と、（所与の角度の頭部、脚の一部の）動作とを、この目的のためにプログラミングされたコンピュータの画面上で視認し、シミュレートし、そして生じさせることを含む。
【００２４】
本図は、それらの時間次元を伴う事象により開始される命令の構成を例証する。事象により開始される命令は、「ボックス」又は「制御ボックス」１０によって、本発明の意味論において表わされる。ボックスは、下記の１つ以上の要素を含み得る、ツリー構造のプログラミング構成であり、それらは：
―「タイムライン」又はフレームの時間軸２０；
―「ダイヤグラム」又は流れ図７０
―スクリプト９０
と定義される。
【００２５】
複数の制御ボックスは、後で本明細書中において詳細に記述されるように、大抵の場合１つのボックスから他のボックスへと事象の情報を送信する接続によって、通常は互いに接続される。全てのボックスは、ロボットの挙動／動作のシナリオを初期化する「ルート・ボックス」に直接或いは間接的に接続される。
【００２６】
フレームの時間軸２０は、前記フレームの時間軸がその中に挿入されているボックスにおいて定義されるように、ロボットの挙動及び動作が従う必要のある、時間的制約を表わす。これ以後、明細書及び特許請求の範囲において、プログラミングの世界では同じ意味を伝えるために広く受入れられている、タイムラインという用語が用いられるであろう。従ってタイムラインはボックスの複数の挙動と動作との同期を生み出す。それは、１秒当りのフレーム数（ＦＰＳ）として定義される、スクロール速度と関連するフレームへと細分される。各タイムラインのＦＰＳは、ユーザーによってパラメータ化され得る。初期設定によりＦＰＳは所与の値、例えば１５ＦＰＳに設定され得る。
【００２７】
タイムラインは：
―挙動層又はタイムラインを通過することなく、実際により高いレベルのボックスにまた直接結び付けられ得るボックスの集合である、１つ以上のダイヤグラム又は「流れ図」７０を含み得る、各々が１つ以上の挙動の主要フレーム５０を備える、１つ以上の挙動層３０と、
―１つ以上の動作画面８０を含み得る、各々が１つ以上の動作の主要フレーム６０を備える、１つ以上の動作層４０と
を含み得る。
【００２８】
挙動層は、ロボットの挙動又は挙動の主要フレームの集合を定義する。多数の挙動層が同一のボックス内で定義され得る。それらは次に、ボックスのタイムラインにより同期されるやり方で動作するように、プログラミングされるであろう。
【００２９】
挙動層は１つ以上の挙動の主要フレームを含み得る。挙動の主要フレームは歩行（“ｗａｌｋ”［歩く］）、会話（“ｓａｙ”［言う］）、音楽を演奏する（“ｍｕｓｉｃ”［音楽］）等のような、ロボットの挙動を定義する。明細書内において後で詳細に述べられるように、一定の数の挙動がユーザーにより単純な「ドラッグ及びドロップ」操作でライブラリーから直接挿入されるために、本発明のシステムにおいて前もってプログラミングされる。各挙動の主要フレームは、それがタイムライン内へ挿入される時、フレームの開始である起動させる事象によって定義される。挙動の主要フレームの終了は、別の挙動の主要フレームがその後に挿入される限り、或いは終了の事象が定義された場合である限り、定義される。
【００３０】
動作層は、ロボットの関節におけるモーターの動作を一緒にグループ化する、１つ以上の連続的な動作の主要フレームによってプログラミングされた、ロボットの動作の集合を定義する。実行されるべきこれらの動作は、動作画面上の行動によりプログラミングされ得る、前記モーターの到達角度位置によって定義され、前記行動は明細書内において後で詳細に記述されている。同一ボックスの全ての動作の主要フレームは、ボックスのタイムラインにより同期化される。動作の主要フレームは到着フレームにより定義される。出発フレームは、前の動作の主要フレームの終わりのフレーム、又はボックスの開始事象のフレームである。
【００３１】
「行動の主要フレーム」という一般的な呼び方は、挙動の主要フレームと動作の主要フレームの両方を意味するために用いられる。
【００３２】
それらが同じタイムラインに結び付けられるならば、多数の行動（挙動又は動作）の主要フレームを並行して実行することが可能である。
【００３３】
流れ図は、以下で詳細に記述されるように、相互接続されたボックスの集合である。各々のボックスは、それに新たな挙動層又は動作層が結び付けられる、他のタイムラインを含み得る。
【００３４】
スクリプトは、ロボットにより直接実行され得るプログラムである。スクリプトを備えるボックスは、他のどのような要素も含まない。
【００３５】
図２は、本発明の１つの実施形態における、ロボットの挙動を編集しプログラミングするための、本システムの主要画面の視図である。
【００３６】
右側部分２．１は、命令の実行シミュレーションを作り出すことが出来るであろう、制御されるべきロボットの仮想画像を含む。ロボットはあらゆるタイプであり得るが、しかし本発明は頭部、胴体、及び四肢を有する人型ロボット又は動物の形をしたロボットの場合に、とりわけ有利であろう。
【００３７】
左側部分２．２は、コンピュータに格納された挙動のライブラリーへのアクセスを与える。これらの挙動は、歩行、ダンス、会話、目又は他のＬＥＤの点灯等のような、しばしば用いられる基本的挙動を定義するために用いられ得る、再使用可能な要素である。
【００３８】
中央部分２．３は、明細書内において後で詳細に示されるように、流れ図の形態においてそれらを挙動のシーケンスに編集し、集めるために、ライブラリー２．２から取得された挙動を組み合わせるのに用いられる。
【００３９】
図３は、本発明の１つの実施形態における、ロボットの挙動層と動作層をユーザーが編集出来るようにする画面の視図である。
【００４０】
部分３．１（挙動層）及び３．２（動作層）において見られるように、多数の層は挙動型と動作型とに定義されることができ、そして各層内には多くの主要フレームが作られ得る。
【００４１】
挙動型の層は、明細書内においてこの後に記述されるであろう。
【００４２】
動作型の層の主要フレーム作成は、明細書内において後で説明される。動作の主要フレームを編集するための様式がここで説明される。シーケンスを動作層内又は１つの動作層から別の動作層へコピー、又は移動できる。この第二の場合、同一のモーターに与えられる相容れない複数の命令のために、その動作が実行出来ないことがあり得る。
【００４３】
例えば線形又は指数型の補間を生成することにより、動作シーケンス同士間の遷移を円滑にすることが可能である。動作がそれら自体で対称にされた、対称要素に適用可能なシーケンスにおいて、上肢又は下肢に対して定義されたシーケンスを複製することもまた可能である。
【００４４】
図の部分３．３に見られるように、動作型の層において、Ｘ軸が挙動層及び動作層のタイムラインであり、Ｙ軸が正又は負であり得る各モーターの回転角度である、軸のシステムにおけるロボットの各部分のモーターの傾向を見ることもまた可能である。本発明の１つの例示的実施形態において、ロボットは多数のモーターを含み得る。その動作は、Ｘ軸上及び／又はＹ軸上でモーターの停止点を動かすことにより、変更され得る。幾つかのモーターの動作は互いに適合せず、実行出来ない。
【００４５】
図４は、本発明の１つの実施形態における、ロボットにより実行されるべき挙動のシーケンスを編集し、プログラミングするために接続された、挙動制御ボックスを示す画面の視図である。
【００４６】
挙動制御ボックスは、本発明によるロボットを編集し、制御するためのシステムの基礎的構成要素である。挙動制御ボックスは、１つ以上の行動を定義し、１つ以上の入力と１つ以上の出力を有する。図４の例において、入力は図２の画面２．３の左上端部における“Ｓｔａｒｔ  ｏｆ  ｂｅｈａｖｉｏｒ  ｓｅｑｕｅｎｃｅ  Ｘ”（「挙動シーケンスＸの開始」）事象である。このポイントは第一の“Ｍｏｖｅｍｅｎｔ”（「動作」）ボックスの左側に位置する入力の１つに弧で接続されている。前記ボックスの出力は、第二の“Ｈｅｌｌｏ”（「挨拶」）ボックスの入力の１つに接続されている。この第二のボックスの出力は、画面の右上端部にある“Ｅｎｄ  ｏｆ  ｂｅｈａｖｉｏｒ  ｓｅｑｕｅｎｃｅ  Ｘ”（「挙動シーケンスＸの終了」）事象に接続されている。２つのボックスは、図２のライブラリー２．２から対応する要素をコピー（ドラッグ及びドロップ操作）により、画面内に作られている。その接続はマウスを用いて入力点／出力点をつなぐことにより、画像を用いて作られている。
【００４７】
図１に対するコメントに示すように、本発明の１つの実施形態において、ボックスは：
―使われる言語がＵＲＢＩＴＭのようなロボット制御専用の言語であり得る、コンピュータ言語での一連の命令を含むスクリプト・ボックスと、
―例えば歩行距離のような、別のボックスにより使用されるパラメータを、ユーザーが定義できるボックスを例えば含む、多数のボックスを備えた流れ図のボックスと、
―１つ以上の動作層及び／又は１つ以上の挙動層を伴うタイムラインを含むボックスとの３タイプであり得る。
【００４８】
図５は、本発明の１つの実施形態における、ロボットの挙動を編集しプログラミングするための、システムのボックス構造の機能的流れ図である。
本図の流れ図は、ボックスにより提供される様々な可能性：一方で挙動の主要フレームを伴い、他方で挙動から成る別の流れ図を伴うスクリプト、流れ図、タイムラインを要約する。
【００４９】
図６は、本発明の１つの実施形態における、ロボットにより実行されるべき挙動の主要フレームを編集し、プログラミングするために接続された、挙動ボックス間の様々なタイプのリンクを示す視図である。
そこには多数の可能な下記入力が存在する：
―ＯｎＳｔａｒｔ：ボックスの実行を起動する開始の入力；
―ＯｎＳｔｏｐ：それが作動するときにボックスの実行を停止させ、しかしながら実行中の遮断がロボットを不安定な位置（例えば“Ｗａｌｋ”［歩行］ボックスの場合）に置くであろう、行動の最後のみにその停止が起きる、×で表わされる入力；
―ＯｎＳｔｏｐｐｅｄ：ボックスの実行が終了するとき作動する出力であって、この出力は別のボックスの入力に接続されることができ、この入力に接続された前のボックスの挙動が完全に実行されたときに、これらの入力が作動するであろう；
―ＯｎＬｏａｄ：ボックス構造内に隠された入力であって、これは多重レベル・ボックスが開かれる時に現われ、それは多重レベル・ボックスがメモリ内へ完全にローディングされるときに作動し、前記ローディングはより高レベルのボックスの作動の際にのみ生じる；
―ＡＬＭｅｍｏｒｙに接続される入力：この入力はＡＬＭｅｍｏｒｙ内で計算される値が変わる度に作動する；
○メモリＡＬＭｅｍｏｒｙはロボット内部のデータベースであり、それは短期メモリであり、（短期の履歴、すなわち少数の前の変数値を持つ可能性と共に）所与の変数の最終値がその中に挿入され、そしてメモリは１つ以上の変数の変化により影響されるモジュールを通知する任務を果たし得る；それは例えば２０ｍｓごとに更新される、全てのセンサーからの情報：モーターの角度の値、電流、温度、等を含む；ロボットにおける実行の間、このメモリは４０００を超える変数を含み得る；ロボットにおいて動作している、又はそれに接続されている全てのモジュールは、公表される値を挿入するため、或いはそれらにとって興味深い変数に登録し、それらの変化に反応する（例：電池のレベルが一定のしきい値未満のとき、ロボットがその充電器を探すように、電池の値に反応する）ために、ＡＬＭｅｍｏｒｙと通信できる；
―事象の入力：この入力が作動するとき、ボックス内で実行中の挙動が変更される；
○１つの説明に役立つ例として、その出力の１つを通常の割合：ｎ秒ごとに刺激する、“Ｔｉｍｅｒ”（タイマー）ボックスの場合を取り上げよう。“ｅｖｅｎｔ  ｉｎｐｕｔ”タイプ（事象入力型）の入力は“Ｎｕｍｂｅｒ”タイプ（番号型）のパラメータを待ち、この入力においてそれが信号を受ける場合、ボックスのペースを変更し、従って「３」の値の信号がその入力に到着すると、その出力は僅か３秒ごとに刺激されるであろう；
―定時出力：この出力はボックスにおける挙動の実行中の、何時でも作動することができる；
○１つの説明に役立つ例として、顔の検出ボックスの場合を取り上げよう。このボックスは“Ｎｕｍｂｅｒ”タイプ（番号型）の定時出力を有し、ボックスが実行されるとき、それはロボットがその視界内で、前の瞬間と比較して異なる顔の数を識別する都度、この出力を刺激する。もし誰も居らず、そしてロボットが１つの顔を見た場合、それは情報「１」でその出力を刺激する。２番目の顔が到着した場合、それは情報「２」を送信し、そして２つの顔が少し後に消えた場合、それは「０」を送信する。“ｆａｃｅ（ｓ)  ｉｄｅｎｔｉｆｉｅｄ”（識別された顔）の事象は、識別された顔の数を用いて、こうして回復される。
【００５０】
ボックス及び事象は、図６に表わされるようにリンクによって相互接続される。リンクは或る事象の信号を入力と出力との間で伝達する。事象の信号には多くのタイプ：
―他の情報を伴わない作動信号と、
―１つ以上の数量（例えば、複数のステップ又は距離）を運ぶ信号と、
―１つ以上の文字列（例えば、ロボットの会話合成モジュールを通される必要がある文字情報）を運ぶ信号と、
―各々が以前のタイプの１つである複数の信号を含み得る、複合信号と
が存在し得る。
【００５１】
有利なことに、これらのリンクは様々なテクスチャを有する色又は線により、様々な方法で画像を用いて表わされる。
【００５２】
幾つかのボックスは一定の定義されたタイプの入力のみを受け入れ、他のタイプの入力を受け入れない。
【００５３】
異なる挙動の主要フレームに属するが、同一のタイムライン上に交点を有する２つのボックス同士の間に接続を確立することが可能である。このため、本発明のシステムのユーザーはタイムライン上で或る瞬間を選び、前記瞬間に動作している全ての挙動の主要フレームを編集することができる。従って、第一の主要フレームがタイムライン内へとローディングされ、第二の主要フレームがそのボックス及びその接続と共に現われる場合、ユーザーはボックス及びそれらの間の接続を移動させ、又は変更することができ、それゆえロボットにより実行されるであろう挙動を動的に変更可能である。
【００５４】
図７は本発明の１つの実施形態における、仮想ロボットのモーターのグラフィック表示上における直接的行動による、プログラミングの一例を示す視図である。
【００５５】
図７はロボットの左腕を表わす。この例において、腕は２台のモーター及びまた２自由度を有する手−腕関節により作動する、２つの直角な自由度を伴う腕−肩関節を持つ。関節の４台のモーターの回転角度は、各モーターに対応するカーソルをドラッグするためのマウスを用いることにより、直接制御され得る。角度の値は各モーターに対して表示される。本発明の標準的な実施形態において、仮想ロボットの関節のモーターによる命令の性能は、およそ１秒を必要とし得る。動作がこの時間内に行なわれない場合、これは特に動作の実行に反する障害があるため、その動作は実行されないことを意味し得る。
【００５６】
状態指示器は、制御された動作が記録されたかどうかを示す。状態指示器が「記録されない」位置にある場合、これは特に、タイムラインに依存する動作層へ入力を促されたモーターが、同じタイムラインに依存する別の動作層へは入力を促され得ないため、動作が実行出来ないことを意味し得る。
【００５７】
図３に示される各モーターのタイムライン／角度を、個々に又は与えられた部分に関して見ることが可能である。
【００５８】
既に示されたように、この制御モードにおいて片方の手足用にプログラミングされた動作を、対称な手足に移転させることもまた可能である。この場合、モーターの動作は対称化される。
【００５９】
この画面において、本発明の編集及びプログラミングのシステムに接続された物理的ロボットが、本システムにより制御され、仮想ロボットが物理的ロボットに統御される、マスター−スレーブ・モードをプログラミングすることができる。
【００６０】
図８ａ及び８ｂは、本発明の１つの実施形態における、命令されたようには実行不可能なロボットの動作の一例、及びそれを実行可能にするための動作調整の一例をそれぞれ説明している、２つの画面の視図である。
【００６１】
図８ａにおいて、命令された動作を表わす線が、通常つながるべき次の動作シーケンスの（小さい四角形で具象化されている）位置につながらない事が見られる。出発位置と到着位置との間には、僅か５つの動作シーケンス段階が存在する。モーターに設定された（モーターに応じて、例えば４〜８ｒｐｓの間で変化し得る）速度制限、フレームのスクロール速度（この場合３０ＦＰＳ：フレーム／秒）、及びモーターによりカバーされるべき角度振幅（図の例において−５２°〜＋３７°）を考慮すると、その命令は実行され得ない。
【００６２】
図８ｂにおいて、実行不可能な動作の主要フレームがそこに位置するフレームが到達すると直ちに、モーターは次の命令の実行へと移されているのを見ることが出来る。
【００６３】
不可能である条件は、見られるように、ユーザーによって選ばれるＦＰＳの数とモーターの制限速度に依存しており、後者のパラメータは僅かな変動しか受け入れず、それはモーター特性に依存することが注目される。
【００６４】
図９ａ、９ｂ、９ｃは、本発明の１つの実施形態における、ロボットの挙動の編集と制御の複雑な例を説明する画面の視図である。
【００６５】
図９ａは、第一の挙動シーケンス（ｂｅｈａｖｉｏｒ＿ｌａｙｅｒ１におけるｋｅｙｆｒａｍｅ  １）が、第一の“Ｄａｎｃｅ”（ダンス）ボックスのボックス編集窓内への追加によって、挙動型の層における作成により生成される場合を例証し、前記第一のシーケンスはｍｏｔｉｏｎ＿ｌａｙｅｒ１におけるタイムラインと同期している。第二の“ＦａｃｅＬｅｄｓ”ボックス（面のＬＥＤ）は第一のシーケンスｋｅｙｆｒａｍｅ  １におけるボックス編集窓内に追加されている。
【００６６】
図９ｂ及び９ｃは、図９ａの２つの変形であり、
―図９ｂにおいて、他の複数のＬＥＤがＦａｃｅＬｅｄから置き換えられ、その全てがボックスの入力に結ばれており、それは対応する挙動（複数のＬＥＤのスイッチオン）が並行して実行されるであろうことを意味する。
―図９ｃにおいて、他の複数のＬＥＤがＦａｃｅＬｅｄの前に順々に（直列に）加えられ、それはそれらのスイッチオンがＦａｃｅＬＥＤのスイッチオン以前に連続して行なわれることを意味する。
【００６７】
図１０ａ、１０ｂ、及び１０ｃは、本発明の１つの実施形態における、タイムラインと同期したロボットの挙動のシーケンスを編集し、制御する一例を説明する画面の視図である。
【００６８】
図１０ａは、タイムラインのフレーム・インデックスによりパラメータ化された“ＧｏｔｏＡｎｄＳｔｏｐ”ボックス（図の例においては１００）を示す。このボックスが作動するとき、その実行はボックスのパラメータによって指定されたステップにジャンプし、現在の挙動の実行は止められる。
【００６９】
図１０ｂに示すように、関係する挙動層における時間の推移を止める代わりに、それが規定のステップに基づいて時間を推移させ得るという点において、“ＧｏｔｏＡｎｄＳｔｏｐ”挙動ボックスから区別される、“ＧｏｔｏＡｎｄＰｌａｙ”挙動ボックスもまた存在する。例証されている場合において、“ＧｏｔｏＡｎｄＰｌａｙ”と“ＧｏｔｏＡｎｄＳｔｏｐ”の２つのボックスは、ロボットの左足と右足の衝撃センサーをそれぞれ備える、“Ｂｕｍｐｅｒ”ボックスの出力に接続されている（１つの実施形態においては、ロボットは各々の足に２つの衝撃センサーを有する）。
【００７０】
図１０ｃは、その中に２つの“ｌｅｆｔ”センサー（左足のセンサー）と“ｒｉｇｈｔ”センサー（右足のセンサー）が例証されている、Ｂｕｍｐｅｒｓボックスの内部の視図を示す。
【００７１】
図１０ｂに戻ると、
―左足の少なくとも１つのセンサーが作動する（障害物上での左足の衝撃がセンサーにより検出される）場合、現在の挙動（図の例においてはダンス）は停止されるが、その中に歩行の挙動が挿入されている挙動層のタイムラインは引き続き推移し、
―右足の少なくとも１つのセンサーが作動する（障害物上での右足の衝撃がセンサーにより検出される）場合、現在の挙動（図の例においては歩行）は停止され、その中に歩行の挙動が挿入されている挙動層のタイムラインは休止となる。
【００７２】
図１１は、本発明の１つの実施形態における、ロボットの挙動実行の直接プログラミングを可能にする、スクリプトの一例を示す。
【００７３】
本図の例は、ロボットの左耳の複数のＬＥＤ（ＬＥａｒＬｅｄｓ）をスイッチオンさせるためのスクリプトである。スクリプトは、翻訳された言語であるＰｙｔｈｏｎ言語でここに書かれたモジュールである。スクリプト・ボックスの作成は３つのステップ：
―ボックスの具体化ステップと、
―それに結合される他のボックスから呼び出され得る、モジュールとしてのボックスを登録するステップと、
―ボックスの初期化ステップと
で行なわれる。
【００７４】
ユーザーは最初の２ステップにおいては介入しない。ユーザーは３番目を制御する。それは従来スクリプト言語によるため、各モジュールは１つ以上のクラスにおいて使われ得る方法で作られる。属性（又は変数）は１つ以上のモジュールに対して定義される。スクリプトはユーザーによって全体的又は部分的に変更できる。本システムのモジュールは直接アクセス可能である。幾つかのモジュールは、ロボットの基礎的な機能（そのメモリに対するＡＬＭｅｍｏｒｙ、動作機能に対するＡＬＭｏｔｉｏｎ、ＬＥＤに対するＡＬＬｅｄｓ等）を管理する。ＡＬＭｏｔｉｏｎモジュールは、ロボットを動かすためのインターフェースを（プログラミング・インターフェースの意味において）提供する。それは「１ｍ前進歩行」のような非常に高レベルの方法、又は「動作を円滑にするために補間を用いて、‘ＨｅａｄＰｉｔｃｈ’（頭部の移動角度）関節を１．５秒間のうちに３０°動かす」という、より低いレベルの方法を含む。ＡＬＬｅｄｓモジュールはロボットの全てのＬＥＤへのアクセスを与える。それは従って各ＬＥＤ又はＬＥＤの１つのグループの光強度、（ＬＥＤが色を変えられるとき）色を（例えば左目の全ＬＥＤを一度に）調整できる。また、（例えば両耳のＬＥＤのような）１つのグループのＬＥＤを回転可能にする、より高いレベルの方法も存在する。
【００７５】
本発明の移動ロボットの動作を編集し、制御するための本システムは、従来のＯＳ［オペレーティング・システム］（Ｗｉｎｄｏｗｓ、Ｍａｃ、ＵＮＩＸ）を有する市場標準のパソコンにインストールされ得る。使用されるスクリプト言語が、コンピュータにインストールされなければならない。本システムが物理的ロボットを直接制御するために用いられる場合、ＷｉＦｉタイプ無線リンク又は有線リンクであるリンクが必要となる。これらのリンクは又、ローカル或いは遠隔ネットワークを通じて、他のユーザー達と交換される挙動スクリプトを検索するために使われる。編集及び制御システムの仮想ロボットは、本システムから受けた命令を翻訳及び実行可能であるべき、本システムによって制御される物理的ロボットの画像である。
【００７６】
本発明による同一の編集及び制御システムは、多数のロボットを制御することができる。これらのロボットの幾つかは、様々な物理的外見−人型ロボット、動物等−及び更に異なる構造（異なる自由度の数、動作のみを実行する単純なロボット、及び動作と挙動を実行できる他のロボット）さえも有し得る。本発明のシステムにより制御され得るロボットは、しかしながら本発明による編集及び制御システムのボックスのスクリプトを実行するのに適した、必要な通信インターフェース及びソフトウェア・モジュールを持たなければならない。
【００７７】
上述の例は本発明の実施形態の例証として与えられている。それらは以下の特許請求の範囲により定義される本発明の範囲を何ら制限しない。
【図１】
0006549815.tif 000002
【図２】
0006549815.tif 000003
【図３】
0006549815.tif 000004
【図４】
0006549815.tif 000005
【図５】
0006549815.tif 000006
【図６】
0006549815.tif 000007
【図７】
0006549815.tif 000008
【図８ａ】
0006549815.tif 000009
【図８ｂ】
0006549815.tif 000010
【図９ａ】
0006549815.tif 000011
【図９ｂ】
0006549815.tif 000012
【図９ｃ】
0006549815.tif 000013
【図１０ａ】
0006549815.tif 000014
【図１０ｂ】
0006549815.tif 000015
【図１０ｃ】
0006549815.tif 000016
【図１１】
0006549815.tif 000017