本明細書で記載及び提案する技術は、様々なロボット装置に組み込まれるロボット装置アプリケーションを生成及びシミュレーションするための開発アーキテクチャに関する。ある例では、ロボット装置管理サービスの顧客は、指定されたロボット装置のフリートにインストールできる特定のロボット装置アプリケーションの実行をシミュレーションする要求を提出する。顧客は、ロボット装置管理サービスを通して、ロボットオペレーティングシステム(ROS)ツールと、顧客に見えるグラフィカルユーザインタフェース(GUI)等のインタフェースを介してロボット装置管理サービスによって提供されるライブラリとを利用してロボット装置アプリケーションを生成してよい。ロボット装置管理サービスは、ROSツールとライブラリとを使用して顧客によって生成されたロボット装置アプリケーションをオブジェクトベースのデータストレージサービスによって提供されるデータオブジェクトに記憶してよい。ある例では、アプリケーションがフリートに利用可能になるようにという顧客からの要求に応答して、ロボット装置アプリケーションは、指定されたロボット装置のフリートにデプロイすることができる。
一例では、顧客は、オブジェクトベースのデータストレージサービスによって提供されるデータオブジェクトに記憶されたロボット装置アプリケーションの実行をシミュレーションする要求をロボット装置管理サービスに提出することができる。顧客は、要求を通して、ロボット装置パラメータのセットと、シミュレーション環境パラメータのセットとを提供して、シミュレーション環境とシミュレーション環境内のロボット装置の特徴及び能力とを規定してよい。例えば、ロボット装置パラメータのセットは、ロボット装置にインストールされたセンサと、ロボット装置の運動能力及び運動制限等を含んでよい。シミュレーション環境パラメータは、シミュレーションルームの寸法、ロボット装置が遭遇する可能性のある障害物の識別子及びパラメータ、ロボット装置が遭遇する可能性のある障害物の場所、ロボット装置が相互作用することができるあらゆる物体の場所、ロボット装置の最初の位置、シミュレーション終了時のロボット装置の所望の位置等を含んでよい。取得されたロボット装置パラメータ及びシミュレーション環境パラメータに基づいて、ロボット装置管理サービスは、シミュレーションされるロボット装置を使用して、アプリケーションのテストのためのシミュレーション環境を生成してよい。
ある例では、ロボット装置管理サービスは、提供されたパラメータを評価して、アプリケーションのシミュレーションを実行するためのシステム要件を決定する。例えば、ロボット装置管理サービスは、シミュレーションの各構成要素によって行われるプロセスを決定してよく、これらのプロセスに基づいて、構成要素の計算要件を推定してよい。この情報を用いて、ロボット装置管理サービスは、シミュレーションのサポートにどのリソースが必要かを識別してよい。ある例では、ロボット装置管理サービスは、シミュレーションのシステム要件を集合的に満たす仮想コンピューティングインスタンスのセットをプロビジョニングする。さらに、各仮想コンピューティングインスタンスの仕様に基づいて、ロボット装置管理サービスは、シミュレーションの様々な構成要素を仮想コンピューティングインスタンスにどのように割り当てるかを決定してよい。ロボット装置管理サービスは、様々な構成要素に、且つ、シミュレーションの実行に仮想コンピューティングインスタンスをプロビジョニングしてよい。さらに、ある例では、ロボット装置管理サービスは、シミュレーション実行中、ロボット装置の様々な構成要素間での通信を可能にするように仮想コンピューティングインスタンス間にネットワークインタフェースのセットを構成する。
ある例では、ロボット装置管理サービスは、シミュレーション環境でのアプリケーションの実行を監視して、顧客に提供または他の目的に使用できるシミュレーションデータを取得する。例えば、シミュレーションデータを使用して、ロボット装置の強化学習モデルを更新してよく、強化学習モデルを使用して、アプリケーションを更新することができる。ロボット装置管理サービスが、シミュレーション実行中、仮想コンピューティングインスタンスの失敗を検出した場合、ロボット装置管理サービスは、この失敗によって影響を受けるロボット装置の構成要素を識別してよい。これらの構成要素の性能要件に基づいて、ロボット装置管理サービスは、これらの構成要素をサポートする新しい仮想コンピューティングインスタンスをプロビジョニングする必要があるかどうか、または、シミュレーションに利用される他の仮想コンピューティングインスタンスに構成要素を移動してよいかどうかを判断してよい。ロボット装置管理サービスが、新しい仮想コンピューティングインスタンスをプロビジョニングする必要があると決定すると、ロボット装置管理サービスは、これらの新しい仮想コンピューティングインスタンスをプロビジョニングしてよく、影響を受ける構成要素をこれらの 新しい仮想コンピューティングインスタンスに移動してよい。
ある例では、ロボット装置管理サービスが、構成要素のセット間でシミュレーションワークロードの急上昇を検出した場合、ロボット装置管理サービスは、アプリケーションのシミュレーションをサポートするために追加のリソースを必要とするかどうかを判断することができる。ロボット装置管理サービスが、追加のリソースが必要である決定すると、ロボット装置管理サービスは、追加の仮想コンピューティングインスタンスをプロビジョニングして、シミュレーションワークロードの急上昇によって影響を受ける構成要素のセットをサポートしてよい。ロボット装置管理サービスは、構成要素のこのセットのシステム要件を使用して、追加の仮想コンピューティングインスタンスを選択してよい。ロボット装置管理サービスは、シミュレーションワークロードの急上昇によって影響を受ける構成要素のセットをこれらの追加の仮想コンピューティングインスタンスに移動して、シミュレーションの実行の継続を確実にしてよい。
ある例では、ロボット装置管理サービスの顧客が、アプリケーションをインストール及び実行できるロボット装置のフリートを規定及び管理することができる。特定のフリートのロボット装置の識別に基づいて、ロボット装置管理サービスは、認証アプリケーションをインストールしてよく、ロボット装置は、認証アプリケーションを使用してロボット装置管理サービスにアクセスし、顧客が規定したアプリケーションの実行を通して生成されたデータを提供することができる。さらに、認証アプリケーションを通して、顧客は、ロボット装置と通信してよく、逆に、ロボット装置管理サービスを通して通信してよい。認証アプリケーションはまた、顧客が規定したアプリケーションの実行を監視するために使用されて、顧客が規定したアプリケーションの実行に問題があるかどうかを判断してよい。ある例では、ロボット装置管理サービスが提供したGUIを介して、顧客は、ロボット装置のフリートの一部であるロボット装置を規定することができる。さらに、顧客は、顧客が生成したアプリケーションのフリートのロボット装置へのインストールを要求してよい。このような要求に応答して、ロボット装置管理サービスは、ロボット装置のフリートへの顧客によるグループ化に基づいて、インストールのためにアプリケーションを受信するロボット装置を識別してよい。ロボット装置管理サービスは、アプリケーションをこれらのロボット装置に送信して、ロボット装置に、アプリケーションをインストール及び実行させてよい。さらに、ロボット装置管理サービスは、各ロボット装置と通信チャネルを確立して、ロボット装置管理サービスが提供したGUIを介して顧客がこれらのロボット装置とインタラクトできるようにしてよい。
ある例では、ロボット装置管理サービスは、ロボット装置が行ったアクションと、ロボット装置から取得した任意のデータとに基づいて、ロボット装置のフリートの性能を監視する。ロボット装置管理サービスが、アプリケーションの実行に伴う問題を検出した場合、ロボット装置管理サービスは、アプリケーションをアプリケーションの以前のバージョンにロールバックすべきかどうかを判断してよい。アプリケーションの以前のバージョンが入手可能な場合、ロボット装置管理サービスは、アプリケーションのこの以前のバージョンを提供して、フリートのロボット装置にアプリケーションのこのバージョンにロールバックさせてよい。さらに、ロボット装置管理サービスは、顧客が一連のアクション(例えば、シミュレーションパラメータを修正して、アプリケーションの新しいシミュレーションを実行する、アプリケーションのコンピュータ実行可能コードを修正する等)を決定できるように、問題に対応するデータを顧客に提供してよい。アプリケーションへの更新を作成する場合、ロボット装置管理サービスは、更新をロボット装置に送信してよく、ロボット装置は、更新をアプリケーションに組み込んで、アプリケーションの実行を再開してよい。
上記記載及び以下の記載では、様々な技術を説明する。説明のために、具体的な構成及び詳細が、技術を実施する考えられる方法の完全な理解を提供するために記載される。しかしながら、以下に記載する技術が、その具体的な詳細なしに異なる構成で実施され得ることも明らかとなる。さらに、記載されている技術を曖昧にしないように、周知の特徴は省略または簡略化される場合がある。
当業者が本開示を考慮すると、一定の実施形態が、一定の利点を達成でき得る。例えば、ロボット装置管理サービスが、ROSツール及びライブラリをサービスの顧客に提供するので、これらの顧客は、これらのリソースを利用して、ロボット装置に利用可能になり得るカスタムのロボット装置アプリケーションを生成してよい。さらに、ロボット装置管理サービスは、シミュレーション環境内でカスタムアプリケーションの実行をシミュレーションするリソースを顧客に提供する。これにより、アプリケーションをロボット装置にインストールする必要及びアプリケーションを物理環境でテストする必要がなくなる。さらに、アプリケーションのシミュレーションを実行し得るので、アプリケーションをロボット装置にインストールするときのロボット装置への損傷のリスクを低減しながら、仮想シミュレーション環境内で任意の試行錯誤を行い得る。さらに、ロボット装置管理サービスによって、顧客がロボット装置のフリートを規定できるので、顧客は、異なるアプリケーション戦略をロボット装置の異なるフリートに対して実施しながら、複数のロボット装置を同時に管理してよい。
図1は、様々な実施形態を実施できるシステム100の説明のための例を示す。システム100において、ロボット装置管理サービス104の顧客は、顧客が指定したロボット装置112のセットにインストールし得るロボット装置アプリケーション106を作成及びシミュレーションする要求を、クライアントデバイス102を通してロボット装置管理サービス104に提出する。ロボット装置管理サービス104は、コンピューティングリソースの集合を備えてよく、コンピューティングリソースの集合は、ロボット装置管理サービス104の顧客がロボット装置のフリート112で実施し得るカスタムアプリケーションを作成するのを可能にするROSツール及びライブラリを提供するように集合的に動作する。さらに、ロボット装置管理サービス104は、ROSツール及びライブラリを他のコンピューティングリソースサービスに拡張してよい。例えば、ロボット装置管理サービス104を通して、顧客は、テキストを発話に変換するサービスを活用するロボット装置アプリケーション106を規定してよく、そのアプリケーションを使用して、ロボット装置112と自然言語理解(NLU)を使用する顧客との間の通信を可能にしてよい。さらに、顧客は、コンピューティングリソースサービスプロバイダのビデオストリーミングサービスを活用してロボット装置によってキャプチャされたビデオの顧客に対するリアルタイムストリーミングを、ロボット装置管理サービス104を介して可能にするアプリケーション106を規定してよい。従って、ロボット装置管理サービス104は、顧客、ロボット装置112、及び、コンピューティングリソースサービスプロバイダによって利用可能にされた無数のサービス間のインタラクションを調整する役割を果たしてよい。
ある実施形態においては、ロボット装置管理サービス104は、ロボット装置アプリケーション106を作成し、ロボット装置アプリケーション106のシミュレーションのためのパラメータを指定し、ロボット装置112のフリートを規定及び編成し、暗号化された通信チャネルを介してロボット装置112と通信し、且つ、ロボット装置アプリケーション106を実行するロボット装置112からデータを取得するために使用できるインタフェースを、クライアントデバイス102を通して顧客に提供する。このインタフェースを通して、ロボット装置管理サービス104は、ロボット装置アプリケーション106を作成するために顧客が選択し得る様々なROSツール及びライブラリを見せてよい。例えば、ロボット装置管理サービス104は、インタフェースを通して、コードエディタを提供してよく、顧客は、コードエディタを使用して、ロボット装置アプリケーション106を含むコンピュータ実行可能コードを定義してよい。さらに、ロボット装置管理サービス104は、コードエディタに加えて、上記のコンピューティングリソースサービス等、他のコンピューティングリソースサービスを通して利用可能になった機能に対応するモジュールのグラフィカル表現を提供してよい。顧客は、インタフェースを通して、コンピュータ実行可能コードの形態で、これらのモジュールをコードエディタに追加するために、これらのモジュールのいずれかを選択してよい。
ロボット装置管理サービス104は、インタフェースを通して作成されたロボット装置アプリケーション106を評価して、シミュレーション環境で、ロボット装置112上でのアプリケーションの適切な実行を妨害し得るエラーを識別してよい。例えば、ロボット装置管理サービス104は、あらゆるコンパイルエラー、矛盾するコマンド、未定義のパラメータもしくは変数などに関してコンピュータ実行可能コードを評価してよい。さらに、ロボット装置管理サービス104は、コンピュータ実行可能コードの強化のための提案を提供してよい。例えば、顧客が、コンピュータ実行可能コードを通して、データがアプリケーション106を実行するロボット装置112のビデオストリームを通して取得されるように指定した場合、ロボット装置管理サービスは、テキストを発話に変換するサービスを活用するモジュールを実装することを提案してよく、それによって、テキストはビデオストリームを介して検出され得る。
ある実施形態においては、顧客は、インタフェースを介してロボット装置管理サービス104にロボット装置112のセットを登録して、これらのロボット装置112をロボット装置管理サービス104によって維持され得る論理グループに編成可能にすることができる。ロボット装置112は、自律装置の周囲環境を分析して収集されたセンサデータに基づいて動作を実行し得る自律装置(例えば、「ドライバのいない」走行車、電化製品、無人航空機、宇宙探査船、衛星等)を含んでよい。ロボット装置は、本開示に記載される場合、物理的ロボット装置、及び/またはシミュレーションされたロボット装置を指してよく、それらは、物理的ロボット装置の表現であってよいが、シミュレーション環境内にあってよいことに留意されたい。インタフェースを通して、顧客は、様々なアプリケーションプログラミングインタフェース(API)コールを利用して、新しいロボット装置112を登録してよい。例えば、顧客は、RegisterDevice()APIコールを使用して、ロボット装置112を顧客のアカウントに関連付けるために使用され得るロボット装置112の一意の名前を提出してよい。ある実施形態においては、RegisterDevice()APIコールは、ロボット装置の登録のために必要とされ、ロボット装置の名前、ロボット装置の一意のインターネット・オブ・シングズ(IoT)名、及びロボット車両が属する論理グループの名前 が、文字列として提供される。例えば、顧客は、RegisterDevice()APIコールを使用して、ロボット装置112の一意のIoT名を提出してよく、一意のIoT名は、ロボット装置管理サービス104とロボット装置112の間に暗号化された通信チャネルを確立するために使用されてよい。さらに、RegisterDevice()APIを通して、顧客は、ロボット装置112がその一部となる論理グループを定義してよい。この論理グループは、顧客が以前に作成したロボット装置112の既存のグループ、または、顧客が定義した新しい論理グループであってよい。オプションで、顧客は、RegisterDevice()APIコールを通して、ロボット装置112とロボット装置管理サービス104の間の要求と応答を相関させるために使用し得るクライアントトークンを定義してよい。これについては、以下により詳細に記載する。
顧客は、DeregisterDevice()APIコールを使用して、顧客のアカウントから既存のロボット装置112を登録解除する要求を提出することができる。このAPIコールに応答して、ロボット装置管理サービス104は、データベースを更新してロボット装置112の登録ステータスを更新し、ロボット装置112を登録解除するためのワークフローを開始してよい。ある実施形態においては、DeregisterDevice()APIコールは、登録解除するロボット装置112の一意の名前を文字列として含む。
この登録プロセス中、ロボット装置管理サービス104は、ロボット装置管理サービス104とコンピューティングリソースサービスプロバイダの任意の他のサービスと通信するロボット装置112の認証を可能にするために、顧客にロボット装置112のデジタル証明書の作成を要求してよい。顧客は、ロボット装置112のIoT名を指定するCreateDeviceCertificates()APIコールを使用して、ロボット装置112のデジタル証明書の作成を要求してよい。要求に応答して、ロボット装置管理サービスは、ネットワーク接続デバイスサービスと通信して、ロボット装置112のIoT情報とデジタル証明書とを生成してよい。さらに、ロボット装置管理サービス104は、デジタル証明書をロボット装置112に転送して、ロボット装置112が認証のためにデジタル証明書を提示するのを可能にしてよい。ある実施形態においては、ロボット装置管理サービス104は、通信チャネルアプリケーションをロボット装置112に送信し、通信チャネルアプリケーションは、ロボット装置112にインストール及び実行されると、ロボット装置112が、ロボット装置管理サービス104及び他のコンピューティングリソースサービスとインタラクトし、認証のためにデジタル証明書を提示するのを可能にする。
ある実施形態においては、顧客は、シミュレーション環境内でのロボット装置アプリケーション106のシミュレーションを開始してロボット装置アプリケーション106に対してテストのセットを実行する要求をロボット装置管理サービス104に提出する。例えば、顧客は、ロボット装置アプリケーション106のシミュレーションを使用して、シミュレーション環境でのロボット装置112のシミュレーションの性能を測定してよい。これによって、ロボット装置112がロボット装置アプリケーション106の実行を通してより良い結果を達成し得るように、顧客がロボット装置アプリケーション106を調整することを可能にし得る。要求では、顧客は、ロボット装置パラメータのセットとシミュレーションパラメータのセットとを指定してよく、これらは両方ともシミュレーション環境の生成と、ロボット装置アプリケーション106のシミュレーションの実行とに使用されてよい。
ロボット装置パラメータは、シミュレーション環境を介してテストするロボット装置112の名前を含んでよい。これらのパラメータは、ロボット装置112が利用するセンサと、ロボット装置112の運動能力及び運動制限等をさらに含んでよい。シミュレーション環境パラメータは、シミュレーションルームの寸法、ロボット装置が遭遇し得るあらゆる障害物の場所、ロボット装置が相互作用し得るあらゆる物体の場所、ロボット装置の最初の位置、シミュレーション終了時のロボット装置の所望の位置等を含んでよい。ある実施形態においては、インタフェースを介して、顧客は、ロボット装置112用の強化学習モデルを訓練するためのカスタム設計の強化関数を規定するコンピュータ実行可能コードを定義することができる。例えば、顧客は、特定のアプリケーション106のシミュレーションを開始するサービス104へのAPIコール(例えば、StartEvaluation()等)を介して、アプリケーション106の強化学習モデルの訓練に使用される強化関数のリソース名、評価に使用されるシミュレーション環境のリソース名、シミュレーションの終了条件(例えば、タイムアウト時間、モデル収束要件等)、並びにシミュレーションによって生成されたデータの記憶に利用されるデータオブジェクトの場所及び名前を指定してよい。ある実施形態においては、StartEvaluation()APIコールは、シミュレーションで訓練される強化学習モデルのリソース名、シミュレーションのために選択されたシミュレーション環境のリソース名、シミュレーションの終了条件を指定するドキュメントもしくはファイル、及びシミュレーションのアーティファクトの記憶に使用されるデータオブジェクトを文字列として含み得る。オプションで、StartEvaluation()APIコールを通して、顧客は、要求と応答を相関させるためにどのトークンを使用するかを指定することができる。
ある実施形態においては、顧客は、ロボット装置管理サービス104へのAPIコール(例えば、ImportModel())を使用して、強化学習モデルとカスタム設計の強化関数を規定するコンピュータ実行可能コードとをインポートしてよい。APIコールは、パラメータとして、強化学習モデルの一意の名前、モデルタイプ、モデルのフレームワーク、モデルの説明、及びあらゆるモデルアーティファクトの記憶場所を含み得る。ある実施形態においては、上記パラメータは、ImportModel()APIコールと共に文字列の形式で含まれる。顧客は、オプションで、要求と応答を相関させるためにどのトークンを使用するかを指定してよい。
上記のように、ロボット装置管理サービス104は、強化学習技術を利用して、ロボット装置112が、シミュレーション環境刺激と、この刺激に応答した報酬の最大化とに基づいて実行すべきアクションを決定してよい。顧客は、インタフェースを通して、アプリケーション106の実行を通してシミュレーション環境でロボット装置112が達成すべき特定の目標と、カスタム設計の強化関数を規定するコンピュータ実行可能コードを通して、シミュレーション環境内の状態に応答したアクションの実行に対応する報酬とを指定してよい。従って、シミュレーションエージェントは、シミュレーション内で、ロボット装置112とシミュレーション環境との初期状態を決定してよい。ロボット装置112とシミュレーション環境との初期状態に応答して、エージェントは、行うべきアクションを選択してよく、ロボット装置112のシミュレーションのそのアクションを行わせてよい。ロボット装置112とシミュレーション環境との結果として生じる状態は、記録され、初期状態及び最終状態に基づいたアクションの報酬価値を決定するために使用される。目標が達成されると、エージェントは、総報酬価値を決定してよく、カスタム設計の強化関数を使用して、報酬価値が可能な最大値であるかどうかを判断してよい。エージェントは、シミュレーションの実行と、これらの報酬価値とロボット装置112のシミュレーションが実行したアクションとに基づいて、強化学習モデルの調整を続けてよい。
強化学習は、本開示を通して説明目的で使用され、教師あり学習技術等の他の機械学習技術を利用して、ロボット装置アプリケーション106を最適化してよいことに留意されたい。例えば、機械学習システムは、アプリケーション106に関する訓練データを使用して、ロボット装置112が環境内をナビゲートして特定の目標に到達する戦略を選択する際に使用できる機械学習モデルを構築してよい。この例示の実施形態では、訓練データは、機械学習システム及び分類アルゴリズムにフィードされて、アクション及び状態をアクション戦略カテゴリにまとめるモデルを構築することができる。教師あり学習を使用するある実施形態においては、入力データは、ロボット装置アプリケーション106の所与の実行に関して戦略が正しいかどうかの指示を含み得る。例えば、特定の目標を達成するためにシミュレーション環境をナビゲートするアクションに関してロボット装置が行った選択等に少なくとも部分的に基づいてロボット装置が分析した振る舞いを使用して、ある一定のアクションがロボット装置112にとって正しかったかどうかを推測することができる、または、顧客が、アクションを行った後、動作メトリクスに基づいたデータで正確なアクションを識別することができる。機械学習システムは、任意の時に1つまたは複数のサンプルベクトルを利用して1つまたは複数のシミュレーションを行って、ロボット装置112のアクションを決定するためにアプリケーション106が利用した関数が正しく正確な結果を生成しているかどうかを決定してよい、及び/またはアプリケーション106が利用した1つまたは複数の関数を精緻化して正しく正確な結果を生成してよい。例えば、機械学習システムの初期化中、アプリケーション106は、1つまたは複数のサンプルベクトルと、これらの1つまたは複数のサンプルベクトルに少なくとも部分的に基づいて取得されるべき分析結果(例えば、所望の成果)とを機械学習システムに提供してよい。機械学習システムは、この練習に少なくとも部分的に基づいて、アプリケーション106が利用する関数を調整して、シミュレーション環境でロボット装置112が行ったアクションに関連付けられたアクティビティに対応するベクトルを分析してよい。
機械学習システムは、ロボット装置管理サービス104が雇用する1人または複数のアナリストからの入力を受信して、アプリケーション106の1つまたは複数のシミュレーションからの結果を上記1つまたは複数の関数を使用して分析してよい。例えば、アナリストは、シミュレーション環境からの刺激とロボット装置管理サービス104が生成した1つまたは複数のベクトルとに応答してロボット装置112が行ったアクションを見直して、刺激に応答して行われたアクションを実施すべきかどうかを判断してよい。アナリストは、上記戦略のいずれか、または他の戦略にも対応しながらベクトル入力を分類するために使用されるモデルを精緻化する際に使用するために自分の入力を提供してよい。アナリストが行った見直しに対応する測定値のベクトルとアナリストの入力に対応する所望の結果とを機械学習システムが使用して、ベクトル入力の分類に使用されるモデルを更新してよい。これは、十分な数のサンプルベクトル入力と所望の結果とを機械学習システムに提供するように、複数のアナリストによって及び/または複数のベクトル入力を使用して行われてよい。機械学習システムは、将来の分析で所望の結果を取得する可能性を高めるようにロボット装置管理サービス104が使用する1つまたは複数のモデルを調整してよい。
ある実施形態においては、ロボット装置管理サービス104は、取得したパラメータ108(例えば、ロボット装置パラメータ及びシミュレーション環境パラメータ)に基づいて、アプリケーション106をテストし、アプリケーション106の強化学習モデルを訓練するために使用されるシミュレーション環境を生成する。例えば、ロボット装置管理サービス104は、取得したパラメータ108を評価して、ロボット装置112のシミュレーションを実行及びサポートするための計算要件(例えば、メモリ、中央処理装置(CPU)要件、グラフィックスプロセッシングユニット(GPU)要件等)を決定してよい。例えば、ロボット装置管理サービス104は、シミュレーションを実行し、シミュレーション環境内でロボット装置112のアクションを処理するのに必要なシミュレーションの構成要素のセット(例えば、物理エンジン、レンダリングエンジン等)を識別してよい。これらの計算要件に基づいて、ロボット装置管理サービス104は、シミュレーションサーバ110のセット内に仮想コンピューティングインスタンスのセットをプロビジョニングして、アプリケーション106のシミュレーションを実行してよい。
シミュレーションサーバ110は、仮想コンピュータシステム管理サービスを介して利用可能にされてよい。仮想コンピュータシステム管理サービスは、ある実施形態においては、1つまたは複数のコンピュータシステムを備え、各コンピュータシステムは、1つまたは複数のプロセッサと命令を含むメモリとを備え、命令は、1つまたは複数のプロセッサによって実行されると、エンティティ(例えば、ロボット装置管理サービス104等)から到着する要求を処理し、コマンドのセットを実行するための仮想コンピューティングシステムインスタンスにコマンドのセットを送信してよい。コマンドのセットの実行は、アプリケーション106のシミュレーションと、シミュレーションで利用される強化学習モデルを訓練してアプリケーション106を実行するロボット装置112の効率と性能を改善するアプリケーション106の可能な修正を識別するためのアプリケーションの実行とを含む。ある実施形態においては、仮想コンピュータシステム管理サービスは、プロセス、エージェント、または他の実行可能コードとして実装され、これらは、実行されると、エンティティから受信する要求を処理し、シミュレーションの実行のために、仮想コンピューティングシステムインスタンスにコマンドを送信する。ある実施形態においては、仮想コンピュータシステム管理サービスは、コンピューティングリソースサービスプロバイダの他のリソース(例えば、仮想コンピュータシステムインスタンス、他のコンピューティングインスタンス等)を使用して実装される。ある実施形態においては、ロボット装置管理サービス104は、仮想コンピュータシステム管理サービスを使用して、アプリケーション106と、シミュレーションがシミュレーションサーバ110上で仮想コンピュータシステムインスタンスのセットによってどのように生成及び実行されるかを制御するパラメータ108のセットとを提出する。
シミュレーションの各構成要素の計算要件に基づいて、ロボット装置管理サービス104は、シミュレーションサーバ110にプロビジョニングされた仮想コンピューティングインスタンス間に様々な構成要素をどのように割り当てるかを決定してよい。例えば、ロボット装置管理サービス104は、複雑またはリソース集約的なアプリケーションを扱うために高性能な能力を有して構成された仮想コンピューティングインスタンス内に、計算集約的な構成要素を適用してよい。ロボット装置管理サービス104は、一定のレベルの容量使用に達するまで、シミュレーションサーバ110内の仮想コンピューティングインスタンス内にシミュレーションの構成要素を配置してよい。仮想コンピューティングインスタンスが最大容量になる場合、または、ロボット装置管理サービス104が課した制限に達した場合、ロボット装置管理サービス104は、残りの構成要素を、これらの構成要素の計算要件に基づいて、他の仮想コンピューティングインスタンスに割り当ててよい。
シミュレーションの構成要素は、様々なシミュレーションサーバ110にわたる任意の数の仮想コンピューティングインスタンス間に割り当てられてよいので、ロボット装置管理サービス104は、シミュレーション実行中、シミュレーションの様々な構成要素間での通信を可能にするように仮想コンピューティングインスタンス間に仮想ネットワークインタフェースを構成してよい。仮想ネットワークインタフェースは、ハードウェア及びソフトウェアを使用してシミュレーションサーバ110に実装されてよく、シミュレーションサーバ110によって実行されると仮想ネットワークインタフェースに本明細書に記載の動作を行わせる実行可能命令を用いて実行されてよい。これらの仮想ネットワークインタフェースは、様々な仮想コンピューティングインスタンス間と、その内部で動作する構成要素間とでデータを送信するために利用されてよい。ある実施形態においては、シミュレーションの実行のためにプロビジョニングされた仮想コンピューティングインスタンスは、顧客の仮想プライベートネットワークに編成される。これによって、顧客が実行中のシミュレーションにアクセスして、シミュレーション環境でのロボット装置の性能を監視し、シミュレーションの実行の結果として生成されたデータを取得することが可能になる。ある実施形態においては、構成要素の1つまたは複数が顧客のオンプレミスネットワーク内にある場合、ロボット装置管理サービス104は、顧客のオンプレミスネットワーク内の仮想コンピューティングインスタンスにシミュレーションをマッピングしてよい。従って、仮想プライベートネットワークは、一部の例では、シミュレーションサーバ110上、及び、顧客のオンプレミスネットワーク内に仮想コンピューティングインスタンスを含み得る。
ある実施形態においては、ロボット装置管理サービス104は、シミュレーションが成功裏に完了するのを確実にするためにシミュレーションの実行を監視する。例えば、ロボット装置管理サービス104が、特定の仮想コンピューティングインスタンスが失敗した、または、動作不能にレンダリングされたことを検出した場合、ロボット装置管理サービス104は、シミュレーションの構成要素のいずれかが、その失敗の結果として影響を受けるかどうかを判断してよい。ロボット装置管理サービス104が、シミュレーションの1つまたは複数の構成要素が失敗により影響を受けたと判断すると、ロボット装置管理サービス104は、影響を受けた構成要素の性能要件を決定してよく、これらの性能要件に基づいて、シミュレーションのためのアクティブな仮想コンピューティングインスタンスのいずれかが、これらの構成要素を収容できるかどうかを判断してよい。収容できる場合、ロボット装置管理サービス104は、影響を受ける構成要素をアクティブなコンピューティングインスタンスに移動して、シミュレーションの実行を再開してよい。あるいは、アクティブな仮想コンピューティングインスタンスにこれらの影響を受ける構成要素を収容する能力が無い場合、ロボット装置管理サービス104は、新しい仮想コンピューティングインスタンスをシミュレーションサーバ110にプロビジョニングする要求を仮想コンピュータシステム管理サービスに提出してよい。ロボット装置管理サービス104は、影響を受ける構成要素をこれらの新しい仮想コンピューティングインスタンスに移動して、シミュレーション環境内でロボット装置112のシミュレーションを再開してよい。
同様に、ロボット装置管理サービス104は、シミュレーション及び仮想コンピューティングインスタンスを監視して、シミュレーションのシミュレーションワークロードに急上昇があるかどうかを判断してよい。ロボット装置管理サービス104がシミュレーションワークロードの急上昇を検出した場合、ロボット装置管理サービス104は、シミュレーションワークロードのこの急上昇は、ロボット装置112のシミュレーションをサポートするために追加の仮想コンピューティングインスタンスが必要であるという指示であるかどうかを判断してよい。追加の仮想コンピューティングインスタンスが必要な場合、ロボット装置管理サービス104は、新しい仮想コンピューティングインスタンスをシミュレーションサーバ110にプロビジョニングする要求を仮想コンピュータシステム管理サービスに提出してよい。これらの仮想コンピューティングインスタンスの性能要件は、シミュレーションワークロードの急上昇の原因となっている及び/またはシミュレーションワークロードの急上昇に応答して移動するために選択される構成要素の性能要件に基づいて決定されてよい。ロボット装置管理サービス104は、識別された構成要素をこれらの新しくプロビジョニングされた仮想コンピューティングインスタンスに移動して、ロボット装置112のシミュレーションを継続してよい。
ある実施形態においては、ロボット装置管理サービス104は、ロボット装置112のシミュレーションの実行によって生成されたデータをオブジェクトベースのデータストレージサービスによって維持されたデータオブジェクトに記憶する。オブジェクトベースのデータストレージサービスは、コンピューティングリソースサービスプロバイダによって提供されたサービスであってよい。オブジェクトベースのデータストレージサービスは、ハードウェア及びソフトウェアを使用して実装されるコンピュータシステム、またはコンピュータシステムの抽象化(ハイパーバイザを介して動作する1つまたは複数の仮想マシン等)で実施されてよく、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、コンピュータシステムに本明細書に記載の動作を行わせる実行可能命令を記憶するメモリとを備えてよい。オブジェクトベースのデータストレージサービスに記憶されたデータは、データオブジェクトに編成されてよい。データオブジェクトは、任意のサイズを有してよく、一部の例では、サイズに制約があってよい。従って、オブジェクトベースのデータストレージサービスは、様々なサイズの多くのデータオブジェクトを記憶してよい。オブジェクトベースのデータストレージサービスは、データオブジェクトをデータオブジェクトの識別子と関連付けるキー値ストアとして働いてよく、データオブジェクトの識別子は、オブジェクトベースのデータストレージサービスに記憶されたデータオブジェクトを読み出すために、または、データオブジェクトに関連した他の動作を実行するために顧客または他のエンティティ(例えば、ロボット装置管理サービス104等)によって使用されてよい。オブジェクトベースのデータストレージサービスへのアクセスは、サービスへのAPIコールを通して、または、GUI等のインタフェースを介してよい。
ロボット装置112のシミュレーションを通してロボット装置管理サービス104が取得したシミュレーションデータは、アプリケーション106と、顧客が提供したカスタム設計の強化関数とを使用してロボット装置112のシミュレーションを通して生成された更新された強化学習モデルを含んでよい。さらに、シミュレーションデータは、アプリケーション106の実行を通してロボット装置112が処理した様々なシミュレーション環境刺激に基づいて、シミュレーションでロボット装置112が行ったアクションを指定してよい。ロボット装置管理サービス104は、識別されたアプリケーション106とクライアント102を介して顧客が提供したパラメータ108のセットとを用いてロボット装置112のシミュレーションを実行するという顧客の要求を満たすために、このシミュレーションデータを顧客に提供してよい。一部の例では、ロボット装置管理サービス104は、シミュレーションデータの記憶に使用されるデータオブジェクトのユーアールアイ(URI)または他のネットワークアドレスを提供してよい。顧客は、URIまたは他のネットワークアドレスを使用して、データオブジェクトにアクセスし、シミュレーションデータを読み出してよい。ある実施形態においては、アプリケーション106は、同様に、あらゆる依存関係(例えば、環境障害物の定義、ロボット装置の限界等のシミュレーションの実行に必要な他の資産)と共に、オブジェクトベースのデータストレージサービスのデータオブジェクトに記憶される。
ある実施形態においては、顧客は、ロボット装置管理サービス104によって提供されるインタフェースを通して、アプリケーション106をロボット装置112のセットにインストールする要求を提出することができる。上記のように、顧客は、ロボット装置管理サービス104が提供するインタフェースを通してロボット装置112の論理グループを作成してよい。従って、顧客は、インタフェースを通して、どのロボット装置112がアプリケーション106を取得及び実行するかを示すために論理グループの1つまたは複数を選択してよい。要求に応答して、ロボット装置管理サービス104は、アプリケーション106の記憶に使用されるデータオブジェクトからアプリケーション106を取得してよく、選択されたロボット装置112にアプリケーション106を送信してよい。ロボット装置管理サービス104は、このデータオブジェクトから、顧客が選択した論理グループの識別された各ロボット装置112にアプリケーション106を送信してよい。ある実施形態においては、顧客が指定したロボット装置112にアプリケーション106を送信するのではなく、ロボット装置管理サービス104は、各ロボット装置112に、アプリケーション106の記憶に利用されるデータオブジェクトまたは他のデータストアのネットワークアドレスを送信する。これは、各ロボット装置112が、提供されたネットワークアドレスを利用して、アプリケーション106の記憶に使用されるデータオブジェクトまたは他のデータストアにアクセスし、データオブジェクトまたは他のデータストアから、ロボット装置112にインストール及び実行するためのアプリケーション106の取得するのを可能にし得る。
ロボット装置112のセットへのアプリケーション106のインストールを要求するために、顧客は、DeployProjectToDevice()APIコールをロボット装置管理サービス104に提出してよい。ある実施形態においては、DeployProjectToDevice()APIは、顧客のアカウントのロボット装置112に指定されたアプリケーション106のデプロイを開始するために必要とされ、ロボット装置112の名前とアプリケーション106の一意の名前とを文字列として含み得る。ロボット装置112のセットへのアプリケーション106への実際のデプロイメントは、非同期的に行われてよい。アプリケーションをデプロイする要求に応答して、サービス104は、一意のデプロイメント識別子を顧客に提供してよい。顧客は、ロボット装置管理サービス104へのGetDeploymentStatus()APIコールを通してロボット装置112へのアプリケーション106のデプロイメントを監視してよい。顧客は、ロボット装置管理サービス104が以前に提供したデプロイメント識別子を文字列として含めてよい。この要求に応答して、ロボット装置管理サービス104は、ロボット装置112へのアプリケーション106のデプロイメントのステータスに関する詳細な情報を提供してよい。
顧客がロボット装置112からアプリケーション106を取り除きたい場合、顧客は、DeleteProject()APIコールを提出してよく、DeleteProject()APIコールを通して、顧客は、取り除くアプリケーション106の名前を文字列として指定してよい。DeleteProject()APIコールに応答して、ロボット装置管理サービス104は、アプリケーション106を顧客のアカウントから取り除いてよく、アプリケーション106がロボット装置112にインストールされている場合、フリートのロボット装置112にアプリケーション106を削除させてよい。特定のロボット装置112からアプリケーション106を取り除くために、顧客は、RemoveProjectFromDevice()APIコールをサービス104に提出してよい。ある実施形態においては、RemoveProjectFromDevice()APIコールは、指定されたロボット装置112からアプリケーション106を取り除くために必要とされ、ロボット装置112の名前を文字列として含み得る。ロボット装置管理サービス104は、指定されたロボット車両112に、そのシステムからアプリケーション106を取り除く要求を送信してよい。
各ロボット装置112について、ロボット装置管理サービス104は、ロボット装置112とロボット装置管理サービス104の間に通信チャネルを確立して、ロボット装置112とロボット装置管理サービス104の間の通信を可能にしてよい。例えば、ロボット装置112は、サービス104または他のコンピューティングリソースサービスによって提供されるリソースのセットにアクセスする要求をこの通信チャネルを介して、ロボット装置管理サービス104に送信してよい。通信チャネルを通して、ロボット装置112は、さらに、顧客によって使用可能なデータを提供して、ロボット装置112がインタラクトしている環境を可視化してよい。例えば、ロボット装置112がビデオ記録装置を備える場合、ロボット装置112は、ビデオ記録装置を使用して、通信チャネルを介してロボット装置管理サービス104にビデオをストリーミングしてよい。顧客は、ロボット装置管理サービス104が提供するインタフェースを通して、ビデオストリームにアクセスして、その環境内でロボット装置112を観察してよい。通信チャネルを通して、顧客は、ロボット装置112とインタラクトしてよく、インタフェースを通して必要に応じてロボット装置112にコマンドを発してよい。従って、顧客は、アプリケーション106の実行中、ロボット装置112の環境を可視化するために顧客が利用するデータに基づいて、アプリケーション106にエンコードされたアクションからロボット装置112を外れさせてよい。
ある実施形態においては、ロボット装置管理サービス104は、アプリケーション106の実行中、各ロボット装置112が行ったアクションに基づいて、選択された論理グループの各ロボット装置112の性能を監視してよい。例えば、ロボット装置管理サービス104は、ロボット装置112から取得したデータに基づいて、ロボット装置112が実行しているアプリケーション106に問題が存在すると判断してよい。例えば、ロボット装置112が、アプリケーション106の実行の結果として予期せぬアクションを行う場合、ロボット装置管理サービス104は、アプリケーション106に問題が存在すると判断してよい。同様に、ロボット装置管理サービス104は、アプリケーション106が予定より早く終了する場合、その他何であろうとクラッシュする場合、アプリケーション106の問題を検出してよい。ある実施形態においては、ロボット装置管理サービス104がロボット装置112で実行しているアプリケーション106に問題があると判断した場合、ロボット装置管理サービス104は、アプリケーション106の以前のバージョンをインストール及び実行のためにロボット装置112に提供することができる。アプリケーション106を使用して行われたシミュレーションに基づいて更新されたアプリケーション106の最新のバージョンがロボット装置112の性能に影響を与える問題を有することが発見された場合、ロボット装置管理サービス104は、アプリケーション106の以前のバージョンをデータオブジェクトに維持してよい。従って、ロボット装置管理サービス104は、ロボット装置112がアプリケーション106の以前のバージョンを実行することを可能にしながら、同時にアプリケーション106を使用して追加のシミュレーションを行って、あらゆる識別された問題に対処してよい。
ある実施形態においては、アプリケーション106への更新が利用可能な場合、ロボット装置管理サービス104は、アプリケーション106を利用するロボット装置112に、確立された通信チャネルを介してアプリケーション106への更新を送信することができる。あるいは、ロボット装置管理サービス104は、アプリケーション106への更新を記憶するデータオブジェクトまたは他のデータストアのネットワークアドレスを各ロボット装置112に送信してよい。これは、各ロボット装置112に、提供されたネットワークアドレスを利用して、データオブジェクトまたは他のデータストアにアクセスして、更新を取得させてよい。更新の取得に応答して、ロボット装置112は、更新を実施し、アプリケーション106の実行を再開してよい。ある実施形態においては、更新は、ロボット装置112とロボット装置管理サービス104の間に確立された上記通信チャネル等、暗号化された通信チャネルを通してOTA(Over the Air)プログラミングを使用して提供される。
図2は、少なくとも1つの実施形態による、ロボット装置管理サービスのデプロイメント制御サブシステム210が、ロボット装置アプリケーション218をロボット装置216のフリートに送信し、ロボット装置216のフリートからデータを取得するシステム200の説明のための例を示す。システム200において、ロボット装置管理サービス204の顧客は、クライアントデバイス202を介して、ロボット装置216のフリートに、これらのロボット装置216でアプリケーション218を実行するためにアプリケーション218をデプロイする要求をロボット装置管理サービス204のサービスフロントエンド206に提出する。サービスフロントエンド206は、ハードウェア及びソフトウェアを使用して実装されるコンピュータシステム、またはコンピュータシステムの抽象化(ハイパーバイザを介して動作する1つまたは複数の仮想マシン等)で実施され、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、コンピュータシステムに本明細書に記載の動作を行わせる実行可能命令を記憶するメモリとを備えることができる。ある実施形態においては、サービスフロントエンド206は、顧客がロボット装置管理サービス104への要求を規定し得るインタフェースをクライアントデバイス102が利用できるようにする。例えば、インタフェースを通して、顧客は、ロボット装置216のフリートにインストールするアプリケーション218と、ロボット装置216のフリートを含む論理グループに対応する識別子と、他のパラメータ(例えば、アプリケーション218の実行の結果としてロボット装置216が生成したデータの記憶場所、ロボット装置218で作動されるセンサ及び他のデバイス、ロボット装置216の通信能力、ロボット装置216のアクションをオーバーライドするパラメータ等)とを選択してよい。
要求に応答して、サービスフロントエンド206は、顧客が選択されたロボット装置アプリケーション218を識別されたロボット装置216で実施させることを許可されているかどうかを判断してよい。例えば、サービスフロントエンド206は、顧客に関連付けられたクライアントアカウント208にアクセスして、ロボット装置管理サービス204へのアクセスのレベルを規定するアクセス制御ポリシーのセットと、顧客が行ってよいまたは行ってはいけないアクションを規定するあらゆる許可とを識別してよい。これらのポリシーに基づいて、サービスフロントエンド206は、ロボット装置管理サービス204のデプロイメント制御サブシステム210に要求を送信するかどうかを判断してよい。デプロイメント制御サブシステム210は、ハードウェア及びソフトウェアを使用して実装されるコンピュータシステム、またはコンピュータシステムの抽象化(ハイパーバイザを介して動作する1つまたは複数の仮想マシン等)で実施され、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、コンピュータシステムに本明細書に記載の動作を行わせる実行可能命令を記憶するメモリとを備えることができる。
デプロイメント制御サブシステム210は、要求に応答して、オブジェクトベースのデータストレージサービス214内のデータオブジェクトからロボット装置アプリケーション218を取得してよい。例えば、要求は、アプリケーション218の識別子を指定してよく、デプロイメント制御サブシステム210は、その識別子を使用して、ロボット装置アプリケーションの記憶に使用されるデータオブジェクトのネットワークアドレスに対応するエントリを含むデータベースにクエリしてよい。このデータベースから、デプロイメント制御サブシステム210は、提供された識別子に対応するロボット装置アプリケーション218を記憶するデータオブジェクトのネットワークアドレスを識別してよい。デプロイメント制御サブシステム210は、要求で識別されたロボット装置216にロボット装置アプリケーション218を送信してよい。例えば、顧客がアプリケーション218をインストールするためにロボット装置216の特定の論理グループを選択する場合、デプロイメント制御サブシステム210は、この論理グループを評価して、顧客が指定した論理グループを含むロボット装置216を識別してよい。デプロイメント制御サブシステム210は、ロボット装置管理サービス204とロボット装置216の間に確立された通信チャネルを介してアプリケーション218を各ロボット装置216に送信してよい。ある実施形態においては、アプリケーション218を各ロボット装置216に提供するのではなく、デプロイメント制御サブシステム210が、アプリケーション218をインストール及び実行するためにロボット装置216によって使用可能なアプリケーションデータを送信することができる。アプリケーションデータは、アプリケーション218の記憶に使用されるデータオブジェクトまたは他のデータストアのネットワークアドレス、アプリケーション218を実行するパラメータ(例えば、アプリケーション218の実行中に利用するセンサ、アプリケーション218の実行のためにロボット装置216がアクセスするコンピューティングリソース、ロボット装置216にアプリケーションデータレポジトリ212内に記憶されるデータを記録させ得るコンピュータ実行可能コード等)、実行されると、ロボット装置216にアプリケーション218をインストールさせるアプリケーション218を含むコンピュータ実行可能コードなどを含み得る。
ある実施形態においては、ロボット装置216がロボット装置管理サービス204に以前に登録されていない場合、デプロイメント制御サブシステム210は、ロボット装置216の登録プロセスを開始してよい。この登録プロセス中、ロボット装置管理サービス204は、デプロイメント制御サブシステム210とコンピューティングリソースサービスプロバイダの任意の他のサービスと通信するロボット装置216の認証を可能にするために、顧客にロボット装置216のデジタル証明書の作成を要求してよい。デプロイメント制御サブシステム210は、ネットワーク接続デバイスサービスと通信して、ロボット装置216のIoT情報とデジタル証明書とを生成してよい。さらに、デプロイメント制御サブシステム210は、デジタル証明書をロボット装置216に送信して、ロボット装置216が認証のためにデジタル証明書を提示するのを可能にしてよい。ある実施形態においては、デプロイメント制御サブシステム210は、通信チャネルアプリケーションをロボット装置216に送信し、通信チャネルアプリケーションは、ロボット装置216にインストール及び実行されると、ロボット装置216が、デプロイメント制御サブシステム210及び他のコンピューティングリソースサービスとインタラクトし、認証のためにデジタル証明書を提示するのを可能にする。
デプロイメント制御サブシステム210からロボット装置アプリケーション218を取得することに応答して、ロボット装置216は、それぞれ、ロボット装置アプリケーション218をインストール及び実行してよい。ある実施形態においては、デプロイメント制御サブシステム210は、アプリケーション218の実行中、各ロボット装置216が行ったアクションに基づいて、選択された論理グループの各ロボット装置216の性能を監視する。例えば、デプロイメント制御サブシステム210は、ロボット装置216から取得したデータに基づいて、ロボット装置216が実行しているアプリケーション218に問題が存在することを判断してよい。ある実施形態においては、デプロイメント制御サブシステム210が、ロボット装置216が実行しているアプリケーション218に問題があると判断する場合、デプロイメント制御サブシステム210は、データオブジェクトからロボット装置216にアプリケーション218の以前のバージョンをインストール及び実行のために提供する。アプリケーション218を使用して行われたシミュレーションに基づいて更新されたアプリケーション218の最新のバージョンがロボット装置216の性能に影響を与える問題を有することが発見された場合、デプロイメント制御サブシステム210は、オブジェクトベースのデータストレージサービス214が維持するデータオブジェクトにアプリケーション218の以前のバージョンを維持してよい。従って、デプロイメント制御サブシステム210は、ロボット装置216がアプリケーション218の以前のバージョンを実行するのを可能にし得る。
各ロボット装置216に関して、デプロイメント制御サブシステム210は、ロボット装置216から取得したデータをアプリケーションデータレポジトリ212に記録してよい。このデータは、ロボット装置が環境をナビゲートしながらアプリケーション218の実行を介してロボット装置216によって取得されたテレメトリデータを含み得る。さらに、データは、ロボット装置216の様々なセンサを介して記録された環境に関する情報を含むセンサデータを含み得る。デプロイメント制御サブシステム210とロボット装置216の間の通信チャネルを通して、ロボット装置216とデプロイメント制御サブシステム210の間の通信は、維持されてよい。例えば、ロボット装置216は、ロボット装置管理サービス204または他のコンピューティングリソースサービスによって提供されるリソースのセットにアクセスする要求をこの通信チャネルを介して、デプロイメント制御サブシステム210に送信してよい。通信チャネルを通して、ロボット装置216は、さらに、顧客によって使用可能なデータを提供して、ロボット装置216が相互作用している環境を可視化してよい。例えば、ロボット装置216がビデオ記録装置を備える場合、ロボット装置216は、ビデオ記録装置を使用して、通信チャネルを介してデプロイメント制御サブシステム210にビデオをストリーミングしてよい。顧客は、サービスフロントエンド206を通して、ビデオストリームにアクセスして、その環境内でのロボット装置216を観察してよい。サービスフロントエンド206と通信チャネルとを通して、顧客は、ロボット装置216とインタラクトしてよく、サービスフロントエンド206を介して提供されるインタフェースを通して必要に応じてロボット装置216にコマンドを発してよい。さらに、顧客は、サービスフロントエンド206を使用して、その論理グループの任意のロボット装置216に関して、アプリケーションデータレポジトリ212からデータを取得してよい。
ある実施形態においては、ロボット装置管理サービス204は、ロボット装置216から取得したセンサデータを利用して、ロボット装置にインストールされたアプリケーション218を更新して、更新されたアプリケーションをもたらす。例えば、ロボット装置管理サービス204は、取得したセンサデータに基づいて、アプリケーション218に問題があること(例えば、アプリケーションがクラッシュして、センサデータが不足する、センサデータが環境内で予測外のアクションの実行を示す、センサデータがアプリケーションの実行から生じる1つまたは複数のセンサの障害を示す等)を検出してよい。その問題に応答して、ロボット装置管理サービス204は、ロボット装置管理サービス204が識別した問題をトリガしないアプリケーション218の以前のバージョンにロボット装置216にロールバックさせてよい。ロボット装置管理サービス204は、アプリケーションの以前のバージョンをロボット装置216に送信して、ロボット装置216にアプリケーション218のこの以前のバージョンをインストール及び実行させてよい。あるいは、ロボット装置管理サービス204は、アプリケーション218の以前のバージョンの記憶に使用されるデータオブジェクトのネットワークアドレスを提供してよい。これによって、ロボット装置216にネットワークアドレスを使用して、データオブジェクトにアクセスさせ、アプリケーション218の以前のバージョンを取得させてよい。
ある実施形態においては、ロボット装置管理サービス204は、センサデータを使用して、アプリケーション218の新しいバージョンを作成する。例えば、センサデータに基づいて、ロボット装置管理サービス204は、実施すると、アプリケーション218を最適化し得るアプリケーション218の関数への1つまたは複数の改善点を識別してよい。ロボット装置管理サービス204は、アプリケーション218のこの新しいバージョンをロボット装置216に送信して、ロボット装置216にアプリケーション218の新しいバージョンをインストール及び実行させてよい。あるいは、ロボット装置管理サービス204は、アプリケーション218の新しいバージョンの記憶に使用されるデータオブジェクトのネットワークアドレスを提供してよい。これによって、ロボット装置216にネットワークアドレスを使用して、データオブジェクトにアクセスさせ、アプリケーション218の新しいバージョンを取得させてよい。ある実施形態においては、ロボット装置管理サービス204は、アプリケーション218への改善点の提案を顧客に提供して、顧客が改善点を実施して、アプリケーション218の新しいバージョンを作成すべきかどうか判断するのを可能にする。顧客は、ロボット装置管理サービス204が提案した改善点のセットから、実施する1つまたは複数の改善点を選択してよい。顧客からの応答に基づいて、ロボット装置管理サービス204は、アプリケーション218のコンピュータ実行可能コードを選択された1つまたは複数の改善点を組み込むように修正し、ロボット装置216にデプロイするためにアプリケーション218の新しいバージョンを作成してよい。
図3は、少なくとも1つの実施形態による、シミュレーションサーバ316のセットを用いてロボット装置のシミュレーション環境を生成して、ロボット装置アプリケーション320の更新に使用可能なデータを取得するシステム300の説明のための例を示す。システム300において、ロボット装置管理サービス302の顧客は、ロボット装置アプリケーション320を実行するロボット装置のシミュレーションを開始し、ロボット装置アプリケーション320の更新及び最適化に使用可能な強化学習モデルを訓練する要求を、サービスフロントエンド304を通して提出する。サービスフロントエンド304を通して、顧客は、ロボット装置パラメータのセットとシミュレーションパラメータのセットとを定義してよく、これらは両方ともシミュレーション環境の生成と、ロボット装置アプリケーション320のシミュレーションの実行とに使用されてよい。
ロボット装置パラメータは、シミュレーション環境を介してテストするロボット装置の名前を含んでよい。これらのパラメータは、ロボット装置が利用するセンサと、ロボット装置の運動能力及び運動制限等をさらに含んでよい。シミュレーション環境パラメータは、シミュレーションルームの寸法、ロボット装置が遭遇するあらゆる障害物の場所、ロボット装置が相互作用し得るあらゆる物体の場所、ロボット装置の最初の位置、シミュレーション終了時のロボット装置の所望の位置、並行して実行し得るシミュレーションの数(例えば、ロボット装置アプリケーションをテストするために行われる同時シミュレーション)等を含み得る。ある実施形態においては、サービスフロントエンド304を通して、顧客は、ロボット装置用の強化学習モデルを訓練するためのカスタム設計の強化関数を規定するコンピュータ実行可能コードを定義することができる。例えば、顧客は、サービスフロントエンド304への特定のアプリケーション320のシミュレーションを開始するAPIコール(例えば、StartEvaluation()等)を介して、アプリケーション320の強化学習モデルの訓練に使用される強化関数のリソース名、評価に使用されるシミュレーション環境のリソース名、シミュレーションの終了条件(例えば、タイムアウト時間、モデル収束要件等)、並びにシミュレーションによって生成されたデータの記憶に利用されるデータオブジェクトの場所及び名前を指定してよい。
ある実施形態においては、StartEvaluation()APIコールを使用して、強化学習モデルのための新しい評価ジョブ(例えば、シミュレーション及び訓練)を作成する。StartEvaluation()APIコールは、訓練される強化学習モデルのリソース名、インタフェースを通して顧客が規定するシュレーション環境のリソース名、シミュレーションの終了条件を含むドキュメントもしくはファイルの記憶場所、及びシミュレーションのアーティファクトの記憶に使用されるデータオブジェクトを文字列として含み得る。このAPIコールに応答して、サービスフロントエンド304は、シミュレーションに対応する一意のリソース名を顧客に提供してよい。この一意のリソース名は、評価に関する情報を要求するために、または、他の動作を行うために顧客によって使用されてよい。例えば、GetEvaluation()APIコールを通して、顧客は、強化学習モデルを訓練するためのシミュレーションに関する情報を取得することができる。GetEvaluation()APIコールは、評価のリソース名を文字列として含み得る。このAPIコールに応答して、サービスフロントエンド304は、シミュレーションの詳細を含むデータオブジェクトのネットワークアドレスを提供してよい。あるいは、サービスフロントエンド304は、データオブジェクトにアクセスして、シミュレーションの詳細を取得してよく、その詳細を直接、顧客に提供してよい。
ある実施形態においては、顧客は、サービスフロントエンド304を通して、ListEvaluations()APIコールを提出して、強化学習モデルを訓練するために実行されているシミュレーションの順序付けを取得してよい。ListEvaluations()APIコールは、強化学習モデルのリソース名を文字列として含み得る。オプションで、顧客は、リソース名に加えて、インタフェースページ毎に返信される結果の最大数、結果をソートするために使用可能なフィールド(例えば、作成時刻等)、結果のソート順序(例えば、昇順、降順等)、及び特定のステータス(例えば、進行中、完了、失敗、停止中、停止済み等)のシミュレーションのみを読み出すために使用可能なフィルタを規定してよい。ある実施形態においては、顧客は、サービスフロントエンド304を通して、StopEvaluations()APIコールを提出して、強化学習モデルを訓練するための特定のシミュレーションを停止してよい。StopEvaluation()APIコールは、停止するシミュレーションのリソース名を文字列として含み得る。
ある実施形態においては、顧客は、サービスフロントエンド304へのAPIコール(例えば、ImportModel())を使用して、強化学習モデルとカスタム設計の強化関数を定義するコンピュータ実行可能コードとをインポートすることができる。APIコールは、文字列のパラメータとして、強化学習モデルの一意の名前、モデルタイプ、モデルのフレームワーク、モデルの説明、及び任意のモデルアーティファクトの記憶場所を含み得る。さらに、顧客は、顧客のアカウントからと、各利用可能な強化学習モデル詳述するロボット装置管理サービス302によって維持されるデータベースから強化学習モデルの削除を要求するDeleteModel()APIコールを提出することができる。DeleteModel()APIコールは、強化学習モデルのIDを文字列として含み得る。これは、削除する強化学習モデルの名前及びタイプ、または、削除する強化学習モデルのリソース名のいずれかであってよい。顧客は、特定の強化学習モデルの情報を要求するGetModel()APIコールも提出することができる。GetModel()APIコールは、上記のように、強化学習モデルのIDを文字列として含み得る。ある実施形態においては、顧客は、サービスフロントエンド304へのListModels()APIコールを使用して、顧客が利用可能な全ての強化学習モデルの情報を読み出すことができる。GetModel()APIは、読み出すモデルのタイプ(例えば、強化学習モデル、オブジェクト検出モデル等)、ページネーショントークン、インタフェースページで返信される結果の最大数、結果のソートに使用可能なフィールド(例えば、作成時刻等)、及び結果のソート順序(例えば、昇順、降順等)を文字列として含み得る。
ある実施形態においては、サービスフロントエンド304を通して、顧客は、ロボット装置アプリケーション320に関して訓練し得る強化学習モデルの作成を要求するCreateReinforcementLearningModel()APIコールをロボット装置管理サービス302に提出することができる。CreateReinforcementLearningModel()APIコールは強化学習モデルの一意の名前、モデルの機械学習フレームワーク(例えば、TensorFlow、MXNet、PyTorch等)、モデルの説明、モデルを使用してシミュレーションを実行するロボット装置エージェントのためのアルゴリズム、エージェントのネットワーク、及び実行する訓練の構成(例えば、モデルをどのように訓練するかを規定するデータオブジェクト等)を文字列として含み得る。
ある実施形態においては、サービスフロントエンド304を通して、顧客は、GetTrainingJob()APIコールをロボット装置管理サービス302に提出して、強化学習モデルを訓練するために実行中の訓練ジョブ(シミュレーション)に関する情報を取得することができる。GetTrainingJob()APIコールは、実行中のシミュレーションに対応するリソース名を文字列として含み得る。例えば、顧客が、強化学習モデルを訓練するためにロボット装置アプリケーション320のシミュレーションを実行する要求を提出するとき、サービスフロントエンド304は、シミュレーションの一意のリソース名を顧客に提供してよい。従って、APIコールを通して、顧客は、この一意のリソース名を指定してシミュレーションの詳細及びステータスを取得してよい。サービスフロントエンド304を通して、顧客はまた、ListTrainingJobs()APIコールを提出して、強化学習モデルを訓練するために実行中のシミュレーションの順序付けを取得してよい。ListTrainingJobs()APIコールは、強化学習モデルのリソース名、インタフェースページで返信される結果の最大数、及びページネーショントークンを文字列として含み得る。このAPIコールに応答して、サービスフロントエンド304は、シミュレーションの詳細を含むデータオブジェクトの順序付けを返信してよい。
ある実施形態においては、サービスフロントエンド304を通して、顧客は、StopTrainingReinforcementLearningModel()APIコールを提出して、特定の強化学習モデルの訓練を停止することができる。このAPIコールは、訓練を停止する強化学習モデルのリソース名を文字列として含み得る。サービスフロントエンド304を通して、顧客はまた、CloneReinforcementLearningModel()APIコールを提出して、既存の強化学習モデルのクローン作成を要求してよい。CloneReinforcementLearningModel()APIコールは、クローンを作成する強化学習モデルのリソース名、新しい強化学習モデルの一意の名前、新しい強化学習モデルのアーティファクトを記憶するデータオブジェクト、並びに新しい強化学習モデルをどのように訓練するかを規定するデータオブジェクトもしくは他のファイルを文字列として含み得る。
サービスフロントエンド304を通して、顧客は、アプリケーション320をシミュレーションし、アプリケーション320の最適化に使用可能な強化学習モデルを訓練するためのハイパーパラメータのセットを定義してよい。例えば、顧客は、シミュレーションのバッチサイズを規定してよく、バッチサイズを使用して、シミュレーションのGPU要件を決定してよい。例えば、シミュレーションに必要なGPUの数は、サービスフロントエンド304が提供するインタフェースを介して顧客によって指定されたバッチサイズに比例して増加し得る。顧客はまた、インタフェースを通して、エポック数を指定してよく、エポック数は、アプリケーション320のシミュレーションを通して生成されたデータが強化学習モデルの訓練のために処理される回数に対応し得る。同様に、インタフェースを通して、顧客は、シミュレーションのスタックサイズ、学習率、探索パラメータ、エントロピー率、割引率、損失タイプ、及び強化学習モデルの各訓練の反復間のエピソードの数を規定してよい。ある実施形態においては、インタフェースを通して、顧客はまた、シミュレーションの終了条件を規定することができる。例えば、顧客は、シミュレーションの開始から、シミュレーションの結論または失敗までの実行の最大時間または最大回数を含む、シミュレーションを終了する基準を指定することができる。
ある実施形態においては、インタフェースを通して、顧客は、シミュレーション環境を規定することができる。例えば、サービスフロントエンド304は、インタフェースを通して、アプリケーション320をシミュレーションするためのシミュレーション環境の作成に使用され得る異なるシミュレーション環境テンプレートを顧客に提示してよい。インタフェースを通して、顧客は、シミュレーション環境テンプレートのいずれかを選択及び修正して、アプリケーション320のシミュレーション及びテストと強化学習モデルの訓練に使用するシミュレーション環境を規定してよい。さらに、顧客は、強化学習モデルの名前と、強化学習モデルを訓練するために使用するカスタム設計の強化関数とを規定してよい。顧客は、インタフェースを通して、アプリケーション320、カスタム設計の強化関数、及び 強化学習モデルを記憶するためにオブジェクトベースのデータストレージサービス318内のデータオブジェクトのプロビジョニングを要求することができる。インタフェースを通して、顧客はまた、顧客に代って、データオブジェクトを含む他のサービスでアクションを実行する許可をロボット装置に与えるために使用され得る任意のアクセス制御ポリシーを識別してよい。ある実施形態においては、インタフェースを通して、顧客はまた、アプリケーション320を開発するために構成された開発環境を作成することができる。インタフェースを通して、顧客は、ロボット装置パラメータと、顧客が開発したいシミュレーションアプリケーションとを構築及びまとめるために使用可能なリソースを有する仮想コンピューティングインスタンスタイプ(例えば、入手可能なCPU、入手可能なGPU、記憶容量等を含むが、これらに限らない仮想コンピューティングインスタンスを含むリソース)を選択することができる。インタフェースを通して、顧客はまた、顧客のシミュレーション環境内でアプリケーション320の実行を通して任意のアクティビティの監視を有効にしてよい。
サービスフロントエンド304は、強化学習モデルの訓練とアプリケーション320の最適化のためのシミュレーション環境の作成を開始する要求をロボット装置管理サービス302のシミュレーション制御サブシステム306に送信してよい。シミュレーション制御サブシステム306は、ハードウェア及びソフトウェアを使用して実装されるコンピュータシステム、またはコンピュータシステムの抽象化(ハイパーバイザを介して動作する1つまたは複数の仮想マシン等)で実施され、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、コンピュータシステムに本明細書に記載の動作を行わせる実行可能命令を記憶するメモリとを備えることができる。シミュレーション制御サブシステム306は、仮想コンピュータシステム管理サービス312のシミュレーションワークフロー管理314に要求を提出するとき、認証に使用可能な認証情報のセットを認証情報管理サブシステム308から取得してよい。認証情報のセットは、ロボット装置管理サービス302によって生成されてよく、ロボット装置管理サービス302の他の構成要素がコンピューティングリソースサービスプロバイダによって提供される他のサービスにアクセスするのを可能にするように認証情報管理サブシステム308によって維持されてよい。仮想コンピュータシステム管理サービス312が説明目的で本開示を通して利用されるが、これらのサービスによって提供された他のリソースを使用してアプリケーション320の並列シミュレーションを実行するために他のサービスを利用してよいことに留意されたい。これらの他のサービスは、並列シミュレーションを起動するためのソフトウェアコンテナインスタンスをプロビジョニングするために使用し得るコンテナサービスを含んでよく、シミュレーションデータを維持するため、シミュレーションの構成要素を実行するため等に代替ファイルシステムを利用してよい。
認証情報管理サブシステム308は、ハードウェア及びソフトウェアを使用して実装されるコンピュータシステム、またはコンピュータシステムの抽象化(ハイパーバイザを介して動作する1つまたは複数の仮想マシン等)で実施され、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、コンピュータシステムに本明細書に記載の動作を行わせる実行可能命令を記憶するメモリとを備えることができる。一部の例では、認証情報管理サブシステムが維持している認証情報は、顧客によって提供され、それによって、認証情報は、シミュレーション制御サブシステム306によって使用されて、仮想コンピュータシステム管理サービス312内の顧客のリソースとアプリケーション320のシミュレーションを可能にする他のサービスとへのアクセスを可能してよい。あるいは、認証情報管理サブシステム308が維持している認証情報は、ロボット装置管理サービス302自体によって生成されてよく、それによって、シミュレーションサーバ316と、これらのシミュレーションサーバ316にプロビジョニングされた仮想コンピューティングインスタンスとは、ロボット装置管理サービス302の顧客が指定したアプリケーションをシミュレーションするのに使用可能なロボット装置管理サービス302のリソースのプールの一部である。
シミュレーション制御サブシステム306は、仮想コンピュータシステム管理サービス312のシミュレーションワークフローマネージャ314にアプリケーション320のシミュレーションを構成する要求を送信してよい。要求は、シミュレーションのサービスフロントエンド304を通して顧客によって定義されたパラメータのセットを含み得る。さらに、要求は、認証情報管理サブシステム308からの認証情報のセットと、オブジェクトベースのデータストレージサービス318のデータオブジェクトに対応するネットワークアドレスとを含んでよく、データオブジェクトには、アプリケーション320が記憶され、且つ、シミュレーションが完了するたびに強化学習モデルが記憶される。要求に応答して、シミュレーションワークフローマネージャ314は、認証情報管理サブシステム308とインタラクトして、シミュレーション制御サブシステム306から取得された認証情報のセットを検証してよい。認証情報のセットが有効な場合、シミュレーションワークフローマネージャ314は、アプリケーション320のシミュレーションの構成を開始してよい。シミュレーションワークフローマネージャ314は、ハードウェア及びソフトウェアを使用して実装されるコンピュータシステム、またはコンピュータシステムの抽象化(ハイパーバイザを介して動作する1つまたは複数の仮想マシン等)で実施され、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、コンピュータシステムに本明細書に記載の動作を行わせる実行可能命令を記憶するメモリとを備えることができる。
要求に応答して、シミュレーションワークフローマネージャ314は、オブジェクトベースのデータストレージサービス318にアクセスして、アプリケーション320を取得してよく、アプリケーション320は、サービスフロントエンド304を介して顧客が指定したカスタム設計の強化関数を使用して、顧客が指定した強化学習モデルの訓練に基づいてシミュレーション及び最適化される。さらに、シミュレーションワークフローマネージャ314は、サービスフロントエンド304を介して顧客が提供した様々なパラメータと、シミュレーションの様々な構成要素のシステム要件とを評価して、シミュレーション環境でのアプリケーション320の実行をサポートし、シミュレーション環境を生成するために、どの仮想コンピューティングインスタンスをプロビジョニングするかを決定してよい。例えば、シミュレーションワークフローマネージャ314は、取得されたパラメータを評価して、シミュレーションを実行及びサポートするための計算要件(例えば、メモリ、CPU要件、GPU要件等)を決定してよく、また、実行される各並列シミュレーションの異なるパラメータ(例えば、各並列シミュレーションの異なるシミュレーション環境パラメータ、各並列シミュレーションに使用される構成要素、各並列シミュレーションに関して訓練される強化学習モデル等)に基づいて、強化学習モデルを訓練するために実行する並列シミュレーションの回数を決定してよい。例えば、シミュレーションワークフローマネージャ314は、シミュレーション環境内でシミュレーションを実行し、ロボット装置のアクションを処理するのに必要なシミュレーションの構成要素のセット(例えば、物理エンジン、レンダリングエンジン等)を識別してよい。これらの計算要件に基づいて、シミュレーションワークフローマネージャ314は、シミュレーションサーバ316のセット内に仮想コンピューティングインスタンスのセットをプロビジョニングして、アプリケーション320の並列シミュレーションを実行してよい。
ある実施形態においては、シミュレーションワークフローマネージャ314は、構成要素のシステム要件と仮想コンピューティングインスタンスの能力とに基づいて、シミュレーションの様々な構成要素をシミュレーションサーバ316上の異なる仮想コンピューティングインスタンス間に割り当てる。例えば、シミュレーションワークフローマネージャ314は、仮想コンピューティングインスタンス間に分配され得るシミュレーションの離散化可能なサブセットを構成要素のセットから作成してよい。シミュレーションワークフローマネージャ314は、シミュレーションのサブセットに対応する構成要素の第1のセットを仮想コンピューティングインスタンス内に配置してよい。仮想コンピューティングインスタンスに追加の構成要素のための容量が残っている場合、シミュレーションワークフローマネージャ314は、同じ仮想コンピューティングインスタンス内に構成要素の次のセットを割り当ててよい。そうでない場合、シミュレーションワークフローマネージャ314は、シミュレーションの次のサブセットを別の仮想コンピューティングインスタンスに割り当ててよい。シミュレーションワークフローマネージャ314は、シミュレーションの全ての構成要素がシミュレーションサーバ316内の様々な仮想コンピューティングインスタンス間に割り当てられるまで、このプロセスを継続してよい。
ある実施形態においては、シミュレーションワークフローマネージャ314は、シミュレーションに利用される各仮想コンピューティングインスタンス間に、シミュレーションの様々な構成要素間の安全な通信を可能にするネットワークインタフェースを確立する。シミュレーションワークフローマネージャ314は、顧客自身の仮想プライベートネットワーク(要求を介して識別される)に、及び/またはオンプレミスネットワーク内で動作している顧客自身の仮想コンピューティングインスタンスにシミュレーションをマッピングしてよい。これは、シミュレーションの実行に必要なリソースがシミュレーション環境内でアプリケーション320を実行している構成要素に利用可能であることを確実にする。ある実施形態においては、シミュレーションワークフローマネージャ314は、シミュレーションサーバ316内にロボットアプリケーションコンテナを維持し、ロボットアプリケーションコンテナは、アクション実行の前後のロボット装置とシミュレーション環境との状態に基づいて、シミュレーション環境内でミュレーションされるロボット装置が行ったアクションに基づいた強化学習モデルの訓練を行う。強化学習モデルの訓練は、行われたアクション、初期状態、及びアクションの実行を介して達成した状態に対応する、カスタム設計の強化関数を介して決定された報酬価値をさらに考慮してよい。ロボットアプリケーションコンテナは、アプリケーション320のシミュレーションを利用し、強化学習モデルの更新を続けるために使用し得る新しい状態-アクション-報酬のデータを取得するために、更新された強化モデルをシミュレーションアプリケーションコンテナに提供してよい。
シミュレーションワークフローマネージャ314は、シミュレーションを実行する仮想コンピューティングインスタンスとシミュレーションサーバ316とを監視して、シミュレーションが成功裏に完了することを確実にしてよい。例えば、シミュレーションワークフローマネージャ314は、各仮想コンピューティングインスタンスのCPU利用、GPU利用、メモリ利用等を測定して、起こり得る問題があるかどうかを判断してよい。シミュレーションワークフローマネージャ314はまた、各仮想コンピューティングインスタンスから、仮想コンピューティングインスタンスの性能の問題の検出に使用され得る測定値及び/または統計と共に証明メッセージを要求してよい。ある実施形態においては、シミュレーションワークフローマネージャ314が仮想コンピューティングインスタンスは失敗した、またはその他何であろうと動作不能であると決定した場合、シミュレーションワークフローマネージャ314は、シミュレーションの構成要素のいずれかが失敗によって影響を受けるかどうかを判断してよい。影響を受ける場合、シミュレーションワークフローマネージャ314は、影響を受ける構成要素のそれぞれのシステム要件を決定してよく、これらのシステム要件に基づいて、仮想コンピューティングインスタンスの既存のセットが影響を受けるこれらの構成要素を収容できるかどうかを判断してよい。収容できる場合、シミュレーションワークフローマネージャ314は、既存の動作中の仮想コンピューティングインスタンス間で影響を受ける構成要素を移動してよい。しかしながら、仮想コンピューティングインスタンスの既存のセットがシミュレーションの影響を受ける構成要素を収容できない場合、シミュレーションワークフローマネージャ314は、シミュレーションの影響を受けるこれらの構成要素を収容するために新しい仮想コンピューティングインスタンスをシミュレーションサーバ316間にプロビジョニングしてよい。シミュレーションワークフローマネージャ314は、影響を受ける構成要素を新しい仮想コンピューティングインスタンスに移動し、アプリケーション320のシミュレーションを再開してよい。
同様に、シミュレーションワークフローマネージャ314が、シミュレーションの構成要素のワークロードの急上昇を検出した場合、シミュレーションワークフローマネージャ314は、シミュレーションの構成要素のワークロードのこの急上昇は、シミュレーションの構成要素間の待ち時間に悪い影響を与えることなくシミュレーションを成功裏に完了することを確実にするために追加のリソースを必要とするかどうかを判断してよい。シミュレーションの構成要素のワークロードの急上昇の結果、追加のリソースが必要であると判断された場合、シミュレーションワークフローマネージャ314は、シミュレーションの成功裏の完了を確実にするためにどの構成要素を新しい仮想コンピューティングインスタンスに移動させる必要があるかを決定してよい。シミュレーションワークフローマネージャ314は、これらの構成要素のシステム要件を決定してよく、これらのシステム要件に基づいて、これらの構成要素を収容できる新しい仮想コンピューティングインスタンスをプロビジョニングしてよい。シミュレーションワークフローマネージャは、識別された構成要素を新しい仮想コンピューティングインスタンスに移動し、アプリケーション320のシミュレーションを再開してよい。
ある実施形態においては、シミュレーションの実行を介して仮想コンピューティングインスタンスによって生成されたシミュレーションデータは、コンピューティングリソース監視サービスに送信され、コンピューティングリソース監視サービスに記憶されて、ロボット装置管理サービス302のシミュレーション制御サブシステム306によってアクセスされる。シミュレーション制御サブシステム306は、コンピューティングリソース監視サービスからシミュレーションデータを取得し、そのデータをシミュレーションデータレポジトリ310に記憶してよく、そこで、データはロボット装置管理サービス302の顧客が利用できるようになる。従って、サービスフロントエンド304を通して、顧客は、シミュレーションデータレポジトリからシミュレーションデータを取得してよく、データに基づいて、シミュレーションのステータスを決定及び/またはシミュレーション及びアプリケーション320を修正してよい。ある実施形態においては、シミュレーションサーバ316は、1つまたは複数の可視化アプリケーションを介して、リアルタイムでシミュレーションへのアクセスを提供する。これは、シミュレーション実行中に、顧客がサービスフロントエンド304を介して、シミュレーションの性能を評価するのを可能にし得る。
シミュレーションワークフローマネージャ314は、終了条件を満たしたかどうかを判断するためにシミュレーションの実行を監視してよい。例えば、シミュレーション実行のための最大許容時間が経過すると、シミュレーションワークフローマネージャ314は、シミュレーションを終了して、強化学習モデルの最新バージョンとアプリケーション320とをオブジェクトベースのデータストレージサービス318のデータオブジェクトに送信してよい。あるいは、シミュレーションの反復の最大数に達すると、終了条件が満たされる場合もある。一部の例では、終了条件は、シミュレーションの反復の最小回数にわたるシミュレーション環境でのアクションの実行を通してシミュレーションの平均報酬価値の達成によって規定されてよい。これらの終了条件のいずれかが満たされると、シミュレーションワークフローマネージャ314は、最新の強化学習モデルに基づいてアプリケーション320を更新してよく、アプリケーション320と最新の強化学習モデルとをオブジェクトベースのデータストレージサービス318に記憶してよい。さらに、シミュレーションワークフローマネージャ314は、アプリケーション320のシミュレーションが完了したことを示す通知をシミュレーション制御サブシステム306に送信してよい。
シミュレーション制御サブシステム306は、シミュレーションが完了したことを、サービスフロントエンド304を介して顧客に通知してよい。顧客は、サービスフロントエンド304を通して、最新の強化学習モデルとアプリケーション320をと評価して、アプリケーション320への最適化を維持すべきかどうかを判断してよい、または、アプリケーション320を修正してよい。さらに、顧客は、代替の強化学習モデルと、これらの代替の強化学習モデルに基づいたアプリケーション320への新しい更新とを取得するために新しいパラメータと新しいカスタム設計の強化関数を規定してよい。顧客が新しい強化学習モデルとアプリケーション320とに満足すると、顧客は、ロボット装置のセットにアプリケーション320をインストールする要求を、サービスフロントエンド304を介して提出してよい。
図4は、少なくとも1つの実施形態による、シミュレーションサーバ402がロボット装置アプリケーションのシミュレーションを実行し、シミュレーションの実行を通して生成されたデータを処理するシステム400の説明のための例を示す。システム400において、シミュレーションサーバ402は、シミュレーションエージェント404を備え、シミュレーションエージェント404は、シミュレーションの様々な構成要素を管理し、ロボット装置管理サービスの顧客が提供したカスタム設計の強化関数を用いて強化学習モデルの訓練を指揮する。シミュレーションエージェント404は、シミュレーションサーバ402のハードウェア及びソフトウェア、またはその抽象化(ハイパーバイザを介して動作する1つまたは複数の仮想マシン等)を用いて実施され、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、コンピュータシステムに本明細書に記載の動作を行わせる実行可能命令を記憶するメモリとを備えることができる。ある実施形態においては、シミュレーションエージェント404は、本明細書に記載の技術に従って関数を実行するように(例えば、コンテナインスタンスに関連付けられたリソースによって)実行可能なコードを含むソフトウェアコンテナを用いて構成されたコンテナインスタンスである。ある実施形態においては、「コンテナインスタンス」は、ソフトウェアコンテナを起動及び実行するように構成されたコンピュータシステムインスタンス(オペレーティングシステムを実行する物理コンピュータシステム等、仮想または非仮想)を指す。
シミュレーションエージェント404は、ロボット装置アプリケーションの強化学習モデルを訓練するために使用可能な訓練アプリケーションを実行するためにロボットアプリケーションコンテナ406をプロビジョニングしてよい。ロボットアプリケーションコンテナ406は、シミュレーション環境の初期状態を指定するタプルまたは他のデータ、初期状態に応答して行われるアクション、シミュレーション環境の結果として生じる状態、及びシミュレーション環境の結果として生じる状態に基づいたアクションに割り当てられた報酬価値を利用し得るコンピュータ実行可能コードを含んでよい。ある実施形態においては、ロボットアプリケーションコンテナ406の訓練アプリケーションは、シミュレーション環境内でのアクションの実行の結果として投入されたリングバッファ等のメモリバッファから、このデータを取得してよい。訓練アプリケーションは、定期的に、またはトリガイベント(例えば、メモリバッファが最大容量に近いまたは最大容量にある等)に応答してメモリバッファからデータを取得してよい。ロボットアプリケーションコンテナ406は、訓練アプリケーションへの入力としてデータを利用して、シミュレーション中のロボット装置アプリケーションの強化学習モデルを更新してよい。ロボットアプリケーションコンテナ406は、更新された強化モデルをシミュレーションアプリケーションコンテナ408に送信してよく、シミュレーションアプリケーションコンテナ408は、更新された強化モデルを使用して、ロボット装置アプリケーションの別のシミュレーションを実行し、より多くのデータを生成してよい。
シミュレーションエージェント404はまた、ロボットアプリケーションコンテナ406が強化学習モデルを更新するために使用可能なデータを生成するシミュレーションアプリケーションを実行するためにシミュレーションアプリケーションコンテナ408をプロビジョニングしてよい。シミュレーションエージェント404は、ロボット装置アプリケーションと、シミュレーション環境で実行するために顧客が規定した強化関数とをシミュレーションアプリケーションコンテナ408に提供してよい。さらに、シミュレーションエージェント404は、シミュレーションアプリケーションを通してシミュレーションアプリケーションコンテナがシミュレーション環境を生成し、ロボット装置アプリケーションと強化関数とを使用してシミュレーションを実行するのを可能にするために、ロボット装置とシミュレーションとに関して顧客が定義したパラメータのセットを提供してよい。
ある実施形態においては、シミュレーションアプリケーションコンテナ408は、無作為化強化学習モデルを使用してシミュレーションを開始し、それによって、シミュレーションアプリケーションコンテナは、モデルを使用して、シミュレーション環境の初期状態に基づいて、実行すべきランダムアクションを選択する。シミュレーションアプリケーションコンテナ408は、アクションを実行して、シミュレーション環境の結果として生じる状態を決定してよい。強化関数を使用して、シミュレーションアプリケーションコンテナ408は、初期状態、行われたアクション、及びシミュレーション環境の結果として生じる状態を含むタプルの対応する報酬価値を決定してよい。シミュレーションアプリケーションコンテナ408は、このデータ点をメモリバッファに記憶してよく、シミュレーション環境の現在の状態に基づいて別のアクションを実行してよい。このプロセスを通して、シミュレーションアプリケーションコンテナ408は、データ点のメモリバッファへの追加を継続してよい。ある実施形態においては、シミュレーションアプリケーションコンテナ408は、ポリシー関数を利用してシミュレーションの初期状態を識別し、その初期状態を使用して、適切なアクションを選択してよい。追加で、または代替的に、シミュレーションアプリケーションコンテナ408は、価値関数を利用して、状態とアクションの対のセットから、初期状態とその状態に応答して実行可能な対応するアクションとを含む対を選択してよい。これは、シミュレーションアプリケーションにアクションを行わせるシミュレーションアプリケーションへの入力として使用されてよい。
シミュレーションアプリケーションコンテナ408は、ロボットアプリケーションコンテナ406から更新された強化学習モデルを取得してよい。更新された強化学習モデルを取得することに応答して、シミュレーションアプリケーションコンテナ408は、シミュレーションの反復をもう一度を行って、強化学習モデルの更新の継続に使用可能な新しいデータ点を生成してよい。ロボットアプリケーションコンテナ406は、強化学習モデルを評価して、終了条件を満たしたかどうかを判断してよい。例えば、メモリバッファから取得したデータ点に基づいて、ロボットアプリケーションコンテナ406が、強化学習モデルは最適解に収束したと判断する場合、ロボットアプリケーションコンテナ406は、シミュレーションの完了を示す通知をシミュレーションエージェント404に送信してよい。同様に、ロボットアプリケーションコンテナ406は、メモリバッファからの処理したデータ点の数に基づいて、またはシミュレーションの実行の時間制限が経過したとの判断に応答して、終了条件が満たされたと判断してよい。ロボットアプリケーションコンテナ406及びシミュレーションアプリケーションコンテナ408は、シミュレーション更新をクライアントアカウント416に提供してよく、顧客をその更新にアクセスして、シミュレーションの状態を判断してよい。
ある実施形態においては、シミュレーションパラメータ及びロボット装置パラメータに基づいて、シミュレーションエージェント404は、1つまたは複数の可視化アプリケーション410を実行して、顧客が実行中のシミュレーションとインタラクトし、可視化するのを可能にする。1つまたは複数の可視化アプリケーション410は、シミュレーションのグラフィカル表現を生成してよく、グラフィカル表現は、シミュレーション環境のグラフィカル表現とロボット車両のグラフィカル表現とを含んでよく、ロボット車両のアクションは、シミュレーション環境のグラフィカル表現上に表されてよい。1つまたは複数の可視化アプリケーション410は、シミュレーション環境とロボット装置との生成されたグラフィカル表現を、シミュレーションサーバ402の可視化クライアント414に提供してよい。可視化クライアント414は、シミュレーションサーバ402のハードウェア及びソフトウェア、またはその抽象化(ハイパーバイザを介して動作する1つまたは複数の仮想マシン等)を用いて実施され、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、コンピュータシステムに本明細書に記載の動作を行わせる実行可能命令を記憶するメモリとを備えることができる。可視化クライアント414は、ロボット装置管理サービスのサービスフロントエンドを通してアクセスされてよく、サービスフロントエンドは、顧客が、可視化クライアント414にアクセスし、インタフェースを通してシミュレーションのグラフィカル表現を見るのを可能にし得る。
シミュレーションエージェント404はまた、シミュレーションサーバ402内でメトリクスライタ412を実行する。メトリクスライタ412は、シミュレーションサーバ402のハードウェア及びソフトウェア、またはその抽象化(ハイパーバイザを介して動作する1つまたは複数の仮想マシン等)を用いて実施され、1つまたは複数のプロセッサと、1つまたは複数のプロセッサによって実行されると、コンピュータシステムに本明細書に記載の動作を行わせる実行可能命令を記憶するメモリとを備えることができる。メトリクスライタ412は、ロボットアプリケーションコンテナ406及びシミュレーションアプリケーションコンテナ408からシミュレーションデータを取得してよく、このシミュレーションデータを利用して、シミュレーション環境でシミュレーションされるロボット装置の性能に対応するメトリクスを含むデータログのセットを生成してよい。メトリクスライタ412は、これらのデータログをコンピューティングリソース監視サービス418に送信してよく、コンピューティングリソース監視サービス418は、そのデータログを顧客がロボット装置管理サービスを介して利用できるようにしてよい。
図5は、少なくとも1つの実施形態による、ロボット装置アプリケーションを使用して、ロボット装置のシミュレーションのための強化学習モデルを生成するインタフェース500の説明のための例を示す。インタフェース500は、選択パネル502を備えてよく、選択パネル502によって、ロボット装置管理サービスの顧客は、異なるオプションのメニューから、新しい強化学習モデルを作成するオプション、または特定のシミュレーション環境で利用される異なる強化学習モデルの報酬価値を含むリーダーボードを生成するオプションを選択してよい。ある実施形態においては、ロボット装置管理サービスは、リーダーボードを規定及び管理するための1つまたは複数のAPIを示し、APIは、選択パネル502のリーダーボードオプションの選択に応答して、インタフェース500を介して提示されてよい。例えば、顧客は、CreateLeaderboard()APIコールを提出して、新しいパブリックまたはプライベートのリーダーボードの作成を要求してよい。CreateLeaderboard()APIコールは、リーダーボードの一意の名前、リーダーボードの説明、リーダーボードを閉じる前のエポックタイム、リーダーボードの資格を得るための最小実行回数、リーダーボードがパブリックかプライベートか、リーダーボードがプライベートである場合のアクセスコード、及びシミュレーション環境に対応するリソース名を、文字列として含み得る。顧客はまた、DeleteLeaderboard()APIコールを提出することができ、DeleteLeaderboard()APIコールは、文字列として、削除するリーダーボードの一意の名前を含み得る。顧客は、インタフェース500を通してCloseLeaderboard()APIコールを提出して、既存のリーダーボードを閉じてよい。CloseLeaderboard()APIコールは、閉じるリーダーボードの名前を文字列として含み得る。
一部の例においては、顧客は、インタフェース500を通してJoinLeaderboard()APIコールを提出して、既存のパブリックまたはプライベートのリーダーボードに参加してよい。JoinLeaderboard()APIコールは、顧客が参加したいリーダーボードの名前を文字列として含み得る。さらに、顧客はプライベートのリーダーボードに参加するためのアクセスコードを文字列の一部として提供してよい。顧客はまた、顧客によって維持され、ロボット装置アプリケーションのシミュレーションを通して訓練される強化学習モデルを承諾できるリーダーボードの順序付けを取得するためにListEligibleLeaderboardsForModel()APIコールを提出してよい。このAPIコールは、強化学習モデルのリソース名、ページネーショントークン、及びインタフェースページ毎に提示される結果の最大数を、文字列として含み得る。このAPIコールに応答して、ロボット装置管理サービスは、どのロボット装置アプリケーションとシミュレーション環境とが強化学習モデルに使用されてよいかを決定してよく、これらのアプリケーション及びシミュレーション環境と関連付けられた任意のリーダーボードを識別してよい。
インタフェース500を通して、顧客はまた、高いスコア(例えば、報酬価値)、リーダーボードに関連付けられたシミュレーションで利用される強化学習モデル等を含むリーダーボードデータを要求するGetLeaderboard()APIコールを提出してよい。GetLeaderboard()APIコールは、顧客がデータを取得したいリーダーボードの名前を文字列として含み得る。顧客はまた、指定されたリーダーボード提出の順序を要求するListLeaderboardSubmissions()APIコールを提出してよい。このAPIコールへの応答は、ランクによってソートされて返信されてよい。APIコールは、リーダーボート名、ページネーショントークン、及びインタフェースページ毎に返信される結果の最大数を、文字列として含み得る。インタフェース500を通して、顧客はまた、現在、リーダーボード上にあるユーザの提出を取得するためにGetUserSubmission()APIコールを提出してよい。GetUserSubmission()APIは、顧客がユーザの提出を取得したいリーダーボードの名前を文字列として含み得る。一部の例では、顧客は、ユーザの提出に対応する特定の識別子を指定してよい。顧客はまた、顧客がアクセスできるリーダーボードの順序付けを取得するためにListLeaderboards()APIコールを提出してよい。このAPIコールは、ロボット装置管理サービスが維持するリーダーボードを通して、ページネーショントークンと、インタフェースページ毎に返信される結果の最大数とを検索するためのフィルタを文字列として含み得る。さらに、顧客は、顧客による提出を含むリーダーボードを返信するかどうかの指示をブーリアンとして提供してよい。
顧客が、選択パネル502から強化学習オプションを選択する場合、顧客は、強化学習ウィンドウ504を提示されてよい。強化学習ウィンドウ504を通して、ロボット装置管理サービスは、顧客に強化学習モデルウィンドウ506を提示してよい。強化学習モデルウィンドウ506は、特定のロボット装置アプリケーションの強化学習モデルの順序付けを顧客に提供してよい。例えば、強化学習モデルウィンドウ506は、各利用可能なモデルに関して、モデル名、モデルの説明、モデルのステータス(例えば、終息済み、シミュレーションを介して更新中等)と、強化学習モデルを作成した時とを提示してよい。あらゆる利用可能なモデルに関して詳細を提供することに加えて、強化学習モデルウィンドウ506は、新しい強化学習モデルを生成するオプションを顧客に提示してよい。例えば、図5に示すように、強化学習モデルウィンドウ506は、モデル作成ボタン508を備えてよく、モデル作成ボタン508を選択すると、ロボット装置管理サービスに、強化学習モデルを作成するための様々なオプションを顧客に提示するように強化学習ウィンドウ504を更新させてよい。
図6は、少なくとも1つの実施形態による、ロボット装置アプリケーションとアプリケーションを最適化する強化学習モデルとを使用して、ロボット装置のシミュレーションを作成するためのインタフェース600の説明のための例を示す。インタフェース600は、図5に関連して上述した要素と類似の要素を共有してよい。例えば、インタフェース600は、上記選択パネル502と類似の選択パネル602を備えてよい。インタフェース600は、モデル作成ウィンドウ604を備えてよく、モデル作成ウィンドウ604は、図5に関連して上述したモデル作成ボタン508を選択することに応答して顧客に提示されてよい。
モデル作成ウィンドウ604を使用して、顧客にモデル詳細ウィンドウ606を提示してよく、モデル詳細ウィンドウ606を通して、顧客は、モデル名エントリボックス608を通して、所望のシミュレーションの所望名を規定してよい。さらに、顧客は、モデル説明エントリボックス610を通して、シミュレーションの説明を提供してよい。一部の例では、モデル説明エントリボックス610のエントリは要求されない。モデル詳細ウィンドウ606を通して、顧客はまた、顧客の代わりに他のコンピューティングリソースサービスでアクションを行う許可をロボット装置に与えるために使用され得るアクセス制御ポリシーを規定してよい。さらに、モデル詳細ウィンドウ606を通して、顧客は、ロボット装置アプリケーション、強化学習モデル、及びロボット装置アプリケーションのシミュレーションを通して生成された他のデータを記憶するためにデータオブジェクトを選択、または他の方法でプロビジョニングしてよい。モデル詳細ウィンドウ606は、顧客にポリシー及びデータオブジェクト作成ボタン612を提示してよく、顧客は、このボタンを選択して、アクセス制御ポリシーを規定し、シミュレーションに関連付けられるデータオブジェクトを選択もしくは他の方法でプロビジョニングしてよい。
モデル作成ウィンドウ604はまた、環境シミュレーションウィンドウ614を顧客に提示するために使用されてよく、環境シミュレーションウィンドウ614を通して、顧客は、シミュレーションのためのシミュレーション環境を規定してよい。ある実施形態においては、ロボット装置管理サービスは、幾つかのデフォルトのシミュレーション環境を提供してよく、これらは、カスタマイズされたシミュレーション環境を作成するために顧客によってテンプレートとして使用されてよい。例えば、ロボット装置管理サービスは環境シミュレーションウィンドウ614に、1つまたは複数のシミュレーション環境テンプレート616を投入してよく、顧客はそのテンプレートから選択してよい。顧客が環境シミュレーションウィンドウ614からシミュレーション環境テンプレート616を選択した場合、ロボット装置管理サービスは、顧客がテンプレートに修正を行うのを可能にしてよい。これは、動的障害物または静的障害物をシミュレーション環境に加えることと、シミュレーション環境のレイアウトを変更すること等を含んでよい。ある実施形態においては、インタフェース600を通して、顧客は、選択に利用可能なシミュレーション環境の順序付けを取得するためにListEnvironments()APIコールを提出することができる。さらに、インタフェース600を通して、顧客は、選択されたシミュレーション環境のメタデータを取得するためにGetEnvironment()APIコールを提出してよい。GetEnvironment()APIコールは、選択されたシミュレーション環境のリソース名を文字列として含んでよい。メタデータは、上記のように、シミュレーション環境のパラメータを含み得る。
図7は、少なくとも1つの実施形態による、強化学習モデルを訓練するカスタム設計の強化関数を作成するインタフェース700の説明のための例を示す。インタフェース700は、上記のインタフェースと同様、選択パネル702を備えてよく、選択パネル702によって、ロボット装置管理サービスの顧客は、異なるオプションのメニューから、新しい強化学習モデルを作成するオプション、または特定のシミュレーション環境で利用される異なる強化学習モデルの報酬価値を含むリーダーボードを生成するオプションを選択してよい。インタフェース700はまた、報酬関数ウィンドウ704を備えてよく、報酬関数ウィンドウ704を通して、顧客は、シミュレーション環境のアクション及び状態の報酬価値を規定するための強化関数(そうでない場合、報酬関数として知られる)を規定してよい。
報酬関数ウィンドウ704を通して、ロボット装置管理サービスは、顧客にコードエディタ710を提示してよく、コードエディタ710を通して、顧客は、コンピュータ実行可能コードを使用して、強化学習モデルを訓練するための強化学習関数を規定してよい。コードエディタ710を通して、顧客は、任意のプログラム言語(例えば、Python、C++等)を使用して、コンピュータ実行可能コードを生成してよい。顧客が、コードエディタ710を通して、強化関数を規定するコンピュータ実行可能コードを定義すると、顧客は、コードエディタバナー708を使用して、強化関数の検証を要求してよい、またはコードエディタをリセットしてよい。コードエディタバナー708を使用して、強化関数の検証を要求する場合、ロボット装置管理サービスは、コンピュータ実行可能コードを評価して、コンピュータ実行可能コードのコンパイルを妨害し得るあらゆるエラーを識別してよい。さらに、ロボット装置管理サービスは、状態-アクションタプルのセットの報酬価値を規定するコンピュータ実行可能コードの1つまたは複数のスニペットを識別してよい。ロボット装置管理サービスは、以下により詳細に記載するコードスニペットバナー706に関連付けられたウィンドウにコードのこれらのスニペットを提供してよい。ある実施形態においては、顧客は、インタフェース700を通して、TestReinforcementFunction()APIコールを提出することができ、このAPIコールを使用して、コードエディタ710を通して規定した強化関数をテストすることができる。TestReinforcementFunction()APIコールは、コードエディタ710を通して提供されたコンピュータ実行可能コードを文字列として含み得る。このAPIコールに応答して、ロボット装置管理サービスは、コンピュータ実行可能コードの評価から得られたあらゆる識別されたエラーを提供してよい。
図8は、少なくとも1つの実施形態による、強化学習モデルを訓練するカスタム設計の強化関数を作成するインタフェース800の説明のための例を示す。インタフェース800は、図7に関連して記載したインタフェース700と類似していてよい。例えば、インタフェース800は、選択パネル802を備えてよく、選択パネル802によって、ロボット装置管理サービスの顧客は、異なるオプションのメニューから、新しい強化学習モデルを作成するオプション、または特定のシミュレーション環境で利用される異なる強化学習モデルの報酬価値を含むリーダーボードを生成するオプションを選択してよい。さらに、インタフェース800は、コードエディタ810、コードエディタバナー808、及びコードスニペットバナー806を含む報酬関数ウィンドウ804を備えてよい。
上記のように、ロボット装置管理サービスは、コードエディタ810を通して提供されたコンピュータ実行可能コードを評価して、強化関数の規定に使用されるコード内の関数を識別してよい。ロボット装置管理サービスは、識別された関数を提示するように基本機能ウィンドウ812を更新してよい。ある実施形態においては、ロボット装置管理サービスは、識別され、基本機能ウィンドウ812を通して提示された関数を含むコンピュータ実行可能コードを評価して、強化関数を強化するために使用され得る提案のセットを識別してよい。これらの提案は、類似のロボット装置を用いて選択されたシミュレーション環境に適用された強化関数のコンピュータ実行可能コードを生成するコードエディタ810の過去の使用に基づいてよい。これらの提案は、拡張機能ウィンドウ814を介して顧客に提示されてよく、拡張機能ウィンドウ814は、基本機能ウィンドウ812に指定された関数の修正されたバージョンを含み得る。
ロボット装置管理サービスは、報酬関数ウィンドウ804を通して、コード挿入ボタン816を提供してよい。顧客は、コード挿入ボタン816を選択して、拡張機能ウィンドウで指定された関数のコードエディタ810への挿入を要求してよい。これによって、ロボット装置管理サービスに、基本機能ウィンドウ812の更新に使用されるコードのスニペットを、拡張機能ウィンドウ814からのコードのスニペットで置き換えさせてよい。顧客は、コードエディタバナーを使用して、拡張機能ウィンドウ814から挿入されたコードのスニペットを含む強化関数の検証を要求してよい。強化関数が、成功裏に検証され、ロボット装置管理サービスによってコンパイルされると、ロボット装置管理サービスは、インタフェースを通して指定されたデータオブジェクトに強化関数を追加してよい。
図9は、少なくとも1つの実施形態による、強化学習モデルを訓練する機械学習フレームワークを指定するためのインタフェース900の説明のための例を示す。インタフェース900は、図5~8に関連して上述した他のインタフェースと類似の要素を備えてよい。例えば、インタフェース900は、選択パネル902を備えてよく、選択パネル902によって、ロボット装置管理サービスの顧客は、異なるオプションのメニューから、新しい強化学習モデルを作成するオプション、または特定のシミュレーション環境で利用される異なる強化学習モデルの報酬価値を含むリーダーボードを生成するオプションを選択してよい。
ある実施形態においては、インタフェース900は、機械学習フレームワークウィンドウ904を備え、機械学習フレームワークウィンドウ904を通して、顧客は、強化学習モデルを訓練するための機械学習フレームワーク、最適化アルゴリズム、及びハイパーパラメータを規定することができる。例えば、機械学習フレームワークウィンドウ904は、シミュレーションのバッチサイズを選択するためのバッチサイズラジオボタン906、シミュレーションのエポックの数を選択するためのエポック選択パネル908、シミュレーションのスタックサイズを選択するためのスタックサイズパネル910、及び強化学習モデルの学習率を決定するための学習率パネル912を備えてよい。さらに、機械学習フレームワークウィンドウ904は、探索ラジオボタン914を備えてよく、探索ラジオボタン914を通して、顧客は、(例えば、カテゴリパラメータ、イプシロングリーディ(epsilon greedy)アルゴリズム等を使用して)強化学習モデルの訓練に使用する探索アルゴリズムを定義してよい。機械学習フレームワークウィンドウ904はまた、エントロピー選択パネル916を備えてよく、エントロピー選択パネル916を通して、顧客は、予測されたアクションのエントロピーを定義して、各エポックの最後の訓練損失を決定してよい。割引率パネル918を通して、顧客は割引率も規定してよく、割引率を使用して、シミュレーションのアクションの性能を通して将来の報酬の重要性を決定してよい。
図10に示すように、追加のオプションが、機械学習フレームワークを定義するためにインタフェース1000に提示されてよい。例えば、インタフェース1000は、損失タイプラジオボタン1006を備えてよく、損失タイプラジオボタン1006を通して、顧客は、強化学習モデルを訓練するための損失関数を規定してよい。図10に示すように、顧客は、平均二乗誤差損失関数またはHuber損失関数から選択してよいが、他の損失関数も、顧客に利用可能であってよく、損失タイプラジオボタン1006を介して提示されてよい。さらに、インタフェース1000を通して、顧客は、各訓練の反復間のエピソードの数を、エピソード選択パネル1008を通して選択してよい。損失タイプラジオボタン1006及びエピソード選択パネル1008は、図9に関連して上述した機械学習フレームワークウィンドウ904の一部であってよいことに留意されたい。例えば、顧客は、機械学習フレームワークウィンドウ904をスクロールダウンして、損失タイプラジオボタン1006及びエピソード選択パネル1008にアクセスしてよい。
図10は、少なくとも1つの実施形態による、強化学習モデルの訓練を完了するための終了条件を定義するためのインタフェース1000の説明のための例を示す。インタフェース1000は、図5~9に関連して上述した他のインタフェースで同様に使用される選択パネル1002を備えてよい。さらに、インタフェース1000は、終了条件ウィンドウ1004を備えてよく、終了条件ウィンドウ1004を通して、顧客は、シミュレーションを終了し、強化学習モデルを訓練するための終了条件を定義及び選択してよい。例えば、終了条件ウィンドウ1004は、最大時間パネル1010を備えてよく、最大時間パネル1010を通して、顧客は、シミュレーションの実行と、強化学習モデルの訓練のための最大時間量を定義してよい。さらに、終了条件ウィンドウ1004は、最大エピソードパネル1012を備えてよく、最大エピソードパネル1012を通して、顧客は、シミュレーションを終了する前に実行する最大反復回数を定義してよい。終了条件ウィンドウ1004は、平均評価報酬選択パネル1014をさらに備えてよく、平均評価報酬選択パネル1014を通して、顧客は、平均報酬価値を定義してよい。平均報酬価値は、シミュレーションの反復と強化学習モデルの訓練を通して達成されると、モデルの収束が達成されたことを示してよい。これらの終了条件から、顧客は、終了条件ウィンドウ1004を通して、シミュレーションにどれを実施すべきかを選択してよい。
図11は、少なくとも1つの実施形態による、ロボット装置アプリケーションのシミュレーションを実行し、シミュレーションの実行から生じるシミュレーションデータを提供するプロセス1100の説明のための例を示す。プロセス1100は、図3に関して上述したシミュレーションワークフローマネージャ314と協調して、ロボット装置管理サービスによって行われてよい。例えば、シミュレーションワークフローマネージャは、シミュレーションを実行してよく、ロボット装置管理サービスは、以下に記載する他の動作を行って、シミュレーション環境を定義し、シミュレーションの実行によって生成されるシミュレーションデータを取得してよい。
ある実施形態においては、ロボット装置管理サービスは、ロボット装置アプリケーションの実行をシミュレーションする要求を顧客から受信する(1102)。上記のように、ロボット装置管理サービスは、顧客のクライアントデバイスを介して顧客にインタフェースを提供してよく、インタフェースを通して、顧客は、要求を提出し、ロボット装置パラメータのセットとシミュレーション環境パラメータとを定義してよい。例えば、図5~10に関連して上述したように、顧客は、インタフェースを使用して、既存の強化学習モデルと、テストするロボット装置アプリケーションを含み、シミュレーションによって生成されたシミュレーションデータを記憶するために利用されるデータオブジェクトの場所とを選択してよい。さらに、インタフェースを通して、顧客は、シミュレーションの機械学習フレームワークと、シミュレーションの終了条件とを定義してよい。
要求に応答して、ロボット装置管理サービスは、顧客を認証することができるかどうか、且つ、認証された場合、顧客がこのような要求を提出することを許可されているかどうかを判断してよい(1104)。顧客を認証できない場合、または、顧客がこの要求を提出することを許可されていない場合、ロボット装置管理サービスは、要求を拒否してよい(1106)。しかしながら、顧客の認証に成功し、要求の提出を許可される場合、ロボット装置管理サービスは、シミュレーション環境を生成し、シミュレーションを実行するためのロボット装置パラメータ及びシミュレーション環境パラメータを取得してよい(1108)。これらのパラメータは、図5~10に関連して上述したインタフェースを使用してなど、顧客からの要求に含まれてよい。あるいは、顧客は、インタフェースを通して、データオブジェクト、またはこれらのパラメータの他の記憶場所を定義してよい。ロボット装置管理サービスは、データオブジェクトまたは他の記憶場所にアクセスして、パラメータを取得してよい(1108)。
上記のように、ロボット装置管理サービスは、シミュレーションを実行するために仮想コンピューティングシステム管理サービスのシミュレーションワークフローマネージャに要求及びパラメータを提供してよい。シミュレーションワークフローマネージャは、ある実施形態においては、顧客が識別したパラメータのセットを使用してシミュレーション環境を生成し(1110)、シミュレーション環境でロボット装置アプリケーションを実行して(1112)、強化学習モデルを訓練し、シミュレーションデータを生成する。例えば、要求に応答して、シミュレーションワークフローマネージャは、オブジェクトベースのデータストレージサービスにアクセスして、アプリケーションを取得してよく、アプリケーションは、顧客が指定したカスタム設計の強化関数を使用して、顧客が指定した強化学習モデルの訓練に基づいてシミュレーション及び最適化される。さらに、シミュレーションワークフローマネージャは、顧客が提供した様々なパラメータと、シミュレーションの様々な構成要素(例えば、物理エンジン、レンダリングエンジン、ロボット装置エージェント、訓練アプリケーション、シミュレーションアプリケーション等)のシステム要件とを評価して、シミュレーション環境でのアプリケーションの実行をサポートし、シミュレーション環境を生成するために、どの仮想コンピューティングインスタンスをプロビジョニングするかを決定してよい。例えば、シミュレーションワークフローマネージャは、取得したパラメータを評価して、シミュレーションを実行及びサポートするための計算要件を決定してよい。これらの計算要件に基づいて、シミュレーションワークフローマネージャは、シミュレーションサーバのセット内に仮想コンピューティングインスタンスのセットをプロビジョニングして、アプリケーションのシミュレーションを実行してよい。
ある実施形態においては、シミュレーションの実行を介して仮想コンピューティングインスタンスによって生成されたシミュレーションデータは、コンピューティングリソース監視サービスに送信され、そこに記憶されて、ロボット装置管理サービスによってアクセスされる。ロボット装置管理サービスは、コンピューティングリソース監視サービスからシミュレーションデータを取得し(1114)、そのデータをシミュレーションデータレポジトリに記憶してよく、そこで、データはロボット装置管理サービスの顧客が利用可能になる。従って、ロボット装置管理サービスは、シミュレーションデータレポジトリからシミュレーションデータを提供してよく(1116)、顧客が、そのデータに基づいて、シミュレーションのステータスを決定及び/またはシミュレーション及びアプリケーションを修正するのを可能にしてよい。シミュレーションデータを提供することは、顧客からのシミュレーションを実行する要求と非同期的に行われてよいことに留意されたい。例えば、シミュレーションデータは、図3に関連して上述したシミュレーションデータレポジトリ310等、レポジトリに記憶されてよい。
図12は、少なくとも1つの実施形態による、ロボット装置アプリケーションをロボット装置のフリートに送信して、ロボット装置のフリートにアプリケーションをインストールさせ、アプリケーションの実行の結果として生成されたデータをクライアントに送信させるプロセス1200の説明のための例を示す。プロセス1200は、ロボット装置管理サービスによって行われてよく、顧客が指定した各ロボット装置との通信チャネルを確立して、ロボット装置がロボット装置管理サービスと、アプリケーションの実行をサポートする他のコンピューティングリソースサービスを通して提供された他のリソースとにアクセスするのを可能にし得る。さらに、通信チャネルを通して、ロボット装置管理サービスは、ロボット装置とインタラクトして、アプリケーションを提供し、ロボット装置の性能を監視してよい。
ある実施形態においては、ロボット装置管理サービスは、ロボット装置アプリケーションをロボット装置のセットにインストールする要求を顧客から受信する(1202)。上記のように、ロボット装置管理サービスは、顧客のクライアントデバイスを介して顧客にインタフェースを提供してよく、そのインタフェースを通して、顧客は、要求を提出してよく、どのロボット装置がロボット装置アプリケーションを取得し、インストールするべきかを識別するのに使用し得るロボット装置の1つまたは複数の論理グループを定義してよい。ある実施形態においては、顧客は、インタフェースを通して、ロボット装置のセットを、ロボット装置管理サービスに登録して、ロボット装置管理サービスよって維持され得る論理グループにこれらのロボット装置を編成することを可能にすることができる。インタフェースを通して、顧客は、様々なAPIコールを利用して、新しいロボット装置112を登録してよい。例えば、顧客は、ロボット装置を顧客のアカウントに関連付けるように使用され得るロボット装置の一意の名前を提出してよい。さらに、顧客は、ロボット装置の一意のIoT名を提出してよく、一意のIoT名を使用して、ロボット装置管理サービスとロボット装置の間に暗号化された通信チャネルを確立してよい。この登録プロセス中、ロボット装置管理サービスは、上記のように、ロボット装置管理サービスとコンピューティングリソースサービスプロバイダの任意の他のサービスと通信するロボット装置の認証を可能にするために、顧客にロボット装置のデジタル証明書の作成を要求してよい。
要求に応答して、ロボット装置管理サービスは、顧客を認証することができるかどうか、且つ、認証された場合、顧客がこのような要求を提出することを許可されているかどうかを判断してよい(1204)。顧客を認証できない場合、または、顧客がこの要求を提出することを許可されていない場合、ロボット装置管理サービスは、要求を拒否してよい(1206)。しかしながら、顧客が成功裏に認証され、要求を提出することが許可されている場合、ロボット装置管理サービスは、ロボット装置アプリケーションを受信するロボット装置のフリートを識別してよい。上記のように、顧客は、インタフェースを通して、ロボット装置のどの論理グループがロボット装置アプリケーションを受信及びインストールするかを規定してよい。論理グループのこの選択に基づいて、ロボット装置管理サービスは、アプリケーションを受信及びインストールするロボット装置を識別してよい。例えば、ロボット装置管理サービスは、各一意の論理グループ識別子のエントリを含むデータベースを維持してよい。各エントリは、各ロボット装置のネットワークアドレス情報を含む、どのロボット装置が論理グループの一部であるかを指定してよい。従って、ロボット装置管理サービスは、このデータベースを使用して、アプリケーションを受信及びインストールするロボット装置のセットを識別してよい。
ロボット装置管理サービスは、オブジェクトベースのデータストレージサービス内のデータオブジェクトからロボット装置アプリケーションを取得してよい。例えば、要求は、アプリケーションの識別子を指定してよく、ロボット装置管理サービスは、その識別子を使用して、ロボット装置アプリケーションの記憶に使用されるデータオブジェクトのネットワークアドレスに対応するエントリを含むデータベースにクエリしてよい。このデータベースから、ロボット装置管理サービスは、提供された識別子に対応するロボット装置アプリケーションを記憶するデータオブジェクトのネットワークアドレスを識別してよい。
各ロボット装置について、ロボット装置管理サービスは、ロボット装置とロボット装置管理サービスの間の通信チャネルを介して、ロボット装置アプリケーションをロボット装置に送信してよい(1210)。あるいは、ロボット装置管理サービスは、フリートのロボット装置へのロボット装置アプリケーションと他のデータのデプロイメントを管理するデプロイメントサービスに、ロボット装置アプリケーションを提供してよい。ある実施形態においては、このデプロイメントサービスは、ロボット装置のフリートを監視して、フリートのロボット装置が利用可能なとき(例えば、オンライン、通信チャネルを介して情報を送信等)を判断してよい。さらに、デプロイメントサービスは、どのロボット装置がアプリケーションを取得したかと、どのロボット装置がアプリケーションのインストールの成功を報告したかとを、データベースを通して登録してよい。
通信チャネルを通して、ロボット装置は、サービスまたは他のコンピューティングリソースサービスによって提供されるリソースのセットにアクセスする要求をこの通信チャネルを介して、ロボット装置管理サービスに送信してよい。ロボット装置は、さらに、顧客によって使用可能なデータを提供して、ロボット装置がインタラクトしている環境を可視化してよい。例えば、ロボット装置がビデオ記録装置を備える場合、ロボット装置は、ビデオ記録装置を使用して、通信チャネルを介してロボット装置管理サービスにビデオをストリーミングしてよい。顧客は、ロボット装置管理サービスが提供するインタフェースを通して、ビデオストリームにアクセスして、その環境内でロボット装置を観察してよい。通信チャネルを通して、顧客は、ロボット装置とインタラクトしてよく、インタフェースを通して必要に応じてロボット装置にコマンドを発してよい。
ロボット装置管理サービスからロボット装置アプリケーションを取得することに応答して、ロボット装置は、それぞれ、ロボット装置アプリケーションをインストール及び実行してよい。ある実施形態においては、ロボット装置管理サービスは、アプリケーションの実行中、各ロボット装置が行ったアクションに基づいて、選択された論理グループの各ロボット装置の性能を監視する(1212)。例えば、ロボット装置管理サービスは、ロボット装置から取得したデータに基づいて、ロボット装置が実行しているアプリケーションに問題が存在すると判断してよい。ある実施形態においては、ロボット装置管理サービスがロボット装置で実行しているアプリケーションに問題があると判断した場合、ロボット装置管理サービスは、アプリケーションの以前のバージョンをインストール及び実行のためにデータオブジェクトからロボット装置に提供する。アプリケーションを使用して行われたシミュレーションに基づいて更新されたアプリケーションの最新のバージョンがロボット装置の性能に影響を与える問題を有することが発見された場合、ロボット装置管理サービスは、アプリケーションの以前のバージョンをオブジェクトベースのデータストレージサービスによって維持されるデータオブジェクトに維持してよい。従って、ロボット装置管理サービスは、ロボット装置がアプリケーションの以前のバージョンを実行するのを可能にし得る。
ある実施形態においては、アプリケーションを取得し、実行したロボット装置の性能の監視を通して生成されたデータに基づいて、顧客は、フリートのロボット装置へのロボット装置アプリケーションのデプロイメントの一時停止または終了を要求することができる。例えば、ロボット装置アプリケーションのデプロイメント中、ロボット装置管理サービスが、アプリケーションを取得したロボット装置によるアプリケーションの実行から生じるアプリケーションに伴う問題を識別した場合、ロボット装置管理サービスは、検出した問題を詳述する情報を顧客に送信してよい。この情報を使用して、顧客は、フリートの残りの指定されたロボット装置へのアプリケーションのデプロイメントを一時停止または終了するかどうかを判断してよい。あるいは、ロボット装置管理サービスは、フリートの残りのロボット装置へのアプリケーションのデプロイメントを自動的に一時停止または終了してよく、アプリケーションのデプロイメントを継続するかどうかについて顧客からの応答を待ってよい。
図13は、少なくとも1つの実施形態による、ロボット装置アプリケーションがシミュレーションの実行を開始するシミュレーション要件に基づいて、仮想コンピューティングインスタンスをプロビジョニングするプロセス1300の説明のための例を示す。プロセス1300は、仮想コンピューティングインスタンス管理サービス内のロボット装置管理サービス、またはロボット装置アプリケーションのシミュレーションのために仮想コンピューティングインスタンスのプロビジョニング及び使用を可能にする他のサービスによってプロビジョニングされるシミュレーションワークフローマネージャによって行われてよい。
ロボット装置管理サービスは、仮想コンピュータシステム管理サービスのシミュレーションワークフローマネージャにアプリケーションのシミュレーションを構成する要求を送信してよい。要求は、シミュレーションのサービスフロントエンドを通して顧客によって定義されたパラメータのセットを含み得る。さらに、要求は、認証情報管理サブシステムからの認証情報のセットと、アプリケーションが記憶され、且つ、シミュレーションが完了すると強化学習モデルが記憶されるオブジェクトベースのデータストレージサービスのデータオブジェクトに対応するネットワークアドレスとを含んでよい。従って、要求を通して、シミュレーションワークフローマネージャは、シミュレーション環境パラメータとロボット装置パラメータとを取得してよい(1302)。
要求に応答して、シミュレーションワークフローマネージャは、認証情報管理サブシステムとインタラクトして、シミュレーション制御サブシステムから取得された認証情報のセットを検証してよい。認証情報のセットが有効な場合、シミュレーションワークフローマネージャは、アプリケーションのシミュレーションの構成を開始してよい。シミュレーションワークフローマネージャは、オブジェクトベースのデータストレージサービスにアクセスしてアプリケーションを取得してよく、アプリケーションは、ロボット装置管理サービスを介して顧客が規定したカスタム設計の強化関数を使用して、顧客が指定した強化学習モデルの訓練に基づいてシミュレーション及び最適化される。さらに、シミュレーションワークフローマネージャは、ロボット装置管理サービスを介して顧客が提供した様々なパラメータと、シミュレーションの様々な構成要素(例えば、物理エンジン、レンダリングエンジン、ロボット装置エージェント、訓練アプリケーション、シミュレーションアプリケーション等)のシステム要件とを評価して、シミュレーション環境でのアプリケーションの実行をサポートし、シミュレーション環境を生成するために、どの仮想コンピューティングインスタンスをプロビジョニングするかを決定してよい。例えば、シミュレーションワークフローマネージャは、取得したパラメータを評価して、シミュレーションを実行及びサポートするための計算要件を決定してよい。例えば、シミュレーションワークフローマネージャは、シミュレーションを実行し、シミュレーション環境内でロボット装置のアクションを処理するのに必要なシミュレーションの構成要素のセットを識別してよい。これらの計算要件に基づいて、シミュレーションワークフローマネージャは、シミュレーションサーバのセット内に仮想コンピューティングインスタンスのセットをプロビジョニングして、アプリケーションのシミュレーションを実行してよい(1306)。ある実施形態においては、顧客が、アプリケーションに更新を提供することによって、パラメータ及び構成要素が、アプリケーションの以前のバージョンで規定されたものと類似し得る場合、シミュレーションワークフローマネージャは、アプリケーションの以前のバージョンのシミュレーションの実行に使用された同じ仮想コンピューティングインスタンスを利用して、更新されたアプリケーションのシミュレーションを行うことができる。これによって、以前に使用した仮想コンピューティングインスタンスを更新されたアプリケーションに利用し得るので、シミュレーション要件に基づいて仮想コンピューティングインスタンスをプロビジョニングする必要性を取り除き得る。
ある実施形態においては、シミュレーションワークフローマネージャは、構成要素のシステム要件と仮想コンピューティングインスタンスの能力とに基づいて、シミュレーションサーバ上の異なる仮想コンピューティングインスタンス間にシミュレーションの様々な構成要素を割り当てる。例えば、シミュレーションワークフローマネージャは、仮想コンピューティングインスタンス間に分配され得るシミュレーションの離散化可能なサブセットを構成要素のセットから作成してよい。シミュレーションワークフローマネージャは、シミュレーションのサブセットに対応する構成要素の第1のセットを仮想コンピューティングインスタンス内に配置してよい。仮想コンピューティングインスタンスに追加の構成要素のための容量が残っている場合、シミュレーションワークフローマネージャは、同じ仮想コンピューティングインスタンス内に構成要素の次のセットを割り当ててよい。そうでない場合、シミュレーションワークフローマネージャは、シミュレーションの次のサブセットを別の仮想コンピューティングインスタンスに割り当ててよい。シミュレーションワークフローマネージャは、シミュレーションの全ての構成要素がシミュレーションサーバ内の様々な仮想コンピューティングインスタンス間に割り当てられるまで、このプロセスを継続してよい。ある実施形態においては、シミュレーションワークフローマネージャが特定の構成要素が同じシミュレーションサーバに割り当てられる必要があると判断する場合、シミュレーションワークフローマネージャは、特定のシミュレーションサーバで利用可能な仮想コンピューティングインスタンスを識別し、特定のシミュレーションサーバの仮想コンピューティングインスタンス間に構成要素を割り当てる。
ある実施形態においては、シミュレーションワークフローマネージャは、シミュレーションの様々な構成要素間で安全な通信を可能にするネットワークインタフェースを、シミュレーションに利用される各仮想コンピューティングインスタンス間に構成する(1308)。シミュレーションワークフローマネージャは、顧客自身の仮想プライベートネットワーク及び/またはオンプレミスネットワーク内で動作している顧客自身の仮想コンピューティングインスタンスにシミュレーションをマッピングしてよい。これは、シミュレーションの実行に必要なリソースがシミュレーション環境内でアプリケーションを実行している構成要素に利用可能であることを確実にする。ネットワークインタフェースが確立されると、シミュレーションワークフローマネージャは、様々な仮想コンピューティングインスタンス間の構成要素を起動して、シミュレーションを開始してよい(1310)。さらに、シミュレーションワークフローマネージャは、シミュレーションを実行する仮想コンピューティングインスタンスとシミュレーションサーバとを監視して、シミュレーションが成功裏に完了することを確実にしてよい(1312)。
シミュレーションワークフローマネージャが、仮想コンピューティングインスタンスが失敗したこと、または、他の何らかで動作不能であることを検出した場合、シミュレーションワークフローマネージャは、失敗によって影響を受ける構成要素を識別してよく、影響を受ける構成要素を収容するために新しい仮想コンピューティングインスタンスをプロビジョニングしてよい。これによって、ロボット装置アプリケーションのシミュレーションが失敗によって受ける影響を最小限にすることを確実にしてよい。図14は、少なくとも1つの実施形態による、既存の仮想コンピューティングインスタンスのセットの失敗を検出することに応答して、ロボット装置の構成要素を他の仮想コンピューティングインスタンスに移動するプロセス1400の説明のための例を示す。プロセス1400は、仮想コンピューティングインスタンス管理サービスの上記シミュレーションワークフローマネージャによって行われてよい。
上記のように、シミュレーションワークフローマネージャは、シミュレーションに実行に利用される仮想コンピューティングインスタンスを監視して、シミュレーションの性能に影響を与え得るあらゆる問題を識別してよい。例えば、シミュレーションワークフローマネージャは、仮想コンピューティングインスタンスの性能を測定するのに使用可能なメトリクスデータを各仮想コンピューティングインスタンスから取得してよい。このデータを使用して、シミュレーションワークフローマネージャは、ロボット装置アプリケーションのシミュレーションの実行に利用される1つまたは複数の仮想コンピューティングインスタンスの失敗を検出してよい(1402)。ある実施形態においては、シミュレーションワークフローマネージャが仮想コンピューティングインスタンスは失敗した、または、他の何らかで動作不能であると判断した場合、シミュレーションワークフローマネージャは、シミュレーションの構成要素のいずれかが失敗によって影響を受けるかどうかを判断してよい。シミュレーションワークフローマネージャが、検出された失敗の結果として影響を受けるシミュレーションの構成要素は無いと判断する場合、シミュレーションワークフローマネージャは、ロボット装置アプリケーションのシミュレーションを継続してよい(1406)。
シミュレーションワークフローマネージャが、検出された失敗の結果として1つまたは複数の構成要素が影響を受けると判断した場合、シミュレーションワークフローマネージャは、影響を受ける各構成要素のシステム要件を判断してよく(1408)、これらのシステム要件に基づいて、影響を受けるこれらの構成要素を収容するために新しい仮想コンピューティングインスタンスをプロビジョニングする必要があるかどうかを判断してよい(1410)。新しい仮想コンピューティングインスタンスが必要とされない場合、シミュレーションワークフローマネージャは、既存の動作している仮想コンピューティングインスタンス間に影響を受ける構成要素を移動してよく(1412)、ロボット装置アプリケーションのシミュレーションを継続してよい(1406)。しかしながら、仮想コンピューティングインスタンスの既存のセットがシミュレーションの影響を受ける構成要素を収容できない場合、シミュレーションワークフローマネージャは、シミュレーションの影響を受けるこれらの構成要素を収容するために新しい仮想コンピューティングインスタンスをシミュレーションサーバ間にプロビジョニングしてよい(1414)。シミュレーションワークフローマネージャは、影響を受ける構成要素を新しい仮想コンピューティングインスタンスに移動してよく(1416)、アプリケーションのシミュレーションを継続してよい(1406)。
同様に、シミュレーションワークフローマネージャは、仮想コンピューティングインスタンスを監視して、シミュレーションの構成要素のワークロードの急上昇を検出してよい。シミュレーションの構成要素のワークロードに急上昇がある場合、シミュレーションワークフローマネージャは、このワークロードの急上昇によって影響を受ける構成要素を識別してよく、影響を受ける構成要素を収容する新しい仮想コンピューティングインスタンスをプロビジョニングしてよい。これによって、ロボット装置アプリケーションのシミュレーションがワークロードの急上昇によって受ける影響を最小限にすることを確実にしてよい。従って、図15は、少なくとも1つの実施形態による、特定のシミュレーションのシミュレーションワークロードの急上昇を検出することに応答して、追加の仮想コンピューティングインスタンスをプロビジョニングするプロセス1500の説明のための例を示す。プロセス1500は、上記シミュレーションワークフローマネージャによって行われてよい。
シミュレーションワークフローマネージャは、シミュレーションに実行に利用される仮想コンピューティングインスタンスを監視して、シミュレーションの性能に影響を与え得るあらゆる問題を識別してよい。例えば、シミュレーションワークフローマネージャは、仮想コンピューティングインスタンスの性能を測定するのに使用可能なメトリクスデータを各仮想コンピューティングインスタンスから取得してよい。このデータを使用して、シミュレーションワークフローマネージャは、ロボット装置アプリケーションのシミュレーションの実行に利用される1つまたは複数の仮想コンピューティングインスタンスのシミュレーションワークロードの急上昇を検出してよい(1502)。シミュレーションワークフローマネージャは、シミュレーションの構成要素のワークロードのこの急上昇は、シミュレーションの構成要素間の待ち時間に悪い影響を与えることなくシミュレーションを成功裏に完了することを確実にするために追加のリソースを必要とするかどうかを判断してよい。
シミュレーションの構成要素のワークロードの急上昇の結果、シミュレーションの成功裏の完了を確実にするために追加のリソースは必要ないという判断になった場合、シミュレーションワークロードマネージャは、ロボット装置アプリケーションのシミュレーションを継続してよい(1506)。しかしながら、追加のリソースが必要である場合、シミュレーションワークフローマネージャは、シミュレーションの成功裏の完了を確実にするためにどの構成要素を新しい仮想コンピューティングインスタンスに移動させる必要があるかを識別してよい(1508)。シミュレーションワークフローマネージャは、これらの構成要素のシステム要件を判断してよく(1510)、これらのシステム要件に基づいて、これらの構成要素を収容できる新しい仮想コンピューティングインスタンスをプロビジョニングしてよい(1512)。例えば、シミュレーションワークフローマネージャは、各構成要素のリソース使用を監視して、ワークロードが急上昇した場合、どの構成要素がワークロードの急上昇の原因であるかを識別してよい。ワークロードの急上昇が検出された場合、シミュレーションワークフローマネージャは、どの構成要素が移動に適格であるかを決定(例えば、構成要素の配置要件を評価、構成要素のシステム及び場所要件を評価等)してよく、移動に的確なこれらの構成要素から、これらの各構成要素のリソース活用を決定してよい。適格な各構成要素のリソース活用に基づいて、シミュレーションワークフローマネージャは、移動する1つまたは複数の構成要素を選択してよい。説明のための例として、シミュレーションのためのCPU使用量が、最大閾値を超えた場合、シミュレーションワークフローマネージャは、最大のCPU利用率を有する構成要素を識別してよく、新しい仮想コンピューティングインスタンスにその構成要素を移動することによって、シミュレーションのCPU利用率を低減するかどうかを判断してよい。低減しない場合、シミュレーションワークフローマネージャは、次に最大のCPU利用率を有する構成要素を選択してよく、移行する1つまたは複数の構成要素を識別するまで、このプロセスを繰り返してよい。
シミュレーションワークフローマネージャは、識別された構成要素を新しい仮想コンピューティングインスタンスに移動してよく(1514)、アプリケーションのシミュレーションを継続してよい(1506)。例えば、シミュレーションワークフローマネージャは、識別された各構成要素のコンピュータ実行可能コードを新しい仮想コンピューティングインスタンスに送信して、仮想コンピューティングインスタンス内でこれらの構成要素の実行を可能にしてよい。さらに、シミュレーションワークフローマネージャは、上記のように、移動された構成要素が仮想プライベートネットワーク内でシミュレーションの他の構成要素と通信するのを可能にするネットワークインタフェースを、新しい仮想コンピューティングインスタンス間に確立してよい。
ある実施形態においては、シミュレーションワークフローマネージャはまた、様々な構成要素のシミュレーションワークロードに基づいて、シミュレーションが、シミュレーションの実行にプロビジョニングされているリソースより少ない数のリソースを使用して行い得るかどうかを判断してよい。例えば、シミュレーションワークフローマネージャが、各構成要素のシミュレーションワークロードに基づいて、より少ない数のリソースを使用して、シミュレーションを行い得ると判断する場合、シミュレーションワークロードマネージャは、構成要素を仮想コンピューティングインスタンスのより少ない数のセットに縮小してよい。従って、シミュレーションワークロードマネージャは、構成要素を収容し得る仮想コンピューティングインスタンスのセットを識別してよく、仮想コンピューティングインスタンスのこのより少ないセットに構成要素を移動して、シミュレーションの実行に利用されるリソースをスケールダウンしてよい。
図16は、ある実施形態による態様を実施するための例示的なシステム1600の態様を示す。理解されるように、ウェブベースシステムが説明のために使用されているが、様々な実施形態を実施するために異なるシステムが必要に応じて使用されてよい。ある実施形態では、システムは電子クライアントデバイス1602を備え、電子クライアントデバイス1602は、適切なネットワーク1604を介して要求、メッセージ、または情報を送信及び/または受信し、デバイスのユーザに情報を返信するように動作可能な任意の適切なデバイスを含む。そのようなクライアントデバイスの例は、パーソナルコンピュータ、セル式携帯電話もしくは他の携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、パーソナルデータアシスタント、埋込式コンピュータシステム、電子ブックリーダなどを含む。ある実施形態では、ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、衛星ネットワーク、または任意の他のそのようなネットワーク及び/またはそれらの組み合わせを含む任意の適切なネットワークを含み、そのようなシステムに使用される構成要素は、少なくとも部分的に、選択されたネットワーク及び/またはシステムのタイプに依存する。そのようなネットワークを介して通信するための多くのプロトコル及び構成要素は周知であり、本明細書では詳細に説明しない。ある実施形態では、ネットワークを介した通信は、有線接続及び/または無線接続及びそれらの組み合わせによって可能になる。ある実施形態では、システムが、要求を受信し要求に応えてコンテンツを提供するためのウェブサーバ1606を備えるので、ネットワークは、インターネット及び/または他の公的にアドレス指定可能な通信ネットワークを含む。ただし、他のネットワークについて、当業者には明らかなように、類似の目的に適う代替デバイスを使用できる。
ある実施形態では、説明のためのシステムは、少なくとも1つのアプリケーションサーバ1608及びデータストア1610を備え、また、幾つかのアプリケーションサーバ、層、または他の要素、プロセスまたは構成要素があってよく、これらは、チェーン接続されてよく、またはそれ以外の方法で構成されてよく、適切なデータストアからデータを取得するなどのタスクを実行するためにインタラクトすることができることは理解されたい。サーバは、ある実施形態では、ハードウェアデバイス、仮想コンピュータシステム、コンピュータシステム上で実行されているプログラミングモジュール、及び/またはネットワークを介して通信(例えば、ウェブサービスアプリケーションプログラミングインタフェース(API)要求)を受信し、それに応答するためのハードウェア及び/またはソフトウェアで構成された他のデバイスとして実装される。本明細書で使用される場合、別段の記載がない限り、または文脈によって明らかでない限り、用語「データストア」は、データを記憶し、データにアクセスし、かつデータを読み出すことができる任意のデバイスまたはデバイスの組み合わせを指し、任意の標準的なシステム、分散型システム、仮想システム、またはクラスタ化されたシステムにおいて、任意の組み合わせ及び任意の数のデータサーバ、データベース、データストレージデバイス、及びデータ記憶媒体を含み得る。データストアは、ある実施形態では、ブロックレベル及び/またはオブジェクトレベルのインタフェースと通信する。アプリケーションサーバは、必要に応じてデータストアと統合して、クライアントデバイスのための1つまたは複数のアプリケーションの態様を実行し、アプリケーションのためのデータアクセス及びビジネス論理の一部または全てを処理するための任意の適切なハードウェア、ソフトウェア、及びファームウェアを含み得る。
ある実施形態では、アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し、テキスト、グラフィックス、音声、ビデオ、及び/または他のコンテンツを含むが、これに限定されるものではないコンテンツを生成し、コンテンツは、ハイパーテキストマークアップ言語(「HTML」)、拡張マークアップ言語(「XML」)、JavaScript(登録商標)、Cascading Style Sheets(「CSS」)、JavaScript(登録商標) Object Notation(JSON)、及び/または別の適切なクライアント側の言語または他の構造化言語の形式でウェブサーバによって、クライアントデバイスと関連付けられたユーザに提供される。クライアントデバイスに転送されたコンテンツは、ある実施形態では、聴覚的に、視覚的に、及び/または他の感覚によりユーザが認知できる形式を含むが、これらに限定されるものではない1つまたは複数の形式でコンテンツを提供するためにクライアントデバイスによって処理される。全ての要求及び応答の処理、並びにクライアントデバイス1602とアプリケーションサーバ1608との間のコンテンツの配信は、ある実施形態では、PHP:ハイパーテキストプリプロセッサ(「PHP」)、Python、Ruby、Perl、Java(登録商標)、HTML、XML、JSON、及び/またはこの例での別の適切なサーバ側構造化言語を使用してウェブサーバによって処理される。ある実施形態では、単一のデバイスによって実行されるとして本明細書に記載する動作は、分散型システム及び/または仮想システムを形成する複数のデバイスによって集合的に実行される。
データストア1610は、ある実施形態では、幾つかの別々のデータテーブル、データベース、データ文書、動的データストレージスキーム、及び/または本開示の特定の態様に関係するデータを記憶するための他のデータストレージ機構及び媒体を含む。ある実施形態では、示されているデータストアは、生産側にコンテンツを提供するために使用される生産データ1612及びユーザ情報1616を記憶するための機構を含む。データストアはまた、ある実施形態では、報告、コンピューティングリソース管理、分析、または他のそのような目的に使用されるログデータ1614を記憶するための機構を含むと示される。ある実施形態では、ページ画像情報及びアクセス権情報(例えば、アクセス制御ポリシーまたは許可の他のコード化)などの他の態様は、必要に応じて上記に列挙する機構のいずれかのデータストアに、またはデータストア1610の追加の機構に記憶される。
データストア1610は、ある実施形態では、それと関連付けられた論理を通して、アプリケーションサーバ1608から命令を受信し、それに応えてデータを取得、更新、またはそれ以外の方法で処理するよう動作可能であり、アプリケーションサーバ1608は、受信した命令に応答して静的データ、動的データ、または静的データと動的データの組み合わせを提供する。ある実施形態では、ウェブログ(ブログ)、ショッピングアプリケーション、ニュースサービス、及び他のそのようなアプリケーションで使用されるデータなどの動的データは、本明細書に記載するサーバ側の構造化言語によって生成される、またはアプリケーションサーバ上で、もしくはアプリケーションサーバの制御下で動作するコンテンツ管理システム(「CMS」)によって提供される。ある実施形態では、ユーザは、ユーザが操作するデバイスを通して、特定のタイプの項目の検索要求を提出する。この例では、データストアは、ユーザ情報にアクセスしてユーザのアイデンティティを検証し、カタログ詳細情報にアクセスしてそのタイプの項目についての情報を取得し、ユーザがユーザデバイス1602上のブラウザを介して見るウェブページ上の結果のリスト等でユーザに情報を返信する。例を続けると、関心のある特定の項目の情報は、ブラウザの専用のページまたはウィンドウに表示される。しかしながら、本開示の実施形態が必ずしもウェブページの文脈に限定されるわけではなく、要求が必ずしもコンテンツの要求ではない、一般的な要求を処理により一般的に適用可能であることに留意されたい。例示的な要求は、システム1600及び/または別のシステムによってホストされたコンピューティングリソースを、そのようなコンピューティングリソースを起動する、終了する、削除する、修正する、読み取る、及び/またはそれ以外の方法でアクセスするためなど、コンピューティングリソースを管理する及び/またはコンピューティングリソースとインタラクトする要求を含む。
ある実施形態では、各サーバは通常、そのサーバの一般的な管理及び操作のための実行可能プログラム命令を提供するオペレーティングシステムを備え、サーバのプロセッサによって実行されると、サーバにその意図した機能(例えば、サーバの1つまたは複数のプロセッサがコンピュータ可読記憶媒体に記憶された命令を実行する結果として機能が実行される)を実行させる命令を記憶するコンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読み取り専用メモリ等)を備える。
システム1600は、ある実施形態では、1つまたは複数のコンピュータネットワークまたは直接接続を使用して通信リンク(例えば、伝送制御プロトコル(TCP)接続及び/またはトランスポート層セキュリティ(TLS)または他の暗号で保護された通信セッション)を介して相互接続される幾つかのコンピュータシステム及び構成要素を利用する分散型及び/または仮想のコンピューティングシステムである。しかしながら、このようなシステムは、図16に示すよりも少ない数または多い数の構成要素を有するシステムで動作できることが当業者には理解されよう。従って、図16のシステム1600の記載は、本質的に説明的なものあり、本開示の範囲を限定するものではない。
さらに、本開示の実施形態は、以下の条項を鑑みて説明できる。
1.ロボット装置のパラメータの第1のセットと、前記ロボット装置をテストするためのシミュレーションのパラメータの第2のセットとを取得することと、
前記ロボット装置のアプリケーションの実行をシミュレーションする第1の要求に応答して、前記シミュレーション環境を生成することと、
前記シミュレーション環境において、前記ロボット装置の前記アプリケーションを実行して、前記シミュレーション環境内での前記アプリケーションの性能を示すデータを取得することと、
前記第1の要求を満たす前記データを提供することと、
前記アプリケーションを前記ロボット装置にインストールする第2の要求を取得することと、
前記ロボット装置を含むロボット装置のフリートに、前記アプリケーションを送信することと、
前記アプリケーションの前記実行から生じる前記フリートの各ロボット装置によって行われるアクションに基づいて、前記ロボット装置のフリートの性能を監視することと、
を含む、コンピュータ実施方法。
2.前記方法は、
前記ロボット装置の環境への応答に対応するセンサデータを取得することと、
前記センサデータに基づいて、前記アプリケーションを更新して、更新されたアプリケーションにすることと、
前記ロボット装置のフリートに前記更新されたアプリケーションを送信することと、
をさらに含む、条項1に記載のコンピュータ実施方法。
3.前記方法は、
前記アプリケーションを通して前記ロボット装置と通信チャネルを確立することと、
前記ロボット装置にアクションのセットを行わせる実行可能命令を、前記通信チャネルを介して送信することと、
前記通信チャネルを介して、追加のデータであって、前記実行可能命令の実行への応答を指定する前記追加のデータを前記ロボット装置から取得することと、
をさらに含む条項1または2に記載のコンピュータ実施方法。
4.前記方法は、
前記パラメータの第2のセットに基づいて、前記アプリケーションの前記実行をシミュレーションするためのコンピューティングリソースを決定することと、
前記コンピューティングリソースをプロビジョニングすることと、
前記シミュレーション環境において、前記コンピューティングリソースを使用して前記アプリケーションの並列シミュレーションを行うことと、
をさらに含む、条項1~3のいずれかに記載のコンピュータ実施方法。
5.1つまたは複数のプロセッサと、
コンピュータ実行可能命令を記憶するメモリと、
を備えるシステムであって、前記コンピュータ実行可能命令は、実行されると、前記1つまたは複数のプロセッサに、
ロボット装置のパラメータの第1のセットであって、前記アプリケーションのデータ記憶場所を示す前記パラメータの第1のセットと、前記ロボット装置のアプリケーションをテストするためのシミュレーション環境のパラメータの第2のセットであって、シミュレーション環境のセットから前記シミュレーション環境の選択を示す前記パラメータの第2のセットとを取得させ、
リソースのプールから、前記シミュレーション環境においてシミュレーションのセットを実行するリソースのセットを選択させ、
前記データ記憶場所から前記アプリケーションを取得させ、且つ、
前記リソースのセットに前記アプリケーションをロードさせる
前記システム。
6.前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサに、さらに、
前記アプリケーションの性能を示すデータを取得するために前記シミュレーション環境における前記シミュレーションの実行を監視させ、且つ、
前記アプリケーションの前記性能に基づいて、前記アプリケーションの修正を可能にする前記データを提供させる
条項5に記載のシステム。
7.前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサに、さらに、
前記パラメータの第1のセット及び前記パラメータの第2のセットに基づいて、前記シミュレーション環境で前記アプリケーションのテストのために実行されるシミュレーションの数を識別させ、且つ、
実行されるシミュレーションの前記数に基づいて、前記シミュレーションのセットを実行する前記リソースのセットを選択させる
条項5または6に記載のシステム。
8.前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサに、さらに、前記ロボット装置を含むロボット装置のフリートに前記アプリケーションを送信させて、前記ロボット装置のフリートに前記アプリケーションをインストール及び実行させる、条項5~7のいずれかに記載のシステム。
9.前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサに、さらに、
前記ロボット装置のフリート上での前記アプリケーションのさらなる実行を妨害する前記アプリケーションの問題を検出させ、
前記アプリケーションの異なるバージョンを識別させ、且つ、
前記ロボット装置のフリートに、前記アプリケーションの前記異なるバージョンを送信して、前記ロボット装置のフリートに前記アプリケーションの前記異なるバージョンをインストール及び実行させる、
条項8に記載のシステム。
10. 前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサに、さらに、
前記ロボット装置と通信チャネルを確立させ、
前記ロボット装置によって実行されると、前記ロボット装置に動作のセットを行わせる実行可能命令のセットを取得させ、且つ、
前記通信チャネルを介して前記実行可能命令のセットを送信させる
条項8または9に記載のシステム。
11.前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサに、さらに、
リソースの第2のセットにアクセスする要求であって、前記ロボット装置のデジタル証明書を含む前記要求を、前記通信チャネルを介して前記ロボット装置から取得させ、
前記デジタル証明書に基づいて、前記ロボット装置を認証させ、且つ、
前記デジタル証明書に関連付けられたアクセス制御ポリシーに従って、前記リソースの第2のセットへのアクセスを提供させる
条項10に記載のシステム。
12. 前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサに、さらに、
前記シミュレーション環境での前記シミュレーションの実行を監視させ、
追加のリソースが前記シミュレーション環境での前記シミュレーションの実行継続をサポートするために必要なことを判断させ、且つ、
前記シミュレーションの前記実行継続を可能にするために前記追加のリソースをプロビジョニングさせる
条項5~11のいずれかに記載のシステム。
13. 実行可能命令を記憶した非一過性コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムの1つまたは複数のプロセッサによって実行される結果として、前記コンピュータシステムに、少なくとも、
ロボット装置のパラメータの第1のセットと、前記ロボット装置のアプリケーションをテストするためのシミュレーション環境のパラメータの第2のセットとを取得させ、
コンピュータシステムインスタンスのプールから、前記シミュレーション環境においてシミュレーションのセットを実行するコンピュータシステムインスタンスのセットを選択させ、
前記シミュレーション環境での前記シミュレーションのセットを実行させ、且つ、
前記ロボット装置を含むロボット装置のフリートに、アプリケーションデータを送信させて、前記ロボット装置のフリートに前記アプリケーションをインストール及び実行させる、
前記非一過性コンピュータ可読記憶媒体。
14.前記コンピュータシステムに前記シミュレーション環境で前記シミュレーションのセットを実行させる前記命令は、前記コンピュータシステムに、さらに、
前記パラメータの第1のセット及び前記パラメータの第2のセットに基づいて、実行するシミュレーションの数を決定させ、
前記数のシミュレーションの各シミュレーションに関して、前記シミュレーションの実行のためのコンピュータシステムインスタンスの数を識別させ、且つ、
前記数のシミュレーションの各シミュレーションの実行のための前記数のコンピュータシステムインスタンスに基づいて、前記コンピュータシステムインスタンスのセットを識別させる
条項13に記載の非一過性コンピュータ可読記憶媒体。
15.前記命令は、前記コンピュータシステムに、さらに、
前記ロボット装置のフリートのサブセットから、前記アプリケーションの実行に影響を与えるエラーが前記ロボット装置のフリートの前記サブセットによって検出されたという指示を取得させ、且つ、
前記指示に応答して、前記ロボット装置のフリートの前記サブセットに、前記アプリケーションの異なるバージョンに対応する使用可能な第2のアプリケーションデータを送信させて、前記ロボット装置のフリートの前記サブセットに前記アプリケーションの前記異なるバージョンをインストール及び実行させる
条項13または14に記載の非一過性コンピュータ可読記憶媒体。
16.前記命令は、前記コンピュータシステムに、さらに、
リソースのセットにアクセスする要求であって、前記ロボット装置のデジタル証明書を含む前記要求を前記ロボット装置から取得させ、
前記リソースのセットへのアクセスのレベルを指定するアクセス制御ポリシーのセットを識別させるために前記ロボット装置の前記デジタル証明書を評価させ、且つ、
前記アクセス制御ポリシーのセットに従って前記リソースのセットに前記ロボット装置がアクセスするのを可能にさせる
条項13~15のいずれかに記載の非一過性コンピュータ可読記憶媒体。
17. 前記命令は、前記コンピュータシステムに、さらに、前記ロボット装置が取得したセンサ入力に応答して生成されたデータを前記ロボット装置から取得させ、且つ、前記アプリケーションの実行中に前記ロボット装置の監視を有効にするように、前記データを使用して、グラフィカルユーザインタフェースを更新させる、条項13~16のいずれかに記載の非一過性コンピュータ可読記憶媒体。
18.前記命令は、前記コンピュータシステムに、さらに、
コンピュータ実行可能命令であって、前記ロボット装置によって実行されると、前記ロボット装置に動作のセットを行わせる前記実行可能命令のセットを、前記グラフィカルユーザインタフェースを介して取得させ、
前記コンピュータ実行可能命令を前記ロボット装置に対して送信させ、且つ、
前記コンピュータ実行可能命令の前記実行の結果として前記ロボット装置によって取得された第2のセンサ入力に応答して生成された追加のデータを使用して、前記コンピュータ実行可能命令の実行を監視させる
条項17に記載の非一過性コンピュータ可読記憶媒体。
19.前記命令は、前記コンピュータシステムに、さらに、
前記シミュレーション環境での前記シミュレーションのセットの実行を監視させ、
前記シミュレーションのセットの実行継続を可能にするために追加のコンピュータシステムインスタンスが必要であることを判断させ、且つ、
前記シミュレーションのセットの前記実行継続を可能にするためにコンピュータシステムインスタンスの前記プールから、前記追加のコンピュータシステムインスタンスをプロビジョニングさせる
条項13~18のいずれかに記載の非一過性コンピュータ可読記憶媒体。
20.前記シミュレーション環境で前記シミュレーションのセットを前記コンピュータシステムに実行させる前記命令は、前記コンピュータシステムに、さらに、前記シミュレーション環境内でシミュレーションされたロボット装置の性能に基づいて、強化学習モデルを利用して前記アプリケーションを修正させる、条項13~19のいずれかに記載の非一過性コンピュータ可読記憶媒体。
21.シミュレーション環境のパラメータのセットと、ロボット装置でアプリケーションを実行するために使用可能な構成要素のセットとを取得することと、
前記パラメータのセットと前記構成要素のセットに基づいて、前記アプリケーションの前記実行をシミュレーションするための複数のコンピューティングリソースを決定することと、
前記複数の仮想コンピューティングインスタンスに関して、前記構成要素のセット間での通信を可能にするネットワークインタフェースのセットを構成することと、
前記複数の仮想コンピューティングインスタンス間で前記構成要素のセットを起動することと、
前記仮想コンピューティングインスタンスのセットで前記構成要素のセットの性能を判断するために前記シミュレーション環境での前記アプリケーションの実行を監視することと
を含む、コンピュータ実施方法。
22.前記方法は、前記構成要素のセットのサブセットを、前記シミュレーション環境で前記アプリケーションの前記実行の完了を可能にするために前記サブセットが追加のリソースを必要とする結果として、他の仮想コンピューティングインスタンスに移動することをさらに含む、条項21に記載のコンピュータ実施方法。
23.前記方法は、前記サブセットが 前記追加のリソースを必要とする結果として、前記他の仮想コンピューティングインスタンスをプロビジョニングすることをさらに含む、条項22に記載のコンピュータ実施方法。
24.前記方法は、
前記仮想コンピューティングインスタンスのセットのうちの仮想コンピューティングインスタンスの失敗を検出することと、
前記失敗によって影響を受ける前記構成要素のセットのサブセットを識別することと、
前記構成要素のセットの前記サブセットの性能要件を判断することと、
前記構成要素のセットの前記サブセットを仮想コンピューティングインスタンスの別のセットであって、前記性能要件に基づいて選択された前記仮想コンピューティングインスタンスの別のセットに移動することと、
をさらに含む、条項21または23に記載のコンピュータ実施方法。
25.1つまたは複数のプロセッサと、
コンピュータ実行可能命令を記憶するメモリと、
を備えるシステムであって、前記コンピュータ実行可能命令は、実行されると、前記1つまたは複数のプロセッサに、
シミュレーション環境のパラメータのセットと、ロボット装置のアプリケーションの実行に使用可能な構成要素のセットとを取得させ、
前記アプリケーションの前記実行をシミュレーションするためのリソースのセットを選択させ、
前記リソースのセット間で前記構成要素のセットを起動させ、且つ、
前記構成要素のセットの性能を決定するために前記シミュレーション環境での前記アプリケーションの実行を監視させる
前記システム。
26.前記パラメータのセットは、前記ロボット装置のセンサのセットの数と、 前記シミュレーション環境に組み込まれるデジタルオブジェクトの数と、前記シミュレーション環境の秒あたりのフレームの要件とを含む、条項25に記載のシステム。
27.前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサに、さらに、前記リソースのセットに関して、前記構成要素のセット間での通信を可能にするためにネットワークインタフェースのセットを構成させる、条項25または26に記載のシステム。
28.前記リソースのセットは、ロボット装置のフリートの複数のアプリケーションの実行をシミュレーションするために構成されたリソースのプールから選択される、条項25~27のいずれかに記載のシステム。
29.前記アプリケーションの前記実行をシミュレーションするために前記リソースのセットを前記1つまたは複数のプロセッサに選択させる前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサに、さらに、前記アプリケーションの前記実行に使用可能な前記構成要素に関連付けられた仮想プライベートネットワーク内に前記リソースのセットをプロビジョニングさせる、条項25~28のいずれかに記載のシステム。
30.前記リソースのセットは、前記構成要素のセット間の通信の待ち時間に関する要件に基づいて選択される、条項25~29のいずれかに記載のシステム。
31.前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサに、さらに、
前記リソースのセットのリソースの失敗を検出させ、
前記失敗によって影響を受ける前記構成要素のセットのサブセットを識別させ、
前記構成要素のセットの識別に基づいて、前記構成要素のセットの前記サブセットを別のリソースに移動させるかどうかを判断させて、決定し、且つ、
前記決定に基づいて、前記構成要素のセットの前記サブセットを前記別のリソースに移動させる
条項25~30のいずれかに記載のシステム。
32.前記コンピュータ実行可能命令は、前記1つまたは複数のプロセッサに、さらに、
前記構成要素のセットの前記性能に基づいて、前記シミュレーション環境での前記アプリケーションの前記実行に追加のリソースが必要であることを判断させ、
前記追加のリソースに移動させるための前記構成要素のセットのサブセットを識別させ、
前記追加のリソースをプロビジョニングさせ、且つ、
前記構成要素のセットの前記サブセットを前記追加のリソースに移動させる
条項25~31のいずれかに記載のシステム。
33.実行可能命令を記憶する非一過性コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムの1つまたは複数のプロセッサによって実行される結果として、前記コンピュータシステムに、少なくとも、
シミュレーション環境のパラメータのセットを取得させ、
ロボット装置のアプリケーションをシミュレーションする要求に応答して、前記アプリケーションの実行のための構成要素のセットを識別させ、
コンピューティングリソースのセットであって、前記パラメータのセットと前記構成要素のセットとに基づいて選択された前記コンピューティングリソースのセット間で、前記構成要素のセットを起動させ、且つ、
前記シミュレーション環境での前記アプリケーションの実行を監視させる
前記非一過性コンピュータ可読記憶媒体。
34.前記命令は、前記コンピュータシステムに、さらに、
前記コンピューティングリソースのセットのサブセットの失敗を検出させ、
前記失敗を軽減させるためのポリシーのセットに基づいて、構成要素を前記サブセットから別のコンピューティングリソースのセットに移動させるかどうかを判断させて、決定し、且つ、
前記決定に基づいて、前記構成要素を前記サブセットから前記別のコンピューティングリソースのセットに移動させる
条項33に記載の非一過性コンピュータ可読記憶媒体。
35.前記コンピュータシステムに前記コンピューティングリソースのセット間で前記構成要素のセットを起動させる前記命令は、前記コンピュータシステムに、さらに、前記コンピューティングリソースのセット間で、前記構成要素のセット間の通信を可能にするネットワークインタフェースのセットを確立させる、条項33または34に記載の非一過性コンピュータ可読記憶媒体。
36.前記命令は、前記コンピュータシステムに、さらに、
前記アプリケーションの前記実行中の前記リソースのセットの性能を示すデータを前記リソースのセットから取得させ、
前記アプリケーションの実行継続を可能にするために追加のリソースが必要とされることを前記データに基づいて判断させ、
前記追加のリソースをプロビジョニングさせ、且つ、
前記構成要素のセットのサブセットを前記追加のリソースに移動させる
条項33~35のいずれかに記載の非一過性コンピュータ可読記憶媒体。
37.前記シミュレーション環境の前記パラメータのセットは、前記シミュレーションの実行のための中央処理装置の要件、グラフィックスプロセッシングユニットの要件、及び、ランダムアクセスメモリの要件を含む、条項33~36のいずれかに記載の非一過性コンピュータ可読記憶媒体。
38.前記コンピューティングリソースのセット間で前記構成要素のセットを前記コンピュータシステムに起動させる前記命令は、さらに、前記コンピュータシステムに、前記構成要素のセット間の通信の待ち時間要件に基づいて、前記コンピューティングリソースのセット間に前記構成要素のセットを分配させる、条項33~37のいずれかに記載の非一過性コンピュータ可読記憶媒体。
39.前記ロボット装置の前記アプリケーションをシミュレーションする前記要求は、前記シミュレーション環境での前記アプリケーションの前記実行のための仮想プライベートネットワークの識別子を指定し、且つ、
前記命令は、前記コンピュータシステムに、さらに、前記識別子で指定された前記仮想プライベートネットワーク内で前記コンピューティングリソースのセットを構成させる
条項33~38のいずれかに記載の非一過性コンピュータ可読記憶媒体。
40.前記コンピューティングリソースのセット間で前記構成要素のセットを前記コンピュータシステムに起動させる前記命令は、前記コンピュータシステムに、さらに、
ロボット装置のフリートの複数のアプリケーションの実行をシミュレーションするために構成されたコンピューティングリソースのプールを識別させ、
前記コンピューティングリソースのプールから、前記パラメータのセットと前記構成要素のセットとに基づいて、前記コンピューティングリソースのセットを選択させ、且つ、
前記コンピューティングリソースのセットが 前記構成要素のセットに専用になるように、前記コンピューティングリソースのセットを分離させる
条項33~39のいずれかに記載の 非一過性コンピュータ可読記憶媒体。
様々な実施形態は、広範な動作環境でさらに実装することができ、動作環境は、一部の場合、幾つかのアプリケーションのいずれかを動作させるために使用できる1つまたは複数のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含み得る。ある実施形態では、ユーザまたはクライアントデバイスは、標準的なオペレーティングシステムを実行するデスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータなどの幾つかのコンピュータ、並びにモバイルソフトウェアを実行し、幾つかのネットワーキングプロトコル及びメッセージングプロトコルをサポートできるセルラー(モバイル)デバイス、無線デバイス、及びハンドヘルドデバイスのいずれかを含み、そのようなシステムは、開発及びデータベース管理などの目的のために種々の市販のオペレーティングシステム及び他の既知のアプリケーションのいずれかを実行する幾つかのワークステーションも含む。ある実施形態では、これらのデバイスは、ネットワークを介して通信できるダミー端末、シンクライアント、ゲーム機、及び他のデバイスなどの他の電子機器、並びに仮想マシン、ハイパーバイザ、オペレーティングシステムレベルの仮想化を利用するソフトウェアコンテナなどの仮想デバイス、及びネットワークを介して通信できる仮想化をサポートする他の仮想デバイスまたは非仮想デバイスも含む。
ある実施形態では、システムは、伝送制御プロトコル/インターネットプロトコル(「TCP/IP」)、ユーザデータグラムプロトコル(「UDP」)、オープンシステムインターコネクション(「OSI」)モデルの多様な層で動作するプロトコル、ファイル転送プロトコル(「FTP」)、ユニバーサルプラグアンドプレイ(「UpnP」)、ネットワークファイルシステム(「NFS」)、共通インターネットファイルシステム(「CIFS」)、及び他のプロトコルなどの種々の市販のプロトコルのいずれかを使用して通信をサポートするための、当業者であれば、よく知っている少なくとも1つのネットワークを利用する。ネットワークは、ある実施形態では、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、衛星ネットワーク、及びそれらの任意の組合せである。ある実施形態では、(接続ベースのプロトコルと呼ばれることもある)コネクション型プロトコルが、順序付けされたストリームでデータを伝送できるように、ネットワークエンドポイント間で通信するためにコネクション型プロトコルが使用される。ある実施形態では、コネクション型プロトコルは信頼できる場合もあれば、信頼できない場合もある。例えば、TCPプロトコルは信頼できるコネクション型プロトコルである。非同期転送モード(「ATM」)及びフレームリレーは、信頼できないコネクション型プロトコルである。コネクション型プロトコルは、順序付けを保証せずにパケットを伝送するUDPなどのパケット型プロトコルとは対照的である。
ある実施形態では、システムは、ハイパーテキスト転送プロトコル(「HTTP」)サーバ、FTPサーバ、共通ゲートウェイインタフェース(「CGI」)サーバ、データサーバ、Java(登録商標)サーバ、Apacheサーバ、及びビジネスアプリケーションサーバを含む種々のサーバまたは中間層アプリケーションの1つまたは複数を実行するウェブサーバを利用する。ある実施形態では、1つまたは複数のサーバはまた、Java(登録商標)、C、C#、もしくはC++などの任意のプログラミング言語、またはRuby、PHP、Perl、Python、もしくはTCLなどの任意のスクリプト言語、並びにそれらの組み合わせで書かれた1つまたは複数のスクリプトまたはプログラムとして実装される1つまたは複数のウェブアプリケーションを実行することなどによって、ユーザデバイスからの要求に応えてプログラムまたはスクリプトを実行できる。ある実施形態では、1つまたは複数のサーバはまた、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、及びIBM(登録商標)から市販されているサーバ、並びにMySQL、Postgres、SQLite、MongoDBなどのオープンソースサーバ、及び構造化データまたは非構造化データを記憶する、取り出す、及びアクセスすることができる任意の他のサーバを含むがこれらに限定されるものではない、データベースサーバも含む。ある実施形態では、データベースサーバは、テーブルベースサーバ、ドキュメントベースサーバ、非構造化サーバ、リレーショナルサーバ、非リレーショナルサーバ、またはこれらの組み合わせ、及び/または他のデータベースサーバを含む。
ある実施形態では、システムは、コンピュータの1つまたは複数にローカルな(及び/またはそこに常駐する)、またはネットワーク上のコンピュータのいずれかもしくは全てから遠隔にある記憶媒体上など、様々な場所に常駐する場合がある上述の様々なデータストア及び他のメモリ並びに記憶媒体を含む。ある実施形態では、情報は、当業者によく知られているストレージエリアネットワーク(「SAN」)に常駐し、同様に、コンピュータ、サーバ、または他のネットワークデバイスに起因する機能を実行するための任意の必要なファイルは、必要に応じてローカルに及び/または遠隔に記憶される。システムがコンピュータ化されたデバイスを含むある実施形態では、そのような各デバイスは、バスを介して電気的に結合されるハードウェア要素であって、例えば、少なくとも1つの中央処理装置(「CPU」または「プロセッサ」)、少なくとも1つの入力装置(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、少なくとも1つの出力装置(例えば、表示装置、プリンタ、またはスピーカ)、ディスクドライブ、光学記憶装置、及び、ランダムアクセスメモリ(「RAM」)もしくは読み取り専用メモリ(「ROM」)等のソリッドステートストレージデバイスなどの少なくとも1つのストレージデバイスを含むハードウェア要素と、リムーバブルメディアデバイス、メモリカード、フラッシュカード、及びそれらの様々な組み合わせとを含む。
また、一実施形態では、そのようなデバイスは、コンピュータ可読記憶媒体リーダ、通信装置(例えば、モデム、ネットワークカード(無線もしくは有線)、赤外線通信装置など)、及び上述のワーキングメモリを含み、コンピュータ可読記憶媒体リーダは、遠隔ストレージデバイス、ローカルストレージデバイス、固定ストレージデバイス、及び/またはリムーバブルストレージデバイスを表すコンピュータ可読記憶媒体、ならびにコンピュータ可読情報を一時的に及び/またはより永久的に含む、記憶する、伝送する、及び取り出すための記憶媒体と接続されるように、またはそれらを受け入れるように構成される。ある実施形態では、システム及び様々なデバイスはまた、通常、幾つかのソフトウェアアプリケーション、モジュール、サービス、またはオペレーティングシステム及びクライアントアプリケーションもしくはウェブブラウザなどのアプリケーションプログラムを含む少なくとも1つのワーキングメモリデバイス内にある他の要素も含む。ある実施形態では、カスタマイズされたハードウェアが使用される、及び/または特定の要素がハードウェア、(アプレットなどのポータブルソフトウェアを含む)ソフトウェア、または両方で実装される。ある実施形態では、ネットワーク入力/出力装置などの他のコンピューティングデバイスへの接続が利用される。
ある実施形態では、コードまたはコードの一部分を含むための記憶媒体及びコンピュータ可読媒体は、RAM、ROM、電気的消去可能プログラマブル読み出し専用メモリ(「EEPROM」)、フラッシュメモリもしくは他のメモリ技術、コンパクトディスク読み出し専用メモリ(「CD-ROM」)、デジタル多用途ディスク(DVD)もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用することができ、且つシステムデバイスによってアクセスできる任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶及び/または伝送のための任意の方法または技術で実装される揮発性及び不揮発性の媒体、取り外し可能及び取り外し不可能な媒体などであるが、これらに限定されるものではない記憶媒体及び通信媒体を含む当該分野において既知の、または使用される任意の適切な媒体を含む。本明細書に提供される開示及び教示に基づいて、当業者は、様々な実施形態を実装するための他の手法及び/または方法を理解するであろう。
従って、明細書及び図面は、制限的な意味ではなくて説明的な意味で考慮されるべきである。しかしながら、特許請求の範囲で述べられる本発明のより広い趣旨及び範囲から逸脱することなく、それたに多様な修正及び変更がなされてよいことは明らかである。
他の変形形態は、本開示の趣旨の範囲内である。よって、開示される技術は、様々な修正及び代替の構造を取り得るが、その特定の示される実施形態は、図面に示され、詳細に上述されている。しかしながら、開示される特定の形式(複数可)に本発明を限定する意図はなく、逆に、添付の特許請求の範囲において規定される本発明の趣旨及び範囲に該当するすべての修正、代替構造、及び均等物を含むことを意図していることを理解されたい。
開示される実施形態を説明する文脈における(特に以下の特許請求の範囲の文脈における)用語「a」及び「an」及び「the」並びに同様の指示語の使用は、本明細書において別段の指示がない限り、または文脈によって明らかに矛盾しない限り、単数及び複数の両方を含むと解釈されるべきである。同様に、用語「または(or)」の使用は、明示的にまたは文脈によって矛盾しない限り、「and/or(及び/または)」を意味すると解釈されるべきである。用語「含む、備える(comprising)」、「有する(having)」、「含む、備える(including)」、及び「含む(containing)」は、別段の記載のない限り、オープンエンドの用語(すなわち、「含むが、これに限定されるものではない」ことを意味する)として解釈されるべきである。用語「接続された(connected)」は、修飾されず、物理的な接続を指すときには、たとえ介在するものがあっても部分的にまたは完全に、中に含まれる、取り付けられるまたは互いに結合されるとして解釈されるべきである。本明細書の値の範囲の記載は、本明細書で別様が示されない限り、単に、範囲内に収まるそれぞれの別個の値を個々に指す簡便な方法としての役割を果たすことが意図され、それぞれの別個の値は、本明細書に個々に記載されるかのように、本明細書に組み込まれる。用語「セット(set)」の使用(例えば、「項目のセット(a set of items)」)または「サブセット(subset)」は、別段の記載がない限り、または文脈によって矛盾しない限り、1つまたは複数の要素を含んだ空でない集まりとして解釈されるべきである。さらに、別段の記載がない限り、または文脈によって矛盾しない限り、対応するセットの用語「サブセット」は、必ずしも対応するセットの適切なサブセットを示すのではなく、サブセット及び対応するセットが等しい場合がある。「に基づいて」という句の使用は、明示的に別段の記載がない限り、また、文脈より明らかでない限り、「に少なくとも部分的に基づいて」を意味し、「のみに基づいて」に限定されない。
「A、B、及びCの少なくとも1つ」または「A、B及びCの少なくとも1つ」の形の句(すなわち、オックスフォードコンマのあるまたはない同じ句)などの接続的な語は、特に別段の記載がない限り、または明確に文脈によって矛盾しない限り、項目、用語などがAまたはBまたはC、A及びB及びCのセットの任意の空でない部分集合、または少なくとも1つのA、少なくとも1つのB、または少なくとも1つのCを含む、文脈によって矛盾していないまたは他の方法で除外されていない任意の集合のどちらかであってよいことを示すために一般的に使用されるとして文脈で理解される。例えば、3つの要素を有する集合の説明のための例では、接続的な句「A、B、及びCの少なくとも1つ」及び「A、B及びCの少なくとも1つ」は、{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}、及び明示的にまたは文脈によって矛盾しない場合、{A}、{B}、及び/または{C}を部分集合として有する任意の集合(例えば、複数の「A」を有する集合)のいずれかを指す。従って、そのような接続的な語は、特定の実施形態が、Aの少なくとも1つ、Bの少なくとも1つ、及びCの少なくとも1つがそれぞれ存在することを必要とすることを示唆することを一般的に意図していない。同様に「A、B、またはCの少なくとも1つ」及び「A、BまたはCの少なくとも1つ」などの句は、異なる意味が明示的に明記されない限り、または文脈によって明らかではない限り、「A、B、及びCの少なくとも1つ」と同じものを指し、「A、B及びCの少なくとも1つ」は、{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}の集合のいずれかを指す。さらに、別段の記載のない限り、または文脈によって矛盾しない限り、用語「複数(plurarity)」は、複数である状態を示す(例えば、「複数の項目(a plurarity of items)」は複数の項目を示す)。複数の項目の数は少なくとも2つであるが、明示的にまたは文脈によってそのように示されるとき、より多い場合がある。
本明細書に記載するプロセスの動作は、本明細書中に別段の指示がない限り、または文脈によって明らかに矛盾しない限り、任意の適切な順序で実行することができる。ある実施形態では、本明細書に記載するそれらのプロセス(またはその変形形態及び/またはその組み合わせ)などのプロセスは、実行可能命令を用いて構成された1つまたは複数のコンピュータシステムの制御下で実行され、ハードウェアまたはその組み合わせにより1つまたは複数のプロセッサで集合的に実行するコード(例えば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装される。ある実施形態では、コードは、例えば、1つまたは複数のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形でコンピュータ可読記憶媒体に記憶される。ある実施形態では、コンピュータ可読記憶媒体は、一過性の信号(例えば、伝搬する一過性の電気的または電磁的な伝送)を除外するが、一過性の信号の送受信機内の非一過性のデータストレージ回路(例えば、バッファ、キャッシュ、及び待ち行列)を含む、非一過性コンピュータ可読記憶媒体である。ある実施形態では、コード(例えば、実行可能コードまたはソースコード)は、コンピュータシステムの1つまたは複数のプロセッサによって実行されるとき(すなわち、実行される結果として)、コンピュータシステムに本明細書に記載の動作を行わせる実行可能命令を記憶する1つまたは複数の非一過性コンピュータ可読記憶媒体のセットに記憶される。非一過性コンピュータ可読記憶媒体のセットは、ある実施形態では、複数の非一過性コンピュータ可読記憶媒体を含み、複数の非一過性コンピュータ可読記憶媒体の個々の非一過性記憶媒体の1つまたは複数は、コードの全てを欠く一方、複数の非一過性コンピュータ可読記憶媒体は、コードの全てを集合的に記憶する。ある実施形態では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行される。例えば、ある実施形態では、非一過性コンピュータ可読記憶媒体が命令を記憶し、メインCPUが一部の命令を実行し、グラフィックスプロセッサユニットが他の命令を実行する。別の実施形態では、コンピュータシステムの異なる構成要素は別々のプロセッサを有し、異なるプロセッサが命令の異なるサブセットを実行する。
従って、ある実施形態では、コンピュータシステムは、本明細書に記載するプロセスの動作を単独でまたは集合的に実行する1つまたは複数のサービスを実装するように構成され、そのようなコンピュータシステムは、動作の実行を可能にする適用可能なハードウェア及び/またはソフトウェアで構成される。さらに、本開示のある実施形態では、コンピュータシステムは単独のデバイスであり、別の実施形態では、複数のデバイスを含む分散型コンピュータシステムであり、複数のデバイスは、分散型コンピュータシステムが本明細書に記載する動作を実行するように、及び単独のデバイスが全ての動作を実行することのないように異なるように動作する。
本明細書に提供される任意の及び全ての例または例示的な言葉(例えば、「など」)の使用は、単に、本発明の実施形態をより良く説明することを意図し、別段に主張されない限り、本発明の範囲に限定を課すものではない。本明細書の言い回しは、任意の請求されていない要素を本発明の実践に必須であるとして示すと解釈されるべきではない。
本発明を実施するために本発明者らに既知のベストモードを含む本開示の実施形態を本明細書に記載する。それらの実施形態の変形形態は、前述の説明を読むと当業者に明らかになり得る。本発明者らは、当業者がそのような変形形態を必要に応じて利用することを期待し、本発明者らは本開示の実施態様が本明細書に具体的に記載されるものとは別の方法で実践されることを意図する。従って、本開示の範囲は、適用法によって許容されるように、本明細書に添付された特許請求の範囲に記載された主題のすべての修正形態及び均等物を含む。さらに、本明細書に別段の指示がない限り、または文脈によって明らかに矛盾しない限り、上述の要素の全ての考え得る変形形態での上述の要素の任意の組み合わせが本開示の範囲に包含される。
本明細書に引用される出願公開、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照によって個々にかつ具体的に組み込まれるものと示され、その全体が本明細書に記載されるのと同じ程度まで、参照によって本明細書に組み込まれる。