(57)【要約】カメラ部（１３０）から得られた物品（ＯＢＪ）の位置に誤差が含まれていても物品（ＯＢＪ）を容器（ＢＯＸ）から取り出すことができるロボットシステム（１００）、ロボット制御装置（１２０）、ロボットハンド（１０８）及びロボットの制御方法を提供する。ロボット（１１０）の制御方法は、容器（ＢＯＸ）のステレオ画像に基づいて、容器（ＢＯＸ）の位置又は姿勢に関する情報を第１の情報として計算するステップと、ハンド（１０８）を容器（ＢＯＸ）に接触させることにより、容器（ＢＯＸ）の位置又は姿勢に関する情報を第２の情報として計算するステップと、部品（ＯＢＪ）のステレオ画像に基づいて、部品（ＯＢＪ）の位置又は姿勢に関する情報を計算するステップと、第１及び第２の情報に基づいて部品（ＯＢＪ）の位置又は姿勢に関する情報を補正するステップとを含む。
2013027251.tif 000002
【特許請求の範囲】
【請求項１】
容器に入った物品を撮像するカメラ部、前記物品を把持するハンド、及び前記ハンドが前記容器に接触したことを検出するための接触検出器を有するロボットと、  前記ロボットを制御するロボット制御装置とを備え、  前記ロボット制御装置は、１）前記容器に向かって前記ハンドを移動させ、該ハンドを該容器に接触させる制御部と、２）前記接触検出器により前記ハンドが前記容器に接触したことを検出し、その接触位置を求める接触検出部と、３）前記カメラ部を用いて取得された前記容器のステレオ画像から、該容器の位置を計算する第１の処理部と、４）前記第１の処理部が計算した前記容器の位置と前記接触検出部が求めた前記接触位置との差を補正量として計算する第２の処理部と、５）前記補正量に基づいて、前記容器に入った前記物品の高さ方向の位置に関する情報を補正する第３の処理部とを有するロボットシステム。
【請求項２】
請求項１記載のロボットシステムにおいて、  前記ハンドは、基部と、  前記基部から延び、前記容器に接触すると変形する接触検出部材とを有し、  前記制御部が、前記容器に向かって前記ハンドを移動させ、前記接触検出部材を前記容器に接触させるロボットシステム。
【請求項３】
請求項２記載のロボットシステムにおいて、前記接触検出部材が、弾性体により構成されるロボットシステム。
【請求項４】
請求項１記載のロボットシステムにおいて、  前記ハンドは、基部と、  前記基部から延び、開閉する１対の把持爪とを備え、  前記１対の把持爪のうち、一方の把持爪が、該把持爪の剛性を変更する剛性変更機構を有するロボットシステム。
【請求項５】
請求項４記載のロボットシステムにおいて、  前記剛性変更機構が、前記基部に設けられる固定部と、  前記固定部に一端が固定されるコイルばねと、  前記コイルばねの他端に固定され、前記固定部の側に穴が形成された把持部と、  前記コイルばねの内側に配置され、先端部の形状が前記穴の形状に対応するピンと、  前記固定部に設けられ、前記ピンを進退させる進退機構とを有するロボットシステム。
【請求項６】
容器に入った物品を撮像するカメラ部、前記物品を把持するハンド、及び前記ハンドが前記容器に接触したことを検出するための接触検出器を有するロボットと、  前記ロボットを制御するロボット制御装置とを備え、  前記ロボット制御装置は、１）前記容器に向かって前記ハンドを移動させ、該ハンドを該容器の異なる第１〜第６の接触位置にそれぞれ接触させる制御部と、２）前記接触検出器により前記ハンドが前記容器に接触したことを検出し、前記第１〜第６の接触位置を求め、求めた該第１〜第６の接触位置から前記容器の位置姿勢を求める接触検出部と、３）前記カメラ部を用いて取得された前記容器のステレオ画像から、前記容器の位置姿勢を計算する第１の処理部と、４）前記第１の処理部が計算した前記容器の位置姿勢と前記接触検出部が求めた前記容器の位置姿勢とに基づいて、前記ロボットの手首部のフランジに固定されたフランジ座標系から見た前記カメラ部の位置姿勢を表す同次変換行列ＦＴＣを計算する第２の処理部と、５）前記同次変換行列ＦＴＣに基づいて、前記容器に入った前記物品の位置姿勢に関する情報を補正する第３の処理部とを有するロボットシステム。
【請求項７】
請求項６記載のロボットシステムにおいて、  前記制御部は、前記ハンドの予め決められた部位にて、該ハンドを前記容器に接触させるロボットシステム。
【請求項８】
容器に入った物品を撮像するカメラ部及び前記物品を把持するハンドを有するロボットと、  前記ロボットを制御するロボット制御装置とを備え、  前記ロボット制御装置は、１）前記容器に向かって前記ハンドを移動させ、該ハンドを該容器に接触させる制御部と、２）前記ハンドが前記容器に接触した際の接触位置を出力する接触位置出力手段と、３）前記カメラ部を用いて取得された前記容器のステレオ画像から、前記容器の位置を計算する第１の処理部と、４）前記第１の処理部が計算した前記容器の位置と前記接触位置出力手段が出力した前記接触位置との差を補正量として計算する第２の処理部と、５）前記補正量に基づいて前記容器に入った前記物品の位置に関する情報を補正する第３の処理部とを備えたロボットシステム。
【請求項９】
物品を収容する容器に向かってロボットのハンドを移動させ、該ハンドを該容器に接触させる制御部と、  前記ハンドが前記容器に接触したことを検出し、その接触位置を求める接触検出部と、  前記容器のステレオ画像から、該容器の位置を計算する第１の処理部と、  前記第１の処理部が計算した前記容器の位置と前記接触検出部が求めた前記接触位置との差を補正量として計算する第２の処理部と、  前記補正量に基づいて、前記容器に入った前記物品の高さ方向の位置に関する情報を補正する第３の処理部とを有するロボット制御装置。
【請求項１０】
物品を収容する容器に向かってロボットのハンドを移動させ、該ハンドを該容器の異なる第１〜第６の接触位置にそれぞれ接触させる制御部と、  前記ハンドが前記容器に接触したことを検出し、前記第１〜第６の接触位置を求め、求めた該第１〜第６の接触位置から前記容器の位置姿勢を求める接触検出部と、  前記ロボットに設けられたカメラ部を用いて取得された前記容器のステレオ画像から、前記容器の位置姿勢を計算する第１の処理部と、  前記第１の処理部が計算した前記容器の位置姿勢と前記接触検出部が求めた前記容器の位置姿勢とに基づいて、前記ロボットの手首部のフランジに固定されたフランジ座標系から見た前記カメラ部の位置姿勢を表す同次変換行列ＦＴＣを計算する第２の処理部と、  前記同次変換行列ＦＴＣに基づいて、前記容器に入った前記物品の位置に関する情報を補正する第３の処理部とを有するロボット制御装置。
【請求項１１】
部品が収容された容器を撮像し、該容器のステレオ画像を取得するステップと、  前記容器のステレオ画像に基づいて、前記容器の位置又は姿勢に関する情報を第１の情報として計算するステップと、  前記容器に向かってロボットのハンドを移動させるステップと、  前記ハンドを前記容器に接触させることにより、該容器の位置又は姿勢に関する情報を第２の情報として計算するステップと、  前記部品を撮像し、該部品のステレオ画像を取得するステップと、  前記部品のステレオ画像に基づいて、前記部品の位置又は姿勢に関する情報を計算するステップと、  前記第１及び第２の情報に基づいて前記部品の位置又は姿勢に関する情報を補正するステップとを含むロボットの制御方法。
【請求項１２】
部品が収容された容器を撮像し、該容器のステレオ画像を取得するステップと、  前記容器のステレオ画像に基づいて、前記容器の位置を第１の位置として計算するステップと、  前記容器に向かってロボットのハンドを移動させるステップと、  前記ハンドが前記容器に接触したことを検出し、その接触した位置を第２の位置として求めるステップと、  前記容器の第１の位置と前記第２の位置との差を補正量として計算するステップと、  前記部品を撮像し、該部品のステレオ画像を取得するステップと、  前記部品のステレオ画像に基づいて、前記部品の位置を計算するステップと、  前記補正量に基づいて前記部品の高さ方向の位置に関する情報を補正するステップと、  補正された前記部品の高さ方向の位置に関する情報に基づいて、前記ハンドを用いて前記部品を把持するステップとを含むロボットの制御方法。
【請求項１３】
ロボットに設けられたカメラ部を用いて部品が収容された容器を撮像し、該容器のステレオ画像を取得するステップと、  前記容器のステレオ画像に基づいて、前記容器の位置姿勢を第１の位置姿勢として計算するステップと、  前記容器に向かってロボットのハンドを移動させる処理及び前記記ハンドが前記容器に接触したことを検出し、その接触した接触位置を求める処理を繰り返し、それぞれ異なる少なくとも６つの接触位置を求めるステップと、  前記接触位置から前記容器の位置姿勢を第２の位置姿勢として計算するステップと、  前記第１の位置姿勢と前記第２の位置姿勢とに基づいて、前記ロボットの手首部のフランジに固定されたフランジ座標系から見た前記カメラ部の位置姿勢を計算するステップと、  前記フランジ座標系から見た前記カメラ部の位置姿勢に基づいて、前記ロボットのハンドを用いて前記部品を把持するステップとを含むロボットの制御方法。
【請求項１４】
基部と、  前記基部から延び、開閉する１対の把持爪と、  前記基部から延び、接触すると変形する接触検出部材とを有するロボットハンド。
【請求項１５】
基部と、  前記基部から延び、開閉する１対の把持爪とを備え、  前記１対の把持爪のうち、一方の把持爪が、該把持爪の剛性を変更する剛性変更機構を有するロボットハンド。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、ロボットシステム、ロボット制御装置、ロボットハンド及びロボットの制御方法に関する。
【背景技術】
【０００２】  特許文献１には、ハンドアイ付きロボットが記載されている。このハンドアイ付きロボットは、メカニカルハンドを装着するアームに撮像装置の少なくとも撮像光学系を取り付けて、メカニカルハンドによる作業に必要な視覚情報を得るように構成されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭５８−１３７５９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】  本発明は、カメラ部から得られた物品の位置に誤差が含まれていても物品を容器から取り出すことができるロボットシステム、ロボット制御装置、ロボットハンド及びロボットの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】  上記課題を解決するため、本発明の一の観点によれば、容器に入った物品を撮像するカメラ部、前記物品を把持するハンド、及び前記ハンドが前記容器に接触したことを検出するための接触検出器を有するロボットと、  前記ロボットを制御するロボット制御装置とを備え、  前記ロボット制御装置は、１）前記容器に向かって前記ハンドを移動させ、該ハンドを該容器に接触させる制御部と、２）前記接触検出器により前記ハンドが前記容器に接触したことを検出し、その接触位置を求める接触検出部と、３）前記カメラ部を用いて取得された前記容器のステレオ画像から、該容器の位置を計算する第１の処理部と、４）前記第１の処理部が計算した前記容器の位置と前記接触検出部が求めた前記接触位置との差を補正量として計算する第２の処理部と、５）前記補正量に基づいて、前記容器に入った前記物品の高さ方向の位置に関する情報を補正する第３の処理部とを有するロボットシステムが適用される。【０００６】  また、他の観点によれば、容器に入った物品を撮像するカメラ部、前記物品を把持するハンド、及び前記ハンドが前記容器に接触したことを検出するための接触検出器を有するロボットと、  前記ロボットを制御するロボット制御装置とを備え、  前記ロボット制御装置は、１）前記容器に向かって前記ハンドを移動させ、該ハンドを該容器の異なる第１〜第６の接触位置にそれぞれ接触させる制御部と、２）前記接触検出器により前記ハンドが前記容器に接触したことを検出し、前記第１〜第６の接触位置を求め、求めた該第１〜第６の接触位置から前記容器の位置姿勢を求める接触検出部と、３）前記カメラ部を用いて取得された前記容器のステレオ画像から、前記容器の位置姿勢を計算する第１の処理部と、４）前記第１の処理部が計算した前記容器の位置姿勢と前記接触検出部が求めた前記容器の位置姿勢とに基づいて、前記ロボットの手首部のフランジに固定されたフランジ座標系から見た前記カメラ部の位置姿勢を表す同次変換行列ＦＴＣを計算する第２の処理部と、５）前記同次変換行列ＦＴＣに基づいて、前記容器に入った前記物品の位置姿勢に関する情報を補正する第３の処理部とを有するロボットシステムが適用される。【０００７】  また、他の観点によれば、容器に入った物品を撮像するカメラ部及び前記物品を把持するハンドを有するロボットと、  前記ロボットを制御するロボット制御装置とを備え、  前記ロボット制御装置は、１）前記容器に向かって前記ハンドを移動させ、該ハンドを該容器に接触させる制御部と、２）前記ハンドが前記容器に接触した際の接触位置を出力する接触位置出力手段と、３）前記カメラ部を用いて取得された前記容器のステレオ画像から、前記容器の位置を計算する第１の処理部と、４）前記第１の処理部が計算した前記容器の位置と前記接触位置出力手段が出力した前記接触位置との差を補正量として計算する第２の処理部と、５）前記補正量に基づいて前記容器に入った前記物品の位置に関する情報を補正する第３の処理部とを備えたロボットシステムが適用される。【０００８】  また、他の観点によれば、物品を収容する容器に向かってロボットのハンドを移動させ、該ハンドを該容器に接触させる制御部と、  前記ハンド��前記容器に接触したことを検出し、その接触位置を求める接触検出部と、  前記容器のステレオ画像から、該容器の位置を計算する第１の処理部と、  前記第１の処理部が計算した前記容器の位置と前記接触検出部が求めた前記接触位置との差を補正量として計算する第２の処理部と、  前記補正量に基づいて、前記容器に入った前記物品の高さ方向の位置に関する情報を補正する第３の処理部とを有するロボット制御装置が適用される。【０００９】  また、他の観点によれば、物品を収容する容器に向かってロボットのハンドを移動させ、該ハンドを該容器の異なる第１〜第６の接触位置にそれぞれ接触させる制御部と、  前記ハンドが前記容器に接触したことを検出し、前記第１〜第６の接触位置を求め、求めた該第１〜第６の接触位置から前記容器の位置姿勢を求める接触検出部と、  前記ロボットに設けられたカメラ部を用いて取得された前記容器のステレオ画像から、前記容器の位置姿勢を計算する第１の処理部と、  前記第１の処理部が計算した前記容器の位置姿勢と前記接触検出部が求めた前記容器の位置姿勢とに基づいて、前記ロボットの手首部のフランジに固定されたフランジ座標系から見た前記カメラ部の位置姿勢を表す同次変換行列ＦＴＣを計算する第２の処理部と、  前記同次変換行列ＦＴＣに基づいて、前記容器に入った前記物品の位置に関する情報を補正する第３の処理部とを有するロボット制御装置が適用される。【００１０】  また、他の観点によれば、部品が収容された容器を撮像し、該容器のステレオ画像を取得するステップと、  前記容器のステレオ画像に基づいて、前記容器の位置又は姿勢に関する情報を第１の情報として計算するステップと、  前記容器に向かってロボットのハンドを移動させるステップと、  前記ハンドを前記容器に接触させることにより、該容器の位置又は姿勢に関する情報を第２の情報として計算するステップと、  前記部品を撮像し、該部品のステレオ画像を取得するステップと、  前記部品のステレオ画像に基づいて、前記部品の位置又は姿勢に関する情報を計算するステップと、  前記第１及び第２の情報に基づいて前記部品の位置又は姿勢に関する情報を補正するステップとを含むロボットの制御方法が適用される。【００１１】  また、他の観点によれば、部品が収容された容器を撮像し、該容器のステレオ画像を取得するステップと、  前記容器のステレオ画像に基づいて、前記容器の位置を第１の位置として計算するステップと、  前記容器に向かってロボットのハンドを移動させるステップと、  前記ハンドが前記容器に接触したことを検出し、その接触した位置を第２の位置として求めるステップと、  前記容器の第１の位置と前記第２の位置との差を補正量として計算するステップと、  前記部品を撮像し、該部品のステレオ画像を取得するステップと、  前記部品のステレオ画像に基づいて、前記部品の位置を計算するステップと、  前記補正量に基づいて前記部品の高さ方向の位置に関する情報を補正するステップと、  補正された前記部品の高さ方向の位置に関する情報に基づいて、前記ハンドを用いて前記部品を把持するステップとを含むロボットの制御方法が適用される。【００１２】  また、他の観点によれば、ロボットに設けられたカメラ部を用いて部品が収容された容器を撮像し、該容器のステレオ画像を取得するステップと、  前記容器のステレオ画像に基づいて、前記容器の位置姿勢を第１の位置姿勢として計算するステップと、  前記容器に向かってロボットのハンドを移動させる処理及び前記記ハンドが前記容器に接触したことを検出し、その接触した接触位置を求める処理を繰り返し、それぞれ異なる少なくとも６つの接触位置を求めるステップと、  前記接触位置から前記容器の位置姿勢を第２の位置姿勢として計算するステップと、  前記第１の位置姿勢と前記第２の位置姿勢とに基づいて、前記ロボットの手首部のフランジに固定されたフランジ座標系から見た前記カメラ部の位置姿勢を計算するステップと、  前記フランジ座標系から見た前記カメラ部の位置姿勢に基づいて、前記ロボットのハンドを用いて前記部品を把持するステップとを含むロボットの制御方法が適用される。【００１３】  また、他の観点によれば、基部と、  前記基部から延び、開閉する１対の把持爪と、  前記基部から延び、接触すると変形する接触検出部材とを有するロボットハンドが適用される。【００１４】  また、他の観点によれば、基部と、  前記基部から延び、開閉する１対の把持爪とを備え、  前記１対の把持爪のうち、一方の把持爪が、該把持爪の剛性を変更する剛性変更機構を有するロボットハンドが適用される。
【発明の効果】
【００１５】  本発明によれば、カメラ部から得られた物品の位置に誤差が含まれていても物品を容器から取り出すことができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施例に係るロボットシステムの構成図である。
【図２】同ロボットシステムのロボット制御装置が有する位置計算部のブロック図である。
【図３】同ロボットシステムが有するロボットシステムの概略の動作を示すフローチャートである。
【図４】同ロボットシステムが有するロボットシステムの詳細な動作を示すフローチャートである。
【図５】補正量計算処理における同ロボットシステムが有するロボットの動作を示す説明図である。
【図６】部品把持動作における同ロボットシステムが有するロボットの動作を示す説明図である。
【図７】本発明の第２の実施例に係るロボットシステムの構成図である。
【図８】同ロボットシステムのロボット制御装置が有する位置計算部のブロック図である。
【図９】同ロボットシステムの補正量計算処理を示すフローチャートである。
【図１０】部品収容容器の斜視図である。
【図１１】部品収容容器の角点を示す説明図である。
【図１２】同ロボットシステムが有するロボットのハンドによる接触動作を示す説明図である。
【図１３】同ロボットシステムが有するロボットのハンドによる接触箇所の例を示す説明図である。
【図１４】各座標系と同次変換行列との関係を示す説明図である。
【図１５】部品収容容器の位置姿勢を表す同次変換行列を示す説明図である。
【図１６】同ロボットシステム補正量計算処理における第１の座標系を示す部品収容容器の上面図である。
【図１７】同ロボットシステム補正量計算処理における図１６とは別の角度から見た第１の座標系を示す部品収容容器の側面図である。
【図１８】同ロボットシステム補正量計算処理における第２の座標系を示す説明図である。
【図１９】同ロボットシステム補正量計算処理における容器座標系を示す説明図である。
【図２０】本発明の第３の実施例に係るロボットシステムの構成図である。
【図２１】同ロボットシステムが有するロボット制御装置の接触検出動作を示すフローチャートである。
【図２２】補正量計算処理における同ロボットシステムが有するロボットの動作を示す説明図である。
【図２３】部品把持動作における同ロボットシステムが有するロボットの動作を示す説明図である。
【図２４】同ロボットシステムが有するロボット制御装置の接触検出部が記憶したデータ例である。
【図２５】同ロボットシステムが接触検出動作を実行する際の力データ及び接触検出プローブの高さ方向の先端部位置の例である。
【図２６】本発明の第４の実施例に係るロボットシステムが有するロボットのハンドであって、ピンが後退した状態を示す説明図である。
【図２７】同ロボットシステムが有するロボットのハンドであって、ピンが進出した状態を示す説明図である。
【図２８】補正量計算処理における同ロボットシステムが有するロボットの動作を示す説明図である。
【図２９】部品把持動作における同ロボットシステムが有するロボットの動作を示す説明図である。
【発明を実施するための形態】
【００１７】  続いて、添付した図面を参照しつつ、本発明を具体化した実施例につき説明し、本発明の理解に供する。なお、各図において、説明に関連しない部分は図示を省略する場合がある。
【００１８】＜第１の実施例＞  本発明の第１の実施例に係るロボットシステム１００は、図１に示すように、ロボット１１０及びこのロボット１１０の動作を制御するロボット制御装置１２０を備えている。  ロボット１１０は、作業台１１２上の任意の場所に置かれた部品収容容器（容器の一例）ＢＯＸの中から山積みになった部品（物品の一例）ＯＢＪを取り出すことができる。部品収容容器ＢＯＸは、例えば図１０に示すように、矩形状の底板１１４と、側面を構成する４枚の側面板１１５ａ〜１１５ｄとを有し、上側が開口した容器である。  なお、図１に記載したロボット１１０は、模式的に描かれている。また、図１に示す座標は、ロボット座標系Ｃｒである。ロボット座標系ＣｒのＸ軸の正方向、Ｙ軸の正方向及びＺ軸の正方向は、それぞれ、ロボット１１０の前方、左方及び上方にとられている。
【００１９】  ロボット１１０は、複数のリンク１２２ａ〜１２２ｆを有しており、例えば、６軸の多関節ロボットである。各リンク１２２ａ〜１２２ｆは、関節１２４を介して連結されている。各関節１２４は、エンコーダを有するサーボモータ（不図示）によって駆動される。
【００２０】  ロボット１１０は、図１に示すように、更に、力センサ（接触検出器の一例）１２６、ハンド（ロボットハンド）１０８及びカメラ部１３０を有している。  力センサ１２６は、ハンド１０８に加わる力を検出し、力に応じた電気信号を出力することができる。即ち、力センサ１２６により、ハンド１０８が物体に接触したことを検出することができる。力センサ１２６は、例えば、ロボット１１０の先端部に位置する手首部のフランジ１３２に設けられている。力センサ１２６は、ハンド１０８の接触検出に使用されるため、例えば、ハンド１０８と物体の接触方向が予め決まっている場合においては、少なくとも接触する方向の力が検出できればよい。
【００２１】  なお、接触検出器は、ハンド１０８が物体に接触したことを検出できるセンサであれば任意でよい。接触検出器の他の例として、接触センサや接触したことを圧力変化として検出する圧力センサが挙げられる。
【００２２】  また、接触したことを導通の有無により電気的に検出する検出手段を用いてハンド１０８が物体に接触したことを検出することもできる。各関節を駆動するモータのトルク指令値と負荷トルクとの差で表される外乱トルクが予め設定した閾値を超えたことにより接触を検出する検出手段を用いてハンド１０８が物体に接触したことを検出することもできる。
【００２３】  ハンド１０８は、力センサ１２６の先端側に設けられている。ハンド１０８は、基部１３３と、基部１３３から延び開閉する１対の把持爪１３４、１３５とを有している。ハンド１０８は、把持爪１３４、１３５を開閉することにより、把持対象物である部品ＯＢＪを把持できる。把持爪１３４、１３５は、図示しないサーボモータにより駆動され、開閉する。
【００２４】  カメラ部１３０は、異なる位置にそれぞれ設けられた２台のカメラで構成されており、異なる２つの位置から一度に部品ＯＢＪを撮像できる。従って、カメラ部１３０によって、撮像位置を変えることなく、一度に２枚の部品の画像（ステレオ画像）が取得される。カメラ部１３０は、例えばハンド１０８の基部１３３や、ロボット１１０の手首部のフランジ１３２に取り付けられている。  なおカメラ部１３０は、１台のカメラのみで構成されていてもよい。この場合、カメラ部１３０はロボット１１０が移動することによって異なる２つの位置から部品ＯＢＪを撮像できる。  カメラ部１３０によって取得されたステレオ画像によって、部品ＯＢＪの３次元の計測データ（部品形状）が得られる。
【００２５】  ロボット制御装置１２０は、図１に示すように、記憶部１５２と、動作シーケンス部１５４と、軌道生成部１５６と、サーボ制御部（制御部の一例）１５８と、ハンド制御部１６０とを有している。  また、ロボット制御装置１２０は、更にキャプチャ部１６２と、位置計算部１６６と、力センサインターフェース部１６８と、接触検出部（接触位置出力手段の一例）１７０と、補正量計算部（第２の処理部の一例）１７２とを有している。  ロボット制御装置１２０は、図示しないＣＰＵおよびメモリを内蔵している。図１に示す機能ブロック図により表された各機能は、ＣＰＵにより実行されるソフトウェアプログラムやハードウェアによって実現される。
【００２６】  記憶部１５２は、ロボット１１０を動作させる命令が記述された動作プログラム（ＪＯＢ）を記憶できる。また、記憶部１５２は、予め設定された部品ＯＢＪの形状及び寸法を表したモデルデータを記憶できる。この記憶部１５２は例えば、不揮発性の半導体メモリやＨＤＤで構成される。
【００２７】  動作シーケンス部１５４は、動作プログラムを解析して、必要な処理を実行できる。第１の例として、動作シーケンス部１５４は、動作プログラムに記述された直線移動命令に基づき、軌道生成部１５６に対して軌道を生成するように指令ｃｍｄ１を出力できる。第２の例として、動作シーケンス部１５４は、動作プログラムに記述された閉命令に基づき、ハンド制御部１６０に対して、把持爪１３４、１３５を閉じるように、指令ｃｍｄ２を出力できる。  更に、動作シーケンス部１５４は、カメラ部１３０の撮像タイミングとなる撮像トリガｔｒｇを出力できる。また、動作シーケンス部１５４は、接触検出部１７０に対して、動作を開始させるための指令ｃｍｄ３を出力できる。
【００２８】  軌道生成部１５６は、動作シーケンス部１５４からの指令ｃｍｄ１に基づいて、ロボット１１０の軌道を生成できる。例えば、軌道生成部１５６は、動作シーケンス部１５４からの指令ｃｍｄ１に基づいて、直線移動命令で設定された目標位置までロボット１１０のハンド１０８を直線移動させるための軌道を生成できる．ロボット１１０は、生成された軌道に基づいて動作し、部品ＯＢＪを把持する位置にハンド１０８を移動させたり、部品収容容器ＢＯＸや部品ＯＢＪの撮像位置へカメラ部１３０を移動させたりする。
【００２９】  サーボ制御部１５８は、軌道生成部１５６によって生成された軌道に従って、ロボット１１０の各関節１２４を駆動するサーボモータを制御できる。サーボ制御部１５８は、各サーボモータのエンコーダから信号を受け取り、エンコーダの位置フィードバック情報（エンコーダから取得された角度）Ｐｆｂを出力できる。
【００３０】  ハンド制御部１６０は、動作シーケンス部１５４が出力した指令ｃｍｄ２に基づいて、ハンド１０８の把持爪１３４、１３５を駆動するモータを制御し、把持爪１３４、１３５を開閉できる。
【００３１】  キャプチャ部１６２は、動作シーケンス部１５４が撮像トリガｔｒｇを出力したタイミングで、カメラ部１３０から画像を取り込み、ステレオ画像である画像データを作成できる。
【００３２】  位置計算部１６６は、キャプチャ部１６２が作成した画像データに基づいて、カメラ部１３０が撮像した部品収容容器ＢＯＸ又は部品ＯＢＪの３次元位置（以下、単に「位置」という。）をそれぞれ位置Ｐｂｏｘ及び位置Ｐｏｂｊとして計算できる。これら位置Ｐｂｏｘ、Ｐｏｂｊは、エンコーダの位置フィードバック情報Ｐｆｂに基づいて、図１に示したロボット座標系Ｃｒで表される。  詳細には、位置計算部１６６は、図２に示すように、画像処理部（第１の処理部の一例）１６６ａ及び補正位置計算部（第３の処理部の一例）１６６ｂを有している。  画像処理部１６６ａは、部品収容容器ＢＯＸの画像データを処理して部品収容容器ＢＯＸの位置Ｐｂｏｘを補正量計算部１７２に出力できる。  補正位置計算部１６６ｂは、補正量計算部１７２が出力する補正量δに基づいて、部品ＯＢＪの高さ方向の位置に関する情報を補正し、補正した部品ＯＢＪの位置Ｐｏｂｊを動作シーケンス部１５４に出力できる。
【００３３】  ここで一般に、ステレオ画像から得られた画像データに基づいて計算された部品ＯＢＪの位置は、誤差を含んでいる。従って、この位置に基づいてハンド１０８を制御すると、部品ＯＢＪの把持に失敗する場合がある。部品ＯＢＪの位置は、特に高さ方向（カメラ部１３０から撮像対象へ向かう方向）の誤差Ｄｅｒｒ（図５左図参照）が大きい場合がある。
【００３４】  力センサインターフェース部１６８は、力センサ１２６が出力する電気信号を取り込み、力データｆを出力することができる。また、力センサインターフェース部１６８は、力データｆの単位を電気量から物理量に変換する。また、力センサインターフェース部１６８は、エンコーダの位置フィードバック情報Ｐｆｂに基づいて、力データｆをロボット座標系Ｃｒで表す座標変換処理を行う。
【００３５】  接触検出部１７０は、力データｆを予め決められた周期で監視してロボット１１０のハンド１０８が部品収容容器ＢＯＸに接触したことを検出できる。また、接触検出部１７０は、接触した際のロボット１１０の位置に基づいて、ハンド１０８と部品収容容器ＢＯＸとの接触位置Ｐｃｎｔを計算できる。接触位置Ｐｃｎｔは、補正量計算部１７２に出力される。検出処理部１７０は、動作シーケンス部１５４が出力した指令ｃｍｄ３に基づいて動作を開始する。
【００３６】  補正量計算部１７２は、位置計算部１６６の画像処理部１６６ａが計算した部品収容容器ＢＯＸの位置Ｐｂｏｘと、ハンド１０８と部品収容容器ＢＯＸとの現実の接触位置Ｐｃｎｔとの高さ方向の位置に関する差を補正量δとして計算できる。この補正量δは、位置計算部１６６に出力される。
【００３７】  次に、ロボットシステム１００の動作（ロボットの制御方法）について説明する。  ロボットシステム１００は、図３に示すように、補正量計算処理（図４に示すステップＳ１０１〜ステップＳ１０７）を実行した後、部品把持動作（ステップＳ１０８〜ステップＳ１１４）を実行する。以下、ステップ毎に説明する。（ステップＳ１０１）  図４に示すように、ロボット制御装置１２０の動作シーケンス部１５４が記憶部１５２から動作プログラムを読み出す。
【００３８】（ステップＳ１０２）  動作シーケンス部１５４が、カメラ部１３０を部品収容容器ＢＯＸの撮像位置へ移動させる命令に基づいて、指令ｃｍｄ１を出力する。  軌道生成部１５６が、カメラ部１３０を部品収容容器ＢＯＸの撮像位置へ移動させる軌道を生成する。  サーボ制御部１５８は、生成された軌道に基づいて、ロボット１１０を制御する。その結果、図５の左図に示すように、ロボット１１０のカメラ部１３０は、部品収容容器ＢＯＸを撮像する位置に位置決めされる。
【００３９】（ステップＳ１０３）  動作シーケンス部１５４が、撮像トリガｔｒｇを出力する。  キャプチャ部１６２は、この撮像トリガｔｒｇが入力されると、カメラ部１３０を制御し、部品収容容器ＢＯＸのステレオ画像を撮像する。キャプチャ部１６２は、撮像されたステレオ画像である画像データを出力する。
【００４０】（ステップＳ１０４）  位置計算部１６６の画像処理部１６６ａ（図２参照）は、キャプチャ部１６２から得られた画像データを画像処理して、部品収容容器ＢＯＸの位置（第１の情報の一例）Ｐｂｏｘを計算する。部品収容容器ＢＯＸの位置Ｐｂｏｘは、補正量計算部１７２に出力される。
【００４１】（ステップＳ１０５）  動作シーケンス部１５４が、ハンド１０８を部品収容容器ＢＯＸに接触させる命令に基づいて、指令ｃｍｄ１を出力する。  軌道生成部１５６が、指令ｃｍｄ１に基づき、例えば部品収容容器ＢＯＸを構成する側面板１１５ａ（図１０参照）の上端面の方向へハンド１０８を移動させる軌道を生成する。  サーボ制御部１５８は、生成された軌道に基づいて、ロボット１１０を制御する。ハンド１０８は、部品収容容器ＢＯＸに向かって下降する。
【００４２】（ステップＳ１０６）  ハンド１０８が下降すると、動作シーケンス部１５４が指令ｃｍｄ３を出力し、接触検出部１７０が力データｆを監視する。  図５の右図に示すように、ハンド１０８の把持爪１３４が部品収容容器ＢＯＸを構成する側面板１１５ａの上端面に接触すると、接触検出部１７０は、力データｆに基づいて、その接触を検出する。
【００４３】  接触検出部１７０は、接触を検出すると、接触検出信号Ｓｄを動作シーケンス部１５４に出力する。  動作シーケンス部１５４は、ハンド１０８の下降を停止させる。即ち、軌道生成部１５６はロボット１１０を減速停止させる軌道を生成する。  サーボ制御部１５８はこの軌道に従ってロボット１１０を制御する。
【００４４】  また、接触検出部１７０は、ハンド１０８が部品収容容器ＢＯＸに接触した際のロボット１１０の各サーボモータの位置フィードバック情報（エンコーダから取得された角度）Ｐｆｂから、ハンド１０８の接触位置（第２の情報の一例）Ｐｃｎｔを計算する。
【００４５】  ハンド１０８の接触位置Ｐｃｎｔは、次の第１の手順及び第２の手順を経て計算される。  第１の手順では、ロボット１１０の各サーボモータの位置フィードバック情報Ｐｆｂが順運動学変換されることにより、ロボット座標系Ｃｒから見たフランジ１３２の位置姿勢が計算される。  第２の手順では、第１の手順で計算されたフランジ１３２の位置姿勢からハンド１０８の先端（制御点）までの位置が加算される。
【００４６】  なお、動作シーケンス部１５４は、第１の方法として、ステップＳ１０５に示したハンド１０８の下降動作の開始と共に本ステップ（接触検出動作）Ｓ１０６を開始できる。  また、動作シーケンス部１５４は、第２の方法として、まず、画像データから得られた部品収容容器ＢＯＸの水平方向位置にハンド１０８を位置決めし、次に、画像データから得られた部品収容容器ＢＯＸの高さ方向位置Ｈ１に基づいて、ハンド１０８を高さ方向位置Ｈ１の上方にある位置Ｈ２へ移動させてから、本ステップ１０６を開始できる。  一般に、本ステップＳ１０６に示した接触検出動作においては、ハンド１０８を低速で移動させる必要があるため、第１の方法よりも第２の方法の方が、処理時間短縮の観点から好ましい。
【００４７】（ステップＳ１０７）  補正量計算部１７２が、ハンド１０８の接触位置Ｐｃｎｔと、ステップＳ１０４にて位置計算部１６６が画像データに基づいて計算した部品収容容器ＢＯＸの位置Ｐｂｏｘとの高さに関する差を計算する。補正量計算部１７２は、この差を画像データに基づく部品ＯＢＪの位置の補正量δとして求める。
【００４８】（ステップＳ１０８）  軌道生成部１５６が、部品収容容器ＢＯＸに入った部品ＯＢＪを撮像するための撮像位置へカメラ部１３０を移動させる軌道を生成する。  サーボ制御部１５８は、生成された軌道に基づいて、ロボット１１０を制御する。その結果、図６の左図に示すように、カメラ部１３０は部品ＯＢＪを撮像する位置に位置決めされる。
【００４９】（ステップＳ１０９）  動作シーケンス部１５４が、撮像トリガｔｒｇを出力する。  キャプチャ部１６２は、この撮像トリガｔｒｇが入力されると、カメラ部１３０を制御し、部品収容容器ＢＯＸに入った部品ＯＢＪのステレオ画像を撮像する。キャプチャ部１６２は、ステレオ画像である画像データを出力する。
【００５０】（ステップＳ１１０）  位置計算部１６６の画像処理部１６６ａ（図２参照）が、記憶部１５２から読み出した部品ＯＢＪのモデルデータ（図１参照）を使って、画像データから部品ＯＢＪを抽出し、画像処理して部品ＯＢＪの位置姿勢を算出する。
【００５１】（ステップＳ１１１）  位置計算部１６６の補正位置計算部１６６ｂが、ステップＳ１０７にて補正量計算部１７２が求めた補正量δを、算出した部品ＯＢＪの高さ方向の位置に加算する。すなわち、補正位置計算部１６６ｂが、カメラ部１３０を用いて求められた部品ＯＢＪの高さ方向の位置に関する情報（部品の位置に関する情報の一例）を補正する。この補正された部品ＯＢＪの位置Ｐｏｂｊは、動作シーケンス部１５４に出力される。
【００５２】（ステップＳ１１２）  動作シーケンス部１５４が、補正された部品ＯＢＪの位置Ｐｏｂｊを、ハンド１０８の移動目標値として設定し、軌道生成部１５６に対して軌道を生成させるための指令ｃｍｄ１を出力する。  軌道生成部１５６が、補正された部品ＯＢＪの位置Ｐｏｂｊの方向へハンド１０８を移動させる軌道を生成する。サーボ制御部１５８は、生成された軌道に基づいて、ロボット１１０を制御する。その結果、図６の右図に示すように、ロボット１１０のハンド１０８は部品ＯＢＪを把持する位置に位置決めされる。
【００５３】（ステップＳ１１３）  動作シーケンス部１５４が、動作プログラムを解析し、把持爪１３４、１３５を閉じる閉命令に基づいて、指令ｃｍｄ２を出力する。ハンド制御部１６０は、指令ｃｍｄ２に基づいて、ハンド１０８の把持爪１３４、１３５を駆動するモータを制御する。その結果、把持爪１３４、１３５が閉じ、ハンド１０８は部品ＯＢＪを把持する。
【００５４】（ステップＳ１１４）  動作シーケンス部１５４が、ハンド１０８を上昇させる命令に基づいて、指令ｃｍｄ１を出力する。  軌道生成部１５６が、動作シーケンス部１５４からの指令ｃｍｄ１に基づいて、ハンド１０８を上昇させる軌道を生成する。  サーボ制御部１５８は、生成された軌道に基づいて、ロボット１１０を制御する。その結果、ロボット１１０はハンド１０８を上方に移動させ、ロボット１１０は部品ＯＢＪを取り出すことができる。
【００５５】  以上説明したように、本実施例に係るロボットシステム１００は、カメラ部１３０にて撮像したステレオ画像から得られた部品ＯＢＪの高さ方向の位置に誤差が含まれていても、部品ＯＢＪを部品収容容器ＢＯＸから取り出すことができる。  また、ロボットシステム１００は、ハンド１０８が把持対象となる部品ＯＢＪではなく、その部品ＯＢＪを収容する部品収容容器ＢＯＸに接触して補正量δを求めるので、ハンド１０８が部品ＯＢＪと接触した際に山積みになった部品ＯＢＪの位置をずらしてしまう可能性が低減される。
【００５６】  なお、本実施例において、ハンド１０８が接触する位置は、部品収容容器ＢＯＸを構成する側面板１１５ａ（図１０参照）の上端面に限定されるものではない。  また、一般に、部品収容容器ＢＯＸの置き場所が変わると、カメラ部１３０から得られる部品ＯＢＪの高さ方向の位置の誤差も変動する。この誤差の変動が許容範囲内に収まっている場合には、図３に示す補正量計算処理（図４に示すステップＳ１０１〜ステップＳ１０７）は、少なくともロボット１１０を教示する際に一度だけ実行されていればよい。
【００５７】＜第２の実施例＞  続いて、本発明の第２の実施例に係るロボットシステム２００について説明する。第１の実施例に係るロボットシステム１００と同一の構成要素及び動作ステップについては、同じ符号を付して詳しい説明を省略する場合がある。  図７に示すロボットシステム２００は、ハンド１０８が部品収容容器ＢＯＸの異なる少なくとも６点に接触することにより、部品収容容器ＢＯＸの位置だけでなく姿勢についても計算する手順を実行する。
【００５８】  位置計算部２６６は、キャプチャ部１６２が作成した画像データに基づいて、カメラ部１３０が撮像した部品収容容器ＢＯＸ又は部品ＯＢＪの３次元の位置姿勢（以下、単に「位置姿勢」という。）をそれぞれ位置姿勢ＰＡｂｏｘ及び位置姿勢Ｐｏｂｊとして計算できる。これら位置姿勢ＰＡｂｏｘ、ＰＡｏｂｊは、エンコーダの位置フィードバック情報Ｐｆｂに基づいて、図１に示したロボット座標系Ｃｒで表される。  詳細には、位置計算部２６６は、図８に示すように、画像処理部（第１の処理部の一例）２６６ａ及び補正位置計算部（第３の処理部の一例）２６６ｂを有している。  画像処理部２６６ａは、部品収容容器ＢＯＸの画像データを処理して部品収容容器ＢＯＸの位置姿勢ＰＡｂｏｘを補正量計算部２７２に出力できる。  補正位置計算部２６６ｂは、補正量計算部２７２が出力する同次変換行列ＦＴＣに基づいて、部品ＯＢＪの位置姿勢に関する情報を補正し、補正した部品ＯＢＪの位置姿勢ＰＡｏｂｊを動作シーケンス部１５４に出力できる。
【００５９】  接触検出部２７０は、ハンドの異なる６点の接触位置から、部品収容容器ＢＯＸの位置姿勢ＰＡｃｎｔを求めることができる。
【００６０】  補正量計算部２７２（第２の処理部の一例）は、画像データに基づいて計算した部品収容容器ＢＯＸの位置姿勢ＰＡｂｏｘとハンドを接触させて求めた部品収容容器ＢＯＸの位置姿勢ＰＡｃｎｔとに基づいて、ロボット１１０のフランジ１３２に固定されたフランジ座標系Ｃｆから見たカメラ部１３０の位置姿勢を表すための同次変換行列ＦＴＣを計算できる。
【００６１】  次に、ロボットシステム２００の動作（ロボットの制御方法）について説明する。  ロボットシステム２００は、図３に示すように、補正量計算処理（図９に示すステップＳ２０１〜ステップＳ２０９）を実行した後、部品把持動作（図４に示したステップＳ１０８〜ステップＳ１１４に対応するステップ）を実行する。以下、補正量計算処理についてのみ、ステップ毎に説明する。
【００６２】（ステップＳ２０１）  図９に示すように、ロボット制御装置２２０の動作シーケンス部１５４が記憶部１５２から動作プログラムを読み出す。
【００６３】（ステップＳ２０２）  動作シーケンス部１５４が、カメラ部１３０を部品収容容器ＢＯＸの撮像位置へ移動させる命令に基づいて、指令ｃｍｄ１を出力する。  軌道生成部１５６が、カメラ部１３０を部品収容容器ＢＯＸの撮像位置へ移動させる軌道を生成する。  サーボ制御部１５８は、生成された軌道に基づいて、ロボット１１０を制御する。その結果、図５の左図に示すように、ロボット１１０のカメラ部１３０は、部品収容容器ＢＯＸを撮像する位置に位置決めされる。
【００６４】（ステップＳ２０３）  動作シーケンス部１５４が、撮像トリガｔｒｇを出力する。  キャプチャ部１６２は、この撮像トリガｔｒｇが入力されると、カメラ部１３０を制御し、部品収容容器ＢＯＸのステレオ画像を撮像する。キャプチャ部１６２は、撮像されたステレオ画像である画像データを出力する。
【００６５】（ステップＳ２０４）  位置計算部２６６の画像処理部２６６ａ（図８参照）は、キャプチャ部１６２から得られた画像データを画像処理して、部品収容容器ＢＯＸの位置姿勢（第１の情報の一例）ＰＡｂｏｘを計算する。部品収容容器ＢＯＸの位置姿勢ＰＡｂｏｘは、補正量計算部２７２に出力される。
【００６６】（ステップＳ２０５）  動作シーケンス部１５４が、ハンド１０８を部品収容容器ＢＯＸに接触させる命令に基づいて、指令ｃｍｄ１を出力する。  指令ｃｍｄ１に基づき、軌道生成部１５６が、部品収容容器ＢＯＸの方向へハンド１０８を移動させる軌道を生成する。ハンド１０８の移動目標位置は、例えば、部品収容容器ＢＯＸを構成する側面板の上端面にある点Ｐ１（図１３参照）に設定される。  サーボ制御部１５８は、生成された軌道に基づいて、ロボット１１０を制御する。ハンド１０８は、部品収容容器ＢＯＸに向かって移動する。
【００６７】（ステップＳ２０６）  ハンド１０８が移動すると、動作シーケンス部１５４が指令ｃｍｄ３を出力し、接触検出部２７０が、力データｆを監視する。  図５の右図に示すように、ハンド１０８の把持爪１３４が部品収容容器ＢＯＸに接触すると、接触検出部２７０は、力データｆに基づいて、その接触を検出する。
【００６８】  接触検出部２７０は、接触を検出すると、接触検出信号Ｓｄを動作シーケンス部１５４に出力する。動作シーケンス部１５４は、ハンド１０８の移動を停止させる。即ち、軌道生成部１５６はロボット１１０を減速停止させる軌道を生成し、サーボ制御部１５８はこの軌道に従ってロボット１１０を制御する。
【００６９】  また、接触検出部２７０は、ハンド１０８が部品収容容器ＢＯＸに接触した際の、各サーボモータの位置フィードバック情報Ｐｆｂから、ロボット座標系Ｃｒにおけるハンドの接触位置を計算する。
【００７０】  ハンド１０８の接触位置は、次の第１の手順及び第２の手順を経て計算される。  第１の手順では、ロボット１１０の各サーボモータの位置フィードバック情報Ｐｆｂが順運動学変換されることにより、ロボット座標系Ｃｒから見たフランジ１３２の位置姿勢が計算される。  第２の手順では、第１の手順で計算されたフランジ１３２の位置姿勢からハンド１０８の先端（制御点）までの位置姿勢が加算される。
【００７１】（ステップＳ２０７）  接触検出部２７０が、部品収容容器ＢＯＸに固定され、部品収容容器ＢＯＸの角点Ｐｃｃ（図１１参照）を原点とする容器座標系Ｃｂの位置姿勢を求めるために、例えば図１３に示す少なくとも６つの異なるハンド１０８の接触位置Ｐ１〜Ｐ６が取得されたか否かを判断する。  なお、ロボットは、図１２に示すように、ハンド１０８の例えば把持爪１３４の決まった角点Ｐｈｃ（ハンドの予め決められた部位の一例）で部品収容容器ＢＯＸに接触する。  接触位置が合計６点取得されていない場合は、ステップＳ２０５及びステップＳ２０６に戻り、部品収容容器ＢＯＸの異なる位置にハンドを接触させる  一方、接触位置が合計６点取得された場合は、次のステップＳ２０８へ進む。
【００７２】（ステップＳ２０８）  取得された合計６点の接触位置（図１３参照）Ｐ１〜Ｐ６の座標から前述の容器座標系Ｃｂの位置姿勢を計算し、ハンド１０８を接触させて求めた部品収容容器ＢＯＸの位置姿勢（第２の情報の一例）ＰＡｃｎｔとする。  容器座標系Ｃｂの計算方法の例については後述する。
【００７３】（ステップＳ２０９）  補正量計算部２７２が、ハンド１０８を接触させて求めた部品収容容器ＢＯＸの位置姿勢ＰＡｃｎｔと、ステップＳ２０４にて位置計算部２６６が画像データに基づいて計算した部品収容容器ＢＯＸの位置姿勢ＰＡｂｏｘとに基づいて、ロボット１１０のフランジ１３２に固定されたフランジ座標系Ｃｆから見たカメラ部１３０の位置姿勢を表すための同次変換行列ＦＴＣを計算する。この同次変換行列ＦＴＣが、補正量計算処理結果となる。
【００７４】  ここで、ロボット１１０のフランジ１３２から見たカメラ部１３０の位置姿勢の計算方法（同次変換行列ＦＴＣの計算方法）について説明する。  図１４に示すように、ロボット座標系Ｃｒから見たフランジ座標系（フランジ１３２に固定された座標系）Ｃｆを同次変換行列ＲＴＦ、フランジ座標系Ｃｆから見たカメラ座標系（カメラ部１３０に固定された座標系）Ｃｃを同次変換行列ＦＴＣ、カメラ座標系Ｃｃから見た容器座標系（部品収容容器ＢＯＸに固定された座標系）Ｃｂを同次変換行列ＣＴＢにより表すと、これらの行列の積ＲＴＢは次の式で表される。
【００７５】ＲＴＢ  ＝  ＲＴＦ・ＦＴＣ・ＣＴＢ      式（１）
【００７６】  この行列ＲＴＢは、カメラ部１３０を用いて計算した部品収容容器ＢＯＸの位置姿勢ＰＡｂｏｘを、ロボット座標系Ｃｒから見た位置姿勢に変換する行列である。  なお、図１４及び図１５に示すロボット１１０は、各座標系と同次変換行列との関係を示すために、模式的に描かれている。そのため、カメラ部１３０は、フランジ１３２に固定されている。カメラ部１３０は、図７に示すように、ハンド１０８の基部１３３に固定されていてもよい。
【００７７】  ハンド１０８が部品収容容器ＢＯＸに接触することによって計算された部品収容容器ＢＯＸの位置姿勢ＰＡｃｎｔを図１５に示す行列RＴtとし、この行列RＴtが式（１）で求まる行列RＴBに等しいとして、同次変換行列FＴCについて解くと、次式（２）が得られる。
【００７８】ＦＴＣ  ＝  （ＲＴＦ）−１・ＲＴｔ・（ＣＴＢ）−１      式（２）
【００７９】  式（２）中、右肩の添字（−１）は括弧の行列の逆行列を表す。この同次変換行列ＦＴＣが、補正量計算処理結果である。  すなわち、同次変換行列ＲＴＦ、同次変換行列ＲＴｔ、同次変換行列ＣＴＢをそれぞれ求めれば、フランジ座標系Ｃｆから見たカメラ部１３０の位置姿勢（同次変換行列ＦＴＣ）が決まる。  ここで、同次変換行列ＲＴＦは、ステップＳ２０２における、カメラ部１３０で部品収容容器ＢＯＸを撮像した際のロボット座標系Ｃｒから見たフランジ１３２の位置姿勢を表す行列である。  同次変換行列ＲＴｔは、ステップＳ２０８にて求めた、ハンド１０８が部品収容容器ＢＯＸに接触することによって計算されたロボット座標系Ｃｒから見た部品収容容器ＢＯＸの位置姿勢ＰＡｃｎｔを表す行列である。  同次変換行列ＣＴＢは、ステップＳ２０４にて求めた、画像データから算出した部品収容容器ＢＯＸの位置姿勢ＰＡｂｏｘを表す行列である。
【００８０】  以降の図３に示す部品把持動作においては、図８に示す位置計算部２６６の補正位置計算部２６６ｂが、同次変換行列ＦＴＣを使い、上式（１）によって、カメラ部１３０の画像データから画像処理部２６６ａが算出した部品ＯＢＪの位置姿勢に関する情報を、ロボット座標系Ｃｒから見た位置姿勢に関する情報に変換する。
【００８１】  次に、前述のステップＳ２０８における容器座標系Ｃｂの位置姿勢の計算方法について詳細に説明する。なお、以下の説明では、ハンド１０８の接触位置Ｐ１〜Ｐ６にある点を、点Ｐ１〜Ｐ６という場合がある。  容器座標系Ｃｂの位置姿勢の計算は、以下の計算ステップＳｃ１〜Ｓｃ３に従って実行される。
【００８２】（計算ステップＳｃ１）  本ステップＳｃ１では、部品収容容器ＢＯＸの側面板１１５ａ、１１５ｂの上端面に位置する３点Ｐ１、Ｐ２、Ｐ３を用い、図１６に示すような、点Ｐ１を原点とする第１の座標系Ｃｂ１を求める。具体的には、以下の手順を実行する。
【００８３】（手順１）  点Ｐ１から点Ｐ２へ向かう単位ベクトルａを次式より求める。
【００８４】ａ  ＝  （Ｐ２−Ｐ１）／｜Ｐ２−Ｐ１｜      式（３）
【００８５】（手順２）  点Ｐ１から点Ｐ３へ向かうベクトルｂ１を次式より求める。
【００８６】ｂ１  ＝  Ｐ３−Ｐ１      式（４）
【００８７】（手順３）  ベクトルｂ１の単位ベクトルａと直角を成す成分であるベクトルｂ２を次式より求める。
【００８８】ｂ２  ＝  ｂ１−（ｂ１・ａ）ａ      式（５）
【００８９】（手順４）  ベクトルｂ２の単位ベクトルｂを次式より求める。
【００９０】ｂ  ＝  ｂ２／｜ｂ２｜      式（６）
【００９１】（手順５）  単位ベクトルａと単位ベクトルｂの外積として次式より単位ベクトルｃを求める。
【００９２】ｃ  ＝  ａ×ｂ      式（７）
【００９３】  求めた単位ベクトルａ、単位ベクトルｂ及び単位ベクトルｃをそれぞれＸ軸、Ｙ軸及びＺ軸とし、原点を点Ｐ１とする座標系を第１の座標系Ｃｂ１と定義する。第１の座標系Ｃｂ１は、ロボット座標系Ｃｒから見た座標系として、次式の同次変換行列ＲＴ１により表される。
【００９４】
【数１】
2013027251.tif 000003
【００９５】  ここで、Ｐ１は、ロボット座標系Ｃｒから見たＰ１の位置ベクトルである。
【００９６】（計算ステップＳｃ２）  本ステップＳｃ２では、図１８に示すように、部品収容容器ＢＯＸの側面板の表面に位置する点Ｐ４及び点Ｐ５を用いてできるベクトルを使って、第１の座標系Ｃｂ１のＸ軸方向（単位ベクトルａ方向）を部品収容容器ＢＯＸの側面方向に合わせる。具体的には、以下の手順を実行する。（手順１）  図１７に示すように、点Ｐ４から点Ｐ５へ向かうベクトルｄ１を次式より求める。
【００９７】ｄ１  ＝  Ｐ５−Ｐ４      式（９）
【００９８】（手順２）  単位ベクトルｃと直角を成すベクトルｄ１の成分であるベクトルｄ２を次式より求める。
【００９９】ｄ２  ＝  ｄ１−（ｄ１・ｃ）ｃ      式（１０）
【０１００】（手順３）  ｄ２の単位ベクトルｄを次式より求める。
【０１０１】ｄ  ＝  ｄ２／｜ｄ２｜      式（１１）
【０１０２】（手順４）  単位ベクトルａと単位ベクトルｄの成す角αを次式より求める。
【０１０３】α  ＝  ｃｏｓ−１（（ａ・ｄ）／（｜ａ｜｜ｄ｜））      式（１２）
【０１０４】（手順５）  第１の座標系Ｃｂ１をＺ軸まわり（単位ベクトルｃまわり）に回転させる回転角度θを次式より求める。
【０１０５】（（ａ×ｄ）・ｃ）  ＞  ０  ならば  θ  ＝  α      式（１３ａ）（（ａ×ｄ）・ｃ）  ＜  ０  ならば  θ  ＝−α      式（１３ｂ）
【０１０６】（手順６）  第１の座標系Ｃｂ１を回転させた座標系を第２の座標系Ｃｂ２と定義する。第２の座標系Ｃｂ２は、ロボット座標系Ｃｒから見た座標系として、次式の同次変換行列ＲＴ２により表される。
【０１０７】
【数２】
2013027251.tif 000004
【０１０８】  ここでＲｚ（θ）はＺ軸まわりの回転を表す次の３×３行列である。
【０１０９】
【数３】
2013027251.tif 000005
【０１１０】（計算ステップＳｃ３）  本ステップＳｃ３では、図１９に示すように、部品収容容器ＢＯＸの側面板１１５ｂ及び側面板１１５ａの表面にそれぞれ位置する点Ｐ４及び点Ｐ６を用いて、第２の座標系Ｃｂ２の原点Ｐ１を部品収容容器ＢＯＸの角点Ｐｃｃに合わせ、容器座標系Ｃｂを求める。具体的には、以下の手順を実行する。
【０１１１】（手順１）  点Ｐ４を第２の座標系Ｃｂ２から見た位置ベクトル２Ｐ４に変換する。
【０１１２】
【数４】
2013027251.tif 000006
【０１１３】  ここで、ＲＰ４は、ロボット座標系Ｃｒから見たＰ４の位置ベクトルである。２Ｐ４ｘ、２Ｐ４ｙ、２Ｐ４ｚは、それぞれ、第２の座標系Ｃｂ２から見た位置ベクトル２Ｐ４のｘ、ｙ、ｚ成分である。
【０１１４】（手順２）  点Ｐ６を第２の座標系Ｃｂ２から見た位置ベクトル２Ｐ６に変換する。
【０１１５】
【数５】
2013027251.tif 000007
【０１１６】  ここで、ＲＰ６は、ロボット座標系Ｃｒから見たＰ６の位置ベクトルである。２Ｐ６ｘ、２Ｐ６ｙ、２Ｐ６ｚは、それぞれ、第２の座標系Ｃｂ２から見た位置ベクトル２Ｐ６のｘ、ｙ、ｚ成分である。
【０１１７】  第２の座標系Ｃｂ２を並進移動させた座標系を容器座標系Ｃｂとする。容器座標系Ｃｂは、ロボット座標系Ｃｒから見た座標系として、次式の同次変換行列ＲＴ３により表される。
【０１１８】
【数６】
2013027251.tif 000008
【０１１９】  ここで、Ｉ３は３×３の単位行列である。
【０１２０】  計算結果のＲＰ３が容器座標系Ｃｂの原点、すなわち部品収容容器ＢＯＸの角点Ｐｃｃの座標である。
【０１２１】  なお、部品収容容器ＢＯＸの外形が理想的な直方体でない場合には、６点ではなく、各面を３点ずつ接触して面を確定し、面どうしが交差する辺に沿って座標系の位置を決定すればよい。
【０１２２】  以上説明したように、本実施例に係るロボットシステム２００は、カメラ部１３０にて撮像したステレオ画像から得られた部品ＯＢＪの位置に誤差が含まれているだけでなく、更にロボット座標系Ｃｒから見たカメラ部１３０の位置姿勢に誤差が含まれていても部品を部品収容容器ＢＯＸから取り出すことができる。  その際、例えば、市松模様や非対称な図形などが描かれた専用のキャリブレーション対象物は不要である。
【０１２３】＜第３の実施例＞  続いて、本発明の第３の実施例に係るロボットシステム３００について説明する。第１及び第２の実施例に係るロボットシステムと同一の構成要素及び動作ステップについては、同じ符号を付して詳しい説明を省略する場合がある。
【０１２４】  ロボットシステム３００のロボット３１０が有するハンド３０８は、図２０に示すように、第１の実施例に係るハンド１０８と比較すると、部品収容容器ＢＯＸに接触する接触検出プローブ（接触検出部材の一例）３８０を更に有している。  基部１３３から延びる接触検出プローブ３８０は、物体に接触すると、接触検出プローブ３８０の長手方向となる第１の方向、第１の方向と交差する第２の方向、並びに第１及び第２の方向に交差する第３の方向のうち、少なくとも１方向に弾性変形することができる。接触検出プローブ３８０は、例えば弾性体により構成される。
【０１２５】  接触検出プローブ３８０の先端部には、図２２の左図に示すように球状の球状部３８２が形成されている。  接触検出プローブ３８０は、部品収容容器ＢＯＸに接触する際に、ハンド３０８又はロボット３１０のリンク１２２ａ〜１２２ｆが部品収容容器ＢＯＸに干渉しないよう、その長さ及び長手方向の向きが設定されている。  接触検出プローブ３８０は、ハンド３０８から取り外すことができるように構成されている。接触検出プローブ３８０は、ロボット３１０の作業性を損なわないよう、使用しない際にはハンド３０８に格納されていてもよい。
【０１２６】  図２０に示すロボット制御装置３２０の接触検出部３７０は、力データｆを予め決められた周期で監視して接触検出プローブ３８０が物体に接触したことを検出できる。また、接触検出部３７０は、接触検出プローブ３８０の先端部の位置及び力データｆを記憶部３７１に記憶できる。
【０１２７】  次に、ロボットシステム３００の動作（ロボットの制御方法）について説明する。第１の実施例に係るロボットシステム１００の動作とは、特に接触検出動作が相違するため、接触検出動作を中心に説明する。  まず、ロボットシステム３００は、図４に示すステップＳ１０１〜Ｓ１０４を実行する。即ち、図２２の左図に示すように、ロボット３１０のカメラ部１３０は部品収容容器ＢＯＸを撮像する位置に位置決めされ、撮像されたステレオ画像に基づいて、部品収容容器ＢＯＸの位置Ｐｂｏｘが補正量計算部１７２に出力される。  その後、ロボット３１０のハンド３０８が部品収容容器ＢＯＸの方向へ移動する（ステップＳ１０５が実行される）と共に、図２１に示す接触検出動作が実行される。接触検出動作は、以下のステップに従って実行される。（ステップＳ３０６ａ）  同図２１に示すように、接触検出部３７０が、力センサインターフェース部１６８が出力する力データｆを監視し、力データｆの値が予め設定された検出閾値ｆｔｈｒを超えているか否かを判断する。  力データｆの値が、検出閾値ｆｔｈｒを超えていない場合は、ステップＳ３０６ｂ及びステップ３０６ｃへ進む。  一方、図２２の右図に示すように、接触検出プローブ３８０が部品収容容器ＢＯＸに接触し、力データｆの値が、検出閾値ｆｔｈｒを超えた場合（図２４に示す時刻ｔ０）は、ステップＳ３０６ｄへ進む。
【０１２８】（ステップＳ３０６ｂ）  接触検出部３７０が、記憶部３７１に力データｆを記憶する。この記憶処理は、記憶部３７１に設けられた第１のリングバッファ領域に力データｆを書き込む（上書きする）ことで実行される。記憶部３７１に記憶される力データｆの一例を図２４に示す。同図の横軸は時刻を示している。右縦軸は力データｆを示している。
【０１２９】（ステップＳ３０６ｃ）  ステップＳ３０６ｂと並行して、接触検出部３７０が、接触検出プローブ３８０の３次元の先端部位置（以下、単に「先端部位置」という場合がある。）Ｐｔｏｐを計算し、計算した先端部位置Ｐｔｏｐを記憶部３７１に記憶する。この記憶処理は、記憶部３７１に設けられた第２のリングバッファ領域に先端部位置Ｐｔｏｐを書き込む（上書きする）ことで実行される。記憶部３７１に記憶される先端部位置Ｐｔｏｐの一例を図２４に示す。なお、同図２４は、先端部位置Ｐｔｏｐの高さ方向の位置についてのみ示している。  先端部位置Ｐｔｏｐは、簡易的に、接触検出プローブ３８０の先端部に形成された球状部３８２の中心位置とすることができる。
【０１３０】  接触検出プローブ３８０の先端部位置Ｐｔｏｐは第１の手順及び第２の手順を経て計算される。  第１の手順では、ロボット３１０の各サーボモータの位置フィードバック情報Ｐｆｂが順運動学変換されることにより、ロボット座標系Ｃｒから見たフランジ１３２の位置姿勢が計算される。  第２の手順では、第１の手順で計算されたフランジ１３２の位置から接触検出プローブ３８０の先端部までの位置が加算される。
【０１３１】  記憶部３７１に記憶される高さ方向の先端部位置Ｐｔｏｐの一例を図２４に示す。同図に示す先端部位置Ｐｔｏｐは、計算上の先端部位置であり、現実の接触検出プローブの先端部位置を示しているものではない。そのため、部品収容容器ＢＯＸに接触した時刻ｔ０以降も、先端部位置Ｐｔｏｐは変化している。
【０１３２】  ところで、前述の接触検出プローブ３８０の先端部位置（接触検出プローブ３８０の先端部に形成された球状部３８２の中心位置）Ｐｔｏｐは、接触検出プローブ３８０が部品収容容器ＢＯＸに接触する実際の接触位置とは異なる。  そこで、より精度良く接触位置を検出するため、球状部３８２の中心位置Ｐｔｃｐに球状部３８２の半径Ｒを加算して、接触検出プローブ３８０の先端部位置Ｐｔｏｐとすることができる。  具体的には、先端部位置Ｐｔｏｐ（Ｒ［ｘｔｏｐ  ｙｔｏｐ  ｚｔｏｐ］）は、接触検出プローブ３８０のアプローチ方向に応じて、次のケース１〜６に従って計算される。
【０１３３】（ケース１）Ｘ軸の負方向から正方向へアプローチした場合Ｒ［ｘｔｏｐ  ｙｔｏｐ  ｚｔｏｐ］＝  Ｒ［ｘｔｃｐ  ｙｔｃｐ  ｚｔｃｐ］＋［Ｒ  ０  ０］      式（１９ａ）（ケース２）Ｘ軸の正方向から負方向へアプローチした場合Ｒ［ｘｔｏｐ  ｙｔｏｐ  ｚｔｏｐ］＝  Ｒ［ｘｔｃｐ  ｙｔｃｐ  ｚｔｃｐ］＋［−Ｒ  ０  ０］      式（１９ｂ）
【０１３４】（ケース３）Ｙ軸の負方向から正方向へアプローチした場合Ｒ［ｘｔｏｐ  ｙｔｏｐ  ｚｔｏｐ］＝  Ｒ［ｘｔｃｐ  ｙｔｃｐ  ｚｔｃｐ］＋［０  Ｒ  ０］      式（１９ｃ）（ケース４）Ｙ軸の正方向から負方向へアプローチした場合Ｒ［ｘｔｏｐ  ｙｔｏｐ  ｚｔｏｐ］＝  Ｒ［ｘｔｃｐ  ｙｔｃｐ  ｚｔｃｐ］＋［０  −Ｒ  ０］      式（１９ｄ）
【０１３５】（ケース５）Ｚ軸の負方向から正方向へアプローチした場合Ｒ［ｘｔｏｐ  ｙｔｏｐ  ｚｔｏｐ］＝  Ｒ［ｘｔｃｐ  ｙｔｃｐ  ｚｔｃｐ］＋［０  ０  Ｒ］      式（１９ｅ）（ケース６）Ｚ軸の正方向から負方向へアプローチした場合Ｒ［ｘｔｏｐ  ｙｔｏｐ  ｚｔｏｐ］＝  Ｒ［ｘｔｃｐ  ｙｔｃｐ  ｚｔｃｐ］＋［０  ０  −Ｒ］      式（１９ｆ）
【０１３６】  上記ケース１〜６に当てはまらない場合には、接触検出プローブ３８０の移動量の多い方向をアプローチ方向として計算できる。この場合、精度に対する影響は少ない。  例えば、アプローチ動作としてＸ軸の負方向から正方向へ２００ミリ、Ｙ軸の正方向から負方向へ１０ミリ移動した場合は、前者の方が後者よりも移動量が多いので、接触検出プローブ３８０の先端部位置Ｐｔｏｐの計算は、ケース１（Ｘ軸の負方向から正方向へアプローチした場合）に示した式（１９ａ）に従う。
【０１３７】（ステップＳ３０６ｄ）  接触検出部３７０が、接触検出信号Ｓｄを動作シーケンス部１５４へ送信する。  動作シーケンス部１５４は、ロボット３１０を減速停止させる。即ち、軌道生成部１５６はロボット３１０を減速停止させる軌道を生成する。  サーボ制御部１５８は、この軌道に従ってロボット３１０を制御する。（図２５の時刻ｔ１〜時刻ｔ２参照）。
【０１３８】（ステップＳ３０６ｅ）  接触検出部３７０が、記憶部３７１に記憶した力データｆから、接触検出プローブ３８０が部品収容容器ＢＯＸに接触した時刻ｔ０を求める。  この時刻ｔ０は、図２４に示すように、力データｆの時間経過に対する変化率が予め設定された大きさ以上に変化する時刻（力データｆが大きく立ち上がる時刻）である。
【０１３９】（ステップＳ３０６ｆ）  接触検出部３７０が、時刻ｔ０における接触検出プローブ３８０の先端部位置Ｐｔｏｐを接触位置Ｐｃｎｔとして算出する。
【０１４０】  続いてロボットシステム３００は、図４に示したステップＳ１０７〜Ｓ１１４を実行する。即ち、図２３の左図に示すように、ロボットシステム３００は、ロボット３１０のカメラ部１３０を部品ＯＢＪの撮像位置に位置決めした後、ロボット３１０のハンド３０８を、図２３の右図に示すように、部品ＯＢＪを把持する位置に位置決めする。ハンド３０８が位置決めされると、ロボット３１０は部品ＯＢＪを取り出すことができる。
【０１４１】  以上説明したように、本実施例に係るロボットシステム３００は、弾性を有する接触検出プローブ３８０を用いて部品収容容器ＢＯＸに接触するので、ハンド３０８の把持爪１３４を用いて部品収容容器ＢＯＸに接触する場合よりも、部品収容容器ＢＯＸに接触するまでの速度を高速にすることができる。その結果、補正量計算処理に要する時間をより短縮できる。  なお、本実施例に係るハンドは第２の実施例に示したロボット制御方法に用いることも可能である。
【０１４２】＜第４の実施例＞  続いて、本発明の第４の実施例に係るロボットシステムについて説明する。第１〜第３の実施例に係るロボットシステム１００、２００、３００と同一の構成要素及び動作ステップについては、同じ符号を付して詳しい説明を省略する場合がある。  本実施例に係るロボットシステムは、第３の実施例に係るロボットシステム３００と比較すると、ロボットの把持爪が相違する。
【０１４３】  本実施例に係るロボットシステムのロボットが有するハンド４０８は、図２６に示すように、力センサ１２６に取り付けられる基部４１０と、基部４１０から先端方向に延びる１対の把持爪４３４、４３５を有している。
【０１４４】  １対の把持爪４３４、４３５のうち、一方の把持爪４３４は、固定部４５０と、コイルコイルばね４５２と、把持部４５４とを有している。また、把持爪４３４は、スライダ機構（進退機構の一例）４４０と、ピン４４２とを有している。
【０１４５】  固定部４５０は、基部４１０の先端側に設けられている。固定部４５０の内部には、スライダ機構４４０が納められている。
【０１４６】  コイルばね４５２は、一方の端部が固定部４５０に固定されている。
【０１４７】  把持部４５４は、コイルばね４５２の他方の端部に固定されている。把持部４５４は、部品ＯＢＪに接触して他方の把持爪４３５とともに部品ＯＢＪを把持できる。把持部４５４の固定部４５０に対向する面には、穴Ｈが形成されている。
【０１４８】  スライダ機構４４０は、前述の通り、固定部４５０の内部に設けられている。スライダ機構４４０は、ピン４４２を先端方向に進退させることができる。  ピン４４２は、コイルばね４５２の内側に配置される。ピン４４２は、スライダ機構４４０によって駆動され、図２６及び図２７に示すように、先端方向及びその反対方向に進退できる。ピン４４２は、例えば丸棒状の部材である。ピン４４２の先端部は、先端方向に向かうに従って、径が徐々に細くなっている。この先端部は、把持部４５４に形成された穴Ｈに嵌るように、穴Ｈの形状に対応した形状となっている。先端部の形状は任意でよく、穴Ｈに嵌ればよい。  固定部４５０、コイルばね４５２、把持部４５４、ピン４４２及びスライダ機構４４０によって、剛性変更機構の一例が構成される。
【０１４９】  図２６に示すように、スライダ機構４４０によって駆動されるピン４４２が後退している場合には、把持部４５４は、コイルばね４５２を介して固定部４５０に固定された状態となっている。  一方、図２７に示すように、スライダ機構４４０によって駆動されるピン４４２が進出している場合には、ピン４４２が穴Ｈに嵌り、把持部４５４は、コイルばね４５２及びピン４４２を介して固定部４５０に固定された状態となっている。  従って、ピン４４２が進出している場合には、後退している場合に比べて、把持爪４３４の剛性が高くなるので、ピン４４２の進退に応じて、把持爪４３４の剛性が変化する。
【０１５０】  ロボット制御装置が有するハンド制御部１６０は、図１に示すように、動作シーケンス部１５４が出力した指令ｃｍｄ２に基づいて、ハンド４０８の把持爪４３４、４３５を駆動するモータ（不図示）を制御し、把持爪４３４、４３５を開閉できる。また、ハンド制御部は、動作シーケンス部１５４が出力した指令ｃｍｄ２に基づいて、スライダ機構４４０の動作を制御できる。
【０１５１】  次に、ロボットシステムの動作（ロボットの制御方法）について説明する。  まず、ロボットシステムは、図４に示すステップＳ１０１〜Ｓ１０４を実行する。即ち、図２８の左図に示すように、ロボットのカメラ部１３０が、部品収容容器ＢＯＸを撮像する位置に位置決めされ、撮像されたステレオ画像に基づいて、部品収容容器ＢＯＸの位置Ｐｂｏｘが補正量計算部１７２に出力される。  次に、ロボットシステムは、以下の動作を実行する。
【０１５２】（ステップＳ４０５ａ）  ハンド制御部１６０が、動作シーケンス部１５４の指令ｃｍｄ２に基づき、スライダ機構４４０を動作させ、ピン４４２を後退させる。その結果、把持爪４３４の剛性が低くなる。（ステップＳ４０５ｂ）  動作シーケンス部１５４が、ハンド４０８を部品収容容器ＢＯＸに接触させる命令に基づいて、指令ｃｍｄ１を出力する。  軌道生成部１５６が、指令ｃｍｄ１に基づき、例えば部品収容容器ＢＯＸを構成する側面板１１５ａ（図１０参照）の上端面に接触する方向へハンド４０８を移動させる軌道を生成する。  サーボ制御部１５８は、生成された軌道に基づいて、ロボットを制御する。ハンド４０８は、部品収容容器ＢＯＸに向かって移動する。
【０１５３】  ロボットのハンド４０８が部品収容容器ＢＯＸの方向へ移動すると共に、接触検出動作が実行される。接触検出動作は、以下のステップに従って実行される。なお、この接触検出動作は、第３の実施例にて示した接触検出動作と実質的に同一である。（ステップＳ４０６ａ）  接触検出部３７０が、力センサインターフェース部１６８が出力する力データｆを監視し、力データｆの値が予め設定された検出閾値ｆｔｈｒを超えているか否かを判断する。  力データｆの値が、検出閾値ｆｔｈｒを超えていない場合は、後述するステップＳ４０６ｂへ進む。  一方、図２８の右図に示すように、把持爪４３４が部品収容容器ＢＯＸに接触し、力データｆの値が、検出閾値ｆｔｈｒを超えた場合は、後述するステップＳ４０６ｄへ進む。
【０１５４】（ステップＳ４０６ｂ）  接触検出部３７０が、記憶部３７１に力データｆを記憶する。この記憶処理は、記憶部３７１に設けられた第１のリングバッファ領域に力データを書き込む（上書きする）ことで実行される。
【０１５５】（ステップＳ４０６ｃ）  ステップＳ４０６ｂと並行して、接触検出部３７０が、把持爪４３４の先端部位置を計算し、計算した把持爪４３４の先端部位置を記憶部３７１に記憶する。この記憶処理は、記憶部３７１に設けられた第２のリングバッファ領域に把持爪４３４の先端部位置を書き込む（上書きする）ことで実行される。
【０１５６】  把持爪４３４の先端部位置は第１の手順及び第２の手順を経て計算される。  第１の手順では、ロボットの各サーボモータの位置フィードバック情報Ｐｆｂが順運動学変換されることにより、ロボット座標系Ｃｒから見たフランジ１３２の位置姿勢が計算される。  第２の手順では、第１の手順で計算されたフランジ１３２の位置から把持爪４３４の先端部までの位置が加算される。
【０１５７】（ステップＳ４０６ｄ）  接触検出部３７０が、接触検出信号Ｓｄを動作シーケンス部１５４へ送信する。  動作シーケンス部１５４は、ロボットを減速停止させる。即ち、軌道生成部１５６はロボットを減速停止させる軌道を生成する。  サーボ制御部１５８は、この軌道に従ってロボットを制御する。
【０１５８】（ステップＳ４０６ｅ）  接触検出部３７０が、記憶部３７１に記憶した力データｆから、把持爪４３４が部品収容容器ＢＯＸに接触した時刻ｔ０を求める。  この時刻ｔ０は、力データｆの時間経過に対する変化率が予め設定された大きさ以上変化する時刻である。
【０１５９】（ステップＳ４０６ｆ）  接触検出部３７０が、時刻ｔ０における把持爪４３４の先端部位置を接触位置Ｐｃｎｔとして算出する。
【０１６０】  続いてロボットシステムは、図４に示したステップＳ１０７〜Ｓ１１２を実行する。即ち、図２９の左図に示すように、ロボットのカメラ部１３０が部品ＯＢＪを撮像する位置に位置決めされた後、ロボットのハンド４０８は、図２９の右図に示すように、部品ＯＢＪを把持する位置に位置決めされる。  ロボットシステムは、更に次のステップを実行する。
【０１６１】（ステップＳ４１３ａ）  動作シーケンス部１５４の指令ｃｍｄ２に基づき、ハンド制御部は、スライダ機構４４０を動作させ、ピン４４２を進出させる。その結果、把持爪４３４の剛性が高くなる。
【０１６２】（ステップＳ４１３ｂ）  動作シーケンス部１５４が、動作プログラムを解析し、把持爪４３４、４３５を閉じる閉命令に基づいて、指令ｃｍｄ２を出力する。ハンド制御部１６０は、指令ｃｍｄ２に基づいて、ハンド４０８の把持爪４３４、４３５を駆動するモータを制御する。その結果、把持爪４３４、４３５が閉じ、ハンド４０８は部品ＯＢＪを把持する。
【０１６３】（ステップＳ４１４）  動作シーケンス部１５４が、ハンド４０８を上昇させる命令に基づいて、指令ｃｍｄ１を出力する。  軌道生成部１５６が、動作シーケンス部１５４からの指令ｃｍｄ１に基づいて、ハンド４０８を上昇させる軌道を生成する。  サーボ制御部１５８は、生成された軌道に基づいて、ロボットを制御する。その結果、ロボットはハンド４０８を上方に移動させ、ロボットは部品ＯＢＪを取り出すことができる。
【０１６４】  剛性変更機構の他の例として、電磁石、エア、ＥＲ流体又はＭＲ流体を用いて把持部４５４と固定部４５０と間に吸引力を発生させ、この吸引力の強さを変更することによって、把持爪の剛性を変更する機構が挙げられる。  なお、本実施例に係るハンドは第２の実施例に示したロボット制御方法に用いることも可能である。
【０１６５】  本発明は、前述の実施例に限定されるものではなく、本発明の要旨を変更しない範囲での変更は可能である。例えば、前述の実施例や変形例の一部又は全部を組み合わせて発明を構成する場合も本発明の技術的範囲に含まれる。
【符号の説明】
【０１６６】１００：ロボットシステム、１０８：ハンド、１１０：ロボット、１１２：作業台、１１４：底板、１１５ａ〜１１５ｄ：側面板、１２０：ロボット制御装置、１２２ａ〜１１２ｆ：リンク、１２４：関節、１２６：力センサ、１３０：カメラ部、１３２：フランジ、１３３：基部、１３４、１３５：把持爪、１５２：記憶部、１５４：動作シーケンス部、１５６：軌道生成部、１５８：サーボ制御部、１６０：ハンド制御部、１６２：キャプチャ部、１６６：位置計算部、１６６ａ：画像処理部、１６６ｂ：補正位置計算部、１６８：力センサインターフェース部、１７０：接触検出部、１７２：補正量計算部、２００：ロボットシステム、２２０：ロボット制御装置、２６６：位置計算部、２６６ａ：画像処理部、２６６ｂ：補正位置計算部、２７０：接触検出部、２７２補正量計算部、３００：ロボットシステム、３０８：ハンド、３１０：ロボット、３２０：ロボット制御装置、３７０：接触検出部、３７１：記憶部、３８０：接触検出プローブ、３８２：球状部、４０８：ハンド、４１０：基部、４３４、４３５：把持爪、４４０：スライダ機構、４４２：ピン、４５０：固定部、４５２：コイルばね、４５４：把持部、ＢＯＸ：部品収容容器、ＯＢＪ：部品 
【図１】
2013027251.tif 000009
【図２】
2013027251.tif 000010
【図３】
2013027251.tif 000011
【図４】
2013027251.tif 000012
【図５】
2013027251.tif 000013
【図６】
2013027251.tif 000014
【図７】
2013027251.tif 000015
【図８】
2013027251.tif 000016
【図９】
2013027251.tif 000017
【図１０】
2013027251.tif 000018
【図１１】
2013027251.tif 000019
【図１２】
2013027251.tif 000020
【図１３】
2013027251.tif 000021
【図１４】
2013027251.tif 000022
【図１５】
2013027251.tif 000023
【図１６】
2013027251.tif 000024
【図１７】
2013027251.tif 000025
【図１８】
2013027251.tif 000026
【図１９】
2013027251.tif 000027
【図２０】
2013027251.tif 000028
【図２１】
2013027251.tif 000029
【図２２】
2013027251.tif 000030
【図２３】
2013027251.tif 000031
【図２４】
2013027251.tif 000032
【図２５】
2013027251.tif 000033
【図２６】
2013027251.tif 000034
【図２７】
2013027251.tif 000035
【図２８】
2013027251.tif 000036
【図２９】
2013027251.tif 000037
【国際調査報告】
2013027251.tif 000038
2013027251.tif 000039
2013027251.tif 000040
2013027251.tif 000041
2013027251.tif 000042
2013027251.tif 000043
2013027251.tif 000044