(57)【特許請求の範囲】
【請求項１】
製品を前記製品に対するモデルに従って構築するために使用される、構築プロセスの性能に関する制約である性能制約を指定するデータを受信するステップと、
前記製品を構築するための前記構築プロセスの構築前フェーズ中に、前記モデルに従って前記製品を構築するための第１のタスクのシーケンスであって、前記性能制約を満足し得る第１のタスクのシーケンスを生成するステップと、
構築フェーズ中に、１つ以上のロボット装置に、前記第１のタスクのシーケンスの実行を開始することによって前記製品を構築させるステップと、
前記第１のタスクのシーケンスの前記実行中に、構築可能性分析を実行し、前記性能制約を考慮すると、前記製品の構築済み部分に対して前記第１のタスクのシーケンスの残りのタスクを実行することによる前記モデルに従った前記製品の構築がもはや可能ではない程度まで、前記１つ以上の逸脱が生じていると判断するステップと、
前記性能制約を考慮すると、前記構築済み部分に対して前記第１のタスクのシーケンスの前記残りのタスクを実行することによる前記モデルに従った前記製品の構築がもはや可能ではない程度まで、前記１つ以上の逸脱が生じていると判断するステップに応答して、前記構築済み部分に基づいた前記製品の新しいモデル、および異なる第２のタスクのシーケンスを生成するステップであって、前記第２のタスクのシーケンスは、前記第１のタスクのシーケンスに含まれていない１つ以上のタスクを含み、前記構築済み部分からの前記モデルに従った前記製品の構築がもはや可能ではないと判断される程度まで蓄積した前記１つ以上の逸脱の存在にもかかわらず、前記新しいモデルに従って前記構築済み部分から前記製品を構築可能にするようシミュレーションされる、ステップと、
前記１つ以上のロボット装置に、前記第２のタスクのシーケンスを実行することにより前記新しいモデルに従って前記構築済み部分から前記製品を構築させるステップであって、前記第２のタスクのシーケンスが、前記第１のタスクのシーケンスに含まれていない前記１つ以上のタスクを含む、ステップとを含む、コンピュータ実装方法。
【請求項２】
前記第１のタスクのシーケンスを生成するステップは、
ツリー構造のルートノードと最終ノードとの間のノードのシーケンスを選択するステップを含み、前記ルートノードと前記最終ノードとの間の各前記ノードは前記第１のタスクのそれぞれ１つと関連付けられる、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記第２のタスクのシーケンスを生成するステップは、
（ｉ）前記第１のタスクのシーケンスの最後に実行されたタスク、および（ｉｉ）前記最後に実行されたタスクと関連付けられた最後に実行されたノードを判断するステップと、
前記最後に実行されたノードを、前記第２のタスクのシーケンスのルートノードである第２のルートノードとして指定するステップと、
前記第２のタスクのシーケンスに対応する第２のノードのシーケンスとして、前記第２のルートノードと第２の最終ノードとの間のノードのシーケンスに対応するタスクのシーケンスを、前記第２のタスクのシーケンスが前記性能制約を満足するように選択するステップとを含む、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記指定された性能制約は、前記構築プロセスを使用して前記製品が構築されるべき最大時間を含み、
前記製品がもはや構築可能ではないと判断するステップは、前記第１のタスクのシーケンスの前記残りのタスクの実行によって、前記構築プロセスを使用した前記製品の構築のための時間が前記最大時間を超えると判断するステップを含む、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記製品は作業現場で構築され、かつ、
前記方法は、
前記作業現場のマップを生成するステップをさらに含み、前記作業現場の前記マップは、前記作業現場内で前記製品を構築するために利用可能な１つ以上の資源の記述および前記製品の構築された部分の記述を含む、請求項１に記載のコンピュータ実装方法。
【請求項６】
前記第１のタスクのシーケンスの構築可能性分析を実行するステップは、
前記作業現場の前記マップを分析するステップと、
前記分析に基づいて、まだ実行されていない前記第１のタスクのシーケンスのタスクを実行することは実現可能ではないと判断するステップとを含む、請求項５に記載のコンピュータ実装方法。
【請求項７】
前記作業現場の前記マップを分析するステップは、
前記ロボット装置が前記第１のタスクのシーケンスのタスクを実行するのを妨げる前記作業現場内の障害物を検出するステップ、および、前記ロボット装置が前記第１のタスクのシーケンスのタスクを実行するのを妨げる前記ロボット装置の幾何形状を検出するステップのうちの少なくとも１つを含む、請求項６に記載のコンピュータ実装方法。
【請求項８】
前記方法は、
前記構築前フェーズ中に、前記第１のタスクのシーケンスを実行する前記１つ以上のロボット装置のシミュレーションを実行するステップと、
前記シミュレーション中に、前記第１のタスクのシーケンスのシミュレーション構築可能性分析を実行して、前記作業現場内で前記製品を構築するために利用可能な資源を使用した前記第１のタスクのシーケンスの実行の実現可能性を判断するステップと、
前記分析に基づいて、新しいタスクのシーケンスを生成することを決定するステップとをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項９】
前記第２のタスクのシーケンスの前記実行中に、構築可能性分析を実行して、前記第２のタスクのシーケンスを実行することによって前記新しいモデルに従って前記製品を仕上げる実現可能性を判断するステップと、
前記分析に基づいて、前記第２のタスクのシーケンスを実行することによって前記新しいモデルに従って前記製品を仕上げることは実現可能ではないと判断するステップと、
それに応答して、前記新しいモデルに従って前記製品を仕上げるための第３のタスクのシーケンスを生成するステップであって、前記第３のタスクのシーケンスは、前記第２のタスクのシーケンスとは異なる、ステップと、
前記１つ以上のロボット装置に、前記第３のタスクのシーケンスの実行を開始することにより前記製品の構築を継続させるステップとをさらに含む、請求項１に記載のコンピュータ実装方法。
【請求項１０】
命令を格納する１つ以上の持続性コンピュータ可読記憶媒体であって、前記命令は、１つ以上のプロセッサによって実行されると、動作の実行を生じさせ、前記動作は、
製品を前記製品に対するモデルに従って構築するために使用される、構築プロセスの性能に関する制約である性能制約を指定するデータを受信するステップと、
前記製品を構築するための前記構築プロセスの構築前フェーズ中に、前記モデルに従って前記製品を構築するための第１のタスクのシーケンスであって、前記性能制約を満足し得る第１のタスクのシーケンスを生成するステップと、
構築フェーズ中に、１つ以上のロボット装置に、前記第１のタスクのシーケンスの実行を開始することによって前記製品を構築させるステップと、
前記第１のタスクのシーケンスの前記実行中に、構築可能性分析を実行し、前記性能制約を考慮すると、前記製品の構築済み部分に対して前記第１のタスクのシーケンスの前記残りのタスクを実行することによる前記モデルに従った前記製品の構築がもはや可能ではない程度まで、前記１つ以上の逸脱が生じていると判断するステップと、
前記性能制約を考慮すると、前記構築済み部分に対して前記第１のタスクのシーケンスの前記残りのタスクを実行することによる前記モデルに従った前記製品の構築がもはや可能ではない程度まで、前記１つ以上の逸脱が生じていると判断するステップに応答して、前記構築済み部分に基づいた前記製品の新しいモデル、および異なる第２のタスクのシーケンスを生成するステップであって、前記第２のタスクのシーケンスは、前記第１のタスクのシーケンスに含まれていない１つ以上のタスクを含み、前記構築済み部分からの前記モデルに従った前記製品の構築がもはや可能ではないと判断される程度まで蓄積した前記１つ以上の逸脱の存在にもかかわらず、前記新しいモデルに従って前記構築済み部分から前記製品を構築可能にするようシミュレーションされる、ステップと、
前記１つ以上のロボット装置に、前記第２のタスクのシーケンスを実行することにより前記新しいモデルに従って前記構築済み部分から前記製品を構築させるステップであって、前記第２のタスクのシーケンスが、前記第１のタスクのシーケンスに含まれていない前記１つ以上のタスクを含む、ステップとを含む、媒体。
【請求項１１】
前記第１のタスクのシーケンスを生成するステップは、
ツリー構造のルートノードと最終ノードとの間のノードのシーケンスを選択するステップを含み、前記ルートノードと前記最終ノードとの間の各前記ノードは前記第１のタスクのそれぞれ１つと関連付けられる、請求項１０に記載の媒体。
【請求項１２】
前記第２のタスクのシーケンスを生成するステップは、
（ｉ）前記第１のタスクのシーケンスの最後に実行されたタスク、および（ｉｉ）前記最後に実行されたタスクと関連付けられた最後に実行されたノードを判断するステップと、
前記最後に実行されたノードを、前記第２のタスクのシーケンスのルートノードである第２のルートノードとして指定するステップと、
前記第２のタスクのシーケンスに対応する第２のノードのシーケンスとして、前記第２のルートノードと第２の最終ノードとの間のノードのシーケンスに対応するタスクのシーケンスを、前記第２のタスクのシーケンスが前記性能制約を満足するように選択するステップとを含む、請求項１１に記載の媒体。
【請求項１３】
前記指定された性能制約は、前記構築プロセスを使用して前記製品が構築されるべき最大時間を含み、
前記製品がもはや構築可能ではないと判断するステップは、前記第１のタスクのシーケンスの前記残りのタスクの実行によって、前記構築プロセスを使用した前記製品の構築のための時間が前記最大時間を超えると判断するステップを含む、請求項１０に記載の媒体。
【請求項１４】
前記製品は作業現場で構築され、かつ、
前記方法は、
前記作業現場のマップを生成するステップをさらに含み、前記作業現場の前記マップは、前記作業現場内で前記製品を構築するために利用可能な１つ以上の資源の記述および前記製品の構築された部分の記述を含む、請求項１０に記載の媒体。
【請求項１５】
前記第１のタスクのシーケンスの構築可能性分析を実行するステップは、
前記作業現場の前記マップを分析するステップと、
前記分析に基づいて、まだ実行されていない前記第１のタスクのシーケンスのタスクを実行することは実現可能ではないと判断するステップとを含む、請求項１４に記載の媒体。
【請求項１６】
前記作業現場の前記マップを分析するステップは、
ロボット装置が前記第１のタスクのシーケンスのタスクを実行するのを妨げる前記作業現場内の障害物を検出するステップ、および、前記ロボット装置が前記第１のタスクのシーケンスのタスクを実行するのを妨げる前記ロボット装置の幾何形状を検出するステップのうちの少なくとも１つを含む、請求項１５に記載の媒体。
【請求項１７】
前記動作は、
前記構築前フェーズ中に、前記第１のタスクのシーケンスを実行している前記１つ以上のロボット装置をシミュレーションするステップと、
前記シミュレーション中に、前記第１のタスクのシーケンスのシミュレーション構築可能性分析を実行して、前記作業現場内で前記製品を構築するために利用可能な資源を使用した前記第１のタスクのシーケンスの実行の実現可能性を判断するステップと、
前記分析に基づいて、新しいタスクのシーケンスを生成することを決定するステップとをさらに含む、請求項１０に記載の媒体。
【請求項１８】
前記動作は、
前記第２のタスクのシーケンスの前記実行中に、構築可能性分析を実行して、前記第２のタスクのシーケンスを実行することによって前記新しいモデルに従って前記製品を仕上げる実現可能性を判断するステップと、
前記分析に基づいて、前記第２のタスクのシーケンスを実行することによって前記新しいモデルに従って前記製品を仕上げることは実現可能ではないと判断するステップと、
それに応答して、前記新しいモデルに従って前記製品を仕上げるための第３のタスクのシーケンスを生成するステップであって、前記第３のタスクのシーケンスは、前記第２のタスクのシーケンスとは異なる、ステップと、
前記１つ以上のロボット装置に、前記第３のタスクのシーケンスの実行を開始することにより前記製品の構築を継続させるステップとをさらに含む、請求項１０に記載の媒体。
【請求項１９】
１つ以上の処理デバイスと、
命令を格納する１つ以上のコンピュータ可読記憶媒体とを備えたシステムであって、前記命令は、前記１つ以上の処理デバイスによって実行されると、動作の実行を生じさせ、前記動作は、
製品を前記製品に対するモデルに従って構築するために使用される、構築プロセスの性能に関する制約である性能制約を指定するデータを受信するステップと、
前記製品を構築するための前記構築プロセスの構築前フェーズ中に、前記モデルに従って前記製品を構築するための第１のタスクのシーケンスであって、前記性能制約を満足し得る第１のタスクのシーケンスを生成するステップと、
構築フェーズ中に、１つ以上のロボット装置に、前記第１のタスクのシーケンスの実行を開始することによって前記製品を構築させるステップと、
前記第１のタスクのシーケンスの前記実行中に、構築可能性分析を実行し、前記性能制約を考慮すると、前記製品の構築済み部分に対して前記第１のタスクのシーケンスの前記残りのタスクを実行することによる前記モデルに従った前記製品の構築がもはや可能ではない程度まで、前記１つ以上の逸脱が生じていると判断するステップと、
前記性能制約を考慮すると、前記構築済み部分に対して前記第１のタスクのシーケンスの前記残りのタスクを実行することによる前記モデルに従った前記製品の構築がもはや可能ではない程度まで、前記１つ以上の逸脱が生じていると判断するステップに応答して、前記構築済み部分に基づいた前記製品の新しいモデル、および異なる第２のタスクのシーケンスを生成するステップであって、前記第２のタスクのシーケンスは、前記第１のタスクのシーケンスに含まれていない１つ以上のタスクを含み、前記構築済み部分からの前記モデルに従った前記製品の構築がもはや可能ではないと判断される程度まで蓄積した前記１つ以上の逸脱の存在にもかかわらず、前記新しいモデルに従って前記構築済み部分から前記製品を構築可能にするようシミュレーションされる、ステップと、
前記１つ以上のロボット装置に、前記第２のタスクのシーケンスを実行することにより前記新しいモデルに従って前記構築済み製品から前記製品を構築させるステップであって、前記第２のタスクのシーケンスが、前記第１のタスクのシーケンスに含まれていない前記１つ以上のタスクを含む、構築させるステップとを含む、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
［0001］  本明細書で別段の指示がない限り、本節で説明する事柄は、本出願におけるクレームに対する従来技術ではなく、本節への包含によって従来技術であると認めるものではない。
【０００２】
［0002］  自動製造プロセスは、自動車、壁、家具、または任意の数の他の物理的製造などの、出力製品を構築するために使用され得る１つ以上のロボット装置の使用を伴い得る。ロボット装置は、構築プロセス中に使用され得る、グリッパまたはドリルなどの、端部エフェクタ搭載ツールを備え得る。ロボット装置は、そのロボット装置にプロセスを完了させるために一連の特定の動作コマンドおよび他の操作のためのコマンドでプログラムされ得る。
【発明の概要】
【課題を解決するための手段】
【０００３】
［0003］  本開示は、製品を構築するか、または組み立てるために作業現場におけるタスクのロボットオートメーションに関連するシステムおよびプロセスを提供する。自動化タスクが作業現場で実行されているときに、本明細書で開示するシステムおよびプロセスは、構築されている製品（例えば、構造物）のモデルからの逸脱を調整できる。例えば、作業現場オートメーションシステムは、最終製品を構築するためにタスクのシーケンスを調整し得る。本システムは製品を構築しているときに、構築可能性分析を実行して、システムがモデルに従って製品を構築するのを妨げ得る問題を検出し得る。構築可能性分析によってタスクの現在のシーケンスを使用して製品が構築可能ではないと示される場合、システムは、必ずしも製品のモデルを変更することなく、システムが製品の構築を継続できるようにする新しいタスクのシーケンスを生成し得る。例えば、システムが製品を構築している間に問題を検出した場合、本システムは、これまでに構築されている（すなわち、「構築済み」）製品の部分を外して構築して、製品がモデルの要件を満足するように製品を仕上げるのを可能にする、新しいタスクのシーケンスを生成し得る。従って、本システムは、問題が検出される前に完了していた作業を保存し得る。
【０００４】
［0004］  一態様では、コンピュータ実装方法が提供される。本方法は、製品構築の構築前フェーズ中に、製品のモデルに従って製品を構築する第１のタスクのシーケンスを生成することを伴う。本方法は、構築フェーズ中に、１つ以上のロボット装置に、第１のタスクのシーケンスの実行を開始することにより製品を構築させることも伴う。さらに、本方法は、第１のタスクのシーケンスの実行中に、構築可能性分析を実行して、第１のタスクのシーケンスを実行することにより製品を仕上げる実現可能性を判断することを伴う。本方法は、その分析に基づいて、第１のタスクのシーケンスを実行することによって製品を仕上げることは実現可能ではないと判断することをさらに伴う。そして、第１のタスクのシーケンスを実行することによって製品を仕上げることは実現可能ではないと判断することに応答して、本方法は、モデルに従って製品を仕上げるための第２のタスクのシーケンスを生成することを伴い、第２のタスクのシーケンスは第１のタスクのシーケンスとは異なる。さらになお、本方法は、１つ以上のロボット装置に、第２のタスクのシーケンスの実行を開始することにより製品の構築を継続させることを伴う。
【０００５】
［0005］  別の態様では、作業現場オートメーションシステムが提供される。本システムは、１つ以上のロボット装置、ならびに１つ以上のプロセッサおよび１つ以上のデータ記憶装置を含む制御システムを含む。制御システムは、製品を構築するための命令を受信するように構成され、本命令は製品に関する１つ以上の制約を含む。制御システムは、構築前フェーズ中に、（ｉ）製品に対するモデルを決定すること、および（ｉｉ）そのモデルに従って製品を構築するための第１のタスクのシーケンスを生成すること、を行うようにも構成される。さらに、制御システムは、構築フェーズ中に、１つ以上のロボット装置に、第１のタスクのシーケンスのタスクの実行を開始することにより製品を構築させ、第１のタスクのシーケンスの実行中に、第１のタスクのシーケンスの構築可能性分析を実行して、第１のタスクのシーケンスを実行することにより製品を仕上げる実現可能性を判断するように構成される。その分析に基づいて、製品を仕上げることは実現可能ではない場合、制御システムは、モデルに従って製品を仕上げるための第２のタスクのシーケンスを生成することであって、第２のタスクのシーケンスは第１のタスクのシーケンスとは異なること、および１つ以上のロボット装置に、第２のタスクのシーケンスの実行を開始することにより製品の構築を継続させること、を行うように構成される。
【０００６】
［0006］  さらに別の態様では、方法が提供される。本方法は、設計フェーズ中に、製品の第１のモデルに対して第１のタスクのシーケンスを生成することを伴う。本方法は、構築フェーズ中に、１つ以上のロボット装置に、第１のタスクのシーケンスの実行を開始することにより製品を構築させることも伴う。本方法は、第１のタスクのシーケンスの実行中に、第１のモデルの第１の構築可能性分析を実行して、第１のモデルに従って製品を構築する実現可能性を判断すること、およびその分析に基づいて、第２のモデルを決定することをさらに伴う。なおさらに、本方法は、１つ以上のロボット装置に第２のモデルに従って製品の構築を継続させることを伴う。
【０００７】
［0007］  これらおよび他の態様、利点、ならびに代替は、必要に応じて添付の図面を参照して、以下の詳細な説明を読むことにより、当業者には明らかになるであろう。さらに、この概要節および本文書の他の箇所で提供される説明は、制限としてではなく例として、クレームされた主題を例示することを意図していることが理解されるべきである。
【図面の簡単な説明】
【０００８】
【図１】［0008］実施形態例に従った、作業現場を示す。
【図２】［0009］実施形態例に従った、ロボット装置制御システムの構成要素を示す簡略化されたブロック図である。
【図３】［0010］実施形態例に従って、製品を構築するフェーズを示す流れ図である。
【図４】［0011］実施形態例に従って、製品を構築するフェーズのプロセスを示す流れ図である。
【図５】［0012］実施形態例に従い、設計フェーズ中に実行されるプロセスを示す流れ図である。
【図６】［0013］実施形態例に従った、椅子のテンプレートを例示する。
【図７Ａ】［0014］実施形態例に従った、テーブルに関する制約を示す。
【図７Ｂ】［0015］実施形態例に従った、テーブルの設計をそれぞれ示す。
【図７Ｃ】［0015］実施形態例に従った、テーブルの設計をそれぞれ示す。
【図７Ｄ】［0015］実施形態例に従った、テーブルの設計をそれぞれ示す。
【図７Ｅ】［0015］実施形態例に従った、テーブルの設計をそれぞれ示す。
【図７Ｆ】［0015］実施形態例に従った、テーブルの設計をそれぞれ示す。
【図８Ａ】［0016］実施形態例に従った、ツリー構造を例示する。
【図８Ｂ】［0017］実施形態例に従って、タスクを実行するロボット装置を示す。
【図９】［0018］実施形態例に従って、方法を例示する流れ図である。
【図１０】［0019］実施形態例に従って、別の方法を例示する流れ図である。
【図１１】［0020］実施形態例に従った、ロボットの図を示す。
【図１２】［0021］実施形態例に従って、ロボット装置の構成要素を示す簡略化されたブロック図である。
【図１３】［0022］実施形態例に従って、コンピューティング装置の構成要素を示す簡略化されたブロック図である。
【発明を実施するための形態】
【０００９】
［0023］  方法およびシステム例が本明細書で説明される。本明細書で説明する任意の実施形態例もしくは特徴は必ずしも、他の実施形態もしくは特徴よりも好ましいか、または好都合であると解釈されるべきではない。本明細書で説明する実施形態例は、制限することを意図していない。開示するシステムおよび方法のある態様は、様々に異なる方法で配置されて組み合わせることができ、その全ては本明細書で企図されることが容易に理解されるであろう。
【００１０】
［0024］  さらに、図に示す特定の配置は制限と見なされるべきではない。他の実施形態は所与の図に示す各要素よりも多いか、または少ない要素を含み得ることを理解すべきである。その上、例示する要素の一部は、組み合わされるか、または省略され得る。また、実施形態例は図に例示されていない要素を含み得る。
【００１１】
Ｉ．概要
［0025］  本明細書で開示するのは、製品を構築するためのタスクのシーケンスを自動化し得るシステムである。本システムによって構築されている製品は別個の製品であり得るか、またはさらに大きい製品もしくは構造の部分である製品であり得る。製品はユーザーによって設計され得、ユーザーは製品に関する制約も指定し得る。指定された制約は製品の機能的および／または非機能的特徴に関する制約であり得る。制約は、製品を構築するプロセスに関する性能制約でもあり得る。具体的には、製品を構築するために、本システムは、制約を満足する製品のモデルを決定し得る。次いで、本システムは、そのモデルに従って製品を構築するために実行され得るタスクのシーケンスを決定し得る。
【００１２】
［0026］  具体的には、製品の構築には２つのフェーズを伴い得る。第１のフェーズは、２つのサブフェーズ、すなわち、設計フェーズおよびシミュレーションフェーズを伴う、構築前フェーズである。設計フェーズでは、本システムは、製品に対するモデルを決定し得、そのモデルに従って製品を構築するためのタスクのシーケンスも決定し得る。そしてシミュレーションフェーズでは、本システムは、おそらく製品を構築するためのタスクのシーケンスの性能、製品が構築されているときの製品の挙動（例えば、製品の安定性）、および／または製品の中間段階をシミュレートすることにより、製品の構築をシミュレートし得る。製品を構築する第２のフェーズは、構築フェーズである。構築フェーズでは、本システムは、物理的な製品を構築するためにタスクのシーケンスを実行し得る。
【００１３】
［0027］  しかし、いずれかのフェーズにおいて、システムが製品を構築するのを妨げ得るエラーが生じ得る。具体的には、エラーは、本システムに所望の仕様から逸脱した製品を構築させ得る。例えば、構築フェーズ中に、構築済み製品のモデルからの逸脱が生じ得る。かかる逸脱は蓄積して、最終製品において望ましくない影響（例えば、欠陥）を生じ得る。一般に、システムは、構築前フェーズおよび／または構築フェーズにおいて、最終製品に望ましくない影響を生じ得る問題に遭遇し得る。
【００１４】
［0028］  それに応じて、システムが製品を構築するのを妨げ得るか、または所望の仕様を満足しない製品をシステムに構築させ得るエラーを回避するために、本システムは、製品、またはそのある部分を構築する実現可能性を判断する構築可能性分析を実行し得る。一般に、本システムは、構築前フェーズ中に構築前構築可能性分析を実行し得、次いで、構築フェーズ中に（例えば、構築の開始時および／または構築の最中に）構築可能性分析を実行し得る。構築前構築可能性分析は、本システムが製品に対するモデルを正確かつ効率的に決定するのを可能にし得る。構築前構築可能性分析は、特定のタスクのシーケンスで製品が無事完成となり得ることを本システムが検証するのも可能にし得る。そして、構築可能性分析は、本システムが、製品の構築中に生じ得る問題または変更を検出して効果的に適応するのを可能にし得る。問題を検出して適応することにより、本システムは、製品が所望の仕様に従って構築される可能性を改善し得る。
【００１５】
［0029］  一例では、本システムは、設計フェーズにおいて製品のモデルを決定しているとき、第１の構築可能性分析を実行し得る。具体的には、第１の構築可能性分析は、モデルが製品に関する制約を満足するかどうかを判断し得る。本明細書で説明するように、製品制約は、構築している製品を包含する製品のクラスの特徴を定義する。例えば、テーブルに関する製品制約は、そのテーブルは、脚が平らな床の上に置かれた場合に表面が平らまたは水平になるように、表面を支持する１本以上の脚または支持部材を有することであり得る。モデルを決定した後、第１の構築可能性分析は、テーブルのモデルが、他の制約の中でとりわけ、脚の最小数および上面の配向に関する制約を満足するテーブルを記述しているかどうかを判断し得る。分析によりモデルが制約を満足していないと判断されると、本システムは、そのモデルは構築可能ではないと判断し得る。しかし、モデルが制約を満足する場合、分析によりそのモデルは構築可能であると判断され得る。
【００１６】
［0030］  設計フェーズ中に実行される構築可能性分析は、モデルが、例えば、ユーザーによって指定され得る、テーブルに関する他の所望の制約を満足するかどうかも判断し得る。例えば、制約は、他の特徴または特性の中でとりわけ、テーブルの重量制限、重心、安定性、応力（例えば、曲げ応力）、強度（例えば、座屈強度）などの、テーブルの所望の特徴または特性を定義し得る。設計フェーズ中の構築可能性分析は、制約によって定義された非機能的特徴をモデルが満足するかどうかも判断し得る。例えば、本システムは、制約によって定義される所望の美的特徴（例えば、彫刻、造作など）をモデルが満足するかどうかを判断し得る。
【００１７】
［0031］  構築可能性分析によりモデルが構築可能ではないと判断される場合、本システムは次いで新しいモデルを決定し得、そしてその新しいモデルに関して構築可能性分析も実行し得る。このプロセスは循環的であり、従って、構築可能性分析で本システムによって構築可能なモデルが判断されるまで、繰り返され得る。一旦、システムが構築可能なモデルを決定すると、本システムは、構築可能なモデルを満足する製品を構築するために実行され得るタスクのシーケンスを生成し得る。一実施形態では、本システムは、ツリー構造を使用して、製品を構築するための考えられるタスクのシーケンスを生成し得る。次いで、本システムは、製品を構築するための１つの考えられるタスクのシーケンスを選択し得る。
【００１８】
［0032］  一旦、タスクのシーケンスが選択されると、本システムは、シミュレーションフェーズに進み得、その間に本システムはそのタスクのシーケンスの性能をシミュレートし得る。具体的には、本システムは、システムで利用可能な資源を使用してタスクの性能をシミュレートし得る。資源は、タスクを実行するために利用可能な作業員、タスクを実行するために作業員が使用できる利用可能なツール、および製品を構築するために利用可能な材料を含み得る。例えば、本システムは、システムで利用可能な資源（例えば、部品、材料など）を使用してタスクのシーケンスを実行するロボット装置をシミュレートし得る。システムで利用可能な資源を使用してタスクのシーケンスをシミュレートすることにより、本システムは構築可能性分析を実行して、決定されたモデルに従って製品を構築するための資源を有しているかどうかを判断し得る。例えば、シミュレーション中、分析により、タスクのシーケンスの各タスクを実行するように構成され得るロボット装置に本システムがアクセスできるかどうかが判断され得る。例として、テーブルを構築するタスクの１つは、研磨タスクであり得、構築可能性分析により本システムが、研磨タスクを実行するように構成され得るロボット装置を含むかどうかが判断され得る。
【００１９】
［0033］  シミュレーションフェーズ中、本システムは、シーケンスのタスクが実行される順序（「作業順序」とも呼ばれる）も判断し得る。かかるシステムでは、構築可能性分析（シミュレーションフェーズ中）は、タスクが、決定された作業順序に従って実行できるかどうかを判断することも伴い得る。一例では、分析により、タスクが決定された順序で実行される場合、構築中に製品が安定しているかどうかが判断され得る。別の例では、分析により、製品を構築しているときに矛盾が生じるかどうかも判断され得る。例えば、分析により、タスクを実行するために割り当てられたロボット装置間に時間的または空間的な矛盾が生じるかどうかが判断され得る。さらに別の例では、分析により、製品が決定されたタスクのシーケンスを使用して構築される場合に、性能制約が満足されるかどうかが判断され得る。例えば、シミュレーションに基づき、分析により、製品を構築するための推定時間が判断され得、次いで、実行時間が性能制約を満足するかどうかが判断され得る。
【００２０】
［0034］  シミュレーションフェーズ中に構築可能性分析を実行することにより、本システムは、システムで利用可能な資源を使用して製品が構築可能であるかどうかを判断し得る。製品が構築可能ではない場合、本システムは、モデルに従って製品を構築するための新しいタスクのシーケンスを決定し得る。いくつかの例では、本システムは、事前に決定された閾値のシーケンスを検査し得、その各々を分析では構築可能ではないと判断する。これらの例では、本システムは、モデルは構築可能ではないと判断し得、製品に対して新しいモデルを決定するために設計フェーズに戻り得る。逆に、分析により、製品がシステムの資源を使用して構築可能であると判断される場合、本システムは、構築フェーズに移行し得る。
【００２１】
［0035］  構築フェーズでは、本システムは、作業現場に配置されたロボット装置に命令を送信することによって作業現場で製品を構築し得る。命令は、決定された作業順序に従ってロボット装置にタスクを実行させる。このフェーズでは、本システムは、構築可能性分析を実行して、システムが適応する必要があり得る問題または変更が生じているかどうかを判断し得る。具体的には、本システムは、作業現場を示すデータを（例えば、センサーおよび／またはロボット装置からのフィードバックから）受信し得、分析ではそのデータを使用してモデルからの逸脱が生じているかどうかを判断し得る。分析では、将来、逸脱が生じ得るかどうかも判断し得る。分析は、作業現場の条件（例えば、環境条件、障害物）、製品の現在の状態（例えば、完成した構造および／または完成したタスクの状態）、利用可能な資源、制約に対する変更（例えば、ユーザーによる）、および設計からの逸脱（例えば、時間における遅延または構造設計からの逸脱）に基づき得る。分析で逸脱（現在の、または予期される）が検出される場合、分析では製品は構築可能ではないと示され得る。
【００２２】
［0036］  一実施形態では、製品が構築可能ではないという判断に応答して、本システムは、設計フェーズに戻り得る。設計段階では、本システムは、ツリー構造を使用して、元のタスクのシーケンスの代わりに実行すべき製品を構築するための新しいタスクのシーケンスを生成し得る。具体的には、本システムは、ツリー構造を使用して、これまでに構築している製品の部分上に構築するタスクのシーケンスを生成し得る。そのため、新しいタスクのシーケンスは、実行されている作業を保存する。実行されている作業を保存することは、時間と費用を節約し得る。さらに、新しいモデルを生成することは集約的な計算能力および膨大な時間を必要とし得、それは、高額な費用を招いて製品が完成するのを遅らせるので、新しいタスクのシーケンスを生成することは好都合であろう。
【００２３】
ＩＩ．システムおよび方法例
Ａ．作業現場座標フレーム例
［0037］  図１は、実施形態例に従った、作業現場座標フレーム１００を示す。作業現場座標フレーム１００は、物体、マシン、および恐らくは人間がその中に配置され得る物理的環境の一部を定義し得る。作業現場座標フレーム１００は、３次元の形をとり得、様々な目的のために使用され得る。例えば、作業現場座標フレーム１００は、建物または別のプロジェクトの建設が実施されているか、実施間近である建設現場に対して定義され得る。そのため、作業現場座標フレーム１００は、物理的な建築プロセスが物理的世界内で計画されているか、または生じている物理的な段階または複数の段階を含み得る。
【００２４】
［0038］  しかし、本開示の様々な態様が以下で建設現場の文脈で説明されるが、実施態様例は建設現場に制限されず、様々な他の作業現場座標フレーム、例えば、他の例の中でとりわけ、店舗スペース、製造施設、物流設備、オフィススペース、ショッピングセンター、フェスティバル会場、および／または空港など、にまで及び得る。追加として、図１には１つの作業現場座標フレーム１００が示されているが、実施態様例は複数の作業現場座標フレームの文脈で実行され得る。
【００２５】
［0039］  図１に示すように、作業現場座標フレーム１００は複数の資源を含む。資源は、１人以上のアクター、装置、ハードウェア構成要素、および／または物理的材料を含み得る。物理的材料は建設資材１４０であり得、それは建設現場に配置された資材またはツールであり得る。例えば、図１では、建設資材１４０は、れんがのパレットとして示されている。例中では、作業現場座標フレーム１００内のアクターは、ロボットアクターおよび人間のアクターを含み得る。人間のアクターは１つ以上の技能を有し得る。例えば、人間のアクターは大工であり得る。さらに、人間のアクターは、コンピューティング装置を使用して、ロボットアクターおよび装置とインタフェースを取り得る。
【００２６】
［0040］  作業員ロボット１３０は、作業現場座標フレーム１００内でタスクを実行するように構成されたロボット装置であり得る。例示するシナリオでは、作業員ロボット１３０は、ロボットアームに取り付けられた端部エフェクタツールを含む。端部エフェクタツールは作業面に関してタスク、例えば、穴開け、ライス加工、切断、溶接、釘打ち、リベット打ち、研磨、吹き付け、把持、押出、エッチング加工、彫刻、または建物の建設中に典型的に実行される任意の他のタスクなど、を実行するように構成され得る。さらに、作業員ロボット１３０のロボットアームは、異なるタイプの端部エフェクタを取り付けることができる取付台を含み得る。そのため、作業員ロボット１３０が異なるタイプのタスクを実行できるように異なる端部エフェクタは交換され得る。さらに、作業員ロボット１３０は作業現場全体を動くことが可能であり得る。例えば、図１に示すように、作業員ロボット１３０は車輪を含み得る。しかし、可動性を提供するための他の構成（例えば、二足歩行装置、四足歩行装置、トレッド、トラックなど）も可能である。
【００２７】
［0041］  図１に例示するように、作業現場座標フレーム１００は、いくつかのパイロンマーカー１０４を含む。パイロンマーカー１０４は、作業現場座標フレーム１００の境界に、および／または作業現場座標フレーム１００全体に配置され得、３次元座標系１０２を作業現場座標フレーム１００内に確立するために使用され得る。例えば、３次元座標系１０２は、ｘ軸、ｙ軸、およびｚ軸をもつデカルト座標系であり得る。パイロンマーカー１０４の１つは、座標系１０２の原点として指定され得、残りのパイロンマーカー１０４は原点から既知の距離で間隔を空けて置かれ得る。結果として、パイロンマーカー１０４の各々は、座標系１０２内の既知の（ｘ，ｙ，ｚ）座標と関連付けられ得、ｘ、ｙ、およびｚ座標は、それぞれｘ、ｙ、およびｚ軸に沿って原点のパイロンマーカーからの距離に対応する。
【００２８】
［0042］  パイロンマーカー１０４は必ずしも作業現場座標フレーム１００の境界に置かれる必要はなく、代替または追加として作業現場座標フレーム１００全体の様々な既知の位置に配置され得る。例えば、いくつかの実施形態では、パイロンマーカー１０４は、作業現場全体にわたる２次元または３次元グリッドで配置され得る。しかし、他の構成も可能であり、パイロンマーカー１０４は、作業現場座標フレーム１００内の既知の位置に任意の方法で配置され得る。
【００２９】
［0043］  ロボット装置１２０のレーザートラッカーがロボット装置１２０に関してパイロンマーカー１０４の位置を測定できるように、パイロンマーカー１０４は再帰反射であり得る。ロボット装置１２０から既知の座標をもつパイロンマーカーの位置を判断することにより、ロボット装置１２０の座標が導出され得る。ロボット装置１２０は作業現場座標フレーム１００を動き回るので、それは時々、そのレーザートラッカーとパイロンマーカー１０４との間に見通し線（ｌｉｎｅ  ｏｆ  ｓｉｇｈｔ）を提供し得る。これは、ロボット装置１２０が作業現場座標フレーム１００を動き回るときに、ロボット装置１２０の位置に対して更新された座標を提供する。
【００３０】
［0044］  パイロンマーカー１０４に加えて、作業現場座標フレーム１００はいくつかの追加のマーカー１１２を含み得る。マーカー１１２は、作業現場座標フレーム１００全体にわたって様々な対象物体に取り付けられ得る。例えば、図１に示すように、それぞれのマーカー１１２は、ロボット装置１２０、作業員ロボット１３０、および／または建設資材１４０に取り付けられ得る。マーカー１１２の位置は、ロボット装置１２０、作業員ロボット１３０、および／または建設資材１４０と関連付けられた座標系１０２内の座標を提供するために測定され得る。
【００３１】
［0045］  いくつかの実施形態では、作業現場座標フレーム１００内の対象物体の位置を判断することは、３次元座標系内の単一点の位置を単に判断すること以上を伴い得る。例えば、いくつかの実施形態では、点のセットの位置は、対象物体の体積を定義するために判断され得る。例えば、図１を参照すると、建設資材１４０の体積を表す３次元空間が判断され得る。ロボット装置は、建設資材１４０に取り付けられたマーカー１１２のセットの位置を判断し得る。マーカー１１２は建設資材１４０の境界もしくは縁部に取り付けられ得るか、またはいくつかの実施形態では、マーカー１１２は任意の既知の方法で建設資材１４０上に配置され得る。建設資材１４０上に配置されたマーカー１１２のセットの位置を判断することにより、３次元体積の位置が判断されて、作業現場座標フレーム１００内で建設資材１４０の形状を示し得る。同様に、様々な対象物体上に配置されたマーカー１１２のセットの位置を判断することにより、ムーバーロボット１２０、作業員ロボット１３０、または作業現場座標フレーム１００内の任意の他の物体に対して、３次元体積および作業現場座標フレーム１００内でのそれらの位置が判断され得る。
【００３２】
［0046］  いくつかの実施形態では、作業現場座標フレーム１００内の対象物体の位置を判断することは、対象物体のポーズを作業現場座標フレーム１００に対して判断することを含み得る。対象物体のポーズは、その物体の位置および配向の組合せを含み得る。対象物体のポーズを判断するために、とりわけ、分析もしくは幾何学的方法、遺伝的アルゴリズム法、および／または学習に基づく方法を含む、様々なプロセスが使用され得る。
【００３３】
［0047］  対象物体がロボット装置である、いくつかの実施形態では、ロボットのポーズはその動作状態に基づいて判断され得る。ロボット装置は、異なるポーズとなる様々な動作状態を有し得る。制御システムは、ロボット装置の動作状態を判断し得る。ロボット装置の体積および／または形状が既知であるか、またはそうでなければ判断されていると仮定して、制御システムは、判断された動作状態に基づいてロボット装置のポーズを判断し得る。
【００３４】
［0048］  例えば、図１を参照すると、作業員ロボット１３０は、その動作状態に基づいて任意の数のポーズに位置付けられ得るロボットアームを含む。１つの動作状態は、作業面に関してタスクを実行するためにロボットアームを構成することを含み得る。しかし、動作状態は、関連付けられたポーズとなる作業現場座標フレーム１００内でのロボット装置の任意の構成を含み得る。ロボットアームの様々な構成要素の体積および形状は、既知であるか、またはそうでなければ判断されている。従って、作業員ロボット１３０の動作状態に基づきロボットアームのポーズ（例えば、位置および配向）を判断することにより、作業現場座標フレーム１００内でロボットアームによって占有される空間を表す３次元体積が判断され得る。
【００３５】
Ｂ．ロボット制御システム例
［0049］  図２は、本明細書で説明する実施形態に関連して使用できるロボット制御システム２００の構成例を示す。ロボット制御システム２００は、自律的に、半自律的に、および／またはユーザー（複数可）によって提供された指示を使用して、動作するように構成され得る。ロボット制御システム２００は、例えば、建設現場、生産現場、製造現場、検査または品質管理場所などの、作業現場の管理に対して責任を負い得る。例えば、建設または製造の作業現場では、ロボット制御システム２００は、建設の調整または製品（「出力製品」とも区別しないで呼ばれる）の製造に対して責任を負い得る。具体的には、かかるロボット制御システムは、１つ以上のロボット装置を制御して製品を構築し得、また１つ以上のセンサーを使用して環境を監視し得る。
【００３６】
［0050］  図２に例示するように、ロボット装置制御システム２００は、端部エフェクタ２２０を制御するように構成されたロボット装置２１０を含む。端部エフェクタ２２０は、作業面（例えば、出力製品の表面）に関してタスクを実行するように構成されるツール端部エフェクタであり得、ロボット装置２１０の、ロボットアームなどの、可動構成要素に取り付けられ得る。ロボット装置２１０は作業現場（例えば、図１に示される現場１００）内に配置され得る。
【００３７】
［0051］  一例によれば、作業現場は、ロボット装置が組立ラインで部品を取り付けて製品（例えば、テーブル、航空機翼など）を組み立てる、工場の現場であり得る。追加の例によれば、作業現場は、組立ラインではなく、ロボット装置が様々な部品を組み合わせて物理的構造を構築する作業現場であり得る。これらの例では、作業現場は、最終の物理的構造が、完全に構築された場合に、そこから別の位置（例えば、販売業者または顧客の位置）に（例えば、製品として）配送され得る一時的な位置であり得る。
【００３８】
［0052］  さらに別の例によれば、作業現場は、ロボット装置が重い建設資材で作業して橋または道路を建設する、地方自治体の現場であり得る。さらなる例によれば、作業現場は、ロボット装置が建設資材で作業して家または建物を建設する、建設現場であり得る。作業現場は、ロボット装置が住宅資材を取り付けて家の一部分を構築する、家の内部でもあり得る。これらの例では、最終の物理的構造が作業現場内に取り付けられる。
【００３９】
［0053］  ロボット制御システム２００は、作業現場を表す環境データを提供するように構成されたローカルセンサー（複数可）２３０およびグローバルセンサー（複数可）２４０をさらに含み得る。例えば、ローカルセンサー（複数可）２３０およびグローバルセンサー（複数可）２４０は、例えば、システムによって構築されている製品など、作業現場内の様々な物体の位置を判断し得る。別の例として、ローカルセンサー（複数可）２３０およびグローバルセンサー（複数可）２４０は、作業現場の「ワールドマップ」を生成するためにロボット制御システム２００が使用できるデータをロボット制御システム２００に提供し得る。ワールドマップは、作業現場のリアルタイムまたはほぼリアルタイムの表現を示し得る。従って、ローカルセンサー（複数可）２３０およびグローバルセンサー（複数可）２４０は、ロボット制御システム２００がワールドマップを連続的に、または定期的に更新できるように、ロボット制御システム２００にデータを提供し得る。ロボット制御システム２００はまた、センサーデータおよび／またはワールドマップを使用して、作業現場内のタスクの業績も追跡し得る。具体的には、ロボット制御システム２００は、タスクに関与している任意のロボット装置、タスクを実行する際に使用された任意の材料、およびタスク実行の結果として構築済み製品に対する変更を追跡し得る。
【００４０】
［0054］  追加として、ローカルセンサー（複数可）２３０は、ロボット装置２１０上またはロボット装置２１０内部に配置されて、端部エフェクタ２２０の位置を作業面（例えば、構築されている製品の表面）に関して測定するように構成され得る。ローカルセンサー（複数可）２３０は、作業面の特徴をスキャンまたは捕捉するようにも構成され得る。他方、グローバルセンサー（複数可）２４０は、作業現場内に配置され得、出力製品の位置を作業現場内の座標系に関して測定するように構成され得る。グローバルセンサー（複数可）２４０はまた、端部エフェクタ２２０の位置を座標系に関して、または別の物体（例えば、ロボット装置の基部の位置）に関して測定するようにも構成され得る。さらに、グローバルセンサー（複数可）は、ロボット装置２１０の位置も測定するように構成され得る。
【００４１】
［0055］  一実施形態では、グローバルセンサー（複数可）２４０は、超高分解能（例えば、１ミリメートルの１００分の１）のレーザートラッカーシステムを含み得る。レーザートラッカーシステムは、作業現場内で物体の位置を判断するために使用され得る。しかし、グローバルセンサー（複数可）２４０は、レーザートラッカーシステムに制限されず、作業現場内に配置された物体の特徴を捕捉可能な任意のセンサー、例えば、とりわけ、モーションキャプチャセンサー、スキャナ、光検知測距（ＬＩＤＡＲ）センサー、点群センサー、超音波距離センサー、全地球測位システム（ＧＰＳ）受信機、ソナー、光学センサー、無線自動識別（ＲＦＩＤ）システム、近距離無線通信（ＮＦＣ）チップ、無線センサー、無線型センサー、レーダー、カメラ（例えば、カラーカメラ、グレースケールカメラ、および／または赤外線カメラ）、および／または距離センサー（例えば、超音波および／または赤外線）など、を含み得る。
【００４２】
［0056］  そしてローカルセンサー（複数可）２３０は、オプティカルフローデータを提供するための高速度カメラまたは慣性計測装置（ＩＭＵ）を含み得る。しかし、ローカルセンサー（複数可）２３０は、高速度カメラまたはＩＭＵに限定されず、端部エフェクタ２２０の位置を作業面に関して測定可能であるか、または作業面の特徴を捕捉可能な任意のセンサーを含み得る。かかるセンサーは、とりわけ、力センサー、近接センサー、運動センサー（例えば、ジャイロスコープ、および／または加速度計）、負荷センサー、位置センサー、熱画像センサー、深度センサー（例えば、ＲＧＢ−Ｄ、レーザー、立体照明、および／または飛行時間カメラ）、超音波距離センサー、赤外線センサー、光学センサー、無線自動識別（ＲＦＩＤ）システム、近距離無線通信（ＮＦＣ）チップ、無線センサー、光センサー、タッチセンサー（例えば、容量センサー）、スキャナ、カメラ（例えば、カラーカメラ、グレースケールカメラ、および／または赤外線カメラ）、および／または距離センサー（例えば、超音波および／または赤外線）を含む。いくつかの実施形態では、端部エフェクタ２２０の作業面に関する位置は、車輪走行距離計測法および／またはロボット順運動学（ｒｏｂｏｔ  ｆｏｒｗａｒｄ  ｋｉｎｅｍａｔｉｃｓ）を使用して判断され得る。
【００４３】
［0057］  追加として、ローカルセンサー（複数可）２３０およびグローバルセンサー（複数可）２４０は、他の可能な位置の中でとりわけ、作業現場内または作業現場の近くに位置付けられ得る。例えば、ローカルセンサー（複数可）２３０は、ロボット装置２１０に取り付けられ得る。いくつかの実施形態では、グローバルセンサー（複数可）２４０は、例えば、専用センシング設置として、作業現場全体にわたって固定位置に配置され得る。さらに、実施態様例は、携帯電話、ラップトップ、および／またはタブレットなどの、既存の装置内部に組み込まれたセンサーも使用し得る。これらの装置は、建設現場における建設作業員など、生産現場に配置された作業員が所持し得る。
【００４４】
［0058］  図２は、ローカルセンサー（複数可）２３０およびグローバルセンサー（複数可）２４０からデータを受信し得るコントローラ２５０も示し得る。具体的には、ローカルセンサー（複数可）２３０およびグローバルセンサー（複数可）２４０は、センサーデータをコントローラ２５０に通信ユニット２６０を通して提供し得る。通信ユニット２６０は、有線リンクおよび／または無線リンク（例えば、様々な無線送信機および受信機を使用）を含み得る。有線リンクは、例えば、パラレルバスまたは、ユニバーサルシリアルバス（ＵＳＢ）などのシリアルバスを含み得る。無線リンクは、例えば、他の可能性の中でとりわけ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＩＥＥＥ８０２．１１（ＩＥＥＥ８０２．１１はＩＥＥＥ８０２．１１−２００７、ＩＥＥＥ８０２．１１ｎ−２００９、または任意の他のＩＥＥＥ８０２．１１版を指し得る）、セルラー方式（ＧＳＭ、ＧＰＲＳ、ＣＤＭＡ、ＵＭＴＳ、ＥＶ−ＤＯ、ＷｉＭＡＸ（登録商標）、ＨＳＰＤＡ、またはＬＴＥなど）、またはＺｉｇｂｅｅ（登録商標）を含み得る。さらに、セルラー通信プロトコルを使用する「３Ｇ」または「４Ｇ」データ接続（例えば、ＣＤＭＡ、ＧＳＭ、またはＷｉＭＡＸ、および「ＷｉＦｉ」接続に対する８０２．１１の使用）など、複数の有線および／または無線プロトコルが使用され得る。
【００４５】
［0059］  他の例では、ロボット制御システム２００は、ローカルセンサー（複数可）２３０およびグローバルセンサー（複数可）２４０ならびに／またはコントローラ２５０がそれを通してクラウドサーバーと通信し得るアクセスポイントを含み得る。アクセスポイントは、無線アクセスポイント（ＷＡＰ）または無線ルーターの形などの様々な形を取り得る。さらに、接続が、ＣＤＭＡまたはＧＳＭプロトコルなどの、セルラーエアインタフェースプロトコルを使用して行われる場合、アクセスポイントは、セルラーネットワークを介してインターネット接続を提供するセルラーネットワーク内の基地局であり得る。他の例も可能である。
【００４６】
［0060］  コントローラ２５０は、１つ以上のプロセッサ（複数可）２５２、データ記憶２５４、プログラム命令２５６、入力／出力装置２５８、および電源２６２を含むと示されている。コントローラ２５０は本開示の範囲から逸脱することなく追加の構成要素を含み、かつ／または１つ以上の構成要素が除去できるので、コントローラ２５０は例示目的のみで示されていることに留意されたい。さらに、コントローラ２５０の様々な構成要素は任意の方法で配置されて接続され得ることに留意されたい。コントローラ２５０は、全体または一部においてロボット装置２１０に組み込まれ得るか、または、他の可能性の中でとりわけ、デスクトップコンピュータ、ラップトップ、タブレット、ウェアラブルコンピューティングデバイス、および／または携帯電話の形を取り得る。
【００４７】
［0061］  １つ以上のプロセッサ（複数可）２５２からの、各プロセッサは、汎用プロセッサまたは専用プロセッサ（例えば、デジタル信号プロセッサ、特定用途向け集積回路など）であり得る。プロセッサ（複数可）２５２は、データ記憶２５４内に格納されていて、本明細書で説明するコントローラ２５０の機能を提供するために実行可能である、コンピュータ可読プログラム命令２５６を実行するように構成され得る。例えば、プログラム命令２５６は、ローカルセンサー（複数可）２３０およびグローバルセンサー（複数可）２４０から受信したセンサーデータの処理を提供するために実行可能であり得る。
【００４８】
［0062］  データ記憶２５４は、プロセッサ（複数可）２５２によって読み取るか、またはアクセスできる１つ以上のコンピュータ可読記憶媒体を含むか、またはその形を取り得る。１つ以上のコンピュータ可読記憶媒体は、例えば、光、磁気、有機もしくは他のメモリまたはディスク記憶などの、揮発性および／または不揮発性記憶構成要素を含み得、それらは全体または一部においてプロセッサ（複数可）２５２と統合され得る。いくつかの実施形態では、データ記憶２５４は、単一の物理装置（例えば、１つの光、磁気、有機もしくは他のメモリまたはディスク記憶装置）を使用して実装され得、他方、他の実施形態では、データ記憶２５４は、２つ以上の物理装置を使用して実装され得る。さらに、コンピュータ可読プログラム命令２５６に加えて、データ記憶２５４は、他の可能性の中でとりわけ、診断データなどの、追加のデータを含み得る。さらに、コントローラ２５０は、コントローラ２５０の様々な構成要素に電力を供給するように構成された電源２６２も含み得る。電池からの直流または商用電源からの交流電流などの、任意のタイプの電源が使用され得る。
【００４９】
［0063］  図１は、入力／出力装置２５８を含むコントローラ２５０をさらに示す。入力／出力装置２５８は、ディスプレイを通してユーザーに情報を出力し得る。ディスプレイは任意の形式を取り得、画像および／またはグラフィックスをコントローラ２５０のユーザーに投影するように配置され得る。配置例では、入力／出力装置２５８内部のプロジェクタは、画像および／またはグラフィックスの様々な射影をディスプレイの表面に投影するように構成され得る。ディスプレイは、電子発光ディスプレイもしくは液晶ディスプレイなどの、不透明もしくは透明（または半透明）マトリクスディスプレイ、画像をユーザーの目に伝達するための１つ以上の導波路、または画像をユーザーに伝達可能な他の光学要素を含み得る。対応するディスプレイドライバは、かかるマトリックスディスプレイを駆動するためにコントローラ２５０内部に配置され得る。ディスプレイに対する他の配置も可能であり得る。そのため、ディスプレイは、ユーザーが本明細書で開示するシステムとそれを通してやり取りし得るアプリケーションを提供し得るグラフィカルインタフェースを表示し得る。
【００５０】
［0064］  さらに、ロボット制御システム２００は、入力／出力装置２５８のディスプレイ上にワールドマップを表示し得る。それ故、入力／出力装置２５８は、構築済み製品を含め、作業現場のリアルタイムまたはほぼリアルタイムの表現を表示し得る。その結果、ユーザーは出力製品の構築または組み立ての進展を監視できる。作業現場を示すリアルタイムフィードバックデータ（例えば、ローカルセンサー（複数可）２３０およびグローバルセンサー（複数可）２４０からのデータ）に基づいて、表示されたワールドマップは作業現場におけるリアルタイムの変化を反映するように更新され得る。
【００５１】
［0065］  入力／出力装置２５８はタスク制御も含み得る。タスク制御はユーザーに、タスク実行のリアルタイム制御を提供し得る。例えば、ユーザーは、タスクを開始、停止、スキップ、または変更し得る入力を提供することが可能であり得る。例えば、ディスプレイ上に表示されるグラフィカルインタフェースは、ロボット制御システム２００が実行するタスクのタスクキューを含み得る。グラフィカルインタフェースは、ユーザーがタスクを開始、停止、スキップ、または変更するのを可能にし得る。いくつかの実施態様では、グラフィカルインタフェースは、ユーザーが出力製品に関連したパラメータを入力するのを可能にし得る。グラフィカルインタフェースは、寸法、密度、曲率特性、他の幾何形状特性、使用される材料、および／または他の数値入力を含む、出力製品の態様に関連し得るパラメータをユーザーが入力するのを可能にし得る。
【００５２】
［0066］  さらなる例では、グラフィカルインタフェースは、出力製品を構築するタイムラインを含み得る。タイムラインは、現在のタイムスタンプを表すカーソルを有し得、タイムスタンプは、出力製品を構築するプロセスの特定の時点を表し得る。加えて、タイムラインは、プロセスを特定の速度で再生するか、またはプロセスを早送りするか、もしくは巻き戻すためのボタンを含み得る。タイムラインは、作業現場の幾何形状および／または他の態様がディスプレイ内に表示される時点を制御するために使用され得る。さらに、タイムラインは、出力製品をシミュレートする目的で、または作業現場内で起こっている実際の物理的な構築プロセスをソフトウェア内で可視化するためのいずれかで、特定の時点を示すために使用され得る。さらに、ユーザーは出力製品の設計をグラフィカルインタフェースを通して変更できる。
【００５３】
［0067］  いくつかの例では、ディスプレイは、作業現場の複数の３Ｄビューをユーザーに提供し得、ユーザーが特定のビューの向きおよび／またはズームを変更するのを可能にし得る。他の例では、ディスプレイは、数値表現などの、作業現場の他のタイプの表現も、または代わりに、提示し得る。さらなる例では、ユーザーには、作業現場を記述する１つ以上の変数および／またはその作業現場における構築プロセスに影響を及ぼす所望の出力製品をユーザーが変更するのを可能にする３次元（３Ｄ）モデリンググラフィカルインタフェースが提供され得る。
【００５４】
［0068］  さらなる例では、グラフィカルインタフェースは、実行時中に、プロセスの態様を記述するパラメータを含み得る。具体的には、ロボット装置２１０の特徴、例えば、ロボット装置２１０の位置、ロボット装置２１０によって現在使用されている物理的なツール、および／またはロボット装置２１０が現在それに沿って作業現場内で動作している軸など、を記述するロボットパラメータが表示され得る。追加として、端部エフェクタ２２０の動作特性を記述するツールパラメータが表示され得る。例えば、スピンドルに供給されている電力量またはグリッパで使用されている力の量が、グラフィカルインタフェース例内に表示され得る。加えて、グラフィカルインタフェースはセンサーデータを表示し得る。グラフィカルインタフェースは、タスク実行の順序付けおよび／または速度に関連した制御も含み得る。さらに、グラフィカルインタフェースは、ロボット位置および診断などの、ロボットアクターに関連した制御を含み得る。追加として、グラフィカルインタフェースは、出力製品の異なる属性の制御を可能にする。グラフィカルインタフェース内には、実行時中に実行されている１つ以上のタスクを操作するための制御が提供され得る。例えば、ユーザーは、計画されたタスクをリアルタイムで、またはほぼリアルタイムで変更することにより構築プロセスを変更するために、タッチ入力を使用してグラフィカルとやり取りすることが可能であり得る。
【００５５】
［0069］  いくつかの例では、グラフィカルインタフェースは、作業現場内で特定の装置を選択するために、装置制御を含み得る。例えば、グラフィカルインタフェースは、作業現場内のロボットアクターを表示し得、特定のロボット装置の選択を可能にし得る。追加として、グラフィカルインタフェースは、ロボット装置の現在の位置を記述する位置情報などの、ロボットパラメータを含み得る。いくつかの例では、位置は、デカルト座標として、ロボット軸値として、またはその両方で表示され得る。さらなる例では、位置情報は、ロボットアクターの端部エフェクタまたはロボットの端部エフェクタ上に取り付けられた物理的なツールの位置を反映し得る。
【００５６】
［0070］  追加として、入力／出力装置２５８は、ユーザー入力を（例えば、コントローラ２５０のユーザーから）受信し得る。具体的には、入力／出力装置２５８は、他の可能なやり取りの中でとりわけ、スクロール、テキストの提供、および／またはアプリケーションの様々な特徴の選択などの、グラフィカルインタフェースとのやり取りを可能にし得る。入力／出力装置２５８は、様々な形を取り得る。一例では、入力／出力装置２５８は、グラフィカルインタフェースの制御のために使用されるコンピューティングマウスなどの、ポインティングディバイスを含み得る。しかし、入力／出力装置２５８がタッチスクリーンディスプレイを含む場合、グラフィカルインタフェースの制御を可能にするタッチ入力（例えば、指またはスタイラスの使用など）が受信され得る。別の例では、入力／出力装置２５８は、グラフィカルインタフェースを通して表示される数、文字および／または記号の選択を提供するキーボードを含み得る。例えば、入力／出力装置２５８がタッチスクリーンディスプレイを含む配置では、ディスプレイの一部がキーボードを表示し得る。従って、キーボードを含むディスプレイの部分上でのタッチ入力は、ディスプレイを通してグラフィカルインタフェース上に表示される特定の数、文字、および／または記号の選択などの、ユーザー入力となり得る。さらに別の例では、入力／出力装置２５８は、マイクロホンを通してユーザーからなど、音声入力を受信し、次いで、様々な音声認識技術の１つを使用して、ディスプレイを通して表示され得る１つ以上の文字に解釈可能である、音声入力装置を含み得る。他の例も可能である。
【００５７】
Ｃ．作業現場オートメーションシステム
［0071］  実施形態例は、他のタイプの作業現場の中でとりわけ、製造、製作、および建設作業現場における作業現場オートメーションのためのシステムおよびプロセスを提供し得る。作業現場オートメーションは、作業現場における製品の設計および／または構築のプロセスの自動化を伴い得る。具体的には、作業現場オートメーションシステムは、製品に対するモデルを決定し得、次いで、そのモデルに従って製品を構築するために実行され得るタスクのシーケンスを生成し得る。そしてタスクのシーケンスは、作業現場内に配置される利用可能なアクターによって実行され得る。タスクを実行する場合、アクターは、作業現場内に、または作業現場近くに配置された利用可能な資源を利用し得る。一例では、タスクはロボット装置によって実行され得、従って、製品は、一部または完全に、ロボット装置によって構築され得る。
【００５８】
［0072］  図３は、例示的な実施形態に従って、製品を構築するフェーズ３００を示す。図３に例示するように、製品を構築することは、３つのフェーズ、すなわち、設計フェーズ３０２、シミュレーションフェーズ３０４、および構築フェーズ３０６を伴い得る。具体的には、設計フェーズ３０２はおよびシミュレーションフェーズ３０４は、製品を構築する前に実行されるプロセスを伴い得、従って、設計フェーズ３０２はおよびシミュレーションフェーズ３０４は、総称して、構築前フェーズと呼ばれ得る。しかし、以下で説明するように、本システムは、構築フェーズ３０６が開始された後に構築前フェーズに戻り得る。
【００５９】
［0073］  その上、フェーズ３００の各々は、ユーザーからの入力がほとんど、または全くなしで実行され得る。そのため、本システムは、半自律的に、または自律的に製品を構築し得る。さらに、設計フェーズ３０２およびシミュレーションフェーズ３０４は、コンピューティング装置を使用して実行され得る。いくつかの例では、設計フェーズ３０２およびシミュレーションフェーズ３０４は、構築フェーズ３０６中にアクターに命令を提供する同じコンピューティング装置を使用して実行され得る。
【００６０】
［0074］  一実施形態では、図３に例示するように、作業現場オートメーションシステムは、入力３０８を受信し得る。入力３０８は、ユーザーから（例えば、コンピューティング装置への入力を介して）受信され得るか、または別のコンピューティング装置から受信され得る。例内では、入力３０８は、作業現場において製品を構築するか、または組み立てるための命令を示し得る。そのため、入力３０８の受信に応答して、本システムは製品を構築するか、または組み立て得る。具体的には、本システムは、フェーズ３００の各々と関連付けられたプロセスを実行することにより製品を構築し得る。図３に例示するように、入力３０８の受信に応答して、本システムは、設計フェーズ３０２と関連付けられたプロセスを実行することにより製品の設計を決定し得る。
【００６１】
ａ．設計フェーズ
［0075］  図４は、例示的な実施形態例に従って、製品を構築するフェーズ３００の各々と関連付けられているプロセスを示す。図４に例示するように、設計フェーズ３０２の第１のプロセス４０２では、本システムは、製品に対するモデルを決定するように構成され得る。出力製品のモデルは、製品の２次元（２Ｄ）または３次元（３Ｄ）表現であり得る。一般に、モデルは、製品の物理的な構造がどのように構成され、一旦、本システムによって構築されると製品がどのように機能するかを示し得る。モデルは、製品を構築するために使用される材料および部品の特性など、製品の他の特徴も示し得る。
【００６２】
［0076］  一実施態様では、本システムは、本システムのユーザーからモデルを受信することにより、製品に対するモデルを決定し得る。例えば、ユーザーはモデルを設計し得、次いで入力３０８の一部としてモデルを含め得る。典型的には、ユーザーは設計ソフトウェアを使用してモデルを開発し得る。具体的には、設計されるモデルは、他のタイプのモデルの中でとりわけ、２Ｄまたは３Ｄコンピュータ支援設計（ＣＡＤ）であり得る。例えば、建設作業現場では、建設プロジェクトを設計およびモデル化するために建築情報モデリング（ＢＩＭ）が使用され得る。モデルのタイプは、製品タイプおよび／またはユーザーの好みの慣例などの要因に基づき得る。
【００６３】
［0077］  別の実施態様では、本システムは、別のシステムまたは装置からモデルを受信することにより、製品に対するモデルを決定し得る。例えば、入力３０８の受信に応答して、本システムは、モデルをデータベースから取得し得る。データベースは、一般的に構築されるか、または組み立てられる製品などの、様々な製品のモデルを含み得る。追加および／または代替として、データベースは、本システムによって購入できるモデルを格納する商用データベースであり得る。
【００６４】
［0078］  さらに別の実施態様では、本システムは、製品に対するモデルを生成することにより、製品に対するモデルを決定し得る。この実施態様では、入力３０８は製品のタイプおよびその製品に関する１つ以上の制約を示し得る。製品のタイプおよび１つ以上の制約は、例えば、ユーザーによって定義され得る。一旦、本システムが入力３０８を受信すると、本システムは次いで、製品タイプおよび制約に基づいて、製品に対するモデルを生成し得る。より具体的には、本システムは、製品タイプに基づいて、製品タイプを定義する特性を決定し得る。本システムは次いで、決定された特性および１つ以上の制約を使用して、モデルが製品特性および所望の制約を満足するようにモデルを生成し得る。
【００６５】
［0079］  一実施形態では、入力３０８に含まれる制約は、製品の部類または種類などの、製品の所望の高レベル仕様を定義し得る。高レベル仕様は、製品で使用される材料、製品の機能的特徴、製品の美的特徴なども含み得る。例えば、制約は製品のパラメータ（例えば、寸法）に対する最大値および／または最小値を定義し得る。追加および／または代替として、制約は作業現場内の空間的な考慮事項（例えば、どこで製品を構築すべきか、障害物の位置など）を示し得る。追加および／または代替として、制約は、低レベル仕様を定義し得、それは、製品の構成要素間の関係に関する制約（例えば、相対位置決め）を示し得る。追加および／または代替として、制約は、製品の構築プロセスに関する性能制約を示し得る。性能制約の例は、構築時間、速度、製造方法、効率性、費用、材料浪費、使用する資源などを含むが、それらに制限されない。
【００６６】
［0080］  例えば、入力３０８が、製品タイプが椅子であることを示す場合を検討する。入力３０８は、椅子のタイプ（例えば、肘掛け椅子）を示す高レベル制約、肘掛け椅子で使用すべき所望の材料、荷重支持制約（例えば、最小／最大荷重支持、耐荷重面位置など）、作業現場内で肘掛け椅子を設置すべき場所など、を含み得る。次いで、入力３０８に基づいて、本システムは肘掛け椅子に対するモデルを生成し得る。
【００６７】
［0081］  図５は、例示的な実施形態に従って、モデルを決定するプロセス４０２のステップを例示する。図５に示すように、第１のステップ５０２は、本システムが製品のタイプ（例えば、クラス）を定義する特性を決定することであり得る。特性は、製品タイプの構造的に堅固な構造を何が構成するかを定義する機能的特性であり得る。特性は、製品タイプの美的特徴を定義する非機能特性でもあり得る。特性は、その製品タイプに収まる製品の全部または一部の間で共有され得る。例内では、特性は、本システムによってアクセスされ得るデータベース内に格納され得る。
【００６８】
［0082］  図５に示すように、次のステップ５０４は、本システムが製品の構成要素を決定することであり得る。具体的には、本システムは製品タイプを使用して、製品の考えられる構成要素を判断し得る。本システムは、例えば、データベースから、その製品タイプで使用される構成要素を決定し得る。例えば、データベースは、様々な製品タイプのテンプレートを含み得る。テンプレートは、その製品タイプの製品間で良く見られる構成要素など、その製品タイプに含まれ得る構成要素を示す。いくつかの例では、テンプレートはその製品タイプの製品内の構成要素のサンプル配置も示し得る。
【００６９】
［0083］  図６は、例示的な実施形態に従った、肘掛け椅子６００のテンプレート例を示す。図６に示すように、テンプレートは、仕様に合った数の脚および肘掛けなどの、肘掛け椅子６００の構成要素を含み得る。例えば、肘掛け椅子６００は４本の脚６０６を含む。テンプレートは、肘掛け椅子６００が背もたれ６１０、座部６０４、および２本の肘掛け６０２を含み得ることも指定し得る。テンプレートは、肘掛け椅子の構成要素のサンプル配置も指定し得る。例えば、図６に示すように、テンプレートは、脚６０６の各々が一端を座部６０４に連結されることを示し得る。さらに、テンプレートは、製品の構成要素間の考えられる関係（例えば、構成要素の相対位置決め）を示し得る。
【００７０】
［0084］  追加として、テンプレートは、肘掛け椅子６００の考えられる特性を示し得る。図６に示すように、テンプレートは、肘掛け椅子６００の様々な構成要素の寸法の許容値の範囲を示し得る。この例では、肘掛け椅子６００のテンプレートは、他の寸法の中でとりわけ、座部６０４の高さを示す高さＨ１、肘掛けの高さＨ２、肘掛け幅Ｗ２、座部幅Ｗ１、背もたれの高さＨ３、座部長Ｌ２、肘掛け長Ｌ１を例示する。各値は、それぞれの特徴に対する許容値の範囲を示し得る。テンプレートは、肘掛け椅子６００の構成要素が製造され得る仕様に合った材料など、非機能的特性も示し得る。肘掛け椅子６００で使用され得る仕様に合った材料の例は、他の材料の中でとりわけ、無垢材、木製スラット、詰め物の入った革、詰め物をした織物、金属、成型プラスチックを含む。
【００７１】
［0085］  再度図５を参照すると、本システムが製品の構成要素を決定するプロセス５０４を実行した後、本システムは次いで、構成要素の各々に対してモデルを決定するプロセス５０６を実行し得る。一実施態様では、製品タイプのテンプレートは、各構成要素のサンプルモデルを指定し得、従って、本システムは、テンプレートから各構成要素に対するモデルを決定し得る。本システムがサンプル構成要素モデルを使用する場合、本システムは、必要ならば、各モデルが製品に関する制約を満足するように、各構成要素のモデルを調整し得る。
【００７２】
［0086］  別の実施態様では、本システムは、各構成要素に対するモデルを生成し得る。この実施態様では、本システムは、構成要素の特性および制約を使用して、その構成要素に対する幾何形状を反復して生成し得る。構成要素の幾何形状を反復して生成することは、本システムが構成要素の特性に基づき、その構成要素に対するモデルを生成すること、および次いで、そのモデルが構成要素に関する制約を満足するまで反復してモデルを調整することを伴い得る。代替として、本システムは、構成要素の特性に基づき、その構成要素に対して複数のモデルを生成し得、次いで、制約を満足する１つのモデルを選択し得る。
【００７３】
［0087］  図５に例示するように、プロセス５０６を実行した後、本システムは次いで、製品に対するモデルを生成するプロセス５０８を実行し得る。一例では、本システムは、（プロセス５０６中に決定された）製品の各構成要素の１つ以上のモデルを組み込むことにより、１つ以上のモデルを反復して生成し得る。１つ以上のモデルを反復して生成することは、各モデルが構成要素の様々なモデルの異なる順列を含むように、製品に対して１つ以上のモデルを生成することを伴い得る。さらに、いくつかの例では、構成要素のモデルは、そのモデルが、１つの構成要素を別の構成要素に連結するコネクタの設計を含まないように、個別であり得る。かかる例では、製品モデルを生成することは、異なる構成要素間のコネクタの設計を生成することを含み得る。追加および／または代替として、製品モデルを生成することは、製品の美的特徴を設計することを含み得る。
【００７４】
［0088］  一例では、本システムは、ボトムアッププロセスでモデルを生成し得る。本システムは、まず、２つの構成要素をどのように一緒に組み込むかを決定し得る。このステップは、構成要素の機能的特徴、２つの構成要素間のコネクタの設計、美的特徴などを決定することを含み得る。本システムは次いで、２つの構成要素を連結し得、モデルがその２つの構成要素に関する制約を満足するまで、２つの構成要素のモデルを反復して調整し得る。次に、本システムは、別の構成要素をその２つの構成要素とどのように組み合わせるかを決定し得る。このプロセスは、全ての構成要素がモデルに組み込まれるまで繰り返され得る。
【００７５】
［0089］  一旦、本システムが製品のモデルを生成すると、本システムは次いで、モデルが制約を満足するまで、そのモデルを反復して調整し得る。一実施形態では、モデルが制約を満足するようにモデルを反復して調整することは、モデルの１つ以上のパラメータを調整することを含み得る。調整可能なパラメータは、構成要素の幾何形状、構成要素の寸法、構成要素の材料などを含む。本システムは、パラメータの値が、製品の特性によって定義された値の範囲に含まれる限り、これらのパラメータを調整し得る。加えて、本システムは、モデルが任意の性能制約を満足するようにパラメータを調整し得る。本システムが制約を満足するようにモデルを調整できない場合、本システムは、そのモデルは構築可能ではないと判断し得、従ってそのモデルを廃棄し得る。製品に対してモデルを生成する他の方法も可能である。例えば、本システムは、モデルがそのモデルに関する制約を満足するまで、製品の異なる構成要素のパラメータをランダムに反復して調整することにより、モデルを生成し得る。
【００７６】
［0090］  一旦、本システムが製品の１つ以上のモデルを生成すると、本システムは次いで、１つ以上のモデルから１つのモデルを選択し得る。一例では、本システムは、性能制約を最も良く満足するモデルを選択し得る。例えば、性能制約は、本システムが費用に対してモデルを最適化すべきであることを示し得る。それに応じて、本システムは、推定費用が最も少ないモデルを選択し得る。いくつかの例では、本システムのユーザーは、最適化すべきデフォルトの性能制約を定義し得る。代替として、プロジェクトに関する性能制約がない場合、本システムは、制約を満足するいずれのモデルでも選択し得る。性能制約の例は、他の例の中でとりわけ、美的または機能的特性に対する最適化、時間に対する最適化、精度に対する最適化を含む。
【００７７】
［0091］  図７Ａ〜図７Ｆは、製品のモデルを決定するプロセス４０２を実行するシステムの一例を示す。この例では、システムへの入力３０８は、製品がテーブルであることを示し得る。そして入力３０８は、テーブルに関する所望の制約も示し得る。一実施形態では、入力３０８の受信に応答して、本システムは、テーブルのモデルを決定するプロセス４０２を実行することによって、設計フェーズ３０２を開始し得る。具体的には、プロセス４０２の第１のステップは、テーブルの製品特性を決定することである（図５のステップ５０２）。例では、本システムは、テーブルのテンプレートを使用してテーブルの特性を決定し得る。
【００７８】
［0092］  図７Ａは、例示的な実施形態に従った、テーブルのテンプレート例７００を示す。テンプレートは、テーブルの特性、例えば、他の特性の中でとりわけ、テーブルの異なる構成要素、構成要素の可能な配置、テーブルの可能な寸法、テーブルが構築され得る材料など、を示し得る。図７Ａに例示するように、テーブルのテンプレート７００は、支持構造によって支持される表面７０２を含み得る。例えば、テーブルのテンプレート７００は、テーブルの支持構造が１本以上の脚であることを示し得る。
【００７９】
［0093］  さらに、図７Ａは、テーブルに関する所望の制約も示す。例えば、制約は、図７において最大幅ｗ１および最大長ｌ１によって示される、テーブルの最大周長などの、テーブルの所望の寸法を示し得る。制約は、テーブルの所望の高さｈ１も示し得る。前述のように、制約は、テーブルの寸法、テーブルを構築する材料、性能制約、負荷制約なども示し得る。
【００８０】
［0094］  一旦、本システムがテーブルの特性を決定すると、本システムは次いで、テーブルの構成要素の各々に対するモデルを生成し得る。具体的には、本システムは、前述のプロセスを使用して、テーブルの構成要素の１つ以上のモデルを生成し得る。この例では、テーブルの構成要素は、表面７０２および、テーブルが水平面上に置かれた場合に表面７０２が平らまたは水平になるよう表面７０２を支持する構造である。そして、一旦、本システムが構成要素の各々に対して１つ以上のモデルを決定すると、本システムは、前述のプロセスを使用して、テーブルに対する１つ以上のモデルを生成し得る。
【００８１】
［0095］  図７Ｂ〜図７Ｆは各々、例示的な実施形態に従い、本システムによって生成されたテーブルのモデルを例示する。具体的には、図７Ｂ、７Ｃ、７Ｄ、７Ｅ、および７Ｆはそれぞれ、テーブルモデル７０４、７０８、７１０、７１２、および７１４を例示する。これらの図に例示するように、各テーブルは表面および支持構造を含むので、各テーブルモデルはテーブルの特性を満足する。さらに、図７Ｂ〜図７Ｆに例示するように、各テーブルはテーブルに関する制約を満足する。例えば、各テーブルは、制約によって指定された最大寸法以内である。
【００８２】
［0096］  再度図４を参照すると、モデルを決定するステップ４０２の後、本システムは、構築可能性分析４０４を実行するように構成され得る。具体的には、構築可能性分析４０４は、そのモデルが製品制約を満足するかどうかを判断し得る。例えば、図７Ａのテーブル７００に関する製品制約は、テーブルの最大幅ｗ１および最大長ｌ１によって示されるように、テーブルの最大周長を示し得る。この例では、構築可能性分析４０４は、生成されたモデル（例えば、図７Ｂ〜図７Ｆで例示されるモデルの１つ）が、制約を満足するテーブルを記述するかどうかを判断し得る。分析によりモデルがその制約を満足しないと判断される場合、本システムは、そのモデルが構築可能ではないと判断し得る。他方、モデルが制約を満足する場合、分析によりそのモデルは構築可能であると判断され得る。
【００８３】
［0097］  構築可能性分析４０４は、モデルが、製品の他の機能的特徴を満足するかどうかも判断し得る。例えば、機能的特徴は、例えば、重量制限、重心、安定性、応力（例えば、曲げ応力）、強度（例えば、座屈強度）などの、製品の特性を定義し得る。構築可能性分析４０４は、制約によって定義された非機能的特徴をモデルが満足するかどうかも判断し得る。例えば、本システムは、制約によって定義される美的特徴（例えば、彫刻、造作など）をモデルが満足するかどうかを判断し得る。分析に基づき、本システムは、決定要素４０６において進むかどうかを判断し得る。モデルが構築可能ではない場合、本システムは、ステップ４０２に戻って新しいモデルを決定し得る。モデルが構築可能である場合、本システムは、ステップ４０８に進み得る。
【００８４】
［0098］  ステップ４０８で、本システムは、モデルに従って製品を構築するためのタスクのシーケンスを生成し得る。タスクは、製品の構築に関連して実行され得る任意のタイプのタスクであり得る。タスクのタイプ例は、建設タスク、製造タスク、組立てタスク、処理タスクなどを含む。追加として、タスクは、部品、ツール、障害物などの、作業現場内に置かれた物体とやり取りすることを伴い得る。さらに、タスクは、作業現場内で利用可能な１つ以上のツールを使用して実行され得る。
【００８５】
［0099］  一実施形態では、本システムは、選択されたモデルに従って製品を構築するために実行できるタスクのシーケンスの順列を生成し得る。一例では、本システムは、ツリー構造を使用してタスクのシーケンスの順列を生成し得る。ツリー構造は、ルートノードと１つ以上の最終ノードとの間に複数のノードを含み得る。ノードは、ルートノードが１つ以上のノードに分岐するように配置され、その各々も１つ以上のノードに分岐する。ノードは、最終ノードに達するまで、継続的に１つ以上のノードに分岐する。さらに、ルートノードは製品の現在の状態を表し、各ノードはタスクを表し得る。そして、最終ノードは製品構築の完成または最終タスクを示し得る。
【００８６】
［0100］  図８Ａは、例示的な実施形態に従った、ツリー構造８２０を例示する。図８Ａに例示するように、ツリー構造８２２は、ルートノード８２２を含み、それは、構築および／または作業現場の現在の状態を示し得る。図８Ａにさらに例示するように、１つ以上の第１のステップがルートノードから分岐し得る。この例では、２つの可能な第１のステップ８２４および８２６がルートノード８２２から分岐する。さらに例示するように、３つの第２のステップ８２８、８３０、および８３２が第１のステップ８２４から分岐し、３つの第２のステップ８３４、８３６、および８３８。各ノードは、最終ノードに達するまで、１つ以上のノードに分岐し、最終ノードは最終ステップを表す。図８Ａに示すように、第２のノード（楕円によって表される）の各々と最終ノード８４０、８４２、８４４、８４６、８４８、および８５０との間に１つ以上のノードがある。
【００８７】
［0101］  タスクのシーケンスの順列は、ルートノードから最終ノードへの連続したノードのシーケンスを選択することにより決定され得る。選択されたノードのシーケンスは、構築プロセスの順列のステップを表す。例えば、製品のどの部分もまだ構築されていない場合、ルートノードは、製品が構築される作業現場の現在の状態を示し得る。そしてルートノードから分岐するノードから選択される第１のノードは、作業現場内で製品を構築するためのタスクのシーケンスの第１のステップである。しかし、構築されている製品の部分がある場合、ルートノードは製品の構築された部分を示す。そしてルートノードから分岐するノードから選択される第１のノードは、製品の構築された部分を外して構築するタスクのシーケンスの第１のステップである。
【００８８】
［0102］  本システムは次いで、制約を満足するタスクのシーケンスの順列を選択し得る。一例では、本システムは、任意の指定された性能制約に基づいて順列を選択し得る。例えば、性能制約は、本システムが費用に対してモデルを最適化すべきであることを示し得る。それに応じて、本システムは、推定費用が最も少ないタスクのシーケンスの順列を選択し得る。いくつかの例では、本システムのユーザーは、最適化すべきデフォルトの性能制約を定義し得る。代替として、製品に関する性能制約がない場合、本システムは、制約を満足するタスクのシーケンスの順列のいずれでも選択し得る。
【００８９】
［0103］  一旦、本システムがタスクのシーケンスの順列を選択すると、本システムは、シミュレーションフェーズ３０４に進み得る。シミュレーションフェーズ３０４では、本システムは、ステップ４１０でシミュレーションを実行し得る。具体的には、シミュレーションを実行するために、本システムは、選択されたタスクのシーケンスを実行すべき作業順序を決定し得る。これは、各タスクに対して資源を判断すること、必要な資源をそのそれぞれのタスクに割り当てること、およびタスクが実行される順序を決定することを含み得る。いくつかの例では、本システムは、タスクのシーケンスに対して作業順序を決定できないことがあり得、従って、本システムは、選択されたタスクのシーケンスを実行することが可能でないと判断し得る。このシナリオでは、本システムは、タスクのシーケンスのその順列が実現可能ではないと判断し得、タスクのシーケンスの異なる順列を選択し得る。このプロセスは、本システムがモデルに関する制約を満足する順列を選択するまで、反復され得る。
【００９０】
［0104］  一旦、本システムが作業順序を決定すると、本システムは、タスクのシーケンスの性能をシミュレートし得る。シミュレーション中、本システムは構築可能性分析４１２を実行して、そのタスクのシーケンスが本システムの資源を使用して実行できるかどうかを判断し得る。一態様では、本システムは、選択されたタスクのシーケンスが、本システムが利用可能なロボット装置によって実行できるかどうかを判断し得る。一例では、本システムは、選択された順列の各タスクがロボット装置によって実行できるかどうかを判断し得る。構築可能性分析の別の態様では、本システムは、選択されたモデルおよび選択されたタスクのシーケンスに従って製品を構築するための材料および部品を本システムが有しているかどうかを判断し得る。構築可能性が何らかの理由で（例えば、資源不足など）不合格であり得ることを本システムが検出すると、本システムはタスクのシーケンスの異なる順列を選択するために、タスクのシーケンスを生成するステップ４０８に戻り得る。
【００９１】
［0105］  さらに、シミュレーションステップ４１０中に、本システムは、選択されたタスクのシーケンスのタスクを作業現場で利用可能な一人以上のアクターに割り当て得る。一例では、本システムは、作業員のスケジュールを保持し得、それは、作業現場内に配置される作業員（ロボットおよび人間の両方）のスケジュールを示す。本システムは次いで、構築プロセスのタスクを作業現場内で利用可能なアクターに割り当て得る。一例では、製品がもっぱらロボット装置によって構築されるように、本システムは全てのタスクを利用可能なロボット装置に割り当て得る。ロボット装置に割り当てられるタスクはロボット装置の端部エフェクタのタイプによって決まり得る。本システムは、タスクを、その特定のタスクを実行するように構成される端部エフェクタを含むロボット装置に割り当て得る。例えば、物体の移動を伴うタスクは、グリッパ端部エフェクタを含むロボット装置に割り当てられ得る。
【００９２】
ｂ．シミュレーションフェーズ
［0106］  一旦、タスクがアクターに割り当てられると、本システムは、タスクのシーケンスをシミュレートし得る。このステップでは、本システムは、作業現場内でタスクのシーケンスの１つ以上のタスクを実行するための資源を利用してアクターをシミュレートし得る。本シミュレーションは、作業現場内のロボット装置がタスクを作業順序によって指定された順序でどのように実行し得るかを示し得る。いくつかの例では、シミュレーションは、ロボット装置が作業現場内でタスクを実行し得るのと同じ速度で実行され得る。他の例では、シミュレーションは、もっと速い速度で実行され得る。さらに、いくつかの例では、シミュレーションの表現は、コンピューティング装置のディスプレイ上に表示され得る。追加および／または代替として、シミュレーションは将来の分析のために記録され得る。
【００９３】
［0107］  その上、構築可能性分析４１２は、シミュレートされたロボット装置が指定された資源を利用し、作業順序によって指定された順序で、それらの割り当てられたタスクを実行できるかどうかを判断し得る。構築可能性分析４１２の一態様では、本システムは、各シミュレートされたロボット装置がその割り当てられたタスクを実行できるかどうかを判断し得る。一例では、本システムは、各シミュレートされた（タスクを割り当てられた）ロボット装置が、その割り当てられたタスクを実行する際に問題に遭遇するかどうかを判断し得る。例えば、構築可能性分析は、ロボット装置の運動学的制限（例えば、関節制限および／または到達可能性制限）に起因して、失敗または問題を検出し得る。別の例では、本システムは、我々の作業に関する速度または加速度制約を判断し得、ある種のタスク（例えば、膠蒸着工具経路（ｇｌｕｅ  ｄｅｐｏｓｉｔｉｏｎ  ｔｏｏｌｐａｔｈ））が利用可能なロボット装置の能力を超えているかどうかを識別し得る。
【００９４】
［0108］  追加として、別の態様では、構築可能性分析は、作業現場内に配置される物体のいずれかの間で生じ得る衝突、例えば、他の例の中でとりわけ、それらそれぞれのタスクを実行しているロボット装置間の潜在的な衝突、作業現場内でのロボット装置と物体との間の衝突など、を検出し得る。本システムは、各シミュレートされたロボット装置が、その割り当てられたタスクを実行するために配置される必要がある領域に到達し得るかどうかも判断し得る。
【００９５】
［0109］  構築可能性分析４１２のさらに別の態様では、本システムは、シミュレートされた構造が製品の組立てを通して安定しているかどうかを判断し得る。さらに別の態様では、本システムは、本システムで利用可能な資源がプロジェクトを完了するために十分であるかどうかも判断し得る。構築可能性分析４１２中、設計が、選択された構築プロセス（すなわち、選択されたモデルおよび／または選択されたタスクのシーケンス）を使用して構築可能ではないことを本システムが検出すると、本システムは、タスクのシーケンスの異なる順列を選択するためにタスクのシーケンスを生成するステップ４０８に戻ることを決定要素４１４で決定し得る。逆に、本システムがシミュレーションを完了して、タスクのシーケンスでいかなる問題も検出しない場合、本システムは構築フェーズ３０６に進むことを決定要素４１４で決定し得る。
【００９６】
Ｃ．構築フェーズ
［0110］  構築フェーズ４１６で、本システムは、作業現場内のアクターに選択されたタスクのシーケンスを実行させることにより、選択されたモデルを作業現場内で実装し得る。タスクのシーケンスのステップを実行するために、本システムは、割り当てられたタスクをアクターに実行させる命令をアクターに送信し得る。例えば、タスクに対する命令は、ロボット装置がそのタスクを実行するようにスケジュールされている場合、ロボット装置に送信され得る。別の例では、本システムは、命令を人間の作業員にコンピューティング装置を介して送信し得、作業員はそのコンピューティング装置を本システムとやり取りするために使用している。
【００９７】
［0111］  追加として、構築フェーズ３０６で、本システムは、作業現場を示すデータを含むワールドマップを生成して維持し得る。本システムは、作業現場内に配置された装置（例えば、図２のグローバルおよびローカルセンサー２３０および２４０）から受信したデータを使用して、ワールドマップを生成し得る。ワールドマップは、作業現場内の全てのアクターの概観、アクターによって実行されるタスク、および作業現場内での資源および物体の関連位置を含み得る。ワールドマップは、作業現場内の資源の各々の記述、位置、および量も含み得る。例えば、ワールドマップは、本システムが利用可能な各タイプの材料の在庫目録を含み得る。さらに、本システムは、作業現場内に配置された装置（例えば、ロボット装置、センサーなど）から受信したデータを少なくとも使用してワールドマップをリアルタイムで動的に更新し得る。そのため、ワールドマップは作業現場の空間的特徴を定義するだけでなく、作業現場にリアルタイムで生じている可能性のある変化などの、作業現場の物理的な詳細も含み得る。その結果、ワールドマップと物理的世界との間のライブリンクが確立され得る。
【００９８】
［0112］  図８Ｂは、橋８０４を建設しているロボット装置８０２のワールドマップ８００を例示する。図８Ｂに示すように、ワールドマップ８００は、橋８０４の「構築済み」部分８０８Ａを示す。同様に図８Ｂに示すように、ワールドマップは構築すべき橋８０４の部分の設計８０８の概略も示す。この例では、ロボット装置は橋を建設する構築フェーズを開始している。従って、ロボット装置８０２は、資源８０６を使用して橋８０４を建設するためのタスクのシーケンスと関連付けられたタスクを実行している。
【００９９】
［0113］  一実施形態では、本システムは、構築フェーズ３０６中に、構築可能性分析４１８を定期的または連続的に実行し得る。構築可能性分析４１８は、タスクのシーケンスおよび／またはモデルに従って製品を構築する実現可能性を分析する。例では、構築可能性分析４１８は、製品を構築する前に実行され得る。追加および／または代替として、構築可能性分析４１８は、製品が構築されている間に実行され得る。プロセス４１６およびプロセス４１８は図４では２つの別々のプロセスとして示されているが、本システムは、そのプロセスを同時に実行し得ることに留意されたい。そのため、本システムは、作業員が構築４１６を実行しているときに、構築可能性分析４１８を実行し得る。
【０１００】
［0114］  一実施形態では、構築可能性分析４１８を実行するために、本システムは、ワールドマップからのデータを分析して、製品構築の実現可能性に影響を及ぼし得る問題を検出し得る。一態様では、本システムは、製品の構築済み部分を製品のモデルと比較し得る。構築済み部分がモデルから逸脱していることをシステムが検出すると、本システムは、製品が依然として制約を満足しているかどうかを判断し得る。追加および／または代替として、本システムは、実行されていないタスクのシーケンスのタスクが依然として実行できるかどうかを判断し得る。追加および／または代替として、本システムは、実行されていないタスクを実行すると逸脱の度合いがさらに増して、最終製品が制約を満足できなくなるかどうかを判断し得る。
【０１０１】
［0115］  例えば、本システムは、橋プロジェクトのワールドマップ８００を分析し得る。例えば、システムは、構築済み部分８０８Ａがモデルに従って構築されているかどうかを、おそらくは構築済み部分８０８Ａの寸法をモデルの対応する部分の寸法と比較することによって、判断し得る。本システムは、橋の重量支持力などの、構築済み部分８０８Ａの特性も判断し得、判断された特性を所望の特性と比較し得る。本システムは、ロボット装置８０２が橋８０４の未構築部分を建設できるかどうかも、恐らくは、資源８０６が橋８０４を建設するために必要な資源を含むかどうかを判断することによって、判断し得る。本システムは、未構築部分８０８Ｂの建設と関連付けられたタスクが実行できるかどうも判断し得る。例えば、本システムは、橋８０４の建設において遅れがあったかどうか、遅れがあった場合、本システムは、制約によって設定される期限内に未実行のタスクを依然として完了できるかどうかを判断し得る。
【０１０２】
［0116］  本システムは、プロジェクトの構築可能性に影響を及ぼし得るワールドマップからの他のデータを分析し得る。一例では、本システムは、作業現場内の資源が製品の建設を完了するために十分であるかどうかを判断し得る。別の例では、本システムは、タスクのシーケンスの性能を妨害し得る作業現場内の変化または事象を検出し得る。例えば、本システムは、作業現場内の条件が構築プロセスに影響を及ぼし得るような方法で変化している（例えば、著しい温度変化）かどうかを検出し得る。本システムは、作業現場に持ち込まれた新しい障害物も検出し得、それは、タスクのシーケンスの性能に影響を及ぼし得る。
【０１０３】
［0117］  構築可能性分析４１８の別の態様では、本システムは、設計および／または制約に対する変更を示す入力を受信し得る。そしてそれに応答して、本システムは、設計および／または制約に対する変更を考慮して、製品が選択されたタスクのシーケンスを使用して依然として構築可能であるかどうかを判断し得る。例えば、本システムは、性能制約に対する変更を示す入力を受信し得る。それに応答して、本システムは、現在のタスクのシーケンスが新しい性能制約を満足できるかどうかを判断し得る。
【０１０４】
［0118］  製品は現在のタスクのシーケンスを使用して構築可能ではないとシステムが判断すると、本システムは、新しいタスクのシーケンスを選択することを決定し得る。一実施形態では、製品は構築可能ではないという判断に応答して、本システムは、決定要素４２０でエラーを検出し得る。次いで、本システムは、タスクのシーケンスを生成するステップ４０８に戻り得る。タスクのシーケンスを生成するステップ４０８で、本システムは、新しいタスクのシーケンスを生成し得る。一例では、新しいタスクのシーケンスは、以前のタスクのシーケンスと同じ設計を達成し得るが、恐らくは異なるステップを使用する。
【０１０５】
［0119］  一実施形態では、本システムはツリー構造を使用して新しいタスクのシーケンスを生成し得る。前述のように、ツリー構造のルートノードはプロジェクトの現在の状態を表す。この事例では、製品の構築済み部分は、プロジェクトの現在の状態であり、従って、ルートノードとして表される。そのため、ルートノードから分岐する第１のノードは、製品の構築された部分を外して構築する第１のステップを表す。次いで、本システムは、ルートノードから始まってツリー構造の最終ノードで終わるタスクのシーケンスを選択し得る。新しいタスクのシーケンスの最終ノードは、元のタスクのシーケンスと同じ最終ノードであり得るか、または異なる最終ノードであり得る。新しいタスクのシーケンスをこのような方法で生成することにより、本システムは、出力製品の構築済み部分上に構築し得、従って、本システムは、既に実行されている作業を保存し得る。
【０１０６】
［0120］  新しいタスクのシーケンスの生成を容易にするために、本システムは、新しいタスクのシーケンスを生成することを決定する前に実行された最後のタスクを判断し得る。本システムは次いで、そのタスクが関連付けられている構築ツリー内のノードを判断し、そのノードをルートノードとして指定し得る。本システムは次いで、ルートノードと最終ノードとの間の連続したノードのシーケンスを選択し得る。新しいノードのシーケンスは、元々選択されたノードのシーケンスとは異なる。一旦、新しいシーケンスが生成されると、本システムは次いで、図４に示すようなプロセスを実行し得る。
【０１０７】
［0121］  いくつかの例では、本システムは、元の設計に対するタスクのシーケンスが達成可能ではないと判断し得る。本システムは次いで、製品に対するモデルを決定するステップ４０２に戻り得る。ステップ４０２で、本システムは、以前に生成されて、制約を満足するモデルの１つを選択し得る。代替として、本システムは、製品の構築済み部分を外して構築する新しいモデルを生成し得る。一旦、新しいモデルが生成されると、本システムは、各フェーズのプロセスを前述のように実行し得る。いくつかの例では、本システムは、設計フェーズ３０２のプロセスを完了した後、シミュレーションフェーズ３０４をスキップして、構築フェーズ３０６に直接移行し得る。
【０１０８】
［0122］  それにもかかわらず、一旦、新しいタスクのシーケンスおよび／またはモデルが生成されると、本システムは製品の構築を再開し得る。いくつかの例では、本システムが潜在的な問題を、その問題が実際に生じる前に検出すると、本システムは構築４１６を停止することなく、その問題に対応し得る。しかし、生じる問題が現在実行されているタスクに影響を及ぼす場合、本システムは、調整を決定するまで、構築４１６を一時停止し得る。一旦、調整が決定されると、本システムは構築４１６を再開し得る。
【０１０９】
［0123］  前述したロボット制御システムに関連した操作は、１つ以上のプロセッサによる方法として実装され得る。前述のように、ロボット制御システムは、１つ以上のロボット装置を操作し得る。従って、ロボット装置とロボット制御システムとの間で信号の交換があり得る。ロボット制御システムの操作を記述する方法例９００および１０００は、それぞれ図９および図１０に流れ図の形で例示される。
【０１１０】
［0124］  図９は、実施形態例に従い、出力製品を構築する作業現場オートメーションシステムの方法例９００を示す。ブロック９０２に例示するように、方法９００は、製品構築の構築前フェーズ中に、製品のモデルに従って製品を構築するための第１のタスクのシーケンスを生成することを伴う。ブロック９０４によって例示するように、方法９００は、構築フェーズ中に、１つ以上のロボット装置に、第１のタスクのシーケンスの実行を開始することによって製品を構築させることも伴う。ブロック９０６に示すように、方法９００は、第１のタスクのシーケンスの実行中に、構築可能性分析を実行して、第１のタスクのシーケンスを実行することにより製品を仕上げる実現可能性を判断することをさらに伴う。
【０１１１】
［0125］  ブロック９０８によって例示するように、方法９００は、分析に基づき、第１のタスクのシーケンスを実行することにより製品を仕上げることは実現可能ではないと判断することをさらに伴う。ブロック９１０によって示すように、方法９００は追加として、第１のタスクのシーケンスを実行することにより製品を仕上げることは実現可能ではないと判断することに応答して、モデルに従って製品を仕上げるための第２のタスクのシーケンスを生成することを伴い、第２のタスクのシーケンスは第１のタスクのシーケンスとは異なる。ブロック９１２によって示すように、方法９００は、１つ以上のロボット装置に、第２のタスクのシーケンスの実行を開始することによって製品の構築を継続させることをさらに伴う。具体的には、本システムは、第１のタスクのシーケンスを実行する代わりに、第２のタスクのシーケンスの実行を開始する。さらに、このプロセスは循環的であり得る。例えば、第２のタスクのシーケンスの実行中に、本システムは、構築可能性分析に基づき、第２のタスクのシーケンスを実行することにより製品を仕上げることは実現可能ではないと判断し得る。それに応じて、本システムは第３のタスクのシーケンスを生成し得る。その後、本システムは、第２のタスクのシーケンスを実行する代わりに、第３のタスクのシーケンスの実行を開始し得る、などと続く。
【０１１２】
［0126］  図１０は、実施形態例に従い、出力製品を構築する作業現場オートメーションシステムの別の方法例１０００を示す。ブロック１００２によって示すように、方法１０００は、構築前フェーズ中に、製品の第１のモデルに対して第１のタスクのシーケンスを生成することを伴う。さらに、ブロック１００４によって例示するように、方法１０００は、構築フェーズ中に、１つ以上のロボット装置に、第１のタスクのシーケンスの実行を開始することによって製品を構築させることを伴う。ブロック１００６によって示すように、方法１０００は、第１のタスクのシーケンスの実行中に、第１のモデルの第１の構築可能性分析を実行して、第１のモデルに従った製品構築の実現可能性を判断することも伴う。さらに、ブロック１００８によって示すように、方法１０００は、分析に基づき、第２のモデルを決定することを伴う。追加として、ブロック１０１０によって示すように、方法１０００は、１つ以上のロボット装置に、第２のモデルに従って製品の構築を継続させることを伴う。
【０１１３】
Ｄ．ロボット装置例
［0127］  図１１は、実施形態例に従った、ロボット装置を例示する。具体的には、ロボット装置１１００は、１つ以上の異なるツール、グリッパ、またはガイドを装備可能な端部エフェクタ１１０４をもつロボットアーム１１０２を含み得る。ロボットアーム１１０２は、図１１にＡ１〜Ａ６として示されている、６つの自由度に沿った動きが可能であり得る。ある例では、ロボット装置１１００は、左右の動きを可能にする図示されていないレールに沿ってなど、１つ以上の軸Ａ０に沿った動きがさらに可能であり得る。ある実施形態では、端部エフェクタ１１０４を特定の位置に位置付けるために命令が与えられ得、Ａ１〜Ａ６に沿ったロボットアーム１１０４および／または１つ以上の軸Ａ０に沿ったロボット装置アクター１１００の位置が、関連コントローラのプロセスによって計算され得る。代替実施形態では、ロボット装置１１００および／またはロボットアーム１１０２の位置制御は、別々の、個々の設定および制御コマンドを必要とし得る。もっと少ない自由度で動作するロボット装置がいくつかの例では、同様に、または代わりに使用され得る。
【０１１４】
［0128］  ロボット装置１１００は、固定の端部エフェクタを有し得るか、または端部エフェクタを交換することが可能であり得る。端部エフェクタを交換するために、ロボット装置１１００は、ロボット装置１１００上または近くに保管され得る複数の端部エフェクタにアクセスし得る。複数の端部エフェクタは、ツール端部エフェクタ、グリッパ端部エフェクタ、およびガイド端部エフェクタなどの、異なるタイプの端部エフェクタを含み得る。そのため、端部エフェクタを交換する機能を有する、ロボット装置１１００は、異なるタイプの端部エフェクタを必要とする異なるタスクに割り当てられ得る。本明細書で説明するように、ロボット装置１１００は、ロボット装置１１００に割り当てられるタスクに基づき端部エフェクタを選択し得る。
【０１１５】
［0129］  図１２は、ロボット装置１２００の構成例を示す。一般に、ロボット装置１２００は、コンピューティング能力を有していて、作動機能ならびに／または、とりわけ、光および／もしくは音などの物理現象を放出／生成する機能を用いて、その周囲とやり取りする任意の装置であり得る。例えば、ロボット装置１２００は、とりわけ、ヒューマノイドロボット、ロボットアーム、四足ロボットであり得る。ロボット装置は、「ロボットの」ようであるとして当業者に一般に理解される任意の装置でもあり得る。ロボット装置１２００は、とりわけ、ロボット装置、ロボットマニピュレータ、ロボットクライアント、またはロボットとも呼ばれ得る。
【０１１６】
［0130］  ロボット装置１２００は、プロセッサ（複数可）１２０２、データ記憶１２０４、プログラム命令１２０６、コントローラ１２０８、センサー（複数可）１２１０、電源（複数可）１２１２、アクチュエータ（複数可）１２１４、および可動構成要素（複数可）１２１６を含むと示されている。ロボット装置１２００は例示目的のみで示されており、ロボット装置１２００は、本開示の範囲から逸脱することなく、追加の構成要素を含み得、かつ／または１つ以上の構成要素が除去され得ることに留意されたい。さらに、ロボット装置１２００の様々な構成要素は任意の方法で配置されて連結され得ることに留意されたい。
【０１１７】
［0131］  その上、プロセッサ（複数可）２５２、データ記憶２５４、プログラム命令２５６、センサー（例えば、ローカルセンサー（複数可）２３０およびグローバルセンサー（複数可）２４０）、および／または電源（複数可）２６２の前述の説明は、別のシステムまたは配置で使用されているそれぞれの構成要素に関連した以下の任意の説明に適用され得る。例えば、記述のとおり、図１２（他の考えられる図の中でとりわけ）は、別の配置で組み込まれているプロセッサ、データ記憶、プログラム命令、センサー、および／または電源を例示している。問題になっているこれらの構成要素は従って、図２に関連して前述したそれぞれの構成要素と同じか類似の特性（および／または形式）を取り得る。しかし、問題の構成要素は、本開示の範囲から逸脱することなく、他の特性（および／または形式）も取り得る。
【０１１８】
［0132］  記述のとおり、ロボット装置１２００は、コントローラ１２０８（例えば、マイクロコントローラの形を取る）を含み得る。コントローラ１２０８は、処理装置およびデータ記憶を含み得、様々な操作を（例えば、単独で、またはプロセッサ（複数可）１２０２と連携して）管理または実行するように配置され得る。従って、このコントローラ１２０８は前述したコントローラ２５０と同じか類似の特性（および／または形式）を取り得るが、他の特性（および／または形式）も取り得る。そこでいくつかの実施態様では、コントローラ２５０はロボット装置１２００の一部として組み込まれ得、従って、コントローラ２５０はそれ自身、コントローラ１２０８であり得る。他の態様では、コントローラ１２０８は、ロボット装置１２００の一部として含まれ得、コントローラ２５０はロボット装置１２００から分離され得る。実施態様にかかわらず、これらのコントローラは、様々な形を取り得る。例えば、コントローラは、他の可能性の中でとりわけ、チップセット、サーバーシステム、デジタル信号プロセッサ、プログラマブル論理制御装置、および／またはサンプル値データシステムの形を取り得る。その上、コントローラは、本明細書では、とりわけ、制御システムとも呼ばれ得る。
【０１１９】
［0133］  追加として、ロボット装置１２００は、１つ以上のアクチュエータ（複数可）１２１４も含み得る。アクチュエータは、機械的な動きを導入するために使用され得る機構である。具体的には、アクチュエータは、保存されたエネルギーを１つ以上の構成要素の動きに変換するように構成され得る。アクチュエータに動力を供給するために様々な機構が使用され得る。例えば、アクチュエータは、他の可能性の中でとりわけ、化学物質、圧縮空気、水力学、または電力によって動力供給され得る。この配置で、アクチュエータ（複数可）１２１４は、ロボット装置１２００の様々な可動構成要素（複数可）１２１６の動きを引き起こし得る。可動構成要素（複数可）１２１６は、とりわけ、ロボットアーム、脚、および／またはハンドなどの、付属物／部材を含み得る。可動構成要素（複数可）１２１６は、とりわけ、可動基部、車輪、および／または端部エフェクタも含み得る。さらに、ロボット装置１２００が少なくとも１つの端部エフェクタを含む場合、かかる端部エフェクタは、前述したようにとりわけ、ツール（例えば、ねじ回し、ドリル、溶接ごて、またはそれらの何らかの組合せ）および／またはグリッパであり得る。
【０１２０】
Ｅ．コンピューティング装置例
［0134］  図１３は、１つ以上のプロセッサ１３０２、データ記憶１３０４、プログラム命令１３０６、電源（複数可）１３０８、センサー１３１０、ディスプレイ１３１２、およびインプットメソッドエディタ（ＩＭＥ）１３１４を含むコンピューティング装置例１３００の構成要素を示すブロック図である。コンピューティング装置１３００は例示目的のみで示されており、コンピューティング装置１３００は、本開示の範囲から逸脱することなく、追加の構成要素を含み得、かつ／または１つ以上の構成要素が除去され得ることに留意されたい。さらに、コンピューティング装置１３００の様々な構成要素は任意の方法で配置されて接続され得ることに留意されたい。
【０１２１】
［0135］  ディスプレイ１３１２は任意の形（例えば、ＬＥＤ、ＬＣＤ、ＯＬＥＤなど）を取り得る。さらに、ディスプレイ１３１２は、タッチスクリーンディスプレイ（例えば、タブレット上のタッチスクリーンディスプレイ）であり得る。ディスプレイ１３１２は、本明細書で開示するシステムとユーザーがそれを通してやり取りし得るアプリケーションを提供し得るグラフィカルユーザーインタフェース（ＧＵＩ）を示し得る。
【０１２２】
［0136］  さらに、コンピューティング装置１３００は、ＩＭＥ１３１４を介してユーザー入力を（例えば、コンピューティング装置１３００のユーザーから）受信し得る。具体的には、ＩＭＥ１３１４は、他の可能なやり取りの中でとりわけ、スクロール、テキストの提供、および／またはアプリケーションの様々な特徴の選択などの、ＧＵＩとのやり取りを可能にし得る。ＩＭＥ１３１４は、様々な形を取り得る。一例では、ＩＭＥ１３１４は、ＧＵＩの制御のために使用されるコンピューティングマウスなどの、ポインティングディバイスであり得る。しかし、ディスプレイ１３１２がタッチスクリーンディスプレイである場合、ＧＵＩの制御を可能にするユーザータッチ入力（例えば、指またはスタイラスの使用など）が受信され得る。別の例では、ＩＭＥ１３１４は、ＧＵＩを通して表示される数、文字および／または記号の選択を提供するキーボードなどのテキストＩＭＥであり得る。
【０１２３】
［0137］  例えば、ディスプレイ１３１２がタッチスクリーンディスプレイである配置では、ディスプレイ１３１２の部分はＩＭＥ１３１２を表示し得る。従って、ＩＭＥ１３１４を含むディスプレイ１３１２の部分上でのタッチ入力は、ディスプレイ１３１２を介してＧＵＩ上に表示される特定の数、文字および／または記号の選択などのユーザー入力となり得る。さらに別の例では、ＩＭＥ１３１４は、音声入力を、コンピューティング装置１３００のマイクロホンを通してユーザーからなど、受信するために使用され得、次いで、様々な音声認識技術の１つを使用して、ディスプレイ１３１２を介して表示され得る１つ以上の文字に解釈可能である、音声ＩＭＥであり得る。他の例も可能であり得る。
【０１２４】
［0138］  コンピューティング装置１３００は、通信ユニット１３１６も含み得る。通信ユニット１３１６は、有線リンクおよび／または無線リンク（例えば、様々な無線送信機および受信機を使用）を含み得る。有線リンクは、例えば、パラレルバスまたは、ユニバーサルシリアルバス（ＵＳＢ）などのシリアルバスを含み得る。無線リンクは、例えば、他の可能性の中でとりわけ、Ｂｌｕｅｔｏｏｔｈ、ＩＥＥＥ８０２．１１（ＩＥＥＥ８０２．１１はＩＥＥＥ８０２．１１−２００７、ＩＥＥＥ８０２．１１ｎ−２００９、または任意の他のＩＥＥＥ８０２．１１版を指し得る）、セルラー方式（ＧＳＭ、ＧＰＲＳ、ＣＤＭＡ、ＵＭＴＳ、ＥＶ−ＤＯ、ＷｉＭＡＸ、ＨＳＰＤＡ、またはＬＴＥなど）、またはＺｉｇｂｅｅを含み得る。さらに、セルラー通信プロトコルを使用する「３Ｇ」または「４Ｇ」データ接続（例えば、ＣＤＭＡ、ＧＳＭ、またはＷｉＭＡＸ、および「ＷｉＦｉ」接続に対する８０２．１１の使用）など、複数の有線および／または無線プロトコルが使用され得る。
【０１２５】
［0139］  コンピューティング装置１３００は、１つ以上のセンサー、例えば、とりわけ、オプティカルフローセンサー、力センサー、近接センサー、運動センサー（例えば、ジャイロスコープ、および／または加速度計）、負荷センサー、位置センサー、熱画像センサー、深度センサー（例えば、ＲＧＢ−Ｄ、レーザー、立体照明、および／または飛行時間カメラ）、超音波距離センサー、赤外線センサー、光学センサー、無線自動識別（ＲＦＩＤ）システム、近距離無線通信（ＮＦＣ）チップ、無線センサー、光センサー、タッチセンサー（例えば、容量センサー）、カメラ（例えば、カラーカメラ、グレースケールカメラ、および／または赤外線カメラ）、および／または距離センサー（例えば、超音波および／または赤外線）などと接続され得る。
【０１２６】
ＩＩＩ．追加の特徴
Ａ．直列化
［0140］  例では、システムによって生成される様々なデータが直列化されてシステムのデータ記憶（例えば、図１３のデータ記憶１３０４）内に格納され得る。例えば、本システムは、本システムによって生成される他のデータの中でとりわけ、製品モデル、可能なタスクシーケンスを生成するために使用されるツリー、作業現場のワールドマップを直列化できる。具体的には、データを直列化すると、本システムが製品の構築を一時中断し、その後再開するのを可能にし得る。例えば、構築プロセスは、一旦作業時間が終わると一時中断され得、作業時間の開始時に再開され得る。一旦、構築プロセスが再開されると、本システムはデータの最後のインスタンス（例えば、最後のモデル、ツリー構造、ワールドマップなど）を取得し得る。次いで、本システムは、システムが一時中断されていた間に生じた可能性がある変更を吸収するためにデータを更新し得る。一旦、データが更新されると、本システムは、構築可能性分析を実行して、モデルおよび／またはタスクのシーケンスの最後のインスタンスが依然として使用できるかどうかを判断し得る。
【０１２７】
Ｂ．機械学習
［0141］  前述した例に加えて、本システムは、特定の製品がどのように定義されるかを学習するために、機械学習、統計的分析、および／または他の分析技術を使用し得る。具体的には、本システムは、椅子の３Ｄモデルを、例えば、オンラインカタログまたは他のソースから取り込むことにより、特定の製品が何であるかを学習し得る。次いで、本システムは、椅子および／またはその構成要素の機能的特性を学習し得る。例えば、本システムは、製品の特性のセットなどの、データを分析し得る。例えば、特性のセットは、他の特性の中でとりわけ、色、マーク、視覚的パターン、および表面仕上げ／テクスチャなどの、美的特性を示し得る。追加または代替として、特性のセットは、他の特性の中でとりわけ、曲げ強度、脆性、体積弾性率、摩擦係数、圧縮強度、クリープ、弾性、疲労強度、可撓性、破壊靱性、硬度、可塑性、弾力性、せん断強度、剛性、応力／歪特性、表面粗さ、引張強度、靱性、粘性、降伏強度、および重量などの、機械的特性を示し得る。追加および／または代替として、特性のセットは、例えば、形状、サイズ、配向、角度などの、幾何形状特性を示し得る。
【０１２８】
［0142］  追加または代替として、特性のセットは、他の特性の中でとりわけ、キャパシタンス、伝導性、密度、絶縁耐力、場特性、インダクタンス、誘電率、および抵抗などの、電気および／または磁気特性を示し得る。追加または代替として、特性のセットは、他の特性の中でとりわけ、耐食性、引火性、ｐＨ、反応性、安定性、表面エネルギー／張力、および毒性などの化学特性を示し得る。追加または代替として、特性のセットは、他の技術の中でとりわけ、コーティング、切断、穿孔、形成および成形加工、熱処理、接合、機械加工、圧延、研磨、および溶接に対する製造特性を示し得る。追加または代替として、特性のセットは、他の特性の中でとりわけ、吸光度、蛍光、感光性、反射性、屈折率、散乱、および透過率などの、光学特性を示し得る。追加または代替として、特性のセットは、他の特性の中でとりわけ、沸点、臨界点、放射率、融点、比熱、熱伝導度、熱拡散率、および熱膨張などの、熱的特性を示し得る。
【０１２９】
［0143］  例えば、本システムは、椅子を定義する、他の特徴の中でとりわけ、考えられる荷重支持制約（例えば、人の体重、耐荷重面位置など）を学習することにより、椅子とは何かを学習し得る。かかるシステムは次いで、椅子のその定義で椅子のモデルを生成し得る。さらに、本システムは、特定の製品のその定義または理解を精緻化するために使用できるフィードバックを受信し得る。かかるフィードバックは、製品のユーザーからのフィードバックを含み得る。追加として、フィードバックは機械学習モデルに入力され、その結果、本システムは、製品のその定義を連続して精緻化し得る。
【０１３０】
ＩＶ．結論
［0144］  本開示は、本出願で説明する特定の実施形態に関して制限されるものではなく、様々な態様の例示を意図する。当業者には明らかであるように、多くの修正および変形が、その精神および範囲から逸脱することなく行われ得る。本開示の範囲内の機能的に同等な方法および装置が、本明細書で列挙するものに加えて、前述から当業者には明らかであろう。かかる修正および変形は、添付のクレームの範囲に含まれることを意図する。
【０１３１】
［0145］  前述の詳細な記述は、開示するシステム、装置、および方法の様々な特徴および機能を、付随する図面を参照して説明する。図中、文脈で別段の指示がない限り、類似の記号は典型的には、類似の構成要素を識別する。本明細書および図面で説明する実施形態例は、制限することを意図するものではない。本明細書で提示する主題の精神および範囲から逸脱することなく、他の実施形態が利用でき、他の変更を行うことができる。本開示の態様は、本明細書で大まかに説明して、図面で例示するように、多種多様に異なる構成で配置、置換、結合、分離、および設計でき、その全てが本明細書で明示的に企図されることが容易に理解されるであろう。
【０１３２】
［0146］  前述の方法のブロックなどの、情報の処理を表すブロックは、本明細書で説明する方法または技術の特定の論理機能を実行するように構成できる回路に対応し得る。代替または追加として、情報の処理を表すブロックは、プログラムコード（関連データを含む）のモジュール、セグメント、または一部に対応し得る。プログラムコードは、方法または技術内の特定の論理機能または動作を実装するためにプロセッサによって実行可能な１つ以上の命令を含み得る。プログラムコードおよび／または関連データは、ディスクもしくはハードドライブまたは他の記憶媒体を含む記憶装置などの、任意のタイプのコンピュータ可読媒体上に格納され得る。
【０１３３】
［0147］  コンピュータ可読媒体は、レジスタメモリ、プロセッサキャッシュ、およびランダムアクセスメモリ（ＲＡＭ）のような、データを短期間、格納するコンピュータ可読媒体などの、持続性コンピュータ可読記憶媒体も含み得る。コンピュータ可読媒体は、例えば、読み取り専用メモリ（ＲＯＭ）、光もしくは磁気ディスク、読み取り専用コンパクトディスク（ＣＤ−ＲＯＭ）のような、二次もしくは永続的長期記憶などの、プログラムコードおよび／またはデータをより長期間、格納する持続性コンピュータ可読記憶媒体も含み得る。コンピュータ可読媒体は、任意の他の揮発性または不揮発性記憶システムでもあり得る。コンピュータ可読媒体は、例えば、コンピュータ可読記憶媒体、または有形的記憶装置と考えられ得る。
【０１３４】
［0148］  その上、１つ以上の情報伝送を表すブロックは、同じ物理装置内のソフトウェアおよび／またはハードウェアモジュール間の情報伝送に対応し得る。しかし、他の情報伝送は、異なる物理装置内のソフトウェアモジュールおよび／またはハードウェアモジュール間であり得る。
【０１３５】
［0149］  図に示される特定の配置は制限と見なされるべきではない。他の実施形態は所与の図に示されるよりも多いか、または少ない各要素を含み得ることが理解されるべきである。さらに、例示する要素のいくつかは、組み合わせるか、または省略できる。なおさらに、実施形態例は、図に例示されていない要素を含むことができる。
【０１３６】
［0150］  様々な態様および実施形態が本明細書で開示されているが、他の態様および実施形態が当業者には明らかであろう。本明細書で開示する様々な態様および実施形態は例示目的であり、制限することを意図しておらず、真の範囲は以下のクレームによって示されている。
【図１】
0006895539.tif 000002
【図２】
0006895539.tif 000003
【図３】
0006895539.tif 000004
【図４】
0006895539.tif 000005
【図５】
0006895539.tif 000006
【図６】
0006895539.tif 000007
【図７Ａ】
0006895539.tif 000008
【図７Ｂ】
0006895539.tif 000009
【図７Ｃ】
0006895539.tif 000010
【図７Ｄ】
0006895539.tif 000011
【図７Ｅ】
0006895539.tif 000012
【図７Ｆ】
0006895539.tif 000013
【図８Ａ】
0006895539.tif 000014
【図８Ｂ】
0006895539.tif 000015
【図９】
0006895539.tif 000016
【図１０】
0006895539.tif 000017
【図１１】
0006895539.tif 000018
【図１２】
0006895539.tif 000019
【図１３】
0006895539.tif 000020