"ロボットの可動可能なアームに設けられ、撮像した画像データを出力する撮像装置と、第4の時刻より前の異なる第1の時刻と第2の時刻及び第3の3つの時刻と、前記第4の時刻とに、第1の画像データと第2の画像データと第3の画像データ及び第4の画像データを取得する画像取得部と、前記第1の画像データ及び前記第2の画像データに基づき前記第3の時刻に撮像される画像データを推定し、前記第2の画像データ及び前記第3の画像データに基づき前記第4の時刻に撮像される画像データを推定し、前記推定した前記第3の時刻の画像データと、前記画像取得部が取得した前記第3の時刻に撮像される画像データとの誤差を算出し、前記算出した誤差に基づき前記第4の時刻の画像データに含まれる誤差を算出する画像推定部と、前記アームを制御するアーム制御部と、を備え、前記画像推定部は、前記算出した前記画像データに含まれる誤差を用いて前記推定した第4の時刻に撮像される画像データを補正し、前記アーム制御部は、前記画像推定部が補正した前記第4の時刻に撮像される画像データを用いて前記アームを制御することを特徴とするロボット。前記画像取得部は、前記第1の時刻に前記撮像装置が出力する第1の画像データを取得し、前記第1の時刻より後の第2の時刻に前記撮像装置が出力する第2の画像データを取得し、前記第2の時刻より後の第3の時刻に前記撮像装置が出力する第3の画像データを取得し、前記第3の時刻より後の第4の時刻に前記撮像装置が出力する第4の画像データを取得し、前記画像推定部は、前記画像取得部が取得した第1の画像データと第2の画像データと第3の画像データ及び第4の画像データを用いて、前記第3の時刻に撮像される画像データと前記第4の時刻に撮像される画像データとを推定することを特徴とする請求項1に記載のロボット。前記アームの位置を検出し、前記検出されたアームの手先位置と姿勢を示す情報を前記画像推定部に出力するエンコーダーを備え、前記画像推定部は、前記第1の画像データが撮像された時刻における前記エンコーダーが出力する前記アームの手先位置と姿勢を示す情報と、前記第2の画像データが撮像された時刻における前記エンコーダーが出力する前記アームの手先位置と姿勢を示す情報と、前記撮像装置の焦点距離を含む内部パラメーターを表す行列と、前記第1の画像データ及び前記第2の画像データに基づき前記第3の時刻に撮像される画像データを推定し、前記第2の画像データが撮像された時刻における前記エンコーダーが出力する前記アームの手先位置と姿勢を示す情報と、前記第3の画像データが撮像された時刻における前記エンコーダーが出力する前記アームの手先位置と姿勢を示す情報と、前記撮像装置の焦点距離を含む内部パラメーターを表す行列と、前記第2の画像データと、前記第3の画像データとに基づき前記第4の時刻に撮像される画像データを推定し、前記算出した画像データに含まれる誤差を用いて前記推定した第4の時刻に撮像される画像データを補正することを特徴とする請求項1または請求項2に記載のロボット。前記画像推定部は、前記第1の時刻と第2の時刻及び前記第3の時刻における前記アームの位置と姿勢に基づく第1の回転を表す行列及び第1の並進を表す行列と、前記撮像装置の焦点距離を含む内部パラメーターを表す行列を用いて、第1の基礎行列を算出し、前記第2の時刻から前記第3の時刻における前記アームの位置と姿勢に基づく第2の回転を表す行列及び第2の並進を表す行列と、前記撮像装置の焦点距離を含む内部パラメーターを表す行列を用いて、第2の基礎行列とを算出し、前記算出した前記第1の基礎行列、前記第2の基礎行列、前記第1の画像データ及び前記第2の画像データを用いて前記第3の時刻の画像データを推定し、前記第3の時刻において、前記推定した前記第3の時刻の画像データと前記画像取得部が取得した前記第3の時刻の画像データとの画像データ間の誤差を算出することを特徴とする請求項1から請求項3のいずれか1項に記載のロボット。前記画像推定部は、前記誤差が時間や前記アームの手先位置と姿勢に依存しない場合、前記推定した前記第3の時刻の画像データと前記画像取得部が取得した前記第3の時刻の画像データとの間の誤差を、前記第4の時刻における画像データに含まれる誤差として算出し、前記画像データに含まれる誤差を用いて前記第4の時刻に撮像される画像データを補正することを特徴とする請求項1から請求項4のいずれか1項に記載のロボット。前記画像推定部は、前記撮像装置が撮像を行うフレームレートの間隔より短い周期で前記第4の時刻の画像データを推定し、前記アーム制御部は、前記画像推定部が推定した前記第4の時刻の画像データを用いて、前記撮像装置が撮像を行うフレームレートの間隔より短い周期で前記アームを制御することを特徴とする請求項1から請求項5のいずれか1項に記載のロボット。前記画像推定部は、前記エンコーダーが前記アーム位置を示す情報を前記画像推定部に出力する周期で前記第4の時刻の画像データを推定し、前記アーム制御部は、前記画像推定部が、前記第4の時刻の画像データを用いて、前記エンコーダーが前記アーム位置を示す情報を前記画像推定部に出力する周期で前記アームを制御することを特徴とする請求項2から請求項6のいずれか1項に記載のロボット。前記画像推定部は、前記第1の画像が撮像された時刻を、前記第1の画像が取得された第1の時刻と前記撮像装置が撮像してから画像データを出力するまでの遅延時間を用いて算出し、前記第2の画像が撮像された時刻を、該第2の画像が取得された第2の時刻と前記撮像装置が撮像してから画像データを出力するまでの遅延時間を用いて算出することを特徴とする請求項1から請求項7のいずれか1項に記載のロボット。可動可能なアームに設けられ、撮像した画像データを出力する撮像装置を有するロボットのアームを制御するロボット制御装置であり、第4の時刻より前の異なる第1の時刻と第2の時刻及び第3の3つの時刻と、前記第4の時刻とに、第1の画像データと第2の画像データと第3の画像データ及び第4の画像データを取得する画像取得部と、前記第1の画像データ及び前記第2の画像データに基づき前記第3の時刻に撮像される画像データを推定し、前記第2の画像データ及び前記第3の画像データに基づき前記第4の時刻に撮像される画像データを推定し、前記推定した前記第3の時刻の画像データと、前記画像取得部が取得した前記第3の時刻に撮像される画像データとの誤差を算出し、前記算出した誤差に基づき前記第4の時刻に撮像される画像データに含まれる誤差を算出する画像推定部と、前記アームを制御するアーム制御部と、を備え、前記画像推定部は、前記算出した前記画像データに含まれる誤差を用いて前記推定した第4の時刻の画像データを補正し、前記アーム制御部は、前記画像推定部が補正した前記第4の時刻に撮像される画像データを用いて前記アームを制御することを特徴とするロボット制御装置。ロボットの可動可能なアームに設けられ画像撮像して画像データを出力する撮像装置を有し、可動するアームを制御するロボット制御方法であり、撮像装置が、撮像して画像データを出力する撮像工程と、画像取得部が、第4の時刻より前の異なる第1の時刻と第2の時刻及び第3の3つの時刻と、前記第4の時刻とに、第1の画像データと第2の画像データと第3の画像データ及び第4の画像データを取得する画像取得工程と、画像推定部が、前記第1の画像データ及び前記第2の画像データに基づき前記第3の時刻に撮像される画像データを推定し、前記第2の画像データ及び前記第3の画像データに基づき前記第4の時刻に撮像される画像データを推定し、前記推定した前記第3の時刻の画像データと、前記画像取得部が取得した前記第3の時刻に撮像される画像データとの誤差を算出し、前記算出した誤差に基づき前記第4の時刻の画像データに含まれる誤差を算出する画像推定工程と、アーム制御部が、前記アームを制御するアーム制御工程と、を含み、前記画像推定工程は、前記算出した前記画像データに含まれる誤差を用いて前記推定した第4の時刻に撮像される画像データを補正し、前記アーム制御工程は、前記画像推定部が補正した前記第4の時刻に撮像される画像データを用いて前記アームを制御することを特徴とするロボット制御方法。ロボットの可動可能なアームに設けられ画像撮像して画像データを出力する撮像装置を有し、可動するアームを制御する処理をコンピューターに実行させるためのプログラムであり、前記撮像装置が撮像して画像データを出力する撮像手順と、第4の時刻より前の異なる第1の時刻と第2の時刻及び第3の3つの時刻と前記第4の時刻とに、第1の画像データと第2の画像データと第3の画像データ及び第4の画像データを取得する画像取得手順と、前記第1の画像データ及び前記第2の画像データに基づき前記第3の時刻に撮像される画像データを推定する第1画像推定手順と、前記第1画像推定手順により推定された前記第3の時刻の画像データと、前記画像取得手順により取得された前記第3の時刻の画像データとの誤差を算出し、前記算出した誤差に基づき前記第4の時刻の画像データに含まれる誤差を算出する誤差算出手順と、前記第2の画像データと、前記第3の画像データとに基づき前記第4の時刻に撮像される画像データを推定し、前記誤差算出手順が算出した前記画像データに含まれる誤差を用いて前記第4の時刻に撮像される画像データを補正する第2画像推定手順と、前記第2画像推定手順により補正された前記第4の時刻の画像データを用いて前記アームを制御するアーム制御手順と、をコンピューターに実行させるためのロボット制御プログラム。しかしながら、非特許文献1に記載の発明では、実際は、エンコーダー情報から計算されるロボット手先位置姿勢と実際のロボットの手先位置姿勢には誤差がある。この誤差は、例えば、重力の影響やモーターの回転誤差により発生する。このため、現在の画像を精度良く予測できないため、この画像を用いた場合、精度の良いビジュアルサーボが行えない。また、特許文献1に記載の発明では、算出したい時刻の位置情報を、その時刻の前後の位置情報を用いて算出しているため、現在時刻における位置を算出できない。また、センサー情報の取り込み間隔が微小な場合、算出したい時刻に最も近い時刻に取得された位置情報を用いて近似するためには、画像情報も位置情報と同じ間隔で取得する必要があり、高価なカメラが必要である。この場合においても、エンコーダー情報から計算されるロボット手先位置姿勢と実際のロボットの手先位置姿勢には、重力の影響等によるロボットキャリブレーション誤差が残る。このため、現在の画像を精度良く予測できないため、この画像を用いた場合、精度の良いビジュアルサーボが行えない。また、ビジュアルサーボを行うために、予めキャリブレーションを行っても、ロボットキャリブレーション誤差やカメラキャリブレーション誤差等が残り、これらが誤差要因となる。この結果、精度の良いビジュアルサーボが行えない。本発明は、上記の課題に鑑みてなされたものであって、ロボットキャリブレーション誤差やカメラキャリブレーション誤差等があっても精度良く制御可能なロボット、ロボット制御装置、ロボット制御方法、およびロボット制御プログラムを提供することを目的としている。上記目的を達成するため、本発明に係るロボットは、ロボットの可動可能なアームに設けられ、撮像した画像データを出力する撮像装置と、第4の時刻より前の異なる第1の時刻と第2の時刻及び第3の3つの時刻と、前記第4の時刻とに、第1の画像データと第2の画像データと第3の画像データ及び第4の画像データを取得する画像取得部と、前記第1の画像データ及び前記第2の画像データに基づき前記第3の時刻に撮像される画像データを推定し、前記第2の画像データ及び前記第3の画像データに基づき前記第4の時刻に撮像される画像データを推定し、前記推定した前記第3の時刻の画像データと、前記画像取得部が取得した前記第3の時刻に撮像される画像データとの誤差を算出し、前記算出した誤差に基づき前記第4の時刻に撮像される画像データに含まれる誤差を算出する画像推定部と、前記アームを制御するアーム制御部と、を備え、前記画像推定部は、前記算出した前記画像データに含まれる誤差を用いて前記推定した第4の時刻の画像データを補正し、前記アーム制御部は、前記画像推定部が補正した前記第4の時刻に撮像される画像データを用いて前記アームを制御することを特徴とする。本発明によれば、画像取得部は、第4時刻より前の異なる3つの時刻である第1~第3の時刻と第4の時刻に、それぞれ撮像装置が出力する画像データを取得する。第4の時刻は、例えば現在時刻である。そして、画像推定部は、第4の時刻より前の2つの異なる時刻の各画像データに基づいて、第3の時刻の画像データを推定する。そして、画像推定部は、推定した第3の時刻の画像データと、第3の時刻に取得された画像データ間の誤差を算出し、算出した画像データ間の誤差を用いて、第4の時刻の画像データを推定する。そして、アーム制御部は、現在時刻である第4の時刻の推定された画像を用いてアームを制御する。この結果、撮像装置が撮像してから画像取得部に出力するまでに遅れ時間があり、現在時刻である第4の時刻に撮像された画像データが取得されていない状態であっても、現在時刻である第4の時刻の画像データの誤差を考慮して推定することができるので、ロボットキャリブレーション誤差やカメラキャリブレーション誤差等があっても精度良く制御可能なロボットを提供できる。また、本発明のロボットにおいて、前記画像取得部は、前記第1の時刻に前記撮像装置が出力する第1の画像データを取得し、前記第1の時刻より後の第2の時刻に前記撮像装置が出力する第2の画像データを取得し、前記第2の時刻より後の第3の時刻に前記撮像装置が出力する第3の画像データを取得し、前記第3の時刻より後の第4の時刻に前記撮像装置が出力する第4の画像データを取得し、前記画像推定部は、前記画像取得部が取得した第1の画像データと第2の画像データと第3の画像データ及び第4の画像データを用いて、前記第3の時刻に撮像される画像データと前記第4の時刻に撮像される画像データとを推定するようにしてもよい。また、本発明のロボットにおいて、前記アームの位置を検出し、前記検出されたアームの手先位置と姿勢を示す情報を前記画像推定部に出力するエンコーダーを備え、前記画像推定部は、前記第1の画像データが撮像された時刻における前記エンコーダーが出力する前記アームの手先位置と姿勢を示す情報と、前記第2の画像データが撮像された時刻における前記エンコーダーが出力する前記アームの手先位置と姿勢を示す情報と、前記撮像装置の焦点距離を含む内部パラメーターを表す行列と、前記第1の画像データ及び前記第2の画像データに基づき前記第3の時刻に撮像される画像データを推定し、前記第2の画像データが撮像された時刻における前記エンコーダーが出力する前記アームの手先位置と姿勢を示す情報と、前記第3の画像データが撮像された時刻における前記エンコーダーが出力する前記アームの手先位置と姿勢を示す情報と、前記撮像装置の焦点距離を含む内部パラメーターを表す行列と、前記第2の画像データ及び前記第3の画像データに基づき前記第4の時刻に撮像される画像データを推定し、前記算出した画像データに含まれる誤差を用いて前記推定した第4の時刻に撮像される画像データを補正するようにしてもよい。本発明によれば、画像推定部は、アームが備えるエンコーダーが出力するアームの手先位置と姿勢を示す情報と、撮像装置の焦点距離を含む内部パラメーターを表す行列と、第1の画像データと、第2の画像データとを用いて第3の時刻の画像データを推定する。そして、画像推定部は、推定した第3の時刻の画像データと、第3の時刻に取得された画像データ間の誤差を算出し、算出した画像データ間の誤差を算出する。さらに、画像推定部は、エンコーダーが出力するアームの手先位置と姿勢を示す情報と、撮像装置の焦点距離を含む内部パラメーターを表す行列と、第2の画像データと、第3の画像データと、算出した誤差に基づき第4の時刻の画像データを推定する。そして、アーム制御部は、現在時刻である第4の時刻の推定された画像を用いてアームを制御する。この結果、撮像装置が撮像してから画像取得部に出力するまでに遅れ時間があり、現在時刻である第4の時刻に撮像された画像データが取得されていない状態であっても、現在時刻である第4の時刻の画像データの誤差を考慮して推定することができるので、ロボットキャリブレーション誤差やカメラキャリブレーション誤差等があっても精度良く制御可能なロボットを提供できる。また、本発明のロボットにおいて、前記画像推定部は、前記第1の時刻と第2の時刻及び前記第3の時刻における前記アームの位置と姿勢に基づく第1の回転を表す行列及び第1の並進を表す行列と、前記撮像装置の焦点距離を含む内部パラメーターを表す行列を用いて、第1の基礎行列を算出し、前記第2の時刻から前記第3の時刻における前記アームの位置と姿勢に基づく第2の回転を表す行列及び第2の並進を表す行列と、前記撮像装置の焦点距離を含む内部パラメーターを表す行列を用いて、第2の基礎行列とを算出し、前記算出した前記第1の基礎行列、前記第2の基礎行列、前記第1の画像データ及び前記第2の画像データを用いて前記第3の時刻の画像データを推定し、前記第3の時刻において、前記推定した前記第3の時刻の画像データと前記画像取得部が取得した前記第3の時刻の画像データとの画像データ間の誤差を算出するようにしてもよい。本発明によれば、画像推定部は、第1の時刻から第3の時刻及び第2の時刻から第3の時刻におけるアームが備えるエンコーダーが出力するアームの手先位置と姿勢に基づく各回転を表す行列及び各並進を表す行列と、撮像装置の焦点距離を含む内部パラメーターを表す行列とを用いて各基礎行列を算出する。また、各基礎行列と、第1の画像データと、第2の画像データとに基づき第3の時刻の画像データを推定する。そして、画像推定部は、推定した第3の時刻の画像データと、第3の時刻に取得された画像データ間の誤差を算出し、算出した画像データ間の誤差を算出する。この結果、撮像装置が撮像してから画像取得部に出力するまでに遅れ時間があり、現在時刻である第4の時刻に撮像された画像データが取得されていない状態であっても、第4の時刻の画像データを補正するための第3の時刻の画像データの誤差を算出することができるので、ロボットキャリブレーション誤差やカメラキャリブレーション誤差等があっても精度良く制御可能なロボットを提供できる。また、本発明のロボットにおいて、前記画像推定部は、前記誤差が時間や前記アームの手先位置と姿勢に依存しない場合、前記推定した前記第3の時刻の画像データと前記画像取得部が取得した前記第3の時刻の画像データ間との誤差を、前記第4の時刻における画像データに含まれる誤差として算出し、前記画像データに含まれる誤差を用いて前記第4の時刻に撮像される画像データを補正するようにしてもよい。本発明によれば、画像データ間の誤差が時間や前記アームの手先位置と姿勢に依存しない場合、画像推定部は、第3の時刻の推定した画像データと取得された画像データ間の誤差を現在時刻である第4の時刻の画像データの誤差として算出する。そして、画像推定部は、この誤差を用いて、現在時刻である第4の時刻の推定した画像データを補正する。この結果、撮像装置が撮像してから画像取得部に出力するまでに遅れ時間があり、現在時刻である第4の時刻に撮像された画像データが取得されていない状態であっても、第3の時刻の画像データの誤差を第4の時刻の画像データの補正値に用いることができるので、ロボットキャリブレーション誤差やカメラキャリブレーション誤差等があっても精度良く制御可能なロボットを提供できる。また、本発明のロボットにおいて、前記画像推定部は、前記撮像装置が撮像を行うフレームレートの間隔より短い周期で前記第4の時刻の画像データを推定し、前記アーム制御部は、前記画像推定部が推定した前記第4の時刻の画像データを用いて、前記撮像装置が撮像を行うフレームレートの間隔より短い周期で前記アームを制御するようにしてもよい。また、本発明のロボットにおいて、前記画像推定部は、前記エンコーダーが前記アーム位置を示す情報を前記画像推定部に出力する周期で前記第4の時刻の画像データを推定し、前記アーム制御部は、前記画像推定部が、前記第4の時刻の画像データを用いて、前記エンコーダーが前記アーム位置を示す情報を前記画像推定部に出力する周期で前記アームを制御するようにしてもよい。本発明によれば、画像推定部が、撮像装置のフレームレートより速い周期で、第4の時刻の画像を推定する。撮像装置のフレームレートより速い周期は、例えば、アームが備えるエンコーダーが検出したアームの実測位置を出力する周期である1[msec]である。このため、撮像装置のフレームレートが、例えば33[msec]であっても、画像指定部は1[msec]毎に撮像された画像を推定する。そして、アーム制御部は、この推定された画像を用いてアームを制御するので、低速な撮像装置を用いても、速いフレームレートの撮像装置を使った場合と同様に、アームを高速で制御することができる。上記目的を達成するため、本発明のロボットにおいて、前記画像推定部は、前記第1の画像が撮像された時刻を、前記第1の画像が取得された第1の時刻と前記撮像装置が撮像してから画像データを出力するまでの遅延時間を用いて算出し、前記第2の画像が撮像された時刻を、該第2の画像が取得された第2の時刻と前記撮像装置が撮像してから画像データを出力するまでの遅延時間を用いて算出するようにしてもよい。本発明によれば、誤差算出部は、取得済みの画像データが撮像された各時刻を、画像が取得された時刻から撮像装置が撮像してから画像データを出力するまでの遅延時間を減算して算出する。この結果、撮像装置が撮像してから画像取得部に出力するまでに遅れ時間があり、現時刻である第3の時刻の画像が取得されていない状態であっても、取得済みの各画像データが撮像された各時刻を算出できるので、ロボットキャリブレーション誤差やカメラキャリブレーション誤差等があっても精度良く制御可能なロボットを提供できる。上記目的を達成するため、本発明は、可動可能なアームに設けられ、撮像した画像データを出力する撮像装置を有するロボットのアームを制御するロボット制御装置であり、第4の時刻より前の異なる第1の時刻と第2の時刻及び第3の3つの時刻と、前記第4の時刻とに、第1の画像データと第2の画像データと第3の画像データ及び第4の画像データを取得する画像取得部と、前記第1の画像データ及び前記第2の画像データに基づき前記第3の時刻に撮像される画像データを推定し、前記第2の画像データ及び前記第3の画像データに基づき前記第4の時刻に撮像される画像データを推定し、前記推定した前記第3の時刻の画像データと、前記画像取得部が取得した前記第3の時刻に撮像される画像データとの誤差を算出し、前記算出した誤差に基づき前記第4の時刻に撮像される画像データに含まれる誤差を算出する画像推定部と、前記アームを制御するアーム制御部と、を備え、前記画像推定部は、前記算出した前記画像データに含まれる誤差を用いて前記推定した第4の時刻に撮像される画像データを補正し、前記アーム制御部は、前記画像推定部が補正した前記第4の時刻の画像データを用いて前記アームを制御することを特徴とする。上記目的を達成するため、ロボットの可動可能なアームに設けられ画像撮像して画像データを出力する撮像装置を有し、可動するアームを制御するロボット制御方法であり、撮像装置が、撮像して画像データを出力する撮像工程と、画像取得部が、第4の時刻より前の異なる第1の時刻と第2の時刻及び第3の3つの時刻と、前記第4の時刻とに、第1の画像データと第2の画像データと第3の画像データ及び第4の画像データを取得する画像取得工程と、画像推定部が、前記第1の画像データ及び前記第2の画像データに基づき前記第3の時刻に撮像される画像データを推定し、前記第2の画像データ及び前記第3の画像データとに基づき前記第4の時刻に撮像される画像データを推定し、前記推定した前記第3の時刻の画像データと、前記画像取得部が取得した前記第3の時刻に撮像される画像データとの誤差を算出し、前記算出した誤差に基づき前記第4の時刻に撮像される画像データに含まれる誤差を算出する画像推定工程と、アーム制御部が、前記アームを制御するアーム制御工程と、を含み、前記画像推定工程は、前記算出した前記画像データに含まれる誤差を用いて前記推定した第4の時刻の画像データを補正し、前記アーム制御工程は、前記画像推定部が補正した前記第4の時刻に撮像される画像データを用いて前記アームを制御することを特徴とする。上記目的を達成するため、本発明は、ロボットの可動可能なアームに設けられ画像撮像して画像データを出力する撮像装置を有し、可動するアームを制御する処理をコンピューターに実行させるためのプログラムであり、前記撮像装置が撮像して画像データを出力する撮像手順と、第4の時刻より前の異なる第1の時刻と第2の時刻及び第3の3つの時刻と、前記第4の時刻とに、第1の画像データと第2の画像データと第3の画像データ及び第4の画像データを取得する画像取得手順と、前記第1の画像データ及び前記第2の画像データに基づき前記第3の時刻に撮像される画像データを推定する第1画像推定手順と、前記第1画像推定手順により推定された前記第3の時刻の画像データと、前記画像取得手順により取得された前記第3の時刻の画像データとの誤差を算出し、前記算出した誤差に基づき前記第4の時刻の画像データに含まれる誤差を算出する誤差算出手順と、前記第2の画像データと、前記第3の画像データとに基づき前記第4の時刻に撮像される画像データを推定し、前記誤差算出手順が算出した前記画像データに含まれる誤差を用いて前記第4の時刻に撮像される画像データを補正する第2画像推定手順と、前記第2画像推定手順により補正された前記第4の時刻の画像データを用いて前記アームを制御するアーム制御手順と、をコンピューターに実行させる。本発明によれば、画像取得部は、第4時刻より前の異なる3つの時刻である第1~第3の時刻と第4の時刻に、それぞれ撮像装置が出力する画像データを取得する。第4の時刻は、例えば現在時刻である。そして、画像推定部は、第4の時刻より前の時刻の第1の時刻の画像データと第2の時刻の各画像データに基づいて、第3の時刻の画像データを推定する。そして、画像推定部は、推定した第3の時刻の画像データと、第3の時刻に取得された画像データ間の誤差を算出し、算出した画像データ間の誤差を用いて、第4の時刻の画像データを推定する。そして、アーム制御部は、現在時刻である第4の時刻の推定された画像を用いてアームを制御する。この結果、撮像装置が撮像してから画像取得部に出力するまでに遅れ時間があり、現在時刻である第4の時刻に撮像された画像データが取得されていない状態であっても、現在時刻である第4の時刻の画像データの誤差を考慮して推定することができるので、ロボットキャリブレーション誤差やカメラキャリブレーション誤差等があっても精度良く制御可能なロボット制御装置、ロボット制御方法、及びロボット制御プログラムを提供できる。[第1実施形態]図1は、本実施形態に係るロボット1の概略構成を示す斜視図である。図1に示すように、ロボット1は、1本のアーム2を備えている。アーム2は、固定部10、アーム部20、及びエンドエフェクター40を備える。また、ロボット1は、制御部100の制御により動作する。また、対象物70は、ステージ72の上面に配置されている。固定部10は、例えば床、壁、天井、移動可能な台車の上などに固定される。固定部10は、内部に、制御部100破線にて図示を備える。制御部100は、アーム部20、エンドエフェクター40を制御する。制御部100の詳細は後述する。なお、制御部100は、固定部10の内部ではなく、固定部10の外部に設けるようにしてもよい。撮像装置60は、エンドエフェクター40の先端部に取り付けられている。撮像装置60は、例えばCCDChargeCoupledDeviceカメラである。撮像装置60は、対象物を撮影し、撮影したアナログ値の画像データを制御装置100に出力する。すなわち、本実施形態では、ロボット1の手先位置に、撮像装置60が固定設置されているハンドアイロボットである。また、撮像される対象物70は固定されている。なお、このようなハンドアイではなく、撮像装置60をステージ72に固定し、ロボット1のエンドエフェクター40に非図示のハンドを取り付け、このハンドが対象物72を把持して移動させるようにしてもよい。制御部100は、ロボット1のアーム2を後述するように制御する。また、制御部100は、撮像装置60が出力した画像データとアーム2の手先位置姿勢情報とに基づき、後述するように、現在時刻の画像情報を推定する。また、制御部100は、推定した現在時刻の画像情報を、画像表示装置65に出力する。図2は、本実施形態に係るアーム部20とエンコーダー90の概念図である。図2に示すように、アーム2のアーム部20は、第1リンク21、第2リンク22、第3リンク23、第4リンク24および第5リンク25がこの順に連結されたものである。また、アーム部20は、回転部82、83及び85と、屈折部81、84及び86とを有している。屈折部81は、固定部10と第1リンク21との間に設けられている。回転部82は、第1リンク21と第2リンク22との間に設けられている。回転部83は、第2リンク22と第3リンク23との間に設けられている。屈折部84は、第3リンク23と第4リンク24との間に設けられている。回転部85は、第4リンク24と第5リンク25との間に設けられている。屈折部84は、第5リンク25のうち第4リンク24が設けられた他方に設けられている。図2に示すように、アーム部20は、6自由度を有する6軸アームである。すなわち、アーム部20の先端のエンドエフェクター40は、これらの各軸の回転部と屈折部の動作により、移動する。アーム部20が6軸アームであるため、制御部100は、互いに独立な6つの変数で制御することが可能であり、例えば、位置x、y、zの3つの変数成分、姿勢を表す角度α、β、γの3つの成分変数に対応して制御することができる。また、図2に示すように、回転部82、83及び85と、屈折部81、84及び86は、各々エンコーダー91~96を備えている。例えば、回転部82が備えるエンコーダー92は、回転角度、速度を検出し、検出した回転角度および速度を示す情報を制御部100に出力する。以下、エンコーダー91~96を、エンコーダー90という。エンコーダー90は、例えば光学式エンコーダーであり、アブソリュート絶対値エンコーダーまたはインクリメンタル相対値エンコーダーである。図3は、本実施形態に係る制御部100のブロック図である。図3に示すように、制御部100は、アーム制御部101、駆動部102、画像取得部103、クロック発生部104、画像処理部105、記憶部106、位置情報取得部107、位置姿勢算出部108、および、画像推定部109を備えている。また、制御部100には、撮像装置60、エンコーダー90、ロボット1アーム2含む、および、画像表示装置65が接続されている。なお、画像推定部とは、位置姿勢算出部108と画像推定部109である。制御部100のアーム制御部101は、撮像装置60の画像中心アーム2の手先ともいうを移動させる駆動信号を生成し、駆動部102に出力する。また、アーム制御部101は、画像推定部109が推定した画像データを用いて、アーム2をビジュアルサーボにより制御する。駆動部102は、アーム制御部101が出力する駆動信号に応じて、ロボット1のアーム2を駆動する。画像取得部103は、撮像装置60が出力する画像データを取得し、取得した画像データをデジタルデータに変換する。例えば、撮像装置60の撮影タイミングが30fpsフレーム/秒の場合、画像取得部103は、撮像装置60が撮像した画像を33[msec]毎に取得する。画像取得部103は、撮像された画像データを取得した時刻を、クロック発生部104が出力するクロック信号から取得する。また、画像取得部103は、変換した画像データと、取得した時刻を示す情報とを画像処理部105に出力する。なお、撮像装置60が出力する画像情報がデジタル信号の場合、画像取得部103は、取得した画像情報を、変換せずにそのまま画像処理部105に出力する。クロック発生部104は、一定周期のクロック信号を発生させ、発生させたクロック信号を、アーム制御部101、画像取得部103、および位置情報取得部107に出力する。画像処理部105は、画像取得部103が出力する画像データに対して画像処理を行い、特徴量を抽出する。画像処理部105は、例えば、2値化処理により対象物70の輪郭を抽出し、エッジ検出により特徴量を抽出する。画像処理部105は、画像取得部103が出力する時刻を示す情報を、実際の画像を撮像した時刻に補正する。例えば、取得した画像を取得した時刻と、その画像が実際に撮像された時刻が1フレーム分ずれている場合、撮像した時刻に対して取得した時刻のずれを遅れ時間という。そして、遅れ時間が1フレームの場合、取得した時刻から1フレーム分の時間を減算することで取得した時刻を算出する。画像処理部105は、抽出した特徴量を示す情報と算出した時刻を示す情報とを関連づけて、記憶部106に記憶させる。記憶部106には、撮像された画像の特徴量を示す情報と、撮像された時刻を示す情報とが関連付けられて記憶されている。位置情報取得部107は、エンコーダー90が出力するアーム2の手先位置姿勢を示す情報を取得する。また、位置情報取得部107は、アーム2の手先位置姿勢を示す情報を取得した時の時刻を、クロック発生部104が出力するクロック信号から取得する。また、位置情報取得部107は、取得したアーム2の手先位置姿勢を示す情報と、取得した時刻を示す情報とを位置姿勢算出部108に出力する。位置姿勢算出部108は、位置情報取得部107が出力するアーム2の手先位置姿勢を示す情報を用いて、後述するように基礎行列を算出し、算出した基礎行列を画像推定部109に出力する。また、位置姿勢算出部108は、画像推定部109が出力する実測された画像と推定された推定画像を用いて、例えば最小化問題を解いて、実測画像と推定画像間の誤差を算出し、算出した実測画像と推定画像間の誤差を画像推定部109に出力する。画像推定部109は、記憶部106に記憶されている各時刻の画像データを読み出す。また、画像推定部109は、後述するように、読み出した画像データの各座標の情報と、位置姿勢算出部108が出力する基礎行列を用いて、現在時刻の画像を推定し、推定した現在時刻の画像データをアーム制御部101に出力する。ビジュアルサーボ、カメラの内部パラメーター透視変換行列、及び基礎行列等については、公知であるため例えば、橋本浩一ビジュアルサーボiiコンピュータビジョンの基礎、計測自動制御学会、システム/制御/情報講座Vol53No11pp4764832009参照、導出過程などの説明は省略する。図4は、過去の2つの時刻における画像とカメラ位置、現在の時刻における画像とカメラ位置を説明する図である。図4に示すように、撮像装置60は、過去の時刻d2第1の時刻において、座標m2を含む画像を撮像し、過去のある時刻d1第2の時刻において、座標m1を含む画像を撮像し、現在時刻d0第3の時刻において、座標m0を含む画像を撮像する。なお、図4において、例えば、時刻d2の実際の画像は、撮像装置60が撮像して出力するまでに1フレームの遅延がある場合、時刻d3の時に撮像された画像である。そして、過去の時刻d2から現在時刻d0における回転分がR20、並進分がt20である。同様に、過去の時刻d1から現在時刻d0における回転分がR10、並進分がベクトルt10である。同様に、過去の時刻d2から過去の時刻d1における回転分がR21、並進分がt21である。また、過去の時刻d2で撮像された画像I2は、座標m2ii=1、、Nの集まりである。同様に、過去の時刻d1で撮像された画像I1は、座標m1ii=1、、Nの集まりである。同様に、現在時刻d0で撮像された画像I0は、座標m1ii=1、、Nの集まりである。時刻d2とd1におけるエピポーラ拘束の関係は、次式1のように表される。同様に、時刻d1とd0におけるエピポーラ拘束の関係は、次式2のように表される。同様に、時刻d2とd0におけるエピポーラ拘束の関係は、次式3のように表される。なお、エピポーラ拘束とは、基準カメラに写ったある点がもう一方の画像上のある直線エピポーラライン上に射影され、異なる視点から得られた2つの画像の対応する点同士が満たす条件である。現在時刻d0の画像I0の座標m0は、次式4により推定できる。図5は、本実施形態に係る撮像装置60が撮像するタイミングとエンコーダー情報が取得されるタイミングを説明する図である。図5に示すように、撮像装置60の撮影タイミングが30fpsフレーム/秒の場合、撮像装置60が撮像した画像は、33[msec]毎に更新される。図5において、時刻d2、d1、d0は、撮像装置60が撮像するタイミングであり、33[msec]間隔である。一方、エンコーダー90が生成するロボット1の手先位置姿勢を示すエンコーダー情報は、例えば1[msec]毎に取得される。図5において、時刻de1、de2、は、エンコーダー情報が取得されるタイミングであり、1[msec]間隔である。また、時刻d0は現在時刻であり、時刻d1は時刻t0より33[msec]前、時刻d2は、時刻d1より33[msec]前である。次に、現在時刻d0の画像を予測する手順の概略について、図面を用いて説明する。図6は、本実施形態に係るアーム2の手先位置姿勢を説明する図である。図7は、本実施形態に係る各時刻におけるパラメーター、アーム2の相対移動量、画像の関係を説明する図である。図6において、アーム部20を簡略化して示している。図6、図7に示すように、時刻d2において、撮像装置60を備えるアーム2の手先位置姿勢は、ロボット座標x2,y2,z2,α2,β2,γ2の位置姿勢にある。この時刻d2において、撮像装置60は、対象物体70の画像I2を撮像する。なお、推定した画像I0を、以下、推定画像I0’という。同様に、推定した画像I1を、推定画像I1、推定した画像I2を、推定画像I2、推定した画像I3を、推定画像I3という。次に、時刻d1において、アーム2の手先位置姿勢は、ロボット座標x2,y2,z2,α2,β2,γ2からx1,y1,z1,α1,β1,γ1の位置姿勢に移動する。時刻d2からd1において、アーム2の手先位置姿勢の相対移動量は、回転分がR21、並進分がt21である。この場合、時刻d2からd1における基礎行列F21は、次式5のように表される。この時刻d1において、撮像装置60は、対象物体70の画像I1を撮像する。次に、時刻d0において、アーム2の手先位置姿勢は、ロボット座標x1,y1,z1,α1,β1,γ1からx0,y0,z0,α0,β0,γ0の位置姿勢に移動する。時刻d1からd0において、アーム部20の手先位置姿勢の相対移動量は、回転分がR10、並進分がt10である。この場合、時刻d1からd0における基礎行列F10は、次式6のように表される。式5と6において、符号Tは、並進を表す行列であり、次式7のように表される。なお、並進ベクトルtは、[txtytz]TTは転置行列を表すである。また、行列Aは、撮像装置60の内部パラメーターを表す行列であり、画像中心座標、直交性、縦軸と横軸のスケール、焦点距離などにより表される、例えば3行3列の行列である。そして、制御部100の画像推定部109は、これらの基礎行列fundamentalmatrixF21式5、F10式6、撮像された画像I2、およびI1を用いて、現在時刻d0の画像I0を推定する。なお、基礎行列とは、2つの画像の対応する点の座標上の関係写像関係を示す行列である。なお、従来技術では、各時刻におけるアーム2の手先位置姿勢の回転を表す行列R、並進を表す行列T、及び撮像装置60の内部パラメーターを表す行列Aにキャリブレーション誤差がなく、正確な場合を想定している。しかしながら、実際には、各行列には、ロボット1のロボットキャリブレーション誤差や、カメラキャリブレーション誤差等を有している場合がある。なお、ロボットキャリブレーション誤差とは、ロボットが有する幾何学的な誤差要因と非幾何学的な誤差要素に対してキャリブレーションを行った後の誤差である。幾何学的な誤差要因とは、ロボットの機構の要素加工時の製造誤差等であり、非幾何学的な誤差要素とは、負荷時の重力による各関節のたわみや歯車間の伝達誤差等である。また、カメラキャリブレーション誤差とは、撮像装置60の内部パラメーターを表す行列Aと、撮像装置60の外部パラメーターを表す行列を決定することである。なお、撮像装置60の外部パラメーターとは、並進ベクトルt、回転を表す行列Rを要素に持つ、カメラ座標系でのベクトルをワールド座標系に変換する同次行列である。また、撮像装置60が撮像してから、出力されるまでの遅れ時間による誤差がある。このような場合、誤差を考慮せずに現在時刻の画像データを推定してしまうと、推定した画像データに誤差を含んでしまうため、精度良くアーム2の制御ができない。これらの誤差を考慮して、現在時刻の画像データを推定するには、回転を表す行列R、並進を表す行列T、及び撮像装置60の内部パラメーターを表す行列Aの各行列の誤差ΔR、ΔT、ΔAを算出することで補正できる。誤差は、例えば、現在時刻d0より前の過去の時刻d1に取得された画像データと過去の時刻d1の、推定された画像データ間の誤差を算出することで求められる。この場合、推定された画像データと、実際に取得された画像データとが一致するような最小化問題を、例えばニュートン法などを用いて解くことで、誤差情報を算出する。次に、本実施形態における時刻d0における画像I0に含まれる誤差ε0の算出方法について説明する。誤差ε0は、時刻d0における回転を表す行列R、並進を表す行列T、撮像装置60の内部パラメーターを表す行列Aの誤差として、次式8のように表される。なお、式8において、ベクトルx1は、ワールド座標における時刻d1におけるアーム2の手先位置姿勢、ベクトルx0は、時刻d0におけるアーム2の手先位置姿勢、誤差ε1は、時刻d1における画像I1の誤差、誤差ε0は、時刻d0における画像I0の誤差である。式8において、一定の誤差がある場合、すなわち、誤差が時間や位置に依存しない場合の誤差は一定値とみなせる。このため、誤差の偏微分成分である次式9は、0と見なせるため、時刻d0における誤差ε0は、次式10のように、時刻d1における誤差ε1と等しい。また、式8において、誤差が時間や位置に依存する場合、式9を、過去の時系列データから求めるようにしてもよい。時刻d1における画像I1の誤差ε1は、時刻d1に取得した画像I1と、時刻d1に取得される画像を推定した推定画像以下、時刻d1の推定画像というI1’との差を、ニュートン法などを用いて最小化問題を解くことで算出する。例えば、画像I1から、推定した推定画像I1’にΔR、ΔT、ΔAを加えて、推定画像I1’を更新した推定画像を減算し、減算結果が最小になるΔR、ΔT、ΔAを算出することで、誤差ε1ΔR1、ΔT1、ΔA1を算出する。時刻d1の推定画像I1’は、上述したように式4に基づき、次式11を用いて、各画素を算出することで推定する。ただし、この場合、推定された推定画像I1’は、誤差を有している。なお、撮像装置60の内部パラメーターを表す行列Aの各パラメーターは、予めキャリブレーション処理により算出しておく。式11において、座標m2は、画像I2の各座標、座標m3は、画像I3の各座標である。また、基礎行列F21は、時刻d2から時刻d1に移動した場合の基礎行列、基礎行列F31は、時刻d3から時刻d1に移動した場合の基礎行列である。すなわち、推定画像I1’は、画像I3、I2、基礎行列F31、及び基礎行列F21を用いて推定する。次に、現在時刻d0の画像I0を推定する手順について、図8のフローチャートを用いて説明する。なお、本実施形態では、撮像装置60が画像データを撮像してから、撮像された画像データを画像取得部103が取得するまで、1フレームの遅延量があるとして説明する。ステップS1制御部100のアーム制御部101は、撮像装置60が取り付けられているアーム2の手先位置姿勢をx3,y3,z3,α3,β3,γ3からx2,y2,z2,α2,β2,γ2に移動させる駆動信号を生成し、駆動部102を介してロボット1のアーム2を駆動する。また、アーム制御部101は、生成した駆動信号に基づく情報を位置姿勢算出部108に出力する。なお、駆動信号に基づく情報とは、例えば、アーム2の手先位置姿勢x3,y3,z3,α3,β3,γ3とアーム2の手先位置姿勢x2,y2,z2,α2,β2,γ2を示す情報である。この駆動信号により、アーム2の手先位置姿勢は、時刻d3の時にx3,y3,z3,α3,β3,γ3に移動し、時刻d2の時にx2,y2,z2,α2,β2,γ2に移動する。また、アーム2の手先位置姿勢は、時刻d1の時にx1,y1,z1,α1,β1,γ1に移動し、時刻d0の時にx0,y0,z0,α0,β0,γ0に移動する。そして、時刻d3~d0の各間隔は、撮像装置60のフレームレートであり、例えば33[msec]である。ステップS1終了後、ステップS2に進む。ステップS2次に、時刻d2第2の時刻の時、画像取得部103は、対象物70を撮像した画像I3を撮像装置60から取得する。取得した画像I3は、上述したように内部処理による遅れにより、画像を取得した時刻d2に対して、1フレーム分の33[msec]遅れている。このため、取得した画像I3は、時刻d2より33[msec]前の位置の画像、すなわち、時刻d3第3の時刻の時の画像である。また、画像取得部103は、画像I3を取得したときの時刻d2をクロック発生部104から取得する。次に、画像取得部103は、画像I3をアナログ信号からデジタル信号に変換し、変換した画像I3と取得した時刻d2とを画像処理部105に出力する。ステップS2終了後、ステップS3に進む。ステップS3画像処理部105は、画像取得部103が出力する画像I3に対して画像処理を行い、特徴量を抽出する。画像処理部105は、例えば、2値化処理により対象物70の輪郭を抽出し、エッジ検出により特徴量を抽出する。画像処理部105は、画像取得部103が出力する時刻d2に基づき、実際の画像を撮像した時刻d3=d2-33[msec]を算出する。画像処理部105は、抽出した特徴量と算出した時刻d3とを関連づけて、記憶部106に記憶させる。ステップS3終了後、ステップS4に進む。ステップS4時刻d2の時、位置情報取得部107は、エンコーダー90が出力するアーム2の手先位置姿勢を示す情報を取得し、取得したアーム2の手先位置姿勢を示す情報を位置姿勢算出部108に出力する。ステップS4終了後、ステップS5に進む。ステップS5次に、時刻d1第3の時刻の時、画像取得部103は、対象物70を撮像した画像I2を撮像装置60から取得する。取得した画像I2は、時刻d1より33[msec]前の位置の画像、すなわち、時刻d2第2の時刻の時の画像である。また、画像取得部103は、画像I2を取得したときの時刻d1をクロック発生部104から取得する。次に、画像取得部103は、画像I2をアナログ信号からデジタル信号に変換し、変換した画像I2と取得した時刻d1とを画像処理部105に出力する。ステップS5終了後、ステップS6に進む。ステップS6画像処理部105は、画像取得部103が出力する画像I2に対して画像処理を行い、特徴量を抽出する。画像処理部105は、画像取得部103が出力する時刻d1に基づき、実際の画像を撮像した時刻d2=d1-33[msec]を算出する。画像処理部105は、抽出した特徴量と算出した時刻d2とを関連づけて、記憶部106に記憶させる。ステップS6終了後、ステップS7に進む。ステップS7時刻d1の時、位置情報取得部107は、エンコーダー90が出力するアーム2の手先位置姿勢を示す情報を取得し、取得したアーム2の手先位置姿勢を示す情報を位置姿勢算出部108に出力する。ステップS7終了後、ステップS8に進む。ステップS8次に、時刻d0第4の時刻の時、画像取得部103は、対象物70を撮像した画像I1を撮像装置60から取得する。取得した画像I1は、時刻d0より33[msec]前の位置の画像、すなわち、時刻d1第3の時刻の時の画像である。また、画像取得部103は、画像I1を取得したときの時刻d0をクロック発生部104から取得する。次に、画像取得部103は、画像I2をアナログ信号からデジタル信号に変換し、変換した画像I1と取得した時刻d0とを画像処理部105に出力する。ステップS8終了後、ステップS9に進む。ステップS9画像処理部105は、画像取得部103が出力する画像I1に対して画像処理を行い、特徴量を抽出する。画像処理部105は、画像取得部103が出力する時刻d0から画像の遅れに基づく時間33[msec]を減算して、実際の画像を撮像した時刻d1=d0-33[msec]を算出する。画像処理部105は、抽出した特徴量と算出した時刻d1とを関連づけて、記憶部106に記憶させる。ステップS9終了後、ステップS10に進む。ステップS10時刻d0の時、位置情報取得部107は、エンコーダー90が出力するアーム2の手先位置姿勢を示す情報を取得し、取得したアーム2の手先位置姿勢を示す情報を位置姿勢算出部108に出力する。ステップS10終了後、ステップS11に進む。ステップS11次に、位置姿勢算出部108は、時刻d3から時刻d1におけるアーム2の手先位置姿勢の回転を表す行列R31と並進を表す行列T31を、時刻d3とd1の時のアーム制御部101が出力する駆動信号に基づく情報と、位置情報取得部107が出力するアーム2の手先位置姿勢を示す情報とを用いて算出する。位置姿勢算出部108は、算出した回転を表す行列R31と並進を表す行列T31、及び撮像装置60の内部パラメーターを表す行列Aを用いて基礎行列F31を上述した式5においてR21をR31、T21をT31に置き換えて算出する。位置姿勢算出部108は、算出した基礎行列F31を画像推定部109に出力する。次に、位置姿勢算出部108は、時刻d2から時刻d1におけるアーム2の手先位置姿勢の回転を表す行列R21と並進を表す行列T21を、時刻d2とd1の時のアーム制御部101が出力する駆動信号に基づく情報と、位置情報取得部107が出力するアーム2の手先位置姿勢を示す情報とを用いて算出する。位置姿勢算出部108は、算出した回転を表す行列R21と並進を表す行列T21、及び撮像装置60の内部パラメーターを表す行列Aを用いて基礎行列F21を、上述した式5により算出する。位置姿勢算出部108は、算出した基礎行列F21を画像推定部109に出力する。ステップS11終了後、ステップS12に進む。ステップS12;第1画像推定手順次に、画像推定部109は、記憶部106に記憶されている画像I3とI2の画像データを読み出す。画像推定部109は、位置姿勢算出部108が出力する基礎行列F31と基礎行列F21、記憶部106から読み出した画像I3とI2の画像データを用いて、上述した式11により時刻d1の推定画像I1’を推定する。なお、式11において、画像情報m1は、時刻d1の推定画像I1’の画像情報であり、画像情報m2は、時刻d1で取得された画像I2の画像情報であり、画像情報m3は、時刻d2で取得された画像I3の画像情報である。画像推定部109は、時刻d0で実測された画像I1と式11で推定した推定画像I1’を位置姿勢算出部108に出力する。ステップS12終了後、ステップS13に進む。ステップS13次に、位置姿勢算出部108は、画像推定部109が出力する実測された画像I1と推定された推定画像I1’を用いて、例えば最小化問題を解いて誤差ε1であるΔR1、ΔT1、ΔA1を算出する。ステップS13終了後、ステップS14に進む。ステップS14次に、位置姿勢算出部108は、時刻d1から時刻d0におけるアーム2の手先位置姿勢の回転を表す行列R10と並進を表す行列T10を、時刻d1とd0の時のアーム制御部101が出力する駆動信号に基づく情報と、位置情報取得部107が出力するアーム2の手先位置姿勢を示す情報とを用いて算出する。次に、位置姿勢算出部108は、算出した回転を表す行列R10と並進を表す行列T10、及び撮像装置60の内部パラメーターを表す行列Aを用いて基礎行列F10を、上述した式6により算出する。ステップS14終了後、ステップS15に進む。ステップS15次に、位置姿勢算出部108は、時刻d2から時刻d0におけるアーム2の手先位置姿勢の回転を表す行列R20と並進を表す行列T20を、時刻d2とd0の時のアーム制御部101が出力する駆動信号に基づく情報と、位置情報取得部107が出力するアーム2の手先位置姿勢を示す情報とを用いて算出する。次に、位置姿勢算出部108は、算出した回転を表す行列R20と並進を表す行列T20、及び撮像装置60の内部パラメーターを表す行列Aを用いて基礎行列F20を、次式12により算出する。ステップS15終了後、ステップS16に進む。ステップS16次に、誤差が時間や位置に依存しない場合、位置姿勢算出部108は、上述した式10により、誤差ε0をステップS12で算出した誤差ε1として算出し、算出した誤差ε0ΔR0、ΔT0、ΔA0を画像推定部109に出力する。ステップS16終了後、ステップS17に進む。ステップS17;第2画像推定手順次に、画像推定部109は、記憶部106に記憶されている時刻d1の時の画像I2と、時刻d0の時のI1を読み出す。なお、画像情報m0は、時刻d0の推定される推定画像I0’の画像情報であり、画像情報m1は、時刻d0で取得された画像I1の画像情報であり、画像情報m2は、時刻d1で取得された画像I2の画像情報である。次に、画像推定部109は、ステップS16で算出した誤差ε0ΔR0、ΔT0、ΔA0を各基礎行列F10、F20に加算して、各基礎行列F10、F20を更新する。なお、回転行列Rについては、誤差ΔR0を乗じることで更新する。ステップS17終了後、ステップS18に進む。ステップS18;第2画像推定手順次に、画像推定部109は、読み出した画像I1、I2の各画素の情報m1、m2と、更新した基礎行列F10、F20を用いて、次式13により、時刻d0の画像m0を推定する。全ての画素の情報について算出することで、画像推定部109は、時刻d0の推定画像I0’を推定する。以上により、時刻d0の画像I0の推定を終了する。このようにして推定された現在時刻d0の推定画像I0’を用いて、制御部100が、ビジュアルサーボを行う。なお、ステップS18では、時刻d2、d1に撮像された画像I3、I2を用いて、現在時刻d0の画像I0を推定する方法を説明した。撮像装置60の遅れ時間が長く、画像処理により最低でも2フレームの遅れ時間が発生する場合は、例えば、時刻d3現在時刻d0より3フレーム前の時刻に撮像された画像I4と、時刻d2現在時刻d0より2フレーム前の時刻に撮像された画像I3とを用いて、現在時刻d0の画像I0を推定する。この結果、現在時刻d0における画像I0が直接得られなくても、誤差を含めて精度良く画像I0を推定できるので、遅れ時間があっても精度良く制御できる。また、遅れ時間が1フレームの場合であっても、時刻d3現在時刻d0より3フレーム前の時刻、d2現在時刻d0より2フレーム前の時刻に撮像された画像I4、I3を用いて、現在時刻d0の画像I0を推定するようにしてもよい。また、なお、本実施形態では、ステップS18とS19で、時刻d0の画像m0を推定した後、推定した推定画像I0’に誤差を加算して推定画像I0’を更新する例を説明した。しかしながら、ステップS17で算出した誤差ε0ΔR0、ΔT0、ΔA0を基礎行列F10に加算して基礎行列F10を更新し、更新したF10を用いて式13により時刻d0の推定画像I0’を算出するようにしてもよい。以上のように、本実施形態では、画像推定部109は、現在時刻d0より1フレーム前の時刻d1の推定画像I1’を推定する。そして、位置姿勢算出部108は、現在時刻d0より1フレーム前の時刻d1に取得された画像I0と推定画像I1’との誤差ε0を誤差ε1として算出する。そして、位置姿勢算出部108は、時刻d2から時刻d0におけるアーム2の手先位置姿勢の回転を表す行列R20、並進を表す行列T20、撮像装置60の内部パラメーターを表す行列Aを用いて、基礎行列F20を算出する。また、位置姿勢算出部108は、時刻d1から時刻d0におけるアーム2の手先位置姿勢の回転を表す行列R20、並進を表す行列T20、撮像装置60の内部パラメーターを表す行列Aを用いて、基礎行列F20を算出する。そして、画像推定部109は、現在時刻d0より2フレーム前の時刻d2に撮像された画像I3、現在時刻d0より1フレーム前の時刻d1に撮像された画像I2、誤差を考慮した基礎行列F20、基礎行列F10を用いて、現在時刻d0の推定画像I0’を推定する。そして、推定した推定画像I0’に算出した誤差ε0を加算して、推定画像I0’を更新する。この結果、撮像装置60による遅れ誤差、ロボットキャリブレーション誤差、及びカメラキャリブレーション誤差を考慮した現在時刻d0における推定画像I0’を精度良く推測できる。そして、この推定された画像を用いてロボット1を制御できるため、ロボットキャリブレーション誤差やカメラキャリブレーション誤差等があっても精度の良いビジュアルサーボを行うことができる。[第2実施形態]本実施形態では、エンコーダー90が出力するアーム2の手先位置姿勢を示す情報が取得できるタイミング毎に画像を推定する。本実施形態に係る現在時刻d0の画像I0を推定する手順について、図9のフローチャートを用いて説明する。エンコーダー90からの出力は、1[msec]毎に取得できるとして、以下の説明をする。ステップS101まず、制御部100のアーム制御部101は、アーム2の手先位置姿勢をx3,y3,z3,α3,β3,γ3からx2,y2,z2,α2,β2,γ2に移動させる駆動信号を生成し、駆動部102を介してロボット1のアーム2を駆動する。また、アーム制御部101は、生成した駆動信号に基づく情報を位置姿勢算出部108に出力する。この駆動信号により、アーム2の手先位置姿勢は、時刻d3の時にx3,y3,z3,α3,β3,γ3に移動し、時刻d2の時にx2,y2,z2,α2,β2,γ2に移動する。また、アーム2の手先位置姿勢は、時刻d1の時にx1,y1,z1,α1,β1,γ1に移動し、時刻d0の時にx0,y0,z0,α0,β0,γ0に移動する。そして、時刻d3~d0の間隔は、撮像装置60のフレームレートであり、例えば33[msec]である。ステップS101終了後、ステップS102に進む。ステップS102次に、位置情報取得部107は、エンコーダー90が出力するアーム2の手先位置姿勢を示す情報を1[msec]毎に取得し、取得したアーム2の手先位置姿勢を示す情報を位置姿勢算出部108に出力する。ステップS102終了後、ステップS103に進む。ステップS103次に、画像取得部103は、クロック発生部104が出力するクロック信号に基づき、33[msec]経過したか否かを判定する。33[msec]経過した場合ステップS103;Yes、ステップS104に進む。33[msec]経過していない場合ステップS103;No、ステップS106に進む。ステップS104画像取得部103は、時刻d2に画像I3を撮像装置60から取得する。また、画像取得部103は、画像I3を取得したときの時刻d2をクロック発生部104から取得する。次に、画像取得部103は、画像I3をアナログ信号からデジタル信号に変換し、変換した画像I3と取得した時刻d2とを画像処理部105に出力する。ステップS104終了後、ステップS105に進む。ステップS105画像処理部105は、画像取得部103が出力する画像I3に対して画像処理を行い、特徴量を抽出する。画像処理部105は、例えば、2値化処理により対象物70の輪郭を抽出し、エッジ検出により特徴量を抽出する。画像処理部105は、画像取得部103が出力する時刻d2から画像の遅れに基づく時間33[msec]を減算して、実際の画像を撮像した時刻d3=d2-33[msec]を算出する。画像処理部105は、抽出した特徴量と算出した時刻d3とを関連づけて、記憶部106に記憶させる。ステップS105終了後、ステップS106に進む。ステップS106次に、画像推定部109は、記憶部106に画像データが3つ以上記憶されているか否かを判別する。記憶部106に画像データが3つ以上記憶されている場合ステップS106;Yes、ステップS107に進む。記憶部106に画像データが3つ以上記憶されていない場合ステップS106;No、ステップS102に戻る。この場合、記憶部106には、まだ画像I3しか記憶されていないため、ステップS102に戻り、ステップS102~S106を繰り返す。そして、ステップS104において、画像取得部103は、対象物70を撮像した時刻d1における画像I2を撮像装置60から取得する。ステップS105において、画像処理部105は、抽出した特徴量と算出した時刻d2とを関連づけて、記憶部106に記憶させる。さらに、ステップS104において、画像取得部103は、対象物70を撮像した時刻d0における画像I1を撮像装置60から取得する。ステップS105において、画像処理部105は、抽出した特徴量と算出した時刻d0とを関連づけて、記憶部106に記憶させる。ステップS107次に、位置姿勢算出部108は、時刻d3から時刻d1におけるアーム2の手先位置姿勢の回転を表す行列R31と並進を表す行列T31を、時刻d3とd1の時のアーム制御部101が出力する駆動信号に基づく情報と、位置情報取得部107が出力するアーム2の手先位置姿勢を示す情報とを用いて算出する。位置姿勢算出部108は、算出した回転を表す行列R31と並進を表す行列T31、及び撮像装置60の内部パラメーターを表す行列Aを用いて基礎行列F31を上述した式5においてR21をR31、T21をT31に置き換えて算出する。位置姿勢算出部108は、算出した基礎行列F31を画像推定部109に出力する。次に、位置姿勢算出部108は、時刻d2から時刻d1におけるアーム2の手先位置姿勢の回転を表す行列R21と並進を表す行列T21を、時刻d2とd1の時のアーム制御部101が出力する駆動信号に基づく情報と、位置情報取得部107が出力するアーム2の手先位置姿勢を示す情報とを用いて算出する。位置姿勢算出部108は、算出した回転を表す行列R21と並進を表す行列T21、及び撮像装置60の内部パラメーターを表す行列Aを用いて基礎行列F21を、上述した式5により算出する。位置姿勢算出部108は、算出した基礎行列F21を画像推定部109に出力する。ステップS107終了後、ステップS108に進む。ステップS108次に、画像推定部109は、記憶部106に記憶されている画像I3とI2の画像データを読み出す。画像推定部109は、位置姿勢算出部108が出力する基礎行列F21と基礎行列F31、記憶部106から読み出した画像I3とI2の画像データを用いて、上述した式11により時刻d1の推定画像I1’を推定する。画像推定部109は、実測された画像I1と推定した推定画像I1’を位置姿勢算出部108に出力する。ステップS10終了後、ステップS109に進む。ステップS109次に、位置姿勢算出部108は、画像推定部109が出力する実測された画像I1と推定された推定画像I1’を用いて、例えば最小化問題を解いて誤差ε1であるΔR1、ΔT1、ΔA1を算出する。ステップS109終了後、ステップS110に進む。ステップS110次に、位置姿勢算出部108は、時刻d1から時刻d0におけるアーム2の手先位置姿勢の回転R10と並進を表す行列T10を、時刻d1とd0の時のアーム制御部101が出力する駆動信号に基づく情報と、位置情報取得部107が出力するアーム2の手先位置姿勢を示す情報とを用いて算出する。次に、位置姿勢算出部108は、算出した回転を表す行列R10と並進を表す行列T10、及び撮像装置60の内部パラメーターを表す行列Aを用いて基礎行列F10を、上述した式6により算出する。ステップS110終了後、ステップS111に進む。ステップS111次に、位置姿勢算出部108は、時刻d2から時刻d0におけるアーム2の手先位置姿勢の回転を表す行列R20と並進を表す行列T20を、時刻d2とd0の時のアーム制御部101が出力する駆動信号に基づく情報と、位置情報取得部107が出力するアーム2の手先位置姿勢を示す情報とを用いて算出する。次に、位置姿勢算出部108は、算出した回転を表す行列R20と並進を表す行列T20、及び撮像装置60の内部パラメーターを表す行列Aを用いて基礎行列F20を、上述した式12により算出する。ステップS111終了後、ステップS112に進む。ステップS112次に、誤差が時間や位置に依存しない場合、位置姿勢算出部108は、上述した式10により、誤差ε0ΔR0、ΔT0、ΔA0をステップS109で算出した誤差ε1ΔR1、ΔT1、ΔA1として算出する。ステップS112終了後、ステップS113に進む。ステップS113次に、画像推定部109は、記憶部106に記憶されている画像I2、I1を読み出す。次に、画像推定部109は、ステップS112で算出した誤差ε0ΔR0、ΔT0、ΔA0を各基礎行列F10、F20に加算して、各基礎行列F10、F20を更新する。なお、回転行列Rについては、誤差ΔR0を乗じることで更新する。ステップS113終了後、ステップS114に進む。ステップS114次に、画像推定部109は、読み出した画像I2、I1の各画素の情報m2、m1と、更新した基礎行列F10、F20を用いて、上述した式13により、時刻d0の画像m0を推定する。全ての画素の情報について算出することで、画像推定部109は、時刻d0の推定画像I0’を推定する。ステップS114終了後、ステップS102に戻る。このようにして推定された現在時刻d0の推定画像I0’を用いて、制御部100が、エンコーダー90がアーム2の手先位置姿勢を示す情報を出力するタイミング毎に、ビジュアルサーボを行う。本実施形態によれば、位置姿勢算出部108は、撮像装置60のフレームレートが33[msec]の場合、撮像装置60から取得できる画像データを33[msec]でしか得られなくても、現在時刻より前に取得した画像データ、アーム2の手先位置姿勢を示す情報に基づき、アーム2の手先位置姿勢の誤差を算出できる。そして、画像推定部109は、現在時刻より前の時刻d1に取得した画像データと時刻d1の推定画像I1’との誤差ε1を現在時刻d0の誤差ε0として算出する。そして、算出した誤差を用いて、現在時刻の画像を推定するようにしたので、エンコーダー90がアーム2の手先位置姿勢を示す情報を出力するタイミング毎例えば、1[msec]毎に、ロボットキャリブレーション誤差やカメラキャリブレーション誤差等があっても精度良くビジュアルサーボを行うことができる。例えば、低いフレームレートの撮像装置60を用いたロボット1では、ロボット1の制御におけるサーボループのゲインを上げないと高速に制御できない。しかしながら、低いフレームレートの撮像装置60を用いたロボット1では、サーボループのゲインを上げると振動が発生するため、サーボループのゲインを上げられず、このためロボット1を高速に制御することができない。また、高速な制御を行うために高いフレームレートの撮像装置60を用いた場合、撮像装置60が高価であるため、ロボット1のコストアップになってしまう。本実施形態によれば、低いフレームレートの撮像措置60を用いた場合でも、撮像装置60のフレームレートより速い間隔で、予測した画像を用いてロボット1を制御することができる効果がある。なお、本実施形態では、ステップS103で、画像取得部103が、クロック発生部104が出力するクロック信号に基づき、33[msec]毎に撮像された画像データを取得する例を説明したが、撮像装置60が撮像した画像データを出力するタイミング毎に画像データを取得するようにしてもよい。また、本実施形態では、エンコーダー90がアーム2の手先位置姿勢を示す情報を出力するタイミング毎例えば、1[msec]毎に現在時刻の画像を推定する例を説明したが、画像を推定する間隔は、制御する用途に応じて任意でもよい。[第3実施形態]図10は、本実施形態に係るロボット1aの概略構成を示す斜視図である。図10に示すように、ロボット1aは、2本のアーム2-1と2-2を備えている。アーム2-1と2-2は、本体部500に連結されている。また、本体部500は、固定部10aに連結されている。アーム2-1は、アーム部20-1、及びエンドエフェクター40-1を備える。アーム2-2は、アーム部20-2、力センサー30-2、及びエンドエフェクター40-2を備える。また、ロボット1は、制御部100aの制御により動作する。撮像装置60は、エンドエフェクター40-1の先端部に取り付けられている。撮像装置60は、対象物を撮影し、撮影したアナログ値の画像データを制御装置100aに出力する。アーム部20-1は、第1実施形態の構成と同様である。アーム部20-2は、第1実施形態と同様に第1リンク21-2、第2リンク22-2、第3リンク23-2、第4リンク24-2および第5リンク25-2がこの順に連結されたものである。アーム部20-2の第5リンク25-2の他方端には、エンドエフェクター40-2が設けられている。アーム部20-2の第5リンク25-2とエンドエフェクター40-2の間には、力センサー30-2が介挿されている。力センサー30-2は、検出したアーム2-2のエンドエフェクター40-2に加わる力成分とトルク成分を含む情報を制御部100aに出力する。なお、エンドエフェクター40-2は、例えば把持部ハンド部である。図11は、本実施形態に係るアーム部20-1及び20-2と力センサーとエンコーダーの概念図である。図11に示すように、ロボット1aは、各アーム2-1、2-2がそれぞれ6自由度を有し、さらに本体部500が1自由度を有している。図11に示すように、アーム2-1と同様に、アーム2-1のアーム部20-1は、回転部82-1、83-1及び85-1と、屈折部81-1、84-1及び86-1とを有している。そして、アーム2-1のアーム部20-1は、エンドエフェクター40-1との間に力センサー30を有している。また、図11に示すように、第1実施形態と同様に回転部82-1、83-1及び85-1と、屈折部81-1、84-1及び86-1は、各々エンコーダー91-1~96-1を備えている。また、図11に示すように、アーム2-1と同様に、アーム2-2のアーム部20-2は、回転部82-2、83-2及び85-2と、屈折部81-2、84-2及び86-2は、各々エンコーダー91-2~96-2を備えている。本実施形態では、アーム2-1に取り付けられている撮像装置60により、ワーク72の上に置かれている対象物70を撮像して、制御部100aが、第1実施形態と同様に現在時刻の画像データを推定する。そして、制御部100aは、推定した画像データを用いて、アーム2-2のエンドエフェクター40-2のハンドが把持している物体の位置を制御する。制御部100aは、例えば、対象物70に把持されている部品を組み付けるように、推定された画像データを用いてアーム2-2を制御する。この結果、本実施形態のロボット1は、第1実施形態と同様に、撮像装置60が出力する画像データに遅れ時間があり現在時刻の画像データが取得できず、さらにロボットキャリブレーション誤差やカメラキャリブレーション誤差等があっても精度良くアームを制御して例えば部品の取り付け等の作業を、精度良く行うことができる。また、第2実施形態の処理方法を組み合わせることで、本実施形態のロボット1は、撮像装置60のフレームレートより高いレートで画像データの推定を行うことで、撮像装置60が低いフレームレートであっても、高速でアームを精度良く制御することができる。なお、本実施形態では、撮像装置が撮像してから撮像した画像を出力するまで、1フレームの遅れがある例を説明した。しかしながら、撮像装置のフレームレートが高速であり、撮像してから撮像された画像が出力されるまでの遅れ時間による誤差がほとんど無い場合でも、上述したようにロボットキャリブレーション誤差やカメラキャリブレーション誤差が存在する。本実施形態のロボットによれば、このような場合でも、異なる時刻に撮像された画像間の誤差を算出して、算出した誤差を用いて、現在時刻の画像を推定することで、ロボットキャリブレーション誤差やカメラキャリブレーション誤差があっても、それらを補正して現在時刻の画像を精度良く推定することができる。この結果、推定された画像を用いて精度良くビジュアルサーボを行うことができる。なお、実施形態の図3または図10の制御部の各部の機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいうコンピューターシステムとは、OSや周辺機器等のハードウェアを含むものとする。また、コンピューターシステムは、WWWシステムを利用している場合であれば、ホームページ提供環境あるいは表示環境も含むものとする。また、コンピューター読み取り可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、ROMReadOnlyMemory、CD-ROM等の可搬媒体、USBUniversalSerialBusI/Fインタフェースを介して接続されるUSBメモリー、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらにコンピューター読み取り可能な記録媒体とは、サーバーやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。"