(57)【要約】      （修正有）【課題】ユーザ対話に関して、持続時間、複雑性、および制約が異なる広範な作業を通じて有効な協働型ロボット・システムおよび方法を提供する。【解決手段】人間−機械協働を可能にするための方法およびシステムにはロボット機能表現および人間−機械協働挙動の動的適応および再使用をサポートする一般化可能フレームワークが含まれる。具体的にはユーザ（Ｕ）−ロボット（Ｒ）協働を可能にするコンピュータ実施方法には以下のステップが含まれる。Ｒの機能をモデリングする機能の提供。パラメータのセットをカプセル化する情報カーネルを用いたＲ機能の専用化。Ｒ機能および前記情報カーネルに基づいたＲ機能要素の提供。Ｕ対話機能に基づいた対話機能要素の提供。Ｒ機能要素の対話機能要素への接続。対話機能要素に基づいたＵ・インタフェースの提供。Ｕ入力および情報カーネルに基づいた作業動作を実行するためにＲ機能要素を介したＲの機能の制御。【選択図】図２
2020192672.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ−ロボット協働を可能にするためのコンピュータ実施方法（６００、７００、８００）であって、
ロボット機能（表１）および１つ以上のユーザ対話機能の構成物（図２、４００）を提供するステップであって、前記ロボット機能が、１つ以上のパラメータのセットに基づいて、ある作業動作タイプを実行するために、ロボット（３４０、３８０）の少なくとも１つの機能をモデリングする、提供するステップ（６１４）と、
前記ロボット機能を、情報カーネルを用いて専用化するステップであって、前記情報カーネルが、前記１つ以上のパラメータのセットをカプセル化する、専用化するステップ（６１６、７１４、７１６）と、
前記ロボット機能および前記情報カーネルに基づいて、ロボット機能要素を提供するステップであって、前記ロボット機能要素が、前記ロボット機能のインスタンスである、提供するステップ（７１２、７１４、７１６）と、
前記１つ以上のユーザ対話機能に基づいて、１つ以上の対話機能要素を提供するステップであって、前記１つ以上の対話機能要素が、前記１つ以上のユーザ対話機能のインスタンスである、提供するステップ（７１８）と、
前記ロボット機能要素を、前記１つ以上の対話機能要素に接続するステップ（６１８、８００）と、
前記１つ以上の対話機能要素に基づいて、前記１つ以上のパラメータのセットに関連付けられたユーザ入力（５１０、５２０、５３０、５４０）を取得するために、１つ以上のＵＩ（３１０、３７０、５００）を提供するステップ（６２０）と、
前記ユーザ入力および前記情報カーネルに基づいて、前記作業動作タイプの作業動作を実行するために、前記ロボット機能要素を介して、前記ロボットの前記少なくとも１つの機能を制御するステップ（６２０）と
を含む、コンピュータ実施方法。
【請求項２】
前記作業動作タイプが、モーション制約（表１（ａ））を含み、
前記作業動作タイプに基づいて、前記作業動作を実行するための工具タイプを提供するステップ（７１６）と、
前記情報カーネル内で、前記工具タイプに関連付けられた前記モーション制約（表１（ａ））を提供する工具挙動制約（図１Ａ、表２）をカプセル化するステップ（７１６、９２４、９３４）と、
前記作業動作を実行するために、１つ以上のＵＩを介して、ユーザ入力（５１０、５２０、５３０、５４０、６２０）を受信するステップと
をさらに含み、
前記ロボットの前記少なくとも１つの機能を制御するステップが、前記作業動作を実行する際に前記ロボットの１つ以上のモーションを制約するために、前記モーション制約を実施するステップ（６２０）を含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
ユーザ入力を受信するステップが、
前記ロボットのユーザ操作を、前記１つ以上のＵＩのアドミッタンス制御ＵＩ（５１０、５２０）を介して、受信するステップ（６２０、図１Ｂ）
をさらに含む、請求項２に記載のコンピュータ実施方法。
【請求項４】
前記ロボット機能要素を接続するステップが、
前記ロボット機能要素の少なくとも１つのＵＩ要件を、前記ロボット機能要素のインタフェース（図２）に基づいて導出するステップであって、前記インタフェースが少なくとも１つの入力インタフェースまたは出力インタフェースを含む、導出するステップ（６１８、９４２）
をさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項５】
前記作業動作タイプに基づいて、前記作業動作を実行するための工具タイプを提供するステップ（６１６）と、
情報カーネル内で、前記工具タイプに関連付けられた工具モーションを提供する工具根本動作（ＴＭＰ）をカプセル化するステップ（６１６、９２４、９３４）と
をさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項６】
ユーザ実演モーションを受信するために、前記工具タイプの工具プロキシを含む、インストラクタ・インタフェース（図１Ｂおよび図５）を提供するステップ（６２０）と、
前記工具プロキシの開始位置を決定するステップと、
前記ユーザ実演モーションから、前記工具プロキシの軌跡データ（５３０）を取得するステップと、
前記ＴＭＰを形成するために、前記ロボットの前記開始位置に基づいて、前記軌跡データを一般化するステップと、
前記ＴＭＰを記憶するステップと
をさらに含む、請求項５に記載のコンピュータ実施方法。
【請求項７】
前記軌跡データを取得するステップが、
前記工具タイプに関連付けられた工具挙動制約（図１Ａ、５１０）を提供するステップであって、前記工具挙動制約が、前記工具タイプに関連付けられたモーション制約（表１（ａ））を提供する、提供するステップ（７１６）と、
前記工具プロキシの１つ以上のモーションを制約するために、前記モーション制約を実施するステップ（６２０）と
をさらに含む、請求項６に記載のコンピュータ実施方法。
【請求項８】
前記ロボットのユーザ操作を介して、ユーザ実演モーションを受信するために、アドミッタンス制御インストラクタ・インタフェース（図１、５３０）を提供するステップ（７１６）と、
前記ロボットの開始位置を決定するステップと、
前記ユーザ実演モーションから、前記ロボットの軌跡データを取得するステップ（５３０、６２０）と、
前記ＴＭＰを形成するために、前記ロボットの前記開始位置に基づいて、前記軌跡データを一般化するステップと、
前記ＴＭＰを記憶するステップと
をさらに含む、請求項５に記載のコンピュータ実施方法。
【請求項９】
前記軌跡データを取得するステップが、
前記工具タイプに関連付けられた工具挙動制約（図１Ａ、５１０）を提供するステップであって、前記工具挙動制約が、前記工具タイプに関連付けられたモーション制約を提供する、提供するステップと、
前記ロボットの１つ以上のモーションを制約するために、前記モーション制約を実施するステップ（６２０）と
をさらに含む、請求項８に記載のコンピュータ実施方法。
【請求項１０】
前記作業動作タイプが、モーション即時再生を含み、前記ロボットの前記少なくとも１つの機能を制御するステップが、
前記工具モーションに基づいて、前記作業動作を実行するために、前記ロボットを制御するステップ（５４０、６２０）
をさらに含む、請求項５に記載のコンピュータ実施方法。
【請求項１１】
前記作業動作タイプが、軌跡生成を含み、
前記情報カーネル内で、知覚テンプレートをカプセル化するステップであって、前記知覚テンプレートが、前記工具モーションを制約するために、対象加工物の少なくとも１つの特性（５２０）を提供する、カプセル化するステップ（７１６、９２４、９３４）と、
前記対象加工物の前記少なくとも１つの特性に関連付けられた、知覚データ（５２０、６２０）を取得するステップと、
前記知覚データに基づいて、前記工具モーションを基礎訓練することにより、モーション軌跡を生成するステップと
をさらに含み、
前記ロボットの前記少なくとも１つの機能を制御するステップが、前記モーション軌跡に基づいて、前記作業動作を実行するために、前記ロボットを制御するステップ（６２０）を含む、請求項５に記載のコンピュータ実施方法。
【請求項１２】
前記ロボット機能を専用化するステップが、
選択された工具タイプに基づいて、前記情報カーネルを選択するステップ（７１４、９２４、９３４）
をさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項１３】
前記ロボット機能および前記１つ以上のユーザ対話機能の前記構成物を含む、協働挙動を提供するステップ（９０４）と、
前記協働挙動のロボット機能構成物要件に基づいて、複数のロボット機能を選択するステップ（９０６）と、
前記複数のロボット機能を、ロボット機能の構成物へと構成するステップ（９０８−９４２）と、
ロボット機能の前記構成物を、前記協働挙動と関連付けるステップ（９４４）と
をさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項１４】
前記複数のロボット機能を構成するステップが、
前記複数のロボット機能のうちの２つのロボット機能を、少なくとも１つの並列合成作用素または直列合成作用素を用いて構成するステップ（９２６、９３４）
をさらに含む、請求項１３に記載のコンピュータ実施方法。
【請求項１５】
ロボット機能の前記構成物の複数のＵＩ要件を、互換関数をロボット機能の前記構成物に実行することによって導出するステップと、
前記複数のＵＩ要件を満たす複数の対話機能を決定するステップと、
前記複数のＵＩ要件に基づいて、ロボット機能の前記構成物および前記複数の対話機能の間のマッピングを生成するステップ（９４２）と
をさらに含む、請求項１３に記載のコンピュータ実施方法。
【請求項１６】
複数のロボット機能要素を提供するステップであって、前記複数のロボット機能要素が、前記複数のロボット機能のインスタンスである、提供するステップ（９０６）と、
前記複数のロボット機能要素のロボット機能要素のペア間のリンクを、前記協働挙動のリンク要件に基づいて形成するステップであって、ロボット機能要素の前記ペアが、配信者ロボット機能要素および購読者ロボット機能要素を含む、形成するステップ（９４２）と
をさらに含む、請求項１３に記載のコンピュータ実施方法。
【請求項１７】
前記複数のロボット機能要素、前記１つ以上の対話機能要素、および前記リンクを、独立した処理において、それぞれ提供するステップ
をさらに含む、請求項１６に記載のコンピュータ実施方法。
【請求項１８】
前記協働挙動に関連付けられた挙動マニフェスト（４００）に基づいて、前記ロボット機能構成物要件（４２０ａ、４２５ａ）および前記リンク要件（４２０ｃ、４２５ｃ）を提供するステップ
をさらに含む、請求項１６に記載のコンピュータ実施方法。
【請求項１９】
ユーザ−ロボット協働を可能にするためのシステムであって、
命令を記憶する、非一時的メモリ（１０１４）と、
前記命令を実行して、前記システムに、
ロボット機能（表１）および１つ以上のユーザ対話機能の構成物（図２、４００）を提供するステップであって、前記ロボット機能が、１つ以上のパラメータのセットに基づいて、ある作業動作タイプを実行するために、ロボット（３４０、３８０）の少なくとも１つの機能をモデリングする、提供するステップ（６１４）と、
前記ロボット機能を、情報カーネルを用いて専用化するステップであって、前記情報カーネルが、前記１つ以上のパラメータのセットをカプセル化する、専用化するステップ（６１６、７１４、７１６）と、
前記ロボット機能および前記情報カーネルに基づいて、ロボット機能要素を提供するステップであって、前記ロボット機能要素が、前記ロボット機能のインスタンスである、提供するステップ（７１２、７１４、７１６）と、
前記１つ以上のユーザ対話機能に基づいて、１つ以上の対話機能要素を提供するステップであって、前記１つ以上の対話機能要素が、前記１つ以上のユーザ対話機能のインスタンスである、提供するステップ（７１８）と、
前記ロボット機能要素を、前記１つ以上の対話機能要素に接続するステップ（６１８、８００）と、
前記１つ以上の対話機能要素に基づいて、前記１つ以上のパラメータのセットに関連付けられたユーザ入力（５１０、５２０、５３０、５４０）を取得するために、１つ以上のＵＩ（３１０、３７０、５００）を提供するステップ（６２０）と、
前記ユーザ入力および前記情報カーネルに基づいて、前記作業動作タイプの作業動作を実行するために、前記ロボット機能要素を介して、前記ロボットの前記少なくとも１つの機能を制御するステップ（６２０）と
を含む方法（６００、７００、８００）を実行させる、プロセッサ（１００２）と
を含む、システム。
【請求項２０】
プロセッサ（１００２）上で実行されたとき、
ロボット機能（表１）および１つ以上のユーザ対話機能の構成物（図２、４００）を提供するステップであって、前記ロボット機能が、１つ以上のパラメータのセットに基づいて、ある作業動作タイプを実行するために、ロボット（３４０、３８０）の少なくとも１つの機能をモデリングする、提供するステップ（６１４）と、
前記ロボット機能を、情報カーネルを用いて専用化するステップであって、前記情報カーネルが、前記１つ以上のパラメータのセットをカプセル化する、専用化するステップ（６１６、７１４、７１６）と、
前記ロボット機能および前記情報カーネルに基づいて、ロボット機能要素を提供するステップであって、前記ロボット機能要素が、前記ロボット機能のインスタンスである、提供するステップ（７１２、７１４、７１６）と、
前記１つ以上のユーザ対話機能に基づいて、１つ以上の対話機能要素を提供するステップであって、前記１つ以上の対話機能要素が、前記１つ以上のユーザ対話機能のインスタンスである、提供するステップ（７１８）と、
前記ロボット機能要素を、前記１つ以上の対話機能要素に接続するステップ（６１８、８００）と、
前記１つ以上の対話機能要素に基づいて、前記１つ以上のパラメータのセットに関連付けられたユーザ入力（５１０、５２０、５３０、５４０）を取得するために、１つ以上のＵＩ（３１０、３７０、５００）を提供するステップ（６２０）と、
前記ユーザ入力および前記情報カーネルに基づいて、前記作業動作タイプの作業動作を実行するために、前記ロボット機能要素を介して、前記ロボットの前記少なくとも１つの機能を制御するステップ（６２０）と
を含む方法を実行する命令を含む、非一時的コンピュータ可読記憶媒体（１０１４）。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権の主張）
本出願は、２０１４年９月２日に出願された、Ｋｅｌｌｅｈｅｒ  Ｇｕｅｒｉｎ、Ｇｒｅｇｏｒｙ  Ｄ．  Ｈａｇｅｒ、およびＳｅｂａｓｔｉａｎ  Ｒｉｅｄｅｌらによる「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｆｌｅｘｉｂｌｅ  Ｈｕｍａｎ−Ｍａｃｈｉｎｅ  Ｃｏｌｌａｂｏｒａｔｉｏｎ」という表題の米国特許出願公開第１４／４７５，１８４号明細書に関連したものであり、同出願を基礎とする出願優先権を主張し、その内容の全体を参照により本明細書に組み込む。
【０００２】
（政府支援に関する陳述）
本発明は、米国国立科学財団（Ｎａｔｉｏｎａｌ  Ｓｃｉｅｎｃｅ  Ｆｏｕｎｄａｔｉｏｎ）によって授与されたグラント番号ＮＲＩ−１２２７２７７のもと、米国政府の支援を受けてなされたものである。米国政府は、本発明に対する一定の権利を有する。
【０００３】
本開示は一般に、ロボット機能表現および人間−機械（ｈｕｍａｎ−ｍａｃｈｉｎｅ）協働挙動の動的適応および再使用をサポートする一般化可能フレームワークを介した、人間−機械協働を可能にするためのシステムおよび方法に関する。
【背景技術】
【０００４】
ロボットによる産業オートメーションは、溶接、裁断、プレス、塗装、重量物処理、精密材料加工、などの作業の規模拡大に多大な利点を提供することから、大規模製造において著しい成功を収めている。大規模製造におけるロボットオートメーションの成功は、その利用を中小製造業（以下、「ＳＭＥ」という。）にまで広げたいという長年の願望をもたらした。しかし、大規模製造とは対照的に、ＳＭＥの製造プロセスは概して、生産量が少なく、かつ／または製品が多岐にわたることを特徴とする。その結果、基盤施設、専門の社員、装置一式、および柔軟なロボットオートメーションのためのプログラミングを償却する能力が、ＳＭＥの場合は大きく減じてしまう。
【０００５】
ＳＭＥでのプロセスには、時として高レベルなカスタマイズを要する作業が含まれるため、必然的に人間の手による技術や判断が必要となる。たとえば、修繕作業および受注生産プロセスは、予期せぬ加工物のばらつきや設備改造に順応しなくてはならない。そのような場合、既存の人間中心型製造プロセスでは、効果的な人間集中型プロセスに加えて、その繰り返しや軽減以外では、どこで、どのように、ロボットオートメーションが有用であり得るかの判断が困難なこともある。数名の熟練社員を擁する、特注家具の製造に特化したＳＭＥを例にとる。このＳＭＥは、ドリル作業またはサンダ作業など、巧妙な動作を伴う反復作業をロボット・システムを用いて自動化することにより、自社社員の効率性および生産性の向上を図ろうとする可能性がある。しかし、この場合、流通しているロボット・システムは役に立たない。なぜなら、こうしたロボット・システムでは、ＳＭＥが自社社員の既存の作業知識および作業経験を活用することが不可能だからである。
【０００６】
したがって、先行技術が提示する、これらおよび他の問題を克服するためのシステムおよび方法が求められている。
【発明の概要】
【０００７】
多くの作業領域において、自動化されたロボット・システムは未だ活用されていない。なぜなら、こうしたロボット・システムとの柔軟かつ効率的な対話を可能にする、適切な協働システムが存在しないからである。こうした作業領域の例としては、ＳＭＥでのプロセス、物理的な在宅障害者支援、協働型ロボット手術、などが挙げられる。これらの作業領域では、作業を手動で行うことや完全に自動化することは、どちらも望ましくなく、現実的でもない。したがって、柔軟かつ効率的なユーザ−ロボット対話を提供し、ユーザ対話に関して、持続時間、複雑性、および制約が異なる広範な作業を通じて有効な、協働型ロボット・システムおよび方法が求められている。
【０００８】
さまざまな実施形態による、例示的協働型ロボット・システムは、広範な作業の実行に向けた一般化可能な方法で命令または訓練することが可能であり、再訓練することなく、優雅に作業間の切り換えを行うことができる。協働型ロボット・システムは、ユーザの役割とロボット機能の広がりに関して人間−ロボット協働動作をサポートするとともに、ロボット機能と、ユーザ・インタフェースまたは対話パラダイムである特定のユーザ対話機能へとロボット機能を関連付ける協働挙動とのセットを介して、人間−ロボット・システムをモデリングする。ロボット機能は、他のロボット機能と複合化すること、および特定の作業のために専用化することが可能である。作業を実行するために、協働型ロボット・システムは、工具アフォーダンスまたは工具挙動制約、工具根本動作、および知覚基礎訓練テンプレートなど、さまざまな作業関連情報またはパラメータを使用して、ロボット機能を動的に適応させることができる。特定の作業およびロボット機能について、協働型ロボット・システムは、利用可能なインタフェースの制約を受ける、作業を達成するためのロボット機能によって要求される１つ以上のユーザ対話モダリティを決定しなくてはならない。したがって、１つ以上のロボット機能および１つ以上のユーザ対話機能の構成物を含む協働挙動は、ユーザ対話のためのロボット機能の要件を満たすためにユーザ対話機能をロボット機能にマッピングしなくてはならない。
【０００９】
本開示の実施形態は、ロボット機能表現および人間−機械協働挙動の動的適応および再使用をサポートする一般化可能フレームワークを介した、人間−機械協働を可能にするためのシステムおよび方法に関する。具体的には、ユーザ−ロボット協働を可能にするコンピュータ実施方法が、ロボット機能および１つ以上のユーザ対話機能の構成物を提供するステップであって、ロボット機能が、１つ以上のパラメータのセットに基づいて、ある作業動作タイプを実行するために、ロボットの少なくとも１つの機能をモデリングする、提供するステップと、ロボット機能を、情報カーネルを用いて専用化するステップであって、情報カーネルが、１つ以上のパラメータのセットをカプセル化する、専用化するステップと、ロボット機能および情報カーネルに基づいて、ロボット機能要素を提供するステップであって、ロボット機能要素が、ロボット機能のインスタンスである、提供するステップと、１つ以上のユーザ対話機能に基づいて、１つ以上の対話機能要素を提供するステップであって、１つ以上の対話機能要素が、１つ以上のユーザ対話機能のインスタンスである、提供するステップと、ロボット機能要素を、１つ以上の対話機能要素に接続するステップと、１つ以上の対話機能要素に基づいて、１つ以上のパラメータのセットに関連付けられたユーザ入力を取得するために、１つ以上のＵＩを提供するステップと、ユーザ入力および情報カーネルに基づいて、作業動作タイプの作業動作を実行するために、ロボット機能要素を介して、ロボットの少なくとも１つの機能を制御するステップとを含む。
【００１０】
本開示の実施形態が持つさらなる目的および利点は、以下の記述に部分的に記載され、また同記述からある程度は明白なものとなるが、実施形態を実践すれば習得され得るものである。実施形態が持つ目的および利点は、添付の請求項において具体的に指し示す、諸要素および組み合わせによって実現され、達成される。
【００１１】
以上の概要および以下の詳述は、ともに例示的かつ説明的なものにすぎず、特許請求される実施形態を限定するものではないことを理解されたい。
【図面の簡単な説明】
【００１２】
【図１Ａ】本開示の実施形態による、種々の工具に関連した、種々の工具挙動制約の例を示す図である。
【図１Ｂ】本開示の実施形態による、ユーザがモーション軌跡を指定するためにロボットのアバターと対話可能な没入型仮想現実環境を示す図である。
【図２】ユーザおよびロボットに結び付けられた機能の構成物を含む協働挙動の例を示す図である。
【図３Ａ】本開示の原理による、人間−機械協働システムの例示的一実施形態を示す図である。
【図３Ｂ】本開示の原理による、人間−機械協働システムの例示的一実施形態を示す図である。
【図４】本開示の原理による、協働挙動によって要求される挙動構成要素を指定する挙動マニフェストの例を示す図である。
【図５】本開示の原理による、人間−機械協働システムによって提供されるユーザ・インタフェースの例を示す図である。
【図６】本開示の実施形態による、ロボット機能表現および人間−機械協働挙動の動的適応および再使用をサポートする一般化可能フレームワークを介した、人間−機械協働を可能にするための例示的方法を示す流れ図である。
【図７】本開示の実施形態による、人間−機械協働挙動の実装に向けた種々の機能およびリンクを提供するための例示的方法を示す流れ図である。
【図８】本開示の実施形態による、人間−機械協働挙動の実装に向けた種々の機能およびリンクを提供するための例示的方法を示す流れ図である。
【図９】本開示の実施形態による、人間−機械協働挙動を構成するための例示的方法を示す流れ図である。
【図１０】本開示に即して、開示の実施形態を実行するための例示的コンピュータ・システムを示す図である。
【発明を実施するための形態】
【００１３】
添付図面に示す例示的実施形態について、以下で詳しく論及する。同一または類似の部分に対する言及には、各図面を通して同一の参照番号が適宜使用される。
【００１４】
簡潔に例示するために、本開示の原理は、主にその例示的実施形態を参照することによって説明される。ただし、同一の原理はあらゆる種類の情報およびシステムに対して等しく適用可能であり、その中で実装可能であること、ならびに、そのような変形形態はいずれも本開示の真の精神および範囲から逸脱するものではないことは、当業者であれば容易に認識されよう。さらに、以下の詳述において、特定の例示的実施形態を示す添付図面が参照される。これらの例示的実施形態に対し、本開示の精神および範囲から逸脱することなしに、電気的、機械的、論理的、および構造的な変更がなされ得る。したがって、以下の詳述は限定的な意味で捉えられるべきではなく、本開示の範囲は、添付の特許請求の範囲およびその均等物によって定義される。
【００１５】
人間にとって安全（ｈｕｍａｎ−ｓａｆｅ）な産業用ロボットの普及拡大は、ＳＭＥ、そして高齢者や障害者の補助や協働型外科ロボットなどの新たに浮かび上がってきた作業領域を対象とし、半構造化された諸作業のセットを中心に人間であるユーザとロボットとが対話を行う、協働型ロボット・システムへのかかわりに拍車をかけている。こうした作業領域で実行される作業の範囲は瞬く間に変わり得るため、完全な再プログラミングを必要とすることなく複数の作業に見事に適応する協働型ロボット・システムが求められている。
【００１６】
本開示のさまざまな実施形態には、協働設計および使用パターンの広範な集まりをサポートするフレームワークを介した、人間−機械協働を可能にするためのシステムおよび方法が含まれる。本開示のさまざまな実施形態による例示的人間−機械協働システムは、再使用可能なロボット機能表現の構成、動的適応、および管理をサポートすることで、１つ以上のロボットが持つ、運用、訓練、問題解決、または再作業といった特定のモードが、１人以上の人間のユーザによって少なくとも１つは可能になるような、一般化可能フレームワークを実装する。ロボット機能表現の動的適応には、工具、加工物、および／またはロボットの稼働環境について協働システムが取り込む一般化情報およびパラメータが含まれ、これらは協働システムによって一般ロボット機能表現へと記憶され、種々の作業動作用に再使用することが可能である。作業動作の種類としては、たとえば、モーション制約、モーション即時再生、軌跡生成、などが挙げられ得る。また、ロボット機能表現の動的適応には、特定の作業動作を実行するために、一般ロボット機能表現の専用化が含まれる。一般化可能フレームワークは、人間−機械協働挙動の構成、再使用、および管理をサポートする。人間−機械協働挙動には、機能表現の構成物（たとえば、ロボット機能およびユーザ対話機能）、および機能表現間のマッピングが含まれる。一般化可能フレームワークを実装することにより、協働システムは、多岐にわたる作業および作業動作の実行に向けて一般化可能な方法で命令または訓練を受けることが可能になり、再訓練や完全な再プログラミングなしにタスク間の切り換えを見事に行うことが可能になる。
【００１７】
本開示において、「ロボット」という言葉は、ロボットマニピュレータ、またはロボットマニピュレータのセットの代わりに使用される。一般に、ロボットとは、自動化または半自動化された製造用途向けの産業用ロボットマニピュレータまたは産業用ロボットマニピュレータのセットである。ロボットの包絡線空間（ｅｎｖｅｌｏｐｅ  ｓｐａｃｅ）とは、ロボットのエンドエフェクタが届き得る空間内の点のセットを含む、ロボットが物理的に移動または到達可能なモーション範囲である。エンドエフェクタは、ロボットに取り付けられたツールエフェクタ、またはロボットに取り付けられたグリッパ型エンドエフェクタによって把持または固定された工具となり得る。たとえば、ロボットの包絡線空間としては、ロボットのツールエフェクタ・ポイント（以下、「ＴＥＰ」という、）が物理的に移動または到達することが可能なモーション範囲が挙げられ得る。ロボットのＴＥＰは、ロボットに取り付けられたツールエフェクタの点群中の基準点（たとえば、ユーザが選択した点、ツールエフェクタの端点、ツールエフェクタがロボットへと取り付けられている点、など）、またはロボットのエンドエフェクタによって把持された工具の点群中の基準点（たとえば、ユーザが選択した点、工具の端点、エンドエフェクタが工具を把持している点、など）として定義され得る。ロボットの包絡線空間が持つサイズと形状は、ロボットの座標幾何学に依存し、ロボットの構造（たとえば、ジョイントのタイプ、ジョイントの移動範囲、ジョイントを接続するリンクの長さ、など）や自由度（以下、「ＤＯＦ」という。）数といった、ロボットの設計に影響される。いくつかの実施形態では、ロボットの包絡線空間が持つサイズと形状は、ロボットに取り付けられたツールエフェクタ、またはロボットのエンドエフェクタによって把持された工具が持つ、サイズと形状にも影響される。ロボットは、そのロボットの包絡線空間内にあるすべてまたはほぼすべての点を通常は包含する、自身の最大稼働空間内で作業を実行することができる。協働システムは、１つ以上の制約を実施または適用するために、ロボットの稼働空間を、そのロボットの最大稼働空間内の点のサブセットに制限することができる。これについては、以下でより詳細に説明する。
【００１８】
一般化可能フレームワークを通じて、協働システムは、少なくとも１人の人間ユーザと対話して、少なくとも１つのロボットと協働して作業を実行するのに使用される作業知識を取り込み、その後、取り込んだ作業知識を、そのロボットおよび／または少なくとも１つの他のロボットと協働して別の作業を実行するために、効率的かつ移植性のある方法で適応させることができる。協働システムは、より多くの作業知識を取り込むほど有能になり、協働システムが有能になるほど、作業ごとにユーザに求める情報も少なくなる。さらに、取り込んだ作業知識の性質は、低いレベル（たとえば、多数の特徴点を手動で指定する）から高いレベル（たとえば、ポイント・アンド・クリック入力、口頭での命令、など）へと発展し得る。システム機能が向上し、ユーザとの細かな対話の必要性が減少すれば、協働システムは、新たな用途に向けてスケールダウンすることや、環境的な構造または造形が欠如したため伝統的に自動化が採用されてこなかった環境へ徐々に導入することが可能になる。
【００１９】
さまざまな実施形態において、一般化可能フレームワークは、（１）機能、すなわち、稀にしか変化しないパラメータに基づいて入力情報を出力情報または動作にマッピングする高次関数、および（２）協働挙動、すなわち、ある作業に関する少なくとも１つの未知の局面と、人間のユーザがその作業の完了に向けてロボットと協働するための少なくとも１つの適切なインタフェースとの間のマッピング、のためのモデルを定義し提供する。一般化可能フレームワークは、ロボット機能およびユーザ対話機能を含む、さまざまなクラスの機能を提供することができる。複数のロボット機能が、特定の作業に向けて専用化され得る再使用可能なロボット機能表現としての役割を果たすとともに、１つのロボット機能は、実行時における少なくとも１つのロボットの機能をモデリングし、ユーザ対話機能または他のロボット機能のどちらかと結び付くことができる。ユーザ対話機能は、入力コマンドの要求またはフィードバックの表示のどちらかにより、ユーザに１つ以上のインタフェースモダリティを提供する。一般化可能フレームワークによって提供される機能および協働挙動の使用を通じて、協働システムは、協働対話が持つ動的な性質を考慮することが可能な、柔軟な人間−ロボット協働に向けた環境構造を提供する。
【００２０】
協働システムは、１つの状況から情報を取り込み一般化することで一般ロボット機能を作製し、次いで、一般ロボット機能を１つ以上の状況固有パラメータでインスタンス化およびパラメータ化することにより、さまざまな状況、さらには新規の状況に向けて、一般ロボット機能を専用化することができる。一般ロボット機能は、作業関連パラメータのセットを要求する、ある種の作業動作を実行する工具タイプに属する取り付けられた工具を使用するために、ロボットの機能を少なくとも１つモデリングする。さまざまな実施形態において、協働システムは、３種類の作業関連パラメータに基づいて、種々の作業動作に対し、ロボット機能を動的に適応させることができる。３種類の作業関連パラメータとは、工具挙動制約または工具アフォーダンス、工具根本動作、および知覚テンプレートである。
【００２１】
ある工具に対する工具挙動制約は、その工具が持つ少なくとも１つの工具アフォーダンスに基づいて決定され得る。工具アフォーダンスとは、工具に備わった、ある実体（たとえば、ロボット、個人、別の工具、など）が自身を用いて１つ以上の動作を実行することを許容または可能にするような１つ以上の特徴、性質、属性、または特性である。協働システムは、モーションの実演、工具および加工物に関するパラメータ、ならびに１つ以上の作業動作をロボットの稼働環境に関連付けるパラメータを介して、情報を取り込むことができる。取り込んだ情報は、カプセル化および一般化した後、再使用可能なロボット機能表現に記憶することができる。たとえば、いくつかのドリルパラメータが２種類以上のドリルビットまたは加工物に対して有効となり、モーションを実演することによって、取り付けられたドリルビットの長手軸に平行な直線ドリルモーションなど、特定の状況に合わせて調整され得る、典型モーションを定義することができる。
【００２２】
協働システムは、特定の作業動作または特定タイプの作業動作を実行するための１つ以上のロボット機能をロボット機能の構成物へと構成し、ユーザ対話のためのロボット機能の要件を満たす１つ以上のユーザ対話をロボット機能にマッピングすることにより、協働挙動を作成することができる。作業固有または部分作業固有となるロボットの補助または増強を実現するために、協働システムは、所与の作業に固有となる必要性に合わせて、エンドユーザによる実演ならびに／または僅かなパラメータ化および対話により、ロボット機能の構成物を修正する、かつ／またはロボット機能を専用化することができる。協働システムは、新たな作業を実行するために、既存のロボット機能および協働挙動の動的適応をサポートすることから、単純な作業に向けた迅速なロボット訓練が容易となり、複雑な作業に向けたロボット訓練をより直感的にする種々の工具および加工物との柔軟な対話が可能になる。一般化可能フレームワークを実装することにより、協働システムは、ユーザ（たとえば、エンドユーザ、オンサイトのエンジニア、など）による単純かつ直感的なロボットのプログラミング、再プログラミング、訓練、および再訓練を、ユーザ対話、ユーザ実演、種々の工具および加工物との柔軟な対話、などを通じて行うことを可能にする。
【００２３】
協働システムは、作業知識および権限を、その知識を使用するために、ロボットへとオフロードすることができる。このことは、ロボット機能のインスタンスを、ロボット機能要素（「ＲＣ要素」）という形態で使用することによって実装され得る。協働システムは、ユーザがロボットと協働し、ロボットと対話し、かつ／またはロボットに入力を行うために、適切なユーザ・インタフェース（「ＵＩ」）要素を提供することもできる。このことは、ユーザ対話機能のインスタンスを、ユーザ対話機能要素（「ＩＣ要素」）という形態で使用することによって実装され得る。作業の実行に必要な機能要素のセット（たとえば、ＲＣ要素およびＩＣ要素）は、作業の複雑性に応じて異なり得る。なぜなら、作業知識、当該知識の使用権限、および作業を実行するために要求されるユーザ入力は、その複雑性とともに変化し得るからである。
【００２４】
（機能）
【００２５】
さまざまな実施形態において、機能は、稀にしか変化しないパラメータと定義される情報カーネルに基づいて、入力情報を出力情報または動作にマッピングする高次関数と定義される。一般性が失われない限り、このようなパラメータは、実行時に評価される関数となり得る。協働システムは、機能を使用することにより、動的かつ不確かな環境において、１つ以上のロボット動作を成功裏に実行することができる。
【００２６】
より形式的に言えば、機能Ｃは、Ｃ（κ）：γ→φと定義することができ、このとき、κは情報カーネル、γは機能に対する入力のセット、φは出力のセットである。情報カーネルκが定義されない場合、機能Ｃは、インスタンス化されていない、または一般性のものであり、よって入力γに作用する必要な情報が欠けているとみなされる。一般化可能フレームワークは、直列構成である
【数１】
2020192672.tif 000003
および並列構成である
【数２】
2020192672.tif 000004
という、２つの合成作用素の定義も行う。当業者であれば、本開示の精神および範囲から逸脱することなく、これら以外の合成作用素も可能であることは理解されよう。合成作用素の使用を通じて、機能Ｃは、他の機能を構成することができる。したがって、機能Ｃは、他の複数の機能のうちの１つの構成物となる可能性があり、その場合は１つの複合機能とみなすことができる。反対に、機能Ｃは、他の機能を含まない場合、１つの基盤機能とみなすことができる。
【００２７】
直列合成作用素である
【数３】
2020192672.tif 000005
は、一般に非可換であり、下式のように、ある機能の出力から別の機能の入力への連結を表す。
【００２８】
【数４】
2020192672.tif 000006
【００２９】
並列合成作用素である
【数５】
2020192672.tif 000007
は、可換であり、下式のように、２つの機能の集合和を表す。
【００３０】
【数６】
2020192672.tif 000008
【００３１】
並列構成において、出力φＡおよびφＢは、一般性が失われない限り、互いに素であると仮定される。なぜなら機能は、ＣＡまたはＣＢから矛盾する出力を選択する、決定関数を備えて構成され得るからである。加えて、両種の機能構成物は、複合化された機能に関する情報カーネルの集合和を要求する。
【００３２】
機能は、ユーザ対話機能およびロボット機能に分類できる。ユーザ対話機能
【数７】
2020192672.tif 000009
は、入力コマンドの要求またはフィードバックの表示のどちらかにより、ユーザに１つ以上のインタフェースモダリティを提供する。なお、上式において、
【数８】
2020192672.tif 000010
は、協働システムが利用可能なすべてのユーザ対話機能のセットである。
【００３３】
ロボット機能
【数９】
2020192672.tif 000011
は、実行時における少なくとも１つのロボットの機能をモデリングし、１つ以上のユーザ対話機能および／または１つ以上の他のロボット機能と結び付くことができる。なお、上式において、
【数１０】
2020192672.tif 000012
は、協働システムが利用可能なすべてのロボット機能のセットである。ロボット機能の例を表１に示す。
【００３４】
【表１】
2020192672.tif 000013
【００３５】
ロボット機能Ｒは、初めは一般性またはインスタンス化されていないものとなり得、この形態では、情報カーネルκのパラメータ化によって定義される作業空間および作業動作について一般化可能なものとなる。協働システムは、ロボット機能Ｒを特定の状況についての情報カーネルκでパラメータ化することにより、インスタンス化済みロボット機能Ｒ（κ）を形成することができる。次いで、協働システムは、インスタンス化済みロボット機能Ｒ（κ）を入力γと作用させることで、出力φを生成することができる。出力φは、例えば、１つ以上の特定の作業動作を実行させるためのロボットに対する命令である。
【００３６】
一例として、モーション制約を実施するロボットと協働して精密なドリル穿孔を行うという作業を実行するのであれば、協働システムは、２つの機能を必要とする。２つの機能とは、ユーザからポーズコマンドを受け取るユーザ対話機能、および、特定のドリルについて説明する情報カーネルが課す制約を受けるロボットを動かす一般ロボット機能Ｒｍｃである。一般ロボット機能Ｒｍｃの例は、表１に示している。ドリルの使用に必要な共通モーション制約を含む情報カーネルκｄｒｉｌｌを与えられることにより、協働システムは、一般ロボット機能Ｒｍｃをインスタンス化して、ドリルモーション制約を規定するためのインスタンス化済みロボット機能Ｒｍｃ（κｄｒｉｌｌ）を形成することができる。この例では、情報カーネルκｄｒｉｌｌが、ドリルの幾何特徴をデカルト制約にマッピングするためのパラメータをカプセル化し、協働システムは、これらのパラメータを、同じ特徴を有する任意の工具（たとえば、他のドリル）のために再使用することができる。さらに、協働システムは、一般ロボット機能Ｒｍｃをインスタンス化して、そのインタフェースであるγおよびφを変更することなく、ドリルのみならず他の工具にも制約を課すことができる。
【００３７】
（専用化機能）
【００３８】
さまざまな実施形態において、ユーザは、協働システムを使用して、指定されたパラメータのセット、実演、またはその他のユーザ提供情報に基づいて情報カーネルを定義する命令を通じた機能の専用化を行うことができる。命令は、ユーザによる実演またはパラメータ化を使用した、新たな情報カーネルの作成または既存の情報カーネルのパラメータ指定を行うための方法と定義することができる。精密なドリル穿孔を行うという上記の作業例を用いれば、ドリルするためのロボット機能Ｒｍｃを専用化するために、ユーザは、ドリルの幾何形状から制約された幾何形状へのマッピングを指定する命令Ｉｄｒｉｌｌを実行することができる。協働システムは、このマッピングをκｄｒｉｌｌにカプセル化することが可能であり、そうする場合はＲｍｃをＲｍｃ（κｄｒｉｌｌ）に専用化する。
【００３９】
協働システムは、種々の作業動作を実行するのに有用なさまざまな情報クラスに基づいて機能を専用化することができる。このクラスには、（１）工具挙動制約を使用する工具アフォーダンス、（２）ＴＭＰを使用するモーション軌跡、および（３）知覚テンプレートを使用する知覚基礎訓練が含まれる。たとえば、協働システムは、ユーザが機能を専用化する命令を実行したことに応答して、機能を専用化することが可能であり、このときの命令は、（１）工具の働きを記述し、作業動作を実行する工具の使用法に対する１つ以上の挙動制御を提供する、工具挙動制御、（２）作業動作を実行する際に必要な１つ以上のモーションを記述する、ＴＭＰ、および／または（３）ロボットの稼働環境に関する文脈において１つ以上の挙動制御を提供する、知覚テンプレートを指定するものである。当業者であれば、本開示の精神および範囲から逸脱することなく、機能を専用化するのに他の情報クラスが使用され得ることは理解されよう。
【００４０】
（工具挙動制約）
【００４１】
工具は通常、特に産業生産の分野における、特定のユースケースを念頭に設計されており、作業を実行する工具がなし得るモーションには制約を伴うのが普通である。協働システムによって実装されるフレームワークは、工具使用が持つこの態様を、工具挙動制約として形式化する。より具体的に言えば、ある工具と関連付けられた工具挙動制約は、工具の働きに関して予め形成された観念を記述し、１つ以上の作業動作を実行する際に、工具の使用法に対する１つ以上の挙動制御および／またはモーション制約を施す。工具挙動制約は、工具が持つ少なくとも１つの工具アフォーダンスに基づいて決定され得る。工具アフォーダンスとは、工具に備わった、ある実体が自身を用いて１つ以上の動作を実行することを許容または可能にするような１つ以上の特徴、性質、属性、または特性であると定義される。工具またはその工具と実質的に等しい特性および特徴を持った別の工具の使用が必要となる作業において、その作業をロボットが実行または補助することをユーザが望む場合、そのユーザは、工具に関連付けられた少なくとも１つの工具挙動制約をパラメータ化して、その工具が作業を実行するためにどのように使用可能であるかに関する観念をロボットに与えることができる。ユーザは、ロボットが工具を把持する箇所や取り付ける箇所など、工具に関する幾何形状を指定することにより、工具に対する工具挙動制約をパラメータ化することができる。
【００４２】
工具に関するロボット機能をモデリングする際、協働システムは、有用な動作を許容するゆえに、有用な動作を達成可能なモーションに対する制約が置かれる幾何特徴を、各工具または工具タイプが持つという事実を活用することができる。たとえば、ドリルの円筒状ビットは、ドリルのモーションを線に沿って制約するものであり、ドリルが穴あけに使用されるのであれば、取り付けられたドリルビットは軸並進方向を定義する。同様の制約は、穴あけパンチ器または板金プレス機にも適用される。別の例として、サンダまたは研磨工具は、一般に平らな作用面を持っており、このことが工具のモーションを、その平らな作用面に沿った接線方向の接触へと制約する。同様に、さまざまな工具挙動制約が、多くの場合直線か曲線に制限される裁断工具など、他の工具使用にも適用される。
【００４３】
より形式的に言えば、工具ｔは、３−ｔｕｐｌｅ  ｔ  ＝  ＜ｒ，Ａ，Ｇ＞と表すことができ、このとき、ｒは工具ｔの３次元（「３−Ｄ」）幾何形状の表現またはモデル、Ａ  ＝  ＜ａ０、ａ１、…、ａｎ＞は挙動制約のセット、Ｇ  ＝  ＜ｇ０、ｇ１、…、ｇｎ＞は表現ｒを基準とした把持構成のセットである。協働システムは、工具ｔを用いて、実質的に同一の特性および特徴を共有する特定の工具クラスに含まれる、特定の工具または任意の工具を表すことができる。固定されたエンドエフェクタ、ｇｉ  ∈  ＳＥ（３）は、特定の工具関連位置であると仮定する。各挙動制約は、ペアａ  ＝  ＜ｐ，ｑ＞であり、このとき、ｐ  ∈  ＳＥ（３）は制約フレームであり、ｑは制約タイプ、すなわち、ｑ  ∈  ｛ａｘｉｓ、ｃｕｒｖｅ、ａｎｇｌｅ、ｐｌａｎｅ、…｝である。工具ｔについて、協働システムは、工具ｔの表現ｒを制約タイプｑに適合させることにより、制約タイプｑに基づいて制約フレームｐを生成することができる。表現ｒは、工具ｔの全体または部分をモデリングすることができる。表現ｒの形をとる工具ｔの幾何形状を制約タイプｑにマッピングすることにより、協働システムは、再使用可能な情報カーネルκｔを形成して、ロボット機能Ｒ（たとえば、表１に示すモーション制約機能Ｒｍｃ）を、専用化済みロボット機能Ｒ（κｔ）へと専用化することができる。工具ｔがロボットに取り付けられている場合、協働システムは、専用化済みロボット機能Ｒ（κｔ）を作用させてロボットを制御することができる。種々の工具挙動制約の例を表２に示すとともに、図１Ａに例示する。
【００４４】
【表２】
2020192672.tif 000014
【００４５】
ロボットが工具を把持または捕捉する際、協働システムは、その工具に関連付けられた１つ以上の工具挙動制約を使用して、たとえばヌルスペース投影法を使用することによって制約されたＤＯＦおよび外部制御されたＤＯＦへと工具動作を解明することを可能にする１つ以上の制約を定義することができる。たとえば、協働システムは、工具の３−Ｄ点群など、工具の幾何特徴の表現を用いて開始することにより、工具に関連付けられた工具挙動制約を指定することができる。協働システムは、ユーザに、既存の表現を選択させるか、新たな表現を生成させるか、または既存の表現を選択かつ修正させることにより、工具の表現を提供することができる。さまざまな実施形態において、協働システムは、工具の表現を自律的に提供することもできる。ユーザは、協働システムを使用して、点群の領域を工具の原点として対話的に選択し、次いで制約タイプを選択することができる。選択した領域および制約タイプに基づいて、協働システムは、工具の原点を基準とした、工具先端フレームおよび１つ以上の工具挙動制約を決定することができる。協働システムは、ユーザの選択に基づいて、工具の任意の領域を、工具挙動制約にマッピングすることができる。協働システムは、ユーザの選択または他の検討要素に基づいて、工具のＴＥＰとして、工具の点群からなる任意の領域を選択するか、工具の原点または工具先端フレームを使用することもできる。
【００４６】
たとえば、工具ｔ１はドリルであると仮定すれば、協働システムは、取り付けられたビットの表現ｒｂｉｔを含むドリルの３−Ｄ表現ｒ１を規定し、次いで制約タイプｑ１として「ａｘｉｓ」を選択することができる。よって、工具ｔ１がロボットに取り付けられる場合、表現ｒ１またはｒｂｉｔがロボットのモーションに軸方向の制約を課すとともに、ロボットは工具ｔ１を使用してドリル作業を実行する。表現ｒ１の形をとる工具ｔ１の幾何形状、および／または表現ｒｂｉｔの形をとる取り付けられたビットを、制約タイプｑ１にマッピングすることにより、協働システムは、再使用可能な６ＤＯＦ情報カーネルκｄｒｉｌｌを形成し、たとえば、（表１に示した）モーション制約というロボット機能Ｒｍｃを、専用化済みロボット機能Ｒｍｃ（κｄｒｉｌｌ）に専用化することができる。次いで、協働システムは、専用化済みロボット機能Ｒｍｃ（κｄｒｉｌｌ）を作用させて、工具ｔ１使用時のロボットのモーションを制約することができる。
【００４７】
（工具根本動作）
【００４８】
ＴＭＰは、ロボットが作業を実行するために工具を用いて行うモーションを記述する。その工具は、特定の工具、または類似もしくは実質的に同一の特性および特徴を共有する工具クラスに含まれる任意の工具となり得る。さまざまな実施形態において、協働システムは、工具関連の特徴およびパラメータを取り込みつつも他のパラメータは制約されない状態に保つという方法で、再使用可能モーションをＴＭＰとして表現することができる。ＴＭＰは、動的根本動作（「ＤＭＰ」）を拡張することができる。ＤＭＰは、モーションの構造を保持しながら再パラメータ化が可能な再使用可能モーション表現のための基礎を提供する。
【００４９】
ＴＭＰは、ロボットの稼働空間および／または環境の内部での、工具および１つ以上の点または他の制約に関する文脈において、軌跡データをカプセル化することができる。より形式的に言えばＴＭＰ  Ｔは、Ｔ  ＝  ＜ａ，ｄ＞と表現することができ、このとき、ａ  ＝  ＜ｐ，ｑ＞は工具に関連付けられた工具挙動制約であり、ｄは実演された軌跡を意味する。ＴＭＰ  Ｔは、工具挙動制約フレームｐ１…ｐｎのうちの１つにおいて構成されたＤＭＰとなり得、よって、協働システムは、何らかの任意のワールドフレームを基準としたロボットのエンドエフェクタの配向の代わりに、工具と軌跡フレームの間の相対的な配向または配列を取り込むことが可能になる。このようにすることで、ＴＭＰ  Ｔによって専用化されたロボット機能（たとえば表１に示した、モーション即時再生機能Ｒｉｒ、または軌跡ジェネレータ機能Ｒｔｇ）は、異なる稼働環境に対して再パラメータ化が可能になり、そのモーションは、ＴＭＰ  Ｔのもとで専用化された工具挙動制約を共有するあらゆる工具に対し適切に再使用することが可能になる。
【００５０】
協働システムは、初めにユーザの実演による軌跡データ、関連ＵＩ、またはその組み合わせを取得し、次いで工具の使用を伴うさまざまな作業で使用するための軌跡データを一般化することにより、工具に関連付けられたＴＭＰを生成することができる。軌跡データは、工具を使用して作業を完了するための動作を実行するのに伴う１つ以上のモーションを記述する。協働システムは、ユーザの実演を介して軌跡データを取得することができるが、このことは、学習モードに入り、ユーザにモーションを実演させ、軌跡データの取込みを目的に実演されたモーションを知覚または感知することによって行われる。
【００５１】
サンダ作業を例として用いると、ユーザは、開始点から外側へと進行する、サンダの表側を平面で用いた螺旋状のサンダ軌跡を実演することができる。協働システムは、この螺旋状のサンダ軌跡の様相、および軌跡の方向を基準とするサンダの配列または配向を取得または取り込むことができる。たとえば、協働システムは、サンダの表側が軌跡の方向に対して平行であることを取り込むことができる。協働システムは、開始点の文脈における螺旋状のサンダ軌跡、および螺旋状のサンダ軌跡の方向の文脈におけるサンダの配列または配向をカプセル化する、ＴＭＰ  Ｔｓａｎｄｅｒを生成することもできる。
【００５２】
軌跡データの取得に続き、協働システムは、軌跡データを一般化することにより、ＴＭＰを生成することができる。協働システムは、ＴＭＰを新たな作業に向けて、たとえばユーザ指定の点および／またはその新たな作業に関連付けられた知覚テンプレートに基づいて適応させるか再パラメータ化することができる。さまざまな実施形態において、協働システムは、ユーザに６ＤＯＦポーズ軌跡に沿ったアドミッタンス制御を介してロボットを動かすことにより、ＴＭＰを取得することができる。協働システムは、ポーズ軌跡をＤＭＰまたはＴＭＰとして記憶することができ、これを使用して、ロボットの稼働空間内または環境内の１つ以上の対象点、および／もしくは１つ以上の知覚テンプレートを考慮した新規モーションを生成的に作成することができる。協働システムは、ロボットの初期ポーズを基準とするポーズ軌跡を記憶することも可能であり、それにより、新規モーションの生成時に、協働システムは、そのモーションを、何らかの任意の座標系ではなく、取り付けられた工具の工具先端フレームに制約することができる。工具挙動制約および機能内にカプセル化されたＴＭＰのために、協働システムは、得られたフレーム、幾何情報、軌跡、および他のデータを、他の機能が利用可能な少なくとも１つの小さなデータベース内に保存することができる。上記のＴＭＰ  Ｔｓａｎｄｅｒの例を用いれば、協働システムは、たとえＴＭＰ  Ｔｓａｎｄｅｒが表面が異なる角度で装着されたサンダを用いて記録されたとしても、螺旋状のサンダ軌跡を、たとえばサンダの表側に平行となる方向に、正しく適用することができる。
【００５３】
さまざまな実施形態において、協働システムは、工具を用いる作業の実行に伴う１つ以上のモーションをユーザが実演しているときに、工具に関連付けられた１つ以上の適用可能な工具挙動制約を実施することができる。より具体的に言えば、ユーザの実演中、協働システムは、ロボットの稼働空間を、ロボットの最大稼働空間内の点のサブセットに制約することにより、適用可能な工具挙動制約を実施または適用することができる。ユーザが自身による実演の中でロボットに指示または指導するために工具にまたは工具の付近に力を加える場合、ユーザによって加えられた力は、ロボット（たとえば、ロボットのＴＥＰ）が制約された稼働空間を外れてしまうような、１つ以上の望ましくない方向への、１つ以上の構成要素を持つ可能性がある。これに対処するために、協働システムは、制約された稼働空間内に留まるか、その中に復帰するよう、ロボットに命令することができる。ロボットは、ユーザによって加えられた望ましくない方向への力からなる構成要素のみに抵抗する、またはユーザによって加えられた力の全体に抵抗するなどすることにより、制約された稼働空間内に留まるよう命令され得る。ロボットは、ネガティブ・フォース・フィードバックを（たとえば、インピーダンス制御、振動または他の形態の触覚フィードバックなどを介して）提供すること、制約された稼働空間内のある点へとロボットを動かすこと、および／またはユーザにとって安全な場合にロボットを再配向することなどにより、制約された稼働空間へと復帰するように命令され得る。工具に関連付けられた適用可能な工具挙動制約を実施することにより、協働システムは、ユーザが、工具の使用方法を正確かつ効果的に実演することを可能にする。協働システムは、たとえば、工具に関する情報カーネルκｔｏｏｌを形成し、情報カーネルκｔｏｏｌを有するモーション制約機能Ｒｍｃを専用化済みロボット機能Ｒｍｃ（κｔｏｏｌ）へと専用化し、専用化済みロボット機能Ｒｍｃ（κｔｏｏｌ）のインスタンスをＲＣ要素として提供し、適用可能な工具挙動制約に従ってロボットが制御されるようにＲＣ要素を作用させることにより、モーションの実演中に、適用可能な工具挙動制約を実施することができる。
【００５４】
たとえば、上記のドリル作業を実行するためのドリルモーションをユーザが実演する間、協働システムは、ドリルを作動させながら、ユーザが直線モーションにのみドリルを動かせるように、ロボットに命令することができる。これにより、１回のドリル動作を正確に実演する際に、ユーザは補助を受ける。こうしたことを協働システムが実現するためには、ロボットの稼働空間を、ドリルに取り付けられたドリルビットの長手軸に沿った直線状の点のセットに制約すればよい。ドリルの作動中、協働システムは、ユーザがドリルビットの長手軸から外れるような力を加えてロボットに指示しようとした場合であっても、ドリルビットの長手軸に沿った方向へのみ動くようにロボットに命令することができる。こうしたことは、たとえば、ユーザによって加えられた力に関する、１つ以上の望ましくない方向への１つ以上の構成要素に抵抗する（たとえば、ユーザによって加えられた力に関する、ドリルビットの長手軸に沿った方向への構成要素のみを許容する）ことによって行われる。代わりに、または加えて、協働システムは、ユーザによって加えられた力とは逆の制動力によるネガティブ・フィードバックを提供させる、ユーザにとって安全であれば制約された稼働空間へと復帰させる、ユーザにとって安全であれば制約された稼働空間へとドリルビットが復帰するようにエンドエフェクタを再配向させる、などの命令をロボットに与えることができる。別の例として、上記のサンダ作業を実行するためのサンダモーションをユーザが実演している間、協働システムは、サンダの作動中、平面に対し接線方向となるモーション（たとえば、平面モーション）、または事前定義された表面に対し接線方向となるモーションにのみユーザがサンダを動かせるようにする命令を、ロボットに与えることができる。
【００５５】
（知覚テンプレート）
【００５６】
知覚テンプレートは、加工されている対象加工物に関する１つ以上の特性やロボットの稼働空間内の１つ以上の点など、ロボットの稼働環境に関連付けられた知覚データを基準に記述される１つ以上の挙動制御を提供することにより、制約された工具動作の定義をサポートする。よって、知覚テンプレートとは、稼働環境の文脈における１つ以上の挙動制御を提供するものである。より形式的に言えば、知覚テンプレートＰは、ペアＰ  ＝  ＜Ｓ，Ｅ＞であり、選択された場面領域Ｓを、その場面における指定の幾何実体Ｅ  ＝  ［ｅ１…ｅｎ］に関連付けるものである。場面領域Ｓは、３−Ｄ点群またはｒｅｄ，ｇｒｅｅｎ  ａｎｄ  ｂｌｅｅ  ｐｌｕｓ  ｄｅｐｔｈ（「ＲＧＢＤ」）データに関して選択された容積、ある画像に関して選択された２次元（「２−Ｄ」）領域、などとすることができる。複数の幾何実体Ｅのうちの１つの幾何実体ｅｉは、点、線または曲線、平面または表面、３−Ｄ空間、などの作業関連幾何特徴である。協働システムは、知覚テンプレートを使用して、工具挙動制約、ＴＭＰ、および他の作業制約を知覚データに教え込むことができる。工具挙動制約およびＴＭＰが、制約データおよびモーションデータを再使用するための機構を提供する一方、知覚テンプレートは、作業動作を実行するために指定が必要であるが、工具挙動制約またはＴＭＰによって取り込まれない、作業関連パラメータを提供する。
【００５７】
作業関連パラメータは、対象の加工物の位置および／または配向を基準に指定されるパラメータなど、ロボットの稼働環境に関してユーザが指定するものになり得る。代わりに、または加えて、協働システムは、ロボットの稼働環境を記述し、知覚テンプレートによって提供される作業関連パラメータと関連する、知覚データを取得することができる。協働システムは、知覚または検出（たとえば、センサ、カメラなどを用いる）、ユーザ対話（たとえば、対話によるセットアップ、ユーザの直接的な入力や選択など）、記憶されたデータ、またはこれらの組み合わせから、知覚データを取得することができる。協働システムは、適切な速度（たとえば、１Ｈｚ、５Ｈｚなど）で知覚データを連続的に取得して、ユーザが対象の加工物を位置変更したり動かしたりすることを可能にさせ得る。記憶されたデータには、加工物の種類に関連付けられたデータ値や、類似する加工物の種類に対して類似の作業を実行するために予め入力されたデータ値など、１つ以上の再使用可能な作業関連パラメータに関連付けられたデータ値および情報が含まれ得る。ユーザは、知覚および／またはユーザ対話を介して取得したデータおよび情報を、対象の加工物またはその種類に関連付けられた１つ以上の知覚テンプレートに記憶させることもできる。
【００５８】
さまざまな実施形態において、協働システムは、ロボット機能を作用させて作業動作を実行しながら、知覚データを取得することができる。知覚データの取得に続き、協働システムは、ロボット機能および任意の作業制約に関連付けられた任意の工具挙動制約およびＴＭＰを基礎訓練するために、知覚データに基づいて作業関連パラメータを指定することができる。したがって、協働システムは、ロボットを基準とした対象の加工物の位置および／または配向など、ロボットの稼働環境についての先験的な知識なしに、作業動作を実行しながら作業関連パラメータを再使用することができる。
【００５９】
流れていく部品に対して、ドリルを用いて半自動であるパターンの穿孔を繰り返し行うという作業を例にとれば、適用可能な知覚テンプレートＰｈｏｌｅｓには、加工物表面を基準としたドリル角度や、加工物表面上の１つ以上の点を基準としたドリルすることになる穴のパターンなど、例示の作業を実行するために指定することが必要となる、作業関連パラメータが含まれ得る。穴のパターンは、加工物の表面に対してある角度をとる線として表すことができる。ロボット機能を作用させて作業動作を実行している間、協働システムは、知覚テンプレートＰｈｏｌｅｓを使用して、対象となる加工物表面Ｓｗ、対象となる加工物表面Ｓｗ上の１つ以上の基準点、対象となる加工物表面Ｓｗの配向などの知覚データを取得することができる。流れる部品の各々に対して、協働システムは、知覚テンプレートＰｈｏｌｅｓを使用して、（１）部品について記述した関連する知覚データを取得し、（２）知覚データに基づいて関連する作業関連パラメータを指定し、（３）専用化済みロボット機能Ｒ（Ｐｈｏｌｅｓ）を形成するためにκ  ＝  Ｐｈｏｌｅｓと設定することによってロボット機能Ｒ（たとえば、表１に示した軌跡ジェネレータ機能Ｒｔｇ）を専門化し、（４）専用化済みロボット機能Ｒ（Ｐｈｏｌｅｓ）のインスタンスをＲＣ要素として提供し、（５）対象表面Ｓｗを基準として指定された角度で、部品の対象表面Ｓｗ上の穴のパターンによって指定された位置にドリルするようロボットに命令するためにＲＣ要素を使用することができる。
【００６０】
知覚データは、１つ以上のセンサを使用して取得することや、ユーザや記憶されたデータから取得することが可能である。あるいは、これらの組み合わせによって取得されてもよい。たとえば、協働システムはまず、カメラによる入力奥行きデータを取得し、その入力奥行きデータ内の加工物の平面を１つ以上検知することにより、１つ以上の加工物表面およびその配向を知覚することができる。協働システムは、次いで、対象となる加工物表面、対象表面Ｓｗ上の１つ以上の基準点、および／または穴のパターンから、対象表面Ｓｗを選択するようにユーザを促すことができる。協働システムは、予め保存した穴のパターンをロードすることもできる。
【００６１】
（機能専用化用インストラクタ）
【００６２】
さまざまな実施形態において、協働システムは、指定されたパラメータのセット、実演、またはその他のユーザ提供情報に基づいて、命令を生成するためのインストラクタを少なくとも１つ提供する。インストラクタを使用して、新たな情報カーネルの作成、または既存の情報カーネルのパラメータ指定を行うことができる。これらの情報カーネルにより、協働システムは、ロボット機能を専用化することが可能になる。協働システムは、インストラクタを呼び出して、工具挙動制約、ＴＭＰの形態をとるモーション軌跡、知覚テンプレート、などの異なる情報クラスを取得することができる。
【００６３】
１つ以上の工具挙動制約の指定する命令を生成するために、インストラクタは、ユーザによって、またはロボットに取り付けられた工具に基づいて選択された工具の表現（たとえば、３−Ｄ点群）を提供することができる。この表現には、少なくとも１つの工具の原点が含まれ得る。インストラクタは、表現内の領域および制約タイプを選択することが可能であり、どちらも自律的またはユーザとの対話による選択に基づいて行われる。インストラクタは、次いで、選択された領域および制約タイプに基づいて工具の表現を制約タイプに適合させて、制約フレームを定義することが可能であり、よって、工具の原点を基準とした、ツールエフェクタおよび１つ以上の工具挙動制約を生成することができる。ユーザ選択に基づいて、工具の任意の領域を工具挙動制約にマッピングすることができる。インストラクタは、工具挙動制約を記憶し、またフォーマットされた情報カーネルという形態をとる工具挙動制約を指定するための命令を生成することができる。この工具挙動制約は、表１に示したモーション制約機能Ｒｍｃなど、１つ以上の工具挙動制約を要求する任意の機能によってロードされ得る。
【００６４】
１つ以上のＴＭＰという形態をとる、指定された工具または指定されたクラス内の工具を使用するための１つ以上のモーション軌跡を指定する命令を生成するために、インストラクタは、モーション軌跡を取得するためのユーザ・インタフェースを提供することができる。たとえば、インストラクタは、図１Ｂに示すような没入型仮想現実（「ＶＲ」）環境を提供することができる。ＶＲ環境を通じて、ユーザは、ロボットのアバターと対話してモーション軌跡を指定することができる。ユーザは、ロボットが工具が把持しているのと同じ位置に、３−Ｄポインティング・デバイスなどの仮想工具プロキシを保持し、任意の数の６ＤＯＦモーション軌跡を実演することができる。インストラクタは、実演されたモーション軌跡を選択された工具に関する１つ以上のＤＭＰとして記録し、そのＤＭＰおよび工具に関連付けられた制約フレームに基づいて１つ以上のＴＭＰを生成し、選択された工具または指定されたクラス内の工具のためにＴＭＰを記憶することができる。ＴＭＰを指定するための命令は、表１に示したモーション即時再生機能Ｒｉｒまたは軌跡ジェネレータ機能Ｒｔｇなど、１つ以上のＴＭＰを要求する任意のロボット機能によってロード可能な、フォーマットされた情報カーネルを生成する。
【００６５】
１つ以上の知覚テンプレートを指定する命令を生成するために、インストラクタは、ロボットの稼働環境内の場面を知覚し、その場面をリアルタイムで表示するとともにユーザがその場面内の１つ以上の点、線、または平面を選択できるようにする、ユーザ・インタフェースを提供することができる。たとえば、インストラクタは、ＲＧＢＤセンサを使用して場面を知覚し、その場面内の候補特徴（たとえば、加工物の角頂、縁、面など）を検知し、同場面および任意の候補特徴の３−Ｄ描画をリアルタイムで表示することができる。インストラクタは、候補特徴から、少なくとも１つの基準特徴を、自律的またはユーザ選択に基づいて選択することができる。インストラクタは、ユーザ選択に基づいてテンプレート特徴を選択し、各テンプレート特徴の相対位置、角度、配向、奥行き、または基準特徴に関する他の属性など、基準特徴の文脈において各テンプレート特徴を定義することもできる。たとえば、インストラクタは、加工物の候補表面を基準表面として選択し、ドリルすることになるユーザが選択した穴のパターンをテンプレート特徴として選択することができる。パターン中の各穴の角度は、基準表面を基準にして定義することができ、各穴の位置は、基準表面の２つ以上の縁を基準にして定義することができる。インストラクタは、候補特徴、基準特徴、および／またはテンプレート特徴、ならびに知覚テンプレート内の特徴間の関係を記憶することができる。知覚テンプレートを指定するための命令は、表１に示した軌跡ジェネレータ機能Ｒｔｇなど、１つ以上の知覚テンプレートを要求する任意のロボット機能によってロード可能な、フォーマットされた情報カーネルを生成する。
【００６６】
（協働挙動）
【００６７】
協働挙動には、１つ以上のロボット機能からなる構成物、１つ以上のユーザ対話機能、およびロボット機能とユーザ対話機能の間のマッピングが含まれる。ロボット機能は特定の作業動作または特定タイプの作業動作を実行するようロボットを制御するために構築および複合化され得るが、協働システムは、任意の特定のロボット挙動および機能レベルについて、ユーザが協働システムおよび／またはロボットと対話するのに必要なインタフェースをユーザに提供する協働挙動に依存する。少なくともこの面で、協働システムは、高レベルなユーザ−ロボット協働関係にのみ焦点を当て、低レベルなインタフェース要素は無視している、既存のロボット・システムとは異なる。
【００６８】
複合機能中の各ロボット機能について、協働システムは、ユーザにどういった入力を要求するか、ユーザにどういったフィードバックを提示すべきか、よって、どういったユーザ対話機能が要求されるか、に関する明示的な情報が必要となる。ロボット機能Ｒ  ＝  γＲ→φＲが、合成作用素（たとえば、ｎ個のインスタンス化または専用化されたロボット機能｛Ｒ１（κ１）、…、Ｒｎ（κｎ）｝からなるセットに由来する
【数１１】
2020192672.tif 000015
および
【数１２】
2020192672.tif 000016
）を通じて複合化されると想定する。ロボット機能Ｒ、および協働システムが利用可能なすべてのユーザ・インタフェース機能のセットである
【数１３】
2020192672.tif 000017
について、互換関数である
【数１４】
2020192672.tif 000018
は、あらゆるフィードバック・ループは人間オペレータ（たとえばユーザ）を通じて閉じられることから、Ｒへの入力提供またはＲからの出力受容のどちらか片方のみを行う
【数１５】
2020192672.tif 000019
で、ユーザ・インタフェース機能の適切なセット｛Ｕ：γＵ→φＵ｝を選択し、下式の通りになる。
【数１６】
2020192672.tif 000020
【００６９】
よって、協働挙動Ｂは、ロボット機能Ｒの構成物と定義することができ、このとき、ロボット機能Ｒの構成物に対するすべてのユーザ対話要件は、ユーザ対話機能のセット
【数１７】
2020192672.tif 000021
によって満たされる。ロボット機能Ｒは、基礎ロボット機能または複合ロボット機能となり得る。図２は、ユーザおよびロボットに通信可能に結び付けられた機能の構成物を含む協働挙動の例を示す図である。協働システムは、ユーザとの間でどの情報をやりとりするかを制御するために協働挙動内の機能間のつながりは管理するが、機能に関連付けられたユーザ・インタフェースに関する個別の設計については一切設計も規定も行わないということに留意されたい。代わりに、機能の作成者または設計者は、機能に関連付けられたユーザ・インタフェースを自由に設計することができる。
【００７０】
モーション制約を実施するロボットと協働してドリルで正確に穴をあけるという上記作業例を実行するために、協働システムは、機能の構成物を生成および／または修正し、その構成物を協働挙動Ｂ１に記憶させることができる。例示の作業の場合、ドリルに専用化されたモーション制約であるロボット機能Ｒｍｃ（κｄｒｉｌｌ）は、少なくとも１つの６ＤＯＦコマンドをユーザに要求する。協働システムは、互換関数Δに基づいて、６ＤＯＦコマンドにマッチする要求出力を持った、フォース・ガイダンスというユーザ対話機能Ｕｆｏｒｃｅを選択することができる。したがって、協働挙動Ｂ１は、
【数１８】
2020192672.tif 000022
となり得る。協働システムは、同様の手法を用いて、ユーザによって手動でガイドされた位置に同様の穴をドリルするといった作業や、知覚テンプレートに関連して上述した半自動で流れる部品に対して穴のパターンを繰り返しドリルするといった作業例など、他の作業に向けたより複雑な対話要件を導出することが可能である。
【００７１】
（例示的実施形態）
【００７２】
図３Ａおよび図３Ｂは、本開示の原理による協働システムの例示的実施形態を示す図である。図３Ａを一例とする、さまざまな実施形態において、協働システムには、少なくとも１つのＵＩ３１０を介して、少なくとも１人のユーザ（図示なし）と対話可能な、コンピュータ３００が含まれ得る。コンピュータ３００は、デスクトップ、ラップトップ、タブレット、モバイル・デバイス、ロボット・コントローラ、サーバ、クラスタ他、これらの任意の組み合わせなど、当業者にはよく知られている汎用または特定用途向けコンピュータとすることができる。コンピュータ３００は、仮想マシン、物理マシン他、これらの任意の組み合わせなど、任意の好適なタイプの機械であってもよい。コンピュータ３００にインストールされるソフトウェアには、協働フレームワーク３２０、および少なくとも１つのオペレーティング・システム（「ＯＳ」）３３０が含まれ得る。
【００７３】
協働フレームワーク３２０は、機能、リンク、および協働挙動についてのモデルを定義し提供する、上述の一般化可能フレームワークの例示的実装形態である。協働フレームワーク３２０は、少なくとも１つのロボット３４０および／または１人のユーザと通信および対話をすることにより、協働挙動に関連付けられた協働／支援機能を学習および／または提供することができる。たとえば、ユーザは、協働／支援機能に関連付けられた１つ以上のモーションを、そのモーションを通じてロボット３４０に指導することによるユーザ実演を介して、協働フレームワーク３２０に教示することができる。協働フレームワーク３２０は、ＵＩ３１０を使用してユーザと通信および対話することや、ビジュアル・ディスプレイ、ポインティング・デバイスまたはコントローラ、キーボード／キーパッド、電気音響変換器、運動または触覚ユーザ・インタフェース他、これらの任意の組み合わせなど、コンピュータ３００の１つ以上の構成要素または周辺機器を介して、ＵＩ３１０を提供することができる。ポインティング・デバイスまたはコントローラには、たとえば、マウス、３−Ｄポインティング・デバイス、タッチスクリーン、タッチパッド、ジョイスティック、教示ペンダント、などが含まれ得る。協働フレームワーク３２０は、センサ、アクチュエータ他、これらの任意の組み合わせなど、ロボット３４０の１つ以上の構成要素を介して、ＵＩ３１０を提供することもできる。センサとしては、たとえば、力覚センサ、位置センサ、視覚センサ、触覚センサ、などが挙がり得る。当業者であれば、本開示の精神および範囲から逸脱することなく、他の構成要素および周辺機器を用いてＵＩ３１０が提供され得ることは理解されよう。
【００７４】
協働フレームワーク３２０は、ＯＳ３３０によってサポートされ、かつ／またはＯＳ３３０の上層に構築され得る。ＯＳ３３０は、市販、オープンソース、またはメーカ独自のオペレーティング・システム、もしくは、ソフトウェア機能の構成要素ベース構成ならびにネットワークおよびプロセス管理のためのミドルウェアとして機能することが可能な、ＲＯＢＯＴ  ＯＰＥＲＡＴＩＮＧ  ＳＹＳＴＥＭ（「ＲＯＳ」）などのプラットフォームのいずれであってもよい。本開示の原理と整合性のある、よく知られたオペレーティング・システムの他の例としては、ＬＩＮＵＸ（登録商標）、ＵＮＩＸ（登録商標）、ＯＲＡＣＬＥ  ＳＯＬＡＲＩＳ、ＭＩＣＲＯＳＯＦＴ  ＷＩＮＤＯＷＳ（登録商標）、ＭＡＣ  ＯＳ（登録商標）、ＯＰＥＮ  ＶＭＳ（登録商標）、およびＩＢＭ  ＡＩＸが挙げられる。
【００７５】
図３Ａは、直接通信リンクを介することにより、ＵＩ３１０を提供し、通信可能にロボット３４０に連結されるものとして協働フレームワーク３２０が描かれているが、当業者であれば、協働フレームワーク３２０は、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、イントラネット、インターネットのような少なくとも１つの通信ネットワークを経由するネットワーク接続など、任意の好適なタイプの通信リンクを介して、ＵＩ３１０の提供および／またはロボット３４０への通信可能な連結がなされ得るということが理解されよう。また、当業者であれば、図３Ａに描かれた協働システムに属する、単一コンピュータ構成およびさまざまな要素の配置は単なる典型にすぎず、以下でより詳細に説明を行う、図３Ｂに示したものを一例とする他の構成および配置も、本開示の精神および範囲から逸脱することなく可能であることも理解されよう。
【００７６】
図３Ａに示すように、協働フレームワーク３２０には、協働挙動、ロボット機能、およびロボット機能インタフェース（たとえば、入力γおよび出力φ）間のリンクを管理する挙動マネージャ３２２、ならびに、ユーザ対話機能を管理するＵＩマネージャ３２４が含まれる。独立した別個のモジュールまたは処理として動作する挙動マネージャ３２２およびＵＩマネージャ３２４を用いることで、協働フレームワーク３２０は、ユーザ対話機能から独立かつ別個に協働挙動、ロボット機能、およびリンクを管理して、協働挙動の概念定義との一貫性を保つことができる。ロボット機能とユーザ対話機能を明示的に分離することにより、挙動マネージャ３２２およびＵＩマネージャ３２４は、物理マシンか仮想マシンかを問わず、機械が通信可能に相互連結されている（たとえば、ネットワーク化されている）限り、独立した機械上で動作することが可能になる。さらに、協働フレームワーク３２０には、以下でより詳細に説明を行う、図３Ｂに示したものを一例とする、１つ以上の機械上で動作するＵＩマネージャ３２４の複数のインスタンスが含まれ得る。協働フレームワーク３２０には、１つ以上の機械（図示なし）上で分散方式で動作する挙動マネージャ３２２の複数のインスタンスも含まれ得る。
【００７７】
（ロボット機能とリンクの管理）
【００７８】
さまざまな実施形態において、協働フレームワーク３２０には、ロボット機能を構成（たとえば、作成、修正、記憶、削除、など）する他、実行時を含むさまざまな状態でＲＣ要素を管理（たとえば、ロード、初期化、実行、停止、終了、アンロード、など）し、動的に適応（たとえば、専用化、一般化、再専用化、など）させるために、挙動マネージャ３２２を呼び出すことができる。協働フレームワーク３２０は、Ｃ＋＋、ＰＹＴＨＯＮなど、１つ以上のプログラミング言語でロボット機能を作成することが可能であり、また複合要素へと構成可能なソフトウェア要素として、ロボット機能を実装することができる。ロボット機能は、ＲＯＳノードを拡張するか、これに基づくものとすることができる。ＲＯＳノードは、ソフトウェア要素（たとえば、ロボット機能のインスタンス）間の分類された接続のための通信レイヤおよびインタフェースを提供するものである。協働フレームワーク３２０は、ロボット機能の入力と出力の間のリンクを、配信（ｐｕｂｌｉｓｈｅｄ）および購読（ｓｕｂｓｃｒｉｂｅｄ）されたＲＯＳトピックという形のリンク要素として実装することができる。
【００７９】
協働フレームワーク３２０は、ロボット機能に関連付けられたＲＯＳ  ｌａｕｎｃｈファイルをコールすることにより、ロボット機能のインスタンスをＲＣ要素として提供することができる。協働フレームワーク３２０によって提供されたＲＣ要素は、インスタンス化されていない（すなわち一般性）、インスタンス化されている（すなわち専用化されている）、動作中、待機中、停止中、などを含めたいくつかの状態のうちの１つ以上をとり得る。一般ＲＣ要素は、自身のインタフェース（すなわち、機能の入力および出力）を読み書きするためのコード、および所望するタイプの作業動作を実行するためのコードを含むが、それと同時に、ＲＣ要素が機能するのに必要となる情報カーネルを受け入れる、インスタンス化されていない情報クラスを含む。協働フレームワーク３２０は、情報カーネルを、実行時にメモリにロードされ、情報クラスをインスタンス化することによりＲＣ要素を専用化するのに使用される、明確に限定してフォーマットされたデータファイルとして実装することができる。協働フレームワーク３２０には、情報カーネルを生成し、その情報カーネルをすべての機能要素がアクセス可能なデータベースに記憶する、少なくとも１つのインストラクタが含まれ得る。
【００８０】
協働フレームワーク３２０は、ロボット機能に基づく専用化されたＲＣ要素を、ロボット機能と、要素ｌａｕｎｃｈファイル内の必要な情報カーネルとを指定することによって提供することができる。協働フレームワーク３２０は、既に専用化されているＲＣ要素の情報カーネルを他の情報カーネルと交換することにより、実行時にその専用化されているＲＣ要素を再専用化することができる。表１に示したモーション制約機能Ｒｍｃを例にとれば、協働フレームワーク３２０は、ある工具に関連付けられたパラメータを含む情報カーネルを、モーション制約機能Ｒｍｃをアンロードする必要なく、異なる工具に関連付けられたパラメータを含む別の情報カーネルと交換することができる。たとえば、協働フレームワーク３２０は、専用化されたモーション制約機能Ｒｍｃ（κｄｒｉｌｌ）の情報カーネルκｄｒｉｌｌを、Ｒｍｃをアンロードする必要なく、新たな専用化済みモーション制約機能Ｒｍｃ（κｓａｎｄｅｒ）を形成するための情報カーネルκｓａｎｄｅｒと交換することができる。
【００８１】
（ユーザ対話機能の管理）
【００８２】
さまざまな実施形態において、協働フレームワーク３２０は、実行時を含むさまざまな状態で、ユーザ対話機能の作成、修正、ロード、アンロード、記憶、およびユーザ対話機能間での切り換えを行うために、ＵＩマネージャ３２４を呼び出すことができる。協働フレームワーク３２０は、複合要素へと構成可能なソフトウェア要素として、ユーザ対話機能を実装することができる。ＲＣ要素と同様に、ＩＣ要素もＲＯＳノードを拡張するか、これに基づくものとすることができ、よって、共通の通信レイヤおよびインタフェースをＲＣ要素と共有する。協働フレームワーク３２０は、ＩＣ要素を利用して、１つ以上の対話パラダイム（２−Ｄまたは３−Ｄディスプレイ、タッチスクリーンなどの周辺機器を用いたドライバまたは他のソフトウェア・インタフェースという形をとり得る）をユーザに提供する。たとえば、ロボットに取り付けられた６ＤＯＦジョイスティックをユーザが操作できるようにするアドミッタンス制御対話要素であれば、ユーザのモーションをアドミッタンス制御対話要素の入力γとし、命令されたポーズ出力を同対話要素の出力φとして、これらの間のマッピングを提供することが可能である。
【００８３】
（協働挙動の管理）
【００８４】
協働挙動を実装するために、協働フレームワーク３２０は、協働挙動に関するロボット機能の構成物を構成し、同構成物内のロボット機能のユーザ対話要件を導出し、導出したユーザ対話要件に基づいて同構成物内のロボット機能に対するユーザ対話機能のマッピングを行うことを目的とする、ツールを提供する。協働フレームワーク３２０は、構成物内のロボット機能間のリンクを指定することにより、構成物を構成することができる。さまざまな実施形態において、協働フレームワーク３２０は、かかる構成物を、挙動マニフェスト（ＹＡＭＬ標準、ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ、などに基づくデータ仕様またはシリアライゼーション形式によってフォーマットされたファイルとなり得る）を格納することによって構築することができる。各挙動マニフェストは、協働挙動に関する、１つ以上のロボット機能、ユーザ対話機能、およびリンクを、タグへとカプセル化することが可能であり、このタグのもとで、協働挙動に関して要求される機能およびリンクはリスト化される。１つ以上のｌａｕｎｃｈファイル（たとえば、ＲＯＳ  ｌａｕｎｃｈファイル）および／または挙動マニフェストを含むファイルの中から、さまざまな機能を指定することが可能であり、１つ以上の配信および購読されたトピック（たとえば、ＲＯＳ配信および購読トピック）に基づいて、リンクを指定することができる。たとえば、協働フレームワーク３２０は、利用可能な機能を指定する１つ以上のｌａｕｎｃｈファイルを処理することが可能であり、協働挙動が要求するロボット機能、ユーザ対話機能、およびリンクをカプセル化する、挙動マニフェストを含んだ１つ以上のファイルを処理することが可能である。
【００８５】
図４に示す挙動マニフェスト４００は、ロボット機能、ユーザ対話機能、およびアドミッタンス制御協働挙動によって要求されるリンクを指定する、挙動マニフェストの一例である。挙動マニフェスト４００（ＹＡＭＬワイヤリング・フォーマット仕様となり得る）は、現在使用中の工具および／または現在加工中の加工物に基づいてロボットのモーションを制約するというオプションを、少なくとも１つのロボットに関する少なくとも１つのユーザ・アドミッタンス制御に付与する。挙動マニフェスト４００には、最上位キーとして挙動名４１０、および要求される機能またはリンクのリスト４２５ａ−ｃに関する下位キーとして挙動タグ４２０ａ−ｃが含まれ得る。リスト４２５ａには、要求されるロボット機能のセットを列挙することが可能であり、リスト４２５ｂには、要求されるユーザ対話機能のセットを列挙することが可能であり、リスト４２５ｃには、要求されるリンクのセットを列挙することが可能である。当業者であれば、挙動マニフェスト４００のフォーマットおよび内容は単なる典型にすぎず、本開示の精神および範囲から逸脱することなく、他のフォーマットや内容を用いることも可能であることは理解されよう。
【００８６】
始動中、協働フレームワーク３２０は、たとえば、協働フレームワーク３２０に関連付けられたプレフィックスを持つ任意のｌａｕｎｃｈファイルについてローカル・ファイル・システムを解析することにより、利用可能なロボット機能のリストを構築するように挙動マネージャ３２２に命令することが可能であり、また挙動マニフェストを含む任意のファイルを検索および読み込むこともできる。挙動マネージャ３２２は、実行時を含むさまざまな状態において、または少なくとも１つの協働挙動がエンゲージしている状態で、協働挙動のロード、エンゲージ、エンゲージ解除、アンロード、および協働挙動間での切り換えを行うことができる。ＵＩマネージャ３２４および／または協働フレームワーク３２０の別のモジュールは、１つ以上の管理ＵＩを定義および提供することが可能であり、ユーザはこの管理ＵＩを通じて、さまざまな管理機能を実行することができる。
【００８７】
管理機能には、さまざまな機能（たとえば、ユーザが利用可能であるものの、ロードされていない、ロードされている、インスタンス化されていない（すなわち一般性）、インスタンス化されている（すなわち専用化されている）、動作中、待機中、停止中、などの状態となっている、ロボット機能および／またはユーザ対話機能）のリストの閲覧、新たな機能の作成、協働フレームワーク３２０がロード、インスタンス化（すなわち専用化）、インスタンス化解除（すなわち一般化）、再インスタンス化（すなわち再専用化）、アンロード、交換、細部加工、修正、削除、などを行うための既存の機能の選択、および異なる機能のために同一の方法で実行可能な他の機能が含まれ得る。管理機能には、さまざまな協働挙動（たとえば、ユーザが利用可能である、ロードされている、エンゲージされている、などの協働挙動）のリストの閲覧、新しい協働挙動の作成、協働フレームワーク３２０がロード、エンゲージ、エンゲージ解除、アンロード、交換、細部加工、修正、削除、などを行うための既存の協働挙動の選択、および異なる協働挙動のために同一の方法で実行可能な他の機能も含まれ得る。たとえば、ユーザは、管理ＵＩを使用して、利用可能な協働挙動の一覧をブラウズし、協働フレームワーク３２０がロードおよび／またはエンゲージ、細部加工、修正、削除、などを行うための協働挙動を選択することができる。別の例として、ユーザは、管理ＵＩを使用して、任意のエンゲージされた協働挙動があるかブラウズし、協働フレームワーク３２０がエンゲージ解除、アンロード、交換、細部加工、修正、などを行うための任意のエンゲージされた協働挙動を選択することができる。
【００８８】
協働フレームワーク３２０またはその中の任意のモジュールが協働挙動をロードする命令を受信したことに応答して、挙動マネージャ３２２は、協働挙動に関連付けられた少なくとも１つの挙動マニフェストによって要求されるロボット機能の構成物を検索し、要求されたロボット機能のための独立した子プロセスとしてＲＣ要素をローンチすることができる。これにより、挙動マネージャ３２２は、たとえば必要に応じて、開始、停止、再開始、終了、または削除することにより、ＲＣ要素を管理、そして優雅に移行することが可能になる。こうした移行の間、挙動マネージャ３２２は、ロボットを一時停止したり、一時停止状態に入るようにロボットに命令および待機したりすることができる。
【００８９】
要求されたすべてのＲＣ要素をローンチした後、挙動マネージャ３２２は、協働挙動によって要求されるすべてのリンクに関する挙動マニフェスト、および／または要求されたＲＣ要素を監視することができる。要求されたリンクの各々について、挙動マネージャ３２２は、リンク要素、または、送信ノード（たとえば、所与のトピックに向けて配信しているＲＣ要素）を購読し、受信ノード（たとえば、所与のトピックに購読されているＲＣ要素）を配信するロジックを含む、明示的に生成された一時的な構成要素をスポーンすることができる。この抽出により、いくつかの利点が得られる。リンク要素を用いることにより、各リンクは、挙動マネージャ３２２内に直接リンク・ロジック（配信者および購読者）をスポーンさせるのではなく、自身のプロセスへと区分化されることが可能になり、それにより、挙動マネージャ３２２は、実行時のＲＣ要素間のリンクを容易に認識できるようになる。また、この抽出により、接続された機能要素のグラフ型構造が維持されることから、有用なイントロスペクションも可能になる。たとえば、ユーザは、すべてが挙動マネージャ３２２の中央ハブに接続されている多数のＲＣ要素ではなく、可視化ツール（たとえば、ｒｑｔ＿ｇｒａｐｈ、ＲＯＳグラフ可視化ツール）を介して、ＲＣ要素間の明示的な接続を把握することができる。
【００９０】
動作中の各ＲＣ要素およびリンク要素について独立した処理を用いる結果、挙動マネージャ３２２は、他のさまざまな挙動コマンドおよび管理行為を容易に実装および実行することが可能になる。協働挙動をアンロードするという命令に応答して、挙動マネージャ３２２は、協働挙動に関連付けられた動作中のＲＣ要素およびリンク要素を単純に終了することができる。既にロードされた第１の協働挙動から、要求されたもののロードされていない第２の協働挙動への切り替えを行うという命令に応答して、挙動マネージャ３２２は、第１および第２の協働挙動によって共有されている共通のロボット機能を見つけ出して、第１および第２の協働挙動によって共有されていないＲＣ要素およびリンク要素のみをロードおよびアンロードすることができる。
【００９１】
挙動マネージャ３２２は、さまざまな状態において、個別のＲＣ要素を加えるまたは省くことが可能であり、個別のリンクを作成または破棄することが可能である。たとえば、協働挙動のロード、さらにはエンゲージが行われた後、挙動マネージャ３２２は、１つ以上の新たな個別のＲＣ要素および／またはリンク要素を協働挙動に加えることが可能であり、協働挙動に関連付けられた１つ以上の個別のＲＣ要素および／またはリンク要素を省くことが可能である。協働挙動がエンゲージ状態にある場合、挙動マネージャ３２２は、協働挙動の機能をできるだけ多く保持しながら、個別のＲＣ要素および／またはリンク要素を追加または削除することが可能である。挙動マネージャ３２２に対する要求または命令は、サービス（たとえばＲＯＳサービス）として実装可能であり、よってそれらの要求または命令は、グラフィカルＵＩへの接続、またはプログラムに従っての呼び出しが容易になされ得る。
【００９２】
挙動マネージャ３２２は、協働フレームワーク３２０が実行中を含むさまざまな状態にあるときに、個別のＲＣ要素を動的に適応させることもできる。たとえば、ＲＣ要素のロード後、挙動マネージャ３２２は、１つ以上の命令を通じて定義された情報カーネルを有するＲＣ要素をインスタンス化または専用化することができる。挙動マネージャ３２２は、ＲＣ要素から既存の情報カーネルを切り離すことにより、専用化されたＲＣ要素をインスタンス化解除または一般化することができる。挙動マネージャ３２２は、既存の情報カーネルを新たな情報カーネルと交換することで、専用化されたＲＣ要素を再インスタンス化または再専用化することもできる。
【００９３】
上述の通り、協働フレームワーク３２０は、ＲＣ要素またはリンク要素とは独立かつ別個に、協働挙動に関連付けられたＩＣ要素を管理することができる。協働挙動に関するＵＩ要件を満たすために、協働フレームワーク３２０のＵＩマネージャ３２４は、利用可能なユーザ対話機能に基づくＩＣ要素のセットを提供することができる。ＵＩマネージャ３２４は、挙動マネージャ３２２がＲＣ要素をローンチするのと同様の方法で、独立した処理としてＩＣ要素をローンチすることが可能であり、それにより、動作中のＩＣ要素間での管理および移行がなされるとき、上述のものと同様の機能および利点をＵＩマネージャ３２４に提供する。さらに、ＩＣ要素は、ＲＣ要素およびリンク要素から独立した処理としてローンチされる。しかし、ＵＩマネージャ３２４は、動作中のＩＣ要素間の明示的なリンクを定義しない。代わりに、ＵＩマネージャ３２４は、Δ（すなわち、互換関数）という上述した観念を利用して、特定のＲＣ要素についてのＩＣ要素の妥当性を判断することができる。さまざまな実施形態において、協働挙動に関連付けられた互換関数は、協働フレームワーク３２０によるロード時に当該協働挙動のために特定のＩＣ要素が要求されることを明記することができ、このことは、協働挙動自身により（たとえば、挙動マニフェスト内で）、または協働挙動内の少なくとも１つの特定のロボット機能により（たとえば、ｌａｕｎｃｈファイル内で）行われる。図５は、サンダに関連付けられた工具挙動制約をユーザに選択および／または適用させるＩＣ要素によって提供された工具挙動ＵＩ要素５１０が格納されたＵＩ５００の一例を描いており、ＵＩ５００については、処理の一例にからめて以下でより詳細に説明する。
【００９４】
さまざまな実施形態において、協働フレームワーク３２０は、互換関数Δに従い、ロボット機能に関する協働挙動の構成物内のロボット機能に関するすべてのユーザ対話要件を満たすことにより、協働挙動を作成することができる。ＲＣ要素として構成物内の各ロボット機能をロードした後、協働フレームワーク３２０は、ロボット機能に関するｌａｕｎｃｈファイル内にリストされた要件に基づいてロボット機能によって要求されたユーザ対話機能を判断することができる。ロボット機能の要件は、１つ以上の明示的に要求されたユーザ対話機能および／または１つ以上の抽象インタフェース要件のリストをリストすることができる。たとえば、工具モーション制約機能は、ジョイスティックを用いたデカルト制御のために特定のユーザ対話機能を要求することができる。工具モーション制約機能は、テキスト・フィールド、ボタン、およびトグルなど、１つ以上の抽象インタフェース要件のリストを提供することもできる。協働フレームワーク３２０は、抽象インタフェース要件のリストを解析し、どのユーザ対話機能が抽象インタフェース要件にマッチするか判断することができる。次いで、協働フレームワーク３２０は、要求されたＩＣ要素を検索およびロードし、各ＩＣ要素を、ＩＣ要素またはＩＣ要素によって提供されるユーザ・インタフェースを要求する１つ以上のＲＣ要素へ接続することができる。
【００９５】
協働フレームワーク３２０またはその中の任意のモジュールが協働挙動をロードする命令を受信したことに応答して、ＵＩマネージャ３２４は、協働挙動に関連付けられた挙動マニフェスト内にＵＩ要件としてリストされるすべてのＩＣ要素を自動的にロードすることができる。加えて、協働フレームワーク３２０が、全体としてこれらの協働挙動を超える特定のＵＩ要件を持つ１つ以上の要件の高いＲＣ要素をロードする場合、要件の高いＲＣ要素は、自身のＵＩ要件を、ロード処理中に、データ用に共有されたメモリ・スペース（たとえば、ＲＯＳパラメータ・サーバ）上でブロードキャストすることができる。ブロードキャストされたＵＩ要件に応答して、ＵＩマネージャ３２４は、要件の高いＲＣ要素によって要求されたＩＣ要素をロードすることができる。協働挙動および／または何らかの要件の高いＲＣ要素によって要求されたＩＣ要素をロードしたことに続いて、ＵＩマネージャ３２４は、ＵＩ要件として適切な１つ以上のＵＩ要素を提供し、何らかの必要な接続を確立するために、ロードされたＩＣ要素をコールすることができる。ＵＩが協働挙動のために必要な対話モダリティをユーザへと確実に提供するように、協働挙動の作成者または設計者は、少なくとも協働挙動に関するＵＩ要件の最小セットを明示的に指定する必要がある。
【００９６】
図３Ｂに示したものを一例とする、さまざまな実施形態において、協働システムには、独立したコンピュータ（図示なし）のグループ上で動作するモジュールを有する分散型協働フレームワーク３５０が含まれ得る。コンピュータのグループには、複数の汎用または特定用途向けコンピュータが含まれ得る。その例として、クライアント−サーバ・ネットワーク、ピア・ツー・ピア・ネットワーク、コンピュータ・クラスタ、グリッド、クラウド他、これらの任意の組み合わせが挙がり得る。コンピュータは、少なくとも１つのネットワーク３６０を介して通信可能に連結された任意のタイプ（たとえば、物理的、仮想的など）の機械とすることができる。ネットワーク３６０としては、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、イントラネット、インターネットなど、任意の好適なタイプの１つ以上の通信ネットワークが挙がり得る。たとえば、コンピュータのグループには、ＲＯＳ上でネットワーク化された、独立した機械が含まれ得る。グループ内の各コンピュータは、同グループ内の少なくとも１つの他のコンピュータと通信可能に連結（たとえば、ネットワーク化）し得る。コンピュータのグループにインストールされたソフトウェアには、分散型協働フレームワーク３５０のモジュールおよび１つ以上のオペレーティング・システムの複数のインスタンス（図示なし）が含まれ得る。分散型協働フレームワーク３５０のモジュールは、オペレーティング・システムによってサポートされ、かつ／またはオペレーティング・システムの上層に構築され得る。このオペレーティング・システムは、市販、オープンソース、メーカ独自、またはＲＯＳや他の好適なオペレーティング・システムもしくはプラットフォームのいずれであってもよい。
【００９７】
分散型協働フレームワーク３５０のモジュールには、ＲＣ要素およびリンク要素を管理する挙動マネージャ３５２と、ＩＣ要素を管理するＵＩマネージャの１つ以上のインスタンス３５４とが含まれ得る。分散型協働フレームワーク３５０は、１つ以上のＵＩ３７０を使用して、１人以上のユーザと通信および対話することができる。このことは、コンピュータの１つ以上の構成要素もしくは周辺機器および／またはロボット３８０の１つ以上の構成要素を介してＵＩ３７０を提供することによって行われる。当業者であれば、本開示の精神および範囲から逸脱することなく、他の構成要素および周辺機器を介してＵＩ３７０が提供され得ることは理解されよう。分散型協働フレームワーク３５０は、ネットワーク３６０を介し、１つ以上のロボット３８０および／またはそのユーザと通信および対話をすることにより、協働挙動に関連付けられた協働／支援機能を学習および／または提供することができる。
【００９８】
協働フレームワーク３５０内でＲＣ要素とＩＣ要素を明示的に分割することにより、挙動マネージャ３５２およびＵＩマネージャ・インスタンス３５４のうちの少なくとも１つのインスタンスは、別々のコンピュータ上で動作することが可能になる。このような構成の柔軟性は、分散型協働フレームワーク３５０が、小さなＵＩフロント・エンドを持ちながらも、論理構成要素およびリンクを管理するために１つ以上の高い計算能力を要求する論理モジュールを必要とするシナリオにおいて、有用なものとなり得る。これらのシナリオにおけるパフォーマンスを最適化するために、分散型協働フレームワーク３５０は、計算能力の高いリモートなコンピュータまたはコンピュータ・クラスタ（図示なし）上で挙動マネージャ３５２を動作させ、ＵＩマネージャ・インスタンス３５４の１つ以上の分散インスタンスを、デスクトップ、ラップトップ、タブレット、モバイル・デバイス、ロボット・コントローラ、などの１つ以上の計算能力に劣るローカルなコンピュータ（図示なし）上で動作させることができる。
【００９９】
さらに、ＵＩマネージャ・インスタンス３５４は、ＵＩ３７０における、１つ以上の表示パラメータおよび各要素が持つ他の特性を、ローカルのコンピュータに接続された構成要素または周辺機器（たとえばディスプレイ）のタイプおよび性質に基づいてカスタマイズすることができる。たとえば、小型タッチスクリーン・タブレットに表示されたＵＩ３７０のうちの１つのＵＩ要素は、タッチ対話のために調整されたより大きなボタンを持つよりコンパクトなものとすることができる。別の例として、仮想現実デバイスを介して表示されているＵＩ３７０のうちの１つのＵＩ要素には、没入型ＵＩ要素が含まれ得る。ＵＩマネージャ・インスタンス３５４を別々のコンピュータへと分散させること、およびＵＩ３７０内のＵＩ要素をカスタマイズすることを可能にする分散型協働フレームワーク３５０が持つ構成の柔軟性により、分散型協働フレームワーク３５０がユーザと対話するのに用いるハードウェア・プラットフォームに基づいて自動的にＵＩ３７０が構成されることを可能にする領域特定の対話が可能になる。
【０１００】
図３Ａおよび図３Ｂに示し本明細書で説明したような協働システムの例示的実施形態は、諸概念を具体的に提示することを意図したものであり、当業者がこれらの実施形態を実践できるように十分詳細に説明されている。ただし、本開示の範囲から逸脱することなく、他の実施形態も利用可能であり、変更もなされ得る。
【０１０１】
図６は、本開示の実施形態による、再使用可能な機能表現の作成、動的適応、および管理、ならびに人間−機械協働挙動の作成、再使用、および管理をサポートする一般化可能フレームワークによって実行される処理６００の流れ図である。処理６００は、図３Ａに示した協働フレームワーク３２０または図３Ｂに示した分散型協働フレームワーク３５０などの協働フレームワークによって実行され得る。処理６００は、協働フレームワークをローンチまたは提供することによって開始可能である。あるいは、処理６００は、協働フレームワークのローンチ中またはローンチ後に開始可能である。
【０１０２】
ブロック６０２において、協働フレームワークは、挙動マネージャ（たとえば、挙動マネージャ３２２、３５２）の少なくとも１つのインスタンスおよびＵＩマネージャ（たとえば、ＵＩマネージャ３２４、３５４）の少なくとも１つのインスタンスを含む、モジュールを提供することができる。挙動マネージャおよびＵＩマネージャのインスタンスは、各々が独立した処理としてローンチおよび実行されることが可能であり、したがって、異なるコンピュータまたは機械上で動作することができる。起動中および／または起動後、協働フレームワークは、利用可能な機能および／または協働挙動のリストを１つ以上構築するように、挙動マネージャおよび／またはＵＩマネージャに命令することができる。リストには、ロボット機能（たとえば、一般ロボット機能、専用化済みロボット機能など）、ユーザ対話機能、リンク、ＲＣ要素（すなわち、１つ以上のロボット機能のインスタンス）、ＩＣ要素（すなわち、１つ以上のユーザ対話機能のインスタンス）、リンク要素（すなわち、１つ以上のリンクのインスタンス）、情報カーネル、協働挙動、などに関する１つ以上のリストが含まれ得る。協働フレームワークは、協働フレームワークに関連付けられたプレフィックスを持つ任意のｌａｕｎｃｈファイルについてのローカル・ファイル・システムを解析することにより、利用可能な機能または協働挙動のリストを構築することが可能であり、また挙動マニフェスト（たとえば、挙動マニフェスト４００）を含む任意のファイルを検索および読み込むことも可能である。
【０１０３】
次に、ブロック６０４において、協働フレームワークは、入力を受信して、協働挙動をエンゲージまたは構成することができる。協働フレームワークは、新たな協働挙動の作成、またはエンゲージおよび／もしくは修正する既存の協働挙動の選択を行う命令を、１つ以上のＵＩ要素を介する、コマンド・シェルを介する、プログラムに従う、などして受信することが可能である。協働フレームワークが既存の協働挙動をエンゲージするための入力を受信する場合、協働フレームワークはブロック６１２に進むことができる。あるいは、分岐ブロック６１０において、協働フレームワークが新たな協働挙動の作成または既存の協働挙動の修正などの協働挙動の構成を行うための入力を受信する場合、協働フレームワークは、図９に関連して以下でより詳細に説明する処理９００を実行することができる。
【０１０４】
ブロック６１２において、協働フレームワークは、少なくとも１人のユーザと対話し、作業を協働して実行するロボットを制御するための協働挙動を選択することができる。協働フレームワークは、協働挙動の機能を動的適応させることにより、ユーザとともに、特定の作業または特定の作業クラス内の作業を協働して実行するようにロボットを制御することができる。作業は、完了に向けて１つ以上の作業動作を要求することができ、協働フレームワークは、その作業動作を実行するために、１つ以上の協働挙動をエンゲージすることができる。ワーキング・メモリ内に協働挙動がロードされていなければ、ブロック６１４において、協働フレームワークは、機能に関する協働挙動の構成物を指定する協働挙動の仕様（たとえば、挙動マニフェスト４００）を取得および解析することができる。
【０１０５】
次に、ブロック６１６において、協働フレームワークは、１つ以上の機能のインスタンスである、機能要素のセットを、協働挙動の機能構成物に基づいて提供することができる。機能要素のセットには、１つ以上のＲＣ要素および１つ以上のＩＣ要素が含まれる。さまざまな実施形態において、協働フレームワークは、以下でより詳細に説明する、図７に示した処理７００を実行することにより、機能要素のセットを提供することができる。次いで、ブロック６１８において、協働フレームワークは、１つ以上の機能間の１つ以上のリンクのインスタンスであるリンク要素のセットを提供し、リンク要素のセットを用いて機能要素のセットを接続することができる。さまざまな実施形態において、協働フレームワークは、以下でより詳細に説明する、図８に示した処理８００を実行することにより、リンク要素のセットの提供および機能要素のセットの接続を行うことができる。
【０１０６】
ブロック６２０において、協働フレームワークは、ユーザとの対話および作業を実行するためのロボットの制御に向けて、機能要素のセットを実行することにより、協働挙動をエンゲージすることができる。協働フレームワークは、ＲＣ要素の実行と、１つ以上のＲＣ要素を使用し、ロボットに取り付けられた工具を用いて作業を完了するための１つ以上の作業動作を実行するためのロボットの１つ以上の機能の制御とを行うように、挙動マネージャに命令することができる。協働フレームワークは、１つ以上のＩＣ要素を実行してユーザがロボットおよび／または協働フレームワークと対話することを可能にする１つ以上のＵＩを提供するようにＵＩマネージャに命令することもできる。協働フレームワークは、あらゆる時間において、エンゲージされた協働挙動のエンゲージ解除および／または動作中の機能要素の停止が可能である。たとえば、エンゲージされた協働挙動および／または動作中のＲＣ要素のいずれかは、協働挙動のエンゲージ解除、または任意の動作中のＲＣ要素、作業または作業動作の完了、エラーまたはセーフティ・アラーム、などの停止を命じるユーザからの命令または入力に応答して、エンゲージ解除または停止させることができる。協働フレームワークは、個々の機能要素および／またはリンク要素を追加または削除して機能要素間のリンクを確立または破棄する際に、協働挙動をエンゲージ解除することもできる。
【０１０７】
作業または作業動作の完了、あるいは協働挙動のエンゲージ解除に続き、分岐ブロック６３０において、協働フレームワークは、新たな作業または作業動作を実行するか否かを決定することができる。協働フレームワークが新たな作業を実行すると決定した場合、処理６００は分岐ブロック６４０に進むことができ、そこで協働フレームワークは、協働挙動および／または機能要素のセット内の１つ以上の機能要素を再使用するか否かを決定することができる。たとえば、協働フレームワークは、協働挙動が、ユーザとともに新たな作業を協働して実行するのに好適か否かを判断することができる。協働フレームワークが協働挙動および／または機能要素のセット内の一部もしくは全部の機能要素を再使用すると決定した場合、協働フレームワークは、処理６００がブロック６２０にジャンプする前に、新たな作業への移行に向けて協働挙動および／または機能要素のセットを準備することができる。たとえば、新たな作業の要件に基づいて、協働フレームワークは、ＲＣ要素のいずれかを一般化または再専用化し、機能要素のいずれかの間のリンクを再マッピングし、かつ／または機能およびリンク要素のいずれかを終了もしくはアンロードすることにより、移行に向けた機能要素のセットを準備することができる。
【０１０８】
分岐ブロック６４０で協働フレームワークが協働挙動を再使用しないと決定した場合、処理６００はブロック６４２に進むことができる。ブロック６４２において、協働フレームワークは、処理６００が分岐ブロック６１０へとジャンプして新たな作業の実行のために別の協働挙動をエンゲージまたは構成する前に、協働挙動のエンゲージ解除およびアンロード、ならびに／または機能およびリンク要素の一部もしくは全部を終了およびアンロードすることができる。協働フレームワークは、協働挙動に関してインスタンス化された機能およびリンク要素などを終了およびアンロードすることにより、協働挙動をアンロードすることができる。ただし、新たな作業に関する続く協働挙動が１つ以上の機能および／またはリンク要素を利用可能である場合、協働フレームワークは、ワーキング・メモリに機能および／またはリンク要素の一部もしくは全部を保持すること、ならびにＲＣ要素の一部もしくは全部を再専用化することが可能である。一方、協働フレームワークが後続の協働挙動が再使用可能な機能やリンク要素を一切発見しなければ、協働フレームワークは、分岐ブロック６１０にジャンプして別の協働挙動をエンゲージまたは構成する前に、協働挙動をアンロードし、協働挙動に関連付けられたすべての機能およびリンク要素を終了およびアンロードすることができる。
【０１０９】
あるいは、分岐ブロック６３０で協働フレームワークが別の作業を実行しないと決定した場合、ブロック６５２において、協働フレームワークは、協働挙動のエンゲージ解除およびアンロード、協働挙動に関連付けられたすべての機能およびリンク要素の終了およびアンロード、挙動マネージャおよびＵＩマネージャの終了およびアンロード、ならびに／または協働フレームワークの終了およびアンロードを行うことができる。最後に、ブロック６５２の後、処理６００は終了する。
【０１１０】
図７および図８は、本開示の実施形態による、人間−機械協働挙動に基づく再使用可能な機能表現の提供および動的適応に向けた、一般化可能フレームワークによって実行される、処理７００および処理８００の流れ図である。
【０１１１】
図７を参照する。協働フレームワークは、（図６に示した）ブロック６１４における現在の協働挙動の機能構成物の取得および解析を行いながら、またはその後に、処理７００を実行することができる。処理７００において、協働フレームワークは、機能構成物によって指定された１つ以上のロボット機能に基づいてＲＣ要素を提供するために、挙動マネージャをコールすることができる。協働フレームワークは、機能構成物によって指定され、かつ／または機能構成物内の個々のロボット機能によって要求された、１つ以上のユーザ対話機能に基づいてＩＣ要素をロードおよび実行するために、ＵＩマネージャの少なくとも１つのインスタンスをコールすることもできる。協働フレームワークは、各ＲＣ要素および各ＩＣ要素を、独立したインスタンスまたは処理として提供することができる。
【０１１２】
ブロック７０２において、協働フレームワークは、機能構成物を解析し、機能構成物内で指定された機能を選択することができる。協働フレームワークは、機能構成物内で指定されたユーザ対話機能によって満たされていない少なくとも１つの抽象インタフェース要件を持つ要件の高いロボット機能があればそれを識別することもでき、挙動マネージャは、共有されたメモリ・スペース上で追加のＵＩ要件をブロードキャストすることができる。それに応じて、ＵＩマネージャは、追加のＵＩ要件を満たすために、少なくとも１つのユーザ対話機能を選択することができる。ＵＩマネージャは、要件の高いロボット機能に対して互換関数を実行することにより、適切なユーザ対話機能を選択することができる。次いで、ブロック７０４において、協働フレームワークは、選択された機能のタイプを判断することができる（たとえば、ロボット機能であるか、ユーザ対話機能であるか）。
【０１１３】
分岐ブロック７１０において、選択された機能がロボット機能であると判断されれば、処理７００はブロック７１２に進むことができ、そこで協働フレームワークは、ロボット機能のインスタンスをＲＣ要素として提供することができる。協働フレームワークは、協働挙動を使用して実行されることになる作業動作に関連付けられた１つ以上の作業動作タイプを基に作業動作を実行するのに適切な１つ以上の一般ロボット機能に基づいてＲＣ要素を提供することができる。たとえば、協働フレームワークは、ロボット機能に関連付けられたｌａｕｎｃｈファイルをコールしＲＣ要素を作成するように挙動マネージャに命令することにより、ＲＣ要素を提供することができる。一般ロボット機能の例としては、モーション制約、モーション即時再生、軌跡生成、などが挙げられる。たとえば、先行する作業を実行するために、および／または予めロードされた協働挙動によって要求されたために、ロボット機能のインスタンスが利用可能であり既にメモリにロードされているのであれば、協働フレームワークは、新たなＲＣ要素を作成する代わりに、既にロードされているＲＣ要素を単純に適応させることができる。
【０１１４】
次に、ブロック７１４において、協働フレームワークは、ＲＣ要素をインスタンス化または専用化するのに用いる情報カーネルを少なくとも１つ提供することができる。情報カーネルは、ＲＣ要素によって要求される１つ以上の作業関連パラメータのセットをカプセル化し、情報カーネルにカプセル化可能なパラメータのタイプには、たとえば、工具挙動制御、ＴＭＰ、知覚テンプレート、などが含まれる。協働フレームワークは、機能構成物および／またはＲＣ要素によって要求されるパラメータのセットに基づいて情報カーネルを識別することができる。次いで、ブロック７１６において、協働フレームワークは、情報カーネルを用いて、ＲＣ要素を専用化することができる。ＲＣ要素が別の情報カーネルで既に専用化されている場合、協働フレームワークは、たとえば、ＲＣ要素を一般化し（たとえば、ＲＣ要素を別の情報カーネルから切り離し）、その後で情報カーネルを用いてＲＣ要素を専用化することにより、ＲＣ要素を再専用化することができる。ブロック７１６の後、処理７００は分岐ブロック７２０に進むことができる。
【０１１５】
あるいは、分岐ブロック７１０において、選択された機能がユーザ対話機能であると判断されれば、処理７００はブロック７１８に進むことができ、そこで協働フレームワークは、ユーザ対話機能のインスタンスをＩＣ要素として提供することができる。たとえば、協働フレームワークは、ユーザ対話機能に関連付けられたｌａｕｎｃｈファイルをコールしＩＣ要素を作成するようにＵＩマネージャに命令することにより、ＩＣ要素を提供することができる。ＵＩマネージャは、ＩＣ要素がユーザとの対話に用いることになる、ユーザ・インタフェース（たとえば、ディスプレイ、ユーザ入力デバイス、など）の特性を判断し、次いで、それらの特性に基づいてＩＣ要素をカスタマイズすることもできる。たとえば、先行する作業を実行するために、および／または予めロードされた協働挙動によって要求されたために、ユーザ対話機能のインスタンスが利用可能であり既にメモリにロードされているのであれば、協働フレームワークは、新たなＩＣ要素を作成する代わりに、既にロードされているＩＣ要素を単純に適応させることができる。ブロック７１８の後、処理７００は分岐ブロック７２０に進むことができる。
【０１１６】
分岐ブロック７２０において、協働フレームワークは、機能構成物および／またはいずれかの要件の高いロボット機能の抽象インタフェース要件に基づいて、機能のインスタンスをさらに提供するか否かを判断することができる。提供する場合、処理７００はブロック７０２にジャンプすることができる。あるいは、提供しない場合、協働フレームワークは、処理７００を終了し、（図６に示した）ブロック６１８にジャンプすることができる。
【０１１７】
図８を参照する。協働フレームワークは、機能構成物内で指定されたロボット機能に関連付けられたＲＣ要素を提供した後に、処理８００を実行することができる。処理８００において、協働フレームワークは、協働挙動の機能構成物によって指定されたリンクおよびマッピングに基づいてリンク要素を提供するために挙動マネージャをコールすることができ、また各リンク要素を独立したインスタンスまたは処理として提供することができる。
【０１１８】
ブロック８０２において、協働フレームワークは、ロボット機能間のリンクやロボット機能とユーザ対話機能の間のマッピングなど、機能間の１つ以上のリンクまたは接続について、機能構成物を解析することができる。次に、ブロック８０４において、協働フレームワークは、リンクまたはマッピングのインスタンスを、リンク要素として提供することができる。その後、ブロック８０６において、協働フレームワークは、そのリンク要素を使用して、関連する機能要素を接続することができる。たとえば、リンクは、機能構成物内で指定されたリンクまたはマッピングに基づいて、機能要素のペア間に形成され得る。機能要素のリンクされたペアには、配信者機能要素および購読者機能要素が含まれる。協働フレームワークは、トピックの形態をとるリンクされたペア間のリンクを形成することができ、このリンク内で配信者機能要素はトピックを配信し、購読者機能要素はトピックを購読する。
【０１１９】
最後に、分岐ブロック８１０において、協働フレームワークは、機能構成物内に残っている任意のリンクおよびマッピングに基づいて、リンク要素をさらに提供するか否かを判断することができる。提供する場合、処理８００はブロック８０２にジャンプすることができる。あるいは、提供しない場合、協働フレームワークは、処理８００を終了し、（図６に示した）ブロック６２０にジャンプすることができる。
【０１２０】
図９は、本開示の実施形態による、人間−機械協働挙動を構成するための例示的方法を示す流れ図である。協働フレームワークは、（図６に示した）ブロック６１０において協働挙動を構成するという入力を受信した後、処理９００に実行することができる。ブロック９０２において、協働フレームワークは、コンポーザを提供することができ、これはたとえば、挙動マネージャおよび／またはＵＩマネージャにコンポーザを提供するよう命令することによって行われる。
【０１２１】
ブロック９０４において、協働フレームワークは、協働挙動に関する機能構成物を提供するようにコンポーザに命令することができる。協働挙動が新規であるか、機能構成物を含まない場合、コンポーザは、機能構成物を作成することができる。あるいは、協働挙動が機能構成物を含む場合、コンポーザは、機能構成物をロードすることができる。次に、ブロック９０６において、コンポーザは、利用可能なロボット機能、ユーザ対話機能、情報カーネル、合成作用素、などを含む挙動構成要素のリストを提供することができる。コンポーザは、任意の構成ファイルおよび／または協働フレームワークに関連付けられたプレフィックスを有するｌａｕｎｃｈファイルについてローカル・ファイル・システムを解析することにより、利用可能な挙動構成要素のリストを構築することができる。
【０１２２】
ブロック９０８において、コンポーザは、たとえば１つ以上のＵＩ要素またはコマンド・シェルを介する、プログラムに従う、などにより、ユーザから、機能構成物内の挙動構成要素を追加、修正、または削除するための入力を受信することができる。次いで、分岐ブロック９２０において、コンポーザは、１つ以上の挙動構成要素を追加または修正／削除するかどうかを判断することができる。
【０１２３】
分岐ブロック９２０において、ユーザは１つ以上の挙動構成要素を機能構成物に追加することを望んでいるとコンポーザが判断した場合、処理９００は、ブロック９２２に進むことができ、そこでコンポーザは機能を選択することができる。コンポーザは、機能やコマンド・ラインに関するリストからのユーザの選択に応答して、機能を選択することができる。次に、ブロック９２４において、コンポーザは、選択された機能がロボット機能か否かを判断することができる。ロボット機能であれば、コンポーザは、そのロボット機能をインスタンス化または専用化するのに用いる情報カーネルを選択するようにユーザを促すことができる。次いで、ブロック９２６において、コンポーザは、選択された機能に関連付けられた合成作用素、および／または選択された機能を構成するのに用いる演算数（たとえば、別の機能）を選択することができる。コンポーザは、選択された機能、およびオプションで選択された作用素および／または機能構成物内の演算数を追加することができる。ブロック９２６の後、処理９００は分岐ブロック９４０に進むことができる。
【０１２４】
あるいは、分岐ブロック９２０において、ユーザは機能構成物に由来する１つ以上の挙動構成要素を修正または削除することを望んでいるとコンポーザが判断した場合、処理９００は、ブロック９３２に進むことができ、そこでコンポーザは、ユーザに機能構成物を提供し、機能構成物内の少なくとも１つの挙動構成要素を選択するためのユーザ入力を受信することができる。次いで、ブロック９３４において、コンポーザは、選択された挙動構成要素の修正、または選択された挙動構成要素の機能構成物からの削除を行うことができる。ブロック９３４の後、処理９００は分岐ブロック９４０に進むことができる。
【０１２５】
分岐ブロック９４０において、コンポーザは、機能構成物の構成を継続するか否かを判断することができる。コンポーザは、その判断をユーザ入力に基づいて行うことができる。コンポーザは、互換関数に従い、機能構成物内のロボット機能のすべてのユーザ対話要件が、機能構成物内のユーザ対話機能によって満たされているか否かを判断することもできる。コンポーザが継続することを決定した場合、処理９００はブロック９０６にジャンプすることができる。あるいは、コンポーザが継続しないことを決定した場合、処理９００はブロック９４２に進むことができる。
【０１２６】
ブロック９４２において、コンポーザは、機能構成物内の機能間のリンクおよびマッピングを１つ以上提供することができる。コンポーザは、機能構成物を解析し、機能構成物内の１つ以上の合成作用素、ロボット機能の抽象インタフェース要件、ユーザ入力、などに基づいてリンクおよびマッピングを提供または導出することができる。最後に、ブロック９４４において、コンポーザは、協働挙動に関連付けられた挙動マニフェスト内の機能構成物を記憶することができる。図４にその一例を示す挙動マニフェストは、協働挙動に関する、１つ以上のロボット機能、ユーザ対話機能、およびリンク／マッピングを、タグへとカプセル化することが可能であり、このタグのもとで、協働挙動のために要求される機能およびリンク／マッピングがリストされる。最後に、ブロック９４４の後、協働フレームワークは、処理９００を終了し、（図６に示した）ブロック６１０にジャンプすることができる。
【０１２７】
（例示的処理）
【０１２８】
協働フレームワークは、ユーザと協働してサンダ作業を実行するために、協働挙動を作成またはロードすることができる。協働挙動を作成またはロードし、協働挙動内で指定された少なくとも１つの一般ロボット機能をロードした後、協働フレームワークは、サンダがロボットに取り付けられているということを識別し、サンダに関連付けられたパラメータをカプセル化する少なくとも１つの情報カーネルを用いて一般ロボット機能をインスタンス化することができる。次いで、協働フレームワークは、既にロードされたのでなければ、インスタンス化されたロボット機能のＵＩ要件に基づいて工具挙動対話機能をロードし、サンダに関連付けられた工具挙動制約をユーザに選択および／または適用させる工具挙動ＵＩ要素を提供することができる。たとえば、工具挙動対話機能は、協働挙動によって要求される機能でなくてもよい。次いで、協働フレームワークは、ユーザが、工具挙動制約内で指定された１つ以上の挙動制約を選択および実施した後、実施した挙動制約に基づいてロボットのモーションを制約できるようにする、（図５に示した）工具挙動ＵＩ要素５１０を提供するために、工具挙動対話機能を実行することができる。たとえば、協働フレームワークは、取り付けられたサンダのモーションがサンダ・パッドの平面範囲内にのみ制約されるように、挙動制約を実施または適用することができる。
【０１２９】
協働フレームワークは、必要であれば、ユーザに知覚テンプレートを選択および／または適用させる加工物対話機能を同様に識別およびロードし、次いで、１つ以上の加工物ＵＩ要素５２０において提供するために加工物対話機能を実行することができる。加工物ＵＩ要素５２０には、検出した加工物表面の３−Ｄレンダリング、および加工物上の１つ以上の対象位置をユーザが選択するための入力点群が含まれ得る。加工物ＵＩ要素５２０は、さらに、遠隔操作用に「選択された表面に位置合わせする」という知覚テンプレートをユーザがトグルできるようにすることも可能であり、これにより、取り付けられたサンダの配向が選択された平面または表面と垂直になるように制約することができる。協働フレームワークは、工具挙動および知覚テンプレートをユーザに選択させる加工物ＵＩ要素５２０を、ユーザがロボットをアドミッタンス・ガイドしながら協働フレームワークが実施可能な、より大きな工具制約遠隔操作挙動へと組み込むことができる。
【０１３０】
協働フレームワークは、サンダ作業を実行するための協働挙動によって要求されるＴＭＰに関連付けられた１つ以上のユーザ実演モーションを記録または学習する、ＴＭＰ記録要素５３０を提供することができる。協働フレームワークは、加工物の平面または表面上の点を選択して、選択した点において保存されたＴＭＰをインスタンス化するために、ＴＭＰ実装ＵＩ要素（図示なし）を作成することもできる。平面知覚テンプレートを指定する、３−Ｄビューにおける所望の加工物平面に関するユーザ選択を受信した後、協働フレームワークは、当該平面領域の垂直トップダウン・ビューを示すために、現在の２−Ｄカラー画像を歪曲することができる。その後、ユーザは、画像内の点のセットを選択することができ、ロボットは、ＵＩ要素５４０を介して指定された回数だけ各点においてＴＭＰ内でカプセル化されたモーションを自律的に実行するために協働挙動をエンゲージすることができる。このことは、ＴＭＰ実装と呼ばれるより大きな挙動において利用できる。
【０１３１】
図１０は、本開示の実施形態に即した、コンピュータ・システム１０００を示す図である。一般に、人間−機械協働システムの実施形態（たとえば、協働フレームワーク３２０および分散型協働フレームワーク３５０）は、１つ以上のパーソナル・コンピュータ、サーバ、ワークステーション、組込式システム、多機能デバイス他、これらの組み合わせなど、さまざまなコンピュータ・システムにおいて実装可能である。協働システムまたはモジュールの特定の実施形態は、その中にコンピュータ・プログラムとして組み込まれる。コンピュータ・プログラムは、アクティブおよび非アクティブという両方のさまざまな形態で存在してよい。たとえば、コンピュータ・プログラムは、ソースコード内のプログラム命令、オブジェクト・コード、実行可能コードもしくは他のフォーマット、ファーム・プログラム、またはハードウェア記述言語（「ＨＤＬ」）ファイルを含む、ソフトウェア・プログラムとして存在することができる。上記のいずれもが、圧縮または非圧縮された形態で、ストレージ・デバイスおよび信号を含む、コンピュータ可読媒体上で具体化され得る。ただし、説明のために、システム１０００は、当業者に良く知られた汎用コンピュータとして示される。システム１０００に含まれる可能性のある構成要素および周辺機器の例について以下で説明する。
【０１３２】
図示の通り、システム１０００には、少なくとも１つのプロセッサ１００２、キーボード１０１７、ポインティング・デバイス１０１８（たとえば、マウス、３−Ｄポインティング・デバイス、タッチパッド、など）、ディスプレイ１０１６、メイン・メモリ１０１０、入出力コントローラ１０１５、およびストレージ・デバイス１０１４が含まれ得る。ストレージ・デバイス１０１４には、たとえば、ＲＡＭ、ＲＯＭ、フラッシュ・メモリ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光学ディスク・ストレージ、磁気ディスク・ストレージもしくは他の磁気ストレージ・デバイス、またはその他、命令もしくはデータ構造の形をとる所望のプログラム・コードを搬送もしくは記憶するのに使用可能でありコンピュータがアクセス可能な任意の媒体が含まれ得る。プリンタ・ドライバのコンピュータ・プログラム実施形態のコピーが、たとえば、ストレージ・デバイス１０１４に記憶されてよい。システム１０００は、プリンタ（図示なし）など、追加の入出力デバイスを備えてもよい。システム１０００のさまざまな構成要素は、システム・バス１０１２または類似の構造によって通信する。加えて、システム１０００には、動作中はメモリ１０１０に常駐するオペレーティング・システム（「ＯＳ」）１０２０が含まれ得る。当業者であれば、システム１０００には、複数のプロセッサ１００２が含まれ得ることが理解されよう。たとえば、システム１０００には、同一プロセッサの複数のコピーが含まれ得る。あるいは、システム１０００には、さまざまなタイプのプロセッサの異種混合が含まれ得る。たとえば、システム１０００は、あるプロセッサを一次プロセッサとして使用し、他のプロセッサをコプロセッサとして使用することができる。別の例として、システム１０００には、１つ以上のマルチコア・プロセッサおよび１つ以上のシングルコア・プロセッサが含まれ得る。したがって、システム１０００には、プロセッサ（たとえばプロセッサ１００２）のセットを通じて任意の数の実行コアが含まれ得る。キーボード１０１７、ポインティング・デバイス１０１８、およびディスプレイ１０１６について、これらの構成要素は、当業者によく知られた構成要素を用いて実装されてよい。当業者であれば、システム１０００には、他の構成要素および周辺機器が含まれ得ることも理解されよう。
【０１３３】
メイン・メモリ１０１０は、システム１０００の一次ストレージ・エリアとして機能し、バーコード印刷システムにおけるプリンタ・ドライブなど、プロセッサ１００２上で動作するアプリケーションにより能動的に使用されるデータを保持する。当業者であれば、アプリケーションとは各々が実行中に特定の作業のセットをシステム１０００に実行させるように命令を下すためのコンピュータ命令のセットを含むソフトウェア・プログラムであり、「アプリケーション」という用語は、本教示の実施形態による、アプリケーション・ソフトウェア、アプリケーション・プログラム、デバイス・ドライバ、および／またはプログラムと区別なく使用され得るということを理解されよう。メモリ１０１０は、ランダム・アクセス・メモリ、または以下で記述する、当業者にはよく知られた、他の形態のメモリとして実装することができる。
【０１３４】
ＯＳ１０２０は、システム１０００におけるハードウェアの直接制御および管理ならびにシステム操作を担うルーチンおよび命令の一体型集合である。加えて、ＯＳ１０２０は、アプリケーション・ソフトウェアおよびデバイス・ドライバを実行する基礎を提供する。たとえば、ＯＳ１０２０は、リソース割り当て、スケジューリング、入出力制御、およびメモリ管理などのサービスを提供することができる。ＯＳ１０２０は、主にソフトウェアとなり得るが、部分的または完全なハードウェア実装およびファームウェアを含むこともできる。本教示の原理と整合性のある、よく知られたオペレーティング・システムの例としては、ＲＯＢＯＴ  ＯＰＥＲＡＴＩＮＧ  ＳＹＳＴＥＭ、ＬＩＮＵＸ（登録商標）、ＵＮＩＸ（登録商標）、ＯＲＡＣＬＥ  ＳＯＬＡＲＩＳ、ＭＩＣＲＯＳＯＦＴ    ＷＩＮＤＯＷＳ（登録商標）、ＭＡＣ  ＯＳ（登録商標）、ＯＰＥＮ  ＶＭＳ（登録商標）、およびＩＢＭ  ＡＩＸが挙げられる。
【０１３５】
以上の記述は例示であり、当業者であれば、構成および実装の変形形態が思い浮かぶ可能性もある。たとえば、本明細書で開示した実施形態に関連して記述された、さまざまな例示的ロジック、ロジック・ブロック、モジュール、および回路は、汎用プロセッサ（たとえば、プロセッサ１００２）、特定用途向け集積回路、フィールドプログラマブルゲートアレイもしくは他のプログラマブル・ロジック・デバイス、ディスクリート・ゲートもしくはトランジスタ・ロジック、ディスクリート・ハードウェア部品、または本明細書に記述された機能を実行するように設計された、これらの任意の組み合わせを用いて実装または実行され得る。汎用プロセッサは、マイクロプロセッサとすることができるが、代わりにそのプロセッサを、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、またはステート・マシンとしてもよい。プロセッサは、たとえば、１つのマイクロプロセッサ、複数のマイクロプロセッサ、または他のこうした構成など、コンピューティング・デバイスの組み合わせとして実装されてもよい。
【０１３６】
１つまたは複数の例示的実施形態において、記述した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせにおいて実装され得る。ソフトウェア実装に関して、本明細書に記述した技法は、本明細書に記述した機能を実行するモジュール（たとえば、手続き、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェア・パッケージ、クラス、など）を用いて実装され得る。モジュールは、情報、データ、変数、パラメータ、またはメモリ内容を受け渡しおよび／または受信することにより、別のモジュールまたはハードウェア回路と連結可能である。情報、変数、パラメータ、データ、などは、メモリ共有、メッセージ受け渡し、トークン受け渡し、ネットワーク送信、などを含む好適な任意の手段を用いて受け渡し、転送、または送信され得る。ソフトウェア・コードは、メモリ・ユニットに記憶可能であり、プロセッサによって実行され得る。メモリ・ユニットは、プロセッサ内、またはプロセッサの外部で実装可能であり、プロセッサ外部で実装される場合、メモリ・ユニットは当分野で知られているさまざまな手段によってプロセッサに通信可能に連結され得る。
【０１３７】
ソフトウェアで実装された場合、機能は、１つ以上の命令またはコードとして、コンピュータ可読媒体に記憶され、これを介して送信され得る。コンピュータ可読媒体には、ある場所から別の場所へのコンピュータ・プログラムの転送を容易にする任意の媒体を含む、有形の非一時的コンピュータ記憶媒体および通信媒体の両方が含まれる。記憶媒体は、コンピュータがアクセス可能な、任意の有形の非一時的媒体とすることができる。限定するものではないが、たとえば、そのような有形の非一時的コンピュータ可読媒体には、ＲＡＭ、ＲＯＭ、フラッシュ・メモリ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光学ディスク・ストレージ、磁気ディスク・ストレージもしくは他の磁気ストレージ・デバイス、またはその他、命令もしくはデータ構造の形をとる所望のプログラム・コードを搬送もしくは記憶するのに使用可能でありコンピュータがアクセス可能な任意の媒体が含まれ得る。本明細書で用いるディスク（ｄｉｓｋおよびｄｉｓｃ）には、ＣＤ、レーザ・ディスク、光学ディスク、ＤＶＤ、フロッピー・ディスク、およびＢｌｕ−ｒａｙディスクが含まれ、ディスク（ｄｉｓｋ）は通常磁気的にデータを複製するものであり、ディスク（ｄｉｓｃ）はレーザを用いて光学的にデータを複製するものである。また、あらゆる接続も、コンピュータ可読媒体と呼ばれてよい。たとえば、ウェブサイト、サーバ、または他のリモート・ソースから、同軸ケーブル、ファイバ光ケーブル、撚り対線、デジタル加入者線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などの無線技術を使用して、ソフトウェアが送信される場合、同軸ケーブル、ファイバ光ケーブル、撚り対線、ＤＳＬ、または赤外線、無線、およびマイクロ波などの無線技術も、媒体という定義に包含される。
上に挙げたものの組み合わせも、コンピュータ可読媒体の範囲に含まれるべきものである。
【０１３８】
一実施形態において、単数または一体型として記述されたリソースは、複数または分散型とすることも可能であり、複数または分散型として記述されたリソースは、その実施にあたり統合されてもよい。したがって、本教示の範囲は、続く特許請求の範囲によってのみ限定されることを意図している。本発明について、特定の実施形態を基に説明してきたが、当業者であれば、多数の修正形態が考えられ得ることは理解されよう。たとえば、プロキシ・サーバは、本明細書で言及されない追加の機能を備えてよい。また、本開示の実施形態は、専用の構成要素、ならびに／あるいはプログラマブル・プロセッサおよび／または他のプログラマブル・デバイスの任意の組み合わせを用いて実現可能である。上述の実施形態は特定のハードウェアおよびソフトウェア・コンポーネントを参照することができるが、当業者であれば、ハードウェアおよびソフトウェア・コンポーネントの異なる組み合わせも使用されてよく、ハードウェア内で実装されるものとして説明した個々の操作も、ソフトウェア内で実装可能であり、その逆も同様であるということは理解されよう。
【図１Ａ】
2020192672.tif 000023
【図１Ｂ】
2020192672.tif 000024
【図２】
2020192672.tif 000025
【図３Ａ】
2020192672.tif 000026
【図３Ｂ】
2020192672.tif 000027
【図４】
2020192672.tif 000028
【図５】
2020192672.tif 000029
【図６】
2020192672.tif 000030
【図７】
2020192672.tif 000031
【図８】
2020192672.tif 000032
【図９】
2020192672.tif 000033
【図１０】
2020192672.tif 000034
【手続補正書】
【提出日】令和2年5月29日(2020.5.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
フィードバックを利用するユーザ−ロボット協働のコンピュータ実施方法であって、
１つ以上の作業動作を実行するためのロボットの少なくとも１つの機能をモデリングするロボット機能を取得するステップと、
前記ロボット機能を、専用化済みロボット機能を提供するために情報カーネルを用いて専用化するステップであって、前記情報カーネルが、前記１つ以上の作業動作に関連付けられた作業関連パラメータのセットをカプセル化する、専用化するステップと、
前記専用化済みロボット機能のインスタンスを、前記作業関連パラメータのセットに基づいて、前記ロボットの前記少なくとも１つの機能を制御するロボット機能要素として提供するステップと、
前記ロボット機能要素の１つ以上のユーザ対話要件に基づいて、１つ以上のユーザ対話機能要素を取得するステップであって、前記ロボット機能要素が、ユーザ入力を受信し、前記１つ以上のユーザ対話機能要素を介してユーザ・フィードバックを提供する、取得するステップと、
前記作業関連パラメータのセットに基づいて、前記ユーザ入力と協働して前記１つ以上の作業動作を実行するように、前記ロボットの前記少なくとも１つの機能を制御するステップであって、前記ロボット機能要素が、前記１つ以上の作業動作に関連付けられた作業関連情報を生成する、制御するステップと、
前記作業関連情報を含む前記ユーザ・フィードバックを提供するステップと
を含む、コンピュータ実施方法。
【請求項２】
前記１つ以上のユーザ対話機能要素を介して、１つ以上のユーザ・インタフェース（ＵＩ）を生成するステップと、
前記１つ以上のＵＩの少なくとも１つの入力ＵＩを介して、前記ユーザ入力を受信するステップと、
前記１つ以上のＵＩの少なくとも１つの出力ＵＩを介して、前記ユーザ・フィードバックを提供するステップと
をさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記ユーザ・フィードバックが、ロボット・モーション情報、ロボット・セーフティ・パラメータ、またはロボット作業完了ステータスの少なくとも１つを含む、請求項２に記載のコンピュータ実施方法。
【請求項４】
前記ユーザ入力および前記１つ以上の作業動作に基づいて、前記１つ以上の作業動作に関連付けられた定義されていないパラメータを識別するステップと、
前記少なくとも１つの出力ＵＩを介して、前記定義されていないパラメータに関連付けられた情報を提供するステップと
をさらに含む、請求項２に記載のコンピュータ実施方法。
【請求項５】
前記ユーザ入力が、前記ロボット機能を専用化するための前記情報カーネルの１つ以上のパラメータ化要件を満たせていないと判断するステップと、
前記少なくとも１つの出力ＵＩを介して、前記ユーザ入力が、前記情報カーネルの前記１つ以上のパラメータ化要件を満たせていないことを指示するステップと、
前記少なくとも１つの入力ＵＩを介して、追加のユーザ入力を受信するステップと、
前記追加のユーザ入力に基づいて、前記作業関連パラメータのセットを修正するステップと
をさらに含む、請求項２に記載のコンピュータ実施方法。
【請求項６】
前記１つ以上の作業動作を実行するステップの後に前記少なくとも１つの出力ＵＩを介して、前記１つ以上の作業動作を修正するように修正可能である、前記作業関連パラメータのセット内の１つ以上の作業関連パラメータを提供するステップ
をさらに含む、請求項２に記載のコンピュータ実施方法。
【請求項７】
前記ロボットのロボット状態の新たなロボット状態への変化を検出するステップと、
前記ロボット状態の前記変化に応答して、前記ユーザ入力が前記新たなロボット状態に対して有効であると判断するステップと、
前記少なくとも１つの出力ＵＩを介して、前記ユーザ入力が前記新たな状態に対して有効であると指示するステップと
をさらに含む、請求項６に記載のコンピュータ実施方法。
【請求項８】
前記ロボットのロボット状態の新たなロボット状態への変化を検出するステップと、
前記ロボット状態の前記変化に応答して、前記ユーザ入力が前記新たなロボット状態に対して無効であると判断するステップと、
前記少なくとも１つの出力ＵＩを介して、前記ユーザ入力が前記新たなロボット状態に対して無効であると指示するステップと、
前記少なくとも１つの入力ＵＩを介して、修正済みユーザ入力を提供するように前記ユーザ入力を修正するステップと、
前記ロボットの前記少なくとも１つの機能を制御するステップの前に、前記修正済みユーザ入力が前記新たなロボット状態に対して有効であると判断するステップと
をさらに含む、請求項６に記載のコンピュータ実施方法。
【請求項９】
前記１つ以上の作業動作を実施するステップの後に、前記ロボット機能要素をアンロードするステップと、
前記ロボット機能要素の代わりに新たなロボット機能要素をロードするステップと、
前記ユーザ入力が、前記新たなロボット機能要素の１つ以上のパラメータ化要件を満たせていないと判断するステップと、
前記少なくとも１つの出力ＵＩを介して、前記ユーザ入力が、前記新たなロボット機能要素の前記１つ以上のパラメータ化要件を満たせていないことを指示するステップと、
前記少なくとも１つの入力ＵＩを介して、追加のユーザ入力を受信するステップと
をさらに含む、請求項６に記載のコンピュータ実施方法。
【請求項１０】
前記１つ以上の作業動作を実施するステップの後に、前記ロボット機能要素をアンロードするステップと、
前記ロボット機能要素の代わりに新たなロボット機能要素をロードするステップと、
前記ユーザ入力が、前記新たなロボット機能要素の１つ以上のパラメータ化要件を満たしていると判断するステップと、
前記少なくとも１つの出力ＵＩを介して、前記ユーザ入力が、前記新たなロボット機能要素の前記１つ以上のパラメータ化要件を満たしていることを指示するステップと、
前記少なくとも１つの出力ＵＩを介して、前記ロボットのロボット状態の変化に関連付けられた情報を提供するステップと
をさらに含む、請求項６に記載のコンピュータ実施方法。
【請求項１１】
前記ユーザ・フィードバックが、前記１つ以上の作業動作を実行するのに利用可能なロボット機能要素のセットを含む、請求項１に記載のコンピュータ実施方法。
【請求項１２】
前記ユーザ・フィードバックを提供するステップが、
前記ユーザ・フィードバックを複数のユーザに提供するステップ
をさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項１３】
前記ユーザ・フィードバックを提供するステップが、
前記ユーザ・フィードバックを、１つ以上のネットワーク接続を介して複数のユーザに提供するステップ
をさらに含む、請求項２に記載のコンピュータ実施方法。
【請求項１４】
前記ユーザ・フィードバックが視覚フィードバックを含む、請求項１に記載のコンピュータ実施方法。
【請求項１５】
前記ユーザ・フィードバックが触覚フィードバックを含む、請求項１に記載のコンピュータ実施方法。
【請求項１６】
フィードバックを利用するユーザ−ロボット協働のためのシステムであって、
命令を記憶する、非一時的メモリと、
前記命令を実行して、前記システムに、
１つ以上の作業動作を実行するためのロボットの少なくとも１つの機能をモデリングするロボット機能を取得するステップと、
前記ロボット機能を、専用化済みロボット機能を提供するために情報カーネルを用いて専用化するステップであって、前記情報カーネルが、前記１つ以上の作業動作に関連付けられた作業関連パラメータのセットをカプセル化する、専用化するステップと、
前記専用化済みロボット機能のインスタンスを、前記作業関連パラメータのセットに基づいて、前記ロボットの前記少なくとも１つの機能を制御するロボット機能要素として提供するステップと、
前記ロボット機能要素の１つ以上のユーザ対話要件に基づいて、１つ以上のユーザ対話機能要素を取得するステップであって、前記ロボット機能要素が、ユーザ入力を受信し、前記１つ以上のユーザ対話機能要素を介してユーザ・フィードバックを提供する、取得するステップと、
前記作業関連パラメータのセットに基づいて、前記ユーザ入力と協働して前記１つ以上の作業動作を実行するように、前記ロボットの前記少なくとも１つの機能を制御するステップであって、前記ロボット機能要素が、前記１つ以上の作業動作に関連付けられた作業関連情報を生成する、制御するステップと、
前記作業関連情報を含む前記ユーザ・フィードバックを提供するステップと
を含む方法を実行させる、プロセッサと
を含む、システム。
【請求項１７】
前記命令が、前記プロセッサに、
前記１つ以上のユーザ対話機能要素を介して、１つ以上のユーザ・インタフェース（ＵＩ）を生成するステップと、
前記１つ以上のＵＩの少なくとも１つの入力ＵＩを介して、前記ユーザ入力を受信するステップと、
前記１つ以上のＵＩの少なくとも１つの出力ＵＩを介して、前記ユーザ・フィードバックを提供するステップと、
前記１つ以上の作業動作を実行するステップの後に前記少なくとも１つの出力ＵＩを介して、前記１つ以上の作業動作を修正するように修正可能である、前記作業関連パラメータのセット内の１つ以上の作業関連パラメータを提供するステップと
をさらに実行させる、請求項１６に記載のシステム。
【請求項１８】
前記命令が、前記プロセッサに、
前記１つ以上の作業動作を実施するステップの後に、前記ロボット機能要素をアンロードするステップと、
前記ロボット機能要素の代わりに新たなロボット機能要素をロードするステップと、
前記ユーザ入力が、前記新たなロボット機能要素の１つ以上のパラメータ化要件を満たせていないと判断するステップと、
前記少なくとも１つの出力ＵＩを介して、前記ユーザ入力が、前記新たなロボット機能要素の前記１つ以上のパラメータ化要件を満たせていないことを指示するステップと、
前記少なくとも１つの入力ＵＩを介して、追加のユーザ入力を受信するステップと
をさらに実行させる、請求項１７に記載のシステム。
【請求項１９】
前記命令が、前記プロセッサに、
前記１つ以上の作業動作を実施するステップの後に、前記ロボット機能要素をアンロードするステップと、
前記ロボット機能要素の代わりに新たなロボット機能要素をロードするステップと、
前記ユーザ入力が、前記新たなロボット機能要素の１つ以上のパラメータ化要件を満たしていると判断するステップと、
前記少なくとも１つの出力ＵＩを介して、前記ユーザ入力が、前記新たなロボット機能要素の前記１つ以上のパラメータ化要件を満たしていることを指示するステップと、
前記少なくとも１つの出力ＵＩを介して、前記ロボットのロボット状態の変化に関連付けられた情報を提供するステップと
をさらに実行させる、請求項１７に記載のシステム。
【請求項２０】
プロセッサ上で実行されたとき、
１つ以上の作業動作を実行するためのロボットの少なくとも１つの機能をモデリングするロボット機能を取得するステップと、
前記ロボット機能を、専用化済みロボット機能を提供するために情報カーネルを用いて専用化するステップであって、前記情報カーネルが、前記１つ以上の作業動作に関連付けられた作業関連パラメータのセットをカプセル化する、専用化するステップと、
前記専用化済みロボット機能のインスタンスを、前記作業関連パラメータのセットに基づいて、前記ロボットの前記少なくとも１つの機能を制御するロボット機能要素として提供するステップと、
前記ロボット機能要素の１つ以上のユーザ対話要件に基づいて、１つ以上のユーザ対話機能要素を取得するステップであって、前記ロボット機能要素が、ユーザ入力を受信し、前記１つ以上のユーザ対話機能要素を介してユーザ・フィードバックを提供する、取得するステップと、
前記作業関連パラメータのセットに基づいて、前記ユーザ入力と協働して前記１つ以上の作業動作を実行するように、前記ロボットの前記少なくとも１つの機能を制御するステップであって、前記ロボット機能要素が、前記１つ以上の作業動作に関連付けられた作業関連情報を生成する、制御するステップと、
前記作業関連情報を含む前記ユーザ・フィードバックを提供するステップと
を含む方法を実行する命令を含む、非一時的コンピュータ可読記憶媒体。