IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社安川電機の特許一覧

特許7349586ロボット制御システム、ロボット制御方法、およびロボット制御プログラム
<>
  • 特許-ロボット制御システム、ロボット制御方法、およびロボット制御プログラム 図1
  • 特許-ロボット制御システム、ロボット制御方法、およびロボット制御プログラム 図2
  • 特許-ロボット制御システム、ロボット制御方法、およびロボット制御プログラム 図3
  • 特許-ロボット制御システム、ロボット制御方法、およびロボット制御プログラム 図4
  • 特許-ロボット制御システム、ロボット制御方法、およびロボット制御プログラム 図5
  • 特許-ロボット制御システム、ロボット制御方法、およびロボット制御プログラム 図6
  • 特許-ロボット制御システム、ロボット制御方法、およびロボット制御プログラム 図7
  • 特許-ロボット制御システム、ロボット制御方法、およびロボット制御プログラム 図8
  • 特許-ロボット制御システム、ロボット制御方法、およびロボット制御プログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-09-13
(45)【発行日】2023-09-22
(54)【発明の名称】ロボット制御システム、ロボット制御方法、およびロボット制御プログラム
(51)【国際特許分類】
   B25J 13/00 20060101AFI20230914BHJP
   B25J 13/08 20060101ALI20230914BHJP
【FI】
B25J13/00 Z
B25J13/08 A
【請求項の数】 14
(21)【出願番号】P 2022567793
(86)(22)【出願日】2022-05-31
(86)【国際出願番号】 JP2022022180
【審査請求日】2022-11-24
(31)【優先権主張番号】63/317550
(32)【優先日】2022-03-08
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【弁理士】
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100145012
【弁理士】
【氏名又は名称】石坂 泰紀
(74)【代理人】
【識別番号】100171099
【弁理士】
【氏名又は名称】松尾 茂樹
(74)【代理人】
【識別番号】100144440
【弁理士】
【氏名又は名称】保坂 一之
(72)【発明者】
【氏名】増村 諒
(72)【発明者】
【氏名】太刀掛 浩貴
(72)【発明者】
【氏名】薩摩 啓太
(72)【発明者】
【氏名】中村 啓介
(72)【発明者】
【氏名】出口 央
【審査官】松浦 陽
(56)【参考文献】
【文献】特表2017-520417(JP,A)
【文献】特開平09-262784(JP,A)
【文献】特開2020-032479(JP,A)
【文献】特開2002-052487(JP,A)
【文献】特開2021-030407(JP,A)
【文献】特開2013-195199(JP,A)
【文献】特開2020-179464(JP,A)
【文献】国際公開第2021/085345(WO,A1)
【文献】米国特許出願公開第2020/0090099(US,A1)
【文献】特開2019-162712(JP,A)
【文献】特開2021-153534(JP,A)
【文献】特許第7094502(JP,B1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
(57)【特許請求の範囲】
【請求項1】
少なくとも一つの対象物が配置される指定領域の現在の状態を現在領域状態として検出する領域検出部と、
少なくとも前記現在領域状態に基づくシミュレーションによって、追加対象物を少なくとも含む1以上の対象物が配置された前記指定領域の複数の状態を複数の予想領域状態として生成する計画部と、
少なくとも一つの対象物が前記指定領域に配置された状態である複数の配置後領域状態を示す複数の配置画像と、該複数の配置画像に対応する複数の配置の評価値とを用いて予め学習された推論器に、前記複数の予想領域状態を示す複数の画像のそれぞれを入力して、前記複数の予想領域状態のそれぞれについて前記評価値を算出する評価部と、
算出された複数の前記評価値に基づいて前記複数の予想領域状態から前記計画部によって選択された一つの前記予想領域状態に基づいて、該選択された一つの予想領域状態における前記追加対象物の位置および姿勢の少なくとも一方を、前記指定領域における前記追加対象物の位置および姿勢の少なくとも一方として示す追加情報を生成する生成部と、
前記追加情報によって示される前記位置および姿勢の少なくとも一方で前記追加対象物を前記指定領域内に配置させるようにロボットを制御するロボット制御部と、
を備えるロボット制御システム。
【請求項2】
前記推論器を学習するために用いられる前記複数の配置の評価値は、前記指定領域内の対象物間の色のバランスに基づいて設定されたものである、
請求項1に記載のロボット制御システム。
【請求項3】
前記色のバランスは、複数の等級によって表現された色のバランスである、
請求項2に記載のロボット制御システム。
【請求項4】
前記推論器は、ニューラルネットワークによって構築される機械学習モデルである、
請求項1~3のいずれか一項に記載のロボット制御システム。
【請求項5】
前記計画部は、前記複数の予想領域状態のそれぞれについて、該予想領域状態として、前記追加対象物を含む既定質量の対象物が配置された前記指定領域の状態をシミュレーションする、
請求項1~3のいずれか一項に記載のロボット制御システム。
【請求項6】
前記計画部は、
前記複数の予想領域状態のそれぞれについて、前記指定領域内の前記1以上の対象物の全質量を予測し、
前記複数の予想領域状態のそれぞれについて、前記全質量と既定質量との差が小さいほど高くなる質量スコアと、前記評価値が高くなるほど高くなる評価スコアとの合計値を算出し、
複数の前記合計値に基づいて、前記複数の予想領域状態から前記一つの予想領域状態を選択する、
請求項5に記載のロボット制御システム。
【請求項7】
前記追加対象物の候補となる複数の候補物を検出する候補検出部を更に備え、
前記生成部は、前記複数の候補物から、前記選択された一つの予想領域状態における前記追加対象物を選択する
請求項1~3のいずれか一項に記載のロボット制御システム。
【請求項8】
前記候補検出部は、
前記複数の候補物のそれぞれについて、該候補物の品質が所定の品質基準を満たすか否かを判定し、
前記品質基準を満たさない前記候補物を、前記追加対象物として選択される対象から除外する、
請求項に記載のロボット制御システム。
【請求項9】
前記指定領域に既定量の対象物が配置されるように、前記指定領域への前記追加対象物の配置を繰り返す反復制御部を更に備え、
前記反復制御部は、前記ロボットにより前記追加対象物が配置されるたびに、
前記領域検出部に前記現在領域状態を検出させ、
前記計画部に、前記指定領域に追加する次の追加対象物を少なくとも含む前記1以上の対象物が配置された前記指定領域の複数の状態を複数の新たな予想領域状態として生成させ、
前記評価部に、前記複数の新たな予想領域状態を示す複数の新たな画像のそれぞれを前記推論器に入力して、前記複数の新たな予想領域状態のそれぞれについて新たな評価値を算出させ、
前記生成部に、算出された複数の前記新たな評価値に基づいて前記複数の新たな予想領域状態から前記計画部によって選択された一つの前記予想領域状態に基づいて、前記次の追加対象物に関する次の追加情報を生成させ、
前記ロボット制御部に、前記次の追加対象物を前記指定領域内に配置させるように前記ロボットを制御させる、
請求項1~3のいずれか一項に記載のロボット制御システム。
【請求項10】
前記評価部は、既定量の前記対象物が配置された前記指定領域の状態である最終状態の評価値を更に算出する、
請求項1~3のいずれか一項に記載のロボット制御システム。
【請求項11】
前記評価部によって算出される前記最終状態の前記評価値が上がるように、前記最終状態に基づいて、前記既定量の対象物の少なくとも一部の位置および姿勢の少なくとも一方を前記指定領域内で変更させるための調整情報を生成する調整部を更に備え、
前記ロボット制御部は、前記調整情報に基づいて前記ロボットを制御する、
請求項10に記載のロボット制御システム。
【請求項12】
前記評価部による前記評価値の算出において用いられた前記推論器の計算プロセスを解析して、該推論器による前記最終状態の評価の根拠を示す注目領域を抽出する解析部を更に備え、
前記調整部は、
前記注目領域に対応する部分領域を前記指定領域から特定し、
前記部分領域の位置に少なくとも基づいて前記調整情報を生成する、
請求項11に記載のロボット制御システム。
【請求項13】
少なくとも一つのプロセッサを備えるロボット制御システムによって実行されるロボット制御方法であって、
少なくとも一つの対象物が配置される指定領域の現在の状態を現在領域状態として検出するステップと、
少なくとも前記現在領域状態に基づくシミュレーションによって、追加対象物を少なくとも含む1以上の対象物が配置された前記指定領域の複数の状態を複数の予想領域状態として生成するステップと、
少なくとも一つの対象物が前記指定領域に配置された状態である複数の配置後領域状態を示す複数の配置画像と、該複数の配置画像に対応する複数の配置の評価値とを用いて予め学習された推論器に、前記複数の予想領域状態を示す複数の画像のそれぞれを入力して、前記複数の予想領域状態のそれぞれについて前記評価値を算出するステップと、
算出された複数の前記評価値に基づいて前記複数の予想領域状態から選択された一つの前記予想領域状態に基づいて、該選択された一つの予想領域状態における前記追加対象物の位置および姿勢の少なくとも一方を、前記指定領域における前記追加対象物の位置および姿勢の少なくとも一方として示す追加情報を生成するステップと、
前記追加情報によって示される前記位置および姿勢の少なくとも一方で前記追加対象物を前記指定領域内に配置させるようにロボットを制御するステップと、
を含むロボット制御方法。
【請求項14】
少なくとも一つの対象物が配置される指定領域の現在の状態を現在領域状態として検出するステップと、
少なくとも前記現在領域状態に基づくシミュレーションによって、追加対象物を少なくとも含む1以上の対象物が配置された前記指定領域の複数の状態を複数の予想領域状態として生成するステップと、
少なくとも一つの対象物が前記指定領域に配置された状態である複数の配置後領域状態を示す複数の配置画像と、該複数の配置画像に対応する複数の配置の評価値とを用いて予め学習された推論器に、前記複数の予想領域状態を示す複数の画像のそれぞれを入力して、前記複数の予想領域状態のそれぞれについて前記評価値を算出するステップと、
算出された複数の前記評価値に基づいて前記複数の予想領域状態から選択された一つの前記予想領域状態に基づいて、該選択された一つの予想領域状態における前記追加対象物の位置および姿勢の少なくとも一方を、前記指定領域における前記追加対象物の位置および姿勢の少なくとも一方として示す追加情報を生成するステップと、
前記追加情報によって示される前記位置および姿勢の少なくとも一方で前記追加対象物を前記指定領域内に配置させるようにロボットを制御するステップと、
をコンピュータに実行させるロボット制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の一側面は、ロボット制御システム、ロボット制御方法、およびロボット制御プログラムに関する。
【背景技術】
【0002】
ばら積みされた対象物の集合から特定の対象物をピッキングするロボットシステムが知られている。
【0003】
特許文献1には、把持機構を有するロボットと、ロボットを制御するコントローラと、ワークの計測データを出力するセンサと、把持位置姿勢についての把持の安定性を評価する把持評価モデルへ計測データが入力されることによって、把持機構に取らせる把持位置姿勢を決定し、決定された把持位置姿勢の情報をコントローラへ出力する計算機とを備える装置が記載されている。
【0004】
特許文献2には、複数のワークが設置された設置スペースにおいてワークを認識するためのワークの認識装置が記載されている。この認識装置は、設置スペースの所定の範囲内を撮像して画像情報を得るための撮像装置と、その画像情報を解析してワークを認識するための制御部とを備える。制御部は、設置スペースの所定の範囲内からワークを保持して取り出すためのロボットを制御する。
【先行技術文献】
【特許文献】
【0005】
【文献】特許第6758540号公報
【文献】特許第6860432号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
適切な対象物を所定の領域に適切に配置することが望まれている。
【課題を解決するための手段】
【0007】
本開示の一側面に係るロボット制御システムは、少なくとも一つの対象物が配置される指定領域の現在の状態を現在領域状態として検出する領域検出部と、現在領域状態に基づいて、指定領域に追加する追加対象物に関する追加情報を生成する生成部と、追加情報に基づいて、追加対象物を指定領域内に配置させるようにロボットを制御するロボット制御部とを備える。
【0008】
本開示の一側面に係るロボット制御方法は、少なくとも一つのプロセッサを備えるロボット制御システムによって実行されるロボット制御方法であって、少なくとも一つの対象物が配置される指定領域の現在の状態を現在領域状態として検出するステップと、現在領域状態に基づいて、指定領域に追加する追加対象物に関する追加情報を生成するステップと、追加情報に基づいて、追加対象物を指定領域内に配置させるようにロボットを制御するステップとを含む。
【0009】
本開示の一側面に係るロボット制御プログラムは、少なくとも一つの対象物が配置される指定領域の現在の状態を現在領域状態として検出するステップと、現在領域状態に基づいて、指定領域に追加する追加対象物に関する追加情報を生成するステップと、追加情報に基づいて、追加対象物を指定領域内に配置させるようにロボットを制御するステップとをコンピュータに実行させる。
【発明の効果】
【0010】
本開示の一側面によれば、適切な対象物を所定の領域に適切に配置できる。
【図面の簡単な説明】
【0011】
図1】ロボットシステムの一例を示す図である。
図2】ロボットコントローラの機能構成の一例を示す図である。
図3】ロボットコントローラのハードウェア構成の一例を示す図である。
図4】ロボットシステムでの処理の一例を示すフローチャートである。
図5】シミュレーションによる配置計画を示すフローチャートである。
図6】指定領域内の配置の最終検査の一例を示すフローチャートである。
図7】候補物の検出の一例を示す図である。
図8】指定領域への追加対象物の配置の一例を示す図である。
図9】指定領域の最終状態の例を示す図である。
【発明を実施するための形態】
【0012】
以下、添付図面を参照しながら本開示での実施形態を詳細に説明する。図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【0013】
[システムの概要]
本開示に係るロボットシステムは、現実の作業空間に配置されたロボットに所定のモーションを実行させることにより、1以上の対象物を指定領域に自動的に配置する制御システムである。ロボットシステムは、少なくとも一つのロボットと、そのロボットを制御するロボット制御システムとを備える。一例では、ロボットシステムは、対象物の集合を収容するストック領域から一つのまたはひとまとまりの対象物を追加対象物として取り出して、その追加対象物を指定領域に配置する、という一連の処理を繰り返して、既定量の対象物を指定領域に配置する。本開示では、ひとまとまりの対象物も「一つの対象物」という。
【0014】
対象物とは、ロボットシステムによって処理される有体物をいい、例えば任意の固体または液体である。対象物は、それぞれが他と明確に区別されて、個数によって管理することが可能な有体物でもよい。個数によって管理することが可能な有体物は、個々の物の種類が同じであり、観察者に与える視覚的印象も個々の物の間で同じである定形物でもよい。あるいは、個数によって管理することが可能な有体物は、個々の物の種類は同じであるが、観察者に与える視覚的印象が個々の物の間で異なる不定形物であってもよい。あるいは、対象物は、個数での管理が非常に困難であるかまたは事実上不可能であるために、質量によって管理される有体物であってもよい。質量によって管理される有体物については、所定の区切り操作によって残存部分から分離されることで一つの対象物(ひとまとまりの対象物)が得られる。質量によって管理される有体物の例として、粒状または粉状の材料と、細かく裁断された材料と、練り物として提供される材料と、液状の材料とが挙げられる。追加対象物とは、指定領域に配置される対象物をいう。
【0015】
指定領域とは、ロボットによって少なくとも一つの対象物が配置される区画をいい、所定の形状と、体積または面積とを有する。「対象物を指定領域に配置する」とは、指定領域内に対象物を置く処理をいい、指定領域内に対象物を存在させる処理ともいえる。ロボットシステムは空の指定領域に対して対象物を配置してもよいし、既に何らかの物を収容する指定領域に対して対象物を配置してもよい。
【0016】
ストック領域とは、指定領域に配置される可能性がある対象物の集合が用意された区画をいい、所定の形状と、体積または面積とを有する。一例では、ストック領域は、対象物の集合がばら積みされた区画である。本開示では、ストック領域に用意されて指定領域に配置され得る対象物(すなわち、追加対象物の候補)を候補物ともいう。ストック領域は、一種類の対象物(候補物)の集合を収容してもよいし、複数種類の対象物(候補物)の集合を収容してもよい。したがって、一つの指定領域に対して追加対象物の配置を繰り返す場合には、ロボットは個々の配置処理において同種の追加対象物を配置するかもしれないし、個々の配置の処理の間で異なる種類の追加対象物を配置するかもしれない。
【0017】
上述したように、ロボットシステムは既定量の対象物が指定領域に収容されるまで、該指定領域への追加対象物の配置を繰り返してもよい。既定量とは、指定領域に収容される対象物の総量として設定された値である。既定量の対象物は、1以上の対象物の集合である。質量によって管理される対象物については、2以上の対象物の集合が見かけ上ひとまとまりに見える場合がある。既定量と、最終的に指定領域に収容される対象物の実際の総量との間に、許容され得る誤差が生じてもよい。既定量は特定の数値によって示されてもよいし、数値範囲によって示されてもよい。既定量は個数、質量、または体積によって定められてもよいし、これらの量のうちの少なくとも二つの組合せによって定められてもよい。
【0018】
一例では、ロボットシステムは対象物として食品を取り扱う。例えば、ロボットシステムは番重内の特定の食品を弁当箱などのパック(すなわち容器)内に配置する。番重はストック領域の一例であり、パックは指定領域の一例である。すなわち、パックへの食品の盛り付けは、対象物を指定領域に配置することの一例である。ロボットシステムは、総菜(唐揚げ、野菜炒め、ポテトサラダなど)、パン、ご飯、スープ、ジュース、ソース、ドレッシング、塩、コショウなどの様々な種類の食品を、またはこれらの食品の組合せを、対象物として処理し得る。パックに食品を盛り付ける例では、「対象物を指定領域に配置する」ことは、固形物をパック内に置くことであり得るし、液状、粉状、または粒状の調味料を掛けることでもあり得る。
【0019】
[システムの構成]
図1は一例に係るロボットシステム1の全体構成の一例を示す図である。このロボットシステム1は、モータ制御装置2、ロボット3、第1カメラ5、第2カメラ6、およびロボットコントローラ10を備える。一例では、ロボットコントローラ10は通信ネットワークを介してモータ制御装置2、第1カメラ5、および第2カメラ6に接続する。モータ制御装置2は別の通信ネットワークを介してロボット3に接続する。装置間を接続する通信ネットワークは、有線ネットワークでも無線ネットワークでもよい。通信ネットワークはインターネットおよびイントラネットの少なくとも一方を含んで構成されてもよいし、単純に1本の通信ケーブルによって実現されてもよい。
【0020】
図1は、現実の作業空間に存在するストック領域81および指定領域82として番重およびパックをそれぞれ例示する。番重は、主に食品業界で利用される運搬容器であり、ある程度多くの食品を収容可能な容積を有する。パックは一般消費者への食品の販売に適した寸法を有する。
【0021】
モータ制御装置2は、ロボットコントローラ10からの制御信号(すなわち指令)にロボット3のモータの出力を追従させるための装置である。モータ制御装置2は、ロボットコントローラ10からの制御信号に基づいて、モータを動かすための電力を生成し、その電力をモータに供給する。この供給される電力は、トルク指令、電流指令などのような駆動力指令に相当する。モータ制御装置2は例えば、インバータであってもよいし、サーボアンプであってもよい。モータ制御装置2はロボット3内に組み込まれてもよい。モータ制御装置2は、自機の応答を検出するセンサを備えてもよい。
【0022】
ロボット3は、動力を受けて目的に応じた所定の動作を行って、有用な仕事を実行する装置である。一例では、ロボット3は複数の関節を備え、先端部に取り付けられたエンドエフェクタ4を用いて様々な処理を実行する。関節は駆動対象の一例である。複数の関節のそれぞれには関節軸が設定される。アーム、旋回部などのようなロボット3のいくつかの構成要素は関節軸を中心に回転し、この結果、ロボット3は所定の範囲内において先端部の位置および姿勢を自在に変更し得る。一例では、ロボット3は多軸のシリアルリンク型の垂直多関節ロボットである。ロボット3は、6軸の垂直多関節ロボットでもよいし、6軸に1軸の冗長軸を追加した7軸の垂直多関節ロボットでもよい。ロボット3は自走可能な移動ロボットでもよく、例えば、無人搬送車(AGV)により支持されるロボットでもよい。あるいは、ロボット3は所定の場所に固定された据置型ロボットでもよい。
【0023】
ロボット3は少なくとも一つのモータによって駆動する。モータは、モータ制御装置2から供給される電力に応じて、ロボット3の駆動対象を駆動させるための動力を発生させる装置である。個々のモータによって個々の駆動対象が動作し、その結果、ロボット3がエンドエフェクタ4を用いてワークに対して所定の仕事を実行する。モータは、駆動対象を回転させる回転型モータであってもよいし、駆動対象を直線に沿って変位させるリニア型モータであってもよい。モータは、同期電動機であってもよいし、誘導電動機であってもよい。モータは、SPM(Surface Permanent Magnet)モータ、IPM(Interior Permanent Magnet)モータ等の永久磁石型の同期電動機であってもよい。モータは、シンクロナスリラクタンスモータ(synchronous reluctance motor)のような、永久磁石を有しない同期電動機であってもよい。モータはDCモータであってもよいしACモータであってもよい。
【0024】
ロボット3は、モータ制御装置2からの電力によって動作するロボット3の応答を検出する装置である少なくとも一つのセンサを備えてもよい。応答とは、ロボットを制御するための命令である指令に対する該ロボットの出力をいう。例えば、応答はロボット3の動作および状態の少なくとも一方に関する情報を示す。応答はモータの動作および状態の少なくとも一方に関する情報を示してもよい。モータが回転型である場合には、モータによる駆動対象の回転角度が「位置」に相当し、モータによる駆動対象の回転速度が「速度」に相当する。応答は駆動対象の動作および状態の少なくとも一方に関する情報を示してもよく、例えば、駆動対象の位置、速度、および力の少なくとも一つを示してもよい。センサは応答を示す応答信号をロボットコントローラ10に送信する。応答は、センサによって得られる値そのものでもよいし、所与の演算またはアルゴリズムによって算出または加工される値によって表されてもよい。センサの例として、モータの動作速度に比例した周波数のパルス信号を出力するロータリーエンコーダが挙げられる。ロータリーエンコーダはモータの位置および速度の両方を取得できる。
【0025】
エンドエフェクタ4は対象物に作用する機器である。例えば、エンドエフェクタ4は対象物をストック領域から指定領域に移動させたり、指定領域内の対象物の位置および姿勢の少なくとも一方を調整したりするために用いられる。エンドエフェクタ4の例としてグリッパ、吸着ハンド、スプーン、およびブラシが挙げられる。ロボット3に取り付けられるエンドエフェクタ4は、対象物の種類に応じて選択される。
【0026】
第1カメラ5はストック領域81を撮影する撮像装置である。一例では、第1カメラ5はストック領域81の平面視を撮影できるようにストック領域81の上方に設けられる。以下では、第1カメラ5によって得られる画像をストック領域画像という。第1カメラ5は撮影によって生成したストック領域画像をロボットコントローラ10に送信する。
【0027】
第2カメラ6は指定領域82を撮影する撮像装置である。一例では、第2カメラ6は指定領域82の平面視を撮影できるように指定領域82の上方に設けられる。以下では、第2カメラ6によって得られる画像を指定領域画像という。第2カメラ6は撮影によって生成した指定領域画像をロボットコントローラ10に送信する。
【0028】
ロボットコントローラ10は、ロボット3を動作させるための制御信号(指令)を出力する装置である。ロボットコントローラ10は本開示に係るロボット制御システムの一例である。図2はロボットコントローラ10の機能構成の一例を示す図である。この例では、ロボットコントローラ10は機能モジュールとして領域検出部11、候補検出部12、配置計画部13、シミュレーション評価部14、追加情報生成部15、反復制御部16、実配置評価部17、解析部18、調整情報生成部19、およびロボット制御部20を備える。
【0029】
領域検出部11は指定領域82の現在の状態を現在領域状態として検出する機能モジュールである。領域検出部11は第2カメラ6から得られる指定領域画像を処理して現在領域状態を検出する。
【0030】
候補検出部12はストック領域81内の複数の候補物(すなわち、候補物の集合)を検出する機能モジュールである。候補検出部12は第1カメラ5から得られるストック領域画像を処理して、ストック領域81内の複数の候補物を検出する。一例では、候補検出部12は予め学習された品質推論器を含み、この品質推論器を用いて個々の候補物の品質を判定する。
【0031】
配置計画部13は、少なくとも追加対象物が配置された指定領域82の状態を予想領域状態としてシミュレーションする機能モジュールである。配置計画部13は少なくとも現在領域状態に基づいてそのシミュレーションを実行して、追加対象物の配置を計画する。シミュレーションとは、何らかのシステムの挙動をコンピュータ上で模擬的に現し出す処理をいう。予想領域状態は現実の状態ではなく仮想の状態であり、実際に起こり得る指定領域82の将来の状態である。配置計画部13は少なくとも一つの予想領域状態をシミュレーションし、例えば複数の予想領域状態をシミュレーションする。
【0032】
シミュレーション評価部14は、配置計画部13によりシミュレーションされた複数の予想領域状態のそれぞれを評価する機能モジュールである。この評価結果は、複数の予想領域状態から一つを選択するために参照される。一例では、シミュレーション評価部14は予め学習された配置推論器を含み、この配置推論器を用いて個々の予想領域状態(すなわち、シミュレーションによって生成された指定領域82内の対象物の仮想の配置)を評価する。
【0033】
追加情報生成部15は、追加対象物に関する追加情報を予想領域状態に基づいて生成する機能モジュールである。予想領域状態は現在領域状態を反映するので、追加情報生成部15は現在領域状態に基づいて追加情報を生成する機能モジュールであるともいえる。追加情報はロボット3に追加対象物を指定領域82に配置させるための情報であり、後述するようにロボット制御部20によって参照される。
【0034】
反復制御部16は、指定領域82に既定量の対象物が配置されるように、指定領域82への追加対象物の配置を繰り返す機能モジュールである。一例では、反復制御部16はロボット3が一つの追加対象物を指定領域82に配置したことに応答して、次の追加対象物を配置するための一連の処理を、領域検出部11、候補検出部12、配置計画部13、シミュレーション評価部14、および追加情報生成部15から成るモジュール群に実行させる。
【0035】
実配置評価部17は、既定量の対象物が配置された指定領域82の現実の状態である最終状態を評価する機能モジュールである。この評価結果は既定量の対象物の配置を確定させるかまたは調整するかを判定するために参照される。一例では、実配置評価部17はシミュレーション評価部14と共通の配置推論器を含み、この配置推論器を用いて最終状態を評価する。
【0036】
解析部18は、実配置評価部17によって用いられた配置推論器の計算プロセスを解析して、この配置推論器による最終状態の評価の根拠を示す注目領域を抽出する機能モジュールである。この注目領域は、指定領域82内の既定量の対象物の配置を調整するために参照される。
【0037】
調整情報生成部19は、指定領域82の最終状態に基づいて、実配置評価部17による評価結果が上がるように、既定量の対象物の少なくとも一部の位置および姿勢の少なくとも一方を指定領域82内で変更させるための調整情報を生成する機能モジュールである。調整情報はロボット3にその変更を実行させるための情報であり、ロボット制御部20によって参照される。
【0038】
ロボット制御部20は追加情報または調整情報に基づいてロボット3を制御する機能モジュールである。ロボット制御部20は追加情報に基づいて、追加対象物を指定領域82内に配置させるようにロボット3を制御する。また、ロボット制御部20は調整情報に基づいて、既定量の対象物の少なくとも一部の位置および姿勢の少なくとも一方を指定領域82内で変更させるようにロボット3を制御する。
【0039】
図3は、ロボットコントローラ10のハードウェア構成の一例を示す図である。ロボットコントローラ10は回路190を備える。一例では、回路190は、少なくとも一つのプロセッサ191と、メモリ192と、ストレージ193と、少なくとも一つの通信ポート194とを備える。ストレージ193は不揮発性の記憶媒体であり、上記の各機能モジュールを実現するためのロボット制御プログラムを記憶する。ストレージ193は、例えば少なくとも一つのハードディスクまたは不揮発性メモリにより構成される。メモリ192は、ストレージ193からロードされたロボット制御プログラム、プロセッサ191による演算結果などを一時的に記憶する。メモリ192は例えば少なくとも一つのランダムアクセスメモリにより構成される。プロセッサ191は、メモリ192と協働してロボット制御プログラムを実行することで各機能モジュールを実現する。通信ポート194は、プロセッサ191からの指令に従って他の装置との間でデータ通信を行う。例えば、ロボットコントローラ10はモータ制御装置2、第1カメラ5、および第2カメラ6に対応して個々の通信ポート194を備える。
【0040】
ロボット制御プログラムは、ロボットコントローラ10の各機能モジュールを実現するためのコードを含む。プロセッサ191はロボット制御プログラムに従って通信ポート194を動作させ、メモリ192またはストレージ193におけるデータの読み出しおよび書き込みを実行する。
【0041】
ロボット制御プログラムは、CD-ROM、DVD-ROM、半導体メモリなどの非一時的な記録媒体に固定的に記録された上で提供されてもよい。あるいは、ロボット制御プログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。
【0042】
[推論器]
品質推論器および配置推論器はいずれも、所与の入力画像を受け付け、その入力画像の被写体に関する推定値を出力する計算モデルである。これらの推論器は、畳み込みニューラルネットワーク(CNN)などのニューラルネットワークによって構築される機械学習モデルであってもよく、この場合にはそれぞれの推論器は予め機械学習によって生成される。機械学習とは、与えられた情報に基づいて反復的に学習することで、法則またはルールを自律的に見つけ出す手法をいう。一例では、推論器はアルゴリズムおよびデータ構造を用いて構築される。機械学習によって生成された推論器は、最適であると推定される計算モデルであり、“現実に最適である計算モデル”とは限らないことに留意されたい。
【0043】
学習装置は、入力画像と推定値の正解との複数の組合せを示すトレーニングデータを用いて機械学習を実行して推論器を生成する。学習装置は入力画像を所与の機械学習モデルに入力し、その機械学習モデルから出力される推定値を得る。学習装置はその推定値と正解との誤差に基づくバックプロパゲーション(誤差逆伝播法)を実行して、機械学習モデル内のパラメータ群を更新する。学習装置は所与の終了条件を満たすまでこの学習を繰り返して推論器を得る。
【0044】
品質推論器を生成する一例では、少なくとも一つの対象物を映す対象物画像が入力画像として用意され、該少なくとも一つの対象物のそれぞれについて品質の評価値が正解として設定される。品質の評価値は、「良」および「不良」のような分類を示す値で表されてもよいし、所与の範囲の連続値(例えば0から1の間の値)で表されてもよい。品質の評価値は対象物の属性に基づいて設定され、例えば、対象物の形状、寸法、色のうちの少なくとも一つに基づいて設定されてもよい。
【0045】
配置推論器を生成する一例では、少なくとも一つの対象物が配置された指定領域を映す配置画像が入力画像として用意され、その配置の評価値が正解として設定される。本開示では、配置画像に映る指定領域の状態を配置後領域状態といって、ロボットコントローラ10によって取り扱われる現在領域状態および最終状態と区別する。一例では、配置後領域状態は、既定量の対象物が指定領域に配置された状態である。対象物の配置の評価値は、「良」および「不良」のような分類を示す値で表されてもよいし、所与の範囲の連続値(例えば0から1の間の値)で表されてもよい。配置の評価値は、配置のバランスに基づいて設定されてもよく、例えば、指定領域内の空き部分が小さくなるほど評価値が上がるように設定されてもよい。あるいは、配置の評価値は、指定領域内の対象物間の形状、寸法、または色のバランスに基づいて設定されてもよい。
【0046】
上述したように、生成された配置推論器はシミュレーション評価部14と実配置評価部17の双方で用いられてもよい。あるいは、シミュレーション評価部14の配置推論器と実配置評価部17の配置推論器とは、互いに独立した機械学習によって生成されてもよい。
【0047】
対象物画像および配置画像のいずれも、現実の対象物を映した現実の画像でもよいし、コンピュータによって人工的に生成された画像であってもよい。例えば、現実の画像の少なくとも一部がコンピュータによって加工されることで対象物画像または配置画像が生成されてもよい。一般に、機械学習のためには大量のトレーニングデータを準備する必要があるが、多数の画像を用意するのには多大な労力と時間を要する。対象物画像または配置画像を人工的に生成することで十分なトレーニングデータを効率良く用意できる。例えば、そのような人工的な画像は、GAN(Generative Adversarial Networks)モデル、レイトレーシング、フォトリアリスティックレンダリングなどの技術によって生成し得る。
【0048】
学習装置による品質推論器または配置推論器の生成は学習フェーズに相当し、品質推論器または配置推論器の利用は運用フェーズに相当する。推論器はコンピュータシステム間で移植可能である。したがって、ロボットコントローラ10は別のコンピュータシステムで生成された品質推論器または配置推論器を用いてもよい。学習装置はロボットシステム1またはロボットコントローラ10に組み込まれてもよい。
【0049】
[ロボット制御方法]
本開示に係るロボット制御方法の一例として、図4図6を参照しながら、ロボットシステム1(またはロボットコントローラ10)により実行される処理手順の一例を説明する。図4はロボットシステム1での処理の一例を処理フローS1として示すフローチャートである。すなわち、ロボットシステム1は処理フローS1を実行する。図5はシミュレーションによる配置計画の一例を示すフローチャートである。図6は指定領域82内の配置の最終検査の一例を示すフローチャートである。一例では、ロボットシステム1(またはロボットコントローラ10)は、ユーザまたは他のシステムから入力された既定量を必要に応じて参照しつつ処理フローS1を実行する。
【0050】
ステップS11では、領域検出部11が、現在の指定領域82を映す指定領域画像を第2カメラ6から取得する。この指定領域画像は静止画でもよいし、映像を構成する一つのフレーム画像でもよい。あるいは、指定領域画像はデプス画像でもよいし、RGB画像とデプス画像とのセットでもよい。
【0051】
ステップS12では、候補検出部12が、現在のストック領域81を映すストック領域画像を第1カメラ5から取得する。このストック領域画像は静止画でもよいし、映像を構成する一つのフレーム画像でもよい。あるいは、ストック領域画像はデプス画像でもよいし、RGB画像とデプス画像とのセットでもよい。
【0052】
ステップS13では、領域検出部11が指定領域画像に基づいて指定領域82の現在の状態を現在領域状態として検出する。領域検出部11は指定領域画像に対して画像解析を実行して現在領域状態を検出する。一例では、領域検出部11は、指定領域82内での個々の対象物の輪郭、位置、または姿勢と、指定領域82で空いている部分とのうちの少なくとも一方を現在領域状態として検出する。対象物の姿勢は、対象物の向きであるともいえる。一例では、領域検出部11は個々の対象物または空き部分を2次元または3次元の形状で認識する。
【0053】
ステップS14では、候補検出部12がストック領域画像に基づいてストック領域81内の複数の候補物を検出する。候補検出部12はストック領域画像に対して画像解析を実行して複数の候補物を検出する。質量によって管理される対象物を処理する場合には、候補検出部12はストック領域81において候補物が占める区画を追加対象物の量に基づいて分割して複数の被分割領域を仮想的に生成し、それぞれの被分割領域を候補物として検出してもよい。一例では、領域検出部11は個々の対象物を2次元または3次元の形状で認識する。
【0054】
一例では、候補検出部12はそれぞれの候補物について属性およびピッキングポイントを検出する。候補物の属性とは候補物の特徴または性質を示す情報であり、例えば、輪郭(すなわち、形状および大きさ)、色、品質、および質量のうちの少なくとも一つである。候補検出部12は色を複数の等級によって(例えば5段階の等級)によって表現してもよい。候補検出部12は品質推論器にストック領域画像を入力して、個々の候補物について品質の評価値を求めてもよい。候補検出部12は、候補物を映す画素の個数から該候補物の体積を推定し、予め設定された密度にその体積を乗じて該候補物の質量を予測してもよい。ピッキングポイントとは、候補物が追加対象物としてストック領域81から指定領域82に移される際にエンドエフェクタ4と接する該候補物の位置をいう。候補検出部12は候補物の重心に基づいてピッキングポイントを求めてもよい。あるいは、候補検出部12は、機械学習によって生成された所与の推論器(機械学習モデル)にストック領域画像を入力して、個々の候補物についてピッキングポイントを求めてもよい。候補検出部12はエンドエフェクタ4の可動範囲内に存在するピッキングポイントを検出してもよいし、エンドエフェクタ4と他の候補物との干渉を引き起こさないピッキングポイントを検出してもよい。
【0055】
ステップS15では、候補検出部12が、品質基準を満たさない候補物(すなわち不良物)を選択対象から除外する。候補検出部12は検出された複数の候補物のそれぞれについて、該候補物の品質が所定の品質基準を満たすか否かを判定する。候補検出部12は品質基準を満たさない候補物を、追加対象物として選択される対象から除外し、品質基準を満たす候補物を、追加対象物として選択される対象として維持する。
【0056】
図7は候補検出部12により実行される候補物の検出の一例を示す図であり、候補物90として唐揚げを示す。この図は、複数の候補物90を収容するストック領域81の平面視を映すストック領域画像を示すともいえる。候補検出部12はそれぞれの候補物90の輪郭を検出する。更に、候補検出部12は個々の候補物90の品質の評価値を品質推論器により算出して、候補物90の群を、品質基準を満たす候補物91と、品質基準を満たさない候補物92とに分け、候補物92を選択対象から除外する。図7の例では、候補物91は表面の全体が衣で覆われた唐揚げであり、候補物92は衣の一部が剥がれた唐揚げである。
【0057】
図4に戻って、ステップS16では、配置計画部13がシミュレーション評価部14と協働して、シミュレーションによる配置計画を実行する。図5を参照しながらそのシミュレーションを詳細に説明する。
【0058】
ステップS161では、配置計画部13が少なくとも一つの追加対象物を指定領域82内に仮想的に配置して予想領域状態を生成する。すなわち、配置計画部13は予想領域状態をシミュレーションする。配置計画部13はそのシミュレーションにおいて、指定領域82の現在領域状態とストック領域81内の候補物の集合とを仮想的に再現し、その再現された環境において予想領域状態を生成する。配置計画部13は候補物の集合から少なくとも一つの追加対象物を仮想的に選択し、現在領域状態にある指定領域82にその追加対象物を仮想的に配置する。配置計画部13は品質基準を満たす候補物を追加対象物として選択する。一例では、配置計画部13は指定領域82内の空き部分と、個々の候補物の属性(例えば輪郭または色)とのうちの少なくとも一つに基づいて、追加対象物を選択する。例えば、配置計画部13は指定領域82内で対象物同士が重ならないように、輪郭に基づいて追加対象物を選択してもよい。あるいは、配置計画部13は指定領域82内の1以上の対象物の色のバランスが所与の基準を満たすように(例えば、指定領域82内に複数の色の等級が存在するように)追加対象物を選択してもよい。
【0059】
一例では、配置計画部13は追加対象物を含む既定量の対象物が配置された指定領域82の状態を予想領域状態として生成する。このシミュレーションでは、配置計画部13は指定領域82が既定量の対象物を収容するまで追加対象物の配置を仮想的に繰り返し実行する。例えば、現在領域状態が空の指定領域82を示し、既定量が「5個」であるとする。この場合には、配置計画部13は5個の追加対象物をストック領域81から指定領域82に仮想的に配置して予想領域状態を生成する。別の例として、現在領域状態が3個の対象物を収容する指定領域82を示し、既定量が「5個」であるとする。この場合には、配置計画部13は2個の追加対象物をストック領域81から指定領域82に仮想的に配置して予想領域状態を生成する。
【0060】
ステップS162では、配置計画部13が、生成された予想領域状態に対応する全質量を予測する。この全質量は、既定量に相当する対象物の質量の合計値であり、既定量と異なり得る。例えば、配置計画部13は指定領域82内の1以上の対象物のそれぞれについて、該対象物を映す画素の個数から該対象物の体積を推定し、予め設定された密度にその体積を乗じて該対象物の質量を予測する。そして、配置計画部13は指定領域82内の1以上の対象物の全質量を求める。
【0061】
ステップS163では、シミュレーション評価部14が、生成された予想領域状態を配置推論器により評価する。この処理はシミュレーション結果の評価であるといえる。シミュレーション評価部14は予想領域状態(すなわち、指定領域82内に仮想的に配置された1以上の対象物)を示す画像を配置推論器に入力して、その予想領域状態の評価値を求める。
【0062】
ステップS164では、シミュレーション評価部14が、生成された予想領域状態における指定領域82内の対象物間の干渉度を算出する。干渉度とは、対象物同士がどのくらい重なり合うかを示す指標であり、例えば、指定領域82の平面視において対象物同士が重なり合う度合いを示す。干渉度は予想領域状態の評価の少なくとも一部であり得る。一例では、シミュレーション評価部14は、指定領域82内の個々の対象物の輪郭を検出または推定し、隣接する対象物間の干渉度を計算する。隣接する2個の対象物を例に取ると、指定領域82の平面視において双方の対象物の全体の輪郭が見える場合には干渉度は0であり、一方の対象物の輪郭の一部が他方の対象物の輪郭に隠れる場合には干渉度は0より大きい。シミュレーション評価部14は指定領域82の全体における干渉度を算出する。例えば、シミュレーション評価部14は重なりによって隠れている対象物の部分の面積の合計値(これを総重畳面積という)を干渉度として算出してもよい。あるいは、シミュレーション評価部14は指定領域82の面積に対する総重畳面積の割合を干渉度として算出してもよい。
【0063】
ステップS165では、配置計画部13が新たな予想領域状態の生成を終了するか否かを判定する。新たな予想領域状態を生成する場合には(ステップS165においてYES)、ステップS161~S164の処理が繰り返される。すなわち、配置計画部13は一つの現在領域状態に対して複数の予想領域状態をシミュレーションし、シミュレーション評価部14は該複数の予想領域状態のそれぞれを評価する。
【0064】
新たな予想領域状態の生成を終了する場合には(ステップS165においてNO)、処理はステップS166に進む。例えば、配置計画部13は、所定の個数の予想領域状態を生成したことに応答して予想領域状態の生成を終了してもよい。
【0065】
ステップS166では配置計画部13が複数の予想領域状態から一つを選択する。一例では、配置計画部13は評価値、干渉度、および全質量のうちの少なくとも一つに基づいて一つの予想領域状態を選択する。例えば、配置計画部13は、評価値が高くなるほど高くなる評価スコアと、干渉度が低くなるほど高くなる干渉スコアと、全質量と既定量との差が小さいほど高くなる質量スコアとを求め、これら三つのスコアの合計値が最も高い予想領域状態を選択してもよい。あるいは、配置計画部13はその三つのスコアのうちの任意の二つの合計値が最も高い予想領域状態を選択してもよい。あるいは、配置計画部13は、評価値がいちばん高い予想領域状態、干渉度が最も低い予想領域状態、または全質量が既定量に最も近い予想領域状態を選択してもよい。
【0066】
図4に戻って、ステップS17では、追加情報生成部15が、配置計画によって得られた、現在領域状態を反映する予想領域状態に基づいて、追加対象物に関する追加情報を生成する。追加情報生成部15は選択された一つの予想領域状態に基づいて追加情報を生成する。追加情報生成部15はその予想領域状態における少なくとも一つの追加対象物のうちの一つを選択し、その追加対象物を現実のストック領域81内の複数の候補物から選択する。追加情報生成部15は、現実の指定領域82における、選択された追加対象物の位置および姿勢の少なくとも一方を決定する。例えば、追加情報生成部15は予想領域状態における追加対象物の位置および姿勢を、現実の指定領域82における追加対象物の位置および姿勢として採用する。一例では、追加情報生成部15は、選択された追加対象物と、現実のストック領域81での該追加対象物のピッキングポイントと、現実の指定領域82での該追加対象物の位置または姿勢とを示す追加情報を生成する。
【0067】
ステップS18では、ロボット制御部20が追加情報に基づいてロボット3を制御して、該ロボット3に追加対象物を指定領域82に配置させる。ロボット制御部20は、選択された追加対象物を現実のストック領域81から現実の指定領域82に配置するためのロボット3またはエンドエフェクタ4の軌道であるパスを、追加情報および現在領域状態に基づいて生成する。そのパスは、ストック領域81内の追加対象物の位置から、指定領域82内の予定配置位置までの区間を含む。ロボット制御部20はその区間においてロボット3またはエンドエフェクタ4が障害物と干渉しないようにパスを生成する。障害物の例として、ストック領域81を規定する物体(例えば番重)と、指定領域82を規定する物体(例えばパック)と、指定領域82内に既に位置する対象物とが挙げられる。ロボット制御部20は生成されたパスに沿ってロボット3またはエンドエフェクタ4を動作させるための一連の制御信号を生成し、その制御信号をモータ制御装置2に順次出力する。モータ制御装置2は、モータを動かすための電力を制御信号に基づいて順次生成し、その電力をモータに順次供給する。この結果、ロボット3は選択された追加対象物を現実のストック領域81から取り出して、その追加対象物を現実の指定領域82に所定の位置または姿勢に従って配置する。
【0068】
図8は指定領域への追加対象物の配置の一例を示す図である。この例では、追加情報生成部15は配置計画によって選択された予想領域状態に基づいて、現実のストック領域81にある候補物90の集合のうちの一つを追加対象物93(指定領域82に配置する5個目の対象物)として選択する。追加情報生成部15は指定領域82における追加対象物93の位置および姿勢を決定する。図8の例では、予想領域状態は指定領域82の右上部分が空いていることを示す現在領域状態に基づいて生成され、追加情報生成部15はその空き部分に追加対象物93を位置付ける。追加情報生成部15は追加対象物93に関する追加情報を生成し、ロボット制御部20はその追加情報に基づいてロボット3を制御し、ロボット3は追加対象物93をストック領域81から指定領域82に配置する。図8に示す矢印は追加対象物93の移動を概念的に示すものであり、ロボット3またはエンドエフェクタ4のパスとは限らないに点に留意されたい。
【0069】
図4に戻って、ステップS19では、反復制御部16が指定領域82に別の対象物を追加するか否かを判定する。一例では、反復制御部16は、指定領域82内の1以上の対象物の総量と既定量との差を推定し、その差が所定の閾値以上であれば(すなわち、指定領域82内の対象物の総量が不足しているならば)、別の対象物を追加すると判定する。その差が閾値未満であれば、反復制御部16は対象物の追加を終了すると判定する。
【0070】
別の対象物を追加する場合には(ステップS19においてYES)、ステップS11~S18の処理が繰り返される。すなわち、反復制御部16はロボット3により追加対象物が指定領域82に配置されるたびに、領域検出部11、候補検出部12、配置計画部13、シミュレーション評価部14、および追加情報生成部15から成る機能モジュール群にステップS11~S18の処理を実行させる。
【0071】
その繰り返し処理では、領域検出部11は新たな指定領域画像を第2カメラ6から取得し(ステップS11)、候補検出部12は新たなストック領域画像を第1カメラ5から取得する(ステップS12)。領域検出部11は新たな指定領域画像に基づいて指定領域82の現在の状態を現在領域状態として検出する(ステップS13)。この現在領域状態は、ステップS18において追加対象物が配置された指定領域82を示す。
【0072】
候補検出部12は新たなストック領域画像に基づいてストック領域81内の複数の候補物を検出し(ステップS14)、品質基準を満たさない候補物を選択対象から除外する(ステップS15)。ステップS18において一つの候補物がストック領域81から取り出されたことに伴って、前のステップS14では撮影されなかった候補物がストック領域画像に映ったり、ストック領域81内の少なくとも一つの候補物の位置または姿勢が変わったりする可能性がある。ステップS14,S15を繰り返すことで、ストック領域81の現在の状況を検出して候補物を適切に選択することが可能になる。
【0073】
配置計画部13はシミュレーション評価部14と協働して、シミュレーションによる配置計画を実行する(ステップS16)。配置計画部13は複数の予想領域状態を生成し、シミュレーション評価部14はそれぞれの予想領域状態を評価し、配置計画部13はその評価に基づいて複数の予想領域状態から一つを選択する。ここで選択される予想領域状態は、前の配置計画で選択された予想領域状態と同じかもしれないし違うかもしれない。選択される予想領域状態が前の配置計画から変わり得る原因として、ストック領域81内の少なくとも一つの候補物の位置または姿勢が変わったり、指定領域82内の少なくとも一つの対象物の位置または姿勢が変わったりすることが挙げられる。追加情報生成部15は配置計画によって得られた予想領域状態に基づいて、指定領域82に次に追加しようとする追加対象物に関する次の追加情報を生成する(ステップS17)。ロボット制御部20はその追加情報に基づいて、次の追加対象物を指定領域82に配置させるようにロボット3を制御する(ステップS18)。
【0074】
対象物の追加を終了する場合には(ステップS19においてYES)、処理はステップS20に進む。ステップS20では、反復制御部16が実配置評価部17に所定のイベント信号を出力し、実配置評価部17がそのイベント信号に応答して指定領域82内の配置の最終検査を実行する。図6を参照しながらその最終検査を詳細に説明する。
【0075】
ステップS201では、実配置評価部17が指定領域82の最終状態を配置推論器により評価する。この処理は、既定量の対象物の実配置の評価であるといえる。一例では、実配置評価部17は、その最終状態を映した指定領域画像を第2カメラ6から取得する。この指定領域画像は指定領域82の現在の状態を映すので、指定領域82の最終状態は現在領域状態であるともいえる。実配置評価部17はその指定領域画像を配置推論器に入力して最終状態の評価値を求める。
【0076】
ステップS202では、解析部18がその評価における配置推論器の計算プロセスを解析して、該配置推論器による評価の根拠を示す注目領域を抽出する。一例では、解析部18は、指定領域82内において、最終状態の評価値を下げる原因になった不適箇所を注目領域として抽出する。不適箇所の例として、空き部分と、対象物同士が重なり合う部分とが挙げられる。
【0077】
ニューラルネットワークを含む推論器の計算プロセスを解析する場合には、解析部18はClass Activation Mapping(CAM)を用いて注目領域を抽出してもよい。CAMは、特徴マップと、Global Average Pooling(GAP)から被検出クラスへのエッジに対応する重みとに基づいて、ニューラルネットワークによる判断の根拠を特定する手法である。解析部18はGrad-CAM(Gradient-weighted CAM)を用いてもよい。Grad-CAMは、CAMの計算で用いられる重みを逆伝播時の勾配で代用する手法であり、これにより、様々な種類のニューラルネットワークにおいて判断の根拠を特定できる。解析部18はGrad-CAM++、Score-CAM、Ablation-CAM、Eigen-CAM、またはIntegrated Grad-CAMを用いてもよい。
【0078】
ステップS203では、実配置評価部17が配置を調整するか否かを判定する。一例では、実配置評価部17は配置推論器から出力された評価値が「不良」である場合には配置を調整すると判定し、その評価値が「良」である場合には配置を調整しないと判定する。あるいは、実配置評価部17は配置推論器から出力された評価値が所与の閾値未満である場合には配置を調整すると判定し、その評価値がその閾値以上である場合には配置を調整しないと判定してもよい。一例では、配置を調整すると判定される場合には、指定領域82に占める注目領域の割合が相対的に大きくなる。
【0079】
配置を調整する場合には(ステップS203においてYES)、処理はステップS204に進む。ステップS204では、調整情報生成部19が配置を調整するための調整情報を生成する。調整情報は、実配置評価部17が配置推論器を用いて実行する評価の結果(すなわち評価値)を上げることを目的として生成され、例えば、指定領域82内で既定量の対象物をよりバランスよく配置するために用いられる。
【0080】
一例では、調整情報生成部19は注目領域に対応する部分領域を指定領域82から特定する。調整情報生成部19は注目領域と一致する部分領域を特定してもよいし、注目領域およびその周縁部を部分領域として特定してもよいし、注目領域の一部を部分領域として特定してもよい。いずれにしても、部分領域は指定領域82内の現実の領域である。
【0081】
調整情報生成部19はその部分領域の位置に少なくとも基づいて調整情報を生成する。一例では、注目領域および部分領域は対象物が位置していない空き部分を示し、調整情報生成部19は、既定量の対象物の一部をその空き部分に位置させるための調整情報を生成する。例えば、調整情報生成部19は部分領域に隣接する一つの対象物を選択し、その対象物の少なくとも一部が部分領域に入るように該対象物の位置および姿勢の少なくとも一方を設定する。別の例では、注目領域および部分領域は二つの対象物が重なり合う部分を示し、調整情報生成部19は、その重なりを解消するかまたは減らすための調整情報を生成する。例えば、調整情報生成部19は重なり合う二つの対象物の一方を選択し、その対象物が他方の対象物から離れるように該一方の対象物の位置および姿勢の少なくとも一方を設定する。一例では、調整情報生成部19は、選択された対象物と、現実の指定領域82での該対象物のピッキングポイントと、設定された該対象物の位置または姿勢とを示す追加情報を生成する。
【0082】
ステップS205では、ロボット制御部20が調整情報に基づいてロボット3を制御して、該ロボット3に選択された対象物の位置または姿勢を変更させる。ロボット制御部20は、選択された対象物の現在の位置または姿勢を、設定された位置または姿勢に変更するためのロボット3またはエンドエフェクタ4のパスを、調整情報および現在領域状態に基づいて生成する。そのパスは、その対象物についての現在の位置から設定された位置までの区間を含む。ロボット制御部20はその区間においてロボット3またはエンドエフェクタ4が障害物(例えば、指定領域82を規定する物体、および他の対象物)と干渉しないようにパスを生成する。ロボット制御部20は生成されたパスに沿ってロボット3またはエンドエフェクタ4を動作させるための一連の制御信号を生成し、その制御信号をモータ制御装置2に順次出力する。モータ制御装置2は、モータを動かすための電力を制御信号に基づいて順次生成し、その電力をモータに順次供給する。この結果、ロボット3は選択された対象物の位置および姿勢の少なくとも一方を現実の指定領域82内で変更する。例えば、ロボット3はその対象物の少なくとも一部が部分領域に入るように該対象物を動かす。別の例では、ロボット3は隣接する二つの対象物間の重なりが減るように一方の対象物を動かす。
【0083】
ステップS205の後に処理はステップS201に戻り、ステップS201~S203の処理が再び実行される。実配置評価部17は、既定量の対象物の少なくとも一部の配置が調整された指定領域82の現在領域状態(すなわち、変更された最終状態)を配置推論器により評価する(ステップS201)。解析部18はその評価における配置推論器の計算プロセスを解析して注目領域を抽出する(ステップS202)。実配置評価部17は指定領域82内の配置を更に調整するか否かを判定する(ステップS203)。
【0084】
配置を調整しない場合には(ステップS203においてNO)、処理はステップS206に進む。ステップS206では実配置評価部17が指定領域82内の配置を確定する。この結果、ロボットシステム1(またはロボットコントローラ10)は一つの指定領域82についての処理を終了する。既定量の対象物を収容する指定領域82は自動的にまたは人手により作業空間から他の所定の場所に移される。
【0085】
ロボットシステム1は処理フローS1を繰り返し実行し得る。例えば対象物が食品であり指定領域82がパックである場合には、ロボットシステム1は空のパックに既定量の食品を配置する処理を繰り返し実行し得る。この繰り返し処理によって、既定量の食品を収容するパックが最終製品または中間品として得られる。
【0086】
図9は指定領域82の最終状態の二つの例を示す図である。いずれの例でも、対象物は唐揚げであり、最終状態は5個の唐揚げが指定領域82に配置された状態である。したがって、既定量の対象物は5個の唐揚げである。最終状態301では5個の対象物95は指定領域82の全体にわたってバランス良く配置されており、この場合には実配置評価部17は配置を調整しないと判定する。一方、最終状態302では指定領域82の右下部分が比較的大きく空いている。この場合には、実配置評価部17は配置を調整すると判定し、解析部18はその右下部分を注目領域として抽出する。調整情報生成部19はその注目領域に対応する部分領域(例えばその右下部分)を指定領域82から特定し、少なくとも一つの対象物95をその部分領域に向けて動かすための調整情報を生成する。
【0087】
[効果]
以上説明したように、本開示の一側面に係るロボット制御システムは、少なくとも一つの対象物が配置される指定領域の現在の状態を現在領域状態として検出する領域検出部と、現在領域状態に基づいて、指定領域に追加する追加対象物に関する追加情報を生成する生成部と、追加情報に基づいて、追加対象物を指定領域内に配置させるようにロボットを制御するロボット制御部とを備える。
【0088】
本開示の一側面に係るロボット制御方法は、少なくとも一つのプロセッサを備えるロボット制御システムによって実行されるロボット制御方法であって、少なくとも一つの対象物が配置される指定領域の現在の状態を現在領域状態として検出するステップと、現在領域状態に基づいて、指定領域に追加する追加対象物に関する追加情報を生成するステップと、追加情報に基づいて、追加対象物を指定領域内に配置させるようにロボットを制御するステップとを含む。
【0089】
本開示の一側面に係るロボット制御プログラムは、少なくとも一つの対象物が配置される指定領域の現在の状態を現在領域状態として検出するステップと、現在領域状態に基づいて、指定領域に追加する追加対象物に関する追加情報を生成するステップと、追加情報に基づいて、追加対象物を指定領域内に配置させるようにロボットを制御するステップとをコンピュータに実行させる。
【0090】
このような側面においては、指定領域の現在の状態に基づいて追加対象物がその指定領域に配置されるので、適切な対象物を指定領域に適切に配置できる。一例では、指定領域内の空き部分の形状、体積、または面積を考慮して、その空き部分に配置するのが適当であると見込まれる対象物を追加対象物として配置できる。別の例では、不定形の対象物を適切に配置したり、判断基準が曖昧な作業を自動化したりすることが可能になる。
【0091】
他の側面に係るロボット制御システムでは、少なくとも現在領域状態に基づいて、少なくとも追加対象物が配置された指定領域の状態を予想領域状態としてシミュレーションする計画部を更に備え、生成部は、予想領域状態に基づいて追加情報を生成してもよい。対象物が追加された指定領域の状態がシミュレーションにより予想領域状態として予測され、その予測に基づいて追加情報が生成される。このようなシミュレーションを導入することで、適切な追加対象物をより精度良く判定して、その追加対象物を指定領域内に配置できる。
【0092】
他の側面に係るロボット制御システムでは、計画部によりシミュレーションされた複数の予想領域状態のそれぞれを評価する評価部を更に備え、計画部は、評価部による評価結果に基づいて一つの予想領域状態を選択し、生成部は、選択された一つの予想領域状態に基づいて追加情報を生成してもよい。複数の予想領域状態のそれぞれを評価することで、客観的に適切であると見込まれる追加対象物をより精度良く判定できる。
【0093】
他の側面に係るロボット制御システムでは、評価部は、少なくとも一つの対象物が指定領域に配置された状態である複数の配置後領域状態に基づいて予め学習された推論器を用いて、複数の予想領域状態のそれぞれを評価してもよい。この場合には、人の感性を推論器に反映させることができ、ひいては、人の感性に基づく作業をロボットに実現させることが可能になる。したがって、人手による作業と同じように追加対象物を自動的に配置できる。
【0094】
他の側面に係るロボット制御システムでは、計画部は、予想領域状態として、追加対象物を含む既定量の対象物が配置された指定領域の状態をシミュレーションしてもよい。指定領域の最終状態の予想に基づいて追加情報が生成されるので、既定量の対象物を指定領域内に適切に配置することが可能になる。すなわち、指定領域の適切な最終状態を提供できる。例えば、パックに食品を適切に盛り付けることができる。
【0095】
他の側面に係るロボット制御システムでは、計画部は、追加対象物の質量を予測し、該質量に基づいて予想領域状態をシミュレーションしてもよい。追加対象物の質量を予測することで、予想領域状態をより詳細にシミュレーションできる。その結果、より確実に、既定量の対象物を指定領域内に配置できる。
【0096】
他の側面に係るロボット制御システムでは、生成部は、現在領域状態に基づいて、指定領域内における追加対象物の位置および姿勢の少なくとも一方を決定し、決定された位置および決定された姿勢の少なくとも一方を示す追加情報を生成してもよい。指定領域での追加対象物の位置または姿勢が現在領域状態に基づいて決定されるので、追加対象物を指定領域により適切に配置できる。例えば、追加対象物を見栄え良く指定領域に置くことができる。
【0097】
他の側面に係るロボット制御システムでは、追加対象物の候補となる複数の候補物を検出する候補検出部を更に備え、生成部は、複数の候補物に基づいて追加対象物を選択し、選択された追加対象物を示す追加情報を生成してもよい。検出された複数の候補物に基づいて追加対象物が選択されるので、適切な追加対象物を指定領域に配置できる。
【0098】
他の側面に係るロボット制御システムは、候補検出部は、複数の候補物のそれぞれについて、該候補物の品質が所定の品質基準を満たすか否かを判定し、品質基準を満たさない候補物を、生成部による選択の対象から除外してもよい。この構成により、指定領域に配置される対象物の品質を保証することが可能になる。
【0099】
他の側面に係るロボット制御システムでは、指定領域に既定量の対象物が配置されるように、指定領域への追加対象物の配置を繰り返す反復制御部を更に備え、反復制御部は、ロボットにより追加対象物が配置されるたびに、領域検出部に現在領域状態を検出させ、生成部に、指定領域に追加する次の追加対象物に関する次の追加情報を生成させ、ロボット制御部に、次の追加対象物を指定領域内に配置させるようにロボットを制御させてもよい。この構成により、或る追加対象物が指定領域に配置されたことに応答して、すなわち、指定領域の最新の状態に基づいて、別の追加対象物を指定領域に適切に配置できる。
【0100】
他の側面に係るロボット制御システムでは、評価部は、既定量の対象物が配置された指定領域の状態である最終状態を更に評価してもよい。予想領域状態の評価に加えて、既定量の対象物が配置された後の指定領域の状態(すなわち最終状態)も更に評価することで、対象物の配置を二重に確認できる。加えて、この2種類の評価を実行する評価部を用意することで、ロボット制御システムの構成を簡単化できる。
【0101】
他の側面に係るロボット制御システムでは、評価部による評価結果が上がるように、最終状態に基づいて、既定量の対象物の少なくとも一部の位置および姿勢の少なくとも一方を指定領域内で変更させるための調整情報を生成する調整部を更に備え、ロボット制御部は、調整情報に基づいてロボットを制御してもよい。最終状態の評価の結果に応じて指定領域内の対象物の位置または姿勢が自動的に調整されるので、指定領域内の対象物の配置をより適切にすることができる。
【0102】
他の側面に係るロボット制御システムでは、評価部による評価において用いられた推論器の計算プロセスを解析して、該推論器による最終状態の評価の根拠を示す注目領域を抽出する解析部を更に備え、調整部は、注目領域に対応する部分領域を指定領域から特定し、部分領域の位置に少なくとも基づいて調整情報を生成してもよい。この構成により、調整されるべき対象物を適切に選択すると共に、その対象物をより適切に調整することができる。
【0103】
[変形例]
以上、本開示の実施形態に基づいて詳細に説明した。しかし、本開示は上記の例に限定されるものではない。本開示は、その要旨を逸脱しない範囲で様々な変形が可能である。
【0104】
一例では、シミュレーション評価部14および実配置評価部17は共通の配置推論器を用いて指定領域82内の状態を評価する。この場合、これら二つの機能モジュールの違いは、配置推論器に入力される画像が、予想領域状態(仮想の配置)を映すか、それとも実配置を映すかという点であるといえる。したがって、これら二つの機能モジュールは一つの評価部として統合されてもよい。
【0105】
本開示に係るロボット制御システムはロボットコントローラ以外のコンピュータシステムまたは装置に適用されてもよい。例えば、ロボット制御システムは、1以上のロボットコントローラを統括的に管理する上位コントローラに適用されてもよい。
【0106】
ロボット制御システムのハードウェア構成は、プログラムの実行により各機能モジュールを実現する態様に限定されない。例えば、上述した機能モジュール群の少なくとも一部は、その機能に特化した論理回路により構成されていてもよいし、該論理回路を集積したASIC(Application Specific Integrated Circuit)により構成されてもよい。
【0107】
少なくとも一つのプロセッサにより実行される方法の処理手順は上記の例に限定されない。例えば、上述したステップまたは処理の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの2以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【0108】
ステップS15において、候補検出部12はロボット制御部20と協調して、品質基準を満たさない候補物を不良物としてストック領域81から物理的に取り除いてもよい。一例では、候補検出部12は不良物のピッキングポイントを検出し、その不良物およびピッキングポイントを示す除去情報を生成する。ロボット制御部20はその除去情報に基づいてロボット3を制御して、該ロボット3にその不良物をストック領域81外の別の場所に移動させる。当然ながら不良物の移動先は指定領域82とは異なる場所である。不良物を物理的に除去することで、その不良物によって隠れていた別の候補物が露出して候補検出部12によって検出され得る。その結果、追加対象物の選択肢を増やせる可能性がある。
【0109】
既定量の対象物が配置された指定領域82を示す予想領域状態を得るためのステップS16は、一つの指定領域82に既定量の対象物を配置する間に、すなわち、1回の処理フローS1の間に、1回だけ実行されてもよい。この場合には、ロボットシステム1(またはロボットコントローラ10)は最初に選択された予想領域状態に基づいて、それぞれの追加対象物について追加情報を順次生成し、追加対象物を指定領域82に順次配置する。
【0110】
ステップS161において、配置計画部13は一つの追加対象物が配置された指定領域82の状態を予想領域状態として生成してもよい。この予想領域状態は、既定量の対象物を収容した指定領域82(すなわち指定領域82の最終状態)を示すかもしれないし、最終状態に至る前の途中の状態であるかもしれない。例えば、現在領域状態が2個の対象物を収容する指定領域82を示し、既定量が「5個」であるとする。この場合には、配置計画部13は1個の追加対象物をストック領域81から指定領域82に仮想的に配置して、3個の対象物を収容した指定領域82を示す予想領域状態を生成する。
【0111】
ロボット制御システムは、シミュレーションによる配置計画(ステップS16)を実行することなく、現在領域状態に基づいて追加情報を生成し、その追加情報に基づいてロボットを制御してもよい。ロボット制御システムは配置の最終検査(ステップS20)を実行しなくてもよい。
【0112】
ステップS205,S206において、調整情報生成部19は指定領域82内で少なくとも一つの対象物を入れ替えるための調整情報を生成し、ロボット制御部20はその調整情報に基づいて、指定領域82とストック領域81との間で対象物を入れ替えてもよい。
【0113】
ステップS20において、ステップS202~S207が省略され、実配置評価部17が指定領域82の最終状態の評価結果を表示装置上に表示してもよい。したがって、解析部18および調整情報生成部19は省略されてよい。例えば、実配置評価部17はその評価結果をテキスト、コンピュータグラフィック(CG)などの表現形式で表示する。この場合には、ユーザがその評価結果を参照して指定領域82内の既定量の対象物の配置を調整してもよい。
【0114】
コンピュータシステムまたはコンピュータ内で二つの数値の大小関係を比較する際には、「以上」および「よりも大きい」という二つの基準のどちらを用いてもよく、「以下」および「未満」という二つの基準のうちのどちらを用いてもよい。
【符号の説明】
【0115】
1…ロボットシステム、2…モータ制御装置、3…ロボット、4…エンドエフェクタ、5…第1カメラ、6…第2カメラ、10…ロボットコントローラ(ロボット制御システム)、11…領域検出部、12…候補検出部、13…配置計画部、14…シミュレーション評価部、15…追加情報生成部、16…反復制御部、17…実配置評価部、18…解析部、19…調整情報生成部、20…ロボット制御部、81…ストック領域、82…指定領域、90…候補物、93…追加対象物、95…対象物。
【要約】
ロボット制御システムは、少なくとも一つの対象物が配置される指定領域の現在の状態を現在領域状態として検出する領域検出部と、現在領域状態に基づいて、指定領域に追加する追加対象物に関する追加情報を生成する生成部と、追加情報に基づいて、追加対象物を指定領域内に配置させるようにロボットを制御するロボット制御部とを備える。
図1
図2
図3
図4
図5
図6
図7
図8
図9