IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧

特開2023-108339機器の制御装置、制御システム、及び制御方法
<>
  • 特開-機器の制御装置、制御システム、及び制御方法 図1
  • 特開-機器の制御装置、制御システム、及び制御方法 図2
  • 特開-機器の制御装置、制御システム、及び制御方法 図3
  • 特開-機器の制御装置、制御システム、及び制御方法 図4
  • 特開-機器の制御装置、制御システム、及び制御方法 図5
  • 特開-機器の制御装置、制御システム、及び制御方法 図6
  • 特開-機器の制御装置、制御システム、及び制御方法 図7
  • 特開-機器の制御装置、制御システム、及び制御方法 図8
  • 特開-機器の制御装置、制御システム、及び制御方法 図9
  • 特開-機器の制御装置、制御システム、及び制御方法 図10
  • 特開-機器の制御装置、制御システム、及び制御方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023108339
(43)【公開日】2023-08-04
(54)【発明の名称】機器の制御装置、制御システム、及び制御方法
(51)【国際特許分類】
   G05B 19/042 20060101AFI20230728BHJP
【FI】
G05B19/042
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022009403
(22)【出願日】2022-01-25
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110000350
【氏名又は名称】ポレール弁理士法人
(72)【発明者】
【氏名】田中 勇気
(72)【発明者】
【氏名】佐々本 学
(72)【発明者】
【氏名】菅原 俊晴
(72)【発明者】
【氏名】酒田 輝昭
(72)【発明者】
【氏名】島村 光太郎
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220AA05
5H220AA08
5H220BB03
5H220BB18
5H220CC07
5H220CX01
5H220HH01
5H220HH03
5H220HH08
5H220JJ12
5H220JJ22
5H220JJ26
5H220JJ34
5H220JJ36
5H220JJ38
5H220KK01
5H220LL01
(57)【要約】
【課題】1つ以上の機器の動作を同期させることができる、機器の制御装置を提供する。
【解決手段】本発明による制御装置は、機器109aと通信可能な通信部107aと、機器109aに対する指令を生成する指令生成部102と、通信部107aから機器109aへ指令を送信してから機器109aが指令を実行するまでの時間差である指令実行時間差Δtを取得する指令実行時間差取得部106と、指令実行時間差Δtを用いて、機器109aが指令を実行する周期である指令実行周期Tを算出する周期計算部104と、指令実行時間差Δtを用いて、機器109aの指令実行周期Tの基準点である位相αを算出する位相計算部105と、指令実行周期Tと位相αから、機器109aが指令を実行するタイミングである指令実行タイミングteを算出し、次の指令実行タイミングteでの指令の値を求めることで、指令を補正する指令補正部103とを備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
1つ以上の機器と通信可能な通信部と、
前記機器に対する指令を生成する指令生成部と、
前記通信部から前記機器へ前記指令を送信してから前記機器が前記指令を実行するまでの時間差である指令実行時間差を取得する指令実行時間差取得部と、
前記指令実行時間差を用いて、前記機器が前記指令を実行する周期である指令実行周期を算出する周期計算部と、
前記指令実行時間差を用いて、前記機器の前記指令実行周期の基準点である位相を算出する位相計算部と、
前記指令実行周期と前記位相から、前記機器が前記指令を実行するタイミングである指令実行タイミングを算出し、次の前記指令実行タイミングでの指令の値を求めることで、前記指令を補正する指令補正部と、
を備えることを特徴とする、機器の制御装置。
【請求項2】
前記周期計算部は、前記機器に前記指令を送信する周期である指令送信周期と、前記指令実行時間差を用いて、前記指令実行周期を算出する、
請求項1に記載の、機器の制御装置。
【請求項3】
前記位相計算部は、予め定めた基準時刻と指令を送信した時刻との差である指令送信時間差と、前記指令実行時間差と、前記指令実行周期を用いて、前記位相を算出する、
請求項1に記載の、機器の制御装置。
【請求項4】
前記指令実行時間差取得部は、前記指令実行時間差を取得するときに、前記機器からのメッセージを受信したときを、前記機器が前記指令を実行した時間とみなす、
請求項1に記載の、機器の制御装置。
【請求項5】
前記指令実行時間差取得部は、前記指令実行時間差を取得するときに、前記機器が前記指令を受け取ってから前記指令を実行するまでの時間差を前記機器から取得することで、前記機器が前記指令を実行した時間を求める、
請求項1に記載の、機器の制御装置。
【請求項6】
前記指令実行時間差取得部は、前記指令実行時間差を取得するときに、前記機器が前記指令を実行した時刻を前記機器から取得することで、前記機器が前記指令を実行した時間を求める、
請求項1に記載の、機器の制御装置。
【請求項7】
前記指令実行時間差取得部は、前記指令実行時間差を取得するときに、前記機器に設置されたセンサが記録した値を取得することで、前記機器が前記指令を実行した時間を求める、
請求項1に記載の、機器の制御装置。
【請求項8】
前記指令実行時間差取得部は、前記指令実行時間差を取得するときに、前記機器を撮影するカメラが撮影した画像の情報を取得することで、前記機器が前記指令を実行した時間を求める、
請求項1に記載の、機器の制御装置。
【請求項9】
前記指令補正部は、前記制御装置が前記機器と予め定めた一定回数だけ通信するごとに、前記指令実行周期と前記位相を更新する、
請求項1に記載の、機器の制御装置。
【請求項10】
前記指令補正部は、複数回の前記指令実行周期だけ後の前記指令実行タイミングを算出し、この指令実行タイミングでの指令の値を求めて前記指令を補正する、
請求項1に記載の、機器の制御装置。
【請求項11】
請求項1に記載の制御装置と、
前記制御装置に制御され、前記制御装置が備える前記通信部と通信可能な1つ以上の機器と、
を備えることを特徴とする、機器の制御システム。
【請求項12】
1つ以上の機器と通信可能な通信部を備える制御装置に実行され、
前記機器に対する指令を生成する指令生成ステップと、
前記通信部から前記機器へ前記指令を送信してから前記機器が前記指令を実行するまでの時間差である指令実行時間差を取得する指令実行時間差取得ステップと、
前記指令実行時間差を用いて、前記機器が前記指令を実行する周期である指令実行周期を算出する周期計算ステップと、
前記指令実行時間差を用いて、前記機器の前記指令実行周期の基準点である位相を算出する位相計算ステップと、
前記指令実行周期と前記位相から、前記機器が前記指令を実行するタイミングである指令実行タイミングを算出し、次の前記指令実行タイミングでの指令の値を求めることで、前記指令を補正する指令補正ステップと、
を有することを特徴とする、機器の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、産業に用いられる機器の制御装置、制御システム、及び制御方法に関する。
【背景技術】
【0002】
各業界で顧客要求が多様化し、製造業においては開発サイクルの短期化とともに、大量生産や複雑な製品製造への対応が急務となっている。このため、産業用ロボットなどの機器の制御においては、生産性向上のために、同時に多数の機器を制御することが求められている。同時に複数の機器を制御する際には、制御対象である機器間での同期が必要である。例えば、複数のロボットで1つの製品を作るためには、各ロボットが動作タイミングを高精度に合わせる必要がある。
【0003】
複数の機器を同期させる従来の技術の例は、特許文献1に記載されている。特許文献1に記載された制御システムは、通信路で接続されマスタユニットとスレーブユニットを構成する各制御装置で生成するタイミング信号の位相差及び周期差を補正し、同期制御を行う。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007-219642号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述したように、産業用ロボットなどの複数の機器を制御する際には、複数の機器間で同期した制御が必要である。特に、異なる型の機器や異なるメーカで製造された機器などの、複数種類の機器が用いられている場合には、このような複数の機器間で同期が必要である。
【0006】
複数の機器の制御において、機器を制御するコントローラや機器のそれぞれが、受信した制御指令を実行するタイミングは、互いに異なっている。このため、コントローラや機器は、同じ制御指令を入力しても、指令を実行するタイミング(指令実行タイミング)が互いに異なり、動作にずれが生じる。そこで、複数の機器の制御においては、指令実行タイミングの差を吸収して、各機器で同期した動作を実行させる制御が必要である。例えば、機器のタイミング信号を発生する周期と位相を調整して、各機器で指令実行タイミングを同期させることで、同期した動作を実行させることができる。
【0007】
しかし、例えば互いに異なるメーカの機器などの複数種類の機器を制御する場合には、必ずしも全ての機器とコントローラのタイミング信号や指令実行タイミングを期待通りに調整できるわけではない。このため、特許文献1に記載された技術などの従来の技術では、内部動作や設定の変更が容易に行えないこのような機器が制御対象として存在していると、機器間で同期した動作を実行させることが困難である。
【0008】
本発明の目的は、1つ以上の機器の動作を同期させることができる、機器の制御装置、機器の制御システム、及び機器の制御方法を提供することである。
【課題を解決するための手段】
【0009】
本発明による、機器の制御装置は、1つ以上の機器と通信可能な通信部と、前記機器に対する指令を生成する指令生成部と、前記通信部から前記機器へ前記指令を送信してから前記機器が前記指令を実行するまでの時間差である指令実行時間差を取得する指令実行時間差取得部と、前記指令実行時間差を用いて、前記機器が前記指令を実行する周期である指令実行周期を算出する周期計算部と、前記指令実行時間差を用いて、前記機器の前記指令実行周期の基準点である位相を算出する位相計算部と、前記指令実行周期と前記位相から、前記機器が前記指令を実行するタイミングである指令実行タイミングを算出し、次の前記指令実行タイミングでの指令の値を求めることで、前記指令を補正する指令補正部とを備える。
【0010】
本発明による、機器の制御システムは、本発明による制御装置と、前記制御装置に制御され、前記制御装置が備える前記通信部と通信可能な1つ以上の機器とを備えることを特徴とする。
【0011】
本発明による、機器の制御方法は、1つ以上の機器と通信可能な通信部を備える制御装置に実行され、前記機器に対する指令を生成する指令生成ステップと、前記通信部から前記機器へ前記指令を送信してから前記機器が前記指令を実行するまでの時間差である指令実行時間差を取得する指令実行時間差取得ステップと、前記指令実行時間差を用いて、前記機器が前記指令を実行する周期である指令実行周期を算出する周期計算ステップと、前記指令実行時間差を用いて、前記機器の前記指令実行周期の基準点である位相を算出する位相計算ステップと、前記指令実行周期と前記位相から、前記機器が前記指令を実行するタイミングである指令実行タイミングを算出し、次の前記指令実行タイミングでの指令の値を求めることで、前記指令を補正する指令補正ステップとを有する。
【発明の効果】
【0012】
本発明によると、1つ以上の機器の動作を同期させることができる、機器の制御装置、機器の制御システム、及び機器の制御方法を提供することができる。
【図面の簡単な説明】
【0013】
図1】本発明の実施例1による制御装置の機能ブロック図である。
図2】指令生成部の動作フローの例を示す図である。
図3】指令補正部の動作フローの例を示す図である。
図4】周期計算部と位相計算部が計算するロボットの指令実行周期Tと位相αを示すタイムチャートを示す図である。
図5】指令補正部により補正される軌道指令と、指令補正部が補正した軌道指令の一例を示す図である。
図6】指令実行時間差Δtと指令実行周期Tと位相αを計算する際に用いる要素を示すタイムチャートを示す図である。
図7】通信部の動作フローの例を示す図である。
図8】本発明の実施例2による制御装置の機能ブロック図である。
図9】本発明の実施例3による制御装置の機能ブロック図である。
図10】本発明の実施例4による制御装置の機能ブロック図である。
図11】算出値更新部の機能ブロック図である。
【発明を実施するための形態】
【0014】
本発明による、機器の制御装置、制御システム、及び制御方法では、複数の機器(例えば、型や製造メーカが互いに異なる複数種類の機器)が指令を実行するタイミングの差異を吸収することができ、複数の機器の動作を同期して制御することができる。また、制御対象の機器が1台の場合では、指令を送信するタイミングと指令を実行するタイミングの差を加味して軌道指令を補正することにより機器の動作を調整して、理想の動作と実際の動作の乖離を無くすことができる。
【0015】
本発明によると、例えば1つ以上の機器を制御する生産ラインや産業システムにおいて、内部動作や設定を変更できず調整が困難な機器が存在していても、機器の動作を同期させたり調整したりすることができ、複雑な生産工程や、高精度かつ高効率な生産を実現させることができる。
【0016】
以下、本発明の実施例による、機器の制御装置、機器の制御システム、及び機器の制御方法を、図面を用いて説明する。本発明において、制御対象の機器には、ロボット(例えば、産業用ロボット)、自律走行車両、及びベルトコンベアなどの装置が含まれる。以下の実施例では、制御対象の機器として、複数のロボットを例示する。但し、本発明は、制御対象の機器(以下の実施例ではロボット)が1つの場合にも適用することができる。
【0017】
なお、本明細書で用いる図面において、同一のまたは対応する構成要素には同一の符号を付け、これらの構成要素については繰り返しの説明を省略する場合がある。
【実施例0018】
本発明の実施例1による、機器の制御装置、機器の制御システム、及び機器の制御方法を、図1から図7を参照して説明する。
【0019】
図1は、本実施例による制御装置101の機能ブロック図である。本実施例による制御装置101は、主要な構成として、指令生成部102と、指令補正部103と、周期計算部104と、位相計算部105と、指令実行時間差取得部106と、通信部107a~107cを備え、ロボットコントローラ108a~108cを介して複数のロボット109a~109cを制御する。図1には、一例として、制御装置101が、3台のロボット109a~109cを制御する例を示している。
【0020】
ロボットコントローラ108a~108cは、制御装置101に接続されるとともに、それぞれロボット109a~109cに接続され、制御装置101からの指令に従ってロボット109a~109cを制御する。ロボットコントローラ108a~108cは、制御装置101からの指令を、それぞれロボット109a~109cに送信する。
【0021】
ロボット109a~109cは、制御装置101の制御対象の機器であり、それぞれロボットコントローラ108a~108cを介して制御装置101から送信された指令を周期的に実行する。例えば、ロボット109a~109cは、制御装置101からの指令に従って、それぞれロボット109a~109cが備える関節(軸)を駆動させる。なお、以下の説明では、ロボット109a、ロボット109b、及びロボット109cを、それぞれロボットA、ロボットB、及びロボットCと呼ぶこともある。
【0022】
指令生成部102は、ロボット109a~109cに対する指令を生成する。指令生成部102は、ロボット109a~109cが実行すべき動作に基づいて、指令を生成する。ロボット109a~109cが実行すべき動作は、例えば、ユーザに指示された動作であり、外部から入力され、制御装置101に保存されている。
【0023】
指令補正部103は、指令生成部102が生成した指令を、ロボット109a~109cの周期と位相に応じて補正する。ロボット109a~109cの周期と位相とは、ロボット109a~109cがそれぞれ指令を実行する周期と位相のことである。
【0024】
周期計算部104は、各ロボット109a~109cが指令を実行する周期である指令実行周期Tを算出する。指令実行周期Tの算出には、制御装置101が各ロボット109a~109cへ指令を送信してから各ロボット109a~109cが指令を実行するまでの時間差(後述する指令実行時間差Δt)を用いる。
【0025】
位相計算部105は、各ロボット109a~109cの指令実行周期Tの基準点(始点)である位相αを算出する。位相αの算出には、後述する指令実行時間差Δtを用いる。位相αは、ロボット109a~109cが指令を実行する開始時点を定める。
【0026】
指令実行時間差取得部106は、制御装置101がロボット109a~109cへ指令を送信してから各ロボット109a~109cが指令を実行するまでの時間差である指令実行時間差Δtを取得する。
【0027】
通信部107a~107cは、ロボットコントローラ108a~108cを介してロボット109a~109cと通信可能である。通信部107a~107cは、それぞれロボットコントローラ108a~108cに接続され、ロボットコントローラ108a~108cと通信することで、ロボット109a~109cへ指令を送信したり、ロボット109a~109cから情報を受信したりする。通信部107a~107cは、ロボット109a~109c以外の任意の外部装置に対しても、指令や情報を送受信することができる。
【0028】
通信部107a~107cの数は、制御装置101が通信する機器や装置の数に応じて定められる。また、ロボットコントローラ108a~108cの数は、制御装置101が制御するロボットの数に応じて定められる。
【0029】
本実施例による、機器の制御システムは、制御装置101と、ロボットコントローラ108a~108cと、ロボット109a~109cを備える。ロボット109a~109cは、ロボットコントローラ108a~108cを介して、制御装置101の通信部107a~107cと通信可能であり、制御装置101に制御される。
【0030】
図2は、指令生成部102の動作フローの例を示す図である。図2を用いて、指令生成部102の動作を説明する。
【0031】
S201で、指令生成部102は、指令(軌道指令)を生成する対象のロボットとロボットの軸(関節)を選択する。指令生成部102は、ロボット109a~109cのうち、任意のロボットを選択することができ、選択したロボットの任意の軸を選択することができる。以下では、指令を生成する対象のロボット(S201で選択したロボット)を「対象ロボット」と呼ぶ。
【0032】
S202で、指令生成部102は、選択したロボットの軸について、対象ロボットの次に実行すべき動作に従い、現在時刻における軸の軌道指令を生成する。
【0033】
S203で、指令生成部102は、対象ロボットの全ての軸について、軌道指令の生成が完了したか確認する。対象ロボットの全ての軸について軌道指令の生成が完了していない場合には、S204の処理を実行し、完了している場合には、S205の処理を実行する。
【0034】
S204で、指令生成部102は、対象ロボットの、次に軌道指令を生成する軸を選択する。S204の処理を実行したら、S202の処理に戻る。
【0035】
S205で、指令生成部102は、全てのロボット109a~109cについて、軌道指令の生成が完了したか確認する。全てのロボット109a~109cについて、軌道指令の生成が完了していない場合には、S206の処理を実行する。
【0036】
S206で、指令生成部102は、次に軌道指令を生成する対象のロボット(次の対象ロボット)を選択する。S206の処理を実行したら、S202の処理に戻る。
【0037】
S205で、指令生成部102は、全てのロボット109a~109cについて軌道指令の生成が完了していると判断した場合には、動作を終了する。
【0038】
図3は、指令補正部103の動作フローの例を示す図である。図3を用いて、指令補正部103の動作を説明する。
【0039】
S301で、指令補正部103は、指令(軌道指令)を補正する対象のロボットとロボットの軸(関節)を選択する。指令補正部103は、ロボット109a~109cのうち、任意のロボットを選択することができ、選択したロボットの任意の軸を選択することができる。以下では、指令を補正する対象のロボット(S301で選択したロボット)を「対象ロボット」と呼ぶ。
【0040】
S302で、指令補正部103は、対象ロボットについて指令実行周期Tと位相αを取得する。指令実行周期Tと位相αは、それぞれ周期計算部104と位相計算部105が算出する。
【0041】
S303で、指令補正部103は、対象ロボットが指令を実行するタイミング(指令実行タイミング)に合わせて軌道指令を補正する。指令補正部103は、例えば、時刻についての軌道指令の値を時刻について補間して、次の指令実行タイミングでの軌道指令の値を求める。そして、指令補正部103は、求めた、次の指令実行タイミングでの軌道指令の値を軌道指令(補正後の軌道指令)とすることで、軌道指令を補正する。
【0042】
対象ロボットの次の指令実行タイミングは、対象ロボットの指令実行周期Tと位相αから求めることができる。従って、指令補正部103は、対象ロボットについて、指令を実行する周期である指令実行周期Tと指令を実行する基準点(始点)である位相αがわかると、次の指令実行タイミングを算出することができる。
【0043】
S304で、指令補正部103は、対象ロボットの全ての軸について、軌道指令の補正が完了したか確認する。対象ロボットの全ての軸について軌道指令の補正が完了していない場合には、S305の処理を実行し、完了している場合には、S306の処理を実行する。
【0044】
S305で、指令補正部103は、対象ロボットの、次に軌道指令を補正する軸を選択する。S305の処理を実行したら、S303の処理に戻る。
【0045】
S306で、指令補正部103は、全てのロボット109a~109cについて、軌道指令の補正が完了したか確認する。全てのロボット109a~109cについて、軌道指令の補正が完了していない場合には、S307の処理を実行する。
【0046】
S307で、指令補正部103は、次に軌道指令を補正するロボット(次の対象ロボット)を選択する。S307の処理を実行したら、S302の処理に戻る。
【0047】
S306で、指令補正部103は、全てのロボット109a~109cについて軌道指令の補正が完了していると判断した場合には、動作を終了する。
【0048】
図4は、周期計算部104と位相計算部105が計算するロボット109a~109cの指令実行周期Tと位相αを示すタイムチャートを示す図である。図4を用いて、指令実行周期Tと位相αについて説明する。
【0049】
図4には、制御装置101がロボット109a~109cに指令を送信するタイミング(指令送信タイミングts)と、ロボット109a~109c(ロボットA~C)がそれぞれ指令を実行するタイミング(指令実行タイミングte)を示している。制御装置101は、ロボット109a~109cのそれぞれに同じタイミング(指令送信タイミングts)で指令を送信する。ロボット109aは、指令実行タイミングteAで指令を実行し、ロボット109bは、指令実行タイミングteBで指令を実行し、ロボット109cは、指令実行タイミングteCで指令を実行する。
【0050】
通信部107a~107cからロボット109a~109cへ指令を送信してから、すなわち制御装置101が指令を送信してから、ロボット109a~109cがそれぞれ指令を実行するまでの時間差(te-ts)を、指令実行時間差Δtと呼ぶ。図4では、ロボット109aの指令実行時間差ΔtをΔtA(=teA-ts)で示し、ロボット109bの指令実行時間差ΔtをΔtB(=teB-ts)で示し、ロボット109cの指令実行時間差ΔtをΔtC(=teC-ts)で示している。
【0051】
図4には、一例として、ロボット109b、109c(ロボットB、C)のそれぞれの指令実行周期Tb、Tcと、ロボット109a、109b(ロボットA、B)のそれぞれの位相αa、αbを示している。指令実行周期Tは、ロボット109a~109cが連続する2つの指令を実行する時間間隔である。位相αは、ロボット109a~109cの指令実行周期Tの基準点(始点)である。
【0052】
図4に示すように、制御装置101がロボット109a~109cのそれぞれに同じタイミング(指令送信タイミングts)で軌道指令を送信しても、ロボット109a~109cは、受信した指令を実行するタイミング(指令実行タイミングteA~teC)が互いに異なっている。
【0053】
ロボット109a~109cは、制御装置101からの指令を受信し、一定時間ごとに軌道指令を実行する。この一定時間(時間間隔)が指令実行周期Tである。
【0054】
また、ロボット109a~109cは、指令実行周期Tが互いに同じでも、指令実行タイミングteが互いに異なっていることがある。これは、ロボット109a~109cにおいて、それぞれの指令実行周期Tの始点が互いに異なっているためである。この指令実行周期Tの始点が位相αである。
【0055】
指令補正部103は、ロボット109a~109cのそれぞれに対して、指令実行周期Tと位相αを用いて次の指令実行タイミングteを算出し、指令生成部102が生成した軌道指令を、算出した次の指令実行タイミングteにおいて実行すべき軌道指令に補正する。指令補正部103は、指令を実行する時間間隔である指令実行周期Tと、指令実行周期Tの始点である位相αとから、次の指令実行タイミングteを算出することができる。
【0056】
なお、周期計算部104と位相計算部105は、制御装置101のキャリブレーションの期間で、各ロボット109a~109c(ロボットA~C)の指令実行周期Tと位相αを取得する。指令補正部103は、制御装置101がロボット109a~109cを制御するロボット制御の期間で、指令生成部102が生成した指令を補正する。
【0057】
図5は、指令補正部103により補正される軌道指令と、指令補正部103が補正した軌道指令の一例を示す図である。図5を用いて、指令補正部103が指令を補正する処理を説明する。指令補正部103は、図3のS303の処理で、対象ロボットの次の指令実行タイミングに合わせて、指令を補正する。
【0058】
図5の左の表は、指令補正部103により補正される軌道指令の例を示している。この軌道指令は、指令生成部102が生成した指令であり、例えば、時刻(基準時刻t0からの時刻)についての軸の位置を示す値で表される。図5には、一例として、ロボット109a(ロボットA)の軸1と軸2と、ロボット109c(ロボットC)の軸10について、それぞれの時刻における角度位置(予め定めた基準位置からの角度)を示している。例えば、ロボットAの軸1は、時刻10msでは20度の位置にあり、時刻20msでは10度の位置にあるという軌道指令の例を、図5の左の表に示している。
【0059】
図5の右の表は、指令補正部103が補正した軌道指令の例を示している。図5には、一例として、ロボットAの軸1と軸2と軸10について、時刻12msにおける角度位置を示している。例えば、ロボットAの軸1は、時刻12msでは18度の位置にあるというように補正された軌道指令の例を、図5の右の表に示している。なお、時刻12msは、次の指令実行タイミングteの例であり、例えば、位相αが基準時刻t0から4msであり、指令実行周期Tが8msである場合に、位相αと指令実行周期Tの和(=4ms+8ms)として得られる。
【0060】
指令補正部103は、例えば、指令生成部102が生成した指令の値を時刻について補間することで、指令生成部102が生成した指令を補正する。指令補正部103は、上述したように、指令実行周期Tと位相αを用いて、次の指令実行タイミングteを算出する。指令補正部103は、次の指令実行タイミングteから、指令生成部102が生成した指令のうちどの2つの時刻(図5の例では時刻10msと20ms)の指令を補間し、どの時刻(図5の例では時刻12ms)における指令(角度位置)を求めるかを決めることができる。すなわち、指令補正部103は、次に実行する動作の指令について、その指令の指令実行タイミングteを指令実行周期Tと位相αを用いて導出し、指令実行タイミングteからその指令がどの2つの時刻の間にあるかを求め、求めた2つの時刻の指令を時刻について補間することで、指令を補正する。
【0061】
指令補正部103は、例えば線形補間やスプライン補間などの任意の補間方法を用いて、指令の値を時刻について補間することで指令を補正し、補正された指令を求めることができる。
【0062】
既に述べたように、ロボット109a~109cは、指令送信タイミングtsが同じでも、指令実行タイミングteA~teCが互いに異なる。ロボット109a~109cにおいて、指令実行タイミングteA~teCを同期させること(一致させること)は、一般に困難である。
【0063】
本実施例では、次の指令実行タイミングteA~teCに合わせて指令を補正することで、指令実行タイミングteA~teCを同期させるのではなく、ロボット109a~109cの動作を同期させる。このため、ロボット109a~109cは、指令実行タイミングteA~teCが互いに異なっていても、互いに一致した動作を実行することができ、動作を同期させることができる。この指令の補正は、ロボット109a~109cの指令実行タイミングteA~teCを基にした補正であるので、ロボット109a~109cの指令実行タイミングteA~teCの差が考慮されており、ロボット109a~109cの動作を同期させることができる補正である。
【0064】
図6は、指令実行時間差Δtと指令実行周期Tと位相αを計算する際に用いる要素を示すタイムチャートを示す図である。図6を用いて、指令実行時間差Δtと、指令実行周期Tと位相αの算出方法について説明する。指令実行時間差Δtは、指令実行時間差取得部106が算出し、指令実行周期Tは、周期計算部104が算出し、位相αは、位相計算部105が算出する。
【0065】
図6には、一例として、ロボット109a(ロボットA)について、指令実行周期Ta、位相αa、指令実行タイミングteA、及び指令実行時間差ΔtAを示している。制御装置101は、ロボット109a~109cに周期的に指令を送信する。制御装置101が1回目に指令を送信してからロボット109a~109cが指令を実行するまでの時間差を指令実行時間差Δt_1と表し、制御装置101が2回目に指令を送信してからロボット109a~109cが指令を実行するまでの時間差を指令実行時間差Δt_2と表す。図6では、ロボット109aについての指令実行時間差Δt_1と指令実行時間差Δt_2が、指令実行時間差ΔtA_1と指令実行時間差ΔtA_2としてそれぞれ表されている。
【0066】
指令実行時間差取得部106は、制御装置101がロボット109a~109cへ指令を送信してから、ロボット109a~109cがそれぞれ指令を実行するまでの時間を取得する。具体的には、指令実行時間差取得部106は、通信部107a~107cから、制御装置101が指令を送信した時刻(指令送信タイミングts)と、ロボット109a~109cが指令を実行した時刻(指令実行タイミングte)を受信し記録する。そして、指令実行時間差取得部106は、これらの時刻の差から指令実行時間差Δt(=te-ts)を算出し、指令実行時間差Δtを周期計算部104と位相計算部105へ出力する。
【0067】
さらに、図6には、制御装置101がロボット109a~109cに指令を送信する周期(指令送信周期command_period)と、予め任意に定めた基準時刻t0と制御装置101の指令送信タイミングtsとの差(指令送信時間差command_diff)を示している。
【0068】
周期計算部104は、例えば、指令送信周期command_periodと指令実行時間差Δt_1と指令実行時間差Δt_2を用いて下記の式(1)に従い、各ロボット109a~109cの指令実行周期Tを算出する。
【0069】
指令実行周期T= command_period
-(Δt_1%(command_period×(Δt_1/command_period)))
+Δt_2 (1)
なお、式(1)は、変数を整数で表した場合(整数型変数で演算をする場合)の例であり、演算子「/」は、商の小数点以下を切り捨てる除算を表し、演算子「%」は、除算の剰余を求める演算を表している。
【0070】
式(1)は、サンプリングに用いる指令送信周期command_periodに対して指令実行周期Tが倍以上異なる場合を加味して構成されており、指令実行時間差Δt_1を指令送信周期command_periodで割った剰余を用いている。なお、制御装置101は、2回目の指令を、指令実行タイミングteが返ってきてから、指令実行周期Tに従って送信する。なお、式(1)において、演算子「/」と「%」で表される演算の分母となる値が0になる場合には、エラーの発生を避けるため、この演算を削除するか分母となる値を1に置き換えた式で計算する。
【0071】
位相計算部105は、例えば指令送信時間差command_diffと指令実行時間差Δt_1と指令実行周期Tを用いて下記の式(2)に従い、各ロボット109a~109cの位相αを算出する。
【0072】
位相α=(command_diff+Δt_1)%T (2)
式(2)は、式(1)と同様に、変数を整数で表した場合の例であり、演算子「%」は、除算の剰余を求める演算を表している。
【0073】
位相αは、指令実行周期Tを用いて算出される。位相計算部105は、周期計算部104が算出した指令実行周期Tを入力して、位相αを算出してもよい。式(2)において、演算子「%」で表される演算の分母となる値が0になる場合には、この演算を削除するか分母となる値を1に置き換えた式で計算する。
【0074】
なお、図5の右の表に示した、補正された軌道指令(時刻12msでの軌道指令)は、command_diffが0msであってcommand_periodが10msである場合の例であり、時刻が(command_diff+command_period)以降の指令実行タイミングteは、位相α(4ms)と指令実行周期T(8ms)の和となる。すなわち、時刻が10ms以降の指令実行タイミングteは、時刻12msである。従って、次の指令実行タイミングteは、制御装置101がロボット109a(ロボットA)に指令を送信するタイミング(10ms)から2ms後のタイミング(12ms)である。
【0075】
図7は、図1に示した通信部107a~107cの動作フローの例を示す図である。図7を用いて、通信部107a~107cの動作を説明する。
【0076】
通信部107a~107cは、ロボットコントローラ108a~108cを介してロボット109a~109cと通信可能であり、ロボット109a~109cへの指令を制御装置101からロボットコントローラ108a~108cに送信する機能と、指令に対するロボット109a~109cの応答などの情報をロボットコントローラ108a~108cから受信する機能を備える。
【0077】
S701で、通信部107a~107cは、通信が制御装置101からの指令の送信か否かを判断する。指令の送信である場合には、S702の処理を実行する。指令の送信でなく、応答を受信する場合には、S704の処理を実行する。
【0078】
S702で、通信部107a~107cは、送信する指令を基にパケットを生成する。
【0079】
S703で、通信部107a~107cは、S702で生成したパケットを送信する。
【0080】
S704で、通信部107a~107cは、ロボットコントローラ108a~108cを介してロボット109a~109cから受信したパケットを取得する。
【0081】
S705で、通信部107a~107cは、S704で取得したパケットを解析し、パケットを解析して得られた情報を指令実行時間差取得部106へ出力する。指令実行時間差取得部106は、通信部107a~107cがロボット109a~109cから得た情報を用いて指令実行時間差Δtを求めることができる。
【0082】
指令実行時間差取得部106は、指令実行時間差Δtを求めるときに、ロボット109a~109cが指令を実行した時間(時刻)を、以下に示す方法などの任意の方法で求めることができる。
【0083】
ロボット109a~109cが指令を実行した時間は、例えば、ロボット109a~109cの動作を伴わずに、ロボット109a~109cからのメッセージを求める方法で求めることができる。この方法は、制御装置101のキャリブレーションの期間において、通信部107a~107cが、ロボット109a~109cに指令を送信してロボット109a~109cが指令を認識したことの応答(メッセージ)を受信したときを、ロボット109a~109cが指令を実行した時間とみなす方法である。ロボット109a~109cは、通信部107a~107cから指令を受信したら、指令を認識したことの応答(メッセージ)を通信部107a~107cに送信する。
【0084】
また、ロボット109a~109cが指令を実行した時間は、例えば、ロボット109a~109cが動作の前に現在の状況をメッセージで返す方法で求めることができる。この方法は、ロボット109a~109cが動作を実行する前に、これから動作を実行するという情報や現在時刻などの任意の情報を現在の状況として送信し、通信部107a~107cがこのような情報を含むメッセージを受信したときを、ロボット109a~109cが指令を実行した時間とみなす方法である。
【0085】
また、ロボット109a~109cが指令を実行した時間は、例えば、ロボット109a~109cが指令を受け取ってから指令を実行するまでの時間差をロボットコントローラ108a~108cが保存しておく方法や、ロボット109a~109cが指令を実行した時刻をロボットコントローラ108a~108cが記録しておく方法でも求めることができる。指令実行時間差取得部106は、ロボットコントローラ108a~108cから、ロボットコントローラ108a~108cが保存した時間差や記録した指令実行時刻を取得することで、ロボット109a~109cが指令を実行した時間を求めることができる。
【0086】
また、指令補正部103は、1回の指令実行周期Tだけ後の指令実行タイミングteを算出してもよく、複数回の指令実行周期Tだけ後の指令実行タイミングteを算出してもよい。すなわち、指令補正部103は、1回または複数回の指令実行周期Tだけ後の指令実行タイミングteを算出し、算出したこの指令実行タイミングteでの指令の値を求めることで指令を補正することができる。なお、ロボットコントローラ108a~108cは、複数の指令実行タイミングteでの指令を受信できるように、複数の指令を保存することができるバッファを備えるのが好ましい。
【0087】
以上説明したように、本実施例による制御装置101は、指令実行タイミングteが互いに異なる複数のロボット109a~109cに対して、ロボット109a~109cの間の指令実行タイミングteの差を吸収して、それぞれのロボット109a~109cの動作を同期させることができる。
【0088】
また、本実施例による制御装置101は、制御対象のロボットが1台の場合にも適用可能である。制御対象のロボットが1台の場合では、指令送信タイミングtsと指令実行タイミングteの差である指令実行時間差Δtを加味して軌道指令を補正することにより、理想の動作と実際の動作の乖離を無くすことができる。
【実施例0089】
図8を参照して、本発明の実施例2による制御装置101について説明する。
【0090】
図8は、本実施例による制御装置101の機能ブロック図である。本実施例による制御装置101は、実施例1による制御装置101(図1)と同様の構成を備えるが、センサ通信部802とセンサ値解析部803を備える点が実施例1による制御装置101と異なる。以下では、本実施例による制御装置101について、実施例1による制御装置101と異なる点を主に説明する。
【0091】
制御装置101の制御対象の機器であるロボット109a~109cは、センサ801を備える。センサ801は、ロボット109a~109cの各軸に設置されており、各軸の動きを記録する任意のセンサで構成することができる。
【0092】
センサ通信部802は、ロボット109a~109cが備えるセンサ801と接続されている。センサ通信部802は、センサ801と通信し、センサ801が記録したセンサ値を取得する。
【0093】
センサ値解析部803は、センサ通信部802からセンサ値を取得し、このセンサ値から、各ロボット109a~109cが指令を実行した時間(時刻)を解析して求め、求めた時間を指令実行時間差取得部106へ出力する。例えば、センサ値解析部803は、センサ値からロボット109a~109cの軸が動いた時刻を求め、この時刻をロボット109a~109cが指令を実行した時間とすることができる。
【0094】
本実施例による制御装置101は、ロボット109a~109cが指令実行時刻を返さない場合や、指令実行時刻の取得方法がロボット109a~109cにより異なる場合でも、より正確にロボット109a~109cが指令を実行した時間(時刻)を取得することができる。
【実施例0095】
図9を参照して、本発明の実施例3による制御装置101について説明する。
【0096】
図9は、本実施例による制御装置101の機能ブロック図である。本実施例による制御装置101は、実施例1による制御装置101(図1)と同様の構成を備えるが、カメラ通信部902と画像解析部903を備える点が実施例1による制御装置101と異なる。以下では、本実施例による制御装置101について、実施例1による制御装置101と異なる点を主に説明する。
【0097】
制御装置101の制御対象の機器であるロボット109a~109cは、カメラ901により撮影される。カメラ901は、ロボット109a~109cを撮影するように設置されている。カメラ901は、ロボット109a~109cの各軸の動きを記録する任意のカメラ、例えば、1000fpsなどの高フレームレートのカメラで構成することができる。本実施例による、機器の制御システムは、カメラ901を備えることができる。
【0098】
カメラ通信部902は、カメラ901と接続されている。カメラ通信部902は、カメラ901と通信し、カメラ901が撮影した画像の情報を取得する。
【0099】
画像解析部903は、カメラ通信部902から画像の情報を取得し、この画像情報から、各ロボット109a~109cが指令を実行した時間(時刻)を解析して求め、求めた時間を指令実行時間差取得部106へ出力する。例えば、画像解析部903は、画像情報からロボット109a~109cの軸が動いた時刻を求め、この時刻をロボット109a~109cが指令を実行した時間とすることができる。
【0100】
本実施例による制御装置101は、ロボット109a~109cが指令実行時刻を返さない場合や、指令実行時刻の取得方法がロボット109a~109cにより異なる場合でも、より正確にロボット109a~109cが指令を実行した時間(時刻)を取得することができる。また、軸が動いた時刻を求めるためにロボット109a~109cにセンサを取り付ける必要がないので、ロボット109a~109cの交換や修理を容易に実施できる。
【実施例0101】
図10図11を参照して、本発明の実施例4による制御装置101について説明する。
【0102】
図10は、本実施例による制御装置101の機能ブロック図である。本実施例による制御装置101は、実施例1による制御装置101(図1)と同様の構成を備えるが、算出値更新部1001を備える点が実施例1による制御装置101と異なる。以下では、本実施例による制御装置101について、実施例1による制御装置101と異なる点を主に説明する。
【0103】
図11は、算出値更新部1001の機能ブロック図である。算出値更新部1001は、周期保持部1101と、位相保持部1102と、カウンタ1103と、中央値計算部1104を備える。
【0104】
周期保持部1101は、周期計算部104が算出した、各ロボット109a~109cの指令実行周期Tを保持する。周期計算部104は、制御装置101が指令を送信するたびに指令実行周期Tを算出する。周期保持部1101は、このようにして周期計算部104が複数回算出した指令実行周期T、すなわち複数の指令実行周期Tを保持している。
【0105】
位相保持部1102は、位相計算部105が算出した、各ロボット109a~109cの位相αを保持する。位相計算部105は、制御装置101が指令を送信するたびに位相αを算出する。位相保持部1102は、このようにして位相計算部105が複数回算出した位相α、すなわち複数の位相αを保持している。
【0106】
カウンタ1103は、周期計算部104が指令実行周期Tを算出した回数と、位相計算部105が位相αを算出した回数を記録する。すなわち、カウンタ1103は、周期保持部1101が保持する指令実行周期Tの数と、位相保持部1102が保持する位相αの数を記録する。カウンタ1103は、指令実行周期Tと位相αの数が予め定めた一定回数に到達したら、すなわち制御装置101がロボット109a~109cと予め定めた一定回数だけ通信したら、この旨の通知を中央値計算部1104へ送信し、記録した指令実行周期Tと位相αの数をクリアする。カウンタ1103は、指令実行周期Tと位相αの数が一定回数に到達するごとに、すなわち制御装置101がロボット109a~109cと一定回数だけ通信するごとに、中央値計算部1104へ上記の通知を送信する。
【0107】
中央値計算部1104は、カウンタ1103から通知を受けたら、指令実行周期Tと位相αの中央値を算出する。すなわち、中央値計算部1104は、カウンタ1103から通知を受けたら、周期保持部1101が保持する複数の指令実行周期Tを周期保持部1101から受け取るとともに、位相保持部1102が保持する複数の位相αを位相保持部1102から受け取り、複数の指令実行周期Tの中央値と複数の位相αの中央値を算出する。そして、中央値計算部1104は、算出した指令実行周期Tの中央値と位相αの中央値を指令補正部103へ出力する。
【0108】
中央値計算部1104は、指令実行周期Tと位相αの両方の中央値ではなく、いずれかう一方の中央値を算出し、指令補正部103へ出力してもよい。また、中央値計算部1104は、指令実行周期Tと位相αの中央値ではなく、指令実行周期Tと位相αの平均値を算出し、指令補正部103へ出力してもよい。
【0109】
本実施例による制御装置101では、算出値更新部1001は、制御装置101がロボット109a~109cと予め定めた一定回数だけ通信するごとに、指令実行周期Tと位相αの中央値(または平均値)を算出する。指令補正部103は、算出値更新部1001から受け取った指令実行周期Tと位相αを用いて、指令生成部102が生成した指令を補正する。すなわち、指令補正部103は、制御装置101がロボット109a~109cと予め定めた一定回数だけ通信するごとに、補正に用いる指令実行周期Tと位相αを更新することで、指令の補正値を定期的に更新する。
【0110】
本実施例による制御装置101は、以上説明したように指令の補正を一定の通信回数ごとに更新することで、ロボット109a~109c(またはロボットコントローラ108a~108c)のタイマに時刻のずれが生じても、ロボット109a~109cに理想通りの動作を継続的に実施させることができる。
【0111】
なお、本発明は、上記の実施例に限定されるものではなく、様々な変形が可能である。例えば、上記の実施例は、本発明を分かりやすく説明するために詳細に説明したものであり、本発明は、必ずしも説明した全ての構成を備える態様に限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能である。また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、削除したり、他の構成を追加・置換したりすることが可能である。
【符号の説明】
【0112】
101…制御装置、102…指令生成部、103…指令補正部、104…周期計算部、105…位相計算部、106…指令実行時間差取得部、107a~107c…通信部、108a~108c…ロボットコントローラ、109a~109c…ロボット、801…センサ、802…センサ通信部、803…センサ値解析部、901…カメラ、902…カメラ通信部、903…画像解析部、1001…算出値更新部、1101…周期保持部、1102…位相保持部、1103…カウンタ、1104…中央値計算部、t0…基準時刻、ts…指令送信タイミング、te、teA~teC…指令実行タイミング、T、Ta、Tb、Tc…指令実行周期、Δt、Δt_1、Δt_2、ΔtA、ΔtA_1、ΔtA_2、ΔtB、ΔtC…指令実行時間差、α、αa、αb…位相、command_period…指令送信周期、command_diff…指令送信時間差。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11