(本開示に至る経緯)
ロボットは、出荷時に各関節軸がキャリブレーションされた状態で出荷されるが、ロボット先端部が障害物等へ衝突したり、ロボットの部品交換等が行われたりすることで関節軸に位置・姿勢ずれが生じる。そこで、特許文献1のように、高精度に関節角度を測定可能な3次元位置測定器を用いたロボットのキャリブレーション方法が開示されているが、3次元位置測定器は、高価で、測定のために作業スペースを必要とする。また、作業者は、ロボットの各関節に位置検出器を設けたり、多関節ロボットの手先と3次元測定器の先端とを既定の位置で結合したりしなければならず、たいへん手間だった。
また、従来、他のロボットのキャリブレーション方法として、位置合わせのためのピンをロボットの先端部に取り付けて、治具上の位置合わせ点にピンを合わせることでロボットのキャリブレーションを実行する方法がある。しかし、このようなキャリブレーション方法は、位置合わせを行う作業者の熟練度によって校正精度が左右されるという課題があった。
以下、適宜図面を参照しながら、本開示に係るロボットシステムを具体的に開示した各実施の形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になることを避け、当業者の理解を容易にするためである。なお、添付図面および以下の説明は、当業者が本開示を十分に理解するために提供されるものであり、これらにより特許請求の範囲に記載の主題を限定することは意図されていない。
まず、図1および図2のそれぞれを参照して、実施の形態に係るロボットシステム100の全体構成について説明する。図1は、実施の形態に係るロボットシステム100のシステム構成例を示すブロック図である。図2は、実施の形態におけるロボットM1の6つの関節軸(動作軸の一例であって、RT関節軸J1,UA関節軸J2,FA関節軸J3,RW関節軸J4,BW関節軸J5,TW関節軸J6)の一例を示す図である。
実施の形態に係るロボットシステム100は、端末装置P1と、ロボット制御装置R1と、ロボットM1とを含む。
端末装置P1は、例えば、PC(Personal Computer),ノートPC,タブレット端末等により実現される。端末装置P1は、ロボットM1のキャリブレーション作業を行う作業者操作を受け付け可能であって、ロボットM1の少なくとも1つの関節軸の重力加速度の測定値に基づいて、ロボットM1の少なくとも1つの関節軸の補正パラメータの算出を実行する。端末装置P1は、第1の通信部10と、第1のプロセッサ11と、第1のメモリ12と、入力部13と、表示部14とを含む。
第1の通信部10は、ロボットM1に取り付けられた3次元加速度センサ31との間で、無線あるいは有線通信可能に接続され、データの送受信を実行する。なお、ここでいう無線通信は、例えばWi-Fi(登録商標)等の無線LAN(Local Area Network)を介した通信である。第1の通信部10は、3次元加速度センサ31から送信された重力加速度の情報を第1のプロセッサ11に出力する。
第1のプロセッサ11は、例えばCPU(Central Processing Unit)またはFPGA(Field Programmable Gate Array)を用いて構成され、第1のメモリ12と協働して、各種の処理および制御を行う。具体的には、第1のプロセッサ11は、第1のメモリ12に保持されたプログラムを参照し、そのプログラムを実行することにより、各部の機能を実現する。なお、ここでいう各部は、回転軸ベクトル算出部111,補正パラメータ算出部112,測定姿勢命令部113等である。第1のプロセッサ11は、3次元加速度センサ31により測定されたロボットM1の姿勢(重力加速度)に基づいて、少なくとも1つの関節軸の姿勢を補正(調整)するための補正パラメータを算出する。
回転軸ベクトル算出部111は、1つの関節軸に対して異なる3つ以上の姿勢で測定された重力加速度の測定値のそれぞれに基づいて、この関節軸の回転軸ベクトルを算出する。なお、回転軸ベクトル算出部111は、重力加速度の測定値に基づいて、3次元加速度センサ31にかかる重力の大きさと方向とを示す重力ベクトルを算出してもよい。
ここで、回転軸ベクトルについて説明する。回転軸ベクトルは、所謂関節軸の回転ベクトルであって、所定の関節軸を単軸で駆動(回転)させた時に得られる重力加速度の測定値の軌跡により定義される平面に対して垂直な法線ベクトルである。回転軸ベクトル算出部111は、算出された回転軸ベクトルの情報を補正パラメータ算出部112に出力する。
補正パラメータ算出部112は、回転軸ベクトル算出部111から取得された少なくとも1つの関節軸の回転軸ベクトルに基づいて、作業者により指定された関節軸の補正パラメータを算出する。補正パラメータ算出部112は、算出された関節軸ごとの補正パラメータを表示部14に出力して表示させる。また、補正パラメータ算出部112は、算出された関節軸ごとの補正パラメータをロボット制御装置R1に送信し、記録させる。
測定姿勢命令部113は、1つの関節軸に対して異なる3つ以上の重力加速度を取得するために、現在重力加速度を測定中である関節軸の姿勢(回転角度)を所定の姿勢に変更させる制御指令を生成する。測定姿勢命令部113は、生成された制御指令をロボット制御装置R1に送信する。なお、制御指令の送信処理は、端末装置P1の第1の通信部10を介して実行されてもよい。
第1のメモリ12は、例えば第1のプロセッサ11の処理を実行する際に用いられるワークメモリとしてのRAM(Random Access Memory)と、第1のプロセッサ11の処理を規定したプログラムを格納するROM(Read Only Memory)とを有する。RAMには、第1のプロセッサ11により生成あるいは取得されたデータが一時的に保存される。ROMには、第1のプロセッサ11の処理を規定するプログラムが書き込まれている。第1のメモリ12は、第1の姿勢データ121を記録する。
第1の姿勢データ121は、測定姿勢命令部113により指定された姿勢(回転角度)の情報と、3次元加速度センサ31により測定された異なる3つ以上の重力加速度の測定値とが対応付けられたデータである。第1の姿勢データ121は、第1のプロセッサ11により関節軸ごとに記録される。
入力部13は、例えばタッチパネル、ボタン、キーボード、マウス等のユーザインタフェースである。入力部13は、作業者操作を受け付けて、電気信号(制御指令)に変換し、第1のプロセッサ11に出力する。なお、タッチパネルを用いて構成される場合、入力部13と、表示部14とは、一体的に構成されてもよい。
表示部14は、例えばLCD(Liquid Crystal Display)または有機EL(Electroluminescence)等のディスプレイである。表示部14は、各関節軸の補正パラメータの算出結果等を表示する。
ロボット制御装置R1は、端末装置P1から送信された制御指令に基づいて、ロボットM1の6つの関節軸のそれぞれを制御する。ロボット制御装置R1は、第2の通信部20と、第2のプロセッサ21と、第2のメモリ22とを含む。
第2の通信部20は、端末装置P1およびロボットM1のそれぞれとの間でデータ送受信可能に接続される。第2の通信部20は、端末装置P1から送信された制御指令,関節軸ごとの補正パラメータ等を第2のプロセッサ21に出力する。
第2のプロセッサ21は、例えばCPUまたはFPGAを用いて構成され、第2のメモリ22と協働して、各種の処理および制御を行う。具体的には、第2のプロセッサ21は、第2のメモリ22に保持されたプログラムを参照し、そのプログラムを実行することにより、各部の機能を実現する。第2のプロセッサ21は、端末装置P1から送信された制御指令に基づいて、ロボットM1の各関節軸を駆動制御したり、端末装置P1から送信された関節軸ごとの補正パラメータと、現在の関節軸の姿勢との角度差に基づいて、ロボットM1の各関節軸の姿勢補正(調整)を実行したりする。
第2のメモリ22は、例えば第2のプロセッサ21の処理を実行する際に用いられるワークメモリとしてのRAMと、第2のプロセッサ21の処理を規定したプログラムを格納するROMとを有する。RAMには、第2のプロセッサ21により生成あるいは取得されたデータが一時的に保存される。ROMには、第2のプロセッサ21の処理を規定するプログラムが書き込まれている。第2のメモリ22は、第2の姿勢データ221を記録する。
第2の姿勢データ221は、ロボットM1の6つの関節軸のそれぞれ(RT関節軸J1,UA関節軸J2,FA関節軸J3,RW関節軸J4,BW関節軸J5,TW関節軸J6)の姿勢(角度)を記録する。第2の姿勢データ221は、端末装置P1から関節軸の姿勢を補正(調整)するための補正パラメータが送信された場合、第2のプロセッサ21により取得された補正パラメータが示す姿勢(角度)に書き換えられる。
ロボットM1は、ロボット制御装置R1との間でデータ送受信可能に接続される。なお、本実施の形態では、6つのアームを駆動可能にする6つの関節軸を有するロボットである例を示すが、関節軸の数はこれに限定されないことは言うまでもない。
ロボットM1は、RT軸回りに回転自在であるRT関節軸J1と、UA軸回りに回転自在であるUA関節軸J2と、FA軸回りに回転自在であるFA関節軸J3と、RW軸回りに回転自在であるRW関節軸J4と、BW軸回りに回転自在であるBW関節軸J5と、TW軸回りに回転自在であるTW関節軸J6とを備える。ロボットM1は、作業者によりアーム先端部33に3次元加速度センサ31が取り付けられる。
ロボットM1は、制御部32を備える。制御部32は、ロボット制御装置R1により制御される。制御部32は、ロボット制御装置R1から送信された制御指令に基づいて、6つの関節軸(RT関節軸J1,UA関節軸J2,FA関節軸J3,RW関節軸J4,BW関節軸J5,TW関節軸J6)のそれぞれに設けられたモータ(不図示)を駆動させ、6つの関節軸を回転させることにより6つのアームのそれぞれの駆動制御を実現する。なお、制御部32は、関節軸の重力加速度を測定する場合、重力加速度の測定対象である関節軸のみを単軸で駆動(回転)させる。
加速度センサの一例としての3次元加速度センサ31は、ロボットM1のアーム先端部33(先端部の一例)に取り付けられ、センサ座標系に基づく関節軸の重力加速度を測定する。なお、ここでいうセンサ座標系は、3次元加速度センサ31に設定された座標系であって、例えば、図3に示すX軸,Y軸,Z軸のそれぞれにより定義される座標系である。3次元加速度センサ31は、測定された重力加速度の情報を端末装置P1に送信する。
次に、図3を参照して、各関節軸の回転軸ベクトルについて説明する。図3は、実施の形態におけるロボットの6つの回転軸ベクトルVRT,VUA,VFA,VRW,VBW,VTWと、3次元加速度センサ31の座標系とを説明する図である。なお、図3に示す3次元加速度センサ31のセンサ座標系は、一例であってこれに限定されないことは言うまでもない。
回転軸ベクトル算出部111により算出される回転軸ベクトルVRT,VUA,VFA,VRW,VBW,VTWのそれぞれは、始点がセンサ座標の原点Oと一致する。これにより、補正パラメータ算出部112は、回転軸ベクトルと設置面H0(図13参照)との比較、複数の回転軸ベクトルの比較等に基づいて、関節軸の姿勢を補正(調整)可能な補正パラメータを算出できる。
次に、図4を参照して、ロボットシステム100の動作手順例について説明する。図4は、実施の形態に係るロボットシステム100の動作手順例を説明するフローチャートである。
ロボットシステム100における端末装置P1は、作業者による1以上の関節軸の選択(指定)操作を受け付け、選択(指定)された関節軸の重力加速度の測定開始を要求する制御指令を生成して、ロボット制御装置R1に送信する。ロボット制御装置R1は、端末装置P1から送信された制御指令に基づいて、ロボットM1の姿勢を測定基本姿勢に調整する。端末装置P1は、3次元加速度センサ31から送信された3つ以上の重力加速度を関節軸ごとに取得することで、各関節軸の重力加速度を測定する(St11)。
端末装置P1は、関節軸ごとに取得された3つ以上の重力加速度のそれぞれを用いて、各関節軸の回転軸ベクトルを算出する(St12)。
端末装置P1は、算出された回転軸ベクトルに基づいて、関節軸と関節軸との間の角度差、関節軸とロボットM1の設置面H0との間の角度差、あるいは関節軸と重力ベクトルが示す重力方向との間の角度差等を算出する(St13)。なお、ステップSt13において、端末装置P1は、作業者により角度差の算出に用いられる対象(関節軸,設置面H0,重力方向等)の選択を受け付け、選択された任意の2つの対象の角度差を算出してよい。これにより、端末装置P1は、作業者が要望する関節軸の補正パラメータを算出できる。
ここで、ステップSt13の処理で算出される角度差について説明する。2つの回転軸ベクトルとの間の角度差、あるいは回転軸ベクトルと重力ベクトルとの間の角度差を算出する場合、端末装置P1は、2つのベクトルの間の内角を2つのベクトルの間の角度差として算出してもよい。また、端末装置P1は、2つのベクトルのそれぞれの正射影ベクトルを算出し、これらの2つの正射影ベクトルの内角を2つのベクトルの間の角度差として算出してもよい。
端末装置P1は、算出された角度差に基づいて、姿勢補正(調整)対象である関節軸の補正パラメータ(角度)を算出する(St14)。
端末装置P1は、算出された関節軸ごとの補正パラメータと、既存のロボットM1の姿勢データを補正パラメータに基づく新たな姿勢データに書き換えさせる制御指令とを対応付けて、ロボット制御装置R1に送信し、第2の姿勢データ221の書き換えを実行させる(St15)。
端末装置P1は、関節軸ごとの補正パラメータの算出結果を表示部14に表示し、関節軸ごとに算出された補正パラメータの算出結果を作業者に通知する(St16)。
以上により、実施の形態に係るロボットシステム100は、ロボットM1の関節軸の姿勢の補正パラメータをより容易に算出できる。また、ロボットシステム100は、補正パラメータの算出結果を表示部14に表示することにより、作業者により行われるロボットM1の姿勢補正(調整)作業をより効果的に支援することができる。
なお、ロボットM1の姿勢補正(調整)作業は、ロボット制御装置R1により実行されてもよい。このような場合、ロボット制御装置R1は、書き換え前の第2の姿勢データ221と、端末装置P1から送信された補正パラメータとの角度(姿勢)差分に基づいて、各関節軸の姿勢を補正(調整)してもよい。
次に、図5および図6のそれぞれを参照して、図4に示すステップSt11(重力加速度の測定方法)について説明する。図5は、実施の形態に係るロボットシステム100の重力加速度の測定手順例を説明するフローチャートである。図6は、実施の形態に係るロボットシステム100の重力加速度の測定手順例を説明するフローチャートである。なお、図5および図6の説明では、説明を分かりやすくするために、一例として「関節軸A」で示される関節軸の姿勢(回転角度)を変化させた時の重力加速度の測定を行う例について説明する。
作業者は、ロボットM1のアーム先端部33の所定位置に3次元加速度センサ31を取り付ける(St111)。なお、3次元加速度センサ31が常時取り付けられる場合、ステップSt111の処理は省略されてもよい。
端末装置P1は、作業者による重力加速度の測定対象として、重力加速度が未測定であるいずれか関節軸Aの選択(指定)操作を受け付ける(St112)。端末装置P1は、選択された関節軸Aの姿勢変化に対応する重力加速度の測定開始を要求する制御指令を生成して、ロボット制御装置R1に送信する。
なお、ステップSt112で選択(指定)される関節軸の数は、複数であってもよい。端末装置P1は、重力加速度の測定対象である複数の関節軸の選択(指定)操作を受け付けた場合、選択(指定)された複数の関節軸のそれぞれのうち、重力加速度が未計測であって、かつ、いずれか1つの関節軸Aを選択する。
また、ステップSt112において、端末装置P1は、例えば、設置面に対するロボットM1の傾き調整,原点調整,軸ずれ検出等のロボットM1の関節軸の姿勢に関する調整目的あるいは検出目的の選択(指定)操作を受け付けてもよい。このような場合、端末装置P1は、調整目的あるいは検出目的ごとに重力加速度の測定対象となる1つ以上の関節軸の情報を第1のメモリ12に記録する。端末装置P1は、第1のメモリ12を参照し、作業者操作により選択(指定)された調整目的あるいは検出目的に対応付けられた関節軸の情報に基づいて、重力加速度の測定対象となる少なくとも1つの関節軸を決定する。
ロボット制御装置R1は、端末装置P1から送信された制御指令に基づいて、測定基本姿勢になるようにロボットM1の各関節軸を駆動可能なモータをそれぞれ制御し、ロボットM1の姿勢を調整する(St13)。ロボット制御装置R1は、ロボットM1の測定基本姿勢への調整が完了した場合、測定基本姿勢への調整完了を通知する制御指令(電気信号)を生成して、端末装置P1に送信する。
なお、ここでいう測定基本姿勢は、重力加速度の測定時の基本姿勢として調整される姿勢(回転角度)であって、姿勢(回転角度)の情報が関節軸ごとに第1のメモリ12に記録される。測定基本姿勢は、例えば、RT関節軸J1=0(ゼロ)°、UA関節軸J2=-50°、FA関節軸J3=-50°、RW関節軸J4=0(ゼロ)°、BW関節軸J5=-10°、TW関節軸J6=0(ゼロ)°である。なお、上述した測定基本姿勢は一例であってこれに限定されないことは言うまでもない。
端末装置P1は、ロボット制御装置R1から送信された測定基本姿勢への調整完了を通知する制御指令に基づいて、関節軸Aの姿勢変化に対応する重力加速度の測定回数i(i:0以上の整数)をi=1に設定する(St114)。端末装置P1は、ロボット制御装置R1から関節軸Aの現在の姿勢(回転角度)情報を取得(受信)し、ロボットM1のアーム先端部33に取り付けられた3次元加速度センサ31から重力加速度を取得(受信)する(St115)。
端末装置P1は、関節軸Aの姿勢(回転角度)情報と、取得された重力加速度の測定値に基づく重力加速度の測定値(xi,yi,zi)とを対応付けて、関節軸Aの姿勢データとして第1のメモリ12に記録する(St116)。
端末装置P1は、関節軸Aの姿勢変化に対応する重力加速度の測定回数iが所定回数m(m:3以上の整数)以上であるか否かを判定する(St117)。なお、所定回数mは、作業者により任意の回数が設定されてよい。
端末装置P1は、ステップSt117の処理において、関節軸Aの姿勢変化に対応する重力加速度の測定回数iが所定回数m以上である(i≧m)と判定した場合(St117,YES)、すべての関節軸の姿勢変化に対応する重力加速度の測定が完了したか否かを判定する(St118)。なお、ここでいうすべての関節軸は、ステップSt112の処理で選択(指定)されたすべての関節軸を示す。
一方、端末装置P1は、ステップSt117の処理において、関節軸Aの姿勢変化に対応する重力加速度の測定回数iが所定回数m以上でない(i<m)と判定した場合(St117,NO)、関節軸Aの姿勢(回転角度)を変更させる制御指令を生成して、ロボット制御装置R1に送信する。
ロボット制御装置R1は、端末装置P1から送信された制御指令に基づいて、ロボットM1が有する6つの関節軸のうち関節軸Aの単軸で駆動(回転)させて、関節軸Aの姿勢を異なる姿勢に変更させる(St119)。ロボット制御装置R1は、関節軸Aの姿勢変更が完了した場合、変更後の関節軸Aの姿勢(回転角度)情報と、姿勢変更完了を通知する制御指令とを対応付けて端末装置P1に送信する。
なお、異なる姿勢への変更は、例えば、関節軸Aのみ(つまり、単軸)を所定の回転角度(例えば、15°,30°,60°等)ずつ回転させることで実現されてもよいし、関節軸Aのみを事前に設定された3以上の回転角度(例えば、0(ゼロ)°,120°,270°等)に回転させることで実現されてもよい。
端末装置P1は、ロボット制御装置R1から送信された変更後の関節軸Aの姿勢(回転角度)情報と、制御指令と取得する。端末装置P1は、制御指令に基づいて、重力加速度の測定回数iをインクリメント(i=i+1)し(St120)、ロボットM1のアーム先端部33に取り付けられた3次元加速度センサ31から重力加速度の測定値を取得(受信)する(St115)。
端末装置P1は、ステップSt118の処理において、すべての関節軸の姿勢変化に対応する重力加速度の測定が完了したと判定した場合(St118,YES)、重力加速度の測定が完了した旨の通知を生成して、表示部14に表示する。作業者は、ロボットM1のアーム先端部33から3次元加速度センサ31を取り外すことで、重力加速度の測定作業を終了する(St121)。なお、ステップSt121の処理は、3次元加速度センサ31を取り外す必要がない場合には省略されてよい。
一方、端末装置P1は、ステップSt118の処理において、すべての関節軸の姿勢変化に対応する重力加速度の測定が完了していないと判定した場合(St118,NO)、作業者による重力加速度の測定対象として、重力加速度が未測定であるいずれか関節軸Aの選択(指定)操作を受け付ける(St112)。なお、端末装置P1は、作業者による選択操作なしに、重力加速度が未計測であって、かつ、いずれか1つの関節軸を自動で選択してもよい。
次に、図7を参照して、図4に示すステップSt12の処理(回転軸ベクトルの算出処理)について説明する。図7は、実施の形態における端末装置P1の回転軸ベクトルの算出手順例を説明するフローチャートである。なお、図7の説明では、説明を分かりやすくするために、一例として「関節軸A」で示される関節軸の姿勢(回転角度)を変化させた時の重力加速度の測定を行う例について説明する。
端末装置P1は、回転軸ベクトルを算出する関節軸Aを決定する(St211)。なお、関節軸Aの決定処理は、作業者により行われてもよい。このような場合、端末装置P1は、作業者により選択された関節軸Aを、回転軸ベクトルの算出対象である関節軸に決定する。
端末装置P1は、第1のメモリ12を参照し、関節軸Aに対応する姿勢データを取得する(St212)。端末装置P1は、各姿勢(回転角度)で測定されたm個の重力加速度の測定値のそれぞれの差分値を算出し(St213)、算出された各差分値が閾値ThA以上であるか否かを判定する(St214)。なお、閾値ThAは、3次元加速度センサの測定ノイズ(測定誤差)であることを示す値であり、作業者により任意の値が設定されてよい。
端末装置P1は、ステップSt214の処理において、算出された差分値が閾値ThA以上であると判定した場合(St214,YES)、m個の重力加速度の測定値のそれぞれに3次元加速度センサの測定ノイズでない優位な差があると判定する。端末装置P1は、m個の重力加速度の測定値のそれぞれ(xi,yi,zi),…,(xm,ym,zm)に基づいて、m個の重力加速度の測定値のそれぞれのプロットにより得られる平面(例えば、図8に示す平面PTW)を推定する(St215)。なお、平面の推定は、SVD(特異値分解、Singular Value Decomposition)を用いて行ってもよいし、他の平面の推定方法が用いられてもよい。
一方、端末装置P1は、ステップSt214の処理において、算出された差分値が閾値ThA以上でないと判定した場合(St214,NO)、重力加速度の測定値が示す重力ベクトルを関節軸Aの回転軸ベクトルに決定する(St216)。なお、ステップSt216の処理については、後述する図10の説明で具体例を用いて説明する。
端末装置P1は、推定された平面にm個の重力加速度の測定値のそれぞれを投影する。端末装置P1は、平面に投影されたm個の重力加速度の測定値のそれぞれに基づいて、m個の重力加速度の測定値のそれぞれが描き、関節軸Aの回転軌跡に対応する円(例えば、8に示す円CTW)を推定する(St217)。端末装置P1は、推定された円の半径が閾値ThB以下であるか否かを判定する(St218)。
端末装置P1は、ステップSt218の処理において、推定された円の半径が閾値ThB以下であると判定した場合(St218,YES)、推定された円の中心座標(例えば、図8に示す中心座標CO)を関節軸Aの回転軸ベクトルに決定する(St219)。なお、ステップSt219の処理については、後述する図11の説明で具体例を用いて説明する。
一方、端末装置P1は、ステップSt218の処理において、推定された円の半径が閾値ThB以下でないと判定した場合(St218,NO)、推定された平面に対する法線ベクトルを関節軸Aの回転軸ベクトルに決定する(St220)。なお、ステップSt220の処理については、後述する図12の説明で具体例を用いて説明する。
端末装置P1は、関節軸Aを正回転させる回転方向に基づいて、設定された回転軸ベクトルの符号(つまり、向き)を決定する(St221)。
例えば、端末装置P1は、ステップSt216、ステップSt219およびステップSt220のそれぞれにおいて、関節軸Aを駆動させるモータの正回転方向に沿う向きを回転軸ベクトルの向きに決定する。
また、例えば、端末装置P1は、決定された回転軸ベクトルの向きと、重力加速度の測定値に基づいて算出される回転軸ベクトルの向きとの角度差を算出する。端末装置P1は、算出された角度差が鋭角である場合、重力加速度の測定値に基づいて算出される回転軸ベクトルの向きに決定し、算出された角度差が鈍角である場合、重力加速度の測定値に基づいて算出される回転軸ベクトルの向きを反転させた向きに決定してもよい。
端末装置P1は、ステップSt11の処理で測定されたすべての関節軸のそれぞれの回転軸ベクトルの算出が完了したか否かを判定する(St222)。
端末装置P1は、ステップSt222の処理において、すべての関節軸のそれぞれの回転軸ベクトルの算出が完了したと判定した場合(St222,YES)、回転軸ベクトルの算出処理を終了する。
一方、端末装置P1は、ステップSt222の処理において、すべての関節軸のそれぞれの回転軸ベクトルの算出が完了していないと判定した場合(St222,NO)、ステップSt211の処理に戻り、回転軸ベクトルが未算出であるいずれかの関節軸を選択する(St211)。
図8および図9のそれぞれを参照して、図7に示すステップSt215の処理(平面の推定処理)、およびステップSt217の処理(円の推定処理)のそれぞれについて説明する。図8は、平面PTWおよび円CTWの一例について説明する図である。図9は、円CTWの推定処理手順例について説明する図である。
なお、図8では、一例として、TW関節軸J6の姿勢(回転角度)を変化させた時に得られるm個の重力加速度の測定値のそれぞれに基づいて推定された平面PTWおよび円CTWのそれぞれを示す。また、図9では、平面PTWおよび円CTWのそれぞれの推定処理手順の説明を分かりやすくするために、図8に示すセンサ座標系と平面PTWおよび円CTWとの位置関係と異なる例を示す。
図8および図9のそれぞれに示すX軸,Y軸,Z軸のそれぞれは、3次元加速度センサ31に設定されたセンサ座標系を示す。
平面PTWは、ステップSt215の処理により推定される平面である。端末装置P1は、m個の重力加速度の測定値のそれぞれ(xi,yi,zi),…,(xm,ym,zm)を用いて、平面を示す(数式1)の係数a,b,c,dのそれぞれを算出することで、平面PTWの推定処理を実行する。
円CTWは、ステップSt217の処理により推定される円である。以降、図9を参照して、円CTWの推定処理について、具体的に説明する。
端末装置P1は、センサ座標系において、(数式1)を用いて推定された平面PTWの単位法線ベクトルを算出し、算出された平面PTWの単位法線ベクトルをZ軸方向の単位ベクトルに一致させる回転行列RTWを算出する(St217-1)。なお、回転行列RTWの算出方法には、公知である任意の方法が用いられてよく、例えば、ロドリゲスの回転公式等が用いられてよい。
端末装置P1は、(数式2)に示すように、算出された回転行列RTWに基づいて、m個の重力加速度の測定値のそれぞれ(xi,yi,zi),…,(xm,ym,zm)を回転移動させることにより、平面PTWを回転させる(St217-2)。なお、平面PTW´は、回転行列RTWを用いて回転移動された後の平面PTWである。変換値(xi´,yi´,zi´),…,(xm´,ym´,zm´)は、回転行列RTWを用いて回転移動された後のm個の重力加速度の測定値のそれぞれである。
端末装置P1は、m個の変換値(xi´,yi´,zi´),…,(xm´,ym´,zm´)のうちXY平面上の座標(xi´,yi´),…,(xm´,ym´)のそれぞれに基づいて、円CTW´の推定を実行する(St217-3)。端末装置P1は、推定された円CTW´の中心座標CO´(cx´,cy´)と、円CTW´の半径rとをそれぞれ算出する(St217-3)。なお、円CTW´の推定は、例えば、最小二乗法等の任意の公知の方法を用いて実行される。
端末装置P1は、円CTW´の中心座標CO´(cx´,cy´)におけるZ座標として、センサ座標系の原点と、平面PTW´との間の距離Dを算出する(St217-4)。
端末装置P1は、回転行列RTWの逆行列RTW
-1を算出する。端末装置P1は、(数式3)に示すように、算出された逆行列RTW
-1を用いて、センサ座標系における円CTWの中心座標CO(cx,cy,cz)を算出する(St217-5)。
以上により、端末装置P1は、円CTWの中心座標CO(cx,cy,cz)を推定できる。
図10を参照して、図7に示すステップSt216の処理(回転軸ベクトルの決定処理)について説明する。図10は、回転軸ベクトルの設定例1について説明する図である。なお、図10では、一例として、重力加速度の測定対象がRT関節軸J1である場合の回転軸ベクトルVRTの決定処理例について説明する。
回転軸ベクトルの設定例1は、ロボットM1が水平面に設置された時のRT関節軸J1のように、関節軸の回転軸と、3次元加速度センサ31により測定された重力方向が示す重力ベクトルGRTとが一致するような場合の回転軸ベクトルの決定処理例である。
このような場合、m個の重力加速度の測定値の各差分値は、閾値ThA以上でなくなる。よって、端末装置P1は、ステップSt214の処理において、算出された差分値が閾値ThA以上でないと判定して、ステップSt216の処理に移行し、重力ベクトルGRTをRT関節軸J1の回転軸ベクトルVRTに決定する。
図11を参照して、図7に示すステップSt219の処理(回転軸ベクトルの決定処理)について説明する。図11は、回転軸ベクトルの設定例2について説明する図である。なお、図11では、一例として、重力加速度の測定対象がTW関節軸J6である場合の回転軸ベクトルVTWの決定処理例について説明する。
回転軸ベクトルの設定例2は、図2に示すTW関節軸J6等のように、関節軸の回転軸と、3次元加速度センサ31により測定される重力方向との間の角度(例えば、角度差θTW)が小さい場合の回転軸ベクトルの決定処理例である。
このような場合、m個の重力加速度の測定値のそれぞれ(xi,yi),…,(xm,ym)により推定された円CTWは、センサ座標系の原点から遠い位置(つまり、図9に示す距離Dが大きい)に、閾値ThB以下である半径rを有する。
また、このような場合、図11に示すように、測定誤差ER11が存在する時、推定された円CTWの中心座標COTWに基づく回転軸ベクトルVTWをTW関節軸J6の回転軸ベクトルとして決定した時の理想的な回転軸ベクトルV´TWとの測定誤差ER12と、推定された平面PTWの法線ベクトルをTW関節軸J6の回転軸ベクトルとして決定した時の理想的な回転軸ベクトルV´TWとの測定誤差ER13とを比較した時、測定誤差ER12の方が小さくなる。なお、図11に示す中心座標CO´TWは、理想的な測定値に基づいて推定された円の中心座標である。平面P´TWは、理想的な測定結果に基づいて推定される平面である。また、ここでいう「理想的」とは、3次元加速度センサ31の測定誤差がない理想的な測定結果を示す。
よって、端末装置P1は、ステップSt215の処理により推定される平面の法線ベクトルでなく、ステップSt217の処理により推定された円CTWの中心座標COTWと、センサ座標系の原点Oとを通る回転軸ベクトルVTWをTW関節軸J6の回転軸ベクトルに決定する。
これにより、端末装置P1は、3次元加速度センサ31の測定誤差の大きさに対応して設定される閾値ThBの値と、円の半径との大小関係に基づいて、3次元加速度センサ31により得られる関節軸の姿勢の測定誤差がより小さくなる、つまり、関節軸の姿勢の測定精度がより高くなる回転軸ベクトルを決定できる。
図12を参照して、図7に示すステップSt220(回転軸ベクトルの決定処理)について説明する。図12は、回転軸ベクトルの設定例3について説明する図である。なお、図12では、一例として、重力加速度の測定対象がUA回転軸である場合の回転軸ベクトルVUAの決定処理例について説明する。
回転軸ベクトルの設定例3は、図2に示すUA関節軸J2,FA関節軸J3等のように関節軸の回転軸と、3次元加速度センサ31により測定される重力方向とが直角あるいは直角に近い角度である場合の回転軸ベクトルの決定処理例である。
このような場合、m個の重力加速度の測定値のそれぞれ(xi,yi),…,(xm,ym)により推定された円CUAは、センサ座標系の原点Oの近傍で、閾値ThB以上である半径rを有する。なお、推定された円CUAの半径は、UA関節軸J2の回転軸と、3次元加速度センサ31により測定される重力方向を示す重力ベクトルGUAとがなす角度が直角である場合に最大となる。
また、このような場合、図12に示すように、3次元加速度センサ31の測定値が測定誤差ER23を含む場合、推定された平面PUAの法線ベクトルをUA関節軸J2の回転軸ベクトルVUAとして決定した場合の測定誤差ER22の方が、推定された円CUAの中心座標COUAに基づく回転軸ベクトルとして決定した場合の測定誤差ER21よりも、理想的な回転軸ベクトルV´UAとの測定誤差が小さくなる。なお、図12に示す中心座標CO´UAは、理想的な測定値に基づいて推定された円の中心座標である。平面P´UAは、理想的な測定結果に基づいて推定される平面である。
よって、端末装置P1は、ステップSt217の処理により推定された円CTWの中心座標と、センサ座標系の原点O(不図示)とを通る回転軸ベクトルでなく、ステップSt215の処理により推定される平面(不図示)の法線ベクトルをUA関節軸J2の回転軸ベクトルVUAに決定する。
次に、図13を参照して、回転軸ベクトルの活用方法について説明する。図13は、ロボットM1の設置面H1の傾き検出例を説明する図である。
端末装置P1は、決定された回転軸ベクトルVRTと、3次元加速度センサ31による重力加速度の測定値に基づく重力ベクトルGRTとがなす角度(=角度差θRT)に基づいて、ロボットM1が設置されている設置面H1の傾き(=角度差θRT)を算出できる。端末装置P1は、算出された角度差θRTに基づいて、各関節軸の補正パラメータを算出する。これにより、作業者は、ロボットM1の設置面H1に対する傾き補正を実行できる。
また、端末装置P1は、算出された設置面H1の傾き(=角度差θRT)に基づいて、各関節軸のモータ制御における重力補償パラメータを算出し、ロボット制御装置R1に送信してもよい。
次に、図14を参照して、回転軸ベクトルの活用方法について説明する。図14は、関節軸の軸ずれ検出例を説明する図である。なお、ここでは、UA関節軸J2に軸ずれが発生していない場合のFA関節軸J3の軸ずれ検出について説明する。
図14に示すロボットM1は、FA軸を中心に回転する部品M11が、組み立て時に入り込んだ異物により、正常な取付姿勢PT0と異なる取付姿勢PT1で組み立てられている。
端末装置P1は、軸ずれが生じていない状態において平行関係となるFA関節軸J3の回転軸ベクトルVFAと、UA関節軸J2の回転軸ベクトルVUAとの角度差θFAを算出する。端末装置P1は、算出された角度差θFAに基づいて、FA関節軸J3あるいはUA関節軸J2で軸ずれが発生しているか否かを判定したり、角度差θFAの符号(方向)に基づいて、軸ずれ方向を判定したりする。なお、端末装置P1は、算出された角度差θFAと、所定の閾値とを比較し、FA関節軸J3あるいはUA関節軸J2で軸ずれが発生しているか否かを判定してもよい。
これにより、端末装置P1は、算出された角度差θFAに基づいて、部品M11そのものの異常(例えば、部品M11の劣化,欠陥等),部品M11の組み立て異常等を検出できる。
なお、端末装置P1は、部品M11そのものの異常(例えば、部品M11の劣化,欠陥等),部品M11の組み立て異常等でなく、単にFA関節軸の軸ずれが発生している場合、算出された角度差θFAに基づいて、FA関節軸の姿勢の傾きを補正するための補正パラメータを算出できる。
次に、図15および図16のそれぞれを参照して、回転軸ベクトルの活用方法について説明する。図15は、手首軸(RW関節軸J4,BW関節軸J5,TW関節軸J6)の原点調整例を説明する図である。図16は、角度差ΦRW,ΦTWの一例を説明する図である。なお、ここでいう手首軸は、アーム先端部33付近の3つの関節軸であるRW関節軸J4,BW関節軸J5,TW関節軸J6のそれぞれを示す。
なお、図15に示す原点調整例では、ロボットM1の測定基本姿勢は、TW軸とRW軸との間の角度差が10°に設定されている例について具体的に説明する。
端末装置P1は、RW関節軸J4、TW関節軸J6、BW関節軸J5の順番で、RW関節軸J4,TW関節軸J6,BW関節軸J5のそれぞれの姿勢(回転角度)を変化させた時に得られる重力加速度を測定する。
端末装置P1は、測定されたRW関節軸J4,TW関節軸J6,BW関節軸J5のそれぞれの重力加速度の測定値に基づいて、各関節軸に対応する平面PRW,PTW,PBWのそれぞれ、および円CRW(不図示),CTW(不図示),CBWのそれぞれを推定する。端末装置P1は、推定された平面PRW,PTW,PBWのそれぞれ、および円CRW(不図示),CTW(不図示),CBWのそれぞれに基づいて、各関節軸に対応する回転軸ベクトルVRW,VTW,VBWのそれぞれを決定する。
端末装置P1は、BW関節軸J5の回転軸ベクトルVBWを回転した時のRW関節軸J4の回転軸ベクトルVRWと、TW関節軸J6の回転軸ベクトルVTWとの間の角度差θBWと、回転軸ベクトルVBWの傾き(姿勢)方向との角度差ΦRW,ΦTWのそれぞれを算出する。なお、ここで算出される角度差θBWは、BW関節軸J5の動作角度に対応して変化する値である。つまり、端末装置P1は、角度差θBWが測定基本姿勢と一致するように補正パラメータを算出することで、ロボットM1の原点調整を実行可能にする。
例えば、図15に示す例では、端末装置P1は、算出された角度差θBW=10.5°と、ロボットM1の測定基本姿勢として設定されている角度差=10°との角度差=0.5°に基づいて、BW関節軸J5の原点調整を実行するための補正パラメータを算出する。端末装置P1は、算出された補正パラメータを表示部14に表示するとともに、ロボット制御装置R1に送信する。これにより、作業者は、BW関節軸J5のより高精度な原点調整を実行できる。
また、角度差ΦRW,ΦTWのそれぞれは、ロボットM1の動作角度に依存しない角度である。したがって、端末装置P1は、算出された角度差ΦRW,ΦTWのそれぞれに基づいて、手首軸(RW関節軸J4,BW関節軸J5,TW関節軸J6)の組み立て異常等を検出できる。
以上により、実施の形態に係るロボットシステム100は、複数の関節軸(動作軸の一例であって、例えば、RT関節軸J1,UA関節軸J2,FA関節軸J3,RW関節軸J4,BW関節軸J5,TW関節軸J6)を有するロボットM1と、複数の関節軸のそれぞれを動作させて、関節軸の姿勢を調整するロボット制御装置R1と、ロボットM1のアーム先端部33(先端部の一例)に備えられ、アーム先端部33における重力加速度を測定する3次元加速度センサ31(加速度センサの一例)と、3次元加速度センサ31とロボット制御装置R1との間で通信可能な端末装置P1と、を備える。ロボット制御装置R1は、複数の関節軸のそれぞれのうちいずれか第1関節軸の姿勢を、少なくとも異なる3つ以上の姿勢に動作させる。端末装置P1は、3つ以上の姿勢のそれぞれにおいて3次元加速度センサ31により検出された3つ以上の第1重力加速度データを記憶し、記憶された3つ以上の第1重力加速度データに基づいて、3次元空間における第1関節軸の第1回転軸ベクトルを算出し、算出された第1回転軸ベクトルに基づいて、ロボットM1の姿勢ずれを補正するための補正パラメータを算出する。
これにより、実施の形態に係るロボットシステム100は、各関節軸の姿勢ずれを補正可能な補正パラメータをより高精度に算出できる。よって、作業者は、算出された補正パラメータに基づいて、ロボットM1の姿勢ずれをより容易に補正できる。
また、実施の形態に係るロボットシステム100における端末装置P1は、第1回転軸ベクトルと、3次元加速度センサ31により測定された重力方向に沿う重力ベクトルとを算出し、第1回転軸ベクトルと、重力ベクトルとの間の角度差に基づく補正パラメータを算出する。これにより、実施の形態に係るロボットシステム100は、ロボットM1の設置面H1に対するより高精度な傾き補正を実行可能な補正パラメータを算出できる。
また、実施の形態に係るロボットシステム100におけるロボット制御装置R1は、複数の関節軸のそれぞれのうちいずれか第1関節軸と異なる第2関節軸の姿勢を、少なくとも異なる3つ以上の姿勢に動作させる。端末装置P1は、第2関節軸の3つ以上の姿勢のそれぞれにおいて3次元加速度センサ31により検出された3つ以上の第2重力加速度データを記憶し、記憶された3つ以上の第2重力加速度データに基づいて、3次元空間における第2関節軸の第2回転軸ベクトルを算出し、算出された第1回転軸ベクトルと第2回転軸ベクトルとの間の角度差に基づく補正パラメータを算出する。これにより、実施の形態に係るロボットシステム100は、算出された角度差(例えば、図14に示す角度差θFA)に基づいて、ロボットM1の関節軸のより高精度な軸ずれ調整(補正)を実行するための補正パラメータを算出できる。
また、実施の形態に係るロボットシステム100におけるロボット制御装置R1は、複数の関節軸のそれぞれのうちいずれか第1関節軸および第2関節軸と異なる第3関節軸の姿勢を、少なくとも異なる3つ以上の姿勢に動作さる。端末装置P1は、第3関節軸の3つ以上の姿勢のそれぞれにおいて3次元加速度センサ31により検出された3つ以上の第3重力加速度データを記憶し、記憶された3つ以上の第3重力加速度データに基づいて、3次元空間における第3関節軸の第3回転軸ベクトルを算出し、算出された第1回転軸ベクトルと第2回転軸ベクトルと第3回転軸ベクトルとの間の角度差に基づく補正パラメータを算出する。これにより、実施の形態に係るロボットシステム100は、関節軸のより高精度な原点調整を実行するための補正パラメータを算出できる。
以上、図面を参照しながら各種の実施の形態について説明したが、本開示はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例、修正例、置換例、付加例、削除例、均等例に想到し得ることは明らかであり、それらについても当然に本開示の技術的範囲に属するものと了解される。また、発明の趣旨を逸脱しない範囲において、上述した各種の実施の形態における各構成要素を任意に組み合わせてもよい。