(57)【特許請求の範囲】
【請求項１】
複数の関節を備える冗長ロボットマニピュレータを制約し、重力を補償するモードで動作させる方法であって、前記方法は、
プロセッサを使用して、前記冗長ロボットマニピュレータの姿勢を基準姿勢に向かって押勢するための少なくとも１つの制約トルクを算出することであって、前記少なくとも１つの制約トルクは、前記基準姿勢からの前記冗長ロボットマニピュレータの姿勢の変位に依存する、ことと、
重力補償トルクと前記少なくとも１つの算出された制約トルクとを含む総トルクを前記複数の関節に印加することであって、前記冗長ロボットマニピュレータは、前記重力補償から生じる前記冗長ロボットマニピュレータの制御不能なドリフトを低減する一方で、重力を補償するように動作され、前記冗長ロボットマニピュレータの制御不能なドリフトを低減することは、前記冗長ロボットマニピュレータの移動を制約することを含み、前記冗長ロボットマニピュレータの終点は、前記複数の関節に印加される前記総トルクが、印加される力によって少なくとも部分的に対抗される場合にのみ移動される、ことと
を含む、方法。
【請求項２】
前記制約トルクは、復元トルクを含み、前記復元トルクの大きさは、前記変位に線形に依存する、請求項１に記載の方法。
【請求項３】
前記少なくとも１つの制約トルクのうちの少なくとも１つは、仮想ばねによって印加されるトルクとして算出され、前記仮想ばねは、前記複数の関節のうちの１つに取り付けられ、その基準位置に向かって関節を引張する、請求項１に記載の方法。
【請求項４】
前記少なくとも１つの制約トルクのうちの少なくとも１つは、仮想ばねによって印加される復元力から生じるトルクとして算出され、前記仮想ばねは、前記冗長ロボットマニピュレータの選択された点に取り付けられ、基準デカルト位置に向かって、その点を選択されたデカルト方向に引張する、請求項１に記載の方法。
【請求項５】
前記少なくとも１つの制約トルクは、前記選択された点の近位の関節に対してのみ非ゼロである、請求項４に記載の方法。
【請求項６】
前記少なくとも１つの制約トルクは、仮想ばねによって印加されたトルクとして算出され、前記仮想ばねは、一端において前記冗長ロボットマニピュレータの関節または選択された点のうちの少なくとも１つに取り付けられ、第２の端部において静摩擦を伴う質量に取り付けられる、請求項１に記載の方法。
【請求項７】
ユーザ入力に応答して、前記基準姿勢を前記冗長ロボットマニピュレータの現在の姿勢に設定することをさらに含む、請求項１に記載の方法。
【請求項８】
前記少なくとも１つの制約トルクは、前記冗長ロボットマニピュレータのヌル空間内で算出される、請求項１に記載の方法。
【請求項９】
前記基準姿勢は、他のロボット部品に対する前記冗長ロボットマニピュレータの部品の場所または配向、ロボット作業空間内のロボットの場所または配向もしくはロボット作業空間に関連付けられた条件、もしくは、現在実行されているロボットタスクのうちの少なくとも１つの関数として定義される、請求項１に記載の方法。
【請求項１０】
前記少なくとも１つの制約トルクの大きさは、前記冗長ロボットマニピュレータの終点における内力を最小限にするように設定される、請求項１に記載の方法。
【請求項１１】
前記基準姿勢は、前記冗長ロボットマニピュレータの自由度に対応する座標に関する一式の値によって規定され、前記一式の値は、集合的に、少なくともそのいくつかの要素の空間位置および配向を規定する、請求項１に記載の方法。
【請求項１２】
ロボットであって、前記ロボットは、
複数の関節によって直列に接続された複数の連結部を備えるマニピュレータであって、前記マニピュレータは、少なくとも１つの冗長自由度を有する、マニピュレータと、
前記複数の関節にトルクを印加するために、前記複数の関節に関連付けられたコントローラと、
前記重力補償から生じる前記マニピュレータの制御不能なドリフトを低減する一方で、重力を補償するモードにおいて、前記複数の関節に印加されるべきトルクを算出するために、前記コントローラと通信可能な演算機器であって、前記マニピュレータの制御不能なドリフトを低減することは、前記マニピュレータの移動を制約することを含み、前記トルクは、前記マニピュレータの姿勢を基準姿勢に押勢する制約トルクを含む、演算機器と
を備え、
前記マニピュレータの終点は、前記複数の関節に印加される前記トルクが、印加される力によって少なくとも部分的に対抗される場合にのみ移動される、ロボット。
【請求項１３】
前記演算機器は、前記基準姿勢の算出表現を記憶するメモリを備える、請求項１２に記載のロボット。
【請求項１４】
前記記憶された基準姿勢は、他のロボット部品に対する前記マニピュレータの部品の場所または配向、ロボット作業空間内のロボットの場所または配向もしくはロボット作業空間に関連付けられた条件、もしくは、現在実行されているロボットタスクのうちの少なくとも１つの関数として定義される、請求項１３に記載のロボット。
【請求項１５】
前記マニピュレータの姿勢のパラメータを測定するためのセンサをさらに備える、請求項１２に記載のロボット。
【請求項１６】
前記演算機器は、前記測定されたパラメータに基づいて、前記基準姿勢からの前記マニピュレータの姿勢の変位を算出するためのモジュールを備える、請求項１５に記載のロボット。
【請求項１７】
前記制約トルクは、復元トルクを含み、前記復元トルクの大きさは、前記変位に線形に依存する、請求項１６に記載のロボット。
【請求項１８】
ユーザが前記基準姿勢を前記マニピュレータの現在の姿勢に設定することを可能にするユーザインターフェース要素をさらに備える、請求項１２に記載のロボット。
【請求項１９】
前記演算機器は、前記マニピュレータのヌル空間内の制約トルクを算出するためのモジュールを備える、請求項１２に記載のロボット。
【請求項２０】
前記演算機器は、前記マニピュレータの終点における内力を最小限にするように少なくとも１つの制約トルクの大きさを設定するためのモジュールを備える、請求項１２に記載のロボット。
【請求項２１】
前記複数の関節は、直列弾性アクチュエータを備え、前記演算機器は、前記複数の関節に印加されるべきトルクに対応する個別の駆動電流を用いて、前記アクチュエータを駆動することを前記複数の関節に関連付けられた前記コントローラに行わせるように構成されている、請求項１２に記載のロボット。

【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願への相互参照）
本出願は、２０１２年９月１７日に出願された米国仮出願６１／７０１，９００号に対して優先権、およびその権利を主張する。上記文献は、その全体として参照することによって本明細書において援用される。
【０００２】
（技術分野）
本発明は、冗長自由度を伴うロボットマニピュレータの運動を制約するためのシステムおよび方法に関し、特に、そのエンドエフェクタによって、そのような冗長マニピュレータを誘導することと調和するアプローチに関する。
【背景技術】
【０００３】
（背景）
産業ロボットは、物理的物体の移動および操作を伴う、種々のタスクを行う。典型的産業ロボットは、例えば、ロボットが、特定の場所において物体を取り上げ、それらを目的場所に運搬し、それらを特定の座標に従って置くことを可能にする、グリッパまたは他のエンドエフェクタを具備する、１つ以上のアーム（または、より一般的には、付属肢）を有し得る。既存の産業ロボットのためのコントローラは、典型的には、ロボットアームのための正確な位置および軌道を規定する言語でプログラムされる。プログラムされたタスクの実行の間、ロボットアームは、正確に規定された軌道に従って、その最遠位連結部と関連付けられた参照座標を正確に規定された新しい位置に移動させる。産業ロボットのための最近のプログラミングシステムは、単に、ロボットのエンドエフェクタを握持し、それをロボットの作業空間内の関連場所に誘導することによって、ユーザが、ロボット場所および軌道を教示することを可能にする、入力層を有する。本方法は、ユーザにとって直感的であって、ロボットは、その独自の状態（関節角度、力等）を感知することができるため、複雑なタスクまたは運動が、容易に実証、感知、および記録されることを可能にする。
【０００４】
ロボットアームの手による誘導を促進するために、典型的には、２つの一般的アプローチのうちの１つが、採用される。第１のアプローチでは、ロボットは、アームの終点における力またはトルクを感知し、ロボットの運動を制御し、これらの力を最小限にすることによって、ユーザが命令した運動を「承認」するように構成される。本目的のために、「承認デバイス」は、例えば、エンドエフェクタに搭載された力／トルクロードセルによって提供され得る、非常に正確な力感知能力だけではなく、ロボットプラットフォームのための正確な動的モデルおよび制御方式も要求する。しかしながら、ロードセルは、脆弱であって、多用されるロボットにとって非実践的となる。さらに、大量生産されるロボットの場合、正確な動的モデルおよび制御方式を実装するために要求されるロードセルおよびハードウェアは両方とも、高価であって、多くの場合、非常に高価である。
【０００５】
第２のアプローチでは、ロボットは、ユーザによって所望される運動を最小限にのみ「妨害」するように設計される。低機械インピーダンスは、原則として、ロボットの可動構成要素の質量および慣性を低減させることによって達成されることができるが、これは、好ましくは、それ自体が大きくかつ重い、有意な負荷を運搬するように意図されるロボットには非実践的である。代替として、低インピーダンスデバイスは、ユーザが、アームの位置を自由に制御することを可能にするように、力およびトルクを関節に能動的に印加してもよい。例えば、ロボットは、関節に内部から印加される力が、ロボットアームを構成する連結部の質量による重力を正確に補償するモードで動作されてもよい。各関節において、内部から印加されるトルクが、下流連結部の重量と平衡を保つ場合、アームは、浮動し、移動が容易となり、ユーザにとっては、アームが、減少またはゼロ重力下にあるかのように感じるであろう。補償におけるいかなるわずかな誤差も、概して、アームを空間内で浮動またはドリフトさせるが、ヒトが、アームを保持している場合、本ドリフトは、容易に克服されることができる。
【０００６】
６以下の運動自由度を伴うロボットアームの場合、最遠位連結部の位置および配向（例えば、空間座標ｘ、ｙ、およびｚ、ならびにオイラーの公式における、遠位連結部のロール、ピッチ、およびヨーを規定する６次元ベクトルとして表されることができる）は、ロボットの全関節に対する設定を一意に判定する。しかしながら、ロボットアームが、６を超える自由度を有する場合、連結部および関節の多くの異なる構成が、同一の終点をもたらし、アームの所望の姿勢のさらなる仕様が、いかなる曖昧性も除去するために要求される。一般に呼ばれるように、そのような「冗長性」は、ロボットに対してより優れた精巧性を提供するため、多くの場合、望ましい。冗長ロボット（すなわち、終点の位置および配向を介して一意に規定可能なものを上回る自由度を伴うロボット）の場合、好ましい姿勢は、例えば、障害物を回避し、関節トルクを低減させ、移動を最小限にするように等、タスクに基づいて選定されてもよい。冗長自由度を有していないロボットは、対照的に、いったん終点が規定されると、そのような付加的基準を考慮する柔軟性を提供しない。用語「姿勢」は、本明細書では、アームまたは他のマニピュレータあるいはその複数の要素の位置および配向を示すために使用される。姿勢は、任意の便宜的参照フレームにおいて規定されてもよい。例えば、姿勢は、集合的に、少なくともそのいくつかの要素の空間位置および配向を規定する、マニピュレータの自由度に対応する座標に関する一式の値によって、または３次元空間位置および配向（例えば、ロボットに対して、またはロボットが動作する部屋に対して）に直接対応する座標に関する一式の値によって規定されてもよい。
【０００７】
欠点として、冗長性は、終点の位置が、他の部品の運動を完全に制約しないため、ユーザが、アームの姿勢を完全に制御することができない（少なくとも、片手では）ことを含意する。例えば、ヒトの腕に類似する運動学を伴うロボットアームの場合、エンドエフェクタ（または、ロボットの「ハンド」）を移動させることによって、エルボの運動を付勢することは不可能である。ユーザが、両手を使用して、ロボットアームの姿勢を付勢することができるが（例えば、ハンドおよびエルボを同時に移動させることによって）、概して、ユーザが、片手でアームを誘導し、例えば、ボタンを押下する、別個のインターフェースを運転する等のために、他方の手を自由にすることを可能にすることが好ましい。低インピーダンス冗長マニピュレータの場合、さらなる（おそらく、より重要な）問題は、関節に印加される力および／またはトルクにおけるいかなる誤差も、アームの冗長部品を制御不能にドリフトさせ、非実践的かつ潜在的に危険であることである（例えば、アームとロボットの他の部品またはロボットの環境内の人々および物体との衝突をもたらす場合）。
【０００８】
故に、エンドエフェクタから冗長ロボットマニピュレータを手で誘導するための解決策として効果的であるために、マニピュレータは、移動が容易であって、制御不能ドリフトを排除または少なくとも低減させる様式に制約され、好ましくは、必要に応じて、その姿勢を再構成可能である必要がある。
【発明の概要】
【課題を解決するための手段】
【０００９】
（要約）
本発明は、マニピュレータが、片手を使用して、その終点から容易に誘導されることができるが、重力補償モードで動作されると、制御不能に移動しないように、冗長ロボットマニピュレータの姿勢および／または移動を制約するためのシステムおよび方法を提供する。種々の実施形態によると、低インピーダンスロボットの冗長自由度は、わずかに制約される。すなわち、ロボットアームの自由度を低減させるのではなく、制約力および／またはトルクが、ロボットアームを特定の好ましい構成（以下、「基準姿勢」）に押勢するように、ロボット関節に内部から印加される。これらの制約力および／またはトルクによって、ロボットアームは、基準姿勢において最小値を有するエネルギーポテンシャル内にあるかのうように、その運動自由度が及ぶ空間（すなわち、その可能性として考えられる姿勢の空間）内を移動する。
【００１０】
制約力またはトルクは、概して、ロボットマニピュレータの算出モデルに基づいて判定され、重力を補償するトルクおよび力に追加される。例えば、制約力またはトルクは、「仮想ばね」（すなわち、算出目的のためだけに使用され、概して、マニピュレータのいかなる物理的構成要素にも対応しない、ばね）によって付与される（復元）力としてモデル化されてもよい。いくつかの実施形態では、仮想ばねは、１つ以上の戦略的に選択された関節に接続されたねじりばねであって、その基準位置からの関節の回転変位に大きさが依存する、個別の復元力を用いて、その個別の基準回転位置（すなわち、関節が基準構成においてとる回転位置）に向かって関節を引き戻す。他の実施形態では、制約は、「関節空間」ではなく、デカルト（すなわち、ｘｙｚ）空間内に課される、すなわち、基準位置は、選択された関節の角度（すなわち、回転位置）の観点からではなく、ロボットアームの１つ以上の戦略的に選択された点のデカルト空間座標の観点から定義される。例えば、ロボットの「エルボ」は、特定の（「基準」）高さに制約されてもよい。デカルト制約は、アームの選択された点と３次元空間内の固定場所との間に取り付けられた仮想ばねをモデル化することによって実装されることができる。ばねは、個別の固定場所からの戦略的点の（線形）変位に依存する、復元力を付与する。ロボットアーム上の関節および／または点を「戦略的に」選択するとは、本明細書では、選択された関節または点に課される制約が、他の関節またはロボット点に課される制約と比較して、ロボットアーム運動に有意な影響を及ぼす、すなわち、冗長性を制約するように特に良好に作用することを意味する。
【００１１】
関節に印加される制約力およびトルクは、概して、アームを通して伝搬し、エンドエフェクタに力を付与するが、これは、ユーザが、エンドエフェクタを動かないように保持する場合、妨げられ得る。しかしながら、いくつかの実施形態では、制約力および／またはトルクは、最初から、本明細書では、ロボット連結部が終点を移動させずに移動することができる空間として定義される、ロボットの「ヌル空間」内に印加される。ヌル空間は、概して、終点の瞬時位置および配向に依存し、ヌル空間内では、エンドエフェクタにかかる力は、回避される。力および／またはトルクの算出は、この場合、（瞬時）ヌル空間への基準姿勢および現在の姿勢の投射を伴い得る。
【００１２】
いくつかの実施形態では、基準姿勢は、ユーザによって物理的に設定されることができる。例えば、ユーザは、ロボットアームを所望の姿勢に置き、次いで、スイッチを押下し、基準姿勢を現在の姿勢に初期化してもよい。他の実施形態では、基準姿勢は、数字として設定される（例えば、プログラム的に、あるいは従来のユーザインターフェースを介した関節の角位置または他の姿勢パラメータのユーザ仕様によって）。基準姿勢は、単一固定姿勢である必要はなく、例えば、作業空間内のロボットの場所および配向またはロボット部品の相対的場所および配向（例えば、ロボットの本体に対するロボットのショルダの終点の場所または配向）の関数として、動的に変動してもよい。例えば、ロボットアームが前方にあるときの基準姿勢は、エルボを後方および側方に指向させ得る一方、ロボットアームが後方にあるときの基準姿勢は、エルボを前方および側方に保つことになるであろう。しかしながら、いかなる時点においても、基準姿勢は、固定される。
【００１３】
一側面では、本発明は、複数の関節を含み、重力を補償するモードで動作する、冗長ロボットマニピュレータを制約する方法に関する。本方法は、マニピュレータの姿勢を基準姿勢に向かって押勢するための１つ以上の制約トルクを算出することを伴う（プロセッサを使用して）。制約トルクは、基準姿勢からのマニピュレータの姿勢の変位に依存する。本方法はさらに、重力補償トルクおよび算出された制約トルクを含む、総トルクを関節に印加することを伴い、それによって、冗長マニピュレータは、冗長マニピュレータの移動が制約されている間、重力を補償するように動作される。
【００１４】
制約トルクは、復元トルクを含んでもよく、その大きさは、変位に線形に依存する。いくつかの実施形態では、制約トルクは、関節のうちの１つに取り付けられ、その関節をその基準位置に向かって引張する、仮想ばねによって印加されるトルクとして算出される。いくつかの実施形態では、制約トルクは、マニピュレータの選択された点に取り付けられ、基準デカルト位置に向かって、その点を選択されたデカルト方向に引張する、仮想ばねによって印加される復元力から生じるトルクとして算出される。制約トルクは、選択された点の近位（すなわち、その上流）の関節に対してのみ非ゼロであってもよい。代替として、制約トルクは、一端においてマニピュレータの関節または選択された点のうちの少なくとも１つに取り付けられ、第２の端部において静摩擦を伴う質量に取り付けられたばねによって印加されるトルクとして算出されてもよい。制約トルクの大きさは、マニピュレータの終点における内力を最小限にするように設定されてもよい。制約トルクは、マニピュレータのヌル空間内で算出されてもよい。
【００１５】
本方法はさらに、ユーザ入力に応答して、基準姿勢をマニピュレータの現在の姿勢に設定することを含んでもよい。さらに、基準姿勢は、他のロボット部品に対する、ロボットマニピュレータの部品の場所または配向、ロボット作業空間内のロボットの場所または配向あるいはそれと関連付けられた条件、もしくは現在実行されているロボットタスクのうちの少なくとも１つの関数として定義されてもよい。基準姿勢は、集合的に、少なくともそのいくつかの要素の空間位置および配向を規定する、マニピュレータの自由度に対応する座標に関する一式の値によって規定されてもよい。
【００１６】
別の側面では、本発明は、複数の関節によって直列に接続された複数の連結部を備える、マニピュレータと、そこにトルクを印加するために、関節と関連付けられたコントローラと、重力を補償するモードにおいて、関節に印加されるべきトルクを算出するために、コントローラと通信する、演算機器とを含む、ロボットを対象とする。マニピュレータは、少なくとも１つの冗長自由度を有し、トルクは、マニピュレータの姿勢を基準姿勢に押勢する制約トルクを含む。制約トルクは、復元トルクを含んでもよく、その大きさは、変位に線形に依存する。演算機器は、マニピュレータのヌル空間内の制約トルクを算出するためのモジュール、またはマニピュレータの終点における内力を最小値にするように、制約トルクの大きさを設定するためのモジュールを含んでもよい。
【００１７】
演算機器はさらに、基準姿勢の算出表現を記憶するメモリを含んでもよい。記憶された基準姿勢は、他のロボット部品に対するロボットマニピュレータの部品の場所および／または配向、ロボット作業空間内のロボットの場所または配向あるいはそれと関連付けられた条件、もしくは現在実行されているロボットタスクの関数として定義されてもよい。ロボットはさらに、マニピュレータの姿勢のパラメータを測定するためのセンサを含んでもよく、演算機器は、測定されたパラメータに基づいて、基準姿勢からのマニピュレータの姿勢の変位を算出するためのモジュールを含んでもよい。ロボットはさらに、ユーザが基準姿勢をマニピュレータの現在の姿勢に設定することを可能にする、ユーザインターフェース要素を含んでもよい。ロボットの関節は、直列弾性アクチュエータを含んでもよく、演算機器は、関節と関連付けられたコントローラに、関節に印加されるべきトルクに対応する個別の駆動電流を用いて、アクチュエータを駆動させるように構成されてもよい。
例えば、本願発明は以下の項目を提供する。
（項目１）
複数の関節を備える冗長ロボットマニピュレータを制約し、重力を補償するモードで動作させる方法であって、前記方法は、
プロセッサを使用して、前記マニピュレータの姿勢を基準姿勢に向かって押勢するための少なくとも１つの制約トルクを算出することであって、前記少なくとも１つの制約トルクは、前記基準姿勢からの前記マニピュレータの姿勢の変位に依存する、ことと、
重力補償トルクおよび前記少なくとも１つの算出された制約トルクを含む、総トルクを前記関節に印加することであって、それによって、前記冗長マニピュレータは、前記冗長マニピュレータの移動が制約されている間、重力を補償するように動作される、ことと
を含む、方法。
（項目２）
前記制約トルクは、復元トルクを含み、前記復元トルクの大きさは、前記変位に線形に依存する、項目１に記載の方法。
（項目３）
前記少なくとも１つの制約トルクのうちの少なくとも１つは、仮想ばねによって印加されるトルクとして算出され、前記仮想ばねは、前記関節のうちの１つに取り付けられ、その基準位置に向かって関節を引張する、項目１に記載の方法。
（項目４）
前記少なくとも１つの制約トルクのうちの少なくとも１つは、仮想ばねによって印加される復元力から生じるトルクとして算出され、前記仮想ばねは、前記マニピュレータの選択された点に取り付けられ、基準デカルト位置に向かって、その点を選択されたデカルト方向に引張する、項目１に記載の方法。
（項目５）
前記少なくとも１つの制約トルクは、前記選択された点の近位の関節に対してのみ非ゼロである、項目４に記載の方法。
（項目６）
前記少なくとも１つの制約トルクは、仮想ばねによって印加されたトルクとして算出され、前記仮想ばねは、一端において前記マニピュレータの関節または選択された点のうちの少なくとも１つに取り付けられ、第２の端部において静摩擦を伴う質量に取り付けられる、項目１に記載の方法。
（項目７）
ユーザ入力に応答して、前記基準姿勢を前記マニピュレータの現在の姿勢に設定することをさらに含む、項目１に記載の方法。
（項目８）
前記少なくとも１つの制約トルクは、前記マニピュレータのヌル空間内で算出される、項目１に記載の方法。
（項目９）
前記基準姿勢は、他のロボット部品に対する前記ロボットマニピュレータの部品の場所または配向、ロボット作業空間内のロボットの場所または配向あるいはそれと関連付けられた条件、もしくは現在実行されているロボットタスクのうちの少なくとも１つの関数として定義される、項目１に記載の方法。
（項目１０）
前記少なくとも１つの制約トルクの大きさは、前記マニピュレータの終点における内力を最小限にするように設定される、項目１に記載の方法。
（項目１１）
前記基準姿勢は、前記マニピュレータの自由度に対応する座標に関する一式の値によって規定され、前記一式の値は、集合的に、少なくともそのいくつかの要素の空間位置および配向を規定する、項目１に記載の方法。
（項目１２）
ロボットであって、前記ロボットは、
複数の関節によって直列に接続された複数の連結部を備えるマニピュレータであって、前記マニピュレータは、少なくとも１つの冗長自由度を有する、マニピュレータと、
前記関節にトルクを印加するために、前記関節と関連付けられたコントローラと、
重力を補償するモードにおいて、前記関節に印加されるべきトルクを算出するために、前記コントローラと通信する演算機器であって、前記トルクは、前記マニピュレータの姿勢を基準姿勢に押勢する制約トルクを含む、演算機器と
を備える、ロボット。
（項目１３）
前記演算機器は、前記基準姿勢の算出表現を記憶するメモリを備える、項目１２に記載のロボット。
（項目１４）
前記記憶された基準姿勢は、他のロボット部品に対する前記ロボットマニピュレータの部品の場所または配向、ロボット作業空間内のロボットの場所または配向あるいはそれと関連付けられた条件、もしくは現在実行されているロボットタスクのうちの少なくとも１つの関数として定義される、項目１３に記載のロボット。
（項目１５）
前記マニピュレータの姿勢のパラメータを測定するためのセンサをさらに備える、項目１２に記載のロボット。
（項目１６）
前記演算機器は、前記測定されたパラメータに基づいて、前記基準姿勢からの前記マニピュレータの姿勢の変位を算出するためのモジュールを備える、項目１５に記載のロボット。
（項目１７）
前記制約トルクは、復元トルクを含み、前記復元トルクの大きさは、前記変位に線形に依存する、項目１６に記載のロボット。
（項目１８）
ユーザが前記基準姿勢を前記マニピュレータの現在の姿勢に設定することを可能にする、ユーザインターフェース要素をさらに備える、項目１２に記載のロボット。
（項目１９）
前記演算機器は、前記マニピュレータのヌル空間内の制約トルクを算出するためのモジュールを備える、項目１２に記載のロボット。
（項目２０）
前記演算機器は、前記マニピュレータの終点における内力を最小限にするように少なくとも１つの制約トルクの大きさを設定するためのモジュールを備える、項目１２に記載のロボット。
（項目２１）
前記関節は、直列弾性アクチュエータを備え、前記演算機器は、前記関節と関連付けられた前記コントローラに、前記関節に印加されるべきトルクに対応する個別の駆動電流を用いて、前記アクチュエータを駆動させるように構成されている、項目１２に記載のロボット。
【００１８】
前述は、特に、図面と関連して検討されることによって、以下の発明を実施するための形態からより容易に理解されるであろう。
【図面の簡単な説明】
【００１９】
【図１Ａ】図１Ａは、種々の実施形態による、例示的ロボットを図示する、斜視図である。
【図１Ｂ】図１Ｂは、種々の実施形態による、図１Ａのロボットのロボットマニピュレータ（すなわち、アーム）の拡大図である。
【図２】図２は、種々の実施形態による、ロボット関節において採用され得る直列弾性アクチュエータの概略図である。
【図３Ａ】図３Ａは、制約力またはトルクを算出するために、一実施形態による、ロボットアームの複数の関節に適用される仮想ばねを図示する、概略図である。
【図３Ｂ】図３Ｂは、制約力またはトルクを算出するために、一実施形態による、伸長状態（左）および弛緩状態（右）におけるロボットアーム上の点と固定空間場所との間に適用される仮想ばねを図示する、概略図である
【図４】図４は、種々の実施形態による、冗長ロボットマニピュレータを制約するための方法を図示する、流れ図である。
【図５】図５は、種々の実施形態による、制約力またはトルクを算出するための演算機器を図式的に図示する、ブロック図である。
【発明を実施するための形態】
【００２０】
（詳細な説明）
図１Ａは、本明細書による、例示的ヒト型ロボットを図示する。ロボット１００は、ロボット本体１０４に接続された２つのロボットマニピュレータ１０２、すなわち、「ロボットアーム」と、画面１０６およびユーザ入力を促進する種々の機械的制御（ボタンおよびタッチパッド等）を含む、ユーザインターフェースとを含む。各アーム１０２は、エンドエフェクタとしてそこに搭載された平行ジョーグリッパ１１２を伴う、リスト１１０を有する。図１Ｂは、ロボットアーム１０２の拡大図を提供する。アーム１０２は、集合的に、７自由度、すなわち、１冗長自由度を提供する、７つの１次元回転式関節１１６によって、直列に接続された７つの連結部１１４を含む。図１Ｂにおける矢印によって示されるように、各関節１１６は、角度が２つの連結部１１４間で変動することを可能にする（すなわち、連結部が連結部の軸と垂直な関節を通した軸の周囲を回転することを可能にする）、ヒンジとしての役割を果たすか、またはその中心軸（すなわち、その連結部の両端の関節を接続する軸）の周囲のより遠位の連結部１１４の回転を促進するかのいずれかを行う。当然ながら、描写されるロボット１００は、特定の実施例の１つにすぎない。一般に、本明細書によるロボットは、例えば、２つより少ないまたはより多いマニピュレータ、マニピュレータ内の異なる数の連結部および関節、異なるタイプの関節（例えば、滑り関節、自在関節等）、異なるタイプのエンドエフェクタ（例えば、吸引グリッパ）、種々のロボット部品（本体およびアーム等）の全体的異なる構成等を含んでもよい。より多数の連結部および関節および／または２自由度以上を提供する関節（例えば、自在関節）は、概して、ロボットマニピュレータにおける自由度の数、したがって、冗長性の量を増加させる。
【００２１】
ロボット１００は、典型的には、力制御モードで動作し、アクチュエータは、関節レベルコントローラから受信したコマンドに従って、規定された力を関節に印加する。関節レベルコントローラは、順に、ロボット位置、運動学、動特性、および力を監視ならびに改変する、より高いレベルのロボットコントローラから、コマンドを受信してもよい。ロボットコントローラは、ロボットのタスクの施行のために要求される力およびトルク、またはユーザ誘導および重力補償動作モードでは、本明細書に従って、ロボットアームの運動に制約を課し、冗長システムを安定させながら、ロボットアーム連結部の重力を補償するために必要な力およびトルクを算出する、演算機器（図５を参照して以下に詳細に説明される）の一部である、またはそれと通信してもよい。算出は、概して、ロボットの３次元自己モデル、すなわち、センサ測定値に基づき得る、ロボット部品間の幾何学形状、質量、および構造関係、ならびにロボットの現在の構成（アームの連結部の位置および配向を示すパラメータを含む）を表すデータ構造を利用する。
【００２２】
いくつかの実施形態では、直列弾性アクチュエータが、ロボット関節に使用される。直列弾性アクチュエータは、例えば、１９９７年７月２２日に発行され、その全開示が、参照することによって本明細書に組み込まれる、米国特許第５，６５０，７０４号に詳細に説明されている。図２に図式的に図示されるように、関節のための直列弾性アクチュエータ２００は、概して、モータ２０２と、ギヤボックス２０４と、ギヤボックス２０４と負荷２０８との間に直列に接続されるばね（例えば、回転式関節の場合、ねじりばね）等、負荷２０８が伝達される、直列弾性要素２０６とを含む。特定の関節１１４における負荷２０８は、その関節の遠位の全ロボット構成要素（例えば、マニピュレータ連結部１１４、他の関節１１４等）だけではなく、ロボットの通常のタスクの施行の間、ロボットが個別のアーム１０２を用いて搬送する任意の物体、言い換えると、関節１１４に印加される外部トルクに寄与するあらゆるものを含む。負荷２０８を支持するために、モータ２０２は、演算機器によって算出される、適正な電流によって駆動される。直列弾性アクチュエータ２００は、典型的には、モータ２０２と関連付けられた位置センサまたはエンコーダ２１０（例えば、一式のホール効果センサおよび関連付けられた計数回路）、モータ２０２に供給される電流を測定する電流計２１２、直列弾性要素２０６が偏向する角度を測定するばね偏向センサ２１４、および関節の出力角度を測定する出力位置センサ２１６（例えば、磁気角度エンコーダ）等、関節の状態を監視するための１つ以上のセンサを具備する。モータ２０２を駆動させる電流は、角モータ位置、ばねトルク、および出力角度（すなわち、負荷の角位置）の測定値を考慮して、個別の関節レベルコントローラによって設定されてもよい。センサ測定値は、相互一貫性（例えば、関節動作のモデルに基づいて）に関して監視され、ロボット１００が意図されるように動作することを確実にしてもよい。
【００２３】
種々の実施形態では、ロボット１００は、訓練モード、すなわち、ユーザ誘導モードを提供し、ロボットアーム１０２は、自動的に（例えば、プログラムされたタスクに従って）移動するのではなく、ユーザの物理的手による誘導に応答して、受動的に移動する。典型的には、ユーザは、そのリスト１１０またはエンドエフェクタによって、アーム１０２を誘導するが、他のロボット関節および連結部の物理的ユーザ操作もまた、可能性として考えられる。アーム１０２を誘導する際のユーザの容易性を最大限にするために、ロボットは、ゼロ力重力補償モードで動作されてもよい。従来、本モードは、ロボットの各関節におけるトルクをその関節から下流の質量と平衡を保つために要求されるであろうトルクと等しくなるようにコマンドを出すことによって実装される。例えば、関節ｊにおけるトルクＴｊが、以下のように、ロボットの種々の関節ｉの現在の関節角度｛θｉ｝と、ロボットアーム内の全連結部ｋの質量｛ｍｋ｝、長さ｛ｌｋ｝、および関節から中心までの距離｛ｄｋ｝と（自己モデルのパラメータを構成する）の関数として与えられる。
Ｔｊ＝Ｇｊ（｛θｉ｝，｛ｍｋ｝，｛ｌｋ｝，｛ｄｋ｝）
関節毎の関数Ｇｊは、分析的に、または、例えば、Ｏｒｏｃｏｓ  Ｐｒｏｊｅｃｔによって提供され、ｈｔｔｐ：／／ｏｒｏｃｏｓ．ｏｒｇ／ｗｉｋｉ／ｏｒｏｃｏｓ／ｋｄｌ−ｗｉｋｉからダウンロード可能である、Ｋｉｎｅｍａｔｉｃｓ  ａｎｄ  Ｄｙｎａｍｉｃｓ  Ｌｉｂｒａｒｙ（ＫＤＬ）等のオープンソースロボット制御ソフトウェアを使用して、容易に計算されることができる。
【００２４】
ロボットアームの運動に（わずかな）制約を課すために、従来のゼロ力重力補償モードは、トルクの算出に項を追加することによって修正されてもよい。これらの付加的トルク項は、ロボットアームが、所定の基準構成または姿勢に向かって移動する傾向となるように設定される。いくつかの実施形態では、基準姿勢は、ロボット関節（のうちの少なくともいくつか）の基準回転または中心回転位置θｊ０の観点から定義される。関節をその基準回転位置に引き戻すトルクを算出するために、関節は、基準位置に対応する固定点に接続された仮想ねじりばねに取り付けられるように、またはより直感的に、その弛緩（すなわち、平衡）状態が基準回転位置θｊ０に対応する、関節の両側の２つの連結部間に接続された仮想ねじりばねを含むように、モデル化されてもよい。図３Ａは、一例として、関節３０２における２つの隣接する連結部間に接続される、そのような仮想ばね３００を概念的に図示する。（ばね３００は、ロボットアームの実際の物理的要素に対応しないという意味において、「仮想」である。しかしながら、関節３０２は、関節における総トルクを測定する、直列弾性アクチュエータのばね２０６等の実際の物理的ばねを含んでもよく、典型的には、含むことに留意されたい。）仮想ばねは、基準位置θｊ０からの関節ｊの角変位に依存する、復元トルクを関節に付与する。仮想ばねによって付与されるトルクはまた、随意に、関節の角速度ｄθｊ／ｄｔに依存（かつ、それに対抗）する、減衰項を含んでもよい。したがって、修正されると、関節ｊに内部から印加されるトルクＴｊは、以下の形態をとる。
Ｔｊ＝Ｇｊ（｛θｉ｝，｛ｍｋ｝，｛ｌｋ｝，｛ｄｋ｝）＋αｊ・［Ｋｊ（θｊ−θｊ０）＋Ｄｊ（ｄθｊ／ｄｔ）］
式中、αは、明確にするために、復元項Ｋおよび減衰項Ｄから抽出されたスケーリング項であって、その範囲は、例えば、α＝１００が、最大剛性に対応し、α＝０が、（厳密に）ゼロ重力モードに対応するように設定されてもよい。
【００２５】
純粋なばねモデルに基づいて、制約トルクを算出する代替として、単純摩擦モデルが、一定基準位置に対応する固定点ではなく、静摩擦を伴う質量に接続されたねじりばねに取り付けられるように関節をモデル化することによって実装されてもよい。この場合、α・［Ｋ（θｊ−θｊ０）］が、規定された閾値を超えると、所望の位置θｊ０は、以下のように更新される。
θｊ０（ｔ＋１）＝θｊ０（ｔ）＋（１／ｍｊ）・αｊ・［Ｋｊ（θｊ−θｊ０（ｔ））］
式中、ｍｊは、関節特有のスケーリング係数である。摩擦モデルを精緻化するために、速度項が、以下のように追加されてもよい。
θｊ０（ｔ＋１）＝θｊ０（ｔ）＋β・ｄθｊ（ｔ）／ｄｔ・ｄｔ
式中、βは、１未満に設定されるスケーリングパラメータである。
【００２６】
前述の仮想ばねモデルは、回転自由度を制約するためのねじりばねに具体的に関連するが、本アプローチは、滑り関節等、隣接する連結部間の相対的線形運動を可能にする関節に適用される、線形仮想ばねも包含するように簡単に拡張されることができる。さらに、複数の仮想ばねが、その関節が２自由度以上を提供する場合、同一の関節に適用されてもよい。
【００２７】
仮想ばねは、概して、関節のうちの１つ、そのうちのいくつか、またはその全部に適用されてもよい（すなわち、好適な復元力および／または減衰項が、それらに対して算出された内部から印加されるトルクに追加されてもよい）。しかしながら、典型的実施形態では、仮想ばねは、ロボットアーム運動の冗長性に著しく寄与するそれらの関節のみに戦略的に追加される一方、関節は、アームの誘導が真のゼロ重力モードで動作されるとき、ユーザによって（完全にまたは大部分が）制御される。（冗長性に寄与する関節の数は、必ずしも、冗長自由度の数と等しいわけではないことに留意されたい。）例えば、図１Ｂを参照すると、アームが、エンドエフェクタに保持される場合、アームおよびリストの下側部品（図１ＢにおけるＥ１、Ｗ０、Ｗ１、Ｗ２に対応する）ならびにベースショルダツイスト（Ｓ０）は、ユーザによって容易に制御されることができ、算出上制約される必要はない。機構の冗長部品は、仮想ばねを２つのエルボ関節Ｓ１およびＥ０に追加することによって制約されることができる、「エルボ」である。しかしながら、原則として、仮想ばねは、概して、関節毎にαの異なる値を用いて、全関節に追加され、各ばねの剛性を独立して設定することができる。
【００２８】
集合的に、α、Ｋ、およびＤのパラメータ値によって捕捉される、剛性は、アームが容易に移動するが、冗長性が十分に制約されるように調整されてもよい。これは、概して、トレードオフを伴う。すなわち、αがあまりに低く設定される場合、アームは、より容易に移動するが、エルボ１１０は、あまり制約されず、その逆も同様となるであろう。剛性の最適レベルは、特定の用途に依存してもよい。一般に、剛性は、平均的体力および身長のユーザが、アームを誘導するために通常かつ好適な姿勢にあるとき、過度の力を付与せずに、手でロボットアームを移動させることができるように選定される。いくつかの実施形態では、最適剛性は、実験的に判定される。例えば、複数の試験ユーザがそれぞれ、剛性値（または、複数の関節が関わる場合、一式の剛性値）の種々の設定下でアームを誘導し、最も快適な設定を選択（または、相対的快適レベルに基づいて、設定を格付けあるいはランク付け）するように求められてもよい。ユーザの快適レベルは、ロボットアームが誘導され得る容易性およびアームの運動の安定性（課される制約の強度に依存する）の両方を考慮してもよい。異なる試験ユーザの応答は、次いで、平均化または別様に組み合わせられ、群に対して設定を最適化してもよい。
【００２９】
各制約された関節をその基準位置に向かって押勢する、制約トルクが、直接、関節に印加されると、正味トルクまたは力ｆが、概して、ロボットマニピュレータの終点において生じる。終点を動かないように保つ、またはそれを自由に移動させる（基準構成に向かって以外）ために、ユーザは、少なくとも部分的に、本正味トルクまたは力ｆに対抗する必要がある。種々の関節に対する剛性αの相対的設定は、正味トルクまたは力ｆを低減させるように利用されてもよい。具体的には、αを設定する方法の１つは、以下のように求められる、アームが動かないように保持されるときにユーザによって感じられる力ｆを最小限にすることである。
ｆ＝Ｊ＋（Ｔ−Ｇｒｅａｌ（｛θｉ｝，｛ｍｋ｝，｛ｌｋ｝，｛ｄｋ｝））
式中、Ｊ＋は、それぞれ、ロボットによって内部からおよび重力によって外部から関節に印加されるトルクを表す、ベクトルＴおよびＧｒｅａｌの関数である、ヤコビアンの擬似逆行列である。前述のばねモデルの場合、重力補償力Ｇが実際の重力Ｇｒｅａｌに等しいと仮定すると、これは、以下と等しい。
ｆ＝Ｊ＋（α・［Ｋ（｛θｊ−θｊ０｝）＋Ｄ（｛ｄθｊ／ｄｔ｝）
ユーザは、終点を保持しながらアームを移動させるにつれて、いくつかの残っている力項ｆ（関節に追加される仮想ばねのため）に加え、アームの慣性による力を感じるであろう。
【００３０】
いくつかの実施形態では、終点における仮想ばね誘発力は、これらの内部から印加される力をロボットのヌル空間、すなわち、終点を移動させないロボットマニピュレータの運動の範囲に制限することによって、完全またはほぼ完全に回避される（すなわち、算出正確度および精度の限界内）。ヌル空間は、マニピュレータの自由度が及ぶ空間の部分空間であって、その次元数は、マニピュレータの冗長自由度の数に等しい。ヌル空間の次元は、概して、具体的関節と個々に関連付けられないが、集合的に、冗長性に寄与する全関節と関連付けられ、これらの関節の位置の間の関係に対応し得る。例えば、１冗長自由度を伴うマニピュレータは、冗長性に寄与する２つの１次元関節を有し、冗長自由度が及ぶ２次元空間内にあって、一方の冗長関節の位置を他方の位置に関連させる、１次元ヌル空間をもたらし得る。
【００３１】
力またはトルクをヌル空間内に印加するために、マニピュレータの自由度が及ぶ空間内のベクトル（例えば、関節ｊと関連付けられた自由度の方向に大きさ（θｊ−θｊ０）（回転角度）を伴うベクトル）として表され得る、基準位置からの関節の変位が、ヌル空間内に投射され得る、すなわち、ヌル空間と平行な変位ベクトルの成分が、抽出され得る（および、垂直成分は無視される）。投射されたベクトルは、以下のように表され得る。
（Ｉ−Ｊ＋Ｊ）（θ−θ０）
式中、Ｉは、単位行列であって、Ｊは、ヤコビアンであって、θおよびθ０は、それぞれ、現在の角位置および基準位置のベクトルである。仮想ばねが、次いで、ヌル空間内に適用され、投射された変位に平行な力を生成し得る。（これは、終点が以降に移動し得ることから、瞬時ヌル空間が、基準姿勢が設定される時に存在したヌル空間と異なり得るため、概して、単に、ヌル空間内への現在の姿勢の投射ではなく、また、基準姿勢の投射も伴うことに留意されたい。）結果として生じるトルクは、例えば、以下のように表され得る。
Ｔ＝Ｋ（Ｉ−Ｊ＋Ｊ）（θ−θ０）
式中、Ｋは、トルクに対する利得変換変位である。これらの仮想ばねは、終点に余剰力を生じさせずに、関節を基準姿勢に向かって駆動させる。（一般に、基準姿勢は、経時的に変動し、したがって、終点が移動し得るため、基準姿勢が設定された時に存在した姿勢と異なり得る。）投射は、終点が移動するにつれて、継続的に再計算される必要がある（基準姿勢が同一のままである場合でも）。代替として、力またはトルクは、ヌル空間に関係なく、最初に算出され（例えば、トルクＫ（θ−θ０をもたらす）、その後、ヌル空間内に投射され、Ｔ＝（Ｉ−Ｊ＋Ｊ）Ｋ（θ−θ０）（Ｋは、スカラーであるため、前述と同じ）をもたらしてもよい。いずれの場合も、ロボットによって関節ｊに印加される最終トルクは、以下のように表され得る。
Ｔｊ＝Ｇ（｛θｉ｝，｛ｍｋ｝，｛ｌｋ｝，｛ｄｋ｝）＋Ｐ（θｊ、θｊ０）
式中、θｊ０は、関節ｊの所望の（すなわち、基準）角位置であって、Ｐは、角変位に依存し、以下のように角度および／または力をヌル空間内に投射する、投射関数である。
Ｐ（θｊ，θｊ０）＝Ｋ（Ｉ−Ｊ＋Ｊ）（θ−θ０）
【００３２】
仮想ばねによって制約される関節に対する基準位置θｊ０は、種々の方法で設定されることができる。一実施形態では、ユーザは、単に、例えば、ユーザがエンドエフェクタを保持している間、容易に到達可能であるように、アームの遠位端に位置し得る、指定されたスイッチを押下することによって、基準位置を関節の現在の位置に設定することができる。ユーザが、スイッチを押下すると、アームは、ゼロ力重力補償モードになり、ユーザが、アームを所望の姿勢に誘導し（ロボットのエンドエフェクタを片手で移動させ、随意に、別の手でエルボを押動させることによって）、次いで、スイッチを解放し、「剛性モード」、すなわち、前述の修正されたゼロ力重力補償モード（α＞０）をオンにすることによって、基準姿勢をその姿勢に初期化することを可能にする。本機構は、ユーザが、基準姿勢を容易に制御することを可能にする。基準姿勢を随時リセットするためには、単に、ボタンを押下し、アームを新しい姿勢に移動し、ボタンを解放することが必要となる。代替として、基準角位置は、キーボードまたは他のユーザインターフェースデバイス（例えば、機械的ダイヤルまたはグラフィックユーザインターフェース要素）を介して、数字として打ち込まれてもよい。ロボットはまた、デフォルト基準姿勢でプログラムされてもよい。
【００３３】
いくつかの実施形態では、基準姿勢が、定義され、制約が、関節空間の代わりに、デカルト（すなわち、ｘｙｚ）空間内に課される。本アプローチでは、戦略的関節を選択し、アームの運動を限定するのではなく、アーム上の戦略的点および関連付けられた方向が、アームを制約するために選定される。例えば、ロボットのエルボの高さ（すなわち、ｚ−方向におけるエルボの位置）は、規定された高さ、規定された高さを中心とする範囲、またはさらに規定された高さの上下の空間に制限されてもよい。ロボット上の特定の点および方向は、概して、ロボットアームの自由度およびアームがユーザによって保持されるであろう部品の知識に基づいて選定されることができる。当然ながら、特定の点はまた、２次元以上において制約されてもよい（但し、ロボット点に対して３つの空間座標が規定される場合、制約は、もはやわずかではない）。
【００３４】
デカルト制約は、ロボットアーム上の選択された点と、ばねの弛緩（または、平衡）状態では、個別の基準位置をもたらす、固定座標との間の制約された方向における仮想ばねを用いてモデル化されることができる。例えば、図３Ｂ（ロボットアームの現在の姿勢（左）および基準姿勢（右）を並べて示す）に概念的に図示されるように、ｚ−方向における仮想ばね３１０は、ロボットのエルボ３１２を拘束し、その高さは、ばねが弛緩されると（右）、エルボ３１２が基準高さｚＥ０となるように、固定高さ３１４に対してｚＥ（左）となるようにし得る。エルボに接続されたそのようなばねと関連付けられた復元力ｆＥは、以下である。
ｆＥ＝Ｋ（ｚＥ−ｚＥ０）
本復元力は、アーム連結のヤコビアンを使用して、関節トルクに変換されることができる。
ＴＲ＝ＪＴ・ｆＥ、
式中、ＪＴは、上下列の上流部品（すなわち、エルボの上流または近位の関節であって、トルクが、仮想ばねをシミュレーションするために印加されることができる）のみを含むアームのサブ機構に対するヤコビアンの転置行列であって、ＴＲおよびｆＥは、ベクトルである。これらのトルク項は、次いで、重力補償項Ｇ（｛θｉ｝，｛ｍｋ｝，｛ｌｋ｝，｛ｄｋ｝）に追加され、関節ｊに印加される以下のトルクをもたらす。
Ｔｊ＝Ｇｊ（｛θｉ｝，｛ｍｋ｝，｛ｌｋ｝，｛ｄｋ｝）＋ＴＲｊ
【００３５】
デカルト空間内で基準位置または姿勢を設定するために、関節空間内で基準姿勢を設定するための前述と同一の方法が、採用されることができる。例えば、ある実施形態では、デカルト空間内の基準位置は、スイッチを押下し、アームを所望の位置に誘導し（例えば、エルボが所望の高さに位置するように）、次いで、スイッチを解放する（それによって、基準エルボ高さを現在の高さに設定する）ことによって、所与の点および方向に対して設定されることができる。代替として、所望の位置は、例えば、従来のユーザインターフェースを介して、数字として打ち込まれてもよい。
【００３６】
当業者によって容易に理解されるであろうように、関節空間内の制約に関する前述の種々の側面は、デカルト制約にも同様に簡単に適用されることができる。例えば、前述のデカルト制約は、減衰項を含む、または固定点ではなく、静摩擦を伴う質量に取り付けられるようにばねをモデル化するように修正されてもよい。さらに、ばねの剛性（または、複数の個別のロボット点に取り付けられた複数のばねの剛性）は、アームを十分に制約することと、それを手で容易に移動させるように保つこととの間のトレードオフを最適化する、および／または終点における力を最小限にするように簡単に調整され得る。内部から印加される力はまた、ロボットのヌル空間内に投射される、またはその中で算出され、終点における内力を排除（または、ほぼ排除）してもよい。さらに、いくつかの実施形態では、関節空間およびデカルト制約が、冗長ロボットマニピュレータを安定化させるためにともに使用される。
【００３７】
前述のように、マニピュレータを固定基準位置に向かって押勢する仮想ばねを用いて、関節空間またはデカルト空間内における冗長自由度を制約する効果は、概して、終点が動き回っている間、冗長性に関与するアームの連結部または関節をその基準位置に近接して、例えば、スイッチが解放されるときのその開始位置に近接して保つことである。本アプローチは、本質的に、基準位置を設定する柔軟性を提供するが、しかしながら、目の前のタスクに便宜的である。その短所は、いったんアームが、開始場所から離れると、終点に、オペレータが克服する必要がある有意な力が存在し得る、または力が、ロボットのヌル空間内のみに印加される場合、制約力は、非常に小さくなり得る（基準姿勢が、瞬時ヌル空間から離れているため）ことである。
【００３８】
故に、代替実施形態では、アーム運動は、可能性として考えられるロボット構成の作業空間および／または範囲全体を通して（すなわち、その中の位置の関数として）定義される「理想的」アーム姿勢の先験的仕様に依拠せずに、広可動域にわたって制約力を低減させる様式で制約される。本理想的、すなわち、前述で使用される専門用語では、基準姿勢は、概して、他方よりも優先される一方のアーム姿勢の選好性に関する経験則に基づいて判定される。例えば、図１Ａおよび１Ｂに描写されるロボットの場合、エルボが、エンドエフェクタが前方にあるとき、後方および側方に指向し、エンドエフェクタ１１２が後方にあるとき、前方および側方に指向し、アームが伸長され、エンドエフェクタ１１２がロボット本体から離れると、上方に指向することを要求することが望ましくあり得る。この場合、基準姿勢は、ロボットに対する終点の場所の関数である。当然ながら、基準姿勢は、一般に、任意のロボット部品の場所または配向（別の実施例を提供するために、ロボットのショルダの配向等）に依存してもよい。さらに、基準アーム姿勢は、作業空間内のロボットの場所および配向の関数である、あるいはロボットが現在実行しているタスクおよび／またはその環境の条件に依存してもよい。別の実施例を提供するために、ロボットが、車のシャーシの底部に下方から部品を設置する、自動車生産ラインのピット内で作業している場合、ロボットの上方の作業表面との衝突の機会を最小限にするように、上方ではなく、下方にロボットのエルボを保つことが望ましくあり得る。動的基準姿勢（すなわち、他の変数の（離散または連続）関数として定義されるが、随時、固定される、基準姿勢）は、多くの場合、ロボットのプログラミングにおいて規定される。しかしながら、また、（少なくとも部分的に）物理的、数値的、または別様に提供されるユーザ入力に基づいてもよい。例えば、ユーザは、有限数の作業空間内の位置、タスク等に対して、手動でロボットを好ましい姿勢に誘導してもよく、ロボットは、その後、状況に基づいて、随時、これらの姿勢のうちの１つを基準姿勢として選択してもよい。
【００３９】
図４は、流れ図の形態において、冗長ロボットマニピュレータを制約するための種々の方法を要約する。マニピュレータの制約は、概して、他の変数（作業空間内の位置および／または配向、別の部品に対する１つのロボット部品の位置および／または配向、ロボットのタスク、環境条件等）の関数として、静的または動的のいずれかにおいて、基準姿勢を定義することを伴う（ステップ４００）。基準姿勢は、物理的に設定（例えば、ユーザが、ロボットを所望の姿勢に誘導することによって）および記録されてもよく、または数字として規定されてもよい（例えば、プログラム的に、および／またはユーザ入力を介して）。基準姿勢は、部分的姿勢であってもよい、すなわち、アームの姿勢を完全に規定する必要はないが、その運動内で制約されるべき戦略的関節またはロボット点と関連付けられた規定位置に限定されてもよい。さらに、ロボットの現在の瞬時姿勢を判定（または、推定）するために、ロボットの自己モデルが、継続的または頻繁に更新される（ステップ４０２）。基準姿勢が、ロボットの現在の姿勢のある側面（例えば、ロボットのエンドエフェクタが前方または後方にあるかどうか）の関数である、実施形態では、更新された自己モデルはまた、基準姿勢の選択を更新するために使用されてもよい（ステップ４０４）。さらに、制約が、ロボットのヌル空間内に課されるべき場合、自己モデルは、瞬時ヌル空間（すなわち、終点を移動させないマニピュレータの可能性として考えられる移動）を算出するために使用されてもよい（ステップ４０６）。
【００４０】
現在および基準姿勢から、基準位置からの現在の（例えば、角）位置の変位が、計算される（ステップ４０８）。制約力および／またはトルクが、次いで、制約された挙動の算出モデル（例えば、前述のような仮想ばねモデル）に基づいて、これらの変位から算出される（随意に、角位置の変化率または他の姿勢パラメータ等の他のパラメータと併せて）（ステップ４１０）。いくつかの実施形態では、そこから算出された変位および／または制約力またはトルクは、ヌル空間内に投射される（ステップ４１２）。ロボットマニピュレータの冗長性を制約する力および／またはトルクに加え、各関節における重力を補償する力および／またはトルクが、算出される（ステップ４１４）。２つの力／トルクの集合は、次いで、関節の全てに対するトルクを算出するために追加され、次いで、関節に印加され（ステップ４１６）、重力補償であるが、制約されたモードにおいて、ロボットを動作させる。本プロセスは、ロボットがそのユーザ誘導モードにある限り、繰り返される。
【００４１】
前述の種々の実施形態のいずれかに従って、冗長自由度をわずかに制約しながら、重力を補償するトルクを算出するために要求される、算出機能性は、１つ以上の内蔵プログラマブルマイクロプロセッサ、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイ、特定用途向け集積回路、好適にプログラムされた汎用コンピュータ、または概して、ハードウェアおよび／またはソフトウェアの任意の好適な組み合わせによって提供されることができる。典型的には、演算機器は、少なくとも、プロセッサおよび関連付けられたメモリ（例えば、基準姿勢の算出表現およびロボットの自己モデルを記憶し得る）と、その間および／またはセンサおよびロボットコントローラとの通信を促進する、１つ以上のバスとを含む。演算機器は、ロボット内（例えば、その本体またはマニピュレータ内）に埋め込まれる、有線または無線接続を介して（例えば、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＷＬＡＮ、インターネット等を介して）、ロボットと通信するように、そこから別個に提供される、あるいは別個に埋め込まれるおよび／または適用され得る、複数のデバイス間に分散されてもよい。
【００４２】
図５に図示される一実施形態では、汎用コンピュータ５００は、関節に印加される制約力の算出を含む、ロボットの運動を協調させる、中央演算機器を提供する。コンピュータ５００は、プロセッサ（ＣＰＵ）５０２および関連付けられたシステムメモリ５０４（例えば、ランダムアクセスメモリ（ＲＡＭ））、１つ以上の不揮発性記憶デバイス５０６（例えば、１つ以上のハードドライブ、ＣＤ−ＲＯＭ、ＤＶＤ、磁気テープ、ＵＳＢメモリキー、または他の従来のデータ記憶メディア）、入力／出力（Ｉ／Ｏ）デバイス（例えば、画面、キーボード、およびマウス）を伴うユーザインターフェース５０８、およびこれらの構成要素間の通信を促進するシステムバス５１０を含んでもよい。システムバス５１０はまた、コンピュータと関節レベルコントローラ５１２ならびに関節の位置およびそこに印加される力を監視する役割を果たすロボットセンサ５１４（例えば、直列弾性アクチュエータ内のセンサ）を接続する。
【００４３】
システムメモリ５０４は、ファイルアクセス、メモリ配分、および他の低レベル機能性、ならびに本明細書に説明される方法を実装するための１つ以上の高レベルアプリケーションを統制する、オペレーティングシステム（ＯＳ）５２０を含む、モジュール内に編成されるプロセッサ実行可能命令を記憶する。高レベルアプリケーションは、例えば、ロボットコントローラを実装するモジュール５２２（コマンドを外部関節レベルコントローラ５１２に送信する）、センサ５１４からの入力に基づいて、ロボットの自己モデルを維持するためのモジュール５２４、基準姿勢を記録または別様に定義するためのモジュール５２６、ロボットの現在のヌル空間を判定するためのモジュール５２８、重力を補償するために要求されるトルク項を算出するためのモジュール５３０、および、例えば、マニピュレータを基準姿勢に向かって引張する仮想ばねを用いて、冗長自由度に関する制約をモデル化し、これらの制約を実装する付加的トルク項を算出するためのモジュール５３２を含んでもよい。モジュールは、限定ではないが、Ｃ、Ｃ＋＋、Ｃ＃、Ａｄａ、Ｂａｓｉｃ、Ｃｏｂｒａ、Ｆｏｒｔｒａｎ、Ｊａｖａ（登録商標）、Ｌｉｓｐ、Ｐｅｒｌ、Ｐｙｔｈｏｎ、Ｒｕｂｙ、またはＯｂｊｅｃｔ  Ｐａｓｃａｌ等の高レベル言語、あるいは低レベルアセンブリ言語を含む、任意の好適なプログラミング言語でプログラムされてもよい。当然ながら、種々の機能を実装する命令は、多くの異なる方法で群化および編成されてもよい。描写されるいくつかの離散モジュールへの編成は、例示にすぎない。
【００４４】
本明細書で採用される用語および表現は、限定ではなく、説明の用語および表現として使用され、そのような用語および表現の使用には、図示および説明される特徴またはその一部の任意の均等物を除外する意図はない。加えて、本発明の特定の実施形態が説明されたが、本明細書に開示される概念を組み込む他の実施形態が、本発明の精神および範囲から逸脱することなく使用されてもよいことは、当業者に明白となるであろう。故に、説明される実施形態は、あらゆる観点において、制限ではなく、例証にすぎないと見なされるものとする。
【図１Ａ】
0006312264.tif 000002
【図１Ｂ】
0006312264.tif 000003
【図２】
0006312264.tif 000004
【図３Ａ】
0006312264.tif 000005
【図３Ｂ】
0006312264.tif 000006
【図４】
0006312264.tif 000007
【図５】
0006312264.tif 000008