(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0020】
以下、本発明に係るロボットの実施形態について図面を参照しつつ詳細に説明する。実施形態において、重複する図面の説明は省略する。
【0021】
[1.第1の実施形態]
(1)全体構成
図1は、本実施形態のロボットの構成を示す斜視図である。
図1に示すようにロボット1は、外部機器2と、外部機器2を移動するための移動手段3と、外部機器2及び移動手段3を制御するためのコントローラ4とを備える。ロボット1は、移動手段3及び外部機器2を制御して、所望の位置に外部機器2を位置させて作業させる。
【0022】
外部機器2は、外部からの制御信号に基づいて、所定の動作を行う機器である。外部機器2は、単に外部からの信号に基づいて各部の動作を行うだけでなく、外部からの信号に基づいて外部機器2の機能の制御を行い、その制御結果を外部に出力する。即ち、外部機器2は、コントローラ4からの信号に基づいて所定の作業を実行し、その制御結果をコントローラ4に対して出力する。外部機器2としては、カメラ、センサー等を使用する。この外部機器2は、移動手段3に装着される。外部機器2は、移動手段3の装着部に対して固定される。固定は、ネジやビスなどにより行われており、外部機器2は、脱着可能である。
【0023】
移動手段3は、外部機器2をX軸方向、Y軸方向及びZ軸方向に移動させる。そして、移動手段3は指定されたポイントに外部機器2を位置させる。X軸方向は、水平面と平行な1軸方向である。Y軸方向は、水平面と平行でX軸と直交する他軸方向である。Z軸方向は高さ方向である。この移動手段3は、外部機器2をX軸方向に移動させるXリニアスライダ31、外部機器2をY軸方向に移動させるYリニアスライダ32、外部機器2をZ軸方向に移動させるZリニアスライダ33を備える。
【0024】
Xリニアスライダ31は、X軸方向に延設されたレール上にYリニアスライダ32を摺設し、X軸方向に走行する無端ベルトにYリニアスライダ32を直交させて固定してなり、無端ベルトをX軸モータで走行させ、Yリニアスライダ32をX軸に沿って移動させる。
【0025】
Yリニアスライダ32は、Y軸方向に延設されたレール上にZリニアスライダ33を摺設し、Y軸方向に走行する無端ベルトにZリニアスライダ33を固定してなり、無端ベルトをY軸モータで走行させ、Zリニアスライダ33をY軸に沿って移動させる。Xリニアスライダ31及びYリニアスライダ32の伝動機構としては、無端ベルトの他、シリンダ、リードスクリュー等の各種アクチュエータを挙げることができる。
【0026】
Zリニアスライダ33は、Z軸に沿った軸を有するアーム331を備え、このアーム331(R軸)の先端には、外部機器取り付け板332が装着される。アーム331は、Z軸モータによりZ軸方向に移動させる。このZリニアスライダ33により外部機器取り付け板332は、Z軸方向を移動する。さらに、Zリニアスライダ33は、アーム331をアーム331の中心を軸としてR方向に回転させるR軸回転機構を備える。R軸回転機構により、アーム331に取り付けられた外部機器取り付け板332は、アーム331の中心を軸として回転運動する。外部機器取り付け板332には、外部機器2を取り付けるための設置部333が複数設けられる。ロボット1は、この設置部333に様々な外部機器2を取り付けることができ、
図1では、カメラ2aと、塗布装置2bとが設置される。
【0027】
(2)コントローラの構成
コントローラ4は、所謂コンピュータである。
図2は、コントローラ4の構成を示すブロック図である。コントローラ4は、
図2に示すように、制御プログラム421の構成要素である制御データ422に従って演算処理及び指令信号を出力するCPU41、制御プログラム421、制御データ422、ドライバーデータ423、ドライバーデータ423を生成するユーザに付与するユーザID・パスワード424、及び制御コマンド425を記憶するストレージ42、制御プログラム421が展開されCPU41の演算結果が一時記憶されるメモリ43、CPU41が送出する指令信号を外部機器2が認識可能な形式への変換、及び外部機器2から出力されたデータの形式をCPU41における演算処理に利用可能な形式に変換する外部機器用ドライバー44、CPU41が送出する指令信号に従って各モータに電力パルスを供給するモータドライバー45と、を備える。コントローラ4は、周辺機器として、マウス、キーボード及びティーチングペンダント461、並びに、液晶ディスプレイ等の表示部462等の操作手段46を備える。
【0028】
図3は、コントローラ4の機能ブロック図を示す。このコントローラ4は、ストレージ42に記憶された制御プログラム421を実行することにより、コントローラ4内にドライバー生成部51、制御データ生成部52、ドライバー選択部53、及び制御データ実行部54を実現する。
【0029】
(ドライバー生成部)
ドライバー生成部51は、操作手段46からの入力に従って外部機器用ドライバー44で使用するドライバーデータ423の作成を行う。ドライバー生成部51で作成したドライバーデータ423は、ストレージ42内のドライバーデータ記憶部42bに記憶される。ドライバー生成部51は、
図4に示す様に、ユーザに対してドライバーデータ423の作成の権限を与えるアカウント登録部51a、ドライバーデータ423の作成時にユーザのアカウントの確認を行うアカウント認証部51b、ドライバーデータ423の各項目の設定を行う項目設定部51c、作成したドライバーデータ423をストレージ42内のドライバーデータ記憶部42bに登録させるためのドライバー登録部51dと、を備える。
【0030】
アカウント登録部51aは、ドライバーデータ423を作成するユーザに対して、ドライバーデータ423を作成する権限の付与を行う。権限の付与は、ドライバーデータ423の作成を希望するユーザに対して、アカウント記憶部42cの中からユーザの属性に応じた「ユーザID」と「パスワード」を付与する。ユーザの属性は、例えば、ロボット1の製造業者、ロボット製造業者からロボット1を購入しセットアップを行うベンダー、ベンダーからロボット1を購入し実際に使用するユーザに分けることができる。
【0031】
アカウント認証部51bは、ユーザがドライバーデータ423の作成をする権限があるかの確認を行う。アカウント認証部51bは、ユーザからのアカウントIDとパスワードの入力を受け付ける。そして、ユーザIDとパスワードの組み合わせが、アカウント記憶部42cに記憶されている「ユーザID」と「パスワード」の組み合わせと一致するかの判定を行う。登録されている「ユーザID」と「パスワード」と一致する場合は、そのアカウントIDとパスワードの組み合わせを入力したユーザに対して、ドライバーデータ423の作成の許可を与える。
【0032】
項目設定部51cは、認証が与えられたユーザからの入力を受け付けて、新規にドライバーデータ423の各項目の設定を行う。
図5は、ドライバーデータ423として設定する項目を示した図である。
図5に示すように、ドライバーデータ423は「ユーザID」、「保護モード」、「外部機器種別ID」、「外部機器種別」、「通信作業内容」、「外部機器指示コマンド」、「データ読込形式」の各項目から成る。
【0033】
「ユーザID」は、ドライバーデータ423を作成したユーザに付与されたアカウントIDである。「保護モード」は、作成したドライバーデータ423の他のアカウントにおける使用制御を示す。例えば、「保護モード」は、以下の様に設定することができる。
(a)制限なし:他のアカウントのユーザは、制限なしに参照、変更、または使用することができる。
(b)public(公開):他のアカウントのユーザは、参照、または使用することができる。
(c)protected(保護):他のアカウントのユーザは、使用のみすることができる。
(d)private(私的):他のアカウントのユーザは、参照、変更、または使用することができない。
【0034】
「外部機器種別ID」は、外部機器2の型番などを示す番号である。「外部機器種別」は、各ドライバーデータ423に付される名称である。外部機器種別は、ドライバーデータ423の種類を示す識別子として使用する。「通信作業内容」では、コントローラ4が外部機器2の作業を実行させるために出力する通信内容を示す。通信する内容としては、メモリを開放するタイミング、出力する際に使用するポート#(ナンバー)、ディレイ時間、データを出力するポート#などである。通信作業内容においては、外部機器2に作業を実行させるための順序や、それらにかかる時間を指定する。例えば、通信内容として外部機器2に、メモリの開放、外部コマンド「%S」の実行、300秒の待機、外部コマンド「%S」の実行の実行結果のデータの取得などを指定する。
【0035】
「外部機器コマンド」は、外部機器2に各種作業を実行させるためのコマンドである。外部機器コマンドは、外部機器2が読み取り可能な形式である。例えば、外部機器2であるカメラ2aにおいて、撮像を行うコマンドとして「%S」がある場合、「外部機器コマンド」として「%S」を設定する。外部機器用ドライバー44がこのドライバーデータ423を参照した場合には、ポイントステートメント7に応じたカメラ2aに対する出力指示を受け付けた場合、カメラ2aに対して「%S」を出力する。
【0036】
「データ読込形式」は、カメラ2aから出力される出力データの形式である。例えば、カメラ取り込みデータ形式として「nn,x
1x
1x
1x
1.x
1x
1,y
1y
1y
1y
1.y
1y
1,r
1r
1r
1.r
1r
1,x
2x
2x
2x
2.x
2x
2,・・・」を設定する。nnは、そのデータを識別するための組数であり、x
1やx
2は、取得データにおけるX座標である。y
1は、取得データにおけるY座標であり、r
1は、取得データにおるデータ回転[度単位]である。外部機器用ドライバー44は、取得データから組数を抽出する関数#numCameraDate、X座標を抽出する関数#CameraDateX[]、Y座標を抽出する関数#CameraDateY[]、回転[度単位]を抽出する関数#CameraDateT[]を備えている。外部機器用ドライバー44で、このドライバーデータ423が指定された場合には、「カメラ取り込みデータ形式」を基準として、取り込んだデータより組数、X座標、Y座標、回転[度単位]を抽出する。そして、ポイントステートメント7のデータ形式に合わせて出力する。
【0037】
ドライバー登録部51dは、項目設定部51cで各項目について設定したドライバーデータ423をドライバーデータ記憶部42bに記憶する。ドライバーデータ423は、データを識別するための識別子を付して記憶される。ドライバーデータ423に記憶される識別子としては、項目設定部51cで設定された「外部機器種別」の項目を利用する。
【0038】
(制御データ生成部)
制御データ生成部52は、操作手段46からの入力に従って制御データ422の作成を行う。制御データ生成部52で生成した制御データ422は、ストレージ42内の制御データ記憶部42aに記憶される。
図6は、制御データ422の全体構成を示す模式図である。制御データ422は各加工ポイントに対する一連の作業を記録している。この制御データ422は、複数の構造化ポイントブロック6を配列して成る。構造化ポイントブロック6は、1箇所の加工ポイントに対する一連の作業を一塊にして記録している。
【0039】
一連の作業は、ポイント主体の構文で記録されている。すなわち、構造化ポイントブロック6は、1箇所の加工ポイントに対する一連の作業を表す全ポイントステートメント7を配列して成る。各ポイントステートメント7は、加工ポイントに本作業を完遂するために位置取りする必要のあるポイントごとに用意される情報である。このポイントステートメント7は、ポイント番号71以下に、ポイント種別オプション72と、ポイント座標73とポイント速度74を並べて成る。更に、ポイントステートメント7は、ポイント番号71以下に、作業種別オプション75と、作業番号76、ポイント補正77を並べてなる。
【0040】
ポイント番号71は、ポイント主体の構文であることの宣言及び区切りを明示し、各ポイントステートメント7を区分けしている。ポイント種別オプション72は、ポイントの種類と移動方法の組み合わせを示す。ポイントの種類は、経由点、本作業の開始点、及び本作業の終了点等である。移動方法は、点塗布の為の移動、ネジ締めのための移動、PTP移動、直線補間移動、補助点指定による円弧補間等である。例えば、点塗布の為の移動とは、PTP駆動とPTP駆動終了後の点塗布作業とを組み合わせた移動方法である。また、経由点を示すポイント種別オプション72の記録に対して、経由点を示す複数のポイント座標73の記録が許可されている。
【0041】
作業番号76は、外部機器2の作業内容を記述した命令群を示す識別子である。命令群は、SLIM(Standard Language for Industrial Manipulators)言語等のロボット言語により記述され、予めストレージ42のコマンド記憶部42dに記憶されている。作業種別オプション75は、作業番号76が示す作業の実施時期を示す。この作業種別オプション75は、移動前作業、移動中作業、開始点作業、終了作業、又は本作業を示す。
【0042】
ポイント補正77は、ポイント座標73における補正量を算出するために使用する条件、及びその条件より算出される補正量を示す識別子である。ポイント補正77における条件及び補正量は、コマンド記憶部42dに記憶される。制御データ実行部54は、制御データ422のポイントステートメント7のポイント座標73に、ポイント補正77に記載された条件で算出した補正量を反映させた座標で外部機器2に作業を実行させる。つまり、加工の対象となるワークWを所定の配置位置に配置し、そのワークWに対して外部機器2に作業を実行させる場合には、ポイントステートメント7で指定するポイント座標73は、ワークWが配置位置に適正に配置されたことを前提としたものである。その為、ワークWが所定の配置位置からズレて配置されると、ズレたワークWに対して適正な配置位置のワークWを前提としたポイント座標73を加工点として本作業を実行させることになる。そのため、ユーザが望んだ結果を得ることはできない。そこで、ワークWがズレて配置された場合に、そのズレ量を算出する必要がある。
【0043】
図7は、補正量を算出するために使用する条件を示す識別子である。
図7は、ポイント補正77として記憶される「ワーク補正(番号)」を示す。
図7に示すようにポイント補正は、「ワーク補正#」「ワーク補正種別」「外部機器種別」「変換係数」「基準マーク位置1」「基準マーク位置2」とから成る。また、このポイント補正77は、ワーク補正#を識別子とした「ワーク補正(番号)」として記憶される。
【0044】
「ワーク補正#」は、補正量を算出するために使用する条件に付される識別番号である。「ワーク補正種別」は、補正量を算出するための手段を示し、カメラ2aを使用したカメラワーク補正、センサーを使用したセンサワーク補正等がある。「外部機器種別」は、ワーク補正種別に使用する外部機器2のIDを示し、IDとしては型番、製造番号、及び後述する作成したドライバーに付した外部機器種別等がある。「変換係数」は、外部機器2における座標系を制御データ422における座標系に変換する際に使用する変換係数である。この変換係数は、後述するキャリブレーションにより算出した「12.58」を登録する。
【0045】
「基準マーク位置」は、配置したワークWが適正な位置及び姿勢であるかの判定するための基準となる基準マークの位置を示す。基準マーク位置は、制御データ422における座標系で指定される。例えば、
図8に示すように、予めワークWの表面に、基準マーク8を2つ付しておく。この場合は、基準マーク位置として、2つの座標を登録する。即ち、ワークWが配置位置に適正に適正な姿勢で配置された場合の基準マーク8aの座標を基準マーク1の座標(X=100.00,Y=95.00)とし、ワークWがワーク配置位置に適正に配置された場合の基準マーク8bの座標を基準マーク2の座標(X=98.00,Y=92.00)として登録される。
【0046】
(ドライバー選択部)
ドライバー選択部53は、制御データ422のポイント補正77に記載された外部機器種別に従って、ストレージ42のドライバーデータ記憶部42bより外部機器2に対応するドライバーデータ423を呼出して、外部機器用ドライバー44に反映させる。すなわち、
図6に示すポイント番号2のポイントステートメント7のポイント補正77をワーク補正1とした場合、ドライバー選択部53は、ワーク補正1で設定された外部機器種別である「CV−1000」を識別子としたドライバーデータ423を、ドライバーデータ記憶部42bより読み出す。そして、当該ドライバーデータ423を外部機器用ドライバー44に出力し、外部機器用ドライバー44の内容をドライバーデータ423を基に書き換える。
【0047】
(制御データ実行部)
制御データ実行部54は、操作手段46の入力に従って、制御データ422に基づいて移動手段3及び外部機器2へ制御指示を出力する。制御データ実行部54は、制御データ422の全ポイントステートメント7を連続実行する。すなわち、制御データ実行部54は、先頭から次々に構造化ポイントブロック6を参照する。構造化ポイントブロック6の参照では、制御データ実行部54は、構造化ポイントブロック6内の各ポイントステートメント7を先頭から順に参照する。そして、ポイントステートメント7が示す制御を実行し、全ポイントステートメント7が示す制御の実行終了により、メインルーチンに戻る。メインルーチンに戻ると、次の構造化ポイントブロック6の参照を続けていく。
【0048】
制御データ実行部54において、ポイントステートメント7に基づいて移動手段3へ出力される制御指示は、モータドライバー45を介して出力される。また、ポイントステートメント7に基づいて外部機器2へ出力させる制御指示は、外部機器用ドライバー44を介して外部機器2に対して出力される。ポイントステートメント7に基づいて出力される制御指示は、外部機器用ドライバー44により外部機器2を実行させるコマンドの形式に変換されて出力される。言い換えれば、外部機器用ドライバー44により、ポイントステートメント7に記載された制御内容は、外部機器2が読取可能な形式に合わせて出力される。一方、外部機器2より制御結果が出力された場合は、外部機器用ドライバー44により、ポイントステートメント7の形式に合わせて制御結果のデータ形式が変換される。
【0049】
[1−2.作用]
以上の様な構成を有する本実施形態のロボット1では、以下の工程により外部機器2に作業を実行させる。
(1)外部機器2に合わせたドライバーデータ423の作成工程。
(2)制御データ422で使用する補正量を算出するための条件を設定するポイント補正設定工程。
(3)制御する外部機器2とその外部機器2に対応するドライバーデータ423とを関連付けた制御データ422の作成工程。
(4)制御データ422に基づく移動手段3及び外部機器2の制御工程。
以下、説明の為に、外部機器2としてカメラ2aと塗布装置2bとが設置された場合において、カメラ用のドライバーデータ423の新規作成、カメラ2aを使用したワークWの位置補正を算出するための条件の設定、位置補正を含めた制御データ422の作成、及び、位置補正を利用した塗布作業の手順について説明する。
【0050】
(1)ドライバーデータの作成工程
ドライバーデータ423の作成工程では、外部機器2として装着したカメラ2aに対応するドライバーデータ423を作成する。外部機器2として装着したカメラ2aの形式を「KS_UserCamera」とし、このカメラ2aに対応するドライバーデータ423は、ドライバーデータ記憶部42bに記憶されていないとする。カメラ「KS_UserCamera」に対応するドライバーデータ423を新規の作成する場合は、アカウント登録、アカウント認証、ドライバーの作成、ドライバーの登録の工程を経る。
図9は、ドライバーデータ423の作成工程の手順を示すフローチャートである。
【0051】
アカウント登録工程では、ドライバーデータ423を作成するためのアカウントを作成する。ドライバーの作成では、外部ドライバーを作成するユーザに対して、外部ドライバーを作成するための権限の付与を行う。権限の付与は、付与対象となるユーザに対して、アカウント記憶部42cの中から「ユーザID」と「パスワード」を付与することで行う(S01)。例えば、ユーザAに対してユーザIDとして「suzukki_k」、パスワードとして「1234」を付与する。
【0052】
アカウント認証工程では、ドライバーを作成するユーザがドライバーを作成する権限を有しているかの確認を行う。権限の確認では、ドライバーの作成を行うユーザから「ユーザID」と「パスワード」の入力を受け付ける。「ユーザID」と「パスワード」とが、アカウント記憶部42cに記憶されている「ユーザID」と「パスワード」の組み合わせであるかの判定を行う。登録されている場合は、そのアカウントIDとパスワードの組み合わせを入力したユーザに対して、認証を行い、ドライバーの作成の許可を与える(S02)。例えば、ユーザAは、ユーザIDとして「suzukki_k」、パスワードとして「1234」を入力する。
【0053】
ドライバーデータ423の作成工程では、認証が与えられたユーザからの入力を受け付けて、新規のドライバーの作成を行う。ドライバーデータ423として、「ユーザID」、「保護モード」、「外部機器種別ID」、「外部機器種別」、「通信作業内容」、「外部機器コマンド」、「データ読込形式」の設定を行う(S03)。ユーザAがドライバーの作成を行う場合、ドライバーデータ423の「ユーザID」としては、suzukki_kが設定される。そして、ユーザAは、「外部機器種別」としてCV−1000を設定し、他の「保護モード」、「外部機器種別ID」「通信作業内容」「外部機器コマンド」「データ読込形式」についても任意に設定する。
【0054】
ドライバーの登録工程では、作成した外部ドライバーをストレージ42内のドライバー記憶部42bに記憶する(S04)。記憶される外部ドライバーは、「外部機器種別」をインデックスとして記憶される。
【0055】
(2)ポイント補正設定工程
次に、制御データ422で使用する補正量を算出するための条件の設定であるポイント補正について設定する。
【0056】
(a)変換係数の算出
初めにポイント補正として「ワーク補正#」「ワーク補正種別」「外部機器種別」を設定し、「変換係数」を算出する。「変換係数」の算出は、所謂キャリブレーションにより算出する。
図10は、ポイント補正の「変換係数」を算出するための手順を示すフローチャートである。
【0057】
「変換係数」の算出工程では、初めに、ポイント補正の名称である「ワーク補正#」、どのような種類の外部機器2でポイント補正を行うのかを示す「ワーク補正種別」、ワーク補正種別に使用する外部機器2の型番を示す「外部機器種別」を設定する(S11)。
【0058】
次に、ワークWを適正な位置に適正な姿勢で配置した状態で、ロボット1の機能を使用して移動手段3を制御しカメラ2aをカメラ撮り位置に移動させる。カメラ撮り位置は、ワークWの配置ポイントの上方に設けられる位置であり、制御データ422における座標系で示される(S12)。
【0059】
カメラ撮り位置に移動した後、「外部機器種別」で設定したカメラ2aがユーザが新規に作成したドライバーに付された「外部機器種別」であるのかどうかの判定を行う(S13)。ユーザが新規に作成したドライバーに付された「外部機器種別」の場合(S13のYES)には、そのドライバーデータ423に記載された制御内容に従って、カメラ2aに対して撮像を実施するコマンドを出力する(S14)。カメラ2aは、その機能により、撮像結果に含まれる基準マークの座標をコントローラ4に対して出力する。コントローラ4では、外部機器用ドライバー44により、制御データ422の形式に撮像結果の変換をする(S15)。
【0060】
一方、コントローラ4のドライバーデータ記憶部42bに予め記憶してある「外部機器種別」の場合(S13のNO)には、そのドライバーデータ423に記載された制御内容に従って、カメラ2aに対して撮像を実施するコマンドを出力する(S16)。カメラ2aは、その機能により、撮像結果に含まれる基準マークの座標をコントローラ4に対して出力する。コントローラ4では、外部機器用ドライバー44により、制御データ422の形式に撮像結果の変換をする(S17)。
【0061】
S15及びS17の結果、コントローラ4において、カメラ2aをカメラ撮り位置に移動させた場合のカメラ2aの座標系における基準マーク8の位置を取得することができる。
【0062】
次に、制御データ422における座標系における基準マーク8の位置を取得する。制御データ422における座標系における基準マーク8の位置の取得方法としては、ロボット1の移動手段3を手動で移動させて、カメラ2aの視野内に映る基準マークの位置が、S12のカメラ撮り位置における基準マークの位置と一致するようにする(S18)。この場合、カメラ2aを手動で移動させる方法としては、実際にカメラ2aを手で動かすのではなく、操作手段46を操作してカメラ2aを移動させる方法を利用する。これにより、制御データ422における座標系における基準マークの位置を取得することができる。
【0063】
その後、キャリブレーションに使用する変数の算出を行う。算出の方法では、S12で撮像した基準マークの座標と、ロボット1のアームを動かして取得した基準マークの位置とが等しくなるような変数を算出し、算出した値をポイント補正に登録する(S19)。
【0064】
以上の様に設定した、「ワーク補正#」「ワーク補正種別」「外部機器種別」「変換係数」を、「外部機器種別」と対応付けてストレージ42に記憶する。「外部機器種別」は、ポイント補正を示す識別子となる。
【0065】
(b)基準マーク位置の登録
次に、ポイント補正として「基準マーク位置」を算出する。
図11は、基準マークの登録方法の手順を示すフローチャートである。基準マーク位置の算出には、まず、ワークWを適正な位置に適正な姿勢で配置した状態で配置する。そして、コントローラ4により、移動手段3を制御して外部機器2であるカメラ2aを、基準マークのカメラ撮り位置に移動させる。基準マークのカメラ撮り位置は、ワークWの配置ポイントの上方に設けられる位置であり、制御データ422における座標系で示される(S21)。
【0066】
基準マークのカメラ撮り位置に移動した後、「外部機器種別」で設定したカメラ2aがユーザが新規に作成したドライバーに付された「外部機器種別」であるのかどうかの判定を行う(S22)。ユーザが新規に作成したドライバーに付された「外部機器種別」の場合(S22のYES)には、そのドライバーデータ423に記載された制御内容に従って、カメラ2aに対して撮像を実施するコマンドを出力する(S23)。カメラ2aは、その機能により、撮像結果に含まれる基準マークの座標をコントローラ4に対して出力する。コントローラ4では、外部機器用ドライバー44により、制御データ422の形式に撮像結果の変換をする(S24)。
【0067】
一方、コントローラ4のドライバーデータ記憶部42bに予め記憶してある「外部機器種別」の場合(S22のNO)には、そのドライバーデータ423に記載された制御内容に従って、カメラ2aに対して撮像を実施するコマンドを出力する(S25)。カメラ2aは、その機能により、撮像結果に含まれる基準マークの座標をコントローラ4に対して出力する。コントローラ4では、外部機器用ドライバー44により、制御データ422の形式に撮像結果の変換をする(S26)。
【0068】
S24及びS26の結果、カメラ2aを基準マークのカメラ撮り位置に移動させた場合のカメラ2aの座標系における基準マーク8の位置を取得することができる。
【0069】
次に、制御データ422における座標系における基準マーク8の位置を取得する。制御データ422における座標系における基準マーク8の位置の取得方法としては、カメラ2aの座標系で示される基準マークの座標を変換係数を用いることで、制御データ422における座標系における座標に変換する(S27)。
【0070】
その後、制御データ422における座標系における基準マークの座標は、ポイント補正の「基準マーク位置」として登録する(S28)。
【0071】
(3)制御データの作成工程
制御データ422を作成する場合には、初めに、ポイント補正を設定し、その後、各加工点における「本作業」、各加工点の「座標」、各作業後の作業の設定を行う。ここでは、説明の為に、第1の加工点で配置位置に配置されたワークWのズレ量に基づく補正量を算出し、第2の加工点では、第1の加工点で算出した補正量を反映させた座標において、ワークWに対して塗布を実施する場合について説明する。
図12は、本実施形態の制御データ422の一例を示す図である。
【0072】
図12に示すように、第1の加工ポイントに対応するポイントステートメント7として、ポイント番号71「#1」、ポイント種別オプション72「PTP駆動」、ポイント座標73「X=100,Y=100,Z=20」、ポイント速度74「速度40」、作業種別オプション75「移動後作業」、作業番号76「1」、ポイント補正77「なし」を設定する。作業番号76で設定した「1」は、takeCamera1のコマンドに付された識別子である。takeCamera1は、以下の動作をカメラ2a及びコントローラ4に実行させるコマンドである。
(a)コントローラ4からカメラ2aに対して撮像指示を出力し、カメラ2aに撮像をさせる。
(b)カメラ2aにおいて、撮像結果から基準マーク座標を抽出し、その結果をコントローラ4に対して出力させる。
(c)コントローラ4ではカメラ2aから出力された基準マークの座標と予め設定された基準マークの座標とを比較し、その差から補正量の算出し、ワーク補正1の補正量としてコマンド記憶部42dに記録させる。
【0073】
また、第2の加工ポイントに対応するポイントステートメント7として、ポイント番号71「#2」、ポイント種別オプション72「点塗布」、ポイント座標73「X=100,Y=140,Z=30」、ポイント速度74「速度40」、作業種別オプション75「なし」、作業番号76「なし」、ポイント補正77「ワーク補正1」を設定する。
【0074】
同様に、第3の加工ポイントに対応するポイントステートメント7として、ポイント番号71「#3」、ポイント種別オプション72「PTP駆動」、ポイント座標73「X=150,Y=100,Z=20」、ポイント速度74「速度40」、作業種別オプション75「移動後作業」、作業番号76「1」、ポイント補正77「なし」を設定する。第4の加工ポイントに対応するポイントステートメント7として、ポイント番号71「#4」、ポイント種別オプション72「点塗布」、ポイント座標73「X=150,Y=140,Z=30」、ポイント速度74「速度40」、作業種別オプション75「なし」、作業番号76「なし」、ポイント補正77「ワーク補正1」を設定する。
【0075】
(4)移動手段及び外部機器の制御工程
このような作業データを使用した移動手段3及び外部機器2の制御工程では、
図12に示す制御データ422に従ってロボット1を動作させる。ロボット1の動作は以下の様になる。
【0076】
初めに、ロボット1は、外部機器2であるカメラ2aをポイント番号「#1」のポイント座標73として設定した座標X=100.00,Y=100.00,Z=20.000,R=0.0にPTP移動する。
【0077】
移動後、コントローラ4は、カメラ2aに対して撮像指示を出力する。この撮像指示は、外部機器用ドライバー44で、カメラ2aにおける撮像コマンドに変換される。撮像コマンドを受信したカメラ2aでは撮像を行い、撮像結果より基準マークの座標を抽出する。カメラ2aは、撮像した基準マークの座標を制御結果としてコントローラ4に対して出力する。ここで、カメラ2aより出力される基準マークの座標は、カメラ2aの座標系で示される座標である。
【0078】
カメラ2aが出力した基準マークの座標は、コントローラ4の外部機器用ドライバー44により、コントローラ4の制御データ422の座標形式に変換される。コントローラ4においては、受信した基準マークの座標と、ポイント補正77に登録された基準マークの座標の差から補正量を算出する。この補正量は、ポイント補正77の補正量1として記録する。
【0079】
次に、コントローラ4は、外部機器2である塗布装置2bをポイント2の座標として設定した座標、X=100.00,Y=100.00,Z=20.000,R=0.0に移動させ塗布作業を実行する。
【0080】
ポイント2における塗布作業において、ポイント補正としてワーク補正番号が設定されている場合には、ポイント2の座標として設定された座標にポイント補正で指定した条件より算出した補正量を反映した座標で塗布作業を実行する。これにより、塗布対象となるワークWの位置が、基準位置よりずれていた場合にでも、正しい位置に塗布することができる。
【0081】
[1−3.効果]
以上の様なロボット1では、想定していない種類の外部機器2を使用した場合にでも、ユーザがその外部機器2に応じたドライバーを作成することにより、この外部機器2に対して作業を実行させることが可能となる。
【0082】
すなわち、従来では、予めドライバーをストレージ42にその外部機器2に対応したドライバーを記憶しておく必要があった。しかしながら、外部機器2の種類は膨大であり、そのすべてに応じたドライバーを予め用意しておくことは困難であった。これに対して、本実施形態のロボット1では、装着する外部機器2に対応したドライバーを、ユーザが作成しそのドライバーを制御データ422に付与することで、様々な外部機器2に対応することが可能となる。
【0083】
また、本実施形態では、ドライバーデータ423に当該データを識別するための識別子を付した。これにより、作業内容と使用するドライバーデータ423を関連付ける際のユーザの負担を軽減することができる。
図13は、ユーザがドライバーデータ423を選択する際に操作手段46の表示例である。
図13に示すように、外部機器種別を選択する際には、ユーザは選択可能な候補の中から選択を行うことができる。
【0084】
また、本実施形態において、以下の様な変形例を採用することができる。
【0085】
(1)本実施形態では、ポイント番号1のポイントステートメント7の作業番号としてtakeCamera1の識別子を指定した。このtakeCamera1を実行する際に、コントローラ4から出力する撮像指令は、ポイント番号2のポイントステートメント7のワーク補正1で指定されるドライバーデータ423を反映させた外部ドライバーにより変換されて出力される。即ち、ポイント番号1のポイントステートメント7を実行する際のドライバーをポイント番号2のポイントステートメント7で指定した。しかしながら、本実施形態としては、
図14に示すように、各ポイントステートメント7で使用する外部機器種別78を指定することもできる。この様にすることで、外部機器2として複数のカメラを配置し、それぞれのカメラを交互に使用する場合でも、制御するカメラに応じたドライバーデータ423を外部ドライバーに反映させることが可能となる。
【0086】
(2)本実施形態では、ポイントステートメント7の記載内容に合わせて、使用するドライバーデータ423を関連付けたが、ドライバーデータ423の関連付け対象はこれに限らない。例えば、
図15に示すように、構造化ポイントブロック6の記載内容と使用するドライバーデータ423を関連付けることもできる。この場合、操作手段46からの入力に従って構造化ポイントブロック6ごとに、関連付けるドライバーデータ423を指定する。ドライバーデータ423の指定方法は、構造化ポイントブロック6にテーブル9を設け、そのテーブル9において外部機器種別78を指定する。これにより、構造化ポイントブロック6ごとに、共通した外部機器種別78を設定することも可能である。通常は、一連の作業の途中で外部機器2の変更を行うことは稀である。その為、ポイントにおける作業ごとに外部機器種別78を設定することは、手間である。これに対して、構造化ポイントブロック6において、一括して使用する外部機器種別78を設定することが可能であり、その手間を軽減することが可能となる。
【0087】
(3)また、構造化ポイントブロック6に対してドライバーデータ423を関連付けるのではなく、制御データ422に対してドライバーデータ423を関連づけても良い。例えば、
図16に示すように、制御データ422にテーブル9を設け、制御データ422に共通するドライバーデータ423を指定することも可能である。これにより、制御データ422内のすべての構造化ポイントブロック6を実行する際に使用するドライバーデータ423を一括で指定することが可能となる。ロボット1が1種類の外部機器2に対して、1つの動作のみを実行させる場合には、コントローラ4と外部機器2との通信に使用する外部ドライバーは1種類で良い。この場合に、構造化ポイントブロック6に対してドライバーを付与したり、ポイントにおける作業番号に対してドライバーを付与するとドライバーの設定の回数が多くなる。この場合には、作業データに対してドライバーの付与を行う。
【0088】
[2.他の実施形態]
以上のように本発明の実施形態を説明したが、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。そして、この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0089】
(1)例えば、本実施形態では、外部機器2としてカメラ2aを使用し、撮像結果に基づいてワークWのズレ量に基づいて補正量の算出を行った。他にも、外部機器2としてレーザーセンサーを使用することもできる。レーザーセンサーを使用することで、ワークWの高さを測定することができ、測定した高さを利用して高さ方向の補正をすることもできる。
【0090】
(2)本実施形態では、ワーク配置位置に配置されたワークWの補正量を算出し、その補正量に応じた制御を行った。他にも、制御データ422で、外部機器2及び移動手段3の制御内容を設定することで、ランダムに置かれた複数のワークWの座標を算出し、その座標に基づいて各作業を実行させることもできる。
【0091】
(3)本実施形態では、1つのポイントステートメント7において、作業番号76を1つ設定したが、複数の作業番号を指定しても良い。1つのポイントステートメント7として第1の作業番号と、第2の作業番号を指定することで、同じポイント座標において、2つの作業を実行させることが可能となる。
【0092】
(4)本実施形態では、ユーザが作成したドライバーの保護レベルを設定したが、ユーザに合わせて権限のレベルの付与をしても良い。すなわち、ユーザに付与される権限をユーザの特性に合わせて段階的に区別する。そして、強い権限を有するユーザは、権限が弱いユーザが設定した保護レベルを無視して、ドライバーデータ423の閲覧、編集、及び削除を可能としても良い。例えば、ロボット1を製造するメーカには一番高い「A」が付与し、メーカからロボット1を購入しセッティングを行うベンダーには権限レベルが2番目に高い「B」が付与し、ベンダーからでセッティングを行ったロボット1の購入者には権限レベルが3番目に高い「C」が付与する。これにより、ユーザがメーカに対して修理やメンテナンスを依頼した場合に、メーカのメカニックがユーザが設定したドライバーデータ423を編集することが可能となる。