<実施形態>
以下、本発明の実施形態について、図面を参照して説明する。
<ロボットシステムの構成>
まず、ロボットシステム1の構成について説明する。
図1は、本実施形態に係るロボットシステム1の構成の一例を示す図である。ロボットシステム1は、ロボット20と、制御装置25を備える。制御装置25は、ロボット制御装置30と、ロボット制御装置30と別体の教示装置50とによって構成される。なお、制御装置25は、これに代えて、ロボット制御装置30と教示装置50とが一体となって構成されてもよい。この場合、制御装置25は、以下で説明するロボット制御装置30及び教示装置50の機能を有する。
ロボット20は、アームAと、アームAを支持する支持台Bを備える単腕ロボットである。単腕ロボットは、この一例におけるアームAのような1本のアーム(腕)を備えるロボットである。なお、ロボット20は、単腕ロボットに代えて、複腕ロボットであってもよい。複腕ロボットは、2本以上のアーム(例えば、2本以上のアームA)を備えるロボットである。なお、複腕ロボットのうち、2本のアームを備えるロボットは、双腕ロボットとも称される。すなわち、ロボット20は、2本のアームを備える双腕ロボットであってもよく、3本以上のアーム(例えば、3本以上のアームA)を備える複腕ロボットであってもよい。また、ロボット20は、スカラロボットや、直角座標ロボット等の他のロボットであってもよい。直角座標ロボットは、例えば、ガントリロボットである。
アームAは、エンドエフェクターEと、マニピュレーターMと、力検出部21を備える。
エンドエフェクターEは、この一例において、物体を把持可能な指部を備えるエンドエフェクターである。なお、エンドエフェクターEは、当該指部を備えるエンドエフェクターに代えて、空気の吸引や磁力、治具等によって物体を持ち上げることが可能なエンドエフェクターや、他のエンドエフェクターであってもよい。
マニピュレーターMは、5個のアーム部材であるリンクL1〜リンクL5と、6つの関節である関節J1〜関節J6を備える。支持台BとリンクL1は、関節J1によって連結される。リンクL1とリンクL2は、関節J2によって連結される。リンクL2とリンクL3は、関節J3によって連結される。リンクL3とリンクL4は、関節J4によって連結される。リンクL4とリンクL5は、関節J5によって連結される。リンクL5とエンドエフェクターEは、関節J6によって連結される。すなわち、マニピュレーターMを備えるアームAは、6軸垂直多関節型のアームである。なお、アームAは、5軸以下の自由度で動作する構成であってもよく、7軸以上の自由度で動作する構成であってもよい。
関節J2、関節J3、関節J5のそれぞれは、曲げ関節であり、関節J1、関節J4、関節J6のそれぞれは、ねじり関節である。前述したように、関節J6には、ワーク(例えば、図1に示したワークW)に対して把持や加工等を行うためのエンドエフェクターEが連結(装着)される。以下では、先端の関節J6の回転軸上の所定位置をTCP(Tool Center Point)と表す。TCPの位置は、エンドエフェクターEの位置の基準となる。また、関節J6には、力検出部21が備えられている。
力検出部21は、例えば、6軸の力センサーである。力検出部21は、互いに直交する3個の検出軸上の力の大きさと、当該3個の検出軸周りのトルクの大きさとを検出する。当該力は、ハンドHDに作用する力のことである。ハンドHDは、エンドエフェクターE又はエンドエフェクターEに把持された物体のことである。また、当該トルクは、ハンドHDに作用するトルクのことである。なお、力検出部21は、力センサーに代えて、トルクセンサー等のハンドHDに作用する力及びトルクを検出可能な他のセンサーであってもよい。
図1において、ワークWを把持するエンドエフェクターEは、関節J6の先端に装着されている。以下では、ロボット20が設置された空間を規定する座標系をロボット座標系RCと表す。ロボット座標系RCは、水平面上において互いに直交するX軸とY軸と、鉛直上向きを正方向とするZ軸とによって規定される三次元直交座標系である。以下では、説明の便宜上、単にX軸と称した場合、ロボット座標系RCにおけるX軸のことを表し、単にY軸と称した場合、ロボット座標系RCにおけるY軸のことを表し、単にZ軸と称した場合、ロボット座標系RCにおけるZ軸のことを表すものとする。また、ロボット座標系RCにおけるX軸周りの回転角を回転角RXによって表し、ロボット座標系RCにおけるY軸周りの回転角を回転角RYによって表し、ロボット座標系RCにおけるZ軸周りの回転角を回転角RZによって表す。従って、ロボット座標系RCにおける任意の位置は、X軸方向の位置DXと、Y軸方向の位置DYと、Z軸方向の位置DZとにより表現できる。また、ロボット座標系RCにおける任意の姿勢は、回転角RX、回転角RY、回転角RZにより表現できる。以下では、説明の便宜上、位置と表記した場合、姿勢も意味し得ることとする。また、力と表記した場合、回転角RX、回転角RY、回転角RZそれぞれの回転方向に作用するトルクも意味し得ることとする。ロボット制御装置30は、アームAを駆動することによって、ロボット座標系RCにおいてTCPの位置を制御する。
エンドエフェクターEと、マニピュレーターMと、力検出部21のそれぞれは、ケーブルによってロボット制御装置30と通信可能に接続されている。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB(Universal Serial Bus)等の規格によって行われる。また、マニピュレーターMが備える7つのアクチュエーターのうちの一部又は全部は、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
図2は、ロボット20と、ロボット制御装置30と、教示装置50とのそれぞれのハードウェア構成及び機能構成の一例を示す図である。ロボット制御装置30には、ロボット20の制御を行うための制御プログラムがインストールされている。ロボット制御装置30は、プロセッサーやRAM(Random Access Memory)やROM(Read−Only Memory)を備え、これらのハードウェア資源が制御プログラムと協働する。これにより、ロボット制御装置30は、制御部として機能する。
ロボット制御装置30は、例えば、ユーザーによる教示作業によって設定された目標位置及び目標力がTCPにおいて実現されるようにアームAを制御する。目標力とは、力検出部21が検出すべき力である。図1に示したSは、ロボット座標系RCを規定する軸の方向(X軸方向、Y軸方向、Z軸方向、回転角RXの方向、回転角RYの方向、回転角RZの方向)のうちのいずれか1つの方向を表す。例えば、Sが表わす方向がX軸方向の場合、ロボット座標系RCにおいて設定された目標位置のX軸方向成分がSt=Xtと表記され、目標力のX軸方向成分がfSt=fXtと表記される。また、Sは、Sが表わす方向の位置も表す。
ロボット20は、図1に示した構成の他に、駆動部としてモーターM1〜モーターM6と、エンコーダーE1〜エンコーダーE6とを備える。モーターM1とエンコーダーE1は、関節J1に備えられている。エンコーダーE1は、モーターM1の駆動位置を検出する。モーターM2とエンコーダーE2は、関節J2に備えられている。エンコーダーE2は、モーターM2の駆動位置を検出する。モーターM3とエンコーダーE3は、関節J3に備えられている。エンコーダーE3は、モーターM3の駆動位置を検出する。モーターM4とエンコーダーE4は、関節J4に備えられている。エンコーダーE4は、モーターM4の駆動位置を検出する。モーターM5とエンコーダーE5は、関節J5に備えられている。エンコーダーE5は、モーターM5の駆動位置を検出する。モーターM6とエンコーダーE6は、関節J6に備えられている。エンコーダーE6は、モーターM6の駆動位置を検出する。アームAを制御することは、モーターM1〜モーターM6を制御することを意味する。
ロボット制御装置30は、モーターM1〜モーターM6の駆動位置の組み合わせと、ロボット座標系RCにおけるTCPの位置との対応関係Uを記憶している。また、ロボット制御装置30は、ロボット20が行う作業の工程毎に目標位置Stと目標力fStとを記憶している。目標位置Stと目標力fStは、後述する教示作業によって設定される。
ロボット制御装置30は、モーターM1〜モーターM6の駆動位置Daを取得すると、対応関係Uに基づいて駆動位置Daをロボット座標系RCにおけるTCPの位置S(位置DX、位置DY、位置DZ、回転角RX、回転角RY、回転角RZ)に変換する。ロボット制御装置30は、TCPの位置Sと,力検出部21の出力値とに基づいて、力検出部21に作用している力fSをロボット座標系RCにおいて特定する。当該出力値は、力検出部21が検出した力fSを示す値である。なお、力検出部21は、独自の座標系において力fSを検出する。しかし、力検出部21とTCPとの相対位置及び相対方向とが既知のデータとして記憶されているため、ロボット制御装置30は、ロボット座標系RCにおける力fSを特定できる。ロボット制御装置30は、力fSに対して重力補償を行う。重力補償とは、力fSから重力成分を除去することである。また、重力補償を行った力fsは、ハンドHDに作用している重力以外の力と見做すことができる。
ロボット制御装置30は、目標力fStと力fSとをコンプライアントモーション制御の運動方程式に代入することにより、力由来補正量ΔSを特定する。以下では、一例として、コンプライアントモーション制御がインピーダンス制御である場合について説明する。すなわち、ロボット制御装置30は、目標力fStと力fSとをインピーダンス制御の運動方程式に代入することにより、力由来補正量ΔSを特定する。以下に示した式(1)は、インピーダンス制御の運動方程式である。
上記の式(1)の左辺は、TCPの位置Sの二階微分値に仮想慣性パラメーターmを乗算した第1項と、TCPの位置Sの一階微分値に仮想粘性パラメーターdを乗算した第2項と、TCPの位置Sに仮想弾性パラメーターkを乗算した第3項とによって構成される。上記の式(1)の右辺は、目標力fStから力fSを減算した力偏差ΔfS(t)によって構成される。ここで、力偏差ΔfS(t)の引数であるtは、時間を表す。上記の式(1)における微分とは、時間による微分を意味する。ここで、目標力fStは、ロボット20が行う工程において、一定値として設定される構成であってもよく、時間に依存する関数によって導出される値として設定される構成であってもよい。
インピーダンス制御とは、仮想の機械的インピーダンスをモーターM1〜M6によって実現する制御である。仮想慣性パラメーターmは、TCPが仮想的に有する質量を意味する。仮想粘性パラメーターdは、TCPが仮想的に受ける粘性抵抗を意味する。仮想弾性パラメーターkは、TCPが仮想的に受ける弾性力のバネ定数を意味する。各パラメーターm、d、kは、方向毎に異なる値に設定される構成であってもよく、方向にかかわらず共通の値に設定される構成であってもよい。力由来補正量ΔSとは、TCPが機械的インピーダンスを受けた場合に、目標力fStと力fSとの差である力偏差ΔfS(t)を解消する(0にする)ために、TCPが移動すべき位置Sまでの変位(並進距離又は回転角)を意味する。ロボット制御装置30は、目標位置Stに、力由来補正量ΔSを加算することにより、インピーダンス制御を考慮した補正目標位置(St+ΔS)を特定する。
そして、ロボット制御装置30は、対応関係Uに基づいて、ロボット座標系RCにおける6つの方向(X軸方向、Y軸方向、Z軸方向、回転角RXの方向、回転角RYの方向、回転角RZの方向)それぞれの補正目標位置(St+ΔS)を、モーターM1〜モーターM6それぞれの目標の駆動位置である目標駆動位置Dtに変換する。ロボット制御装置30は、6つのモーター(モーターM1〜モーターM6のそれぞれ)毎に、モーターの目標駆動位置Dtから現在のモーターの駆動位置Daを減算することにより、駆動位置偏差De(=Dt−Da)を算出する。ロボット制御装置30は、駆動位置偏差Deに位置制御ゲインKpを乗算した値と、駆動位置Daの時間微分値である駆動速度との差である駆動速度偏差に、速度制御ゲインKvを乗算した値を加算して制御量Dcを算出する。なお、位置制御ゲインKp及び速度制御ゲインKvは、比例成分だけではなく微分成分や積分成分にかかる制御ゲインを含んでもよい。制御量Dcは、モーターM1〜モーターM6のそれぞれについて特定される。
以上のような構成により、ロボット制御装置30は、目標位置Stと目標力fStとに基づいてアームAを制御することができる。
教示装置50には、ロボット制御装置30に目標位置Stと目標力fStとを教示するための教示プログラムがインストールされている。教示装置50は、プロセッサー、RAM、ROM等を備え、これらのハードウェア資源が教示プログラムと協働する。これにより、図2に示したように、教示装置50は、機能構成として表示制御部51と、ロボット制御部52と、受付部53と、設定部54と、取得部55を備える。また、教示装置50は、図示しない入力装置と、図示しない出力装置を備える。当該入力装置は、例えば、マウス、キーボード、タッチパネル等であり、ユーザーからの指示を受け付ける。当該出力装置は、例えば、ディスプレイやスピーカー等であり、ユーザーに各種の情報を出力する。当該出力装置は、表示部の一例である。以下では、表示制御部51と、ロボット制御部52と、受付部53と、設定部54と、取得部55とが行う処理の詳細をフローチャートとともに説明する。
図3は、教示処理の流れの一例を示すフローチャートである。ここで、図3に示したフローチャートでは、すでに目標位置Stを教示するための処理が行われた後の処理について説明する。すなわち、当該フローチャートの処理は、目標力fStとともにインピーダンス制御のパラメーター(仮想弾性パラメーターk、仮想粘性パラメーターd、仮想慣性パラメーターm)を教示するための処理である。なお、目標位置Stは、公知の教示手法によって教示することができ、例えば、ユーザーがアームAを手で移動させることにより目標位置Stが教示されてもよく、教示装置50によってロボット座標系RCにおける座標を指定することにより目標位置Stが教示されてもよい。
ロボット制御部52は、動作開始位置までアームAを移動させる(ステップS100)。すなわち、ロボット制御部52は、TCPが動作開始位置となるようなアームAの制御をロボット制御装置30に実行させる。動作開始位置とは、力検出部21に対して力が作用するようにアームAを制御する直前のTCPの位置や、加工具を把持したエンドエフェクターEによって他の物体を加工する直前の位置等である。ただし、図3に示したフローチャートの処理においては、目標力fStとインピーダンス制御のパラメーターとを設定できればよく、動作開始位置は、必ずしも実際の作業において力検出部21に対して力が作用するようにアームAを制御する直前の位置でなくてもよい。
次に、表示制御部51は、GUI(Graphical User Interface)であるメイン画面を図示しない出力装置に表示する(ステップS110)。ここで、図4を参照し、メイン画面について説明する。図4は、メイン画面の一例を示す図である。図4に示したメイン画面には、入力窓N1〜入力窓N4と、スライダーバーHと、グラフG1及びグラフG2と、ボタンB1及びボタンB2とが含まれている。受付部53は、図示しない入力装置によってメイン画面上において行われた操作を受け付ける。
ステップS110において表示制御部51がメイン画面を図示しない出力装置に表示した後、受付部53は、目標力fStの方向と、目標力fStの大きさとを受け付ける(ステップS120)。メイン画面には、目標力fStの方向を受け付けるための入力窓N1と、目標力fStの大きさを受け付けるための入力窓N2とが含まれている。受付部53は、入力窓N1において、ロボット座標系RCにおける6つの方向のうちのいずれかの方向の入力を受け付ける。また、受付部53は、入力窓N2において、任意の数値の入力を受け付ける。
次に、受付部53は、仮想弾性パラメーターkを受け付ける(ステップS130)。メイン画面には、仮想弾性パラメーターkを受け付けるための入力窓N3が含まれている。受付部53は、入力窓N3において、任意の数値の入力を受け付ける。仮想弾性パラメーターkは、設定値の一例である。ユーザーが仮想弾性パラメーターkを小さく設定するほど、ハンドHDは、他の物体と接触する際、当該物体を変形させ難くなる。すなわち、ユーザーが仮想弾性パラメーターkを小さく設定するほど、ハンドHDは、他の物体と柔らかく接触する。一方、ユーザーが仮想弾性パラメーターkを大きく設定するほど、ハンドHDは、他の物体と接触する際、当該物体を変形させ易くなる。すなわち、ユーザーが仮想弾性パラメーターkを大きく設定するほど、ハンドHDは、他の物体と硬く接触する。
入力窓N3において仮想弾性パラメーターkを受け付けた後、表示制御部51は、受け付けた仮想弾性パラメーターkに対応する1以上の記憶波形VをグラフG2において表示する(ステップS140)。グラフG2の横軸は、時刻を示し、グラフG2の縦軸は、力検出部21が検出した力を示す。記憶波形Vは、力検出部21が検出した力の時間応答波形である。記憶波形Vは、教示装置50の図示しない記憶媒体に、仮想弾性パラメーターk毎に記憶されている。また、仮想弾性パラメーターk毎の記憶波形Vには、仮想粘性パラメーターdと、仮想慣性パラメーターmとの組み合わせと、当該組み合わせを示すパラメーター識別情報とが対応付けられている。なお、当該記憶媒体は、記憶部の一例である。
また、記憶波形Vは、入力窓N2において受け付けた大きさの力が力検出部21において検出されるようにアームAを制御した場合に、力検出部21が検出する力の時間応答波形である。仮想弾性パラメーターkが互いに異なる複数の記憶波形Vは、他のパラメーター(仮想粘性パラメーターdや仮想慣性パラメーターm)が互いに異なる場合と比べて、波形の形状(傾き)が大きく異なる。このため、記憶波形Vは、仮想弾性パラメーターk毎に教示装置50の記憶媒体に記憶される。なお、記憶波形Vは、仮想弾性パラメーターk毎に教示装置50の記憶媒体に記憶される構成に代えて、仮想粘性パラメーターd毎に教示装置50の記憶媒体に記憶される構成であってもよく、仮想慣性パラメーターm毎に教示装置50の記憶媒体に記憶される構成であってもよく、仮想弾性パラメーターkと仮想粘性パラメーターdと仮想慣性パラメーターmとの一部又は全部の組み合わせ毎に教示装置50の記憶媒体に記憶される構成であってもよい。
グラフG2において1以上の記憶波形Vを表示する際、表示制御部51は、グラフG2において、入力窓N3において受け付けた仮想弾性パラメーターkに対応する1以上の記憶波形Vのそれぞれに対応付けられたパラメーター識別情報を表示する。図4に示した例では、一例として、3つのパラメーター識別情報であるパラメーター識別情報PTR1〜パラメーター識別情報PTR3のそれぞれがグラフG2に表示されている。また、パラメーター識別情報PTR1〜パラメーター識別情報PTR3のそれぞれには、チェックボックスが対応付けられている。
ユーザーは、グラフG2において表示されたチェックボックスの中から1以上のチェックボックスを選択する(タップする又はクリックする等の選択操作を行う)ことにより、選択した1以上のチェックボックスのそれぞれに対応付けられたパラメーター識別情報を選択することができる。そして、ユーザーは、選択した1以上のパラメーター識別情報のそれぞれに対応付けられた記憶波形VをグラフG2に表示することができる。
すなわち、表示制御部51は、ユーザーから受け付けた操作に基づいて、グラフG2においてユーザーが所望する1以上のチェックボックスを特定する。表示制御部51は、特定した1以上のチェックボックスのそれぞれに対応付けられたパラメーター識別情報を特定する。表示制御部51は、特定した1以上のパラメーター識別情報のそれぞれに対応付けられた記憶波形Vを、ユーザーが所望する1以上の記憶波形Vとして特定する。そして、表示制御部51は、表示制御部51が特定した1以上の記憶波形Vを図示しない記憶媒体から読み出し、読み出した1以上の記憶波形VをグラフG2に表示する。
図4に示した例では、ユーザーは、パラメーター識別情報PTR1に対応付けられたチェックボックスのみを選択している。このため、図4に示したグラフG2には、パラメーター識別情報PTR1に対応付けられた記憶波形Vのみが表示されている。
なお、記憶波形Vは、ユーザーの目安となる波形であればよく、例えば、ロボット20のメーカーが推奨する波形であってもよく、過去においてロボット20が正常に作業を行った実績のある波形であってもよい。また、記憶波形Vは、嵌合作業や研磨作業等の作業内容毎に教示装置50の記憶媒体に記憶される構成であってもよく、ワークWの機械特性(弾性係数や硬さ等)や、ハンドHDと接触する他の物体の機械特性毎に教示装置50の記憶媒体に記憶される構成であってもよい。
次に、受付部53は、スライダーバーH上におけるスライダーH1の操作に応じて、ハンドHDが他の物体と接触した場合に、当該他の物体との接触に応じた動作であってハンドHDの動作の挙動を示す値である挙動値の下限値を受け付ける(ステップS150)。挙動値は、仮想粘性パラメーターdと仮想慣性パラメーターmとの組み合わせを示す。挙動値は、仮想粘性パラメーターdと仮想慣性パラメーターmとのうち少なくとも一方が変化した場合に変化する値である。なお、仮想粘性パラメーターdと仮想慣性パラメーターmとの比は、挙動値が変化した場合において一定に保たれる構成であってもよく、挙動値が変化した場合において変化する構成であってもよい。
挙動値が小さいほど(すなわち、スライダーバーH上においてスライダーH1の位置が左方向に移動するほど)、仮想粘性パラメーターdと仮想慣性パラメーターmとのそれぞれは、小さくなる。仮想粘性パラメーターdと仮想慣性パラメーターmとのそれぞれが小さくなると、TCPの位置が移動しやすくなるため、力検出部21が検出する力の応答性が良くなる。すなわち、仮想粘性パラメーターdと仮想慣性パラメーターmとのそれぞれが小さくなると、当該他の物体との接触に応じたハンドHDの動作の応答性が良くなる。一方、挙動値が大きいほど(すなわち、スライダーバーH上においてスライダーH1の位置が右方向に移動するほど)、仮想粘性パラメーターdと仮想慣性パラメーターmとのそれぞれは、大きくなる。仮想粘性パラメーターdと仮想慣性パラメーターmとのそれぞれが大きくなると、TCPの位置が移動し難くなるため、力検出部21が検出する力が安定し易くなる。すなわち、仮想粘性パラメーターdと仮想慣性パラメーターmとのそれぞれが大きくなると、当該他の物体との接触に応じたハンドHDの動作の安定性が良くなる。なお、仮想粘性パラメーターdと仮想慣性パラメーターmとのそれぞれは、設定値の一例である。
次に、受付部53は、スライダーバーH上におけるスライダーH2の操作に応じて、挙動値の上限値を受け付ける(ステップS155)。なお、ステップS150の処理とステップS155の処理とは、順番が逆であってもよい。また、挙動値は、仮想粘性パラメーターdと仮想慣性パラメーターmとの組み合わせを示す構成に代えて、仮想弾性パラメーターkと仮想粘性パラメーターdと仮想慣性パラメーターmとの組み合わせを示す構成であってもよい。この場合、メイン画面には、前述の入力窓N3が含まれない。
次に、受付部53は、スライダーバーH上におけるスライダーH1のスライド位置が示す挙動値の下限値、及びスライダーH2のスライド位置が示す挙動値の上限値のそれぞれを取得する。そして、受付部53は、取得した当該下限値以上当該上限値以下の範囲に含まれる挙動値の中から、所定の条件を満たす挙動値を特定する。所定の条件は、例えば、当該範囲を5等分に分割した場合に、分割された区間のうちの隣り合う区間との境界の位置する挙動値であることである。受付部53は、当該下限値と、特定した挙動値と、当該上限値とのそれぞれを1以上の設定値(この一例において、6個の設定値)として特定する(ステップS160)。なお、所定の条件は、当該範囲を5等分に分割した場合に、分割された区間のうちの隣り合う区間との境界の位置する挙動値であることに代えて、当該範囲に含まれる挙動値を1以上選択することが可能な他の条件であってもよい。また、当該範囲の分割数、すなわちステップS160において特定される設定値の数は、予め決められている構成であってもよく、ユーザーにより入力される構成であってもよい。ユーザーにより入力される構成の場合、メイン画面には、当該範囲の分割数を入力するための入力窓が含まれる。
次に、表示制御部51及びロボット制御部52は、動作ボタンB1の操作に応じて、ステップS160において特定した1以上の設定値のそれぞれ毎に、ステップS180〜ステップS190の処理を繰り返し行う(ステップS170)。
ロボット制御部52は、ステップS170において選択(特定)された設定値に基づいてアームAに所定の第1動作を行わせる(ステップS180)。すなわち、ロボット制御部52は、ステップS170において選択された設定値である仮想粘性パラメーターd及び仮想慣性パラメーターm)と、メイン画面において設定された仮想弾性パラメーターk及び目標力fStとをロボット制御装置30に出力し、出力した仮想弾性パラメーターk、仮想粘性パラメーターd、仮想慣性パラメーターm、目標力fStのそれぞれに基づいてアームAに第1動作を行わせるようにロボット制御装置30に対して指令する。
図4に示したメイン画面の場合、ハンドHDが第1動作として−Z方向に移動し、−Z方向においてハンドHDが他の物体に接触してメイン画面において設定された大きさの力fSが力検出部21によって検出されるようにアームAが制御される。なお、第1動作は、これに代えて、他の動作であってもよい。
ロボット制御部52がロボット制御装置30にアームAを制御させている間、取得部55は、所定のサンプリング周期毎に重力補償後の力fS(すなわち、力検出部21の出力値)をロボット制御装置30から取得する。そして、取得部55は、取得した力fSを教示装置50の記憶媒体に記憶させる。なお、挙動値が仮想弾性パラメーターkと仮想粘性パラメーターdと仮想慣性パラメーターmとの組み合わせを示す場合、設定値は、仮想弾性パラメーターkと、仮想粘性パラメーターdと、仮想慣性パラメーターmとのことである。
次に、表示制御部51は、ステップS180において取得部55が記憶媒体に記憶させた力fSに基づく検出波形Lを、ステップS170において選択された設定値、すなわち当該検出波形Lに対応付けられた設定値を示す設定値識別情報とともにグラフG1に表示する(ステップS190)。具体的には、表示制御部51は、当該記憶媒体からサンプリング周期毎の当該力fSを読み出す。そして、表示制御部51は、読み出した当該力fSの時系列の波形である検出波形LをグラフG1に表示する。すなわち、検出波形Lは、力検出部21の出力値としての力fSの時間応答波形である。グラフG1の縦軸と横軸は、この一例において、グラフG2の縦軸と横軸と同じスケールであることとする。また、検出波形Lは、入力窓N1において受け付けられた大きさの目標力fStへと収束していく波形である。なお、グラフG1の縦軸と横軸は、グラフG2の縦軸と横軸と同じスケールである構成に代えて、グラフG2の縦軸と横軸と異なるスケールである構成であってもよい。
このように、ステップS160において特定した1以上の設定値のそれぞれ毎にステップS170〜ステップS190の処理を繰り返し行うことにより、表示制御部51は、グラフG1に1以上の検出波形Lと、各検出波形Lに対応付けられた設定値識別情報とを表示する。これにより、教示装置50は、1回の操作によってアームAに設定値の数だけ第1動作を行わせることができるため、ユーザーが所望する設定値を選択するために要する時間を短縮することができる。図4に示した例では、一例として、6つの設定値識別情報である設定値識別情報SR1〜設定値識別情報SR6のそれぞれがグラフG1に表示されている。また、設定値識別情報SR1〜設定値識別情報SR6のそれぞれには、チェックボックスが対応付けられている。
ユーザーは、グラフG1において表示されたチェックボックスの中から1以上のチェックボックスを選択する(タップする又はクリックする等の選択操作を行う)ことにより、選択した1以上のチェックボックスのそれぞれに対応付けられた設定値識別情報を選択することができる。そして、ユーザーは、選択した1以上の設定値識別情報のそれぞれに対応付けられた検出波形LをグラフG1に表示することができる。
すなわち、表示制御部51は、ユーザーから受け付けた操作に基づいて、グラフG1においてユーザーが所望する1以上のチェックボックスを特定する。表示制御部51は、特定した1以上のチェックボックスのそれぞれに対応付けられた設定値識別情報を特定する。表示制御部51は、特定した1以上の設定値識別情報のそれぞれに対応付けられた検出波形Lを、ユーザーが所望する1以上の検出波形Lとして特定する。そして、表示制御部51は、特定した1以上の検出波形LをグラフG1に表示する。これにより、教示装置50は、設定値を変化させた場合に検出波形Lがどのように変化するのかをユーザーに容易に視認させることができるとともに、設定値を変化させた場合の検出波形Lの変化を容易に比較させることができる。
図4に示した例では、ユーザーは、設定値識別情報SR1〜設定値識別情報SR5のそれぞれに対応付けられたチェックボックスを選択している。このため、図4に示したグラフG1には、設定値識別情報SR1〜設定値識別情報SR5のそれぞれに対応付けられた検出波形Lが表示されている。
次に、受付部53は、ユーザーが所望する設定値を示す設定値識別情報を受け付ける(ステップS200)。すなわち、受付部53は、ユーザーが所望する検出波形Lに対応付けられた設定値識別情報を受け付ける。メイン画面には、ユーザーが所望する設定値に対応付けられた設定値識別情報を受け付けるための入力窓N4が含まれている。受付部53は、入力窓N4において、ユーザーが所望する設定値に対応付けられた設定値識別情報の入力を受け付ける。図4に示した例では、入力窓N4には、設定値識別情報SR1が入力されている。
次に、受付部53は、決定ボタンであるボタンB2が操作されたか否かを判定する(ステップS210)。すなわち、受付部53は、入力窓N4において受け付けた設定値識別情報を、ユーザーが所望する設定値を示す設定値識別情報として決定するための操作が受け付けられたか否かを判定する。
ボタンB2が操作されたと判定しなかった場合、(ステップS210−NO)、受付部53は、ステップS190に遷移し、再びユーザーが所望する設定値を示す設定値識別情報を受け付ける。すなわち、ユーザーが入力窓N4に入力した設定値識別情報に対応付けられた検出波形Lに満足できなかったとして、引き続き、ユーザーが所望する設定値を示す設定値識別情報を受け付ける。一方、ボタンB2が操作されたと受付部53が判定した場合(ステップS210−YES)、設定部54は、入力窓N4において受け付けた設定値識別情報が示す設定値を、ユーザーが所望する設定値として特定する。そして、設定部54は、特定した設定値及び入力窓N3において受け付けた仮想弾性パラメーターkと、当該設定値を示す設定値識別情報に対応付けられた検出波形Lと対応付けて教示装置50の記憶媒体に記憶波形Vとして記憶させるとともに、当該設定値及び仮想弾性パラメーターkをロボット制御装置30に出力して記憶させ(ステップS220)、処理を終了する。これにより、教示装置50は、メイン画面において設定された目標力fStとともに、インピーダンス制御のパラメーターである仮想弾性パラメーターk、仮想粘性パラメーターd、仮想慣性パラメーターmをロボット制御装置30に記憶させる(教示する)ことができる。また、教示装置50は、過去に記憶媒体に記憶波形Vとして記憶させた検出波形Lと、新たに出力装置に表示させた検出波形Lとをユーザーに容易に比較させることができる。その結果、教示装置50は、ユーザーが所望する設定値を選択するために要する時間を短縮することができる。
なお、ステップS210において、設定部54は、入力窓N4において受け付けた設定値識別情報が示す設定値をロボット制御部52に設定する構成であってもよい。この場合、当該設定値がロボット制御部52に設定された後、ロボット制御部52は、設定された設定値に基づいて所定の第2動作をアームAに行わせる。所定の第2動作は、第1動作を同じ動作であってもよく、第2動作と異なる動作であってもよい。例えば、第2動作は、ロボット制御装置30がアームAに何らかの作業を行わせる際におけるアームAの動作と同じ動作であってもよい。第2動作が当該動作である場合、ユーザーは、ユーザーが選択した設定値によってアームAがロボット制御装置30に制御された際のアームAの挙動を、ユーザーが直接ロボット制御装置30を操作することなく確認することができる。
<実施形態の変形例>
以下、実施形態の変形例について説明する。
受付部53は、メイン画面のスライダーバーH上におけるスライダーH1又はスライダーH2のいずれか一方によって挙動値の基準値を受け付ける構成であってもよい。この場合、受付部53は、基準値に基づいて挙動値の上限値及び下限値を決定する。例えば、受付部53は、基準値を中心として予め決められた値だけ小さな挙動値を当該下限値として決定し、当該値だけ大きな挙動値を当該上限値として決定する構成であってもよく、基準値を挙動値の下限値として決定し、基準値から予め決められた値だけ大きな挙動値を、挙動値の上限値として決定する構成であってもよく、基準値を挙動値の上限値として決定し、基準値から予め決められた値だけ小さな挙動値を、挙動値の下限値として決定する構成であってもよく、基準値に基づいて下限値及び上限値を決定する他の構成であってもよい。
また、表示制御部51は、グラフG2に表示した1以上の記憶波形Vの一部又は全部を、グラフG1に表示した1以上の検出波形Lに重ねて表示する構成であってもよい。この場合、表示制御部51は、記憶波形Vと検出波形Lとを互いに識別可能な色や線種によってグラフG2に表示する。例えば、表示制御部51は、記憶波形Vを点線によってグラフG2に表示し、検出波形Lを実線によってグラフG2に表示する。
また、表示制御部51は、グラフG1に表示した1以上の検出波形Lの一部又は全部を、グラフG2に表示した1以上の記憶波形Vに重ねて表示する構成であってもよい。この場合、表示制御部51は、記憶波形Vと検出波形Lとを互いに識別可能な色や線種によってグラフG2に表示する。例えば、表示制御部51は、記憶波形Vを点線によってグラフG1に表示し、検出波形Lを実線によってグラフG1に表示する。
また、表示制御部51は、グラフG2に2以上の記憶波形Vを表示する際、当該2以上の記憶波形Vのそれぞれを、互いに異なる色や線種によってグラフG2に表示する構成であってもよい。
また、表示制御部51は、グラフG1に2以上の検出波形Lを表示する際、当該2以上の検出波形Lのそれぞれを、互いに異なる色や線種によってグラフG1に表示する構成であってもよい。
また、表示制御部51は、グラフG1に2以上の検出波形Lを表示する際、当該2以上の検出波形Lのうちのユーザーにより選択された検出波形Lを基準波形とし、基準波形に含まれる最大の波高値よりも大きな波高値を含む検出波形Lと、基準波形に含まれる最大の波高値よりも小さな波高値のみを含む検出波形Lとを互いに識別可能な色や線種によってグラフG1に表示する構成であってもよい。例えば、表示制御部51は、当該2以上の検出波形Lのうち、基準波形に含まれる最大の波高値よりも大きな波高値を含む検出波形Lを実線によって表示し、基準波形に含まれる最大の波高値よりも小さな波高値のみを含む検出波形Lを点線によって表示する。
また、表示制御部51は、メイン画面において、ツールチップ等によってパラメーターの詳細を表示する構成であってもよい。例えば、表示制御部51は、グラフG1においてマウスのカーソルが1以上の検出波形Lのうちの1つの上に重なった場合、カーソルが重ねられた検出波形Lに対応付けられた設定値識別情報が示す設定値を、ツールチップによってメイン画面上に重ねて表示する。また、表示制御部51は、グラフG2においてマウスのカーソルが1以上の記憶波形Vのうちの1つの上に重なった場合、カーソルが重ねられた記憶波形Vに対応付けられたパラメーター識別情報が示すパラメーターを、ツールチップによってメイン画面上に重ねて表示する。
以上のように、制御装置25は、力検出部(この一例において、力検出部21)を備えたロボット(この一例において、ロボット20)を所定の設定値に基づいて動作させた場合の力検出部の出力値を取得し、複数の設定値毎に設定値に基づいてロボットに所定の第1動作を行わせ、取得した出力値の時間応答波形であって設定値毎の時間応答波形を表示部(この一例において、図示しない出力装置)に表示させ、ユーザーから受け付けた操作に基づいて表示部に表示された設定値毎の時間応答波形の中からユーザーが所望する時間応答波形を選択する。これにより、制御装置25は、ユーザーが所望する時間応答波形に対応する設定値に基づいてロボットを動作させることができる。
また、制御装置25は、ユーザーから受け付けた操作に基づいて、設定値毎の時間応答波形のうちの一部又は全部を表示部に表示させる。これにより、制御装置は、設定値毎の時間応答波形のうちの一部又は全部の中からユーザーが所望する時間応答波形に対応する設定値をユーザーに選択させることができる。
また、制御装置25は、ユーザーから受け付けた操作に基づいて、予め記憶部(この一例において、教示装置50の図示しない記憶媒体)に記憶された時間応答波形の一部又は全部を表示部に表示させる。これにより、制御装置25は、記憶部に記憶された時間応答波形のうちの一部又は全部の中からユーザーが所望する時間応答波形に対応する設定値をユーザーに選択させることができる。
また、制御装置25は、ユーザーから受け付けた操作に基づいて複数の設定値のそれぞれを特定し、特定した設定値毎に、設定値と力検出部の出力値とに基づくコンプライアントモーション制御を行う。これにより、制御装置25は、特定した設定値毎に行われたコンプライアントモーション制御の結果である力検出部の出力値の時間応答波形のうちのユーザーが所望する時間応答波形に対応する設定値に基づいてロボットを動作させることができる。
また、制御装置25は、ユーザーから受け付けた操作に基づいて複数の設定値であって仮想慣性パラメーターと仮想弾性パラメーターと仮想粘性パラメーターとのうちの少なくとも一部が含まれる設定値のそれぞれを特定し、特定した設定値毎に、設定値と力検出部の出力値とに基づくインピーダンス制御を行う。これにより、制御装置25は、特定した設定値毎に行われたインピーダンス制御における力検出部の出力値の時間応答波形のうちのユーザーが所望する時間応答波形に対応する設定値に基づいてロボットを動作させることができる。
また、制御装置25は、予め決められている数、又はユーザーにより入力される数の設定値毎に設定値に基づいてロボットに所定の第1動作を行わせる。これにより、制御装置25は、予め決められている数、又はユーザーにより入力される数の設定値毎の時間応答波形の中からユーザーが所望する時間応答波形に対応する設定値をユーザーに選択させることができる。
また、制御装置25は、受け付けた操作に応じた時間応答波形に対応付けられた設定値を設定し、設定した設定値に基づいてロボットに所定の第2動作を行わせる。これにより、制御装置25は、ユーザーが所望する動作である第2動作を含む作業をロボットに行わせることができる。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
また、以上に説明した装置(例えば、ロボット制御装置30や教示装置50)における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD(Compact Disk)−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。