<実施形態>
以下、本発明の実施形態について、図面を参照して説明する。
<本実施形態における座標系の座標軸>
まず、本実施形態の説明において用いる各種の座標系の座標軸について説明する。本実施形態の説明において用いる各種の座標系は、X軸と、Y軸と、Z軸と、U軸と、V軸と、W軸の6つの座標軸を有する。
ある座標系のX軸は、当該座標系のY軸及びZ軸と直交しており、当該X軸に沿った方向であるX軸方向の位置(X軸の座標)を示す座標軸である。当該座標系のY軸は、当該座標系のX軸及びZ軸と直交しており、当該Y軸に沿った方向であるY軸方向の位置(Y軸の座標)を示す座標軸である。当該座標系のZ軸は、当該座標系のX軸及びY軸と直交しており、当該Z軸に沿った方向であるZ軸方向の位置(Z軸の座標)を示す座標軸である。当該座標系のU軸は、当該X軸周りの回転角を示す座標軸であり、当該U軸に沿った方向であるU軸方向の位置(当該回転角を示す座標であってU軸の座標)を示す座標軸である。当該座標系のV軸は、当該Y軸周りの回転角を示す座標軸であり、当該V軸に沿った方向であるV軸方向の位置(当該回転角を示す座標であってV軸の座標)を示す座標軸である。当該座標系のW軸は、当該Z軸周りの回転角を示す座標軸であり、当該W軸に沿った方向であるW軸方向の位置(当該回転角を示す座標であってW軸の座標)を示す座標軸である。
なお、以下の説明において、1つ目の座標系である第1座標系の各座標軸と2つ目の座標系である第2座標系の各座標軸とが一致するとは、第1座標系におけるX軸と第2座標系におけるX軸とが一致し、第1座標系におけるY軸と第2座標系におけるY軸とが一致し、第1座標系におけるZ軸と第2座標系におけるZ軸とが一致し、第1座標系におけるU軸と第2座標系におけるU軸とが一致し、第1座標系におけるV軸と第2座標系におけるV軸とが一致し、第1座標系におけるW軸と第2座標系におけるW軸とが一致することを意味する。
以下では、このような6つの座標軸を有する各種の座標系に基づいて、本実施形態に係るロボットシステム1について説明する。
<ロボットシステムの構成>
以下、図1を参照し、ロボットシステム1の構成について説明する。図1は、本実施形態に係るロボットシステム1の構成の一例を示す図である。ロボットシステム1は、ロボット20と、ロボット制御装置30を備える。
ロボット20は、アームAと、アームAを支持する支持台Bを備える単腕ロボットである。単腕ロボットは、この一例におけるアームAのような1本のアーム(腕)を備えるロボットである。なお、ロボット20は、単腕ロボットに代えて、複腕ロボットであってもよい。複腕ロボットは、2本以上のアーム(例えば、2本以上のアームA)を備えるロボットである。なお、複腕ロボットのうち、2本のアームを備えるロボットは、双腕ロボットとも称される。すなわち、ロボット20は、2本のアームを備える双腕ロボットであってもよく、3本以上のアーム(例えば、3本以上のアームA)を備える複腕ロボットであってもよい。また、ロボット20は、スカラロボットや、直角座標ロボット等の他のロボットであってもよい。直角座標ロボットは、例えば、ガントリロボットである。
アームAは、エンドエフェクターEと、マニピュレーターMと、力検出部21を備える。
エンドエフェクターEは、この一例において、物体を把持可能な指部を備えるエンドエフェクターである。なお、エンドエフェクターEは、当該指部を備えるエンドエフェクターに代えて、空気の吸引や磁力、治具等によって物体を持ち上げることが可能なエンドエフェクターや、他のエンドエフェクターであってもよい。
エンドエフェクターEは、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、エンドエフェクターEは、ロボット制御装置30から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB(Universal Serial Bus)等の規格によって行われる。また、エンドエフェクターEは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
マニピュレーターMは、支持台B側からエンドエフェクターE側に向かって順に関節J1、関節J2、関節J3、関節J4、関節J5、関節J6、関節J7と称する図示しない7つの関節を備える。また、当該7つの関節はそれぞれ、図示しないアクチュエーターを備える。すなわち、マニピュレーターMを備えるアームAは、7軸垂直多関節型のアームである。アームAは、支持台Bと、エンドエフェクターEと、マニピュレーターMと、マニピュレーターMが備える7つの関節それぞれのアクチュエーターとによる連携した動作によって7軸の自由度の動作を行う。なお、アームAは、6軸以下の自由度で動作する構成であってもよく、8軸以上の自由度で動作する構成であってもよい。
アームAが7軸の自由度で動作する場合、アームAは、6軸以下の自由度で動作する場合と比較して取り得る姿勢が増える。これによりアームAは、例えば、動作が滑らかになり、更にアームAの周辺に存在する物体との干渉を容易に回避することができる。また、アームAが7軸の自由度で動作する場合、アームAの制御は、アームAが8軸以上の自由度で動作する場合と比較して計算量が少なく容易である。
マニピュレーターMが備える7つの(関節に備えられた)アクチュエーターはそれぞれ、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、当該アクチュエーターは、ロボット制御装置30から取得される制御信号に基づいて、マニピュレーターMを動作させる。また、各アクチュエーターは、エンコーダーを備えている。各エンコーダーは、各エンコーダーが備えられたアクチュエーターの回転角を示す情報をロボット制御装置30に出力する。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。また、マニピュレーターMが備える7つのアクチュエーターのうちの一部又は全部は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
この一例において、ある関節の回転軸は、当該関節の関節座標系のZ軸と一致している。当該関節の回転軸は、当該関節のアクチュエーターの回転軸のことである。当該関節座標系は、当該関節とともに動くように当該関節のアクチュエーターに対応付けられた三次元局所座標系である。すなわち、当該関節の回転角は、当該関節のアクチュエーターに対応付けられた関節座標系におけるW軸方向の位置(座標)によって表される。当該関節の回転角は、当該関節のアクチュエーターの回転軸が回転した角度のことである。
この一例では、関節J1のアクチュエーターには、関節座標系J1Cが対応付けられている。また、関節J2のアクチュエーターには、関節座標系J2Cが対応付けられている。また、関節J3のアクチュエーターには、関節座標系J3Cが対応付けられている。また、関節J4のアクチュエーターには、関節座標系J4Cが対応付けられている。また、関節J5のアクチュエーターには、関節座標系J5Cが対応付けられている。また、関節J6のアクチュエーターには、関節座標系J6Cが対応付けられている。また、関節J7のアクチュエーターには、関節座標系J7Cが対応付けられている。
なお、ある関節の回転軸は、当該関節のアクチュエーターに対応付けられた関節座標系のZ軸と一致していない構成であってもよい。また、この一例におけるアクチュエーターは、1つの回転軸のみを有するアクチュエーターであるが、これに代えて、2つ以上の回転軸を有するアクチュエーターであってもよい。この場合、当該アクチュエーターには、当該2つ以上の回転軸のそれぞれが回転した回転角を表すため、それぞれの回転軸毎に関節座標系が対応付けられる。
力検出部21は、エンドエフェクターEとマニピュレーターMの間に備えられる。力検出部21は、例えば、力センサーである。力検出部21は、ハンドHに加えられた外力を検出する。ハンドHは、エンドエフェクターE、又はエンドエフェクターEにより把持された物体のことである。外力は、力とモーメント(トルク)のうち少なくとも一方のことである。具体的には、力検出部21が検出する力の大きさは、ハンドHに加えられた力の大きさであって、力検出座標系のX軸方向、Y軸方向、Z軸方向のそれぞれに加えられた力の大きさである。また、力検出部21が検出するモーメントの大きさは、ハンドHに加えられたモーメントであって、力検出座標系のU軸方向、V軸方向、W軸方向のそれぞれに加えられたモーメントの大きさである。力検出部21は、検出したこれらの大きさを示す力検出値を含む力検出情報を通信によりロボット制御装置30へ出力する。力検出座標系は、力検出部21とともに動くように力検出部21に対応付けられた三次元局所座標系である。
力検出情報は、ロボット制御装置30によるアームAの力検出情報に基づく制御である力制御に用いられる。力制御は、例えば、インピーダンス制御等のコンプライアントモーション制御のことである。なお、力検出部21は、トルクセンサー等のハンドHに加えられた外力を検出する他のセンサーであってもよい。
力検出部21は、ケーブルによってロボット制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、力検出部21とロボット制御装置30とは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によって接続される構成であってもよい。
ロボット制御装置30は、この一例において、ロボットコントローラーである。ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて各種の制御値を生成する。ロボット制御装置30は、生成した制御値に基づいて、マニピュレーターMの各関節が備えるアクチュエーターを動作させる制御信号を生成する。ロボット制御装置30は、生成した制御信号をロボット20に送信し、当該各アクチュエーターを動作させることによってロボット20を動作させる。ここで、当該制御信号には、エンドエフェクターEを動作させる制御信号も含まれる。ロボット制御装置30は、このようにしてロボット20を動作させ、ロボット20に所定の作業を行わせる。なお、ロボット制御装置30は、ロボット20の外部に設置される構成に代えて、ロボット20に内蔵される構成であってもよい。
<ロボットが行う所定の作業>
以下、ロボット20が行う所定の作業について説明する。
ロボット20は、所定の作業として、エンドエフェクターEにより把持された第1物体O1の第1面M1を、第2物体O2の第2面M2に接面させる作業を行う。
第1物体O1は、例えば、産業用の部品や部材、製品等である。なお、第1物体O1は、これに代えて、産業用と異なる日用品の部品や部材、製品等や、生体等の他の物体であってもよい。図1に示した例では、第1物体O1が直方体形状の物体として表されている。なお、第1物体O1の形状は、直方体形状に代えて、他の形状であってもよい。
第1物体O1の第1面M1は、この一例において、エンドエフェクターEにより把持された第1物体O1の面のうちのエンドエフェクターEの重心から最も離れた面である。なお、第1面M1は、これに代えて、エンドエフェクターEにより把持された第1物体O1の面のうちの、エンドエフェクターEの重心から最も離れた面を除く他の面であってもよい。
図1に示したように、第1物体O1は、エンドエフェクターEに予め把持されている。なお、第1物体O1は、エンドエフェクターEに予め把持されていない構成であってもよい。この場合、所定の作業には、図示しない給材領域に配置された第1物体O1を、ロボット20がエンドエフェクターEにより把持する作業が含まれる。
第2物体O2は、例えば、産業用の部品や部材、製品等である。なお、第2物体O2は、これに代えて、産業用と異なる日用品の部品や部材、製品等や、生体等の他の物体であってもよい。図1に示した例では、第2物体O2が平板状の物体として表されている。なお、第2物体O2の形状は、平板状に代えて、他の形状であってもよい。また、第2物体O2は、作業台TBの上面に予め載置されている。作業台TBは、この一例において、テーブル等の台である。なお、作業台TBは、これに代えて、床面や棚等の第2物体O2を載置可能な面を有する物体であれば、他の物体であってもよい。
第2物体O2の第2面M2は、例えば、第2物体O2の上面である。当該上面は、この一例において、第2物体O2の面のうちの作業台TBと接面している面である下面と反対側の面である。なお、第2面M2は、これに代えて、当該面ではない第2物体O2の他の面であってもよい。以下では、一例として、第2面M2がロボット座標系RCにおけるZ軸に直交する面である場合について説明する。なお、第2面M2は、これに代えて、当該Z軸に直交しない面であってもよい。
<ロボット制御装置が行う処理の概要>
以下、ロボット制御装置30が行う処理の概要について説明する。
ロボット制御装置30は、エンドエフェクターEに予め対応付けられた位置に、エンドエフェクターEとともに動くTCP(Tool Center Point)である制御点Tを設定する。エンドエフェクターEに予め対応付けられた位置は、例えば、エンドエフェクターEにより予め把持された第1物体O1の重心の位置である。なお、エンドエフェクターEに対応付けられた位置は、これに代えて、エンドエフェクターEの重心の位置等の他の位置であってもよく、マニピュレーターMに対応付けられた何らかの位置であってもよい。
制御点Tには、制御点Tの位置を示す情報である制御点位置情報と、制御点Tの姿勢を示す情報である制御点姿勢情報とが対応付けられている。なお、制御点Tには、これらに加えて、他の情報が対応付けられる構成であってもよい。ロボット制御装置30は、制御点位置情報及び制御点姿勢情報を指定(決定)する。ロボット制御装置30は、指定した制御点位置情報及び制御点姿勢情報に基づいて制御値を導出する。
具体的には、ロボット制御装置30は、制御値として、制御位置と、制御姿勢と、制御回転角とを導出する。制御位置は、制御点位置情報が示す位置である。制御姿勢は、制御点姿勢情報が示す位置である。制御回転角は、制御位置及び制御姿勢に制御点Tの位置及び姿勢を一致させた場合において実現するマニピュレーターMの各関節が備えるアクチュエーターの回転角である。ロボット制御装置30は、制御位置及び制御姿勢と、逆運動学とに基づいて、制御回転角を導出する。
ロボット制御装置30は、導出した制御値を含む制御信号を生成する。ロボット制御装置30は、生成した制御信号をロボット20に送信し、マニピュレーターMの各関節が備えるアクチュエーターを動作させ、ロボット制御装置30は、制御位置に制御点Tの位置を一致させるとともに、制御姿勢に制御点Tの姿勢を一致させる。すなわち、ロボット制御装置30は、制御点位置情報及び制御点姿勢情報を指定することにより、ロボット20を動作させる。これにより、ロボット制御装置30は、ロボット20に所定の作業を行わせる。
この一例において、制御点Tの位置は、制御点座標系TCの原点のロボット座標系RCにおける位置によって表される。また、制御点Tの姿勢は、制御点座標系TCの各座標軸のロボット座標系RCにおける方向によって表される。制御点座標系TCは、制御点Tとともに動くように制御点Tに対応付けられた三次元局所座標系である。なお、この一例において、前述の第1物体O1の位置及び姿勢は、制御点Tの位置及び姿勢によって表される。また、この一例において、制御点座標系TCの各座標軸は、前述の力検出座標系の各座標軸と一致している。なお、制御点座標系TCの各座標軸は、力検出座標系の各座標軸と一致しない構成であってもよい。
ロボット制御装置30は、ユーザーから予め入力された制御点設定情報に基づいて制御点Tを設定する。制御点設定情報は、例えば、エンドエフェクターEの重心の位置及び姿勢と制御点Tの位置及び姿勢との相対的な位置及び姿勢を示す情報である。なお、制御点設定情報は、これに代えて、エンドエフェクターEに対応付けられた何らかの位置及び姿勢と制御点Tの位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、マニピュレーターMに対応付けられた何らかの位置及び姿勢と制御点Tの位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、ロボット20の他の部位に対応付けられた何らかの位置及び姿勢と制御点Tの位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよい。
ロボット制御装置30は、位置制御によってロボット20を動作させる。位置制御は、ロボット制御装置30に予め記憶された教示点情報に基づいて、ロボット制御装置30がロボット20を動作させる制御である。具体的には、ロボット制御装置30は、位置制御により、ロボット制御装置30に予め記憶された教示点情報に基づいて制御点Tを移動させる。
教示点情報は、教示点を示す情報である。教示点は、ロボット制御装置30がマニピュレーターMを動作させる際に制御点Tを移動させる目標となる仮想的な点のことである。教示点には、教示点位置情報と、教示点姿勢情報と、教示点識別情報とが対応付けられている。教示点位置情報は、教示点の位置を示す情報である。また、教示点姿勢情報は、教示点の姿勢を示す情報である。教示点識別情報は、教示点を識別する情報である。この一例において、教示点の位置は、教示点に対応付けられた三次元局所座標系である教示点座標系の原点のロボット座標系RCにおける位置によって表される。また、教示点の姿勢は、教示点座標系の各座標軸のロボット座標系RCにおける方向によって表される。
位置制御において、ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、教示点情報が示す1以上の教示点を順に指定する。ロボット制御装置30は、指定した教示点である指定教示点に対応付けられた教示点位置情報を制御点位置情報として指定するとともに、指定教示点に対応付けられた教示点姿勢情報を制御点姿勢情報として指定する。すなわち、位置制御において、ロボット制御装置30は、指定教示点に基づいて制御点位置情報及び制御点姿勢情報を指定する。これにより、ロボット制御装置30は、制御点Tを指定教示点に一致させることができる。なお、この一例において、ある教示点と制御点Tとが一致することは、当該教示点の位置及び姿勢と制御点Tの位置及び姿勢とが一致することを意味する。
また、ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、教示点情報が示す1以上の教示点を順に指定する際、教示点とともに制御点Tを移動させる速さを指定する。これにより、ロボット制御装置30は、制御点Tを指定教示点に一致させる際、指定教示点とともに指定した速さによって制御点Tを動かす。また、ロボット制御装置30は、指定した速さに基づいて予想移動時間を算出する。予想移動時間は、第1教示点から第2教示点まで移動するために要すると予想される時間のことである。第1教示点は、1つ目の教示点であり現在制御点Tが一致している教示点のことである。第2教示点は、2つ目の教示点であり指定教示点である教示点のことである。具体的には、ロボット制御装置30は、第1教示点の位置と第2教示点の位置との間の距離を算出する。ロボット制御装置30は、算出した当該距離と、指定した速さとに基づいて予想移動時間を算出する。
また、ロボット制御装置30は、力制御によってロボット20を動作させる。力制御は、ロボット制御装置30が力検出部21から取得した力検出情報に基づいて、ロボット制御装置30がロボット20を動作させる制御である。具体的には、ロボット制御装置30は、力検出部21から力検出情報を取得する。そして、ロボット制御装置30は、力検出部21から取得された力検出情報に含まれる力検出値が力制御条件を満たしていない場合、制御点Tを移動させる目標となる仮想的な点を、指定教示点から補正教示点に変更(補正)する。補正教示点は、制御点Tが一致した場合において力検出部21から取得される力検出値のそれぞれが所定の力制御条件を満たすと予想される仮想的な点である。力制御条件は、力検出部21から取得される力検出情報に含まれる力検出値についての条件である。以下では、一例として、力制御条件が、力検出部21から取得される力検出情報に含まれる力検出値のそれぞれが0になることである場合について説明する。なお、力制御条件は、これに代えて、他の条件であってもよい。
ロボット制御装置30は、力検出部21から取得した力検出情報に含まれる力検出値と、現在の制御点Tの位置及び姿勢と、位置制御における指定教示点の位置及び姿勢とに基づいて補正教示点の位置及び姿勢を算出する。補正教示点の位置及び姿勢の算出方法については、既知の方法を用いてもよく、これから開発される方法を用いてもよいため、説明を省略する。ロボット制御装置30は、算出した補正教示点の位置を示す補正点教示点位置情報を制御点位置情報として指定するとともに、算出した補正教示点の姿勢を示す補正教示点姿勢情報を制御点姿勢情報として指定する。これにより、ロボット制御装置30は、制御点Tを移動させ、制御点Tを補正教示点に一致させる。なお、この一例において、ある補正教示点と制御点Tとが一致することは、当該補正教示点の位置及び姿勢と制御点Tの位置及び姿勢とが一致することを意味する。
このように、ロボット制御装置30は、力検出部21から取得された力検出情報に含まれる力検出値が力制御条件を満たしていない場合、制御点Tを移動させる目標を力制御によって指定教示点から補正教示点に変更し、変更した補正教示点に制御点Tを一致させる。これにより、ロボット制御装置30は、ハンドHに加えられた外力に応じて制御点Tを移動させることができる。その結果、ロボット制御装置30は、ハンドHを他の物体に干渉させてしまうことにより当該物体を変形させてしまうことを抑制することができる。
ここで、ロボット制御装置30が力制御によって制御点Tを補正教示点に一致させる際、ハンドHに加えられた外力の大きさが意図していた大きさよりも大きいと、制御点Tが意図していない位置及び姿勢へと変化してしまう場合がある。意図していない位置及び姿勢は、例えば、所定の作業をロボット20に行わせる際において、ロボット20が所定の作業を継続することが困難になってしまう位置及び姿勢である。
これを抑制するため、この一例におけるロボット制御装置30は、ロボット20を力制御で動作させる制御値に対し、範囲を指定し、制御値と範囲とに基づく動作をロボット20に行わせる。より具体的には、ロボット制御装置30は、ロボット20を動作させる制御値に対し、座標系に応じた軸毎に閾値を指定し、制御値と指定した当該閾値によって指定される範囲とに基づく動作をロボット20に行わせる。当該軸は、この一例において、座標軸のことである。これにより、ロボット制御装置30は、指定した範囲、すなわち指定した当該閾値に応じた動作をロボット行わせることができる。以下では、ロボット制御装置30が座標系に応じた軸毎に閾値を指定し、制御値と閾値とに基づく動作をロボット20に行わせる処理について詳しく説明する。なお、ある座標系に応じた軸は、X軸と、Y軸と、Z軸と、U軸と、V軸と、W軸とのうちの一部であってもよく、X軸と、Y軸と、Z軸と、U軸と、V軸と、W軸との全部であってもよい。
<ロボット制御装置のハードウェア構成>
以下、図2を参照し、ロボット制御装置30のハードウェア構成について説明する。図2は、ロボット制御装置30のハードウェア構成の一例を示す図である。図2は、ロボット制御装置30のハードウェア構成の一例を示す図である。
ロボット制御装置30は、例えば、CPU(Central Processing Unit)31と、記憶部32と、入力受付部33と、通信部34と、表示部35を備える。また、ロボット制御装置30は、通信部34を介してロボット20と通信を行う。これらの構成要素は、バスBusを介して相互に通信可能に接続されている。
CPU31は、記憶部32に格納された各種プログラムを実行する。
記憶部32は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read−Only Memory)、ROM(Read−Only Memory)、RAM(Random Access Memory)等を含む。なお、記憶部32は、ロボット制御装置30に内蔵されるものに代えて、USB等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部32は、ロボット制御装置30が処理する各種情報や画像、動作プログラムを含む各種のプログラム、教示点情報を格納する。
入力受付部33は、例えば、表示部35と一体に構成されたタッチパネルである。なお、入力受付部33は、キーボードやマウス、タッチパッド、その他の入力装置であってもよい。
通信部34は、例えば、USB等のデジタル入出力ポートやイーサネット(登録商標)ポート等を含んで構成される。
表示部35は、例えば、液晶ディスプレイパネル、あるいは、有機EL(ElectroLuminescence)ディスプレイパネルである。
<ロボット制御装置の機能構成>
以下、図3を参照し、ロボット制御装置30の機能構成について説明する。図3は、ロボット制御装置30の機能構成の一例を示す図である。
ロボット制御装置30は、記憶部32と、制御部36を備える。
制御部36は、ロボット制御装置30の全体を制御する。制御部36は、力検出情報取得部361と、ロボット制御部363を備える。制御部36が備えるこれらの機能部は、例えば、CPU31が、記憶部32に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
力検出情報取得部361は、力検出部21から力検出情報を取得する。
ロボット制御部363は、記憶部32から動作プログラム及び教示点情報を読み出す。ロボット制御部363は、読み出した動作プログラム及び教示点情報に基づいて、位置制御によってロボット20を動作させる。また、ロボット制御部363は、力検出情報取得部361が取得した力検出情報に基づいて、力制御によってロボット20を動作させる。これらにより、ロボット制御部363は、ロボット20に所定の作業を行わせる。
<ロボット制御装置が行う処理の具体例>
以下、ロボット制御装置30が行う処理の具体例について説明する。
この一例におけるロボット制御装置30は、前述の動作プログラムに基づいて、教示点情報が示す1以上の教示点を順に指定する際、ユーザーが所望する座標系と、当該座標系に応じた軸毎の閾値とを指定する。ここで、ロボット制御装置30は、ユーザーが所望する座標系と、当該座標系に応じた各軸のうちの予め決められた一部の軸の閾値とを指定してもよい。また、ロボット制御装置30が当該座標系を指定する際、ロボット制御装置30は、ユーザーが所望する座標系として、指定教示点に対応付けられた教示点座標系と、ロボット座標系RCと、関節J1に対応付けられた関節座標系J1Cと、関節J2に対応付けられた関節座標系J2Cと、関節J3に対応付けられた関節座標系J3Cと、関節J4に対応付けられた関節座標系J4Cと、関節J5に対応付けられた関節座標系J5Cと、関節J6に対応付けられた関節座標系J6Cと、関節J7に対応付けられた関節座標系J7Cとの一部又は全部を動作プログラムに基づいて指定する。
ユーザーが所望する座標系に応じた軸毎の閾値は、この一例において、当該軸毎の上限値及び下限値のことである。当該軸毎の上限値は、当該軸毎の軸方向における位置(座標)の上限値である。また、当該軸毎の下限値は、当該軸毎の軸方向における位置(座標)の下限値である。例えば、当該座標系がロボット座標系RCであり、当該座標系に応じた軸がロボット座標系RCにおけるX軸及びY軸であった場合、当該座標系に応じた軸毎の閾値は、当該X軸の上限値及び下限値と、当該Y軸の上限値及び下限値とのそれぞれである。なお、当該座標系に応じた軸毎の閾値は、当該軸毎の上限値及び下限値に代えて、当該軸毎の上限値と下限値のうちいずれか一方のことであってもよい。
ロボット制御装置30は、ユーザーが所望する座標系と、当該座標系に応じた軸毎の閾値とを指定した後、指定した座標系に応じた制御値の変域を、指定した当該軸毎の閾値に基づいて算出する。当該制御値は、当該座標系が教示点座標系であった場合、制御位置と制御姿勢との少なくとも一方のことである。また、当該制御値は、当該座標系がロボット座標系RCであった場合、制御位置のことである。また、当該制御値は、当該座標系が関節座標系であった場合、7つの制御回転角のうちの一部又は全部のことである。当該制御値の変域は、この一例において、ロボット制御装置30が当該制御値を変化させることが可能な範囲のうちの当該座標系に応じた軸毎の閾値によって指定される(示される)範囲のことである。
前述の変域を算出した後、ロボット制御装置30は、算出した変域と、指定した制御点位置情報及び制御点姿勢情報に基づいて導出した制御値とに基づいてロボット20を動作させる。以下では、算出された変域であって各座標系に応じた制御値の変域と、当該変域に基づくロボット制御装置30の処理との具体例について説明する。
<教示点座標系に応じた制御値の変域の具体例>
以下、図4〜図7を参照し、教示点座標系に応じた制御値の変域の具体例について説明する。以下では、説明の便宜上、ロボット制御装置30が教示点座標系の軸毎に指定する閾値を第1閾値と称して説明する。
まず、図4〜図6を参照し、教示点座標系のX軸、Y軸、Z軸のそれぞれ毎に指定された第1閾値に基づいて算出された変域である第1変域と、第1変域に基づくロボット制御装置30の処理との具体例について説明する。なお、図4〜図6では、説明を簡略化するため、制御点Tがロボット座標系RCにおけるZ軸方向に移動しない場合について説明する。すなわち、図4〜図6に示した教示点は、ロボット座標系RCにおけるZ軸に直交する1つの平面内にすべて含まれている。このため、図4〜図6では、ロボット制御装置30が教示点座標系のZ軸に第1閾値を指定しない場合について説明する。なお、ロボット制御装置30は、指定した座標系の各軸のうちの一部に対して閾値を指定しない場合、当該一部に対する閾値として無限大を指定することにより当該閾値を指定しない構成であってもよい。
図4は、教示点座標系のX軸及びY軸のそれぞれ毎に指定された第1閾値に基づいて算出された仮変域の一例を示す図である。仮変域は、第1変域を算出するために算出される制御値の変域のことである。図4において、教示点P1は、ロボット制御装置30が前回の位置制御によって指定した教示点、又は前回の力制御によって当該教示点を補正した補正教示点である。図4に示した例では、制御点Tは、教示点P1と一致している。教示点P2は、ロボット制御装置30が今回の位置制御によって指定した指定教示点である。ハンドHに外力が加えられない限り、ロボット制御装置30は、制御点Tを移動させ、制御点Tを教示点P2に一致させる。教示点P2には、図4に示したように、教示点座標系P2Cが対応付けられている。教示点座標系P2Cは、ロボット座標系RCにおける教示点P2の位置及び姿勢を表す。また、教示点P3は、ロボット制御装置30が次回の位置制御によって指定する教示点である。
また、図4に示した教示点座標系P2CのX軸の値XC1は、ロボット制御装置30が指定した第1閾値のうちの当該X軸の上限値を示す。また、当該X軸の値XC2は、当該第1閾値のうちの当該X軸の下限値を示す。また、図4に示した教示点座標系P2CのY軸の値YC1は、当該第1閾値のうちの当該Y軸の上限値を示す。また、当該Y軸の値YC2は、当該第1閾値のうちの当該Y軸の下限値を示す。また、変域RA1は、ロボット制御装置30が指定した第1閾値に基づいてロボット制御装置30が算出した仮変域を示す。変域RA1の形状は、図4に示した例では、正方形状である。なお、変域RA1の形状は、これに代えて、ロボット制御装置30が指定した第1閾値それぞれを通過する円形状等のロボット制御装置30が指定した第1閾値に基づく他の形状であってもよい。
ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、次の指定教示点として教示点P2を指定する際、教示点P2とともに、ユーザーが所望する座標系として教示点座標系P2Cを指定し、更に教示点座標系P2CのX軸及びY軸のそれぞれ毎の第1閾値を指定する。当該第1閾値は、図4に示した値XC1、値XC2、値YC1、値YC2のそれぞれのことである。ロボット制御装置30は、指定した当該第1閾値に基づいて、教示点座標系P2Cに応じた制御値の変域RA1を算出する。図4に示した例において、当該制御値は、制御位置及び制御姿勢のうちの制御位置のことある。
ロボット制御装置30は、算出した変域RA1に基づいて第1変域を算出する。具体的には、ロボット制御装置30は、変域RA1に基づいて第1変域を算出する。第1変域は、より具体的には、ロボット座標系RCにおける空間のうちの変域RA1に基づく空間のことである。
図5は、図4に示した変域RA1に基づいてロボット制御装置30が算出した第1変域の一例を示す図である。図5に示した変域RA2は、変域RA1に基づいて算出された第1変域である。ロボット制御装置30は、ロボット制御装置30が制御点Tを移動させる移動軌跡に沿って、教示点P2を変域RA1とともに教示点P1まで移動させた場合に変域RA1が通過する領域として変域RA2を算出する。当該移動軌跡は、ロボット座標系RCにおいて教示点P1から教示点P2まで制御点Tが移動する軌跡である。すなわち、変域RA2の形状は、当該移動軌跡に応じた形状となる。当該移動軌跡は、直線であってもよく、曲線であってもよい。ロボット制御装置30は、当該移動軌跡に沿って教示点P2を変域RA1とともに教示点P1まで移動させた場合に変域RA1が通過する領域を変域RA2として算出する。なお、この一例において、ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて当該移動軌跡を直線又は曲線のいずれかに指定する。
変域RA2を算出した後、ロボット制御装置30は、教示点P1から教示点P2まで制御点Tを移動させている最中においてハンドHに外力が加えられた場合、前述したように補正教示点の位置及び姿勢を算出する。ロボット制御装置30は、算出した当該位置及び姿勢のうちの当該位置(すなわち、制御位置)が変域RA2内に含まれるか否かを判定する。そして、ロボット制御装置30は、当該位置が変域RA2内に含まれるか否かの判定結果に応じた処理を行う。例えば、ロボット制御装置30は、当該位置が変域RA2内に含まれていると判定した場合、指定教示点を補正教示点に変更した後、制御点Tを移動させて補正教示点に制御点Tを一致させる。そして、ロボット制御装置30は、前述の動作プログラムに基づいて次に指定する教示点である教示点P3を指定教示点として指定する。一方、ロボット制御装置30は、当該位置が変域RA2内に含まれていないと判定した場合、所定の処理を行う。所定の処理は、例えば、異常処理である。異常処理は、この一例において、ロボット20の動作を停止させることである。なお、異常処理は、これに代えて、他の処理であってもよい。また、ロボット制御装置30は、異常処理において、位置制御によってロボット20を動作させる処理のみを停止させ、力制御のみによってロボット20を動作させる処理であってもよい。
図6は、変域RA2内に含まれる補正教示点、及び変域RA2内に含まれない補正教示点のそれぞれを例示する図である。図6に示した教示点V1は、変域RA2内に含まれる位置の補正教示点である。また、図6に示した教示点V2は、変域RA2内に含まれない位置の補正教示点である。
ロボット制御装置30が算出した補正教示点の位置が、教示点V1の位置であった場合、ロボット制御装置30は、指定教示点を教示点V1に変更した後、制御点Tを移動させて教示点V1に制御点Tを一致させる。そして、ロボット制御装置30は、前述の動作プログラムに基づいて次に指定する教示点である教示点P3を指定教示点として指定する。一方、ロボット制御装置30が算出した補正教示点の位置が、教示点V2の位置であった場合、ロボット制御装置30は、例えば、所定の処理として異常処理を行う。
なお、異常処理は、ロボット制御装置30が制御点Tを補正教示点に移動させる際において、変域RA2の外側と変域RA2との境界面と、現在の制御点Tの位置から補正教示点の位置までを繋ぐ直線との交点の位置を補正教示点の位置として算出し直す構成等の制御点Tを当該外側へ移動させない構成であってもよい。補正教示点の位置を算出し直す場合、ロボット制御装置30は、算出し直した位置の補正教示点に制御点Tを一致させる。これにより、ロボット制御装置30は、教示点座標系のX軸及びY軸のそれぞれ毎にロボットの動作を制限することができる。なお、ロボット制御装置30が教示点座標系のX軸、Y軸、Z軸のそれぞれ毎に第1閾値を指定した場合、ロボット制御装置30は、教示点座標系のX軸、Y軸、Z軸のそれぞれ毎にロボットの動作を制限することができる。この場合、変域RA1の形状は、例えば、球形状である。
次に、図7を参照し、教示点座標系のU軸、V軸、W軸のそれぞれ毎に指定された第1閾値に基づいて算出された変域である第2変域と、第2変域に基づくロボット制御装置30の処理との具体例について説明する。なお、図7では、説明を簡略化するため、制御点Tがロボット座標系RCにおけるU軸、V軸のそれぞれの方向に回転しない場合について説明する。このため、図7では、ロボット制御装置30が教示点座標系のU軸、V軸のそれぞれに第1閾値を指定しない場合について説明する。
図7は、教示点座標系のW軸に指定された第1閾値に基づいて算出された第2変域の一例を示す図である。なお、図7に示した教示点P1〜教示点P3と制御点Tとの相対的な位置及び姿勢の関係は、図4に示した教示点P1〜教示点P3と制御点Tとの相対的な位置及び姿勢の関係と同様であるため、説明を省略する。また、図7では、一例として、ロボット制御装置30が、ハンドHに加えられた外力に基づいて、制御点Tを移動させる目標を教示点P2から教示点V3に変更した場合について説明する。すなわち、教示点V3は、補正教示点である。また、図7に示した教示点座標系V3Cは、教示点V3に対応付けられた教示点座標系である。教示点座標系V3Cの原点から伸びる補助線HL1は、教示点座標系V3Cの姿勢を明確に示すために描かれている補助線であり、教示点座標系P2CのX軸に平行な直線である。
ここで、この一例において、ある教示点座標系の原点から伸びる直線であって当該教示点座標系のXY平面と平行な直線が延伸する方向は、当該教示点座標系のW軸の位置を表す。以下では、一例として、当該教示点座標系のX軸の負方向から正方向に向かう方向は、当該W軸の原点を表す場合について説明する。なお、当該原点は、これに代えて、他の方向によって表される構成であってもよい。また、当該教示点座標系のZ軸の正方向から負方向に向かって当該教示点座標系を見た場合において、当該教示点座標系の原点を中心として反時計回りに回転する方向は、当該教示点座標系のW軸の正方向である。
ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、次に指定する指定教示点として教示点P2を指定する際、教示点P2とともに、ユーザーが所望する座標系として教示点座標系P2Cを指定し、更に教示点座標系P2CのW軸の第1閾値を指定する。当該第1閾値は、W軸の上限値θ1及び下限値θ2のそれぞれである。ロボット制御装置30は、指定した当該第1閾値に基づいて、上限値θ1と下限値θ2との間の範囲を教示点座標系P2Cに応じた制御値の第2変域として算出する。図7に示した例において、当該制御値は、制御位置及び制御姿勢のうちの制御姿勢のことある。
第2変域を算出した後、ロボット制御装置30は、教示点P1から教示点P2まで制御点Tを移動させている最中においてハンドHに外力が加えられた場合、前述したように補正教示点である教示点V3の位置及び姿勢を算出する。ロボット制御装置30は、算出した当該位置及び姿勢のうちの当該姿勢(すなわち、制御姿勢)と、教示点P2の姿勢との差分を算出する。ロボット制御装置30は、算出した当該差分が第2変域内に含まれるか否かを判定する。
図7に示した例では、当該差分は、補助線HL1と教示点座標系V3CのX軸との間の角度θ3である。図7には、当該差分が第2変域内に含まれているか否かを明確にするため、補助線HL2及び補助線HL3が描かれている。補助線HL2は、教示点座標系V3Cの原点から伸びる補助線であり、当該原点を中心として補助線HL1を上限値θ1だけ反時計回りに回転させた場合に一致する補助線である。補助線HL3は、教示点座標系V3Cの原点から伸びる補助線であり、当該原点を中心として補助線HL1を下限値θ2だけ時計回りに回転させた場合に一致する補助線である。すなわち、図7に示した例において、当該差分は、第2変域内に含まれている。
ロボット制御装置30は、当該差分が第2変域内に含まれるか否かの判定結果に応じた処理を行う。例えば、ロボット制御装置30は、当該差分が第2変域内に含まれていると判定した場合、指定教示点を補正教示点である教示点V3に変更した後、制御点Tを移動させて教示点V3に制御点Tを一致させる。そして、ロボット制御装置30は、前述の動作プログラムに基づいて次に指定する教示点である教示点P3を指定教示点として指定する。一方、ロボット制御装置30は、当該差分が第2変域内に含まれていないと判定した場合、例えば、所定の処理として異常処理を行う。
なお、異常処理は、ロボット制御装置30が制御点Tを補正教示点に移動させる際において、当該差分が第1閾値として指定したW軸の上限値を超えていた場合、当該差分が当該上限値となるように補正教示点の姿勢を算出し直し、当該差分が第1閾値として指定したW軸の下限値を超えていた場合、当該差分が当該下限値となるように補正教示点の姿勢を算出し直す構成等の第1閾値が表わす第2変域内に当該差分を必ず含ませる構成であってもよい。補正教示点の姿勢を算出し直す場合、ロボット制御装置30は、算出し直した姿勢の補正教示点に制御点Tを一致させる。
図4〜図7において説明したように、ロボット制御装置30は、教示点座標系に応じた軸毎に第1閾値を指定し、指定した第1閾値に基づいてロボット20を動作させる。これにより、ロボット制御装置30は、教示点座標系の軸毎に応じた動作をロボット20に行わせることができる。なお、図4〜図7では、X軸、Y軸のそれぞれに対する第1閾値と、W軸に対する第1閾値とがロボット制御装置30によって別々に指定される例について説明したが、第1閾値は、ロボット制御装置30によってX軸、Y軸、Z軸、U軸、V軸、W軸のうちの一部又は全部のそれぞれに対して指定される構成であってもよい。
なお、ロボット制御装置30は、教示点座標系に応じた軸毎に第1閾値を指定する際、現在の制御点Tの姿勢から補正教示点の姿勢まで制御点Tを回転させる回転軸であって教示点座標系における回転軸に第1閾値を指定する構成であってもよい。この場合、ロボット制御装置30は、算出した補正教示点の姿勢に現在の制御点Tの姿勢を回転させる回転軸を算出する。そして、ロボット制御装置30は、補正教示点の姿勢と、現在の制御点Tの姿勢との差分が、指定した第1閾値に基づく第2変域に含まれているか否かを判定する。
<ロボット座標系に応じた制御値の変域の具体例>
以下、図8及び図9を参照し、ロボット座標系に応じた制御値の変域である第3変域の具体例について説明する。以下では、説明の便宜上、ロボット制御装置30がロボット座標系の軸毎に指定する閾値を第3閾値と称して説明する。
まず、図8を参照し、ロボット座標系RCのX軸、Y軸、Z軸のそれぞれ毎に指定された第3閾値に基づいて算出された第3変域と、第3変域に基づくロボット制御装置30の処理との具体例について説明する。なお、図8では、説明を簡略化するため、制御点Tがロボット座標系RCにおけるZ軸方向に移動しない場合について説明する。すなわち、図8に示した教示点は、ロボット座標系RCにおけるZ軸に直交する1つの平面内にすべて含まれている。このため、図8では、ロボット制御装置30がロボット座標系RCのZ軸に第3閾値を指定しない場合について説明する。
図8は、ロボット座標系RCのX軸及びY軸のそれぞれ毎に指定された第3閾値に基づいて算出された第3変域の一例を示す図である。なお、図8に示した教示点P1〜教示点P3と制御点Tとの相対的な位置及び姿勢の関係は、図4に示した教示点P1〜教示点P3と制御点Tとの相対的な位置及び姿勢の関係と同様であるため、説明を省略する。
また、図8に示したロボット座標系RCのX軸の値XC3は、ロボット制御装置30が指定した第3閾値のうちの当該X軸の上限値を示す。また、当該X軸の値XC4は、当該第3閾値のうちの当該X軸の下限値を示す。また、図8に示したロボット座標系RCのY軸の値YC3は、当該第3閾値のうちの当該Y軸の上限値を示す。また、当該Y軸の値YC4は、当該第3閾値のうちの当該Y軸の下限値を示す。また、変域RA3は、ロボット制御装置30が指定した第3閾値に基づいてロボット制御装置30が算出した第3変域を示す。変域RA3の形状は、図8に示した例では、長方形状である。なお、変域RA3の形状は、これに代えて、ロボット制御装置30が指定した第3閾値それぞれを通過する円形状等のロボット制御装置30が指定した第3閾値に基づく他の形状であってもよい。
ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、次の指定教示点として教示点P2を指定する際、教示点P2とともに、ユーザーが所望する座標系としてロボット座標系RCを指定し、更にロボット座標系RCのX軸及びY軸のそれぞれ毎の第3閾値を指定する。当該第3閾値は、図8に示した値XC3、値XC4、値YC3、値YC4のそれぞれのことである。ロボット制御装置30は、指定した当該第3閾値に基づいて、ロボット座標系RCに応じた制御値の変域RA3を算出する。図8に示した例において、当該制御値は、制御位置及び制御姿勢のうちの制御位置でのことある。
変域RA3を算出した後、ロボット制御装置30は、教示点P1から教示点P2まで制御点Tを移動させている最中においてハンドHに外力が加えられた場合、前述したように補正教示点の位置及び姿勢を算出する。ロボット制御装置30は、算出した当該位置及び姿勢のうちの当該位置(すなわち、制御位置)が変域RA3内に含まれるか否かを判定する。そして、ロボット制御装置30は、当該位置が変域RA3内に含まれるか否かの判定結果に応じた処理を行う。例えば、ロボット制御装置30は、当該位置が変域RA3内に含まれていると判定した場合、指定教示点を補正教示点に変更した後、制御点Tを移動させて補正教示点に制御点Tを一致させる。そして、ロボット制御装置30は、前述の動作プログラムに基づいて次に指定する教示点である教示点P3を指定教示点として指定する。一方、ロボット制御装置30は、当該位置が変域RA3内に含まれていないと判定した場合、例えば、所定の処理として異常処理を行う。
なお、異常処理は、ロボット制御装置30が制御点Tを補正教示点に移動させる際において、変域RA3の外側と変域RA3との境界面と、現在の制御点Tの位置から補正教示点の位置までを繋ぐ直線との交点の位置を補正教示点の位置として算出し直す構成等の制御点Tを当該外側へ移動させない構成であってもよい。補正教示点の位置を算出し直す場合、ロボット制御装置30は、算出し直した位置の補正教示点に制御点Tを一致させる。このように、ロボット制御装置30は、ロボット座標系RCのX軸及びY軸のそれぞれ毎にロボットの動作を制限することができる。なお、ロボット制御装置30がロボット座標系RCのX軸、Y軸、Z軸のそれぞれ毎に第3閾値を指定した場合、ロボット制御装置30は、ロボット座標系RCのX軸、Y軸、Z軸のそれぞれ毎にロボットの動作を制限することができる。この場合、変域RA3の形状は、例えば、球形状である。
また、ロボット制御装置30は、図8に示した例において、ロボット座標系RCにおけるX軸、Y軸のそれぞれ毎に第3閾値を指定したが、これに限られず、ロボット座標系RCにおけるX軸、Y軸、Z軸、U軸、V軸、W軸のうちの一部又は全部のそれぞれに第3閾値を指定する構成であってもよい。特に、ロボット座標系RCにおけるU軸、V軸、W軸のうちの一部又は全部のそれぞれに対して第3閾値を指定した場合、ロボット制御装置30は、ロボット座標系RCの原点を中心とした立体角であって第3閾値によって表される立体角の少なくとも一部の領域(範囲)内にロボット20の動作を制限することができる。
図9は、図5〜図6において説明した変域RA2の一例と、図8において説明した変域RA3の一例とをロボット座標系RCにおいて重ねて示した図である。ロボット制御装置30は、教示点座標系P2CにおけるX軸及びY軸のそれぞれ毎に第1閾値を指定し、ロボット座標系RCにおけるX軸及びY軸のそれぞれ毎に第3閾値を指定した場合、変域RA2と変域RA3とが重なる重畳領域に応じた処理を行う。
具体的には、ロボット制御装置30は、教示点P1から教示点P2まで制御点Tを移動させている最中においてハンドHに外力が加えられた場合、前述したように補正教示点の位置及び姿勢を算出する。ロボット制御装置30は、算出した当該位置及び姿勢のうちの当該位置(すなわち、制御位置)が重畳領域内に含まれるか否かを判定する。そして、ロボット制御装置30は、当該位置が重畳領域内に含まれるか否かの判定結果に応じた処理を行う。例えば、ロボット制御装置30は、当該位置が重畳領域内に含まれていると判定した場合、指定教示点を補正教示点に変更した後、制御点Tを移動させて補正教示点に制御点Tを一致させる。そして、ロボット制御装置30は、前述の動作プログラムに基づいて次の教示点である教示点P3を指定教示点として指定する。一方、ロボット制御装置30は、当該位置が重畳領域内に含まれていないと判定した場合、例えば、所定の処理として異常処理を行う。
このように、ロボット制御装置30は、ロボット座標系RCに応じた軸毎に第3閾値を指定し、指定した第3閾値に基づいてロボット20を動作させる。これにより、ロボット制御装置30は、ロボット座標系RCの軸毎に応じた動作をロボット20に行わせることができる。
<関節座標系に応じた制御値の変域の具体例>
以下、図10〜図12を参照し、関節座標系に応じた制御値の変域である第4変域の具体例について説明する。以下では、説明の便宜上、ロボット制御装置30が関節座標系に応じた軸毎に指定する閾値を第2閾値と称して説明する。以下では、一例として、ロボット制御装置30が関節J4に対応付けられた関節座標系J4CのW軸に第2閾値を指定する場合について説明する。
図10は、関節座標系J4CのW軸に指定された第2閾値に基づいて算出された第4変域の一例を示す図である。図10には、図4に示した教示点P2に制御点Tを一致させた場合における関節J4の状態が示されている。図10に示した関節座標系J4Cは、前述したように関節J4に対応付けられた関節座標系である。図10に示した例では、関節J4の回転角は、回転角θ10である。関節座標系J4Cの原点から伸びる補助線HL4は、関節座標系J4Cにおいて関節J4の回転角θ10を明確に示すために描かれている補助線である。
ここで、この一例において、関節座標系J4Cの原点から伸びる直線であって関節座標系J4CのXY平面と平行な直線が延伸する方向は、関節座標系J4CのW軸の位置を表す。以下では、一例として、関節座標系J4CのX軸の負方向から正方向に向かう方向は、当該W軸の原点を表す場合について説明する。なお、当該原点は、これに代えて、他の方向によって表される構成であってもよい。また、関節座標系J4CのZ軸の正方向から負方向に向かって関節座標系J4Cを見た場合において、関節座標系J4Cの原点を中心として反時計回りに回転する方向は、関節座標系J4CのW軸の正方向である。
ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、次に指定する指定教示点として図4に示した教示点P2を指定する際、教示点P2とともに、ユーザーが所望する座標系として関節座標系J4Cを指定し、更に関節座標系J4CのW軸の第2閾値を指定する。当該第2閾値は、関節J4の回転角からの相対的な回転角である。具体的には、当該第2閾値は、関節J4の回転角から関節J4の回転角が増加する回転方向への回転角の上限値θ20、及び関節J4の回転角から関節J4の回転角が減少する回転方向への回転角の下限値θ30のそれぞれである。ロボット制御装置30は、指定した当該第2閾値に基づいて、上限値θ20と下限値θ30との間の範囲を関節座標系J4Cに応じた制御値の第4変域として算出する。なお、図10に示した例において、当該制御値は、制御回転角のことである。
第4変域を算出した後、ロボット制御装置30は、教示点P1から教示点P2まで制御点Tを移動させている最中においてハンドHに外力が加えられた場合、前述したように補正教示点である教示点V3の位置及び姿勢を算出する。ロボット制御装置30は、算出した当該位置及び姿勢に制御点Tの位置及び姿勢を一致させた場合における関節J4の回転角(すなわち、制御回転角)と、教示点P2の位置及び姿勢に制御点Tの位置及び姿勢を一致させた場合における関節J4の回転角とを算出する。そして、ロボット制御装置30は、これら2つの回転角の差分を算出する。ロボット制御装置30は、算出した当該差分が第4変域内に含まれるか否かを判定する。
図10に示した例では、第4変域は、制御点Tが教示点P2に一致した場合における関節J4の回転角から当該関節J4の回転角が増加する回転方向への回転角の上限値θ20と、当該関節J4の回転角から当該関節J4の回転角が減少する回転方向への回転角の下限値θ30との間の範囲(領域)である。図10には、当該差分が第4変域内に含まれているか否かを明確にするため、補助線HL5及び補助線HL6が描かれている。補助線HL5は、関節座標系J4Cの原点から伸びる補助線であり、当該原点を中心として補助線HL4を上限値θ20だけ反時計回りに回転させた場合に一致する補助線である。補助線HL6は、関節座標系J4Cの原点から伸びる補助線であり、当該原点を中心として補助線HL4を下限値θ30だけ時計回りに回転させた場合に一致する補助線である。
ロボット制御装置30は、当該差分が第4変域内に含まれるか否かの判定結果に応じた処理を行う。例えば、ロボット制御装置30は、当該差分が第4変域内に含まれていると判定した場合、指定教示点を補正教示点である教示点V3に変更した後、制御点Tを移動させて教示点V3に制御点Tを一致させる。そして、ロボット制御装置30は、前述の動作プログラムに基づいて次に指定する教示点である教示点P3を指定教示点として指定する。一方、ロボット制御装置30は、当該差分が第4変域内に含まれていないと判定した場合、例えば、所定の処理として異常処理を行う。
なお、異常処理は、ロボット制御装置30が制御点Tを補正教示点に移動させる際において、当該差分が第2閾値として指定したW軸の上限値を超えていた場合、当該差分が当該上限値となるようにマニピュレーターMが備える各関節の回転角を算出し直し、当該差分が第2閾値として指定したW軸の下限値を超えていた場合、当該差分が当該下限値となるように当該回転角を算出し直す構成等の第2閾値が表わす変域内に当該差分を必ず含ませる構成であってもよい。当該回転角を算出し直す場合、ロボット制御装置30は、制御点Tの位置及び姿勢が補正教示点の位置及び姿勢と一致することを条件として当該回転角を算出し直す。そして、ロボット制御装置30は、算出し直した当該回転角を実現させるようにマニピュレーターMの各関節を回転させ、制御点Tを補正教示点と一致させる。
図11は、関節J4の回転角の時間的な変化の一例を示す図である。図11に示したグラフの縦軸は、関節J4の回転角を示す。当該グラフの横軸は、時間を示す。図11に示した曲線L1は、ロボット制御装置30が制御点Tを図4に示した教示点P1、教示点P2、教示点P3の順に一致させた場合における関節J4の回転角の時間的な変化を示す曲線である。また、図11に示した曲線ULは、曲線L1から回転角が相対的に上限値θ20だけ離れた曲線である。すなわち、曲線ULは、当該場合における関節J4の回転角の時間的な変化とともに変化する上限値の時間的な変化を示す。当該上限値は、当該回転角からの相対的な回転角として表されている上限値θ20を、関節座標系J4CのW軸の原点からの回転角として表した値である。また、図11に示した曲線DLは、曲線L1から回転角が相対的に下限値θ30だけ離れた曲線である。すなわち、曲線DLは、当該場合における関節J4の回転角の時間的な変化とともに変化する下限値の時間的な変化を示す。当該下限値は、当該回転角からの相対的な回転角として表されている下限値θ30を、関節座標系J4CのW軸の原点からの回転角として表した値である。
また、図11に示したタイミングt1は、ロボット制御装置30が制御点Tを教示点P1に一致させたタイミングである。また、図11に示したタイミングt2は、ロボット制御装置30が教示点P1から教示点P2まで制御点Tを移動させるために要すると予想される予想移動時間が経過したタイミングである。
また、図11に示した曲線L2は、ロボット制御装置30が力制御によって制御点Tを教示点P1から補正教示点に一致させる際、当該補正教示点と制御点Tとが一致する場合におけるマニピュレーターMの関節J4の回転角の時間的な変化を示す。図11に示したように、曲線L2が曲線ULを下から上へと交差した場合、当該回転角は、ロボット制御装置30が第2閾値に基づいて算出した変域内に含まれなくなる。この場合、ロボット制御装置30は、例えば、所定の処理として異常処理を行う。
図12は、関節座標系J4CのW軸に指定された第2閾値に基づいて算出された第4変域の他の例を示す図である。図12には、図4に示した教示点P2に制御点Tを一致させた場合における関節J4の状態が示されている。
ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、次の指定教示点として図4に示した教示点P2を指定する際、教示点P2とともに、ユーザーが所望する座標系として関節座標系J4Cを指定し、更に関節座標系J4CのW軸の第2閾値を指定する。当該第2閾値は、関節J4の回転角の上限値θ40及び下限値θ50のそれぞれである。ロボット制御装置30は、指定した当該第2閾値に基づいて、上限値θ40と下限値θ50との間の範囲を関節座標系J4Cに応じた制御値の第4変域として算出する。なお、この一例において、当該制御値は、制御回転角のことである。
第4変域を算出した後、ロボット制御装置30は、教示点P1から教示点P2まで制御点Tを移動させている最中においてハンドHに外力が加えられた場合、前述したように補正教示点である教示点V3の位置及び姿勢を算出する。ロボット制御装置30は、算出した当該位置及び姿勢に制御点Tの位置及び姿勢を一致させた場合における関節J4の回転角(すなわち、制御回転角)を算出する。そして、ロボット制御装置30は、算出した当該回転角が第4変域内に含まれるか否かを判定する。ロボット制御装置30は、当該回転角が第4変域内に含まれるか否かの判定結果に応じた処理を行う。例えば、ロボット制御装置30は、当該回転角が第4変域内に含まれていると判定した場合、指定教示点を補正教示点である教示点V3に変更した後、制御点Tを移動させて教示点V3に制御点Tを一致させる。そして、ロボット制御装置30は、前述の動作プログラムに基づいて次の教示点である教示点P3を指定教示点として指定する。一方、ロボット制御装置30は、当該回転角が当該変域内に含まれていないと判定した場合、例えば、所定の処理として異常処理を行う。
なお、異常処理は、ロボット制御装置30が制御点Tを補正教示点に移動させる際において、当該回転角が第2閾値として指定したW軸の上限値を超えていた場合、当該回転角が当該上限値となるようにマニピュレーターMが備える各関節の回転角を算出し直し、当該回転角が第2閾値として指定したW軸の下限値を超えていた場合、当該差分が当該下限値となるように当該各関節の回転角を算出し直す構成等の第2閾値が表わす変域内においてのみ当該各関節を回転させる構成であってもよい。当該回転角を算出し直す場合、ロボット制御装置30は、制御点Tの位置及び姿勢が補正教示点の位置及び姿勢と一致することを条件として当該回転角を算出し直す。そして、ロボット制御装置30は、算出し直した当該回転角を実現させるようにマニピュレーターMの各関節を回転させ、制御点Tを補正教示点と一致させる。
また、この一例において説明した関節座標系についての処理は、ユーザーが所望する関節毎のインピーダンス制御に対して適用することも可能である。当該インピーダンス制御は、ハンドHに加えられた外力に応じて、ユーザーが所望する関節を回転させる制御のことである。関節のインピーダンス制御は、制御点Tの位置及び姿勢から関節の回転角を把握することが困難である。このため、当該処理は、例えば、関節のインピーダンス制御において関節の回転を制限するために有効である。すなわち、ロボット制御装置30が当該処理を行うことにより、ユーザーは、容易に関節の回転を制限することができる。
<ロボット制御装置が行う処理の流れ>
以下、図13を参照し、ロボット制御装置30が行う処理の流れについて説明する。図13は、ロボット制御装置30が行う処理の流れの一例を示すフローチャートである。ロボット制御装置30は、図13に示したステップS110〜ステップS190の処理を、ロボット制御装置30が順に指定する教示点に含まれるすべての組み合わせであって順番が連続する2つの教示点である第1教示点及び第2教示点の組み合わせのそれぞれ毎に行う。また、図13に示したフローチャートでは、ステップS110の処理が開始される前に、制御点Tが第1教示点と一致している場合について説明する。
ロボット制御部363は、ユーザーにより予め入力された動作プログラムに基づいて、指定教示点として第2教示点を指定するとともに、制御点Tを移動させる速さと、ユーザーが所望する座標系と、当該座標系に応じた軸毎の閾値とを指定する(ステップS110)。そして、ロボット制御部363は、指定した当該座標系及び当該閾値に基づいて、前述の変域(第1変域〜第4変域)のうちの一部又は全部を算出する。次に、ロボット制御部363は、第1教示点の位置と第2教示点の位置との間の距離を算出する。そして、ロボット制御部363は、算出した当該距離と、ステップS110において指定した速さとに基づいて予想移動時間を算出する(ステップS120)。
次に、ロボット制御部363は、位置制御により制御点Tの第2教示点への移動を開始する(ステップS130)。次に、ロボット制御部363は、力検出部21から力検出情報を取得する。そして、ロボット制御部363は、取得した力検出情報に含まれる検出値に基づいて、ハンドHに外力が加えられたか否かを判定する(ステップS140)。
ハンドHに外力が加えられていないと判定した場合(ステップS140−NO)、ロボット制御部363は、ステップS130において制御点Tの移動を開始してから現在までの間に、ステップS120において算出した予想移動時間が経過したか否かを判定する(ステップS180)。予想移動時間が経過したと判定した場合(ステップS180−YES)、ロボット制御部363は、処理を終了する。一方、予想移動時間が経過していないと判定した場合(ステップS180−NO)、ロボット制御部363は。ステップS140に遷移し、再びハンドHに外力が加えられたか否かを判定する。
ハンドHに外力が加えられていると判定した場合(ステップS140−YES)、ロボット制御部363は、ステップS140において取得した力検出情報に含まれる力検出値に基づいて、補正教示点の位置及び姿勢を算出する(ステップS150)。次に、ロボット制御部363は、ステップS150において算出した補正教示点の位置及び姿勢を含む制御値が所定条件を満たすか否かを判定する(ステップS160)。所定条件は、この一例において、以下に示した1)〜4)の4つの条件のうちの少なくとも1つを満たすことである。
1)ユーザーが所望する座標系として教示点座標系がステップS110において指定され、教示点座標系のX軸、Y軸、Z軸のうちの少なくとも1つに第1閾値がステップS110において指定された場合において、制御位置がステップS110において算出された第1変域内に含まれないこと。
2)ユーザーが所望する座標系として教示点座標系がステップS110において指定され、教示点座標系のU軸、V軸、W軸のうちの少なくとも1つに第1閾値がステップS110において指定された場合において、制御姿勢がステップS110において算出された第2変域内に含まれないこと。
3)ユーザーが所望する座標系としてロボット座標系RCがステップS110において指定され、ロボット座標系RCのX軸、Y軸、Z軸、U軸、V軸、W軸のうちの少なくとも1つに第3閾値がステップS110において指定された場合において、制御位置がステップS110において算出された第3変域内に含まれないこと。
4)ユーザーが所望する座標系としてある関節座標系がステップS110において指定され、当該関節座標系のW軸に第2閾値がステップS110において指定された場合において、当該関節座標系に対応付けられた関節を回転させる制御値である制御回転角と、第2教示点の位置及び姿勢に制御点Tの位置及び姿勢を一致させた場合における当該関節の回転角との差分が、ステップS110において算出された第4変域内に含まれないこと。なお、当該制御回転角は、ステップS150において算出された位置及び姿勢に制御点Tの位置及び姿勢を一致させた場合における回転角である。
制御値が所定条件を満たすと判定した場合(ステップS160−YES)、ロボット制御部363は、例えば、所定の処理として異常処理を実行し(ステップS190)、処理を終了する。一方、制御値が所定条件を満たしていないと判定した場合(ステップS160−NO)、ロボット制御部363は、制御点Tを移動させ、ステップS150において算出した補正教示点の位置及び姿勢に制御点Tの位置及び姿勢を一致させる(ステップS170)。そして、ロボット制御部363は、ステップS180に遷移し、ステップS130において制御点Tの移動を開始してから現在までの間に、ステップS120において算出した予想移動時間が経過したか否かを判定する。
このように、ロボット制御装置30は、ロボット20を動作させる制御値に対し、座標系に応じた軸毎に閾値を指定し、制御値と閾値とに基づく動作をロボット20に行わせる。これにより、ロボット制御装置30は、座標系の軸毎に応じた動作をロボット行わせることができる。
<ロボット制御部の判定方法の他の例>
以下、図14を参照し、図13に示したステップS160の処理においてロボット制御部363が行う判定方法の他の例について説明する。以下では、一例として、関節J4の回転角が所定条件を満たすか否かの判定方法を例に挙げて説明する。なお、ロボット制御部363は、ステップS160において他の制御値に対しても、以下において説明する判定方法と同様の判定方法によって当該制御値が所定条件を満たすか否かを判定する構成であってもよく、他の判定方法によって当該制御値が所定条件を満たすか否かを判定する構成であってもよい。
図14は、関節J4の回転角の時間的な変化の他の例を示す図である。図14に示したグラフの縦軸は、関節J4の回転角を示す。当該グラフの横軸は、時間を示す。なお、図14に示した曲線L1、曲線UL、曲線DL、タイミングt1、タイミングt2のそれぞれは、図11に示した曲線L1、曲線UL、曲線DL、タイミングt1、タイミングt2のそれぞれと同様であるため、説明を省略する。
また、図14に示した曲線L3は、ロボット制御装置30が力制御によって制御点Tを教示点P1から補正教示点に一致させる際、当該補正教示点と制御点Tとが一致する場合における関節J4の回転角の時間的な変化を示す。図14に示したように、当該回転角は、タイミングt3からタイミングt4までの間である時間ts1において、ロボット制御装置30が第2閾値に基づいて算出した第4変域内に含まれなくなる。また、当該回転角は、タイミングt1からタイミングt2までの間である時間ts2において、当該第4変域内に含まれなくなる。
ロボット制御部363は、当該回転角が当該第4変域に所定時間tsc以上含まれていない場合、当該回転角が当該第4変域内に含まれていないと判定する。一方、当該回転角が当該第4変域に所定時間tsc未満だけ含まれていない場合、当該回転角が当該第4変域内に含まれていると判定する。図14に示した例では、タイミングt1から所定時間tscが経過したタイミングは、タイミングt5である。すなわち、ロボット制御部363は、タイミングt5において、当該回転角が当該第4変域内に含まれていないと判定する。一方、時間ts1は、所定時間tsc未満の時間である。すなわち、ロボット制御部363は、タイミングt4において、当該回転角が当該第4変域内に含まれていると判定する。
このように、ロボット制御装置30は、制御値が閾値を所定時間以上超え続けた場合、制御値と閾値とに基づく動作をロボット20に行わせる。これにより、ロボット制御装置30は、制御値が閾値を所定時間超え続ける前と後とのそれぞれにおいて異なる動作をロボット20に行わせることができる。
<所定の作業においてロボット制御装置が制御値と変域に基づいて行う処理の具体例>
以下、図15を参照し、所定の作業においてロボット制御装置30が制御値と変域に基づいて行う処理の具体例について説明する。
図15は、所定の作業において、ロボット20が第1物体O1の第1面M1を第2物体O2の第2面M2に接面させる前のタイミングにおけるハンドHと第2物体O2との相対的な位置関係の一例を示す図である。また、図15は、ロボット座標系RCのZ軸の正方向から負方向に向かってハンドHと第2物体O2を見た場合の側面図である。図15に示した例では、当該場合において、第2物体O2の上面のうちの半分よりもロボット座標系RCのY軸の正方向側の部分には、物体MTが配置されている。物体MTは、当該場合において斜面を有する三角柱形状の物体である。当該斜面は、当該正方向側から当該半分の位置に向かって高さが低くなる斜面である。
教示点P10は、現在制御点Tが一致している教示点である。教示点P11は、ロボット制御装置30が指定する指定教示点である。ロボット制御装置30は、位置制御によって制御点Tを移動させ、教示点P10に一致した制御点Tを教示点P11に一致させる。しかし、図15に示した例では、第1物体O1の第1面M1と第2物体O2の第2面M2との間の空間には、物体MTの斜面の一部が入り込んでいる。すなわち、ロボット制御装置30が制御点Tを教示点P11に一致させようと制御点Tを移動させた場合、第1物体O1は、物体MTと接触し、物体MTから外力が加えられる。
ロボット制御装置30は、物体MTから第1物体O1に加えられた外力に基づいた力制御によって補正教示点を算出する。そして、ロボット制御装置30は、指定教示点を算出した補正教示点に変更した後、制御点Tを移動させて補正教示点に一致させる。図15に示した教示点VP11は、物体MTから第1物体O1に加えられた外力に基づいてロボット制御装置30が算出した補正教示点である。また、輪郭VO11は、ロボット制御装置30が力制御によって当該補正教示点に制御点Tを一致させた場合の第1物体O1の輪郭である。
このようにロボット制御装置30がロボット20を動作させる際、例えば、ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、第1変域RA4を算出する。なお、図15に示した例では、変域が第1変域RA4のみである場合について説明するが、これに限られず、変域が第1変域〜第4変域のうちの一部又は全部であってもよい。
ロボット制御装置30は、力制御によって制御点Tを移動させる際、図15に示した第1変域RA4内に制御点Tの位置が含まれていると判定している限り、制御点Tを教示点VP11に向かって移動させ続ける。そして、ロボット制御装置30は、力検出部21から取得した力検出情報に含まれる力検出値のうちの力検出座標系のZ軸の正方向に加わる力が所定値以上となり、当該力検出座標系のX軸方向及びY軸方向に加わる力が0となり、当該力検出座標系のU軸方向、V軸方向、W軸方向に加わるモーメントが0となる場合に、所定の作業が完了したと判定し、制御点Tの移動を停止する。一方、ロボット制御装置30は、図15に示した第1変域RA4内に制御点Tの位置が含まれていないと判定した場合、例えば、所定の処理として異常処理を行う。
また、図15に示した例では、教示点P10から第1変域RAの端うちのロボット座標系RCにおけるY軸の正方向側の端までの距離は、教示点P10から第1変域RA4の端うちのロボット座標系RCにおけるY軸の負方向側の端までの距離よりも短い。これは、図15に示した例において、第1物体O1が物体MTと異なる他の要因からも外力を加えられた場合において、ロボット制御装置30が制御点Tを当該正方向側に移動させないように動作プログラムをユーザーが入力した結果である。すなわち、ロボット制御装置30は、当該動作プログラムに基づいて、指定した座標系及び指定した第1閾値に基づいて第1変域RA4を算出する。
以下、図16を参照し、所定の作業においてロボット制御装置30が制御値と変域に基づいて行う処理の具体例について説明する。
図16は、所定の作業において、ロボット20が第1物体O1の第1面M1を第2物体O2の第2面M2に接面させる前のタイミングにおけるハンドHと第2物体O2との相対的な位置関係の他の例を示す図である。また、図16は、ロボット座標系RCのZ軸の正方向から負方向に向かってハンドHと第2物体O2を見た場合の側面図である。
教示点P12は、現在制御点Tが一致している教示点である。教示点座標系P12Cは、教示点P12に対応付けられた教示点座標系である。教示点P13は、ロボット制御装置30が指定する指定教示点である。ロボット制御装置30は、位置制御によって制御点Tを移動させ、教示点P12に一致した制御点Tを教示点P13に一致させる。しかし、図16に示した例では、第1物体O1の第1面M1と第2物体O2の第2面M2とが平行ではなく傾いている。すなわち、制御点Tの姿勢が、図15に示した制御点Tの姿勢に対して、制御点座標系TCのU軸方向に傾いている。これにより、ロボット制御装置30が制御点Tを教示点P13に一致させようと制御点Tを移動させた場合、第1物体O1の一部は、第2物体O2の第2面M2と接触し、第2面M2から外力が加えられる。
ロボット制御装置30は、第2面M2から当該一部に加えられた外力に基づいた力制御によって補正教示点を算出する。そして、ロボット制御装置30は、指定教示点を算出した補正教示点に変更した後、制御点Tを移動させて補正教示点に一致させる。図16に示した教示点VP11は、第2面M2から当該一部に加えられた外力に基づいてロボット制御装置30が算出した補正教示点である。また、輪郭VO12は、ロボット制御装置30が力制御によって当該補正教示点に制御点Tを一致させた場合の第1物体O1の輪郭である。
このようにロボット制御装置30がロボット20を動作させる際、例えば、ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、指定した座標系である教示点座標系P12CのU軸に第1閾値を指定する。当該第1閾値は、当該U軸の上限値θ70及び下限値θ80である。ロボット制御装置30は、指定した当該第1閾値に基づいて、教示点座標系P12Cに応じた第2変域を算出する。当該第2変域は、この一例において、ロボット座標系RCのZ軸の正方向から負方向に向かってハンドHと第2物体O2を見た場合に、補助線HL70と補助線HL80との間の範囲(領域)である。補助線HL70は、当該場合において、教示点座標系P12CのX軸を中心として教示点座標系P12Cを反時計回りに上限値θ70だけ回転させた際に教示点座標系P12CのZ軸と一致する直線である。補助線80は、教示点座標系P12CのX軸を中心として教示点座標系P12Cを時計回りに下限値θ80だけ回転させた際に教示点座標系P12CのZ軸と一致する直線である。なお、図16に示した例では、変域が当該第2変域のみである場合について説明するが、これに限られず、変域が第1変域〜第4変域のうちの一部又は全部であってもよい。
当該第2変域を算出した後、ロボット制御装置30は、教示点P12から教示点P13まで制御点Tを移動させている最中においてハンドHに外力が加えられた場合、前述したように補正教示点である教示点V13の位置及び姿勢を算出する。ロボット制御装置30は、算出した当該位置及び姿勢のうちの当該姿勢と、教示点P12の姿勢との差分を算出する。そして、ロボット制御装置30は、これら2つの回転角の差分を算出する。ロボット制御装置30は、算出した当該差分が当該第2変域内に含まれるか否かを判定する。
ロボット制御装置30は、力制御によって制御点Tを移動させる際、当該第2変域内に当該差分が含まれていると判定している限り、制御点Tを教示点V13に向かって移動させ続ける。そして、ロボット制御装置30は、力検出部21から取得した力検出情報に含まれる力検出値のうちの力検出座標系のZ軸の正方向に加わる力が所定値以上となり、当該力検出座標系のX軸方向及びY軸方向に加わる力が0となり、当該力検出座標系のU軸方向、V軸方向、W軸方向に加わるモーメントが0となる場合に、所定の作業が完了したと判定し、制御点Tの移動を停止する。一方、ロボット制御装置30は、当該第2変域内に当該差分が含まれていないと判定した場合、例えば、所定の処理として異常処理を行う。
また、図16に示した例では、上限値θ70の絶対値よりも下限値θ80の絶対値の方が大きい。これは、図16に示した例において、第1物体O1が物体MTと異なる他の要因からも外力を加えられた場合において、第1物体O1の第1面M1と第2物体O2の第2面M2との間の角度が大きくなる方向にロボット制御装置30が制御点Tを回転させないように動作プログラムをユーザーが入力した結果である。
<第1変域の形状の他の例>
以下、図17を参照し、第1変域の形状の他の例について説明する。前述したように、ロボット制御装置30が第1変域を算出するために用いる仮変域の形状は、図17に示した仮変域RA10のように、ロボット制御装置30が指定した第1閾値それぞれを通過する円形状であってもよい。図17は、円形状の仮変域に基づいて算出された第1変域の一例を示す図である。
図17に示した教示点P15は、現在制御点Tが一致している教示点である。教示点P16は、ロボット制御装置30が指定する指定教示点である。ロボット制御装置30は、ユーザーにより予め入力された動作プログラムに基づいて、教示点P16に対応付けられた教示点座標系P16CのX軸及びY軸に対して、教示点座標系P16CのXY平面において仮変域が円形状となるように第1閾値を指定する。例えば、ロボット制御装置30は、第1閾値を指定する際、当該X軸の第1閾値と当該Y軸の第1閾値との間の拘束条件を指定する。当該拘束条件は、当該X軸の第1閾値が指定する範囲内に含まれる当該X軸の位置と、当該Y軸の第1閾値が指定する範囲内に含まれる当該Y軸の位置とが円の方程式の解であることである。なお、仮変域が円形状と異なる形状である場合、当該拘束条件は、他の条件であってもよい。ロボット制御装置30は、算出した仮変域RA10に基づいて、上記において説明した方法によって第1変域RA11を算出する。
このように、ロボット制御装置30は、指定した第1閾値に対して拘束条件を指定することにより、指定した拘束条件に応じた形状の仮閾値を算出することができる。なお、図17では、ロボット制御装置30が第1閾値に対して拘束条件を指定する場合について説明したが、これに限られず、第3閾値に対して拘束条件を指定する構成であってもよい。また、図17では、ロボット制御装置30が教示点座標系P16CのX軸及びY軸に対して第1閾値を指定する構成について説明したが、これに代えて、ロボット制御装置30が教示点座標系P16CのX軸、Y軸、Z軸、U軸、V軸、W軸の一部又は全部に対して第1閾値を指定する構成であってもよい。
<実施形態の変形例>
上記の説明において、所定の処理は、異常処理であった。しかし、所定の処理は、異常処理に代えて、他の処理であってもよい。例えば、所定の処理は、ロボット制御装置30が所定の作業が完了したと判定し、所定の作業と異なる作業であって次の作業をロボット20に行わせる処理等の他の処理であってもよい。これにより、ロボット制御装置30は、異常処理と異なる処理による動作をロボットに行わせることができる。
また、上記の説明における異常処理は、ロボット制御装置30が表示部35にエラーを表示させる処理であってもよく、ロボット制御装置30が図示しないスピーカーから音を鳴らす処理であってもよく、ロボット制御装置30が動作を終了する処理であってもよく、他の処理であってもよい。
また、ロボット制御装置30は、表示部35に図示しないGUI(Graphical User Interface)を表示し、各座標系に応じた軸毎の閾値のユーザーによる入力をGUIから受け付ける構成であってもよい。
また、ロボット制御装置30は、動作プログラム及び教示点情報に基づいて算出される軌跡であって位置制御による制御点Tの移動の軌跡を、表示部35に表示させる構成であってもよい。この場合、当該軌跡の表示は、三次元表示であってもよく、二次元表示であってもよい。
また、表示部35は、ヘッドマウントディスプレイであってもよい。
また、ロボット制御装置30は、位置制御によって制御点Tを移動させる目標をビジュアルサーボ等のように撮像部によって撮像された撮像画像によって補正する際、補正された目標における制御点Tの位置及び姿勢を、上記において説明した変域によって変更又は制限する構成であってもよい。
以上のように、ロボット制御装置30は、ロボット20を力制御で動作させる制御値に対し、範囲を指定し、制御値と範囲とに基づく動作をロボット20に行わせる。これにより、ロボット制御装置30は、指定した範囲に応じた動作をロボット20に行わせることができる。
また、ロボット制御装置30は、ロボット20を動作させる制御値に対し、座標系に応じた軸毎に閾値を指定し、制御値と指定した当該閾値によって指定される範囲とに基づく動作をロボット20に行わせる。これにより、ロボット制御装置30は、座標系の軸毎に応じた動作をロボット20に行わせることができる。
また、ロボット制御装置30は、教示点座標系に応じた軸毎に第1閾値を閾値として指定する。これにより、ロボット制御装置30は、教示点座標系の軸毎に応じた動作をロボット20行わせることができる。
また、ロボット制御装置30は、教示点毎に異なる第1閾値を指定する。これにより、ロボット制御装置30は、制御値と、教示点毎に異なる第1閾値とに基づく動作をロボット20に行わせることができる。また、ロボット制御装置30は、所定の作業の内容が変化した場合であっても、容易に第1閾値を変更することができる。
また、ロボット制御装置30は、教示点の順番の順に前記教示点を線で繋いだ軌跡に応じた形状の空間であってロボット座標系RC内の空間を規定する第1閾値に基づく動作をロボット20に行わせる。これにより、ロボット制御装置30は、制御値と、第1閾値によって規定されるロボット座標系RC内の空間の内側と外側とのそれぞれにおいて異なる動作をロボット20に行わせることができる。
また、ロボット制御装置30は、関節座標系に応じた軸毎に第2閾値を閾値として指定する。これにより、ロボット制御装置30は、関節座標系の軸毎に応じた動作をロボット20に行わせることができる。その結果、ロボット制御装置30は、第2閾値に基づいて、ユーザーが所望する関節の回転を変更又は制限することができる。関節の回転角は、制御点Tの位置及び姿勢から把握することが困難である。このため、ロボット制御装置30のこのような処理は、ユーザーが所望する関節の回転を制限する際に有効な処理となる。
また、ロボット制御装置30は、ロボット座標系RCに応じた軸毎に第3閾値を前記閾値として指定する。これにより、ロボット制御装置30は、ロボット座標系RCの軸毎に応じた動作をロボットに行わせることができる。
また、ロボット制御装置30は、座標系に応じた軸のうちの予め決められた一部の軸に閾値を指定する。これにより、ロボット制御装置30は、座標系の軸のうちの予め決められた一部の軸に応じた動作をロボット20に行わせることができる。その結果、ロボット制御装置30は、例えば、ある座標系の各座標軸方向のうちのユーザーが所望する方向のみについて、ロボット20の動作を変更又は制限することができる。また、ロボット制御装置30は、例えば、ある座標系のある座標軸の正方向及び負方向のいずれか一方又は両方について、ロボット20の動作を変更又は制限することができる。
また、ロボット制御装置30は、制御値が閾値を所定時間以上超え続けた場合、所定の処理を行う。これにより、ロボット制御装置30は、制御値が閾値を所定時間超え続ける前と後とのそれぞれにおいて異なる動作をロボット20に行わせることができる。その結果、ロボット制御装置30は、例えば、外乱によって一時的に制御値が閾値を超えてしまうことを許容し、意図していない動作によって制御値が閾値を超えてしまうことを監視することができる。
また、ロボット制御装置30は、制御値が閾値を所定時間以上超え続けた場合、異常処理と異なる処理を行う。これにより、ロボット制御装置30は、制御値が閾値を所定時間超え続ける前と後とのそれぞれにおいて、異常処理と異なる処理による動作をロボット20に行わせることができる。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
また、以上に説明した装置(例えば、ロボット制御装置30)における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD(Compact Disk)−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。