(57)【要約】  ロボットが選択するための１つ又は複数の候補対象物を識別する方法及びコンピューティングシステム。１つ又は複数の候補対象物までの経路は、少なくとも一部には、ロボット環境と、少なくとも１つのロボット拘束に基づいて特定されてよい。１つ又は複数の候補対象物のうちの第一の候補対象物を把持する実現可能性の妥当性が確認されてよい。実現可能性の妥当性が確認されると、ロボットはその第一の候補対象物を物理的に選択するように制御される。実現可能性の妥当性が確認されない場合、第一の候補対象物の異なる把持地点、第二の経路、又は第二の候補対象物の少なくとも１つが選択されてよい。
2021528259.tif 000002
【特許請求の範囲】
【請求項１】
ロボットビンピッキングの方法であって、
ロボットが選択するための１つ又は複数の候補対象物を識別するステップと、
前記１つ又は複数の候補対象物までの経路を、少なくとも部分的に、ロボット環境及び少なくとも１つのロボット制約に基づいて決定するステップと、
前記１つ又は複数の候補対象物のうちの第一の候補対象物の把持の実現可能性の妥当性を確認するステップと、
前記実現可能性の妥当性が確認された場合、前記第一の候補対象物を物理的に選択するように前記ロボットを制御するステップと、
前記実現可能性の妥当性が確認されない場合、前記第一の候補対象物の異なる把持地点、第二の経路、又は第二の候補対象物のうちの少なくとも１つを選択するステップと
を含む方法。
【請求項２】
妥当性を確認するステップは、ロボットの運動学モデルを使用するステップを含む、請求項１に記載の方法。
【請求項３】
前記経路は、実現可能経路又は最適経路の少なくとも一方である、請求項１に記載の方法。
【請求項４】
前記経路は、少なくとも部分的に、前記ロボットを制御しながらリアルタイムで決定される、請求項１に記載の方法。
【請求項５】
前記経路を決定するステップは、
前記候補対象物に隣接する少なくとも１つの物体の１つ又は複数の表面に関する情報を使用するステップと、
前記候補対象物に隣接する前記少なくとも１つの物体との衝突を回避するステップと
を含む、請求項１に記載の方法。
【請求項６】
前記ロボット又は前記１つ若しくは複数の候補対象物の少なくとも一方をグラフィカルユーザインタフェースに表示するステップをさらに含み、
前記グラフィカルユーザインタフェースにより、ユーザは前記ロボット、経路決定、シミュレーション、ワークセル定義、性能パラメータ仕様、又はセンサ構成のうちの少なくとも１つを視覚化し、又は制御できる、請求項１に記載の方法。
【請求項７】
前記グラフィカルユーザインタフェースにより、プログラムと前記プログラムに関連付けられるデバッグプロセスの同時生成が可能となる、請求項６に記載の方法。
【請求項８】
前記グラフィカルユーザインタフェースは、ティーチペンダント、ハンドヘルド機器、パーソナルコンピュータ、又は前記ロボットのうちの１つ又は複数に関連付けられる、請求項６に記載の方法。
【請求項９】
スキャナを用いた１つ又は複数の静的及び動的物体を含む環境の画像を提供するステップをさらに含み、
前記ロボットは、前記画像を受信し、前記画像を使用して前記環境を学習し、前記経路及び衝突回避を決定するように構成される、請求項１に記載の方法。
【請求項１０】
前記ロボットを制御するステップは、
前記第一の候補対象物の第二のスキャンを実行するステップと、
前記第一の候補対象物を、一定の精度要求の固定位置を有する設置標的まで移動させるステップと、
前記第一の候補対象物を操作するステップと、
前記第一の候補対象物を前記精度要求に従って前記設置標的まで送達するステップと
を含む、請求項１に記載の方法。
【請求項１１】
前記ロボットを制御するステップは、前記第一の候補対象物上の１つ又は複数のフィーチャを最大限に利用して前記第一の候補対象物の位置を精密に特定するべく、前記第一の候補対象物をスキャナに提示するステップを含む、請求項１に記載の方法。
【請求項１２】
前記ロボットを制御するステップは、前記第一の候補対象物を、物理的選択が成功する可能性を最大限にする方法で位置特定及びピックするステップを含む、請求項１に記載の方法。
【請求項１３】
前記第二のスキャンは、前記スキャナの最大分解能エリアにおいて行われる、請求項１０に記載の方法。
【請求項１４】
前記１つ又は複数の候補対象物までの経路を決定するステップは、少なくとも部分的に、ロボットリンケージ又はロボットジョイントの限度の少なくとも一方に基づく、請求項１に記載の方法。
【請求項１５】
前記１つ又は複数の候補対象物以外の非選択コンポーネント及び非選択表面のすべてにわたるシュリンクラップ可視化を前記グラフィカルユーザインタフェースに表示するステップをさらに含む、請求項６に記載の方法。
【請求項１６】
識別するステップ、決定するステップ、妥当性を確認するステップ、又は制御するステップの少なくとも１つは、一次プロセッサと少なくとも１つのコプロセッサのうちの少なくとも１つを使って実行される、請求項１に記載の方法。
【請求項１７】
前記１つ又は複数の候補対象物までの経路を決定するステップは、少なくとも部分的に、大域的経路計画及び局所的経路計画の少なくとも一方に基づく、請求項１に記載の方法。
【請求項１８】
第一の候補対象物を把持する実現可能性の妥当性を確認するステップは、ユーザプログラムに関連付けられる条件付きロジックを分析するステップを含む、請求項１に記載の方法。
【請求項１９】
第一の候補対象物を把持する実現可能性の妥当性を確認するステップは、すべての経路代替案の妥当性を確認するステップ、特定の経路代替案の妥当性を確認するステップ、何れかの経路代替案の妥当性を確認するステップ、１つ若しくは複数の例外経路の妥当性を確認するステップ、１つ若しくは複数の区間を妥当性確認から除外するステップ、又は前記経路の複数の区間の並行妥当性確認を行うステップ、のうちの少なくとも１つを含む、請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１８年６月２６日に出願された米国仮特許出願第６２／６９０，１８６号の利益を主張するものであり、同仮出願の全内容のすべてを参照によって本願に援用する。
【０００２】
本発明は一般に、ロボット工学に関し、より詳しくはロボットビンピッキングのためのシステムと方法に関する。
【背景技術】
【０００３】
ビン（容器）から一度に１つのワークを取り出して機械の中に移すこと、バルク部品の分別、及び注文履行といった特定の形態の手作業は、多大な労働力を要する。これらの仕事は、ワーク又は作業が重い、尖った部分がある、又はそれ以外に危害の及ぶ可能性のある場合には危険であることが多い。これらの問題に対処する試みとして、ビンピッキングロボットによるこのような冗漫な仕事への取り組みがなされている。しかしながら、ロボットビンピッキングは、求められる正確度と精度のレベルが、多くの場合、システムの能力を超えるため、マスタするのに特に困難なタスクである。
【発明の概要】
【０００４】
１つの実施例において、ロボットが選択するための１つ又は複数の候補対象物を識別するための方法。１つ又は複数の候補対象物までの経路は、少なくとも一部に、ロボット環境及び少なくとも１つのロボット制約に基づいて特定されてよい。１つ又は複数の候補対象物のうちの第一の候補対象物の把持の実現可能性の妥当性が確認されてよい。実現可能性の妥当性が確認されると、ロボットは、第一の候補対象物を物理的に選択するように制御されてよい。実現可能性の妥当性が確認されない場合、第一の候補対象物の異なる把持地点、第二の経路、又は第二の候補対象物のうちの少なくとも１つが選択されてよい。
【０００５】
以下の特徴のうちの１つ又は複数が含まれていてよい。妥当性を確認するステップは、ロボットの運動学モデルを使用するステップを含んでいてよい。経路は、実現可能経路又は最適経路の少なくとも一方であってよい。経路は、ロボットを制御しながらリアルタイムで特定されてよい。経路を特定するステップは、候補対象物に隣接する少なくとも１つの物体の１つ又は複数の表面に関する情報を使用するステップと、候補対象物に隣接するその少なくとも１つの物体との衝突を回避するステップを含んでいてよい。ロボット又は１つ若しくは複数の候補対象物の少なくとも一方は、グラフィカルユーザインタフェースに表示されてよい。グラフィカルユーザインタフェースにより、ユーザはロボット、経路特定、シミュレーション、ワークセル定義、性能パラメータの明示、又はセンサ構成のうちの少なくとも１つを視覚化し、又は制御することができてよい。グラフィカルユーザインタフェースにより、プログラムとプログラムに関連付けられるデバッグプロセスの同時生成が可能となってよい。グラフィカルユーザインタフェースは、ティーチペンダント、ハンドヘルド機器、パーソナルコンピュータ、又はロボットのうちの１つ又は複数に関連付けられてよい。スキャナを用いた１つ又は複数の静的及び動的対象物を含む環境の画像が提供されてよく、ロボットは、画像を受信し、画像を使用して環境を学習し、経路及び衝突回避を特定するように構成される。ロボットを制御するステップは、第一の候補対象物の第二のスキャンを実行するステップ、第一の候補対象物を、ある精度要求の固定位置を有する設置標的まで移動させるステップ、第一の候補対象物を操作するステップ、及び第一の候補対象物をその精度要求に従って設置標的まで送達するステップを含んでいてよい。ロボットを制御するステップは、第一の候補対象物をスキャナに提示して、第一の候補対象物上の１つ又は複数のフィーチャを最大限に利用して、第一の候補対象物の位置を精密に特定するステップを含んでいてよい。ロボットを制御するステップは、第一の候補対象物を、物理的選択が成功する可能性を最大化するような方法で位置特定し、ピックするステップを含んでいてよい。第二のスキャンは、スキャナの最大分解能エリアにおいて行われてよい。１つ又は複数の候補対象物までの経路を特定するステップは、少なくとも一部に、ロボットリンケージ又はロボットジョイントの限度の少なくとも一方に基づいていてよい。１つ又は複数の候補対象物以外の非選択コンポーネント及び非選択表面のすべてにわたるシュリンクラップ可視化が、グラフィカルユーザインタフェースに表示されてよい。識別するステップ、特定するステップ、妥当性を確認するステップ、又は制御するステップの少なくとも１つは、一次プロセッサと少なくとも１つのコプロセッサのうちの少なくとも１つを使って実行されてよい。１つ又は複数の候補対象物までの経路を特定するステップは、少なくとも一部に、大域的経路計画及と局所的経路計画の少なくとも一方に基づいていてよい。第一の候補対象物を把持する実現可能性の妥当性を確認するステップは、ユーザプログラムに関連付けられる条件付きロジックを分析するステップを含んでいてよい。第一の候補対象物を把持する実現可能性の妥当性を確認するステップは、すべての経路代替案の妥当性を確認するステップ、特定の経路代替案の妥当性を確認するステップ、何れかの経路代替案の妥当性を確認するステップ、１つ若しくは複数の例外経路の妥当性を確認するステップ、１つ又は複数の区間を妥当性確認から除外するステップ、又は経路の複数の区間の並行妥当性確認を行うステップ、のうちの少なくとも１つを含んでいてよい。
【０００６】
他の実施例において、プロセッサ及びメモリを含むコンピューティングシステムは、ロボットが選択するための１つ又は複数の候補対象物を識別するステップを含む動作を実行するように構成される。１つ又は複数の候補対象物までの経路は、少なくとも一部に、ロボット環境及び少なくとも１つのロボット拘束に基づいて特定されてよい。１つ又は複数の候補対象物のうちの第一の候補対象物を把持する実現可能性の妥当性が確認されてよい。実現可能性の妥当性が確認されると、ロボットは、第一の候補対象物を物理的に選択するように構成されてよい。実現可能性の妥当性が確認されない場合、第一の対象物の異なる把持地点、第二の経路、又は第二の候補対象物のうちの少なくとも１つが選択されてよい。
【０００７】
以下の特徴のうちの１つ又は複数が含まれていてよい。妥当性を確認するステップは、ロボットの運動学モデルを使用するステップを含んでいてよい。経路は、実現可能経路又は最適経路の少なくとも一方であってよい。経路は、ロボットを制御しながらリアルタイムで特定されてよい。経路を特定するステップは、候補対象物に隣接する少なくとも１つの物体の１つ又は複数の表面に関する情報を使用するステップと、候補対象物に隣接するその少なくとも１つの物体との衝突を回避するステップを含んでいてよい。ロボット又は１つ若しくは複数の候補対象物の少なくとも一方は、グラフィカルユーザインタフェースに表示されてよい。グラフィカルユーザインタフェースにより、ユーザはロボット、経路特定、シミュレーション、ワークセル定義、性能パラメータの明示、又はセンサ構成のうちの少なくとも１つを視覚化し、又は制御することができてよい。グラフィカルユーザインタフェースにより、プログラムとプログラムに関連付けられるデバッグプロセスの同時生成が可能となってよい。グラフィカルユーザインタフェースは、ティーチペンダント、ハンドヘルド機器、パーソナルコンピュータ、又はロボットのうちの１つ又は複数に関連付けられてよい。スキャナを用いた１つ又は複数の静的及び動的対象物を含む環境の画像が提供されてよく、ロボットは、画像を受信し、画像を使用して環境を学習し、経路及び衝突回避を特定するように構成される。ロボットを制御するステップは、第一の候補対象物の第二のスキャンを実行するステップ、第一の候補対象物を、ある精度要求の固定位置を有する設置標的まで移動させるステップ、第一の候補対象物を操作するステップ、及び第一の候補対象物をその精度要求に従って設置ターゲットまで送達するステップを含んでいてよい。ロボットを制御するステップは、第一の候補対象物をスキャナに提示して、第一の候補対象物上の１つ又は複数のフィーチャを最大限に利用して、第一の候補対象物の位置を精密に特定するステップを含んでいてよい。ロボットを制御するステップは、第一の候補対象物を、物理的選択が成功する可能性を最大限にするような方法で位置特定し、ピックするステップを含んでいてよい。第二のスキャンは、スキャナの最大分解能エリアにおいて行われてよい。１つ又は複数の候補対象物までの経路を特定するステップは、少なくとも一部に、ロボットリンケージ又はロボットジョイントの限度の少なくとも一方に基づいていてよい。１つ又は複数の候補対象物以外の非選択コンポーネント及び非選択表面のすべてにわたるシュリンクラップ可視化が、グラフィカルユーザインタフェースに表示されてよい。識別するステップ、特定するステップ、妥当性を確認するステップ、又は制御するステップの少なくとも１つは、一次プロセッサと少なくとも１つのコプロセッサのうちの少なくとも１つを使って実行されてよい。１つ又は複数の候補対象物までの経路を特定するステップは、少なくとも一部に、大域的経路計画及び局所的経路計画の少なくとも一方に基づいていてよい。第一の候補対象物を把持する実現可能性の妥当性を確認するステップは、ユーザプログラムに関連付けられる条件付きロジックを分析するステップを含んでいてよい。第一の候補対象物を把持する実現可能性の妥当性を確認するステップは、すべての経路代替案の妥当性を確認するステップ、特定の経路代替案の妥当性を確認するステップ、何れかの経路代替案の妥当性を確認するステップ、１つ若しくは複数の例外経路の妥当性を確認するステップ、１つ又は複数の区間を妥当性確認から除外するステップ、又は経路の複数の区間の並行妥当性確認を行うステップ、のうちの少なくとも１つを含んでいてよい。
【０００８】
１つ又は複数の実施例の詳細は、添付の図面及び以下の説明に示される。その他の特徴と利点も、説明、図面、及び特許請求の範囲から明らかとなるであろう。
【０００９】
添付の図面は本開示の実施形態をさらに理解できるようにするために含められ、本明細書の一部に組み込まれ、それを構成しており、本開示の実施形態を例示し、説明と共に本開示の実施形態の原理を説明する役割を果たす。
【図面の簡単な説明】
【００１０】
【図１】分散型コンピューティングネットワークに連結されたロボットビンピッキングプロセスの線図である。
【図２】図１のロボットビンピッキングプロセスの１つの実施例のフローチャートである。
【図３】本開示の実施形態による、ＵＲのＲｅａｌ−Ｔｉｍｅ  Ｄａｔａ  Ｅｘｃｈａｎｇｅインタフェースを用いた、コプロセッサ上のすべてのモジュールとＥｔｈｅｒｎｅｔ（登録商標）接続によるＵＲコントローラとのインタフェースを実行するように構成されたビンピッキングシステムである。
【図４】本開示の実施形態によるビンピッキングシステムの配置図を示すインタフェースである。
【図５】本開示の実施形態によるビンピッキングシステムに適合する実施形態を示すインタフェースである。
【図６】本開示の実施形態によるビンピッキングプロセスに適合するグラフィカルユーザインタフェースを示すインタフェースである。
【図７】本開示の実施形態によるビンピッキングプロセスに適合するグラフィカルユーザインタフェースである。
【図８】本開示の実施形態によるビンピッキングプロセスに適合するグラフィカルユーザインタフェースである。
【図９】本開示の実施形態によるプログラムテンプレートを生成するグラフィカルユーザインタフェースである。
【図１０】本開示の実施形態によるプログラムテンプレートを生成するグラフィカルユーザインタフェースである。
【図１１】本開示の実施形態によるプログラムテンプレートを生成するグラフィカルユーザインタフェースである。
【図１２】本開示の実施形態によるＥＯＡＴの構成を可能にするグラフィカルユーザインタフェースである。
【図１３】本開示の実施形態によるツール衝突形状の構成を可能にするグラフィカルユーザインタフェースである。
【図１４】本開示の実施形態によるビン構成を可能にするグラフィカルユーザインタフェースである。
【図１５】本開示の実施形態によるビン位置合わせを可能にするグラフィカルユーザインタフェースである。
【図１６】本開示によるビン衝突形状の構成を可能にするグラフィカルユーザインタフェースである。
【図１７】本開示の実施形態によるワークの構成とワークモデルのロードを可能にするグラフィカルユーザインタフェースである。
【図１８】本開示の実施形態によるワーク衝突形状の構成を可能にするグラフィカルユーザインタフェースである。
【図１９】本開示の実施形態によるワーク検出の妥当性確認を可能にするグラフィカルユーザインタフェースである。
【図２０】本開示の実施形態による再スキャン位置の構成を可能にするグラフィカルユーザインタフェースである。
【図２１】本開示の実施形態による把持ヒエラルキ及び／又は把持選択メトリクスの構成を可能にするグラフィカルユーザインタフェースである。
【図２２】本開示の実施形態による把持ヒエラルキ及び／又は把持選択メトリクスの構成を可能にするグラフィカルユーザインタフェースである。
【図２３】本開示の実施形態による把持の追加及び／又は配置を可能にするグラフィカルユーザインタフェースである。
【図２４】本開示の実施形態による把持及び設置の訓練を可能にするグラフィカルユーザインタフェースである。
【図２５】本開示の実施形態による設置位置及びオフセットの訓練を可能にするグラフィカルユーザインタフェースである。
【図２６】本開示の実施形態による設置位置及びオフセットの訓練を可能にするグラフィカルユーザインタフェースである。
【図２７】本開示の実施形態によるグラブ及びリリースシーケンスの構成を可能にするグラフィカルユーザインタフェースである。
【図２８】本開示の実施形態によるシステム動作を可能にするグラフィカルユーザインタフェースである。
【図２９】本開示の実施形態による、ユーザがＵＳＢドライブ又はその他の適当なデバイスからのビンピッキングＵＲＣａｐをインストールすることを可能にするグラフィカルユーザインタフェースである。
【図３０】本開示の実施形態による、ユーザが環境を構成することを可能にするグラフィカルユーザインタフェースである。
【図３１】本開示の実施形態による、ユーザがセンサを構成することを可能にするグラフィカルユーザインタフェースである。
【図３２】本開示の実施形態による、ユーザがセンサを位置合わせすることを可能にするグラフィカルユーザインタフェースである。
【図３３】本開示の実施形態による、ユーザがセンサを位置合わせすることを可能にするグラフィカルユーザインタフェースである。
【図３４】本開示の実施形態による、ユーザがセンサを位置合わせすることを可能にするグラフィカルユーザインタフェースである。
【図３５】本開示の実施形態による、ユーザがセンサを位置合わせすることを可能にするグラフィカルユーザインタフェースである。
【図３６】本開示の実施形態による、ユーザがビンピッキングプログラムを作ることを可能にするグラフィカルユーザインタフェースである。
【図３７】本開示の実施形態による、プログラムテンプレートを生成するオプションを示すグラフィカルユーザインタフェースである。
【図３８】本開示の実施形態による、ユーザにとって利用可能であってよいオプションの例を示すグラフィカルユーザインタフェースである。
【図３９】本開示の実施形態による、把持メトリクスを設定するための１つのアプローチを示すグラフィカルユーザインタフェースである。
【図４０】本開示の実施形態による、ＲＲＴノードを設定することを可能にする例示的なグラフィカルユーザインタフェースを示すグラフィカルユーザインタフェースである。
【図４１】本開示の実施形態による、ユーザが原位置を設定することを可能にするグラフィカルユーザインタフェースである。
【図４２】本開示の実施形態による、ユーザがツールを構成することを可能にするグラフィカルユーザインタフェースである。
【図４３】本開示の実施形態による、ユーザがビンを位置合わせすることを可能にするグラフィカルユーザインタフェースである。
【図４４】本開示の実施形態による、ユーザがビンを位置合わせすることを可能にするグラフィカルユーザインタフェースである。
【図４５】本開示の実施形態による、ユーザがビン衝突形状を構成することを可能にするグラフィカルユーザインタフェースである。
【図４６】本開示の実施形態による、ユーザが部品テンプレートの妥当性を確認することを可能にするグラフィカルユーザインタフェースである。
【図４７】本開示の実施形態による、ユーザが再スキャン位置を構成することを可能にするグラフィカルユーザインタフェースである。
【図４８】本開示の実施形態による、ユーザが把持を追加することを可能にするグラフィカルユーザインタフェースである。
【図４９】本開示の実施形態による、ユーザが把持及び設置を訓練することを可能にするグラフィカルユーザインタフェースである。
【図５０】本開示の実施形態による、ユーザがピックを訓練することを可能にするグラフィカルユーザインタフェースである。
【図５１】本開示の実施形態による、ユーザがＥＯＡＴ信号を構成することを可能にするグラフィカルユーザインタフェースである。
【図５２】本開示の実施形態による、ユーザがシステムを動作させることを可能にするグラフィカルユーザインタフェースである。
【図５３】本開示の実施形態による、ユーザが追加のノードを作ることを可能にするグラフィカルユーザインタフェースである。
【図５４】本開示の実施形態に適合するインストレーション、プログラム構成、及びビンピッキング動作の例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
本開示の実施形態は、ロボットビンピッキングのためのシステム及び方法に関する。したがって、本明細書に含められるビンピッキング方法によれば、ロボットがスキャニングシステムと協働して、ビン内の部品を識別し、部品をビンからピックし、ピックされた部品を指定された場所に設置することを可能にし得る。
【００１２】
本願の実施形態は、米国特許第６，７５７，５８７号明細書、米国特許第７，６８０，３００号明細書、米国特許第８，３０１，４２１号明細書、米国特許第８，４０８，９１８号明細書、米国特許第８，４２８，７８１号明細書、米国特許第９，３５７，７０８号明細書、米国特許出願公開第２０１５／０１９９４５８号明細書、米国特許出願公開第２０１６／０３２１３８１号明細書、米国特許出願公開第２０１８／００６０４５９号明細書の概念を含み得、各々の全内容のすべてを参照によって本願に援用する。
【００１３】
ここで、図１を参照すると、ネットワーク（例えば、ネットワーク１４）（例えば、インターネット又はローカルエリアネットワーク）に接続されてよいコンピューティングデバイス１２の上にあってよい、又はそれによって実行されてよいロボットビンピッキングプロセス１０が示されている。コンピューティングデバイス１２（及び／又は後述のクライアント電子機器のうちの１つ又は複数）の例としては、パーソナルコンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、サーバコンピュータ、一連のサーバコンピュータ、メインフレームコンピュータ、又はコンピューティングクラウドが含まれていてよいが、これらに限定されない。コンピューティングデバイス１２はオペレーティングシステムを実行してよく、これは例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）、Ｍａｃ（登録商標）ＯＳ  Ｘ（登録商標）、Ｒｅｄ  Ｈａｔ（登録商標）、Ｌｉｎｕｘ（登録商標）、又はカスタムオペレーティングシステムであるが、これらに限定されない。（Ｍｉｃｒｏｓｏｆｔ及びＷｉｎｄｏｗｓは米国、外国、又はそれら両方におけるＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標であり、Ｍａｃ及びＯＳ  Ｘは米国、外国、又はそれら両方におけるＡｐｐｌｅ  Ｉｎｃ．の登録商標であり、Ｒｅｄ  Ｈａｔは、米国、外国、又はそれら両方におけるＲｅｄ  Ｈａｔ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標であり、Ｌｉｎｕｘは米国、外国、又はそれら両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの登録商標である）。
【００１４】
後でより詳しく述べるように、図１のロボットビンピッキングプロセス１０等のロボットビンピッキングプロセスは、ロボットにより選択されるための１つ又は複数の候補対象物を識別してよい。１つ又は複数の候補対象物までの経路は、少なくとも一部に、ロボット環境及び少なくとも１つのロボット拘束に基づいて特定されてよい。１つ又は複数の候補対象物のうちの第一の候補対象物を把持する実現可能性の妥当性が確認されてよい。実現可能性の妥当性が確認されると、ロボットは、第一の候補対象物を物理的に選択するように制御されてよい。実現可能性の妥当性が確認されないと、第一の候補対象物の異なる把持地点、第二の経路、又は第二の候補対象物のうちの少なくとも１つが選択されてよい。
【００１５】
ロボットビンピッキングプロセス１０の命令群及びサブルーチンは、コンピューティングデバイス１２に連結された記憶装置１６上に記憶されていてよく、コンピューティングデバイス１２に含まれる１つ又は複数のプロセッサ（図示せず）及び１つ又は複数のメモリアーキテクチャ（図示せず）により実行されてよい。記憶装置１６としては、ハードディスクドライブ、フラッシュドライブ、テープドライブ、光ドライブ、ＲＡＩＤアレイ、ランダムアクセスメモリ（ＲＡＭ）、及びリードオンリメモリ（ＲＯＭ）が含まれてよいが、これらに限定されない。
【００１６】
ネットワーク１４は、１つ又は複数の第二のネットワーク（例えば、ネットワーク１８）に接続されてよく、その例としては、例えばローカルエリアネットワーク、ワイドエリアネットワーク、又はイントラネットが含まれていてよいが、これらに限定されない。
【００１７】
ロボットビンピッキングプロセス１０は、クライアントアプリケーション２２、２４、２６、２８、６６を介してアクセスされるアプレット／アプリケーションとインタフェースするスタンドアロンアプリケーションであってよい。幾つかの実施形態において、ロボットビンピッキングプロセス１０は、全体的又は部分的に、クラウドコンピューティングトポロジに分散されてよい。このようにして、コンピューティングデバイス１２及び記憶装置１６とは複数のデバイスを指してよく、これらもまた、ネットワーク１４及び／又はネットワーク１８全体を通じて分散されてよい。
【００１８】
コンピューティングデバイス１２はロボット制御アプリケーション（例えば、ロボット制御アプリケーション２０）を実行してよく、その例としては、マサチューセッツ州ケンブリッジのＥｎｅｒｇｉｄ  ＴｅｃｈｎｏｌｏｇｉｅｓのＡｃｔｉｎ（登録商標）Ｓｏｆｔｗａｒｅ  Ｄｅｖｅｌｏｐｍｅｎｔ  Ｋｉｔ及びその他のあらゆるビンピッキングアプリケーション又はソフトウェアが含まれていてよいが、これらに限定されない。ロボットビンピッキングプロセス１０及び／又はロボット制御アプリケーション２０には、クライアントアプリケーション２２、２４、２６、２８、６８を介してアクセスしてよい。ロボットビンピッキングプロセス１０は、スタンドアロンアプリケーションであってよく、又はロボット制御アプリケーション２０、ロボット制御アプリケーション２０のコンポーネント、及び／又はクライアントアプリケーション２２、２４、２６、２８、６８のうちの１つ又は複数と相互作用する、及び／又はその中で実行されてよいアプレット／アプリケーション／スクリプト／拡張機能であってよい。ロボット制御アプリケーション２０は、スタンドアロンアプリケーションであってよく、又はロボットビンピッキングプロセス１０、ロボットビンピッキングプロセス１０のコンポーネント、及び／又はクライアントアプリケーション２２、２４、２６、２８、６８のうちの１つ又は複数と相互作用し、及び／又はその中で実行されてよいアプレット／アプリケーション／スクリプト／拡張機能であってよい。クライアントアプリケーション２２、２４、２６、２８、６８のうちの１つ又は複数は、スタンドアロンアプリケーションであってよく、又はロボットビンピッキングプロセス１０及び／又はロボット制御アプリケーション２０のコンポーネントと相互作用し、及び／又はその中で実行されてよいアプレット／アプリケーション／スクリプト／拡張機能であってよい。クライアントアプリケーション２２、２４、２６、２８、６８の例としては、１つ又は複数のデータベース、サーバ、クラウドストレージサーバ等からコンテンツを検索するためのクエリを受けるアプリケーション、テキスト及び／又はグラフィカルユーザインタフェース、カスタマイズされたウェブブラウザ、プラグイン、アプリケーションプログラミングインタフェース（ＡＰＩ）、又はカスタムアプリケーションが含まれていてよいが、これらに限定されない。クライアントアプリケーション２２、２４、２６、２８、６８の、クライアント電子機器３８、４０、４２、４４に連結された記憶装置３０、３２、３４、３６に記憶されていてよい命令群及びサブルーチンは、１つ又は複数のプロセッサ（図示せず）及び、クライアント電子機器３８、４０、４２、４４に組み込まれた１つ又は複数のメモリアーキテクチャ（図示せず）によって実行されてよい。
【００１９】
記憶装置３０、３２、３４、３６としては、ハードディスクドライブ、フラッシュドライブ、テープドライブ、光ドライブ、ＲＡＩＤアレイ、ランダムアクセスメモリ（ＲＡＭ）、及びリードオンリメモリ（ＲＯＭ）が含まれていてよいが、これらに限定されない。クライアント電子機器３８、４０、４２、４４（及び／又はコンピューティングデバイス１２）の例としては、パーソナルコンピュータ（例えば、クライアント電子機器３８）、ラップトップコンピュータ（例えば、クライアント電子機器４０）、スマート／データイネーブル携帯電話（例えば、クライアント電子機器４２）、ノートブックコンピュータ（例えば、クライアント電子機器４４）、タブレット（図示せず）、サーバ（図示せず）、テレビ（図示せず）、スマートテレビ（図示せず）、メディア（例えば、動画、写真等）撮影機器（図示せず）、及び専用ネットワークデバイス（図示せず）が含まれていてよいが、これらに限定されない。クライアント電子機器３８、４０、４２、４４の各々は、オペレーティングシステムを実行してよく、その例としては、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）、Ｍａｃ（登録商標）ＯＳ  Ｘ（登録商標）、Ｒｅｄ  Ｈａｔ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）Ｍｏｂｉｌｅ、Ｃｈｒｏｍｅ  ＯＳ、Ｂｌａｃｋｂｅｒｒｙ  ＯＳ、Ｆｉｒｅ  ＯＳ、又はカスタムオペレーティングシステムが含まれていてよいが、これらに限定されない。
【００２０】
クライアントアプリケーション２２、２４、２６、２８、６８のうちの１つ又は複数は、ロボットビンピッキングプロセス１０の機能の幾つか又は全部を実行するように構成されてよい（及びその逆でもよい）。したがって、ロボットビンピッキングプロセス１０は、純粋なサーバ側アプリケーション、純粋なクライアント側アプリケーション、又はクライアントアプリケーション２２、２４、２６、２８、６８のうちの１つ又は複数及び／又はロボットビンピッキングプロセス１０により協働して実行されるサーバ側／クライアント側ハイブリッドアプリケーションであってよい。
【００２１】
クライアントアプリケーション２２、２４、２６、２８、６８のうちの１つ又は複数は、ロボット制御アプリケーション２０の機能の幾つか又は全部を実行するように構成されてよい（及びその逆でもよい）。したがって、ロボット制御アプリケーション２０は、純粋なサーバ側アプリケーション、純粋なクライアント側アプリケーション、又はクライアントアプリケーション２２、２４、２６、２８、６８のうちの１つ又は複数及び／又はロボット制御アプリケーション２０により協働して実行されるサーバ側／クライアント側ハイブリッドアプリケーションであってよい。クライアントアプリケーション２２、２４、２６、２８、６８のうちの１つ又は複数、ロボットビンピッキングプロセス１０、及びロボット制御アプリケーション２０は、単独でも何れかの組合せによっても、同じ機能の幾つか又は全部を実行してよいため、クライアントアプリケーション２２、２４、２６、２８、６８のうちの１つ又は複数、ロボットビンピッキングプロセス１０、ロボット制御アプリケーション２０、又はそれらの組合せを介したこれらの機能の実行に関する何れの説明も、及びクライアントアプリケーション２２、２４、２６、２８、６８のうちの１つ又は複数、ロボットビンピッキングプロセス１０、ロボット制御アプリケーション２０、又はそれらの組合せの間の、このような機能を実行するための説明された何れの相互作用も、本開示の範囲を限定するものではなく例として解釈されるべきである。
【００２２】
ユーザ４６、４８、５０、５２は、コンピューティングデバイス１２及びロボットビンピッキングプロセス１０に（例えば、クライアント電子機器３８、４０、４２、４４のうちの１つ又は複数を使用して）直接、又はネットワーク１４を通じて、若しくは第二のネットワーク１８を通じて間接にアクセスしてよい。さらに、コンピューティングデバイス１２は、第二のネットワーク１８を通じてネットワーク１４に接続されてもよく、これは破線の結合線５４により示されている。ロボットビンピッキングプロセス１０は、１つ又は複数のユーザインタフェース、例えばブラウザ及びテキスト又はグラフィカルユーザインタフェースを含んでいてよく、これを通じてユーザ４６、４８、５０、５２は、ロボットビンピッキングプロセス１０にアクセスしてよい。
【００２３】
各種のクライアント電子機器は、直接又は間接にネットワーク１４（又はネットワーク１８）に連結されてよい。例えば、クライアント電子機器３８は、ハードワイヤネットワーク接続を介してネットワーク１４に直接連結されるように示されている。さらに、クライアント電子機器４４は、ハードワイヤネットワーク接続を介してネットワーク１８に直接連結されるように示されている。クライアント電子機器４０は、クライアント電子機器４０と、ネットワーク１４に直接連結されるように示されている無線アクセスポイント（すなわち、ＷＡＰ）５８との間で確立された無線通信チャネル５６を介してネットワーク１４に無線連結されるように示されている。ＷＡＰ  ５８は、例えばＩＥＥＥ  ８００．１１ａ、８００．１１ｂ、８００．１１ｇ、Ｗｉ−Ｆｉ（登録商標）、及び／又はＢｌｕｅｔｏｏｔｈ（商標）（Ｂｌｕｅｔｏｏｔｈ（商標）Ｌｏｗ  Ｅｎｅｒｇｙを含む）デバイスであってよく、これらはクライアント電子機器４０とＷＡＰ  ５８との間に無線通信チャネル５６を確立することができる。クライアント電子機器４２は、クライアント電子機器４２と、ネットワーク１４に直接連結されるように示されている携帯電話／ブリッジ６２との間に確立される無線通信チャネル６０を介してネットワーク１４に無線連結されるように示されている。幾つかの実施例において、ロボットシステム６４は、クライアント電子機器４２と、ネットワーク１４に直接連結されるように示されているセルラネットワーク／ブリッジ６２との間に確立される無線通信チャネル６６を介してネットワーク１４に無線連結されてよい。記憶装置７０は、ロボットシステム６４に連結されてよく、これにはハードディスクドライブ、フラッシュドライブ、テープドライブ、光ドライブ、ＲＡＩＤアレイ、ランダムアクセスメモリ（ＲＡＭ）、及びリードオンリメモリ（ＲＯＭ）が含まれていてよいが、これらに限定されない。ユーザ７２は、コンピューティングデバイス１２及びロボットビンピッキングプロセス１０に（例えば、ロボットシステム６４を使って）、直接又は、ネットワーク１４を通じて、若しくは第二のネットワーク１８を通じて間接にアクセスしてよい。
【００２４】
ＩＥＥＥ  ８００．１１ｘ標準の幾つか又は全部は、Ｅｔｈｅｒｎｅｔ（登録商標）プロトコル及び搬送波感知多重アクセス／衝突回避方式（すなわち、ＣＳＭＡ／ＣＡ：ｃａｒｒｉｅｒ  ｓｅｎｓｅ  ｍｕｌｔｉｐｌｅ  ａｃｃｅｓｓ  ｗｉｔｈ  ｃｏｌｌｉｓｉｏｎ  ａｖｏｉｄａｎｃｅ）を経路共有のために使用してよい。各種の８００．１１ｘ標準は、例えば位相シフトキーイング（すなわち、ＰＳＫ：ｐｈａｓｅ−ｓｈｉｆｔ  ｋｅｙｉｎｇ）変調又は相補コードキーイング（すなわち、ＣＣＫ：ｃｏｍｐｌｅｍｅｎｔａｒｙ  ｃｏｄｅ  ｋｅｙｉｎｇ）変調を使用してよい。Ｂｌｕｅｔｏｏｔｈ（登録商標）（Ｂｌｕｅｔｏｏｔｈ（登録商標）Ｌｏｗ  Ｅｎｅｒｇｙを含む）は、例えばモバイルフォン、コンピュータ、スマートフォン、及びその他の電子機器が短距離無線接続を使って相互に接続できるようにする、電気通信業界の標準である。その他の形態の相互通信（例えば、近距離無線通信（ＮＦＣ：Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ））も使用されてよい。
【００２５】
図２〜５４も参照すると、幾つかの実施形態において、ロボットビンピッキングプロセス１０は一般に、ロボットが選択するための１つ又は複数の候補対象物を識別するステップ２００を含んでいてよい。１つ又は複数の候補対象物までの経路は、少なくとも一部に、ロボット環境及び少なくとも１つのロボット制約に基づいて特定されてよい２０２。１つ又は複数の候補対象物のうちの第一の候補対象物を把持する実現可能性の妥当性が確認されてよい２０４。実現可能性の妥当性が確認されると、ロボットは第一の候補対象物を物理的に選択するように制御されてよい２０６。実現可能性の妥当性が確認されない場合、第一の候補対象物の異なる把持地点、第二の経路、又は第二の候補対象物のうちの少なくとも１つが選択されてよい２０８。
【００２６】
本明細書で使用されるかぎり、「Ａｃｔｉｎビューワ」という用語は、グラフィカルユーザインタフェースを指してよい。「Ａｃｔｉｎ」は、ロボット制御ソフトウェアを指してよく、「ＵＲ」は「Ｕｎｉｖｅｒｓａｌ  Ｒｏｂｏｔｓ」を指してよい。これらの特定の会社及び製品の何れの使用も、例として提供されているにすぎない。そのため、何れの適当なグラフィカルユーザインタフェース、ロボット制御ソフトウェア、及び機器／モジュールも使用されてもよく、これも本開示の範囲から逸脱しない。
【００２７】
幾つかの実施形態において、ビンピッキングシステム（例えば、ビンピッキングシステム６４）は、ロボットアーム（例えば、Ｕｎｉｖｅｒｓａｌ  Ｒｏｂｏｔｓから入手可能なＵｎｉｖｅｒｓａｌ  Ｒｏｂｏｔｓ  ＵＲ５等）、コントローラ、グリッパ、センサ、及びコプロセッサ（例えば、認識及びタスク計画からの計算コストの高い動作を実行するため）を含んでいてよい。しかしながら、ビンピッキングシステムは、本開示の範囲内で、追加のコンポーネントを含んでいてよく、及び／又はこれらの例示的なコンポーネントの１つ又は複数を省いてもよいと理解されたい。
【００２８】
幾つかの実施形態において、図３も参照すると、ビンピッキングシステム（例えば、ビンピッキングシステム６４）は、コプロセッサのすべてのモジュール及びＵＲからのＲｅａｌ−Ｔｉｍｅ  Ｄａｔａ  Ｅｘｃｈａｎｇｅインタフェースを使って、例えばＥｔｈｅｒｎｅｔ（登録商標）接続によるＵＲコントローラとのインタフェースを実行するように構成されてよい。ソフトウェアアプリケーションは、Ｅｎｅｒｇｉｄ  Ｔｅｃｈｎｏｌｏｇｉｅｓから入手可能な「Ａｃｔｉｎ  Ｖｉｅｗｅｒ」等の１つ又は複数のグラフィカルユーザインタフェースのためのカスタムプラグインから作成されてよい。幾つかの実施形態において、センサは、何れの適当なセンサ（例えば、３Ｄセンサ）であってもよい。幾つかの実施形態において、ビンピッキングシステム（例えば、ビンピッキングシステム６４）は、少なくとも１つのコプロセッサ上の幾つかのモジュール及びＵＲコントローラ上の幾つかのモジュールを実行するように構成されてよい。幾つかの実施形態において、すべてのモジュールがＵＲコントローラ上で実行されてよい。
【００２９】
幾つかの実施形態において、コプロセッサはコアプロセッサとグラフィクスカードを含んでいてよい。オペレーティングシステムとコンパイラは、何れの適当なタイプのものであってもよい。コプロセッサは、複数の外部インタフェース（例えば、ＵＲコントローラとのＥｔｈｅｒｎｅｔ（登録商標）、カメラとのＵＳＢ３．０、プロジェクタとのＨＤＭＩ（登録商標）等）を含んでいてよい。これらの特定の機器とシステムのほか、本文書中に記載されているその他のものは、例として提供されているにすぎない。
【００３０】
幾つかの実施形態において、Ｕｎｉｖｅｒｓａｌ  Ｒｏｂｏｔｓ  ＵＲ５がビンピッキングシステム６４内で利用されてよい。コントローラは、改良型でなくてもよい。例えば、サクションカップアームエンドツール（ＥＯＡＴ：ｅｎｄ  ｏｆ  ａｒｍ  ｔｏｏｌ）は、例えば２４  ＶＤＣデジタル出力チャネルを介してコントローラに接続されてよい。しかしながら、何れのＥＯＡＴが何れのロボットアーム上で使用されてもよく、この場合も本開示の範囲内であると理解されたい。
【００３１】
幾つかの実施形態において、何れのスキャナが使用されてもよい。これは、構造化光センサであってよく、また、サードパーティ統合を可能にするものでもよい。ＳＤＫと共に、スキャナはワークのメッシュテンプレートを作るために使用されてよいアプリケーションを備えていてよい。
【００３２】
幾つかの実施形態において、ビンピッキングアプリケーション（例えば、ビンピッキングアプリケーション２０）は、前述のＧＵＩベースのＡｃｔｉｎ  Ｖｉｅｗｅｒの代わりに、ビンピッキングシステム（例えば、ビンピッキングシステム６４）のコプロセッサ上で動作するように構成されてよい。例えば、ユーザインタフェースは、ビンピッキングキャップを介してコントローラ及びティーチペンダントに移動されてもよい。「キャップ」とは、本明細書で使用されるかぎり、一般にロボットの機能、アクセサリ、又は周辺機器を指してよい。「ＵＲ」キャップとは、「Ｕｎｉｖｅｒｓａｌ  Ｒｏｂｏｔｉｃｓ」、すなわち本開示の譲受人から入手可能なキャップを指してよい。一例において、Ｃ＋＋Ｃａｐ  Ｄａｅｍｏｎは、コントローラ上で動作して、ＲＴＩ  Ｃｏｎｎｅｘｔ  ＤＤＳ上でのコプロセッサとの通信を可能にしてよい。例示的な展開が図４に示されている。
【００３３】
幾つかの実施形態において、産業用ＰＣ（ＩＰＣ）がコプロセッサのために利用されてよい。ビンピッキングアプリケーションと共に、コプロセッサは、ＥＯＡＴ、ビン、及びワークのためのＳＴＥＰファイルを含めた、ビンピッキング関連ファイルをホストしてよい。ユーザはこれらのファイルを、ＵＳＢを介して、又はネットワークを通じてコプロセッサにロードしてよい。
【００３４】
幾つかの実施形態において、ビンピッキングアプリケーションは、コプロセッサ上で動作して、ワーク検出及びモーション計画を含めた計算コストの高いすべてのタスクを実行してよい。このアプリケーションは、Ａｃｔｉｎ  ＳＤＫを使って構築されてよく、ビンピッキングに必要なキーライブラリにリンクされてよい。一例において、ＲＴＩ  Ｃｏｎｎｅｘｔ  ＤＤＳ  ５．３．１がＵＲコントローラ上で動作するＵＲＣａｐと通信するために使用されてよい。しかしながら、本開示の範囲内で様々な構成が可能であると理解されたい。幾つかの実施形態において、また、後でより詳しく述べるように、標的対象物又はワークは、点群データから検出されてよい。一例において、ＡＰＩを使って、センサとインタフェースしてよい。他の例では、Ｏｐｅｎ  Ｃａｓｃａｄｅを使って、ＳＴＥＰファイルを、Ａｃｔｉｎモデルの生成に必要なメッシュファイル及びビンピッキングシステムコンポーネントの点群に変換してよい。幾つかの実施形態において、ビンピッキングＵＲＣａｐは、ＵＲティーチペンダント上のユーザインタフェース及びコプロセッサとの通信のためのデーモンを形成するＪａｖａコンポーネントを含んでいてよい。例えば、デーモンは、Ａｃｔｉｎライブラリ及び、例えばＲＴＩ  Ｃｏｎｎｅｘｔ  ＤＤＳ  ５．３．１とのリンク上に構築されてよい。
【００３５】
幾つかの実施形態において、ビンピッキングシステムは複数のフェーズを含んでいてよい。これらのフェーズとしては、インストレーション、較正及びアラインメント、アプリケーション構成、及びビンピッキング動作が含まれていてよいが、これらに限定されない。
【００３６】
幾つかの実施形態において、ビンピッキングシステムが構成されてよい。例えば、ロボット、センサ、及びグリッパはすべて、動作のこのフェーズで物理的に据え付けられ、較正されてよい。センサ較正は、カメラ及びプロジェクタの内部及び外部パラメータを特定するために実行されてよい。センサとロボットのアラインメントは、３Ｄプリンティングによる、球のアレイからなるアラインメントオブジェクトを使って行われてよい。例えば、標的ワークは容易に検出されてよく、これはワーク姿勢推定が関係するロボット座標系を定義してよい。インストレーション、較正、及びアラインメントパラメータは、コプロセッサ上のファイに保存されてよい。
【００３７】
幾つかの実施形態において、ビンピッキングプログラム構成フェーズは、ユーザが、あるワークについてのビンピッキング動作及び設置又は固定を行うようにビンピッキングシステムを構成する段階である。ユーザはまず、新しいプログラム構成をロードするか、作成してよい。新しいプログラムを作成するステップには、ツール、ワークテンプレート、及びビンの構成並びにその後の把持及び設置の訓練が含まれていてよいが、これらに限定されない。
【００３８】
ビンピッキング動作フェーズでは、ユーザはビンピッキングシステムがビンピッキングを実行する、又は停止する、及び進行状況をモニタするのをトリガしてよい。ビンピッキングシステムは、毎回のピック試行の前に自動的に動作してビンをスキャンしてよい。幾つかの実施形態において、ビンピッキングシステムについて２つの予想されるユーザの役割があり、これらにはユーザの役割とデベロッパの役割が含まれていてよい。ユーザは、ビンピッキングシステムとグラフィカルユーザインタフェースを通じて対話してよい（例えば、プログラミングの経験は不要であってもよい）。デベロッパは、ビンピッキングソフトウェアを拡張して、新規センササポート、新規グリッパ、新規姿勢推定（マッチャ）アルゴリズム、新規バウンダリジェネレータ、及び新規把持スクリプトセレクタを含めてよい。各種のタスクがユーザによって実行されてよく、その他のタスクはデベロッパにより実行されてよい。
【００３９】
幾つかの実施形態において、ビンピッキングソフトウェアは、Ａｃｔｉｎ  Ｖｉｅｗｅｒへのカスタムプラグインで実装されてよい。これらのカスタムプラグインとしては、ｐｅｒｃｅｐｔｉｏｎＰｌｕｇｉｎ、ｔａｓｋＥｘｅｃｕｔｉｏｎＰｌｕｇｉｎ、及びｕｒＨａｒｄｗａｒｅＰｌｕｇｉｎが含まれていてよいが、これらに限定されない。
【００４０】
幾つかの実施形態において、ｐｅｒｃｅｐｔｉｏｎＰｌｕｇｉｎは、ｔａｓｋＥｘｅｃｕｔｉｏｎプラグインとＰｅｒｃｅｐｔｉｏｎＳｙｓｔｅｍクラスを通じて相互作用してよい。このクラスは、認識モジュールに含まれ、３つの主要クラスインタフェース、すなわちセンサ、マッチャ、及びバウンダリジェネレータからなる。
【００４１】
幾つかの実施形態において、センサインタフェースは、以下の方法を含んでいてよく、スキャナと相互作用するためにセンサクラスを通じて実装されてよい。
【００４２】
【表１】
2021528259.tif 000003
【００４３】
幾つかの実施形態において、マッチャインタフェースは以下の方法を含んでいてよく、ＳＤＫ姿勢推定ユーティリティを利用するために、マッチャクラスを通じて実装される。
【００４４】
【表２】
2021528259.tif 000004
【００４５】
幾つかの実施形態において、バウンダリジェネレータインタフェースは以下の方法を含み、高さフィールドジェネレータによって実装される。
【００４６】
【表３】
2021528259.tif 000005
【００４７】
幾つかの実施形態において、ＴａｓｋＰｌａｎＥｖａｌｕａｔｏｒクラスは、各種のメトリクスを介して予期される把持の高速評価を実行する。このクラスは、Ｔａｓｋ  Ｐｌａｎｎｉｎｇモジュール内にあり、ＥｃＢａｓｅＴａｓｋＰｌａｎＭｅｔｒｉｃと呼ばれる１つのコアインタフェースを含む。
【００４８】
幾つかの実施形態において、ＴａｓｋＰｌａｎＭｅｔｒｉｃインタフェースは以下の方法を含み、ビン内のその高さに基づいて把持スクリプトにスコアをつける（ビン内の最高点が最高スコアを得る）ＨｅｉｇｈｔＴａｓｋＰｌａｎＭｅｔｒｉｃと、把持の垂直度に基づいて把持スクリプトにスコアをつける（垂直把持角度は最大スコアを得て、テーブルの底部からの動きを必要とする把持角度は最小スコアを得る）ＡｎｇｌｅＴａｓｋＰｌａｎＭｅｔｒｉｃにより実装されてよい。
【００４９】
【表４】
2021528259.tif 000006
【００５０】
幾つかの実施形態において、ビンピッキングＵＲＣａｐはＵＲＣａｐ  ＳＤＫを使って、「パレット」及び「シーク」等のネイティブＵＲタスクウィザードのパターン及びコンベンションに密接に従うテンプレートプログラムを作成してよい。構成要素は２つの主なグループに分けられてよく、ビンピッキングシステムセットアップに関して一般的なものはインストレーションノードに設置され、特定のビンピッキングアプリケーションに特異のものは、そのビンピッキングテンプレートによって作られるプログラムノードの中に設置される。ランタイム状態は、ＵＲプログラムの実行により提供されるネイティブプログラムノードハイライト機構を通じて、及び主要ビンピッキングシーケンスノード上にある表示要素を通じて表示されてよい。
【００５１】
幾つかの実施形態において、ＵＩの全体的デザインは、前述のビンピッキングのユースケースに従っていてよい。ビンピッキングＵＲＣａｐデザインは、各ユースケースに関して提示されてよい。各ＵＩ要素について、スクリーンショットは、その要素が関係する、ユースケースのリストと共に提供されてよい。ユースケースについては、後でより詳しく説明する。
【００５２】
次に、図５を参照すると、ビンピッキングシステムに適合する実施形態が提供されている。ビンピッキングシステムのインストレーションは、コプロセッサをＵＲコントローラにＥｔｈｅｒｎｅｔ（登録商標）ケーブルを通じて接続することから始めてよい。次に、ユーザがコプロセッサを起動すると、それが自動的にビンピッキングアプリケーションをスタートさせる。まず、ユーザはビンピッキングＵＲＣａｐをＵＲコントローラに移行させ、「ロボットの設定」のページからインストールする。
【００５３】
次に、図６を参照すると、ビンピッキングプロセスに適合するグラフィカルユーザインタフェースが提供されている。ＵＲＣａｐはインストレーションタブにビンピッキングノードを作る。ユーザは、このノードを選択し、「状態」ページを見る。状態ページは、ＵＲＣａｐデーモン、コプロセッサ、及びセンサを含む必要なコンポーネントの状態のＬＥＤ型インディケータを示している。問題が検出されると、エラーメッセージがＵＲログに書き込まれ、ログのタブ上で見えるようになってよい。
【００５４】
次に、図７を参照すると、ビンピッキングプロセスに適合するグラフィカルユーザインタフェースが提供されている。次に、ユーザは環境タブを選択して、ワークスペースの障害物を構成してよい。このタブで、ユーザは、ビンピッキング動作中に回避され得るワークスペース内の障害物のすべてを定義する形状群をロードし、作成し、編集し、及び／又は保存することができる。３種類の形状がサポートされてよく、これらはすなわち、球、カプセル、ひし形である。しかしながら、他の多くの形状種類もまた本開示の範囲内である。ユーザは、衝突形状をビンピッキングシステム上のファイルからロードし、保存してよい。
【００５５】
次に、図８を参照すると、ビンピッキングプロセスに適合する追加的なグラフィカルユーザインタフェースが提供されている。ユーザは、センサタブを選択して、センサタイプを選択し、パラメータを構成してよい。これらのパラメータは、センサを調整するために使用されてよく、このページは、試験及び調整フェーズ中に何度も開いてよい。
【００５６】
次に、図９を参照すると、プログラムテンプレートを生成するグラフィカルユーザインタフェースが提供されている。ユーザは、ビンピッキングＵＲプログラム（．ｕｒｐ）を、次のステップ及びユースケースを通じて構成してよい。ユーザはまず、テンプレートビンピッキングプログラムツリーを生成し、ルートノードをクリックする。
【００５７】
次に図１０を参照すると、プログラムテンプレートを生成するグラフィカルユーザインタフェースが提供されている。ユーザは、「ベーシック」タブを選択することによって、ベーシックプログラムのオプションを編集できる。これには、ビン内の衝突の再スキャンを完了する、しない、その有無をチェックする、及びその他のオプションを設定することを含む。図１１に示されるように、ユーザは、アドバンストタブを選択し、追加のパラメータを編集してもよい。これには、ピックされないワークの衝突検出半径が含まれる。
【００５８】
次に、図１２を参照すると、ＥＯＡＴを構成できるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、まずプログラムツリーの「ツール」ノードをクリックすることによって、ＥＯＡＴを構成してよい。
【００５９】
次に、図１３を参照すると、ツール衝突形状の構成を可能にするグラフィカルユーザインタフェースが提供されている。ツール衝突形状は、環境衝突形状について使用されたものと同様のエディタの中で構成されてよい。ツール及び形状は常にレンダリングされてよく、ユーザは、形状を編集しながら見えるように回転させ、ズームすることができる。
【００６０】
次に、図１４を参照すると、ビン構成を可能にするグラフィカルユーザインタフェースが提供されている。ユーザは、プログラムツリーの中の「ビン」ノードをクリックすることによってビンを構成してよい。
【００６１】
次に、図１５を参照すると、ビン位置合わせを可能にするグラフィカルユーザインタフェースが提供されている。ビンは、ロボットのベースに関して位置合わせされてよい。ユーザはまず、ビンの３つの隅のＥＯＡＴ  ＴＣＰをタッチオフすることからＵＲフィーチャ平面を定義してよい。この平面はその後、ビンノードの「位置合わせ平面」のドロップダウンの中で選択されてよい。
【００６２】
次に、図１６を参照すると、ビン衝突形状の構成を可能にするグラフィカルユーザインタフェースが提供されている。ビンの衝突形状は次に、環境、ツール、及びワークのノードと同様のダイアログを使って構成される。
【００６３】
次に、図１７を参照すると、ワークの構成とワークモデルのロードを可能にするグラフィカルユーザインタフェースが提供されている。ユーザは、プログラムツリーの中の「部品テンプレート」のノードをクリックすることによって、ピックすべきワークを構成してよい。ユーザは、ワークのＣＡＤモデルをビンピッキングシステム上のファイルからロードしてよい。ＣＡＤモデルは、レンダリングのためのメッシュファイル及び姿勢検出のための点群に変換されてよい。ユーザは、レンダリングウィンドウ内でワークテンプレートを見て、それがロードされ、正しく変換されたことを確認してよい。
【００６４】
次に、図１８を参照すると、ワーク衝突形状の構成を可能にするグラフィカルユーザインタフェースが提供されている。ユーザは、ワークに関する衝突形状を構成してよい。これらの形状は、ワークがピックされた後のワークと環境との間の衝突を検出し、回避するために使用される。
【００６５】
次に、図１９を参照すると、ワーク検出の妥当性確認を可能にするグラフィカルユーザインタフェースが提供されている。ユーザは、部品をビンに追加し、その後、スキャン及び検出をトリガしてマッチを見つけることによって、ワーク構成の妥当性を確認してよい。検出結果は、レンダリングされ、リストとして表示される。
【００６６】
次に、図２０を参照すると、再スキャン位置の構成を可能にするグラフィカルユーザインタフェースが提供されている。ユーザは、次にロボットの再スキャン位置を設定してよい。これは、把持地点を訓練するため及びピック中の再スキャンのため（そのオプションが有効にされている場合）に使用されてよい位置である。
【００６７】
次に、図２１〜２２を参照すると、把持ヒエラルキ及び／又は把持選択メトリクスの構成を可能にするグラフィカルユーザインタフェースが提供されている。ユーザは、把持メトリクス、把持地点、及びオフセットを含む把持ヒエラルキと、次に、設置地点及びオフセットを構成してよい。把持選択メトリクスは、幾つかの選択肢がある時にどの把持を使用するかをプログラムがどのように選ぶかを定義する。ユーザは、リストから把持メトリクスを選択し、各々のパラメータを編集できる。
【００６８】
次に図２３を参照すると、把持の追加及び／又は配置を可能にするグラフィカルユーザインタフェースが提供されている。ユーザは、ヒエラルキの中に把持を追加し、その中で配置できる。把持リストは、把持を評価する際に使用する優先順位を定義してよい。把持は、把持を追加及び把持を削除のボタンをクリックすることによって追加及び削除できる。把持は、クリックによってリスト内で選択できる。選択された把持は、提供されるボタンによりリスト内で上下に移動できる。
【００６９】
次に、図２４を参照すると、把持と設置の訓練を可能にするグラフィカルユーザインタフェースが提供されている。ユーザは、左側のプログラムツリーの把持ノードをクリックし、把持ページのタブを左から右へと追うことによって、把持及び設置を訓練してよい。各把持ページにより、ユーザは、１）ワークに関する把持位置を定義し、２）ワークに近付く際に使用する把持オフセットを定義し、３）ロボットベースに関する設置位置を定義し、４）設置位置に近付く際に使用する設置オフセットを定義することができてよい。ユーザは、「名前」フィールドをクリックすることによって、各把持に固有の名前をつけることができる。ユーザは、「ピック位置」のタブ上のダイアログに示されるステップに従うことによって、把持ピック位置を設定してよい。ピック位置は、ワークの表面上の、ＥＯＡＴが取り付けられる点を指してよい。ユーザは、第一のボタンをクリックしてロボットを教示位置（再スキャン位置）に移動させてよい。次に、ユーザはワークをグリッパの中に入れ、第二のボタンをクリックしてスキャンをトリガしてよい。ＥＯＡＴに関するワークの姿勢は、把持位置として記録され、保存されてよい。ユーザはすると、ピックオフセットに切り替えて、オフセット値を設定してよい。
【００７０】
次に、図２５を参照すると、ピック位置及びオフセットの訓練を可能にするグラフィカルユーザインタフェースが提供されている。ユーザは、「ピック位置」及び「ピックオフセット」のタブに従うことによって、ワークピック位置とオフセットを訓練してよい。
【００７１】
次に、図２６を参照すると、設置位置及びオフセットの訓練を可能にするグラフィカルユーザインタフェースが提供されている。ユーザは、「設置位置」及び「設置オフセット」のタブに従うことによって、ワークの設置位置及びオフセットを訓練してよい。
【００７２】
次に、図２７を参照すると、グラブ及びリリースシーケンスの構成を可能にするグラフィカルユーザインタフェースが提供されている。ユーザは、プログラム構造をグラブ及びリリースシーケンスフォルダに追加して、ＥＯＡＴを作動させるためにとるべきＥＯＡＴアクションを定義してよい。各シーケンスのデフォルトノードは、設定及び待機ノードを含んでいてよい。これらのフォルダで、ユーザは、ＥＯＡＴに特定のノードを追加してよく、これは他のＵＲＣａｐｓにより提供されるものを含むことができる。
【００７３】
次に、図２８を参照すると、システム動作を可能にするグラフィカルユーザインタフェースが提供されている。ここで、ユーザはプログラムを試験、調整、及び実行できる。ビンピッキングシステムの状態情報を見るために、ユーザはプログラムツリーの中の「ビンピッキングシーケンス」ノードをクリックすることができる。このノードページは、ビンピッキングシステムのレンダリングされたビューを、スキャン及び検出部品のための点群オーバレイと共に示してよい。ユーザは、標準的なＵＲ再生、一時停止、及び停止ボタンを使ってプログラムを実行してよい。プログラム動作は、停止ボタン、その後、再生ボタンをクリックすることによってリセットできる。ユーザは、「ビンピッキングシーケンス」ノードページを見ることによって、ビンピッキングシステムの状態をモニタしてよい。選択された把持は、「現在のビュー」のウィンドウの中でレンダリングされてよく、そのＩＤがこのウィンドウの左側に表示される。
【００７４】
幾つかの実施形態において、グラフィカルユーザインタフェースによって、ユーザはロボットを設定し得る。ロボット設定のオプションが選択されると、図２９に示されるようなグラフィカルユーザインタフェースによって、ユーザはビンピッキングＵＲＣａｐをＵＳＢドライバ又はその他の適当なデバイスからインストールできてよい。ユーザは、「ＵＲＣａｐｓ」と「＋」を選択して、ＵＲＣａｐファイルをロードしてよい。ロボットは、インストレーション後に再起動されてよい。
【００７５】
次に、図３０を参照すると、ユーザが環境を構成できるようにするグラフィカルユーザインタフェースが提供されている。この例では、ユーザは「環境」を選択して、衝突形状を作り、保存してよい。例えば、球−１点、カプセル−２点、ひし形−３点等。幾つかの実施形態において、点は、多くの方法で定義されてよい。そのうちの幾つかには、フィーチャポイントから設定すること、ロボット位置から設定すること、マニュアルで設定すること等が含まれていてよいが、これらに限定されない。
【００７６】
次に、図３１を参照すると、ユーザがセンサを構成できるようにするグラフィカルユーザインタフェースが提供されている。幾つかの実施形態において、ユーザはドロップダウンメニューからセンサを選択し、その設定を構成してよい。
【００７７】
次に、図３２〜３５を参照すると、ユーザがセンサの位置合わせを行うことができるようにするグラフィカルユーザインタフェースが提供されている。幾つかの実施形態において、センサは、ロボットのベースに関するその姿勢オフセットを特定するために位置合わせされてよい。ユーザは、「ウィザード起動」オプションを選択して開始してよい。図３３は、グラフィカルユーザインタフェースと、位置合わせマーカをグリッパに固定するオプションを示す。位置合わせマーカは、３Ｄプリンティングによるプラスチックの球又は半球であってよく、これはグリッパに直接取り付けられてよい。図３４は、ロボットを移動させて、スキャンゾーン内の異なる位置に位置合わせマーカを設置することを描いている。位置合わせマーカは、センサと直接対面してよい。ユーザは、「サンプル追加」オプションを選択して、各ステップを記録してよい。位置合わせ誤差は、幾つかのサンプル後に例えば２ｍｍ未満であってよい。幾つかの実施形態において、１０を超えるサンプルが使用されてよい。図３５において、位置合わせマーカがグリッパから取り除かれてよく、「終了」オプションの選択により、位置合わせが完了されてよい。
【００７８】
次に、図３６を参照すると、ユーザがビンピッキングプログラムを作成することができるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、「プログラム」オプションを選択し、「エンプティプログラム」を選択し、新しいタスクを作成してよい。図３７において、プログラムテンプレートを生成するオプションが提供される。ここで、ユーザは、「構造」及び「ＵＲＣａｐｓ」オプションを選択してから、「ビンピッキング」を選択してもよい。これによって、ビンピッキングプログラムテンプレートがプログラムツリーに挿入される。図３８は、ユーザが利用可能なオプションの例を示し、図３９は、把持メトリクスを設定する１つの方法を示す。把持メトリクスは、幾つかの選択肢がある時にどの把持を使用するかをプログラムがどのように選ぶかを定義する。図４０は、ＲＲＴノードの設定を可能にする例示的なグラフィカルユーザインタフェースを示す。ＲＲＴノードは、ビンの中の異なる位置にある（例えば、壁に近い、隅にある、等）部品をロボットがピックアップするための経路計画のガイダンスを提供するように構成されてよい。ＲＲＴノードは、異なるワークのピック位置からある距離に設定されてよい。幾つかの実施形態において、ロボットは、ワークをピックするために、大きくその姿勢を変化させずに、直線に沿って移動するか、特異点に遭遇するだけでよいことがある。
【００７９】
次に、図４１を参照すると、ユーザが原位置を設定できるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、プログラムツリーの中の「原位置」のオプションを選択し、その後、「原位置を設定する」を選択してよい。ユーザは次に、ティーチペンダント上の命令に従って、ロボットを所望の原位置に移動させてよい。
【００８０】
次に、図４２を参照すると、ユーザがツールを構成できるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、プログラムツリーの中の「ツール」オプションを選択し、座標と方位を手で入力することによってツールの中心点を設定してよい。ユーザには、オブジェクトファイルをロードする選択肢も提供されてよい。
【００８１】
次に、図４３を参照すると、ユーザがビンの位置合わせを行うことができるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、「ベース」のオプションを位置合わせ平面として選択し、「教示」オプションをビンタイプとして選択してよい。ポインタがエンドエフェクタに装着されてよい。
【００８２】
次に、図４４を参照すると、ユーザがビンの位置合わせを行うことができるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、ポインタを使って各ビンの壁の内部の４地点にタッチして、位置合わせしてもよい。幾つかの実施形態において、教示地点は広げられてよい。各辺の位置合わせを行うために、辺定義の例が提供されてもよい。ＬＥＤインディケータは、位置合わせが完了するたびにトグルしてよい。
【００８３】
次に、図４５を参照すると、ユーザがビン衝突形状を構成できるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、「デフォルト形状」のオプションを選択して、ビンの衝突形状を位置合わせに基づいて定義してよい。幾つかの実施形態において、ユーザは、衝突形状の大きさを変更してよい。
【００８４】
次に、図４６を参照すると、ユーザが部品テンプレートの妥当性を確認できるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、「スキャン」オプションを選択して、ビン内のワークをスキャンしてよい。幾つかの実施形態において、ビンピッキングシステムは、点群を部品テンプレートとマッチさせるように試みてよい。
【００８５】
次に、図４７を参照すると、ユーザが再スキャン位置を構成できるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、プログラムツリーの中の「再スキャン位置」のオプションを選択して、「再スキャン位置を設定」を選択してよい。ロボットが所望の再スキャン位置に移動したら、ユーザは「ｏｋ」を選択してよい。
【００８６】
次に、図４８を参照すると、ユーザが把持リストを編集できるようにするグラフィカルユーザインタフェースが提供されている。幾つかの実施形態において、把持リストは、把持を評価する際に使用の優先順位を定義してよい。把持は、「把持を追加」又は「把持を削除」を選択することによって追加及び削除されてよい。選択された把持は、図中に示されるボタンを用いて、リストの上下に移動されてよい。
【００８７】
次に、図４９を参照すると、ユーザが把持ウィザードを見ることができるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、プログラムツリーの中の新規の把持ノードを選択するか、「次へ」を選択して、把持ウィザードにアクセスしてよい。ユーザは、「オプション」タブで把持の名前を変更してよい。
【００８８】
次に、図５０を参照すると、ユーザがピックを訓練することができるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、「ピックアプローチを教示する」のオプションを選択して、ロボットをビックアプローチ位置へと移動させてよい。アプローチ位置は、部品テンプレート衝突ゾーン内にあるべきではない。ユーザは、「ｏｋ」のオプションを選択して、位置を記録し、その後、続いて他の位置の設定をしてよい。
【００８９】
次に、図５１を参照すると、ユーザがＥＯＡＴ信号を構成できるようにするグラフィカルユーザインタフェースが提供されている。幾つかの実施形態において、標準的ＵＲ設定ノードを使用して、ＥＯＡＴを作動させるためのデジタル又はアナログ出力をトリガしてよい。ユーザは、各シーケンスでノードを削除又は追加してよい。
【００９０】
次に、図５２を参照すると、ユーザがビンピッキングシステムを動作させることができるようにするグラフィカルユーザインタフェースが提供されている。ユーザは、点群及び検出された部品を表示してよい。ユーザは、ＵＲ再生及び一時停止ボタンを使ってプログラムを実行してよい。
【００９１】
次に、図５３を参照すると、ユーザがパレタイズシーケンスを訓練できるようにするグラフィカルユーザインタフェースが提供されている。パレタイズシーケンスの中で、ビンピッキングプログラムは、設置位置のリストについて反復処理し、後続の各部品をパレタイズパターンにより明示される異なる位置に設置する。
【００９２】
幾つかの実施形態において、本明細書に記載のビンピッキングシステムは、センサの集合又は、異なるレンズを有する１つのセンサで実装されてもよいが、動作範囲全体をカバーする１つのセンサモデルが使用されてよい。製品は、例えば１０×１０×１０ｃｍ〜例えば１．２×０．９×０．８メートル（Ｈ×Ｗ×Ｄ）の体積で有効に動作してよい。分解能及び正確度仕様は、体積内の最悪のケースの位置で満たされてよい。
【００９３】
幾つかの実施形態において、分解能及び正確度は、ビンの大きさと共に変化してよい。この実施例は、複数センサモデル又は構成を使って、この体積全体をカバーしてよい。センサの視野の外にあるビンがビンピッキングシステムの性能に影響を与える場合、ソフトウェアがこのエラーを検出し、報告してよい。センサは、ビンの上方、アーム上、又は何れの適当な場所に取付け可能であってもよい。
【００９４】
幾つかの実施形態において、ビンの上方には、センサとピッキング体積の上部との間には、ロボットがサイクルタイムに影響を与えずに動作するのに十分な余地があってよい。ビンの上方には、オペレータがビンの中にさらに部品を投げ込むのに十分な余地があってよい。センサとビンとの間の距離は、±１０％又は±１０ｃｍの何れか大きい方だけ変動可能であってよい。同様に、センサは、ビン全体が見えているかぎり、センサ取付けにおいてｘ、ｙ、又はｘ軸の何れかの周囲で±１０°の誤差を許容してよい。
【００９５】
幾つかの実施形態において、センサは、アラインメントの後は移動しないことを前提として、仕様を満たすために精密な位置決めを必要としなくてよい。セルを構成し、較正した後、センサは不動と考えられてよい。ビンピッキングシステムは、センサとビンとの間の一時的な障害物に耐えられてよい。一時的障害物としては、オペレータ、補充ビン、かき回し棒等が含まれていてよい。「耐えられる」とは、ビンピッキングシステムがピックを合理的時間にわたって再試行してよく、複数回の再試行又は経過時間の後のみエラーとなることを示してよい。どちらの構成でも、力限界の原因となる障害物が検出され、再試行を強制してよい。
【００９６】
幾つかの実施形態において、ビンピッキングシステムは、任意の形状、例えば段ボール箱、円筒形のバケツ、膿盆等のビンで有効に動作する。プログラミングには、ほぼ平行六面体の形状のビンには、ビンのＣＡＤモデルは不要であってもよい。ＣＡＤモデルが必要である場合、ビンピッキングシステムは、ビンにＣＡＤモデルとのわずかな違いがあっても、例えば反った段ボール箱、ひびの入ったプラスチックビン、スラットが紛失した木製クレート等であっても、依然として機能してよい。動作には、センサ主軸がビンの上又は下平面に垂直である必要がないことがある。これによって、ビンを斜めに押してもよく、又はセンサの設置位置が不正確であってもよい。
【００９７】
幾つかの実施形態において、セットアップには空のビンをスキャンすることが必要であってもよい。設定は、ビンの大きさと形状に依存しなくてよい。好ましくは、ビンはピックとピックの間で、例えばプラスチックの袋から段ボール箱に変化することさえあり、これもシステムの動作に影響を与えない。ビンピッキングシステムは、開いたフラップを有する段ボール箱についても有効に動作してよい。ビンピッキングシステムは、ビンがなくても、例えば部品が積み重ねられていても有効に動作してよい。ビンピッキングシステムは、２Ｄビンピッカとしても有効に動作してよく、部品は平坦な表面上で均一な姿勢を取る。ビンピッキングシステムは、１×１×０．１ｃｍと小さい、及び３０×３０×３０ｃｍと大きいワークでも有効に動作してよい。分解能と正確度は、ワークの大きさと共に変化してよい。ビンピッキングシステムは、ワークのＣＡＤモデルを受け入れることができてよく、及び／又はワークの点群でも有効に動作してよい。
【００９８】
幾つかの実施形態において、ビンピッキングシステムは、１つ又は２つの次元において非常に薄い、又は非常に狭い（すなわち、シートメタルのように薄いか、ワイヤロッドのアスペクト比を有する）が、依然としてワークが剛性を有するという要求事項を満たすワークについても有効に動作してよい。ビンピッキングシステムはまた、ビン内に異物又は変形したワークがある場合でも有効に動作してよい。これらのワークは、回避され、ピックされなくてよい。ビンピッキングシステムによって、同じビンの中に複数の種類のピック可能なワークが存在できてよい。これが当てはまる場合、ビンピッキングシステムは、ピックを開始する前に、どのタイプのワークが望まれるかをプログラムにより明示できてよい。ビンピッキングシステムはまた、真空ピックアップと機械的グリッパのどちらについても有効に動作してよい。機械的グリッパは、内側及び外側グリップの両方を含んでいてよい。グリップは、グリッパが隣接する部品に当たらないように十分なクリアランスをする部品の識別を取り入れてよい。
【００９９】
幾つかの実施形態において、ビンピッキングシステムはエンドエフェクタのＣＡＤモデルを受け入れることができてよい。ビンピッキングシステムまた、エンドエフェクタの点群でも有効に動作してよい。ビンピッキングシステムは、エンドエフェクタとビン又は把持されないワークとの間の衝突を回避する選択可能なオプションを有していてもよい。隣接するワークとの衝突回避が選択されると、グリッパ、ロボット、及び把持された何れのワークも、把持中に他のワークと接触すべきではない。これは、経路計画が標的ワークの周囲のある程度のクリアランスを探してよいことを示唆する。ビンピッキングシステムによって、あるワークについての複数のピック地点又は把持の定義が可能となってよい。異なるワークのための複数のピック地点又は把持が定義が可能である場合、どのグリップが使用されたかの表示が、制御プログラムにとって利用可能であってもよい。異なるワークのための複数のピック地点又は把持が定義可能である場合、把持の選好ヒエラルキがあってよい。
【０１００】
幾つかの実施形態において、ビンピッキングシステムは、ピック可能な部品が１つも見えないとき、信号をアサートするか、警告を返してよい。ビンピッキングシステムは、「部品が１つも見えない」と「部品は見えるが、ピック対象ではない」とを区別してよい。ビンピッキングシステムはまた、ビンが「ほとんど空である」ことを信号で知らせてもよい。ピッキング動作により、ピッキング中にロボットによってビンの視界が遮られてもよい。
【０１０１】
幾つかの実施形態において、ビンピッキングシステムは、コーリングプログラムへの信号送信又はエラー返送機構を含んでいてよい。ビンピッキングシステムは、「合理的」範囲のエラー分解能（ｅｒｒｏｒ  ｒｅｓｏｌｕｔｉｏｎ）を有していてよく、例えば、「部品が１つも見つからない」がエラーではなく、ある状態であるモードを含んでいてよく、周期的にセンサはこのエリアを再スキャンし、ワークが到着するのを待機する。センサはまた、ビンの上方又はロボットアーム上の固定位置のどちらにも装着可能であってよい。センサは、工場の床に見られるかもしれないような小さい振動に耐えられてよい。
【０１０２】
幾つかの実施形態において、センサは、天井灯と作業照明の両方があり、ロボット、通行人、及びその他の機械が様々な影を落とすかもしれない環境において標的信頼度で動作してよい。「周囲光」は、蛍光灯、ＬＥＤ蛍光灯、白熱光、間接自然光等であってよく、すなわち、それは狭いスペクトルバンドを有していても、広いスペクトルを有していてもよい。ビンピッキングシステムは、投射されたパターンをプログラムにより変更し、将来の改良を可能にする能力を含んでいてよい。ビンピッキングシステムは、ワークの表面テクスチャに対する感受性を持たなくてよい。ビンピッキングシステムは、正反射率の高い部品の使用を排除しなくてよい。ビンピッキングシステムは、正反射率の大きいビンの使用を排除しなくてよい。ビンピッキングシステムは、背景とのコントラストに対する感受性を持たなくてよい（背景は、むしろワークと同じタイプであるため、定義上、コントラストは低くなるため）。ビンピッキングシステムは、透明な部品との動作を排除してもよい。ビンピッキングシステムでは、部品のある程度の半透明性が許容され得る。幾つかの実施形態において、ビンピッキングシステムは、透明なビン又は半透明なビンでの動作を排除しなくてよい。ビンピッキングシステムは、設置場所が不正確なビン及びサイクルの合間に移動するビンでも有効に動作してよい。
【０１０３】
ビンピッキングシステムの場合、平均的なＵＲのプログラマが８時間以内の作業でビンピッキングプログラムを作成し得る（プログラムのうちのビンピッキング以外の部分、例えば最終的なワークの設置、オペレータへの信号送信、その他の動作等は除く）。ビンピッキングシステムでは、生産スループットへの影響を最小限にするために、オフラインのビンピッキングプログラム開発が可能であってよい。過去に訓練したワークの種類を呼び戻し、１時間以内に新しいビンピッキングプログラムを作ることも可能であってよい。ビンピッキングシステムは、ウィザード又はその他の対話式ツールを使って、プログラムを生成してもよい。
【０１０４】
幾つかの実施形態において、ビンピッキングシステムは、ＵＲコントローラ又は、第二の画像処理コンピュータがある場合はそのコンピュータの何れかで実行されてよい。幾つかの実施形態において、ビンピッキングシステム（例えば、ビンピッキングシステム６４）により、上記２つのコンピュータのうちの１つ又は別のコンピュータで、ビンピッキングプログラムをシミュレーションに基づいて生成してよい。ビンピッキングシステムは、ＵＲＣａｐｓ適合アプリケーションであってよい。複数のセンサモデル又はバリエーションが使用される場合、コンフィギュレーション及びプログラミングソフトウェアは、すべてのセンサタイプで動作してよい。複数のセンサモデル又はバリエーションが使用される場合、コンフィギュレーション及びプログラミングソフトウェアは、どのセンサタイプが使用されるかを自動的に検出してよい。
【０１０５】
幾つかの実施形態において、ビンピッキングシステムは、把持されたワークのグリッパに関する位置を確認し、ワークの設置においてあらゆるオフセットを補償するための視覚的機構を含んでいてよい。任意のビン形状がサポートされる場合、プログラミングにはビンのＣＡＤモデルが必要であり得る。ビンピッキングシステムは、エンドエフェクタの一般的な説明（例えば、長さ、幅、横幅）で有効に動作してよい。エンドエフェクタと把持されていないワークとの衝突の有無のチェックは、ユーザにより選択可能であってよい。ビンピッキングシステムでは、ピック地点のための一般的領域の定義が可能であってよい。
【０１０６】
設置訓練手順は、以下のステップを含んでいてよい：１）オフライン：ロボットに、ワークをピックアップし、スキャンのためにセンサに提示するように教示する。エンドエフェクタの姿勢とワークの姿勢の両方を記録する。２）オフライン：ロボットに、ワークをその目的地に設置し、エンドエフェクタの姿勢を記録するように教示する。３）オンライン：ステップ１と同じロボットの姿勢を使って、ワークをピックし、それをスキャンのためにセンサに提示し、エンドエフェクタの姿勢とワークの姿勢を記録する。４）オンライン：以前のステップで収集された情報により、ワークをその目的地に設置する。
【０１０７】
幾つかの実施形態において、設置の正確度は３つの根本要素により決まってよい：１）ロボットの運動学モデルの較正、２）センサの較正及びアラインメント、及び３）ワークの姿勢の推定。これら３つのタスクは、ロボットのエンドエフェクタの姿勢、センサの姿勢、及びワークの姿勢を及び一般的な座標系で定義する座標系変換を決定する。最終的なワーク設置は、これらの変換の関数として計算されてよい。
【０１０８】
幾つかの実施形態において、エンドエフェクタと把持されていないワークとの間の衝突の有無のチェックは、ユーザにより選択可能であってよい。幾つかの実施形態において、経路計画では、標的ワークの周囲のある程度のクリアランスが探されてよい。分解能及び正確度の仕様は、ビン内の最悪のケースの位置で満たされてよい。
【０１０９】
幾つかの実施形態において、ビンの上方には、オペレータがビンの中にさらに部品を投げ込むのに十分な余地があってよい。一般に、これは、ビンの上方で同様の大きさの補充ビンを回転させるための余地があってもよいことを意味し、ビンの大きさは深さ４０ｃｍまでである（すなわち、補充ビンの大きさの上限がある）。幾つかの実施形態において、動作には、センサ主軸がビンの上又は下平面に垂直である必要がないことがある。これによって、ビンを斜めに押してもよく、又はセンサの設置位置が不正確であってもよい。幾つかの実施形態において、動作には、ビンを水平にする必要がないことがある。プロセッサは、センサと組み合わせられていなければ、ＵＲコントローラの筐体内でＵＲプロセッサと組み合わせられてよい。センサからの点群を作成する別の何れのソフトウェアも、製品ファミリのすべてのセンサをサポートしてよい。
【０１１０】
幾つかの実施形態において、力限界を生じさせる障害物が検出され、再試行を強制してもよい。ビンピッキングシステムは、ピック対象部品が１つも見えない場合に、信号をアサートするか、警告を返してもよい。ビンピッキングシステムは、ウィザード又はその他の対話式ツールを使ってプログラムを生成してもよい。幾つかの実施形態において、ビンピッキングアプリケーションは、ＵＲＣａｐｓ適合アプリケーションであってよい。ビンピッキングシステムは、設置動作を行うのではなく、コーリングプログラムに６次元オフセットを返すオプションを含んでいてよい。ビンピッキングシステムは、ピックを開始する前に、どのタイプのワークが望まれるかをプログラムにより明示することができてよい。ビンピッキングシステムは、コーリングプログラムに対して信号を送信するか、エラーを返す機構を含んでいてよい。設定は、ビンの大きさと形状に依存しなくてよい。幾つかの実施形態において、ビンピッキングシステムは、ワークのＣＡＤモデルを受け入れることができてよい。幾つかの実施形態において、ビンピッキングシステムにより、上記の２つのコンピュータのうちの１つ又は別のコンピュータ上でビンピッキングプログラムをシミュレーションに基づいて生成することができてよい。ビンピッキングシステムは、センサとビンとの間の一時的な障害物に耐えられてよい。一時的な障害物には、オペレータ、補充ビン、かき回し棒等が含まれていてよい。
【０１１１】
幾つかの実施形態において、ビンピッキングシステムは、真空ピックアップ及び機械的グリッパの両方で有効に動作してよい。幾つかの実施形態において、ビンピッキングシステムは、１×１×０．１ｃｍと小さい、及び３０×３０×３０ｃｍと大きいワークでも有効に動作してよい。しかしながら、何れの大きさのワーク又は対象物も本開示の範囲内で使用されてよいことがわかるであろう。
【０１１２】
次に、図５４を参照すると、本開示の実施形態に適合するビンピッキング動作の例を示すフローチャートが提供されている。例えば、幾つかの実施形態において、ロボットビンピッキングプロセス１０は、ピックアップすべき候補ワーク又は対象物のリストを識別してよい２００。前述のように、ワークは一般に、ロボットにより操作されてよい（例えば、把持される、ピックアップされる、移動される等）対象物を含んでいてよい。幾つかの実施形態において、このリストは１つ又は複数のメトリクスに基づいてランク付けされてよい。メトリクスには、ピックが成功する可能性、設置が成功する可能性、及び／又は特定の位置への設置の適当性が含まれていてよい。前述のように、幾つかの実施形態において、ビンピッキングシステム（例えば、ビンピッキングシステム６４）は、ビン内の部品を識別するように構成されたスキャニングシステム（例えば、１つ又は複数のセンサ及び／又はスキャナ）を含んでいてよい。
【０１１３】
幾つかの実施形態において、ロボットビンピッキングプロセス１０は、１つ又は複数の候補対象物までの経路を、少なくとも一部に、ロボット環境及び少なくとも１つのロボット制約に基づいて特定してよい２０２。例えば、ロボットビンピッキングプロセス１０は、候補対象物又はワークまでの経路を、ワークの形状、環境、ビン、アームエンドツール、及び／又はロボットリンク／ジョイントの限界／制約を含むがこれらに限定されない１つ又は複数の態様を考慮しながら定義してよい。幾つかの実施形態において、経路は実現可能経路、最適経路、又はその両方であってよい。例えば、実現可能経路は一般に、ワークまでの考え得る経路を含んでいてよく、最適経路は一般に、１つ又は複数の属性に合わせて最適化された（例えば、最短時間、ロボットアームの最も少ない調整等）経路を含んでいてよい。幾つかの実施形態において、経路は、候補ワークがピックアップされるときに、その場でリアルタイムで特定されてよい。
【０１１４】
幾つかの実施形態において、センサは３Ｄセンサであってよい。幾つかの実施形態において、センサは２Ｄセンサであってよい。再スキャンは、センサ分解能が最大である検出空間の領域内で行われてよい。センサ（例えば、スキャナ）はまた、静的及び動的対象物を含む認識された環境を説明するデータセットを提供してもよい。幾つかの実施形態において、ロボットビンピッキングプロセス１０は、データセットを使って、経路特定のため、及び／又は衝突回避のために環境を学習してよい。
【０１１５】
幾つかの実施形態において、ロボットビンピッキングプロセス１０は、１つ又は複数の候補対象物のうちの第一の候補対象物を把持する実現可能性の妥当性を確認してよい２０４。例えば、ロボットビンピッキングプロセス１０は、リスト上の候補対象物又はワークを把持する実現可能性の妥当性を、ピックアンドプレース動作を実際の時間より高速でシミュレートすることによって確認するステップ２０４を試みてもよい。幾つかの実施形態において、シミュレーションは、ロボット運動学モデルを使用することを含んでいてよい。幾つかの実施形態において、シミュレーションは、ロボットの周囲の環境のモデルを含んでいてよい。環境は、静的物体及び動的物体（例えば、移動する物体）を含むことができる。幾つかの実施形態において、これらの物体は、運動学モデルにより表される機械を含んでいてよく、その状態は少なくとも一部に、センサのフィードバックに基づいて更新される。幾つかの実施形態において、１つ又は複数の物体は、センサからの点群データに基づく動的障害物としてモデル化されてよい。点群は、認識された物体の外面を表すボクセルグリッド、高さフィールド、又はメッシュに変換されてよい。第一の候補対象物の把持の実現可能性の妥当性をシミュレーション用いて確認する例を上述したが、本開示の範囲内で物体の把持の実現可能性の妥当性が他の方法でも確認されてよいことがわかるであろう。
【０１１６】
幾つかの実施形態において、実現可能性の妥当性が確認されると、ロボットビンピッキングプロセス１０は、第一の候補対象物を物理的に選択するようにロボットを制御してよい２０６。例えば、妥当性確認が合格した場合、ロボットビンピッキングプロセス１０は、その候補ワークをピックアップするようにロボットを制御してよい。
【０１１７】
幾つかの実施形態において、実現可能性の妥当性が確認されない場合、ロボットビンピッキングプロセス１０は、第一の候補対象物の別の把持地点、第二の経路、又は第二の候補対象物のうちの少なくとも１つを選択してよい２０８。例えば、第一の候補対象物の把持の実現可能性の妥当性確認２０４が不合格であった場合、ロボットビンピッキングプロセス１０は、以下のうちの少なくとも１つを選択してよい：同じ候補ワークの別の把持地点、異なる経路、及び／又はリスト上の異なる候補ワーク（例えば、リスト上のより下位の対象物）。幾つかの実施形態において、異なる把持地点、異なる経路、及び／又は異なる候補対象物を選択するステップには、前述のように異なる把持地点、異なる経路、及び／又は異なる候補対象物の実現可能性をシミュレートするステップを含んでいてよい。
【０１１８】
幾つかの実施形態において、前述のように、１つ又は複数の候補対象物までの経路を特定するステップ２０２は、候補対象物に隣接する少なくとも１つの物体の１つ又は複数の表面に関する情報を使用するステップと、候補対象物に隣接する少なくとも１つの物体との衝突を回避するステップを含んでいてよい。このようにして、ロボットビンピッキングプロセス１０は、候補対象物までの経路を特定する際に候補ワークの周囲の物体の表面に関する情報を使用して、候補ワークの周囲の物体との衝突を回避してもよい。例えば、幾つかの実施形態において、候補対象物に隣接する少なくとも１つの物体の１つ又は複数の表面に関する情報は、候補対象物を識別するステップの一環として収集される。幾つかの実施形態において、候補対象物を識別するステップ２００は、１つ又は複数の隣接物体から候補対象物を区別するステップを含んでいてよく、これは、隣接物体に関する情報を収集するステップを含んでいてよい。幾つかの実施形態において、ロボットビンピッキングプロセス１０は、ワークの外面に基づいてワークの簡略モデルを生成してもよい。
【０１１９】
幾つかの実施形態において、ロボットを制御するステップ２０６は、第一の候補対象物の第二のスキャンを行うステップ、第一の候補対象物を、ある精度要求の固定位置を有する設置標的まで移動させるステップと、第一の候補対象物を操作するステップと、その精度要求に従って第一の候補対象物を設置標的まで送達するステップを含んでいてよい。例えば、ロボットは、候補ワークをピックアップし、それを機械であってよい設置位置まで移動させてよい。機械は、より高い精度要求を有する固定位置を有していてよい。したがって、設置の正確度を高めるために、ロボットビンピッキングプロセス１０は、ピックアップされたワークをスキャンし（例えば、再スキャン）、ワークを操作し、それを機械に位置付けてよい。再スキャン動作は、ワークを位置付けるのに使用されたものと同じセンサ／スキャナ又は、追加のセンサ／スキャナを使用してよい。幾つかの実施形態において、候補対象物の第二のスキャンは、スキャナの最大分解能の領域で行われてよい。設置標的又は設置位置は前述の例の中で機械として説明されているが、本開示の範囲内で、設置標的は機械に限定されず、候補対象物を設置するための何れの標的であってもよいことがわかるであろう。
【０１２０】
幾つかの実施形態において、ロボットを制御するステップ２０６は、第一の候補対象物をスキャナに提示し、第一の候補対象物の１つ又は複数のフィーチャを最大限に利用して第一の候補対象物を正確に位置付けるステップを含んでいてよい。例えば、ロボットビンピッキングプロセス１０は、ワークをセンサ／スキャナに対して、ワーク上のフィーチャを最大限に利用してワークを正確に位置付けるような方法で提示してよい。幾つかの実施形態において、ロボットビンピッキングプロセス１０は、ワークを、ピックの正確度を最大化するのではなく、それが物理的に選択されるか、又はピックされるのを成功させることができる可能性を最大にするような方法で位置特定し、ピックしてよい。
【０１２１】
幾つかの実施形態において、ロボットビンピッキングプロセス１０は、グラフィカルユーザインタフェース（ＧＵＩ）において、ロボット又は１つ若しくは複数の候補対象物のうちの少なくとも１つを表示してよく、グラフィカルユーザインタフェースにより、ユーザはロボット、経路特定、シミュレーション、ワークセルの定義、性能パラメータ仕様、又はセンサ構成のうちの少なくとも１つを可視化し、又は制御することができる。例えば、ロボットビンピッキングプロセス１０は、ＧＵＩを表示してよく、これは、ビンピッキングシステムを動作させるために使用されてよい。前述のように、幾つかの実施形態において、ＧＵＩを表示するステップは、経路特定、シミュレーション、ワークセルの定義、性能パラメータ仕様、モデルのインポート及びエクスポート、センサ構成等をユーザに提供することを含んでいてよいがこれらに限定されない。幾つかの実施形態において、ＧＵＩにより、プログラムの作成と、作成されたプログラムのデバッグを同時に行うことができてよい。ＧＵＩにより、ビンピッキングプログラムのコマンドを他のロボット制御コマンドと混ぜ合わせることができてもよい。
【０１２２】
幾つかの実施形態において、ロボットビンピッキングプロセス１０は、グラフィカルユーザインタフェースで、１つ又は複数の候補対象物以外の選択されていないコンポーネント及び選択されていない表面のすべてにわたるシュリンクラップ可視化を表示してよい。この表示は、プログラマが、訓練された把持が、周囲の物体の存在を考慮してワークをピックするのに適しているか否かを特定するのを支援してよい。
【０１２３】
幾つかの実施形態において、前述のように、ＧＵＩは、何れの適当なデバイス上にあってもよく、これにはティーチペンダント上、ハンドヘルドデバイス上、パーソナルコンピュータ上、ロボット自体の上等が含まれるが、これら限定されない。幾つかの実施形態において、ＧＵＩは、その表示情報を複数の情報源から、例えばロボットコントローラから、及びロボットコントローラとは別のプロセッサから引き出してもよい。幾つかの実施形態において、ＧＵＩは、ユーザ入力を１つ又は複数の目的地、例えばロボットコントローラ及び／又はロボットコントローラとは別のプロセッサに誘導してよい。幾つかの実施形態において、ＧＵＩのユーザは、複数のデータソース又は目的地の存在を知っていても、知らなくてもよい。
【０１２４】
幾つかの実施形態において、１つ又は複数の候補対象物を識別するステップ、１つ又は複数の候補対象物までの経路を特定するステップ、第一の候補対象物の把持の実現可能性の妥当性を確認するステップ、及び／又はロボットを制御するステップの少なくとも１つは、一次プロセッサ及び少なくとも１つのコプロセッサを使って実行されてよい。幾つかの実施形態において、前述のように、ロボットビンピッキングプロセス１０は、ＧＵＩをコプロセッサからロボットのティーチペンダントへとストリームするように構成されてよい。このようにして、ロボットビンピッキングプロセス１０は、ＧＵＩアプリケーションをコプロセッサ上で実行してよく、これはロボット及びワークセルの３Ｄレンダリングビューを含むことができ、その後、ＧＵＩの画像をティーチペンダントにストリームして表示されるようにしてよい。幾つかの実施形態において、ユーザのタッチイベントは、ＧＵＩアプリケーションとの遠隔インタラクションのために、ティーチペンダントからコプロセッサにストリームされてよい。
【０１２５】
幾つかの実施形態において、１つ又は複数の候補対象物までの経路を特定するステップ２０２は、少なくとも一部に、大域的経路計画及び局所的経路計画のうちの少なくとも一方に基づいていてよい。例えば、ロボットビンピッキングプロセス１０は、大域的経路計画、局所的経路計画、又はこれら２つの組合せを利用してよい。本明細書で使用されるかぎり、大域的経路計画は一般に、局所的経路計画では不可能な、衝突の起きない経路を発見するのを助け得る。局所的計画は、勾配降下法アルゴリズムと同様であることがあり、これはもっぱら局所解を求めることができる。これは、環境中に多くの障害物がある場合に発生してよい。ロボットビンピッキングプロセス１０の局所的計画方式は、衝突回避最適化を含めたリアルタイム制御を含んでいてよい。例えば、これは素早く動作してよいが、解を求めるために常にロボットのワークスペース全体を探索するとはかぎらないことがある。それに対して、ロボットビンピッキングプロセス１０を介した大域的経路計画は、解を求めてワークスペース全体を探索するように構成されてよい。
【０１２６】
幾つかの実施形態において、第一の候補対象物を把持する実現可能性の妥当性を確認するステップ２０４は、ユーザプログラムに関連付けられる条件付きロジックを分析するステップを含んでいてよい。前述のように、幾つかの実施形態において、ビンピッキングアプリケーションの中で、ユーザは各種のシステム特性を定義するほか、部品のピックアンドプレースのためのユーザプログラムを開発する必要があることがある。このようにして、ロボットビンピッキングプロセス１０は、制約された環境中でのエンドツーエンドのロボットの動きが成功することを、ロボットのスタート（ピック）位置とエンド（プレース）位置の変化及びユーザプログラムの中の条件付きロジックにより定義される複数の代替的経路を考慮して、保証しようとしてよい。ユーザプログラムが実行されると、ロボットビンピッキングプロセス１０は、３つの主要タスクを繰り返し実行してよく、これらは、認識（すなわち、センサを使ってビンの中の部品を識別する）、妥当性確認（すなわち、環境の制約を考慮して、ユーザプログラムに明記されたルールに従ってロボットによりどの部品をピックし、その後設置できるかを識別する）、及び動き（すなわち、ユーザプログラムに明記されたルールにより、有効性が確認された部品に対するロボットの動きを実行すること）である。妥当性確認試験中、ロボットビンピッキングプロセス１０は、部品をピックし、設置するために起こす必要のあるロボットの動きを特定してから、その動きが実際に行われるようにしてもよい。その結果、ロボットビンピッキングプロセス１０は、ロボットが運動の途中で、何れかの環境又はロボットの柔軟性の制約によって停止するような状況を回避できる。
【０１２７】
幾つかの実施形態において、第一の候補対象物の把持の実現可能性の妥当性を確認するステップ２０４は、すべての経路の代替案の妥当性を確認するステップ、特定の経路の代替案の妥当性を確認するステップ、何れかの経路の代替案の妥当性を確認するステップ、１つ又は複数の例外経路の妥当性を確認するステップ、１つ又は複数の区間を妥当性の確認から除外するステップ、又は経路の複数の区間の妥当性確認を並行して実行するステップを含んでいてよい。例えば、すべての経路の妥当性を確認するために、ユーザプログラムは条件付きロジックを有していてよく、ロボットは、有効性確認の時点では未知の幾つかの条件に基づいて異なる経路をとると予想される。例えば、部品が、ピックされた後にカメラにより検査する必要がある場合、検査結果により、その部品が、例えば設置位置１に設置されるか、又は設置位置２に設置されるかが決まる。動きの成功を保証するために、ロボットビンピッキングプロセス１０の妥当性確認ロジックは、これらの代替案の両方を確認してよく、その後で、部品を移動させることができる。
【０１２８】
特定の経路の代替案の妥当性を確認するために、ユーザプログラムは条件付きロジックを有することができ、ロボットは、妥当性確認の時点で既知の幾つかの条件に基づいて異なる経路を取ると予想してよい。例えば、ユーザプログラムは、その部品がどのようにピックされたか（すなわち、ロボットがどのようにその部品を保持しているか）を条件として、ロボットの動きを定義してよい。パレタイズ中、部品は、幾つかの既知の位置のうちの１つに設置されてもよく、プログラムは予測可能なパターンでこれらの位置について反復処理する。これらの場合に、考え得る代替的経路を特定する条件は、妥当性確認の時点でわかっている。動きの成功を保証するために、ユーザプログラムの中の条件付きフローの幾つかの支流において明示される動きだけを分析すればよい。実際に、すべてのコードパスを分析することは、この場合、有害であるかもしれず、それは、ユーザプログラム内の条件付きロジックに基づいて取ることのできない経路区間が、これらの妥当性が確認できるか否かに関係なく、ロボットの移動を阻止すべきではないため、より長い時間を要するからである。
【０１２９】
何れかの経路の代替案の妥当性を確認するために、ユーザプログラムが何れの代替案も容認可能な幾つかの経路代替案を定義し得るようにすることができる。例えば、パレタイズ中、部品又は対象物は、幾つかの既知の位置のうちの何れか１つに設置できる。この場合、妥当性確認は、プログラムにより明示される幾つかの経路オプションを考慮して、有効に動作する１つを見つけることになる。
【０１３０】
１つ又は複数の例外経路の妥当性を確認するために、１つ又は複数の経路が、例外条件の結果としてロボットにより取られてもよい。例えば、ピック中に部品又は対象物がロボットのグリッパに取り付けられそこなった場合、ロボットビンピッキングプロセス１０は、ロボットを原位置に戻るように誘導できる。ロボットが、部品のピック時にその動きに対抗する過剰な力に遭遇すると、ロボットビンピッキングプロセス１０は、ロボットを原位置に戻るように誘導することができる。これらの場合、妥当性確認では、これらの部品の成立性を、これらがユーザプログラムのフローの中で明示されていなくても、確認する必要があり得る。
【０１３１】
１つ又は複数の区間を妥当性確認から除外するために、ユーザは、プログラムフローの幾つかの区間を妥当性確認から除外することを選択してよい。例えば、１つ又は複数のコードパスは、妥当性を確認できない種類の動きを含んでいてもよい。幾つかの実施形態において、ユーザは、性能を最適化するために妥当性確認を行うように選択してよい。これらの場合、妥当性確認は、条件付きで、行われなくてよい。
【０１３２】
幾つかの実施形態において、ロボットビンピッキングプロセス１０は、経路の複数の区間の並行妥当性確認を行ってよい。例えば、性能を最適化するために、経路の複数のサブセクションは、並行して妥当性を確認することができる。
【０１３３】
上で説明したように、本発明は、方法のステップを実行するための機能を提供する各種のモジュールからなる方法及びそれに対応する機器の両方を提供する。モジュールは、ハードウェアとして実装されてよく、又は、コンピュータプロセッサにより実行されるソフトウェア又はファームウェアとして実装されてもよい。特に、ファームウェア又はソフトウェアの場合、本発明は、その上にコンピュータプロセッサにより実行されるためのコンピュータプログラムコード（すなわち、ソフトウェア又はファームウェア）を具現化したコンピュータ可読記憶構造を含むコンピュータプログラム製品として提供できる。
【０１３４】
上記の構成は本発明の原理の応用の例示にすぎないと理解されたい。当業者により、本開示の範囲から逸脱することなく、様々な改良や代替的構成が考案されてよい。
【図１】
2021528259.tif 000007
【図２】
2021528259.tif 000008
【図３】
2021528259.tif 000009
【図４】
2021528259.tif 000010
【図５】
2021528259.tif 000011
【図６】
2021528259.tif 000012
【図７】
2021528259.tif 000013
【図８】
2021528259.tif 000014
【図９】
2021528259.tif 000015
【図１０】
2021528259.tif 000016
【図１１】
2021528259.tif 000017
【図１２】
2021528259.tif 000018
【図１３】
2021528259.tif 000019
【図１４】
2021528259.tif 000020
【図１５】
2021528259.tif 000021
【図１６】
2021528259.tif 000022
【図１７】
2021528259.tif 000023
【図１８】
2021528259.tif 000024
【図１９】
2021528259.tif 000025
【図２０】
2021528259.tif 000026
【図２１】
2021528259.tif 000027
【図２２】
2021528259.tif 000028
【図２３】
2021528259.tif 000029
【図２４】
2021528259.tif 000030
【図２５】
2021528259.tif 000031
【図２６】
2021528259.tif 000032
【図２７】
2021528259.tif 000033
【図２８】
2021528259.tif 000034
【図２９】
2021528259.tif 000035
【図３０】
2021528259.tif 000036
【図３１】
2021528259.tif 000037
【図３２】
2021528259.tif 000038
【図３３】
2021528259.tif 000039
【図３４】
2021528259.tif 000040
【図３５】
2021528259.tif 000041
【図３６】
2021528259.tif 000042
【図３７】
2021528259.tif 000043
【図３８】
2021528259.tif 000044
【図３９】
2021528259.tif 000045
【図４０】
2021528259.tif 000046
【図４１】
2021528259.tif 000047
【図４２】
2021528259.tif 000048
【図４３】
2021528259.tif 000049
【図４４】
2021528259.tif 000050
【図４５】
2021528259.tif 000051
【図４６】
2021528259.tif 000052
【図４７】
2021528259.tif 000053
【図４８】
2021528259.tif 000054
【図４９】
2021528259.tif 000055
【図５０】
2021528259.tif 000056
【図５１】
2021528259.tif 000057
【図５２】
2021528259.tif 000058
【図５３】
2021528259.tif 000059
【図５４】
2021528259.tif 000060
【国際調査報告】
2021528259.tif 000061
2021528259.tif 000062
2021528259.tif 000063