JP2023545109A - 仮想環境における複数のロボットのシミュレーション - Google Patents

仮想環境における複数のロボットのシミュレーション Download PDF

Info

Publication number
JP2023545109A
JP2023545109A JP2023521746A JP2023521746A JP2023545109A JP 2023545109 A JP2023545109 A JP 2023545109A JP 2023521746 A JP2023521746 A JP 2023521746A JP 2023521746 A JP2023521746 A JP 2023521746A JP 2023545109 A JP2023545109 A JP 2023545109A
Authority
JP
Japan
Prior art keywords
robot
avatars
virtual environment
avatar
controller
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.)
Pending
Application number
JP2023521746A
Other languages
English (en)
Inventor
ベニス,マシュー
ビチャード,ポール
Original Assignee
エックス デベロップメント エルエルシー
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 エックス デベロップメント エルエルシー filed Critical エックス デベロップメント エルエルシー
Publication of JP2023545109A publication Critical patent/JP2023545109A/ja
Pending legal-status Critical Current

Links

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/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/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1671Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/0084Programme-controlled manipulators comprising a plurality of manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1628Programme controls characterised by the control loop
    • B25J9/163Programme controls characterised by the control loop learning, adaptive, model based, rule based expert control
    • 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/39Robotics, robotics to robotics hand
    • G05B2219/39316Two ann, second ann trained with calibration data to learn error first ann
    • 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/40311Real time simulation
    • 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/40514Computed robot optimized configurations to train ann, output path in real time

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Automation & Control Theory (AREA)
  • Processing Or Creating Images (AREA)
  • Manipulator (AREA)

Abstract

複数のロボットコントローラを単一の仮想環境に動作可能に連結して、例えば、機械学習モデルの訓練用の訓練例を生成する実装形態が提供される。様々な実装形態では、対話型オブジェクトと、仮想環境の外部にある対応する複数のロボットコントローラによって独立して同時に制御される複数のロボットアバタと、を含む仮想環境がシミュレートされ得る。複数のロボットアバタの各ロボットアバタの視点から生成されたセンサデータは、対応するロボットコントローラに提供され得る。各ロボットアバタの1つ以上の関節を作動させる関節コマンドは、対応するロボットコントローラから受信され得る。各ロボットアバタの関節は、対応する関節コマンドに従って作動され得る。作動させることにより、ロボットアバタのうちの2つ以上を、仮想環境内の対話型オブジェクトに作用させ得る。【選択図】 図2

Description

ロボットは、多くの場合、様々なタスクを実行し、及び/又はロボットが動的環境に関与することを可能にするように訓練される、様々なタイプの機械学習モデルを装備している。これらのモデルは、時には、現実世界の物理的ロボットにタスクを繰り返し実行させることによって訓練され、繰り返されたタスクの結果は、モデルを調整するための訓練例として使用される。しかしながら、満足のいく方法でタスクを実行するように機械学習モデルを十分に訓練するためには、極めて多数の繰り返しが必要とされ得る。
現実世界の物理的ロボットの動作によりモデルを訓練することに関わる時間及び費用は、シミュレートされた(すなわち「仮想」)環境においてロボット動作をシミュレートすることによって、低減され得る、及び/又は回避され得る。例えば、3次元仮想環境は、ロボットの作用を受ける様々なオブジェクトを用いてシミュレートされ得る。ロボット自身も仮想環境内でシミュレートされ得、シミュレートされたロボットは、シミュレートされた物体に対して様々なタスクを実行するように動作し得る。機械学習モデルは、これらのシミュレートされたタスクの結果に基づいて訓練され得る。場合によっては、シミュレーションは、例えば、迅速かつ/又は安価な方法でロボット機械モデルを訓練する、又は少なくとも部分的に訓練するのに十分良好であり、その結果、モデルは、次いで、限られた数の現実世界のロボット動作を使用して、更に訓練され得る、すなわち「洗練」され得る。
異なる能力、制約、ハードウェアなどを有する異なるタイプのロボットが、同一の現実世界環境で動作し得る。したがって、各ロボット、より具体的には、各ロボットの機械学習モデルは、異なるロボットが、他のロボット、人間、及び/又は物理的に動かされるか、若しくは別様に変更される物体など、現実世界の環境の動的態様と相互作用することができるように、別々に訓練される必要があり得る。
本明細書では、例えば、機械学習モデルの訓練中に使用するための訓練例を生成するなどの目的で、複数のロボットコントローラを単一のシミュレートされた環境に動作可能に連結するための実装形態について説明する。これらの複数のロボットコントローラは、シミュレートされた環境内で対応する複数のロボットアバタを生成し、制御するために、互いに独立して動作し得る。複数のロボットアバタは、外部ロボットコントローラを介して、仮想環境内の仮想オブジェクトと対話することなど、仮想環境内で様々なタスクを実行するように制御され得る。仮想環境内でのこれらの相互作用及び性能の結果は、例えば、1つ以上の機械学習モデルを訓練するための訓練データとして使用され得る。
仮想環境に連結されているロボットコントローラは、様々な形態をとり得る。いくつかの実装形態では、ロボットコントローラは、実際の物理的ロボットと一体である、及び/又は実際の物理的ロボットから取り外し可能に取り出されたハードウェアであり得る。例えば、ロボットコントローラは、1つ以上のセンサからセンサデータを受信し、センサデータを処理し(例えば、1つ以上の「知覚」機械学習モデルを使用して)、センサデータの処理に基づいて、1つ以上の関節(すなわち「アクチュエータ」)に関節コマンドを提供して、それらの関節を作動させる「頭脳」を含み得る。「頭脳」は、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(「FPGA」)などの形態をとってよく、バッファ用メモリ、センサ/関節を接続するためのバスなど他の構成要素などを含んでも、含まなくてもよい。
他の実装形態では、ロボットコントローラは、現実世界のロボットコントローラのハードウェアを可能な限り厳密にシミュレートするように構成されている(例えば、プログラムされた)コンピューティングデバイスであり得る。例えば、ロボットの構成要素は、それらの構成要素が動作する要素が動作する現実世界の周波数に対応する周波数で仮想環境内でシミュレートされ得る。ロボットに設置された現実世界の視覚センサが100MHzで画像をキャプチャする場合、こちらも100MHzで画像をキャプチャする(又はシミュレートされた環境内で、シミュレートされた画像が提供される)視覚センサは、仮想環境内でシミュレートされ得る。プログラムされたコンピューティングデバイスは、シミュレートされているロボットがその現実世界の関節に送信する現実世界の制御コマンドと同じ周波数で関節コマンドを出力として提供し得る。
複数のロボットコントローラは、様々な方法で仮想環境と動作可能に連結され得る。いくつかの実装形態では、仮想環境は、「クラウド」インフラストラクチャ、又は単に「クラウド」と呼ばれることの多いものの一部を形成する1つ以上のサーバによってシミュレートされ得る。例えば、商業エンティティは、仮想環境をシミュレートし得、その「クライアント」が、例えば、アプリケーションプログラミングインターフェース(API)を使用して、ロボットコントローラを仮想環境に連結することを可能にし得る。クライアントは、次いで、クライアントが自身のシミュレートされた環境を作成する必要なく、自身のロボットの機械学習モデルを仮想的に訓練し得る。多くの場合、ロボットコントローラは、これらのサーバと物理的に同じ場所に配置されなくてよく、したがって、様々な有線及び/又は無線通信技術を使用して、1つ以上のローカル及び/又はワイドエリアネットワークを介してサーバと連結され得る。
様々な実装形態では、仮想環境に連結されている複数の外部ロボットコントローラの各々に、ロボットコントローラによって制御される仮想環境内のロボットアバタの視点から生成されるセンサデータが提供され得る。同様に、各ロボットコントローラは、ロボットコントローラによって制御される仮想環境内のそれぞれのロボットアバタの1つ以上の関節を作動させる関節コマンドを提供し得る。各ロボットアバタの1つ以上の関節は、これらの対応する関節コマンドに従って作動され得る。いくつかの実装形態では、この作動の結果として、ロボットアバタのうちの2つ以上を仮想環境内の単一の対話型オブジェクトに作用させ得る。
ロボットが互いに協働することが望ましいいくつかの実装形態では、ロボットのアバタは、仮想環境内で協働して、同じ対話型オブジェクトと対話し得る。例えば、一方のロボットアバタが対話型オブジェクトを持ち上げて、他方のロボットアバタが、以前にアクセス不能であった対話型オブジェクトの一部に作用してよい。
上述したように、異なるロボットが、異なる周波数で動作し得る。より具体的には、異なるロボットの異なる構成要素は、異なる周波数で動作し得る。加えて、現実世界では、ロボットがその周波数から逸脱する、及び/又は「遅延する」、例えば、一時的に停止する、すなわちその動作が遅延することが起こり得る。同様に、ロボットコントローラが1つ以上のネットワークを介して連結されている、本明細書に記載の仮想環境など仮想環境では、ネットワーク待ち時間/トラフィックなどロボットコントローラ及び/又は仮想環境の外部要素が、容易に再現することができない様式で、その予期される周波数からロボットアバタを逸脱させ得ることが可能である。しかしながら、訓練目的のために、ロボットタスクの反復が決定論的様式で再現されることが可能であることが望ましい場合がある。
したがって、いくつかの実装形態では、仮想環境の「シミュレートされた世界時計」は、個々のアバタのそれらの予想される動作周波数からの偏差を考慮するために、選択的に(及び時間的に)進められるか、又は一時停止され得る。いくつかの実装形態では、シミュレートされた世界時計は、ロボットコントローラのいずれかによって達成可能な最高周波数以上の周波数で動作し得る。仮想環境内の複数のロボットアバタは、複数のロボットアバタを制御するそれぞれのロボットコントローラの現実世界の周波数に対応する周波数で動作し得る。
最高周波数のロボットアバタが200MHzで動作し、より低い周波数のロボットアバタが20MHzで動作すると仮定する。シミュレートされた世界時計の周波数は、200MHzに設定され得、その結果、シミュレートされた世界時計の各反復は、最高周波数のロボットによる1つの原子動作に対応する。一方、より低い周波数のロボットアバタは、シミュレートされた世界周波数の10分の1の周波数で、すなわちシミュレートされた世界時計の10サイクルごとに1回、原子動作を実行する。別の言い方をすれば、シミュレートされた世界時計の10サイクルごとに、最高周波数のロボットは10回の原子動作を実行し、より低い周波数のロボットは1回の動作を実行する。
特定のロボットアバタが何らかの理由(容易に再現されない可能性が高い)で遅れた場合、当該ロボットアバタは、シミュレートされた世界時計と同期してそのそれぞれの動作を実行する準備が整っていないことがある。したがって、ロボットアバタによるアクションが確実に決定論的に再現され得るようにするために、シミュレートされた世界時計は、遅れたロボットアバタが「追いつく」ことができるまで一時停止され得る。前述の例を取り上げると、より低い周波数(20MHz)のロボットアバタが、例えば、その外部ロボットコントローラと仮想環境を動作させるサーバとの間のネットワーク接続がネットワークトラフィックで一時的に圧倒されることに起因して、3クロックサイクル遅れると仮定する。シミュレートされた世界時計は、遅れたロボットアバタがその動作を実行することができるまで一時停止され得る。遅れたロボットアバタがその動作を実行すると、シミュレートされた世界時計は再開することができ、これにより、他のロボットアバタも動作を再開することが可能になる。
いくつかの実装形態では、仮想環境内のロボットのセンサ及び/又は他の構成要素を表すために、有向非巡回グラフ(「ロボットデバイスグラフ」とも呼ばれる)が、生成され得る。各グラフは、ロボットのセンサ、関節などを含むがこれらに限定されない、ロボットアバタによってシミュレートされた、及び/又はロボットアバタの利益のためにシミュレートされたロボットの構成要素を表すノードを含み得る。いくつかのかかる実装形態では、有向非巡回グラフは、ノード間のエッジがノードによって表される構成要素間の依存関係を表す依存関係グラフであり得る。
例えば、子ノードは、視覚センサがキャプチャする視覚データを親ノードに供給する視覚センサを表し得、親ノードは、視覚センサにおいてキャプチャされた視覚データに機械学習モデルを適用して、追加の出力(例えば、物体認識及び/又は姿勢予測)を生成するプロセッサ又はモジュールを表し得る。この出力は、最終処理ユニットを表すルートノードに到達するまで、グラフの更に上方に渡され得る。この処理ユニットは、その子ノードから受信するあらゆるデータを処理することができ、次いで、グラフを下って、例えば、ロボットの関節を表す他のノードに伝搬されるコマンドを生成し得る。
いくつかの実装形態では、非巡回グラフの各ノードは、ノードの対応するロボット構成要素の動作能力及び/又は制約に関する情報を含み得る。例えば、視覚センサを表すノードは、例えば、視覚センサの解像度、視覚センサが視覚データをキャプチャする周波数などを指定し得る。視覚センサのノードよりも上方の1つ以上のノードによって表される1つ以上の構成要素が視覚センサより高い周波数で動作する場合、それらのノードは、それでもなお、それらのより高いレベルのノードが視覚データに基づいてそれら自身の動作を実行する前に、視覚センサノードがその出力を生成するためにシミュレートされた世界時計のいくつかのサイクルを待つことがある。言い換えれば、視覚センサが現実世界におけるロボットのボトルネックである場合、非巡回グラフは、仮想世界における当該ボトルネックに、ロボットの実際の動作方法に基づいてロボットの機械学習モデルが確実に訓練されるようにさせ得る。
非巡回グラフのノードは、センサ、関節、又は処理ユニットなどロボット構成要素に限定されない。いくつかの実装形態では、有向非巡回グラフの1つ以上のノードは、仮想環境のシミュレートされた環境条件を表し得る。例えば、視覚センサノードに隣接するノード(例えば、上方又は下方)は、視覚センサによってキャプチャされた視覚データ内でキャプチャされる(及び視覚データにノイズを追加する)、仮想環境内の微粒子をシミュレートするように構成され得る。別の例として、ノードは、ドローンが着陸を試みているときなど、特定の状況下でドローンに横風を与えるように構成され得る。有向非巡回グラフの更に他のノードは、仮想環境内のシミュレートされた微粒子からの塵の層を蓄積させた視覚センサなど、ロボットアバタのシミュレートされたセンサのシミュレートされた条件を表し得る。
いくつかの実装形態では、対話型オブジェクトを含む3次元環境をシミュレートすることであって、シミュレートされた環境が、シミュレートされた環境の外部にある対応する複数のロボットコントローラによって独立して同時に制御される複数のロボットアバタを含む、ことと、複数のロボットコントローラの各ロボットコントローラに、ロボットコントローラによって制御される複数のロボットアバタのそれぞれのロボットアバタの視点から生成されるセンサデータを提供することと、複数のロボットコントローラの各ロボットコントローラから、ロボットコントローラによって制御される複数のロボットアバタのそれぞれのロボットアバタの1つ以上の関節を作動させる関節コマンドを受信することと、対応する関節コマンドに従って各ロボットアバタの1つ以上の関節を作動させることであって、作動させることにより、複数のロボットアバタのうちの2つ以上を、シミュレートされた環境内の対話型オブジェクトに作用させる、ことと、を含むコンピュータ実施方法が提供され得る。
様々な実装形態では、複数のロボットコントローラのうちの所与のロボットコントローラは、1つ以上のプロセッサと動作可能に連結されているロボットと一体であり得る。いくつかのかかる実装形態では、所与のロボットコントローラに提供されるセンサデータは、所与のロボットの1つ以上の現実世界のセンサと、所与のロボットと一体であるロボットコントローラの1つ以上のプロセッサとの間のセンサデータチャネルに注入され得る、及び/又は所与のロボットコントローラから受信される関節コマンドは、ロボットコントローラの1つ以上のプロセッサと、所与のロボットの1つ以上の関節との間の関節コマンドチャネルから傍受され得る。
様々な実装形態では、本方法は、複数のロボットアバタのロボットアバタごとに、ロボットアバタの構成要素を表すノードを用いて有向非巡回グラフを生成することを更に含み得る。様々な実装形態では、有向非巡回グラフは、ノード間のエッジがノードによって表される構成要素間の依存関係を表す依存関係グラフである。様々な実装形態では、ロボットアバタのシミュレートされたセンサを表す少なくとも1つのノードは、有向非巡回グラフに渡されるセンサの出力に遅延を課し得、遅延は、シミュレートされたセンサに対応する現実世界のセンサの周波数に対応する。様々な実装形態では、有向非巡回グラフの1つ以上のノードは、シミュレートされた環境のシミュレートされた環境条件を表す。様々な実装形態では、有向非巡回グラフの1つ以上のノードは、ロボッタアバタのシミュレートされたセンサのシミュレートされた条件を表す。
様々な実装形態では、作動させることは、複数のロボットアバタを、複数のロボットアバタを制御するそれぞれのロボットコントローラの現実世界の周波数に対応する周波数で動作させることを含み得る。様々な実装形態では、本方法は、シミュレートされた環境のシミュレートされた世界時計を所与の周波数で動作させることと、複数のロボットアバタのうちの第1のロボットアバタを所与の周波数よりも低い第1の周波数で動作させることと、を更に含み得る。様々な実装形態では、本方法は、複数のロボットアバタのうちの1つのロボットアバタが次の動作段階に進むまで、シミュレートされた世界時計を一時停止させることを更に含み得る。
他の実装形態は、上記の方法のうちの1つ以上などの方法を実行するためにプロセッサによって実行可能な命令を記憶する非一時的コンピュータ可読記憶媒体を含み得る。更に別の実装形態は、メモリと、メモリに記憶した命令を実行して、上記の方法のうちの1つ以上などの方法を単独で又はまとめて実行する1つ以上のモジュール又はエンジンを実装する1つ以上のプロセッサと、を含む制御システムを含み得る。
本明細書でより詳細に説明する前述の概念及び追加の概念の全ての組み合わせは、本明細書に開示する主題の一部であるとして企図されることを理解されたい。例えば、本開示の最後に現れる、特許請求される主題の全ての組み合わせは、本明細書に開示する主題の一部であるとして企図される。
様々な実装形態による、開示の技法が用いられ得る例示的な環境を概略的に示す。 様々な実装形態による、例示的なロボットを示す。 様々な実装形態による、ロボットコントローラによって制御されるロボットアバタを含む仮想環境の生成を容易にするために、ロボットコントローラがシミュレーションエンジンとインターフェースし得る方法の例を概略的に示す。 様々な実装形態による、決定論的に再現可能な訓練事例を生成するために本明細書に記載の技法を使用する方法の一例を示す。 様々な実装形態による、決定論的に再現可能な訓練事例を生成するために本明細書に記載の技法を使用する方法の一例を示す。 ロボット及び/又はその構成要素を表すために様々な実装形態で使用され得る非循環グラフの一例を示す。 本開示の選択された態様を実施するための例示的な方法を示す。 コンピュータシステムの例示的なアーキテクチャを概略的に示す。
図1Aは、本開示の選択された態様が様々な実装形態に従って実施され得る例示的な環境の概略図である。図1Aに示す様々な構成要素、具体的には、シミュレーションシステム130を形成するこれらの構成要素は、ハードウェア及びソフトウェアの任意の組み合わせを使用して実装され得る。いくつかの実装形態では、シミュレーションシステム130は、「クラウド」インフラストラクチャ、又は単に「クラウド」と呼ばれることの多いものの一部を形成する1つ以上のサーバである。
ロボット100は、シミュレーションシステム130と通信し得る。ロボット100は、限定するものではないが、テレプレゼンスロボット(例えば、ディスプレイ及びカメラを装備した車両のように単純であり得る)、ロボットアーム、人型ロボット、動物、昆虫、水生生物、車輪付きデバイス、潜水艇、無人航空機(「UAV」)など様々な形態をとり得る。ロボットアームの1つの非限定的な例を図1Bに示す。様々な実装形態では、ロボット100は論理102を含み得る。論理102は、リアルタイムコントローラ、1つ以上のプロセッサ、1つ以上のフィールドプログラマブルゲートアレイ(「FPGA」)、1つ以上の特定用途向け集積回路(「ASIC」)など様々な形態をとり得る。いくつかの実装形態では、論理102は、メモリ103と動作可能に連結され得る。メモリ103は、ランダムアクセスメモリ(「RAM」)、ダイナミックRAM(「DRAM」)、読取り専用メモリ(「ROM」)、磁気抵抗RAM(「MRAM」)、抵抗性RAM(「RRAM」)、NANDフラッシュメモリなど様々な形態をとり得る。
いくつかの実装形態では、論理102は、例えば、1つ以上のバス110を介して、1つ以上の関節1041~n、1つ以上のエンドエフェクタ106、及び/又は1つ以上のセンサ1081~mと動作可能に連結し得る。本明細書で使用する場合、ロボットの「関節」104は、アクチュエータ、モータ(例えば、サーボモータ)、シャフト、歯車列、ポンプ(例えば、気体又は液体)、ピストン、駆動部、プロペラ、フラップ、ロータ、又は推進、回転、及び/又は運動を生じさせる、及び/又は経験し得る他の構成要素を広義に指し得る。一部の関節104は、独立して制御可能であり得るが、これは必須ではない。いくつかの事例では、ロボット100がより多くの関節を有するほど、より多くの運動自由度を有し得る。
本明細書で使用する場合、「エンドエフェクタ」106は、様々なタスクを達成するためにロボット100によって操作され得る様々なツールを指し得る。例えば、一部のロボットは、2つの対向する「指(finger)」又は「指(digit)」を有する鉤爪の形態をとるエンドエフェクタ106を装備し得る。このような鉤爪は、「衝撃」グリッパとして既知の「グリッパ」の一種である。他のタイプのグリッパとしては、「進入型」(例えば、ピン、針を使用して物理的に物体を貫通する)、「アストリクティブ」(例えば、吸引又は真空を使用して物体を拾い上げる)、又は「近接型」(例えば、表面張力、凍結、又は接着剤を使用して物体を拾い上げる)が挙げられ得るが、これらに限定されない。より一般的には、他のタイプのエンドエフェクタとしては、ドリル、ブラシ、力-トルクセンサ、切断ツール、バリ取りツール、溶接トーチ、容器、トレイなどが挙げられ得るが、これらに限定されない。いくつかの実装形態では、エンドエフェクタ106は取り外し可能であり得、状況に応じて、様々なタイプのモジュール式エンドエフェクタがロボット100に設置され得る。一部のテレプレゼンスロボットなど一部のロボットは、エンドエフェクタを装備していないことがある。代わりに、一部のテレプレゼンスロボットは、テレプレゼンスロボットを制御するユーザの視覚表現をレンダリングするためのディスプレイ、並びにテレプレゼンスロボットがユーザのように「行動する」ことを容易にするスピーカ及び/又はマイクロホンを含み得る。
センサ108は、深度測定値を提供するように構成された3Dレーザスキャナ又は他の3D視覚センサ(例えば、ステレオビジュアルオドメトリを実行するために使用されるステレオカメラ)、2次元カメラ(例えば、RGB、赤外線)、光センサ(例えば、受動赤外線)、力センサ、圧力センサ、圧力波センサ(例えば、マイクロホン)、近接センサ(「距離センサ」とも呼ばれる)、深度センサ、トルクセンサ、バーコードリーダ、無線周波数識別(「RFID」)リーダ、レーダ、距離計、加速度計、ジャイロスコープ、コンパス、位置座標センサ(例えば、全地球測位システム、すなわち「GPS」)、速度計、エッジ検出器などが挙げられるが、これらに限定されない様々な形態をとり得る。センサ1081~mは、ロボット100と一体であるように示しているが、これは、限定することを意味しない。
シミュレーションシステム130は、1つ以上のネットワーク(図示せず)によって接続された、1つ以上のコンピューティングシステムを含み得る。かかるコンピューティングシステムの一例を図6に概略的に示す。様々な実装形態では、シミュレーションシステム130は、複数のロボットアバタ(図1には図示せず、図2を参照)がシミュレートされる仮想環境をシミュレートするように動作し得る。各ロボットアバタは、ロボットコントローラによって制御され得る。前述したように、ロボットコントローラは、例えば、ロボット100の論理102及びメモリ103を含み得る。
様々なモジュール又はエンジンが、ソフトウェア、ハードウェア、又はこれら2つの任意の組み合わせとして、シミュレーションシステム130の一部として実装され得る。例えば、図1Aでは、シミュレーションシステム130は、例えば、ユーザインターフェースエンジン134によって制御されるディスプレイインターフェース132を含んで、グラフィカルユーザインターフェース「GUI」)135をレンダリングする。ユーザは、GUI135と対話してシミュレーションシステム130の態様をトリガし得る、及び/又は制御し得る(例えば、前述の仮想環境をシミュレートするシミュレーションエンジン136を制御する)。
シミュレーションエンジン136は、本開示の選択された態様を実行して、前述のロボットアバタを動作させることができる仮想環境をシミュレートするように構成され得る。例えば、シミュレーションエンジン136は、対話型オブジェクトを含む3次元環境をシミュレートするように構成され得る。仮想環境は、仮想環境の外部にある対応する複数のロボットコントローラ(例えば、ロボット100の102及び103の組み合わせ)によって独立して同時に制御される複数のロボットアバタを含み得る。仮想環境は、ディスプレイ上に視覚的にレンダリングされる必要はないことに留意されたい。多くの場合、仮想環境及びその中でのロボットアバタの動作は、出力としてディスプレイ上に提供される視覚表現なしにシミュレートされ得る。
シミュレーションエンジン136は、複数のロボットコントローラの各ロボットコントローラに、ロボットコントローラによって制御されるロボットアバタの視点から生成されるセンサデータを提供するように更に構成され得る。一例として、特定のロボットアバタの視覚センサが、仮想環境内の特定の仮想オブジェクトの方向に向けられていると仮定する。シミュレーションエンジン136は、特定のロボットアバタを制御するロボットコントローラに対して、仮想環境内の特定のロボットアバタ(より具体的には、その視覚センサ)の視点から見えるように特定の仮想オブジェクトを描写する、シミュレートされた視覚センサデータを生成し得る、及び/又は提供し得る。
シミュレーションエンジン136はまた、各ロボットコントローラから、ロボットコントローラによって制御されるそれぞれのロボットアバタの1つ以上の関節を作動させる関節コマンドを受信するように構成され得る。例えば、外部ロボットコントローラは、シミュレーションエンジンから受信したセンサデータを処理して、物体及び/又はその姿勢を認識すること(知覚)、物体への経路及び/又は物体と相互作用するために使用される把持を計画することなど種々の決定を行い得る。外部ロボットコントローラは、これらの決定を行い得、ロボットコントローラに関連付けられたロボットの1つ以上の関節用の関節コマンドを生成し得る(実行)。
シミュレーションエンジン136によってシミュレートされる仮想環境のコンテキストでは、これらの関節コマンドは、例えば、シミュレーションエンジン136によって使用されて、外部ロボットコントローラによって制御されるロボットアバタの関節を作動させ得る。任意の所与の瞬間に仮想環境内に複数のロボットアバタが存在し得ると仮定すると、場合によっては、ロボットアバタのうちの2つ以上の関節を作動させることにより、2つ以上のロボットアバタを、仮想環境内の対話型オブジェクト対して、例えば、次々に(例えば、1つのロボットアバタがオブジェクトを移動させ、したがって、別のロボットアバタがそのオブジェクトの下を掃除できる)、同時に(例えば、1つのロボットアバタが車両を持ち上げ、したがって、別のロボットアバタが車両のタイヤを交換できる)など作用させることができる。
ロボットアバタ及び/又はそれに関連する構成要素は、様々な方法でシミュレーションエンジン136で使用するために生成され得る、及び/又は編成され得る。いくつかの実装形態では、グラフエンジン138は、ロボットアバタ及び/又はその構成要素、並びに場合によっては他の環境要因をグラフのノード/エッジとして表すように構成され得る。いくつかの実装形態では、グラフエンジン138は、これらのグラフを非巡回有向グラフとして生成し得る。場合によっては、これらの非巡回有向グラフは、様々なロボット構成要素間の依存関係を定義する依存関係グラフの形態をとり得る。かかるグラフの例を図4に示す。
ロボットアバタ及び他の構成要素を非巡回有向依存関係グラフとして表すことは、様々な技術的利点を提供し得る。1つの利点は、ロボットアバタのグラフをある仮想環境から別の仮想環境に移行させることができるという点で、ロボットアバタが事実上移植可能になり得ることである。1つの非限定的な例として、建物の異なる部屋/エリアが、別個の仮想環境によって表され得る。ロボットアバタが、建物の第1の部屋に対応する第1の仮想環境を「離れる」とき、例えば、第2の部屋に通じる戸口を開いて入ることによって、当該ロボットアバタのグラフは、第1の仮想環境から第2の部屋に対応する第2の仮想環境に移動され得る。いくつかのかかる実装形態では、グラフは、第1の部屋に存在し得ない、第2の部屋に関連付けられた環境条件及び/又は要因(例えば、異なる温度、湿度、エリア内の微粒子など)に対応するノードを含むように更新され得る。
別の利点は、ロボットアバタの構成要素が、例えば、試験及び/又は訓練目的で、容易に交換して外され得る、及び/又は再構成され得ることである。例えば、現実世界の物理的ロボット上の2つの異なる光検知測距(「LIDAR」)センサを試験するために、2つのLIDARセンサを取得し、それらを物理的に交換して外し、ロボットの構成/ファームウェアを更新し、及び/又は2つの異なるセンサを十分に試験するために様々な他のタスクを実行することが必要であり得る。対照的に、本明細書に記載のグラフ及び仮想環境技法を使用すると、第1のLIDARセンサを表すロボットアバタのグラフのLIDARノードは、第2のLIDARセンサを表すノードと単純に置き換えられ得る。
更に別の利点は、現実世界における様々なロボット構成要素間で発生する様々な遅延が、グラフを使用して容易に複製され得ることである。例えば、ロボットアバタのシミュレートされたセンサを表す1つのノードは、有向非巡回グラフに渡されるセンサの出力に遅延を課すように構成され得る。この遅延は、例えば、シミュレートされたセンサに対応する現実世界のセンサの周波数に対応し得る。センサのノードよりも上方のノードは、より低い周波数のセンサを装備した現実世界のより高い周波数のロボットのように、より高い周波数で動作する場合であっても、センサ出力を「待機」しなければならない場合がある。
本明細書に記載するようなグラフを使用する更に別の利点は、現実世界のロボットの動作に対する外部の影響が、仮想環境におけるロボットアバタの動作に対応して影響を及ぼし得るグラフのノード及び/又はエッジとして表され得ることである。いくつかの実装形態では、有向非巡回グラフの1つ以上のノードは、仮想環境のシミュレートされた環境条件を表し得る。これらの環境条件ノードは、センサノードに連結され得、それにより、環境条件ノードは、接続されたセンサノードに対応するセンサにそれらの環境影響を与え得る、又は及ぼし得る。センサノードは、次に、この環境影響を検出し、それを示すセンサデータをグラフのより高いノードに提供し得る。
1つの非限定的な例として、視覚センサに連結された(したがって、影響を及ぼすように構成された)ノードは、エリア内に存在する微粒子、煙、又は他の視覚的障害物を表し得る。別の例として、現実的な横風パターンをシミュレートするように構成されたノードが、無人航空機(「UAV」)アバタの風センサノードに連結されて、現実世界のUAVの飛行に影響を及ぼし得る横風をシミュレートし得る。加えて、いくつかの実装形態では、センサノードに連結されたノードは、ロボットアバタの当該センサのシミュレートされた条件を表し得る。例えば、視覚センサに接続されたノードは、例えば、ガウスぼかし又は他の同様のぼかし技法を使用して、視覚センサのレンズ上に集まった汚れ及び/又は砕片をシミュレートし得る。
図1Bは、ロボットアームの形態のロボット100の非限定的な例を示す。グリッパ爪の形態のエンドエフェクタ106は、ロボット100の第6の関節104に取り外し可能に取り付けられている。この例では、6つの関節1041~6を示す。しかしながら、これに限定することを意味するものではなく、ロボットは任意の数の関節を有し得る。ロボット100はまた、基部165を含み、特定の選択された構成、すなわち「姿勢」で示される。
図2は、シミュレーションエンジン136が、仮想環境240において、3つの異なるタイプの現実世界のロボット2001~3の動作を3つの対応するロボットアバタ200’1~3としてシミュレートし得る方法の一例を概略的に示す。3つの現実世界のロボット2001~3は、互いに異なる形態をとり得、異なる制約下で動作し得、及び/又は異なる能力を有し得る。3つのロボット/ロボットアバタを図2に示すが、任意の数のロボット(又は、より具体的には、ロボットコントローラ)が、シミュレーションエンジン136によってレンダリングされる仮想環境240に連結され、その中でシミュレートされ得る。
この例では、第1のロボット200は、1つ以上の軌道を使用して環境を動き回ることができるが、エンドエフェクタ又はツールを含まないテレプレゼンスロボットの形態をとる。第2のロボット200は、2つの動作可能なアーム242L及び242Rを有するロボットの形態をとる。動作可能なアーム242Lは、噴霧器244の形態のエンドエフェクタを含み、動作可能なアーム242Rは、グリッパ246の形態のエンドエフェクタを含む。第1及び第2のロボット2001~2の各々は、視覚センサ248を含む。第3のロボット200は、図1A~図1Bのロボット100と同様のロボットアームの形態をとる。
ロボット2001~3の各々は、例えば、図1Aのロボット100の論理102及びメモリ103に対応し得る、それぞれのロボットコントローラ(図2に図示せず)を含む。現実世界(すなわち、非シミュレート環境)では、ロボットコントローラは、ロボットが動作する環境の様々な態様についてロボットコントローラに通知するセンサデータを、例えば、1つ以上のセンサ(例えば、1081~M)から受信し得る。ロボットコントローラは、センサデータを処理して(知覚)、経路計画、把持選択、位置特定、マッピングなど様々な決定(determination)及び/又は決定(decision)を行い得る(計画)。これらの決定及び/又は決定の多くは、1つ以上の機械学習モデルを使用してロボットコントローラによって行われ得る。これらの決定/決定に基づいて、各ロボットコントローラは、様々な関節(例えば、図1Bの1041~6)に関節コマンドを提供して(実行)、これらの関節を作動させ得る。
これらのロボットコントローラが、シミュレーションエンジン136によってシミュレートされた仮想環境240と連結されると、3つのロボットアバタ200’1~3は、ロボットコントローラによって同様に操作され得る。多くの場合、ロボットコントローラは、仮想環境240に「接続」されていること、又は実際の関節1041~nではなく、仮想環境240内のロボットアバタ200’1~3の仮想関節を実際に制御していることを全く「認識」していないことがある。
しかしながら、実際のセンサデータを、実際のセンサ(例えば、108)から受信する代わりに、シミュレーションエンジン136は、例えば、仮想環境240内の各ロボットアバタ200’の視点に基づいて、仮想環境240内のセンサデータをシミュレートし得る。図2の矢印によって示すように、このシミュレートされたセンサデータは、シミュレーションエンジン136によって、各ロボット200の1つ以上の現実世界のセンサと、ロボット200と一体であるロボットコントローラとの間のセンサデータチャネルに注入され得る。したがって、ロボットコントローラの視点からは、シミュレートされたセンサデータを、実際のセンサデータと区別できない場合がある。
加えて、図2の矢印によって示すように、このシミュレートされたセンサデータに基づいてロボットコントローラによって生成される関節コマンドは、シミュレーションエンジン136に提供され、シミュレーションエンジン136は、実際のロボット関節の代わりにロボットアバタ200’1~3の関節を動作させる。例えば、所与のロボットコントローラから受信した関節コマンドは、ロボットコントローラと所与のロボットの1つ以上の関節との間の関節コマンドチャネルから傍受され得る。
対応するロボットアバタをシミュレートするために、完全に機能するロボットがシミュレーションエンジン136と連結されている必要はない。図2では、例えば、第3のロボット200は、シミュレーションエンジン136と連結されていない。代わりに、シミュレートされたロボットコントローラ250は、第3のロボット200に対する入力(例えば、センサデータ)及び出力(例えば、関節コマンド)をシミュレートするように構成されている。シミュレートされたロボットコントローラ250は、1つ以上のプロセッサ及び/又は他のハードウェアを備えるコンピューティングデバイスなど様々な形態をとり得る。シミュレートされたロボットコントローラ250は、第3のロボット200と一体である、実際のロボットコントローラに可能な限り類似する様式で入力を提供し、出力を受信するように構成され得る。したがって、例えば、シミュレートされたロボットコントローラ250は、第3のロボット200の実際のロボットコントローラによって出力される関節コマンドと同じ周波数で関節コマンドを出力し得る。同様に、シミュレートされたロボットコントローラ250は、第3のロボット200の実際のセンサと同じ周波数でセンサデータを取り込み得る。加えて又は代替的に、いくつかの実装形態では、論理102、メモリ103、及び/又は関節/センサに対する様々なバスなどロボットコントローラを形成するロボットの態様は、ロボットから物理的に抽出され得、スタンドアロンのロボットコントローラとしてシミュレーションシステム130に連結され得る。
ロボット(例えば、2001~3)、スタンドアロンのロボットコントローラ、及び/又はシミュレートされたロボットコントローラ(例えば、250)は、様々な通信技術を使用して、シミュレーションエンジン136を介して仮想環境240に連結され得る、すなわち「接続」され得る。特定のロボットコントローラ又はシミュレートされたロボットコントローラがシミュレーションシステム130と共存する場合、1つ以上のパーソナルエリアネットワーク(例えば、Bluetooth)、様々なタイプのユニバーサルシリアルバス(「USB」)技術、又は他のタイプの有線技術を使用してシミュレーションエンジン136と連結され得る。特定のロボットコントローラ(シミュレートされた、スタンドアロンの、又はロボットと一体である)がシミュレーションシステム130から遠隔にある場合、ロボットコントローラは、インターネットなどの1つ以上のローカルエリアネットワーク及び/又はワイドエリアネットワークを介してシミュレーションエンジン136と連結され得る。図3A及び図3Bに関して説明するように、遠隔ロボットコントローラを使用すると、ネットワークの中断及び/又はトラフィックが、遅れ、及び/又は本明細書に記載の種々の技法を使用して対処され得る他の問題の原因になり得る。
異なるロボット及び/又はロボット構成要素は、異なる周波数で動作し得る。例えば、1つのロボットの視覚センサは、500MHzの周波数で視覚センサデータを生成し得る。同じロボットのコントローラが1GHzで動作する場合であっても、このより低い周波数の視覚センサによって制限され得る。別のロボットのコントローラはまた、200MHzなど異なる周波数で動作し得る。これらの異なる周波数のロボットコントローラが仮想環境240に接続されると、シミュレーションエンジン136は、それらの動作周波数を互いに対してシミュレートしてある程度の迫真性を維持することができ、機械学習モデルを訓練するための訓練例を生成する際に有益である。
現実世界では、ロボットがそれぞれの周波数で動作している間、時間は、中断することなく進む。特定のロボットが遅れた場合、他のロボットは減速することなく動作を続ける。このことは、ロボットタスク性能の再現を困難にする。これは、特定のロボットの遅れの原因にかかわらず、この現象の再現が可能でないか、又は現実的ではないことがあり得るためである。対照的に、シミュレートされた環境140などシミュレートされた環境では、例えば、何らかの理由で遅れているロボットが他のロボットに「追いつく」ことを可能にするために、必要に応じて時間を一時停止させることができる。その結果、仮想環境240におけるロボットタスクの性能を決定論的に再現することがより容易になる。
いくつかの実装形態では、シミュレーションエンジン136は、必要に応じて進められ、一時停止され、更には巻き戻しも可能である、シミュレートされた世界時計を動作させ得る。様々な実装形態では、シミュレートされた世界時計は、仮想環境240内のロボットアバタによってシミュレートされる最高周波数のロボットに一致するか又はそれを超える周波数で動作し得る。
図3Aは、異なる周波数で動作する2つの異なる現実世界のロボット(図示せず)に対応する2つの異なるロボットアバタ(ROBOT_A及びROBOT_B)が、仮想環境240など仮想環境内で経時的に動作し得る方法を示す。時間的に左から右に走るタイムライン360は、シミュレートされた世界時計のクロックサイクルに対応する目盛りを含む。図3Aに見られるように、ROBOT_Aは、5クロックサイクルごとの周波数で動作を実行する。ROBOT_Bは、ROBOT_Aの半分の周波数、すなわち、10クロックサイクルの周波数で動作する。ROBOT_A及びROBOT_Bは、簡略化のために互いに同期して動作を実行するものとして示すが、同期は必須ではない。
ROBOT_AもROBOT_Bも、例えば、重度のネットワークトラフィック、ネットワークの中断などに起因した遅れを全く経験しないと仮定すると、両方のロボットアバタは、図3Aに示すように動作し得る。しかしながら、これは常にそうであるとは限らない。例えば、図3Bに同様のタイムライン360を示す。図3Bにおいて、ROBOT_A及びROBOT_Bは、「ROBOT_B遅れ」とラベル付けされたタイムラインの部分までそれらの通常の周波数で動作し、その時点で、ROBOT_Bは3サイクルの遅れを経験する。この遅れは、前述のネットワーク問題など種々の要因によって生じ得るか、又はROBOT_Bを制御するロボットコントローラが、メモリの過負荷(例えば、仮想環境240内のエントロピのスパイクによって生じる)、プロセッサの過熱、中断(例えば、予定されたソフトウェア更新)など遅れの原因となる問題を経験していることに起因し得る。
シミュレートされた世界時計が減速することなく進み続ける場合、ROBOT_Aは動作し続け、図3Aで行ったのと同じクロックサイクルで動作を実行するであろう。しかしながら、ROBOT_Bは一時的にフリーズし得る。ROBOT_Bが再開すると、(例えば、ロボット_Aの視点からは)ROBOT_B及び/又はROBOT_Bが作用するオブジェクトが、ある姿勢/位置から別の姿勢/位置に「ジャンプ」又は「ワープ」したように見え得る。ROBOT_A及びROBOT_Bがタスクを協働して実行している場合などいくつかの場合では、これは、ROBOT_A及び/又はROBOT_Bについての問題を引き起こし得る。ROBOT_A及びROBOT_Bが協働しておらず、仮想環境240の異なる部分において無関係のタスクを実行している場合であっても、この状況を訓練例として再現することは困難であり得るか、又は不可能であり得る。
したがって、様々な実装形態では、シミュレーションエンジン136は、複数のロボットアバタのうちの遅れているロボットアバタが次の動作段階に進むことができるまで、シミュレートされた世界時計を一時停止するように構成され得る。例えば、図3Bでは、シミュレートされた世界時計が一時停止されているので、「ROBOT_B遅れ」とラベル付けされた時間間隔には目盛りがない。3クロックサイクルと思われる時間間隔の後に、ROBOT_Bは再びその動作を実行することができる。その結果、その時点で、又は直後のある時点(例えば、次のクロックサイクル)で、シミュレートされた世界時計が再開され得、図3Bに示すように、ROBOT_A及びROBOT_Bはそれぞれの動作を再開し得る。特に、図3A及び図3Bのタイムライン360の右半分を比較すると、図3Bのロボットアバタは、図3Aの同じアクションの3クロックサイクル後に動作する。
図4は、様々な実装形態による、例えば、シミュレーションシステム130のグラフエンジン138によって生成され得る、例示的な非巡回有向グラフ400を示す。この例では、グラフ400は、ロボット(図示せず)の構成要素、環境条件、センサの条件などを表すノードを含む依存関係グラフの形態をとる。図4の特定のレイアウト及び配置は、限定することを意味しない。図4に示す様々な構成要素は、他の実装形態では他の構成要素に対して異なって配置され得る。更に、いくつかの例示的な構成要素のみを示す。多数の他のタイプの構成要素が企図される。
グラフ400は、ルートノードとして、仮想環境240の外部にあるロボットコントローラ402を含む。他の実装形態では、ロボットコントローラは、ノードとして表されなくてよく、代わりに、ルートノードが、ロボットコントローラと子ノード(仮想環境内でシミュレートされるセンサ及び/又は他のロボットコントローラを表し得る)との間のインターフェースとして作用し得る。ロボットコントローラ402は、様々なハードウェア及びソフトウェアで実装され得、論理102、メモリ103、場合によっては図1Aのバスなど構成要素を含み得る。論理的観点から、ロボットコントローラ402は、知覚モジュール403と、計画モジュール406と、実行モジュール407と、を含み得る。図4ではルートノードの一部として示しているが、いくつかの実装形態では、これらのモジュール403、406、407のうちの1つ以上は、エッジを介して他のノードに接続されている、それ自身のスタンドアロンノードとして表され得る。モジュール403、406、及び/又は407は、オブジェクト認識モジュール、経路計画を支援するモデル、把持計画を支援するモデルなど機械学習モデルを部分的に使用して動作し得る。これらの機械学習モデルのうちの1つ以上は、本明細書に記載のように、単一の仮想環境において複数のロボットアバタを動作させることによって生成される訓練データを使用して訓練され得る。
知覚モジュール403は、任意の数のセンサからセンサデータを受信し得る。現実世界では、このセンサデータは、ロボットコントローラ402が一体化されているロボットの実生活センサからもたらされ得る。仮想環境240において、このセンサデータは、シミュレーションエンジン136によってシミュレートされる仮想センサを表す様々なセンサノード408、408、408、...によってシミュレートされ、そこから上方に伝搬され得る。例えば、視覚センサ408は、シミュレートされた視覚データを提供し得、風速計408は、風速に関するシミュレートされたデータを提供し得、トルクセンサ408は、例えば、1つ以上のロボット関節404においてキャプチャされた、シミュレートされたトルクデータを提供し得るなどである。
いくつかの実装形態では、シミュレートされた環境条件はまた、グラフ400のノードとして表され得る。これらの環境条件は、それらのそれぞれのノードから、通常は実生活においてそれらを感知するであろうセンサへと上方に伝搬され得る。例えば、仮想環境240においてシミュレートされることが望まれる浮遊微粒子(例えば、煙)は、浮遊微粒子ノード411によって表され得る。様々な実装形態において、シミュレートするべき所望の浮遊微粒子の態様、例えば密度、平均粒径などは、例えば、ノード411を定義するユーザによってノード411内に構成され得る。
いくつかの実装形態では、センサによって観測されることとは別に、環境条件がセンサに影響を及ぼし得る。これは、視覚センサ408のレンズ上で収集された微粒子状砕片の影響をシミュレートするように構成され得る、ガウスぼかしノード415によって実証される。このために、いくつかの実装形態では、視覚センサ408のレンズは、それ自身のノード413によって表され得る。いくつかの実装形態では、レンズなどセンサ構成要素のために別個のノードを有することは、当該構成要素が、センサの他の構成要素と交換されて外される、及び/又はセンサの他の構成要素とは別個に構成されることを可能にし得る。例えば、レンズノード413を、例えば異なる焦点距離を有する、異なるレンズノードと単純に交換することによって、異なるレンズが視覚センサノード408に展開され得る。図4に示す配置の代わりに、いくつかの実装形態では、特定の浮遊ノード411は、レンズノード413の子ノードであり得る。
環境条件の別の例として、グラフ400によって表されるロボットが、例えば荷物を集荷する、及び/又は配達するように構成されているUAVであると仮定する。いくつかのかかる実装形態では、例えば、UAVが特定の高度で、特定のエリア内にあるなどのときに受け得る横風をシミュレートする横風ノード417が定義され得る。横風ノード417が風速計ノード408の子ノードであることにより、シミュレートされた横風は、ノード408によって表される風速計へと上方に伝搬され、風速計によって検出され得る。
知覚モジュール403は、ロボットコントローラ402の各反復中に、ノード408、408、408、...によって表される様々なシミュレートされたセンサからセンサデータを収集するように構成され得る(これは、前述のシミュレートされた世界時計に対するロボットコントローラの動作周波数で行われ得る)。次いで、知覚モジュール403は、例えば、現在の状態を生成し得る。この現在の状態に基づいて、計画モジュール406及び/又は実行モジュール407は、様々な決定を行い、グラフ400によって表されるロボットアバタの関節を作動させる関節コマンドを生成し得る。
計画モジュール406は、「オフライン」計画と呼ばれることもある動作を実行して、ロボットの1つ以上の基準点を満たすための経路に沿った一連のウェイポイントを高レベルで定義し得る。実行モジュール407は、例えば、各反復中に受信したセンサデータを考慮して、ロボットアバタ関節を作動させてこれらのウェイポイントを(可能な限り近くで)満たす関節コマンドを生成し得る。例えば、実行モジュール407は、最新のセンサデータを考慮して関節コマンドを生成する、リアルタイム軌道計画モジュール409を含み得る。これらの関節コマンドは、様々なシミュレートされたロボットアバタ関節4041~Mに伝搬されて、様々なタイプの関節を作動させ得る。
いくつかの実装形態では、リアルタイム軌道計画モジュール409は、物体認識及び/又は姿勢データなどデータを把持プランナ419に提供し得る。把持プランナ419は、次いで、シミュレートされたロボットグリッパに把持、解放などの種々のアクションを取らせる関節コマンドを生成し、グリッパ関節4041~Nに提供し得る。他の実装形態では、把持プランナ419は、それ自身のノードによって表され得ず、実行モジュール407に組み込まれ得る。加えて又は代替的に、リアルタイム軌道計画モジュール409は、他のロボット関節404N+1~Mを種々の方法で作動させる関節コマンドを生成し、これを他のロボット関節404N+1~Mに提供し得る。
ここで図5を参照して、本開示の選択された態様を実施する例示的な方法500について記載する。便宜上、フローチャートの動作については、動作を実行するシステムを参照して記載する。このシステムは、様々なコンピュータシステムの様々な構成要素を含み得る。例えば、一部の動作はロボット100において実行され得、他の動作はシミュレーションシステム130の1つ以上の構成要素によって実行され得る。更に、方法500の動作を特定の順序で示しているが、これは限定を意味するものではない。1つ以上の動作は、並べ替えられ得るか、省略され得るか、又は追加され得る。
ブロック502において、システムは、例えば、シミュレーションエンジン136によって、1つ以上の対話型オブジェクトを含む3次元仮想環境(例えば、240)をシミュレートし得る。前述し、図2に示したように、任意の数の外部ロボットコントローラ(ロボットと一体化されたか、スタンドアロンか、又はシミュレートされた)を仮想環境に接続し得る。ブロック504において、システムは、例えば、グラフエンジン138によって、仮想環境に接続されている外部ロボットコントローラごとに有向非巡回グラフを生成し得る。いくつかの実装形態では、システムは、グラフ生成に使用され得る情報を求めて外部ロボットコントローラをポーリングし得る。他の実装形態では、システムは、ロボットコントローラに一致し得るグラフのデータベースを有し得る。
ブロック506において、システムは、例えば、シミュレーションエンジン136によって、また、ブロック504において生成されたグラフに基づいて、仮想環境の外部にある複数のロボットコントローラによって独立して同時に制御される複数のロボットアバタをシミュレートし得る。ブロック508において、システムは、複数のロボットコントローラの各ロボットコントローラに、ロボットコントローラによって制御されるロボットアバタの視点から生成されるセンサデータを提供し得る。ブロック510において、システムは、複数のロボットコントローラの各ロボットコントローラから、ロボットコントローラによって制御されるそれぞれのロボットアバタの1つ以上の関節を作動させる関節コマンドを受信するように構成され得る。
ブロック512において、システムは、対応する関節コマンドに従って各ロボットアバタの1つ以上の関節を作動させ得る。いくつかの実装形態では、作動させることにより、ロボットアバタのうちの2つ以上を、仮想環境内の対話型オブジェクトに作用させる。様々な実装形態では、512の作動の結果として生成されたデータは、知覚モジュール403、計画モジュール406、及び/又は実行モジュール407などロボットコントローラの様々な構成要素によって用いられる1つ以上の機械学習モデルを訓練するための訓練データとして使用され得る。例えば、否定的な結果は、否定的な訓練例として使用され得る。肯定的な結果は、肯定的な訓練例として使用され得る。強化学習が用いられる実装形態では、報酬を決定するために成果が使用され得、報酬は次いで、強化学習ポリシーを訓練するために使用され得る。
図6は、例示的なコンピュータシステム610のブロック図である。コンピュータシステム610は、典型的には、バスサブシステム612を介して複数の周辺デバイスと通信する、少なくとも1つのプロセッサ614を含む。これらの周辺デバイスは、例えば、メモリサブシステム625及びファイル記憶サブシステム626など記憶サブシステム624、ユーザインターフェース出力デバイス620、ユーザインターフェース入力デバイス622、並びにネットワークインターフェースサブシステム616を含み得る。入力デバイス及び出力デバイスは、コンピュータシステム610とのユーザ対話を可能にする。ネットワークインターフェースサブシステム616は、外部ネットワークへのインターフェースを提供し、他のコンピュータシステム内の対応するインターフェースデバイスに連結される。
ユーザインターフェース入力デバイス622は、キーボード、マウス、トラックボール、タッチパッド、若しくはグラフィックスタブレットなどポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システムなどオーディオ入力デバイス、マイクロホン、及び/又は他のタイプの入力デバイスを含み得る。一般に、「入力デバイス」という用語の使用は、コンピュータシステム610又は通信ネットワークに情報を入力するための全ての可能なタイプのデバイス及び方法を含むことを意図している。
ユーザインターフェース出力デバイス620は、ディスプレイサブシステム、プリンタ、ファックス、又はオーディオ出力デバイスなど非視覚ディスプレイを含み得る。ディスプレイサブシステムは、ブラウン管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、投射デバイス、又は可視画像を作成するための何らかの他の機構を含み得る。ディスプレイサブシステムはまた、オーディオ出力デバイスなどを介して、非視覚ディスプレイを提供し得る。一般に、「出力デバイス」という用語の使用は、コンピュータシステム610からユーザ又は別のマシン若しくはコンピュータシステムに情報を出力するための全ての可能なタイプのデバイス及び方法を含むことを意図している。
記憶サブシステム624は、本明細書に記載のモジュールの一部又は全ての機能を提供するプログラミング及びデータ構造を記憶する。例えば、記憶サブシステム624は、方法500の選択された態様を実行する、及び/又はロボット100若しくはシミュレーションシステム130の1つ以上の態様を実装するための論理を含み得る。記憶サブシステム624で使用されるメモリ625は、プログラム実行中に命令及びデータを記憶するためのメインランダムアクセスメモリ(RAM)630と、固定命令が記憶される読取り専用メモリ(ROM)632と、を含む複数のメモリを含み得る。ファイル記憶サブシステム626は、プログラム及びデータファイルに永続的な記憶域を提供することができ、ハードディスクドライブ、CD-ROMドライブ、光学ドライブ、又はリムーバブルメディアカートリッジが挙げられ得る。特定の実装形態の機能を実装するモジュールは、ファイル記憶サブシステム626によって記憶サブシステム624に、又はプロセッサ614によってアクセス可能な他のマシンに記憶され得る。
バスサブシステム612は、コンピュータシステム610の様々な構成要素及びサブシステムを意図どおりに互いに通信させるための機構を提供する。バスサブシステム612は単一のバスとして概略的に示しているが、バスサブシステムの代替実装形態は複数のバスを使用し得る。
コンピュータシステム610は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、スマートフォン、スマートウォッチ、スマートグラス、セットトップボックス、タブレットコンピュータ、ラップトップ、又は任意の他のデータ処理システム若しくはコンピューティングデバイスなど様々なタイプであり得る。コンピュータ及びネットワークの絶えず変化する性質に起因して、図6に示すコンピュータシステム610の説明は、いくつかの実装形態を示すことを目的とする、特定の例にすぎないことが意図される。図6に示すコンピュータシステムよりも多い又は少ない構成要素を有するコンピュータシステム610の多くの他の構成が可能である。
いくつかの実装形態について本明細書に記載し、図示したが、本明細書に記載の機能を実行し、並びに/又は結果及び/若しくは利点の1つ以上を得るために様々な他の手段及び/又は構造を用いてよく、かかる変形例及び/又は修正例の各々は、本明細書に記載の実装形態の範囲内にあるとみなされる。より一般的には、本明細書に記載の全てのパラメータ、寸法、材料、及び構成は、例示的であることが意図されており、実際のパラメータ、寸法、材料、及び/又は構成は、教示が使用される特定の用途に依存する。当業者であれば、本明細書に記載の特定の実装形態に対する多くの等価物を認識するか、又は日常的な実験のみを使用して確認することができるであろう。したがって、前述の実装形態は例として提示されているにすぎず、添付の特許請求の範囲及びその等価物の範囲内で、実装形態は、具体的に説明され、特許請求されるものとは別様に実施され得ることを理解されたい。本開示の実装形態は、本明細書に記載の個々の特徴、システム、物品、材料、キット、及び/又は方法のそれぞれを対象とする。加えて、2つ以上のかかる特徴、システム、物品、材料、キット、及び/又は方法の任意の組み合わせは、かかる特徴、システム、物品、材料、キット、及び/又は方法が相互に矛盾しない場合、本開示の範囲に含まれる。

Claims (20)

  1. 1つ以上のプロセッサを使用して実施される方法であって、
    対話型オブジェクトを含む3次元仮想環境をシミュレートすることであって、前記仮想環境は、前記仮想環境の外部にある対応する複数のロボットコントローラによって独立して同時に制御される複数のロボットアバタを含む、前記3次元仮想環境をシミュレートすることと、
    前記複数のロボットコントローラの各ロボットコントローラに、前記ロボットコントローラによって制御される前記複数のロボットアバタの前記それぞれのロボットアバタの視点から生成されるセンサデータを提供することと、
    前記複数のロボットコントローラの各ロボットコントローラから、前記ロボットコントローラによって制御される前記複数のロボットアバタの前記それぞれのロボットアバタの1つ以上の関節を作動させる関節コマンドを受信することと、
    前記複数のロボットアバタの各ロボットアバタの1つ以上の関節を、対応する関節コマンドに従って作動させることであって、前記作動させることにより、前記複数のロボットアバタのうちの2つ以上を、前記仮想環境内の前記対話型オブジェクトに作用させる、前記複数のロボットアバタの各ロボットアバタの1つ以上の関節を作動させることと、を含む、方法。
  2. 前記複数のロボットコントローラのうちの所与のロボットコントローラは、前記1つ以上のプロセッサと動作可能に連結されているロボットと一体である、請求項1に記載の方法。
  3. 前記所与のロボットコントローラに提供される前記センサデータは、前記所与のロボットの1つ以上の現実世界のセンサと、前記所与のロボットと一体である前記ロボットコントローラの1つ以上のプロセッサとの間のセンサデータチャネルに注入される、請求項2に記載の方法。
  4. 前記所与のロボットコントローラから受信した前記関節コマンドは、前記ロボットコントローラの1つ以上のプロセッサと前記所与のロボットの1つ以上の関節との間の関節コマンドチャネルから傍受される、請求項2又は3に記載の方法。
  5. 前記複数のロボットアバタのロボットアバタごとに、前記ロボットアバタの構成要素を表すノードを用いて有向非巡回グラフを生成することを更に含む、請求項1~4のいずれか一項に記載の方法。
  6. 前記有向非巡回グラフは、ノード間のエッジが前記ノードによって表される前記構成要素間の依存関係を表す依存関係グラフである、請求項5に記載の方法。
  7. 前記ロボットアバタのシミュレートされたセンサを表す少なくとも1つのノードは、前記有向非巡回グラフに渡される前記センサの出力に遅延を課し、前記遅延は、シミュレートされた前記センサに対応する現実世界のセンサの周波数に対応する、請求項6に記載の方法。
  8. 前記有向非巡回グラフの1つ以上のノードは、前記仮想環境のシミュレートされた環境条件を表す、請求項6又は7に記載の方法。
  9. 前記有向非巡回グラフの1つ以上のノードは、前記ロボッタアバタのシミュレートされたセンサのシミュレートされた条件を表す、請求項6~8のいずれか一項に記載の方法。
  10. 前記作動させることは、前記複数のロボットアバタを、前記複数のロボットアバタを制御する前記それぞれのロボットコントローラの現実世界の周波数に対応する周波数で動作させることを含む、請求項1~9のいずれか一項に記載の方法。
  11. 前記仮想環境のシミュレートされた世界時計を所与の周波数で動作させることと、
    前記複数のロボットアバタのうちの第1のロボットアバタを、前記所与の周波数よりも低い第1の周波数で動作させることと、を更に含む、請求項10に記載の方法。
  12. 前記複数のロボットアバタのうちの1つのロボットアバタが次の動作段階に進むまで、シミュレートされた世界時計を一時停止させることを更に含む、請求項10又は11に記載の方法。
  13. 1つ以上のプロセッサと、命令を記憶するメモリと、を備えるシステムであって、前記命令は、前記1つ以上のプロセッサによる前記命令の実行に応答して、前記1つ以上のプロセッサに、
    対話型オブジェクトを含む3次元仮想環境をシミュレートすることであって、前記仮想環境は、前記仮想環境の外部にある対応する複数のロボットコントローラによって独立して同時に制御される複数のロボットアバタを含む、前記3次元仮想環境をシミュレートすること、
    前記複数のロボットコントローラの各ロボットコントローラに、前記ロボットコントローラによって制御される前記複数のロボットアバタの前記それぞれのロボットアバタの視点から生成されるセンサデータを提供すること、
    前記複数のロボットコントローラの各ロボットコントローラから、前記ロボットコントローラによって制御される前記複数のロボットアバタの前記それぞれのロボットアバタの1つ以上の関節を作動させる関節コマンドを受信すること、及び
    前記複数のロボットアバタの各ロボットアバタの1つ以上の関節を、対応する関節コマンドに従って作動させることであって、前記作動させることにより、前記複数のロボットアバタのうちの2つ以上を、前記仮想環境内の前記対話型オブジェクトに作用させる、前記複数のロボットアバタの各ロボットアバタの1つ以上の関節を作動させることを実行させる、システム。
  14. 前記複数のロボットコントローラのうちの所与のロボットコントローラは、前記1つ以上のプロセッサと動作可能に連結されているロボットと一体である、請求項13に記載のシステム。
  15. 前記所与のロボットコントローラに提供される前記センサデータは、前記所与のロボットの1つ以上の現実世界のセンサと、前記所与のロボットと一体である前記ロボットコントローラの1つ以上のプロセッサとの間のセンサデータチャネルに注入される、請求項14に記載のシステム。
  16. 前記所与のロボットコントローラから受信した前記関節コマンドは、前記ロボットコントローラの1つ以上のプロセッサと前記所与のロボットの1つ以上の関節との間の関節コマンドチャネルから傍受される、請求項14又は15に記載のシステム。
  17. 前記複数のロボットアバタのロボットアバタごとに、前記ロボットアバタの構成要素を表すノードを用いて有向非巡回グラフを生成するための命令を更に含む、請求項13~16のいずれか一項に記載のシステム。
  18. 前記有向非巡回グラフは、ノード間のエッジが前記ノードによって表される前記構成要素間の依存関係を表す依存関係グラフである、請求項17に記載のシステム。
  19. 前記ロボットアバタのシミュレートされたセンサを表す少なくとも1つのノードは、前記有向非巡回グラフに渡される前記センサの出力に遅延を課し、前記遅延は、シミュレートされた前記センサに対応する現実世界のセンサの周波数に対応する、請求項18に記載のシステム。
  20. 命令を含む、少なくとも1つの非一時的コンピュータ可読記憶媒体であって、前記命令は、1つ以上のプロセッサによる前記命令の実行に応答して、前記1つ以上のプロセッサに以下の動作、すなわち、
    対話型オブジェクトを含む3次元仮想環境をシミュレートすることであって、前記仮想環境は、前記仮想環境の外部にある対応する複数のロボットコントローラによって独立して同時に制御される複数のロボットアバタを含む、前記3次元仮想環境をシミュレートすること、
    前記複数のロボットコントローラの各ロボットコントローラに、前記ロボットコントローラによって制御される前記複数のロボットアバタの前記それぞれのロボットアバタの視点から生成されるセンサデータを提供すること、
    前記複数のロボットコントローラの各ロボットコントローラから、前記ロボットコントローラによって制御される前記複数のロボットアバタの前記それぞれのロボットアバタの1つ以上の関節を作動させる関節コマンドを受信すること、及び
    各ロボットアバタの1つ以上の関節を、対応する関節コマンドに従って作動させることであって、前記作動させることにより、前記複数のロボットアバタのうちの2つ以上を、前記仮想環境内の前記対話型オブジェクトに作用させる、各ロボットアバタの1つ以上の関節を作動させることを実行させる、少なくとも1つの非一時的コンピュータ可読記憶媒体。
JP2023521746A 2020-10-13 2021-10-11 仮想環境における複数のロボットのシミュレーション Pending JP2023545109A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/069,684 US11813748B2 (en) 2020-10-13 2020-10-13 Simulating multiple robots in virtual environments
US17/069,684 2020-10-13
PCT/US2021/054369 WO2022081454A1 (en) 2020-10-13 2021-10-11 Simulating multiple robots in virtual environments

Publications (1)

Publication Number Publication Date
JP2023545109A true JP2023545109A (ja) 2023-10-26

Family

ID=78500779

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023521746A Pending JP2023545109A (ja) 2020-10-13 2021-10-11 仮想環境における複数のロボットのシミュレーション

Country Status (4)

Country Link
US (2) US11813748B2 (ja)
EP (1) EP4214028A1 (ja)
JP (1) JP2023545109A (ja)
WO (1) WO2022081454A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11554482B2 (en) * 2020-07-16 2023-01-17 Hitachi, Ltd. Self-learning industrial robotic system
US11845190B1 (en) * 2021-06-02 2023-12-19 Google Llc Injecting noise into robot simulation

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3919040B2 (ja) 1997-11-30 2007-05-23 ソニー株式会社 ロボツト装置
WO2015134391A1 (en) * 2014-03-03 2015-09-11 University Of Washington Haptic virtual fixture tools
US9469029B2 (en) * 2014-07-31 2016-10-18 Siemens Industry Software Ltd. Method and apparatus for saving energy and reducing cycle time by optimal ordering of the industrial robotic path
US9811074B1 (en) 2016-06-21 2017-11-07 TruPhysics GmbH Optimization of robot control programs in physics-based simulated environment
US10792810B1 (en) 2017-12-14 2020-10-06 Amazon Technologies, Inc. Artificial intelligence system for learning robotic control policies
EP3566823A1 (en) * 2018-05-11 2019-11-13 Siemens Aktiengesellschaft Method, apparatus and system for robotic programming
JP7110884B2 (ja) 2018-10-01 2022-08-02 オムロン株式会社 学習装置、制御装置、学習方法、及び学習プログラム
US11007642B2 (en) 2018-10-23 2021-05-18 X Development Llc Machine learning methods and apparatus for automated robotic placement of secured object in appropriate location
US11426867B2 (en) * 2019-03-01 2022-08-30 Duality Robotics, Inc. Robot simulation engine architecture
US11288883B2 (en) * 2019-07-23 2022-03-29 Toyota Research Institute, Inc. Autonomous task performance based on visual embeddings

Also Published As

Publication number Publication date
US20220111517A1 (en) 2022-04-14
WO2022081454A1 (en) 2022-04-21
US20240033904A1 (en) 2024-02-01
US11813748B2 (en) 2023-11-14
EP4214028A1 (en) 2023-07-26

Similar Documents

Publication Publication Date Title
US11724398B2 (en) Efficient robot control based on inputs from remote client devices
US11701773B2 (en) Viewpoint invariant visual servoing of robot end effector using recurrent neural network
CN109906132B (zh) 机器人操纵的深度强化学习
US10166676B1 (en) Kinesthetic teaching of grasp parameters for grasping of objects by a grasping end effector of a robot
EP3578322A1 (en) Robot path-generating device and robot system
US20220355483A1 (en) Methods and Systems for Graphical User Interfaces to Control Remotely Located Robots
US20240033904A1 (en) Simulating multiple robots in virtual environments
US11823048B1 (en) Generating simulated training examples for training of machine learning model used for robot control
US20200376675A1 (en) Robotic control based on 3d bounding shape, for an object, generated using edge-depth values for the object
CN112136141A (zh) 基于自由形式自然语言输入控制机器人
US20230381970A1 (en) System(s) and method(s) of using imitation learning in training and refining robotic control policies
US20240190004A1 (en) Simulation driven robotic control of real robot(s)
Ivanovic et al. Render-in-the-loop aerial robotics simulator: Case Study on Yield Estimation in Indoor Agriculture
US20220288782A1 (en) Controlling multiple simulated robots with a single robot controller
US11938638B2 (en) Simulation driven robotic control of real robot(s)
US11654550B1 (en) Single iteration, multiple permutation robot simulation
US11845190B1 (en) Injecting noise into robot simulation
EP4410499A1 (en) Training with high fidelity simulations and high speed low fidelity simulations
Quan et al. Simulation Platform for Autonomous Aerial Manipulation in Dynamic Environments
Martin et al. Team Description Paper–Team AutonOHM
Jung et al. RIDE: a simulator for robotic intelligence development

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230608

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240430

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240730