本発明の一実施形態について、図面を参照しながら説明する。
<第1の実施形態>
図1は、本発明の一実施形態におけるロボットシステム1の構成の一例を示すシステム構成図である。本実施形態におけるロボットシステム1は、主として、ロボット10と、制御部20と、第1撮像部30と、第2撮像部40とを備える。
ロボット10は、複数のジョイント(関節)12と、複数のリンク13とを含むアーム11を有するアーム型のロボットである。ロボット10は、制御部20からの制御信号に従い処理を行う。
ジョイント12には、それらを動作させるためのアクチュエーター(図示せず)が設けられる。アクチュエーターは、例えば、サーボモーターやエンコーダーなどを備える。エンコーダーが出力するエンコーダー値は、制御部20によるロボット10のフィードバック制御に使用される。
アーム11の先端近傍には、ハンドアイカメラ15が設けられる。ハンドアイカメラ15は、アーム11の先端にある物体を撮像して、画像データを生成するユニットである。ハンドアイカメラ15としては、例えば、可視光カメラ、赤外線カメラ等を採用することができる。
アーム11の先端部分の領域であって、ロボット10の他の領域(後に説明するハンド14を除く)と接続されていない領域を、アーム11のエンドポイントと定義する。本実施の形態では、図1に示す点Eの位置をエンドポイントの位置とする。
なお、ロボット10の構成は、本実施形態の特徴を説明するにあたって主要構成を説明したのであって、上記の構成に限られない。一般的な把持ロボットが備える構成を排除するものではない。例えば、図1では6軸のアームが示されているが、軸数(ジョイント数)をさらに増加させてもよいし、減らしてもよい。リンクの数を増減させてもよい。また、アーム、リンク、ジョイント等の各種部材の形状、大きさ、配置、構造等も適宜変更してよい。
制御部20は、ロボット10の全体を制御する処理を行う。制御部20は、ロボット10の本体とは離れた場所に設置してもよいし、ロボット10に内蔵してもよい。制御部20がロボット10の本体と離れた場所に設置されている場合には、制御部20は、有線又は無線でロボット10と接続される。
第1撮像部30及び第2撮像部40は、アーム11の作業領域付近をそれぞれ異なる角度から撮像して、画像データを生成するユニットである。第1撮像部30及び第2撮像部40は、例えば、カメラを含み、作業台、天井、壁などに設けられる。第1撮像部30及び第2撮像部40としては、可視光カメラ、赤外線カメラ等を採用することができる。第1撮像部30及び第2撮像部40は制御部20に接続され、第1撮像部30及び第2撮像部40により撮像された画像は制御部20に入力される。なお、第1撮像部30及び第2撮像部40は、制御部20ではなくロボット10に接続されるようにしてもよいし、ロボット10に内蔵されるようにしてもよい。この場合には、第1撮像部30及び第2撮像部40により撮像された画像は、ロボット10を介して制御部20に入力される。
次に、ロボットシステム1の機能構成例について説明する。図2は、ロボットシステム1の機能ブロック図を示している。
ロボット10は、アクチュエーターのエンコーダー値、及びセンサーのセンサー値等に基づいてアーム11を制御する動作制御部101を備える。
動作制御部101は、制御部20から出力された情報と、アクチュエーターのエンコーダー値、及びセンサーのセンサー値等とに基づいて、制御部20から出力された位置にアーム11を移動させるように、アクチュエーターを駆動させる。エンドポイントの現在位置は、ジョイント12等に設けられたアクチュエーターにおけるエンコーダー値等から求めることができる。
制御部20は、主として、位置制御部200と、ビジュアルサーボ部210と、駆動制御部220とを備える。位置制御部200は、主として、経路取得部201と、第1制御部202とを備える。ビジュアルサーボ部210は、主として画像取得部211と、画像処理部212と、第2制御部213とを備える。
位置制御部200は、予め設定される所定の経路に沿ってアーム11を移動させる位置制御を実行する。
経路取得部201は、経路に関する情報を取得する。経路は、教示位置に基づくものであり、例えば予め教示により設定された1以上の教示位置を予め設定された所定の順番で結ぶことで形成される。なお、経路に関する情報、例えば座標や経路内における順番を示す情報は、メモリー22(後の説明、図4等参照)に保持されている。メモリー22に保持される経路に関する情報は、入力装置25等を介して入力されてもよい。なお、経路に関する情報には、エンドポイントの最終的な位置、すなわち目標位置に関する情報も含まれる。
第1制御部202は、経路取得部201により取得された経路に関する情報に基づいて、次の教示位置、すなわちエンドポイントの軌道を設定する。
また、第1制御部202は、エンドポイントの軌道に基づいてアーム11の次の移動位置、すなわちジョイント12に設けられた各アクチュエーターの目標角度を決定する。また、第1制御部202は、目標角度だけアーム11を移動させるような指令値を生成し、駆動制御部220へ出力する。なお、第1制御部202が行う処理は、一般的な内容であるため、詳細な説明を省略する。
ビジュアルサーボ部210は、第1撮像部30と、第2撮像部40が撮像した画像に基づいて、目標物との相対的な位置の変化を視覚情報として計測し、それをフィードバック情報として用いることによって目標物を追跡する制御手法であるいわゆるビジュアルサーボを実行して、アーム11を移動させる。
なお、ビジュアルサーボとして、視差が生じるような2枚の画像を利用して画像を立体として認識させるステレオグラム等の方法を用いて計算した対象の3次元位置情報に基づいてロボットを制御する位置ベース法や、直交する方向から2個の撮像部で撮像した画像と、予め保持している各撮像部のゴール画像との差がゼロになる(各画像の画素数分の誤差行列がゼロになる)ようにロボットを制御する特徴ベース法等の方法を用いることができる。例えば、本実施の形態では、特徴ベース法を採用する。なお、特徴ベース法は、1台の撮像部を用いて行うことができるが、精度を向上させるために2台の撮像部を用いることが望ましい。
画像取得部211は、第1撮像部30が撮像した画像(以下、第1画像という)及び第2撮像部40が撮像した画像(以下、第2画像という)を取得する。画像取得部211が取得した第1画像及び第2画像は、画像処理部212に出力される。
画像処理部212は、画像取得部211から取得した第1画像及び第2画像から、第1画像及び第2画像からエンドポイントの先端を認識し、エンドポイントを含む画像を抽出する。なお、画像処理部212が行う画像認識処理は、一般的な様々な技術を用いることができるため、説明を省略する。
第2制御部213は、画像処理部212により抽出された画像(以下、現在画像という)と、エンドポイントが目標位置にある時の画像(以下、目標画像という)とに基づいてエンドポイントの軌道、すなわちエンドポイントの移動量及び移動方向を設定する。なお、目標画像は、予め取得したものをメモリー22等に記憶しておけばよい。
また、第2制御部213は、エンドポイントの移動量及び移動方向に基づいて、ジョイント12に設けられた各アクチュエーターの目標角度を決定する。さらに、第2制御部213は、目標角度だけアーム11を移動させるような指令値を生成し、駆動制御部220へ出力する。なお、第2制御部213が行う処理は、一般的な内容であるため、詳細な説明を省略する。
なお、関節を持つロボット10では、各関節の角度を決定すると、フォワードキネマティクス処理によりエンドポイントの位置は一意に決定される。つまり、N関節ロボットではN個の関節角度により1つの目標位置を表現できることになるから、当該N個の関節角度の組を1つの目標関節角度とすれば、エンドポイントの軌道を関節角度の集合と考えることができる。よって、第1制御部202及び第2制御部213から出力される指令値は、位置に関する値(目標位置)であってもよいし、関節の角度に関する値(目標角度)であってもよい。
駆動制御部220は、第1制御部202及び第2制御部213から取得した情報に基づいて、エンドポイントの位置、すなわちアーム11を移動させるように、動作制御部101に指示を出力する。駆動制御部220が行う処理の詳細については、後に詳述する。
図3は、ロボットシステム1のデータフロー図である。
位置制御部200においては、位置制御によりロボットの各関節を目標角度に近づける為のフィードバックループが回っている。あらかじめ設定された経路の情報には、目標位置に関する情報が含まれる。第1制御部202は、目標位置に関する情報を取得すると、目標位置に関する情報と、経路取得部201により取得された現在位置とに基づいて軌道及び指令値(ここでは目標角度)を生成する。
ビジュアルサーボ部210においては、第1撮像部30及び第2撮像部40からの情報を用いて目標位置に近づけるためのビジュアルフィードバックループが回っている。第2制御部213は、目標位置に関する情報として目標画像を取得する。第2制御部213は、現在画像及び現在画像上における目標位置は、画像上における座標系で表されているため、これをロボットにおける座標系に変換する。第2制御部213は、変換後の現在の現在画像及び目標画像に基づいて、軌道及び指令値(ここでは目標角度)を生成する。
駆動制御部220は、第1制御部202から出力された指令値と、第2制御部213から出力された指令値とに基づいた指令値をロボット10に出力する。具体的には、駆動制御部220は、第1制御部202から出力された指令値にαという係数をかけ、第2制御部213から出力された指令値に1−αという係数をかけ、これらを合成したものをロボット10に出力する。ここで、αは0より大きく、1より小さい実数である。
なお、第1制御部202から出力された指令値と、第2制御部213から出力された指令値とに基づいた指令値の形態は、これに限定されない。
ここで、本実施の形態では、第1制御部202からは一定の間隔(例えば1ミリ秒(msec)おき)で指令値が出力され、第2制御部213からは第1制御部202からの出力間隔より長い間隔(例えば30msecおき)で指令値が出力される。したがって、駆動制御部220は、第2制御部213から指令値が出力されていない場合には、第1制御部202から出力された指令値にαという係数をかけ、最後に第2制御部213から出力された指令値に1−αという係数をかけ、これらを合成したものをロボット10に出力する。駆動制御部220は、最後に第2制御部213から出力された指令値は、メモリー22(図4参照)等の記憶装置に一時的に記憶し、記憶装置からこれを読みだして用いればよい。
動作制御部101は、制御部20から指令値(目標角度)を取得する。動作制御部101は、ジョイント12等に設けられたアクチュエーターにおけるエンコーダー値等に基づいてエンドポイントの現在角度を取得し、目標角度と現在角度の差分(偏差角度)を算出する。また、動作制御部101は、例えば、偏差角度に基づいてアーム11の移動速度を算出(偏差角度が大きいほど移動速度が速い)し、算出した移動速度で算出した偏差角度だけアーム11を移動させる。
図4は、制御部20の概略構成の一例を示すブロック図である。図示するように、例えばコンピューターなどで構成される制御部20は、演算装置であるCPU(Central Processing Unit)21と、揮発性の記憶装置であるRAM(Random Access Memory)や不揮発性の記憶装置であるROM(Read only Memory)からなるメモリー22と、外部記憶装置23と、ロボット10等の外部の装置と通信を行う通信装置24と、マウスやキーボード等の入力装置25と、ディスプレイ等の出力装置26と、制御部20と他のユニットを接続するインターフェース(I/F)27とを備える。
上記の各機能部は、例えば、CPU21がメモリー22に格納された所定のプログラムをメモリー22に読み出して実行することにより実現される。なお、所定のプログラムは、例えば、予めメモリー22にインストールされてもよいし、通信装置24を介してネットワークからダウンロードされてインストール又は更新されてもよい。
以上のロボットシステム1の構成は、本実施形態の特徴を説明するにあたって主要構成を説明したのであって、上記の構成に限られない。また、一般的なロボットシステムが備える構成を排除するものではない。
次に、本実施形態における、上記構成からなるロボットシステム1の特徴的な処理について説明する。本実施の形態では、図1に示すような対象物O1、O2、O3を、ハンドアイカメラ15を用いて順番に目視検査を行う作業を例に説明する。
制御部20は、図示しないボタン等を介して制御開始指示が入力されると、位置制御及びビジュアルサーボによりアーム11を制御する。駆動制御部220は、第2制御部213から指令値が入力される場合(本実施の形態では30回に1回)には、第1制御部202から出力される値(以下、位置制御による指令値という)と、第2制御部213から出力される値(以下、ビジュアルサーボによる指令値という)とを任意の重みで合成した指令値を用いて、動作制御部101に指示を出力する。駆動制御部220は、第2制御部213から指令値が入力されない場合(本実施の形態では30回に29回)には、第1制御部202から出力される位置制御による指令値と、最後に第2制御部213から出力され、メモリー22等に一時的に記憶された指令値とを用いて、動作制御部101に指示を出力する。
図5(A)は、位置制御及びビジュアルサーボによりアーム11を制御するときの、エンドポイントの軌道を説明する図である。図5(A)における位置1に対象物O1が設置され、位置2に対象物O2が設置され、位置3に対象物O3が設置される。図5(A)においては、対象物O1、O2、O3は同一平面(XY平面)上にあるとし、一定のZ方向位置にハンドアイカメラ15があるとする。
図5(A)において実線で示す軌道は、位置制御による指令値のみを用いる場合のエンドポイントの軌道である。この軌道は、位置1、2、3の上を通る軌道となっており、対象物O1、O2、O3が常に同じ位置、姿勢で設置される場合は、位置制御のみで対象物O1、O2、O3を目視検査することができる。
それに対し、図5(A)において、対象物O2が、実線上の位置2から移動後の位置2へ移動した場合を考える。実線で示す対象物O2の上をエンドポイントが移動するため、位置制御による指令値のみを用いる場合には、対象物O2の検査の精度が落ちる、又は検査が出来なくなる事が想定できる。
対象物の位置の移動に対応するために、ビジュアルサーボを適用する事が良く行われる。ビジュアルサーボを用いれば、対象物の位置がずれたとしても、対象物の直上にエンドポイントを移動することができる。例えば、移動後の位置2に対象物O2があるとすると、図5(B)に示す画像が目標画像として与えられている場合には、仮にビジュアルサーボによる指令値のみ用いると、図5(A)において点線で示す軌道上をエンドポイントが通過する。
ビジュアルサーボは、対象物のズレに対応が可能な非常に有用な制御方法であるが、第1撮像部30や第2撮像部40のフレームレートや、画像処理部212における画像処理時間等により、位置制御の場合に比べて、目標位置に到達するまでの時間が多くかかってしまうという問題がある。
したがって、位置制御とビジュアルサーボとの指令値を同時に用いる(位置制御とビジュアルサーボとを同時に行う、すなわち並列制御)ことで、対象物O1、O2、O3の位置ズレに対応し、検査精度を確保しつつ、ビジュアルサーボよりも高速に移動する事を達成する。
なお、同時とは、完全に同じ時間、タイミングに限定されるものではない。例えば、位置制御とビジュアルサーボとの指令値を同時に用いる場合とは、位置制御の指令値とビジュアルサーボとの指令値とが同時に出力される場合や、位置制御の指令値とビジュアルサーボとの指令値とが微小時間ずれて出力される場合も含む概念である。微小時間は、同時の場合と同様の処理を行うことができる時間であれば、どのような長さの時間でもよい。
特に、目視検査の場合には、ハンドアイカメラ15の画角に対象物O2が含まれればよい(画角の中心に対象物O2がある必要はない)ため、対象物O2の上に軌道がなくても問題はない。
そのため、本実施の形態では、駆動制御部220は、ハンドアイカメラ15の画角に対象物O2が含まれる軌道となるように、位置制御による指令値と、ビジュアルサーボによる指令値とを合成する。この時の軌道を図5(A)に一点鎖線で示す。この軌道は、対象物O2の直上を通ってはいないが、検査精度が確保できるぎりぎりの位置であるとする。
なお、対象物の設置位置がずれる以外にも、温度変化によるアーム11の各部材等の膨張等も経路上の位置と実際の対象物の位置とのズレの要因となるが、この場合にも位置制御とビジュアルサーボとの指令値を同時に用いることで解決できる。
この、図5(A)における一点鎖線に示す軌道の位置は、重みαによって変えることができる。図6は、重みαについて説明する図である。
図6(A)は、ゴール(ここでは、対象物O1、O2、O3)までの距離と、重みαとの関係を示す図である。線Aは、ゴール位置までの距離に関係なく一定の重みαとする場合である。線Bは、ゴール位置までの距離に応じて段階的に重みαを小さくする場合である。線C、Dは、ゴール位置までの距離に応じて連続的に重みαが小さくなる場合であり、線Cは距離に比例して重みαの変化が小さくなる場合であり、線Dは距離と重みαが比例する場合である。ただし、重みαは0<α<1である。
図6(A)の線B、C、Dの場合には、ゴール位置までの距離が近くなるにつれて位置制御の指令値の比重が減り、ビジュアルサーボの指令値の比重が増すように、重みαが設定される。これにより、ゴール位置が動いた場合に、エンドポイントがよりゴール位置に近づくように軌道を生成することができる。
また、重みαを設定して位置制御とビジュアルサーボの各指令値を足し合わせるようにしたため、ゴール位置までの距離に応じて連続的に重みαを変えることができる。距離に応じて連続的に重みを変えることで、ほぼ位置制御によるアームの制御から、ほぼビジュアルサーボによるアームの制御へ、制御を滑らかに切り替えることができる。
なお、重みαは、図6(A)に示すように、ゴール(ここでは、対象物O1、O2、O3)までの距離により規定される場合に限定されない。図6(B)に示すように、スタート位置からの距離により重みαを規定するようにしてもよい。すなわち、駆動制御部220は、重みαを、現在位置と目標位置との差分に基づいて決定することができる。
なお、ゴールまでの距離やスタート位置からの距離は、経路取得部101が取得する経路に基づいて求めてもよいし、現在画像と目標画像とに基づいて求めてもよい。例えば、経路に基づいて求める場合には、経路に関する情報に含まれるスタート位置、ゴール、対象物の位置等の座標、順序と、現在位置の座標、順序とから算出できる。
図6に示すような、現在位置と目標位置との差分と重みとの関係は、アーム11をユーザーの希望する軌道で制御するために、例えば入力装置25等の入力部を介して入力することができる。また、現在位置と目標位置との差分と重みとの関係は、メモリー22等の記憶手段に記憶しておき、これを用いるようにすればよい。なお、記憶手段に記憶する現在位置と目標位置との差分と重みとの関係は、入力部を介して入力されたものでもよいし、予め初期設定された物でもよい。
本実施の形態によれば、位置制御とビジュアルサーボの各指令値を一定の割合で合成した指令値を用いてアーム(ハンドアイカメラ)を制御するため、対象物の位置ズレが発生した場合においても、精度良く高速に検査することができる。特に、本実施の形態によれば、速度は位置制御と同等(ビジュアルサーボよりも高速)とし、位置制御よりも位置ズレに対してロバストに検査を行うことができる
なお、本実施の形態では、常時、位置制御による指令値と、ビジュアルサーボによる指令値とを合成していたが、例えば、対象物O2の位置ズレが所定の閾値より大きい場合には、ビジュアルサーボによる指令値のみを用いてアーム11を移動させるようにしてもよい。対象物O2の位置ズレが所定の閾値より大きいか否かは、第2制御部213が現在画像に基づいて求めればよい。
また、本実施の形態では、駆動制御部220は、重みαを、現在位置と目標位置との差分に基づいて決定したが、重みαを決定する方法はこれに限られない。例えば、駆動制御部220は、時間の経過とともに重みαが変わるようにしてもよい。また、駆動制御部220は、一定時間が経過するまでは時間の経過とともに重みαが変わるようにし、その後は現在位置と目標位置との差分に基づいて重みαを変えるようにしてもよい。
<第2の実施形態>
本発明の第1の実施形態は、常時、位置制御とビジュアルサーボの各指令値を一定の割合で合成した指令値を用いてアームを制御したが、本発明の適用範囲はこれに限定されない。
本発明の第2の実施形態は、対象物の位置に応じて位置制御の各指令値のみを使う場合と、位置制御とビジュアルサーボの各指令値を一定の割合で合成した指令値を用いる場合とを組み合わせる形態である。以下、本発明の第2の実施形態に係るロボットシステム2について説明する。なお、ロボットシステム2の構成は第1の実施形態のロボットシステム1と同一であるため、ロボットシステム2の構成についての説明を省略し、ロボットシステム2の処理について説明する。また、第1の実施形態と同一の部分については、同一の符号を付し、説明を省略する。
図7は、本発明のアーム11の制御処理の流れを示すフローチャートである。この処理は、例えば、図示しないボタン等を介して制御開始指示が入力されることにより開始される。本実施の形態では、対象物O1、O2の目視検査を行う。
処理が開始されると、位置制御部200は位置制御を行う(ステップS100)。すなわち、第1制御部202は、経路取得部201により取得された経路に関する情報に基づいて指令値を生成し、駆動制御部220へ出力する。駆動制御部220は、第1制御部202から出力された指令値を、ロボット10に出力する。すると、動作制御部101が、指令値に基づいてアーム11(すなわちエンドポイント)を移動させる。
次に、第1制御部202は、位置制御によりエンドポイントが移動された結果、エンドポイントが切替点1を通過したか否かを判断する(ステップS102)。切替点1の位置を示す情報は、あらかじめ設定された経路に関する情報に含まれている。
図8は、対象物O1、O2の位置、切替点の位置及びエンドポイントの軌道を説明する図である。本実施の形態では、切替点1は、スタート地点と対象物O1との間に設けられる。
エンドポイントが切替点1を通過していない場合(ステップS102でNO)は、制御部20は、ステップS100の処理を繰り返す。
エンドポイントが切替点1を通過した場合(ステップS102でYES)は、駆動制御部220は、位置制御及びビジュアルサーボを用いてアーム11を制御させる(ステップS104)。すなわち、第1制御部202は、経路取得部201により取得された経路に関する情報に基づいて指令値を生成し、駆動制御部220へ出力する。また、第2制御部213は、画像処理部212により処理された現在画像と目標画像とに基づいて指令値を生成し、駆動制御部220へ出力する。駆動制御部220は、時間の経過と共に重みαを段階的に切り替え、切り替えられた重みαを用いて、第1制御部202から出力された指令値と第2制御部213から出力された指令値とを合成して、ロボット10に出力する。すると、動作制御部101が、指令値に基づいてアーム11(すなわちエンドポイント)を移動させる
以下、ステップS104の処理について具体的に説明する。ステップS104の処理が行われる前、すなわちステップS100の処理においては、ビジュアルサーボ部210からの指令値を用いない。したがって、位置制御部200からの指令値の重みαは1(ビジュアルサーボ部210からの指令値の重み1−α=0)である。
ステップS104の処理の開始後、一定時間(例えば10msec)経過したら、駆動制御部220は、位置制御部200からの指令値の重みαを1から0.9に切り替える。すると、ビジュアルサーボ部210からの指令値の重み1−αは0.1となる。そして、駆動制御部220は、位置制御部200からの指令値の重みαを0.9、ビジュアルサーボ部210からの指令値の重み1−αを0.1で合成してロボット10に出力する。
その後、更に一定時間経過したら、駆動制御部220は、位置制御部200からの指令値の重みαを0.9から0.8に切り替え、ビジュアルサーボ部210からの指令値の重み1−αを0.1から0.2に切り替える。このように、一定時間の経過と共に段階的に重みαを切り替え、切り替えられた重みを用いて第1制御部202から出力された指令値と第2制御部213から出力された指令値とを合成する。
位置制御部200は、この重みαの切り替え及び指令値の合成を、位置制御部200からの指令値の重みαが0.5、ビジュアルサーボ部210からの指令値の重み1−αが0.5となるまで繰り返す。駆動制御部220は、位置制御部200からの指令値の重みαが0.5、ビジュアルサーボ部210からの指令値の重み1−αが0.5となったら、重みαを切り替えず、重みαを維持して指令値の合成を繰り返す。
これにより、対象物O1の位置が変わる場合にも目視検査を行うことができる。また、対象物から必要以上に離れている場合に、位置制御のみによりエンドポイントを移動させることで、高速に処理を行うことができる。また、対象物に近づくときに位置制御及びビジュアルサーボによりエンドポイントを移動させることで、対象物の位置が変わる場合にも対応することができる。さらに、徐々に重みαを切り替えることでアーム11の急な動きや、振動を防止することができる。
なお、ステップS104における処理において、この重みαの切り替え及び指令値の合成を行っている間に、エンドポイントが切替点2を通過する(ステップS106、後に詳述)場合には、重みαが0.5となるまで重みαの切り替え及び指令値の合成を行うことなく、ステップS106に進む。
次に、第1制御部202は、位置制御及びビジュアルサーボによりエンドポイントが移動された結果、エンドポイントが切替点2を通過したか否かを判断する(ステップS106)。切替点2の位置を示す情報は、経路に関する情報に含まれている。図8に示すように、切替点2は、対象物O1に設定されている。
エンドポイントが切替点2を通過していない場合(ステップS106でNO)は、制御部20は、ステップS104の処理を繰り返す。
エンドポイントが切替点2を通過した場合(ステップS106でYES)は、駆動制御部220は、時間の経過と共に重みαが段階的に大きくなるように重みαを切り変え、切り替えられた重みαを用いて、第1制御部202から出力された指令値と第2制御部213から出力された指令値とを合成して、ロボット10に出力する。動作制御部101が、指令値に基づいてアーム11(すなわちエンドポイント)を移動させる(ステップS108)。
以下、ステップS108の処理について具体的に説明する。ステップS108の処理が行われる前、すなわちステップS106の処理においては、駆動制御部220は、位置制御部200からの指令値の重みαを0.5、ビジュアルサーボ部210からの指令値の重み1−αを0.5として指令値を合成している。
ステップS108の処理の開始後、一定時間(例えば10msec)経過したら、駆動制御部220は、位置制御部200からの指令値の重みαを0.5から0.6に切り替える。すると、ビジュアルサーボ部210からの指令値の重み1−αは0.4となる。そして、駆動制御部220は、位置制御部200からの指令値の重みαを0.6、ビジュアルサーボ部210からの指令値の重み1−αを0.4で合成してロボット10に出力する。
その後、更に一定時間経過したら、駆動制御部220は、位置制御部200からの指令値の重みαを0.6から0.7に切り替え、ビジュアルサーボ部210からの指令値の重み1−αを0.4から0.3に切り替える。このように、一定時間の経過と共に段階的に重みαを切り替え、切り替えられた重みを用いて第1制御部202から出力された指令値と第2制御部213から出力された指令値とを合成する。
駆動制御部220は、重みαの切り替えを、重みαが1になるまで繰り返す。重みαが1になった場合には、ビジュアルサーボ部210からの指令値の重み1−αは0である。したがって、駆動制御部220は、第1制御部202から出力された指令値をロボット10に出力する。すると、動作制御部101が、指令値に基づいてアーム11(すなわちエンドポイント)を移動させる(ステップS110)。この結果、位置制御によりエンドポイントが移動される。ステップS110の処理は、ステップS100と同じである。
このように、対象物O1を通過した段階で位置制御によりエンドポイントを移動させることで、高速に処理を行うことができる。また、徐々に重みαを切り替えることでアーム11の急な動きや、振動を防止することができる。
次に、第1制御部202は、位置制御によりエンドポイントが移動された結果、エンドポイントが切替点3を通過したか否かを判断する(ステップS112)。切替点3の位置を示す情報は、あらかじめ設定された経路に関する情報に含まれている。図8に示すように、切替点3は、対象物O1(切替点2)と対象物O2との間に設けられる。
エンドポイントが切替点3を通過していない場合(ステップS112でNO)は、制御部20は、ステップS110の処理を繰り返す。
エンドポイントが切替点3を通過した場合(ステップS112でYES)は、駆動制御部220は、時間の経過と共に重みαを段階的に切り替え、切り替えられた重みαを用いて、第1制御部202から出力された指令値と第2制御部213から出力された指令値とを合成して、ロボット10に出力する。すると、動作制御部101が、指令値に基づいてアーム11(すなわちエンドポイント)を移動させる(ステップS114)。ステップS114の処理は、ステップS104と同じである。
次に、第1制御部202は、位置制御及びビジュアルサーボによりエンドポイントが移動された結果、エンドポイントが切替点4を通過したか否かを判断する(ステップS116)。切替点4の位置を示す情報は、経路に関する情報に含まれている。図8に示すように、切替点4は、対象物O2に設定されている。
エンドポイントが切替点4を通過していない場合(ステップS116でNO)は、制御部20は、ステップS114の処理を繰り返す。
エンドポイントが切替点4を通過した場合(ステップS116でYES)は、駆動制御部220は、時間の経過と共に重みαが段階的に大きくなるように重みαを切り変え、切り替えられた重みαを用いて、第1制御部202から出力された指令値と第2制御部213から出力された指令値とを合成して、ロボット10に出力する。動作制御部101が、指令値に基づいてアーム11(すなわちエンドポイント)を移動させる(ステップS118)。ステップS118の処理は、ステップS108と同じである。
駆動制御部220は、重みαの切り替えを、重みαが1になるまで繰り返す。重みαが1になったら、駆動制御部220は、第1制御部202から出力された指令値をロボット10に出力する。すると、動作制御部101が、指令値に基づいてアーム11(すなわちエンドポイント)を移動させる(ステップS120)。ステップS120の処理は、ステップS110と同じである。
次に、第1制御部202は、位置制御によりエンドポイントが移動された結果、エンドポイントがゴール地点に到達したか否かを判断する(ステップS122)。ゴール地点の位置を示す情報は、あらかじめ設定された経路に関する情報に含まれている。
エンドポイントがゴール地点に到達していない場合(ステップS122でNO)は、制御部20は、ステップS120の処理を繰り返す。
エンドポイントがゴール地点に到達した場合(ステップS122でYES)は、駆動制御部220は、処理を終了する。
本実施の形態によれば、対象物に近づくときに、位置制御及びビジュアルサーボによりエンドポイントを移動させることで、対象物の位置が変わる場合にも対応することができる。また、エンドポイント(現在位置)が対象物から必要以上に離れている場合、エンドポイント(現在位置)が対象物を通過した場合等の所定の条件を満たす場合に、位置制御のみによりエンドポイントを移動させることで、高速に処理を行うことができる。
また、本実施の形態によれば、位置制御及びビジュアルサーボによる制御と、位置制御による制御とを切り替える時に、徐々に重みαを切り替えることで、アームの急な動きや、振動を防止することができる。
なお、本実施の形態では、徐々に重みαを切り替える場合に、一定時間が経過する度に、重みαを0.1ずつ段階的に切り替えたが、徐々に重みαを切り替える方法はこれに限定されない。例えば、図6に示すように、対象物(図6(A)におけるゴール位置に相当)までの位置や、対象物(図6(B)におけるスタート位置に相当)からの位置に応じて重みαを変えるようにしてもよい。また、図6に示すように、重みαは連続的に変えてもよい(図6(A),(B)の線C、D等参照)。
また、本実施の形態では、位置制御とビジュアルサーボとの指令値を用いる場合(ステップS104、S108、S114、S118)には、重みαを0.5、0.6、0.7、0.8、0.9としたが、重みαは0より大きく1より小さい実数であればどのような値でもよい。
<第3の実施形態>
本発明の第1、2の実施形態は、ハンドアイカメラを用いて目視検査を行ったが、本発明の適用範囲はこれに限定されない。
本発明の第3の実施形態は、対象物の穴への挿入等の組立作業に本発明を適用した形態である。以下、本発明の第3の実施形態について説明する。なお、第1の実施形態及び第2の実施形態と同一の部分については、同一の符号を付し、説明を省略する。
図9は、本発明の一実施形態におけるロボットシステム3の構成の一例を示すシステム構成図である。本実施形態におけるロボットシステム3は、主として、ロボット10Aと、制御部20と、第1撮像部30と、第2撮像部40とを備える。
ロボット10Aは、複数のジョイント(関節)12と、複数のリンク13とを含むアーム11Aを有するアーム型のロボットである。アーム11Aの先端には、ワークWや道具を把持するハンド14(いわゆるエンドエフェクター)が設けられる。アーム11Aのエンドポイントの位置は、ハンド14の位置である。なお、エンドエフェクターはハンド14に限られない。
アーム11Aの手首部分には、力覚センサー102(図9では図示せず、図10参照)が設けられている。力覚センサー102は、ロボット10Aが出している力に対する反力として受けている力や、モーメントを検出するセンサーである。力覚センサーとしては、例えば、並進3軸方向の力成分と、回転3軸回りのモーメント成分の6成分を同時に検出することができる6軸力覚センサーを用いることができる。また、力覚センサーで使用される物理量は、電流、電圧、電荷量、インダクタンス、ひずみ、抵抗、電磁誘導、磁気、空気圧、光等である。力覚センサー102は、所望の物理量を電気信号に変換することにより、6成分を検出可能である。なお、力覚センサー102は、6軸に限らず、例えば3軸でもよい。
次に、ロボットシステム3の機能構成例について説明する。図10は、ロボットシステム3の機能ブロック図を示している。
ロボット10Aは、アクチュエーターのエンコーダー値、及びセンサーのセンサー値等に基づいてアーム11Aを制御する動作制御部101と、力覚センサー102とを備える。
制御部20Aは、主として、位置制御部200と、ビジュアルサーボ部210と、画像処理部212と、駆動制御部220と、力制御部230とを備える。
力制御部230は、力覚センサー102からのセンサー情報(力情報、モーメント情報)に基づいて力制御(力覚制御)を行う。
本実施の形態では、力制御としてインピーダンス制御を行う。インピーダンス制御は、ロボットの手先(ハンド14)に外から力を加えた場合に生じる機械的なインピーダンス(慣性、減衰係数、剛性)を、目的とする作業に都合の良い値に設定するための位置と力の制御手法である。具体的には、ロボットのエンドエフェクター部に質量と粘性係数と弾性要素が接続されるモデルにおいて、目標として設定した質量と粘性係数と弾性係数で物体に接触するようにする制御である。
力制御部230は、インピーダンス制御によりエンドポイントの移動方向、移動量を決定する。また、力制御部230は、エンドポイントの移動方向、移動量に基づいて、ジョイント12に設けられた各アクチュエーターの目標角度を決定する。また、力制御部230は、目標角度だけアーム11Aを移動させるような指令値を生成し、駆動制御部220へ出力する。なお、力制御部230が行う処理は、一般的な内容であるため、詳細な説明を省略する。
なお、力制御は、ハイブリッド制御に限らず、コンプライアンス制御等の干渉力を巧妙に制御することができる制御方法を採用することができる。また、力制御を行うためには、ハンド14等のエンドエフェクターに加わる力を検出する必要があるが、エンドエフェクターに加わる力を検出する方法は力覚センサーを用いる場合に限られない。例えば、アーム11Aの各軸トルク値からエンドエフェクターに及ぼす外力を推定することもできる。したがって、力制御を行うためには、直接または間接的にエンドエフェクターに加わる力を取得する手段を、アーム11Aが有していればよい。
次に、本実施形態における、上記構成からなるロボットシステム3の特徴的な処理について説明する。図11は、本発明のアーム11Aの制御処理の流れを示すフローチャートである。この処理は、例えば、図示しないボタン等を介して制御開始指示が入力されることにより開始される。本実施の形態では、図12に示すように、ワークWを穴Hに挿入する組立作業を例に説明する。
第1制御部202は、図示しないボタン等を介して制御開始指示が入力されると、位置制御によりアーム11を制御し、エンドポイントを移動させる(ステップS130)。ステップS130の処理は、ステップS100と同じである。
本実施の形態では、位置制御により指令値の重みをα、ビジュアルサーボによる指令値の重みをβ、力制御による指令値の重みをγと設定する。重みα、β及びγは、これらの合計が1となるように設定される。ステップS130では、αが1、β及びγは0である。
次に、第1制御部202は、位置制御によりエンドポイントが移動された結果、エンドポイントが切替点1を通過したか否かを判断する(ステップS132)。ステップS132の処理は、ステップS102と同じである。切替点1の位置を示す情報は、あらかじめ設定された経路に関する情報に含まれている。
図12は、エンドポイントの軌道及び切替点の位置を説明する図である。本実施の形態では、切替点1は、作業空間におけるあらかじめ定められた所定の位置に設けられる。
エンドポイントが切替点1を通過していない場合(ステップS132でNO)は、第1制御部202は、ステップS130の処理を繰り返す。
エンドポイントが切替点1を通過した場合(ステップS132でYES)は、駆動制御部220は、時間の経過と共に重みα及びβを段階的に切り替え、切り替えられた重みα及びβを用いて、第1制御部202から出力された指令値と第2制御部213から出力された指令値とを合成して、ロボット10に出力する。すると、動作制御部101が、指令値に基づいてアーム11(すなわちエンドポイント)を移動させる(ステップS134)。すなわち、ステップS134では、位置制御及びビジュアルサーボによりエンドポイントを移動させる。
以下、ステップS134の処理について具体的に説明する。ステップS134の処理が行われる前、すなわちステップS132の処理においては、駆動制御部220は、位置制御部200からの指令値の重みαを1、ビジュアルサーボ部210からの指令値の重みβを0、力制御部230からの指令値の重みγを0として指令値を合成している。
ステップS134の処理の開始後、一定時間(例えば10msec)経過したら、駆動制御部220は、位置制御部200からの指令値の重みαを1から0.95に切り替え、ビジュアルサーボ部210からの指令値の重みβを0.05に切り替える。そして、駆動制御部220は、位置制御部200からの指令値を重み0.95、ビジュアルサーボ部210からの指令値の重み0.05で合成してロボット10に出力する。
その後、更に一定時間経過したら、駆動制御部220は、位置制御部200からの指令値の重みαを0.95から0.9に切り替え、ビジュアルサーボ部210からの指令値の重みβ0.05から0.1に切り替える。
このように、一定時間の経過と共に、段階的に重みα及びβを切り替え、切り替えられた重みを用いて第1制御部202から出力された指令値と第2制御部213から出力された指令値とを合成する。駆動制御部220は、この重みの切り替えを、重みαが0.05、重みβが0.95になるまで繰り返し行う。この結果、位置制御及びビジュアルサーボによりエンドポイントが移動される。なお、ステップS134では、力制御は用いないため、重みγは0のままである。
なお、最終的な重みα、βの比率α:βは、0.05:0.95には限定されない。重みα、βは、重みα、βの和が1となる様々な値をとることができる。ただし、このような作業においては、穴Hの位置が一定であるとは限らないので、ビジュアルサーボの重みβを位置制御の重みαより大きくすることが望ましい。
なお、徐々に重みαを切り替える方法はこれに限定されない。例えば、図6に示すように、対象物までの位置や、対象物からの位置に応じて重みαを変えるようにしてもよい。また、図6の線C、Dに示すように、重みαは連続的に変えてもよい。
次に、第2制御部213は、位置制御及びビジュアルサーボによりエンドポイントが移動された結果、エンドポイントが切替点2を通過したか否かを判断する(ステップS136)。
切替点2は、穴Hからの相対位置により定められる。例えば、切替点2は、穴Hの開口部中心から距離L(例えば、10cm)の位置である。穴Hの開口部中心から距離Lの位置は、x、y、z空間に半球状に設定できる。図12においては、穴Hの開口部中心からz方向に距離L離れた位置が例示されている。
画像処理部212は、現在画像からワークWの先端と穴Hを含む画像を抽出し、第2制御部213に出力する。また、画像処理部212は、画像における距離と、実空間における距離との関係を、第1撮像部30又は第2撮像部40のカメラパラメータ(焦点距離等)から算出し、第2制御部213に出力する。第2制御部213は、抽出された画像におけるワークWの先端位置と、穴Hの中心位置との差に基づいて、エンドポイントが切替点2を通過したか否かを判断する。
エンドポイントが切替点2を通過していない場合(ステップS136でNO)は、第1制御部202、第2制御部213及び駆動制御部220は、ステップS134の処理を繰り返す。
エンドポイントが切替点2を通過した場合(ステップS136でYES)は、駆動制御部220は、第1制御部202から出力された指令値と、力制御部230から出力された指令値とを合成して、ロボット10に出力する。動作制御部101が、指令値に基づいてアーム11(すなわちエンドポイント)を移動させる(ステップS138)。
以下、ステップS138の処理について具体的に説明する。ステップS138の処理が行われる前、すなわちステップS134の処理においては、駆動制御部220は、位置制御部200からの指令値の重みαを0.05、ビジュアルサーボ部210からの指令値の重みβを0.95として指令値を合成している。
ステップS138の処理の開始後、駆動制御部220は、位置制御部200からの指令値の重みαを0.05から0.5に切り替える。また、力制御部230からの指令値の重みγを0から0.5に切り替える。その結果、駆動制御部220は、位置制御部200からの指令値の重みαを0.5、ビジュアルサーボ部210からの指令値の重みβを0、力制御部230からの指令値の重みγを0.5で合成して、ロボット10に出力する。なお、ステップS138では、ビジュアルサーボは用いないため、重みβは0のままである。なお、重みα、γは段階的に切り替えるようにしてもよい。
次に、力制御部230は、ビジュアルサーボ及び力制御によりエンドポイントが移動された結果、エンドポイントがゴール地点に到達したか否かを判断する(ステップS140)。ゴール地点に到達したか否かは、力覚センサー102の出力に基づいて判断することができる。
エンドポイントがゴール地点に到達していない場合(ステップS140でNO)は、位置制御部200、力制御部230及び駆動制御部220は、ステップS138の処理を繰り返す。
エンドポイントがゴール地点に到達した場合(ステップS140でYES)は、駆動制御部220は、処理を終了する。
本実施の形態によれば、位置制御の高速さを維持しつつ、異なる目標位置に対応することができる。また、目標位置が視認できない等のビジュアルサーボを用いることができない場合においても、位置制御の高速さを維持しつつ、安全に作業を行うことができる。
なお、本実施の形態では、切替点1は作業空間の任意の位置にあらかじめ設定され、切替点2は穴Hから所定の距離だけ離れた位置に設定されたが、切替点1、2の位置はこれに限られない。切替点1、2の位置を、所定の位置からの経過時間により設定してもよい。具体的には、例えば、切替点2の位置は、切替点1を通過してから30秒後に設定することができる。また、切替点1、2の位置を、所定の位置からの距離により設定してもよい。具体的には、例えば、切替点1の位置は、スタート地点から距離X離れた位置に設定することができる。さらに、切替点1、2の位置を、外部からの信号入力(例えば、入力装置25からの入力信号)に基づいて設定してもよい。
<第4の実施形態>
本発明の第3の実施形態は、位置制御と力制御とにより対象物の穴への挿入等の組立作業を行ったが、本発明の適用範囲はこれに限定されない。
本発明の第3の実施形態は、位置制御とビジュアルサーボと力制御とにより対象物の穴への挿入等の組立作業に本発明を適用した形態である。以下、本発明の第4の実施形態について説明する。第4の実施形態に係るロボットシステム4の構成は、ロボットシステム3と同一であるため、説明を省略する。また、ロボットシステム4が行う処理において、第1の実施形態、第2の実施形態と及び第3の実施の形態と同一の部分については、同一の符号を付し、詳細な説明を省略する。
本実施形態におけるロボットシステム4の特徴的な処理について説明する。図13は、ロボットシステム4のアーム11Aの制御処理の流れを示すフローチャートである。この処理は、例えば、図示しないボタン等を介して制御開始指示が入力されることにより開始される。本実施の形態では、図14に示すように、移動する台に形成された穴HにワークWを挿入する組立作業を例に説明する。
第1制御部202は、図示しないボタン等を介して制御開始指示が入力されると、位置制御によりアーム11Aを制御し、エンドポイントを移動させる(ステップS130)。
次に、第1制御部202は、位置制御によりエンドポイントが移動された結果、エンドポイントが切替点1を通過したか否かを判断する(ステップS132)。
エンドポイントが切替点1を通過していない場合(ステップS132でNO)は、第1制御部202は、ステップS130の処理を繰り返す。
エンドポイントが切替点1を通過した場合(ステップS132でYES)は、駆動制御部220は、時間の経過と共に重みα及びβを段階的に切り替え、切り替えられた重みα及びβを用いて、第1制御部202から出力された指令値と第2制御部213から出力された指令値とを合成して、ロボット10に出力する。すると、動作制御部101が、指令値に基づいてアーム11A(すなわちエンドポイント)を移動させる(ステップS134)。
次に、第2制御部213は、位置制御及びビジュアルサーボによりエンドポイントが移動された結果、エンドポイントが切替点2を通過したか否かを判断する(ステップS136)。
エンドポイントが切替点2を通過していない場合(ステップS136でNO)は、第1制御部202、第2制御部213及び駆動制御部220は、ステップS134の処理を繰り返す。
エンドポイントが切替点2を通過した場合(ステップS136でYES)は、駆動制御部220は、第1制御部202から出力された指令値と、第2制御部213から出力された指令値と、力制御部230から出力された指令値とを合成して、ロボット10に出力する。動作制御部101が、指令値に基づいてアーム11A(すなわちエンドポイント)を移動させる(ステップS139)。
以下、ステップS139の処理について具体的に説明する。ステップS139の処理が行われる前、すなわちステップS134の処理においては、駆動制御部220は、位置制御部200からの指令値の重みαを0.05、ビジュアルサーボ部210からの指令値の重みβを0.95として指令値を合成している。
ステップS139の処理の開始後、駆動制御部220は、位置制御部200からの指令値の重みαを0.05から0.34に切り替える。また、駆動制御部220は、ビジュアルサーボ部210からの指令値の重みβを0.95から0.33に切り替える。さらに、駆動制御部220は、力制御部230からの指令値の重みγを0から0.33に切り替える。その結果、駆動制御部220は、位置制御部200からの指令値の重みαを0.34、ビジュアルサーボ部210からの指令値の重みβを0.33、力制御部230からの指令値の重みγを0.33で合成して、ロボット10に出力する。
なお、重みα、β、γの比率α:β:γは、0.34:0.33:0.33には限定されない。重みα、β、γは、重みα、β、γの和が1となる様々な値を、作業に応じて設定することができる。また、重みα、β、γを徐々に切り替えるようにしてもよい。
次に、力制御部230は、ビジュアルサーボ及び力制御によりエンドポイントが移動された結果、エンドポイントがゴール地点に到達したか否かを判断する(ステップS140)。
エンドポイントがゴール地点に到達していない場合(ステップS140でNO)は、位置制御部200、ビジュアルサーボ部210、力制御部230及び駆動制御部220は、ステップS139の処理を繰り返す。
エンドポイントがゴール地点に到達した場合(ステップS140でYES)は、駆動制御部220は、処理を終了する。
本実施の形態によれば、位置制御の高速さを維持しつつ、異なる目標位置にエンドポイントを移動させることができる。特に、目標位置が移動する場合であって、かつ目標位置が視認できない場合においても、位置制御、ビジュアルサーボ、力制御により制御を行うため、位置制御の高速さを維持しつつ、安全に作業を行うことができる。
なお、本実施の形態では、位置制御、ビジュアルサーボ、力制御を同時に行う(並列制御)によりアームを制御したが、第3の実施の形態では、位置制御、力制御を同時に行う(並列制御)によりアームを制御した。駆動制御部220は、あらかじめ設定されてメモリー22等に格納された条件等に基づいて、位置制御、ビジュアルサーボ、力制御を同時に行うか、位置制御、力制御によりを同時に行うかは、ワークW、穴H等の視認の可否、移動の有無等の所定の条件に基づいて選択することができる。
上記実施形態では、片腕ロボットを用いた場合について説明したが、双腕ロボットを用いた場合にも本発明を適用することができる。上記実施形態では、ロボットのアームの先端にエンドポイントが設けられた場合について説明したが、ロボットに設けられるのはアームに限られない。例えば、複数のジョイントとリンクとにより構成され、ジョイントを動かすことで全体が動くマニピュレーターがロボットに設けられ、マニピュレーターの先端をエンドポイントとしてもよい。
また、上記実施の形態では、第1撮像部30及び第2撮像部40の2個の撮像部を備えたが、撮像部は1つでもよい。
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に多様な変更または改良を加えることが可能であることが当業者には明らかである。また、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。特に、本発明は、ロボットと、制御部及び撮像部とが別に設けられたロボットシステムとして提供してもよいし、ロボットに制御部等が含まれたロボットとして提供してもよいし、制御部のみ、又は制御部及び撮像部からなるロボット制御装置として提供してもよい。また、本発明は、ロボット等を制御するプログラムやプログラムを記憶した記憶媒体として提供することもできる。