以下、添付図面に示す実施例を参照して本発明を実施するための形態につき説明する。なお、以下に示す実施例はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、本実施形態で取り上げる数値は、参考数値であって、本発明を限定するものではない。
<実施形態1>
本実施形態では、複数の把持部が把持対象物を把持する把持力に応じて、複数の前記把持部の相対変位量を制御し、前記把持対象物の把持位置を制御する把持装置の構成、および制御方法を示す。以下の実施形態では、把持装置および把持部は、ロボットハンド(以下ハンドという)およびその指に相当する。
ハンドの複数の指による把持力は、それらの相対変位を制御する駆動源の駆動力(例えば駆動電力、電流あるいはサーボ制御情報など)によって制御装置(例えば後述のCPU501)が計算によって求める構成でもよい。しかしながら、本実施形態では、ハンドの指に配置した力センサで実測する。これによって、より把持状況に即した制御が可能になる。力センサにはロードセル、歪ゲージや光学的に検出部の変形量を測定する方式の力検出デバイスを利用してよい。また、本実施形態では、上述の従来構成(特許文献2)のように全てのハンドの指に力センサを配置する必要はなく、対象物の把持に用いられる指の少なくとも1つに配置されていればよい。
本実施形態の把持装置の把持制御においては、把持力と、複数の把持部の相対姿勢に対応し、把持力に応じて対象物の把持位置を補正するための補正係数と、に基づき、把持対象物の把持位置を補正する補正量を計算する(補正量計算工程)。そして、計算した補正量に基づいて、把持部を相対変位させる駆動源を制御する(駆動制御工程)。上記の補正係数は、制御装置(例えば後述のCPU501)が把持パターン、特に各指の相対姿勢に対応して動的に演算により取得することも考えられる。しかし、本実施形態では、予め各指の相対姿勢に対応した値を予め記憶装置(ROM502やRAM503など)に格納しておく。
上記のように、ハンドの各指の相対変位に関しては、把持対象物のワークの形状や寸法などの把持条件に応じて、ハンドの各指が相対変位する時の相対姿勢が異なるハンドを用意することが考えられる。あるいはそのような姿勢の調整を可能にするロボットハンドの構成も考えられる他、動的に相対変位する姿勢を変更可能なロボットハンドの構成も考えられる。いずれの場合でも、把持対象物の把持位置を補正するための補正係数を、実施する可能性のある把持パターン、特に各指の相対姿勢ごとに関連づけて予め記憶装置(ROM502やRAM503など)に格納しておくことにより、把持位置の補正が可能となる。
以下では、把持パターン、特に各指の相対姿勢を変更する姿勢制御部、特に後述の関節J4、J5のような旋回機構をハンドに配置する構成を例示する。そして、制御装置(例えば後述のCPU501)は、姿勢制御装置、特に旋回機構によって各指の相対姿勢を変更している場合には、その相対姿勢に対応する補正係数を選択して把持対象物の把持位置を補正する制御を行う。
以下、添付図面を参照して、本実施形態1における構成および把持制御につき説明する。図1は、本発明のハンド制御装置を用いた本実施形態のロボットシステムの概略構成を示している。
[ロボットシステム]
本実施形態のロボットシステム100は、アーム本体200、ハンド300、アーム制御装置400、ハンド制御装置500を備える。組立用部品であるワークW1は、ワーク載置台S1上に載置され、被組立対象物であるワークW2は、ワーク固定台S2上に固定されている。
ロボットシステム100によってワークW1、ワークW2を操作し、組み立てることにより、工業製品、ないしはその部品を製造することができる。例えば、このワークW1、W2に対する組み立て操作は、アーム本体200とハンド300を用いて把持対象物としてのワークW1を把持し、移動させ、さらにワークW1をワークW2の組付部に嵌合させる、といった操作によって行われる。
アーム本体200は、本実施形態では多関節のロボットアームであり、アーム本体200の根元は基台600に固定され、アーム本体200の先端には、エンドエフェクタとして把持装置であるハンド300が装着される。このハンド300を介してワークW1に対して動作を行う。また、アーム本体200の各関節には、これらの関節を各々駆動する駆動源としてモータ(不図示)、およびモータの回転角度を検知する検知器としてエンコーダ(不図示)がそれぞれ設けられる。
アーム制御装置400は、組立で用いるハンド300の移動先であるアーム先端の目標位置姿勢に対して、アーム本体200の各関節の取るべき角度を計算し、各関節のモータ(不図示)を制御するサーボ回路(不図示)に対して指令値を出力する。アーム制御装置400は、ハンド制御装置500と接続され、ハンド300に対して把持指令を出力する。この把持指令は例えば番号、即ち数値表現のデータで出力することができる。アーム制御装置400の詳細は不図示であるが、後述のハンド制御装置500の500〜505で示す構成と同様、CPU、ROM、RAM、汎用信号インターフェイス、モータドライバなどから構成することができる。このうち、汎用信号インターフェイスはアーム本体200の各部のセンサなどと通信するために、また、モータドライバは、アーム本体200の各関節を駆動するモータの制御に用いられる。
図2は、本実施形態1におけるハンド300の概略構成を示している。ハンド300は、把持部として、3本の指(フィンガ)指3401〜3403(第1指〜第3指)を有する。
これらの指3401〜3403は、リンク351、352、353と、回転駆動される関節J1〜J5によって互いに相対変位するよう制御され、これにより把持の対象物(後述の各ワーク)を把持、または把持開放するように動作する。この構成では、関節J1〜J5は5つあり、従って、このハンド300の指(3401〜3403)は全体で5自由度のこれら関節J1〜J5によって駆動される。
ハンド300の各指(3401〜3403)駆動伝達系の一部を構成するリンク351〜353は、例えば図示のような、いわゆる平行四節リンク機構である。この構成により、各指(3401〜3403)は互いに例えば平行姿勢を保持したまま開閉することができる。
各指(3401〜3403)の相対変位を制御するためのリンク351、352、353は、それぞれ関節J1、J2、J3によって駆動される。
また、本実施形態では、3本の指のうち、2本の指3402、3403(第2指と第3指)はそれぞれ1自由度の関節J4、J5によって旋回駆動できるよう構成されている。これにより、指3401(第1指)に対する、指3402、3403(第2指と第3指)の旋回姿勢を制御することができる。これにより、例えば後述の図5に示すように多様なワークの形状に応じて、指3401〜3403の把持形態を変更することができる。
上記の指3401〜3403の駆動機構は、アーム本体200の先端に装着されるハンド300の基部36上に支持される。図2に示したxyz座標系は、基部36の中心軸361が通る、例えば基部36の上面上の1点などを原点としたハンド座標系である。
図2において、指3402、3403の関節J4、J5を結ぶよう、直線で簡略図示した支持部363は、例えばハンド座標系(xyz)のy軸と平行に基部36の中心軸361上に支持される。また、指3401の関節J1は、便宜上、L字型で図示した支持部362を介して、基部36上で関節J4、J5と同じ高さに支持される。
関節J4、J5は互いに独立に動作させても良いが、本実施形態では関節J4、J5は互いに逆回転で同一の駆動量ずつ駆動される。これにより、本実施形態では、常時、指3401(第1指)に対して、指3402、3403(第2指と第3指)が対称的な旋回姿勢を取るよう制御される。本実施形態では、関節J4、J5による指3402、3403の旋回角度は、便宜上、上記y軸と平行な関節J4、J5の支持部363に対する角度を用いて表現する。
例えば、図2の図示は、関節J4、J5が支持部363(ないしは上記y軸)に対してそれぞれ90°をなす時の3指対向配置を示している。また、関節J4、J5を図2の状態から、同図の矢印の方向にそれぞれ90°だけ回転させた状態の角度は、以下では0°と表現する。また、関節J4、J5を図2の状態から、同図の矢印の方向にそれぞれ60°だけ回転させた状態の角度は、以下では30°と表現する。本実施形態では、例えば後述の図5などに関しては、関節J4、J5の回転角度について、上記のような数値表現を行うことがある。
また、図2において、ハンド300の関節J1〜J5には、各関節を各々駆動する駆動手段としてモータ311〜315が設けられる。指のリンクは、モータ311〜315に直結した各々減速機321〜325を介して駆動される。減速機321〜325、力センサ341、342、各指のリンクは、把持方向に対してバネ性(弾性)を有しており、後述の撓み補正にて指先位置が補正される。また、モータ311〜315にはモータの各々の回転角度を検知するエンコーダ331〜335が設けられる。
制御装置、例えば後述のCPU501は、エンコーダ331〜335の出力値を用いて、上記の各関節J1〜J5の回転角度を計算することができる。その場合、制御装置、例えば後述のCPU501は、減速機321〜325の減速比を用いてエンコーダ331〜335の出力値を各関節J1〜J5の回転角度に変換することができる。
本実施形態では、指3401と3402(第1指、第2指)の先端にそれぞれ力センサ341、342を設けてあり、これらの指に加わる把持力を検出することができる。ただし、本実施形態では、力センサは少なくとも把持対象物の把持に用いられる1本の指に配置されていればよい。本実施形態で指3401と3402に力センサ341、342を設けているのは、後述の対象物を把持する時の各指の相対姿勢の異なる複数の把持パターンによって、複数指の1部、少なくとも1本の指の力センサで把持力を検出できるようにするためである。ただし、ワークの形態、ハンド300の実行可能な把持態様(後述の把持パターン)の仕様に応じて、括弧書きで図2中に示したように指3403にも力センサ343を配置するような構成であってもよい。これにより、ワークの形態などに応じて、ハンド300の実行可能な把持態様(後述の把持パターン)を拡張できる可能性がある。
ハンド制御装置500は、図1に示すように、マイクロプロセッサなどから成るCPU501と、このCPU501にバス接続されたROM502、RAM503、汎用信号インターフェイス504、モータドライバ505などから構成される。ROM502には、ハンド300を制御するプログラム(後述の撓み補正を行なうためのプログラムを含む)が格納される。
後述の把持指令テーブル511、および、ハンド300の各指の相対姿勢を変更した場合の、特定の相対姿勢ごとに補正係数を格納した補正係数テーブル512は、例えばRAM503の記憶領域に配置することができる。あるいは装置の実装仕様などによって、これらのテーブルメモリがROM化可能である場合には、これらのテーブル(511、512)はROM502の記憶領域に配置してもよい。
さらに、RAM503はCPU501による演算実行時の一時記憶用のメモリや必要に応じて設定されるレジスタ領域としても使用される。汎用信号インターフェイス504は、アーム制御装置400などに対する入出力装置として機能する。モータドライバ505は、CPU501で計算されたモータ電流指令値に基づいて、ハンド300の各指の開閉(相対変位)、旋回を制御する5軸のモータ311、312、313、314、315へそれぞれ電流制御した上で電流を供給する。
なお、本実施形態では、アーム制御装置400と、ハンド制御装置500を別体の制御装置として示しているが、これらの制御装置はロボット装置の実装によっては一体をなしていてもよい。即ち、アーム本体200およびハンド300を制御する共通の制御装置が1つ配置され、本実施形態においてアーム制御装置400およびハンド制御装置500がそれぞれ実行する制御として説明する制御をこの共通の制御装置で実行する構成であってもよい。この構成は、ハンドの制御装置がロボットアームの制御も行い、また逆にロボットアームの制御装置がハンドの制御も行う構成、と考えることができる。
図6は、本実施形態に係る把持指令テーブルの構成の一例を示している。同図の把持指令テーブル511は、主にハンド全体設定6001、と、各関節の制御パラメータ6002の各フィールドから成り、把持指令の番号毎に把持パターン、モード、および制御パラメータを格納したレコードが配列される(6003)。ハンド全体設定6001の部分には、把持指令の番号毎に把持パターン、把持モードが格納される。制御パラメータ6002の部分には、ハンド300の各関節J1、J2、J3、J4、J5の位置指令値、力指令値の項目を格納する。
なお、後述の数式などにおいてサフィックス表記となっている部分については、本明細書の数式を除く文中や、各図中においては、判読性を考慮し、錯誤の可能性の少ないものについては、必ずしもサフィックス表記を用いないものとする。
図6において、把持パターンは、ハンド300の関節J1〜J5を位置制御(P)するか、力制御(F)するかを示す記述したデータである。本実施形態では、位置制御する関節をP、力制御する関節をFとし、記号(P、F)の順番を各モータ番号に対応させるものとする。そして、本実施形態では、把持パターンは以下の3種類が設定される。つまり、[PPPPP(すべての関節を位置制御)]、[FPPPP(関節J1のみ力制御、残りの関節J2、J3、J4、J5は位置制御)]、[PFPPP(関節J2のみ力制御、残りの関節J1、J3、J4、J5は位置制御))]の3種類である。特に、把持パターンが[FPPPP]の場合は3指での把持に、また、[PFPPP]の場合は2指での把持に適用される。
また、本実施形態では、把持モードのフィールドには外形把持と内形把持のいずれかを示すデータが設定される。外形把持とは、ハンド300の複数の指によってワークを外側から把持する把持モード、内形把持とはワークを内側から把持する把持モードである(図5参照)。
なお、上記の把持パターンや、把持モード(外形把持/内形把持)は、ハンド300の各指によって把持対象物たるワークを把持する把持力の方向情報と考えてもよい。
また、各関節J1、J2、J3、J4、J5の位置指令値、力指令値のフィールドには、把持パターンでPが設定された関節では駆動源のモータの位置指令値が、把持パターンでFが設定された関節ではモータは力指令値が設定される。各モータの位置指令値は、各指を開閉(相対変位)される関節J1、J2、J3の場合は、把持ストロークに対応した値が設定される(単位mm)。関節J4、J5の場合は把持するときの角度に対応した値が設定される(単位deg)。また、各関節の力指令値は、各指の先端に発生させる把持力に対応した値が設定される(単位N)。本実施形態では、関節J1、J2のみが力指令値を設定して力制御できるような仕様となっている。
図6において、位置制御される指、および力制御される指には、位置指令値および力指令値の補正前の初期値Xrefが格納される。ここで、図6において、指令番号(1)([PPPPP])は、全ての関節をワークのサイズや細部の形状に応じて位置制御する場合に相当し、位置指令値の初期値Xrefは全て0になっている。また、例えば指令番号(2)([FPPPP]:関節J1のみ力制御)は、関節J4、J5を30°(deg)設定とする(図5のワークW1aの3指等配把持に対応)把持制御である。この指令番号(2)([FPPPP]:関節J1のみ力制御)の把持制御では、関節J1の力指令値の初期値Xrefが10(N)、他の2指の関節の位置指令値の初期値Xrefが0(mm)になっている。
図6の把持指令テーブルには、ハンド300の制御仕様に応じて、選択可能な把持指令に対応する制御パラメータを把持指令の番号に関連づけて種々配置しておくことができる。
図7は、本実施形態に係る補正係数テーブルの構成の一例を示している。補正係数テーブル512は、把持パターン(7001)、把持モード(7002)、関節J4、J5の位置指令値(7003)各々の設定組合せに応じて補正係数a2、b2、a3、b3(7004)を格納する。
本実施例では、1指を力制御し、他の2指または1指を位置制御するものとし、図7の補正係数テーブル512は、後述の式(例えば式(2)〜(4))によって補正量(ΔX)を算出するための補正係数a2、b2、a3、b3を格納する。この補正係数aまたはbの1つめのサフィックスは第1指〜第3指の番号に対応する。
また、図7の補正係数テーブル512に設定される補正係数a2、b2、a3、b3の数値a21〜a24、b21〜b24、a31〜a36、b31〜b36(実際は数値)は、校正(実験)によって予め求めておく。これらの補正係数aまたはbの2つめのサフィックスは、便宜上、表の配置順に応じで漸増するよう定めたデータ番号に相当する。
補正係数a2、b2、a3、b3の数値a21〜a24、b21〜b24、a31〜a36、b31〜b36(実際は数値)を取得する校正方法としては、把持パターン、把持モード、関節J4、J5の位置指令値の各場合に応じて補正係数を分けておく。そして、各場合分けに応じて、組立で使用する範囲の把持力内で何点か基準ワークを用いて撓み量を実測しておき、最小二乗法などでそのとき生じた撓み量を打消すような補正量となるように補正係数a2、b2、a3、b3を求めることにより算出する。
図3は、ハンド制御装置500の制御機能(制御工程)の概略構成を擬似的なブロック図の形態で示したものである。ハンド制御装置500の制御機能(制御工程)は補正量計算部520(補正量計算工程)を含む。また、補正量計算部520(補正量計算工程)で取得した補正量に応じて把持部(各指)を相対変位させる駆動源を制御する駆動制御機能(駆動制御工程)として、指令値生成部530、モータ制御部541〜545、モータドライバ505を含む。
補正量計算部520は、ハンド300がワークW1を力制御で把持する場合、後述する撓み補正方法に従い、位置制御する指の補正量を計算する。指令値生成部530は、把持指令と把持指令テーブル511に基づいて、各モータ311〜315への制御モード(位置制御、あるいは、力制御)と各モータ311〜315への指令値を各モータ制御部541〜545に送信する。なお、各モータ311〜315への指令値は、各モータ311〜315への制御モードが位置制御の場合は位置指令値に、各モータ311〜315への制御モードが力制御の場合は力指令値になる。
なお、本実施形態では、便宜上、関節J1、J2のそれぞれのモータ311、312のみ位置制御と力制御のどちらかが選択でき、関節J3、J4、J5のそれぞれのモータ313〜315は位置制御のみ可能な仕様であるものとする。また、指令値生成部530は、ハンド300がワークW1を力制御で把持する場合、補正量計算部520で計算された補正量に基づき、位置指令値を補正した上で各モータ制御部541〜545に送信する。
各モータのモータ制御部541〜545は、指令値生成部530から渡された制御モードに応じてモータドライバ505へ各モータ311〜315の電流指令値を渡す。モータ制御部541〜545の機能は、同一でありここではこれら各モータ制御部の構成を示すため、関節J1のモータ制御部541の構成を図10に示す。
図10において、モータ311への制御モードが位置制御の場合は、位置指令値とエンコーダ331からの値に基づき、位置制御部546でフィードバック制御を行い、電流指令値を出力する。モータ311への制御モードが力制御の場合は、力指令値と力センサ341からの値に基づき、力制御部547でフィードバック制御を行い、電流指令値を出力する。制御モード切替部548は、アナログスイッチやマルチプレクサから構成され、モータ311への制御モードに基づいて、位置制御部546、あるいは、力制御部547の電流指令値を選択してモータドライバ505へ出力する。
図4は、本実施形態に係る補正計算部(補正量計算工程)の機能構成を示している。図4において、補正量計算部520は、補正係数選択部521と補正量演算部522から構成される。補正係数選択部521は、アーム制御装置400から送信された把持指令の番号と把持指令テーブル511(図6)に基づいて、把持指令の番号に対応する把持パターン、把持モード、関節J4、J5の位置指令値の初期値(Xref)を抽出する。
次に、抽出した把持パターン、把持モード、関節J4、J5の位置指令値と、補正係数テーブル512に基づいて、対応する補正係数を選択する。補正量演算部522は、補正係数選択部521で選択された補正係数と、把持指令テーブル511の力指令値と位置指令値に基づいて、位置制御する指の撓み補正量(ΔXref)を演算する。
ここで、図1のワークW1は、ワークW2と嵌合するための組付部(凹部)を有するものとする。また、ワークW2はワークW1と嵌合するための組付部(凸部)を有する。そして、図1のロボット装置は、ハンド300でワークW1を把持して、その状態でアーム本体200によりワークW1をW2と両者の組付部が整合する位置まで搬送し、両者を嵌合(組付)させる。
ここで、図5は、本実施形態に係るワーク種類の一例を示した説明図である。本実施形態では、ハンド300で把持するワークW1は、3種類の形状(5001:ワークW1a、ワークW1b、ワークW1c)があるものとする。図5では、ワーク種類(5001)ごとに、その把持形態(5002)、把持パターン(5003)、制御形態(5004)を示している。
なお、制御形態(5004)の簡略図示において、図中水平の1点鎖線が図2のy軸の方向に、垂直の1点鎖線が図2のX軸の方向に相当している。また、把持制御形態(5004)の図示では、各ワーク種類に応じて、力制御される指(3401または3402)と位置制御される指(3402と3403)を破線の有無で区別している。
ここで、ワークW1aは、円筒や球形の把持対象物で、円形断面を有する物体であり、ハンド300の把持形態(5002)は3指等配(関節J4、J5が共に30°)で、ハンド300の把持モードを外形把持として把持する。ワークW1aは3指把持なので、把持パターン(5003)は[FPPPP]が選択される。ワークW1bは、矩形物体でハンド300の把持形態を3指対向(関節J4、J5が共に90°)で、把持モードを外形把持で把持する。ワークW1bは3指把持なので、把持パターンは[FPPPP]が選択される。
また、ワークW1cは、矩形物体でハンド300の把持形態を2指対向(関節J4、J5が共に0°)で、把持モードを内形把持で把持する。ワークW1cは2指把持なので、把持パターンは[PFPPP]が選択される。
ここで、本実施形態において、例えばハンド制御装置500によって行うワークW1を把持する際の指位置の撓み補正によって、把持位置を補正する制御について説明する。本実施形態では、位置の補正は把持方向のみに行うものとする。
本実施形態における把持制御は、概略、図8のフローチャートのような制御によって構成される。図8の把持制御は、例えばハンド制御装置500のCPU501によって実行可能な制御プログラムとして記述することができる。その場合、この制御プログラムは、例えばROM502(あるいはHDDや各種フラッシュメモリのような外部記憶装置)に格納しておくことができる。
図8の把持制御において、ハンド制御装置500は、まず補正量計算部520で把持力である力指令値から撓み補正量を計算する(ステップS10)。位置補正する指(第i指)の補正量ΔXrefi(i=2,3)を下記の数式によって示すような補正演算によって計算する。
次に、指令値生成部530で補正量ΔXrefi(i=2,3)に基づき補正した位置指令値X’refiを例えば下記の式(1)のような演算によって算出され、各モータ制御部541〜545に渡される(ステップS20)。
ただし、上式(1)において、Xrefiは位置補正する指(i)の補正前の位置指令値である。この位置指令値Xrefiは図6中に図示した指令値(の初期値)に相当する。
続いて、各モータ制御部541〜545は、上記の指令値X’refiに基づき、ハンド300を動作させる(ステップS30)。
ここで、ステップS10について、図9を参照してより詳しく説明する。まず、補正係数選択部521が図7の補正係数テーブル512を参照して補正係数を選択する(ステップS11)。例えば、図7の補正係数テーブル512の場合、ワークW1aを把持する時は、補正係数a2、b2、a3、b3として、それぞれa21、b21、a31、b31(実際は数値)が選択される。
同様に、ワークW1bを把持する場合、補正係数a2、b2、a3、b3として、それぞれa22、b22、a32、b32(実際は数値)が選択され、ワークW1cを把持する場合、補正係数a3、b3として、a36、b36(実際は数値)が選択される。
次に、補正量演算部522で補正係数と把持力から補正量が演算される(ステップS12)。例えば、ワークW1aを把持する場合、補正量ΔXref2,ΔXref3は例えば下式(2)で演算する。
ここで、指3401(第1指)に生じさせる把持力は、Fref1とする。なお、位置指令の初期値やその補正量であるXref、ΔXrefは、各指を把持(閉方向)に移動させる時のその移動方向に沿った変位量であるものとする。そしてこれらの位置指令値によって各指を相対変位させる時の相対変位量が決定されることになる。
また、ワークW1bを把持する場合、補正量ΔXref2,ΔXref3は例えば下式(3)で演算する。
同様に、ワークW1cを把持する場合は、補正量Xref3は数式4で演算する。
この時、指3402(第2指)に生じさせる把持力がFref2である。
上記の把持制御において、ワークW1aとワークW1bは同じ3指把持であるが、関節J4、J5の角度が異なる。そのため、同じ把持力でワークW1aとワークW1bを持っても、指2、3に生じる撓みは異なる。このため、上記のように補正係数テーブル512から異なる補正係数(a2、b2、a3、b3)を読み出して用いる。これにより、各指(各把持部)の相対姿勢に応じて適切な把持位置補正を行うことができる。
本実施形態のハンド制御装置500によれば、上記のような撓み補正を含む把持制御を行うことができる。このため、図5のように関節J4、J5が異なる把持形態に対しても高精度な把持位置補正を行うことができ、ワークの位置決め精度を大きく向上させることができる。また、力検出のための力センサは、実際に把持に作用する指の少なくとも1本に配置されていればよく、例えば全指に力センサを配置する必要がなく、ハードウェア構成が簡単安価で済む。また、例えば全指の力制御状態に応じて位置制御量を決定するような複雑な制御過程を必要とせず、高速かつ応答性の良いハンド制御が可能である。
なお、外形把持と内形把持については、一般的に減速機321〜325にはバックラッシュがあるので、同じ把持力を所持させても指先の撓み量に違いが生じる可能性がある。しかしながら、本実施形態のハンド制御装置500によれば、外形把持と内形把持のような把持モードの違いに応じて異なる補正係数を補正係数テーブル512に格納するようにしている。このため、ハンド300の関節J1〜J5にバックラッシュがあっても、高精度な把持位置補正を行うことができ、ワークの位置決め精度を向上させることができる。ここで、例えば、把持力10Nにて把持する場合、指先先端換算の各指の駆動系の剛性係数を50N/mmとすると、指先の撓み量は10N/(50N/mm)=0.2mm程度のオーダで生じる。本実施形態の撓み補正を用いることで、ワーク位置決め精度は0.2mm程度向上させることができる。
以上説明したように、本実施形態によれば、把持力による指位置の撓みをハンド300で補正し、高精度な把持位置補正を行うことができ、ワークの位置決め精度を向上させることができる。本実施形態によれば、補正係数テーブル512を適宜作成しておくことにより、ハンドの機械的仕様に応じて高精度な把持位置補正を行うことができる。例えば、細かいワークに対応するため先端を細長くしてあるハンド、ワーク保護のためハンドの先端が大きな弾性を持つハンドの場合でも、構成に応じて適切かつ高精度な把持位置補正が可能である。このことは、トルクを付加すると軸が捩れやすい波動歯車を減速機に用いたハンドなどにおいても、構成に応じて適切かつ高精度な把持位置補正が可能であることを意味する。また、同様の作用効果は、指先の把持力を検知するためにセンサ自身がその力で撓む必要がある力センサが搭載されているハンドに対しても期待できる。
また、実際の製品ないし部品の製造ラインでは、組立工程のサイクルタイムを短縮するために組立時のハンドの把持力の指令初期値(各Xref)を変更するような事態も予想される。本実施形態によれば、このような変更が生じた場合でも、ワークの位置決め精度を劣化させずにワークを把持することができ、アームの位置調整なしに組立を行うことができる。
また、上記の実施形態で示したハンドをロボットアームに用いて、対象物であるワークを把持して、工業製品ないしはその部品を組み立てる製造ラインを構成することができる。その場合、本実施形態によれば、ワークの把持位置精度を大きく向上でき、高速かつ精度の高い製品ないし部品の組み立て作業を自動的に実行することができる。
<実施形態2>
上述の実施形態1では、ワーク(W1)の剛性(ないしは弾性)などの条件を考慮しておらず、ワーク(W1)が把持力によって変形せず、ワーク寸法についてばらつきがなく決まった寸法であることを前提としていた。しかしながら、本発明は、把持対象物たるワークが把持装置たるハンドの把持力によって変形し、ワーク寸法についてばらつきが生じる可能性がある場合において実施できるものである。
本実施形態2では、把持対象物たるワークの剛性係数を用いて、把持位置の補正を行う把持制御を例示する。本実施形態2は、例えばワークの剛性係数を既知であって、ワークの把持方向の寸法には公差の範囲でばらつきが含まれ、ワークを所定把持位置(例えばハンドの中心位置など)で位置決めしたい場合に、実施することができる。
図11は、図5と同様の様式によって、本実施形態2に係るワークの一例を示している。以下では、実施形態2として、図11に示すようなワークW1dの組立を行う場合の把持制御について説明する。以下では、ハードウェアや制御系の構成について、異なる部分について図示し、また説明するものとし、実施形態1と同様の部分については上述同様の構成ならびに作用が可能であるものとし、その詳細な説明は省略するものとする。
また、以下では、実施形態1と同一ないし同等の部材や制御機能については、同一ないし類似の参照符号表記を用いる。特にハンド300の関節や力センサなどの配置に係るハードウェア構成は、実施形態1の図2に示したものと同等であるものとする。
ワークW1dは、実施形態1の図1のワークW1と同様に、ワークW2が組付くための組付部(凹部)を有するものとする。ワークW1dは、例えば、矩形断面の物体(ワーク種類:5001)で、ハンド300の把持形態(5002)は2指対向(関節J4、J5が共に0°)、把持パターン(5003)は外形把持とする。把持制御形態(5004)に示すように、ワークW1dは2指把持であり、制御パターンは[PFPPP]が選択される。また、ワークW1dは、2指および3指で把持する方向の寸法にばらつきがあるものとする。また、ワークW1dは、剛体ではなくバネ性を有し、本実施形態では10N/mmの剛性係数を有するものとする。
本実施形態では、実施形態1と同様に、ロボットシステム100を用い、ロボットシステム100は、アーム本体200、ハンド300、アーム制御装置400、ハンド制御装置500を備えるものとする。同様に、組立用部品であるワークW1dは、ワーク載置台S1上に載置され、被組立対象物であるワークW2は、ワーク固定台S2上に固定されている。同様に、ワークW1dとワークW2の組立は、アーム本体200とハンド300を用いてワークW1dを移動させることにより、ワークW1dをワークW2の組付部に嵌合させることで行う。
実施形態1と差異がある部分は、ハンド制御装置500とワークW1dである。以下に、実施形態1と差異があるハンド制御装置500とワークW1dについて説明する。ハンド制御装置500は、実施形態1と同様に、図1に示すCPU501、ROM502、RAM503、汎用信号インターフェイス504、モータドライバ505などから構成される。実施形態1と差異がある部分は、ROM502とRAM503に格納される情報である。ROM502には、後述する第二の実施形態における撓み補正を実現するハンド300の制御プログラムが格納される。また、RAM503には、把持指令テーブル511’、補正係数テーブル512を格納する。
本実施形態では、把持指令テーブル511’は図12に示すように例えば構成する。図12は、実施形態1の図6(把持指令テーブル511)と同等の形式で、把持指令テーブル511’の内容を示している。ここでは把持指令テーブル511’の各関節の制御パラメータ6002のフィールド、特に最右端のフィールドとして、図6の把持指令テーブル511の内容に加え、ワーク情報としてワークW1dの剛性係数のフィールド追加した構成となっている。上記の通り、図12では、この剛性係数のフィールドには、把持指令番号(2)に相当する把持制御で把持されるワーク(W1d)の剛性係数(単位N/mm)として、上記の10(N/mm)が格納されている。特に、把持指令番号(2)の把持制御は、関節J1、J3〜J5をそれぞれ0mm,50mm,0deg,0degに位置制御し、J2を10Nにて外形把持するものとなっている。
ハンド制御装置500の制御要素は、実施形態1の図3のものと同様に、補正量計算部520、指令値生成部530、モータ制御部541〜545、モータドライバ505からなる。実施形態1と差異がある部分は、補正量計算部520である。本実施形態2の補正量計算部520は、ハンド300がワークW1dを力制御で把持する場合、後述の演算によって、位置制御する指の補正量を取得する。
補正量計算部520は、実施形態1の図4と同様に、補正係数選択部521と補正量演算部522から構成される。補正係数選択部521は、実施形態1と同様である。本実施形態において、実施形態1と差異がある部分は、補正量演算部522である。本実施形態の補正量演算部522は、補正係数選択部521で選択された補正係数と、把持指令テーブル511’の力指令値、位置指令値、および、ワークW1dの剛性係数と、力センサ341、342の力現在値に基づいて、位置制御する指の補正量を演算する。
ここで、本実施形態におけるハンド制御装置500の、ワークW1dを把持する際の把持位置制御について説明する。前提条件として、位置の補正は、把持方向のみに行うものとし、ワークW1dの位置決めは、ワークの把持方向の中心位置で行うものとする。
上述したハンド制御装置500により撓み補正を行う手順は、実施形態1の図8と同様である。ただし、図8のステップS10の演算は、実施形態1の場合と異なっており、以下では、図13を参照してこのステップS10の演算につき説明する。
図13において、まず、補正係数選択部521で補正係数テーブル512に基づいて補正係数が選択される(ステップS13)。例えば、ワークW1dを把持する場合、補正係数a3、b3として、それぞれa35、b35(実際は数値)が選択される。
ここで、図12のようにハンド300の指3402、3403でワークW1d把持する場合、ワークの剛性の関与は各指3402、3403がワークW1dと接触してこれを把持した前と後で異なる。従って、本実施形態のようにワークの剛性を考慮した把持制御では、ステップS14のように各指3402、3403がワークW1dと接触してこれを把持した把持状態か否かを判定する。そして、把持状態が成立する前は剛性情報を用いた補正制御(位置制御)を行い、把持状態が成立した後では、剛性情報を用いずワークの実寸法を用いた補正制御(位置制御)を行う。
ステップS14のワークW1dの把持前か否かの判定は、例えば補正量演算部522で力センサ342の出力値、即ち把持力の変化を監視することによって行うことができる。例えば、把持前は力センサ342には外力が加わっていないが、各指3402、3403がワークW1dと接触した時点で力センサ342は外力に応じた検出値を出力し始める。ワークW1dの把持前か否かの判定はこのような力センサ342の出力変化を介して検出することができる。ただし、ワークW1dの把持前か否かの判定は、例えば指の駆動源である各モータ311〜315の駆動量(モータ312の駆動電流値など)の変化や、エンコーダを介して検出した各指3402、3403の(相対)変位量の変化を介して検出してもよい。
ステップS14において、力センサ342の出力変化を介してワークW1dの把持前か否かの判定を行う場合は、次のような演算を行う。例えば、力センサ342の現在の検出値をF2とすると、ステップS14は式(5)の不等式に示すような判定を行うことにより実現される。
ただし、上式(5)中のεは力センサ342の最小力分解能に相当する。数式5を満たす場合は、把持前であると判定しステップS15に進み、数式5を満たさない場合は把持状態が成立したと判定し、ステップS16に進む。
ステップS14で式(5)の条件を満たし、ステップS15に進んだ場合は、ハンド300はワークW1dを把持する前の状態である。この場合、補正量演算部522で補正係数a3、b3と、さらに把持指令テーブル511’のワーク剛性係数、把持力である力指令値(Fref)から補正量を演算する。この場合のワークW1dの把持では、補正量は例えば下式(6)で演算する。
ここで、位置補正する指3403(第3指)の補正量がΔXref3、指3402(第2指)に生じさせる把持力がFref2、指ワークの剛性係数がKwであるものとする。上式(6)により、ハンド制御装置500はワークの撓みFref2/(2Kw)を考慮した撓み補正を含む位置制御を行うことができる。これにより、ハンド300はワークW1d把持する直前の状態でワーク1dの把持方向の中心位置で位置決めすることができる。
一方、ステップS14で式(5)の条件を満たさず、把持後であると判定しステップS16に進んだ場合は、補正量演算部522で補正係数a3、b3と、力センサ342の現在の出力値(力覚値)から補正量を演算する。この場合のワークW1dの把持では、例えば補正量は下式(7)で演算する。
ここで、位置補正する指3403(第3指)の補正量がΔXref3、力センサ342の出力値がF2、指3402(第2指)の位置情報の現在値がX2、指3403(第3指)の位置情報の現在値がX3であるものとする。なお、指3402、3403の位置情報の現在値(X2、X3)は、エンコーダ332、333の値と減速機322、323の減速比などから計算することができる。
上式(7)により、エンコーダ332、333の値から実際のワークW1dの幅のずれ(X2−X3)/2を推定し、同ワークを把持すべき把持位置を補正することができる。これにより、ワークW1dの寸法について公差がある場合においても、ハンド300はワークW1dを把持した状態でワークの把持方向の中心位置で位置決めすることができる。
本実施形態によれば、例えば、把持力10Nにて把持する場合、指先先端換算の指駆動部の剛性係数を50N/mmとすると、指先の撓み量は10N/(50N/mm)=0.2mmとなる。また、ワークW1dの把持方向のばらつきを±0.06mmとすると、本実施形態の撓み補正を用いることで、ワーク位置決め精度は0.23mm(=0.2mm+0.06/2)程度、向上させることができる。
以上説明したように、本実施形態の把持制御によれば、ワークの剛性情報を用いて把持位置を補正するための補正演算を行うことができる。このため、ワークが把持力によって変形し、ワーク寸法にばらつきが生じる可能性がある場合でも、把持力による指の撓みをハンドの指先位置で補正することができ、高精度な把持位置制御が可能であり、ワーク位置決め精度を向上させることができる。
なお、以上述べた実施形態1および実施形態2の撓み補正における制御手順は例えばハンド制御装置500により実行される。従って上述した機能を実現するソフトウェアのプログラムを記録した記録媒体をハンド制御装置500に供給し、ハンド制御装置500のCPU501が記録媒体に格納されたプログラムを読み出し実行することによって達成されるよう構成することができる。この場合、記録媒体から読み出されたプログラム自体が上述した各実施の形態の機能を実現することになり、プログラム自体およびそのプログラムを記録した記録媒体は本発明を構成することになる。ただし、アーム制御装置400がハンド300の制御も行うように構成されている場合には、上述の把持制御は、アーム制御装置400側で実施してもよい。その場合には、上述の把持制御を行うための制御プログラムは、アーム制御装置400の制御プログラムの一部として実装することも可能である。
また、上述の各実施形態では、コンピュータで読み取り可能な記録媒体がROM502或いはRAM503であり、ROM502或いはRAM503にプログラムが格納される場合について説明したが、本発明はこのような形態に限定されるものではない。本発明を実施するためのプログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、HDD、外部記憶装置、記録ディスクなどを用いることができる。
本発明は、上述の実施例の1以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステムまたは装置に供給しそのシステムまたは装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。