(57)【特許請求の範囲】
【請求項１】
ロボットにより対象物を操作するための処理を行う情報処理装置であって、
前記対象物の動き、および、前記対象物の周辺にある物体である周辺物の動きに基づき、なお且つ、前記対象物を操作しているときに前記ロボットに生じる力およびトルクの少なくとも何れか１つに基づいて、前記ロボットが前記対象物を正常に操作しているか否かを判定する判定手段を有することを特徴とする情報処理装置。
【請求項２】
前記対象物を操作しているときに前記ロボットに生じる力およびトルクの少なくとも何れか１つを、前記ロボットに設けられたセンサの計測値に基づいて導出する第１の導出手段と、
前記対象物の動きと、前記対象物の周辺にある物体である周辺物の動きを、前記対象物と前記周辺物とを含む画像に基づいて導出する第２の導出手段と、をさらに有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１の導出手段は、前記ロボットの前記対象物を保持する部分であって前記対象物と接触しない部分にかかる力およびトルクの少なくとも何れか１つと、前記ロボットにおける前記対象物の保持力と、前記ロボットの前記対象物を保持する部分であって前記対象物と接触する部分にかかる力およびトルクの少なくとも何れか１つと、のうち何れか１つを導出することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記ロボットにより保持される前記対象物の位置を、前記対象物の各部の剛性と、前記対象物の変形の状態とに基づいて決定する決定手段をさらに有することを特徴とする請求項１〜３の何れか１項に記載の情報処理装置。
【請求項５】
前記判定手段による判定の結果に基づいて、前記ロボットの動作の内容を決定し、前記決定した内容で前記ロボットを動作させる動作命令を出力する出力手段をさらに有することを特徴とする請求項１〜４の何れか１項に記載の情報処理装置。
【請求項６】
ロボットにより対象物を操作するための処理を行う情報処理方法であって、
前記対象物の動き、および、前記対象物の周辺にある物体である周辺物の動きに基づき、なお且つ、前記対象物を操作しているときに前記ロボットに生じる力およびトルクの少なくとも何れか１つに基づいて、前記ロボットが前記対象物を正常に操作しているか否かを判定する判定工程を有することを特徴とする情報処理方法。
【請求項７】
請求項１〜５の何れか１項に記載の情報処理装置の各手段としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、およびプログラムに関し、特に、ロボットを用いて対象物を操作するために用いて好適なものである。
【背景技術】
【０００２】
従来、ロボットを用いた対象物のマニピュレーションでは、整列されている対象物を決まった位置から取り出すことが一般的であった。これに対して、特許文献１では、力覚センサとビジョンセンサ（視覚センサ）とを用いて、対象物を把持する技術が開示されている。具体的に、特許文献１に記載の技術では、ビジョンセンサにより検出された対象物の位置情報に基づいてロボットアームを移動させて対象物に近づけ、ロボットアームの先端に取り付けされた力覚センサの出力に基づいて、対象物の位置情報を修正する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１１５３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の手法では、ビジョンセンサによる検出で得た対象物の位置情報に基づいてロボットアームを対象物に近づけ、力覚センサから出力される情報に基づいて対象物の位置情報を修正する。したがって、対象物の位置情報のズレが大きすぎる場合には対応できないという問題がある。また、特許文献１に記載の手法では、ロボットアームにより対象物を把持する時にしか、対象物の位置の誤差を検知しない。したがって、ロボットアームにより対象物を把持した後のマニピュレーションにおいてロボットが所定の操作を行っていない場合でも、そのことを検知できないという問題がある。
【０００５】
本発明は、以上のような問題点に鑑みてなされたものであり、ロボットを用いて対象物をマニピュレーションする際に、ロボットが所定の操作を行っていないことを確実に検知することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の情報処理装置は、ロボットにより対象物を操作するための処理を行う情報処理装置であって、前記対象物の動き、および、前記対象物の周辺にある物体である周辺物の動きに基づき、なお且つ、前記対象物を操作しているときに前記ロボットに生じる力およびトルクの少なくとも何れか１つに基づいて、前記ロボットが前記対象物を正常に操作しているか否かを判定する判定手段を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ロボットを用いて対象物をマニピュレーションする際に、ロボットが所定の操作を行っていないことを確実に検知することができる。
【図面の簡単な説明】
【０００８】
【図１】ロボットシステムの構成の第１の例を示す図である。
【図２】情報処理装置の構成の第１の例を示す図である。
【図３】情報処理装置の処理の第１の例を説明するフローチャートである。
【図４】ステップＳ１２００の処理を説明するフローチャートである。
【図５】ステップＳ１６００の処理の第１の例を説明するフローチャートである。
【図６】ステップＳ１６２０の処理を説明するフローチャートである。
【図７】ステップＳ１６４０の処理を説明するフローチャートである。
【図８】ステップＳ１６５０の処理を説明するフローチャートである。
【図９】異常判定処理の内容の第１の例を説明する図である。
【図１０】ロボットシステムの構成の第２の例を示す図である。
【図１１】ステップＳ１６００の処理の第２の例を説明するフローチャートである。
【図１２】ステップＳ１６２０'の処理を説明するフローチャートである。
【図１３】ステップＳ１６５０'の処理を説明するフローチャートである。
【図１４】異常判定処理の内容の第２の例を説明する図である。
【図１５】ロボットシステムの構成の第３の例を示す図である。
【図１６】ステップＳ１６００の処理の第３の例を説明するフローチャートである。
【図１７】ステップＳ１６０２''の処理を説明するフローチャートである。
【図１８】ステップＳ１６５０''の処理を説明するフローチャートである。
【図１９】異常判定処理の内容の第３の例を説明する図である。
【図２０】情報処理装置の構成の第２の例を示す図である。
【図２１】情報処理装置の処理の第２の例を説明するフローチャートである。
【図２２】ステップＳ１３００'の処理を説明するフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら、実施形態を説明する。
（第１の実施形態）
まず、第１の実施形態で説明する。
本実施形態では、把持部であるエンドエフェクタにかかっている力およびトルクを力覚センサにより計測し、作業空間全体の位置および姿勢の変化をビジョンセンサにより計測する。こうすることで、対象物が周辺物と干渉していても、対象物をマニピュレーション中に発生するロボットの動作の異常を検知することができる。ここで、対象物とは、例えば、トナーカートリッジのような部品である。また、周辺物とは、マニピュレーションがなされる対象物の周辺にある物体である。例えば、山積みされた対象物において、把持対象となっていない対象物や、対象物が入れられた容器などが周辺物の一例である。尚、マニピュレーションとは、例えば、把持、引き抜き、搬送といった一連の動作のことである。また、ロボットの動作の異常とは、ロボットが対象物を決められた通りにマニピュレーションできていないことである。
【００１０】
図１は、ロボットシステムの構成の一例を示す図である。本実施形態では、図１に示す機器を用いて、ロボットの動作の異常を検知する。ただし、図１は、機器の構成の一例であり、本発明の適用範囲を限定するものではない。
ロボット１０１は、マニピュレータや、ロボットハンドのようなエンドエフェクタなどの機器を有する。ロボット１０１は、情報処理装置１０４で決定された行動を実施し、対象物１０６を操作する。ここで、行動とは、対象物１０６を操作するためのロボット１０１の動作のことである。具体的に行動とは、例えば、ロボット１０１により対象物１０６を把持したり搬送したりすることである。
【００１１】
撮像装置（ビジョンセンサ）１０２は、例えば、カメラや、光を検出するセンサ（例えばフォトダイオード）などを有する。撮像装置１０２は、対象物１０６と周辺物１０７の画像情報を取得する。撮像装置１０２で取得された画像情報は、情報処理装置１０４にて処理される。尚、画像情報は、動画像であっても、異なるタイミングで撮像された複数の静止画像であってもよい。
【００１２】
光源１０３は、例えば、プロジェクタを有する。光源１０３は、可視光を投影したり、レーザー装置を用いて赤外光を投影したりすることにより、対象物１０６と周辺物１０７を、均一照明光やパターン光で照明する。あるいは、撮像装置１０２と光源１０３を備えて構成されるレーザーレンジファインダ装置を用いてもよい。また、光源１０３を使わずに、撮像装置１０２を２つ用いてステレオ計測を行ってもよい。また、対象物１０６と周辺物１０７の位置および姿勢を計測するための情報を得ることができれば、光源１０３を用いずに、撮像装置１０２を１つだけ用いてもよい。
【００１３】
情報処理装置１０４は、コンピュータなどの計算機およびハードディスクなどの補助記憶装置を有する。情報処理装置１０４は、インタフェース機器を介して、ロボット１０１、撮像装置１０２、光源１０３、および力覚センサ１０５と相互に接続されている。情報処理装置１０４は、これらの機器と随時通信することができ、これらの機器の動作を制御する。また、情報処理装置１０４は、対象物１０６と周辺物１０７の三次元形状や、ロボット１０１の作業手順などの情報を保持する。
【００１４】
本実施形態では、情報処理装置１０４は、力覚センサ１０５から入力された力覚情報と、撮像装置１０２から入力された画像情報とに基づいて、ロボット１０１の動作の異常を検知する。情報処理装置１０４は、情報処理装置１０４内に保持している情報と、力覚情報とに基づいて、対象物１０６を把持できているか否かと、対象物１０６および周辺物１０７にどのような力がかかっているかを検知する。
【００１５】
また、情報処理装置１０４は、情報処理装置１０４内に保持している情報と、画像情報とに基づいて、対象物１０６および周辺物１０７の位置および姿勢を認識する。そして、情報処理装置１０４は、認識した結果に基づいて、対象物１０６は把持部と同期した動きをしているか否かと、周辺物１０７に動きはあるか否かを検知する。
情報処理装置１０４は、これらの検知によって、マニピュレーション中のロボット１０１の動作の異常を検知し、異常がある場合にはロボット１０１の行動の計画を作成し、作成した計画に従って動作することを示す動作命令をロボット１０１に出力する。
【００１６】
力覚センサ１０５は、ロボット１０１のエンドエフェクタの根本に取り付けられている。本実施形態の力覚センサ１０５は、ひずみゲージや圧電素子を用いて構成され、ロボット１０１で対象物１０６を把持しているときのロボット１０１のエンドエフェクタにかかる力とトルクを計測する６軸力覚センサ（Force/Torqueセンサ）である。力覚センサ１０５で取得される力覚情報は、情報処理装置１０４にて処理される。尚、対象物１０６がロボット１０１により把持される際、ロボット１０１のエンドエフェクタの根本の部分（すなわち、力覚センサ１０５が取り付けられている部分）には、対象物１０６は接触しない。
【００１７】
対象物１０６は、マニピュレーションがなされる物体である。対象物１０６は、例えば、トナーカートリッジであり、ロボット１０１によって把持され搬送されることが想定されるものである。
周辺物１０７は、マニピュレーションの処理がなされる対象物１０６の周辺にある物体である。周辺物１０７は、例えば、山積みされた対象物１０６において、把持対象となっていない対象物（対象物となり得る物体）や、対象物１０６が入れられた容器などである。
【００１８】
図２は、情報処理装置１０４の機能的な構成の一例を示す図である。図２では、情報処理装置１０４が有する機能のうち、対象物１０６をマニピュレーション中のロボット１０１の動作の異常の検知を実現するための機能を示す。
ロボット１０１は、行動計画部２０５からの動作命令に従って動作する。
前述したように撮像装置１０２は、対象物１０６および周辺物１０７を撮影する。対象物１０６および周辺物１０７は、光源１０３で照明されている場合もある。撮像装置１０２で撮影された画像情報は、画像取得部２０１で取得される。
【００１９】
情報処理装置１０４は、後述する画像取得部２０１〜操作位置決定部２１０を有するロボット制御装置である。情報処理装置１０４の構成のうち、異常検知部３０１により、ロボット１０１の動作の異常が検知される。
力覚センサ１０５は、対象物１０６を把持および搬送している期間（すなわち、対象物１０６をマニピュレーション中）においてロボット１０１のエンドエフェクタにかかる力とトルクを力覚情報として計測する。力覚センサ１０５で計測された力覚情報は、力覚情報取得部２０７で取得される。
【００２０】
画像取得部２０１は、撮像装置１０２で撮影された画像情報を取得する。この画像情報は、位置・姿勢変化計測部２０２および位置・姿勢計測部２０９で使われる。画像取得部２０１は、例えばキャプチャボードやＲＡＭ（メモリ）を用いて構成される。
部品データベース（ＤＢ）２０３は、マニピュレーションの対象となる対象物１０６および周辺物１０７の部品種と形状の情報を保持する。位置・姿勢変化計測部２０２および位置・姿勢計測部２０９は、適宜、部品データベース２０３の情報を参照する。対象物１０６および周辺物１０７の形状の情報とは、例えば、ＣＡＤデータやＣＧポリゴンなどのモデルデータである。あるいは、対象物１０６や周辺物１０７を多方向から観察した二次元画像の集合から、対象物１０６および周辺物１０７の形状の情報が構成されてもよい。
【００２１】
異常検知部３０１は、位置・姿勢変化計測部２０２、力・トルク計測部２０８、および異常判定部２０４を有する。異常検知部３０１は、画像取得部２０１からの画像情報と、力覚情報取得部２０７からの力覚情報とを入力として、対象物１０６をマニピュレーション中のロボット１０１の動作に異常があるか否かを判定し、その判定の結果を行動計画部２０５に出力する。
【００２２】
位置・姿勢変化計測部２０２は、画像取得部２０１で取得した画像情報を入力として、対象物１０６および周辺物１０７の位置の変化および姿勢の変化を計測（認識）する。具体的に位置・姿勢変化計測部２０２は、部品データベース２０３に蓄積されている対象物１０６および周辺物１０７の部品種と形状の情報と、画像情報とに基づいて、対象物１０６および周辺物１０７の位置の変化および姿勢の変化を導出する。そして、位置・姿勢変化計測部２０２は、対象物１０６および周辺物１０７の位置の変化および姿勢の変化を示す位置・姿勢変化情報を、異常判定部２０４へ出力する。
【００２３】
力覚情報取得部２０７は、力覚センサ１０５から送られてきた力覚情報を取得する。この力覚情報は、力・トルク計測部２０８で使われる。力覚情報取得部２０７は、例えばＲＡＭ（メモリ）を用いて構成される。
力・トルク計測部２０８は、力覚情報取得部２０７で取得された力覚情報を入力として、対象物１０６のマニピュレーション中にロボット１０１のエンドエフェクタにかかる力とトルクを認識する。この認識の結果を示す力・トルク情報は、異常判定部２０４へ出力される。
【００２４】
異常判定部２０４は、位置・姿勢変化計測部２０２からの位置・姿勢変化情報と、力・トルク計測部２０８からの力・トルク情報とを入力として、対象物１０６をマニピュレーション中のロボット１０１の動作に異常が生じているか否かを判定する。この判定の結果は、行動計画部２０５へ出力される。
【００２５】
位置・姿勢計測部２０９は、画像取得部２０１で取得した画像情報を入力として、山積みされた物体のうち、把持すべき対象物１０６の位置および姿勢を計測（認識）する。具体的に位置・姿勢計測部２０９は、部品データベース２０３に蓄積されている対象物１０６の部品種と形状の情報と、画像情報とに基づいて、対象物１０６の位置および姿勢を決定する。位置・姿勢計測部２０９は、対象物１０６および周辺物１０７の位置および姿勢を示す位置・姿勢情報を、操作位置決定部２１０へ出力する。尚、例えば、対象物１０６の形状が球であるような場合には、対象物１０６の姿勢の計測（認識）は不要になる。
【００２６】
操作位置決定部２１０は、位置・姿勢計測部２０９からの位置・姿勢情報を入力として、対象物１０６の把持位置およびリリース位置を、対象物１０６の操作位置として決定する。尚、把持位置とは、ロボット１０１のエンドエフェクタで対象物１０６を把持する位置のことである。また、リリース位置とは、ロボット１０１のエンドエフェクタから、把持している対象物１０６をリリースする位置のことである。操作位置決定部２１０で決定された操作位置は、行動計画部２０５へ出力される。
【００２７】
操作位置決定部２１０は、ロボット１０１により対象物１０６を操作する処理において最初に実行される処理部となり、ロボット１０１が動作命令に従って動き始めた後に、異常検知部３０１の処理が実行される。指定された一つの対象物１０６の処理が終わり、新たな対象物１０６が操作対象となるときは、再び位置・姿勢計測部２０９および操作位置決定部２１０の処理が実行される。
【００２８】
操作データベース（ＤＢ）２０６は、行動計画部２０５が、対象物１０６に対するロボット１０１の行動を計画する際に参照する部品種と作業手順の情報を保持する。行動計画部２０５は、適宜、操作データベース２０６の情報を参照する。
行動計画部２０５は、異常判定部２０４からの判定の結果と、操作位置決定部２１０からの操作位置とを入力として、ロボット１０１の行動を計画する。行動計画部２０５は、操作データベース２０６に保持されている部品種と作業手順の情報を参照して、対象物１０６に対するロボット１０１の行動を計画する。計画された行動は、動作命令としてロボット１０１へ出力される。
【００２９】
図３は、ロボットシステムを実現するための情報処理装置１０４の処理の一例を説明するフローチャートである。以下、図３に従って処理の手順を説明する。
ステップＳ１０００では、本実施形態におけるロボットシステムの初期化が行われる。具体的に、ユーザーがロボットシステムを起動するための操作を行うと、ロボットシステムを実現するためのプログラムは、情報処理装置１０４にロードされ、図示しないメモリ上に展開されて実行可能な状態となる。また、ロボット１０１、撮像装置１０２、および力覚センサ１０５も、機器パラメータの読み込みや初期位置への復帰などが行われることにより、使用可能な状態となる。
【００３０】
次に、ステップＳ１１００では、画像取得部２０１は、撮像装置１０２を用いて対象物１０６および周辺物１０７に関する画像情報を取得する。
次に、ステップＳ１２００では、位置・姿勢計測部２０９は、把持すべき対象物１０６の位置および姿勢を計測する。図４は、図３のステップＳ１２００の詳細な処理の一例を説明するフローチャートである。以下、ステップＳ１２００に該当するステップＳ１２０１からステップＳ１２０３の処理の手順を、図４のフローチャートに従って説明する。
【００３１】
ステップＳ１２０１では、位置・姿勢計測部２０９は、対象物１０６および周辺物１０７の部品種を判別する。対象物１０６および周辺物１０７の部品種を判別するために、例えば、パターンマッチングが行われる。位置・姿勢計測部２０９は、部品データベース２０３に蓄積されている対象物１０６の部品種の情報と、画像取得部２０１で取得された画像情報とに基づくパターンマッチングを行う事により、対象物１０６および周辺物１０７の部品種を判別する。パターンマッチングの方法としては、例えば相関ベースマッチングが挙げられる。位置・姿勢計測部２０９は、部品データベース２０３に部品種の情報として蓄積されている複数種類の部品パターンと、画像情報との比較により、画像情報に含まれる対象物１０６および周辺物１０７のそれぞれについて、最も類似する部品パターンを推定する。位置・姿勢計測部２０９は、このようにして対象物１０６および周辺物１０７の部品種を決定する。ただし、パターンマッチングは、対象物１０６および周辺物１０７の部品種を判別できる手法であれば他の処理でもよい。
【００３２】
ステップＳ１２０２では、位置・姿勢計測部２０９は、ステップＳ１２０１で判別された部品種に基づいて、対象物１０６および周辺物１０７の位置および姿勢を判別する。対象物１０６および周辺物１０７の位置および姿勢を判別するために、例えば、モデルフィッティングが行われる。位置・姿勢計測部２０９は、例えば、対象物１０６および周辺物１０７に均一な照明光が照射された状態で撮像装置１０２により撮像されて画像取得部２０１により取得された画像情報から、対象物１０６および周辺物１０７のエッジを抽出する。そして、位置・姿勢計測部２０９は、抽出した対象物１０６および周辺物１０７のエッジと、対象物１０６および周辺物１０７の形状の情報（ＣＡＤデータ等）を元にしたエッジモデルとのフィッティング処理を行う。尚、前述したように、対象物１０６および周辺物１０７の形状の情報（ＣＡＤデータ等）は、部品種ごとに部品データベース２０３に蓄積されているものである。位置・姿勢計測部２０９は、このフィッティング処理の結果に基づいて、対象物１０６および周辺物１０７の位置および姿勢を判別する。
【００３３】
また、位置・姿勢計測部２０９は、以上のようにせずに、例えば以下のようにして対象物１０６および周辺物１０７の位置および姿勢を判別してもよい。まず、位置・姿勢計測部２０９は、マルチラインのパターン光が照射された状態で撮像装置１０２により撮像されて画像取得部２０１により取得された画像情報から、対象物１０６および周辺物１０７の表面に投影されたパターンを検出する。そして、位置・姿勢計測部２０９は、三角測量の原理に基づき、対象物１０６および周辺物１０７の表面の各点までの距離を示す距離点群データを導出する。そして、位置・姿勢計測部２０９は、導出した距離点群データと点群モデルとのフィッティング処理を、ＩＰＣ（Iterative Closest Point）アルゴリズムを利用して行い、対象物１０６および周辺物１０７の位置および姿勢を判別する。
【００３４】
次に、ステップＳ１２０３では、位置・姿勢計測部２０９は、ステップＳ１２０２で判別された結果（対象物１０６および周辺物１０７の位置および姿勢）に基づいて、対象物１０６および周辺物１０７の欠損・欠品判定処理を行う。この欠損・欠品判定処理は、例えば、以下のようにして行われる。位置・姿勢計測部２０９は、ステップＳ１２０２のモデルフィッティングにおいて、画像情報から抽出した対象物１０６および周辺物１０７のエッジと、エッジモデルとのマッチング度の評価を部分的に行う。そして、位置・姿勢計測部２０９は、これらが明らかにマッチしない場合、その部分に欠損・欠品があると判定する。ステップＳ１２０３の処理が終わった後、図３のステップＳ１３００へ移行する。
【００３５】
ステップＳ１３００では、操作位置決定部２１０は、ステップＳ１２００で計測された結果（把持すべき対象物１０６の位置および姿勢）に基づいて、対象物１０６の操作位置を決定する。ロボット１０１のエンドエフェクタの形状を考慮して、目標位置および目標姿勢へ対象物１０６を操作するための把持位置が決定される。ただし、エンドエフェクタが対象物１０６を把持する形状でない場合、例えば、エンドエフェクタが吸着などを用いて操作を行うものである場合には、そのエンドエフェクタによる対象物１０６の吸着位置が操作位置になる。
【００３６】
次に、ステップＳ１４００では、行動計画部２０５は、ステップＳ１３００で決定された操作位置を実現するためのロボット１０１の行動計画を決定する。具体的に行動計画部２０５は、ステップＳ１３００で決定された操作位置を元に、操作データベース２０６に蓄積されている部品種と作業手順の情報を参照する。計画された動作は、ステップＳ１５００のロボット１０１の動作を行う際に用いられる。
【００３７】
次に、ステップＳ１５００では、行動計画部２０５は、ステップＳ１４００で決定された行動計画で動作すること指示する動作命令をロボット１０１へ出力する。これによりロボット１０１は、ステップＳ１４００で決定された行動計画に従って動作する。
次に、ステップＳ１６００では、異常検知処理が行われる。図５は、図３のステップＳ１６００の詳細な処理の一例を説明するフローチャートである。以下、ステップＳ１６００に該当するステップＳ１６１０からステップＳ１６５０の処理の手順を、図５のフローチャートに従って説明する。
【００３８】
ステップＳ１６１０では、力覚情報取得部２０７は、対象物１０６を把持しているロボット１０１のエンドエフェクタにかかっている力およびトルクに関する力覚情報を取得する。
次に、ステップＳ１６２０では、力・トルク計測部２０８は、ステップＳ１６１０で取得された力覚情報に基づき、第１の導出処理を実行する。第１の導出処理は、力・トルク情報を導出する処理である。力・トルク情報は、対象物１０６をマニピュレーション中のロボット１０１のエンドエフェクタにかかる力およびトルクを示す情報である。対象物１０６を把持して持ち上げたとき、ロボット１０１のエンドエフェクタには、対象物１０６の質量の分だけの力がかかり、また、対象物１０６を把持する姿勢によって、ロボット１０１のエンドエフェクタにかかるトルクが変化する。力・トルク計測部２０８は、これらの値を、ひずみゲージや圧電素子を用いた力覚センサ１０５により検出された値に基づいて計測することにより、対象物１０６をマニピュレーション中のロボット１０１のエンドエフェクタにかかる力およびトルクを計測する。
【００３９】
図６は、図５のステップＳ１６２０の詳細な処理の一例を説明するフローチャートである。以下、ステップＳ１６２０に該当するステップＳ１６２１からステップＳ１６２２の処理の手順を、図６のフローチャートに従って説明する。
ステップＳ１６２１では、力・トルク計測部２０８は、ロボット１０１が対象物１０６を操作しているときにエンドエフェクタにかかる力に基づいて、ロボット１０１の座標系における鉛直方向の合力を計算する。ロボット１０１が対象物１０６を操作しているときにエンドエフェクタにかかる力は、力覚情報から得られる。対象物１０６を操作するとき、ロボット１０１には対象物１０６の質量の分だけ力がかかる。このとき計測される力は、力覚センサ１０５の座標系のＸ、Ｙ、Ｚ成分の計測値で求まる。力・トルク計測部２０８は、これらの成分に基づいて、ロボット１０１の座標系における鉛直方向の合力を求める。こうすることで、重力加速度の方向においてロボット１０１にかかっている力が求まり、対象物１０６を把持できているか否かの判定の際に利用できる。ただし、ロボット１０１の座標系における鉛直方向の合力は、ロボット１０１が把持している対象物１０６の質量が求まるならば、他の方法で計算してもよい。
【００４０】
ステップＳ１６２２では、力・トルク計測部２０８は、ロボット１０１が対象物１０６を操作しているときにエンドエフェクタにかかるトルクに基づいて、推定トルクを計算する。ロボット１０１が対象物１０６を操作しているときにエンドエフェクタにかかるトルクは、力覚情報から得られる。対象物１０６を操作するとき、ロボット１０１には対象物１０６の慣性モーメントに基づいてトルクがかかる。このとき計測されるトルクは、力覚センサ１０５の座標系のＸ、Ｙ、Ｚ成分の各軸の回転方向α、β、γに対して求まる。力・トルク計測部２０８は、これらの成分の値に基づいて、ロボット１０１が対象物１０６を把持する姿勢に応じたトルクを、推定トルクとして計算する。力・トルク計測部２０８は、例えば、対象物１０６の位置および姿勢から最も大きなトルクが発生している軸に対するトルクを推定トルクとして計算する。こうすることで、ロボット１０１にかかっている最大トルクが求まり、対象物１０６を把持できているか否かの判定の際に利用できる。ただし、推定トルクは、ロボット１０１にかかっているトルクが求まるならば他の方法で計算してもよい。また、必ずしも、ステップＳ１６２１およびステップＳ１６２２の両方の処理を行う必要はなく、いずれか一つの処理を行ってもよい。ステップＳ１６２２の処理が終わった後、図５のステップＳ１６３０へ移行する。
【００４１】
ステップＳ１６３０では、画像取得部２０１は、撮像装置１０２で撮像された画像情報を取得する。
次に、ステップＳ１６４０では、位置・姿勢変化計測部２０２は、第２の導出処理を実行する。第２の導出処理は、対象物１０６および周辺物１０７の位置および姿勢の変化を導出する処理である。図７は、図５のステップＳ１６４０の詳細な処理の一例を説明するフローチャートである。以下、ステップＳ１６４０に該当するステップＳ１６４１からステップＳ１６４３の処理の手順を、図７のフローチャートに従って説明する。
【００４２】
ステップＳ１６４１では、位置・姿勢変化計測部２０２は、対象物１０６および周辺物１０７の部品種を判別する。対象物１０６および周辺物１０７の部品種を判別するために、例えば、パターンマッチングが行われる。位置・姿勢変化計測部２０２は、部品データベース２０３に蓄積されている対象物の部品種の情報と、画像取得部２０１で取得された画像情報とに基づくパターンマッチングを行う事により、対象物１０６および周辺物１０７の部品種を判別する。パターンマッチングの方法としては、例えば相関ベースマッチングが挙げられる。この方法は、例えば、ステップＳ１２０１の処理で説明したのと同じ方法で実現できるので、ここでは、その詳細な説明を省略する。なお、パターンマッチングは、対象物１０６および周辺物１０７の部品種を判別できる手法であれば他の処理でもよい。
【００４３】
次に、ステップＳ１６４２では、位置・姿勢変化計測部２０２は、ステップＳ１６４１で判別された結果（対象物１０６および周辺物１０７の部品種）に基づいて、対象物１０６および周辺物１０７の位置および姿勢を判別する。対象物１０６および周辺物１０７の位置および姿勢を判別するために、例えば、モデルフィッティングが行われる。この方法は、例えば、ステップＳ１２０２の処理で説明したのと同じ方法で実現できるので、ここでは、その詳細な説明を省略する。
【００４４】
次に、ステップＳ１６４３では、位置・姿勢変化計測部２０２は、ステップＳ１６４２で判別された結果（対象物１０６および周辺物１０７の位置および姿勢）に基づいて、対象物１０６および周辺物１０７の位置・姿勢変化判定処理が行われる。この位置・姿勢変化判定処理は、例えば、以下のようにして行われる。位置・姿勢変化計測部２０２は、ステップＳ１６４２で導出した距離点群データの特徴量を、前回のサンプリング時の距離点群データと比較して、その変化を調べることによって、対象物１０６および周辺物１０７の位置および姿勢の変化を判定する。また、このようにせずに、位置・姿勢変化計測部２０２は、対象物１０６および周辺物１０７が含まれる作業空間全体のオプティカルフローを導出し、対象物１０６および周辺物１０７の動きベクトルを検出してもよい。ただし、対象物１０６および周辺物１０７の位置および姿勢の変化を判定できれば、位置・姿勢変化判定処理は、他の処理でもよい。ステップＳ１６４３の処理が終わった後、図５のステップＳ１６５０へ移行する。
【００４５】
ステップＳ１６５０では、異常判定部２０４は、ステップＳ１６２０で導出された力・トルク情報と、ステップＳ１６４０で導出された対象物１０６および周辺物１０７の位置および姿勢の変化とに基づいて、異常判定を行う。異常判定部２０４では、力覚センサ１０５および撮像装置１０２（ビジョンセンサ）からの複数の情報を入力として、ロボット１０１の動作の異常の度合いの判定結果を出力とする。図８は、図５のステップＳ１６５０の詳細な処理の一例を説明するフローチャートである。以下、ステップＳ１６５０に該当するステップＳ１６５１からステップＳ１６５４の処理の手順を、図８のフローチャートに従って説明する。
【００４６】
ステップＳ１６５１では、異常判定部２０４は、ステップＳ１６２０で導出された力・トルク情報に示される力およびトルクが、予め設定された範囲のうち、どの範囲にあるのかを判定する。例えば、異常判定部２０４は、ステップＳ１６２０で導出された力・トルク情報に示される力およびトルクが、対象物１０６の把持あるいは搬送に必要な範囲内であるか否かを判定する。また、異常判定部２０４は、ステップＳ１６２０で導出された力・トルク情報に示される力およびトルクが、対象物１０６の把持あるいは搬送に必要な範囲外でも対象物１０６および周辺物１０７を破損しない範囲内であるか否かを判定する。
【００４７】
この把持あるいは搬送に必要な範囲となる値や、対象物１０６および周辺物１０７を破損しない範囲の値といったパラメータは、例えば、設計者が以下のようにして予め設定する。まず、対象物１０６の質量がＭ［ｇ］であり、そのばらつきが±ｍ［ｇ］であるとする。この場合、対象物１０６の質量をＭ±ｍ［ｇ］と設定する。したがって、重力加速度をg［ｍ／ｓ2］とすれば、対象物１０６の操作に必要な力の値を（Ｍ±ｍ）×ｇ［Ｎ］と設定できる。そのため、このステップＳ１６２１で計算された、ロボット１０１の座標系における鉛直方向の合力がこの設定値の範囲内ならば、適切な力がロボット１０１に印加されているものと考えられる。この設定値は予め設計者が決めておくことができる。また、この設定値として、対象物１０６に対応するような値を予め設定しておいてもよい。さらに、この設定値は、対象物１０６の操作に必要な値を設定できれば他の方法で設定してもよい。異常判定部２０４は、このような設定値を用いて、ステップＳ１６２０で導出された力・トルク情報に示される力・トルクがどの範囲にあるかを判定する。
【００４８】
次に、ステップＳ１６５２では、異常判定部２０４は、対象物１０６の動きがロボット１０１のエンドエフェクタ（把持部）の動きと同期しているか否かを判定する。対象物１０６の動きは、例えば、ステップＳ１６４０の計測の結果（対象物１０６の位置および姿勢の変化）に基づいて導出される。ロボット１０１のエンドエフェクタ（把持部）の動きは、例えば、ロボット１０１のエンドエフェクタの先端部分の位置および姿勢の情報と、ロボット１０１の関節の角度の情報とに基づいて、順運動学を用いた計算を行うことによって導出される。異常判定部２０４は、これら２つ（ロボット１０１のエンドエフェクタおよび対象物１０６）の位置および姿勢の変化の情報を比較することによって、対象物１０６の動きと、ロボット１０１のエンドエフェクタ（把持部）の動きと同期の有無を判定する。この判定を行うことによって、対象物１０６がロボット１０１によってどの程度正確に操作されているかを判定できるというメリットがある。
【００４９】
次に、ステップＳ１６５３では、異常判定部２０４は、ステップＳ１６４０の計測の結果（対象物１０６の位置および姿勢の変化）に基づいて、周辺物１０７の動きの有無を判定する。この判定を行うことによって、周辺物１０７がロボット１０１による対象物１０６の操作の影響を受けているかどうかを判定できるというメリットがある。
次に、ステップＳ１６５４では、異常判定部２０４は、ステップＳ１６５１からステップＳ１６５３の判定の結果に基づいて、異常判定処理を行う。
【００５０】
図９は、異常判定処理の内容の一例を表形式で示す図である。以下、図９を参照しながら、異常判定処理の一例を説明する。
まず、異常判定部２０４は、ステップＳ１６２０で導出された力・トルク情報に示される力およびトルクが、図９の「Ａ．対象物を把持するのに必要な把持力の最低値以上」に該当するか否かを判定する。また、異常判定部２０４は、ステップＳ１６２０で導出された力・トルク情報に示される力およびトルクが、図９の「Ｂ．対象物が破損しない範囲の値以下」に該当するか否かを判定する。この判定は、図８のステップＳ１６５１の力およびトルクの判定の結果に従って行われる。
【００５１】
次に、異常判定部２０４は、「ａ．対象物の動きは把持部と同期している」に該当するか否かと「ｂ．周辺物の動きがある」に該当するか否かを判定する。この判定は、図８のステップＳ１６５２およびステップＳ１６５３の判定の結果に従って行われる。
【００５２】
図９では、該当する場合を「Ｙｅｓ」と表記し、該当しない場合を「Ｎｏ」と表記する。例えば、「Ａ．対象物を把持するのに必要な把持力の最低値以上」、「Ｂ.対象物が破損しない範囲の値以下」、「ａ．対象物の動きは把持部と同期している」および「ｂ．周辺物の動きがある」の全てに該当する場合には、ケース２に分類される。
【００５３】
このような判定によって、マニピュレーション中の状態が、ケース１〜６の何れかのケースに分類される。尚、前記把持力は、エンドエフェクタによる対象物１０６の保持力である。例えば、エンドエフェクタが対象物１０６を吸着するものである場合には、前記把持力は吸着力に置き換えられる。
【００５４】
以下、それぞれのケースに対する異常判定処理について説明する。ここでは、対象物１０６を把持しているロボット１０１のエンドエフェクタにかかっている力を用いて、ロボット１０１の動作の異常の有無を判定する場合を例に挙げて説明する。しかしながら、力をトルクに置き換えて適用してもよい。また、力とトルクの双方を用いてもよい。
【００５５】
ケース１では、力覚センサ１０５の計測値は、対象物１０６を把持するのに必要な把持力の最低値に対応する値以下である、という状況である。ここで、ステップＳ１６５１において、対象物１０６の操作に必要な力の値を（Ｍ±ｍ）×ｇ［Ｎ］と設定した場合には、対象物１０６を把持するのに必要な把持力は、（Ｍ−ｍ）×ｇ［Ｎ］になる。対象物１０６を操作できている場合には、力覚センサ１０５の計測結果は、少なくともこの値以上にはなるはずである。したがって、異常判定部２０４は、対象物１０６を正確に操作するために、ロボット１０１の把持力を力覚センサ１０５の計測値よりも上げると判定する。行動計画部２０５は、この判定の結果に従って、ロボット１０１の行動の計画を作成する。把持力を力覚センサ１０５の計測値以上に上げられない場合、異常判定部２０４は、ロボット１０１の動作に異常があると判定する。
【００５６】
ケース２では、力覚センサ１０５の計測値は、対象物１０６を把持するのに必要な最低値に対応する値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらに、ケース２では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しており、周辺物１０７に動きがある、という状況である。この場合、対象物１０６を正確に操作できているものの、対象物１０６と周辺物１０７とが干渉しており、ロボット１０１が周辺物１０７まで操作してしまっていると考えられる。このときは、周辺物１０７を操作せずに対象物１０６のみを操作するような操作方法を実現する必要がある。例えば、異常判定部２０４は、対象物１０６を操作するときの力およびトルクのベクトルの方向と、周辺物１０７の位置および姿勢の変化のオプティカルフローより検出された動きベクトルの方向とを比較する。この比較の結果、それらの方向が一致している場合、対象物１０６および周辺物１０７ともに操作方向に外力が印加されていると考えられる。この場合、異常判定部２０４は、対象物１０６に印加される外力の方向を変えて、周辺物１０７への影響をより小さくすると判定する。行動計画部２０５は、この判定の結果に従って、ロボット１０１の行動の計画を作成する。
【００５７】
ケース３では、力覚センサ１０５の計測値は、対象物１０６を把持するのに必要な把持力の最低値に対応する値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらに、ケース３では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しており、周辺物１０７に動きがない、という状況である。この場合、ロボット１０１は、対象物１０６のみを操作していると考えられる。したがって、異常判定部２０４は、ロボット１０１が正常な動作を行っていると判定する。よって、行動計画部２０５は、ロボット１０１に、現在の動作を引き続き継続させる。
【００５８】
ケース４では、力覚センサ１０５の計測値は、対象物１０６を把持するのに必要な把持力の最低値に対応する値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらに、ケース４では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しておらず、周辺物１０７に動きがある、という状況である。この場合、周辺物１０７が動いていることから、ロボット１０１が印加している外力は作業空間内に影響を与えている。したがって、ロボット１０１の動作を継続することによって対象物１０６を動かすことができる可能性がある。
【００５９】
この場合、対象物１０６および周辺物１０７の動きの度合いによって、ロボット１０１の動作の異常の検知の判定結果が異なる。例えば、対象物１０６が全く動いておらず、周辺物１０７のみが動いているような場合、ロボット１０１は対象物１０６ではなく周辺物１０７を操作している可能性がある。したがって、異常判定部２０４は、ロボット１０１の動作に異常があると判定する。逆に、対象物１０６の動きがある場合、異常判定部２０４は、周辺物１０７の動きの変化を元に、ロボット１０１の動作に異常があるか否かを判定する。この判定の結果、ロボット１０１の動作に異常がないと判定された場合、行動計画部２０５は、ロボット１０１に、現在の動作を引き続き継続させる。
【００６０】
周辺物１０７の動きの度合いは、例えば、ステップＳ１６４３により判定された、周辺物１０７の位置および姿勢の変化が、どの程度であるかによって定めることができる。例えば、異常判定部２０４は、オプティカルフローを求めることにより検出された動きベクトルが、作業空間全体を格子状に区切った時に、その全体の面積に対してどの程度の領域に該当するかによって、周辺物１０７の動きの度合いを求めることができる。異常判定部２０４は、作業空間全体に対して、動きベクトルの存在する領域（動きのある領域）が予め設定された領域以上の場合に、ロボット１０１の動きに異常があると判定する。ただし、周辺物１０７の動きの度合いが分かる方法であれば、必ずしもこのような方法を用いる必要はない。例えば、背景差分を用いる方法などを、周辺物１０７の動きの度合いを導出する方法として採用してもよい。また、周辺物１０７の動きの状況も考慮する必要がある。例えば、周辺物１０７の動きの変化から、このままの動作では対象物１０６および周辺物１０７が本来入っているべき容器の外に出てしまうような動きの変化が観測された場合、異常判定部２０４は、ロボット１０１の動作を継続すべきでないと判定する。
【００６１】
ケース５では、力覚センサ１０５の計測値は、対象物１０６を把持するのに必要な最低値に対応する値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらに、ケース５では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しておらず、周辺物１０７に動きがない、という状況である。この場合、対象物１０６が周辺物１０７の下に埋もれていて、外力を印加してもいずれの物体も操作できていないという状況や、対象物１０６および周辺物１０７が入っている容器に対して外力を印加してしまっているといった状況が考えられる。
【００６２】
ただし、ロボット１０１の動作を継続することによって対象物１０６を動かすことができる可能性がある。したがって、異常判定部２０４は、ロボット１０１の把持力が、対象物１０６を破損しない範囲の値以下である限り、ロボット１０１の動作に異常があるとは判定しない。この場合、行動計画部２０５は、ロボット１０１に、現在の動作を引き続き継続させる。ただし、急激に外力が変化するような場合には、異常判定部２０４は、印加する外力を変更する必要があると判定する。行動計画部２０５は、この判定の結果に基づいて、対象物１０６の破損を防ぐためにロボット１０１の動作方向を変更したり、動作速度を遅くしたりするように、ロボット１０１の行動の計画を作成する。
【００６３】
ケース６では、力覚センサ１０５の計測値は、対象物１０６を把持するのに必要な最低値に対応する値以上であり、且つ、対象物１０６および周辺物１０７を破損しない範囲の値も越えている、という状況である。この場合、ロボット１０１の操作を行うことで対象物１０６および周辺物１０７のいずれか一つ以上を破損してしまうので、異常判定部２０４は、対象物１０６および周辺物１０７の動きに関わらず、ロボット１０１の動作に異常があると判定する。
【００６４】
以上が異常判定処理で行われる内容の一例である。ただし、対象物１０６と周辺物１０７の位置および姿勢の変化を得ることができれば、その方法としてその他の方法を採用してもよい。例えば、対象物１０６と周辺物１０７とのそれぞれに、位置および姿勢を計測できるセンサを付けておき、そのセンサからの情報を読み取ることにより、対象物１０６および周辺物１０７の位置および姿勢の変化を得てもよい。
【００６５】
また、ロボット１０１の動作の異常の度合いを判定できるのであれば、ステップＳ１６５１〜Ｓ１６５４以外の異常判定処理を行ってもよい。例えば、その他の異常判定処理として、ロボット１０１を用いたマニピュレーションによって、対象物１０６および周辺物１０７が本来入っているべき容器内からどの程度落下してしまうかを、機械学習を用いて、評価関数として設定する。
【００６６】
このとき、ステップＳ１６５１の処理で力覚センサ１０５により計測された力およびトルクが想定される範囲に対してどの程度近いか、また、ステップＳ１６４３の処理で判定された位置および姿勢の変化がどの程度かといった情報を入力値として用いる。力およびトルクについてはスカラー値として求められる。
【００６７】
したがって、力覚センサ１０５により計測された力およびトルクと、一次元で設定された閾値とを比較することにより、異常の度合いを決定できる。力覚センサ１０５により計測された力およびトルクが、対象物１０６を把持できている範囲内にあるか、あるいは対象物１０６を把持しているものの干渉がある領域にあるかといった異常の度合いの違いを用いる。これらの入力値に対しての評価関数の挙動の違いを判別することによって、入力パラメータに対する異常の度合いを機械学習させ、異常判定処理を実現する。
【００６８】
また、ケース２における異常判定処理を、後述する第２の実施形態で説明するケース１２または第３の実施形態で説明するケース２２のようにしてもよい。同様に、ケース４における異常判定処理を、後述する第２の実施形態で説明するケース１４または第３の実施形態で説明するケース２４のようにしてもよい。
【００６９】
異常判定処理（ステップＳ１６５４の処理）が終わった後、図３のステップＳ１７００へ移行する。
ステップＳ１７００では、行動計画部２０５は、ステップＳ１６００の異常検知処理における判定の結果に基づいて、ロボット１０１の動作を終了するか否かを判定する。この判定の結果、ロボットの動作を終了しない（すなわち、ロボット１０１の動作を継続する）場合には、ステップＳ１４００へ戻り処理を続行する。その際、異常検知処理の判定の結果で、ロボット１０１の動作が変わる場合、行動計画部２０５は、その結果に基づいて、再度、ロボット１０１の行動を計画する。例えば、行動計画部２０５は、対象物１０６の搬送経路を変更したり、ロボット１０１の動作速度を変更したりする。また、操作位置を変更したり、把持対象を変更したりする場合には、ステップＳ１８００へ移行した後、再度ステップＳ１１００に戻り、処理を続行する。
【００７０】
一方、ロボット１０１の動作を終了する（すなわち、ロボット１０１の動作を継続しない）場合には、ステップＳ１８００に進む。ステップＳ１８００では、情報処理装置１０４は、画像取得部２０１で取得された画像情報に基づいて、処理を終了するか否か（次の対象物１０６が存在するか否か）を検知する。この判定の結果、次の対象物１０６が存在し、処理を終了しない場合には、ステップＳ１１００に戻り処理を続行する。一方、次の対象物１０６が存在せず、処理を終了する場合には、図３のフローチャートによる処理を終了する。
【００７１】
以上のように本実施形態では、ロボット１０１で対象物１０６を操作しているときに力覚センサ１０５により計測された力覚情報に基づいて、ロボット１０１のエンドエフェクタにかかっている力およびトルクを導出する。また、ロボット１０１で対象物１０６を操作しているときに撮像装置１０２により撮像された画像情報に基づいて、対象物１０６と周辺物１０７の位置および姿勢の変化を導出する。そして、ロボット１０１のエンドエフェクタにかかっている力およびトルクと、対象物１０６および周辺物１０７の位置および姿勢の変化とに基づいて、マニピュレーション中のロボット１０１の動作が異常であるか否かを判定する。したがって、例えば、対象物１０６をマニピュレーションする際に、対象物１０６と周辺物１０７とが山積み状態になっており干渉している場合においても、より正確なマニピュレーションを実現することができる。そのため、対象物１０６とその他の物体の干渉の状態をより正確に判別し、その判別の結果に基づいてロボット１０１の動作の異常を確実に検知することができる。よって、ロボット１０１が作業を継続することができる状況を拡大することができる。
【００７２】
（第２の実施形態）
次に、第２の実施形態を説明する。第１の実施形態では、ロボット１０１のエンドエフェクタ（把持部）にかかる力およびトルクを計測する力覚センサ１０５を用いて、ロボット１０１の動作の異常を検知する場合を例に挙げて説明した。これに対して、本実施形態では、ロボット１０１のエンドエフェクタにおける把持力を計測するセンサを用いて、ロボット１０１の動作の異常を検知する。このように本実施形態と第１の実施形態は、主に、力覚センサによる計測の対象が異なると共に、力覚センサによる計測の対象が異なることによる処理の一部が異なる。したがって、本実施形態の説明において、第１の実施形態と同一の部分については、図１〜図９に付した符号と同一の符号を付すなどして詳細な説明を省略する。
【００７３】
図１０は、ロボットシステムの構成の一例を示す図である。図１０に示すロボットシステムは、図１に示すロボットシステムに対して、力覚センサ１０５がなくなり、把持力計測センサ１０８が追加されたものである。図１０は、機器の構成の一例であり、本発明の適用範囲を限定するものではない。
【００７４】
把持力計測センサ１０８は、ロボット１０１のエンドエフェクタの把持部の根本に取り付けられている。本実施形態の把持力計測センサ１０８は、ひずみゲージや圧電素子を用いて構成され、ロボット１０１で把持した対象物１０６を把持あるいは搬送しているときの把持力を計測する力覚センサである。把持力計測センサ１０８で取得される力覚情報は、情報処理装置１０４にて処理される。
【００７５】
本実施形態において、マニピュレーション中のロボット１０１の動作の異常を検知するための情報処理装置１０４の機能要素の構成と機能要素間の関係は図２に示したものと同じである。ただし、図２に示す力覚センサ１０５は把持力計測センサ１０８に代わる。
また、本実施形態において、ロボットシステムを実現するための情報処理装置１０４の処理の一例を示すフローチャートは図３と同じである。ただし、本実施形態では、ステップＳ１６００の異常検知処理が以下のようになる。
【００７６】
図１１は、本実施形態における異常検知処理（図３のステップＳ１６００に対応するステップＳ１６００'の詳細な処理）の一例を説明するフローチャートである。以下、図１１のフローチャートに従って、異常検知処理の手順を説明する。
ステップＳ１６００'は、本実施形態で行われる異常検知処理である。図５に示したステップＳ１６００と異なるステップＳ１６２０'およびステップＳ１６５０'について説明する。
【００７７】
ステップＳ１６２０'では、力・トルク計測部２０８は、ステップＳ１６１０で取得された力覚情報に基づき、第１の導出処理を実行する。第１の導出処理は、ロボット１０１が対象物１０６を把持したときの力覚情報として、ロボット１０１の把持力を導出する処理である。
図１２は、図１１のステップＳ１６２０'の詳細な処理の一例を説明するフローチャートである。以下、ステップＳ１６２０'に該当するステップＳ１６２１'からステップＳ１６２２'の処理の手順を図１２のフローチャートに従って説明する。
【００７８】
ステップＳ１６２１'では、力・トルク計測部２０８は、力覚情報から得られたロボット１０１が対象物１０６を操作しているときの力として、ロボット１０１の把持力を計算する。ロボット１０１のエンドエフェクタが対象物１０６を把持する力がステップＳ１６２１'で計算される。このとき、ロボット１０１のエンドエフェクタが対象物１０６を把持する力は、把持方向のスカラー値として求まる。したがって、力・トルク計測部２０８は、このスカラー値を計算する。このようにして計算される、ロボット１０１のエンドエフェクタが対象物１０６を把持する力は、ステップＳ１６２２'の処理で用いられる。尚、ロボット１０１のエンドエフェクタが対象物１０６を把持する力が求まるならば、ロボット１０１の把持力を計算する方法は、その他の方法でもよい。
【００７９】
次に、ステップＳ１６２２'では、力・トルク計測部２０８は、ステップＳ１６２１'で計算されたロボット１０１の把持力に基づいて、把持力情報判定処理を行う。具体的に力・トルク計測部２０８は、ロボット１０１の把持力が、対象物１０６の把持に適切な値であるか否かを判定する。例えば、対象物１０６の質量がＭ［ｇ］であり、そのばらつきが±ｍ［ｇ］であるとする。この場合、対象物１０６の質量をＭ±ｍ［ｇ］と設定する。したがって、重力加速度をｇ［ｍ／ｓ2］、静止摩擦係数をμとすれば、対象物１０６を把持するのに必要な力は（Ｍ±ｍ）×μ×ｇ［Ｎ］となる。そのため、このステップＳ１６２１'で求めた把持力がこの設定値以上ならば、対象物１０６を把持するのに必要な力がロボット１０１に印加されているものと考えられる。
【００８０】
この設定値は予め設計者が決めておくことができる。また、この設定値として、対象物１０６に対応するような値を予め設定しておいてもよい。さらに、この設定値は、対象物１０６の操作に必要な値を設定できれば他の方法で設定してもよい。
以上のようにして図１１のステップＳ１６２０'の処理が実行される。
【００８１】
図１１のステップＳ１６５０'では、異常判定部２０４は、ステップＳ１６２０'で計算されたロボット１０１の把持力と、ステップＳ１６４０で導出された対象物１０６および周辺物１０７の位置および姿勢の変化とに基づいて、異常判定を行う。異常判定部２０４では、把持力計測センサ１０８および撮像装置１０２（ビジョンセンサ）からの複数の情報を入力として、ロボット１０１の動作の異常の度合いの判定結果を出力とする。図１３は、図１１のステップＳ１６５０'の詳細な処理の一例を説明するフローチャートである。以下、ステップＳ１６５０'に該当し、ステップＳ１６５０と処理が異なるステップＳ１６５１'およびステップＳ１６５４'の処理の手順を、図１３のフローチャートに従って説明する。
【００８２】
ステップＳ１６５１'では、異常判定部２０４は、ステップＳ１６２０'で計算されたロボット１０１の把持力が予め設定された範囲のうち、どの範囲にあるのかを判定する。例えば、異常判定部２０４は、ステップＳ１６２０'で計算されたロボット１０１の把持力が、対象物１０６の把持に必要な値以上であるか否かを判定する。また、異常判定部２０４は、ステップＳ１６２０'で計算されたロボット１０１の把持力が、対象物１０６および周辺物１０７を破損しない範囲内であるか否かを判定する。
【００８３】
この把持に必要な値や、対象物１０６および周辺物１０７を破損しない範囲の値といったパラメータは、例えば、設計者により予め設定される。
ステップＳ１６５１'の判定を行うことによって、ステップＳ１６２０'で計算されたロボット１０１の把持力に基づいて、対象物１０６を操作している力学的状態がどのような状態にあるかを分類できるというメリットがある。
【００８４】
ステップＳ１６５４'では、異常判定部２０４は、ステップＳ１６５１'、ステップＳ１６５２、およびステップＳ１６５３の判定の結果に基づいて、異常判定処理を行う。
図１４は、異常判定処理の内容の一例を表形式で示す図である。以下、図１４を参照しながら、異常判定処理の一例を説明する。
【００８５】
まず、異常判定部２０４は、ステップＳ１６２０'で計算されたロボット１０１の把持力が図１４の「Ｃ．対象物を把持するのに必要な把持力の最低値以上」に該当するか否かと「Ｄ．対象物が破損しない範囲の値以下」に該当するか否かを判定する。この判定は、ステップＳ１６５１'でのロボット１０１の把持力の判定の結果に従って行われる。
【００８６】
次に、異常判定部２０４は、「ｃ．対象物の動きは把持部と同期している」に該当するか否かと「ｄ．周辺物の動きがある」に該当するか否かを判定する。この判定は、図１３のステップＳ１６５２およびステップＳ１６５３の判定の結果に従って行われる。
【００８７】
図１４でも、図９と同様に、該当する場合を「Ｙｅｓ」と表記し、該当しない場合を「Ｎｏ」と表記する。例えば、「Ｃ．対象物を把持するのに必要な把持力の最低値以上」、「Ｄ．対象物が破損しない範囲の値以下」、「ｃ．対象物の動きは把持部と同期している」および「ｄ．周辺物の動きがある」の全てに該当する場合には、ケース２に分類される。
このような判定によって、マニピュレーション中の状態が、ケース１１〜１６の何れかのケースに分類される。
【００８８】
以下、それぞれのケースに対する異常判定処理について説明する。
ケース１１では、把持力計測センサ１０８の計測値は、対象物１０６を把持するのに必要な把持力の最低値以下である、という状況である。この場合、このままの把持力では対象物１０６を正確に操作できない。したがって、異常判定部２０４は、ロボット１０１の把持力を力覚センサ１０５の計測値よりも上げると判定する。行動計画部２０５は、この判定の結果に従って、ロボット１０１の行動の計画を作成する。把持力を把持力計測センサ１０８の計測値以上に上げられない場合、異常判定部２０４は、ロボット１０１の動作に異常があると判定する。
【００８９】
ケース１２では、把持力計測センサ１０８の計測値は、対象物１０６を把持するのに必要な最低値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらに、ケース１２では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しており、周辺物１０７に動きがある、という状況である。この場合、ロボット１０１の動作は必ずしも正常であるとは判定できない。
【００９０】
例えば、ロボット１０１によって対象物１０６を把持しているものの、対象物１０６と周辺物１０７とが干渉していることが想定される。そのため、異常判定部２０４は、周辺物１０７の動きの度合いを求め、その結果に基づいて、ロボット１０１の動作に異常があるか否かを判定する。具体的には、異常判定部２０４は、ステップＳ１６４３により判定された周辺物１０７の位置および姿勢の変化がどの程度かといった情報を用いることにより、周辺物１０７の動きの度合いを求める。
【００９１】
例えば、異常判定部２０４は、オプティカルフローを求めることにより検出された動きベクトルが、作業空間全体を格子状に区切った時に、その全体の面積に対してどの程度の領域に該当するかによって、周辺物１０７の動きの度合いを求めることができる。異常判定部２０４は、作業空間全体に対して、動きベクトルの存在する領域（動きのある領域）が予め設定された領域以上の場合に、ロボット１０１の動きに異常があると判定する。ただし、周辺物１０７の動きの度合いが分かる方法であれば、必ずしもこのような方法を用いる必要はない。例えば、背景差分を用いる方法などを、周辺物１０７の動きの度合いを導出する方法として採用してもよい。また、周辺物１０７の動きの状況も考慮する必要がある。例えば、周辺物１０７の動きの変化から、このままの動作では対象物１０６および周辺物１０７が本来入っているべき容器の外に出てしまうような動きの変化が観測された場合、異常判定部２０４は、ロボット１０１の動作を継続すべきでないと判定する。
【００９２】
ケース１３では、把持力計測センサ１０８の計測値は、対象物１０６を把持するのに必要な把持力の最低値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらにケース１３では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しており、周辺物１０７に動きがない、という状況である。この場合、ロボット１０１は、対象物１０６のみを操作していると考えられる。したがって、異常判定部２０４は、ロボット１０１が正常な動作を行っていると判定する。よって、行動計画部２０５は、ロボット１０１に、現在の動作を引き続き継続させる。
【００９３】
ケース１４では、把持力計測センサ１０８の計測値は、対象物１０６を把持するのに必要な把持力の最低値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらに、ケース１４では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しておらず、周辺物１０７に動きがある、という状況である。この場合、対象物１０６を把持している部分に滑りが生じているものと考えられる。そのため、異常判定部２０４は、ロボット１０１の把持力を、対象物１０６および周辺物１０７を破損しない限度値まで上げて処理を継続すると判定する。行動計画部２０５は、この判定の結果に従って、ロボット１０１の行動の計画を作成する。また、異常判定部２０４は、ロボット１０１の把持力を、対象物１０６および周辺物１０７を破損しない限度値まで上げられない場合、ロボット１０１の行動の動作に異常があると判定する。
【００９４】
ケース１５では、把持力計測センサ１０８の計測値は、対象物１０６を把持するのに必要な把持力の最低値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらに、ケース１５では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しておらず、周辺物１０７に動きがない、という状況である。この場合、ケース１４のときと同様に、対象物１０６を把持している部分に滑りが生じているものと考えられる。
【００９５】
ただし、ケース１４のときと異なり、周辺物１０７の動きがないことから、対象物１０６が周辺物１０７の動かない部分に干渉していたり、周辺物１０７を動かせないように干渉していたりする状況である可能性がある。周辺物１０７の動かない部分としては、例えば対象物１０６および周辺物１０７が入っている容器そのものなどが考えられる。そのため、ケース１５でもケース１４と同様に、異常判定部２０４は、ロボット１０１の把持力を対象物１０６および周辺物１０７を破損しない限度値まで上げて処理を継続すると判定する。ただし、対象物１０６および周辺物１０７の変化をより正確に認識するために、この判定に加えて、異常判定部２０４は、ロボット１０１の動作速度を遅くすると判定する。行動計画部２０５は、この判定の結果に従って、ロボット１０１の行動の計画を作成する。また、異常判定部２０４は、ロボット１０１の把持力を、対象物１０６および周辺物１０７を破損しない限度値まで上げられない場合、ロボット１０１の行動の動作に異常があると判定する。
【００９６】
ケース１６では、把持力計測センサ１０８の計測値は、対象物１０６を把持するのに必要な最低値以上であり、且つ、対象物１０６および周辺物１０７を破損しない範囲の値も越えている、という状況である。この場合、ロボット１０１の操作を行うことで対象物１０６および周辺物１０７のいずれか一つ以上を破損してしまうので、異常判定部２０４は、対象物１０６および周辺物１０７の動きに関わらず、ロボット１０１の動作に異常があると判定する。
【００９７】
以上が本実施形態における異常判定処理で行われる内容の一例である。ただし、異常判定処理の方法として、以上の方法以外の方法を採用してもよい。すなわち、ロボット１０１の把持力が、対象物１０６の把持に必要な値以上であるか否かと、対象物１０６および周辺物１０７を破損しない範囲の値以下であるか否かを判定できる方法であれば他の方法を採用してもよい。また、対象物１０６および周辺物１０７の位置および姿勢の変化を見られる方法であれば、他の方法を採用してもよい。
【００９８】
また、ケース１２における異常判定処理を、第１の実施形態で説明したケース２または後述する第３の実施形態で説明するケース２２のようにしてもよい。同様に、ケース１４における異常判定処理を、第１の実施形態で説明したケース４または後述する第３の実施形態で説明するケース２４のようにしてもよい。
【００９９】
以上のように本実施形態では、対象物１０６を操作中のロボット１０１の把持力を把持力計測センサ１０８により計測する。したがって、ロボット１０１のエンドエフェクタにかかる力およびトルクを計測しなくても、マニピュレーション中のロボット１０１の動作が異常であるか否かを正確に判定することができ、第１の実施形態で説明した効果と同じ効果が得られる。
【０１００】
（第３の実施形態）
次に、第３の実施形態を説明する。第１の実施形態では、ロボット１０１のエンドエフェクタ（把持部）にかかる力およびトルクを計測する力覚センサ１０５を用いて、ロボット１０１の動作の異常を検知する場合を例に挙げて説明した。また、第２の実施形態では、ロボット１０１のエンドエフェクタ（把持部）の把持力を計測する把持力計測センサ１０８（力覚センサ）を用いて、ロボット１０１の動作の異常を検知する場合を例に挙げて説明した。これに対して、本実施形態では、ロボット１０１のエンドエフェクタ（把持部）のうち、対象物１０６を把持および搬送する際の対象物１０６との接触部分にかかる力およびトルクを直接的に計測する力覚センサを用いて、ロボット１０１の動作の異常を検知する。このように本実施形態と第１および第２の実施形態は、主に、力覚センサによる計測の対象が異なると共に、力覚センサによる計測の対象が異なることによる処理の一部が異なる。したがって、本実施形態の説明において、第１および第２の実施形態と同一の部分については、図１〜図１４に付した符号と同一の符号を付すなどして詳細な説明を省略する。
【０１０１】
図１５は、ロボットシステムの構成の一例を示す図である。図１５に示すロボットシステムは、図１に示すロボットシステムに対して、力覚センサ１０５がなくなり、把持部力覚センサ１０９が追加されたものである。図１５は、機器構成の一例であり、本発明の適用範囲を限定するものではない。
【０１０２】
把持部力覚センサ１０９は、ロボット１０１のエンドエフェクタの把持部のうち、把持する物体（対象物１０６）と接触する部分である把持接触部に取り付けられている。本実施形態の把持部力覚センサ１０９は、ひずみゲージや圧電素子を用いて構成され、ロボット１０１で対象物１０６を把持しているときの把持接触部にかかる力およびトルクを計測する力覚センサである。把持部力覚センサ１０９で取得される力覚情報は、情報処理装置１０４にて処理される。
【０１０３】
本実施形態において、マニピュレーション中のロボット１０１の動作の異常を検知するための情報処理装置１０４の機能要素の構成と機能要素間の関係は図２に示したものと同じである。ただし、図２に示す力覚センサ１０５は把持部力覚センサ１０９に代わる。
また、本実施形態において、ロボットシステムを実現するための情報処理装置１０４の処理の一例を示すフローチャートは図３と同じである。ただし、本実施形態では、ステップＳ１６００の異常検知処理が以下のようになる。
【０１０４】
図１６は、本実施形態における異常検知処理（図３のステップＳ１６００に対応するステップＳ１６００' 'の詳細な処理）の一例を説明するフローチャートである。以下、図１６のフローチャートに従って、異常検知処理の手順を説明する。
ステップＳ１６００''は、本実施形態で行われる異常検知処理である。図５に示したステップＳ１６００と異なるステップＳ１６２０''およびステップＳ１６５０''について説明する。
【０１０５】
ステップＳ１６２０''では、力・トルク計測部２０８は、ステップＳ１６１０で取得された力覚情報に基づき、第１の導出処理を実行する。第１の導出処理は、把持接触部の力・トルク情報を計測する処理である。把持接触部の力・トルク情報は、対象物１０６をマニピュレーション中にロボット１０１のエンドエフェクタの把持接触部にかかる力およびトルクを示す情報である。
図１７は、図１６のステップＳ１６０２''の詳細な処理の一例を説明するフローチャートである。以下、ステップＳ１６２０''に該当するステップＳ１６２１''からステップＳ１６２２''の処理を、図１７のフローチャートに従って説明する。
【０１０６】
ステップＳ１６２１''では、力・トルク計測部２０８は、ロボット１０１が対象物１０６を操作しているときの把持接触部にかかる力に基づいて、ロボット１０１の座標系における把持接触部の鉛直方向の合力を計算する。ロボット１０１が対象物１０６を操作しているときの把持接触部にかかる力は、力覚情報から得られる。対象物１０６を操作するとき、ロボット１０１には対象物１０６の質量の分だけ力がかかる。このとき計測される力は、把持部力覚センサ１０９の座標系のＸ、Ｙ、Ｚ成分の計測値で求まる。力・トルク計測部２０８は、これらの成分に基づいて、ロボット１０１の座標系における把持接触部の鉛直方向の合力を求める。こうすることで、重力加速度の方向においてロボット１０１にかかっている力が求まり、対象物１０６を把持できているか否かの判定の際に利用できる。ただし、ロボット１０１の座標系における把持接触部の鉛直方向の合力は、ロボット１０１が把持している対象物１０６の質量が求まるならば、他の方法で計算してもよい。
【０１０７】
次に、ステップＳ１６２２''では、力・トルク計測部２０８は、ロボット１０１が対象物１０６を操作しているときの把持接触部にかかるトルクに基づいて、把持接触部における推定トルクを計算する。ロボット１０１が対象物１０６を操作しているときの把持接触部にかかるトルクは、力覚情報から得られる。対象物１０６を操作するとき、ロボット１０１には対象物１０６の慣性モーメントの分だけトルクがかかる。このとき計測されるトルクは、把持部力覚センサ１０９の座標系のＸ、Ｙ、Ｚ成分の各軸の回転方向α、β、γに対して求まる。力・トルク計測部２０８は、これらの成分の値に基づいて、ロボット１０１が対象物１０６を把持する姿勢に応じたトルクを、把持接触部における推定トルクとして計算する。把持接触部に力覚センサが取り付けられている場合、ロボット１０１が対象物１０６を把持する方向をＺ軸と置くと、トルクはＸ−Ｙ平面に対して求まる。計測されるトルクの方向は、このＸ−Ｙ平面に対して、ロボット１０１が対象物１０６を把持する姿勢に応じて任意に決定される。こうすることで、把持接触部にかかっているトルクが求まり、対象物１０６を把持できているか否かの判定の際に利用できる。ただし、把持接触部における推定トルクは、把持接触部にかかっているトルクが求まるならば他の方法で計算してもよい。また、必ずしも、ステップＳ１６２１''およびステップＳ１６２２''の両方の処理を行う必要はなく、いずれか一つの処理を行ってもよい。ステップＳ１６２２''の処理が終わった後、図１６のステップＳ１６３０へ移行する。
【０１０８】
ステップＳ１６５０''では、異常判定部２０４は、ステップＳ１６２０''で導出された把持接触部の力・トルク情報と、ステップＳ１６４０で導出された対象物１０６および周辺物１０７の位置および姿勢の変化とに基づいて、異常判定を行う。異常判定部２０４では、把持部力覚センサ１０９および撮像装置１０２（ビジョンセンサ）からの複数の情報を入力として、ロボット１０１の動作の異常の度合いの判定結果を出力とする。図１８は、図１６のステップＳ１６５０''の詳細な処理の一例を説明するフローチャートである。以下、ステップＳ１６５０''に該当し、ステップＳ１６５０と処理が異なるステップＳ１６５１''およびステップＳ１６５４''の処理の手順を、図１８のフローチャートに従って説明する。
【０１０９】
ステップＳ１６５１''では、異常判定部２０４は、ステップＳ１６２０''で導出された把持接触部の力・トルク情報に示される力およびトルクが、予め設定された範囲のうち、どの範囲にあるのかを判定する。例えば、異常判定部２０４は、ステップＳ１６２０で導出された力・トルク情報に示される力およびトルクが、対象物１０６の把持あるいは搬送に必要な範囲内であるか否かを判定する。また、異常判定部２０４は、ステップＳ１６２０''で導出された把持接触部の力・トルク情報に示される力およびトルクが、対象物１０６および周辺物１０７を破損しない範囲内であるか否かを判定する。
【０１１０】
この把持あるいは搬送に必要な範囲となる値や、対象物１０６および周辺物１０７を破損しない範囲の値といったパラメータは、例えば、設計者が以下のようにして予め設定する。まず、対象物１０６の質量がＭ［ｇ］であり、そのばらつきが±ｍ［ｇ］であるとする。この場合、対象物１０６の質量をＭ±ｍ［ｇ］と設定する。したがって、重力加速度をｇ［ｍ／ｓ2］、静止摩擦係数をμとすれば、対象物１０６を把持するのに必要な力を（Ｍ±ｍ）×μ×ｇ［Ｎ］と設定できる。そのため、このステップＳ１６２１''で計算された、ロボット１０１の座標系における把持接触部の鉛直方向の合力が、この設定値以上ならば、対象物１０６の把持に必要な力がロボット１０１に印加されているものと考えられる。
【０１１１】
この設定値は予め設計者が決めておくことができる。また、この設定値として、対象物１０６に対応するような値を予め設定しておいてもよい。さらに、この設定値は、対象物１０６の操作に必要な値を設定できれば他の方法で設定してもよい。
ステップＳ１６５１''の判定を行うことによって、ステップＳ１６２０''で計算されたロボット１０１の把持力に基づいて、対象物１０６を操作している力学的状態がどのような状態にあるかを分類できるというメリットがある。
【０１１２】
ステップＳ１６５４''では、異常判定部２０４は、ステップＳ１６５１''、ステップＳ１６５２、およびステップＳ１６５３の判定の結果に基づいて、異常判定処理を行う。図１９は、異常判定処理の内容の一例を表形式で示す図である。以下、図１９を参照しながら、異常判定処理の一例を説明する。
【０１１３】
まず、異常判定部２０４は、ステップＳ１６２０''で導出された把持接触部の力・トルク情報に示される力およびトルクが、図１９の「Ｅ．対象物を把持するのに必要な把持力の最低値以上」に該当するか否かを判定する。また、異常判定部２０４は、ステップＳ１６２０''で導出された把持接触部の力・トルク情報に示される力およびトルクが、図１９の「Ｆ.対象物が破損しない範囲の値以下」に該当するか否かを判定する。この判定は、図１８のステップＳ１６５１''の把持接触部の力およびトルクの判定の結果に従って行われる。
【０１１４】
次に、異常判定部２０４は、「ｅ．対象物の動きは把持部と同期している」に該当するか否かと「ｆ．周辺物の動きがある」に該当するか否かを判定する。この判定は、図１８のステップＳ１６５２''およびステップＳ１６５３''の判定の結果に従って行われる。
【０１１５】
図１９でも図９と同様に、該当する場合を「Ｙｅｓ」と表記し、該当しない場合を「Ｎｏ」と表記する。例えば、「Ｅ．対象物を把持するのに必要な把持力の最低値以上」、「Ｆ.対象物が破損しない範囲の値以下」、「ｅ．対象物の動きは把持部と同期している」および「ｆ．周辺物の動きがある」の全てに該当する場合には、ケース２２に分類される。
このような判定によって、マニピュレーション中の状態が、ケース２１〜２６の何れかのケースに分類される。
【０１１６】
以下、それぞれのケースに対する異常判定処理について説明する。ここでは、対象物１０６を把持しているロボット１０１のエンドエフェクタの把持接触部にかかっている力を用いて、ロボット１０１の動作の異常の有無を判定する場合を例に挙げて説明する。しかしながら、力をトルクに置き換えて適用してもよい。また、力とトルクの双方を用いてもよい。
【０１１７】
ケース２１では、把持部力覚センサ１０９の計測値は、対象物１０６を把持するのに必要な把持力の最低値に対応する値以下である、という状況である。この場合、このままの把持力では対象物１０６を正確に操作できない。したがって、異常判定部２０４は、ロボット１０１の把持力を把持部力覚センサ１０９の計測値よりも上げると判定する。行動計画部２０５は、この判定の結果に従って、ロボット１０１の行動の計画を変更する。把持力を把持部力覚センサ１０９の計測値以上に上げられない場合、異常判定部２０４は、ロボット１０１の動作に異常があると判定する。
【０１１８】
ケース２２では、把持部力覚センサ１０９の計測値は、対象物１０６を把持するのに必要な把持力の最低値に対応する値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらに、ケース２２では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しており、周辺物１０７に動きがある、という状況である。この場合、ロボット１０１の動作は必ずしも正常であるとは判定できない。
【０１１９】
例えば、ロボット１０１によって対象物１０６を把持しているものの、対象物１０６と周辺物１０７とが干渉していることが想定される。そのため、異常判定部２０４は、周辺物１０７の動きの度合いを求め、その結果に基づいて、ロボット１０１の動作に異常があるか否かを判定する。具体的には、異常判定部２０４は、ステップＳ１６４３により判定された周辺物１０７の位置および姿勢の変化がどの程度かといった情報を用いることにより、周辺物１０７の動きの度合いを求める。
【０１２０】
例えば、異常判定部２０４は、オプティカルフローを求めることにより検出された動きベクトルが、作業空間全体を格子状に区切った時に、その全体の面積に対してどの程度の領域に該当するかによって、周辺物１０７の動きの度合いを求めることができる。異常判定部２０４は、作業空間全体に対して、動きベクトルの存在する領域（動きのある領域）が予め設定された領域以上の場合に、ロボット１０１の動きに異常があると判定する。ただし、周辺物１０７の動きの度合いが分かる方法であれば、必ずしもこのような方法を用いる必要はない。例えば、背景差分を用いる方法などを、周辺物１０７の動きの度合いを導出する方法として採用してもよい。また、周辺物１０７の動きの状況も考慮する必要がある。例えば、周辺物１０７の動きの変化から、このままの動作では対象物１０６および周辺物１０７が本来入っているべき容器の外に出てしまうような動きの変化が観測された場合、異常判定部２０４は、ロボット１０１の動作を継続すべきでないと判定する。
【０１２１】
把持部力覚センサ１０９の計測値としてトルクを用いる場合には、その計測値を利用して、マニピュレーションの状態を推定してもよい。例えば、ロボット１０１が対象物１０６の重心の近傍を把持している場合には、エンドエフェクタの対象物１０６を把持する平面に対して回転方向のトルクはほとんど発生しない。一方、対象物１０６と周辺物１０７との干渉がある場合にはトルクが発生する。そのトルクの発生している回転方向の外力が対象物１０６に印加されていることが推定される。したがって、異常判定部２０４は、対象物１０６に対する周辺物１０７のおおよその干渉状態を求め、その干渉状態をやわらげる方向へロボット１０１を動作させると判定する。行動計画部２０５は、この判定の結果に従って、ロボット１０１の行動の計画を作成する。
【０１２２】
ケース２３では、把持部力覚センサ１０９の計測値は、対象物１０６を把持するのに必要な把持力の最低値に対応する値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらに、ケース２３では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しており、周辺物１０７に動きがない、という状況である。この場合、ロボット１０１は、対象物１０６のみを操作していると考えられる。したがって、異常判定部２０４は、ロボット１０１が正常な動作を行っていると判定する。よって、行動計画部２０５は、ロボット１０１に、現在の動作を引き続き継続させる。
【０１２３】
ケース２４では、把持部力覚センサ１０９の計測値は、対象物１０６を把持するのに必要な把持力の最低値に対応する値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらに、ケース２４では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しておらず、周辺物１０７に動きがある、という状況である。この場合、対象物１０６を把持している部分に滑りが生じているものと考えられる。そのため、異常判定部２０４は、ロボット１０１の把持力を、対象物１０６および周辺物１０７を破損しない限度値まで上げて処理を継続すると判定する。行動計画部２０５は、この判定の結果に従って、ロボット１０１の行動の計画を変更する。また、異常判定部２０４は、ロボット１０１の把持力を、対象物１０６および周辺物１０７を破損しない限度値まで上げられない場合、ロボット１０１の行動の動作に異常があると判定する。
【０１２４】
また、対象物１０６と周辺物１０７との干渉状態を推定するには、ケース２２で説明したのと同様に、把持部力覚センサ１０９がトルクを計測しているのであれば、異常判定部２０４は、その計測値からおおよその干渉状態を求めることができる。あるいは、異常判定部２０４は、エンドエフェクタの対象物１０６を把持する平面の方向の力を、把持部力覚センサ１０９の計測値から導出することにより、対象物１０６の滑りの状況を直接的に推定してもよい。対象物１０６の滑りの方向を検知できた場合、異常判定部２０４は、対象物１０６の滑りを軽減させるために、ロボット１０１により外力を与える方向を変化させ、マニピュレーションを継続すると判定する。
【０１２５】
ケース２５では、把持部力覚センサ１０９の計測値は、対象物１０６を把持するのに必要な把持力の最低値以上、対象物１０６および周辺物１０７を破損しない範囲の値以下である、という状況である。さらに、ケース２５では、対象物１０６の動きは、ロボット１０１のエンドエフェクタ（把持部）の動きに同期しておらず、周辺物１０７に動きがない、という状況である。この場合、ケース２４のときと同様に、対象物１０６を把持している部分に滑りが生じているものと考えられる。
【０１２６】
ただし、ケース２４のときと異なり、周辺物１０７の動きがないことから、対象物１０６が周辺物１０７の動かない部分に干渉している可能性がある。したがって、異常判定部２０４は、このときの把持接触部の力の方向およびトルクの方向などに基づいて、対象物１０６および周辺物１０７を破損しない範囲でロボット１０１の把持力を上げて処理を継続すると判定する。このとき、ケース２４で説明したように、異常判定部２０４は、ロボット１０１の動作速度を遅くすると判定してもよい。また、異常判定部２０４は、ロボット１０１の把持力を、対象物１０６および周辺物１０７を破損しない限度値まで上げられない場合、ロボット１０１の行動の動作に異常があると判定する。
【０１２７】
ケース２６では、把持部力覚センサ１０９の計測値は、対象物１０６を把持するのに必要な最低値以上であり、且つ、対象物１０６および周辺物１０７を破損しない範囲の値も越えている、という状況である。ロボット１０１の操作を行うことで対象物１０６および周辺物１０７のいずれか一つ以上を破損してしまうので、異常判定部２０４は、対象物１０６および周辺物１０７の動きに関わらず、ロボット１０１の動作に異常があると判定する。
【０１２８】
尚、ケース２２における異常判定処理を、第１の実施形態で説明したケース２または第２の実施形態で説明したケース１２のようにしてもよい。同様に、ケース４における異常判定処理を、第１の実施形態で説明したケース４または第２の実施形態で説明したケース１４のようにしてもよい。
【０１２９】
以上が本実施形態における異常判定処理で行われる内容の一例である。ただし、異常判定処理の方法として、以上の方法以外の方法を採用してもよい。すなわち、ロボット１０１の把持力が、対象物１０６の把持に必要な値以上であるか否かと、対象物１０６および周辺物１０７を破損しない範囲の値以下であるか否かを判定できる方法であれば他の方法を採用してもよい。また、対象物１０６および周辺物１０７の位置および姿勢の変化を見られる方法であれば、他の方法を採用してもよい。
【０１３０】
以上のように、対象物１０６を把持している把持接触部の力覚情報（力およびトルク）を計測することによっても、マニピュレーション中のロボット１０１の動作が異常であるか否かを正確に判定することができる。すなわち、本実施形態でも、第１の実施形態で説明した効果と同じ効果が得られる。
【０１３１】
（第４の実施形態）
次に、第４の実施形態を説明する。第１〜第３の実施形態では、対象物１０６の剛性を考慮しない場合を例に挙げて説明した。これに対し、本実施形態では、対象物１０６の剛性を考慮して操作位置を決定することにより、ロボット１０１の動作の異常をより早く正確に検知することを可能とする。このように本実施形態と第１〜第３の実施形態は、対象物１０６の剛性を考慮する点が主として異なる。したがって、本実施形態の説明において、第１〜第３の実施形態と同一の部分については、図１〜図１９に付した符号と同一の符号を付すなどして詳細な説明を省略する。
【０１３２】
図２０は、情報処理装置１０４'の機能的な構成の一例を示す図である。図２０に示す情報処理装置１０４'は、図２に示す情報処理装置１０４に対して、操作位置決定部２１０がなくなり、柔軟物操作位置決定部２１０'が追加されたものである。図２と異なる部分である柔軟物操作位置決定部２１０'について説明する。
【０１３３】
柔軟物操作位置決定部２１０'は、位置・姿勢計測部２０９からの位置・姿勢情報を入力として、対象物１０６の把持位置およびリリース位置を、対象物１０６の操作位置として決定する。柔軟物操作位置決定部２１０'は、対象物１０６の各部の剛性を考慮し、対象物１０６のより剛性の高い部分、または、より変形しにくい部分がロボット１０１により把持されるように操作位置を決定する。このようにすることにより、力覚情報の判定を早く正確に行えるようにすることができる。柔軟物操作位置決定部２１０'で決定された操作位置は、行動計画部２０５へ出力される。
【０１３４】
図２１は、ロボットシステムを実現するための情報処理装置１０４'の処理の一例を説明するフローチャートである。以下、図３に示したフローチャートと異なる部分について、図２１のフローチャートに従って処理の手順を説明する。
ステップＳ１３００'では、柔軟物操作位置決定部２１０は、ステップＳ１２００で計測された結果（把持すべき対象物１０６の位置および姿勢）に基づいて、対象物１０６の操作位置を決定する。
【０１３５】
図３のステップＳ１３００では、操作位置決定部２１０は、ロボット１０１のエンドエフェクタの形状を考慮して、目標位置・姿勢へ対象物１０６を操作するための把持位置が決定する。これに対し、ステップＳ１３００'では、柔軟物操作位置決定部２１０'は、さらに対象物１０６の剛性を考慮して把持位置を決定する。図２２は、図２１のステップＳ１３００'の詳細な処理の一例を説明するフローチャートである。以下、ステップＳ１３００'に該当するステップＳ１３０１'からステップＳ１３０３'の処理の手順を、図２２のフローチャートに従って説明する。
【０１３６】
ステップＳ１３０１'では、柔軟物操作位置決定部２１０'は、把持可能箇所を選定する。柔軟物操作位置決定部２１０'は、位置・姿勢計測部２０９から得られた対象物１０６の位置および姿勢の情報に基づいて、対象物１０６のどの位置ならば把持可能であり、目的とする操作を行えるかを判断する。そして、柔軟物操作位置決定部２１０'は、対象物１０６のうち、ロボット１０１で把持することが可能な箇所を把持可能箇所として一つ以上選定する。
前述したように、部品データベース２０３には、対象物１０６および周辺物１０７の形状の情報（ＣＡＤデータ等）が記憶されている。柔軟物操作位置決定部２１０'は、把持可能箇所を選定するに際し、位置・姿勢計測部２０９から得られた対象物１０６の位置および姿勢の情報に加えて、対象物１０６の形状の情報を参照することができる。
【０１３７】
次に、ステップＳ１３０２'では、柔軟物操作位置決定部２１０'は、対象物１０６の剛性と、ロボット１０１により対象物１０６を把持した場合に対象物１０６に生じる変形とを推定する。具体的に、柔軟物操作位置決定部２１０'は、ステップＳ１３０１'で選定された一つ以上の把持可能箇所について、剛性および変形の度合いを推定する。例えば、対象物１０６の剛性が均一でない場合、ロボット１０１が、剛性が小さい箇所よりも、剛性が大きい箇所を把持する方が好ましい。対象物１０６を操作する時の力覚情報が安定しやすく、また、エンドエフェクタ（把持部）のストロークも短くなることから、ロボット１０１の動作の異常をより早く正確に検知できるからである。同様の理由から、対象物１０６がケーブルのような変形しやすい物体の場合、輪になって膨らんでいるような部分よりもシュリンクされてまとまっている部分を把持した方が好ましい。
【０１３８】
ステップＳ１３０２'の処理を行うために、例えば、対象物１０６の各位置の剛性を示す情報を部品データベース２０３に記憶させることができる。柔軟物操作位置決定部２１０'は、把持可能箇所の剛性および変形の度合いを推定する際に、対象物１０６の位置および姿勢の情報と、対象物１０６の形状の情報と、対象物１０６の各部（各位置）の剛性を示す情報とを参照することができる。
【０１３９】
ステップＳ１３０３'では、柔軟物操作位置決定部２１０'は、操作位置を決定する。柔軟物操作位置決定部２１０'は、ステップＳ１３０１'で選定された把持可能箇所の中から、ステップＳ１３０２'で推定された剛性および変形度の合いを元にして、より剛性が高く、より変形が小さい部分を操作位置として決定する。
【０１４０】
以上のように本実施形態では、対象物１０６の剛性および変形の度合いを考慮してロボット１０１の操作位置を決定する。したがって、より短時間で正確に力覚情報を取得することができ、作業のタクトを短縮することができる。よって、対象物１０６をマニピュレーション中のロボット１０１の動作の異常をより短時間で正確に検知することができる。
【０１４１】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【０１４２】
（その他の実施例）
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）が当該コンピュータプログラムを読み出して実行する。
【符号の説明】
【０１４３】
１０１：ロボット、１０４：情報処理装置、１０５：力覚センサ、１０６：対象物
【図１】
0006541397.tif 000002
【図２】
0006541397.tif 000003
【図３】
0006541397.tif 000004
【図４】
0006541397.tif 000005
【図５】
0006541397.tif 000006
【図６】
0006541397.tif 000007
【図７】
0006541397.tif 000008
【図８】
0006541397.tif 000009
【図９】
0006541397.tif 000010
【図１０】
0006541397.tif 000011
【図１１】
0006541397.tif 000012
【図１２】
0006541397.tif 000013
【図１３】
0006541397.tif 000014
【図１４】
0006541397.tif 000015
【図１５】
0006541397.tif 000016
【図１６】
0006541397.tif 000017
【図１７】
0006541397.tif 000018
【図１８】
0006541397.tif 000019
【図１９】
0006541397.tif 000020
【図２０】
0006541397.tif 000021
【図２１】
0006541397.tif 000022
【図２２】
0006541397.tif 000023