JP2021122894A - 逆運動学演算装置及び逆運動学演算方法 - Google Patents
逆運動学演算装置及び逆運動学演算方法 Download PDFInfo
- Publication number
- JP2021122894A JP2021122894A JP2020017867A JP2020017867A JP2021122894A JP 2021122894 A JP2021122894 A JP 2021122894A JP 2020017867 A JP2020017867 A JP 2020017867A JP 2020017867 A JP2020017867 A JP 2020017867A JP 2021122894 A JP2021122894 A JP 2021122894A
- Authority
- JP
- Japan
- Prior art keywords
- calculator
- inverse kinematics
- robot arm
- numerical
- input information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Manipulator (AREA)
Abstract
【課題】従来構成に対し、ロボットアームの手先の位置精度及び姿勢精度を保証可能とする。【解決手段】複数の関節を有するロボットアームの手先の位置及び姿勢、並びに、位置精度及び姿勢精度を入力情報として受付ける入力器1と、入力器1により受付けられた入力情報に基づいて、ロボットアームの手先の位置及び姿勢についての逆運動学演算の解に対応する中間変数の探索及び更新を行う数値計算器2と、入力器1により受付けられた入力情報及び数値計算器2により更新された中間変数に基づいて、ロボットアームの手先の位置及び姿勢についての逆運動学演算の解を求める関節角計算器3と、関節角計算器3により求められた解に対して順運動学演算を行い、入力器1により受付けられた入力情報を満たすかを判定する検算器4と、検算器4による判定結果に基づいて、数値計算器2による更新を停止させる収束判定器5と、検算器4により入力情報を満たすと判定された解を示すデータを出力する出力器6とを備えた。【選択図】図1
Description
この発明は、複数の関節を有するロボットアームに対して逆運動学演算を行う逆運動学演算装置及び逆運動学演算方法に関する。
複数の関節を有するロボットアーム(多関節ロボットアーム)の状態を表現する方法としては、関節空間表現及びデカルト空間表現の2通りの方法がある。
関節空間表現は、ロボットアームが有する各関節の角度(回転角度)によって、ロボットアームの状態を表現する。6軸のロボットアームの場合には、6次元の関節角ベクトルで、ロボットアームの状態を表現できる。なお以下では、垂直多関節ロボットアームの関節を根元側から順にJ1,J2,・・・で表し、関節の角度を根元側から順にθ1,θ2,・・・で表す。
デカルト空間表現は、デカルト空間におけるロボットアームの手先の位置及び姿勢によって、ロボットアームの状態を表現する。デカルト空間表現では、3次元の位置及び3次元の姿勢の合計6次元のデータで、ロボットアームの状態を表現できる。なお以下では、デカルト空間表現を、P={x,y,z,roll,pitch,yaw}で表す。
そして、関節空間からデカルト空間へ変換するための演算を順運動学演算と呼び、デカルト空間から関節空間へ変換するための演算を逆運動学演算と呼ぶ。ユーザは、ロボットアームに何らかの作業をさせる際に、デカルト空間表現でロボットアームに対して移動指示を出すことが多いため、逆運動学演算が必要となる。
逆運動学演算は、ロボットアームの手先の位置及び姿勢から、全ての関節又は一部の関節の角度を求める演算である。そのため、逆運動学演算では、愚直にアプローチすると高次元の数値計算を複数回実行する必要があり、計算コストが高くなる。大前提として、逆運動学演算の計算時間は、ロボットアームの制御にとっては遅延となるため、できるだけ低計算コストであることが望ましい。そこで、ロボットアームの構造(幾何特性)を考慮して次元削減し、逆運動学演算の計算コストを低減する研究がなされている。
産業用の垂直6関節ロボットアーム(産業用ロボット)では、図7に示すようなリンク機構が用いられることが多い(例えば非特許文献1参照)。リンク機構は、関節が同一直線上に配置された構成であるため、数値計算を必要とせず、解析的に逆運動学演算を解くことができる。
次に、人協働ロボットアームのリンク機構の一例を図8に示す。
図8において、ロボットアームのJ4から先端に至る部分(図8に示す破線より上部分)は、手先の姿勢制御を主に担当する手首機構と呼ばれる。手首機構としては、直交球状手首機構、非直交球状手首機構又は非球状手首機構(オフセット手首機構)等様々な機構が提案されている(例えば非特許文献2参照)。
このロボットアームは、ユーザがロボットアームに直接触れてダイレクト教示を行う用途がある。そのため、ダイレクト教示中にユーザの手がロボットアームに挟み込まれないように、手首機構はオフセット手首機構で設計されることが多い。
図8において、ロボットアームのJ4から先端に至る部分(図8に示す破線より上部分)は、手先の姿勢制御を主に担当する手首機構と呼ばれる。手首機構としては、直交球状手首機構、非直交球状手首機構又は非球状手首機構(オフセット手首機構)等様々な機構が提案されている(例えば非特許文献2参照)。
このロボットアームは、ユーザがロボットアームに直接触れてダイレクト教示を行う用途がある。そのため、ダイレクト教示中にユーザの手がロボットアームに挟み込まれないように、手首機構はオフセット手首機構で設計されることが多い。
そして、例えば図8に示すように、J4の回転軸とJ6の回転軸とがずれているオフセット手首機構を有するロボットアーム(以下、J4−6オフセットアームと略記)に対しては、解析的に逆運動学演算する手法は発明されていないため、数値的に演算する必要がある。図8に示すように、J4−6オフセットアームは、ロボットアームが有する関節のうちの6つの関節において、J1の回転軸とJ4の回転軸とJ6の回転軸とが平行(略平行の意味を含む)であり、且つ、J4の回転軸とJ6の回転軸とがオフセットしている。
次に、J4−6オフセットアームの逆運動学演算の方法について説明する。
ここで、J4−6オフセットアームのリンク機構と運動学的に等価なリンク機構を図9に示す。図9のように簡略されたリンク機構を用いると運動学の演算はし易くなる。
図9において、点Oは、ロボットアームの根元であり、ベース座標系の原点である。点Pは、ロボットアームの先端(手先)であり、逆運動学演算の入力情報として点Pにおける位置及び姿勢が入力される。点Gは、点Cをベース座標系のxy平面へ射影した点である。点Jは、点Gのベース座標系のz座標に対してl1を加算した点である。l1は、点Oと点Eとの間の長さを表す。l2は、点Eと点Dとの間の長さを表す。l3は、点Dと点Cとの間の長さを表す。l4は、点Cと点Bとの間の長さを表す。l5は、点Bと点Aとの間の長さを表す。l6は、点Aと点Pとの間の長さを表す。
ここで、J4−6オフセットアームのリンク機構と運動学的に等価なリンク機構を図9に示す。図9のように簡略されたリンク機構を用いると運動学の演算はし易くなる。
図9において、点Oは、ロボットアームの根元であり、ベース座標系の原点である。点Pは、ロボットアームの先端(手先)であり、逆運動学演算の入力情報として点Pにおける位置及び姿勢が入力される。点Gは、点Cをベース座標系のxy平面へ射影した点である。点Jは、点Gのベース座標系のz座標に対してl1を加算した点である。l1は、点Oと点Eとの間の長さを表す。l2は、点Eと点Dとの間の長さを表す。l3は、点Dと点Cとの間の長さを表す。l4は、点Cと点Bとの間の長さを表す。l5は、点Bと点Aとの間の長さを表す。l6は、点Aと点Pとの間の長さを表す。
非特許文献2では、J4−6オフセットアームにおいて、図9に示すベクトルBCとベクトルBAとが直交する幾何特性に着目して逆運動学演算を行う方法が提案されている。
この方法では、ベクトルBCとベクトルBAとの内積を評価関数とする。なお、評価関数をfで表す。そして、まず、f(θ6)=0となるθ6を数値的に探索する。そして、f(θ6)=0となるθ6が求められると、ロボットアームの先端から順にθ5〜θ1を求めることができる。この方法は、6次元の変数(関節角ベクトル)の数値計算を、1次元の中間変数であるθ6の数値計算として解くことができるため、6次元の変数の数値計算よりも低計算コストである。
この方法では、ベクトルBCとベクトルBAとの内積を評価関数とする。なお、評価関数をfで表す。そして、まず、f(θ6)=0となるθ6を数値的に探索する。そして、f(θ6)=0となるθ6が求められると、ロボットアームの先端から順にθ5〜θ1を求めることができる。この方法は、6次元の変数(関節角ベクトル)の数値計算を、1次元の中間変数であるθ6の数値計算として解くことができるため、6次元の変数の数値計算よりも低計算コストである。
次に、従来の逆運動学演算装置の構成例について、図10を参照しながら説明する。
従来の逆運動学演算装置は、図10に示すように、入力器101、数値計算器102、収束判定器103、関節角計算器104、出力器105及びε記憶器106を備えている。
従来の逆運動学演算装置は、図10に示すように、入力器101、数値計算器102、収束判定器103、関節角計算器104、出力器105及びε記憶器106を備えている。
入力器101は、入力情報を受付ける。入力情報としては、ロボットアームの手先の位置及び姿勢(デカルト空間表現、デカルト空間表現へ変数変換可能な極座標系、又は、円筒座標系等)、並びに、解への要求精度(位置精度及び姿勢精度)が必須である。
数値計算器102は、入力器101により受付けられた入力情報に基づいて、θ6を数値的に探索しながら更新する。なお、数値計算器102は、収束判定器103によりf(θ6)が0に収束したと判定されるまで更新を繰返す。f(θ6)は、θ6に対する評価関数を表す。
収束判定器103は、f(θ6)が0に収束したかを判定する。具体的には、収束判定器103は、|f(θ6)|<εであると判定した場合に、f(θ6)が0に収束したと判定する。εは微小値である。そして、収束判定器103は、f(θ6)が0に収束したと判定した場合に、数値計算器102に対して更新停止指示を出力して数値計算器102によるθ6の更新を停止させる。
関節角計算器104は、数値計算器102により探索された|f(θ6)|<εとなるθ6に基づいて、θ1〜θ5を求めることで、逆運動学演算の解(関節角ベクトル)を求める。
出力器105は、関節角計算器104により求められた逆運動学演算の解を示すデータを出力する。
ε記憶器106は、収束判定器103で用いられるεを示すデータを記憶する。
大隅久: "ロボット工学の基礎", 精密工学会誌Vol.73 No.10, pp.1123-1126, 2007.
Cuong Trinh, Dimiter Zlatanov, Matteo Zoppi, and Rezia Molfino : "A GEOMETRICAL APPROACH TO THE INVERSE KINEMATICS OF 6R SERIAL ROBOTS WITH OFFSET WRISTS", Proceedings of the ASME 2015 International Design Engineering Technical Conferences & Computers and Information in Engineering Conference, DETC2015-47950, 2015.
図11に示すように、従来の逆運動学演算装置では、εの大きさによって、θ6に誤差が生じる。θ6の誤差をΔθ6で表す。また、この逆運動学演算装置では、数値計算器102により得られたθ6から芋づる式にθ1〜θ5を求めているため、これらにも誤差が生じる。θ1〜θ5の誤差をΔθ1〜Δθ5で表す。そのため、この逆運動学演算装置では、逆運動学演算の解(Θ={θ1+Δθ1,θ2+Δθ2,θ3+Δθ3,θ4+Δθ4,θ5+Δθ5,θ6+Δθ6})を順運動学演算で検算した場合に、ロボットアームの手先の位置及び姿勢にも誤差が生じる。
また、f(θ6)は、入力情報であるロボットアームの手先の位置及び姿勢に依存する。すなわち、εによるθ6の誤差は、入力情報であるロボットアームの手先の位置及び姿勢に依存する。よって、ある微小な固定値であるεを用いて逆運動学演算を行った場合に、必ずしもロボットアームの手先の位置及び姿勢が所望の精度になるとは限らない。
一般に、逆運動学演算への要求仕様としては、所定の位置精度及び姿勢精度を満たすこと(逆運動学演算の精度を保証すること)が求められる。すなわち、逆運動学演算の解を順運動学演算で検算した場合に、ロボットアームの手先の位置精度及び姿勢精度と一致することが求められる。
この要求仕様を満たすためには、上述した内容を基にεを逆算的に求める等の工夫が必要である。しかしながら、εの最適値は、ロボットアームの構造だけでなく、ロボットアームの位置姿勢によっても異なるため、解析的に設定することが困難である。非特許文献2では、試験的に数パターンのロボットアームの手先の位置及び姿勢について逆運動学演算を解いたことが開示されるのみであり、誤差解析及びεの決定方法は触れられておらず、要求仕様を満たすための検討の余地が残されている。
このように、数値計算の次元を削減する方法は、計算コストの低減の効果がある反面、位置精度及び姿勢精度の保証に課題が残されており、逆運動学演算の精度を保証するための改善が求められている。
また、εは数値計算の反復演算回数に関係する。εを必要以上に小さい値にすると、反復演算回数が増加して計算コストが高くなる。そのため、εは、計算コストを小さくするため、できるだけ大きくしたいという制約がある。
以上から、所定のロボットアームの手先の位置精度及び姿勢精度を保証する逆運動学演算の方法が求められている。
この発明は、上記のような課題を解決するためになされたもので、従来構成に対し、ロボットアームの手先の位置精度及び姿勢精度を保証可能な逆運動学演算装置を提供することを目的としている。
この発明に係る逆運動学演算装置は、複数の関節を有するロボットアームの手先の位置及び姿勢、並びに、位置精度及び姿勢精度を入力情報として受付ける入力器と、入力器により受付けられた入力情報に基づいて、ロボットアームの手先の位置及び姿勢についての逆運動学演算の解に対応する中間変数の探索及び更新を行う数値計算器と、入力器により受付けられた入力情報及び数値計算器により更新された中間変数に基づいて、ロボットアームの手先の位置及び姿勢についての逆運動学演算の解を求める関節角計算器と、関節角計算器により求められた解に対して順運動学演算を行い、入力器により受付けられた入力情報を満たすかを判定する検算器と、検算器による判定結果に基づいて、数値計算器による更新を停止させる収束判定器と、検算器により入力情報を満たすと判定された解を示すデータを出力する出力器とを備えたことを特徴とする。
この発明によれば、上記のように構成したので、従来構成に対し、ロボットアームの手先の位置精度及び姿勢精度を保証可能となる。
以下、この発明の実施の形態について図面を参照しながら詳細に説明する。
実施の形態1.
図1は実施の形態1に係る逆運動学演算装置の構成例を示す図である。
逆運動学演算装置は、複数の関節を有するロボットアームに対して逆運動学演算を行う。この逆運動学演算装置は、図1に示すように、入力器1、数値計算器2、関節角計算器3、検算器4、収束判定器5及び出力器6を備えている。
実施の形態1.
図1は実施の形態1に係る逆運動学演算装置の構成例を示す図である。
逆運動学演算装置は、複数の関節を有するロボットアームに対して逆運動学演算を行う。この逆運動学演算装置は、図1に示すように、入力器1、数値計算器2、関節角計算器3、検算器4、収束判定器5及び出力器6を備えている。
なお、逆運動学演算装置は、システムLSI(Large Scale Integration)等の処理回路、又はメモリ等に記憶されたプログラムを実行するCPU(Central Processing Unit)等により実現される。
入力器1は、入力情報を受付ける。入力情報には、ロボットアームの手先の位置及び姿勢(デカルト空間表現、デカルト空間表現へ変数変換可能な極座標系、又は、円筒座標系等)、並びに、解への要求精度(位置精度及び姿勢精度)が含まれる。
数値計算器2は、入力器1により受付けられた入力情報に基づいて、ロボットアームの手先の位置及び姿勢についての逆運動学演算の解に対応する中間変数の探索及び更新を行う。この数値計算器2は、収束判定器5により更新停止指示が通知されるまで中間変数の更新を繰返す。以下では、数値計算器2が、中間変数として、1次元の中間変数の探索及び更新を行う場合を示す。
関節角計算器3は、入力器1により受付けられた入力情報及び数値計算器2により更新された中間変数に基づいて、ロボットアームの手先の位置及び姿勢についての逆運動学演算の解(関節角ベクトル)を求める。この関節角計算器3は、数値計算器2により中間変数が更新される度に処理を繰返す。
なお、関節角計算器3により求められた逆運動学演算の解は、検算器4により入力情報を満たすと判定されるまでは暫定的な解である。
検算器4は、関節角計算器3により求められた逆運動学演算の解に対して順運動学演算を行い、入力器1により受付けられた入力情報を満たすかを判定する。この検算器4は、関節角計算器3により逆運動学演算の解が求められる度に処理を繰返す。
収束判定器5は、検算器4による判定結果に基づいて、数値計算器2による更新を停止させる。具体的には、収束判定器5は、検算器4により入力情報を満たすと判定された場合に、数値計算器2に更新停止指示を通知し、数値計算器2による更新を停止させる。このように、検算器4による検算結果を直接用いて収束判定を行う方法を、デカルト空間収束判定法と呼ぶ。
出力器6は、検算器4により入力情報を満たすと判定された逆運動学演算の解を示すデータを出力する。
次に、図1に示す実施の形態1に係る逆運動学演算装置の動作例について、図2を参照しながら説明する。以下では、ロボットアームがJ4−6オフセットアームであり、中間変数がθ6である場合を示す。また、f(θ6)の計算方法は非特許文献2に開示された方法を参考にする。
ここで、従来の逆運動学演算装置では、θ6,f(θ6)という2次元空間において、|f(θ6)|<εを収束条件として、f(θ6)=0となるようにθ6を探索する数値計算を行っている。そのため、この逆運動学演算装置では、εが大きすぎると所定の位置精度及び姿勢精度を満たせず、εが小さすぎるとオーバースペックで反復演算回数が多くなり計算コストが大きくなる。
そこで、実施の形態1に係る逆運動学演算装置では、検算器4による検算結果に基づいて収束判定を行う。検算器4は、逆運動学演算の暫定的な解を用いて順運動学演算を行って検算値を求め、その検算値が入力情報を満たすかを判定する。この検算器4により、所定の位置精度及び姿勢精度が保証される点は、重要な技術思想である。
また、従来の逆運動学演算装置の課題の要因は、位置精度及び姿勢精度に対するεを解析的に得られない点である。
これに対し、実施の形態1における収束判定器5が用いるデカルト空間収束判定法は、「収束条件にεを使用しない」という方法である。すなわち、評価関数が0となる場合に位置誤差及び姿勢誤差が0になる性質を利用し、検算結果を数値計算の収束判定に用いる。
これに対し、実施の形態1における収束判定器5が用いるデカルト空間収束判定法は、「収束条件にεを使用しない」という方法である。すなわち、評価関数が0となる場合に位置誤差及び姿勢誤差が0になる性質を利用し、検算結果を数値計算の収束判定に用いる。
図1に示す実施の形態1に係る逆運動学演算装置の動作例では、図2に示すように、まず、入力器1は、入力情報を受付ける(ステップST201)。入力情報には、ロボットアームの手先の位置及び姿勢、並びに、解への要求精度(位置精度及び姿勢精度)が含まれる。
次いで、数値計算器2は、入力器1により受付けられた入力情報に基づいて、θ6の探索及び更新を行う(ステップST202)。この数値計算器2は、収束判定器5により更新停止指示が通知されるまでθ6の更新を繰返す。以下、数値計算器2による処理の詳細について説明する。
ここで、一般に、逆運動学演算の解は複数存在する。それらの解を区別する手段として構造フラグがある。構造フラグは、幾つかの観点での指標を持つ。J4−6オフセットアームの場合、Shoulder指標及びElbow指標が用いられる。
まず、Shoulder指標の定義について説明する。
図9に示すリンク機構において、ベース座標系のxy平面(z=0)について考える。この場合、図3に示すように、点Gは点Oを中心とする半径l3の円周上に存在する。また、点Bのxy平面への射影を点B’とすると、ベクトルOGとベクトルGB’は直交する。そのため、点B’を起点とする直線と、点Oを中心とする半径l3の円との接点が、点G(図3に示す点G1及び点G2)となる。すなわち、接点は2つあるため、これらを区別する指標をShoulder指標と定義する。Shoulder指標は、下式(1),(2)のように、ベクトルOB’とベクトルOGとの外積ベクトルのz軸要素の正負で上記接点をRighty又はLeftyとして判別できる。式(1)において、xshoulderは上記外積ベクトルのx軸要素を表し、yshoulderは上記外積ベクトルのy軸要素を表し、zshoulderは上記外積ベクトルのz軸要素を表す。なお、RightyとLeftyの誤判定を防ぐため、式(2)のように、計算上発生する数値誤差程度の微小値だけ境界マージンを定義し、Neutral領域を設けることが望ましい。式(2)において、εshoulderは微小値を表す。
図9に示すリンク機構において、ベース座標系のxy平面(z=0)について考える。この場合、図3に示すように、点Gは点Oを中心とする半径l3の円周上に存在する。また、点Bのxy平面への射影を点B’とすると、ベクトルOGとベクトルGB’は直交する。そのため、点B’を起点とする直線と、点Oを中心とする半径l3の円との接点が、点G(図3に示す点G1及び点G2)となる。すなわち、接点は2つあるため、これらを区別する指標をShoulder指標と定義する。Shoulder指標は、下式(1),(2)のように、ベクトルOB’とベクトルOGとの外積ベクトルのz軸要素の正負で上記接点をRighty又はLeftyとして判別できる。式(1)において、xshoulderは上記外積ベクトルのx軸要素を表し、yshoulderは上記外積ベクトルのy軸要素を表し、zshoulderは上記外積ベクトルのz軸要素を表す。なお、RightyとLeftyの誤判定を防ぐため、式(2)のように、計算上発生する数値誤差程度の微小値だけ境界マージンを定義し、Neutral領域を設けることが望ましい。式(2)において、εshoulderは微小値を表す。
次に、Elbow指標の定義について説明する。
図4のように、ベクトルGB’をx軸とし、ベクトルGJをz軸とする座標系を、説明を分かりやすくするために、Π座標系と呼ぶ。このΠ座標系のxz平面について考える。この場合、点Cは点Jを中心とする半径l2の円周上に存在する。また、点Cは点Bを中心とする半径l4の円周上に存在するとも言える。よって、2つの円の交点が点C(図4に示す点C1及び点C2)である。すなわち、交点は2つあるため、これらを区別する指標をElbow指標と定義する。Elbow指標は、θ3の正負で上記交点をAbove又はBelowとして判別できる。ここで、Shoulder指標と同様に、微小値だけ境界マージンを定義し、Neutral領域を設けることが望ましい。また、Shoulder指標と微小値の単位を揃えるため、Elbow指標の判定は下式(3)のように計算することとする。式(3)において、εelbowは微小値を表す。
図4のように、ベクトルGB’をx軸とし、ベクトルGJをz軸とする座標系を、説明を分かりやすくするために、Π座標系と呼ぶ。このΠ座標系のxz平面について考える。この場合、点Cは点Jを中心とする半径l2の円周上に存在する。また、点Cは点Bを中心とする半径l4の円周上に存在するとも言える。よって、2つの円の交点が点C(図4に示す点C1及び点C2)である。すなわち、交点は2つあるため、これらを区別する指標をElbow指標と定義する。Elbow指標は、θ3の正負で上記交点をAbove又はBelowとして判別できる。ここで、Shoulder指標と同様に、微小値だけ境界マージンを定義し、Neutral領域を設けることが望ましい。また、Shoulder指標と微小値の単位を揃えるため、Elbow指標の判定は下式(3)のように計算することとする。式(3)において、εelbowは微小値を表す。
次に、点Pにおける位置及び姿勢、並びに、1対のShoulder指標及びElbow指標が与えられた場合でのf(θ6)の計算方法について説明する。なお、Shoulder指標及びElbow指標は入力情報として与えられてもよいし、ロボットアームの現在の状態から導出してもよい。
まず、点Pにおける位置は、入力情報として与えられる。よって、ベクトルOPは計算可能である。また、点Pにおける姿勢は、入力情報として与えられ、3×3の回転行列で表すことができる。回転行列は、R=[s,n,a]で表され、3つの列ベクトル(単位ベクトル)で姿勢を表す。
また、点Gに関して以下が成り立つ。
すなわち、ベクトルOBのz軸要素を0に置換することで、ベクトルOBをxy平面(z=0)へ射影したベクトルOB’が得られる。この場合、∠B’OGに関して下式(7)〜(9)が成り立つ。なお、式(8)におけるsinの符号は、Shoulder指標によって定まる。すなわち、Shoulder指標がRightyであればsinの符号は+であり、Shoulder指標がLeftyであればsinの符号は−である。
すなわち、ベクトルOBのz軸要素を0に置換することで、ベクトルOBをxy平面(z=0)へ射影したベクトルOB’が得られる。この場合、∠B’OGに関して下式(7)〜(9)が成り立つ。なお、式(8)におけるsinの符号は、Shoulder指標によって定まる。すなわち、Shoulder指標がRightyであればsinの符号は+であり、Shoulder指標がLeftyであればsinの符号は−である。
また、点Jに関して、ベクトルOJは、ベクトルOGのz軸要素であるzjをl1へ置換することで求められる。
また、J1についての回転変換をT1とすると、ベース座標系におけるベクトルJCは、下式(19)〜(23)のように、Π座標系におけるベクトルJCΠをT1で回転変換することで求められる。式(22)において、xGは点Gのx軸要素である。式(23)において、yGは点Gのy軸要素である。
ベクトルCBとベクトルBAとが直交することが目的であるため、ベクトルCBとベクトルBAとの内積を評価関数とする。また、内積をそのまま用いると評価関数の値域がベクトル長に依存してしまう。そのため、下式(25)のように正規化したものを評価関数として用いるのが望ましい。
そして、数値計算器2は、f(θ6)が0となるθ6を求める。ここで、f(θ6)は、未知の非線形関数であり、f(θ6)=0となるθ6の個数も未知である。f(θ6)の一例を図5に示す。
数値計算器2による処理(根の探索アルゴリズム)では、「f(θ6)が未知の非線形関数であるとはいえ、ある微小な区間に着目すれば単調変化である」ことに着目している。数値計算器2による処理は2段階構成であり、f(θ6)=0となるθ6を1つだけ含む区間を求める大域探索と、大域探索で求めた区間についてf(θ6)=0となるθ6を求める詳細探索とを行う。ここで、区間を[θs,θe]で表す。θsは区間の始点を表し、θeは区間の終点を表す。
まず、数値計算器2による大域探索について説明する。
ここでは、一例として、数値計算器2がグリッドサーチによる大域探索を行う場合を示す。すなわち、数値計算器2は、θ6の値域をΔθで複数の[θs,θe]に分割する。ここで、値域を[θlower,θupper]で表す。θlowerは値域の始点を表し、θupperは値域の終点を表す。なお、|θlower|,|θupper|≦πとする。Δθは微小区間幅を表す。また、i番目の区間について、θs[i]及びθe[i]は下式(26),(27)のように表せる。
ここでは、一例として、数値計算器2がグリッドサーチによる大域探索を行う場合を示す。すなわち、数値計算器2は、θ6の値域をΔθで複数の[θs,θe]に分割する。ここで、値域を[θlower,θupper]で表す。θlowerは値域の始点を表し、θupperは値域の終点を表す。なお、|θlower|,|θupper|≦πとする。Δθは微小区間幅を表す。また、i番目の区間について、θs[i]及びθe[i]は下式(26),(27)のように表せる。
そして、数値計算器2は、分割した複数の[θs,θe]に対してゼロ点包含判定を行う。すなわち、数値計算器2は、[θs,θe]においてf(θ6)が単調変化する場合であって、θs,θeについて|f(θs)|<E又は|f(θe)|<Eを満たす場合、又は、f(θs)とf(θe)とが異符号である場合に、[θs,θe]内にf(θ6)=0となるθ6を含むと判定する。Eは、微小値であるが、収束判定で用いられるεとは別物である。Eとしては、f(θ6)=0となるθ6を見逃さないように、大きめの値(例えば10−4)が設定されることが望ましい。
次に、数値計算器2による詳細探索について説明する。
数値計算器2は、大域探索で求めた[θs,θe]について、f(θ6)=0となるθ6を求める。すなわち、数値計算器2は、fの根を数値計算で求める。未知の非線形関数の根を数値計算により求めるアルゴリズムとしては、二分法、割線法又は挟み撃ち法等が挙げられる。ここでは、数値計算器2がアンダーソン・ビョーク法(AB法)を用いた場合について説明する。
数値計算器2は、大域探索で求めた[θs,θe]について、f(θ6)=0となるθ6を求める。すなわち、数値計算器2は、fの根を数値計算で求める。未知の非線形関数の根を数値計算により求めるアルゴリズムとしては、二分法、割線法又は挟み撃ち法等が挙げられる。ここでは、数値計算器2がアンダーソン・ビョーク法(AB法)を用いた場合について説明する。
AB法は、挟み撃ち法の改良手法である。AB法は、挟み撃ち法と同様に、θs又はθeを更新して根を含む区間を狭めて絞込みを行い、根を求める。このAB法は、挟み撃ち法よりも少ない計算回数で根を求めることができる利点がある。
ここで、数値計算器2は、f(θs)とf(θtemp)とが同符号である場合には[θs,θtemp]内に根はないので、θsをθtempで更新する。この場合、AB法では係数であるmを用い、次回のθtempの計算時にf(θe)をmf(θe)に置換して計算する。mは下式(29)で定義される。計算の結果、mが負となってしまった場合には、m=0.5とする。
なお、m=0.5で固定値計算する手法は、イリノイ法と呼ばれる。収束の速さは、挟み撃ち法<イリノイ法≦AB法の順となる。
一方、数値計算器2は、f(θs)とf(θtemp)とが異符号である場合には[θs,θtemp]内に根があるので、θeをθtempで更新する。この場合、AB法ではmを使い、次回のθtempの計算時にf(θs)をmf(θs)に置換して計算する。mは下式(30)で定義される。計算の結果、mが負となってしまった場合は、m=0.5とする。
次いで、関節角計算器3は、入力器1により受付けられた入力情報及び数値計算器2により更新されたθ6に基づいて、Θ={θ1,θ2,θ3,θ4,θ5,θ6}を求める(ステップST203)。この関節角計算器3は、数値計算器2によりθ6が更新される度に処理を繰返す。
以下、関節角計算器3による処理の詳細(θ6以外の関節の角度の導出方法)について説明する。なお、各関節のゼロ点と回転方向の定義によって導出式が異なるため、以下では、J4−6オフセットアームの場合での導出式を示す。
関節角計算器3は、中間変数であるθ6、並びに、1対のShoulder指標及びElbow指標が与えられると、他の関節の角度を求められる。なお、関節角計算器3が求める関節の角度の値域は[−π,π]であるとする。関節の角度の値域が[−π,π]より広い場合には、関節の角度は2π周期で一致することに着目して値域を調整すればよい。
まず、関節角計算器3は、下式(31)により、θ1を求める。式(31)におけるsinθ1,cosθ1はベクトルOGから求められる。この場合、値域が[−π/2,3π/2]であるため、関節角計算器3は、θ1がπより大きい場合には、θ1=θ1−2πとし、値域が[−π,π]となるように調整する。
また、関節角計算器3は、下式(32)により、θ2を求める。この場合、値域が[−π/2,3π/2]であるため、関節角計算器3は、θ2がπより大きい場合には、θ2=θ2−2πとし、値域が[−π,π]となるように調整する。
以上から、関節角計算器3は、関節角ベクトル(逆運動学演算の解)であるΘが得られる。
なお、関節角計算器3により求められたΘは、検算器4により入力情報を満たすと判定されるまでは、暫定的な値である。
次いで、検算器4は、関節角計算器3により求められたΘに対して順運動学演算を行い、入力情報により受付けられた入力情報を満たすかを判定する(ステップST204)。この検算器4は、関節角計算器3によりΘが求められる度に処理を繰返す。
以下、検算器4による処理の詳細について説明する。
まず、検算器4は、関節角計算器3により求められたΘに基づいて、ロボットアームの手先の位置及び姿勢を求める。ここで、Θに基づくロボットアームの手先の位置及び姿勢をP=F(Θ)で表す。
まず、検算器4は、関節角計算器3により求められたΘに基づいて、ロボットアームの手先の位置及び姿勢を求める。ここで、Θに基づくロボットアームの手先の位置及び姿勢をP=F(Θ)で表す。
そして、検算器4は、入力情報であるロボットアームの手先の位置及び姿勢と、上記Θに基づくロボットアームの手先の位置及び姿勢との誤差を求める。ここで、入力情報であるロボットアームの手先の位置及び姿勢をPtargetで表し、ロボットアームの手先の位置及び姿勢の誤差をΔPで表す。この場合、ΔPは下式(42)〜(44)で表される。なお式(42)において、Δpは位置誤差を表し、Δqは姿勢誤差を表している。また、式(44)におけるQは四元数ベクトルである。四元数ベクトルは、姿勢の表現方法の一種であり、オイラー角ベクトル{roll,pitch,yaw}より一意に変換できる。姿勢誤差は、四元数ベクトル同士のなす角である。
そして、検算器4は、下式(45),(46)を共に満たす場合に、入力情報を満たすと判定する。式(45)におけるεpは微小値であり、ユーザにより指定される逆運動学演算の位置精度[m]である。また、式(46)におけるεqは微小値であり、ユーザにより指定される逆運動学演算の姿勢精度[rad.]である。
ここで、実施の形態1に係る逆運動学演算装置は、f(θ6)→0となるようθ6が更新されていくときΔp→0且つΔq→0となる性質を利用している。そのため、要求精度に対して必要十分な反復演算回数で詳細探索の数値計算を収束させることができる。
次いで、収束判定器5は、検算器4により入力情報を満たすと判定された場合に、数値計算器2に更新停止指示を通知し、数値計算器2による更新を停止させる(ステップST205)。
また、出力器6は、検算器4により入力情報を満たすと判定されたΘを示すデータを出力する(ステップST206)。
以上のように、この実施の形態1によれば、逆運動学演算装置は、複数の関節を有するロボットアームの手先の位置及び姿勢、並びに、位置精度及び姿勢精度を入力情報として受付ける入力器1と、入力器1により受付けられた入力情報に基づいて、ロボットアームの手先の位置及び姿勢についての逆運動学演算の解に対応する中間変数の探索及び更新を行う数値計算器2と、入力器1により受付けられた入力情報及び数値計算器2により更新された中間変数に基づいて、ロボットアームの手先の位置及び姿勢についての逆運動学演算の解を求める関節角計算器3と、関節角計算器3により求められた解に対して順運動学演算を行い、入力器1により受付けられた入力情報を満たすかを判定する検算器4と、検算器4による判定結果に基づいて、数値計算器2による更新を停止させる収束判定器5と、検算器4により入力情報を満たすと判定された解を示すデータを出力する出力器6とを備えた。これにより、実施の形態1に係る逆運動学演算装置は、従来構成に対し、ロボットアームの手先の位置精度及び姿勢精度を保証可能となる。
実施の形態2.
実施の形態1では、収束判定器5が、検算器4による検算結果を直接用い、収束判定を行う場合を示した(デカルト空間収束判定法)。これに対し、実施の形態2では、収束判定器5bが、検算器4による検算結果を間接的に用い、収束判定を行う場合を示す(最適ε法)。
図6は実施の形態2に係る逆運動学演算装置の構成例を示す図である。この図6に示す実施の形態2に係る逆運動学演算装置は、図1に示す実施の形態1に係る逆運動学演算装置に対し、ε記憶器7及び補償数値計算器8を追加し、収束判定器5を収束判定器5bに変更している。その他の構成は同様であり、同一の符号を付してその説明を省略する。
実施の形態1では、収束判定器5が、検算器4による検算結果を直接用い、収束判定を行う場合を示した(デカルト空間収束判定法)。これに対し、実施の形態2では、収束判定器5bが、検算器4による検算結果を間接的に用い、収束判定を行う場合を示す(最適ε法)。
図6は実施の形態2に係る逆運動学演算装置の構成例を示す図である。この図6に示す実施の形態2に係る逆運動学演算装置は、図1に示す実施の形態1に係る逆運動学演算装置に対し、ε記憶器7及び補償数値計算器8を追加し、収束判定器5を収束判定器5bに変更している。その他の構成は同様であり、同一の符号を付してその説明を省略する。
収束判定器5bは、検算器4による判定結果に基づいて、数値計算器2による更新を停止させる。具体的には、収束判定器5bは、数値計算器2により更新された中間変数に対する評価関数を求め、当該評価関数がε未満であると判定した場合に、数値計算器2に更新停止指示を通知し、数値計算器2による更新を停止させる。
なお、収束判定器5bは、数値計算器2で探索及び更新される中間変数が2次元以上である場合には、複数のεを用いて収束判定を行ってもよい。なお、εの次元は、中間変数の次元以下である。
ε記憶器7は、収束判定器5bで用いられるεを示すデータを記憶する。ε記憶器7は、HDD(Hard Disk Drive)、DVD(Digital Versatile Disc)又はメモリ等によって構成される。
図6では、ε記憶器7が逆運動学演算装置の内部に設けられた場合を示している。しかしながら、これに限らず、ε記憶器7は逆運動学演算装置の外部に設けられていてもよい。
補償数値計算器8は、検算器4により入力情報を満たしていないと判定された場合に、εを更新する。すなわち、補償数値計算器8は、要求精度(位置精度及び姿勢精度)を満たすようにεを更新し、ε記憶器7へ記憶させる。εを小さくすると位置誤差及び姿勢誤差は小さくなるので、補償数値計算器8は、例えばε→0.9εというようにεを小さくするように更新を行う。εの初期値としては、ある程度大きめの値(例えば10−4)が設定される。
最適ε法は、「最適なεを数値計算により求める」方法であり、従来技術通り、収束条件にεを使用する。一方で、最適ε法では、暫定的なεにより求めた逆運動学演算の暫定的な解を検算器4で検算し、その検算結果が所定の要求精度を満たさない場合には、当該要求精度を満たすようにεを更新し、逆運動学演算の解を再度求める。この最適ε法は、二重に数値計算を行うため、実施の形態1で示したデカルト空間収束判定法より計算コストで劣るが、従来の逆運動学演算装置へ後付けし易く、拡張性の面で有利である。
なお、実施の形態1,2では、中間変数が1次元であり、数値計算器2が1次元の数値計算を行う場合を示したが、これに限らない。すなわち、実施の形態1,2に係る逆運動学演算装置において最も効果的であるのは中間変数が1次元の場合であるが、中間変数の次元はロボットアームが有する関節の次元未満であればよい。
また、実施の形態1,2では、数値計算器2がθ6(J6の角度)を中間変数として探索及び更新を行う場合を示した。しかしながら、これに限らず、数値計算器2は、他の関節の角度又は座標値を中間変数として探索及び更新を行ってもよい。
また、実施の形態1,2では、数値計算器2及び関節角計算器3による処理方法として、非特許文献2で開示された処理方法を用いた場合を示した。しかしながら、これに限らず、数値計算器2及び関節角計算器3による処理方法は、低次元の中間変数を用いて上記と同様の演算を行う処理方法であれば他の処理方法でもよい。
また、実施の形態1,2では、ロボットアームとしてJ4−6オフセットアームを例に説明を行ったが、複数の関節を有するロボットアームであればよい。
また、実施の形態1,2では、逆運動学演算装置が、逆運動学演算の解を1つだけ求める場合を示した。しかしながら、これに限らず、逆運動学演算装置は、複数の逆運動学演算の解を求めてもよい。例えば、逆運動学演算は、Shoulder指標及びElbow指標の組合わせについて網羅的に演算する、又は、f(θ6)=0となる全てのθ6を探索する等して、複数の逆運動学演算の解を求めてもよい。
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組合わせ、或いは各実施の形態の任意の構成要素の変形、若しくは各実施の形態において任意の構成要素の省略が可能である。
1 入力器
2 数値計算器
3 関節角計算器
4 検算器
5,5b 収束判定器
6 出力器
7 ε記憶器
8 補償数値計算器
2 数値計算器
3 関節角計算器
4 検算器
5,5b 収束判定器
6 出力器
7 ε記憶器
8 補償数値計算器
Claims (6)
- 複数の関節を有するロボットアームの手先の位置及び姿勢、並びに、位置精度及び姿勢精度を入力情報として受付ける入力器と、
前記入力器により受付けられた入力情報に基づいて、前記ロボットアームの手先の位置及び姿勢についての逆運動学演算の解に対応する中間変数の探索及び更新を行う数値計算器と、
前記入力器により受付けられた入力情報及び前記数値計算器により更新された中間変数に基づいて、前記ロボットアームの手先の位置及び姿勢についての逆運動学演算の解を求める関節角計算器と、
前記関節角計算器により求められた解に対して順運動学演算を行い、前記入力器により受付けられた入力情報を満たすかを判定する検算器と、
前記検算器による判定結果に基づいて、前記数値計算器による更新を停止させる収束判定器と、
前記検算器により入力情報を満たすと判定された解を示すデータを出力する出力器と
を備えた逆運動学演算装置。 - 前記数値計算器は、中間変数として、1次元の中間変数の探索及び更新を行う
ことを特徴とする請求項1記載の逆運動学演算装置。 - 前記ロボットアームは、6以上の関節を有し、当該関節のうちの6つの関節において、根元側から第1の関節の回転軸と第4の関節の回転軸と第6の関節の回転軸とが平行であり、且つ、当該第4の関節の回転軸と当該第6の関節の回転軸とがオフセットしている垂直多関節ロボットアームであり、
前記数値計算器は、中間変数として、前記第6の関節の角度の探索及び更新を行う
ことを特徴とする請求項2記載の逆運動学演算装置。 - 前記収束判定器は、前記検算器により入力情報を満たすと判定された場合に、前記数値計算器による更新を停止させる
ことを特徴とする請求項1から請求項3のうちの何れか1項記載の逆運動学演算装置。 - 前記収束判定器は、前記数値計算器により更新された中間変数に対する評価関数を求め、当該評価関数が微小値未満であると判定した場合に、当該数値計算器による更新を停止させ、
前記検算器により入力情報を満たしていないと判定された場合に、前記微小値を更新する補償数値計算器を備えた
ことを特徴とする請求項1から請求項3のうちの何れか1項記載の逆運動学演算装置。 - 入力器が、複数の関節を有するロボットアームの手先の位置及び姿勢、並びに、位置精度及び姿勢精度を入力情報として受付けるステップと、
数値計算器が、前記入力器により受付けられた入力情報に基づいて、前記ロボットアームの手先の位置及び姿勢についての逆運動学演算の解に対応する中間変数の探索及び更新を行うステップと、
関節角計算器が、前記入力器により受付けられた入力情報及び前記数値計算器により更新された中間変数に基づいて、前記ロボットアームの手先の位置及び姿勢についての逆運動学演算の解を求めるステップと、
検算器が、前記関節角計算器により求められた解に対して順運動学演算を行い、前記入力器により受付けられた入力情報を満たすかを判定するステップと、
収束判定器が、前記検算器による判定結果に基づいて、前記数値計算器による更新を停止させるステップと、
出力器が、前記検算器により入力情報を満たすと判定された解を示すデータを出力するステップと
を有する逆運動学演算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020017867A JP2021122894A (ja) | 2020-02-05 | 2020-02-05 | 逆運動学演算装置及び逆運動学演算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020017867A JP2021122894A (ja) | 2020-02-05 | 2020-02-05 | 逆運動学演算装置及び逆運動学演算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021122894A true JP2021122894A (ja) | 2021-08-30 |
Family
ID=77457926
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020017867A Withdrawn JP2021122894A (ja) | 2020-02-05 | 2020-02-05 | 逆運動学演算装置及び逆運動学演算方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2021122894A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023128957A1 (en) | 2021-12-31 | 2023-07-06 | İstanbul Geli̇şi̇m Üni̇versi̇tesi̇ | Handheld terminal and algorithm for dynamic robot orientation |
-
2020
- 2020-02-05 JP JP2020017867A patent/JP2021122894A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023128957A1 (en) | 2021-12-31 | 2023-07-06 | İstanbul Geli̇şi̇m Üni̇versi̇tesi̇ | Handheld terminal and algorithm for dynamic robot orientation |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Patel et al. | Manipulator performance measures-a comprehensive literature survey | |
WO2018090323A1 (zh) | 一种坐标系标定方法、系统及装置 | |
Ceccarelli et al. | Fundamentals of the mechanics of robots | |
CN111168719B (zh) | 一种基于定位工装的机器人校准方法及系统 | |
JP2013132731A (ja) | ロボット制御システム、ロボットシステム及びロボット制御方法 | |
CN112109084A (zh) | 基于机器人关节角度补偿的末端位置补偿方法及其应用 | |
Li et al. | Kinematic modeling and error analysis of Delta robot considering parallelism error | |
Pernkopf et al. | Workspace analysis of Stewart-Gough-type parallel manipulators | |
Wang et al. | Inverse kinematics of a 7R 6-DOF robot with nonspherical wrist based on transformation into the 6R robot | |
CN112091950A (zh) | 基于混合遗传模拟退火算法的机器人运动学参数辨识方法 | |
JP2021122894A (ja) | 逆運動学演算装置及び逆運動学演算方法 | |
Jiang et al. | An improved robot calibration method using the modified adjoint error model based on POE | |
WO2019114631A1 (zh) | 一种获取机器人tcp坐标的方法和装置 | |
CN113378349B (zh) | S-r-s结构七自由度机械臂逆运动学解析解的数值稳定算法 | |
Luo et al. | An improved minimal error model for the robotic kinematic calibration based on the POE formula | |
Wang et al. | A numerically stable algorithm for analytic inverse kinematics of 7-degrees-of-freedom spherical-rotational-spherical manipulators with joint limit avoidance | |
JP2021146411A (ja) | 逆運動学演算装置及び逆運動学演算方法 | |
CN112476435A (zh) | 重力加速度方向的标定方法、标定装置及存储介质 | |
US11207773B2 (en) | Action transfer device, action transfer method, and non-transitory computer-readable medium storing action transfer program | |
CN113084791A (zh) | 机械臂控制方法、机械臂控制装置及终端设备 | |
Bennett et al. | Closed-loop kinematic calibration of the Utah-MIT hand | |
JP2017131990A (ja) | 干渉回避方法 | |
Wang et al. | A new approach of kinematic geometry for error identification and compensation of industrial robots | |
JP2021146409A (ja) | 逆運動学演算装置及び逆運動学演算方法 | |
Chen et al. | Configuration optimization for manipulator kinematic calibration based on comprehensive quality index |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221221 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20230726 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20230803 |