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

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

▶ 株式会社日立産機システムの特許一覧

特開2024-135703コントロールシステム及びコントロール方法
<>
  • 特開-コントロールシステム及びコントロール方法 図1
  • 特開-コントロールシステム及びコントロール方法 図2
  • 特開-コントロールシステム及びコントロール方法 図3
  • 特開-コントロールシステム及びコントロール方法 図4
  • 特開-コントロールシステム及びコントロール方法 図5
  • 特開-コントロールシステム及びコントロール方法 図6
  • 特開-コントロールシステム及びコントロール方法 図7
  • 特開-コントロールシステム及びコントロール方法 図8
  • 特開-コントロールシステム及びコントロール方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024135703
(43)【公開日】2024-10-04
(54)【発明の名称】コントロールシステム及びコントロール方法
(51)【国際特許分類】
   G05B 19/05 20060101AFI20240927BHJP
【FI】
G05B19/05 F
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023046516
(22)【出願日】2023-03-23
(71)【出願人】
【識別番号】502129933
【氏名又は名称】株式会社日立産機システム
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】今井 光洋
(72)【発明者】
【氏名】松田 有司
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220AA04
5H220BB09
5H220CC06
5H220CX01
5H220HH08
5H220JJ12
5H220JJ16
5H220JJ26
(57)【要約】
【課題】非リアルタイム通信において被制御装置を精度良く制御する。
【解決手段】システムは、被制御装置に関する検出値をリアルタイム通信において取得し、被制御装置に対する指令値の補正処理を行い、非リアルタイム通信において、補正後の指令値を有する制御リクエストを被制御装置に送信し戻り値を含む応答を受信する。各制御リクエストについて、補正処理は、時刻と戻り値との第1の組と、時刻と検出値との第2の組と、時刻と指令値との第3の組とに基づき、第3の組における指令値の補正後の指令値を出力する処理であり、当該補正処理において、第2の組における時刻は、当該制御リクエストが送信される送信時刻と非リアルタイム通信に関し予め計測された応答時間とに基づき決定された時刻である補正後時刻である。
【選択図】図2
【特許請求の範囲】
【請求項1】
被制御装置を制御するコントロールシステムであって、
一つ又は複数のインターフェース装置と、
一つ又は複数のプロセッサと
を備え、
前記一つ又は複数のプロセッサは、
(X)繰り返し、前記被制御装置に関する検出値を取得する取得リクエストを生成し、前記インターフェース装置を通じてリアルタイム通信において当該取得リクエストを送信し、前記検出値を表す検出データを当該取得リクエストに対する応答として前記インターフェース装置を通じて受信し、
(Y)繰り返し、前記被制御装置に対する指令値の補正処理を行い、補正後の指令値を有する制御リクエストを生成し、前記インターフェース装置を通じて非リアルタイム通信において当該制御リクエストを送信し、当該制御リクエストが有する指令値に対する戻り値を表す制御結果データを前記インターフェース装置を通じて受信し、
各制御リクエストについて、
前記補正処理は、時刻と戻り値との第1の組と、時刻と検出値との第2の組と、時刻と指令値との第3の組とに基づき、前記第3の組における指令値の補正後の指令値を出力する処理であり、
前記補正処理において、前記第2の組における時刻は、当該制御リクエストが送信される送信時刻と前記非リアルタイム通信に関し予め計測された応答時間とに基づき決定された時刻である補正後時刻である、
コントロールシステム。
【請求項2】
前記予め計測された応答時間は、計測開始時刻と実動作時刻との差分であり、
前記計測開始時刻は、前記非リアルタイム通信での制御リクエストの送信時刻であり、
前記実動作時刻は、当該制御リクエストに応答して動作した前記被制御装置の検出値が変化したことが特定された時刻である、
請求項1に記載のコントロールシステム。
【請求項3】
第1の演算装置と第2の演算装置とを含む複数の演算装置を備えた分散コントロールシステムであり、
前記一つ又は複数のプロセッサは、
少なくとも(X)を行う第1のプロセッサと、
(Y)のうち少なくとも前記補正処理を行う第2のプロセッサと
を含み、
前記第1の演算装置が、前記第1のプロセッサを備え、
前記第2の演算装置が、前記第2のプロセッサを備える、
請求項2に記載のコントロールシステム。
【請求項4】
前記補正処理は、前記第1の組、前記第2の組及び前記第3の組を入力とし補正後の指令値を出力とする機械学習モデルを用いた処理である、
請求項3に記載のコントロールシステム。
【請求項5】
前記第1のプロセッサが、前記応答時間を予め計測し、当該計測された応答時間を表すデータである時間共有データを、前記第2の演算装置に送信し、
前記第2のプロセッサが行う前記補正処理において、前記補正後時刻の基になる応答時間は、前記時間共有データが表す応答時間である、
請求項3に記載のコントロールシステム。
【請求項6】
前記被制御装置は、ロボットであり、
前記第2のプロセッサが、(Y)を行い、
前記第1のプロセッサが、ロボットとは別の被制御装置をスキャンタイム制御することを含む制御処理を行い、
(X)は、前記制御処理に含まれる又は前記制御処理とは別である、
請求項3に記載のコントロールシステム。
【請求項7】
前記補正処理は、前記第1の組、前記第2の組及び前記第3の組を入力とし補正後の指令値を出力とする機械学習モデルを用いた処理である、
請求項1に記載のコントロールシステム。
【請求項8】
コンピュータが、繰り返し、被制御装置に関する検出値を取得する取得リクエストを生成し、リアルタイム通信において当該取得リクエストを送信し、前記検出値を表す検出データを当該取得リクエストに対する応答として受信し、
コンピュータが、繰り返し、前記被制御装置に対する指令値の補正処理を行い、補正後の指令値を有する制御リクエストを生成し、非リアルタイム通信において当該制御リクエストを送信し、当該制御リクエストが有する指令値に対する戻り値を表す制御結果データを受信し、
各制御リクエストについて、
前記補正処理は、時刻と戻り値との第1の組と、時刻と検出値との第2の組と、時刻と指令値との第3の組とに基づき、前記第3の組における指令値の補正後の指令値を出力する処理であり、
前記補正処理において、前記第2の組における時刻は、当該制御リクエストが送信される送信時刻と前記非リアルタイム通信に関し予め計測された応答時間とに基づき決定された時刻である補正後時刻である、
コントロール方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、被制御装置の制御に関する。
【背景技術】
【0002】
被制御装置を精度良く制御するためには時刻の管理が必要である。時刻の管理に関し、例えば、特許文献1乃至3の技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】WO2014/108999
【特許文献2】JP2014-225112
【特許文献3】JP2012-134895
【発明の概要】
【発明が解決しようとする課題】
【0004】
被制御装置に関する検出値を基に被制御装置に対する制御リクエストを生成し、当該制御リクエストを被制御装置に送信するコントロールシステムが知られている。
【0005】
被制御装置に制御リクエストを送信するためのプログラムの実行環境(例えばOS(Operating System))又はその他の理由により、制御リクエストの送信のための通信として、非リアルタイム通信が採用されることがある。「非リアルタイム通信」とは、応答時間が比較的長い通信、例えば、UDP(User Datagram Protocol)/IP(Internet Protocol)での通信やシリアル通信である。非リアルタイム通信は、第1の応答時間を提供する第1の通信の一例でよい。なお、非リアルタイム通信に対し、「リアルタイム通信」とは、応答時間が比較的短い通信(例えば、仕様において応答時間の最大値が定められている通信)、例えば、EtherCAT(登録商標)での通信である。リアルタイム通信は、第1の応答時間よりも短い第2の応答時間(例えば、仕様において定められた応答時間最大値以下の応答時間)を提供する第2の通信の一例でよい。
【0006】
被制御装置は、コントロールシステムからの制御リクエストに従い動作するが、その動作により、被制御装置に関する検出値に変化が生じ得る。このため、コントロールシステムにとって、被制御装置に関する検出値が発生した時刻である検出時刻は、制御リクエストの送信時刻から当該制御リクエストの応答の受信時刻までのいずれかである。
【0007】
非リアルタイム通信においてコントロールシステムが検出時刻を特定することはできず、故に、非リアルタイム通信において被制御装置を精度良く制御することは困難である。
【課題を解決するための手段】
【0008】
コントロールシステムは、繰り返し、被制御装置に関する検出値を取得する取得リクエストを生成し、リアルタイム通信において当該取得リクエストを送信し、検出値を表す検出データを当該取得リクエストに対する応答として受信する。また、コントロールシステムは、繰り返し、被制御装置に対する指令値の補正処理を行い、補正後の指令値を有する制御リクエストを生成し、非リアルタイム通信において当該制御リクエストを送信し、当該制御リクエストが有する指令値に対する戻り値を表す制御結果データを受信する。各制御リクエストについて、補正処理は、時刻と戻り値との第1の組と、時刻と検出値との第2の組と、時刻と指令値との第3の組とに基づき、第3の組における指令値の補正後の指令値を出力する処理であり、当該補正処理において、第2の組における時刻は、当該制御リクエストが送信される送信時刻と非リアルタイム通信に関し予め計測された応答時間とに基づき決定された時刻である補正後時刻である。
【発明の効果】
【0009】
本発明によれば、非リアルタイム通信において被制御装置を精度良く制御することができる。
【図面の簡単な説明】
【0010】
図1】実施形態に係るコントロールシステムを含むシステムの物理構成の一例を示す。
図2】コントロール装置による加工機の制御と拡張装置によるロボットの制御とを模式的に示す。
図3】非リアルタイム通信における応答時間の事前計測方法の一例を模式的に示す。
図4】応答時間テーブルの一例を示す。
図5】時間共有データの一例を示す。
図6】ロボット制御処理の流れを示す。
図7】補正モデルの学習の一例を示す。
図8】S602の補正処理を模式的に示す。
図9】変形例に係るコントロールシステムの構成の一例を示す。
【発明を実施するための形態】
【0011】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、一つ以上の同種の通信インターフェースデバイスであってもよいし二つ以上の異種の通信インターフェースデバイスであってもよい。
【0012】
また、以下の説明では、「メモリ」は、一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0013】
また、以下の説明では、「永続記憶装置」は、一つ以上の永続記憶デバイスである。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)であり、具体的には、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
【0014】
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
【0015】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0016】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置等を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【0017】
また、以下の説明では、「yyy部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【0018】
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【0019】
また、以下の説明では、識別情報の一例として、ID、名前及び番号のいずれかが採用されるが、識別情報は、ID、名前及び番号のうちの少なくとも一つに代えて又は加えて、他種の要素を含んでもよい。
【0020】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通部分を使用し、同種の要素を区別して説明する場合には、参照符号を使用することがある。
【0021】
図1は、実施形態に係るコントロールシステムを含むシステムの物理構成の一例を示す。
【0022】
コントロールシステム109が、被制御装置がある工場10に設置される。被制御装置は、例えば、セットされたワークを加工する加工機119や、加工機119にワークをセットするロボット120である。工場10は、被制御装置のある現場の一例である。
【0023】
コントロールシステム109は、例えば、工場10内の通信ネットワーク19(例えば、LAN(Local Area Network))に接続されている。通信ネットワーク19は、非リアルタイム通信に使用される通信ネットワークの一例である。
【0024】
コントロールシステム109、加工機119、及び、ロボット120に設けられたセンサ12が、通信ネットワーク118(例えば、イーサネット(登録商標))に接続されている。通信ネットワーク118は、リアルタイム通信に使用される通信ネットワークの一例である。
【0025】
コントロールシステム109は、一つ又は複数の演算装置40を備える。各演算装置40が、インターフェース装置、記憶装置及びそれらに接続されたプロセッサを備える。全ての演算装置40は、ハードウェア構成が同じでも異なっていてもよい。本実施形態では、演算装置40Mは、メインの演算装置である。演算装置40E1及び40E2の各々が、増設された演算装置である。演算装置40Eは、減設されてもよい。言い換えれば、演算装置40M単体が、コントロールシステム109になることがあってもよい。以下、演算装置40Mを「コントロール装置40M」と言い、演算装置40Eを「拡張装置40E」と言うことがある。
【0026】
システム構成は、拡張装置40Eの有無、及び、コントロール装置40M及び拡張装置40Eの各々が接続される通信媒体の種類に依存する。図1の例では、拡張装置40E1は、通信ネットワーク118に接続される。拡張装置40E2は、PIOバス28(バスの一例)に接続される(「PIO」は、Programmed I/Oの略である)。PIOバス28は、ベースボードにプリントされたバスでよく、ベースボードにコントロール装置40Mと拡張装置40E2が接続されていることで、コントロール装置40Mと拡張装置40E2がPIOバス28経由でデータを通信してよい。
【0027】
以上のように、コントロールシステム109は、少なくとも一つのコントロール装置40Mを含む。コントロール装置40Mは、制御アプリは、周期的にスキャン処理を行う。「スキャン処理」は、I/O(Input/Output)ポートに接続された機器(例えば被制御装置)の情報を読み込むことと、読み込んだ情報を演算することと、演算した情報を書き込むこととを含んだ処理でよい。スキャン処理は、制御処理の一例でよい。
【0028】
コントロール装置40Mを例に取り演算装置40のハードウェア構成を説明すると、例えば次の通りである。すなわち、コントロール装置40Mは、メモリ169(例えば、EPROM208及びメインメモリ210)、周辺制御装置212、I/O制御装置214、不揮発性記憶装置215、ネットワークI/F装置213、及び、それらに接続されたプロセッサ209を備えている。I/O制御装置214及びネットワークI/F装置213が、インターフェース装置の一例である。メモリ169及び不揮発性記憶装置215が、記憶装置の一例である。
【0029】
周辺制御装置212は、ネットワークI/F装置213、I/O制御装置214、不揮発性記憶装置215及びバス211に接続されている。このバス211には、その他にもメモリ169及びプロセッサ209が接続されている。
【0030】
EPROM208には、予プログラム配布サーバ(図示せず)のようなプログラムソースからダウンロードされたプログラムが格納されてもよい。
【0031】
プロセッサ209は、EPROM208に格納されているプログラムをメインメモリ210に読み出して実行し、プログラムの動作を制御する。例えば、プロセッサ209は、I/O制御装置214を介して、加工機119を制御したり、センサ12から検出データを取得したりする。また、例えば、プロセッサ209は、ネットワークI/F装置213を介して(又は他の方法により)、ロボット120を制御する拡張装置40Eと通信する。
【0032】
図2は、コントロール装置40Mによる加工機119の制御と拡張装置40Eによるロボット120の制御とを模式的に示す。
【0033】
コントロール装置40Mのプロセッサ209Mが複数のコンピュータプログラムを実行することで、コントロール装置40Mにおいて、OS211Mが実行され、また、OS211M上に、時刻同期部260M、応答時間計測部252及び制御部251といった機能が実現される。制御部251やその他機能の動作は、OS211M(或いは、ランタイムソフトウェア)により制御されてよい。OS211Mは、リアルタイムOS、例えば、リアルタイム汎用OS(情報処理向けの汎用OSの系統ではあるものの必要とされるリアルタイム性を提供できるリアルタイム機能を持ったOS)でよい。
【0034】
時刻同期部260Mは、他の各演算装置40の時刻同期部と通信し、コントロール装置40Mと他の各演算装置40との現在時刻を同期させる。つまり、各演算装置40において、管理されている現在時刻は同じである。
【0035】
応答時間計測部252は、非リアルタイム通信での応答時間を計測し、計測された応答時間を表す応答時間テーブル280を生成し、応答時間テーブル280をメモリ169に格納する。
【0036】
制御部251は、コントロールサイクルで加工機119を制御することを含む制御処理を行う。制御部251は、例えば、PLC(Programmable Logic Controller)としての機能を有し、シーケンス制御としての上記制御処理を行う。
【0037】
制御部251は、応答時間テーブル280に基づく時間共有データ281(事前計測された応答時間を表すデータ)を生成し、時間共有データ281を他の各演算装置40に送信する。
【0038】
拡張装置40Eのプロセッサ209Eが複数のコンピュータプログラムを実行することで、拡張装置40Eにおいて、OS211Eが実行され、また、OS211E上に、時刻同期部260E、RT補正部271及びロボット制御部272といった機能が実現される(「RT」は、リアルタイムの略である)。OS211Eは、OS211Mと同じでもよいが異なるOSでよい。例えば、OS211Eは、ROS(Robot Operating System)でよい。
【0039】
時刻同期部260Eは、他の各演算装置40の時刻同期部と通信し、この演算装置40Eと他の各演算装置40との現在時刻を同期させる。
【0040】
RT補正部271は、ロボット制御部272が送信する制御リクエストで指定される指令値を補正する。補正は、モデルベースで実行、具体的には、機械学習モデルである補正モデル290を用いて行われる。補正は、モデルベース以外の方法、例えばルールベースで実行されてもよい。
【0041】
ロボット制御部272は、ロボット120を制御する。ロボット制御部272は、ロボット120の制御のために、指令値を指定した制御リクエストをロボット120に送信する。
【0042】
制御部251は、予め定められたシーケンスに従い周期的に処理を実行する。各サイクル(例えば、サイクルタイム(スキャンタイムと呼ばれてもよい))において、当該処理は、センサ12の検出値を取得する取得リクエストを生成し、当該取得リクエストを送信し、当該検出値を表す検出データを当該取得リクエストに対する応答として受信することを含む。周期的に行われる当該処理は、受信した検出データを拡張装置40E(ロボット制御部272)に送信することを含んでよい。取得リクエストの送信と検出データの受信は、リアルタイム通信(例えば、I/O制御装置214及び通信ネットワーク118経由の通信)において行われる。例えば、ロボット120は、アームと、複数のサーボモータを有しており、センサ12は、ロボット120のアームに取り付けられた力覚センサでよい。検出データは、各サーボモータの回転軸角度を含んでよい。「リアルタイム通信」とは、応答時間が比較的短い通信(例えば、仕様において応答時間の最大値が定められている通信)、例えば、EtherCAT(登録商標)での通信である。
【0043】
ロボット制御部272は、制御部251からの指示に従い(又は、制御部251からの指示無しに所定のタイミングで)、繰り返し、ロボット制御処理を行う。ロボット制御処理は、ロボット120に対する指令値の補正処理を行い、補正後の指令値を有する制御リクエストを生成し、当該制御リクエストを送信し、当該制御リクエストが有する指令値に対する戻り値を表す制御結果データを受信することを含む。ロボット制御部272が行う制御は、PTP(Point-To-Point Control又はPose-To-Pose Control)制御でよい。従って、指令値は、ロボット120の部位の位置(例えば、関節角)を表すデータでよい。制御リクエストの送信と制御結果データの受信は、非リアルタイム通信(例えば、ネットワークI/F装置213及び通信ネットワーク19経由の通信)において行われる。「非リアルタイム通信」とは、応答時間が比較的長い通信、例えば、UDP/IPでの通信やシリアル通信である。
【0044】
ロボット120は、ロボット制御部272からの制御リクエストに従い動作するが、その動作により、ロボット120のセンサ12の検出値に変化が生じ得る。制御リクエストに応答して行われる制御(ロボット動作)において検出値(検出値変化)が発生した時刻(検出時刻)は、制御リクエストの送信時刻から当該制御リクエストの応答の受信時刻までのいずれかである。非リアルタイム通信での応答時間(送信時刻と受信時刻との間の時間)は、リアルタイム通信での応答時間に比べて長い。しかし、ロボット制御のための通信としては、OS211E(例えばROS)の都合又はその他の理由により、非リアルタイム通信が採用される。
【0045】
センサ12の検出データの収集は、拡張装置40Eにより行われてもよいが、非リアルタイム通信での収集は、検出時刻と検出データの受信時刻とのずれが比較的大きいおそれがある。また、センサ12の検出データの収集は、PLCとしての機能を有する制御部251の周期的な処理においてされる方が正確であることが期待される。
【0046】
非リアルタイム通信での応答時間とリアルタイム通信での応答時間は異なる。具体的には、例えば、リアルタイム通信では、検出データの受信時刻と検出時刻(検出値(検出値変化)の発生時刻)との差は小さいが(例えば、受信時刻を検出時刻とみなすことができるほどにその差は小さいが)、非リアルタイム通信では、検出時刻と制御結果データの受信時刻との差は大きい。このように異なる分解能の時間のデータを制御や制御のための補正に使用すると、制御の精度が低下するおそれがある。
【0047】
そこで、本実施形態では、検出データの収集は、制御部251がリアルタイム通信により行い、制御部251が、検出データを、ロボット制御部272に提供する。検出データの装置40M及び40E間の通信は、リアルタイム通信に利用されるインターフェース及びネットワーク(例えばI/O制御装置214及び通信ネットワーク118)を通じて行われてよい。
【0048】
また、非リアルタイム通信での送信時刻(制御リクエストの送信時刻)と検出時刻(当該制御リクエストに従う制御に伴い発生した検出値(検出値変化)の発生時刻)との差分としての応答時間が、事前に計測され、事前計測された応答時間を基に、制御リクエストで指定される指令値の補正処理が実施される。
【0049】
図3は、非リアルタイム通信における応答時間の事前計測方法の一例を模式的に示す。
【0050】
コントロール装置40Mの応答時間計測部252が、非リアルタイム通信において、制御リクエストを送信し、その制御リクエストに従い制御された被制御装置319から応答(制御結果データを有する応答)を受信する。制御リクエストの送信時刻を「T0」とし、当該制御リクエストの応答の受信時刻を「T1」とする。被制御装置319は、ロボット120でもよいし他の装置でもよい。
【0051】
被制御装置319にセンサ302が設けられている。センサ302は、ロボット120に設けられたセンサ12でもよいし他のセンサでもよい。
【0052】
被制御装置319は、制御リクエストの受信から応答を送信するまでの間に当該制御リクエストに従い動作するが、その動作に伴いセンサ302に検出値(検出値変化)が生じる。
【0053】
そこで、コントロール装置40Mに、センサ302からアナログ信号を受信するアナログI/O装置301が備えられる。センサ302からの信号(検出データ)は、アナログI/O装置301が受信することに代えて、他のインターフェース装置が受信してよいし、また、信号は、デジタル信号(デジタルデータ)でもよい。事前計測において、センサ302とコントロール装置40M間の通信は、検出時刻(センサ302での検出値発生の時刻)と受信時刻(検出データの受信時刻)との差がそれらの時刻が実質的に同じとみなせるほどに小さい通信である。この通信は、検出データの収集に使用されるリアルタイム通信と同じリアルタイム通信でもよいし異なるリアルタイム通信でもよい。検出データの受信時刻(≒検出時刻)を「T2」とする。T2は、具体的には、アナログI/O装置301が検出値(検出値変化)を表すアナログ信号を受信した時刻(コントロール装置40Mが当該アナログ信号の受信を検知した時刻)でよい。
【0054】
応答時間計測部252は、T2-T0を計算し、計算された値(時間)を、非リアルタイム通信での応答時間として計測する。
【0055】
図4は、応答時間テーブル280の一例を示す。
【0056】
応答時間計測部252は、検出データを出力する機器毎に、機器IDと応答時間とを表す。例えば、応答時間計測部252は、センサ302(センサ12)から検出データをコントロール装置40Mが受信した場合、機器IDとしてセンサ302(センサ12)のID“センサA”を応答時間テーブル280に記録し、計算された値“0.234567”を応答時間として応答時間テーブル280に記録する。
【0057】
図5は、時間共有データ281の一例を示す。
【0058】
制御部251が、応答時間テーブル280に基づく時間共有データ281を生成し、時間共有データ281を他の各演算装置40に送信する。時間共有データ281は、送信時刻(ロボット制御部272が制御リクエストを送信する時刻)、データ(センサ12の検出データを意味する値)、及び、応答時間(応答時間テーブル280に記録されている応答時間、つまり、事前計測された応答時間)を表す。
【0059】
以下、本実施形態で行われる処理の例を説明する。
【0060】
本実施形態において、ロボット制御は、予め計画された(定められた)制御である。例えば、どの時刻においてロボット120のアームがどの位置にあるかが予め計画されており、その計画に沿って行われる。具体的には、例えば、ロボット制御として、制御リクエストの送信時刻毎にその制御リクエストで指定される指令値が予め定められている。従って、ロボット制御では、定められた送信時刻に、定められた指令値を指定した制御リクエストが送信されるようになっている。
【0061】
しかし、一般に、計画された通りに実際にロボットを制御することは容易ではない。そのため、本実施形態では、センサ12の検出値を基に、適宜、計画されている指令値が補正され、補正された指令値が、制御リクエストで指定される。
【0062】
また、ロボット制御は、コントロール装置40Mの制御部251から拡張装置40Eのロボット制御部272への指示に応答して開始されてよい。ロボット制御の開始後、ロボット制御に関する各サイクルでの制御リクエストの送信は、予め定められた計画に沿ってロボット制御部272により能動的に行われてもよいし、予め定められた計画に沿って制御部251がサイクルの都度にロボット制御部272に指示を送信しその指示に応答して行われてもよい。
【0063】
図6は、ロボット制御処理の流れを示す。
【0064】
ロボット制御処理は、S601~S605を含み、図示の通り、本実施形態では繰り返し行われる。ロボット制御処理は、コントロール装置40Mの制御部251からの指示に従って、又は、予め定められた所定のタイミングで、開始される。
【0065】
S601で、ロボット制御部272は、データを読み出す。ここで読み出されるデータは、補正処理に必要なデータ、具体的には、下記を含むデータである。下記は、メモリ169に格納されており、メモリ169から読み出される。
・最近(直前回のサイクル)でロボット制御部272により送信された制御リクエストについて受信された処理結果データが表す戻り値。
・最新の検出データ(制御部251から最近受信し格納された検出データ)が表す検出値。
・今回の送信時刻(今回送信される制御リクエストの送信時刻)が記録されている時間共有データ281。
・今回の送信時刻について計画されている指令値。
【0066】
例えば、ロボット制御の各サイクルにおいて、処理結果データは、ロボット制御部272によりメモリ169に格納される。また、例えば、検出データは、ロボット制御の各サイクルの開始と同じ又は異なるタイミングで制御部251により繰り返し(例えば周期的に)取得されてロボット制御部272に転送され、周期的に取得された検出データがロボット制御部272によりメモリ169に格納されてよい。また、送信時刻毎の計画されている指令値を表すデータがメモリ169に予め格納されていてよいし、或いは、各送信時刻について制御部251からロボット制御部272が計画されている指令値を受信し、送信時刻とその計画されている指令値とをメモリ169に格納してよい。
【0067】
S602で、ロボット制御部272は、RT補正部271に、補正処理を実行させる。具体的には、例えば、RT補正部271は、S601で読み出されたデータの一部である時間共有データ281から、送信時刻と応答時間を特定し、送信時刻に応答時間を加えた時刻である補正後時刻を算出する。RT補正部271は、時刻と戻り値との第1の組と、時刻と検出値との第2の組と、時刻と指令値との第3の組とに基づき、第3の組における指令値の補正後の指令値を出力する(この補正処理の詳細は図8を用いて後に説明する)。
【0068】
S603で、ロボット制御部272は、補正後の指令値を指定した制御リクエストを生成し、非リアルタイム通信において、今回の送信時刻(時間共有データ281に記録されている送信時刻)で当該制御リクエストをロボット120に送信する。
【0069】
S604で、ロボット制御部272は、非リアルタイム通信において、S603で送信された制御リクエストに対する応答(その制御リクエストに従う制御の結果としての戻り値(例えば位置情報)を有する制御結果データを含んだ応答)を受信する。
【0070】
S605で、ロボット制御部272は、S604で受信した応答が有する戻り値をメモリ169に格納する。
【0071】
S606で、ロボット制御部272は、ロボット制御が終了したか否か(例えば最後のサイクルのロボット制御処理を終えたか否か)を判定する。S606の判定結果が真の場合(S606:Yes)、処理が終了する。
【0072】
S606の判定結果が偽の場合(S606:No)、ロボット制御部272は、次の制御の開始か否かを判定する(S607)。具体的には、例えば、ロボット制御部272は、現在時刻が予め計画された次の時刻になったか否か、又は、次の制御リクエストの送信の指示(例えば、次の送信時刻と応答時間が記録された時間共有データ281をコントロール装置40Mの制御部251から受信したか否か)を判定する。S607の判定結果が偽の場合(S607:No)、一定時間経過後に処理がS607に戻る。S607の判定結果が真の場合(S607:Yes)、処理がS601に戻る。
【0073】
図7は、補正モデル290の学習の一例を示す。
【0074】
補正モデル290の学習は例えば教師あり学習である。教師データセットが、ワーク挿入角度と加工機軸をずらした場合(挿入角度とずれ量を変更)の力のかかり方との多くのパターンを表すデータを含む。具体的には、例えば、教師データセットが、第1の組(時刻と戻り値の組)と第2の組(時刻と検出値の組)と第3の組(時刻と指令値の組)と補正後指令値との組合せを多く含んでおり、その教師データセットを用いて補正モデル290が学習される。なお、第1の組~第3の組の各々における時刻は、適切な時刻として定義された時刻である。例えば、第2の組における時刻は、第1の組又は第3の組における時刻に事前計測された応答時間(非リアルタイム通信での応答時間)が加算された時刻でよい。より具体的には、教師データセットは、時系列の第1の組(例えば、送信時刻と戻り値(例えば各関節角)との時系列データ)、時系列の第2の組(例えば、検出時刻と検出値(例えば力覚センサ読み取り値)との時系列データ)、及び、時系列の第3の組(例えば、送信時刻と計画された指令値(各関節角)との時系列データ)を含んだデータセットでよい。
【0075】
図8は、S602の補正処理を模式的に示す。
【0076】
RT補正部271は、上述したように、時刻と戻り値との第1の組と、時刻と検出値との第2の組と、時刻と指令値との第3の組とに基づき、第3の組における指令値の補正後の指令値を出力する。具体的には、RT補正部271は、第1の組、第2の組及び第3の組を補正モデル290に入力し補正後指令値の出力を得る。
【0077】
補正モデル290に入力される第1の組において、戻り値は、S601で読み出された戻り値であり、時刻は、今回の送信時刻(又は前回の送信時刻)である。
【0078】
補正モデル290に入力される第2の組において、検出値は、S601で読み出された検出値であり、時刻は、補正後時刻(今回の送信時刻に時間共有データ281が表す応答時間を加えた時刻)である。
【0079】
補正モデル290に入力される第3の組において、指令値は、S601で読み出された指令値であり、時刻は、今回の送信時刻である。
【0080】
以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。
【0081】
例えば、以上の説明を、下記のように総括することができる。下記の総括は、上記の補足説明や変形例の説明を含んでよい。
【0082】
コントロールシステム109は、一つ又は複数のインターフェース装置(例えば、各演算装置40のI/O制御装置214及び/又はネットワークI/F装置213)と、一つ又は複数のプロセッサ(例えば、プロセッサ209M及び/又は209E)とを備える。
【0083】
一つ又は複数のプロセッサは、下記(X)及び(Y)を行う。
(X)繰り返し、ロボット120(被制御装置の一例)に関する検出値を取得する取得リクエストを生成し、インターフェース装置を通じてリアルタイム通信において当該取得リクエストを送信し、検出値を表す検出データを当該取得リクエストに対する応答としてインターフェース装置を通じて受信する。
(Y)繰り返し、ロボット120に対する指令値の補正処理を行い、補正後の指令値を有する制御リクエストを生成し、インターフェース装置を通じて非リアルタイム通信において当該制御リクエストを送信し、当該制御リクエストが有する指令値に対する戻り値を表す制御結果データをインターフェース装置を通じて受信する。
【0084】
(X)での繰り返しの処理と(Y)での繰り返しの処理とのうち、少なくとも(X)での処理が周期的に行われる処理でよく、(Y)での繰り返しの処理は周期的な処理であっても周期的な処理でなくてもよい。
【0085】
各制御リクエストについて、補正処理は、時刻と戻り値との第1の組と、時刻と検出値との第2の組と、時刻と指令値との第3の組とに基づき、第3の組における指令値の補正後の指令値を出力する処理であり、当該補正処理において、第2の組における時刻は、当該制御リクエストが送信される送信時刻と非リアルタイム通信に関し予め計測された応答時間とに基づき決定された時刻である補正後時刻である。
【0086】
非リアルタイム通信に関し事前計測された応答時間に基づき検出値の時刻が補正され、その補正後の時刻を基に補正後の指令値が決定される。このため、非リアルタイム通信において被制御装置を精度良く制御することができる。なお、「補正後時刻」(補正後の検出時刻)は、実施形態における補正後時刻(制御リクエストが送信される送信時刻に、非リアルタイム通信に関する事前計測の応答時間が加算された時刻)でもよいし、送信時刻と事前計測の応答時間とに基づき他の方法で決定された時刻でもよい。
【0087】
予め計測された応答時間は、計測開始時刻と実動作時刻との差分でよい。計測開始時刻は、非リアルタイム通信での制御リクエストの送信時刻でよい。実動作時刻は、当該制御リクエストに応答して動作した被制御装置の検出値が変化したことが特定された時刻でよい。つまり、事前計測された応答時間は、制御リクエストが送信されてから当該制御リクエストに応答して検出値変化が発生するまでの時間でよい。これにより、検出値の時刻として適切な時刻を非リアルタイム通信での制御において検出値に関連付け、適切な補正後の指令値が得られることが期待される。
【0088】
コントロールシステム109は、第1の演算装置(例えばコントロール装置40M)と第2の演算装置(例えば拡張装置40E)とを含む複数の演算装置を備えた分散コントロールシステムでよい。上述の一つ又は複数のプロセッサは、少なくとも(X)を行う第1のプロセッサ(例えば、プロセッサ209M)と、(Y)のうち少なくとも補正処理を行う第2のプロセッサ(例えば、プロセッサ209E)とを含んでよい。第1の演算装置が、第1のプロセッサを備え、第2の演算装置が、第2のプロセッサを備えてよい。これにより、(X)の実行を、(X)の実行に適した機能又はハードウェアを持つ第1の演算装置とすることができ、(Y)のうち少なくとも補正処理の実行を、(Y)のうち少なくとも補正処理の実行に適した機能又はハードウェアを持つ第2の演算装置とすることができる。
【0089】
補正処理は、第1の組、第2の組及び第3の組を入力とし補正後の指令値を出力とする機械学習モデル(例えば補正モデル290)を用いた処理でよい。これにより、第1の組、第2の組及び第3の組と補正後の指令値との複数の組合せを含む教師データセットを基にモデルを学習でき、以って、精度良いの制御のための補正後の指令値の取得が期待される。また、第2の演算装置(例えば第2のプロセッサ)を、機械学習モデルを用いた補正処理を行うことに十分なハードウェア資源(例えば、GPUを含むプロセッサ)を持つ演算装置としてよく、一方、第1の演算装置を、定められた定周期処理を実施することができる(例えばPLCとして機能できる)ぐらいのハードウェア資源を持つ演算装置とすることができる。
【0090】
第1のプロセッサが、非リアルタイム通信での応答時間を予め計測し、当該計測された応答時間を表すデータである時間共有データ(例えば時間共有データ281)を、第2の演算装置に送信してよい。第2のプロセッサが行う補正処理において、補正後時刻の基になる応答時間は、時間共有データが表す応答時間でよい。これにより、応答時間を事前計測した演算装置と実際に被制御装置を制御する演算装置とで事前計測された応答時間が共有され、非リアルタイム通信において被制御装置を精度良く制御することができる。
【0091】
なお、時間共有データは、応答時間テーブル280それ自体でよく、その場合、第2のプロセッサは、補正処理の都度に、応答時間テーブル280が表す応答時間を送信時刻に加算した補正後の検出時刻を算出してよい。また、例えば、被制御装置への制御リクエストの各送信時刻について当該送信時刻と事前計測された応答時間とを表す時間共有データが第1の演算装置から第2の演算装置に送信されてよい。第2のプロセッサは、各送信時刻について、当該送信時刻に対応の時間共有データから得られた応答時間と、当該送信時刻とに基づき補正後の検出時刻を算出(決定)してよい。
【0092】
被制御装置は、ロボット(例えばロボット120)でよい。第2のプロセッサが、(Y)を行ってよい。第1のプロセッサが、ロボットとは別の被制御装置(例えば加工機119)をスキャンタイムで制御することを含む制御処理を行ってよい。(X)は、当該制御処理に含まれる又は当該制御処理とは別でよい。ロボットの制御は、ROSにより行うことは期待されるが、リアルタイム性を有する第1の演算装置によりリアルタイム通信において収集された検出値を基に、第2の演算装置によりロボット制御が行われるため、第2の演算装置がリアルタイム性を持たなくても、精度の良いロボット制御が期待される。
【0093】
なお、別の被制御装置の制御処理は、ロボット制御処理とパラレルに、又は、ロボット制御処理の完了後に行われてよい。例えば、加工機119の制御は、加工機119にワークの設定が完了した後(ロボット制御が完了した後)に行われてもよい。加工機119の加工の進捗に応じてロボット120の制御が必要な場合、加工機119の制御(リアルタイム通信での制御)とロボット120の制御(非リアルタイム通信での制御)が、パラレルに又はシーケンシャルに行われてよい。
【0094】
また、同一の演算装置が、ロボットの制御と、別の被制御装置の制御とを行ってよい。例えば、図9に例示するように、ロボット制御部272及びRT補正部271が、制御部251を有するコントロール装置40Mに設けられてもよい。また、図示しないが、図9におけるロボット制御部272及びRT補正部271のうち、RT補正部271は拡張装置40Eに備えられてよい。
【0095】
また、例えば、補正後の検出時刻には、非リアルタイム通信での事前計測された応答時間に加えて、更に、リアルタイム通信での応答時間が反映されてもよい。リアルタイム通信での応答時間は、計測された応答時間(例えば、非リアルタイム通信での応答時間の事前計測方法と同じ又は異なる方法で計測された応答時間)でもよいし、最悪値としての応答時間(例えば、リアルタイム通信での規格(仕様)において定められた応答時間の最大値)でもよい。例えば、補正後の検出時刻は、非リアルタイム通信での事前計測された応答時間とリアルタイム通信での応答時間とが送信時刻に加えられた時刻でよい。
【0096】
また、本明細書において、「時刻」は、年月日時分秒又はそれよりも粗い或いは細かい単位の時刻でもよいし、或る基準となる時点との差分(時間)でもよい。
【符号の説明】
【0097】
109…コントロールシステム
図1
図2
図3
図4
図5
図6
図7
図8
図9