(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-16
(45)【発行日】2024-05-24
(54)【発明の名称】マルチロボット運用環境におけるロボットの構成
(51)【国際特許分類】
B25J 13/00 20060101AFI20240517BHJP
【FI】
B25J13/00 Z
(21)【出願番号】P 2022544106
(86)(22)【出願日】2021-01-15
(86)【国際出願番号】 US2021013610
(87)【国際公開番号】W WO2021150439
(87)【国際公開日】2021-07-29
【審査請求日】2022-09-21
(32)【優先日】2020-01-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520296244
【氏名又は名称】リアルタイム ロボティクス, インコーポレーテッド
【氏名又は名称原語表記】REALTIME ROBOTICS, INC.
【住所又は居所原語表記】27 Wormwood St.,Suite #110,Boston,Massachusetts 02210 United States of America
(74)【代理人】
【識別番号】100105131
【氏名又は名称】井上 満
(74)【代理人】
【識別番号】100105795
【氏名又は名称】名塚 聡
(72)【発明者】
【氏名】コラサント,ルカ
(72)【発明者】
【氏名】マーレイ,シーン
【審査官】岩▲崎▼ 優
(56)【参考文献】
【文献】特表2008-502488(JP,A)
【文献】特開2005-022062(JP,A)
【文献】特開2001-166806(JP,A)
【文献】特開2015-208811(JP,A)
【文献】LIM, Zhen Yang et al.,"Multi-objective hybrid algorithms for layout optmization in multi-robot cellular manufacturing systems",Knowledge-Based Systems,volume 120,pages 87-98
【文献】HASSAN, Mahdi et al.,"An Approach to Base Placement for Effective Collaboration of Multiple Autonomous Industrial Robots",2015 IEEE International Conference on Robotics and Automation (ICRA),pages 3286-3291
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00ー21/02
(57)【特許請求の範囲】
【請求項1】
複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムにおける動作方法であって、前記方法は、
集団発生器を介してC個の候補ソリューションの集団を生成するステップであって、前記C個の候補ソリューションの集団の前記候補ソリューションのそれぞれは、前記ロボットのそれぞれのために、それぞれのベースの位置及び向き、少なくとも1つの定義されたポーズのそれぞれの組、及びそれぞれのターゲットシーケンスを指定し、前記それぞれのベースの位置及び向きが、前記マルチロボット動作環境における前記それぞれのロボットのベースについてのそれぞれの位置及び向きを指定し、前記少なくとも1つの定義されたポーズのそれぞれの組が前記マルチロボット動作環境における前記それぞれのロボットの少なくとも1つのそれぞれのホームポーズを指定し、前記それぞれのターゲットシーケンスがそれぞれのタスクのシーケンスを完了するために前記それぞれのロボットが移動するためのそれぞれの順序付けられたターゲットのリストを備える、C個の候補ソリューションの集団を生成するステップと、
前記ロボットの前記それぞれのベースの位置及び向き、前記ロボットのそれぞれの1つへの前記タスクの割当て、及び前記ロボットの前記それぞれのターゲットシーケンスのうちの2つ又はそれ以上についての2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって
前記ロボットのそれぞれのためのそれぞれの最適化されたベースの位置及び向き、前記ロボットのそれぞれのためのそれぞれの最適化されたタスク割当て、及び前記ロボットのそれぞれのためのそれぞれの最適化されたモーションプランを選択するために前記C個の候補ソリューションの集団に対する最適化を実行するステップと、
前記最適化からの出力として、前記ロボットのそれぞれのための前記それぞれの
最適化されたベースの位置及び向き、前記ロボットのそれぞれのためのそれぞれの
前記最適化されたタスク割当て、及び前記ロボットのそれぞれのためのそれぞれの
最適化されたモーションプランを提供するステップと、
を備える、動作方法。
【請求項2】
前記最適化からの出力として、前記ロボットのそれぞれのための前記それぞれの
最適化されたベースの位置及び向き、前記ロボットのそれぞれのための
前記それぞれの
最適化されたタスク割当て、及び前記ロボットのそれぞれのための
前記それぞれの
最適化されたモーションプランを提供するステップは、前記ロボットごとに、前記それぞれのロボットのC空間内の最適化された順序付けられたターゲットのリストの形態の実行されるべきそれぞれのタスクのシーケンスと、1つ又は複数の前記ターゲットにおける1つ又は複数の滞留持続時間とを指定する最適化されたタスク割当てを提供するステップと、衝突のない経路の組を指定する最適化されたモーションプランを提供するステップとを含み、前記衝突のない経路の組は前記順序付けられたターゲットのリスト内の連続するターゲットの各対の間のそれぞれの衝突のない経路を指定する、請求項1に記載の方法。
【請求項3】
前記C個の候補ソリューションの集団の前記候補ソリューションのそれぞれについて、前記タスクのシーケンスを完了するための時間、及び
マルチロボット環境シミュレータによって実行されるモデリングを介して前記タスクのシーケンスを完了する際に発生する衝突の割合又は確率を表すそれぞれの衝突値を決定するステップをさらに含む、請求項1又は2のいずれかに記載の方法。
【請求項4】
2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって前記C個の候補ソリューションの集団に対する最適化を実行するステップは、
前記候補ソリューションに関連するそれぞれのコストに少なくとも部分的に基づいて、オプティマイザエンジンを介して前記候補ソリューションのうちの1つを選択するステップを含み、前記それぞれのコストは、前記タスクのシーケンスを完了するための時間と、前記それぞれの候補ソリューションについて決定された前記衝突値とに少なくとも部分的に基づいている、請求項3に記載の方法。
【請求項5】
前記タスクのシーケンスを完了するためのそれぞれの時間、及びオプティマイザエンジンによるモデリングを介して発生する衝突の割合又は確率を表すそれぞれの衝突値を決定するステップは、
前記マルチロボット環境シミュレータを介して前記タスクのシーケンスの各タスクを仮想的に実行するステップと、
複数のエポックの各エポックについて、前記マルチロボット環境シミュレータを介して前記ロボットの少なくとも1つの部分のC空間位置をサンプリングするステップと、
順運動学を使用して衝突をチェックして、前記ロボットのそれぞれの1つの1つ又は複数の部分と前記ロボットの前記それぞれの1つの別の部分との間、前記ロボットの前記それぞれの1つと前記環境内の前記ロボットの別の1つとの間、及び前記ロボットの前記それぞれの1つと別のロボットではない前記マルチロボット動作環境内の別のオブジェクトとの間の潜在的な衝突を識別するステップと、
を含む、請求項3に記載の方法。
【請求項6】
前記順序付けられたタスクのリストは前記ロボットの前記C空間内の軌道の順序付けられたリストに等しく、複数の軌道、1つ又は複数のポーズでの1つ又は複数の滞留持続時間、ホームポーズ、及び前記ロボットの前記C空間内の1つ又は複数の他の定義された機能的ポーズを含み、仮想的に実行するステップは、前記複数の軌道と、前記1つ又は複数のポーズでの1つ又は複数の滞留持続時間、前記ホームポーズ、又は前記1つ又は複数の他の定義された機能的ポーズのうちの1つ又は複数とを仮想的に実行するステップを含む、請求項5に記載の方法。
【請求項7】
前記C個の候補ソリューションの集団のいくつかの候補ソリューションの各々について、少なくとも1回の反復ごとに、
摂動候補ソリューションを生成するために前記それぞれの候補ソリューションを摂動させるステップと、
前記摂動候補ソリューションをモデル化するステップと、
前記摂動候補ソリューションが前記それぞれの候補ソリューションよりも低い関連コストを有するかどうかを判定するステップと、
前記摂動候補ソリューションが前記それぞれの候補ソリューションよりも低い関連コストを有するという判定に応答して、前記C個の候補ソリューションの集団内の前記それぞれの候補ソリューションを前記摂動候補ソリューションに置き換えるステップと、
をさらに含む、請求項1又は2に記載の方法。
【請求項8】
収束の発生、反復回数の制限又は反復時間の制限に達するまで、複数の反復について、摂動させるステップ、モデル化するステップ、判定するステップ、及び置き換えるステップを繰り返す、請求項7に記載の方法。
【請求項9】
摂動候補ソリューションを生成するために前記それぞれの候補ソリューションを摂動させるステップは、候補ソリューションベクトルを摂動させるステップを含み、前記候補ソリューションベクトルは、複数の実数ベクトル要素と、各タスクについての1つの実数ベクトル要素を含み、前記実数ベクトル要素は、前記タスクのそれぞれの1つと、前記タスクのそれぞれの1つについての優先度と、前記タスクのそれぞれの1つを実行するように識別された前記ロボットの1つとのそれぞれの組合せを表す、請求項7に記載の方法。
【請求項10】
マルチロボット動作環境の少なくとも1つのモデル、前記マルチロボット動作環境で動作する前記ロボットの少なくとも2つの各々のそれぞれのモデル、及びタスクの組を含む入力を受信するステップをさらに含む、請求項1又は2に記載の方法。
【請求項11】
マルチロボット動作環境の少なくとも1つのモデル、前記マルチロボット動作環境で動作する前記ロボットの少なくとも2つの各々のそれぞれのモデル、タスクの組、及び、前記ロボットの少なくとも1つが少なくとも1つのタスクを実行する間に1つ又は複数のターゲットに滞留するための1つ又は複数の滞留持続時間、変数に対する境界又は制約の組、又は衝突をシミュレートすることについての時間制限を指定する時間隔の組のうちの少なくとも1つ、を含む入力を受信するステップをさらに含む、請求項1又は2に記載の方法。
【請求項12】
入力を受信するステップは、前記マルチロボット動作環境で動作することが許可されるロボットの総数に対する制限と、ロボットごとに許可されるタスクの最大数とのうちの少なくとも1つをさらに含む入力を受信するステップを含む、請求項11に記載の方法。
【請求項13】
前記集団発生器が擬似ランダム集団発生器であり、集
団発生器を介してC個の候補ソリューションの集団を生成するステップが、前記擬似ランダム集団発生器を介してC個の候補ソリューションの集団を擬似ランダムに生成するステップを含む、請求項1又は2に記載の方法。
【請求項14】
集団発生器を介してC個の候補ソリューションの集団を生成するステップが、純粋に擬似ランダムに生成されたC個の候補ソリューションの集団よりも、無効な候補ソリューションである可能性が低いC個の候補ソリューションの集団を生成するステップを含む、請求項1又は2に記載の方法。
【請求項15】
2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって前記C個の候補ソリューションの集団に対する最適化を実行するステップは、それぞれの前記ロボットのそれぞれのベースについてのそれぞれの最適化されたベースの位置及び向き、最適化されたタスク割当て、及び最適化されたモーションプラン、の共最適化された組み合わせと共に最適化された候補ソリューションを選択するステップを含む、請求項1又は2に記載の方法。
【請求項16】
複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するプロセッサベースのシステムであって、
少なくとも1つのプロセッサと、
少なくとも1つのデータ及びプロセッサ実行可能命令を記憶する少なくとも1つの非一時的プロセッサ可読媒体であって、前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されるときに、前記プロセッサに請求項1から15のいずれかの方法を実行させる、少なくとも1つの非一時的プロセッサ可読媒体と、
を備える、プロセッサベースのシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般に、マルチロボット動作環境又は共有作業空間におけるロボットの構成(又は、設定/コンフィギュレーション/configuration)に関し、また、そのような環境又は共有作業空間におけるロボット構成の最適化に関する。
【背景技術】
【0002】
様々な用途は、2つ又はそれ以上のロボットに共通の、又は他の方法で共有されるマルチロボット動作環境において、2つ又はそれ以上のロボットを使用するか、又は使用することを望む場合がある。マルチロボット動作環境は、共有作業空間の形態をとることができる。例えば、2つ又はそれ以上のロボットは共通の動作環境、例えば、ロボットが可動域で重なり合うシャーシにボルトをねじ込む環境、において、1つ又は複数のオブジェクト(又は、物体)又はワークピースについて、又はそれと共に、タスクを実行する際に使用されてもよい。
【0003】
ロボット制御やロボット工学において、モーションプラン(又は、動作計画)は基本的な問題である。モーションプランはロボットが典型的には、動作環境内の任意の障害物と衝突することなく、又は動作環境内の任意の障害物と衝突する可能性が低減させてタスクを完了するための、開始状態からターゲット(又は、目標)状態に追従することができる経路を指定する。モーションプランに対する課題は環境変化(例えば、環境内の障害物の位置又は向きの変化)を考慮しながら、速い速度でモーションプランを実行する能力を含む。課題は更に、比較的低コストの機器を用い、比較的低エネルギー消費で、限られた量の記憶装置(例えば、メモリ回路、例えば、プロセッサチップ回路)を用いてモーションプランを実行することを含む。
【発明の開示】
【発明が解決しようとする課題】
【0004】
マルチロボット動作環境又は共有作業空間(作業空間は一般にワークセルと呼ばれる)における2つ又はそれ以上のロボットの動作は、特定のクラスの問題を提示する。例えば、モーションプランは、ロボット又はロボットのロボット付属物(又は、付属肢/appendage)がタスクの実行中に互いに干渉し得る状況を考慮し、回避すべきである。
【0005】
共通の作業空間において複数のロボットを操作する1つのアプローチは、タスクレベルアプローチと呼ばれることができる。エンジニアはロボットが互いに衝突する可能性のある作業空間の部分(本明細書では干渉領域として定義される)を規定し、1つのロボットだけが任意の時点で作業空間の干渉領域にあるように個々のロボットをプログラミングすることによって、ロボットが衝突しないことを手動で確実にする(又は、保証する)ことができる。例えば、第1のロボットが作業空間の干渉領域に移動し始めると、第1のロボットはフラグをセットする。コントローラ(例えば、プログラマブル論理コントローラ(PLC))はそのフラグを読み取り、他のロボットが作業空間の干渉領域内に移動するのを、第1のロボットが干渉領域から出る際にフラグをデアサート(de-assert)するまで防止する。このアプローチは直感的であり、理解するのが簡単であるが、典型的には実施するのが困難であり、時間がかかり、最適化された結果をもたらさないことがある。タスクレベルの競合解消の使用は通常、たとえ暇なロボットが共有作業空間において有用な作業を実行することが技術的に可能であるとしても、ロボットのうちの少なくとも1つがかなりの時間暇になっていることになるので、このアプローチは必然的に低い作業スループットを有する。
【0006】
従来のアプローチでは、エンジニアのチームは通常、問題を分割し、より小さいサブ問題(例えば、ロボットへのタスクの割当て、各ロボットに割当てられたタスクの順序付け、各ロボットのためのモーションプラン)を互いに独立に最適化する。これはロボット/ロボット付属物が互いに衝突しないことを確実にするために、モーションを反復的にシミュレートすることを採用する場合があり、これは多くの計算時間を要し、最適化されたソリューション(又は、解決策)をもたらさない場合がある。加えて、作業空間に対する修正が、ロボット/ロボット付属物のうちの1つの軌道の変化をもたらす場合、ワークフロー全体が再検証されなければならない。このようなアプローチはもちろん最適ではなく、典型的にはエキスパートが一緒すれば良好な結果を生じるソリューションの組み合わせを見つけることを繰り返し試みる遅いプロセスを経ることを必要とする。
【課題を解決するための手段】
【0007】
本明細書では、マルチロボット動作環境においてロボットによって実行されるべきタスクの所与の組に基づいて、非同種のパラメータ(又は、不均一パラメータ/non-homogenous)の組、例えば、ワークセルレイアウトとタスクプランの共最適化(又は、同時最適化)された組み合わせにわたって共最適化される、マルチロボット構成のための解決策を提供する種々の方法及び装置が記載される。これは、オフライン又は実行時前の環境で実行され、これらのタイプの問題にグローバルオプティマイザを提供する。本発明者らは、このような問題に対する既存のグローバルオプティマイザのソリューションを知らない。
【0008】
入力はマルチロボット動作環境のモデル、ロボットのモデル、採用され得るロボットの総数に関する制限、達成されるロボットのためのタスクの組(又は、集合)、及び各ロボットに割り当てられ得るタスクの総数(すなわち、ロボットのターゲット容量)に関する制限を含み得る。入力はまた、任意選択で、例えば、タスク(例えば、ボルト又はナットをねじこむ)を完了するために、又は衝突を回避するために、ロボット又はその一部がターゲットに滞留するための1つ又は複数の滞留持続時間(又は、滞留時間/dwell time duration)を含み得る。入力はまた、任意選択で、1つ又は複数のパラメータ又は変数に対する境界又は制約の組、又は衝突をモデル化又はシミュレートするために提供される時間を制限する時間制限のうちの1つ又は複数を含むことができる。
【0009】
出力は問題に対する完全なソリューションを含むことができ、このソリューションは、有利には最適化されていることができる。特に、ソリューションは、2つ又はそれ以上の非同種パラメータの組にわたって共最適化するオプティマイザエンジン(又は、最適化エンジン)によって、候補ソリューションの集団(又は、母集団/集合/population)にわたって最適化されていてもよい。非同種パラメータは例えば、ロボットのそれぞれのベースの位置及び向き、ロボットのそれぞれのロボットへのタスクの割当て、及びロボットのそれぞれのターゲットシーケンスのうちの2つ又はそれ以上を含むことができる。タイミングに何らかの変動がない場合、出力を用いて、何らの修正なしにマルチロボット環境でロボットを制御することができる。代替的に、1つ又は複数のモーションプランナ(又は、動作計画装置)を実行時に使用して、例えば、タイミングのわずかなばらつきに起因する可能性がある衝突を回避することができる(例えば、時にはねじを締めるのに、他の時よりもわずかに長いか、又はわずかに短い時間がかかることがある)。
【0010】
出力は例えば、ワークセルレイアウトと、各ロボットについて、ターゲットの順序付けられたリスト又はベクトル(例えば、Robot1:{ターゲット7、ターゲット2、休止、ターゲット9})と、任意選択で、それぞれのターゲットにおける滞留持続時間と、連続するターゲットの各対の間の経路又は軌道(例えば、衝突のない経路又は軌道)とを含み得る。
【0011】
ワークセルレイアウトは、例えばデカルト座標における、各ロボットに対するベースのベースの位置及び向きを提供することができる。各ロボットベースのベースの位置及び向きはそれぞれの6タプル{X,Y,Z,r,p,y}で指定される(ここで、X、Y、及びZはそれぞれ、直交座標フレームのそれぞれの軸に沿った位置を示し、r(すなわち、ロール)は軸のうちの第1の軸の周りの回転量を示し、p(たとえば、ピッチ)は軸のうちの第2の軸の周りの回転量を示し、y(たとえば、ヨー)は、軸のうちの第3の軸の周りの回転量を示す)。
【0012】
グローバルオプティマイザは例えば、多変数混合整数最適化アルゴリズム、例えば、差分進化(DE:Differential Evolution)として知られるアルゴリズムに基づくことができる。特許請求の範囲はアルゴリズムが特許請求の範囲に明示的に記載されていない限り、DEアルゴリズムに限定されない。
【0013】
グローバルオプティマイザはロボットのベース配置(デカルト座標におけるもの)、ロボットの機能ポーズ(つまり、C空間におけるもの)、及びロボットごとのタスクプラン(それぞれのロボットのターゲットと休止の順序付きリスト)を最適化する。主要な最適化目標は待ち時間(例えば、目標を完了するまでの時間)であり得るが、他の目標は床面積の効率的な使用、エネルギー消費又は消耗(expenditure)、目標を完了するための動きの数、ロボットを並行して動作させる能力、ロボットの待ち時間を最小限に抑えること、ロボットの利用可能性、ステータスコンディション、及び/又は特定のタイプのタスクを実行するのに適したロボットの利用可能性(例えば、特定のタイプのエンドオブアームツール又はエンドエフェクタを有するロボットの利用可能性)等を含むことができる。したがって、本明細書で説明する構造及びアルゴリズムは、共有作業空間又はワークセル内で動作する2つ又はそれ以上のロボットの動作を容易にし、そのような配置及び動作を少なくともある程度最適化し、その共有作業空間内でそれぞれのタスクを実行するように動作している間に、ロボット又はロボットのロボット付属物が互いに衝突するリスクを潜在的に防止又は少なくとも低減する。本明細書で説明する構造及びアルゴリズムは、少なくともある程度最適化された自律的プラニングを実行することによって、マルチロボット作業空間のプログラミング労力を有利に低減することができる。入力は、動作環境、実行されるタスク(複数可)及びロボットの幾何学的モデルの記述に限定されてもよい。本明細書で説明する構造及びアルゴリズムは、有利にはロボットによって実行されるタスクを動的に割り振ることができる。
【図面の簡単な説明】
【0014】
図面において、同一の参照番号は、同様の要素又は作用を示す。図面における要素のサイズ及び相対位置は、必ずしも一定の縮尺で描かれてはいない。例えば、さまざまな要素の形状及び角度は一定の縮尺で描かれず、これらの要素のいくつかは、図面を見やすくするために、随時適当に拡大及び配置されている。さらに、描かれている要素の特定の形状は、特定の要素の実際の形状に関するいかなる情報も伝えることを意図しておらず、図面における認識を容易にするためにのみ選択されている。
【
図1】
図1は、少なくとも1つの図示された実装形態に従って、複数のロボットがタスクを実行するように動作し、構成システムがロボットを構成するための最適化を実行する、共有作業空間又はマルチロボット動作環境の概略図である。
【
図2】
図2は、1つ又は複数のプロセッサと、プロセッサ実行可能命令を記憶する1つ又は複数の非一時的プロセッサ可読媒体とを含み、少なくとも1つの図示された実施形態に従って、複数のロボットも示す、
図1の構成システムの機能ブロック図である。
【
図3】
図3は、複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムの動作の高レベルロボット構成方法を、少なくとも1つの図示された実装形態に従って示す。
【
図4】
図4は、複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムの動作の高レベルマルチロボット環境シミュレーション方法を、少なくとも1つの図示された実装形態に従って示す。
【
図5】
図5は、複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムの動作の低レベルマルチロボット環境シミュレーション方法を、少なくとも1つの図示された実装形態に従って示す。
【
図6】
図6は、複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムの動作の低レベルマルチロボット最適化DE方法を、少なくとも1つの図示された実装形態に従って示す。
【
図7】
図7は、差分進化(DE)アルゴリズムを使用する実装形態とともに使用され得るパラメータ化されたコスト関数を、少なくとも1つの図示された実装形態に従って示す。
【
図8】
図8は、少なくとも1つの図示された実装形態に従って、
図7のコスト関数をさらに図示するグラフである。
【
図9】
図9は、例えば、
図6の低レベルマルチロボット最適化DE方法を実行する際に摂動を可能にするフォーマットで候補ソリューションを表す際にプロセッサベースのシステムによって使用され得るデータ構造を、少なくとも1つの図示された実装形態に従って示す。
【
図10】
図10は、集団発生器の動作を詳細に示す複数のロボットが動作するであろうマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムの動作の低レベルマルチロボットDE候補ソリューション方法を、少なくとも1つの図示された実装形態に従って示す。
【発明を実施するための形態】
【0015】
種々の実施態様が正しく理解されるように、開示内容の詳細を以下に説明する。但し、当業者ならば、これら特定の細部の1つ又は複数を欠いても、又は他の方法、他の構成部材、他の材料でも実施が可能であることは容易に理解するところであろう。他の例では、コンピュータシステム、アクチュエータシステム、及び/又は通信ネットワークに関連する周知の構造は実施形態の説明を不必要に不明瞭にすることを避けるために、詳細に図示又は説明されていない。他の事例では実施形態の説明を不必要に不明瞭にすることを避けるために、1つ又は複数のオブジェクトなどの知覚データ及びボリュメトリック表現を生成するための周知のコンピュータビジョン方法及び技法は詳細に説明されていない。
【0016】
文脈上別段の要求がない限り、以下の明細書及び特許請求の範囲を通して、「含む(comprise)」という用語及び「含む(comprises)」及び「含む(comprising)」等のその変形は「含むが、これらに限定されない(including, but not limited to)」であるとして、確定していない(open)包括的な意味であると解釈されるべきである
【0017】
本明細書全体を通して、「1つの実装形態」又は「実装形態」又は「1つの実施形態」又は「実施形態」への言及は、実施形態に関連して記述された特定の特徴、構造又は特性が少なくとも1つの実装形態又は少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体の様々な場所における「1つの実装形態」又は「実装形態」又は「1つの実施形態において」又は「実施形態において」という表現の出現は、必ずしもすべてが同じ実装形態又は実施形態を指すわけではない。さらに、特定の特徴、構造又は特性は、1つ又は複数の実装形態又は実施形態において、任意の適切な方法で組み合わされ得る。
【0018】
本明細書及び添付の特許請求の範囲で使用されるように、単数表現「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈上明確な指示がない限り、複数の存在を包含するものである。また、表現「又は」は一般に、文脈上明確な指示がない限り、「及び/又は」を包含する意味で用いられる。
【0019】
本明細書及び添付の特許請求の範囲で使用されるように、「最適化する(optimizing)」、「最適化する(optimize)」及び「最適化された(optimized)」という用語は、改善された結果が準備され(being prepared)、生成され(being generated)、又は生成され(being produced)、又は準備され(has been prepared)、生成され(has been generated)又は生成された(has been produced)ことを意味する。そのような用語は、それらの相対的な意味で使用され、絶対的に最適な値が準備され(has been prepared)、生成され(has been generated)又は生成された(has been produced)ことを意味しない。
【0020】
本明細書及び添付の特許請求の範囲で使用されるように、用語「作業空間」又は「共有作業空間」は、2つ又はそれ以上のロボットが動作する現在の動作環境を指すために使用され、共有作業空間の1つ又は複数の部分はロボットが互いに衝突する可能性があるボリューム(又は、体積/空間)であり、したがって干渉領域と呼ぶことができる。動作環境は障害物及び/又はワークピース(すなわち、ロボットが相互作用し、作用し、又は作用するアイテム)を含むことができる。
【0021】
本明細書及び添付の特許請求の範囲で使用されるように、「タスク」という用語は、ロボットがその環境内の障害物と衝突することなくポーズ(又は、姿勢)AからポーズBに遷移するロボットタスクを指すために使用される。タスクは、おそらく、アイテムの把持又は非把持、アイテムの移動又はドロップ、アイテムの回転、アイテムの取り出し又は配置を含むことができる。ポーズAからポーズBへの遷移は、任意選択で、1つ又は複数の中間ポーズ間の遷移を含むことができる。
【0022】
発明の名称及び要約は便宜上のものであり、実施形態の範囲又は意味を解釈するものでもない。
【0023】
図1は複数のロボット102a,102b,102c(総称102)を含むロボットシステム100を示し、図示した実施例に従い、タスクを実行するために、共有作業空間104で動作する。
【0024】
ロボット102は、多種多様な形態のいずれかをとることができる。典型的には、ロボット102が1つ又は複数のロボット付属物103(1つだけ示す)及びベース105(1つだけ示す)の形態をとるか、又はそれらを有する。ロボット102は1つ又は複数のジョイントを有する1つ又は複数のリンケージと、制御信号又は駆動信号に応答してリンク機構を動かすように結合され作動可能なアクチュエータ(例えば、電気モータ、ステッパモータ、ソレノイド、空気圧アクチュエータ又は油圧アクチュエータ)とを含むことができる。空気圧アクチュエータは例えば、1つ又は複数のピストン、シリンダ、バルブ、ガスのリザーバ、及び/又は圧力源(例えば、コンプレッサ、ブロワ)を含み得る。油圧アクチュエータは例えば、1つ又は複数のピストン、シリンダ、バルブ、流体のリザーバ(例えば、低圧縮性油圧流体)、及び/又は圧力源(例えば、コンプレッサ、送風機)を含み得る。ロボットシステム100は、他の形態のロボット102、例えば自律型車両を使用することができる。
【0025】
共有作業空間104は典型的にはロボット102が動作及び移動することができる3次元空間を表すが、ある限定された実施形態では共有作業空間104が2次元空間を表すことができる。共有作業空間104は、ロボット102の少なくとも一部が衝突を回避するためにモーションが制御されない場合に、空間及び時間において重なり合うか、さもなければ衝突する可能性があるボリューム又は領域である。作業空間(又は、ワークスペース)104は、物理的空間又はボリューム、位置及び向きであり、物理的な空間又はボリュームは例えば、いくつかの基準フレーム、例えば、
図1に示される直交軸X、Y、及びZによって表される基準フレームに対するデカルト座標を介して都合よく表され得ることに留意されたい。作業空間104の基準フレームはロボット102のいずれかのそれぞれの「構成空間」又は「C空間」とは異なり、C空間は典型的にはロボット102のいずれかのそれぞれの基準フレームにおけるジョイント位置、向き又は構成の組によって表されることにも留意されたい。
【0026】
本明細書で説明するように、ロボット102a又はその一部は別のロボット102bの観点から検討する場合(すなわち、別のロボット102bのモーションプランの場合)、障害となる可能性がある。共有作業空間104はさらに、他の障害物、例えば、機械(例えば、コンベア106)、ポスト、柱、壁、天井、床、テーブル、人間及び/又は動物を含み得る。共有作業空間104はさらに、ロボット102がタスクを実行することの一部として操作する1つ又は複数のワークアイテム又はワークピース、例えば、1つ又は複数の小包、パッケージング、ファスナ、ツール、アイテム又は他のオブジェクトを含むことができる。
【0027】
ロボットシステム100は、1つ又は複数のプロセッサベースのマルチロボット構成最適化システム108(
図1に1つを示す)を含む。マルチロボット構成最適化システム108は入力109の組を受け取り、ロボット102の構成を指定する1つ又は複数のソリューション(又は、解/解決策/solution)を出力111として生成し、これにはそれぞれのベースの位置及び向き、少なくとも1つの定義されたポーズのそれぞれの組、及びロボット102のそれぞれに対するそれぞれのターゲットシーケンスが含まれ、これらは少なくともある程度まで最適化され得る。
【0028】
マルチロボット構成最適化システム108は、集団発生器110、マルチロボット環境シミュレータ112及びマルチロボットオプティマイザエンジン114を含み得る。
【0029】
集団発生器110は、提供された入力109に基づいて、候補ソリューション116の組を生成する。候補ソリューション116は構成問題に対する可能なソリューション、すなわち、作業空間104内のロボット102をどのように構成してタスクの組を達成するかを表す。任意の所与の候補ソリューション116は、実際に実行可能であっても、そうでなくてもよい。すなわち、初期候補は無効であり得る(例えば、ロボットが不可能な場所にいる、到達(又は、達成)不可能なターゲットがある実行不可能なタスクプランを有する又は衝突をもたらす)。いくつかの実装形態では、集団発生器がより良好な候補ソリューションを見つけようと試みることができる。
【0030】
マルチロボット環境シミュレータ112は各候補ソリューションに基づいてマルチロボット環境をモデル化し、例えばタスクを完了するのに必要な時間量、タスクを完了する際の衝突の確率又は割合(又は、レート/速度/rate)、候補ソリューションによって指定される特定の構成の実現可能性又は実現不可能性などの特定の属性を決定する。マルチロボット環境シミュレータ112は、1つ又は複数のコスト関数を介して生成されたコストに関してこれらを反映することができる。
【0031】
マルチロボットオプティマイザエンジン114は関連コスト118に少なくとも部分的に基づいて候補ソリューションを評価し、有利には、2つ又はそれ以上の非同種なパラメータの組にわたって、例えば、ロボットのそれぞれのベースの位置及び向き、ロボットのそれぞれの1つへのタスクの割当て、ロボットのためのそれぞれのターゲットシーケンス、及び/又は連続するターゲット間のそれぞれの軌道又は経路(例えば、衝突のない経路)、のうちの2つ又はそれ以上にわたって、共最適化する。連続するターゲット間の直線軌道が説明を容易にするために使用されるが、軌道は直線軌道である必要はない。
【0032】
入力109は例えば、床、壁、天井、柱、他の障害物等を表す、動作環境又は作業空間104を表す又は特徴付ける1つ又は複数の静的環境モデルを含むことができる。動作環境又は作業空間104は1つ又は複数のモデル、たとえば、動作環境内の床、壁、天井、障害物及び他の物体を表す幾何学的モデル(たとえば、点群)によって表され得る。これは、例えば、デカルト座標で表すことができる。
【0033】
入力109は例えば、寸法(又は、サイズ)又は長さ、リンクの数、ジョイントの数、ジョイントの種類、モーションの範囲、速度の制限、加速度又はジャークの制限等、幾何学及び運動学を指定する等、ロボット102の各々を表すか又は特徴付ける1つ又は複数のロボットモデルを含み得る。ロボット102は所与のロボット102a~102cのジオメトリ(又は、幾何学)、例えば、ジョイント、自由度、寸法(dimension)(例えば、リンケージ(又は、リンク機構)の長さ)、及び/又はロボット102a~102cのそれぞれのC空間によって定義する1つ又は複数のロボットの幾何学モデルによって表現されてもよい。
【0034】
入力109は例えば、ターゲット目標(例えば、位置又は構成)として表される、実行されるべきタスクの1つ又は複数の組を含み得る。タスクは例えば、それぞれのロボット102a~102cのエンドポーズ、エンド構成又はエンド状態、及び/又は中間ポーズ、中間構成又は中間状態に関して表すことができる。ポーズ(又は、姿勢)、構成又は状態は例えば、それぞれのロボット102a~102cのジョイント位置及びジョイント角度/回転(例えば、ジョイントポーズ、ジョイント座標)に関して定義されてもよい。入力109は任意選択的に、タスクを完了するために、ロボット又はその一部が所与のターゲットに滞留すべき時間の量を指定する、1つ又は複数の滞留持続時間を含むことができる(例えば、共通の作業空間で動作する2つ又はそれ以上のロボットによって、オブジェクトの積み重ねをそれぞれのタイプのオブジェクトの2つ又はそれ以上の別個の積み重ねに分類することを目的として、ねじ又はナットを締め付け、オブジェクトをピッキングし、配置する)。
【0035】
入力109は、作業空間104内に構成することができるロボットの数の制限を任意に含むことができる。入力109は、任意選択で、本明細書でタスク容量と呼ばれる、所与のロボット102a~102cに割り振ることができるタスク又はターゲットの数に対する制限を含むことができ、これは、例えば、構成問題の複雑さを制限して、その構成問題が利用可能な計算リソースを使用して、ある許容可能な期間内に解決可能、又は解決可能であることを保証するか、又は所与のロボット102a~102cへのタスク又はターゲットの見かけの過剰割り振りを所与として、遅すぎると推定される特定のソリューションを事前に排除し、作業空間104内で構成することができる。入力109は、任意選択で、変数又は他のパラメータに対する1つ又は複数の境界又は制約を含み得る。入力109は、任意選択で、例えば、候補ソリューションを精緻化して、構成問題が利用可能な計算リソースを使用して、何らかの許容可能な期間内に解決可能、又は解決可能であることを保証する際に使用され得る、反復サイクルの総数又は反復の時間制限を含み得る。
【0036】
ロボットシステム100は、任意選択で、ロボット102を制御するために通信可能に結合された1つ又は複数のロボット制御システム118(
図1には1つのみ示される)を含み得る。ロボット制御システム118は例えば、種々のアクチュエータに制御信号(例えば、駆動信号)を供給して、指定されたタスクを実行するために、ロボット102を種々の構成間で種々の指定されたターゲットに移動させることができる。
【0037】
ロボットシステム100は、任意選択で、ロボット102を制御するために通信可能に結合された1つ又は複数のモーションプランナ120(
図1には1つのみ示される)を含み得る。モーションプランナ120は本明細書の他の箇所で説明するように、例えば、マルチロボットオプティマイザエンジン114によって提供されるモーションプランに対する時間のわずかな偏差を考慮するために、又は障害物(例えば、動作環境又は作業空間104に入る人間)の予期しない出現を考慮するために、ロボット102のモーションプランを生成又は改良する。任意選択のモーションプランナ120は、動作環境においてロボット102にタスクを実行させるモーションプランを動的に生成するように動作可能である。モーションプランナ120、並びに他の構造及び/又は動作は、2019年6月24日に出願された米国特許出願第62/865,431号に記載されているものを使用することができる。
【0038】
含まれる場合、モーションプランナ120は、任意選択で、例えば知覚サブシステム(図示せず)によって提供される入力知覚データとして受信するように通信可能に結合される。知覚データは先験的に知られていない、作業空間104内の静的及び/又は動的オブジェクトを表す。知覚データは1つ又は複数のセンサ(例えば、カメラ、ステレオカメラ、飛行時間型カメラ、LIDAR)を介して感知され、及び/又は、知覚サブシステムによって障害物のデジタル表現に変換された生データとすることができ、これらはロボット102が様々な異なるシナリオのためのタスクを実行するように動作する環境の表現のそれぞれの離散化(discretizations)を生成し得る。
【0039】
さまざまな通信経路がさまざまな構造の間の線として
図1に示されており、場合によっては、矢印が入力109及び出力111の方向を示している。通信経路は例えば、1つ又は複数の有線通信経路(例えば、電気導体、信号バス又は光ファイバ)及び/又は1つ又は複数の無線通信経路(例えば、RF又はマイクロ波無線及びアンテナ、赤外線トランシーバを介して)の形態をとることができる。通信チャネルはたとえば、1つ又は複数の送信機、受信機、トランシーバ、ラジオ、ルータ、有線ポート、たとえばイーサネット(登録商標)ポート等を含み得る。
【0040】
図2は、少なくとも1つの例示された実装形態による、
図1のロボットシステム100の機能ブロック表現を示す。
【0041】
ロボットシステム100は、ロボット構成最適化システム108及びロボット102を含み得る。最適化システム108は介在ロボット制御システム118(
図1)を介して直接的に又は間接的に、ロボット102を制御するように通信可能に連結されてもよい。
【0042】
各ロボット102a~102cはリンク、ジョイント、エンドオブアームツール又はエンドエフェクタ、及び/又はジョイントの周りでリンクを移動させるように動作可能なアクチュエータ201a、201b、201c(3つ図示、総称して201)の組を含み得る。各ロボット102a~102cは例えば、ロボット構成最適化システム108から制御信号を受け取り、アクチュエータ201を駆動するための駆動信号を提供する、1つ又は複数のモーションコントローラ(例えば、モータコントローラ)202(1つだけが示されている)を含み得る。モーションコントローラ202は、アクチュエータ201の特定のものを制御するための専用であり得る。
【0043】
ロボット構成最適化システム108については、説明のために詳細に説明する。当業者は説明が例示的なものであり、説明及び図示されたロボット構成最適化システム108に変形が行われ得ることを認識するであろう。
【0044】
ロボット構成最適化システム108は、1つ又は複数のプロセッサ222と、1つ又は複数の関連する非一時的コンピュータ可読又はプロセッサ可読記憶媒体、例えば、システムメモリ224a、ディスクドライブ224b、及び/又はプロセッサ222のメモリ又はレジスタ(図示せず)を備える。非一時的なコンピュータ可読又はプロセッサ可読記憶媒体224a、224bは、システムバス229のような1つ又は複数の通信チャンネルを介してプロセッサ222aに通信接続されている。システムバス229は、メモリコントローラを備えたメモリバス、周辺バス、及び/又はローカルバスを含む、任意の既知のバス構造又はアーキテクチャを採用することができる。このような構成要素の1つ又は複数はさらに、あるいは代替として、1つ又は複数の他のパラレルケーブル、シリアルケーブル又は、例えば、ユニバーサルシリアルバス(「USB」)3.0、周辺機器構成要素相互接続エクスプレス(PCIe)等高速通信が可能なワイヤレスネットワークチャネル等、1つ又は複数の他の通信チャネル又はThunderbolt(登録商標)を介して互いに通信することもできる。
【0045】
ロボット構成最適化システム108はまた、例えば、ネットワークインターフェース(図示せず)を介して、ロボット構成最適化システム108の様々な構成要素に直接通信可能に結合されるか、又は間接的に通信可能に結合される、1つ又は複数のリモートコンピュータシステム212、例えば、サーバコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、ウルトラポータブルコンピュータ、タブレットコンピュータ、スマートフォン、ウェアラブルコンピュータ、及び/又はセンサー(
図2に図示せず)に通信可能に結合され得る。リモートコンピューティングシステム(たとえば、サーバコンピュータ(たとえば、入力源212))を使用して、入力データ(例えば、環境モデル、ロボットモデル、タスク、ターゲット目標、ロボットの総数に対する制限、ロボットごとのタスクに対する制限、変数又は他のパラメータに対する境界又は制約、反復に対する制限)をロボット構成最適化システム108及びロボットシステム100内の様々な構成要素にプログラムし、構成し、制御し、又はさもなければインターフェースし、又は提供することができる。このような接続はインターネットプロトコルを使用する1つ又は複数の通信チャネル、例えば、1つ又は複数のワイドエリアネットワーク(WAN)、例えばイーサネット、又はインターネットを介してもよい。いくつかの実装では実行時前(pre-runtime)の計算(例えば、出力の生成)はロボット102とは別のシステムによって実行されてもよいし、実行時(又は、ランタイム/runtime)の計算は1つ又は複数の任意の介在モーションプランナ120によって実行されてもよい(
図1)。この場合、いくつかの実装はロボット102a~102cに搭載されてもよい。
【0046】
先に述べたように、ロボット構成最適化システム108は1つ又は複数のプロセッサ222、(すなわち、回路)、非一時的記憶媒体224a、224b、及び種々のシステム構成要素を結合するシステムバス229を含み得る。プロセッサ222は、1つ又は複数の中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、グラフィックス処理装置(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、プログラマブル論理コントローラ(PLC)等の任意の論理処理装置であってよい。市販のコンピュータシステムの非限定的な例としては米国Intel(登録商標)社が提供するマイクロプロセッサのCeleron、Core 2、Itanium、Xeonファミリー、米国Advanced Micro Devices.が提供するK8、K10、Bulldozer及びBobcatシリーズマイクロプロセッサ、米国アップルコンピュータが提供するA5、A6及びA7シリーズマイクロプロセッサ、米国Qualcomm, Inc.が提供するSnapdragonシリーズマイクロプロセッサ、米国Oracle Corp.が提供するSPARCシリーズマイクロプロセッサを含むが、これらに限定されない。
図2に示される種々の構造の構成及び動作は、2017年6月9日出願の「MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS」と題された国際特許出願第PCT/US2017/036880号、2016年1月5日出願の「SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME」と題された国際公開第WO2016/122840号明細書、2018年1月12日出願の「APPARATUS, METHOD AND ARTICLE TO FACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVING DYNAMIC OBJECTS」と題される米国特許出願第62/616,783号、及び/又は2019年6月24日出願の「motion planning for multiple robots in shared workspace」と題された米国特許出願第62/865,431号に記述された又は記述されたものと類似の構造、技術及びアルゴリズムを実施又は使用することができる。
【0047】
システムメモリ224aは、リードオンリーメモリ(「ROM」)226、ランダムアクセスメモリ(「RAM」)228、フラッシュメモリ230、EEPROM(図示せず)を含むことができる。ROM226の一部を形成することができる基本入出力システム232(「BIOS」)は、起動中などに、ロボットシステム100内の要素間で情報を転送するのを助ける基本ルーチンを含む。
【0048】
ドライブ224bは例えば、磁気ディスクからの読出し及び磁気ディスクへの書込みのためのハードディスクドライブ、ソリッドステートメモリからの読出し及びソリッドステートメモリへの書込みのためのソリッドステート(例えば、フラッシュメモリ)ドライブ、及び/又はリムーバブル光ディスクからの読出し及びリムーバブル光ディスクへの書込みのための光ディスクドライブであってもよい。ロボット構成最適化システム108はまた、様々な異なる実施形態において、そのようなドライブの任意の組み合わせを含んでもよい。ドライブ224bは、システムバス229を介してプロセッサ222と通信することができる。ドライブ224bは当業者に知られているように、そのようなドライブとシステムバス229との間に結合されたインターフェース又はコントローラ(図示せず)を含むことができる。ドライブ224b及びその関連するコンピュータ可読媒体は、ロボットシステム100のためのコンピュータ可読又はプロセッサ可読及び/又は実行可能命令、データ構造、プログラムモジュール及び他のデータの不揮発性記憶装置を提供する。当業者は、WORMドライブ、RAIDドライブ、磁気カセット、デジタルビデオディスク(「DVD」)、ベルヌーイカートリッジ、RAM、ROM、スマートカード等、コンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体を使用することができることを理解するであろう。
【0049】
実行可能な指示及びデータはシステムメモリ224aに、例えば、オペレーティングシステム236、1つ又は複数のアプリケーションプログラム238、他のプログラム又はモジュール240及びプログラムデータ242に記憶することができる。アプリケーションプログラム238はプロセッサ(複数可)222に、候補ソリューションの集団を生成すること、候補ソリューションをモデリングすること、モデリングに少なくとも部分的に基づいてそれぞれの候補ソリューションに関連するコストを生成又は決定すること、ロボットのそれぞれのベースの位置及び向き、ロボットのそれぞれの1つへのタスクの割当て、及びロボットのそれぞれのターゲットシーケンスのうちの2つ又はそれ以上についての2つ又はそれ以上の非同種パラメータの組にわたって共最適化するオプティマイザエンジンによってC候補ソリューションの集団に対して最適化を実行すること、及び/又はマルチロボット動作環境においてロボットを位置決め及び向き付けし、そのロボットにタスクを実行させるために使用され得る出力を提供することのうちの1つ又は複数を実行させるプロセッサ実行可能命令を含み得る。そのような動作は(例えば、
図3及び10を参照して)本明細書に記載され、参照により本明細書に組み込まれる参照文献に記載されるように実行することができる。プロセッサ実行可能命令は少なくともいくつかの実装形態ではプロセッサ(複数可)222に、モーションプランを構築させる(たとえば、衝突検出又は評価、衝突検出又は評価に基づいてモーションプラングラフ内のエッジのコストを更新させ、経路探索又は評価を実行させる)。アプリケーションプログラム238はプロセッサ222に他の動作、例えば、任意選択で(センサを介して取り込まれた)知覚データを処理させる、1つ又は複数の機械可読及び機械実行可能命令をさらに含むことができる。アプリケーションプログラム238はプロセッサ222に、本明細書及び参照により本明細書に組み込まれる参照文献に記載される様々な他の方法を実行させる1つ又は複数の機械実行可能命令をさらに含むことができる。
【0050】
図2ではシステムメモリ224aに記憶されているように示されているが、オペレーティングシステム236、アプリケーションプログラム238、他のアプリケーション、プログラム/モジュール240及びプログラムデータ242は例えばドライブ(複数可)224bのような他の非一時的なコンピュータ又はプロセッサ可読媒体に記憶され得る。
【0051】
必須ではないが、実装の多くはコンピュータ又はプロセッサ可読媒体上に記憶され、候補ソリューションの生成、候補ソリューションのモデリング、たとえば、フォワードキネマティクス(又は、順運動学/forward kinematics)を介した候補ソリューションのモデリング、モデル内の衝突の検出、実行する時間及び他のコストの決定、原価計算機能(又は、コスティング関数/costing function)を介したコスト生成、一組の非同種なパラメータにわたる共最適化、軌道又は経路(たとえば、衝突のない経路)の生成、及び/又は他のモーションプランの動作を実行することができる1つ又は複数のコンピュータ又はプロセッサによって実行される、プログラムアプリケーションモジュール、オブジェクト又はマクロ等のコンピュータ実行可能命令の一般的なコンテキストで説明される。
【0052】
様々な実施形態では、動作が完全にハードウェア回路で、又はシステムメモリ224a等のメモリストレージに格納され、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、グラフィックス処理ユニット(GPU)プロセッサ、プログラマブル論理コントローラ(PLC)、電気的プログラマブルリードオンリーメモリ(EEPROM)等の1つ又は複数のマイクロプロセッサによって実行されるソフトウェアとして、又はハードウェア回路とメモリストレージに格納されているソフトウェアの組合せとして実行されることができる。
【0053】
ロボット構成最適化システム108は任意選択で、1つ又は複数の入力/出力構成要素、たとえば、モニタ又はタッチスクリーンディスプレイ244、キーパッド又はキーボード246、及び/又はコンピュータマウス248等のポインティングデバイスを含み得る。
【0054】
当業者は、例示された実装、並びに他の実装がロボット、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベース又はプログラマブルコンシューマエレクトロニクス、パーソナルコンピュータ(「PC」)、ネットワーク化されたPC、ミニコンピュータ、メインフレームコンピュータ等を含む、他のシステム構造及び配置、及び/又は他のコンピューティングシステム構造及び配置で実施され得ることを理解するであろう。実装又は実施形態又はその一部は、(例えば、構成時及び実行時に)通信ネットワークを介してリンクされたリモート処理デバイスによってタスク又はモジュールが実行される分散コンピューティング環境で実施することができる。分散コンピューティング環境では、プログラムモジュールがローカル及びリモート・メモリ記憶装置又はメディアの両方に配置されてもよい。しかしながら、ロボットの構成を改善するのを助けるためには、ある種の情報がどこにどのように記憶されるかが重要である。
【0055】
図3は、複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムの動作の高レベルロボット構成方法300を、少なくとも1つの図示された実装形態に従って示す。プロセッサベースのシステムは、少なくとも1つのプロセッサと、データ及びプロセッサ実行可能命令のうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、を備えることができる。少なくとも1つのプロセッサによって実行されると、プロセッサ実行可能命令は少なくとも1つのプロセッサに、ロボット構成方法300の様々な動作又は行為を実行させる。
【0056】
いくつかのロボットが、タスクの組を実行するように構成され得る。タスクは、タスクプランとして指定することができる。タスクプランは、番号Rのロボットによって実行される必要がある番号Tのタスクを指定することができる。タスクプランはロボット毎のベクトルとしてモデル化することができ、ベクトルはそれぞれのロボットが実行すべきタスク、例えば、{タスク7、タスク2、タスク9}の順序付きリストである。タスクベクトルはまた、任意選択で、ロボット又はその一部が所与の構成又はターゲットに滞留すべき持続時間を指定する滞留持続時間を含むことができる。タスクベクトルはまた、タスクを解決すること(たとえば、「よける」(get out of the way)又は記憶(storage)ポーズ)に直接関係しないホームポーズ及び/又は他の「機能的ポーズ」を指定し得る。ポーズは、ロボットのC空間において指定されてもよい。
【0057】
ロボット構成方法300は例えば、システム若しくはその構成要素の始動(又は、起動)若しくは電源投入(powering)、情報若しくはデータの受信、又は呼び出しルーチン若しくはプログラムによる呼び出し(call)若しくは起動(invoke)に応答して、302において開始することができる。ロボット構成方法300は、実行時(ランタイム)の前に起こり得る構成時(コンフィギュレーション時)又は実行時前(プレランタイム)に実行され得る。これは、有利なことに、応答性が特定の関心事ではないときに、最も計算集約的な作業のいくつかをランタイムの前に実行することを可能にする。
【0058】
304において、プロセッサベースのシステムの少なくとも1つの構成要素はマルチロボット環境、実行されるタスクの組を特徴付ける入力を受信し、問題に対する様々な制約又は境界を提供する。
【0059】
例えば、プロセッサベースのシステムは、マルチロボット動作環境の1つ又は複数のモデルを受信することができる。モデル(複数可)は複数のロボットが動作する物理的環境を表すことができ、例えば、環境内の床、壁及び様々な物体を表すことができる。
【0060】
また、例えば、プロセッサベースのシステムは、マルチロボット動作環境で動作する複数のロボットの各々のそれぞれのモデルを受信することができる。ロボットモデルはロボットの物理的属性、例えば、物理的寸法、可動範囲、ジョイント数、リンク数、リンクの長さ、エンドエフェクタのタイプ、速度制限、加速度制限等を表すことができる。
【0061】
また、例えば、プロセッサベースのシステムは、タスク又はターゲットの組を受信してもよい。ターゲットはタスクの組を完了するために、各ロボット又はその一部が順番に、又はある時間に移動しなければならない様々な位置を表すことができる。ターゲットは例えば、それぞれのロボットの構成空間(C空間)で表されてもよい。また、例えば、プロセッサベースのシステムはロボットのうちの少なくとも1つが少なくとも1つのタスクを実行している間に、1つ又は複数のターゲットに滞留するための1つ又は複数の滞留持続時間を任意選択で受信することができる。滞留持続時間は有利にはロボットのエンドエフェクタがそれぞれのタスク(例えば、締結具をねじ山付き開口部にねじ込み、ピースをレセプタクルに挿入する)を完了するために所与のターゲットに留まる必要がある予想される時間量を反映し得る。
【0062】
また、例えば、プロセッサベースのシステムは、任意選択で、変数に対する境界又は制約の組を受け取ることができる。マルチロボット環境における最適化に様々な境界及び制約を適用することができ、例えば、プロセッサベースのシステムは、任意選択で、移動のモデリング又は衝突のシミュレーションに関する時間制限を指定する時間隔の組を受信することができる。例えば、プロセッサベースのシステムは、任意選択で、マルチロボット動作環境において動作することが許可されるロボットの総数の制限を受信することができる。例えば、プロセッサベースのシステムは、任意選択で、ロボットごとに許可されるタスク又はターゲットの最大数を受信することができ、この場合も、利用可能な計算リソース又は時間が与えられたときに、解決するには複雑すぎる問題が提出されることを防止することができる。
【0063】
306において、集団発生器は、C個の候補ソリューションの集団を生成する。集団は、1つ又は複数の候補ソリューションを含むことができる。C個の候補ソリューションの集団内の候補ソリューションのそれぞれは、ロボットのそれぞれについて、それぞれのベースの位置及び向きと、少なくとも1つの定義されたポーズのそれぞれの組と、それぞれのターゲットシーケンスとを指定する。それぞれのベースの位置及び向きは、マルチロボット動作環境におけるそれぞれのロボットのベースのそれぞれの位置及び向きを指定する。少なくとも1つの定義されたポーズのそれぞれの組はマルチロボット動作環境におけるそれぞれのロボットの少なくともそれぞれのホームポーズ、及び/又は他の機能的ポーズ(例えば、よけるポーズ又は記憶ポーズ)を指定する。それぞれのターゲットシーケンスは、それぞれのロボットが移動してそれぞれのタスクシーケンスを完了するための、それぞれの順序付けられたターゲットリストを含む。集団発生器は、プロセッサ実行可能命令を実行する1つ又は複数のプロセッサとして実装され得る。
【0064】
集団発生器は、1つ又は複数の入力パラメータに基づいてC個の候補ソリューションの集団を擬似的にランダムに生成することができる擬似ランダム集団発生器の形態をとることができる。擬似ランダム集団発生器は、実際に実行可能なソリューションであってもなくてもよい候補ソリューションを生成する。集団発生器は代替的に、C個の候補ソリューションの純粋に擬似的にランダムに生成された集団よりも、それぞれが無効な候補ソリューションである可能性が低いC個の候補ソリューションの集団を生成する。そのようなものは、構成空間カバーを失うことなく、より速い最適化をもたらす候補ソリューションの集団を生成し得る。例えば、集団発生器は(例えば、壁又は他のオブジェクトによって占有される)不可能な位置にロボットのベースを配置する、ロボットによって到達不可能な1つ又は複数のターゲットを伴う実行不可能なタスク計画をもたらす、又は衝突をもたらすことになる候補ソリューションを回避するために、動作環境を考慮に入れることができる。擬似ランダム集団発生器が使用される場合、いくつかの技法、たとえば、
図6を参照して以下で説明する技法が、候補ソリューションを改善するために使用され得る。
【0065】
308において、オプティマイザエンジンは、C個の候補ソリューションの集団に対して最適化を実行する。特に、オプティマイザエンジンはロボットのそれぞれのベースの位置及び向き、ロボットのそれぞれの1つへのタスクの割当て、及びロボットのそれぞれのターゲットシーケンスのうちの2つ又はそれ以上について、2つ又はそれ以上の非同種なパラメータの組にわたって共最適化する。オプティマイザエンジンは例えば、それぞれのロボットのそれぞれのベースについてのそれぞれの最適化されたベースの位置及び方向、最適化されたタスク割当て、及び最適化されたモーションプラン、の共最適化された組み合わせと共に最適化された候補ソリューションを選択してもよい。オプティマイザエンジンは、プロセッサ実行可能命令を実行する1つ又は複数のプロセッサとして実装されてもよい。
図4を参照して後述するように、オプティマイザエンジンは最適化を実施(又は、事前形成)する際に、マルチロボット環境シミュレータと相互作用してもよく、例えば、シミュレートされるべき候補ソリューションを提供し、それぞれの候補ソリューションの効率(例えば、完了までの時間)及び衝突の確率又は割合を特徴付けるマルチロボット環境シミュレータによって生成又は決定されるコストを受け取る。オプティマイザエンジンは候補ソリューションに関連するそれぞれのコストに少なくとも部分的に基づいて候補ソリューションのうちの1つを選択することができ、それぞれのコストは、タスクのシーケンスを完了する時間と、それぞれの候補ソリューションについて決定された衝突値とに少なくとも部分的に基づいている。
【0066】
310において、オプティマイザエンジンは、最適化からの出力を提供する。特に、オプティマイザエンジンは出力として、ロボットのC空間内のそれぞれのターゲットにおける滞留持続時間を伴うか又は伴わない、ロボットの各々のための衝突のない(又は、コリジョンフリーの)経路の組、ロボットの各々のためのそれぞれのタスク割当て、ロボットの各々のためのそれぞれのモーションプラン、及び/又は、ロボットの各々のためのそれぞれのベースの位置及び向きのうちの1つ又は複数を提供し得る。その出力は、ロボットごとに、それぞれのロボットのC空間内のターゲットにおける最適化された順序付きリストの形態の、実行されるべきそれぞれのタスクのシーケンスと、1つ又は複数のターゲットにおける1つ又は複数の滞留持続時間とを指定する、最適化されたタスク割当てを含んでもよい。その出力は、追加的に又は代替的に、衝突のない経路の組を指定する最適化されたモーションプランを含むことができ、衝突のない経路の組は、ターゲットの順序付けられたリスト中の連続するターゲットの各対の間のそれぞれの衝突のない経路を指定する。少なくともいくつかの実装形態では、出力が1組のタスクを実行するようにロボットを駆動するのに十分である。少なくともいくつかの実装形態では、モーションプランナがモーションプランを精緻化するために使用され得る。
【0067】
高レベルロボット構成方法300は、例えば再び起動されるまで、312において終了することができる。高レベルロボット構成方法300は順序付けられたフローに関して説明されるが、様々な行為又は動作は多くの実装形態では同時に又は並行して実行される。
【0068】
図4は、複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムの動作の高レベルマルチロボット環境シミュレーション方法400を、少なくとも1つの図示された実装形態に従って示す。プロセッサベースのシステムは、少なくとも1つのプロセッサと、データ及びプロセッサ実行可能命令のうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、を備えることができる。少なくとも1つのプロセッサによって実行されると、プロセッサ実行可能命令は少なくとも1つのプロセッサに、マルチロボット環境シミュレーション方法400の様々な動作又は行為を実行させる。マルチロボット環境シミュレーション方法400はマルチロボット環境シミュレータによって実行されてもよく、マルチロボット環境シミュレータはマルチロボット環境における動きのシミュレーション専用である、1つの別個のプロセッサ又は複数のプロセッサによって実装されてもよい。代替的に、マルチロボット環境シミュレータは、例えば最適化を実行する他の動作を実行する1つ又は複数のプロセッサによって実装されてもよい。
【0069】
マルチロボット環境シミュレーション方法400は例えば、システムの始動若しくは電源投入、情報若しくはデータの受信、又は呼び出しルーチン若しくはプログラムによる呼び出し若しくは起動(例えば、高レベルロボット構成方法300による起動)に応答して、402において開始することができる。
【0070】
404において、マルチロボット環境シミュレータは、例えばオプティマイザエンジン又は集団発生器から候補ソリューションを受信する。
【0071】
406において、マルチロボット環境シミュレータは、特定の候補ソリューションに基づいてマルチロボット環境内のロボットをモデル化する。候補ソリューションは例えば、オプティマイザエンジンによってマルチロボット環境シミュレータに提出されるか、又は提供されてもよい。従来のモデリングパッケージ、例えば、候補ソリューションに基づいてロボットの動きをモデリングするためにフォワードキネマティクスを採用するモデリングパッケージを採用することができる。
【0072】
408において、マルチロボット環境シミュレータは、マルチロボット環境シミュレータによって実行されるモデリングを介して、タスクのシーケンスを完了するためのそれぞれの時間を決定する。決定は、互いに待機しなければならない可能性がある全てのロボットによるタスクのシーケンスを完了するための全体的な時間を決定することを含むことができる。そのようなことは、例えば、ロボットの各々についてそれぞれのタスクを完了するためのそれぞれの時間を決定することを含むことができる。
【0073】
410において、マルチロボット環境シミュレータは、マルチロボット環境シミュレータによって実行されるモデリングを介して、タスクのシーケンスを完了する際に(又は、完了するまでに/in completing)発生する衝突の割合又は確率を表す衝突値を決定する。決定は、全てのロボットによるタスクのシーケンスの完了のための全体的な衝突値を決定することを含むことができる。そのようなことは、例えば、ロボットの各々についてそれぞれの衝突値を決定することを含み得る。
【0074】
412において、マルチロボット環境シミュレータは、タスクのシーケンスを完了するための決定された時間と、決定された衝突値とを、例えば、オプティマイザエンジンに提供する。いくつかの実装形態では、マルチロボット環境シミュレータが本明細書の他の箇所で説明されるように、2つ又はそれ以上の非同種のパラメータにわたって共最適化され得る値を形成するためのオプティマイザエンジンによる処理のために、決定された時間及び衝突値を別個の値として提供する。
【0075】
マルチロボット環境シミュレーション方法400は、例えば再び起動されるまで、414において終了することができる。マルチロボット環境シミュレーション方法400は順序付けられたフローに関して説明されるが、様々な行為又は動作は多くの実装形態では同時に又は並行して実行される。
【0076】
図5は、複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムの動作の低レベルマルチロボット環境シミュレーション方法500を、少なくとも1つの図示された実装形態に従って示す。プロセッサベースのシステムは、少なくとも1つのプロセッサと、データ及びプロセッサ実行可能命令のうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、を備えることができる。少なくとも1つのプロセッサによって実行されると、プロセッサ実行可能命令は少なくとも1つのプロセッサに、マルチロボット環境シミュレーション方法500の様々な動作又は行為を実行させる。マルチロボット環境シミュレーション方法500はマルチロボット環境シミュレータによって実行されてもよく、マルチロボット環境シミュレータはマルチロボット環境における動きのシミュレーションに専用である、1つの別個のプロセッサ又は複数のプロセッサによって実装されてもよい。代替的に、マルチロボット環境シミュレータは、例えば最適化を実行する他の動作を実行する1つ又は複数のプロセッサによって実装されてもよい。
【0077】
マルチロボット環境シミュレーション方法500は、例えば、システムの始動若しくは電源投入、情報若しくはデータの受信、又は呼び出しルーチン若しくはプログラムによる呼び出し若しくは起動(例えば、高レベルロボット構成方法300による起動)に応答して、502において開始することができる。
【0078】
504において、マルチロボット環境シミュレータは評価又は考慮の対象である候補ソリューションによって指定されるように、各ロボットのタスクのシーケンスで各タスクを仮想的に実行する。タスクのシーケンスは、タスクのそれぞれの順序付けられたリストとして指定され得る。タスクの順序付けられたリストは、それぞれ、ロボットのC空間における軌道の順序付けられたリストと等価である。タスクの順序付けられたリストは連続するポーズ又は構成(例えば、ジョイント構成)の間の複数の軌道、1つ又は複数のポーズでの1つ又は複数の滞留持続時間、ホームポーズ、及びロボットのC空間における1つ又は複数の他の定義された機能的ポーズ、例えば、収納されたポーズ又は「よける」ポーズを含み得る。各タスクを仮想的に実行するために、プロセッサ実行可能命令は少なくとも1つのプロセッサによって実行されると、プロセッサに、複数の軌跡と、1つ又は複数のポーズでの1つ又は複数の滞留持続時間、ホームポーズ、又は1つ又は複数の他の定義された機能ポーズのうちの1つ又は複数とを仮想的にシミュレートさせる。
【0079】
506において、複数のエポック(epoch)の各エポック(例えば、0.1s又は何らかの選択された入力値)に対して、マルチロボット環境シミュレータは、少なくとも1つのロボットの一部のC空間位置をサンプリングする。マルチロボット環境シミュレータは、順運動学を使用して、ロボットのそれぞれの1つの1つ又は複数の部分と当該ロボットのそれぞれの1つの別の部分との間、ロボットのそれぞれの1つと環境内のロボットの別の1つとの間、及びロボットのそれぞれの1つと別のロボットではないマルチロボット動作環境内の別のオブジェクトとの間の潜在的な衝突を識別(又は、特定)する。
【0080】
マルチロボット環境シミュレーション方法500は、例えば再び起動されるまで、508において終了することができる。低レベルマルチロボット環境シミュレーション方法500は順序付けられたフローに関して説明されるが、様々な行為又は動作は多くの実装形態では同時に又は並行して実行される。
【0081】
説明されるシステム及び方法は、候補ソリューションを精緻化又は改善するために様々なアプローチを採用し得る。例えば、いくつかのアプローチはベースソリューションから開始し、ベースソリューションを改善することができる。また、例えば、いくつかのアプローチは遺伝的アルゴリズム又はアプローチ、例えば、差分進化(DE)アルゴリズム又は類似の技法を使用し得る。DEアルゴリズムのバージョンは、以下の
図6を参照して説明される。
【0082】
図6は、複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムの動作の低レベルマルチロボット最適化DE方法600を、少なくとも1つの図示された実装形態に従って示す。プロセッサベースのシステムは、少なくとも1つのプロセッサと、データ及びプロセッサ実行可能命令のうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、を備えることができる。少なくとも1つのプロセッサによって実行されると、プロセッサ実行可能命令は少なくとも1つのプロセッサに、マルチロボット最適化方法600の様々な動作又は行為を実行させる。マルチロボット最適化方法600はオプティマイザエンジンによって実行されてもよく、オプティマイザエンジンはマルチロボット環境のオプティマイザエンジンに専用である、1つの別個の又は複数のプロセッサによって実装されてもよい。代替的に、マルチロボット環境シミュレータは、他の動作を実行する1つ又は複数のプロセッサによって実装されてもよい。
【0083】
マルチロボット環境シミュレーション方法600は、例えば、システムの始動若しくは電源投入、情報若しくはデータの受信、又は呼び出しルーチン若しくはプログラムによる呼び出し若しくは起動(例えば、高レベルロボット構成方法300による起動)に応答して、502において開始することができる。
【0084】
604において、集団発生器は、候補ソリューションの集団を生成する。
【0085】
606において、外側ループカウンタIは、例えばゼロに初期化される。608において、外側ループカウンタIは例えば、I+1としてインクリメントされる。
【0086】
610において、候補ソリューションを、摂動(perturbation)を許容するフォーマットで表す。例えば、候補ソリューションは、候補ソリューションベクトルとして表すことができる。候補ソリューションベクトルは例えば、複数の実数ベクトル要素、例えば、タスクごとに1つの実数ベクトル要素を含むことができる。実数ベクトル要素は、タスクのそれぞれの1つと、タスクのそれぞれの1つに対する優先度と、タスクのそれぞれの1つを実行するように識別されたロボットの1つとのそれぞれの組合せを表すことができる。
【0087】
612において、オプティマイザエンジンは候補ソリューションIを摂動し、又は、候補ソリューションIを摂動させて摂動候補ソリューションI’を生成する。例えば、オプティマイザエンジンは候補ソリューションベクトルの実数ベクトル要素(すなわち、実数値)を修正することができる。
【0088】
614において、マルチロボット環境シミュレータは摂動候補ソリューションI’をモデル化し、例えば、摂動候補ソリューションI’のためのタスクのシーケンスを完了するための時間と、摂動候補ソリューションI’のためのタスクのシーケンスを完了する際に生じる衝突の割合又は確率を表す衝突値とを決定する。
【0089】
616において、オプティマイザエンジン又はマルチロボット環境シミュレータは摂動候補ソリューションI’のためのコスト値を決定する。決定コスト値は摂動候補ソリューションI’のためのタスクのシーケンスを完了するために決定された時間と摂動候補ソリューションI’のための決定された衝突値との関数であってもよい。DEではコスト関数が区分的な対数関数であるが、例えば、
図7のパラメータ化700及び
図8のグラフ800によって表されるように、パラメータ化することができる。
図7ではパラメータ「task_reachability」が(到達可能なターゲット目標の数)/(ターゲット目標の総数)に等しい。したがって、すべてのターゲットが到達可能な場合、パラメータ「task_reachability」の値は1になる。
【0090】
618において、オプティマイザエンジン又はマルチロボット環境シミュレータは、摂動させられた候補ソリューションI’が候補ソリューションIよりも低い関連コストを有するかどうかを決定する。
【0091】
620において、摂動候補ソリューションI’が候補ソリューションIよりも低い関連コストを有するという決定に応答して、オプティマイザエンジンは、C個の候補ソリューションの集団におけるそれぞれの候補ソリューションIを摂動候補ソリューションI’に置き換える。摂動候補ソリューションI’が候補ソリューションIよりも低い関連コストを有しないという決定に応答して、オプティマイザエンジンは、C個の候補ソリューションの集団を変更せずに、制御を直接622に渡す。
【0092】
622において、オプティマイザエンジンは、内側のループ反復終了条件が発生したかどうかを判定する。例えば、オプティマイザエンジンは収束が発生したとき、反復回数の制限に達したかどうか、及び/又は反復時間の制限に達したかどうかを判定する。収束は例えば、候補ソリューションの現在の集団にわたるコストの標準偏差がイプシロン値よりも小さい場合に発生したとみなされ得る。
【0093】
終了条件が発生した場合、制御は626に進み、マルチロボット環境シミュレーション方法600は例えば、再び起動されるまで終了することができる。終了条件が発生していない場合、制御は624に進み、オプティマイザエンジン又はマルチロボット環境シミュレータは摂動させられる候補ソリューションの集団内に、より多くの候補ソリューションがあるかどうかを判定する。摂動させられる候補ソリューションの集団内に、より多くの候補ソリューションがある場合、制御は608に戻り、内側のループカウンタがインクリメントされ、次の候補ソリューションが摂動させられ、分析される。摂動させられる候補ソリューションの集団内にそれ以上候補ソリューションが存在しない場合、制御は606に戻り、内側のループカウンタが再初期化され、候補ソリューションの更新された可能性のある集団を通る別のパスが実行され得る。
【0094】
マルチロボット環境シミュレーション方法600の様々な動作は複数の反復について繰り返すことができ、終了条件(例えば、収束)が満たされるまで、候補ソリューションの集団を精緻化する。
【0095】
低レベルマルチロボット最適化DE方法600は順序付けられたフローに関して説明されるが、様々な行為又は動作は多くの実装では同時に、又は並行して実行される。
【0096】
図9は、例えば、低レベルマルチロボット最適化DE方法600(
図6)を実行する際に摂動を可能にするフォーマットで候補ソリューションを表す際にプロセッサベースのシステムによって使用され得るデータ構造900を、少なくとも1つの図示された実装形態に従って示す。
【0097】
候補ソリューションIは有利には数値のベクトルで表されることができ、その結果、システムは、数値に対して1つ又は複数の関数を実行して、数値、したがって、候補ソリューションを「摂動」させて摂動候補ソリューションI’を生成し得る。候補ソリューションを表すための様々な方法がある。1つのアプローチが
図9に示されるデータ構造900を参照して本明細書に記載される。システムは、このアプローチ又は他のアプローチを使用して、候補ソリューションを表すことができる。
【0098】
候補ソリューションは最初に、1次元(1D)ベクトルに平坦化される2次元(2D)行列として表すことができる。2D行列では、行はタスクに対応する。したがって、T個のタスクの問題の場合、T個の行が存在する。2D行列では、列はロボットと優先度に対応する。P個の優先度レベルとR個のロボットが存在する場合、したがって、P*R個の列が存在する。
図9に示す例は、3つのロボット、3つの優先度レベル及び4つのタスクを有する。使用中(使用する際には)、特定の問題は
図9に示されたものとは異なる数のロボット、異なる数の優先順位レベル及び異なる数のタスクを有する可能性がある。図示された例は理解を容易にするために簡略化されている。
【0099】
各タスクは単一のロボットに割り当てられ、これは、どのロボットがどの優先度でそのタスクを実行するかを示す、マークされた(すなわち、アスタリスク*でマークされた)正確に1つのエントリを有する各行によって
図9に示される。所与のロボットは、ロボット当たりのタスク容量としての入力において指定される最大数までのタスクを実行することができる。特に、所与のロボットは、優先度レベルごとに1つのタスクしか実行できない。つまり、列ごとにアスタリスク(*)は1つだけである。
【0100】
システムは、2D行列をタスクごとに1つのベクトル要素を有する長さTの1Dベクトルに平坦化することができる。ベクトル要素は、1から始まる2D行列の「入力番号」に対応する。したがって、
図9に示す例では、タスク1の値は2、タスク2の値は13(最初の行には9個のエントリがあり、次にタスク2の割り当て(アスタリスク*を参照)は行2の4番目のエントリにある)、タスク3の値は21、タスク4の値は36である。注目すべきことに、ベクトル要素はすべて整数である。
【0101】
システムは、結果の整数ベクトル<2,13,21,36>を正規化して、すべての値が0から1の間になるようにすることができる。例えば、システムは各値を、行列内のエントリの総数で除算することができ、例えば、P*R*T=36である。結果として得られる正規化された実数値ベクトルは<2/36、13/36、21/36、36/36>であり、個々のベクトル要素の和は1である。
【0102】
候補実数値ベクトルVを摂動させるために、システムは最初に、いくつかの(例えば、3つの)他のランダムに選択された候補(例えば、A、B及びC)をとり、これらのランダムに選択された候補(例えば、A、B及びC)を、すぐ上で説明したのと同じ方法で正規化して、それぞれ正規化された1Dベクトルで表すことができる。システムは、摂動実数値ベクトルV’を計算することができる。例えば、システムは、摂動ベクトルV’をA+mut*(C-B)に等しいものとして計算することができる。
【0103】
次に、システムは例えば、ベクトルVと摂動ベクトルV’のベクトル要素をランダムに混合することによって、摂動候補Vpを計算することができる。すなわち、摂動候補Vpの各要素、例えばVp[i]について、システムはV[i]又はV’[i]のいずれかをランダムに選択する。選択は例えば、選択が50/50でないように選択を歪めることができるパラメータによって重み付けすることができる。システムは摂動候補を表す1Dベクトルにスケールアップするために、摂動候補VpにP*R*Tを掛けることができる。1D実数値ベクトルから2D行列に戻すために、システムは最初に、実数値を整数に丸める。そこから、システムは、これらの整数値を使用して、空白の2D行列に書き込む(又は、2D行列をマークアップする)ことができる。
【0104】
図10は、集団発生器の動作を詳細に示す複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムの動作の低レベルマルチロボットDE候補ソリューション方法1000を、少なくとも1つの図示された実装形態に従って示す。プロセッサベースのシステムは、少なくとも1つのプロセッサと、データ及びプロセッサ実行可能命令のうちの少なくとも1つを記憶する少なくとも1つの非一時的プロセッサ可読媒体と、を備えることができる。少なくとも1つのプロセッサによって実行されると、プロセッサ実行可能命令は少なくとも1つのプロセッサに、マルチロボットDE候補ソリューション方法1000の様々な動作又は行為を実行させる。マルチロボットDE候補ソリューション方法1000はオプティマイザエンジンによって実行されてもよく、オプティマイザエンジンはマルチロボット環境のオプティマイザエンジンに専用である、1つの別個又は複数のプロセッサによって実装されてもよい。代替的に、マルチロボット環境シミュレータは、他の動作を実行する1つ又は複数のプロセッサによって実装されてもよい。
【0105】
グローバルオプティマイザは多変数混合整数最適化アルゴリズム、例えば、差分進化(DE)として知られるアルゴリズムに基づくことができる。特許請求の範囲はアルゴリズムが特許請求の範囲に明示的に記載されていない限り、DEアルゴリズムに限定されない。
【0106】
グローバルオプティマイザは、ロボットのベースの配置(デカルト座標で等)、ロボットの機能的ポーズ(例えば、C空間で)及びロボットごとのタスクプラン(ターゲットの順序リスト又はベクトルと滞留持続時間)を最適化する。主要な最適化目標は全体的な待ち時間であり得るが、他の目標には利用可能なフロアスペースの最適化された使用、最小のエネルギー使用等を含めることができる。
【0107】
オプティマイザシステムは3つのコンポーネント、すなわち、オプティマイザエンジン、マルチロボット環境シミュレータ及び候補ソリューション発生器(例えば、シード発生器)を含み得る。
【0108】
以下でさらに詳細に説明するように、候補ソリューション発生器はC個の候補ソリューションの集団を生成し、任意の所与の候補は、実行可能であっても、実行可能でなくてもよい。
【0109】
以下でさらに詳細に説明するように、オプティマイザエンジンは例えば、候補ソリューション、例えば、候補Pの集団のうちの1つを摂動させ、得られる摂動候補P’がより低いコストを有するかどうかを見ることによって、より良好な候補ソリューションを見つけようとする。もしそうであれば、摂動候補P’は集団中の候補Pを置き換える。候補Cの総数は変化しない。
【0110】
候補ソリューションのコストを見つけるために、マルチロボット環境シミュレータは候補ソリューションをシミュレートする。所与の候補ソリューションはC空間における軌道の順序付けられたリストに等しい、各ロボットに対するタスクの順序付けられたリストを含む。時間のエポック(例えば、0.1秒又は何らかの選択された入力値)毎に、マルチロボット環境シミュレータは、各ロボットのC空間内の位置をサンプリングし、順運動学を採用して、ロボットの仮想表現が、それ自身、別のロボット又は動作環境内の何らかの障害物若しくはオブジェクトと衝突しているかどうかをチェックする。マルチロボット環境シミュレータは、候補ソリューションが完全に実行されるまでの時間を決定する。マルチロボット環境シミュレータは衝突確率又は割合(例えば、ロボットが自身、別のロボット又は動作環境内の障害物若しくはオブジェクトと少なくとも1つの衝突が存在するエポックのフラクション(又は、割合))を決定する。候補ソリューションの集団の生成は、衝突のないモーションプランを生成する必要はなく、むしろ単に衝突割合を追跡することに留意されたい。衝突のない経路を必要としないため、処理が大幅に高速化されるが、一部の実装ではこの段階で衝突のない径路をその代わりに生成できる。候補のコストは少なくともこれら2つの数(例えば、ランタイム及び衝突率)の関数である。DEでは、このコスト関数がパラメータ化することができる区分的対数値(piecewise-logarithmic value)である。
【0111】
全体的なワークフローは、オプティマイザが候補を生成し、シミュレータがそれらのコストを評価するサイクルを含む。このプロセスは、コストの標準偏差が何らかのイプシロン値よりも小さくなる等、何らかの収束基準まで繰り返される。
【0112】
候補ソリューション生成器1002は、各種の動作又は行為を実行して候補ソリューションを生成する。
【0113】
1004において、候補ソリューション生成器1002は、様々な可変境界、固定パラメータ、タスク又はターゲット目標及び集団サイズを受信する。1006において、候補ソリューション生成器1002は、各ロボットのベースのためのベース位置及び向きを生成する。1008において、候補ソリューション生成器1002は仮想マルチロボット動作環境内のロボットベースの位置を仮想的に配置又は位置決めし、マルチロボットシミュレータ1009にそれを提供し、これは候補ソリューションをモデル化し、候補ソリューション生成器1002にフィードバックを提供する。
【0114】
1010において、候補ソリューション生成器1002は各ロボットのために、一様にランダムなホームポーズ及び/又は他の機能的ポーズを生成する。
【0115】
1012において、各タスク又はターゲット目標ごとに、候補ソリューション生成器1002はタスクを完了し又はターゲット目標を1012aにおいて到達することができるロボットの組を見つけ、それらのロボットのうちの1つを1012bにおいてランダムに選択し、1012cにおいて組が空(実行不可能なタスクプランを示す)か否かを判定し、組が空の場合は1006に戻り、それ以外の場合は選択されたロボットにタスク又はターゲット目標を1012dにおいて割当てる。
【0116】
1014において、ターゲットロボットごとに、候補ソリューション生成器1002はロボットに割り当てられたタスク又はターゲット目標の総数が1014aにおいてロボットのために指定された制限又はタスク又はターゲット容量を超えているかどうかを決定し、過剰に割り当てられた場合に1006に戻り(実行不可能なタスクプランを示し)、それ以外の場合には割り当てられたタスク又はターゲット目標のランダムなシーケンスが1014bにおいてに生成される。
【0117】
1016において、候補ソリューション生成器1002は候補ソリューションを生成又は定義し、候補ソリューションは、各ロボットのためのベース配置及び向き、各ロボットのためのホーム及び/又は他の機能的ポーズ、ならびに各ロボットのためのターゲットシーケンスを表すベクトル又は他の表現であり得る。
【0118】
1018において、候補ソリューション生成器1002は、候補ソリューションの集団内に十分な候補ソリューションがあるかどうかを判定する。候補ソリューションの集団内の候補ソリューションの数が指定された数未満である場合、制御は1006に戻り、追加の候補ソリューションを生成することができる。さもなければ、制御は1022に進み、候補ソリューション生成器1002は、さらなる最適化のために候補ソリューションの集団をマルチロボットオプティマイザエンジン1024に返す。
【0119】
候補ソリューションの初期集団が生成されると、候補ソリューションの集団は例えば、候補ソリューションを摂動させることによって精緻化され得る。
【0120】
低レベルマルチロボットDE候補ソリューション方法1000は順序付けられたフローに関して説明されるが、様々な行為又は動作は多くの実装形態では同時に又は並行して実行される。
【0121】
本明細書に記載される構造及びアルゴリズムは、少なくとも幾つかの実装形態において、カメラ又は他の知覚センサなしで動作してもよい。少なくともいくつかの実装形態では、ロボット間の協調がロボットの幾何学的モデル、ロボットがそれぞれのモーションプランを通信する能力、及び共有作業空間の幾何学的モデルに依存する。他の実装形態では、たとえば、共有作業空間の一部に入ったり占めたりする可能性がある人間又は他の動的障害物を回避するために、視覚又は他の知覚を任意選択で使用することができる。
【0122】
モーションプランの問題を解くために広い種類のアルゴリズムを用いた。これらのアルゴリズムの各々は典型的にはロボットの所与のポーズ又はあるポーズから別のポーズへの動きが、ロボット自体又は環境内の障害物のいずれかとの衝突をもたらすかどうかを決定することができる必要がある。仮想的な衝突の評価又は検査はアルゴリズムを実行するために、プロセッサ実行可能命令の記憶されたセットからプロセッサ実行可能命令を実行するプロセッサを使用して、「ソフトウェアで」実行することができる。仮想的な衝突の評価又は検査は専用ハードウェア回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)内に実装された衝突検査回路)のセットを使用して「ハードウェアで」実行することができる。そのような回路は例えば、2つの状態間のそれぞれのモーション又は遷移中にロボット/ロボット付属物又はその一部によって掃引されるボリューム(すなわち、掃引ボリューム)を表し得る。回路は例えば、モーションが任意の障害物と衝突するかどうかを示すブール評価を生成することができ、障害物の少なくともいくつかは、共有作業空間内で動作する他のロボットによるモーション又は遷移の実行中に掃引されるボリュームを表す。
【0123】
例
【0124】
実施例1. 複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するための、プロセッサベースのシステムにおける動作方法であって、前記方法は、
集団発生器を介してC個の候補ソリューションの集団を生成するステップであって、前記ロボットの各々について指定する前記C個の候補ソリューションの集団における前記候補ソリューションのそれぞれは、前記ロボットのそれぞれのために、それぞれのベース(又は、基本/基礎/bace)の位置及び向き、少なくとも1つの定義されたポーズのそれぞれの組、及びそれぞれのタスク又はターゲットシーケンスを指定するものであって、前記それぞれのベースの位置及び向きが、前記マルチロボット動作環境における前記それぞれのロボットのベースについてのそれぞれの位置及び向きを指定し、前記少なくとも1つの定義されたポーズのそれぞれの組が前記マルチロボット動作環境における前記それぞれのロボットの少なくとも1つのホームポーズを指定し、前記それぞれのタスク又はターゲットシーケンスがタスクのそれぞれのシーケンスを完了するために、前記それぞれのロボットが移動するためのターゲットのそれぞれの順序付けられたリストを備える、C個の候補ソリューションの集団を生成するステップと、
前記C個の候補ソリューションの集団に対する最適化を、前記ロボットの前記それぞれのベースの位置及び向き、前記ロボットのそれぞれの1つへの前記タスクの割当て、及び前記ロボットの前記それぞれのタスク又はターゲットシーケンスのうちの2つ又はそれ以上についての2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって実行するステップと、
出力として、前記ロボットのそれぞれのための前記それぞれのベースの位置及び向き、前記ロボットのそれぞれのためのそれぞれのタスク割当て、及び前記ロボットのそれぞれのためのそれぞれのモーションプランを提供するステップと、
を備える、動作方法。
【0125】
実施例2. 出力として、前記ロボットのそれぞれのために、前記それぞれのベースの位置及び向き、前記ロボットのそれぞれのためのそれぞれのタスク割当て、及び前記ロボットのそれぞれのためのそれぞれのモーションプランを提供するステップは前記ロボットごとに、前記それぞれのロボットのC空間内のターゲットの最適化された順序付きリストの形態の実行されるべきそれぞれのシーケンスと、1つ又は複数の前記ターゲットの1つ又は複数における1つ又は複数の滞留持続時間とを指定する最適化されたタスク割当てを提供するステップと、衝突のない経路の組を指定する最適化されたモーションプランを提供するステップとを含み、前記衝突のない経路の組は前記ターゲットの順序付きリスト内の連続するターゲットの各対の間のそれぞれの衝突のない経路を指定する、実施例1に記載の方法。
【0126】
実施例3. 候補ソリューションの集団Cの前記候補ソリューションの各々について、タスクのシーケンスを完了するためのそれぞれの時間、及びロボット環境シミュレータによって実行されるモデリングを介してタスクのシーケンスを完了する際に発生する衝突の割合又は確率を表すそれぞれの衝突値を決定するステップをさらに含む、実施例1又は2のいずれかに記載の方法。
【0127】
実施例4. 前記C個の候補ソリューションの集団に対する最適化を2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって実行するステップは、
前記候補ソリューションに関連するそれぞれのコストに少なくとも部分的に基づいて、オプティマイザエンジンを介して前記候補ソリューションのうちの1つを選択するステップを含み、前記それぞれのコストは、タスクの前記シーケンスを完了する時間と、前記それぞれの候補ソリューションについて決定された衝突値とに少なくとも部分的に基づいている、実施例3に記載の方法。
【0128】
実施例5. 前記タスクのシーケンスを完了するためのそれぞれの時間、及びオプティマイザエンジンによるモデリングを介して発生する衝突の割合又は確率を表すそれぞれの衝突値とを決定するステップは、
前記マルチロボット環境シミュレータを介してタスクの前記シーケンスの各タスクを仮想的に実行するステップと、
複数のエポックの各エポックについて、前記マルチロボット環境シミュレータを介して前記ロボットの少なくとも1つの部分のC空間位置をサンプリングするステップと、
順運動学を使用して衝突をチェックして、前記ロボットのそれぞれの1つの1つ又は複数の部分と前記ロボットの前記それぞれの1つの別の部分との間、前記ロボットの前記それぞれの1つと前記環境内の前記ロボットの別の1つとの間、及び前記ロボットの前記それぞれの1つと別のロボットではないマルチロボット動作環境内の別のオブジェクトとの間の潜在的な衝突を識別するステップと、
を含む、実施例3に記載の方法。
【0129】
実施例6. 前記タスクの順序付けられたリストは前記ロボットの前記C空間内の軌道の順序付けられたリストに等しく、複数の軌道、1つ又は複数のポーズでの1つ又は複数の滞留持続時間、ホームポーズ、及び前記ロボットの前記C空間内の1つ又は複数の他の定義された機能的ポーズを含み、仮想的に実行するステップは、前記複数の軌道と1つ又は複数のポーズでの前記1つ又は複数の滞留持続時間、前記ホームポーズ、又は前記1つ又は複数の他の定義された機能的ポーズのうちの1つ又は複数とを仮想的に実行するステップを含む、実施例5に記載の方法。
【0130】
実施例7. 前記C個の候補ソリューションの集団におけるいくつかの候補ソリューションの各々について、少なくとも1回の反復ごとに、
摂動候補ソリューションを生成するために前記それぞれの候補ソリューションを摂動させるステップと、
前記摂動候補ソリューションをモデル化するステップと、
前記摂動候補ソリューションが前記それぞれの候補ソリューションよりも低い関連コストを有するかどうかを判定するステップと、
前記摂動候補ソリューションが前記それぞれの候補ソリューションよりも低い関連コストを有するという判定に応答して、前記C個の候補ソリューションの集団内の前記それぞれの候補ソリューションを前記摂動候補ソリューションで置き換えるステップと、
をさらに含む、実施例1又は2に記載の方法。
【0131】
実施例8. 収束の発生、反復回数の制限又は反復時間の制限に達するまで、複数の反復について、摂動させるステップ、モデル化するステップ、判定するステップ、及び置き換えるステップを繰り返す、実施例7に記載の方法。
【0132】
実施例9. 摂動候補ソリューションを生成するために前記それぞれの候補ソリューションを摂動させるステップは候補ソリューションベクトルを摂動させるステップを含み、前記候補ソリューションベクトルは複数の実数ベクトル要素と、各タスクについて1つの実数ベクトル要素とを含み、前記実数ベクトル要素は前記タスクのそれぞれの1つと、前記タスクのそれぞれの1つに対する優先度と、前記タスクのそれぞれの1つを実行するように識別された前記ロボットの1つとのそれぞれの組み合わせを表す、実施例7に記載の方法。
【0133】
実施例10. マルチロボット動作環境の少なくとも1つのモデル、前記マルチロボット動作環境で動作する前記ロボットの少なくとも2つの各々のそれぞれのモデル、及びタスク又はターゲットの組を含む入力を受信するステップをさらに含む、実施例1又は2に記載の方法。
【0134】
実施例11. マルチロボット動作環境の少なくとも1つのモデル、前記マルチロボット動作環境にで動作する前記ロボットの少なくとも2つの各々のそれぞれのモデル、タスク又はターゲットの組、及び、ロボットの少なくとも1つが少なくとも1つのタスクを実行する間に1つ又は複数のターゲットに滞留するための1つ又は複数の滞留持続時間と、変数に対する境界又は制約の組、又は衝突をシミュレートする際の時間制限を指定する時間隔の組のうちの少なくとも1つ、を含む入力を受信するステップをさらに含む、実施例1又は2に記載の方法。
【0135】
実施例12. 入力を受信するステップは、前記マルチロボット動作環境で動作することが許可されるロボットの総数に対する制限と、ロボットごとに許可されるタスク又はターゲットの最大数とのうちの少なくとも1つをさらに含む入力を受信するステップを含む、実施例11に記載の方法。
【0136】
実施例13. 前記集団発生器が擬似ランダム集団発生器であり、集団シード発生器を介してC個の候補ソリューションの集団を生成するステップが、前記擬似ランダム集団発生器を介してC個の候補ソリューションの集団を擬似ランダムに生成するステップを含む、実施例1又は2に記載の方法。
【0137】
実施例14. 集団発生器を介してC個の候補ソリューションの集団を生成するステップが、C個の候補ソリューションの純粋に擬似ランダムに生成された集団よりも無効な候補ソリューションである可能性が低いC個の候補ソリューションの集団を生成するステップを含む、実施例1又は2に記載の方法。
【0138】
実施例15. 前記C個の候補ソリューションの集団に対する最適化を、2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって実行するステップは、それぞれの前記ロボットのそれぞれのベースについてのそれぞれの最適化されたベースの位置及び向き、最適化されたタスク割当て、及び最適化されたモーションプラン、の共最適化された組み合わせと共に最適化された候補ソリューションを選択するステップを含む、実施例1又は2に記載の方法。
【0139】
実施例16. 複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するプロセッサベースのシステムであって、
少なくとも1つのプロセッサと、
少なくとも1つのデータ及びプロセッサ実行可能命令を記憶する少なくとも1つの非一時的プロセッサ可読媒体であって、前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されるときに、前記プロセッサに実施例1から15のいずれかの方法を実行させる、少なくとも1つの非一時的プロセッサ可読媒体と、
を備える、プロセッサベースのシステム。
【0140】
実施例17. 複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するプロセッサベースのシステムであって、前記プロセッサベースのシステムは、
少なくとも1つのプロセッサと、
少なくとも1つのデータ及びプロセッサ実行可能命令を記憶する少なくとも1つの非一時的プロセッサ可読媒体であって、前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されるときに、前記プロセッサに、
集団発生器を介してC個の候補ソリューションの集団を生成するステップであって、前記ロボットの各々について指定する前記C個の候補ソリューションの集団における前記候補ソリューションのそれぞれは、前記ロボットのそれぞれのために、それぞれのベースの位置及び向き、少なくとも1つの定義されたポーズの組、及びそれぞれのタスク又はターゲットシーケンスを指定するものであって、前記それぞれのベースの位置及び向きが、前記マルチロボット動作環境における前記それぞれのロボットのベースについてそれぞれの位置及び向きを指定し、前記少なくとも1つの定義されたポーズのそれぞれの組がマルチロボット動作環境における前記それぞれのロボットの少なくとも1つのそれぞれのホームポーズを指定し、前記それぞれのタスク又はターゲットシーケンスがタスクのそれぞれのシーケンスを完了するために、前記それぞれのロボットが移動するためのターゲットのそれぞれの順序付けられたリストを備える、C個の候補ソリューションの集団を生成するステップと、
前記C個の候補ソリューションの集団に対する最適化を、前記ロボットの前記それぞれのベースの位置及び向き、前記ロボットのそれぞれの1つへの前記タスクの割当て、及び前記ロボットの前記それぞれのタスク又はターゲットシーケンスのうちの2つ又はそれ以上の2つ又はそれ以上の不均一なパラメータの組にわたって共最適化するオプティマイザエンジンによって実行するステップと、
出力として、前記ロボットのそれぞれのために、前記それぞれのベースの位置及び向き、前記ロボットのそれぞれのためのそれぞれのタスク割当て、及び前記ロボットのそれぞれのためのそれぞれのモーションプランを提供するステップと、
を実行させる、少なくとも1つの非一時的プロセッサ可読媒体と、
を備える、プロセッサベースのシステム。
【0141】
実施例18. 前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、前記ロボットごとに、前記それぞれのロボットのC空間内のターゲットの最適化された順序付きリストの形態の実行されるべきそれぞれのシーケンスと、1つ又は複数の前記ターゲットにおける1つ又は複数の滞留持続時間とを指定する最適化されたタスク割当て及び衝突のない経路の組を指定する最適化されたモーションプランを出力として提供させ、前記衝突のない経路の組は前記ターゲットの順序付きリスト内の連続するターゲットの各対の間のそれぞれの衝突のない経路を指定する、実施例17に記載のプロセッサベースのシステム。
【0142】
実施例19. 前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、
候補ソリューションの集団Cの前記候補ソリューションの各々について、タスクのシーケンスを完了するためのそれぞれの時間、及びロボット環境シミュレータによって実行されるモデリングを介してタスクのシーケンスを完了する際に発生する衝突の割合又は確率を表すそれぞれの衝突値を決定させる、実施例17又は18のいずれかに記載のプロセッサベースのシステム。
【0143】
実施例20. 2つ以上の同種でないパラメータのセットにわたって共最適化するオプティマイザエンジンによって、前記C個の候補ソリューションの集団に対する最適化を2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって実行するステップは、前記プロセッサ実行可能命令が前記少なくとも1つのプロセッサによって実行されたときに、前記プロセッサに、
前記候補ソリューションに関連するそれぞれのコストに少なくとも部分的に基づいて、オプティマイザエンジンを介して前記候補ソリューションのうちの1つを選択するステップを実行させ、前記それぞれのコストは、タスクの前記シーケンスを完了する時間と、前記それぞれの候補ソリューションについて決定された衝突値とに少なくとも部分的に基づいている、実施例19に記載のプロセッサベースのシステム。
【0144】
実施例21. 前記タスクのシーケンスを完了するためのそれぞれの時間、及びオプティマイザエンジンによるモデリングを介して発生する衝突の割合又は確率を表すそれぞれの衝突値を決定するステップは、前記プロセッサ実行可能命令が前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、
前記マルチロボット環境シミュレータを介してタスクの前記シーケンスの各タスクを仮想的に実行するステップと、
複数のエポックの各エポックについて、前記マルチロボット環境シミュレータを介して前記ロボットの少なくとも1つの部分のC空間位置をサンプリングするステップと、
順運動学を使用して衝突をチェックして、前記ロボットのそれぞれの1つの1つ又は複数の部分と前記ロボットの前記それぞれの1つの別の部分との間、前記ロボットの前記それぞれの1つと前記環境内の前記ロボットの別の1つとの間、及び前記ロボットの前記それぞれの1つと別のロボットではないマルチロボット動作環境内の別のオブジェクトとの間の潜在的な衝突を識別するステップと、
を実行さえる、実施例19に記載のプロセッサベースのシステム。
【0145】
実施例22. 前記タスクの順序付けられたリストは前記ロボットの前記C空間における軌道の順序付けられたリストと等しく、複数の軌道、1つ又は複数のポーズでの1つ又は複数の滞留持続時間と、ホームポーズ、及び前記ロボットの前記C空間における1つ又は複数の他の定義された機能的ポーズとを含み、仮想的に実行するステップは、少なくとも1つのプロセッサによって実行されると、プロセッサ実行可能命令が前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、複数の軌道と1つ又は複数のポーズでの前記1つ又は複数の滞留持続時間、前記ホームポーズと、又は前記1つ又は複数の他の定義された機能的ポーズのうちの1つ又は複数を仮想的に実行させるステップを含む、実施例21のプロセッサベースのシステム。
【0146】
実施例23. 前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、
前記C個の候補ソリューションの集団におけるいくつかの候補ソリューションの各々について、少なくとも1回の反復ごとに、
摂動候補ソリューションを生成するために前記それぞれの候補ソリューションを摂動させるステップと、
前記摂動候補ソリューションをモデル化するステップと、
前記摂動候補ソリューションが前記それぞれの候補ソリューションよりも低い関連コストを有するかどうかを判定するステップと、
前記摂動候補ソリューションが関それぞれの候補ソリューションよりも低い関連コストを有するという判定に応答して、前記C個の候補ソリューションの集団内の前記それぞれの候補ソリューションを前記摂動候補ソリューションと置き換えるステップと、
をさらに実行させる、実施例17又は18に記載のプロセッサベースのシステム。
【0147】
実施例24. 前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されると、前記プロセッサに、収束の発生、反復回数の制限又は反復時間の制限に達するまで、複数の反復について、前記摂動、前記モデル化、前記判定及び前記置換をさらに繰り返えさせる、実施例23に記載のプロセッサベースのシステム。
【0148】
実施例25. 摂動候補ソリューションを生成するために、前記それぞれの候補ソリューションを摂動させるステップは、前記プロセッサ実行可能命令が前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、候補ソリューションベクトルを摂動させるステップを含み、前記候補ソリューションベクトルは複数の実数ベクトル要素と、各タスクについて1つの実数ベクトル要素とを含み、前記実数ベクトル要素は前記タスクのそれぞれの1つと、前記タスクのそれぞれの1つに対する優先度と、前記それぞれの1つを実行するように識別された前記ロボットの1つのそれぞれの組合せを表す、実施例23に記載のプロセッサベースのシステム。
【0149】
実施例26. 前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、
マルチロボット動作環境の少なくとも1つのモデル、前記マルチロボット動作環境で動作する前記ロボットの少なくとも2つの各々のそれぞれのモデル、及びタスク又はターゲットの組を含む入力をさらに受信させる、実施例17又は18に記載のプロセッサベースのシステム。
【0150】
実施例27. 前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、
マルチロボット動作環境の少なくとも1つのモデル、前記マルチロボット動作環境で動作する前記ロボットの少なくとも2つの各々のそれぞれのモデル、タスク又はターゲットの組、及び、ロボットの少なくとも1つが少なくとも1つのタスクを実行する間に1つ又は複数のターゲットに滞留するための1つ又は複数の滞留持続時間、変数に対する境界又は制約の組、又は衝突をシミュレートする際の時間制限を指定する時間隔の組のうちの少なくとも1つ、を含む入力をさらに受信させる、実施例17又は18に記載のプロセッサベースのシステム。
【0151】
実施例28. 前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、前記マルチロボット動作環境で動作することが許可されるロボットの総数に対する制限と、ロボットごとに許可されたタスク又はターゲットの最大数とのうちの少なくとも1つを入力としてさらに受信させる、実施例27に記載のプロセッサベースのシステム。
【0152】
実施例29. 集団発生器が擬似ランダム集団発生器であり、集団シード生成器を介したC候補ソリューションの集団の生成が、擬似ランダム集団発生器を介したC候補ソリューションの集団の擬似ランダム生成を含む、実施例17又は18に記載のプロセッサベースのシステム。
【0153】
実施例30. 集団発生器を介したC個の候補ソリューションの集団の生成は、C個の候補ソリューションの純粋に擬似ランダムに生成された集団よりも、無効な候補ソリューションである確率が低いC個の候補ソリューションの集団の生成を含む、実施例17又は18に記載のプロセッサベースのシステム。
【0154】
実施例31. 前記C個の候補ソリューションの集団に対する最適化を、2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって実行することは、前記プロセッサ実行可能命令が前記少なくとも1つのプロセッサによって実行されると、前記プロセッサに、それぞれの前記ロボットのそれぞれのベースについてのそれぞれの最適化されたベースの位置及び向き、最適化されたタスク割当て、及び最適化されたモーションプランの共最適化された組み合わせと共に最適化された候補ソリューションを選択させる、実施例17又は18に記載のプロセッサベースのシステム。
【0155】
上記の詳細説明においては、ブロック図、模式図及び実施例を用いて、多様な装置及び/又は方法の実施形態について記載している。これらのブロック図、概略図及び実施例は1つ又は2つ以上の機能及び/又は動作を含んでいるが、当業者には明らかなように、これらのブロック図、流れ図及び実施例におけるそれぞれの機能及び/又は動作は個々に及び/又は一括して、多様なハードウェア、ソフトウェア、ファームウェア又は事実上任意のこれらの組み合わせによって実装することができることが理解されるであろう。一実施形態では、本主題がブール回路、特定用途向け集積回路(ASIC)及び/又はFPGAを介して実装され得る。しかしながら、本明細書に開示される実施形態は全体的に又は部分的に、標準的な集積回路における様々な異なる実装形態において、1つ又は複数のコンピュータ上で実行される1つ又は複数のコンピュータプログラムとして(例えば、1つ又は複数のコンピュータシステム上で実行される1つ又は複数のプログラムとして)、1つ又は複数のコントローラ(例えば、マイクロコントローラ)上で実行される1つ又は複数のプログラムとして、1つ又は複数のプロセッサ(例えば、マイクロプロセッサ)上で実行される1つ又は複数のプログラムとして、ファームウェアとして、又はそれらの実質的に任意の組合せとして、実装されることができ、ソフトウェア又はファームウェアのために回路を設計すること及び/又はコードを記述することは、本開示に照らして、十分に当業者の技術の範囲内であることを、当業者が認識するであろう。
【0156】
当業者は本明細書に記載された方法又はアルゴリズムの多くが、追加の行為を採用してもよく、いくつかの行為を省略してもよく、及び/又は指定されたものとは異なる順序で行為を実行してもよいことを認識するであろう。
【0157】
さらに、当業者は、本明細書で教示される機構がハードウェア、例えば、1つ又は複数のFPGA又はASICにおいて実装されることが可能であることを理解するであろう。
【0158】
上記の種々の実施形態は、更なる実施形態を提供するように組み合わされることが可能である。2017年6月9日に出願された「自律走行車のためのモーション計画及び再構成可能なモーション計画プロセッサ」と題された国際特許出願第PCT/US2017/036880号、2016年1月5日に出願された「MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS」と題された国際公開第WO2016/122840号、2018年1月12日に出願された「SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME」と題された米国特許出願第62/616,783号、2018年2月6日に出願された「MOTION PLANNING OF A ROBOT STORING A DISCRETIZED ENVIRONMENT ON ONE OR MORE PROCESSORS AND IMPROVED OPERATION OF SAME」と題された米国特許出願第62/626,939号、2019年6月3日に出願された「APPARATUS, METHODS AND ARTICLES TO FACILITATE MOTION PLANNING IN ENVIRONMENTS HAVING DYNAMIC OBSTACLES」と題された米国特許出願第62/856,548号、2019年6月24日に出願された「MOTION PLANNING FOR MULTIPLE ROBOTS IN SHARED WORKSPACE」と題された米国特許出願第62/865,431号、及び2020年1月22日に出願された「CONFIGURATION OF ROBOTS IN MULTI-ROBOT OPERATIONAL ENVIRONMENT」と題された米国特許出願第62/964,405号を含むがこれらに限定されない、本明細書で参照されている、及び/又はアプリケーション・データ・シートに列挙されている、同一出願人による米国特許出願公開、米国特許出願、米国以外の特許、米国以外の特許出願のすべては、その全体が参照により本明細書に組み込まれる。上記の詳細説明に照らして、上記の及び他の変形がそれらの実施形態に対して行われることが可能である。一般に、以下の特許請求の範囲において、使用される用語は特許請求の範囲を、本明細書及び特許請求の範囲に開示される特定の実施形態に限定するように解釈されるべきではなく、そのような特許請求の範囲が権利を与えられる等価物の全範囲とともに、すべての可能な実施形態を含むように解釈されるべきである。したがって、特許請求の範囲は、本開示によって限定されない。
下記は、本願の出願当初に記載の発明である。
<請求項1>
複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するためのプロセッサベースのシステムにおける動作方法であって、前記方法は、
集団発生器を介してC個の候補ソリューションの集団を生成するステップであって、前記C個の候補ソリューションの集団の前記候補ソリューションのそれぞれは、前記ロボットのそれぞれのために、それぞれのベースの位置及び向き、少なくとも1つの定義されたポーズのそれぞれの組、及びそれぞれのターゲットシーケンスを指定し、前記それぞれのベースの位置及び向きが、前記マルチロボット動作環境における前記それぞれのロボットのベースについてのそれぞれの位置及び向きを指定し、前記少なくとも1つの定義されたポーズのそれぞれの組が前記マルチロボット動作環境における前記それぞれのロボットの少なくとも1つのそれぞれのホームポーズを指定し、前記それぞれのターゲットシーケンスがそれぞれのタスクのシーケンスを完了するために前記それぞれのロボットが移動するためのそれぞれの順序付けられたターゲットのリストを備える、C個の候補ソリューションの集団を生成するステップと、
前記ロボットの前記それぞれのベースの位置及び向き、前記ロボットのそれぞれの1つへの前記タスクの割当て、及び前記ロボットの前記それぞれのターゲットシーケンスのうちの2つ又はそれ以上についての2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって前記C個の候補ソリューションの集団に対する最適化を実行するステップと、
出力として、前記ロボットのそれぞれのための前記それぞれのベースの位置及び向き、前記ロボットのそれぞれのためのそれぞれのタスク割当て、及び前記ロボットのそれぞれのためのそれぞれのモーションプランを提供するステップと、
を備える、動作方法。
<請求項2>
出力として、前記ロボットのそれぞれのための前記それぞれのベースの位置及び向き、前記ロボットのそれぞれのためのそれぞれのタスク割当て、及び前記ロボットのそれぞれのためのそれぞれのモーションプランを提供するステップは、前記ロボットごとに、前記それぞれのロボットのC空間内の最適化された順序付けられたターゲットのリストの形態の実行されるべきそれぞれのタスクのシーケンスと、1つ又は複数の前記ターゲットにおける1つ又は複数の滞留持続時間とを指定する最適化されたタスク割当てを提供するステップと、衝突のない経路の組を指定する最適化されたモーションプランを提供するステップとを含み、前記衝突のない経路の組は前記順序付けられたターゲットのリスト内の連続するターゲットの各対の間のそれぞれの衝突のない経路を指定する、請求項1に記載の方法。
<請求項3>
前記C個の候補ソリューションの集団の前記候補ソリューションのそれぞれについて、前記タスクのシーケンスを完了するための時間、及びロボット環境シミュレータによって実行されるモデリングを介して前記タスクのシーケンスを完了する際に発生する衝突の割合又は確率を表すそれぞれの衝突値を決定するステップをさらに含む、請求項1又は2のいずれかに記載の方法。
<請求項4>
2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって前記C個の候補ソリューションの集団に対する最適化を実行するステップは、
前記候補ソリューションに関連するそれぞれのコストに少なくとも部分的に基づいて、オプティマイザエンジンを介して前記候補ソリューションのうちの1つを選択するステップを含み、前記それぞれのコストは、前記タスクのシーケンスを完了するための時間と、前記それぞれの候補ソリューションについて決定された前記衝突値とに少なくとも部分的に基づいている、請求項3に記載の方法。
<請求項5>
前記タスクのシーケンスを完了するためのそれぞれの時間、及びオプティマイザエンジンによるモデリングを介して発生する衝突の割合又は確率を表すそれぞれの衝突値を決定するステップは、
前記マルチロボット環境シミュレータを介して前記タスクのシーケンスの各タスクを仮想的に実行するステップと、
複数のエポックの各エポックについて、前記マルチロボット環境シミュレータを介して前記ロボットの少なくとも1つの部分のC空間位置をサンプリングするステップと、
順運動学を使用して衝突をチェックして、前記ロボットのそれぞれの1つの1つ又は複数の部分と前記ロボットの前記それぞれの1つの別の部分との間、前記ロボットの前記それぞれの1つと前記環境内の前記ロボットの別の1つとの間、及び前記ロボットの前記それぞれの1つと別のロボットではない前記マルチロボット動作環境内の別のオブジェクトとの間の潜在的な衝突を識別するステップと、
を含む、請求項3に記載の方法。
<請求項6>
前記順序付けられたタスクのリストは前記ロボットの前記C空間内の軌道の順序付けられたリストに等しく、複数の軌道、1つ又は複数のポーズでの1つ又は複数の滞留持続時間、ホームポーズ、及び前記ロボットの前記C空間内の1つ又は複数の他の定義された機能的ポーズを含み、仮想的に実行するステップは、前記複数の軌道と、前記1つ又は複数のポーズでの1つ又は複数の滞留持続時間、前記ホームポーズ、又は前記1つ又は複数の他の定義された機能的ポーズのうちの1つ又は複数とを仮想的に実行するステップを含む、請求項5に記載の方法。
<請求項7>
前記C個の候補ソリューションの集団のいくつかの候補ソリューションの各々について、少なくとも1回の反復ごとに、
摂動候補ソリューションを生成するために前記それぞれの候補ソリューションを摂動させるステップと、
前記摂動候補ソリューションをモデル化するステップと、
前記摂動候補ソリューションが前記それぞれの候補ソリューションよりも低い関連コストを有するかどうかを判定するステップと、
前記摂動候補ソリューションが前記それぞれの候補ソリューションよりも低い関連コストを有するという判定に応答して、前記C個の候補ソリューションの集団内の前記それぞれの候補ソリューションを前記摂動候補ソリューションに置き換えるステップと、
をさらに含む、請求項1又は2に記載の方法。
<請求項8>
収束の発生、反復回数の制限又は反復時間の制限に達するまで、複数の反復について、摂動させるステップ、モデル化するステップ、判定するステップ、及び置き換えるステップを繰り返す、請求項7に記載の方法。
<請求項9>
摂動候補ソリューションを生成するために前記それぞれの候補ソリューションを摂動させるステップは、候補ソリューションベクトルを摂動させるステップを含み、前記候補ソリューションベクトルは、複数の実数ベクトル要素と、各タスクについての1つの実数ベクトル要素を含み、前記実数ベクトル要素は、前記タスクのそれぞれの1つと、前記タスクのそれぞれの1つについての優先度と、前記タスクのそれぞれの1つを実行するように識別された前記ロボットの1つとのそれぞれの組合せを表す、請求項7に記載の方法。
<請求項10>
マルチロボット動作環境の少なくとも1つのモデル、前記マルチロボット動作環境で動作する前記ロボットの少なくとも2つの各々のそれぞれのモデル、及びタスクの組を含む入力を受信するステップをさらに含む、請求項1又は2に記載の方法。
<請求項11>
マルチロボット動作環境の少なくとも1つのモデル、前記マルチロボット動作環境で動作する前記ロボットの少なくとも2つの各々のそれぞれのモデル、タスクの組、及び、前記ロボットの少なくとも1つが少なくとも1つのタスクを実行する間に1つ又は複数のターゲットに滞留するための1つ又は複数の滞留持続時間、変数に対する境界又は制約の組、又は衝突をシミュレートすることについての時間制限を指定する時間隔の組のうちの少なくとも1つ、を含む入力を受信するステップをさらに含む、請求項1又は2に記載の方法。
<請求項12>
入力を受信するステップは、前記マルチロボット動作環境で動作することが許可されるロボットの総数に対する制限と、ロボットごとに許可されるタスクの最大数とのうちの少なくとも1つをさらに含む入力を受信するステップを含む、請求項11に記載の方法。
<請求項13>
前記集団発生器が擬似ランダム集団発生器であり、集団シード発生器を介してC個の候補ソリューションの集団を生成するステップが、前記擬似ランダム集団発生器を介してC個の候補ソリューションの集団を擬似ランダムに生成するステップを含む、請求項1又は2に記載の方法。
<請求項14>
集団発生器を介してC個の候補ソリューションの集団を生成するステップが、純粋に擬似ランダムに生成されたC個の候補ソリューションの集団よりも、無効な候補ソリューションである可能性が低いC個の候補ソリューションの集団を生成するステップを含む、請求項1又は2に記載の方法。
<請求項15>
2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって前記C個の候補ソリューションの集団に対する最適化を実行するステップは、それぞれの前記ロボットのそれぞれのベースについてのそれぞれの最適化されたベースの位置及び向き、最適化されたタスク割当て、及び最適化されたモーションプラン、の共最適化された組み合わせと共に最適化された候補ソリューションを選択するステップを含む、請求項1又は2に記載の方法。
<請求項16>
複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するプロセッサベースのシステムであって、
少なくとも1つのプロセッサと、
少なくとも1つのデータ及びプロセッサ実行可能命令を記憶する少なくとも1つの非一時的プロセッサ可読媒体であって、前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されるときに、前記プロセッサに請求項1から15のいずれかの方法を実行させる、少なくとも1つの非一時的プロセッサ可読媒体と、
を備える、プロセッサベースのシステム。
<請求項17>
複数のロボットが動作するマルチロボット動作環境のために複数のロボットを構成するプロセッサベースのシステムであって、前記プロセッサベースのシステムは、
少なくとも1つのプロセッサと、
少なくとも1つのデータ及びプロセッサ実行可能命令を記憶する少なくとも1つの非一時的プロセッサ可読媒体であって、前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されるときに、前記プロセッサに、
集団発生器を介してC個の候補ソリューションの集団を生成するステップであって、前記C個の候補ソリューションの集団の前記候補ソリューションのそれぞれは、前記ロボットのそれぞれのために、それぞれのベースの位置及び向き、少なくとも1つの定義されたポーズのそれぞれの組、及びそれぞれのターゲットシーケンスを指定し、前記それぞれのベースの位置及び向きが、前記マルチロボット動作環境における前記それぞれのロボットのベースについてのそれぞれの位置及び向きを指定し、前記少なくとも1つの定義されたポーズのそれぞれの組が前記マルチロボット動作環境における前記それぞれのロボットの少なくとも1つのそれぞれのホームポーズを指定し、前記それぞれのターゲットシーケンスがタスクのそれぞれのシーケンスを完了するために、前記それぞれのロボットが移動するためのそれぞれの順序付けられたターゲットのリストを備える、C個の候補ソリューションの集団を生成するステップと、
前記ロボットの前記それぞれのベースの位置及び向き、前記ロボットのそれぞれの1つへの前記タスクの割当て、及び前記ロボットの前記それぞれのターゲットシーケンスのうちの2つ又はそれ以上についての2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって前記C個の候補ソリューションの集団に対する最適化を実行するステップと、
出力として、前記ロボットのそれぞれのための前記それぞれのベースの位置及び向き、前記ロボットのそれぞれのためのそれぞれのタスク割当て、及び前記ロボットのそれぞれのためのそれぞれのモーションプランを提供するステップと、
を実行させる、少なくとも1つの非一時的プロセッサ可読媒体と、
を備える、プロセッサベースのシステム。
<請求項18>
前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、前記ロボットごとに、前記それぞれのロボットのC空間内の最適化された順序付けられたターゲットのリストの形態の実行されるべきそれぞれのタスクのシーケンスと、1つ又は複数の前記ターゲットにおける1つ又は複数の滞留持続時間とを指定する最適化されたタスク割当て及び衝突のない経路の組を指定する最適化されたモーションプランを出力として提供させ、前記衝突の経路の組は前記順序付けられたターゲットのリスト内の連続するターゲットの各対の間のそれぞれの衝突のない経路を指定する、請求項17に記載のプロセッサベースのシステム。
<請求項19>
前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、
前記C個の候補ソリューションの集団の前記候補ソリューションのそれぞれについて、前記タスクのシーケンスを完了するための時間、及びロボット環境シミュレータによって実行されるモデリングを介して前記タスクのシーケンスを完了する際に発生する衝突の割合又は確率を表すそれぞれの衝突値をさらに決定させる、請求項17又は18のいずれかに記載のプロセッサベースのシステム。
<請求項20>
2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって前記C個の候補ソリューションの集団に対する最適化を実行するために、前記プロセッサ実行可能命令が前記少なくとも1つのプロセッサによって実行されたときに、前記プロセッサに、
前記候補ソリューションに関連するそれぞれのコストに少なくとも部分的に基づいて、オプティマイザエンジンを介して前記候補ソリューションのうちの1つを選択するステップを実行させ、前記それぞれのコストは、前記タスクのシーケンスを完了する時間と、前記それぞれの候補ソリューションについて決定された前記衝突値とに少なくとも部分的に基づいている、請求項19に記載のプロセッサベースのシステム。
<請求項21>
前記タスクのシーケンスを完了するためのそれぞれの時間、及びオプティマイザエンジンによるモデリングを介して発生する衝突の割合又は確率を表すそれぞれの衝突値を決定するために、前記プロセッサ実行可能命令が前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、
前記マルチロボット環境シミュレータを介してタスクの前記シーケンスの各タスクを仮想的に実行するステップと、
複数のエポックの各エポックについて、前記マルチロボット環境シミュレータを介して前記ロボットの少なくとも1つの部分のC空間位置をサンプリングするステップと、
順運動学を使用して衝突をチェックして、前記ロボットのそれぞれの1つの1つ又は複数の部分と前記ロボットの前記それぞれの1つの別の部分との間、前記ロボットの前記それぞれの1つと前記環境内の前記ロボットの別の1つとの間、及び前記ロボットの前記それぞれの1つと別のロボットではない前記マルチロボット動作環境内の別のオブジェクトとの間の潜在的な衝突を識別するステップと、
を実行させる、請求項19に記載のプロセッサベースのシステム。
<請求項22>
前記順序付けられたタスクのリストは前記ロボットの前記C空間内の軌道の順序付けられたリストと等しく、複数の軌道、1つ又は複数のポーズでの1つ又は複数の滞留持続時間、ホームポーズ、及び前記ロボットの前記C空間の1つ又は複数の他の定義された機能ポーズを含み、仮想的に実行するために、前記プロセッサ実行可能命令が前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、前記複数の軌道と1つ又は複数のポーズでの前記1つ又は複数の滞留持続時間、前記ホームポーズ、又は前記1つ又は複数の他の定義された機能的ポーズのうちの1つ又は複数を仮想的に実行させる、請求項21に記載のプロセッサベースのシステム。
<請求項23>
前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、
前記C個の候補ソリューションの集団のいくつかの候補ソリューションの各々について、少なくとも1回の反復ごとに、
摂動候補ソリューションを生成するために前記それぞれの候補ソリューションを摂動させるステップと、
前記摂動候補ソリューションをモデル化するステップと、
前記摂動候補ソリューションが前記それぞれの候補ソリューションよりも低い関連コストを有するかどうかを判定するステップと、
前記摂動候補ソリューションが前記それぞれの候補ソリューションよりも低い関連コストを有するという判定に応答して、前記C個の候補ソリューションの集団内の前記それぞれの候補ソリューションを前記摂動候補ソリューションに置き換えるステップと、
をさらに実行させる、請求項17又は18に記載のプロセッサベースのシステム。
<請求項24>
前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、収束の発生、反復回数の制限又は反復時間の制限に達するまで、複数の反復について、前記摂動、前記モデル化、前記判定、及び前記置換をさらに繰り返させる、請求項23に記載のプロセッサベースのシステム。
<請求項25>
摂動候補ソリューションを生成するために前記それぞれの候補ソリューションを摂動させるために、前記プロセッサ実行可能命令が前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、候補ソリューションベクトルを摂動させ、前記候補ソリューションベクトルは、複数の実数ベクトル要素と、各タスクについて1つの実数ベクトル要素とを含み、前記実数ベクトル要素は前記タスクのそれぞれの1つと、前記タスクのそれぞれの1つについての優先度と、前記タスクのそれぞれの1つを実行するように識別された前記ロボットの1つのそれぞれの組合せを表す、請求項23に記載のプロセッサベースのシステム。
<請求項26>
前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、
マルチロボット動作環境の少なくとも1つのモデル、前記マルチロボット動作環境で動作する前記ロボットの少なくとも2つの各々のそれぞれのモデル、及びタスクの組を含む入力をさらに受信させる、請求項17又は18に記載のプロセッサベースのシステム。
<請求項27>
前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、マルチロボット動作環境の少なくとも1つのモデル、前記マルチロボット動作環境で動作する前記ロボットの少なくとも2つの各々のそれぞれのモデル、タスクの組、及び、前記ロボットの少なくとも1つが少なくとも1つのタスクを実行する間に1つ又は複数のターゲットに滞留するための1つ又は複数の滞留持続時間、変数に対する境界又は制約の組、又は衝突をシミュレートすることについての時間制限を指定する時間隔の組のうちの少なくとも1つ、を含む入力をさらに受信させる、請求項17又は18に記載のプロセッサベースのシステム。
<請求項28>
前記プロセッサ実行可能命令は前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、前記マルチロボット動作環境で動作することが許可されるロボットの総数に対する制限と、ロボットごとに許可されるタスクの最大数とのうちの少なくとも1つを入力としてさらに受信させる、請求項27に記載のプロセッサベースのシステム。
<請求項29>
前記集団発生器が擬似ランダム集団発生器であり、集団シード発生器を介したC個の候補ソリューションの集団の生成が、前記擬似ランダム集団発生器を介したC個の候補ソリューションの集団の擬似ランダムな生成を含む、請求項17又は18に記載のプロセッサベースのシステム。
<請求項30>
集団発生器を介したC個の候補ソリューションの集団の生成が、C個の候補ソリューションの純粋に擬似ランダムに生成された集団よりも無効な候補ソリューションである可能性が低いC個の候補ソリューションの集団の生成を含む、請求項17又は18に記載のプロセッサベースのシステム。
<請求項31>
2つ又はそれ以上の非同種のパラメータの組にわたって共最適化するオプティマイザエンジンによって前記C個の候補ソリューションの集団に対する最適化を実行するために、前記プロセッサ実行可能命令が前記少なくとも1つのプロセッサによって実行されたとき、前記プロセッサに、それぞれの前記ロボットのそれぞれのベースについてのそれぞれの最適化されたベースの位置及び向き、最適化されたタスク割当て、及び最適化されたモーションプランの共最適化された組み合わせと共に最適化された候補ソリューションを選択させる、請求項17又は18に記載のプロセッサベースのシステム。