(57)【要約】  実装例は、ロボットタスクに関する命令を生成することに関する。方法は、エンドエフェクタによる物体への経路ベースタスクのタスク情報を決定することを伴ってよく、タスク情報は、（ｉ）少なくとも１つのタスクパラメータおよび（ｉｉ）物体の公称表現を含む。また方法は、タスク情報に基づいて、エンドエフェクタがタスクを実行するための１または複数のパラメトリック命令を決定することも伴い、１または複数のパラメトリック命令は、タスクの実行時にエンドエフェクタが辿るための工具経路を示す。また方法は、センサデータに基づいて、物体の観察表現を生成すること、および観察表現と公称表現とを比較することも伴う。方法は更に、比較に基づいて、パラメトリック命令を物体の観察表現にマッピングすることを伴う。【選択図】図１
2020521641.tif 000002
【特許請求の範囲】
【請求項１】
エンドエフェクタによる物体への経路ベースタスクのタスク情報を決定することであって、前記タスク情報は、（ｉ）少なくとも１つのタスクパラメータおよび（ｉｉ）前記物体の公称表現を備えることと、
前記タスク情報に基づいて、前記エンドエフェクタが前記タスクを実行するための１または複数のパラメトリック命令を決定することであって、前記１または複数のパラメトリック命令は、前記経路ベースタスクの実行時に前記エンドエフェクタが辿るための工具経路を示すことと、
センサデータに基づいて、前記物体の観察表現を生成することと、
前記物体の前記観察表現と前記公称表現とを比較することと、
前記比較に基づいて、前記１または複数のパラメトリック命令を前記物体の前記観察表現にマッピングすることと、
前記ロボットデバイスに前記経路ベースタスクを実行させるために、前記マッピングされた命令を前記エンドエフェクタへ送信することと
を含む、方法。
【請求項２】
前記１または複数のパラメトリック命令は、前記経路ベースタスクを実行する前記エンドエフェクタが前記少なくとも１つのタスクパラメータを満たすように、前記エンドエフェクタのための命令を定義する、請求項１に記載の方法。
【請求項３】
前記エンドエフェクタが前記タスクを実行するための１または複数のパラメトリック命令を決定することは、前記エンドエフェクタの特徴または前記物体の特徴の少なくとも１つに更に基づく、請求項１に記載の方法。
【請求項４】
前記１または複数のパラメトリック命令をマッピングすることは、前記工具経路を前記物体の前記表現にマッピングすることを含む、請求項１に記載の方法。
【請求項５】
前記１または複数のパラメトリック命令は、前記エンドエフェクタが前記工具経路に沿って動く時に前記エンドエフェクタの動作を制御する１または複数の制御パラメータに関する１または複数の値を更に示す、請求項１に記載の方法。
【請求項６】
前記１または複数の制御パラメータは、前記エンドエフェクタの速度、前記エンドエフェクタによって印加される圧力、及び、前記エンドエフェクタによって印加されるトルクの１または複数を含む、請求項５に記載の方法。
【請求項７】
前記経路ベースタスクは接着タスクであり、前記エンドエフェクタは、前記物体の表面に接着剤を堆積させるアプリケータを備える、請求項１に記載の方法。
【請求項８】
前記１または複数のパラメトリック命令は、前記接着剤アプリケータが前記工具経路に沿って動く速度、堆積させる接着剤の量、及び、前記接着剤アプリケータが前記接着剤を前記表面に分注する圧力の少なくとも１つを更に示す、請求項７に記載の方法。
【請求項９】
前記少なくとも１つのタスクパラメータは、前記表面における所望の堆積被覆領域である、請求項７に記載の方法。
【請求項１０】
前記工具経路に沿って動く前記接着剤アプリケータは、前記接着剤を堆積パターンに堆積させ、前記堆積パターンは、幅、長さ、および深さを有する、請求項７に記載の方法。
【請求項１１】
前記経路ベースタスクはサンディングタスクであり、前記エンドエフェクタはサンダであり、前記タスクパラメータは所望の表面仕上がりを含む、請求項１に記載の方法。
【請求項１２】
前記物体の材料の種類を示す材料特性情報を決定することと、
前記材料特性情報および前記タスクパラメータに基づいて、（ｉ）前記工具経路に沿って動く間の前記エンドエフェクタの動きの速度、および（ｉｉ）前記エンドエフェクタによって付与される圧力を決定することと
を更に含む、請求項１１に記載の方法。
【請求項１３】
前記物体の前記公称表現は、前記物体の組立て前モデルによって提供され、前記物体の前記観察表現は、前記物体の組立て後の表現を含む、請求項１に記載の方法。
【請求項１４】
物体と相互作用するように構成されたエンドエフェクタを備えるロボットデバイスと通信するための少なくとも１つの通信インタフェースと、
スキャナデバイスと通信するための少なくとも１つの通信インタフェースと、
少なくとも１つのプロセッサと、
機能を実行するために前記少なくとも１つのプロセッサによって実行可能なプログラム命令を備える非一時的コンピュータ可読媒体（ＣＲＭ）と、を備え、
前記機能は、
前記エンドエフェクタによる物体の表面への経路ベースタスクに関する１または複数のパラメトリック命令を決定することであって、前記１または複数のパラメトリック命令は、前記表面における経路を示し、前記表面の公称表現に基づくことと、
前記表面の製作が完了したこと、およびそれに応じて前記スキャナデバイスに前記表面の走査を実行させることを決定することと、
前記走査に基づいて、前記表面の観察表現を決定することと、
前記表面の前記観察表現と前記表面の前記公称表現との比較に基づいて、前記表面の前記観察表現に従って前記表面への前記経路ベースタスクの遂行をもたらすために前記１または複数のパラメトリックベース命令を更新することと、
前記ロボットデバイスに前記表面への前記経路ベースタスクを実行させるために、前記少なくとも１つの通信インタフェースを介して、前記１または複数の更新された命令を前記ロボットデバイスへ送信することと
を含む、システム。
【請求項１５】
前記エンドエフェクタが前記タスクを実行するための１または複数のパラメトリック命令を決定することは、前記エンドエフェクタの特徴または前記物体の特徴の少なくとも１つに更に基づく、請求項１４に記載のシステム。
【請求項１６】
前記１または複数のパラメトリック命令は、前記エンドエフェクタのための前記表面に対する更新された経路を決定することを含む、請求項１４に記載のシステム。
【請求項１７】
前記１または複数のパラメトリック命令は、前記エンドエフェクタが前記経路に沿って動く時に前記エンドエフェクタの動作を制御する１または複数の制御パラメータに関する１または複数の値を更に示す、請求項１４に記載のシステム。
【請求項１８】
物体のパラメトリックモデルを分析することと、
前記分析に基づいて、（ｉ）エンドエフェクタによって前記物体に実行される経路ベースタスクのパラメータを決定すること、および（ｉｉ）前記エンドエフェクタのためのパラメトリック工具経路を生成することと、
前記経路ベースタスクのランタイムに、前記物体の表現を示すセンサデータを受信することと、
前記センサデータに基づいて、前記パラメトリック工具経路を前記物体の前記表現にマッピングすることと、
前記エンドエフェクタに、前記マッピングされた工具経路を辿ることによって前記経路ベースタスクを実行させる命令を生成することと、
前記ロボットデバイスに前記物体への前記経路ベースタスクを実行させるために、前記エンドエフェクタへ前記命令を送信することと
を含む、方法。
【請求項１９】
前記エンドエフェクタのためのパラメトリック工具経路を生成することは、前記物体の１または複数の特徴からの距離の関数として前記パラメトリック工具経路を定義することを備える、請求項１８に記載の方法。
【請求項２０】
前記パラメトリック工具経路をマッピングすることは、
前記物体の前記１または複数の特徴を特定するために前記表現を用いることと、
前記物体の前記１または複数の特徴に対する前記パラメトリック工具経路をマッピングすることとを含む、請求項１９に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
［0001］  ロボットは、ロボットが物体を操作することを可能にする１または複数のエンドエフェクタ、および物体の操作をガイドする１または複数のセンサを含んでよい。たとえばロボットは、複数の物体を所望の物理構造に組み合わせるためにエンドエフェクタ（複数も可）およびセンサ（複数も可）を用いてよい。
【発明の概要】
【課題を解決するための手段】
【０００２】
［0002］  ロボットデバイスは、目標物体に関連するタスクを実行するために特定の工具経路を辿るようにエンドエフェクタを制御してよい。実際、エンドエフェクタは一般に、既定の軌道を辿るので、目標物体がそのモデルから逸脱する場合、所定の軌道を辿るエンドエフェクタは、所望のとおりにタスクを実行する可能性が低い。本明細書において、エンドエフェクタが目標物体に関連する経路ベースタスクを実行するための命令を生成するためのシステムおよび方法が開示される。命令は、目標物体のパラメトリックモデルに基づいて生成される。具体的には、システムは、エンドエフェクタのために、パラメトリックモデルの１または複数の特徴に対して定義されたパラメトリック工具経路を決定してよい。その後、ランタイムにおいてシステムは、パラメトリック工具経路をアズビルト目標物体の特徴にマッピングしてよい。物体および／または作業現場に対して工具経路をパラメータ的に定義し、その後、アズビルト目標物体および／または作業現場に工具経路をマッピングすることによって、エンドエフェクタは、目標物体がそのモデルから逸脱する場合でも、所望のとおりに経路ベースタスクを実行することができる。
【０００３】
［0003］  １つの態様において、方法が提供される。方法は、エンドエフェクタによる物体への経路ベースタスクのタスク情報を決定することを伴い、タスク情報は、（ｉ）少なくとも１つのタスクパラメータおよび（ｉｉ）物体の公称表現を備える。方法は更に、タスク情報に基づいて、エンドエフェクタがタスクを実行するための１または複数のパラメトリック命令を決定することを伴い、１または複数のパラメトリック命令は、経路ベースタスクの実行時にエンドエフェクタが辿るための工具経路を示す。また方法は、センサデータに基づいて、物体の観察表現を生成することも伴う。また更に方法は、物体の観察表現と公称表現とを比較することと、比較に基づいて、１または複数のパラメトリック命令を物体の観察表現にマッピングすることを伴う。方法は更に、ロボットデバイスに経路ベースタスクを実行させるために、マッピングされた命令をエンドエフェクタへ送信することを伴う。
【０００４】
［0004］  他の態様において、システムが提供される。システムは、ロボットデバイスと通信するための少なくとも１つの通信インタフェースを含み、ロボットデバイスは、物体表面と相互作用するように構成されたエンドエフェクタを備える。またシステムは、スキャナデバイスと通信するための少なくとも１つの通信インタフェース、および少なくとも１つのプロセッサも含む。システムは更に、機能を実行するために少なくとも１つのプロセッサによって実行可能なプログラム命令を含む非一時的コンピュータ可読媒体（ＣＲＭ）を含み、機能は、エンドエフェクタによる物体の表面への経路ベースタスクに関する１または複数のパラメトリック命令を決定することであって、１または複数のパラメトリック命令は、表面における経路を示し、表面の公称表現に基づくことを含む。また機能は、表面の製作が完了したこと、およびそれに応じてスキャナデバイスに表面の走査を実行させることを決定することも含む。機能は更に、走査に基づいて表面の観察表現を決定すること、および表面の観察表現と表面の公称表現との比較に基づいて、表面の観察表現に従って表面への経路ベースタスクの遂行をもたらすために１または複数のパラメトリックベース命令を更新することを含む。加えて機能は、ロボットデバイスに表面への経路ベースタスクを実行させるために、少なくとも１つの通信インタフェースを介して、１または複数の更新された命令をロボットデバイスへ送信することを含む。
【０００５】
［0005］  また他の態様において、方法が提供される。方法は、物体のパラメトリックモデルを分析することを伴う。方法は更に、分析に基づいて、（ｉ）エンドエフェクタによって物体に実行される経路ベースタスクのパラメータを決定すること、および（ｉｉ）エンドエフェクタのためのパラメトリック工具経路を生成することを伴う。また方法は、経路ベースタスクのランタイムに、物体の表現を示すセンサデータを受信することも伴う。また更に方法は、センサデータに基づいて、パラメトリック工具経路を物体の表現にマッピングすることを伴う。方法は更に、エンドエフェクタに、マッピングされた工具経路を辿ることによって経路ベースタスクを実行させる命令を生成することを伴う。更に方法は、ロボットデバイスに物体への経路ベースタスクを実行させるために、エンドエフェクタへ命令を送信することを伴う。
【０００６】
［0006］  これらの態様、利点、および代替例とともに他の態様、利点、代替例は、添付図面を適宜参照して以下の発明を実施するための形態を読み取ることにより、当業者に明らかになる。なお、この発明の概要および本文書のどこかに記載された説明は、特許請求の範囲に記載の主題事項を限定的にではなく例示的に示すことが意図されている。
【図面の簡単な説明】
【０００７】
【図１】［0007］実施形態例に係る、ロボット制御システムのブロック図を示す。
【図２】［0008］実施形態例に係る、ロボットの図を示す。
【図３】［0009］実施形態例に係る、生産現場において展開されるロボットデバイスの図を示す。
【図４Ａ】［0010］実施形態例に係る、物体のパラメトリックモデルを示す。
【図４Ｂ】［0011］実施形態例に係る、アズビルト物体を示す。
【図５Ａ】［0012］実施形態例に係る、エンドエフェクタによって物体に実行される他のタスクを示す。
【図５Ｂ】［0013］各々が、実施形態例に係る、それぞれの堆積パターン形状を示す。
【図５Ｃ】［0013］各々が、実施形態例に係る、それぞれの堆積パターン形状を示す。
【図５Ｄ】［0013］各々が、実施形態例に係る、それぞれの堆積パターン形状を示す。
【図６】［0014］実施形態例に係る、エンドエフェクタによって物体に実行されるさらに他のタスクを示す。
【図７】［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］  様々な態様および実施形態が本明細書に開示されたが、他の態様および実施形態が当業者には明らかである。本明細書に開示された様々な態様および実施形態は、限定的なものとして意図されておらず、適正な範囲は、以下の特許請求の範囲によって示される。
【図１】
2020521641.tif 000003
【図２】
2020521641.tif 000004
【図３】
2020521641.tif 000005
【図４Ａ】
2020521641.tif 000006
【図４Ｂ】
2020521641.tif 000007
【図５Ａ】
2020521641.tif 000008
【図５Ｂ】
2020521641.tif 000009
【図５Ｃ】
2020521641.tif 000010
【図５Ｄ】
2020521641.tif 000011
【図６】
2020521641.tif 000012
【図７】
2020521641.tif 000013
【図８】
2020521641.tif 000014
【図９】
2020521641.tif 000015
【図１０】
2020521641.tif 000016
【図１１】
2020521641.tif 000017
【国際調査報告】
2020521641.tif 000018
2020521641.tif 000019
2020521641.tif 000020