以下、添付図面を参照して本発明の実施形態を説明する。以下の図面において同様の部材には同様の参照符号が付けられている。理解を容易にするために、これら図面は縮尺を適宜変更している。
以下、力とは、特に断りがない限り、力の並進方向成分および力のモーメント成分を含むものとする。また、位置および/または姿勢とは、位置または姿勢、もしくは、位置および姿勢を表すものとする。
また、以下、軸とは、ロボットを構成するリンクとリンクとをつなぐ関節部分であり、リンクとリンクとの間の位置関係や角度関係を変える部分とする。軸の位置(回転軸の場合の位置は、角度である)を変えることによって、リンクとリンクとの位置関係を変えることができ、その結果、ロボットの先端部の位置および/または姿勢を変えることができる。なお、軸とする部分とは異なる箇所に、軸の位置を移動させるためのアクチュエータが配置されていてもよい。
また、ロボットの軸の回転中心線回りに作用させる力、ロボットの軸の回転中心線回りにかかる力、または操作軸が回転軸である場合の操作軸にかかる力とは、ロボットの軸が回転軸の場合であって、座標系の1つの軸がロボットの軸の回転中心線と一致するように、ロボットの軸に対して座標系を設定するとき、その座標系上で、ロボットの軸の回転中心線と直交する平面、かつ、原点がロボットの軸の回転中心線とその平面との交点である、平面において存在する並進方向の力、または、ロボットの軸の回転中心線回りに作用する力のモーメントとする。
また、本発明において、力制御ゲインとは、作用する力に応じてロボットを移動させる力制御において、作用する力の大きさをもとに、制御周期毎の、直交座標系上のロボットの先端部の位置および/または姿勢や、ロボットの各軸の位置などの移動量を求めるような係数である。
図1は、本発明の一実施形態に係るロボット制御装置10によって制御されるロボット50を具備するロボットシステム11の構成例を示す概略図である。ロボットシステム11は、ロボット制御装置10と、ロボット制御装置10によって制御周期毎の各軸の位置を制御されるロボット50と、を具備している。
ロボットシステム11において、操作者60がロボット50の先端部58に力を作用させたとき、ロボット制御装置10は、力計測部が計測したロボット50の先端部58に作用された力、設定されたデータ、ロボット50の位置データなどに基づいて、ロボット50の各軸を移動させるアクチュエータを制御する。これにより、ロボット50を構成する軸の位置を変え、ロボット50を移動させられる。
ロボット制御装置10は、演算処理装置、ROM、RAMなどを含むハードウェア構成を有していて、後述する種々の機能を実行する。
図1に示されるロボット50は、六つの軸によって構成される。これら六つの軸は、ロボット50の台座59側から順に、第一軸をJ1軸51、第二軸をJ2軸52、第三軸をJ3軸53、第四軸をJ4軸54、第五軸をJ5軸55、第六軸をJ6軸56とする。
図1の右方に示されるように、J1軸51、J4軸54およびJ6軸56は、軸と軸をつなぐ、リンク回りに回転する回転軸R1として構成される。また、J2軸52、J3軸53およびJ5軸55は、軸と軸をつなぐ、リンクとは直交する方向回りに回転する回転軸R2として構成される。
なお、図1は、ロボット50の軸の構成を表すための簡易的な説明図である。また、軸の原点を、各軸に設定した座標系の原点、かつ、リンクとリンクが接続される点とすると、軸の原点の位置は、空間に設定した座標系上の位置として表されるものとする。なお、以下では、空間に設定した座標系を基準座標系とする。J1軸51とJ2軸52の軸の原点は同じ位置にあり、J3軸53とJ4軸54の原点は同じ位置にあり、J5軸55とJ6軸56の原点は同じ位置にあるものとする。
本実施例では、回転軸とした軸に対して、軸の位置を移動させる、と述べる場合、軸の位置とは、回転軸の角度であり、軸の位置を移動させるとは、回転軸を回転させて位置を変えることを表すものとする。また、軸の原点の位置、と述べる場合、空間に対して設定した座標系上の、各軸に設定した座標系の原点の位置を表すものとする。また、空間に対して設定した座標系とは、空間に対して固定させた直交座標系上で、ロボット50の先端部58や、先端部58をロボット50に取付けるためのフランジ部57、また各軸に設定した座標系などの、位置および/または姿勢を表すための座標系とする。
また、空間に対して設定した基準座標系上の、ロボット50の位置および/または姿勢を表すため、ロボット50に対して設定した座標系をツール座標系とする。ツール座標系の原点であり、並進移動させる点、また、回転移動させるときの中心点を制御点とする。基準座標系に平行な座標系を、制御点に設定した座標系を制御座標系とする。なお、制御点の位置は、ロボット50に対して設定される位置であれば、任意の位置であって構わない。
本実施例では、ロボット50の六つの軸はいずれも回転軸とするが、ロボット50が直動軸を含んでも構わない。また、ロボット50は、六軸構成の垂直多関節型ロボットである。しかしながら、各軸の位置が制御可能、また、直交位置が制御可能なロボットであれば、他の形態を有する任意の公知のロボットでもよい。
ロボット50の先端部58は、ロボット50のフランジ部57に取付けられている物体が存在する部分である。ロボット50の先端部58には、図示しないが、六軸の力センサが取付けられている。ロボット制御装置10は、所定時間毎に検出された力センサの出力をもとに、後述する力計測部21によって、操作者60がロボット50の先端部58に作用させた力を計測する。
力計測部21は、ロボット50の先端部58における力を計測する点に原点を有する座標系を設定する。そして、力計測部21は、ロボット50の先端部58に作用させた力として、その座標系上の、力の並進方向の成分Fおよび力のモーメント成分Mを計測する。以下、この座標系を力計測座標系とし、座標系の原点を力計測点とする。このとき、ロボット50の先端部58に設定した座標系のX軸、Y軸、Z軸の力の並進方向成分をそれぞれFx、Fy、Fzと表すとともに、X軸、Y軸、Z軸回りで検出される力のモーメント成分をそれぞれMx、My、Mzと表す。
ここで、力計測点は、操作者が力を作用させる作用点、または、力センサに設定したセンサ座標系の原点、センサ座標系の軸上の点などであって構わない。
本実施例では、力の六成分を計測するが、力の並進方向成分F、または、力のモーメント成分Mのみを計測するようにしてもよい。また、力センサの取付位置は、ロボット50の先端部58に作用させた力を計測できる限り、任意の箇所であってよい。また、ロボット50の先端部58に作用された力を計測する計測部は、六軸の力センサの代わりに、三軸の力センサを使用してもよい。
また、力計測部21は、ロボット50を構成する軸を移動させるアクチュエータがモータである場合の電流値、または、軸の指令位置と実際の軸の位置との間の偏差、または、各軸に取付けられたトルクセンサの出力などをもとに、ロボット50の先端部58に作用される力を推定してもよい。
なお、ロボット50の先端部58には、ワークを加工したり、ワークを搬送したりするなどの作業を行うためのツールや、力に応じた移動操作を行うための操縦装置などが取付けられている。
ロボット50に取付けられた力センサに対してツールや操縦装置を取付けてもよい。あるいは、ロボット50に取付けられたツールに対して力センサを取付け、その先端側に操縦装置を取付けてもよい。
ロボット50の先端部58に力を作用させるとき、操縦装置を用いることなしに、力センサに取付けられたツールに対して力を作用させてもよい。あるいは、力センサに取付けられた操縦装置に対して力を作用させてもよい。
力センサに取付けられたツールや操縦装置に対して、操作者が力を作用させて、ロボット50を移動させる場合には、力計測部21は、力センサが検出した力に対して、力センサに取付けられたツールや操縦装置または把持したワークなどの物体が重力や慣性力(コリオリ力、ジャイロ効果を含む)などによって及ぼす影響を、必要に応じて補償する。これにより、力計測部21は、ロボット50の先端部58に操作者が作用させた正味の力を計測できる。
ロボット50の先端部58に取付けられたツールに、力センサと操縦装置とが組合わされた装置を取付ける場合には、力センサに取付けられた物体が重力や慣性力によって力センサに及ぼす影響が小さくなる。従って、この場合には、正味の力を求める場合の誤差も小さくなる。
また、力センサと操縦装置とが組合わされた装置を、磁石やバネなどを用いてツールに取付けてもよい。この場合には、そのような装置を簡易に着脱することができる。また、力を作用させてロボット50を移動させる場合にのみ、そのような装置を取付けることも可能となる。これによって、教示操作が不要な時には装置を取外しておいたり、そのような装置を必要に応じて他のロボットシステムで使用することが可能となる。
図2は、本発明の第一実施形態に係るロボット制御装置10aの構成を機能的に示す図である。図示されるように、ロボット制御装置10aは、後述する力計測部21と、第一力算出部22と、第二力算出部23と、操作指令部24と、操作軸設定部25と、記憶部26と、特異姿勢近傍判定部27と、表示出力部71と、を具備している。
力計測部21は、操作者60が、ロボット50の先端部58に作用させる正味の力を計測する。前述したように、力計測部21は、ロボット50の先端部58に取付けられたツールや操縦装置、または把持したワークなどの物体が重力や慣性力(コリオリ力、ジャイロ効果を含む)などによって及ぼす影響を必要に応じて補償する。
力センサに取付けられた物体が及ぼす重力や慣性力の影響の補償は、次のようにして公知の方法によって行う。力センサに取付けられた物体に対して、操作者が力を作用させる前に、その物体の質量や重心を予め算出しておく。そして、算出された質量および重心と、ロボットの移動動作を参照すると共に、公知の方法、例えば特許第4267027号に開示される手法を用いて算出する。
第一力算出部22は、力計測部21により計測された、ロボット50の先端部58に作用する、力の並進方向の成分および/または力のモーメント成分を含む力をもとに、直交座標系上のロボット50の先端部58の位置および/または姿勢を移動させるための操作力を算出する。
第一力算出部22は、例えば、次のようにして操作力を算出する。力計測部21が計測した力を、制御座標系上の力に変換することによって、操作力を算出する。このとき、必要に応じて、操作中のロボットの移動方向、移動速度などを考慮して、操作力の方向や、大きさを調整してもよい。これにより、力に応じて移動させるときの操作性を向上させられる。
第二力算出部23は、力計測部21により計測された、ロボット50の先端部58に作用する、力の並進方向の成分および/または力のモーメント成分を含む力をもとに、ロボット50の各軸の位置を移動させるための操作力を算出する。
第二力算出部23は、例えば、本実施例のように移動させる軸が回転軸である場合、次のようにして操作力を算出する。
力計測部21が計測した、ロボット50の先端部58に作用された実際の力をもとに操作力を算出する。または、ロボット50の先端部58に作用された力をもとに、移動させるべき軸に対して、仮想的に作用するとした力である仮想力を、操作力として算出する。
具体的には、次のようにして算出する。
移動させるべき軸に対して、軸の回転中心線に直交する平面に、ロボット50の先端部58に作用する並進方向の力を射影したとき、軸に対して、正負のどちらの回転方向を向いているかをもとに、換言すれば、軸の回転中心線回りに作用する並進方向の力の向きをもとに、軸を移動させる操作力の方向を定める。そして、力計測部21が計測した並進方向の力の大きさ、または、前記射影した力の大きさ、または、前記射影した力の、回転中心線から射影した力の作用点までの位置ベクトルに直交する成分の大きさをもとに、操作力の大きさを求める。
また、力計測部21が計測した、ロボット50の先端部58に作用される力をもとに、移動させるべき軸に対して、回転中心線回りの力のモーメントを算出して、操作力を求めてもよい。
また、力計測部21が計測した、ロボット50の先端部58に作用される力をもとに、移動させるべき軸に対して、回転中心線回りの力のモーメントを算出するときに、適宜、力のベクトルや、位置ベクトルの算出方法を工夫して、操作性を向上させるようにモーメントを算出し、操作力を求めてもよい。
また、移動させるべき軸に対して、軸の回転中心線回りに作用する力のモーメントの正負をもとに、軸を移動させる操作力の方向を定めると共に、力計測部21が計測した力の大きさをもとに、操作に応じた適切な操作力の大きさを求めてもよい。
なお、操作力の方向は、移動させるべき軸の移動方向を定めることができるような、方向、正負の符号など、順方向か逆方向を定めるものであればよい。
また、力に応じて軸を移動させるときの、ロボットの操作性を向上させるために、必要に応じて、操作中のロボットの移動方向、移動速度などを考慮して、操作力を調整することが好ましい。
本実施例では、操作される軸が回転軸である場合を示したが、操作される軸が、直動軸である場合には、軸方向の力の並進方向の成分を算出するようにする。
特異姿勢近傍判定部27は、ロボット50が特異姿勢の近傍にあるか否かの判定を行う。特異姿勢の近傍にあるか否かを判定する方法はいくつか存在する。まず、ロボット50の先端部58の速度と関節速度との関係を表すヤコビ行列をもとにするという方法がある。ロボット50の現在の各軸の位置における、ヤコビ行列がフルランクでないときや、ヤコビ行列の行列式の値が所定閾値より小さい値であるとき、ロボット50の姿勢は、特異姿勢近傍にあると判定できる。これによって、ロボット50の現在の各軸の位置が特異姿勢にあるか否かを判定することができる。
前記判定方法によって、ロボット50が特異姿勢の近傍にあると判定される場合に、後述の方法を用いて、特異姿勢近傍判定部27がロボット50の現在の各軸の位置をもとに特異姿勢の近傍の状態をさらに詳細に判定する。そして、後述の操作軸設定部25が、特異姿勢の近傍にあることの要因となる軸または特異姿勢の近傍を通過させる軸、を設定するようにする。
また、ロボットの各軸の位置が、所定の位置関係の条件を満たすか否かによって、ロボットの現在の各軸の位置が特異姿勢の近傍にあるか否かを判定することもできる。この方法によって、ロボットが特異姿勢の近傍にあるか否かの判定を行うとともに、特異姿勢が、後述のどの分類に属するかを判定する。そして、後述の操作軸設定部25が、特異姿勢の近傍にあることの要因となる軸または特異姿勢の近傍を通過させる軸、を設定するようにしてもよい。この方法について以下で説明する。
特異姿勢は、いくつかの状態に分類できる。このとき、ロボット50の各軸の位置によっては、複数の分類に属する場合もある。特異姿勢がどの特異姿勢の状態にあるかを判定し、その結果をもとに、後述の操作軸設定部25が操作されるべき軸を設定する。
ロボット50が特異姿勢であるかどうか、また、特異姿勢がどの分類に属する特異姿勢であるかは、以下のようにして判定される。すなわち、特異姿勢の状態毎に、つまり、特異姿勢の分類毎に、その特異姿勢の近傍にあることを示す要因となる、一つまたは複数の軸について、軸毎の位置が、前記軸毎に設定された所定の位置から閾値以内にあるか否かという、所定の位置関係の条件を満たすか否かによって判定される。または、複数の軸の位置関係によって、基準座標系上の、或る軸の原点の位置が、所定の位置関係の条件を満たすかどうかを判定することによって、判定される。
このとき、特異姿勢の近傍にあると判定する領域を広げるように、特異姿勢近傍判定部27で用いられる閾値を大きくしてもよい。この場合には、後述する第一制御モードによる動作が不安定になることをより安全に、早めに検出して、第二制御モードに切替えることができる。第一制御モードが不安定になる、特異姿勢の近傍にロボットが在ることを検出するため、前述のようにヤコビ行列の行列式などを用いてもよい。この場合においても、閾値を適切に設定することにより、第一制御モードによる動作が不安定になることを、早期に検出することができる。
第二制御モードにおいては、ロボットが特異姿勢の近傍であったとしても、その位置が原因で、動作が不安定になることは少ない。このため、ロボット50が特異姿勢の近傍にあるとき、第二制御モードに切替えることによって、力に応じたロボット50の移動操作を、より安定させ、より安全に操作することが可能となる。ただし、特異姿勢の近傍と判定する領域を広げ過ぎると、第一制御モードで移動させる領域が狭くなる。このため、特異姿勢の近傍と判定する領域を、適当な範囲になるようにしておくことが好ましい。
次に、特異姿勢の分類について説明する。さらに、後述の操作軸設定部25が操作軸を設定するときに考慮する、特異姿勢の近傍にあることの要因となる軸または特異姿勢の近傍を通過させる軸について説明する。
本実施例では、特異姿勢は、図3に示す第一特異姿勢、図4に示す第二特異姿勢、および図5に示す第三特異姿勢の、三つに分類される。
図3に示される第一特異姿勢においては、ロボット50のJ1軸51の回転中心線上に、J5軸55の原点が存在する。ロボット50が第一特異姿勢の近傍にあることは、空間に設定した基準座標系上で、J1軸の回転中心線上やその近傍に、J1軸からJ5軸までを順変換したときに得られるJ5軸の原点の位置が存在するか否かという所定の位置関係の条件を満たすかどうかによって判定できる。この場合、第一特異姿勢の近傍にあることの要因となる軸、第一特異姿勢の近傍を通過させる軸は、J2軸52、または、J3軸53である。
図4に示される第二特異姿勢においては、ロボット50のJ2軸52の原点、J3軸53の原点、およびJ5軸55の原点が直線上に存在する。ロボット50が第二特異姿勢の近傍にあることは、J2軸52とJ3軸53の角度の位置が、所定の位置関係の条件を満たすかどうかによって判定できる。具体的には、J2軸52の原点、J3軸53の原点およびJ5軸55の原点が直線上およびその近傍に存在する位置関係にあるか否かという、所定の位置関係の条件を満たすかどうかによって判定できる。この場合、第二特異姿勢の近傍にあることの要因となる軸、第二特異姿勢の近傍を通過させる軸は、J3軸53である。
図5に示される第三特異姿勢においては、ロボット50のJ3軸53の原点、J5軸55の原点、およびフランジ部57の原点が直線上に存在する。ロボット50が第三特異姿勢の近傍にあることは、J5軸55の角度の位置が、所定の位置関係の条件を満たすかどうかによって判定できる。具体的には、J3軸53の原点、J5軸55の原点およびフランジ部57の原点が直線上およびその近傍に存在する位置関係にあるか否かという、所定の位置関係の条件を満たすかどうかによって判定できる。この場合、第三特異姿勢の近傍にあることの要因となる軸、第三特異姿勢の近傍を通過させる軸は、J5軸55である。
このようにして、ロボットの現在の各軸の位置をもとに、特異姿勢近傍にあるか否か、また、どの分類に属する特異姿勢であるかを判定する。そして、特異姿勢の要因となる軸または特異姿勢の近傍を通過させる軸を決定することができる。
操作軸設定部25は、ロボット50が特異姿勢の近傍にあると判定されるとき、ロボット50の現在の各軸の位置をもとに、ロボット50が特異姿勢の近傍にあることの要因となる軸、または、特異姿勢の近傍を通過させる軸、を含む所定の軸を、力に応じて移動させる操作軸として設定する。また、力の方向に応じて定まる操作軸の移動方向を設定する。
このとき、力の方向に応じて定まる操作軸の移動方向は、予め設定された値に基づいて、または、特異姿勢の近傍になるときの操作軸の移動方向と、操作軸にかかる力の方向とに基づいて設定する。
複数の軸から軸を選択して操作軸を設定するとき、ロボット50が特異姿勢の近傍にあるときの、現在の各軸の位置によって決まる、特異姿勢の分類をもとに、特異姿勢の要因となる軸または特異姿勢の近傍を通過させる軸を定める。そして、特異姿勢の分類に応じて、前述した軸を含む所定の軸を操作軸とする。ロボット50の姿勢が複数種類の特異姿勢にあてはまる場合には、所定の優先順位に基づいて、優先順位の高い特異姿勢の分類をもとに操作軸の設定を行う。そして、その特異姿勢の要因となる軸またはその特異姿勢の近傍を通過させる軸を、操作軸に含めるようにする。
このとき、ロボット50が特異姿勢の近傍にあることの要因となる軸、または、特異姿勢の近傍を通過させる軸以外の軸について、そのときのロボット50の各軸の位置をもとに、所定の軸を操作軸として選択する。
図3に示される第一特異姿勢の場合には、特異姿勢の近傍にあることの要因となる軸、または、特異姿勢の近傍を通過させる軸は、J2軸52またはJ3軸53である。J2軸52またはJ3軸53のいずれか一方の軸を、力に応じて移動されるべき操作軸に設定して、移動させる。これにより、ロボット50に対して第一特異姿勢の近傍を通過させることが可能である。
ロボット50のJ2軸52およびJ3軸53の両方の軸の回転中心線が平行かつ同じ方向を向いているとする。このとき、J2軸52およびJ3軸53の両方の軸を操作軸として移動させる場合には、これらの軸を回転中心線回りに同じ回転方向に移動させることによって、いずれか一方の軸を移動させる場合と比べて、第一特異姿勢の近傍をより素早く通過させることが可能である。また、この場合に、J2軸52およびJ3軸53の両方の軸を回転中心線回りに異なる回転方向に移動させた場合であっても、それぞれを適切な速度にして移動させれば、第一特異姿勢の近傍を通過させることが可能である。前記に関連して、複数の各軸の移動操作において、複数の軸の回転中心線が平行である場合、それら複数の軸を同じ方向に回転移動させることによって、ある方向に、より素早く移動させてもよい。
特異姿勢の近傍において、各軸を移動させるとき、J2軸52またはJ3軸53の回転中心線に直交する回転中心線を持つ軸を、操作軸として移動可能なようにしてもよい。この場合には、J2軸52およびJ3軸53とは、独立に、その軸を移動させることが可能になる。
また、J2軸52またはJ3軸53を操作軸としたとき、ロボット50の先端部58に作用させる力の方向によっては、J2軸52またはJ3軸53とは独立して移動したり、J2軸52またはJ3軸53と同時に移動したりする軸が存在する場合がある。J2軸52またはJ3軸53とは独立に移動させられる軸であることが好ましいが、ロボット50の先端部58に作用させる力の方向によって同時に移動する場合があっても、その動作による支障がない場合は、その軸を操作軸としてもよい。このとき、その軸に対しては、操作力を小さく算出するようにしたり、操作力と力制御ゲインとをもとに移動させる場合の力制御ゲインの値を小さくしたりしておいてもよい。
ここでは、第一特異姿勢の近傍にある場合、J2軸52およびJ3軸53と、J1軸51とを、力に応じて軸の位置を移動させるべき操作軸とする。力の方向に応じて定まる操作軸の移動方向は、J2軸52およびJ3軸53の両方について、力の方向と同じ方向とする。
これによって、ロボット50の先端部58に力を作用させ、J2軸52およびJ3軸53の両方の位置を、前記のように回転中心線回りに同じ方向に移動させれば、第一特異姿勢近傍を素早く通過させることができる。
また、操作軸の回転中心線回りにかかる力を操作力として軸を移動させる場合に、J1軸51を移動させる際に、ロボット50の先端部58に作用される力の方向を、J2軸52およびJ3軸53の回転中心線と平行な方向や、平行に近い方向にしてもよい。この場合には、J2軸52およびJ3軸53の移動量を小さくしつつ、J1軸51を移動させることが可能となる。
また、操作軸の回転中心線回りにかかる力を操作力として軸を移動させる場合には、J2軸52およびJ3軸53を移動させる際に、操作力の作用する方向を、J1軸51の回転中心線と平行な方向や、平行に近い方向にしてもよい。この場合には、J1軸51の移動量を小さくすることが可能となる。また、所望の軸以外の軸が移動しないように、ロボット50の先端部58に作用させる力の方向をもとに、所定方向との比較などによって、操作力の方向を求めるようにしてもよい。
また、複数の軸のうち、操作軸とする軸を選定するときに、ロボットが第一特異姿勢の近傍にある場合には、J2軸52またはJ3軸53と、所望の軸とを、操作軸とするようにしてもよい。
J2軸52およびJ3軸53の両方の軸を操作軸として移動させる場合には、両方の軸を移動させるので、操作軸設定部25の設定、または、ロボット50の先端部58に作用させる力の方向、または、ロボット50の先端部58の位置によっては、特異姿勢の近傍を通過させるのに時間がかかる場合がある。このような場合、経過時間や、軸の移動量をもとに、J2軸52およびJ3軸53のうちの一方の軸を操作軸とせず、この軸を移動させないようにしたり、力の方向に応じて定まる操作軸の移動方向を変更してもよい。
なお、J2軸52およびJ3軸53の両方の軸を操作軸として移動させるとき、力の作用方向によっては、これら操作軸が互いに異なる方向に移動する場合がある。このため、操作軸を移動させる操作力を求めるときに、操作力の作用する方向を、両方の軸が同じ方向に移動するように求めるのが好ましい。
図4に示される第二特異姿勢の場合、特異姿勢の近傍にあることの要因となる軸、または、特異姿勢の近傍を通過させる軸は、J3軸53である。J3軸53を、力に応じて移動されるべき操作軸に設定して、移動させる。これにより、ロボット50に対して第二特異姿勢の近傍を通過させることが可能である。
また、J2軸52およびJ3軸53の両方の軸を操作軸として移動させる場合には、両方の軸の回転中心線が平行かつ同じ方向を向いている場合、これらの軸を回転中心線回りに異なる回転方向に移動させる。これによって、J3軸53の移動によって、第二特異姿勢の近傍を通過させることができると共に、J2軸52を逆方向に移動させることによって、基準座標系上の、J5軸55の原点の位置、ロボット50の先端部58の位置の移動量を小さくすることが可能となる。これによって、ロボットの操作性を向上させることができる。
特異姿勢の近傍において、各軸を移動させるとき、J2軸52またはJ3軸53の回転中心線に直交する回転中心線を持つ軸を、操作軸として移動可能なようにしてもよい。この場合には、J2軸52およびJ3軸53とは、独立に、その軸を移動させることが可能になる。
また、J2軸52またはJ3軸53を操作軸としたとき、ロボット50の先端部58に作用させる力の方向によっては、J2軸52またはJ3軸53とは独立して移動したり、J2軸52またはJ3軸53と同時に移動したりする軸が存在する場合がある。J2軸52またはJ3軸53とは独立に移動させられる軸であることが好ましいが、ロボット50の先端部58に作用させる力の方向によって同時に移動する場合があっても、その動作による支障がない場合は、その軸を操作軸としてもよい。このとき、その軸に対しては、操作力を小さく算出するようにしたり、操作力と力制御ゲインをもとに移動させる場合の力制御ゲインの値とを小さくしておいてもよい。
ここでは、第二特異姿勢の近傍にある場合、J2軸52およびJ3軸53と、J1軸51とを、力に応じて位置を移動させるべき操作軸とする。力の方向に応じて定まる操作軸の移動方向は、J2軸52は力の方向とは逆方向、J3軸53は力の方向と同じ方向とする。また、J2軸の力の方向に応じて定まる移動方向の設定は、J3軸53を移動させているとき、J3軸53の移動方向とは逆方向に移動するように、適宜、設定を変更してもよい。
また、操作軸の回転中心線回りにかかる力を操作力として軸を移動させる場合に、J1軸51を移動させる際に、ロボット50の先端部58に作用される力の方向を、J2軸52およびJ3軸53の回転中心線と平行な方向や、平行に近い方向にしてもよい。この場合には、J2軸52およびJ3軸53の移動量を小さくしつつ、J1軸51を移動させることが可能となる。
また、操作軸の回転中心線回りにかかる力を操作力として軸を移動させる場合には、J2軸52およびJ3軸53を移動させる際に、操作力の作用する方向を、J1軸51の回転中心線と平行な方向や、平行に近い方向にしてもよい。この場合には、J1軸51の移動量を小さくすることが可能となる。また、所望の軸以外の軸が移動しないように、ロボット50の先端部58に作用させる力の方向をもとに、所定方向との比較などによって、操作力の方向を求めるようにしてもよい。また、複数の軸のうち、操作軸とする軸を選定する際に、第一特異姿勢の近傍にある場合には、J3軸53と、所望の軸とを、操作軸としてもよい。
図5示される第三特異姿勢の場合、特異姿勢の近傍にあることの要因となる軸、または、特異姿勢の近傍を通過させる軸は、J5軸55である。J5軸55を、力に応じて移動されるべき操作軸に設定して、移動させる。これにより、ロボット50に対して第三特異姿勢の近傍を通過させることが可能である。
J5軸55を操作軸としたとき、ロボット50の先端部58に作用させる力の方向によっては、J5軸55とは独立して移動したり、J5軸55と同時に移動したりする軸が存在する場合がある。J5軸55とは独立に移動させられる軸であることが好ましいが、ロボット50の先端部58に作用させる力の方向によって同時に移動する場合があっても、その動作による支障がない場合は、その軸を操作軸としてもよい。このとき、その軸に対しては、操作力を小さく算出するようにしたり、操作力と力制御ゲインをもとに移動させる場合の力制御ゲインとの値を小さくしておいてもよい。
ここでは、第三特異姿勢の近傍にある場合、J4軸54およびJ5軸55を、力に応じて位置を移動させるべき操作軸とする。力の方向に応じて定まる操作軸の移動方向は、J4軸54については、力の方向と同じ方向とする。
J5軸55の力の方向に応じて定まる操作軸の移動方向は、特異姿勢の近傍になる前、または、特異姿勢の近傍になったときの、J5軸55の移動方向と、J5軸にかかる力の方向とをもとに設定される。もしくは、特異姿勢の近傍になる前に直交座標系上の移動操作を行っていたときは、その移動操作が並進方向の操作である場合には、操作軸の移動方向は力の方向とは逆方向にする。その移動操作が回転方向の操作である場合には、操作軸の移動方向は力の方向と同じ方向とする。これによって、特異姿勢の近傍になる前の、直交座標系上の移動操作と、力の方向に応じて定まる操作軸の移動の方向とを同じとすることができ、操作性をよくすることができる。
また、複数の軸のうち、操作軸とする軸を選定するときに、ロボット50が第三特異姿勢の近傍にある場合には、J5軸55と、所望の軸とを、操作軸としてよい。
図2に示される操作指令部24は、ロボット50の先端部58に作用させた力に基づいてロボット50を移動させるように、力計測部21が計測した力をもとに、第一力算出部22または第二力算出部23が算出した操作力を用いて、ロボット50を移動させる操作指令を出力する。
操作指令部24は、ロボット50を移動させるための、第一制御モードと第二制御モードを有する。特異姿勢近傍判定部27によって、ロボット50が特異姿勢の近傍にないと判定される場合には、操作指令部24は、第一制御モードに設定し、第一制御モードに基づいてロボット50を移動させる。そして、特異姿勢近傍判定部27によって、ロボット50が特異姿勢の近傍にあると判定される場合には、第二制御モードに設定し、第二制御モードに基づいてロボット50を移動させる。
第一制御モードにおいては、操作指令部24は、第一力算出部22が算出した操作力をもとに、ツール座標系を、並進移動、また、制御点を回転中心点として回転移動させるようにして、直交座標系上でのロボット50の先端部58の移動方向、移動速度を求める。そして、操作指令部24は、直交座標系上の、ロボット50の先端部58の位置および/または姿勢を移動させる操作指令を制御周期毎に出力する。このとき、直交座標系上のロボット50の先端部58の位置および/または姿勢の指令は、各軸の位置の指令に変換されて、出力される。また、このとき、力制御ゲインによって、操作力に対する移動速度を定めるようにしてもよい。また、移動操作時の状況に応じて、操作力に対する応答性を下げたり、速度を加速したり、減速したりと、必要に応じて、移動速度を調整することが好ましい。
第二制御モードにおいては、操作指令部24は、操作軸設定部25が設定する操作軸、力の方向に応じて定まる操作軸の移動方向、および、操作軸における第二力算出部23が算出した操作力をもとに、操作軸の移動方向、移動速度を求める。そして、操作軸を移動させる操作指令を制御周期毎に出力する。操作力に基づいて操作指令を生成するときには、力制御ゲインによって、操作力に対する移動速度を定めてもよい。また、操作時の状況に応じて、操作力に対する応答性を下げたり、速度を加速したり、減速したりと、必要に応じて、移動速度を調整することが好ましい。
記憶部26には、力計測部21が力を計測するために必要なパラメータ、第一力算出部22や第二力算出部23が操作力を算出するために必要なパラメータ、操作軸設定部25が操作軸を設定するために必要なパラメータや設定の結果、特異姿勢近傍判定部27または軸位置状態判定部28が判定を行うために必要なパラメータや判定結果など、各種の計算に必要なパラメータおよび計算結果などが記憶される。
表示出力部71は、制御モードが第一制御モードと第二制御モードのどちらの制御モードであるかを出力表示する。また、制御モードが第二制御モードであるときには、表示出力部71は操作軸設定部25によって設定された操作軸、操作軸の力の方向に応じて定まる移動方向などを表示出力する。
さらに、ロボット制御装置10aは、図示しないが、ロボット50の各軸に取付られたエンコーダなどの位置検出装置からの情報をもとに、ロボット50の各軸の位置や、ロボット50の先端部58の位置および/または姿勢、速度、加速度を算出する算出部などを具備している。
さらに、ロボット制御装置10aは、図示しないが、各種設定を入力することのできる入力装置がロボット制御装置10aに接続されて転送されるデータや、他の制御装置やコンピュータで入力された設定がネットワークを通してロボット制御装置10aに転送されるデータなどの、入力データを受けつけて処理する入力部を具備している。
次いで、操作者60がロボット50の先端部58に力を作用させてロボット50を移動させるときの、本発明の第一の実施形態に係るロボット制御装置10aによる処理の過程の一例を図6、図7、図8を参照して説明する。図6、図7、図8は、ロボット制御装置10aによる処理の過程の一例を示すフローチャートである。以下、ロボット50の先端部58に力を作用させてロボット50を移動させるときの、ロボット制御装置10aの実行処理を、図6、図7、図8のフローチャート及び関連する図面を参照しつつ説明する。
なお、ここで説明される一連の処理は、一例であって、本発明がこの具体例に限定されるわけではないことに留意されたい。
図6は、制御モードを設定する処理の一例を示す図である。ロボット50を移動させる処理が開始されると、特異姿勢近傍判定部27により、ロボット50が特異姿勢の近傍にあるか否かの判定を行う(ステップS1)。この特異姿勢近傍判定部27によって、制御周期毎の直交座標系上のロボット50の先端部58の位置および/または姿勢の制御を行う(第一制御モード)か、または、制御周期毎の所望の各軸の位置の制御を行う(第二制御モード)かを判定する。
特異姿勢近傍判定部27によって、ロボット50が特異姿勢の近傍にないと判定されるとき、制御モードを第一制御モードとする(ステップS2)。また、特異姿勢近傍判定部27によって、ロボット50が特異姿勢の近傍にあると判定されるとき、制御モードを第二制御モードとする(ステップS3)。
このように、特異姿勢近傍判定部27を用いて、ロボット50の軸の位置をもとに直交座標系上の位置および/または姿勢の移動を行う第一制御モードと、各軸の位置の移動を行う第二制御モードとを切替えることができ、また、各軸を操作する場合の軸を指定することもできる。このため、ロボット50の先端部58に力を作用させて移動させているときに、別に用意した入力装置を用いて入力作業を行うことなしに、制御モードを切替えることが可能となる。
また、ロボット50の先端部58に力を作用させるという操作を行いながら、直交座標上の位置および/または姿勢を移動させたり、所望の各軸を移動させたりすることが可能となる。例えば、ロボット50の先端部58に力を作用させて、直交座標系上のロボット50の先端部58の位置および/または姿勢を移動させているときに、ロボット50の先端部58に力を作用させながら所望の各軸を移動させて、直交座標系上の通常の移動では移動させられない位置を通過させ、或る位置から通常、移動可能でない位置に到達させられる。その後、直交座標系上の移動を再度行うことなどが可能となる。
これによって、操作者が設定を切替える教示装置を別に用意したり、設定を切替えるための入力操作をしたりすることがない。従って、ロボットシステムのコストを抑え、移動操作において、直交座標系上の任意の位置や姿勢、また、任意の軸の位置に移動させやすくなるとともに、よりスムーズに連続的に且つ快適に行うことが可能となる。
また、本発明において直交座標系上の位置および/または姿勢の移動操作が不可能か困難である、または、移動操作が不安定となる特異姿勢の近傍を通過させることが可能となり、そのような状態での移動操作を容易に行うことが可能となる。さらに、直交座標系上の位置および/または姿勢の移動操作が不安定になりやすい、特異姿勢の近傍を早期に検出して、所望の各軸を移動させることによって、ロボット50を安定的に、安全に移動させることも可能となる。
次に、制御モードに応じて、ロボット50を移動させる操作指令を変更する。図7は、制御モードが第一制御モードであるときの処理の一例を示す図である。以下、制御モードが、第一制御モードのときの処理について説明する。
はじめに、力計測部21によって、ロボット50の先端部58に作用させた力を計測する(ステップS11)。次いで、力計測部21が計測した、ロボット50の先端部58に作用された力をもとに、第一力算出部22によって、直交座標系上のロボット50の先端部58の位置および/または姿勢を移動させるための操作力を算出する(ステップS12)。
次いで、操作指令部24は、第一力算出部22が算出した操作力をもとに、直交座標系上のロボット50の先端部58の位置および/または姿勢を移動させる操作指令を生成して、出力する(ステップS13)。
図8は、制御モードが第二制御モードであるときの処理の一例を示す図である。以下、制御モードが、第二制御モードのときの処理について説明する。はじめに、力計測部21によって、操作者60がロボット50の先端部58に作用させた力を計測する(ステップS21)。次いで、操作軸設定部25は、力に応じて移動される操作軸を設定し、また、力の方向に応じて定まる操作軸の移動方向を設定する(ステップS22)。
次いで、力計測部21が計測した、ロボット50の先端部58に作用された力をもとに、第二力算出部23によって、操作軸設定部25が設定した操作軸の位置を移動させるための操作力を算出する(ステップS23)。次いで、操作指令部24は、第二力算出部23が算出した操作力、操作軸設定部25の設定をもとに、操作軸の位置を移動させる操作指令を生成して、出力する(ステップS24)。
以下、制御モードが第二制御モードの場合における、各軸の位置を移動させる処理の実施例についてさらに説明する。ステップS22において、操作軸設定部25が、各軸の現在位置をもとに、J2軸52、J3軸53、J1軸51を、操作軸に設定する。そして、操作軸設定部25が、力の方向に応じて定まる操作軸の移動方向を、J2軸52およびJ3軸53ともに、力の方向と同じ方向に設定したとする。
このような場合において、ステップS23における、第二力算出部23によって、操作軸の位置を移動させるための操作力を算出する方法、また、ステップS24において操作指令部24によって移動の操作指令を生成する方法について、詳細に説明する。
ロボット50が、図9に示される第一特異姿勢の近傍にあるとき、第二力算出部23が操作軸に対する操作力を算出する方法について説明する。なお、操作軸において、軸が異なる場合、また、移動操作の状況に応じて、算出方法は異なる方法を用いてもよい。
図9は、ロボット50の先端部58において、力Fsが作用していることが、力計測部21によって計測されていることを示す図である。力Fsは、力の並進方向の成分Fおよび力のモーメント成分Mを含み、力の並進方向の成分Fx、Fy、Fzおよび力のモーメント成分Mx、My、Mzから成る力とする。
操作軸に対して座標系を設定するとき、操作軸の回転中心線と座標系のZ軸が一致するように座標系を設定する。力計測部21が計測した力Fsを、この操作軸に設定した座標系上の力に座標変換して、算出される力における、Z軸回りの力のモーメントを、操作力としてもよい。
また、操作力を次のように求めてもよい。
図10は、図9に示した、或る操作軸31と、力計測部21が計測した力Fsをもとに、操作軸31に対する操作力を算出する方法を説明する図である。
操作軸31の基準座標系上の位置を表す点P1が、座標系の原点となるように、また、Z軸Azが操作軸31の回転中心線と一致するように、また、X軸AxおよびY軸Ayの成す平面が、操作軸31の回転中心線と直交する平面となるように、操作軸31に対して、点P1、X軸Ax,Y軸Ay、Z軸Az軸で構成される座標系を設定する。平面Cは、操作軸31に設定した座標系においてX軸AxおよびY軸Ayが成す平面であり、X−Y平面とする。また、平面Cは操作軸31の回転中心線と直交する平面としてもよい。この場合、点P1はこの平面と回転中心線との交点になる。また、点P2は、ロボット50の先端部58に作用させた力を計測するときの力計測座標系の原点である、力計測点を平面Cに射影した点とする。
ここで、力計測部21が計測した力Fsのモーメント成分の力M(Mx、My、Mz)を、平面C上の力のモーメントに座標変換した力のモーメントを力のモーメントM21とする。または、操作軸31に設定した座標系上の力のモーメントに変換したときのZ軸Az回りの力のモーメントを力のモーメントM21としてもよい。
位置ベクトルPvは、平面Cにおいて、点P1から点P2への位置ベクトルとする。このときの位置ベクトルPvの大きさは、操作軸31の回転中心線と力計測点との間の最短距離となる。
力Fpは、力計測部21が計測した力Fsの並進方向の成分の力F(Fx、Fy、Fz)をもとに、平面C上で、操作軸31の回転中心線回りに作用する力として求めた、並進方向の力である。並進方向の成分の力Fを平面Cに射影して得られる、並進方向の力を、力Fpとしてもよい。また、力Fsの並進方向の成分の力Fをもとに力Fpを求めるとき、力Fsの並進方向の成分の力Fが作用する方向と、所定方向への方向の回転操作とをもとに力Fpを算出するようにしてもよい。
ここで、力Fsの並進方向の成分の力Fの方向の変動によって、力Fによって求まる力Fpの大きさが変動することを軽減させるための、力Fpの算出方法の一例について図11を用いて説明する。操作軸31に設定した座標系上において、力計測点P3において作用する力Fを、力計測点P3のZ軸Az方向の値が0となるようにした平面C上の点P2において作用するように、平行移動させた力を力Fspとする。力Fspと平面Cとの成す角度が所定閾値より小さいとき、力Fspを、点P2を回転中心点として、平面Cに最も近回りする方向に回転させて平面C上の力とすることによって、力Fpを求める。
なお、力Fspと平面Cとの成す角度が大きく、力Fspの方向が平面Cに直交する方向に近い場合、前記の方法では力を不適切に大きくしてしまうため、このようなことは行わない。力Fspと平面Cとの成す角度が所定閾値以上であるとき、力Fsの並進方向の成分の力Fまたは力Fspを平面Cに射影して力Fpを求めるか、または、力Fpの大きさを0として力Fsの並進方向の成分の力Fによる操作力は作用しないものとする。
また、力Fsの並進方向の成分の力Fと平面Cに平行な面との成す角度が所定閾値より小さいとき、力Fを平面Cに射影し、さらに、その射影したベクトルに対して、ベクトルの大きさが力Fの大きさとなるように、ベクトルを伸縮調整して求めたベクトルを、力Fpとしてもよい。
さらに、力Fsの並進方向の成分の力Fと平面Cに平行な面との成す角度が所定閾値以上であるとき、力Fを平面Cに射影して力Fpを求めるか、または、力Fpの大きさを0として、力Fsの並進方向の成分の力Fによる操作力は作用しないとしてもよい。
以上のように、力Fsの並進方向の成分の力Fが作用する方向と、所定方向への方向の回転操作をもとに、平面C上の力Fpを求めることによって、力Fを平面C上に射影するだけの場合に比べて、力Fの方向の変動による力Fpの大きさの変動を軽減させたり、力Fpの大きさを調整させたりすることが可能となる。
また、力Fsの並進方向の成分の力Fの方向の変動によって、力Fによって求まる力Fpの大きさが変動することを軽減させるための、力Fpの別の算出方法の一例について図12を参照しつつ説明する。
図12に示す平面は、力Fsの並進方向の成分の力Fを平面Cに射影したときのベクトルを含む、かつ、平面Cに直交する、かつ、軸Az2を含む平面を示している。ここで、軸Az2は、Z軸Azに平行な軸とする。操作軸31に設定した座標系上において、力計測点P3において作用する力Fを、力計測点P3のZ軸Az方向の値が0となるようにした平面C上の点P2において作用するように、平行移動させた力を力Fspとする。この力Fspが平面Cと成す角度と、所定の角度によって順次定まる所定の範囲Rp1、Rp2、Rp3とを比較して、力Fspの方向が、所定の範囲のどの範囲に存在するかを求める。力Fspの方向が存在する範囲をもとに、所定の範囲毎に設定した所定の角度を求めて、平面Cに対してこの角度を成す方向を求める。換言すれば、力の方向に応じて定まる代表的な方向を求める。そして、力の方向がこの求められた方向となるように、力Fspを、点P2を回転中心点として回転させる。このように求められた力を平面Cに射影して、算出されるベクトルを、力Fpとする。
例えば、力Fspの方向が、範囲Rp1内にある場合には、力Fspを回転して移動させる方向を平面Cと成す角度が0度となる方向とする。力Fspの方向が、範囲Rp3内にある場合には、力Fspの方向は平面Cと直交する方向に近い。このような場合には、力Fspを回転して移動させる方向を平面Cと直交する方向とする、または、力Fpの大きさを0として、力Fsの並進方向の成分の力Fによる操作力は作用しないとする。
このように所定の範囲によって、力Fspの方向を、切替えるときには、操作力が大きく変わらないように、力Fspの方向、または、力Fspを射影して求められる力Fpの大きさを円滑に変化させることが好ましい。
このように求めた平面C上の力Fpに対して、さらに、後述するような、所定方向への方向の回転操作や、平行移動操作、力のFpの大きさを変更する操作などをもとに求められた力Fnを、新たな力Fpとしてもよい。
そして、平面C上の力Fpと、位置ベクトルPvとの外積演算によって求められた力のモーメントM11、また、力のモーメントM21をもとに操作力を求める。
位置ベクトルPvの大きさが所定の値より小さいとき、前記力のモーメントM21を、操作力とする。これには次の効果がある。点P2が点P1の付近にあり、点P2の誤差によって、点P2が実際とは異なる位置になる、または、位置が変動してしまう場合、力のモーメントの符号が逆になることがある。このような場合であって、操作力に対する力制御ゲインの値が大きい場合、または、力のモーメントM11と力のモーメントM21のそれぞれに係数をかけてそれらを足し合わせて力のモーメントを算出する場合、かつ、力のモーメントM11にかける係数が大きい場合に、操作軸を意図しない方向に移動させてしまうことなどを防ぐことができる。
位置ベクトルPvの大きさが所定の値以上であるとき、位置ベクトルPvと力Fpの外積演算から力のモーメントを算出し、算出した力のモーメントM11を操作力とする。または、前記算出した力のモーメントM11と、前記力のモーメントM21とを足し合わせた力のモーメントを操作力とする。さらに、力のモーメントM11と、力のモーメントM21のそれぞれに係数をかけることにより大きさを変えて、それぞれの影響力を調整した値を、足し合わせるようにしてもよい。このとき、この係数を、位置ベクトルPvの大きさや、力Fpの大きさなどをもとに、調整してもよい。
力計測部21が計測した力Fsの力のモーメント成分の力Mの影響を排除するようにしたい場合や、力Fsの並進方向の力のみで移動させたい場合には、力のモーメントM21を考慮せず、力のモーメントM11のみを操作力とすることが好ましい。
また、力Fpの大きさが同じであっても、位置ベクトルPvの大きさによって、算出される力のモーメントM11の大きさは変化する。このため、力のモーメントM21とは異なり、力のモーメントM11は、ロボット50の先端部58の位置の移動によって大きさが変わり、操作力が変動する。
このため、位置ベクトルPvの大きさが所定閾値以上で、力Fpの大きさが所定閾値より小さい場合には、力のモーメントM21のみを操作力とすることが好ましい場合がある。以上の、力のモーメントM21についての説明は、力のモーメントM21を考慮する場合、他でも同様である。
前述のように力のモーメントを算出する場合、力Fpの大きさが同じであっても、位置ベクトルPvの大きさによって、算出される力のモーメントM11の大きさが変わってしまうことに起因する問題がある。この問題に対処するための方法を、図13を参照して説明する。
図13は、前述のように説明した、力計測部21が計測した力Fsをもとに、第二力算出部23が、操作軸31に対する操作力を算出する別の方法を説明する図である。直線Lwは、平面C上に存在し、点P1および点P2を含む直線とする。平面C上の並進方向の力からなる力Fpが作用する、位置ベクトルPvをもとに、位置ベクトルPvの大きさを、所定の値Cpnにまで伸縮調整させた位置ベクトルPnを算出する。力Fpを、この位置ベクトルPnの端点となる位置P4において作用するように、平行移動させた力を力Fnとする。
このように求めた、位置ベクトルPnと力Fnの外積演算から、力のモーメントを算出し、算出した力のモーメントM12を操作力とする。
このように、力のモーメントを求めるときに、位置ベクトルを伸縮調整させることによって、点P2の位置の変動による、力のモーメントの変動を軽減させ、操作力の細かな変動や、急激な変化などを防ぐことができるため、ロボット50を安定して移動させ、操作性を向上させることが可能となる。
また、操作力と力制御ゲインをもとに、操作軸の移動速度を求める場合、同じ大きさの力を作用させても、ロボット50の先端部58の位置によって、意図せずに、操作軸の移動速度が変わることを防ぐことができる。
また、図13において、位置ベクトルPvの大きさを所定の大きさにするための所定の値Cpnは、位置ベクトルPvの大きさをもとに、変更するようにしてもよい。具体的には、位置ベクトルPvの大きさに対して、所定の範囲毎に段階的に、所定の値Cpnを変える。このとき、段階的に切替えるときには、操作力が大きく変わらないように、所定の値Cpnの値を円滑に変化させる、または、算出する力のモーメントM12を円滑に変化させることが好ましい。
前述したように、所定の値Cpnを所定の範囲毎に段階的に変えているので、所定の範囲内での細かな位置の変動によって、力のモーメントが変動することを防ぐことができる。これによって、力Fnの大きさが同じ場合であっても、位置ベクトルPvの大きさに応じて力のモーメントM12が変わるようにできる。さらに、操作力の変動を減らし、ロボット50をより安定、安全に移動させ、操作性を向上させることが可能となる。
あるいは、位置ベクトルPvの大きさが大きくなるに従って、所定の値Cpnを小さくするようにしてもよい。このとき、位置ベクトルPvの大きさが大きくなるに従って、位置ベクトルPvの大きさに対して、所定の範囲毎に段階的に、または、所定の関数に従って段階的に、所定の値Cpnが小さくなるようにする。このとき、所定の値Cpnを段階的に切替えるときには、操作力が大きく変わらないように、所定の値Cpnの値を円滑に変化させることが好ましい。
このように、所定の値Cpnを、位置ベクトルPvの大きさが大きくなるに従って、小さくすることによって、力Fnが同じ大きさであっても、力のモーメントM12の大きさを小さくして、操作力を小さくすることができる。これによって、操作力と力制御ゲインをもとに、操作軸の移動速度を求める場合、力Fpが同じ大きさでも、ロボット50の先端部58が操作軸から遠位にあるときには、操作軸の移動速度を小さくできる。この移動速度、つまり、軸の回転速度を小さくした状態で、ロボット50の先端部58を移動させることによって、操作者がより安全にロボット50を移動させることが可能となる。
さらに、図10を参照した前述の説明と同様に、力のモーメントM21を算出して用いてもよい。つまり、位置ベクトルPvの大きさが所定の値より小さいとき、力のモーメントM21を操作力とする。また、位置ベクトルPvの大きさが所定の値以上であるとき、力のモーメントM12、または、力のモーメントM12と力のモーメントM21とを足し合わせた力のモーメントを操作力とする。さらに、力のモーメントM12と、力のモーメントM21のそれぞれに係数をかけて大きさを変えることにより、それぞれの影響力を調整した値を、足し合わせるようにしてもよい。このとき、この係数を、位置ベクトルPvの大きさや、力Fpの大きさなどをもとに、調整してもよい。
また、前述のように力のモーメントを算出する場合、力Fpの大きさが同じであっても、力Fpの方向によって、算出される力のモーメントの大きさが変わってしまうことに起因する問題がある。この問題に対処するための方法を、図14を参照して説明する。
図14は、前述のように説明した、力計測部21が計測した力Fsをもとに、第二力算出部23が、操作軸31に対する操作力を算出する別の方法を説明する図である。図14においては、力Fsの並進方向の成分の力Fが作用する方向と、所定方向への方向の回転操作とをもとにして、操作軸31の回転中心線回りに作用させる、並進方向の力から成る力を求める。
まず、前述のように、力Fsの並進方向の成分の力Fをもとに、平面C上の、並進方向の力からなる力Fpを算出する。算出された力Fpの方向をもとに、力Fpと直線Lwとが成す角度を求める。この算出された角度と、所定の角度の範囲Rpとを比較する。力Fpの方向が、所定の角度の範囲Rp以内にあると判定されるとき、力Fpの方向が代表的な方向である所定方向Dn(図示しない)になるように、点P2を回転中心点として力Fpを回転させ、それにより、力Fnを算出する。この力Fnの方向は、位置ベクトルPvと直交する方向とすることが好ましい。このように求めた、位置ベクトルPnと力Fnの外積演算から、力のモーメントを算出し、算出した力のモーメントM13を操作力とする。
このように、力のモーメントを求めるときに、操作軸31の回転中心線回りに作用する力Fpの方向を、方向に応じて定まる代表的な方向にすることによって、力Fpの方向の変動に起因する、力のモーメントの変動を軽減させ、操作力の変動や、急激な変化などを防ぐことができる。従って、ロボット50を安定して移動させることができ、操作性を向上させることができる。
また、操作力と力制御ゲインとをもとに、操作軸の移動速度を求める場合、同じ大きさの力を作用させても、力Fpの方向によって、意図せずに、操作軸の移動速度が変わることを防ぐことができる。
また、力Fpの方向を回転させるときに用いる、所定方向Dnを、力Fpの方向に応じて変更するようにしてもよい。所定方向Dnを力Fpの方向に応じて変更して、力Fpの方向を回転させる方法の一例を、図15を参照しつつ説明する。
図15に示されるように、所定の角度の範囲として、範囲Rp1、Rp2、Rp3のように順次異なる範囲を設定する。力Fpと直線Lwとが成す角度をもとに、力Fpの方向が、前記角度の範囲Rp1、Rp2、Rp3のどの範囲にあるかを判定する。範囲毎に予め設定した所定方向Dnに基づいて、点P2を回転中心点として、力Fpの方向を回転させる。
例えば力Fpの方向が範囲Rp1内にあるとき、力Fpを所定方向Dnに回転させた力Fn1を力Fnとする。力Fpの方向が範囲Rp2内にあるとき、力Fpを別の所定方向Dnに回転させた力Fn2を力Fnとする。さらに、力Fpが範囲Rp3内にあるとき、力Fpをさらに別の所定方向Dnに回転させた力Fn3を力Fnとする。このように所定方向Dnを範囲毎に段階的に切替えるときには、操作力が大きく変わらないように、力Fpの方向を円滑に変化させる、または、算出する力のモーメントM13が円滑に変化するようにすることが好ましい。
このように、力Fpの方向を回転させるときに用いる、所定方向Dnを、力Fpの方向をもとに、所定の範囲毎に段階的に変えることによって、力Fpの方向をなるべく考慮して力のモーメントM13が変わるようにできる。さらに、この場合には、力Fpの方向が所定の範囲内にあるときの力Fpの方向の変動による、力のモーメントM13の細かな変動を防ぐことができる。これによって、操作力の変動を減らし、ロボット50をより安定、安全に移動させ、操作性を向上させることが可能となる。
また、位置ベクトルPvの大きさが大きくなるに従って、所定方向Dnと位置ベクトルPvとの成す角度が小さくなる方向に所定方向Dnを変更してもよい。このとき、位置ベクトルPvの大きさが大きくなるに従って、位置ベクトルPvの大きさに対して、所定の範囲毎に段階的に、または、所定の関数に従って段階的に、所定方向Dnと位置ベクトルPvとの成す角度が小さくなる方向に所定方向Dnを変更する。
所定方向Dnを範囲毎に段階的に切替えるときには、操作力が大きく変わらないように、力Fpの方向を円滑に変化させる、または、算出する力のモーメントM13が円滑に変化させることが好ましい。
このように、位置ベクトルPvの大きさが大きくなるに従って、所定方向Dnと位置ベクトルPvとの成す角度が小さくなる方向に所定方向Dnを変更することによって、力Fnが同じ大きさであっても、力のモーメントM13の大きさを小さくして、操作力を小さくすることができる。
これによって、操作力と力制御ゲインとをもとに、操作軸の移動速度を求める場合、力Fpが同じ大きさでも、ロボット50の先端部58が操作軸から遠位にあるときには、操作軸の移動速度を小さくできる。この移動速度、つまり、軸の回転速度を小さくした状態で、ロボット50の先端部58を移動させることによって、操作者がより安全にロボット50を移動させることが可能となる。
さらに、図10を参照した前述の説明と同様に、力のモーメントM21を算出して用いてもよい。つまり、位置ベクトルPvの大きさが所定の値より小さいとき、力のモーメントM21を操作力とする。また、位置ベクトルPvの大きさが所定の値以上であるとき、力のモーメントM13、または、力のモーメントM13と力のモーメントM21とを足し合わせた力のモーメントを操作力とする。さらに、力のモーメントM13と、力のモーメントM21のそれぞれに係数をかけて大きさを変えることにより、それぞれの影響力を調整した値を、足し合わせるようにしてもよい。このとき、この係数を、位置ベクトルPvの大きさや、力Fpの大きさなどをもとに、調整してもよい。
また、前述した、力のモーメントM12の算出時に行った、平面C上の力Fpが作用する位置ベクトルの伸縮調整の操作と、力のモーメントM12の算出時に行った、力Fsの並進方向の成分の力Fの方向および所定方向への回転操作をもとに、力のモーメントを算出するようにしてもよい。
この算出方法の実施の一例を、図16を参照しつつ、説明する。
図16は、図10、図13、図14、図15などと同様に、力計測部21が計測した力Fsをもとに、第二力算出部23が、操作軸31に対する操作力を算出する方法を説明する図である。
前述したのと同様に、点P1は操作軸31の基準座標系上の位置を表す原点とする。平面Cは、原点が点P1にあり、Z軸Azが操作軸31の回転中心線と一致し、X軸AxおよびY軸Ayの成す平面が、操作軸31の回転中心線と直交する平面となるように、操作軸31に設定した座標系の、X軸AxおよびY軸Ayが成す平面であり、X−Y平面とする。点P2は、ロボット50の先端部58に作用された力を計測するときの力計測座標系の原点である、力計測点を、平面Cに射影した点とする。位置ベクトルPvは、平面Cにおいて、点P1から点P2への位置ベクトルとする。力Fpは、力Fsの並進方向の成分の力Fをもとに、前述のように、平面C上で操作軸31の回転中心線回りに作用する力として求めた並進方向の力である。Lwは、平面C上に存在し、点P1および点P2を含む直線とする。
このとき、並進方向の力からなる力Fpが作用する、位置ベクトルPvをもとに、位置ベクトルPvの大きさを所定の値Cpnにまで伸縮調整させた位置ベクトルPnを算出する。並進方向の力から成る力Fpが作用する点を、この位置ベクトルPnの端点である位置P4に移動させるように、力Fpを平行移動させた力を、力Fnpとする。
平面C上を平行移動させて求められた力Fnpの方向をもとに、力Fnpと直線Lwとが成す角度を算出する。この算出した角度と、所定の角度によって与えられる所定の角度の範囲Rpとを比較する。力Fpの方向が、所定の角度の範囲Rp以内にあると判定されるときには、力Fpの方向を、所定方向に回転させた力Fnを算出する。
このように求めた、位置ベクトルPnと力Fnの外積演算から、力のモーメントを算出し、算出した力のモーメントM14を操作力とする。ただし、位置ベクトルPvの大きさが所定の値より小さいときは、前述したのと同様に、力のモーメントM21を、操作力とする。
このように、操作軸31の回転中心線回りに作用する力Fpの方向を方向に応じて定まる代表的な方向にする、また、力が作用する位置ベクトルを所定の大きさにする。これにより、力のモーメントを求めるときに、点P2の位置の変動による、また、力Fpの方向の変動よる、力のモーメントの変動を軽減させ、操作力の細かな変動や、急激な変化などを防ぐことができる。従って、ロボット50を安定して移動させることができ、操作性を向上させることができる。
また、操作力と力制御ゲインとをもとに、操作軸の移動速度を求める場合、同じ大きさの力を作用させても、力Fpの方向によって、意図せずに、操作軸の移動速度が変わることを防ぐことができる。
また、力Fpの方向の変更、力Fpが作用する位置ベクトルの大きさを所定の値にする方法の別の実施例、力のモーメントM22を考慮する方法などは、前述したのと同様である。このようなことによって、ロボット50に力を作用させて移動させるときの、操作性を向上させるとともに、より安全にすることが可能である。
操作力の算出方法として、別の実施例について説明する。
力計測部21が計測した力Fsの並進方向の成分の力Fをもとに、操作軸31の回転中心線回りに作用させる並進方向の力から成る力Fpを求め、前記並進方向の力から成る力Fpの方向をもとに、操作力の方向を求める。もしくは、力計測部21が計測した力Fsの並進方向の成分の力Fの大きさ、または、操作軸31の回転中心線回りに作用させる力Fpの大きさをもとに、操作力の大きさを求めるようにしてもよい。
この実施例について、図17を参照しつつ、さらに説明する。
前述の実施例と同様に、点P1は操作軸31の基準座標系上の位置を表す原点とする。平面Cは、原点が点P1にあり、Z軸Azが操作軸31の回転中心線と一致し、X軸AxおよびY軸Ayの成す平面が、操作軸31の回転中心線と直交する平面となるように、操作軸31に設定した座標系の、X軸AxおよびY軸Ayが成す平面であり、X−Y平面とする。点P2は、ロボット50の先端部58に作用させた力を計測するときの力計測座標系の原点である、力計測点を平面Cに射影した点とする。位置ベクトルPvは、平面Cにおいて、点P1から点P2への位置ベクトルとする。力Fpは、力Fsの並進方向の成分の力Fをもとに、前述のように、平面C上で操作軸31の回転中心線回りに作用する力として求めた並進方向の力である。Lwは、平面C上に存在し、点P1および点P2を含む直線とする。
位置ベクトルPvの大きさが所定の値より小さいとき、操作力は作用しないとする。そして、位置ベクトルPvの大きさが所定の値以上であるとき、以下のようにする。
まず、力Fpをもとに、操作軸31に対して仮想的に作用するとした仮想力を次のように求める。力Fpのベクトルと、位置ベクトルPvの内積を求めるなどして、力Fpの方向が、直線Lwと直交する正方向(+Rqの方向)であるか、直線Lwと直交する負方向(−Rqの方向)であるかによって、仮想力の方向を求め、仮想力の符号を決める。図17に示す場合には、力Fpの方向は、直線Lwと直交する+方向(+Rqの方向)にあると求められる。従って、この方向をもとに、仮想力の方向を正方向とし、仮想力の符号を正とする。
さらに、力Fpの大きさをもとに、または、力Fsの並進方向の成分の力Fの大きさを、仮想力の大きさとする。または、力Fpの位置ベクトルPvと直交する成分の大きさを、仮想力の大きさとしてもよい。このようにして求めた仮想力Fkを、操作力とする。
さらに、力計測部21が計測した力Fsのモーメント成分の力Mをもとに求めた、前記力のモーメントM21を算出して用いてもよい。位置ベクトルPvの大きさが所定の値より小さいとき、力のモーメントM21を操作力とする。
また、位置ベクトルPvの大きさが所定の値以上であるときには、前記仮想力Fkに所定の値をかけた値、または、前記仮想力Fkに所定の値をかけた値と力のモーメントM21とを足し合わせた力のモーメントを操作力とする。さらに、前記仮想力Fkに所定の値をかけた値と、力のモーメントM21のそれぞれに係数をかけて大きさを変えることにより、それぞれの影響力を調整した値を、足し合わせるようにしてもよい。このとき、この係数を、位置ベクトルPvの大きさや、力Fpの大きさなどをもとに、調整してもよい。
前述の説明と同様に、力計測部21が計測した力Fsのモーメント成分の力Mの影響を排除するようにしたい場合や、力Fsの並進方向の力のみで移動させたい場合には、力のモーメントM21を考慮せず、仮想力Fkをもとにした力を操作力とすることが好ましい。
操作指令部24は、制御モードが第二制御モードのとき、前述のようにして求めた操作力と操作軸設定部25によって設定される力の方向に応じて定まる移動方向に基づいて操作軸を移動させる。このとき、操作指令部24は、操作力の符号と、操作軸設定部25が設定した力の方向に応じて定まる、ここでは、操作力の符号に応じて定まる操作軸の移動方向をもとに、操作軸の目標移動方向(回転軸の場合、回転方向)を決定し、操作力の大きさをもとに、操作軸の目標移動速度を算出する。
このとき、操作力の大きさに、力に対する移動の応答性を定める力制御ゲインをかけた力制御を行うことによって、操作軸の目標移動速度を算出することが好ましい。また、操作軸の回転中心線からロボット50の先端部58までの最短距離に応じて、前記力制御ゲインを変更するようにしてもよい。
このとき、操作軸の回転中心線からロボット50の先端部58までの最短距離をもとに、所定の範囲毎に段階的に、または、所定の関数に従って段階的に、または、所定の関数に従って連続的に、力制御ゲインを変更する。なお、力制御ゲインを段階的に切替えるときには、ロボット50の移動速度が急に、大きく変わらないように、移動の速度を円滑に変化させることが好ましい。
これによって、ロボット50の先端部58の位置によって、操作力に対する応答性を変更し、空間における領域毎に、ロボット50の移動速度を調整することができる。
ここで、操作軸の回転中心線からロボット50の先端部58までの最短距離が大きい場合と、小さい場合とにおいて、同じ操作力に対して、操作軸の速度を同じ角速度で移動させることを考える。最短距離が大きい場合には、最短距離が小さい場合よりも、ロボット50の先端部58の並進方向の速度は速くなる。
そして、操作軸からロボット50の先端部58の位置が遠い場合には、操作軸からロボット50の先端部58の位置が近い場合よりも、同じ操作力に対する操作軸の角速度を遅くした方が、安全であり、また操作しやすくなる。従って、操作軸の回転中心線からロボット50の先端部58までの最短距離が大きくなるに従って、力制御ゲインを小さくするようにしてもよい。
これによって、操作力の大きさが同じ場合でも、操作軸からロボット50の先端部58の位置が遠くなるに従って、ロボット50の先端部58の速度を小さくすることができる。その結果、安全性を高め、操作性を向上させることが可能となる。
また、操作力の大きさに応じて操作軸の目標移動速度を変える場合には、操作力の大きさが同じでも、ロボット50の先端部58が、操作軸から遠くなるに従って、ロボット50の先端部58の接線速度は大きくなってしまう。
そこで、操作指令部24は、制御モードが第二制御モードのとき、前述のようにして求めた操作力と、操作軸設定部25によって設定される力の方向に応じて定まる移動方向とに基づいて、操作軸を移動させるとき、操作力に基づいて、操作軸の回転中心線回りの、ロボット50の先端部58の目標移動方向および目標接線速度を求める。そして、操作指令部24は、ロボット50の先端部58の目標移動方向および目標接線速度をもとに、操作軸の目標移動方向および目標移動速度を求めて、前記操作軸を移動させるようにしてもよい。
これによって、操作力の大きさが同じ場合、ロボット50の先端部58の位置によらず、ロボット50の先端部58の接線速度を同じにすることが可能となる。この場合、ロボット50の先端部58が、操作軸から離れるに従って、操作力の大きさが同じでも、操作軸の回転速度は小さくなる。
また、このような効果を得るため、操作力の大きさをもとに、操作軸の目標移動速度を算出する場合には、前述したように、操作軸の回転中心線からロボット50の先端部58までの最短距離が大きくなるに従って、力制御ゲインを小さくしてもよい。また、前述した効果を得るために、操作力を算出するときに、操作軸の回転中心線からロボット50の先端部58までの最短距離で除算演算して小さくなるように求めてもよい。
また、操作力に基づいて、操作軸の回転中心線回りのロボット50の先端部58の移動方向および接線速度を求めた後で、操作軸の目標移動方向および目標移動速度を求めるとき、操作力の大きさに、力に対する移動の応答性を定める力制御ゲインをかけた力制御によって、ロボット50の先端部58の目標接線速度を算出してもよい。このときにも、操作軸の回転中心線からロボット50の先端部58までの最短距離に応じて、力制御ゲインの値を変更するようにしてもよい。
このような場合には、操作軸の回転中心線からロボット50の先端部58までの最短距離をもとに、所定の範囲毎に段階的に、または、所定の関数に従って段階的に、または、所定の関数に従って連続的に、力制御ゲインを変更する。なお、力制御ゲインを段階的に切替えるときには、ロボット50の移動速度が急に、大きく変わらないように、移動の速度を円滑に変化させることが好ましい。
また、前述の場合に、操作軸の回転中心線からロボット50の先端部58までの最短距離が大きくなるに従って、力制御ゲインを小さくするようにしてもよい。これによって、操作軸の回転中心線から、ロボット50の先端部58の位置が遠ざかるに従って、操作軸の回転中心線回りの、ロボット50の先端部58の接線速度を小さくすることができ、ロボット50をより安全に操作することが可能となる。
以上のようにして、操作指令部24は、制御モードが第二制御モードのとき、操作軸設定部25の設定と、第二力算出部23が、算出する操作力をもとに、操作軸としたロボット50の所望の軸を移動させる指令を出力する。
本発明の第一実施形態に係るロボット制御装置10を実現するロボット制御装置10aでは、ロボット50の先端部58に力を作用させてロボット50を移動させる際、直交座標系上のロボット50の先端部58の位置および/または姿勢の移動をさせているときの、特異姿勢の近傍では、ロボット50の各軸の位置を移動させる。また、制御周期毎のロボット50の先端部58の位置および/または姿勢の制御を行うか、または、制御周期毎のロボット50の所望の各軸の位置の制御を行うかを、特異姿勢近傍判定部27を用いて判定して切替える。このため、本発明においては、以下のような効果がある。
ロボット50が特異姿勢の近傍にある場合に、通常の直交座標系上での動作では移動させることができない状態や、直交座標系上の制御性能が悪化する状態、または、制御ができなくなる状態が存在する。本発明では、そのような状態を検出し、操作力に応じて各軸の位置を制御する動作に切替えることによって、ロボットを特異姿勢の近傍を安定的に通過させることが可能となる。
そして、ロボット50の先端部58に作用させる力に応じて、直交座標系上のロボット50の先端部58の位置および/または姿勢を移動させる操作では移動させることができないような各軸の位置に、移動させることが可能となる。
また、特異姿勢の近傍において、所定の軸や、所望の軸について、各軸の移動操作を可能とするとともに、適切な軸を操作する軸として選定することによって、各軸の移動操作をより簡易にできる。
また、特異姿勢の近傍はロボット50の軸の位置を定める形態が変わる場所でもある。このため、特異姿勢の近傍で各軸を移動させることによって、直交座標系上の位置および/または姿勢の移動では移動できないような位置を通過させて、別の形態に移動させることができる。なお、ここで述べるロボットの「形態」とは、ロボットの先端部を或る位置および姿勢にするときに、軸の位置が一意に定まらず、軸の位置をどのようにするかという軸の状態を定める形態とする。そして、ロボット50の先端部58に力を作用させて、直交座標系上でロボット50の先端部58の位置および/または姿勢を移動させているときに、一旦、特異姿勢の近傍に移動させて、各軸を移動させることによって、別の形態での直交座標系上の移動操作を行うことができる。
また、特異姿勢の近傍やその手前では、直交座標系上の位置を少し移動させただけでも、回転軸が意図せずに大きく回転してしまうことがある。このときに、特異姿勢の近傍で各軸の移動操作に切替え、意図せずに移動した各軸をもとの所望の位置にすることができる。
ロボット50の先端部58に力を作用させるという同様の操作によって、直交座標系上の移動操作と、各軸を移動させる移動操作とを切替える。これによって、ロボット50の姿勢を、より任意の姿勢へ移動しやすくする。
また、操作軸設定部25が、特異姿勢の近傍にあることの要因となる軸または特異姿勢の近傍を通過させる軸を含む軸を操作軸とすることにより、各軸の制御を行う制御モードから、直交座標系上の制御を行う制御モードへの切替えが容易となる。
そして、本発明においては、特異姿勢の近傍という状態を利用して、制御モードを切替えている。このため、直交座標系上の制御を行う制御モードと、各軸の位置を動かす制御モードとを切替えるための、ロボット50の各軸の位置の状態、およびタイミングが分かりやすく、制御モードの切替えの操作が容易となる。
図18は、本発明の第二実施形態に係るロボット制御装置10bの構成を機能的に示す図である。図示されるように、ロボット制御装置10bは、力計測部21と、第一力算出部22と、第二力算出部23と、操作指令部24と、操作軸設定部25と、記憶部26と、軸位置状態判定部28と、表示出力部71と、を具備している。
ロボット制御装置10bは、ロボット制御装置10aの特異姿勢近傍判定部27の代わりに、軸位置状態判定部28を用いて、ロボット50の先端部58の位置および/または姿勢を制御する第一制御モードと、ロボット50の軸の位置を制御する第二制御モードとを切替えるように形成されている。
また、操作軸設定部25、操作指令部24は、特異姿勢近傍判定部27に代えて、軸位置状態判定部28を用いるように構成されている。ロボット制御装置10bの構成および作用のうち、本発明の1番目の実施形態に係るロボット制御装置10として、図2に関連してロボット制御装置10aについて説明された実施形態と重複するものについては説明を省略する。
軸位置状態判定部28は、ロボット50の複数の軸のうち、一つ乃至複数の所定の軸の位置が、所定の位置関係の条件を満たす状態の位置にあるか否かの判定を行う。例えば、ロボット50の一つまたは複数の軸について、軸毎の位置が、前記軸毎に設定された所定の位置から閾値以内にあるか否かという、所定の位置関係の条件を満たすかどうかを判定する。または、複数の軸の位置関係によって、基準座標系上の、或る軸の原点の位置が、所定の位置関係の条件を満たすかどうかを判定する。このような軸位置状態判定部28を特異姿勢近傍判定部27として用いることにより、軸位置の状態判定によって特異姿勢の近傍にあるか否かの判定を行うようにしてもよい。
この場合の実施例は、特異姿勢近傍判定部27の実施例として示したものと同様である。つまり、特異姿勢の状態、分類毎に、各軸の位置が、前記軸毎に設定された所定の位置から閾値以内にあるか否かという、所定の位置関係の条件を満たすかどうかという判定を行う。または、複数の軸の位置関係によって、基準座標系上における或る軸の原点の位置が、所定の位置関係の条件を満たすかどうかを判定して、ロボット50の軸の位置が所定の状態にあるか否かの判定を行う。
ロボット50の所定の軸の位置が特異姿勢の近傍のような状態にない場合であっても、軸位置状態判定部28は、ロボット50の先端部58の位置および/または姿勢を制御するときに、ロボット50の先端部58の位置を通常は移動させないような状態、または、そのような状態に移動させる頻度が少ない状態にあるか否かを判定するようにしてもよい。
軸位置状態判定部28が、このような状態の軸の位置にあることを検出する。この場合には、後述のように、操作指令部24が、ロボット50の先端部58の位置および/または姿勢を制御する前記第一制御モードと、ロボット50の軸の位置を制御する前記第二制御モードとを、ロボット50の移動操作中に容易に切替えることができるようになる。
軸位置状態判定部28によって一つ乃至複数の所定の軸の位置が、所定の位置関係の条件を満たす状態の位置にあると判定されるとき、操作軸設定部25は、ロボット50の現在の各軸の位置をもとに、所定の位置関係の条件を満たす状態の位置にあることの要因となる軸、または、所定の位置関係の条件を満たす状態の位置を通過させる軸、を含む一つ乃至複数の所定の軸を、力に応じて移動させる操作軸として設定する。また、力の方向に応じて定まる操作軸の移動方向を設定する。
このとき、力の方向に応じて定まる操作軸の移動方向は、予め設定された値に基づいて、または、特異姿勢の近傍になるときの操作軸の移動方向と、操作軸にかかる力の方向とに基づいて設定される。
複数の軸の内から軸を選択して操作軸を設定するとき、一つ乃至複数の所定の軸の位置が、所定の位置関係の条件を満たす状態の位置にあることの要因となる軸、または、その状態の位置を通過させる軸以外の軸においては、そのときのロボット50の各軸の位置をもとに、所定の軸を操作軸として選択する。
操作指令部24は、ロボット50の先端部58に作用された力に基づいてロボット50を移動させるように、力計測部21が計測した力をもとに、第一力算出部22または第二力算出部23が算出した操作力を用いて、ロボット50を移動させる操作指令を出力する。
操作指令部24は、ロボット50を移動させる制御モードとして、ロボット50を移動させる、第一制御モードと第二制御モードとを有する。軸位置状態判定部28によって、一つ乃至複数の所定の軸の位置が、所定の位置関係の条件を満たす状態の位置にない、と判定されるとき、操作指令部24は、ロボット50を移動させる制御モードを、第一制御モードに設定する。そして、軸位置状態判定部28によって、一つ乃至複数の所定の軸の位置が、所定の位置関係の条件を満たす状態の位置にあると判定されるとき、操作指令部24は、ロボット50を移動させる制御モードを、第二制御モードに設定する。そして、設定された制御モードに基づいて、ロボット50を移動させる。
次いで、操作者60がロボット50の先端部58に力を作用させてロボット50を移動させるときの、本発明の第二実施形態に係るロボット制御装置10bによる処理の過程の一例を図19を参照して説明する。図19は、ロボット制御装置10bによる処理の過程の一例を示すフローチャートである。
以下、ロボット50の先端部58に力を作用させてロボット50を移動させるときの、ロボット制御装置10bによる制御モードの切替えの実行処理を、図19のフローチャート及び関連する図面を参照しつつ、また、制御モードが第二制御モードのときのロボット制御装置10bによる実行処理を、図8のフローチャート及び関連する図面を参照しつつ説明する。
なお、ここで説明される一連の処理は、一例であって、本発明がこの具体例に限定されるわけではないことに留意されたい。図19は、制御モードを設定する処理の一例を示す図である。
ロボット50を移動させる処理が開始されると、軸位置状態判定部28により、一つ乃至複数の所定の軸の位置が、所定の位置関係の条件を満たす状態の位置にあるか否かの判定を行う(ステップSA1)。そして、この軸位置状態判定部28を用いて、制御周期毎の直交座標系上のロボット50の先端部58の位置および/または姿勢の制御を行うか、または、制御周期毎の所望の各軸の位置の制御を行うかを判定する。
軸位置状態判定部28によって、一つ乃至複数の所定の軸の位置が、所定の位置関係の条件を満たす状態の位置にない、と判定されるとき、制御モードを第一制御モードとする(ステップSA2)。
軸位置状態判定部28によって、一つ乃至複数の所定の軸の位置が、所定の位置関係の条件を満たす状態の位置にある、と判定されるとき、制御モードを第二制御モードとする(ステップSA3)。
次に、制御モードに応じて、ロボット50を移動させる操作指令を変更する。この方法は、前述したように、制御モードが第一制御モードの処理について、図7を参照しつつ説明した処理、また、制御モードが第二制御モードの処理について図8を参照しつつ説明した処理と、同様である。
このように、軸位置状態判定部28を用いて、ロボット50の軸の位置をもとに、直交座標系上のロボット50の先端部58の位置および/または姿勢の移動を行う第一制御モードと、ロボット50の各軸の位置の移動を行う第二制御モードとを切替えることができ、また各軸を操作する場合の軸を指定することができる。このため、ロボット50の先端部58に力を作用させて移動させているときに、別途用意した入力装置を用いて入力作業を行うことなしに、制御モードを切替えることが可能となる。
また、ロボット50の先端部58に力を作用させるという操作を行いながら、直交座標上の位置および/または姿勢を移動させたり、所望の各軸を移動させたりすることが可能となる。例えば、ロボット50の先端部58に力を作用させて、直交座標系上のロボット50の先端部58の位置および/または姿勢を移動させているときに、ロボット50の先端部58に力を作用させながら所望の各軸を移動させて、直交座標系上の通常の移動では移動させられない位置を通過させ、或る位置から通常、移動可能でない位置に到達させられる。その後、直交座標系上の移動を再度行うことなどが可能となる。
これによって、操作者が設定を切替える教示装置を別に用意したり、設定を切替えるための入力操作をしたりすることがない。従って、ロボットシステムのコストを抑え、移動操作において、直交座標系上の任意の位置や姿勢、また、任意の軸の位置に移動させやすくなるとともに、よりスムーズに連続的に且つ快適に行うことが可能となる。
制御モードが第二制御モードの場合における、各軸の位置を移動させる処理の実施例についてさらに説明する。軸位置状態判定部28が、一つ乃至複数の所定の軸の位置が、所定の位置関係の条件を満たす状態の位置にあると判定したときに、図8のステップS22において、操作軸設定部25が、各軸の現在位置をもとに、操作軸、および、力の方向に応じて定まる操作軸の移動方向を設定する方法について説明する。そして、同様な場合において図8の、ステップS23において、第二力算出部23によって操作軸を移動させるための操作力を算出する方法、およびステップS24において操作指令部24によって移動の操作指令を生成する方法についてさらに説明する。
まず、軸位置状態判定部28によって、所定の軸をJ5軸55として、J5軸55の位置が所定の閾値以内であるか否かを判定させるようにする。この所定の閾値は、ロボット50の先端部58の位置および/または姿勢を、通常は移動させないような値である。例えば、図1において、ロボット50の先端部58やフランジ部57が、J4軸54とJ5軸55を繋ぐリンクに、通常、移動させない位置まで近づく状態の位置、または、J3軸53の原点、J5軸55の原点、およびフランジ部57の原点が直線上およびその近傍に存在する状態(この位置を、ここでは、J5軸55の位置が0度とする)の位置とする。ここでは、J5軸55が0度から閾値以内にあるか否かを判定し、前記閾値以内にあるとき、所定の位置関係の条件を満たす状態にあるとする。
操作軸設定部25は、J5軸55が0度から閾値以内にある、所定の位置関係の条件を満たす状態のとき、操作軸を次のように設定する。所定の位置関係の条件を満たす状態の位置にあることの要因となる軸、または、所定の位置関係の条件を満たす状態の位置を通過させる軸である、J5軸55を含むように、複数の軸の内から軸を選定して、操作軸を設定する。
また、各軸の現在位置をもとに、操作軸に設定する軸として、所定の位置関係の条件を満たす状態の位置にあることの要因となる軸、または、所定の位置関係の条件を満たす状態の位置を通過させる軸以外の軸も選定する。ここでは、J4軸54の位置に応じて、J5軸55以外の軸も操作軸に設定する。
これは次のことによる。J5軸55の回転中心線回りに作用する並進方向の力をもとに、操作力を求める場合には、ロボット50の先端部58に作用される並進方向の力の方向が、J5軸55の回転中心線と平行な方向であるとき、操作力はほぼ作用しないようになる。
従って、J5軸55の回転中心線と直交する方向に近い、並進方向の力を作用させたとき、J5軸55を移動させるようにする。そして、並進方向の力の方向が、それ以外の方向の場合、異なる軸を移動させるようにする。
J4軸54の位置が変わると、J5軸55の回転中心線が、J1軸51軸の回転中心線と成す角度、J2軸52の回転中心線と成す角度、J3軸53の回転中心線と成す角度は変化する。この状態に応じて、J1軸51、J2軸52およびJ3軸53の内から、操作軸として設定するものを切替えるようにするため、J4軸54の位置を利用してどの軸を操作軸とするかを判定する。
J4軸54の位置が、J5軸55の回転中心線と、J1軸51の回転中心線との成す角度が90度から閾値以内となるような位置の場合、J5軸55以外の操作軸としてJ1軸51を操作軸とする。
J4軸54の位置が、J5軸55の回転中心線と、J2軸52の回転中心線との成す角度が90度から閾値以内となるような位置の場合、J5軸55以外の操作軸としてJ2軸52を操作軸とする。J4軸54の位置が、J5軸55の回転中心線と、J3軸53の回転中心線との成す角度が、前記のJ2軸52の場合とは逆方向の90度から閾値以内となるような位置の場合、J5軸55以外の操作軸としてJ3軸53を操作軸とする。
J4軸54の位置が、前記条件を満たさない位置である場合、J5軸55以外の操作軸としてJ4軸54を操作軸とする。これによって、J4軸54の位置を、前述した、J1軸51、J2軸52およびJ3軸53を操作軸とする位置に移動させることができる。
なお、この場合、力を作用させる位置が、J4軸54の回転中心線上に在る場合には、操作力を力のモーメントとして移動させる。力を作用させる位置が、J4軸54の回転中心線上にない場合には、操作力を、並進方向の力、力のモーメントの両方として移動させる。
また、前述した場合において、J5軸55の回転中心線とJ1軸51の回転中心線との成す角度が前記の場合とは逆の90度から閾値以内となるような位置にJ4軸54が位置する場合、J5軸55以外の操作軸として、別の軸、例えば、J4軸54を、操作軸としてもよい。
このように、所定の位置関係の条件を満たす状態のとき、所定の位置関係の条件を満たす状態の位置にあることの要因となる軸、または、所定の位置関係の条件を満たす状態の位置を通過させる軸、を含む複数の軸を操作軸に設定する。なお、このような方法を、ロボット制御装置10aの実施方法において適用してもよい。
以上のようにして、操作軸を選定し、操作軸における力の方向に応じて定まる移動方向は、この場合、いずれの軸についても、力の方向と同じ方向とする。ステップ23において、前記操作軸設定部25が設定した操作軸に対して、第二力算出部23が操作力を算出する方法は、前記ロボット制御装置10aの場合の方法と同様とする。
ステップ24において、操作指令部24は、操作軸設定部25が設定した操作軸の位置を、第二力算出部23が算出した操作力と、操作軸設定部25が設定した力の方向に応じて定まる移動方向とに基づいて、前記ロボット制御装置10aの場合の方法と同様に移動させる操作指令を生成する。
本発明の3番目の実施形態においては、ロボット制御装置10における、操作軸設定部25は、さらに、直交座標系上の位置および/または姿勢の移動を行う第一制御モードから、各軸の位置の移動を行う第二制御モードになる直前または第二制御モードになったときの、操作軸とする軸にかかる力の方向と、前記操作軸とする軸の移動方向とをもとに、前記操作軸にかかる力の方向に応じて定まる移動方向を設定することが好ましい。
第一制御モードから第二制御モードに入る前の移動動作を考慮しない場合、操作上の違和感、圧迫感、困難があるだけではなく、ロボット50の先端部58の直座標系上の移動操作によっては、第二制御モードのときの位置と、第一制御モードのときの位置との境界の部分で、制御モードに関する状態が繰返し入替わることにより、不安定な動作をしてしまうことがある。
第一制御モードにおける或る操作軸について、その操作軸にかかる力の方向とロボット50の移動方向とが逆方向である状態から、第二制御モードに切替わる場合を考える。この場合には、第一制御モードから第二制御モードに切替わったとき、力の方向と移動方向の関係を直前の状態と同じようにしなければ、第二制御モードで移動させた途端に、第一制御モードに戻ってしまう可能性がある。
このことに対処するために、第一制御モードから第二制御モードに切替えるときには、第二制御モードに切替わるときやその直前の、移動動作や、操作軸とする軸の移動方向、操作軸とする軸に作用する力の方向をもとに、操作軸の力の方向に応じて定まる移動方向を設定することが好ましい。これによって、第一制御モードの状態から第二制御モードの状態へ移行して通過させるときの操作上の違和感、圧迫感、困難がなく、ロボットを継続的に移動させることが可能となる。
図1に示される構成のロボットでは、直交座標系上のロボット50の先端部58の位置を並進移動させているときに、J3軸53の原点、J5軸55の原点、フランジ部57の原点が直線上およびその近傍に存在する状態になる場合、前述した状況になることがある。
このとき、前述した状態になる前にまたは前述した状態の近傍になったときの、J5軸55の移動方向とJ5軸55にかかる力の方向とをもとに、力の方向に応じて定まる操作軸の移動方向を設定する。
もしくは、前述した状態になる前に、直交座標系上のロボット50の先端部58の移動操作を行っていたときは、移動操作が並進方向である場合には、操作軸の移動方向は力の方向とは逆方向にする。また、移動操作が回転方向の操作である場合には、操作軸の移動方向は力の方向と同じ方向としてもよい。これによって、前述した状態の近傍になる前に行っていた直交座標系上の移動操作と、力の方向に応じた、操作軸の移動方向を同じにして、操作性をよくすることが可能となる。
このようにして、所定の状態や、特異姿勢の近傍に入る前の移動動作を考慮することによって、前述した状態への移行、通過において、操作上の違和感、圧迫感、困難を与えることなく、移動操作を円滑に行うことが可能となる。
本発明の4番目の実施形態においては、ロボット制御装置10における、操作指令部24は、さらに、第二制御モードにおいて、一つ乃至複数の操作軸の内、軸にかかる力の方向とは逆方向に移動させる操作軸の原点の位置を、前記操作軸の動作によってロボット50の先端部58の位置が移動する方向とは逆方向の成分を含む方向に移動させる、または、前記操作軸にかかる力の方向の成分を含む方向に移動させることが好ましい。
このような移動操作の一実施例を述べる。図1に示す構成のロボット50では、直交座標系上のロボット50の先端部58の位置を並進移動させているときに、J3軸53の原点、J5軸55の原点、フランジ部57の原点が直線上およびその近傍に存在する所定の状態の位置になる場合、制御モードを第二制御モードに切替え、操作軸をJ5軸55として、操作軸を、操作軸にかかる力の方向とは逆方向に移動させる。
このとき、J5軸55の軸だけを動かすと、ロボット50の先端部58において、力が作用される部分が、力を作用させた方向とは逆方向に移動する。このため、操作者は操作上の違和感や、圧迫感、困難を感じることがある。これを軽減させるため、J5軸55を移動させる際、同時に、J1軸51、J2軸52、J3軸53を操作軸として移動させる。このとき、J1軸51、J2軸52、J3軸53を移動させることによって、J5軸55の原点の位置を、J5軸55の動作によってロボット50の先端部58が移動する方向とは逆方向の成分を含む方向に移動させる。または、J1軸51、J2軸52、J3軸53を移動させることによって、J5軸55の原点の位置を、J5軸55にかかる力の方向の成分を含む方向に移動させる。これによって、力を作用させた方向にJ5軸55の原点の位置が移動するために、力を作用させた方向とは逆方向にロボット50の先端部58が移動する移動量を小さくすることができる。また、力を作用させた方向と近い方向にロボット50の先端部58を移動させることができる。
ただし、軸にかかる力の方向とは逆方向に移動させる操作軸としたJ5軸55の原点の位置の移動量が大きい場合、操作軸であるJ5軸55の各軸の位置を移動させても、J5軸55の原点の移動に伴って、J5軸55部分を挟むリンクが成す角度の変化量が小さくなり、J3軸53の原点、J5軸55の原点、フランジ部57の原点が直線上およびその近傍に存在する所定の状態の位置、を通過して抜けるのに時間がかかるようになってしまう。場合によっては、前記所定の状態の位置、を通過して抜けることができなくなることもある。このような状況に陥らないように、軸にかかる力の方向とは逆方向に移動させる操作軸としたJ5軸55の原点の位置を移動させる移動量は、J5軸55の軸の回転移動動作によってロボット50の先端部58の位置が移動する分と、さらに、その移動量に所定の係数を値をかけた程度にする。または、J5軸55の動作によってロボット50の先端部58の位置が移動する移動量に、所定の係数をかけた移動量にすることが好ましい。
また、第二制御モードにおいて、操作軸が、力を作用させる方向とは逆方向に移動されることによる、操作上の違和感や、圧迫感、困難を軽減させる、別の実施例を述べる。J2軸52およびJ3軸53の両方の軸の回転中心線は、平行かつ同じ方向を向いているとする。このとき、J2軸52を、作用させる力の方向とは逆方向に移動させる操作軸としたとき、J3軸53を力の方向と同じ方向に移動させる操作軸として動かすようにしてもよい。J3軸53をJ2軸52と同時に移動させることによって、作用させる力の方向とは逆方向に移動させるJ2軸52の原点の位置を、J2軸52の動作によってロボット50の先端部58の位置が移動する方向とは逆方向の成分を含む方向に移動させる、または、J2軸52にかかる力の方向の成分を含む方向に移動させることができる。もしくは、J3軸53を、作用させる力の方向とは逆方向に移動させる操作軸としたとき、J2軸52を力の方向と同じ方向に移動させる操作軸として動かすようにしてもよい。J2軸52をJ3軸53と同時に移動させることによって、作用させる力の方向とは逆方向に移動させるJ3軸53の原点の位置を、J3軸53の動作によってロボット50の先端部58の位置が移動する方向とは逆方向の成分を含む方向に移動させる、または、J3軸53にかかる力の方向の成分を含む方向に移動させることができる。これによって、ロボット50の先端部58を力の方向とは逆方向に移動させる量を小さく、または、ロボット50の先端部58を力の方向と同じ方向に移動させることができる。このため、操作上の違和感や、圧迫感、困難を軽減させることができる。以上、前述したようにすることによって、第二制御モードで、操作軸を移動させるときの操作性を向上させることが可能となる。
ところで、図22Aから図22Dはロボット50の部分拡大図である。これら図面においては、操作者60がロボット50の先端部58に力F1を矢印方向に作用させて、ロボット50を移動させることを示している。このとき、ロボット50の先端部58は、時計回り方向にJ5軸55回りに回転移動をしている。移動動作の詳細については、以下で述べる。
図22Aにおいては、作用される力に応じて直交座標系上の位置および/または姿勢の移動を行う第一制御モードで、ロボット50の先端部58をJ5軸55回りに回転移動させていることが示されている。このとき、J5軸55回りに回転移動させているので、J5軸55のみが移動している。このような回転移動により、図22Bに示されるように、リンク82(J3軸53およびJ4軸54と、J5軸55とをつなぐリンク)およびリンク83(J5軸55およびJ6軸56からフランジ部57につながるリンク)が直線をなすように互いに接近する。
本発明においては、図22Bにおいて示される状態において、リンク82およびリンク83が直線をなすように近づいたときに、第一制御モードから第二制御モードへの切替えを行っている。この理由は、本発明のロボットにおいてJ5軸55の上記部分が直線に近い場合にはロボット50が特異姿勢近傍になって、第一制御モードでの移動を実行できないためである。
第二制御モードのとき、またはその直前において、操作される軸における第二力算出部23が算出した力と、各軸の移動方向とをもとに、操作軸設定部25は第二制御モードのときの力の方向に応じて定まる移動方向を設定する。図22Aから分かるように、この場合には、J5軸55回りの力のモーメントの向きと、J5軸55の移動方向は同じ向きである。
そして、図22Cに示されるように、リンク82およびリンク83が直線上およびその近傍に存在するときには、第二制御モードのままである。次いで、図22Dに示されるように、回転移動が進んで、リンク82およびリンク83が直線をなさないようになると、第二制御モードから第一制御モードに切替わる。
このように図22Aから図22Dに示される場合においては、操作者60がロボット50の先端部58に力F1を作用させて移動させるときに、第一制御モードから第二制御モードに切替え、再度、第一制御モードに戻している。この動作の間、力F1の方向とJ5軸55の回転移動方向とは同じ方向である。言い換えれば、力F1をかけた方向にJ5軸55は移動するので、第二制御モードの状態を円滑に通過することができる。
なお、図23Aから図23Dには、操作者60がロボット50の先端部58に力F2を矢印方向に作用させて、反時計回り方向にJ5軸55回りに回転移動させることが示されている。この場合、図23Aでは第一制御モード、図23Bおよび図23Cでは第二制御モード、図23Dでは第一制御モードで、移動させる。このような場合にも、図22Aから図22Dに示される場合と同様な効果が得られるのは明らかであろう。
ところで、図24Aから図24Dはロボット50の部分拡大図である。これら図面においては、操作者60がロボット50の先端部58に力F3を矢印方向に作用させて、ロボット50を移動させることを示している。このとき、ロボット50の先端部58は、反時計回り方向にJ5軸55回りに回転移動をしている。移動動作の詳細については、以下で述べる。
図24Aにおいては、作用される力に応じて直交座標系上の位置および/または姿勢の移動を行う第一制御モードで、ロボット50の先端部58を下方向に並進移動させていることが示されている。このとき、図22Aに示される状況とは異なり、ロボット50の先端部58を下方向に並進移動させるようにするため、J5軸55のみならず、ロボット50のJ2軸52、J3軸53などの別の軸も移動している。これはロボット50の先端部58の姿勢を保つことに起因している。このため、図22Aに示される状況とは異なり、J5軸55については、反時計回り方向にJ5軸55回りに移動している。このような並進移動により、図24Bに示されるように、リンク82およびリンク83が直線をなすように互いに接近する。
本発明においては、図24Bにおいて示される状態において、リンク82およびリンク83が直線をなすように近づいたときに、第一制御モードから第二制御モードへの切替えを行っている。その理由は、前述したのと同様である。
第二制御モードのとき、またはその直前において、操作される軸における第二力算出部23が算出した力と、各軸の移動方向とをもとに、操作軸設定部25は第二制御モードのときの力の方向に応じて定まる移動方向を設定する。図24Bから分かるように、この場合には、J5軸55回りの力のモーメントの向きと、J5軸55の移動方向は逆向きである。
そして、図24Cに示されるように、リンク82およびリンク83が直線上およびその近傍に存在するときには、第二制御モードのままである。次いで、図24Dに示されるように、J5軸55の回転移動が進んで、リンク82およびリンク83が直線をなさないようになると、第二制御モードから第一制御モードに切替わる。
このように図24Aから図24Dに示される場合においては、操作者60がロボット50の先端部58に力F3を作用させて移動させるときに、第一制御モードから第二制御モードに切替え、再度、第一制御モードに戻している。この動作の間、J5軸55の回転移動方向は同じであり続けるので、第二制御モードの状態を円滑に通過することができる。なお、第一制御モードから第二制御モードに切替える、図24Bにおいて、力の方向に応じて定まる移動方向として、力F3の方向とJ5軸55の回転移動方向とを同じ方向にして移動させるように設定した場合には、第一制御モードと第二制御モードとがその境界部分で繰返し切替わるようになり、第二制御モードで良好に移動させられない。
また、上記の動作の間、第一制御モードおよび第二制御モードにおいて、J5軸55の回転移動方向は同じ方向であり続けるので、第二制御モードの状態を円滑に通過させて、別の第一制御モードの状態まで移動させられる。
また、図24Aに示す第一制御モードでの移動において、下方向に力をかけて直交座標系上の並進移動をさせるとき、ロボット50の先端部58が力の方向と同じ下方向に移動するので、操作者60は、違和感を感じることはない。下方向に移動させるときに、図24Aの状態から、リンク82およびリンク83が直線をなすように近づく。このとき、力F3の方向と、J5軸55が移動する方向とは、互いに逆になっている。
そして、図24B、図24Cに示す第二制御モードでの移動において、力F3の方向と、逆方向にJ5軸55が移動するようにして、第二制御モードの状態を通過させている。しかしながら、この場合には、J5軸55だけを移動させると、力をかけた方向と逆方向にロボット50の先端部58が移動するので、操作者60は、ロボット50の先端部58から押し返され、持ち上げられるような、違和感、操作のしにくさを感じることがある。
この違和感、操作のしにくさを軽減させるため、J1軸51、J2軸52、J3軸53を用いて、J5軸55の原点の位置を、図24B、図24Cに示される第二制御モードでの移動において、下方向に移動させるのが好ましい。このとき、ロボット50の先端部58の位置が移動する方向は、J5軸55によるロボット50の先端部58の移動量と、J5軸55の原点の位置の移動量によって決まる。また、J5軸55の原点の位置は、J1軸51、J2軸52、J3軸53の移動によって決まる。J5軸55の回転移動によって、ロボット50の先端部58の位置が力の方向とは逆方向に移動する移動量をなるべく減らすように、J1軸51、J2軸52、J3軸53を移動させる。これにより、操作者60がロボット50から押し返される感じを軽減させられる。なお、本実施例に示すロボット50では、J5軸55の原点の位置は、J1軸51、J2軸52、J3軸53の位置によって定まる。このため、J1軸51、J2軸52、J3軸53を、操作軸として前述したように移動させることによって、J5軸55の原点の位置を所望の方向に移動させることが可能となっている。また、ロボット50に示される軸構成では、J1軸51、J2軸52、J3軸53だけを移動させるとすると、それによってJ5軸55の原点が移動し、ロボット50の先端部58も同じ方向に並進移動をする。
このように、図24B、図24Cに示される第二制御モードの状態から図24Dに示される状態に移動させ、第一制御モードに切替えることが望まれる。このとき、図25に示されるように、J1軸51、J2軸52、J3軸53を操作軸として移動させることによって、J5軸55の原点の位置、ロボット50の先端部58の位置を下方向に移動させる移動量が大きいと、J5軸55につながるリンク82の姿勢が変わる。この場合、J5軸55は図示された移動方向に移動するものの、J5軸55を挟んだリンク82とリンク83との成す角度の変化量は小さい。このため、J5軸55を挟んだリンク82とリンク83との成す角度の関係が図24Dに示される状態になるには時間がかかるか、そのような状態に到達しない事態も生じうる。このため、力の方向とは逆方向に移動させる操作軸以外の軸を移動させることによって、J5軸55の原点の位置、ロボット50の先端部58の位置を下方向に移動させる移動量は所定の値以内に抑えることが好ましい。
なお、図26Aから図26Dには、操作者60がロボット50の先端部58に力F4を矢印方向に作用させて、第一制御モードおよび第二制御モードにおいて、J5軸55の回転移動方向を時計回り方向にJ5軸55回りに同じ方向に回転移動させることが示されている。この場合、図26Aに示される状態では第一制御モード、図26Bおよび図26Cでは第二制御モード、図26Dでは第一制御モードで、移動させる。このような場合にも、図24Aから図24Dに示される場合と同様な効果が得られるのは明らかであろう。
本発明の5番目の実施形態においては、ロボット制御装置10における、操作指令部24は、さらに、第一制御モードと第二制御モードとの二つの制御モードにおいて、一方の制御モードから他方の制御モードに切替えるとき、全ての軸を減速停止または速度を所定閾値より小さくした後に切替えるようにすることが好ましい。
これによって、ロボット50を構成する全ての軸を安全速度まで、減速または全ての軸を減速停止させた後に、制御モードを切替えることになる。このため、制御モードの切替えのタイミングを操作者に分かりやすくするとともに、力に応じた操作をより安全に行うことが可能となる。
本発明の6番目の実施形態においては、ロボット制御装置10における、操作指令部24は、さらに、第一制御モードと第二制御モードとの二つの制御モードにおいて、第一制御モードから第二制御モードに切替えるとき、第二制御モードで動作させる軸以外の軸を減速停止させることが好ましい。
これによって、制御モードを第一制御モードから第二制御モードに切替えるとき、他方では動作させない軸のみを減速停止させて、他方の制御モードで操作させる軸を継続して移動させることになる。このため、移動操作を継続的に行わせたり、安全性を保ちながら目的とする位置へ素早く移動させたりすることが可能となり、操作性を向上させることが可能となる。
本発明の7番目の実施形態においては、ロボット制御装置10は、さらに第一制御モードと第二制御モードの内、どちらの制御モードであるかの表示出力を行うともに、第二制御モードのとき、操作軸設定部25が設定する操作軸と、該操作軸にかかる力の方向に応じて定まる移動方向の表示出力を行う表示出力部71を備えることが好ましい。
図20に示されるように、本発明の他の実施形態に係るロボット制御装置10によって制御されるロボット50を具備するロボットシステム11では、ロボット制御装置10の表示出力部71の表示出力をもとに、ロボット50の移動操作に関する各種状態を表示出力する表示装置70が、ロボット制御装置10に接続されていることが好ましい。
また、各種状態の確認を行うときに、操作者60が表示装置70を保持しなくてよいように、表示装置70は、ロボット50上の適当な箇所に、例えば、図21に示されるようにロボット50の先端部58や、また、ロボット50を構成する軸間をつなぐリンク上などに、ディスプレイ、表示灯などとして取付られていてもよい。また、この表示装置70は、入力装置を兼ねた装置であってもよく、各種設定を入力する装置、かつ、ロボット50の移動操作、停止の操作入力を行うことができる装置であってもよい。
図2、図18に示される表示出力部71は、ロボット50を力に応じて移動させる状態であるか、または、教示装置などによって移動させる状態であるか、また、ロボット50を移動させることが可能な状態になっているか否かを表示する。ロボット50を力に応じて移動させることが可能な状態になっているか否かの表示において、力計測部21が正しく力を計測できる状態になっているか、また、操作者がロボット50の先端部58に作用させる正味の力を力計測部21が計測するために、例えば、力センサに取付られた物体の質量や重心などの必要な情報が正しく取得されているか、また、ロボット50の軸を移動させるアクチュエータが動作可能になっているか、などを表示するのが好ましい。
また、ロボット50を力に応じて移動することが可能な状態のとき、また、ロボット50を力に応じて移動させているとき、表示装置70は制御モードが第一制御モードと第二制御モードのどちらの制御モードであるかを出力表示する。また、制御モードが、第二制御モードであるとき、操作軸設定部25によって設定された操作軸、および、操作軸の力の方向に応じて定まる移動方向も表示する。
このとき、図2に示す、ロボット制御装置10aの構成例では、表示出力部71は、さらに、特異姿勢であること、特異姿勢の分類、特異姿勢の近傍にあることの要因となる軸、前記特異姿勢の近傍を通過させる軸などを表示出力する。
また、図18に示す、ロボット制御装置10bの構成例では、表示出力部71は、さらに、所定の軸の位置が所定の位置関係の条件を満たす状態にあること、どのような所定の位置関係の条件を満たした状態であるのか、前記状態の位置にあることの要因となる軸、前記状態の位置を通過させる軸などを表示出力する。これによって、操作性を向上させることが可能となる。
以上、本発明の種々の実施形態および変形例を説明したが、他の実施形態および変形例によっても本発明の意図される作用効果を奏することができることは当業者に自明である。特に、本発明の範囲を逸脱することなく前述した実施形態および変形例の構成要素を削除ないし置換することが可能であるし、公知の部をさらに付加することが可能である。また、本明細書において明示的または暗示的に開示される複数の実施形態の特徴を任意に組合せることによっても本発明を実施できることは当業者に自明である。すなわち、本発明の技術的思想の範囲内で考えられる他の形態についても、本発明の範囲内に含まれる。