以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
[第1実施形態]
図1は、第1実施形態に係るロボットシステム100を模式的に示す斜視図である。ロボットシステム100は、ロボット200と、ロボット制御装置300と、教示ペンダント400と、ディスプレイ500とを備える。ロボット200は、組み付け作業等を行う産業用ロボットである。ロボット制御装置300は、制御部の一例であり、教示装置を兼ねる。教示ペンダント400は、操作装置の一例である。ディスプレイ500は、表示装置の一例である。ロボット200、教示ペンダント400、及びディスプレイ500は、ロボット制御装置300に接続され、ロボット制御装置300と信号の送受信を行う。ロボット200は、台座の上面150に配置されている。教示ペンダント400は、作業者が操作するものであり、ロボット200やロボット制御装置300の動作を指示するのに用いる。
ロボット200は、垂直多関節のロボットであり、ロボットアーム201と、ロボットアーム201の先端に取り付けられたエンドエフェクタの一例であるハンド202と、を備えている。ロボットアーム201の基端は、台座の上面150に固定されている。ハンド202は、物体、例えば部品、ツール、治具、カメラ等を把持する把持部である。
ロボットアーム201は、複数の関節、例えば6つの関節J1〜J6で連結された複数のリンク210〜216を有する。以下、ロボットアーム201の関節が回転関節である場合について説明するが、関節が直動関節であってもよい。以下、「関節の位置」とは、関節が回転関節の場合は関節の回転位置、即ち角度を示し、関節が直動関節の場合は関節の並進位置を示す。
ロボットアーム201は、各関節J1〜J6を各関節軸まわりにそれぞれ回転駆動する複数の駆動機構230を有している。各関節J1〜J6を回転駆動することで、ロボットアーム201の姿勢を変更することができる。ロボットアーム201の姿勢を変更することで、ロボットアーム201の先端に設けられたハンド202を、任意の位置に変更することができる。
ハンド202は、複数のフィンガ220を有し、複数のフィンガ220を動作させることで、ワーク等を把持可能となっている。第1実施形態では、第1ワークであるワークW1を、第2ワークであるワークW2に組み付ける動作をロボット200に行わせる。したがって、ハンド202は、ワークW1を把持可能となっている。
ロボット制御装置300は、ロボットアーム201の姿勢を制御する。ロボットアーム201の姿勢は、ロボットアーム201の先端における作業空間内での位置、即ちロボットアーム201の各関節J1〜J6の位置で決まる。ロボットアーム201の先端における位置は、ロボットアーム201の基端、即ち台座の上面150を基準とするベース座標系Σにおいて、並進方向の位置を示す3つの成分と、回転方向の位置を示す3つの成分で表現される。ロボット制御装置300において、ロボットアーム201の先端は、TCP(Tool Center Point)で定義される。ベース座標系ΣにおけるTCPの位置を教示ペンダント400で指示することで、ロボットアーム201の先端、即ちハンド202の位置を決めることができる。
なお、図1では図示を省略しているが、ロボットアーム201とハンド202との間には、力センサが配置されていてもよい。この場合、ハンド202は、不図示の力センサを介してロボットアーム201の先端に取り付けられている。
以下、ロボットアーム201の関節J1〜J6の構成について説明する。第1実施形態においては、関節J1〜J6は同様の構成であるため、関節J2について説明し、他の関節J1,J3〜J6の説明は省略する。
図2は、第1実施形態に係るロボットアーム201の関節J2を示す断面模式図である。図2に示すように、ロボットアーム201の関節J2には、駆動機構230、第1エンコーダの一例である出力側エンコーダ260、第2エンコーダの一例である入力側エンコーダ250等が配置されている。駆動機構230は、サーボモータ231と、サーボモータ231の回転軸232の回転を減速して出力する減速機233と、を有する。減速機233の出力軸234は、例えばリンク212に接続されている。減速機233を介したサーボモータ231の駆動力により、リンク212がリンク211に対して相対的に回転する。
サーボモータ231は、ブラシレスDCモータやACサーボモータなどの電動モータであり、図1に示すサーボ制御装置350によってサーボ制御される。なお、図1では、サーボ制御装置350は、ロボットアーム201の内部に配置されている場合について図示しているが、配置される箇所はこれに限定するものではなく、例えばロボット制御装置300の筐体内部に配置されている場合であってもよい。
減速機233は、例えば波動歯車減速機であり、減速比N(例えばN=50)でサーボモータ231の回転出力を減速して関節J2を動作させる。これにより、リンク212がリンク211に対して関節J2で相対的に回転する。減速機233の出力軸234の回転角度が、関節J2の角度となる。
入力側エンコーダ250及び出力側エンコーダ260は、ロータリエンコーダであり、光学式或いは磁気式のいずれであってもよく、また、アブソリュート形或いはインクリメンタル形のいずれであってもよい。入力側エンコーダ250は、減速機233の入力側に設けられ、サーボモータ231の回転軸232の角度情報である出力値を示す信号をサーボ制御装置350に出力する。出力側エンコーダ260は、減速機233の出力側、即ちリンク211とリンク212との間に設けられ、リンク211に対するリンク212の相対角度、即ち関節J2の角度情報である出力値を示す信号をサーボ制御装置350に出力する。
なお、リンク211とリンク212との間には、クロスローラベアリング237が設けられており、リンク211とリンク212とは、クロスローラベアリング237を介して回転自在に連結されている。
図3は、第1実施形態に係るロボットシステムの制御系を示すブロック図である。ロボット制御装置300は、コンピュータで構成されている。ロボット制御装置300は、処理部の一例であるCPU(Central Processing Unit)301を備える。ロボット制御装置300は、記憶部の一例として、ROM(Read Only Memory)302、RAM(Random Access Memory)303、及び内部記憶装置としてのHDD(Hard Disk Drive)304を備える。ロボット制御装置300は、記録ディスクドライブ305、入出力インタフェースであるI/O311〜316、及びサーボ制御装置350を備える。
CPU301、ROM302、RAM303、HDD304、記録ディスクドライブ305、及びI/O311〜316は、互いに通信可能にバス310で接続されている。I/O311には、サーボ制御装置350が接続され、I/O312には、出力側エンコーダ260が接続されている。また、I/O313には、教示ペンダント400が接続され、I/O314には、ディスプレイ500が接続されている。I/O315には、外部記憶装置600が接続可能である。I/O316は、通信ネットワーク700に接続可能である。
サーボ制御装置350には、各関節J1〜J6に対応するサーボモータ231及び入力側エンコーダ250が接続されている。なお、図3には、サーボモータ231、入力側エンコーダ250及び出力側エンコーダ260は、1つの関節分のみ図示しているが、第1実施形態では、6つの関節が存在する。したがって、図3において図示は省略するが、サーボモータ231、入力側エンコーダ250及び出力側エンコーダ260の組が6つ存在する。
CPU301は、ロボットアーム201の各関節J1〜J6を駆動するサーボモータ231を、サーボ制御装置350を介して制御することで、ロボットアーム201の動作を制御する。また、CPU301は、ディスプレイ500を制御して、ディスプレイ500に画像を表示させる。出力側エンコーダ260は、検知結果である角度情報を示す出力値の信号を、CPU301へ出力する。CPU301は、出力側エンコーダ260からの出力値の信号の入力を受ける。また、CPU301は、作業者の操作によって教示ペンダント400から送信される指示を示す信号を受け付ける。
HDD304には、制御及び演算用のプログラム321、タスクプログラム322及び教示データ323が記憶される。記録ディスクドライブ305は、記録ディスク330に記録された各種データやプログラム等を読み出すことができる。
プログラム321は、CPU301に、後述する各種演算や各種制御を行わせるプログラムである。タスクプログラム322は、例えばロボット言語で記述されたテキストファイルであり、ユーザ又はコンピュータにより変更が可能となっている。タスクプログラム322には、例えば「TCPを教示点P1から教示点P2に直線移動する」といった内容の命令文がロボット言語で記述されている。教示点のパラメータ数値は、タスクプログラム322に記述されてもよいが、第1実施形態では、タスクプログラム322とは別のファイルに教示データ323として記憶部であるHDD304に記憶される。即ち、教示データ323には、ロボットアーム201に組立作業などの一連の動作を行わせる複数の教示点の情報が含まれている。なお、教示点は、TCPの目標値であり、ベース座標系Σを基準に、並進方向の位置を示す3つの成分(X,Y,Z)、及び回転方向の位置を示す3つの成分(TX,TY,TZ)からなる6つの成分(X,Y,Z,TX,TY,TZ)で構成される。
CPU301は、タスクプログラム322を読み込み、教示点を結ぶTCPの軌道データを、タスクプログラム322にて指定された補間方法、例えば、直線補間や円弧補間等により生成する。例えば直線補間の場合、CPU301は、TCPを直線移動させる軌道データを生成する。
軌道データは、例えば1[ms]などの所定時間毎に指令する、TCPの位置である6つのパラメータを含む点データの集合であり、速度及び加速度などの時間情報を含んでいることになる。CPU301は、軌道データの各点データを、ロボットの逆運動学計算により、各関節J1〜J6の角度(位置)の目標値を示す角度指令値(位置指令値)に変換する。更に、CPU301は、各関節J1〜J6の角度指令値から、各関節J1〜J6に配置したサーボモータ231の回転角度の目標値を示す角度指令値(位置指令値)に変換する。具体的には、CPU301は、各関節J1〜J6の角度指令値に、減速機233の減速比Nを掛け算することで、各関節J1〜J6に配置したサーボモータ231に対する角度指令値を計算する。
CPU301は、各関節J1〜J6のサーボモータ231に対する指令値の一例として角度指令値を、所定時間毎にサーボ制御装置350に出力する。サーボ制御装置350は、入力側エンコーダ250により検知される角度、即ち入力側エンコーダ250からの出力値が角度指令値に近づくようにサーボモータ231に供給する電流を制御する。このように、サーボ制御装置350は、教示点の情報に基づく角度指令値に、入力側エンコーダ250の検知結果が近づくようにフィードバック制御する。
以下、ロボットアーム201の制御方法について詳細に説明する。第1実施形態における制御方法としては、教示データ323を作成する工程と、作成した教示データ323を修正する工程とに大別される。教示データ323を作成する工程においては、作業者が、教示ペンダント400を操作することで、ロボットアーム201に、組立作業や搬送作業などの所定の作業に必要な一連の動作を行わせる。作業者は、ロボットアーム201の状態を目視により確認しながら、教示ペンダント400を操作することにより、複数の教示点の情報(データ)を順番に決めていく。
以下、教示データ323を作成する工程(教示工程,教示処理)について具体的に説明する。図4は、第1実施形態に係るロボットアーム201の制御方法を説明するためのフローチャートである。図5(a)及び図5(b)は、ロボットアーム201の動作を説明するための図である。まず、図5(a)及び図5(b)に示すような、教示に用いる器具の一例である一対の教示治具WA,WBを用意しておく。教示治具WA,WBは、高精度に製作されている。ハンド202に対して高精度に位置決めした状態で教示治具WAをハンド202に把持させる。教示治具WBをベース座標系Σにおいて高精度に位置決めしておく。教示治具WAを教示治具WBに嵌合させることにより、教示治具WBに対する教示治具WAの位置が高精度に決まる。即ち、ロボット200に、教示治具WAを教示治具WBに嵌合させる作業を行わせることで、ロボットアーム201の先端をベース座標系Σにおいて高精度に位置決めすることができる。なお、ロボットアーム201の先端を高精度に位置決めする必要がない場合には、教示治具WAを教示治具WBに嵌合させる作業をロボット200に行わせなくてもよい。
以下、図4に示すフローチャートに沿って、ハンド202に教示治具WAを把持させた状態で教示を行う場合について説明する。なお、複数の教示点のうち、高い教示精度の必要がない教示点においても、ハンド202に対する教示治具WAの位置がずれる可能性があるため、ハンド202に教示治具WAを把持させた状態で教示を行うのが好ましい。
CPU301は、ロボットアーム201に教示動作を行わせる(S101)。即ち、CPU301は、作業者が操作する教示ペンダント400の指示に従い、ハンド202に教示治具WAを把持させた状態でロボットアーム201を動作させる。
作業者は、目視によりロボットアーム201の姿勢が定まったと判断したときには、教示ペンダント400を操作して、教示ペンダント400に教示点の情報を決定する指示をCPU301に送信させる。CPU301は、教示ペンダント400の指示に従い、そのときにサーボ制御装置350に指令した指令値に基づき、教示点の情報を示す6つの成分それぞれのパラメータ値を決定する。教示点の情報を決定するとは、記憶部であるHDD304に教示点の情報を記憶させることである。即ち、CPU301は、HDD304に教示点の情報を記憶させる(S102)。
サーボ制御装置350に指令する指令値は、サーボモータ231の角度に対応する角度指令値である。CPU301は、教示点を求める処理として、サーボモータ231の角度に対応する角度指令値を、関節の角度指令値に変換し、更にロボットの順運動学計算により、TCPの位置を示す指令値に変換する。このようにして、TCPの位置を示す指令値、即ち教示点の情報が求まる。なお、この順運動学計算には、ロボットアーム201の撓み、即ち減速機233の撓みの計算は含まれていない。
CPU301は、ロボットアーム201を、教示点の情報を決定したときに取らせた姿勢としたまま、各関節J1〜J6に配置されている出力側エンコーダ260から、各関節J1〜J6の角度の情報を示す出力値を取得する(S103)。
CPU301は、ロボットアーム201の姿勢に関する第1データとして、関節J1〜J6の角度情報に基づき、ロボットの順運動学計算により、ロボットアーム201の先端における実際の位置を求める(S104)。このステップS104で求めた位置の情報(データ)は、後の比較演算に用いる基準値となる。以下、ステップS104で求めた、ロボットアーム201の先端における位置の情報を、基準位置の情報という。基準位置の情報は、並進方向の位置を示す3つの成分と、回転方向の位置を示す3つの成分とを含む。
以上、第1実施形態では、CPU301は、教示点を作成したときの各関節J1〜J6に設けた出力側エンコーダ260の検知結果を取得し、これら検知結果に基づき、ロボットアーム201の先端の基準位置を測定する。CPU301は、測定により得られた基準位置の情報を、HDD304に記憶させる(S105)。
なお、ロボットアーム201が備えている複数の出力側エンコーダ260を用いてロボットアーム201の先端の位置を測定するものとしたが、これに限定するものではない。例えば、ロボットアーム201の周囲に、測定器の一例であるレーザ変位計を配置してもよい。この場合、CPU301は、レーザ変位計を用いて、ロボットアーム201の先端の位置を測定することになる。
ロボットアーム201の各関節J1〜J6に配置した減速機233は、ロボット200の自重及びハンド202が把持した教示治具WAの重量により、撓みが生じる。したがって、出力側エンコーダ260から得られる角度情報には、減速機233の撓みによる変位分が重畳していることになる。したがって、各関節J1〜J6の出力側エンコーダ260から得られる角度情報からロボットの順運動学計算によって求まるロボットアーム201の先端の位置は、実際の位置に近いものとなる。
CPU301は、教示が完了したかどうか、即ち複数の教示点の情報の全てについて決定したかどうかを判断する(S106)。CPU301は、教示が完了していない場合(S106:NO)、ステップS101に戻り、ロボットアーム201に次の教示動作を行わせる。ステップS101〜S106を繰り返すことで、複数の教示点の情報とともに、各教示点と対応付けた基準位置の情報が得られる。
組立作業を教示する場合を例に説明する。図5(a)の教示点P1は、低い精度でもよいものとする。図5(b)の教示点P2は、ワークW1をワークW2に組み付ける位置に対応し、高い精度が求められるものとする。CPU301は、作業者が操作する教示ペンダント400の指示に従い、図5(a)に示すように、ハンド202に教示治具WAを把持させた状態で、対象となる教示点P1の位置にロボットアーム201の先端を移動させる。ロボットアーム201の姿勢が定まったら、CPU301は、作業者が操作する教示ペンダント400の指示に従い、そのときにサーボ制御装置350に指令した情報から教示点P1の情報を決定する。
次に、CPU301は、作業者が操作する教示ペンダント400の指示に従い、図5(b)に示すように、ハンド202に教示治具WAを把持させた状態で、対象となる教示点P2の位置にロボットアーム201の先端を移動させる。教示治具WAが教示治具WBに嵌合完了したとき、ロボットアーム201の先端は、所定の位置に高精度に位置決めされている状態となる。ロボットアーム201の姿勢が定まったら、CPU301は、作業者が操作する教示ペンダント400の指示に従い、そのときにサーボ制御装置350に指令した情報から教示点P2の情報を決定する。教示治具WA,WBを用いずに教示点を決める方法と、教示治具WA,WBを用いて教示点を決める方法のうちいずれかの方法で次々と教示点を決めていくことで、一連の動作に対応する複数の教示点P1,P2,…を順次決定していく。このように決定された教示点P1,P2,…の情報は、教示データ323として、HDD304に記憶させていくことになる。
なお、ハンド202に教示治具WAを把持させることで、ロボットアーム201に教示治具WAを支持させる場合について説明したが、これに限定するものではない。例えば、ハンド202に、教示に用いる器具としてカメラを把持させて、カメラを用いてロボットアーム201を教示してもよい。また、教示に用いる器具をハンド202に把持させる場合について説明したが、ロボットアーム201の先端に、直接的又は間接的に教示に用いる器具を設置してもよい。いずれの場合であっても、ロボットアーム201は、教示に用いる器具を支持することになる。また、教示に用いる器具として、カメラを用いた場合、CPU301は、プログラム321に従って、自動で教示を行ってもよい。
ところで、実際にロボット200に作業させる際、ロボットアーム201には、教示治具WAを支持させていない状態となる。ロボット200に行わせる実際の作業のうち場面に応じて異なるが、ハンド202は、何も把持していないか、或いは教示治具WAとは異なるワークW1を把持している状態となる。即ち、ロボットアーム201は、ワークW1を支持した状態、或いは何も支持していない状態となる。よって、ロボットアーム201の先端にかかる荷重は、ステップS101〜S106にて教示を行ったときに対して変化することになる。これにより、ロボットアーム201の各関節J1〜J6における減速機233の撓み量が変化する。このため、入力側エンコーダ250を用いたセミクローズドループ制御によりロボットアーム201を動作させると、ロボットアーム201の先端の位置が、ステップS101〜S106にて教示を行ったときに対してずれることになる。
そこで、第1実施形態では、CPU301は、ロボットアーム201の姿勢が、教示を行ったときの状態となるように、HDD304に記憶された、教示点の情報、即ち教示データ323を修正する。つまり、CPU301は、HDD304に格納された教示データ323を書き換える。CPU301は、教示データ323の修正が終わった後は、修正後の教示データ323に従って軌道データを作成し、この軌道データに従ってロボットアーム201を自動運転することになる。
以下、作成した教示データ323を修正する工程について説明する。図6は、第1実施形態に係るロボットシステム100の制御系を機能的に表した機能ブロック図である。図7は、第1実施形態に係るロボットアーム201の制御方法を説明するためのフローチャートである。図8(a)及び図8(b)は、ロボットアーム201の動作を説明するための図である。
図3に示すCPU301は、プログラム321を実行することにより、図6に示す、指令生成部601、第1測定部602、第2測定部603、比較部604及び修正部605として機能し、図7に示すフローを実行する。以下、各部601,602,603,604,605の動作について説明する。
指令生成部601は、HDD304に記憶されている教示データ323に含まれる複数の教示点の情報のうち、いずれかの教示点の情報を読み出すことで、教示点の情報を取得する。指令生成部601は、読み出した教示点の情報に基づき、各関節のサーボモータ231の角度を指令する指令値である角度指令値(位置指令値)を求め、求めた角度指令値をサーボ制御装置350に送信する。サーボ制御装置350は、教示点の情報に基づく各関節J1〜J6のサーボモータ231の角度指令値に、入力側エンコーダ250の検知結果である出力値が近づくように、角度指令値と出力値との差に基づき、各サーボモータ231をフィードバック制御する。これにより、指令生成部601は、サーボ制御装置350を介して、教示点の情報に従ってロボットアーム201を動作させる(S201)。このとき、ハンド202は、教示治具WAを把持しておらず、何も把持していないか、或いはワークW1を把持している状態とする。即ち、実際の作業と同じ状態又は近い状態を再現して、ロボット200に実動作を行わせる。よって、指令生成部601は、教示治具WAをロボットアーム201に支持させていない状態で教示点の情報に従ってロボットアーム201を動作させる。
第1測定部602は、出力側エンコーダ260から角度の情報である出力値の信号を取得する(S202)。前述したように、この角度の情報には、減速機233の撓みによる変位分が含まれている。第2測定部603は、ロボットアーム201の姿勢に関する第2データとして、各関節J1〜J6の角度の情報に基づき、順運動学計算により、ロボットアーム201の先端の位置を求める(S203)。即ち、測定部602,603は、各関節J1〜J6に設けた出力側エンコーダ260の検知結果を取得し、これら検知結果に基づき、ロボットアーム201の先端の位置を求める。このように、測定部602,603は、ロボットアーム201の先端の位置を測定することにより、測定結果として、ロボットアーム201の姿勢に関する第2データを取得する(S202,S203:測定工程,測定処理)。ロボットアーム201の先端における位置の情報は、並進方向の位置を示す3つの成分と、回転方向の位置を示す3つの成分とを含む。
なお、ロボットアーム201が備えている複数の出力側エンコーダ260を用いてロボットアーム201の先端の位置を測定するものとしたが、これに限定するものではない。例えば、ロボットアーム201の周囲に、測定器の一例であるレーザ変位計を配置してもよい。この場合、CPU301は、レーザ変位計を用いて、ロボットアーム201の先端の位置を測定することになる。
比較部604は、ロボットアーム201の姿勢に関する第1データと第2データとの差を求める。本実施形態では、比較部604は、HDD304に記憶されている、第1データである基準位置の情報を読み出すことで、基準位置の情報を取得する。また、比較部604は、第2データであるロボットアーム201の先端における位置の情報を、測定部602,603から取得する。比較部604は、基準位置に対する、測定部602,603により測定したロボットアーム201の先端の位置の差であるずれ量を求める(S204)。ずれ量は、前述したTCPや教示点と同様、6つの成分を含み、6つの成分のパラメータを、(ΔX,ΔY,ΔZ,ΔTX,ΔTY,ΔTZ)で表す。
修正部605は、ロボットアーム201の姿勢に関する第1データと第2データとの差に基づき、教示点を修正する。本実施形態では、修正部605は、比較部604により求めたずれ量に基づき、実動作時のロボットアーム201の先端の位置を教示時に一致させるような、教示点の情報の修正量を演算する。修正部605は、HDD304に記憶されている教示点の情報を修正して書き換える(S206:修正工程,修正処理)。
具体例を挙げて説明する。図8(a)に示す教示点P1は、低い精度でもよく、修正しなくてもよいものとする。図8(b)に示す教示点P2は、ワークW1をワークW2に組み付ける位置に対応し、高い精度が求められ、修正する必要があるものとする。即ち、複数の教示点の情報のうち、一部についてのみ、ステップS201〜S206で説明した処理を行えばよい。
以下、教示点P2の情報を修正する場合について説明する。本実施形態では、ロボットアーム201を教示点P2へ動作させる際に、先行する教示点がある場合、この例では、教示点P1があるので、その教示点P1から教示点P2へ動作させる。これは、各関節J1〜J6に配置されている減速機233にヒステリシスが存在するためであり、より実際の組み立て動作に近い状況を再現させるためである。また、図8(b)に示すように、組み付け対象である図1に示すワークW2は、ワークW1と干渉しないように配置していない。
修正前の第1教示点である教示点P2の各成分のパラメータを(X2,Y2,Z2,TX2,TY2,TZ2)とする。ずれ量の各成分のパラメータは(ΔX,ΔY,ΔZ,ΔTX,ΔTY,ΔTZ)である。CPU301は、このずれ量をキャンセルするように、即ちロボットアーム201の先端の位置のずれ量が小さくなるように、ステップS206において、教示点P2を修正して、修正後の第2教示点である新たな教示点P2Aを作成する。そして、CPU301は、HDD304に記憶されている修正前の教示点P2を修正後の新たな教示点P2Aに書き換える。具体的には、CPU301は(X2−ΔX,Y2−ΔY,Z2−ΔZ,TX2−ΔTX,TY2−ΔTY,TZ2−ΔTZ)を求めて、これを新たな教示点P2Aとする。
教示点P2Aに修正した後、CPU301は、P1→P2A→・・・を辿る軌道データを生成してHDD304に記憶させておく。以上の修正作業により、ロボットアーム201の実質的な教示が完了する。
CPU301は、ロボットアーム201の自動運転時には、生成した修正後の軌道データを再生する。つまり、サーボ制御装置350によるフィードバック制御中に軌道データを逐一修正するのではなく、教示点そのものを、教示の段階で修正しておき、実際の自動運転時には、サーボ制御装置350は予め修正された軌道データを再生することになる。よって、サーボ制御装置350における演算負荷が小さくなり、これによりロボット動作の応答性が向上する。
ロボットアーム201の先端のずれが、修正前よりも小さくなるので、ロボットアーム201の先端の位置精度が向上し、実際に行わせる作業の精度が向上する。よって、ロボット200による精密な作業、例えば組立作業などにおいて、作業が失敗する割合が低減し、ロボット200に所定の作業を確実に行わせることができる。なお、本実施形態では、ロボットアーム201の自動運転の前に教示点P2を修正して教示点P2Aを作成するものとして説明したが、これに限定するものではない。例えば、ロボットアーム201の自動運転時、即ちワークW1をワークW2に組み付けて物品を製造するときに、ワークW1を支持したロボットアーム201の姿勢に関する第2データを取得して、教示点P2を修正して教示点P2Aを作成するようにしてもよい。
[第2実施形態]
第2実施形態に係るロボットシステムにおけるロボットアームの制御方法について説明する。図9は、第2実施形態に係るロボットアームの制御方法を示すフローチャートである。なお、第2実施形態のロボットシステムの構成は、第1実施形態において説明した図1、図2、図3及び図6と同様であり、説明を省略する。また、第2実施形態において、教示工程も、第1実施形態において説明した図4と同様であるため、説明を省略する。
第2実施形態では、図6に示す修正部605による修正処理が第1実施形態と異なる。即ち、第2実施形態では、図9に示すように、ステップS204の処理とステップS206の処理との間に、ステップS205の処理がある点が、第1実施形態と異なる。なお、ステップS201〜S204,S206の処理は、第1実施形態で説明した図7に示す処理と同様である。
即ち、修正部605は、ステップS204において求めたずれ量が、所定量以下であるかどうか、即ち許容範囲内であるかどうかを判断する(S205)。修正部605は、ずれ量が所定量以下、即ち許容範囲内であれば(S205:YES)、教示点の情報を修正せずにそのまま終了する。修正部605は、ずれ量が所定量を超えている、即ち許容範囲を超えていれば(S205:NO)、教示点の情報を修正する(S206)。
所定量、即ち許容範囲は、作業者が図1に示す教示ペンダント400を操作することにより任意に設定することができる。つまり、作業に応じて精度が異なるため、作業者は、求められる精度に応じて所定量(許容範囲)を設定すればよい。
ここで、第2実施形態では、ずれ量は、第1実施形態で説明した通り、ロボットアーム201の先端における並進方向及び回転方向それぞれに対する6つのずれ成分(ΔX,ΔY,ΔZ,ΔTX,ΔTY,ΔTZ)を含んでいる。よって、修正部605は、ずれ量が所定量以下であるかどうかを、各ずれ成分(ΔX,ΔY,ΔZ,ΔTX,ΔTY,ΔTZ)が、それぞれに割り当てた所定値(THX,THY,THZ,THTX,THTY,THTZ)以下であるかどうかで判断する。第2実施形態において、所定量は、各ずれ成分に割り当てた所定値からなる。
具体的には、修正部605は、ステップS205では、6つ全てのずれ成分がそれぞれに割り当てた所定値以下であるかどうかを判断する。修正部605は、6つ全てのずれ成分が所定値以下である場合(S205:YES)、処理を終了し、そうでない場合(S205:NO)、ステップS206で教示点の情報を修正する。すなわち、6つのずれ成分のうち、1つでも所定値を上回るものがあれば、修正部605は、ステップS206で教示点の情報を修正する。なお、ステップS205において、修正部605は、ずれ量に含まれる複数のずれ成分の平均値が所定値以下であるかどうかを判断してもよい。平均値を求める場合には、単位系の同じずれ成分を平均すればよい。例えば、ずれ成分ΔX,ΔY,ΔZの平均値、及び/又はずれ成分ΔTX,ΔTY,ΔTZの平均値が所定値以下であるかどうかを判断してもよい。また、ロボットアーム201の先端の位置のずれ量を求める場合について説明したが、ロボットアーム201の各関節J1〜J6の角度のずれ成分を含むずれ量を求めてもよい。この場合、修正部605は、6つ全てのずれ成分がそれぞれに割り当てた所定値以下であるかどうかを判断してもよいし、6つのずれ成分の平均値が所定値以下であるかどうかを判断してもよい。
第2実施形態においても、第1実施形態と同様、ロボットアーム201の先端のずれが、修正前よりも小さくなるので、ロボットアーム201の教示精度が向上し、実際に行わせる作業の精度が向上する。よって、ロボット200による精密な作業、例えば組立作業などにおいて、作業が失敗する割合が低減し、ロボット200に所定の作業を確実に行わせることができる。
[第3実施形態]
第3実施形態に係るロボットシステムにおけるロボットアームの制御方法について説明する。図10は、第3実施形態に係るロボットアームの制御方法を示すフローチャートである。なお、第3実施形態のロボットシステムの構成は、第1実施形態において説明した図1、図2、図3及び図6と同様であり、説明を省略する。また、第3実施形態において、教示工程も、第1実施形態において説明した図4と同様であるため、説明を省略する。
第3実施形態では、図10に示すように、ステップS201〜S206の処理を繰り返す点で、第2実施形態と異なる。なお、ステップS201〜S206の処理は、第2実施形態で説明した図9に示す処理と同様である。
即ち、修正部605は、ステップS204において求めたずれ量が、所定量以下であるかどうか、即ち許容範囲内であるかどうかを判断する(S205)。修正部605は、ずれ量が所定量以下、即ち許容範囲内であれば(S205:YES)、教示点の情報を修正せずにそのまま終了する。修正部605は、ずれ量が所定量を超えている、即ち許容範囲を超えていれば(S205:NO)、教示点の情報を修正する(S206)。そして、再びステップS201の処理に戻って、ステップS201〜S206を繰り返す。即ち、CPU301は、ずれ量が許容範囲内に収束するまで、ステップS201〜S206を繰り返す。図8(b)を例に説明すると、CPU301は、ずれ量が許容範囲内に収束するまで教示点P2を繰り返し修正して教示点P2Aを作成する。これにより、第2実施形態よりもロボットアーム201の教示精度を向上させることができる。
[第4実施形態]
第4実施形態に係るロボットシステムにおけるロボットアームの制御方法について説明する。図11は、第4実施形態に係るロボットアームの制御方法を示すフローチャートである。なお、第4実施形態のロボットシステムの構成は、第1実施形態において説明した図1、図2、図3及び図6と同様であり、説明を省略する。また、第4実施形態において、教示工程も、第1実施形態において説明した図4と同様であるため、説明を省略する。
第4実施形態では、図3に示すCPU301は、図11に示すように、ステップS201〜S204の処理を実行した後、図7に示すステップS206と同様の処理をステップS211で実行する。次に、CPU301は、ステップS201〜S204と同様の処理をステップS212〜S215で実行する。そして、CPU301は、図9に示すステップS205と同様の処理をステップS216で実行する。
CPU301は、ずれ量が所定量を超えている、即ち許容範囲を超えていれば(S216:NO)、ステップS211の処理に戻り、ずれ量が所定量以下、即ち許容範囲内であれば(S216:YES)、処理を終了する。
このように、第4実施形態では、1回目はずれ量に拘らず教示点を修正し、2回目以降はずれ量が所定量を超える場合に教示点を修正する。これにより、第4実施形態においても、第1実施形態と同様、ロボットアーム201の先端のずれが、修正前よりも小さくなるので、ロボットアーム201の教示精度が向上し、実際に行わせる作業の精度が向上する。よって、ロボット200による精密な作業、例えば組立作業などにおいて、作業が失敗する割合が低減し、ロボット200に所定の作業を確実に行わせることができる。
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されない。
上述の実施形態においては、ロボットが、垂直多関節ロボットである場合について説明したが、水平多関節ロボット(スカラロボット)、又はパラレルリンクロボットなどであってもよい。
また、上述の実施形態では、ロボット制御装置300が、教示装置を兼ね、自ら教示点P2のデータと、教示点P2にロボットアーム201を動作させたときのロボットアーム201の姿勢に関する第1データとを作成する場合について説明した。しかし、この開示に限定するものではない。例えば、教示装置とロボット制御装置300とが別々のコンピュータで構成されていてもよい。即ち、ロボット制御装置300とは別のコンピュータで、教示点P2のデータと、教示点P2にロボットアーム201を動作させたときのロボットアーム201の姿勢に関する第1データとを作成してもよい。この場合ロボット制御装置300は、作成された教示点P2のデータと、教示点P2にロボットアーム201を動作させたときのロボットアーム201の姿勢に関する第1データとを、図3の外部記憶装置600又は通信ネットワーク700から取得してもよい。
また、上述の実施形態では、ロボットアーム201の姿勢の第1データ及び第2データとして、それぞれロボットアーム201の先端における位置のデータを求める場合について説明したが、これに限定するものではない。例えば、ロボットアーム201の姿勢の第1データ及び第2データとして、それぞれロボットアーム201の関節J1〜J6の並進又は回転位置のデータを求めるようにしてもよい。具体的には、関節J1〜J6のそれぞれに設けられた出力側エンコーダ260の出力値を用いて、関節J1〜J6の並進又は回転位置のデータを求めればよい。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
また、上述の実施形態では、コンピュータ読み取り可能な記録媒体がHDD304に限らず、記録ディスク330等、いかなる記録媒体であってもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、光ディスク(例えばCD−ROM、DVD−ROM)、光磁気ディスク、磁気テープ、不揮発性のメモリ(例えばUSBメモリ)、ROM等、種々の記録媒体を用いることができる。また、上述の実施形態におけるプログラム321を、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
また、コンピュータが読み出したプログラムコードを実行することにより、上述の実施形態の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれる。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって上述の実施形態の機能が実現される場合も含まれる。