(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023130686
(43)【公開日】2023-09-21
(54)【発明の名称】ロボットコントローラ、制御システム、及び制御方法
(51)【国際特許分類】
B25J 9/22 20060101AFI20230913BHJP
【FI】
B25J9/22 A
【審査請求】有
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2022035126
(22)【出願日】2022-03-08
(71)【出願人】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】100088155
【弁理士】
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100145012
【弁理士】
【氏名又は名称】石坂 泰紀
(74)【代理人】
【識別番号】100171099
【弁理士】
【氏名又は名称】松尾 茂樹
(72)【発明者】
【氏名】石田 雄登
(72)【発明者】
【氏名】松永 裕也
【テーマコード(参考)】
3C707
【Fターム(参考)】
3C707BS12
3C707JS03
3C707JS07
3C707JU03
3C707KS03
3C707KS04
3C707LS15
3C707MT01
3C707MT15
(57)【要約】
【課題】ロボットの操作性向上に有効なロボットコントローラを提供する。
【解決手段】ロボットコントローラ100は、SinglePageApplicationを実行するWebクライアントからリクエストを受け付けるWebAPI111と、WebAPI111が受け付けたリクエストに応じた処理を、ロボット2に対して実行する処理部112と、リクエストに対するレスポンスを、SinglePageApplicationの更新データとして生成するレスポンス生成部113と、を備える。
【選択図】
図2
【特許請求の範囲】
【請求項1】
Single Page Applicationを実行するWebクライアントからリクエストを受け付けるWebAPIと、
前記WebAPIが受け付けた前記リクエストに応じた処理を、ロボットに対して実行する処理部と、
前記リクエストに対するレスポンスを、前記Single Page Applicationの更新データとして生成するレスポンス生成部と、
を備えるロボットコントローラ。
【請求項2】
前記Single Page Applicationの本体データを保存し、前記リクエストに応じて前記Webクライアントに送信するWebサーバを更に備える、
請求項1記載のロボットコントローラ。
【請求項3】
前記処理部は、前記ロボットコントローラにおけるイベントの発生を監視し、前記イベントが発生した場合に、前記イベントの発生をServer-Sent Eventsにより前記Webクライアントに通知するイベント通知部を有する、
請求項1又は2記載のロボットコントローラ。
【請求項4】
前記イベントは、前記ロボットコントローラにおいて発生するアラームを含む、
請求項3記載のロボットコントローラ。
【請求項5】
前記処理部は、
前記リクエストに応じて、前記ロボットの操作を実行するロボット操作部と、
前記リクエストに応じて、前記ロボットのモニタリングを実行するモニタ部と、
を有する、
請求項1~4のいずれか一項記載のロボットコントローラ。
【請求項6】
ユーザの識別情報を記憶する記憶部と、
前記記憶部に記憶されていないユーザの前記識別情報を含む前記リクエストを前記WebAPIが受け付けた場合に、前記ロボット操作部による前記ロボットの操作を制限する制限部と、
を更に備える、
請求項5記載のロボットコントローラ。
【請求項7】
前記WebAPIが通信ネットワークを介して前記リクエストを受け付けた場合に、前記ロボット操作部による前記ロボットの操作を制限する制限部を更に備える、
請求項5記載のロボットコントローラ。
【請求項8】
前記Webクライアントを実行する端末の識別情報を記憶する記憶部と、
前記記憶部に前記識別情報が記憶されていない前記端末から前記WebAPIが前記リクエストを受け付けた場合に、前記ロボット操作部による前記ロボットの操作を制限する制限部と、
を更に備える、
請求項5記載のロボットコントローラ。
【請求項9】
前記処理部は、前記WebAPIが複数のリクエストを含むバッチリクエストを受け付けた場合に、前記複数のリクエストに応じた複数の処理を含むバッチ処理を実行し、
前記レスポンス生成部は、前記バッチリクエストに対するレスポンスを生成する、
請求項1~7のいずれか一項記載のロボットコントローラ。
【請求項10】
前記処理部は、前記バッチ処理において、前記複数のリクエストに含まれる第1リクエストに応じた第1処理を実行し、前記複数のリクエストに含まれる第2リクエストに応じた第2処理を、前記第1処理の結果を引数として実行する、
請求項9記載のロボットコントローラ。
【請求項11】
前記ロボットのモニタリングの前記リクエストを送信可能な前記Single Page Applicationの本体データと、
前記モニタリングの前記リクエストに加えて前記ロボットの操作の前記リクエストを送信可能な前記Single Page Applicationの本体データと、を含む複数種類の本体データと、
を保存し、前記Webクライアントからの前記リクエストに応じて、複数種類の本体データのいずれかを前記Webクライアントに送信するWebサーバを更に備える、
請求項1記載のロボットコントローラ。
【請求項12】
ロボットコントローラと、
Webクライアントを実行する端末と、
を備え、
ロボットコントローラは、
Single Page Applicationを実行する前記Webクライアントからリクエストを受け付けるWebAPIと、
前記WebAPIが受け付けた前記リクエストに応じた処理を、前記ロボットに対して実行する処理部と、
前記リクエストに対するレスポンスを、前記Single Page Applicationの更新データとして生成するレスポンス生成部と、
を有する、
制御システム。
【請求項13】
前記Webクライアントは、前記Single Page Applicationの実行画面に対する入力に基づいて前記リクエストを生成し、レスポンスに応じて前記実行画面の表示を部分的に更新する、
請求項12記載の制御システム。
【請求項14】
前記Webクライアントは、前記Single Page Applicationの起動に応じてイベント監視の前記リクエストを生成し、
前記ロボットコントローラは、イベント監視の前記リクエストを前記WebAPIが受け付けた場合に、前記ロボットコントローラにおける前記イベントの発生の監視を開始し、前記イベントが発生した場合に、前記イベントの発生をServer-Sent Eventsにより前記Webクライアントに通知するイベント通知部を更に有する、
請求項13記載の制御システム。
【請求項15】
前記実行画面に対する入力に基づいて、複数のリクエストを含むバッチリクエストを生成し、
前記処理部は、前記WebAPIが前記バッチリクエストを受け付けた場合に、前記複数のリクエストに応じた複数の処理を含むバッチ処理を実行し、
前記レスポンス生成部は、前記バッチ処理に対するレスポンスを生成する、
請求項13又は14記載の制御システム。
【請求項16】
Single Page Applicationを実行するWebクライアントからリクエストをWebAPIにより受け付けることと、
前記WebAPIが受け付けた前記リクエストに応じた処理を、ロボットに対して実行することと、
前記リクエストに対するレスポンスを、前記Single Page Applicationの更新データとして生成することと、
を含む制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ロボットコントローラ、制御システム、及び制御方法に関する。
【背景技術】
【0002】
特許文献1には、ロボットの運動を制御するコントローラと、操作者がロボットに動作を教示するための教示ペンダントとを有する教示再生装置が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示は、ロボットの操作性向上に有効なロボットコントローラを提供する。
【課題を解決するための手段】
【0005】
本開示の一側面に係るロボットコントローラは、SinglePageApplicationを実行するWebクライアントからリクエストを受け付けるWebAPIと、WebAPIが受け付けたリクエストに応じた処理を、ロボットに対して実行する処理部と、リクエストに対するレスポンスを、SinglePageApplicationの更新データとして生成するレスポンス生成部と、を備える。
【0006】
本開示の他の側面に係る制御システムは、ロボットコントローラと、Webクライアントを実行する端末と、を備え、ロボットコントローラは、SinglePageApplicationを実行するWebクライアントからリクエストを受け付けるWebAPIと、WebAPIが受け付けたリクエストに応じた処理を、ロボットに対して実行する処理部と、リクエストに対するレスポンスを、SinglePageApplicationの更新データとして生成するレスポンス生成部と、を有する。
【0007】
本開示の更に他の側面に係る制御方法は、SinglePageApplicationを実行するWebクライアントからリクエストをWebAPIにより受け付けることと、WebAPIが受け付けたリクエストに応じた処理を、ロボットに対して実行することと、リクエストに対するレスポンスを、SinglePageApplicationの更新データとして生成することと、を含む。
【発明の効果】
【0008】
本開示によれば、ロボットの操作性向上に有効なロボットコントローラを提供することができる。
【図面の簡単な説明】
【0009】
【
図1】ロボットシステムの構成を例示する模式図である。
【
図2】ロボットコントローラの機能的な構成を例示するブロック図である。
【
図3】Single Page Applicationの実行画面を例示する模式図である。
【
図4】ロボットコントローラ及び操作端末のハードウェア構成を例示するブロック図である。
【
図5】Single Page Applicationの起動手順を例示するフローチャートである。
【
図6】リクエストのハンドリング手順を例示するフローチャートである。
【
図8】イベント監視手順を例示するフローチャートである。
【発明を実施するための形態】
【0010】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【0011】
〔ロボットシステム〕
図1に示すロボットシステム1は、オペレータによるティーチングにより生成された動作プログラムに基づいて、ロボット2を動作させる所謂ティーチング・プレイバック方式のシステムである。
図1に示すように、ロボットシステム1は、ロボット2と、ロボットコントローラ100と、端末200とを備える。
【0012】
図1に示すロボット2は、6軸の垂直多関節ロボットであり、基部11と、旋回部12と、第1アーム13と、第2アーム14と、第3アーム17と、先端部18と、アクチュエータ41,42,43,44,45,46とを有する。基部11は、床面、壁面、又は天井面、又は無人搬送車上等に設置されている。旋回部12は、鉛直な軸線21まわりに旋回するように基部11上に設けられている。第1アーム13は、軸線21に交差(例えば直交)する軸線22まわりに揺動するように旋回部12に接続されており、軸線22から離れる方向に向かって延びている。交差は、所謂立体交差のようにねじれの関係にある場合も含む。以下においても同様である。
【0013】
第2アーム14は、軸線22に実質的に平行な軸線23まわりに揺動するように第1アーム13の先端部に接続されており、軸線23から離れる方向に向かって延びている。第2アーム14は、アーム基部15とアーム端部16とを含む。アーム基部15は、第1アーム13の先端部に接続されている。アーム端部16は、軸線23に交差(例えば直交)する軸線24まわりに旋回するようにアーム基部15の先端部に接続されており、軸線24に沿ってアーム基部15から離れる方向に向かって延びている。
【0014】
第3アーム17は、軸線24に交差(例えば直交)する軸線25まわりに揺動するようにアーム端部16の先端部に接続されている。先端部18は、軸線25に交差(例えば直交)する軸線26まわりに旋回するように第3アーム17の先端部に接続されている。
【0015】
このように、ロボット2は、基部11と旋回部12とを接続する関節31と、旋回部12と第1アーム13とを接続する関節32と、第1アーム13と第2アーム14とを接続する関節33と、第2アーム14においてアーム基部15とアーム端部16とを接続する関節34と、アーム端部16と第3アーム17とを接続する関節35と、第3アーム17と先端部18とを接続する関節36とを有する。
【0016】
アクチュエータ41,42,43,44,45,46は、例えば電動モータ及び減速機を含み、関節31,32,33,34,35,36をそれぞれ駆動する。例えばアクチュエータ41は軸線21まわりに旋回部12を旋回させ、アクチュエータ42は軸線22まわりに第1アーム13を揺動させ、アクチュエータ43は軸線23まわりに第2アーム14を揺動させ、アクチュエータ44は軸線24まわりにアーム端部16を旋回させ、アクチュエータ45は軸線25まわりに第3アーム17を揺動させ、アクチュエータ46は軸線26まわりに先端部18を旋回させる。
【0017】
なお、ロボット2の具体的な構成は適宜変更可能である。例えばロボット2は、上記6軸の垂直多関節ロボットに更に1軸の関節を追加した7軸の冗長型ロボットであってもよく、所謂スカラー型の多関節ロボットであってもよい。
【0018】
ロボットコントローラ100は、ティーチングにより予め登録された動作プログラムに基づいてロボット2を動作させる。動作プログラムは、時系列の複数の動作コマンドを含む。複数の動作コマンドのそれぞれは、少なくとも、先端部18の目標位置と、目標位置までの先端部18の動作速度とを定める。目標位置は、ロボット座標系における先端部18の座標と、各座標軸まわりの先端部18の姿勢とを定める情報である。ロボット座標系は、基部11に固定された三次元座標系である。目標位置は、先端部18の座標及び姿勢を直接的に定める情報であってもよく、先端部18の座標及び姿勢を間接的に定める情報であってもよい。先端部18の座標及び姿勢を間接的に定める情報の具体例としては、関節31,32,33,34,35,36の回転角度が挙げられる。
【0019】
ティーチングは、複数の目標位置を教示することによって、複数の目標位置にそれぞれ対応する複数の動作コマンドを含む動作プログラムを登録する作業を意味する。端末200は、ティーチングにおける操作に用いられる。例えば端末200は、任意の位置まで先端部18を移動させる操作、先端部18の位置を目標位置とする動作コマンドを動作プログラムに追加する操作等の各種操作に用いられる。
【0020】
端末200により、上述した各種操作を可能とするためには、各種操作用のユーザインタフェースを端末200に生成する必要がある。以下、各種操作用のユーザインタフェースを、「操作インタフェース」という。端末200は、WebクライアントにおいてWebアプリケーションを実行することにより、ロボット2の操作インタフェースを構成する。
【0021】
Webアプリケーションの実行により操作インタフェースを構成可能であり、且つロボットコントローラ100と通信可能である限り、端末200はいかなるタイプの端末であってもよい。例えば端末200は、ラップトップコンピュータであってもよく、タブレットコンピュータであってもよく、スマートホンであってもよい。
【0022】
ロボットコントローラ100は、ユーザインタフェースからのリクエストに応じてロボット2に対する処理を実行する。例えばロボットコントローラ100は、Single Page Applicationを実行するWebクライアントからリクエストをWebAPIにより受け付けることと、WebAPIが受け付けたリクエストに応じた処理を、ロボット2に対して実行することと、リクエストに対するレスポンスを、Single Page Applicationの更新データとして生成することと、を実行するように構成されている。
【0023】
Single Page Appplication(以下、SPA)は、Webアプリケーションの構成法である。SPAにおいては、Webアプリケーションの起動後にサーバによるWebページの生成が行われず、サーバから取得したデータに基づいてWebアプリケーションにおいてWebページが更新される。
【0024】
Webクライアントは、例えばWebブラウザである。Webクライアントは、ブラウジング機能を有するネイティブアプリケーションであってもよい。WebAPIは、HTTPによって利用可能なAPI(Application Programming Interface)である。APIは、予め設けられたソフトウェアを、外部のアプリケーションから利用可能にするインタフェースである。
【0025】
ロボットコントローラ100によれば、ユーザインタフェースをWebアプリケーション化することができる。これにより、端末200のハードウェア構成に制約されることなく、ユーザインタフェースを随時更新し、ユーザの操作性を向上させることができる。一方、ロボットコントローラ100には制御におけるリアルタイム性が要求されるので、ロボットコントローラ100においてWebアプリケーションからのリクエストに割り当て可能なリソースは限られることとなる。
【0026】
これに対し、SPAを実行するWebクライアントからリクエストを受け付け、リクエストに対するレスポンスをSPAの更新データとして生成する構成によれば、リクエストの度にロボットコントローラ100においてWebページを生成する必要がなく、レスポンスに基づく画面遷移をWebクライアントにおいて行うことが可能となる。このため、端末200のリソースを有効活用し、ロボットコントローラ100におけるリアルタイム性と、適時の画面遷移による優れた操作感との両立を図ることができる。
【0027】
また、リクエストはWebAPIにより受け付けられるので、ロボットコントローラ100が受け付けるリクエストの種別、形式等がWebAPIの範囲に制限される。このため、多様な端末200によりロボットコントローラ100が制御される場合においても、ロボットコントローラ100の堅牢性を維持することができる。従って、ロボットコントローラ100は、ロボット2の操作性向上に有効である。
【0028】
図2は、ロボットコントローラ100の機能的な構成を例示するブロック図である。
図2に示すように、ロボットコントローラ100は、機能上の構成要素(以下、「機能ブロック」という。)として、プログラム記憶部181と、制御部182とを有する。プログラム記憶部181は、ティーチングにより生成された動作プログラムを記憶する。制御部182は、プログラム記憶部181が記憶する動作プログラムの複数の動作コマンドを順次呼び出し、動作コマンドに基づいてロボット2を動作させる。例えば制御部182は、一定の制御サイクルにて、制御処理を繰り返す。制御処理は、複数の動作コマンドの目標位置により表される動作パスに沿って先端部18を移動させるように、関節31,32,33,34,35,36のそれぞれの目標角度を算出することと、関節31,32,33,34,35,36のそれぞれの角度を目標角度に追従させることと、を含む。
【0029】
ティーチングにおいて、端末200によるロボット2の操作を可能とするために、ロボットコントローラ100は、Webサーバ110を更に有する。Webサーバ110は、HTTP(Hypertext Transfer Protocol)等によるWebクラアントからのリクエストを受信し、リクエストに応じた処理を行い、Webクライアントにレスポンスを送信する。例えばWebサーバ110は、ファイル処理部114と、WebAPI111と、処理部112と、レスポンス生成部113とを有する。ファイル処理部114は、SPAの本体データ140を保存する。ファイル処理部114は、Webクラアントからのリクエストに応じて、本体データ140をWebクライアントに送信する。
【0030】
本体データ140は、Webクライアントに操作インタフェースを表示するように記述されたHTML(Hypertext Markup Language)ドキュメントを含む。更に本体データ140は、操作インタフェースへの操作に応じてHTMLドキュメントから呼び出される1以上のJavaScript(登録商標)を含んでいてもよい。
【0031】
Webクライアントは、ファイル処理部114により送信された本体データ140に基づいて、SPAを実行する(SPAによるWebアプリケーションを実行する)。これにより、Webクライアントに操作インタフェースが表示される。
【0032】
図3は、WebクライアントにおけるSPAの実行画面(操作インタフェース)を例示する模式図である。
図3に示す操作インタフェース300は、操作ウィンドウ310と、イベントウィンドウ320と、モニタウィンドウ330と、ログインウィンドウ340とを有する。操作ウィンドウ310は、サーボオンキー311と、ジョグキー312と、コマンド追加キー313と、プレイバックキー314とを含む。
【0033】
サーボオンキー311は、サーボオンを要求するためのソフトウェアキーである。Webクライアントは、ユーザによるサーボオンキー311への入力に基づいて、サーボオンリクエストを生成し、HTTPによりロボットコントローラ100に送信する。サーボオンリクエストは、アクチュエータ41,42,43,44,45,46に対し駆動電力(静止させるための電力を含む。)の供給開始のリクエストである。
【0034】
ジョグキー312は、ジョグ操作をリクエストするためのソフトウェアキーである。Webクライアントは、ユーザによるジョグキー312への入力に基づいて、ジョグリクエストを生成し、HTTPによりロボットコントローラ100を送信する。ジョグリクエストは、先端部18を所定の移動方向に所定量で移動させるリクエストである。
【0035】
コマンド追加キー313は、動作コマンドの追加をリクエストするためのソフトウェアキーである。Webクライアントは、ユーザによるコマンド追加キー313への入力に基づいて、コマンド追加リクエストを生成し、HTTPによりロボットコントローラ100に送信する。コマンド追加リクエストは、先端部18の現在位置を目標位置とする動作コマンドを動作プログラムに追加することのリクエストである。
【0036】
プレイバックキー314は、動作プログラムに基づきロボット2を動作させることをリクエストするためのソフトウェアキーである。Webクライアントは、ユーザによるプレイバックキー314への入力に基づいて、プレイバックリクエストを生成し、HTTPによりロボットコントローラ100に送信する。プレイバックリクエストは、プログラム記憶部181が記憶する動作プログラムの複数の動作コマンドに基づきロボット2を動作させることのリクエストである。
【0037】
イベントウィンドウ320は、ロボット2に関するイベントの発生を表示するウィンドウである。モニタウィンドウ330は、ロボット2のステータスを表示するウィンドウである。例えばモニタウィンドウ330は、複数のステータス表示部331と、複数のステータス表示部331にそれぞれ対応する複数の対象選択部332と、モニタキー333とを含む。複数のステータス表示部331は、ロボット2に関する複数項目のステータスをそれぞれ表示するボックスである。複数の対象選択部332のそれぞれは、対応するステータス表示部331のモニタリングの要否を入力するボックスである。
【0038】
モニタキー333は、複数の対象選択部332によりモニタリングが必要とされた項目についてのステータスを、複数のステータス表示部331に表示することをリクエストするためのソフトウェアキーである。Webクライアントは、ユーザによるモニタキー333への入力に基づいて、モニタリングリクエストを生成し、HTTPによりロボットコントローラ100に送信する。モニタリングリクエストは、ロボット2のステータスを示すデータの送信のリクエストである。
【0039】
ログインウィンドウ340は、ID入力ボックス341と、ログインキー342とを有する。ID入力ボックス341は、ユーザの識別情報を入力するためのボックスである。ログインキー342は、ID入力ボックス341に入力した識別情報の認証をリクエストするためのソフトウェアキーである。Webクライアントは、ユーザによるログインキー342への入力に基づいて、ユーザの識別情報を含む操作許可リクエストを生成し、HTTPによりロボットコントローラ100に送信する。操作許可リクエストは、ID入力ボックス341に入力された識別情報を有するユーザに対し、操作ウィンドウ310への操作入力を許可することのリクエストである。
【0040】
図2に戻り、WebAPI111は、SPAを実行するWebクライアントからリクエストを受け付ける。例えばWebAPI111は、操作インタフェース300への入力に基づいて、HTTPによりWebクライアントから送信されたリクエストを受け付ける。
【0041】
処理部112は、WebAPI111が受け付けたリクエストに応じた処理を、ロボット2に対して実行する。例えば処理部112は、ロボット操作部121と、モニタ部122とを有する。ロボット操作部121は、WebAPI111が受け付けたリクエストに応じて、ロボット2の操作を実行する。
【0042】
例えばロボット操作部121は、上述したサーボオンリクエストに応じてサーボをオンにする。例えばロボット操作部121は、アクチュエータ41,42,43,44,45,46に対し駆動電力(静止させるための電力を含む。)の供給を開始させる。
【0043】
また、ロボット操作部121は、リクエストに応じてロボット2を動作させることを制御部182に実行させる。例えばロボット操作部121は、上述したジョグリクエストが示す移動方向及び移動量にて先端部18を移動させることを制御部182に実行させる。また、ロボット操作部121は、上述したプレイバックリクエストに応じて、プログラム記憶部181が記憶する動作プログラムの複数の動作コマンドに基づきロボット2を動作させることを制御部182に実行させる。
【0044】
ロボット2の操作は、必ずしもロボット2を動作させる操作に限られない。ロボット2を動作させるためのデータの追加、削除、又は変更等も、ロボット2の操作に含まれる。例えば、プログラム記憶部181に新たな動作プログラムを追加すること、プログラム記憶部181が記憶する動作プログラムを削除すること、又はプログラム記憶部181が記憶する動作プログラムを編集すること等も、ロボット2の操作に含まれる。また、ロボット2を動作させるための制御パラメータの追加、削除、又は変更等も、ロボット2の操作に含まれる。例えばロボット操作部121は、上述したコマンド追加リクエストに応じて、先端部18の現在位置を目標位置とする動作コマンドをプログラム記憶部181が記憶する動作プログラムに追加する。
【0045】
モニタ部122は、リクエストに応じて、ロボット2のモニタリングを実行する。例えばモニタ部122は、上述したモニタリングリクエストに応じて、ロボット2のステータスのモニタリングを実行する。ロボット2のステータスの例としては、関節31,32,33,34,35,36のそれぞれの角度等が挙げられる。また、ロボット2のステータスには、ロボット2を制御するロボットコントローラ100のステータスも含まれる。ロボットコントローラ100のステータスの例としては、上述した制御パラメータの値等が挙げられる。
【0046】
レスポンス生成部113は、リクエストに対するレスポンスを、SPAの更新データとして生成する。SPAの更新データとは、表示済みのWebページにおいて表示内容の更新に用いられるデータである。レスポンス生成部113は、生成したレスポンスをWebクライアントに送信する。例えばレスポンス生成部113は、リクエストにおいて指定されたWebクライアントのポートに、レスポンスを送信する。Webクライアントは、レスポンスに応じて実行画面の表示を部分的に更新する。
【0047】
例えばロボット操作部121がロボット2の操作を実行した場合に、レスポンス生成部113は、操作の完了通知を含むレスポンスを生成し、Webクライアントに送信する。Webクライアントは、操作の完了を示すレスポンスに基づいて、操作の完了を示すように、上述した操作ウィンドウ310の表示を更新する。
【0048】
ロボット操作部121がロボット2のモニタリングを実行した場合に、レスポンス生成部113は、モニタリングの完了通知と、モニタリングの結果とを含むレスポンスを生成し、Webクライアントに送信する。Webクライアントは、モニタリングの結果を示すように、上述したモニタウィンドウ330の表示を更新する。
【0049】
処理部112は、イベント通知部123を更に有してもよい。イベント通知部123は、ロボットコントローラ100におけるイベントの発生を監視し、イベントが発生した場合に、イベントの発生をServer-Sent EventsによりWebクライアントに通知する。Server-Sent Events(以下、SSE)は、WebサーバからクライアントにPUSH通信を行う方式である。SSEにおいては、Webクライアントからのリクエストに応じてイベント通知のためのチャネルが確立され、リクエストへのレスポンスが生成・送信された後もチャネルが維持される。
【0050】
一例として、Webクライアントは、SPAの起動に応じてイベント監視リクエストを生成し、HTTPによりロボットコントローラ100に送信する。イベント監視リクエストは、SSEによるイベントの通知のリクエストである。イベント通知部123は、イベント監視リクエストに応じて、ロボット2に関するイベントを通知するためのチャネルをWebクライアントとの間に確立する。以下、確立されるチャネルを「イベント通知チャネル」という。例えばイベント通知部123は、イベント監視リクエストにおいて指定されたポートの識別情報を記憶する。以下、識別情報が記憶されるポートを、イベント通知ポートという。
【0051】
イベント通知部123がイベント通知チャネルを確立すると、レスポンス生成部113がイベント監視リクエストに対するレスポンスを送信する。レスポンスを受信した後も、Webクライアントは、イベント通知ポートを開放したままにする。イベント通知部123は、記憶した識別情報に基づいて、イベントの発生を通知する通知データをイベント通知ポートに送信する。Webクライアントは、通知データに基づいて、イベントの発生を上述のイベントウィンドウ320に表示させる。
【0052】
ロボット2に関するイベントの例としては、ロボット2において異常が発生することが挙げられる。ロボット2に関するイベントは、ロボット2における異常に基づきロボットコントローラ100が発生するアラームを含んでいてもよい。例えばイベント通知部123は、制御部182においてアラームが発生しているか否かを監視し、制御部182においてアラームが発生した場合に、アラームの発生を通知するデータをイベント通知ポートに送信する。
【0053】
ロボット2における異常の具体例としては、アクチュエータ41,42,43,44,45,46に対する過電流が生じること、関節31,32,33,34,35,36の角度が可動範囲から外れること、アクチュエータ41,42,43,44,45,46において異常トルクが発生すること、ロボットコントローラ100とアクチュエータ41,42,43,44,45,46との間のケーブルが断線すること等が挙げられる。
【0054】
アラームにSSEを適用することで、上記通信負担の軽減と、アラームの適時通知との両立を図ることができる。アラーム自体は、適時な通知が求められる一方で、常時発生するイベントではないので、アラームにSSEを適用することで、通信負担の軽減がより顕著となる。
【0055】
処理部112は、WebAPIが複数のリクエストを含むバッチリクエストを受け付けた場合に、複数のリリクエストに応じた複数の処理を含むバッチ処理を実行し、レスポンス生成部113は、バッチリクエストに対するレスポンスを生成してもよい。Webクライアントとロボットコントローラ100との間におけるリクエスト及びレスポンスを繰り返すことなく、複数の処理をまとめて処理部112に実行させることができる。これにより、Webクライアントとロボットコントローラ100との間における通信負担を更に軽減し、操作感を更に向上させることができる。
【0056】
Webクライアントは、SPAの実行画面に対する入力に基づいて、複数のリクエストを含むバッチリクエストを生成し、HTTPによりロボットコントローラ100に送信する。一例として、Webクライアントは、ユーザによるモニタウィンドウ330への入力に基づいて、複数のモニタリングリクエストを含むバッチリクエストを生成する。例えばWebクライアントは、モニタキー333を押す操作が行われた場合に、複数の対象選択部332への入力に基づいて、モニタリングが必要な2以上の項目を特定し、2以上の項目にそれぞれ対応する2以上のモニタリングリクエストを含むバッチリクエストを生成する。
【0057】
処理部112は、2以上のモニタリングリクエストに対応する2以上のモニタリングを含むバッチ処理をモニタ部122に実行させる。レスポンス生成部113は、バッチ処理に対するレスポンスに、2以上のモニタリングの結果を含めてWebクライアントに送信する。
【0058】
処理部112は、バッチ処理において、複数のリクエストに含まれる第1リクエストに応じた第1処理を実行し、複数のリクエストに含まれる第2リクエストに応じた第2処理を、第1処理の結果を引数として実行してもよい。
【0059】
第1処理の一例としては、周辺環境に適応したパスでロボット2を動作させるための1以上の動作コマンドを生成することが挙げられる。第2処理の一例としては、第1処理により生成された1以上の動作コマンドに基づいてロボット2を動作させることが挙げられる。
【0060】
第1処理と第2処理との間における処理結果の引継ぎを含む複数の処理もまとめて処理部 112に実行させることができる。これにより、Webクライアントとロボットコントローラ100との間における通信負担を更に軽減し、操作感を更に向上させることができる。
【0061】
ロボットコントローラ100は、ユーザの識別情報に基づいて、Webクライアントによるロボット2の操作を制限するように構成されていてもよい。例えばWebサーバ110は、記憶部115と、制限部116とを更に有してもよい。記憶部115は、ユーザの識別情報を記憶する。制限部116は、Webクライアントのユーザの識別情報が記憶部に記憶されていない場合に、ロボット操作部121によるロボット2の操作を制限する。例えば制限部116は、ロボット操作部121によりロボット2を動作させることを禁止する。
【0062】
Webクライアントにおいて、ユーザ情報は、ユーザが入力したログイン情報等により取得される。ユーザの識別情報は、例えばリクエストにおいて、例えばPOSTメソッドのボディ等に含められる。制限部116は、WebAPI111が受け付けたリクエストの受信データに含まれるユーザの識別情報が、記憶部に記憶されているか否かを判定する。
【0063】
一例として、Webクライアントは、ロボット操作部121によりロボット2を操作するリクエスト(以下、「操作リクエスト」という)にユーザの識別方法を含める。制限部116は、操作リクエストの受信データに含まれるユーザの識別情報に基づいて、ユーザの識別情報が記憶部115に記憶されているか否かを判定する。
【0064】
Webクライアントは、ユーザの識別情報が認証されていない場合に、操作リクエストを送信するための操作オブジェクト(例えば操作ウィンドウ310)を無効化するように構成されていてもよい。例えばWebクライアントは、操作リクエストを送信するための操作オブジェクト(例えば操作ウィンドウ310)を無効化した状態でSPAの実行画面を表示する。Webクライアントは、ユーザによりログイン情報が入力された場合(例えばログインキー342が押された場合)、ユーザの識別情報を含む上述の操作許可リクエストを送信する。制限部116は、操作許可リクエストの受信データに含まれるユーザの識別情報が記憶部115に記憶されているか否かを判定する。
【0065】
レスポンス生成部113は、制限部116による判定結果を含むレスポンスを送信する。例えば、ユーザの識別情報が記憶部115に記憶されていると判定された場合に、レスポンス生成部113は、判定結果として「操作許可」を含むレスポンスを送信する。ユーザの識別情報が記憶部115に記憶されていないと判定された場合に、レスポンス生成部113は、判定結果として「操作禁止」を含むレスポンスを送信する。
【0066】
「操作許可」を含むレスポンスを取得した場合、Webクライアントは、操作ウィンドウ310を有効化する。「操作禁止」を含むレスポンスを取得した場合、Webクライアントは、操作ウィンドウ310を無効化したままにする。操作ウィンドウ310を無効化したままとされることにより、操作リクエストを送信することが禁止されるので、ロボット操作部121によるロボット2の操作が制限されることとなる。
【0067】
Webクライアントは、SPAの実行画面の表示前にユーザ認証リクエストを送信し、「操作許可」を含むレスポンスを取得した場合に操作オブジェクトを有効化してSPAの実行画面を表示し、「操作禁止」を含むレスポンスを取得した場合に操作オブジェクトを無効化してSPAの実行画面を表示してもよい。
【0068】
Webアプリケーションによれば、Webアプリケーションにログインしているユーザの情報をリクエストに含めることができる。これを利用し、識別情報が記憶されていないユーザによるロボット2の操作を制限することで、ロボットコントローラ100の堅牢性を更に向上させることができる。
【0069】
ロボットコントローラ100は、リクエストの送信経路に基づいて、Webクライアントによるロボット2の操作を制限するように構成されていてもよい。例えば制限部116は、Webクライアントが通信ネットワークを介してリクエストを送信する場合に、ロボット操作部121によるロボット2の操作を制限してもよい。例えば制限部116は、ロボット操作部121によりロボット2を動作させることを禁止する。
【0070】
例えば制限部116は、リクエストの受信データに含まれる情報に基づいて、リクエストが通信ネットワークを介して送信されたか否かを判定する。一例として、Webクライアントは、操作リクエストの受信データに含まれる情報に基づいて、操作リクエストが通信ネットワークを介して送信されたか否かを判定する。
【0071】
制限部116は、操作許可リクエストの受信データに含まれる情報に基づいて、操作許可リクエストが通信ネットワークを介して送信されたか否かを判定してもよい。レスポンス生成部113は、制限部116による判定結果を含むレスポンスを送信する。例えば、操作許可リクエストは通信ネットワーク介さずに送信されたと判定された場合、レスポンス生成部113は、判定結果として「操作許可」を含むレスポンスを送信する。操作許可リクエストは通信ネットワークを介して送信されたと判定された場合、レスポンス生成部113は、判定結果として「操作禁止」を含むレスポンスを送信する。
【0072】
上述したユーザの識別情報に基づく制限と同様に、Webクライアントは、「操作許可」を含むレスポンスを取得した場合に操作ウィンドウ310を有効化し、「操作禁止」を含むレスポンスを取得した場合に操作ウィンドウ310を無効化する。操作ウィンドウ310を有効化するか否かの決定は、SPAの実行画面の表示前後のいずれで行われてもよい。
【0073】
Webアプリケーションによれば、通信ネットワークを介してロボットコントローラ100にリモートアクセスすることも可能である。一方、リモートアクセス下においては、ユーザによる目視確認が不十分な状況にロボット2の操作が行われる可能性もある。これに対し、通信ネットワークを介してリクエストを受け付けた場合に、ロボット2の操作を制限することで、リモートアクセスの利便性と、ロボットコントローラ100の堅牢性との両立を図ることができる。
【0074】
制限部116は、Webクライアントのユーザの識別情報が記憶部115に記憶されていない場合、及びWebクライアントが通信ネットワークを介してリクエストを送信する場合の両方において、ロボット操作部121によるロボット2の操作を制限してもよい。
【0075】
ロボットコントローラ100は、端末200の識別情報に基づいて、Webクライアントによるロボット2の操作を制限するように構成されていてもよい。例えば記憶部115は、端末の識別情報を記憶してもよい。制限部116は、Webクライアントを実行する端末200の識別情報が記憶部に記憶されていない場合に、ロボット操作部121によるロボット2の操作を制限してもよい。例えば制限部116は、ロボット操作部121によりロボット2を動作させることを禁止する。
【0076】
例えば制限部116は、リクエストの受信データに含まれる情報に基づいて、端末200の識別情報を取得し、取得した識別情報が記憶部115に記憶されているか否かを判定する。一例として、制限部116は、操作リクエストの受信データに含まれる情報に基づいて取得した識別情報が、記憶部115に記憶されているか否かを判定してもよい。
【0077】
制限部116は、操作許可リクエストの受信データに含まれる情報に基づいて取得した識別情報が、記憶部115に記憶されているか否かを判定してもよい。レスポンス生成部113は、制限部116による判定結果を含むレスポンスを送信する。例えば、端末200の識別情報が記憶部115に記憶されていると判定した場合、レスポンス生成部113は、判定結果として「操作許可」を含むレスポンスを送信する。端末200の識別情報が記憶部115に記憶されていないと判定した場合、レスポンス生成部113は、判定結果として「操作禁止」を含むレスポンスを送信する。
【0078】
上述したユーザの識別情報に基づく制限と同様に、Webクライアントは、「操作許可」を含むレスポンスを取得した場合に操作ウィンドウ310を有効化し、「操作禁止」を含むレスポンスを取得した場合に操作ウィンドウ310を無効化する。操作オブジェクトを有効化するか否かの決定は、SPAの実行画面の表示前後のいずれで行われてもよい。
【0079】
記憶部115に識別情報が記憶されていない端末200からのロボット2の操作を制限することで、多様な端末200を利用可能であることの利便性と、ロボットコントローラ100の堅牢性との両立を図ることができる。
【0080】
制限部116は、Webクライアントのユーザの識別情報が記憶部115に記憶されていない場合、及び端末200の識別情報が記憶部115に記憶されていない場合の両方において、ロボット操作部121によるロボット2の操作を制限してもよい。制限部116は、Webクライアントが通信ネットワークを介してリクエストを送信する場合、及び端末200の識別情報が記憶部115に記憶されていない場合の両方において、ロボット操作部121によるロボット2の操作を制限してもよい。制限部116は、Webクライアントのユーザの識別情報が記憶部115に記憶されていない場合、Webクライアントが通信ネットワークを介してリクエストを送信する場合、及び端末200の識別情報が記憶部115に記憶されていない場合の全てにおいて、ロボット操作部121によるロボット2の操作を制限してもよい。
【0081】
ロボットコントローラ100は、Webクライアントからのリクエストに応じて、Webクライアントに送信するSPAの本体データを変更するように構成されていてもよい。例えばファイル処理部114は、モニタリングのリクエストを送信可能なSPAの本体データ140と(以下、「本体データ141」という。)と、モニタリングのリクエストに加えてロボット2の操作のリクエストを送信可能なSPAの本体データ140(以下、「本体データ142」という。)と、を含む複数種類の本体データ140を保存してもよい。本体データ141に基づくSPAにおいては、ロボット2の操作のリクエストの少なくとも部分的に制限される。ファイル処理部114は、Webクライアントからのリクエストに応じて、複数種類の本体データ140のいずれかをWebクライアントに送信してもよい。
【0082】
一例として、ファイル処理部114は、リクエストの受信データに含まれるユーザの識別情報が記憶部115に記憶されていない場合に本体データ141を送信し、リクエストの受信データに含まれるユーザの識別情報が記憶部115に記憶されている場合に本体データ142を送信してもよい。ファイル処理部114は、リクエストが通信ネットワークを介して送信されている場合に本体データ141を送信し、リクエストが通信ネットワークを介さずに送信されている場合に本体データ142を送信してもよい。ファイル処理部114は、端末200の識別情報が記憶部115に記憶されていない場合に本体データ141を送信し、端末200の識別情報が記憶部115に記憶されている場合に本体データ142を送信してもよい。
【0083】
ファイル処理部114は、リクエストに含まれるユーザの識別情報、及びリクエストの送信経路の両方に基づいて、送信する本体データ140を選択してもよい。ファイル処理部114は、リクエストに含まれるユーザの識別情報、及びリクエストに含まれる端末200の識別情報の両方に基づいて、送信する本体データ140を選択してもよい。制限部116は、リクエストの送信経路、及びリクエストに含まれる端末200の識別情報の両方に基づいて、送信する本体データ140を選択してもよい。ファイル処理部114は、リクエストに含まれるユーザの識別情報、リクエストの送信経路、及びリクエストに含まれる端末200の識別情報の全てに基づいて、送信する本体データ140を選択してもよい。
【0084】
本体データ140の送信リクエストに基づいて、制限部116が、「操作許可」とするか「操作禁止」とするかの判定を行い、上記「操作許可」を含むレスポンスとしてファイル処理部114に操作用本体データ142を送信させ、上記「操作禁止」を含むレスポンスとしてファイル処理部114にモニタ用本体データ141を送信させてもよい。
【0085】
Webクライアントからのリクエストに応じて、複数種類の本体データ140を使い分けることで、ユーザの違い、端末200の違い、又はアクセス経路の違い等に応じて、Webアプリケーションの表示を変更し、操作感を更に向上させることができる。
【0086】
〔ハードウェア構成〕
図4は、ロボットコントローラ100と端末200とを備える制御システムのハードウェア構成を例示するブロック図である。ロボットコントローラ100は、回路190を有する。回路190は、1以上のプロセッサ191と、1以上のメモリデバイス192と、1以上のストレージデバイス193と、通信ポート194と、ドライバ回路195とを有する。1以上のストレージデバイス193は、SPAを実行するWebクライアントからリクエストをWebAPIにより受け付けることと、WebAPIが受け付けたリクエストに応じた処理を、ロボット2に対して実行することと、リクエストに対するレスポンスを、SPAの更新データとして生成することと、をロボットコントローラ100に実行させるためのプログラムを記憶する。例えば1以上のストレージデバイス193は、上述した各機能ブロックをロボットコントローラ100に構成させるためのプログラムを記憶する。1以上のストレージデバイス193のそれぞれは、フラッシュメモリ、又はハードディスク等の内蔵型の記憶媒体であってもよく、USBメモリ又は光ディスク等の可搬型の記憶媒体であってもよい。
【0087】
1以上のメモリデバイス192は、1以上のストレージデバイス193からロードされたプログラムを一時的に記憶する。1以上のメモリデバイス192のそれぞれは、ランダムアクセスメモリ等であってもよい。1以上のプロセッサ191は、1以上のメモリデバイス192にロードされたプログラムを実行することにより、上述した各機能ブロックを構成する。1以上のプロセッサ191は、演算結果を適宜1以上のメモリデバイス192に記憶させる。
【0088】
通信ポート194は、1以上のプロセッサ191からの要求に基づいて端末200との間で通信を行う。ドライバ回路195は、1以上のプロセッサ191からの要求に基づいて、ロボット2(アクチュエータ41,42,43,44,45,46)に駆動電力を供給する。
【0089】
端末200は、回路290を有する。回路290は、1以上のプロセッサ291と、1以上のメモリデバイス292と、1以上のストレージデバイス293と、通信ポート294と、ユーザインタフェース295とを有する。1以上のストレージデバイス293は、不揮発性の記憶媒体であり、少なくともオペレーティングシステム及びWebクライアントの実行プログラムを記憶している。1以上のストレージデバイス293のそれぞれは、フラッシュメモリ、又はハードディスク等の内蔵型の記憶媒体であってもよく、USBメモリ又は光ディスク等の可搬型の記憶媒体であってもよい。
【0090】
1以上のメモリデバイス292は、1以上のストレージデバイス293からロードされたプログラムを一時的に記憶する。1以上のメモリデバイス292は、ランダムアクセスメモリ等であってもよい。1以上のプロセッサ291は、1以上のメモリデバイス292にロードされたプログラムを実行する。1以上のプロセッサ291は、演算結果を適宜1以上のメモリデバイス292に記憶させる。
【0091】
通信ポート294は、1以上のプロセッサ291からの要求に基づいてロボットコントローラ100との間で通信を行う。ユーザインタフェース295は、1以上のプロセッサ291からの要求に基づいて、ユーザとのコミュニケーションを行う。例えばユーザインタフェース295は、表示デバイスと、入力デバイスとを含む。表示デバイスの例としては、液晶モニタ又は有機EL(Electro-Luminescence)モニタ等が挙げられる。入力デバイスの例としては、キーボード、マウス、又はキーパッド等が挙げられる。入力デバイスは、タッチパネルとして表示デバイスと一体化されていてもよい。
【0092】
以上のハードウェア構成はあくまで一例であり、適宜変更可能である。
【0093】
〔制御方法〕
制御方法の一例として、ロボットコントローラ100が実行する制御手順を例示する。この制御手順は、SPAを実行するWebクライアントからリクエストをWebAPIにより受け付けることと、WebAPIが受け付けたリクエストに応じた処理を、ロボット2に対して実行することと、リクエストに対するレスポンスを、SPAの更新データとして生成することと、を含む。以下、より詳細な制御手順を、SPAの起動手順と、リクエストのハンドリング手順と、イベント監視手順とに分けて例示する。
【0094】
(SPAの起動手順)
図5に示すように、ロボットコントローラ100は、まずステップS01,S02を実行する。ステップS01では、ファイル処理部114が、SPAの本体データの送信リクエストを待機する。ステップS02では、ファイル処理部114が、本体データ140をWebクライアントに送信する。端末200が実行するWebクライアントは、ファイル処理部114により送信された本体データ140に基づいて、SPAを実行する。例えばWebクライアントは、操作ウィンドウ310を無効化した状態で操作インタフェース300を生成する。
【0095】
次に、ロボットコントローラ100はステップS03を実行する。ステップS03では、WebAPI111によりイベント監視リクエストが受け付けられたか否かをイベント通知部123が確認する。ステップS03において、イベント監視リクエストが受け付けられていないと判定した場合、ロボットコントローラ100はステップS04を実行する。ステップS04では、所定の起動待機時間が経過したか否かを確認する。ステップS04において、起動待機時間が経過していないと判定した場合、ロボットコントローラ100は処理をステップS03に戻す。
【0096】
ステップS03においてイベント監視リクエストが受け付けられたと判定した場合、ロボットコントローラ100はステップS05,S06を実行する。ステップS05では、イベント通知部123が、Webクライアントとの間にイベント通知チャネルを確立する。ステップS06では、レスポンス生成部113が、イベント監視リクエストに対するレスポンスを生成し、Webクライアントに送信する。その後、ロボットコントローラ100は処理をステップS03に戻す。以後、起動待機時間が経過するまでは、イベント監視リクエストを受け付ける度に、イベントごとのイベント通知チャネルが確立される。
【0097】
ステップS04において、起動待機時間が完了すると、SPAの起動が完了する。
【0098】
(リクエストのハンドリング手順)
図6に示すように、ロボットコントローラ100は、まずステップS11を実行する。ステップS11では、WebAPI111によるリクエストの受け付けを処理部112が待機する。ステップS11において、リクエストが受け付けられたと判定した場合、ロボットコントローラ100はステップS13を実行する。ステップS13では、リクエストがバッチリクエストであるか否かを処理部112が確認する。ステップS13において、リクエストはバッチリクエストではないと判定した場合、ロボットコントローラ100はステップS14,S15を実行する。ステップS14では、処理部112が、リクエストに対応する処理を実行する。ステップS14の内容については後述する。ステップS15では、レスポンス生成部113が、リクエストに対するレスポンスをSPAの更新データとして生成し、Webクライアントに送信する。
【0099】
ステップS13において、リクエストはバッチリクエストであると判定した場合、ロボットコントローラ100はステップS16,S17,S18を実行する。ステップS16では、処理部112が、バッチリクエストに含まれる複数のリクエストのうち、未対応のリクエストを選択する。ステップS17では、処理部112が、リクエストに対応する処理を実行する。ステップS14の内容については後述する。ステップS18では、バッチリクエストに含まれる全てのリクエストに対応する処理(バッチ処理)が完了したか否かを処理部112が確認する。ステップS18において、バッチ処理は完了していないと判定した場合、ロボットコントローラ100は処理をステップS16に戻す。以後、バッチ処理が完了するまでは、リクエストの選択と、選択したリクエストに対応する処理とが繰り返される。
【0100】
ステップS18において、バッチ処理が完了したと判定した場合、ロボットコントローラ100はステップS19を実行する。ステップS19では、レスポンス生成部113が、バッチリクエストに対するレスポンスをSPAの更新データとして生成し、Webクライアントに送信する。
【0101】
図7は、ステップS14及びステップS17における処理手順を例示するフローチャートである。
図7に示すように、ロボットコントローラ100は、まずステップS31を実行する。ステップS31では、リクエストが操作許可リクエストであるか否かを処理部112が確認する。ステップS31において、リクエストが操作許可リクエストであると判定した場合、ロボットコントローラ100はステップS32を実行する。
【0102】
ステップS32では、処理部112が、操作許可が可能であるか否かを制限部116に確認させる。制限部116は、操作許可リクエストの受信データに含まれるユーザの識別情報が、記憶部115に記憶されているか否かに基づいて、操作許可が可能であるか否かを確認する。上述したように、制限部116は、操作許可リクエストの送信経路が通信ネットワークを含んでいるか否かに基づいて、操作許可が可能であるか否かを確認してもよい。制限部116は、端末200の識別情報が記憶部115に記憶されているか否かに基づいて、操作許可が可能であるか否かを確認してもよい。
【0103】
操作許可が可能であると判定した場合、制限部116は、レスポンス生成部113が送信するレスポンスに「操作許可」を含める。操作許可が不可能であると判定した場合、制限部116は、レスポンス生成部113が送信するレスポンスに「操作禁止」を含める。「操作許可」を含むレスポンスを取得した場合、Webクライアントは、操作ウィンドウ310を有効化する。「操作禁止」を含むレスポンスを取得した場合、Webクライアントは、操作ウィンドウ310を無効化したままにする。
【0104】
ステップS31において、リクエストが操作許可リクエストではないと判定した場合、ロボットコントローラ100はステップS34を実行する。ステップS34では、リクエストが操作リクエストであるか否かを処理部112が確認する。ステップS34において、リクエストが操作リクエストであると判定した場合、ロボットコントローラ100はステップS35を実行する。ステップS35では、ロボット操作部121が、リクエストに応じてロボット2の操作を実行する。ステップS34において、リクエストが操作リクエストではない(モニタリングリクエストである)と判定した場合、ロボットコントローラ100はステップS36を実行する。ステップS36では、モニタ部122が、リクエストに応じて、ロボット2のモニタリングを実行する。モニタ部122は、レスポンス生成部113が送信するレスポンスにモニタリング結果を含める。以上で処理手順が完了する。
【0105】
(イベント監視手順)
イベント監視手順は、ステップS05におけるイベント通知チャネルの確立後に、上述したリクエストのハンドリング手順と並行して行われる手順である。
図8に示すように、ロボットコントローラ100は、ステップS21,S22を実行する。ステップS21では、イベント通知部123がイベントの発生を待機する。ステップS22では、イベント通知部123が、イベントの通知データをイベント通知ポートに送信する。その後、ロボットコントローラ100は処理をステップS21に戻す。以後、の監視が継続される。
【0106】
〔まとめ〕
以上に説明したように、ロボットコントローラ100は、SinglePageApplicationを実行するWebクライアントからリクエストを受け付けるWebAPI111と、WebAPI111が受け付けたリクエストに応じた処理を、ロボット2に対して実行する処理部112と、リクエストに対するレスポンスを、SinglePageApplicationの更新データとして生成するレスポンス生成部113と、を備える。
【0107】
このロボットコントローラ100によれば、ロボット2の操作インタフェースをWebアプリケーション化することができる。これにより、端末200のハードウェア構成に制約されることなく、操作インタフェースを随時更新し、ユーザの操作性を向上させることができる。一方、ロボットコントローラ100には制御におけるリアルタイム性が要求されるので、ロボットコントローラ100においてWebアプリケーションからのリクエストに割り当て可能なリソースは限られることとなる。
【0108】
これに対し、SPAを実行するWebクライアントからリクエストを受け付け、リクエストに対するレスポンスをSPAの更新データとして生成する構成によれば、リクエストの度にロボットコントローラ100においてWebページを生成する必要がなく、レスポンスに基づく画面遷移をWebクライアントにおいて行うことが可能となる。このため、端末200のリソースを有効活用し、ロボットコントローラ100におけるリアルタイム性と、適時画面遷移による優れた操作感との両立を図ることができる。従って、ロボット2の操作性向上に有効である。
【0109】
また、リクエストはWebAPI111により受け付けられるので、ロボットコントローラ100が受け付けるリクエストの種別、形式等がWebAPI111の範囲に制限される。このため、多様な端末200によりロボットコントローラ100が制御される場合においても、ロボットコントローラ100の堅牢性を維持することができる。
【0110】
SinglePageApplicationの本体データ140を保存し、リクエストに応じてWebクライアントに送信するファイル処理部114を更に備えてもよい。端末200に予めSingle Page Applicationの本体データ140を保存しておく必要がないので、ロボットコントローラ100に接続するのみで、多様な端末200をロボット2の操作に利用できる。
【0111】
処理部112は、ロボットコントローラ100におけるイベントの発生を監視し、イベントが発生した場合に、イベントの発生をServer-SentEventsによりWebクライアントに通知するイベント通知部123を有してもよい。Webクライアントとロボットコントローラ100との間におけるリクエスト及びレスポンスを繰り返すことなく、イベントの発生を適時にWebクライアントに通知することができる。これにより、Webクライアントとロボットコントローラ100との間における通信負担を更に軽減し、操作感を更に向上させることができる。
【0112】
イベントは、ロボットコントローラ100において発生するアラームを含んでもよい。アラームにSSEを適用することで、上記通信負担の軽減と、アラームの適時通知との両立を図ることができる。アラーム自体は、適時な通知が求められる一方で、常時発生するイベントではないので、アラームにSSEを適用することで、通信負担の軽減がより顕著となる。
【0113】
処理部112は、リクエストに応じて、ロボット2の操作を実行するロボット操作部121と、リクエストに応じて、ロボット2のモニタリングを実行するモニタ部122と、を有してもよい。処理部112により、ロボット2の操作と、ロボット2のモニタリングとの両方のサービスを提供可能とすることで、更に使い勝手を向上させることができる。
【0114】
ユーザの識別情報を記憶する記憶部115と、記憶部115に記憶されていないユーザの識別情報を含むリクエストをWebAPI111が受け付けた場合に、ロボット操作部121によるロボット2の操作を制限する制限部116と、を更に備えてもよい。Webアプリケーションによれば、Webアプリケーションにログインしているユーザの情報をリクエストに含めることができる。これを利用し、識別情報が記憶されていないユーザによるロボット2の操作を制限することで、ロボットコントローラ100の堅牢性を更に向上させることができる。
【0115】
WebAPI111が通信ネットワークを介してリクエストを受け付けた場合に、ロボット操作部121によるロボット2の操作を制限する制限部116を更に備えてもよい。Webアプリケーションによれば、通信ネットワークを介してロボットコントローラ100にリモートアクセスすることも可能である。一方、リモートアクセス下においては、ユーザによる目視確認が不十分な状況にロボット2の操作が行われる可能性もある。これに対し、通信ネットワークを介してリクエストを受け付けた場合に、ロボット2の操作を制限することで、リモートアクセスの利便性と、ロボットコントローラ100の堅牢性との両立を図ることができる。
【0116】
Webクライアントを実行する端末200の識別情報を記憶する記憶部115と、記憶部115に識別情報が記憶されていない端末200からWebAPI111がリクエストを受け付けた場合に、ロボット操作部121によるロボット2の操作を制限する制限部116と、を更に備えてもよい。記憶部115に識別情報が記憶されていない端末200からのロボット2の操作を制限することで、多様な端末200を利用可能であることの利便性と、ロボットコントローラ100の堅牢性との両立を図ることができる。
【0117】
処理部112は、WebAPI111が複数のリクエストを含むバッチリクエストを受け付けた場合に、複数のリクエストに応じた複数の処理を含むバッチ処理を実行し、レスポンス生成部113は、バッチリクエストに対するレスポンスを生成してもよい。Webクライアントとロボットコントローラ100との間におけるリクエスト及びレスポンスを繰り返すことなく、複数の処理をまとめて処理部112に実行させることができる。これにより、Webクライアントとロボットコントローラ100との間における通信負担を更に軽減し、操作感を更に向上させることができる。
【0118】
処理部112は、バッチ処理において、複数のリクエストに含まれる第1リクエストに応じた第1処理を実行し、複数のリクエストに含まれる第2リクエストに応じた第2処理を、第1処理の結果を引数として実行してもよい。第1処理と第2処理との間における処理結果の引継ぎを含む複数の処理もまとめて処理部112に実行させることができる。これにより、Webクライアントとロボットコントローラ100との間における通信負担を更に軽減し、操作感を更に向上させることができる。
【0119】
ファイル処理部114は、ロボット2のモニタリングのリクエストを送信可能なSinglePageApplicationの本体データ140と、モニタリングのリクエストに加えてロボット2の操作のリクエストを送信可能なSinglePageApplicationの本体データ140と、を含む複数種類の本体データ140と、を保存し、Webクライアントからのリクエストに応じて、複数種類の本体データ140のいずれかをWebクライアントに送信してもよい。Webクライアントからのリクエストに応じて、複数種類の本体データ140を使い分けることで、ユーザの違い、端末200の違い、又はアクセス経路の違い等に応じて、Webアプリケーションの表示を変更し、操作感を更に向上させることができる。
【0120】
Webクライアントは、SinglePageApplicationの実行画面に対する入力に基づいてリクエストを生成し、レスポンスに応じて実行画面の表示を部分的に更新してもよい。レスポンスに基づく画面遷移がWebクライアントにおいて行われるので、リクエストの度にロボットコントローラ100においてWebページを生成する必要がない。このため、端末200のリソースを有効活用し、ロボットコントローラ100におけるリアルタイム性と、適時画面遷移による優れた操作感との両立を図ることができる。
【0121】
Webクライアントは、SinglePageApplicationの起動に応じてイベント監視のリクエストを生成し、ロボットコントローラ100は、イベント監視のリクエストをWebAPI111が受け付けた場合に、ロボットコントローラ100におけるイベントの発生の監視を開始し、イベントが発生した場合に、イベントの発生をServer-SentEventsによりWebクライアントに通知するイベント通知部123を更に有してもよい。SPAの起動後における通信負担を更に軽減することができる。
【0122】
実行画面に対する入力に基づいて、複数のリクエストを含むバッチリクエストを生成し、処理部112は、WebAPI111がバッチリクエストを受け付けた場合に、複数のリクエストに応じた複数の処理を含むバッチ処理を実行し、レスポンス生成部113は、バッチ処理に対するレスポンスを生成してもよい。オペレータの入力に基づいて、バッチリクエストを動的に生成することで、通信負担の軽減と、無駄な処理の削減との両立を図ることができる。
【0123】
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
【符号の説明】
【0124】
2…ロボット、100…ロボットコントローラ、200…端末、110…Webサーバ、140…本体データ、111…WebAPI、112…処理部、113…レスポンス生成部、121…ロボット操作部、122…モニタ部、123…イベント通知部、115…記憶部、116…制限部。