以下、本開示の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、重複する説明を省略する。まず、図1及び図2を参照して、一実施形態に係るロボットシステム10について説明する。ロボットシステム10は、ロボット12、制御装置14、及び教示装置16を備える。
本実施形態においては、ロボット12は、垂直多関節ロボットであって、ワーク(図示せず)に対して所定の作業(例えば、ワークハンドリング、溶接、切削加工、又はレーザ加工)を行う。具体的には、ロボット12は、ロボットベース18、旋回胴20、下腕部22、上腕部24、手首部26、及びエンドエフェクタ28を有する。
ロボットベース18は、作業セルの床、又は無人搬送車(AGV)の上に固定される。旋回胴20は、第1の関節軸A1の周りに回転可能となるように、ロボットベース18に設けられている。第1の関節軸A1は、例えば、鉛直方向と平行であって、旋回胴20に固設される。下腕部22は、第2の関節軸A2の周りに回動可能となるように、旋回胴20に設けられている。第2の関節軸A2は、第1の関節軸A1と直交し(すなわち、水平方向と平行であり)、下腕部22の基端部に固設される。
上腕部24は、基端アーム部24a、及び先端アーム部24bを有する。基端アーム部24aは、第3の関節軸A3の周りに回動可能となるように、下腕部22の先端部に設けられている。第3の関節軸A3は、第2の関節軸A2と平行であり、基端アーム部24aの基端部に固設される。先端アーム部24bは、第4の関節軸A4の周りに回動可能となるように、基端アーム部24aの先端部に設けられている。第4の関節軸A4は、第3の関節軸A3と直交し、先端アーム部24bの基端部に固設される。
手首部26は、手首ベース26a、及び手首フランジ26bを有する。手首ベース26aは、第5の関節軸A5の周りに回動可能となるように、先端アーム部24bの先端部に設けられている。第5の関節軸A5は、第4の関節軸A4と直交し、手首ベース26aに固設される。手首フランジ26bは、第6の関節軸A6の周りに回動可能となるように、手首ベース26aに設けられている。第6の関節軸A6は、第5の関節軸A5と直交し、手首フランジ26bに固設される。エンドエフェクタ28は、手首フランジ26bに着脱可能に取り付けられる。エンドエフェクタ28は、例えば、ロボットハンド、溶接トーチ、切削工具、又はレーザ加工ヘッドであって、ワークに対して作業(ワークハンドリング、溶接、切削加工、又はレーザ加工)を行う。
関節軸A1~A6の各々には、サーボモータ30(図2)が連結されている。これらサーボモータ30は、制御装置14からの指令に従って、関節軸A1~A6をそれぞれ回転駆動し、これにより、旋回胴20、下腕部22、基端アーム部24a、先端アーム部24b、手首ベース26a、及び手首フランジ26b(つまり、エンドエフェクタ28)を、関節軸A1~A6の周りにそれぞれ回動させる。すなわち、本実施形態においては、ロボット12は、6自由度を有する。
一方、サーボモータ30には、関節軸A1~A6の回転位置R1~R6(換言すれば、各サーボモータ30の回転位置)を検出する回転検出器32(図2)がそれぞれ設けられる。回転検出器32は、例えば、エンコーダ又はホール素子を有し、回転位置R1~R6の検出データDrを制御装置14に供給する。
また、ロボット12には、該ロボット12に加えられた力Fを検出するための力センサ34(図2)が設けられている。一例として、力センサ34は、ロボット12の任意の部位(例えば、手首部26又はロボットベース18)に設けられた6軸力覚センサを有する。他の例として、力センサ34は、関節軸A1~A6の各々に設けられたトルクセンサを有する。力センサ34は、検出した力Fの検出データDfを、制御装置14に供給する。
図1に示すように、ロボット12には、ロボット座標系C1、メカニカルインターフェース(MIF)座標系C2、及びツール座標系C3が設定される。ロボット座標系C1は、ロボット12の各可動コンポーネント(つまり、旋回胴20、下腕部22、基端アーム部24a、先端アーム部24b、手首ベース26a、手首フランジ26b、エンドエフェクタ28)の動作を制御するための固定座標系である。本実施形態においては、ロボット座標系C1は、その原点がロボットベース18の中心に配置され、そのz軸が第1の関節軸A1と平行となる(具体的には、一致する)ように、ロボットベース18に対して設定されている。
一方、MIF座標系C2は、ロボット座標系C1におけるロボット12の手先部(具体的には、手首フランジ26b及びエンドエフェクタ28)の位置Pを規定する移動座標系である。本実施形態においては、MIF座標系C2は、その原点が、手首フランジ26bの先端面中心(つまり、第6の関節軸A6の仮想延長線と手首フランジ26bの先端面との交点)に配置され、そのz軸が、第6の関節軸A6と平行となる(具体的には、一致する)ように、手首フランジ26bに対して設定されている。
ツール座標系C3は、ロボット座標系C1におけるエンドエフェクタ28の位置Pを規定する移動座標系であって、MIF座標系C2に対して既知の位置関係に配置される。本実施形態においては、ツール座標系C3は、その原点(いわゆる、TCP)が、エンドエフェクタ28の作業位置(例えば、ワーク把持位置、溶接位置、工具先端点、又はレーザ光出射口)に配置されるように、エンドエフェクタ28に対して設定されている。
エンドエフェクタ28を移動させるとき、制御装置14のプロセッサ46は、ロボット座標系C1においてツール座標系C3を設定し、設定したツール座標系C3によって表される位置Pにエンドエフェクタ28を位置決めするように、各サーボモータ30への指令を生成する。こうして、プロセッサ46は、各サーボモータ30を駆動し、ロボット座標系C1における任意の位置Pにエンドエフェクタ28を位置決めする。なお、本稿において「位置」とは、位置及び姿勢を示す場合がある。
教示装置16は、制御装置14を介してロボット12の動作を制御し、作業のための動作をロボット12に教示する。図2に示すように、教示装置16は、プロセッサ36、メモリ38、及びI/Oインターフェース40、表示装置42、及び入力装置44を有するコンピュータである。プロセッサ36は、CPU又はGPU等を有し、メモリ38、I/Oインターフェース40、表示装置42、及び入力装置44とバス45を介して通信可能に接続され、これらコンポーネントと通信しつつ、後述する各種機能を実現するための演算処理を行う。
メモリ38は、RAM又はROM等を有し、各種データを一時的又は恒久的に記憶する。メモリ38は、半導体メモリ、磁気記録媒体、又は光記録媒体等、コンピュータ読取可能な非一時的記録媒体であってもよい。I/Oインターフェース40は、例えば、イーサネット(登録商標)ポート、USBポート、光ファイバコネクタ、又はHDMI(登録商標)端子を有し、プロセッサ36からの指令の下、外部機器との間でデータを有線又は無線で通信する。
表示装置42は、液晶ディスプレイ又は有機ELディスプレイ等を有し、プロセッサ36からの指令の下、各種データを視認可能に表示する。入力装置44は、タッチパネル、押しボタン、スイッチ、キーボード、又はマウス等を有し、オペレータからデータの入力を受け付ける。なお、表示装置42及び入力装置44は、教示装置16の筐体に一体に組み込まれてもよいし、又は、教示装置16の筐体とは別体として設けられ、I/Oインターフェース40に接続されてもよい。教示装置16は、教示ペンダント、若しくは、ノート型又はタブレット型のPC等、如何なるタイプのコンピュータであってもよい。
制御装置14は、ロボット12の動作を制御する。具体的には、制御装置14は、プロセッサ46、メモリ48、I/Oインターフェース50、表示装置52、及び入力装置54を有するコンピュータである。なお、プロセッサ46、メモリ48、I/Oインターフェース50、表示装置52、及び入力装置54の構成は、プロセッサ36、メモリ38、及びI/Oインターフェース40、表示装置42、及び入力装置44と同様であるので、重複する説明を省略する。
プロセッサ46は、メモリ48、I/Oインターフェース50、表示装置52、及び入力装置54とバス55を介して通信可能に接続され、これらコンポーネントと通信しつつ、ロボット制御機能を実現するための演算処理を行う。本実施形態においては、I/Oインターフェース50は、教示装置16のI/Oインターフェース40に通信可能に接続されている。
オペレータは、ロボット12の動作を教示するための教示指令Ctを制御装置14に与え、ロボット12(具体的には、エンドエフェクタ28)を所望の方向へ移動させつつ、作業時にエンドエフェクタ28(又は、ツール座標系C3の原点)を位置決めする教示点Ptを教示する。オペレータは、教示装置16の入力装置44を操作することで、ロボット12の運転モードOMとして、ジョグティーチモードOM1、ダイレクトティーチモードOM2、又は動作再生モードOM3を選択する入力IN1を、教示装置16のプロセッサ36に与える。
教示装置16のプロセッサ36は、入力装置44を通して受け付けた入力IN1に従って、モード選択指令Cmを制御装置14に送信する。制御装置14のプロセッサ46は、モード選択指令Cmに従って、ロボット12の運転モードOMを、ジョグティーチモードOM1、ダイレクトティーチモードOM2、及び動作再生モードOM3の間で切り替える。
ジョグティーチモードOM1においては、オペレータは、教示装置16の入力装置44を操作して、教示指令Ctとして、ロボット12をジョグ動作させるジョグ指令Ct1を入力する。教示装置16のプロセッサ36は、ジョグ指令Ct1の入力IN7を受け付け、受け付けたジョグ指令Ct1を制御装置14へ送信する。制御装置14のプロセッサ46は、受信したジョグ指令Ct1に従って、ロボット12をジョグ動作させる。
一方、ダイレクトティーチモードOM2においては、オペレータは、教示指令Ctとして、ロボット12の任意の可動コンポーネント(例えば、エンドエフェクタ28)に操作力Ct2を加える。制御装置14のプロセッサ46は、力センサ34の検出データDfに基づいて、オペレータの操作力Ct2の大きさ及び方向を演算するとともに、該操作力Ct2が加えられた該可動コンポーネントを特定する。そして、プロセッサ46は、操作力Ct2が加えられた該可動コンポーネントを、該操作力Ct2の方向へ移動させるダイレクトティーチ機能を実行する。
こうして、教示装置16のプロセッサ36は、制御装置14を介してロボット12の動作を制御し、複数の教示点Ptn(n=1,2,3,・・・)を教示することで、ロボット12の動作プログラムOPを作成する。動作プログラムOPは、作業のためのロボット12の動作を規定するコンピュータプログラムである。動作プログラムOPには、例えば、複数の教示点Ptn(具体的には、ロボット座標系C1の座標Qn)、該複数の教示点Ptnを通過するロボット12の移動経路MP、ロボット12の移動速度V、及び、ロボット12の各種動作(複数の教示点Ptnへのロボット12の位置決め動作、及び、エンドエフェクタ28の起動等)が、命令コードICとして規定される。
動作再生モードOM3は、作成した動作プログラムOPの動作確認を行うための運転モードOMである。動作再生モードOM3においては、教示装置16のプロセッサ36(又は、制御装置14のプロセッサ46)は、この時点でメモリ38(又はメモリ48)に記憶されている動作プログラムOPを実行し、該動作プログラムOPに規定されている動作をロボット12に実行させる。
ここで、本実施形態においては、プロセッサ36又は46は、ジョグティーチモードOM1、ダイレクトティーチモードOM2、又は動作再生モードOM3の実行中に、第1の制御方式MT1又は第2の制御方式MT2に従って、ロボット12を動作させる。第1の制御方式MT1は、6自由度のロボット12の動作を実現する制御方式MTであって、6つの関節軸A1~A6を駆動する。
第1の制御方式MT1は、第1の制御プログラム(具体的には、6自由度の逆運動学アルゴリズム)CP1によって規定される。第1の制御プログラムCP1は、6つの関節軸A1~A6の回転位置R1~R6から、ロボット12の手先部の、ロボット座標系C1における位置P(具体的には、ロボット座標系C1におけるMIF座標系C2及びツール座標系C3の座標)を求めるためのプログラムである。プロセッサ36又は46は、第1の制御プログラムCP1を使用することで、第1の制御方式MT1によるロボット12の動作を実現する。
一方、第2の制御方式MT2は、第1の制御方式MT1よりも1以上少ない自由度のロボット12の動作を実現する制御方式MTである。本実施形態においては、第2の制御方式MT2は、5自由度のロボット12の動作を実現する制御方式MTであって、計6つの関節軸A1~A6のうち、5つの関節軸A1、A2、A3、A5及びA6を駆動する一方、関節軸A4を、回転位置R4=0°の位置に固定する。
第2の制御方式MT2は、第2の制御プログラムCP2(具体的には、5自由度の逆運動学アルゴリズム)によって規定される。第2の制御プログラムCP2は、5つの関節軸A1~A3、A5及びA6の回転位置R1~R3、R5及びR6から、ロボット12の手先部の、ロボット座標系C1における位置P(ロボット座標系C1におけるMIF座標系C2及びツール座標系C3の座標)を求めるためのプログラムである。プロセッサ36又は46は、第2の制御プログラムCP2を使用することで、第2の制御方式MT2によるロボット12の動作を実現する。
次に、図3を参照して、ジョグティーチモードOM1又はダイレクトティーチモードOM2でロボット12の動作を教示する方法について説明する。教示装置16のプロセッサ36は、オペレータ、上位コントローラ、又はコンピュータプログラムPG1から教示開始指令を受け付けたときに、図3に示すフローを開始する。
ステップS1において、プロセッサ36は、第2の制御方式MT2を指定する入力IN2を受け付けたか否かを判定する。具体的には、プロセッサ36は、第1の制御方式MT及び第2の制御方式MT2のうちの1つを指定するためのグラフィカルユーザインタフェース(GUI)の画像データIM1を生成し、表示装置42に表示する。オペレータは、該画像データIM1を視認しつつ、入力装置44を操作して、第1の制御方式MT及び第2の制御方式MT2のうちの1つを指定する入力IN2をプロセッサ36に与える。
プロセッサ36は、第2の制御方式MT2を指定する入力IN2を受け付けた場合はYESと判定し、ステップS2へ進む一方、第1の制御方式MT1を指定する入力IN2を受け付けた場合はNOと判定し、ステップS3へ進む。このように、本実施形態においては、プロセッサ36は、多自由度(本実施形態においては、6自由度)のロボット12の動作を実現する第1の制御方式MT1、及び、該第1の制御方式MT2よりも1以上少ない自由度(本実施形態においては、5自由度)のロボット12の動作を実現する第2の制御方式MTのうちの1つを指定する入力IN2を受け付ける入力受付部62(図2)として機能する。
ステップS2において、プロセッサ36は、第2の制御方式MT2による教示プロセスを実行する。このステップS2について、図4を参照して説明する。ステップS2の開始後、ステップS11において、プロセッサ36は、第2の制御方式MT2の条件CD2を満たしているか否かを判定する。この条件CD2は、第2の制御方式MT2に従ってロボット12を動作させるのを許可するためのものである。本実施形態においては、条件CD2は、第2の制御方式MT2でロボット12を動作させるときの該ロボット12の位置Pを規定する条件を含む。
より具体的には、条件CD2は、第4の関節軸A4(すなわち、先端アーム部24b)の回転位置R4が、R4=0°であるという条件CD2_1と、MIF座標系C2のz軸方向(換言すれば、第6の関節軸A6の方向)が、鉛直方向(つまり、ロボット座標系C1のz軸方向)、又は水平方向(つまり、ロボット座標系C1のx-y平面)と平行であるという条件CD2_2とを含む。プロセッサ36は、この時点で回転検出器32が検出した第4の関節軸A4の回転位置R4の検出データDrに基づいて、条件CD2_1を満たすか否かを判定する。
また、プロセッサ36は、この時点で回転検出器32が検出した関節軸A1~A6の回転位置R1~R6の検出データDrと第2の制御プログラムCP2とに基づいて、この時点でのMIF座標系C2の、ロボット座標系C1における座標QM(x,y,z,w,p,r)を求める。座標QMのうち、座標(x,y,z)は、ロボット座標系C1におけるMIF座標系C2の原点の位置を示し、座標(w,p,r)は、ロボット座標系C1におけるMIF座標系C2の姿勢(つまり、各軸の方向)を示す。プロセッサ36は、座標QMのうち、姿勢を示す座標(w,p,r)に基づいて、条件CD2_2を満たすか否かを判定する。
プロセッサ36は、このステップS11において、条件CD2_1及びCD2_2の双方を満たす場合はYESと判定し、ステップS12へ進む一方、条件CD2_1及びCD2_2の少なくとも一方を満たしていない場合はNOと判定し、ステップS20へ進む。このように、本実施形態においては、プロセッサ36は、条件CD2(CD2_1及びCD2_2)を満たしているか否かを判定する条件判定部64(図2)として機能する。
ステップS12において、プロセッサ36は、教示指令Ctを受け付けたか否かを判定する。一例として、上述のジョグティーチモードOM1を実行している場合、プロセッサ36は、入力受付部62として機能して、オペレータから入力装置44を通してジョグ指令Ct1の入力IN7を受け付けたか否かを判定する。
他の例として、上述のダイレクトティーチモードOM2を実行している場合、プロセッサ36は、制御装置14のプロセッサ46が操作力Ct2を受け付けたか否かを判定する。プロセッサ36は、教示指令Ct(ジョグ指令Ct1、又は操作力Ct2)を受け付けた場合はYESと判定し、ステップS13へ進む一方、NOと判定した場合はステップS14へ進む。
ステップS13において、プロセッサ36は、第2の制御方式MT2による動作をロボット12に実行させる。具体的には、プロセッサ36は、第2の制御プログラムCP2を用いて、直前のステップS12で受け付けた教示指令Ct(ジョグ指令Ct1、又は操作力Ct2)に従って、ロボット12を、第2の制御方式MT2の条件CD2_1(R4=0°)、及び条件CD2_2(MIF座標系C2のz軸が鉛直方向又は水平方向)を継続して満たすように、ロボット12に5自由度の動作を実行させる。
すなわち、このステップS13においては、プロセッサ36は、第2の制御方式MT2の下、第4の関節軸A4の回転位置R4をR4=0°に固定し、且つ、エンドエフェクタ28を、MIF座標系C2のz軸が鉛直方向又は水平方向と平行となる姿勢に維持した状態で、教示指令Ctに従ってロボット12を動作させることで、エンドエフェクタ28を移動させる。
より具体的には、ジョグティーチモードOM1を実行している場合、プロセッサ36は、ロボット12を、条件CD2_1及びCD2_2を満たす状態に維持しながら、直前のステップS12で受け付けたジョグ指令Ct1に従って、制御装置14を介してロボット12を動作させる。このとき、仮に、ジョグ指令Ct1によるロボット12の移動方向MDが、該ロボット12を、条件CD2_1及びCD2_2を満たさない位置Pへ移動させるものであった場合、プロセッサ36は、ジョグ指令Ct1の移動方向MDに基づいて、条件CD2_1及びCD2_2を満たすことができる移動方向MD’を演算し、該移動方向MD’へロボット12を移動させてもよい。
一方、上述のダイレクトティーチモードOM2を実行している場合、プロセッサ36は、制御装置14のプロセッサ46に、操作力Ct2の方向MDへロボット12を動作させるダイレクトティーチ機能を実行させる。仮に、操作力Ct2の方向MDが、ロボット12を、条件CD2_1及びCD2_2を満たさない位置Pへ移動させるものであった場合、プロセッサ36は、操作力Ct2の方向MDに基づいて、条件CD2_1及びCD2_2を満たすことができる方向MD’を演算し、制御装置14に、ロボット12を該方向MD’へ移動させるダイレクトティーチ機能を実行させてもよい。このように、プロセッサ36は、第2の制御方式MT2による動作をロボット12に実行させる動作指令部66(図2)として機能する。
なお、プロセッサ36は、このステップS13において、直線動作LMを実行することで、エンドエフェクタ28を移動させてもよい。この直線動作LMは、エンドエフェクタ28を、現在位置Pcから目標位置Pgまで、滑らかな(例えば、直線状又は円弧状の)移動経路MPに沿って、最小移動量で移動させる動作である。
代替的には、プロセッサ36は、このステップS13において、各軸動作SMを実行することで、エンドエフェクタ28を移動させてもよい。この各軸動作SMは、少なくとも1つの関節軸A(例えば、第5の関節軸A5)を、現在回転位置Rcから目標回転位置Rgまで、最小回転量で回転させる動作である。なお、オペレータは、入力装置44を操作して、直線動作LM又は各軸動作SMを選択し、プロセッサ36は、選択された直線動作LM又は各軸動作SMを実行してもよい。
ステップS14において、プロセッサ36は、プログラム作成指令Crを受け付けたか否かを判定する。プログラム作成指令Crは、この時点でのロボット12の現在位置Pcを、教示点Ptnとして記憶するとともに、該教示点Ptnでのロボット12の動作(例えば、該教示点Ptnへのエンドエフェクタ28の移動)を指定することで、動作プログラムOPを作成するための指令である。
具体的には、プロセッサ36は、プログラム作成指令Crを入力するためのGUIの画像データIM2を生成し、表示装置42に表示する。オペレータは、該画像データIM2を視認しつつ、入力装置44を操作して、プログラム作成指令Crの入力IN4をプロセッサ36に与える。プロセッサ36は、入力受付部62として機能して入力IN4を受け付けたときに、YESと判定し、ステップS15へ進む。一方、プロセッサ36は、入力IN4を受け付けていない場合はNOと判定し、ステップS16へ進む。
ステップS15において、プロセッサ36は、動作プログラムOPを作成する。具体的には、プロセッサ36は、直前のステップS14で受け付けたプログラム作成指令Crに従って、この時点でのロボット12の現在位置Pc(具体的には、この時点でのツール座標系C3のロボット座標系C1における座標QT)を、教示点Ptnとして、メモリ38に記憶された位置データベースDBに格納する。そして、プロセッサ36は、位置データベースDBに格納された教示点Ptnを参照する命令コードICを動作プログラムOPに書き込む。なお、プロセッサ36は、教示点Ptnの位置データ(座標QT)を、命令コードICとして動作プログラムOPに直接書き込んでもよい。
また、プロセッサ36は、プログラム作成指令Crに従って、教示点Ptnでのロボット12の動作、移動経路MP及び移動速度Vを規定する命令コードICを動作プログラムOPに書き込む。プロセッサ36は、ステップS12~S15のフローを繰り返し実行することで、複数の教示点Ptn、ロボット12の動作、移動経路MP及び移動速度V等が命令コードICとして規定された動作プログラムOP1を作成する。
ステップS2で作成される動作プログラムOP1は、第2の制御方式MT2(つまり、5自由度)の動作を実現するものとなる。動作プログラムOP1のデータ構造の一例を、図5に示す。図5に示す例において、1行目の「START」は、動作プログラムOP1を開始する命令コードICである一方、i行目の「END」は、動作プログラムOP1を終了する命令コードICである。また、2行目の「MOVE Pt1」は、エンドエフェクタ28を第1の教示点Pt1に位置決めする動作を規定する命令コードICである。
なお、動作プログラムOP1の各教示点Ptnには、ロボット12の1つの関節軸A(例えば、第5の関節軸A5)の回転位置R(R5)が非負の値(つまり、R5≧0°)であることを示す情報Ir+と、該1つの関節軸A(第5の関節軸A5)の回転位置R(R5)が負の値(つまり、R5<0°)であることを示す情報Ir-とが、さらに規定されてもよい。
これら情報Ir+及びIr-は、6自由度のロボット12の動作のための動作プログラムOPに規定されるべきものであって、エンドエフェクタ28(つまり、ツール座標系C3)を、ロボット座標系C1における任意の位置に位置決めするために、6自由度のロボット12の各関節軸A1~A6の回転位置R1~R6の解を一意に定めるのに必要な情報となる。本実施形態においては、プロセッサ36は、第2の制御方式MT2で作成する動作プログラムOP1の各教示点Ptnにも、6自由度の動作のための情報Ir+及びIr-を規定する。この構成によれば、5自由度の動作プログラムOP1を、6自由度のロボット12に効果的に実行させることができる。
ステップS16において、プロセッサ36は、第1の制御方式MT1及び第2の制御方式MT2のうちの1つを動作プログラムOP1に指定する入力IN5を受け付けたか否かを判定する。具体的には、プロセッサ36は、第1の制御方式MT及び第2の制御方式MT2のうちの1つを動作プログラムOP1に指定するための画像データIM4を生成し、表示装置42に表示する。
オペレータは、該画像データIM4を視認しつつ、入力装置44を操作して、第1の制御方式MT1又は第2の制御方式MT2を指定する入力IN5をプロセッサ36に与える。プロセッサ36は、入力受付部62として機能して入力IN5を受け付けた場合に、YESと判定し、ステップS17へ進む。一方、プロセッサ36は、NOと判定した場合はステップS18へ進む。
ステップS17において、プロセッサ36は、直前のステップS16で受け付けた入力IN5に従って、第1の制御方式MT1又は第2の制御方式MT2を、ステップS15で作成した動作プログラムOP1に指定する。具体的には、プロセッサ36は、第1の制御方式MT1又は第2の制御方式MT2の指定を表すフラグFLを、動作プログラムOP1に付与する。
例えば、オペレータは、直前のステップS16で、5自由度の動作を規定した動作プログラムOP1に対し、第2の制御方式MT2を指定する入力IN5を与える。この場合、プロセッサ36は、このステップS17において、ステップS15で作成した動作プログラムOP1に対し、第2の制御方式MT2の指定を表すフラグFLを付与する。このように、本実施形態においては、プロセッサ36は、入力IN5に従って第1の制御方式MT1及び第2の制御方式MT2のうちの1つを動作プログラムOP1に指定するプログラム設定部68(図2)として機能する。
ステップS18において、プロセッサ36は、第1の制御方式MT1を指定する入力IN6を受け付けたか否かを判定する。具体的には、プロセッサ36は、上述の画像データIM1を表示装置42に表示し、入力受付部62として機能して入力装置44を通して第1の制御方式MT1を指定する入力IN6を受け付けた場合に、YESと判定する。プロセッサ36は、YESと判定した場合は、図3中のステップS3へ進む一方、NOと判定した場合はステップS19へ進む。
ステップS19において、プロセッサ36は、オペレータ、上位コントローラ、又はコンピュータプログラムPG1から動作終了指令を受け付けたか否かを判定する。プロセッサ36は、動作終了指令を受け付けた場合はYESと判定し、図4のフローを終了し、以って、図3に示すフローを終了する。一方、プロセッサ36は、NOと判定した場合はステップS11へ戻る。
一方、ステップS11でNOと判定した場合、ステップS20において、プロセッサ36は、ロボット12の位置Pを調整可能であるか否かを判定する。仮に、直前のステップS11で条件CD2_1(R4=0°)を満たしていないことによってNOと判定したとする。この場合、プロセッサ36は、この時点での第4の関節軸A4の回転位置R4が、予め定められた許容範囲[Rth1,Rth2]内(すなわち、Rth1≦R4≦Rth2)であるか否かを判定する。この許容範囲[Rth1,Rth2]を画定する閾値Rth1及びRth2は、条件CD2_1を基準として、オペレータによって定められ得る(例えば、Rth1=-1°、Rth2=1°)。プロセッサ36は、Rth1≦R4≦Rth2である場合はYESと判定する。
一方、直前のステップS11で条件CD2_2(MIF座標系C2のz軸が鉛直方向又は水平方向)を満たしていないことによってNOと判定したとする。この場合、プロセッサ36は、この時点でのMIF座標系C2のz軸方向の、鉛直方向又は水平方向からの角度θを求める。そして、プロセッサ36は、角度θが、予め定められた閾値θth以下(すなわち、θ≦θth)であるか否かを判定する。この閾値θthは、条件CD2_2を基準として、オペレータによって定められ得る(例えば、θth=5°)。プロセッサ36は、θ≦θthである場合はYESと判定する。
なお、直前のステップS11で条件CD2_1及びCD2_2の双方を満たしていないことによってNOと判定した場合、プロセッサ36は、このステップS20において、Rth1≦R4≦Rth2、且つ、θ≦θthである場合に、YESと判定する。プロセッサ36は、YESと判定した場合はステップS21へ進む一方、NOと判定した場合はステップS23へ進む。
ステップS21において、プロセッサ36は、位置調整指令Caを受け付けたか否かを判定する。位置調整指令Caは、ロボット12の位置Pを、条件CD2を満たす位置P’に調整するための指令である。より具体的には、プロセッサ36は、位置調整指令Caを入力するためのGUIの画像データIM3を生成し、表示装置42に表示する。
オペレータは、該画像データIM3を視認しつつ、入力装置44を操作して、位置調整指令Caの入力IN3をプロセッサ36に与える。プロセッサ36は、入力受付部62として機能して位置調整指令Caの入力IN3を受け付けたときに、YESと判定し、ステップS22へ進む。一方、プロセッサ36は、入力IN3を受け付けていない場合はNOと判定し、ステップS14へ進む。
ステップS22において、プロセッサ36は、動作指令部66として機能して、この時点でのロボット12の現在位置Pcを、条件CD2を満たす位置P’に調整する。具体的には、プロセッサ36は、動作指令部66として機能して、制御装置14を介してロボット12を動作させて、エンドエフェクタ28を、条件CD2_1(R4=0°)及び条件CD2_2(MIF座標系C2のz軸が鉛直方向又は水平方向)を満たす位置P’に位置決めする。
このとき、プロセッサ36は、上述の各軸動作SMを実行することで、エンドエフェクタ28を移動させてもよい。こうして、プロセッサ36は、条件CD2を満たす状態となるように、ロボット12の位置Pを調整する。このステップS22の後、プロセッサ36は、ステップS12へ進む。なお、プロセッサ36は、ステップS22を実行したときに、ロボット12が条件CD2を満たす状態となった旨を表す報知信号NSを、画像又は音声として生成し、表示装置42に表示するか、又は教示装置16に設けられたスピーカ(図示せず)を通して出力してもよい。
また、ステップS22でロボット12の位置Pcを位置P’に調整した場合において、プロセッサ36は、調整後の位置P’を、新たな教示点Ptnとして、動作プログラムOP1に規定するとともに、エンドエフェクタ28を調整前の位置Pcから調整後の位置P’へ移動するロボット12の動作(例えば、各軸動作SM)を動作プログラムOP1に規定してもよい。その結果、このステップS22で実行した動作を、動作プログラムOP1に命令コードICとして規定することで、教示することができる。
ステップS20でNOと判定した場合、ステップS23において、プロセッサ36は、アラームAL1を生成する。例えば、プロセッサ36は、「第2の制御方式の条件を満たしていないので、ロボットを動作させることができません。」という画像又は音声のアラームAL1を生成し、表示装置42又はスピーカを通して出力する。このステップS23の後、プロセッサ36は、ステップS14へ進む。このように、本実施形態においては、プロセッサ36は、条件CD2を満たしていない場合は、ステップS13で第2の制御方式MT2によるロボット12の動作を実行しない。
なお、プロセッサ36は、このステップS23において、直近のステップS11でNOと判定した条件CD2を特定する情報を、アラームAL1に付帯させてもよい。例えば、直近のステップS11で、R4=0°であるという条件CD2_1を満たしていないことによってNOと判定した場合、プロセッサ36は、条件CD2_1を満たしていない旨を示す情報を、アラームAL1の画像又は音声に付帯させてもよい。
再度、図3を参照し、ステップS1でNOと判定した場合、ステップS3において、プロセッサ36は、第1の制御方式MT1による教示プロセスを実行する。このステップS3について、図6を参照して説明する。ステップS3の開始後、ステップS31において、プロセッサ36は、上述のステップS12と同様に、教示指令Ctを受け付けたか否かを判定する。プロセッサ36は、YESと判定した場合はステップS32へ進む一方、NOと判定した場合はステップS34へ進む。
ステップS32において、プロセッサ36は、条件判定部64として機能し、第1の制御方式MT1によるロボット12の動作を許可する条件CD1を満たしているか否かを判定する。条件CD1は、例えば、ロボット12が特異点SPの近傍を通過しないという条件を含む。特異点SPとは、例えば、関節軸A1~A6のうちの2つが一直線上に整列するようなロボット12の位置であって、このような特異点SPにエンドエフェクタ28を位置決めするための各関節軸A1~A6の回転位置R1~R6の解を一意に定めることが不可能となる。
プロセッサ36は、このステップS32において、直前のステップS31で受け付けた教示指令Ctによるロボット12(具体的には、エンドエフェクタ28)の目標位置Pgを演算し、該目標位置Pgへのロボット12の移動経路MPが特異点SPの近傍を通過するか否かを判定する。プロセッサ36は、移動経路MPが特異点SPの近傍を通過しない場合はYESと判定し、ステップS33へ進む一方、移動経路MPが特異点SPの近傍を通過する場合はNOと判定し、ステップS40へ進む。
ステップS33において、プロセッサ36は、動作指令部66として機能して、第1の制御方式MT1による動作をロボット12に実行させる。具体的には、プロセッサ36は、第1の制御プログラムCP1を用いて、直近のステップS31で受け付けた教示指令Ct(ジョグ指令Ct1、又は操作力Ct2)に従って、ロボット12に6自由度の動作を実行させる。
なお、プロセッサ36は、このステップS33において、直線動作LM又は各軸動作SMを実行することで、エンドエフェクタ28を移動させてもよい。また、オペレータは、入力装置44を操作して、直線動作LM又は各軸動作SMを選択し、プロセッサ36は、選択された直線動作LM又は各軸動作SMを実行してもよい。ステップS34において、プロセッサ36は、上述のステップS14と同様に、プログラム作成指令Crを受け付けたか否かを判定する。プロセッサ36は、YESと判定した場合はステップS35に進む一方、NOと判定した場合はステップS36へ進む。
ステップS35において、上述のステップS15と同様に、この時点でのロボット12の現在位置Pcを、教示点Ptnとして、位置データベースDBに格納し、該教示点Ptnが規定された動作プログラムOP2を作成する。ステップS3で作成される動作プログラムOP2は、第1の制御方式MT1(つまり、6自由度)の動作を実現するものとなる。
動作プログラムOP2は、ステップS2で作成される5自由度の動作プログラムOP 1 とは別のコンピュータプログラムとして作成されてよく、図5に示す動作プログラムOP 1 と同様に、「START」から「END」までの命令コードICを含む。また、動作プログラムOP2には、上述した関節軸Aの非負又は負を表す情報Ir+及びIr-が規定される。
ステップS36において、プロセッサ36は、上述のステップS16と同様に、第1の制御方式MT1及び第2の制御方式MT2のうちの1つを動作プログラムOPに指定する入力IN5を受け付けたか否かを判定する。プロセッサ36は、入力受付部62として機能して入力IN5を受け付けた場合に、YESと判定し、ステップS37に進む一方、NOと判定した場合はステップS38へ進む。
ステップS37において、プロセッサ36は、プログラム設定部68として機能して、上述のステップS17と同様に、直前のステップS36で受け付けた入力IN5に従って、第1の制御方式MT1又は第2の制御方式MT2を、ステップS35で作成した動作プログラムOP2に指定する。例えば、オペレータは、直前のステップS36で、6自由度の動作を規定した動作プログラムOP2に対し、第1の制御方式MT1を指定する入力IN5を与える。この場合、プロセッサ36は、このステップS37において、ステップS35で作成した動作プログラムOP2に対し、第1の制御方式MT1の指定を表すフラグFLを付与する。
ステップS38において、プロセッサ36は、上述のステップS1と同様に、第2の制御方式MT2を指定する入力IN2を受け付けたか否かを判定する。プロセッサ36は、YESと判定した場合は、図3中のステップS2へ進む一方、NOと判定した場合はステップS39へ進む。ステップS39において、プロセッサ36は、上述のステップS19と同様に、動作終了指令を受け付けたか否かを判定する。プロセッサ36は、YESと判定した場合は、図6のフローを終了し、以って、図3に示すフローを終了する。一方、プロセッサ36は、NOと判定した場合はステップS31へ戻る。
一方、ステップS32でNOと判定した場合、ステップS40において、プロセッサ36は、アラームAL2を生成する。例えば、プロセッサ36は、「第1の制御方式の条件を満たしていないので、ロボットを動作させることができません。」という画像又は音声のアラームAL2を生成し、表示装置42又はスピーカを通して出力する。
このとき、プロセッサ36は、直前のステップS32でNOと判定した条件CD1(特異点近傍通過)を特定する情報を、アラームAL2に付帯させてもよい。このステップS40の後、プロセッサ36は、ステップS34へ進む。このように、本実施形態においては、プロセッサ36は、条件CD1を満たしていない場合、ステップS33で第1の制御方式MT1によるロボット12の動作を実行しない。
上述したように、プロセッサ36は、図3のステップS2及びS3を順次実行することで、複数の動作プログラムOP1、OP2、OP3、・・・を作成し得る。このように作成された複数の動作プログラムOPm(m=1,2,3,・・・)の各々は、図5に示すような「START」から「END」までの命令コードICを含むデータ構造を有するとともに、ステップS17又はS37によって、第1の制御方式MT1又は第2の制御方式MT2の指定を表すフラグFLが付与されている。作成された複数の動作プログラムOPmは、メモリ38(又は48)に記憶される。
以上の通り、本実施形態においては、プロセッサ36は、入力受付部62、条件判定部64、動作指令部66、及びプログラム設定部68として機能して、多自由度(具体的には、6自由度)を有するロボット12の動作を制御している。したがって、入力受付部62、条件判定部64、動作指令部66、及びプログラム設定部68は、多自由度のロボット12の動作を制御する装置60(図2)を構成する。
この装置60においては、入力受付部62は、多自由度(本実施形態では、6自由度)の動作を実現する第1の制御方式MT1、及び、該第1の制御方式MT2よりも1以上少ない自由度(本実施形態では、5自由度)の動作を実現する第2の制御方式MT2のうちの1つを指定する入力IN2、IN6を受け付ける(ステップS1、S18、S38)。第2の制御方式MT2には、該第2の制御方式MT2によるロボット12の動作を許可する条件CD2(具体的には、CD2_1及びCD2_2)が予め定められる。
また、動作指令部66は、入力受付部62が受け付けた入力IN2、IN6によって指定された第1の制御方式MT1又は第2の制御方式MT2による動作をロボット12に実行させる(ステップS13、S33)。一方、条件判定部64は、動作指令部66が第2の制御方式MT2による動作を実行するときに、条件CD2を満たしているか否かを判定する(ステップS11)。そして、条件判定部64によって条件CD2を満たしていないと判定(ステップS11でNOと判定)された場合、動作指令部66は、第2の制御方式MT2による動作を実行しない。
ここで、多自由度(例えば6自由度)のロボット12の動作においては、上述した特異点SPが発生し、該特異点SPの近傍を通過するときに該ロボと12の動作が不安定になり得る。このような特異点SPは、ロボット12の動作を、1以上少ない自由度(例えば5自由度)に制限することで、回避でき得る。本実施形態によれば、例えば教示プロセスを実行するときに、オペレータは、多自由度(6自由度)の第1の制御方式MT1と、より少ない自由度(5自由度)の第2の制御方式MT2とのうちの1つを任意に指定できる。
一方、より少ない自由度(5自由度)のロボット12の動作においては、所定の条件CD2を満たしていないと、エンドエフェクタ28を任意の位置に位置決めできない場合がある。本実施形態によれば、条件判定部64によって条件CD2を満たしていない場合は、少ない自由度(5自由度)のロボット12の動作を禁止する一方、条件CD2を満たしている場合に該動作を許可している。
この構成によれば、オペレータは、例えば教示プロセスにおいて、特異点SPの発生が想定される場合に第2の制御方式MT2を指定することで、該特異点SPを考慮せずに、ロボット12を任意の位置へ動作させることができるとともに、特異点SPによってロボット12の動作が不安定になることを確実に回避できる。その一方で、特異点SPの発生がないと想定される場合は、第1の制御方式MT1を指定することで、ロボット12に多自由度(6自由度)の動作を実行させて、該ロボット12を円滑に動作させることができる。
また、装置60においては、プログラム設定部68は、入力受付部62が受け付けた入力IN5に従って、第1の制御方式MT1及び第2の制御方式MT2のうちの1つを動作プログラムOPmに指定する(ステップS17、S37)。この構成によれば、オペレータは、動作プログラムOPmを実行するときの制御方式MTを、第1の制御方式MT1及び第2の制御方式MT2の中から適宜指定することが可能となる。なお、動作プログラムOPmの実行については、後述する。
また、装置60においては、動作指令部66は、ロボット12に動作を教示するための教示指令Ct(具体的には、ジョグ指令Ct1、又は操作力Ct2)に応じて、第1の制御方式MT1又は第2の制御方式MT2による動作をロボット12に実行させている(ステップS13、S33)。この構成によれば、オペレータは、任意に指定した第1の制御方式MT1又は第2の制御方式MT2に従ってロボット12を動作させることで、教示プロセスを実行できる。
また、装置60の一例として、入力受付部62は、教示指令Ctとしてジョグ指令Ct1の入力IN7をさらに受け付け、動作指令部66は、入力受付部62が受け付けたジョグ指令Ct1に応じてロボットを動作させている。この構成によれば、オペレータは、教示プロセスにおいて、任意に指定した第1の制御方式MT1又は第2の制御方式MT2に従ってロボット12をジョグ動作させることができる。
また、装置60の他の例として、動作指令部66は、ロボット12に加えられた力Fを検出する力センサ34の検出データDfに基づいて、該ロボット12に加えられた操作力Ct2を教示指令Ctとして取得し、該操作力Ct2に応じてロボット12を動作させている(ダイレクトティーチ機能)。この構成によれば、オペレータは、教示プロセスにおいて、任意に指定した第1の制御方式MT1又は第2の制御方式MT2に従ってロボット12をダイレクトティーチ機能によって動作させることができる。
また、装置60においては、条件CD2は、ロボット12の位置Pを規定する条件CD2_1(例えば、R4=0°)及びCD2_2(例えば、MIF座標系C2のz軸が鉛直方向又は水平方向)を含む。そして、動作指令部66は、条件判定部64によって条件CD2_1又はCD2_2を満たしていない(ステップS11でNO)と判定された場合に、該条件CD2_1又はCD2_2を満たす位置P’にロボット12を位置決めする(ステップS22)。
その後、動作指令部66は、第2の制御方式MT2による動作をロボット12に実行させている(ステップS13)。この構成によれば、仮に、ステップS2の開始時点でロボット12が条件CD2_1又はCD2_2を満たさない位置Pに配置されていたとしても、条件CD2_1又はCD2_2を満たすようにロボット12の位置Pを自動で調整できる。
なお、本実施形態においては、入力受付部62は、ステップS16及びS36で、第1の制御方式MT1及び第2の制御方式MT2のうちの1つを指定する入力IN5を受け付け、プログラム設定部68は、ステップS17及びS37で、受け付けた入力IN5に従って第1の制御方式MT1及び第2の制御方式MT2のうちの1つを動作プログラムOPmに指定している。
その結果、多自由度のロボット12の動作を規定するとともに、第1の制御方式MT1又は第2の制御方式MT2を指定した動作プログラムOPmが、生成される。したがって、入力受付部62及びプログラム設定部68は、動作プログラムOPmを生成する装置100(図2)を構成する。この装置100によれば、オペレータが任意に指定した第1の制御方式MT1又は第2の制御方式MT2で実行される動作プログラムOPmを作成できる。
なお、プロセッサ36は、メモリ38(又は48)に予め記憶されたコンピュータプログラムPG1に従って、図3のフローを実行してもよい。また、プロセッサ36が実行する装置60及び100(入力受付部62、条件判定部64、動作指令部66、及びプログラム設定部68)の機能は、コンピュータプログラムPG1によって実現される機能モジュールであってもよい。
次に、図7及び図8を参照して、ロボットシステム10の他の機能について説明する。本実施形態においては、教示装置16のプロセッサ36は、図3中のステップS2として、図8に示すフローを実行する。なお、図8に示すフローにおいて、図4のフローと同様のプロセスには同じステップ番号を付し、重複する説明を省略する。図8のフローにおいては、プロセッサ36は、ステップS13の後、ステップS24~S27を実行する。
具体的には、ステップS24において、プロセッサ36は、力センサ34の検出データDfに基づいて、ロボット12が周囲の環境物SR(例えば、オペレータ、又は作業セル内の構造物)と接触したか否かを判定する。例えば、制御装置14のプロセッサ46は、ステップS13の動作の実行中、力センサ34の検出データDfを周期的に取得し、該検出データDfに基づいて、ロボット12が環境物SRと接触することで該ロボット12に加えられる接触力Fcを監視する。
教示装置16のプロセッサ36は、このステップS24において、制御装置14が監視する接触力Fcが所定の閾値Fthを超えた(Fc≧Fth)ときに、YESと判定する。プロセッサ36は、YESと判定した場合は、ロボット12の動作を停止し、ステップS25へ進む一方、NOと判定した場合はステップS26へ進む。このように、本実施形態においては、プロセッサ36は、検出データDfに基づいてロボット12が環境物SRと接触したか否かを判定する接触判定部70(図7)として機能する。
ステップS25において、プロセッサ36は、動作指令部66として機能し、ロボット12を退避させる退避動作を実行する。具体的には、プロセッサ36は、退避動作として、直前のステップS24でYESと判定した時点でロボット12を停止させた位置P(つまり、環境物SRとの接触が生じた位置)から、直近のステップS13でロボット12を移動させた移動方向MDとは反対の方向MD”(又は、予め定めた方向)へ、予め定めた距離だけ、ロボット12を移動させる。
なお、プロセッサ36は、退避動作において、上述の各軸動作SMを実行することでロボット12(例えば、エンドエフェクタ28)を移動させてもよい。このとき、プロセッサ36は、仮にロボット12が条件CD2を満たさない状態となったとしても、この退避動作を優先的に実行する。また、プロセッサ36は、退避動作において、ステップS13でロボット12を移動させる移動速度Vよりも小さい速度V’(<V)で、ロボット12を動作させてもよい。
ステップS26において、プロセッサ36は、条件判定部64として機能して、ロボット12が、第2の制御方式MT2の条件CD2を満たさない位置Pへ逸脱したか否かを判定する。具体的には、プロセッサ36は、上述のステップS11と同様に、この時点での第4の関節軸A4の回転位置R4と、この時点でのMIF座標系C2の姿勢を示す座標QM(w,p,r)とを取得する。
そして、プロセッサ36は、取得した回転位置R4に基づいて、条件CD2_1(R4=0°)を依然として満たしているか否かを判定するとともに、取得した座標QM(w,p,r)に基づいて、条件CD2_2(MIF座標系C2のz軸が鉛直方向又は水平方向)を依然として満たしているかを判定する。プロセッサ36は、条件CD2_1及びCD2_2の少なくとも一方を満たしていない場合はYESと判定し、ステップS27へ進む一方、条件CD2_1及びCD2_2の双方を満たしている場合はNOと判定し、ステップS14へ進む。
ステップS27において、プロセッサ36は、動作指令部66として機能して、ロボット12を、条件CD2を満たす位置P’へ復帰させる復帰動作を実行する。具体的には、プロセッサ36は、復帰動作として、直近のステップS26で判定に用いた回転位置R4及び座標Qに基づいて、ロボット12を、条件CD2_1(R4=0°)及び条件CD2_2(MIF座標系C2のz軸が鉛直方向又は水平方向)を満たす位置P’に、復帰させる。
なお、プロセッサ36は、この復帰動作において、ロボット12の手先部(手首フランジ26b及びエンドエフェクタ28)の位置及び姿勢を変化させてもよい。例えば、ステップS25を実行した後に、このステップS27を実行するとする。この場合、プロセッサ36は、ステップS24でYESと判定した時点(又は、ロボット12の動作を停止した時点)での、ロボット座標系C1におけるツール座標系C3(又は、MIF座標系C2)の原点の座標QT’(x,y,z)をメモリ48に記憶する。
そして、プロセッサ36は、このステップS27において、エンドエフェクタ28(又は、手首フランジ26b)を、この時点での位置及び姿勢から、条件CD2_1及びCD2_2を満たす姿勢に移動させるとともに、座標QT’(x,y,z)の位置に移動させてもよい。なお、プロセッサ36は、このステップS27において、ロボット12を、直近のステップS15でメモリ38に記憶した教示点Ptnに移動させてもよい。
なお、プロセッサ36は、復帰動作において、上述の各軸動作SMを実行することでロボット12を移動させてもよい。また、プロセッサ36は、復帰動作において、ステップS13でロボット12を移動させる移動速度Vよりも小さい速度V’でロボット12を動作させてもよい。このステップS27の後、プロセッサ36は、ステップS14へ進む。
以上のように、本実施形態においては、プロセッサ36は、入力受付部62、条件判定部64、動作指令部66、プログラム設定部68、及び接触判定部70として機能し、これら入力受付部62、条件判定部64、動作指令部66、プログラム設定部68、及び接触判定部70は、装置60(図7)を構成する。
本実施形態においては、接触判定部70は、動作指令部66がステップS13の動作を実行したときに、力センサ34の検出データDfに基づいて、ロボット12が環境物SRと接触したか否かを判定する(ステップS24)。そして、動作指令部66は、接触判定部70によってロボット12が環境物SRと接触した(ステップS24でYES)と判定された場合、該ロボット12を該接触が生じた位置Pから退避させる退避動作を実行する(ステップS25)。この構成によれば、退避動作によってロボット12と環境物SRとの接触を確実に解消できるので、ロボット12の動作の安全性を高めることができる。
また、本実施形態においては、動作指令部66は、ステップS13の動作を実行したときにロボット12が条件CD2(CD2_1及びCD2_2)を満たさない位置Pへ逸脱した場合、該ロボット12を、該条件CD2を満たす位置P’へ復帰させる復帰動作を実行する(ステップS27)。この構成によれば、仮に、ロボット12が環境物SRと接触したこと、又は、オペレータが安全の確保のためにロボット12を強制的に移動させたこと等に起因して、ロボット12の位置Pが逸脱した場合に、条件CD2を満たす位置P’にロボット12を自動で復帰させることができる。
なお、図4又は図8のフローから、ステップS21を省略し、プロセッサ36は、ステップS20でYESと判定したときに、ステップS22を自動的に実行してもよい。代替的には、図4又は図8のフローから、ステップS20~S22を省略し、プロセッサ36は、ステップS11でNOと判定したときに、ステップS23へ進んでもよい。
また、図8のフローから、ステップS26及びS27を省略してもよい。代替的には、図8のフローから、ステップS24及びS25を省略し、プロセッサ36は、ステップS13の後に、ステップS26及びS27を実行してもよい。すなわち、この場合、図7の装置60から、接触判定部70を省略できる。また、図8に示すステップS24~S27を、図6に示すステップS3に適用してもよい。例えば、プロセッサ36は、図6中のステップS33の後に、ステップS24~S27を実行してもよい。
なお、装置60の機能(つまり、入力受付部62、条件判定部64、動作指令部66、プログラム設定部68、及び接触判定部70)のうちの少なくとも1つを、制御装置14に実装してもよい。例えば、装置60の機能のうち、条件判定部64、動作指令部66、及び接触判定部70の機能を、制御装置14に実装してもよい。この場合、制御装置14のプロセッサ46が、条件判定部64、動作指令部66、及び接触判定部70として機能して、上述のステップS11、S13、S24~S27、S22、S32及びS33を実行することになる。
また、装置100の機能のみを、別のコンピュータに実装することもできる。このような形態を、図9に示す。図9に示すコンピュータ110は、例えば、プロセッサ(CPU、GPU等)、メモリ(ROM、RAM)、表示装置(液晶ディスプレイ、有機ELディスプレイ等)、及び入力装置(タッチパネル、キーボード、マウス等)等を有する(いずれも図示せず)。なお、コンピュータ110は、デスクトップ型、ノート型又はタブレット型のPCであってもよいし、ロボット12の教示装置又は制御装置であってもよい。
例えば、コンピュータ110のプロセッサは、教示装置16を用いて教示された教示点Ptn、移動経路MP及び移動速度V等の教示データを、該教示装置16から取得する。そして、コンピュータ110のプロセッサは、取得した教示データを規定した動作プログラムOPを生成する。そして、コンピュータ110のプロセッサは、入力受付部62として機能して、第1の制御方式MT1及び第2の制御方式MT2のうちの1つを指定する入力IN5を受け付ける。
そして、コンピュータ110のプロセッサは、プログラム設定部68として機能して、受け付けた入力IN5に従って第1の制御方式MT1及び第2の制御方式MT2のうちの1つを動作プログラムOPに指定してもよい。このように、装置100の機能をコンピュータ110に実装する一方、装置60からプログラム設定部68を省略してもよい。
次に、図7に示すロボットシステム10の他の機能について説明する。本実施形態においては、教示装置16のプロセッサ36は、図3のフローによって作成した動作プログラムOPmの動作確認を行うために、上述の動作再生モードOM3を実行する。具体的には、プロセッサ36は、動作再生モードOM3として、図10に示すフローを実行する。プロセッサ36は、オペレータ、上位コントローラ、又はコンピュータプログラムPG2から動作開始指令を受け付けたときに、図10のフローを開始する。
ステップS41において、プロセッサ36は、動作プログラムOPmを読み出す。ここで、本実施形態においては、プロセッサ36は、図3のフローによって作成した複数の動作プログラムOP1、動作プログラムOP2、動作プログラムOP3、・・・を順にメモリ38(又は48)から読み出し、連続的に実行する。
なお、複数の動作プログラムOPmには、実行すべき順番ODが予め定められてもよい。この場合において、オペレータは、入力装置44を操作して、順番ODを定める入力IN8を与え、プロセッサ36は、プログラム設定部68として機能して、該入力IN8に従って、作成した動作プログラムOPmに順番ODを設定してもよい。よって、第1回目のステップS41を実行するとき、プロセッサ36は、順番OD:「1」が付与された動作プログラムOP1をメモリ38(又は48)から読み出す。
ステップS42において、プロセッサ36は、直前のステップS41で読み出した動作プログラムOPmに、第2の制御方式MT2が指定されているか否かを判定する。具体的には、プロセッサ36は、読み出した動作プログラムOPmに付与されたフラグFLを参照し、該フラグFLが、第2の制御方式MT2の指定を表しているか否かを判定する。プロセッサ36は、第2の制御方式MT2が指定されている場合はYESと判定し、ステップS43へ進む一方、第1の制御方式MT1が指定されている場合はNOと判定し、ステップS44へ進む。
ステップS43において、プロセッサ36は、第2の制御方式MT2による動作確認プロセスを実行する。このステップS43について、図11を参照して説明する。プロセッサ36は、直近のステップS41で読み出した動作プログラムOPmに規定された1行目の命令コードIC:「START」を読み出し、ステップS43のフローを開始する。
ステップS43の開始後、ステップS51において、プロセッサ36は、直近のステップS41で読み出した動作プログラムOPmに規定された命令コードICを読み込む。ここで、プロセッサ36は、このステップS51を繰り返し実行する毎に、動作プログラムOPmに規定された命令コードIC(図5)を、2行目、3行目、4行目、・・・という順で読み込む。
ステップS52において、プロセッサ36は、条件判定部64として機能して、第2の制御方式MT2の条件CD2を満たしているか否かを判定する。具体的には、プロセッサ36は、直前のステップS51で読み込んだ命令コードICを解析し、該命令コードICに規定されている教示点Ptnへロボット12を移動させたときに条件CD2_1及びCD2_2の双方を満たすか否かを判定する。プロセッサ36は、条件CD2_1及びCD2_2の双方を満たす場合はYESと判定し、ステップS53へ進む一方、条件CD2_1及びCD2_2の少なくとも一方を満たさない場合はNOと判定し、ステップS57へ進む。
ステップS53において、プロセッサ36は、動作指令部66として機能し、第2の制御方式MT2による動作をロボット12に実行させる。具体的には、プロセッサ36は、直前のステップS51で読み込んだ命令コードICを実行するために、第2の制御プログラムCP2を使用して、関節軸A1~A3、A5及びA6の回転位置R1~R3、R5及びR6からロボット座標系C1におけるロボット12(具体的には、エンドエフェクタ28)の位置Pを求める。
そして、プロセッサ36は、求めた位置Pに基づいて、該命令コードICに規定されている動作を、第2の制御方式MT2(つまり、5自由度)の動作として、ロボット12に実行させる。ステップS54において、プロセッサ36は、上述のステップS24と同様に、接触判定部70として機能し、ロボット12が周囲の環境物SRと接触したか否かを判定する。プロセッサ36は、YESと判定した場合はステップS56へ進む一方、NOと判定した場合はステップS55へ進む。
ステップS55において、プロセッサ36は、実行中の動作プログラムOPmに、次の行の命令コードICが在るか否かを判定する。プロセッサ36は、次の行の命令コードICが、図5中のi行の命令コードIC:「END」ではない場合はYESと判定し、ステップS51へ戻る一方、i行の命令コードIC:「END」である場合はNOと判定し、図10中のステップS45へ進む。一方、ステップS54でYESと判定した場合、ステップS56において、プロセッサ36は、上述のステップS25と同様に、動作指令部66として機能して、退避動作を実行した後、ロボット12を停止させる。その後、プロセッサ36は、ステップS57に進む。
ステップS52でNOと判定したとき、又は、ステップS56を実行したとき、ステップS57において、プロセッサ36は、アラームALを生成する。例えば、ステップS52でNOと判定した後にステップS57を実行する場合、プロセッサ36は、「第2の制御方式の条件を満たしていないので、ロボットを動作させることができません。ロボットの再教示が必要です。」という画像又は音声のアラームAL4を生成し、表示装置42又はスピーカを通して出力する。このとき、プロセッサ36は、直前のステップS52でNOと判定した条件CD2(条件CD2_1又はCD2_2)を特定する情報を、アラームAL1に付帯させてもよい。
一方、ステップS56の後にステップS57を実行する場合、プロセッサ36は、「ロボットが環境物と接触した可能性があるので、ロボットを退避させました。」という画像又は音声のアラームAL5を生成し、表示装置42又はスピーカを通して出力する。ステップS57の後、プロセッサ36は、図11に示すステップS43のフローを終了し、以って、図10のフローを終了する。このように、プロセッサ36は、条件CD2を満たしていない場合、ステップS53で第2の制御方式MT2によるロボット12の動作を実行しない。
再度、図10を参照して、ステップS42でNOと判定した場合、ステップS44において、プロセッサ36は、第1の制御方式MT1による動作確認プロセスを実行する。このステップS44について、図11を参照して説明する。ステップS44の開始後、ステップS61において、プロセッサ36は、上述のステップS51と同様に、直近のステップS41で読み出した動作プログラムOPmに規定された命令コードICを読み込む。
ステップS62において、プロセッサ36は、条件判定部64として機能して、第1の制御方式MT1の条件CD1を満たしているか否かを判定する。具体的には、プロセッサ36は、直前のステップS61で読み込んだ命令コードICを解析し、該命令コードICに規定されている教示点Ptnへロボット12を移動させたときに条件CD1(特異点SPの近傍を通過しない)を満たすか否かを判定する。プロセッサ36は、YESと判定した場合はステップS63へ進む一方、NOと判定した場合はステップS67へ進む。
ステップS63において、プロセッサ36は、動作指令部66として機能し、第1の制御方式MT1による動作をロボット12に実行させる。具体的には、プロセッサ36は、直前のステップS61で読み込んだ命令コードICを実行するために、第1の制御プログラムCP1を使用して、関節軸A1~A6の回転位置R1~R6からロボット座標系C1におけるロボット12(エンドエフェクタ28)の位置Pを求める。
そして、プロセッサ36は、求めた位置Pに基づいて、該命令コードICに規定されている動作を、第1の制御方式MT1(つまり、6自由度)の動作として、ロボット12に実行させる。その後、プロセッサ36は、上述のステップS53と同様のステップS64(接触判定)と、上述のステップS55と同様のステップS65(次の命令コード判定)、及び、上述のステップS56と同様のステップS66(退避動作)を順次実行する。
ステップS62でNOと判定したとき、又は、ステップS66を実行したとき、ステップS67において、プロセッサ36は、アラームALを生成する。例えば、ステップS62でNOと判定した後にステップS67を実行する場合、プロセッサ36は、「第1の制御方式の条件を満たしていないので、ロボットを動作させることができません。ロボットの再教示が必要です。」という画像又は音声のアラームAL6を生成し、表示装置42又はスピーカを通して出力する。このとき、プロセッサ36は、直前のステップS62でNOと判定した条件CD1(特異点近傍通過)を特定する情報を、アラームAL6に付帯させてもよい。
一方、ステップS66の後にステップS67を実行する場合、プロセッサ36は、上述のアラームAL5を生成し、表示装置42又はスピーカを通して出力する。ステップS67の後、プロセッサ36は、図11に示すステップS44のフローを終了し、以って、図10のフローを終了する。このように、プロセッサ36は、条件CD1を満たしていない場合、ステップS63で第1の制御方式MT1によるロボット12の動作を実行しない。
再度、図10を参照して、上述のステップS55又はS65でNOと判定したとき、ステップS45において、プロセッサ36は、次に実行すべき動作プログラムOPm+1が在るか否かを判定する。プロセッサ36は、YESと判定した場合はステップS41へ戻り、動作プログラムOPm+1に基づいて、ステップS42~S45のフローを実行する。一方、プロセッサ36は、NOと判定した場合、図10のフローを終了する。
こうして、プロセッサ36は、図3のフローで作成した複数の動作プログラムOPmを順に実行し、上述のステップS17又はS37で入力IN5に応じて動作プログラムOPmに指定された第1の制御方式MT1又は第2の制御方式MT2に従って、ロボット12を動作させる。これにより、オペレータは、動作プログラムOPmに規定された動作の確認を行うことができる。
以上のように、本実施形態においては、上述のステップS16又はS36で入力受付部62が受け付けた入力IN5に応じて、上述のステップS17又はS37で第1の制御方式MT1及び第2の制御方式MT2のうちの1つが指定された動作プログラムOPmが用意される。そして、動作指令部66は、動作プログラムOPmを実行することで、該動作プログラムOPmに指定された第1の制御方式MT1又は第2の制御方式MT2による動作をロボット12に実行させる(ステップS53又はS63)。
この動作プログラムOPmは、多自由度(6自由度)を有するロボット12の動作を規定し、第1の制御方式MT1及び第2の制御方式MT2のうちの1つを指定可能(具体的には、フラグFLを付与可能)に構成されている。そして、動作プログラムOPmは、指定された第1の制御方式MT1又は第2の制御方式MT2による動作をロボット12に実行させる。
この構成によれば、オペレータは、教示プロセスで作成した動作プログラムOPmの動作を考慮して、各々の動作プログラムOPmに第1の制御方式MT1又は第2の制御方式MT2を任意に指定できるので、該動作プログラムOPmを実行したときに、例えば上述の特異点SP等に起因して、ロボット12の動作が不安定になってしまうのを確実に回避できる。
また、動作プログラムOPm毎に制御方式MTが指令されていることから、動作プログラムOPmを途中(例えば、図5中の3行目)で中断し、その後に再開した場合等においても、同じ制御方式MTでロボット12を安定して動作させることができる。このことは、1つの動作プログラムの実行中に制御方式MTを切り替える場合と比べて、ロボット12の動作の安定性に関して有利となる。
また、制御方式MTが各々に指定された複数の動作プログラムOPmを連続的に実行することで、作業を実行するためのロボット12の多彩な動作を実現できるとともに、動作プログラムOPm毎に、制御方式MTを、第1の制御方式MT1及び第2の制御方式MT2の間で切り替えることができる。したがって、より多様なロボット12の動作を要する作業に柔軟に対応することができる。
なお、プロセッサ36は、メモリ38(又は48)に予め記憶されたコンピュータプログラムPG2に従って、図10のフローを実行してもよい。また、プロセッサ36が実行する装置60の機能は、コンピュータプログラムPG2によって実現される機能モジュールであってもよい。
なお、図11のステップS51又はS61において、プロセッサ36は、動作プログラムOPmに規定された全ての行(つまり、1行~i行)の命令コードICを読み込み、ステップS52又はS62において、全ての命令コードICに規定されている動作について、条件CD2又はCD1を満たすか否かを判定してもよい。そして、プロセッサ36は、ステップS52又はS62でYESと判定した場合、ステップS53又はS63において、動作プログラムOPmの全ての命令コードICを、1行~i行まで順に実行してもよい。この場合、図11のフローからステップS55又はS65を省略できる。
なお、図7に示すロボットシステム10においては、プロセッサ36が、図3に示すフローを実行して動作プログラムOPmを作成し、次いで、図10に示すフローを実行して、該動作プログラムOPmの動作を確認する場合について述べた。しかしながら、他のコンピュータ(例えば、上述のコンピュータ110)が、動作プログラムOPmを作成してもよい。
そして、教示装置16のプロセッサ36が、該他のコンピュータが作成した動作プログラムOPmの動作を確認するために、図10に示すフローを実行してもよい。この場合、図7の装置60から、プログラム設定部68を省略できる。また、図11のフローから、ステップS54及び56を省略してもよい。すなわち、この場合、図7の装置60から、接触判定部70を省略できる。
また、図3、図4、図6、図8、図10及び図11に示すフローは、一例であって、種々の変更を加えることができる。図12に、図8のステップS2の変形例を示す。図12のフローにおいては、プロセッサ36は、ステップS20でYESと判定したとき、ステップS22に進み、ロボット12の現在位置Pcを調整する。一方、プロセッサ36は、ステップS23を実行した後、上述のステップS21を実行し、位置調整指令Caを受け付けたか否かを判定する。
図12中のステップS21でYESと判定すると、ステップS22’において、プロセッサ36は、上述のステップS22と同様に、動作指令部66として機能して、ロボット12の現在位置Pcを調整する。一方、図12中のステップS21でNOと判定すると、プロセッサ36は、ステップS14へ進む。
このように、図12のフローにおいては、プロセッサ36は、ステップS20でNOと判定した場合でも、ステップS21でオペレータから位置調整指令Caの入力IN3を受け付けた場合は、ステップS22’を実行してロボット12の現在位置Pcを調整する。この構成によれば、ロボット12が意図せずに動作するのを防ぐことでオペレータの安全を確保しつつ、教示プロセスを効率的に進めることができる。
また、図13に、図11のステップS43及びS44の変形例を示す。図13に示すステップS43においては、プロセッサ36は、ステップS56の後、ステップS58を実行する。このステップS58において、プロセッサ36は、動作指令部66として機能して、復帰動作を実行する。具体的には、プロセッサ36は、直近のステップS54でYESと判定した時点(又は、ロボット12の動作を停止した時点)での、ロボット座標系C1におけるツール座標系C3(又は、MIF座標系C2)の原点の座標QT”(x,y,z)をメモリ48に記憶する。
そして、プロセッサ36は、このステップS58において、エンドエフェクタ28(又は、手首フランジ26b)を、この時点での位置Pから、座標QT”(x,y,z)の位置に移動させてもよい。代替的には、プロセッサ36は、このステップS58において、ロボット12を、実行中の動作プログラムOPmに規定されている移動経路MPに移動させてもよい。また、プロセッサ36は、図13に示すステップS44においても、ステップS66の後、ステップS68において、同様の復帰動作を実行する。なお、プロセッサ36は、ステップS56(又はS66)の退避動作を実行した時点から所定の時間が経過したときに、ステップS58(又はS66)を実行してもよい。
なお、上述の実施形態においては、第2の制御方式MT2の条件CD2_1が、R4=0°である場合について述べたが、これに限らず、条件CD2_1は、R4=180°×α(αは、任意の整数)として定められてもよい。また、上述の実施形態において、第2の制御方式MT2は、異なる条件CD2がそれぞれに定められた複数の制御方式MT2_1、MT2_2、MT2_3、・・・を含んでもよい。
例えば、制御方式MT2_1には、R4=0°という条件CD2_1_1と、MIF座標系C2のz軸方向が鉛直下方と一致するという条件CD2_2_1とが定められてもよい。また、制御方式MT2_2には、R4=180°という条件CD2_1_2と、MIF座標系C2のz軸方向が鉛直上方と一致するという条件CD2_2_2とが定められてもよい。また、制御方式MT2_3には、R4=-180°という条件CD2_1_3と、MIF座標系C2のz軸方向が水平方向と平行であるという条件CD2_2_3とが定められてもよい。
この場合、プロセッサ36は、入力受付部62として機能し、上述のステップS1、S16及びS38で、第2の制御方式MT2として、制御方式MT2_1、MT2_2及びMT2_3のうちの1つを指定する入力IN2、IN5を受け付ける。そして、プロセッサ36は、指定された制御方式MT2_1、MT2_2又はMT2_3の条件CD2に基づいて、上述のステップS11、S13、S20、S22、S23又はS27を実行する。
また、プロセッサ36は、上述のステップS17において、受け付けた入力IN5に応じて、制御方式MT2_1、MT2_2又はMT2_3を動作プログラムOPmに指定する。この構成によれば、オペレータは、第2の制御方式MT2として、様々な条件CD2(CD2_1_1、CD2_1_2、CD2_1_3、CD2_2_1、CD2_2_2、CD2_2_3)が各々に定められた複数の制御方式MT2_1、MT2_2、MT2_3を指定できるので、より多様な動作の教示を行うことができる。
なお、上述の実施形態においては、ロボット12に、MIF座標系C2とツール座標系C3とが設定されている場合について述べた。しかしながら、これに限らず、MIF座標系C2及びツール座標系C3の一方のみが設定されてもよい。例えば、ツール座標系C3のz軸が、第6の関節軸A6と平行となる(具体的には、一致する)ように設定された場合において、プロセッサ36は、上述のステップS11及びS26において、ロボット座標系C1におけるツール座標系C3の座標QTに基づいて、第2の制御方式MT2の条件CD2の判定を行ってもよい。
なお、上述の実施形態においては、第1の制御方式MT1が、6自由度のロボット12の動作を実現し、第2の制御方式MTが、5自由度のロボット12の動作を実現する場合について述べた。しかしながら、第1の制御方式MT1は、例えば、7以上の自由度の動作を実現するものであってもよく、第2の制御方式MTは、4以下の自由度の動作を実現するものであってもよい。
また、第2の制御方式MTの条件CD2は、ロボット12が特異点SPの近傍を通過しないという条件、又はロボット12が許容動作範囲内であるという条件等、他の如何なる条件を含んでもよい。同様に、第1の制御方式MT1の条件CD1も、他の如何なる条件を含んでもよい。また、ロボット12は、垂直多関節ロボットに限らず、水平多関節ロボット、パラレルリンクロボット等、他の如何なるタイプのロボットであってもよい。
以上、本開示について詳述したが、本開示は上述した個々の実施形態に限定されるものではない。これらの実施形態は、本開示の要旨を逸脱しない範囲で、又は、特許請求の範囲に記載された内容とその均等物から導き出される本開示の趣旨を逸脱しない範囲で、種々の追加、置き換え、変更、部分的削除等が可能である。また、これらの実施形態は、組み合わせて実施することもできる。例えば、上述した実施形態において、各動作の順序や各処理の順序は、一例として示したものであり、これらに限定されるものではない。また、上述した実施形態の説明に数値又は数式が用いられている場合も同様である。
本開示は、以下の態様を記載する。
(態様1)多自由度を有するロボット12の動作を制御する装置60であって、多自由度(例えば6自由度)の動作を実現する第1の制御方式MT1、及び、該第1の制御方式MT1よりも1以上少ない自由度(例えば5自由度)の動作を実現する第2の制御方式MT2であって、該第2の制御方式MT2による該動作を許可する条件CD2が予め定められる、第2の制御方式MT2、のうちの1つを指定する入力IN2、IN5、IN6を受け付ける入力受付部62と、入力受付部62が受け付けた入力IN2、IN5、IN6によって指定された第1の制御方式MT1又は第2の制御方式MT2による動作をロボット12に実行させる動作指令部66と、動作指令部66が第2の制御方式MT2による動作を実行するときに、条件CD2を満たしているか否かを判定する条件判定部64とを備え、条件判定部64によって条件CD2を満たしていないと判定された場合、動作指令部66は、第2の制御方式MT2による動作を実行しない、装置60。
(態様2)入力受付部62が受け付けた入力IN5に応じて第1の制御方式MT1及び第2の制御方式MT2のうちの1つが指定された動作プログラムOPをさらに備え、動作指令部66は、動作プログラムOPを実行することで、該動作プログラムOPに指定された第1の制御方式MT1又は第2の制御方式MT2による動作をロボット12に実行させる、態様1に記載の装置60。
(態様3)入力受付部62が受け付けた入力IN5に従って、第1の制御方式MT1及び第2の制御方式MT2のうちの1つを動作プログラムOPに指定するプログラム設定部68をさらに備える、態様2に記載の装置60。
(態様4)動作指令部66は、動作を教示するための教示指令Ctに応じて、第1の制御方式MT1又は第2の制御方式MT2による動作をロボットに実行させる、態様1~3のいずれかに記載の装置60。
(態様5)入力受付部62は、教示指令Ctとしてジョグ指令Ct1の入力IN7をさらに受け付け、動作指令部66は、入力受付部62が受け付けたジョグ指令Ct1に応じて動作をロボット12に実行させる、態様4に記載の装置60。
(態様6)動作指令部66は、ロボット12に加えられた力Fを検出する力センサ34の検出データDfに基づいて、該ロボット12に加えられた操作力Ct2を教示指令Ctとして取得し、操作力Ct2に応じて動作をロボット12に実行させる、態様4に記載の装置60。
(態様7)条件CD2は、ロボット12の位置Pを規定する条件CD2_1、CD2_2、CD2_1_1、CD2_1_2、CD2_1_3、CD2_2_1、CD2_2_2、CD2_2_3を含み、動作指令部66は、条件判定部64によって条件CD2を満たしていないと判定された場合に、該条件CD2を満たす位置P’にロボット12を位置決めし、その後に、第2の制御方式MT2による動作をロボット12に実行させる、態様1~6のいずれかに記載の装置60。
(態様8)条件CD2は、ロボット12の位置Pを規定する条件CD2_1、CD2_2、CD2_1_1、CD2_1_2、CD2_1_3、CD2_2_1、CD2_2_2、CD2_2_3を含み、動作指令部66は、動作を実行したときにロボット12が条件CD2を満たさない位置Pへ逸脱した場合、該ロボット12を、条件CD2を満たす位置P’へ復帰させる復帰動作を実行する、態様1~7のいずれかに記載の装置60。
(態様9)動作指令部66が動作を実行したときに、ロボット12に加えられた力Fを検出する力センサ34の検出データDfに基づいて、ロボット12が環境物SRと接触したか否かを判定する接触判定部70をさらに備え、動作指令部66は、接触判定部70によってロボット12が環境物SRと接触したと判定された場合、該ロボット12を該接触が生じた位置Pから退避させる退避動作を実行する、態様1~8のいずれかに記載の装置60。
(態様10)第2の制御方式MT2は、異なる条件CD2_1_1、CD2_1_2、CD2_1_3、CD2_2_1、CD2_2_2、CD2_2_3がそれぞれに定められた複数の制御方式MT2_1、MT2_2、MT2_3を含み、入力受付部62は、第1の制御方式MT1、及び、第2の制御方式MT2としての複数の制御方式MT2_1、MT2_2、MT2_3、のうちの1つを指定する入力IN2、IN5、IN6を受け付ける、態様1~9のいずれかに記載の装置60。
(態様11)多自由度(例えば6自由度)を有するロボット12の動作を規定する動作プログラムOPを生成する装置100であって、多自由度の動作を実現する第1の制御方式MT1、及び、該第1の制御方式MT1よりも1以上少ない自由度(例えば5自由度)の動作を実現する第2の制御方式MT2、のうちの1つを指定する入力IN5を受け付ける入力受付部62と、入力受付部62が受け付けた入力IN5に従って、第1の制御方式MT1及び第2の制御方式MT2のうちの1つを動作プログラムOPに指定するプログラム設定部68であって、該動作プログラムOPは、該プログラム設定部68によって指定された該第1の制御方式MT1又は該第2の制御方式MT2による動作をロボット12に実行させる、プログラム設定部68と、を備える、装置100。
(態様12)多自由度(例えば6自由度)を有するロボット12の動作を制御する方法であって、プロセッサ36、46が、多自由度の動作を実現する第1の制御方式MT1、及び、該第1の制御方式MT1よりも1以上少ない自由度(例えば5自由度)の動作を実現する第2の制御方式MT2であって、該第2の制御方式MT2による該動作を許可する条件CD2が予め定められる、第2の制御方式MT2、のうちの1つを指定する入力IN2、IN5、IN6を受け付け、受け付けた入力IN2、IN5、IN6よって指定された第1の制御方式MT1又は第2の制御方式MT2による動作をロボット12に実行させ、第2の制御方式MT2による動作を実行するときに、条件CD2を満たしているか否かを判定し、条件CD2を満たしていないと判定した場合、第2の制御方式MT2による動作を実行しない、方法。
(態様13)多自由度(例えば6自由度)を有するロボット12の動作を規定する動作プログラムOPを生成する方法であって、プロセッサ36、46が、多自由度の動作を実現する第1の制御方式MT1、及び、該第1の制御方式MT1よりも1以上少ない自由度(例えば5自由度)の動作を実現する第2の制御方式MT5、のうちの1つを指定する入力IN5を受け付け、受け付けた入力IN5に従って、第1の制御方式MT1及び第2の制御方式MT2のうちの1つを動作プログラムOPに指定し、該動作プログラムOPは、指定された該第1の制御方式MT1又は該第2の制御方式MT2による動作をロボット12に実行させる、方法。
(態様14)態様12又は13に記載の方法をプロセッサ36、46に実行させる、コンピュータプログラムPG1、PG2。
(態様15)多自由度(例えば6自由度)を有するロボット12の動作を規定し、該動作を該ロボット12に実行させる動作プログラムOPであって、多自由度の動作を実現する第1の制御方式MT1、及び、該第1の制御方式MT1よりも1以上少ない自由度(例えば5自由度)の動作を実現する第2の制御方式MT2、のうちの1つを指定可能に構成され、指定された第1の制御方式MT1又は第2の制御方式MT2による動作をロボット12に実行させる、動作プログラムOP。