(58)【調査した分野】(Int.Cl.,DB名)
センサ及びアクチュエータの複数のサブセットを含む関節肢で動き、各サブセットがマイクロコントローラを含む複数の電子部品を搭載した電子カード(10)によって制御される移動ロボットであって、前記電子カードの少なくとも一部に対する制御機能が、少なくともそれぞれがユニークなコンピュータの1つである第1のコンピュータ(20)と第2のコンピュータ(30)との間で分散され、前記第1のコンピュータ(20)が、特に、前記第2のコンピュータ(30)によって定義された機能を実行するためのコマンドメッセージを前記電子カード(10)に伝送する処理を行い、
前記移動ロボットの特定の設定データは、前記第1のコンピュータによって管理されるメモリ内に格納され、前記設定データは特に制御対象の電子カードのリストを含み、前記センサ及びアクチュエータは前記カード及び前記センサ及びアクチュエータに関する動作パラメータによって命令され、
前記第2のコンピュータは、第1のコンピュータのプログラムを変更することなく別の同等のコンピュータと置き換え可能である
ことを特徴とする移動ロボット。
前記第1のコンピュータで移動ロボットの特定の機能がプログラムされ、前記機能は、特定のセンサ状態変数の値に基づいてアクチュエータ用のコマンドを決定することにより、ロボットの反射運動を管理することを特徴とする請求項1に記載の移動ロボット。
前記第1のコンピュータ又は前記第2のコンピュータのプログラミングを変更することなしに、前記ロボットの電子カードを同等のカードと交換できることを特徴とする請求項1に記載の移動ロボット。
前記第1のコンピュータと前記電子カードとの間の前記通信が、少なくとも1つの特定のバス上で安全なプロトコルによって管理され、前記安全なプロトコルは、前記メッセージのバイトの前に、少なくとも宛先アドレスと選択された値を持つ最上位ビットとを含むバイトを有し、前記メッセージのバイトの後に、前記メッセージのサイズを含む少なくとも1バイトとCRCを含む1バイトとを有するフレームを有することを特徴とする請求項1に記載の移動ロボット。
前記安全なプロトコルによる前記フレームの全バイトが、前記アドレスバイトの最上位ビットを補完する値の第1のバイトを有し、いずれの7バイトにおいても前記第1のバイトが、次の7バイトの7つの最上位ビットを有することを特徴とする請求項5に記載の移動ロボット。
第1のコンピュータとそれが制御する電子カードは更に、少なくとも2つの通信ラインによって接続され、前記通信ラインの1つは操作を検出するために使用され、前記通信ラインのもう1つは前記電子カードにアドレスを割り当てるために使用されることを特徴とする請求項5に記載の移動ロボット。
センサ及びアクチュエータのサブセット用の複数のコマンドステップを含む関節肢で動く移動ロボットを制御し、各サブセットがマイクロコントローラを含む複数の電子部品を搭載した電子カード(10)によって命令される方法であって、前記電子カードの少なくとも一部の制御ステップが少なくともそれぞれがユニークなコンピュータの1つである第1のコンピュータ(20)と第2のコンピュータ(30)との間で分散され、前記第1のコンピュータ(20)は、前記定義ステップが前記第2のコンピュータ(30)によって実行される機能を実行するためのコマンドメッセージを前記電子カード(10)に伝送するステップを特に処理し、
前記移動ロボットの特定の設定データは、前記第1のコンピュータによって管理されるメモリ内に格納され、前記設定データは特に制御対象の電子カードのリストを含み、前記センサ及びアクチュエータは前記カード及び前記センサ及びアクチュエータに関する動作パラメータによって命令され、
前記第2のコンピュータは、第1のコンピュータのプログラムを変更することなく別の同等のコンピュータと置き換え可能である
ことを特徴とする方法。
前記第1のコンピュータと前記電子カードとの間の前記通信が、少なくとも1つの特定のバス上で安全なプロトコルによって管理され、前記安全なプロトコルは、前記メッセージのバイトの前に、少なくとも宛先アドレスと選択された値を持つ最上位ビットとを含むバイトを有し、前記メッセージのバイトの後に、前記メッセージのサイズを含む少なくとも1バイトとCRCを含む1バイトとを持つフレームを有すると共に、前記安全なプロトコルによる前記フレームの全バイトが、前記アドレスバイトの最上位ビットを補完する値の第1のバイトを有し、いずれの7バイトにおいても前記第1のバイトが、次の7バイトの7つの最上位ビットを有することを特徴とする請求項9に記載の移動ロボットを制御するための方法。
前記実行日付を含むコマンドのコマンド値が、該コマンドの実行日付の直前の実行日付を含むコマンドのコマンド値と該コマンドの実行日付の直後の実行日付を含むコマンドのコマンド値との補間により算出されることを特徴とする請求項12に記載の移動ロボットを制御するための方法。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明では、上記の問題を解決するために、少なくとも3つのレベルを有する制御コマンドアーキテクチャ(少なくとも1つのマイクロコントローラを備えた電子カードを介してセンサ/アクチュエータに指令を出すレベル、コマンドを変換し、該カード及び直接駆動型の基本機能に伝送するレベル、及びロボットの人工知能を含む上位機能を生成するレベル)を提供する。
【課題を解決するための手段】
【0004】
したがって、本発明では、センサ及びアクチュエータの複数のサブセットを含む関節肢で動き、各サブセットが電子カードによって制御される移動ロボットであって、電子カードの少なくとも一部に対する制御機能が、少なくとも第1のコンピュータと第2のコンピュータとの間で分散され、第1のコンピュータが、特に、第2のコンピュータによって定義された機能を実行するためのコマンドメッセージを電子カードに伝送する処理を行うことを特徴とする移動ロボットを開示する。
【0005】
有利には、第1のコンピュータで移動ロボットの特定の機能がプログラムされ、この機能は、特定のセンサ状態変数の値に基づいてアクチュエータ用のコマンドを決定することにより、ロボットの反射運動を管理する。
【0006】
有利には、移動ロボットの特定の設定データは、第1のコンピュータによって管理されるメモリ内に格納され、該設定データは特に制御対象の電子カードのリストを含み、センサ及びアクチュエータは電子カード及びセンサ及びアクチュエータに関する動作パラメータによって命令される。
【0007】
有利には、第1のコンピュータが、ロボットの電子カードの少なくとも一部の初期化手順を管理する。
【0008】
有利には、第1のコンピュータ又は第2のコンピュータのプログラミングを変更することなしに、ロボットの電子カードを同等のカードと交換できる。
【0009】
有利には、第2のコンピュータは、第1のコンピュータのプログラムを変更することなく別の同等のコンピュータと置き換え可能である。
【0010】
有利には、第1のコンピュータと電子カードとの間の通信が、少なくとも1つの特定のバス上で安全なプロトコルによって管理され、安全なプロトコルは、メッセージのバイトの前に、少なくとも宛先アドレスと選択された値を持つ最上位ビットとを含むバイトを有し、メッセージのバイトの後に、メッセージのサイズを含む少なくとも1バイトとCRCを含む1バイトとを持つフレームを有する。
【0011】
有利には、安全なプロトコルによるフレームの全バイトが、アドレスバイトの最上位ビットを補完する値の第1のバイトを有し、いずれの7バイトにおいても第1のバイトが、次の7バイトの7つの最上位ビットを有する。有利には、安全なプロトコルが同時放送通信モードを含む。
【0012】
有利には、第1のコンピュータとそれが制御する電子カードは更に、少なくとも2つの通信ラインによって接続され、通信ラインの1つは操作を検出するために使用され、通信ラインのもう1つは電子カードにアドレスを割り当てるために使用される。
【0013】
本発明では、センサ及びアクチュエータのサブセット用の複数のコマンドステップを含む関節肢で動く移動ロボットを制御し、各サブセットが電子カードによって命令される方法であって、電子カードの少なくとも一部の制御ステップが少なくとも第1のコンピュータと第2のコンピュータとの間で分散され、第1のコンピュータは、定義ステップが第2のコンピュータによって実行される機能を実行するためのコマンドメッセージを電子カードに伝送するステップを特に処理することを特徴とする方法を開示する。
【0014】
有利には、第1のコンピュータと電子カードとの間の通信は、少なくとも1つの特定のバス上で安全なプロトコルによって管理され、安全なプロトコルは、メッセージのバイトの前に、少なくとも宛先アドレスと選択された値を持つ最上位ビットとを含むバイトを有し、メッセージのバイトの後に、メッセージのサイズを含む少なくとも1バイトとCRCを含む1バイトとを持つフレームを有すると共に、安全なプロトコルによるフレームの全バイトが、アドレスバイトの最上位ビットを補完する値の第1のバイトを有し、いずれの7バイトにおいても第1のバイトが、次の7バイトの7つの最上位ビットを有する。
【0015】
有利には、コマンドメッセージは、実質的に固定された周期で電子カードに伝送され、該周期の長さは約10ミリ秒である。
【0016】
有利には、第2のコンピュータによって生成されるコマンドメッセージは、コマンドごとに少なくとも1つの実行日付を含む。
【0017】
有利には、タイムスタンプされたコマンド値が、直前の値と直後の値との間の周期的な送信日付での補間により算出される。
【0018】
有利には、電子カードによって実行される、第1のコマンドと第2のコマンドとの間のサーボ制御命令は、第1のコマンドに先行するコマンドと第1のコマンドとの間のコマンド速度変動を拡張することにより先行するコマンドから外挿される。
【0019】
有利には、電子カードによって実行される、第1のコマンドと第2のコマンドとの間のサーボ制御命令は、第1のコマンドに先行するコマンドと第1のコマンドとの間のコマンド速度変動を第1のコマンドと第2のコマンドとの間で適用されるサーボ制御命令に変換することにより、先行するコマンドから外挿される。
【0020】
本アーキテクチャは、ロボットの使用プロファイルに適したロボットの挙動の生成を処理する人工知能タスクのための最上位レベルユニットの計算パワーの大部分を解放する利点を提供する。本アーキテクチャは、また、レベルによって最適化された、様々なバス上にある種々のコンピュータ間での通信を管理すること、及び最適化済みの通信プロトコルを提供することを可能にする。更に、このアーキテクチャでは、追加の利点として、ロボットのコアを再設定することなしにロボットの一部を変更することができる。本アーキテクチャはまた、リモートマシンから、又は同期リンクを介して第1のロボットと通信する別のロボットから人間型ロボットの多くの関節へ伝送される可能性がある命令の実行を同期化するために必要なタイムスタンプされたコマンドの使用にも適している。
【0021】
本発明は、添付の図面を参照しながら以下に示す複数の例示的な実施形態の説明を読めば、本発明について並びに本発明の種々の特徴及び利点についてよく理解することができる。
【発明を実施するための形態】
【0023】
以下の説明の中で出てくる略語及び頭字語の意味は、特定の文脈内で異なる意味が明示的に示されない限り、下表の通りである。
【0025】
図1は、本発明の実施形態における人間型ロボットの物理的なアーキテクチャを示す。このロボットは、センサ120及び関節を駆動するアクチュエータ130を制御するために、タイプ10の電子カードを約2ダース備えている。図示したカード10は、左足を制御するものである。このアーキテクチャの長所の1つは、関節を制御するカードがほとんどの場合、交換可能なことである。関節は、通常、少なくとも2つの自由度を有し、従って2つのモータを備える。各モータは角度方向に駆動される。関節はまた、位置センサ、特にMRE(磁気ロータリエンコーダ)を複数含む。制御電子カードは、市場標準のマイクロコントローラ110を含む。例えば、Microchip社によって製造されたDSPIC
TMが挙げられる。これは、DSPと結合される16ビットMCUである。このMCUのループサーボ制御サイクルは1msである。ロボットは他のタイプのアクチュエータ、特にLED140(発光ダイオード)も備え得る。LED140の色と強度はロボットの感情を表すことができる。アクチュエータは、他のタイプの位置センサを含んでもよく、特に、慣性ユニット、FSR(足の下の圧力センサ)等がある。
【0026】
頭部にはロボットの知能、特にカード30が含まれている。このカード30は、ロボットに割り当てられた任務をロボットが完遂できるように高度な機能を実行する。但し、カード30は、ロボットの他の場所、例えば胴体に配置される場合もある。但し、この場所を利用すれば、頭部の取り外しが可能である場合に、これらの上位レベル機能の置き換えが可能であり、従って、特にロボットの知能、ひいてはロボットの任務を迅速且つ完全に変更したり、逆に、同じ人工知能を維持したままボディを別のボディと交換したり(例えば、欠陥があるボディと欠陥のないボディとの交換)することも可能であることが分かる。頭部はまた、専用のカード、特に発話又は視覚処理に専用のカードを含むこともできる。カード30のプロセッサ310は、市場標準のx86プロセッサとすることができる。AMD社によって製造されたGeode
TM(32ビット、500MHz)等の低消費プロセッサを選択することが優先される。カードはまた、一連のRAMとフラッシュメモリも含む。このカードはまた、ロボットと外部(挙動サーバ、他のロボット等)との間の通信を管理し、通常は、WiFi又はWiMax伝送レイヤ上でそれを行うが、おそらくVPNにカプセル化される標準プロトコルを使用した公衆移動体データ通信ネットワーク上で行う場合もある。プロセッサ310は、通常の高水準言語(C、C++、Python、Ruby等)又はURBI(ロボット工学を専門とするプログラミング言語)等の人工知能に専用の言語を使用して高度な機能をプログラミングすることを可能にする標準的なOSで駆動されるのが一般的である。
【0027】
カード20はロボットの胴体に収納される。その場所には、本発明に従い、カード30によって計算された命令をカード10に伝送する処理を行うコンピュータが配置されている。このカードは、ロボット内のどこか他の場所に収容することも可能である。但し、胴体内の場所が有利である。そうした場合、頭部及び4つの肢の交点の近くにカードが配置され、それによってこのカード30をカード20及びカード10に結合するコネクタを最小限に抑えることができるからである。このカード20のコンピュータ210も、市場標準のプロセッサである。このプロセッサは、有利には、ARM 7
TMタイプの32ビットプロセッサ(クロック速度60MHz)とすることができる。プロセッサのタイプ、プロセッサが配置される中央位置(オン/オフボタンの近く)、及び電源の制御とのリンクから見ても、これはロボットの電源の管理(スタンバイモード、緊急停止等)に適したツールとなっている。このカードもRAM及びフラッシュメモリを一式備えている。
【0028】
本発明に係るこの3レベルのアーキテクチャには、マイクロコントローラ110及び210を再プログラミングする機能がマザーボード内に提供されている。
【0029】
図2はコンピュータ210の主要な機能を示す。コンピュータ210は、コンピュータ310で生成された命令を、センサ120とアクチュエータ(例えばモータ130及び場合によってはLED140)を含むカード10に伝送する処理を行う。一部の命令は、カード20を経由しないで特定のカードに直接伝送され得る。特に、モータを持たない、頭部に位置するカードの場合(顔面のLED、タッチの検出、耳のLEDの制御を行う)がそうである。このようなカードとカード30との間のリンクは、それを使用する信号フレームに対して効果的なI2Cバスで実現するのが有利である。カード20は、USBバスを介してカード30にリンクされる。USBバスは、この機能に対して十分な信頼性と速度を提供し、プロセッサ30における電力も非常に少なくて済む。更に、このUSBリンクを使用すれば、一実施形態でカード30を含む頭部を取り外すと、演算アーキテクチャの他の要素を、開発やテストを目的として外部コンピュータに直接接続することが可能である。
【0030】
この用途に適したUSBプロトコルを以下に簡単に説明する。メッセージの構造は従来どおりである。ヘッダは、固定された第1のバイト、第2のタイプバイト、アドレスバイト、メッセージ長バイト、メッセージのバイト(最大128バイト)、及び2つの固定されたメッセージ終了バイトを含み、メッセージ終了バイトの1バイト目は、第1のヘッダバイトと同じである。第1のヘッダバイトと等しいメッセージのバイトは、受信部を二極化するために体系的に複製される。使用されるプロトコルの一つの具体的な機能は、読み出し及び書き込み時に肯定及び否定受信確認応答(ACK及びNACK)を管理することである。両方の場合とも、動作が正常終了した場合(ACK)、メッセージの「データ」フィールドには、読み出し又は書き込みされたデータが含まれる。動作が異常終了した場合(NACK)、「データ」フィールドには特定のシーケンスが含まれる。
【0031】
カード20は、上肢と下肢に位置するカード10と、2つのリンク(例えば、RS485タイプの)を介して通信する。各RS485リンクは、全てのカード10とカード20とがリンクされたデバッグラインと、各メンバーに対する連鎖ライン(カード20を起点として、肢の第1のカード10から次のカードへと延びる)とによって補完される。これらのラインの機能については、説明の中で後述する。
【0032】
RS485リンクは、産業環境で広範囲にわたって使用されており、干渉の影響を受けにくいので人間型ロボットのコマンド及び制御用に適している。更に、RS485リンクのデータレートは、双方向で大量の情報をやりとりするのに必要とされる46600バイト/秒を超えている。但し、この場合、メッセージフレームがリンクを介して連続的に送信され、メッセージの復号化を難しくしているという問題点がある。したがって、フレームから種々のメッセージを取り出すことが可能な安全な通信プロトコルを使用する必要がある。一つの可能なプロトコルを以下に説明する。このプロトコルは主に、各バイトの第1ビットをゼロに設定することと、7バイトの前に次の7バイトの最上位ビットを有するバイトを挿入することを含む。更に、メッセージヘッダは、6ビット(宛先アドレス)と、1ビット(読み出し又は書き込みのいずれが実行されるのかを示す)と、最上位ビット(体系的に1となる)とを含むバイトで構成される。メッセージの先頭は、アドレスに加えて2つのバイト(第1のバイトは、メッセージのサイズの符号化、第2のバイトはメッセージのタイプ)と、全てのメッセージに関係するCRCから成る、メッセージの最終バイトとを含む。メッセージのタイプは、関節の角度、関節の粘性、リセット、LED、デバイスの設定、種々の再プログラムコマンド等となり得る。メッセージが有効になるためには、次の基準に従っていなければならない。即ち、第1のMSBが1、他方が0、アドレス、メッセージタイプ、サイズ、及びCRCが正しいこと。このプロトコルの管理負荷は、送信及び受信の両方においてかなり軽い。メッセージのサイズは固定であり、これにより通信の時間管理が相当にやりやすくなる。
【0033】
チェックコードと関連する負荷を軽くするために、ブロードキャスト機能(実際にはほとんどの場合が同時放送機能)、すなわち様々なアドレスへの同時伝送が広く使用されている。この場合、第1の宛先アドレスはゼロに設定される。メッセージの一部に対応する宛先カードは、BID(Broadcast ID)で識別され、これにより各カードは、該当するメッセージの部分を取り出すことができる。この実施形態では、特に、アクチュエータに、関節が到達すべき位置等のコマンドを送信することができる。
【0034】
モータカードの読み取りの場合、プロトコルは若干異なる。マスターは、まず1バイト(MSBが常に1で)を、次に、要求されるバイト数を示す7ビットを、更にこれらの2バイトに対する7ビットのCRCを送信する。CRCが正しい場合に限り、アドレスによって指定されたカードが応答する。更にカードは、MSBが常に0の場合に要求されたバイト数で応答する。モータカード上で読み出されるデータは、要求される長さによって異なるが、開始点は常に同じである。最も有用で最も頻繁に読み出されるデータは、読み出し領域の先頭に配置される。これらのデータは、関節、電流、エラー、及び温度のセンサの位置である。胸部カード20のレベルでは、バイトカウントは存在しない。マージンを持つ応答バイトの送信時間に対応するタイムアウトが存在するのみである。タイムアウト後、カードは該当するバイトを受信済みの場合もあればそうでない場合もある。このため、カードで障害が発生した場合にロボットのリセット動作を中断させないようにすることが可能である。
【0035】
デバッグリンク及び連鎖リンクは、ロボットが初期化されるときに使用され、その管理もカード20で行われる。これはカード20のもう一つの重要な機能である。カード20は、オンボタンによって制御され、最初に初期化される。次に、カード10及びカード30が起動する。カード10は、デバッグラインを介して、ビットを0で送信する。カード20はそれらのカードに連鎖ラインを介してコマンドを返す。これによりこのステータスビットは1に変更される。アドレスの割り当ては、各連鎖ライン上のカードごとに段階的に1つのユニットによってインクリメンタルに肢の最後のカードに至るまで行われる。したがって、割り当てられたアドレスは、チェーン内におけるカード10の位置であり、これにより、複数のカード10が同じものである場合に、それらの間で「物理的な」区別がなされる。リセットの場合、全ての連鎖が再実行される。デバッグラインと連鎖ラインは、例えば、One Wireプロトコルを使用するラインであり、0のビット(パルスのロー状態の期間が50μs程度)と1のビット(パルスのロー状態の期間が250μs程度)を符号化する方形波チェーンを循環させるラインである。
【0036】
図3は、本発明に係る人間型ロボットの論理的なアーキテクチャを示す。
【0037】
ロボットはカード管理モジュール(DCM)を備えている。このモジュールは、主としてカード30に挿入可能であるが、少なくとも部分的にはカード20にも挿入可能である。DCMプログラムを起動するには、各カード10(例えば、モータカード)内部の設定バッファを読み取る。この段階でのバッファは、カード内部の目印情報(ブートローダのバージョン(スタータファイル、プログラム、及びカードの場合は自動ローダ)、チェーンによって取得されたカードのアドレス)しか含んでいない。バッファは、DCMにおいてあらゆる設定値(BID、チェーン内のMREの番号と位置、モータの番号と位置、関節サーボ制御係数、LEDの存在、又はFSRの存在等)により補完される。バッファの内容がカード10に再度送信される。カード10の設定パラメータの更新が、有利には、カードのフラッシュメモリの更新に取って替わる。カード10で読み出されたデータは、RAMに保持される、ロボット内部のデータベース(STM)に格納される。ロボットの論理的なアーキテクチャは、マスター周辺デバイス(以降、説明の中ではDeviceと称する)(実質的に、ロボットの電子カード10のMCU 110)のタイプとデバイスにリンクされたスレーブ周辺デバイス(SubDeviceと称する)(センサ120又はアクチュエータ130、140)のタイプに分かれる。Deviceは、一連のカード20、30に対してはスレーブとなる。Deviceは、タイプ、バス(頭部又は胸部I2C、アップ又はダウンRS485)、及びこのバスのアドレスによって特徴付けられる。SubDeviceは、センサかアクチュエータかを定義するタイプ(モータ、LED、FSR等)、付属Device、及びSubDevice番号によって特徴付けられる。
【0038】
関節の位置は、センサSubDevice(センサによって返された角度情報に対応)と、これとは独立したアクチュエータSubDevice(到達すべき要求された位置に対応)に対応することに注意されたい。
【0039】
例えば、モータカードは、好ましくは、2つのモータSubDevice(アクチュエータ)、2つのセンサ位置SubDevice(センサ)、2つの電流SubDevice(センサ)等を含む。顔面カードは、多数のLED SubDevice(アクチュエータ)(一実施形態では48個)を含むことができる。
【0040】
SubDeviceもまた、主状態変数の浮動小数点値(位置センサにおける関節の角度位置、電流センサにおける電流測定値、LEDアクチュエータのLEDの値等)によって、及び主変数から導出される変数値(利得、オフセット、最小値及び最大値、確認応答(ACK)又は否定受信確認応答(NACK)、ERROR-MC-1064PCT-問題がある場合は0とは異なる)によって特徴づけられる。Deviceは、主変数値は持たないが、ACK/NACK/ERRORタイプのカウンタ値を持っている。他の値は、Device又はSubDeviceのタイプに特有の値である(例えば、モータアクチュエータ上のサーボ制御係数)。これらの値は全て自動的に更新され、上位レベルのアプリケーションによりSTMで確認することができる。
【0041】
ACK及びNACKカウンタは、Device/SubDeviceで通信が成功するたびに、又は通信エラーが発生するたびにインクリメントされる。これらのカウンタでは、カードへのアクセスの問題を検出し、その頻度を算出することが可能である。
【0042】
このDevice/SubDeviceアーキテクチャは、ロボットごとに設定ファイル内に記述される。この設定ファイルはデフォルト(標準的な設定)ではカード30に存在し、容易に変更することができるが、特定の値はカード20のフラッシュメモリ内にも格納される。これは、カード20の別の重要な機能であり、ロボットの上位レベルと下位レベルとの間の独立性を保護することを可能にする。DCM自体は、ロボットの電子アーキテクチャに関する「ハードな」情報を何ら持たない。センサ及びアクチュエータへのアクセスは、SubDevice/valueの名前を持つ「キー」によって取得される。上位レベルの場合は、足のLED(胸部カードのUSBを介してモータカード上のRS485モードで管理される)、胸部のLED(USBリクエストを介して胸部カードによって管理される)、顔面部のLED(I2Cリクエストを介して顔面部カードによって管理される)の間に差異はない。
【0043】
好適な実施形態では、DCMは10〜20msの内部サイクルで動作する。センサ及びアクチュエータの大部分は、各サイクルで体系的に更新/読み出しされる。これは、一定の負荷で動作させること、通信を最適化すること、通信エラーを重大なものにはしない(20ms継続するだけ)ことを可能にする。更に、大部分のセンサについて、リクエストベースの更新よりもシステマティックな更新を優先させることによって、ロボットの全ての上位レベルモジュールに関する最新の情報の即時の可用性を保証する。カード20は、DCMで生成され、USBプロトコルで伝送されたコマンドを、RS485プロトコルへ変換する処理をする。また、カード20のメモリの1つを、これらのコマンドのバッファメモリとして使用することにより、以下に示すようにコマンド間で補間演算を実行することができる。
【0044】
本発明に係るアーキテクチャの動作例として、
図4は、ロボットが、進行方向θに沿って速度d’で距離dを進むための一連のコマンドの生成及び伝送を示している。プロセッサ30は、ロボットの関節A1、A2、A3のモータに適用されるコマンドを生成して、命令d、d’、θを実行する。各関節については、到達すべき角度の形式で1つ又は複数のコマンドが存在する。本発明の好適な実施形態では、全てのコマンドを実行するために、実行の絶対時間が算出される。この非決定性プロセッサ及びバスアーキテクチャにおいては、ロボットのカード間の通信も外部からの通信も、実行対象の命令に対する入力としてのパラメータを提供することができなくても、命令実行の場所への移動時間、ひいては特定の到着時間及び実行時間を保証することができる。コマンドのタイムスタンプにより、このコンテキストでは比較的簡単な方法で同期化を確実に行うことができる。例えば、プロセッサ30のシステム時間を使用することが可能である。DCMは、設定情報及び既知のシステムステータスに基づいて、一連の将来{α
i,t}における一連の瞬間iでのアクチュエータA
iの応力変数α(角度コマンド)の一連の値を生成する。値aの計算及び伝送が可能な期間Tは、DCM専用RAMのメモリ容量に特に左右される。DCMは独自のサイクルを持っているので(前記した10〜20ms)、フレームが伝送された時点で実際のコマンドを生成する必要がある。全てのコマンドが連続的な状態変数(関節モータの回転を特徴づける角度やLEDの発光等)を持つアクチュエータに適用される場合、この生成を瞬間tで適用するには、コマンドα
it1及びα
jt2(それぞれ、tの直前及びtの直後のコマンド)を検索し、このような2つの値の間で線形補間(t
1、t
2、及びtの間で経過した時間によって重み付けされる)を実行する。
【0045】
新しいコマンドを送信する場合、同一のアクチュエータに関連する2つの数列{α
t}をマージすることも可能である(DCMのRAM内にあるもの、外部モジュールから新規に送信されたもの)。補間の前にこの動作が実行される。補間の結果は、USBフレーム内でカプセル化され、カード30からカード20に伝送される。変形例として、数列{α
i,t}を伝送し、カード20で変換を実行することもできる。両方の場合とも、プロセッサ210は、USBプロトコルを排除し、前述した安全なプロトコルに従ってRS485フレーム内にカプセル化する。コマンドの実行を必要とするSubDevice A
iを含むDeviceのアドレスを符号化することにより、同時放送モードに優先権が与えられる。フレームは、RS485バスを介して、コマンドの実行を必要とするSubDevice A
iを制御するDeviceへ同時に伝送される。フレーム制御手順では、伝送されるメッセージの完全性をチェックすることができる。実行対象の第1のコマンドと前に実行された最後のコマンドとの間で、Deviceにおいて補間を実行し、関節の動きを滑らかにする。
【0046】
図5A及び
図5Bに、伝送に適用される線形補間に基づく変換を示す。
図5Aの簡単なケースでは、10ms間隔の7つのコマンドが、漸進的に70ms間隔の2つのコマンドに取って替わる。コマンドの値は、単調に難なく増加する。状態変数の変動の方向に変化が見られる
図5Bのより複雑なケースでは、段階補間関数により、この変化を滑らかに再構築することができる。
【0047】
コマンドフレームをベースにしたマージ変換の種々のタイプを、
図6A、6B、6C、及び6Dに示す。
図6Aの場合は、マージ処理は、全てのコマンドを考慮に入れることである。
図6Bの場合は、所与の時間後、最も古いコマンドが消去される。
図6Cの場合は、所与の時間の前に最も古いコマンドが消去される。
図6Dの場合は、最も古いコマンドが完全に消去される。
【0048】
アクチュエータによって受信されるコマンドの実行をなめらかにして不連続の発生を可能な限り回避することも有利である。このために、種々の補間アルゴリズムが可能である。
図7A及び
図7Bにこのうちの2つを示す。コマンドの受信サイクルはおおよそ10ms程度であり(現行の好適な実施形態では20ms)、それはネットワーク又はプロセッサの負荷競合が存在しない場合は略一定であり、一方、サーボ制御サイクルは1ms程度である、ことをまず想起されたい。
図7Aの場合、期間t
0、t
1にわたって測定されたコマンドα
tの変化の速度である(α’’
t,=(α
t1−α
t0)/(t
1−t
0))は、次のタイムスロットt
1、t
2にわたり一定であるとみなされる。外挿された命令に対するサーボ制御(∀θε[t
1,t
2],α
θ=α
t0+α’
t,
*(θ−t0))は、t
1でコマンドβ
2に到達することを可能にし、一方で、これに失敗すると、サーボ制御命令はα
1からα
2へ急激に変化する。命令が一定速度で維持される、又は少し加速若しくは減速する場合、補間された命令に対するこのようなサーボ制御は、先行する命令を維持するよりも効果的であり、これは差β
2−α
2が差α
2−α
1より小さいためであることが図からわかる。
【0049】
この場合は、効果的に発生するサーボ制御がβ
2からβ
3へ移動する。β
3は、(α
1,t
1)と(α
2,t
2)との間で外挿される命令に対応することに注意されたい。
【0050】
命令が急に減速した場合この条件は満たされない。この場合、差β
2−α
2が差α
2−α
1より大きくなる。命令の傾向が実線で示されている。
図7Bは、この第2のタイプで、大幅な減速が発生した状況を示す。これには、命令の傾向を計算するための別の方法が適用される。それは、1サイクルの遅延の影響を導入することである。γ
2は1サイクルのα
2の変換である。γ
2は、先行する計算の結果よりもα
2に近いことが図から分かる。他方で、次のサイクルでは差が逆転されるが、2つの合計は良好なままである。特定の場合には命令の傾向を調整するための特定数の挙動ルールを導入するのが有用である。そのルールとは、外挿アルゴリズムが機能しない場合、命令は不変のまま維持されること、選択された期間(例えば、20ms、50msのサイクルの間)にコマンドが受信されない場合、外挿は適用されず、命令は最後に到達した値で維持されること、別の選択した時間(例えば、前の場合に選択された時間の10倍)の終わりで、ロボットが停止されること、但し、アクチュエータは決してオフとはならず、ロボット又はその関節の1つが急に落ちるのを回避するための磁気制動命令を適用することが優先されること、である。
【0051】
上記のタイムスタンプされたコマンドのシステムの利点は多く、以下の通りである。
− デフォルトでは、システムは、2つのコマンドを時間的に非常に接近させる必要がある場合に不連続の可能性が残っている場合でも、突然の不連続を回避する。
− このシステムにより、単一コマンドは、2つの値の間で線形補間を得ることが可能である。これは単純な補間であるが依然として有効である(他の補間を一連の線形補間に減じることができるので、より複雑な場合にコマンドを最小限に抑えることができる)。
− DCM(固有のサイクルを持つ)と他のモジュールとの間で同期化の問題を回避することが可能である。これは、例えば、運動において急な動きを引き起こす命令に対応する補間をDCMが算出するように、DCMに少なくとも1サイクル先んじてコマンドを与えることで十分である。
− このシステムは、命令の精度を高めることで、優れた運動を実現する。
− このシステムは、遅延、待ち時間、又は可変通信時間の影響を受けにくい。
− このシステムは、複数のアクチュエータがロボット内に位置する又はロボット内に位置しない全く異なるモジュールによって制御される場合でも、そのような複数のアクチュエータを非常に簡単に同期化することができる。
【0052】
更に、外部モジュールは、システムクロックを簡単に回復することができるので、コマンドジェネレータと同期化することができる。
【0053】
DCMの計算負荷を軽減するために、複数のアクチュエータにアドレス指定するコマンドを、別名でグループ化することができる。
【0054】
コンピュータ210内で、アクチュエータ用のコマンドの生成又は変更を直接予想することも可能である。特に、ある一定の数のイベントは、高度なコンピュータの介入を必ずしも必要としない。特定の反射的な機能(特に、ロボットのバランスの管理又は肢同士の衝突の回避)は、カード20内で直接駆動することができる。これは、対応するアルゴリズム及びDCMの一部分をカード20に実装することで十分である。
【0055】
特定の融通性をロボットに提供するには、容易にアクセス及び修正できるハードウェア及びソフトウェア設定を含むファイルを更に提供することが必要である。このような設定ファイルの分散を
図8に示す。
【0056】
Device.xml設定ファイル(基本設定)と、ロボットの特定の部分にリンクされた複数のサブファイル(Device_Head.xml、Device_Chest.xml、及び必要に応じてその他のファイル)とがある。ロボットの特定の部分は交換可能である。頭部は、ボディから分離することも元に戻すことも容易にできる。ロボットの腕等の他の部分も交換可能である。この融通性は、メンテナンスの場合も(既に示したように)、ロボットを新しい任務に適応させる又はロボットに新しい個性若しくは外見を与える場合にも有用である。偶然にも、特定の実装を細かく考慮に入れるのに必須であるこれらの部分と関連付けられた較正値が存在する(関節のセンサ及びLEDのセンサの較正、取り付け後特定のパラメータを調整するために行われる変更等)。したがって、最良の解決策は、これらの較正値を頭部カードファイルに格納しないことである。このカードは、頭部が交換された場合に、ボディの較正が十分でない可能性がある。完全な基本設定のデフォルト値及び未較正値だけを全てのロボットに共通のファイル(Device.xml)にkey=valueの形式で格納することが好ましい。このファイルのキーの値は、他の2つのファイルで上書きされる。第1のファイルは頭部とリンクされ、独立したファイル(Device_Head.xml)として格納される。これには、頭部の全てのSubDevice(主にLED)の較正が含まれる。胸部カードは、ロボットの全ボディと関連付けられたファイル(Device_Chest.xml)を格納する。
【0057】
起動時に、胸部カード内で「フラッシュ内の胸部設定」が読み出され、DCMのRAMにコピーされ、更に一時ファイルの形式で頭部の基本設定ファイルシステムにコピーされる。STM内のDevice.xml値は、上書きされる。
【0058】
したがって、参照されるのは胸部カードのフラッシュメモリの内容だけである。このため、頭部交換の場合は、新しいボディの胸部カードのファイルが読み出され、考えられる問題が排除される。
【0059】
上記の例は、本発明の実施形態を示したものである。これらの例は、以下の特許請求の範囲によって定義される本発明の範囲を制限するものではない。