説明

冗長ロボットの関節目標値決定方法及び冗長ロボットの制御装置

【課題】関節数がn、先端目標値ベクトルXの次数がm(n>m)である冗長ロボットの関節目標値ベクトルθを少ない計算負荷で決定する。
【解決手段】ベクトルXを複数の部分ベクトルに分割する。各部分ベクトルに優先度を付与する。各部分ベクトルとベクトルθの間の線形関係式を求める。一の優先度kを選択し、「選択された優先度kよりも高い優先度を有する全ての部分ベクトルが線形関係式と不等式関係式の拘束条件の下で実行可能である領域が存在するか否か」を判定する(S14、S15)。その処理を異なる優先度の部分ベクトルに対して実行し、上記領域が存在すると判定された部分ベクトルのうち最も低い優先度を有する部分ベクトルについて、上記拘束条件の下で目的関数C2を最小にする凸二次計画法の解を求める(S21)。求めた解をロボットベクトルθとして決定する(S22)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御可能な関節の数nがロボット先端に与えられる先端目標値ベクトルの次数mよりも多い冗長ロボットの関節目標値ベクトルを決定する技術に関する。
【背景技術】
【0002】
典型的な冗長ロボットは、手先の直交3軸各軸方向位置と各軸回りの回転角の合計6個の先端目標値が与えられる7関節マニピュレータである。ロボット先端に与えられる先端目標値ベクトルの次数mよりも制御可能な関節の数nが大きいロボットを冗長ロボットという。関節の数nと先端目標値ベクトルの次数mの差は冗長度と呼ばれる。
【0003】
近年、人型ロボットの開発が盛んになり、冗長度が極めて大きいロボットを扱うケースが増えている。例えば、6関節の脚を2本と、6関節の腕を2本有するロボットで水を満たしたコップを運ぶ場合を想定する。このロボットは合計24自由度を有する。このロボットには、安定して歩行するために、夫々の足先位置(脚リンク機構の先端)に対して位置と角度の6自由度の先端目標値ベクトルが与えられる。さらにコップの水をこぼさないためには、コップを把持した手(腕リンク機構の先端)に対して水平2軸周りの回転角の2自由度の先端目標値ベクトルが与えられる。手先の水平面内2軸周りの角度、即ちコップの角度が一定であれば、コップの位置と垂直軸周りの回転角は任意でよい。また、他方の腕は、歩行バランスを維持するという条件の元で従属的にその手先位置と姿勢が定まる。即ち、このロボットは、制御可能な24自由度を有しながら、ロボット先端(足先と手先)に与えられる先端目標値ベクトルの次数が14である冗長ロボットである。このロボットの冗長度は、24(関節自由度)−14(先端目標値ベクトルの次数)=10であり、7自由度マニピュレータよりもはるかに大きな冗長度を有している。なお、ロボットには、制御周期毎に異なる先端目標値ベクトルが与えられる。先端目標値ベクトルの時系列データは「目標軌道」と呼ばれることがある。先端目標値ベクトルをどのように生成するかは、本発明の主眼ではないので説明は省略する。
【0004】
脚と腕を有する人型ロボットに典型的な問題(典型的ではあるが人型ロボットに限られるものではない)は、大きな冗長度を有することに加えて、先端目標値ベクトルが、夫々別の条件を満たさねばならない部分ベクトルの組み合わせとなっている点である。例えば上記のコップを運ぶロボットの場合、先端目標値ベクトルが、安定歩行という条件を満たすべき足先目標値ベクトルと、コップを水平に保つという条件を満たすべき手先目標値ベクトルの組み合わせになっている。
【0005】
さらに問題を複雑にするのが、先端目標値ベクトルを達成できる関節目標値が求まらない状況が起こり得ることである。関節目標値が求まらない場合とはどのような場合であるかは後述する。そのような場合、次善の関節目標値を求める必要がある。例えば上記したコップ運びロボットの場合、コップの水がこぼれても、即ち、手先の水平が維持できずとも、安定した歩行を維持することが優先される。
【0006】
このように、近年の多関節ロボット、典型的には人型ロボットでは、冗長自由度を含む関節目標値を合理的に決定するための技術が望まれている。さらには、先端目標値ベクトルを満足する関節目標値ベクトルが得られない場合、次善の先端目標値ベクトルを決める技術が望まれている。
【0007】
上記課題に対して一つの解決策を与える技術が非特許文献1で提案されている。非特許文献1の技術は、本発明を説明する上で重要であるので、ここで概説する。
【0008】
説明に先立って、本明細書で用いる技術用語、及びいくつかの記号を説明する。本明細書では、ベクトルと行列を扱う。ベクトルはかっこ書き{・}で表し、行列はかっこ書き[・]で表す。また上付き文字Tはベクトル又は行列の転置を表す。
【0009】
さらに、説明を理解しやすくするために、先端の目標値が速度(角速度)で与えられ、関節目標値は関節速度(角速度)で与えられるケースを想定する。なお、ロボットの技術分野では並進速度と回転角速度を混在して使うことが頻繁にある。そのため、本明細書では、並進速度と角速度の両者を「速度」という用語で総称する。そのような呼称により、回転関節と直動関節を統一して扱うことができる。速度の単位を有する関節目標値ベクトルを{dθ}で表し、速度の単位を有する先端目標値ベクトルを{dx}で表す。関節の数をnで表し、先端目標値ベクトルの次数をmで表す。即ち、ベクトル{dθ」はn次元であり、ベクトル{dx}はm次元である。ロボットの技術分野では、関節目標値ベクトル{dθ}と先端目標値ベクトル{dx}の間には、次の(数1)の関係があることは良く知られている。
【0010】
【数1】

【0011】
ここで、[J]はヤコビアンと呼ばれる行列である。ヤコビアン[J]の次数は、m行n列である。(数1)は手先速度が関節速度で表されることを意味する。手先の目標速度(即ち、先端目標値ベクトル)を実現する関節目標速度(即ち関節目標値ベクトル)を求めるには、ヤコビアン[J]の逆行列を求めればよい。冗長ロボットの場合、ヤコビアン[J]は、m行n列(m<n)であるから非正方行列である。その場合、先端目標値ベクトル{dx}を実現する関節目標値ベクトル{dθ}は、次の(数2)で求めることができる。
【0012】
【数2】

【0013】
(数2)における[J]は、[J]の擬似逆行列を表し、{k}はn次元の任意のベクトルである。また、{k}={0}(全ての要素がゼロであるベクトル)の場合、(数2)の解は、二乗ノルムが最小の解となる。
【0014】
先端目標値ベクトル{dx}が与えられたとき、[J]が求まれば、(数2)から関節目標値ベクトルを求めることができる。しかしながら、擬似逆行列[J]が常に求まるとは限らない。すなわち、(数2)を満たす[J]の解が求まらない場合が、与えられた先端目標値ベクトル{dx}を実現できる関節目標値{dθ}が求まらない場合に相当する。なお、(数2)に基づいて関節角({dθ}は微小時間Δt当たりの回転角に等しい)を逐次的に制御する方法は分解速度制御(或いは分解運動速度制御)として良く知られている(例えば、「ロボット制御基礎論」、吉川恒夫著、コロナ社、ISBN:978-4-339-04130-9)。
【0015】
{dx}は、先端目標値ベクトルであり、ロボットに行わせたい作業から定められる。先のコップ運びロボットの場合、{dx}は、安定して歩行するための各足先6個の速度と手先の2方向速度の合計14個の要素を有するベクトルとなる。従って冗長ロボットの問題は、与えられる先端目標速度ベクトル{dx}を実現する目標関節速度ベクトル{dθ}を求めることであり、即ち、(数2)を満足する解を求めることである。
【0016】
しかし、実際のロボットにおいては、関節目標値{dθ}はどんな値でも取り得るわけではない。例えば、ロボットのモータの性能によって出せる最大速度が存在する。また、関節には通常可動範囲が存在するが、可動範囲外へ向かうような関節目標値をとることはできない。つまり、(数1)の等式で示される条件に加えて、次のような、関節目標値の最大値と最小値で表される不等式の制約条件を考慮する必要がある。
【0017】
【数3】

【0018】
そこで、非特許文献1においては(数3)の不等式条件も考慮したアルゴリズムが提案されている。非特許文献1に開示された関節目標速度ベクトル(関節目標値ベクトル)の決定アルゴリズムを説明する。まず、目的(タスク)別に、先端目標値ベクトル{dx}を複数の部分ベクトル{dx}に分割する。ここで、下付き文字「i」は各部分ベクトルを区別するための指標を表す。「目的(タスク)」とは、ロボットに実行させたい作業の一つひとつを意味する。そして、複数の部分ベクトル{dx}の夫々に対して、ロボットが達成すべき順に優先度を付与する。非特許文献1の技術は、優先度の高い順に、できるだけ多くの部分ベクトルを同時に実現できる関節目標値ベクトルを求めるアルゴリズムである。
【0019】
先のコップ運びロボットでは、安定に歩行することと、コップの水をこぼさないことの2つの目的(タスク)がある。先端目標値ベクトルの観点からみれば、「目的(タスク)」とは、先端目的値ベクトルの要素群のうち、同時に満たさねば意味を成さない要素の集まりに相当する。先のコップ運びロボットの場合、2つの目的(タスク)に分解できる。夫々の目的(タスク)に対応する部分ベクトルは、両脚足先の目標速度を指定する12次元の速度ベクトル{dx}と、手先の水平面内2軸周りの目標速度を指定する2次元の速度ベクトル{dx}である。安定に歩行するための足先目標速度を指定する部分ベクトル{dx}に、手先の水平面内2軸周りの目標速度を指定する部分ベクトル{dx}よりも高い優先度が与えられる。非特許文献1の技術は、部分ベクトル{dx}と{dx}の双方を同時に実現する関節目標速度{dθ}が存在しない場合、優先度の高い部分ベクトル{dx}を実現する関節目標速度{dθ}を決定する。
【0020】
説明を簡単にするために、複数の部分ベクトルを{dx}で表し、各部分ベクトルを区別する指標iが小さいほど優先度が高いことを表すものとする。同時に符号「i」は、目的(タスク)を区別するための指標を表す。即ち、第1番目の部分ベクトル{dx}に対応する目的(タスク)を第1番目のタスクと呼ぶことにする。なお、下付き文字「i」の最大値は、ロボットが同時に実行することが要求されているタスクの数に相当する。
【0021】
次に、夫々の部分ベクトル{dx}に対して、部分ベクトルと関節目標速度ベクトル{dθ}の間の線形関係式{dx}=[J]{dθ}を求める。ここで、[J]は、部分ベクトル{dx}と関節目標速度{dθ}の関係を示すヤコビアンであり、ロボットの運動学的特性から定まる。なお、[J]は、{dx}の次数と同数の行と、関節数nと同数の列を有する行列となる。
【0022】
(数3)を満たしつつ、できるだけ高い優先度のタスクの部分ベクトル{dx}を同時に実現できる関節目標速度{dθ}を求めることが、非特許文献1の目的である。非特許文献1の技術は、優先度の高い順にできるだけ上位までのタスクを同時に満たすことができる解を、次の手順で決定する。
【0023】
付与された優先度から一の優先度を選択し(選択された優先度をk、即ち、i=kとする)、選択された優先度kに対応する部分ベクトル{dx}について、次の(数4)、(数5)で表される凸二次計画問題を解く。
【0024】
【数4】

【数5】

【0025】
ここでいう「凸二次計画問題」とは、(数5)の拘束条件の元で目的関数C2を最小化する{dθ}を凸二次計画法に基づいて求める問題を意味する。なお、所定の拘束条件の元で凸二次計画法に基づいて所定の目的関数を最小にする凸二次計画問題は、数理物理の技術分野では良く知られているので詳しい説明は省略する。
【0026】
ここで、目的関数C2を最小にする{dθ}は、(数5)の拘束条件を満足する。(数5)の第1式は、選択された優先度kよりも高い優先度(i<k)の全ての部分ベクトル{dx}が、線形関係式{dx}=[J]{dθ}を満たすことを拘束条件とすることを表している。即ち、(数5)の第1式の拘束条件を課すことによって、(数4)の凸二次計画問題の解{dθ}は、kより優先度の高い部分ベクトル{dx}を同時に満足しつつ、最上位の優先度kの部分ベクトル{dx}の二乗誤差をできるだけ小さくするような解となる。
【0027】
また、(数5)の第2式は、各関節に課せられた動作制限条件に関する拘束条件である。現実のロボットでは、関節の動作に物理的な制約条件が課される。(数4)が関節速度{dθ}の解を求める問題であるので、動作制限条件も、関節速度の次元で表される。すなわち、ここでは、目的関数C2を最小にする関節目標速度ベクトル{dθ}は{dθmin}以上{dθmax}以下であることが要求されている。凸二次計画問題は、(数5)の拘束条件を満足することを要求するから、その解{dθ}は拘束条件で与えられる動作制限条件を満足する。
【0028】
非特許文献1の技術をまとめると次の通りである。(数4)と(数5)で表される凸二次計画問題は、各関節の目標速度が動作制限条件内であり、かつ、kより高い優先度の部分ベクトルの実現を保証するという条件の下で、優先度kの部分ベクトルをできる限り実現することができる関節目標速度ベクトル{dθ}を求める問題である。即ち、凸二次計画問題の解{dθ}は、動作制限条件を満足した上で、第k番目のタスクの誤差を最小化する(もしくは、第k番目のタスクをできるだけ満足する)。以上のアルゴリズムは、非特許文献1、及び、非特許文献2に詳しいのでそちらを参照されたい。
【0029】
最低の優先度が与えられた部分ベクトル{dx}について、(数4)と(数5)で与えられる凸二次計画問題の解が求まれば、その解が、全ての部分ベクトル{dx}を同時に達成できる関節目標速度{dθ}に相当する。即ち、全てのタスクを同時に実現する関節目標値ベクトルが求まることになる。しかしながら、場合によってはそのような解が存在しないこともあり得る。そこで、非特許文献1では、(数4)と(数5)で与えられる凸二次計画問題を複数の優先度に対して実行し、最も高い優先度に相当する解を最終的に関節目標速度ベクトルとして採用する。具体的には、最も高い優先度から低位の優先度へ向けて順に(数4)と(数5)の凸二次計画問題を解く。解が得られなかった場合、その1つ高位の優先度に相当する解を関節目標速度ベクトルとして採用する。以上のアルゴリズムにより、最上位から順に、最も多くのタスクを同時に実現する関節目標速度ベクトル(関節目標値ベクトル)が決定できる。
【先行技術文献】
【非特許文献】
【0030】
【非特許文献1】Oussama Kanoun, Florent Lamiraux, Pierre-Brice Wieber, Fumio Kanehiro, Eiichi Yoshida, and Jean-Paul Laumond, “Prioritizing Linear equality and inequality systems: application to local motion planning for redundant robots”, Proc. of IEEE International Conference on Robotics and Automation, pp. 2939-2944, 2009
【非特許文献2】Bernard Faverjon, Pierre Tournassoud, “A local Based Approach for Path Planning of Manipulators With a High Number of Degrees of Freedom”, In Proc. of IEEE International Conference on Robotics and Automation, pp. 1152-1159, 1987
【発明の概要】
【発明が解決しようとする課題】
【0031】
非特許文献1の手法は、冗長ロボットの関節目標値ベクトルの決定に極めて有効な手法であるが、凸二次計画法は計算負荷が高いという課題がある。上記したように非特許文献1の技術は、複数のタスクの夫々について凸二次計画法を解かねばならない。タスクの数が多くなるほど、即ち、部分ベクトルの数が多くなるほど、解かねばならない凸二次計画問題の数も多くなる。他方、冗長ロボットは、動作中に時々刻々変化する状況に応じて関節目標値ベクトルを決めねばならない。典型的にはサンプリング時間毎に関節目標値ベクトルを決定しなければならない。そのため、関節目標値ベクトルを求めるための計算負荷は小さいことが望ましい。本発明は、非特許文献1が提唱する関節目標値ベクトルの決定アルゴリズムを改良するものであり、その計算負荷を低減することを目的とする。
【課題を解決するための手段】
【0032】
非特許文献1に開示されたアルゴリズムでは、凸二次計画問題を複数回解いている。しかしながら、最終的に関節目標値ベクトルとして用いる解は、解が存在するタスクのうち、最も高い優先度についての凸二次計画問題の解である。それ以外の優先度のタスクについては、凸二次計画問題を解くがその解は使われない。発明者らはこの点に着目した。即ち、優先度が定められた複数のタスクのそれぞれに対しては、凸二次計画問題の具体的な解を得ることが目的ではなく、凸二次計画問題の解が存在するか否かが判定できればよい。凸二次計画問題の解が存在することが判明したタスクのなかから、最も優先度が高いタスクの部分ベクトルに対して、凸二次計画問題の具体的な解を求めればよい。発明者らは、「拘束条件が実行可能領域であるか否か」を確認することで、同じ拘束条件の下で凸二次計画問題の解の存在を判定でき、計算負荷を低減することを思いついた。この、「拘束条件が実行可能領域である」とは、(数5)のうちの等式条件による連立方程式の解が、(数5)の上下限制約内に存在する、ということと等価である。もし「拘束条件が実行可能領域である」場合、凸二次計画問題は必ず解を持つ。なぜなら、凸二次関数の目的関数は、その実行可能領域内の任意の点について計算でき、そのうちの最小値を持つものが解となるからである。またもし、「拘束条件が実行可能領域でない」場合、凸二次計画問題は解を持たない。拘束条件を満たす実行可能な点が存在しないからである。この「拘束条件が実行可能領域である」かどうかを判定するには、線形計画問題の効率的な解法の一つである「2段階シンプレックス法」の一部を用いることができる。なお、「線形計画問題」とは、「凸二次計画問題」と同様の形で設定された拘束条件の下、与えられた線形な目的関数を最小にする解を線形計画法に基づいて解くことを意味する。「2段階シンプレックス法(単体法)」とは、まず線形計画問題の拘束条件を満たす解(「実行可能基底解」と呼ばれる)を1つ発見し(第1段階)、つぎにその「実行可能基底解」から出発して目的関数を最小化する解を探索する(第2段階)手法である。手法の詳細については、後段もしくは文献(例えば、茨木俊秀、福島雅夫、「FORTRAN77最適化プログラミング」、岩波書店、1991)を参照されたい。つまり、この2段階シンプレックス法の第1段階で求められる「実行可能基底解」が存在すれば、当然「拘束条件は実行可能である」と言える。また、「実行可能基底解」が存在しなければ、「拘束条件は実行可能ではない」と言える。
【0033】
「拘束条件の実行可能領域の存在を確認する」操作は、同じ拘束条件の下での凸二次計画問題を解く操作よりも計算負荷がはるかに小さい。従って、ある優先度までのタスク(複数の部分ベクトル)に対してまず実行可能領域の存在を確認することで解の存在を判定し、解が存在する優先度までのタスクのうち、最も優先度が高いタスクについて凸二次計画問題として扱って解を求めれば、上記した非特許文献1のアルゴリズムと同じ結果が得られる。即ち、非特許文献1のアルゴリズムと同じ結果を少ない計算負荷で求めることができる。
【0034】
非特許文献1のアルゴリズムと本明細書が開示する新規なアルゴリズムの相違を明確にするために、まず、非特許文献1のアルゴリズムをまとめる。なお、以下では、一般的な表現とするために、先に用いた先端目標速度ベクトル{dx}、関節目標速度ベクトル{dθ}、及び、ヤコビアン[J]を、先端目標値ベクトル{dx}、関節目標値ベクトル{dθ}、及び、行列[A]と表現する。
【0035】
ステップ1:m次元の先端目標値ベクトル{dx}を、複数の部分ベクトル{dx}に分解する。ただし、下付きiは各部分ベクトルを区別する指標である。そして、複数の部分ベクトル{dx}の夫々に対して、ロボットが達成すべき順に優先度を付与する。ここで、各部分ベクトルを区別する指標iが小さいほど優先度が高いことを表すとする。
【0036】
ステップ2:夫々の部分ベクトル{dx}に対して、部分ベクトルと関節目標値ベクトル{θ}の間の線形関係式{dx}=[A]{dθ}を求める。ここで、[A]は、部分ベクトルごとにロボットの運動学的特性から定まる行列であり、{dx}の次数と同数の行と、関節の数nと同数の列を有する行列を表す。
【0037】
ステップ3:複数の優先度から一の優先度k(i=k)を選択し、選択された優先度kの部分ベクトル{dx}に対して、次の凸二次計画問題の解を求める。凸二次計画問題:選択された優先度kよりも高い優先度を有する全ての部分ベクトル{dx}が線形関係式{dx}=[A]{dθ}(ただしi<k)、及び、不等式関係式{dθmin}≦{dθ}≦{dθmax}(ただし、dθmin、dθmaxは関節目標値ベクトルの上下限)を満足することを拘束条件として、目的関数C2=({dx}−[A]{dθ})({dx}−[A]{dθ})を最小にする凸二次計画法の解{dθ}を求める。
【0038】
ステップ4:ステップ3を優先度が異なる複数の部分ベクトル{dx}に対して実行する。そして、凸二次計画問題の解が求まった部分ベクトルのうち最も高い優先度を有する部分ベクトルに対する解をロボット関節目標値として決定する。
【0039】
本発明のアルゴリズムは、上記ステップ3とステップ4を次のステップ3と4に置き換える。
【0040】
ステップ3:複数の優先度から一の優先度k(i=k)を選択し、選択された優先度kの部分ベクトル{dx}に対して、その拘束条件の実行可能領域の存在を判定する。具体的には、線形関係式{dx}=[A]{dθ}(ただし、i<k)、及び、不等式関係式{dθmin}≦{dθ}≦{dθmax}(ただし、dθmin、dθmaxは関節目標値ベクトルの上下限)の実行可能基底解を、線形計画法の一種である2段階シンプレックス法の第1段階の操作によって求める。
【0041】
ステップ4:ステップ3を優先度が異なる複数の部分ベクトル{dx}に対して実行する。そして、与えられた拘束条件の実行可能領域が存在すると判定された部分ベクトルのうち最も高い優先度を有する部分ベクトルについて拘束条件とし、目的関数{dx}=[A]{dθ}を最小にする凸二次計画法の解{dθ}を求める。
【0042】
ステップ5:ステップ4で求められた解{dθ}をロボット関節目標値ベクトルに設定する。
【0043】
上記のアルゴルムによれば、概ね、「(凸二次計画法の計算負荷−実行可能領域の存在確認の計算負荷)×従来のアルゴリズムにおいて凸二次計画問題を実施した回数」で評価される計算負荷が低減できる。また、典型的な事例としては、{dx}はロボット先端の目標速度ベクトルであり、{dθ}は関節目標速度ベクトルであり、[A]はロボットのヤコビアンである。
【0044】
本明細書が開示する技術は、上記のアルゴリズムを実行する冗長ロボット制御装置に具現化することも好適である。なお、そのような制御装置は、上記ステップ1の複数の部分ベクトル{dx}の夫々について、線形関係式{dx}=[A]{dθ}と優先度を記憶している。そして制御装置は、ロボットの動作中にリアルタイムに、即ち、予め定められた周期毎に、上記ステップ3から5を実行し、得られたロボット関節目標値ベクトルに追従するように各関節を制御する。そのような制御装置を使うことによって、冗長ロボットを効率的に制御することができる。
【図面の簡単な説明】
【0045】
【図1】脚式ロボットの模式図である。
【図2】目標関節角ベクトル決定処理のフローチャート図である。
【実施例】
【0046】
以下、図面を参照しながら、冗長ロボットの関節目標値決定プロセスを具体的に説明する。ここでは、前述した例と同じ、冗長自由度を有する人型ロボットに水の入ったコップを運ばせる作業を想定し、両方の足先とコップを保持した手先が目標軌道に追従するための関節目標値を決定するプロセスを説明する。
【0047】
図1に、脚式ロボット100の模式図を示す。以下、脚式ロボット100を単にロボット100と称する。ロボット100は、左右の脚12R、12L、左右の腕14L、14Rを有する人型ロボットである。頭部にはコントローラ10が内蔵されている。夫々の脚は、6個の関節を備える多リンク多関節構造を有する。即ち、夫々の脚は6自由度を有する。夫々の腕も、6個の関節を備える多リンク多関節構造を有する。即ち、夫々の腕も6自由度を有する。各関節にはリンクを揺動させるモータが内蔵されており、コントローラ10が各モータを制御する。以上の通り、ロボット100は、合計で24自由度を有する。
【0048】
ロボット100は、脚の各関節のモータを適宜に制御することによって歩行することができる。歩行動作のための脚先や重心の軌道の生成アルゴリズムは、本発明の主眼ではないので説明は省略する。また、ロボット100は、腕の各関節のモータを適宜に制御することによって、物体を把持・移動することができる。
【0049】
今、ロボット100に与えられた作業は、水をこぼさないように腕でコップPを保持しながら所定の経路に沿って歩行することである。この作業は、「安定に歩行する」というタスク(第1タスク)と、「水をこぼさないようにコップを保持する」というタスク(第2タスク)に分解できる。
【0050】
第1タスクは、右脚12Rの足先の軌道と、左脚12Lの足先の軌道で表される。なお、安定に歩行するための軌道を生成するアルゴリズムについては説明を省略する。ここでは、安定に歩行するための左右の足先軌道が与えられているとする。即ち、左右の足先の位置ベクトルの時系列データは与えられる。ここで、「位置」には、いわゆるロール角、ピッチ角、ヨー角を含む。一方の足先の位置ベクトルは6個の変数要素(3軸各軸方向の位置と3軸各軸周りの角度)を含む。従って、左右の足先で合計12要素の位置ベクトルとなる。ここでは、安定に歩行するための足先軌道は、各時刻における足先の速度ベクトルの時系列データで表されていると仮定する。即ち、「安定して歩行する」という第1タスクは、ロボット100の両足先が追従すべき、12要素を有する足先目標速度ベクトル(先端目標値ベクトル)で表現される。いま、第1タスクの足先目標速度ベクトルを{dx}で表す。{dx}は12次元のベクトルである。なお、より正確には、「安定して歩行する」タスクにはここで述べた両足先位置姿勢の第1タスクに加えて、ロボットの重心速度や角運動量に対するタスクも加える必要があることが知られているが、ここでは例を簡単にするために考慮しない(必要であればそれらのタスクも加えて考慮できる)。
【0051】
同様に、第2タスクは、コップPを保持する手先のピッチ軸周りの速度(角速度)とロール軸周りの速度(角速度)の時系列データで表される。即ち、第2タスクは手先のロール軸周りの速度とピッチ軸周りの速度の合計2要素の手先目標速度ベクトル(先端目標値ベクトル)で表される。なお、コップPの水をこぼさないための手先目標速度ベクトルは、手先が水平である場合は速度=ゼロであり、手先が水平でない場合は水平(ロール角=ゼロ、ピッチ角=ゼロ)に保とうとする方向の速度が(その時点の手先姿勢に応じてフィードバック的に)与えられる。第2タスクの目標速度ベクトルを{dx}で表す。{dx}は2次元のベクトルである。
【0052】
コントローラ10の使命は、24個の関節を使って、両足先の速度(12次元)と、コップPを把持した腕の手先の速度(2次元)を、合計14次元の先端目標速度ベクトル({dx},{dx})に追従させることである。別言すると、コントローラ10の使命は、制御可能な関節の数n=24がロボット先端に与えられる先端目標速度ベクトル(先端目標値ベクトル)の次数m=14よりも多い冗長ロボット100の関節目標速度ベクトル(関節目標値ベクトル)を決定することである。ここで、先端目標速度ベクトルは、第1タスクに対応する12次元の先端目標速度ベクトル{dx}と、第2タスクに対応する2次元の先端目標速度ベクトル{dx}に分解される。
【0053】
コントローラ10が実行する処理を説明する前に、コントローラ10が予め記憶しておくべき数式について説明する。
【0054】
まず、2つのタスクの夫々に優先度を付与する。コップの水をこぼさないことより、安定に歩行できることが重要であるから、第1タスクの優先度を最高位に定め、第2タスクの優先度を次の順位に定める。即ち、第iタスクについて、タスクを区別する指標iが小さいほど高位のタスクであることを示す。
【0055】
今、24個の関節の速度をベクトル{dθ}({dθ}は24次元ベクトル)で表す。ロボットの先端(足先、手先)の速度と関節角速度にはヤコビアン[J]を使った関係が成立する。本実施例の場合、次の(数6)が成立する。
【0056】
【数6】

【0057】
[J]は、関節目標速度ベクトル{dθ}と両方の足先の速度ベクトル{dx}との間の線形関係式であり、[J]はロボット100の幾何学的構成から定まるヤコビアンである。[J]は、関節速度ベクトル{dθ}とコップを保持した腕の手先の速度ベクトル{dx}との間の線形関係式であり、[J]はロボット100の幾何学的構成から定まるヤコビアンである。(数6)の第1式を、第1タスクの線形関係式と称し、(数6)の第2式を第2タスクの線形関係式と称する。コントローラ10は、それら2つの線形関係式を記憶している。
【0058】
また、関節ベクトル{dθ}は、実機ロボットにおいては制約が存在する。関節ベクトルの制約を{dθmin}≦{dθ}≦{dθmax}のように不等式関係を設定する。ただし、dθmin、dθmaxは関節目標値ベクトルの上下限速度制約である。コントローラ10は、この不等式関係式も記憶している。なお、ロボットの関節角度可動範囲及び関節角加速度の制約をこの関節速度の不等式関係に変形する方法については後述する。
【0059】
コントローラ10が目標関節速度ベクトルを決定する処理のフローチャートを図2に示す。概説すると、コントローラ10は、上位の優先度から低位の優先度へ向けて、できるだけ多くのタスクを同時に実現できる関節目標速度{dθ}を決定する。以下、図2のフローチャートの各ステップについて説明する。なお、以下の説明では、議論を一般化するためにタスクの数をt個とする。即ち、(数6)で表される線形関係式はタスクの数tに等しい数だけ存在する。
【0060】
初期化(ステップS12)
図2における記号「i」は、タスクを識別する指標であるとともに、タスクの優先度を表す指標でもある。記号「i」が小さいほど、優先度が高いことを示す。コントローラ10は、優先度の高い方から順にステップS13、S14、S15、及びS16の処理を繰り返す。そのために、変数iを「1」で初期化する。
【0061】
関節角実行可能領域の存在のチェック(ステップS14、S15)
i番目のタスクまでの等式関係(数6)および不等式関係{dθmin}≦{dθ}≦{dθmax}を連立させた条件は(数7)となる。この(数7)のすべての等式および不等式条件を満たす{dθ}の集合を、「実行可能領域」と呼ぶ。(数7)には、実行可能領域が存在する場合と、存在しない場合の2つがありうる。(数7)の実行可能領域が存在する場合、(数7)を条件とした凸二次計画問題の解は、必ず存在する。また、(数7)の実行可能領域が存在しない場合、当然ながら(数7)を条件とした凸二次計画問題の解は存在しない。つまり、凸二次計画問題の解自体を求めなくても、その解の存在を判定することができる。
【0062】
【数7】

【0063】
なお、本実施例では、(数7)の実行可能領域が存在するか否かを判定するために、線形計画問題の解法の一つである、2段階シンプレックス法の第1段階にあたる操作を行う。2段階のシンプレックス法は既知であるので説明は省略する。図2のステップS15の分岐判定は、(数7)の実行可能領域が存在する場合に「YES」となり、(数7)の実行可能領域が存在しない場合に「NO」となる。
【0064】
コントローラ10の処理は、(数7)の実行可能領域が存在する場合、ステップS16に進む。他方、(数7)の実行可能領域が存在しない場合、ステップS20に進む。
【0065】
条件を満たす優先度kの特定(ステップS13、S15、S20):
コントローラ10は、上記した(数7)の実行可能領域の存在のチェックを、優先度が最も高いタスクから低位の優先度のタスクへと順次行う(ステップS13:NO、ステップS14)。優先度が第i番目のタスクにおいて(数7)の実行可能領域が存在しなかった場合(ステップS15:NO)、第i−1番目のタスクが、自身よりも高位の優先度を有する全てのタスクを満足する{dθ}が存在するタスクのうち、最も優先度が高いタスクとなる。最も低位のタスクにおいても(数7)の実行可能領域が存在する場合(ステップS15:YES)、全てのタスクを満足する{dθ}が存在することが判明する。ステップS20は、自身を含めないで自身よりも高位の全てのタスクを満足する{dθ}が存在するタスクの中で最も優先度が低いタスクの番号を変数kに代入する処理である。即ち、ステップS20において、第k番目のタスクが、自身を含めないで自身よりも高位の優先度を有する全てのタスクを満足する{dθ}が存在するタスクの中で最も優先度が低いタスクに相当する。なお、第k番目のタスクは、i<kのタスクが実行可能であるようなもののうち、最も優先度の低いものが選ばれることに留意されたい。
【0066】
凸二次計画問題(ステップS21):
コントローラ10は、第k番目のタスクをできるだけ満足する、タスクの誤差を最小化する、関節目標速度ベクトル{dθ}を求める。コントローラ10は、(数7)の制約条件の元で、次の(数8)で与えられる目的関数C2を最小化する凸二次計画法の解を求める。なお、上述したように、第k番目のタスクについては凸二次計画問題の解が存在することは保証されている。
【0067】
【数8】

【0068】
コントローラ10は、(数8)で与えられる目的関数C2を最小にする凸二次計画法の解{dθ}を、関節目標速度ベクトル(関節目標値ベクトル)に設定する(ステップS22)。そしてコントローラ10は、関節速度の現在値が関節目標速度ベクトルに一致するように関節のモータを制御する。コントローラ10は、図2の処理を、サーボ周期毎に実行する。ロボットのサーボ周期は通常数msecである。
【0069】
(数8)の目的関数C2を最小にする凸二次計画法の解{dθ}は、(数7)で与えられる制約条件を満足するから、第k番目のタスクよりも優先度が高いタスクは全て満たす。こうしてコントローラ10は、優先度が与えられた複数のタスクの中から、優先度が高い順に最も多くのタスクを満足する解を関節目標値ベクトルとして決定する。上記のアルゴリズムは、上位からできるだけ多くのタスクを満足する関節目標値ベクトルを決定するのに、凸二次計画問題を1回だけ解けばよい。従来は、凸二次計画問題を複数回解く必要があり、最大ではタスクの数と同数回も解く必要があった。本実施例で説明したアルゴリズムは、従来のアルゴリズムよりも顕著に計算負荷を低減することができる。なお、凸二次計画問題を高速に解くには、例えばGoldfarb-Idnani法(有効制約法:Active Set Method)を使うとよい。
【0070】
図2におけるステップS13からS16のループを繰り返す処理が、特許請求の範囲の記載おけるステップ3の一例に相当する。図2におけるステップS21の処理が、特許請求の範囲の記載におけるステップ4の一例に相当する。図2のステップS22の処理が、特許請求の範囲の記載におけるステップ5の一例に相当する。
【0071】
上記した実施例の留意点について述べる。図2のステップS13からS16のループは、必ずしもi=1から始める必要はない。例えば、第r番目のタスクについてはそれより高位の優先度のタスクを満足することが分かっている場合は、第r+1番目のタスクから始めればよい。
【0072】
(数7)の第2式は、関節目標速度ベクトル{dθ}が制限範囲内となることを保証するための制約条件であった。速度の代わりに(或いは速度とともに)、加速度(角加速度)が関節の動作制限として加えられることがある。上記したアルゴリズムでは、加速度の制約条件を関節速度の制約条件に変形することもできる。以下、関節加速度の制限範囲を考慮する手法について説明する。
【0073】
現在の関節速度ベクトルを{dθ}とすると、Δt秒後の関節速度ベクトル{dθ}は現在の関節加速度ベクトル{aθ}を使って次の(数9)で与えられる。
【0074】
【数9】

【0075】
(数9)に基づけば、関節加速度についての制限条件は、Δt秒後の関節速度ベクトル{dθ}に対する制限として、次の(数10)で与えることができる。
【0076】
【数10】

【0077】
(数7)の制約条件に(数10)を加えることで、加速度に関する制限条件を(数7)の実行可能領域の存在判定、及び(数8)の凸二次計画問題に加えることができる。
【0078】
次に、関節角度の制限について説明する。なお、以下では説明を簡単にするため、ベクトル量のかわりにスカラ量で説明する。即ち、ベクトルを表す{・}を外して説明する。今、ある関節の角度の上限値をθmax、下限値をθminで表す。この関節が速度dθminとdθmaxのどちらかの速度で動いているとする。このとき、最大速度で減速し始めたと仮定して、角度上下限値において速度をゼロにできる猶予角度ψmin、ψmaxが、以下の(数11)で定めることができる。
【0079】
【数11】

【0080】
現在の関節角度θがψmax以上である場合、これらの猶予角度を用いて関節速度の上限値を次の(数12)で与えると、関節角度の上限値を超えないように動作させることができる。なお、θ=θmaxで速度がゼロとなることに留意されたい。
【0081】
【数12】

【0082】
同様に、下限についてもθがψmin以下である場合に関節速度の下限値を次の(数13)で与えればよい。
【0083】
【数13】

【0084】
上記説明したように、関節の角度制限、加速度制限も、速度制限の形式で制約条件に盛り込むこができる。
【0085】
次に、タスク自体が不等式で与えられる場合であっても、上記したアルゴリズムを適用できることを説明する。繰り返すが、先の実施例では、第i番目のタスクは、次の(数14)で与えられた。
【0086】
【数14】

【0087】
ここでは、先端目標値ベクトル{dx}が{dxminから{dxmaxの範囲にあればよい場合を想定する。即ち、第1タスクが次の(数15)で与えられるケースを想定する。
【0088】
【数15】

【0089】
{dxminと{dxmaxは夫々先端目標速度ベクトルの下限値と上限値の制約に相当する。[J]は上記実施例と同様にヤコビアンである。上下限のいずれか一方しか存在しない場合は、他方の制約の大きさを極端に大きくすればよい。(数15)を不等式条件と称する。
【0090】
(数15)の不等式条件を採用する場合、先に示した凸二次計画問題の形式(標準形と称する)とは適合しない。凸二次計画問題の標準形は、制約条件として等式条件と変数の上下限の形であるとされているからである。
【0091】
しかし、スラック変数と呼ばれる変数を導入することで、不等式条件を等式条件に変形することができる。つまり、不等式条件式(数15)において、次の(数16)で与えられるスラック変数{dθ}を導入する。
【0092】
【数16】

【0093】
上記したスラック変数{dθ}を導入することで、(数15)で与えられるタスクiは次の(数17)のとおり、等式条件と各変数の上下限に変形することができる。
【0094】
【数17】

【0095】
(数17)の形式は、実行可能領域の存在判定と凸二次計画法の双方に適用できる。以上のようにしてタスクとして不等式の制約を考慮する方法は、多自由度マニピュレータで障害物や自己との干渉回避を行うために提案された。その詳細は、Bernard Faverjon and Pierre Tournassoud, “A local based approach for path planning of manipulators with a high number of degrees of freedom”, In ICRA, pp.1152-1159, 1987 に詳しい。また、そのような手法を人間型ロボットに適用した例が、Oussama Kanoun, Florent Lamirauxm, Pierre-Brice Wieber, Fumio Kanehiro, Eiichi Yoshida, and Jean-Paul Laumond, “Prioritizing linear equality and inequality systems: application to local motion planning for redundant robots”, In Proc. of the IEEE International Conference on Robotics and Automation, pp. 2939-2944, 2009 に開示されている。
【0096】
凸二次計画問題と実行可能領域についての補足事項を説明する。なお、以下では、ベクトルを表す記号{}、行列を表す記号[]は省略する。以下では、小文字はベクトルを表し、大文字は行列を表す。次の(数25)で表される凸二次計画問題を考える。
【0097】
【数18】

【0098】
(数18)の凸二次計画問題の解の存在を知るには、実際に最小値を求める必要はない。もし(数18)の第2式以降で表された等式及び不等式に実行可能領域が存在しない場合、実行可能な解が無いため、当然ながら最小値は存在しない。また実行可能領域が存在すれば、領域内のそれぞれの点について(数18)の第1式の目的関数値が計算でき、どこかに最小値を見つけられることは明らかである。この(数18)の条件に実行可能領域が存在するか否かは、同一の条件を設定した線形計画問題において、その効率的な解法の一つである、2段階シンプレックス法の第1段階を行うことで判定できる(例えば、茨木俊秀、福島雅夫、「FORTRAN77最適化プログラミング」、岩波書店、1991)。
【0099】
二段階シンプレックス法では、第一段階目として、まず初期解として実行可能基底解を一つ見つけ出す作業を行う。例えば、次の(数19)で与えられる線形計画問題(LP−I)を想定する。
【0100】
【数19】

【0101】
(数19)の線形計画問題(LP−I)について、人為変数xn+i*(i=1・・・m)を導入し、(数20)で与えられる新たな線形計画問題(LP−II)を考える。
【0102】
【数20】

【0103】
この線形計画問題(LP−II)は通常のシンプレックス表の操作で最小解を求めることができる。このとき、もとの線形計画問題(LP−I)が解を持つためには線形計画問題(LP−II)の解のうち、人為変数xn+i*(i=1・・・m)が全てゼロとならなければならないため、これを確かめればよい。つまり、解の存在判定は線形計画問題の解法自体よりもさらに容易に行うことができる。上記の手法は、実施例で示した、複数のタスクをできるだけ満たす関節目標値ベクトル決定手法に適用することができる。解の存在判定に用いる計算は、条件の複雑さにもよるが凸二次計画問題の求解に比べれば小さい。そして、タスクの数が増えても凸二次計画問題の求解は1回で済むため、大幅な計算量の縮小が期待できる。
【0104】
次に凸二次計画問題の設定方法についての補足事項を説明する。優先度kのタスクが等式制約であった場合、その二乗誤差は、次の(数21)で与えられる。
【0105】
【数21】

【0106】
従って、次の(数22)で与えられる凸二次計画問題の目的関数として用いることができる。
【0107】
【数22】

【0108】
一般にAは正定でないため、微小な対角項δIを加えることで正定行列になるようにしている。
【0109】
優先度kのタスクが不等式制約であった場合、その上下限制約の中央値を先端目標値ベクトルの指令速度とする。つまり、先端指令速度は次の(数23)で与えられる。
【0110】
【数23】

【0111】
なお、(数23)のbは、実施例における先端速度ベクトル{dx}に対応する。
【0112】
以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成し得るものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【0113】
10:コントローラ
12R、12L:脚
14R、14L:腕
100:脚式ロボット

【特許請求の範囲】
【請求項1】
制御可能な関節の数nがロボット先端に与えられる先端目標値ベクトル{dx}の次数mよりも多い冗長ロボットの関節目標値ベクトル{dθ}の決定方法であり、
ステップ1:m次元の先端目標値ベクトル{dx}を、複数の部分ベクトル{dx}(ただし、下付きiは各部分ベクトルを区別する指標)に分解するとともに、複数の部分ベクトル{dx}の夫々に対して、ロボットが達成すべき順に優先度を付与し(各部分ベクトルを区別する指標iが小さいほど優先度が高いことを表す)、
ステップ2:夫々の部分ベクトル{dx}に対して、部分ベクトルと関節目標値ベクトル{dθ}の間の線形関係式{dx}=[A]{dθ}を求め([A]は、部分ベクトルごとにロボットの運動学的特性から定まる行列であり、{dx}の次数と同数の行数と、n次元の列を有する行列を表す)、
ステップ3:複数の優先度から一の優先度k(i=k)を選択し、選択された優先度kの部分ベクトル{dx}に対して、次の実現可能領域存在問題、即ち、「選択された優先度kよりも高い優先度を有する全ての部分ベクトル{dx}に対して、線形関係式{dx}=[A]{dθ}(ただしi<k)と不等式関係式{dθmin}≦{dθ}≦{dθmax}(ただし、dθmin、dθmaxは関節目標値ベクトルの上下限)で与えられる拘束条件の実行可能領域が存在するか否か」を判定し、
ステップ4:ステップ3を異なる優先度の複数の部分ベクトル{dx}に対して実行し、上記拘束条件の実行可能領域が存在すると判定された部分ベクトルのうち最も低い優先度を有する部分ベクトルについて、ステップ3の上記拘束条件の下で目的関数C2=({dx}−[A]{dθ})({dx}−[A]{dθ})を最小にする凸二次計画法の解{dθ}を求め、
ステップ5:ステップ4で求められた{dθ}をロボット関節目標値ベクトルとして決定する、
ことを特徴とする、冗長ロボットの関節目的値ベクトルの決定方法。
【請求項2】
ステップ3において、各関節に課せられた動作制限条件をさらに上記拘束条件に含むことを特徴とする請求項1に記載の決定方法。
【請求項3】
{dx}はロボット先端の目標速度ベクトルであり、{dθ}は関節目標速度ベクトルであり、[A]はロボットのヤコビアンであることを特徴とする請求項1又は2に記載の決定方法。
【請求項4】
冗長ロボットの制御装置であり、
請求項1のステップ1の複数の部分ベクトル{dx}の夫々について、前記線形関係式{dx}=[A]{dθ}と優先度を記憶しているとともに、前記目的関数C2を記憶しており、
予め定められた周期毎に請求項1のステップ3から5を実行し、得られたロボット関節目標値に追従するように各関節を制御することを特徴とする冗長ロボットの制御装置。

【図1】
image rotate

【図2】
image rotate


【公開番号】特開2011−183527(P2011−183527A)
【公開日】平成23年9月22日(2011.9.22)
【国際特許分類】
【出願番号】特願2010−53071(P2010−53071)
【出願日】平成22年3月10日(2010.3.10)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【出願人】(000003609)株式会社豊田中央研究所 (4,200)
【Fターム(参考)】