(57)【要約】【課題】作業装置が有する作業部と距離測定部との校正用パラメータを、非接触かつ自動的に取得する。【解決手段】作業部を作業位置へ移動させる移動部と、移動部に設置されて作業部とともに移動する距離情報取得部と、移動部とは独立して固定された撮像装置とを有する作業装置は、撮像装置における画像平面上に仮想目標点を設定し、撮像装置によって撮影された画像において作業部の作業基準点と仮想目標点とを一致させるための移動部の座標を複数取得する。また、作業装置は、画像において、距離情報取得部の投光位置と仮想目標点を一致させる移動部の座標と、その座標位置において距離情報取得部から得られる距離情報とを複数取得する。そして、作業装置は、上記処理で取得された複数の座標及び距離情報に基づいて、移動部と距離情報取得部のための校正用パラメータを算出する。【選択図】  図１０
2010152550.tif 000002
【特許請求の範囲】
【請求項１】
作業部を作業位置へ移動させる移動手段と、前記移動手段に設置されて前記作業部とともに移動する距離情報取得手段と、前記移動手段とは独立して固定された撮像装置とを備える作業装置の校正方法であって、
前記撮像装置における画像平面上に仮想目標点を設定し、前記撮像装置によって撮影された画像において前記作業部の作業基準点と前記仮想目標点とを一致させるための前記移動手段の座標を複数取得する第１取得工程と、
前記画像において、前記距離情報取得手段の投光位置と前記仮想目標点を一致させる前記移動手段の座標と、その位置における前記距離情報取得手段から得られる距離情報とを複数取得する第２取得工程と、
前記第１取得工程及び前記第２取得工程で取得された座標及び距離情報に基づいて、前記移動手段と前記距離情報取得手段のための校正用パラメータを算出する算出工程とを有することを特徴とする作業装置の校正方法。
【請求項２】
前記作業基準点は、前記作業部が作業を行う位置であり、前記移動手段が前記作業部を移動する際に前記距離情報取得手段と共に移動する点であることを特徴とする請求項１に記載の作業装置の校正方法。
【請求項３】
前記第１取得工程では、前記作業基準点が前記画像上で前記仮想目標点と一致する複数の状態へと前記移動手段により前記作業部を移動させることを特徴とする請求項１に記載の作業装置の校正方法。
【請求項４】
前記第２取得工程では、前記投光位置が前記画像上で前記仮想目標点と一致する複数の状態へと前記移動手段により前記作業部を移動させ、前記複数の状態において前記距離情報取得手段によって距離情報を取得することを特徴とする請求項１に記載の作業装置の校正方法。
【請求項５】
前記校正用パラメータとは、前記距離情報取得手段の光軸方向、及び、前記距離情報取得手段と前記作業基準点との相対位置であることを特徴とする請求項１に記載の作業装置の校正方法。
【請求項６】
前記第１取得工程では、
前記画像における作業基準点の座標とそのときの前記移動手段における座標との対を複数取得し、取得された複数対の座標に基づいて前記画像上で前記作業基準点を前記仮想目標点と一致させる、前記移動手段の複数の座標を推定することを特徴とする請求項１に記載の作業装置の校正方法。
【請求項７】
前記第１取得工程では、
前記複数対の座標に基づいて、前記作業基準点が画像上で前記仮想目標点と一致する前記移動手段の座標を最小二乗法によって推定することを特徴とする請求項６に記載の作業装置の校正方法。
【請求項８】
前記第２取得工程では、
前記画像における前記距離情報取得手段による投光位置の座標とそのときの前記移動手段の座標との対を複数取得し、取得された複数対の座標に基づいて前記画像上で前記投光位置を前記仮想目標点と一致させる、前記移動手段の複数の座標を推定し、
推定された複数の座標の各々へ前記移動手段を移動して、前記距離情報取得手段によって距離情報を取得することを特徴とする請求項１に記載の作業装置の校正方法。
【請求項９】
前記第２取得工程では、
前記複数対の座標から、前記投光位置が前記画像上で前記仮想目標点と一致する前記移動手段の座標を、最小二乗法によって推定することを特徴とする請求項８に記載の作業装置の校正方法。
【請求項１０】
前記第１取得工程では、取得された複数の座標を結ぶ直線を主成分分析により近似して取得し、前記算出工程で用いる座標を前記直線に基づいて取得し、
前記第２取得工程では、取得された複数の座標を結ぶ直線を主成分分析により近似して取得し、前記算出工程で用いる座標を前記直線に基づいて取得し、前記算出工程で用いる距離情報を、前記算出工程で用いる座標へ前記移動手段を移動した時に前記距離情報取得手段から得られた距離情報とすることを特徴とする請求項１に記載の作業装置の校正方法。
【請求項１１】
作業部を作業位置へ移動させる移動手段と、前記移動手段に設置されて前記作業部とともに移動する距離情報取得手段と、前記移動手段とは独立して固定された撮像装置とを備える作業装置であって、
前記撮像装置における画像平面上に仮想目標点を設定し、前記撮像装置によって撮影された画像において前記作業部の作業基準点と前記仮想目標点とを一致させるための前記移動手段の座標を複数取得する第１取得手段と、
前記画像において、前記距離情報取得手段の投光位置と前記仮想目標点を一致させる前記移動手段の座標と、その位置における前記距離情報取得手段から得られる距離情報とを複数取得する第２取得手段と、
前記第１取得手段及び前記第２取得手段で取得された座標及び距離情報に基づいて、前記移動手段と前記距離情報取得手段のための校正用パラメータを算出する算出手段とを備えることを特徴とする作業装置。
【請求項１２】
請求項１乃至１０のいずれか１項に記載された作業装置の校正方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項１３】
請求項１乃至１０のいずれか１項に記載された作業装置の校正方法をコンピュータに実行させるためのコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は作業を行うロボット等の作業装置に関し、特に、作業装置が有する距離測定部の光軸方向およびオフセット量を校正する校正方法に関するものである。
【背景技術】
【０００２】
組立や加工の作業に利用される産業用ロボットの分野において、位置が不定である物体に対して操作を行う場合、作業対象となる物体の位置を計測する必要が生じる。平面的な位置検出に画像情報を用いることも多く、さらに作業対象物体の高さが不定の場合にはさまざまな３次元計測手段を用いる方法がある。
【０００３】
画像情報と距離測定の組み合わせによってロボットに作業を行わせる場合、距離測定部（距離センサ）によって得られる測定結果が、ロボットが内部で持つロボット座標系とどのように対応するのか知る必要がある。そして、そのためにはロボット（の作業位置）と距離センサとの相対的な設置位置関係を校正データとして求める必要がある。
【０００４】
特許文献１〜特許文献６には上記課題の解決策が提案されている。特許文献１では、溶接ロボットにおける溶接トーチ先端をワーク上の基準位置にティーチングでタッチアップさせ、距離測定用のレーザセンサのレーザ照射位置を同基準位置にティーチングで合わせこむことにより、距離センサの光軸方向とオフセット量を求める。また、特許文献２では、世界座標既知の平面冶具の複数点にティーチングによるタッチアップを行い、３次元計測結果とロボット座標系との対応をとることで校正を行っている。
【０００５】
これら特許文献１および特許文献２は、ロボットを人手によるティーチングで動かし、基準位置にタッチアップさせることで校正を行う方法である。
【０００６】
特許文献３では、距離センサの光軸をロボットハンドの中心軸に一致させるように設置することで校正することなくロボット座標系と距離センサ座標系の対応をとることが提案されている。これはセンサの設置位置によって課題を解決する方法である。
【０００７】
特許文献４では、位置が既知のマーカが付いたプレートをロボットアームに取り付け、グローバルな位置に設置されたレーザスリット光をプレートに当ててカメラで撮影し、座標校正を行うことが記載されている。マーカの世界座標位置はロボット命令で決定されるため、レーザスリットの画像座標とロボット座標の対応が決まる。
【０００８】
また、特許文献５では、角度を持った平板を距離センサレーザ光軸の設計位置と同じ位置に回転軸を持たせて回転させ、測定値の違いから設計値からの光軸の角度を計算している。この方法では高精度な動作と取り付け精度が保証される冶具が必要である。
【０００９】
特許文献６では、アームに搭載されたカメラに対して、ビジュアルサーボを利用して作業領域におけるターゲットを画像中心に保持しつつアームを動かすことで、カメラ光軸の方向を求めている。この従来件ではカメラ光軸方向を求めるにとどまっており、ロボットハンドとのオフセット量算出までは言及していない。
【特許文献１】特開平１１-１２３６７８号公報
【特許文献２】特開２００５-２７１１０３号公報
【特許文献３】特許第０３２３９２７７号公報
【特許文献４】特開平０５-２８０９２７号公報
【特許文献５】特開平１０-１０３９３７号公報
【特許文献６】特許第０４０２１４１３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
特許文献１および特許文献２のようなティーチングによるタッチアップで校正する方法では、ロボットの物理的な接触を伴うためロボットの破損の危険性を常に孕み、校正に精度を求める場合には作業者の熟練を必要とする。
【００１１】
また、特許文献３のようなロボットハンドの中心軸と距離センサ光軸を一致させるような装置構成は、把持機構などに設計上の制限を強いることになる。さらにセンサ取り付け時の取り付け誤差が許容されないため、高い組立精度を必要とする。
【００１２】
また、特許文献４はレーザスリット光の投光器をグローバルな位置としており、測定可能な領域が限定されている。また、ロボットアームに取り付けられるプレートのマーカ位置をロボット座標系において既知とするためにはプレート上のマーカ位置が高精度に決められている必要があり、かつプレートの取り付け精度も要求される。
【００１３】
また、特許文献５は特殊な冶具を用いることによる校正方法であるが、高精度に作成され、且つ高精度な動作を伴う冶具を必要とし、かつ治具の装置への取り付け精度も要求される。このような冶具は、高価であるとともに設置に関する煩雑さも伴うこととなる。
【００１４】
本発明は上記の課題に鑑みてなされたものであり、作業装置が有する作業部と距離測定部との校正用パラメータを、非接触かつ自動的に取得することを目的とする。
【課題を解決するための手段】
【００１５】
上記の目的を達成するための本発明の一態様による作業装置の校正方法は、
作業部を作業位置へ移動させる移動手段と、前記移動手段に設置されて前記作業部とともに移動する距離情報取得手段と、前記移動手段とは独立して固定された撮像装置とを備える作業装置の校正方法であって、
前記撮像装置における画像平面上に仮想目標点を設定し、前記撮像装置によって撮影された画像において前記作業部の作業基準点と前記仮想目標点とを一致させるための前記移動手段の座標を複数取得する第１取得工程と、
前記画像において、前記距離情報取得手段の投光位置と前記仮想目標点を一致させる前記移動手段の座標と、その位置における前記距離情報取得手段から得られる距離情報とを複数取得する第２取得工程と、
前記第１取得工程及び前記第２取得工程で取得された座標及び距離情報に基づいて、前記移動手段と前記距離情報取得手段のための校正用パラメータを算出する算出工程とを有する。
【００１６】
また、上記の目的を達成するための本発明の他の態様による作業装置は以下の校正を備える。すなわち、
作業部を作業位置へ移動させる移動手段と、前記移動手段に設置されて前記作業部とともに移動する距離情報取得手段と、前記移動手段とは独立して固定された撮像装置とを備える作業装置であって、
前記撮像装置における画像平面上に仮想目標点を設定し、前記撮像装置によって撮影された画像において前記作業部の作業基準点と前記仮想目標点とを一致させるための前記移動手段の座標を複数取得する第１取得手段と、
前記画像において、前記距離情報取得手段の投光位置と前記仮想目標点を一致させる前記移動手段の座標と、その位置における前記距離情報取得手段から得られる距離情報とを複数取得する第２取得手段と、
前記第１取得手段及び前記第２取得手段で取得された座標及び距離情報に基づいて、前記移動手段と前記距離情報取得手段のための校正用パラメータを算出する算出手段とを備える。
【発明の効果】
【００１７】
本発明によれば、作業装置が有する作業部と距離測定部との校正用パラメータを、非接触かつ自動的に取得することが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【００１９】
［第１の実施形態］
図１に、本発明を実施するために適した基本的な装置構成を示す。図１において、移動作業部１は作業を行うために移動を伴う動作機構を持つ装置であり、具体的には産業用ロボットアームや自動ステージ、またそれらに設置されたエンドエフェクタなどで実現されるものである。移動作業部１は、作業対象に対して実際に作業を行う作業部（ロボットハンド等）と、作業部を作業位置に移動する移動部（ロボットアーム）を具備する。距離情報取得部２は移動作業部１に物理的に接続されており、移動作業部１の移動に伴って位置が変化するものである。撮像部４は移動作業部１の作業領域を撮影するための装置であり、移動作業部１とは独立に固定されている。処理部３は移動作業部１、距離情報取得部２および撮像部４と接続され、各部を制御し、各部から得られた情報を元にした所望の計算を行うための装置である。処理部３は、具体的にはパーソナルコンピュータ或いはプログラマブルコントローラ（以下、ＰＣ）やロボットコントローラなどで構成される。
【００２０】
図２に、本発明を実施するために適した第１の実施形態における具体的な装置構成を示す。図２は、第１実施形態による作業装置の構成例を示す図である。
【００２１】
作業領域５０に対して、可動式のロボットアーム１０が固定されている。ロボットアーム１０のエンドエフェクタ取り付け部分にハンドベースプレート３１が設置され、ロボットハンド２０はハンドベースプレート３１に固定されている。これらは図１における移動作業部１に相当するものである。ハンドベースプレート３１にはさらに距離センサ３０が固定されており、ロボットアーム１０のエンドエフェクタの移動時には、ハンドベースプレート３１を介してロボットハンド２０と距離センサ３０の相対位置関係が変化しないように動作する。ここで距離センサ３０は、レーザ光を下に向けて測定物に対して照射し、測定対象物表面でレーザが拡散反射して得られる輝点位置をＰＳＤなどで検出することで距離に比例する電圧値を出力する既存技術によるセンサである。距離センサ３０は、図１における距離情報取得部２に相当する。距離センサ３０は、図示しないＡ／Ｄ変換ボードなどを介して図示しないＰＣに接続されており、ＰＣでは距離センサの測定値をモニタできるようになっている。なお、図２のロボットアーム１０はＸＹＺ型ロボットとなっているが、本発明の作業装置はこの携帯に限られるものではなく、それ以外の形態のロボット、例えばスカラ型もしくは多関節型のロボットでもよい。
【００２２】
ロボットハンド２０には物体を把持するための指２１および２２が備え付けられている。ここではロボットハンド２０は２指で描かれているが、３本以上の指から構成されるロボットハンドでもよい。また、ロボットの動作目的が物体の把持でないのであれば、指以外の形態の作業部、例えば溶接トーチなど、を先端に備え付けたロボットハンドでもよい。ロボットアーム１０は図示しないロボットコントローラに接続され、ロボットコントローラからの動作信号に従って動作する。ＰＣとロボットコントローラは、図１における処理部３に相当する。ロボットの上部の空間には、撮像装置４に相当するカメラ４０が設置され、作業領域５０を撮影するようになっている。カメラ４０は前述のＰＣに接続され、カメラ４０から獲得される画像に対してＰＣ上で動作するプログラムによって所定の処理が行われる。また、上述したように、ロボットコントローラとＰＣは接続されており、ＰＣからの指令に従ってロボットコントローラからロボットアーム１０に対して命令を送ることができる。
【００２３】
図３は、本実施形態の作業装置における作業基準点の例を説明する図である。物体把持などの実作業時には、ロボットハンド２０の指２１および２２の間の中央位置を被把持対象物体に合わせこむ必要がある。この中央位置を作業基準点と定義する。図３では、参照番号１００により作業基準点が示されている。被把持対象物体の高さが不定である場合には、距離センサ３０によって得られた距離から作業基準点１００を所定位置に移動させるための移動命令をロボットコントローラに与えなければならない。移動命令をロボット座標で与えるには、距離センサ３０と作業基準点１００との相対的な位置を求める必要がある。
【００２４】
次に、前述した距離センサ３０と作業基準点１００との位置関係を校正するための作業の概要について図４のフローチャートに従って説明する。
【００２５】
校正作業を開始するために、ユーザは、まずハンドベースプレート３１に校正プレート１１０を設置する。図５の（ａ）に示すように、校正プレート１１０には、作業基準点１００と一致する位置に中心を持つようなマーカ１１１が描かれている。また、校正プレート１１０には、設置時に距離センサ３０から発光されるレーザ光が作業基準点に対して同じ高さに照射されるよう、作業基準面１１２が設定されている。なお、校正作業は、図５の（ｂ）に示されるように、ハンドベースプレート３１からロボットハンド２０を取り外した状態で行われる。
【００２６】
バイアス算出処理（Ｓ１１０）において、ＰＣは、校正プレート１１０を設置した状態で距離センサ３０の測定値を獲得し、これをバイアス電圧値として自身の記憶装置に記憶する。
仮想目標点設定処理（Ｓ１２０）において、ＰＣは、カメラ４０から得られる画像の画像平面上における仮想目標点を設定し、これを自身の記憶装置に記憶する。
【００２７】
作業基準点目標位置算出処理（Ｓ１３０）において、ＰＣは、校正プレート１１０におけるマーカ１１１の中心位置、すなわち作業基準点１００、をカメラ４０から得られる画像上で仮想目標点に近づけるようにロボットアーム１０を動作させる。そして、ＰＣは、作業基準点１００と仮想目標点が画像上で一致するロボット座標を複数取得し、そのときのロボット座標値をＰＣの記憶装置に記憶させる。すなわち、ＰＣは、カメラ４０によって撮影された画像において作業部の作業基準点１００と、Ｓ１２０で設定された仮想目標点とを一致させるための移動部（移動作業部１）の座標（ロボット座標）を複数取得する第１取得処理を行う。
【００２８】
投光目標位置算出処理（Ｓ１４０）では、まずユーザが校正プレート１１０をハンドベースプレート３１から取り外す。ＰＣは、校正プレート１１０を取り外した状態で距離センサ３０からレーザを発光させ、作業領域５０上に照射されたレーザの拡散反射をカメラ４０で撮影し、レーザの投光位置を画像上で検出する。そして、ＰＣは、検出された投光位置が画像上で仮想目標点に近づくようにロボットアーム１０を動作させる。ＰＣは、投光位置と仮想目標点が画像上で一致するロボット座標を複数取得し、これを、各座標における距離センサ３０の出力電圧値と共に自身の記憶装置に記憶する。すなわち、ＰＣは、画像平面において、距離センサ３０の投光位置と仮想目標点を一致させる移動部（移動作業部１）の座標（ロボット座標）と、その位置における距離センサ３０からの距離情報とを複数取得する第２取得処理を行う。
【００２９】
校正値算出処理（Ｓ１５０）において、ＰＣは、先の各処理で得られた、
・バイアス電圧値、
・仮想目標点とマーカが一致するときのロボット座標値、
・仮想目標点とレーザ照射位置が一致するときのロボット座標値と距離センサ３０の出力電圧値、
を元に、距離センサ３０と作業基準点１００の相対的な位置関係を校正値として算出し、自身の記憶装置に記憶する。
【００３０】
以上、本実施形態による校正作業の概要を説明した。以下、校正作業に関する詳細な説明を述べる。
【００３１】
バイアス算出処理（Ｓ１１０）において、ＰＣは、校正プレート１１０を取り付けた状態で距離センサ３０からレーザを発光させて、距離を測定する。ＰＣは、このときに得られた出力電圧をバイアス電圧ＶＢとして記憶装置に記憶する。また、仮想目標点設定処理（Ｓ１２０）では、ＰＣは、カメラ４０から得られる画像における画像座標上の任意の位置に仮想目標点を定義し、これを座標ｘＳとして記憶装置に記憶する。
【００３２】
次に、作業基準点目標位置算出処理（Ｓ１３０）の詳細な説明を図６のフローチャートを参照して説明する。図６は、本実施形態による作業基準点目標位置算出処理の詳細を示すフローチャートである。
【００３３】
まず、ＰＣは、ロボット座標系のＺ座標値をＺ１に固定し、ロボット座標系の任意の座標（ＸおよびＹ座標値）の位置にロボットアーム１０を移動させ（Ｓ１３０１）、カメラ４０で撮影する（Ｓ１３０２）。そして、ＰＣは、得られた画像から校正プレート上のマーカ１１１の中心位置を算出し、これを作業基準点１００の検出位置とする（Ｓ１３０３）。ＰＣは、撮影された結果に基づき、仮想目標点ｘＳに校正プレート１１０上の作業基準点１００（マーカ１１１の中心）が一致するようにロボットアーム１０を移動させる。作業基準点１００を仮想目標点ｘＳに一致させるための移動には、例えば既存技術である特徴ベースのビジュアルサーボなどを用いることができる。例えば、ＰＣは、前フレームにおけるロボットアーム１０のロボット座標系における移動ベクトルに対して、カメラ４０による撮影画像の画像座標系における作業基準点１００の移動ベクトルを算出することで画像ヤコビアンを計算する（Ｓ１３０４）。そして、ＰＣは、仮想目標点ｘＳと作業基準点１００の画像上における差分ベクトルと得られた画像ヤコビアンから、差分ベクトルを小さくする方向にロボットアーム１０を移動させる（Ｓ１３０５）。
【００３４】
ＰＣは、再びカメラ４０により撮影を行い（Ｓ１３０６）、画像上の作業基準点１００を検出する（Ｓ１３０７）。ＰＣは、仮想目標点ｘＳと作業基準点１００の画像上におけるユークリッド距離が閾値εＭ（例えば、εＭ＝０.５[pixel]）よりも大きければ再びＳ１３０４に処理を戻してビジュアルサーボによるロボットアーム１０の移動を行う。また、閾値εＭよりも小さければ、ＰＣは、仮想目標点ｘＳと作業基準点１００が画像上で一致したものと判断し（Ｓ１３０８）、そのときのロボット座標をＸH1として記憶装置に記憶する（Ｓ１３０９）。
【００３５】
次に、ＰＣは、ロボット座標系のＺ座標値をＺ２に固定して、上記と同様の処理により、仮想目標点ｘＳに作業基準点１００が一致するようにロボットを移動させる（Ｓ１３０１〜Ｓ１３０８）。そして、ＰＣは、Ｚ座標値をＺ２として取得されたロボット座標をＸH2として、記憶装置に記憶する（Ｓ１３０９）。以上のようにして、Ｚ座標値を異ならせて所定回数の処理（本例では２回）を行ったならば、作業基準点目標位置算出処理（Ｓ１３０）を終了する（Ｓ１３１０）。
【００３６】
次に、投光目標位置算出処理（Ｓ１４０）に関する詳細を図７のフローチャートを参照して説明する。図７は、第１実施形態による投光目標位置算出処理を説明するフローチャートである。
【００３７】
まず、校正プレート１１０がハンドベースプレート３１から取り外される。ＰＣは、作業基準点目標位置算出処理（Ｓ１３０）と同様に、ロボット座標系のＺ座標値をＺ１に固定し、ロボット座標系における任意の座標（ＸおよびＹ座標値）の位置にロボットアーム１０を移動させ（ステップＳ１４０１）る。そして、ＰＣは、校正プレートを外した状態で距離センサ３０によるレーザの照射と、カメラ４０による撮影を実行し（Ｓ１４０２）、レーザが作業領域５０の床面に照射された投光位置を検出する（Ｓ１４０３）。
【００３８】
次に、ＰＣは、検出された投光位置が仮想目標点ｘＳに写るようにロボットアーム１０を移動させる。投光位置と仮想目標点ｘＳを一致させるためのロボットアーム１０の移動方法は、作業基準点目標位置算出処理（Ｓ１３０）と同様であり、例えば特徴ベースのビジュアルサーボなどを用いることができる。前フレームにおけるロボットアーム１０のロボット座標系における移動ベクトルに対して画像座標系における投光位置の移動ベクトルを算出することで画像ヤコビアンを計算する（Ｓ１４０４）。仮想目標点ｘＳと投光位置の画像上における差分ベクトルと得られた画像ヤコビアンから、差分ベクトルを小さくする方向にロボットアーム１０を移動させる（Ｓ１４０５）。ＰＣは、再び距離センサ３０のレーザ照射をカメラ４０で撮影し（Ｓ１４０６）、レーザの投光位置を検出する（Ｓ１４０７）。仮想目標点ｘＳと投光位置の画像上におけるユークリッド距離が閾値εＬ（例えば、εＬ＝０.５[pixel]）よりも大きければ、ＰＣは、処理をＳ１４０４に戻し、ビジュアルサーボによるロボットアーム１０の移動を行う。他方、閾値εＬよりも小さければ、ＰＣは、仮想目標点ｘＳと投光位置が画像上で一致したものと判断する（Ｓ１４０８）。そして、ＰＣは、投光位置と仮想目標点ｘＳが一致したときのロボット座標をＸL1として記憶装置に記憶し（Ｓ１４０９）、そのロボット座標における距離センサ３０の測定電圧値Ｖ１を記憶装置に記憶する（Ｓ１４１０）。
【００３９】
次に、ＰＣは、ロボット座標系のＺ座標値をＺ２に固定した状態で上記の処理を実行して、取得されたロボット座標と測定電圧値をそれぞれＸL2およびＶ２としての記憶装置に記憶する（Ｓ１４０１〜Ｓ１４１０）。以上のようにして、Ｚ座標値を異ならせて所定回数の処理（本例では２回）を行ったならば、投光目標位置算出処理（Ｓ１４０）を終了する（Ｓ１４１１）。
【００４０】
最後に校正値算出処理（Ｓ１５０）では、各処理において得られた値に基づき校正値が算出される。校正値の算出方法について、図８、図９を参照して詳細に説明する。
【００４１】
距離センサ３０からの出力電圧の変位ΔＶ[V]に対して、ロボット座標系における光路差がΔｌ[mm]であるとすれば、ΔＶとΔｌの間には下記の関係がある。
【数１】
2010152550.tif 000003
【００４２】
ただし、ηは未知の定数である。作業基準点１００のＺ座標を通るＸ−Ｙ平面に平行な作業基準面１１２を仮定し、この作業基準面１１２と距離センサ３０の相対的な距離を測定したときの電圧ＶＢをバイアスとして考える。すると、ロボットアーム１０が任意の位置にあったときの測定電圧がＶであったとき、図８で示したように作業基準面１１２から投光位置までの距離ｌは下記のような式で得られる。
【数２】
2010152550.tif 000004
【００４３】
ここで、ｌの値が得られたときに投光位置と作業基準点を一致させるために必要な校正用パラメータは、
・ロボット座標系における作業基準面１１２とレーザ光軸の交点と作業基準点とのオフセット量Ｗ、
・そして同じくロボット座標系における距離センサ３０のレーザ照射方向を表す単位ベクトルであるレーザ光軸の正規化方向ベクトルＬ、
である。すなわち、ロボット座標Ｘのときに得られた測定距離がｌであれば、この投光位置ＸＬに作業基準点を移動させるための相対移動ベクトルは、図９に示されるように数式３で表される。
【数３】
2010152550.tif 000005
【００４４】
よって、投光位置に作業基準点１００を一致させるためにロボットに与えるべき命令ＸＬは次の数式４のように計算される。
【数４】
2010152550.tif 000006
【００４５】
これより、校正パラメータとしてバイアス電圧ＶＢ、比例定数η、センサオフセット量Ｗ、レーザ光軸正規化方向ベクトルＬを求めれば、変位センサ測定値から、投光位置とロボット座標の対応が取れることになる。これら求めるべき校正値の算出方法を、図１０を参照して説明する。
【００４６】
ロボット座標位置がＸL1からＸL2へと変位したときの移動経路長は||ＸL1−ＸL2||である。ＸL1とＸL2の差分ベクトルはレーザ光軸方向と一致しているため、移動経路長||ＸL1−ＸL2||は位置ＸL1、ＸL2におけるレーザ光路長差と等しい。光路長の正負方向はロボットＺ軸と逆であるため、距離センサ３０の電圧値をロボット座標系スケールにおける距離へと変換する比例定数ηは下記のようにして求められる。
【数５】
2010152550.tif 000007
【００４７】
また、レーザ光軸方向を表す正規化ベクトルは下記のように求められる。
【数６】
2010152550.tif 000008
【００４８】
ここで画像上の投光位置を仮想目標点ｘＳに保ったまま作業基準面１１２を床面に一致するようロボットアーム１０を下げた仮想的な位置をＸL0とする。この仮想位置ＸL0は距離センサ３０の計測結果と、ここまでに得られたパラメータＶＢ、ηおよびＬから、下記のように推定される。
【００４９】
【数７】
2010152550.tif 000009
【００５０】
次に、画像上の作業基準点１００を仮想目標点ｘＳに保ったまま作業基準面１１２が床面に一致するようロボットアーム１０を下げた仮想的な位置をＸH0とする。事前に求めたロボット座標ＸH1、ＸH2の差分ベクトルは、作業基準点１００を仮想目標点ｘＳに保ったままロボットアーム１０が移動できる直線の方向ベクトルである。これをＨとすると、
【数８】
2010152550.tif 000010
が得られる。
【００５１】
状態ＸH2からＸH0への移動量をｌH2→H1とすると、ＸH0は、
【数９】
2010152550.tif 000011
として表される。
【００５２】
ここでｌH2→H1とＸH2からＸH0への移動量の比は、ＸL2からＸL0への移動量とＸL1からＸL2への移動量の比に等しいため、
【００５３】
【数１０】
2010152550.tif 000012
となる。
【００５４】
よってＸH0は、
【数１１】
2010152550.tif 000013
と算出される。
【００５５】
オフセット量ＷはＸH0とＸL0の相対的な位置関係に等しいため、
【数１２Ａ】
2010152550.tif 000014
となる。
【００５６】
ＰＣは、以上のようにして得られたバイアス電圧ＶＢ、比例定数η、センサオフセット量Ｗ、レーザ光軸正規化方向ベクトルＬを、記憶装置に記憶し、校正作業を終了する。なお、これらの得られた校正値を使ったロボット作業装置による実作業、例えば以下のようにして行われる。画像座標系において略既存位置に作業対象物体が置かれ、その詳細位置を測定するためにロボットに対してロボット座標Ｘａへの移動命令を送り、ロボット座標Ｘａにおける距離センサの測定電圧がＶａであったとする。このとき、距離センサの光路長ｌａは、校正値ηおよびＶＢ、観測電圧値Ｖａから、数式２を使って以下のように求められる。
【数１２Ｂ】
2010152550.tif 000015
【００５７】
また、測定位置へとロボットの作業基準位置を移動させるためには以下のようにする。すなわち、測定時のロボット座標Ｘａ、上記式で得られた距離センサ光路長ｌａ、校正値Ｗ及びＬから、数式４を使って以下のようにして得られるロボット座標ＸａＬへの移動命令をロボットに与えればよい。
【数１２Ｃ】
2010152550.tif 000016
【００５８】
［第２の実施形態］
第１の実施形態では、投光目標位置算出処理（Ｓ１４０）においてビジュアルサーボを利用して撮像画像上の仮想目標点と距離センサ３０の投光位置を一致させるロボット座標を求めた。しかしながら、投光目標位置算出処理はこのような手法に限られるものでは無い。第２の実施形態では、その一例として、投光目標位置算出処理（Ｓ１４０）において、以下のようにしてＸL1およびＸL2を求めて校正を行う。なお、第１の実施形態と同様の構成によるロボットシステムにおいて、距離センサ３０によってレーザが照射される作業領域５０には所定レベルの平面度があるものとする。ここで、所定レベルの平面度とは、例えば、５００[mm]×５００[mm]の作業領域５０に対して、平面度交差０．１[mm]といったレベルが挙げられる。
【００５９】
第２の実施形態における投光目標位置算出処理（Ｓ１４０）では、ＰＣは、校正プレート１１０を取り外した状態で、ロボットアーム１０をロボット座標系における同一平面にある３点以上の位置に移動させる。そして、ＰＣは、それぞれの位置で距離センサ３０から作業領域５０へ照射された投光位置を検出し、対応するロボット座標値と投光位置を記憶装置に記憶する。更に、ＰＣは、ロボット座標系における上記３点とは別の同一平面上にある３点以上の位置に関しても、同様にして投光位置を検出し、ロボット座標値と投光位置を記憶装置に記憶する。ＰＣは、こうして得られた２平面におけるそれぞれの座標変換行列から両平面において投光位置と仮想目標点が一致するロボット座標値を推定する。そして、ＰＣは、ロボットアーム１０を推定されたロボット座標に移動させて距離センサ３０によって測定を行い、その推定されたロボット座標とセンサ測定値を記憶装置に記憶する。
【００６０】
すなわち、ＰＣは、同一のＺ座標において、距離センサ３０による投光位置の撮影画像における座標とそのときの移動作業部１の座標（ロボット座標）との対を複数取得する。そして、取得された複数対の座標に基づいて画像上で投光位置を仮想目標点と一致させる、当該Ｚ座標における移動作業部１の座標を推定する。更に、当該推定された座標へ移動作業部１を移動して、距離センサ３０によって距離情報を取得する。この処理を、複数のＺ座標（本例では２つ）について行い、得られた複数の推定された座標と距離情報を、投光目標位置算出処理（Ｓ１４０）の出力とする。
【００６１】
以下に第２の実施形態における投光目標位置算出処理（Ｓ１４０）の詳細な説明を図１１のフローチャートを参照して説明する。
【００６２】
まず、ＰＣは、校正プレート１１０を取り外した状態で、距離センサ３０から作業領域５０へ投光されたレーザの拡散反射が画像上に写るような任意のロボット座標位置へロボットアーム１０を移動させる（Ｓ１４２１）。ここで、ロボット座標位置はＸ1,1＝[X1,1,Y1,1,Z1]Tとする。そして、ＰＣは、距離センサ３０からレーザを照射した画像をカメラ４０にて撮影し（Ｓ１４２２）、レーザの投光位置を画像上で検出する（Ｓ１４２３）。このとき、ＰＣは、画像上で検出されたレーザの投光位置の画像座標値をｘ1,1とし、Ｘ1,1およびｘ1,1を記憶装置に記憶する（Ｓ１４２４）。
【００６３】
同様にしてロボットのＺ座標を変化させずにロボットアーム１０をＸ1,2＝[X1,2,Y1,2,Z1,2]T〜Ｘ1,N1＝[X1,N1,Y1,N1,Z1,N1]Tへと順次移動させる。そして、ＰＣは、それぞれの位置において画像上における投光位置の画像座標値ｘ1,2〜ｘ1,N1を検出し、Ｘ1,2〜Ｘ1,N1とｘ1,2〜ｘ1,N1を記憶装置に記憶する（Ｓ１４２１〜Ｓ１４２５）。ここで、それぞれを状態座標群Ｐ1＝｛Ｘ1,i｜i=1…N1｝、投光位置座標群Ｓ1＝｛ｘ1,i｜i=1…N1｝とする。なお、N1はロボットＺ座標をＺ１と固定したときにロボットを移動させる位置の数であり、N1≧３の任意の整数で設定される。ただし、Ｘ1,1からＸ1,N1までに設定されたロボット座標の位置ベクトル群のうち、３つ以上が線形独立である必要がある。例えばN1＝３としたとき、Ｘ1,1＝[100,100,100]T、Ｘ1,2＝[100,200,100]TおよびＸ1,3＝[300,100,100]Tのように設定すればよい。
【００６４】
同様にして、ＰＣは、ロボットＺ座標をＺ２と固定し、N2個のロボット座標Ｘ2,1〜Ｘ2,N2とそれらに対応する投光位置ｘ2,1〜ｘ2,N2を求める。そして、ＰＣは、それらを状態座標群Ｐ2＝｛Ｘ2,i｜i=1…N2｝および投光位置座標群Ｓ2＝｛ｘ2,i｜i=1…N2｝として記憶装置に記憶する（Ｓ１４２１〜Ｓ１４２６）。
【００６５】
作業領域５０の平面度が出ていれば、距離センサ３０から投光されたレーザの投光位置は対応するロボット座標の作業領域５０への正射影と考えてよい。このとき、作業領域５０とロボット座標系における軸との平行度は問わない。ここで、高さＺｌが等しいロボット座標群Ｐｌ＝｛Ｘl,i｜i=1…Ni｝に対する投光位置の画像検出位置Ｓｌ＝｛ｘl,i｜i=1…Nl｝を考えたる。このとき、投光位置を画像面に写す透視投影を含む変換Ｘi,i→ｘi,iは、同次座標系ではＺｌの値を固定値とした線形変換となる。その逆変換ｘi,i→Ｘi,iも線形変換で表され、以下のように表現される。
【００６６】
【数１３】
2010152550.tif 000017
【００６７】
同次座標表現でＸl,i＝[Xl,i,Yl,i,Zl,1]、ｘl,i＝[xl,i,yl,i,1]とする。ここで変換行列Ａｌは下記のように表される。
【数１４】
2010152550.tif 000018
【００６８】
数式１３をXl,i、Yl,iに関して変形すると、
【数１５】
2010152550.tif 000019
と書くことができる。
【００６９】
上記の観測値集合Ｐｌ、Ｓｌが得られたときXl,i、Yl,iそれぞれに関する誤差二乗和ＥXlおよびＥYlを以下のように定義する。
【数１６】
2010152550.tif 000020
【００７０】
これを最小二乗法で解けば線形変換行列Ａｌを求めることができる。このようにしてそれぞれの観測値集合Ｐ1、Ｓ1およびＰ2、Ｓ2から算出された変換行列Ａ１およびＡ２から、投光位置とロボット座標の座標変換式が以下のようにして得られる（Ｓ１４２７）。
【００７１】
【数１７】
2010152550.tif 000021
【００７２】
この数式１７それぞれの右辺に仮想目標点の画像座標値ｘＳを代入すると、ロボットＺ座標をＺ１およびＺ２としたときに画像上で投光位置が仮想目標点と一致するロボット座標ＸL1、ＸL2の推定値が得られる（Ｓ１４２８）。ＰＣは、このようにして取得したロボット座標ＸL1、ＸL2を記憶装置に記憶する（Ｓ１４２９）。そして、ＰＣは、このようにして得られたロボット座標の推定値であるＸL1をロボットアーム１０に移動命令として与え（Ｓ１４３０）、距離センサ３０を使って得られた測定電圧値をＶ１として記憶装置に記憶する（Ｓ１４３１）。同様にして、ＰＣは、ロボットアームを座標ＸL2に移動させ、そのときの距離センサ３０の測定電圧値をＶ２として記憶装置に記憶する（Ｓ１４３０〜Ｓ１４３１）。こうして、所定回数（本例では２回）だけ処理を繰り返した後、投光目標位置算出処理（Ｓ１４０）を終了する（ステップＳ１４３２）。
【００７３】
以上により仮想目標点と投光位置が画像上で一致する２つのロボット位置を求めることができ、第１の実施形態と同様にして校正値算出処理（Ｓ１５０）において校正値を算出することができる。
【００７４】
［第３の実施形態］
第２の実施形態では、図２に示すような第１の実施形態と同様の構成によるロボットシステムにおいて、作業領域５０に所定レベル以上の平面度が出ていることを前提とした。しかしながら、作業領域５０に凹凸などがあって平面度が出ていない場合であっても、図１３に示すように作業領域５０に平面度のある投光プレート２００を置くことで、ビジュアルサーボを用いずに投光目標位置算出処理（Ｓ１４０）を実行できる。第３の実施形態では、投光プレート２００を用いた投光目標位置算出処理（Ｓ１４０）により、ＸL1およびＸL2を求めて校正を行う構成を説明する。ここで投光プレート２００の設置角度は任意であって、ロボット座標の軸に対する平行度は問わない。
【００７５】
第３の実施形態における投光目標位置算出処理（Ｓ１４０）では、ＰＣは、校正プレート１１０を取り外した状態でロボットアーム１０をロボット座標系における同一平面にある３点以上の位置に移動させる。そして、ＰＣは、それぞれの位置で距離センサ３０から投光プレート２００へ照射された投光位置をカメラ４０による撮影画像上で検出し、対応するロボット座標値と撮影画像における投光位置とを記憶装置に記憶する。ＰＣは、ロボット座標系における別の同一平面上にある３点以上の位置でも同様にして投光位置を検出し、ロボット座標値と撮影画像における投光位置とを記憶装置に記憶する。そして、ＰＣは、得られた２平面におけるそれぞれの座標変換行列から両平面において投光位置と仮想目標点が一致するロボット座標値を推定する。ＰＣは、ロボットアーム１０をその推定されたロボット座標に移動させて距離センサ３０によって測定を行い、そのロボット座標とセンサ測定値を記憶装置に記憶する。
【００７６】
以下に第３の実施形態における投光目標位置算出処理（Ｓ１４０）について図１１のフローチャートを参照して詳細に説明する。
【００７７】
まず、ＰＣは、校正プレート１１０を取り外した状態で、距離センサ３０から投光プレート２００へ投光されたレーザの拡散反射が画像上に写るような任意のロボット座標位置へロボットアーム１０を移動させる（Ｓ１４２１）。ここで、ロボット座標位置はＸ1,1＝[X1,1,Y1,1,Z1]Tとする。そして、ＰＣは、距離センサ３０からレーザを照射した画像をカメラ４０で撮影し（Ｓ１４２２）、距離センサ３０のレーザ投光位置を画像上で検出する（Ｓ１４２３）。このとき、ＰＣは、画像上で検出されたレーザの投光位置の画像座標値をｘ1,1とし、Ｘ1,1およびｘ1,1を記憶装置に記憶する（Ｓ１４２４）。
【００７８】
同様にしてロボットのＺ座標を変化させずにロボットアーム１０をＸ1,2＝[X1,2,Y1,2,Z1,2]T〜Ｘ1,N1＝[X1,N1,Y1,N1,Z1,N1]Tへと順次移動させる。そして、ＰＣは、それぞれの位置において画像上における投光位置の画像座標値ｘ1,2〜ｘ1,N1を検出し、Ｘ1,2〜Ｘ1,N1とｘ1,2〜ｘ1,N1を記憶装置に記憶する（Ｓ１４２１〜Ｓ１４２５）。ここで、それぞれを状態座標群Ｐ1＝｛Ｘ1,i｜i=1…N1｝、投光位置座標群Ｓ1＝｛ｘ1,i｜i=1…N1｝とする。なお、N1はロボットZ座標をＺ1と固定したときにロボットを移動させる位置の数であり、N1≧３の任意の整数で設定される。ただし、Ｘ1,1からＸ1,N1までに設定されたロボット座標の位置ベクトル群のうち、３つ以上が線形独立である必要がある。例えばN1＝３としたとき、Ｘ1,1＝[100,100,100]T、Ｘ1,2＝[100,200,100]TおよびＸ1,3＝[300,100,100]Tのように設定すればよい。
【００７９】
同様にして、ＰＣは、ロボットＺ座標をＺ２と固定し、N2個のロボット座標Ｘ2,1〜Ｘ2,N2とそれらに対応する投光位置ｘ2,1〜ｘ2,N2を求める。そして、ＰＣは、それらを状態座標群Ｐ2＝｛Ｘ2,i｜i=1…N2｝および投光位置座標群Ｓ2＝｛ｘ2,i｜i=1…N2｝として記憶装置に記憶する（Ｓ１４２１〜Ｓ４１２６）。
【００８０】
投光プレート２００の平面度が出ていれば、距離センサ３０から投光されたレーザの投光位置は対応するロボット座標の床面への正射影と考えてよい。よって、得られたロボット座標群と投光位置座標群を用いて第２の実施形態と同様の計算により以下の変換式が得られる（Ｓ１４２７）。
【００８１】
【数１８】
2010152550.tif 000022
【００８２】
数式１８の右辺それぞれに仮想目標点の画像座標値ｘＳを代入すると、ロボットＺ座標をＺ１およびＺ２としたときに画像上で投光位置と仮想目標点が一致するロボット座標ＸL1、ＸL2の推定値が得られる（Ｓ１４２８）。ＰＣは、、このようにして取得したロボット座標ＸL1、ＸL2を記憶装置に記憶する（Ｓ１４２９）。そして、ＰＣは、得られたロボット座標の推定値であるＸL1をロボットアーム１０に移動命令として与え（Ｓ１４３０）、距離センサ３０を使って投光プレート２００を測定して得られた測定電圧値をＶ１として記憶装置に記憶する（Ｓ１４３１）。同様にして、ＰＣは、ロボットアーム１０を座標ＸL2に移動させ、そのときの距離センサ３０による測定電圧値をＶ２として記憶装置に記憶する（Ｓ１４３０〜Ｓ１４３１）。こうして、所定回数（本例では２回）だけ処理を繰り返した後、投光目標位置算出処理（Ｓ１４０）を終了する（ステップＳ１４３２）。
【００８３】
以上により仮想目標点と投光位置が画像上で一致する２つのロボット位置を求めることができ、第１の実施形態と同様にして校正値算出処理（Ｓ１５０）において校正値を算出することができる。
【００８４】
［第４の実施形態］
第２、第３の実施形態では、投光目標位置算出処理（Ｓ１４０）においてビジュアルサーボを用いない処理を説明した。第４の実施形態では、ビジュアルサーボを用いずに、作業基準点目標位置算出処理（Ｓ１３０）を実現する例を説明する。
【００８５】
すなわち、ＰＣは、カメラ４０による撮影画像において、作業基準点の座標とそのときの移動作業部１の座標（ロボット座標）との対を複数取得する。そして、取得された複数対の座標に基づいて画像上で仮想目標点と作業基準点を一致させる、移動作業部１の座標（ロボット座標）を推定する。
【００８６】
以下、図２に示すような第１の実施形態と同様の構成によるロボットシステムにおいて図５に示したような校正プレート１１０を使って行われる作業基準点目標位置算出処理（Ｓ１４０）により、ＸH1およびＸH2を求めて校正を行う構成を説明する。
【００８７】
第４の実施形態における作業基準点目標位置算出（処理Ｓ１３０）では、ＰＣは、校正プレート１１０を取り付けた状態でロボットアーム１０をロボット座標系における同一平面にある３点以上の位置に移動させる。そして、ＰＣは、それぞれの位置における校正プレート上のマーカ１１１の位置をカメラ４０による撮像画像上で検出し、得られた作業基準点１００の撮影画像における位置と、それらに対応するロボット座標値を記憶装置に記憶する。ＰＣは、ロボット座標系における別の同一平面上にある３点以上の位置についても上記と同様の処理を行う。すなわち、マーカ１１１を撮影画像上で検出して得られる作業基準点１００の画像座標と、それらに対応するロボット座標値をＰＣの記憶装置に記憶する。ＰＣは、こうして得られた２平面におけるそれぞれの座標変換行列から両平面において作業基準点１００と仮想目標点が一致するロボット座標値を推定し、推定されたロボット座標値を記憶装置に記憶する。
【００８８】
以下に第４の実施形態における作業基準点目標位置算出処理（Ｓ１３０）の詳細な説明を図１２のフローチャートを参照して説明する。
【００８９】
まず、ＰＣは、校正プレート１１０を取り付けた状態で、マーカ１１１が画像上に写るような任意のロボット座標位置へロボットアーム１０を移動させる（Ｓ１３２１）。ここで、ここで、ロボット座標位置はＸ1,1＝[X1,1,Y1,1,Z1]Tとする。ＰＣは、カメラ４０により作業領域５０を撮影し（Ｓ１３２２）、撮影画像からマーカ１１１の中心である作業基準点１００を検出する（Ｓ１３２３）。このとき、ＰＣは、画像上で検出された作業基準点１００の画像座標をｘ1,1とし、Ｘ1,1およびｘ1,1を記憶装置に記憶する（Ｓ１３２４）。同様にしてロボットのＺ座標を変化させずにロボットアーム１０をＸ1,2＝[X1,2,Y1,2,Z1,2]T〜Ｘ1,N1＝[X1,N1,Y1,N1,Z1,N1]Tへと順次移動させる。そして、ＰＣは、それぞれの位置における作業基準点１００の画像座標値ｘ1,2〜ｘ1,N1を検出し、Ｘ1,2〜Ｘ1,N1とｘ1,2〜ｘ1,N1を記憶装置に記憶する（Ｓ１３２１〜Ｓ１３２５）。ここで、それぞれを状態座標群群Ｐ1＝｛Ｘ1,i｜i=1…N1｝、作業基準点座標群Ｓ1＝｛ｘ1,i｜i=1…N1｝とする。ここでN1はロボットＺ座標をＺ１と固定したときにロボットを移動させる位置の数であり、N1≧３の任意の整数で設定される。ただし、Ｘ1,1からＸ1,N1までに設定されたロボット座標の位置ベクトル群のうち、３つ以上が線形独立である必要がある。例えばN1＝３としたとき、Ｘ1,1＝[100,100,100]T、Ｘ1,2＝[100,200,100]TおよびＸ1,3＝[300,100,100]Tのように設定すればよい。
【００９０】
同様にして、ＰＣは、ロボットＺ座標をＺ２と固定し、N2個のロボット座標Ｘ2,1〜Ｘ2,N2とそれらに対応する作業基準点の画像座標値ｘ2,1〜ｘ2,N2を求める。そして、ＰＣは、それらを状態座標群Ｐ2＝｛Ｘ2,i｜i=1…N2｝および作業基準点座標群Ｓ2＝｛ｘ2,i｜i=1…N2｝として記憶装置に記憶する（Ｓ１３２１〜Ｓ１３２６）。
【００９１】
それぞれの状態座標群Ｐ1およびＰ2に属するロボット座標点はそれぞれ同一平面上の点である。そのため、作業基準点１００の画像平面上への正射影である作業基準点座標群Ｓ1およびＳ2は、それぞれが対応するロボット座標群と線形変換の関係にある。よって、得られたロボット座標群と作業基準点座標群を用いて、第２の実施形態における投光位置とロボット座標の変換式を求めるのと同様の計算により、以下の変換式が得られる（Ｓ１３２７）。
【００９２】
【数１９】
2010152550.tif 000023
【００９３】
数式１９の右辺それぞれに仮想目標点の画像座標値ｘＳを代入すると、ロボットＺ座標をＺ１およびＺ２としたときに作業基準点１００が画像上で仮想目標点と一致するロボット座標ＸH1、ＸH2の推定値が得られる（Ｓ１３２８）。ＰＣは、これら推定値を記憶装置に記憶する（Ｓ１３２９）。
【００９４】
以上により仮想目標点と作業基準点１００が画像上で一致する２つのロボット位置を求めることができる。よって、以降は第１の実施形態、第２の実施形態、あるいは第３の実施形態と同様にして、投光目標位置算出処理（Ｓ１４０）を実施し、第１の実施形態と同様の校正値算出処理（Ｓ１５０）により校正値を算出することができる。
【００９５】
［第５の実施形態］
第１の実施形態乃至第４の実施形態における作業基準点目標位置算出処理（Ｓ１３０）および投光目標位置算出処理（Ｓ１４０）では、作業基準点１００および投光位置が仮想目標点に一致するロボット座標をそれぞれ２点ずつ決定した。しかしながら、これらの処理において、作業基準点１００および投光位置が仮想目標点に一致するロボット座標を３点以上求めることで、より誤差の少ない校正値が得られる。第５の実施形態では、そのような３点以上のロボット座標値を求めて、校正値を取得する処理を説明する。
【００９６】
作業基準点目標位置算出処理（Ｓ１３０）において、異なるロボットＺ座標Ｚ１〜ＺＫ（Ｚ１＜Ｚ２＜…＜ＺＫ、Ｋ≧３）に対して、作業基準点１００と仮想目標点が画像上で一致するロボット座標ＸH1〜ＸHKを求める。作業基準点目標位置算出処理（Ｓ１３０）には、第１実施形態で説明したビジュアルサーボを利用することができる。
【００９７】
もしくは、第４の実施形態で説明した作業基準点目標位置算出処理を用いてもよい。すなわち、異なるロボットＺ座標Ｚ１〜ＺＫ（Ｚ１＜Ｚ２＜…＜ＺＫ、Ｋ≧３）に対して状態座標群ＰH1〜ＰHKおよび作業基準点座標群ＳH1〜ＳHKを収集する。そして、これらの観測値からロボットＺ座標Ｚ1〜ＺKのときに作業基準点１００と仮想目標点が画像上で一致するロボット座標ＸH1〜ＸHKの推定値を求める。
【００９８】
また、投光目標位置算出処理（Ｓ１４０）において、上記作業基準点目標位置算出処理と共通のロボットＺ座標Ｚ1〜ＺKに対してビジュアルサーボを用いて、投光位置と仮想目標点が画像上で一致するロボット座標ＸL1〜ＸLKを求める。
【００９９】
もしくは、第２の実施形態あるいは第３の実施形態における投光目標位置算出処理（Ｓ１４０）を用いてもよい。すなわち、上述のロボットＺ座標Ｚ1〜ＺKに対して状態座標群ＰL1〜ＰLKおよび投光位置座標群ＳL1〜ＳLKを収集する。そして、これらの観測値からロボットＺ座標Ｚ1〜ＺKのときに投光位置と仮想目標点が画像上で一致するロボット座標ＸL1〜ＸLKの推定値を求める。
【０１００】
上記いずれかの方法により得られたロボット座標点ＸH1〜ＸHKおよびＸL1〜ＸLKを用いて、第１の実施形態における数式５〜数式１１の代わりに以下のようにしてＸH0およびＸL0を求める。
【０１０１】
ロボット座標点ＸH1〜ＸHKを結ぶ直線は、画像上の作業基準点１００を仮想目標点ｘＳに保ったままロボットが移動できるロボット座標集合をあらわす直線である。この直線ｌＨの方向ベクトルをＨとすると、ｌＨのベクトル方程式は以下のように表現される。
【０１０２】
【数２０】
2010152550.tif 000024
【０１０３】
ここでＸHは直線を通る任意の一点で、ｔは実数パラメータである。ただしＸH1〜ＸHKは画像解像度による量子化誤差やマーカ１１１の検出誤差などを含み、通常は完全に一直線上に乗ることはないため、近似解として直線式を算出する。まず、ＸH1〜ＸHKの共分散行列ＣＨ（３×３行列）を求める。
【０１０４】
【数２１】
2010152550.tif 000025
【０１０５】
共分散行列ＣＨは対称行列であるため、これを固有値分解すると
【０１０６】
【数２２】
2010152550.tif 000026
【０１０７】
が得られる。ここでΛは固有値λ1、λ2およびλ3を対角成分に持つ行列、Ψは各固有値に対応する固有ベクトルψ1、ψ2およびψ3を成分に持つ行列である。
【０１０８】
【数２３】
2010152550.tif 000027
【数２４】
2010152550.tif 000028
【０１０９】
点集合ＸH1〜ＸHKの平均二乗誤差を最小化する軸は主成分分析によって得られる主軸と等しいため、直線の方向ベクトルＨを最大固有値に対応する固有ベクトルとする。すなわち、
【数２５Ａ】
2010152550.tif 000029
とすると、方向ベクトルＨは以下のようになる。
【数２５Ｂ】
2010152550.tif 000030
【０１１０】
また直線を通る任意の点ＸＨは、ＸH1〜ＸHKの平均ベクトルとする。
【数２６】
2010152550.tif 000031
これら数式２５Ｂおよび数式２６により、直線ｌＨの方程式が得られる。
【０１１１】
同様にしてロボット座標点ＸL1〜ＸLKを結ぶ直線は、画像上の投光位置を仮想目標点ｘＳに保ったままロボットが移動できるロボット座標集合をあらわす直線である。この直線ｌＬの方向ベクトルをＬとすると、ｌＬのベクトル方程式は以下のように表現される。
【数２７】
2010152550.tif 000032
【０１１２】
ここでＸＬは直線を通る任意の一点で、ｓは実数パラメータである。ただしＸL1〜ＸLKは画像解像度による量子化誤差や投光位置検出誤差などを含み通常は完全に一直線上に乗ることはないため、近似解としてｌＬの直線式を算出する。数式２７の直線方程式は数式２０の直線方程式を求めるときと同様、ＸL1〜ＸLKの共分散行列の固有値分解と平均ベクトルからＬとＸＬを求めて得ることができる。
【０１１３】
ここでＺ＝ＺKのときに直線ｌＨが通る点をＸ^HK、直線ｌＬが通る点をＸ^LKとする。なお、以下において、
2010152550.tif 000033
とする。
【０１１４】
Ｘ^HKおよびＸ^LKはいずれも、Ｚ＝ＺKが既知であるため、それぞれの直線方程式におけるＸのＺ座標にＺKを代入してＺ座標に関して方程式を解けば実数パラメータｔおよびｓの値が求まる。そして、それによりＸ^HKおよびＸ^LKのXおよびY座標が得られる。同様にしてＺ＝Ｚ1のときに直線ｌＨが通る点Ｘ^H1および直線ｌＬが通る点Ｘ^L1を求める。ロボットアーム１０に移動命令Ｘ^L1およびＸ^LKを与えて移動させ、それぞれの位置で距離センサ３０から得られた電圧値をＶ^１およびＶ^Ｋとする。すると、距離センサ３０の電圧値をロボット座標系スケールにおける距離へと変換する比例定数ηは下記のようにして求められる。
【０１１５】
【数２８】
2010152550.tif 000034
【０１１６】
また、画像上の投光位置を仮想目標点ｘＳに保ったまま作業基準面１１２を、レーザを投光した位置の高さに一致するようロボットアーム１０を下げた仮想位置ＸL0は下記のように推定される。
【０１１７】
【数２９】
2010152550.tif 000035
【０１１８】
次に、直線ｌＬのベクトル方程式は以下のように書いても同値であることを考える。
【数３０】
2010152550.tif 000036
【０１１９】
ここで移動量ｌHK→H0はＸ^HKからＸH0への移動量とする。移動量ｌHK→H0とＸ^H1からＸ^HKへの移動量の比は、Ｘ^LKからＸL0への移動量とＸ^L1からＸ^LKへの移動量の比に等しいため、
【数３１】
2010152550.tif 000037
となる。よってＸH0は
【数３２】
2010152550.tif 000038
と算出される。
【０１２０】
オフセット量ＷはＸH0とＸL0の相対的な位置関係に等しいため、
【数３３】
2010152550.tif 000039
となる。
【０１２１】
ＰＣは、以上のようにして得られたバイアス電圧ＶＢ、比例定数η、センサオフセット量Ｗ、レーザ光軸正規化方向ベクトルＬを、記憶装置に記憶し、校正作業を終了する。
【０１２２】
［第６の実施形態］
図１４に、本発明を実施するために適した第６の実施形態のおける具体的な装置構成を示す。
【０１２３】
作業領域５０に対して、可動式のロボットアーム１０が固定されている。ロボットアーム１０のエンドエフェクタ取り付け部分にハンドベースプレート３１が設置され、ロボットハンド２０はハンドベースプレート３１に固定されている。これらは図１における移動作業部１に相当するものである。ハンドベースプレート３１にはさらにパターン投光用のプロジェクタ３３と投光パターン撮影用カメラ３２が固定されている。ロボットアーム１０のエンドエフェクタ移動時には、ハンドベースプレート３１を介してロボットハンド２０とプロジェクタ３３および投光パターン撮影用カメラ３２の相対位置関係が変化しないように動作する。ここでプロジェクタ３３と投光パターン撮影用カメラ３２は空間コード化手法によって距離情報を測定するためのものであり、図１における距離情報取得部２に相当する。空間コード化とは、プロジェクタから測定対象物へ複数フレームに渡って異なるパターンを投影することで空間上の各投影線を２進コードで符号化し、距離を求める方法である。
【０１２４】
プロジェクタ３３と投光パターン撮影用カメラ３２はＰＣに接続されている。ＰＣではプロジェクタ３３によって投影された複数のパターン光を投光パターン撮影用カメラ３２で撮影した画像から画像上の各位置における２進コードを解析して距離測定値を得る。ロボットアーム１０は図示しないロボットコントローラに接続され、ロボットコントローラからの動作信号に従って動作する。ＰＣとロボットコントローラは、図１における処理装置３に相当する。ロボットの上部空間には図１の撮像装置４に相当するカメラ４０が設置され、作業領域５０を撮影するようになっている。カメラ４０は前述のＰＣに接続され、カメラ４０から獲得される画像に対してＰＣ上で動作するプログラムによって所定の処理が行われる。ロボットコントローラとＰＣは接続されており、ＰＣからの指令に従ってロボットコントローラからロボットアーム１０に対して命令を送ることができる。
【０１２５】
この装置構成においては、以下のような方法で本発明が実施される。なお、校正作業の開始から作業基準点目標位置算出処理（Ｓ１３０）までは、上記実施形態と同様の方法によって実施される。以下、第６の実施形態において投光目標位置算出処理（Ｓ１４０）を、図１５に示すフローチャートを参照して説明する。
【０１２６】
まず、ＰＣは、ロボットアーム１０を、ロボット座標系のＺ座標をＺ1に固定した任意の位置へ移動させ（Ｓ１４４１）、カメラ４０とプロジェクタ３３を同期させてコード化に必要なフレーム数撮影する（Ｓ１４４２）。ＰＣは、カメラ４０から得られる画像からプロジェクタ光軸中心に割り当てられた２値コードｂを検出し（Ｓ１４４３）、検出結果を元に、２値コードｂとなる投光位置が仮想目標点に一致するようにロボットアーム１０を移動させる。２値コードｂとなる投光位置を仮想目標点に一致させるための移動には、第１の実施形態と同様に特徴ベースのビジュアルサーボなどを用いる。
【０１２７】
続いて、ＰＣは、前フレームにおけるロボットアーム１０のロボット座標系における移動ベクトルに対して画像座標系における投光位置の移動ベクトルを算出することで画像ヤコビアンを計算する（Ｓ１４４４）。そして、ＰＣは、仮想目標点ｘＳと、投光位置の画像上における差分ベクトルと、得られた画像ヤコビアンとから、差分ベクトルを小さくする方向にロボットアーム１０を移動させる（Ｓ１４４５）。ＰＣは、再びカメラ４０とプロジェクタ３３を同期させてコード化に必要なフレーム数撮影する（Ｓ１４４６）。そして、ＰＣは、カメラ４０から得られる画像からプロジェクタ光軸中心に割り当てられた２値コードｂを検出する（Ｓ１４４７）。ＰＣは、仮想目標点ｘＳと投光位置の画像上におけるユークリッド距離を閾値εＬ（例えば、εＬ＝０.５[pixel]）と比較し（Ｓ１４４８）、閾値εＬよりも大きければ処理を１４４４に戻す。
【０１２８】
上記ユークリッド距離が閾値εＬよりも小さければ、ＰＣは、仮想目標点ｘＳと投光位置が画像上で一致したものと判断し、このときのロボット座標をＸL1として記憶装置に記憶する（Ｓ１４４９）。また、ＰＣは、２値コードｂとなる投光位置における距離情報をＶ１として記憶装置に記憶する（Ｓ１４５０）。
【０１２９】
同様にして、ＰＣは、ロボットアーム１０の高さをロボット座標系のＺ座標をＺ2へと変えて移動させて、ｂと等しい２値コードを持つ投光位置を画像上で検出する。そして、ＰＣは、検出結果を元に２値コードｂとなる投光位置を仮想目標点に一致するようにロボットアーム１０を移動させる。そして、ＰＣは、投光位置と仮想目標点が一致したときのロボット座標をＸL2、２値コードｂとなる投光位置における距離情報をＶ２として記憶装置に記憶させる（Ｓ１４４１〜Ｓ１４５０）。以上の処理を所定回数（本例では２回）繰り返してならば、ＰＣは、ロボット座標および距離測定が終了したものとして投光目標位置算出処理（Ｓ１４０）を終了する（Ｓ１４５１）。
【０１３０】
なお、第２の実施形態のように作業領域５０の平面度がある場合、もしくは第３の実施形態のように作業領域５０に平面度のある投光プレート２００を置いた場合、下記のようにして投光目標位置算出処理（Ｓ１４０）を行うこともできる。
【０１３１】
図１６のフローチャートに示されるように、まず、ＰＣは、ロボットアーム１０をロボット座標系のＺ座標をＺ1とした任意の位置へ移動させる（Ｓ１４６１）。続いて、ＰＣは、カメラ４０と距離センサ３０のプロジェクタを同期させてコード化に必要なフレーム数撮影し（Ｓ１４６２）、プロジェクタ光軸中心を表す２値コードｂを画像上から検出する（Ｓ１４６３）。ＰＣは、同様の処理を、ロボット座標系のＺ座標をＺ1とした３つ以上のロボット座標に関して行い、これらのロボット座標を状態座標群Ｐ1とする。そして、これらのロボット座標に対応する２値コードｂの検出された画像座標位置を投光位置座票群Ｓ1とする（Ｓ１４６１〜Ｓ１４６５）。
【０１３２】
同様にして、ＰＣは、ロボットアーム１０の高さをロボット座標系のＺ座標をＺ2とした任意の３つ以上のロボット座標点を状態座標群Ｐ2とする。そして、２値コードｂの検出された画像座標位置を投光位置座票群Ｓ2とする（Ｓ１４６１〜Ｓ１４６６）。ＰＣは、これら状態座標群Ｐ1およびＰ2、投光位置座標群Ｓ1およびＳ2から、第２の実施形態と同様の計算により数式１７と同様の座標変換式を算出する（Ｓ１４６７）。そして、ＰＣは、２値コードｂの位置が仮想目標点と一致するときのロボット座標ＸL1およびＸL2の推定値を算出し（Ｓ１４６８）、記憶装置に記憶する（Ｓ１４６９）。そして、ＰＣは、算出されたロボット座標ＸL1にロボットアーム１０を移動させ（Ｓ１４７０）、２値コードｂに対応する位置の距離情報をＶ１として記憶装置に記憶する（Ｓ１４７１）。また、ＰＣは、ロボット座標ＸL2においても同様にしてロボットアームを移動させて２値コードｂに対応する位置の距離情報をＶ２として記憶装置に記憶させ（Ｓ１４７２）、投光目標位置算出処理（Ｓ１４０）を終了する。
【０１３３】
また投光目標位置算出処理（Ｓ１４０）において、第５の実施形態と同様にして投光位置と仮想目標点が一致するロボット座標を３点以上求めることで、より誤差の少ない校正値を得ることもできることは明らかである。その後、校正値算出処理（Ｓ１５０）では、ＰＣは、第１の実施形態と同様にして校正値を算出し、校正作業を終了する。
【０１３４】
以上説明したように、各実施形態によれば、ロボットアームの任意の位置に任意の取り付け精度で設置された距離センサに関して、ロボット座標系における距離センサの光軸方向とオフセット量を非接触かつ自動的に校正値として算出することが可能である。
【０１３５】
以上、実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１３６】
尚、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによって前述した実施形態の機能が達成される場合を含む。この場合、供給されるプログラムは実施形態で図に示したフローチャートに対応したコンピュータプログラムである。
【０１３７】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１３８】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【０１３９】
コンピュータプログラムを供給するためのコンピュータ読み取り可能な記憶媒体としては以下が挙げられる。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などである。
【０１４０】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１４１】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布するという形態をとることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してホームページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
【０１４２】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどとの協働で実施形態の機能が実現されてもよい。この場合、ＯＳなどが、実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
【０１４３】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行なう。
【図面の簡単な説明】
【０１４４】
【図１】本発明の実施形態による作業装置の構成の概要を示したブロック図である。
【図２】本発明の実施形態に係る作業装置の構成例を示した図である。
【図３】作業基準点を説明した図である。
【図４】本発明の実施形態による校正処理を説明するフローチャートである。
【図５】実施形態による校正プレートを説明する図である。
【図６】第１の実施形態における作業基準点目標位置算出処理の詳細を示すフローチャートである。
【図７】第１の実施形態における投光目標位置算出処理の詳細を示すフローチャートである。
【図８】作業基準面とバイアスを説明した図である。
【図９】実施形態における校正値を説明した図である。
【図１０】実施形態による校正原理を示した図である。
【図１１】第２の実施形態および第３の実施形態における投光目標位置算出処理の詳細を示すフローチャートである。
【図１２】第４の実施形態における作業基準点目標位置算出処理の詳細を示すフローチャートである。
【図１３】第３の実施形態における、投光プレートを用いた校正に関して説明した図である。
【図１４】第６の実施形態による作業装置の構成を示した図である。
【図１５】第６の実施形態における投光目標位置算出処理の詳細を示すフローチャートである。
【図１６】第６の実施形態における投光目標位置算出処理の他の手順を示すフローチャートである。
【図１】
2010152550.tif 000040
【図２】
2010152550.tif 000041
【図３】
2010152550.tif 000042
【図４】
2010152550.tif 000043
【図５】
2010152550.tif 000044
【図６】
2010152550.tif 000045
【図７】
2010152550.tif 000046
【図８】
2010152550.tif 000047
【図９】
2010152550.tif 000048
【図１０】
2010152550.tif 000049
【図１１】
2010152550.tif 000050
【図１２】
2010152550.tif 000051
【図１３】
2010152550.tif 000052
【図１４】
2010152550.tif 000053
【図１５】
2010152550.tif 000054
【図１６】
2010152550.tif 000055