(58)【調査した分野】(Int.Cl.,DB名)
前記抽出部は、前記視点の相異なる複数の前記画像情報と、前記複数の画像情報それぞれに含まれる同一の前記ワークの前記位置情報とに基づいて、前記ワークに対応する特徴量を抽出する、請求項2に記載の把持システム。
前記構築部は、前記収集データに基づいて機械学習により、前記ロボットの動作指令と、前記ワークに対応する特徴量との入力を受けて、前記把持確率を出力する把持確率モデルを構築する把持確率モデル構築部を更に有し、
前記算出部は、前記把持確率モデルを用いて前記把持確率を算出する、請求項7に記載の把持システム。
前記構築部は、前記収集データに基づいて機械学習により、前記画像情報の入力を受けて、前記複数のワークの位置情報と、前記複数のワークそれぞれの把持期待値とを出力する位置モデルを構築する位置モデル構築部を更に有し、
前記位置生成部は、前記位置モデルを用いて前記位置情報と前記把持期待値とを生成する、請求項10に記載の把持システム。
ワークを把持するハンドの位置及び姿勢の少なくとも一方と連動する視点から撮像された画像情報と、前記ハンドの位置及び姿勢の少なくとも一方を表すハンド位置情報とを取得する取得部と、
前記画像情報と前記ハンド位置情報との入力を受けてロボットの動作指令を出力するモデルを、前記取得部により取得された前記画像情報及び前記ハンド位置情報を含む収集データに基づいて機械学習により構築する構築部と、
を備える学習装置。
ワークを把持するハンドの位置及び姿勢の少なくとも一方と連動する視点から撮像された画像情報と、前記ハンドの位置及び姿勢の少なくとも一方を表すハンド位置情報とを取得することと、
前記画像情報と前記ハンド位置情報との入力を受けてロボットの動作指令を出力するモデルを、前記画像情報及び前記ハンド位置情報とを含む収集データに基づいて機械学習により構築することと、
を含む、モデルの製造方法。
【発明を実施するための形態】
【0013】
以下、実施形態について、図面を参照して詳細に説明する。図面の説明においては、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する場合がある。
【0014】
[把持システムの構成]
図1は、把持システム1の全体構成の一例を示す模式図である。
図1に示される把持システム1は、把持対象であるワークWを把持する動作をロボット2に実行させることにより、加工、組立等の様々な作業を自動化するシステムである。把持システム1は、ロボット2の把持動作に関する学習を行うとともに、学習結果に基づいてロボット2に把持動作を実行させる。
【0015】
把持システム1は、ロボット2と、ハンド3と、画像センサ4と、ロボットコントローラ5(ロボット制御部の一例)と、動作指令装置6と、学習装置7とを有する。
【0016】
ロボット2は、ワークWを把持するハンド3を支持し、ハンド3の位置及び姿勢の少なくとも一方を変更する。ロボット2は、例えば、多軸(例えば6軸又は7軸)のシリアルリンク型の垂直多関節ロボットであり、その先端部2aにハンド3を支持した状態で様々な作業を実行できるように構成される。ロボット2は、所定の範囲内において、ハンド3の位置及び姿勢を自在に変更し得るロボットであればよく、必ずしも6軸の垂直多関節ロボットに限られない。例えばロボット2は、6軸に1軸の冗長軸を追加した7軸の垂直多関節ロボットであってもよい。
【0017】
ハンド3は、ワークWを把持するエンドエフェクタである。ハンド3の一例は、一対の爪部材3aの開閉動作によって把持対象を把持するグリッパである。ハンド3は、把持機能を有していればよく、一対の爪部材を有するグリッパに限られない。例えばハンド3は、3本以上の爪部材を有するグリッパであってもよいし、吸着式のエンドエフェクタであってもよい。
【0018】
ロボット2は、一例として、バケット40内に配置された複数のワークWの中から、1つのワークWを把持する。ワークWは、種々の形状及び大きさを有する。ワークWの一例は、ボルト、ナット、電子部品などである。バケット40内のワークWは、整列されていない状態(いわゆるバラ積みの状態)である。ワークWは、把持可能なワークであればよく、数量、形状、大きさ、配列は限定されない。例えば、バケット40内に配置されたワークWは、1つであってもよい。バケット40内に配置された複数のワークWは、同一形状であってもよいし、形状の異なる複数種類のワークを混載したものでも構わない。バケット40内のワークWは、整列されていてもよい。ワークWは、剛体に限られず、弾性体であってもよい。ワークWは、バケット40内に配置されたワークに限られず、作業台などに配置されたワークであってもよい。
【0019】
画像センサ4は、画像情報を取得する検出器である。画像センサ4は、例えば、カメラ、CCD(Charge-Coupled Device)イメージセンサ、CMOS(ComplementaryMOS)イメージセンサなどである。画像センサ4は、画像情報の一例として画素値を取得する。画素値とは、色調や階調などの色情報であり、例えば輝度値である。
【0020】
画像センサ4は、ハンド3の位置及び姿勢の少なくとも一方と連動する視点から画像情報を取得する。視点とは、画像センサ4の撮像方向の起点となる位置である。ハンド3の位置及び姿勢の少なくとも一方と連動する視点とは、ハンド3の位置及び姿勢の少なくとも一方に応じて視点が変更されることを意味する。一例として、画像センサ4は、ハンド3に固定される。この場合、画像センサ4は、ハンド3の位置及び姿勢の両方と連動する視点から画像情報を取得することになる。画像センサ4は、ロボット2のアーム部21の先端部2aに固定されてもよい。画像センサ4は、一例として、ハンド3の先端が画像情報に含まれるように配置されてもよい。
【0021】
ロボットコントローラ5は、ロボット2の動作指令に基づいて、ロボット2を動作させる。動作指令は、ロボット2を動作させるための情報である。動作指令は、把持動作に関する情報を含む。動作指令は、一例として把持目標位置及び目標姿勢角度である。把持目標位置は、ワークWが把持されるタイミングにおけるハンド3の最終的な位置である。把持目標位置は、例えばロボット2に設定されたロボット座標系において定義される。ロボット座標系の一例として、ロボット2が配置された配置面に対して垂直な方向がZ方向、配置面に平行な方向がX方向、X方向及びZ方向に直交する方向がY方向と設定されてもよい。また、例えば、配置面に対してロボット2を固定した点が固定点Pとされ、固定点Pがロボット座標系の原点に設定されてもよい。把持目標位置は、相対位置で表現されてもよい。ロボットコントローラ5は、ハンド3の位置姿勢を把持目標位置及び目標姿勢角度に一致させるための関節角度目標値(ロボット2の各関節の角度目標値)を算出し、当該関節角度目標値に従ってロボット2を動作させる。なお、動作指令は、把持目標位置でなくてもよい。
【0022】
動作指令装置6は、上述した動作指令を生成する装置である。動作指令装置6は、画像センサ4により取得された画像情報と、ハンド3の位置及び姿勢の少なくとも一方を表すハンド位置情報と、モデルとに基づいて、ロボット2の動作指令を演算することを実行可能に構成される。
【0023】
モデルとは、例えば入力に対して出力を生成するプログラムモジュールである。モデルは、一例として、ノードとパラメータによって特定されるニューラルネットワークである。モデルは、収集データに基づいて機械学習により構築される対象であり、ロボット2の動作指令を特定する過程における少なくとも一部に対応する。動作指令を特定する過程は、一例として、画像情報からワークWを認識する認識過程、画像情報からワークWに対応する特徴量を抽出する抽出過程、ワークWに対応する特徴量とハンド3の位置とに基づいて動作指令を出力する指令出力過程、及び、ワークWに対応する特徴量と動作指令とに基づいて把持確率を算出する把持確率算出過程のうち少なくとも1つを含む。把持確率とは、ワークWを把持できる確率である。なお、モデルの一例として、ニューラルネットワークを挙げたが、ベイジアンネットワーク(確実な情報の環境下において,ユーザの意志決定を支援する知能システム)を用いてもよいし、あるいは入出力テーブルを用いても構わない。
【0024】
ロボット2の動作指令を特定する過程における少なくとも一部とは、抽出過程であってもよい。ロボット2の動作指令を特定する過程における少なくとも一部とは、指令出力過程であってもよい。ロボット2の動作指令を特定する過程における少なくとも一部とは、抽出工程と指令出力工程とであってもよい。ロボット2の動作指令を特定する過程における少なくとも一部とは、抽出過程と、指令出力過程と、把持確率算出過程とであってもよい。
【0025】
収集データとは、学習前に予め収集されたデータであり、把持動作に関するデータである。収集データは、一例として、ロボット2の履歴データや、ワークWを認識するための学習データである。ロボット2の履歴データは、画像センサ4によって取得された画像情報、動作指令装置6によって画像情報から取得された特徴量、動作指令装置6によって出力される動作指令及び把持確率、ロボットコントローラ5によって出力されるハンド位置情報などを含む。ハンド位置情報とは、ハンド3の位置及び姿勢の少なくとも一方を表す情報である。ハンド位置情報は、ハンド3の位置及び姿勢を導くことができる情報であれば位置座標に限定されず、相対ベクトルであってもよいし、モータトルクであってもよい。
【0026】
学習装置7は、上述したモデルを構築する装置である。学習装置7は、ワークWを把持するハンド3の位置及び姿勢の少なくとも一方と連動する視点から撮像された画像情報と、ハンド3の位置及び姿勢の少なくとも一方を表すハンド位置情報とを取得することと、画像情報とハンド位置情報とに基づいてロボット2の動作指令を特定する過程における少なくとも一部であるモデルを、画像情報及びハンド位置情報とを含む収集データに基づいて機械学習により構築することと、を実行可能に構成される。
【0027】
[動作指令装置のハードウェア構成]
図2は、動作指令装置6のハードウェア構成を例示するブロック図である。
図2に示されるように、動作指令装置6は回路60を有し、回路60は、一つ又は複数のプロセッサ61と、記憶部62と、通信ポート65と、入出力ポート66とを有する。記憶部62は、メモリ63及びストレージ64を含む。ストレージ64は、動作指令装置6の機能部を構成するためのプログラムを記録している。ストレージ64は、コンピュータ読み取り可能であればどのようなストレージであってもよい。具体例として、ハードディスク、不揮発性の半導体メモリ、磁気ディスク及び光ディスク等が挙げられる。メモリ63は、ストレージ64からロードしたプログラム及びプロセッサ61の演算結果等を一時的に記憶する。プロセッサ61は、メモリ63と協働してプログラムを実行することで、各機能部を構成する。
【0028】
通信ポート65は、プロセッサ61からの指令に応じ、ロボットコントローラ5、画像センサ4及び学習装置7との間で電気信号の入出力を行う。入出力ポート66は、プロセッサ61からの指令に応じ、ユーザインタフェース80との間で電気信号の入出力を行う。ユーザインタフェース80は、モニタ81及び入力デバイス82を含む。
【0029】
[学習装置のハードウェア構成]
図3は、学習装置7のハードウェア構成を例示するブロック図である。
図3に示されるように、学習装置7は回路70を有し、回路70は、一つ又は複数のプロセッサ71と、記憶部72と、通信ポート75と、入出力ポート76とを有する。記憶部72は、メモリ73及びストレージ74を含む。ストレージ74は、学習装置7の機能部を構成するためのプログラムを記録している。ストレージ74は、コンピュータ読み取り可能であればどのようなストレージであってもよい。具体例として、ハードディスク、不揮発性の半導体メモリ、磁気ディスク及び光ディスク等が挙げられる。メモリ73は、ストレージ74からロードしたプログラム及びプロセッサ71の演算結果等を一時的に記憶する。プロセッサ71は、メモリ73と協働してプログラムを実行することで、各機能部を構成する。
【0030】
通信ポート75は、プロセッサ71からの指令に応じ、動作指令装置6との間で電気信号の入出力を行う。入出力ポート76は、プロセッサ71からの指令に応じ、ユーザインタフェース90との間で電気信号の入出力を行う。ユーザインタフェース90は、モニタ91及び入力デバイス92を含む。
【0031】
[動作指令装置の機能的構成]
図4は、動作指令装置6の機能的な構成の一例を示すブロック図である。
図4に示されるように、動作指令装置6は、演算部600及びモデル取得部610を有する。
【0032】
演算部600は、画像情報と、ハンド位置情報と、収集データに基づいて機械学習により構築された、ロボット2の動作指令を特定する過程における少なくとも一部であるモデルとに基づいて、ロボット2の動作指令を演算する。演算部600は、画像センサ4から画像情報を取得し、ロボットコントローラ5からハンド3のハンド位置情報を取得する。演算部600は、ロボット2の把持動作中において、動作指令を逐次演算する。
【0033】
演算部600による動作指令の逐次演算は、
図5を用いて説明される。
図5は、ロボット2の把持動作の一例を説明する模式図である。
図5の(A)は、把持動作開始時におけるロボット2の位置姿勢を示す図である。図中では、把持動作開始時刻を0としている。
図5の(B)は、時刻t(0<t<T)におけるロボット2の位置姿勢を示す図である。
図5の(C)は、時刻Tにおけるロボット2の位置姿勢を示す図である。時刻Tにおいて、ロボット2はワークWを把持した把持状態となる。演算部600は、時刻tにおいて、時刻tにおける画像情報に基づいて、ワークWが把持されるタイミング(時刻T)におけるハンド3の最終的な位置である把持目標位置を演算する。演算部600は、時刻tごとに画像情報を取得して把持目標位置を演算する。このように、演算部600は、時刻tごとに動作指令を逐次演算して、ロボットコントローラ5へ出力する。
【0034】
演算部600は、一例として、位置生成部601、決定部602、抽出部603、出力部604、及び、算出部605を有する。演算部600は、位置生成部601、決定部602、抽出部603、出力部604、及び、算出部605の全てを備える必要はなく、位置生成部601、決定部602、抽出部603、出力部604、及び、算出部605のうち少なくとも1つを備えればよい。
【0035】
位置生成部601は、画像センサ4により取得された画像情報に基づいて、ワークWの認識結果を生成する。ワークWの認識結果は、ワークWの位置情報を含む。ワークWの位置情報は、画像情報に基づいて生成される画像内におけるワークWの位置である。ワークWの認識結果は、一例としてワークWの位置及び大きさを含む。ワークWの位置及び大きさは、バウンディングボックスを用いて表現されてもよい。
【0036】
図6は、ワークWの認識結果の一例である。
図6に示される画像G1は、画像センサ4によって取得された画像情報に基づいて生成された画像である。画像G1には、複数のワーク(例えば第1ワークW1、第2ワークW2、第3ワークW3)が描画されている。画像G1には、第1ワークW1を認識した結果であるバウンディングボックス350が表示される。第1ワークW1の位置及び大きさは、画像の座標軸においてバウンディングボックス350の左隅の座標及び縦横の長さで表現される。なお、
図6には、ハンド3の先端である爪部材3aが画像情報に含まれている。
【0037】
ワークWの認識結果は、ワークWの種別を含んでもよい。ワークWの認識結果として、予め設定された複数の種別の中から1つの種別が選択される。ワークWの認識結果は、把持期待度を含んでもよい。把持期待度は、把持のしやすさを示す指標である。位置生成部601は、時刻tにおける画像情報を入力とし、時刻tにおいて画像内に描画される全てのワークWの認識結果を出力する。つまり、複数のワークWが画像内に描画されている場合、位置生成部601は、画像情報に基づいて複数のワークWそれぞれの認識結果を生成する。
【0038】
位置生成部601は、位置モデルを用いてワークWの認識結果を生成してもよい。位置モデルは、ロボット2の動作指令を特定する過程における少なくとも一部である。位置モデルは、画像情報からワークWを認識する認識過程に対応するモデルである。位置モデルは、画像情報の入力を受けて、ワークWの認識結果を出力する。位置モデルは、一例として、画像情報の入力を受けて、複数のワークWの位置情報と、複数のワークWそれぞれの把持期待値とを出力する。位置モデルは、位置モデル記憶部611に格納されている。
【0039】
位置モデルは、一例として、ニューラルネットワークで構成される。
図7は、モデルを構成するニューラルネットワークの一例である。
図7に示されるように、位置モデルMD1は、ノード330の集合体で構成される。ノード330それぞれは、少なくとも1つ以上のノード330と接続される。接続されたノード間には、重みが設定される。ノードの集合体は、データの入力を受ける入力層331として機能する集合体、重みを用いて演算を実行する中間層332として機能する集合体、結果を出力する出力層333として機能する集合体を有する。入力層331は、入力データの数に応じたノード数を有する。出力層333は、出力結果の内容の数に応じたノード数を有する。中間層332は、入力層331及び出力層333の数に応じて適宜設定される。ニューラルネットワークは、複数の中間層332を備えてもよい。位置モデルMD1では、入力層331は、画像情報の入力を受け、出力層333は、ワークWの認識結果を出力する。
【0040】
決定部602は、把持対象とする1のワークWを決定する。決定部602は、一例として、位置生成部601により認識されたワークWの認識結果に基づいて、把持対象を決定する。より具体的な一例としては、決定部602は、位置生成部601により認識されたワークWの把持期待度に基づいて、把持対象を決定する。例えば、決定部602は、複数のワークのうち、把持期待度が最も高いワークを把持対象として決定する。
【0041】
抽出部603は、画像センサ4により取得された画像情報と、画像情報に含まれるワークWの位置情報とに基づいて、ワークWに対応する特徴量を抽出する。特徴量の抽出対象となるワークWは、一例として、決定部602によって決定された1のワークWである。抽出部603は、一例として、画像センサ4により取得された画像情報と、位置生成部601により認識されたワークWの位置情報とに基づいて、ワークWに対応する特徴量を抽出する。ワークWに対応する特徴量とは、ワークWの画像情報から導出された値である。特徴量は、輪郭、形状、大きさ、色などの人間が認識可能な情報に限定されない。つまり、特徴量は、人間が視覚的に認識する情報と対応付けられている必要はない。特徴量は、例えば時刻tにおける画像情報、つまり、時刻tにおける視点からみて得られるワークWの特徴量となる。
【0042】
抽出部603は、視点の相異なる複数の画像情報と、複数の画像情報それぞれに含まれる同一のワークWの位置情報とに基づいて、ワークWに対応する特徴量を抽出してもよい。視点の相違なる複数の画像情報とは、第1の視点から撮像された画像情報と、第1の視点とは別の第2の視点から撮像された画像情報とを少なくとも含む、複数の画像情報のことである。第1の視点から撮像された画像情報は、例えば把持動作開始時(
図5の(A);時刻0)に画像センサ4によって取得された画像情報である。第2の視点から撮像された画像情報は、例えば把持動作中(
図5の(B);時刻t)に画像センサ4によって取得された画像情報である。同一のワークWとは、第1の視点から撮像された画像情報に基づいて認識されたワークと、第1の視点とは別の第2の視点から撮像された画像情報に基づいて認識されたワークが同一であるという意味である。
【0043】
抽出部603は、抽出モデルを用いて特徴量を抽出してもよい。抽出モデルは、ロボット2の動作指令を特定する過程における少なくとも一部である。抽出モデルは、画像情報からワークWに対応する特徴量を抽出する抽出過程に対応するモデルである。抽出モデルは、画像情報とワークWの位置情報との入力を受けて、ワークWに対応する特徴量を出力する。抽出モデルは、抽出モデル記憶部613に格納されている。
【0044】
抽出モデルは、一例として、ニューラルネットワークで構成される。ニューラルネットワークの構成は、
図7の位置モデルMD1と同様に、入力層、中間層、及び、出力層を有する。抽出モデルでは、入力層は、画像情報とワークWの位置情報との入力を受け、出力層は、ワークWに対応する特徴量を出力する。
【0045】
出力部604は、画像センサ4により取得された画像情報から抽出されたワークWの特徴量と、ハンド位置情報とに基づいて、ロボット2の動作指令を出力する。出力部604は、一例として、抽出部603により抽出されたワークWの特徴量と、ハンド位置情報とに基づいて、ロボット2の動作指令を出力する。ハンド位置情報は、画像情報が取得された時刻におけるハンド3の位置及び姿勢の少なくとも一方の情報である。例えば、出力部604は、時刻tの画像情報と時刻tのハンド位置情報とを入力として受ける。出力部604は、動作指令の一例として、目標把持位置を出力する。
【0046】
出力部604は、指令モデルを用いて動作指令を出力してもよい。指令モデルは、ロボット2の動作指令を特定する過程における少なくとも一部である。指令モデルは、把持対象の特徴量とハンド3の位置とに基づいてロボット2の動作指令を出力する指令出力過程に対応するモデルである。指令モデルは、画像センサ4により取得された画像情報から抽出されたワークWの特徴量とハンド位置情報との入力を受けて、ロボット2の動作指令を出力する。指令モデルは、指令モデル記憶部614に格納されている。
【0047】
指令モデルは、一例として、ニューラルネットワークで構成される。ニューラルネットワークの構成は、
図7の位置モデルMD1と同様に、入力層、中間層、及び、出力層を有する。指令モデルでは、入力層は、画像センサ4により取得された画像情報から抽出されたワークWの特徴量とハンド位置情報との入力を受け、出力層は、ロボット2の動作指令を出力する。
【0048】
ハンド3がグリッパである場合、指令モデルは、ワークWの特徴量及びハンド位置情報に加えてグリッパの開閉度の入力を受けて、動作指令に加えて、グリッパの目標開閉度を出力してもよい。目標開閉度とは、グリッパの爪部材3aの間隔の目標値である。この場合、出力部604は、指令モデルを用いて、ワークWの特徴量とハンド位置情報と開閉度とに基づいて動作指令と目標開閉度を出力する。ロボットコントローラ5は、目標開閉度に応じてグリッパを動作させる。
【0049】
算出部605は、ロボット2の動作指令と、ワークWに対応する特徴量とに基づいて、ハンド3で把持できる確率を表す把持確率を算出する。算出部605は、一例として、出力部604により出力されたロボット2の動作指令と、抽出部603により抽出された、ワークWに対応する特徴量とに基づいて、ハンド3で把持できる確率を表す把持確率を算出する。
【0050】
算出部605は、把持確率算出モデルを用いて把持確率を出力してもよい。把持確率算出モデルは、ロボット2の動作指令を特定する過程における少なくとも一部である。把持確率算出モデルは、ワークWに対応する特徴量とロボット2の動作指令とに基づいて把持確率を算出する把持確率算出過程に対応するモデルである。把持確率算出モデルは、ワークWに対応する特徴量とロボット2の動作指令との入力を受けて把持確率を出力する。把持確率算出モデルは、把持確率モデル記憶部615に格納されている。
【0051】
把持確率算出モデルは、一例として、ニューラルネットワークで構成される。ニューラルネットワークの構成は、
図7の位置モデルMD1と同様に、入力層、中間層、及び、出力層を有する。把持確率算出モデルでは、入力層は、ワークWに対応する特徴量とロボット2の動作指令との入力を受け、出力層は、把持確率を出力する。
【0052】
演算部600は、ロボット2の動作指令を特定する過程において算出されたデータを履歴データとして履歴記憶部620へ出力する。履歴データは、例えば、出力部604によりハンド位置情報が取得された時刻、位置生成部601により画像センサ4から取得された画像情報、位置生成部601により生成されたワークWの位置、抽出部603により抽出されたワークWの特徴量、出力部604により生成された動作指令、算出部605によって算出された把持確率、把持成否などを含む。履歴データは、学習装置7が参照することができるように構成されている。
【0053】
履歴記憶部620に記憶された把持確率は、一例として、ロボット2の把持動作をやり直すか否かを判定するために用いられる。例えば、出力部604は、把持確率が増加傾向であるか、減少傾向であるかを判定し、減少傾向である場合には、ロボット2の把持動作をやり直す動作指令を出力する。一例として、出力部604は、所定時間前のハンド3の位置まで戻るようにロボット2を動作させる動作指令を出力する。これにより、ロボットコントローラ5は、算出部605により算出された把持確率に基づいて、ロボット2を動作させてもよい。
【0054】
把持確率は、ロボットコントローラ5がハンド3をワークWに近づけるか否かを判定するためのパラメータとして用いられてもよい。例えば、ロボットコントローラ5は、把持確率が予め定められた閾値以上である場合、ロボット2に把持動作をさせ、把持確率が閾値未満である場合、抽出部603によるワークWに対応する特徴量の抽出と、出力部604によるロボット2の動作指令の出力とを再度実行させてもよい。一例として、ロボットコントローラ5は、ハンド3の位置をワークWから離れるように所定距離だけ移動させて、抽出部603によるワークWに対応する特徴量の抽出と、出力部604によるロボット2の動作指令の出力とを再度実行させてもよい。あるいは、ロボットコントローラ5は、一例として、学習装置7によって学習されたニューラルネットワークの重みの更新タイミングを経過した後に、抽出部603によるワークWに対応する特徴量の抽出と、出力部604によるロボット2の動作指令の出力とを再度実行させてもよい。
【0055】
モデル取得部610は、学習装置7から学習結果を取得する。モデル取得部610は、学習結果として、位置モデル、抽出モデル、指令モデル、把持確率算出モデルのネットワーク構成及び重みデータを取得する。モデル取得部610は、取得された位置モデルを、位置モデル記憶部611へ記憶する。モデル取得部610は、取得された抽出モデルを、抽出モデル記憶部613へ記憶する。モデル取得部610は、取得された指令モデルを、指令モデル記憶部614へ記憶する。モデル取得部610は、取得された把持確率算出モデルを、把持確率モデル記憶部615へ記憶する。
【0056】
[学習装置の機能的構成]
図8は、学習装置7の機能的な構成の一例を示すブロック図である。
図8に示されるように、学習装置7は、取得部720及び構築部700を有する。
【0057】
取得部720は、動作指令装置6の履歴記憶部620から履歴データを取得する。一例として、取得部720は、ワークWを把持するハンド3の位置及び姿勢の少なくとも一方と連動する視点から撮像された画像情報と、ハンド3の位置及び姿勢の少なくとも一方を表すハンド位置情報とを含む収集データを取得する。取得部720は、履歴データ記憶部722に履歴データを収集データとして格納する。
【0058】
収集データは、動作指令装置6から取得されたデータに限られず、他のデバイスから取得されてもよい。例えば、把持システム1は少なくともロボット2とハンド3と演算部600とロボットコントローラ5とを1セットとして備える場合、取得部720は、この1セットとは異なるセットの動作履歴を収集データとして取得してもよい。つまり、取得部720は、把持システム1に含まれる他のセットの動作履歴を収集データとして取得してもよいし、他の把持システムに含まれるセットの動作履歴を収集データとして取得してもよい。
【0059】
構築部700は、画像センサ4により取得された画像情報と、ハンドの位置及び姿勢の少なくとも一方を表すハンド位置情報とに基づいてロボット2の動作指令を特定する過程における少なくとも一部であるモデルを、収集データに基づいて機械学習により構築する。
【0060】
構築部700は、位置モデル構築部701、抽出モデル構築部703、指令モデル構築部704及び把持確率モデル構築部705を有する。構築部700は、位置モデル構築部701、抽出モデル構築部703、指令モデル構築部704及び把持確率モデル構築部705の全てを備える必要はなく、位置モデル構築部701、抽出モデル構築部703、指令モデル構築部704及び把持確率モデル構築部705のうち少なくとも1つを備えればよい。
【0061】
位置モデル構築部701は、ワーク学習データに基づいた機械学習により、位置モデルを構築する。ワーク学習データは、ワークWを認識するための教師データであり、ワーク学習データ記憶部721に予め記憶される。ワーク学習データの一例としては、ワークWの画像の画像情報と、プロファイル(例えば、画像内のワークWの位置、種別、及び、把持しやすさ)とが関連付けられたデータである。位置モデル構築部701は、ワークWの画像の画像情報からワークWを認識することができるように、ニューラルネットワークの重みを調整する。位置モデル構築部701は、構築された位置モデルを位置モデル記憶部711に格納する。位置モデル記憶部711は、動作指令装置6が参照することができるように構成されている。位置モデル記憶部711は、位置モデル記憶部611を更新するために用いられる。
【0062】
把持確率モデル構築部705は、把持確率学習データに基づいた機械学習により、把持確率モデルを構築する。把持確率学習データは、把持確率を算出するための教師データであり、把持確率学習データ記憶部723に予め記憶される。把持確率学習データの一例としては、ワークWの画像の画像情報と、動作指令と、把持成否とが関連付けられたデータである。把持確率モデル構築部705は、把持確率の高低が履歴の把持成否に近づくように、ニューラルネットワークの重みを調整する。履歴データ記憶部722に学習可能な程度の履歴データが蓄積された場合、把持確率モデル構築部705は、履歴データ記憶部722に記憶された履歴データに基づいた機械学習により、把持確率モデルをさらに調整する。把持確率モデル構築部705が参照する履歴データの一例としては、ワークWの特徴量、動作指令、及び、把持成否である。把持確率モデル構築部705は、ワークWの特徴量と動作指令とに基づいて、把持確率の高低が履歴の把持成否に近づくように、ニューラルネットワークの重みをさらに調整する。把持確率モデル構築部705は、構築された把持確率モデルを把持確率モデル記憶部715に格納する。把持確率モデル記憶部715は、動作指令装置6が参照することができるように構成されている。把持確率モデル記憶部715は、把持確率モデル記憶部615を更新するために用いられる。
【0063】
抽出モデル構築部703は、履歴データ記憶部722に記憶された履歴データに基づいた機械学習により、抽出モデルを構築する。抽出モデル構築部703は、履歴データ記憶部722に学習可能な程度の履歴データが蓄積された場合に、抽出モデルを構築する。抽出モデル構築部703が参照する履歴データの一例としては、画像情報、ワークWの位置情報、把持確率である。参照する履歴データは、把持確率に替えて、把持成否を含んでもよい。抽出モデル構築部703は、ワークWの位置情報に基づいて、把持確率が高くなるワークWの特徴量を画像情報から抽出することができるように、ニューラルネットワークの重みを調整する。抽出モデル構築部703は、構築された抽出モデルを抽出モデル記憶部713に格納する。抽出モデル記憶部713は、動作指令装置6が参照することができるように構成されている。抽出モデル記憶部713は、抽出モデル記憶部613を更新するために用いられる。
【0064】
指令モデル構築部704は、履歴データ記憶部722に記憶された履歴データに基づいた機械学習により、指令モデルを構築する。指令モデル構築部704は、履歴データ記憶部722に学習可能な程度の履歴データが蓄積された場合に、指令モデルを構築する。指令モデル構築部704が参照する履歴データの一例としては、ワークWの特徴量、ハンド位置情報、動作指令、及び、把持確率である。履歴データは、把持確率に替えて、把持成否を含んでもよい。指令モデル構築部704は、ワークWの特徴量とハンド位置情報とに基づいて把持確率が高くなる動作指令を出力することができるように、ニューラルネットワークの重みを調整する。指令モデル構築部704は、構築された指令モデルを指令モデル記憶部714に格納する。指令モデル記憶部714は、動作指令装置6が参照することができるように構成されている。指令モデル記憶部714は、指令モデル記憶部614を更新するために用いられる。
【0065】
把持システム1は、上述したハードウェア構成に限られず、上述したロボットコントローラ5、動作指令装置6及び学習装置7の機能を発揮可能なハードウェア構成であれば何でもよい。例えば、動作指令装置6及び学習装置7は、1つのハードウェアリソースであってもよいし、ロボットコントローラ5と動作指令装置6とが1つのハードウェアリソースであってもよいし、ロボットコントローラ5と学習装置7とが1つのハードウェアリソースであってもよいし、ロボットコントローラ5と動作指令装置6と学習装置7とが1つのハードウェアリソースであってもよい。1つのハードウェアリソースとは、外観上一体的に纏められたリソースである。
【0066】
動作指令装置6及び学習装置7の内部のハードウェア構成は、上述した機能的構成ごとに分離している必要はない。動作指令装置6及び学習装置7のハードウェア構成は、プログラムの実行により各機能を発揮する構成に限られない。例えば、各機能部の少なくとも一部はその機能に特化した論理回路により構成されていてもよいし、当該論理回路を集積したASIC(Application Specific Integrated Circuit)により構成されていてもよい。
【0067】
動作指令装置6及び学習装置7のモデルは、1つのニューラルネットワークで構成されていてもよい。1つのニューラルネットワークは、一連の機械学習により構築されてもよい。
【0068】
(把持手順)
把持方法の一例として、動作指令装置6が実行する把持手順を説明する。
図9は、把持手順のフローチャートの一例である。
【0069】
図9に示されるように、最初に、動作指令装置6は、ステップS10を実行する。ステップS10では、位置生成部601が画像センサ4から画像情報を取得する。
【0070】
次に、動作指令装置6は、ステップS12を実行する。ステップS12では、出力部604が、ロボットコントローラ5からハンド位置情報を取得する。
【0071】
次に、動作指令装置6は、ステップS14を実行する。ステップS14では、位置生成部601が、ステップS10で取得された画像情報に基づいて、ワークWの位置情報を生成する。
【0072】
次に、動作指令装置6は、ステップS16を実行する。ステップS16では、決定部602が、ステップS14で生成されたワークWの位置情報に基づいて、1のワークWを決定する。
【0073】
次に、動作指令装置6は、ステップS18を実行する。ステップS18では、抽出部603が、ステップS10で取得された画像情報に基づいて、ステップS16で決定された1のワークWの特徴量を抽出する。
【0074】
次に、動作指令装置6は、ステップS20を実行する。ステップS20では、出力部604が、ハンド位置情報とステップS18で抽出されたワークWの特徴量とに基づいて、ロボット2の動作指令を算出する。
【0075】
次に、動作指令装置6は、ステップS22を実行する。ステップS22では、出力部604が、ステップS20で算出された動作指令をロボットコントローラ5へ出力する。
【0076】
次に、動作指令装置6は、ステップS24を実行する。ステップS24では、算出部605が、ステップS18で抽出されたワークWの特徴量と、ステップS20で算出された動作指令とに基づいて、把持確率を算出する。
【0077】
次に、動作指令装置6は、ステップS26を実行する。ステップS26では、出力部604が、ステップS24で算出された把持確率が減少傾向であるか否かを判定する。
【0078】
ステップS26において、ステップS24で算出された把持確率が減少傾向であると判定された場合、動作指令装置6は、ステップS28を実行する。ステップS28では、出力部604が、所定時間前のハンド3の位置まで戻るように、動作指令を出力する。
【0079】
ステップS26において、ステップS24で算出された把持確率が減少傾向でないと判定された場合、及び、ステップS28が終了した場合、動作指令装置6は、処理を終了する。
【0080】
図9において、ステップS10は、ステップS14よりも前のタイミングで実行されればよく、ステップS12とステップS14との間に実行されてもよい。ステップS12は、ステップS20よりも前に前のタイミングであれば、どのタイミングで行ってもよい。ステップS22は、ステップS24の後に実行してもよい。この場合、ステップS26及びステップS28は実施せずに、ステップS24で算出された把持確率が予め定められた閾値以上である場合にステップS22が実行され、把持確率が閾値未満である場合、ステップS14、ステップS16、又は、ステップS18から処理が再度実行されてもよい。
【0081】
(位置モデル学習手順)
学習方法の一例として、学習装置7が実行する位置モデル学習手順(モデルの製造方法の一例)を説明する。
図10は、位置モデル学習手順のフローチャートの一例である。
【0082】
図10に示されるように、最初に、学習装置7は、ステップS30を実行する。ステップS30では、位置モデル構築部701がワーク学習データ記憶部721からワーク学習データを読み込む。
【0083】
次に、学習装置7は、ステップS32を実行する。ステップS32では、位置モデル構築部701が位置モデルを構築する。位置モデル構築部701は、ワークWの画像の画像情報からワークWを認識することができるように、ニューラルネットワークの重みを調整する。位置モデル構築部701は、学習結果を位置モデル記憶部711に格納する。
【0084】
ステップS32が終了した場合、学習装置7は、処理を終了する。
【0085】
(把持確率モデル学習手順)
学習方法の一例として、学習装置7が実行する把持確率モデル学習手順(モデルの製造方法の一例)を説明する。
図11は、把持確率モデル学習手順のフローチャートの一例である。
【0086】
図11に示されるように、最初に、学習装置7は、ステップS40を実行する。ステップS40では、把持確率モデル構築部705が把持確率学習データ記憶部723から把持確率学習データを読み込む。把持確率学習データの一例は、画像情報、動作指令、及び、把持成否である。
【0087】
次に、学習装置7は、ステップS42を実行する。ステップS42では、把持確率モデル構築部705が把持確率モデルを構築する。把持確率モデル構築部705は、画像情報、動作指令、及び、把持成否に基づいて、把持確率の高低が履歴の把持成否に近づくように、ニューラルネットワークの重みを調整する。把持確率モデル構築部705は、学習結果を把持確率モデル記憶部715に格納する。
【0088】
ステップS42が終了した場合、学習装置7は、処理を終了する。
【0089】
(抽出モデル、指令モデル、把持確率モデルの学習手順)
学習方法の一例として、学習装置7が実行する抽出モデル、指令モデル、把持確率モデルの学習手順(モデルの製造方法の一例)を説明する。
図12は、抽出モデル、指令モデル、把持確率モデルの学習手順のフローチャートの一例である。
【0090】
図12に示されるように、最初に、学習装置7は、ステップS50を実行する。ステップS50では、抽出モデル構築部703、指令モデル構築部704、及び、把持確率モデル構築部705それぞれが、履歴データ記憶部722に学習可能な程度の履歴データ(所定量のデータ)が蓄積されているか否かを判定する。抽出モデル構築部703、指令モデル構築部704、及び、把持確率モデル構築部705が一体として学習する場合には、一例として抽出モデル構築部703が履歴データ記憶部722に学習可能な程度の履歴データ(所定量のデータ)が蓄積されているか否かを判定する。
【0091】
ステップS50において、履歴データ記憶部722に学習可能な程度の履歴データ(所定量のデータ)が蓄積されていると判定された場合、学習装置7は、ステップS52を実行する。ステップS52では、抽出モデル構築部703、指令モデル構築部704、及び、把持確率モデル構築部705それぞれが履歴データを読み込む。例えば、抽出モデル構築部703は、履歴データであるワークWの位置情報、画像情報、把持確率を読み込む。例えば、指令モデル構築部704は、ワークWの特徴量、ハンド位置情報、把持確率の履歴データを読み込む。把持確率モデル構築部705は、ワークWの特徴量、動作指令、把持成否を読み込む。
【0092】
次に、学習装置7は、ステップS54を実行する。ステップS54では、抽出モデル構築部703が抽出モデルを構築する。抽出モデル構築部703は、画像情報、ワークの位置情報、及び、把持確率に基づいて、把持確率が高くなるワークWの特徴量を画像情報から抽出することができるように、ニューラルネットワークの重みを調整する。抽出モデル構築部703は、学習結果を抽出モデル記憶部713に格納する。
【0093】
次に、学習装置7は、ステップS56を実行する。ステップS56では、指令モデル構築部704が指令モデルを構築する。指令モデル構築部704は、ワークの特徴量、ハンド位置情報、及び、把持確率に基づいて、把持確率が高くなる動作指令を出力することができるように、ニューラルネットワークの重みを調整する。指令モデル構築部704は、学習結果を指令モデル記憶部714に格納する。
【0094】
次に、学習装置7は、ステップS58を実行する。ステップS58では、把持確率モデル構築部705が把持確率モデルを構築する。把持確率モデル構築部705は、ワークWの特徴量と動作指令とに基づいて、把持確率の高低が履歴の把持成否に近づくように、ニューラルネットワークの重みをさらに調整する。把持確率モデル構築部705は、構築された把持確率モデルを把持確率モデル記憶部715に格納する。
【0095】
ステップS50において、履歴データ記憶部722に学習可能な程度の履歴データ(所定量のデータ)が蓄積されていないと判定された場合、又は、ステップS58が終了した場合、学習装置7は、処理を終了する。
【0096】
上述したステップS52〜S58では、抽出モデル構築部703、指令モデル構築部704、及び、把持確率モデル構築部705が一体として学習してもよい。この場合、一例として抽出モデル構築部703が、ワークWの位置情報、画像情報、ハンド位置情報、把持確率、把持成否を読み込む。そして、抽出モデル構築部703、指令モデル構築部704、及び、把持確率モデル構築部705を1つのニューラルネットワークとして一連の機会学習によって、学習される。このように、抽出モデル、指令モデル、及び、把持確率モデルを組み合わせて学習してもよい。
【0097】
[実施形態の効果]
以上に説明したように、把持システム1は、ワークWを把持するハンド3と、ハンド3を支持し、ハンド3の位置及び姿勢の少なくとも一方を変更するロボット2と、ハンド3の位置及び姿勢の少なくとも一方と連動する視点から画像情報を取得する画像センサ4と、画像センサ4により取得された画像情報と、ハンド3の位置及び姿勢の少なくとも一方を表すハンド位置情報とに基づいてロボット2の動作指令を特定する過程における少なくとも一部であるモデルを、収集データに基づいて機械学習により構築する構築部700と、画像情報と、ハンド位置情報と、モデルとに基づいて、ロボット2の動作指令を演算する演算部600と、演算部600により演算されたロボット2の動作指令に基づいて、ロボット2を動作させるロボットコントローラ5と、を備える。
【0098】
構築部700による機械学習によって、ハンド3と連動する視点とした画像情報及びハンド3の位置に基づいてモデルが構築され、モデルから動作指令が出力される。ハンド3の位置及び姿勢の少なくとも一方と連動する視点とした画像情報に基づいた機械学習により、動作指令を得ているため、距離センサ及び3DCADモデルを備える必要がなく、距離センサの検出結果と3DCADモデルとの照合処理が不要になる。また、機械学習を行うことで、作業員による教示が不要になる。このため、この把持システム1は、ロボットの把持動作の効率化に有効である。
【0099】
演算部600は、画像情報と、画像情報に含まれるワークWの位置情報とに基づいて、ワークWに対応する特徴量を抽出する抽出部603と、抽出部603により抽出された特徴量と、ハンド位置情報とに基づいて、ロボット2の動作指令を出力する出力部604と、を有してもよい。この場合、抽出部603により、画像情報とワークWの位置情報とから特徴量を抽出でき、その抽出量とハンド位置情報とから、ロボット2の動作指令を出力できるため、学習効率がよくなり、把持の成功確率も向上する。
【0100】
抽出部603は、視点の相異なる複数の画像情報と、複数の画像情報それぞれに含まれる同一のワークWの位置情報とに基づいて、ワークWに対応する特徴量を抽出してもよい。この場合、視点が異なる画像に含まれるワークWの位置を使用することで、より正確に特徴量を抽出でき、ひいては、より正確な動作指令を出力できる。
【0101】
構築部700は、画像情報と位置情報との入力を受けて、特徴量を出力する抽出モデルを、収集データに基づいて機械学習により構築する抽出モデル構築部703と、特徴量とハンド位置情報との入力を受けて、動作指令を出力する指令モデルを、収集データに基づいて機械学習により構築する指令モデル構築部704と、を有し、抽出部603は、抽出モデルを用いて特徴量を抽出し、出力部604は、指令モデルを用いて動作指令を出力してもよい。この場合、把持対象の特徴量の抽出と、把持対象を把持する動作の決定を自動で行うことができる。特に、この2つのモデルの組み合わせによれば、動作指令の精度が向上する。
【0102】
ハンド3は、グリッパであり、指令モデル構築部704は、特徴量及びハンド位置情報に加えてグリッパの開閉度の入力を受けて、動作指令に加えて、グリッパの目標開閉度を出力する指令モデルを構築し、出力部604は、指令モデルを用いて、特徴量とハンド位置情報と開閉度とに基づいて動作指令と目標開閉度を出力し、ロボットコントローラ5は、目標開閉度に応じてグリッパを動作させてもよい。この場合、把持対象に対して適切なグリッパの開閉度を出力することができる。
【0103】
画像センサ4は、ハンド3の先端が画像情報に含まれるように配置されてもよい。この場合、ハンド3の先端形状を画像情報から認識して、機械学習することができる。このため、把持精度を更に向上させることができる。特に、ハンド3がグリッパの場合、グリッパの開閉の正確性も向上する。
【0104】
演算部600は、ロボット2の動作指令と、ワークWに対応する特徴量とに基づいて、ハンドで把持できる確率を表す把持確率を算出する算出部を更に有し、ロボットコントローラ5は、算出部605により算出された把持確率に基づいて、ロボット2を動作させてもよい。この場合、把持確率に応じてロボットを動作させることができる。この際、特徴量を使用することで、把持確率の精度を向上させることができる。
【0105】
構築部700は、収集データに基づいて機械学習により、ロボット2の動作指令と、ワークWに対応する特徴量との入力を受けて、把持確率を出力する把持確率モデルを構築する把持確率モデル構築部705を更に有し、算出部605は、把持確率モデルを用いて把持確率を算出してもよい。この場合、決定された動作による把持確率を機械学習により自動で取得することができる。
【0106】
ロボットコントローラ5は、把持確率が予め定められた閾値以上である場合、ロボット2に把持動作をさせ、把持確率が閾値未満である場合、抽出部によるワークに対応する特徴量の抽出と、出力部604によるロボットの動作指令の出力とを再度実行させてもよい。この場合、把持失敗の確率を低減できる。
【0107】
演算部600は、画像センサ4により取得された画像情報に基づいて、複数のワークWの位置情報と、複数のワークそれぞれの把持期待度とを生成する位置生成部601と、把持期待度に基づいて、把持対象とする1のワークを決定する決定部602と、を更に有し、抽出部603は、画像情報と1のワークの位置情報とに基づいて、当該1のワークに対応する特徴量を抽出してもよい。把持期待度を用いることで、把持しやすさを考慮して把持対象を決定することができる。結果として、把持の成功確率を向上させることができる。
【0108】
構築部700は、収集データに基づいて機械学習により、画像情報の入力を受けて、複数のワークの位置情報と、複数のワークそれぞれの把持期待値とを出力する位置モデルを構築する位置モデル構築部701を更に有し、位置生成部601は、位置モデルを用いて位置情報と把持期待値とを生成してもよい。この場合、各ワークの把持期待値を機械学習により自動で取得することができる。
【0109】
少なくともロボット2とハンド3と演算部600とロボットコントローラ5とを1セットとして備え、構築部は、収集データとして、1セットとは異なるセットの動作履歴を収集したデータに基づいて、モデルを機械学習により構築し、1セットの演算部600は、モデルに基づいて、1セットのロボット2の動作指令を演算してもよい。この場合、他のロボットから得られる学習結果を流用できるため、学習結果の可搬性を高めることができる。
【0110】
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変形が可能である。