(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下、添付図面を参照して、本発明を実施するための形態について詳細に説明する。なお、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正または変更されるべきものであり、本発明は以下の実施の形態に限定されるものではない。
【0010】
(第一の実施形態)
図1は、本実施形態における情報処理装置120を備える物体認識保持装置2000の構成例を示す図である。本実施形態では、物体認識保持装置2000を、ロボットによる対象物体の認識および保持動作を行うロボットシステムに適用した場合について説明する。
情報処理装置120は、マニピュレータ400による撮像および保持の対象となる対象物体を複数の所定の撮像位置姿勢から撮像した画像に基づいて、学習データ(ラベルを付与した画像)を生成する。ロボットシステム2000は、情報処理装置120により生成された学習データを用いてモデルを機械学習し、学習したモデルを用いて画像中の対象物体を認識して保持動作を行う。本実施形態では、ロボットシステム2000は、ディープラーニングの一種であるCNN(Convolutional Neural Network)によってモデルを学習する。そして、ロボットシステム2000は、学習した学習モデル(CNNモデル)を用いて画像中の対象物体を認識し、対象物体の保持位置姿勢を求め、保持動作を行う。
【0011】
本実施形態では、情報処理装置120は、対象物体に対して実際に一回保持動作を行う。また、情報処理装置120は、実際に対象物体の保持を行うときのマニピュレータ400の保持位置姿勢(保持動作時の保持位置姿勢)と、その保持位置姿勢における対象物体の保持の成功/失敗を示す保持成否結果(保持成否情報)とを学習情報として取得する。そして、情報処理装置120は、取得した学習情報をもとに学習データを生成する。
本実施形態では、情報処理装置120は、所定の撮像位置姿勢にて対象物体が撮像された画像を取得し、取得した画像に対して学習情報を対応付けることで学習データを生成する。このとき、情報処理装置120は、取得した画像の撮像を行ったときのマニピュレータ400の撮像位置姿勢と学習情報として取得した保持位置姿勢とに基づいて、取得した画像に、当該画像おける上記保持位置姿勢と保持成否情報とを対応付ける。ここで、上記の画像における保持位置姿勢は、画像の撮像位置姿勢から見た実際の保持位置姿勢である。つまり、上記の画像における保持位置姿勢は、画像の撮像を行ったときのマニピュレータ400の位置姿勢と、上記の実際に対象物体の保持を行うときのマニピュレータ400の位置姿勢との相対的な位置姿勢情報である。
【0012】
学習情報は、学習データの生成に必要となる情報であり、画像に対応付けられる情報である。本実施形態では、学習情報は、保持動作時の保持位置姿勢と保持成否情報とを含む。学習データは、学習に用いる画像とラベルとの組である。ラベルは、学習に用いる教師信号であり、画像における保持位置姿勢と保持成否情報とを含む。
また、保持位置姿勢は、対象物体を保持するときのマニピュレータ400の位置姿勢であり、例えば保持装置600が吸着機構によって対象物体を吸着する場合、吸着パッドを対象物体に接触させた状態でのマニピュレータ400の位置姿勢をいう。ここで、保持とは、対象物体を把持したり吸着したりする操作であり、その後、対象物体を搬送できる状態にする操作をいう。なお、マニピュレータ400と保持装置600との位置関係が既知である場合、保持位置姿勢として、対象物体を保持するときの保持装置600の位置姿勢を用いてもよい。
また、撮像位置姿勢は、対象物体の画像の撮像を行ったときのマニピュレータ400の位置姿勢である。なお、マニピュレータ400と撮像装置500との位置関係が既知である場合、撮像位置姿勢として、画像の撮像を行ったときの撮像装置500の位置姿勢を用いてもよい。上記画像は、RGBのカラー画像、デプス画像(距離画像)およびモノクロ画像のうち少なくとも1つを含む。
【0013】
(システム構成)
図1に示すように、ロボットシステム2000は、情報処理装置120と、学習装置220と、認識装置320と、マニピュレータ400と、撮像装置500と、光源510と、保持装置600と、を備える。
情報処理装置120は、マニピュレータ400に対して制御値を出力し、マニピュレータ400を制御する。マニピュレータ400は、対象物体1を任意の位置姿勢から撮像したり、対象物体1を操作したりするために、撮像装置500、光源510および保持装置600を移動可能に構成されている。また、情報処理装置120は、撮像装置500に対して撮像トリガー(撮像の指示)を出力し、撮像トリガーを受け取った撮像装置500が撮像した画像を取得することができる。情報処理装置120は、撮像装置500から取得した画像を学習データの生成に用いる。
【0014】
撮像装置500は、対象物体のカラー画像およびデプス画像を撮像することができる。撮像装置500は、情報処理装置120からの撮像トリガーを受け取ったタイミングで撮像を行い、情報処理装置120に画像信号を送信する。また、撮像装置500は、後述する認識装置320からの撮像トリガーを受け取ったタイミングでも撮像を行い、認識装置320に画像信号を送信する。
【0015】
学習装置220は、情報処理装置120により生成された学習データを用いて、学習モデル(CNNモデル)を学習し、保存する。認識装置320は、撮像装置500に対して撮像トリガーを出力し、撮像トリガーを受け取った撮像装置500が撮像した画像を取得することができる。認識装置320は、撮像装置500から取得した画像を対象物体の操作に用いる。認識装置320は、学習装置220が保存した学習モデルと、撮像装置500から取得した画像とを用いて、画像中の対象物体を認識し操作する。
マニピュレータ400は、例えば、多関節ロボット等により構成することができる。マニピュレータ400は、各関節の角度を変更することで撮像装置500、保持装置600および光源510の位置姿勢を変更可能な位置姿勢変更機構を備える。位置姿勢変更機構は、電動モータによって駆動されてもよいし、油圧や空気圧等の流体圧で作動するアクチュエータによって駆動されてもよい。この位置姿勢変更機構は、情報処理装置120から出力される動作指示情報に従って駆動される。
【0016】
保持装置600は、ロボットが対象物体の種類に応じた操作を実現するためのツールであり、モータ駆動可能なチャック機構を有し対象物体を把持可能なハンドや、空気圧で対象物体を吸着する吸着パッドを用いたハンドを用いることができる。なお、保持装置600はマニピュレータ400に対して着脱可能に取り付けられており、ワークの種類に応じて交換可能であってよい。また、マニピュレータ400は、多関節ロボットに限定されるものではなく、数値制御(Numerical Control:NC)可能な可動式の機械であってもよい。撮像装置500および光源510は、保持装置600付近に設置することができる。
ロボットシステム2000は、情報処理装置120によって決定された行動を実施し、対象物体1および周辺物体2を撮像したり、対象物体1を保持したり搬送したりする操作を実行する。本実施形態において、行動とは、対象物体1を撮像あるいは操作するためのロボットシステム2000の動作のことである。
【0017】
対象物体1は、カメラのアクセサリーなどのような、マニピュレータ400による操作対象となることが想定される部品である。対象物体1の周辺には、周辺物体2が存在する。周辺物体2は、対象物体1の周辺に位置する対象物体1以外の全ての物体であり、例えば
図1に示すように、バラ積みされた対象物体1の周辺に存在する対象物体1と同じ種類の物体や、対象物体1を収容している容器を含む。また、周辺物体2は、対象物体1を収容している容器の周辺に置かれた物体を含んでもよい。
【0018】
撮像装置500は、カメラや、光を検出するセンサ、フォトダイオードなどで構成される視覚センサであり、対象物体1および周辺物体2の画像を撮像し、撮像した画像を情報処理装置120に出力する。光源510は、例えばプロジェクタによって構成され、可視光を出射したり、レーザ光源から赤外光を出射したりすることで、対象物体1および周辺物体2に対して均一照明光やパターン光を投射する。撮像装置500は、光源510によって光が投射された対象物体1および周辺物体2の画像を撮像することで、三角測量の原理により、対象物体1および周辺物体2までの距離を表す距離画像を取得することができる。
なお、撮像装置500は、光源510によって光が投射されていない状態で、対象物体1および周辺物体2の画像を撮像することもできる。撮像装置500および光源510は、
図1に示すように、マニピュレータ400に搭載してもよいし、撮像対象空間の上方に固定配置したり、他の作業機械に搭載したりしてもよい。また、撮像装置500および光源510は複数配置してもよい。
【0019】
(装置の構成)
図2は、本実施形態における情報処理装置120を備えるロボットシステム2000の構成を示す図である。情報処理装置120は、学習情報取得部121と、目標位置姿勢生成部122と、制御部123と、画像取得部124と、学習データ生成部125と、学習データ蓄積部126と、保持成否判定部127と、を備える。
目標位置姿勢生成部122は、撮像装置500による撮像のためのマニピュレータ400の目標位置姿勢(目標の撮像位置姿勢)や、保持装置600による保持のためのマニピュレータ400の目標位置姿勢(目標の保持位置姿勢)を生成する。これらの目標位置姿勢は、ランダムで生成されてもよいし、設計者(ユーザ)が予め範囲を指定したり、具体的な値を指定したりすることで生成されてもよい。目標位置姿勢生成部122は、生成した目標位置姿勢を制御部123に出力する。
【0020】
制御部123は、目標位置姿勢生成部122から撮像位置姿勢が入力された場合、その撮像位置姿勢にマニピュレータ400を移動するようマニピュレータ400に対して制御値を出力することで、撮像装置500を移動する。そして、マニピュレータ400が指示された撮像位置姿勢に移動したら、制御部123は、撮像装置500に対して撮像トリガーを出力する。また、制御部123は、目標位置姿勢生成部122から保持位置姿勢が入力された場合、その保持位置姿勢にマニピュレータ400を移動するようマニピュレータ400に対して制御値を出力することで、保持装置600を移動する。そして、マニピュレータ400が指示された保持位置姿勢に移動したら、制御部123は、保持装置600に対して保持トリガー(保持の指示)を出力する。さらに、制御部123は、マニピュレータ400の位置姿勢を示す情報をマニピュレータ400から取得可能である。
【0021】
画像取得部124は、撮像装置500から画像を取得し、取得した画像を学習データ生成部125に出力する。画像取得部124は、例えばキャプチャボードやメモリ(RAM)によって構成することができる。保持成否判定部127は、保持装置600が対象物体1の保持動作を行ったときに、保持に成功したか失敗したかを判定する。例えば、保持装置600が吸着機構の場合、吸着時の真空到達度を計測することによって、上記判定を行うことができる。具体的には、予め吸着成功とする真空到達度の閾値を設定しておき、吸着動作実行時に真空到達度を計測し、閾値に達していれば吸着できているため吸着成功、閾値に達していなければ吸着できていないため吸着失敗と判定する。
学習情報取得部121は、撮像装置500による撮像時に制御部123がマニピュレータ400から取得した撮像位置姿勢と、保持装置600による保持動作時に制御部123がマニピュレータ400から取得した保持位置姿勢とを取得する。また、学習情報取得部121は、保持成否判定部127による判定結果である保持成否情報を取得する。そして、学習情報取得部121は、取得した保持動作時の保持位置姿勢および保持成否情報を学習情報として学習データ生成部125に出力する。また、学習情報取得部121は、取得した撮像位置姿勢を、学習データの生成に必要な情報として学習データ生成部125に出力する。
【0022】
学習データ生成部125は、学習情報取得部121から入力された撮像位置姿勢に基づいて、画像取得部124から入力された画像に、学習情報取得部121から入力された学習情報を対応付ける。このとき、学習データ生成部125は、学習情報として取得した保持動作時の保持位置姿勢を、画像の撮像位置姿勢に基づいて、画像における保持位置姿勢に変換して当該画像と対応付ける。そして、学習データ生成部125は、画像と当該画像に対応付けられた学習情報(保持位置姿勢および保持成否情報)とに基づいて学習データを生成し、生成した学習データを学習データ蓄積部126に出力する。学習データ蓄積部126は、学習データ生成部125から入力された学習データを保存する。学習データ蓄積部126は、メモリなどの記憶媒体に学習データを保存する。
なお、本実施形態では、情報処理装置120と、学習装置220と、認識装置320とが別々の装置である場合について説明するが、情報処理装置120が学習装置220および認識装置320の機能を有していてもよい。
【0023】
図3は、情報処理装置120のハードウェア構成の一例を示す図である。
情報処理装置120は、CPU11と、ROM12と、RAM13と、外部メモリ14と、表示部15と、入力部16と、通信I/F17と、システムバス18とを備える。
CPU11は、情報処理装置120における動作を統括的に制御するものであり、システムバス18を介して、各構成部(12〜17)を制御する。ROM12は、CPU11が処理を実行するために必要な制御プログラム等を記憶する不揮発性メモリである。なお、当該プログラムは、外部メモリ14や着脱可能な記憶媒体(不図示)に記憶されていてもよい。RAM13は、CPU11の主メモリ、ワークエリア等として機能する。つまり、CPU11は、処理の実行に際してROM12から必要なプログラム等をRAM13にロードし、当該プログラム等を実行することで各種の機能動作を実現する。
外部メモリ14は、CPU11がプログラムを用いた処理を行う際に必要な各種データや各種情報を記憶することができる。また、外部メモリ14は、CPU11がプログラムを用いた処理を行うことにより得られる各種データや各種情報等を記憶することができる。外部メモリ14は、上記の学習データを保存してもよい。
【0024】
表示部15は、液晶ディスプレイ(LCD)等のモニタにより構成される。入力部16は、キーボードやマウス等のポインティングデバイスにより構成され、情報処理装置100のユーザが情報処理装置100に対して指示を与えることができるように構成される。通信I/F17は、外部装置(本実施形態では、学習装置220、マニピュレータ400、撮像装置500、保持装置600)と通信するためのインタフェースである。通信I/F17は、例えばLANインタフェースとすることができる。システムバス18は、CPU11、ROM12、RAM13、外部メモリ14、表示部15、入力部16および通信I/F17を通信可能に接続する。
図2に示す情報処理装置120の各部の機能は、CPU11がプログラムを実行することで実現することができる。ただし、
図2に示す情報処理装置120の各部のうち少なくとも一部が専用のハードウェアとして動作するようにしてもよい。この場合、専用のハードウェアは、CPU11の制御に基づいて動作する。
【0025】
(認識処理)
以下、ロボットシステム2000の動作について、
図4を参照しながら説明する。この
図4の処理は、例えばオペレータがロボットシステム2000を起動したときに開始される。ただし、開始のタイミングは、ロボットシステム2000の起動時に限定されるものではない。以降、アルファベットSはフローチャートにおけるステップを意味するものとする。
まずS21において、情報処理装置120は、学習データを生成し保存する。学習データ生成処理の詳細については後述する。情報処理装置120が学習データを生成し終えたら、S22に移行する。S22では、学習装置220は、情報処理装置120によって保存された学習データを用いて学習モデルの学習を行い、学習モデルを保存する。この学習モデルを用いることで、対象物体1が撮像された画像を入力として、画像中の対象物体1を保持するためのマニピュレータ400の位置姿勢を得ることができる。つまり、どのような位置姿勢であれば対象物体1の保持が成功しやすいかという情報を得ることができる。
【0026】
S23では、認識装置320は、撮像装置500から画像を取得し、学習装置220に保存された学習モデルを用いて画像中の対象物体1を認識する。このとき入力する画像の撮像位置姿勢は、ランダムで生成してもよいし、設計者(ユーザ)が予め範囲を指定したり、具体的な値を指定したりすることで生成してもよい。また、これら以外の方法で生成してもよい。認識装置320は、上記の認識結果をもとに、学習装置220に保存された学習モデルを用いて、認識された対象物体1を保持するための保持位置姿勢を生成する。そして、認識装置320は、生成された保持位置姿勢にマニピュレータ400を移動するようマニピュレータ400を制御することで、保持装置600を移動する。マニピュレータ400が指示された保持位置姿勢に移動したら、認識装置320は、保持装置600に対して保持トリガーを出力し、保持装置600による対象物体1の保持動作を実行させる。
【0027】
(学習データ生成処理)
図5は、
図4のS21において情報処理装置120が実行する学習データ生成処理の手順を示すフローチャートである。情報処理装置120は、CPU11が必要なプログラムを読み出して実行することにより、
図5に示す処理を実現することができる。ただし、上述したように、
図2に示す情報処理装置120の各要素のうち少なくとも一部が専用のハードウェアとして動作することで
図5の処理が実現されるようにしてもよい。この場合、専用のハードウェアは、情報処理装置120のCPU11の制御に基づいて動作する。
【0028】
まずS211において、情報処理装置120は、システムの初期化処理を行う。すなわち、CPU11は、ROM12もしくは外部メモリ14に格納されたプログラムをロードし、RAM13上に展開して実行可能な状態とする。また、情報処理装置120に接続された各機器のパラメータの読み込みや初期位置への復帰を行い、使用可能な状態にする。
次にS212において、目標位置姿勢生成部122は、撮像のためのマニピュレータ400の目標位置姿勢である目標の撮像位置姿勢を生成し、制御部123に出力する。ここで、目標の撮像位置姿勢は、乱数で決定してもよいし、設計者(ユーザ)が予め固定値で決めておいてもよいし、範囲を指定してその範囲内で乱数により決定してもよいし、これら以外の方法で生成してもよい。例えば、
図1に示すように対象物体1を含む物体がバラ積みされている場合、バラ積みされている領域の所定位置を中心した半球状に位置し、当該所定位置付近を注視点とする撮像位置姿勢をランダムに生成してもよい。
【0029】
S213では、制御部123は、マニピュレータ400を制御し、マニピュレータ400をS212において生成された撮像位置姿勢へ移動する。具体的には、制御部123は、S212において生成された撮像位置姿勢にマニピュレータ400を移動するために、マニピュレータ400をどのように動かせばよいかを決定する。例えば、目標の撮像位置姿勢の情報を順運動学によってマニピュレータ400の関節角度情報に変換し、マニピュレータ400の各関節のアクチュエータを動作させるための指令値を計算し、上記アクチュエータを制御するロボットコントローラへ出力する。これにより、マニピュレータ400が移動し、撮像装置500が撮像時の位置姿勢となる。
S214では、制御部123は、撮像装置500に対して撮像トリガーを出力し、画像取得部124は、撮像装置500から画像を取得する。そして、画像取得部124は、取得した画像を学習データ生成部125に出力する。
【0030】
S215では、学習情報取得部121は、S214において撮像装置500が撮像を行ったときのマニピュレータ400の位置姿勢を撮像時の撮像位置姿勢として取得し、学習データ生成部125に出力する。例えば、学習情報取得部121は、マニピュレータ400の各関節にあるエンコーダから撮像時における各関節の角度情報を取得し、逆運動学によりマニピュレータ400の位置姿勢を計算することで撮像位置姿勢を取得することができる。
S216では、情報処理装置120は、対象物体1の保持動作に移行するか、撮像を継続するかの判定を行う。情報処理装置120は、例えば撮像回数を予め設定しておき、その回数の撮像が行われている場合に、対象物体1の保持動作に移行すると判定することができる。なお、情報処理装置120は、指定範囲内を予め決められた間隔で撮像していき、当該指定範囲内を撮像し尽したら対象物体1の保持動作に移行すると判定するようにしてもよいし、他の判定方法を用いてもよい。情報処理装置120は、撮像を継続すると判定した場合はS212に戻り、対象物体1の保持動作に移行すると判定した場合はS217に移行する。
【0031】
S217では、目標位置姿勢生成部122は、保持のためのマニピュレータ400の目標位置姿勢である目標の保持位置姿勢を生成し、制御部124に出力する。ここで、目標の保持位置姿勢は、乱数で決定してもよいし、設計者(ユーザ)が予め固定値で決めておいてもよいし、範囲を指定してその範囲内で乱数により決定してもよいし、これら以外の方法で生成してもよい。
例えば、対象物体1が平積みされている場合、撮像装置500により撮像した画像を用いて背景差分によって対象物体1の位置姿勢を推定し、その重心位置を吸着位置と決定し、距離画像から吸着位置の高さを求めて、目標の保持位置姿勢を生成してもよい。一方、対象物体1がバラ積みされている場合は、撮像装置500により撮像した画像を用いて平面を検出し、その中で距離が近い位置を吸着するように目標の保持位置姿勢を生成してもよい。また、すでに対象物体1の吸着位置を学習している場合は、生成されている学習モデルを参照することで目標の保持位置姿勢を生成してもよい。さらに、これら以外の方法で対象物体1を認識し、目標の保持位置姿勢を生成してもよい。
【0032】
S218では、制御部123は、マニピュレータ400を制御し、保持動作を実行する。具体的には、制御部123は、S217において生成された保持位置姿勢にマニピュレータ400を移動するために、マニピュレータ400をどのように動かせばよいかを決定する。決定方法は、S213における決定方法と同様である。制御部123は、マニピュレータ400が目標の保持位置姿勢に移動し、保持装置600が保持動作時の位置姿勢に移動したら、保持装置600に保持トリガーを出力して保持動作を行わせる。例えば、保持装置600が吸着装置である場合、保持装置600は吸着動作を実施して対象物体1を吸着する動作を行う。また、保持装置600が把持装置である場合は、保持装置600は把持動作を実施して対象物体1を把持する動作を行う。
【0033】
S219では、保持成否判定部127は、保持成否判定を行う。例えば、マニピュレータ400に取り付けられた保持装置600が吸着装置である場合、保持成否判定部127は、保持装置600が吸着動作を行っているときのエジェクターの真空到達度を評価することで保持成否判定を行う。具体的には、保持成否判定部127は、予め吸着成功とする真空到達度の閾値を設定しておき、吸着動作実行時に真空到達度を計測し、閾値に達していれば吸着できているため吸着成功、閾値に達していなければ吸着できていないため吸着失敗と判定する。
一方、保持装置600が把持装置である場合は、保持成否判定部127は、把持幅を評価することで保持成否判定を行う。具体的には、保持成否判定部127は、保持動作実行時に把持幅を計測し、把持幅が対象物体1の大きさに合致するようであれば保持成功と判定する。そして、把持幅が閉じ過ぎていたり開きすぎている場合は、何も保持できていなかったり、目標とは異なる物体を保持していたり、意図しない状態で保持していたりする可能性があるので保持失敗と判定する。このように、保持成否判定部127は、保持成否を判定し、その結果を保持成否情報として学習情報取得部121に出力する。
【0034】
S220では、学習情報取得部121は、S219において保持成否判定部127が出力した保持成否情報を学習情報として取得し、学習データ生成部125に出力する。また、S221では、学習情報取得部121は、S218において保持装置600が保持動作を行ったときのマニピュレータ400の位置姿勢を保持動作時の保持位置姿勢として取得し、これを学習情報として学習データ生成部125に出力する。このように、学習情報取得部121は、制御部123が保持装置600に保持トリガーを出力したときのマニピュレータ400の位置姿勢を保持動作時の保持位置姿勢として取得する。したがって、何らかの事情によりマニピュレータ400が目標の保持位置姿勢からずれた位置で保持装置600による保持動作が行われた場合であっても、実際に保持動作が行われたときのマニピュレータ400の位置姿勢を適切に取得することができる。
S222では、学習データ生成部125は、S220およびS221において学習情報取得部121から取得した学習情報と、S214において画像取得部124から取得した画像との対応付けを行い、学習データを生成する。そして、学習データ生成部125は、生成した学習データを学習データ蓄積部126に出力する。以下、学習データの生成方法について具体的に説明する。
【0035】
学習情報として入力されるのは、保持動作時のマニピュレータ400の保持位置姿勢および保持成否情報であり、これらの学習情報が画像に対して対応付けられることで学習データが生成され、蓄積される。このとき画像に対応付けられる保持位置姿勢は、当該画像における保持位置姿勢であり、撮像位置姿勢に基づいて、学習情報として取得された保持動作時の保持位置姿勢を撮像位置姿勢から見た相対的な保持位置姿勢に変換することにより得られる。
本実施形態では、学習データの生成に際し、
図6に示すように、それぞれの座標系を設定する。つまり、撮像装置500の座標系をΣc、マニピュレータ400の座標系をΣr、マニピュレータ400の先端座標系Σt、保持装置600の座標系をΣf、作業空間内で基準となる座標系として、ワールド座標系Σwを設定する。そして、ワールド座標系Σwからマニピュレータ座標系Σrまでの変位を(RX,RY,RZ)とし、マニピュレータ400の姿勢を表す3×3の回転行列をRMとする。
【0036】
また、マニピュレータ座標系Σrからマニピュレータ400の先端座標系Σtまでの変位は(TX,TY,TZ)、マニピュレータ400の先端の姿勢を表す3×3の回転行列はTMとする。さらに、先端座標系Σtから保持装置座標系Σfまでの変位は(FX,FY,FZ)、保持装置600先端の姿勢を表す3×3の回転行列はFMとする。なお、保持装置600先端は、保持装置600が対象物体1あるいは周辺物体2に接触する部分である。
また、マニピュレータ座標系Σrから撮像装置座標系Σcまでの変位は(CX,CY,CZ)、撮像装置500の姿勢を表す3×3の回転行列はCMとする。さらに、撮像装置座標系Σcから対象物体座標系Σoまでの変位は(OX,OY,OZ)、対象物体1の姿勢を表す3×3の回転行列はOMとする。また、ワールド座標系Σwから見た対象物体1の変位は(WX,WY,WZ)、姿勢を表す3×3の回転行列はWMとする。
【0037】
マニピュレータ400の先端に取り付けられた保持装置600が対象物体1に接触しているとき、マニピュレータ400の先端に取り付けられた保持装置600先端の位置は、撮像装置500により撮像された対象物体1の位置と一致する。したがって、保持装置600先端が対象物体1に接触しているとき、以下の(1)式および(2)式が成り立つ。
【0039】
上記(1)、(2)式より、撮像装置500が対象物体1を撮像した画像における、保持装置600が対象物体1を保持したときのマニピュレータ400の位置姿勢を求めることができる。そのため、撮像装置座標系Σc、対象物体座標系Σo、先端座標系Σt、保持装置座標系Σfの関係をもとに、撮像装置座標系Σcから見た対象物体1の位置に保持装置600を移動させるために、マニピュレータ400をどのように制御すればよいのかが分かる。これは任意の撮像位置姿勢において成り立つので、複数の所定の撮像位置姿勢において撮像された複数の画像それぞれに対して、保持装置600が対象物体1を保持したときのマニピュレータ400の位置姿勢を求めることができる。
なお、本実施形態では、撮像装置500と保持装置600とが同一のマニピュレータ400に設置されているが、撮像装置500を移動可能なマニピュレータと保持装置600を移動可能なマニピュレータとが異なる場合にも適用可能である。
【0040】
上述したように、学習データは、学習に用いる画像とラベルとが組になったデータであり、異なる複数の撮像位置姿勢において撮像された複数の画像に対応して複数存在する。ラベルは、学習に用いる教師信号であり、それぞれの画像における保持位置姿勢と保持成否情報とを含む。つまり、学習データ生成部125は、複数の画像それぞれに対して、各画像におけるどの位置姿勢で対象物体1の保持を行ったかという情報と、その保持は成功したか失敗したかという情報とを持たせ、学習データとして生成する。
【0041】
図5に戻って、S223では、学習データ蓄積部126は、S222において生成された学習データを保存する。S224では、情報処理装置120は、対象物体1の保持動作を終了するか、継続するかの判定を行う。情報処理装置120は、例えば保持回数を予め設定しておき、その回数の保持が行われている場合に、保持動作を終了すると判定することができる。なお、情報処理装置120は、指定範囲内において予め決められた間隔で設定された目標の保持位置姿勢について保持動作を行っていき、すべての保持位置姿勢にて保持動作を行ったら保持動作を終了すると判定するようにしてもよい。また、他の判定方法を用いてもよい。情報処理装置120は、保持動作を継続すると判定した場合はS212に戻り、保持動作を終了すると判定した場合は学習データ生成処理を終了する。
【0042】
以上のように、本実施形態における情報処理装置120は、操作対象となる対象物体1に関する、学習データの生成に必要な学習情報として、対象物体1の保持を行う保持位置姿勢と、当該保持位置姿勢における保持成否情報とを含む情報を取得する。このとき、情報処理装置120は、対象物体1の保持を行う目標の保持位置姿勢を決定し、決定された保持位置姿勢となるように、マニピュレータ400を制御して保持装置600を移動し、保持装置600に保持を指示する。そして、情報処理装置120は、保持装置600が保持動作を行ったときの保持位置姿勢を取得するとともに、保持装置600による対象物体1の保持の成否を判定し、保持成否情報を取得する。
また、情報処理装置120は、対象物体1を撮像する所定の撮像位置姿勢を決定し、決定された撮像位置姿勢となるように、マニピュレータ400を制御して撮像装置500を移動し、撮像装置500に撮像を指示する。そして、情報処理装置120は、上記所定の撮像位置姿勢にて対象物体1が撮像された画像を取得し、取得された画像と学習情報とに基づいて学習データを生成する。
【0043】
これにより、操作対象となる対象物体1の保持動作の結果を、所定の撮像位置姿勢にて対象物体1が撮像された画像に対応付けて学習データを生成することができる。例えば、複数の撮像位置姿勢が決定されている場合、撮像を複数回行った後、対象物体1の保持動作を1回行い、その1回の保持動作の結果を異なる複数条件で撮像した画像にそれぞれ対応付けて、複数の学習データを生成することができる。したがって、学習データを生成する時間の短縮が図れる。また、学習時間を短縮できることで、マニピュレータ400や保持装置600の消耗を小さくすることができるので、機器をより長期間使用することができ、コストの削減が図れる。
【0044】
ここで、学習データは、ラベルを付与した画像である。また、ラベルは、対象物体1の撮像時の撮像位置姿勢と対象物体1の保持動作時の保持位置姿勢との相対的な位置姿勢情報と、対象物体1の保持動作時の保持位置姿勢における保持成否情報との組とすることができる。つまり、情報処理装置120は、実際に対象物体1に対する保持動作を行ったときの保持位置姿勢を、撮像された画像における保持位置姿勢に変換して画像に対応付ける。ここで、異なる複数の撮像条件で複数の画像が撮像された場合、情報処理装置120は、実際に対象物体1に対する保持動作を行ったときの保持位置姿勢を、複数の画像それぞれにおける保持位置姿勢に変換して画像に対応付けることができる。このように、1回の保持動作で得られた学習情報を、複数の画像に容易かつ適切に対応付けることができる。
【0045】
このように、本実施形態によれば、対象物体1を保持するための学習データを容易に大量に生成することができるので、対象物体1を保持するための学習モデルの生成の手間を低減することができる。
【0046】
(第二の実施形態)
次に、本発明の第二の実施形態について説明する。
上述した第一の実施形態では、情報処理装置120が認識装置320による認識・保持動作の前に学習データを生成する場合について説明した。この第二の実施形態では、さらに認識装置320の認識・保持動作中(ランタイム時)にも学習データを生成する場合について説明する。
(システム構成)
本実施形態におけるロボットシステム2000の構成は、
図1の構成と同様である。
(装置の構成)
本実施形態における情報処理装置120の構成は、
図2に示す構成と同様である。ただし、本実施形態では、認識装置320の構成が第一の実施形態とは異なる。認識装置320は、撮像装置500から画像を取得し、学習装置220に保存された学習モデルを参照して画像中の対象物体を認識し、当該対象物体を保持するための目標位置姿勢(目標の保持位置姿勢)を生成する。そして、認識装置320は、生成された目標の保持位置姿勢にマニピュレータ400を移動するようマニピュレータ400を制御し、保持装置600に保持動作を行わせる。本実施形態では、認識装置320は、保持装置600が保持動作を行うまでのマニピュレータ400の移動中にも、対象物体1および周辺物体2の撮像を複数回行い、撮像された画像を用いて学習データを生成する。
【0047】
認識装置320の構成は、
図2に示す情報処理装置120の構成と学習装置220の構成とを含む。つまり、認識装置320は、学習データの生成機能と、学習モデルの生成機能とを有する。ただし、認識装置320における
図2の目標位置姿勢生成部212、制御部213および画像取得部214に相当する各部の処理は、ランタイム時の学習データ生成処理を行う点で第一の実施形態の情報処理装置120とは異なる。
【0048】
(認識処理)
本実施形態のロボットシステム2000による認識処理の流れは、
図4と同様である。ただし、
図4のS23の処理が上述した第一の実施形態とは異なる。
図7は、
図4のS23において認識装置320が実行する認識・保持動作処理の手順を示すフローチャートである。認識装置320のハードウェア構成は、
図3に示す情報処理装置120のハードウェア構成と同様であり、認識装置320のCPUが必要なプログラムを読み出して実行することにより、
図7に示す処理を実現することができる。ただし、認識装置320の各要素のうち少なくとも一部が専用のハードウェアとして動作することで
図7の処理が実現されるようにしてもよい。この場合、専用のハードウェアは、認識装置320のCPU11の制御に基づいて動作する。
【0049】
この
図7の処理は、
図4のS23に該当する処理であり、情報処理装置120における学習データ生成、学習装置220における学習モデル生成の後に実施される処理である。本実施形態では、認識装置320が、S22において学習装置220が保存した学習モデルを参照し、学習データの生成に用いる目標位置姿勢(撮像、保持)を生成する場合について説明する。しかしながら、認識装置320が学習装置220によって保存された学習モデルを利用せずに、他の方法によって上記目標位置姿勢を生成する場合は、必ずしもS21、S22の処理の直後に
図7の処理を行わなくてもよい。
ここで、
図7のS231〜S235およびS239〜S244の処理は、
図5のS211〜S215およびS219〜S224の処理と同様であるため、以下、処理内容が異なる部分を中心に説明する。
【0050】
S236では、認識装置320は、S234において取得された画像をもとに、学習装置220の学習モデルを参照して画像中の対象物体1を認識し、認識された対象物体1を保持可能であるか否かを判定する。具体的には、認識装置320は、学習装置220の学習モデルを参照しても、上記の認識された対象物体1を保持可能な位置姿勢を生成できない場合、対象物体1を保持できないと判定し、再度、撮像を行うためにS232に戻る。一方、学習モデルを参照した結果、対象物体1を保持可能な位置姿勢を生成できた場合、対象物体1を保持可能であると判定してS237に移行する。なお、上述した第一の実施形態では、S212からS215の処理を複数回行うとしたが、本実施形態においては必ずしも複数回行う必要はない。
【0051】
S237では、認識装置320は、保持・撮像動作のための目標位置姿勢を生成する。上述した第一の実施形態では、S217において保持のための目標位置姿勢の生成のみを行った。これに対して、本実施形態では、学習データの追加生成のために、保持位置姿勢への移動中にも撮像を行う。そのため、認識装置320は、保持のための目標位置姿勢に加えて、保持位置姿勢への移動中における撮像のための目標位置姿勢を複数生成する。
このとき、目標の保持位置姿勢への移動が最短距離になったり最短時間になったりするようにマニピュレータ400の軌跡が生成されてもよいが、より多くの撮像画像が得られるようにマニピュレータ400の軌跡を生成してもよい。例えば、対象物体1を中心にして多くの位置姿勢から撮像できるような軌跡を決定してもよいし、他の方法で軌跡を決定してもよい。
【0052】
S238では、認識装置320は、保持・撮像動作のためにマニピュレータ400を制御する。具体的には、S237において生成された目標の保持位置姿勢に向けてマニピュレータ400を移動し、保持動作を行う処理が実施される。その際、S237において目標の保持位置姿勢までの軌跡が決定されている場合には、その軌跡を通りながらマニピュレータ400を目標の保持位置姿勢へ移動するようにする。そして、マニピュレータ400の目標の保持位置姿勢への移動中には、S237において生成された複数の撮像位置姿勢での画像の取得と撮像位置姿勢の取得とをそれぞれ行う。
【0053】
図8は、
図7のS238において実行されるマニピュレータ制御処理の詳細を示すフローチャートである。
S238aでは、認識装置320は、
図7のS237において生成された目標位置姿勢のうちの1つを選択し、マニピュレータ400を選択された目標位置姿勢に移動する。ただし、このとき、目標の保持位置姿勢は最後に選択されるようにする。S238bでは、認識装置320は、マニピュレータ400がS238aにおいて選択された目標位置姿勢に移動された状態で、撮像装置500に対して撮像トリガーを出力し、撮像トリガーを受け取った撮像装置500が撮像した画像を取得する。S238cでは、認識装置320は、S238bにおいて取得された画像の撮像位置姿勢を取得する。
S238dでは、認識装置320は、マニピュレータ400が目標の保持位置姿勢に達しているか否かを判定する。そして、マニピュレータ400が目標の保持位置姿勢に達している場合はS238eに移行し、認識装置320は、保持装置600に対象物体1の保持動作を行わせる。一方、認識装置320は、S238dにおいてマニピュレータ400が目標の保持位置姿勢に達していないと判定すると、引き続きマニピュレータ移動動作を行うとしてS238aに戻る。つまり、認識装置320は、S237において生成された目標位置姿勢のうち、撮像動作が行われていない目標位置姿勢にマニピュレータ400を移動し、画像の取得と撮像位置姿勢の取得とを行う。この処理は、マニピュレータ400が目標の保持位置姿勢に達するまで繰り返し行われる。
【0054】
図7に戻って、S245では、認識装置320は、S213において蓄積された学習データを用いて学習モデルの学習を行い、学習モデルを学習装置220に保存する。このS245における処理は、
図4のS22における処理と同様である。
なお、
図7において、S232の撮像位置姿勢の生成およびS233の撮像動作のためのマニピュレータ制御は、マニピュレータ400が対象物体1を撮像可能な位置姿勢にある場合、必ずしも実行しなくてよい。また、S235の撮像位置姿勢の取得は、
図8のS238cにおいて撮像位置姿勢が取得されるため、必ずしも実行しなくてもよい。さらに、本実施形態では、保持位置姿勢が決定された後に学習データ生成のための撮像を行う場合について説明したが、保持位置姿勢が決定される前にも撮像を行い、学習データ生成に用いる画像を取得するようにしてもよい。
【0055】
以上のように、本実施形態では、認識装置320は、対象物体1を撮像した画像を入力し、学習装置220により学習されたモデルに基づいて、上記画像中の対象物体1を認識し、認識された対象物体1の保持を行う保持位置姿勢を決定する。さらに、認識装置320は、学習装置220により学習されたモデルに基づいて、認識された対象物体1を撮像する撮像位置姿勢を決定する。そして、認識装置320は、決定された保持位置姿勢にマニピュレータ400が移動するまでの間に、決定された撮像位置姿勢にて対象物体1を撮像して画像を取得するとともに、撮像時のマニピュレータ400の位置姿勢を随時取得する。決定された保持位置姿勢にマニピュレータ400が移動すると、認識装置320は保持装置600に保持を指示し、そのときのマニピュレータ400の位置姿勢と保持成否情報とを学習情報として取得する。そして、認識装置320は、情報処理装置120と同様に学習データを生成する。
このように、認識装置320は、対象物体1の認識・保持を行うランタイム時に、学習データの生成に必要な学習情報と学習に用いる画像とを取得し、学習データを生成することができる。したがって、効率的に学習データを生成することができ、学習データを生成する時間の短縮が図れる。
【0056】
(第三の実施形態)
次に、本発明の第三の実施形態について説明する。
上述した第一の実施形態および第二の実施形態では、画像に対して保持位置姿勢と保持成否情報とを対応付けて学習データを生成する場合について説明した。この第三の実施形態では、さらに画像における重力方向を示す重力方向情報を対応付けて学習データを生成する場合について説明する。
【0057】
(装置の構成)
図9は、本実施形態におけるロボットシステム2000Aの構成を示すブロック図である。この
図9において、
図2と同様の構成を有する部分には
図2と同一符号を付し、以下、構成の異なる部分を中心に説明する。
ロボットシステム2000Aは、情報処理装置120Aを備える。情報処理装置120Aは、
図2に示す情報処理装置120に、重力方向情報取得部128が追加された構成を有する。また、
図2の学習データ生成部125、学習データ蓄積部126、学習装置220および認識装置320は、処理内容が異なる学習データ生成部129、学習データ蓄積部130、学習装置220Aおよび認識装置320Aに置換されている。
また、ロボットシステム2000Aは、マニピュレータ400の姿勢を計測する姿勢センサ700を新たに備える。
【0058】
本実施形態では、マニピュレータ400の姿勢が変化し得る場合について説明する。マニピュレータ400の姿勢が変化し得る場合とは、マニピュレータ400がドローンに取り付けられていたり、AGV(Automatic Guided Vehicle)の一部として利用されていたりする場合などである。
上述した第一の実施形態および第二の実施形態では、画像に対して保持位置姿勢と保持成否情報とを対応付けて学習データを生成した。そのため、マニピュレータ400と対象物体1との相対的な位置姿勢情報のみが考慮されていた。
しかしながら、対象物体1が画像に同じように写っていたとしても、対象物体1が上から撮像されて壁に接しているのか、あるいは横から撮像されて床に置かれているのかといった、画像からは状況を判断するのが困難な場合がある。上から撮像されているならば、上から吸着すればピッキングできるが、横から撮像されている場合、横から吸着すると搬送中に落下してしまうなどといった違いが生じる可能性がある。このように、画像だけで判断すると同じような状況であっても、姿勢が異なっていることでより良いピッキング方法が異なる場合がある。
【0059】
そこで、本実施形態では、姿勢センサ700を用い、画像に対して重力方向情報も対応付けて学習データを生成する。つまり、マニピュレータ400と対象物体1との相対的な位置姿勢情報だけでなく、絶対的な位置姿勢情報を画像に対応付けて学習データを生成する。
姿勢センサ700は、ジャイロセンサ、加速度センサなどにより構成され、マニピュレータ400の姿勢を計測して、情報処理装置120Aへ姿勢情報を出力する。姿勢センサ700は、マニピュレータ400の姿勢を計測可能な位置に取り付けられる。例えば、姿勢センサ700は、マニピュレータ400のベースや、マニピュレータ400の先端に取り付けることができる。姿勢センサ700がマニピュレータ400先端に取り付けられている場合、マニピュレータ400の位置姿勢情報を用い、マニピュレータ400のベースの座標に変換するようにしてもよい。なお、姿勢センサ700は、マニピュレータ400との位置姿勢関係が一意に求まるのであれば、マニピュレータ400に直接取り付けられていなくてもよい。
【0060】
重力方向情報取得部128は、姿勢センサ700により計測された姿勢情報を入力として、重力方向を取得し、重力方向情報を学習データ生成部129に出力する。重力方向情報取得部128は、例えばメモリ(RAM)によって構成することができる。重力方向情報取得部128は、撮像装置500が画像を撮像したときの撮像位置姿勢の取得と同期して、重力方向情報を取得する。したがって、重力方向情報取得部128は、撮像装置500が画像を撮像したときのマニピュレータ400の重力方向を示す情報を取得することができる。
そして、学習データ生成部129は、画像に対して保持位置姿勢および保持成否情報を対応付けると同時に、その画像における重力方向情報を対応付ける。学習データ蓄積部130は、画像と、当該画像の重力方向情報と、当該画像における保持位置姿勢と、保持成否情報との組により構成される学習データを蓄積する。また、学習装置220Aは、学習データ蓄積部130によって蓄積された上記の学習データをCNNモデル(学習モデル)の学習に用い、認識装置320Aは、学習装置220Aに保存された学習モデルを用いて対象物体1の認識・保持動作を行う。
【0061】
(認識処理)
本実施形態のロボットシステム2000Aによる認識処理の流れは、
図4と同様である。ただし、各処理の内容は上述した第一の実施形態とは異なる。
図10は、
図4のS21に対応するステップにおいて情報処理装置120Aが実行する学習データ生成処理の手順を示すフローチャートである。この
図10の処理は、
図5のS215の後にS225の処理が追加され、S222およびS223の処理がS222aおよびS223aの処理に置換されていることを除いては、
図5の処理と同様である。したがって、
図5と同一処理を実行する部分には
図5と同一ステップ番号を付し、以下、処理の異なる部分を中心に説明する。
【0062】
S225では、重力方向情報取得部128は、重力方向情報を取得する。S213においてマニピュレータ400の制御が行われた後、S214における画像の取得、S215における撮像位置姿勢の取得が行われるが、それと同時に重力方向情報の取得が行われる。画像が複数回撮像される場合は、重力方向情報取得部128は、撮像の度に撮像位置姿勢と同時に重力方向情報を取得する。
【0063】
S222aでは、学習データ生成部129は、学習情報取得部121から入力された学習情報と、重力方向情報取得部128から入力された重力方向情報と、画像取得部124から入力された画像との対応付けを行い、学習データを生成する。そして、学習データ生成部129は、生成した学習データを学習データ蓄積部130に出力する。S223aでは、学習データ蓄積手段130は、S222aにおいて生成された学習データを保存する。
【0064】
図4のS22に対応するステップでは、学習装置220Aは、情報処理装置120Aによって保存された学習データを用いて学習モデルの学習を行い、学習モデルを保存する。具体的には、学習装置220Aは、
図10のS223aにおいて蓄積された学習データをもとに、学習モデルを生成する。このモデルを用いることで、画像を入力として、画像に対してマニピュレータ400が対象物体1を保持するための位置姿勢が出力され、どのような位置姿勢であれば対象物体1の保持が成功しやすいかという情報を得ることができる。本実施形態では、学習データに重力方向情報が追加されているため、上述した第一の実施形態において説明したS22に対して、重力方向まで考慮したうえで保持位置姿勢が出力される点で異なる。
【0065】
図4のS23に対応するステップでは、認識装置320Aは、撮像装置500から画像を取得し、学習装置220Aに保存された学習モデルを用いて画像中の対象物体を認識し、対象物体の保持のためのマニピュレータ400の位置姿勢を生成する。このとき、認識装置320Aは、画像と重力方向情報とを入力として、保持位置姿勢を生成する。このように、認識装置320Aは、重力方向情報まで考慮したうえで保持位置姿勢を生成する。そして、認識装置320Aは、生成された保持位置姿勢にマニピュレータ400を移動するようマニピュレータ400を制御し、保持装置600に対して保持トリガーを出力することで保持装置600による対象物体1の保持動作を実行させる。
【0066】
以上のように、本実施形態におけるロボットシステム2000Aは、撮像装置500を移動可能なマニピュレータ400の姿勢を取得する姿勢センサ700をさらに備え、情報処理装置120Aは、姿勢センサ700から姿勢情報を取得する。そして、情報処理装置120Aは、姿勢センサ700から取得された姿勢情報をもとに、撮像装置500により撮像された画像における重力方向を示す重力方向情報を取得し、学習情報とともに重力方向情報を対応付けて学習データを生成する。
これにより、マニピュレータ400と対象物体1との相対的な位置姿勢情報に加えて、絶対的な位置姿勢情報も対応付けて学習データを生成することができる。このように、学習に用いる画像に対して重力方向情報も付加することで、マニピュレータ400の姿勢が変化する場合であっても、画像だけでは分からない状況を踏まえてより良い保持位置姿勢を学習することができ、保持成功率を向上させることができる。
【0067】
(第三の実施形態の変形例)
本実施形態においては、姿勢センサ700により取得した重力方向情報を用いる場合について説明したが、他のセンサからの他の情報を用いてもよい。例えば、磁気センサを用いて磁場の情報を取得し、画像と対応付けてもよい。
【0068】
(第四の実施形態)
次に、本発明の第四の実施形態について説明する。
上述した第一の実施形態から第三の実施形態では、学習データ生成の際の保持動作実行時、単純にマニピュレータ400を目標の保持位置姿勢に移動して保持動作を行う場合について説明した。この第四の実施形態では、上記の保持動作実行時に、保持装置600の物体との接触情報を取得し、その接触情報に基づいて保持動作を行う場合について説明する。
【0069】
(装置の構成)
図11は、本実施形態におけるロボットシステム2000Bの構成を示すブロック図である。この
図11において、
図2と同様の構成を有する部分には
図2と同一符号を付し、以下、構成の異なる部分を中心に説明する。
ロボットシステム2000Bは、情報処理装置120Bを備える。情報処理装置120Bは、
図2に示す情報処理装置120に、力覚情報取得部131が追加された構成を有する。また、
図2の制御部123は、処理内容が異なる制御部132に置換されている。
また、ロボットシステム2000Bは、マニピュレータ400が対象物体1を保持するときの力覚情報を計測する力覚センサ800を新たに備える。
【0070】
上述した第一の実施形態から第三の実施形態では、学習データ生成に際し、S217において生成された目標の保持位置姿勢に向けてマニピュレータ400を移動し、保持動作時の保持位置姿勢を学習情報として取得する場合について説明した。しかしながら、対象物体1がビニールに包まれているような場合、ハレーションにより距離情報が正確に計測できなかったり、ビニール内部にある物体の位置姿勢が誤って算出されたりする場合がある。このような場合、S217において生成された保持位置姿勢にマニピュレータ400を移動できなかったり、S217において生成された保持位置姿勢に移動しても対象物体1を保持できなかったりする。
そこで、本実施形態では、マニピュレータ400の先端で保持装置600の根本にあたる部分に力覚センサ800を取り付け、保持動作実行時に、保持装置600が対象物体1に接触したかどうかを判定する。そして、その判定結果を用いて、上記の対象物体1の認識の誤差に起因する目標の保持位置姿勢のずれを修正するようにする。
【0071】
力覚センサ800は、保持装置600にかかる外力が計測できる位置に取り付けられる。この力覚センサ800は、歪みゲージや圧電素子により構成され、保持装置600が対象物体1あるいは周辺物体2に接触しているときの保持装置600にかかる力(反力)を計測し、計測結果である力覚情報(接触情報)を情報処理装置120Bへ出力する。力覚センサ800は、6軸力覚センサ(Force/Torqueセンサ)であってもよいし、3軸力覚センサであってもよい。また、力覚センサ800は、1次元の圧力センサであってもよいし、接触の有無を判別する接触センサであってもよい。
【0072】
力覚情報取得部131は、力覚センサ800から出力される力覚情報を取得し、取得した力覚情報を制御部132へ出力する。力覚情報取得部131は、例えばメモリ(RAM)によって構成することができる。制御部132は、力覚情報取得部131から入力した力覚情報に基づいて、対象物体1あるいは周辺物体2に保持装置600が接触しているか否かを判定することができる。
【0073】
(認識処理)
本実施形態のロボットシステム2000Bによる認識処理の流れは、
図4と同様である。また、
図4のS21では、
図5と同様の処理を実行する。ただし、
図5のS218の処理の内容は上述した第一の実施形態とは異なる。S218の処理は、制御部132が、保持動作のためにマニピュレータ400を制御する処理である。以下、S218における処理の詳細について、
図12を参照しながら説明する。
【0074】
図12は、
図5のS218において情報処理装置120Bが実行するマニピュレータ制御処理の手順を示すフローチャートである。なお、このS218において実行される処理は、サンプリングタイムの間隔で高速に処理が繰り返される。
まずS218aにおいて、制御部132は、マニピュレータ400を制御し、
図5のS217において生成された保持位置姿勢に向けて移動する。次にS218bでは、力覚情報取得部131は、力覚センサ800から力覚情報を取得する。S218cでは、制御部132は、マニピュレータ400の保持位置姿勢を取得する。
【0075】
S218dでは、制御部132は、マニピュレータ400の移動動作を継続するか否かを判定する。具体的には、制御部132は、S218cにおいて取得された現在の保持位置姿勢とS217において生成された目標の保持位置姿勢とを比較し、マニピュレータ400が目標の保持位置姿勢に達しているか否かを判定する。また、制御部132は、S218bにおいて取得された力覚情報をもとに、保持装置600が物体に接触しているか否かを判定する。そして、制御部132は、マニピュレータ400が目標の保持位置姿勢に達しており、かつ保持装置600が物体に接触していると判定された場合、移動動作を終了すると判定してS218eに移行する。
【0076】
一方、制御部132は、マニピュレータ400が目標の保持位置姿勢に達していないと判定した場合は、引き続きマニピュレータ移動動作を継続すると判定してS218aに戻る。ただし、マニピュレータ400が目標の保持位置姿勢に達していない場合であっても、取得された力覚情報が予め設定した値を上回っている場合は、それ以上マニピュレータ400は目標の保持位置姿勢に近づけないと判定し、S218eに移行する。この場合、マニピュレータ400は目標の保持位置姿勢に達していないが、その時点でのマニピュレータ400の位置姿勢を保持動作時の保持位置姿勢として扱う。つまり、後で実行されるS221では、学習情報取得部121は、この時点での保持位置姿勢を学習情報として取得する。
【0077】
また、マニピュレータ400が目標の保持位置姿勢に達しているにもかかわらず、取得された力覚情報の値から保持装置600が物体に接触していないと判定される場合もある。この場合は、マニピュレータ移動動作を継続すると判定してS218aに戻る。ここで、マニピュレータ移動動作の継続条件は、目標の保持位置姿勢に対してさらにどの程度の距離をどの方向に移動するかを設定しておいてもよいし、接触時の力が閾値を上回るまで動作を継続するといった力の閾値を設定しておいてもよい。また、他の条件を設定しておいてもよい。接触時の力が閾値を上回る場合は、その時点でのマニピュレータ400の位置姿勢を保持動作時の保持位置姿勢として扱う。
【0078】
S218eでは、制御部132は、マニピュレータ400による保持動作を実施するか否かを判定する。このとき、制御部132は、S218dからの移行条件を参照し、保持動作を実施するか否かを判定する。具体的には、以下のようにして保持動作を実施するか否かを判定する。ただし、判定方法は必ずしも以下の条件でなくてもよい。
制御部132は、S218dにおいて、マニピュレータ400が目標の保持位置姿勢に達しており、かつ保持装置600が物体に接触していると判定されてS218eに移行してきた場合は、保持動作を実施すると判定する。また、制御部132は、マニピュレータ400が目標の保持位置姿勢に達していないが、取得された力覚情報が予め設定した値を上回っていたためにS218eに移行してきた場合にも、対象物体1を保持できる状態にあるとして保持動作を実施すると判定する。
【0079】
一方、マニピュレータ400が目標の保持位置姿勢に達しているにもかかわらず、取得された力覚情報の値から保持装置600が物体に接触していない場合に、設定条件を満たしてS218eに移行してきた場合は、設定条件に応じて判定が異なる。例えば、目標の保持位置姿勢に対してさらにどの程度の距離を移動するかを設定していた場合、設定した距離を移動した後も、対象物体1に接触していないので、保持動作を実施しないと判定する。この場合は、
図5のS217に戻り、保持動作のための目標位置姿勢の生成をやり直す。また、接触時の力が閾値を上回るまで動作を継続するといった力の閾値を設定していた場合は、対象物体1に接触している可能性があるので、保持動作を実施すると判定する。
制御部132は、このS218eにおいてマニピュレータ400による保持動作を実施すると判定した場合、S218fに移行し、保持装置600を制御して対象物体1の保持動作を行わせる。
【0080】
以上のように、本実施形態におけるロボットシステム2000Bは、保持装置600が物体に接触したときの反力を取得する力覚センサ800をさらに備え、情報処理装置120Bは、力覚センサ800からの力覚情報(接触情報)を取得する。そして、情報処理装置120Bは、力覚センサ800から取得された力覚情報をもとに、保持動作時に保持装置600が対象物体1に接触しているかどうかを判定する。
これにより、情報処理装置120Bは、マニピュレータ400が保持動作のための目標の保持位置姿勢に達する前に対象物体1に接触した場合や、目標の保持位置姿勢に達しているにもかかわらず対象物体1に接触していない場合を判定することができる。つまり、情報処理装置120Bは、目標の保持位置姿勢が対象物体1を保持可能な位置姿勢であるか否かを判定することができる。
【0081】
そして、情報処理装置120Bは、上記判定の結果を踏まえて保持動作を実施するかどうかを判定することができる。例えば、情報処理装置120Bは、目標の保持位置姿勢が対象物体1を保持可能な位置姿勢ではないと判定した場合、マニピュレータ400を目標保持位置姿勢からさらに移動し、対象物体1を保持可能な位置姿勢において保持動作を実施することができる。また、情報処理装置120Bは、目標の保持位置姿勢に達する前に対象物体1を保持可能な位置姿勢となったと判定した場合、その時点で保持動作を実施することができる。したがって、対象物体1の保持成功率を向上させることができる。
このように、情報処理装置120Bは、力覚センサ800から得られる力覚情報(接触情報)をもとに、対象物体1の保持成功率の高い保持位置姿勢を決定し、学習情報として取得する。つまり、情報処理装置120Bは、学習情報(保持位置姿勢)の修正・補完を行うことができる。したがって、目標の保持位置姿勢が実際に対象物体1を保持可能な位置姿勢からずれている場合であっても、保持動作が成功する保持位置姿勢において保持動作を実施することができ、保持成功の学習情報を効率的に集めることができる。その結果、学習時間を短縮することができる。
【0082】
(第四の実施形態の変形例)
本実施形態においては、学習情報を修正・補完するために、力覚センサ800から取得した力覚情報を用いる場合について説明したが、他のセンサからの他の情報を用いて学習情報を修正・補完してもよい。例えば、近接センサを用いて近接覚情報を取得し、学習情報を修正・補完してもよい。
【0083】
(変形例)
上記各実施形態においては、撮像装置500がRGBのカラー画像とデプス画像とを取得する場合について説明したが、撮像装置500は、モノクロ画像を取得する装置であってよい。また、撮像装置500は、赤外線画像を取得する装置であってもよい。
また、上記各実施形態においては、マニピュレータ400が多関節ロボットである場合について説明したが、マニピュレータ400は、撮像装置500および対象物体の少なくとも一方を移動可能であればよい。つまり、マニピュレータ400は、6軸ロボットやパラレルリンクロボットであってもよいし、直交ロボットであってもよい。また、マニピュレータ400は、ロボット以外の移動機構であってもよい。
【0084】
さらに、上記各実施形態においては、学習データ蓄積部により学習データを保存してから学習装置によりCNNモデルの学習を行う場合について説明したが、上記に限定されるものではない。例えば、学習データを生成しつつCNNモデルに入力することで、学習を行うようにしてもよい。
また、上記各実施形態においては、ディープラーニングの一種であるCNNを学習して、認識器を構成する場合について説明したが、上記に限定されるものではない。特徴量としては、LBP(Local Binary Pattern)を用いてもよいし、BoF(Bag of Features)などを用いてもよい。また、識別器としては、決定木を用いてもよいし、SVM(Support Vector Machine)などを用いてもよい。
【0085】
さらに、上記各実施形態においては、画像取得部124が取得する画像は、静止画であってもよいし、動画であってもよい。動画の場合は、動画の時刻におけるマニピュレータ400の位置姿勢を、撮像位置姿勢として扱う。
また、上記各実施形態においては、学習対象は、画像における保持位置姿勢としたが、保持可能な位置姿勢が存在しなかった場合、次の撮像候補となる位置姿勢を学習対象としてもよい。こうすることで、保持可能な位置姿勢が判定できない場合でも、別の撮像位置姿勢から保持位置姿勢を求められる可能性が高まる。
【0086】
さらにまた、上記各実施形態においては、設計者(ユーザ)が予め指定した撮像位置姿勢の範囲内において、撮像装置500が撮像を行うようにマニピュレータ400の撮像位置姿勢を決定してもよい。
また、上記各実施形態においては、情報処理手段120は、光源510を制御し、撮像時における照明の状態を制御してもよい。例えば、同じ撮像位置姿勢においても、光源510のオン、オフや、光源510からの光の強弱の状態などを変化させて、より多くの状況を撮像してもよい。さらに、光源510に同軸照明を用いることで、異なる位置姿勢から撮像しても、対象物体1が同じように撮像できるようにしてもよい。
【0087】
また、上記各実施形態においては、学習データの生成に際し、撮像装置500によって撮像された画像に対して画像処理を行った複数の画像に基づいて学習データを生成してもよい。ここで、画像処理は、拡大縮小または回転といった幾何変換、あるいはノイズの付与または明るさ(輝度値)や色の変更といった処理を含む。この場合、画像処理前の画像に対応する保持位置姿勢を、画像処理後の複数の画像に対しても同様に対応付けることで学習データを生成する。これにより、1枚の撮像画像から複数の学習データを生成できるので、学習データの生成に用いる画像を撮像する時間を低減することができる。
【0088】
さらに、上記各実施形態においては、撮像を複数回行う際に、マニピュレータ400の位置姿勢だけを変化させるのではなく、例えば、照明条件を変化させたり、背景を変化させたり、その他の条件を変化させたりしてもよい。
また、上記各実施形態においては、保持位置姿勢として学習するのは、必ずしもマニピュレータ400の位置姿勢でなくてもよい。例えば、対象物体1の底面が平面の上に置かれているような場合は、保持位置と法線方向だけでもよい。
さらに、上記各実施形態においては、保持装置600は対象物体1を保持可能な構成であれば、任意の装置を用いることができる。例えば、保持装置600は、吸着装置であってもよいし、開閉ハンドのような把持装置であってもよい。保持装置600が吸着装置である場合、保持位置姿勢は、吸着装置が対象物体1に接触する点とすればよいし、保持装置600が把持装置である場合は、保持位置姿勢は、把持中心と把持方向とすればよい。
【0089】
また、上記各実施形態においては、撮像装置500は、マニピュレータ400に取り付けられたオンハンドカメラであってもよいし、マニピュレータ400に取り付けられていなくてもよいし、マニピュレータ400以外のアクチュエータで可動してもよい。つまり、撮像装置500は、マニピュレータ400との相対的な位置関係が分かれば、どのように取り付けられていてもよい。
さらに、上記各実施形態においては、保持成否は、対象物体1を保持できたか否かだけで判断する場合について説明したが、タスクとしての成否結果をもって判断してもよい。保持は成功でも、タスクとして失敗のため保持成否結果を失敗と判断する例の一つとしては、対象物体1が箱に入っており、対象物体1の保持には成功したものの、保持後に箱がずれてしまうような場合がある。この場合、箱にマーカーを付けておき、マーカーを認識することで箱のずれを求め、許容範囲以上に箱がずれている場合は保持失敗と判断し、教師信号として与える保持成否情報は失敗とする。また、対象物体1が箱に入っており、対象物体1の保持には成功したものの、対象物体1を持ち上げる際に、箱の中の対象物体1以外のものが落下したり、箱の中の対象物体1以外のものに過剰な力がかかって壊れたりするような場合も同様である。
【0090】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記録媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。