以下、図面を参照しながら、実施形態を説明する。
(第1の実施形態)
まず、第1の実施形態で説明する。
本実施形態では、把持部であるエンドエフェクタにかかっている力およびトルクを力覚センサにより計測し、作業空間全体の位置および姿勢の変化をビジョンセンサにより計測する。こうすることで、対象物が周辺物と干渉していても、対象物をマニピュレーション中に発生するロボットの動作の異常を検知することができる。ここで、対象物とは、例えば、トナーカートリッジのような部品である。また、周辺物とは、マニピュレーションがなされる対象物の周辺にある物体である。例えば、山積みされた対象物において、把持対象となっていない対象物や、対象物が入れられた容器などが周辺物の一例である。尚、マニピュレーションとは、例えば、把持、引き抜き、搬送といった一連の動作のことである。また、ロボットの動作の異常とは、ロボットが対象物を決められた通りにマニピュレーションできていないことである。
図1は、ロボットシステムの構成の一例を示す図である。本実施形態では、図1に示す機器を用いて、ロボットの動作の異常を検知する。ただし、図1は、機器の構成の一例であり、本発明の適用範囲を限定するものではない。
ロボット101は、マニピュレータや、ロボットハンドのようなエンドエフェクタなどの機器を有する。ロボット101は、情報処理装置104で決定された行動を実施し、対象物106を操作する。ここで、行動とは、対象物106を操作するためのロボット101の動作のことである。具体的に行動とは、例えば、ロボット101により対象物106を把持したり搬送したりすることである。
撮像装置(ビジョンセンサ)102は、例えば、カメラや、光を検出するセンサ(例えばフォトダイオード)などを有する。撮像装置102は、対象物106と周辺物107の画像情報を取得する。撮像装置102で取得された画像情報は、情報処理装置104にて処理される。尚、画像情報は、動画像であっても、異なるタイミングで撮像された複数の静止画像であってもよい。
光源103は、例えば、プロジェクタを有する。光源103は、可視光を投影したり、レーザー装置を用いて赤外光を投影したりすることにより、対象物106と周辺物107を、均一照明光やパターン光で照明する。あるいは、撮像装置102と光源103を備えて構成されるレーザーレンジファインダ装置を用いてもよい。また、光源103を使わずに、撮像装置102を2つ用いてステレオ計測を行ってもよい。また、対象物106と周辺物107の位置および姿勢を計測するための情報を得ることができれば、光源103を用いずに、撮像装置102を1つだけ用いてもよい。
情報処理装置104は、コンピュータなどの計算機およびハードディスクなどの補助記憶装置を有する。情報処理装置104は、インタフェース機器を介して、ロボット101、撮像装置102、光源103、および力覚センサ105と相互に接続されている。情報処理装置104は、これらの機器と随時通信することができ、これらの機器の動作を制御する。また、情報処理装置104は、対象物106と周辺物107の三次元形状や、ロボット101の作業手順などの情報を保持する。
本実施形態では、情報処理装置104は、力覚センサ105から入力された力覚情報と、撮像装置102から入力された画像情報とに基づいて、ロボット101の動作の異常を検知する。情報処理装置104は、情報処理装置104内に保持している情報と、力覚情報とに基づいて、対象物106を把持できているか否かと、対象物106および周辺物107にどのような力がかかっているかを検知する。
また、情報処理装置104は、情報処理装置104内に保持している情報と、画像情報とに基づいて、対象物106および周辺物107の位置および姿勢を認識する。そして、情報処理装置104は、認識した結果に基づいて、対象物106は把持部と同期した動きをしているか否かと、周辺物107に動きはあるか否かを検知する。
情報処理装置104は、これらの検知によって、マニピュレーション中のロボット101の動作の異常を検知し、異常がある場合にはロボット101の行動の計画を作成し、作成した計画に従って動作することを示す動作命令をロボット101に出力する。
力覚センサ105は、ロボット101のエンドエフェクタの根本に取り付けられている。本実施形態の力覚センサ105は、ひずみゲージや圧電素子を用いて構成され、ロボット101で対象物106を把持しているときのロボット101のエンドエフェクタにかかる力とトルクを計測する6軸力覚センサ(Force/Torqueセンサ)である。力覚センサ105で取得される力覚情報は、情報処理装置104にて処理される。尚、対象物106がロボット101により把持される際、ロボット101のエンドエフェクタの根本の部分(すなわち、力覚センサ105が取り付けられている部分)には、対象物106は接触しない。
対象物106は、マニピュレーションがなされる物体である。対象物106は、例えば、トナーカートリッジであり、ロボット101によって把持され搬送されることが想定されるものである。
周辺物107は、マニピュレーションの処理がなされる対象物106の周辺にある物体である。周辺物107は、例えば、山積みされた対象物106において、把持対象となっていない対象物(対象物となり得る物体)や、対象物106が入れられた容器などである。
図2は、情報処理装置104の機能的な構成の一例を示す図である。図2では、情報処理装置104が有する機能のうち、対象物106をマニピュレーション中のロボット101の動作の異常の検知を実現するための機能を示す。
ロボット101は、行動計画部205からの動作命令に従って動作する。
前述したように撮像装置102は、対象物106および周辺物107を撮影する。対象物106および周辺物107は、光源103で照明されている場合もある。撮像装置102で撮影された画像情報は、画像取得部201で取得される。
情報処理装置104は、後述する画像取得部201〜操作位置決定部210を有するロボット制御装置である。情報処理装置104の構成のうち、異常検知部301により、ロボット101の動作の異常が検知される。
力覚センサ105は、対象物106を把持および搬送している期間(すなわち、対象物106をマニピュレーション中)においてロボット101のエンドエフェクタにかかる力とトルクを力覚情報として計測する。力覚センサ105で計測された力覚情報は、力覚情報取得部207で取得される。
画像取得部201は、撮像装置102で撮影された画像情報を取得する。この画像情報は、位置・姿勢変化計測部202および位置・姿勢計測部209で使われる。画像取得部201は、例えばキャプチャボードやRAM(メモリ)を用いて構成される。
部品データベース(DB)203は、マニピュレーションの対象となる対象物106および周辺物107の部品種と形状の情報を保持する。位置・姿勢変化計測部202および位置・姿勢計測部209は、適宜、部品データベース203の情報を参照する。対象物106および周辺物107の形状の情報とは、例えば、CADデータやCGポリゴンなどのモデルデータである。あるいは、対象物106や周辺物107を多方向から観察した二次元画像の集合から、対象物106および周辺物107の形状の情報が構成されてもよい。
異常検知部301は、位置・姿勢変化計測部202、力・トルク計測部208、および異常判定部204を有する。異常検知部301は、画像取得部201からの画像情報と、力覚情報取得部207からの力覚情報とを入力として、対象物106をマニピュレーション中のロボット101の動作に異常があるか否かを判定し、その判定の結果を行動計画部205に出力する。
位置・姿勢変化計測部202は、画像取得部201で取得した画像情報を入力として、対象物106および周辺物107の位置の変化および姿勢の変化を計測(認識)する。具体的に位置・姿勢変化計測部202は、部品データベース203に蓄積されている対象物106および周辺物107の部品種と形状の情報と、画像情報とに基づいて、対象物106および周辺物107の位置の変化および姿勢の変化を導出する。そして、位置・姿勢変化計測部202は、対象物106および周辺物107の位置の変化および姿勢の変化を示す位置・姿勢変化情報を、異常判定部204へ出力する。
力覚情報取得部207は、力覚センサ105から送られてきた力覚情報を取得する。この力覚情報は、力・トルク計測部208で使われる。力覚情報取得部207は、例えばRAM(メモリ)を用いて構成される。
力・トルク計測部208は、力覚情報取得部207で取得された力覚情報を入力として、対象物106のマニピュレーション中にロボット101のエンドエフェクタにかかる力とトルクを認識する。この認識の結果を示す力・トルク情報は、異常判定部204へ出力される。
異常判定部204は、位置・姿勢変化計測部202からの位置・姿勢変化情報と、力・トルク計測部208からの力・トルク情報とを入力として、対象物106をマニピュレーション中のロボット101の動作に異常が生じているか否かを判定する。この判定の結果は、行動計画部205へ出力される。
位置・姿勢計測部209は、画像取得部201で取得した画像情報を入力として、山積みされた物体のうち、把持すべき対象物106の位置および姿勢を計測(認識)する。具体的に位置・姿勢計測部209は、部品データベース203に蓄積されている対象物106の部品種と形状の情報と、画像情報とに基づいて、対象物106の位置および姿勢を決定する。位置・姿勢計測部209は、対象物106および周辺物107の位置および姿勢を示す位置・姿勢情報を、操作位置決定部210へ出力する。尚、例えば、対象物106の形状が球であるような場合には、対象物106の姿勢の計測(認識)は不要になる。
操作位置決定部210は、位置・姿勢計測部209からの位置・姿勢情報を入力として、対象物106の把持位置およびリリース位置を、対象物106の操作位置として決定する。尚、把持位置とは、ロボット101のエンドエフェクタで対象物106を把持する位置のことである。また、リリース位置とは、ロボット101のエンドエフェクタから、把持している対象物106をリリースする位置のことである。操作位置決定部210で決定された操作位置は、行動計画部205へ出力される。
操作位置決定部210は、ロボット101により対象物106を操作する処理において最初に実行される処理部となり、ロボット101が動作命令に従って動き始めた後に、異常検知部301の処理が実行される。指定された一つの対象物106の処理が終わり、新たな対象物106が操作対象となるときは、再び位置・姿勢計測部209および操作位置決定部210の処理が実行される。
操作データベース(DB)206は、行動計画部205が、対象物106に対するロボット101の行動を計画する際に参照する部品種と作業手順の情報を保持する。行動計画部205は、適宜、操作データベース206の情報を参照する。
行動計画部205は、異常判定部204からの判定の結果と、操作位置決定部210からの操作位置とを入力として、ロボット101の行動を計画する。行動計画部205は、操作データベース206に保持されている部品種と作業手順の情報を参照して、対象物106に対するロボット101の行動を計画する。計画された行動は、動作命令としてロボット101へ出力される。
図3は、ロボットシステムを実現するための情報処理装置104の処理の一例を説明するフローチャートである。以下、図3に従って処理の手順を説明する。
ステップS1000では、本実施形態におけるロボットシステムの初期化が行われる。具体的に、ユーザーがロボットシステムを起動するための操作を行うと、ロボットシステムを実現するためのプログラムは、情報処理装置104にロードされ、図示しないメモリ上に展開されて実行可能な状態となる。また、ロボット101、撮像装置102、および力覚センサ105も、機器パラメータの読み込みや初期位置への復帰などが行われることにより、使用可能な状態となる。
次に、ステップS1100では、画像取得部201は、撮像装置102を用いて対象物106および周辺物107に関する画像情報を取得する。
次に、ステップS1200では、位置・姿勢計測部209は、把持すべき対象物106の位置および姿勢を計測する。図4は、図3のステップS1200の詳細な処理の一例を説明するフローチャートである。以下、ステップS1200に該当するステップS1201からステップS1203の処理の手順を、図4のフローチャートに従って説明する。
ステップS1201では、位置・姿勢計測部209は、対象物106および周辺物107の部品種を判別する。対象物106および周辺物107の部品種を判別するために、例えば、パターンマッチングが行われる。位置・姿勢計測部209は、部品データベース203に蓄積されている対象物106の部品種の情報と、画像取得部201で取得された画像情報とに基づくパターンマッチングを行う事により、対象物106および周辺物107の部品種を判別する。パターンマッチングの方法としては、例えば相関ベースマッチングが挙げられる。位置・姿勢計測部209は、部品データベース203に部品種の情報として蓄積されている複数種類の部品パターンと、画像情報との比較により、画像情報に含まれる対象物106および周辺物107のそれぞれについて、最も類似する部品パターンを推定する。位置・姿勢計測部209は、このようにして対象物106および周辺物107の部品種を決定する。ただし、パターンマッチングは、対象物106および周辺物107の部品種を判別できる手法であれば他の処理でもよい。
ステップS1202では、位置・姿勢計測部209は、ステップS1201で判別された部品種に基づいて、対象物106および周辺物107の位置および姿勢を判別する。対象物106および周辺物107の位置および姿勢を判別するために、例えば、モデルフィッティングが行われる。位置・姿勢計測部209は、例えば、対象物106および周辺物107に均一な照明光が照射された状態で撮像装置102により撮像されて画像取得部201により取得された画像情報から、対象物106および周辺物107のエッジを抽出する。そして、位置・姿勢計測部209は、抽出した対象物106および周辺物107のエッジと、対象物106および周辺物107の形状の情報(CADデータ等)を元にしたエッジモデルとのフィッティング処理を行う。尚、前述したように、対象物106および周辺物107の形状の情報(CADデータ等)は、部品種ごとに部品データベース203に蓄積されているものである。位置・姿勢計測部209は、このフィッティング処理の結果に基づいて、対象物106および周辺物107の位置および姿勢を判別する。
また、位置・姿勢計測部209は、以上のようにせずに、例えば以下のようにして対象物106および周辺物107の位置および姿勢を判別してもよい。まず、位置・姿勢計測部209は、マルチラインのパターン光が照射された状態で撮像装置102により撮像されて画像取得部201により取得された画像情報から、対象物106および周辺物107の表面に投影されたパターンを検出する。そして、位置・姿勢計測部209は、三角測量の原理に基づき、対象物106および周辺物107の表面の各点までの距離を示す距離点群データを導出する。そして、位置・姿勢計測部209は、導出した距離点群データと点群モデルとのフィッティング処理を、IPC(Iterative Closest Point)アルゴリズムを利用して行い、対象物106および周辺物107の位置および姿勢を判別する。
次に、ステップS1203では、位置・姿勢計測部209は、ステップS1202で判別された結果(対象物106および周辺物107の位置および姿勢)に基づいて、対象物106および周辺物107の欠損・欠品判定処理を行う。この欠損・欠品判定処理は、例えば、以下のようにして行われる。位置・姿勢計測部209は、ステップS1202のモデルフィッティングにおいて、画像情報から抽出した対象物106および周辺物107のエッジと、エッジモデルとのマッチング度の評価を部分的に行う。そして、位置・姿勢計測部209は、これらが明らかにマッチしない場合、その部分に欠損・欠品があると判定する。ステップS1203の処理が終わった後、図3のステップS1300へ移行する。
ステップS1300では、操作位置決定部210は、ステップS1200で計測された結果(把持すべき対象物106の位置および姿勢)に基づいて、対象物106の操作位置を決定する。ロボット101のエンドエフェクタの形状を考慮して、目標位置および目標姿勢へ対象物106を操作するための把持位置が決定される。ただし、エンドエフェクタが対象物106を把持する形状でない場合、例えば、エンドエフェクタが吸着などを用いて操作を行うものである場合には、そのエンドエフェクタによる対象物106の吸着位置が操作位置になる。
次に、ステップS1400では、行動計画部205は、ステップS1300で決定された操作位置を実現するためのロボット101の行動計画を決定する。具体的に行動計画部205は、ステップS1300で決定された操作位置を元に、操作データベース206に蓄積されている部品種と作業手順の情報を参照する。計画された動作は、ステップS1500のロボット101の動作を行う際に用いられる。
次に、ステップS1500では、行動計画部205は、ステップS1400で決定された行動計画で動作すること指示する動作命令をロボット101へ出力する。これによりロボット101は、ステップS1400で決定された行動計画に従って動作する。
次に、ステップS1600では、異常検知処理が行われる。図5は、図3のステップS1600の詳細な処理の一例を説明するフローチャートである。以下、ステップS1600に該当するステップS1610からステップS1650の処理の手順を、図5のフローチャートに従って説明する。
ステップS1610では、力覚情報取得部207は、対象物106を把持しているロボット101のエンドエフェクタにかかっている力およびトルクに関する力覚情報を取得する。
次に、ステップS1620では、力・トルク計測部208は、ステップS1610で取得された力覚情報に基づき、第1の導出処理を実行する。第1の導出処理は、力・トルク情報を導出する処理である。力・トルク情報は、対象物106をマニピュレーション中のロボット101のエンドエフェクタにかかる力およびトルクを示す情報である。対象物106を把持して持ち上げたとき、ロボット101のエンドエフェクタには、対象物106の質量の分だけの力がかかり、また、対象物106を把持する姿勢によって、ロボット101のエンドエフェクタにかかるトルクが変化する。力・トルク計測部208は、これらの値を、ひずみゲージや圧電素子を用いた力覚センサ105により検出された値に基づいて計測することにより、対象物106をマニピュレーション中のロボット101のエンドエフェクタにかかる力およびトルクを計測する。
図6は、図5のステップS1620の詳細な処理の一例を説明するフローチャートである。以下、ステップS1620に該当するステップS1621からステップS1622の処理の手順を、図6のフローチャートに従って説明する。
ステップS1621では、力・トルク計測部208は、ロボット101が対象物106を操作しているときにエンドエフェクタにかかる力に基づいて、ロボット101の座標系における鉛直方向の合力を計算する。ロボット101が対象物106を操作しているときにエンドエフェクタにかかる力は、力覚情報から得られる。対象物106を操作するとき、ロボット101には対象物106の質量の分だけ力がかかる。このとき計測される力は、力覚センサ105の座標系のX、Y、Z成分の計測値で求まる。力・トルク計測部208は、これらの成分に基づいて、ロボット101の座標系における鉛直方向の合力を求める。こうすることで、重力加速度の方向においてロボット101にかかっている力が求まり、対象物106を把持できているか否かの判定の際に利用できる。ただし、ロボット101の座標系における鉛直方向の合力は、ロボット101が把持している対象物106の質量が求まるならば、他の方法で計算してもよい。
ステップS1622では、力・トルク計測部208は、ロボット101が対象物106を操作しているときにエンドエフェクタにかかるトルクに基づいて、推定トルクを計算する。ロボット101が対象物106を操作しているときにエンドエフェクタにかかるトルクは、力覚情報から得られる。対象物106を操作するとき、ロボット101には対象物106の慣性モーメントに基づいてトルクがかかる。このとき計測されるトルクは、力覚センサ105の座標系のX、Y、Z成分の各軸の回転方向α、β、γに対して求まる。力・トルク計測部208は、これらの成分の値に基づいて、ロボット101が対象物106を把持する姿勢に応じたトルクを、推定トルクとして計算する。力・トルク計測部208は、例えば、対象物106の位置および姿勢から最も大きなトルクが発生している軸に対するトルクを推定トルクとして計算する。こうすることで、ロボット101にかかっている最大トルクが求まり、対象物106を把持できているか否かの判定の際に利用できる。ただし、推定トルクは、ロボット101にかかっているトルクが求まるならば他の方法で計算してもよい。また、必ずしも、ステップS1621およびステップS1622の両方の処理を行う必要はなく、いずれか一つの処理を行ってもよい。ステップS1622の処理が終わった後、図5のステップS1630へ移行する。
ステップS1630では、画像取得部201は、撮像装置102で撮像された画像情報を取得する。
次に、ステップS1640では、位置・姿勢変化計測部202は、第2の導出処理を実行する。第2の導出処理は、対象物106および周辺物107の位置および姿勢の変化を導出する処理である。図7は、図5のステップS1640の詳細な処理の一例を説明するフローチャートである。以下、ステップS1640に該当するステップS1641からステップS1643の処理の手順を、図7のフローチャートに従って説明する。
ステップS1641では、位置・姿勢変化計測部202は、対象物106および周辺物107の部品種を判別する。対象物106および周辺物107の部品種を判別するために、例えば、パターンマッチングが行われる。位置・姿勢変化計測部202は、部品データベース203に蓄積されている対象物の部品種の情報と、画像取得部201で取得された画像情報とに基づくパターンマッチングを行う事により、対象物106および周辺物107の部品種を判別する。パターンマッチングの方法としては、例えば相関ベースマッチングが挙げられる。この方法は、例えば、ステップS1201の処理で説明したのと同じ方法で実現できるので、ここでは、その詳細な説明を省略する。なお、パターンマッチングは、対象物106および周辺物107の部品種を判別できる手法であれば他の処理でもよい。
次に、ステップS1642では、位置・姿勢変化計測部202は、ステップS1641で判別された結果(対象物106および周辺物107の部品種)に基づいて、対象物106および周辺物107の位置および姿勢を判別する。対象物106および周辺物107の位置および姿勢を判別するために、例えば、モデルフィッティングが行われる。この方法は、例えば、ステップS1202の処理で説明したのと同じ方法で実現できるので、ここでは、その詳細な説明を省略する。
次に、ステップS1643では、位置・姿勢変化計測部202は、ステップS1642で判別された結果(対象物106および周辺物107の位置および姿勢)に基づいて、対象物106および周辺物107の位置・姿勢変化判定処理が行われる。この位置・姿勢変化判定処理は、例えば、以下のようにして行われる。位置・姿勢変化計測部202は、ステップS1642で導出した距離点群データの特徴量を、前回のサンプリング時の距離点群データと比較して、その変化を調べることによって、対象物106および周辺物107の位置および姿勢の変化を判定する。また、このようにせずに、位置・姿勢変化計測部202は、対象物106および周辺物107が含まれる作業空間全体のオプティカルフローを導出し、対象物106および周辺物107の動きベクトルを検出してもよい。ただし、対象物106および周辺物107の位置および姿勢の変化を判定できれば、位置・姿勢変化判定処理は、他の処理でもよい。ステップS1643の処理が終わった後、図5のステップS1650へ移行する。
ステップS1650では、異常判定部204は、ステップS1620で導出された力・トルク情報と、ステップS1640で導出された対象物106および周辺物107の位置および姿勢の変化とに基づいて、異常判定を行う。異常判定部204では、力覚センサ105および撮像装置102(ビジョンセンサ)からの複数の情報を入力として、ロボット101の動作の異常の度合いの判定結果を出力とする。図8は、図5のステップS1650の詳細な処理の一例を説明するフローチャートである。以下、ステップS1650に該当するステップS1651からステップS1654の処理の手順を、図8のフローチャートに従って説明する。
ステップS1651では、異常判定部204は、ステップS1620で導出された力・トルク情報に示される力およびトルクが、予め設定された範囲のうち、どの範囲にあるのかを判定する。例えば、異常判定部204は、ステップS1620で導出された力・トルク情報に示される力およびトルクが、対象物106の把持あるいは搬送に必要な範囲内であるか否かを判定する。また、異常判定部204は、ステップS1620で導出された力・トルク情報に示される力およびトルクが、対象物106の把持あるいは搬送に必要な範囲外でも対象物106および周辺物107を破損しない範囲内であるか否かを判定する。
この把持あるいは搬送に必要な範囲となる値や、対象物106および周辺物107を破損しない範囲の値といったパラメータは、例えば、設計者が以下のようにして予め設定する。まず、対象物106の質量がM[g]であり、そのばらつきが±m[g]であるとする。この場合、対象物106の質量をM±m[g]と設定する。したがって、重力加速度をg[m/s2]とすれば、対象物106の操作に必要な力の値を(M±m)×g[N]と設定できる。そのため、このステップS1621で計算された、ロボット101の座標系における鉛直方向の合力がこの設定値の範囲内ならば、適切な力がロボット101に印加されているものと考えられる。この設定値は予め設計者が決めておくことができる。また、この設定値として、対象物106に対応するような値を予め設定しておいてもよい。さらに、この設定値は、対象物106の操作に必要な値を設定できれば他の方法で設定してもよい。異常判定部204は、このような設定値を用いて、ステップS1620で導出された力・トルク情報に示される力・トルクがどの範囲にあるかを判定する。
次に、ステップS1652では、異常判定部204は、対象物106の動きがロボット101のエンドエフェクタ(把持部)の動きと同期しているか否かを判定する。対象物106の動きは、例えば、ステップS1640の計測の結果(対象物106の位置および姿勢の変化)に基づいて導出される。ロボット101のエンドエフェクタ(把持部)の動きは、例えば、ロボット101のエンドエフェクタの先端部分の位置および姿勢の情報と、ロボット101の関節の角度の情報とに基づいて、順運動学を用いた計算を行うことによって導出される。異常判定部204は、これら2つ(ロボット101のエンドエフェクタおよび対象物106)の位置および姿勢の変化の情報を比較することによって、対象物106の動きと、ロボット101のエンドエフェクタ(把持部)の動きと同期の有無を判定する。この判定を行うことによって、対象物106がロボット101によってどの程度正確に操作されているかを判定できるというメリットがある。
次に、ステップS1653では、異常判定部204は、ステップS1640の計測の結果(対象物106の位置および姿勢の変化)に基づいて、周辺物107の動きの有無を判定する。この判定を行うことによって、周辺物107がロボット101による対象物106の操作の影響を受けているかどうかを判定できるというメリットがある。
次に、ステップS1654では、異常判定部204は、ステップS1651からステップS1653の判定の結果に基づいて、異常判定処理を行う。
図9は、異常判定処理の内容の一例を表形式で示す図である。以下、図9を参照しながら、異常判定処理の一例を説明する。
まず、異常判定部204は、ステップS1620で導出された力・トルク情報に示される力およびトルクが、図9の「A.対象物を把持するのに必要な把持力の最低値以上」に該当するか否かを判定する。また、異常判定部204は、ステップS1620で導出された力・トルク情報に示される力およびトルクが、図9の「B.対象物が破損しない範囲の値以下」に該当するか否かを判定する。この判定は、図8のステップS1651の力およびトルクの判定の結果に従って行われる。
次に、異常判定部204は、「a.対象物の動きは把持部と同期している」に該当するか否かと「b.周辺物の動きがある」に該当するか否かを判定する。この判定は、図8のステップS1652およびステップS1653の判定の結果に従って行われる。
図9では、該当する場合を「Yes」と表記し、該当しない場合を「No」と表記する。例えば、「A.対象物を把持するのに必要な把持力の最低値以上」、「B.対象物が破損しない範囲の値以下」、「a.対象物の動きは把持部と同期している」および「b.周辺物の動きがある」の全てに該当する場合には、ケース2に分類される。
このような判定によって、マニピュレーション中の状態が、ケース1〜6の何れかのケースに分類される。尚、前記把持力は、エンドエフェクタによる対象物106の保持力である。例えば、エンドエフェクタが対象物106を吸着するものである場合には、前記把持力は吸着力に置き換えられる。
以下、それぞれのケースに対する異常判定処理について説明する。ここでは、対象物106を把持しているロボット101のエンドエフェクタにかかっている力を用いて、ロボット101の動作の異常の有無を判定する場合を例に挙げて説明する。しかしながら、力をトルクに置き換えて適用してもよい。また、力とトルクの双方を用いてもよい。
ケース1では、力覚センサ105の計測値は、対象物106を把持するのに必要な把持力の最低値に対応する値以下である、という状況である。ここで、ステップS1651において、対象物106の操作に必要な力の値を(M±m)×g[N]と設定した場合には、対象物106を把持するのに必要な把持力は、(M−m)×g[N]になる。対象物106を操作できている場合には、力覚センサ105の計測結果は、少なくともこの値以上にはなるはずである。したがって、異常判定部204は、対象物106を正確に操作するために、ロボット101の把持力を力覚センサ105の計測値よりも上げると判定する。行動計画部205は、この判定の結果に従って、ロボット101の行動の計画を作成する。把持力を力覚センサ105の計測値以上に上げられない場合、異常判定部204は、ロボット101の動作に異常があると判定する。
ケース2では、力覚センサ105の計測値は、対象物106を把持するのに必要な最低値に対応する値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらに、ケース2では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しており、周辺物107に動きがある、という状況である。この場合、対象物106を正確に操作できているものの、対象物106と周辺物107とが干渉しており、ロボット101が周辺物107まで操作してしまっていると考えられる。このときは、周辺物107を操作せずに対象物106のみを操作するような操作方法を実現する必要がある。例えば、異常判定部204は、対象物106を操作するときの力およびトルクのベクトルの方向と、周辺物107の位置および姿勢の変化のオプティカルフローより検出された動きベクトルの方向とを比較する。この比較の結果、それらの方向が一致している場合、対象物106および周辺物107ともに操作方向に外力が印加されていると考えられる。この場合、異常判定部204は、対象物106に印加される外力の方向を変えて、周辺物107への影響をより小さくすると判定する。行動計画部205は、この判定の結果に従って、ロボット101の行動の計画を作成する。
ケース3では、力覚センサ105の計測値は、対象物106を把持するのに必要な把持力の最低値に対応する値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらに、ケース3では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しており、周辺物107に動きがない、という状況である。この場合、ロボット101は、対象物106のみを操作していると考えられる。したがって、異常判定部204は、ロボット101が正常な動作を行っていると判定する。よって、行動計画部205は、ロボット101に、現在の動作を引き続き継続させる。
ケース4では、力覚センサ105の計測値は、対象物106を把持するのに必要な把持力の最低値に対応する値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらに、ケース4では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しておらず、周辺物107に動きがある、という状況である。この場合、周辺物107が動いていることから、ロボット101が印加している外力は作業空間内に影響を与えている。したがって、ロボット101の動作を継続することによって対象物106を動かすことができる可能性がある。
この場合、対象物106および周辺物107の動きの度合いによって、ロボット101の動作の異常の検知の判定結果が異なる。例えば、対象物106が全く動いておらず、周辺物107のみが動いているような場合、ロボット101は対象物106ではなく周辺物107を操作している可能性がある。したがって、異常判定部204は、ロボット101の動作に異常があると判定する。逆に、対象物106の動きがある場合、異常判定部204は、周辺物107の動きの変化を元に、ロボット101の動作に異常があるか否かを判定する。この判定の結果、ロボット101の動作に異常がないと判定された場合、行動計画部205は、ロボット101に、現在の動作を引き続き継続させる。
周辺物107の動きの度合いは、例えば、ステップS1643により判定された、周辺物107の位置および姿勢の変化が、どの程度であるかによって定めることができる。例えば、異常判定部204は、オプティカルフローを求めることにより検出された動きベクトルが、作業空間全体を格子状に区切った時に、その全体の面積に対してどの程度の領域に該当するかによって、周辺物107の動きの度合いを求めることができる。異常判定部204は、作業空間全体に対して、動きベクトルの存在する領域(動きのある領域)が予め設定された領域以上の場合に、ロボット101の動きに異常があると判定する。ただし、周辺物107の動きの度合いが分かる方法であれば、必ずしもこのような方法を用いる必要はない。例えば、背景差分を用いる方法などを、周辺物107の動きの度合いを導出する方法として採用してもよい。また、周辺物107の動きの状況も考慮する必要がある。例えば、周辺物107の動きの変化から、このままの動作では対象物106および周辺物107が本来入っているべき容器の外に出てしまうような動きの変化が観測された場合、異常判定部204は、ロボット101の動作を継続すべきでないと判定する。
ケース5では、力覚センサ105の計測値は、対象物106を把持するのに必要な最低値に対応する値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらに、ケース5では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しておらず、周辺物107に動きがない、という状況である。この場合、対象物106が周辺物107の下に埋もれていて、外力を印加してもいずれの物体も操作できていないという状況や、対象物106および周辺物107が入っている容器に対して外力を印加してしまっているといった状況が考えられる。
ただし、ロボット101の動作を継続することによって対象物106を動かすことができる可能性がある。したがって、異常判定部204は、ロボット101の把持力が、対象物106を破損しない範囲の値以下である限り、ロボット101の動作に異常があるとは判定しない。この場合、行動計画部205は、ロボット101に、現在の動作を引き続き継続させる。ただし、急激に外力が変化するような場合には、異常判定部204は、印加する外力を変更する必要があると判定する。行動計画部205は、この判定の結果に基づいて、対象物106の破損を防ぐためにロボット101の動作方向を変更したり、動作速度を遅くしたりするように、ロボット101の行動の計画を作成する。
ケース6では、力覚センサ105の計測値は、対象物106を把持するのに必要な最低値に対応する値以上であり、且つ、対象物106および周辺物107を破損しない範囲の値も越えている、という状況である。この場合、ロボット101の操作を行うことで対象物106および周辺物107のいずれか一つ以上を破損してしまうので、異常判定部204は、対象物106および周辺物107の動きに関わらず、ロボット101の動作に異常があると判定する。
以上が異常判定処理で行われる内容の一例である。ただし、対象物106と周辺物107の位置および姿勢の変化を得ることができれば、その方法としてその他の方法を採用してもよい。例えば、対象物106と周辺物107とのそれぞれに、位置および姿勢を計測できるセンサを付けておき、そのセンサからの情報を読み取ることにより、対象物106および周辺物107の位置および姿勢の変化を得てもよい。
また、ロボット101の動作の異常の度合いを判定できるのであれば、ステップS1651〜S1654以外の異常判定処理を行ってもよい。例えば、その他の異常判定処理として、ロボット101を用いたマニピュレーションによって、対象物106および周辺物107が本来入っているべき容器内からどの程度落下してしまうかを、機械学習を用いて、評価関数として設定する。
このとき、ステップS1651の処理で力覚センサ105により計測された力およびトルクが想定される範囲に対してどの程度近いか、また、ステップS1643の処理で判定された位置および姿勢の変化がどの程度かといった情報を入力値として用いる。力およびトルクについてはスカラー値として求められる。
したがって、力覚センサ105により計測された力およびトルクと、一次元で設定された閾値とを比較することにより、異常の度合いを決定できる。力覚センサ105により計測された力およびトルクが、対象物106を把持できている範囲内にあるか、あるいは対象物106を把持しているものの干渉がある領域にあるかといった異常の度合いの違いを用いる。これらの入力値に対しての評価関数の挙動の違いを判別することによって、入力パラメータに対する異常の度合いを機械学習させ、異常判定処理を実現する。
また、ケース2における異常判定処理を、後述する第2の実施形態で説明するケース12または第3の実施形態で説明するケース22のようにしてもよい。同様に、ケース4における異常判定処理を、後述する第2の実施形態で説明するケース14または第3の実施形態で説明するケース24のようにしてもよい。
異常判定処理(ステップS1654の処理)が終わった後、図3のステップS1700へ移行する。
ステップS1700では、行動計画部205は、ステップS1600の異常検知処理における判定の結果に基づいて、ロボット101の動作を終了するか否かを判定する。この判定の結果、ロボットの動作を終了しない(すなわち、ロボット101の動作を継続する)場合には、ステップS1400へ戻り処理を続行する。その際、異常検知処理の判定の結果で、ロボット101の動作が変わる場合、行動計画部205は、その結果に基づいて、再度、ロボット101の行動を計画する。例えば、行動計画部205は、対象物106の搬送経路を変更したり、ロボット101の動作速度を変更したりする。また、操作位置を変更したり、把持対象を変更したりする場合には、ステップS1800へ移行した後、再度ステップS1100に戻り、処理を続行する。
一方、ロボット101の動作を終了する(すなわち、ロボット101の動作を継続しない)場合には、ステップS1800に進む。ステップS1800では、情報処理装置104は、画像取得部201で取得された画像情報に基づいて、処理を終了するか否か(次の対象物106が存在するか否か)を検知する。この判定の結果、次の対象物106が存在し、処理を終了しない場合には、ステップS1100に戻り処理を続行する。一方、次の対象物106が存在せず、処理を終了する場合には、図3のフローチャートによる処理を終了する。
以上のように本実施形態では、ロボット101で対象物106を操作しているときに力覚センサ105により計測された力覚情報に基づいて、ロボット101のエンドエフェクタにかかっている力およびトルクを導出する。また、ロボット101で対象物106を操作しているときに撮像装置102により撮像された画像情報に基づいて、対象物106と周辺物107の位置および姿勢の変化を導出する。そして、ロボット101のエンドエフェクタにかかっている力およびトルクと、対象物106および周辺物107の位置および姿勢の変化とに基づいて、マニピュレーション中のロボット101の動作が異常であるか否かを判定する。したがって、例えば、対象物106をマニピュレーションする際に、対象物106と周辺物107とが山積み状態になっており干渉している場合においても、より正確なマニピュレーションを実現することができる。そのため、対象物106とその他の物体の干渉の状態をより正確に判別し、その判別の結果に基づいてロボット101の動作の異常を確実に検知することができる。よって、ロボット101が作業を継続することができる状況を拡大することができる。
(第2の実施形態)
次に、第2の実施形態を説明する。第1の実施形態では、ロボット101のエンドエフェクタ(把持部)にかかる力およびトルクを計測する力覚センサ105を用いて、ロボット101の動作の異常を検知する場合を例に挙げて説明した。これに対して、本実施形態では、ロボット101のエンドエフェクタにおける把持力を計測するセンサを用いて、ロボット101の動作の異常を検知する。このように本実施形態と第1の実施形態は、主に、力覚センサによる計測の対象が異なると共に、力覚センサによる計測の対象が異なることによる処理の一部が異なる。したがって、本実施形態の説明において、第1の実施形態と同一の部分については、図1〜図9に付した符号と同一の符号を付すなどして詳細な説明を省略する。
図10は、ロボットシステムの構成の一例を示す図である。図10に示すロボットシステムは、図1に示すロボットシステムに対して、力覚センサ105がなくなり、把持力計測センサ108が追加されたものである。図10は、機器の構成の一例であり、本発明の適用範囲を限定するものではない。
把持力計測センサ108は、ロボット101のエンドエフェクタの把持部の根本に取り付けられている。本実施形態の把持力計測センサ108は、ひずみゲージや圧電素子を用いて構成され、ロボット101で把持した対象物106を把持あるいは搬送しているときの把持力を計測する力覚センサである。把持力計測センサ108で取得される力覚情報は、情報処理装置104にて処理される。
本実施形態において、マニピュレーション中のロボット101の動作の異常を検知するための情報処理装置104の機能要素の構成と機能要素間の関係は図2に示したものと同じである。ただし、図2に示す力覚センサ105は把持力計測センサ108に代わる。
また、本実施形態において、ロボットシステムを実現するための情報処理装置104の処理の一例を示すフローチャートは図3と同じである。ただし、本実施形態では、ステップS1600の異常検知処理が以下のようになる。
図11は、本実施形態における異常検知処理(図3のステップS1600に対応するステップS1600'の詳細な処理)の一例を説明するフローチャートである。以下、図11のフローチャートに従って、異常検知処理の手順を説明する。
ステップS1600'は、本実施形態で行われる異常検知処理である。図5に示したステップS1600と異なるステップS1620'およびステップS1650'について説明する。
ステップS1620'では、力・トルク計測部208は、ステップS1610で取得された力覚情報に基づき、第1の導出処理を実行する。第1の導出処理は、ロボット101が対象物106を把持したときの力覚情報として、ロボット101の把持力を導出する処理である。
図12は、図11のステップS1620'の詳細な処理の一例を説明するフローチャートである。以下、ステップS1620'に該当するステップS1621'からステップS1622'の処理の手順を図12のフローチャートに従って説明する。
ステップS1621'では、力・トルク計測部208は、力覚情報から得られたロボット101が対象物106を操作しているときの力として、ロボット101の把持力を計算する。ロボット101のエンドエフェクタが対象物106を把持する力がステップS1621'で計算される。このとき、ロボット101のエンドエフェクタが対象物106を把持する力は、把持方向のスカラー値として求まる。したがって、力・トルク計測部208は、このスカラー値を計算する。このようにして計算される、ロボット101のエンドエフェクタが対象物106を把持する力は、ステップS1622'の処理で用いられる。尚、ロボット101のエンドエフェクタが対象物106を把持する力が求まるならば、ロボット101の把持力を計算する方法は、その他の方法でもよい。
次に、ステップS1622'では、力・トルク計測部208は、ステップS1621'で計算されたロボット101の把持力に基づいて、把持力情報判定処理を行う。具体的に力・トルク計測部208は、ロボット101の把持力が、対象物106の把持に適切な値であるか否かを判定する。例えば、対象物106の質量がM[g]であり、そのばらつきが±m[g]であるとする。この場合、対象物106の質量をM±m[g]と設定する。したがって、重力加速度をg[m/s2]、静止摩擦係数をμとすれば、対象物106を把持するのに必要な力は(M±m)×μ×g[N]となる。そのため、このステップS1621'で求めた把持力がこの設定値以上ならば、対象物106を把持するのに必要な力がロボット101に印加されているものと考えられる。
この設定値は予め設計者が決めておくことができる。また、この設定値として、対象物106に対応するような値を予め設定しておいてもよい。さらに、この設定値は、対象物106の操作に必要な値を設定できれば他の方法で設定してもよい。
以上のようにして図11のステップS1620'の処理が実行される。
図11のステップS1650'では、異常判定部204は、ステップS1620'で計算されたロボット101の把持力と、ステップS1640で導出された対象物106および周辺物107の位置および姿勢の変化とに基づいて、異常判定を行う。異常判定部204では、把持力計測センサ108および撮像装置102(ビジョンセンサ)からの複数の情報を入力として、ロボット101の動作の異常の度合いの判定結果を出力とする。図13は、図11のステップS1650'の詳細な処理の一例を説明するフローチャートである。以下、ステップS1650'に該当し、ステップS1650と処理が異なるステップS1651'およびステップS1654'の処理の手順を、図13のフローチャートに従って説明する。
ステップS1651'では、異常判定部204は、ステップS1620'で計算されたロボット101の把持力が予め設定された範囲のうち、どの範囲にあるのかを判定する。例えば、異常判定部204は、ステップS1620'で計算されたロボット101の把持力が、対象物106の把持に必要な値以上であるか否かを判定する。また、異常判定部204は、ステップS1620'で計算されたロボット101の把持力が、対象物106および周辺物107を破損しない範囲内であるか否かを判定する。
この把持に必要な値や、対象物106および周辺物107を破損しない範囲の値といったパラメータは、例えば、設計者により予め設定される。
ステップS1651'の判定を行うことによって、ステップS1620'で計算されたロボット101の把持力に基づいて、対象物106を操作している力学的状態がどのような状態にあるかを分類できるというメリットがある。
ステップS1654'では、異常判定部204は、ステップS1651'、ステップS1652、およびステップS1653の判定の結果に基づいて、異常判定処理を行う。
図14は、異常判定処理の内容の一例を表形式で示す図である。以下、図14を参照しながら、異常判定処理の一例を説明する。
まず、異常判定部204は、ステップS1620'で計算されたロボット101の把持力が図14の「C.対象物を把持するのに必要な把持力の最低値以上」に該当するか否かと「D.対象物が破損しない範囲の値以下」に該当するか否かを判定する。この判定は、ステップS1651'でのロボット101の把持力の判定の結果に従って行われる。
次に、異常判定部204は、「c.対象物の動きは把持部と同期している」に該当するか否かと「d.周辺物の動きがある」に該当するか否かを判定する。この判定は、図13のステップS1652およびステップS1653の判定の結果に従って行われる。
図14でも、図9と同様に、該当する場合を「Yes」と表記し、該当しない場合を「No」と表記する。例えば、「C.対象物を把持するのに必要な把持力の最低値以上」、「D.対象物が破損しない範囲の値以下」、「c.対象物の動きは把持部と同期している」および「d.周辺物の動きがある」の全てに該当する場合には、ケース2に分類される。
このような判定によって、マニピュレーション中の状態が、ケース11〜16の何れかのケースに分類される。
以下、それぞれのケースに対する異常判定処理について説明する。
ケース11では、把持力計測センサ108の計測値は、対象物106を把持するのに必要な把持力の最低値以下である、という状況である。この場合、このままの把持力では対象物106を正確に操作できない。したがって、異常判定部204は、ロボット101の把持力を力覚センサ105の計測値よりも上げると判定する。行動計画部205は、この判定の結果に従って、ロボット101の行動の計画を作成する。把持力を把持力計測センサ108の計測値以上に上げられない場合、異常判定部204は、ロボット101の動作に異常があると判定する。
ケース12では、把持力計測センサ108の計測値は、対象物106を把持するのに必要な最低値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらに、ケース12では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しており、周辺物107に動きがある、という状況である。この場合、ロボット101の動作は必ずしも正常であるとは判定できない。
例えば、ロボット101によって対象物106を把持しているものの、対象物106と周辺物107とが干渉していることが想定される。そのため、異常判定部204は、周辺物107の動きの度合いを求め、その結果に基づいて、ロボット101の動作に異常があるか否かを判定する。具体的には、異常判定部204は、ステップS1643により判定された周辺物107の位置および姿勢の変化がどの程度かといった情報を用いることにより、周辺物107の動きの度合いを求める。
例えば、異常判定部204は、オプティカルフローを求めることにより検出された動きベクトルが、作業空間全体を格子状に区切った時に、その全体の面積に対してどの程度の領域に該当するかによって、周辺物107の動きの度合いを求めることができる。異常判定部204は、作業空間全体に対して、動きベクトルの存在する領域(動きのある領域)が予め設定された領域以上の場合に、ロボット101の動きに異常があると判定する。ただし、周辺物107の動きの度合いが分かる方法であれば、必ずしもこのような方法を用いる必要はない。例えば、背景差分を用いる方法などを、周辺物107の動きの度合いを導出する方法として採用してもよい。また、周辺物107の動きの状況も考慮する必要がある。例えば、周辺物107の動きの変化から、このままの動作では対象物106および周辺物107が本来入っているべき容器の外に出てしまうような動きの変化が観測された場合、異常判定部204は、ロボット101の動作を継続すべきでないと判定する。
ケース13では、把持力計測センサ108の計測値は、対象物106を把持するのに必要な把持力の最低値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらにケース13では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しており、周辺物107に動きがない、という状況である。この場合、ロボット101は、対象物106のみを操作していると考えられる。したがって、異常判定部204は、ロボット101が正常な動作を行っていると判定する。よって、行動計画部205は、ロボット101に、現在の動作を引き続き継続させる。
ケース14では、把持力計測センサ108の計測値は、対象物106を把持するのに必要な把持力の最低値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらに、ケース14では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しておらず、周辺物107に動きがある、という状況である。この場合、対象物106を把持している部分に滑りが生じているものと考えられる。そのため、異常判定部204は、ロボット101の把持力を、対象物106および周辺物107を破損しない限度値まで上げて処理を継続すると判定する。行動計画部205は、この判定の結果に従って、ロボット101の行動の計画を作成する。また、異常判定部204は、ロボット101の把持力を、対象物106および周辺物107を破損しない限度値まで上げられない場合、ロボット101の行動の動作に異常があると判定する。
ケース15では、把持力計測センサ108の計測値は、対象物106を把持するのに必要な把持力の最低値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらに、ケース15では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しておらず、周辺物107に動きがない、という状況である。この場合、ケース14のときと同様に、対象物106を把持している部分に滑りが生じているものと考えられる。
ただし、ケース14のときと異なり、周辺物107の動きがないことから、対象物106が周辺物107の動かない部分に干渉していたり、周辺物107を動かせないように干渉していたりする状況である可能性がある。周辺物107の動かない部分としては、例えば対象物106および周辺物107が入っている容器そのものなどが考えられる。そのため、ケース15でもケース14と同様に、異常判定部204は、ロボット101の把持力を対象物106および周辺物107を破損しない限度値まで上げて処理を継続すると判定する。ただし、対象物106および周辺物107の変化をより正確に認識するために、この判定に加えて、異常判定部204は、ロボット101の動作速度を遅くすると判定する。行動計画部205は、この判定の結果に従って、ロボット101の行動の計画を作成する。また、異常判定部204は、ロボット101の把持力を、対象物106および周辺物107を破損しない限度値まで上げられない場合、ロボット101の行動の動作に異常があると判定する。
ケース16では、把持力計測センサ108の計測値は、対象物106を把持するのに必要な最低値以上であり、且つ、対象物106および周辺物107を破損しない範囲の値も越えている、という状況である。この場合、ロボット101の操作を行うことで対象物106および周辺物107のいずれか一つ以上を破損してしまうので、異常判定部204は、対象物106および周辺物107の動きに関わらず、ロボット101の動作に異常があると判定する。
以上が本実施形態における異常判定処理で行われる内容の一例である。ただし、異常判定処理の方法として、以上の方法以外の方法を採用してもよい。すなわち、ロボット101の把持力が、対象物106の把持に必要な値以上であるか否かと、対象物106および周辺物107を破損しない範囲の値以下であるか否かを判定できる方法であれば他の方法を採用してもよい。また、対象物106および周辺物107の位置および姿勢の変化を見られる方法であれば、他の方法を採用してもよい。
また、ケース12における異常判定処理を、第1の実施形態で説明したケース2または後述する第3の実施形態で説明するケース22のようにしてもよい。同様に、ケース14における異常判定処理を、第1の実施形態で説明したケース4または後述する第3の実施形態で説明するケース24のようにしてもよい。
以上のように本実施形態では、対象物106を操作中のロボット101の把持力を把持力計測センサ108により計測する。したがって、ロボット101のエンドエフェクタにかかる力およびトルクを計測しなくても、マニピュレーション中のロボット101の動作が異常であるか否かを正確に判定することができ、第1の実施形態で説明した効果と同じ効果が得られる。
(第3の実施形態)
次に、第3の実施形態を説明する。第1の実施形態では、ロボット101のエンドエフェクタ(把持部)にかかる力およびトルクを計測する力覚センサ105を用いて、ロボット101の動作の異常を検知する場合を例に挙げて説明した。また、第2の実施形態では、ロボット101のエンドエフェクタ(把持部)の把持力を計測する把持力計測センサ108(力覚センサ)を用いて、ロボット101の動作の異常を検知する場合を例に挙げて説明した。これに対して、本実施形態では、ロボット101のエンドエフェクタ(把持部)のうち、対象物106を把持および搬送する際の対象物106との接触部分にかかる力およびトルクを直接的に計測する力覚センサを用いて、ロボット101の動作の異常を検知する。このように本実施形態と第1および第2の実施形態は、主に、力覚センサによる計測の対象が異なると共に、力覚センサによる計測の対象が異なることによる処理の一部が異なる。したがって、本実施形態の説明において、第1および第2の実施形態と同一の部分については、図1〜図14に付した符号と同一の符号を付すなどして詳細な説明を省略する。
図15は、ロボットシステムの構成の一例を示す図である。図15に示すロボットシステムは、図1に示すロボットシステムに対して、力覚センサ105がなくなり、把持部力覚センサ109が追加されたものである。図15は、機器構成の一例であり、本発明の適用範囲を限定するものではない。
把持部力覚センサ109は、ロボット101のエンドエフェクタの把持部のうち、把持する物体(対象物106)と接触する部分である把持接触部に取り付けられている。本実施形態の把持部力覚センサ109は、ひずみゲージや圧電素子を用いて構成され、ロボット101で対象物106を把持しているときの把持接触部にかかる力およびトルクを計測する力覚センサである。把持部力覚センサ109で取得される力覚情報は、情報処理装置104にて処理される。
本実施形態において、マニピュレーション中のロボット101の動作の異常を検知するための情報処理装置104の機能要素の構成と機能要素間の関係は図2に示したものと同じである。ただし、図2に示す力覚センサ105は把持部力覚センサ109に代わる。
また、本実施形態において、ロボットシステムを実現するための情報処理装置104の処理の一例を示すフローチャートは図3と同じである。ただし、本実施形態では、ステップS1600の異常検知処理が以下のようになる。
図16は、本実施形態における異常検知処理(図3のステップS1600に対応するステップS1600' 'の詳細な処理)の一例を説明するフローチャートである。以下、図16のフローチャートに従って、異常検知処理の手順を説明する。
ステップS1600''は、本実施形態で行われる異常検知処理である。図5に示したステップS1600と異なるステップS1620''およびステップS1650''について説明する。
ステップS1620''では、力・トルク計測部208は、ステップS1610で取得された力覚情報に基づき、第1の導出処理を実行する。第1の導出処理は、把持接触部の力・トルク情報を計測する処理である。把持接触部の力・トルク情報は、対象物106をマニピュレーション中にロボット101のエンドエフェクタの把持接触部にかかる力およびトルクを示す情報である。
図17は、図16のステップS1602''の詳細な処理の一例を説明するフローチャートである。以下、ステップS1620''に該当するステップS1621''からステップS1622''の処理を、図17のフローチャートに従って説明する。
ステップS1621''では、力・トルク計測部208は、ロボット101が対象物106を操作しているときの把持接触部にかかる力に基づいて、ロボット101の座標系における把持接触部の鉛直方向の合力を計算する。ロボット101が対象物106を操作しているときの把持接触部にかかる力は、力覚情報から得られる。対象物106を操作するとき、ロボット101には対象物106の質量の分だけ力がかかる。このとき計測される力は、把持部力覚センサ109の座標系のX、Y、Z成分の計測値で求まる。力・トルク計測部208は、これらの成分に基づいて、ロボット101の座標系における把持接触部の鉛直方向の合力を求める。こうすることで、重力加速度の方向においてロボット101にかかっている力が求まり、対象物106を把持できているか否かの判定の際に利用できる。ただし、ロボット101の座標系における把持接触部の鉛直方向の合力は、ロボット101が把持している対象物106の質量が求まるならば、他の方法で計算してもよい。
次に、ステップS1622''では、力・トルク計測部208は、ロボット101が対象物106を操作しているときの把持接触部にかかるトルクに基づいて、把持接触部における推定トルクを計算する。ロボット101が対象物106を操作しているときの把持接触部にかかるトルクは、力覚情報から得られる。対象物106を操作するとき、ロボット101には対象物106の慣性モーメントの分だけトルクがかかる。このとき計測されるトルクは、把持部力覚センサ109の座標系のX、Y、Z成分の各軸の回転方向α、β、γに対して求まる。力・トルク計測部208は、これらの成分の値に基づいて、ロボット101が対象物106を把持する姿勢に応じたトルクを、把持接触部における推定トルクとして計算する。把持接触部に力覚センサが取り付けられている場合、ロボット101が対象物106を把持する方向をZ軸と置くと、トルクはX−Y平面に対して求まる。計測されるトルクの方向は、このX−Y平面に対して、ロボット101が対象物106を把持する姿勢に応じて任意に決定される。こうすることで、把持接触部にかかっているトルクが求まり、対象物106を把持できているか否かの判定の際に利用できる。ただし、把持接触部における推定トルクは、把持接触部にかかっているトルクが求まるならば他の方法で計算してもよい。また、必ずしも、ステップS1621''およびステップS1622''の両方の処理を行う必要はなく、いずれか一つの処理を行ってもよい。ステップS1622''の処理が終わった後、図16のステップS1630へ移行する。
ステップS1650''では、異常判定部204は、ステップS1620''で導出された把持接触部の力・トルク情報と、ステップS1640で導出された対象物106および周辺物107の位置および姿勢の変化とに基づいて、異常判定を行う。異常判定部204では、把持部力覚センサ109および撮像装置102(ビジョンセンサ)からの複数の情報を入力として、ロボット101の動作の異常の度合いの判定結果を出力とする。図18は、図16のステップS1650''の詳細な処理の一例を説明するフローチャートである。以下、ステップS1650''に該当し、ステップS1650と処理が異なるステップS1651''およびステップS1654''の処理の手順を、図18のフローチャートに従って説明する。
ステップS1651''では、異常判定部204は、ステップS1620''で導出された把持接触部の力・トルク情報に示される力およびトルクが、予め設定された範囲のうち、どの範囲にあるのかを判定する。例えば、異常判定部204は、ステップS1620で導出された力・トルク情報に示される力およびトルクが、対象物106の把持あるいは搬送に必要な範囲内であるか否かを判定する。また、異常判定部204は、ステップS1620''で導出された把持接触部の力・トルク情報に示される力およびトルクが、対象物106および周辺物107を破損しない範囲内であるか否かを判定する。
この把持あるいは搬送に必要な範囲となる値や、対象物106および周辺物107を破損しない範囲の値といったパラメータは、例えば、設計者が以下のようにして予め設定する。まず、対象物106の質量がM[g]であり、そのばらつきが±m[g]であるとする。この場合、対象物106の質量をM±m[g]と設定する。したがって、重力加速度をg[m/s2]、静止摩擦係数をμとすれば、対象物106を把持するのに必要な力を(M±m)×μ×g[N]と設定できる。そのため、このステップS1621''で計算された、ロボット101の座標系における把持接触部の鉛直方向の合力が、この設定値以上ならば、対象物106の把持に必要な力がロボット101に印加されているものと考えられる。
この設定値は予め設計者が決めておくことができる。また、この設定値として、対象物106に対応するような値を予め設定しておいてもよい。さらに、この設定値は、対象物106の操作に必要な値を設定できれば他の方法で設定してもよい。
ステップS1651''の判定を行うことによって、ステップS1620''で計算されたロボット101の把持力に基づいて、対象物106を操作している力学的状態がどのような状態にあるかを分類できるというメリットがある。
ステップS1654''では、異常判定部204は、ステップS1651''、ステップS1652、およびステップS1653の判定の結果に基づいて、異常判定処理を行う。図19は、異常判定処理の内容の一例を表形式で示す図である。以下、図19を参照しながら、異常判定処理の一例を説明する。
まず、異常判定部204は、ステップS1620''で導出された把持接触部の力・トルク情報に示される力およびトルクが、図19の「E.対象物を把持するのに必要な把持力の最低値以上」に該当するか否かを判定する。また、異常判定部204は、ステップS1620''で導出された把持接触部の力・トルク情報に示される力およびトルクが、図19の「F.対象物が破損しない範囲の値以下」に該当するか否かを判定する。この判定は、図18のステップS1651''の把持接触部の力およびトルクの判定の結果に従って行われる。
次に、異常判定部204は、「e.対象物の動きは把持部と同期している」に該当するか否かと「f.周辺物の動きがある」に該当するか否かを判定する。この判定は、図18のステップS1652''およびステップS1653''の判定の結果に従って行われる。
図19でも図9と同様に、該当する場合を「Yes」と表記し、該当しない場合を「No」と表記する。例えば、「E.対象物を把持するのに必要な把持力の最低値以上」、「F.対象物が破損しない範囲の値以下」、「e.対象物の動きは把持部と同期している」および「f.周辺物の動きがある」の全てに該当する場合には、ケース22に分類される。
このような判定によって、マニピュレーション中の状態が、ケース21〜26の何れかのケースに分類される。
以下、それぞれのケースに対する異常判定処理について説明する。ここでは、対象物106を把持しているロボット101のエンドエフェクタの把持接触部にかかっている力を用いて、ロボット101の動作の異常の有無を判定する場合を例に挙げて説明する。しかしながら、力をトルクに置き換えて適用してもよい。また、力とトルクの双方を用いてもよい。
ケース21では、把持部力覚センサ109の計測値は、対象物106を把持するのに必要な把持力の最低値に対応する値以下である、という状況である。この場合、このままの把持力では対象物106を正確に操作できない。したがって、異常判定部204は、ロボット101の把持力を把持部力覚センサ109の計測値よりも上げると判定する。行動計画部205は、この判定の結果に従って、ロボット101の行動の計画を変更する。把持力を把持部力覚センサ109の計測値以上に上げられない場合、異常判定部204は、ロボット101の動作に異常があると判定する。
ケース22では、把持部力覚センサ109の計測値は、対象物106を把持するのに必要な把持力の最低値に対応する値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらに、ケース22では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しており、周辺物107に動きがある、という状況である。この場合、ロボット101の動作は必ずしも正常であるとは判定できない。
例えば、ロボット101によって対象物106を把持しているものの、対象物106と周辺物107とが干渉していることが想定される。そのため、異常判定部204は、周辺物107の動きの度合いを求め、その結果に基づいて、ロボット101の動作に異常があるか否かを判定する。具体的には、異常判定部204は、ステップS1643により判定された周辺物107の位置および姿勢の変化がどの程度かといった情報を用いることにより、周辺物107の動きの度合いを求める。
例えば、異常判定部204は、オプティカルフローを求めることにより検出された動きベクトルが、作業空間全体を格子状に区切った時に、その全体の面積に対してどの程度の領域に該当するかによって、周辺物107の動きの度合いを求めることができる。異常判定部204は、作業空間全体に対して、動きベクトルの存在する領域(動きのある領域)が予め設定された領域以上の場合に、ロボット101の動きに異常があると判定する。ただし、周辺物107の動きの度合いが分かる方法であれば、必ずしもこのような方法を用いる必要はない。例えば、背景差分を用いる方法などを、周辺物107の動きの度合いを導出する方法として採用してもよい。また、周辺物107の動きの状況も考慮する必要がある。例えば、周辺物107の動きの変化から、このままの動作では対象物106および周辺物107が本来入っているべき容器の外に出てしまうような動きの変化が観測された場合、異常判定部204は、ロボット101の動作を継続すべきでないと判定する。
把持部力覚センサ109の計測値としてトルクを用いる場合には、その計測値を利用して、マニピュレーションの状態を推定してもよい。例えば、ロボット101が対象物106の重心の近傍を把持している場合には、エンドエフェクタの対象物106を把持する平面に対して回転方向のトルクはほとんど発生しない。一方、対象物106と周辺物107との干渉がある場合にはトルクが発生する。そのトルクの発生している回転方向の外力が対象物106に印加されていることが推定される。したがって、異常判定部204は、対象物106に対する周辺物107のおおよその干渉状態を求め、その干渉状態をやわらげる方向へロボット101を動作させると判定する。行動計画部205は、この判定の結果に従って、ロボット101の行動の計画を作成する。
ケース23では、把持部力覚センサ109の計測値は、対象物106を把持するのに必要な把持力の最低値に対応する値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらに、ケース23では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しており、周辺物107に動きがない、という状況である。この場合、ロボット101は、対象物106のみを操作していると考えられる。したがって、異常判定部204は、ロボット101が正常な動作を行っていると判定する。よって、行動計画部205は、ロボット101に、現在の動作を引き続き継続させる。
ケース24では、把持部力覚センサ109の計測値は、対象物106を把持するのに必要な把持力の最低値に対応する値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらに、ケース24では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しておらず、周辺物107に動きがある、という状況である。この場合、対象物106を把持している部分に滑りが生じているものと考えられる。そのため、異常判定部204は、ロボット101の把持力を、対象物106および周辺物107を破損しない限度値まで上げて処理を継続すると判定する。行動計画部205は、この判定の結果に従って、ロボット101の行動の計画を変更する。また、異常判定部204は、ロボット101の把持力を、対象物106および周辺物107を破損しない限度値まで上げられない場合、ロボット101の行動の動作に異常があると判定する。
また、対象物106と周辺物107との干渉状態を推定するには、ケース22で説明したのと同様に、把持部力覚センサ109がトルクを計測しているのであれば、異常判定部204は、その計測値からおおよその干渉状態を求めることができる。あるいは、異常判定部204は、エンドエフェクタの対象物106を把持する平面の方向の力を、把持部力覚センサ109の計測値から導出することにより、対象物106の滑りの状況を直接的に推定してもよい。対象物106の滑りの方向を検知できた場合、異常判定部204は、対象物106の滑りを軽減させるために、ロボット101により外力を与える方向を変化させ、マニピュレーションを継続すると判定する。
ケース25では、把持部力覚センサ109の計測値は、対象物106を把持するのに必要な把持力の最低値以上、対象物106および周辺物107を破損しない範囲の値以下である、という状況である。さらに、ケース25では、対象物106の動きは、ロボット101のエンドエフェクタ(把持部)の動きに同期しておらず、周辺物107に動きがない、という状況である。この場合、ケース24のときと同様に、対象物106を把持している部分に滑りが生じているものと考えられる。
ただし、ケース24のときと異なり、周辺物107の動きがないことから、対象物106が周辺物107の動かない部分に干渉している可能性がある。したがって、異常判定部204は、このときの把持接触部の力の方向およびトルクの方向などに基づいて、対象物106および周辺物107を破損しない範囲でロボット101の把持力を上げて処理を継続すると判定する。このとき、ケース24で説明したように、異常判定部204は、ロボット101の動作速度を遅くすると判定してもよい。また、異常判定部204は、ロボット101の把持力を、対象物106および周辺物107を破損しない限度値まで上げられない場合、ロボット101の行動の動作に異常があると判定する。
ケース26では、把持部力覚センサ109の計測値は、対象物106を把持するのに必要な最低値以上であり、且つ、対象物106および周辺物107を破損しない範囲の値も越えている、という状況である。ロボット101の操作を行うことで対象物106および周辺物107のいずれか一つ以上を破損してしまうので、異常判定部204は、対象物106および周辺物107の動きに関わらず、ロボット101の動作に異常があると判定する。
尚、ケース22における異常判定処理を、第1の実施形態で説明したケース2または第2の実施形態で説明したケース12のようにしてもよい。同様に、ケース4における異常判定処理を、第1の実施形態で説明したケース4または第2の実施形態で説明したケース14のようにしてもよい。
以上が本実施形態における異常判定処理で行われる内容の一例である。ただし、異常判定処理の方法として、以上の方法以外の方法を採用してもよい。すなわち、ロボット101の把持力が、対象物106の把持に必要な値以上であるか否かと、対象物106および周辺物107を破損しない範囲の値以下であるか否かを判定できる方法であれば他の方法を採用してもよい。また、対象物106および周辺物107の位置および姿勢の変化を見られる方法であれば、他の方法を採用してもよい。
以上のように、対象物106を把持している把持接触部の力覚情報(力およびトルク)を計測することによっても、マニピュレーション中のロボット101の動作が異常であるか否かを正確に判定することができる。すなわち、本実施形態でも、第1の実施形態で説明した効果と同じ効果が得られる。
(第4の実施形態)
次に、第4の実施形態を説明する。第1〜第3の実施形態では、対象物106の剛性を考慮しない場合を例に挙げて説明した。これに対し、本実施形態では、対象物106の剛性を考慮して操作位置を決定することにより、ロボット101の動作の異常をより早く正確に検知することを可能とする。このように本実施形態と第1〜第3の実施形態は、対象物106の剛性を考慮する点が主として異なる。したがって、本実施形態の説明において、第1〜第3の実施形態と同一の部分については、図1〜図19に付した符号と同一の符号を付すなどして詳細な説明を省略する。
図20は、情報処理装置104'の機能的な構成の一例を示す図である。図20に示す情報処理装置104'は、図2に示す情報処理装置104に対して、操作位置決定部210がなくなり、柔軟物操作位置決定部210'が追加されたものである。図2と異なる部分である柔軟物操作位置決定部210'について説明する。
柔軟物操作位置決定部210'は、位置・姿勢計測部209からの位置・姿勢情報を入力として、対象物106の把持位置およびリリース位置を、対象物106の操作位置として決定する。柔軟物操作位置決定部210'は、対象物106の各部の剛性を考慮し、対象物106のより剛性の高い部分、または、より変形しにくい部分がロボット101により把持されるように操作位置を決定する。このようにすることにより、力覚情報の判定を早く正確に行えるようにすることができる。柔軟物操作位置決定部210'で決定された操作位置は、行動計画部205へ出力される。
図21は、ロボットシステムを実現するための情報処理装置104'の処理の一例を説明するフローチャートである。以下、図3に示したフローチャートと異なる部分について、図21のフローチャートに従って処理の手順を説明する。
ステップS1300'では、柔軟物操作位置決定部210は、ステップS1200で計測された結果(把持すべき対象物106の位置および姿勢)に基づいて、対象物106の操作位置を決定する。
図3のステップS1300では、操作位置決定部210は、ロボット101のエンドエフェクタの形状を考慮して、目標位置・姿勢へ対象物106を操作するための把持位置が決定する。これに対し、ステップS1300'では、柔軟物操作位置決定部210'は、さらに対象物106の剛性を考慮して把持位置を決定する。図22は、図21のステップS1300'の詳細な処理の一例を説明するフローチャートである。以下、ステップS1300'に該当するステップS1301'からステップS1303'の処理の手順を、図22のフローチャートに従って説明する。
ステップS1301'では、柔軟物操作位置決定部210'は、把持可能箇所を選定する。柔軟物操作位置決定部210'は、位置・姿勢計測部209から得られた対象物106の位置および姿勢の情報に基づいて、対象物106のどの位置ならば把持可能であり、目的とする操作を行えるかを判断する。そして、柔軟物操作位置決定部210'は、対象物106のうち、ロボット101で把持することが可能な箇所を把持可能箇所として一つ以上選定する。
前述したように、部品データベース203には、対象物106および周辺物107の形状の情報(CADデータ等)が記憶されている。柔軟物操作位置決定部210'は、把持可能箇所を選定するに際し、位置・姿勢計測部209から得られた対象物106の位置および姿勢の情報に加えて、対象物106の形状の情報を参照することができる。
次に、ステップS1302'では、柔軟物操作位置決定部210'は、対象物106の剛性と、ロボット101により対象物106を把持した場合に対象物106に生じる変形とを推定する。具体的に、柔軟物操作位置決定部210'は、ステップS1301'で選定された一つ以上の把持可能箇所について、剛性および変形の度合いを推定する。例えば、対象物106の剛性が均一でない場合、ロボット101が、剛性が小さい箇所よりも、剛性が大きい箇所を把持する方が好ましい。対象物106を操作する時の力覚情報が安定しやすく、また、エンドエフェクタ(把持部)のストロークも短くなることから、ロボット101の動作の異常をより早く正確に検知できるからである。同様の理由から、対象物106がケーブルのような変形しやすい物体の場合、輪になって膨らんでいるような部分よりもシュリンクされてまとまっている部分を把持した方が好ましい。
ステップS1302'の処理を行うために、例えば、対象物106の各位置の剛性を示す情報を部品データベース203に記憶させることができる。柔軟物操作位置決定部210'は、把持可能箇所の剛性および変形の度合いを推定する際に、対象物106の位置および姿勢の情報と、対象物106の形状の情報と、対象物106の各部(各位置)の剛性を示す情報とを参照することができる。
ステップS1303'では、柔軟物操作位置決定部210'は、操作位置を決定する。柔軟物操作位置決定部210'は、ステップS1301'で選定された把持可能箇所の中から、ステップS1302'で推定された剛性および変形度の合いを元にして、より剛性が高く、より変形が小さい部分を操作位置として決定する。
以上のように本実施形態では、対象物106の剛性および変形の度合いを考慮してロボット101の操作位置を決定する。したがって、より短時間で正確に力覚情報を取得することができ、作業のタクトを短縮することができる。よって、対象物106をマニピュレーション中のロボット101の動作の異常をより短時間で正確に検知することができる。
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
(その他の実施例)
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア(コンピュータプログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)が当該コンピュータプログラムを読み出して実行する。