(57)【特許請求の範囲】
【請求項１】
複数のアクチュエータの少なくとも１つを使用して各々が可動できる複数のロボット関節を含む複数の統合システム構成要素を有し、該統合システム構成要素の対応する１つにおいてフィードバックデータを測定するように調整された複数のセンサを含むロボットと、
多重高速通信ネットワークに渡って、制御データを通信させることにより、前記統合システム構成要素を制御するように調整された分散コントローラと、
を備えたロボットシステムであって、
前記制御データは、リンクされたイベントの階層を有するパラメータ化された動作シーケンスに従って前記統合システム構成要素を制御するように構成されたデータであり、
前記分散コントローラは、
前記制御データに従って、前記ロボットによる自動タスクの実行を指令する制御信号を送信するように動作可能なコマンドレベルコントローラと、
複数の多重組込み低レベルコントローラであって、各々の多重組込み低レベルコントローラは、前記複数の統合システム構成要素のうち対応する統合システム構成要素のフィードバックデータに基づいて、前記対応する統合システム構成要素を直接的に制御するように調整されている、前記複数の多重組込み低レベルコントローラと、
前記コマンドレベルコントローラから送信された前記制御信号に応じて、前記多重組込み低レベルコントローラの各々を制御することによって前記統合システム構成要素を協働制御するように調整された関節協働レベルコントローラと、
制御データ及びフィードバックデータの全てを中央集中化するように調整された中央データライブラリ（ＣＤＬ）と、
前記ＣＤＬと電気的に通信可能であり、前記ＣＤＬからの情報を使用して、ロボット関節、アクチュエータ、及びセンサの各々の状態を表示するように調整されたユーザーインターフェースと、
を含み、
前記分散コントローラは、前記ユーザーインターフェースを介して、リンクされたイベントの階層と共にパラメータ化された動作シーケンスを表示し、前記イベントの一つの階層には、前記ロボット関節の直接的な制御が含まれており、
前記ユーザーインターフェースにより、ユーザーが、前記ユーザーインターフェースを介して前記パラメータ化された動作シーケンスを修正し、リアルタイムで前記制御データを直接的に変更でき、これによって前記動作シーケンスのパラメータ、順番及び接続と、各種イベント間の接続と、イベントの各種階層間の接続とを、前記表示上において変更することが可能となる、ことを特徴とするロボットシステム。
【請求項２】
前記ユーザーインターフェースは、前記ＣＤＬに格納される制御データを生成するグラフィカルエディタ機器を備え、前記グラフィカルエディタ機器により、制御データの内容が、ユーザーによりランタイムに直接的に修正できることを特徴とする請求項１に記載のロボットシステム。
【請求項３】
前記グラフィカルエディタ機器は、ＡＰＩマークアップランゲージファイル（ＡＭＬ）の形式で、前記制御データを生成するように調整されていることを特徴とする請求項２に記載のロボットシステム。
【請求項４】
前記多重高速通信ネットワークに接続された多重通信ノードを更に備え、前記ロボットシステムは、前記多重通信ノード間の自動ハンドシェイク、前記多重通信ノード間で送信されるメッセージの認証、及び、前記多重通信ノードの各々のための障害回復、のうちの少なくとも１つを提供するように構成されていることを特徴とする請求項１に記載のロボットシステム。
【請求項５】
前記ロボットシステムは、多重通信ノードを有し、前記ロボットシステムは、所定のフレームワークを利用し、それにより前記多重通信ノードが、前記多重高速通信ネットワークを介してデータを送受信できることを特徴とする請求項１に記載のロボットシステム。
【請求項６】
前記コントローラは、グラフィカルフローチャートアルゴリズムを含み、前記パラメータ化された動作シーケンスは、前記グラフィカルフローチャートアルゴリズムを使用して生成された一連のリンクコマンドブロックとして図で表示されることを特徴とする請求項１に記載のロボットシステム。
【請求項７】
前記ロボットは、ロボット関節の少なくともいくつかを、直交空間及び関節空間のうちの少なくとも一方における一連の点に沿って手動で順に動かし、それらの点の各々を、前記コマンドブロックのうちの対応する１つの一部として記録することにより、新たなパラメータ化された動作シーケンスを学ぶように構成されていることを特徴とする請求項６に記載のロボットシステム。
【請求項８】
制御データを介してロボットの動きを制御するように調整され、複数のロボット関節と、アクチュエータと、前記ロボット関節のうちの対応する１つでのフィードバックデータを判定するように調整された複数のセンサと、を有する分散コントローラであって、
前記制御データは、リンクされたイベントの階層を有するパラメータ化された動作シーケンスに従って前記ロボット関節を制御するように構成されたデータであり、
前記分散コントローラは、
複数の高速通信ネットワークと、
制御される前記ロボット関節のうちの対応する１つに近接して前記ロボット内に各々が組み込まれた複数の関節レベルのコントローラであって、該複数の関節レベルのコントローラの各々は、前記ロボット関節のうちの対応する１つからのフィードバックデータに基づいて、前記ロボット関節のうちの対応する１つを直接的に制御するように調整されている、前記複数の関節レベルのコントローラと、
前記関節レベルのコントローラの各々との直接通信を介して、前記ロボット関節の動きを協働させるように前記関節レベルのコントローラの各々を制御するため調整された関節協働レベルのコントローラと、
前記制御データに従って、前記関節協働レベルのコントローラに、タスクの実行を指令する信号を送信するように調整されたコマンドレベルのコントローラと、
前記制御データ及びフィードバックデータの全てを集中化するように調整された中央データライブラリ（ＣＤＬ）と、
前記ＣＤＬと電気的に通信可能であり、前記ＣＤＬからの情報を使用して、前記ロボット関節、アクチュエータ、及びセンサの各々の状態を表示するように調整されたユーザーインターフェースと、
を備え、
前記分散コントローラは、前記ユーザーインターフェースを介して、リンクされたイベントの階層と共にパラメータ化された動作シーケンスを表示し、前記イベントの一つの階層には、前記ロボット関節の直接的な制御が含まれており、
前記ユーザーインターフェースにより、ユーザーが、前記ユーザーインターフェースを介して前記パラメータ化された動作シーケンスを修正し、リアルタイムで前記制御データを直接的に変更でき、これによって前記動作シーケンスのパラメータ、順番及び接続と、各種イベント間の接続と、イベントの各種階層間の接続とを、前記表示上において変更することが可能となる、ことを特徴とする分散コントローラ。
【請求項９】
前記ユーザーインターフェースは、前記ＣＤＬに格納される制御データを生成するグラフィカルエディタ機器を備え、前記グラフィカルエディタ機器により、制御データの内容が、ユーザーによりランタイムに直接的に修正できることを特徴とする請求項８に記載の分散コントローラ。
【請求項１０】
前記グラフィカルエディタ機器は、ＡＰＩマークアップランゲージファイル（ＡＭＬ）の形式で、前記制御データを生成するように調整されていることを特徴とする請求項９に記載の分散コントローラ。
【請求項１１】
前記分散コントローラは、前記高速通信ネットワークに接続された多重通信ノードを更に備え、前記多重通信ノード間の自動ハンドシェイク、前記多重通信ノード間で送信されるメッセージの認証、及び、前記多重通信ノードの各々のための障害回復、のうちの少なくとも１つが提供されるように構成されていることを特徴とする請求項８に記載の分散コントローラ。
【請求項１２】
前記分散コントローラ及び前記ロボットを備えるロボットシステムは、多重通信ノードを有し、前記ロボットシステムは、所定のフレームワークを利用し、それにより前記多重通信ノードが、前記高速通信ネットワーク上の多点に対してデータを送受信できることを特徴とする請求項８に記載の分散コントローラ。
【請求項１３】
前記ＣＤＬは、前記ユーザーインターフェースの表示画面に即座に表示できるように、前記フィードバック及び制御データに対する全ての変更を、自動的に受信することを特徴とする請求項８に記載の分散コントローラ。
【請求項１４】
前記ユーザーインターフェースは、グラフィカルプログラミング言語を利用し、前記フィードバック及び制御データの全てを、一連のリンクされたコマンドブロックとして図で表すことを特徴とする請求項８に記載の分散コントローラ。
【請求項１５】
前記分散コントローラは、前記ロボット関節が、直交空間及び関節空間のうちの少なくとも一方における一連の点に沿って手動的に順に動かされるときに、前記一連の点を、リンクされたコマンドブロックとして記録することにより、新たなパラメータ化された動作シーケンスを前記ＣＤＬに加えるように調整されていることを特徴とする請求項１４に記載の分散コントローラ。
【請求項１６】
分散コントローラを使用してロボットを制御する方法であって、
前記ロボットの複数のロボット関節の動きを制御するために、制御データを、前記分散コントローラの異なる制御レベル、すなわち、前記制御データに従って前記ロボットによる自動タスクの実行を指令する制御信号を送信するように調整されたコマンドレベルのコントローラと、前記制御信号を受け取り、その信号に応じて前記関節の少なくともいくつかの動きを協働させるように調整された関節協働レベルのコントローラと、複数の組込み関節レベルのコントローラであって、該複数の組込み関節レベルのコントローラの各々は、前記関節協働レベルのコントローラからの指令に従い、前記ロボット関節のうちの対応する１つからのフィードバックデータに基づいて、前記ロボット関節のうちの対応する１つを直接的に制御するように調整されている、前記複数の組込み関節レベルのコントローラと、を介して送信し、前記制御データは、リンクされたイベントの階層を有するパラメータ化された動作シーケンスに従って前記ロボット関節を制御するように構成されたデータであり、
複数のロボット関節、アクチュエータ、及びセンサからの全ての制御及びフィードバックデータを、中央データライブラリ（ＣＤＬ）に向けて自動的に送り、
前記ＣＤＬからの情報を使用して、前記ロボット関節、アクチュエータ、及びセンサの状態及び動作を記述するリアルタイムグラフィカル情報を表示し、
前記ロボットによる実行のためのパラメータ化された動作シーケンスを生成し、
前記パラメータ化された動作シーケンス内に、リンクされたイベントの階層を生成し、
視覚的プロンプト及び聴覚的プロンプトのうちの少なくとも一方を介してユーザーと相互作用できるユーザーインターフェースにより、前記制御データに従って前記パラメータ化された動作シーケンスを実行し、
前記ユーザーインターフェースを介して、前記パラメータ化された動作シーケンス内のリンクされたイベントの階層を表示し、前記イベントの一つの階層には、前記ロボット関節の直接的な制御が含まれており、
前記ユーザーインターフェースを介して必要に応じて修正された前記動作シーケンスに基づいて、前記制御データをリアルタイムに直接的に修正し、これによって前記動作シーケンスのパラメータ、順番及び接続と、各種イベント間の接続と、イベントの各種階層間の接続とを、前記表示上において変更することが可能となる、ことを特徴とする方法。
【請求項１７】
前記パラメータ化された動作シーケンスを生成するステップは、グラフィカルフローチャートアルゴリズムを使用して、前記パラメータ化された動作シーケンスを一連のリンクされたコマンドブロックとして自動的に表すことを特徴とする請求項１６に記載の方法。
【請求項１８】
リンクされたイベントの階層を生成するステップは、調整された完了条件を使用してシーケンスプライオリティ及び順序を判定することを特徴とする請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]連邦政府により後援された研究又は開発に関する陳述
本発明は、ＮＡＳＡスペースアクトアグリーメント（Space Act Agreement）第SAA-AT-07-003号に基づいて、政府の支援によりなされたものである。政府は、この発明に関し、幾ばくかの権利を有する。
【０００２】
[0002]本発明は、ロボットの動き制御に関し、特に、リアルタイムでロボットと相互作用してそれを制御するフレキシブルでインターアクティブなプログラミングフレームワークに関する。
【背景技術】
【０００３】
[0003]ロボットは、一連の機械的リンクを使用して物体を操作できる自動機器であり、そしてそのリンクは、咬合節、又はモータ／アクチュエータ駆動のロボット関節を介して相互接続されている。典型的なロボットにおける各関節は、独立制御変数で表現でき、それはまた自由度（ＤＯＦ）とも称される。エンドエフェクタは、手でタスクを実行する、例えば作業工具又は物体を掴むために使用される特別なリンクである。故に、ロボットの正確な制御は、タスク仕様のレベル、すなわち、ロボットによる単独把持又は協働把持において保持される物体の振る舞いを制御する能力である物体レベル制御、エンドエフェクタ制御、及び関節レベル制御、により組織化される。集約すれば、各種制御レベルは、協働し、要求されたロボットの可動性、器用さ、及び作業タスク関連機能性を実現する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
[0004]特にヒューマノイドロボットというのは、全身、胴部、及び／又は外肢に拘わらず、概ね人間の構造、機能、及び／又は外見を有するロボットであり、そのヒューマノイドロボットの構造的複雑さというのは、主に、遂行されるべき作業タスクの質に依存する。人間の使用のために特別に作られた機器又はシステムによる直接的な相互作用が必要な場合には、ヒューマノイドロボットを使用することが好ましい。ヒューマノイドロボットに期待される作業タスクの広範性により、異なる制御モードが同時に必要となることもある。例えば、負荷トルク又は力、動き、及び各種把持タイプに対する制御と同様、上記の異なる空間内で、正確な位置制御が行われることも必要となる。
【０００５】
[0005]高ＤＯＦ値を有するヒューマノイド又は他のロボットシステムの制御の複雑さというのは、更なるＤＯＦが加わると、急峻に増加し、故に、基本的な制御プロセスを、オペレータが完全に理解し、効果的に利用することが非常に困難となる。その困難性に加えて、現在欠けているのは、実質数のＤＯＦを有するロボットにより実際に使用される商業的利用可能なプログラミング及び制御解決策である。同様に、更なる技術及びロボットの能力を容易にロボットシステム内に統合できるようにするフレキシブルで拡縮可能なフレームワークを提供する統合的制御アーキテクチャが欠けている。
【課題を解決するための手段】
【０００６】
[0006]しかして、オペレータ又はユーザーが、複数のＤＯＦを有するヒューマノイド又は他のタイプのロボット、例えば、ここにおいて記述する、４２以上のＤＯＦを有する特定のヒューマノイドロボットと相互作用してそれを正確に制御できるようにするフレームワークがここに提供される。本発明の範囲内において、そのフレームワークは、少なくとも４つの鍵となる構成要素を有している。すなわち、制御されるべきロボットについて一意に独立動作可能なリアルタイム制御システムと、構成可能で自己管理的な通信アーキテクチャと、グラフィカルユーザーインターフェース（ＧＵＩ）による、システムステータスのリアルタイム制御及びフィードバックの表示と、インターアクティブなプログラミングである。
【０００７】
[0007]最も広い意味で、そのフレームワークは、低いレベル、すなわち関節レベルの制御の複雑さを抽象し、またその核部分に、たいへん複雑な動き、力、インピーダンス、及び他のシステム制御アルゴリズムを有しているので、そのロボットシステムのユーザーは、直観的なインターフェース、すなわちＧＵＩを介して、効果的な方法でロボットを使用して作業が行える。また、非常に多くのセンサ及びシステムフィードバックデータを取り出してきてそれをグラフとして表現し、それによりロボットの人間による制御を最適化できるインターアクティブシステム発展性が提供される。そのフレームワークは、将来の技術的なアップグレード版又は付加的モジュールを容易に収容できるという意味において、高いフレキシビリティを有している。
【０００８】
[0008]特に、ロボット及び分散コントローラを備えるロボットシステムが提供される。ロボットは、少なくとも１つのアクチュエータを使用して各々が可動できる多重ロボット関節を含み、また、ロボット関節のうちの対応する１つにおいてフィードバックデータを測定するように調整された、トルク、位置、及び／又は他のセンサを含んでいる。コントローラは、多重高速通信ネットワークに渡って制御データを通信することにより、ロボット関節の動きを制御するように調整され、ロボットによる自動タスクの実行を指令する制御信号を送信するコマンドレベルコントローラと、ロボット関節のそれぞれの動きを各々が直接的に制御する多重組込み関節レベルコントローラと、制御信号に応じて、ロボット関節の動きを協働させる関節協働レベルコントローラと、を含んでいる。ロボットは、コントローラに、そのロボットの状態とその動作環境についての要求されたデータ及び情報を集約的に提供する、位置、視覚、触覚、近接、電流、電圧、及び温度のセンサのような、複数のセンサ及びフィードバック機器を含んでいる。コントローラは、その情報を、ロボットの全制御の一部として処理する。
【０００９】
[0009]コントローラは、また、中央データライブラリ（ＣＤＬ）及びユーザーインターフェースを備えている。その名が暗示するように、ＣＤＬは、全ての制御及びフィードバックデータを一か所に集中化する。ユーザーインターフェースは、ＣＤＬと電気的に通信可能であり、ＣＤＬからの情報を使用して、ロボット関節、アクチュエータ、及びセンサの各々の状態を表示する。分散コントローラは、ここに記述するように、ユーザーインターフェースを介して、リンクされたイベントの優先度付き階層を有するパラメータ化された動作シーケンスを表示し、また、ユーザーインターフェースにより、ユーザーが、リアルタイムで、すなわちランタイム中に、機械語レベルのプログラムコードを手で書いてコンパイルする必要なく、制御データを修正できる。
【００１０】
[0010]ロボットシステムは、学習するように調整されており、分散コントローラは、ロボット関節が、直交空間又は関節空間内の一連の点に沿って手動で順に動かされるときに、例えば、グラフィカルフローチャートアルゴリズムを使用して、その一連の点を一連のリンクされたコマンドブロックとして記録することにより、ＣＤＬ内に新たなパラメータ化された動作シーケンスを構成し、又はそこにそれを追加するように調整されている。これらのシーケンス動作には、付加的なコマンドが散りばめられ、それにより、補助構成要素を起動したり、物体に参照的力を負荷したり、制御システムを再開させたりというような各種の動作や、ロボットシステムに与えられた何らかの他の処理が実行できるようになっている。
【００１１】
[0011]本発明の上記特徴及び利点並びに他の特徴及び利点は、添付図面との関連で考慮すると、発明を実行するベストモードの以下の詳細記述から容易に明らかとなる。
【図面の簡単な説明】
【００１２】
【図１】[0012]図１は、本発明によるインターアクティブプログラミング機能性を備えたロボット及び分散制御システムを含んだロボットシステムの概略図である。
【図２】[0013]図２は、図１に示された分散制御システム内の情報の流れを記述した概略フロー図である。
【図３】[0014]図３は、図２のロボットシステムの各部間の情報交換を記述する概略フロー図である。
【図４】[0015]図４は、図１のロボットシステムの一部として使用可能なグラフィカルユーザーインターフェース（ＧＵＩ）の概略図である。
【図５】[0016]図５は、図１のロボットシステムで使用可能なグラフィカルプログラミング言語の概略図である。
【発明を実施するための形態】
【００１３】
[0017]これから参照する図面においては、複数の図を通して、同様の参照番号は、同一の又は類似の構成を意味している。図１は、ここでは器用なヒューマノイドとして示され、分散制御システム又はコントローラ（Ｃ）２４を介して制御されるロボット１０を有するロボットシステムを示している。ロボット１０は、多重の自由度（ＤＯＦ）をもって１つ以上の自動タスクを遂行し、更に他のインターアクティブタスクを遂行するか、又は他の統合システム構成要素、例えばクランプ、光源リレー等、を制御するように調整されている。一実施形態によれば、ロボット１０は、限定するわけではないが、矢印Ａで一般的に示される肩関節、（矢印Ｂ）である肘関節、手首関節（矢印Ｃ）、首関節（矢印Ｄ）、及びウエスト関節（矢印Ｅ）、そして更に各ロボット指１９の指骨の間に位置する各種指関節（矢印Ｆ）のような、複数の独立に、かつ相互依存的に可動できるロボット関節で構成されている。
【００１４】
[0018]各ロボット関節は、１以上のＤＯＦを有している。例えば、肩関節（矢印Ａ）及び肘関節（矢印Ｂ）のようないくつかのコンプライアント関節は、あおり及び回転というような少なくとも２つのＤＯＦを有している。同様に、首関節（矢印Ｄ）は、少なくとも３つのＤＯＦを有しており、一方、ウエスト及び手首（それぞれ矢印Ｅ及びＣ）は、１以上のＤＯＦを有している。タスクの複雑さに応じて、ロボット１０は、４２を超えるＤＯＦをもってして動作する。各ロボット関節は、例えば、関節モータ、リニアーアクチュエータ、ロータリーアクチュエータ等の１つ以上のアクチュエータを含んでおり、それらにより内部的に駆動される。
【００１５】
[0019]ロボット１０は、頭１２、胴１４、ウエスト１５、腕１６、手１８、指１９、及び親指２１を含んでおり、上記各種関節はそれらの内部又はそれらの間に配設されている。ロボット１０は、その特定の応用又は意図的な使用に応じて、脚、トレッド（踏面）、又は他の可動もしくは固定ベースのような、タスクに適した固定部又はベース（図示せず）を有している。電源１３は、ロボット１０に一体的に搭載されることができ、例えば、充電可能バッテリパックが胴１４の背面に取り付けられたり、背負われたりし、また他の適したエネルギー供給源であってもよく、又は、電源１３は、ロボットの外部にあり、電源ケーブルにより接続されていてもよく、それにより各種関節が動かせるように、それらに十分な電気的エネルギーが供給される。
【００１６】
[0020]分散コントローラ２４は、片手又は両手１８の指１９及び親指２１により掴まれる物体２０を操作するのに必要な正確かつ全体的な動きに対する制御のような、ロボット１０の正確な動き制御を提供する。制御システム２４は、他の関節及びシステム構成要素と隔絶して各ロボット関節及び他の統合システム構成要素を独立に制御できると共に、比較的複雑な作業タスクを遂行するにあたり、多重関節の動作を全面的に協働させるべく、多くの関節を相互依存的に制御できる。
【００１７】
[0021]制御システム２４は、多重デジタルコンピュータ又はデータ処理機器を含んでおり、その各々は、１つ以上のマイクロプロセッサ又は中央処理ユニット（ＣＰＵ）、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、電気的書換え可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、高速クロック、アナログ／デジタル（Ａ／Ｄ）回路、デジタル／アナログ（Ｄ／Ａ）回路、及び、必要な入出力（Ｉ／Ｏ）回路及び機器を有しており、また、信号調整及びバッファー電子素子を有している。コントローラ２４内にあるか、またはそれにより容易にアクセス可能な個々の制御アルゴリズムは、ＲＯＭに格納されており、１以上の異なる制御レベルで自動的に実行され、それによりそれぞれの制御機能性が提供される。
【００１８】
[0022]コントローラ２４は、多重通信ノード又は接続ポイントに通じて通信し、また、例えばイーサネット（登録商標）のような多重高速通信ネットワーク、多点低電圧差分信号（Ｍ−ＬＶＤＳ）バス、バックプレーン等に渡って通信される。ノードは、各種モデム、ハブ、ブリッジ、コンピュータ、データルータ、ワークステーション、サーバー等として具現化され、ロボットシステム内の情報の流れを制御している。
【００１９】
[0023]図１をもう少し参照し、コントローラ２４は、コマンドレベル制御が、マクロなレベルで提供され、関節協働が中間レベルで提供されているという意味において、分散されている。次に、その中間レベルは、多重低レベルコントローラとの直接通信により、特定のタスク又は動きの制御に関わる各関節、又は他の統合システム構成要素、例えばリレー、光源システム等、を制御する。故に、コントローラ２４は、システムコマンダー２５とここで称されるコマンドレベルコントローラと、頭脳２７と以降称されるリアルタイム関節協働コントローラとを含んでいる。コントローラ２４は、また、多重的組込み関節レベルコントローラ２９を含んでおり、後述のように、それらは、その記述が暗示するように、各々、それにより制御される関節に近接してロボット１０構造内部に組み込まれている。付加的コントローラ（図示せず）が、この低レベルでインターフェース化され、電源管理及び／又は他の補助的機器のような統合システム構成要素に対する制御を提供する。フィードバックデータ及び制御データ１１は、ロボット１０とコントローラ２４の各種レベルとの間で交わされ、ロボットの正確で複雑な動き制御を保証している。
【００２０】
[0024]コントローラ２４は、例えばコントロールパネル、ディスプレイスクリーン、及び／又は他のマンマシンインターフェース（ＨＭＩ）機器のようなユーザーインターフェース２２を伴って構成されている。インターフェース２２は、動作レベル及びプログラミングレベルで、別途ロボット１０に限定的にアクセスできるように構成されている。その結果、インターフェース２２は、ロボット１０に対する制限された制御ではあるが、直観的又はメニュー駆動型の一連の機能的オプションをオペレータに提供する、図４にまた示すグラフィカルユーザーインターフェース（ＧＵＩ）５１を含んでいる。
【００２１】
[0025]インターフェース２２は、また、ロボットの核となる制御コードを変更する権限を有する技術者、プログラマー、又は他の指定された個人による、ロボット１０への全面的なアクセスを提供する非専用インターフェースを含んでいる。図２乃至５を参照してこれから説明するが、インターフェース２２は、ロボット１０のプログラマー、オペレータ、又は他のユーザーに対して、直観的でグラフィカルなプログラミング層を提示するインターアクティブプログラミングゲートウェイとして働き、従って、制御の実質的な複雑さを十分に隠蔽して、ロボット１０の効果的プログラミングと使用が可能となる。
【００２２】
[0026]引き続き図１を参照すると、コントローラ２４は、多重高速ネットワークに渡って分散されており、上述のロボット１０内の各種関節の協働的動きを正確に制御している。つまり、システムコマンダー２５は、高速通信リンク４１に渡ってインターフェース２２を介して指令されて、頭脳２７に対するロボット１０全体に渡っての一般的な高レベルの制御を提供する。例えば、システムコマンダー２５は、例えば物体２０のような“物体を持ち上げ”、そして“その物体を３秒で、点Ｘ，Ｙ，Ｚに移動させよ”というようなタスクベースのコマンドを発行する。これらのコマンドは、一実施形態においてはイーサネット接続である高速ネットワークに渡って、又は他の適した高速ネットワークに渡って、中間レベル制御機器、すなわち頭脳２７に送信され、又はリレーされる。
【００２３】
[0027]中間レベル制御機器、つまり頭脳２７は、システムコマンダー２５からコマンドを受け取り、そしてそのコマンドを処理する。頭脳２７のレベルでの処理としては、必要な補助機器と共に最も効率的な方法で要求されたタスクを実行するように制御されなければならない、図１に示されたロボット１０の特定の関節又は関節群を特定することがあると共に、各関節の１つ以上のＤＯＦを制御するモータ又はアクチュエータに対して、要求された起動コマンドを発することがある。例えば、頭脳２７は、特定の関節に信号を送り、特定の速度で１０度動くようにその関節に指令する。この信号は、他の高速ネットワークを介して、各組込み関節コントローラ２９に送られるが、その他の高速ネットワークとしては、例えば、頭脳２７内に統合され、Ｍ−ＬＶＤＳバスを通じて、各種関節及び／又はタスク指定コマンドモジュール（図示せず）を接続するバックプレーンである。
【００２４】
[0028]上記機器に加えて、コントローラ２４は、任意のネットワークと機器の間の通信を優先するように構成されたネットワーク通信マネージャー（ＮＣＭ）（図示せず）の収集も含んでいる。当業者であれば理解できるように、ＮＣＭは、特定のハードウェア機器に対するプログラミングインターフェースを提供して、ネットワークへの接続を試み、その機器が、そのネットワークにより使用される特定の通信プロトコルに従って、適切に接続されることを保証しているソフトウェアを含んでいる。
【００２５】
[0029]コントローラ２４は、また、多重アプリケーションモジュール３０（図２も参照）との接続を確立するために使用される更に他の高速ネットワーク又はソフトウェアを含んでいる。一実施形態においては、多重アプリケーションモジュール３０は、例えば、触覚的又はタッチベースの感知、視覚的感知、音又は音声ベースの感知等のような特定周辺感知アプリケーションを専用的に制御できるよう構成されている。ロボット１０の能力を向上させる、かかる環境的感知機能又は他の制御機能性は、上述の多重高速ネットワークを介してロボットの関節レベルに受け渡される。
【００２６】
[0030]上記のように、コントローラ２４は、システムコマンダー２５、頭脳２７、及び多重組込み関節レベルコントローラ２９を介して、多重制御レベルの間に、制御機能性を分散させている。つまり、コントローラ２４のフレームワークは、システムコマンダー２５ごとに予め定義された動作の高レベルシーケンスと、頭脳２７を介した各種関節のリアルタイム制御及び協働と、コントローラ２９を介した関節レベル処理及びアクチュエータ制御とを含んでいる。コントローラ２９に関して、これらの機器は、感知、信号処理、アクチュエータ制御、及び／又は機能性を提供する１つ以上の印刷回路基板アセンブリ（ＰＣＢＡ）として構成できる。これらのＰＣＢＡは、ロボット１０の構造内に、例えば、制御されるべき特定の関節に近接して腕１６内に、直接的に組み込まれる。上記の、また図２に示された制御モジュール３０を介して、オフボードの知覚処理が提供される。
【００２７】
[0031]図２を参照すると、上述の分散コントローラ２４は、インターフェース２２及び頭脳２７を含んでおり、それらは協働し、それによりロボット１０が、パラメータ化された動作シーケンスを介して、指令されるようになっている。頭脳２７により提供されるリアルタイム制御は、本発明の意図した範囲の外側にあるような複雑は方法で、動き、力、位置、インピーダンス等に基づいて、各種関節の連続的動作を調整する。上記のように、コントローラ２４は、システムコマンダー２５を介して高レベルシーケンス制御を提供するが、そのコマンダー２５は、多重高速ネットワーク２６に渡って、リアルタイム制御システム、すなわち頭脳２７と、各種周辺データプロセッサ、つまりコマンドモジュール３０との通信を行う。
【００２８】
[0032]コマンドモジュール３０は、知覚データの検出及び処理を要求するタスクの処理をサポートすべく、また、ロボット１０の各種制御レベルにその処理された情報を受け渡すべく調整されたワークステーション又はプロセッサとして具現化できる。コマンドモジュール３０を介してコントローラ２４により実行される２つの知覚的又は感知用タスクは、視覚的知覚及び触覚的知覚を含んでいる。
【００２９】
[0033]ここで使用されているように、語句、視覚的知覚というのは、例えば、カメラ、レーザー、レーダー、赤外線機器、又は他の適したセンサのようなセンサアレイを使用して、視野内の複数の特徴及び／又は物体を自動的に見つけ、追跡し、測定するというロボットの能力のことを言っている。触覚的知覚というのは、手１８又は指１９の表面のようなロボット１０のある面と、物体との間のコンタクトを記述する情報を検出し、処理するというロボットの能力のことを言っている。ここで使用しているコンタクトというのは、例えば、あらゆる接触、力、衝撃、振動、又は他の接触的、触覚的、もしくは滑り知覚のことを言っている。
【００３０】
[0034]触覚的知覚の分野における当業者であれば理解できるように、接触を基本とした感知というのは、ある定義された点におけるコンタクト力を検出して測定することを含んでいる。触覚的感知というのは、ロボットの感知領域に垂直な力の空間分布を検出して測定し、かかる空間情報を処理し、解釈することを含んでいる。一群の又は一連のタッチセンサをうまく調整すべく、触覚的センサアレイを使用することができる。滑り感知というのは、センサに対する物体のあらゆる相対的な動き、例えば、ロボット１０の手１８に対する図１の物体２０の動き、測定し、検知することを含んでいる。
【００３１】
[0035]その結果、図１に示したロボットシステム、すなわち、ロボット１０及びコントローラ２４、のフレームワーク内に電気機械システム３１が提供されている。上述のような触覚的及び視覚的知覚能力の双方を有しているロボット１０については、システム３１は、触覚的センサ３２及び視覚的センサ３４を含んでいる。例えば、触覚的センサ３２は、単一の又はアレイ状の接触的又は触覚的センサを含んでおり、それらは機械的及び／又は電気的に設計されている。機械的センサの例としては、バイナリタッチセンサ、ポテンシオメーター、変位変換器等がある。電気的センサは、電気的駆動センサ又は電気的由来の値を含んでおり、例えば、抵抗式、容量式、又は電磁界センサである。しかし、如何なる構成であろうと、センサ３２，３４は、他の高速ネットワークに渡った対応するコマンドモジュール３０と通信できる状態となっている。
【００３２】
[0036]電気機械システム３１は、また、ロボット関節ごとの、少なくとも１つの関節モータ３８、あるいはロータリーもしくはリニアーアクチュエータ機器を有している。関節モータ３８は、力及び位置センサ３６及び４０のそれぞれを使用して、関節レベルで、すなわち、各種組込み関節レベルコントローラ２９により、制御される。他の高速ネットワーク３３に渡って頭脳２７と組込みコントローラ２９との間で通信が発生し、一実施形態によれば、力及び位置センサ３６，４０のそれぞれからの信号の処理は、頭脳２７とは異なる関節レベルで行われ、それにより、図１に示されたロボット１０の各種関節のリアルタイム制御と協働が実現できる。
【００３３】
[0037]図３を参照すると、通信フロー図４５は、簡略的に、図２のロボット１０、システムコマンダー２５、及び各触覚的及び視覚的センサ３２，３４の間のメッセージベースのプログラミング情報の流れを描いている。なお、図２のセンサ３２，３４は、図３においては、カメラ３４Ａと、一組の触覚的センサ３２Ａが備わった手１８として表現されている。図１のロボットシステム内、すなわち、構成要素及びサブシステムが備わった図１のロボット１０及びコントローラ２４内には、適応フレームワークが提供されている。そのフレームワークにより、各種通信ノードが、ランタイム時にアクセス可能であり、又は変更可能となる。ここで提供されるフレームワークは、（ａ）コンタクトファイル指向通信モデル、（ｂ）自動通信ノード接続、（ｃ）マルチポイントノード接続、（ｄ）中央データライブラリ（ＣＤＬ）３５を介した中央集中化データ管理、を備えている。各語句は、以降、順に説明していく。
【００３４】
[0038]コンタクトファイル指向通信モデルにより、典型的な方法での翻訳を必要とすることなく、ユーザー生成メッセージの内容を、加えたり修正したりすることができる。つまり、ユーザーは、グラフィカルエディタ３７を使用して、特定の数のデータ片とその各データ片が意味することを規定することにより、情報パケットを作り上げることができる。ここで、エディタ３７は、コントラクトファイル４４の形態でメッセージを生成するものである。そのコントラクトファイル４４は、ある特定の実施形態によれば、ＡＰＩマークアップランゲージファイル（ＡＭＬ）として、図１のロボットシステム内のいずれの場所のメモリにも格納し得る。
【００３５】
[0039]図３のコントラクトファイル４４は、システム内の全ての通信ノードにより自動的に参照できるようになっている。ノード間、例えば、システムコマンダー２５と、カメラ３４Ａを備えた視覚システムモジュールとの間の自動接続は、異なるノード間の自動“ハンドシェイク”を介して可能であり、その語句は、全ての通信ノードについてのメッセージ認証及び障害通信／回復と同様、その分野では理解されるものである。特に、障害回復に関しては、あるノードが他との会話を停止させたとき、ＣＤＬ３５内に収容された中央集中化データを使用すれば、コントローラ２４が、適切な制御レベルにおいて、即座の制御動作を行うことができる。
【００３６】
[0040]ここで使用されるように、語句“中央集中化管理”というのは、自動ルーティングと、全ての電力、センサ、及び、ロボットシステム内のノード間で送信される、図１のアクチュエータフィードバック及び制御データ１１の単一の実際の又は仮想的／集約的位置での記録のことを言っている。かかるデータは、ＣＤＬ３５内にあり、それは、一実施形態においては、システムコマンダー２５の物理的なメモリの位置である。しかしながら、本発明の意図した範囲を逸脱することなく、他のメモリ位置又は多重の、アレイ型の、もしくは分散した位置も使用可能である。
【００３７】
[0041]例えば、視覚的感知ソフトウェア４６、触覚的感知ソフトウェア４８、遠隔操作ソフトウェア５０等の外部の知覚的及び制御ソフトウェア、及び／又は他のコマンドモジュール及びソフトウェアを、コントローラ２４の分散制御レベルにおいて、境目なく統合するために、容易に拡張可能なフレームワークがこのように提供される。例えば、新たなデータがシステムに追加されるやいなや、そのデータは、コントラクトファイル４４内に規定される。そして、それが規定されるやいなや、コントラクトファイル４４は、ＣＤＬ３５内に統合される。それにより、手１８は、他の腕がどこにあるかが規定されていなくても、“他の腕のレベルまで上がれ、プラス１０度”というように指令を受けることができる。その要求された情報は、既にＣＤＬ３５を介して利用可能である。
【００３８】
[0042]図４を参照すると、リアルタイム制御と、ユーザー又はオペレータへのシステムステータスの直観的フィードバックを容易にするために、図１のインターフェース２２は、図３を参照して上述したＣＤＬ３５内に収集されたデータを直観的に、かつ相互作用的にアクセスできるように、グラフィカル制御パネル又はユーザーインターフェース（ＧＵＩ）５１を備えている。ＧＵＩ５１は、リアルタイム制御／システムステータス、グラフィカル制御オプション、及び制御／システムデータ視覚化機能を提供するように構成されている。多くの複雑な制御変数やその関連データをユーザーフレンドリーなインターフェース機器内に抽出することにより、図１のロボットシステムのプログラミングアクセス及び操作効率が最適化され、それにより、上述のロボット１０の４２＋のＤＯＦのような高ＤＯＦを実用的に活用することができるようになる。
【００３９】
[0043]リアルタイムステータスに関し、ＧＵＩ５１は、システムステータスディスプレイ５２及び制御パネルディスプレイ５４を備えており、それによりユーザーが、ロボットの操作モードを変更でき、システムパワーを制御でき、ボタン５５及び／又は他の共通制御入力素子を使用して様々な他の動作を遂行することができるようになる。ステータスディスプレイ５２は、ステータスアイコン又はシンボルを含んでおり、それらは、ロボットシステム全体と共に、ロボット１０の各種関節又は外肢、すなわち、左腕（ＬＡ）、右腕（ＲＡ）、首（ＮＫ）、左手（ＬＨ）、右手（ＲＨ）、ウエスト（ＷＡ）等、の個々の関節位置、トルク、及び／又は、安全状態の対応可能性を表示している。制御パネルディスプレイ５４は、制御アイコンを含んでおり、それによりユーザーは、例えば、ロジック  オン／オフ、バス電圧使用可能性、モータパワー利用可能性等の、図４に示された各種パワーシステムオプションのような異なるロボットシステムへの入力を選択できるようになっている。
【００４０】
[0044]図３の遠隔操作ソフトウェア５０のような個々のコマンドモジュールの状態もまた、コマンド表示領域５６を介して表示される。システムモードディスプレイ５８は、ロボット関節又は外肢の対応リストを表示するものであり、サーボ制御を不能、一時停止、使用可能にしたり、異なる関節又は外肢の動作モードを変更したりできるオプションが備わっている。多重制御メニューが、例えば、ロボットデータ可視化、テスト入力データ、又は他の入力画面のような異なるタイプ又はレベルの情報にアクセスするために、タブ５７により選択され、それにより、ユーザーが、視覚的に検定し、必要であれば、上述のランタイムデータライブラリ又はＣＤＬ３５を修正し、又は、システムに利用可能な全てのロボット制御、センサ、及び外部のデータにアクセスできるようになる。ＣＤＬ３５への更新は、ＧＵＩ５１上の対応画面を介して自動的に表示される。
【００４１】
[0045]図５を参照して、図１のユーザーインターフェース２２又は別体の機器は、各種パラメータ化されたタスクシーケンスをグラフィック仕様でプログラムしたり実行したりするための相互作用的プログラミングフレームワークへのアクセスを提供する。かかるアクセルは、プログラミングインターフェースにより容易になる。プログラミングインターフェース６０により、ユーザーは、ロボット１０に対して、プログラムしたり、訓練したり、動作させたりすることができる。いくつかの設計要素は、そのような相互作用的プログラミング機能を実現化するのに貢献する。ここで、その機能には、（ａ）アクチュエータ制御の統合、（ｂ）フローチャート形式のグラフィカルプログラミング言語の使用、（ｃ）連続的に評価された階層的タスクシーケンス、（ｄ）ランタイム表現評価及び修正、及び（ｅ）２段階プログラミング言語設計、が含まれる。各概念を、図５に示された例であるフローチャート６０を参照しつつ、以下説明する。
【００４２】
[0046]列柔軟性制御統合に関し、新たなシーケンスの実行において、ロボット１０を訓練すべく、図１のシステムが使用される。ロボット１０は、首、腕、ウエスト、及び手の内部に少なくとも１０個のコンプライアントロボット関節を含んでおり、ここで、パラメータ化された剛直化が、インピーダンス制御により達成される。一実施形態においては、ユーザーは、ＧＵＩ５１を介して、剛性に関して、低、中、又は高のレベルを選択できる。そして、ユーザーは、ロボット１０の関節を、異なる直交空間点、すなわち、３次元空間におけるＸ，Ｙ，及びＺの点の間を物理的に動かすことができる。各点では、ユーザーは、グラフィカルフローチャート作成ソフトウェアを使用して、図５のフローチャート６０を作り上げ、ブロック６２を生成する。
【００４３】
[0047]ブロック６２は、コマンドブロック６４Ａ−Ｋ、シーケンスブロック６６Ａ−Ｅ、及びイベントベースのリンク６８Ａ−Ｉとして分化される。なお、図５は、例示である。初期化の後、ブロック６４Ａは、システムの関節訓練モードへの設定をシンボル化するために使用される。それが完了すると、すなわち、イベントベースのリンク６８Ａを介し、ユーザーは、各ブロック６８Ｂ及び６８Ｃで、ダンピング及び剛性を増加させ、ブロック６４Ｄで、ロボット１０の例えば、腕及び首のサーボ制御を起動させる。関節の開始位置、すなわち、Ｘ，Ｙ，Ｚ座標が、ブロック６４Ｅにおいて測定されて記録され、ブロック６４Ｆにおいて、関節の動きの速度が設定される。肘をある距離動かしたり、ウエスト１５をある角度回したりするのに、ブロック６４Ｇ及び６４Ｈが使用される。
【００４４】
[0048]コマンドブロック６４Ａ−Ｋと共に使用されるシーケンスブロック６６Ａ−Ｅは、パラメータ化されたタスクシーケンスを記述しており、それらのシーケンスは、必然的に複数のステップを含むものである。三角のシーケンスブロックをクリックすると、その特定のシーケンスに必要な各種コマンド、シーケンス、及びイベントベースのリンクを記述する更に他のグラフ状のフローチャートを有する他のウインドウが自動的に開く。例えば、図５において、シーケンスブロック６６Ａは、“摘む”とラベル付けされているが、それは、ロボット１０が物体２０を摘み上げることを言っている。かかる動作は、単一の、又は協働的な把持を必要としており、従って、一連の、又はシーケンスとしての個々の関節制御動作を介して制御される。
【００４５】
[0049]図５の他のブロックは、ブロック６４Ｉでのウエストの回転や、ブロック６６Ｄでのハイアームをカールさせることのように、代表的なパラメータ化されたシーケンスを完結するものである。実際のフローチャートは、図５に示されたものよりも多い方にも少ない方にも拡張可能である。複雑さに関わらず、一旦、タスクが獲得され、ロボット１０がこのように訓練されると、パラメータ化されたシーケンスデータの全てが上述のように図３のＣＤＬ３５に集まる。そしてそのシーケンスは、必要あれば、ロボット１０の他のユーザーにより使用されたり修正されたりする。この利用性は、大変複雑な一連のロボット動作の生成を簡略化し、ロボット制御プログラムの生成を容易にするユニークで効果的なインターフェースを提供する。
【００４６】
[0050]フローチャート方式のプログラミングに関し、図５を参照すると、図１のロボット１０の全体的な制御は、プログラミングインターフェース６０の画面上にコマンドブロック６４を表現することにより抽象化される。これらのブロック６４は、矢印６８によりグラフ的に接続されることにより、所望のシーケンスが表現される。ブロック６４は、他のブロック内にネスト構造となることにより、サブルーチンが形成される。これらのサブルーチンは、他のコマンドブロックとリンクされ得るし、他のサブルーチン内でネスト構造となることができる。また、サブルーチンは、任意にネスト構造とすることができるし、独立にセーブすることもできる。これらのセーブされたシーケンスは、他のフローチャートに挿入でき、再プログラミングの労力を費用の面で削減できる。ブロックは、図１のロボット１０に利用できる制御データの構成要素又は組み合わせを表現するように、特徴付けることもでき、それによりユーザーのプログラミング経験を軽減できる。付加的なプログラムブロックにより、システムが、音を鳴らしたり、ユーザーに操作を促したり、タイマーを開始／停止させたり、また、他の有益な活動を行うというように、特別な動作を行えるようにすることができる。
【００４７】
[0051]このシステムにより、異なるプログラムに渡って共有できるようなプログラム変数を生成できるようになる。これらの変数の値は、プログラムの内部に設定できると共にそこから検索でき、利用できるデータの全ライブラリに対してアクセスできるようになっている。特別に作成されたブロックがシステムの能力を拡張するために使用され、それにより、一連のコマンドを流したり、通信システムをリセットするのと同様の動作を行うことができる。また、このシステムは、付加的なランタイムインターアクションを提供する。ユーザーは、ＧＵＩ５１と相互作用することにより、プログラムを開始、終了、及び一時停止させることができる。
【００４８】
[0052]加えて、システムは、ブレークポイントを設定し、プログラムの実行を自動的に停止させ、また所定のポイントから再開させることができる能力を提供する。ブレークポイント６７は、各ブロック上に視覚的に示されている。ユーザーは、また、そのインターフェースと直接的に相互作用し、実行時に、接続、順序、及び他のパラメータを変更することにより、シーケンスを修正することができる。現在のプログラム位置が示され、ユーザーの視点は、実行中、実行カーソル６９により、自動的に正しい位置にスクロールする。
【００４９】
[0053]連続的に評価されるシーケンスに関しては、プログラミング言語は、完了条件の概念によってシーケンスのプライオリティと順序を判定する。完了条件は、自由に拡張可能であり、各種の異なるイベント及び組合せを表現することができる。タスクの順序付けは、経過時間、位置データ、センサデータ、ランタイム評価表現、ユーザーインターアクション、又は他の外部制御に基づくことができる。例えば、ロボット１０のある関節は、設定時間の間、前後経路に沿って交互に動作し、時間条件が満足されるとそのループから抜け出る。完了条件は、連続的に評価され、それによりシーケンスの動的再構成が可能となり、更に、システムの相互作用的能力が強化される。つまり、ループから抜け出させたり、ループのタイミング又は順序を修正したり、というように、条件はランタイムで変更可能である。完了条件は、自由にネスト構造とすることができ、また、それを使用して複雑な条件階層も生成でき、その階層によりエラー処理が容易となり、又はその階層は他のシーケンスへの移行条件、及び／又はロボット１０の独立動作として実行できるようになる。
【００５０】
[0054]ランタイム表現評価については、プログラミング言語の全ての様相が、動的ランタイム環境をサポートするように構成できる。コマンド及びタスクシーケンスは、通信アーキテクチャと共に統合され、ＣＤＬ３５に集中化され、そのＣＤＬを介して、全てのセンサ及びコマンドデータへのフルアクセスが提供される。プログラムファイルは、ランタイム時に評価される表現を格納し、又は修正することにより、生成できる。例えば、ＧＵＩ５１により式エディタウインドウが開き、それにより各種コマンドレベルの式の編集及び／又は参照が行える。
【００５１】
[0055]２段階プログラミング言語に関しては、システムは、上述の最高レベルインターフェース能力により、自動的に低いレベルのロボットコマンド又は機械コードを生成する。システムは、フレキシビリティ及び拡縮性を伴うように設計される。ここで使用するように、拡縮可能性というのは、機械レベルコードを書いてコンパイルするという必要性なく、各種コマンドモジュール３０に対して、ボタンの機能を追加できるユニークな機能のことを言っている。その結果、上述の高レベルなグラフィカルプログラミング言語は、低いレベルのプログラミングコードを変更することなく、テキスト又はメニュー駆動のインターフェースのような他のアプローチに、完全にとって換わる。かかるアプローチは、Ｃ＋＋及び他の高レベルプログラミング言語が、低レベル機械命令又はアセンブリコードにコンパイルされる仕方と、いくつかの点で匹敵するものである。
【００５２】
[0056]本発明を実行するためのベストモードが詳細に記述されてきたが、この発明に関係する技術に精通した者であれば、付随の特許請求の範囲内の発明を実施化するための各種の他の設計及び実施形態を認識できるであろう。
【図１】
0005944096.tif 000002
【図２】
0005944096.tif 000003
【図３】
0005944096.tif 000004
【図４】
0005944096.tif 000005
【図５】
0005944096.tif 000006