(57)【要約】【課題】簡易な座標系の定義によってビジュアルサーボを実施する。【解決手段】仮想空間内で定義されたロボットに対するカメラの姿勢に基づいて、実空間における前記ロボットに対する前記カメラの姿勢を取得し、前記カメラによって対象物を撮影した画像データと、前記カメラの姿勢とに基づいて、前記対象物と前記ロボットとの位置関係を制御するビジュアルサーボを行う、ロボット制御装置が構成される。【選択図】図７
2018051634.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間内で定義されたロボットに対するカメラの姿勢に基づいて、実空間における前記ロボットに対する前記カメラの姿勢を取得し、
前記カメラによって対象物を撮影した画像データと、前記カメラの姿勢とに基づいて、前記対象物と前記ロボットとの位置関係を制御するビジュアルサーボを行う、
ロボット制御装置。
【請求項２】
前記カメラの姿勢は、
ロボット座標系に対する、カメラ座標系の向きである、
請求項１に記載のロボット制御装置。
【請求項３】
前記対象物の位置を目標位置に近づけるための前記ロボットの目標位置を前記カメラの姿勢に基づいて取得し、前記ロボットを目標位置に移動させる制御を繰り返す、
請求項１または請求項２のいずれかに記載のロボット制御装置。
【請求項４】
請求項１〜請求項３のいずれかに記載されたロボット制御装置によって制御されるロボット。
【請求項５】
請求項１〜請求項３のいずれかに記載されたロボット制御装置と、前記ロボット制御装置によって制御される前記ロボットとを備えるロボットシステム。
【請求項６】
仮想空間内におけるロボットの３次元モデルとカメラの３次元モデルとを表示部に表示させ、
前記カメラの姿勢に関するパラメーターの入力を受け付け、
入力された前記パラメーターに基づいて、前記表示部に表示された前記カメラの３次元モデルの姿勢を変化させ、
前記表示部に表示された前記カメラの３次元モデルの姿勢に基づいて、前記ロボットに対する前記カメラの姿勢を取得する、
姿勢特定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御装置、ロボット、ロボットシステムおよび姿勢特定装置に関する。
【背景技術】
【０００２】
カメラで撮影された画像に基づいてロボットの位置や姿勢等を制御するビジュアルサーボを行うためには、ロボットに固定されたロボット座標系とカメラに固定されたカメラ座標系との関係を特定する必要がある。ビジュアルサーボの結果として期待される制御は、ロボットと対象物との位置関係に関する高精度な制御であることが多く、従来、ロボット座標系とカメラ座標系との間の位置関係を正確に特定する試みが行われていた（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−１３６７７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ビジュアルサーボによる制御は高精度に行われる必要があるが、当該高精度な制御のために必要な座標系同士の関係は必ずしも高精度である必要はない。例えば、カメラで撮影された対象物の位置を目標位置に近づけるためにフィードバック制御を行うのであれば、ロボットに対するカメラの姿勢が判明していれば良く、カメラの位置は不定であって良い。また、カメラの姿勢が不正確であっても、フィードバック制御の過程で対象物の位置を目標位置に正確に合わせ込むことが可能である。従って、従来のように、ロボット座標系とカメラ座標系との間の位置関係を正確に特定する試みは、ビジュアルサーボを行うための構成においては、不必要な精度を追求することになり、過度に煩雑な作業を要することになっていた。
【課題を解決するための手段】
【０００５】
上記課題の少なくとも一つを解決するために、本発明のロボット制御装置は、仮想空間内で定義されたロボットに対するカメラの姿勢に基づいて、実空間におけるロボットに対するカメラの姿勢を取得し、カメラによって対象物を撮影した画像データと、カメラの姿勢とに基づいて、対象物とロボットとの位置関係を制御するビジュアルサーボを行う。
【０００６】
この構成によれば、仮想空間内で定義されたロボットに対するカメラの姿勢を、実空間におけるロボットに対するカメラの姿勢と見なしてビジュアルサーボを行うことが可能になる。従って、実際に、カメラでロボットを撮影して実空間上でのロボットとカメラとの関係を特定するなどの、難度の高いキャリブレーション作業を経ることなく、実空間でのロボットに対するカメラの姿勢を特定してビジュアルサーボを行うことができる。
【０００７】
さらに、実空間におけるロボットとカメラの関係を参照することなく仮想空間内でロボットに対するカメラの姿勢が定義された場合、実空間においてロボットに対するカメラの姿勢が正確に反映された状態でカメラの姿勢を定義することは極めて難しい。しかし、実空間におけるロボットとカメラの関係が不正確であったとしても、ロボットに対するカメラの姿勢に極めて大きな誤差（例えば、カメラの向きが逆方向であるなど）が発生していなければ、フィードバック制御によってビジュアルサーボを高精度に機能させることができる。従って、実空間におけるロボットとカメラの正確な関係をキャリブレーションによって特定せず、誤差が含まれ得る仮想空間内で定義されたロボットに対するカメラの姿勢を実空間における姿勢であるとみなしたとしても、高精度にビジュアルサーボを機能させることができる。
【０００８】
さらに、カメラの姿勢は、ロボット座標系に対する、カメラ座標系の向きである構成が採用されてもよい。この構成によれば、簡易にロボットに対するカメラの姿勢を定義することができる。
【０００９】
さらに、対象物の位置を目標位置に近づけるためのロボットの目標位置をカメラの姿勢に基づいて取得し、ロボットを目標位置に移動させる制御を繰り返す構成が採用されてもよい。このような制御は、実空間におけるロボットとカメラの関係が正確に定義されていなくてもビジュアルサーボを機能させることが可能である。
【００１０】
さらに、仮想空間内におけるロボットの３次元モデルとカメラの３次元モデルとを表示部に表示させ、カメラの姿勢に関するパラメーターの入力を受け付け、入力されたパラメーターに基づいて、表示部に表示されたカメラの３次元モデルの姿勢を変化させ、表示部に表示されたカメラの３次元モデルの姿勢に基づいて、ロボットに対するカメラの姿勢を取得する姿勢特定装置が構成されても良い。この構成によれば、ロボットに対するカメラの姿勢を容易に定義することが可能になる。
【図面の簡単な説明】
【００１１】
【図１】ロボットの斜視図である
【図２】ロボット制御装置の機能ブロック図である。
【図３】ビジュアルサーボ処理のフローチャートである。
【図４】ビジュアルサーボの例を示す図である。
【図５】ビジュアルサーボの例を示す図である。
【図６】姿勢特定装置の機能ブロック図である。
【図７】姿勢特定装置におけるＵＩを示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について添付図面を参照しながら以下の順に説明する。なお、各図において対応する構成要素には同一の符号が付され、重複する説明は省略される。
（１）ロボットの構成：
（２）ロボット制御装置の構成：
（３）ビジュアルサーボ処理：
（４）姿勢特定装置：
（５）他の実施形態：
【００１３】
（１）ロボットの構成：
図１は本発明の一実施形態にかかるロボット１の斜視図である。図１に示すように、ロボット１は、アーム１０とエンドエフェクター２０とを備える。アーム１０は、３個の曲げ関節Ｂ１〜Ｂ３と３個のねじり関節Ｒ１〜Ｒ３とを有する６軸アームである。曲げ関節Ｂ１〜Ｂ３とは、アーム１０を構成する部材同士が、アーム１０の長さ方向に直交する軸を中心に回転する関節である。ねじり関節Ｒ１〜Ｒ３とは、アーム１０を構成する部材同士が、アーム１０の長さ方向の軸を中心に回転する関節である。アーム１０は、曲げ関節Ｂ１〜Ｂ３とねじり関節Ｒ１〜Ｒ３とを動作させるための駆動部としてのモーター（不図示）を備えている。
【００１４】
エンドエフェクター２０は、アーム１０の先端に装着されている。ロボット１は、６軸のアーム１０を駆動させることによって、可動範囲内においてエンドエフェクター２０を任意の位置に配置し、任意の姿勢（角度）とすることができる。エンドエフェクター２０には力覚センサーＰとグリッパー２１が備えられている。力覚センサーＰは、エンドエフェクター２０に作用する３軸の並進力と、当該３軸まわりに作用する回転力（トルク）を計測するセンサーである。
【００１５】
ロボット１は、ティーチングを行うことにより各種作業が可能となる汎用ロボットである。本実施形態においては、部品Ｗ1を部品Ｗ2に挿入する組立作業を行うためのティーチングが行われ、当該組立作業が行われる場合を例として説明する。すなわち、ロボット１は、グリッパー２１を部品Ｗ1のストック位置に移動させ、グリッパー２１によって部品Ｗ1をピックアップし、部品Ｗ2の上空まで運ぶ。そして、ロボット１は、当該部品Ｗ2の凹部に対して部品Ｗ1を挿入する作業を行う。
【００１６】
本実施形態において、ロボット１は、ロボット制御装置４０に接続されており、当該ロボット制御装置４０によって制御される。従って、ロボット１とロボット制御装置４０とでロボットシステムを構成する。ロボット制御装置４０は、カメラ３０を利用したビジュアルサーボを実行することができる。すなわち、本実施形態においては、部品Ｗ1を部品Ｗ2に挿入する作業が行われる作業エリアが視野に含まれるようにカメラ３０の視野が調整され、図示しない支持部に固定されている。ロボット制御装置４０は、当該カメラ３０によって撮影された画像データに基づいて、ロボット１の位置および姿勢を調整することで、部品Ｗ2の凹部に対して部品Ｗ1を挿入する作業を行う。
【００１７】
（２）ロボット制御装置の構成：
ロボット制御装置４０は、図示しないプログラムの実行部（ＣＰＵ，ＲＡＭ，ＲＯＭ等）を備えている。ロボット制御装置４０は、図示しないインタフェースを介して信号の入出力を行うことが可能であり、ロボット１のエンドエフェクターに装着された力覚センサーＰの出力を取得し、アーム１０が備える各モーターを制御するための制御信号を出力することが可能である。また、ロボット制御装置４０は、図示しないインタフェースを介してカメラ３０が出力する画像データを取得することが可能である。
【００１８】
本実施形態において、ロボット制御装置４０は、力覚センサーＰからの出力に基づいて、ＴＣＰ（Tool Center Point：グリッパー２１とともに移動する基準部位）に作用する力を特定し、当該力が目標力となるように、アーム１０の各関節を制御することができる。すなわち、力覚センサーＰにおいては、予め決められたＴＣＰに固定された局所座標系（図示せず）の３軸方向の力と３軸周りのトルクとを検出可能である。局所座標系は種々の定義が可能であるが、例えば、グリッパー２１が延びる方向と開く方向のそれぞれに平行な２軸と当該２軸に垂直な１軸とによって定義可能である。ロボット制御装置４０は、力覚センサーＰの出力を取得してグリッパー２１に把持された物体を介してＴＣＰに作用する力を局所座標系にて検出する。
【００１９】
一方、ロボット１のアーム１０やエンドエフェクター２０、グリッパー２１、ＴＣＰの位置はロボット座標系（図１に示す直交ｘｙｚ座標系）によって定義され、ロボット座標系と局所座標系との関係も予め特定されている。そこで、ロボット制御装置４０は、力覚センサーＰによって検出された力が目標力ではない場合、当該目標力が検出される状態を実現するために必要なアーム１０の駆動量（モーターの制御量）を座標系の関係に基づいて取得する。
【００２０】
そして、ロボット制御装置４０が、モーターに対して制御信号を出力することにより、モーターを制御量に従って動作させ、目標力を実現するためにロボット１のアーム１０の位置を変化させる。当該モーターの制御量は、種々の手法によって決定されて良く、例えば、インピーダンス制御によって制御量が決められる構成等が採用可能である。むろん、ロボット制御装置４０は、力覚センサーＰから出力されるトルクを目標トルクにするように、アーム１０を制御しても良い。
【００２１】
さらに、ロボット制御装置４０は、ＴＣＰの位置が目標位置となり、ＴＣＰを有する部位の姿勢が目標姿勢となるように、アーム１０の各関節を制御することができる。すなわち、ＴＣＰの位置はロボット座標系、ＴＣＰを有する部位の姿勢は局所座標系における軸の方向に基づいて決定される。可動範囲内でＴＣＰがロボット座標系において任意の座標に位置し、ＴＣＰが任意の姿勢になるために必要な各アーム１０の動作は予め特定されている。ロボット制御装置４０は、ロボット座標系におけるＴＣＰの目標位置および目標姿勢が特定されると、当該目標位置および目標姿勢に基づいてアーム１０の駆動量（モーターの制御量）を取得する。そして、ロボット制御装置４０は、モーターに対して制御信号を出力することにより、モーターを制御量に従って動作させる。むろん、当該制御においては、ＰＩＤ（Proportional-Integral-Derivative）制御等のフィードバック制御によってモーターの制御量が取得されても良い。
【００２２】
以上の構成に加え、本実施形態においてロボット制御装置４０は、カメラ３０が出力する画像データに基づいてビジュアルサーボを行うことができる。当該ビジュアルサーボを行うため、ロボット制御装置４０は、図２に示す機能を実行することができる。すなわち、ロボット制御装置４０は、予め決められたプログラムを実行することによって、姿勢取得部４１，画像データ取得部４２，視覚制御部４３として機能する。
【００２３】
姿勢取得部４１は、仮想空間内で定義されたロボット１に対するカメラ３０の姿勢を、実空間におけるロボット１に対するカメラ３０の姿勢として取得する機能である。本実施形態においては、各種の制御において参照される座標系同士の関係が予め定義され、図示しない記録媒体に座標系情報Ｉｃとして記録されている。ロボット制御装置４０は、姿勢取得部４１の機能により、当該座標系情報Ｉｃを参照し、ロボット１に対するカメラ３０の姿勢を取得する。
【００２４】
なお、本実施形態において、ロボット１に対するカメラ３０の姿勢はロボット座標系に対するカメラ座標系の向きによって規定されている。具体的には、カメラ３０は、複数の画素を備えるラインが複数個並べられたエリアセンサーを備えている。本実施形態においては、当該エリアセンサーのライン方向およびラインが並ぶ方向のそれぞれ平行な２軸と、エリアセンサーに光を導く光学系の光軸方向に平行な１軸とによって、直交座標系が形成され、カメラ座標系とされている。図１においては、当該カメラ座標系の各軸をｉ軸、ｊ軸、ｋ軸として示している。
【００２５】
当該カメラ座標系は、カメラ３０に対して固定されており、カメラ３０の位置および姿勢の変化に応じて原点および軸の向きが変化する。そして、カメラ座標系の向きは、ロボット座標系の各軸（ｘ軸、ｙ軸、ｚ軸）に対するカメラ座標系の各軸（ｉ軸、ｊ軸、ｋ軸）の向きによって規定されている。具体的には、ｘ軸、ｙ軸、ｚ軸のそれぞれとｉ軸、ｊ軸、ｋ軸のそれぞれとが平行である状態を基準とし、カメラ座標系がｚ軸に対して回転している角度ｕと、カメラ座標系がｙ軸に対して回転している角度ｖと、カメラ座標系がｘ軸に対して回転している角度ｗとによってカメラ座標系の姿勢が特定されることで、ロボット１に対するカメラ３０の向きが定義されている。
【００２６】
なお、本実施形態においては、ロボット１からみたカメラ３０の位置も規定されている。すなわち、カメラ座標系の原点の位置がロボット座標系における座標として規定されている。ただし、ビジュアルサーボにおいて当該ロボット１からみたカメラ３０の位置は考慮されないため、ビジュアルサーボにおいてロボット１からみたカメラ３０の位置が規定されていることは必須ではない。
【００２７】
以上のように、本実施形態においてロボット制御装置４０は、座標系情報Ｉｃを参照することによって実空間におけるロボット１に対するカメラ３０の姿勢を取得するが、当該カメラの姿勢は、仮想空間において定義された姿勢であり、実空間におけるキャリブレーションを経て定義された姿勢ではない（詳細は後述）。
【００２８】
画像データ取得部４２は、部品Ｗ1，部品Ｗ2をカメラ３０によって撮影した画像データを取得する機能である。すなわち、ビジュアルサーボは部品Ｗ1，部品Ｗ2の位置関係を制御するため、本実施形態においては、当該制御の対象となる部品Ｗ1，部品Ｗ2がカメラ３０によって撮影され、ロボット制御装置４０は、当該部品Ｗ1，部品Ｗ2が撮影された画像を示す画像データをカメラ３０から取得する。
【００２９】
視覚制御部４３は、画像データとカメラ３０の姿勢とに基づいて、対象物とロボット１との位置関係を制御するビジュアルサーボを行う機能である。すなわち、視覚制御部４３は、特徴量抽出やパターンマッチング等によって画像データを解析することにより、画像内で部品Ｗ1，部品Ｗ2の像を特定することができる。当該画像を撮影したカメラ３０の姿勢が判明していると、当該画像内の対象物を所望の方向に移動させるために必要なロボット１の動作（移動および姿勢変化）を特定することができる。そこで、対象物とロボット１との位置関係として目標とすべき位置関係がある場合、当該位置関係になるようにロボット１の動作を特定し、動作させればビジュアルサーボを行うことができる。ロボット制御装置４０は、視覚制御部４３の機能により、当該ビジュアルサーボを行うことにより、部品Ｗ2の凹部に対して部品Ｗ1を挿入する作業を行う。
【００３０】
以上の構成において、実空間におけるロボット１とカメラ３０の関係を特定するキャリブレーション作業は行われず、仮想空間内で定義されたロボット１に対するカメラ３０の姿勢に基づいてビジュアルサーボが行われる。そして、実空間におけるロボット１とカメラ３０の関係を特定するキャリブレーション作業が行われなかった場合、実空間におけるロボット１に対するカメラ３０の姿勢が正確に反映された状態でビジュアルサーボを行うことは不可能である。
【００３１】
しかし、実空間におけるロボット１とカメラ３０の関係が不正確であったとしても、ロボット１に対するカメラ３０の姿勢に極めて大きな誤差（例えば、カメラ３０の向きが逆方向であるなど）が発生していなければ、フィードバック制御によってビジュアルサーボを高精度に機能させることができる。
【００３２】
（３）ビジュアルサーボ処理：
次に、ビジュアルサーボ処理を詳細に説明しながら、実空間におけるロボット１とカメラ３０の関係が正確に定義されていなくてもビジュアルサーボが機能する様子を説明する。図３は、ビジュアルサーボ処理のフローチャートである。本実施形態においては、部品Ｗ1を部品Ｗ2に挿入する工程の開始位置がロボット１に教示されており、当該教示された開始位置にロボット１のアーム１０が配置されると、カメラ３０の視野に部品Ｗ1および部品Ｗ2が含まれる状態になる。
【００３３】
この状態においてロボット制御装置４０は、図３に示すビジュアルサーボ処理を開始する。ビジュアルサーボ処理が開始されると、ロボット制御装置４０は、カメラの画像を取得し、対象物（部品Ｗ1）の位置および姿勢を取得する（ステップＳ１００）。すなわち、ロボット制御装置４０は、画像データ取得部４２の機能により、カメラ３０が出力する画像データを取得する。
【００３４】
また、ロボット制御装置４０は、画像データが示す画像内での部品Ｗ1の像を特定する。そして、ロボット制御装置４０は、視覚制御部４３の機能により、当該像に対して特徴量抽出やパターンマッチング等の解析を行い、部品Ｗ1の位置および姿勢を特定する。この結果、カメラ座標系における部品Ｗ1の位置および姿勢が特定された状態になる。図４は、カメラ３０で撮影された画像３０ａを模式的に示す図であり、ステップＳ１００が行われると、部品Ｗ1の位置としてＴＣＰの位置Ｐ1が特定される。
【００３５】
この例においては、直方体である部品Ｗ1の稜がカメラ座標系に平行である例を示している。カメラ３０に対する部品Ｗ1，部品Ｗ2の姿勢はこの姿勢に限られず、斜視状態であるなど種々の姿勢が想定可能であり、姿勢が異なっていても後述する制御に本質的な差はない、ここでは、簡単のため、図４に示す姿勢であって奥行きに関する情報をほぼ無視できる例を説明する。従って、この例であれば、ステップＳ１００において、直方体である部品Ｗ1の一面がｉｋ平面に平行な姿勢であることが特定される。
【００３６】
次に、ロボット制御装置４０は、視覚制御部４３の機能により、挿入完了位置および姿勢と、現在の位置および姿勢との差分を取得する（ステップＳ１０５）。すなわち、ロボット制御装置４０は、画像データが示す画像内での部品Ｗ2の像を特定する。そして、ロボット制御装置４０は、当該像に対して特徴量抽出やパターンマッチング等の解析を行い、部品Ｗ2の位置および姿勢を特定する。この結果、カメラ座標系における部品Ｗ2の位置および姿勢が特定された状態になる。
【００３７】
さらに、ロボット制御装置４０は、部品Ｗ2の位置および姿勢に基づいて、部品Ｗ1を部品Ｗ2に挿入した状態における部品Ｗ1の位置を挿入完了位置として取得し、この際の姿勢を特定する。ロボット制御装置４０は、当該挿入完了位置および姿勢と、ステップＳ１００で取得された位置および姿勢との差分（変位量および変移角度）を算出する。図４においては、部品Ｗ1を部品Ｗ2に挿入した状態における部品Ｗ1の位置および姿勢を破線によって示しており（符号Ｗ11）、挿入完了位置はＴＣＰの予定位置Ｐｄである。この例においては、姿勢の差分は０（すなわち、姿勢を変化させる必要がない）であり、位置の差分がベクトルｄＰである。以下、この例について説明するが姿勢の差分が有限であっても制御に本質的な差は無い。
【００３８】
次に、ロボット制御装置４０は、視覚制御部４３の機能により、ステップＳ１０５で取得された差分が０であるか否かを判定し（ステップＳ１１０）、差分が０であると判定された場合、挿入作業を終了する。一方、ステップＳ１１０において、差分が０であると判定されない場合、ロボット制御装置４０は、ステップＳ１０５で取得された差分をカメラ座標系での表現からロボット座標系での表現に変換する（ステップＳ１１５）。すなわち、本実施形態においては、ロボット座標系に対するカメラ座標系の向きによってロボット１に対するカメラ３０の姿勢が規定され、座標系情報Ｉｃによって定義されている。そこで、ロボット制御装置４０は、姿勢取得部４１の機能により、座標系情報Ｉｃを参照してロボット座標系に対するカメラ座標系の向きを取得する。
【００３９】
ロボット座標系に対するカメラ座標系の向きは、カメラ座標系に対するロボット座標系の向きと等価であるため、ロボット制御装置４０は、視覚制御部４３の機能により、当該座標系の関係に基づいて、ロボット座標系での差分に変換する。図４に示す例であれば、カメラ座標系での差分であるベクトルｄＰに相当する位置変化がロボット座標系（図１に示すｘｙｚ座標系）において特定される。
【００４０】
次にロボット制御装置４０は、ステップＳ１１５で取得された差分にゲインをかけて移動量を取得する（ステップＳ１２０）。すなわち、本実施形態においては、微小移動を繰り返すことによって徐々にＴＣＰを目標位置に向けて移動させる制御を繰り返す構成が採用されている。このため、差分に対してゲイン（＜１）をかけることにより、ロボット１が徐々に差分を解消し、部品Ｗ2の凹部に対して部品Ｗ1を挿入する作業を行うように構成されている。
【００４１】
ゲインを乗じることによって移動量が取得されると、ロボット制御装置４０は、視覚制御部４３の機能により、当該移動量だけロボット１を移動させる（ステップＳ１２５）。すなわち、ロボット制御装置４０は、当該移動量だけ移動した後のＴＣＰの位置をロボット座標系で特定し、当該ＴＣＰの位置を目標位置とした位置制御を行う。移動が行われると、ロボット制御装置４０は、ステップＳ１００以降の処理を繰り返す。この結果、部品Ｗ1が部品Ｗ2の凹部に対して徐々に近づき、最終的に部品Ｗ1が部品Ｗ2の凹部に挿入される。
【００４２】
以上のように、本実施形態においては、部品Ｗ1を徐々に部品Ｗ2の凹部に近づけることでフィードバック制御を行っているが、当該制御によるロボット座標系の位置および姿勢は、カメラ３０の位置（カメラ座標系の原点）に依存しない。従って、カメラ座標系が実空間内で並進方向に誤差のある位置に定義されていたとしても、制御の正確性に影響はない。図４においては、実線で示す画像３０ａを撮影したカメラ３０と同一の姿勢であるが、ｉ軸、ｋ軸方向に位置がずれているカメラ３０の視野を破線によって示している。
【００４３】
ここで、実際のカメラ３０の視野が破線の位置である状態において、カメラ３０の視野が実線であるかのように誤ってカメラ座標系が定義されている場合（カメラ座標系の原点がｉ軸、ｋ軸方向に誤差を有している場合）を想定する。この場合、両者においてはカメラ３０の姿勢が同一であるため、両者においてステップＳ１０５で取得される差分は同一の情報として取得され、ロボット座標系での差分に変換された場合の結果も同一である。従って、カメラ３０の位置が並進方向に不正確であってもビジュアルサーボ処理に影響を与えない。
【００４４】
さらに、カメラ３０の姿勢が不正確であったとしても、本実施形態のように、ロボット１によって対象物の位置を目標位置に少しずつ近づける制御を行えば、最終的に対象物を目標位置まで移動させることができる。図５は、ロボット座標系のｘ−ｚ平面に平行な面内にＴＣＰの初期位置Ｐ1とＴＣＰの予定位置Ｐｄとが存在する例を示している。この例においては、ｚ軸方向に平行な方向にＴＣＰを移動させることにより、部品Ｗ1を部品Ｗ2に挿入可能である。
【００４５】
この例において、図５において直線の矢印で示すように、ロボット座標系のｚ軸およびｘ軸にカメラ座標系のｋ軸およびｉ軸が平行である例を想定する。この例において座標系情報Ｉｃにより、ロボット座標系のｚ軸およびｘ軸にカメラ座標系のｋ軸およびｉ軸が平行であると定義されていると、ロボット１に対するカメラ３０の向きが正しく定義されていることになる。この場合、カメラ３０が出力した画像データに基づいてステップＳ１１５、Ｓ１２０によって移動量が取得されて移動が行われると、図５に示すベクトルｄＰ1のようにＴＣＰの初期位置Ｐ1からＴＣＰの予定位置Ｐｄに向けた移動が実現される。
【００４６】
一方、カメラ座標系の軸の方向に誤差があり、実際のカメラ３０の向きに対してｋ軸およびｉ軸が反時計回りに角度αだけ回転したｋ0軸およびｉ0軸が座標系情報Ｉｃとして定義されている例を想定する。当該回転の誤差がある状況のカメラ３０から出力される画像に基づいて解析が行われると、ＴＣＰの初期位置Ｐ1からＴＣＰの予定位置Ｐｄに向けた方向は、図５に示すｄＰ1の方向に対して角度αずれた状態となる。従って、ステップＳ１１５、Ｓ１２０によって移動量が取得されて移動が行われると、図５に破線で示すベクトルｄＰ10のようにＴＣＰの初期位置Ｐ1からＴＣＰの予定位置Ｐｄに向けた方向に対して角度αずれた方向への移動が行われ、ＴＣＰが位置Ｐ2となる。
【００４７】
この後、ステップＳ１００以後のループが繰り返されると、ＴＣＰの位置Ｐ2からＴＣＰの予定位置Ｐｄに向けた方向ｄＰ2へ向けた移動が行われるが、座標系が角度αだけずれていることに起因し、ＴＣＰの位置は破線のように移動し、位置Ｐ3となる。以後、ステップＳ１００以後のループが繰り返されると、ＴＣＰは位置Ｐ4、位置Ｐ5と順次移動する。この際、ＴＣＰの位置から予定位置Ｐｄに向けた直線の方向（実線矢印の方向）とは、角度αだけずれた方向（破線矢印の方向）に移動していくが、本実施形態においては、移動量にゲインがかけられ、移動量が徐々に短くなっていく。従って、位置が予定位置Ｐｄに近づくと、ＴＣＰの位置から予定位置Ｐｄに向けた直線の方向と角度αずれた方向との差異は大きな意味を持たず、最終的には、位置が予定位置Ｐｄに収束していく。
【００４８】
以上のように、本実施形態においては、カメラ座標系が実空間内で並進方向に誤差のある位置に定義されていたとしても、制御の正確性に影響はない。さらに、カメラ座標系の軸の方向がロボット座標系の軸の方向に対して誤差があったとしても、最終的に対象物を目標位置まで移動させることができる。従って、ビジュアルサーボを適正に機能させる点に着目すると、座標系情報Ｉｃにおいて、カメラ座標系とロボット座標系の対応関係が正確に定義されている（キャリブレーションが行われている）必要はない。
【００４９】
そこで、本実施形態において、ロボット１に対するカメラ３０の姿勢は、仮想空間内で予め定義される。当該仮想空間は実空間と異なり、コンピューター等によって規定される仮想的な３次元空間であり、当該仮想空間においてカメラの姿勢を特定する際に、実空間におけるロボットとカメラとの正確な関係が反映されなければ、仮想空間内でロボット１に対するカメラ３０の姿勢を正確に定義することはできない。
【００５０】
そして、本実施形態においては、実空間内でロボット１に対するカメラ３０の姿勢を特定するキャリブレーションが行われないため、仮想空間内でロボット１に対するカメラ３０の姿勢は正確に定義されない。しかし、上述のように、カメラ３０の姿勢が正確に定義されていなくても、ビジュアルサーボを正確に機能させることができるため、本実施形態においては、仮想空間内で簡易に定義されたカメラ３０の姿勢を座標系情報Ｉｃとして定義することにより、実空間におけるカメラ３０の姿勢と見なしている。
【００５１】
（４）姿勢特定装置：
本実施形態において利用者は、姿勢特定装置を利用して仮想空間内でロボット１に対するカメラ３０の姿勢を定義することができる。図６は姿勢特性装置の構成例を示す図であり、姿勢特定装置はＣＰＵ，ＲＡＭ，ＲＯＭ等を備えるコンピューターによって姿勢特定プログラムが実行されることによって実現される。コンピューターの態様は任意の態様であってよく、例えば、可搬型のコンピューター等によって構成可能である。姿勢特定プログラムが実行されると、コンピューターは３次元モデル表示部５１、パラメーター入力部５２、表示姿勢制御部５３、カメラ姿勢取得部５４として機能する。
【００５２】
なお、姿勢特定装置５０には表示部５５、入力部５６およびロボット制御装置４０が接続される。表示部５５は、姿勢特定装置５０が出力する制御信号に基づいて、任意の画像を表示可能なディスプレイである。入力部５６は、キーボードやマウスなどの操作入力装置であり、姿勢特定装置５０は、当該入力部５６に対する利用者の操作によって各種の入力を受け付ける。姿勢特定装置５０は、ロボット制御装置４０に接続された状態で使用され、ロボット１に対するカメラ３０の姿勢が定義されると、当該姿勢を示す座標系情報Ｉｃがロボット制御装置４０に対して送信される。
【００５３】
３次元モデル表示部５１は、仮想空間内におけるロボット１の３次元モデルとカメラ３０の３次元モデルとを表示部５５に表示させる機能である。本実施形態においては、実空間のロボット１及びカメラ３０と同等の３次元モデルがＣＡＤデータ等によって予め構築され、図示しない記録媒体に記録されている。姿勢特定装置５０は、３次元モデル表示部５１の機能により、当該３次元モデルに基づいて、表示部５５にロボット１とカメラ３０とを表示する。
【００５４】
すなわち、ロボット１の３次元モデルは、仮想的に構成されたロボット座標系において描画可能であり、カメラ３０の３次元モデルは、仮想的に構成されたカメラ座標系において描画可能である。姿勢特定装置５０は、仮想的な直交座標系によって構成される仮想空間内に、原点および軸の向きをロボット座標系用のデフォルト値に設定して仮想的なロボット座標系を配置する。
【００５５】
そして、姿勢特定装置５０は、当該仮想的なロボット座標系と仮想空間を規定する仮想的な直交座標系との関係に基づいて、仮想空間内でロボット１の３次元モデルを描画する。また、姿勢特定装置５０は、仮想空間内に、原点および軸の向きをカメラ座標系用のデフォルト値に設定して仮想的なカメラ座標系を配置する。そして、姿勢特定装置５０は、当該仮想的なカメラ座標系と仮想空間を規定する仮想的な直交座標系との関係に基づいて、仮想空間内でカメラ３０の３次元モデルを描画する。３次元モデルの描画は種々の手法によって実施可能であり、例えば、姿勢特定装置５０は、３次元形状をフレームやポリゴンによって描画し、３次元形状の外面にテクスチャを貼り付け、仮想的な視点から眺めた状態で視認されるテクスチャを表示部上に描画するなどの処理を実施する。なお、仮想空間を規定する直交座標系と仮想的なロボット座標系は一致していても良いし、異なっていてもよい。
【００５６】
図７は、当該３次元モデルの表示例を示す図であり、表示部５５上のモデル表示部５５ａに、図１に示す実空間のロボット１の仮想空間内での３次元モデル１００および実空間のカメラ３０の仮想空間内での３次元モデル３００が表示されている例を示している。なお、本実施形態においては、ロボット１の３次元モデル１００に対して仮想的なロボット座標系の軸（ｘ軸、ｙ軸、ｚ軸）が併記され、カメラ３０の３次元モデル３００に対して仮想的なカメラ座標系の軸（i軸、ｊ軸、ｋ軸）が併記されている。なお、仮想的なロボット座標系とロボット１の３次元モデル１００との関係は、実空間におけるロボット座標系とロボット１との関係と一致する。仮想的なカメラ座標系とカメラ３０の３次元モデル３００との関係は、実空間におけるカメラ座標系とカメラ３０との関係と一致する。
【００５７】
このように、本実施形態においては表示部５５に、実空間のロボット１およびカメラ３０を模した３次元モデルが表示され、利用者に対してカメラ３０の姿勢を仮想的に特定するためのガイドを提供することができる。むろん、モデル表示部５５ａでの表示態様は種々の態様が採用されてよく、軸や軸に併記される文字（ｘ、ｙ等）が省略されても良いし、部品等が表示されても良い。さらに、実空間のロボット１の動作に連動してモデル表示部５５ａにおける３次元モデル１００が変化し、実空間のロボット１の姿勢と同等の姿勢で３次元モデルが表示されても良い。
【００５８】
パラメーター入力部５２は、カメラ３０の姿勢に関するパラメーターの入力を受け付ける機能である。本実施形態において、姿勢特定装置５０は、パラメーター入力部５２の機能により、表示部５５にカメラ３０の姿勢を特定するためのパラメーター入力ＵＩ５５ｂを表示させる。そして、姿勢特定装置５０は、入力部５６に対する利用者の操作を受け付け、パラメーター入力ＵＩ５５ｂに対する数値の入力を受け付ける。
【００５９】
具体的には、パラメーター入力ＵＩ５５ｂには、パラメーターの属性として位置Ｘ，Ｙ，Ｚと姿勢Ｕ，Ｖ，Ｗの数値を入力可能である。位置Ｘ，Ｙ，Ｚは、仮想的なロボット座標系（モデル表示部５５ａ上のｘｙｚ座標系）の原点から仮想的なカメラ座標系（モデル表示部５５ａ上のｉｊｋ座標系）の原点への並進量をｘ，ｙ，ｚ軸方向のそれぞれについて示す値である。
【００６０】
姿勢Ｕ，Ｖ，Ｗは、仮想的なロボット座標系の各軸に対する仮想的なカメラ座標系の各軸の向きを示す値である。すなわち、仮想的なｘ軸，ｙ軸，ｚ軸のそれぞれと仮想的なｉ軸，ｊ軸，ｋ軸のそれぞれとが平行である状態を基準とし、カメラ座標系がｚ軸に対して回転している角度が姿勢Ｕであり、カメラ座標系がｙ軸に対して回転している角度が姿勢Ｖであり、カメラ座標系がｘ軸に対して回転している角度が姿勢Ｗである。なお、図７に示す位置や姿勢の数値は、モデル表示部５５ａ上のカメラ座標系の位置および姿勢と必ずしも整合していない。
【００６１】
表示姿勢制御部５３は、入力されたパラメーターに基づいて、表示部５５に表示されたカメラ３０の３次元モデルの姿勢を変化させる機能である。表示姿勢制御部５３は、パラメーター入力ＵＩ５５ｂに対して数値が入力されると、仮想的なロボット座標系の原点から位置Ｘ，Ｙ，Ｚだけｘ，ｙ，ｚ軸方向に並進した位置に仮想的なカメラ座標系の原点を設定する。また、表示姿勢制御部５３は、姿勢Ｕだけ軸ｉ，ｊ，ｋをｚ軸に対して回転させ、姿勢Ｖだけ軸ｉ，ｊ，ｋをｙ軸に対して回転させ、姿勢Ｗだけ軸ｉ，ｊ，ｋをｘ軸に対して回転させた向きに軸ｉ，ｊ，ｋの向きを設定する。
【００６２】
そして、姿勢特定装置５０は、当該設定後の軸ｉ，ｊ，ｋの位置および向きに合わせて仮想空間内でカメラ３０の３次元モデルを描画する（設定後の軸ｉ，ｊ，ｋがカメラ３０の３次元モデルの軸となるようにカメラ３０の３次元モデル３００を描画する）。この結果、利用者はパラメーターの入力を繰り返すことにより、表示部５５上でのカメラ３０の姿勢を所望の姿勢になるように調整することができる。
【００６３】
カメラ姿勢取得部５４は、表示部５５に表示されたカメラ３０の３次元モデルの姿勢に基づいて、ロボット１に対するカメラ３０の姿勢を取得する機能である。入力部５６によって、利用者が表示部に表示されたボタン５５ｃを指示すると、姿勢特定装置５０は、ボタン５５ｃが指示された段階でパラメーター入力ＵＩ５５ｂに入力されている位置Ｘ，Ｙ，Ｚおよび姿勢Ｕ，Ｖ，Ｗを取得し、座標系情報Ｉｃを生成する。すなわち、実空間におけるロボット座標系の原点に対する各軸方向への並進量をＸ，Ｙ，Ｚとし、実空間におけるロボット座標系の各軸に対するカメラ座標系の各軸の回転量をＵ，Ｖ，Ｗとした座標系情報Ｉｃを生成し、ロボット制御装置４０に対して送信する。この結果、ロボット制御装置４０においては、仮想空間内で定義されたロボット１に対するカメラ３０の姿勢に基づいて、実空間内でのロボット１に対するカメラ３０の姿勢を取得することになる。
【００６４】
以上の構成において、利用者は、ロボット制御装置４０に接続された姿勢特定装置５０を用いてロボット１に対するカメラの姿勢を定義することが可能である。従って、利用者は、ロボット制御装置４０に接続された実空間のロボット１およびカメラ３０と、表示部５５上のロボット１およびカメラ３０の３次元モデルとを比較しながらカメラ３０の姿勢を調整することができる。そして、実空間におけるカメラ３０の姿勢と仮想空間におけるカメラ３０の姿勢とが、類似した姿勢になった段階で当該姿勢を採用することで、実空間のロボット１に対するカメラ３０の姿勢を定義することができる。従って、実空間におけるキャリブレーションを行うことなくロボット１に対するカメラ３０の姿勢を簡易に定義することができる。
【００６５】
（５）他の実施形態：
以上の実施形態は本発明を実施するための一例であり、他にも種々の実施形態を採用可能である。例えば、ロボット制御装置は、ロボットに内蔵されていても良いし、ロボットの設置場所と異なる場所、例えば外部のサーバ等に備えられていても良い。さらに、ロボット制御装置が複数のロボットを制御するように構成されていても良い。ロボット制御装置が複数の装置に分散して配置されていても良い。例えば、ロボット制御装置の一部がロボットに内蔵され、他の一部がロボットの外部のサーバ等に配置されていても良い。さらに、上述の実施形態の一部の構成が省略されてもよいし、処理の順序が変動または省略されてもよい。
【００６６】
ビジュアルサーボの例も上述の例に限定されず、種々の例を採用可能である。例えば、上述の例においては、２個の部品をカメラ３０で撮影し、一方を他方に挿入する作業が行われたが、部品の挿入位置および姿勢が既知であれば、挿入位置がカメラ３０で撮影されなくてもよい。また、カメラ３０は一台であったが、複数台であっても良い。複数であれば、３軸方向の位置および姿勢をより正確に特定することが可能になる。
【００６７】
カメラの姿勢は、ビジュアルサーボにおいて対象物とロボットとの位置関係を制御できるように定義されていれば良く、少なくとも、ロボット座標系に対するカメラ座標系の向きによってカメラの姿勢が定義されている構成等を採用可能である。むろん、カメラ座標系の位置が定義されていても良いし、ロボット座標系とカメラ座標系との関係が間接的に規定されていても良い。なお、ロボット座標系は、例えば、ロボットに固定された座標系、カメラ座標系はカメラに固定された標系等によって構成可能であり、３軸直交座標系の他、極座標系や円筒座標系であっても良い。
【００６８】
ロボットは、ビジュアルサーボを行うことができればよく、任意の態様の可動部で対象物に関する作業を実施できれば良い。対象物は、ロボットの可動部の動作に連動して動作する物体であれば良く、エンドエフェクターによって把持された物体であっても良いし、エンドエフェクターが備えるツールの一部（ＴＣＰ等）であっても良く、種々の物体が対象物となり得る。
【００６９】
可動部は、ロボットの設置位置に対して相対的に移動し、姿勢が変化するように構成されていれば良く、その自由度（可動軸の数等）は任意である。ロボットの態様は、種々の態様であって良く、直交ロボット、水平多関節ロボット、垂直多関節ロボット、双腕ロボット等であって良い。むろん、軸の数やアームの数、エンドエフェクターの態様等は種々の態様を採用可能である。
【００７０】
カメラは、実空間において、カメラはロボットの一部や対象物を撮影できれば良く、固定的に配置されていても良いし、可動であっても良い。可動である場合、カメラの姿勢は変化し得るため、どのように変化し得るのか特定される。例えば、カメラがロボットのアームに取り付けられる場合、例えば、ロボット座標系に対するカメラ座標系の姿勢が特定されるなどして、ロボットのアームの位置や姿勢の変化に伴ってカメラの姿勢がどのように変化するのか特定される。むろん、この場合においてもロボットから見たカメラの姿勢に誤差が含まれていてもビジュアルサーボは高精度に実施可能である。
【符号の説明】
【００７１】
１…ロボット、１０…アーム、２０…エンドエフェクター、２１…グリッパー、３０…カメラ、３０ａ…画像、４０…ロボット制御装置、４１…姿勢取得部、４２…画像データ取得部、４３…視覚制御部、５０…姿勢特定装置、５１…３次元モデル表示部、５２…パラメーター入力部、５３…表示姿勢制御部、５４…カメラ姿勢取得部、５５…表示部、５５ａ…モデル表示部、５５ｂ…パラメーター入力ＵＩ、５５ｃ…ボタン、５６…入力部
【図１】
2018051634.tif 000003
【図２】
2018051634.tif 000004
【図３】
2018051634.tif 000005
【図４】
2018051634.tif 000006
【図５】
2018051634.tif 000007
【図６】
2018051634.tif 000008
【図７】
2018051634.tif 000009