以下に、添付図面を参照しながら本発明をその例示的な実施形態を通して説明する。
[第1実施形態]
図1には、本発明の一実施形態の処理装置1の構成が示されている。処理装置1は、物体500を認識し物体500に処理を行う。物体500を処理することは、例えば、物体500を保持(例えば、把持)すること、操作(例えば、移動または回転)すること、検査すること、他の物体に固定すること、または、物理的又は化学的に変化させることなどを含みうる。
処理装置1は、物体500を計測する計測装置700と、計測装置700による計測結果に基づいて物体500を処理するロボットシステム800とを備えうる。計測装置700は、センサ100と、センサ100を制御したりセンサ100から供給される情報を処理したりするコンピュータ200(演算部)とを含みうる。コンピュータ200の機能の全部または一部は、センサ100に組み込まれてもよい。物体500を計測することは、例えば、物体500の位置を計測すること、または、物体500の位置および姿勢を計測することを含みうる。ロボットシステム800は、物体500を処理するハンド310を有するロボット300と、ロボット300を制御するロボットコントローラ400とを含みうる。
センサ100は、ロボット300のハンド310に固定されうる。ロボット300は、例えば、ハンド310を複数軸(例えば6軸)に関して操作可能であり、また、ハンド310によって保持された物体500を複数軸(6軸)に関して操作可能である。ロボット300は、ハンド310の複数軸の制御量を出力するエンコーダを含みうる。エンコーダの出力は、ロボットコントローラ400がロボット300のハンド310を制御するために使用されうる他、センサ100の位置および姿勢を取得するために使用されうる。
計測装置700は、物体500の距離画像を生成し、距離画像に基づいて物体500上の三次元点群の座標データを生成する。あるいは、計測装置700は、物体500の距離画像を生成し、距離画像にモデルフィッティングを施すことにより、物体500の位置および姿勢を検出する。あるいは、計測装置700は、物体500の濃淡画像を生成し、濃淡画像にモデルフィッティングを施すことにより、物体500の位置および姿勢を検出する。あるいは、計測装置700は、物体500の距離画像および濃淡画像を生成し、距離画像および濃淡画像の双方に基づいて物体500の位置および姿勢を検出する。なお、計測装置700は、物体500の姿勢を検出する必要がない場合は、物体500の位置のみを検出するように構成されうる。
距離画像は、例えば、センサ100の照明部からのパターン光によって照明された物体500をセンサ100の撮像部で撮像した撮像画像から三角測量の原理に基づいて計算される距離値を有する。このような方式は、アクティブステレオ方式と呼ばれる。距離画像は、一枚の撮像画像から生成されてもよいし、同時刻に撮像された複数枚の撮像画像に基づいて生成されてもよい。一枚の撮像画像に基づいて距離画像を生成する方式としては、例えば、符号化されたドットラインパターンを物体500に投影し、物体500を撮像する方式がある。
センサ100は、センサ100で撮像した画像に基づいてセンサ座標系における物体500の位置および姿勢を計測することができる。ロボットシステム800は、ロボット座標系におけるセンサ100の位置および姿勢を取得することができる。センサ座標系における物体500の位置および姿勢を表す行列TrWS、ロボット座標系におけるセンサ100の位置および姿勢を表す行列TrSRとを使って、ロボット座標系における物体500の位置および姿勢TrWRを式(1)に従って計算することができる。
ここで、センサ100は、ロボット300のハンド310の先端にマウンタなどを介して取り付けられうる。よって、マウンタ座標系におけるセンサ100の位置姿勢をTrSM、ロボット座標系におけるマウンタの位置姿勢をTrMRとすると、式(1)のTrSRは、TrSMとTrMRの積と等価である。すなわち、ロボット座標系における物体500の位置および姿勢TrWRは、TrSMおよびTrMRを使って式(2)に従って計算することもできる。
なお、センサ100とマウンタとの位置関係は、センサ100の設置時に行うキャリブレーションで知ることができる。更に、ロボット座標系におけるマウンタの位置姿勢は、ロボット300の各軸のエンコーダの出力に基づいて知ることができる。式(1)あるいは(2)の演算は、コンピュータ200で実行されてもよいし、センサ100で実行されてもよいし、ロボットコントローラ400で実行されてもよい。
処理装置1では、ロボット300がハンド310を移動させることによってセンサ100を物体500に対して相対的に移動させながら、センサ100によって物体500が撮像される。コンピュータ200は、センサ100によって撮像された画像に基づいて、センサ座標系における物体500の位置および姿勢を検出する。一方、ロボットコントローラ400は、ロボット300のエンコーダからの出力に基づいて、ロボット座標系におけるセンサ100の位置および姿勢を取得する。ロボットコントローラ400は、ロボット座標系におけるセンサ100の位置および姿勢と、センサ座標系における物体500の位置および姿勢に基づいて、ロボット座標系における物体500の位置および姿勢を計算することができる。ロボットコントローラ400は、ロボット座標系における物体500の位置および姿勢に基づいて、物体500をピッキングするようロボット300を制御する。
センサ100では、照明部がパターン光で物体500を照明し、撮像部がそのパターン光を撮像する。撮像された画像は、センサ100からコンピュータ200に供給され、コンピュータ200は、この画像を処理することによって距離画像を生成し、この距離画像に基づいて物体500の位置および姿勢を計算しうる。このような方式では、センサ100の照明部に物体500を照明させる照明期間と撮像部に物体500を撮像させる撮像期間とが重複する期間である計測期間(重複期間)が、計測装置700における物体500の計測に寄与する。つまり、計測期間において、撮像部の各画素の光電変換部に入射したパターン光の光電変換がなされ、これによって生成される電荷が蓄積される。撮像期間であっても照明期間でなければ、パターン光の光電変換がなされず、照明期間であっても撮像期間でなければ、パターン光の光電変換がなされない。
物体500に対してセンサ100(ハンド310)が相対的に移動している場合、計測期間中に撮像部の撮像面に形成されるパターン光の像(この像は移動する)が撮像部によって撮像される。物体500に対するセンサ100の相対的な移動が等速であると見做せる場合、コンピュータ200は、計測期間における物体500の位置および姿勢のそれぞれの平均値を算出する。計測期間における物体500の位置および姿勢のそれぞれの平均値は、計測期間の中間点(計測中心時刻)における物体500の位置および姿勢と一致する。
ロボットコントローラ400は、計測装置700によるセンサ座標系における物体500の位置および姿勢の計測タイミングとロボットコントローラ400によるロボット座標系におけるセンサ100の位置および姿勢の取得タイミングとを同期させる必要がある。そこで、ロボットコントローラ400は、計測期間の中間点のタイミングで、ロボットコントローラ400によるロボット座標系におけるセンサ100の位置および姿勢を取得する。
ここで、参考として、同期誤差による計測誤差を例示する。例えば、計測装置700によるセンサ座標系における物体500の位置および姿勢の計測タイミングと、ロボットコントローラ400によるロボット座標系におけるセンサ100の位置および姿勢の取得タイミングとの間の同期誤差が1ミリ秒であるものとする。この場合、ロボット300のハンド310を移動させることによってセンサ100が1メートル/秒で移動するとすれば、ロボット座標系に変換された物体500の位置には、1ミリメートルの誤差が存在する。
図2には、本発明の第1実施形態における処理装置1の構成が示されている。処理装置1は、計測装置700およびロボットシステム800を備えうる。計測装置700は、センサ100を含み、アクティブステレオ方式で物体500の位置および姿勢を取得する。なお、物体500の姿勢を取得する必要がない場合には、計測装置700は、物体500の位置のみを取得する。
センサ100は、物体500をパターン光で照明する照明部10と、パターン光で照明された物体500を撮像する撮像部20と、照明部10および撮像部20を制御する制御部30とを備えうる。制御部30は、照明部10に物体500を照明させる照明期間と撮像部20に物体500を撮像させる撮像期間20とが重複する期間である計測期間に応じて決定されるタイミングを示すタイミング情報として、計測時刻信号を出力する。計測装置700は、センサ100の他、コンピュータ200(演算部)を備えうる。コンピュータ200は、例えば、センサ100の撮像部20から供給される画像に基づいて物体500の距離画像を生成し、該距離画像に基づいて物体500の位置および姿勢を取得する。
照明部10は、例えば、LED(Light Emitting Diode)等の光源と、光源からの光を使ってパターン光を生成するためのマスクと、パターン光を投影する光学系と、光源を駆動するための駆動回路とを含みうる。マスクは、物体500に投影すべきパターンが描画された部材であり、例えば、ガラス基板にクロムメッキで遮光部を形成することによって構成されうる。マスクを用いる代わりには、DMD(Digtal Mirror Device)または液晶パネルが採用されてもよい。
撮像部20は、撮像素子と、パターン光で照明された物体500の像を撮像素子の撮像面に形成する結像光学系とを含みうる。撮像素子は、CCD撮像素子またはCMOS撮像素子等でありうる。CMOS撮像素子を採用する場合、グローバルシャッタ方式のCMOS撮像素子であることが望ましい。ローリングシャッタ方式のCMOS撮像素子では、行ごとに撮像期間(計測期間)が異なるので、誤差要因となりうる。
制御部30は、例えば、FPGA(Field Programmable Gate Arrayの略。)などのPLD(Programmable Logic Deviceの略。)、又は、ASIC(Application Specific Integrated Circuitの略。)で構成されうる。制御部30は、コンピュータ200によって設定される照明時間および撮像時間などの計測パラメータに基づいて、照明部10および撮像部20を制御する。
照明時間および撮像時間などの計測パラメータの設定は、コンピュータ200が行ってもよいし、ロボットコントローラ400が行ってもよい。あるいは、物体500の位置および姿勢の計測に先立ってプリ計測を行い、プリ計測の結果に基づいて制御部30が照明時間および撮像時間を設定してもよい。計測パラメータは、物体500の反射率に応じて設定されうる。例えば、物体500が金属のように反射率が高い物体である場合は、照明期間および撮像期間は短い時間を有するように設定され、逆に反射率が低い黒色の物体である場合は、照明期間および撮像期間は長い時間を有するように設定されうる。
制御部30は、例えば、ロボットコントローラ400から提供される計測トリガに応答して、照明部10による照明および撮像部20による撮像の制御を開始するように構成されうる。あるいは、制御部30は、ロボットコントローラ400からコンピュータ200を経由して提供される計測トリガに応答して、照明部10による照明および撮像部20による撮像の制御を開始するように構成されうる。
コンピュータ200から制御部30に対して計測パラメータを送信するため、コンピュータ200と制御部30とは、例えば、EthernetまたはRS−232C等のインターフェースによって接続されうる。ロボットコントローラ400から制御部30に対して計測トリガを提供するために、ロボットコントローラ400と制御部30とは、例えば、フォトカプラ等のインターフェースによって接続されうる。照明部10の動作を制御するため、制御部30と照明部10とは、例えば、照明信号を伝送するデジタル信号線で接続され、制御部30は、例えば、照明信号をアクティブレベルにするかどうかによって照明部10による照明動作を制御しうる。制御部30と撮像部20とは、例えば、撮像信号を伝送するデジタル信号線で接続され、制御部30は、撮像信号をアクティブレベルにするかどうかによって撮像部20による撮像動作を制御しうる。
制御部30は、計測装置700による物体500の位置および姿勢の計測タイミングと、ロボットコントローラ400によるセンサ100の位置および姿勢の取得タイミングとを同期させるために計測時刻信号をロボットコントローラ400へ送信する。ここで、計測時刻信号は、計測期間に応じて決定されるタイミングを示す信号(タイミング情報)であり、より具体的には、計測期間の中間点のタイミングを示す信号である。
以下、図3のタイミングチャートを参照しながら第1実施形態の処理装置1の動作を説明する。ロボットコントローラ400から出力された計測トリガ(3−a)は、ロボットコントローラ400と制御部30との間のインターフェースを構成するインターフェース回路および通信路で発生する伝達遅延時間τ1の後に制御部30によって受信される。制御部30は、計測トリガ(3−a)の受信に応答して、計測のための制御を開始する。具体的には、制御部30は、計測トリガ(3−a)の受信に応答して、照明信号(3−b)を照明期間にわたってアクティブレベルにし、また、撮像信号(3−c)を撮像期間にわたってアクティブレベルにする。一例として、ロボットコントローラ400とセンサ100との間のインターフェースを構成する通信路のケーブル長が10mである場合、伝達遅延時間τ1は、インターフェース回路における伝達遅延が支配的であり、例えば数十μs程度である。
ここで、制御部30が照明部10に物体500を照明させる照明期間(照明信号をアクティブレベルに維持する期間)をTLとする。また、制御部30が撮像部20に物体500を撮像させる撮像期間(撮像信号をアクティブレベルに維持する期間)をTEとする。照明信号をアクティブレベルに遷移させるタイミングと撮像信号をアクティブレベルに遷移させるタイミングとの差をΔtとする。TL、TE、Δtは、計測パラメータとしてコンピュータ200によって予め設定されうる。図3に例示されるように、撮像期間TEよりも照明期間TLを長くする設定は、例えば、照明部10の動作状態の切り替えに要する時間よりも撮像部20の動作状態の切り替えに要する時間が短い場合に有用である。Δtは、例えば、照明部10が発生する照明光が安定するために要する時間を考慮して設定されうる。照明期間および撮像期間は、図3の例に限定されるものではなく、種々の関係が想定されうる。
前述のように、照明部10に物体500を照明させる照明期間TLと撮像部20に物体500を撮像させる撮像期間TE(露光期間)とが重複する期間である計測期間T(3−d)が計測装置700における物体500の計測に寄与する。そこで、制御部30は、計測期間Tの中間点(以下、計測中心時刻)において、計測時刻信号(3−f)をアクティブレベルに遷移させる。計測時刻信号(3−f)は、この例ではパルス信号である。計測時刻信号の出力は、計測期間Tに応じて決定されるタイミングを示すタイミング情報を出力する方法の一例である。
制御部30は、計測期間Tの開始後からタイマによってT/2の期間を計測し(3−e)、T/2の期間を経過した時刻においてロボットコントローラ400へ計測時刻信号(3−f)を出力しうる。なお、T/2の期間を計測するタイマは、例えば、照明信号と撮像信号との論理積で動作するよう構成されうる。T/2の期間は、照明期間TL、撮像期間TE、照明と撮像の開始タイミングの差Δtを用いて式(3)に従って計算されうる。なお、TL、TE、Δtの値、すなわち、照明信号と撮像信号の開始タイミングと終了タイミングに応じてT/2の値は異なる。
T/2は、コンピュータ200で計算され、制御部30に対して計測パラメータと一緒に送信されてよいし、制御部30で計算されてもよい。制御部30とロボットコントローラ400とは、例えば、フォトカプラを用いたインターフェース回路およびケ−ブルで接続されうる。制御部30から送信される計測時刻信号は、インターフェース回路およびケ−ブルで発生する伝達遅延時間τ2の後にロボットコントローラ400で受信されうる。例えば、センサ100とロボットコントローラ400とを接続するケーブル長が10mである場合、伝達遅延時間τ2は、インターフェース回路における伝達遅延が支配的であり、例えば数十μs程度である。ロボットコントローラ400は、計測時刻信号に応答して、ロボット座標系におけるセンサ100の位置および姿勢(3−g)を取得する。
以上のように、制御部30は、計測中心時刻において計測時刻信号を制御部30がロボットコントローラ400へ送信する。これにより、センサ100による物体500の位置および姿勢の計測とロボットコントローラ400によるセンサ100の位置および姿勢の取得とを同期させることができる。
図2を参照しながら計測装置700の構成について説明する。撮像部20が撮像した画像はコンピュータ200へ送信され、コンピュータ200は、その画像に基づいて距離画像を生成し、モデルフィッティングを行うことで物体500の位置および姿勢を検出する。撮部段20からコンピュータ200へ画像を送信するため、撮像部20とコンピュータ200とは、例えば、Ethernetで接続されうる。あるいは、撮像部20とコンピュータ200とは、CameraLinkまたはUSB3.0などの他のインターフェースによって接続されてもよい。
コンピュータ200によって計算された物体500の位置および姿勢は、ロボットコントローラ400へ送信され、ロボットアーム300の駆動制御のための入力データの1つとして用いられる。コンピュータ200からロボットコントローラ400へ物体500の位置および姿勢を送信するため、コンピュータ200とロボットコントローラ400とは、例えば、Ethernetなどのインターフェースによって接続されうる。
計測装置1では、設定された照明時間TLと、撮像時間TEと、照明と撮像の開始時刻の差Δtとに基づいて、制御部30が計測動作を制御する。また、計測装置1は、計測中心時刻(計測期間Tの中間点)において、計測時刻信号をロボットコントローラ400へ出力する。これにより、ロボットコントローラ400は、計測中心時刻を基準(トリガ)としてセンサ100の位置および姿勢を取得することができる。したがって、センサ100による物体500の位置および姿勢の計測と、ロボットコントローラ400によるセンサ100の位置および姿勢の取得とを同期させることができる。
[第2実施形態]
以下、本発明の第2実施形態を説明する。第2実施形態として言及しない事項は、第1実施形態に従いうる。図4のタイミングチャートを参照しながら第2実施形態の処理装置1の動作を説明する。第1実施形態では、センサ100による物体500の位置および姿勢の計測と、ロボットコントローラ400によるセンサ100の位置および姿勢の取得との間に、計測時刻信号の伝達遅延時間τ2による同期誤差が発生する。そこで、第2実施形態では、計測期間Tの中間点(計測中心時刻)よりも伝達遅延時間τ2だけ前の時刻において、制御部30がロボットコントローラ400へ計測時刻信号を出力する。
ここで、伝達遅延時間τ2は、制御部30とロボットコントローラ400との間のインターフェース回路およびケーブルで発生する信号遅延に起因する。更に、ロボットコントローラ400が計測時刻信号を受信してから位置および姿勢の取得を実行するまでの遅延(例えば、ソフトウェア起因の遅延)が含まれる場合もありうる。
図4に示されるように、計測制御部30は、計測中心時刻(計測期間Tの中間点)よりも伝達遅延τ2だけ前の時刻において、計測時刻信号をロボットコントローラ400へ出力する。すなわち、制御部30は、計測期間Tの開始後からタイマで(T/2−τ2)の期間を計測し(4−e)、(T/2−τ2)の期間が経過した時刻でロボットコントローラ400へ計測時刻信号(4−f)を出力する。(T/2−τ2)は、照明時間TL、撮像時間TE、照明と撮像の開始時刻の差Δt、伝達遅延τ2(オフセット値)を用いて式(4)に従って計算されうる。これは、式(3)で与えられるタイミングを伝達遅延τ2(オフセット値)を使って補正することとして理解されうる。
なお、伝達遅延時間τ2は、例えば、実際に制御部30から信号を送信し、その送信時刻とロボットコントローラ400で信号を受信した受信時刻とに基づいて決定することができる。伝達遅延時間τ2は、コンピュータ200に予め設定されうる。また、(T/2−τ2)は、コンピュータ200で計算され、制御部30に対して計測パラメータと一緒に送信されてもよいし、コンピュータ200から制御部30に対してτ2が送信され、制御部30で計算されてもよい。第2実施形態によれば、第1実施形態よりも同期誤差を低減することができる。
以上のように、制御部30は、計測期間Tに応じて決定されるタイミング(計測期間Tの開始からT/2のタイミング)を予め設定されたオフセット値(τ2)に従って補正して得られるタイミングを示す情報として計測時刻信号を生成する。
[第3実施形態]
以下、本発明の第3実施形態を説明する。第3実施形態として言及しない事項は、第1実施形態に従いうる。図5には、本発明の第3実施形態における処理装置1の構成が示されている。図6には、本発明の第3実施形態における処理装置1の動作が示されている。第3実施形態では、第1実施形態におけるセンサ100、コンピュータ200、ロボットコントローラ400がセンサ100a、コンピュータ200a、ロボットコントローラ400aによってそれぞれ置き換えられている。また、センサ100aでは、第1実施形態における制御部30が制御部30aによって置き換えられている。
第3実施形態では、計測装置700からロボットコントローラ400a(ロボットシステム800)へ、センサ座標系における物体500の位置および姿勢の情報と共に、タイミング情報として、タイムスタンプ(時刻情報を示すデジタルデータ)を送信する。タイムスタンプを受信したロボットコントローラ400aは、タイムスタンプで示された時刻におけるロボット座標系でのセンサ100aの位置および姿勢を取得する。ロボットコントローラ400aは、例えば、ロボットアーム300の駆動プロファイルに基づいてセンサ100aの位置および姿勢を取得することができる。あるいは、ロボットコントローラ400aは、ロボット300のアーム310の駆動のために一定のサンプリング間隔で取得しているエンコーダの出力値を内挿することで、センサ100aの位置および姿勢を取得してもよい。なお、計測装置700とロボットシステム800とにおいて、時計が与える時刻が互いに一致していることが望ましいが、互いの時刻のずれを認識することができるように構成されてもよい。
第3実施形態は、例えば、ロボット座標系における物体500の位置および姿勢を示す情報がリアルタイムに必要ではない状況において利用されうる。制御部30aは、例えば、ロボットコントローラ400aから提供される計測トリガに応答して、照明部10による照明および撮像部20による撮像の制御を開始するように構成されうる。あるいは、制御部30aは、ロボットコントローラ400からコンピュータ200を経由して提供される計測トリガに応答して、照明部10による照明および撮像部20による撮像の制御を開始するように構成されうる。
照明期間TL、撮像時間TEなどの計測パラメータの設定は、コンピュータ200aが行ってもよいし、ロボットコントローラ400aが行ってもよい。あるいは、物体500の位置および姿勢の計測に先立ってプリ計測を行い、プリ計測の結果に基づいてセンサ100aが計測パラメータを決定し設定しもよい。また、計測中において光量モニタ回路(不図示)の出力に応じてリアルタイムに照明期間TLおよび撮像期間TEが変更されてもよい。あるいは、計測中に実施する特定の処理が終わるまで、照明動作や撮像動作の少なくともいずれか一方が継続されるように構成されてもよい。すなわち、設定された照明期間および撮像期間と、実際の照明期間および撮像期間とが異なっていてもよい。その他、照明期間および撮像期間は、種々の方法によって変更されうる。
計測中心時刻(計測期間Tの中間点)におけるセンサ100aの位置および姿勢をロボットコントローラ400aが取得するため、制御部30aは、タイミング情報として、タイムスタンプをコンピュータ200aへ送信する。そして、コンピュータ200aは、センサ座標系における物体500の位置および姿勢と共にタイムスタンプをロボットコントローラ400aへ送信する。
以下、図6のタイミングチャートを参照しながら第3実施形態の処理装置1の動作を説明する。ロボットコントローラ400から出力された計測トリガ(6−a)は、ロボットコントローラ400aと制御部30aとの間のインターフェースを構成するインターフェース回路および通信路で発生する伝達遅延時間τ1の後に制御部30によって受信される。制御部30aは、計測トリガ(6−a)の受信に応答して、計測のための制御を開始する。具体的には、制御部30aは、計測トリガ(6−a)の受信に応答して、照明信号(6−b)を照明期間TLにわたってアクティブレベルにし、また、撮像信号(6−c)を撮像期間TEにわたってアクティブレベルにする。
図6に示された例では、撮像期間TEの終了の前に照明期間TLが終了する。このような制御は、撮像期間TEの終了後の画像の読出期間(不図示)において、照明部10がオフされることによるノイズが撮像部20から出力される画像のS/N比を低下させたり、転送される画像に乱れを生じさせたりしうることが問題になる場合に有用である。ただし、第3実施形態は、照明期間TLと撮像期間TEとの関係を特定の関係に制限するものではない。
前述のように、照明部10に物体500を照明させる照明期間TLと撮像部20に物体500を撮像させる撮像期間TE(露光期間)とが重複する期間である計測期間T(6−d)が計測装置700における物体500の計測に寄与する。そこで、制御部は、照明信号(6−b)と撮像信号(6−c)に基づいて、計測開始時刻の取得(6−e)および計測終了時刻の取得(6−f)を行う。この動作は、例えば、照明信号(6−b)と撮像信号(6−c)との論理積の立ち上がりおよび立ち下りに基づいて実行されうる。
その後、制御部30aは、計測開始時刻と計測終了時刻とに基づいて、計測中心時刻(計測期間Tの中間点)を計算する(6−g)。そして、制御部30aは、計測中心時刻をタイムスタンプとしてコンピュータ200aへ送信し、コンピュータ200aは、センサ座標系における物体500の位置および姿勢とともにタイムスタンプをロボットコントローラ400aへ送信する(6−h)。ロボットコントローラ400aは、タイムスタンプで示された時刻におけるロボット座標系でのセンサ100aの位置および姿勢を取得する(6−i)。
[第4実施形態]
以下、本発明の第4実施形態を説明する。第4実施形態として言及しない事項は、第1実施形態に従いうる。図7には、本発明の第4実施形態における処理装置1の構成が示されている。図8には、本発明の第4実施形態における処理装置1の動作が示されている。第4実施形態では、第1実施形態におけるセンサ100、コンピュータ200、ロボットコントローラ400がセンサ100b、コンピュータ200b、ロボットコントローラ400bによってそれぞれ置き換えられている。また、センサ100bでは、第1実施形態における照明部10が第1照明部12、第2照明部14によって置き換えられ、第1実施形態における撮像部20が第1撮像部22、第2撮像部24によって置き換えられている。また、第1実施形態における制御部30が制御部30bによって置き換えられている。第1照明部12は、第1照明光で物体500を照明し、第2照明部14は、第2照明光で物体500を照明する。
第4実施形態では、第1照明部12および第1撮像部22からなる第1組を使って物体500の位置および姿勢が計測され、これと並行して、第2照明部14および第2撮像部24からなる第2組を使って物体500の位置および姿勢が計測される。第1組および第2組の一方は、濃淡画像を撮像しその濃淡画像に基づいて物体500の位置および姿勢を計測するために使用されうる。また、第1組および第2組の他方は、パターン光で照明して得られた画像に基づいて距離画像を生成しその距離画像に基づいて物体500の位置および姿勢を計測するために使用されうる。
ここで、濃淡画像にモデルフィッティングを施した場合には、画像の奥行き方向の位置および姿勢の推定精度はあまり高くない。一方、距離画像にモデルフィッティングを施した場合には、画像の平面方向の位置および姿勢の推定精度はあまり高くない。そのため、濃淡画像と距離画像の両方を用いて高精度に位置および姿勢を推定する技術が有用である。しかし、両画像を得るための撮像において必要な光量が互いに異なるため、第1組および第2組において計測時間が互いに異なる場合がありうる。そこで、第4実施形態では、制御部30bは、第1組における計測中心時刻と第2組における計測中心時刻とが差が許容範囲になるように、好ましくは両者が一致するように第1組および第2組を制御する。
制御部30bは、第1照明信号によって第1組の第1照明部12を制御し、第2照明信号によって第2組の第2照明部14を制御する。また、制御部30bは、第1撮像信号によって第1組の第1撮像部22を制御し、第2撮像信号によって第2組の第2撮像部24を制御する。制御部30bは、第1組における計測中心時刻と第2組における計測中心時刻とが一致するように第1照明信号、第2照明信号、第1撮像信号および第2撮像信号を制御する。また、制御部30bは、センサ100bによる物体500の位置および姿勢の計測と、ロボットコントローラ400bによるセンサ100bの位置および姿勢の取得との同期のために、計測中心時刻において計測時刻信号をロボットコントローラ400bへ送信する。ここで、計測時刻信号は、第1照明信号および第1撮像信号によって決定される第1計測期間、ならびに、第2照明信号および第2撮像信号によって決定される第2計測期間に応じて決定されるタイミングを示すタイミング情報である。
以下、図8のタイミングチャートを参照しながら第4実施形態の処理装置1の動作を説明する。ロボットコントローラ400bから出力された計測トリガ(8−a)は、ロボットコントローラ400bと制御部30bとの間のインターフェースを構成するインターフェース回路および通信路で発生する伝達遅延時間τ1の後に制御部30bによって受信される。制御部30bは、計測トリガ(8−a)の受信に応答して、計測のための制御を開始する。具体的には、制御部30bは、計測トリガ(8−a)の受信に応答して、第1照明信号(8−b)を第1照明期間TL1にわたってアクティブレベルにし、また、第1撮像信号(8−c)を第1撮像期間TE1にわたってアクティブレベルにする。制御部30bは、計測トリガ(8−a)の受信に応答して、第2照明信号(8−h)を第2照明期間TL2にわたってアクティブレベルにし、また、第2撮像信号(8−i)を第2撮像期間TE2にわたってアクティブレベルにする。
ここで、第1照明信号をアクティブレベルに遷移させるタイミングと第1撮像信号をアクティブレベルに遷移させるタイミングとの差をΔt1とする。また、第2照明信号をアクティブレベルに遷移させるタイミングと第2撮像信号をアクティブレベルに遷移させるタイミングとの差をΔt2とする。第1照明期間TL1、第2照射期間TL2、第1撮像期間TE1、第2撮像期間TE2、照明と撮像の開始時刻の差Δt1、Δt2は、計測パラメータとして予め設定される。
第1照明部12に物体500を照明させる第1照明期間TL1と第1撮像部22に物体500を撮像させる撮像期間TE1とが重複する期間である第1計測期間T1が第1組を使用した物体500の計測に寄与する。また、第2照明部14に物体500を照明させる第2照明期間TL2と第2撮像部24に物体500を撮像させる撮像期間TE2とが重複する期間である第2計測期間T2が第2組を使用した物体500の計測に寄与する。制御部30bは、第1組における計測中心時刻と第2組における計測中心時刻とが一致するように第1組および第2組を制御する。図8に示された例では、制御部30bは、第1照明信号と第2照明信号の開始時刻にΔt3の時間差を設ける。Δt3は、照明と撮像の開始時刻の差Δt1、Δt2、第1および第2計測期間T1、T2を用いて式(5)に従って計算されうる。
ここで、T1/2は、照明時間TL1、撮像時間TE1、照明と撮像の開始時刻の差Δt1を用いて式(6)に従って計算されうる。
同様に、T2/2は、照明時間TL2、撮像時間TE2、照明と撮像の開始時刻の差Δt2を用いて式(7)に従って計算されうる。
Δt3、T1/2、T2/2は、コンピュータ200bで計算され、制御部30bに対して計測パラメータと一緒に送信されてもよいし、制御部30bで計算されてもよい。制御部30bは、計測期間の開始後からタイマでT1/2の期間を計測し(8−e)、T1/2の期間が経過した時刻においてロボットコントローラ400bへ計測時刻信号を出力する(8−f)。なお、T1/2の期間を計測するタイマは、第1照明信号と第1撮像信号との論理積で動作するよう構成されうる。計測時刻信号は、インターフェース回路およびケーブルで発生する伝達遅延時間τ2の後にロボットコントローラ400bで受信されうる。ロボットコントローラ400bは、計測時刻信号に応答して、ロボット座標系におけるセンサ100bの位置および姿勢(8−g)を取得する。なお、第2実施形態で述べた方法に従って、伝達遅延時間τ2により発生する同期誤差を低減してもよい。
以上のように、式(5)に従って動作タイミングを決定することで、第1組による計測中心時刻と第2組による計測中心時刻とを一致させることができる。更に、計測中心時刻において計測時刻信号をロボットコントローラ400bへ送信することで、センサ100bによる物体500の位置および姿勢の計測と、ロボットコントローラ400bによるセンサ100bの位置および姿勢の取得とを同期させることができる。
第1撮像部12および第2撮像部14によって撮像された画像は、コンピュータ200bへ送信され、コンピュータ200bにおいて、これらの画像に基づいてセンサ座標系における物体500の位置および姿勢が計算される。第4実施形態では、センサ100bによる物体500の位置および姿勢の計測とロボットコントローラ400bによるセンサ100bの位置および姿勢の取得とを同期させるために、制御部30bからロボットコントローラ400bへ計測時刻信号が出力される。しかし、第3実施形態のように、制御部30bからロボットコントローラ400bに対してタイムスタンプが出力されてもよい。
第4実施形態では、照明部および撮像部からなる組が2つ設けられているが、3つ以上の組が設けられてもよい。この場合においても、3つ以上の組の計測中心時刻の差が許容範囲になるように、好ましくは3つ以上の組の計測中心時刻が一致するように制御がなされ、また、計測中心時刻に応じて決定されるタイミングを示すタイミング情報(計測時刻情報)が出力されうる。
[第5実施形態]
以下、本発明の第5実施形態を説明する。第5実施形態として言及しない事項は、第4実施形態に従いうる。図9には、本発明の第5実施形態における処理装置1の構成が示されている。第5実施形態では、第4実施形態におけるセンサ100b、コンピュータ200b、ロボットコントローラ400bがセンサ100c、コンピュータ200c、ロボットコントローラ400cによってそれぞれ置き換えられている。また、センサ100cでは、第4実施形態における第1照明部12、第2照明部14が第1照明部12c、第2照明部14cによって置き換えられている。第1照明部12cは、第1照明光で物体500を照明し、第2照明部14cは、第2照明光で物体500を照明する。
第5実施形態では、第1照明部12cおよび第1撮像部22cからなる第1組を使って物体500の位置および姿勢が計測され、これと並行して、第2照明部14cおよび第2撮像部24cからなる第2組を使って物体500の位置および姿勢が計測される。第1組および第2組の一方は、濃淡画像を撮像しその濃淡画像に基づいて物体500の位置および姿勢を計測するために使用されうる。また、第1組および第2組の他方は、パターン光で照明して得られた画像に基づいて距離画像を生成しその距離画像に基づいて物体500の位置および姿勢を計測するために使用されうる。
第4実施形態では、第1組および第2組の計測中心時刻の差を許容範囲に収めるために、好ましくは両者を一致させるために第1照明信号、第2照明信号、第1撮像信号および第2撮像信号のタイミングが制御される。一方、第5実施形態では、第1組の計測期間と第2組の計測期間とを同一にして、第1組および第2組の計測中心時刻を一致させる。そして、この計測期間に応じて、第1照明光の強度および第2照明光の強度が決定される。第1照明光の強度は、制御部30cが第1照明部12cに送る第1強度指令値によって制御され、第2照明光の強度は、制御部30cが第2照明部14cに送る第2強度指令値によって制御される。
制御部30cは、共通の照明信号によって第1組の第1照明部12および第2組の第2照明部14を制御する。また、制御部30cは、共通の撮像信号によって第1組の第1撮像部22および第2組の第2撮像部24を制御する。
一例として、推奨条件として、第1照明部12cによる推奨照明時間が20msで、第2照明部14cによる推奨照明時間が15msであり、第1撮像部22による推奨撮像期間が15msで、第2撮像部24による推奨撮像期間が10msである場合を考える。ここで、第1照明部12cに対する推奨強度指令値は50%、第2照明部14cに対する推奨強度指令値は50%であるものとする。また、第1照明部12cおよび第1撮像部22による推奨計測期間は15msで、第2照明部14cおよび第2撮像部24による推奨計測期間は10msであるものとする。
この例において、共通の照明時間および共通の撮像時間を短めに設定する方針で、共通の照明時間を15ms、共通の撮像時間を10ms、共通の計測時間を10msに設定する場合を考える。この場合、第1組の第1撮像部22で得られる画像の光量は推奨条件における光量の2/3に低下し、第2組の第2撮像部24で得られる画像の光量は推奨条件における光量と等しい。そこで、その低下分を補うために、第1照明部12cに対する第1強度指令値を推奨強度指令値50%から75%に変更する。また、第2照明部14cに対する第2強度指令値については、推奨強度指令値50%を維持する。これにより、第1組および第2組の計測中心時刻を一致させることができる。
制御部30cは、センサ100cによる物体500の位置および姿勢の計測と、ロボットコントローラ400cによるセンサ100cの位置および姿勢の取得との同期のため、計測中心時刻において計測時刻信号をロボットコントローラ400cへ送信する。ここで、制御部30cからロボットコントローラ400cに対して計測時刻信号を出力する代わりに、第3実施形態のように、制御部30cからロボットコントローラ400cに対してタイムスタンプを出力してもよい。
第5実施形態では、照明部および撮像部からなる組が2つ設けられているが、3つ以上の組が設けられてもよい。この場合においても、3つ以上の組の計測中心時刻を一致させることができる。
[第6実施形態]
以下、本発明の第6実施形態を説明する。第6実施形態として言及しない事項は、第1実施形態に従いうる。図10には、本発明の第6実施形態における処理装置1の構成が示されている。第6実施形態では、第1実施形態におけるセンサ100がセンサ100dによって置き換えられている。また、センサ100dでは、第1実施形態における制御部30が制御部30dによって置き換えられ、また、加速度取得部40が追加されている。加速度取得部40は、センサ100d(照明部10および撮像部20)の加速度を取得する。
第1〜5実施形態においては、物体500の位置および姿勢の計測は、ロボット300のハンド310が等速で移動するものと見做して実施される。しかし、ロボット300のハンド310が加速運動をする場合もある。加速運動には、速度が速くなる加速運動と、速度が遅くなる加速運動(減速運動)とがある。第6実施形態では、ロボット300のハンド310(センサ100d)が加速運動を行っている場合においても、物体500の位置および姿勢の計測とセンサ100dの位置および姿勢の取得との間に生じる同期誤差を低減する。第6実施形態では、制御部30dは、計測期間の他、センサ100d(照明部10および撮像部20)の加速度に応じてタイミング情報(計測中心時刻)を出力する。センサ100dの加速は、加速度取得部40によって取得される。
ここで、加速度取得部40から出力される加速度の絶対値が閾値より小さい場合、即ち、センサ100dが等速運動をしていると見做すことができる場合は、制御部30dは、タイミング情報として計測中心時刻を出力しうる。しかし、加速度取得部40から出力される加速度の絶対値が閾値より大きい場合、即ち、センサ100dが等速運動をしていると見做すことができない場合は、計測中心時刻においてセンサ100dの位置および姿勢を取得すると、同期誤差が生じうる。
例えば、パターン光で物体を照明するアクティブステレオ方式では、撮像された画像におけるパターン像の輝度値に対して重心検出またはピーク検出などの処理を施した後に距離画像が計算されうる。よって、センサ100dが加速運動をしている状態で撮像を行うと、撮像された画像におけるパターン像が歪む。したがって、検出される重心またはピークの位置は、速度が増加する加速時においては、計測期間中の中間位置よりも計測開始位置側の位置に近づき、速度が減少する加速時(減速時)においては、計測終了位置側の位置に近づく。
以上を考慮すると、センサ100dの加速運動に起因する同期誤差を低減するためには、加速度の絶対値が閾値より小さい場合にのみ物体500の位置および姿勢を計測する方法が有用である。あるいは、センサ100dの加速運動に起因する同期誤差を低減するためには、加速度に応じてセンサ100dの位置および姿勢を取得するタイミングを調整する方法が有用である。
まず、図11を参照しながら、加速度の絶対値が閾値より小さい場合にのみ物体500の位置および姿勢を計測する動作を説明する。工程S101では、制御部30dは、加速度取得部40から加速度を取得する。ここで、加速度取得部40は、ロボットコントローラ400が有する加速度プロファイルを取得し、該加速度プロファイルに基づいてセンサ100d(ハンド310)の加速度を取得しうる。あるいは、加速度取得部40は、ハンド310に備えられた加速度センサによって検出された加速度をロボットコントローラ400から取得してもよい。あるいは、加速度取得部40は、加速度センサを備え、該加速度センサの出力に基づいてセンサ100d(ハンド310)の加速度を取得しうる。
工程S102では、制御部30dは、工程S101で取得した加速度の絶対値が予め設定された閾値より小さいかどうかを判断し、該絶対値が該閾値より小さい場合は、工程S103に進み、そうではない場合には工程S101に戻る。工程S101およびS102は、加速度の絶対値より小さくなるのを待って工程S103に進む処理として理解される。工程S103では、制御部30dは、ロボットコントローラ400から計測トリガを受信しているかどうかを判断し、受信している場合は、工程S104に進み、そうではない場合には工程S101に戻る。閾値は、例えば、事前に加速度をパラメータとして物体500の位置および姿勢の計測を行い、許容される同期誤差に基づいて決定されうる。
工程S104では、制御部30dは、計測のための制御を開始する。計測のための処理は、例えば、第1実施形態に従いうる。例えば、制御部30dは、照明信号をアクティブレベルにし、また、撮像信号をアクティブレベルにする。工程S105では、制御部30dは、計測中心時刻において計測時刻信号(タイミング信号)を出力する。
工程S103は、工程S101の前に実行されてよく、この場合、計測トリガを受信した場合に工程S101および工程S102が実行され、工程S102において加速度の絶対値が該閾値より小さいと判断した場合に工程S104が実行される。
次に、図12を参照しながら、加速度に応じてセンサ100dの位置および姿勢を取得するタイミングを調整する動作を説明する。まず、工程S201では、制御部30dは、加速度取得部40から加速度を取得する。工程S202は、制御部30dは、ロボットコントローラ400から計測トリガを受信しているかどうかを判断し、受信している場合は、工程S203に進み、そうではない場合には工程S201に戻る。なお、工程S202は、工程S201の前に実行されてもよく、この場合、計測トリガを受信した場合に工程S201が実行されうる。
工程S203では、制御部30dは、計測のための制御を開始する。計測のための処理は、例えば、第1実施形態に従いうる。例えば、制御部30dは、照明信号をアクティブレベルにし、また、撮像信号をアクティブレベルにする。
工程S204では、工程S201で取得した加速度の絶対値が予め設定された閾値より小さいかどうかを判断し、該絶対値が該閾値より小さい場合は、工程S205に進み、そうではない場合には工程S206に進む。加速度の絶対値が予め設定された閾値より小さい場合、工程S205において、制御部30dは、計測中心時刻において計測時刻信号(タイミング信号)を出力する。
加速度の絶対値が予め設定された閾値より大きい場合、工程S206において、制御部30dは、加速度が、速度が減少するものであるかどうかを判断する。そして、加速度が、速度が減少するものであれば工程S207に進み、加速度が、速度が増加するものであれば工程S208に進む。
加速度が、速度が低下するものである場合は、工程S207において、制御部30dは、計測期間における中間点より後ろのタイミング(例えば、計測期間の終了タイミング)を示す情報をタイミング情報として出力する。具体的には、制御部30dは、計測期間における中間点より後ろのタイミングで計測時刻信号を出力するように構成されうる。
一方、加速度が、速度が増加するものである場合は、工程S208において、制御部30は、計測期間における中間点より前のタイミング(例えば、計測期間の開始タイミング)を示す情報をタイミング情報として出力する。具体的には、制御部30dは、計測期間における中間点より前のタイミングで計測時刻信号を出力するように構成されうる。
工程S204の判断で使用する閾値は、例えば、事前に加速度をパラメータとして物体500の位置および姿勢の計測を行い、撮像した画像におけるパターン像の重心またはピークがパターン像幅の中央からパターン像幅の1/4ずれる加速度にされうる。
上記の例では、絶対値が閾値より小さい加速度である場合、速度が減少する加速度である場合、速度が増加する加速度である場合のそれぞれに応じて、計測時刻信号の出力タイミング(タイミング情報)が決定される。計測時刻信号の出力タイミングをより細かく制御するために、加速度を複数の範囲に分割し、検出された加速度が複数の範囲のいずれに属するかに応じて計測時刻信号の出力タイミング(タイミング情報)が決定されてもよい。分割数は、許容される同期誤差、または、位置および姿勢の計測結果に対する加速度の影響の度合い(すなわち、位置および姿勢の計測のアルゴリズム)等を考慮して決定されうる。
加速度の他、加速度を積分して得られる速度に基づいて物体500の位置および姿勢の計測タイミングが調整されてもよい。あるいは、速度と加速度に基づいて、センサ100dの位置および姿勢の取得タイミングが調整されてもよい。例えば、計測期間中にセンサ100dの視野範囲を超える速度および加速度が検出された場合、物体500の位置および姿勢の計測に誤差が生じうる。そこで、そのような速度及び加速度が検出された場合は、物体500の位置および姿勢の計測を行わないように構成されてもよい。あるいは、そのような速度及び加速度が検出された場合、その誤差を考慮してセンサ100dの位置および姿勢の取得タイミングを調整するように構成されてもよい。
上記の実施形態では、計測装置700は、ロボット300のハンド310に固定されていて、ハンド310とともに移動する。本発明は、物体500が移動することによって計測装置700と物体500との相対位置(および相対加速度)が変化する場合にも適用可能である。この場合、例えば、ロボットシステム800に代えて、物体500を移動させる移動機構が設けられうる。移動機構は、例えば、物体500とともに移動するステージ等の可動体と、該可動体の移動を制御するコントローラとを含みうる。この場合、制御部30dは、計測期間の他、該コントローラから提供されうる物体500(可動体)の加速度の情報に応じてタイミング情報を出力するように構成されうる。
[補足]
センサとコンピュータとの間には、センサ側に搭載されたハブ(HUB)、例えば、イーサネット(登録商標)スイッチングハブなどを設けて、計測パラメータと画像とを時分割で送受信することで、通信線を減らすこともできる。
[物品製造方法]
図1における物体500は、物品の製造(加工)のための部品でありうる。ここで、当該部品は、ロボット300により処理(例えば、加工、組付け、保持、移動)が行われる。また、ロボット300は、ロボットコントローラ400により制御される。ロボットコントローラ400は、計測装置700から物体500の位置および姿勢の情報を受信し、当該情報に基づいてロボットアーム300の動作を制御する。処理装置1は、計測装置700によって物体500の位置(または、位置および姿勢)を計測し、その計測結果に基づいてロボットシステム800によって物体500を処理し、これにより物体500を含む物品を製造する製造装置として構成されうる。
処理装置1によって実施される物品製造方法は、計測装置700が取り付けられたロボット300を計測装置700による計測結果に基づいて動作させながら物品を製造する。該物品製造方法は、計測装置700によって物体500(部品)の位置(又は、位置および姿勢)を計測する計測工程と、計測工程で得られた位置(又は、位置および姿勢)に基づいてロボット300を制御する制御工程とを含みうる。該制御工程におけるロボット300の制御は、物体を処理するための制御を含む。該処理は、当該処理は、例えば、加工、切断、搬送、組立(組付)、検査、および選別のうちの少なくともいずれか一つを含みうる。本実施形態の物品製造方法は、従来の方法に比べて、物品の性能・品質・生産性・生産コストのうちの少なくとも1つにおいて有利である。
以上、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。