<実施形態>
以下、本発明の実施形態について、図面を参照して説明する。
<ロボットシステムの構成>
まず、ロボットシステム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は、当該指部を備えるエンドエフェクターに代えて、空気の吸引や磁力、治具等によって物体を持ち上げることが可能なエンドエフェクターや、他のエンドエフェクターであってもよい。
エンドエフェクターEは、ケーブルによってロボット制御装置30と通信可能に接続されている。これにより、エンドエフェクターEは、ロボット制御装置30から取得される制御信号に基づく動作を行う。なお、ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB(Universal Serial Bus)等の規格によって行われる。また、エンドエフェクターEは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によってロボット制御装置30と接続される構成であってもよい。
マニピュレーターMは、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と接続される構成であってもよい。
力検出部21は、エンドエフェクターEとマニピュレーターMの間に備えられる。力検出部21は、例えば、力センサーである。力検出部21は、ハンドHに加えられた外力を検出する。ハンドHは、この一例において、エンドエフェクターE、又はエンドエフェクターEにより把持された物体のことである。当該外力は、この一例において、ハンドHに加えられた力と、ハンドHに加えられたモーメントとの両方のことである。すなわち、力検出部21は、ハンドHに加えられた力であって、力検出座標系の各座標軸それぞれの方向に加わった力の大きさを検出する。また、力検出部21は、ハンドHに加えられたモーメントであって、当該各座標軸それぞれの周りに加えられたモーメントの大きさを検出する。力検出部21は、検出したこれらの大きさを示す力検出値を含む力検出情報を通信によりロボット制御装置30へ出力する。力検出座標系は、力検出部21とともに動くように力検出部21に対応付けられた三次元局所座標系である。なお、当該外力は、これに代えて、ハンドHに加えられた力と、ハンドHに加えられたモーメントとのうちいずれか一方のことであってもよい。
力検出情報は、ロボット制御装置30によるアームAの力検出情報に基づく制御である力制御に用いられる。力制御は、例えば、インピーダンス制御等のコンプライアントモーション制御のことである。なお、力検出部21は、トルクセンサー等のハンドHに加えられた外力を検出する他のセンサーであってもよい。
力検出部21は、ケーブルによってロボット制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、力検出部21とロボット制御装置30とは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によって接続される構成であってもよい。
ロボット制御装置30は、この一例において、ロボットコントローラーである。ロボット制御装置30は、教示装置50から教示点情報を取得する。教示点情報は、教示点を示す情報である。教示点は、ロボット制御装置30がロボット20を動作させる際にロボット20の位置及び姿勢を変化させる目標となる位置及び姿勢を表す仮想的な点である。教示点には、教示点位置情報と、教示点姿勢情報と、教示点識別情報とが対応付けられている。教示点位置情報は、教示点の位置を示す情報である。また、教示点姿勢情報は、教示点の姿勢を示す情報である。教示点識別情報は、教示点を識別する情報である。
この一例において、教示点の位置は、教示点に対応付けられた三次元局所座標系である教示点座標系の原点のロボット座標系RCにおける位置によって表される。また、教示点の姿勢は、教示点座標系の各座標軸のロボット座標系RCにおける方向によって表される。
ロボット制御装置30は、教示装置50から取得した教示点情報を記憶する。また、ロボット制御装置30は、記憶した教示点情報に基づいて、ロボット20を動作させる制御信号を生成する。具体的には、ロボット制御装置30は、マニピュレーターMの各関節に備えられたエンコーダーから、各アクチュエーターの回転角を示す情報を取得する。ロボット制御装置30は、記憶した教示点情報と、取得した当該回転角を示す情報とに基づいて制御信号を生成する。ロボット制御装置30は、生成した制御信号をロボット20に送信し、当該各アクチュエーターを動作させることによってロボット20を動作させる。ここで、当該制御信号には、エンドエフェクターEを制御する制御信号も含まれる。
また、ロボット制御装置30は、教示装置50から各種の指示を取得する。ロボット制御装置30は、取得した指示のうちのロボット制御装置30の動作モードを切り替える動作モード切替指示に基づいて、ロボット制御装置30の動作モードを切り替える。具体的には、ロボット制御装置30は、この一例において、動作モード切替指示に基づいて、動作モードを第1モードと、第2モードと、第3モードとのいずれかに切り替える。ロボット制御装置30は、切り替えた動作モードに応じた動作をロボット20に行わせる。動作モード切替指示は、第1モードと、第2モードと、第3モードとのいずれかを示す情報を含む指示である。なお、ロボット制御装置30は、第1モードと第2モードとのいずれかに切り替える構成であってもよく、第2モードと第3モードとのいずれかに切り替える構成であってもよく、第1モードと第3モードとのいずれかに切り替える構成であってもよい。また、ロボット制御装置30は、第1モード〜第3モードの3つのモードの一部又は全部と当該3つのモードと異なる他のモードとのいずれかに切り替える構成であってもよい。
第1モードは、この一例において、自動動作モードである。自動動作モードは、ハンドHに加えられた外力が第1所定条件を満たすまでロボット20を動かすモードである。すなわち、第1モードは、力制御によって第1所定条件が満たされるまでロボット制御装置30がロボット20を動作させるモードである。なお、第1モードは、自動動作モードに代えて、他のモードであってもよい。第1所定条件は、所定条件の一例である。第1所定条件については、後述する。
第2モードは、この一例において、ジョグ動作モードである。ジョグ動作モードは、ロボット20が備える第1部位に加えられた外力に基づいて、ロボット20が備える第2部位を所定方向に所定量だけ移動させるモードである。以下では、一例として、第1部位と第2部位が同じ部位であり、第1部位と第2部位がハンドHである場合について説明する。すなわち、第2モードは、ハンドHに加えられた外力に基づいて、ハンドHを所定方向に所定量だけ移動させるモードである。なお、第1部位は、これに代えて、ロボット20が備える他の部位であってもよい。また、第2部位は、これに代えて、ロボット20が備える他の部位のうちの第1部位と異なる部位であってもよい。また、第2モードは、ジョグ動作モードに代えて、他のモードであってもよい。
第3モードは、この一例において、直接動作モードである。直接動作モードは、ロボット20が備えるハンドHに加えられた外力に基づいて、当該外力が加えられた方向に当該外力の大きさに応じた量だけハンドHを動かすモードである。すなわち、第3モードは、直接教示(ダイレクトティーチング)においてユーザーがロボット20を動かす場合にロボット制御装置30がロボット20を動作させるモードである。なお、第3モードは、直接動作モードに代えて、他のモードであってもよい。以下では、第3モードによるロボット20の動作が従来から直接教示において知られている動作であるため、第3モードについての説明を省略する。
また、ロボット制御装置30は、教示装置50から取得した指示のうちの現在のロボット20の位置及び姿勢を示す情報を教示装置50に出力する位置姿勢情報出力指示に基づいて、当該情報を教示装置50に出力する。
なお、ロボット制御装置30は、ロボット20の外部に設置される構成に代えて、ロボット20に内蔵される構成であってもよい。
教示装置50は、この一例において、ティーチングペンダントである。教示装置50は、ユーザーから受け付けた操作に基づいて、ロボット制御装置30に各種の指示を出力する。教示装置50は、動作モード切替指示をロボット制御装置30に出力することにより、ロボット制御装置30に動作モードを切り替えさせる。
また、教示装置50は、ロボット制御装置30に出力する指示のうちの位置姿勢情報出力指示をロボット制御装置30に出力することにより、ロボット制御装置30から現在のロボット20の位置及び姿勢を示す情報を取得する。教示装置50は、取得した当該情報に基づいて、教示点情報を生成する。教示装置50は、生成した教示点情報をロボット制御装置30に出力して記憶させる。すなわち、教示装置50は、生成した教示点情報が示す教示点をロボット制御装置30に教示する。
教示装置50は、ケーブルによってロボット制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、教示装置50とロボット制御装置30とは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によって接続される構成であってもよい。
なお、教示装置50は、ティーチングペンダントに代えて、教示装置50の機能を有し、ロボット制御装置30に対する指示を出力することが可能なリモートコントローラー等であってもよい。
<ロボット制御装置がロボットを動作させる処理の概要>
以下、ロボット制御装置30がロボット20を動作させる処理の概要について説明する。
図1に示したように、ロボット20は、この一例において、エンドエフェクターEにより物体O1を予め把持している。すなわち、この一例におけるハンドHは、エンドエフェクターE、又はエンドエフェクターEにより把持された物体O1のことである。物体O1は、例えば、産業用の部品や部材、製品等である。なお、物体O1は、これに代えて、産業用と異なる日用品の部品や部材、製品等や、生体等の他の物体であってもよい。図1に示した例では、物体O1が直方体形状の物体として表されている。なお、物体O1の形状は、直方体形状に代えて、他の形状であってもよい。
ロボット制御装置30は、エンドエフェクターEに予め対応付けられた位置に、エンドエフェクターEとともに動くTCP(Tool Center Point)である制御点T1を設定する。エンドエフェクターEに予め対応付けられた位置は、例えば、エンドエフェクターEにより予め把持された物体O1の重心の位置である。なお、エンドエフェクターEに対応付けられた位置は、これに代えて、エンドエフェクターEの重心の位置等の他の位置であってもよく、マニピュレーターMに対応付けられた何らかの位置であってもよい。
制御点T1には、制御点T1の位置を示す情報である制御点位置情報と、制御点T1の姿勢を示す情報である制御点姿勢情報とが対応付けられている。なお、制御点T1には、これらに加えて、他の情報が対応付けられる構成であってもよい。制御点位置情報及び制御点姿勢情報をロボット制御装置30が指定(決定)すると、制御点T1の位置及び姿勢が決まる。当該位置及び姿勢は、ロボット座標系RCにおける位置及び姿勢である。ロボット制御装置30は、制御点位置情報及び制御点姿勢情報を指定する。ロボット制御装置30は、アームAを動作させ、指定した制御点位置情報が示す位置に制御点T1の位置を一致させるとともに、指定した制御姿勢情報が示す姿勢に制御点T1の姿勢を一致させる。すなわち、ロボット制御装置30は、制御点位置情報及び制御点姿勢情報を指定することにより、ロボット20を動作させる。
この一例において、制御点T1の位置は、制御点座標系TC1の原点のロボット座標系RCにおける位置によって表される。また、制御点T1の姿勢は、制御点座標系TC1の各座標軸のロボット座標系RCにおける方向によって表される。制御点座標系TC1は、制御点T1とともに動くように制御点T1に対応付けられた三次元局所座標系である。なお、この一例において、前述の物体O1の位置及び姿勢は、制御点T1の位置及び姿勢によって表される。また、この一例において、制御点座標系TC1の各座標軸の方向は、前述の力検出座標系の各座標軸の方向と一致している。なお、制御点座標系TC1の各座標軸の方向は、力検出座標系の各座標軸の方向と一致しない構成であってもよい。
ロボット制御装置30は、ユーザーから予め入力された制御点設定情報に基づいて制御点T1を設定する。制御点設定情報は、例えば、エンドエフェクターEの重心の位置及び姿勢と制御点T1の位置及び姿勢との相対的な位置及び姿勢を示す情報である。なお、制御点設定情報は、これに代えて、エンドエフェクターEに対応付けられた何らかの位置及び姿勢と制御点T1の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、マニピュレーターMに対応付けられた何らかの位置及び姿勢と制御点T1の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよく、ロボット20の他の部位に対応付けられた何らかの位置及び姿勢と制御点T1の位置及び姿勢との相対的な位置及び姿勢を示す情報であってもよい。
以下では、一例として、前述したロボット20の位置及び姿勢が、制御点T1の位置及び姿勢である場合について説明する。なお、ロボット20の位置及び姿勢は、ロボット20の動作とともに動く他の部位の位置及び姿勢であってもよい。
ロボット制御装置30は、教示点情報に基づいてロボット20を動作させる。ロボット制御装置30は、教示点情報に基づいてロボット20を動作させる際、ユーザーにより予め入力された動作プログラムに基づいて、教示点情報が示す1以上の教示点を順に指定する。ロボット制御装置30は、指定した教示点である指定教示点に対応付けられた教示点位置情報を制御点位置情報として指定するとともに、指定教示点に対応付けられた教示点姿勢情報を制御点姿勢情報として指定する。すなわち、ロボット制御装置30は、指定教示点に基づいて制御点位置情報及び制御点姿勢情報を指定する。これにより、ロボット制御装置30は、制御点T1を指定教示点に一致させることができる。なお、この一例において、ある教示点と制御点T1とが一致することは、当該教示点の位置及び姿勢と制御点T1の位置及び姿勢とが一致することを意味する。
また、ロボット制御装置30は、動作モードが第1モード〜第3モードのいずれかである場合、力検出部21から取得した力検出情報に基づいてロボット20を動作させる。
具体的には、ロボット制御装置30は、力検出部21から力検出情報を取得する。そして、ロボット制御装置30は、動作モードが第1モードの場合、取得した力検出情報に基づいて、ハンドHに加えられた外力が第1所定条件を満たす状態を実現する位置及び姿勢まで制御点T1の位置及び姿勢を変化させる。ロボット制御装置30は、当該状態を実現する位置及び姿勢を、ロボット制御装置30に予め入力された力制御パラメーターと、動力学運動方程式と、当該力検出情報とに基づいて算出する。
また、ロボット制御装置30は、動作モードが第2モードの場合、力検出部21から取得した力検出情報に基づいて、ハンドHに加えられた外力が第2所定条件を満たす場合、制御点T1を所定方向に所定量だけ移動させる。これにより、ロボット制御装置30は、ハンドHを所定方向に所定量だけ移動させる。
また、ロボット制御装置30は、動作モードが第3モードの場合、力検出部21から取得した力検出情報に基づいて、ハンドHに外力が加えられた方向に、当該外力に応じた量だけ制御点T1を移動させる。ロボット制御装置30は、当該外力に応じた量を、ロボット制御装置30に予め入力された力制御パラメーターと、動力学運動方程式と、当該力検出情報とに基づいて算出する。
<教示装置がロボット制御装置に教示する教示点>
以下、教示装置50がロボット制御装置30に教示する教示点について説明する。
教示装置50は、ロボット制御装置30に教示する教示点として、最終目標教示点と待機教示点とを教示する。すなわち、教示装置50は、最終目標教示点及び待機教示点のそれぞれを示す教示点情報を生成する。そして、教示装置50は、生成した当該教示点情報をロボット制御装置30に出力して記憶させる。
最終目標教示点は、この一例において、ロボット20が物体O1を作業台TBの上面に設定された配置領域RAに配置した場合において制御点T1が一致する教示点である。作業台TBは、この一例において、テーブル等の台である。また、作業台TBは、作業台TBの上面がロボット座標系RCのZ軸と直交するように床面に設置されている。なお、作業台TBは、これに代えて、床面や棚等の物体O1を載置可能な面を有する物体であれば、他の物体であってもよい。また、作業台TBの上面は、ロボット座標系RCのZ軸と直交しない構成であってもよい。作業台TBは、対象物の一例である。
待機教示点は、この一例において、ロボット20が物体O1を配置領域RAに配置する前に制御点T1を一致させ、制御点T1を待機させる教示点である。待機教示点は、最終目標教示点からロボット座標系RCのZ軸の正方向に所定の第1距離だけ離れた教示点である。第1距離は、例えば、10センチメートルである。なお、所定距離は、これに代えて、物体O1が作業台TBに接触しない距離であれば10センチメートルより短い距離であってもよく、10センチメートルより長い距離であってもよい。
教示装置50は、ユーザーから受け付けた操作に基づいて、ロボット制御装置30の動作モードを切り替えさせる。教示装置50により動作モードが切り替えられたロボット制御装置30は、現在の動作モードに応じた動作をロボット20に行わせ、ユーザーが所望する位置及び姿勢と制御点T1の位置及び姿勢とを一致させる。ユーザーが所望する位置及び姿勢と制御点T1の位置及び姿勢とを一致させた場合、教示装置50は、ロボット制御装置30から現在の制御点T1の位置及び姿勢を示す情報を取得する。教示装置50は、取得した当該情報に基づいて、教示点を示す教示点情報を生成する。これにより、教示装置50は、待機教示点を示す教示点情報と、最終目標教示点を示す教示点情報とを生成する。そして、教示装置50は、生成したこれらの教示点情報をロボット制御装置30に出力して記憶させる。すなわち、教示装置50は、当該教示点情報をロボット制御装置30に教示する。
以下では、教示装置50がロボット制御装置30に各種の指示を出力する処理と、動作モード切替指示に基づいてロボット制御装置30が動作モードを切り替える処理と、位置姿勢情報出力指示に基づいてロボット制御装置30に現在の制御点T1の位置及び姿勢を示す情報を教示装置50に出力する処理と、動作モードが第2モードの場合にロボット制御装置30がロボット20を動作させる処理と、動作モードが第1モードの場合にロボット制御装置30がロボット20を動作させる処理とについて詳しく説明する。
<ロボット制御装置及び教示装置のハードウェア構成>
以下、図2を参照し、ロボット制御装置30及び教示装置50のハードウェア構成について説明する。図2は、ロボット制御装置30及び教示装置50のハードウェア構成の一例を示す図である。図2は、ロボット制御装置30のハードウェア構成(図2における30番台の符号が付された機能部)と、教示装置50のハードウェア構成(図2における50番台の符号が付された機能部)とを便宜的に重ねて示した図である。
ロボット制御装置30は、例えば、CPU(Central Processing Unit)31と、記憶部32と、入力受付部33と、通信部34と、表示部35を備える。また、ロボット制御装置30は、通信部34を介してロボット20、教示装置50のそれぞれと通信を行う。これらの構成要素は、バスBusを介して相互に通信可能に接続されている。
教示装置50は、例えば、CPU51と、記憶部52と、入力受付部53と、通信部54と、表示部55を備える。また、教示装置50は、通信部54を介してロボット制御装置30と通信を行う。これらの構成要素は、バス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)ディスプレイパネルである。
CPU51は、記憶部52に格納された各種プログラムを実行する。
記憶部52は、例えば、HDDやSSD、EEPROM、ROM、RAM等を含む。なお、記憶部52は、教示装置50に内蔵されるものに代えて、USB等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。記憶部52は、教示装置50が処理する各種情報や画像、各種のプログラムを格納する。
入力受付部53は、例えば、表示部55と一体に構成されたタッチパネルである。なお、入力受付部53は、キーボードやマウス、タッチパッド、その他の入力装置であってもよい。
通信部54は、例えば、USB等のデジタル入出力ポートやイーサネット(登録商標)ポート等を含んで構成される。
表示部55は、例えば、液晶ディスプレイパネル、あるいは、有機ELディスプレイパネルである。
<ロボット制御装置及び教示装置の機能構成>
以下、図3を参照し、ロボット制御装置30及び教示装置50の機能構成について説明する。図3は、ロボット制御装置30及び教示装置50の機能構成の一例を示す図である。
ロボット制御装置30は、記憶部32と、制御部36を備える。
制御部36は、ロボット制御装置30の全体を制御する。制御部36は、力検出情報取得部361と、記憶制御部363と、情報読出部364と、動作モード切替部365と、情報出力部366と、ロボット制御部367を備える。制御部36が備えるこれらの機能部は、例えば、CPU31が、記憶部32に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
力検出情報取得部361は、力検出部21から力検出情報を取得する。
記憶制御部363は、教示装置50から取得した教示点情報を記憶部32に記憶させる。
情報読出部364は、記憶部32から各種の情報を読み出す。
動作モード切替部365は、教示装置50から取得した指示のうちの動作モード切替指示に基づいて、当該動作モード切替指示が示すモードにロボット制御装置30の動作モードを切り替える。
情報出力部366は、教示装置50から取得した指示のうちの位置姿勢情報出力指示に基づいて、現在の制御点T1の位置及び姿勢を示す情報を教示装置50に出力する。
ロボット制御部367は、力検出情報取得部361が力検出部21から取得した力検出情報に基づいて、ロボット制御装置30の現在の動作モードに応じた動作をロボット20に行わせる。また、ロボット制御部367は、記憶制御部363が記憶部32に記憶させた教示点情報に基づいてロボット20を動作させる。
教示装置50は、記憶部52と、入力受付部53と、表示部55と、制御部56を備える。
制御部56は、教示装置50の全体を制御する。制御部56は、表示制御部561と、指示情報生成部563と、指示情報出力部565を備える。制御部56が備えるこれらの機能部は、例えば、CPU51が、記憶部52に記憶された各種プログラムを実行することにより実現される。また、当該機能部のうちの一部又は全部は、LSIやASIC等のハードウェア機能部であってもよい。
表示制御部561は、表示部55に表示させる各種の画面を生成する。表示制御部561は、生成した画面を表示部55に表示させる。
指示情報生成部563は、表示制御部561が表示部55に表示させた画面からユーザーにより受け付けられた操作に基づいて、ロボット制御装置30に出力する各種の指示を生成する。
指示情報出力部565は、指示情報生成部563が生成した指示をロボット制御装置30に出力する。
<教示装置がロボット制御装置に各種の指示を出力する処理>
以下、図4を参照し、教示装置50がロボット制御装置30に各種の指示を出力する処理について説明する。図4は、教示装置50がロボット制御装置30に各種の指示を出力する処理の流れの一例を示すフローチャートである。なお、図4に示したフローチャートでは、ロボット制御装置30に各種の指示を出力する操作をユーザーから受け付けるメイン画面がすでに表示制御部561により表示部55に表示されている場合について説明する。
指示情報生成部563は、メイン画面においてユーザーによる操作が受け付けられるまで待機する(ステップS110)。メイン画面においてユーザーによる操作が受け付けられたと判定した場合(ステップS110−YES)、指示情報生成部563は、当該操作がロボット制御装置30の動作モードを切り替える操作であったか否かを判定する(ステップS120)。
例えば、指示情報生成部563は、ステップS110において受け付けられた操作により第1モード〜第3モードのいずれかを示す情報が選択された場合、当該操作がロボット制御装置30の動作モードを切り替える操作であったと判定する。一方、指示情報生成部563は、ステップS110において受け付けられた操作により第1モード〜第3モードのいずれかを示す情報が選択されていない場合、当該操作がロボット制御装置30の動作モードを切り替える操作ではなかったと判定する。
ステップS110において受け付けられた操作がロボット制御装置30の動作モードを切り替える操作であったと判定した場合(ステップS120−YES)、指示情報生成部563は、ステップS110において選択された情報であってモードを示す情報を含む動作モード切替指示を生成する(ステップS130)。そして、指示情報出力部565は、ステップS130において指示情報生成部563が生成した動作モード切替指示をロボット制御装置30に出力する(ステップS140)。
一方、ステップS110において受け付けられた操作がロボット制御装置30の動作モードを切り替える操作ではなかったと判定した場合(ステップS120−NO)、指示情報生成部563は、ステップS110において受け付けられた操作が現在のロボット20の位置及び姿勢(この一例において、現在の制御点T1の位置及び姿勢)を取得する操作であったか否かを判定する(ステップS160)。ステップS110において受け付けられた操作が現在の制御点T1の位置及び姿勢を示す情報を取得する操作であったと判定した場合(ステップS160−YES)、指示情報生成部563は、位置姿勢情報出力指示を生成する(ステップS170)。そして、指示情報生成部563は、ステップS170において生成した位置姿勢情報出力指示をロボット制御装置30に出力する(ステップS180)。
一方、ステップS110において受け付けられた操作が現在の制御点T1の位置及び姿勢を取得する操作ではなかったと判定した場合(ステップS160−NO)、指示情報生成部563は、ステップS110において受け付けられた操作に応じた処理を実行する(ステップS190)。当該処理には、動作モード切替指示及び位置姿勢情報出力指示以外の指示を生成する処理、及び生成した当該指示をロボット制御装置30へ出力する処理が含まれている。
ステップS140と、ステップS180と、ステップS190とのいずれかの処理が実行された後、指示情報生成部563は、メイン画面におけるユーザーからの操作の受け付けが終了したか否かを判定する(ステップS150)。例えば、指示情報生成部563は、メイン画面においてメイン画面を削除する操作が受け付けられた場合、メイン画面におけるユーザーからの操作の受け付けが終了したと判定する。一方、指示情報生成部563は、メイン画面においてメイン画面を削除する操作が受け付けられていない場合、メイン画面におけるユーザーからの操作の受け付けが終了していないと判定する。
メイン画面におけるユーザーからの操作の受け付けが終了していないと判定した場合(ステップS150−NO)、指示情報生成部563は、ステップS110に遷移し、再びメイン画面においてユーザーによる操作が受け付けられるまで待機する。一方、メイン画面におけるユーザーからの操作の受け付けが終了したと判定した場合(ステップS150−YES)、指示情報生成部563は、処理を終了する。
<ロボット制御装置が動作モード切替指示に基づいて動作モードを切り替える処理>
以下、図5を参照し、ロボット制御装置30が動作モード切替指示に基づいて動作モードを切り替える処理について説明する。図5は、ロボット制御装置30が動作モード切替指示に基づいて動作モードを切り替える処理の流れの一例を示すフローチャートである。
動作モード切替部365は、教示装置50から動作モード切替指示を取得するまで待機する(ステップS210)。教示装置50から動作モード切替指示を取得したと判定した場合(ステップS210−YES)、動作モード切替部365は、現在のロボット制御装置30の動作モードを、ステップS210において教示装置50から取得した動作モード切替指示が示すモードに切り替える(ステップS220)。
なお、ロボット制御装置30は、例えば、ロボット20が動作モード切替スイッチを備えており、ユーザーによる動作モード切替スイッチの操作によって動作モード切替スイッチから出力される動作モード切替指示を取得する構成であってもよい。この場合、ユーザーは、動作モード切替スイッチを操作することによって、ロボット制御装置30の動作モードを切り替えることができる。動作モード切替スイッチは、例えば、エンドエフェクターEやマニピュレーターMの一部に設けられる。
<ロボット制御装置が位置姿勢情報出力指示に基づいて現在の制御点の位置及び姿勢を示す情報を教示装置に出力する処理>
以下、図6を参照し、ロボット制御装置30が位置姿勢情報出力指示に基づいて現在の制御点T1の位置及び姿勢を示す情報を教示装置50に出力する処理について説明する。図6は、ロボット制御装置30が位置姿勢情報出力指示に基づいて現在の制御点T1の位置及び姿勢を示す情報を教示装置50に出力する処理の流れの一例を示すフローチャートである。
情報出力部366は、教示装置50から位置姿勢情報出力指示を取得するまで待機する(ステップS310)。教示装置50から位置姿勢情報出力指示を取得したと情報出力部366が判定した場合(ステップS310−YES)、ロボット制御部367は、現在の制御点T1の位置及び姿勢を算出する。具体的には、ロボット制御部367は、マニピュレーターMの各関節に備えられたエンコーダーから、各アクチュエーターの回転角を示す情報を取得する。そして、ロボット制御部367は、取得した当該回転角と、順運動学とに基づいて現在の制御点T1の位置及び姿勢を算出する。そして、情報出力部366は、ロボット制御部367が算出した当該位置及び姿勢を示す情報を教示装置50に出力する(ステップS320)。
<動作モードが第2モードの場合にロボット制御装置がロボットを動作させる処理>
以下、図7〜図15を参照し、動作モードが第2モードの場合にロボット制御装置30がロボット20を動作させる処理について説明する。図7は、動作モードが第2モードの場合にロボット制御装置30がロボット20を動作させる処理の流れの一例を示すフローチャートである。
ロボット制御部367は、動作開始指示を受け付けるまで待機する(ステップS405)。動作開始指示は、ロボット20を動作させる処理を現在の動作モードによってロボット制御装置30に開始させる指示のことである。ここで、ロボット制御部367は、図示しない表示制御部が表示部35に表示させた画面においてユーザーから動作開始指示を受け付ける構成であってもよく、ユーザーから受け付けられた操作に基づいて教示装置50から出力された動作開始指示を受け付ける構成であってもよく、ロボット制御装置30及び教示装置50と別体のスイッチ等から出力された動作開始指示を受け付ける構成であってもよい。
また、ロボット制御部367は、ハンドHに加えられた外力であって所定の動作開始条件を満たした外力を動作開始指示として受け付ける構成であってもよい。動作開始条件は、例えば、ハンドHに対して所定の動作開始方向に加えられた力の大きさが所定の第1閾値以上であることである。この場合、動作開始方向は、ユーザーによりロボット制御部367に予め入力された方向であり、ハンドHを並進させる並進方向である。動作開始方向は、以下において説明する所定方向と異なる方向であることが望ましいが、所定方向と同じ方向であってもよい。第1閾値は、ユーザーによりロボット制御部367に予め入力された閾値であり、如何なる閾値であってもよい。また、動作開始条件は、ハンドHに対して所定の動作開始方向に加えられた力の大きさが所定の第1閾値以上であることに代えて、ハンドHに対して所定の動作開始方向に加えられたモーメントの大きさが所定の第2閾値以上であることであってもよい。この場合、動作開始方向は、ユーザーによりロボット制御部367に予め入力された方向であり、ハンドHを回転させる回転方向である。第2閾値は、ユーザーによりロボット制御部367に予め入力された閾値であり、如何なる閾値であってもよい。また、動作開始条件は、これらの条件に代えて、他の条件であってもよい。
ステップS405において、動作開始指示を受け付けたと判定した場合(ステップS405−YES)、ロボット制御部367は、力検出情報取得部361が力検出部21から取得した力検出情報に基づいて、第2所定条件を満たす外力がハンドHに加えられたか否かを判定する(ステップS410)。
ステップS410において第2所定条件を満たす外力がハンドHに加えられたと判定した場合(ステップS410−YES)、ロボット制御部367は、ロボット制御部367は、制御点T1を所定方向に所定量だけ移動させる(ステップS420)。
所定方向は、ユーザーによりロボット制御部367に予め入力された方向である。また、所定量は、ユーザーによりロボット制御部367に予め入力された移動量である。所定方向が制御点T1を並進させる並進方向であった場合、所定量は、制御点T1を並進させる並進移動量であり、例えば、1ミリメートルである。なお、この場合の所定量は、1ミリメートルより短い並進移動量であってもよく、1ミリメートルより長い並進移動量であってもよい。また、所定方向が制御点T1を回転させる回転方向であった場合、所定量は、制御点T1を回転させる回転角度であり、例えば、1度である。なお、この場合の所定量は、1度に代えて、1度より小さな回転角度であってもよく、1度より大きさ回転角度であってもよい。このように、所定方向は、並進方向と回転方向のうちいずれか一方又は両方である。
ステップS420において制御点T1を所定方向に所定量だけ移動させた後、ロボット制御部367は、動作終了指示を受け付けたか否かについて判定する(ステップS430)。動作終了指示は、ロボット20を動作させる処理をロボット制御装置30に終了させる指示のことである。ここで、ロボット制御部367は、図示しない表示制御部が表示部35に表示させた画面においてユーザーから動作終了指示を受け付ける構成であってもよく、ユーザーから受け付けられた操作に基づいて教示装置50から出力された動作終了指示を受け付ける構成であってもよく、ロボット制御装置30及び教示装置50と別体のスイッチ等から出力された動作終了指示を受け付ける構成であってもよい。
また、ロボット制御装置30は、ハンドHに加えられた外力であって所定の動作終了条件を満たした外力を動作終了指示として受け付ける構成であってもよい。動作終了条件は、例えば、ハンドHに対して所定の動作終了方向に加えられた力の大きさが所定の第3閾値以上であることである。この場合、動作終了方向は、ユーザーによりロボット制御部367に予め入力された方向であり、ハンドHを並進させる並進方向である。動作終了方向は、前述の所定方向と異なる方向であることが望ましいが、所定方向と同じ方向であってもよい。第3閾値は、ユーザーによりロボット制御部367に予め入力された閾値であり、如何なる閾値であってもよい。また、動作終了条件は、ハンドHに対して所定の動作終了方向に加えられた力の大きさが所定の第3閾値以上であることに代えて、ハンドHに対して所定の動作終了方向に加えられたモーメントの大きさが所定の第4閾値以上であることであってもよい。この場合、動作終了方向は、ユーザーによりロボット制御部367に予め入力された方向であり、ハンドHを回転させる回転方向である。第4閾値は、ユーザーによりロボット制御部367に予め入力された閾値であり、如何なる閾値であってもよい。また、動作終了条件は、これらの条件に代えて、他の条件であってもよい。
ステップS430において動作終了指示を受け付けていないと判定した場合(ステップS430−NO)、ロボット制御部367は、ステップS410に遷移し、再び第2所定条件が満たされるまで待機する。一方、動作終了指示を受け付けたと判定した場合(ステップS430−YES)、ロボット制御部367は、処理を終了する。
一方、ステップS410において第2所定条件を満たす外力がハンドHに加えられていないと判定した場合(ステップS410−NO)、ロボット制御部367は、ステップS430に遷移し、動作終了指示を受け付けたか否かについて判定する。
このように、ロボット制御装置30は、第2モードにおいてロボット20を動作させる際、ハンドHに加えられた外力に基づいて、ハンドHを所定方向に所定量だけ移動させる。これにより、ロボット制御部367は、第2モードにおいて、ユーザーによりハンドHに加えられる外力によるハンドHの移動量を一定に保つことができる。その結果、ロボット制御装置30は、例えば、所望の所定量がユーザーによりロボット制御部367に予め入力されることにより、制御点T1の位置及び姿勢を高い精度で所望の位置及び姿勢へと変化させることができる。
なお、ステップS410においてユーザーがハンドHに第2所定条件を満たす外力を加え続けた場合であっても、この一例におけるロボット制御部367は、ステップS420の処理を1回のみ行う。すなわち、当該ロボット制御部367は、ステップS410においてユーザーがハンドHに第2所定条件を満たす外力を加え続けたとしても、所定方向に所定量の所定回数倍だけ制御点T1を動かさない。ユーザーが所定方向に所定量の整数倍だけ制御点T1を動かしたい場合は、ユーザーは、ハンドHに対して第2所定条件を満たす外力を加えてからハンドHに加えていた当該外力を解放するまでの作業を所定回数繰り返す必要がある。
第2モードにおいてロボット20を動作させ、ユーザーによりハンドHの位置及び姿勢の調整が行われた後、ロボット制御装置30は、図6に示したフローチャートの処理によって教示装置50に現在の制御点T1の位置及び姿勢を示す情報を出力する。教示装置50は、ロボット制御装置30から取得した当該情報に基づいて教示点情報を生成する。そして、教示装置50は、生成した当該教示点情報をロボット制御装置30に出力する。ロボット制御装置30は、教示装置50から取得した当該教示点情報を記憶する。例えば、ロボット制御装置30は、教示装置50から取得した待機教示点及び最終目標教示点のそれぞれを示す教示点情報を記憶する。これにより、ロボット制御装置30は、第2モードにおいて、ハンドHを所定方向に所定量だけ移動させた後に記憶された制御点T1の位置及び姿勢に基づいてロボット20を制御することができる。
ここで、前述の第2所定条件について説明する。第2所定条件は、例えば、ハンドHに対して移動実行方向に加えられた力の大きさが第5閾値以上であることである。この場合、移動実行方向は、ユーザーによりロボット制御部367に予め入力された方向であり、ハンドHを並進させる並進方向である。第5閾値は、ユーザーによりロボット制御部367に予め入力された閾値であり、如何なる閾値であってもよい。この場合の第2所定条件における移動実行方向と、前述の所定方向との具体例を、図8〜図10のそれぞれに示した。
図8は、第2所定条件における移動実行方向と所定方向との具体例1を示す図である。当該具体例1は、移動実行方向及び所定方向が両方とも並進方向であり、移動実行方向と所定方向とが互いに異なる方向である場合の例である。図8には、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合の側面図が示されている。
図8には、移動実行方向が、矢印が示す方向A1によって示されている。図8に示した例では、移動実行方向は、制御点座標系TC1のY軸の正方向である。すなわち、ロボット制御部367は、外力としてハンドHを当該正方向に並進させる力がハンドHに加えられ、当該力の大きさが第5閾値以上であった場合、制御点T1(すなわち、ハンドH)を所定方向に所定量だけ移動させる。なお、移動実行方向は、制御点座標系TC1の座標軸のうちのY軸の正方向に代えて、ハンドHを並進させる他の並進方向であってもよい。当該他の並進方向は、制御点座標系TC1のいずれかの座標軸に沿った並進方向であってもよく、制御点座標系TC1のいずれの座標軸にも沿わない並進方向であってもよい。
また、図8には、所定方向が、矢印が示す方向A2によって示されている。図8に示した例では、所定方向は、制御点座標系TC1のZ軸の負方向である。すなわち、ロボット制御部367は、外力としてハンドHを制御点座標系TC1のY軸の正方向に並進させる力がハンドHに加えられ、当該力の大きさが第5閾値以上であった場合、制御点T1(すなわち、ハンドH)を制御点座標系TC1のZ軸の負方向に所定量だけ移動させる。この場合、所定量は、制御点T1を並進させる移動量である。なお、所定方向は、制御点座標系TC1の座標軸のうちのZ軸の負方向に代えて、制御点T1を並進させる他の並進方向であってもよい。当該他の並進方向は、制御点座標系TC1のいずれかの座標軸に沿った並進方向であってもよく、制御点座標系TC1のいずれの座標軸にも沿わない並進方向であってもよい。
図9は、第2所定条件における移動実行方向と所定方向との具体例2を示す図である。当該具体例3は、移動実行方向及び所定方向が両方とも並進方向であり、移動実行方向と所定方向とが同じ方向である場合の例である。図9には、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合の側面図が示されている。
図9には、移動実行方向が、矢印が示す方向A3によって示されている。図9に示した例では、移動実行方向は、制御点座標系TC1のZ軸の負方向である。すなわち、ロボット制御部367は、外力としてハンドHを当該負方向に並進させる力がハンドHに加えられ、当該力の大きさが第5閾値以上であった場合、制御点T1(すなわち、ハンドH)を所定方向に所定量だけ移動させる。なお、移動実行方向は、制御点座標系TC1の座標軸のうちのZ軸の負方向に代えて、ハンドHを並進させる他の並進方向であってもよい。当該他の方向は、制御点座標系TC1のいずれかの座標軸に沿った並進方向であってもよく、制御点座標系TC1のいずれの座標軸にも沿わない並進方向であってもよい。
また、図9には、所定方向が、矢印が示す方向A4によって示されている。図9に示した例では、所定方向は、移動実行方向と同じ方向であり、制御点座標系TC1のZ軸の負方向である。すなわち、ロボット制御部367は、外力としてハンドHを制御点座標系TC1のZ軸の負方向に並進させる力がハンドHに加えられ、当該力の大きさが第5閾値以上であった場合、制御点T1(すなわち、ハンドH)を当該負方向に所定量だけ移動させる。この場合、所定量は、制御点T1を並進させる移動量である。なお、所定方向は、制御点座標系TC1の座標軸のうちのZ軸の負方向に代えて、制御点T1を並進させる他の並進方向であってもよい。当該他の並進方向は、制御点座標系TC1のいずれかの座標軸に沿った並進方向であってもよく、制御点座標系TC1のいずれの座標軸にも沿わない並進方向であってもよい。
図10は、第2所定条件における移動実行方向と所定方向との具体例3を示す図である。当該具体例3は、移動実行方向が並進方向であり、所定方向が回転方向である場合の例である。図10には、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合の側面図が示されている。
図10には、移動実行方向が、矢印が示す方向A5によって示されている。図10に示した例では、移動実行方向は、制御点座標系TC1のY軸の正方向である。すなわち、ロボット制御部367は、外力としてハンドHを当該正方向に並進させる力がハンドHに加えられ、当該力の大きさが第5閾値以上であった場合、制御点T1(すなわち、ハンドH)を所定方向に所定量だけ移動させる。なお、移動実行方向は、制御点座標系TC1の座標軸のうちのY軸の正方向に代えて、ハンドHを並進させる他の並進方向であってもよい。当該他の並進方向は、制御点座標系TC1のいずれかの座標軸に沿った並進方向であってもよく、制御点座標系TC1のいずれの座標軸にも沿わない並進方向であってもよい。
また、図10には、所定方向が、矢印が示す方向A6によって示されている。図10に示した例では、所定方向は、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合において当該X軸周りにハンドHを時計回りに回転させる回転方向である。すなわち、ロボット制御部367は、外力としてハンドHを制御点座標系TC1のY軸の正方向に並進させる力がハンドHに加えられ、当該力の大きさが第5閾値以上であった場合、制御点T1(すなわち、ハンドH)を、当該回転方向に所定量だけ移動させる。この場合、所定量は、制御点T1を回転させる回転量(回転角度)である。なお、所定方向は、当該回転方向に代えて、他の回転方向であってもよい。当該他の回転方向は、制御点座標系TC1のいずれかの座標軸周りの回転方向であってもよく、制御点座標系TC1のいずれの座標軸とも異なる軸周りの回転方向であってもよい。
なお、第2所定条件は、例えば、ハンドHに対して移動実行方向に加えられたモーメントの大きさが第6閾値以上であることであってもよい。この場合、移動実行方向は、ユーザーによりロボット制御部367に予め入力された方向であり、ハンドHを回転させる回転方向である。第6閾値は、ユーザーによりロボット制御部367に予め入力された閾値であり、如何なる閾値であってもよい。この場合の第2所定条件における移動実行方向と、前述の所定方向との具体例を、図11〜図13のそれぞれに示した。
図11は、第2所定条件における移動実行方向と所定方向との具体例4を示す図である。当該具体例4は、移動実行方向及び所定方向の両方が回転方向であり、移動実行方向及び所定方向が同じ方向である場合の例である。図11には、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合の側面図が示されている。
図11には、移動実行方向が、矢印が示す方向A7によって示されている。図11に示した例では、移動実行方向は、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合において当該X軸周りにハンドHを時計回りに回転させる回転方向である。すなわち、ロボット制御部367は、外力としてハンドHを当該回転方向に回転させるモーメントがハンドHに加えられ、当該モーメントの大きさが第6閾値以上であった場合、制御点T1(すなわち、ハンドH)を所定方向に所定量だけ移動させる。なお、移動実行方向は、当該回転方向に代えて、ハンドHを回転させる他の回転方向であってもよい。当該他の回転方向は、制御点座標系TC1のいずれかの座標軸周りの回転方向であってもよく、制御点座標系TC1のいずれの座標軸とも異なる軸周りの回転方向であってもよい。
また、図11には、所定方向が、矢印が示す方向A7によって示されている。図11に示した例では、所定方向は、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合において当該X軸周りにハンドHを時計回りに回転させる回転方向である。すなわち、ロボット制御部367は、外力としてハンドHを当該回転方向に回転させるモーメントがハンドHに加えられ、当該モーメントの大きさが第6閾値以上であった場合、制御点T1(すなわち、ハンドH)を、当該回転方向に所定量だけ移動させる。この場合、所定量は、制御点T1を回転させる回転量(回転角度)である。なお、所定方向は、当該回転方向に代えて、制御点T1を回転させる他の回転方向であってもよい。当該他の回転方向は、制御点座標系TC1のいずれかの座標軸周りの回転方向であってもよく、制御点座標系TC1のいずれの座標軸とも異なる軸周りの回転方向であってもよい。
図12は、第2所定条件における移動実行方向と所定方向との具体例5を示す図である。当該具体例5は、移動実行方向及び所定方向の両方が回転方向であり、移動実行方向及び所定方向が互いに異なる方向である場合の例である。図12には、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合の側面図が示されている。
図12には、移動実行方向が、矢印が示す方向A9によって示されている。図12に示した例では、移動実行方向は、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合において当該X軸周りにハンドHを時計回りに回転させる回転方向である。すなわち、ロボット制御部367は、外力としてハンドHを当該回転方向に回転させるモーメントがハンドHに加えられ、当該モーメントの大きさが第6閾値以上であった場合、制御点T1(すなわち、ハンドH)を所定方向に所定量だけ移動させる。なお、移動実行方向は、当該回転方向に代えて、ハンドHを回転させる他の回転方向であってもよい。当該他の回転方向は、制御点座標系TC1のいずれかの座標軸周りの回転方向であってもよく、制御点座標系TC1のいずれの座標軸とも異なる軸周りの回転方向であってもよい。
また、図12には、所定方向が、矢印が示す方向A10によって示されている。図12に示した例では、所定方向は、制御点座標系TC1のY軸の正方向から負方向に向かってハンドHを見た場合において当該Y軸周りにハンドHを時計回りに回転させる回転方向である。すなわち、ロボット制御部367は、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合において当該X軸周りにハンドHを時計回りに回転させる回転方向に回転させるモーメントが外力としてハンドHに加えられ、当該モーメントの大きさが第6閾値以上であった場合、制御点T1(すなわち、ハンドH)を、制御点座標系TC1のY軸の正方向から負方向に向かってハンドHを見た場合において当該Y軸周りにハンドHを時計回りに回転させる回転方向に所定量だけ移動させる。この場合、所定量は、制御点T1を回転させる回転量(回転角度)である。なお、所定方向は、当該回転方向に代えて、制御点T1を回転させる他の回転方向であってもよい。当該他の回転方向は、制御点座標系TC1のいずれかの座標軸周りの回転方向であってもよく、制御点座標系TC1のいずれの座標軸とも異なる軸周りの回転方向であってもよい。
図13は、第2所定条件における移動実行方向と所定方向との具体例6を示す図である。当該具体例6は、移動実行方向が回転方向であり、所定方向が並進方向である場合の例である。図13には、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合の側面図が示されている。
図13には、移動実行方向が、矢印が示す方向A11によって示されている。図13に示した例では、移動実行方向は、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合において当該X軸周りにハンドHを時計回りに回転させる回転方向である。すなわち、ロボット制御部367は、外力としてハンドHを当該回転方向に回転させるモーメントがハンドHに加えられ、当該モーメントの大きさが第6閾値以上であった場合、制御点T1(すなわち、ハンドH)を所定方向に所定量だけ移動させる。なお、移動実行方向は、当該回転方向に代えて、ハンドHを回転させる他の回転方向であってもよい。当該他の回転方向は、制御点座標系TC1のいずれかの座標軸周りの回転方向であってもよく、制御点座標系TC1のいずれの座標軸とも異なる軸周りの回転方向であってもよい。
また、図13には、所定方向が、矢印が示す方向A12によって示されている。図13に示した例では、所定方向は、制御点座標系TC1のZ軸の負方向である。すなわち、ロボット制御部367は、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合において当該X軸周りにハンドHを時計回りに回転させる回転方向に回転させるモーメントが外力としてハンドHに加えられ、当該モーメントの大きさが第6閾値以上であった場合、制御点T1(すなわち、ハンドH)を制御点座標系TC1のZ軸の負方向に所定量だけ移動させる。この場合、所定量は、制御点T1を並進させる移動量である。なお、所定方向は、制御点座標系TC1の座標軸のうちのZ軸の負方向に代えて、制御点T1を並進させる他の並進方向であってもよい。当該他の並進方向は、制御点座標系TC1のいずれかの座標軸に沿った並進方向であってもよく、制御点座標系TC1のいずれの座標軸にも沿わない並進方向であってもよい。
なお、ロボット制御部367は、第2モードにおいて、例えば、ハンドHに対して移動実行方向に加えられた力の大きさが第5閾値以上である場合に制御点T1を所定方向に所定量だけ移動させ、当該力が第5閾値よりも大きな閾値である第7閾値以上である場合に制御点T1を所定方向と異なる方向である第2所定方向に所定量と異なる量である第2所定量だけ移動させる構成であってもよい。すなわち、ロボット制御部367は、ハンドHに対して加えられた力の段階的(離散的)な大きさの違いに応じて、当該違いに応じた方向に当該違いに応じた量だけ制御点T1を移動させる構成であってもよい。
また、ロボット制御部367は、ハンドHに加えられた外力が第2所定条件を満たす場合、所定の関節に備えられたアクチュエーターの回転角を所定方向に所定量だけ変化(移動)させる構成であってもよい。アクチュエーターの回転角を所定方向に所定量だけ変化させる場合、所定方向は、アクチュエーターの回転方向であり、所定量は、アクチュエーターの回転角である。
また、ロボット制御部367は、力検出部21がマニピュレーターMの各関節に備えられたトルクセンサーである場合、当該各関節のいずれかに加えられた外力に基づいて、所定の関節に備えられたアクチュエーターの回転角又は制御点T1を所定方向に所定量だけ移動させる構成であってもよい。アクチュエーターの回転角を所定方向に所定量だけ移動させる場合、所定方向は、アクチュエーターの回転方向であり、所定量は、アクチュエーターの回転角である。
また、ロボット制御部367は、ステップS410において、ハンドHに加えられた外力が第2所定条件を満たす状態が所定時間以上続いた場合に、ハンドHに加えられた外力が第2所定条件を満たしていると判定する構成であってもよく、ハンドHに加えられた外力が第2所定条件を満たす状態が一度でも実現した場合に、ハンドHに加えられた外力が第2所定条件を満たしていると判定する構成であってもよい。
<動作モードが第2モードの場合にロボット制御装置がロボットを動作させる処理の変形例>
上記において説明した所定方向は、ハンドHの部分に応じた方向であってもよい。当該部分は、外力が加えられた部分のことである。すなわち、ロボット制御部367は、ハンドHに加えられた外力に基づいて、ハンドHの部分のうちの当該外力が加わった部分に応じた方向にハンドHを所定量だけ移動させる。これにより、ロボット制御部367は、ハンドHを移動させる方向をユーザーに容易に変更させることができる。
ここで、図14及び図15を参照し、所定方向がハンドHの部分に応じた方向である場合の移動実行方向と所定方向との具体例について説明する。なお、以下において説明する具体例においては、一例として、第2所定条件が、ハンドHに対して移動実行方向に加えられた力の大きさが第5閾値以上であることである場合について説明する。なお、上記において説明した具体例の場合と同様に、第2所定条件は、ハンドHに対して移動実行方向に加えられたモーメントの大きさが第6閾値以上であることであってもよい。
図14は、所定方向がハンドHの部分に応じた方向である場合の移動実行方向と所定方向との具体例1を示す図である。当該具体例1は、ハンドHの部分のうちの制御点座標系TC1のY軸から制御点座標系TC1のZ軸の正方向側の部分である上側部分に外力が加えられた場合の例である。図14には、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合の側面図が示されている。
図14には、移動実行方向が、矢印が示す方向A13によって示されている。また、図14には、矢印によってハンドHに力F1が加えられた部分が示されている。図14に示した例では、移動実行方向は、制御点座標系TC1のY軸の正方向である。また、当該例では、ハンドHの部分の上側部分に外力が加えられている。すなわち、ロボット制御部367は、外力としてハンドHを当該正方向に並進させる力F1がハンドHに加えられ、当該力の大きさが第5閾値以上であった場合、制御点T1(すなわち、ハンドH)を、ハンドHの上側部分に応じた所定方向に所定量だけ移動させる。なお、移動実行方向は、制御点座標系TC1の座標軸のうちのY軸の正方向に代えて、ハンドHを並進させる他の並進方向であってもよい。当該他の並進方向は、制御点座標系TC1のいずれかの座標軸に沿った並進方向であってもよく、制御点座標系TC1のいずれの座標軸にも沿わない並進方向であってもよい。
また、図14には、所定方向が、矢印が示す方向A14によって示されている。図14に示した例では、ハンドHの上側部分に応じた所定方向は、制御点座標系TC1のZ軸の正方向である。すなわち、ロボット制御部367は、外力としてハンドHを制御点座標系TC1のY軸の正方向に並進させる力がハンドHの上側部分に加えられ、当該力の大きさが第5閾値以上であった場合、制御点T1(すなわち、ハンドH)を制御点座標系TC1のZ軸の正方向に所定量だけ移動させる。この場合、所定量は、制御点T1を並進させる移動量である。なお、所定方向は、制御点座標系TC1の座標軸のうちのZ軸の正方向に代えて、制御点T1を並進させる他の並進方向であってもよい。当該他の並進方向は、制御点座標系TC1のいずれかの座標軸に沿った並進方向であってもよく、制御点座標系TC1のいずれの座標軸にも沿わない並進方向であってもよい。また、所定方向は、並進方向に代えて、回転方向であってもよい。
図15は、所定方向がハンドHの部分に応じた方向である場合の移動実行方向と所定方向との具体例2を示す図である。当該具体例2は、ハンドHの部分のうちの制御点座標系TC1のY軸から制御点座標系TC1のZ軸の負方向側の部分である下側部分に外力が加えられた場合の例である。図15には、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合の側面図が示されている。
図15には、移動実行方向が、矢印が示す方向A15によって示されている。また、図15には、矢印によってハンドHに力F2が加えられた部分が示されている。図15に示した例では、移動実行方向は、制御点座標系TC1のY軸の正方向である。また、当該例では、ハンドHの部分の下側部分に外力が加えられている。すなわち、ロボット制御部367は、外力としてハンドHを当該正方向に並進させる力F2がハンドHに加えられ、当該力の大きさが第5閾値以上であった場合、制御点T1(すなわち、ハンドH)を、ハンドHの下側部分に応じた所定方向に所定量だけ移動させる。なお、移動実行方向は、制御点座標系TC1の座標軸のうちのY軸の正方向に代えて、ハンドHを並進させる他の並進方向であってもよい。当該他の並進方向は、制御点座標系TC1のいずれかの座標軸に沿った並進方向であってもよく、制御点座標系TC1のいずれの座標軸にも沿わない並進方向であってもよい。
また、図15には、所定方向が、矢印が示す方向A16によって示されている。図15に示した例では、ハンドHの下側部分に応じた所定方向は、制御点座標系TC1のZ軸の負方向である。すなわち、ロボット制御部367は、外力としてハンドHを制御点座標系TC1のY軸の正方向に並進させる力がハンドHの下側部分に加えられ、当該力の大きさが第5閾値以上であった場合、制御点T1(すなわち、ハンドH)を制御点座標系TC1のZ軸の負方向に所定量だけ移動させる。この場合、所定量は、制御点T1を並進させる移動量である。なお、所定方向は、制御点座標系TC1の座標軸のうちのZ軸の負方向に代えて、制御点T1を並進させる他の並進方向であってもよい。当該他の並進方向は、制御点座標系TC1のいずれかの座標軸に沿った並進方向であってもよく、制御点座標系TC1のいずれの座標軸にも沿わない並進方向であってもよい。また、所定方向は、並進方向に代えて、回転方向であってもよい。
このように、ロボット制御部367は、ハンドHに加えられた外力に基づいて、ハンドHの部分のうちの当該外力が加わった部分に応じた方向にハンドHを所定量だけ移動させる。これにより、ロボット制御部367は、ハンドHを移動させる方向をユーザーに容易に変更させることができる。
<動作モードが第1モードの場合にロボット制御装置がロボットを動作させる処理>
以下、図16〜図18を参照し、動作モードが第1モードの場合にロボット制御装置30がロボット20を動作させる処理について説明する。
図16は、動作モードが第1モードの場合にロボット制御装置30がロボット20を動作させる処理の流れの一例を示すフローチャートである。なお、図16に示したフローチャートでは、制御点T1がすでに待機教示点と一致している場合について説明する。例えば、ロボット制御装置30は、前述の第2モード又は第3モードにおいて、ユーザーによりハンドHに加えられた外力に基づいて、制御点T1を待機教示点と一致させることができる。また、ロボット制御装置30の動作モードがすでに第1モードに切り替えられている場合について説明する。
ロボット制御部367は、動作開始指示を受け付けるまで待機する(ステップS505)。ここで、ロボット制御部367は、図示しない表示制御部が表示部35に表示させた画面においてユーザーから動作開始指示を受け付ける構成であってもよく、ユーザーから受け付けられた操作に基づいて教示装置50から出力された動作開始指示を受け付ける構成であってもよく、ロボット制御装置30及び教示装置50と別体のスイッチ等から出力された動作開始指示を受け付ける構成であってもよい。また、ロボット制御部367は、ハンドHに加えられた外力であって所定の動作開始条件を満たした外力を動作開始指示として受け付ける構成であってもよい。
ステップS505において、動作開始指示を受け付けたと判定した場合(ステップS505−YES)、ロボット制御部367は、力検出情報取得部361が力検出部21から取得した力検出情報に基づいて、ハンドHに加えられた外力が第1所定条件を満たす状態を実現する位置及び姿勢まで制御点T1の位置及び姿勢を変化させ始める(ステップS510)。具体的には、ロボット制御部367は、当該状態を実現する位置及び姿勢を、ロボット制御部367に予め入力された力制御パラメーターと、動力学運動方程式と、当該力検出情報とに基づいて算出する。そして、ロボット制御部367は、制御点T1の位置及び姿勢を、算出した位置及び姿勢へと変化させ始める。
第1所定条件は、この一例において、以下に示す1)〜3)の3つの条件を満たすことである。なお、第1所定条件は、当該3つの条件の一部又は全部を満たす構成に代えて、他の条件を満たす構成であってもよく、当該3つの条件を満たす構成に加えて、他の条件を満たす構成であってもよい。
1)ハンドHに加えられた力のうちの制御点座標系TC1のZ軸の正方向に加えられた力の大きさが所定値以上であること
2)ハンドHに加えられた力のうちの制御点座標系TC1のX軸方向及びY軸方向に加えられた力の大きさが0[N]であること
3)ハンドHに加えられたモーメントのうちの制御点座標系TC1の各座標軸それぞれの周りのモーメントの大きさが0[N・m]であること
なお、上記の1)の条件は、ハンドHに加えられた力のうちの制御点座標系TC1のZ軸の負方向に加えられた力の大きさが所定値以上であることであってもよく、ハンドHに加えられた力のうちの制御点座標系TC1のX軸の正方向又は負方向に加えられた力の大きさが所定値以上であることであってもよく、ハンドHに加えられた力のうちの制御点座標系TC1のY軸の正方向又は負方向に加えられた力の大きさが所定値以上であることであってもよい。また、この一例において、制御点座標系TC1のZ軸の正方向は、並進方向であり、第1方向の一例である。また、制御点座標系TC1の各座標軸それぞれの周りの回転方向は、第2方向の一例である。
第1所定条件が上記の1)〜3)の3つの条件のそれぞれを満たすことである場合、ロボット制御部367は、制御点T1の姿勢を保持したまま、制御点T1の位置を制御点座標系TC1のZ軸の正方向へ移動させる。ここで、図17を参照し、ステップS510の処理について説明する。図17は、ステップS510において制御点T1の位置及び姿勢が変化し始める直前のタイミングにおけるハンドHと作業台TBとの位置関係の一例を示す図である。図17には、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合の側面図が示されている。図17に示したように、当該タイミングにおいて、制御点T1は、待機教示点P1と一致している。また、図17では、側面図では配置領域RAの範囲が判別しづらいため、配置領域RAを太線によって示してある。
図17に示した例では、ハンドHには、当該タイミングにおいて外力が加えられていない。すなわち、ロボット制御部367は、当該タイミングにおいてハンドHに加えられたモーメントがすでに上記の3)の条件を満たしているため、ステップS510において制御点T1の姿勢を保持する。また、ロボット制御部367は、当該タイミングにおいてハンドHに加えられた力のうちの制御点座標系TC1のX軸方向及びY軸方向に加えられた力がすでに上記の2)の条件を満たしているため、ステップS510において制御点T1の当該X軸方向及びY軸方向の位置を保持する。そして、ロボット制御部367は、当該タイミングにおいてハンドHに加えられた力のうちの制御点座標系TC1のZ軸の正方向に加えられた力が上記の1)の条件を満たしていないため、ステップS510においてハンドHに当該正方向への力が加わるようにハンドHを当該正方向と反対の方向へ移動させ始める。図17では、当該正方向を矢印が示す方向A17によって示されている。
ステップS510において制御点T1の位置及び姿勢を変化させ始めた後、ロボット制御部367は、力検出情報取得部361が力検出部21から取得した力検出情報に基づいて、上記の第1所定条件が満たされるまでステップS510において開始した制御点T1の移動を継続する(ステップS520)。第1所定条件が満たされたと判定した場合(ステップS520−YES)、ロボット制御部367は、ユーザーが所望する位置及び姿勢に制御点T1の位置及び姿勢が一致したと判定し、制御点T1の位置及び姿勢の変化を停止させる(ステップS530)。
ここで、図18を参照し、ステップS530の処理について説明する。図18は、ステップS530において制御点T1の位置及び姿勢の変化が停止される直前のタイミングにおけるハンドHと作業台TBとの位置関係の一例を示す図である。図18には、制御点座標系TC1のX軸の負方向から正方向に向かってハンドHを見た場合の側面図が示されている。また、図18では、側面図では配置領域RAの範囲が判別しづらいため、配置領域RAを太線によって示してある。図18に示した例では、ハンドHには、当該タイミングにおいて作業台TBからの垂直効力が外力として加えられている。ステップS510において開始した制御点T1の位置及び姿勢の変化によって当該垂直効力が所定値以上となった場合、ロボット制御部367は、当該タイミングにおいてハンドHに加えられた外力が第1所定条件を満たしているため、制御点T1の位置及び姿勢の変化を停止させる。
このように、ロボット制御装置30は、第1モードによってロボット20を動作させる際、ハンドHに加えられた外力が第1所定条件を満たす状態を実現する位置及び姿勢まで制御点T1の位置及び姿勢を変化させる。これにより、ロボット制御部367は、第1モードにおいて、ユーザーによりハンドHに外力が加えられることなく、ロボット20の位置及び姿勢を、作業台TBに対応付けられた所望の位置及び姿勢へと高い精度で変化させることができる。その結果、ロボット制御装置30は、例えば、ユーザーが所望する条件が第1所定条件としてロボット制御部367に入力された場合、ハンドHの位置及び姿勢の調整を精度よく行うことができる。
第1モードにおいてロボット20を動作させ、ユーザーによりハンドHの位置及び姿勢の調整が行われた後、ロボット制御装置30は、図6に示したフローチャートの処理によって教示装置50に現在の制御点T1の位置及び姿勢を示す情報を出力する。教示装置50は、ロボット制御装置30から取得した当該情報に基づいて教示点情報を生成する。そして、教示装置50は、生成した当該教示点情報をロボット制御装置30に出力する。ロボット制御装置30は、教示装置50から取得した当該教示点情報を記憶する。例えば、ロボット制御装置30は、教示装置50から取得した最終目標教示点を示す教示点情報を記憶する。これにより、ロボット制御装置30は、第1モードにおいて、第1所定条件を満たされた場合に記憶された制御点T1の位置及び姿勢に基づいてロボット20を動作させることができる。
<第1モード及び第2モードによる微調整>
上記において説明したように、第1モード及び第2モードにおいてロボット20を動作させた場合、ロボット制御装置30は、ハンドHの位置及び姿勢の調整を精度よく行うことができる。すなわち、ロボット制御装置30は、ハンドHの位置及び姿勢の微調整を行うことができる。
このような微調整は、例えば、直接教示において行われる。直接教示では、ロボット制御装置30が第3モードによってロボット20を動作させる。このため、ユーザーは、ハンドHに外力を加えることによって、ハンドHの位置及び姿勢を変更する。しかし、ユーザーが所望する外力を、ユーザーが精度よくハンドHに加えることは困難である。従って、ユーザーは、第3モードによってロボット制御装置30にロボット20を動作させることによってハンドHの位置及び姿勢を、ユーザーが所望する位置及び姿勢に近づけた後、第1モードと第2モードとのうちいずれか一方又は両方によってロボット制御装置30にロボット20を動作させる。すなわち、ロボット制御装置30は、ハンドHの位置及び姿勢を記憶する直接教示において、ハンドHに加わる外力が第1所定条件を満たすまでロボット20を動かす第1モードと、ハンドHに加えられた外力に基づきロボット20を動かす第2モードとのうちいずれか一方又は両方によって教示する。これにより、ロボット制御装置30は、ハンドHの位置及び姿勢をユーザーが所望する位置及び姿勢に精度よく一致させることができる。
なお、このような微調整は、直接教示に代えて、ユーザーがジョグキーを操作することによってロボット制御装置30にロボット20を動作させ、ロボット制御装置30にハンドHの位置及び姿勢を記憶させるオンライン教示(オンラインティーチング)や、これから開発される方法に基づく教示において行われてもよい。
以上のように、制御装置25は、ロボット(この一例において、ロボット20)の位置及び姿勢を記憶する際、ハンド(この一例において、ハンドH)に加わる外力が所定条件(この一例において、第1所定条件)を満たすまでロボットを動かす第1モードと、ロボットが備える第1部位(この一例において、ハンドH)に加えられた外力に基づきロボットを動かす第2モードとを切り替える。これにより、制御装置25は、第1モードと第2モードとのいずれかによって、ロボットの位置及び姿勢を高い精度で所望の位置及び姿勢へと変化させることができる。
また、制御装置25は、第1モードにおいて、所定条件が満たされるまで、力検出部(この一例において、力検出部21)の出力に基づく制御によってハンドを対象物(この一例において、作業台TB)に近づける。これにより、制御装置25は、第1モードにおいて、ユーザーによりハンドに外力を加えさせることなく、ロボットの位置及び姿勢を、対象物に対応付けられた所望の位置及び姿勢へと高い精度で変化させることができる。
また、制御装置25は、第1モードにおいて、ハンドに加わる外力のうちの少なくとも第1方向に向かう外力が0より大きくなり、且つ、ハンドに加わる外力のうちの少なくとも第1方向(この一例において、制御点座標系TC1のZ軸の正方向)と異なる第2方向(この一例において、制御点座標系TC1の各座標軸それぞれの周りの回転方向)に向かう外力が0となるまでロボットを動かす。これにより、制御装置25は、第1モードにおいて、ロボットの姿勢を保持したまま、第1方向と反対の方向に向かってロボットの位置を移動させることができる。
また、制御装置25は、第1モードにおいて、ハンドに加わる力のうちの少なくとも並進方向である第1方向に向かう力が0より大きくなり、且つ、回転方向である第2方向に向かうモーメントが0となるまでロボットを動かす。これにより、制御装置25は、第1モードにおいて、ロボットの姿勢を保持したまま、並進方向である第1方向と反対の方向に向かってロボットの位置を移動させることができる。
また、制御装置25は、第1モードにおいて、所定条件が満たされた場合、現在のロボットの位置及び姿勢(この一例において、制御点T1の位置及び姿勢)を記憶する。これにより、制御装置25は、第1モードにおいて、所定条件を満たされた場合に記憶されたロボットの位置及び姿勢に基づいてロボットを動作させることができる。
また、制御装置25は、第2モードにおいて、ロボットが備える第1部位(この一例において、ハンドH)に加えられた外力に基づいて、ロボットが備える第2部位(この一例において、ハンドH)を所定方向に所定量だけ移動させる。これにより、制御装置25は、第2モードにおいて、ユーザーにより第1部位に加えられる外力基づいて、ロボットの位置及び姿勢を高い精度で所望の位置及び姿勢へと変化させることができる。
また、制御装置25は、第2部位を所定方向に所定量だけ移動させた後、現在のロボットの位置及び姿勢を記憶する。これにより、制御装置25は、第2モードにおいて、第2部位を所定方向に所定量だけ移動させた後に記憶されたロボットの位置及び姿勢に基づいてロボットを制御することができる。
また、制御装置25は、第2部位を並進方向と回転方向のうちいずれか一方又は両方に所定量だけ移動させた後、現在のハンドの位置及び姿勢を記憶する。これにより、制御装置25は、第2モードにおいて、第2部位を並進方向と回転方向のうちいずれか一方又は両方に所定量だけ移動させた後に記憶された位置及び姿勢に基づいてロボットを制御することができる。
また、制御装置25は、ロボットが備える第1部位に加えられた外力に応じて、第1部位の部分のうちの当該外力が加わった部分(この一例において、上側部分又は下側部分)に応じた方向に第2部位を所定量だけ移動させる。これにより、制御装置25は、第2部位を移動させる方向をユーザーに容易に変更させることができる。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
また、以上に説明した装置(例えば、制御装置25、ロボット制御装置30、教示装置50)における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD(Compact Disk)−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。