【文献】
Ni Yanbing ; Luo Fayang ; Zhong Xueyong ; Guo Lei,Trajectory Planning of a Parallel Robot for Wafer Transfer,Proc. of 2010 International Conference on E-Product E-Service and E-Entertainment (ICEEE),2010年11月,pp.1 - 4
【文献】
Piazzi, A. ; Visioli, A.,Global minimum-jerk trajectory planning of robot manipulators,IEEE Transactions on Industrial Electronics,2000年 2月,(Volume:47 , Issue: 1),pp.140 - 149
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一又は対応する要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【0019】
まず、本発明の実施の形態の説明に先立ち、
図17を参照して本発明の概略的な構成を説明する。
図17(a)は、本発明に係るロボット動作生成システムの概略構成を示す図である。同図に示すように、ロボット動作生成システムは、動作入力装置100と、全身協調計算部200と、多関節ロボットとしてのロボット300と、を備えている。全身協調計算部200は、躍度入力への上下限制約計算部210と、最適化問題求解部220と、を備えている。
【0020】
動作入力装置100は、ロボット300に実現させたい位置・姿勢を含む動作データを取得する。全身協調計算部200は、得られた動作データから、躍度入力への上下限を計算し、計算した躍度上下限を用いて最適化問題を求解する。ロボット300は、最適化問題の求解結果(関節への躍度入力)に従って多関節を協調制御することで、ロボット300の対象を操作する。
【0021】
全身協調計算部200は、ロボット300の関節を協調制御して、対象部位を操作する。躍度入力への上下限制約計算部210は、現在時刻における関節の状態から開始して、関節の速度、加速度、躍度について設定される上下限制約を全て満たしながら、関節への躍度入力の軌道パターンを決定する。この決定する軌道パターンは、所定の時間経過後に、設定される関節の変位の上限または下限において関節の速度および加速度が0に到達可能な軌道パターンである。さらに、躍度入力への上下限制約計算部210は、決定した軌道パターンから関節への躍度入力の上下限値を計算し、また、現在時刻における関節の状態と、設定される関節の速度、加速度、躍度の上下限制約と、を用いて関節への躍度入力の上下限値を計算し、これら計算した関節への躍度入力の上下限値を用いて、関節への躍度入力の上下限範囲を計算する。
【0022】
最適化問題求解部220は、制約条件の下で評価関数の値が最小となるように最適化問題を求解して、関節への躍度入力を計算する。ここで、タスクとは、対象部位の躍度と関節への躍度入力の等式制約と、関節への躍度入力の上下限範囲の不等式制約と、を含む等式制約を指す。また、ここで制約条件は、等式制約に関する複数の設定タスクのうちで解が存在するタスクと、躍度入力への上下限制約計算部210で計算された関節への躍度入力の上下限範囲と、を含む。また、評価関数として、等式制約に関する複数の設定タスクのうちで解が存在しないタスクにおける関節への躍度入力の誤差を用いる。
【0023】
本発明では、関節の躍度を入力として、その上下限制約を設定することで、躍度誤差の二乗和を最小化するような解(関節への躍度入力)を得る。これは、加速度の微分(躍度)をできるだけ小さくし、滑らかな軌道を実現することに相当する。この結果、加速度は不連続にはならず、タスクを切り替えても滑らかな軌道を得ることができ、従来の問題を解決した関節協調制御を実現することが可能となる。なお、軌道とは、対象または関節が従う、変位、速度、加速度、躍度などの時系列データのことを指す。
【0024】
本発明では、全身協調解を最終的に最適化問題として導出する。その過程において、最適化の制約条件として、関節の変位(可動範囲)、速度、加速度の制約を満たすような、関節への躍度入力の上下限制約の決定方法がポイントとなる。
【0025】
関節の全ての状態(ある時刻での関節の変位、速度、加速度)は、その目標変位で目標速度かつ目標加速度に最短で到達できるように設定する必要があり、これを実現するために、後述して例示する所定の軌道パターンを考慮する。なお、関節への躍度入力の下限に関しては上限を反転することで得ることができ、上限と同様の取り扱いをする。
【0026】
本発明ではこれら軌道パターンを考慮し、各条件によって適切な躍度の上下限を求める手法を提供し、求めた躍度の上下限制約を考慮した最適化計算によって、滑らかな関節軌道を生成する。さらに、この生成した関節軌道を用いることで、人環境において動作するロボット300において加速度・速度が振動的になることを防止し、外界の環境に対しても安全な動作を提供することができる。
【0027】
<発明の実施の形態1>
以下、
図1〜
図16を参照して、本実施の形態に係る多関節ロボットの関節協調制御装置および方法を具体的に説明する。本実施の形態に係る関節協調制御手法では、関節への入力を速度とした手法に代えて、速度から微分を進めて躍度とした手法を実現し、この制御手法を躍度分解制御と呼ぶ。躍度まで微分を進める理由は、加速度の変化量に上下限を設定し、加速度を滑らかに変化させたいためである。
【0028】
(躍度分解制御)
躍度分解制御を説明する。
対象の指令軌道y
r、y
rのワンドット(数式中では上部に1つの「・」を有する変数であり、1階微分した変数である。)、y
rのツードット(数式中では上部に2つの「・」を有する変数であり、2階微分した変数である。)、が与えられたとき、以下の式(1)に示す状態フィードバック則の躍度(yのスリードット(数式中では上部に3つの「・」を有する変数であり、3階微分した変数である。))を実現すれば、対象を目標軌道に追従させることができる。
【0029】
ただし、以下の式において、y、yのワンドット、yのツードット、はそれぞれ現在時刻での対象の変位、速度、加速度を示すベクトルであり、yのスリートッドは現在時刻で実現すべき対象の躍度を示すベクトルであり、K
d、K
v、K
a、はそれぞれ変位、速度、加速度の偏差に対するフィードバックゲインである。このフィードバック則は三次系の応答になるため、適切なゲインを予め計算し設定することで安定性を保証しておく。
【0031】
対象の躍度(yのスリードット)と関節の躍度(xのスリードット)の関係は、対象速度と関節速度に関するヤコビ行列Aを用いて、以下の式(2)に示される。ただし、以下の式において、x、xのワンドット、xのツードット、はそれぞれ現在時刻での関節の変位、速度、加速度を示すベクトルであり、xのスリートッドは現在時刻で実現すべき関節の躍度を示すベクトルである。
【0033】
現在時刻での状態量x、xのワンドット、xのツードット、は全て既知であるため、躍度のタスクは以下の式(3)に示す等式制約条件となる。詳細は後述するが、複数のタスクを設定する場合には、複数の等式制約条件を考慮することができる。また、実際のロボット300においては関節の変位や速度の制約が存在する。このため、関節の変位や速度の制約についても考慮する必要がある。そのため、等式としてのタスクに加えて、不等式としての制約をもタスクとして加え、このタスクの下で、最適化問題として求解する手法が知られている(非特許文献:Bernard Faverjon and Pierre Tournassoud."A Local Based Approach for Path Planning of Manipulators", With a High Number of Degrees of Freedom. In In Procs. of IEEE In- ternational Conference on Robotics and Automation, pp. 1152-1159, 1987.)。
【0035】
ただし、式(3)のbのスリードットは、以下の式(4)により示される。
【数4】
【0036】
複数のタスクがある場合には、複数の等式制約条件を考慮することができる。例えばタスクが3つある場合には、以下の式(5)に示す等式制約条件となる。
【数5】
【0037】
また、関節の躍度入力に関して、以下の式(6)に示すように、上下限制約が設定される。この関節への躍度入力の上下限の設定方法は、関節の変位の上下限(可動範囲)、速度の上下限、加速度の上下限を実現するものであるが、その計算方法の詳細については後述する。
【数6】
【0038】
また、従来手法と同様にタスクに優先度を設定し、解が存在するタスクまでを制約条件に含める。例えば、式(5)に示した3つのタスクのうちで、優先度の高い1番目の等式制約および2番目の等式制約までのタスクを実現する解は存在するが、3番目の等式制約を満たすタスクは存在しないものとする。この場合、解が存在しない3番目の等式制約のタスクの躍度の誤差を、最適化のための評価関数とする。すると、最適化問題の目的関数は、以下の式(7)に示す躍度誤差の二乗和からなる二次形式となる。
【0040】
つまり、式(5)に示した1番目の等式制約のタスクおよび2番目の等式制約のタスクを満たし、かつ、式(6)に示した関節の躍度入力の上下限制約を満たしながら、3番目の等式制約のタスクに関する躍度の誤差の二乗和により示される式であって、式(7)に示した目的関数を最小化する問題である。このような二次計画問題を求解することで、関節の躍度入力を得ることができる。
【0041】
従って、関節への躍度を入力としたことで、躍度誤差の二乗和を最小化するような解が得られる。これは、加速度の微分をできるだけ小さくし、滑らかな軌道を実現することに相当する。例えば、ステップごとにタスクの優先度を変更する、または、タスクの追加や削除を行った場合、不連続に変化するのは関節の躍度である。関節の躍度の上下限制約を設定することで、関節の加速度は(その躍度の上下限制約以上には) 不連続にはならず、その結果、タスクを切り替えても滑らかな軌道を得ることができる。
【0042】
ここで、関節への躍度入力に対する上下限制約をいかにして設定するか、が問題になる。まず、関節への躍度入力として、ステップごとに任意の上下限制約を与えることができるものの、実際に制限したいのは、ロボット300の関節の躍度だけではなく、トルク、速度、変位(可動範囲)の制約である。トルクはロボット300の慣性行列に依存するため、本実施の形態では、関節の加速度の制約を加える場合を例に説明する。
【0043】
また、関節への躍度入力は最適化計算の結果として得られるものであり、予め分かるものではない。保証されるのは、現在時刻における関節への躍度入力の上下限制約のみである。つまり、関節の変位、速度、加速度の上下限制約を満たすための関節への躍度入力の上下限制約を、どのようにして与えるかが問題となる。以下、具体的に説明する。
【0044】
(関節の躍度入力への上下限制約の決定方法:関節の上下限制約)
以下では、1つの関節について、変位、速度、加速度の上下限制約を満たすための、現在時刻での関節への躍度入力の上下限制約をどのようにして計算するか、を説明する。多関節の場合についても、それぞれ独立に考えることで同様に扱うことができる。
【0045】
ある関節の現在時刻での変位、速度、加速度を、それぞれx、xのワンドット、xのツードット、とし、関節への入力を躍度(xのスリードット)とする。全身協調制御において、躍度入力(xのスリードット)は、最適化問題の変数の一要素であり、ステップごとに設定された躍度(xのスリードット)の上下限制約は必ず満たされる。しかし、最適化の結果どのような値が入力されるかは前もって分からないことに注意する必要がある。
【0046】
離散時間Δtで離散化された時刻kでの状態変数として、変位、速度、加速度を、それぞれx
k、x
kのワンドット、x
kのツードット、とし、関節の躍度(x
kのスリードット)を入力とする。ただし、k=0を現在時刻とする。時刻k+1の状態の更新式を、以下の式(8)に示す。
【数8】
【0047】
ここで、全ての時刻kにおいて、変位、速度、加速度、躍度の全てが、以下の式(9)に示す上下限制約を満たすようにしたい。
【数9】
【0048】
ただし、式(9)において、上下限の制約値x
l、x
u、x
lのワンドット、x
uのワンドット、x
lのツードット、x
uのツードット、x
lのスリードット、x
uのスリードット、はすべて定数であり、予め適切な値が設定される。また、x
lのワンドット<0<x
uのワンドット、x
lのツードット<0<x
uのツードット、x
lのスリードット<0<x
uのスリードット、であるとする。
【0049】
式(9)の全ての不等式を必ず満たすことが保証されるような、以下の式(10)により示される、現在時刻での躍度の上下限制約(x
0lのスリードット、x
0uのスリードット)を求めることが問題になる。
【数10】
【0050】
以下では、関節への躍度入力の上限(x
0uのスリードット)の計算方法を例に説明するが、上限と下限を入れ替えることで、関節への躍度入力の下限(x
0lのスリードット)に関しても全く同様に考えることができる。
【0051】
(関節の躍度入力への上下限制約の決定方法:基本的な考え方)
上述したように、関節には変位、速度、加速度の上下限制約があるが、これらを現在時刻近辺において瞬間的に満たすだけでは不十分である。現在時刻近辺でこれらの上下限制約を満たしても、未来の時刻において同様に上下限制約を満たせるという保証は無い。また、変位の上限付近で振動するような軌道は、上限制約を満たすとしても望ましい軌道とはいえず、避けることが好ましい。
【0052】
いま、現在時刻において関節への躍度入力(x
0のスリードット)にある値を代入した場合を想定する。さらに、この代入された関節への躍度入力の下で、現在時刻から所定の時間経過した時に、設定された速度、加速度、躍度の上下限制約を全て満たしながら、この関節が変位の上限で振動やオーバーシュートしないで停止する軌道(停止軌道)が存在するものと仮定する。ここで、「変位の上限で停止する」とは、目標位置である変位上限(x=x
u)において、目標速度が0(xのワンドット=0)、目標加速度が0(xのツードット=0)に到達することを指す。
【0053】
このとき、停止軌道を実現できると考えられる関節への躍度入力(x
0のスリードット)で最大のものが、現在時刻における躍度入力の上限(x
0uのスリードット)である。関節が変位上限で振動せずに停止できる軌道としては様々なものが考えられるが、例えば、最短時間で停止することを目的とする場合には、以下の4つの軌道パターン(軌道A、B、C、D)のいずれかとなる。
【0054】
・軌道A:「x
lのスリードット→x
uのスリードット」の躍度入力により停止
・軌道B:「x
lのスリードット→0→x
uのスリードット」の躍度入力により停止
・軌道C:「x
lのスリードット→0→x
lのスリードット→x
uのスリードット」の躍度入力により停止
・軌道D:「x
lのスリードット→0→x
lのスリードット→0→x
uのスリードット」の躍度入力により停止
【0055】
この4つの軌道パターンは、常に最大値または常に最小値の躍度を入力とする区間と、状態が速度上限または加速度上限にあり躍度の入力を0にする区間と、の組み合わせを用いることで、最短時間で停止する軌道を実現するものである。
【0056】
図1は、現在時刻の躍度入力への上下限制約を計算する処理を示すフローチャートである。躍度入力への上下限制約計算では、4つの軌道パターンA、B、C、Dの順に、いずれの停止軌道により停止が実現可能か否かを判定する(S110、S130、S150)。実現可能な停止軌道が分かると、その停止起動を実現するための躍度入力(x
0のスリードット)を、現在時刻での関節への躍度入力の上限(x
0uのスリードット)として設定する(S120、S140、S160)。なお、停止軌道の判定処理の詳細については、後述する。
【0057】
停止可能な初期状態(通常は停止状態)からこの処理に従って関節への躍度入力の範囲を実現していくことで、停止軌道を実現できる範囲で必ず動作し続けるため、変位、速度、加速度の制約内での動作が常に可能となる。以下、各軌道パターンA、B、C、Dの説明に先立って、軌道パターンA、B、C、Dに共通する処理を説明する。
【0058】
(関節の躍度入力への上下限制約の決定方法:全軌道パターンに共通の躍度制限の必要条件)
4つの軌道パターンA、B、C、Dに共通となる、躍度入力の必要条件を説明する。まず、躍度入力自体にパラメータとしての上下限制約(x
lのスリードット、x
uのスリードット)が予め設定されている。加速度、速度、変位の上下限値がx
lのツードット、x
uのツードット、x
lのワンドット、x
uのワンドット、x
l、x
u、であるから、それぞれを超えないための躍度の上下限は、以下の式(11)により示される。
【0060】
そして、以下の式(12)により示される条件が、躍度の上下限の必要条件となる。
【数12】
【0061】
また、現在時刻からΔt後の時刻1においては、以下の式(13)により示すように、加速度、速度、変位のそれぞれが上限制約に収まるようにする必要がある。
【数13】
【0062】
これらから、時刻0での関節への躍度入力の上限値を計算することができ、以下の式(14)により示すように、それぞれ得ることができる。
【数14】
【0063】
(関節の躍度入力への上下限制約の決定方法:軌道パターンA)
軌道A(「x
lのスリードット→x
uのスリードット」の躍度入力により停止)を説明する。
【0064】
まず、軌道Aをどのようにして決定するかを説明する。
図2に、軌道Aを例示する。軌道Aは、まず、最小値の躍度(x
lのスリードット)を所定の時間t
1入力し、その後、最大値の躍度(x
uのスリードット)を一定時間t
2与えて停止するパターンである。現在時刻を時刻0、ステップ時間Δt後を時刻1、そのt
1秒後を時刻2、そのt
2秒後を時刻3としている。現在時刻での状態変数をx
0、x
0のワンドット、x
0のツードット、とし、現在時刻の躍度入力を、x
0のスリードットとする。
【0065】
時刻3では、以下の式(15)に示す停止条件が必要である。変数をx
0のスリードット、t
1、t
2と置くと、式(15)から変数の解を求めることができる。
【数15】
【0066】
まず変数t
1については、以下の式(16)に示す6次多項式の解となる。
【数16】
【0067】
ただし、式(16)におけるa
0〜a
6は、以下の式(17)に示される。
【数17】
【0068】
上記の式(16)に示した多項式の解は、ニュートン法などを用いた数値解法によって求めることができる。解が無い場合には、t
1=0とする。このt
1を用いて、以下の式(18)の解として、t
2を得ることができる。
【数18】
【0069】
ただし、式(18)におけるb
0〜b
2は、以下の式(19)に示される。
【数19】
【0070】
以上のt
1、t
2から、x
0のスリードットを、以下の式(20)に示すようにして、得ることができる。
【数20】
【0071】
次に、このようにして決定した停止軌道Aが、速度と加速度の制約を満たしているか否かを判定する。すなわち、軌道Aに従って停止可能か否かを判定する。
まず、時刻laを、加速度が0(x
laのツードット=0)になる時刻とすると、時刻1から時刻laまでの時間tlaは、以下の式(21)により示される。
【数21】
【0072】
ここで、tla<0である場合には、この軌道では速度の極大値を取らないため、次の加速度の確認へと進む。
【0073】
一方で、tla>0である場合には、以下の式(22)により示される、その時の速度(x
laのワンドット)を計算する。計算の結果、x
laのワンドット>x
uのワンドットである場合には、得られた軌道Aは速度制約を満たさないと判定される。
【数22】
【0074】
次に、加速度の最小値(x
2のツードット)を求める。x
2のツードット<x
lのツードットである場合には、得られた軌道Aは加速度制約を満たさないと判定される。
【0075】
以上の判定の結果、制約を全て満たすと判定された場合、軌道Aが最短時間の停止軌道となる。このため、躍度入力の最大値(x
0uのスリードット)は、以下の式(23)に示すようにして得ることができる。
【数23】
【0076】
初期状態において軌道Aが実現でき、かつ、軌道A、B、C、Dのいずれかで停止できるように状態を遷移させていけば、軌道A自体が実現できない状態に陥ることはない。
【0077】
(関節の躍度入力への上下限制約の決定方法:軌道パターンB)
次に、軌道B(「x
lのスリードット→0→x
uのスリードット」の躍度入力により停止)を説明する。まず、軌道Bをどのようにして決定するかを説明する。
図3に、軌道Bを例示する。
【0078】
軌道Bでは、時刻4において、以下の式(24)に示す停止条件が必要となる。
【数24】
【0079】
また、以下の式(25)に示すように、時刻2から時刻3の間では加速度が最小値をとる。
【数25】
【0080】
そして、変数をx
0のスリードット、t
1、t
2、t
3と置くと、上記式(25)に示した停止条件と、上記式(25)の1番目の条件と、から、変数の解を求めることができる。
【0081】
変数t
3の解は、以下に示す式(26)により得ることができる。
【数26】
【0082】
変数t
1の解は、以下に示す式(27)の解として得ることができる。
【数27】
【0083】
ただし、式(27)におけるa
0〜a
4は、以下の式(28)に示される。
【数28】
【0084】
変数t
2の解は、t
1、t
3から、以下に示す式(29)により得ることができる。
【数29】
【0085】
変数(x
0のスリードット)の解は、上述したようにして得た他の変数から、以下に示す式(30)により得ることができる。
【数30】
【0086】
次に、このようにして決定した停止軌道Bが、速度の制約を満たしているか否かを判定する。すなわち、軌道Bに従って停止可能か否かを判定する。
まず、時刻t1bを、軌道Bが速度の極大値をとる時刻とすると、時間tlbは、以下の式(31)により示される。
【数31】
【0087】
ここで、t1b<0である場合には、この軌道では速度の極大値を取らないため、軌道Bによって停止することができる。
【0088】
一方で、t1b>0である場合には、以下の式(32)により示される、その時の速度(x
1bのワンドット)を計算する。計算の結果、x
1bのワンドット>x
uのワンドットである場合には、得られた軌道Bは速度制約を満たさないと判定される。
【数32】
【0089】
以上の判定の結果、制約を満たすと判定された場合、軌道Bが最短時間の停止軌道となる。このため、躍度入力の最大値(x
0uのスリードット)は、以下の式(33)に示すようにして得ることができる。
【数33】
【0090】
(関節の躍度入力への上下限制約の決定方法:軌道パターンC)
次に、軌道C(「x
lのスリードット→0→x
lのスリードット→x
uのスリードット」の躍度入力により停止)を説明する。まず、軌道Cをどのようにして決定するかを説明する。
図4に、軌道Cを例示する。
【0091】
軌道Cでは、時刻5において、以下の式(34)に示す停止条件が必要となる。
【数34】
【0092】
また、以下の式(35)に示すように、時刻2から時刻3の間では速度が最大値をとる。
【数35】
【0093】
そして、変数をx
0のスリードット、t
1、t
2、t
3、t
4と置くと、上記式(34)に示した停止条件と、上記式(35)の1番目および2番目の条件と、から、変数の解を求めることができる。
【0094】
変数t
4の解は、以下に示す式(36)により得ることができる。
【数36】
【0095】
変数t
3の解は、以下に示す式(37)により得ることができる。
【数37】
【0096】
変数t
1の解は、以下の式(38)に示す二次方程式の解として得ることができる。
【数38】
【0097】
ただし、式(38)におけるa
0〜a
2は、以下の式(39)に示される。
【数39】
【0098】
変数t
2の解は、t
1、t
3、t
4から、以下に示す式(40)により得ることができる。
【数40】
【0099】
変数(x
0のスリードット)の解は、以下に示す式(41)により得ることができる。
【数41】
【0100】
次に、このようにして決定した停止軌道Cが、加速度の制約を満たしているか否かを判定する。すなわち、軌道Cに従って停止可能か否かを判定する。
軌道Cにおける制限は、時刻4での加速度(x
4のツードット)が、加速度の下限(x
lのツードット)を超えないことである。x
4のツードット<x
lのツードットである場合には、軌道Cは制約を満たしていないと判定される。一方で、この制約を満たすと判定された場合には、軌道Cが最短時間の停止軌道となる。このため、躍度入力の最大値(x
0uのスリードット)は、以下の式(42)に示すようにして得ることができる。
【数42】
【0101】
(関節の躍度入力への上下限制約の決定方法:軌道パターンD)
次に、軌道D(「x
lのスリードット→0→x
lのスリードット→0→x
uのスリードット」の躍度入力により停止)を説明する。まず、軌道Dをどのようにして決定するかを説明する。
図5に、軌道Dを例示する。
【0102】
軌道Dでは、時刻6において、以下の式(43)に示す停止条件が必要となる。
【数43】
【0103】
また、以下の式(44)に示すように、時刻2から時刻3の間では速度が最大値をとる。
【数44】
【0104】
また、以下の式(45)に示すように、時刻4から時刻5の間では加速度が最小値をとる。
【数45】
【0105】
そして、変数をx
0のスリードット、t
1、t
2、t
3、t
4、t
5と置くと、上記式(43)に示した停止条件と、上記式(45)の1番目および2番目の条件と、上記式(45)の1番目の条件と、から、変数の解を求めることができる。
【0106】
変数t
3、t
5、t
4の解は、以下に示す式(46)により得ることができる。
【数46】
【0107】
変数t
1の解は、以下の式(47)に示す二次方程式の解として得ることができる。
【数47】
【0108】
ただし、式(47)におけるa
0〜a
2は、以下の式(48)に示される。
【数48】
【0109】
変数t
2の解は、t
1、t
3、t
4、t
5から、以下に示す式(49)により得ることができる。
【数49】
【0110】
変数(x
0のスリードット)の解は、以下に示す式(50)により得ることができる。
【数50】
【0111】
このようにして決定した停止軌道Dは制約がない。このため、躍度入力の最大値(x
0uのスリードット)は、以下の式(51)に示すようにして得ることができる。
【数51】
【0112】
(動作確認:1自由度での動作確認)
次に、上述した躍度制限を、1自由度変数xに対して実装し、その動作確認を行った。変数xには、変位、速度、加速度の上下限を設定する。関節の目標変位x
rに対して、躍度入力(xのスリードット)を以下の式(52)に示すようにして計算する。
【数52】
【0113】
ステップごとに
図1に示した処理を行い躍度の上下限を計算し、関節の躍度入力(xのスリードット)を上下限によって制限する。ただし、上記式(52)の各ゲインKd、Kv、Kaは、この3次系システムの応答に基づいて予め適当な値を設計する。
【0114】
図6、7、8に、得られた軌道を例示する。
図6は、変位の応答を示す。
図7は、速度の応答を示す。
図8は、加速度の応答を示す。
図9は、躍度入力を示す。変位の上下限を±1、速度の上下限を±2、加速度の上下限を±10、躍度の上下限を±1000に設定している。また、目標変位x
rは、時刻3まで1.1、時刻8まで−1.1、時刻10まで0に設定している。目標速度と目標加速度は、共に0と設定している。これらの図から明らかなように、変位、速度、加速度の上下限(図において、Upper limit、Lower limitとして示す。)を全て満たしながら動作していることがわかる。
【0115】
(動作確認:3自由度での動作確認)
次に、躍度分解制御を用いた3自由度アームを有するロボットに対して動作確認を行い、その結果を説明する。
図10は、本実施の形態に係る多関節ロボット300(以下、単にロボット300と称する。)の模式的な構成例を示している。ここでは、ロボット300が、3自由度アームを備えたアームロボットである場合を例に説明する。同図にこのロボット300の3自由度アームの軸の配置を示す。
【0116】
ロボット300はコントローラ310を備えている。また、ロボット300はアーム320を備えており、アーム320の先端に設けられた手先330を対象として、この対象を操作する。アーム320は、複数の関節(関節321、322、323)と、各関節を接続するリンクと、を備えている。各関節には、関節角を制御するアクチュエータと、関節角を検出するエンコーダとが内蔵されている。なお、コントローラ310は、ロボット300の内部に有する構成であってもよいし、外部に接続されてロボット300に対して指令を送信する構成であってもよい。
【0117】
コントローラ310は、上述した全身協調計算部200の機能を有している。すなわち、コントローラ310は、躍度入力への上下限制約計算部210、最適化問題求解部220の各機能を実現するプログラムを含み、各部での各処理を実行し、関節への躍度入力を計算する。そして、コントローラ310は、計算した関節への躍度入力に基づいて、各関節(関節321、322、323)を制御することで多関節を協調制御し、これによって、アーム320の手先330を移動させる。
【0118】
すなわち、コントローラ310は、計算された各関節の躍度の目標に追従するように、アクチュエータを制御する。より具体的には、コントローラ310は、各関節の目標躍度の時系列データを算出し、算出した目標躍度に追従するように各関節を制御することで、ロボット300の対象を操作する。
【0119】
なお、コントローラ310は、主要なハードウェア構成として、制御処理、演算処理等と行うCPU(Central Processing Unit)と、CPUによって実行される制御プログラムと、演算プログラム等が記憶されたROM(Read Only Memory)と、処理データ等を一時的に記憶するRAM(Random Access Memory)と、を有するマイクロコンピュータを用いて構成されている。また、これらCPU、ROM、及びRAMは、データバスによって相互に接続されている。
【0120】
また、
図10に示すロボット300の関節(関節321、322、323)は、y軸方向への回転関節である。同図に示す例では、x−z平面上の手先330の位置を指定して、この位置を3つの関節を用いて実現するために、冗長な問題となる。
【0121】
まず、ロボット300は、初期状態において、
図10(a)に示す初期姿勢(全関節(関節321、322、323)角度=0) にあるものとする。そして、タスクの設定に関して、最も優先度の高いタスクとして、
図10(b)に示すように、手先330の目標変位(目標位置)を、座標(2.0,0.5)にステップ状に与えた。また、手先330の指令速度、指令加速度は0を与えた。次に優先度の高いタスクとして、各関節(関節321、322、323)の速度を0にする指令を与えている。さらに、関節321の変位の下限を−0.65[rad]に制限し、手先330の目標位置へ到達するためには、関節321がこの下限の変位を必ずとるようにした。
【0122】
図11および
図12に、計算した関節の躍度入力に従って、ロボット300を動作させた際の対象(手先330)の変位の応答を示す。同図に示すように、指令した変位へと収束していることが確認できる。
【0123】
また、
図13〜15に、各関節(関節321、322、323)の変位、速度、加速度の応答を示す。なお、各図において、関節321を「Joint 0」、関節322を「Joint 1」、関節323を「Joint 2」として示している。また、
図16に、関節(関節321、322、323)の躍度入力を示す。
図13〜16に示すように、各関節(関節321、322、323)それぞれに設定された上下限制約を満たしながら動作していることが確認できる。
【0124】
また、関節(関節321、322、323)の躍度入力は常に上下限を満たしているため、滑らかな軌道が得られる。特に、
図13に示すように、関節321に関しては0.9秒付近で変位の下限にぶつかっているが、ロボット300は冗長な自由度を持っているために、関節322および関節323が変位することで、手先330の目標位置を実現できている。
【0125】
以上に説明したように、複数の関節を協調させて対象を操作するロボットにおいて、関節の躍度入力を最小化すると共に、関節の変位、速度、加速度の上下限制約を必ず満たすことが可能な手法を実現した。
【0126】
図17を参照して、本発明による効果を更に説明する。
近年、人の位置・姿勢を簡便に取得できるセンサが実用化されている。そのようなセンサを含む動作入力装置100を用いて得られた動作データから、ロボット300を駆動するような試みも多くなされている。
図17に、このような動作入力装置100を用いた、ロボット300の動作生成システムの概略構成を示す。
図17(a)は、本発明に係る全身協調計算部200を含む動作生成システムの概略構成図である。
図17(b)は、従来技術に係る全身協調計算部500を含む動作生成システムの概略構成図である。
【0127】
図17(b)に示すように、従来の関節協調制御技術を用いた動作生成システムでは、協調制御処理の前段には、センサの誤差などによる不連続な入力値を補正する構成(入力値の不連続性補正処理400)を必要とし、また、後段にも、過度な加速度の不連続点や速度超過を平滑化するための構成(指令値の平滑化処理600)を必要としていた。
【0128】
これに対して、
図17(a)に示すように、本発明に係る全身協調計算部200を用いた動作生成システムでは、全身協調計算部200での全身協調制御に状態フィードバック則を内包しているために、その前段の処理が不要になる。さらに、関節躍度まで考慮して加速度のレベルでの連続性を保証していることから、その後段のフィルタ処理を設ける必要がなく、直接、関節駆動の指令値として使用することができる。従って、システムの大幅な簡素化を期待でき、計測した何らかの動作目標値を、そのままロボット300に適用するようなダイレクトな系を構成することが可能となる。
【0129】
すなわち、本発明に係る全身協調計算部200を用いた動作生成システムでは、システム単体で、不連続かつ粗悪なデータ入力からでもロボット300の関節を滑らかに駆動するような軌道に修正して出力することができる。この結果、ロボット300自体に対しても、外的環境(ヒトやモノ)に対しても、安心・安全な動作指令値を提供することができ、非常に有用なものである。
【0130】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述した実施の形態では、ロボット300が3自由度アームを備えたアームロボットである場合を例に説明したが、本発明はこれに限られるものではない。すなわち、ロボット300として、人間型ロボット(関節数20以上) や車輪付きアームロボット(関節数8以上)に対して本発明を適用するものとしてもよい。
【0131】
また、変位、速度、加速度の上下限制約を実現するための躍度上下限の計算方法は一般的なものであり、例えば、産業ロボットアームや自動車のモーションコントロールに対しても適用するものとしてもよい。
【0132】
また、上述した実施の形態では、ロボット300が備えるコントローラ310が、上述した全身協調計算部200の機能を有する構成として説明したが、本発明はこれに限定されず、全身協調計算部200の機能を備える装置を関節協調制御装置として、ロボット300とは独立して備える構成としてもよい。