(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023124202
(43)【公開日】2023-09-06
(54)【発明の名称】情報処理装置、把持システム及びプログラム
(51)【国際特許分類】
B25J 13/08 20060101AFI20230830BHJP
【FI】
B25J13/08 A
【審査請求】未請求
【請求項の数】27
【出願形態】OL
(21)【出願番号】P 2022027830
(22)【出願日】2022-02-25
(71)【出願人】
【識別番号】515130201
【氏名又は名称】株式会社Preferred Networks
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】ウマデシング アヴィナシュ
(72)【発明者】
【氏名】高橋 城志
(72)【発明者】
【氏名】深谷 直樹
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707AS04
3C707ES03
3C707KT03
3C707KT06
3C707KT11
3C707LS20
3C707LV07
3C707LW12
3C707MT09
3C707NS26
(57)【要約】
【課題】把持におけるグリッパの適切な把持位置を得ること。
【解決手段】実施形態に係る情報処理装置は、1又は複数のメモリと、1又は複数のプロセッサとを有する。前記1又は複数のプロセッサは、物体が置かれている第1の領域の画像を取得し、前記画像において前記物体が占める第2の領域を特定し、所定形状の図形を、前記第2の領域にフィッティングし、前記第2の領域にフィットさせた前記所定形状の図形の前記画像における位置に基づいて、グリッパで前記第1の領域に置かれている前記物体を把持する際の当該グリッパの指部を挿入する接触領域を取得するように構成されている。
【選択図】
図1
【特許請求の範囲】
【請求項1】
1又は複数のメモリと、
1又は複数のプロセッサと、を有し、
前記1又は複数のプロセッサは、
物体が置かれている第1の領域の画像を取得し、
前記画像において前記物体が占める第2の領域を特定し、
所定形状の図形を、前記第2の領域にフィッティングし、
前記第2の領域にフィットさせた前記所定形状の図形の前記画像における位置に基づいて、グリッパで前記第1の領域に置かれている前記物体を把持する際の当該グリッパの指部を挿入する接触領域を取得する、
ように構成されている情報処理装置。
【請求項2】
前記1又は複数のプロセッサは、前記第2の領域に基づいて前記所定形状の図形の前記画像における位置、大きさ及び向きのうちの少なくとも1つを調整することで、前記所定形状の図形を前記物体の前記第2の領域にフィッティングするように構成されている、請求項1に記載の情報処理装置。
【請求項3】
前記1又は複数のプロセッサは、前記第2の領域にフィットさせた前記所定形状の図形の所定方向の大きさに基づいて、前記グリッパで前記物体を把持するための前記グリッパの開口幅を取得するように構成されている、請求項1又は請求項2に記載の情報処理装置。
【請求項4】
前記取得されるグリッパの開口幅は、前記第2の領域にフィットさせた前記所定形状の図形の所定方向の大きさよりも大きい、請求項3に記載の情報処理装置。
【請求項5】
前記1又は複数のプロセッサは、前記第2の領域にフィットさせた前記所定形状の図形の向きに基づいて、前記グリッパで前記物体を把持するための前記グリッパの向きを取得するように構成されている、請求項1から請求項4のうちの何れか1項に記載の情報処理装置。
【請求項6】
前記取得されるグリッパの向きは、前記取得された画像上の向きである、請求項5に記載の情報処理装置。
【請求項7】
前記所定形状は、楕円形状である、請求項1から請求項6のうちの何れか1項に記載の情報処理装置。
【請求項8】
前記1又は複数のプロセッサは、
前記物体の高さ及び前記物体の接触領域の高さを取得し、
前記物体の高さ及び前記接触領域の高さに少なくとも基づいて、前記物体を前記グリッパで把持するか否かを判定するように構成されている、
請求項1から請求項7のうちの何れか1項に記載の情報処理装置。
【請求項9】
前記1又は複数のプロセッサは、
前記第1の領域における各部の高さ情報を取得し、
前記第2の領域にフィットさせた前記所定形状の図形の内部に対応する前記高さ情報に基づいて、前記物体の高さを特定し、
前記第2の領域にフィットさせた前記所定形状の図形に隣接する部分に対応する前記高さ情報に基づいて、前記接触領域の高さを特定するように構成されている、
請求項8に記載の情報処理装置。
【請求項10】
前記1又は複数のプロセッサは、少なくとも、前記物体の高さが、前記接触領域の高さよりも高いことを条件として、前記物体を前記グリッパで把持すると判定するように構成されている、請求項8又は請求項9に記載の情報処理装置。
【請求項11】
前記1又は複数のプロセッサは、前記物体に隣接する複数の領域であって、当該複数の領域の図心が前記第2の領域にフィットさせた前記所定形状の図形の図心と前記取得された画像上で一致する領域に、前記接触領域を設定するように構成されている、請求項1から請求項10のうちの何れか1項に記載の情報処理装置。
【請求項12】
前記1又は複数のプロセッサは、前記第2の領域にフィットさせた前記所定形状の図形に設定される所定軸における両端に、前記接触領域を設定するように構成されている、請求項1から請求項10のうちの何れか1項に記載の情報処理装置。
【請求項13】
前記所定形状は、楕円形状であり、
前記所定軸における両端は、前記第2の領域にフィットさせた前記楕円形状の図形の短軸の両端である、
請求項12に記載の情報処理装置。
【請求項14】
前記接触領域の大きさは、前記接触領域に挿入される前記グリッパの指部の大きさに対応する、請求項1から請求項13のうちの何れか1項に記載の情報処理装置。
【請求項15】
前記第1の領域には、前記物体の他、前記物体とテクスチャが同種の1つ以上の物体が置かれ、
前記画像には、テクスチャが同種の複数の物体の画像が含まれる、
請求項1から請求項14のうちの何れか1項に記載の情報処理装置。
【請求項16】
前記1又は複数のプロセッサは、
前記複数の物体のうちの第1の物体の前記接触領域の高さと、当該第1の物体に隣接する第2の物体の高さとを取得し、
少なくとも、前記第1の物体の前記接触領域の高さが、前記第2の物体の高さよりも高いことを条件として、前記第1の物体を前記グリッパで把持すると判定するように構成されている、
請求項15に記載の情報処理装置。
【請求項17】
前記1又は複数のプロセッサは、前記グリッパの前記接触領域、開口幅及び向きに基づいて、前記物体を前記第1の領域から把持させるように当該グリッパを制御するための制御信号を出力するように構成されている、請求項1から請求項16のうちの何れか1項に記載の情報処理装置。
【請求項18】
前記1又は複数のプロセッサは、訓練データを用いて訓練された機械学習モデルからの前記画像の入力に応じた出力に基づいて前記第2の領域を特定するように構成され、
前記機械学習モデルを訓練するための前記訓練データは、
前記グリッパで把持される前記物体に対応する複数の3DCGモデルを、3Dシミュレーション環境に置き、前記3Dシミュレーション環境に置かれた前記複数の3DCGモデルを撮影することで得られた画像と、
当該画像に対応する教師データとしての、当該画像に含まれる前記複数の3DCGモデルをそれぞれ区別するラベルと、を含む、
請求項1から請求項17のうちの何れか1項に記載の情報処理装置。
【請求項19】
前記複数の3DCGモデルは、前記3Dシミュレーション環境に位置及び向きがランダムにあるいは規則的に置かれる、請求項18に記載の情報処理装置。
【請求項20】
前記複数の3DCGモデルは、形状及び大きさの少なくとも1つが互いに異なる2つの3DCGモデルを含む、請求項18又は請求項19に記載の情報処理装置。
【請求項21】
前記複数の3DCGモデルは、第1の3DCGモデルと、当該第1の3DCGモデルから作成された第2の3DCGモデルとを含む、請求項18から請求項20のうちの何れか1項に記載の情報処理装置。
【請求項22】
請求項1から請求項21のうちのいずれか1項に記載の情報処理装置と、
前記グリッパと、を有し、
前記1又は複数のプロセッサは、前記グリッパの前記接触領域、開口幅及び向きに基づいて前記グリッパを制御することにより、当該グリッパに前記物体を前記第1の領域から把持させるように構成されている、
把持システム。
【請求項23】
前記グリッパは、少なくとも一部が前記制御に応じて可動に構成された複数の指部を有し、
前記複数の指部のうち少なくとも1の指部は、所定方向に外力を受けることで当該所定方向に移動可能なように構成されている、
請求項22に記載の把持システム。
【請求項24】
前記所定方向は、前記物体を把持するために前記グリッパが前記接触領域に挿入される方向と逆方向である、請求項23に記載の把持システム。
【請求項25】
前記グリッパは、前記移動可能なように構成されている指部を、前記所定方向とは逆方向に付勢する付勢機構を有する、請求項23又は請求項24に記載の把持システム。
【請求項26】
前記複数の指部は、少なくとも一部が前記制御に応じて変位することに伴い開閉するように構成されている、請求項23から請求項25のうちの何れか1項に記載の把持システム。
【請求項27】
物体が置かれている第1の領域の画像を取得し、
前記画像において前記物体が占める第2の領域を特定し、
所定形状の図形を、前記第2の領域にフィッティングし、
前記第2の領域にフィットさせた前記所定形状の図形の前記画像における位置に基づいて、グリッパで前記第1の領域に置かれている前記物体を把持する際の当該グリッパの指部を挿入する接触領域を取得する、
ことをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、情報処理装置、把持システム及びプログラムに関する。
【背景技術】
【0002】
従来、弁当などの食品工場では、グリッパにより食品トレイに入った食品を1個1個、把持して弁当箱に詰めることが行われている。
【0003】
このように個数で量を管理する食品にはさまざまな種類があるが、例えば唐揚げや餃子など、食品の種類によっては形状が不定形であり、グリッパによる適切な把持位置を決定することは困難であった。また、例えば個々の食品の位置及び/又は姿勢がグリッパとの接触により変化するなど、変化前に決定された把持位置が適切ではなくなってしまう場合もあった。把持位置が適切ではない場合、グリッパが食品などの柔らかい把持対象物に損傷を与えるおそれがあった。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Domae, Y., Okuda, H., Taguchi, Y., Sumi, K., Hirai, T., "Fast Graspability Evaluation on Single Depth Maps for Bin Picking with General Grippers", IEEE International Conference on Robotics and Automation (ICRA), DOI: 10.1109/ICRA.2014.6907124, May 2014, pp. 1997-2004.
【発明の概要】
【発明が解決しようとする課題】
【0005】
本開示が解決しようとする課題は、把持におけるグリッパの適切な把持位置を得ることである。
【課題を解決するための手段】
【0006】
実施形態に係る情報処理装置は、1又は複数のメモリと、1又は複数のプロセッサとを有する。前記1又は複数のプロセッサは、物体が置かれている第1の領域の画像を取得し、前記画像において前記物体が占める第2の領域を特定し、所定形状の図形を、前記第2の領域にフィッティングし、前記第2の領域にフィットさせた前記所定形状の図形の前記画像における位置に基づいて、グリッパで前記第1の領域に置かれている前記物体を把持する際の当該グリッパの指部を挿入する接触領域を取得するように構成されている。
【図面の簡単な説明】
【0007】
【
図1】
図1は、実施形態に係る把持システムの構成の一例を示す模式図である。
【
図2】
図2は、実施形態に係る情報処理装置の一例としてのコントローラの構成を示すブロック図である。
【
図3】
図3は、実施形態に係るグリッパの構成の一例を示す図である。
【
図4】
図4は、実施形態に係るグリッパの外力に対する応答について説明するための図である。
【
図5】
図5は、実施形態に係る情報処理装置の一例としてのコントローラにおいて実行される、訓練処理の流れの一例を示すフローチャートである。
【
図6】
図6は、実施形態に係る情報処理装置の一例としてのコントローラにおいて実行される、把持処理の流れの一例を示すフローチャートである。
【
図7】
図7は、実施形態に係る把持処理における把持位置の取得について説明するための図である。
【
図8】
図8は、実施形態に係る把持処理におけるグリッパの動作について説明するための図である。
【
図9】
図9は、実施形態に係る各装置のハードウェア構成の一例を示すブロック図である。
【発明を実施するための形態】
【0008】
以下、図面を参照しながら、情報処理装置、把持システム及びプログラムの実施形態について詳細に説明する。なお、以下に記載する実施形態の構成は、あくまで一例であって、以下の記載内容に限られるものではない。また、当該構成によってもたらされる作用及び効果も、あくまで一例であって、以下の記載内容に限られるものではない。
【0009】
なお、以下の説明において、既出の図に関して前述したものと同一又は略同一の機能を有する構成要素については、同一符号を付し、必要な場合にのみ重複説明する。また、同じ部分を表す場合であっても、図面により互いの寸法や比率が異なって表されている場合もある。また、既出の図に関して前述したものと同一又は略同一の機能を有する構成要素について、末尾にa、b又はcを付して区別している場合もある。また、例えば図面の視認性を確保する観点から、各図面の説明において主要な構成要素だけに参照符号を付し、既出の図において前述したものと同一又は略同一の機能を有する構成要素であっても参照符号を付していない場合もある。また、同じ符号が付された複数の構成要素は、全ての機能及び性質が共通するとは限らず、各実施形態に応じた異なる機能及び性質を有していてもよい。
【0010】
図1は、実施形態に係る把持システム1の構成の一例を示す模式図である。把持システム1は、
図1に示すように、コントローラ3、グリッパ5、ロボット6及びRGB-Dカメラ7を有する。
【0011】
実施形態に係る把持システム1は、コントローラ3の制御の下で、ロボット6に搭載されたグリッパ5により、所定領域201にバラ積みされた物体203を把持するシステムである。
【0012】
一例として、所定領域201は、食品トレイなどの物体203が収容される容器の領域、あるいは物体203が載置される領域として予め他の領域とは区別された床上の領域などの領域である。本実施形態では、所定領域201が食品トレイである場合を例示する。ここで、所定領域201は、物体203が置かれている第1の領域の一例である。なお、物体203が置かれている第1の領域は、予め区別された領域に限定されず、把持システム1によって把持される物体203が置かれている領域を指す。この第1の領域は、例えば、RGB-Dカメラ7の撮像範囲に対応する領域である。あるいは、第1の領域は、当該撮像範囲の一部に対応する領域である。第1の領域は、ユーザにより指定されてもよいし、撮影画像に対する物体検出の結果に基づいてコントローラ3などにより特定されてもよい。
【0013】
一例として、物体203は、食品などの柔らかい物体であって、1つ1つの形状が異なる不定形の形状を有する。具体的には、所定領域201に収容された物体203のうちの任意の2の物体203は、互いに形状が異なる。なお、所定領域201に収容された物体203のうちの2の物体203が同一の形状を有していてもよい。また、物体203が柔らかいとは、物体203の形状が、物体203に加えられた外力に応じて変形し得ることを意味する。また、一例として、物体203は、例えば食品のように、表面が傷つきやすく、把持の際には注意が必要であるとする。物体203としては、例えば、唐揚げ、ブロッコリ、きのこ、ミートボール、芋、ソーセージ、餃子などの個数で量を管理する種々の食品が利用可能である。
【0014】
一例として、所定領域201には、同一種類の少なくとも1つの物体203が置かれているとする。なお、所定領域201は、複数種類の物体203が置かれていてもよい。複数種類の物体203とは、例えば複数種類の食品であり、その形状や大きさ、表面性状がそれぞれ異なる物体である。換言すれば、所定領域201には、例えばテクスチャが同種の1つ以上の物体203が置かれているとする。所定領域201に置かれる物体203は、同一種類の食品であるなど、例えばテクスチャは共通であるが、個々の形状や大きさにはバラつきがある。個々の物体203の形状や大きさが異なると、把持の際にグリッパ5から加えられる外力に対する転がり方などの移動の仕方、回転の仕方が異なるため、物体203の位置及び/又は姿勢の変化は、一様ではない。
【0015】
図2は、実施形態に係る情報処理装置の一例としてのコントローラ3の構成を示すブロック図である。コントローラ3は、例えば、グリッパ5の動作を制御する。コントローラ3は、例えば、Central Processing Unit(CPU)等のプロセッサ31と、Random Access Memory(RAM)及びRead Only Memory(ROM)等の主記憶装置と、Hard Disk Drive(HDD)又はSolid State Drive(SSD)等の補助記憶装置とを含むメモリ33と有するコンピュータである。プロセッサ31は、Field Programmable Gate Array(FPGA)又はApplication Specific Integrated Circuit(ASIC)等の専用のハードウェアとして構成されていてもよい。コントローラ3は、バッテリなどの電源を有していてもよいし、外部電源から電力の供給を受ける形態であってもよい。
【0016】
なお、本実施形態に係るコントローラ3は、例えばロボット6の外部に設けられた情報処理装置であるが、これに限らない。コントローラ3は、グリッパ5やロボット6の内部に設けられていてもよい。
【0017】
コントローラ3は、メモリ33のRAMにロードされた制御プログラム331がプロセッサ31により実行されることにより、取得機能311、訓練機能312、特定機能313、フィッティング機能314、決定機能315、フィルタリング機能316及び制御機能317を実現する。
【0018】
取得機能311においてコントローラ3は、RGB-Dカメラ7により物体203が置かれている所定領域201の画像及び高さ情報を取得する。また、コントローラ3は、メモリ33から3DCGモデル335を取得する。
【0019】
訓練機能312においてコントローラ3は、3Dシミュレーション環境おいて条件を変えながら3DCGモデル335を複製して乱雑にあるいは整頓して配置することにより、訓練用の入力データを生成する。また、コントローラ3は、訓練用の入力データにおける各3DCGモデル335を区別するラベルを教師データとして生成する。また、コントローラ3は、訓練用の入力データ及び教師データを含む訓練用データを用いて、物体203を含む画像の入力に応じて、当該物体203の領域をセグメンテーションするように機械学習モデル333のパラメータを決定する機械学習モデル333の訓練を行う。換言すれば、学習済みの機械学習モデル333は、物体203を含む画像の入力に応じて、当該物体203の領域をセグメンテーションした結果を出力するようにパラメータが決定されたモデルである。機械学習モデル333としては、例えばMask-RCNNモデルなどのニューラルネットワークが適宜利用可能である。
【0020】
特定機能313においてコントローラ3は、所定領域201の画像に対する機械学習モデル333を用いた物体検出により、所定領域201の画像における物体203の、物体の形状をした領域(第2の領域)を特定する。
【0021】
フィッティング機能314においてコントローラ3は、検出された各物体203のその形状の領域に対して、所定形状の図形217をフィッティングする。言い換えると、コントローラ3は、画像から検出された各物体203について、所定形状の図形217を、物体203のその画像における形状にフィッティングする。
【0022】
ここで、所定形状の図形217は、例えば楕円形状(
図7参照)であるが、これに限らない。所定形状の図形217は、例えば把持対象の物体203の形状に応じて適宜選択されればよく、円形や長方形などの他の形状であっても構わない。例えば所定形状が長方形であれば、後述する楕円形状の図形の短軸の長さを長方形の短辺の長さと読み替えればよく、所定形状が円形であれば、後述する楕円形状の図形の短軸の長さを円形の直径と読み替えればよい。
【0023】
決定機能315においてコントローラ3は、検出された各物体203のその形状の領域に対してフィットさせた所定形状の図形217の位置に基づいて、接触領域219を設定する。具体的には、コントローラ3は、検出された各物体203のその形状の領域に対してフィットさせた所定形状の図形217に隣接する領域を接触領域219として設定する。以下、画像における物体203についての領域であって、その物体203の形状の領域を、単に物体203の領域と記載する場合もある。
【0024】
ここで、接触領域219は、所定領域201に置かれている物体203をグリッパ5で把持する際に、グリッパ5の指部503(把持部505)を挿入する領域である。
【0025】
一例として、接触領域219は、物体203、すなわち物体203の領域に対してフィットさせた所定形状の図形217に隣接する複数の領域であって、当該複数の領域の図心が所定形状の図形217の図心と所定領域201の画像上で一致する領域である。
【0026】
一例として、接触領域219は、グリッパ5が
図3及び
図4に例示するように、一対の指部503を有する場合、物体203の領域に対してフィットさせた所定形状の図形217の外側の領域である。接触領域219となるこの領域は、図形217に対して予め定められる軸(所定軸)の両端に隣接する領域である。この所定軸の両端は、図形217の外形線(輪郭)上に設定されるものであり、両端の位置は図形217の形状に応じて異なる。
【0027】
一例として、所定形状の図形217が楕円形状である場合、接触領域219を規定する所定軸は、楕円形状の短軸である。換言すれば、接触領域219は、所定形状の図形217が楕円形状である場合、当該楕円形状の図形217の短軸の両端の領域である。
【0028】
一例として、所定形状の図形217が円形状である場合、接触領域219を規定する所定軸は、円形状の直径である。換言すれば、接触領域219は、所定形状の図形217が円形状である場合、当該円形状の図形217の直径の両端の領域である。
【0029】
一例として、所定形状の図形217が長方形状である場合、接触領域219を規定する所定軸は、長方形の図心を通り、且つ、短辺に平行な線分である。換言すれば、接触領域219は、所定形状の図形217が長方形状である場合、当該長方形状の図形217の図心を通り、且つ、その短辺に平行な線分の両端の領域である。なお、所定形状の図形217が長方形状である場合、長方形状の図形217の内部を通る短辺に平行な線分を所定軸として設定してもよい。
【0030】
なお、接触領域219の大きさは、例えば、接触領域219に挿入されるグリッパ5の指部503の大きさに対応する。グリッパ5の指部503の大きさとは、例えば、把持部505の幅や厚さ、長さである。把持部505の長さは、グリッパ5の差し込み方向における把持部505の大きさである。把持部505の厚さとは、グリッパ5の差し込み方向に直交する方向であって、複数の指部503の開閉方向における把持部505の大きさである。把持部505の幅とは、グリッパ5の差し込み方向及び開閉方向に直交する方向における把持部505の大きさである。
【0031】
フィルタリング機能316においてコントローラ3は、RGB-Dカメラ7により得られた深度情報に基づいて、把持する物体203の候補をフィルタリングし、ロボット6のグリッパ5による把持対象の物体203、すなわちグリッパ5の指部503(把持部505)を挿入する接触領域219を取得する。
【0032】
制御機能317においてコントローラ3は、図示しない駆動部によりロボット6のアームを駆動し、グリッパ5の全体を駆動する。また、コントローラ3は、駆動部501によりグリッパ5の複数の指部503、すなわちグリッパ5の一部を駆動する。コントローラ3は、ロボット6のアーム及びグリッパ5の少なくとも一方を駆動することにより、所定領域201の物体203をグリッパ5に把持させる。つまり、コントローラ3は、グリッパ5の少なくとも一部を駆動する。
【0033】
図3は、実施形態に係るグリッパ5の構成の一例を示す図である。グリッパ5は、
図3に示すように、駆動部501、取付部502及び複数の指部503を有する。
【0034】
駆動部501は、グリッパ5の複数の指部503をコントローラ3の制御に従い駆動するアクチュエータを有する。一例として、アクチュエータは、固定プレート504に取り付けられる。アクチュエータは、例えばサーボモータである。なお、アクチュエータは、この例に限らず、ソレノイド、動力シリンダ及びリニアアクチュエータのような、他のアクチュエータであってもよい。
【0035】
グリッパ5は、取付部502によりロボット6のアームに装着される。取付部502は、例えば駆動部501の上部に設けられた図示しないネジ穴などにより構成されている。ここで、駆動部501の上部とは、
図3の例において、駆動部501の指部503とは反対側、すなわち駆動部501の固定プレート504の側である。例えば、
図1の例において、グリッパ5は、ロボット6に搭載されるエンドエフェクタである。なお、グリッパ5は、人間が装着可能な義手のような、人間を模したエンドエフェクタであってもよい。つまり、グリッパ5は、全体がコントローラ3の制御に応じて可動に構成されている。
【0036】
複数の指部503は、
図3に示すように、駆動部501に接続されている。なお、
図3は、複数の指部503として一対の指部503を例示するが、これに限らない。複数の指部503の数は、3以上の複数であっても構わない。
【0037】
複数の指部503は、少なくとも一部がコントローラ3の制御に応じて可動に構成されている。一例として、複数の指部503は、コントローラ3の制御の下で駆動部501により駆動され、閉じた状態の指部503aと、開いた状態の指部503cとの間を遷移する。なお、閉じた状態の指部503aと、開いた状態の指部503cとの間において移動される指部503は、複数の指部503のうちの少なくとも1つの指部503であってもよい。つまり、複数の指部503は、少なくとも一部がコントローラ3の制御に応じて変位することに伴い開閉するように構成されている。
【0038】
また、複数の指部503のうち少なくとも1の指部503は、所定方向506に外力を受けることで所定方向506に移動可能なように構成されている。一例として、複数の指部503は、例えば物体203との接触に伴い物体203から受ける外力に応じて移動され、例えば、外力を受けていない状態の指部503aと、外力を受けて移動された状態の指部503bとの間を遷移する。
【0039】
なお、外力を受けていない、かつ、開いた状態の指部503cについても、外力を受けて移動された状態の指部503bと同様に、所定方向506に外力を受けて移動される。また、複数の指部503は、少なくとも一部がコントローラ3の制御に応じた開閉動作の途中であっても、所定方向506に外力を受けて移動可能である。
【0040】
図4は、実施形態に係るグリッパ5の外力に対する応答について説明するための図である。一例として、複数の指部503のうち少なくとも1の指部503は、
図4に示すように、把持部505、接続部507、基部509及び付勢機構511を有する。
【0041】
複数の指部503のうち少なくとも1の指部503は、接続部507により駆動部501に取り付けられている。当該指部503において、基部509は、
図4に示すように、接続部507に対して移動可能に構成されている。例えば、基部509は、把持部505に所定方向506の外力を受けたとき、所定方向506において接続部507に近づくように移動する。把持部505は、基部509に取り付けられており、物体203の接触領域219に挿入され、物体203を把持する部分である。
【0042】
また、複数の指部503のうち少なくとも1の指部503には、付勢機構511が設けられる。付勢機構511は、例えば、接続部507及び基部509に接続されている。付勢機構511は、外力を受けて基部509及び把持部505が移動する所定方向506とは逆方向に基部509を移動させるように付勢可能である。換言すれば、付勢機構511は物体203を把持するためにグリッパ5が接触領域219に挿入される方向に、基部509及び把持部505を付勢可能である。本実施形態において、付勢とは、いずれか一方に偏るような力を加えることを意味する。
【0043】
なお、付勢機構511は、
図4に例示するように、例えば引きバネであるが、これに限らない。付勢機構511としては、引きバネ、押しバネ、巻きバネ又は他の形状のバネであってもよく、ゴムのような弾性体であってもよい。
【0044】
一例として、所定方向506とは、
図3及び
図4に例示するように、物体203を把持するためにグリッパ5が接触領域219に挿入される方向とは逆方向である。なお、複数の指部503のうち少なくとも1の指部503は、当該所定方向506とは異なる方向に外力を受けて移動されるように構成されていてもよい。一例として、複数の指部503のうち少なくとも1の指部503は、当該所定方向506に加えて、あるいは代えて、指部503の開閉方向と、所定方向506及び開閉方向に直交する水平方向との少なくとも一方に外力を受けて移動されるように構成されていてもよい。一例として、複数の指部503のうち少なくとも1の指部503は、所定方向506、開閉方向及び水平方向の少なくともいずれかに対して斜め方向に外力を受けて移動されるように構成されていてもよい。
【0045】
なお、所定方向506、開閉方向及び水平方向は、それぞれ把持対象の物体203の外周面に沿う方向の一例である。ここで、物体203の外周面に沿う方向とは、当該外周面上の任意の点における接線方向である。
【0046】
なお、複数の指部503のうち少なくとも1の指部503は、当該所定方向506とは異なる方向に外力を受けて移動されるように構成される場合、付勢機構511は、当該外力を受けて移動される方向の逆方向に基部509及び把持部505を付勢可能であればよい。
【0047】
なお、複数の指部503のそれぞれは、互いに異なる形状、構造及び機能を有していてもよい。
【0048】
なお、実施形態に係るロボット6は、例えば、
図1に例示するように、支持台からアームが延びた産業用ロボットであるが、これに限らない。ロボット6は、人型の筐体を有する人間型ロボットであってもよい。
【0049】
以下、図面を参照して、本実施形態に係る把持システム1で実行される制御処理及びグリッパ5の動作の一例について説明する。
【0050】
図5は、実施形態に係る情報処理装置の一例としてのコントローラ3において実行される、訓練処理の流れの一例を示すフローチャートである。
【0051】
取得機能311においてコントローラ3は、メモリ33に格納されている物体203に対応する3DCGモデル335を取得する(S101)。ここで、物体203に対応する3DCGモデル335とは、例えば、グリッパ5で把持される物体203の形状や大きさを模した3DCGモデルである。
【0052】
訓練機能312においてコントローラ3(シミュレータ35)は、3Dシミュレーション環境おいて条件を変えながら3DCGモデル335を複製して乱雑にあるいは整頓して配置することにより、訓練用の入力データを生成する(S102)。
【0053】
具体的には、シミュレータ35は、3Dシミュレーション環境に物体の3DCGモデル335を複数、配置する。3Dシミュレーション環境は、複数の3DCGモデルが配置されるトレイ(容器)の3DCGモデルを含んでもよい。一例として、シミュレータ35は、位置及び向きをランダムに変えながら、複数の3DCGモデル335を3Dシミュレーション環境に配置する。換言すれば、3Dシミュレーション環境に配置される複数の3DCGモデル335は、位置及び向きのうち少なくとも位置が互いに異なる2つの3DCGモデルを含む。
【0054】
なお、位置及び向きをランダムに変えることなく、複数の3DCGモデルを整列配置してもよい。一例として、シミュレータ35は、形状及び大きさが異なる3DCGモデル335それぞれを、複数個、3Dシミュレーション環境に配置してよい。例えば、シミュレータ35は、フォトグラメトリなどの既存の3次元復元手法を用いて複数の実物体203それぞれの3DCGモデルを作成し、作成された各3DCGモデルを複数個、3Dシミュレーション環境に配置してよい。換言すれば、3Dシミュレーション環境に配置される複数の3DCGモデル335は、形状及び大きさの少なくとも1つが互いに異なる複数の3DCGモデルを含んでよい。なお、配置される3DCGモデルは同形状であってもよい。なお、シミュレータ35は、各3DCGモデル335について、位置及び向きをランダムに変えながら、複数の3DCGモデル335を3Dシミュレーション環境に配置してもよい。なお、シミュレータ35は、形状及び大きさの少なくとも1つをランダムに変えた複数の3DCGモデル335を3Dシミュレーション環境に配置してもよい。
【0055】
そして、訓練機能312においてコントローラ3(シミュレータ35)は、3Dシミュレーション環境に配置された複数の3DCGモデル335を配置するごとに撮影することで、訓練用の入力データとしての複数の訓練用入力画像を得る。なお、シミュレータ35は、1の配置に対して照明条件(光の強さ、方向、色、種類、光源の数など)を含むシミュレータ35内の撮影条件や、その撮影方向、背景色や3DCGモデルやトレイなどを含むシミュレータ35内で撮影される対象の色、の少なくとも1つをランダムに変えるドメインランダマイゼーションを施すことにより、1の配置に対して複数の訓練用入力画像を取得してもよい。
【0056】
また、訓練機能312においてコントローラ3(シミュレータ35)は、訓練用入力画像(訓練用の入力データ)において3DCGモデル335それぞれを区別するラベルを、その訓練用入力画像に対応する教師データとして生成する(S103)。
【0057】
そして、訓練機能312においてコントローラ3は、訓練用入力画像と、当該訓練用入力画像において3DCGモデル335それぞれを区別するラベルとを含む訓練データを用いて、機械学習モデル333を訓練する(S104)。換言すれば、コントローラ3は、当該訓練データを用いて、物体203を含む画像の入力に応じて当該画像において物体203が占める領域(物体203の形状をした第2の領域)を出力するように機械学習モデル333のパラメータを決定する。コントローラ3は、決定されたパラメータをメモリ33に格納する。
【0058】
なお、3DCGモデル335は、把持対象の物体203を模したモデルに限らず、把持対象の他の物体203に対応するモデルであってもよい。あるいは、3DCGモデル335は、複数種の物体203を模した、複数種の物体203に共通のモデルであってもよい。あるいは、3DCGモデル335は、複数種の物体203をそれぞれ模した、複数種の物体203に対応する複数のモデルであってもよい。
【0059】
図6は、実施形態に係る情報処理装置の一例としてのコントローラ3において実行される、把持処理の流れの一例を示すフローチャートである。
図7は、実施形態に係る把持処理における把持位置の取得について説明するための図である。
図8は、実施形態に係る把持処理におけるグリッパ5の動作について説明するための図である。
【0060】
ここでは、
図7及び
図8に例示するように、所定領域201に複数の物体203が置かれている状態で
図6の流れが実行される場合を説明する。なお、所定領域201(第1の領域)に置かれている複数の物体203は、一例として、テクスチャが同種の2つ以上の物体であるとする。
【0061】
取得機能311においてコントローラ3は、
図7に例示するように、RGB-Dカメラ7により物体203が置かれている所定領域201の画像211及び高さ情報215b(
図7参照)を取得する(S201)。当該所定領域201の画像211には、テクスチャが同種の複数の物体203の画像が含まれる。
【0062】
特定機能313においてコントローラ3は、所定領域201の画像に対する物体検出により物体203の形状をした領域216(第2の領域)を特定する(S202)。以下、物体203の形状をした領域216を、単に物体203の領域216と記載する場合もある。
【0063】
具体的には、コントローラ3は、機械学習モデル333に所定領域201の画像211を入力する。機械学習モデル333は、
図7に例示するように、シミュレータ35により3DCGモデル335に基づいて生成された訓練用入力画像210を含む訓練用データを用いて訓練されている。そして、コントローラ3は、機械学習モデル333から出力されるインスタンスセグメンテーションの結果の画像213を取得することにより、所定領域201の画像211における物体203の領域216(第2の領域)を特定する。
【0064】
以下、説明の簡単のために、インスタンスセグメンテーションの結果の画像213のうちの一部の領域の画像215に注目する。もちろん、インスタンスセグメンテーションの結果の画像213のうちの画像215の他の領域の画像についても以下の説明と同様である。
【0065】
所定領域201の画像211における物体203の領域216が特定された後、
図7に例示するように、検出された各物体203のその形状の領域216に基づいて、グリッパ5により物体203を把持するための把持位置の候補を検出する処理が行われる(S203~S204)。
【0066】
図7の画像215aは、画像215aに対する把持位置の候補の検出結果を示す画像を例示する。
図7の画像218a,218bは、それぞれ画像213の任意の一部を例示する画像である。
【0067】
具体的には、フィッティング機能314においてコントローラ3は、
図7の画像218aに例示するように、検出された各物体203のその形状の領域216に対して所定形状の図形217をフィッティングする(S203)。一例として、コントローラ3は、検出された各物体203のその形状の領域216に基づいて所定形状の図形217の位置、大きさ及び向きのうちの少なくとも1つを調整することで、所定形状の図形217を各物体203の領域216にフィッティングする。
【0068】
また、決定機能315においてコントローラ3は、
図7の画像218bに例示するように、各フィット図形217に対して、フィット図形217に隣接する領域を接触領域219として設定する(S204)。具体的には、コントローラ3は、フィット図形217の位置に基づいて、グリッパ5で所定領域201に置かれている物体203を把持する際の当該グリッパ5の指部503を挿入する接触領域219を設定する。
【0069】
フィルタリング機能316においてコントローラ3は、
図7に例示するように、各フィット図形217の物体203に対して、グリッパ5によって把持する候補とするか否かを判定するフィルタリングを行う(S205)。
【0070】
図7の高さ情報215bは、インスタンスセグメンテーションの結果の画像213のうちの一部の領域の画像215に対応する高さ情報を例示する。当該判定は、例えば、物体203、すなわちフィット図形217の内部の領域に対応する高さ情報と、接触領域219に対応する高さ情報とに基づいて行われる。
【0071】
具体的には、コントローラ3は、RGB-Dカメラ7により得られた所定領域201の各部の高さ情報215bにおける、各フィット図形217の内部に対応する高さ情報に基づいて物体203の高さを特定する。また、コントローラ3は、高さ情報215bにおける、各フィット図形217に隣接する部分に対応する高さ情報に基づいて接触領域219の高さを特定する。一例として、各高さは、対応する各領域における高さ情報の中央値である。なお、各高さとしては、中央値に限らず、対応する各領域における高さ情報の平均値など、他の統計値が使用されてもよい。コントローラ3は、物体203の高さが接触領域219の高さよりも高いことを条件として、物体203をグリッパ5で把持する候補とすると判定する。ここで、物体203の高さが接触領域219の高さよりも高いとは、例えば、物体203の高さが、接触領域219の高さよりグリッパ5の指部503の挿入量以上であることを言う。なお、各フィット図形217に隣接する部分として、判定対象の物体203に隣接する物体203が用いられても構わない。
【0072】
図7の画像215cは、インスタンスセグメンテーションの結果の画像213のうちの一部の領域の画像215に対応する、フィルタリングの結果を示す画像である。つまり、
図7の画像215cに所定形状の図形217とともに示されている物体203は、画像215aに含まれる複数の物体203のうちのグリッパ5によって把持する候補として抽出された1以上の物体203を例示する。
【0073】
その後、制御機能317においてコントローラ3は、把持する候補とされた1以上の物体203から、所定のルールにしたがって少なくとも1つの物体を選択する(S206)。一例として、コントローラ3は、把持する候補とされた1以上の物体203からランダムに物体203を選択する。一例として、コントローラ3は、把持する候補とされた1以上の物体203のうちの最も高さが高い、すなわち表面側の物体203を選択する。一例として、コントローラ3は、把持する候補とされた1以上の物体203のうちのインスタンスセグメンテーションの信頼度が最も高い物体203を選択する。
【0074】
また、コントローラ3は、
図8の各状態A1~A5の遷移に例示するように、グリッパ5の位置、開口幅、向き及び把持開始時の高さ(把持高さ)を制御し、選択された物体203を所定領域201から把持する(S207)。
【0075】
具体的には、コントローラ3は、フィット図形217の位置、大きさ、向き及び対応する高さ情報に基づいて、グリッパ5の位置、開口幅、向き及び把持高さを制御する制御信号を生成し、当該制御信号をグリッパ5に出力する。
【0076】
一例として、コントローラ3は、所定形状の図形217の図心を、グリッパ5の位置として出力する。グリッパ5の位置とは、例えば、複数の指部503を接触領域219に差し込む把持動作時の水平方向におけるグリッパ5の開閉方向の中心位置である。水平方向とは、例えばグリッパ5の複数の指部503を接触領域219に差し込む方向に直交する方向である。例えば、所定形状の図形217が楕円形状である場合、グリッパ5の位置は、楕円形状の図形217の中心位置である。
【0077】
一例として、コントローラ3は、物体203の領域にフィットさせた所定形状の図形217の所定方向の大きさに基づいて、グリッパ5で物体203を把持するためのグリッパ5の開口幅を取得する。グリッパ5の開口幅は、例えば、
図8の状態A1に例示するように、所定形状の図形217の所定方向の大きさより大きい。ここで、所定方向の大きさとは、例えば、所定形状の図形217に対して設定される所定軸の長さであり、対応する接触領域219の間の距離に対応する。所定形状の図形217が楕円形状の図形の場合、所定の大きさは、短軸の長さである。例えば、コントローラ3は、所定形状の図形217の所定の大きさに、1.1倍などの所定の倍率を乗じた大きさを、グリッパ5の開口幅として取得する。例えば、コントローラ3は、所定形状の図形217の所定の大きさに所定のオフセット量を加えた大きさを、グリッパ5の開口幅として取得してもよい。
【0078】
一例として、コントローラ3は、物体203の領域にフィットさせた所定形状の図形217の向きに基づいて、グリッパ5で物体203を把持するためのグリッパ5の向きを取得する。ここで、取得されるグリッパ5の向きは、例えばグリッパ5の垂直軸まわりの回転角であり、また、所定領域201の画像211上の所定形状の図形217の向きである。ここで、グリッパ5の垂直軸は、把持動作においてグリッパ5が差し込まれる方向、あるいは上述の所定方向506に沿う軸である。例えば、取得されるグリッパ5の向きは、所定形状の図形217に対して接触領域219を規定する所定軸に、グリッパ5の開閉方向が沿う向きである。例えば、所定形状の図形217が楕円形状の図形であって、かつ、接触領域219が当該楕円形状の短軸の両端に設けられる場合、グリッパの向きは、画像211上において、その開閉方向が当該楕円形状の短軸に沿う向きである。
【0079】
一例として、コントローラ3は、物体203の領域にフィットさせた所定形状の図形217の高さに基づいて、グリッパ5で物体203を把持する把持高さを取得する。ここで、把持高さとは、例えば物体203を把持するために接触領域219に差し込んだ複数の指部503を閉じ始める際の、グリッパ5の把持部505の高さである。例えば、コントローラ3は、所定形状の図形217の高さに、所定の差し込み深さを加えた値を、把持高さとして取得する。所定の差し込み深さは、例えば、グリッパ5の形状及び大きさに基づいて予め定められた固定の値である。例えば、所定の差し込み深さは、グリッパ5の差し込み方向における、把持部505の先端から中央部分までの長さである。
【0080】
図8の各状態A1~A5の遷移は、グリッパ5の指部503が接触領域219に挿入されて、物体203を把持する流れを例示する。
図8の各状態B1~B5の遷移は、グリッパ5の指部503との接触に伴い物体203が回転するなど、物体203の位置及び姿勢の少なくとも一方が変化した場合の把持の流れを例示する。上述したように、本実施形態に係るグリッパ5の複数の指部503のうちの少なくとも1の指部503は、外力を受けて所定方向506に移動可能に構成されている。このため、
図8の状態B2及び状態B3に例示するように、物体203が接触領域219を決定した時点とは異なる位置又は姿勢であっても、物体203に接触した指部503が受動的に変位することで、状態B5に例示するように、物体203を適切に把持することができる。また、物体203に接触して変位した指部503は、所定方向506とは反対側に付勢されていることから、把持部505を物体203に潜り込ませて物体203を適切に把持することができる。
【0081】
このように、本実施形態に係るコントローラ3は、物体203が置かれている所定領域201の画像を取得し、画像において物体203が占める領域(物体203の形状の領域216)を特定し、所定形状の図形217を物体203の領域216にフィッティングし、物体203の領域216にフィットさせた所定形状の図形217の画像211における位置に基づいて、所定領域201に置かれている物体203をグリッパ5で把持する際の当該グリッパ5の指部503を挿入する接触領域219を取得するように構成されている。
【0082】
これにより、例えば形状や大きさに個体差のある食品などの物体203がバラ積みされている状況において、グリッパ5による適切な把持位置を簡便に得ることができる。
【0083】
一例として、コントローラ3は、物体203の領域216に基づいて所定形状の図形217の画像211における位置、大きさ及び向きのうちの少なくとも1つを調整することで、所定形状の図形217を物体203の領域216にフィッティングする。
【0084】
一例として、コントローラ3は、物体203の領域216にフィットさせた所定形状の図形217の所定方向の大きさに基づいて、グリッパ5の開口幅を取得する。
【0085】
一例として、当該取得されるグリッパ5の開口幅は、物体203の領域216にフィットさせた所定形状の図形217の所定方向の大きさよりも大きい。
【0086】
一例として、コントローラ3は、物体203の領域216にフィットさせた所定形状の図形217の向きに基づいて、グリッパ5の向きを取得する。
【0087】
一例として、当該取得されるグリッパ5の向きは、物体203が置かれている所定領域201の画像上の向きである。
【0088】
一例として、所定形状の図形217は、楕円形状の図形である。これにより、物体203の領域216に基づいてグリッパ5による適切な把持位置を簡便に得ることができる。例えば、食品トレイ(所定領域201)に複数の唐揚げ(複数の物体203)が詰めこまれた状況では、それら複数の唐揚げの画像がインスタンスセグメンテーションの対象となる。このような場合、楕円形状の図形を用いることにより、セグメンテーションの結果として得られる個々の唐揚げの形状の細かな違いに対して、ロバストな把持点(接触領域219)の設定が可能となる。
【0089】
一例として、コントローラ3は、物体203の高さ及び物体203の接触領域219の高さを取得し、物体203の高さ及び物体203の接触領域219の高さに少なくとも基づいて、物体203をグリッパ5で把持するか否かを判定する。
【0090】
一例として、コントローラ3は、物体203が置かれている所定領域201における各部の高さ情報を取得し、物体203の領域にフィットさせた所定形状の図形217の内部に対応する高さ情報に基づいて、物体203の高さを特定し、当該所定形状の図形217の図形に隣接する部分に対応する高さ情報に基づいて、接触領域219の高さを特定する。
【0091】
一例として、コントローラ3は、少なくとも、物体203の高さが、接触領域219の高さよりも高いことを条件として、物体203をグリッパ5で把持すると判定する。
【0092】
一例として、コントローラ3は、物体203に隣接する複数の領域であって、当該複数の領域の図心が物体203の領域216にフィットさせた所定形状の図形217の図心と、物体203が置かれている所定領域201の画像上で一致する領域に、接触領域219を設定する。
【0093】
一例として、コントローラ3は、物体203の領域216にフィットさせた所定形状の図形217の所定軸の両端に、接触領域219を設定する。
【0094】
一例として、所定形状の図形217が楕円形状の図形である場合、所定軸の両端は、物体203の領域216にフィットさせた楕円形状の図形の短軸の両端である。
【0095】
一例として、接触領域219の大きさは、接触領域219に挿入されるグリッパ5の指部503の把持部505の大きさに対応する。
【0096】
一例として、物体203が置かれている所定領域201には、テクスチャが同種の1つ以上の物体203が置かれている。また、物体203が置かれている所定領域201の画像には、テクスチャが同種の複数の物体203の画像が含まれる。
【0097】
一例として、コントローラ3は、判定対象の物体203の接触領域219の高さ及び当該物体203に隣接する他の物体203の高さを取得し、判定対象の物体203の接触領域219の高さが、隣接する他の物体203の高さよりも高いことを条件として、判定対象の物体203をグリッパ5で把持すると判定する。
【0098】
これにより、グリッパ5が物体203に接触したり、接触により物体203に損傷を与えたりすることを抑制することができる。
【0099】
一例として、コントローラ3は、訓練データを用いて訓練された機械学習モデル333からの、画像の入力に応じた出力に基づいて物体203の領域を特定するように構成されている。また、機械学習モデル333を訓練するための訓練データは、グリッパ5で把持される物体203に対応する複数の3DCGモデル335を、3Dシミュレーション環境に置き、3Dシミュレーション環境に置かれた複数の3DCGモデル335を撮影することで得られた画像と、当該画像に対応する教師データとしての、当該画像に含まれる複数の3DCGモデル335をそれぞれ区別するラベルと、を含む。
【0100】
一例として、複数の3DCGモデル335は、3Dシミュレーション環境に位置及び向きがランダムにあるいは規則的に置かれる。すなわち、複数の3DCGモデル335は、乱雑にあるいは整頓して配置される。
【0101】
一例として、複数の3DCGモデル335は、形状及び大きさの少なくとも1つが互いに異なる2つの3DCGモデルを含む。
【0102】
一例として、複数の3DCGモデル335は、第1の3DCGモデルと、当該第1の3DCGモデルから作成された第2の3DCGモデルとを含む。
【0103】
条件を変えながら3Dシミュレーション環境に3DCGモデル335を配置することにより、個体差の大きい食品などの物体203に関して、少なくとも1の3DCGモデル335を予め用意するだけで、モデルを用いたインスタンスセグメンテーションを実現することができる。また、複数の訓練用入力画像のそれぞれについて手作業でアノテーションする必要がなくなるため、アノテーションに要する手間やコスト、アノテーションのミスを低減し、教師データとしてのラベルの精度を向上することができる。また、実際の食品を用いる場合とは異なり、食品の再配置に伴う食品の損傷や乾燥などの経時変化により食品の形状や大きさが変わってしまうことなく、訓練用データを生成することができるため、訓練用データの精度を向上することができる。
【0104】
一例として、把持システム1は、コントローラ3及びグリッパ5を含む。また、コントローラ3は、グリッパ5の接触領域219、開口幅及び向きに基づいて、物体203を所定領域201から把持させるように当該グリッパ5を制御するための制御信号を出力する。
【0105】
一例として、グリッパ5は、少なくとも一部がコントローラ3の制御に応じて可動に構成された複数の指部503を有する。また、複数の指部503のうち少なくとも1の指部503は、所定方向506に外力を受けることで当該所定方向506に移動可能なように構成されている。
【0106】
一例として、所定方向506は、物体203を把持するためにグリッパ5が接触領域219に挿入される方向と逆方向である。
【0107】
一例として、グリッパ5は、外力を受けて所定方向506に移動可能な指部503を、所定方向506とは逆方向に付勢する付勢機構511を有する。
【0108】
一例として、複数の指部503は、少なくとも一部がコントローラ3の制御に応じて変位することに伴い開閉するように構成されている。
【0109】
これにより、例えば柔らかい食品などの物体203の位置及び/又は姿勢がグリッパ5との接触により変化するなど、把持位置の決定後に物体203の位置又は姿勢が変化した場合であっても、物体203に接触した指部503が受動的に変位することで、グリッパ5が物体203に損傷を与えることを抑制しつつ、物体203を適切に把持することができる。また、物体203に接触して変位した指部503は、所定方向506とは反対側に付勢されていることから、把持部505を物体203に潜り込ませて物体203を適切に把持することができる。
【0110】
なお、実施形態に係る技術的思想を方法で実現する場合、制御方法は、
図1-8に例示するように、把持システム1に関して、1又は複数台のコンピュータに、物体203が置かれている所定領域201(第1の領域)の画像を取得し、当該画像において物体203が占める領域(第2の領域)を特定し、所定形状の図形217を、物体203の領域にフィッティングし、物体203の領域にフィットさせた所定形状の図形217の位置に基づいて、グリッパ5で所定領域201に置かれている物体203を把持する際の当該グリッパ5の指部503(把持部505)を挿入する接触領域219を取得することを実現させる。制御プログラムにより実現される処理手順、処理内容及び効果等は、上述の実施形態と同様なため、説明は省略する。
【0111】
前述した実施形態におけるコントローラ3の一部又は全部は、ハードウェアで構成されていてもよいし、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)等が実行するソフトウェア(プログラム)の情報処理で構成されてもよい。ソフトウェアの情報処理で構成される場合には、前述した実施形態におけるコントローラ3の少なくとも一部の機能を実現するソフトウェアを、フレキシブルディスク、CD-ROM(Compact Disc-Read Only Memory)又はUSB(Universal Serial Bus)メモリ等の非一時的な記憶媒体(非一時的なコンピュータ可読媒体)に収納し、コンピュータに読み込ませることにより、ソフトウェアの情報処理を実行してもよい。また、通信ネットワークを介して当該ソフトウェアがダウンロードされてもよい。さらに、ソフトウェアがASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の回路に実装されることにより、情報処理がハードウェアにより実行されてもよい。
【0112】
ソフトウェアを収納する記憶媒体は、磁気ディスク、光ディスク等の着脱可能なものでもよいし、ハードディスク、メモリ等の固定型の記憶媒体であってもよい。また、記憶媒体は、コンピュータ内部に備えられてもよいし(主記憶装置、補助記憶装置等)、コンピュータ外部に備えられてもよい。
【0113】
図9は、実施形態に係る各装置のハードウェア構成の一例を示すブロック図である。把持システム1において、コントローラ3は、一例として、コンピュータ81として実現されてもよい。コンピュータ81は、例えば
図9に示すように、プロセッサ811と、主記憶装置812(メモリ)と、補助記憶装置813(メモリ)と、ネットワークインタフェース814と、デバイスインタフェース815とを有する。コンピュータ81において、プロセッサ811と、主記憶装置812(メモリ)と、補助記憶装置813(メモリ)と、ネットワークインタフェース814と、デバイスインタフェース815とは、バス816を介して接続されている。
【0114】
図9のコンピュータ81は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、
図9では、1台のコンピュータ81が示されているが、ソフトウェアが複数台のコンピュータにインストールされて、当該複数台のコンピュータそれぞれがソフトウェアの同一の又は異なる一部の処理を実行してもよい。この場合、コンピュータそれぞれがネットワークインタフェース814等を介して通信して処理を実行する分散コンピューティングの形態であってもよい。つまり、前述した実施形態におけるコントローラ3は、1又は複数の記憶装置に記憶された命令を1台又は複数台のコンピュータが実行することで機能を実現するシステムとして構成されてもよい。また、端末から送信された情報をクラウド上に設けられた1台又は複数台のコンピュータで処理し、この処理結果を端末に送信するような構成であってもよい。
【0115】
前述した実施形態におけるコントローラ3の各種演算は、1又は複数のプロセッサを用いて、又はネットワークを介した複数台のコンピュータを用いて、並列処理で実行されてもよい。また、各種演算が、プロセッサ内に複数ある演算コアに振り分けられて、並列処理で実行されてもよい。また、本開示の処理、手段等の一部又は全部は、ネットワークを介してコンピュータ81と通信可能なクラウド上に設けられたプロセッサ及び記憶装置の少なくとも一方により実行されてもよい。このように、前述した実施形態における各装置は、1台又は複数台のコンピュータによる並列コンピューティングの形態であってもよい。
【0116】
プロセッサ811は、コンピュータの制御装置及び演算装置を含む電子回路(処理回路、Processing circuit、Processing circuitry、CPU、GPU、FPGA、ASIC等)であってもよい。また、プロセッサ811は、専用の処理回路又は汎用プロセッサと専用の処理回路との両方を含む半導体装置のいずれであってもよい。プロセッサ811は、電子論理素子を用いた電子回路に限定されるものではなく、光論理素子を用いた光回路により実現されてもよい。また、プロセッサ811は、量子コンピューティングに基づく演算機能を含むものであってもよい。
【0117】
プロセッサ811は、コンピュータ81の内部構成の各装置等から入力されたデータやソフトウェア(プログラム)に基づいて演算処理を行い、演算結果や制御信号を各装置等に出力することができる。プロセッサ811は、コンピュータ81のOS(Operating System)や、アプリケーション等を実行することにより、コンピュータ81を構成する各構成要素を制御してもよい。
【0118】
前述した実施形態におけるコントローラ3は、1又は複数のプロセッサ811により実現されてもよい。ここで、プロセッサ811は、1チップ上に配置された1又は複数の電子回路を指してもよいし、2つ以上のチップあるいは2つ以上のデバイス上に配置された1又は複数の電子回路を指してもよい。複数の電子回路を用いる場合、各電子回路は有線又は無線により通信してもよい。
【0119】
主記憶装置812は、プロセッサ811が実行する命令及び各種データ等を記憶する記憶装置であり、主記憶装置812に記憶された情報がプロセッサ811により読み出される。補助記憶装置813は、主記憶装置812以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、半導体のメモリでもよい。半導体のメモリは、揮発性メモリ、不揮発性メモリのいずれでもよい。前述した実施形態におけるコントローラ3において各種データを保存するための記憶装置は、主記憶装置812又は補助記憶装置813により実現されてもよく、プロセッサ811に内蔵される内蔵メモリにより実現されてもよい。
【0120】
記憶装置(メモリ)1つに対して、複数のプロセッサが接続(結合)されてもよいし、単数のプロセッサが接続されてもよい。プロセッサ1つに対して、複数の記憶装置(メモリ)が接続(結合)されてもよい。前述した実施形態におけるコントローラ3が、少なくとも1つの記憶装置(メモリ)とこの少なくとも1つの記憶装置(メモリ)に接続(結合)される複数のプロセッサで構成される場合、複数のプロセッサのうち少なくとも1つのプロセッサが、少なくとも1つの記憶装置(メモリ)に接続(結合)される構成を含んでもよい。また、複数台のコンピュータに含まれる記憶装置(メモリ)とプロセッサによって、この構成が実現されてもよい。さらに、記憶装置(メモリ)がプロセッサと一体になっている構成(例えば、L1キャッシュ、L2キャッシュを含むキャッシュメモリ)を含んでもよい。
【0121】
ネットワークインタフェース814は、無線又は有線により、通信ネットワーク82に接続するためのインタフェースである。ネットワークインタフェース814は、既存の通信規格に適合したもの等、適切なインタフェースを用いればよい。ネットワークインタフェース814により、通信ネットワーク82を介して接続された外部装置83aと情報のやり取りが行われてもよい。なお、通信ネットワーク82は、WAN(Wide Area Network)、LAN(Local Area Network)、PAN(Personal Area Network)等の何れか又はそれらの組み合わせであってよく、コンピュータ81と外部装置83aとの間で情報のやり取りが行われるものであればよい。WANの一例としてインターネット等があり、LANの一例としてIEEE802.11やイーサネット(登録商標)等があり、PANの一例としてBluetooth(登録商標)やNFC(Near Field Communication)等がある。
【0122】
デバイスインタフェース815は、外部装置83bと直接接続するUSB等のインタフェースである。
【0123】
外部装置83aはコンピュータ81とネットワークを介して接続されている装置である。外部装置83bはコンピュータ81と直接接続されている装置である。
【0124】
外部装置83a又は外部装置83bは、一例として、入力装置であってもよい。入力装置は、例えば、カメラ、マイクロフォン、モーションキャプチャ、各種センサ、キーボード、マウス、タッチパネル等のデバイスであり、取得した情報をコンピュータ81に与える。また、パーソナルコンピュータ、タブレット端末、スマートフォン等の入力部とメモリとプロセッサを備えるデバイスであってもよい。
【0125】
例えば、外部装置83a又は外部装置83bは、前述した実施形態におけるRGB-Dカメラ7であってもよい。
【0126】
また、外部装置83a又は外部装置83bは、一例として、出力装置でもよい。出力装置は、例えば、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、PDP(Plasma Display Panel)、又は有機EL(Electro Luminescence)パネル等の表示装置であってもよいし、音声等を出力するスピーカ等であってもよい。また、パーソナルコンピュータ、タブレット端末又はスマートフォン等の出力部とメモリとプロセッサを備えるデバイスであってもよい。
【0127】
また、外部装置83a又は外部装置83bは、記憶装置(メモリ)であってもよい。例えば、外部装置83aはネットワークストレージ等であってもよく、外部装置83bはHDD等のストレージであってもよい。
【0128】
また、外部装置83a又は外部装置83bは、前述した実施形態における各装置(コントローラ3又は把持システム1を搭載するロボット6)の構成要素の一部の機能を有する装置でもよい。つまり、コンピュータ81は、外部装置83a又は外部装置83bの処理結果の一部又は全部を送信又は受信してもよい。
【0129】
本明細書(請求項を含む)において、「a、b及びcの少なくとも1つ(一方)」又は「a、b又はcの少なくとも1つ(一方)」の表現(同様な表現を含む)が用いられる場合は、a、b、c、a-b、a-c、b-c又はa-b-cのいずれかを含む。また、a-a、a-b-b、a-a-b-b-c-c等のように、いずれかの要素について複数のインスタンスを含んでもよい。さらに、a-b-c-dのようにdを有する等、列挙された要素(a、b及びc)以外の他の要素を加えることも含む。
【0130】
本明細書(請求項を含む)において、「データを入力として/データに基づいて/に従って/に応じて」等の表現(同様な表現を含む)が用いられる場合は、特に断りがない場合、各種データそのものを入力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を入力として用いる場合を含む。また「データに基づいて/に従って/に応じて」何らかの結果が得られる旨が記載されている場合、当該データのみに基づいて当該結果が得られる場合を含むとともに、当該データ以外の他のデータ、要因、条件及び/又は状態にも影響を受けて当該結果が得られる場合をも含み得る。また、「データを出力する」旨が記載されている場合、特に断りがない場合、各種データそのものを出力として用いる場合や、各種データに何らかの処理を行ったもの(例えば、ノイズ加算したもの、正規化したもの、各種データの中間表現等)を出力とする場合も含む。
【0131】
本明細書(請求項を含む)において、「接続される(connected)」及び「結合される(coupled)」との用語が用いられる場合は、直接的な接続/結合、間接的な接続/結合、電気的(electrically)な接続/結合、通信的(communicatively)な接続/結合、機能的(operatively)な接続/結合、物理的(physically)な接続/結合等のいずれをも含む非限定的な用語として意図される。当該用語は、当該用語が用いられた文脈に応じて適宜解釈されるべきであるが、意図的に或いは当然に排除されるのではない接続/結合形態は、当該用語に含まれるものして非限定的に解釈されるべきである。
【0132】
本明細書(請求項を含む)において、「AがBするよう構成される(A configured to B)」との表現が用いられる場合は、要素Aの物理的構造が、動作Bを実行可能な構成を有するとともに、要素Aの恒常的(permanent)又は一時的(temporary)な設定(setting/configuration)が、動作Bを実際に実行するように設定(configured/set)されていることを含んでよい。例えば、要素Aが汎用プロセッサである場合、当該プロセッサが動作Bを実行可能なハードウェア構成を有するとともに、恒常的(permanent)又は一時的(temporary)なプログラム(命令)の設定により、動作Bを実際に実行するように設定(configured)されていればよい。また、要素Aが専用プロセッサ、専用演算回路等である場合、制御用命令及びデータが実際に付属しているか否かとは無関係に、当該プロセッサの回路的構造が動作Bを実際に実行するように構築(implemented)されていればよい。
【0133】
本明細書(請求項を含む)において、含有又は所有を意味する用語(例えば、「含む(comprising/including)」、「有する(having)等)」が用いられる場合は、当該用語の目的語により示される対象物以外の物を含有又は所有する場合を含む、open-endedな用語として意図される。これらの含有又は所有を意味する用語の目的語が数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)である場合は、当該表現は特定の数に限定されないものとして解釈されるべきである。
【0134】
本明細書(請求項を含む)において、ある箇所において「1つ又は複数(one or more)」、「少なくとも1つ(at least one)」等の表現が用いられ、他の箇所において数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)が用いられているとしても、後者の表現が「1つ」を意味することを意図しない。一般に、数量を指定しない又は単数を示唆する表現(a又はanを冠詞とする表現)は、必ずしも特定の数に限定されないものとして解釈されるべきである。
【0135】
本明細書において、ある実施例の有する特定の構成について特定の効果(advantage/result)が得られる旨が記載されている場合、別段の理由がない限り、当該構成を有する他の1つ又は複数の実施例についても当該効果が得られると理解されるべきである。但し当該効果の有無は、一般に種々の要因、条件及び/又は状態に依存し、当該構成により必ず当該効果が得られるものではないと理解されるべきである。当該効果は、種々の要因、条件及び/又は状態が満たされたときに実施例に記載の当該構成により得られるものに過ぎず、当該構成又は類似の構成を規定したクレームに係る発明において、当該効果が必ずしも得られるものではない。
【0136】
本明細書(請求項を含む)において、複数のハードウェアが所定の処理を行う場合、各ハードウェアが協働して所定の処理を行ってもよいし、一部のハードウェアが所定の処理の全てを行ってもよい。また、一部のハードウェアが所定の処理の一部を行い、別のハードウェアが所定の処理の残りを行ってもよい。本明細書(請求項を含む)において、「1又は複数のハードウェアが第1の処理を行い、前記1又は複数のハードウェアが第2の処理を行う」等の表現が用いられている場合、第1の処理を行うハードウェアと第2の処理を行うハードウェアは同じものであってもよいし、異なるものであってもよい。つまり、第1の処理を行うハードウェア及び第2の処理を行うハードウェアが、前記1又は複数のハードウェアに含まれていればよい。なお、ハードウェアは、電子回路、電子回路を含む装置等を含んでよい。
【0137】
本明細書(請求項を含む)において、複数の記憶装置(メモリ)がデータの記憶を行う場合、複数の記憶装置(メモリ)のうち個々の記憶装置(メモリ)は、データの一部のみを記憶してもよいし、データの全体を記憶してもよい。
【0138】
以上、本開示の実施形態について詳述したが、本開示は上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において、種々の追加、変更、置き換え、部分的削除等が可能である。例えば、前述した実施形態において、数値又は数式を説明に用いている場合、これらは例示的な目的で示されたものであり、本開示の範囲を限定するものではない。また、実施形態で示した各動作の順序も例示的なものであり、本開示の範囲を限定するものではない。