(57)【要約】【課題】対象物体の把持作業における生産性の低下を抑えることを課題とする。【解決手段】情報処理装置（２０）は対象物体をロボット（１，３）により把持させる装置であって、対象物体を撮像した視覚情報を取得する取得手段（２０１）と、視覚情報から把持に関する成否確率の分布を決定する確率決定手段（２０２）と、成否確率の分布を基に対象物体に対する把持位置を決定する位置決定手段（２０３）と、把持位置にロボット（１，３）を移動させて対象物体の把持を制御する制御手段（２０４）と、対象物体の把持成否を判定する判定手段（２０５）と、把持位置における把持成否の判定結果と、成否確率とに基づいて、ロボット（１，３）のシステム状態を推定する状態推定手段（２０６）と、システム状態を通知する制御を行う表示制御手段（２０７）と、を有する。【選択図】図２
2019188516.tif 000002
【特許請求の範囲】
【請求項１】
対象物体をロボットにより把持させる情報処理装置であって、
対象物体を撮像した視覚情報を取得する取得手段と、
前記視覚情報から前記把持に関する成否確率の分布を決定する確率決定手段と、
前記成否確率の分布を基に前記対象物体に対する把持位置を決定する位置決定手段と、
前記把持位置に前記ロボットを移動させて前記対象物体の把持を制御する制御手段と、
前記対象物体の把持成否を判定する判定手段と、
前記把持位置における前記把持成否の判定結果と、前記成否確率とに基づいて、前記ロボットのシステム状態を推定する状態推定手段と、
前記システム状態を通知する制御を行う通知制御手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記状態推定手段は、前記システム状態として前記ロボットのシステムが正常状態か、異常状態か、正常と異常の間の中間状態のいずれであるかを推定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記状態推定手段は、前記判定手段で前記対象物体の把持が失敗したと判定された場合に、前記成否確率に基づいて、前記失敗の要因が前記決定された把持位置と前記把持の制御のいずれに関わるかを推定することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記判定手段は、前記判定手段で前記対象物体の把持が１回で成功したと判定した場合には前記成否確率に基づき前記システム状態を推定し、前記システム状態が前記中間状態であると推定した場合には前記失敗の要因が前記把持位置に関わると推定することを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記状態推定手段は、前記失敗の要因に基づいて前記システム状態に応じた対策を推定することを特徴とする請求項３または４に記載の情報処理装置。
【請求項６】
前記確率決定手段は、前記把持に関する成否確率の分布を、前記視覚情報と前記把持成否の判定結果との少なくともいずれかに基づいて作成された学習モデルを用いて決定することを特徴とする請求項１から５のいずれか１項に記載の情報処理装置。
【請求項７】
前記状態推定手段は、前記成否確率の分布と、前記把持成否の判定結果と、前記把持の制御の制御情報と、に基づいて、前記システム状態を推定することを特徴とする請求項１から６のいずれか１項に記載の情報処理装置。
【請求項８】
前記ロボットが物体に接触したときの外力を計測した力覚情報と、前記ロボットに対する物体の近接を計測した近接覚情報との、少なくともともいずれかを取得する、計測手段を更に有することを特徴とする請求項１から７のいずれか１項に記載の情報処理装置。
【請求項９】
前記状態推定手段は、前記力覚情報と前記近接覚情報の少なくともいずれかの情報と、前記成否確率の分布と、前記把持成否の判定結果と、前記把持の制御の制御情報と、に基づいて、前記システム状態を推定することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記ロボットのシステム動作を管理する管理手段を更に有することを特徴とする請求項１から９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記状態推定手段は、前記システム動作の管理情報に基づいて前記システム状態を推定することを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記管理手段は、過去の複数の前記システム動作の管理情報に基づいて前記システム状態を推定することを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記管理手段は、前記把持の制御の結果に前記把持成否の判定結果を関連付けて保存することを特徴とする請求項１０から１２のいずれか１項に記載の情報処理装置。
【請求項１４】
前記通知制御手段は、前記システム状態を表示装置に表示させて前記通知を行うことを特徴とする請求項１から１３のいずれか１項に記載の情報処理装置。
【請求項１５】
対象物体をロボットにより把持させる情報処理装置の情報処理方法であって、
対象物体を撮像した視覚情報を取得する取得工程と、
前記視覚情報から前記把持に関する成否確率の分布を決定する確率決定工程と、
前記成否確率の分布を基に前記対象物体に対する把持位置を決定する位置決定工程と、
前記把持位置に前記ロボットを移動させて前記対象物体の把持を制御する制御工程と、
前記対象物体の把持成否を判定する判定工程と、
前記把持位置における前記把持成否の判定結果と、前記成否確率とに基づいて、前記ロボットのシステム状態を推定する状態推定工程と、
前記システム状態を通知する制御を行う通知制御工程と、
を有することを特徴とする情報処理方法。
【請求項１６】
請求項１から１４のいずれか１項に記載の情報処理装置と、
前記システム状態の推定結果を表示する表示装置と、
を有することを特徴とする情報処理システム。
【請求項１７】
請求項１から１４のいずれか１項に記載の情報処理装置と、
前記対象物体の画像を撮像する撮像装置と、
を有することを特徴とする情報処理システム。
【請求項１８】
請求項１から１４のいずれか１項に記載の情報処理装置と、
前記対象物体を把持する把持装置と、
前記把持装置を移動させるマニピュレータと、
を有することを特徴とするロボットシステム。
【請求項１９】
コンピュータを、請求項１から１４のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対象物体を操作するロボット等の制御技術に関する。
【背景技術】
【０００２】
従来、ロボットを用いた把持作業において、対象物体の把持に失敗した場合には、再度把持を行うことにより、装置停止頻度をできるかぎり減少させるようにしている。これに対して特許文献１には、把持状態を確認しながら把持できるまでハンドを前進させることにより、効率的にリトライ動作を行い、ピッキング成功率と装置の稼働率を高めることができるピッキング方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−６９５４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の手法では、対象物体の把持動作に失敗した場合、リトライ動作を繰り返すだけであり、生産性が下がる問題がある。また、システムが停止した場合にも、復帰に時間がかかり、生産性が下がる。
【０００５】
そこで、本発明は、対象物体の把持作業における生産性の低下を抑えることを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、対象物体をロボットにより把持させる情報処理装置であって、対象物体を撮像した視覚情報を取得する取得手段と、前記視覚情報から前記把持に関する成否確率の分布を決定する確率決定手段と、前記成否確率の分布を基に前記対象物体に対する把持位置を決定する位置決定手段と、前記把持位置に前記ロボットを移動させて前記対象物体の把持を制御する制御手段と、前記対象物体の把持成否を判定する判定手段と、前記把持位置における前記把持成否の判定結果と、前記成否確率とに基づいて、前記ロボットのシステム状態を推定する状態推定手段と、前記システム状態を通知する制御を行う通知制御手段と、を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、対象物体の把持作業における生産性の低下を抑えることが可能となる。
【図面の簡単な説明】
【０００８】
【図１】第一の実施形態のシステム構成例を示す図である。
【図２】第一の実施形態の情報処理装置の機能ブロック図である。
【図３】第一の実施形態における制御手順を示すフローチャートである。
【図４】第一の実施形態における対象物体の把持成否確率分布を示す図である。
【図５】第一の実施形態におけるロボットシステムの座標系を示す図である。
【図６】第一の実施形態におけるシステム状態を説明する図である。
【図７】第二の実施形態の情報処理装置の機能ブロック図である。
【図８】第二の実施形態における制御手順を示すフローチャートである。
【図９】第二の実施形態における把持位置の決定方法を説明する図である。
【図１０】第三の実施形態における情報処理装置の機能ブロック図である。
【図１１】第三の実施形態における制御手順を示すフローチャートである。
【図１２】情報処理装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の好ましい実施形態を、添付の図面に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
本実施形態の情報処理装置は、対象物体を把持するための把持装置を空間内で移動可能とするロボットを制御する装置である。本実施形態に係る情報処理装置は、ロボットによる対象物体の把持が成功または失敗する確率の分布（把持成否確率分布とする。）を求め、その把持成否確率分布を基に把持制御を行う。また本実施形態の情報処理装置は、対象物体に対する把持位置における把持成否確率と把持成否結果とに基づいてシステムの状態を推定し、その推定結果を表示してオペレータ（ユーザ）に通知する。このように本実施形態では、システムの状態を可視化することにより、予防保全、事後保全を容易に行えるようにして、生産性を高めることを可能にしている。
【００１０】
ロボットによる把持作業を制御する本実施形態に係る情報処理装置の詳細を述べる前に、以下の本実施形態において用いる主要な用語の定義について簡単に説明する。
本実施形態で用いる各用語のうち、対象物体とは、ロボットによる把持の対象となる物体であり、例えばビニール袋や緩衝材に包まれていて光の反射や表面形状が変化する物体が挙げられる。すなわち、本実施形態では、対象物体としては、ビニール袋や緩衝材に包まれた物体のように視覚情報で位置と姿勢を正確に認識し難く、また、把持に失敗する可能性がある対象物体を想定している。本実施形態の対象物体には、ケーブルのような形状が変化する物体、充電器のような長方体形状の物体、レンズのような円柱形状の物体などの各種の物体が含まれる。
把持とは、例えばロボットアームの先端等に設けられたロボットハンド等の把持装置により対象物体を吸着したり挟んだりすることであり、対象物体を搬送できる状態にすることである。
【００１１】
把持成否確率分布とは、後述する視覚情報や近接覚情報、ロボットの把持成否判定結果の少なくともいずれかに基づき作成された学習モデルを利用して決定される、把持に成功する確率を示した分布である。詳細は後述するが、視覚情報に基づき学習モデルが作成される場合は、例えば、画像に対して、対象物体の把持が成功しそうな位置に対して人間が真値を付けて、把持成功予測位置として学習が行われる。なお、真値とは、学習における正解データのことである。この学習において、学習モデルの入力は画像情報となり、学習モデルの出力は画像における位置となる。また、ロボットの把持成否判定結果に基づき学習モデルが作成される場合は、例えば、対象物体の認識が画像処理によって行われる。そして、その画像処理により認識された画像中の位置に対して、把持できるかどうかをロボットで試した結果に基づいて真値を付けて、把持成功位置あるいは把持失敗位置として学習が行われる。このとき、学習モデルの入力は画像処理されたデータとなり、学習モデルの出力はそのデータに対して把持が成功するか失敗するかといった推定結果となる。また、視覚情報とロボットの把持成否結果の両方に基づき学習モデルが生成される場合は、例えば、画像を入力として、ロボットを使って対象物体を把持できるかどうかで学習が行われる。このとき、学習モデルの入力は画像情報となり、学習モデルの出力は画像情報から決定した位置における把持が成功するか失敗するかといった推定結果となる。なお、近接覚情報を用いる例については後述する。
【００１２】
把持位置とは、対象物体を把持するための位置である。例えばロボットハンドにおいて、吸着機構による吸着によって把持する場合には、その吸着機構で吸着する位置が把持位置である。また例えば、平行チャック機構により挟むことで把持する場合には、その挟む位置が把持位置である。
【００１３】
システム状態とは、ロボットによって対象物を把持する把持作業を実現するロボットシステムが、正常状態になっているか、異常状態になっているか、正常状態と異常状態の中間状態であるかの、いずれの状態にあるかを表す。正常状態とは、システムが問題なく稼働していて把持作業を行うことができる状態である。異常状態とは、システムに問題が発生し、把持作業が出来ずにシステムが停止する状態である。中間状態とは、システムは稼働しているものの、把持作業のリトライが少なくとも１回以上行われ、このまま稼働を続けると異常状態になる可能性がある状態である。
【００１４】
＜第一の実施形態＞
図１は、第一の実施形態に係る情報処理装置２０とロボット１０とを有して構成された情報処理システム（ロボットシステム１００とする。）の概略構成例を示した図である。なお、図１に示した機器構成はあくまで一例であり、この構成例によって本発明の適用範囲が限定されるものではない。
【００１５】
ロボット１０は、例えば多関節ロボットであり、ロボットハンド等の把持装置３と、ロボットアーム等のマニピュレータ１と、を有して構成されている。ロボット１０は、マニピュレータ１の各関節の角度を変更することで、把持装置３の位置及びその把持装置３の姿勢を変更可能な位置姿勢変更機構を備える。位置姿勢変更機構は、電動モータによって駆動されてもよいし、油圧や空気圧等の流体圧で作動するアクチュエータによって駆動されてもよい。この位置姿勢変更機構は、情報処理装置２０から出力される制御情報である動作指示情報に従って駆動される。
【００１６】
把持装置３は、ロボット１０による対象物体の種類に応じた把持動作を行うためのツールである。本実施形態では、把持装置３として、モータ駆動可能なチャック機構により対象物体を把持可能なハンドや、空気を吸引したときの大気圧によって対象物体を吸着する吸着機構を用いたハンドなどを想定する。なお、把持装置３は、マニピュレータ１に対して着脱可能に取り付けられており、ワークの種類、対象物体の種類等に応じて交換可能であるとする。また、ロボット１０は、多関節ロボットに限定されるものではなく、数値制御（Ｎｕｍｅｒｉｃａｌ  Ｃｏｎｔｒｏｌ：ＮＣ）が可能な可動式の機構を備えたものであってもよい。
【００１７】
ロボット１０は、情報処理装置２０によって決定された行動を実施し、対象物体４１を搬送したり把持したりする操作を実行する。なおこの場合の行動とは、対象物体４１を認識あるいは操作するためのロボット１０の動作のことである。
【００１８】
対象物体４１は、前述したように例えばビニール袋に包まれているケーブル等のような、ロボット１０によって把持されて搬送されることが想定される物体である。図１に例示した対象物体４１は、例えばバラ積み或いは整列配置された個々の物体の中で把持される対象物体となされている。例えばバラ積み状態にある複数の物体の中の一つが対象物体４１になるため、求めた把持位置に伴いロボット１０が把持動作を行うごとに対象物体４１は更新されることになる。
【００１９】
また対象物体４１の周辺には、周辺物体４２が存在する。周辺物体４２は、把持される対象物体４１の周辺に位置している全ての物体である。例えば、対象物体４１の周辺に存在している当該対象物体と同種類のバラ積み或いは整列配置された物体や、対象物体４１を収容している部品箱、その部品箱の周辺に置かれた物体も、全て周辺物体４２に含まれる。
【００２０】
またロボットシステム１００は、撮像装置２と光源４とをさらに備えている。本実施形態の場合、撮像装置２および光源４は、図１に示すように、ロボット１０に搭載されていているとする。なお、撮像装置２および光源４は、ロボット１０に搭載されていている場合だけでなく、撮像対象空間の上方等に固定配置されていてもよいし、他の作業機械に搭載されていてもよい。また、撮像装置２は複数配置されていてもよい。
【００２１】
光源４は、例えばプロジェクタによって構成され、可視光を出射したり、レーザ光源から赤外光を出射したりすることで、対象物体４１および周辺物体４２に対して均一照明光やパターン光を投射する。
【００２２】
撮像装置２は、カメラや、光を検出するセンサ、フォトダイオードなどで構成される視覚センサであり、対象物体４１および周辺物体４２を撮像した画像情報を、視覚情報として取得する。そして、撮像装置２は、それら対象物体４１および周辺物体４２の視覚情報（画像情報）を情報処理装置２０に出力する。なお、図１の構成例の場合、撮像装置２は、光源４からの光が投射された状態で対象物体４１および周辺物体４２を撮像するようになされているが、光源４からの光が投射されていない状態で対象物体４１および周辺物体４２を撮像することもできる。
【００２３】
また本実施形態の撮像装置２は、視覚情報として例えば二次元カラー画像情報を取得するが、距離画像情報を視覚情報として取得してもよく、それら二次元カラー画像情報と距離画像情報の両方を視覚情報として取得してもよい。距離画像情報は、一例として、光源４から投光した赤外線パターンを撮像装置２で読み取り、三角測量の原理で距離情報を得るＬｉｇｈｔ  Ｃｏｄｉｎｇ方式を用いることにより取得可能である。あるいは、距離画像情報は、投光した赤外線パルスが反射して戻ってくるまでの時間から距離情報を得るＴｉｍｅ  ｏｆ  Ｆｌｉｇｈｔ（ＴｏＦ）方式により取得してもよい。その他にも、距離画像情報は、三角測量の原理によりステレオカメラを使った視差情報から距離情報を得る方式や、前述した各方式以外の他の方式を用いて取得してもよい。
【００２４】
表示装置７は、ディスプレイとスピーカーを有した装置である。本実施形態の場合、表示装置７は、情報処理装置２０からシステム状態推定結果を受けとり、そのシステム状態推定結果を画面表示する。
【００２５】
図２は、ロボットシステム１００および情報処理装置２０の機能ブロック図である。
図２に示すように、情報処理装置２０は、取得部２０１と、確率決定部２０２と、位置決定部２０３と、制御部２０４と、判定部２０５と、状態推定部２０６と、表示制御部２０７とを有して構成されている。
【００２６】
取得部２０１は、撮像装置２から出力される視覚情報を取得する。取得部２０１は、取得した視覚情報を画像データに変換し、確率決定部２０２に出力する。取得部２０１は、例えばキャプチャボードやメモリ（ＲＡＭ）によって構成される。
【００２７】
確率決定部２０２は、取得部２０１が取得した画像データに基づいて、ロボット１０による対象物体４１の把持が成功または失敗する成否確率の分布（把持成否確率分布）を決定する。確率決定部２０２は、決定した把持成否確率分布を位置決定部２０３に送る。本実施形態の場合、把持成否確率分布を求める際には、学習モデルとして例えば深層学習モデルの一例であるＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）を使い推定を行う。その場合は、適宜、データベース（ＤＢ）を参照し、データベースに保存された学習モデルを利用する。確率の値は、例えば０から１の間の数値で表現され、把持に成功する確率が高い方が大きい値で表現される。
【００２８】
位置決定部２０３は、把持装置３による把持のための把持位置と、その把持位置に把持装置３を移動させて対象物体を把持させるためのマニピュレータ１の目標位置および目標姿勢とを生成する。位置決定部２０３は、目標位置や目標姿勢だけでなく、マニピュレータ１の目標軌道を生成してもよい。以下、マニピュレータ１の目標位置と目標姿勢、さらに目標軌道をも含めて「目標位置姿勢」と表記し、特に、把持装置３による把持のためのマニピュレータ１の目標位置姿勢を「把持目標位置姿勢」と表記することにする。本実施形態の場合、位置決定部２０３は、確率決定部２０２により決定された把持成否確率分布に基づいて、把持装置３による把持のための把持位置と、マニピュレータ１の把持目標位置姿勢とを決定する。また、位置決定部２０３は、撮像装置２による撮影のためのマニピュレータ１の目標位置姿勢についても生成するものとする。以下、特に、撮像装置２による撮影のためのマニピュレータ１の目標位置姿勢を「撮影位置姿勢」と表記することにする。なお、撮像装置２による撮影のためのマニピュレータ１の撮影位置姿勢は、図示しない撮像位置姿勢決定部などにより生成されてもよい。そして、位置決定部２０３は、決定した把持位置と目標位置姿勢を制御部２０４に送る。
【００２９】
制御部２０４は、位置決定部２０３から取得した目標位置姿勢を基に、マニピュレータ１が目標位置姿勢になるように制御する。例えば、制御部２０４は、図１のようにロボット１０に搭載されている撮像装置２が対象物体４１および周辺物体４２を撮影する時には、前述のように位置決定部２０３で決定された撮影位置姿勢を基にマニピュレータ１を制御する。そして、マニピュレータ１が撮影位置姿勢になって撮像装置２の移動が完了すると、制御部２０４は、撮像装置２に対し撮像を行わせるための撮影トリガーを送る。なおこの場合、制御部２０４は、撮像装置２による撮影に合わせて光源４を発光させるような発光制御についても適宜行う。また、制御部２０４は、把持装置３によって対象物体４１の把持が行われる時には、前述のように位置決定部２０３で決定された把持目標位置姿勢を基にマニピュレータ１を制御して、把持装置３が対象物体４１を把持できるようにする。そして、マニピュレータ１が把持目標位置姿勢になって把持装置３の移動が完了すると、制御部２０４は、把持装置３に対し対象物体４１を把持位置で把持させるための把持トリガーを送る。
【００３０】
判定部２０５は、把持装置３において対象物体４１の把持動作が実行されたときに、その把持が成功したか失敗したかの判定を行い、その把持成否結果を状態推定部２０６に出力する。例えば、把持装置３が吸着機構である場合、吸着時の真空到達度を計測することによって、把持が成功したかどうかの判定を行う。具体的には、吸着成功時の真空到達度の閾値を予め設定しておき、判定部２０５は、吸着動作実行時に真空到達度を計測して、その計測値と閾値とを比較する。そして、判定部２０５は、真空到達度の計測値が閾値に達していれば吸着できているため吸着成功（把持成功）と判定し、一方、計測値が閾値に達していなければ吸着できていないため吸着失敗（把持失敗）と判定する。また例えば、把持装置３が平行チャック機構である場合には、その平行チャック機構の把持幅を評価することで、把持が成功したかどうかの判定を行う。具体的には、把持位置における対象物体４１の大きさ（幅）を予め設定しておき、判定部２０５は、把持動作実行時に平行チャック機構の把持幅を計測し、その把持幅が対象物体４１の把持位置の幅に合致しているのであれば把持成功と判定する。一方、判定部２０５は、平行チャック機構の把持幅が対象物体４１の把持位置の幅に合致していない場合には、把持が失敗したと判定する。例えば平行チャック機構が閉じ過ぎている場合には、何も把持できていない状態である可能性が高いので、把持失敗と判定する。また例えば、平行チャック機構が開き過ぎている場合には、目標とは異なる物体あるいは複数の物体を把持したことで、把持幅が大きくなっている可能性があるので、把持失敗と判定する。
【００３１】
状態推定部２０６は、位置決定部２０３を経由して確率決定部２０２から把持成否確率分布を取得し、また、判定部２０５から把持成否判定結果を取得する。そして、状態推定部２０６は、把持成否確率分布と把持成否判定結果とに基づいて、ロボットシステム１００におけるシステム状態を推定する。本実施形態の場合、状態推定部２０６は、ロボットシステム１００が、前述した正常状態、異常状態、中間状態のいずれの状態になるかを推定する。そして、状態推定部２０６は、そのシステム状態推定結果を、表示制御部２０７に出力する。
【００３２】
表示制御部２０７は、状態推定部２０６からシステム状態推定結果を取得し、そのシステム状態推定結果を基にオペレータ等のユーザへ通知する通知制御を行う。本実施形態の場合、オペレータへの通知は表示により行われる例を挙げており、このため表示制御部２０７は、システム状態推定結果を表示装置７に表示する表示内容を制御することによる通知を行う。これにより、表示装置７には、ロボットシステム１００の状態が正常状態、異常状態、中間状態のいずれの状態になるかの推定結果が表示される。すなわち本実施形態の場合、表示装置７にシステム状態推定結果が表示されることにより、オペレータ等のユーザに対して、ロボットシステム１００の状態が正常状態、異常状態、中間状態のいずれの状態になるかの推定結果を適切に通知することができる。ユーザは、そのシステム状態の推定結果を基に、予防保全、事後保全を容易に行えることになり、その結果、ロボットシステムにおける生産性を高めることが可能となる。
【００３３】
図１２は、本実施形態の情報処理装置２０のハードウェア構成の一例を示した図である。
本実施形態の情報処理装置２０は、ロボット１０の動作を制御するロボット制御装置であり、例えばパーソナルコンピュータ（ＰＣ）により構成されている。図１２に示すように、情報処理装置２０は、ＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、外部メモリ２４と、入力部２５と、表示部２６と、通信Ｉ／Ｆ２７と、システムバス２８とを有して構成されている。
【００３４】
ＣＰＵ２１は、情報処理装置２０における動作を統括的に制御するものであり、システムバス２８を介して、各構成部（２１〜２７）を制御する。ＲＯＭ２２は、ＣＰＵ２１が処理を実行するために必要なプログラムを記憶する不揮発性メモリである。なお、当該プログラムは、外部メモリ２４や着脱可能な記憶媒体（不図示）に記憶されていてもよい。ＲＡＭ２３は、ＣＰＵ２１の主メモリ、ワークエリアとして機能する。すなわち、ＣＰＵ２１は、処理の実行に際してＲＯＭ２２から必要なプログラムをＲＡＭ２３にロードし、当該プログラムを実行することで各種の機能動作を実現する。例えば図２の情報処理装置２０内の取得部２０１、確率決定部２０２、位置決定部２０３、制御部２０４、判定部２０５、状態推定部２０６、表示制御部２０７の各機能は、ＣＰＵ２１がプログラムを実行することにより実現することができる。
【００３５】
外部メモリ２４は、例えば、ＣＰＵ２１がプログラムを用いた処理を行う際に必要な各種データや各種情報を記憶している。また、外部メモリ２４には、例えば、ＣＰＵ２１がプログラムを用いた処理を行うことにより得られた各種データや各種情報が記憶される。入力部２５は、例えばキーボードやマウスのポインティングデバイスにより構成され、オペレータ（ユーザ）が入力部２５を介して当該情報処理装置２０に指示を与えることができるようになっている。表示部２６は、液晶ディスプレイ（ＬＣＤ）等のモニタで構成される。表示部２６は、前述した表示装置７に対応している。通信Ｉ／Ｆ２７は、外部機器と通信するためのインターフェースである。システムバス２８は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、外部メモリ２４、入力部２５、表示部２６及び通信Ｉ／Ｆ２７を通信可能に接続する。このように、情報処理装置２０は、通信Ｉ／Ｆ２７を介して、外部機器であるロボット１０、撮像装置２、把持装置３、光源４等とそれぞれ通信可能に接続されており、これらの外部機器の動作を制御する。
【００３６】
図３は、図１に示したロボットシステム１００および図１２に示した情報処理装置２０が実行するロボット制御手順を示すフローチャートである。図３に示される処理は、例えば、図１２に示した情報処理装置２０のＣＰＵ２１が、ＲＯＭ２２もしくは外部メモリ２４に格納されたプログラムを読み出して実行することにより実現される。ただし、図３の処理の一部または全部が、専用のハードウェアにより実現されてもよい。図３の処理は、例えばオペレータ（ユーザ）がロボットシステム１００を起動したときに開始される。なお、図３の処理の開始のタイミングは、ロボットシステム１００の起動時に限定されるものではない。以下の説明では、図３のフローチャートの各処理ステップＳ１〜ステップＳ１６をＳ１〜Ｓ１６と略記する。これらのことは、後述する他のフローチャートにおいても同様であるとする。
【００３７】
先ずＳ１において、ＣＰＵ２１は、システムの初期化処理を行う。すなわちＣＰＵ２１は、ＲＯＭ２２もしくは外部メモリ２４に格納されたプログラムをロードし、ＲＡＭ２３上に展開して実行可能な状態とする。また、ＣＰＵ２１は、情報処理装置２０に接続された各機器のパラメータの読み込みや初期位置への復帰を行い、使用可能な状態にする。
【００３８】
次にＳ２において、位置決定部２０３は、撮像装置２による撮影のためのマニピュレータ１の撮影位置姿勢（撮影時の目標位置姿勢）を決定する。そしてＳ２において決定された撮影位置姿勢の情報は、制御部２０４に送られる。ここで、決定される撮影位置姿勢は、対象物体４１や周辺物体４２を撮像することができるのであれば、乱数を基に決定されてもよいし、設計者が予め固定値で決めておいてもよい。その他にも、撮影位置姿勢は、範囲を指定してその範囲内において乱数を基に決定してもよいし、これら以外の方法で決定してもよい。また撮影位置姿勢は、対象物体４１や周辺物体４２が入った部品箱の検出に応じて決定されてもよい。例えば、部品箱の形状や色が既知であり、大凡配置される位置が既知である場合、位置決定部２０３は、部品箱およびその周辺を含む位置を撮像装置２で撮影して取得部２０１から確率決定部２０２を経由した知覚情報を基に決定する。例えば、位置決定部２０３は、部品箱および周辺を含む位置を撮影して取得された知覚情報を基に、部品箱の位置姿勢を検出し、その検出結果から対象物体４１に対する撮影位置を決定し、その撮影位置を基にマニピュレータ１の撮影位置姿勢を決定する。その他、例えば部品箱に所定のマーカーを貼っておき、撮像装置２にて取得した視覚情報からマーカーを検出して部品箱の位置姿勢を検出し、その検出果を基に対象物体４１の撮影位置を決定して前述同様に撮影位置姿勢を決定してもよい。
【００３９】
また、部品箱の検出結果から、部品箱に入っている部品種が分かる場合、ＣＰＵ２１は、その部品種に応じて把持位置の決定方法を切り替えてもよい。本実施形態の場合、深層学習を利用することで把持位置を決定するが、把持位置は、深層学習を利用して決定する場合だけでなく、それ以外の方法により決定されてもよい。例えば、対象物体４１が充電器やバッテリー、ストラップのような長方体形状で部品箱内に配置されている場合、長方体形状のモデル（ＣＡＤモデルあるいはＣＧモデル）を利用したフィッティング処理により把持位置を決定してもよい。具体的には、対象物体４１の三辺の寸法が事前に分かっている場合、それら三辺の値を設定することで、長方体形状のモデルを設定する。さらに、設定した長方体形状のモデルに基づき、撮像装置２が対象物体４１を撮像して得た距離画像に対してモデルフィッティングを行い、対象物体４１の位置姿勢を推定する。そして、推定した位置姿勢に基づき、事前に設定しておいた面や、把持可能であると推定された面が、把持位置として決定される。
【００４０】
把持可能であると推定される把持位置を決定する方法としては、例えば、吸着を行うのであれば吸着パッドが接触可能な平面を把持位置として決定する。また、平行チャックにより挟むのであれば、平行チャック接触面が十分に接触できる面積のある平行な面を把持位置として決定する。他の対象物体４１の置き方の例として、対象物体４１が規則的に配置されている場合、画像による認識処理を行わずに把持位置を決定してもよい。例えば、対象物体４１が、部品箱内に積み重ねられて配置された取扱説明書やコンパクトディスクのような物体である場合、部品箱の位置姿勢が分かれば対象物体４１の位置姿勢も限定される。そのため、部品箱内の決まった位置を把持位置として把持制御を行うことで、対象物体４１を把持してもよい。
【００４１】
把持制御の動作は、パレタイズのように同一平面上を規則的に移動する方法や、高さ方向だけ変化させて移動させる方法、あるいは対象物体４１を把持できるならばこれら以外の方法でもよい。対象物体４１の高さだけ撮像装置２から得た距離画像から推定するなど、一部に認識処理を用いてもよい。
【００４２】
次にＳ３において、制御部２０４は、Ｓ２で決定された撮影位置姿勢を基に、撮像装置２による撮影のためのマニピュレータ１の制御を行う。具体的には、制御部２０４は、Ｓ２で決定された撮影位置姿勢を基に、マニピュレータ１をどのように動かせばよいのかを決定する。例えば、制御部２０４は、Ｓ２で決定された撮影位置姿勢となるようにマニピュレータ１を移動させるために、目標となる位置姿勢情報を順運動学によってマニピュレータ１の関節角度情報に変換する。そして、制御部２０４は、それら関節角度情報を基に、マニピュレータ１の各関節のアクチュエータを動作させるための指令値を計算して、ロボット１０の不図示のコントローラに送る。これにより、マニピュレータ１は、その指令値に基づいて動作することになり、その結果、マニピュレータ１に搭載されている撮像装置２は、Ｓ２で決定された撮影位置姿勢となされた状態で撮影を行えるようになる。
【００４３】
次にＳ４において、制御部２０４は、撮像装置２を制御して撮像を実行させる。これにより、撮像装置２では、対象物体４１および周辺物体４２の撮像が行われる。
次にＳ５において、取得部２０１は、撮像装置２が撮像した画像情報を、対象物体４１および周辺物体４２の視覚情報として取得し、確率決定部２０２に送る。
【００４４】
次のＳ６において、確率決定部２０２は、Ｓ５で取得部２０１により取得された視覚情報を基に、対象物体４１の把持に成功／失敗する確率分布を求める。本実施形態の場合、確率決定部２０２は、例えば二次元カラー画像情報を用いた深層学習により生成された学習モデルを利用することで確率分布を決定する。
【００４５】
ここで本実施形態において、学習モデルは、詳細には例えば以下のようにして生成されている。例えば、把持装置３に吸着機構が用いられる場合、事前の深層学習では、例えばバラ積み状態の対象物体４１を撮影した二次元カラー画像の中でどの位置を吸着すれば対象物体４１を把持できるかを、人間が当該画像上で真値を与えるようにする。なお、真値とは、前述したように学習における正解データのことである。また、正解データとは、深層学習の一種であるＣＮＮに入力する画像において、把持に成功すると学習される画像中の位置のことである。真値の与え方は、例えばマウスなどの入力装置を介して、二次元カラー画像が表示された画面上で位置を指定することにより行われる。このとき、バラ積み状態がそれぞれ異なった複数の画像に対して、一つあるいは複数の真値を与えるようにする。さらに、真値を与えた画像に対して、マウスを介して指示した画素を注目画素とし、その注目画素およびその周辺画素を含む適当なサイズの画像領域（例えば１２８×１２８画素のＲＧＢ画像）を切り出す。そして、切り出した画像に対して、前述のように与えた真値を正解ラベルとして学習を行い、その学習データを蓄積する。なお、学習データを生成する際には、画像内の画像領域を正解か失敗かで分けるようにしてもよい。例えば、マウスで指示した注目画素を含む画像領域は把持に成功する位置とし、指示されていない画素を含む画像領域は把持に失敗する位置として学習してもよい。本実施形態の場合、把持成否の確率分布を決定する際に利用される学習モデルは、以上のようにして生成されて蓄積された学習データを使って、例えばＣＮＮによって学習することにより生成される。
【００４６】
そして、確率決定部２０２は、視覚情報として二次元カラー画像を入力とし、前述したような深層学習により生成された学習モデルを使って、対象物体４１に対する把持成否の確率分布を決定する。把持成否の確率分布を決定する際、確率決定部２０２は、例えば、画像内で対象物体４１が存在する範囲が分かる場合には、ＲＯＩ（Ｒｅｇｉｏｎ  ｏｆ  Ｉｎｔｅｒｅｓｔ）範囲を設定する。例えば、対象物体４１が部品箱に入っているような場合には、その部品箱の内側を対象物体４１が存在すると推定されるＲＯＩ範囲として設定してもよい。この時の部品箱の位置姿勢は、撮像装置２によって部品箱を撮影して得た画像データを基に推定してもよいし、事前に設定しておいてもよく、さらにこれら以外の方法で設定してもよい。
【００４７】
次に、確率決定部２０２は、そのＲＯＩ範囲内全体をスキャンするように、スライディングウィンドウにより画像の切り出しを行う。このときの確率決定部２０２は、画像内の、ある位置の画素を推定画素とし、その推定画素を中心として画像が適当なサイズ（例えば１２８×１２８画素）になるように切り出しを行って、推定画素とその周辺画素を含む領域を設定する。そして、確率決定部２０２は、その推定画素およびその周辺画素を含む領域の画像をＣＮＮに入力して、それぞれの領域ごとに把持成否確率を決定する。ここで、把持成否確率は、推定画素であるスライディングウィンドウの中心画素に対して与えられる。またその際、確率決定部２０２は、ＲＯＩ範囲外の画素位置については、把持が失敗する位置として成否確率を決定する。そして、確率決定部２０２は、前述のようにして求めた推定画素とその周辺画素を含む領域に対して決定した把持成否確率を用い、視覚情報として取得した二次元カラー画像に対して把持成否確率分布を決定する。
【００４８】
なお前述の例では、ＲＯＩ範囲を設定したが、ＲＯＩ範囲は必ずしも設定しなくてもよく、画像全体に対して成否確率の推定を行ってもよい。また、把持成否確率を求める時、必ずしも１画素ごとに確率を決定する必要はなく、計算時間などとのトレードオフを考慮して適切なストライドを設定して、スライディングウィンドウにより決定してもよい。また、必ずしもスライディングウィンドウを使う必要はなく、画像のセグメンテーションによって、画素ごとに成否確率の推定を行い、画像全体をＣＮＮの入力として、把持成否確率分布を決定してもよい。
【００４９】
前述のようにして決定される確率分布は、例えば、二次元カラー画像の画素ごとに０から１までの連続的な値として求められる。図４（ａ）〜図４（ｃ）は、二次元カラー画像から決定された把持成否確率分布を説明する図である。図４（ａ）は、図１に示したロボット１０と対象物体４１の相対的位置関係において、撮像装置２が対象物体４１と周辺物体４２を撮影したときに得られる二次元カラー画像のイメージ図であり、物体画像４０１が対象物体４１の画像を示している。図４（ｂ）は、図４（ａ）の二次元カラー画像から決定された把持成否確率分布を、図４（ａ）の二次元カラー画像に重畳表示した画像である。図４（ｂ）では、濃度の濃い部分４０２ほど、把持が成功する確率が高い（１に近い値）と推定される位置を表している。本実施形態の場合、把持成否確率には閾値ｔｈが設定されており、閾値以下の位置は一定の濃さ（０あるいは０に近い値）で示している。図４（ｃ）は、図４（ｂ）の把持成否確率分布を示した図において、図中のＡ−Ａ'の断面で見たときの把持成否確率分布の高さを示した図である。なお、図４（ｂ）、図４（ｃ）には濃度の濃い部分（４０２）が複数あるが、これは把持する対象物体４１の候補が複数あることを意味している。このようにして決定された把持成否確率分布は位置決定部２０３に送られる。
【００５０】
なお、前述の説明では、深層学習を把持が成功する領域を認識する処理に利用した例を挙げたが、深層学習は、それ以外、例えば領域の認識から把持までの処理に利用してもよい。例えば、把持装置３に吸着機構が用いられる場合、事前の学習として、バラ積み状態の対象物体４１の二次元カラー画像を入力として、ロボット１０が画像内のどの位置を把持するか把持位置を計算する。なお、このときの把持位置の計算は、画像処理を使って決定してもよいし、乱数で決定してもよいし、設計者が予め範囲を指定して、その範囲内において乱数で決定してもよいし、これら以外の方法で決定してもよい。そして、把持位置が決定されると、その把持位置に対してロボット１０が移動するように制御して、把持動作が実行される。その後、その把持動作の実行の結果、把持に成功したか、失敗したかの結果に基づき、入力とした二次元カラー画像の一部である、把持した位置を注目画素とし、その注目画素と周囲の画素を含む領域に対して把持成功／失敗のラベルを付ける。このラベルを付ける範囲は、吸着機構を用いている場合には、入力とした二次元カラー画像における吸着パッドの直径分の範囲の画素に対して付けてもよいし、適宜調整してもよい。このような方法によって、学習データを蓄積し、学習モデルを生成することができる。そして、確率決定部２０２は、当該作成した学習モデルを用い、二次元カラー画像を入力として、把持成否の確率分布を深層学習により推定する。また、領域認識の処理を深層学習により学習した前述の例の場合、学習モデルへの入力は二次元カラー画像であり、学習モデルの出力は人が把持に成功するであろうと考えてつけた真値の位置である。これに対し、領域認識から把持までの処理に学習を利用した場合、学習モデルへの入力は同じ二次元カラー画像であるが、学習モデルの出力はロボット１０で実際に把持を行う場合の成否推定結果となる。なお、この推定時は、前述した領域認識の処理を深層学習により行った方法と同様に、ＲＯＩ範囲を設定したりスライディングウィンドウを使用したりしてもよい。この例の場合、二次元カラー画像を入力することで、ロボット１０により把持する時の把持成否確率分布が決定される。
【００５１】
また、ここでは深層学習を用いた領域認識方法を利用して把持位置を決定する方法について記載したが、必ずしも深層学習を用いる必要はない。Ｓ２で説明したように、対象物体４１に応じて認識方法を変化させてもよいし、必ずしも認識処理を行わなくてもよい。
【００５２】
また、深層学習は把持だけの処理に対して利用されてもよい。具体的には、前述した認識処理は画像処理によって行われ、処理された画像情報を入力として、ロボット１０で把持動作を実行する。ここで画像情報とは、例えば、二次元カラー画像からクロップされた所定のサイズの画像情報であり、注目画素とその周辺画素を含む画像領域の情報でもよい。そして把持動作を実行し、把持に成功したか、失敗したかの結果に基づき、入力とした画像情報に対して把持成功／失敗のラベルを付ける。このような方法によって、学習データを蓄積し、学習モデルを作成してもよい。この方法では、学習モデルへの入力は例えば認識処理が行われた画像情報、学習モデルの出力はロボット１０で実際に把持を行う場合の成否推定結果となる。また、この推定時には、前述した認識の処理、あるいは認識と把持の処理を深層学習により学習した方法と同様に、ＲＯＩ範囲を設定したりスライディングウィンドウを使用したりしてもよい。そして、認識処理が行われた画像を入力することで、ロボット１０により把持する位置が推定され、その推定された結果を用いて、把持成否確率分布が決定される。
【００５３】
また、ここでは主に二次元カラー画像を用いて把持成否確率分布を決定したが、二次元カラー画像でなく距離画像を用いてもよいし、あるいは二次元カラー画像と距離画像の両方を用いてもよい。
【００５４】
図３のフローチャートに説明を戻す。Ｓ７において、位置決定部２０３は、Ｓ６で確率決定部２０２により決定された把持成否確率分布に基づいて把持位置を決定し、またマニピュレータ１の目標位置姿勢を決定する。把持位置の決定方法としては、例えば、把持成否確率分布において、把持成功の確率が最も高い位置を把持位置として決定するような方法を用いる。把持成否確率分布は、前述の図４（ａ）〜図４（ｃ）で説明したように、二次元カラー画像に対応して求められるので、その把持成否確率分布で決めた位置の座標は二次元カラー画像の同座標の位置と一致する。このように二次元カラー画像において把持位置が決定されると、位置決定部２０３は、距離画像において、二次元カラー画像の把持位置に対応する位置を求める。そして、位置決定部２０３は、これらの二次元カラー画像と距離画像に基づいて決定された把持位置の情報を、制御部２０４へ送る。
【００５５】
次にＳ８において、制御部２０４は、把持動作のためのマニピュレータ１の制御を行う。具体的には、制御部２０４は、Ｓ７で位置決定部２０３により決定された把持位置あるいは把持目標位置姿勢を基に、マニピュレータ１をどのように動かせばいいかを決定する。ここで、位置決定部２０３で決定された目標位置は画像における位置であるため、マニピュレータ１を制御する場合には、その目標位置をロボット座標系における座標に変換する必要がある。
【００５６】
図５は、本実施形態のロボットシステム１００の各構成部の位置関係を、ロボット座標系を用いて説明するための図である。
図５では、撮像装置２の座標系Σｃ、マニピュレータ１の座標系Σｒ、マニピュレータ１の先端座標系Σｔ、把持装置３の座標系Σｆ、対象物体４１の座標系Σｏ、を統一して扱うため、作業空間内で基準となる座標系としてワールド座標系Σｗを設定する。
【００５７】
先ず、ワールド座標系Σｗからマニピュレータ座標系Σｒまでの変位を（ＲＸ，ＲＹ，ＲＺ）とする。また、マニピュレータ１の姿勢を表す３×３の回転行列をＲＭとする。マニピュレータ座標系Σｒからマニピュレータ先端座標系Σｔまでの変位は（ＴＸ，ＴＹ，ＴＺ）とする。また、マニピュレータ先端の姿勢を表す３×３の回転行列はＴＭとする。さらに、マニピュレータ先端座標系Σｔから把持装置３の座標系Σｆまでの変位は（ＦＸ，ＦＹ，ＦＺ）とする。また、把持装置３の先端の姿勢を表す３×３の回転行列はＦＭとする。なお、把持装置３の先端とは、把持装置３が対象物体４１あるいは周辺物体４２に接触する部分である。マニピュレータ先端座標系Σｔから撮像装置座標系Σｃまでの変位は（ＣＸ，ＣＹ，ＣＺ）とする。また、撮像装置２の姿勢を表す３×３の回転行列はＣＭとする。さらに、撮像装置座標系Σｃから対象物体４１の対象物体座標系Σｏまでの変位は（ＯＸ，ＯＹ，ＯＺ）とする。また、対象物体４１の姿勢を表す３×３の回転行列はＯＭとする。さらに、ワールド座標系Σｗから見た対象物体４１の変位を（ＷＸ，ＷＹ，ＷＺ）、姿勢を表す３×３の回転行列をＷＭとする。ここで、マニピュレータ１の先端に取り付けられた把持装置３が対象物体４１に接触している時、マニピュレータ座標系Σｒからマニピュレータ先端座標系Σｔまでの変位を（ＴＸ１，ＴＹ１，ＴＺ１）とする。また、マニピュレータ先端の姿勢を表す３×３の回転行列をＴＭ１とする。この場合、以下の式（１）が成り立つ。なお、式（１）の行列式では、見易くするためにＷＭ，ＲＭ，ＴＭ１，ＦＭの成分は一つのみ示しており残りは省略している。
【００５８】
【数１】
2019188516.tif 000003
【００５９】
また、撮像装置２により対象物体４１が撮像されたとき、マニピュレータ座標系Σｒからマニピュレータ先端座標系Σｔまでの変位を（ＴＸ２，ＴＹ２，ＴＺ２）とし、マニピュレータ先端の姿勢を表す３×３の回転行列をＴＭ２とする。この場合、以下の式（２）が成り立つ。なお、式（２）の行列式では、見易くするためにＷＭ，ＲＭ，ＴＭ２，ＣＭ，ＯＭの成分は一つのみ示しており残りは省略している。
【００６０】
【数２】
2019188516.tif 000004
【００６１】
さらに式（１）、式（２）はワールド座標系Σｗにおける対象物体４１の位置姿勢を表しているので、下記の式（３）式が成り立つ。
【００６２】
Ｒ・Ｔ1・Ｆ＝Ｒ・Ｔ2・Ｃ・Ｏ
Ｔ1＝Ｔ2・Ｃ・Ｏ・Ｆ-1              式（３）
【００６３】
そして、撮像時のマニピュレータ１の位置姿勢、マニピュレータ先端座標系Σｔと撮像装置座標系Σｃの位置姿勢の関係、撮像装置座標系Σｃと対象物体４１の位置姿勢の関係、マニピュレータ先端座標系Σｔと把持装置３の位置姿勢の関係は既知である。この場合、式（３）により、把持時のマニピュレータ１の位置姿勢を求めることができる。よって、撮像装置２が対象物体４１を撮影した画像から、マニピュレータ１が対象物体４１を把持したときのマニピュレータ１の位置姿勢を求めることができる。
【００６４】
以下、各変位、回転行列の求め方の一例を述べる。前述したワールド座標系Σｗからマニピュレータ座標系Σｒまでの変位（ＲＸ，ＲＹ，ＲＺ）と、マニピュレータ１の姿勢を表す回転行列ＲＭは、マニピュレータ１の設置時に、設定したワールド座標系Σｗとの位置関係から求められる。また、マニピュレータ座標系Σｒからマニピュレータ先端座標系Σｔまでの変位（ＴＸ，ＴＹ，ＴＺ）とマニピュレータ先端の姿勢を表す回転行列ＴＭは、マニピュレータ１の関節角度情報から順運動学によって求められる。また、マニピュレータ先端座標系Σｔから把持装置３の座標系Σｆまでの変位（ＦＸ，ＦＹ，ＦＺ）と把持装置３の先端の姿勢を表す回転行列ＦＭは、把持装置３の寸法から求められる。また、マニピュレータ先端座標系Σｔから撮像装置座標系Σｃまでの変位（ＣＸ，ＣＹ，ＣＺ）と撮像装置２の姿勢を表す回転行列ＣＭは、撮像装置２の寸法から求められる。若しくは、撮像装置２とマニピュレータ１の相対的な位置姿勢関係からキャリブレーションにより求めてもよい。例えば、マニピュレータ１が異なる複数の位置姿勢を取ったそれぞれの状態において、撮像装置２により、既知の二次元マーカーを撮像することによって求まるマニピュレータ１との相対的位置関係を使って求めてもよい。さらに撮像装置座標系Σｃから対象物体４１の対象物体座標系Σｏまでの変位（ＯＸ，ＯＹ，ＯＺ）と対象物体４１の姿勢を表す回転行列ＯＭは、撮像装置２により対象物体４１を撮像することにより求まる。例えば、位置決定部２０３にて、把持位置が二次元カラー画像において決定されたとき、把持位置に対応する距離画像における座標の値から把持位置までの距離が決定されることから求める。なお、ここではワールド座標系Σｗとマニピュレータ１の座標系Σｒを分けて考えたが、それらを一致させて考えてもよい。
【００６５】
図３のフローチャートに説明を戻す。Ｓ９において、制御部２０４は、対象物体４１の把持のために、把持装置３の制御を行う。すなわち、制御部２０４は、Ｓ７で求めた把持位置あるいはマニピュレータ１の把持目標位置姿勢に基づいて、マニピュレータ１を制御し、さらに把持装置３により対象物体４１を把持位置で把持させるように制御する。
【００６６】
なお、Ｓ７において把持位置と把持目標位置姿勢を決定し、Ｓ８でマニピュレータ１を制御して把持装置３を移動させ、Ｓ９で把持動作を制御する際には、把持位置に対して把持装置３の移動距離が最短距離となるような軌道をとるようにしてもよい。また、把持位置まで把持装置３を移動させる際には、例えば、把持装置３の移動速度が最大となるような軌道をとるようにしてもよい。把持成否確率分布に基づいた軌道を取ってもよいし、これら以外の軌道をとってもよい。また、把持装置３を移動させる際には、例えば部品箱などの周辺物体４２との干渉回避を考慮することが望ましい。例えば、Ｓ２により部品箱を検出した場合、部品箱の位置姿勢は既に分かっているため、把持位置を決定する際には、把持装置３を移動させたときに当該把持装置３やロボットアーム等が部品箱などの周辺物体４２に干渉するか否かを判定することができる。そして、干渉することになる場合には、把持位置を修正してもよい。このように干渉回避などのための把持位置修正を行う場合には、例えば把持成否確率が閾値を上回っている領域のうち、二番目に把持成否確率が高い位置を把持位置としてもよい。また、干渉判定は、把持位置における干渉回避のためだけでなく、把持装置３やロボットアームの移動中の干渉回避のために行ってもよい。例えば把持装置３やロボットアームの移動中の干渉回避を容易にするため、前述した撮影位置から直接、把持位置に把持装置３を移動させず、別の経路を経由してから把持位置へ移動するようにしてもよい。一例として、部品箱の底面中心位置に対して垂直方向へある一定の距離だけ把持装置３を移動させるようにした後に、把持装置３を把持位置へ移動させるような干渉回避動作を行ってもよい。
【００６７】
次にＳ１０において、判定部２０５は、対象物体４１の把持に成功したか失敗したか判定する。例えばマニピュレータ１に取り付けられた把持装置３が吸着機構である場合には、前述したように吸着しているときの真空到達度を評価することにより、把持が成功したか否かの判定を行う。また例えば把持装置３が平行チャック機構である場合には、前述したように把持幅を評価することで、把持が成功したか否かの判定を行う。なお、把持成否の判定は、Ｓ８のマニピュレータ・把持制御が行われているとき、同時に行ってもよい。例えば把持装置３が吸着機構である場合、決定された把持位置へのマニピュレータ１の移動中にも常に真空到達度を計測し、吸着（把持）に成功したと判定定された時点でマニピュレータ１の把持のための移動動作を中断する。その後は、後述するＳ１５の搬送・配置動作を行うようにする。
【００６８】
次にＳ１１において、状態推定部２０６は、ロボットシステム１００の状態を推定する。ロボットシステム１００の状態の推定は、前述したように、システムが正常状態か、中間状態か、異常状態かを推定することである。本実施形態において、システム状態の推定は、前述したように、把持位置における把持成否確率と把持成否結果とに基づいて行われる。図６は、本実施形態において、把持動作を行ったときの正常状態、中間状態、異常状態の分類を示す図である。
【００６９】
前述したように、Ｓ６で求めた把持成否確率分布の中に閾値以上の確率部分がある場合、制御部２０４は、把持成否確率分布を基に決定された把持位置で、対象物体４１の把持動作を実行させる。そして、状態推定部２０６は、把持動作が実行あれたときの成否判定結果と把持成否確率とに基づき、ロボットシステム１００が「正常状態」、「中間状態」、「異常状態」のいずれのシステム状態にあるかを推定する。
【００７０】
以下、システム状態の推定方法について説明する。
先ず、システム状態を正常状態と推定する場合について述べる。例えば、把持成否確率が高い把持位置に対して把持が実行され、１回の把持動作により把持が成功した場合、状態推定部２０６は、システムは正常状態であると推定する。
【００７１】
次に、システム状態を中間状態と推定する場合について述べる。１回の把持動作では把持に成功せず、何度かリトライして把持に失敗した後に、把持が成功した場合、状態推定部２０６は、システムが中間状態であると推定する。このとき、把持成否確率が十分に高かったか、あるいは十分に高くなかったかによって、把持失敗要因を推定する。ここで、把持成否確率が十分に高いかどうかの判断は、予め設定した閾値との比較に基づく判断でもよいし、システム立ち上げ時の状況に基づく判断でも、機械学習による判断でも、あるいは、それら以外の方法による判断でもよい。そして、状態推定部２０６は、把持成否確率が十分に高い場合、把持位置決定の処理までは成功しており、把持制御以降の処理で失敗している可能性が高いと推定する。すなわち、この場合の状態推定部２０６は、把持制御要因により把持に失敗したと判定する。一方、把持成否確率が十分に高くない場合、状態推定部２０６は、把持位置決定の処理までに失敗している可能性が高いと推定する。すなわち、この場合の状態推定部２０６は、把持位置決定要因により把持に失敗したと推定する。
【００７２】
以下、それぞれの要因について具体例を挙げて説明する。
把持制御要因により把持に失敗すると推測される例として、ロボットシステム１００におけるキャリブレーション値がずれていることが挙げられる。マニピュレータ１と把持装置３、マニピュレータ１と撮像装置２の相対的位置関係は、事前に求め、設定しておく必要がある。キャリブレーション値がずれている状態とは、この設定値が実際の相対的位置関係と異なった状態になっている状態を指す。キャリブレーション値がずれている場合、決定した把持位置に対して把持装置３が到達していないことがある。キャリブレーション値がずれる要因としては、把持装置３や撮像装置２が対象物体４１あるいは周辺物体４２などと干渉し、把持装置３や撮像装置２と、マニピュレータ１との間のキャリブレーション値がずれてしまったということが考えられる。または、キャリブレーション値を設定する際に、設定値が間違っていたということも考えられる。さらに、把持制御要因により把持に失敗すると推測される他の例として、把持を行うハードウェアの問題により、把持に失敗することも挙げられる。具体的には、把持装置３が吸着機構である例において、長期間の使用により、把持に使う吸着パッドが劣化し、対象物体４１に接触したときにエアーが漏れて、十分な圧で吸着できなかったことが考えられる。また、エアーチューブの劣化や折れ曲がりなどによって、十分な流量が供給されていないといったといったことも考えられる。
【００７３】
把持位置決定要因により把持に失敗すると推測される例として、把持成否確率分布決定のために使用する学習モデルが適切でないことが挙げられる。例えば、システムに投入される部品の仕向けが変わったときに、使用する学習モデルを変更しなければならないにも関わらず変更していなかった場合が考えられる。また例えば、対象物体４１の入った部品箱の中に異物が混入して学習時には想定していない視覚情報が取得されたり、システム周辺の照明条件が変わって対象物体４１の見え方が大きく変化していたりといった場合などが考えられる。
【００７４】
また例えば、状態推定部２０６は、１回の動作で把持に成功したものの、把持成否確率が十分に高くなかった場合にも、システムが中間状態であると推定する。この場合、１回の把持動作で把持に成功しているため、本来は把持成否確率が十分に高く出るはずである。それにも関わらず、把持成否確率が十分に高く出ていない場合には、把持成否確率として正しい値が得られていない可能性がある。そのため、このままシステムを稼働させ続けると、把持できる位置があるにも関わらず把持できる位置がないと判定したり、よりよい把持位置があるにも関わらずその位置とは異なる位置を把持位置として決定してしまったりする虞がある。このような状態になる例としては、前述した把持位置決定要因によって把持に失敗する例のように、把持成否確率分布決定のために使用する学習モデルが適切でないことが挙げられる。
【００７５】
次に、システム状態を異常状態と推定する場合について述べる。１回の把持動作で把持に成功せず、複数回のリトライでも把持に成功しなかった場合、状態推定部２０６は、異常状態であると推定する。この複数回のリトライについては、例えば予め上限回数の閾値を設定しておく。一例として閾値が３に設定されている場合、状態推定部２０６は、例えば３回以内のリトライで把持に成功すれば中間状態と推定し、リトライ回数が４回以上になったならばシステムが異常状態であると推定する。失敗要因の推定方法は、前述した中間状態で説明した要因例と同様に、把持成否確率が十分に高かったか、あるいは十分に高くなかったかによる把持失敗要因の推定方法を用いることができる。
【００７６】
なお、Ｓ６で求めた把持成否確率が閾値以下の場合、状態推定部２０６は、把持成否確率分布に基づく把持位置の決定を行わない。この場合、適切な把持位置が存在しないとして、システムを停止してもよいし、深層学習ではない別の方法と併用して把持位置を決定してもよいし、他の方法で把持位置を決定してもよい。深層学習でない別の方法の例として、例えば、部品箱底面に重量センサを設置しておき、そのセンサ情報により部品箱内に部品が残っていると判断すれば、部品箱内においてランダムに把持動作を試行してもよい。
【００７７】
また、状態推定部２０６は、システム状態の推定により得られたシステム状態に基づいて、予防保全のための対策を推定し、その推定対策内容をユーザに通知することまで行ってもよい。
この例について、先ず、システム状態の推定において、１回の把持動作で把持に成功せず、何度か把持に失敗した後、リトライで把持に成功したために中間状態と推定した場合から説明する。例えば、失敗要因として、前述した「キャリブレーション値がずれている場合」、「把持を行うハードウェアに問題がある場合」がそれぞれ推定される場合の予防保全のための対策を挙げて説明する。
【００７８】
例えばキャリブレーション値がずれていることが失敗要因になっているかどうかの確認方法としては、マニピュレータ１に取り付けられていない撮像装置２（以下、ロボット非搭載カメラとする。）が撮影した画像データを利用する方法がある。具体的には、ロボット非搭載カメラとマニピュレータ１との、相対的位置関係について事前にキャリブレーションを行っておけば、ロボット非搭載カメラから見た把持位置を求めることができる。そして、状態推定部２０６は、ロボット非搭載カメラの撮影画像データを利用することで、マニピュレータ１に取り付けられた撮像装置２が撮影した画像データを基に決定された把持位置に対して把持装置３が実際に移動できたかどうかを判断する。このとき、把持装置３が目標とする把持位置へ移動できていれば、状態推定部２０６は、把持装置３あるいはマニピュレータ１に取り付けられた撮像装置２と、マニピュレータ１との間のキャリブレーション値がずれていないと判断する。これに対し、把持装置３が目標とする把持位置へ移動していない場合、状態推定部２０６は、キャリブレーション値がずれていると判断する。このような失敗要因が推定された場合には、キャリブレーション値を修正することが失敗要因に対する対策になると考えられる。なお、キャリブレーション値を修正する方法としては、例えばＳ８にて述べたように、マーカーを使う方法があるので、その作業内容を推定結果としてもよい。したがって、この例の場合、状態推定部２０６は、当該失敗要因に対する予防保全の対策内容を、表示制御部２０７を経由して表示装置７により表示等させることでユーザに通知するようなことを行えばよい。
【００７９】
また例えば把持を行うハードウェアに問題があることが失敗要因になっているかどうかを確認する場合にも、ロボット非搭載カメラが撮影した画像データを利用することができる。ここでは、把持装置３が吸着機構であり、吸着パッドの劣化によって把持に失敗する場合を例に挙げて説明する。具体的には、ロボット非搭載カメラによって、劣化前の吸着パッドを撮影した画像データを取得しておき、劣化後の吸着パットの画像データとの差分を求め、その差分の大小により劣化度合いを判定する。状態推定部２０６は、劣化前の吸着パッドの撮影画像データと劣化後の吸着パットの撮影画像データとの差分が、例えば予め決めた閾値より大きくなっている場合には、吸着パッドが劣化していると判定する。また他の確認方法として、所定のテスト用の平面に吸着パッドを押し付けて、真空到達度を計測する方法もある。吸着パッドが劣化していない場合、平面に吸着パッドを押し付ければ、真空到達度が十分に大きくなる（真空に近くなる）。これに対し、吸着パッドが劣化している場合、エアーがリークしてしまうことで、真空到達度が十分に大きくならない（真空に近くならない）。そのため、予め吸着パッドを平面に押し付けたときの真空到達度を計測しておき、状態推定部２０６は、劣化後の吸着パットにおける真空到達度との差分を求めて、吸着パッドの劣化度合いを確認する。そして、吸着パッドが劣化している場合には、その吸着パッドを新しいものに交換することが失敗要因に対する対策になると考えられる。このため、吸着パッドが劣化していると判断した場合、状態推定部２０６は、吸着パッドの交換作業を指示するような予防保全の対策内容を、表示制御部２０７を経由して表示装置７により表示等させることでユーザに通知する。
【００８０】
また、状態推定部２０６は、前述した失敗要因に対する予防保全対策だけでなく、例えば、１回の把持動作で把持に成功したものの、把持成否確率が十分に高くなかったために中間状態であると推定された場合の対策についても推定可能である。この例の場合、把持には成功しているため、本来ならば把持成否確率が十分に高くなっているはずであるが、把持成否確率が十分に高くなっていない。このため、状態推定部２０６は、予防保全の対策として、把持成否確率分布の推定精度を高めるために、把持成功のフィードバックを使い、追加学習を行うという対策を推定する。そして、状態推定部２０６は、把持成功のフィードバックを使った追加学習を行うことを指示するような予防保全の対策内容を、表示制御部２０７を経由して表示装置７により表示等させることでユーザに通知する。
【００８１】
なお、ここまでは予防保全のための対策の推定について述べるが、事後保全のために、失敗要因とその原因を示すことに利用してもよい。例えば予防保全の場合はランタイムでシステム稼働中に前述したような各対策の推定のための確認を行うが、事後保全の場合にはランタイムに限らないので、システムの稼働とは関係なしに、確認を行ってもよい。
【００８２】
また、システム状態の推定において異常状態と推定した場合、その対策は予防保全ではなく、事後保全のための対策となる。システム状態が異常状態と推定された場合の、事後保全のための具体的な対策としては、前述した中間状態の場合の対策と同等であり、その説明は省略する。
【００８３】
図３のフローチャートに説明を戻す。Ｓ１１の後、Ｓ１２に進むと、表示制御部２０７は、表示装置７に表示する内容の制御を行う。この場合、表示制御部２０７は、例えば画像データに対して、前述したシステム状態推定結果や推定対策内容等を重畳表示するように制御する。
例えば、Ｓ１１にてシステム状態が正常状態であると推定された場合、表示制御部２０７は、正常状態であることを示す内容を表示させるような表示制御を行う。このときの表示内容は、自然言語により正常状態である旨を表示してもよいし、緑色など色によって正常状態を示すよう表示してもよいし、あるいは正常状態の場合は何も表示しない、としてもよい。または、システム状態の推定の根拠となるデータを示してもよい。例えば、画像データに対してシステム状態推定結果を重畳表示してもよい。具体的には、取得部２０１が取得した二次元カラー画像に対して、確率決定部２０２が推定した把持成否確率を表す数値等を重ね、さらに位置決定部２０３が決定した把持位置を重ねた画像を表示してもよい。また、その画像に対して、把持が成功したか失敗したかの結果を記載し、想定される要因を文字情報で示してもよいし、想定される要因それぞれの確率を数値で示してもよいし、その他の方法で示してもよい。
【００８４】
また、画像は一つでなく、複数表示してもよい。例えば図１に示すように撮像装置２が複数配置されている場合、それぞれの撮像装置２から取得した二次元カラー画像を同時に表示してもよい。また、文字情報や数値情報は画像に合わせて表示せず、独立して表示してもよい。
また例えば、Ｓ１１にてシステム状態が中間状態であると推定された場合、表示制御部２０７は、中間状態であることを表示させるような表示制御を行う。その際、表示制御部２０７は、さらに推定された把持失敗要因や、予防保全として、Ｓ１１において推定された把持失敗要因のための対策を表示する。
また例えば、Ｓ１１にてシステム状態が異常状態であると推定された場合、表示制御部２０７は、異常状態であることを表示させるような表示制御を行う。その際、表示制御部２０７は、さらに推定された把持失敗要因や、事後保全として、Ｓ１１において推定された把持失敗要因の原因を表示させるようにする。
【００８５】
これにより、Ｓ１３において、表示装置７には、Ｓ１２で表示制御部２０７による表示内容が表示される。なお、例えばディスプレイに視覚情報として表示するのに合わせて、音声を、スピーカーを通して出力してもよい。例えば、Ｓ１２にて文字情報や数値情報を表示するよう制御した場合、これらの読み上げ音声を、スピーカーを通して出力してもよい。また、視覚情報なしで、音声のみを出力してもよいし、その他の情報のみを使用してもよい。
【００８６】
次にＳ１４において、ＣＰＵ２１は、Ｓ１０で判定部２０５が判定した把持成否判定結果に基づき、ロボット１０の次の処理を決定する。すなわち、ＣＰＵ２１は、把持成否判定結果が把持の成功である場合には処理をＳ１５に遷移させる。一方、ＣＰＵ２１は、把持成否判定結果が把持の失敗である場合には処理をＳ７に戻す。これにより、前述したように位置決定部２０３において次の把持位置の決定が行われる。またこのとき、判定部２０５から位置決定部２０３に対し把持に失敗したという情報を送ることで、位置決定部２０３において把持成否確率分布に基づいた把持位置を再び決定してもよい。この場合、把持に失敗した位置と異なる位置を次の把持位置として決定することにより、把持の成功率を上げるようにしてもよい。
【００８７】
次にＳ１５において、制御部２０４は、ロボット１０のマニピュレータ１と把持装置３を制御して、対象物体４１を搬送・配置させるように動作させる。この場合、制御部２０４は、搬送の経由点や配置の位置を事前に設定しておいてもよいし、撮像装置２から得られた視覚情報に基づき搬送経路・配置場所を決定してもよい。視覚情報に基づいて配置場所を決定する場合、例えばＳ２で述べた部品箱の検出結果を基に配置場所が決定されてもよい。例えば、配置場所が部品箱のような箱形状であるならば、配置場所の形状から認識が行われてもよいし、配置場所にマーカーを設置しておき、マーカーにより認識が行われてもよい。また、認識した結果から、配置場所についてもＳ７で説明したような干渉回避の制御が行われてもよい。また、制御部２０４は、配置が完了するまで、Ｓ１０で説明したように把持状態を確認し、把持成否判定を行い、把持に失敗したと判定したら、把持動作をやり直してもよい。
【００８８】
次にＳ１６において、ＣＰＵ２１は、次の対象物体４１があるかどうかの判定をする。そして、ＣＰＵ２１は、対象物体４１が存在しない場合には図３に示すフローチャートの処理を終了する。一方、対象物体４１が存在する場合、ＣＰＵ２１は、処理を継続すると判断してＳ２に処理を戻す。Ｓ１６での判定では、例えば事前に処理回数を設定しておき、その回数に達した場合に対象物体４１が存在しないと判定してもよい。また、Ｓ１６での判定では、対象物体４１の供給場所にセンサを配置しておき、そのセンサ情報により対象物体４１が検出されなくなった場合に対象物体４１が存在しないと判定してもよい。なお、対象物体４１の供給場所に配置されるセンサには例えば重量センサを用いることができる。重量センサにより供給場所の重さを計測し、その計測値から対象物体４１の残りの個数を推定して、残り個数がゼロと推定されたときに、対象物体４１が存在しないと判定する。その他にも、撮像装置２によって対象物体４１の供給場所を撮影し、得られた画像情報によって対象物体４１の残数等を判定してもよいし、これら以外の方法で判定してもよい。
【００８９】
以上説明したように、第一の実施形態では、撮像装置２にて撮像された画像を取得部２０１が知覚情報として取得し、その知覚情報を基に確率決定部２０２が把持に成功／失敗する把持成否確率分布を決定する。また、位置決定部２０３では、決定された把持成否確率分布に基づき対象物体４１の把持位置を決定する。そして、当該決定された把持位置に基づき、制御部２０４はロボット１０を制御し、ロボット１０の把持装置３に対象物体４１を把持する動作を実行させる。また判定部２０５は、ロボット１０における把持動作の成功／失敗を判定し、状態推定部２０６は、把持動作の成否判定結果と把持位置における把持成否確率とに基づき、システム状態を推定する。このように、第一の実施形態によれば、把持位置における把持成否確率と把持成否結果に基づきシステム状態を推定することで、システム状態を可視化でき、予防保全、事後保全を容易に行えるため、生産性を高めることができる。
【００９０】
＜第二の実施形態＞
第二の実施形態では、撮像装置による画像だけでなく、ロボット制御結果や他のセンサ情報も併用してシステム状態を推定する例について説明する。
第二の実施形態のロボットシステムおよび情報処理装置は、前述した第一の実施形態のロボットシステム１００および情報処理装置２０と概ね同様であるが、一部の構成部や処理が異なっており、また幾つか新たな構成部や処理が追加されている。第二の実施形態において、第一の実施形態と概ね同様であるが一部異なった構成部や処理についてはそれらを示す参照符号に「'」を付加している。また、第二の実施形態において、新たに追加された構成部や処理には、前述した第一の実施形態では用いていない新たな参照符号を付けている。以下、第二の実施形態では、主に、第一の実施形態とは異なる構成部および処理、新たに追加した構成部および処理について説明する。
【００９１】
図７は、第二の実施形態におけるロボットシステム１００'および情報処理装置２０'の機能ブロックを示した図である。図７のロボットシステム１００'および情報処理装置２０'は、図２の構成に対して、力覚センサ５と力覚情報取得部２０８とが新たな構成部として追加された点が異なる。また、図７の情報処理装置２０'では、制御部２０４'、位置決定部２０３'、状態推定部２０６'の一部の処理が、図２の例とは異なる。これら以外の構成部は概ね図２と同様である。
【００９２】
第二の実施形態は、前述した第一の実施形態に対して、さらにロボットシステムの制御結果や撮像装置以外のセンサ情報を併用して、システム状態を推定できるよう構成した例である。第二の実施形態においても、先ず、第一の実施形態と同様に、把持成否確率分布に基づき対象物体の把持制御を行う。そして、第二の実施形態では、把持位置における把持成否確率と、把持成否結果と、ロボット１０の制御結果と、力覚センサ５からの力覚センサ情報とに基づいて、システム状態を推定し、その推定結果や推定対策内容を表示等する。第二の実施形態によれば、画像情報だけでは分かりにくい把持装置３の接触情報も考慮してシステム状態を推定できるようになる。
【００９３】
力覚センサ５は、外力を計測可能な力覚計測センサであり、把持装置３にかかる外力を計測できる位置に取り付けられている。例えば、力覚センサ５は、把持装置３の根本やマニピュレータ１の先端に取り付けられる。力覚センサ５は、歪みゲージや圧電素子により構成され、把持装置３が対象物体４１や周辺物体４２に接触している時に、当該把持装置３にかかる力（反力）、モーメントを計測し、その計測結果である力覚情報を情報処理装置２０'に出力する。なお力覚センサ５は、６軸力覚センサ（Ｆｏｒｃｅ／Ｔｏｒｑｕｅセンサ）であってもよいし、３軸力覚センサであってもよい。また力覚センサ５は、１次元の圧力センサや、接触の有無を判別する接触センサを複数配置して、力やモーメントを計測してもよい。
【００９４】
力覚情報取得部２０８は、力覚センサ５から出力される力覚情報を取得し、その力覚情報を状態推定部２０６'に出力する。なお、図７では図示を省略しているが、力覚情報は制御部２０４'にも送られる。力覚情報取得部２０８は、例えばメモリ（ＲＡＭ）によって構成される。
【００９５】
状態推定部２０６'は、確率決定部２０２からの把持成否確率分布と、制御部２０４'からのロボット１０の制御情報と、判定部２０５からの把持成否結果と、力覚情報取得部２０８から取得した力覚情報と、に基づいて、システム状態を推定する。
【００９６】
第二の実施形態の情報処理装置２０'のハードウェア構成は、前述した図１２の構成と同じであるため、その図示と説明は省略する。第二の実施形態においても、図７の情報処理装置２０'内の各構成部の機能は、ＣＰＵ２１がプログラムを実行することにより実現することができる。
【００９７】
図８は、第二の実施形態のロボットシステム１００'および情報処理装置２０'が実行するロボット制御手順を示すフローチャートである。図８のフローチャートの処理は、第一の実施形態で示した図３のフローチャートと概ね同様であるが、Ｓ１７の処理が新たに追加され、また、Ｓ１１'は図３のＳ１１と一部処理内容が異なる。以下、主に、Ｓ１７とＳ１１'の処理について説明する。
【００９８】
図８のフローチャートでは、前述したＳ８の処理後、Ｓ１７に処理が進み、そのＳ１７の処理後に前述したＳ９に処理が進む。
Ｓ１７において、力覚情報取得部２０８は、力覚センサ５から、対象物体４１あるいは周辺物体４２に把持装置３が接触している時の把持装置３にかかる力（反力）、モーメント情報を力覚情報として取得し、状態推定部２０６'と制御部２０４'に送る。
【００９９】
また、力覚情報の取得は、Ｓ８のマニピュレータ・把持制御において、マニピュレータ１の移動を行っている時に同時に行われてもよい。この場合、例えばＳ７で決定した把持位置に対して、Ｓ８でマニピュレータ１が移動するとき、その移動中にも常に力覚情報が取得される。そして、予め設定した閾値以上の力あるいはモーメントのいずれか一つ以上が計測された時点で、制御部２０４'は、マニピュレータ１の移動を中断し、把持動作を実行する。これは、図９（ａ）に示すように、撮像装置２の画像から計測した計測把持位置が、実際の対象物体４１の高さよりも低かったため、マニピュレータ１が把持位置まで動作中に把持装置３が対象物体４１に接触した場合を想定している。このため、制御部２０４'は、力覚センサ５により取得した力覚情報を基に、把持位置を、接触した位置すなわち実際に把持した位置に修正した上で、その修正把持位置による把持動作を行うように把持装置３を制御する。
【０１００】
またＳ７による把持位置に対し、Ｓ８でマニピュレータ１を移動させた後、力覚情報を取得し、閾値以上の力あるいはモーメントのいずれか一つ以上を計測できていない場合、制御部２０４'は、マニピュレータ１の移動を継続してから把持動作を行ってもよい。これは、図９（ｂ）に示すように、撮像装置２の画像から計測した計測把持位置が、実際の対象物体４１の高さよりも高かったため、マニピュレータ１が把持位置に移動しても把持装置３が対象物体４１に接触していない場合を想定している。この場合、制御部２０４'は、力覚センサ５からの力覚情報が閾値以上になるまでマニピュレータ１の移動動作を継続する。このとき、予め動作を継続する距離や時間を設定しておいてもよいし、力覚情報が閾値以上になるまではマニピュレータ１の移動動作を継続し続けて把持の目標位置を修正してよいし、他の条件で制御してもよい。そして、Ｓ９の後、Ｓ１０において、判定部２０５での把持成否の判定が行われる。
【０１０１】
Ｓ１０の後に進むＳ１１'において、状態推定部２０６'は、ロボットシステム１００'の状態を推定する。第二の実施形態の場合、システム状態の推定では、Ｓ６で決定した把持成否確率分布と、Ｓ８のマニピュレータ・把持制御における制御情報と、Ｓ１０での把持成否結果と、Ｓ１７で取得した力覚情報とを利用する。
【０１０２】
第一の実施形態の場合、位置決定部２０３にて決定された把持位置での把持成否確率を用いたが、第二の実施形態のシステム状態推定処理では、制御部２０４'から取得した制御情報に基づき、実際に把持装置３が移動した位置での把持成否確率を利用する。これは、Ｓ１７の処理で述べたように、本実施形態では力覚センサ５で取得した力覚情報に基づいてロボット１０の動作が変更（つまり把持位置が変更）される可能性があるためである。
【０１０３】
力覚情報に基づき把持位置を変化させた場合には、位置決定部２０３'で決定した位置に把持装置３が移動しないことになるため、システム状態推定の際には、制御部２０４'から取得した実際の把持位置の情報を用いる。このように、第二の実施形態では、力覚情報に応じた実際の把持位置を利用することで、システム状態を前述した中間状態と推定した場合に、より詳しく失敗要因を推定することが可能となる。
【０１０４】
以下、第二の実施形態において、システム状態が中間状態であると推定した場合に、より詳しく失敗要因を推定する方法について説明する。第二の実施形態の場合も第一の実施形態同様、状態推定部２０６'は、１回の把持動作で把持に成功せず、何度か把持に失敗し、リトライで把持に成功した場合に、中間状態であると推定する。
【０１０５】
例えば、把持成否確率が十分に高い場合、状態推定部２０６'は、把持位置決定の処理までは成功しており、把持動作の制御以降の処理で失敗している可能性が高いと推定する。すなわちこの場合、状態推定部２０６'は、把持動作の制御要因により把持に失敗したと推定する。例えば対象物体４１への把持動作の実行後、把持装置３の上昇中に、前述した真空到達度や把持幅を基に対象物体４１の把持成功と判定されたとしても、力覚センサ５の力覚情報からは対象物体４１に相当する外力（例えば重さ）が計測できていない場合がある。この場合、把持装置３による対象物体４１の把持動作が失敗していると考えられる。例えば、把持している物体が対象物体４１以外の物体であったり、対象物体４１と周辺物体４２など複数の物体を把持してしまっていたりといった失敗が考えられる。これらの失敗要因としては、把持装置３が適切でなかったり、把持装置３の動作が適切でなかったりといったことが挙げられる。把持装置３が適切でない場合の例としては、対象物体４１が小さい物体であるにも関わらず、例えば大きな吸着パッドの吸着機構を備えた把持装置３や、開閉幅が大きな平行チャック機構を備えた把持装置３が用いられている場合などが考えられる。把持装置３の動作が適切でない場合の例としては、吸着機構の吸着圧が弱すぎたり強すぎたり、平行チャック機構の開閉幅が大きすぎたり小さすぎたりといったことが考えられる。そのため、これらの例の場合、予防保全のための対策として推定する例としては、把持装置３の交換や、動作の変更などが挙げられる。
【０１０６】
一方、把持成否確率が十分に高くない場合、状態推定部２０６'は、把持位置決定の処理までに失敗している可能性が高いと推定する。すなわちこの場合、状態推定部２０６'は、把持位置決定要因により把持に失敗したと判定する。このため、例えば事前に、対象物体４１に接触したときに把持装置３にかかる外力を計測しておき、閾値を設定しておく。この場合、把持動作が実行された際に、もし把持装置３が対象物体４１に接触することなく把持に失敗したとすると、力覚センサ５が計測する力覚情報は閾値に達しないことになる。そして、この例の場合、把持装置３が対象物体４１に接触していないことから、把持動作の失敗要因の一つとして、例えば、撮像装置２のカメラ内部パラメータのキャリブレーション値がずれていることが考えられる。なお、キャリブレーション値のずれに対する予防保全のための対策は、第一の実施形態に述べた通りである。
【０１０７】
また、力覚情報とそれ以外の情報とを統合的に扱い機械学習によりシステム状態を推定してもよい。この場合、例えば時系列情報として、把持装置３が吸着機構である場合の吸着の真空到達度、力覚センサ５から取得した力覚情報、マニピュレータ１の関節角度情報などを利用する。さらに、これらの情報を入力として、またこれらの時系列情報と関連付けて、過去のロボットシステム１００'の正常動作、異常動作時の情報を出力としてログを取っておく。異常動作については、どのような異常が起きたか、また何が原因で異常動作が生じたかなど、より詳しい情報のログを取っておいてもよい。そして、これら時系列情報を学習データとして使用して、システム稼働中の時系列情報を入力として、出力としてロボットシステム１００'の状態を推定する。
【０１０８】
ここまでは、システム状態を中間状態と推定した場合の失敗要因の推定方法と、それに対する予防保全のための対策について述べたが、これらはシステム状態が異常状態であると推定された場合にも同様に適用可能である。また、力覚情報は必ずしも用いなくてもよく、制御情報だけ利用してシステム状態の推定を行ってもよい。この場合、例えば、前述のような機械学習を利用する手法において、力覚情報の入力は使わずにシステム状態を推定する。なお、１回の把持動作で把持に成功したものの、把持成否確率が十分に高くなかった場合、状態推定部２０６'は、第一の実施形態と同様に中間状態であると推定する。この場合の失敗要因の推定、対策の推定も第一の実施形態と同様に行うことができる。
【０１０９】
以上説明したように、第二の実施形態でも第一の実施形態同様に、撮像装置２にて撮像された画像（知覚情報）を基に確率決定部２０２が把持成否確率分布を決定し、また位置決定部２０３'は把持成否確率分布に基づき対象物体４１の把持位置を決定する。第二の実施形態の場合、制御部２０４'は、把持位置に基づきロボット１０を制御するが、このとき力覚センサ５からの力覚情報、つまり把持装置３における接触情報を基に適宜、把持位置を修正して対象物体４１の把持動作を制御する。また第二の実施形態の場合、状態推定部２０６'は、判定部２０５から把持動作が失敗したとの判定結果を取得した場合、制御部２０４'からの制御情報と、把持位置における把持成否確率と、力覚情報とに基づいてシステム状態を推定する。このように、第二の実施形態では、画像情報だけでは分かりにくい把持装置３の接触情報（力覚情報）をも考慮することで、より詳しくシステム状態を推定することができ、その結果、予防保全、事後保全を容易に実現し、生産性を高めることができる。
【０１１０】
＜第三の実施形態＞
第三の実施形態では、各処理の成否状況を管理してシステム状態を推定する例について説明する。
第三の実施形態におけるロボットシステムおよび情報処理装置は、第一の実施形態のロボットシステム１００および情報処理装置２０と概ね同様であるが、一部の構成部や処理が異なっており、また幾つか新たな構成部や処理が追加されている。第三の実施形態において、第一の実施形態と概ね同様であるが一部異なった構成部や処理についてはそれらを示す参照符号に「"」を付加している。また、第三の実施形態において新たに追加された構成部や処理には、前述した第一の実施形態では用いていない新たな参照符号を付けている。以下、第三の実施形態では、主に、第一の実施形態とは異なる構成部および処理、新たに追加した構成部および処理について説明する。
【０１１１】
図１０は、第三の実施形態におけるロボットシステム１００"および情報処理装置２０"の機能ブロックを示した図である。図１０に示すロボットシステム１００"および情報処理装置２０"は、図２の構成に対し、管理部２０９が新たな構成部として追加された点が異なる。また、図１０の情報処理装置２０"では、制御部２０４"、判定部２０５"、取得部２０１"、確率決定部２０２"、位置決定部２０３'、状態推定部２０６'の一部の処理が、図２の例とは異なる。これら以外の構成部は概ね図２と同様である。
【０１１２】
第三の実施形態では、前述した第一の実施形態に対して、さらにロボットシステムの各処理の後で随時システム状態を推定できるよう、また、処理内容や把持成否判定結果の履歴といったシステム動作に関する情報を管理できるよう構成した例である。第三の実施形態においても、前述同様に、先ず、取得した視覚情報に基づき把持成否確率分布を求め、把持位置を決定して対象物体の把持を行う。このとき、管理部２０９は、各構成部の処理状況を把握し、各構成部の動作を管理したり、把持成否結果の履歴を保存したりすることで、現在と過去のシステム動作結果を管理する。第三の実施形態の場合、状態推定部２０６"は、管理部２０９からの動作管理情報に基づきシステム状態を推定し、その推定結果が表示等される。第三の実施形態の場合、各処理の動作状況を管理できるため、システムが何の動作を行っているか、また次に何の動作を行うかを管理し、さらに過去の動作履歴も考慮しながらシステム状態を推定できるようになる。
【０１１３】
管理部２０９は、取得部２０１"、確率決定部２０２"、位置決定部２０３"、制御部２０４"、判定部２０５"の各部の処理状況を把握して各部の動作を管理し、把持成否結果の履歴を保存することで、現在と過去のシステム動作結果を管理する。そして、第三の実施形態の場合、状態推定部２０６"は、管理部２０９から取得した現在と過去の動作管理情報に基づいて、システム状態を推定する。
【０１１４】
第三の実施形態の情報処理装置２０"のハードウェア構成は前述した図１２の構成と同じであるため、その図示と説明は省略する。第三の実施形態において、図１１の情報処理装置２０"内の各構成部の機能は、ＣＰＵ２１がプログラムを実行することにより実現することができる。
【０１１５】
図１１は、第三の実施形態におけるロボットシステム１００"および情報処理装置２０"が実行するロボット制御手順を示すフローチャートである。図１１のフローチャートの処理は、図３のフローチャートと概ね同様であるが、Ｓ１８の処理が新たに追加され、また、Ｓ１１"は図３のＳ１１と一部処理内容が異なる。以下、主に、Ｓ１８とＳ１１"の処理について説明する。
【０１１６】
図１１のフローチャートでは、前述したＳ１０の処理後、Ｓ１８に処理が進み、そのＳ１８の処理後にＳ１１"に処理が進む。
Ｓ１８において、管理部２０９は、情報処理装置２０"の各構成部が行った処理、また各構成部が行う処理を管理し、それら各構成部の処理に対してＳ１０の把持成否判定処理により得られる把持成否判定結果を保存して管理する。なお、図１１では、Ｓ１０による把持成否判定結果を保存した後に、Ｓ１８の処理を行う例を挙げているが、把持成否判定結果を保存する処理以外のシステム動作管理については、この例に限定されず、他の処理後に行ってもよい。
【０１１７】
例えば、管理部２０９は、システム動作管理について、Ｓ５の視覚情報取得の後に行ってもよいし、Ｓ６の把持成否確率分布決定の後に行っても、あるいは、これら以外の処理の後に行ってもよい。この場合、管理部２０９は、Ｓ５で取得部２０１"が視覚情報として画像データを取得できたかどうかを管理する。なおこのときの管理部２０９は、取得部２０１"から画像データを取得して管理してもよい。そして、管理部２０９は、Ｓ５で取得部２０１"における取得の処理が成功していれば、次に、Ｓ６で確率決定部２０２"が把持成否確率分布を決定するように動作を管理する。また、管理部２０９は、把持成否確率分布が決定された後に確率決定部２０２"から把持成否確率分布を取得してもよいし、把持成否確率分布の決定が行われたという情報を取得してもよい。そしてその後、Ｓ７において、位置決定部２０３"は、把持成否確率分布に基づいて把持位置を決定する。また、管理部２０９は、位置決定部２０３"が決定した把持位置を取得してもよいし、把持位置の決定が行われたという情報を取得してもよい。また、管理部２０９は、位置決定部２０３"から取得した把持位置に基づき、Ｓ８において制御部２０４"がロボット１０"を制御するよう動作管理を行ってもよい。この場合、管理部２０９は、ロボット１０"の制御情報として、マニピュレータ１の関節角度情報や把持装置３の把持動作処理情報を取得する。そして、管理部２０９は、Ｓ１０の把持成否判定が行われると、Ｓ１８において、判定部２０５"から把持成否判定結果を取得して、その取得した把持成否判定結果を、制御部２０４"から取得した制御情報と関連付けて保存する。
【０１１８】
Ｓ１８の後、次のＳ１１"に進むと、状態推定部２０６"は、管理部２０９からシステム動作管理情報を取得し、当該システム動作管理情報を用いて、ロボットシステム１００"の状態を推定する。前述した第一、第二の実施形態では、把持成否判定後にシステム状態の推定を行っていたが、第三の実施形態では、各構成部の処理が管理されているため、それら各構成部における処理後に随時、推定を行うことが可能となる。各構成部の処理後に随時推定を行う場合、状態推定部２０６"は、把持動作実行時、把持動作実行後の持ち上げ時や搬送時など、ロボット１０がどのような動作状態にあるかといった動作管理情報を管理部２０９から取得し、その動作状態を考慮した推定を行う。
【０１１９】
このように第三の実施形態では、各構成部による処理後に随時推定を行うことで、システム状態が中間状態と推定された場合に、より詳しく失敗要因を推定することが可能となる。以下、システム状態が中間状態と推定された場合に、より詳しく失敗要因を推定する方法について述べる。
第三の実施形態においても、第一の実施形態と同様に、１回の把持動作で把持に成功せず、何度か把持に失敗し、リトライで把持に成功した場合は中間状態であると推定する。そして、状態推定部２０６"は、把持成否確率が十分に高い場合には、把持位置決定の処理までは成功しており、把持制御以降の処理で失敗している可能性が高いと推定する。すなわち、把持制御要因により把持に失敗したと推定する。その際、状態推定部２０６"は、随時システム状態を推定することで、動作を細かく分割して、どの動作において失敗したかを推定する。例えば、対象物体４１の把持動作時に失敗した場合、状態推定部２０６"は、第一の実施形態のＳ１１で述べたような方法でシステム状態を推定するが、把持した後の持ち上げ時に失敗した場合には、システム状態の推定方法を変える。例えば、把持した後の持ち上げ時に対象物体４１が落下した場合、状態推定部２０６"は、その失敗要因は把持動作制御要因の中でも、ハードウェアに関する要因が高いと推定する。このように推定する理由は、把持することには既に成功しているので、キャリブレーション値のずれなどの把持目標位置に把持装置３が移動できていないといった問題ではなく、把持装置３に関する問題と考えられるためである。例えば把持装置３が吸着機構である場合、吸着パッドの劣化や、エアーチューブの劣化、折れ曲がりなどによって、十分なエア流量が供給されていないために失敗するような、ハードウェアに関する要因が高いと推定することができる。
【０１２０】
また第一、第二の実施形態では、把持成否判定の過去の履歴を利用していないが、第三の実施形態では管理部２０９が過去の把持成否判定結果を制御情報と合わせて履歴として保存している。このため、状態推定部２０６"は、管理部２０９により管理されている過去の履歴を利用してシステム状態を推定することも可能である。例えば、状態推定部２０６"は、過去における数サイクルの把持動作成功や失敗の履歴を管理部２０９から取得し、それら過去の履歴を利用して、把持成功までのリトライ回数や把持に失敗する確率を求め、それらの情報をもとにシステム状態を推定する。一例として、中間状態か異常状態かのリトライ回数の閾値として、３回以内のリトライの場合は中間状態であると推定する場合について考える。例えば把持成功までの平均リトライ回数が４回であった場合、１サイクル目では４回目に把持に成功したが、２サイクル目では２回で把持に成功したとすると、平均で３回目に把持に成功しているので、システムが中間状態として動作していると考えられる。しかし、例えば２サイクル目でも４回目に把持に成功している場合、平均では３回目に把持に成功していることになるが、この時の把持成功確率は下がってきており、システム状態の度合いが異常になりつつあると考えられる。すなわちこの場合、状態推定部２０６"は、過去の履歴を基に、中間状態から異常状態へと遷移したと推定する。前述した第一、第二の実施形態では、サイクルごとにシステム状態の推定が行われるが、第三の実施形態の場合は、複数サイクルの過去の履歴を基にシステム状態の推定を行うことができる。なお、中間状態あるいは異常状態における失敗要因の推定方法としては、前述した第一、第二の実施形態のＳ１１、Ｓ１１'で述べた方法を用いてもよいし、前述の各構成部の処理を行った後での推定方法でもよいし、これら以外の方法で推定してもよい。
【０１２１】
以上説明したように、第三の実施形態では、管理部２０９が管理する動作管理情報に基づき、状態推定部２０６"がシステム状態を推定する。第三の実施形態によれば、各処理の後に随時システム状態を推定できるため、より詳しくシステム状態を推定できる。また、第３の実施形態によれば、過去の把持成否結果等を保存管理しているため、複数サイクルの履歴に基づきシステム状態を推定できる。すなわち、第三の実施形態によれば、把持動作後だけでなく、各構成部の処理後に随時、また過去の複数サイクルの履歴を基に、システム状態を推定るため、予防保全、事後保全をより詳しく容易に行えるようになり、その結果、生産性を高めることができる。
【０１２２】
＜その他の実施形態＞
前述した第二の実施形態では、力覚センサ５の代わりに近接覚センサを用いてもよい。近接覚センサは、近接した物体等までの距離を計測可能な近接計測センサであり、近接覚情報を取得する。力覚センサ５を用いた場合は接触により対象物体４１の位置を検出したが、近接覚センサを用いた場合には対象物体４１の表面の法線を検出できる。この例の場合、撮像装置２だけでは求まりにくい対象物体４１表面の法線をより正確に計測できるため、近接覚センサを用いることで、撮像装置２の画像に基づく把持位置の計測を補うことができる。なお、近接覚センサは複数用いてもよい。この例の場合、対象物体４１の表面の法線を検出することで、対象物体４１に対して法線方向に把持装置３がアプローチを行えるようになる。すなわち、近接覚センサによる計測結果から対象物体４１の位置や表面の法線方向の情報を得て、把持成否確率分布と合わせて把持位置を決定することが可能となる。これにより、例えば把持装置３が吸着機構である場合、エアーのリークが少なくなるように対象物体４１にアプローチできるようになり、把持の成功確率を高めることができるようになる。
【０１２３】
前述した第一〜第三の実施形態において、把持位置を決定する際には、撮像装置として距離センサを利用し、距離画像の信頼度を使って把持位置を決定してもよい。ビニール袋や緩衝材に包まれた物体のように、正確な距離画像を得難い対象物体４１であっても、距離画像の信頼度に基づき把持位置を決定することで、対象物体４１へのアプローチがより成功し易くなる。これにより、対象物体の把持が成功するまでの時間を短くすることができ、作業効率を向上させることが可能となる。
【０１２４】
また第一〜第三の実施形態において、対象物体４１はビニール袋や緩衝材に包まれていなくてもよい。例えば、電源コードのような柔軟物体や金属・半透明の物体のような、変形や光の反射が変化することによって把持位置を決定し難い物体であってもよい。なお、対象物体４１は把持位置の推定が困難な物体には限定されず、変形しにくく、光の反射が変化しにくい物体でもよい。
【０１２５】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１２６】
上述の実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明は、その技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１２７】
１：マニピュレータ、２：撮像装置、３：把持装置、１０：ロボット、２０：情報処理装置、４１：対象物体、１００：ロボットシステム、２０１：取得部、２０２：確率決定部、２０３：位置決定部、２０４：制御部、２０５：判定部、２０６：状態推定部、２０７：表示制御部
【図１】
2019188516.tif 000005
【図２】
2019188516.tif 000006
【図３】
2019188516.tif 000007
【図４】
2019188516.tif 000008
【図５】
2019188516.tif 000009
【図６】
2019188516.tif 000010
【図７】
2019188516.tif 000011
【図８】
2019188516.tif 000012
【図９】
2019188516.tif 000013
【図１０】
2019188516.tif 000014
【図１１】
2019188516.tif 000015
【図１２】
2019188516.tif 000016