JP2022539324A - 共用ワークスペースにおける複数のロボットの動作計画 - Google Patents

共用ワークスペースにおける複数のロボットの動作計画 Download PDF

Info

Publication number
JP2022539324A
JP2022539324A JP2021576425A JP2021576425A JP2022539324A JP 2022539324 A JP2022539324 A JP 2022539324A JP 2021576425 A JP2021576425 A JP 2021576425A JP 2021576425 A JP2021576425 A JP 2021576425A JP 2022539324 A JP2022539324 A JP 2022539324A
Authority
JP
Japan
Prior art keywords
robot
robots
motion
processor
obstacle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021576425A
Other languages
English (en)
Other versions
JP7332199B2 (ja
Inventor
マーレイ,シーン
フロイド-ジョーンズ,ウィリアム
ロング,シアンチャオ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Realtime Robotics Inc
Original Assignee
Realtime Robotics Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Realtime Robotics Inc filed Critical Realtime Robotics Inc
Publication of JP2022539324A publication Critical patent/JP2022539324A/ja
Application granted granted Critical
Publication of JP7332199B2 publication Critical patent/JP7332199B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • B25J9/1666Avoiding collision or forbidden zones
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/1605Simulation of manipulator lay-out, design, modelling of manipulator
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • B25J9/1682Dual arm manipulator; Coordination of several manipulators
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/35Nc in input of data, input till input file format
    • G05B2219/35148Geometric modeling for swept volume of moving solids
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40446Graph based
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40475In presence of moving obstacles, dynamic environment
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40512Real time path planning, trajectory generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Automation & Control Theory (AREA)
  • Manipulator (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)

Abstract

開示の要約ロボット工学のための動作計画において有用な衝突検出は衝突評価中の計画された動作を考慮に入れることを含めて、共用ワークスペース内で動作する複数のロボット内の任意の所与のロボットについて動作計画を実行するとき、障害物として複数のロボットの各々の計画された動作を有利に表す。動作計画グラフのエッジには、衝突評価に少なくとも部分的に基づいてコスト値が割り当てられる。障害物は、対応する動作が完了すると、刈り取られてもよい。動作計画要求はキューに入れることができ、いくつかのロボットは例えば、エラー又はブロックされた状態に応答してスキップすることができる。【選択図】 図2

Description

本開示は一般に、ロボットの動作計画(又は、動作プラニング/モーションプラニング/motion planning)に関し、特に、共用ワークスペースにおいてロボット等を駆動する動作計画(又は、動作プラン/モーションプラン/motion plan)を生成するために、プロセッサ回路を介して衝突検出を実行するシステム及び方法に関する。
関連技術の説明
ロボット制御やロボット工学において、動作計画は基本的な問題である。動作計画はロボットが、典型的には、動作環境内の障害物と衝突することなく、又は動作環境内の障害物と衝突する可能性を低減してタスクを完了するための、開始状態から目標状態に追従することができる経路を指定する。動作計画への課題は、環境の特性が変化しても、非常に速い速度で動作計画を実行する能力を含む。例えば、環境内の1つ又は複数の障害物の位置又は向きなどの特性は、経時的に変化し得る。課題は更に、比較的低コストの機器を用い、比較的低エネルギー消費で、限られた量の記憶装置(例えば、メモリ回路、例えば、プロセッサチップ回路)を用いて動作計画を実行することを含む。
ロボット工学における1つの問題は例えば、ロボット又はロボットのロボット付属物(又は、付属肢)がタスクの実行中に互いに干渉する可能性がある、共用ワークスペース(又は、作業空間/ワークスペースは一般にワークセルと呼ばれる)における2つ以上のロボットの作動(又は、運用/稼働/operation)である。
共用ワークスペースにおいて複数のロボットを操作する1つのアプローチは、タスクレベルアプローチと呼ばれることができる。タスクレベルアプローチは、ティーチ・アンド・リピート・トレーニングを採用することができる。エンジニアはワークスペースの共有部分を定義し、任意の所与の時点で1つのロボットのみが共用ワークスペース内にあるように個々のロボットをプログラミングすることによって、ロボットが衝突しないことを保証することができる。例えば、第1のロボットがワークスペースに移動し始めると、第1のロボットはフラグをセットする。コントローラ(例えば、プログラム論理コントローラ(PLC))はこのフラグを読み取り、第1のロボットがワークスペースを出る際にフラグをデアサートするまで、他のロボットが共用ワークスペースに移動することを防止する。このアプローチは直感的であり、理解し、実施し、トラブルシュートするのが簡単である。しかしながら、無競合(又は、競合解消/de-confliction)のタスクレベルの使用は仕事のないロボット(又は、アイドルロボット)が共用ワークスペースにおいて有用な作業を実行することが技術的に可能である場合であっても、通常、ロボットの少なくとも1つがかなりの時間にわたって仕事のない状態(又は、アイドル状態)になることにつながるので、このアプローチは必然的に作業スループットが低い。
共用ワークスペース内で複数のロボットを動作させる別のアプローチは前述のタスクレベルの無競合に基づくアプローチよりも高い作業スループットを達成するために、オフライン計画を採用する。そのようにするために、システムは、すべてのロボット又はロボット付属物の結合されたジョイント空間で計画問題を解決しようと試みることができる。例えば、2つの6自由度(DOF)付属物がワークスペース内にある場合、12DOF計画問題を解決しなければならない。このアプローチはより高い性能を可能にするが、計画には極めて時間がかかる可能性がある。12DOF問題は、現在利用可能なアーキテクチャを使用して解くことは従来の動作計画アルゴリズムには大きすぎるように見える。
これらの問題に対処するための1つの戦略は第1のロボット/ロボット付属物の動きを最適化し、次に第2のロボット/ロボット付属物の動きを手動で最適化することである。これはロボット/ロボット付属物が互いに衝突しないことを保証するために、動作(又は、動き)を反復的にシミュレートすることを採用する場合があり、これには多くの計算時間がかかる恐れがある。さらに、ワークスペースに対する修正が、ロボット/ロボット付属物のうちの1つの軌道の変化をもたらす場合、ワークフロー全体が再検証されなければならない。
概要
本明細書で説明される構造及びアルゴリズムは共用ワークスペース又はワークセル内で動作する2つ以上のロボットの動作を容易にし、共用ワークスペース内でそれぞれのタスクを実行するように動作する間に、ロボット又はロボット付属物が互いに衝突するリスクを防止するか、又は少なくとも低減する。
本明細書に記載される構造及びアルゴリズムは、自由度の高いロボットが、衝突を回避し、変化する共有環境内で作業し続けることを可能にする。衝突のない動作計画をミリ秒単位で生成するために、ハードウェアアクセラレーションの有無にかかわらず効率的な計画方法を加速することができる。超高速「リアルタイム」動作計画は訓練又は時間集約的経路最適化を必要とせずに、タスク実行中の実行時にロボット経路を決定することを可能にする。これにより、有利なことに、共用ワークスペース内での複数のロボットの協調(coordination)を可能にする。
本明細書に記載される構造及びアルゴリズムは、少なくとも幾つかの実装形態において、緊密で共有されたワークスペースにおける複数のロボットのための衝突のないロボット協調を保証することができる。高速で動作している場合でも、ロボットのすべての部品(ロボット付属物、エンドオブアームツール、エンドエフェクタなど)に対して無衝突動作が保証され得る。
本明細書で説明される構造及びアルゴリズムは、自律計画を実行することによって、マルチロボットワークスペースに対するプログラミング労力を有利に低減することができる。少なくともいくつかの実装形態では、オペレータが安全ゾーン、時間同期、又はジョイント空間軌道をプログラムする必要がない。入力は、実行されるタスクの記述及びロボットの幾何学モデルに限定され得る。入力はさらに、固定オブジェクト、又は任意選択で予測不可能な軌道を有するオブジェクト(例えば、人)の表現を含むことができる。
本明細書で説明する構造及びアルゴリズムは、有利には、ロボットによって実行されるタスクを動的に割り当てることができる。1つ又は複数のターゲットのポーズ(又は、姿勢)は、タスクの実行中に変更することができる。タスクの全体的な動作又は実行は、一定のロボットが故障した場合、又はブロックされた場合であっても継続することができる。
本明細書で説明される構造及びアルゴリズムは少なくともいくつかの実装形態ではロボットが例えば、非独自仕様の通信チャネル(例えば、イーサネット(登録商標)接続)を介して情報を共有することを可能にすることができ、これは、有利には共用ワークスペース内の異なる製造業者からのロボットの統合を容易にすることができる。
本明細書に記載される構造及びアルゴリズムは、少なくとも幾つかの実装形態において、カメラ又は他の知覚センサなしで動作してもよい。少なくともいくつかの実装形態では、ロボット間の協調がロボットの幾何学モデル、ロボットがそれぞれの動作計画を通信する能力、及び共用ワークスペースの幾何学モデルに依存する。他の実装形態では、例えば、人間又は共用ワークスペースの一部に入るか又は占有する可能性がある他の動的障害物を回避するために、視覚的知覚又は他の知覚を任意選択で使用することができる。
動作計画問題を解くために、多種多様なアルゴリズムが使用される。これらのアルゴリズムの各々は、典型的にはロボットの所与のポーズ又は1つのポーズから別のポーズへの動きがロボット自体又は環境内の障害物のいずれかとの衝突をもたらすかどうかを決定することができる必要がある。衝突評価又はチェック(又は、検査)はアルゴリズムを実行するために、プロセッサ実行可能命令の記憶されたセットからプロセッサ実行可能命令を実行するプロセッサを使用して、「ソフトウェア内」で実行することができる。衝突評価又は検査は専用ハードウェア回路(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)に実装された衝突チェック回路)のセットを使用して、「ハードウェアで」実行することができる。そのような回路は例えば、2つの状態間のそれぞれの運動又は遷移中にロボット/ロボット付属物又はその一部によって掃引されるボリューム(すなわち、掃引ボリューム)を表すことができる。回路は例えば、動作が任意の障害物と衝突するかどうかを示すブール評価(Boolean evaluation)を生成することができ、障害物の少なくともいくつかは、共用ワークスペース内で動作する他のロボットによる動作又は遷移の実行中に掃引されるボリューム(又は、体積)を表す。
態様1
ロボットの動作範囲が重複する共用ワークスペースで複数の前記ロボットを稼働させるように制御する方法であって、
前記複数のロボットのロボットR1のための第1の動作計画を生成するステップと、
nを前記複数のロボットの前記ロボットの総数とし、nを2以上の整数として、i=2からi=nまで、少なくとも1つのロボットRiのそれぞれについて、
少なくとも前記ロボットR1のいくつかの動作を少なくとも1つの障害物として表すステップと、
前記少なくとも1つの障害物の前記表現に対する前記ロボットRiの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
前記ロボットRiの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRiのための第1の動作計画を生成するステップを含み、前記方法はさらに、
前記複数のロボットのうちの対応する1つのためのそれぞれの前記第1の動作計画に少なくとも部分的に基づいて、前記ロボットR1~前記ロボットRnの少なくとも1つの稼働を制御するための信号を提供するステップを有する方法。
態様2
前記ロボットR1による少なくとも1つの動作の完了に応じて、ロボットR1により完了された少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップをさらに含む、態様1の方法。
態様3
前記ロボットR2~前記ロボットRnのうちの任意の1つ又は複数による少なくとも1つの動作の完了に応じて、前記ロボットR2~前記ロボットRnのそれぞれの1つによって完了された少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップをさらに含む、態様1の方法。
態様4
前記複数のロボットのロボットR1のための第2の動作計画を生成するステップと、
nを前記複数のロボットの前記ロボットの総数とし、nを2以上の整数として、i=2からi=nまで、少なくとも1つのロボットRiのそれぞれについて、
少なくとも前記ロボットR1のいくつかの動作を少なくとも1つの障害物として表すステップと、
前記少なくとも1つの障害物の前記表現に対する前記ロボットRiの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
前記ロボットRiの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRiのための第2の動作計画を生成するステップを含み、前記方法はさらに、
前記複数のロボットのうちの対応する1つのためのそれぞれの前記第2の動作計画に少なくとも部分的に基づいて、前記ロボットR1~前記ロボットRnの少なくとも1つの稼働を制御するための信号を提供するステップを有する、態様1の方法。
態様5
前記ロボットR1~前記ロボットRnのための第1の動作計画の前記生成は、i=1からi=nまで連続して実施される、態様4に記載の方法。
態様6
前記ロボットR1~前記ロボットRnのための第2の動作計画の前記生成は、i=1からi=nまで連続して実施される、態様5に記載の方法。
態様7
前記ロボットR1~前記ロボットRnのための第2の動作計画の前記生成は、i=1からi=nまで連続して実施されない、態様5に記載の方法。
態様8
前記複数のロボットのうちの対応する1つのためのそれぞれの前記第1の動作計画に少なくとも部分的に基づいて、前記ロボットR1~前記ロボットRnの少なくとも1つの稼働を制御するための信号を提供するステップは、前記ロボットR1の前に前記ロボットRiを動かす信号を提供するステップを含み、
前記ロボットRiによる少なくとも1つの動作の完了に応じて、前記複数のロボットのうちの前記ロボットR1のための第2の動作計画の前記生成の前に、前記ロボットRiによる完了された少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップをさらに有する、態様4の方法。
態様9
前記複数のロボットのロボットR1のための第2の動作計画を生成するステップと、
nを前記複数のロボットの前記ロボットの総数とし、nを3以上の整数として、i=2からi=nまで、2つ以上のロボットRiのうちのうちのすべてではないいくつかについて、
少なくとも前記ロボットR1のいくつかの動作を少なくとも1つの障害物として表すステップと、
前記少なくとも1つの障害物の前記表現に対する前記ロボットRiの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
前記ロボットRiの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRiのための第2の動作計画を生成するステップをさらに含み、前記方法は、
前記複数のロボットのうちの対応する1つのためのそれぞれの前記第2の動作計画に少なくとも部分的に基づいて、前記ロボットR1~前記ロボットRnの少なくとも1つの稼働を制御するための信号を提供するステップをさらに有する、態様1の方法。
態様10
前記ロボットR2~前記ロボットRnのうちの1つのための第2の動作計画を生成するステップがスキップされる、態様9に記載の方法。
態様11
前記ロボットR2~前記ロボットRnのうちのそれぞれ1つの動きが前記ロボットR2~前記ロボットRnの別の1つによって阻止されたことに応じて、前記ロボットR2~前記ロボットRnのうちの1つのための第2の動作計画を生成するステップがスキップされる、態様9の方法。
態様12
前記ロボットR2~前記ロボットRnのうちの1つのための第2の動作計画の前記生成は、前記ロボットR2~前記ロボットRnのうちのそれぞれ1つが、エラー条件が発生したことを示すエラー状態を有することに応じてスキップされる、態様9の方法。
態様13
少なくとも前記ロボットR1のいくつかの動作を少なくとも1つの障害物として表すステップは、少なくとも1つのロボットRi+1について、前記ロボットRi+1の前記少なくとも1つの動作について前記衝突検出を実行する前に、前記ロボットR1~前記ロボットRiの2つ以上の前記動作を少なくとも1つの障害物として表すステップを含む、態様1に記載の方法。
態様14
前記ロボットRi+1の前記少なくとも1つの動作について前記衝突検出を実行する前に、ロボットR1~前記ロボットRiの2つ以上の前記動作を少なくとも1つの障害物として表すステップは、
実行時前に事前に計算された掃引ボリュームのセットを使用するステップを含み、それぞれの前記掃引ボリュームは、ロボットR1~ロボットRiのそれぞれ1つの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットR1~前記ロボットRiの前記それぞれ1つの少なくとも前記部分によって掃引されるそれぞれのボリュームを表す、態様13に記載の方法。
態様15
実行時前に事前に計算された掃引ボリュームのセットを受け取るステップをさらに含み、
それぞれの前記掃引ボリュームは、ロボットR1~ロボットRiのそれぞれの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットR1~前記ロボットRiの前記それぞれ1つの少なくとも前記部分によって掃引されるそれぞれのボリュームを表す、態様13記載の方法。
態様16
前記ロボットRi+1の前記少なくとも1つの動作について前記衝突検出を実行する前に、ロボットR1~前記ロボットRiの2つ以上の前記動作を少なくとも1つの障害物として表すステップは、ロボットR1~前記ロボットRiの2つ以上の前記動作を、占有グリッド、階層ツリー、又はユークリッド距離場のうちの少なくとも1つとして表すステップを含む、態様13に記載の方法。
態様17
少なくとも前記ロボットR1のそれぞれの前記動作を少なくとも1つの障害物として表すステップは、それぞれの前記動作を表すためにそれぞれの掃引ボリュームを使用するステップを含み、
前記掃引ボリュームはそれぞれの前記動作中にロボットR1の少なくとも部分によって掃引されるボリュームに対応し、
前記少なくとも1つの障害物の前記表現に対する前記ロボットRiの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップは、実行時前に事前に計算された掃引ボリュームの表現を使用して衝突検出を実行するステップを含み、
前記掃引ボリュームは、前記ロボットRiの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットRiの少なくとも前記部分によって掃引されるそれぞれの前記掃引ボリュームを表す、態様1に記載の方法。
態様18
前記複数のロボットの前記ロボットR1~前記ロボットRnのそれぞれに対し、
それぞれの動作計画グラフを介してそれぞれの前記ロボットを表すステップをさらに含み、
それぞれの前記動作計画グラフは複数のノード及びエッジを含み、前記ノードはそれぞれの前記ロボットのそれぞれの状態を表し、前記エッジは前記エッジによって接続されたそれぞれのノードの対のうちのそれぞれのものによって表されるそれぞれの状態の間の有効な遷移を表す、態様1記載の方法。
態様19
ロボットの動作範囲が重複する共用ワークスペースで複数の前記ロボットを稼働させるように制御するシステムであって、前記システムは、
少なくとも1つのプロセッサ、
前記少なくとも1つのプロセッサに通信可能に結合され、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
前記複数のロボットのロボットR1のための第1の動作計画を生成するステップと、
nを前記複数のロボットの前記ロボットの総数とし、nを2以上の整数として、i=2からi=nまで、少なくとも1つのロボットRiのそれぞれについて、
少なくとも前記ロボットR1のいくつかの動作を少なくとも1つの障害物として表すステップと、
前記少なくとも1つの障害物の前記表現に対する前記ロボットRiの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
前記ロボットRiの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRiのための第1の動作計画を生成するステップと、
前記複数のロボットのうちの対応する1つのためのそれぞれの前記第1の動作計画に少なくとも部分的に基づいて、前記ロボットR1~前記ロボットRnの少なくとも1つの稼働を制御するための信号を提供するステップ
を実行させるプロセッサ実行可能命令を記憶する、少なくとも1つの非一時的プロセッサ読み取り可能媒体を含む、システム。
態様20
前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサにさらに、
前記ロボットR1による少なくとも1つの動作の完了に応じて、前記ロボットR1により完了した少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップをさらに実行させる、態様19に記載のシステム。
態様21
前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサにさらに、
前記ロボットR2~前記ロボットRnのうちの任意の1つ又は複数による少なくとも1つの動作の完了に応じて、前記ロボットR2~前記ロボットRnのそれぞれの1つによって完了された少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップをさらに実行させる、態様19に記載のシステム。
態様22
前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサにさらに、
前記複数のロボットのロボットR1のための第2の動作計画を生成するステップと、
nを前記複数のロボットの前記ロボットの総数とし、nを2以上の整数として、i=2からi=nまで、少なくとも1つのロボットRiのそれぞれについて、
少なくとも前記ロボットR1のいくつかの動作を少なくとも1つの障害物として表すステップと、
前記少なくとも1つの障害物の前記表現に対する前記ロボットRiの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
前記ロボットRiの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRiのための第2の動作計画を生成するステップと、
前記複数のロボットのうちの対応する1つのためのそれぞれの前記第2の動作計画に少なくとも部分的に基づいて、前記ロボットR1~前記ロボットRnの少なくとも1つの稼働を制御するための信号を提供するステップを実行させる、態様19に記載のシステム。
態様23
前記ロボットR1~前記ロボットRnのための第1の動作計画の前記生成は、i=1からi=nまで連続して実施される、態様22に記載の装置。
態様24
前記ロボットR1~前記ロボットRnのための第2の動作計画の前記生成は、i=1からi=nまで連続して実施される、態様23に記載の装置。
態様25
前記ロボットR1~前記ロボットRnのための第2の動作計画の前記生成は、i=1からi=nまで連続して実施されない、態様23に記載の装置。
態様26
前記複数のロボットのうちの対応する1つのためのそれぞれの前記第1の動作計画に少なくとも部分的に基づいて、前記ロボットR1~前記ロボットRnの少なくとも1つの稼働を制御するために、
前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、前記ロボットR1の前に前記ロボットRiを動かす信号を提供させ、さらに、
前記ロボットRiによる少なくとも1つの動作の完了に応じて、前記複数のロボットのうちの前記ロボットR1のための前記第2の動作計画の生成の前に、前記ロボットRiによる完了した少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップを実行させる、態様22に記載のシステム。
態様27
前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサにさらに、
前記複数のロボットのロボットR1のための第2の動作計画を生成するステップと、
nを前記複数のロボットの前記ロボットの総数とし、nを3以上の整数として、i=2からi=nまで、2つ以上のロボットRiのうちのうちのすべてではないいくつかについて、
少なくとも前記ロボットR1のいくつかの動作を少なくとも1つの障害物として表すステップと、
前記少なくとも1つの障害物の表現に対する前記ロボットRiの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
前記ロボットRiの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRiのための第2の動作計画を生成するステップと、
前記複数のロボットのうちの対応する1つのためのそれぞれの前記第2の動作計画に少なくとも部分的に基づいて、前記ロボットR1~前記ロボットRnの少なくとも1つの稼働を制御するための信号を提供するステップを実行させる、態様19に記載のシステム。
前記ロボットR2~前記ロボットRnのうちの1つのための第2の動作計画を生成するステップがスキップされる、態様27に記載の装置。
態様29
前記ロボットR2~前記ロボットRnのうちのそれぞれ1つの動きが前記ロボットR2~前記ロボットRnの別の1つによって阻止されたことに応じて、前記ロボットR2~前記ロボットRnのうちの1つのための第2の動作計画を生成するステップがスキップされる、態様27に記載のシステム。
態様30
前記ロボットR2~前記ロボットRnのうちの1つのための第2の動作計画の生成は、前記ロボットR2~前記ロボットRnのうちのそれぞれ1つが、エラー条件が発生したことを示すエラー状態を有することに応じてスキップされる、態様27に記載のシステム。
態様31
少なくとも前記ロボットR1のいくつかの動作を少なくとも1つの障害物として表すために、
前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
少なくとも1つのロボットRi+1について、前記ロボットRi+1の前記少なくとも1つの動作について前記衝突検出を実行する前に、前記ロボットR1~前記ロボットRiの2つ以上の前記動作を少なくとも1つの障害物として表すステップを実行させる、態様19に記載のシステム。
態様32
前記ロボットR1~前記ロボットRiの2つ以上の前記動作を障害物として表すために、
前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
実行時前に事前に計算された掃引ボリュームのセットを使用するステップを実行させ、それぞれの前記掃引ボリュームは、前記ロボットR1~前記ロボットRiのそれぞれ1つの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットR1~前記ロボットRiの前記それぞれ1つの少なくとも前記部分によって掃引されるそれぞれのボリュームを表す、態様31に記載のシステム。
態様33
前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサにさらに、
実行時前に事前に計算された一連の掃引ボリュームを受け取るステップを実行させ、それぞれの前記掃引ボリュームは、前記ロボットR1~前記ロボットRiのそれぞれの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットR1~前記ロボットRiの前記それぞれ1つの少なくとも前記部分によって掃引されるそれぞれのボリュームを表す、態様31のシステム。
態様34
前記ロボットRi+1の前記少なくとも1つの動作についての衝突検出を実行する前に、前記ロボットR1~前記ロボットRiの2つ以上の前記動作を障害物として表すために、
前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
前記ロボットR1~前記ロボットRiの2つ以上の前記動作を、占有グリッド、階層ツリー、又はユークリッド距離場のうちの少なくとも1つとして表すステップを実行させる、態様31に記載のシステム。
態様35
少なくとも前記ロボットR1のそれぞれの前記動作を少なくとも1つの障害物として表すために、
前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
それぞれの前記動作を表すためにそれぞれの掃引ボリュームを使用するステップを実行させ、
前記掃引ボリュームはそれぞれの前記動作中に前記ロボットR1の少なくとも部分によって掃引されるボリュームに対応し、
前記少なくとも1つの障害物の前記表現に対する前記ロボットRiの少なくとも部分の少なくとも1つの動作について衝突検出を実施するために、
前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
実行時前に事前に計算された掃引ボリュームの表現に少なくとも部分的に基づいて衝突検出を実行させ、前記掃引ボリュームは、前記ロボットRiの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットRiの少なくとも前記部分によって掃引されるそれぞれのボリュームを表す、態様19に記載のシステム。
態様36
前記複数のロボットの前記ロボットR1~前記ロボットRnのそれぞれに対し、
それぞれの動作計画グラフを介してそれぞれの前記ロボットが表され、それぞれの前記動作計画グラフは複数のノード及びエッジを含み、前記ノードはそれぞれの前記ロボットのそれぞれの状態を表し、前記エッジは前記エッジによって接続されたそれぞれのノードの対のうちのそれぞれのノードによって表されるそれぞれの状態の間の有効な遷移を表す、態様19に記載のシステム。
図面において、同一の参照番号は、同様の要素又は作用を示す。図面における要素のサイズ及び相対位置は、必ずしも一定の縮尺で描かれてはいない。例えば、さまざまな要素の形状及び角度は一定の縮尺で描かれず、これらの要素のいくつかは、図面を見やすくするために、随時適当に拡大及び配置されている。さらに、描かれた要素の特定の形状は、特定の要素の実際の形状に関するいかなる情報も伝えることを意図しておらず、図面における認識を容易にするために単に選択されたものである。
図1は、タスクを実行するための共用ワークスペース内で動作する複数のロボットを含み、ロボットのうちの他のロボットの計画された運動を考慮に入れるロボットの動作計画を動的に生成する動作プランナ(又は、動作計画器/動作計画装置)を含み、任意選択で知覚サブシステムを含む、例示された一実装形態によるロボットシステムの概略図である。 図2は、例示された一実装形態による、環境の機能ブロック図であり、、第1のロボットは、動作プランナ(又は、動作計画作成者)を含み、他のロボットの他の動作プランナに動作プランナを提供し、さらに、動作プランナとは異なる、別個の計画グラフのソースを含むロボット制御システムを介して制御される。 図3は、例示された一実装形態による、共用ワークスペースで動作するロボットのためのCスペースの例示的な動作計画グラフである。 図4は、少なくとも1つの例示された実施形態による、動作計画グラフ及び掃引ボリュームを生成するための、プロセッサベースのシステムにおける動作の方法を示す流れ図である。 図5A及び図5Bは、例示された一実施形態による、動作プランを生成し、任意選択で、共用ワークスペースで動作する複数のロボットを制御するための、プロセッサベースのシステムにおける動作方法を示す流れ図である。 図6は、少なくとも1つの例示された実施形態による、動作プランを生成し、任意選択で、共用ワークスペースで動作する複数のロボットを制御するための、プロセッサベースのシステムにおける動作方法を示す流れ図である。
以下の説明では、種々の開示の実施態様が正しく理解されるように、一定の具体的な詳細を記載する。但し、当業者ならば、これら具体的な細部の1つ又は2つ以上を欠いても、又は他の方法、他の構成部材、他の材料でも実施が可能であることは容易に理解するところであろう。他の例では、コンピュータシステム、アクチュエータシステム、及び/又は通信ネットワークに関連する周知の構造は実施形態の説明を不必要に曖昧にすることを避けるために、詳細には示されておらず、又は説明されていない。他の例では実施形態の説明を不必要に曖昧にすることを回避するために、1つ又は複数のオブジェクトなどの知覚データ及びボリュメトリック表現を生成するための周知のコンピュータビジョン方法及び技法は詳細には説明されていない。
以下の本明細書及び特許請求の範囲において文脈上別段の必要がない限り、「comprises」及び「comprising」等の用語「含む(comprise)」及びその派生語は、開放で包括的な意味、即ち、「含む、がそれに限定されない」とみなされる。
本明細書全体を通して、「1つの実装形態」又は「実装形態」又は「1つの実施形態」又は「実施形態」への言及は、実施形態に関連して記載された特定の特徴、構成又は特性が少なくとも1つの実装形態又は少なくとも1つの実装形態に含まれることを意味する。したがって、本明細書全体の様々な箇所における「1つの実装形態」又は「実装形態」又は「1つの実施形態において」又は「実施形態において」という語句の出現は、必ずしもすべてが同じ実装形態又は実施形態を指しているわけではない。さらに、特定の特徴、構造、又は特性は、1つ又は複数の実装形態又は実施形態において任意の適切な方法で組み合わせることができる。
本明細書及び同時提出の特許請求の範囲で用いられているように、単数表現「1つの(a)」、「1つの(an)」、および「その(the)」は、文脈上別段明確な指示がない限り、複数の存在を包含するものである。また、用語「又は」は一般に、文脈上別段明確な指示がない限り、「及び/又は」を包含する意味で用いられる。
本明細書及び添付の特許請求の範囲で使用されるように、用語「determine」、「determining」及び「determined」は、衝突が起こるか、又は結果として起こるかの文脈で使用されるときには、所与のポーズ又は複数の中間ポーズを介した2つのポーズ間の移動がロボットの一部分と何らかの物体(例えば、ロボットの別の部分、別のロボットの一部分、持続性障害物、一時的障害物、例えば、人)との間の衝突をもたらすかどうかに関する評価又は予測が行われることを意味する。
発明の名称及び要約は便宜上のものであり、本発明の範囲を表すものではなく、又は実施形態を意味するものでもない。
図1は、例示された一実施形態による、タスクを実行するために共用ワークスペース104内で動作する複数のロボット102a、102b、102c(まとめて102)を含むロボットシステム100を示す。
ロボット102は、多種多様な形態のいずれかをとることができる。典型的には、ロボットは1つ以上のロボット付属物の形態をとるか、又はそれを有する。ロボット102は1つ又は複数のジョイントを有する1つ又は複数のリンケージ(又は、リンク機構)と、制御信号又は駆動信号に応答してリンク機構を動かすように結合及び作動可能なアクチュエータ(例えば、電気モータ、ステッパモータ、ソレノイド、空気圧アクチュエータ又は油圧アクチュエータ)とを含むことができる。空圧アクチュエータは例えば、1つ又は複数のピストン、シリンダ、バルブ、ガスのリザーバ、及び/又は圧力源(例えば、コンプレッサ、ブロワ)を含んでもよい。油圧アクチュエータは例えば、1つ又は複数のピストン、シリンダ、バルブ、流体のリザーバ(例えば、低圧縮性作動流体)、及び/又は圧力源(例えば、コンプレッサ、ブロワ)を含んでもよい。ロボットシステム100は、他の形態のロボット102、例えば自律型車両を使用することができる。
共用ワークスペース104は典型的にはロボット102a~102cが動作し、移動することができる3次元空間を表すが、ある限定された実装形態では共用ワークスペース104が2次元空間を表す場合もある。共用ワークスペース104は、ロボット102の少なくとも一部が衝突を回避するために運動が制御されない場合に、空間及び時間において重なり合うか、さもなければ衝突する可能性があるボリューム又は領域である。ワークスペース104は、例えば図3を参照して以下に説明するロボット102a~102cのそれぞれの「構成(コンフィグレーション)スペース」又は「Cスペース」とは異なることに留意されたい。
本明細書で説明されるように、ロボット102a又はその一部は別のロボット102bの視点から考慮されるとき(すなわち、別のロボット102bの動作計画のとき)、障害物を構成し得る。共用ワークスペース104はさらに、他の障害物、例えば、機械(例えば、コンベア106)、ポスト、柱、壁、天井、床、テーブル、人間、及び/又は動物を含んでもよい。共用ワークスペース104はさらに、ロボット102がタスクを実行することの一部として操作する1つ又は複数のワークアイテム又はワークピース108、例えば、1つ又は複数の小包、パッケージング、ファスナ、ツール、アイテム、又は他の物体を含むことができる。
ロボットシステム100はロボット102a、102b、102cのそれぞれについて、1つ又は複数の動作プランナ(又は、動作計画装置/motion planner)、例えば、それぞれの動作プランナ110a、110b、110c(3つをまとめて110で示す)を含む1つ又は複数のロボット制御システム109a、109b、109c(3つをまとめて109で示す)を含むことができる。少なくともいくつかの実装形態では、単一の動作プランナ109を使用して、2つ、それより多い、又はすべてのロボット102の動作計画を生成することができる。動作プランナ110は、ロボット102のそれぞれを制御するために通信可能に連結されている。動作プランナ110はまた、例えば、ロボット幾何学モデル112a、112b、112c(動力学モデルとしても知られる、まとめて112)、タスクメッセージ114a、114b、114c(まとめて114)、及び共用ワークスペース104内で動作する他のロボット102のための動作計画又は動作の他の表現116a、116b、116c(まとめて116)を含む様々なタイプの入力を受け取るように通信可能に連結されている。ロボット幾何学モデル112は例えば、関節(又は、ジョイント)、自由度、寸法(例えば、リンク機構の長さ)に関して、及び/又はロボット102のそれぞれのC空間に関して、所与のロボット102の幾何学的形状を定義する。(図2に示すように、ロボット幾何学モデル112の動作計画グラフへの変換は実行時前又はタスク実施前に行われてもよく、これは、例えば、様々な技法のいずれかを使用してロボットシステム100とは別個の異なるプロセッサベースのシステムによって行われてもよい。)タスクメッセージ114は例えば、それぞれのロボット102の終了ポーズ、終了構成又は終了状態、及び/又は中間ポーズ、中間構成又は中間状態に関して行われるタスクを指定する。ポーズ、構成、又は状態は例えば、それぞれのロボット102の関節位置及び関節角度/回転(例えば、関節ポーズ、関節座標)に関して定義することができる。
動作プランナ110は、任意選択で、入力として静的オブジェクトデータ118a、118b、118c(まとめて118)を受け取るように通信可能に結合される。静的オブジェクトデータ118はワークスペース104内の静的オブジェクトの表示(例えば、サイズ、形状、位置、占有スペース)であり、これは、例えば、先験的に知られている。静的オブジェクトは例えば、ワークスペース内の1つ又は複数の固定構造、例えば、ポスト、柱、壁、天井、床、コンベア106を含むことができる。ロボット102は共用ワークスペースで動作しているので、静的オブジェクトは、典型的には各ロボットに対して同一である。このように、少なくとも一部の実装形態においては、動作プランナ110に供給される静的オブジェクトデータ118a、118b、118cは同一である。他の実装形態では、動作プランナ110に供給される静的オブジェクトデータ118a、118b、118cは例えば、環境内のロボット102の位置又は向き、あるいはロボット102の環境視点に基づいて、ロボットごとに異なってもよい。さらに、上述したように、いくつかの実施態様では、単一の動作プランナ110が2つ以上のロボット102の動作計画を生成することができる。
動作プランナ110は、オプションとして、例えば知覚サブシステム124によって提供される知覚データ120を入力として受信するように通信可能に結合される。知覚データ120は、事前に知られていないワークスペース104内の静的及び/又は動的オブジェクトを表す。知覚データ120は1つ又は複数のセンサ(例えば、カメラ122a、122b)を介して感知されるような、及び/又は知覚サブシステム124によって障害物のデジタル表現に変換されるような生データであってもよい。
任意選択の知覚サブシステム124は1つ又は複数のプロセッサを含むことができ、1つ又は複数の機械可読命令を実行することができ、機械可読命令は知覚サブシステム124に、ロボット102が動作して様々な異なるシナリオのタスクを実行する環境の表現のそれぞれの離散化を生成させる。
任意選択のセンサ(例えば、カメラ122a、122b)は知覚サブシステム124に生の知覚情報(例えば、点群)を提供する。任意選択の知覚サブシステム124は生の知覚情報を処理することができ、結果として得られる知覚データは点群、占有グリッド、ボックス(例えば、バウンディングボックス)、又は他の幾何学的オブジェクト、又は環境内に存在する障害物を表すボクセルのストリーム(すなわち、「ボクセル」は、3D又はボリュームピクセルと同等である)として提供することができる。障害物の表現は、任意選択で、オンチップメモリに記憶されてもよい。知覚データ120はどのボクセル又はサブボリューム(例えば、ボックス)が現在の時間(例えば、実行時間)に環境内で占有されているかを表すことができる。いくつかの実装形態ではロボット又は環境内の別の障害物のいずれかを表す場合、ロボット又は障害物(例えば、他のロボットを含む)のそれぞれの表面はボクセル又は多角形のメッシュ(しばしば三角形)のいずれかとして表すことができる。場合によっては、オブジェクトを代わりにボックス(矩形プリズム、バウンディングボックス)又は他の幾何学的オブジェクトとして表すことが有利である。オブジェクトがランダムに成形されていないという事実のために、ボクセルがどのように編成されるかにはかなりの量の構造が存在することがあり、物体内の多くのボクセルは3D空間内で互いにすぐ隣り合っている。したがって、オブジェクトをボックスとして表すことは、はるかに少ないビットを必要とすることがある(すなわち、ボックスの2つの対向するコーナーについてx、y、zデカルト座標だけを必要とすることがある)。また、ボックスについて交差テストを実行することは、ボクセルについて交差テストを実行することと複雑さが同等である。
少なくともいくつかの実装形態は複数のセンサの出力を組み合わせることができ、センサは、非常に細かい粒度のボクセル化を提供することができる。しかしながら、動作プランナが動作計画を効率的に実行するために、様々な状態、構成、又はポーズの間で遷移を行うときに、ロボット102又はその一部によって掃引される3D空間内の環境及びボリュームを表すために、より粗いボクセル(すなわち、「プロセッサボクセル」)を使用することができる。したがって、任意選択の知覚サブシステム124はそれに応じてセンサ(例えば、カメラ122a、122b)の出力を変換することができる。例えば、カメラ122a、122bのアウトプットは、各軸上で10ビットの精度を使用することができるので、カメラ122a、122bから直接的に生じる各ボクセルは30ビットのIDを有し、230のセンサボクセルがある。システム200a(図2)は18ビットプロセッサのボクセルIDに対して、それぞれの軸に6ビットの精度を使用することがあり、218のプロセッサボクセルが存在することになる。したがって、例えば、プロセッサボクセルごとに212センサボクセルを有することができる。実行時に、システム200aが、プロセッサボクセル内のセンサボクセルのいずれかが占有されていると判定した場合、システム200aはプロセッサボクセルが占有されていると見なし、それに応じて占有グリッドを生成する。
図1には、様々な通信経路が矢印として示されている。通信経路は例えば、1つ又は複数の有線通信経路(例えば、電気導体、信号バス、又は光ファイバ)及び/又は1つ又は複数の無線通信経路(例えば、RF又はマイクロ波無線及びアンテナ、赤外線トランシーバを介して)の形態をとることができる。特に、動作プランナ110a~110cの各々はロボット102a~102cのそれぞれの1つの動作計画を動作プランナ110a~110cの他の1つに提供するために、直接的又は間接的に互いに通信可能に結合される。例えば、動作プランナ110a~110cはネットワークインフラ、例えば、非独自仕様のネットワークインフラ(non-proprietary network infrastructure)(例えば、イーサネットネットワークインフラ)126を介して、相互に通信接続されてもよい。これは、有利には共用ワークスペース内の異なる製造業者からのロボットの操作を可能にすることができる。
「環境」という用語は、ロボットの現在のワークスペースを指すために使用され、2つ以上のロボットが同じワークスペース内で動作する共用ワークスペースである。環境は障害物及び/又はワークピース(すなわち、ロボットが相互作用し、又は働きかけ、又は働きかけられるアイテム)を含むことができる。「タスク」という用語は、ロボットがその環境内の障害物と衝突することなくポーズAからポーズBに遷移するロボットタスクを指すために使用される。タスクは、おそらく、アイテムの把持又は把持解除、アイテムの移動又は投下、アイテムの回転、又はアイテムの取り出し又は配置を含むことができる。ポーズAからポーズBへの遷移は、任意選択で、1つ又は複数の中間ポーズ間の遷移を含むことができる。「シナリオ」という用語は、環境/タスクペアのクラスを指すために使用される。例えば、シナリオは「3フィートのテーブル又はコンベアを有する環境において、及び所与の範囲内のサイズ及び形状を有するx障害物とy障害物との間のピックアンドプレースタスク」とすることができる。目標の位置ならびに障害物のサイズ及び形状に応じて、そのような基準に適合する多くの異なるタスク/環境対が存在することができる。
動作プランナ110は他のロボット102の計画された動作(例えば、それぞれの動作計画116又は結果として得られる掃引ボリュームによって表される)を考慮しながら、動作計画116を動的に生成して、ロボット102に環境内でタスクを実行させるように動作可能である。動作プランナ110は動作計画116を生成するときに、事前の静的オブジェクト118及び/又は知覚データ120の表現を任意選択で考慮に入れることができる。任意選択で、動作プランナ110は所与の時間における他のロボット102の動作状態、例えば、別のロボット102が所与の動作又はタスクを完了したかどうかを考慮に入れ、完了している他のロボットのうちの1つの動作又はタスクに基づいて動作計画の再計算を可能にし、したがって、以前に除外された経路又は軌道を選択することができるようにすることができる。任意選択的に、動作プランナ110はロボット102の稼働(又は、運用/operational)状態、例えば、故障状態の発生又は検出、ブロック状態の発生又は検出、及び/又は動作計画要求を迅速化するか、代替的に遅延させるか、又はスキップするための要求の発生又は検出を考慮に入れることができる。
図2は、図示された一実装形態に従って、第1のロボット制御システム200aが、第1のロボット202の動作を制御するために第1の動作計画206aを生成し、他のロボット(図2には図示せず)を制御するために、少なくとも1つの通信チャネル(最も近い(又は、近接の/proximate)矢印により示される、たとえば、送信機、受信機、トランシーバ、無線、ルータ、イーサネット(登録商標))を介して、他のロボット制御システム200bの他の動作プランナ204bに障害物として動作の表現及び/又は第1の動作計画206aを提供する第1の動作プランナ204aを含む環境を示す。
同様に、他のロボット制御システム200bの他の動作プランナ204bは他のロボット(図2には図示されていない)のオペレーションを制御するための他の動作計画206bを生成し、他の動作計画206bを第1の動作プランナ204a及び他のロボット制御システム200bの他の動作プランナ204bの他のものに提供する。動作プランナ204a、204bは、様々なロボット202の動作がいつ完了したかを示す動作完了メッセージ209を受け取ることもできる。これにより、動作プランナ204a、204bは、環境の現在又は更新された状態に基づいて、新しい又は更新された動作計画を生成することができる。例えば、共用ワークスペースの一部は第1のロボット202が第1のロボットによって実行されるタスクの一部又は全部である動作を完了した後に、第2のロボットがタスクを実行するために利用可能になり得る。
ロボット制御システム200a、200bは動作計画グラフ208及び/又は掃引ボリューム表現211の1つ又は複数のソース212から動作計画グラフ208及び/又は掃引ボリューム表現211を受信するために、たとえば、少なくとも1つの通信チャネル(近接矢印により示される、たとえば、送信機、受信機、トランシーバ、無線、ルータ、イーサネット)を介して通信可能に結合され得る。動作計画グラフ208及び/又は掃引ボリューム211のソース212は1つの例示された実装形態によれば、動作プランナ204a、204bとは別個であり、区別されてもよい。動作計画グラフ208及び/又は掃引ボリューム211のソース212は例えば、ロボット202のそれぞれの製造業者によって、又は他の何らかのエンティティによって動作又は制御され得る、1つ又は複数のプロセッサベースのコンピューティングシステム(例えば、サーバコンピュータ)であり得る。動作計画グラフ208はそれぞれ、それぞれのロボットの状態、構成、又はポーズを表すノード214のセット(図2では2つだけ指し示す)と、ノード214のそれぞれの対のノード214を結合し、状態、構成、又はポーズ間の合法的又は有効な遷移を表すエッジ216のセット(図2では2つだけ指し示す)とを含むことができる。状態、構成、又はポーズは例えば、それぞれのロボット202のジョイントのそれぞれについてのジョイント位置、向き、ポーズ、又は座標のセットを表すことができる。したがって、各ノード214は、ロボット202を構成するジョイントのポーズによって完全に画定されるロボット202又はその一部のポーズを表すことができる。動作計画グラフ208は実行時(又は、ランタイム/runtime)の前、例えば、実行時前(preruntime)又は構成時に決定、セットアップ、又は定義することができる(すなわち、タスクの実行前に定義される)。掃引ボリューム211は、動作計画グラフ208のそれぞれのエッジに対応する動作又は遷移を実行するときにロボット202又はその一部が占有するそれぞれのボリュームを表す。掃引ボリューム211は様々な形態のいずれかで、例えば、ボクセル、ユークリッド距離フィールド、幾何学的オブジェクトの階層として表すことができる。これは、応答性が特に問題でない場合に、実行時の前に、最も計算集約的な作業のいくつかを実行することを可能にするので有利である。
各ロボット202はリンク、ジョイント、エンドオブアームツール又はエンドエフェクタ、及び/又はジョイントの周りでリンクを動かすように動作可能なアクチュエータ218a、218b、218c(3つ、まとめて218)のセットを含んでもよい。各ロボット202は例えば、動作計画206aの形式で制御信号を受け取り、アクチュエータ218を駆動するための駆動信号を供給する1つ又は複数の動作コントローラ(例えば、モータコントローラ)220(1つだけが示されている)を含んでもよい。
各ロボット202のためのそれぞれのロボット制御システム200a、200bがあってもよく、あるいは、1つのロボット制御システム200aが2つ以上のロボット202のための動作計画を実行してもよい。1つのロボット制御システム200aが、例示目的のために詳細に説明される。当業者は、この説明が他のロボット制御システム200bの同様の又は同一の追加の例にも適用され得ることを認識するであろう。
ロボット制御システム200aは1つ又は複数のプロセッサ222と、1つ又は複数の関連する非一時的なコンピュータ可読又はプロセッサ可読記憶媒体、たとえば、システムメモリ224a、ディスクドライブ224b、及び/又はプロセッサ222のメモリ又はレジスタ(図示せず)とを備えることができる。一時的でないコンピュータ又はプロセッサ-読み取り可能な記憶媒体224a、224bは、システムバス226のような1つ又は複数の通信チャンネルを介してプロセッサ222aに通信接続されている。システムバス226は、メモリコントローラを備えたメモリバス、周辺バス、及び/又はローカルバスを含む、任意の既知のバス構造又はアーキテクチャを採用することができる。このような構成要素の1つ又は複数はさらに、あるいは代替として、1つ又は複数のパラレルケーブル、シリアルケーブル、又は、例えば、ユニバーサルシリアルバス(「USB」)3.0、周辺機器構成要素相互接続エクスプレス(PCle)、又はThunderbolt(登録商標)を介した、高速通信が可能なワイヤレスネットワークチャネルなど、1つ又は複数の他の通信チャネルを介して互いに通信することもできる。
ロボット制御システム200aはまた、例えば、ネットワークインターフェース227を介して、ロボット制御システム200の様々な構成要素に直接通信可能に結合又は間接的に通信可能に結合される、1つ又は複数のリモートコンピュータシステム、例えば、サーバコンピュータ(例えば、動作計画グラフ212のソース)、デスクトップコンピュータ、ラップトップコンピュータ、ウルトラポータブルコンピュータ、タブレットコンピュータ、スマートフォン、ウェアラブルコンピュータ、及び/又はセンサ(図2には図示せず)に通信可能に結合されてもよい。リモートコンピューティングシステム(例えば、サーバコンピュータ(例えば、動作計画グラフのソース212))を使用して、ロボット制御システム200a及びロボット制御システム200内の様々な構成要素をプログラムし、構成し、制御し、又は、それとインターフェースするか、又は、それにデータ(例えば、動作計画グラフ208、掃引ボリューム211、タスク仕様215)を入力することができる。このような接続は1つ以上のワイドエリアネットワーク(WAN)を介してもよく、例えば、インターネットプロトコルを使用する1つ以上の通信チャネル、例えば、イーサネット又はインターネットを介してもよい。上述のように、実行時前計算(例えば、動作計画グラフのファミリの生成)はロボット制御システム200a又はロボット202とは別個のシステムによって実行されてもよく、一方、実行時計算は、いくつかの実装形態ではロボット202に搭載され得るロボット制御システム200のプロセッサ222によって実行されてもよい。
上述したように、ロボット制御システム200aは1つ又は複数のプロセッサ222、(すなわち、回路)、非一時的な記憶媒体224a、224b、及び種々のシステム構成要素を結合するシステムバス216を含んでもよい。プロセッサ222は、1つ又は複数の中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、グラフィックス処理装置(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、プログラマブル論理コントローラ(PLC)などの任意の論理処理装置であってよい。システムメモリ224aは、リードオンリーメモリ(「ROM」)226、ランダムアクセスメモリ(「RAM」)228、フラッシュメモリ230、EEPROM(図では示されていない)を含むことができる。ROM 226の一部を形成することができる基本入出力システム(「BIOS」)232は起動中などに、ロボット制御システム200内の要素間で情報を転送するのを助ける基本ルーチンを含む。
ドライブ224bは例えば、磁気ディスクからの読出し及び磁気ディスクへの書込みのためのハードディスクドライブ、ソリッドステートメモリからの読出し及びソリッドステートメモリへの書込みのためのソリッドステート(例えば、フラッシュメモリ)ドライブ、及び/又はリムーバブル光ディスクからの読出し及びリムーバブル光ディスクへの書込みのための光ディスクドライブであってもよい。ロボット制御システム200aはまた、様々な異なる実施形態において、そのようなドライブの任意の組み合わせを含んでもよい。ドライブ224bは、システムバス226を介してプロセッサ222と通信することができる。1つ又は複数のドライブ224bは当業者に知られているように、そのようなドライブとシステムバス226との間に結合されたインターフェース又はコントローラ(図示せず)を含むことができる。ドライブ224b及びその関連するコンピュータ可読媒体は、ロボット制御システム200のためのコンピュータ可読及び/又はプロセッサ可読及び/又は実行可能命令、データ構造、プログラムモジュール、及び他のデータの不揮発性記憶装置を提供する。当業者は、WORMドライブ、RAIDドライブ、磁気カセット、デジタルビデオディスク(「DVD」)、ベルヌーイカートリッジ、RAM、ROM、スマートカードなど、コンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体を使用することができることを理解するであろう。
実行可能な指示及びデータはシステムメモリ224aに、例えば、オペレーティングシステム236、1つ又は複数のアプリケーションプログラム238、他のプログラム又はモジュール240及びプログラムデータ242に記憶することができる。アプリケーションプログラム238はプロセッサ212に、他のロボットの計画された動作が障害物として表され得る環境内の障害物及び/又はターゲットオブジェクト又はワークピースを含むロボット202が動作する環境の離散化された表現を生成することと、衝突評価の結果の呼び出し又は他の方法での取得、動作計画グラフ内のエッジのコスト値の設定、及び動作計画グラフ内の利用可能な経路の評価を含む動作計画又は道路地図(又は、ロードマップ)を生成することと、及び/又は任意選択で、決定された複数の動作計画又は道路地図を記憶することとのうちの1つ又は複数を実行させるプロセッサ実行可能命令を含み得る。動作計画構築(例えば、衝突検出又は衝突評価、衝突検出又は衝突評価に基づく動作計画グラフにおけるエッジの更新コスト、及び経路探索又は経路評価)は本明細書(例えば、図4及び図5を参照)及び参照により本明細書に組み込まれる参考文献に記載されているように実行することができる。衝突検出又は衝突評価は、本明細書の他の場所で説明される様々な構造及び技法を使用して、衝突検出又は衝突評価を実行することができる。アプリケーションプログラム238はプロセッサ222に他のオペレーション、例えば、任意選択で知覚データ(センサを介して取り込まれた)を処理させる、1つ又は複数の機械可読及び機械実行可能命令をさらに含むことができる。アプリケーションプログラム238はさらに、プロセッサ212に、本明細書及び参照により本明細書に組み込まれる参照文献に記載される様々な他の方法を実行させる1つ又は複数の機械実行可能命令を含むことができる。
様々な実施形態では、上述の動作のうちの1つ又は複数がネットワークインターフェース227を介した通信ネットワーク(例えば、ネットワーク210)を介してリンクされる1つ又は複数のリモート処理デバイス又はコンピュータによって実行され得る。
図2ではシステムメモリ224aに記憶されているよう示されているが、オペレーティングシステム236、アプリケーションプログラム238、他のプログラム/モジュール240、及びプログラムデータ242は他の非一時的なコンピュータ-又はプロセッサ-読み取り可能な媒体、例えばドライブ(s)224bに記憶され得る。
ロボット制御システム200aの動作プランナ204aは専用の動作プランナハードウェアを含むことができ、あるいは、プロセッサ(複数可)222及びシステムメモリ224a及び/又はドライブ224bに格納されたプロセッサ実行可能命令を介して、すべて又は部分的に実装することができる。
動作プランナ204aは、動作コンバータ250、衝突検出器252、コスト設定器254、及び経路アナライザ256を含んでもよく、又は実装してもよい。
動作コンバータ250は、ロボットの他のものの動作を障害物の表現に変換する。動作コンバータ250は、他の動作プランナ200bから動作計画204b又は他の動作の表現を受信する。次に、動作コンバータ250は、動作に対応する領域又はボリュームを決定する。例えば、動作コンバータは動作を、動作計画で表されるポーズ間の遷移又は移動において対応するロボット又はその一部によって掃引されたボリュームである対応する掃引ボリュームに変換することができる。有利には、動作プランナ250が障害物(例えば、掃引ボリューム)を単にキュー(又は、待ち行列)に入れることができ、対応する動作又は掃引ボリュームの時間を決定し、追跡し、又は示す必要がないことがある。他のロボット202bの動作を障害物に変換する所与のロボット202に対する動作コンバータ250として説明されているが、幾つかの実装形態では他のロボット202bが所与のロボット202に特定の動作の障害物表現(例えば、掃引ボリューム)を提供し得る。
衝突検出器252は衝突検出又は分析を実行し、所与のロボット202又はその一部の遷移又は動作が障害物との衝突をもたらすかどうかを判定する。上述したように、他のロボットの動作は、障害物として表現されると有利な場合もある。したがって、衝突検出器252は、1つのロボットの動作が共用ワークスペースを移動する別のロボットとの衝突をもたらすか否かを判断することができる。
いくつかの実装形態では、衝突検出器252がソフトウェアベースの衝突検出又は評価を実施し、例えば、移動中にロボット202、202b又はその一部によって掃引されるボリュームの幾何学的(例えば、球体)表現の階層に基づく評価、又は、バウンディングボックス(又は、境界ボックス)-バウンディングボックス衝突評価を実行する。いくつかの実装形態では、衝突検出器252がハードウェアベースの衝突検出又は評価を実装し、たとえば、専用ハードウェア論理回路のセットを使用して、専用ハードウェア論理回路を介して障害物及び動作のストリーミング表現を表す。ハードウェアベースの衝突検出又は評価では、衝突検出器が1つ又は複数の構成可能な回路アレイ、たとえば1つ又は複数のFPGA258を使用することができ、任意選択でブール衝突評価を生成することができる。
コスト設定器254は、衝突検出又は評価に少なくとも部分的に基づいて、動作計画グラフにおけるエッジのコストを設定又は調整することができる。例えば、コスト設定器254は、衝突をもたらすか、又は衝突をもたらす可能性があるポーズ間の状態又は動きの間の遷移を表すエッジに対して、比較的高いコスト値を設定することができる。また、例えば、コスト設定器254は、衝突をもたらさないか、又はもたらさない可能性が高いポーズ間の状態又は動きの間の遷移を表すエッジに対して、比較的低いコスト値を設定することができる。コストを設定することは、何らかのデータ構造(例えば、フィールド、ポインタ、テーブル)を介して、対応するエッジに論理的に関連づけられるコスト値を設定することを含むことができる。
経路アナライザ256はコスト値を有する動作計画グラフを使用して(例えば、最適の又は最適化された)経路(又は、パス)を決定することができる。例えば、経路アナライザ256は、動作計画グラフ内のそれぞれのノードによって表される2つの状態、構成又はポーズの間の最低コスト又は比較的低コストの経路を決定する最低コスト経路オプティマイザを構成することができる。経路アナライザ256は衝突の可能性を表す各エッジに関連するコスト値を考慮に入れて、任意の様々な経路発見アルゴリズム、例えば、最低コスト経路発見アルゴリズムを使用又は実行することができる。
Bellman-Fordアルゴリズムを実施するものを含む、最小コスト経路を決定するための様々なアルゴリズム及び構造を使用することができるが、最小コスト経路がその構成エッジのコスト又は重みの合計が最小になるように、動作計画グラフ208内の2つのノード間の経路として決定される任意のそのようなプロセスを含むが、それに限定されない、他のアルゴリズム及び構造を使用することができる。このプロセスは他のロボットの動作を障害物として表す動作計画グラフ及び衝突検出を用いて、衝突なしでタスクを実行するための「最良の」経路を見つけるための効率及び応答時間を増加させることにより、ロボット102、202に対する動作計画の技術を改善する。
動作プランナ204aは、任意選択でプルーナ(又は、除去器/pruner)260を含むことができる。プルーナ260は他のロボットによる動作の完了を表す情報を受信することができ、この情報は、本明細書では動作完了メッセージ209と呼ばれる。又は、完了を示すフラグをセットすることもできる。これに応答して、プルーナ260は、現在完了した動作を表す障害物又は障害物の一部を除去することができる。これは所与のロボットのための新しい動作計画の生成を可能にすることができ、これはより効率的であることができ、又は所与のロボットが別のロボットの動作によって以前に妨げられていた(又は、制止されていた/prevented)タスクの実行に注意することを可能にすることができる。このアプローチは、有利にも動作コンバータ250が動作のための障害物表現を生成する動作のタイミングを無視することを可能にする一方で、他の技術を使用するよりも、より良いスループットを依然として実現する。動作プランナ204aはさらに、障害物の修正が与えられると、衝突検出器252に新しい衝突検出又は評価を実行させて、エッジに関連するエッジ重み又はコストが修正された更新された動作計画グラフを生成させ、コストセッタ254及び経路アナライザ256にコスト値を更新させ、それに応じて新しい又は修正された動作計画を決定させるための信号、プロンプト、又はトリガを送信することができる。
動作プランナ204aは任意選択で、任意選択のセンサ262(例えば、デジタルカメラ)からの出力(例えば、環境のデジタル化表現)を障害物の表現に変換する環境コンバータ263を含んでもよい。したがって、動作プランナ204aは環境内の一時的なオブジェクト、例えば、人間、動物などを考慮に入れた動作計画を実行することができる。
プロセッサ212及び/又は動作プランナ204aは、1つ又は複数の中央処理装置(CPU)、デジタル信号プロセッサ(DSP)、グラフィックス処理装置(GPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理コントローラ(PLC)などの任意の論理処理装置であってもよく、又はそれらを含んでもよい。市販のコンピュータシステムの非限定的な例としては米国Intel(登録商標)社が提供するマイクロプロセッサのCeleron, Core、Core 2, Itanium, Xeonファミリー、米国Advanced Micro Devices.が提供するK8、K10、Bulldozer、及びBobcatシリーズマイクロプロセッサ、米国アップルコンピュータが提供するA5、A6、及びA7シリーズマイクロプロセッサ、米国Qualcomm, Inc.が提供するSnapdragonシリーズマイクロプロセッサ、米国Oracle Corp.が提供するSPARCシリーズマイクロプロセッサが挙げられるが、これらに限定されない。図2に示される様々な構造の構築及びオペレーションは、2017年6月9日出願の国際特許出願第PCT/US2017/036880号“MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS”、2016年1月5日出願の国際特許出願公開第WO 2016/122840「“SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME”」、及び/又は2018年1月12日出願の米国特許出願第62/616,783号「“APPARATUS, METHOD AND ARTICLE TO FACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVING DYNAMIC OBJECTS”」に記載された構造、技術及びアルゴリズムを実施又は使用することができる。
必須ではないが、実装形態の多くはコンピュータ又はプロセッサ読み取り可能媒体上に記憶され、障害物表現、衝突評価、及び他の動作計画オペレーションを実行することができる1つ又は複数のコンピュータ又はプロセッサによって実行されるプログラムアプリケーションモジュール、オブジェクト、又はマクロなど、コンピュータ実行可能命令の一般的なコンテキストで説明される。
動作計画オペレーションは、幾何学モデル112(図1)に基づくロボット幾何学の表現、タスク114(図1)、及び様々な状態又はポーズにおけるロボットによって占有されたボリューム(例えば掃引ボリューム)の表現、及び/又は状態又はポーズ間の移動中にデジタル形式、例えば点群、ユークリッド距離フィールド、データ構造フォーマット(例えば、階層形式、非階層形式)、及び/又は曲線(例えば、多項式又はスプライン表現)の1つ、2つ以上又はすべてへの生成又は変換を含むが、これらに限定されない。動作計画オペレーションは静的又は持続的障害物118(図1)及び/又は静的又は過渡的障害物120(図1)を表す知覚データの表現を、デジタル形式、例えば、点群、ユークリッド距離フィールド、データ構造形式(例えば、階層形式、非階層形式)、及び/又は曲線(例えば、多項式又はスプライン表現)の1つ、2つ以上又はすべてへの生成又は変換を任意選択で含むことができるが、これらに限定されない。
動作計画オペレーションは様々な衝突評価技法又はアルゴリズム(例えば、ソフトウェアベース、ハードウェアベース)を使用して、ロボットの様々な状態又はポーズ、又は状態又はポーズ間のロボットの動作についての衝突を決定又は検出又は予測することを含むことができるが、これらに限定されない。
いくつかの実装形態では動作計画オペレーションが1つ又は複数の動作計画グラフ、動作計画、又は道路地図を決定すること、決定された計画グラフ、動作計画、又は道路地図を格納すること、及び/又はロボットの動作を制御するために計画グラフ、動作計画、又は道路地図を提供することを含むことができるが、これらに限定されない。
一実施形態では、衝突検出又は評価が関数呼び出し又は同様のプロセスに応答して実行され、そこにブール値を返す。衝突検出器252は、1つ又は複数のフィールドプログラマブルゲートアレイ(FPGA)及び/又は1つ又は複数の特定用途向け集積回路(ASIC)を介して実装されて、低い待ち時間、比較的低い電力消費、及び処理可能な情報量の増加を達成しながら衝突検出を実行することができる。
様々な実装形態では、そのようなオペレーションが完全にハードウェア回路で、又はシステムメモリ224aなどのメモリストレージに格納されたソフトウェアとして実行され、1つ又は複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、グラフィックス処理ユニット(GPU)プロセッサ、プログラムドロジックコントローラ(PLC)、電気的プログラマブルリードオンリメモリ(EEPROM)などの1つ又は複数のハードウェアプロセッサ222aによって、又はメモリストレージに格納されたハードウェア回路及びソフトウェアの組合せとして実行され得る。
全体的又は部分的に使用され得る知覚、計画グラフ構築、衝突検出、及び経路探索の様々な態様は、また、「“MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS,”」と題する、2017年6月9日に出願された国際特許出願第PCT/US2017/036880号、「“SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME”」と題する2016年1月5日に出願された国際特許出願公開第WO 2016/122840号、「“APPARATUS, METHOD AND ARTICLE TO FACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVING DYNAMIC OBJECTS”」と題する2018年1月12日出願の米国特許出願第62/616,783号、「“APPARATUS, METHODS AND ARTICLES TO FACILITATE MOTION PLANNING IN ENVIRONMENTS HAVING DYNAMIC OBSTACLES”」と題する2019年6月3日出願の米国特許出願第62/856,548に記載される。当業者は、図示された実施態様、ならびに他の実施態様がロボット、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベース又はプログラマブル家庭用電化製品、パーソナルコンピュータ(「PC」)、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどのものを含む、他のシステム構造及び配置、ならびに/又は他のコンピューティングシステム構造及び配置で実施され得ることを理解するであろう。(例えば、構成時及び実行時に)実装又は実施形態又はその一部は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスク又はモジュールが実行される分散コンピューティング環境で実施することができる。分散コンピューティング環境では、プログラムモジュールがローカル及びリモートメモリ記憶装置又はメディアの両方に配置されてもよい。しかしながら、動作計画を改善するのを助けるためには、ある種の情報がどこにどのように記憶されるかが重要である。
例えば、様々な動作計画ソリューションはロードマップ(すなわち、動作計画グラフ)をプロセッサ(例えば、FPGA)に「ベークイン」し、ロードマップ内の各エッジは、プロセッサの再構成不可能なブール回路に対応する。計画グラフがプロセッサに「ベークイン」される設計は複数の又は大きな計画グラフを記憶するためのプロセッサ回路が限られているという問題を提起し、一般に、異なるロボットで使用するように再構成することができない。
1つの解決策は、計画グラフ情報をメモリ記憶装置に配置する再構成可能な設計を提供する。このアプローチは回路にベークされる代わりに、メモリに情報を記憶する。別のアプローチは、メモリの代わりにテンプレート化された再構成可能な回路を使用する。
上述のように、情報の一部(例えば、ロボット幾何学モデル)は実行時間前である構成時間の間に、捕捉され、受信され、インプットされ、又は提供され得る。受信された情報は構成時間中に処理されて、処理された情報(例えば、動作計画グラフ)を生成し、オペレーションを高速化するか、又は実行時間中の計算の複雑さを低減することができる。
実行時中に、衝突検出は、任意のポーズ又はポーズ間の移動について、ロボットの任意の部分がロボット自体の別の部分、他のロボット又はその部分と、環境内の持続的又は静的障害物と、又は未知の軌道を有する環境内の一次的な(transient)障害物(例えば、人)と衝突するか、又は衝突すると予測されるかどうかを決定することを含め、環境全体について実行され得る。
図3はロボット102(図1)、202(図2)に対して、ロボット102、202の目標が静的障害物及び動的障害物との衝突を回避しながらタスクを実行することであり、その障害物は共用ワークスペースで動作する他のロボットを含むことができる場合の、例示的動作計画グラフ300を示す。
計画グラフ300は、それぞれ、エッジ310a~310h(図面ではノードの対の間の直線として表されている)によって接続された複数のノード308a~308i(図面では白抜きの円として表されている)を含む。各ノードは、ロボット102、202の構成空間内のロボット102、202の状態を特徴付ける時間及び変数を、暗黙的又は明示的に表す。構成空間は、しばしばC空間と呼ばれ、計画グラフ300に表されるロボット102、202の状態又は構成又はポーズの空間である。例えば、各ノードはロボット102、202の状態、構成又はポーズを表すことができ、これらは位置、向き又はポーズ(すなわち、位置及び向き)を含むことができるが、これらに限定されない。状態、構成、又はポーズは例えば、ロボット102、202のジョイントのジョイント位置及びジョイント角度/回転(例えば、ジョイントポーズ、ジョイント座標)のセットによって表すことができる。
計画グラフ300のエッジは、ロボット102、202のこれらの状態、構成、又はポーズの間の有効な、又は許容される遷移を表す。計画グラフ300のエッジは、デカルト座標における実際の動きを表すのではなく、C空間における状態、構成、又はポーズの間の遷移を表す。計画グラフ300の各エッジは、それぞれのノード対の間のロボット102、202の遷移を表す。例えば、エッジ310aは、2つのノード間のロボット102、202の遷移を表す。特に、エッジ310aは、ノード308bに関連する特定の構成におけるロボット102、202の状態と、ノード308cに関連する特定の構成におけるロボット102、202の状態との間の遷移を表す。例えば、ロボット102、202は、現在、ノード308aに関連付けられた特定の構成にあり得る。ノードは互いに様々な距離で示されているが、これは例示の目的のためだけのものであり、これはいかなる物理的距離にも関係しない。計画グラフ300内のノード又はエッジの数に制限はないが、計画グラフ300内で使用されるノード及びエッジが多ければ多いほど、動作プランナはタスクを実行するために、ロボット102、202の1つ又は複数の状態、構成、又はポーズに従って最適経路をより正確に決定することができ、それは最もコストの低い経路を選択するための経路がより多く存在するからである。
各エッジは、コスト値に割り当てられるか、又は関連付けられる。コスト値は、対応するエッジによって表される動きに関する衝突評価を表すことができる。
典型的には、ロボット102、202が特定の障害物、例えば共用ワークスペース内の他のロボットを回避することが望ましい。いくつかの状況では、ロボット102、202が例えば、物体又はワークピースを把持又は移動させるために、共用ワークスペース内の特定の物体に接触するか、又は近接することが望ましい場合がある。図3はロボット102、202の目標がタスクを実行する(例えば、物体を拾い上げて配置する)際に、多数のポーズを移動しながら、1つ又は複数の障害物との衝突を回避することである場合において、ロボット102、202のためのパスを識別するために、動作プランナによって使用される計画グラフ300を示す。
障害物は例えば、バウンディングボックス、方向付けられたバウンディングボックス、曲線(例えば、スプライン)、ユークリッド距離フィールド、又は幾何学的エンティティの階層としてデジタル的に表されてもよく、いずれのデジタル表現も、障害物のタイプ及び実行される衝突検出のタイプに最も適切であり、それ自体は、使用される特定のハードウェア回路に依存してもよい。一部の実装では、一次エージェント102のロードマップ内の掃引ボリュームが事前に計算される。衝突評価の例は、2017年6月9日に出願された国際特許出願第PCT/US2017/036880号「MOTION PLANNING FOR AUTONOMOUS VEHICLES AND RECONFIGURABLE MOTION PLANNING PROCESSORS」、2018年8月23日に出願された米国特許出願第62/722,067号「COLLISION DETECTION USEFUL IN MOTION PLANNING FOR ROBOTICS」、及び2016年1月5日に出願された国際特許出願公開第WO2016/122840号「SPECIALIZED ROBOT MOTION PLANNING HARDWARE AND METHODS OF MAKING AND USING SAME」に記載されている。
動作プランナ又はその一部(例えば、図2の衝突検出器252)は、動作又は遷移(エッジによって表される)が障害物との衝突をもたらす可能性又は確率を判定又は評価する。いくつかの例では判定はブール値をもたらし、他の例では判定は確率として表現されてもよい。
ノード間の直接遷移が障害物との衝突を引き起こす確率がある計画グラフ300内のノードについて、動作プランナ(例えば、コスト設定器254、図2)は障害物との衝突の確率を示すコスト値又は重みを、それらのノード間を遷移する計画グラフ300のエッジ(例えば、エッジ310a、310b、310c、310d、310e、310f、310g、310h)に割り当てる。図3に示す例では比較的高い確率の領域がグラフ部分314として示されているが、物理的領域に対応していない。
例えば、動作プランナは、障害物との衝突の確率が衝突の定義された閾値確率未満である計画グラフ300のいくつかのエッジのそれぞれについて、ゼロに等しいか又はゼロに近い値を有するコスト値又は重みを割り当てることができる。この例では、動作プランナが障害物との衝突の確率が全くないか、又はほとんどないロボット102、202の遷移又は動作を表す、計画グラフ300内のエッジに、ゼロのコスト値又は重みを割り当てている。衝突の定義された閾値確率を上回る環境内の障害物との衝突のそれぞれの確率を有する計画グラフ300のいくつかのエッジのそれぞれについて、動作プランナは、実質的にゼロより大きい値を有するコスト値又は重みを割り当てる。本実施例では、動作プランナが障害物との衝突の確率が比較的高い計画グラフ300内のエッジに、ゼロよりも大きいコスト値又は重みを割り当てている。衝突の確率のために使用される特定の閾値は変化し得る。例えば、閾値は、衝突の40%、50%、60%又はより低い又はより高い確率であり得る。また、ゼロより大きい値を有するコスト値又は重みを割り当てることは、衝突のそれぞれの確率に対応するゼロより大きい大きさを有する重みを割り当てることを含み得る。例えば、計画グラフ300に示されるように、動作プランナはより高い衝突確率を有するエッジ310f及び310iに5のコスト値又は重みを割り当てているが、より低い1の大きさを有するコスト値又は重みを、動作プランナが衝突確率がはるかに低いと判断したエッジ310p及び310gに割り当てている。他の実装形態では、コスト値又は重みは衝突と非衝突との間の二値選択を提示することができ、その場合、エッジにコスト値又は重みを割り当てる際に、2つのコスト値又は重みのみが選択される。
動作プランナは、衝突の確率に加えて、ファクタ又はパラメータに基づいて、各エッジのコスト値又は重みを割り当て、設定又は調整することができる。
動作プランナが衝突評価に少なくとも部分的に基づいて、ロボット102、202と障害物との衝突の確率を表すコスト値又は重みを設定した後、動作プランナ(例えば、図2の経路アナライザ256)は最適化を実行して、共用ワークスペース内で動作する他のロボットを含む障害物との衝突のない、又は比較的低い可能性を有する経路によって指定されるような、ロボット102、202の動作計画を提供する、結果として得られる計画グラフ300内の経路312を識別する。
一実施形態では、計画グラフ300のすべてのエッジコストが割り当てられ、又は設定されると、動作プランナ(例えば、図2の経路アナライザ256)は計算を実行して、目標ノードによって表される目標状態への、又は目標状態に向かう最小コスト経路を決定することができる。例えば、経路アナライザ256(図2)は計画グラフ300内のロボット102、202の現在の状態から、可能な状態、構成、又はポーズまで、最小コスト経路アルゴリズムを実行することができる。次に、計画グラフ300内の最小コスト(ゼロに最も近い)経路が、動作プランナによって選択される。上で説明したように、コストは、衝突の確率だけでなく、他の要因又はパラメータも反映することができる。この例では計画グラフ300内のロボット102、202の現在の状態、構成、又はポーズはノード308aにあり、経路は計画グラフ300内の経路312(ノード308aからノード308iを通って延びるセグメントを含む太線経路)として示されている。
多くの鋭いターンを有する計画グラフ300における経路として示されているが、そのようなターンはルートにおける対応する物理的なターンを表さず、ロボット102、202の状態、構成、又はポーズの間の論理的な遷移を表す。例えば、識別された経路312内の各エッジは環境内のロボット102、202の物理的構成に関する状態変化を表すことができるが、必ずしも図3に示される経路312の角度に対応するロボット102、202の方向の変化であるとは限らない。
図4は、少なくとも1つの例示された実装形態による、動作計画グラフ及び掃引ボリュームを生成するためのプロセッサベースのシステムにおける操作方法400を示す。方法400は、実行時前、例えば構成時に、実行されてもよい。方法400は1つ又は複数のロボット及び/又は1つ又は複数のロボット制御システムから分離され、別個であり、場合によっては遠隔のプロセッサベースのシステム(たとえば、サーバコンピュータ)によって実行され得る。
402において、プロセッサベースのシステムは、1つ又は複数のロボット運動力学モデルを受信する。ロボット運動力学モデルは、それぞれのロボットの幾何学的形状の仕様を提供する。
404で、プロセッサベースのシステムは、それぞれのロボット運動力学モデルに基づいて、ロボットのための動作計画グラフを生成する。動作計画グラフはロボットの各状態、構成、又はポーズをそれぞれのノードとして表し、状態、構成、又はポーズの対の間の有効な遷移を、対応するノードの対を接続するエッジとして表す。グラフに関して説明されているが、動作計画グラフは必ずしも従来のグラフとして表され、又は格納される必要はなく、むしろ、任意の様々なデータ構造(例えば、レコード及びフィールド、テーブル、リンクされたリスト、ポインタ、ツリー)を使用して、例えば論理的に、又はメモリ回路又はコンピュータプロセッサ内で表され得る。
406において、プロセッサベースのシステムは、動作計画グラフの各エッジについて掃引ボリュームを生成する。掃引ボリュームは、それぞれのエッジに対応する動作又は遷移を実行する際にロボット又はその一部によって掃引されるボリュームを表す。掃引ボリュームは例えば、ボクセル、ユークリッド距離フィールド、球の階層、又は他の幾何学的オブジェクトとして、多種多様な形態のいずれかで表すことができる。
408において、プロセッサベースのシステムは、動作計画グラフ及び/又は掃引ボリュームをロボット制御システム及び/又は動作プランナに提供する。プロセッサベースのシステムは非独自仕様の通信チャネル(例えば、イーサネット)を介して、動作計画グラフ及び/又は掃引ボリュームを提供することができる。いくつかの実装形態では、異なるロボット製造業者からの様々なロボットが共用ワークスペースで動作することができる。いくつかの実装形態では、様々なロボット製造業者が、ロボット製造業者が製造する様々なロボットのための動作計画グラフ及び/又は掃引ボリュームを生成する独自仕様のプロセッサベースのシステム(例えば、サーバコンピュータ)を作動させることができる。ロボット製造業者の各々はロボットコントローラ又は動作プランナによる使用のために、それぞれの動作計画グラフ及び/又は掃引されたボリュームを提供することができる。
図5A及び図5Bは少なくとも1つの例示された実装形態による、動作計画を生成し、任意選択で、共用ワークスペース内で動作する複数のロボットを制御するための、プロセッサベースのシステムにおける操作方法500を示す。方法500は例えば、構成時間に続く、実行時に実行されてもよい。方法500は、1つ又は複数のロボット制御システムの形態をとる1つ又は複数のプロセッサベースのシステムによって実行されてもよい。ロボット制御システムは例えば、ロボットのそれぞれ1つと同じ場所に配置されてもよいし、又は「搭載」されてもよい。
方法500は例えば、ロボット及び/又はロボット制御システムの電源オンに応答して、呼び出しルーチンからの呼び出し又は呼びかけに応答して、又はタスクの受信に応答して、502で開始する。
504において、プロセッサベースのシステムは、任意選択で、1つ又は複数のロボットのための(1つ又は複数の)動作計画グラフを受信する。例えば、プロセッサベースのシステムは、構成時間中に動作計画グラフを生成した別のプロセッサベースのシステムから動作計画グラフを受信してもよい。動作計画グラフはロボットの各状態、構成、又はポーズをそれぞれのノードとして表し、状態、構成、又はポーズの対の間の有効な遷移を、対応するノードを接続するエッジとして表す。グラフに関して説明されているが、各動作計画グラフは必ずしも従来のグラフとして表され、又は格納される必要はなく、むしろ、任意の様々なデータ構造(例えば、レコード及びフィールド、テーブル、リンクされたリスト、ポインタ、ツリー)を使用して、例えば、論理的に、又はメモリ回路もしくはコンピュータプロセッサ内で表すことができる。
506で、プロセッサベースのシステムは、任意選択で、1つ又は複数のロボットのための掃引ボリュームのセットを受信する。例えば、プロセッサベースのシステムは掃引ボリュームのセットを構成時間中に動作計画グラフを生成した別のプロセッサベースのシステムから受け取ることができる。あるいは、プロセッサベースのシステムが例えば、動作計画グラフに基づいて、掃引ボリュームのセットを自身で生成してもよい。掃引ボリュームは、それぞれのエッジに対応する動作又は並進を実行する際にロボット又はその一部によって掃引されるそれぞれのボリュームを表す。掃引ボリュームは例えば、ボクセル、ユークリッド距離フィールド、球の階層、又は他の幾何学的オブジェクトとして、多種多様な形態のいずれかで表すことができる。
508において、プロセッサベースのシステムは、例えばタスク仕様の形で、複数のタスクを受信する。タスク仕様は、ロボットによって実施又は実行されるべきロボットタスクを指定する。タスク仕様は例えば、ロボットが第1の位置から第2の位置に移動し、第2の位置で物体を把持し、物体を第3の位置に移動し、第3の位置で物体を解放することを指定することができる。タスク仕様は例えば、低レベル仕様への構文解析を必要とする高レベル仕様(例えば、散文と構文(prose and syntax))のように、様々な形式をとることができる。タスク仕様は例えば、ジョイント位置及びジョイント角度/回転(例えば、ジョイントのポーズ、ジョイント座標)のセットを指定する、低レベル仕様の形態をとってもよい。
510において、プロセッサベースのシステムは、任意選択で、共用ワークスペース内で作動する複数のロボットR-Rの各々に対して、動作計画のための要求の集合又はセットを受信又は生成する。要求の集合又はセットは要求のリスト又はキューと呼ばれるが、これは必ずしも、リスト又はキュー内のタスクの順序又は配置が、タスクが実施又は実行又は処理されるべき順序、あるいはタスクが実施又は実行又は処理されるだろう順序に対応することを意味するわけではない。要求は、各ロボットによって実行されるタスクに基づいて生成することができる。いくつかの例では、要求は、例えば、第1のロボットが第2のロボットが第2の動作(例えば、第1の位置でワークピースを把持する)を行う前に第1の動作(例えば、第1の位置でワークピースを解放する)を行うことが想定される場合に、要求のキューの中で互いに対して命令されてもよい(又は、順序付けられてもよい)。
512において、第1のキューされた要求iに対して、プロセッサベースシステムは対応するロボット(例えば、ロボットR)のための対応する動作計画を生成する。動作計画を生成することは、例えば、衝突検出又は評価を実行すること、衝突検出又は評価に基づいてロボットRの動作計画グラフにおけるエッジのコスト値を設定すること、及び、例えば最小コスト分析を介してコスト値を有する動作計画グラフを使用して経路を決定することを含むことができる。なお、ここでは、要求と、この要求を行うロボットとを同じカウンタを用いて説明するが、これはあくまでも理解を容易にするためである。本明細書で述べるように、タスクを実行するための任意の所与の要求は、それぞれのタスクを実行することができる任意の所与のロボットによって実行することができる。たとえば、i番目の要求がサービス(又は、実施)されているときにi+3番目のロボットが利用可能なロボットであったとすれば、i番目の要求はi+3番目のロボットにより完了され得る。通常、ロボットよりも多くのタスクが存在するであろうから、指定されたロボットRは、キュー内のi番目の要求以外の要求を実行する。したがって、要求とロボットとの間には必ずしも1対1の関係があるわけではない。
514において、プロセッサベースシステムは1つ又は複数のロボット(例えば、ロボットR)の動作計画からの動作を、他のロボットの障害物として表す。例えば、プロセッサベースのシステムは、障害物キュー内の障害物として、各動作に対応する掃引ボリュームをキューに入れることができる。掃引ボリュームは各エッジに対して事前に決定又は計算され、データ構造(例えば、ポインタ)を介してメモリ内の各エッジに論理的に関連付けられていてもよい。前述のように、掃引ボリュームは例えば、ボクセル、ユークリッド距離フィールド、球の階層、又は他の幾何学的オブジェクトとして、様々な形態のいずれかで表すことができる。
516において、プロセッサベースシステムは、任意選択で、動作計画が生成された対応するロボット(例えば、R)の操作を制御する。例えば、プロセッサベースのシステムは1つ又は複数のアクチュエータが動作計画に従って1つ又は複数のリンケージを動かすように、1つ又は複数の動作コントローラ(例えば、モータコントローラ)に制御信号又は駆動信号を送ることができる。
518において、プロセッサベースのシステムは、任意選択で、対応する動作が完了したか否かを決定する。動作の完了を監視することにより、有利には、プロセッサベースのシステムは、後続の衝突検出又は評価中に、この動作に対応する障害物を考慮から除去することができる。プロセッサベースのシステムは、対応するロボットの座標に依存し得る。座標は所与の動きが完了したかどうかを判定するために、動作コントローラ、アクチュエータ、及び/又はセンサ(例えば、カメラ、回転エンコーダ、リードスイッチ)からの情報に基づくことができる。
520において、プロセッサベースのシステムは、所定の動作が完了したという判定に応答して、動作完了メッセージを生成又は送信するか、又はフラグをセットする。
522において、プロセッサベースのシステムは、キューに入れられたさらなる要求i+1ごとに反復ループを実行する。反復ループの各パスにおいて、プロセッサベースのシステムは、直後に説明する動作524から544のうちの1つ又は複数を実行する。反復ループとして説明されるが、プロセッサベースのシステムはタスク又は動作計画要求のセット、リスト、又はキュー内の各タスク又は動作計画要求に対して、方法500の1つ又は複数の動作を実行することができる。任意の所与のタスク又は動作計画要求のための動作計画はロボットのうちの任意の選択された1つに関して実行されてもよく、その選択は例えば、図6を参照して以下で説明するように、1つ又は複数の基準に基づいて、プロセッサベースのシステムによって自律的に行われてもよい。
524において、プロセッサベースのシステムは、動作完了メッセージが生成されたか、受信されたか、又はフラグがセットされたかを判定する。
526において、プロセッサベースのシステムは、動作完了メッセージが生成された、又は受信された、あるいはフラグがセットされたという判定に応答して、与えられた動作に対応する1つ又は複数の障害物を取り除く。例えば、プロセッサベースのシステムは、障害物キューから対応する障害物を除去することができる。これにより、衝突の検出又は評価を、障害物としてもはや存在しない掃引容積を取り除いた環境で進行させることができるので有利である。これはまた、有利なことに、動き又は対応する掃引ボリュームのタイミングを追跡する必要なしに、動き及び対応する掃引ボリュームを追跡することを可能にする。
532において、プロセッサベースシステムはロボット(例えば、Ri+1)の衝突検出又は評価を実行する。プロセッサベースのシステムは衝突検出又は衝突評価を実行するために、本明細書に記載されている、又は参照により本明細書に組み込まれている資料に記載されている様々な構造及びアルゴリズムのいずれかを使用することができる。衝突検出又は評価は、障害物キュー内の各障害物に対する各動作について衝突検出又は評価を実行することを含むことができる。
534において、プロセッサベースシステムはロボット(例えば、Ri+1)の衝突検出又は評価に少なくとも部分的に基づいて、動作計画グラフにおけるエッジのコスト値を設定する。プロセッサベースのシステムはコスト値設定、典型的には、衝突のリスクがないか、又は低いエッジのコストを比較的低い値(例えば、ゼロ)に設定又は調整すること、及び衝突をもたらす又は衝突のリスクが高いエッジのコストを比較的高い値(例えば、10万)に設定又は調整することを実行するために、本明細書又は参照により本明細書に組み込まれる資料に記載される様々な構造及びアルゴリズムのいずれかを使用することができる。
536において、プロセッサベースシステムは少なくとも部分的に衝突検出又は評価に基づいて、ロボット(例えば、Ri+1)の動作計画を生成する。プロセッサベースのシステムは例えば、設定されたコスト値を用いて動作計画グラフに対して最小コスト分析を実行するように、動作計画を生成するために、本明細書に記載された、又は参照により本明細書に組み込まれた資料に記載された様々な構造及びアルゴリズムのいずれかを使用することができる。
538において、プロセッサベースシステムは、現在のロボット(例えば、Ri+1)の動作計画からの動作を他のロボットの障害物として表す。例えば、プロセッサベースのシステムは、障害物キュー内の障害物として、各動作に対応する掃引ボリュームをキューに入れることができる。掃引ボリュームは各エッジに対して事前に決定又は計算され、データ構造(例えば、フィールド、ポインタ)を介してメモリ内の各エッジに論理的に関連付けられていてもよい。前述のように、掃引ボリュームは例えば、ボクセル、ユークリッド距離フィールド、球の階層、又は他の幾何学的オブジェクトとして、様々な形態のいずれかで表すことができる。
540において、プロセッサベースシステムは動作計画が生成された現行ロボット(例えば、Ri+1)の動作を制御する。例えば、プロセッサベースのシステムは1つ又は複数のアクチュエータに1つ又は複数のリンケージを移動させるために、1つ又は複数の動作コントローラ(例えば、モータコントローラ)に制御信号又は駆動信号を送ってもよい。
542において、プロセッサベースのシステムは、任意選択で、対応する動作が完了したか否かを決定する。動作の完了を監視することにより、有利には、プロセッサベースのシステムは、後続の衝突検出又は評価中に、この動作に対応する障害物を考慮から除去することができる。プロセッサベースのシステムは、対応するロボットの座標に依存し得る。座標は所与の動きが完了したかどうかを判定するために、動作コントローラ、アクチュエータ、及び/又はセンサ(例えば、カメラ、回転エンコーダ、リードスイッチ)からの情報に基づくことができる。
544において、プロセッサベースのシステムは、所定の動作が完了したという判定に応答して、動作完了メッセージを生成又は送信する。
546において、プロセッサベースのシステムは、キューの終わりに到達したか否かを判定する。例えば、プロセッサベースのシステムは、動作計画要求キューに残っている動作計画要求があるかどうか、及び/又はすべてのタスクが完了したかどうかを判定することができる。少なくともいくつかの実装形態では、タスクのセット(例えば、タスクキュー)は一時的に枯渇し(depleted)、新しい又は追加のタスクが後で到着する可能性がある。そのような実装形態では、プロセスベースのシステムが待機ループを実行し、時々新しい又は追加のタスクをチェックし、又は新しい又は追加のタスクが処理され実行されるために利用可能であることを示す信号を待つことができる。
方法500は、548で終了することができる。あるいは、方法500が例えばパワーダウン状態又は条件によって肯定的に停止されるまで繰り返すことができる。一部の実装形態では、方法500が1つ又は複数のプロセッサ上でマルチスレッドプロセスとして実行してもよい。
操作方法500は順序付けられたフローに関して説明されるが、様々な動作又は操作は多くの実装形態では同時に又は並行して実行される。多くの場合、1つのロボットが1つのタスクを実行するための動作計画は、1つ又は複数のロボットがタスクを実行している間に実行されてもよい。したがって、ロボットによるタスクの実行は、1つ又は複数の動作プランナによる動作計画の実行と重複するか、又は、同時もしくは並行することができる。ロボットによるタスクの実行は他のロボットによるタスクの実行と重複するか、又は、同時もしくは並行してもよい。いくつかの実装形態では、1つのロボットのための動作計画の少なくともいくつかの部分が1つ又は複数の他のロボットのための動作計画の少なくともいくつかの部分と重複するか、又は、同時もしくは並行してもよい。
図6は少なくとも1つの図示された実装形態による、動作計画を生成し、任意選択で、共用ワークスペースで動作する複数のロボットを制御するための、プロセッサベースのシステムにおける操作方法600を示す。方法600は例えば、構成時間の後の実行時に実行されてもよい。方法600は、1つ又は複数のロボット制御システムの形態をとる1つ又は複数のプロセッサベースのシステムによって実行されてもよい。ロボット制御システムは例えば、ロボットのそれぞれ1つと同じ場所に配置されてもよいし、又は「搭載」されてもよい。方法600は、方法500(図5A及び5B)と共に使用されてもよい。
方法600は例えば、ロボット及び/又はロボット制御システムの電源オンに応答して、呼び出しルーチンからの呼び出し又は呼びかけに応答して、又はタスクのセット又はリスト又はキューの受信に応答して、602で開始する。
604において、プロセッサベースのシステムは、実行されるべきタスクのセット又はリスト又はキューからタスクを選択する。タスクは、集合的に目標を達成してもよい。例えば、タスクは、共用ワークスペース内で動作する2つ以上のロボットによって、オブジェクトのパイルをそれぞれのタイプのオブジェクトからなる2つ以上の別個のパイルにソートすることを目的として、オブジェクトを拾い上げ、配置することを含むことができる。
プロセッサベースのシステムはタスクのセット(例えば、タスクキュー)からタスクを選択することができる。タスクは、特定のシステムアーキテクチャに応じて、動作計画要求の形態をとってもよく、又は動作計画要求に対応してもよく、又はそれぞれの動作計画要求を生じさせてもよい。タスクキュー内のタスクは、順序付けされても順序付けされなくてもよい。タスクは任意の1つ又は複数の基準、例えば、目標を達成するための1つのタスクの他のタスクに対する順序、他のタスクに対するタスクの優先度、目標を達成するための効率(例えば、目標を完了するための時間、エネルギー消費、目標を完了するための移動の数、ロボットを並列に操作する能力、ロボットの待ち時間を最小限に抑えること)、ロボットの可用性、及び/又は特定のタイプのタスクを実行するのに適したロボットの利用可能性(例えば、あるタイプのアーム端ツール又はエンドエフェクタを有するロボットの可用性)に基づいて選択され得る。
606において、プロセッサベースのシステムは、選択されたタスクを実行するためにロボットを選択する。プロセッサベースのシステムは任意の1つ又は複数の基準、例えば、ロボットの可用性、タスクを実行するためのロボットの適合性、タスクを実行するための又はロボットが実行するのに適していない他のタイプのタスクを実行するためのロボットの適合性の欠如、条件(例えば、エラー条件、低電力条件、遮断状態条件、摩耗条件、スケジュールされたサービス条件)の存在又は不在に基づいて、ロボットを選択することができる。
608において、プロセッサベースのシステムは、選択されたタスクと選択されたロボットとの対のための動作計画を実行する。例えば、プロセッサベースのシステムは方法500(図5)を参照して一般的に説明したように、動作計画を実行することができる。
610で、プロセッサベースのシステムは、選択されたロボットによる選択されたタスクの実行をスキップ又は遅延させる条件が存在するかどうかを判定する。条件は、選択されたロボット又はそれぞれのロボット制御システムにおける操作又は機械的エラーを示すエラー条件を含むことができる。条件は、動作計画によって示されるロボットの所与の動作が現在遮断されているか、さもなければ達成不能であることを示す遮断条件を含むことができる。条件は選択されたロボットの低電力条件、摩耗条件、又は予定されたサービス条件を含むことができ、すべてが、選択されたロボットが所与の時間にタスクを完了することができない可能性があることを示す。条件はまた、所与のロボット又はロボット制御システムがタスク又は動作計画要求に対するオーバーライドをアサートするスキップ条件も含むことができる。さらに、又は代替的に、プロセッサベースのシステムは、与えられたタスク又は動作計画要求を迅速化させるオーバーライド要求、与えられたタスク又は動作計画要求を、タスク又は動作計画要求キュー内の他のタスク又は動作計画要求の前に移動させる、又は他の一つ又は複数の他のタスク又は動作計画要求に関してタスク又は動作計画要求の優先度を上げる、を含む促進条件を処理することができる。
610において条件が存在すると判定されたことに応答して、選択されたロボットによる選択されたタスクの実行をスキップさせるか、又は、プロセッサベースのシステムが606に制御を戻して、選択されたタスクを実行するための異なるロボットを選択する。あるいは、制御を604に渡して、新しいタスク、実行されるタスクのキューに残っている前のタスク、又は実行されるタスクのキューに戻されるタスクを選択することもできる。これは、暫定的にタスクのキューに追加された可能性がある、より緊急なタスクの選択を容易にする可能性がある。
610で条件が存在しないと判定されたことに応答して、制御は612に移り、選択されたタスクを実行するための動作計画が選択されたロボットに送信される。そのようなものは、例えば、有線又は無線通信チャネルを介して、選択されたロボットに高レベル命令又は低レベル命令(例えば、モータ制御命令)を提供することを含むことができる。
614で、選択されたロボットは、動作計画を実施又は実行する。例えば、1つ又は複数のアクチュエータは、ロボット付属物及び関連するアーム端ツールにタスクを実行させる。
616において、プロセッサベースのシステムは、セット、リスト、又はサービスされるべきキューの中に追加のタスク又は動作パンニング要求があるかどうかを決定する。少なくともいくつかの実装では、タスクの集合(例えば、タスクキュー)は一時的に枯渇し、新しいか追加のタスクが後で到着する可能性がある。そのような実装形態では、プロセスベースのシステムが待機ループを実行し、時々新しい又は追加のタスクをチェックし、又は新しい又は追加のタスクが処理され実行されるために利用可能であることを示す信号を待機することができる。
方法600は、618で終了することができる。あるいは、方法600が例えばパワーダウン状態又は条件によって肯定的に停止されるまで繰り返すことができる。一部の実装では、方法600が1つ以上のプロセッサ上でマルチスレッドプロセスとして実行してもよい。たとえば、複数のタスクの動作計画を同時に実行できる。
上記の詳細説明においては、ブロック図、模式図及び実施例を用いて、多様な装置及び/又は方法の実施形態について記載している。これらのブロックダイヤグラム、概略図及び実施例は1つ又は2つ以上の機能及び/又は動作を含んでいるが、当業者には明らかなように、これらのブロックダイヤグラム、流れ図及び実施例におけるそれぞれの機能及び/又は動作は個々に及び/又は一括して、多様なハードウェア、ソフトウェア、ファームウェア、又は事実上任意のこれらの組み合わせによって実装することができる。一実施形態では、本主題がブール回路、特定用途向け集積回路(ASIC)及び/又はFPGAを介して実装され得る。しかしながら、本明細書に開示された実施形態は全体的に又は部分的に、標準的な集積回路における様々な異なる実装において、1つ又は複数のコンピュータ上で実行される1つ又は複数のコンピュータプログラムとして(例えば、1つ又は複数のコンピュータシステム上で実行される1つ又は複数のプログラムとして)、1つ又は複数のプロセッサ(例えば、マイクロプロセッサ)上で実行される1つ又は複数のプログラムとして、ファームウェアとして、又はそれらの事実上任意の組合せとして実装することができ、回路を設計すること、及び/又はソフトウェア及び/又はファームウェアのためのコードを書き込むことは、本開示に照らして当業者の技術の範囲内で十分にあることを、当業者は認識するであろう。
当業者は本明細書に記載された方法又はアルゴリズムの多くが、追加の動作を使用し、いくつかの動作を省略し、及び/又は指定された順序とは異なる順序で動作を実行し得ることを認識するであろう。
さらに、当業者は、本明細書で教示されるメカニズムがハードウェア、例えば、1つ又は複数のFPGA又はASICにおいて実装されることが可能であることを理解するであろう。
上記の種々の実施形態は、更なる実施形態を提供するように組み合わされることが可能である。本出願人に譲渡された米国特許出願公開、米国特許出願、外国特許、及び本明細書で言及され、かつ/又は「MOTION planning FOR AUTONOMOUS VEHICLES and RECONFIGURABLE MOTION planning PROCESSORS」と題され、2016年1月5日に出願され、「SPECIALIZED ROBOT MOTION planning HARDWARE and METHODS of MAKING and USING SAME」と題された国際特許出願公開第WO2016/122840号を含むが、これらに限定されない外国特許出願平成30年1月12日出願の米国特許出願第62/626,783号「“APPARATUS, METHOD AND ARTICLE TO FACILITATE MOTION PLANNING OF AN AUTONOMOUS VEHICLE IN AN ENVIRONMENT HAVING DYNAMIC OBJECTS」、平成30年2月6日出願の米国特許出願第62/626,939号「MOTION PLANNING OF A ROBOT STORING A DISCRETIZED ENVIRONMENT ON ONE OR MORE PROCESSORS AND IMPROVED OPERATION OF SAME」、令和1年6月3日出願の米国特許出願第62/856,548号「APPARATUS, METHODS AND ARTICLES TO FACILITATE MOTION PLANNING IN ENVIRONMENTS HAVING DYNAMIC OBSTACLES」と題する、令和1年6月24日に出願された米国特許出願第62/865,431号、「MOTION PLANNING FOR MULTIPLE ROBOTS IN SHARED WORKSPACE」はその全体が参照により本明細書に組み込まれる。上記の詳細説明に照らして、上記の及び他の変形がそれらの実施形態に対して行われることが可能である。一般に、以下の特許請求の範囲において、使用される用語は特許請求の範囲を、明細書及び特許請求の範囲に開示される特定の実施形態に限定するように解釈されるべきではなく、そのような特許請求の範囲が権利を有する均等物の全範囲とともに、すべての可能な実施形態を含むように解釈されるべきである。したがって、特許請求の範囲は、本開示によって限定されない。

Claims (36)

  1. ロボットの動作範囲が重複する共用ワークスペースで複数の前記ロボットを稼働させるように制御する方法であって、
    前記複数のロボットのロボットRのための第1の動作計画を生成するステップと、
    nを前記複数のロボットの前記ロボットの総数とし、nを2以上の整数として、i=2からi=nまで、少なくとも1つのロボットRのそれぞれについて、
    少なくとも前記ロボットRのいくつかの動作を少なくとも1つの障害物として表すステップと、
    前記少なくとも1つの障害物の前記表現に対する前記ロボットRの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
    前記ロボットRの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRのための第1の動作計画を生成するステップを含み、前記方法はさらに、
    前記複数のロボットのうちの対応する1つのためのそれぞれの前記第1の動作計画に少なくとも部分的に基づいて、前記ロボットR~前記ロボットRの少なくとも1つの稼働を制御するための信号を提供するステップを有する方法。
  2. 前記ロボットRによる少なくとも1つの動作の完了に応じて、ロボットRにより完了された少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップをさらに含む、請求項1の方法。
  3. 前記ロボットR~前記ロボットRのうちの任意の1つ又は複数による少なくとも1つの動作の完了に応じて、前記ロボットR~前記ロボットRのそれぞれの1つによって完了された少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップをさらに含む、請求項1の方法。
  4. 前記複数のロボットのロボットRのための第2の動作計画を生成するステップと、
    nを前記複数のロボットの前記ロボットの総数とし、nを2以上の整数として、i=2からi=nまで、少なくとも1つのロボットRのそれぞれについて、
    少なくとも前記ロボットRのいくつかの動作を少なくとも1つの障害物として表すステップと、
    前記少なくとも1つの障害物の前記表現に対する前記ロボットRの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
    前記ロボットRの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRのための第2の動作計画を生成するステップを含み、前記方法はさらに、
    前記複数のロボットのうちの対応する1つのためのそれぞれの前記第2の動作計画に少なくとも部分的に基づいて、前記ロボットR~前記ロボットRの少なくとも1つの稼働を制御するための信号を提供するステップを有する、請求項1の方法。
  5. 前記ロボットR~前記ロボットRのための第1の動作計画の前記生成は、i=1からi=nまで連続して実施される、請求項4に記載の方法。
  6. 前記ロボットR~前記ロボットRのための第2の動作計画の前記生成は、i=1からi=nまで連続して実施される、請求項5に記載の方法。
  7. 前記ロボットR~前記ロボットRのための第2の動作計画の前記生成は、i=1からi=nまで連続して実施されない、請求項5に記載の方法。
  8. 前記複数のロボットのうちの対応する1つのためのそれぞれの前記第1の動作計画に少なくとも部分的に基づいて、前記ロボットR~前記ロボットRの少なくとも1つの稼働を制御するための信号を提供するステップは、前記ロボットRの前に前記ロボットRを動かす信号を提供するステップを含み、
    前記ロボットRによる少なくとも1つの動作の完了に応じて、前記複数のロボットのうちの前記ロボットRのための第2の動作計画の前記生成の前に、前記ロボットRによる完了された少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップをさらに有する、請求項4の方法。
  9. 前記複数のロボットのロボットRのための第2の動作計画を生成するステップと、
    nを前記複数のロボットの前記ロボットの総数とし、nを3以上の整数として、i=2からi=nまで、2つ以上のロボットRのうちのうちのすべてではないいくつかについて、
    少なくとも前記ロボットRのいくつかの動作を少なくとも1つの障害物として表すステップと、
    前記少なくとも1つの障害物の前記表現に対する前記ロボットRの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
    前記ロボットRの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRのための第2の動作計画を生成するステップをさらに含み、前記方法は、
    前記複数のロボットのうちの対応する1つのためのそれぞれの前記第2の動作計画に少なくとも部分的に基づいて、前記ロボットR~前記ロボットRの少なくとも1つの稼働を制御するための信号を提供するステップをさらに有する、請求項1の方法。
  10. 前記ロボットR~前記ロボットRのうちの1つのための第2の動作計画を生成するステップがスキップされる、請求項9に記載の方法。
  11. 前記ロボットR~前記ロボットRのうちのそれぞれ1つの動きが前記ロボットR~前記ロボットRの別の1つによって阻止されたことに応じて、前記ロボットR~前記ロボットRのうちの1つのための第2の動作計画を生成するステップがスキップされる、請求項9の方法。
  12. 前記ロボットR~前記ロボットRのうちの1つのための第2の動作計画の前記生成は、前記ロボットR~前記ロボットRのうちのそれぞれ1つが、エラー条件が発生したことを示すエラー状態を有することに応じてスキップされる、請求項9の方法。
  13. 少なくとも前記ロボットRのいくつかの動作を少なくとも1つの障害物として表すステップは、少なくとも1つのロボットRi+1について、前記ロボットRi+1の前記少なくとも1つの動作について前記衝突検出を実行する前に、前記ロボットR~前記ロボットRの2つ以上の前記動作を少なくとも1つの障害物として表すステップを含む、請求項1に記載の方法。
  14. 前記ロボットRi+1の前記少なくとも1つの動作について前記衝突検出を実行する前に、ロボットR~前記ロボットRの2つ以上の前記動作を少なくとも1つの障害物として表すステップは、
    実行時前に事前に計算された掃引ボリュームのセットを使用するステップを含み、それぞれの前記掃引ボリュームは、ロボットR~ロボットRのそれぞれ1つの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットR~前記ロボットRの前記それぞれ1つの少なくとも前記部分によって掃引されるそれぞれのボリュームを表す、請求項13に記載の方法。
  15. 実行時前に事前に計算された掃引ボリュームのセットを受け取るステップをさらに含み、
    それぞれの前記掃引ボリュームは、ロボットR~ロボットRのそれぞれの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットR~前記ロボットRの前記それぞれ1つの少なくとも前記部分によって掃引されるそれぞれのボリュームを表す、請求項13記載の方法。
  16. 前記ロボットRi+1の前記少なくとも1つの動作について前記衝突検出を実行する前に、ロボットR~前記ロボットRの2つ以上の前記動作を少なくとも1つの障害物として表すステップは、ロボットR~前記ロボットRの2つ以上の前記動作を、占有グリッド、階層ツリー、又はユークリッド距離場のうちの少なくとも1つとして表すステップを含む、請求項13に記載の方法。
  17. 少なくとも前記ロボットRのそれぞれの前記動作を少なくとも1つの障害物として表すステップは、それぞれの前記動作を表すためにそれぞれの掃引ボリュームを使用するステップを含み、
    前記掃引ボリュームはそれぞれの前記動作中にロボットRの少なくとも部分によって掃引されるボリュームに対応し、
    前記少なくとも1つの障害物の前記表現に対する前記ロボットRの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップは、実行時前に事前に計算された掃引ボリュームの表現を使用して衝突検出を実行するステップを含み、
    前記掃引ボリュームは、前記ロボットRの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットRの少なくとも前記部分によって掃引されるそれぞれの前記掃引ボリュームを表す、請求項1に記載の方法。
  18. 前記複数のロボットの前記ロボットR~前記ロボットRのそれぞれに対し、
    それぞれの動作計画グラフを介してそれぞれの前記ロボットを表すステップをさらに含み、
    それぞれの前記動作計画グラフは複数のノード及びエッジを含み、前記ノードはそれぞれの前記ロボットのそれぞれの状態を表し、前記エッジは前記エッジによって接続されたそれぞれのノードの対のうちのそれぞれのものによって表されるそれぞれの状態の間の有効な遷移を表す、請求項1記載の方法。
  19. ロボットの動作範囲が重複する共用ワークスペースで複数の前記ロボットを稼働させるように制御するシステムであって、前記システムは、
    少なくとも1つのプロセッサ、
    前記少なくとも1つのプロセッサに通信可能に結合され、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
    前記複数のロボットのロボットRのための第1の動作計画を生成するステップと、
    nを前記複数のロボットの前記ロボットの総数とし、nを2以上の整数として、i=2からi=nまで、少なくとも1つのロボットRのそれぞれについて、
    少なくとも前記ロボットRのいくつかの動作を少なくとも1つの障害物として表すステップと、
    前記少なくとも1つの障害物の前記表現に対する前記ロボットRの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
    前記ロボットRの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRのための第1の動作計画を生成するステップと、
    前記複数のロボットのうちの対応する1つのためのそれぞれの前記第1の動作計画に少なくとも部分的に基づいて、前記ロボットR~前記ロボットRの少なくとも1つの稼働を制御するための信号を提供するステップ
    を実行させるプロセッサ実行可能命令を記憶する、少なくとも1つの非一時的プロセッサ読み取り可能媒体を含む、システム。
  20. 前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサにさらに、
    前記ロボットRによる少なくとも1つの動作の完了に応じて、前記ロボットRにより完了した少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップをさらに実行させる、請求項19に記載のシステム。
  21. 前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサにさらに、
    前記ロボットR~前記ロボットRのうちの任意の1つ又は複数による少なくとも1つの動作の完了に応じて、前記ロボットR~前記ロボットRのそれぞれの1つによって完了された少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップをさらに実行させる、請求項19に記載のシステム。
  22. 前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサにさらに、
    前記複数のロボットのロボットRのための第2の動作計画を生成するステップと、
    nを前記複数のロボットの前記ロボットの総数とし、nを2以上の整数として、i=2からi=nまで、少なくとも1つのロボットRのそれぞれについて、
    少なくとも前記ロボットRのいくつかの動作を少なくとも1つの障害物として表すステップと、
    前記少なくとも1つの障害物の前記表現に対する前記ロボットRの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
    前記ロボットRの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRのための第2の動作計画を生成するステップと、
    前記複数のロボットのうちの対応する1つのためのそれぞれの前記第2の動作計画に少なくとも部分的に基づいて、前記ロボットR~前記ロボットRの少なくとも1つの稼働を制御するための信号を提供するステップを実行させる、請求項19に記載のシステム。
  23. 前記ロボットR~前記ロボットRのための第1の動作計画の前記生成は、i=1からi=nまで連続して実施される、請求項22に記載の装置。
  24. 前記ロボットR~前記ロボットRのための第2の動作計画の前記生成は、i=1からi=nまで連続して実施される、請求項23に記載の装置。
  25. 前記ロボットR~前記ロボットRのための第2の動作計画の前記生成は、i=1からi=nまで連続して実施されない、請求項23に記載の装置。
  26. 前記複数のロボットのうちの対応する1つのためのそれぞれの前記第1の動作計画に少なくとも部分的に基づいて、前記ロボットR~前記ロボットRの少なくとも1つの稼働を制御するために、
    前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、前記ロボットRの前に前記ロボットRを動かす信号を提供させ、さらに、
    前記ロボットRによる少なくとも1つの動作の完了に応じて、前記複数のロボットのうちの前記ロボットRのための前記第2の動作計画の生成の前に、前記ロボットRによる完了した少なくとも1つの前記動作に対応する部分を除去するように障害物の表現を更新するステップを実行させる、請求項22に記載のシステム。
  27. 前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサにさらに、
    前記複数のロボットのロボットRのための第2の動作計画を生成するステップと、
    nを前記複数のロボットの前記ロボットの総数とし、nを3以上の整数として、i=2からi=nまで、2つ以上のロボットRのうちのうちのすべてではないいくつかについて、
    少なくとも前記ロボットRのいくつかの動作を少なくとも1つの障害物として表すステップと、
    前記少なくとも1つの障害物の表現に対する前記ロボットRの少なくとも部分の少なくとも1つの動作について衝突検出を実施するステップと、
    前記ロボットRの少なくとも前記部分の前記少なくとも1つの動作についての前記衝突検出に少なくとも部分的に基づいて前記ロボットRのための第2の動作計画を生成するステップと、
    前記複数のロボットのうちの対応する1つのためのそれぞれの前記第2の動作計画に少なくとも部分的に基づいて、前記ロボットR~前記ロボットRの少なくとも1つの稼働を制御するための信号を提供するステップを実行させる、請求項19に記載のシステム。
  28. 前記ロボットR~前記ロボットRのうちの1つのための第2の動作計画を生成するステップがスキップされる、請求項27に記載の装置。
  29. 前記ロボットR~前記ロボットRのうちのそれぞれ1つの動きが前記ロボットR~前記ロボットRの別の1つによって阻止されたことに応じて、前記ロボットR~前記ロボットRのうちの1つのための第2の動作計画を生成するステップがスキップされる、請求項27に記載のシステム。
  30. 前記ロボットR~前記ロボットRのうちの1つのための第2の動作計画の生成は、前記ロボットR~前記ロボットRのうちのそれぞれ1つが、エラー条件が発生したことを示すエラー状態を有することに応じてスキップされる、請求項27に記載のシステム。
  31. 少なくとも前記ロボットRのいくつかの動作を少なくとも1つの障害物として表すために、
    前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
    少なくとも1つのロボットRi+1について、前記ロボットRi+1の前記少なくとも1つの動作について前記衝突検出を実行する前に、前記ロボットR~前記ロボットRの2つ以上の前記動作を少なくとも1つの障害物として表すステップを実行させる、請求項19に記載のシステム。
  32. 前記ロボットR~前記ロボットRの2つ以上の前記動作を障害物として表すために、
    前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
    実行時前に事前に計算された掃引ボリュームのセットを使用するステップを実行させ、それぞれの前記掃引ボリュームは、前記ロボットR~前記ロボットRのそれぞれ1つの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットR~前記ロボットRの前記それぞれ1つの少なくとも前記部分によって掃引されるそれぞれのボリュームを表す、請求項31に記載のシステム。
  33. 前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサにさらに、
    実行時前に事前に計算された一連の掃引ボリュームを受け取るステップを実行させ、それぞれの前記掃引ボリュームは、前記ロボットR~前記ロボットRのそれぞれの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットR~前記ロボットRの前記それぞれ1つの少なくとも前記部分によって掃引されるそれぞれのボリュームを表す、請求項31のシステム。
  34. 前記ロボットRi+1の前記少なくとも1つの動作についての衝突検出を実行する前に、前記ロボットR~前記ロボットRの2つ以上の前記動作を障害物として表すために、
    前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
    前記ロボットR~前記ロボットRの2つ以上の前記動作を、占有グリッド、階層ツリー、又はユークリッド距離場のうちの少なくとも1つとして表すステップを実行させる、請求項31に記載のシステム。
  35. 少なくとも前記ロボットRのそれぞれの前記動作を少なくとも1つの障害物として表すために、
    前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
    それぞれの前記動作を表すためにそれぞれの掃引ボリュームを使用するステップを実行させ、
    前記掃引ボリュームはそれぞれの前記動作中に前記ロボットRの少なくとも部分によって掃引されるボリュームに対応し、
    前記少なくとも1つの障害物の前記表現に対する前記ロボットRの少なくとも部分の少なくとも1つの動作について衝突検出を実施するために、
    前記プロセッサ実行可能命令は、前記少なくとも1つのプロセッサによって実行されるとき、前記少なくとも1つのプロセッサに、
    実行時前に事前に計算された掃引ボリュームの表現に少なくとも部分的に基づいて衝突検出を実行させ、前記掃引ボリュームは、前記ロボットRの部分がそれぞれの前記動作によって表される軌道に沿って動くときに、前記ロボットRの少なくとも前記部分によって掃引されるそれぞれのボリュームを表す、請求項19に記載のシステム。
  36. 前記複数のロボットの前記ロボットR~前記ロボットRのそれぞれに対し、
    それぞれの動作計画グラフを介してそれぞれの前記ロボットが表され、それぞれの前記動作計画グラフは複数のノード及びエッジを含み、前記ノードはそれぞれの前記ロボットのそれぞれの状態を表し、前記エッジは前記エッジによって接続されたそれぞれのノードの対のうちのそれぞれのノードによって表されるそれぞれの状態の間の有効な遷移を表す、請求項19に記載のシステム。
JP2021576425A 2019-06-24 2020-06-23 共用ワークスペースにおける複数のロボットの動作計画 Active JP7332199B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962865431P 2019-06-24 2019-06-24
US62/865,431 2019-06-24
PCT/US2020/039193 WO2020263861A1 (en) 2019-06-24 2020-06-23 Motion planning for multiple robots in shared workspace

Publications (2)

Publication Number Publication Date
JP2022539324A true JP2022539324A (ja) 2022-09-08
JP7332199B2 JP7332199B2 (ja) 2023-08-23

Family

ID=74039067

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021576425A Active JP7332199B2 (ja) 2019-06-24 2020-06-23 共用ワークスペースにおける複数のロボットの動作計画

Country Status (6)

Country Link
US (1) US20200398428A1 (ja)
EP (1) EP3969233A4 (ja)
JP (1) JP7332199B2 (ja)
CN (1) CN114269525B (ja)
TW (1) TW202107232A (ja)
WO (1) WO2020263861A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11890758B2 (en) * 2019-08-30 2024-02-06 Intrinsic Innovation Llc Robot planning from process definition graph
US10954081B1 (en) 2019-10-25 2021-03-23 Dexterity, Inc. Coordinating multiple robots to meet workflow and avoid conflict
US11724387B2 (en) * 2020-04-03 2023-08-15 Fanuc Corporation Fast robot motion optimization with distance field
CN111846726B (zh) * 2020-07-30 2022-04-19 重庆惠科金渝光电科技有限公司 一种运输设备的搬运方法和运输设备
US20220289501A1 (en) * 2021-03-15 2022-09-15 Dexterity, Inc. Singulation of arbitrary mixed items
GB2607699B (en) * 2021-04-14 2023-11-08 Bae Systems Plc Robotic cells
EP4074471A1 (en) * 2021-04-14 2022-10-19 BAE SYSTEMS plc Robotic cells
US20230063370A1 (en) * 2021-08-30 2023-03-02 Rapyuta Robotics Co., Ltd. Multi-robot route planning
CN114019912B (zh) * 2021-10-15 2024-02-27 上海电机学院 一种群体机器人运动规划控制方法及系统
US20230147624A1 (en) * 2021-11-11 2023-05-11 Rapyuta Robotics Co., Ltd. Autonomous mobile robots for coverage path planning
TW202406697A (zh) * 2022-04-06 2024-02-16 美商即時機器人股份有限公司 採用前瞻規劃之共享工作空間中機器人的運動規劃和控制
WO2024011062A1 (en) * 2022-07-05 2024-01-11 Realtime Robotics, Inc. Robust motion planning and/or control for multi-robot environments

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090326711A1 (en) * 2008-05-21 2009-12-31 Chang Tien L Multi-arm robot system interference check via three dimensional automatic zones
KR20110026776A (ko) * 2009-09-08 2011-03-16 부산대학교 산학협력단 실제 로봇의 다중 경로계획 방법
US20110066282A1 (en) * 2009-09-15 2011-03-17 Harris Corporation, Corporation Of The State Of Delaware Robotic apparatus implementing collision avoidance scheme and associated methods
KR20170050166A (ko) * 2015-10-29 2017-05-11 한국과학기술연구원 로봇의 구동 경로를 계획하기 위한 로봇 제어 시스템 및 로봇 구동 경로 계획방법
JP2017131973A (ja) * 2016-01-25 2017-08-03 キヤノン株式会社 ロボット軌道生成方法、およびロボット軌道生成装置
US20180029233A1 (en) * 2015-02-13 2018-02-01 Abb Schweiz Ag Method For Avoiding Collisions Between Two Robots

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10065317B2 (en) * 2016-06-30 2018-09-04 General Electric Company Control system for coordinating robotic machines to collaborate on tasks
US9144904B2 (en) * 2008-05-21 2015-09-29 Fanuc Robotics America Corporation Method and system for automatically preventing deadlock in multi-robot systems
US20160121487A1 (en) * 2014-11-03 2016-05-05 Qualcomm Incorporated Communicating Configurable Instruction Sets to Robots for Controlling Robot Behavior
WO2016122840A1 (en) * 2015-01-26 2016-08-04 Duke University Specialized robot motion planning hardware and methods of making and using same
US10296012B2 (en) * 2016-12-21 2019-05-21 X Development Llc Pre-computation of kinematically feasible roadmaps
JP6705976B2 (ja) * 2017-05-11 2020-06-03 株式会社安川電機 ロボット、ロボットの制御方法、ワークの製造方法
CN108942920A (zh) * 2018-05-30 2018-12-07 北京极智嘉科技有限公司 一种加工食品的拣选系统和方法
CN108789416B (zh) * 2018-07-27 2023-12-19 中国科学院自动化研究所 用于控制双机械臂柔性带电作业的系统及方法
TWI699636B (zh) * 2019-05-21 2020-07-21 華邦電子股份有限公司 協同型機器人控制系統和方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090326711A1 (en) * 2008-05-21 2009-12-31 Chang Tien L Multi-arm robot system interference check via three dimensional automatic zones
KR20110026776A (ko) * 2009-09-08 2011-03-16 부산대학교 산학협력단 실제 로봇의 다중 경로계획 방법
US20110066282A1 (en) * 2009-09-15 2011-03-17 Harris Corporation, Corporation Of The State Of Delaware Robotic apparatus implementing collision avoidance scheme and associated methods
US20180029233A1 (en) * 2015-02-13 2018-02-01 Abb Schweiz Ag Method For Avoiding Collisions Between Two Robots
KR20170050166A (ko) * 2015-10-29 2017-05-11 한국과학기술연구원 로봇의 구동 경로를 계획하기 위한 로봇 제어 시스템 및 로봇 구동 경로 계획방법
JP2017131973A (ja) * 2016-01-25 2017-08-03 キヤノン株式会社 ロボット軌道生成方法、およびロボット軌道生成装置

Also Published As

Publication number Publication date
TW202107232A (zh) 2021-02-16
EP3969233A4 (en) 2022-08-17
US20200398428A1 (en) 2020-12-24
WO2020263861A1 (en) 2020-12-30
CN114269525B (zh) 2024-03-26
EP3969233A1 (en) 2022-03-23
CN114269525A (zh) 2022-04-01
JP7332199B2 (ja) 2023-08-23

Similar Documents

Publication Publication Date Title
JP7332199B2 (ja) 共用ワークスペースにおける複数のロボットの動作計画
JP7141665B2 (ja) ロボットの動作計画に役立つ衝突検出
US10894322B2 (en) Robot motion planning
JP7489727B2 (ja) マルチロボット運用環境におけるロボットの構成
KR20120082881A (ko) 충돌 회피 스킴을 실행하는 로보틱 장치 및 연관된 방법
US11673265B2 (en) Motion planning for robots to optimize velocity while maintaining limits on acceleration and jerk
US20240091944A1 (en) Safety systems and methods employed in robot operations
US20240009845A1 (en) Systems, methods, and user interfaces employing clearance determinations in robot motion planning and control
WO2021188566A1 (en) Digital representations of robot operational environment, useful in motion planning for robots
US20230342967A1 (en) Configuration of robot operational environment including layout of sensors
US20230286156A1 (en) Motion planning and control for robots in shared workspace employing staging poses
TW202406697A (zh) 採用前瞻規劃之共享工作空間中機器人的運動規劃和控制
WO2024011062A1 (en) Robust motion planning and/or control for multi-robot environments
TW202415506A (zh) 穩健運動規劃及/或用於多機器人環境之控制
US20240208060A1 (en) Digital representations of robot operational environment, useful in motion planning for robots
WO2024073245A1 (en) Automated configuration of robots in multi-robot operational environment optimizing for wear and other parameters

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230531

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230725

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230803

R150 Certificate of patent or registration of utility model

Ref document number: 7332199

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150