本件出願は、2019年12月13日に日本特許庁に出願された特願2019-225696号の優先権を主張するものであり、その全体を参照することにより本件出願の一部となすものとして引用する。
まず、本開示の態様例を説明する。本開示の一態様に係るマスタスレーブシステムは、操作端と、前記操作端に力が加えられることで入力される情報である操作情報を検出し出力する操作検出部と、前記操作端に力を与える力付与部とを備えるマスタ装置と、対象物に作用を加える作用部と前記作用部を移動させる動作部とを備えるスレーブ装置と、制御装置とを備え、前記制御装置は、前記作用部の所定の移動を規制する規制条件と前記操作情報とに従って、前記動作部によって前記作用部に前記規制条件が反映された動作をさせるための指令を出力する第1指令部と、前記規制条件に従って、前記作用部の前記所定の移動を指令する前記操作端への入力に対抗する前記操作端への力を前記力付与部に与えさせるための指令を出力する第2指令部とを含む。
上記態様によると、制御装置は、規制条件に従って作用部の所定の移動を規制しつつ操作情報に従って作用部を動作させる。さらに、制御装置は、操作端に力を与えることで、作用部の所定の移動を指令する操作端への入力を規制する。よって、マスタ装置の状態とスレーブ装置の状態とが同様の状態に維持されつつ、スレーブ装置が規制条件が反映された動作を行う。例えば、第1及び第2指令部は、指令として、動作指令及び制御指令等を出力してもよい。
本開示の一態様に係るマスタスレーブシステムにおいて、前記スレーブ装置は、前記動作部によって前記作用部の位置及び姿勢を移動させ、前記操作端は、位置及び姿勢を変えるように移動可能であり、前記規制条件は、前記所定の移動として、前記作用部の姿勢の移動を規制する条件であってもよい。上記態様によると、制御装置は、作用部の姿勢の移動を規制しつつ作用部を動作させる。さらに、制御装置は、規制される作用部の姿勢の移動に対応する操作端の姿勢の移動を規制する。よって、マスタ装置の姿勢とスレーブ装置の姿勢とが同様の姿勢に維持されつつ、スレーブ装置が規制条件が反映された動作を行う。
本開示の一態様に係るマスタスレーブシステムにおいて、前記操作検出部は、前記操作端に加えられる力の方向及び大きさを前記操作情報として検出してもよい。上記態様によると、操作端に加えられる力の方向及び大きさの指令は、作用部の移動方向、移動速度及び当該移動方向での作用力の指令に変換され得る。よって、操作者は、操作端に力を加えることで作用部の動作を制御することができる。
本開示の一態様に係るマスタスレーブシステムにおいて、前記操作検出部は、前記操作端に加えられる3軸方向の力の大きさ及び3軸周りの力のモーメントを前記操作情報として検出してもよい。上記態様によると、操作端に加えられる3軸方向の力の大きさの指令は、当該3軸方向の作用部の移動速度及び作用力の指令に変換され得る。操作端に加えられる3軸周りの力のモーメントの指令は、当該3軸周りの作用部の回転速度及び回転力の指令に変換され得る。よって、操作者は、操作端に力を加えることで作用部の位置及び姿勢を制御することができる。
本開示の一態様に係るマスタスレーブシステムにおいて、前記規制条件は、前記所定の移動として、前記操作情報の前記3軸周りの力のモーメントに対応する前記作用部の姿勢の移動を規制する条件であってもよい。上記態様によると、制御装置は、規制条件に従って操作情報に含まれる3軸周りの力のモーメントを規制し、規制後の操作情報を用いて指令を出力することで、作用部の姿勢の移動の規制が反映された動作をスレーブ装置にさせることができる。
本開示の一態様に係るマスタスレーブシステムにおいて、前記作用部は、研削装置を含み、前記動作部は、ロボットアームを含んでもよい。上記態様によると、研削作業では、研削装置の研削砥石の姿勢は研削対象物に対して所定の姿勢であることが好ましい。制御装置は、ロボットアームを用いて研削砥石の姿勢を自在に制御し、所定の姿勢にすることができる。
本開示の一態様に係るマスタスレーブシステムにおいて、前記制御装置は、前記作用部の姿勢を所定の姿勢に移行させるための移行指令を受け付ける受付部をさらに含み、前記受付部が前記移行指令を受け付けると、前記第1指令部は、前記作用部の姿勢を前記所定の姿勢にさせるための指令を出力してもよい。上記態様によると、制御装置は、移行指令に従って、作用部の姿勢を所定の姿勢に移行させる。例えば、所定の姿勢は作用部の好ましい姿勢又は基本的な姿勢等であってもよい。そして、上記のような作用部の姿勢の移行は、操作端を用いた操作を必要とせず、簡易に実行可能である。
本開示の一態様に係るマスタスレーブシステムにおいて、前記力付与部は、前記力付与部が与える力によって前記操作端を移動させることができるように前記操作端と接続され、前記受付部が前記移行指令を受け付けると、前記第2指令部は、前記操作端の姿勢を前記所定の姿勢に対応する姿勢にさせる前記操作端への力を前記力付与部に与えさせるための指令をさらに出力してもよい。上記態様によると、制御装置は、移行指令に従って、作用部の姿勢を所定の姿勢に移行させ、且つ、操作端の姿勢を作用部の所定の姿勢に対応する姿勢に移行させる。よって、作用部及び操作端の両方の姿勢を対応させつつ目的とする姿勢にすることができる。
本開示の一態様に係るマスタスレーブシステムにおいて、前記スレーブ装置は、前記作用部が前記対象物から受ける力を検出する力検出部をさらに備え、前記第1指令部は、前記作用部の前記所定の姿勢への移行中、前記力検出部が力を検出すると、前記作用部の位置を移動させ、且つ前記作用部の姿勢を前記所定の姿勢にさせるための指令を出力してもよい。上記態様によると、制御装置は、作用部の姿勢の移行中、接触及び衝突等により力検出部で力が検出されると、例えば、接触及び衝突等を回避するように作用部の位置を移動させ、且つ、作用部の姿勢を所定に姿勢にすることができる。よって、確実な姿勢の移行が可能になる。なお、力の検出後において、制御装置は、作用部の位置の移動と作用部の姿勢の移行とを並行して行ってもよく、作用部の姿勢の移行を停止し、作用部の位置の移動後に作用部の姿勢の移行を行ってもよい。後者の場合、制御装置は、作用部の位置の移動完了後に作用部の姿勢の移行を開始してもよく、作用部の位置の移動中に作用部の姿勢の移行を開始し、位置の移動と作用部の姿勢の移行とを並行して行ってもよい。
本開示の一態様に係る制御方法は、マスタ装置によって操作されるスレーブ装置を制御する制御方法であって、前記マスタ装置の操作端に力が加えられることで入力される情報である操作情報と、前記スレーブ装置における対象物に作用を加える作用部の所定の移動を規制する規制条件とに従って、前記スレーブ装置の動作部によって前記作用部に前記規制条件が反映された動作をさせるための指令を出力することと、前記規制条件に従って、前記作用部の前記所定の移動を指令する前記操作端への入力に対抗する前記操作端への力を、前記マスタ装置に生成させるための指令を出力することとを含む。上記態様によると、本開示の一態様に係るマスタスレーブシステムと同様の効果が得られる。
(実施の形態)
以下において、本開示の実施の形態を、図面を参照しつつ説明する。なお、以下で説明する実施の形態は、いずれも包括的又は具体的な例を示すものである。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また、添付の図面における各図は、模式的な図であり、必ずしも厳密に図示されたものでない。さらに、各図において、実質的に同一の構成要素に対しては同一の符号を付しており、重複する説明は省略又は簡略化される場合がある。また、本明細書及び請求の範囲では、「装置」とは、1つの装置を意味し得るだけでなく、複数の装置からなるシステムも意味し得る。
[ロボットシステムの構成]
実施の形態に係るロボットシステム1の構成を説明する。図1は、実施の形態に係るロボットシステム1の一例を示す概略図である。図1に示すように、実施の形態に係るロボットシステム1は、ロボット10と、制御装置20と、撮像装置30と、操作入力装置40と、提示装置50とを備える。ロボットシステム1は、マスタスレーブシステムを構成し、ロボット10はスレーブ装置を構成し、操作入力装置40はマスタ装置を構成する。制御装置20は、ロボットシステム1の全体の動作を制御する。制御装置20は、ロボット10と操作入力装置40との間でバイラテラル制御を行う。
ロボット10は、本実施の形態では産業用ロボットである。ロボット10は、基台13上に固定して配置されるが、搬送装置等の移動可能な装置に配置され、移動できるように構成されてもよい。ロボット10は、処理の対象物に対して作用を加える作用部としてのエンドエフェクタ11と、当該作用を実行するようにエンドエフェクタ11を動かす動作部としてのロボットアーム12とを備える。本実施の形態では、エンドエフェクタ11は、対象物に対して研削の作用を加えるように構成されるとして、以下の説明を行う。このようなエンドエフェクタ11は、対象物に対して研削を施す研削装置11aを備え、ロボットアーム12の先端に取り付けられる。なお、エンドエフェクタ11の作用は、研削に限定されず、いかなる作用であってもよい。例えば、エンドエフェクタ11の作用は、作用対象に対して好ましいエンドエフェクタ11の姿勢が存在する作用であってもよい。
本明細書及び請求の範囲において、「研削」は、対象物の不要な部分を除去することで所要の寸法及び形状等にする加工である切削と、対象物の表面を削り取ることで所要の寸法、形状及び表面粗さ等にする加工である研削と、対象物の表面を滑らかにする加工である研磨とを含み得る。
研削装置11aの例は、グラインダ、オービタルサンダ、ランダムオービットサンダ、デルタサンダ及びベルトサンダ等の電力又は空気圧を動力源とする研削装置であるが、これに限定されない。グラインダは、円盤状の研削砥石を回転させるタイプ、円錐状又は柱状の研削砥石を回転させるタイプ等のグラインダであってもよい。
本実施の形態では、「研削」は、金属製の対象物Wの研削対象領域WA内の不要な部分を削り取り、研削対象領域WAの表面を滑らかにする加工であるとし、研削装置11aは、円盤状の研削砥石11bを備える電動ディスクグラインダであるとして以下の説明を行う。研削対象領域WA内の不要な部分の例は、対象物Wの溶接ビードのような溶接痕等である。研削装置11aは、回転する研削砥石11bが研削対象領域WA内の溶接痕等に押し当てられることで、当該溶接痕及びその周辺を研削する。図1に示される対象物Wは、大型タンクの壁である。
ロボットアーム12は、その先端の研削装置11aの位置及び/又は姿勢を変更することができる構成を有すれば、特に限定されないが、本実施の形態では、垂直多関節型ロボットアームである。なお、ロボットアーム12は、例えば、水平多関節型、極座標型、円筒座標型、直角座標型、又はその他の型式のロボットアームとして構成されてもよい。
ロボットアーム12は基台13に固定される。ロボットアーム12は、その基部から先端に向かって順に配置されたリンク12a、12b、12c、12d及び12fと、リンク12a、12b、12c、12d及び12fを順次回転可能に接続する関節JT1、JT2、JT3、JT4、JT5及びJT6と、関節JT1、JT2、JT3、JT4、JT5及びJT6それぞれを回転駆動するアーム駆動装置M1、M2、M3、M4、M5及びM6とを備える。リンク12aは関節JT1を介して基台13に取り付けられる。リンク12fの先端部はメカニカルインタフェースを構成し、エンドエフェクタ11と接続される。アーム駆動装置M1、M2、M3、M4、M5及びM6の動作は制御装置20によって制御される。アーム駆動装置M1、M2、M3、M4、M5及びM6はそれぞれ、電力を動力源とし、これらを駆動する電気モータとしてサーボモータMa(図6参照)を有するが、これに限定されない。なお、ロボットアーム12の関節の数量は、6つに限定されず、7つ以上又は5つ以下であってもよい。
図2は、実施の形態に係るエンドエフェクタ11の構成の一例を示す側面図である。図3は、図2のエンドエフェクタ11の力センサ11eの検出軸の一例を示す側面図である。図2に示すように、エンドエフェクタ11は、研削装置11aと、研削砥石11bと、取付具11cと、力センサ11eとを備える。取付具11cは、研削装置11aを支持し且つリンク12fと接続されるように構成され、研削装置11aをリンク12fに取り付ける。力センサ11eは、取付具11cとリンク12fとの間に配置され、取付具11cからリンク12fに作用する力である反力を検出し制御装置20に出力する。反力は、研削作業時に研削装置11aが対象物Wから受ける力である。力センサ11eは力検出部の一例である。
図3に示すように、本実施の形態では、力センサ11eは、互いに直交するXe軸、Ye軸及びZe軸それぞれの軸方向の力Fxe、Fye及びFzeと、Xe軸、Ye軸及びZe軸それぞれの軸周りの回転力であるモーメントMxe、Mye及びMzeとの6軸の力を検出する。Ze軸は、リンク12fの捻れ回転軸S6と同一の軸であり、Ze軸正方向は、リンク12fからエンドエフェクタ11に向かう方向である。リンク12fのメカニカルインタフェースを構成するインタフェース面12faとZe軸との交点が原点Oeである。Xe軸及びYe軸は、インタフェース面12fa上に沿って延びる軸である。なお、力センサ11eは上記6軸の力を検出するセンサに限定されず、例えば、上記6軸の力のうちのいくつかを検出するセンサであってもよい。
図1及び図2に示すように、撮像装置30は、ロボットアーム12のリンク12eに配置される。撮像装置30は、カメラ(図示略)を備え、被写体を照明するためのLED(light emitting diode)及びストロボ等の光源をさらに備えてもよい。撮像装置30のカメラは、捻れ回転軸S6の軸方向に沿い且つエンドエフェクタ11に向かう方向に指向され、研削対象領域WA及びその周辺を撮像することができる。なお、撮像装置30の位置は、研削対象領域WAを撮像できる位置であればよく、リンク12e以外のロボットアーム12上の位置、又は、ロボットアーム12の外部の位置であってもよい。撮像装置30は、制御装置20の指令に従って、カメラに撮像動作をさせる。撮像装置30は、カメラによって撮像された画像の信号等を制御装置20に送る。なお、以下の説明において、カメラが撮像することを、撮像装置30が撮像すると表現する場合がある。
撮像装置30のカメラは、被写体までの距離等の撮像装置30に対する被写体の3次元空間内の位置である3次元位置等を検出するための画像を撮像する。例えば、当該カメラは、デジタル画像を撮像するカメラであり、ステレオカメラ、単眼カメラ、TOFカメラ(トフカメラ:Time-of-Flight-Camera)、縞投影等のパターン光投影カメラ、又は光切断法を用いたカメラ等の構成を有してもよい。本実施の形態では、撮像装置30のカメラはステレオカメラである。
図4は、実施の形態に係る操作入力装置40の操作装置400の構成の一例を示す斜視図である。図5は、図4の操作装置400の力センサ405の検出軸の一例を示す斜視図である。図6は、実施の形態に係るロボットシステム1の機能的な構成の一例を示すブロック図である。図1、図4及び図6に示すように、操作入力装置40は、ロボット10から離れて配置され、ロボットシステム1を管理及び/又は操作するユーザPによる指令、データ及び情報等の入力を受け付け、当該指令、データ及び情報等を制御装置20に出力する。操作入力装置40は制御装置20と有線通信又は無線通信を介して接続される。有線通信及び無線通信の形式はいかなる形式であってもよい。
操作入力装置40は、操作装置400と、入力装置410と、操作制御装置420とを備える。操作制御装置420は、操作入力装置40全体の動作を制御し、制御装置20と情報、指令及びデータ等の送受信を行う。操作装置400は、ロボット10を手動運転で操作するための入力を受け付け、入力された情報である操作情報を操作制御装置420に出力する。また、操作装置400は、操作制御装置420の制御によって、操作装置400を操作しているユーザPに、操作力に対する反力等の力を与える。
入力装置410は、情報、指令及びデータ等の入力を受け付け、操作制御装置420に出力する。例えば、入力装置410は、レバー、ボタン、キー、タッチパネル、ジョイスティック、モーションキャプチャ等の既知の入力装置を備えてもよい。入力装置410は、撮像装置30の動作、エンドエフェクタ11を所定の姿勢にする指令などの様々な指令、制御モードの切り替え、研削の対象物の情報及び研削対象領域の情報等の入力を受け付ける。エンドエフェクタ11の所定の姿勢は、研削対象領域の表面に対するエンドエフェクタ11の所定の姿勢であってもよい。研削対象領域の表面に対するエンドエフェクタ11の姿勢は、研削対象領域の表面に対する研削砥石11bの姿勢である。研削対象領域の情報は、研削対象領域の数量、位置、姿勢、形状及び寸法等の情報を含んでもよい。
図4に示すように、操作装置400は、把持部401と、支持部402と、アーム403と、モータ404と、力センサ405とを備える。把持部401は、ユーザPによって把持可能であるように構成される。本実施の形態では、把持部401は、研削装置11aであるグラインダと同様の形状を有するが、これに限定されない。把持部401は、ユーザPが握ることができる2つのハンドル部401a及び401bを含む。ユーザPは、研削装置11aを把持して実際に研削するようにハンドル部401a及び401bを握った状態で把持部401を移動させることによって、ロボット10を操作し研削動作させる。また、把持部401は、研削装置11aの操作等のための押しボタン等の入力部401cを含む。把持部401は操作端の一例である。
支持部402は、把持部401を支持する。支持部402は、6つのアーム403によって移動可能に支持されている。6つのアーム403は、3つのペアで構成される。3つのペアのアーム403は、支持部402から3方向に放射状に延びる。各アーム403は、関節403aを有し、関節403aを中心に屈曲可能である。各アーム403の一端は、ボールジョイント等の自在継手を介して、直交する3軸周りに回動可能に支持部402と接続される。各アーム403の他端は、支持部402の下方の支持台406上に配置されたモータ404の回転軸と、減速機等(図示略)を介して接続される。各アーム403の関節403aは、当該アーム403を構成する2つの柱状部材を、ボールジョイント等の自在継手を介して、直交する3軸周りに回動可能に接続する。
6つのモータ404が支持台406上に配置されている。6つのモータ404は、3つのペアで構成される。各ペアのモータ404は、それぞれの回転軸が同軸となるように配置され、1つのペアのアーム403と接続される。3つのペアのモータ404は、それぞれの回転軸が三角形の各辺を構成するように配置されている。各モータ404は、サーボモータ等で構成される。
上述のような把持部401は、3次元空間内で様々な位置及び姿勢をとることができる。そして、把持部401の位置及び姿勢に対応して、各アーム403が動作し各モータ404を回転させる。把持部401の位置及び姿勢に対応する6つのモータ404の回転量つまり回転角は、一義的に定まる。
力センサ405は、把持部401と支持部402との間に配置され、この間に作用する力を検出する。図5に示すように、本実施の形態では、力センサ405は、互いに直交するXc軸、Yc軸及びZc軸それぞれの軸方向の力Fxc、Fyc及びFzcと、Xc軸、Yc軸及びZc軸それぞれの軸周りの回転力であるモーメントMxc、Myc及びMzcとの6軸の力を検出する。
Zc軸は、把持部401における力センサ405との円形接触面401dの中心を通り且つ接触面401dと垂直な軸である。Zc軸正方向は、力センサ405から把持部401に向かう方向である。接触面401dとZc軸との交点が原点Ocである。Xc軸及びYc軸は、接触面401d上に沿って延びる軸である。また、これに限定されないが、本実施の形態では、Xc軸、Yc軸及びZc軸はそれぞれ、エンドエフェクタ11の力センサ11eのXe軸、Ye軸及びZe軸と対応付けられている。例えば、Xc軸正方向はXe軸負方向に対応し、Yc軸正方向はYe軸正方向に対応し、且つZc軸正方向はZe軸負方向に対応してもよく、又は、Xc軸正方向はXe軸正方向に対応し、Yc軸正方向はYe軸正方向に対応し、且つZc軸正方向はZe軸正方向に対応してもよい。なお、力センサ405は上記6軸の力を検出するセンサに限定されず、例えば、上記6軸の力のうちのいくつかを検出するセンサであってもよい。力センサ405は操作検出部の一例であり、モータ404は力付与部の一例である。
本実施の形態では、制御装置20は、操作装置400とロボット10との間で位置、姿勢及び力の状態を対応させるようにバイラテラル方式での力覚制御を行う。これに限定されないが、各モータ404は、サーボモータの回転子の回転量を検出するエンコーダ等の回転センサ(図示略)と、サーボモータの駆動電流を検出する電流センサ(図示略)とを備える。操作制御装置420は、力センサ405の6軸の力の検出信号(以下、「力信号」とも呼ぶ)を含む操作情報を、位置、姿勢、位置及び姿勢の移動速度並びに力等を指令する操作指令として制御装置20に出力する。制御装置20は、各モータ404の回転センサ及び電流センサの検出信号(以下、「回転信号」及び「電流信号」とも呼ぶ)を、把持部401へ付与する力をモータ404に発生させるためのフィードバック情報として用いる。なお、制御装置20は、サーボモータの駆動回路が当該サーボモータに供給する電流の指令値をフィードバック情報として用いてもよい。操作指令は、操作情報の一例である。
制御装置20は、操作指令を用いて後述する動作指令等を生成する。動作指令は、操作指令に従ったエンドエフェクタ11の3次元の位置、姿勢、位置及び姿勢の移動速度並びに作用力等の指令を含む。さらに、制御装置20は、エンドエフェクタ11の力センサ11eの検出信号が示す6軸の力データと操作装置400のフィードバック情報とに基づいて、各モータ404の出力トルクを制御する。つまり、制御装置20は6つのモータ404をサーボ制御する。制御装置20は、把持部401に付与すべき力を発生させるように各モータ404の出力トルクを制御する。例えば、上記力は、ユーザPによる把持部401の操作力に対する力センサ11eの力データに対応した反力、及び、操作力に対して把持部401の位置及び/又は姿勢の移動を規制する力等である。
操作装置400の構成は、図4の構成に限定されず、例えば、ユーザPによって操作される部位の移動を制限できる構成であればよい。例えば、操作装置400の構成は、操作される部位に力を与えることで当該部位の移動を制限する構成であってもよく、当該部位の移動を機械的に制限する構成であってもよい。例えば、操作装置400は、ロボットアーム12と類似するマスタロボットで構成され、ロボット10がスレーブロボットとして制御されるように構成されてもよい。又は、操作装置400は、ジョイスティック等であってもよい。
また、操作装置400の構成は、ユーザPによって把持部401に力を加える操作が行われると、当該力に対応する操作情報を検出する構成であるが、これに限定されない。例えば、操作装置400において、力が加えられることによって移動する把持部401の位置及び姿勢の移動量が操作情報として検出されてもよい。上記移動量は各モータ404の回転量から検出されてもよい。さらに、操作情報として、把持部401に加えられる力が、各モータ404の負荷から検出されてもよい。
提示装置50は、制御装置20から受け取るロボットシステム1を動作させるための画像及び音声等を、ロボットシステム1のユーザPに提示する。提示装置50の例は、液晶ディスプレイ(Liquid Crystal Display)及び有機又は無機ELディスプレイ(Electro-Luminescence Display)等であるが、これらに限定されない。提示装置50は、音声を発するスピーカを備えてもよい。例えば、提示装置50は、撮像装置30によって撮像された画像を、操作入力装置40を操作するユーザPに提示する。
[制御装置のハードウェア構成]
制御装置20のハードウェア構成を説明する。図7は、実施の形態に係る制御装置20のハードウェア構成の一例を示すブロック図である。図7に示すように、制御装置20は、CPU(Central Processing Unit)201と、ROM(Read Only Memory)202と、RAM(Random Access Memory)203と、メモリ204と、入出力I/F(インタフェース:Interface)205及び206と、駆動I/F207及び208と、撮像I/F209とを構成要素として含む。上記構成要素はそれぞれ、バス、有線通信又は無線通信を介して接続されている。なお、上記構成要素の全てが必須ではない。
例えば、CPU201はプロセッサであり、制御装置20の動作の全体を制御する。ROM202は不揮発性半導体メモリ等で構成され、CPU201に動作を制御させるためのプログラム及びデータ等を格納する。RAM203は揮発性半導体メモリ等で構成され、CPU201で実行するプログラム及び処理途中又は処理済みのデータ等を一時的に格納する。メモリ204は、揮発性メモリ及び不揮発性メモリなどの半導体メモリ、ハードディスク(HDD:Hard Disc Drive)及びSSD(Solid State Drive)等の記憶装置で構成され、種々の情報を記憶する。
例えば、CPU201が動作するためのプログラムは、ROM202又はメモリ204に予め保持されている。CPU201は、ROM202又はメモリ204からプログラムをRAM203に読み出して展開する。CPU201は、RAM203に展開されたプログラム中のコード化された各命令を実行する。
制御装置20の各機能は、CPU201、ROM202及びRAM203等からなるコンピュータシステムにより実現されてもよく、電子回路又は集積回路等の専用のハードウェア回路により実現されてもよく、上記コンピュータシステム及びハードウェア回路の組み合わせにより実現されてもよい。
このような制御装置20は、例えば、マイクロコントローラ、MPU(Micro Processing Unit)、LSI(Large Scale Integration:大規模集積回路)、システムLSI、PLC(Programmable Logic Controller)、論理回路等で構成されてもよい。制御装置20の複数の機能は、個別に1チップ化されることで実現されてもよく、一部又は全てを含むように1チップ化されることで実現されてもよい。また、回路はそれぞれ、汎用的な回路でもよく、専用の回路でもよい。LSIとして、LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、LSI内部の回路セルの接続及び/又は設定を再構成可能なリコンフィギュラブルプロセッサ、又は、特定用途向けに複数の機能の回路が1つにまとめられたASIC(Application Specific Integrated Circuit)等が利用されてもよい。
撮像I/F209は、CPU201の指令に従って、撮像装置30のカメラの撮像素子(図示略)の駆動を制御する。撮像I/F209は、撮像装置30によって撮像された画像の信号をRAM203又はメモリ204に取り込む。撮像装置30の駆動のための回路等が、制御装置20の内部又は外部における撮像I/F209と撮像装置30との間に設けられてもよい。
第1入出力I/F205は、操作入力装置40と接続され、情報、データ及び指令等の信号を入出力する。信号を変換及び増幅等する回路等が、制御装置20の内部又は外部における第1入出力I/F205と操作入力装置40との間に設けられてもよい。
第2入出力I/F206は、提示装置50と接続され、画面データ、音声データ、情報及び指令等の信号を入出力する。信号を変換及び増幅等する回路等が、制御装置20の内部又は外部における第2入出力I/F206と提示装置50との間に設けられてもよい。
第1駆動I/F207は、ロボット10のアーム駆動装置M1、M2、M3、M4、M5及びM6と接続され、情報及び指令等の信号を入出力する。アーム駆動回路(図示略)が、制御装置20の内部又は外部における第1駆動I/F207とアーム駆動装置M1、M2、M3、M4、M5及びM6との間に設けられる。アーム駆動回路は、CPU201の指令に従って、アーム駆動装置M1、M2、M3、M4、M5及びM6のサーボモータに電力を供給し各サーボモータの駆動を制御する。
第2駆動I/F208は、エンドエフェクタ11の研削装置11aと接続され、情報及び指令等の信号を入出力する。研削駆動回路(図示略)が、制御装置20の内部又は外部における第2駆動I/F208と研削装置11aとの間に設けられる。研削駆動回路は、CPU201の指令に従って、研削装置11aに電力を供給し研削装置11aの駆動を制御する。
[ロボットシステムの機能的構成]
ロボットシステム1の機能的構成を説明する。図6に示すように、操作入力装置40の操作制御装置420は、入力処理部421と動作制御部422とを機能的構成要素として含む。制御装置20は、撮像制御部20aと、画像処理部20b及び20cと、動作指令部20d及び20eと、動作制御部20fと、動作情報処理部20gと、姿勢決定部20hと、回避判定部20iと、回避経路決定部20jと、記憶部20pとを機能的構成要素として含む。上記機能的構成要素の全てが必須ではない。
操作制御装置420の入力処理部421及び動作制御部422の機能は、CPU等のコンピュータシステム、ハードウェア回路、又は、コンピュータシステム及びハードウェア回路の組み合わせによって実現される。制御装置20の記憶部20pを除く機能的構成要素の機能は、CPU201等によって実現され、記憶部20pの機能は、メモリ204、ROM202及び/又はRAM203によって実現される。
操作制御装置420の入力処理部421は、入力装置410、力センサ405及びモータ404から受け取る情報、データ及び指令等を制御装置20に出力する。例えば、入力処理部421は、入力装置410から、撮像装置30の動作の指令、所定の姿勢への移行の指令、制御モードの切り替えの指令、研削の対象物の情報及び研削対象領域の情報等を受け取る。
撮像装置30の動作の指令は、撮像開始、撮像終了及び撮像タイミングの指令等を含む。所定の姿勢への移行の指令は、エンドエフェクタ11及び研削装置11aの姿勢を予め設定された姿勢に移行させる指令である。所定の姿勢の例は、研削動作のための基本姿勢等である。制御モードの切り替えの指令の例は、エンドエフェクタ11及び操作装置400の把持部401の移動の少なくとも一部を規制する規制モードと、上記規制をしない非規制モードとを切り替える指令等である。
また、入力処理部421は、力センサ405の力信号から6軸の力の検出値を検出する。さらに、入力処理部421は、6軸の力の検出値、又は、6軸の力の検出値の演算処理値を制御装置20に出力する。例えば、入力処理部421は、6軸の力の検出値を演算処理することで、エンドエフェクタ11に対する操作指令を生成し制御装置20に出力する。操作指令は、エンドエフェクタ11の位置の変化量、変化方向及び変化速度、並びに、姿勢の変化量、変化方向及び変化速度等を指令する操作位置指令と、エンドエフェクタ11が対象物に加える作用力の大きさ及び方向等を指令する操作力指令とを含む。
また、入力処理部421は、各モータ404から回転センサ及び電流センサの検出信号を受け取り、当該検出信号から各モータ404の回転量及び電流値を検出し、フィードバック情報として制御装置20に出力する。
動作制御部422は、各モータ404の駆動を制御する。具体的には、動作制御部422は、制御装置20の第2動作指令部20eから、操作駆動指令及び/又は操作規制指令を含む動作指令を受け取る。動作制御部422は、上記動作指令に従って、各モータ404に回転負荷(「負荷トルク」とも呼ばれる)等のトルクを発生させる。この回転負荷は、ユーザPが把持部401に与える操作力に対抗する力として作用する。動作制御部422は、各モータ404で検出される回転量及び電流値をフィードバック情報として用いて、各モータ404のトルクを制御する。
操作駆動指令は、エンドエフェクタ11が研削の対象物から受ける反力の大きさ及び方向に対応する反力を把持部401に与えるための指令を含む。上記反力の大きさ及び方向は、力センサ11eで検出される力の大きさ及び方向に対応する。また、操作駆動指令は、把持部401の位置及び姿勢をエンドエフェクタ11の位置及び姿勢に対応させるように把持部401を移動させるための力を把持部401に与えるための指令を含む。動作制御部422は、操作駆動指令に従った大きさ及び方向の力を把持部401に与えるように各モータ404に駆動させるための制御指令を生成し、当該モータ404に出力する。これにより、ユーザPは、例えば、対象物から反力を受けているように把持部401から反力を感じつつ把持部401を操作する。また、把持部401の位置及び姿勢がエンドエフェクタ11の位置及び姿勢と対応するように、モータ404が把持部401を移動させる。
操作規制指令は、規制モードにおいて把持部401の移動の少なくとも一部を規制する規制力を把持部401に与えるための指令である。上記規制力は、記憶部20pに記憶される規制条件20pbに従った規制力であり、把持部401の位置の移動及び姿勢の移動の少なくとも一部を制限する力の大きさ及び方向を含む。例えば、上記規制力は、規制条件20pbで規制されるエンドエフェクタ11の位置及び姿勢の移動に対応する把持部401の位置及び姿勢の移動量を0(零)にするための力の大きさ及び方向を含む。動作制御部422は、操作規制指令に従った大きさ及び方向の規制力を把持部401に与えるように各モータ404に駆動させるための制御指令を生成し、当該モータ404に出力する。これにより、ユーザPは、例えば、上記移動をさせないような規制を把持部401に受けているように感じつつ、把持部401を操作する。さらに、規制力は、ユーザPが把持部401に上記移動をさせる操作力を与えても把持部401に上記移動をさせないようにすることも可能である。
なお、操作規制指令の規制力の大きさは、予め決められた大きさであってもよく、動作制御部422が、力センサ405の検出値に対応して上記規制力を調節してもよい。例えば、動作制御部422は、ユーザPが把持部401に与える操作力に対応して、規制された移動方向への力センサ405の検出値以上の大きさに規制力の大きさを調節してもよい。
制御装置20の記憶部20pは、種々の情報を記憶し、記憶している情報の読み出しを可能にする。例えば、記憶部20pは、操作入力装置40の入力装置410を介して入力される情報等を記憶する。また、記憶部20pは、画像処理に用いられる情報として、撮像装置30のカメラの外部パラメタと内部パラメタと含むカメラパラメタを記憶する。外部パラメタの例は、カメラの位置(3次元位置)及び向き(光軸中心の向き)等を示すパラメタである。内部パラメタの例は、カメラのレンズの歪み、焦点距離、撮像素子の1画素のサイズ及び光軸中心の画素座標等を示すパラメタである。また、記憶部20pは、ロボット10によって研削処理される対象物と当該対象物の研削対象領域の位置、形状及び寸法等とを関連付けて記憶してもよい。また、記憶部20pは、撮像装置30によって撮像された画像データ、当該画像データの処理画像データ及び/又はプログラム等を記憶してもよい。また、記憶部20pは、姿勢情報20paと、規制条件20pbと、回避情報20pcとを記憶する。
規制条件20pbは、エンドエフェクタ11の位置及び姿勢の移動の少なくとも一部を規制するための情報である。具体的には、規制条件20pbは、位置の移動方向及び姿勢の移動方向のうちの少なくとも1つの方向へエンドエフェクタ11を移動させないように、エンドエフェクタ11の移動を制限するための情報を含む。本実施の形態では、規制条件20pbは、エンドエフェクタ11の姿勢の移動のみを規制するが、規制条件20pbは、位置の移動のみを規制してもよく、位置及び姿勢の両方の移動を規制してもよい。規制条件20pbは、操作制御装置420の操作指令の操作位置指令に対して制限を加えるための情報であってもよく、操作指令に基づき第1動作指令部20dによって生成されるエンドエフェクタ11の動作指令の位置指令に対して制限を加えるための情報であってもよい。
ここで、エンドエフェクタ11の動作指令は、位置指令及び力指令の少なくとも位置指令を含み、本実施の形態では、両方を含む。位置指令は、エンドエフェクタ11の位置を表す。力指令は、エンドエフェクタ11が対象物に加える力を表す。位置指令は、エンドエフェクタ11の3次元位置及び3次元姿勢の指令を含んでもよい。さらに、位置指令は、3次元位置及び3次元姿勢の指令の実行時刻を含んでもよい。力指令は、力の大きさ及び力の方向の指令を含んでもよい。さらに、力指令は、力の大きさ及び方向の指令の実行時刻を含んでもよい。本明細書及び請求の範囲において、「力」とは、力の大きさ及び方向のうちの少なくとも力の大きさを含み、「位置」とは、3次元位置及び3次元姿勢のうちの少なくとも3次元位置を含み得ることを意味する。
3次元位置及び3次元姿勢は、3次元空間内での位置及び姿勢である。3次元位置及び3次元姿勢は、ワールド座標系及びロボット座標系等を用いて定義されてもよい。ワールド座標系は、ロボット10が配置される空間に設定される座標系である。ロボット座標系は、ロボット10を基準とする座標系であり、例えば、ロボットアーム12が据え付けられる基台13を基準とする座標系であってもよい。本実施の形態では、ロボットアーム12が固定されているため、ワールド座標系とロボット座標系とは同じであるとして設定される。
例えば、エンドエフェクタ11の姿勢の移動を規制する規制条件20pbは、操作位置指令及び位置指令に含まれる姿勢の変位及び移動速度等の指令に対して制限する情報を含んでもよい。例えば、規制条件20pbは、力センサ11e及び405の3軸周りの力のモーメントに対応する3軸周りの回転変位及び回転速度等を、0(零)等の制限値に制限する情報を含んでもよい。これに限定されないが、本実施の形態では、規制条件20pbは、力センサ11eのXe軸及びYe軸の各軸周りの回転変位及び回転速度等、又は、Xe軸、Ye軸及びZe軸の各軸周りの回転変位及び回転速度等を制限する。又は、規制条件20pbは、力センサ405のXc軸及びYc軸の各軸周りの回転変位及び回転速度等、又は、Xc軸、Yc軸及びZc軸の各軸周りの回転変位及び回転速度等を制限する。
例えば、Xe軸及びXc軸周りの回転移動はそれぞれ、エンドエフェクタ11及び把持部401のピッチング方向の移動に対応する。Ye軸及びYc軸周りの回転移動はそれぞれ、エンドエフェクタ11及び把持部401のローリング方向の移動に対応する。Ze軸及びZc軸周りの回転移動はエンドエフェクタ11及び把持部401のヨーイング方向の移動に対応する。
例えば、エンドエフェクタ11の位置の移動を規制する規制条件20pbは、操作位置指令及び位置指令に含まれる位置の変位及び移動速度等の指令に対して制限する情報を含んでもよい。例えば、規制条件20pbは、力センサ11e及び405の3軸方向の力に対応する3軸方向の位置の変位及び移動速度等を、0等の制限値に制限する情報を含んでもよい。例えば、エンドエフェクタ11の移動方向に直交する方向のエンドエフェクタ11の位置の移動が規制される場合、規制条件20pbは、3軸方向の位置の変位及び移動速度等のうち、上記移動方向に直交する方向の成分を0等の制限値に制限する情報を含んでもよい。なお、エンドエフェクタ11の移動方向は、エンドエフェクタ11の軌跡の近似直線の方向、及びエンドエフェクタ11の軌跡の接線の方向等の、研削作業中にエンドエフェクタ11が移動される方向であってもよい。
姿勢情報20paは、エンドエフェクタ11に設定された所定の姿勢の情報である。制御装置20は、操作入力装置40に入力される移行指令に対応して、エンドエフェクタ11の姿勢を所定の姿勢に移行させる。本実施の形態では、所定の姿勢は、研削作業時のエンドエフェクタ11の基本的な姿勢である基本姿勢として設定される。以下において、所定の姿勢を基本姿勢とも表記する。基本姿勢は、研削作業時のエンドエフェクタ11の好ましい姿勢でもある。基本姿勢は、ロボット10に対する姿勢、及び研削対象領域WAの表面に対する姿勢等として設定されてもよい。本実施の形態では、基本姿勢は、研削対象領域WAの表面に対する姿勢として設定される。
回避情報20pcは、移行指令に従ったエンドエフェクタ11の姿勢の移行に支障が生じたときにエンドエフェクタ11の位置を移動させるための情報である。例えば、上記支障は、エンドエフェクタ11が他の物体と接触又は衝突等することにより基本姿勢に移行できないことである。上記支障は、制御装置20によって、移行中の力センサ11eの検出値に基づき検出される。回避情報20pcは、力センサ11eによって検出される反力の方向と反対の方向以外の方向への所定の距離での位置の移動を指令する情報であってもよい。又は、回避情報20pcは、例えばZe軸負方向等の予め決められた方向及び距離での位置の移動を指令する情報であってもよい。
撮像制御部20aは、撮像装置30の動作を制御し、撮像装置30によって撮像された画像データを取得する。撮像制御部20aは、ステレオカメラを備える撮像装置30によって同時刻に撮像された2つの画像データを対応付けて画像処理部20b及び20c等に出力する。撮像装置30によって画像を撮像すること、及び、撮像装置30によって撮像された画像データを取得することは、撮像装置30によって撮像された1つの静止画像データを取得すること、及び、撮像装置30によって撮像された動画データから1フレームの静止画像データを取得することを含む。
第1画像処理部20bは、撮像制御部20aから取得された画像データを処理することで、当該画像データに写し出される被写体の各位置の3次元位置を検出し、各位置の3次元位置を表す画像データである3次元画像データを生成する。具体的には、第1画像処理部20bは、撮像装置30によって同時刻に撮像された2つの画像データそれぞれに写し出される研削対象領域WAを特定する。例えば、第1画像処理部20bは、記憶部20pに記憶される研削対象領域WAの形状とのパターンマッチング手法等で比較することにより、各画像データにおいて研削対象領域WAのエッジを抽出してもよい。さらに、第1画像処理部20bは、記憶部20pに記憶されるカメラパラメタを用いたステレオマッチング手法等で画像処理することにより、当該2つの画像データの少なくとも一方の研削対象領域WA内において、少なくとも3つの画素に写し出される被写体と撮像装置30との距離を検出する。さらに、第1画像処理部20bは、距離が検出された各画素に写し出される被写体について、ロボットシステム1が存在する3次元空間内での3次元位置を検出する。
さらに、第1画像処理部20bは、研削対象領域WAの少なくとも3つの画素の3次元位置を用いて、当該3次元位置が3次元空間内で形成する平面を研削対象領域WAの表面として検出する。なお、上記平面の検出方法は、既知のいかなる方法であってもよい。例えば、第1画像処理部20bは、少なくとも3つの画素の3次元位置を通る平面を研削対象領域WAの表面として検出してもよい。又は、第1画像処理部20bは、少なくとも3つの画素の3次元位置又はその近傍を通る平面、つまり、少なくとも3つの上記3次元位置に近似する平面を研削対象領域WAの表面として検出してもよい。又は、第1画像処理部20bは、少なくとも3つの画素の3次元位置を通る曲面を検出し、当該曲面の法線に垂直であり且つ当該曲面と交点を有する平面を研削対象領域WAの表面として検出してもよい。第1画像処理部20bは、研削対象領域WAの表面の3次元位置及び3次元姿勢等の情報を姿勢決定部20h及び記憶部20p等に出力する。
第2画像処理部20cは、撮像制御部20aから取得された画像データを提示装置50に出力し表示させる。第2画像処理部20cは、第1画像処理部20bから処理済みの画像データを取得し、研削対象領域WAの3次元形状を表す画像データを提示装置50に出力してもよい。例えば、上記画像データは、各画素の画素値が撮像装置30から被写体までの距離値である距離画像等であってもよい。距離値は、画素の濃淡又は色で表されてもよい。
姿勢決定部20hは、操作入力装置40に入力される姿勢の移行指令に対応して、エンドエフェクタ11に移行させる基本姿勢を決定する。姿勢決定部20hは、操作入力装置40からエンドエフェクタ11の姿勢の移行指令を受け取ると、第1画像処理部20bに研削対象領域WAの表面の情報を要求する。第1画像処理部20bは、撮像制御部20aに研削対象領域WAの撮像を要求し、撮像制御部20aから受け取る画像データを画像処理することで、研削対象領域WAの表面の3次元位置及び3次元姿勢等の情報を検出し、姿勢決定部20hに出力する。姿勢決定部20hは、記憶部20pから姿勢情報20paを読み出し、姿勢情報20paと研削対象領域WAの表面の情報とを用いて、研削対象領域WAの表面に対するエンドエフェクタ11の基本姿勢の情報を検出する。姿勢決定部20hは、各座標軸周りの姿勢角等の基本姿勢の情報を第1動作指令部20dに出力する。
なお、姿勢情報20paが研削対象領域WAの表面に対する基本姿勢の情報ではなく、ロボット10に対する基本姿勢の情報を含む場合、姿勢決定部20hは、姿勢情報20paに含まれる基本姿勢の情報を、エンドエフェクタ11の基本姿勢の情報に決定する。
第1動作指令部20dは、エンドエフェクタ11に目的とする動作をさせるための動作指令を生成し、動作制御部20fに出力する。動作指令は、研削装置11aを動作させるための指令を含んでもよい。第1動作指令部20dは第1指令部の一例である。
例えば、第1動作指令部20dは、操作入力装置40から受け取る操作指令に対応する動作をエンドエフェクタ11にさせるための動作指令を生成する。さらに、第1動作指令部20dは、規制モードでは、記憶部20pの規制条件20pbを動作指令に適用し、規制条件が反映された動作指令を生成する。第1動作指令部20dは、規制条件が反映された動作指令及び/又は規制条件20pbを、第2動作指令部20eにも出力してもよい。また、第1動作指令部20dは、操作入力装置40から受け取る移行指令に従って基本姿勢にエンドエフェクタ11の姿勢を移動させるための動作指令を生成する。また、第1動作指令部20dは、回避経路決定部20jから受け取る回避経路に沿ってエンドエフェクタ11の位置を移動させるための動作指令を生成する。
例えば、非規制モードでは、第1動作指令部20dは、操作指令に含まれる操作位置指令及び操作力指令を、ロボット座標系での位置指令及び力指令に変換し、当該位置指令及び力指令を含む動作指令を生成する。規制モードでは、第1動作指令部20dは、規制条件20pbを適用することで操作位置指令を処理し、処理後の操作位置指令と操作力指令とを用いて動作指令を生成し出力してもよい。又は、第1動作指令部20dは、操作位置指令と操作力指令とを用いて動作指令を生成し、規制条件20pbを適用することで当該動作指令を処理し、処理後の動作指令を出力してもよい。
動作制御部20fは、第1動作指令部20dから受け取る動作指令に従ってロボット10の各部を動作させるための制御指令を生成し、ロボット10に出力する。動作制御部20fは、ロボット10の各部の動作状態の情報を動作情報処理部20gから取得し、当該情報をフィードバック情報として用いて制御指令を生成する。具体的には、動作制御部20fは、ロボットアーム12のアーム駆動装置M1、M2、M3、M4、M5及びM6のサーボモータMaとエンドエフェクタ11の研削装置11aのモータ(図示略)とを動作させるための制御指令を生成する。
動作情報処理部20gは、ロボット10の動作情報を検出し処理する。動作情報処理部20gは、研削装置11aの通電状態等に基づき研削装置11aのON状態及びOFF状態を動作情報として検出する。動作情報処理部20gは、アーム駆動装置M1、M2、M3、M4、M5及びM6それぞれのサーボモータMaの回転センサMbの検出値と、当該サーボモータMaの電流センサMcの検出値と、エンドエフェクタ11の力センサ11eの検出値とを動作情報として取得する。なお、動作情報処理部20gは、サーボモータMaの駆動回路が当該サーボモータMaに供給する電流の指令値を動作情報として取得してもよい。動作情報処理部20gは、上記動作情報をフィードバック情報として動作制御部20f及び第2動作指令部20eに出力する。例えば、動作情報において、アーム駆動装置M1、M2、M3、M4、M5及びM6のサーボモータMaの回転センサMbの検出値、及び、サーボモータMaの電流センサMcの検出値は、エンドエフェクタ11の位置及び姿勢の変位及び変位速度を示す位置データであり、力センサ11eの検出値は、エンドエフェクタ11が受ける反力の大きさ及び方向を示す力データである。
第2動作指令部20eは、操作装置400の把持部401への力の付与、及び、把持部401の位置及び姿勢の移動等のための動作指令であるモータ動作指令を生成し操作入力装置40に出力する。モータ動作指令は、操作駆動指令及び/又は操作規制指令を含む。第2動作指令部20eは第2指令部の一例である。
例えば、第2動作指令部20eは、動作情報処理部20gから受け取る動作情報の力データに基づき、力センサ11eによって検出された力の大きさ及び方向に対応する反力を把持部401に与えるための操作駆動指令を含むモータ動作指令を生成する。
また、第2動作指令部20eは、動作情報処理部20gから受け取る動作情報の位置データと操作入力装置40から受け取る把持部401の動作情報の位置データとを用いて、把持部401の位置及び姿勢をエンドエフェクタ11の位置及び姿勢に対応させるように把持部401を移動させるための操作駆動指令を含むモータ動作指令を生成する。操作駆動指令は、把持部401に対する位置指令及び力指令の少なくとも1つを含んでもよい。これにより、操作装置400のモータ404は、非規制モードで規制を受けずに動作するエンドエフェクタ11の位置及び姿勢、規制モードでの規制を受けて動作するエンドエフェクタ11の位置及び姿勢、移行指令に従って動作するエンドエフェクタ11の位置及び姿勢、並びに、回避経路に沿って動作するエンドエフェクタ11の位置及び姿勢等と、把持部401の位置及び姿勢とを対応させるように、把持部401を移動させることができる。
例えば、把持部401の動作情報において、モータ404の回転センサ(図示略)の検出値は、把持部401の位置及び姿勢の変位及び変位速度を示す位置データであり、力センサ405の検出値は、把持部401に作用する力の大きさ及び方向を示す力データである。
また、第2動作指令部20eは、規制モードにおいて、規制条件20pbによって制限された方向へのエンドエフェクタ11の移動を指令する把持部401への力の入力に対抗する力を把持部401に与えるための操作規制指令を含むモータ動作指令を生成する。例えば、上記の対抗する力は、規制条件20pbで規制されるエンドエフェクタ11の位置及び姿勢の移動に対応する把持部401の位置及び姿勢の移動量を0(零)にするための力の大きさ及び方向を含んでもよい。操作規制指令は、把持部401に対する位置指令及び力指令の少なくとも1つを含んでもよい。
第2動作指令部20eは、操作入力装置40から受け取る力センサ405の検出値と、規制条件20pb及び/又は規制条件20pbが反映された動作指令とを用いて、上記モータ動作指令を生成してもよい。これにより、操作装置400のモータ404は、規制条件20pbによって制限された方向への把持部401の移動を阻止する力を把持部401に与えることができる。よって、規制条件20pbに従って動作するエンドエフェクタ11の位置及び姿勢と、把持部401の位置及び姿勢とが同様の挙動を示すことができる。
回避判定部20iは、エンドエフェクタ11の基本姿勢への移行中、エンドエフェクタ11の位置を移動させる回避が必要であるか否かを判定し、判定結果を回避経路決定部20jに出力する。回避判定部20iは、エンドエフェクタ11の基本姿勢への移行中、力センサ11eが閾値よりも大きい力、つまり閾値超の力の入力を検出すると、回避が必要であると決定する。この場合、回避判定部20iは、回避を実行する指令と、力センサ11eによって検出された閾値超の力の方向とを回避経路決定部20jに出力する。閾値は、ロボットシステム1の作業環境、要求される力の検知感度及び対象物の種類等の様々な条件に対応して設定されてもよく、例えば、0以上の値で設定されてもよい。例えば、閾値は、エンドエフェクタ11の基本姿勢への移行を妨げるような力の大きさであってもよい。例えば、閾値は、エンドエフェクタ11と物体との接触を表すような力の大きさであってもよい。
回避経路決定部20jは、エンドエフェクタ11を回避させるための回避経路を決定し、第1動作指令部20dに出力する。具体的には、回避経路決定部20jは、回避判定部20iから回避の実行指令を受け取ると、記憶部20pから回避情報20pcを読み出す。さらに、回避経路決定部20jは、回避判定部20iから受け取った力の方向を回避情報20pcに適用することによって、当該力の入力を回避するためのエンドエフェクタ11の位置の移動方向及び移動距離を含む回避経路を決定する。
[ロボットシステムの動作]
[非規制モードでの操作入力装置の操作によるロボットの動作]
非規制モードでの操作入力装置40の操作装置400の操作によるロボット10の動作を説明する。図1、図4及び図6に示すように、例えば、ユーザPは、把持部401のハンドル部401a及び401bを握り、エンドエフェクタ11の研削装置11aの目的の位置への移動方向及び目的の姿勢への回動方向へ、把持部401を移動させ姿勢を変える。また、ユーザPは把持部401の入力部401cへの入力を与えることで、研削装置11aを起動させる。
支持部402は、把持部401と一緒に移動し且つ姿勢を変え、6つのアーム403それぞれに屈曲及び姿勢変化等の動作をさせ、当該アーム403と接続されたモータ404の回転軸を回転させる。操作制御装置420は、当該モータ404の回転センサの回転信号及び力センサ405の力信号に基づく操作指令を制御装置20に出力する。
制御装置20は、操作指令に基づき動作指令を生成し、当該動作指令に従ってロボット10を動作させる。制御装置20は、エンドエフェクタ11の位置の変化、姿勢の変化及び研削装置11aを介した対象物Wへの作用力が上記力信号を反映するように、ロボットアーム12を動作させる。これにより、ユーザPは、操作装置400の把持部401を操作して、ロボット10に意図する動作をさせることができる。
さらに、制御装置20は、エンドエフェクタ11の力センサ11eの検出信号に基づく力データに対応する反力を把持部401に与えるために、当該反力に対応する負荷トルクを各モータ404に発生させる。これにより、ユーザPは、例えば、対象物Wから反力を受けているように把持部401から反力を感じつつ、把持部401の位置及び姿勢を操作することができる。
把持部401の反力は、力センサ11eによって検出される力の大きさ及び方向を反映する。このような把持部401の反力は、対象物Wの表面状態に応じて異なる研削中の研削装置11aの状態を、ユーザPの手に感じさせることができる。例えば、把持部401の反力は、ユーザPが研削装置11aを手持ちし研削する場合にユーザPの手が受ける感触を、ユーザPの手に感じさせることができる。
また、力センサ405の力信号が示す位置の変化量、姿勢の変化量及び力の大きさ等の指令に対して、エンドエフェクタ11の位置の変化量、姿勢の変化量及び作用力の大きさ等の指令は、割り増しされる。これにより、ロボットアーム12は、把持部401の可動範囲を大きく超えてエンドエフェクタ11の位置及び姿勢を変えることができる。さらに、エンドエフェクタ11は、把持部401に加えられる力を大きく超えた作用力を発生させることができる。
[規制モードでの動作]
規制モードでのロボットシステム1の動作の一例を説明する。本例では、規制モードにおいて、エンドエフェクタ11のXe軸、Ye軸及びZe軸の各軸周りの回転変位が制限され、操作装置400の把持部401のXc軸、Yc軸及びZc軸の各軸周りの回転変位が制限されるものとする。図8は、実施の形態に係るロボットシステム1の規制モードでの動作の一例を示すフローチャートである。
図8に示すように、ステップS101において、ユーザPは、操作装置400を操作することによって、エンドエフェクタ11の研削装置11aの研削砥石11bの姿勢を、研削対象領域WAの表面に対して所望の姿勢に移行させる。ユーザPによる所望の姿勢への移行は、研削作業開始前であってもよく、研削作業中であってもよい。所望の姿勢への移行は、移行指令に従った基本姿勢への移行であってもよい。なお、研削砥石11bの姿勢が既に所望の姿勢である場合、本ステップの処理は省略されてもよい。
次いで、ステップS102において、ユーザPは、操作入力装置40の入力装置410に、規制モードを実行する指令を入力し、操作入力装置40の操作制御装置420は当該指令を受け付け制御装置20に出力する。
次いで、ステップS103において、制御装置20は、規制モードでの制御を開始し実行する。具体的には、制御装置20は、エンドエフェクタ11の現状の姿勢である第1設定姿勢に対するXe軸、Ye軸及びZe軸の各軸周りのエンドエフェクタ11の回転変位を制限し、把持部401の現状の姿勢である第2設定姿勢に対するXc軸、Yc軸及びZc軸の各軸周りの把持部401の回転変位を制限するように制御を行う。
次いで、ステップS104において、ユーザPによって操作装置400の把持部401に操作が入力されると、操作制御装置420は、入力された操作に対応する力センサ405の力信号に基づき操作指令を生成し制御装置20に出力する。
次いで、ステップS105において、制御装置20は、記憶部20pの規制条件20pbと操作指令とを用いて、規制条件20pbが反映された動作指令する。例えば、制御装置20は、操作指令においてXc軸、Yc軸及びZc軸の各軸周りのモーメントに対応する指令値を0にする処理、又は、操作指令を用いて生成された動作指令においてXe軸、Ye軸及びZe軸の各軸周りのモーメントに対応する指令値を0にする処理を行う。
次いで、ステップS106において、制御装置20は、動作指令に従ってロボット10の各部を動作させるための制御指令を生成し、ロボット10に出力する。次いで、ステップS107において、ロボットアーム12は、第1設定姿勢からのエンドエフェクタ11の姿勢の変化を制限しつつ、操作指令に従ってエンドエフェクタ11の位置を移動させる。つまり、ロボットアーム12は、規制条件20pbに従って制限された動作を行う。
さらに、ステップS108において、制御装置20は、規制条件20pbと力センサ405の検出値とに基づき、力センサ405の各軸周りのモーメントの検出値に対抗するモーメントを把持部401に与えるためのモータ動作指令を生成し、操作入力装置40に出力する。モータ動作指令は、ユーザPによって把持部401に入力される各軸周りのモーメントを打ち消すモーメントを把持部401に与えるように、操作入力装置40のモータ404を駆動させるための指令である。つまり、制御装置20は、規制条件20pbに従って把持部401の動作を制限するためのモータ動作指令を出力する。
次いで、ステップS109において、操作制御装置420は、モータ動作指令に従って各モータ404を駆動させることで把持部401に力を付与し、力センサ405の各軸周りの把持部401の回転変位を制限する。つまり、操作制御装置420は、各モータ404の駆動力により把持部401の動作を制限する。
次いで、ステップS110において、制御装置20は、入力装置410を介して規制モードを終了する指令を受け付けたか否かを判定し、受け付けた場合(ステップS110でYes)に一連の処理を終了し、受け付けていない場合(ステップS110でNo)にステップS104に戻る。
ステップS101からステップS110の処理により、制御装置20は、エンドエフェクタ11の姿勢と把持部401の姿勢とを同一の所望の姿勢に維持しつつ、把持部401に入力される操作に従ってエンドエフェクタ11を動作させる。
[エンドエフェクタの基本姿勢への移行動作]
ロボットシステム1におけるエンドエフェクタ11の姿勢を基本姿勢に移行させる動作の一例を説明する。図9は、実施の形態に係るロボットシステム1のエンドエフェクタ11を基本姿勢に移行させる動作の一例を示すフローチャートである。
図9に示すように、ステップS201において、ユーザPは、操作入力装置40の入力装置410に、エンドエフェクタ11を基本姿勢へ移行する指令を入力し、操作制御装置420は当該指令を受け付け制御装置20に出力する。
次いで、ステップS202において、ユーザPは、操作装置400を操作することによって、エンドエフェクタ11を研削対象領域WAに対する所望の位置に移動させる。なお、エンドエフェクタ11の位置が既に所望の位置である場合、本ステップの処理は省略されてもよい。
次いで、ステップS203において、ユーザPは、入力装置410に撮像実行の指令を入力し、操作制御装置420は当該指令を受け付け制御装置20に出力する。
次いで、ステップS204において、制御装置20は、撮像装置30に研削対象領域WAを撮像させる。次いで、ステップS205において、制御装置20は、研削対象領域WAの画像データを処理することで、当該画像データの3次元画像データを生成する。次いで、ステップS206において、制御装置20は、3次元画像データを用いて、研削対象領域WAの表面の姿勢を検出する。次いで、ステップS207において、制御装置20は、記憶部20pの姿勢情報20paと研削対象領域WAの表面の姿勢の情報とを用いて、エンドエフェクタ11の基本姿勢を決定する。
次いで、ステップS208において、制御装置20は、エンドエフェクタ11の姿勢を基本姿勢に移行させるように、ロボットアーム12を動作させる。つまり、制御装置20は基本姿勢への移行を実行する。
次いで、ステップS209において、制御装置20は、力センサ11eによって閾値超の力が検出されたか否かを判定し、検出された場合(ステップS209でYes)にステップS210に進み、検出されない場合(ステップS209でNo)にステップS212に進む。例えば、図10に示すように、閾値超の力が検出された場合、エンドエフェクタ11が他の物体Aと接触又は衝突することにより移行の支障が発生した可能性がある。図10は、エンドエフェクタ11の基本姿勢への移行中における移行の支障の発生例を示す側面図である。図10では、実線で示されるように研削砥石11bが鉛直面と平行であるエンドエフェクタ11の姿勢が、研削砥石11bが鉛直面に対し斜めに傾斜する基本姿勢に移行される途中で、破線で示されるようにエンドエフェクタ11が物体Aと衝突する。
ステップS210において、制御装置20は、姿勢の移行を停止し、さらに、記憶部20pの回避情報と力センサ11eによって検出された閾値超の力の方向とを用いて、エンドエフェクタ11の回避経路を決定する。本例では、回避経路は、閾値超の力の方向への所定の距離の経路である。図10では、回避経路は、力センサ11eによって検出される閾値超の力Frの方向への所定の距離の経路である。
次いで、ステップS211において、制御装置20は、回避経路に沿ってエンドエフェクタ11を移動させるように、ロボットアーム12を動作させ、ステップS209に進む。つまり、制御装置20はエンドエフェクタ11の回避を実行する。例えば、図11に示すように、制御装置20は、エンドエフェクタ11を力Frの方向へ所定の距離だけ移動させる。図11は、エンドエフェクタ11の基本姿勢への移行中における回避動作の例を示す側面図である。図11では、実線で示される図10の状態で停止したエンドエフェクタ11が、破線で示されるように回避経路に沿って移動される。
ステップS212において、制御装置20は、基本姿勢への移行が完了したか否かを判定し、完了済みの場合(ステップS212でYes)に一連の処理を終了し、未完了の場合(ステップS212でNo)にステップS208に戻る。例えば、図11では、ステップS211の回避完了後、基本姿勢への移行が完了していないため、ステップS208以降の基本姿勢への移行の処理が繰り返される。
ステップS201からステップS212の処理により、制御装置20は、他の物体との接触及び衝突等の支障の発生に対応して、エンドエフェクタ11を基本姿勢に移行させることができる。さらに、制御装置20は、回避経路に沿ったエンドエフェクタ11の移動中に力センサ11eによって閾値超の力が検出されると、当該力の方向に対応して回避経路を再設定することができる。また、制御装置20は、研削対象領域WAの表面の姿勢を検出することで、研削対象領域WAの表面の様々な姿勢に対応した基本姿勢への移行を可能にする。
なお、ステップS201からステップS212の処理では、制御装置20は、回避経路に沿ったエンドエフェクタ11の移動と、基本姿勢へのエンドエフェクタ11の姿勢の移行とを別々に実行する。具体的には、制御装置20は、回避経路に沿ったエンドエフェクタ11の移動完了後に、基本姿勢へのエンドエフェクタ11の姿勢の移行を再開する。しかしながら、エンドエフェクタ11の回避動作は上記に限定されない。例えば、制御装置20は、回避経路に沿ったエンドエフェクタ11の移動中に、基本姿勢へのエンドエフェクタ11の姿勢の移行を再開し、2つの動作を並行して行ってもよい。又は、制御装置20は、回避経路に沿ったエンドエフェクタ11の移動と、基本姿勢へのエンドエフェクタ11の姿勢の移行の再開とを同時に開始し、2つの動作を並行して行ってもよい。さらに、制御装置20は、並行した動作中に力センサ11eによって閾値超の力が検出されると、当該力の方向に対応して回避経路を再設定してもよい。
(その他の実施の形態)
以上、本開示の実施の形態の例について説明したが、本開示は、上記実施の形態に限定されない。すなわち、本開示の範囲内で種々の変形及び改良が可能である。例えば、各種変形を実施の形態に施したもの、及び、異なる実施の形態における構成要素を組み合わせて構築される形態も、本開示の範囲内に含まれる。
例えば、実施の形態において、制御装置20は、撮像装置30によって撮像された画像を処理することで、基本姿勢を決定するための研削対象領域WAの表面の姿勢を検出するが、これに限定されない。上記表面の姿勢は、対象物までの距離を検出することができる装置を用いて検出することができる。例えば、このような装置は、光波、レーザ又は超音波等を用いて距離を検出するセンサであってもよい。
また、実施の形態では、本開示の技術が適用可能である機械装置として、産業用ロボットであるロボット10が例示されているが、本開示の技術が適用可能である機械装置は、産業用ロボット以外の機械装置であってもよい。例えば、当該機械装置は、サービスロボット、建設機械、トンネル掘削機、クレーン、荷役搬送車、及びヒューマノイド等であってもよい。サービスロボットは、介護、医療、清掃、警備、案内、救助、調理、商品提供等の様々なサービス業で使用されるロボットである。
また、本開示の技術は、制御方法であってもよい。例えば、本開示の一態様に係る制御方法は、マスタ装置によって操作されるスレーブ装置を制御する制御方法であって、前記マスタ装置の操作端に力が加えられることで入力される情報である操作情報と、前記スレーブ装置における対象物に作用を加える作用部の所定の移動を規制する規制条件とに従って、前記スレーブ装置の動作部によって前記作用部に前記規制条件が反映された動作をさせるための指令を出力することと、前記規制条件に従って、前記作用部の前記所定の移動を指令する前記操作端への入力に対抗する前記操作端への力を、前記マスタ装置に生成させるための指令を出力することとを含む。上記制御方法は、CPU、LSIなどの回路、ICカード又は単体のモジュール等によって、実現されてもよい。
また、本開示の技術は、上記制御方法を実行するためのプログラムであってもよく、上記プログラムが記録された非一時的なコンピュータ読み取り可能な記録媒体であってもよい。また、上記プログラムは、インターネット等の伝送媒体を介して流通させることができるのは言うまでもない。
また、上記で用いた序数、数量等の数字は、全て本開示の技術を具体的に説明するために例示するものであり、本開示は例示された数字に制限されない。また、構成要素間の接続関係は、本開示の技術を具体的に説明するために例示するものであり、本開示の機能を実現する接続関係はこれに限定されない。
また、機能ブロック図におけるブロックの分割は一例であり、複数のブロックを一つのブロックとして実現する、一つのブロックを複数に分割する、及び/又は、一部の機能を他のブロックに移してもよい。また、類似する機能を有する複数のブロックの機能を単一のハードウェア又はソフトウェアが並列又は時分割に処理してもよい。