<第1実施形態>
以下、本発明の第1実施形態について、図面を参照して説明する。図1は、第1実施形態に係るロボットシステム1の一例を示す構成図である。ロボットシステム1は、第1撮像部11と、第2撮像部12と、ロボット20と、制御装置30を具備する。
ロボットシステム1は、第1撮像部11が、作業対象M1が組付対象O1に組み付けられる様子を時系列に撮像した複数の画像(複数の第1画像)として撮像し、撮像された複数の画像に基づいて作業対象M2を組付対象O2に組み付ける作業に係る動作を制御装置30に教示する。作業対象M1は、組付対象O1へ所定の状態で組み付けられることで使用される部材であり、例えば、プラグである。作業対象M2は、組付対象O2へ所定の状態で組み付けられることで使用される部材であり、例えば、プラグである。なお、作業対象M1と作業対象M2は、同じ形状の部材であるが、大きさは同じでもよく、異なっていてもよい。また、作業対象M1と作業対象M2は、それぞれ作業対象物の一例である。なお、本実施形態では、時系列に撮像した複数の画像の一例として、複数の静止画像から構成される動画像を用いて説明する。
組付対象O1は、作業対象M1が所定の状態で組み付けられることで使用される部材であり、例えば、コンセントである。組付対象O2は、作業対象M2が所定の状態で組み付けられることで使用される部材であり、例えば、コンセントである。なお、組付対象O1と組付対象O2は、同じ形状の部材であるが、大きさは同じでもよく、異なっていてもよい。また、作業対象M1と作業対象M2の大きさが異なっていた場合、組付対象O1と組付対象O2の大きさの比率は、作業対象M1と作業対象M2の大きさの比率と同じである方が好ましい。
以下では、上記の教示の一例として、ユーザーUが手を用いて作業対象M1を組付対象O1に組み付ける様子を第1撮像部11により撮像する場合について説明するが、ユーザーUが手を用いて組み付けるのに代えて、他の何らかの方法によって組み付ける様子を第1撮像部11により撮像してもよい。
ロボットシステム1は、制御装置30に教示された動作に基づいて作業対象M2を組付対象O2に組み付ける作業をロボット20に行わせる。この時、ロボットシステム1は、第2撮像部12により撮像された撮像画像に基づいてビジュアルサーボによりロボット20を制御する。なお、以下の説明では、作業対象M2は、予めロボット20の把持部HND(エンドエフェクター)に把持されていることを前提とするが、予め作業対象M2が把持部HNDに把持されていない状態であってもよい。その場合、ロボットシステム1は、第2撮像部12により撮像された撮像画像に基づいて作業対象M2の位置及び姿勢を検出し、検出された位置及び姿勢に基づいて作業対象M2を把持する。
第1撮像部11は、例えば、集光された光を電気信号に変換する撮像素子であるCCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)等を備えたカメラである。また、第1撮像部11は、2台のカメラによって構成されるステレオカメラであるが、例えば、3台以上のカメラによって構成されてもよく、1台のカメラにより二次元画像を撮像する構成であってもよい。
第1撮像部11は、ケーブルによって制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB(Universal Serial Bus)等の規格によって行われる。なお、第1撮像部11と制御装置30とは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によって接続される構成であってもよい。第1撮像部11は、ユーザーUが把持している作業対象M1と、ユーザーUが把持している組付対象O1であってユーザーUにより作業対象M1が組み付けられる組付対象O1とが含まれる範囲を撮像可能な位置に設置されている。以下では、説明の便宜上、第1撮像部11により撮像された動画像を、第1撮像画像と称して説明する。
第2撮像部12は、例えば、集光された光を電気信号に変換する撮像素子であるCCDやCMOS等を備えたカメラである。また、第2撮像部12は、2台のカメラによって構成されるステレオカメラであるが、例えば、3台以上のカメラによって構成されてもよく、1台のカメラにより二次元画像を撮像する構成であってもよい。
第2撮像部12は、ケーブルによって制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、第2撮像部12と制御装置30とは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によって接続される構成であってもよい。
第2撮像部12は、ロボット20と、ロボット20の把持部HNDが把持している作業対象M2と、ロボット20により作業対象M2が組み付けられる組付対象O2が含まれる範囲を撮像可能な位置に設置されている。組付対象O2は、図1に示したように、ロボット20により作業対象M2を組み付けることが可能な範囲で、ロボット20から離れた位置に治具等によって予め設置されている。以下では、説明の便宜上、第2撮像部12により撮像された撮像画像を、第2撮像画像と称して説明する。なお、第2撮像画像は、動画像であってもよく、静止画像であってもよい。
ロボット20は、例えば、把持部HNDと、力センサー22と、マニピュレーターMNPと、図示しない複数のアクチュエーターを備えた単腕ロボットである。なお、マニピュレーターMNPは、アームの一例である。また、ロボットシステム1は、単腕ロボットを具備する構成に代えて、双腕ロボットを具備する構成であってもよい。
ロボット20の腕は、6軸垂直多関節型となっており、支持台とマニピュレーターMNPと把持部HNDとがアクチュエーターによる連携した動作よって6軸の自由度の動作を行うことができる。なお、ロボット20の腕は、5自由度(5軸)以下で動作するものであってもよいし、7自由度(7軸)以上で動作するものであってもよい。以下では、把持部HND及びマニピュレーターMNPを備えた腕によって行われるロボット20の動作について説明する。
ロボット20は、例えばケーブルによって制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、ロボット20と制御装置30とは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によって接続されてもよい。また、ロボットシステム1では、ロボット20は、図1に示したようにロボット20の外部に設置された制御装置30と接続されている構成とするが、この構成に代えて、制御装置30がロボット20に内蔵されている構成であってもよい。
ロボット20の把持部HNDは、物体を把持可能な爪部を備える。
力センサー22は、ロボット20の把持部HNDとマニピュレーターMNPとの間に備えられており、把持部HND(あるいは、把持部HNDに把持された作業対象M2)に作用した力やモーメントを検出する。力センサー22は、検出した力やモーメントを示す情報を、通信により制御装置30へ出力する。力センサー22により検出された力やモーメントを示す情報は、例えば、制御装置30によるロボット20のコンプライアントモーション制御に用いられる。
ロボット20は、制御装置30から制御信号を取得し、取得した制御信号に基づいて、ロボット20の把持部HNDにより把持された作業対象M2をマニピュレーターMNPによって現在位置から移動させ、組付対象O2に組み付ける作業に係る動作を行う。作業対象M2を組付対象O2に組み付ける作業に係る動作とは、例えば、並進移動や回転等である。また、作業対象M2を組付対象O2に組み付ける作業は、少なくとも1つ以上の動作によって構成される。
制御装置30は、第1撮像画像に基づいて教示された動作によってロボット20が作業対象M2を組付対象O2に組み付けるように制御する。より具体的には、制御装置30は、第1撮像部11により撮像された第1撮像画像(動画像)から、少なくとも1フレーム以上の目標画像(第2画像)を抽出する。目標画像とは、ビジュアルサーボにおけるテンプレート画像であり、例えば、ロボット20に作業対象M2を移動させた場合に実現させたい位置及び姿勢であって、作業対象M2と組付対象O2の間の相対的な位置及び姿勢(以下、作業対象M2と組付対象O2の状態と称する)を表す画像である。制御装置30は、抽出された順に目標画像を読み込み、読み込まれた目標画像に基づくビジュアルサーボを行う。
そして、制御装置30は、読み込まれた目標画像に基づいて、作業対象M2と組付対象O2の状態を、目標画像が表す状態であって作業対象M2と組付対象O2の状態になるように作業対象M2をロボット20に移動させる。例えば、第1撮像画像から目標画像が3つ抽出された場合(以下、それぞれを時系列順に第1〜第3目標画像と称する)、制御装置30は、まず第1目標画像をテンプレート画像として読み込み、読み込まれた第1目標画像に基づくビジュアルサーボによって、目標画像が表す状態であって作業対象M2と組付対象O2の状態が実現されるように作業対象M2をロボット20に移動させる。
その後、制御装置30は、第2目標画像を次のテンプレート画像として読み込み、読み込まれた第2目標画像に基づくビジュアルサーボによって、目標画像が表す状態であって作業対象M2と組付対象O2の状態が実現されるように作業対象M2をロボット20に移動させる。そして、制御装置30は、最後に第3目標画像をテンプレート画像として読み込み、読み込まれた第3目標画像に基づくビジュアルサーボによって、目標画像が表す状態であって作業対象M2と組付対象O2の状態が実現されるように作業対象M2をロボット20に移動させる。
制御装置30は、このように第1撮像画像から少なくとも1フレーム以上の目標画像を抽出し、抽出された目標画像に基づいて作業対象M2を組付対象O2に組み付ける作業を完了させる。
次に、図2を参照して、制御装置30のハードウェア構成について説明する。図2は、制御装置30のハードウェア構成の一例を示す図である。制御装置30は、例えば、CPU(Central Processing Unit)31と、記憶部32と、入力受付部33と、通信部34を備え、通信部34を介して第1撮像部11、第2撮像部12、ロボット20と通信を行う。これらの構成要素は、バスBusを介して相互に通信可能に接続されている。CPU31は、記憶部32に格納された各種プログラムを実行する。
記憶部32は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read−Only Memory)、ROM(Read−Only Memory)、RAM(Random Access Memory)などを含み、制御装置30が処理する各種情報や画像、プログラムを格納する。なお、記憶部32は、制御装置30に内蔵されるものに代えて、USB等のデジタル入出力ポート等によって接続された外付け型の記憶装置でもよい。
入力受付部33は、例えば、キーボードやマウス、タッチパッド、その他の入力装置である。なお、入力受付部33は、表示部として機能してもよく、さらに、タッチパネルとして構成されてもよい。
通信部34は、例えば、USB等のデジタル入出力ポートやイーサネットポート等を含んで構成される。
次に、図3を参照することで、制御装置30の機能構成について説明する。図3は、制御装置30の機能構成の一例を示す図である。制御装置30は、記憶部32と、入力受付部33と、画像取得部35と、制御部36を備える。これらの機能部のうち一部又は全部は、例えば、CPU31が、記憶部32に記憶された各種プログラムを実行することで実現される。また、これらの機能部のうち一部または全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
制御装置30は、少なくとも1フレーム以上の目標画像に基づくビジュアルサーボのループの中にコンプライアントモーション制御を組み込むことで、作業対象M2及び組付対象O2を破壊することなく作業対象M2を組付対象O2に対して相対移動させる。また、制御装置30は、図示しない計時部を備えており、計時部により計時されたタイミングで、画像取得部35から第2撮像画像を取得し、それと同じタイミングでロボット20の力センサー22から、力センサー22により検出された力及びモーメントを示す情報を取得する。
画像取得部35は、第1撮像部11により撮像された第1撮像画像を取得する。そして、画像取得部35は、取得された第1撮像画像を記憶部32に記憶させる。画像取得部35は、第2撮像部12により撮像された第2撮像画像を取得する。画像取得部35は、取得された第2撮像画像を制御部36に出力する。
制御部36は、目標画像抽出部41とロボット制御部42を備える。
目標画像抽出部41は、記憶部32により記憶された第1撮像画像を読み込み、読み込まれた第1撮像画像に基づいて、所定の条件を満たすフレームを目標画像として抽出する。所定の条件とは、作業対象M1の運動状態が変化したことである。具体的には、作業対象M1の移動状態が変化したことであり、例えば、速度が変化したこと等である。速度としては、例えば、並進移動速度や、回転角速度が挙げられる。
すなわち、目標画像抽出部41は、例えば、作業対象M1の並進移動速度がゼロになった時点におけるフレームを目標画像として抽出する。なお、作業対象M1の運動状態が変化すればよいので、所定の条件は、作業対象M2の移動状態が変化したことであることに代えて、作業対象M1と組付対象O1の間の接触状態が変化(例えば、点接触から面接触への変化や、非接触状態から接触状態への変化等)したことであってもよく、作業対象M1の速度が所定の範囲内から逸脱すること、作業対象M1の速度の絶対値が所定の閾値以上又は所定の閾値以下になったこと等、他の何らかの条件であってもよい。また、所定の条件は、作業対象M1の速度の絶対値がゼロからノンゼロ、又はノンゼロからゼロになったことであってもよい。また、所定の条件は、作業対象M1の移動の仕方が変化することであってもよい。目標画像抽出部41は、抽出された目標画像を記憶部32に時系列順に記憶させる。
ロボット制御部42は、画像取得部35から第2撮像画像を取得する。ロボット制御部42は、記憶部32から時系列順に目標画像を読み込む。ロボット制御部42は、力センサー22から把持部HND(又は作業対象M2)に対して働いた力及びモーメントを示す情報を取得する。ロボット制御部42は、第2撮像画像と、目標画像と、把持部HNDに対して働いた力及びモーメントを示す情報とに基づいて、コンプライアントモーション制御を組み合わせたビジュアルサーボによってロボット20を制御するための制御信号を生成し、生成された制御信号をロボット20に出力することでロボット20を制御する。
以下、図4を参照して、制御部36による目標画像を抽出する処理について説明する。図4は、制御部36による目標画像を抽出する処理の流れの一例を示すフローチャートである。まず、制御部36は、ユーザーが作業対象M1と組付対象O1を組み付ける作業の様子を第1撮像部11が撮像するように第1撮像部11を制御する(ステップS100)。なお、第1撮像部11により撮像される第1撮像画像は、動画像であるとしたが、これに代えて、半動画であってもよい。
次に、画像取得部35は、第1撮像部11から第1撮像画像を取得し、取得された第1撮像画像を記憶部32に記憶させる(ステップS110)。次に、目標画像抽出部41は、記憶部32により記憶された第1撮像画像を読み込む(ステップS120)。
ここで、図5を参照して、第1撮像画像について説明する。図5は、第1撮像画像の異なる時刻におけるフレームを例示する図である。なお、図5において、作業対象M1及び組付対象O1を把持しているユーザーの手を省略した。
図5(A)には、ユーザーにより組付対象O1に対して作業対象M1が近づけられている状態が撮像されたフレームの一例を示す。図5(A)において、作業対象M1は、ユーザーにより矢印の方向に向けて並進移動させられ、組付対象O1に近づくように移動している状態である。また、図5(B)には、図5(A)に示したフレームから時間が経過した後の作業対象M1及び組付対象O1の状態が撮像されたフレームの一例を示す。図5(B)において、作業対象M1は、ユーザーにより矢印の方向に向けて並進させられ、組付対象O1に嵌め込まれる直前の状態である。
また、図5(C)には、図5(B)に示したフレームから時間が経過した後の作業対象M1及び組付対象O1の状態が撮像されたフレームの一例を示す。図5(C)において、作業対象M1は、ユーザーにより組付対象O1に嵌め込まれ、矢印の方向に回転させられる直前の状態である。また、図5(D)には、図5(C)に示したフレームから時間が経過した後の作業対象M1及び組付対象O1の状態が撮像されたフレームの一例を示す。図5(D)において、作業対象M1は、組付対象O1に回転により組み付けられ、作業対象M1を組付対象O1に組み付ける作業が完了した状態を示す。
次に、目標画像抽出部41は、読み込まれた第1撮像画像から少なくとも1フレーム以上の目標画像を抽出する(ステップS130)。
ここで、図6を参照して、目標画像抽出部41が第1撮像画像から少なくとも1フレーム以上の目標画像を抽出する処理について説明する。図6は、第1撮像画像から目標画像として抽出されたフレームを例示する図である。目標画像抽出部41は、第1撮像画像から所定の条件を満たすフレームを目標画像として抽出(キャプチャ)する。つまり、この一例において、目標画像抽出部41は、作業対象M1の速度がゼロになった時のフレームを目標画像として抽出する。
より具体的には、目標画像抽出部41は、例えば、時系列順に並ぶ各フレームから作業対象M1をパターンマッチング等によって検出し、検出された作業対象M1が所定時間分のフレームにおいて位置及び姿勢が変化しない(所定誤差の範囲内において変化しない)か否かを判定し、変化していないと判定した場合、作業対象M1の速度がゼロになったと判定し、当該判定に用いたフレームのいずれか1フレーム(例えば、最後のフレーム等)を目標画像として抽出する。
図5に示した第1撮像画像の場合、作業対象M1の移動状態が変化したフレームは、作業対象M1が組付対象O1に嵌め込まれた時のフレームと、作業対象M1が回転させられることで組付対象O1に組み付けが完了した時のフレームとの2つである。図6(A)には、作業対象M1が組付対象O1に嵌め込まれた時のフレームの一例を示す。作業対象M1が組付対象O1に嵌め込まれた時、作業対象M1の並進移動速度は、ゼロになる。目標画像抽出部41は、作業対象M1の並進移動速度が所定時間分のフレームにおいてゼロであると判定した場合、当該判定に用いたフレームの最後のフレームを目標画像として抽出する。
また、図6(B)には、作業対象M1が回転させられることで組付対象O1に組み付けが完了した時のフレームの一例を示す。作業対象M1が回転させられることで組付対象O1に組み付けが完了した時、作業対象M1の回転角速度は、ゼロになる。目標画像抽出部41は、作業対象M1の回転角速度が所定時間分のフレームにおいてゼロであると判定した場合、当該判定に用いたフレームの最後のフレームを目標画像として抽出する。
なお、目標画像抽出部41は、作業対象M1の速度がゼロになった時のフレームを目標画像として抽出する構成であるとしたが、これに代えて、作業対象M1の速度がゼロになった時のフレームとともに、第1撮像画像から所定時間経過毎のフレームを目標画像として抽出する構成であってもよい。また、目標画像抽出部41は、速度がゼロになった時のフレームを目標画像として抽出する構成に加えて、速度とは異なる何らかの作業対象M1に係る物理量がゼロになった時のフレームを目標画像として抽出する構成であってもよい。
次に、目標画像抽出部41は、抽出された目標画像を時系列順に記憶部32に記憶させる(ステップS140)。すなわち、目標画像抽出部41は、この一例において、図6(A)に示した目標画像と、図6(B)に示した目標画像とを時系列順に記憶部32に記憶させる。
ここで、図6(A)及び図6(B)に示したような目標画像に基づいて制御装置30により行われるロボット制御についての具体例について説明する。以下、説明の便宜上、目標画像が表す状態であって作業対象M1と組付対象O1の状態を、単に目標画像が表す状態と称する。制御装置30は、例えば、目標画像に基づいたビジュアルサーボによってロボット20を制御する。制御装置30は、ロボット20と、ロボット20の把持部HNDが把持している作業対象M2と、ロボット20により作業対象M2が組み付けられる組付対象O2とが含まれる範囲が撮像された第2撮像画像に基づいて、作業対象M2と組付対象O2と力センサー22の相対的な位置関係を導出する。
従って、制御装置30は、導出された相対的な位置関係と、抽出された少なくとも1フレーム以上の目標画像とに基づいて、目標画像が表す状態を実現させるようにロボット20を制御する。より具体的には、制御装置30は、把持部HND及びマニピュレーターMNPによって作業対象M2を組付対象O2に対して相対移動させることで、目標画像が表す状態を実現させるようにロボット20を制御する。
また、制御装置30は、作業対象M2を組付対象O2に対して相対移動させる際、ロボット20が把持部HNDにより把持している作業対象M2を回転させるように、ロボット20を制御する場合がある。この場合、制御装置30は、作業対象M2を、作業対象M2に設定された所定位置(以下、回転中心位置と称する)を中心として回転させるようにロボット20を制御する。なお、以下では、回転中心位置における作業対象M2の姿勢を、回転中心姿勢と称する。
この制御において、制御装置30は、作業対象M2と力センサー22の相対的な位置及び姿勢(相対的な位置関係)が変化した場合であっても、第2撮像画像から相対的な位置関係が変化した後の回転中心位置及び回転中心姿勢を検出する。そして、制御装置30は、ロボット20に作業対象M2を回転させる動作を行わせる際、検出された回転中心位置を中心として、回転中心姿勢を基準に作業対象M2を回転させるようにロボット20を制御する。また、制御装置30は、ロボット20に作業対象M2を並進させる際、検出された回転中心姿勢を基準に並進させるようにロボット20を制御する。
なお、回転中心位置は、ユーザー(例えば、図1におけるユーザーU等)により作業対象M2上の任意の位置に設定(制御装置30の記憶部32に記憶)される。また、回転中心姿勢は、回転中心位置における作業対象M2の姿勢としたが、作業対象M2の姿勢と対応付けられた姿勢であれば、作業対象M2の姿勢と一致していなくてもよい。
このように、本実施形態における制御装置30は、目標画像に基づくビジュアルサーボによってロボット20を動作させる構成とするが、これに代えて、目標画像に基づいた他の何らかのロボット制御によってロボット20を動作させる構成であってもよい。
ここで、制御装置30が前記のビジュアルサーボによるロボット制御を行う際に使用する座標系について図7を参照して説明する。図7は、ロボットシステム1において使用する座標系を例示する図である。なお、以下の説明では、「_」の後に記載した文字が、「_」の手前の文字の下付き添え字を表すとして説明する。
制御装置30は、図7に示したように、7つの三次元直交座標系、すなわち、撮像部座標系Σ_cと、作業座標系Σ_wと、ツール座標系Σ_tと、重心座標系Σ_gと、作業対象座標系Σ_mと、外力座標系Σ_eと、組付対象座標系Σ_oを用いて、ロボット20が所定の作業を行うように制御するための処理を行う。これら7つの座標系の原点及び座標軸の方向は、ユーザーにより制御装置30に設定(記憶又は登録)される。
これら7つの座標系の原点はいずれも、対象X(今の場合、第2撮像部12、ロボット20の支持台、力センサー22、作業対象M2の重心、作業対象M2の回転中心、作業対象M2、組付対象O2)の位置を表すように、対象Xに付随して動くように設定される。また、これら7つの座標系の座標軸の方向はいずれも、対象Xの姿勢を表すように、対象Xの姿勢変化に付随して動くように設定される。なお、ユーザーは、対象Xの位置と座標系の原点の位置を対応付けることができ、さらに、対象Xの傾きと座標系の方向を対応付けることができる前提で、対象Xに対して設定する座標系の原点の位置と座標軸の方向を任意の位置と方向に設定してもよい。
撮像部座標系Σ_cは、第2撮像部12の位置(例えば、撮像素子上の予め決められた位置を原点とする)及び姿勢を表す座標系である。
作業座標系Σ_wは、ロボット20の支持台の位置及び姿勢を表す座標系である。
ツール座標系Σ_tは、力センサー22の位置(例えば、力センサー22の重心や、力センサー22の位置を示すマーカーの位置を原点とする)及び姿勢に設定された座標系である。なお、本実施形態において、ツール座標系Σ_tは、説明を簡略化するため、力センサー22の位置及び姿勢を表すとともに、把持部HNDの位置及び姿勢を表す。
一般的には、力センサー22の位置及び姿勢を表すセンサー座標系と、把持部HNDの位置及び姿勢を表す手先(把持部)座標系とは一致せず、制御装置30は、作業座標系とセンサー座標系との相対的な位置関係と、センサー座標系と手先座標系との相対的な位置関係とを用いて、作業座標系と手先座標系との相対的な位置関係を算出し、算出された作業座標系と手先座標系との相対的な位置関係に基づいたロボット20の制御を行う。
重心座標系Σ_gは、作業対象M2の重心の位置及び姿勢を表す座標系である。
作業対象座標系Σ_mは、作業対象M2(例えば、初期状態において把持部HNDから最も離れた作業対象M2上の位置等)の位置及び姿勢を表す座標系である。
外力座標系Σ_eは、対象物に働く外力及び外モーメントを定義する座標系である。又、本実施形態では、コンプライアントモーション制御による運動を定義する座標系を外力座標系Σ_eと一致させる。すなわち、コンプライアントモーション制御による回転運動は外力座標系Σ_eの姿勢を基準として、外力座標系Σ_eの原点周りの回転で表される。ただし、これらは一致させなくともよく、ユーザーが任意に配置することが可能である。
なお、以下では、区別する必要が無い限り、対象物に働く外力(すなわち、力センサーによって検出される外力)を単に力と称し、外モーメント(すなわち、力センサーによって検出されるモーメント)をモーメントと称する。上述したように、回転中心位置は、ユーザーにより任意の位置に設定することができるが、本実施形態では、作業対象M2上の所定位置に設定されたものとして説明する。
組付対象座標系Σ_oは、組付対象O2(例えば、作業対象M2に最も近い組付対象O2上の位置)の位置及び姿勢を表す座標系である。
以下の説明では、座標系が対象Xに付随して動くため、座標系aにおける座標系bの原点の位置を、座標系bが設定された対象Xの位置として説明する。例えば、作業座標系Σ_wにおける作業対象座標系Σ_mの原点の位置を、作業座標系Σ_wにおける作業対象M2の位置と称する。これと同様に、座標系aにおける座標系bの姿勢を、座標系bが設定された対象Xの姿勢として説明する。例えば、作業座標系Σ_wにおける作業対象座標系Σ_mの姿勢を、作業座標系Σ_wにおける作業対象M2の姿勢と称する。
ここで、より具体的な説明を記載する前に、制御装置30が行う処理について説明するために用いる数式の表記法を示す。まず、以下の説明では、「^」の後に記載した文字が、「^」の手前の文字の上付き添え字を表すとして説明する。また、「(→)」が付記された一番手前の文字をベクトルとして説明する。また、「(^)」が付記された一番手前の文字を行列として説明する。
これらの表記法の下では、座標系aにおいて、座標系bが設定された対象Xの位置を表すベクトルを、位置ベクトルp_b^a(→)と表す。位置ベクトルp_b^a(→)は、以下の式(1)に示したように、座標系bにおける対象Xのx座標x^b、y座標y^b、z座標z^bで定義される。
位置ベクトルの表記法と同様に、座標系aにおいて座標系bが設定された対象Xの姿勢を表すベクトルを、姿勢ベクトルo_b^a(→)と表す。姿勢ベクトルo_b^a(→)は、以下の式(2)に示したように、その成分を、オイラー角(α_b^a,β_b^a,γ_b^a)を用いて以下の式(2)のように表す。
ここで、オイラー角は座標系aのx軸、y軸及びz軸を、それぞれ座標系bのx軸、y軸及びz軸に一致させるために、座標系aのz軸、y軸及びx軸周りに回転させる角度として定義され、それぞれγ_b^a、β_b^a及びα_b^aと表す。
座標系bの姿勢で表された対象Xの位置や姿勢を、座標系aの姿勢で表された対象Xの位置や姿勢に回転させる時の回転行列を、回転行列R_b^a(^)と表す。尚、上述のオイラー角と回転行列の間には以下に示した式(3)の関係がある。
ここで、上記の式(1)〜(3)で示したベクトルは、以下の変換式(4)〜(6)で添え字の上下を入れ替えることができる。
ここで、[R_b^a(^)]^Tは、R_a^bの転置行列を表す。すなわち、回転行列の添え字は、回転行列を転置することによって入れ替えることができ、ベクトルの添え字は、回転行列によって入れ替えることができる。なお、以下では、座標系aにおいて座標系bが設定された対象Xの位置を示す位置ベクトルp_b^a(→)を、必要がある場合を除いて、単に座標系aにおける対象Xの位置と称する。例えば、撮像部座標系Σ_cにおいて表された組付対象O2に設定された組付対象座標系Σ_oの原点の位置を示す位置ベクトルp_o^c(→)を、単に撮像部座標系Σ_cにおける組付対象O2の位置と称する。
位置の場合と同様に、以下では、座標系aにおいて座標系bが設定された対象Xの姿勢を示す姿勢ベクトルo_b^a(→)を、必要がある場合を除いて、単に座標系aにおける対象Xの姿勢と称する。例えば、撮像部座標系Σ_cにおいて表された組付対象O2に設定された組付対象座標系Σ_oの姿勢を示す姿勢ベクトルo_o^c(→)を、単に撮像部座標系Σ_cにおける組付対象O2の姿勢と称する。
以下、図8を参照して、制御部36が目標画像に基づくビジュアルサーボによってロボット20を動作させる処理について説明する。図8は、制御部36が目標画像に基づくビジュアルサーボによってロボット20を動作させる処理の流れの一例を示すフローチャートである。まず、ロボット制御部42は、入力受付部33を介してユーザーから入力された位置と姿勢であって、図1に示したように設置された状態の作業対象座標系Σ_mにおける組付対象O2の位置p_o^m(→)と姿勢o_o^m(→)を設定する(ステップS200)。
次に、ロボット制御部42は、入力受付部33を介してユーザーから入力された回転中心位置と回転中心姿勢であって、作業対象座標系Σ_mにおける回転中心位置p_e^m(→)と回転中心姿勢o_e^m(→)を設定する(ステップS210)。ステップS200からステップS210までが、ユーザーにより行われる制御装置30への初期設定である。次に、ロボット制御部42は、記憶部32から時系列順に目標画像を読み込む(ステップS220)。
次に、ロボット制御部42は、ステップS220で読み込まれた目標画像を時系列順に選択し、選択された目標画像に基づいてステップS240の処理を繰り返し行う(ステップS230)。制御部36の各機能部は、選択された目標画像と、設定された組付対象O2の位置p_o^m(→)と姿勢o_o^m(→)と、作業対象座標系Σ_mにおける回転中心位置p_e^m(→)と回転中心姿勢o_e^m(→)とに基づいたビジュアルサーボによってロボット20を動作させるロボット制御処理を行う(ステップS240)。
ここで、図9を参照して、制御部36のロボット制御部42が行う目標画像に基づいたロボット制御処理について説明する。図9は、制御部36のロボット制御部42が行う目標画像に基づいたロボット制御処理の流れの一例を示すフローチャートである。ここから、ステップS230の後に、第2撮像部12による撮像が開始され、制御部36が画像取得部35から第2撮像画像を取得したものとして説明する。制御部36が第2撮像画像を取得した後、ロボット制御部42は、画像取得部35により取得された第2撮像画像に基づいて、撮像部座標系Σ_cにおける組付対象O2の位置p_o^c(→)と姿勢o_o^c(→)を検出する(ステップS300)。
次に、ロボット制御部42は、図8に示したフローチャートにおけるステップS200の処理で設定された作業対象座標系Σ_mにおける組付対象O2の位置p_o^m(→)及び姿勢o_o^m(→)と、ステップS300で検出された撮像部座標系Σ_cにおける組付対象O2の位置p_o^c(→)及び姿勢o_o^c(→)と、選択された目標画像とに基づいて、以下に示した式(7)から、選択された目標画像が表す作業対象M2と組付対象O2の状態における作業対象M2の目標位置と姿勢であって、撮像部座標系Σ_cにおける作業対象M2の目標位置p_m^c(d)(→)と姿勢o_m^c(d)(→)を算出する(ステップS310)。目標位置とは、ロボット制御部42が導出した動作完了時の撮像部座標系Σ_cにおける作業対象M2の位置である。また、以下では、ロボット制御部42が導出した動作完了時の撮像部座標系Σ_cにおける作業対象M2の姿勢を目標姿勢と称する。
より具体的には、ロボット制御部42は、目標画像に基づいて、作業対象M2と組付対象O2の間の撮像部座標系Σ_cにおける相対位置及び姿勢を検出する。なお、第1撮像部11の撮像部座標系と第2撮像部12の撮像部座標系Σ_cとは、キャリブレーション等によって対応付けられているものとする。そして、ロボット制御部42は、検出された作業対象M2と組付対象O2の間の撮像部座標系Σ_cにおける相対位置及び姿勢と、ステップS200の処理で設定された作業対象座標系Σ_mにおける組付対象O2の位置p_o^m(→)及び姿勢o_o^m(→)と、ステップS300で検出された撮像部座標系Σ_cにおける組付対象O2の位置p_o^c(→)及び姿勢o_o^c(→)とに基づいて、上記の式(7)から、選択された目標画像が表す作業対象M2と組付対象O2の状態における作業対象M2の目標位置と姿勢であって、撮像部座標系Σ_cにおける作業対象M2の目標位置p_m^c(d)(→)と姿勢o_m^c(d)(→)を算出する。
ここで、撮像部座標系Σ_cにおける作業対象M2の目標位置p_m^c(d)(→)及び姿勢o_m^c(d)(→)の「(d)」は、ステップS320でロボット制御部42により検出される撮像部座標系Σ_cにおける作業対象M2の位置p_m^c(→)及び姿勢o_m^c(→)と区別するために付記したラベルである。
ステップS300からステップS310までの処理は、制御部36が、第2撮像部12と組付対象O2の相対的な位置及び姿勢と、選択された目標画像が表す状態であって、作業対象M2と組付対象O2の状態における作業対象M2と組付対象O2の相対的な位置関係(位置及び姿勢)とに基づいて、選択された目標画像が表す状態における作業対象M2と、第2撮像部12との相対的な位置及び姿勢を間接的に算出するための処理である。
次に、ロボット制御部42は、取得された第2撮像画像から、撮像部座標系Σ_cにおける作業対象M2の位置p_m^c(→)と姿勢o_m^c(→)を検出する(ステップS320)。次に、ロボット制御部42は、取得された第2撮像画像から、ツール座標系Σ_tにおける第2撮像部12の位置p_c^t(→)と姿勢o_c^t(→)を検出する(ステップS330)。
次に、ロボット制御部42は、ステップS320で算出された撮像部座標系Σ_cにおける作業対象M2の位置p_m^c(→)及び姿勢o_m^c(→)と、ステップS330で算出されたツール座標系Σ_tにおける第2撮像部12の位置p_c^t(→)及び姿勢o_c^t(→)に基づいて、以下に示した式(8)から、ツール座標系Σ_tにおける回転中心の位置p_e^t(→)と姿勢o_e^t(→)を算出する(ステップS340)。
ここで、ステップS340の処理は、力センサー22と上述の回転中心位置及び回転中心姿勢の相対的な位置関係の変化を検出する処理である。ステップS340において算出されたツール座標系Σ_tにおける回転中心の位置p_e^t(→)と姿勢o_e^t(→)が、前のルーチンで算出された値と異なることは、力センサー22と回転中心位置及び回転中心姿勢の相対的な位置関係が、外力によって変化させられたことを示す。制御部36は、この変化を検出することで、外力によって力センサー22に対する回転中心位置及び回転中心姿勢が変化されたとしても、変化された後の力センサー22に対する回転中心位置及び回転中心姿勢に基づいて、ロボット20が常に回転中心位置を中心として、回転中心姿勢を基準に作業対象M2を回転するように制御することができる。
次に、ロボット制御部42は、順運動学に基づいて、作業座標系Σ_wにおける力センサー22の位置p_t^w(→)と姿勢o_t^w(→)を算出する(ステップS350)。次に、ロボット制御部42は、ステップS340で算出されたツール座標系Σ_tにおける回転中心位置p_e^t(→)と回転中心姿勢o_e^t(→)と、ステップS350で算出された作業座標系Σ_wにおける力センサー22の位置p_t^w(→)及び姿勢o_t^w(→)に基づいて、以下に示した式(9)から、外力座標系Σ_eにおけるロボット20の支持台の位置p_w^e(→)と姿勢o_w^e(→)を算出する(ステップS360)。
ここで、制御部36は、ステップS360の処理によって、外力座標系Σ_eにおけるロボット20の支持台の位置p_w^e(→)と姿勢o_w^e(→)を算出することで、力センサー22に働いた力及びモーメントにより回転中心位置に働いた力及びモーメントを、次のステップS370の処理で算出することができる。
次に、ロボット制御部42は、力センサー22により検出された力とモーメントであって、ツール座標系Σ_tにおける力f^t(→)とモーメントm^t(→)に基づいて、以下に示したニュートン・オイラー方程式(10)から、外力座標系Σ_eにおける力(すなわち、回転中心位置に働いた力)f^e(→)とモーメント(すなわち、回転中心位置に生じたモーメント)m^e(→)を算出する(ステップS370)。
ここで、上記の式(10)における上段式は、作業対象M2の回転中心位置に働いた外力の成分f^e(→)が、力センサー22によって検出された力の成分f^t(→)から、重力による成分mE(^)g(→)とロボット20のマニピュレーターMNPによる慣性運動による成分mE(^)p_c^w(→)(・・)を差し引いた成分で表されることを示している。なお、「(・・)」が付記された一番手前の文字は、時間について二回微分された変数を表している。また、行列E(^)は、単位行列であり、ベクトルg(→)は、重力加速度を表すベクトルであり、スカラーmは、作業対象M2の質量を表す。
前記の上段式と同様に、下段式は、作業対象M2に働いた外力により回転中心に生じたモーメントm^eが、ねじりモーメントの成分I(^)o_c^w(→)(・・)と、コリオリの力によるモーメントの成分o_c^w(→)(・)×I(^)o_c^w(→)(・)と、力センサー22により検出されたモーメントm^t(→)と、力センサー22によって検出された力の成分f^t(→)によるモーメントの成分p_e^t(→)×f^t(→)を加算したものから、重力によるモーメントの成分p_g^t(→)×mR_w^t(^)g(→)を差し引いた成分で表されることを示している。
次に、ロボット制御部42は、ステップS370で算出された外力座標系Σ_eにおける力f^e(→)及びモーメントm^e(→)に基づいて、以下に示した式(11)から、外力座標系Σ_eにおける作業対象M2の緩和動作量の微小緩和移動量Δp^e(→)と微小緩和回転量Δo^e(→)を算出する(ステップS380)。
ここで、ステップS380で用いられる式(11)のΔP^e(→)及びΔO^e(→)は、それぞれΔp^e(→)及びΔo^e(→)をラプラス変換したものである。また、式(11)は、作業対象M2に設定されている回転中心位置が外力を受けたときに、その外力を緩和させる方向に移動するべき動作量(微小移動量及び微小回転量)を決定する運動モデルに依って異なる。
本実施形態では、上記の式(11)に示したように、微小移動量に関する慣性質量行列M_p(^)、ダンパー係数行列D_p(^)、バネ乗数行列K_p(^)と、微小回転量に関する慣性質量行列M_o(^)、ダンパー係数行列D_o(^)、バネ乗数行列K_o(^)とによって表される運動モデルを採用している。
このような運動モデルによって行われる制御は、コンプライアントモーション制御のうちインピーダンス制御と呼ばれる。なお、スカラーsは、ラプラス変換に用いる変数である。コンプライアントモーション制御としては、インピーダンス制御に限定されるものではなく、例えばスティフネス制御やダンピング制御を適用しても良い。
次に、ロボット制御部42は、ステップS380で算出された外力座標系Σ_eにおける作業対象M2の緩和動作量に基づいて、以下に示した式(12)から、作業座標系Σ_wにおける力センサー22の緩和動作量として微小緩和移動量Δp_t^w(i)(→)と微小緩和回転量Δo_t^w(i)(→)を算出する(ステップS390)。
ここで、緩和動作量である微小緩和移動量Δp_t^w(i)(→)と微小緩和回転量Δo_t^w(i)(→)における「(i)」は、緩和動作量と目標動作量を区別するためのラベルである。制御部36のロボット制御部42は、ステップS380からステップS390までの処理によりロボット制御部42が算出した作業座標系Σ_wにおける緩和動作量に基づいて、回転中心位置に働いた力及びモーメントが緩和される位置まで、力センサー22の位置及び姿勢を移動するようにロボット20を制御することができる。
次に、ロボット制御部42は、ステップS310で算出された目標画像が表す作業対象M2と組付対象O2の状態の撮像部座標系Σ_cにおける作業対象M2の目標位置p_m^c(d)(→)及び姿勢o_m^c(d)(→)と、ステップS320で検出された撮像部座標系Σ_cにおける作業対象M2の位置p_m^c(→)と姿勢o_m^c(→)に基づいて、以下に示した式(13)から、作業対象M2を目標位置及び姿勢に移動させるための目標動作量であって、撮像部座標系Σ_cにおける目標動作量として微小目標移動量Δp_m^c(→)と微小目標回転量Δo_m^c(→)を算出する(ステップS400)。
次に、ロボット制御部42は、ステップS400で算出された撮像部座標系Σ_cにおける作業対象M2の目標動作量に基づいて、以下に示した式(14)から、作業座標系Σ_wにおける力センサー22の目標動作量として微小目標移動量Δp_t^w(v)(→)と微小目標回転量Δo_t^w(v)(→)を算出する(ステップS410)。
ここで、目標動作量である微小目標移動量Δp_t^w(v)(→)と微小目標回転量Δo_t^w(v)(→)における「(v)」は、目標動作量と緩和動作量を区別するためのラベルである。
次に、ロボット制御部42は、ステップS390で算出された緩和動作量と、ステップS410で算出された目標動作量を、以下に示した式(15)のように加算した加算微小移動量Δp_t^w(→)及び加算微小回転量Δo_t^w(→)を算出する(ステップS420)。
次に、ロボット制御部42は、ステップS420で算出された加算微小移動量Δp_t^w(→)及び加算微小回転量Δo_t^w(→)の両方が、それぞれに対する所定の閾値未満か否かを判定する(ステップS430)。なお、前記のそれぞれに対する所定の閾値は、それぞれが別に設定される。ロボット制御部42は、加算微小移動量Δp_t^w(→)及び加算微小回転量Δo_t^w(→)の両方が、それぞれに対する所定の閾値未満であると判定した場合(ステップS430−Yes)、作業対象M2をこれ以上動かす必要がないと判断して処理を終了する。
一方、ロボット制御部42が加算微小移動量Δp_t^w(→)及び加算微小回転量Δo_t^w(→)のうちいずれか一方又は両方が、それぞれに対する所定の閾値未満ではないと判定した場合(ステップS430−No)、ロボット制御部42は、ステップS390で算出された緩和動作量と、ステップS410で算出された目標動作量とに基づいて、以下に示した式(16)から、作業座標系Σ_wにおける力センサー22の目標位置p_t^w(d)(→)及び姿勢o_t^w(d)(→)を算出する(ステップS440)。
なお、ロボット制御部42は、ステップS420で算出された加算微小移動量Δp_t^w(→)及び加算微小回転量Δo_t^w(→)の両方が、それぞれに対する所定の閾値未満か否かを判定する構成に代えて、ステップS410で算出された微小目標移動量Δp_t^w(v)(→)と微小目標回転量Δo_t^w(v)(→)の両方が、それぞれに対する所定の閾値未満であるか否かを判定する構成であってもよい。また、ロボット制御部42は、ロボット20に行わせる動作毎の性質に応じて、Δp_t^w(→)(i)、Δo_t^w(i)、Δp_t^w(→)(v)及びΔo_t^w(v)で構成される任意の関数を用いて、前記関数から得られる値が所定の閾値未満か否か(作業対象M2をこれ以上動かす必要があるか否か)を判定する構成であってもよい。
次に、ロボット制御部42は、力センサー22の位置及び姿勢が、ステップS440で算出された作業座標系Σ_wにおける力センサー22の目標位置p_t^w(d)(→)及び姿勢o_t^w(d)(→)と一致するように、力センサー22を移動させるようにロボット20を制御する(ステップS450)。制御部36は、ステップS300〜ステップS450の処理を、ステップS430の判定によって作業対象M2をこれ以上動かす必要がないと判断されるまで繰り返すことで、目標画像が表す状態を実現するための動作をロボット20が行うように制御する。
なお、ロボット制御部42は、ステップS330からステップS360までの処理において、例えば、力センサー22がマニピュレーターMNPの内部に備えられ、外部から見えず、第2撮像部12により力センサー22を撮像することができない場合、上述した力センサー22の位置を示すマーカーを備える構成としてもよく、ユーザーにより設定された力センサー22と回転中心位置及び回転中心姿勢の初期状態における相対的な位置関係に基づいて、以下に示した式(17)〜式(19)から、外力座標系Σ_eにおける力センサー22の位置p_t^e(→)と姿勢o_t^e(→)を逐次計算する構成としてもよい。
上記の式(17)〜式(19)は、第2撮像画像から検出される作業対象M2の移動量から、ロボット20自身が動いた量を差し引くことで、力センサー22と作業対象M2の相対的な位置関係がずれた量を算出する式である。なお、ロボット20自身が動いた量は、制御部36によりロボット20の初期状態に基づいて算出される。ユーザーにより設定された力センサー22と回転中心位置及び回転中心姿勢の初期状態における相対的な位置関係及び上記の式(17)〜(19)を用いる構成は、作業対象M2と力センサー22が第2撮像部12の撮像範囲に収まらない場合、すなわち、力センサー22の位置を示すマーカーを用いていても力センサー22の位置を検出できない場合であっても、作業対象M2の位置及び姿勢と力センサー22の位置及び姿勢を追跡できるため、有用である。
ロボット制御部42は、上記の式(17)〜式(19)を用いた逐次計算をすることによって、第2撮像部12により力センサー22を撮像することができない場合であっても、第2撮像部12により力センサー22を撮像できる場合と同様にステップS330からステップS360の処理を行うことができる。その結果として、制御部36は、力センサー22と作業対象M2に設定された所定位置との相対的な位置関係に基づいて、ロボット20が動作を行うようにロボット20を制御することができる。なお、第2撮像部12により力センサー22が撮像することができない場合とは、例えば、力センサー22がマニピュレーターMNPの部材に覆われていた場合や、第2撮像部12の画角から力センサー22を含むマニピュレーターMNPが外れてしまうような場合等である。
<第1実施形態の変形例1>
以下、本発明の第1実施形態の変形例1について説明する。第1実施形態の変形例1に係る制御装置30の制御部36は、第1撮像画像から抽出された目標画像を選択し、選択された目標画像に基づいてビジュアルサーボを行う構成に代えて、第1撮像画像から抽出された目標画像とともに、ユーザーにより入力受付部33から受け付けた静止画像を目標画像として選択し、選択された目標画像に基づいてビジュアルサーボを行う。
これにより、制御部36は、第1撮像画像から所定の条件によって抽出することができない作業対象M2と組付対象O2の状態を表す目標画像に基づいて、ビジュアルサーボを行うことができる。その結果として、ユーザーは、制御部36に対して、より詳細なロボット20の動作を、より簡易に教示することができる。
<第1実施形態の変形例2>
以下、本発明の第1実施形態の変形例2について説明する。第1実施形態の変形例2に係る制御装置30の制御部36は、第1撮像画像から所定の条件を満たしたフレームを目標画像として抽出する。所定の条件とは、例えば、作業対象M1が所定時間静止していることである。
これにより、ユーザーは、第1撮像部11により第1撮像画像が撮像される際、制御部36に対して教示したい動作に係る状態毎に、作業対象M2を少なくとも所定時間以上静止させることで、所望の目標画像を制御部36に抽出させることができる。その結果として、ユーザーは、制御部36に対して、より詳細なロボット20の動作を、より簡易に教示することができる。
以上説明したように、第1実施形態に係るロボットシステム1は、作業対象M1の移動を時系列に撮像した複数の第1撮像画像を受け、複数の第1撮像画像から、作業対象M1の運動状態が変化したときのフレームを目標画像として抽出し、抽出した目標画像を用いて、ビジュアルサーボによりマニピュレーターMNPを動作させる。これにより、ロボットシステム1は、大きな誤差なく教示内容の情報を取得することができる。その結果、ロボットは、教示された動作をビジュアルサーボによって行うことができる。また、ロボットシステム1は、動作の教示を容易に行うことができる。
また、ロボットシステム1は、作業対象M1の移動状態が変化したときのフレームを目標画像として抽出し、抽出した目標画像を用いて、ビジュアルサーボによりマニピュレーターMNPを動作させる。これにより、ロボットシステム1は、作業対象M1の移動状態が変化した時の目標画像に基づく教示内容を取得することができる。
また、ロボットシステム1は、作業対象M1の速度が変化した時のフレームを目標画像として抽出し、抽出した目標画像を用いて、ビジュアルサーボによりマニピュレーターMNPを動作させる。これにより、ロボットシステム1は、作業対象M1の速度が変化した時の目標画像に基づく教示内容を取得することができる。
また、ロボットシステム1は、作業対象M1の接触状態が変化した時のフレームを目標画像として抽出し、抽出した目標画像を用いて、ビジュアルサーボによりマニピュレーターMNPを動作させる。これにより、ロボットシステム1は、作業対象M1の接触状態が変化した時の目標画像に基づく教示内容を取得することができる。
また、ロボットシステム1は、作業対象M1の速度がゼロになった時のフレームを用いて、ビジュアルサーボによりマニピュレーターMNPを移動させることで作業対象M2を組付対象O2に組み付ける。これにより、ロボットシステム1は、作業対象M2の速度がゼロになった時のフレームを目標画像として使用することで、速度がゼロになった時を1つの動作の区切りとすることができる。
また、ロボットシステム1は、第1撮像画像からユーザーにより所望の場面が抽出された抽出画像を目標画像として用いて、ビジュアルサーボによりマニピュレーターMNPを移動させることで作業対象M2を組付対象O2に組み付ける。これにより、ロボットシステム1は、より詳細な教示内容を取得することができる。
<第2実施形態>
以下、本発明の第2実施形態について、図面を参照して説明する。第2実施形態に係るロボットシステム2は、ロボット20として単腕ロボットを具備する構成に代えて、ロボット25として双腕ロボットを具備する構成である。なお、第2実施形態では、第1実施形態と同様な構成部には、同じ符号を付して説明を省略する。
図10は、第2実施形態に係るロボットシステム2の一例を示す構成図である。ロボットシステム2は、第1撮像部11と、第2撮像部12と、ロボット25と、制御装置30とを具備する。第2実施形態において、組付対象O2は、テーブル等の台の上に治具等によって設置されており、双腕ロボットであるロボット25のいずれか一方の腕によって、第1実施形態で説明した目標画像に基づくビジュアルサーボにより作業対象M2が組み付けられる。なお、組付対象O2は、ロボット25の把持部HND2によって把持され、把持部HND1によって第1実施形態で説明した目標画像に基づくビジュアルサーボによる作業対象M2の組付対象O2への組み付けに係る動作が行われるとしてもよい。また、この場合、把持部HND1と把持部HND2の役割が逆であってもよい。
ロボット25は、例えば、把持部HND1と、把持部HND2と、力センサー22と、マニピュレーターMNP1と、マニピュレーターMNP2と、図示しない複数のアクチュエーターとを、図10に示したように、それぞれの腕に備えた双腕ロボットである。
ロボット25の各腕は、6軸垂直多関節型となっており、一方の腕が支持台とマニピュレーターMNP1と把持部HND1とがアクチュエーターによる連携した動作よって6軸の自由度の動作を行うことができ、他方の腕が支持台とマニピュレーターMNP2と把持部HND2とがアクチュエーターによる連携した動作よって6軸の自由度の動作を行うことができる。なお、ロボット20の各腕は、5自由度(5軸)以下で動作するものであってもよいし、7自由度(7軸)以上で動作するものであってもよい。
ロボット25は、第1実施形態において説明した制御装置30によって制御される動作を、把持部HND1及びマニピュレーターMNP1を備えた腕によって行うとするが、把持部HND2及びマニピュレーターMNP2を備えた腕によって同様の動作が行われてもよい。なお、マニピュレーターMNP1(又はマニピュレーターMNP1及び把持部HND1)、マニピュレーターMNP2(又はマニピュレーターMNP2及び把持部HND2)は、それぞれアームの一例である。ロボット25は、例えばケーブルによって制御装置30と通信可能に接続されている。ケーブルを介した有線通信は、例えば、イーサネット(登録商標)やUSB等の規格によって行われる。なお、ロボット25と制御装置30とは、Wi−Fi(登録商標)等の通信規格により行われる無線通信によって接続されてもよい。
また、ロボット25は、図10に示したようにロボット25がロボット25の内部に搭載された制御装置30によって制御される構成とするが、この構成に代えて、制御装置30がロボット25の外部に設置されている構成であってもよい。
以上説明したように、第2実施形態に係るロボットシステム2のロボット25は、双腕ロボットであり、第1撮像部11により撮像された第1撮像画像から少なくとも1フレーム以上の目標画像を抽出し、抽出された目標画像に基づいて双腕ロボットの2つの腕のうちいずれか一方又は両方によって作業対象M2を組付対象O2に組み付ける作業を行うため、第1実施形態と同様の効果を得ることができる。
なお、上記の実施形態において、第1撮像部11が第1撮像画像を撮像し、第2撮像部12が第2撮像画像を撮像する構成としたが、これに代えて、第1撮像部11又は第2撮像部12のうちいずれか一方によって第1撮像画像及び第2撮像画像の両方を撮像する構成であってもよい。その場合、第1撮像画像を撮像するタイミングは、必ず第2撮像画像を撮像するタイミングの前となる。
また、以上に説明した装置(例えば、ロボットシステム1、2)における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、CD(Compact Disk)−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM:Random Access Memory)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。