(57)【特許請求の範囲】
【請求項１】
フレーム内に割り当てられたタイムスロットを用いてデータの通信を行う通信装置であって、
前記通信装置によってデータを送信するために割り当てられた送信用の第１タイムスロットにおいてデータを送信する送信手段と、
前記第１タイムスロットにおいてデータを送信できない場合、当該第１タイムスロットを有するフレーム内において当該第１タイムスロットより後方の第２タイムスロットを、前記データの送信に用いるタイムスロットとして予約する予約手段と、を有し、
前記予約手段は、前記第２タイムスロットを予約するための予約情報を、前記第１タイムスロットにおいて他の通信装置に送信することにより、前記第２タイムスロットを予約することを特徴とする通信装置。
【請求項２】
前記第１タイムスロットまでに送信すべきデータの生成が完了するか否かを判定する判定手段を更に有し、
前記予約手段は、前記第１タイムスロットまでに送信すべきデータの生成が完了しないと前記判定手段により判定された場合に、前記第２タイムスロットを予約することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記第１タイムスロットまでに送信すべきデータの生成が完了しないと前記判定手段により判定された場合に当該データの生成が完了するタイミングを推定する推定手段を更に有し、
前記予約手段は、前記推定手段で推定されたタイミングに基づいて、前記第２タイムスロットを予約することを特徴とする請求項２に記載の通信装置。
【請求項４】
前記予約手段は、前記予約手段による前記第２タイムスロットを予約することにより、前記第１タイムスロットを有するフレームのタイムスロットの割り当てを変更することを特徴とする請求項１乃至請求項３のいずれか１項に記載の通信装置。
【請求項５】
他の通信装置から送信される予約情報を受信する受信手段を更に備え、
前記予約手段は、前記受信手段により受信された予約情報に基づいて、該予約情報を受信したフレームのタイムスロットの割り当てを変更することを特徴とする請求項１乃至請求項４のいずれか１項に記載の通信装置。
【請求項６】
前記予約手段は、割り当てのない空きタイムスロットを前記第２タイムスロットとして予約することを特徴とする請求項１乃至請求項５のいずれか１項に記載の通信装置。
【請求項７】
前記予約手段は、割り当て済みのタイムスロットを前記第２タイムスロットとして予約することを特徴とする請求項１乃至請求項６のいずれか１項に記載の通信装置。
【請求項８】
前記予約手段は、予約されたタイムスロット以降のタイムスロットの割り当てを、前記予約されたタイムスロットより後方にずらすように変更することを特徴とする請求項１乃至請求項７のいずれか１項に記載の通信装置。
【請求項９】
フレーム内の割り当てられたタイムスロットを用いてデータの通信を行う通信装置であって、
請求項１に記載の通信装置の予約手段によるタイムスロットの予約を検出する検出手段と、
前記検出手段により検出された予約に基づいて、該タイムスロットが予約されたフレームのタイムスロットの割り当てを変更する変更手段と、
を有することを特徴とする通信装置。
【請求項１０】
前記検出手段は、前記予約手段により送信されたタイムスロット予約のための予約情報を受信する受信手段を有し、
前記変更手段は、前記受信手段により受信された前記予約情報に基づいて、該予約情報を受信したフレームのタイムスロットの割り当てを変更することを特徴とする請求項９に記載の通信装置。
【請求項１１】
前記変更手段は、前記予約されたタイムスロット以降のタイムスロット割り当てを前記予約されたタイムスロットより後方にずらすように変更することを特徴とする請求項９又は請求項１０に記載の通信装置。
【請求項１２】
フレーム内の割り当てられたタイムスロットを用いてデータを通信する複数の通信装置を有する通信システムであって、
前記複数の通信装置を構成する第１の通信装置は、
前記第１の通信装置によってデータを送信するために割り当てられた送信用の第１タイムスロットにおいてデータを送信する送信手段と、
前記第１タイムスロットにおいてデータを送信できない場合、当該第１タイムスロットを有するフレーム内において当該第１タイムスロットより後方の第２タイムスロットを、前記データの送信に用いるタイムスロットとして予約する予約手段と、を有し、
前記予約手段は、前記第２タイムスロットを予約するための予約情報を、前記第１タイムスロットにおいて他の通信装置に送信することにより、前記第２タイムスロットを予約し、
前記複数の通信装置を構成する第２の通信装置は、
前記第１の通信装置の予約手段で予約されたタイムスロットを検出する検出手段と、
前記検出手段により検出された予約に基づいて、前記タイムスロットが予約されたフレームのタイムスロットの割り当てを変更する変更手段と、を有することを特徴とする通信システム。
【請求項１３】
フレーム内に割り当てられたタイムスロットを用いてデータの通信を行う通信装置の制御方法であって、
前記通信装置の送信手段が、前記通信装置によってデータを送信するために割り当てられた送信用の第１タイムスロットにおいてデータを送信する送信工程と、
前記通信装置の予約手段が、前記第１タイムスロットにおいてデータを送信できない場合、当該第１タイムスロットを有するフレーム内において当該第１タイムスロットより後方の第２タイムスロットを、前記データの送信に用いるタイムスロットとして予約する予約工程と、を有し、
前記予約工程は、前記第２タイムスロットを予約するための予約情報を、前記第１タイムスロットにおいて他の通信装置に送信することにより、前記第２タイムスロットを予約することを特徴とする通信装置の制御方法。
【請求項１４】
フレーム内に割り当てられたタイムスロットを用いてデータの通信を行う通信装置の制御方法であって、
前記通信装置の検出手段が、請求項１３に記載の通信装置の制御方法における予約工程で予約されたタイムスロットを検出する検出工程と、
前記通信装置の変更手段が、検出された予約に基づいて、前記タイムスロットが予約されたフレームのタイムスロットの割り当てを変更する変更工程と、
を有することを特徴とする通信装置の制御方法。
【請求項１５】
コンピュータを、請求項１乃至請求項１１のいずれか１項に記載の通信装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信データ抜けを回避することが可能な通信技術に関する。
【背景技術】
【０００２】
近年、機器の高機能化に伴い、機器の内部配線の増大が問題視されてきている。例えば、産業用ロボット等のロボットシステムにおいては、複雑な作業に対応するために多指化、多関節化、センサ数の増加等を行うと、配線数が多くなり、配線自体が動作の妨げになる、組立性が低下するといった問題が生じる。そこで、この配線数を少なくするためにシステム内の情報伝送にネットワーク通信を用いることが多くなりつつある。このようなシステムにおいてサーボ制御等のリアルタイム制御を行う場合には、ＴＤＭＡ方式によるサイクリック通信を用いることが一般的である。
【０００３】
ＴＤＭＡ方式によるサイクリック通信を用いてサーボ制御を行う場合には、マスタ装置と複数のスレーブ装置のそれぞれにフレーム内のタイムスロットを割り当てる。マスタ装置は、割り当てられたタイムスロットで、各スレーブ装置に対して、目標角度等のサーボ指令を送信する。スレーブ装置には、モータとエンコーダ等の角度センサが具備されて、マスタ装置から受信したサーボ指令に基づいてモータを駆動するとともに、角度センサからモータ回転角度を取得し、サーボ指令と実際の角度との偏差を算出する。そして、スレーブ装置は、割り当てられたタイムスロットで偏差をマスタ装置に送信する。マスタ装置は、スレーブ装置から送信される偏差に基づいて、次フレームのサーボ指令を生成する。これら動作により、システムのフィードバック制御が行われる。
【０００４】
この際、サーボ指令の生成や偏差の算出をソフトウェア処理により実行する場合、処理時間に揺らぎが生じ、割り当てられた送信タイムスロットまでに処理が完了しないことがある。この場合、正常な通信が行われず、制御精度と制御安定性が低下するという問題が生じる。
【０００５】
この問題に対応する技術として特許文献１に記載されている技術が知られている。これは、送信データの生成が完了しない場合には送信を留保することで、送信データの同時性を保証するものである。特許文献１では、送信データの生成が完了しない場合、当該フレームで通信データ抜けが発生することとなるが、この際に制御演算を停止してしまうと動作が不安定になるという問題が生じる。この問題に対応する技術として、通信データ抜けが発生した場合においても制御演算起動信号を生成することで、制御演算を継続して実行する技術が特許文献２に記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−３０３５３４号公報
【特許文献２】特開２００７−２２８４６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１及び特許文献２に記載の技術を用いたとしても、送信データの生成処理が完了しない場合には、通信データ抜けが発生し、当該フレームで最新のデータが送受信されないまま制御が行われる。したがって、割り当てられた送信タイムスロットまでに処理が完了しない場合において、制御精度と制御安定性が低下するという問題は依然として残る。この問題を回避する方法として、送信データの生成処理時間を十分に確保した上で、各装置にタイムスロットを割り当てることが考えられる。しかしながら、この方法では、通信データ抜けは回避することができるものの、フレーム長、すなわち制御サイクルタイムを短くすることができないため、制御精度や応答性を高めることが困難となる。
【課題を解決するための手段】
【０００８】
上記の課題を鑑み、本発明は、フレーム内に割り当てられたタイムスロットでデータを送信できない場合、通信データ抜けを回避することができる通信技術の提供を目的とする。
【０００９】
上記目的を達成する本発明の一つの側面にかかる通信装置は、フレーム内に割り当てられたタイムスロットを用いてデータの通信を行う通信装置であって、
前記通信装置によってデータを送信するために割り当てられた送信用の第１タイムスロットにおいてデータを送信する送信手段と、
前記第１タイムスロットにおいてデータを送信できない場合、当該第１タイムスロットを有するフレーム内において当該第１タイムスロットより後方の第２タイムスロットを、前記データの送信に用いるタイムスロットとして予約する予約手段と、を有し、
前記予約手段は、前記第２タイムスロットを予約するための予約情報を、前記第１タイムスロットにおいて他の通信装置に送信することにより、前記第２タイムスロットを予約することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、フレーム内に割り当てられたタイムスロットでデータを送信できない場合であっても、通信データ抜けを回避することができる通信技術の提供が可能になる。
【００１１】
したがって、例えば制御精度や安定性に優れた制御が可能になる。
【００１２】
あるいは、フレーム長を短くした場合においても、同様に通信データ抜けを回避することができるため、制御サイクルタイムを短くすることができ、制御精度や応答性を向上することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態にかかる通信装置を適用した多指ロボットハンドシステムのブロック図。
【図２】フレームの構成図。
【図３】タイムスロットの割り当てを例示する図。
【図４】第１実施形態における全体制御部の内部構成を示すブロック図。
【図５】第１実施形態における指制御部の内部構成を示すブロック図。
【図６】送信動作に関わる動作フロー図。
【図７】受信動作に関わる動作フロー図。
【図８】第１実施形態におけるタイムスロットの割り当てを例示する図。
【図９】第２実施形態における全体制御部の内部構成を示すブロック図。
【図１０】第２実施形態におけるタイムスロットの割り当てを例示する図。
【図１１】第２実施形態におけるタイムスロットの割り当てを例示する図。
【図１２】第２実施形態における指制御部の内部構成を示すブロック図。
【図１３】第２実施形態におけるタイムスロットの割り当てを例示する図。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら本発明の実施形態を詳細に説明する。
【００１５】
（第１実施形態）
本発明にかかる通信装置は、フレーム内の割り当てられたタイムスロットを用いてデータを通信する通信システムに適用することができる。通信システムは、複数の通信装置（第１の通信装置、第２の通信装置）を有する。例えば、第１の通信装置は、第１の通信装置がデータを送信するために割り当てられた送信用のタイムスロットにおいてデータを送信する。また、第１の通信装置は、データ送信できない場合、データを送信できない送信用のタイムスロットを有するフレーム内において送信用のタイムスロットより後方のタイムスロットを、データ送信用のタイムスロットとして予約する。第２の通信装置は、第１の通信装置で予約されたタイムスロットを検出し、検出された予約に基づいて、タイムスロットが予約されたフレームのタイムスロットの割り当てを変更する。
【００１６】
具体的な例として、図１の参照により、本発明にかかる通信装置を適用したシステムとして、多指ロボットハンドシステムの構成を説明する。この多指ロボットハンドシステムは、独立して駆動可能な２個の関節を有する５本の指を備えており、各関節の制御部が分散して配置されている。通信装置として機能することが可能な全体制御部１０１は、画像センサ１０２から入力される画像データから把持対象を識別し、通信装置として機能することが可能な指制御部１０３−１〜１０３−５に指先端の目標位置を出力する。ＴＤＭＡ方式により、フレーム内の割り当てられたタイムスロットを用いて定周期にデータの通信を行う通信装置として全体制御部１０１と指制御部１０３−１〜１０３−５とは機能する。通信装置として機能する全体制御部１０１と指制御部１０３−１〜１０３−５とは通信システムを構成する。
【００１７】
指制御部１０３−１〜１０３−５は、目標指先端位置を満足する各関節の角度を演算により求め、第一関節制御部１０４−１〜１０４−５と第二関節制御部１０５−１〜１０５−５のそれぞれに目標関節角度を出力する。第一関節制御部１０４−１〜１０４−５と第二関節制御部１０５−１〜１０５−５は、図示しないモータとエンコーダ等の角度センサを備えており、目標関節角度に基づいてモータの制御を行う。また、第一関節制御部１０４−１〜１０４−５と第二関節制御部１０５−１〜１０５−５は、目標関節角度と実際の関節角度との角度偏差を指制御部１０３−１〜１０３−５に出力する。指制御部１０３−１〜１０３−５は、各関節制御部の角度偏差から指先端位置偏差を算出し、全体制御部１０１に出力する。これら各制御部間でのやり取りは所定の制御サイクルタイム毎に行われる。全体制御部１０１は、指先端位置偏差をフィードバック情報として次周期の目標指先端位置を演算により生成する。ここで、本実施形態では通信装置として機能することが可能な全体制御部１０１と指制御部１０３−１〜１０３−５との情報伝送に、ＴＤＭＡ方式によるサイクリック通信（定周期通信）を用いるものとして説明を行う。しかしながら本発明の趣旨はこれに限定されるものではなく、任意の制御部間におけるネットワーク通信を用いるようにしてよい。
【００１８】
図２は、全体制御部１０１と指制御部１０３−１〜１０３−５との間のＴＤＭＡ方式によるサイクリック通信（定周期通信）による情報伝送で用いるフレームの構成図である。フレーム２０１は所定数のタイムスロットに分割されており、このタイムスロットをデータの送受信単位とする。本実施形態では、１フレームが１６個のタイムスロットに分割されており、各タイムスロットを用いて全体制御部１０１と指制御部１０３−１〜１０３−５との通信が行われる。１フレームの分割数は、任意に設定することが可能である。また、フレーム長は制御サイクルタイムと一致するよう設定可能である。
【００１９】
図３は、全体制御部１０１と指制御部１０３−１〜１０３−５との間で行われる通信のタイムスロットの割り当てを示す図である。フレーム２０１の先頭であるタイムスロット０では、全体制御部１０１から指制御部１０３−１〜１０３−５に、固定パターンのフレーム同期信号が送信される。指制御部１０３−１〜１０３−５は、このフレーム同期信号をパターン検知することにより、フレーム２０１のフレーム先頭を検出する。タイムスロット１〜５では、全体制御部１０１から指制御部１０３−１〜１０３−５のそれぞれに、目標指先端位置が送信される。タイムスロット６とタイムスロット７は、指制御部１０３−１〜１０３−５が全体制御部１０１に送信する指先端位置偏差を演算、生成するために設けられた時間帯であり、空きタイムスロットとなっている。タイムスロット８〜１２では、指制御部１０３−１〜１０３−５のそれぞれから全体制御部１０１に指先端位置偏差が送信される。また、タイムスロット１３〜１５は、全体制御部１０１が指制御部１０３−１〜１０３−５に送信する目標指先端位置を演算、生成するために設けられた時間帯であり、空きタイムスロットとなっている。
【００２０】
（全体制御部１０１の内部構成）
図４の参照により、第１実施形態における通信装置として機能する全体制御部１０１の内部構成を説明する。送信データ生成部４０１は、画像センサ１０２から入力される画像データと指制御部１０３−１〜１０３−５から受信する指先端位置偏差とに基づいて、次フレームに送信する目標指先端位置を生成する。本実施形態では、送信データ生成部４０１は、各指の指先端位置偏差からロボットハンドの重心位置を算出し、それを考慮した上で次フレームの目標指先端位置を生成する。すなわち、全ての指制御部１０３−１〜１０３−５からの指先端位置偏差を受信した後（例えば、図３のタイムスロット１２の後）に、次フレームの目標指先端位置の生成を開始する。ここで、指制御部１０３−１〜１０３−５からの指先端位置偏差は、後に説明する受信データ抽出部４０９から出力されるデータである。送信データ生成部４０１には、送受信制御部４１２から送信タイムスロットのタイミングが通知される。この際、送信データ生成部４０１は、送信すべきデータの生成処理の進行状況を判定し、当該送信タイムスロットで送信すべきデータの生成が完了している場合には、送信データをセレクタ４０５に出力する。また、送信データの生成が完了していない場合には、送信データ生成完了判別部４０２に送信データ生成処理の進行状況を出力する。送信データ生成処理の進行状況の出力を実現するために、例えば、送信データ生成処理タスク内に進行状況を保持する変数を設け、所定ステップ毎にこの変数の値を更新するプログラムを追加する。そして、送信タイムスロットのタイミングが通知された後に、この変数の値を出力することで容易に実現可能である。
【００２１】
送信データ生成完了判別部４０２は、送信データ生成部４０１から送信データ生成処理の進行状況が通知されると、送信データ生成完了までの時間を推測する。そして、送信データの生成が完了すると推測される時間が経過した後のタイムスロットの番号をタイムスロット予約情報生成部４０３に出力する。送信データの生成が完了するタイムスロットの推測は、例えば、以下のように行う。送信データ生成部４０１から出力される変数の値を、送信データ生成処理が完了する場合に保持される変数の値で除算することで、進行状況を百分率で求める。この進行状況の値を送信データ生成開始から送信タイムスロットまでの時間で除算することで単位時間あたりの進行速度を求め、この値に基づいて、送信データの生成完了までに要する時間を推測する。そして、この時間が経過した後のタイムスロットの番号をタイムスロット予約情報生成部４０３に出力する。
【００２２】
タイムスロット予約情報生成部４０３には、タイムスロット割り当て情報記憶部４１１から、割り当てのない空きタイムスロットの番号が入力される。タイムスロット予約情報生成部４０３は、送信データ生成完了判別部４０２から入力されるタイムスロットの番号以降であり、かつ、空きタイムスロットであるタイムスロットの使用を予約するためのタイムスロット予約情報を生成する。タイムスロット予約情報は、予約するタイムスロットの番号と送信元と受信先とからなるデータである。タイムスロット予約情報生成部４０３は、タイムスロット予約情報を生成した場合、その内容をタイムスロット割り当て情報記憶部４１１に通知する。また、タイムスロット予約情報生成部４０３は、送受信制御部４１２にタイムスロット予約情報を生成した旨を通知する。この通知に基づき、送受信制御部４１２は、セレクタ４０５の制御を行う。
【００２３】
フレーム同期信号生成部４０４は、送受信制御部４１２からフレーム同期信号送信用タイムスロット（タイムスロット０）のタイミングが通知されると、セレクタ４０５にフレーム同期信号を出力する。セレクタ４０５は、送受信制御部４１２の制御に基づいて動作する。セレクタ４０５は、送信データ生成部４０１とタイムスロット予約情報生成部４０３とフレーム同期信号生成部４０４の出力の内、いずれか一つをラインドライバ４０６に出力する。ラインドライバ４０６は、セレクタ４０５から入力されるデータを指制御部１０３−１〜１０３−５に送信する。また、ラインドライバ４０６は、セレクタ４０５からの入力データが無い場合には出力端子をハイインピーダンスとする。
【００２４】
ラインレシーバ４０７は、指制御部１０３−１〜１０３−５からのデータを受信し、タイムスロット予約情報抽出部４０８に出力する。タイムスロット予約情報抽出部４０８は、指制御部１０３−１〜１０３−５から受信するデータの内、タイムスロット予約情報を抽出し、タイムスロット割り当て情報記憶部４１１に出力する。
【００２５】
受信データ抽出部４０９は、指制御部１０３−１〜１０３−５から受信したデータの内、自身宛て（全体制御部１０１宛て）のデータを抽出する。受信データ抽出部４０９は、全体制御部１０１宛てのデータである指制御部１０３−１〜１０３−５の指先端位置偏差を、送信データ生成部４０１に出力する。
【００２６】
タイムスロットカウンタ４１０は、図示しない発振子に基づいて、１タイムスロット時間経過毎にカウント値をインクリメントし、タイムスロット割り当て情報記憶部４１１に出力する。カウント値は、フレーム毎にリセットされる。
【００２７】
タイムスロット割り当て情報記憶部４１１には、図３に示したタイムスロット割り当て情報が記憶されており、タイムスロットカウンタ４１０から入力されるカウント値に応じたタイムスロット割り当て情報を送受信制御部４１２に出力する。タイムスロット割り当て情報記憶部４１１（以下、情報記憶部４１１ともいう）は、タイムスロット予約情報の入力に応じて、タイムスロット割り当て情報記憶内容（以下、記憶内容ともいう）を変更する。情報記憶部４１１は、タイムスロット予約情報生成部４０３及びタイムスロット予約情報抽出部４０８のうち少なくともいずれか一方からタイムスロット予約情報が入力された場合、当該フレームの通信に限り、記憶内容を変更する。そして、タイムスロット割り当て情報記憶部４１１は、タイムスロット予約情報が入力されたフレームの通信が完了すると、タイムスロット割り当て情報記憶内容を変更前に割り当てられていた前フレームの内容に変更する。タイムスロット割り当て情報記憶部４１１は、タイムスロット予約情報が入力された場合、当該フレームの通信に限り、タイムスロット割り当て情報記憶内容を変更する。送受信制御部４１２は、タイムスロット割り当て情報記憶部４１１から出力されるタイムスロット割り当て情報に基づいて動作し、上述した動作を実行すべく、送信データ生成部４０１、フレーム同期信号生成部４０４およびセレクタ４０５の各部を制御する。
【００２８】
（指制御部１０３−１〜１０３−５の内部構成）
図５の参照により、第１実施形態における通信装置として機能する指制御部１０３−１〜１０３−５の内部構成を説明する。図４に示した全体制御部１０１を構成するブロックと同様のブロックにはそれと同一の符号を付与し、説明を省略する。以下、図４と異なるブロックについてのみ説明する。
【００２９】
送信データ生成部５０１は、関節制御部（第一関節制御部と第二関節制御部）から入力される角度偏差に基づき、指先端位置偏差を演算により求めることで送信データを生成する。本実施形態では、送信データ生成部５０１は、全体制御部１０１から全ての指制御部１０３−１〜１０３−５に目標指先端位置が送信された後（例えば図３のタイムスロット５の後）に、送信データの生成を開始する。送信データ生成部５０１には、送受信制御部４１２から送信タイムスロットのタイミングが通知される。この際、送信データ生成部５０１は、送信すべきデータの生成処理の進行状況を判定し、送信タイムスロットで送信すべきデータの生成が完了している場合には、送信データをセレクタ５０２に出力する。また、送信データの生成が完了していない場合には、送信データ生成完了判別部４０２に送信データ生成処理の進行状況を出力する。
【００３０】
セレクタ５０２は、送受信制御部４１２の制御に基づいて動作する。セレクタ５０２は、送信データ生成部５０１とタイムスロット予約情報生成部４０３の出力の内、いずれか一方をラインドライバ５０６に出力する。ラインドライバ５０６は、セレクタ５０２から入力されるデータを全体制御部、他の指制御部に送信する。また、ラインドライバ５０６は、セレクタ５０２からの入力データが無い場合には出力端子をハイインピーダンスとする。ラインレシーバ５０７は、全体制御部、他の指制御部からのデータを受信し、フレーム同期信号抽出部５０３に出力する。
【００３１】
フレーム同期信号抽出部５０３は、全体制御部１０１から送信されるフレーム同期信号をパターン検知により検出する。タイムスロットカウンタ５０４は、図示しない発振子に基づいて、１タイムスロット時間経過毎にカウント値をインクリメントし、タイムスロット割り当て情報記憶部４１１に出力する。カウント値は、フレーム同期信号が検出されるとリセットされる。
【００３２】
制御情報生成部５０５は、受信した目標指先端位置を満たす各関節の角度を演算により求め、関節制御部（第一関節制御部と第二関節制御部）に出力する。本実施形態の制御情報生成部５０５は、全体制御部１０１から全ての指制御部１０３−１〜１０３−５に目標指先端位置が送信された後（例えば図３のタイムスロット５の後）に関節角度の演算を開始する。
【００３３】
（送信動作）
全体制御部１０１と指制御部１０３−１〜１０３−５の通信動作を説明する。図６は全体制御部１０１と指制御部１０３−１〜１０３−５の送信動作に関わる動作フロー図、図７は受信動作に関わる動作フロー図である。
【００３４】
まず、フレーム毎の送信動作について説明を行う。ステップＳ６０１で、全体制御部１０１と指制御部１０３−１〜１０３−５は、フレームの送信処理が完了したか否かを判定する。ステップＳ６０１において、フレームの送信処理が完了したと判定される場合（Ｓ６０１−Ｙｅｓ）、処理はステップＳ６１０に進められる。一方、ステップＳ６０１の判定で、フレームの送信処理が完了していない場合（Ｓ６０１−Ｎｏ）、処理はステップＳ６０２に進められる。ステップＳ６０２で、送信データ生成タイミングであるか否かが判定される。送信データ生成タイミングでない場合（Ｓ６０２−Ｎｏ）、処理はステップＳ６０１に戻され、ステップＳ６０１の処理が繰り返される。一方、ステップＳ６０２で、送信データ生成タイミングが通知され、送信データ生成タイミングであると判定された場合（Ｓ６０２−Ｙｅｓ）、送信データ生成ステップＳ６０３に進み、送信データが生成される（Ｓ６０３）。
【００３５】
ステップＳ６０４で、送信タイムスロットのタイミングが通知されると、送信タイムスロットで送信を行うための送信データの生成が完了しているか否かの判定を行う。送信データの生成が完了している場合（Ｓ６０４−Ｙｅｓ）、処理はステップＳ６０５に進められ、ステップＳ６０５で、割り当てられた送信タイムスロットで生成したデータを送信し、処理はステップＳ６０１に戻される。
【００３６】
一方、ステップＳ６０４で、送信データの生成が完了していないと判定される場合（Ｓ６０４−Ｎｏ）、処理はステップＳ６０６に進められ、送信データ生成処理が完了すると推測されたタイムスロット以降に予約可能な空きスロットがあるか否かを判定する。予約可能な空きスロットがない場合（Ｓ６０６−Ｎｏ）には、ステップＳ６０１に戻り、当該フレーム内でのデータ送信は行われないこととなる。
【００３７】
予約可能な空きスロットが有ると判定された場合（Ｓ６０６−Ｙｅｓ）、処理はステップＳ６０７に進められ、ステップＳ６０７で、タイムスロット予約情報を生成する。ステップＳ６０８で、先のステップＳ６０７で生成したタイムスロット予約情報に基づいて、当該フレームの通信に限り、自身のタイムスロット割り当て情報記憶内容を変更する。
【００３８】
ステップＳ６０９で、タイムスロット予約情報を送信し、その後、処理はステップＳ６０３に戻され、送信データ生成処理を行う。ステップＳ６１０で、フレームが完了すると、タイムスロット割り当て情報記憶内容を、変更前に割り当てられていた前フレームの内容に変更し、動作を終了する。
【００３９】
（受信動作）
続いて、受信動作について説明する。ステップＳ７０１で、全体制御部１０１と指制御部１０３−１〜１０３−５は、フレームの受信処理が完了したか否かを判定する。ステップＳ７０１において、フレームの受信処理が完了したと判定される場合（Ｓ７０１−Ｙｅｓ）、処理はステップＳ７０６に進められる。一方、ステップＳ７０１の判定で、フレームの受信処理が完了していない場合（Ｓ７０１−Ｎｏ）、処理はステップＳ７０２に進められる。
【００４０】
ステップＳ７０２で、タイムスロット予約情報を受信したか否かの判定を行う。タイムスロット予約情報を受信していない場合（Ｓ７０２−Ｎｏ）、処理はステップＳ７０３に進められる。ステップＳ７０３では、自身が受信先のタイムスロットであるか否かの判定を行う。自身が受信先のタイムスロットであった場合（Ｓ７０３−Ｙｅｓ）、処理はステップＳ７０４に進められ、受信データを抽出する（Ｓ７０４）。ステップＳ７０３の判定結果により、自身が受信先のタイムスロットでない場合（Ｓ７０３−Ｙｅｓ）、処理はステップＳ７０１に戻され、同様の処理が繰り返される。
【００４１】
ステップＳ７０２の判定結果により、タイムスロット予約情報を受信した場合（Ｓ７０２−Ｙｅｓ）、処理はステップＳ７０５に進められる。ステップＳ７０５では、受信したタイムスロット予約情報に基づいてタイムスロット割り当て情報記憶内容を当該フレームに限り変更し、処理はステップＳ７０２に戻され、同様の処理が繰り返される。
【００４２】
ステップＳ７０１において、フレームの受信処理が完了していると判定される場合（Ｓ７０１−Ｙｅｓ）、処理はステップＳ７０６に進められ、タイムスロット割り当て情報記憶内容を変更前に割り当てられていた前フレームの内容に変更し、動作を終了する。
【００４３】
（通信動作の具体例）
指制御部１０３−１の送信データ生成処理が完了しない場合の通信動作の具体例を説明する。指制御部１０３−１のタイムスロット予約情報生成部４０３は、予約可能なタイムスロットをタイムスロット割り当て情報記憶部４１１に要求し、タイムスロットの予約が可能か否かを確認する（ステップＳ６０６）。そして、指制御部１０３−１のタイムスロット予約情報生成部４０３は、空きタイムスロットを予約するためのタイムスロット予約情報を生成する（ステップＳ６０７）。
【００４４】
ここで、指制御部１０３のタイムスロット予約情報生成部４０３は、送信データ生成完了判別部４０２から送信データの生成が完了すると推測されるタイムスロットが、図３のタイムスロット１３と通知されるものとする。この場合、タイムスロット予約情報生成部４０３は、タイムスロット１３より後方でかつ空きタイムスロットであるタイムスロット１４を予約するためのタイムスロット予約情報を生成する。
【００４５】
そして、自身のタイムスロット割り当て情報記憶部４１１のタイムスロット割り当て情報記憶内容を図８に示す内容に変更する（ステップＳ６０８）。ステップＳ６０８では、送信元として指制御部１０３−１、受信先として全体制御部１０１、そして、送信内容は、指制御部１０３−１で求められた指先端位置偏差が設定される。
【００４６】
そして、ステップＳ６０９において、タイムスロット予約情報が全体制御部１０１と、自通信装置である指制御部１０３−１を除く他の指制御部１０３−２〜１０３−５に送信される。全体制御部１０１と指制御部１０３−２〜１０３−５は、指制御部１０３−１から送信されたタイムスロット予約情報を受信する。全体制御部１０１と指制御部１０３−２〜１０３−５は、タイムスロット予約情報に基づいてタイムスロット割り当て情報記憶部４１１のタイムスロット割り当て情報記憶内容を図８に示す内容に変更する（ステップＳ７０５）。指制御部１０３−１は、タイムスロット予約情報の送信後、送信データ生成処理を再開し、生成が完了したデータを、当初割り当てられていたタイムスロットより後方のタイムスロット１４でデータを送信する。
【００４７】
全体制御部１０１と指制御部１０３−２〜１０３−５は受信したフレームの処理が完了すると、タイムスロット割り当て情報記憶内容を前フレームの内容（図３に示す内容）に変更する（ステップＳ６１０、ステップＳ７０６）。
【００４８】
全体制御部１０１と指制御部１０３−２〜１０３−５は、タイムスロット予約情報の受信により、タイムスロット割り当て情報記憶部４１１のタイムスロット割り当て情報記憶内容を当該フレームに限り変更する。タイムスロット割り当て情報記憶部４１１には、変更前（前フレーム）のタイムスロット割り当て情報記憶内容が保持されている。全体制御部１０１と指制御部１０３−２〜１０３−５は、受信したフレームの処理の完了後、変更されたタイムスロット割り当て情報記憶内容を保持されている前フレームの内容に変更する（ステップＳ６１０、Ｓ７０６）。
【００４９】
ここでは、指制御部１０３−１の送信データの生成が完了しない場合の動作を例に説明を行ったが、全体制御部１０１と指制御部１０３−２〜１０３−５において、送信データ生成が完了しない場合についても同様の動作が行われる。尚、一フレーム内で、複数の制御部において送信データの生成が完了しない場合には、空きタイムスロットが無くなる場合がある。この場合、空きタイムスロットを予約することができなくなるため、当該フレームでのデータ送信は留保することとなる。また送信データ生成処理が完了すると推測されたタイムスロット以降に空きタイムスロットがない場合も同様に、データ送信は留保することとなる。  
本実施形態では割り当てられた送信タイムスロットまでに送信すべきデータ（送信データ）の生成が完了しない場合に、送信データの生成完了までに要する時間を考慮した上で、予約すべき空きタイムスロットを決定する構成とした。しかし、送信データの生成完了までに要する時間を考慮せず、任意の空きタイムスロットを予約する構成としてもよい。この場合、最初に予約した空きタイムスロットで送信データの生成が完了しない場合には、再度、空きタイムスロットの予約を行うこととなる。
【００５０】
本実施形態では、全体制御部１０１と指制御部１０３−１〜１０３−５との通信毎に１つのタイムスロットを割り当てる構成としたが、複数のタイムスロットを割り当てることも可能である。この場合、例えば、タイムスロット予約情報には、予約する複数のタイムスロットを特定するためにタイムスロットの開始番号と終了番号とが設定される。更に、タイムスロット予約情報には、タイムスロット予約情報の送信元と受信先とからなるデータが含まれる。そして、タイムスロット割り当て情報記憶部４１１がこのタイムスロット予約情報に基づいてタイムスロット割り当て情報を変更するようにすればよい。
【００５１】
本実施形態では、全体制御部１０１と指制御部１０３−１〜１０３−５の全てにおいて、送信データの生成が完了しない場合に対応する構成を説明した。しかし、所定の制御部でのみ送信データ生成処理時間が揺らぐ場合には、より簡易な構成とすることも可能である。例えば、全体制御部１０１でのみ送信データ生成処理時間が揺らぐ場合には、空きタイムスロットの予約を全体制御部１０１のみが行うようにするものである。この場合、全体制御部１０１のタイムスロット予約情報抽出部４０８と、指制御部１０３−１〜１０３−５の送信データ生成完了判別部４０２とタイムスロット予約情報生成部４０３を省略しても、本発明の効果を同様に得ることができる。
【００５２】
本実施形態では、割り当てられた送信タイムスロットまでに送信データの生成が完了しない場合に、割り当てられた送信タイムスロットを用いて空きタイムスロットの予約を行う。そして、予約したタイムスロットを用いて、データ送信を行うことで、通信データ抜けを回避した通信を行うことが可能となる。ＴＤＭＡ方式による定周期通信を用いた制御では、通信データ抜けを回避できるので、制御精度や安定性に優れた制御が可能になる。フレーム長を短くした場合においても、同様に通信データ抜けを回避することができるため、制御サイクルタイムを短くすることができ、制御精度や応答性を向上することができる。
【００５３】
（第２実施形態）
第１実施形態では、割り当てられた送信タイムスロットまでに送信データの生成が完了しない場合、空きタイムスロットを使用してデータ送信を行う構成を説明した。この際、割り当てられていた送信タイムスロットと空きタイムスロットとの間に多数のタイムスロットが配置されている場合、当該フレームにおける送信タイミングが大きくずれることとなる。送信タイミングの定周期性が重要視される制御システムにおいては、このような送信タイミングのずれ、すなわちジッタが問題となる場合がある。制御システムのサイクリック制御を行う場合、制御に関するジッタは少ないほど、制御精度、制御安定性を高めることが可能となることが多い。本実施形態は、送信データの生成が完了しない場合に、送信タイミングに大きなジッタを発生させることなく、通信データ抜けを回避することが可能な構成を提供する。
【００５４】
本実施形態において、全体制御部１０１と指制御部１０３−２〜１０３−５は、割り当てられた送信タイムスロットまでに送信データの生成が完了しない場合に、空きタイムスロットに限らず、任意のタイムスロットを予約する。すなわち、フレーム内における空きタイムスロットおよび割り当て済みのタイムスロットのうち、当初割り当てられていた送信用のタイムスロットより後方のタイムスロットを、データの送信に用いるタイムスロットとして予約する。
【００５５】
前記生成手段により生成された前記タイムスロット予約情報を用いて、前記フレームの通信に限り、予約されたタイムスロット以降のタイムスロット割り当てを、前記タイムスロット予約情報により予約されたタイムスロット分だけ後方にずらすよう変更する
そして、全体制御部または指制御部では、当該フレームの通信に限り、予約されたタイムスロット以降のタイムスロット割り当てを、前記タイムスロット予約情報により予約されたタイムスロット分だけ後方にずらすよう変更する。以下、第１実施形態と異なる点について説明する。
【００５６】
（全体制御部１０１の内部構成）
図９の参照により、第２実施形態における全体制御部１０１の内部構成を説明する。図４に示した第１実施形態の全体制御部１０１を構成するブロックと同様のブロックには同一の符号を付与し、説明を省略する。
【００５７】
タイムスロット予約情報生成部９０１は、送信データ生成完了判別部４０２から入力されるタイムスロットの番号以降のタイムスロットの使用を予約するためのタイムスロット予約情報を生成する。ここで、タイムスロット予約情報生成部９０１は、第１実施形態のタイムスロット予約情報生成部４０３とは異なり、空きタイムスロットに限らず、任意のタイムスロットを予約するための情報を生成する。すなわち、フレーム内における空きタイムスロットおよび割り当て済みのタイムスロットのうち、当初割り当てられていた送信用のタイムスロットより後方のタイムスロットが予約の対象となる。ここで、タイムスロット予約情報は、予約するタイムスロットの番号と送信元と受信先とからなるデータである。タイムスロット予約情報生成部９０１は、タイムスロット予約情報を生成した場合、その内容をタイムスロット割り当て情報記憶部９０２に通知する。また、タイムスロット予約情報生成部９０１は、送受信制御部４１２にタイムスロット予約情報を生成した旨を通知する。この通知に基づき、送受信制御部４１２は、セレクタ４０５の制御を行う。
【００５８】
タイムスロット割り当て情報記憶部９０２には、図３に示したタイムスロット割り当て情報が記憶されており、タイムスロットカウンタ４１０から入力されるカウント値に応じたタイムスロット割り当て情報を送受信制御部４１２に出力する。タイムスロット割り当て情報記憶部９０２（以下、情報記憶部９０２ともいう）は、タイムスロット予約情報の入力に応じて、タイムスロット割り当て情報記憶内容（以下、記憶内容ともいう）を変更する。情報記憶部９０２は、タイムスロット予約情報生成部９０１及びタイムスロット予約情報抽出部４０８のうち少なくともいずれか一方からタイムスロット予約情報が入力された場合、当該フレームに限り、記憶内容を変更する。ここで、タイムスロット割り当て情報記憶部９０２は、タイムスロット予約情報に基づいて、予約されたタイムスロット以降のスケジュールを後方にずらすよう、タイムスロット割り当て情報の記憶内容を変更する。例えば、図３に示す、全体制御部１０１から指制御部１０３−３に送信するタイムスロット３で、タイムスロット５が予約された場合のスケジュールを図１０に示す。この場合、タイムスロット３で、タイムスロット予約情報が送信されるとともに、タイムスロット５が全体制御部１０１から指制御部１０３−３に送信するタイムスロットとなる。そして、タイムスロット５以降のスケジュールは、１スロット後方にずれるようタイムスロット割り当て情報記憶内容が変更される。すなわち、図３のタイムスロット５に設定されていたデータは、１タイムスロット後方のタイムスロット６（図１０）に割り当てが変更される。
【００５９】
尚、図１１に示すように、指制御部１０３−１〜１０３−５から全体制御部１０１への送信タイムスロットのタイムスロット割り当ては変えずに、空きタイムスロットを減らすようにタイムスロット割り当て情報を変更するようにしてもよい。例えば、図１０のタイムスロット７、８は空きタイムスロットであるが、図１１に示すように空きタイムスロット８を減らすようにタイムスロットの割り当てを変更することも可能である。この場合、指制御部１０３−１〜１０３−５から全体制御部１０１へ送信タイミングはジッタを生じることなく通信を行うことが可能となる。
【００６０】
また、タイムスロット予約情報生成部９０１が、空きタイムスロットを予約した場合には、予約されたタイムスロット以降のスケジュールを、後方にずらさないようにしてもよい。この場合の動作は第１実施形態と同様となる。この場合も、指制御部１０３−１〜１０３−５から全体制御部１０１へ送信タイミングはジッタを生じることなく通信を行うことが可能である。
【００６１】
（指制御部１０３−１〜１０３−５の内部構成）
図１２の参照により第２実施形態における指制御部１０３−１〜１０３−５の内部構成を説明する。図５に示した第１実施形態の指制御部１０３−１〜１０３−５を構成するブロックと同様のブロックには同一の符号を付与し、説明を省略する。タイムスロット予約情報生成部１２０１とタイムスロット割り当て情報記憶部１２０２は、本実施形態における全体制御部１０１のタイムスロット予約情報生成部９０１とタイムスロット割り当て情報記憶部９０２と同様の動作を行う。例えば、図３のタイムスロット割り当てにおいて、指制御部１０３−３から全体制御部１０１に送信するタイムスロット１０で、タイムスロット１２が予約された場合のタイムスロット割り当てを図１３に示す。この場合、タイムスロット１０で、スロット予約情報が指制御部１０３−３から全体制御部１０１に送信されるとともに、タイムスロット１２が指制御部１０３−３から全体制御部１０１にデータが送信されるタイムスロットとなる。そして、タイムスロット１２以降のスケジュールは、１タイムスロット後方にずれるようタイムスロット割り当て情報記憶内容が変更される。
【００６２】
本実施形態の全体制御部１０１と指制御部１０３−１〜１０３−５の通信動作フローは、第１実施形態と同様に行われる。ただし、ステップＳ６０６とステップＳ６０７の動作が、第１実施形態とは異なるため、このステップのみ説明を行う。
【００６３】
ステップＳ６０６に先立ち、まずステップＳ６０４で、送信データの生成が完了していないと判定される場合（Ｓ６０４−Ｎｏ）、処理はステップＳ６０６に進められる。ステップＳ６０６で、送信データ生成処理が当該フレーム内で完了するか否かを判定し、当該フレーム内で完了しないと判定される場合に、処理はステップＳ６０１に戻る。この場合には、当該フレームでのデータ送信は留保されることとなる。ステップＳ６０６の判定で、送信データ生成処理が当該フレーム内で完了すると判定された場合、処理はステップＳ６０７に進められる。
【００６４】
ステップＳ６０７で、送信データの生成が完了すると推測されたタイムスロット以降の任意のタイムスロットを予約するためのタイムスロット予約情報を生成する。すなわち、フレーム内における空きタイムスロットおよび割り当て済みのタイムスロットのうち、当初割り当てられていた送信用のタイムスロットより後方のタイムスロットが予約の対象となる。
【００６５】
例えば、指制御部１０３−１において、図３のタイムスロット８までに送信データの生成が完了せず、タイムスロット１０で送信データの生成処理が完了すると推測されるものとする。この場合、指制御部１０３−１はタイムスロット１１以降の任意のタイムスロット（例えばタイムスロット１２）を予約するためのタイムスロット予約情報を生成する。なお、本実施形態では、フレーム内で複数の制御部がタイムスロットの予約を行った場合、フレーム後方に割り当てられていた制御部のタイムスロットがフレーム内に収まらなくなると、当該フレームでのデータ送信は留保される。しかしながら、送信データ生成処理の時間揺らぎは確率的に発生するものであり、複数の制御部が同一フレームでタイムスロットの予約を行う確率は十分に低いため、実用上問題無くシステム動作を行うことが可能である。
【００６６】
本実施形態では、送信データの生成が完了するタイムスロットを推測した上で、予約するタイムスロットを決定する構成を説明した。
【００６７】
送信データの生成が完了するタイムスロットを推測せずに、任意のタイムスロットを予約する構成の変形例も考えられるが、この場合には、予約したタイムスロットまでに送信データの生成が完了しない可能性が高い。予約したタイムスロットまでに送信データの生成が完了しない場合には、再度、タイムスロットの予約が行われ、有効なデータ送信は行われず、伝送効率が低下することとなる。
【００６８】
本実施形態では、送信データの生成完了を推測した上で、予約するタイムスロットを決定するため、上述の構成の変形例のように任意のタイムスロットを予約する場合と比較して、伝送効率を高めることが可能である。
【００６９】
本実施形態では、割り当てられた送信タイムスロットまでに送信データの生成が完了しない場合に、割り当てられた送信タイムスロットを用いて任意のタイムスロットの予約を行う。そして、予約されたタイムスロット以降のタイムスロットを割り当てられていた制御部は、当該フレームに限り、予約されたタイムスロットの数だけ後方のタイムスロットを使用する。これにより、送信データの生成が完了しない場合に、送信タイミングに大きなジッタを発生させることなく、通信データ抜けを回避することが可能となる。このため、送信タイミングの定周期性が重要視されるシステムにおいても、制御精度と制御安定性を向上することができる。なお、タイムスロット予約情報は、予約するタイムスロットの番号と送信元と受信先とから構成される。従って、複数の制御部のタイムスロット割り当てを変更するために必要なデータ量は少なく、効率的にフレーム内のタイムスロット割り当てを制御システムの構成に合わせて動的に変更することが可能である。
【００７０】
また、通信装置として機能する制御部または送信データのデータ種別に基づいて予約するタイムスロットの選択を切り替えるようにタイムスロット予約情報を生成することも可能である。例えば、送信データの生成が完了しない場合に、タイムスロット予約情報生成部９０１を以下のように動作させることも可能である。送信タイミングの定周期性が重要視される制御部または送信データの場合は、他の制御部に割り当てられているタイムスロットを含む任意のタイムスロットを予約の対象にする。そして、送信タイミングの定周期性が重要視されない制御部または送信データの場合は、空きタイムスロットがあるときのみ空きタイムスロットを予約するようにする。さらに、フレーム内での通信データ抜けが許容される制御部または送信データに関しては、タイムスロットの予約を行わないようにすることも可能である。これにより、例えば、各指制御部において異なる制御精度と制御安定性が求められる場合において、求められる制御精度、制御安定性に応じた通信を行うことが可能となる。
【００７１】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005763961.tif 000002
【図２】
0005763961.tif 000003
【図３】
0005763961.tif 000004
【図４】
0005763961.tif 000005
【図５】
0005763961.tif 000006
【図６】
0005763961.tif 000007
【図７】
0005763961.tif 000008
【図８】
0005763961.tif 000009
【図９】
0005763961.tif 000010
【図１０】
0005763961.tif 000011
【図１１】
0005763961.tif 000012
【図１２】
0005763961.tif 000013
【図１３】
0005763961.tif 000014