JP2023148119A - コンピュータプログラム、および、制御装置 - Google Patents

コンピュータプログラム、および、制御装置 Download PDF

Info

Publication number
JP2023148119A
JP2023148119A JP2022055986A JP2022055986A JP2023148119A JP 2023148119 A JP2023148119 A JP 2023148119A JP 2022055986 A JP2022055986 A JP 2022055986A JP 2022055986 A JP2022055986 A JP 2022055986A JP 2023148119 A JP2023148119 A JP 2023148119A
Authority
JP
Japan
Prior art keywords
command
robot
target device
state
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022055986A
Other languages
English (en)
Inventor
誉志 松下
Kiyoshi Matsushita
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2022055986A priority Critical patent/JP2023148119A/ja
Publication of JP2023148119A publication Critical patent/JP2023148119A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Manipulator (AREA)

Abstract

【課題】ロボットとアプリケーションソフトウェアとを使用して装置を検査する。【解決手段】操作コマンドと判断コマンドとを含む手順情報に従って対象装置を検査する。判断コマンドが、操作の後に、制限時間内に、操作に起因する対象装置の結果状態が検知部によって検知されるか否かを判断するコマンドである場合に、対象装置の結果状態を検知するための位置に検知部を移動させる処理を、アプリケーションソフトウェアのユーザインタフェースの操作の開始前にロボット駆動部に実行させる。判断コマンドが、操作の後に、制限時間内に、操作に起因するアプリケーションソフトウェアの結果状態がアプリケーション駆動部によって検知されるか否かを判断するコマンドである場合に、移動処理と、移動処理よりも先に完了通知を送信する先通知処理と、をロボット駆動部に実行させる。【選択図】 図1

Description

本明細書は、装置を検査する技術に関する。
部品の移動作業、挿入作業、組み立て作業などの作業に、ロボットが使用され得る。ロボットに関連して、特許文献1は、以下の技術を開示している。ロボットのハンドに作用する力を検出する力センサの力センサ信号からハンドに加わる力を算出する。ロボットアームの各関節軸駆動モータの位置検出信号から部品の移動量の移動速度を算出する。ハンドに加わる力と移動速度の積を時間積分して移動時に消費される仕事量を算出する。移動量を第1軸、仕事量を第2軸とする2次元平面内において、ハンドリング作業完了時の移動量と仕事量が予め設定した閉領域の外側にある場合に把持部品とハンド間の滑りが発生したと判定する。
特開2011-88260号公報
ロボットは、装置の検査に使用され得る。例えば、ロボットは、デジタルカメラ、三次元センサ、赤外線センサなどの検知部を有してよい。そして、ロボットの検知部が、装置の状態を検知してよい。また、ロボットは、ボタンやタッチパネルなどの操作部を、操作してよい。また、装置の検査には、装置の制御またはモニタのためのアプリケーションソフトウェアが使用されてよい。ところが、ロボットとアプリケーションソフトウェアとを使用して装置を検査することには、工夫の余地があった。
本明細書は、ロボットとアプリケーションソフトウェアとを使用して装置を検査する技術を開示する。
本明細書に開示された技術は、以下の適用例として実現することが可能である。
[適用例1]対象装置の状態を検知する検知部を有するロボットを制御するためのロボット駆動部と、前記対象装置と協働するためのアプリケーションソフトウェアのユーザインタフェースを操作するためのアプリケーション駆動部と、のそれぞれと通信するように構成されるとともにコンピュータを有する制御装置のコンピュータプログラムであって、対象装置を検査するための手順情報を取得する取得機能と、前記手順情報に従って前記対象装置を検査する検査機能と、をコンピュータに実現させ、前記手順情報は、アプリケーションソフトウェアのユーザインタフェースの操作をアプリケーション駆動部に実行させる操作コマンドと、前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作に起因する前記対象装置の状態が検知部によって検知されるか否かを判断する判断コマンドと、を含み、前記検査機能は、(A)前記判断コマンドが、前記操作の後に、前記操作に起因する前記対象装置の状態である事後状態が前記検知部によって検知されるか否かを判断する事後判断コマンドである場合に、前記対象装置の前記事後状態を検知するための位置に前記検知部を移動させる処理を、前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の完了後に前記ロボット駆動部に実行させる後移動機能と、(B)前記判断コマンドが、前記操作の後に、制限時間内に、前記操作に起因する前記対象装置の状態である結果状態が前記検知部によって検知されるか否かを判断する時間判断コマンドである場合に、前記対象装置の前記結果状態を検知するための位置に前記検知部を移動させる処理を、前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の開始前に前記ロボット駆動部に実行させる先移動機能と、を含む、コンピュータプログラム。
この構成によれば、制御装置のコンピュータは、判断コマンドが時間判断コマンドである場合に、検知部を移動させる処理を操作の開始前にロボット駆動部に実行させるので、時間判断コマンドに基づく適切な判断が可能である。
[適用例2]対象装置を操作するための操作部を有するロボットを制御するためのロボット駆動部と、前記対象装置と協働するためのアプリケーションソフトウェアの状態を検知するためのアプリケーション駆動部と、のそれぞれと通信するように構成されるとともにコンピュータを有する制御装置のコンピュータプログラムであって、対象装置を検査するための手順情報を取得する取得機能と、前記手順情報に従って前記対象装置を検査する検査機能と、をコンピュータに実現させ、前記手順情報は、ロボットの操作部による前記対象装置の操作をロボット駆動部に実行させる操作コマンドと、前記対象装置の前記操作に起因するアプリケーションソフトウェアの状態がアプリケーション駆動部によって検知されるか否かを判断する判断コマンドと、を含み、前記検査機能は、(A)前記判断コマンドが、前記操作の後に、前記操作に起因する前記アプリケーションソフトウェアの前記状態である事後状態が前記アプリケーション駆動部によって検知されるか否かを判断する事後判断コマンドである場合に、前記操作の後に前記ロボットの前記操作部を特定の位置に移動する移動処理と、前記移動処理の後に前記操作の完了通知を送信する後通知処理と、を前記ロボット駆動部に実行させる後通知機能と、(B)前記判断コマンドが、前記操作の後に、制限時間内に、前記操作に起因する前記アプリケーションソフトウェアの前記状態である結果状態が前記アプリケーション駆動部によって検知されるか否かを判断する時間判断コマンドである場合に、前記移動処理と、前記移動処理よりも先に前記完了通知を送信する先通知処理と、を前記ロボット駆動部に実行させる先通知機能と、を含む、コンピュータプログラム。
この構成によれば、制御装置のコンピュータは、判断コマンドが時間判断コマンドである場合に、移動処理よりも先に完了通知を送信する先通知処理をロボット駆動部に実行させるので、時間判断コマンドに基づく適切な判断が可能である。
なお、本明細書に開示の技術は、種々の態様で実現することが可能であり、例えば、駆動部を制御する方法および駆動部を制御する制御装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体(例えば、一時的ではない記録媒体)、等の形態で実現することができる。
本実施例のシステムの例を示す概略図である。 ユーザインタフェース画面の例を示す概略図である。 検査処理の例を示すフローチャートである。 スクリプトの例を示す概略図である。 スクリプトの解析処理の例を示すフローチャートである。 操作判断処理の例を示すシーケンス図である。 スクリプトの別の例を示す概略図である。 操作判断処理の例を示すシーケンス図である。 操作判断処理の例を示すシーケンス図である。 スクリプトの別の例を示す概略図である。 操作判断処理の例を示すシーケンス図である。 スクリプトの別の例を示す概略図である。 操作判断処理の例を示すシーケンス図である。 操作判断処理の例を示すシーケンス図である。 スクリプトの別の例を示す概略図である。 操作判断処理の例を示すシーケンス図である。 スクリプトの別の例を示す概略図である。 操作判断処理の例を示すシーケンス図である。 スクリプトの別の例を示す概略図である。 操作判断処理の例を示すシーケンス図である。 スクリプトの別の例を示す概略図である。 操作判断処理の例を示すシーケンス図である。 スクリプトの別の例を示す概略図である。 操作判断処理の例を示すシーケンス図である。
A.第1実施例:
A1.装置構成:
図1は、本実施例のシステムの例を示す概略図である。このシステム1000は、対象装置10と、制御装置100と、ロボット駆動装置200A、200Bと、ロボット300A、300Bと、アプリケーション駆動装置600A、600Bと、アプリケーション実行装置700A、700Bと、を有している。システム1000は、対象装置10を検査するためのシステムである。この検査では、対象装置10が操作され、この操作に起因する対象装置10の状態が適切であるか否かが判断される。このような処理は、テストとも呼ばれる。
制御装置100と、ロボット駆動装置200A、200Bと、アプリケーション駆動装置600A、600Bとは、ネットワークNTに接続されている。ネットワークNTは、いわゆるローカルネットワークである。なお、ネットワークNTは、いわゆるインターネットを含んでよい。駆動装置200A、200B、600A、600Bは、制御装置100からの指示に応じて、対象装置10の検査のための後述する種々の処理を実行する。
対象装置10は、種々の製品であってよい。本実施例では、対象装置10は、複合機であり、インクジェット方式のプリンタと、スキャナと、を有している(図示省略)。対象装置10は、タッチスクリーン11と、クリーニングボタン12と、印刷ボタン13と、スキャンボタン14と、電源ボタン15と、ビジーランプ16と、レディランプ17と、を有している。図示を省略するが、タッチスクリーン11は、表示装置と、表示装置上に配置されたタッチパネルとを含んでいる。タッチスクリーン11は、ボタンなどの画像を表示し、画像の位置のタッチなどの操作を受け付ける。部材11-15は、それぞれ、ユーザによる操作を受け取るように構成された操作部の例である。
制御装置100は、対象装置10の検査処理を制御するための装置である。制御装置100は、例えば、パーソナルコンピュータである。制御装置100は、制御ユニット105と、表示部150と、操作部160と、を有している。制御ユニット105は、プロセッサ110と、記憶装置115と、通信インタフェース140と、を有している。これらの要素は、バスを介して互いに接続されている。記憶装置115は、揮発性記憶装置120と、不揮発性記憶装置130と、を含んでいる。
プロセッサ110は、データ処理を行うように構成された装置であり、例えば、CPUである。揮発性記憶装置120は、例えば、DRAMであり、不揮発性記憶装置130は、例えば、フラッシュメモリである。不揮発性記憶装置130は、プログラムPG1を格納している。プロセッサ110は、プログラムPG1を実行することによって、後述する種々の処理を実行する。また、不揮発性記憶装置130は、第1スクリプトSCのデータを格納している。プログラムPG1と第1スクリプトSCとの詳細については、後述する。
表示部150は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部160は、ボタン、レバー、表示部150上に重ねて配置されたタッチパネルなどの、ユーザによる操作を受け取るように構成された装置である。ユーザは、操作部160を操作することによって、種々の指示を制御装置100に入力可能である。通信インタフェース140は、他の装置と通信するためのインタフェースである。通信インタフェース140は、例えば、USBインタフェース、有線LANインタフェース、IEEE802.11の無線インタフェースのうちの1種以上を含む。通信インタフェース140は、ネットワークNTに接続されている。
ロボット300A、300Bは、対象装置10の操作と対象装置10の撮影とを行うための装置である。本実施例では、ロボット300A、300Bは、同じハードウェア構成を有している。以下、ロボット300A、300Bを区別しない場合には、符号の末尾の英字を省略して、単にロボット300とも呼ぶ。ロボット300は、アーム310を有している。図示を省略するが、アーム310は、複数のリンクを有している。複数のリンクは、回転、並進などの種々の動きを許容するジョイントによって接続されている。アーム310は、例えば、6軸のロボットアームである。6軸のそれぞれのジョイントは、ジョイントを駆動するサーボモータと、ジョイントの駆動位置(例えば、回転角度)を検出する位置検出器(例えば、エンコーダ)と、を有している。
アーム310の端部には、ツール320とデジタルカメラ330とが固定されている。本実施例では、ツール320は、1本の棒状の部材である(棒状の部材は、指とも呼ばれる)。対象装置10の操作のために、ツール320の端部は、対象装置10の操作部(例えば、タッチスクリーン11とボタン12-15のいずれか)に、接触する。環境(ここでは、対象装置10)と相互作用する部材は、エンドエフェクタとも呼ばれる。ツール320は、エンドエフェクタの例である。
デジタルカメラ330は、対象装置10を撮影する。撮影画像によって示される対象装置10の状態が適切であるか否かが、判断される。
ロボット駆動装置200A、200Bは、それぞれ、ロボット300A、300Bを制御するための装置であり、対応するロボット300A、300Bに接続されている。ロボット駆動装置200A、200Bは、例えば、パーソナルコンピュータである。本実施例では、ロボット駆動装置200A、200Bは、同じハードウェア構成を有している。以下、ロボット駆動装置200A、200Bを区別しない場合には、符号の末尾の英字を省略して、単にロボット駆動装置200とも呼ぶ。
ロボット駆動装置200は、制御ユニット205を有している。制御ユニット205は、制御装置100の制御ユニット105と同様に、プロセッサ210と記憶装置215(揮発性記憶装置220と不揮発性記憶装置230を含む)と通信インタフェース240とを有している。第1ロボット駆動装置200Aの不揮発性記憶装置230には、プログラムPG2Aが格納されている。第2ロボット駆動装置200Bの不揮発性記憶装置230には、プログラムPG2Bが格納されている。プログラムPG2A、PG2Bは、ロボット300A、300Bを制御するためのプログラムである。
ロボット駆動装置200は、ロボット300の各ジョイントの駆動モータを制御することによって、各ジョイントを独立に動かすことができる。ロボット駆動装置200は、各ジョイントの位置検出器から出力されるデータを使用することによって、ツール320とデジタルカメラ330との位置を算出可能である。なお、ジョイントのパラメータからエンドエフェクタの位置を算出する技術は、フォワードキネマティクスとも呼ばれる。
アプリケーション実行装置700A、700Bは、アプリケーションソフトウェアを実行するための装置である。本実施例では、アプリケーション実行装置700A、700Bは、携帯端末である(例えば、スマートフォン)。以下、アプリケーション実行装置700A、700Bを、単に端末700A、700Bとも呼ぶ。本実施例では、端末700A、700Bは、同じハードウェア構成を有している。以下、端末700A、700Bを区別しない場合には、符号の末尾の英字を省略して、単に端末700とも呼ぶ。
端末700は、制御ユニット705と、表示部750と、操作部760と、を有している。図示を省略するが、制御ユニット705は、制御装置100の制御ユニット105と同様に、プロセッサと記憶装置(揮発性記憶装置と不揮発性記憶装置を含む)と通信インタフェースとを有している。表示部750は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示するように構成された装置である。操作部760は、本実施例では、表示部750上に重ねて配置されたタッチパネルである。ユーザは、操作部760を操作することによって、種々の指示を端末700に入力可能である。
第1端末700Aの不揮発性記憶装置には、プログラムPG7Aが格納されている。第2端末700Bの不揮発性記憶装置には、プログラムPG7Bが格納されている。プログラムPG7A、PG7Bは、対象装置10と協働するアプリケーションソフトウェアのプログラムである。以下、アプリケーションソフトウェアを、単に、アプリケーションとも呼ぶ。
アプリケーションは、対象装置10と協働する任意のアプリケーションであってよい。例えば、アプリケーションは、対象装置10の製造者によって提供される。端末700は、アプリケーションに従って、種々の処理を実行する。以下の機能は、アプリケーションによって実現される機能の例である。
(1)表示部750にユーザインタフェース画面を表示する。
(2)画像データを対象装置10に送信することによって、対象装置10に画像を印刷させる。
(3)スキャンデータを対象装置10から取得する。
(4)印刷ヘッドのクリーニングを対象装置10に開始させる。
(5)対象装置10の状態を示す対象状態データを、定期的に、対象装置10から取得する。
(6)対象状態データによって示される状態を表示部750に表示する。
(7)リモートで対象装置10の電源を入れる。
図2は、ユーザインタフェースを示すユーザインタフェース画面の例を示す概略図である(以下、UI画面とも呼ぶ)。UI画面752は、複数のボタン752a-752eと、情報領域752fと、を示している。本実施例では、UI画面752は、印刷ボタン752aと、スキャンボタン752bと、印刷ヘッドのクリーニングを行うためのクリーニングボタン752cと、リモート電源ボタン752dと、設定ボタン752eと、を示している。情報領域752fは、対象装置10に関連する情報(例えば、対象装置10の状態、インクの残量、など)を表示するための領域である。ユーザは、操作部760を操作することによって、UI画面752によって示されるユーザインタフェースを操作することができる。なお、図示を省略するが、UI画面752は、操作部760の操作に応じて、種々に変化し得る。
端末700(図1)と対象装置10との間の通信方法は、任意の方法であってよい。本実施例では、端末700と対象装置10とのそれぞれの通信インタフェースは、NFCインタフェースを含んでいる(NFCは、Near Field Communicationの略)。端末700と対象装置10とは、NFCインタフェースを介して、通信する。これに代えて、端末700と対象装置10とは、ネットワークNTを介して通信してもよい。
アプリケーション駆動装置600A、600Bは、端末700A、700B上で動作するアプリケーションのユーザインタフェースを操作と、アプリケーションの状態の検知と、を行うための装置である。第1アプリケーション駆動装置600Aは、第1端末700Aに接続され、第1端末700Aのアプリケーションを制御する。第2アプリケーション駆動装置600Bは、第2端末700Bに接続され、第2端末700Bのアプリケーションを制御する。アプリケーション駆動装置600A、600Bは、例えば、パーソナルコンピュータである。以下、アプリケーション駆動装置600A、600Bを、単にAPP駆動装置600A、600Bとも呼ぶ。本実施例では、APP駆動装置600A、600Bは、同じハードウェア構成を有している。以下、APP駆動装置600A、600Bを区別しない場合には、符号の末尾の英字を省略して、単にAPP駆動装置600とも呼ぶ。
APP駆動装置600は、制御ユニット605を有している。制御ユニット605は、制御装置100の制御ユニット105と同様に、プロセッサ610と記憶装置615(揮発性記憶装置620と不揮発性記憶装置630を含む)と通信インタフェース640とを有している。第1APP駆動装置600Aの不揮発性記憶装置630には、プログラムPG6Aが格納されている。第2APP駆動装置600Bの不揮発性記憶装置630には、プログラムPG6Bが格納されている。プログラムPG6A、PG6Bは、端末700A、700B上で動作するアプリケーションのユーザインタフェースを操作するためのプログラムである。プログラムPG6A、PG6Bは、タッチパネルのタップ操作、テキストの入力操作などの種々の操作を端末700A、700B上で再現する。ユーザインタフェースを操作するソフトウェアとしては、例えば、Appiumと呼ばれるソフトウェアを使用可能である。また、本実施例では、プログラムPG6A、PG6Bは、アプリケーションの状態を検知する機能も有している。具体的には、プログラムPG6A、PG6Bは、アプリケーションからアプリケーションの内部パラメータを取得する。内部パラメータは、アプリケーションの処理で使用される種々のデータを含んでいる。例えば、内部パラメータは、アプリケーションによる処理のログデータを含んでいる。また、上述したように、アプリケーションは、対象装置10から対象状態データを取得する。アプリケーションの内部パラメータは、対象状態データを含んでいる。なお、ユーザインタフェースを操作するためのプログラムは、APP駆動装置600にインストールされるプログラムと、端末700にインストールされるプログラムと、を含んでよい。
A2.検査処理:
図3は、検査処理の例を示すフローチャートである。制御装置100(図1)のプロセッサ110は、プログラムPG1に従って、検査処理を進行する。S110では、プロセッサ110は、不揮発性記憶装置130から第1スクリプトSCのデータを取得する。第1スクリプトSCは、検査の手順を示している。
図4は、スクリプトの例を示す概略図である。スクリプトは、複数のコマンドを示している。各コマンドには、実行すべき順番が、予め付与されている。図4の例では、第1スクリプトSCは、第1コマンドC1と第2コマンドC2を示している。第1コマンドC1は、アプリケーションの操作コマンドである。具体的には、第1コマンドC1は、クリーニングボタン752c(図2)のタップである。第2コマンドC2は、ロボットを使用する事後判断であり、第1コマンドC1に対応付けられている。事後判断は、対応する操作に起因する対象装置10の状態である事後状態が検知されるか否かの判断である。第2コマンドC2の事後状態は、クリーニングボタン752cのタップに起因する対象装置10(図1)のビジーランプ16が点灯する状態である。
スクリプトのデータは、作業者によって、予め不揮発性記憶装置130に格納される。本実施例では、スクリプトのデータは、テキストデータである。第1コマンドC1のような操作コマンドは、例えば、操作用の駆動装置(ここでは、第1APP駆動装置600Aであることとする)と、操作対象(例えば、クリーニングボタン752c)と、操作方法(例えば、押下)と、で表されてよい。第2コマンドC2のような判断コマンドは、例えば、判断用の駆動装置(ここでは、第1ロボット駆動装置200Aであることとする)と、判断の種類(ここでは、事後判断)と、判断用の状態(ここでは、ビジーランプ16が点灯する状態)と、で表されてよい。
S120(図3)では、プロセッサ110は、第1スクリプトSCに従って対象装置10の検査を進行する。本実施例では、S120は、S123とS126とを含んでいる。S123では、プロセッサ110は、第1スクリプトSCを解析する。
図5は、スクリプトの解析処理の例を示すフローチャートである。S210では、プロセッサ110は、処理対象のコマンドの番号iを1に初期化する。
S220では、プロセッサ110は、i番のコマンドが、ロボットを使用する時間判断であるか否かを判断する。時間判断は、操作の後に、制限時間内に、操作に起因する対象装置10の状態である結果状態が検知されるか否かの判断である。例えば、操作は、UI画面752(図2)の印刷ボタン752aの押下であってよい。結果状態は、対象装置10から印刷物が出力された状態であってよい。この結果状態は、デジタルカメラ330による対象装置10の撮影画像を解析することによって、検知可能である。ここで、印刷ボタンの押下の後に、10秒以内に、結果状態が検知されるか否かが、判断されてよい。結果状態の検知にロボット300(ここでは、デジタルカメラ330)が使用される場合、時間判断は、ロボットを使用する時間判断である。
図4の第1コマンドC1は、アプリケーションの操作であるので、S220の判断結果は、Noである。この場合、プロセッサ110は、S240へ移行する。
S220の判断結果がYesである場合、プロセッサ110は、S230を実行し、そして、S240へ移行する。S230では、プロセッサ110は、i番のコマンドに対応する操作コマンドの前に、第1種準備処理P1を追加する。S230の詳細については、後述する。
S240では、プロセッサ110は、i番のコマンドが、アプリケーションを使用する時間判断であるか否かを判断する。結果状態の検知にアプリケーションが使用される場合、時間判断は、アプリケーションを使用する時間判断である。例えば、操作は、対象装置10(図1)のスキャンボタン14の押下であってよい。結果状態は、対象装置10からアプリケーションへスキャンデータが出力された状態であってよい。この結果状態は、アプリケーションの内部状態を参照することによって、検知可能である。ここで、スキャンボタン14の押下の後に、10秒以内に、結果状態が検知されるか否かが、判断されてよい。
図4の第1コマンドC1は、アプリケーションの操作であるので、S240の判断結果は、Noである。この場合、プロセッサ110は、S260へ移行する。
S240の判断結果がYesである場合、プロセッサ110は、S250を実行し、そして、S260へ移行する。S250では、プロセッサ110は、i番のコマンドに対応する操作コマンドの前に、第2種準備処理P2を追加する。S250の詳細については、後述する。
S260では、プロセッサ110は、スクリプトの全てのコマンドが処理されたか否かを判断する。全てのコマンドが処理された場合(S260:Yes)、プロセッサ110は、図5の処理を終了する。
未処理のコマンドが残っている場合(S260:No)、S270で、プロセッサ110は、番号iに1を加算する。そして、プロセッサ110は、S220へ移行して、更新されたi番のコマンド(すなわち、次のコマンド)を処理する。
図4の第2コマンドC2は、ロボットを使用する事後判断である。従って、S220とS240とのそれぞれの判断結果は、Noである。図4の第1スクリプトSCが処理される場合、プロセッサ110は、S230、S250を実行せずに、図5の処理、すなわち、図3のS123の処理を終了する。
S126(図3)では、プロセッサ110は、スクリプトの解析結果に従って、操作判断処理を進行する。操作判断処理は、駆動装置200、600への指示の送信と、駆動装置200、600から受信されたデータに基づく判断と、を含んでいる。S126の終了に応じて、プロセッサ110は、図3の検査処理を終了する。
A2-1.第1の操作判断処理:
図6は、図4の第1スクリプトSCのための操作判断処理の例を示すシーケンス図である。第1コマンドC1は、第1APP駆動装置600Aを指定し、第2コマンドC2は、第1ロボット駆動装置200Aを指定していることとする。制御装置100は、第1コマンドC1、第2コマンドC2の順に、処理を進行する。S350、S360、S370は、第1コマンドC1のための処理を示している。S333、S335、S410、S415、S420は、第2コマンドC2のための処理を示している。
S350で、制御装置100のプロセッサ110は、第1APP駆動装置600Aに操作指示を送信する。この指示は、第1コマンドC1の詳細(ここでは、クリーニングボタン752cのタップ)を示すデータを含んでいる。
S360では、第1APP駆動装置600Aのプロセッサ610は、操作指示に従って、UI画面752(図2)のクリーニングボタン752cのタップを、第1端末700Aに適用する。これにより、第1端末700Aのアプリケーションは、クリーニングボタン752cがタップされた場合の処理を実行する。本実施例では、第1端末700Aは、対象装置10に、クリーニングの開始を指示する。対象装置10は、この指示に応じて、印刷ヘッドのクリーニングを開始する。ここで、対象装置10は、クリーニングの最中には、ビジーランプ16を点灯することとする。
S370では、第1APP駆動装置600Aのプロセッサ610は、完了通知を制御装置100に送信する。
完了通知に応じて、S333で、制御装置100のプロセッサ110は、データ取得指示を第1ロボット駆動装置200Aに送信する。この指示は、第2コマンドC2の詳細を示すコマンドデータを含んでいる。本実施例では、このコマンドデータは、ビジーランプ16(図1)の撮影位置へのデジタルカメラ330の移動と、デジタルカメラ330による撮影と、を示している。
S335で、第1ロボット駆動装置200Aのプロセッサ210は、S333の指示に従って、第1ロボット300Aを駆動することによって、デジタルカメラ330を撮影位置に移動させる。デジタルカメラ330の向きは、撮影に適する向きに設定される。
本実施例では、ロボット駆動装置200の不揮発性記憶装置230は、種々の撮影対象に対応付けられるロボット300の制御パラメータを示すデータを、予め格納している(図示省略)。制御パラメータは、例えば、撮影位置の座標、複数のジョイントの駆動手順(例えば、各ジョイントの駆動量と駆動順)など、撮影位置にデジタルカメラ330を移動させることが可能な任意のパラメータであってよい。プロセッサ210は、撮影対象に対応付けられる制御パラメータを使用してロボット300を制御することによって、デジタルカメラ330を撮影対象に適する撮影位置に移動させる。
S410では、プロセッサ210は、第1ロボット300Aのデジタルカメラ330に撮影指示を送信する。デジタルカメラ330は、対象装置10のビジーランプ16を含む部分を撮影する。プロセッサ210は、デジタルカメラ330から、撮影画像データを取得する。S415では、プロセッサ210は、撮影画像データを制御装置100に送信する。
S420では、制御装置100のプロセッサ110は、撮影画像を解析することによって、ビジーランプ16が点灯しているか否かを判断する。例えば、プロセッサ110は、ビジーランプ16を示す基準画像を使用するパターンマッチングによって、撮影画像中のビジーランプ16を検出する。プロセッサ110は、撮影画像中の検出されたビジーランプ16の明るさを参照して、ビジーランプ16が点灯しているか否かを判断する。プロセッサ110は、判断結果を示すデータを、記憶装置115(例えば、不揮発性記憶装置130)に格納する。以上により、図6の処理は、終了する。
以上のように、本実施例では、制御装置100は、ロボット駆動装置200とAPP駆動装置600とのそれぞれと通信するように構成されている。ロボット300のデジタルカメラ330は、対象装置10の状態を検知する検知部の例である。制御装置100のプロセッサ110は、以下の処理を実行する。図3のS110では、プロセッサ110は、第1スクリプトSCを取得する。第1スクリプトSCは、対象装置10を検査するための手順情報の例である。S120では、プロセッサ110は、第1スクリプトSCに従って対象装置10を検査する。
図4に示すように、第1スクリプトSCは、第1コマンドC1と第2コマンドC2とを含んでいる。第1コマンドC1は、UI画面752のクリーニングボタン752cのタップを第1APP駆動装置600Aに実行させるコマンドである。第1コマンドC1は、アプリケーションのユーザインタフェースの操作をアプリケーション駆動部に実行させる第1種操作コマンドの例である。第2コマンドC2は、UI画面752の操作に起因する対象装置10のビジーランプ16が点灯する状態がデジタルカメラ330によって検知されるか否かを判断するコマンドである。第2コマンドC2は、アプリケーションのユーザインタフェースの操作に起因する対象装置の状態が検知部によって検知されるか否かを判断する第1種判断コマンドの例である。
図4、図6に示すように、第2コマンドC2は、UI画面752の操作の後に、操作に起因する対象装置10の状態である事後状態(ここでは、ビジーランプ16が点灯する状態)がデジタルカメラ330によって検知されるか否かを判断する。第2コマンドC2は、操作の後に、操作に起因する対象装置の状態である事後状態が検知部によって検知されるか否かを判断する第1種事後判断コマンドの例である。
図6に示すように、判断コマンド(ここでは、第2コマンドC2)が第1種事後判断コマンドである場合、プロセッサ110は、対象装置10の事後状態を検知するための位置にデジタルカメラ330を移動させる処理(S335)を、UI画面752の操作(S360)の完了後に第1ロボット駆動装置200Aに実行させる。従って、プロセッサ110は、操作に起因する事後状態の判断を、適切に、実行できる。
A2-2.第2の操作判断処理:
図7は、スクリプトの別の例を示す概略図である。第2スクリプトSCaは、第1コマンドC1aと第2コマンドC2aを示している。第1コマンドC1aは、アプリケーションの操作コマンドである。具体的には、第1コマンドC1aは、UI画面752(図2)の印刷ボタン752aのタップである。第2コマンドC2aは、ロボットを使用する時間判断であり、第1コマンドC1aに対応付けられている。時間判断は、UI画面752の操作の後に、制限時間内に、対応する操作に起因する対象装置の状態である結果状態が検知部によって検知されるか否かの判断である。第2コマンドC2aの判断のための結果状態は、対象装置10から印刷物が出力された状態である。
第2スクリプトSCaが使用される場合、図5の処理は、以下のように進行する。第1コマンドC1aに関しては、S220、S240の判断結果は、Noである。第2コマンドC2aに関しては、S220の判断結果がYesであり、S240の判断結果はNoである。この場合、S230で、制御装置100のプロセッサ110は、第2コマンドC2aに対応する操作コマンドである第1コマンドC1aの前に、第1種準備処理P1を追加する。第1種準備処理P1は、以下の処理を含んでいる。
(A)APP駆動装置600に、トークンを送信する。
(B)APP駆動装置600に、操作の完了通知の自動送信指示を送信する。
(C)ロボット駆動装置200に、トークンを送信する。
(D)ロボット駆動装置200に、移動の指示を送信する。
(E)ロボット駆動装置200に、自動データ取得指示を送信する。
図8、図9は、第2スクリプトSCaのための操作判断処理の例を示すシーケンス図である。第1コマンドC1は、第1APP駆動装置600Aを指定し、第2コマンドC2は、第1ロボット駆動装置200Aを指定していることとする。図8に示すように、第1コマンドC1aの処理の前に、第1種準備処理P1のための処理が追加されている。図8のS310a-S345aは、第1種準備処理P1のための処理である。図8のS350a-S370aは、第1コマンドC1aのための処理である。図9は、第2コマンドC2aのための処理を示している。
S310aでは、制御装置100のプロセッサ110は、通信指示と自動送信指示とを第1APP駆動装置600Aに送信する。通信指示は、トークンTKaを示すデータを含んでいる。この通信指示は、同じトークンTKaを含む通信確立要求に応じて通信を確立するためのものである。ここで、プロセッサ110は、予め決められたトークンTKaを使用する。これに代えて、プロセッサ110は、新たにトークンTKaを生成してよい(例えば、トークンTKaは、乱数を使用して生成されてよい)。自動送信指示は、第1コマンドC1aを示すデータを含んでいる。この自動送信指示は、対応するコマンド(ここでは、第1コマンドC1a)の操作の完了通知を自動的に送信するためのものである。
S315aでは、第1APP駆動装置600Aのプロセッサ610は、受信されるトークンTKaを示すデータを記憶装置615(例えば、不揮発性記憶装置630)に格納する。S320aでは、プロセッサ610は、完了通知を制御装置100に送信する。
S325aでは、制御装置100のプロセッサ110は、移動指示と通信指示と自動データ取得指示とを、第1ロボット駆動装置200Aに送信する。移動指示は、第2コマンドC2aの詳細を示すコマンドデータを含んでいる。本実施例では、このコマンドデータは、印刷物の出力トレー(図示省略)の撮影位置へのデジタルカメラ330の移動と、デジタルカメラ330による撮影と、を示している。通信指示は、トークンTKaと第1APP駆動装置600Aとを示すデータを含んでいる。この通信指示は、トークンTKaを使用して第1APP駆動装置600Aとの通信を確立するための指示である。自動データ取得指示は、撮影画像データの取得を自動的に行うための指示である。
S330aでは、第1ロボット駆動装置200Aのプロセッサ210は、トークンTKaを記憶装置215(例えば、不揮発性記憶装置230)に格納する。S335aでは、プロセッサ210は、移動指示に従って第1ロボット300Aを駆動することによって、デジタルカメラ330を撮影位置に移動させる。
S340aでは、プロセッサ210は、通信指示に従って、第1APP駆動装置600Aに、通信の確立要求を送信する。この要求は、トークンTKaを示すデータを含んでいる。第1APP駆動装置600Aのプロセッサ610は、受信されたトークンが、S315aで格納されたトークンTKaと同じである場合に、要求に応じて通信を確立する。例えば、第1ロボット駆動装置200Aと第1APP駆動装置600Aとは、通信セッションを確立する。以下、通信が確立されることとする。以後、駆動装置200A、600Aは、他の装置に情報を送信する場合に、トークンTKaを示すデータも送信する。トークンTKaは、トークンTKaと一緒に送信される情報が第2スクリプトSCaに関連付けられることを識別する。
S345aでは、第1ロボット駆動装置200Aのプロセッサ210は、完了通知を制御装置100に送信する。以上により、第1種準備処理P1のための処理が終了する。
S350aでは、制御装置100のプロセッサ110は、第1APP駆動装置600Aに操作指示を送信する。この指示は、第1コマンドC1aの詳細(ここでは、印刷ボタン752aのタップ)を示すデータを含んでいる。
S355aでは、第1APP駆動装置600Aのプロセッサ610は、第1APP駆動装置600Aの図示しないタイマを参照して、現在の時刻Taを取得する。本実施例では、自動送信指示(S310a)が受信される場合、プロセッサ610は、操作指示に応じて、時刻Taを取得する。後述するように、時刻Taの取得後、プロセッサ610は、直ぐに、操作処理(S360a)を実行する。時刻Taは、操作が行われる時刻を示している(以下、時刻Taを、操作時刻Taとも呼ぶ)。
S360aでは、プロセッサ610は、操作指示に従って、印刷ボタン752a(図2)のタップを、第1端末700Aに適用する。これにより、第1端末700Aのアプリケーションは、印刷ボタン752aがタップされた場合の処理を実行する。本実施例では、第1端末700Aは、予め選択された画像データを対象装置10に送信することによって、対象装置10に画像を印刷させる。
S365aでは、プロセッサ610は、第1ロボット駆動装置200Aに、操作の完了通知を送信する。この通知は、トークンTKaと操作時刻Taとを示すデータを含んでいる。S370aでは、プロセッサ610は、制御装置100に、操作の完了通知を送信する。以上により、第1コマンドC1aのための処理が終了する。
S375a(図9)では、第1ロボット駆動装置200Aのプロセッサ210は、画像取得処理の繰り返しを開始する。本実施例では、自動データ取得指示(図8:S325a)が受信される場合、プロセッサ210は、完了通知(図8:S365a)に応じて、撮影画像データの取得処理(S410a)の繰り返しを開始する。S410aでは、プロセッサ210は、第1ロボット300Aのデジタルカメラ330に、撮影指示を送信する。そして、プロセッサ210は、デジタルカメラ330から撮影画像データを取得する。対象装置10から印刷物が出力される前には、撮影画像は、印刷物の無い出力トレーを示している。印刷物が出力された後には、撮影画像は、印刷物を支持する出力トレーを示している。
S415aで、プロセッサ210は、S410aで取得された撮影画像IMGaとトークンTKaと操作時刻Taとを示すデータを、制御装置100に送信する。プロセッサ210は、その後、S410aを繰り返す。S410aの繰り返しにより、撮影画像データの更新が繰り返される。
S420aでは、制御装置100のプロセッサ110は、撮影画像IMGaを使用して、検査を行う。プロセッサ110は、例えば、印刷物の無い出力トレーを示す基準画像と、撮影画像IMGaと、の間の類似度を算出する。類似度の算出方法は、正規化相互相関、ゼロ平均正規化相互相関、など、2枚の画像の間の相関を示す類似度を算出する種々の方法であってよい。撮影画像が印刷物の無い出力トレーを示す場合、高い類似度が算出される。撮影画像が印刷物を支持する出力トレーを示す場合、低い類似度が算出される。プロセッサ110は、類似度が第1閾値以下である場合に、印刷物が出力された(すなわち、検査結果は合格である)と判断する。類似度が第1閾値を超える場合、プロセッサ110は、印刷物が出力されていない(すなわち、検査結果は不合格である)と判断する。第1閾値は、判断結果が適切であるように、予め実験的に決定される。プロセッサ110は、検査結果を示すデータを、記憶装置115(例えば、不揮発性記憶装置130)に格納する。
S425aでは、プロセッサ110は、検査結果が合格であるか否かを判断する。S425aの判断結果がNoである場合、S430aで、プロセッサ110は、制御装置100の図示しないタイマを参照して、現在時刻Tを取得する。プロセッサ110は、現在時刻Tが、操作時刻Taから所定の第1制限時間TWa(例えば、10秒)が経過する前であるか否かを判断する。S430aの判断結果がYesである場合、S435aで、プロセッサ110は、第1ロボット駆動装置200Aに、撮影画像データの再送要求を送信する。第1ロボット駆動装置200Aのプロセッサ210は、再送要求に応じて、S415aに移行し、最新の撮影画像データを制御装置100に送信する。以後、S425a、または、S430aの判断結果が変化するまで、S410a-S435aの処理が繰り返される(以下、繰り返される処理の全体を、処理S400iとも呼ぶ)。
図9のS400iの下には、S425aの判断結果がYesである場合の処理S400jが示されている。検査結果が合格であると判断される場合(S425a:Yes)、S440aで、プロセッサ110は、終了指示を第1ロボット駆動装置200Aに送信する。第1ロボット駆動装置200Aのプロセッサ210は、この指示に応じて、画像取得処理の繰り返しを終了する。以上により、操作判断処理は終了する。
図9のS400jの下には、S430aの判断結果がNoである場合の処理S400kが示されている。現在時刻Tが、操作時刻Taから第1制限時間TWaが経過した後である場合(S430a:No)、S445aで、プロセッサ110は、終了指示を第1ロボット駆動装置200Aに送信する。第1ロボット駆動装置200Aのプロセッサ210は、この指示に応じて、画像取得処理の繰り返しを終了する。以上により、操作判断処理は終了する。
以上のように、第2スクリプトSCa(図7)は、第1コマンドC1aと第2コマンドC2aとを含んでいる。第1コマンドC1aは、図4の第1コマンドC1と同様に、第1種操作コマンドの例である。第2コマンドC2aは、図4の第2コマンドC2と同様に、第1種判断コマンドの例である。ただし、図4の第2コマンドC2とは異なり、第2コマンドC2aは、UI画面752の操作の後に、第1制限時間TWa内に、操作に起因する対象装置10の結果状態(ここでは、印刷物が出力された状態)が、デジタルカメラ330によって検知されるか否かを判断する。このような第2コマンドC2aは、操作の後に、制限時間内に、操作に起因する対象装置の結果状態が検知部によって検知されるか否かを判断する第1種時間判断コマンドの例である。
図8に示すように、判断コマンド(ここでは、第2コマンドC2a)が第1種時間判断コマンドである場合、プロセッサ110は、対象装置10の結果状態を検知するための位置にデジタルカメラ330を移動させる処理(S335a)を、UI画面752の操作(S360a)の開始前に、第1ロボット駆動装置200Aに実行させる。この理由は、第1種時間判断コマンドに基づく適切な判断を行うためである。具体的には、以下の通りである。
図6には、操作処理(S360)から撮影画像の取得(S410)までの第1期間TD1が示されている。デジタルカメラ330の移動(S335)は、第1期間TD1内に行われる。デジタルカメラ330の移動に要する時間が長い場合、第1期間TD1は、その分、長くなる。図8、図9には、操作処理(図8:S360a)から最初の撮影画像の取得(図9:S410a)までの第2期間TD2が示されている。デジタルカメラ330の移動(図8:S335a)は、第2期間TD2よりも前に実行される。デジタルカメラ330の移動に要する時間が長い場合であっても、第2期間TD2の延長の可能性は、低減される。仮に、第2期間TD2が第1制限時間TWaよりも長い場合、最初の撮影画像の取得(S410a)は、操作時刻Taから第1制限時間TWaが経過した後に行われる。この結果、第2コマンドC2aの適切な判断ができない。本実施例では、そのような不具合の可能性は、低減される。また、このような不具合を避けるための検査専用の機能(例えば、テストモード)を対象装置10に実装しなくても、適切な検査が可能である。
また、図8、図9に示すように、本実施例では、判断コマンド(ここでは、第2コマンドC2a)が第1種時間判断コマンドである場合、プロセッサ110は、以下の処理を実行する。プロセッサ110は、UI画面752の操作(S360a)の開始前に、S310a、S325aで、第1APP駆動装置600Aと第1ロボット駆動装置200Aとのそれぞれに、トークンTKaを送信する。トークンTKaは、トークンTKaを伴う通信がスクリプト(ここでは、第2スクリプトSCa)に基づくひとまとまりの処理のためのものであることを識別する。トークンTKaは、通信を識別する通信識別子の例である。さらに、プロセッサ110は、S310aで、自動送信指示を第1APP駆動装置600Aに送信する。この指示により、第1APP駆動装置600Aは、UI画面752の操作の完了通知を、制御装置100を介さずにトークンTKaを使用して第1ロボット駆動装置200Aへ送信する(S365a)。プロセッサ110は、S325aで、自動データ取得指示を第1ロボット駆動装置200Aに送信する。この指示により、第1ロボット駆動装置200Aは、操作の完了通知に応じて対象装置10の状態を検知する(S410a)。以上により、第1APP駆動装置600Aは、完了通知が制御装置100によって中継される場合と比べて速やかに、操作の完了通知を第1ロボット駆動装置200Aに送信できる。また、第1ロボット駆動装置200Aは、制御装置100からの指示を待つ場合と比べて速やかに、対象装置10の状態を検知できる。以上により、第1ロボット駆動装置200Aは、適切に、対象装置10の状態を検知できる。例えば、第1ロボット駆動装置200Aは、操作時刻Taから第1制限時間TWaが経過するよりも前に、対象装置10の状態を検知できる。
また、作業者は、時間判断コマンドのための特別な処理(例えば、操作処理(S360a)の後の複数のステップの順番の調整など)をせずに、コマンドC1a、C2aを指定することによって、第2スクリプトSCaを生成できる。このように、作業者の負担は、大幅に軽減される。
A2-3.第3の操作判断処理:
図10は、スクリプトの別の例を示す概略図である。第3スクリプトSCbは、第1コマンドC1bと第2コマンドC2bを示している。第1コマンドC1bは、ロボットによる対象装置10の操作コマンドである。具体的には、第1コマンドC1bは、第1ロボット300A(図1)による対象装置10のクリーニングボタン12の押下である。第2コマンドC2bは、アプリケーションを使用する事後判断であり、第1コマンドC1bに対応付けられている。第2コマンドC2bの事後判断のための事後状態は、対象装置10から取得される対象状態データがクリーニングの進行中を示すことである。
第3スクリプトSCbが使用される場合、図5の処理は、以下のように進行する。第1コマンドC1bに関しては、S220、S240の判断結果は、Noである。第2コマンドC2bに関しては、S220、S240の判断結果は、Noである。第3スクリプトSCbが処理される場合、プロセッサ110は、S230、S250を実行せずに、図5の処理、すなわち、図3のS123の処理を終了する。
図11は、第3スクリプトSCbのための操作判断処理の例を示すシーケンス図である。第1コマンドC1bは、第1ロボット駆動装置200Aを指定し、第2コマンドC2bは、第1APP駆動装置600Aを指定していることとする。制御装置100は、第1コマンドC1b、第2コマンドC2bの順に、処理を進行する。S545b-S583bは、第1コマンドC1bのための処理を示している。S603b-S620bは、第2コマンドC2bのための処理を示している。
S545bでは、制御装置100のプロセッサ110は、第1ロボット駆動装置200Aに操作指示を送信する。この指示は、第1コマンドC1bの詳細(ここでは、クリーニングボタン12の押下)を示すデータを含んでいる。
S550b-S580bでは、第1ロボット駆動装置200Aのプロセッサ210は、操作指示に従って第1ロボット300Aを駆動することによって、ツール320にクリーニングボタン12を押下させる。本実施例では、プロセッサ210は、以下の処理を実行する。
S550bでは、プロセッサ210は、操作指示に従って第1ロボット300Aを駆動することによって、ツール320を予め決められた基準位置に移動させる。基準位置は、ツール320の移動のための基準となる位置である。S555bでは、プロセッサ210は、基準位置からクリーニングボタン12の押下位置までのツール320の軌道を算出する。算出される軌道は、ロボット300Aの複数のジョイントの駆動手順(具体的には、各ジョイントの駆動量と駆動順)を示している。なお、クリーニングボタン12の押下位置は、予め決められている。また、基準位置から押下位置までの軌道は、予め決められてよい。S560bでは、プロセッサ210は、軌道に従って第1ロボット300Aを駆動することによって、ツール320を操作位置に移動させる。操作位置は、クリーニングボタン12の近傍のクリーニングボタン12から離れた位置である。S570bでは、プロセッサ210は、軌道に従って第1ロボット300Aを駆動することによって、ツール320を押下位置に移動させる。これにより、ツール320は、クリーニングボタン12を押下する。図示を省略するが、対象装置10は、クリーニングボタン12の押下に応じて、印刷ヘッドのクリーニングを開始する。クリーニングの開始後、第1端末700Aによって対象装置10から取得される対象状態データは、クリーニングの進行中を示している。S580bでは、第1ロボット300Aを駆動することによって、ツール320を基準位置に移動させる。S580bは、次回の操作判断処理のために、行われる。
本実施例では、ロボット駆動装置200の不揮発性記憶装置230は、種々の操作対象(例えば、クリーニングボタン12)に対応付けられるロボット300の制御パラメータを示すデータを、予め格納している(図示省略)。プロセッサ210は、操作対象に対応付けられる制御パラメータを使用してロボット300を制御することによって、ツール320に操作対象を操作させることができる。
S583bでは、プロセッサ210は、完了通知を制御装置100に送信する。以上により、第1コマンドC1bのための処理が終了する。
S603bでは、制御装置100のプロセッサ110は、データ要求を第1APP駆動装置600Aに送信する。この要求は、第2コマンドC2bの詳細(ここでは、アプリケーションからの対象状態データの取得)を示すデータを含んでいる。S610bでは、第1APP駆動装置600Aのプロセッサ610は、第1端末700A上で動作するアプリケーションの内部パラメータを参照し、対象状態データを取得する。対象装置10がクリーニングを実行している最中には、対象状態データは、クリーニングの進行中を示している。S615bでは、プロセッサ610は、対象状態データを制御装置100に送信する。S620bでは、制御装置100のプロセッサ110は、対象状態データを参照して、対象装置10の状態がクリーニングの進行中であるか否かを判断する。プロセッサ110は、判断結果を示すデータを、記憶装置115(例えば、不揮発性記憶装置130)に格納する。以上により、図11の処理は、終了する。
以上のように、本実施例では、ロボット300は、対象装置10を操作するための操作部の例であるツール320を有している。
図10に示すように、第3スクリプトSCbは、第1コマンドC1bと第2コマンドC2bとを含んでいる。第1コマンドC1bは、第1ロボット300Aのツール320による対象装置10のクリーニングボタン12の押下を第1ロボット駆動装置200Aに実行させるコマンドである。第1コマンドC1bは、ロボットの操作部による対象装置10の操作をロボット駆動部に実行させる第2種操作コマンドの例である。第2コマンドC2bは、対象装置10の操作に起因するアプリケーションの状態(ここでは、対象状態データがクリーニングの進行中を示す状態)が第1APP駆動装置600Aによって検知されるか否かを判断するコマンドである。第2コマンドC2bは、対象装置10の操作に起因するアプリケーションの状態がアプリケーション駆動部によって検知されるか否かを判断する第2種判断コマンドの例である。
図11に示すように、第2コマンドC2bは、対象装置10の操作の後に、操作に起因するアプリケーションの状態である事後状態(ここでは、クリーニングの進行中を示す対象状態データの取得)が第1APP駆動装置600Aによって検知されるか否かを判断する。第2コマンドC2bは、操作の後に、操作に起因するアプリケーションソフトウェアの状態である事後状態がアプリケーション駆動部によって検知されるか否かを判断する第2種事後判断コマンドの例である。
図11に示すように、判断コマンド(ここでは、第2コマンドC2b)が第2種事後判断コマンドである場合、プロセッサ110は、以下の処理を第1ロボット駆動装置200Aに実行させる。S580bでは、第1ロボット駆動装置200Aは、操作(S570b)の後に第1ロボット300Aのツール320を特定の位置に移動する。S583bでは、第1ロボット駆動装置200Aは、移動処理(S580b)の後に操作の完了通知を送信する。従って、プロセッサ110は、操作に起因する事後状態の判断を、適切に、実行できる。
A2-4.第4の操作判断処理:
図12は、スクリプトの別の例を示す概略図である。第4スクリプトSCcは、第1コマンドC1cと第2コマンドC2cを示している。第1コマンドC1cは、第1ロボット300A(図1)による対象装置10のスキャンボタン14の押下である。第2コマンドC2bは、アプリケーションを使用する時間判断コマンドであり、第1コマンドC1cに対応付けられている。時間判断は、対象装置10の操作の後に、制限時間内に、操作に起因するアプリケーションの状態である結果状態がアプリケーション駆動部によって検知されるか否かの判断である。第2コマンドC2cの判断のための結果状態は、対象装置10からスキャンデータが取得されることである。
第4スクリプトSCcが使用される場合、図5の処理は、以下のように進行する。第1コマンドC1cに関しては、S220、S240の判断結果は、Noである。第2コマンドC2cに関しては、S220の判断結果はNoであり、S240の判断結果はYesである。この場合、S250で、制御装置100のプロセッサ110は、第2コマンドC2cに対応する第1コマンドC1cの前に、第2種準備処理P2を追加する。第2種準備処理P2は、以下の処理を含んでいる。
(A)ロボット駆動装置200に、トークンを送信する。
(B)ロボット駆動装置200に、操作の完了通知の自動送信指示を送信する。
(C)APP駆動装置600に、トークンを送信する。
(D)APP駆動装置600に、自動データ取得指示を送信する。
図13、図14は、第4スクリプトSCcのための操作判断処理の例を示すシーケンス図である。第1コマンドC1cは、第1ロボット駆動装置200Aを指定し、第2コマンドC2cは、第1APP駆動装置600Aを指定していることとする。図13に示すように、第1コマンドC1cの処理の前に、第2種準備処理P2のための処理が追加されている。図13のS510c-S540cは、第2種準備処理P2のための処理である。図13のS545c-S575cと、図14のS580c、S583cとは、第1コマンドC1cのための処理である。図14の残りの処理は、第2コマンドC2cのための処理である。
S510c(図13)では、制御装置100のプロセッサ110は、通信指示と自動送信指示とを第1ロボット駆動装置200Aに送信する。通信指示と自動送信指示とは、以下の相違点を除いて、図8のS310aの通信指示と自動送信指示と、それぞれ同じである。
(相違点1a)宛先が、第1ロボット駆動装置200Aである。
(相違点1b)自動送信指示が、第1コマンドC1cを示すデータを含んでいる。
なお、S510cで送信されるトークンを、トークンTKcと呼ぶ。
S515cでは、第1ロボット駆動装置200Aのプロセッサ210は、トークンTKcを記憶装置215(例えば、不揮発性記憶装置230)に格納する。S520cでは、プロセッサ210は、完了通知を制御装置100に送信する。
S525cでは、制御装置100のプロセッサ110は、通信指示と自動データ取得指示とを、第1APP駆動装置600Aに送信する。通信指示は、トークンTKcと第1ロボット駆動装置200Aとを示すデータを含んでいる。自動データ取得指示は、スキャンデータの取得を自動的に行うための指示である。
S530cでは、第1APP駆動装置600Aのプロセッサ610は、トークンTKcを記憶装置615(例えば、不揮発性記憶装置630)に格納する。S535cでは、プロセッサ610は、S525cの通信指示に応じて、第1ロボット駆動装置200Aに、通信の確立要求を送信する。駆動装置200A、600Aは、図8のS340aと同様に、通信を確立する。以後、駆動装置200A、600Aは、他の装置に情報を送信する場合に、トークンTKcを示すデータも送信する。
S540cでは、プロセッサ610は、完了通知を制御装置100に送信する。以上により、第2種準備処理P2のための処理が終了する。
S545cでは、制御装置100のプロセッサ110は、第1ロボット駆動装置200Aに操作指示を送信する。この指示は、第1コマンドC1cの詳細(ここでは、スキャンボタン14の押下)を示すデータを含んでいる。
続くS550c、S555c、S560c、S570cは、クリーニングボタン12に代えてスキャンボタン14が押下される点を除いて、図11のS550b、S555b、S560b、S570bと、それぞれ同じである。図示を省略するが、対象装置10は、スキャンボタン14の押下に応じて、文書のスキャンを開始する。本実施例では、対象装置10は、スキャンの完了に応じて、スキャンデータを第1APP駆動装置600Aに送信する。
図13では、S560cとS570cとの間に、S565cが挿入されている。S565cでは、プロセッサ210は、第1ロボット駆動装置200Aの図示しないタイマを参照して、現在の時刻Tcを取得する。本実施例では、自動送信指示(S510c)が受信される場合、プロセッサ210は、操作処理(S570c)の開始時に、時刻Tcを取得する。時刻Tcは、操作が行われる時刻を示している(以下、時刻Tcを、操作時刻Tcとも呼ぶ)。
操作処理(S570c)の後、S575cで、プロセッサ210は、第1APP駆動装置600Aに、操作の完了通知を送信する。この通知は、トークンTKcと操作時刻Tcとを示すデータを含んでいる。本実施例では、自動送信指示(S510c)が受信される場合、プロセッサ210は、操作処理(S570c)の完了に応じて、ツール320の移動処理(図14:S580c)を開始する前に、完了通知を送信する(S575c)。これにより、第1APP駆動装置600Aは、ツール320の移動を待たずに、処理を進行できる。
S585c(図14)では、第1APP駆動装置600Aのプロセッサ610は、画像取得処理の繰り返しを開始する。本実施例では、自動データ取得指示(図13:S525c)が受信される場合、プロセッサ610は、完了通知(図13:S575c)に応じて、スキャンデータの取得処理(図14:S610c)の繰り返しを開始する。S610cでは、プロセッサ610は、第1端末700Aのアプリケーションの内部パラメータを参照し、スキャンデータを検索する。第1端末700Aが対象装置10からスキャンデータを取得した後には、スキャンデータが検出される。この場合、プロセッサ610は、第1端末700AからスキャンデータSDを取得する。第1端末700Aが対象装置10からスキャンデータを取得する前には、スキャンデータは検出されない。この場合、プロセッサ610は、スキャンデータを取得できない。
S615cで、プロセッサ610は、スキャン画像SDと、トークンTKcと、操作時刻Tcと、を示すデータを、制御装置100に送信する。S610cでスキャンデータを取得できない場合、プロセッサ610は、スキャンデータの代わりに、スキャンデータを取得できないことを示す結果データを送信する。プロセッサ610は、その後、S610cを繰り返す。
S620cでは、制御装置100のプロセッサ110は、第1APP駆動装置600Aからのデータを使用して、検査を行う。S615cでスキャンデータが取得される場合、プロセッサ110は、検査結果は合格である、と判断する。スキャンデータが取得されない場合、プロセッサ110は、検査結果は不合格である、と判断する。プロセッサ110は、検査結果を示すデータを、記憶装置115(例えば、不揮発性記憶装置130)に格納する。
S625cでは、プロセッサ110は、検査結果が合格であるか否かを判断する。S625cの判断結果がNoである場合、S630cで、プロセッサ110は、制御装置100の図示しないタイマを参照して、現在時刻Tを取得する。プロセッサ110は、現在時刻Tが、操作時刻Tcから所定の第2制限時間TWc(例えば、5秒)が経過する前であるか否かを判断する。S630cの判断結果がYesである場合、S635cで、プロセッサ110は、第1APP駆動装置600Aに、データの再送要求を送信する。第1APP駆動装置600Aのプロセッサ610は、再送要求に応じて、S615cに移行し、最新のデータを制御装置100に送信する。以後、S625c、または、S630cの判断結果が変化するまで、S610c-S635cの処理が繰り返される(以下、繰り返される処理の全体を、処理S600iとも呼ぶ)。
第1ロボット駆動装置200Aのプロセッサ210は、図13のS575cの後、S580c(図14)で、第1ロボット300Aを駆動することによって、ツール320を基準位置に移動させる。S580cの後、S583cで、プロセッサ210は、完了通知を、制御装置100に送信する。以上により、第1コマンドC1cのための処理が終了する。
図14のS600iの下には、S625cの判断結果がYesである場合の処理S600jが示されている。検査結果が合格であると判断される場合(S625c:Yes)、S640cで、プロセッサ110は、終了指示を第1APP駆動装置600Aに送信する。第1APP駆動装置600Aのプロセッサ610は、この指示に応じて、画像取得処理の繰り返しを終了する。以上により、操作判断処理は終了する。
図14のS600jの下には、S630cの判断結果がNoである場合の処理S600kが示されている。現在時刻Tが、操作時刻Tcから第2制限時間TWcが経過した後である場合(S630c:No)、S645aで、プロセッサ110は、終了指示を第1APP駆動装置600Aに送信する。第1APP駆動装置600Aのプロセッサ610は、この指示に応じて、画像取得処理の繰り返しを終了する。以上により、操作判断処理は終了する。
以上のように、第4スクリプトSCc(図12)は、第1コマンドC1cと第2コマンドC2cとを含んでいる。第1コマンドC1cは、図10の第1コマンドC1bと同様に、第2種操作コマンドの例である。第2コマンドC2cは、図10の第2コマンドC2bと同様に、第2種判断コマンドの例である。ただし、図10の第2コマンドC2bとは異なり、第2コマンドC2cは、対象装置10の操作の後に、第2制限時間TWc内に、操作に起因するアプリケーションの状態である結果状態(ここでは、スキャンデータを取得した状態)が第1APP駆動装置600Aによって検知されるか否かを判断する。このような第2コマンドC2cは、操作の後に、制限時間内に、操作に起因するアプリケーションソフトウェアの状態である結果状態がアプリケーション駆動部によって検知されるか否かを判断する第2種時間判断コマンドの例である。
図13、図14に示すように、判断コマンド(ここでは、第2コマンドC2c)が第2種時間判断コマンドである場合、プロセッサ110は、ツール320を基準位置に移動させる移動処理(図14:S580c)と、この移動処理よりも先に完了通知を送信する先通知処理(図13:S575c)とを、第1ロボット駆動装置200Aに実行させる。この理由は、第2種時間判断コマンドに基づく適切な判断を行うためである。具体的には、以下の通りである。
図11には、操作処理(S570b)からデータ取得(S610b)までの第3期間TD3が示されている。操作処理(S570b)の後のツール320の移動(S580b)は、第3期間TD3内に行われる。ツール320の移動に要する時間が長い場合、第3期間TD3は、その分、長くなる。図13、図14には、操作処理(S570c)から最初のデータ取得(S610c)までの第4期間TD4が示されている。操作処理(S570c)の後のツール320の移動(図14:S580c)は、第4期間TD4よりも後に実行される。ツール320の移動に要する時間が長い場合であっても、第4期間TD4の延長の可能性は、低減される。仮に、第4期間TD4が第2制限時間TWcよりも長い場合、最初のスキャンデータの取得(S610c)は、操作時刻Tcから第2制限時間TWcが経過した後に行われる。この結果、第2コマンドC2cの適切な判断ができない。本実施例では、そのような不具合の可能性は、低減される。また、このような不具合を避けるための検査専用の機能(例えば、テストモード)を対象装置10に実装しなくても、適切な検査が可能である。
また、図13、図14のシーケンス図は、判断コマンド(ここでは、第2コマンドC2c)が第2種時間判断コマンドである場合の処理を示している。先通知処理(図13:S575c)は、制御装置100を介さずにトークンTKcを使用して完了通知を第1APP駆動装置600Aに送信する処理を含んでいる。プロセッサ110は、対象装置10の操作(S570c)の開始前に、S510c、S525cで、第1APP駆動装置600Aと第1ロボット駆動装置200Aとのそれぞれに、トークンTKcを送信する。トークンTKcは、トークンTKcを伴う通信がスクリプト(ここでは、第4スクリプトSCc)に基づくひとまとまりの処理のためのものであることを識別する。トークンTKcは、通信を識別する通信識別子の例である。さらに、プロセッサ110は、S525cで、自動データ取得指示を第1APP駆動装置600Aに送信する。この指示により、第1APP駆動装置600Aは、完了通知(S575c)に応じて、アプリケーションの状態を検知する(ここでは、アプリケーションの内部パラメータからスキャンデータが取得される)。以上により、第1ロボット駆動装置200Aは、完了通知が制御装置100によって中継される場合と比べて速やかに、操作の完了通知を第1APP駆動装置600Aに送信できる。また、第1APP駆動装置600Aは、制御装置100からの指示を待つ場合と比べて速やかに、アプリケーションの状態を検知できる。以上により、第1ロボット駆動装置200Aは、適切に、アプリケーションの状態を検知できる。例えば、第1APP駆動装置600Aは、操作時刻Tcから第2制限時間TWcが経過するよりも前に、アプリケーションの状態を検知できる。
また、作業者は、時間判断コマンドのための特別な処理(例えば、操作処理(S570c)の後の複数のステップの順番の調整など)をせずに、コマンドC1c、C2cを指定することによって、第4スクリプトSCcを生成できる。このように、作業者の負担は、大幅に軽減される。
A2-5.第5の操作判断処理:
図15は、スクリプトの別の例を示す概略図である。この第5スクリプトSCdは、図12の第4スクリプトSCcの第1コマンドC1cと第2コマンドC2cとの間に、第2コマンドC2dを追加したものである。第1コマンドC1dは、図12の第1コマンドC1cと同じであり、第3コマンドC3dは、図12の第2コマンドC2cと同じである。第2コマンドC2dは、ロボットを使用する事後判断であり、第1コマンドC1dに対応付けられている。第2コマンドC2dの判断のための事後状態は、対象装置10のタッチスクリーン11にスキャンの動作中を示す画面(スキャン動作画面と呼ぶ)が表示される状態である。図5の処理では、第2コマンドC2dに関しては、S220、S240の判断結果は、Noである。
図16は、第5スクリプトSCdのための操作判断処理の例を示すシーケンス図である。図16は、図13の続きを示している。第5スクリプトSCdが処理される場合、図13、図16の順に、操作判断処理が進行する。図13の処理は、SCc(図12)が処理される場合の処理と同じである。図13の第2種準備処理P2のための処理は、第3コマンドC3dに起因して追加される。図13の第1コマンドC1cのための処理は、第1コマンドC1dに起因して実行される。
図16のS585c-S635cは、第3コマンドC3dのための処理である。各ステップの処理は、図14の同じ符号のステップの処理と、同じである。ここで、S625cの判断結果がNoであり、S630cの判断結果がYesであることとしている。処理S600iは、繰り返し実行される。S580c、S583cは、第1コマンドC1dのための処理であり、図14のS580c、S583cと、それぞれ同じである。
S583cの完了通知(すなわち、第1コマンドC1dの完了通知)に応じて、制御装置100のプロセッサ110は、第2コマンドC2dのための処理を開始する。S660dでは、プロセッサ110は、画像データ取得指示を第1ロボット駆動装置200Aに送信する。この指示は、第2コマンドC2dの詳細を示すコマンドデータを含んでいる。本実施例では、このコマンドデータは、タッチスクリーン11(図1)の撮影位置へのデジタルカメラ330の移動と、デジタルカメラ330による撮影と、を示している。
S665dで、第1ロボット駆動装置200Aのプロセッサ210は、S660dの指示に応じて、第1ロボット300Aを駆動することによって、デジタルカメラ330を撮影位置に移動させる。
S670dで、プロセッサ210は、第1ロボット300Aのデジタルカメラ330に撮影指示を送信する。デジタルカメラ330は、対象装置10のタッチスクリーン11を含む部分を撮影する。プロセッサ210は、デジタルカメラ330から、撮影画像データを取得する。本実施例では、S670dが実行される時点では、第1端末700Aによるスキャンデータの取得は完了していないこととする。従って、撮影画像は、スキャン動作画面を表示するタッチスクリーン11を示している。
S675dでは、プロセッサ210は、撮影画像データを制御装置100に送信する。
S680dでは、制御装置100のプロセッサ110は、撮影画像を使用して、検査を行う。プロセッサ110は、例えば、スキャン動作画面を表示するタッチスクリーン11の基準画像と、撮影画像と、の間の類似度を算出する。類似度の算出方法は、図9のS420aで説明した算出方法と同じであってよい。プロセッサ110は、類似度が第2閾値以上である場合に、スキャン動作画面が表示されている(すなわち、検査結果は合格である)と判断する。類似度が第2閾値未満である場合、プロセッサ110は、スキャン動作画面が表示されていない(すなわち、検査結果は不合格である)と判断する。第2閾値は、判断結果が適切であるように、予め実験的に決定される。プロセッサ110は、検査結果を示すデータを、記憶装置115(例えば、不揮発性記憶装置130)に格納する。以上により、操作判断処理は終了する。
以上のように、本実施例では、図12の第4スクリプトSCcが処理される場合と同様に、第3コマンドC3dの時間判断のための処理は、操作後のツール320の移動(図16:S580c)を待たずに、開始される。従って、プロセッサ110は、時間判断コマンドに基づく適切な判断が可能である。また、作業者は、時間判断コマンドのための特別な処理(例えば、操作処理(S570c)の後の複数のステップの順番の調整など)をせずに、コマンドC1d、C2d、C3dを指定することによって、第5スクリプトSCdを生成できる。このように、作業者の負担は、大幅に軽減される。
A2-6.第6の操作判断処理:
図17は、スクリプトの別の例を示す概略図である。この第6スクリプトSCeは、図7の第2スクリプトSCaの第2コマンドC2aの後ろに、第3コマンドC3eを追加したものである。コマンドC1e、C2eは、図7のコマンドC1a、C2aと、それぞれ同じである。第3コマンドC3eは、ロボットを使用する時間判断であり、第1コマンドC1e対応付けられている。第3コマンドC3eの時間判断は、操作後、第3制限時間TWe内に、対象装置10のレディランプ17が点灯する状態が検知されるか否かの判断である。本実施例では、対象装置10は、印刷の完了後に、レディランプ17を点灯することとする。なお、第2コマンドC2eは、第1ロボット300Aを指定し、第3コマンドC3eは、第2ロボット300Bを指定することとする。
第6スクリプトSCeが使用される場合、図5の処理は、以下のように進行する。第3コマンドC3eに関しては、S220の判断結果がYesであり、S240の判断結果はNoである。制御装置100のプロセッサ110は、第3コマンドC3eに対応する第1コマンドC1eの前に、第3コマンドC3eのための第1種準備処理P1を追加する。
図18は、第6スクリプトSCeのための操作判断処理の例を示すシーケンス図である。この操作判断処理は、図8、図9の操作判断処理に、第3コマンドC3eのための処理を追加したものである。具体的には、第3コマンドC3eに対応する第1種準備処理P1のための処理(S310e-S345e)と、S367eと、第3コマンドC3eのための処理(S375e-S440e)と、が追加されている。他の処理は、図8、図9の対応する処理と同じである。第2コマンドC2eのための第1種準備処理P1は、図8の第2コマンドC2aのための第1種準備処理P1と同じである。第1コマンドC1eのための処理には、S365aに続くS367eが追加されている。第2コマンドC2eのための処理は、図9の第2コマンドC2aのための処理と同じである。ここで、S425aの判断結果がYesであることとしている。
図18では、第3コマンドC3eに対応する第1種準備処理P1は、第1コマンドC1eの処理の前に、追加されている。追加された処理は、S310e-S345eで構成されている。S310e-S345eの各ステップの処理は、以下の相違点を除いて、図8のS310a-S345aの対応するステップの処理と同じである(対応するステップは、符号の末尾の文字「e」を「a」に置換した符号を有するステップである)。
(相違点2a)第1ロボット駆動装置200Aに代えて第2ロボット駆動装置200Bが使用される。
(相違点2b)トークンTKaとは異なるトークンTKeが使用される。
(相違点2c)S335eの撮影位置は、レディランプ17の撮影に適した位置である。
以上の処理により、第2ロボット300Bのデジタルカメラ330は、レディランプ17の撮影に適した位置に配置される。なお、第3コマンドC3eに対応する第1種準備処理P1は、第2コマンドC2eに対応する第1種準備処理P1よりも先でもよく後でもよい。
第1コマンドC1eのための処理では、S367eで、第1APP駆動装置600Aのプロセッサ610は、第2ロボット駆動装置200Bに、完了通知を送信する。この通知は、トークンTKeと操作時刻Taとを示すデータを含んでいる。
第3コマンドC3eのための各ステップの処理は、以下の相違点を除いて、第2コマンドC2eのための対応するステップの処理と同じである(対応するステップは、符号の末尾の文字「e」を「a」に置換した符号を有するステップである)。
(相違点3a)第1ロボット駆動装置200Aに代えて第2ロボット駆動装置200Bが使用される。
(相違点3b)トークンTKaとは異なるトークンTKeが使用される。
(相違点3c)検査(S420e)では、レディランプ17が点灯する状態が第2ロボット300Bのデジタルカメラ330によって検知されるか否かが判断される。
(相違点3d)第1制限時間TWaに代えて第3制限時間TWeが使用される。
S375eでは、第2ロボット駆動装置200Bのプロセッサ210は、画像取得処理の繰り返しを開始する。本実施例では、自動データ取得指示(S325e)が受信される場合、プロセッサ210は、完了通知(S367e)に応じて、撮影画像データの取得処理(S410a)の繰り返しを開始する。S415eでは、プロセッサ210は、撮影画像IMGeとトークンTKeと操作時刻Taとを示すデータを、制御装置100に送信する。
第1ロボット駆動装置200Aから制御装置100に送信されるデータは、トークンTKaを示している。第2ロボット駆動装置200Bから制御装置100に送信されるデータは、トークンTKaとは異なるトークンTKeを示している。従って、制御装置100のプロセッサ110は、トークンを使用して、データの送信元を識別できる。
S420eでは、制御装置100のプロセッサ110は、撮影画像を解析することによって、レディランプ17が点灯しているか否かを判断する。例えば、プロセッサ110は、レディランプ17を示す基準画像を使用するパターンマッチングによって、撮影画像中のレディランプ17を検出する。プロセッサ110は、撮影画像中の検出されたレディランプ17の明るさを参照して、レディランプ17が点灯しているか否かを判断する。
なお、第2コマンドC2eのための処理と、第3コマンドC3eのための処理とは、完了通知の送信(S365a、S367e)に応じて、並行して進行する。また、図18には、第3コマンドC3eのためのS425eの判断結果がYesである場合の処理が、示されている。図示を省略するが、検査結果が不合格である場合(S425e:No)、プロセッサ110は、図9のS425aの判断結果がNoである場合と同様に、処理を進行する。
以上のように、第6スクリプトSCe(図17)は、第2コマンドC2eと第3コマンドC3eとを含んでいる。第2コマンドC2eは、第1コマンドC1eによるUI画面752の操作の後に、第1制限時間TWa内に、第1の結果状態が第1ロボット300Aのデジタルカメラ330によって検知されるか否かを判断する時間判断コマンドである。第1の結果状態は、操作に起因する対象装置10の状態であり、ここでは、対象装置10から印刷物が出力された状態である。第3コマンドC3eは、第1コマンドC1eによるUI画面752の操作の後に、第3制限時間TWe内に、第2の結果状態が第2ロボット300Bのデジタルカメラ330によって検知されるか否かを判断する時間判断コマンドである。第2の結果状態は、操作に起因する対象装置10の状態であり、ここでは、レディランプ17が点灯する状態である。
SCeが処理される場合、制御装置100のプロセッサ110は、以下の処理を実行する。プロセッサ110は、第2コマンドC2eのための撮影位置に第1ロボット300Aのデジタルカメラ330を移動させる処理(S335a)を、UI画面752の操作(S360a)の開始前に、第1ロボット駆動装置200Aに実行させる。また、プロセッサ110は、第3コマンドC3eのための撮影位置に第2ロボット300Bのデジタルカメラ330を移動させる処理(S335e)を、UI画面752の操作(S360a)の開始前に、第2ロボット駆動装置200Bに実行させる。
以上により、プロセッサ110は、第2コマンドC2eの適切な判断と、第3コマンドC3eの適切な判断とを、実行できる。
A2-7.第7の操作判断処理:
図19は、スクリプトの別の例を示す概略図である。この第7スクリプトSCfは、図7の第2スクリプトSCaの第1コマンドC1aの前に、第1コマンドC1fを追加したものである。コマンドC2f、C3fは、図7のコマンドC1a、C2aと、それぞれ同じである。第1コマンドC1fは、アプリケーションの操作コマンドである。具体的には、第1コマンドC1fは、リモート電源ボタン752d(図2)のタップである。対象装置10の電源の状態がスリープ状態である場合に、リモート電源ボタン752dをタップすることによって、対象装置10の電源をオンにすることができる。図5の処理では、第1コマンドC1fに関しては、S220、S240の判断結果は、Noである。なお、第1コマンドC1fは、第2APP駆動装置600Bを指定し、第2コマンドC2fは、第1ロボット駆動装置200Aを指定することとする。
図20は、第7スクリプトSCfのための操作判断処理の例を示すシーケンス図である。この操作判断処理は、図8の操作判断処理に、第1コマンドC1fのための処理を追加したものである。具体的には、S350f、S360f、S370fが追加されている。第3コマンドC3fのための第1種準備処理P1(S310a-S345a)は、図8の第1種準備処理P1と同じである。コマンドC2fのための処理(S350a-S370a)は、図8の第1コマンドC1aのための処理と同じである。
S350fでは、制御装置100のプロセッサ110は、第2APP駆動装置600Bに操作指示を送信する。この指示は、第1コマンドC1fの詳細(ここでは、リモート電源ボタン752dのタップ)を示すデータを含んでいる。S360fでは、第2APP駆動装置600Bのプロセッサ610は、操作指示に従って、リモート電源ボタン752dのタップを、第2端末700Bに適用する。これにより、対象装置10の電源がオンになる。S370fでは、プロセッサ610は、完了通知を、制御装置100に送信する。続いて、第1種準備処理P1のための処理と、第2コマンドC2fのための処理とが、行われる。図20の処理の後、図9の処理が実行される。そして、操作判断処理は、終了する。
以上のように、第7スクリプトSCf(図19)は、コマンドC1f、C2f、C3fを含んでいる。第1コマンドC1fは、第2端末700BのアプリケーションのUI画面752の第1の操作(ここでは、リモート電源ボタン752dのタップ)を第2APP駆動装置600Bに実行させる。第2コマンドC2fは、第1コマンドC1fによる第1の操作の後に、第1端末700AのアプリケーションのUI画面752の第2の操作(ここでは、印刷ボタン13のタップ)を第1APP駆動装置600Aに実行させる。第3コマンドC3fは、第2コマンドC2fによる第2の操作の後に、第1制限時間TWa内に、第2の操作に起因する対象装置10の結果状態(印刷物の出力)がデジタルカメラ330によって検知されるか否かを判断する時間判断コマンドである。
第7スクリプトSCfが処理される場合、制御装置100のプロセッサ110は、以下の処理を実行する。プロセッサ110は、第3コマンドC3fのための撮影位置に第1ロボット300Aのデジタルカメラ330を移動させる処理(S335a)を、UI画面752の操作(S360a)の開始前に、第1ロボット駆動装置200Aに実行させる。従って、プロセッサ110は、第3コマンドC3fの適切な判断を、実行できる。
A2-8.第8の操作判断処理:
図21は、スクリプトの別の例を示す概略図である。この第8スクリプトSCgは、図12の第4スクリプトSCcの第2コマンドC2cの後ろに、第3コマンドC3gを追加したものである。コマンドC1g、C2gは、図12のコマンドC1c、C2cとそれぞれ同じである。第3コマンドC3gは、アプリケーションを使用する時間判断コマンドであり、第1コマンドC1gに対応付けられている。第3コマンドC3gの時間判断のための結果状態は、対象装置10から取得される対象状態データがレディ状態を示すことである。本実施例では、スキャン処理の進行中には、対象装置10の状態はスキャン進行中であることとする。そして、スキャン処理の完了に応じて、対象装置10の状態はスキャン進行中からレディ状態に移行することとする。また、第2コマンドC2gは、第1APP駆動装置600Aを指定し、第3コマンドC3gは、第2APP駆動装置600Bを指定することとする。
第8スクリプトSCgが使用される場合、図5の処理は、以下のように進行する。第3コマンドC3gに関しては、S220の判断結果がNoであり、S240の判断結果はYesである。制御装置100のプロセッサ110は、第3コマンドC3gに対応する第1コマンドC1gの前に、第3コマンドC3gのための第2種準備処理P2を追加する。
図22は、第8スクリプトSCgのための操作判断処理の例を示すシーケンス図である。この操作判断処理は、図13、図14の操作判断処理に、第3コマンドC3gのための処理を追加したものである。具体的には、第3コマンドC3gに対応する第2種準備処理P2のための処理(S510g-S540g)と、S577gと、第3コマンドC3gのための処理(S585g-S640g)と、が追加されている。他の処理は、図13、図14の対応する処理と同じである。第2コマンドC2gのための第2種準備処理P2は、図13の第2コマンドC2cのための第2種準備処理P2と同じである。第1コマンドC1gのための処理には、S575cに続くS577gが追加されている。第2コマンドC2gのための処理は、図14の第2コマンドC2cのための処理と同じである。ここで、S625の判断結果がYesであることとしている。
図22では、第3コマンドC3gに対応する第2種準備処理P2は、第1コマンドC1gの前に追加されている。追加された処理は、S510g-S540gで構成されている。S510g-S540gの各ステップの処理は、以下の相違点を除いて、図13のS510c-S540cの対応するステップの処理と同じである(対応するステップは、符号の末尾の文字「g」を「c」に置換した符号を有するステップである)。
(相違点4a)第1APP駆動装置600Aに代えて第2APP駆動装置600Bが使用される。
(相違点4b)トークンTKaとは異なるトークンTKgが使用される。
(相違点4c)自動送信指示(S510g)と自動データ取得指示(S525g)とは、第3コマンドC3gを示すデータを含んでいる。
なお、第3コマンドC3gに対応する第2種準備処理P2は、第2コマンドC2gに対応する第2種準備処理P2よりも先でもよく後でもよい。
第1コマンドC1gのための処理では、S577gで、第1ロボット駆動装置200Aのプロセッサ210は、第2APP駆動装置600Bに、完了通知を送信する。この通知は、トークンTKgと操作時刻Tcとを示すデータを含んでいる。本実施例では、自動送信指示(S510g)が受信される場合、プロセッサ210は、操作処理(S570c)の完了に応じて、ツール320の移動処理(S580c)を開始する前に、完了通知を送信する(S577g)。これにより、第2APP駆動装置600Bは、ツール320の移動を待たずに、処理を進行できる。
第3コマンドC3gのための各ステップの処理は、以下の相違点を除いて、第2コマンドC2gのための対応するステップの処理と同じである(対応するステップは、符号の末尾の文字「g」を「c」に置換した符号を有するステップである)。
(相違点5a)第1APP駆動装置600Aに代えて第2APP駆動装置600Bが使用される。
(相違点5b)トークンTKaとは異なるトークンTKgが使用される。
(相違点5c)S610gでは、対象状態データが取得される。
(相違点5d)S615gでは、対象状態データが送信される。
(相違点5e)検査(S620g)では、対象状態データがレディ状態を示すか否かが判断される。
(相違点5f)第2制限時間TWcに代えて第4制限時間TWgが使用される。
S585gでは、第2APP駆動装置600Bのプロセッサ610は、対象状態データ取得処理の繰り返しを開始する。本実施例では、自動データ取得指示(S525g)が受信される場合、プロセッサ610は、完了通知(S577g)に応じて、対象状態データの取得処理(S610g)の繰り返しを開始する。S615gでは、プロセッサ610は、状態対象データSTgに加えて、トークンTKgと、操作時刻Tcと、を示すデータを、制御装置100に送信する。プロセッサ610は、その後、S610gを繰り返す。
第1APP駆動装置600Aから制御装置100に送信されるデータは、トークンTKcを示している。第2APP駆動装置600Bから制御装置100に送信されるデータは、トークンTKcとは異なるトークンTKgを示している。従って、制御装置100のプロセッサ110は、トークンを使用して、データの送信元を識別できる。
なお、第2コマンドC2gのための処理と、第3コマンドC3gのための処理とは、完了通知の送信(S575c、S577g)に応じて、並行して進行する。また、図22には、第3コマンドC3gのためのS625gの判断結果がYesである場合の処理が、示されている。図示を省略するが、検査結果が不合格である場合(S625g:No)、プロセッサ110は、図14のS625cの判断結果がNoである場合と同様に、処理を進行する。
以上のように、第8スクリプトSCg(図21)は、コマンドC1g、C2g、C3gを含んでいる。第2コマンドC2gは、第1コマンドC1gによる操作の後に、第2制限時間TWc内に、操作に起因する第1端末700Aのアプリケーションの状態である第1の結果状態(ここでは、スキャンデータを取得した状態)が第1APP駆動装置600Aによって検知されるか否かを判断する。第3コマンドC3gは、第1コマンドC1gによる操作の後に、第4制限時間TWg内に、操作に起因する第2端末700Bのアプリケーションの状態である第2の結果状態(ここでは、対象状態データがレディ状態を示す状態)が第2APP駆動装置600Bによって検知されるか否かを判断する。
第8スクリプトSCgが処理される場合、プロセッサ110は、以下の処理を実行する。プロセッサ110は、ツール320を基準位置に移動させる移動処理(S580c)と、この移動処理よりも先に完了通知を送信する先通知処理(S575c、S577g)とを、第1ロボット駆動装置200Aに実行させる。先通知処理(S575c、S577g)は、S575cとS577gを含んでいる。S575cは、制御装置100を介さずに、第1APP駆動装置600AのためのトークンTKcを使用して完了通知を第1APP駆動装置600Aへ送信する処理である。S577gは、制御装置100を介さずに、第2APP駆動装置600BのためのトークンTKgを使用して完了通知を第2APP駆動装置600Bへ送信する処理である。
以上により、プロセッサ110は、第2コマンドC2gの適切な判断と、第3コマンドC3gの適切な判断とを、実行できる。
A2-9.第9の操作判断処理:
図23は、スクリプトの別の例を示す概略図である。この第9スクリプトSChは、図12の第4スクリプトSCcの第1コマンドC1cの前に、第1コマンドC1hを追加したものである。コマンドC2h、C3hは、図12のコマンドC1c、C2cとそれぞれ同じである。第1コマンドC1hは、ロボットによる対象装置10の操作コマンドである。具体的には、第1コマンドC1hは、第2ロボット300B(図1)による対象装置10の電源ボタン15の押下である。第9スクリプトSChは、対象装置10の電源がオフである状態からの検査に使用される。図5の処理では、第1コマンドC1hに関しては、S220、S240の判断結果は、Noである。
図24は、第9スクリプトSChのための操作判断処理の例を示すシーケンス図である。この操作判断処理は、図13、図14の操作判断処理に、第1コマンドC1hのための処理(S545h-S583h)を追加したものである。コマンドC2h、C3hのための処理は、図13、図14のコマンドC1c、C2cのための処理と、それぞれ同じである。
S545h-S583hの各ステップは、以下の相違点を除いて、図11のS545b-S583bの対応するステップの処理と同じである(対応するステップは、符号の末尾の文字「h」を「b」に置換した符号を有するステップである)。
(相違点6a)第1ロボット駆動装置200Aに代えて第2ロボット駆動装置200Bが使用される。
(相違点6b)第1コマンドC1bに代えて、第1コマンドC1hが使用される。
(相違点6c)S555hの軌道は、基準位置から電源ボタン15の押下位置までの軌道である。
(相違点6d)S560hの操作位置は、電源ボタン15の近傍の電源ボタン15から離れた位置である。
以上のS545h-S583hの処理により、第2ロボット300Bのツール320は、対象装置10の電源ボタン15を押下する。これにより、対象装置10の電源がオンになる。以後、図13、図14の操作判断処理と同じ処理が実行される。
以上のように、第9スクリプトSCh(図23)は、コマンドC1h、C2h、C3hを含んでいる。第1コマンドC1hは、第2ロボット300Bのツール320による対象装置10の第1の操作(ここでは、電源ボタン15の押下)を第2ロボット駆動装置200Bに実行させる。第2コマンドC2hは、第1ロボット300Aのツール320による対象装置10の第2の操作(ここでは、スキャンボタン14の押下)を第1ロボット駆動装置200Aに実行させる。第3コマンドC3hは、第2コマンドC2hの第2の操作の後に、第2制限時間TWc内に、第2の操作に起因するアプリケーションの結果状態(ここでは、スキャンデータを取得した状態)が第1APP駆動装置600Aによって検知されるか否かを判断する。
第9スクリプトSChが処理される場合、プロセッサ110は、図13、図14の操作判断処理と同様に、ツール320を基準位置に移動させる移動処理(S580c)と、この移動処理よりも先に完了通知を送信する先通知処理(S575c)とを、第1ロボット駆動装置200Aに実行させる。従って、プロセッサ110は、第3コマンドC3gの適切な判断を、実行できる。
B.変形例:
(1)図18の処理のように複数のロボット駆動装置200が検査に使用される場合、ロボット駆動装置200毎に異なるトークンが使用されることが好ましい。この構成によれば、複数のロボット駆動装置200からの通信(ひいては、情報)の取り違えの可能性を低減できる。また、図20の処理のように複数のAPP駆動装置600が検査に使用される場合、APP駆動装置600毎に異なるトークンが使用されることが好ましい。この構成によれば、複数のAPP駆動装置600からの通信(ひいては、情報)の取り違えの可能性を低減できる。なお、通信を識別する通信識別子は、トークンに限らず、任意の情報であってよい。例えば、通信識別子は、駆動装置の識別番号であってよい。なお、ロボット駆動装置200の総数は、1以上の任意の数であってよい。また、APP駆動装置600の総数は、1以上の任意の数であってよい。なお、通信識別子は省略されてよい。例えば、制御装置100は、駆動装置200、600のネットワークアドレス(例えば、IPアドレス)を使用して、通信を識別してよい。
(2)操作判断処理は、上記の処理に限らず、他の種々の処理であってよい。例えば、APP駆動装置600からロボット駆動装置200へ送信される操作の完了通知(例えば、図8のS365aの完了通知)は、制御装置100によって中継されてよい。ロボット駆動装置200からAPP駆動装置600に送信される操作の完了通知(例えば、図13のS575cの完了通知)は、制御装置100によって中継されてよい。
(3)図8、図9等の処理では、ロボット駆動装置200は、撮影画像データの取得処理(S410a)を繰り返す。そして、制御装置100からの要求(S435a)に応じて、ロボット駆動装置200は、最新の撮影画像データを制御装置100に送信する。これに代えて、ロボット駆動装置200は、操作の完了通知(例えば、図8:S365a)の受信後、操作時刻(例えば、操作時刻Ta)からの制限時間(例えば、第1制限時間TWa)の経過を待ってよい。ロボット駆動装置200は、現在時刻Tが制限時間の終了時刻になった時点で、撮影画像データの取得処理を実行してよい。そして、ロボット駆動装置200は、取得した撮影画像データを、制御装置100に送信してよい。制御装置100は、取得した撮影画像データを使用して、検査結果が合格であるか否かを判断してよい。
(4)図13、図14等の処理では、APP駆動装置600は、アプリケーションの状態を示すデータ(例えば、スキャンデータ、対象状態データなど)の取得処理(S610c)を繰り返す。そして、制御装置100からの要求(S635c)に応じて、APP駆動装置600は、最新のデータを制御装置100に送信する。これに代えて、APP駆動装置600は、操作の完了通知(例えば、図13:S575c)の受信後、操作時刻(例えば、操作時刻Tc)からの制限時間(例えば、第2制限時間TWc)の経過を待ってよい。APP駆動装置600は、現在時刻Tが制限時間の終了時刻になった時点で、アプリケーションの状態を示すデータの取得処理を実行してよい。そして、APP駆動装置600は、取得したデータを、制御装置100に送信してよい。制御装置100は、取得したデータを使用して、検査結果が合格であるか否かを判断してよい。
(5)制限時間(例えば、制限時間TWa、TWc、TWe、TWg)の開始時刻は、上記の操作時刻Ta、Tcに代えて、操作が行われる時刻と相関を有する種々の時刻であってよい。例えば、操作処理を実行する駆動装置200、600に代えて、他の装置が、開始時刻を決定してよい。制御装置100は、操作指示を送信する段階で、開始時刻を現在時刻に決定してよい。この場合、制御装置100から操作処理を行う駆動装置200、600に送信される操作指示は、開始時刻を示すデータを含むことが好ましい。また、検査に使用されるデータ(例えば、撮影画像データ、スキャンデータ、対象状態データ)を取得する駆動装置200、600が、操作の完了通知の受信に応じて、開始時刻を現在時刻に決定してよい。この場合、駆動装置200、600は、開始時刻を決定した場合に、開始時刻を制御装置100に通知することが好ましい。いずれの場合も、制御装置100とロボット駆動装置200とAPP駆動装置600とは、開始時刻を互いに共有してよい。
(6)ロボット300の制御のための制御パラメータを示すデータは、ロボット駆動装置200の不揮発性記憶装置230に代えて、制御装置100の不揮発性記憶装置130に格納されてよい。この場合、制御装置100からロボット300へ送信される移動指示と操作指示は、制御パラメータを示すデータを含むことが好ましい。
(7)ロボットを制御するためのロボット駆動部は、制御装置100上で動作するソフトウェア(すなわち、プログラム)によって、実装されてよい。アプリケーションのユーザインタフェースを操作するためのアプリケーション駆動部は、制御装置100上で動作するソフトウェア(すなわち、プログラム)によって、実装されてよい。アプリケーションの状態を検知するためのアプリケーション駆動部は、制御装置100上で動作するソフトウェア(すなわち、プログラム)によって、実装されてよい。対象装置と協働するためのアプリケーションは、携帯端末に代えて、デスクトップコンピュータ上で動作してよい。また、対象装置と協働するためのアプリケーションは、制御装置100上で動作するソフトウェア(すなわち、プログラム)によって、実装されてよい。アプリケーション駆動部は、ユーザインタフェースの操作と、アプリケーションの状態の検知と、の一方を行うように構成されてよい。ロボット300は、対象装置10の操作と、対象装置10の状態の検知と、の一方を行うように構成されてよい。例えば、ツール320とデジタルカメラ330のうちの一方は、省略されてよい。
(8)対象装置10の操作部は、タッチスクリーン11とボタン12-15に限らず、ユーザによって操作されるための任意の部材であってよい。例えば、操作部は、ダイアル、レバー、スライダなど、押下とは異なる操作を受け付ける装置であってよい。そして、ロボット300のエンドエフェクタの構成は、ツール320(具体的には指)の構成に限らず、操作部の操作に適する任意の構成であってよい。例えば、エンドエフェクタは、複数の指を有するハンド、吸盤など、他の種々の種類の装置であってよい。また、対象装置10(図1)の操作とUI画面752(図2)の操作とは、押下に限らず、スワイプ、回転、引き、などの、任意の操作であってよい。
(9)対象装置の状態を検知するための検知部は、デジタルカメラ330に代えて、三次元センサ、赤外線センサなど、他の任意の検知装置であってよい。検査結果が合格であるか否かを判断する方法は、検知部からのデータを使用する任意の方法であってよい。例えば、制御装置100は、三次元センサによって測定される対象装置10の形状と、予め決められた基準の形状と、の間の差が閾値よりも小さい場合に、検査結果が合格であると判断してよい。
(10)検査の対象装置は、複合機に代えて、プリンタ、ミシン、カッティングマシーン、スキャナ、スマートフォンなど、任意の製品であってよい。
(11)検査の手順を示す手順情報は、テキストに代えて、他の任意の形式で表されてよい。例えば、手順情報は、バイナリデータで表されてよい。
(12)検査のための処理を進行する制御装置の構成は、図1の制御装置100の構成に代えて、他の種々の構成であってよい。例えば、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、制御装置によるデータ処理の機能を一部ずつ分担して、全体として、データ処理の機能を提供してもよい(これらの装置を備えるシステムが制御装置に対応する)。
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図3のスクリプトの解析処理(S123)の機能を、専用のハードウェア回路によって実現してもよい。
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
10…対象装置、11…タッチスクリーン、12…クリーニングボタン、13…印刷ボタン、14…スキャンボタン、15…電源ボタン、16…ビジーランプ、17…レディランプ、100…制御装置、105…制御ユニット、110…プロセッサ、115…記憶装置、120…揮発性記憶装置、130…不揮発性記憶装置、140…通信インタフェース、150…表示部、160…操作部、200…ロボット駆動装置、200A…第1ロボット駆動装置、200B…第2ロボット駆動装置、205…制御ユニット、210…プロセッサ、215…記憶装置、220…揮発性記憶装置、230…不揮発性記憶装置、240…通信インタフェース、300…ロボット300A…第1ロボット300B…第2ロボットアーム、310…アーム、320…ツール、330…デジタルカメラ、600A…第1アプリケーション駆動装置、600B…第2アプリケーション駆動装置、605…制御ユニット、610…プロセッサ、615…記憶装置、620…揮発性記憶装置、630…不揮発性記憶装置、640…通信インタフェース、700A、700B…アプリケーション実行装置、700A…第1端末、700B…第2端末、705…制御ユニット、750…表示部、752a…印刷ボタン、752b…スキャンボタン、752c…クリーニングボタン、752d…リモート電源ボタン、752e…設定ボタン、752f…情報領域、760…操作部、1000…システム、

Claims (10)

  1. 対象装置の状態を検知する検知部を有するロボットを制御するためのロボット駆動部と、前記対象装置と協働するためのアプリケーションソフトウェアのユーザインタフェースを操作するためのアプリケーション駆動部と、のそれぞれと通信するように構成されるとともにコンピュータを有する制御装置のコンピュータプログラムであって、
    対象装置を検査するための手順情報を取得する取得機能と、
    前記手順情報に従って前記対象装置を検査する検査機能と、
    をコンピュータに実現させ、
    前記手順情報は、
    アプリケーションソフトウェアのユーザインタフェースの操作をアプリケーション駆動部に実行させる操作コマンドと、
    前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作に起因する前記対象装置の状態が検知部によって検知されるか否かを判断する判断コマンドと、
    を含み、
    前記検査機能は、
    (A)前記判断コマンドが、前記操作の後に、前記操作に起因する前記対象装置の状態である事後状態が前記検知部によって検知されるか否かを判断する事後判断コマンドである場合に、前記対象装置の前記事後状態を検知するための位置に前記検知部を移動させる処理を、前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の完了後に前記ロボット駆動部に実行させる後移動機能と、
    (B)前記判断コマンドが、前記操作の後に、制限時間内に、前記操作に起因する前記対象装置の状態である結果状態が前記検知部によって検知されるか否かを判断する時間判断コマンドである場合に、前記対象装置の前記結果状態を検知するための位置に前記検知部を移動させる処理を、前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の開始前に前記ロボット駆動部に実行させる先移動機能と、
    を含む、コンピュータプログラム。
  2. 請求項1に記載のコンピュータプログラムであって、
    前記検査機能は、
    前記判断コマンドが前記時間判断コマンドである場合に、前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の開始前に、前記アプリケーション駆動部と前記ロボット駆動部とのそれぞれに、通信識別子を送信する機能と、
    前記判断コマンドが前記時間判断コマンドである場合に、前記アプリケーション駆動部に、前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の完了通知を前記制御装置を介さずに前記通信識別子を使用して前記ロボット駆動部へ送信させる機能と、
    前記判断コマンドが前記時間判断コマンドである場合に、前記ロボット駆動部に、前記完了通知に応じて前記対象装置の前記状態を検知させる機能と、
    を含む、コンピュータプログラム。
  3. 請求項1または2に記載のコンピュータプログラムであって、
    前記制御装置は、前記対象装置の状態を検知する第1の検知部を有する第1のロボットを制御するための第1のロボット駆動部と、前記対象装置の状態を検知する第2の検知部を有する第2のロボットを制御するための第2のロボット駆動部と、のそれぞれと通信するように構成され、
    前記手順情報が、
    前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の後に、第1の制限時間内に、前記操作に起因する前記対象装置の第1の結果状態が前記第1の検知部によって検知されるか否かを判断する第1の時間判断コマンドと、
    前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の後に、第2の制限時間内に、前記操作に起因する前記対象装置の第2の結果状態が前記第2の検知部によって検知されるか否かを判断する第2の時間判断コマンドと、
    を含む場合を、第1の場合と呼び、
    前記検査機能は、
    前記第1の場合に、前記対象装置の前記第1の結果状態を検知するための位置に前記第1の検知部を移動させる処理を、前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の開始前に前記第1のロボット駆動部に実行させる第1の先移動機能と、
    前記第1の場合に、前記対象装置の前記第2の結果状態を検知するための位置に前記第2の検知部を移動させる処理を、前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の開始前に前記第2のロボット駆動部に実行させる第2の先移動機能と、
    を含む、
    コンピュータプログラム。
  4. 請求項1から3のいずれかに記載のコンピュータプログラムであって、
    前記制御装置は、前記対象装置を制御するための第1のアプリケーションソフトウェアの第1のユーザインタフェースを制御するための第1のアプリケーション駆動部と、前記対象装置を制御するための第2のアプリケーションソフトウェアの第2のユーザインタフェースを制御するための第2のアプリケーション駆動部と、のそれぞれと通信するように構成され、
    前記手順情報が、
    前記第1のアプリケーションソフトウェアの前記第1のユーザインタフェースの第1の操作を前記第1のアプリケーション駆動部に実行させる第1の操作コマンドと、
    前記第1の操作の後に、前記第2のアプリケーションソフトウェアの前記第2のユーザインタフェースの第2の操作を前記第2のアプリケーション駆動部に実行させる第2の操作コマンドと、
    前記第2の操作の後に、前記制限時間内に、前記第2の操作に起因する前記対象装置の前記結果状態が前記検知部によって検知されるか否かを判断する前記時間判断コマンドと、
    を含む場合を、第2の場合と呼び、
    前記検査機能は、
    前記第2の場合に、前記対象装置の前記結果状態を検知するための前記位置に前記検知部を移動させる処理を、前記第2のアプリケーションソフトウェアの前記第2のユーザインタフェースの前記第2の操作の開始前に前記ロボット駆動部に実行させる前記先移動機能を含む、
    コンピュータプログラム。
  5. 対象装置を操作するための操作部を有するロボットを制御するためのロボット駆動部と、前記対象装置と協働するためのアプリケーションソフトウェアの状態を検知するためのアプリケーション駆動部と、のそれぞれと通信するように構成されるとともにコンピュータを有する制御装置のコンピュータプログラムであって、
    対象装置を検査するための手順情報を取得する取得機能と、
    前記手順情報に従って前記対象装置を検査する検査機能と、
    をコンピュータに実現させ、
    前記手順情報は、
    ロボットの操作部による前記対象装置の操作をロボット駆動部に実行させる操作コマンドと、
    前記対象装置の前記操作に起因するアプリケーションソフトウェアの状態がアプリケーション駆動部によって検知されるか否かを判断する判断コマンドと、
    を含み、
    前記検査機能は、
    (A)前記判断コマンドが、前記操作の後に、前記操作に起因する前記アプリケーションソフトウェアの前記状態である事後状態が前記アプリケーション駆動部によって検知されるか否かを判断する事後判断コマンドである場合に、前記操作の後に前記ロボットの前記操作部を特定の位置に移動する移動処理と、前記移動処理の後に前記操作の完了通知を送信する後通知処理と、を前記ロボット駆動部に実行させる後通知機能と、
    (B)前記判断コマンドが、前記操作の後に、制限時間内に、前記操作に起因する前記アプリケーションソフトウェアの前記状態である結果状態が前記アプリケーション駆動部によって検知されるか否かを判断する時間判断コマンドである場合に、前記移動処理と、前記移動処理よりも先に前記完了通知を送信する先通知処理と、を前記ロボット駆動部に実行させる先通知機能と、
    を含む、コンピュータプログラム。
  6. 請求項5に記載のコンピュータプログラムであって、
    前記検査機能は、前記判断コマンドが前記時間判断コマンドである場合に、前記対象装置の前記操作の開始前に、前記アプリケーション駆動部と前記ロボット駆動部とのそれぞれに、通信識別子を送信する機能を含み、
    前記先通知処理は、前記制御装置を介さずに前記通信識別子を使用して前記完了通知を前記アプリケーション駆動部へ送信する処理を含み、
    前記検査機能は、前記判断コマンドが前記時間判断コマンドである場合に、前記アプリケーション駆動部に、前記完了通知に応じて前記アプリケーションソフトウェアの前記状態を検知させる機能を含む、
    コンピュータプログラム。
  7. 請求項5または6に記載のコンピュータプログラムであって、
    前記制御装置は、前記対象装置と協働するための第1のアプリケーションソフトウェアの状態を検知するための第1のアプリケーション駆動部と、前記対象装置と協働するための第2のアプリケーションソフトウェアの状態を検知するための第2のアプリケーション駆動部と、のそれぞれと通信するように構成され、
    前記手順情報が、
    前記操作の後に、第1の制限時間内に、前記操作に起因する前記第1のアプリケーションソフトウェアの状態である第1の結果状態が前記第1のアプリケーション駆動部によって検知されるか否かを判断する第1の時間判断コマンドと、
    前記操作の後に、第2の制限時間内に、前記操作に起因する前記第2のアプリケーションソフトウェアの状態である第2の結果状態が前記第2のアプリケーション駆動部によって検知されるか否かを判断する第2の時間判断コマンドと、
    を含む場合を、第1の場合と呼び、
    前記第1の場合に、前記先通知処理は、前記制御装置を介さずに前記第1のアプリケーション駆動部のための通信識別子を使用して前記完了通知を前記第1のアプリケーション駆動部へ送信する処理と、前記制御装置を介さずに前記第2のアプリケーション駆動部のための通信識別子を使用して前記完了通知を前記第2のアプリケーション駆動部へ送信する処理と、を含む、
    コンピュータプログラム。
  8. 請求項5から7のいずれかに記載のコンピュータプログラムであって、
    前記制御装置は、前記対象装置を操作するための第1の操作部を有する第1のロボットを制御するための第1のロボット駆動部と、前記対象装置を操作するための第2の操作部を有する第2のロボットを制御するための第2のロボット駆動部と、のそれぞれと通信するように構成され、
    前記手順情報が、
    前記第1のロボットの前記第1の操作部による前記対象装置の第1の操作を前記第1のロボット駆動部に実行させる第1の操作コマンドと、
    前記第2のロボットの前記第2の操作部による前記対象装置の第2の操作を前記第2のロボット駆動部に実行させる第2の操作コマンドと、
    前記第2の操作の後に、前記制限時間内に、前記第2の操作に起因する前記アプリケーションソフトウェアの前記結果状態が前記アプリケーション駆動部によって検知されるか否かを判断する前記時間判断コマンドと、
    を含む場合を、第2の場合と呼び、
    前記第2の場合に、前記先通知機能は、前記移動処理と、前記移動処理よりも先に前記完了通知を送信する前記先通知処理と、を前記第2のロボット駆動部に実行させる、
    コンピュータプログラム。
  9. 対象装置の状態を検知する検知部を有するロボットを制御するためのロボット駆動部と、前記対象装置と協働するためのアプリケーションソフトウェアのユーザインタフェースを操作するためのアプリケーション駆動部と、のそれぞれと通信するように構成される制御装置であって、
    対象装置を検査するための手順情報を取得する取得部と、
    前記手順情報に従って前記対象装置を検査する検査部と、
    をコンピュータに実現させ、
    前記手順情報は、
    アプリケーションソフトウェアのユーザインタフェースの操作をアプリケーション駆動部に実行させる操作コマンドと、
    前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作に起因する前記対象装置の状態が検知部によって検知されるか否かを判断する判断コマンドと、
    を含み、
    前記検査部は、
    (A)前記判断コマンドが、前記操作の後に、前記操作に起因する前記対象装置の状態である事後状態が前記検知部によって検知されるか否かを判断する事後判断コマンドである場合に、前記対象装置の前記事後状態を検知するための位置に前記検知部を移動させる処理を、前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の完了後に前記ロボット駆動部に実行させる後移動部と、
    (B)前記判断コマンドが、前記操作の後に、制限時間内に、前記操作に起因する前記対象装置の状態である結果状態が前記検知部によって検知されるか否かを判断する時間判断コマンドである場合に、前記対象装置の前記結果状態を検知するための位置に前記検知部を移動させる処理を、前記アプリケーションソフトウェアの前記ユーザインタフェースの前記操作の開始前に前記ロボット駆動部に実行させる先移動部と、
    を含む、制御装置。
  10. 対象装置を操作するための操作部を有するロボットを制御するためのロボット駆動部と、前記対象装置と協働するためのアプリケーションソフトウェアの状態を検知するためのアプリケーション駆動部と、のそれぞれと通信するように構成される制御装置であって、
    対象装置を検査するための手順情報を取得する取得部と、
    前記手順情報に従って前記対象装置を検査する検査部と、
    をコンピュータに実現させ、
    前記手順情報は、
    ロボットの操作部による前記対象装置の操作をロボット駆動部に実行させる操作コマンドと、
    前記対象装置の前記操作に起因するアプリケーションソフトウェアの状態がアプリケーション駆動部によって検知されるか否かを判断する判断コマンドと、
    を含み、
    前記検査部は、
    (A)前記判断コマンドが、前記操作の後に、前記操作に起因する前記アプリケーションソフトウェアの前記状態である事後状態が前記アプリケーション駆動部によって検知されるか否かを判断する事後判断コマンドである場合に、前記操作の後に前記ロボットの前記操作部を特定の位置に移動する移動処理と、前記移動処理の後に前記操作の完了通知を送信する後通知処理と、を前記ロボット駆動部に実行させる後通知部と、
    (B)前記判断コマンドが、前記操作の後に、制限時間内に、前記操作に起因する前記アプリケーションソフトウェアの前記状態である結果状態が前記アプリケーション駆動部によって検知されるか否かを判断する時間判断コマンドである場合に、前記移動処理と、前記移動処理よりも先に前記完了通知を送信する先通知処理と、を前記ロボット駆動部に実行させる先通知部と、
    を含む、制御装置。
JP2022055986A 2022-03-30 2022-03-30 コンピュータプログラム、および、制御装置 Pending JP2023148119A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022055986A JP2023148119A (ja) 2022-03-30 2022-03-30 コンピュータプログラム、および、制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022055986A JP2023148119A (ja) 2022-03-30 2022-03-30 コンピュータプログラム、および、制御装置

Publications (1)

Publication Number Publication Date
JP2023148119A true JP2023148119A (ja) 2023-10-13

Family

ID=88288503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022055986A Pending JP2023148119A (ja) 2022-03-30 2022-03-30 コンピュータプログラム、および、制御装置

Country Status (1)

Country Link
JP (1) JP2023148119A (ja)

Similar Documents

Publication Publication Date Title
CN110154017B (zh) 输送机跟踪系统以及校准方法
US10839261B2 (en) Information processing apparatus, information processing method, and storage medium
US8250218B2 (en) Wireless communication system, and wireless communication device and control method for establishing a one-to-one relationship between wireless communication devices
US20060206592A1 (en) Wireless communication system and wireless communication device and control method
US8004571B2 (en) Projection-based system, apparatus and program of storing annotated object image
JP2020183035A5 (ja)
JP2008021092A (ja) ロボットシステムのシミュレーション装置
JP6984425B2 (ja) 画像読取装置および制御プログラム
JP2007081489A5 (ja)
WO2017148433A1 (zh) 机器人连接方法及机器人
JP2018149669A (ja) 学習装置及び学習方法
US10960550B2 (en) Identification code reading apparatus and machine learning device
CN114080590A (zh) 使用先进扫描技术的机器人料箱拾取系统和方法
CN115803155A (zh) 编程装置
CN115997183A (zh) 机器人手臂的目标导向控制
CN105933564A (zh) 图像处理装置引导方法、图像处理装置及图像处理系统
JP2023148119A (ja) コンピュータプログラム、および、制御装置
JP6265784B2 (ja) 姿勢推定システム、プログラムおよび姿勢推定方法
US20100075601A1 (en) Wireless Communication Apparatus and Wireless Communication Method
JP5350079B2 (ja) X線撮影装置及びその制御方法
JP2010052060A (ja) 自動運転装置
US8732823B2 (en) Nondestructive testing system
CN212342019U (zh) 一种感烟火灾探测器的自动化测试系统
JPH08219721A (ja) 画像処理装置
CN111915836A (zh) 一种感烟火灾探测器的自动化测试方法及系统