(57)【特許請求の範囲】
【請求項１】
センサ及びアクチュエータの複数のサブセットを含む関節肢で動き、各サブセットがマイクロコントローラを含む複数の電子部品を搭載した電子カード（１０）によって制御される移動ロボットであって、前記電子カードの少なくとも一部に対する制御機能が、少なくともそれぞれがユニークなコンピュータの１つである第１のコンピュータ（２０）と第２のコンピュータ（３０）との間で分散され、前記第１のコンピュータ（２０）が、特に、前記第２のコンピュータ（３０）によって定義された機能を実行するためのコマンドメッセージを前記電子カード（１０）に伝送する処理を行い、
前記移動ロボットの特定の設定データは、前記第１のコンピュータによって管理されるメモリ内に格納され、前記設定データは特に制御対象の電子カードのリストを含み、前記センサ及びアクチュエータは前記カード及び前記センサ及びアクチュエータに関する動作パラメータによって命令され、
前記第２のコンピュータは、第１のコンピュータのプログラムを変更することなく別の同等のコンピュータと置き換え可能である
ことを特徴とする移動ロボット。
【請求項２】
前記第１のコンピュータで移動ロボットの特定の機能がプログラムされ、前記機能は、特定のセンサ状態変数の値に基づいてアクチュエータ用のコマンドを決定することにより、ロボットの反射運動を管理することを特徴とする請求項１に記載の移動ロボット。
【請求項３】
前記第１のコンピュータが、前記ロボットの前記電子カードの少なくとも一部の初期化手順を管理することを特徴とする請求項１に記載の移動ロボット。
【請求項４】
前記第１のコンピュータ又は前記第２のコンピュータのプログラミングを変更することなしに、前記ロボットの電子カードを同等のカードと交換できることを特徴とする請求項１に記載の移動ロボット。
【請求項５】
前記第１のコンピュータと前記電子カードとの間の前記通信が、少なくとも１つの特定のバス上で安全なプロトコルによって管理され、前記安全なプロトコルは、前記メッセージのバイトの前に、少なくとも宛先アドレスと選択された値を持つ最上位ビットとを含むバイトを有し、前記メッセージのバイトの後に、前記メッセージのサイズを含む少なくとも１バイトとＣＲＣを含む１バイトとを有するフレームを有することを特徴とする請求項１に記載の移動ロボット。
【請求項６】
前記安全なプロトコルによる前記フレームの全バイトが、前記アドレスバイトの最上位ビットを補完する値の第１のバイトを有し、いずれの７バイトにおいても前記第１のバイトが、次の７バイトの７つの最上位ビットを有することを特徴とする請求項５に記載の移動ロボット。
【請求項７】
前記安全なプロトコルが、同時放送通信モードを含むことを特徴とする請求項５に記載の移動ロボット。
【請求項８】
第１のコンピュータとそれが制御する電子カードは更に、少なくとも２つの通信ラインによって接続され、前記通信ラインの１つは操作を検出するために使用され、前記通信ラインのもう１つは前記電子カードにアドレスを割り当てるために使用されることを特徴とする請求項５に記載の移動ロボット。
【請求項９】
センサ及びアクチュエータのサブセット用の複数のコマンドステップを含む関節肢で動く移動ロボットを制御し、各サブセットがマイクロコントローラを含む複数の電子部品を搭載した電子カード（１０）によって命令される方法であって、前記電子カードの少なくとも一部の制御ステップが少なくともそれぞれがユニークなコンピュータの１つである第１のコンピュータ（２０）と第２のコンピュータ（３０）との間で分散され、前記第１のコンピュータ（２０）は、前記定義ステップが前記第２のコンピュータ（３０）によって実行される機能を実行するためのコマンドメッセージを前記電子カード（１０）に伝送するステップを特に処理し、
前記移動ロボットの特定の設定データは、前記第１のコンピュータによって管理されるメモリ内に格納され、前記設定データは特に制御対象の電子カードのリストを含み、前記センサ及びアクチュエータは前記カード及び前記センサ及びアクチュエータに関する動作パラメータによって命令され、
前記第２のコンピュータは、第１のコンピュータのプログラムを変更することなく別の同等のコンピュータと置き換え可能である
ことを特徴とする方法。
【請求項１０】
前記第１のコンピュータと前記電子カードとの間の前記通信が、少なくとも１つの特定のバス上で安全なプロトコルによって管理され、前記安全なプロトコルは、前記メッセージのバイトの前に、少なくとも宛先アドレスと選択された値を持つ最上位ビットとを含むバイトを有し、前記メッセージのバイトの後に、前記メッセージのサイズを含む少なくとも１バイトとＣＲＣを含む１バイトとを持つフレームを有すると共に、前記安全なプロトコルによる前記フレームの全バイトが、前記アドレスバイトの最上位ビットを補完する値の第１のバイトを有し、いずれの７バイトにおいても前記第１のバイトが、次の７バイトの７つの最上位ビットを有することを特徴とする請求項９に記載の移動ロボットを制御するための方法。
【請求項１１】
前記コマンドメッセージが、実質的に固定された周期で前記電子カードに伝送され、該周期の長さが約１０ミリ秒であることを特徴とする請求項９に記載の移動ロボットを制御するための方法。
【請求項１２】
前記第２のコンピュータによって生成される前記コマンドメッセージが、コマンドごとに少なくとも１つの実行日付を含むことを特徴とする請求項９に記載の移動ロボットを制御するための方法。
【請求項１３】
前記実行日付を含むコマンドのコマンド値が、該コマンドの実行日付の直前の実行日付を含むコマンドのコマンド値と該コマンドの実行日付の直後の実行日付を含むコマンドのコマンド値との補間により算出されることを特徴とする請求項１２に記載の移動ロボットを制御するための方法。
【請求項１４】
電子カードによって実行される、第１のコマンドと第２のコマンドとの間のサーボ制御命令は、前記第１のコマンドに先行するコマンドと前記第１のコマンドとの間のサーボ制御の変動量の拡張に相当するコマンドが外挿されることを特徴とする請求項１１に記載の移動ロボットを制御するための方法。
【請求項１５】
電子カードによって実行される、第１のコマンドと第２のコマンドとの間のサーボ制御命令は、前記第１のコマンドに先行するコマンドと前記第１のコマンドとの間のサーボ制御の変動量を維持に相当するコマンドが外挿されることを特徴とする請求項１１に記載の移動ロボットを制御するための方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットに組み込まれた制御及びコマンドシステムの分野に関する。より詳細には、本発明は、関節肢で動く又は関節肢を使用する特に人間型又は動物型のロボットのアーキテクチャに適用される。ロボットは、頭部、胴体、２本の腕、２つの手、２本の脚、２本の足等の人間の特定の外見的な属性を備えた瞬間から人間型ロボットとしてみなすことが可能である。しかし、人間型ロボットは、多かれ少なかれ前進させることが可能である。ロボットの肢は、大なり小なり多くの関節を備え得る。ロボットは、静的及び動的にバランスを自身で管理することができ、三次元において可能な限り２つの肢で走行する。ロボットは、環境から信号をピックアップし（「聞く」、「見る」、「触る」、「感じる」等）、多かれ少なかれ高度な挙動に従って反応し、言葉又は行動のいずれかによって他のロボット又は人間と対話する。ロボットに人間の外見や動作を与える必要が増せば増すほど、応力を受けた状態で四肢の関節での自由度を与え（従って、これらの関節を駆動するモータの数を増やし）、センサと処理操作を増やし、反射的な反応を引き起こす必要が増す。ユーザ（人間自身）が定義した任務にロボットを適合させる必要が増せば増すほど、ロボットの物理的な構造体をカスタマイズする可能性（例えば、頭部を別のものと交換することにより）及びロボットの知能をカスタマイズする可能性（ロボットが構成されるプログラムを更新することにより（ロボットの任務又は動作をアップグレードする新しいアプリケーションをダウンロード可能なサーバとの対話を必要とする場合がある））を提供する必要性が増す。関節肢において移動ロボットの物理構造及びソフトウェア構造を更に複雑にして融通性を持たせることは、先行技術のアーキテクチャでは不可能である。
【背景技術】
【０００２】
なぜならば、関節を制御する全てのモータを駆動する単一の中央演算処理装置を含む制御コマンドアーキテクチャは、特に結合コネクタの重量が原因ですぐにその限界に達するからである。代案は、産業用ロボットシステムで従来から使用されている、モータユニット又はセンサごとにマザーカード及びコントローラカードを備える分散型アーキテクチャを提供することである。指定された機能を有する人間型ロボットの場合、マザーカードとの通信の管理は、飽和状態になるまで、まさにそのプロセッサに向けられることになる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明では、上記の問題を解決するために、少なくとも３つのレベルを有する制御コマンドアーキテクチャ（少なくとも１つのマイクロコントローラを備えた電子カードを介してセンサ／アクチュエータに指令を出すレベル、コマンドを変換し、該カード及び直接駆動型の基本機能に伝送するレベル、及びロボットの人工知能を含む上位機能を生成するレベル）を提供する。
【課題を解決するための手段】
【０００４】
したがって、本発明では、センサ及びアクチュエータの複数のサブセットを含む関節肢で動き、各サブセットが電子カードによって制御される移動ロボットであって、電子カードの少なくとも一部に対する制御機能が、少なくとも第１のコンピュータと第２のコンピュータとの間で分散され、第１のコンピュータが、特に、第２のコンピュータによって定義された機能を実行するためのコマンドメッセージを電子カードに伝送する処理を行うことを特徴とする移動ロボットを開示する。
【０００５】
有利には、第１のコンピュータで移動ロボットの特定の機能がプログラムされ、この機能は、特定のセンサ状態変数の値に基づいてアクチュエータ用のコマンドを決定することにより、ロボットの反射運動を管理する。
【０００６】
有利には、移動ロボットの特定の設定データは、第１のコンピュータによって管理されるメモリ内に格納され、該設定データは特に制御対象の電子カードのリストを含み、センサ及びアクチュエータは電子カード及びセンサ及びアクチュエータに関する動作パラメータによって命令される。
【０００７】
有利には、第１のコンピュータが、ロボットの電子カードの少なくとも一部の初期化手順を管理する。
【０００８】
有利には、第１のコンピュータ又は第２のコンピュータのプログラミングを変更することなしに、ロボットの電子カードを同等のカードと交換できる。
【０００９】
有利には、第２のコンピュータは、第１のコンピュータのプログラムを変更することなく別の同等のコンピュータと置き換え可能である。
【００１０】
有利には、第１のコンピュータと電子カードとの間の通信が、少なくとも１つの特定のバス上で安全なプロトコルによって管理され、安全なプロトコルは、メッセージのバイトの前に、少なくとも宛先アドレスと選択された値を持つ最上位ビットとを含むバイトを有し、メッセージのバイトの後に、メッセージのサイズを含む少なくとも１バイトとＣＲＣを含む１バイトとを持つフレームを有する。
【００１１】
有利には、安全なプロトコルによるフレームの全バイトが、アドレスバイトの最上位ビットを補完する値の第１のバイトを有し、いずれの７バイトにおいても第１のバイトが、次の７バイトの７つの最上位ビットを有する。有利には、安全なプロトコルが同時放送通信モードを含む。
【００１２】
有利には、第１のコンピュータとそれが制御する電子カードは更に、少なくとも２つの通信ラインによって接続され、通信ラインの１つは操作を検出するために使用され、通信ラインのもう１つは電子カードにアドレスを割り当てるために使用される。
【００１３】
本発明では、センサ及びアクチュエータのサブセット用の複数のコマンドステップを含む関節肢で動く移動ロボットを制御し、各サブセットが電子カードによって命令される方法であって、電子カードの少なくとも一部の制御ステップが少なくとも第１のコンピュータと第２のコンピュータとの間で分散され、第１のコンピュータは、定義ステップが第２のコンピュータによって実行される機能を実行するためのコマンドメッセージを電子カードに伝送するステップを特に処理することを特徴とする方法を開示する。
【００１４】
有利には、第１のコンピュータと電子カードとの間の通信は、少なくとも１つの特定のバス上で安全なプロトコルによって管理され、安全なプロトコルは、メッセージのバイトの前に、少なくとも宛先アドレスと選択された値を持つ最上位ビットとを含むバイトを有し、メッセージのバイトの後に、メッセージのサイズを含む少なくとも１バイトとＣＲＣを含む１バイトとを持つフレームを有すると共に、安全なプロトコルによるフレームの全バイトが、アドレスバイトの最上位ビットを補完する値の第１のバイトを有し、いずれの７バイトにおいても第１のバイトが、次の７バイトの７つの最上位ビットを有する。
【００１５】
有利には、コマンドメッセージは、実質的に固定された周期で電子カードに伝送され、該周期の長さは約１０ミリ秒である。
【００１６】
有利には、第２のコンピュータによって生成されるコマンドメッセージは、コマンドごとに少なくとも１つの実行日付を含む。
【００１７】
有利には、タイムスタンプされたコマンド値が、直前の値と直後の値との間の周期的な送信日付での補間により算出される。
【００１８】
有利には、電子カードによって実行される、第１のコマンドと第２のコマンドとの間のサーボ制御命令は、第１のコマンドに先行するコマンドと第１のコマンドとの間のコマンド速度変動を拡張することにより先行するコマンドから外挿される。
【００１９】
有利には、電子カードによって実行される、第１のコマンドと第２のコマンドとの間のサーボ制御命令は、第１のコマンドに先行するコマンドと第１のコマンドとの間のコマンド速度変動を第１のコマンドと第２のコマンドとの間で適用されるサーボ制御命令に変換することにより、先行するコマンドから外挿される。
【００２０】
本アーキテクチャは、ロボットの使用プロファイルに適したロボットの挙動の生成を処理する人工知能タスクのための最上位レベルユニットの計算パワーの大部分を解放する利点を提供する。本アーキテクチャは、また、レベルによって最適化された、様々なバス上にある種々のコンピュータ間での通信を管理すること、及び最適化済みの通信プロトコルを提供することを可能にする。更に、このアーキテクチャでは、追加の利点として、ロボットのコアを再設定することなしにロボットの一部を変更することができる。本アーキテクチャはまた、リモートマシンから、又は同期リンクを介して第１のロボットと通信する別のロボットから人間型ロボットの多くの関節へ伝送される可能性がある命令の実行を同期化するために必要なタイムスタンプされたコマンドの使用にも適している。
【００２１】
本発明は、添付の図面を参照しながら以下に示す複数の例示的な実施形態の説明を読めば、本発明について並びに本発明の種々の特徴及び利点についてよく理解することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態に係る人間型ロボットの物理的なアーキテクチャを示す図である。
【図２】本発明の実施形態に係る人間型ロボットの機能的なアーキテクチャを示す図表である。
【図３】本発明の実施形態に係る人間型ロボットの論理的なアーキテクチャを示す概略図である。
【図４】本発明の実施形態に係る人間型ロボット内において、第２のコンピュータによって生成されたコマンドを第１のコンピュータによって電子カードへ伝送する処理を示す。
【図５Ａ】本発明の実施形態に係る人間型ロボット内において、最下位レベルの電子カードへ伝送するために第１又は第２レベルのコンピュータのうちのいずれかでタイムスタンプされたコマンドを生成する処理を示す。
【図５Ｂ】本発明の実施形態に係る人間型ロボット内において、最下位レベルの電子カードへ伝送するために第１又は第２レベルのコンピュータのうちのいずれかでタイムスタンプされたコマンドを生成する処理を示すタイミング図である。
【図６Ａ】本発明の実施形態に係るタイムスタンプされたコマンドをマージするための種々のシナリオを示すタイミング図である。
【図６Ｂ】本発明の実施形態に係るタイムスタンプされたコマンドをマージするための種々のシナリオを示すタイミング図である。
【図６Ｃ】本発明の実施形態に係るタイムスタンプされたコマンドをマージするための種々のシナリオを示すタイミング図である。
【図６Ｄ】本発明の実施形態に係るタイムスタンプされたコマンドをマージするための種々のシナリオを示すタイミング図である。
【図７】本発明の実施形態に係る人間型ロボットのアーキテクチャの種々のレベル間での設定要素の分布を示す。
【発明を実施するための形態】
【００２３】
以下の説明の中で出てくる略語及び頭字語の意味は、特定の文脈内で異なる意味が明示的に示されない限り、下表の通りである。
【００２４】
【表１】
0005849345.tif 000002
【００２５】
図１は、本発明の実施形態における人間型ロボットの物理的なアーキテクチャを示す。このロボットは、センサ１２０及び関節を駆動するアクチュエータ１３０を制御するために、タイプ１０の電子カードを約２ダース備えている。図示したカード１０は、左足を制御するものである。このアーキテクチャの長所の１つは、関節を制御するカードがほとんどの場合、交換可能なことである。関節は、通常、少なくとも２つの自由度を有し、従って２つのモータを備える。各モータは角度方向に駆動される。関節はまた、位置センサ、特にＭＲＥ（磁気ロータリエンコーダ）を複数含む。制御電子カードは、市場標準のマイクロコントローラ１１０を含む。例えば、Ｍｉｃｒｏｃｈｉｐ社によって製造されたＤＳＰＩＣＴＭが挙げられる。これは、ＤＳＰと結合される１６ビットＭＣＵである。このＭＣＵのループサーボ制御サイクルは１ｍｓである。ロボットは他のタイプのアクチュエータ、特にＬＥＤ１４０（発光ダイオード）も備え得る。ＬＥＤ１４０の色と強度はロボットの感情を表すことができる。アクチュエータは、他のタイプの位置センサを含んでもよく、特に、慣性ユニット、ＦＳＲ（足の下の圧力センサ）等がある。
【００２６】
頭部にはロボットの知能、特にカード３０が含まれている。このカード３０は、ロボットに割り当てられた任務をロボットが完遂できるように高度な機能を実行する。但し、カード３０は、ロボットの他の場所、例えば胴体に配置される場合もある。但し、この場所を利用すれば、頭部の取り外しが可能である場合に、これらの上位レベル機能の置き換えが可能であり、従って、特にロボットの知能、ひいてはロボットの任務を迅速且つ完全に変更したり、逆に、同じ人工知能を維持したままボディを別のボディと交換したり（例えば、欠陥があるボディと欠陥のないボディとの交換）することも可能であることが分かる。頭部はまた、専用のカード、特に発話又は視覚処理に専用のカードを含むこともできる。カード３０のプロセッサ３１０は、市場標準のｘ８６プロセッサとすることができる。ＡＭＤ社によって製造されたＧｅｏｄｅＴＭ（３２ビット、５００ＭＨｚ）等の低消費プロセッサを選択することが優先される。カードはまた、一連のＲＡＭとフラッシュメモリも含む。このカードはまた、ロボットと外部（挙動サーバ、他のロボット等）との間の通信を管理し、通常は、ＷｉＦｉ又はＷｉＭａｘ伝送レイヤ上でそれを行うが、おそらくＶＰＮにカプセル化される標準プロトコルを使用した公衆移動体データ通信ネットワーク上で行う場合もある。プロセッサ３１０は、通常の高水準言語（Ｃ、Ｃ＋＋、Ｐｙｔｈｏｎ、Ｒｕｂｙ等）又はＵＲＢＩ（ロボット工学を専門とするプログラミング言語）等の人工知能に専用の言語を使用して高度な機能をプログラミングすることを可能にする標準的なＯＳで駆動されるのが一般的である。
【００２７】
カード２０はロボットの胴体に収納される。その場所には、本発明に従い、カード３０によって計算された命令をカード１０に伝送する処理を行うコンピュータが配置されている。このカードは、ロボット内のどこか他の場所に収容することも可能である。但し、胴体内の場所が有利である。そうした場合、頭部及び４つの肢の交点の近くにカードが配置され、それによってこのカード３０をカード２０及びカード１０に結合するコネクタを最小限に抑えることができるからである。このカード２０のコンピュータ２１０も、市場標準のプロセッサである。このプロセッサは、有利には、ＡＲＭ  ７ＴＭタイプの３２ビットプロセッサ（クロック速度６０ＭＨｚ）とすることができる。プロセッサのタイプ、プロセッサが配置される中央位置（オン／オフボタンの近く）、及び電源の制御とのリンクから見ても、これはロボットの電源の管理（スタンバイモード、緊急停止等）に適したツールとなっている。このカードもＲＡＭ及びフラッシュメモリを一式備えている。
【００２８】
本発明に係るこの３レベルのアーキテクチャには、マイクロコントローラ１１０及び２１０を再プログラミングする機能がマザーボード内に提供されている。
【００２９】
図２はコンピュータ２１０の主要な機能を示す。コンピュータ２１０は、コンピュータ３１０で生成された命令を、センサ１２０とアクチュエータ（例えばモータ１３０及び場合によってはＬＥＤ１４０）を含むカード１０に伝送する処理を行う。一部の命令は、カード２０を経由しないで特定のカードに直接伝送され得る。特に、モータを持たない、頭部に位置するカードの場合（顔面のＬＥＤ、タッチの検出、耳のＬＥＤの制御を行う）がそうである。このようなカードとカード３０との間のリンクは、それを使用する信号フレームに対して効果的なＩ２Ｃバスで実現するのが有利である。カード２０は、ＵＳＢバスを介してカード３０にリンクされる。ＵＳＢバスは、この機能に対して十分な信頼性と速度を提供し、プロセッサ３０における電力も非常に少なくて済む。更に、このＵＳＢリンクを使用すれば、一実施形態でカード３０を含む頭部を取り外すと、演算アーキテクチャの他の要素を、開発やテストを目的として外部コンピュータに直接接続することが可能である。
【００３０】
この用途に適したＵＳＢプロトコルを以下に簡単に説明する。メッセージの構造は従来どおりである。ヘッダは、固定された第１のバイト、第２のタイプバイト、アドレスバイト、メッセージ長バイト、メッセージのバイト（最大１２８バイト）、及び２つの固定されたメッセージ終了バイトを含み、メッセージ終了バイトの１バイト目は、第１のヘッダバイトと同じである。第１のヘッダバイトと等しいメッセージのバイトは、受信部を二極化するために体系的に複製される。使用されるプロトコルの一つの具体的な機能は、読み出し及び書き込み時に肯定及び否定受信確認応答（ＡＣＫ及びＮＡＣＫ）を管理することである。両方の場合とも、動作が正常終了した場合（ＡＣＫ）、メッセージの「データ」フィールドには、読み出し又は書き込みされたデータが含まれる。動作が異常終了した場合（ＮＡＣＫ）、「データ」フィールドには特定のシーケンスが含まれる。
【００３１】
カード２０は、上肢と下肢に位置するカード１０と、２つのリンク（例えば、ＲＳ４８５タイプの）を介して通信する。各ＲＳ４８５リンクは、全てのカード１０とカード２０とがリンクされたデバッグラインと、各メンバーに対する連鎖ライン（カード２０を起点として、肢の第１のカード１０から次のカードへと延びる）とによって補完される。これらのラインの機能については、説明の中で後述する。
【００３２】
ＲＳ４８５リンクは、産業環境で広範囲にわたって使用されており、干渉の影響を受けにくいので人間型ロボットのコマンド及び制御用に適している。更に、ＲＳ４８５リンクのデータレートは、双方向で大量の情報をやりとりするのに必要とされる４６６００バイト／秒を超えている。但し、この場合、メッセージフレームがリンクを介して連続的に送信され、メッセージの復号化を難しくしているという問題点がある。したがって、フレームから種々のメッセージを取り出すことが可能な安全な通信プロトコルを使用する必要がある。一つの可能なプロトコルを以下に説明する。このプロトコルは主に、各バイトの第１ビットをゼロに設定することと、７バイトの前に次の７バイトの最上位ビットを有するバイトを挿入することを含む。更に、メッセージヘッダは、６ビット（宛先アドレス）と、１ビット（読み出し又は書き込みのいずれが実行されるのかを示す）と、最上位ビット（体系的に１となる）とを含むバイトで構成される。メッセージの先頭は、アドレスに加えて２つのバイト（第１のバイトは、メッセージのサイズの符号化、第２のバイトはメッセージのタイプ）と、全てのメッセージに関係するＣＲＣから成る、メッセージの最終バイトとを含む。メッセージのタイプは、関節の角度、関節の粘性、リセット、ＬＥＤ、デバイスの設定、種々の再プログラムコマンド等となり得る。メッセージが有効になるためには、次の基準に従っていなければならない。即ち、第１のＭＳＢが１、他方が０、アドレス、メッセージタイプ、サイズ、及びＣＲＣが正しいこと。このプロトコルの管理負荷は、送信及び受信の両方においてかなり軽い。メッセージのサイズは固定であり、これにより通信の時間管理が相当にやりやすくなる。
【００３３】
チェックコードと関連する負荷を軽くするために、ブロードキャスト機能（実際にはほとんどの場合が同時放送機能）、すなわち様々なアドレスへの同時伝送が広く使用されている。この場合、第１の宛先アドレスはゼロに設定される。メッセージの一部に対応する宛先カードは、ＢＩＤ（Ｂｒｏａｄｃａｓｔ  ＩＤ）で識別され、これにより各カードは、該当するメッセージの部分を取り出すことができる。この実施形態では、特に、アクチュエータに、関節が到達すべき位置等のコマンドを送信することができる。
【００３４】
モータカードの読み取りの場合、プロトコルは若干異なる。マスターは、まず１バイト（ＭＳＢが常に１で）を、次に、要求されるバイト数を示す７ビットを、更にこれらの２バイトに対する７ビットのＣＲＣを送信する。ＣＲＣが正しい場合に限り、アドレスによって指定されたカードが応答する。更にカードは、ＭＳＢが常に０の場合に要求されたバイト数で応答する。モータカード上で読み出されるデータは、要求される長さによって異なるが、開始点は常に同じである。最も有用で最も頻繁に読み出されるデータは、読み出し領域の先頭に配置される。これらのデータは、関節、電流、エラー、及び温度のセンサの位置である。胸部カード２０のレベルでは、バイトカウントは存在しない。マージンを持つ応答バイトの送信時間に対応するタイムアウトが存在するのみである。タイムアウト後、カードは該当するバイトを受信済みの場合もあればそうでない場合もある。このため、カードで障害が発生した場合にロボットのリセット動作を中断させないようにすることが可能である。
【００３５】
デバッグリンク及び連鎖リンクは、ロボットが初期化されるときに使用され、その管理もカード２０で行われる。これはカード２０のもう一つの重要な機能である。カード２０は、オンボタンによって制御され、最初に初期化される。次に、カード１０及びカード３０が起動する。カード１０は、デバッグラインを介して、ビットを０で送信する。カード２０はそれらのカードに連鎖ラインを介してコマンドを返す。これによりこのステータスビットは１に変更される。アドレスの割り当ては、各連鎖ライン上のカードごとに段階的に１つのユニットによってインクリメンタルに肢の最後のカードに至るまで行われる。したがって、割り当てられたアドレスは、チェーン内におけるカード１０の位置であり、これにより、複数のカード１０が同じものである場合に、それらの間で「物理的な」区別がなされる。リセットの場合、全ての連鎖が再実行される。デバッグラインと連鎖ラインは、例えば、Ｏｎｅ  Ｗｉｒｅプロトコルを使用するラインであり、０のビット（パルスのロー状態の期間が５０μｓ程度）と１のビット（パルスのロー状態の期間が２５０μｓ程度）を符号化する方形波チェーンを循環させるラインである。
【００３６】
図３は、本発明に係る人間型ロボットの論理的なアーキテクチャを示す。
【００３７】
ロボットはカード管理モジュール（ＤＣＭ）を備えている。このモジュールは、主としてカード３０に挿入可能であるが、少なくとも部分的にはカード２０にも挿入可能である。ＤＣＭプログラムを起動するには、各カード１０（例えば、モータカード）内部の設定バッファを読み取る。この段階でのバッファは、カード内部の目印情報（ブートローダのバージョン（スタータファイル、プログラム、及びカードの場合は自動ローダ）、チェーンによって取得されたカードのアドレス）しか含んでいない。バッファは、ＤＣＭにおいてあらゆる設定値（ＢＩＤ、チェーン内のＭＲＥの番号と位置、モータの番号と位置、関節サーボ制御係数、ＬＥＤの存在、又はＦＳＲの存在等）により補完される。バッファの内容がカード１０に再度送信される。カード１０の設定パラメータの更新が、有利には、カードのフラッシュメモリの更新に取って替わる。カード１０で読み出されたデータは、ＲＡＭに保持される、ロボット内部のデータベース（ＳＴＭ）に格納される。ロボットの論理的なアーキテクチャは、マスター周辺デバイス（以降、説明の中ではＤｅｖｉｃｅと称する）（実質的に、ロボットの電子カード１０のＭＣＵ  １１０）のタイプとデバイスにリンクされたスレーブ周辺デバイス（ＳｕｂＤｅｖｉｃｅと称する）（センサ１２０又はアクチュエータ１３０、１４０）のタイプに分かれる。Ｄｅｖｉｃｅは、一連のカード２０、３０に対してはスレーブとなる。Ｄｅｖｉｃｅは、タイプ、バス（頭部又は胸部Ｉ２Ｃ、アップ又はダウンＲＳ４８５）、及びこのバスのアドレスによって特徴付けられる。ＳｕｂＤｅｖｉｃｅは、センサかアクチュエータかを定義するタイプ（モータ、ＬＥＤ、ＦＳＲ等）、付属Ｄｅｖｉｃｅ、及びＳｕｂＤｅｖｉｃｅ番号によって特徴付けられる。
【００３８】
関節の位置は、センサＳｕｂＤｅｖｉｃｅ（センサによって返された角度情報に対応）と、これとは独立したアクチュエータＳｕｂＤｅｖｉｃｅ（到達すべき要求された位置に対応）に対応することに注意されたい。
【００３９】
例えば、モータカードは、好ましくは、２つのモータＳｕｂＤｅｖｉｃｅ（アクチュエータ）、２つのセンサ位置ＳｕｂＤｅｖｉｃｅ（センサ）、２つの電流ＳｕｂＤｅｖｉｃｅ（センサ）等を含む。顔面カードは、多数のＬＥＤ  ＳｕｂＤｅｖｉｃｅ（アクチュエータ）（一実施形態では４８個）を含むことができる。
【００４０】
ＳｕｂＤｅｖｉｃｅもまた、主状態変数の浮動小数点値（位置センサにおける関節の角度位置、電流センサにおける電流測定値、ＬＥＤアクチュエータのＬＥＤの値等）によって、及び主変数から導出される変数値（利得、オフセット、最小値及び最大値、確認応答（ＡＣＫ）又は否定受信確認応答（ＮＡＣＫ）、ＥＲＲＯＲ-MC-1064PCT-問題がある場合は０とは異なる）によって特徴づけられる。Ｄｅｖｉｃｅは、主変数値は持たないが、ＡＣＫ／ＮＡＣＫ／ＥＲＲＯＲタイプのカウンタ値を持っている。他の値は、Ｄｅｖｉｃｅ又はＳｕｂＤｅｖｉｃｅのタイプに特有の値である（例えば、モータアクチュエータ上のサーボ制御係数）。これらの値は全て自動的に更新され、上位レベルのアプリケーションによりＳＴＭで確認することができる。
【００４１】
ＡＣＫ及びＮＡＣＫカウンタは、Ｄｅｖｉｃｅ／ＳｕｂＤｅｖｉｃｅで通信が成功するたびに、又は通信エラーが発生するたびにインクリメントされる。これらのカウンタでは、カードへのアクセスの問題を検出し、その頻度を算出することが可能である。
【００４２】
このＤｅｖｉｃｅ／ＳｕｂＤｅｖｉｃｅアーキテクチャは、ロボットごとに設定ファイル内に記述される。この設定ファイルはデフォルト（標準的な設定）ではカード３０に存在し、容易に変更することができるが、特定の値はカード２０のフラッシュメモリ内にも格納される。これは、カード２０の別の重要な機能であり、ロボットの上位レベルと下位レベルとの間の独立性を保護することを可能にする。ＤＣＭ自体は、ロボットの電子アーキテクチャに関する「ハードな」情報を何ら持たない。センサ及びアクチュエータへのアクセスは、ＳｕｂＤｅｖｉｃｅ／ｖａｌｕｅの名前を持つ「キー」によって取得される。上位レベルの場合は、足のＬＥＤ（胸部カードのＵＳＢを介してモータカード上のＲＳ４８５モードで管理される）、胸部のＬＥＤ（ＵＳＢリクエストを介して胸部カードによって管理される）、顔面部のＬＥＤ（Ｉ２Ｃリクエストを介して顔面部カードによって管理される）の間に差異はない。
【００４３】
好適な実施形態では、ＤＣＭは１０〜２０ｍｓの内部サイクルで動作する。センサ及びアクチュエータの大部分は、各サイクルで体系的に更新／読み出しされる。これは、一定の負荷で動作させること、通信を最適化すること、通信エラーを重大なものにはしない（２０ｍｓ継続するだけ）ことを可能にする。更に、大部分のセンサについて、リクエストベースの更新よりもシステマティックな更新を優先させることによって、ロボットの全ての上位レベルモジュールに関する最新の情報の即時の可用性を保証する。カード２０は、ＤＣＭで生成され、ＵＳＢプロトコルで伝送されたコマンドを、ＲＳ４８５プロトコルへ変換する処理をする。また、カード２０のメモリの１つを、これらのコマンドのバッファメモリとして使用することにより、以下に示すようにコマンド間で補間演算を実行することができる。
【００４４】
本発明に係るアーキテクチャの動作例として、図４は、ロボットが、進行方向θに沿って速度ｄ’で距離ｄを進むための一連のコマンドの生成及び伝送を示している。プロセッサ３０は、ロボットの関節Ａ１、Ａ２、Ａ３のモータに適用されるコマンドを生成して、命令ｄ、ｄ’、θを実行する。各関節については、到達すべき角度の形式で１つ又は複数のコマンドが存在する。本発明の好適な実施形態では、全てのコマンドを実行するために、実行の絶対時間が算出される。この非決定性プロセッサ及びバスアーキテクチャにおいては、ロボットのカード間の通信も外部からの通信も、実行対象の命令に対する入力としてのパラメータを提供することができなくても、命令実行の場所への移動時間、ひいては特定の到着時間及び実行時間を保証することができる。コマンドのタイムスタンプにより、このコンテキストでは比較的簡単な方法で同期化を確実に行うことができる。例えば、プロセッサ３０のシステム時間を使用することが可能である。ＤＣＭは、設定情報及び既知のシステムステータスに基づいて、一連の将来｛αｉ，ｔ｝における一連の瞬間iでのアクチュエータＡｉの応力変数α（角度コマンド）の一連の値を生成する。値ａの計算及び伝送が可能な期間Ｔは、ＤＣＭ専用ＲＡＭのメモリ容量に特に左右される。ＤＣＭは独自のサイクルを持っているので（前記した１０〜２０ｍｓ）、フレームが伝送された時点で実際のコマンドを生成する必要がある。全てのコマンドが連続的な状態変数（関節モータの回転を特徴づける角度やＬＥＤの発光等）を持つアクチュエータに適用される場合、この生成を瞬間ｔで適用するには、コマンドαｉｔ１及びαｊｔ２（それぞれ、ｔの直前及びｔの直後のコマンド）を検索し、このような２つの値の間で線形補間（ｔ１、ｔ２、及びｔの間で経過した時間によって重み付けされる）を実行する。
【００４５】
新しいコマンドを送信する場合、同一のアクチュエータに関連する２つの数列｛αｔ｝をマージすることも可能である（ＤＣＭのＲＡＭ内にあるもの、外部モジュールから新規に送信されたもの）。補間の前にこの動作が実行される。補間の結果は、ＵＳＢフレーム内でカプセル化され、カード３０からカード２０に伝送される。変形例として、数列｛αｉ，ｔ｝を伝送し、カード２０で変換を実行することもできる。両方の場合とも、プロセッサ２１０は、ＵＳＢプロトコルを排除し、前述した安全なプロトコルに従ってＲＳ４８５フレーム内にカプセル化する。コマンドの実行を必要とするＳｕｂＤｅｖｉｃｅ  Ａｉを含むＤｅｖｉｃｅのアドレスを符号化することにより、同時放送モードに優先権が与えられる。フレームは、ＲＳ４８５バスを介して、コマンドの実行を必要とするＳｕｂＤｅｖｉｃｅ  Ａｉを制御するＤｅｖｉｃｅへ同時に伝送される。フレーム制御手順では、伝送されるメッセージの完全性をチェックすることができる。実行対象の第１のコマンドと前に実行された最後のコマンドとの間で、Ｄｅｖｉｃｅにおいて補間を実行し、関節の動きを滑らかにする。
【００４６】
図５Ａ及び図５Ｂに、伝送に適用される線形補間に基づく変換を示す。図５Ａの簡単なケースでは、１０ｍｓ間隔の７つのコマンドが、漸進的に７０ｍｓ間隔の２つのコマンドに取って替わる。コマンドの値は、単調に難なく増加する。状態変数の変動の方向に変化が見られる図５Ｂのより複雑なケースでは、段階補間関数により、この変化を滑らかに再構築することができる。
【００４７】
コマンドフレームをベースにしたマージ変換の種々のタイプを、図６Ａ、６Ｂ、６Ｃ、及び６Ｄに示す。図６Ａの場合は、マージ処理は、全てのコマンドを考慮に入れることである。図６Ｂの場合は、所与の時間後、最も古いコマンドが消去される。図６Ｃの場合は、所与の時間の前に最も古いコマンドが消去される。図６Ｄの場合は、最も古いコマンドが完全に消去される。
【００４８】
アクチュエータによって受信されるコマンドの実行をなめらかにして不連続の発生を可能な限り回避することも有利である。このために、種々の補間アルゴリズムが可能である。図７Ａ及び図７Ｂにこのうちの２つを示す。コマンドの受信サイクルはおおよそ１０ｍｓ程度であり（現行の好適な実施形態では２０ｍｓ）、それはネットワーク又はプロセッサの負荷競合が存在しない場合は略一定であり、一方、サーボ制御サイクルは１ｍｓ程度である、ことをまず想起されたい。図７Ａの場合、期間ｔ０、ｔ１にわたって測定されたコマンドαｔの変化の速度である（α’’ｔ，＝（αｔ１−αｔ０）／（ｔ１−ｔ０））は、次のタイムスロットｔ１、ｔ２にわたり一定であるとみなされる。外挿された命令に対するサーボ制御（∀θε［ｔ１，ｔ２］，αθ＝αｔ０＋α’ｔ，＊（θ−ｔ０））は、ｔ１でコマンドβ２に到達することを可能にし、一方で、これに失敗すると、サーボ制御命令はα１からα２へ急激に変化する。命令が一定速度で維持される、又は少し加速若しくは減速する場合、補間された命令に対するこのようなサーボ制御は、先行する命令を維持するよりも効果的であり、これは差β２−α２が差α２−α１より小さいためであることが図からわかる。
【００４９】
この場合は、効果的に発生するサーボ制御がβ２からβ３へ移動する。β３は、（α１，ｔ１）と（α２，ｔ２）との間で外挿される命令に対応することに注意されたい。
【００５０】
命令が急に減速した場合この条件は満たされない。この場合、差β２−α２が差α２−α１より大きくなる。命令の傾向が実線で示されている。図７Ｂは、この第２のタイプで、大幅な減速が発生した状況を示す。これには、命令の傾向を計算するための別の方法が適用される。それは、１サイクルの遅延の影響を導入することである。γ２は１サイクルのα２の変換である。γ２は、先行する計算の結果よりもα２に近いことが図から分かる。他方で、次のサイクルでは差が逆転されるが、２つの合計は良好なままである。特定の場合には命令の傾向を調整するための特定数の挙動ルールを導入するのが有用である。そのルールとは、外挿アルゴリズムが機能しない場合、命令は不変のまま維持されること、選択された期間（例えば、２０ｍｓ、５０ｍｓのサイクルの間）にコマンドが受信されない場合、外挿は適用されず、命令は最後に到達した値で維持されること、別の選択した時間（例えば、前の場合に選択された時間の１０倍）の終わりで、ロボットが停止されること、但し、アクチュエータは決してオフとはならず、ロボット又はその関節の１つが急に落ちるのを回避するための磁気制動命令を適用することが優先されること、である。
【００５１】
上記のタイムスタンプされたコマンドのシステムの利点は多く、以下の通りである。
−  デフォルトでは、システムは、２つのコマンドを時間的に非常に接近させる必要がある場合に不連続の可能性が残っている場合でも、突然の不連続を回避する。
−  このシステムにより、単一コマンドは、２つの値の間で線形補間を得ることが可能である。これは単純な補間であるが依然として有効である（他の補間を一連の線形補間に減じることができるので、より複雑な場合にコマンドを最小限に抑えることができる）。
−  ＤＣＭ（固有のサイクルを持つ）と他のモジュールとの間で同期化の問題を回避することが可能である。これは、例えば、運動において急な動きを引き起こす命令に対応する補間をＤＣＭが算出するように、ＤＣＭに少なくとも１サイクル先んじてコマンドを与えることで十分である。
−  このシステムは、命令の精度を高めることで、優れた運動を実現する。
−  このシステムは、遅延、待ち時間、又は可変通信時間の影響を受けにくい。
−  このシステムは、複数のアクチュエータがロボット内に位置する又はロボット内に位置しない全く異なるモジュールによって制御される場合でも、そのような複数のアクチュエータを非常に簡単に同期化することができる。
【００５２】
更に、外部モジュールは、システムクロックを簡単に回復することができるので、コマンドジェネレータと同期化することができる。
【００５３】
ＤＣＭの計算負荷を軽減するために、複数のアクチュエータにアドレス指定するコマンドを、別名でグループ化することができる。
【００５４】
コンピュータ２１０内で、アクチュエータ用のコマンドの生成又は変更を直接予想することも可能である。特に、ある一定の数のイベントは、高度なコンピュータの介入を必ずしも必要としない。特定の反射的な機能（特に、ロボットのバランスの管理又は肢同士の衝突の回避）は、カード２０内で直接駆動することができる。これは、対応するアルゴリズム及びＤＣＭの一部分をカード２０に実装することで十分である。
【００５５】
特定の融通性をロボットに提供するには、容易にアクセス及び修正できるハードウェア及びソフトウェア設定を含むファイルを更に提供することが必要である。このような設定ファイルの分散を図８に示す。
【００５６】
Ｄｅｖｉｃｅ．ｘｍｌ設定ファイル（基本設定）と、ロボットの特定の部分にリンクされた複数のサブファイル（Ｄｅｖｉｃｅ＿Ｈｅａｄ．ｘｍｌ、Ｄｅｖｉｃｅ＿Ｃｈｅｓｔ．ｘｍｌ、及び必要に応じてその他のファイル）とがある。ロボットの特定の部分は交換可能である。頭部は、ボディから分離することも元に戻すことも容易にできる。ロボットの腕等の他の部分も交換可能である。この融通性は、メンテナンスの場合も（既に示したように）、ロボットを新しい任務に適応させる又はロボットに新しい個性若しくは外見を与える場合にも有用である。偶然にも、特定の実装を細かく考慮に入れるのに必須であるこれらの部分と関連付けられた較正値が存在する（関節のセンサ及びＬＥＤのセンサの較正、取り付け後特定のパラメータを調整するために行われる変更等）。したがって、最良の解決策は、これらの較正値を頭部カードファイルに格納しないことである。このカードは、頭部が交換された場合に、ボディの較正が十分でない可能性がある。完全な基本設定のデフォルト値及び未較正値だけを全てのロボットに共通のファイル（Ｄｅｖｉｃｅ．ｘｍｌ）にｋｅｙ＝ｖａｌｕｅの形式で格納することが好ましい。このファイルのキーの値は、他の２つのファイルで上書きされる。第１のファイルは頭部とリンクされ、独立したファイル（Ｄｅｖｉｃｅ＿Ｈｅａｄ．ｘｍｌ）として格納される。これには、頭部の全てのＳｕｂＤｅｖｉｃｅ（主にＬＥＤ）の較正が含まれる。胸部カードは、ロボットの全ボディと関連付けられたファイル（Ｄｅｖｉｃｅ＿Ｃｈｅｓｔ．ｘｍｌ）を格納する。
【００５７】
起動時に、胸部カード内で「フラッシュ内の胸部設定」が読み出され、ＤＣＭのＲＡＭにコピーされ、更に一時ファイルの形式で頭部の基本設定ファイルシステムにコピーされる。ＳＴＭ内のＤｅｖｉｃｅ．ｘｍｌ値は、上書きされる。
【００５８】
したがって、参照されるのは胸部カードのフラッシュメモリの内容だけである。このため、頭部交換の場合は、新しいボディの胸部カードのファイルが読み出され、考えられる問題が排除される。
【００５９】
上記の例は、本発明の実施形態を示したものである。これらの例は、以下の特許請求の範囲によって定義される本発明の範囲を制限するものではない。
【図１】
0005849345.tif 000003
【図２】
0005849345.tif 000004
【図３】
0005849345.tif 000005
【図４】
0005849345.tif 000006
【図５Ａ】
0005849345.tif 000007
【図５Ｂ】
0005849345.tif 000008
【図６Ａ】
0005849345.tif 000009
【図６Ｂ】
0005849345.tif 000010
【図６Ｃ】
0005849345.tif 000011
【図６Ｄ】
0005849345.tif 000012
【図７Ａ】
0005849345.tif 000013
【図７Ｂ】
0005849345.tif 000014
【図８】
0005849345.tif 000015