(57)【要約】  多様な装置の組み合わせにおいてリアルタイム性の高いシステム制御を実現する。制御装置は、複数の被制御装置に対する制御の目標となる制御目標指示を受信する、制御指示受付部と、前記制御目標指示に基づいて、前記複数の被制御装置のそれぞれに対する制御信号を生成する 、制御処理生成部と、を備え、前記複数の被制御装置の通信遅延時間、位相ずれ時間、及び、動作周期時間の少なくとも１つに基づいて、前記複数の被制御装置が協働して前記目標を達成するように、前記複数の被制御装置の動作を制御する、制御装置。
2019117249.tif 000002
【特許請求の範囲】
【請求項１】
複数の被制御装置に対する制御の目標となる制御目標指示を受信する、制御指示受付部と、
前記制御目標指示に基づいて、前記複数の被制御装置のそれぞれに対する制御信号を生成する 、制御処理生成部と、
を備え、
前記複数の被制御装置の通信遅延時間、位相ずれ時間、及び、動作周期時間の少なくとも１つに基づいて、前記複数の被制御装置が協働して前記目標を達成するように、前記複数の被制御装置の動作を制御する、制御装置。
【請求項２】
前記被制御装置のそれぞれに対して、同期信号を出力せずに前記被制御装置のそれぞれを協働するように制御する、請求項１に記載の制御装置。
【請求項３】
前記制御目標指示の受信の遅延、前記被制御装置に対する制御信号の生成の遅延、前記被制御装置の動作の時間的なずれ、及び、前記被制御装置の動作の空間的なずれのうち少なくとも１つが発生した場合に、例外処理を行う、例外処理実行部をさらに備える、請求項１又は請求項２に記載の制御装置。
【請求項４】
前記例外処理実行部は、例外処理を行う場合に、その原因となった動作の頻度に基づいて実行する例外処理を切り替える、請求項３に記載の制御装置。
【請求項５】
前記例外処理実行部は、
前記制御目標指示の受信の遅延、前記被制御装置に対する制御信号の生成の遅延、前記被制御装置の動作の時間的なずれ、前記被制御装置の動作の空間的なずれ及び通信異常のうち少なくとも１つが発生した回数が所定の回数以下である場合に、前記被制御装置の動作を補完して制御を行い、
前記制御目標指示の受信の遅延、前記被制御装置に対する制御信号の生成の遅延、前記被制御装置の動作の時間的なずれ、前記被制御装置の動作の空間的なずれ及び通信異常のうち少なくとも１つが発生した回数が所定の回数を超える場合に、前記被制御装置の動作を安全に停止する制御を行う、
請求項４に記載の制御装置。
【請求項６】
センサから受信した情報、前記制御信号の遅延及び通信異常のうち少なくとも１つに基づいて例外処理を行う、請求項３乃至請求項５のいずれかに記載の制御装置。
【請求項７】
前記被制御装置の動作周期を推定する、動作周期推定部をさらに備える、請求項１乃至請求項６のいずれかに記載の制御装置。
【請求項８】
前記動作周期推定部は、前記被制御装置のそれぞれに信号を送信したタイミングと、前記被制御装置のそれぞれからの返信を受信したタイミングと、に基づいて前記被制御装置のそれぞれの動作周期を推定する、請求項７に記載の制御装置。
【請求項９】
前記動作周期推定部は、前記被制御装置に対する通信遅延及び位相ずれをさらに推定する、請求項７又は請求項８に記載の制御装置。
【請求項１０】
前記被制御装置のそれぞれについての通信遅延時間、位相ずれ時間及び動作周期時間を記憶し、記憶している各情報に基づいて、前記制御処理生成部が生成した前記被制御装置のそれぞれに対する制御信号を、それぞれの前記被制御装置へと送信する、アダプタ部をさらに備える、請求項１乃至請求項９のいずれかに記載の制御装置。
【請求項１１】
前記制御目標指示は、あらかじめ学習されたモデルに基づいて生成される、請求項１乃至請求項１０のいずれかに記載の制御装置。
【請求項１２】
前記制御目標指示は、前記被制御装置の制御と並行し、前記被制御装置の制御状態及び前記被制御装置の動作状態に基づいた学習を行って生成される、請求項１乃至請求項１１のいずれかに記載の制御装置。
【請求項１３】
請求項１乃至請求項１２のいずれかに記載の制御装置と、
前記制御装置に制御される複数の被制御装置と、
を備える、システム。
【請求項１４】
複数の被制御装置を制御する、制御装置であって、
前記被制御装置のそれぞれについて、前記制御の目標となる制御目標指示を受信する、制御指示受付部と、
受信した前記制御目標指示に基づいて、前記被制御装置の動作の制御を行う信号を生成する、制御処理生成部と、
を備え、
前記被制御装置のそれぞれについての通信遅延時間、位相ずれ時間及び動作周期時間に基づいて、前記被制御装置のそれぞれが協働して制御の目標に到達するように動作の制御を行う、制御装置。
【請求項１５】
複数の被制御装置に対する制御の目標となる制御目標指示を受信するステップと、
前記制御目標指示に基づいて、前記複数の被制御装置のそれぞれに対する制御信号を生成するステップと、
前記複数の被制御装置の通信遅延時間、位相ずれ時間、及び、動作周期時間の少なくとも１つに基づいて、前記複数の被制御装置が協働して前記目標を達成するように、前記複数の被制御装置の動作を制御するステップと
を備える制御方法。
【請求項１６】
コンピュータに、
複数の被制御装置に対する制御の目標となる制御目標指示を受信する手段、
前記制御目標指示に基づいて、前記複数の被制御装置のそれぞれに対する制御信号を生成する手段、
前記複数の被制御装置の通信遅延時間、位相ずれ時間、及び、動作周期時間の少なくとも１つに基づいて、前記複数の被制御装置が協働して前記目標を達成するように、前記複数の被制御装置の動作を制御する手段、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、制御装置、制御方法及びプログラムに関する。
【背景技術】
【０００２】
工場自動化等のクリティカルなシステムの実現するためには、リアルタイム性が要求される通信、例えば、リアルタイムな機器制御、安全・保全等のための通信と、そうでは無い通信、例えば、機器に対する次の目標の指示、保守用テレメトリ等のための通信が存在する。これらの通信を行い制御する例として、リアルタイム通信と、非リアルタイム通信に区分し、リアルタイム通信に係る送受信を優先的に実行することによりリアルタイム通信と非リアルタイム通信とを共存させることが挙げられる。別の例としては、柔軟な処理をするために、任意の複数の制御装置と、センサとをソフトウェア的に組み合わせる環境を想定し、全体を協働動作させる制御をするための協働制御装置が少なくとも１つ備えるシステムが挙げられる。【０００３】
しかしながら、複数の制御装置、被制御装置、センサ及びこれらの組み合わせで実行するタスクは、それぞれ異なる時間サイクルを有している。例えば、制御装置と被制御装置間ではリアルタイム性の高い制御が必要となるので、４ミリ秒に１回の通信を行う一方、センサの情報取得周期は、１６．６７ミリ秒に１回、深層学習に基づく推定を行うための制御装置は、複雑な計算が必要となり２００ミリ秒に１回の処理と指示しか行えないようなことがある。このような場合、個々に異なる制御サイクルを組み合わせて円滑に実行する方法は自明ではない。また、複数の被制御装置それぞれは同一の周期であったとしても、同一のタイミングで動作しているとは限られず、これらを円滑に協調動作させることも困難である。【０００４】
さらに、サイクルが同期した環境では、リアルタイム通信と非リアルタイム通信のスケジューリングが実行可能ではある。しかしながら、現実の装置においては、動作サイクルは統一されていなかったり、動作サイクルが同一であっても同期していなかったりといった制約がある。また、従来の方式においては、通信遅延が考慮されておらず、通信装置の遅延及びジッタ（遅延揺らぎ）が存在する場合に、リアルタイム性を実現できなかった。
【発明の開示】
【０００５】
そこで、本発明は、複数の装置を組み合わせたシステムにおけるリアルタイム性の高い制御を提供することにある。
【０００６】
一実施形態に係る制御装置は、複数の被制御装置に対する制御の目標となる制御目標指示を受信する、制御指示受付部と、前記制御目標指示に基づいて、前記複数の被制御装置のそれぞれに対する制御信号を生成する 、制御処理生成部と、を備え、前記複数の被制御装置の通信遅延時間、位相ずれ時間、及び、動作周期時間の少なくとも１つに基づいて、前記複数の被制御装置が協働して前記目標を達成するように、前記複数の被制御装置の動作を制御する、制御装置。
【図面の簡単な説明】
【０００７】
【図１】一実施形態に係るシステムの構成を示すブロック図。
【図２】一実施形態に係る制御装置の構成を示すブロック図。
【図３】一実施形態に係る制御装置の処理の流れを示すフローチャート。
【図４】一実施形態に係る制御装置を備えるシステムの処理を示すフローチャート。
【図５】図４の別の例に係るフローチャート。
【図６】一実施形態に係る制御装置の動作を定義する擬似コードを示す図。
【図７】図６の別の例に係る擬似コードを示す図。
【図８】一実施形態に係る実装例を示すブロック図。
【図９】一実施形態に係る実装例を示す図。
【発明を実施するための形態】
【０００８】
以下、図面を参照して、本発明の実施形態についてより詳しく説明する。本実施形態は、本発明を限定するものではない。なお、各図において同等の機能を有する構成要素には同一の符号を付し、同一の構成要素の詳しい説明は繰り返さない。また、下記において、処理の１サイクルに掛かる時間、ディレイ時間及び位相ずれ時間等は、説明のために一例として示した数値であり、実際の数値ではない。このため、他の数値においても本実施形態と同様に処理できるものである。
【０００９】
本発明に係る協調制御装置は、最悪時の動作を規定した上で、通常時はデッドラインに間に合うスケジューリングを行うファームリアルタイムの特性を保持しつつ、柔軟なアプリケーションを構築する。このために、アプリケーションロジックを構築するストリーム処理のためのドメイン記述言語（ＤＳＬ：Domain-Specific Language）を採用する。
【００１０】
図１は、本実施形態に係る協調制御装置により制御されているシステムの構成を示すブロック図である。システム１には、制御目標指示装置１０と、制御装置２０と、被制御装置３０Ａと、被制御装置３０Ｂと、センサ４０と、が備えられている。なお、例として被制御装置は、２個であるとしたが、被制御装置は、２よりも多い複数個あってもよい。また、センサ４０も制御装置２０により制御される被制御装置であってもよい。
【００１１】
これらの各装置は、インターネット、イーサネット（登録商標）等を利用した通信経路で相互に接続されている。この接続方法は、有線には限られず、無線で接続されていてもよい。また、規格や方式は、特に限られず、適切に信号の通信が行われる接続方法であればよい。通信におけるディレイが、制御装置２０から各装置へ個々に対して存在していてもよい。
【００１２】
制御目標指示装置１０は、制御装置２０へとどのような制御を行うかの目標を指示する装置である。目標の指示とは、例えば、制御目標指示装置１０内に形成されている機械学習済みのモデルに基づいてどのような動作を各被制御装置３０が行うか、又は、これらの被制御装置３０からのフィードバック情報若しくはセンサ４０から取得した状態をモデルへと取り込み、その後の被制御装置３０をどのように動作させるかの目標を指示する装置である。機械学習には、ディープラーニング等、他の処理と比較して時間の掛かる処理を用いてもよい。
【００１３】
より具体的な目標の指示の例としては、産業用ロボットに関する指示において、複数のアームで１つの物体を把持し、持ち上げた上で、当該複数のアーム以外のアームでその持ち上げた物体の下方に治具を設置する等といった協調制御に必要となる各アームの一連の操作である。
【００１４】
この制御目標指示装置１０内で行う処理は、例えば、上記のように機械学習を行い、又は、機械学習済みのモデルから次の指示目標を取得するという比較的時間の掛かる処理であるので、１００ミリ秒サイクルで実行されるものとする。制御装置２０との間の通信ディレイは、例えば、５ミリ秒であるとする。
【００１５】
なお、図１においては、制御目標指示装置１０は、１台しかないが、これには限られず、複数の制御目標指示装置１０が備えられていてもよい。この場合、各制御目標指示装置１０に対して個々に、上記の周期とディレイ等が存在する。
【００１６】
制御装置２０は、制御目標指示装置１０から取得した制御目標の指示に従い、各被制御装置３０へと各装置に対する制御信号を送信する装置である。併せて、各被制御装置３０及びセンサ４０からの情報を受信し、その受信した状態に基づいて制御信号を生成する。また、この際、各被制御装置３０及びセンサ４０から取得した状態を制御目標指示装置１０へと送信し、次に制御目標指示を取得するようにしてもよい。
【００１７】
被制御装置３０は、制御装置２０から受信した制御信号に基づいて動作を行う。上記の例で言うと、被制御装置３０は、各アームに該当し、制御装置２０が生成した制御信号に基づいて、物体を把持したり、把持した当該物体の下に治具を設置したりする。
【００１８】
複数の被制御装置３０は、それぞれの動作サイクルで動作する。また、それぞれの被制御装置３０は、制御装置２０からの通信ディレイが存在していることもある。さらに、各被制御装置３０は、その全てが同期して動作するわけではなく、上記のように動作サイクルが異なる上に、各被制御装置３０が動作する際の位相ずれも存在する。位相ずれとは、例えば、各被制御装置３０が制御装置２０から同時に制御命令を受信した場合であっても、動作の開始までに掛かる時間が異なることがあり、この時間のずれを示すオフセットである。
【００１９】
被制御装置３０は、制御装置２０からの制御命令に従い、自らの動作サイクルにおいて動作を行う。これとともに、被制御装置３０は、制御装置２０へと動作を行った旨の信号をフィードバックするようにしてもよい。また、別の例としては、動作待ち或いは制御命令を受信可能である（アイドル状態である）場合には、当該状態を制御装置２０へと送信するようにしてもよい。
【００２０】
センサ４０は、例えば、被制御装置３０の状態を撮影するカメラである。この他にも、振動を計測する振動センサであったり、音を計測する感音センサであったり、温度又は湿度を計測する温度、湿度センサであったり、感圧センサであったりしてもよい。必要となる被制御装置３０の状態を感知するセンサであればよい。また、このセンサ４０自体が制御装置２０により制御される被制御装置３０であってもよい。
【００２１】
センサ４０がカメラである場合には、所定の周期、例えば、１０ミリ秒のサイクルで被制御装置３０の状態を撮影し、制御装置２０へと送信する。制御装置２０は、被制御装置３０からのフィードバック信号とともに、センサ４０が撮影した画像、及び、制御目標指示装置１０から受信した制御目標値に基づいて、被制御装置３０へと送信する次の制御信号を生成する。
【００２２】
図２は、制御装置２０の構成を示すブロック図である。制御装置２０は、動作周期推定部２００と、制御指示受付部２０２と、制御処理生成部２０４と、例外処理実行部２０６と、プログラム格納部２０８と、アダプタ部２１０と、を備えて構成される。
【００２３】
動作周期推定部２００は、各被制御装置３０、センサ４０及び制御目標指示装置１０の動作周期を推定する。各装置の動作周期は、例えば、制御装置２０からの命令に対してその返信が為されたタイミングにより推定する。被制御装置３０等の制御周期は、あらかじめ与えられていてもよい。この場合、例えば、返信する旨の命令を発行した後、被制御装置３０等から当該命令への返信を受信したタイミングに基づいて、タイミングのずれ（オフセット）を推定することができる。
【００２４】
さらに、被制御装置３０のそれぞれは、ループ処理により動作している周期動作において、信号を返信できるタイミングが決まっているために、制御装置２０が信号を送信してから被制御装置３０が動作を開始するまでのオフセットを推定することが可能となる。すなわち、装置ごとに決まっている返信のタイミングを読み取ることにより、制御装置２０と被制御装置３０間、及び、複数の被制御装置３０間のタイミングのずれを推定する。なお、この場合、各被制御装置３０の動作周期は、カタログ値等から所与であってもよいし、上記のように、動作周期も動作周期推定部２００が推定するようにしてもよい。
【００２５】
一度の返信タイミングから読み取れない場合においても、複数回異なるタイミングにおいて上記のような命令を発行し、返信を受信したタイミングを考慮することにより、オフセットを判断することが可能となる。ここで、オフセットとは、制御装置２０から見た各被制御装置３０の動作周期のずれを示す値を言う。
【００２６】
さらに、別の例として、定期的、例えば、１ミリ秒ごとに制御目標指示装置１０又は被制御装置３０へと返信をする旨の命令を発行し、この命令に対してどのようなタイミングで返信が行われたか、又は、いくつの命令をまとめて返信を行ったかにより推定することが可能である。このように返信タイミングを測定することにより、例えば、各被制御装置３０の動作周期が不明な場合であっても、この動作周期自体をも推定することが可能である。
【００２７】
事前に周期を推定する場合には上記のような方法で行うことができるが、別の例として、動作中に推定を行うようにしてもよい。この場合も、制御装置２０から発行された命令に対して返信のタイミング等から推定することが可能である。これにより、動作をしながらオフセットを推定することが可能となる。動作をしながらオフセットを推定すると、動作中において発生した時間のずれを推定し、この時間のずれをアダプタ部２１０に記憶させることにより、長時間の運用においても、動作中に発生した時間のずれを吸収した制御を行うことが可能となる。
【００２８】
上記のように、任意のタイミングにおいて制御装置２０から被制御装置３０へと返信をするように制御する信号を送信することにより、この信号に対する返信があったタイミングと、制御装置２０が送信したタイミングとに基づいて、各被制御装置３０の位相ずれを推定することができる。
【００２９】
なお、上記のように動作周期等を推定したとしても、実際に動作する際にはずれが発生する場合がある。このような場合に対応するために、動作周期推定部２００は、センサ４０からのセンサ信号を受信してそのずれや動作周期をさらに推定するようにしてもよい。
【００３０】
制御指示受付部２０２は、制御目標指示装置１０から送信された制御目標値、又は、どのような制御を行うかの指示を受け付ける。この制御指示受付部２０２が受け付けた指示に従い、各被制御装置３０、センサ４０への制御信号を発行し、必要となる装置へと送信する。
【００３１】
制御処理生成部２０４は、受信した制御目標値に基づいて、被制御装置３０の制御を行うための制御信号を生成する。制御信号は、被制御装置３０の動作及び終了位置等の被制御装置３０の動きの状態を示す信号である。この制御信号は、各被制御装置３０に対応するアダプタ部２１０に遅延特性とともに送信される。
【００３２】
例外処理実行部２０６は、制御装置２０に接続されている装置について例外が発生した場合に、例外処理を行う。例えば、被制御装置３０の動作状態が安全の範囲を超える場合や、複数の被制御装置３０同士が衝突する可能性がある場合等、事故又は故障が発生するような場合に、当該事故等が発生しないように例外処理を実行する。例外処理を行う原因となる事由としては、この他に、通信異常によるタイミングのずれ、又は、通信に対する応答がない等、通信に関する事由が含まれてもよい。さらに、一般的に危険となり得る状態となる事由が含まれてもよい。
【００３３】
プログラム格納部２０８は、制御装置２０の動作をするためのプログラム等を格納する。プログラム格納部２０８は、揮発メモリ又は不揮発メモリを備えて構成されていてもよい。また、この格納部は、制御装置２０の動作のみならず、被制御装置３０等の制御を行うためのプログラムを格納していてもよい。
【００３４】
アダプタ部２１０は、被制御装置３０等と、制御装置２０とを接続するためのインターフェースであり、各被制御装置３０等に対して、１つのアダプタ部２１０が備えられている。別の例として、１つのアダプタ部２１０で複数の被制御装置３０等と接続するようにしてもよい。この場合、所定の通信プロトコルを設定しておくことにより、どの被制御装置３０への通信かを判断できるようにしておいてもよい。このアダプタ部２１０は、制御処理生成部２０４が生成した被制御装置３０に実行させる動作を記述した制御信号を、その遅延特性に基づいて被制御装置３０へと送信する。
【００３５】
次に、制御装置２０の動作について説明する。図３は、本実施形態に係る制御装置２０の動作の一例を示すフローチャートである。なお、本フローチャートは、例えば、ループ処理中の１ループに係る動作を示しており、このような動作が繰り返し行われることにより、システム１の動作目標を達成するものであるとする。
【００３６】
このフローチャートの動作前に、動作周期推定部２００により、制御目標指示装置１０、被制御装置３０及びセンサ４０の各装置について、その制御周期を推定しておいてもよい。動作周期推定部２００は、この周期の他、通信経路における遅延、及び／又は、被制御装置３０ごとの位相ずれを併せて推定してもよい。これらのパラメータはあらかじめ測定されているものを利用してもよい。また、動作周期推定部２００は、所定のタイミングで各装置の制御周期を推定し直すようにしてもよい。各被制御装置３０に対応するアダプタ部２１０には、この制御周期、通信遅延及び位相ずれの情報が格納される。
【００３７】
まず、制御指示受付部２０２は、制御目標指示装置１０から制御目標指示を受信する（ステップＳ１０）。制御目標指示装置１０は、システム１において行う動作についての目標となる指示を生成し、制御装置２０の制御指示受付部２０２へと送信する。目標となる指示は、例えば、システム１内の状態を目標となる状態へとするために被制御装置３０を将来的にどのような状態へと遷移させるかを示す指示である。この指示は、例えば、学習済みのモデルを用いて生成されたり、そのタイミングにおける被制御装置３０の状態に基づいて実際に学習を行ったりすることにより生成される。例えば、この指示の生成には、１００ミリ秒の時間が掛かる。
【００３８】
次に、制御目標指示を受信した制御指示受付部２０２は、制御目標指示の受信に例外があるか否かを判断する（ステップＳ１２）。すなわち、制御目標指示が所定のタイミング通りに受信できたか否かを判断する。制御目標指示が所定のタイミング通りに受信できないとは、例えば、制御目標指示装置１０が１００ミリ秒ごとに制御装置２０に対して制御目標の指示を行うとしている場合、１００ミリ秒ごとのタイミングにおいて、制御目標指示が受信できているか否かを判定する。なお、この際、通信状態及び各種装置の状態によって時間のずれが発生する可能性があるので、前回の受信から１００ミリ秒とするのではなく、１２０ミリ秒間は受信可能とするように、時間的なバッファを持たせてもよい。
【００３９】
制御目標指示が所定のタイミング通りに受信できていない場合（ステップＳ１２：Ｙｅｓ）、制御装置２０は、制御目標指示に関する例外処理を行う（ステップＳ１４）。例外処理は、例外処理実行部２０６が実行する。
【００４０】
この例外処理は、例えば、前回までの制御目標に対して線形的に外挿補間してもよい。別の例としては、安全方向に制御、すなわち、前回までの制御目標に対して線形補間で行うよりも、動きを抑制するように外挿補間してもよい。各被制御装置３０の状態によっては、外挿補間をすることにより、衝突等の事故が起こる可能性がある。このような場合には、さらに安全方向に制御し、被制御装置３０がなめらかにその動きを停止するように制御信号を生成するようにしてもよい。
【００４１】
制御目標指示が所定のタイミング通りに受信できた場合（ステップＳ１２：Ｎｏ）、制御処理生成部２０４は、制御目標の生成を行う（ステップＳ１６）。制御目標は、制御目標指示装置１０により生成された制御目標に対して、被制御装置３０が現在の状態から将来へとむかってどのような動作により制御目標に到達できるかを考慮して生成される。
【００４２】
例えば、現在の位置から制御目標となる到達位置までの間の位置において、被制御装置３０の次の制御周期においてどのくらい進むかを制御処理生成部２０４が算出し、被制御装置３０の制御周期についての制御目標を生成する。より具体的には、制御目標指示装置１０により、制御目標となる位置が指示されている場合、被制御装置３０の次の制御周期においてどの位置を到達目標とするかを制御目標として生成する。例えば、次の制御目標指示が到達するまでの時間に、現在の制御目標まで被制御装置３０が移動できるように、被制御装置３０の次の制御周期における到達目標を制御目標として生成する。
【００４３】
次に、制御処理生成部２０４は、生成された制御目標までの被制御装置３０の動作についての制御指示信号の生成を行う（ステップＳ１６）。例えば、被制御装置３０の制御周期における制御目標となる位置が指示されている場合、被制御装置３０の制御周期に合わせて線形に移動するような信号を生成する。別の例としては、制御目標指示が到達してから、次の制御目標指示が到達するまでの間において、動作の開始又は動作の終了となる位置が存在する場合には、当該位置の周辺においては線形ではなく、徐々に動き出すように、又は、徐々に動きが止まるように制御信号を生成するようにしてもよい。
【００４４】
この制御信号は、例えば、プログラム格納部２０８に格納されているプログラムに基づいて生成される。移動位置を指定する場合には、３次元空間内においてどのように移動するかを判断し、当該移動に関するプログラムをプログラム格納部２０８に格納されているプログラムから抽出する。そして、移動方向又は移動距離等の必要なパラメータを設定することにより、制御信号を生成する。
【００４５】
この際、プログラム格納部２０８に格納されているプログラムがＤＳＬで記載されているのであれば、そのままパラメータを設定して信号を生成することが可能である。さらに、複数の異なる種類の動作について合成することも容易となる。もちろん、ＤＳＬで記載されている必要はなく、他の設計思想のコンピュータ言語により記載されていても構わない。
【００４６】
なお、ステップＳ１６及びステップＳ１８における制御目標及び制御信号は、制御目標の位置及び被制御装置３０の位置に基づいて生成されるものに限られない。例えば、被制御装置３０に印加する電圧値、電流値等の制御に必要な電気、電力に関する制御信号、被制御装置３０の回転角度、トルク等の回転及び力に関する制御信号、又は、被制御装置３０の温度等に関する制御信号であってもよい。この他にも、被制御装置３０がアームであり、複数のフィンガー部を備えている場合に、当該アーム内のフィンガー部の動きの制御信号等を生成するようにしてもよい。このように、被制御装置３０の動作に関する制御信号の生成であれば、どのような信号にも対応することが可能である。さらに、上記の複数の動作を組み合わせた動作であってもよい。
【００４７】
次に、各被制御装置３０に対する制御信号は、アダプタ部２１０に設定されている遅延時間等に基づいて、各被制御装置３０へと送信される（ステップＳ２０）。アダプタ部２１０に格納されている被制御装置３０ごとの通信遅延の情報及び位相ずれの情報に基づいて、制御装置２０から被制御装置３０へと生成された制御信号が送信される。
【００４８】
図１に示す例を用いて説明する。被制御装置３０Ａと被制御装置３０Ｂとの間には、３ミリ秒の位相ずれが存在する。そこで、被制御装置３０Ａに対応するアダプタ部２１０には、通信遅延を０ミリ秒、制御周期を１０ミリ秒、位相ずれを０ミリ秒として設定し、これに対し、被制御装置３０Ｂに対応するアダプタ部２１０には、通信遅延を０ミリ秒、制御周期を４ミリ秒、位相ずれを３ミリ秒として設定する。
【００４９】
このように設定されている場合、ステップＳ２０においては、まず、被制御装置３０Ｂに対して被制御装置３０Ｂの制御信号を送信し、その３ミリ秒後に被制御装置３０Ａに対して被制御装置３０Ａの制御信号を送信する。図１においては、被制御装置３０Ａ及び被制御装置３０Ｂについての通信遅延がいずれも０ミリ秒であるので、通信遅延に関する制御は特に行わないが、通信遅延に相違がある場合には、この通信遅延も吸収できるように生成した信号を送信する。被制御装置３０Ａには１０ミリ秒ごとに、被制御装置３０Ｂには４ミリ秒ごとに、このような信号が送信される。このように、制御装置２０は、被制御装置３０Ａ及び被制御装置３０Ｂが協働して動作を行うように通信遅延、制御周期及び位相ずれに基づいて制御信号を送信する。
【００５０】
なお、被制御装置３０は、長時間動作させていると、１００ｐｐｍ程度の誤差が生じる場合がある。この場合、１０秒動作させると、１ミリ秒ほどの誤差を生じさせる場合がある。このような誤差は、被制御装置３０からのフィードバック信号又はセンサ４０が検知した信号に基づいて動作周期推定部２００等が推定し、誤差が生じた被制御装置３０に対応するアダプタ部２１０に設定するようにしてもよい。
【００５１】
制御装置２０は、上述のように、ステップＳ１０からステップＳ２０の動作に基づいて、受信した制御目標指示から各被制御装置３０に対する制御信号の送信までの動作を行う。
【００５２】
各ステップの動作を行う間において、制御装置２０は、随時センサ４０からの信号を受信する（ステップＳ２２）。センサ４０は、例えば、センサ４０の各制御周期において、検知した情報を制御装置２０へと送信する。センサ４０がカメラである場合、動作周期である１０ミリ秒ごとに１枚の画像データを制御装置２０へと送信してもよいし、転送速度及び処理速度に応じて、例えば、１００ミリ秒に１枚の画像データを制御装置２０へと送信するようにしてもよい。または、把握する必要がある被制御装置３０の状態のスパンで撮影し、送信するようにしてもよい。センサ４０がカメラではない場合には、当該センサ４０により検知される情報を適宜適切なタイミングにおいて送信するようにしてもよい。
【００５３】
また、センサの故障、通信異常等により、センサ信号の受信ができない場合も考えられる。このような場合に対応するために、センサ信号を受信することのみならず、センサからの通信が受信できずに、所定の時間が経過した場合にも、ステップＳ２２以下の処理を行ってもよい。所定の時間とは、例えば、センサから信号が送信される周期の１．５倍の時間等としてもよい。１．５倍は一例であり、２倍等の時間とし、通信ディレイを吸収する十分な時間としてもよいし、逆に、通信ディレイをも検知できるように、１．２倍等としてもよい。これには限られず、センサからの信号の送信される周期とは別に、所定の時間を定めるようにしてもよい。
【００５４】
次に、制御装置２０は、受信したセンサ信号において、被制御装置３０における例外となるような事故等が発生しているか否かを判定する（ステップＳ２４）。例外が発生していない場合（ステップＳ２４：Ｎｏ）には、制御装置２０は、既存の処理（例えば、ステップＳ１０からステップＳ２０の間のいずれかの処理）を継続する。
【００５５】
一方、被制御装置３０において例外となるような事故等が発生している場合（ステップＳ２４：Ｙｅｓ）、被制御装置の例外処理を実行する（ステップＳ２６）。この例外処理は、例えば、制御指示の生成が間に合わなかった場合に起こりうる。そこで、プログラム格納部２０８に、制御指示の生成が間に合わなかった場合に被制御装置３０へと送信する被制御装置３０の動作についてのプログラムを格納しておく。
【００５６】
制御指示の生成が間に合わずに、次の被制御装置３０の動作が確定できない場合等には、プログラム格納部２０８に格納されている例外処理用のプログラムを呼び出し、制御信号として被制御装置３０へと送信する。なお、この制御信号は、通信遅延及び位相ずれ等を考慮せずに送信するようにしてもよい。この際、深刻度パラメータを準備しておき、連続して制御信号の生成が間に合わなかった場合に、深刻度が高まるようにしてもよい。そして、深刻度の高さに基づいて、例外処理として送信する制御信号を変更するようにしてもよい。
【００５７】
この被制御装置３０における例外を検出するのと並行して、被制御装置３０を含む各種装置の制御が時間方向にずれた（ジッタが発生した）場合、又は、空間方向にずれた（制御エラーが発生した）場合にも例外処理を実行してもよい。この制御ずれに対する例外処理は、まず、センサ信号を受信し、制御ずれの例外が発生したか否かを判断する（ステップＳ２８）。制御ずれが発生していない場合（ステップＳ２８：Ｎｏ）には、制御装置２０は、上記と同様に、既存の処理を継続して行う。
【００５８】
一方、被制御装置３０等において例外となるような制御ずれが発生している場合（ステップＳ２８：Ｙｅｓ）、制御ずれの例外処理を実行する（ステップＳ３０）。この例外処理は、例えば、何らかの理由で通信遅延が発生したり、被制御装置３０において制動が間に合わなかったり、又は、被制御装置３０におけるオーバーシュート等により制御しようとした動作よりも多く動作してしまったりすることにより起こりうる。そこで、上記と同様に、プログラム格納部２０８に、このような場合に被制御装置３０へと送信する被制御装置３０の動作についてのプログラムを格納しておく。
【００５９】
上記のような場合、プログラム格納部２０８に格納されている例外処理用のプログラムを呼び出し、制御信号として被制御装置３０等へと送信する。なお、この制御信号についても、通信遅延及び位相ずれ等を考慮せずに送信してもよい。この際、上記と同様の深刻度パラメータを用い、深刻度に基づいて実行する例外処理を変更するようにしてもよい。この深刻度パラメータは、被制御装置の例外処理と、制御ずれの例外処理とで同じ深刻度としておいてもよいし、別の深刻度として算出するようにしてもよい。
【００６０】
以上のように、制御装置２０は、制御目標指示を受信し、被制御装置３０を当該制御目標に基づいて動作させ、さらに、事故等が起こる可能性がある場合には、未然に防ぐように例外処理を被制御装置３０へと実行させるようにする。
【００６１】
なお、例外処理として、被制御装置の動作を補完して制御するか、又は、被制御装置を安全に停止させるかの分岐は、例えば、例外が発生した回数に基づいて判断してもよい。例外は、上述したように、例えば、制御目標指示の受信の遅延、被制御装置に対する制御信号の生成の遅延、被制御装置の動作の時間的なずれ又は被制御装置の動作の空間的なずれの発生である。
【００６２】
例えば、例外が発生した回数が所定の回数以下である場合には、補完により制御を行い、例外が発生した回数が所定の回数を超える場合には、安全停止するようにする。例外が発生した回数は、連続して例外が発生した回数としてもよいし、所定の時間内において例外が発生した回数としてもよいし、又は、制御装置２０が制御を開始してから累計した例外が発生した回数としてもよい。
【００６３】
例外処理を行う被制御装置３０は、全ての被制御装置３０としてもよいし、一部の被制御装置３０としてもよい。例えば、一部の被制御装置３０の動作が、他の被制御装置３０に与える影響が少ない場合には、当該一部の被制御装置３０の動作を行うとともに、他の被制御装置３０の動作に対しては例外処理をするようにしてもよい。いずれにせよ、一部又は全部の被制御装置３０が協働して安全に動作可能であるように例外処理を行う。
【００６４】
なお、図３においては、各処理は直列した動作として示されているがこれには限られず並列処理として行ってもよい。例えば、制御目標指示の受信及び制御目標の生成、制御指示信号の生成及び送信、各種例外処理は、それぞれフォークされた別のプロセスとして動作していてもよい。例外の発生の判断は、例えば、デーモンにより実行されてもよい。各被制御装置３０に対する指示は、独立したものであるので、被制御装置３０ごとに当該被制御装置３０の動作周期に合わせた子プロセスを並列に実行させるようにしてもよい。
【００６５】
図４は、制御目標指示装置１０、制御装置２０、被制御装置３０及びセンサ４０を含めた処理のフローの一例を示す図である。
【００６６】
まず、それぞれの装置は、前処理として、所定の処理を行う。制御目標指示装置１０は、制御目標の設定を行う（ステップＳ１００）。制御目標の設定は、例えば、ユーザがシステム１に実行させるタスク等を入力することにより行われる。これには限られず、制御目標指示装置１０等が自動的に制御目標を設定するようにしてもよい。また、ユーザが入力したタスク等に基づいて、制御目標指示装置１０が設定するようにしてもよい。
【００６７】
制御装置２０は、制御装置２０において実行する各種プログラムを格納する（ステップＳ２００）。プログラムの格納は、あらかじめ決められたファイルサーバ等からダウンロードすることにより行ってもよいし、あらかじめ制御装置２０内のプログラム格納部２０８に格納されていてもよい。続いて、制御装置２０は、動作周期推定部２００により、初期状態における制御目標指示装置１０、被制御装置３０及びセンサ４０に対する通信遅延時間、位相ずれ時間、制御周期を推定し、各装置に関する遅延時間等として設定する（ステップＳ２０２）。
【００６８】
被制御装置３０は、初期化を行う（ステップＳ３００）。初期化とは、パラメータの値をリセットして初期値に戻したり、被制御装置３０の位置を初期状態に戻したりする動作のことを言う。また、初期化された状態における各種パラメータ等の情報を制御装置２０へと送信するようにしてもよいし、あらかじめ制御装置２０に初期値を設定しておくようにしてもよい。初期化が終了した被制御装置３０は、初期化が終了した旨の信号を制御装置２０へと送信するようにしてもよい。
【００６９】
センサ４０もまた、初期化を行う（ステップＳ４００）。被制御装置３０と同様に、初期化とは、パラメータの値をリセットして初期値に戻したり、又は、感知する状態（スタンバイ状態）にしたりする動作のことを言う。センサ４０は、スタンバイ状態になったことを制御装置２０へと送信するようにしてもよい。
【００７０】
上記のような各種装置の初期化が完了した後、システム１は、制御目標に対する動作を開始する。
【００７１】
まず、制御目標指示装置１０は、制御目標指示を生成し、生成した制御目標指示を制御装置２０へと送信する（ステップＳ１０２）。制御目標指示は、ステップＳ１００にて設定された制御目標と、生成のタイミングにおける被制御装置３０との状態に基づいて生成される。例えば、１つ前の動作周期において生成した制御目標指示の続きの動作となるように、制御目標指示を生成する。また、別の例としては、１つ前の動作周期において生成した制御目標指示に従って被制御装置３０がそれぞれ正常に制御されているような場合に、当該１つ前の動作周期において生成した制御目標指示における到達点からの続きとして制御目標指示を生成する。
【００７２】
この際、例外処理が起きている場合には、例外処理動作を行った続きの制御目標指示を生成するようにしてもよい。この場合、制御装置２０から被制御装置３０へとどのような例外処理の制御信号を送信したのかを、制御目標指示装置１０が受信するようにしてもよい。
【００７３】
制御目標指示を受信した制御装置２０は、被制御装置３０のそれぞれに対する制御目標を生成する（ステップＳ２０４）。図１に示すように、制御目標指示装置１０の動作周期が１００ミリ秒であり、被制御装置３０Ａの動作周期が１０ミリ秒であるような場合、１回の制御目標指示を受信すると、例えば、１０ミリ秒ごとに区切った各被制御装置３０の制御目標を生成する。
【００７４】
制御目標指示として、例えば、１００ミリ秒後の到達地点が指定された場合、当該到達地点を１０等分して１０ミリ秒ごとの到達地点を制御目標として生成してもよいし、動作の開始及び到達地点の終了の前後においては、動作を緩和させるように制御目標を生成してもよい。各被制御装置３０の制御目標は、制御目標指示を受信した後に次の制御目標指示を受信するまでの予想される時間分を全て生成する必要はなく、センサ４０から受信した被制御装置３０の状態に基づいて、逐次生成するようにしてもよい。
【００７５】
次に、制御装置２０は、生成した制御目標に基づいて、指示信号を生成し、被制御装置３０へと送信する。この信号の送信は、被制御装置３０へと通信遅延及び複数の被制御装置３０の動作に対する位相のずれ（信号を受信してから動作を開始するまでの時間のずれ）を考慮して実行される。
【００７６】
指示信号を受信した被制御装置３０は、受信した指示信号に基づいて、動作を実行する（ステップＳ３０２）。通信による遅延及び位相ずれによる他の被制御装置３０との動作タイミングのずれについては、上述したように制御装置２０により吸収されているため、被制御装置３０は、単純に受信した指示信号に基づいて動作を実行すればよい。
【００７７】
この制御装置２０の指示信号の生成及び送信動作と、被制御装置３０の動作の実行は、ループ処理により繰り返し行われる。
【００７８】
このようなループ処理中、センサ４０は、各被制御装置３０とは独立にセンサ情報を感知し（ステップＳ４０２）、当該感知したセンサ信号を制御装置２０へと送信する（ステップＳ４０４）。センサ４０についても、動作周期、通信遅延及び位相ずれは、推定済であるので、これらの情報をフィードバック情報として用いることにより、被制御装置３０の動作のずれ等を推定することが可能となる。推定された遅延情報等は、対応するアダプタ部２１０に随時記述することにより、制御装置２０は、より正確なタイミングで生成した制御信号を各被制御装置３０へと送信することが可能となる。
【００７９】
制御装置２０は、制御目標指示の受信状況、被制御装置３０からのフィードバック信号又はセンサ４０からの感知信号に基づいて、例外が発生していないか否かを監視する。例外が発生した場合（ステップＳ２０８）、制御装置２０は、各被制御装置３０に対して例外処理を行うための制御信号を送信する。
【００８０】
当該制御信号を受信した各被制御装置３０は、制御信号に基づいて例外処理の動作を行う（ステップＳ３０４）。この際、被制御装置３０側では、受信した信号が例外処理に関する信号であるか否かを判断する必要はなく、受信した制御信号に基づいた動作を行えばよい。
【００８１】
上述したように、例外処理に関する制御信号を生成する際に、制御装置２０は、当該例外処理後に動作を継続させるか、又は、動作を終了させるかを判断する。動作を継続させる場合、例外処理後の到達位置等を制御目標指示装置１０へと送信し、制御目標指示の設定を修正するようにしてもよい。このようにすることにより、新たな制御目標指示として、例外処理が発生した後に対応する制御目標指示を受信することも可能である。この場合、新たな制御目標指示が生成されるまで処理の遅延が発生する可能性があるので、前に受信した制御目標指示に基づいて、新たな制御目標指示を受信するまでの動作を、適宜制御装置２０で補完するようにしてもよい。
【００８２】
例外処理により動作を終了させる場合、被制御装置３０が安全に停止できるような制御信号を生成し、被制御装置３０を制御する。このタイミングにおいて、被制御装置３０から停止した時点における各種パラメータ等の情報を送信するように制御をしてもよい。また、動作の停止後に、各種パラメータ等の初期化を行うように制御してもよい。
【００８３】
この図４に示すように、制御目標指示装置１０、被制御装置３０及びセンサ４０は、別個独立に動作を行い、制御装置２０が同期信号を送受信することなくこれらの動作を統括する。図５は、被制御装置３０同士で動作周期等が異なる場合の指示信号の生成、送信、及び、被制御装置３０の動作の実行について示す図である。
【００８４】
被制御装置３０Ａは、動作周期が１０ミリ秒、位相ずれが０ミリ秒であり、被制御装置３０Ｂは、動作周期が４ミリ秒、位相ずれが３ミリ秒であるとする。制御装置２０は、上述した手順に従い、制御目標を生成する（ステップＳ２０４）。次に、各被制御装置３０に対する指示信号を生成する。なお、この図５において指示信号の生成と送信は同じタイミングで行われるように示されているがこれには限られず、指示信号を先に生成しておき、各被制御装置３０に対応する各アダプタ部２１０の記述にしたがい、送信タイミングをずらすようにしてもよい。
【００８５】
生成した被制御装置３０Ｂに対する指示信号は、まず、各被制御装置３０に対応するアダプタ部２１０の記述にしたがい、被制御装置３０Ａに対して遅れた位相ずれを有する被制御装置３０Ｂに送信される（ステップＳ２０６Ｂ）。
【００８６】
続いて、位相ずれ分ずれたタイミングにおいて、制御装置２０は、被制御装置３０Ａに対する指示信号を被制御装置３０Ａへと送信する（ステップＳ２０６Ａ）。このように位相ずれを考慮した指示信号の送信を行うことにより、被制御装置３０Ａと被制御装置３０Ｂとは協働して動作を開始する（ステップＳ３０２Ａ、ステップ３０２Ｂ）。
【００８７】
続いて、制御装置２０は、被制御装置３０Ａ及び被制御装置３０Ｂのそれぞれについて、その動作周期に合わせた指示信号の生成と送信とを繰り返す（ステップＳ２０６Ａ、ステップＳ２０６Ｂ）。このように、被制御装置３０Ａ及び被制御装置３０Ｂは、互いに同期信号を送受信することなく、また、制御装置２０とも同期信号を送受信することなく、協働して、動作周期に合わせて、さらに、互いの位相ずれをも吸収した協働動作を行うことが可能となる。
【００８８】
各被制御装置３０のフィードバック信号及びセンサ４０のセンサ感知信号に基づいて、制御装置２０は、位相ずれ等の時間的なずれ及び空間的なずれを適宜適切に補正する。このように、長時間の運用においても各被制御装置３０の協働動作を継続する。
【００８９】
なお、図５においては、通信遅延は考慮されていないが、もちろん通信遅延も位相ずれと同様に処理することが可能である。
【００９０】
次に、擬似コードを用いて、例外処理の具体的な実装例を説明する。図６は、例外処理を含む処理についての擬似コードを示す図である。
【００９１】
図６は、補完処理の一例として、線形補間を行う処理を示す擬似コードを示す。モジュールLinearOperation()において、線形補間するモジュールが記載される。各種入出力の変数及びクラスの定義をした後、各装置をチャネルに接続する。この例において、被制御装置３０である、deviceA及びdeviceBの間に位相ずれはなく、制御装置２０との間の通信遅延もなく、かつ、センサ４０と制御装置２０との間に通信遅延delayが存在するものとする。
【００９２】
各装置には、アダプタ部２１０に記述された通信遅延等に基づいて、制御信号を送信する。このアダプタ部２１０の記述及び制御信号の送信タイミングにより、制御目標指示装置１０、互いの被制御装置３０及びセンサ４０に同期信号を送受信することなく、各装置がリアルタイム性の高い協働動作を実行することを可能とする。
【００９３】
この図６では、一例として、制御装置２０において、制御目標指示装置１０からの指示が遅延した場合等、制御目標指示装置１０に依存する遅延を検知した場合の例外処理を示している。アダプタの定義として、制御目標指示装置１０の変数であるOperatorのアダプタ内に、例外処理が記述される。
【００９４】
制御目標指示を受信していない場合の例外処理として、動作を継続する場合に、value = currentValue + timeOffset * (currentValue - previousValue) / cycle;とすることにより、現在の値と、１つ前のサイクルの値との差に基づいて、線形的にtimeOffset後の値を外挿補間し、各被制御装置３０及びセンサ４０のサイクル内の目標として、例えば、deviceA.value += operator.value;により、外挿補間を行う。
【００９５】
制御目標指示を受信していない場合の例外処理として、安全停止をする場合に、value = currentValue + timeOut * (currentValue - previousValue) / cycle;とすることにより、timeOut値の時間が経過する間に被制御装置３０及びセンサ４０を安全に停止させる。
【００９６】
このように、アダプタの定義として通信遅延、位相ずれ等の記述をすることにより、同期信号を送受信することなく、リアルタイム性の高い協働動作を行うことが可能となる。
【００９７】
なお、図６の例においては、被制御装置３０であるdeviceA及びdeviceBとの間に位相ずれ等がない状態としたがこれには限られない。図７は、擬似コードの別の例を示す図である。
【００９８】
この図７に示すように、被制御装置３０であるdeviceA及びdeviceBのアダプタ定義を別のものにすることも可能である。図７の例では、deviceAとdeviceBとの間には、通信遅延であるdelay1及び位相ずれであるshift1の差異が生じるので、deviceBの装置タイプであるDeviceType2のアダプタ定義には、value = value - delay1 - shift1;として、これらの遅延等を吸収して制御信号を送信する。センサに対しても同様に位相ずれが存在する場合には、図７のようにアダプタの定義を行う。
【００９９】
また、図６においては、制御目標指示装置１０に起因する例外処理を記述したが、図７のように、例えば、DeviceType1に固有の例外処理が起因する場合には、DeviceType1のアダプタ定義に、例外処理を記述するようにしてもよい。このように、各装置に固有の例外処理を記述することも可能である。
【０１００】
上述したように、例外処理が起こる原因としては、例えば、デバイス同士の衝突が起こるような事由、通信異常（通信障害）、その他の一般的に人間又は装置に危険を及ぼしうる事由がある。通信の異常を検知するために、operatorから通信を行う場合、deviceA等からアダプタを介してoperatorへと応答信号、例えば、ＡＣＫ／ＮＡＣＫ等の信号を送信するようにしてもよいし、カメラ等で撮影された画像に基づいて各デバイスの動作を解析して通信が行われていないことを検知するようにしてもよい。また、通信状態をモニタリングし、各デバイス又はoperator等で検知するようにしてもよい。
【０１０１】
すなわち、上述したように、制御目標指示の受信の遅延、被制御装置に対する制御信号の生成の遅延、被制御装置の動作の時間的なずれ、被制御装置の動作の空間的なずれ及び通信異常のうち少なくとも１つが発生した回数が所定の回数以下である場合に、被制御装置の動作を補完して制御を行う。一方で、制御目標指示の受信の遅延、被制御装置に対する制御信号の生成の遅延、被制御装置の動作の時間的なずれ、被制御装置の動作の空間的なずれ及び通信異常のうち少なくとも１つが発生した回数が所定の回数を超える場合に、被制御装置の動作を安全に停止する制御を行う。
【０１０２】
図８は、本実施形態の具体的な実装の一例を示す図である。
【０１０３】
Ｆｏｇレベルに、制御目標指示装置１０が存在し、制御目標指示装置１０と制御装置２０との間の通信はＴＣＰ／ＩＰを用いたイーサネットにより接続される。制御目標指示装置１０と、制御装置２０との間の通信については、リアルタイム性の高い通信が必要とされないため、このように通常のＴＣＰ／ＩＰを用いた通信であってもよい。
【０１０４】
制御装置２０は、セルレベルに存在し、例えば、各被制御装置３０とＥｔｈｅｒＣＡＴ（登録商標）で接続され、センサとは、被制御装置３０との通信よりもデータ量の多い通信にも耐えうるＴＳＮ（Time-Sensitive Networking）により拡張されたイーサネットで接続される。制御目標指示装置１０と比べ、被制御装置３０及びセンサ４０と、制御装置２０間においては、よりリアルタイム性の高い通信が必要とされるため、例えば、このように拡張されたイーサネットによる通信手法により接続される。
【０１０５】
各被制御装置３０は、図８に示すように、リング状に接続されてもよいし、複数の被制御装置３０が制御装置２０と各々接続されるようにしてもよい。
【０１０６】
センサ４０は、スイッチ４２及びコントローラ４４を介して制御装置２０と接続される。ＴＳＮ拡張されたイーサネットを用いることにより、データ量の多い通信に耐えうるとともに、低遅延の通信を優先するため、リアルタイム性の高い感知情報を制御装置２０へと送信することが可能となる。
【０１０７】
このように接続することにより、複数の被制御装置３０の動作状態をセンサ４０が感知し、感知した情報を素早く制御装置２０へと送信することが可能となる。そして、上述したように、同期信号を送信することなく、各被制御装置３０の制御指令を、制御目標指示装置１０の生成した制御目標指示に基づいて送信することが可能となる。
【０１０８】
以上のように、本実施形態によれば、各被制御装置３０の動作周期等を推定し、各被制御装置３０に対応するアダプタ部２１０に当該動作周期等を記述し、制御装置２０において通信遅延、位相ずれ等のディレイ、シフト、レイテンシ等を吸収して制御信号を送信することにより、制御目標指示装置１０が生成した制御目標指示に従った複数の被制御装置３０の制御を、同期信号の送受信を行うことなくリアルタイム性の高い通信（被制御装置３０及びセンサ４０と、制御装置２０間）と、そうでは無い通信（制御目標指示装置１０と、制御装置２０間）とが混在した状態で実行することが可能となる。このような構成にすることにより、制御目標指示装置１０においては、より精密度の高い制御目標を生成することが可能となるとともに、被制御装置３０及びセンサ４０においては、リアルタイム性の高い制御を行うことが可能となる。
【０１０９】
なお、システム１内における全ての遅延等を制御装置２０で吸収できるようにしてもよいし、一部の遅延等を吸収するようにしてもよい。全ての遅延等を制御装置２０で吸収する場合は、センサ４０のような外部からの観測手段があるとよい。これは、外部からの観測手段と、各被制御装置３０の現在の指示状態とのずれから、各被制御装置３０の遅延特性を制御装置２０又は周辺機器により分析し、制御装置２０内の各被制御装置３０に対応するアダプタ部に遅延特性を記述し、この遅延特性を用いてプログラム処理部が命令列を生成することが可能となるためである。ここで、遅延特性とは、値とワーク遅延のみならず、各被制御装置３０等の特性をも含む概念である。また、各被制御装置３０に、ディープラーニングを用いる装置として、制御目標指示装置１０のような装置が含まれていてもよい。
【０１１０】
このＤＳＬは、その構成要素が事前に構成された動的テストにより動的特性、特にＣＰＵ時間の特性が確認済のものであり、これをＤＳＬにより合成したアプリケーションロジックは、所望のリアルタイム属性をどの程度の確率で充足するかが明らかなものである。また、位相がずれて動作する被制御機器、そもそも周期の異なる装置、又は、遅延特性若しくはジッタ特性の異なる装置等において、ファームリアルタイム性を保証しつつ中間値を補完することが可能となる。
【０１１１】
さらに、所望のリアルタイム特性を充足しなかった場合に備え、機器への出力データ部分でのデフォルト戦略、非常時戦略を定義する。デフォルト戦略、非常時戦略は、組み込みのハードリアルタイム処理で動作し、リアルタイムに制御が間に合わなかった場合に、ファームリアルタイムとして動作する場合に採択される。デフォルト戦略が一定時間以上続いた場合に、非常として判断され、非常時戦略により安全停止を行うことが可能となる。これにより、システム自体の安全を保証し、かつ、システム内の各種デバイスの故障等も防ぐことが可能となる。
【０１１２】
前述の実施形態では、制御装置２０と被制御装置３０は、別個に備えられるものとしたが、これには限られない。同じ機械、装置内に、制御装置２０と被制御装置３０が備えられてもよい。また、この場合、複数の被制御装置が１つの装置に含まれていてもよい。
【０１１３】
図９は、１実装例を示す模式図である。例えば、システム１が１体のロボット１Ｒの内部に備えられている。ロボット１Ｒ内において、制御周期が同期されていない複数の被制御装置３０を備える場合にも、前述の実施形態は適用することが可能である。
【０１１４】
例えば、それぞれの被制御装置３０は、センサ、アクチュエータが接続されており、ミッションクリティカルな処理を実現するための制御ループを実行している。異なる被制御装置３０に属するセンサ及びアクチュエータが協調動作をする場合には、本実施形態を適用することで、制御周期、各センサの計測周期のズレの補正、及び、処理時間の揺らぎ、通信遅延の吸収等を実行することが可能である。これらの補正等を行うことにより、ロボット１Ｒを操作する場合において、リアルタイム性を実現することができる。
【０１１５】
処理時間、通信遅延等が所定のしきい値を超えた場合には、例えば、処理時間、通信遅延等が所定の時間を超えるような場合には、あらかじめ定義した協調動作作業を安全に中止する処理が、被制御装置３０ごとに実行されてもよい。前述したように、この処理中にあらかじめ定義された処理の例外が発生した場合には、緊急停止してもよい。
【０１１６】
例えば、図９に示すように、ロボット１Ｒは、２つの被制御装置である、アーム３００、３０２を備えている。これらのアーム３００、３０２は、協働操作を行うことが可能である。１つの物体を把持する協働操作を行う場合、アーム３００、３０２の制御周期について同期がとれていない場合であっても、それぞれの被制御装置について、この制御周期のズレを補正することにより、各アーム部が協働して動作し、把持動作を実現する。
【０１１７】
例えば、被制御装置であるアーム３００、３０２との通信に大きな遅延が発生し、協働操作を停止しなければいけない場合、急停止すると把持している物体に損傷を与えてしまうことがある。このような場合に、あらかじめプログラム部に例外処理を定義することにより、被制御装置であるそれぞれのアーム３００、３０２の動作にしたがった安全停止処理を定義することができる。例えば、この定義により、アーム３００、３０２を緩やかに停止させ、物体を損傷させることなく処理することが可能である。
【０１１８】
前述したように、システム１、すなわち、ロボット１Ｒは、センサ４０を備えていてもよい。例えば、ロボット１Ｒは、カメラ４００を備えている。同一の制御装置２０に接続されたセンサ４０及び被制御装置３０についても、前述したように本実施形態によればそれぞれ制御することが可能である。１つの制御装置２０においては、バスクロック等の制御信号で同期を実行する手法が一般的であるが、例えば、計算量が可変であり、クロック周期に合わせて計算結果が確定しない処理やセンサの計測周期が一定では無い場合には、補正値を用いた同期処理を用いることが可能となる。
【０１１９】
図９の例では、カメラ４００が取得した映像に基づいて、アーム３００、３０２を用いて物体を把持することを、１つの制御装置２０が制御することができる。アーム３００、３０２、及び、カメラ４００について異なる同期周期を持っていたとしても、本実施形態によれば、カメラ４００からの映像に基づいて、アーム３００、３０２を制御し、例外が発生した場合にも、適切に協働動作を行うことが可能となる。
【０１２０】
さらには、インターネットなどのデータ通信ネットワークを介してロボットを遠隔操作する場合にも、本実施形態を適用することができる。通信遅延が大きくなった場合や、データ欠損がある場合にも、リアルタイム性の高いシステム制御を行うことが可能である。これによれば、操作対象のロボットがあらかじめ定義された例外処理により緊急停止などの異常事態になる恐れを低減することもできる。このように、ロボットによるミッションクリティカルな作業をも継続することができる。
【０１２１】
また、前述の実施形態に係る装置は、
複数の被制御装置を制御する、制御装置であって、
前記被制御装置のそれぞれについて、前記制御の目標となる制御目標指示を受信する、制御指示受付部と、
受信した前記制御目標指示に基づいて、前記被制御装置の動作の制御を行う信号を生成する、制御処理生成部と、
を備え、
前記被制御装置のそれぞれについての通信遅延時間、位相ずれ時間及び動作周期時間に基づいて、前記被制御装置のそれぞれが協働して制御の目標に到達するように動作の制御を行う、制御装置、
として実施することが可能である。
【０１２２】
また、前述の実施形態に係る方法は、
複数の被制御装置を制御する、制御方法であって、被制御装置のそれぞれについて、制御の目標となる制御目標指示を受信するステップと、
受信した制御目標指示に基づいて、前記被制御装置の動作の制御を行う信号を生成するステップと、
前記被制御装置のそれぞれについての通信遅延時間、位相ずれ時間及び動作周期時間に基づいて、前記被制御装置のそれぞれが協働して制御の目標に到達するように動作の制御を行うステップと
を備える制御方法、
として実施することが可能である。
【０１２３】
また、前述の実施形態に係るプログラムは、
コンピュータに複数の被制御装置を制御させるプログラムであって、
前記被制御装置のそれぞれについて、制御の目標となる制御目標指示を受信するステップと、
受信した制御目標指示に基づいて、前記被制御装置の動作の制御を行う信号を生成するステップと、
前記被制御装置のそれぞれについての通信遅延時間、位相ずれ時間及び動作周期時間に基づいて、前記被制御装置のそれぞれが協働して制御の目標に到達するように動作の制御を行うステップと
を実行させるプログラム、
として実施することが可能である。
【０１２４】
上記の全ての記載において、システム１の少なくとも一部はハードウェアで構成されていてもよいし、ソフトウェアで構成され、ソフトウェアの情報処理によりＣＰＵ（Central Processing Unit）等が実施をしてもよい。ソフトウェアで構成される場合には、システム１及びその少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記憶媒体に収納し、コンピュータに読み込ませて実行させるものであってもよい。記憶媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記憶媒体であってもよい。すなわち、ソフトウェアによる情報処理がハードウェア資源を用いて具体的に実装されるものであってもよい。さらに、ソフトウェアによる処理は、ＦＰＧＡ（Field-Programmable Gate Array）等の回路に実装され、ハードウェアが実行するものであってもよい。学習モデルの生成や、学習モデルに入力をした後の処理は、例えば、ＧＰＵ（Graphical Processing Unit）等のアクセラレータを使用して行ってもよい。
【０１２５】
また、本実施形態に係る学習モデルは、人工知能ソフトウェアの一部であるプログラムモジュールとして利用することが可能である。すなわち、コンピュータのＣＰＵが制御目標指示装置１０に格納されているモデルに基づいて、センサ４０により検知されたデータ又は動作目標となるデータに対して演算を行い、学習済みモデルから結果を出力するように動作する。
【０１２６】
上記の全ての記載に基づいて、本発明の追加、効果又は種々の変形を当業者であれば想到できるかもしれないが、本発明の態様は、上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更及び部分的削除が可能である。
【符号の説明】
【０１２７】
１：システム
１０：制御目標指示装置
２０：制御装置
２００：動作周期推定部
２０２：制御指示受付部
２０４：制御処理生成部
２０６：例外処理実行部
２０８：プログラム格納部
２１０：アダプタ部
３０：被制御装置
４０：センサ
１Ｒ：ロボット
３００、３０２：アーム
４００：カメラ
【図１】
2019117249.tif 000003
【図２】
2019117249.tif 000004
【図３】
2019117249.tif 000005
【図４】
2019117249.tif 000006
【図５】
2019117249.tif 000007
【図６】
2019117249.tif 000008
【図７】
2019117249.tif 000009
【図８】
2019117249.tif 000010
【図９】
2019117249.tif 000011
【国際調査報告】
2019117249.tif 000012
2019117249.tif 000013
2019117249.tif 000014