(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023038338
(43)【公開日】2023-03-16
(54)【発明の名称】ロボット制御装置、ロボット制御方法、端末装置、端末制御方法、及びロボット制御システム
(51)【国際特許分類】
B25J 9/22 20060101AFI20230309BHJP
G05B 19/42 20060101ALI20230309BHJP
【FI】
B25J9/22 A
G05B19/42 J
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2023009609
(22)【出願日】2023-01-25
(62)【分割の表示】P 2020175506の分割
【原出願日】2020-10-19
(71)【出願人】
【識別番号】000006633
【氏名又は名称】京セラ株式会社
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】230118913
【弁護士】
【氏名又は名称】杉村 光嗣
(74)【代理人】
【識別番号】100132045
【弁理士】
【氏名又は名称】坪内 伸
(74)【代理人】
【識別番号】100195534
【弁理士】
【氏名又は名称】内海 一成
(72)【発明者】
【氏名】巽 健人
(57)【要約】
【課題】短時間かつ低コストでロボットに実行させる作業内容を変更できるロボット制御装置、ロボット制御方法、端末装置、端末制御方法、及びロボット制御システムを提供する。
【解決手段】ロボット制御装置10は、端末装置20と通信可能に接続される第1インタフェース13と、ロボット40を制御するロボットコントローラ30と通信可能に接続される第2インタフェース14と、制御部11とを備える。制御部11は、ロボット40に実行させる作業内容を特定するために、作業を実行するために呼び出すライブラリを特定する識別子と、呼び出したライブラリに引き渡す実行時引数とを含むジョブ情報を取得する。制御部11は、少なくとも1つのジョブ情報を含み、ジョブ情報で特定される作業内容を少なくとも1台のロボット40に実行させるようにロボットコントローラ30に指示するタスク情報を取得してロボットコントローラ30に出力する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ユーザの入力を受け付ける端末装置と通信可能に接続される第1インタフェースと、
動作を定義するライブラリに基づいてロボットを制御するロボットコントローラと通信可能に接続される第2インタフェースと、
制御部と
を備え、
前記制御部は、
前記端末装置から、前記第1インタフェースによって、前記ロボットに実行させる作業内容を特定するために、作業を実行するために呼び出す前記ライブラリを特定する識別子と、呼び出した前記ライブラリに引き渡す実行時引数とを含むジョブ情報を取得し、
前記端末装置から、前記第1インタフェースによって、少なくとも1つの前記ジョブ情報を含み、前記ジョブ情報で特定される作業内容を少なくとも1台の前記ロボットに実行させるように前記ロボットコントローラに指示するタスク情報を取得して前記第2インタフェースによって前記ロボットコントローラに出力する、
ロボット制御装置。
【請求項2】
前記タスク情報は、前記ジョブ情報で特定される作業内容を実行させるロボットを特定する情報を含む、請求項1に記載のロボット制御装置。
【請求項3】
前記タスク情報は、前記ジョブ情報で特定される作業内容をロボットに実行させる開始条件及び終了条件を特定する情報を含む、請求項1又は2に記載のロボット制御装置。
【請求項4】
前記制御部は、前記ロボットに繰り返し作業を実行させるように前記ロボットコントローラに指示できるように、少なくとも、開始条件及び終了条件を特定する前記タスク情報に関連づけられる前記ジョブ情報を保存する、請求項3に記載のロボット制御装置。
【請求項5】
前記制御部は、前記ロボットコントローラが新たなライブラリをインストールできるように、前記新たなライブラリのデータを前記ロボットコントローラに出力する、請求項1から4までのいずれか一項に記載のロボット制御装置。
【請求項6】
前記制御部は、複数の前記識別子を含む前記ジョブ情報を取得する場合、
前記ジョブ情報は、前記ロボットが先に実行した作業の結果に基づいて次に呼び出すライブラリを決定する情報を更に含む、請求項1から5までのいずれか一項に記載のロボット制御装置。
【請求項7】
前記制御部は、前記実行時引数として、前記ロボットの制御を補助的に定義する補助ライブラリを指定する情報を取得する、請求項1から6までのいずれか一項に記載のロボット制御装置。
【請求項8】
前記ライブラリを含むソフトウェアと同等のソフトウェアを有するロボットシミュレータを更に備え、
前記制御部は、前記ロボットシミュレータに前記タスク情報を出力し、前記ロボットシミュレータから前記タスク情報に基づく前記ロボットの動作のシミュレーション結果を取得し、シミュレーション結果に基づいて前記タスク情報を前記ロボットコントローラに出力するか決定する、請求項1から7までのいずれか一項に記載のロボット制御装置。
【請求項9】
前記第2インタフェースは、前記ロボットコントローラから、前記ロボットが前記タスク情報に基づいて実行した作業の結果に関するフィードバック情報を取得し、
前記制御部は、前記フィードバック情報に基づいて前記タスク情報を更新又は生成して前記ロボットコントローラに出力する、請求項1から8までのいずれか一項に記載のロボット制御装置。
【請求項10】
ユーザの入力を受け付ける端末装置、及び、動作を定義するライブラリに基づいてロボットを制御するロボットコントローラと通信することと、
前記ロボットに実行させる作業内容を特定するために、作業を実行するために呼び出す前記ライブラリを特定する識別子と、呼び出した前記ライブラリに引き渡す実行時引数とを含むジョブ情報を前記端末装置から取得することと、
少なくとも1つの前記ジョブ情報を含み、前記ジョブ情報で特定される作業内容を少なくとも1台の前記ロボットに実行させるように前記ロボットコントローラに指示するタスク情報を前記端末装置から取得して前記ロボットコントローラに出力することと
を含む、ロボット制御方法。
【請求項11】
ユーザからの入力を受け付けるユーザインタフェースと、
動作を定義するライブラリに基づいてロボットを制御するロボットコントローラに情報を出力するロボット制御装置と通信可能に接続される通信インタフェースと、
端末制御部と
を備え、
前記端末制御部は、前記ユーザからの入力に基づいて、前記ロボットに実行させる作業内容を特定するために前記ロボットコントローラが呼び出す前記ライブラリを特定する識別子と、呼び出した前記ライブラリに引き渡す実行時引数とを含むジョブ情報を生成するとともに、少なくとも1つの前記ジョブ情報を含み、前記ジョブ情報で特定される作業内容を少なくとも1台の前記ロボットに実行させるように前記ロボットコントローラに指示するタスク情報を生成し、
前記通信インタフェースは、前記ジョブ情報及び前記タスク情報を前記ロボット制御装置に出力する、
端末装置。
【請求項12】
ユーザからの入力を受け付けることと、
前記ユーザからの入力に基づいて、動作を定義するライブラリに基づいてロボットコントローラによって制御されるロボットに実行させる作業内容を特定するために前記ロボットコントローラが呼び出す前記ライブラリを特定する識別子と、呼び出した前記ライブラリに引き渡す実行時引数とを含むジョブ情報を生成するとともに、少なくとも1つの前記ジョブ情報を含み、前記ジョブ情報で特定される作業内容を少なくとも1台の前記ロボットに実行させるように前記ロボットコントローラに指示するタスク情報を生成して出力することと
を含む端末制御方法。
【請求項13】
動作を定義するライブラリに基づいてロボットを制御するロボットコントローラと、
ユーザインタフェースを有する端末装置と、
前記ロボットコントローラ及び前記端末装置それぞれと通信可能に接続されるロボット制御装置と
を備え、
前記端末装置は、前記ユーザインタフェースに入力された前記ロボットに実行させる作業内容を指定する情報に基づいて、前記ロボットに実行させる作業内容を特定するために、作業を実行するために呼び出す前記ライブラリを特定する識別子と、呼び出した前記ライブラリに引き渡す実行時引数とを含むジョブ情報と、少なくとも1つの前記ジョブ情報を含み、前記ジョブ情報で特定される作業内容を少なくとも1台の前記ロボットに実行させるように前記ロボットコントローラに指示するタスク情報とを生成して前記ロボット制御装置に出力し、
前記ロボット制御装置は、前記端末装置から取得した前記ジョブ情報と前記タスク情報とを前記ロボットコントローラに出力し、
前記ロボットコントローラは、前記タスク情報に含まれる前記ジョブ情報に基づいて前記ライブラリを呼び出すことによって前記ジョブ情報で特定される作業内容を前記ロボットに実行させる、ロボット制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ロボット制御装置、ロボット制御方法、端末装置、端末制御方法、及びロボット制御システムに関する。
【背景技術】
【0002】
従来、ティーチングによってロボットの座標又は入出力の具体的な情報を定義するプログラムを作成し、プログラムを実行することによってロボットを動作させる方法が知られている。例えば特許文献1には、各種タイプの関節の軸及び軸を駆動制御するプログラムを実行することによってロボットを動作させるロボット制御装置が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ティーチングによってロボットを動作させるための座標又は入出力の具体的な情報を定義する場合、ティーチングのために多大な工数及びコストがかかる。つまり、ロボットに実行させる作業内容を変更するために多大な工数及びコストがかかる。短時間かつ低コストでロボットに実行させる作業内容を変更することが求められる。
【0005】
本開示の目的は、短時間かつ低コストでロボットに実行させる作業内容を変更できるロボット制御装置、ロボット制御方法、端末装置、端末制御方法、及びロボット制御システムを提供することにある。
【課題を解決するための手段】
【0006】
本開示の一実施形態に係るロボット制御装置は、第1インタフェースと、第2インタフェースと、制御部とを備える。前記第1インタフェースは、ユーザの入力を受け付ける端末装置と通信可能に接続される。前記第2インタフェースは、動作を定義するライブラリに基づいてロボットを制御するロボットコントローラと通信可能に接続される。前記制御部は、前記端末装置から、前記第1インタフェースによって、前記ロボットに実行させる作業内容を特定するために、作業を実行するために呼び出す前記ライブラリを特定する識別子と、呼び出した前記ライブラリに引き渡す実行時引数とを含むジョブ情報を取得する。前記制御部は、前記端末装置から、前記第1インタフェースによって、少なくとも1つの前記ジョブ情報を含み、前記ジョブ情報で特定される作業内容を少なくとも1台の前記ロボットに実行させるように前記ロボットコントローラに指示するタスク情報を取得して前記第2インタフェースによって前記ロボットコントローラに出力する。
【0007】
本開示の一実施形態に係るロボット制御方法は、ユーザの入力を受け付ける端末装置、及び、動作を定義するライブラリに基づいてロボットを制御するロボットコントローラと通信することを含む。前記ロボット制御方法は、前記ロボットに実行させる作業内容を特定するために、作業を実行するために呼び出す前記ライブラリを特定する識別子と、呼び出した前記ライブラリに引き渡す実行時引数とを含むジョブ情報を前記端末装置から取得することを含む。前記ロボット制御方法は、少なくとも1つの前記ジョブ情報を含み、前記ジョブ情報で特定される作業内容を少なくとも1台の前記ロボットに実行させるように前記ロボットコントローラに指示するタスク情報を前記端末装置から取得して前記ロボットコントローラに出力することを含む。
【0008】
本開示の一実施形態に係る端末装置は、ユーザインタフェースと、通信インタフェースと、端末制御部とを備える。前記ユーザインタフェースは、ユーザからの入力を受け付ける。前記通信インタフェースは、動作を定義するライブラリに基づいてロボットを制御するロボットコントローラに情報を出力するロボット制御装置と通信可能に接続される。前記端末制御部は、前記ユーザからの入力に基づいて、前記ロボットに実行させる作業内容を特定するために前記ロボットコントローラが呼び出す前記ライブラリを特定する識別子と、呼び出した前記ライブラリに引き渡す実行時引数とを含むジョブ情報を生成する。前記端末制御部は、少なくとも1つの前記ジョブ情報を含み、前記ジョブ情報で特定される作業内容を少なくとも1台の前記ロボットに実行させるように前記ロボットコントローラに指示するタスク情報を生成する。前記通信インタフェースは、前記ジョブ情報及び前記タスク情報を前記ロボット制御装置に出力する。
【0009】
本開示の一実施形態に係る端末制御方法は、ユーザからの入力を受け付けることを含む。前記端末制御方法は、前記ユーザからの入力に基づいて、動作を定義するライブラリに基づいてロボットコントローラによって制御されるロボットに実行させる作業内容を特定するために前記ロボットコントローラが呼び出す前記ライブラリを特定する識別子と、呼び出した前記ライブラリに引き渡す実行時引数とを含むジョブ情報を生成するとともに、少なくとも1つの前記ジョブ情報を含み、前記ジョブ情報で特定される作業内容を少なくとも1台の前記ロボットに実行させるように前記ロボットコントローラに指示するタスク情報を生成して出力することを含む。
【0010】
本開示の一実施形態に係るロボット制御システムは、ロボットコントローラと、端末装置と、ロボット制御装置とを備える。前記ロボットコントローラは、動作を定義するライブラリに基づいてロボットを制御する。前記端末装置は、ユーザインタフェースを有する。前記ロボット制御装置は、前記ロボットコントローラ及び前記端末装置それぞれと通信可能に接続される。前記端末装置は、前記ユーザインタフェースに入力された前記ロボットに実行させる作業内容を指定する情報に基づいて、前記ロボットに実行させる作業内容を特定するために、作業を実行するために呼び出す前記ライブラリを特定する識別子と、呼び出した前記ライブラリに引き渡す実行時引数とを含むジョブ情報と、少なくとも1つの前記ジョブ情報を含み、前記ジョブ情報で特定される作業内容を少なくとも1台の前記ロボットに実行させるように前記ロボットコントローラに指示するタスク情報とを生成して前記ロボット制御装置に出力する。前記ロボット制御装置は、前記端末装置から取得した前記ジョブ情報と前記タスク情報とを前記ロボットコントローラに出力する。前記ロボットコントローラは、前記タスク情報に含まれる前記ジョブ情報に基づいて前記ライブラリを呼び出すことによって前記ジョブ情報で特定される作業内容を前記ロボットに実行させる。
【発明の効果】
【0011】
本開示の一実施形態に係るロボット制御装置、ロボット制御方法、端末装置、端末制御方法、及びロボット制御システムによれば、短時間かつ低コストでロボットに実行させる作業内容が変更され得る。
【図面の簡単な説明】
【0012】
【
図1】一実施形態に係るロボット制御システムの構成例を示すブロック図である。
【
図2】一実施形態に係るロボット制御システムの他の構成例を示すブロック図である。
【
図4】ロボット制御システムが実行するロボット制御方法の手順例を示すシーケンス図である。
【
図5】ロボット制御装置が実行するロボット制御方法の手順例を示すフローチャートである。
【
図6】端末装置が実行する端末制御方法の手順例を示すフローチャートである。
【
図7】ロボットコントローラが実行するロボット制御方法の手順例を示すフローチャートである。
【発明を実施するための形態】
【0013】
(ロボット制御システム1の概要)
図1に示されるように、一実施形態に係るロボット制御システム1は、ロボット制御装置10と、端末装置20とを備える。ロボット制御システム1は、後述するように、ロボット40を制御するロボットコントローラ30(
図2参照)を更に備える。ロボット制御装置10と、端末装置20と、ロボット40又はロボットコントローラ30とは、ネットワーク80を介して互いに通信可能に接続される。後述するように、ロボット制御装置10と、端末装置20と、ロボット40又はロボットコントローラ30とは、ネットワーク80を介さずに通信可能に接続されてもよい。ネットワーク80とロボット40又はロボットコントローラ30とは、アクセスポイント82を介して通信可能に接続されてよい。ネットワーク80とロボット40又はロボットコントローラ30とは、アクセスポイント82を介さずに通信可能に接続されてもよい。ロボット制御装置10及び端末装置20の数は、例示される3台に限られず、2台以下であってもよいし、4台以上であってもよい。
【0014】
ロボット制御システム1は、端末装置20によってユーザからロボット40に実行させる作業を特定する情報の入力を受け付ける。ロボット制御システム1は、ロボット制御装置10からロボットコントローラ30に、ロボット40に実行させる作業を指示する情報を出力する。ロボット制御システム1は、ロボットコントローラ30によってロボット40に作業を実行させる。
【0015】
本実施形態に係るロボット制御システム1は、抽象化された作業指示でロボット40に作業を実行させることができる。ユーザは、例えばGUI(Graphical User Interface)からの抽象的な設定によってロボット40に実行させる作業の内容を示すデータを構成してロボット40に作業の実行を指示できる。つまり、本実施形態に係るロボット制御システム1は、どのロボット40が、いつ、どこで、何を、どうするという、人間同士で実行される作業指示のように抽象的な粒度で作業を定義したり指示したりできる。
【0016】
比較例として、ユーザがティーチング作業によってロボット40の動作を細かく設定することでロボット40に作業を実行させるシステムが考えられる。比較例のシステムによれば、例えばロボット40に物体の運搬作業を実行させる場合に、運搬させる物体の種類毎に、又は、状態毎にティーチング作業が必要となる。
【0017】
一方、本実施形態に係るロボット制御システム1によれば、抽象的な粒度でロボット40に対する作業が指示され得る。このようにすることで、ロボット40に非定型作業を実行させる場合にも、作業の内容を示すデータを組み替えるだけで、ロボット40に非定型作業を実行させることができる。その結果、短時間かつ低コストで作業内容の組み替えが実現され、より汎用的な用途でロボットを活用することができる。
【0018】
(ロボット制御システム1の構成例)
図2に示されるように、ロボット制御システム1は、ロボット40を制御するロボットコントローラ30を更に備える。ロボット制御装置10は、端末装置20及びロボットコントローラ30それぞれと通信可能に接続されている。ロボット制御装置10は、端末装置20及びロボットコントローラ30それぞれとネットワーク80を介して通信可能に接続されてもよい。
【0019】
<ロボット制御装置10>
ロボット制御装置10は、制御部11と、第1インタフェース13と、第2インタフェース14とを備える。ロボット制御装置10は、必須ではないがロボットシミュレータ50(後述)を更に備える。
【0020】
ロボット制御装置10は、第1インタフェース13を介して端末装置20に通信可能に接続される。ロボット制御装置10は、第2インタフェース14を介してロボットコントローラ30に通信可能に接続される。ロボット制御装置10は、端末装置20及びロボットコントローラ30それぞれと有線で通信可能に接続されてもよいし、無線で通信可能に接続されてもよい。ロボットコントローラ30とロボット40とは、有線で通信可能に接続されてもよいし、無線で通信可能に接続されてもよい。
【0021】
ロボット制御システム1の各構成部は、無線基地局又はアクセスポイント82(
図1参照)を介して通信可能に接続されてもよいし、無線基地局又はアクセスポイント82を介さずに通信可能に接続されてもよい。アクセスポイント82は、無線接続機能を備えた端末を相互に接続したり、他のネットワークに接続させたりするための無線機を指し、典型的には、OSI(Open System Interconnect)参照モデルにおける第1層(物理層)及び、第2層(データリンク層)の通信プロトコルで作動するデバイスである。ロボット制御システム1の各構成部は、専用回線を介して通信可能に接続されてもよい。ロボット制御システム1の各構成部は、これらの例に限られず他の種々の形態で互いに通信可能に接続されてもよい。
【0022】
制御部11は、ロボット制御装置10の種々の機能を実現するために、少なくとも1つのプロセッサを含んで構成されてよい。プロセッサは、ロボット制御装置10の種々の機能を実現するプログラムを実行しうる。プロセッサは、単一の集積回路として実現されてよい。集積回路は、IC(Integrated Circuit)とも称される。プロセッサは、複数の通信可能に接続された集積回路及びディスクリート回路として実現されてよい。プロセッサは、CPU(Central Processing Unit)を含んで構成されてよい。プロセッサは、DSP(Digital Signal Processor)又はGPU(Graphics Processing Unit)を含んで構成されてもよい。プロセッサは、他の種々の既知の技術に基づいて実現されてよい。
【0023】
ロボット制御装置10は、記憶部12を更に備える。記憶部12は、磁気ディスク等の電磁記憶媒体を含んで構成されてよいし、半導体メモリ又は磁気メモリ等のメモリを含んで構成されてもよい。記憶部12は、HDD(Hard Disk Drive)として構成されてもよいしSSD(Solid State Drive)として構成されてもよい。記憶部12は、各種情報及び制御部11で実行されるプログラム等を格納する。記憶部12は、制御部11のワークメモリとして機能してよい。記憶部12の少なくとも一部は、制御部11に含まれてもよい。
【0024】
第1インタフェース13又は第2インタフェース14は、有線又は無線で通信可能に構成される通信デバイスを含んで構成されてよい。通信デバイスは、種々の通信規格に基づく通信方式で通信可能に構成されてよい。第1インタフェース13又は第2インタフェース14は、既知の通信技術により構成することができる。第1インタフェース13又は第2インタフェース14のハードウェアなどの詳細な説明は省略する。第1インタフェース13及び第2インタフェース14の機能は、1つのインタフェースによって実現されてもよいし、それぞれ別体のインタフェースによって実現されてもよい。
【0025】
ロボット制御装置10は、第1インタフェース13又は第2インタフェース14でネットワーク80に通信可能に接続されてもよい。ロボット制御装置10は、ネットワーク80を介して端末装置20及びロボットコントローラ30それぞれに通信可能に接続されてもよい。
【0026】
ロボット制御システム1において、ロボット制御装置10は、サーバ装置として構成されてもよい。サーバ装置は、少なくとも1台の情報処理装置を含んで構成されてよい。サーバ装置は、複数の情報処理装置に並列処理を実行させるように構成されてよい。サーバ装置は、物理的な筐体を含んで構成される必要はなく、ヴァーチャルマシン又はコンテナオーケストレーションシステムなどの仮想化技術に基づいて構成されてもよい。サーバ装置は、クラウドサービスを用いて構成されてもよい。サーバ装置がクラウドサービスを用いて構成される場合、マネージドサービスを組み合わせることで構成され得る。つまり、ロボット制御装置10の機能は、クラウドサービスとして実現され得る。
【0027】
サーバ装置は、少なくとも1つのサーバ群と、少なくとも1つのデータベース群とを備えてよい。サーバ群は、制御部11として機能する。データベース群は、記憶部12として機能する。サーバ群の数は、1つであってもよいし2つ以上であってもよい。サーバ群の数が1つである場合、1つのサーバ群で実現される機能が各サーバ群で実現される機能を包含する。各サーバ群は、互いに有線又は無線で通信可能に接続される。データベース群の数は、1つであってもよいし2つ以上であってもよい。データベース群の数は、サーバ装置で管理するデータの容量とサーバ装置に求められる可用性要件とに基づいて適宜増減されてよい。データベース群は、各サーバ群と有線又は無線で通信可能に接続される。
【0028】
ロボット制御装置10は、
図1及び
図2において1つの構成として記載されているが、必要に応じて複数の構成を1つのシステムとみなして運用され得る。つまり、ロボット制御装置10は、容量可変なプラットフォームとして構成される。ロボット制御装置10として複数の構成が用いられることによって、1つの構成が天災等の不測の事態の発生時に運用できなくなった場合も、その他の構成を用いてシステムの運用が継続される。この場合、複数の構成それぞれは、有線又は無線を問わない回線によって接続され、相互に通信可能に構成されている。この複数の構成は、クラウドサービスとオンプレミス環境に跨って構築されてもよい。
【0029】
また、ロボット制御装置10は、有線又は無線を問わない回線によって端末装置20並びにロボットコントローラ30及びロボットコントローラ30に制御されるロボット40それぞれと接続される。ロボット制御装置10と、端末装置20と、ロボットコントローラ30とは、相互に標準的なプロトコルを用いたインタフェースを具備しており、双方向のコミュニケーションをとることができる。
【0030】
<端末装置20>
端末装置20は、端末制御部21と、通信インタフェース22と、ユーザインタフェース23とを備える。
【0031】
端末制御部21は、少なくとも1つのプロセッサを含んで構成されてよい。端末制御部21は、ロボット制御装置10の制御部11と同一又は類似に構成されてよい。端末制御部21は、後述するユーザインタフェース23に対応するGUI(Graphical User Interface)を提供するアプリケーションを実行してよい。端末制御部21は、ウェブブラウザ上において、ロボット制御装置10等の他の装置から配信されるGUIのプログラムを実行することによってGUIを提供してもよい。端末制御部21は、GUIをウェブブラウザ上で提供する場合、ユーザがウェブブラウザに対して入力した要求に基づいてロボット制御装置10等の他の装置からGUIのプログラムを受信し、ウェブブラウザ上で描画するように構成されてよい。
【0032】
通信インタフェース22は、ロボット制御装置10の第1インタフェース13又は第2インタフェース14と同一又は類似に構成されてよい。
【0033】
ユーザインタフェース23は、上述のGUIをユーザに提供するように構成される。ユーザインタフェース23は、ユーザに対して情報を出力する出力デバイスと、ユーザからの入力を受け付ける入力デバイスとを含んで構成される。
【0034】
出力デバイスは、表示デバイスを含んで構成されてよい。表示デバイスは、例えば、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(Electro-Luminescence)ディスプレイ若しくは無機ELディスプレイ、又は、プラズマディスプレイ(PDP:Plasma Display Panel)等を含んで構成されてよい。表示デバイスは、これらのディスプレイに限られず、他の種々の方式のディスプレイを含んで構成されてよい。表示デバイスは、LED(Light Emission Diode)等の発光デバイスを含んで構成されてよい。表示デバイスは、他の種々のデバイスを含んで構成されてよい。出力デバイスは、音声等の聴覚情報を出力するスピーカ等の音声出力デバイスを含んで構成されてもよい。出力デバイスは、これらの例に限られず、他の種々のデバイスを含んで構成されてよい。
【0035】
入力デバイスは、例えば、タッチパネル若しくはタッチセンサ、又はマウス等のポインティングデバイスを含んで構成されてよい。入力デバイスは、物理キーを含んで構成されてもよい。入力デバイスは、マイク等の音声入力デバイスを含んで構成されてもよい。入力デバイスは、これらの例に限られず、他の種々のデバイスを含んで構成されてよい。
【0036】
端末装置20は、少なくとも1台の情報処理装置を含んで構成されてよい。ロボット制御システム1が備える端末装置20の数は、1台に限られず、2台以上であってよい。ロボット制御システム1が複数の端末装置20を備える場合、各端末装置20がユーザからの入力を受け付けてよい。端末装置20は、タブレット端末として構成されてよい。端末装置20は、フィーチャフォン又はスマートフォン等の携帯電話端末として構成されてよい。端末装置20は、デスクトップPC(Personal Computer)又はノートPC等のPC端末として構成されてよい。端末装置20は、これらの例に限られず、GUI及び通信機能を提供できる種々のデバイスとして構成されてよい。
【0037】
端末装置20は、ユーザがロボット制御装置10を介してロボットコントローラ30及びロボット40に作業を指示するために使用される。端末装置20は、例えばブラウザ又は専用のアプリケーションを経由して、ロボット40の動作を定義するライブラリ群333(
図3参照)のソフトウェアの追加若しくは削除、又は、ロボット制御システム1の設定変更を指示するために使用されてもよい。端末装置20は、ロボット40の状態を監視するために使用されてもよい。端末装置20は、これらの例に限られず、他の種々の機能を提供できる。
【0038】
<ロボットコントローラ30>
ロボットコントローラ30は、ロボット制御装置10から、ロボット40に実行させる作業を特定するジョブ情報及びタスク情報を取得する。ロボットコントローラ30は、ジョブ情報及びタスク情報に基づいて、ロボット40の動作を特定する情報を出力する。ロボット40に実行させる作業は、例えば、作業対象物を2つの地点の間で移動させる作業を含んでよい。
【0039】
ロボットコントローラ30は、ジョブ情報及びタスク情報をロボット制御装置10から取得するインタフェースを備えてよい。ロボットコントローラ30のインタフェースは、ロボット制御装置10の第1インタフェース13又は第2インタフェース14と同一又は類似に構成されてよい。ロボットコントローラ30は、ジョブ情報及びタスク情報に基づいてロボット40の動作を特定する情報を生成するプロセッサを備えてよい。ロボットコントローラ30のプロセッサは、ロボット制御装置10の制御部11を構成するプロセッサと同一又は類似に構成されてよい。
【0040】
図2に例示される構成において、1台のロボットコントローラ30が1台のロボット40に接続されている。1台のロボットコントローラ30が2台以上のロボット40に接続されてもよい。1台のロボットコントローラ30は、1台のロボット40だけを制御してもよいし、2台以上のロボット40を制御してもよい。ロボットコントローラ30及びロボット40の数は、2台に限られず、1台であってもよいし、3台以上であってもよい。
【0041】
<ロボット40>
ロボット40は、アームを備えるロボットアームとして構成されてよい。アームは、例えば、6軸又は7軸の垂直多関節ロボットとして構成されてよい。アームは、3軸又は4軸の水平多関節ロボット又はスカラロボットとして構成されてもよい。アームは、2軸又は3軸の直交ロボットとして構成されてもよい。アームは、パラレルリンクロボット等として構成されてもよい。アームを構成する軸の数は、例示したものに限られない。
【0042】
ロボット40は、アームに取り付けられるエンドエフェクタを備えてよい。エンドエフェクタは、例えば、作業対象物を把持できるように構成される把持ハンドを含んでよい。把持ハンドは、複数の指を有してよい。把持ハンドの指の数は、2つ以上であってよい。把持ハンドの指は、1つ以上の関節を有してよい。エンドエフェクタは、作業対象物を吸着できるように構成される吸着ハンドを含んでもよい。エンドエフェクタは、作業対象物を掬うことができるように構成される掬いハンドを含んでもよい。エンドエフェクタは、ドリル等の工具を含み、作業対象物に穴を開ける作業等の種々の加工を実施できるように構成されてもよい。エンドエフェクタは、これらの例に限られず、他の種々の動作ができるように構成されてよい。
【0043】
ロボット40は、アームを動作させることによって、エンドエフェクタの位置を制御できる。エンドエフェクタは、作業対象物に対して作用する方向の基準となる軸を有してもよい。エンドエフェクタが軸を有する場合、ロボット40は、アームを動作させることによって、エンドエフェクタの軸の方向を制御できる。ロボット40は、エンドエフェクタが作業対象物に作用する動作の開始及び終了を制御する。ロボット40は、エンドエフェクタの位置、又は、エンドエフェクタの軸の方向を制御しつつ、エンドエフェクタの動作を制御することによって、作業対象物を動かしたり加工したりすることができる。
【0044】
ロボット40は、無人搬送車(AGV:Automated Guided Vehicle)として構成されてもよい。ロボット40は、ドローンとして構成されてもよい。ロボット40は、ロボットアーム又はAGVに限られず、乗り物、電子機器又は制御機械等の他の種々の形態で構成されてもよい。
【0045】
ロボット40は、ロボット40の各構成部の状態を検出するセンサを更に備えてよい。センサは、ロボット40の各構成部の現実の位置若しくは姿勢、又は、ロボット40の各構成部の速度若しくは加速度に関する情報を検出してよい。センサは、ロボット40の各構成部に作用する力を検出してもよい。センサは、ロボット40の各構成部を駆動するモータに流れる電流又はモータのトルクを検出してもよい。センサは、ロボット40の実際の動作の結果として得られる情報を検出できる。ロボットコントローラ30は、センサの検出結果を取得することによって、ロボット40の実際の動作の結果を把握することができる。
【0046】
(ロボット制御システム1の動作例)
上述したように、ロボット制御システム1において、端末装置20は、ユーザから入力を受け付け、ユーザの入力に基づいてロボット40に実行させる作業を特定する情報を生成し、ロボット制御装置10に出力する。ユーザの入力に基づいてロボット40に実行させる作業を特定する情報は、ジョブ情報とタスク情報とに分けられる。ジョブ情報は、ロボット40に実行させる作業の内容を特定する。ジョブ情報は、人間同士で作業を指示する際に用いられる、作業対象又は作業手順を定めた書類、いわゆる作業指示書に記載された内容に相当する。タスク情報は、ジョブ情報で特定される作業を実行させるロボット40を特定するとともに、ジョブ情報で特定される作業の開始条件と終了条件とを特定する。タスク情報は、人間同士で作業の開始又は終了を指示する情報に相当する。
【0047】
ロボット制御装置10は、ジョブ情報とタスク情報とをロボットコントローラ30に出力する。ロボットコントローラ30は、ジョブ情報とタスク情報とに基づいて、ロボット40の動作を定義するアクションライブラリを呼び出し、ロボット40に作業を実行させる。ロボットコントローラ30は、ロボット40に作業を実行させた結果をフィードバック情報として取得し、ロボット制御装置10に出力する。フィードバック情報は、FB情報とも称される。
【0048】
アクションライブラリは、ロボットコントローラ30にインストールされるプログラムモジュールである。アクションライブラリは、ライブラリ群333に含まれる。ロボットコントローラ30は、少なくとも1つのアクションライブラリをインストールする。ライブラリ群333は、ロボットコントローラ30によってインストールされたアクションライブラリによって構成される。
【0049】
ロボットコントローラ30は、ライブラリ群333に含まれるインストール済みのアクションライブラリの中から、呼び出すアクションライブラリを特定する情報をライブラリ群333に引き渡すことによって、アクションライブラリを呼び出すことができる。呼び出すアクションライブラリを特定する情報は、識別子とも称される。言い換えれば、ロボットコントローラ30がライブラリ群333の中からアクションライブラリを呼び出す場合、呼び出されるアクションライブラリは、識別子によって特定される。
【0050】
アクションライブラリは、ロボット40の動作を制御するための一連の処理手順を定義する。アクションライブラリは、処理手順の中に未定義部分を含んでよい。ロボットコントローラ30は、処理手順の中に含まれる未定義部分を補完することによって処理手順を完成させることができる。ロボットコントローラ30は、アクションライブラリを呼び出す際に、アクションライブラリの未定義部分を補完する情報を特定するパラメータをアクションライブラリに引き渡すことによって、アクションライブラリの処理手順を完成させることができる。アクションライブラリの未定義部分を補完する情報は、補完情報とも称される。補完情報を特定するパラメータは、実行時引数とも称される。
【0051】
補完情報は、例えばロボット40の動作を補助的に定義する補助ライブラリを特定する識別子として特定されてよい。補助ライブラリは、例えばロボット40が作業対象物を認識する手順又は条件等のアルゴリズムを定義してよい。実行時引数が補助ライブラリを特定する識別子を含む場合、ロボットコントローラ30は、識別子で特定される補助ライブラリで定義される動作又は処理をロボット40に実行させることによって生じる結果の情報を取得する。ロボットコントローラ30は、アクションライブラリの未定義部分を補助ライブラリの実行結果で補完して完成したアクションライブラリの処理手順に基づいてロボット40の動作を制御する。
【0052】
補完情報は、例えばロボット40の各構成部を制御する物理量として特定されてよい。ロボット40の各構成部を制御する物理量は、例えば、アーム等の移動量、又は、アーム等を駆動するモータに出力させるトルク等を含んでよい。補完情報は、例えばロボット40に作業対象物を把持させる場合にロボット40が作業対象物を把持する部分等のロボット40の力を作用させる点を特定する情報を含んでもよい。
【0053】
補完情報は、これらの例に限られず、他の種々の情報を含んでよい。補完情報は、文字列、数値、又は真偽値等で表されてよい。アクションライブラリに未定義部分が存在しない場合、ロボットコントローラ30は、アクションライブラリを呼び出す際に実行時引数を引き渡さなくてもよい。
【0054】
ジョブ情報は、識別子と実行時引数とを含む。アクションライブラリに未定義部分が存在しない場合、ジョブ情報は、実行時引数を含まなくてもよい。
【0055】
ジョブ情報は、複数の識別子を含んでよい。ジョブ情報が複数の識別子を含む場合、ロボットコントローラ30は、各識別子で特定されるアクションライブラリを呼び出してロボット40に作業を実行させる。ジョブ情報は、ロボットコントローラ30が複数のアクションライブラリのうち最初に呼び出すアクションライブラリを特定する情報を含んでもよい。複数のアクションライブラリのうち最初に呼び出すアクションライブラリを特定する情報は、エントリポイントとも称される。つまり、ジョブ情報において、エントリポイントが定義されてよい。エントリポイントは、数値として表され得る。
【0056】
ジョブ情報は、ロボットコントローラ30が最初に呼び出したアクションライブラリに基づいて制御されたロボット40の動作の結果に基づいて、ロボットコントローラ30が次に呼び出すアクションライブラリを特定する情報を含んでよい。つまり、ジョブ情報は、ロボット40が最初に実行した作業の結果に基づいて次にロボットコントローラ30が呼び出すアクションライブラリを決定する情報を含んでよい。また、ジョブ情報は、ロボット40が先に実行した作業の結果に基づいて次にロボットコントローラ30が呼び出すアクションライブラリを決定する情報を含んでよい。ロボット40が先に実行した作業は、1つ前に実行した作業だけでなく2つ以上前に実行した作業も含んでよい。
【0057】
ジョブ情報は、ロボットコントローラ30による後続処理を定義する情報を含んでよいともいえる。後続処理は、ロボットコントローラ30がロボット40の動作を制御する際に出力するコンテキスト情報に基づいて定義され得る。コンテキスト情報は、ロボットコントローラ30が呼び出したアクションライブラリのプログラムを実行する際に記憶部等に出力する一連の情報に対応する。コンテキスト情報は、例えばロボット40が動作の判断のために用いたデータ、又は、ロボット40が実行した作業(処理)の成否を表す情報を含んでよい。コンテキスト情報は、これらの情報に限られず、他の種々の情報を含んでよい。コンテキスト情報は、アクションライブラリの実装に基づいて適宜定められ得る。
【0058】
言い換えれば、ジョブ情報は、ロボット40の動作結果に基づく条件分岐を定義する情報を含んでよい。
【0059】
タスク情報は、ジョブ情報で特定される作業の開始条件と終了条件とを特定する情報を含む。タスク情報は、ジョブ情報と、そのジョブ情報で特定される作業を実行させるロボット40を特定する情報とを更に含む。作業を実行させるロボット40は、指示対象とも称される。また、タスク情報に関連する情報として、ロボットコントローラ30が複数のロボット40に作業を実行させる場合に各ロボット40の作業の進捗を表す情報が定義されてよい。タスク情報に関連する情報として、ロボット40の作業の一時停止を要求する情報、又は、ロボット40の作業をキャンセルする情報が定義されてもよい。
【0060】
ライブラリ群333は、アクションライブラリと補助ライブラリとを含む。アクションライブラリは、ロボット40の一連の動作(処理の流れ)を定義するプログラムを含む。アクションライブラリのプログラムは、ロボット40の動作が定義されていない未定義部分を含んでよい。アクションライブラリは、未定義部分を補完する情報として受け付け可能な情報の形式を定義する情報を含む。つまり、アクションライブラリは、ロボットコントローラ30から呼び出される際にロボットコントローラ30から引き渡される実行時引数の形式を定義する情報を含む。実行時引数の形式を定義する情報は、引数定義情報とも称される。ロボットコントローラ30は、呼び出したアクションライブラリの未定義部分を、引数定義情報で定義される形式に沿って構成される実行時引数で特定される補完情報によって補完できる。例えば、引数定義情報によって実行時引数として補助ライブラリの識別子が受け付け可能な形式と定義されている場合、ロボットコントローラ30は、実行時引数として補助ライブラリの識別子を引き渡してアクションライブラリを呼び出す。
【0061】
補助ライブラリは、アクションライブラリの実行時に呼び出されるプログラムを含む。アクションライブラリに補助ライブラリの識別子が実行時引数として引き渡された場合、ロボットコントローラ30は、アクションライブラリのプログラムの実行中に、識別子で特定される補助ライブラリを呼び出してそのプログラムを実行する。補助ライブラリは、例えばロボット40が作業対象物を認識するために用いるAI(Artificial Intelligence)推論アルゴリズムを実装するプログラムを含んでよい。補助ライブラリは、この例に限られず、他の種々のプログラムを含んでよい。
【0062】
ライブラリ群333は、メタ情報によって管理されてよい。メタ情報は、アクションライブラリ又は補助ライブラリの識別子を含んでよい。メタ情報は、アクションライブラリ又は補助ライブラリの表示名称等の付帯的な情報を含んでよい。
【0063】
本実施形態に係るロボット制御システム1は、抽象化された作業指示でロボット40に作業を実行させることができる。ユーザは、例えばGUI(Graphical User Interface)からの抽象的な設定によってロボット40に実行させる作業の内容を示すデータを構成してロボット40に作業の実行を指示できる。つまり、本実施形態に係るロボット制御システム1は、どのロボット40が、いつ、どこで、何を、どうするという、人間同士で実行される作業指示のように抽象的な粒度で作業を定義したり指示したりできる。
【0064】
<ソフトウェア構成>
図3に概念として例示される処理ルーチン群に基づいて、本実施形態に係るロボット制御システム1における処理が説明される。
図3において各構成部の間を結ぶ矢印は、データを出力する方向を表している。
【0065】
<<ロボット制御装置10の処理>>
ロボット制御装置10の制御部11が実行するソフトウェアは、作業内容管理ルーチン322と、作業指示管理ルーチン323と、作業指示出力ルーチン326と、フィードバック管理ルーチン328とを含む。制御部11が実行するソフトウェアは、内部モジュールとも称される。制御部11は、ソフトウェアを実行する際に、データベース324、325及び329を参照してデータを登録したりデータを取得したりする。データベース324、325及び329は、記憶部12に格納されているとする。制御部11は、データベース324にジョブ情報を登録したり置き換えたり削除したりする。制御部11は、データベース325にタスク情報を登録したり置き換えたり削除したりする。制御部11は、データベース329にフィードバック情報を登録したり置き換えたり削除したりする。
【0066】
制御部11は、作業内容管理ルーチン322を実行することによって、端末装置20で実行されるアプリケーション又はブラウザに入力された要求に基づいて、ジョブ情報をデータベース324に登録する。具体的には、制御部11は、作業内容管理ルーチン322を実行することによって、端末装置20からジョブ情報を取得してデータベース324に登録する。また、制御部11は、作業内容管理ルーチン322を実行することによって、ジョブ情報の取得要求に基づいて、ジョブ情報をデータベース324から取得し、要求元にジョブ情報を出力する。
【0067】
制御部11は、作業指示管理ルーチン323を実行することによって、端末装置20で実行されるアプリケーション又はブラウザに入力された要求に基づいて、タスク情報をデータベース325に登録する。具体的には、制御部11は、作業指示管理ルーチン323を実行することによって、端末装置20からタスク情報を取得してデータベース325に登録する。また、制御部11は、作業指示管理ルーチン323を実行することによって、タスク情報の取得要求に基づいて、タスク情報をデータベース325から取得し、要求元にタスク情報を出力する。
【0068】
制御部11は、端末装置20からの要求に基づいてジョブ情報又はタスク情報を生成してデータベース324又は325に登録してもよい。
【0069】
また、制御部11は、作業指示管理ルーチン323を実行することによって、端末装置20からの要求に基づいて、ロボットコントローラ30に出力したタスク情報をキャンセルしたりタスク情報に基づくロボット40の動作を一時停止させたりできる。
【0070】
制御部11は、作業指示出力ルーチン326を実行することによって、データベース325に登録されたタスク情報をロボットコントローラ30に出力してロボット40に作業を指示する。ロボットコントローラ30は、タスク情報で特定されている開始条件に基づいてロボット40に作業を開始させ、終了条件に基づいて作業を終了させる。
【0071】
制御部11は、タスク情報をロボットコントローラ30に出力するタイミングを決定してもよい。具体的には、制御部11は、タスク情報で特定される、作業の開始条件に基づくタイミングでタスク情報をロボットコントローラ30に出力してよい。例えば作業の開始条件が今すぐに作業を開始することである場合、制御部11は、作業指示出力ルーチン326を実行することによって、端末装置20からタスク情報を取得した後、すぐにタスク情報をロボットコントローラ30に出力してよい。例えば作業の開始条件が開始時刻を指定している場合、制御部11は、作業指示出力ルーチン326を実行することによって、指定された開始時刻にタスク情報をロボットコントローラ30に出力してよい。作業の開始条件は、これらの例に限られず、作業対象物の状態に基づく条件等の他の種々の形態で設定されてよい。
【0072】
制御部11は、タスク情報で特定される、作業の終了条件に基づいてロボット40の作業を終了させるように、終了条件に基づくタイミングでロボット40の作業を終了させる指示をタスク情報としてロボットコントローラ30に出力してもよい。例えば作業の終了条件がジョブ情報で特定される作業を実行する回数として指定されている場合、制御部11は、作業指示出力ルーチン326を実行することによって、指定した回数だけ作業が実行された後にロボット40の作業を終了させる指示をロボットコントローラ30に出力してよい。例えば作業の終了条件が終了時刻を指定している場合、制御部11は、作業指示出力ルーチン326を実行することによって、指定された終了時刻に、ロボット40の作業を終了させる指示をロボットコントローラ30に出力してよい。言い換えれば、ロボットコントローラ30は、ロボットコントローラ30の内部の時刻でロボット40の作業の終了時刻を決定しない。このようにすることで、制御部11は、ロボットコントローラ30の内部の時刻の信頼性にかかわらず、ロボット40の作業の終了時刻を制御できる。作業の終了条件は、これらの例に限られず、作業対象物の状態に基づく条件等の他の種々の形態で設定されてよい。
【0073】
制御部11は、端末装置20からタスク情報をキャンセルする要求を取得した場合、ロボット40の作業をキャンセルする指示をタスク情報としてロボットコントローラ30に出力してもよい。制御部11は、端末装置20からロボット40の作業を一時停止する要求を取得した場合、ロボット40の作業を一時停止する指示をタスク情報としてロボットコントローラ30に出力してもよい。
【0074】
制御部11は、ロボット40の作業を終了させる指示、キャンセル指示又は一時停止する指示等をタスク情報とは別の情報としてロボットコントローラ30に出力してもよい。
【0075】
<<ロボットコントローラ30の処理>>
ロボットコントローラ30が実行するソフトウェアは、作業指示取得ルーチン331と、作業実行ルーチン332とを含む。ロボットコントローラ30は、あらかじめインストールされているアクションライブラリを含むライブラリ群333を参照して作業実行ルーチン332を実行する。
【0076】
ロボットコントローラ30は、作業指示取得ルーチン331を実行することによって、ロボット制御装置10で実行される作業指示出力ルーチン326からジョブ情報とタスク情報とを作業指示として取得する。ロボットコントローラ30は、作業指示取得ルーチン331を実行することによって、取得した作業指示を解析する。
【0077】
ロボットコントローラ30は、作業実行ルーチン332を実行することによって、作業指示取得ルーチン331による作業指示の解析結果に基づいて、ロボット40の動作を制御する。ロボットコントローラ30は、タスク情報としてロボット40の作業を開始する指示を取得したと作業指示取得ルーチン331によって解析した場合、作業実行ルーチン332を実行することによって、ロボット40に作業を開始させるように制御してよい。ロボットコントローラ30は、作業実行ルーチン332を実行することによって、ロボット40の作業を開始する指示をキューイング(キュー(待ち行列)に格納)しておき、キューイングした指示を1件ずつ取り出してロボット40に作業を実行させてよい。ロボット40が2つ以上の動作を同時に実行できない場合、ロボットコントローラ30は、ロボット40が動作を実行する順番を、キューイングによって制御してよい。例えば、ロボットコントローラ30は、ロボット40が作業を実行している間にロボット40の作業を開始する指示を取得した場合、ロボット40が先に実行している作業を完了した後で、取得した指示に基づく作業をロボット40に実行させてよい。
【0078】
ロボットコントローラ30は、タスク情報をキャンセルする指示を取得したと作業指示取得ルーチン331によって解析した場合、作業実行ルーチン332を実行することによって、ロボット40の作業をキャンセルするように制御してよい。ロボットコントローラ30は、ロボット40の作業を一時停止する指示を取得したと作業指示取得ルーチン331によって解析した場合、作業実行ルーチン332を実行することによって、ロボット40に作業を一時停止させるように制御してよい。キャンセル又は一時停止の対象となる作業の指示がキューイングされていて開始されていない場合、ロボットコントローラ30は、キューイングしている指示を削除してよい。ロボットコントローラ30は、ロボット40の作業を一時停止する指示をタスク情報として取得してもよい。
【0079】
ロボットコントローラ30は、作業実行ルーチン332を実行することによって、ロボット40の作業を開始する指示をキューから取り出す。ロボットコントローラ30は、作業実行ルーチン332を実行することによって、指示を構成するジョブ情報とタスク情報とを解析し、ロボット40に作業を実行させるようにロボット40のハードウェアを制御する。ロボットコントローラ30は、作業実行ルーチン332を実行することによって、タスク情報で特定される終了条件に基づいて、ジョブ情報で特定される作業内容の実行ルーチンを決定する。例えば終了条件が作業を実行する回数として指定されている場合、ロボットコントローラ30は、作業実行ルーチン332を実行することによって、ジョブで特定される作業内容を指定回数だけ繰り返して実行するようにロボット40のハードウェアを制御する。
【0080】
ロボットコントローラ30は、作業実行ルーチン332において、ライブラリ群333に含まれるプログラムを呼び出して実行することによって、ロボット40に作業を実行させる。ライブラリ群333は、アクションライブラリを含む。ロボットコントローラ30は、ジョブ情報に含まれる識別子で特定されるアクションライブラリを作業実行ルーチン332において呼び出して実行することによって、ロボット40に作業を実行させる。ライブラリ群333は、補助ライブラリを更に含んでもよい。アクションライブラリを呼び出す際に実行時引数として補助ライブラリの識別子を引き渡す場合、ロボットコントローラ30は、アクションライブラリを実行する際に補助ライブラリを更に呼び出して実行する。
【0081】
ロボットコントローラ30は、作業実行ルーチン332を実行することによって、ロボット40の作業の状況に関する情報をロボット制御装置10に出力する。ロボット40の作業の状況に関する情報は、フィードバック情報(FB情報)とも称される。FB情報は、ロボット40が実行している作業を特定する情報を含んでよい。FB情報は、ロボット40が作業を開始したか終了したかを表す情報、又は、ロボット40の作業の進捗を表す情報を含んでよい。ロボット制御装置10の制御部11は、第2インタフェース14でFB情報を取得する。制御部11は、フィードバック管理ルーチン328を実行することによって、FB情報をデータベース329に登録するとともに、データベース325に登録されているタスク情報で特定される作業の実行状況を更新する情報をデータベース325に登録する。
【0082】
本実施形態に係るロボット制御システム1は、クラウドロボティクスシステムとして構成されてもよい。例えば、ロボット制御システム1は、
図3に例示されている構成の少なくとも一部を基本構成として含みつつ、他の構成として外部システムと相互に通信可能な構成を含んでよい。ロボット制御システム1は、外部システムから要求を受け付けたり外部システムに要求を出力したりできるように構成されてよい。
【0083】
ロボット制御装置10は、複数のサーバ装置を含んで構成されることによって冗長化されてよい。ロボット制御装置10は、冗長化されることによって種々の要求に合わせて構成され得る。この場合、各サーバ装置は、相互に通信可能に構成される。
【0084】
<シーケンス図に基づく動作例の説明>
図4に例示されるシーケンス図に基づいて本実施形態に係るロボット制御システム1の動作例が説明される。
図4に例示されるシーケンス図は、t1からt13までで表される各時刻における、ロボット制御システム1の各構成部の動作を表している。本例において、ロボット40は、アーム型ロボットであり、かつ、カメラを実装しているとする。また、ロボット40は、AIによる物体認識の推論を用いたピックアンドプレイスの動作の実行をユーザから要求されるとする。ロボットコントローラ30は、ピックアンドプレイスの動作を実行するためのアクションライブラリと、AIによる物体認識の推論を実行する補助ライブラリとを、あらかじめインストールしているとする。
【0085】
時刻t1からt2までの期間において、端末装置20は、ユーザからロボット作業の内容を示す定義情報であるジョブのデータの入力を受け付ける。端末装置20は、端末装置20にインストールされているアプリケーション又はウェブブラウザ上でロボット制御装置10等の外部装置から配信されるアプリケーションのGUIを用いてユーザにジョブのデータを入力させてよい。本例において、端末装置20は、ロボット40にピックアンドプレイスの動作を実行させるアクションライブラリを指定する入力を受け付ける。
【0086】
また、端末装置20は、アクションライブラリを呼び出す際に引き渡す実行時引数を指定する入力を必要に応じて受け付ける。上述してきたように、実行時引数をどのように指定するかはアクションライブラリごとに定義されている。本例において、ピックアンドプレイスの動作のアクションライブラリを呼び出す際に引き渡される実行時引数は、作業対象物を認識する方法を指定する情報として定義されているとする。
【0087】
端末装置20は、ピックアンドプレイスの動作のアクションライブラリを指定する入力を受け付けた場合、作業対象物を認識する方法に関する入力を更に受け付ける。本例において、端末装置20は、対象物を認識する方法として、AIによる物体認識の推論を指定する入力を受け付けるとする。この場合、端末装置20は、AIによる物体認識の推論を行う補助ライブラリの識別子が実行時引数として入力されたと認識してよい。端末装置20は、補助ライブラリを指定する入力を受け付けてもよい。例えば、端末装置20は、ピックアンドプレイスの動作の対象物としてネジを認識できる補助ライブラリを指定する入力を受け付けてよい。
【0088】
端末装置20は、ピックアンドプレイスの動作のアクションライブラリを指定する入力を受け付けた場合、作業場所を認識する方法に関する入力を更に受け付ける。本例において、端末装置20は、作業場所を認識する方法として、AIによる物体認識の推論を指定する入力を受け付けるとする。この場合、端末装置20は、AIによる物体認識の推論を行う補助ライブラリの識別子が実行時引数として入力されたと認識してよい。端末装置20は、補助ライブラリを指定する入力を受け付けてもよい。端末装置20は、ロボット40に実装されるカメラで認識した容器の候補から、作業対象物をピックする容器と作業対象物をプレイスする容器とを選択する条件に関する入力を受け付けてよい。例えば、端末装置20は、容器の特徴として容器の色をユーザに選択させてもよい。端末装置20は、例えば、作業対象物をピックする容器が赤色であり、かつ、作業対象物をプレイスする容器が青色であるという条件の入力を受け付けてよい。
【0089】
以上のことを言い換えれば、端末装置20は、アクションライブラリを指定する入力を受け付けることによって、ロボット40をどのように動作させるかを特定する情報を取得できる。また、端末装置20は、作業対象物を認識する方法として補助ライブラリを指定する入力を受け付けることによって、何をロボット40の作業対象物とするかを特定する情報を取得できる。また、端末装置20は、作業場所を認識する方法として補助ライブラリを指定する入力を受け付けることによって、ロボット40をどこで動作させるかを特定する情報を取得できる。具体的には、端末装置20は、ユーザから、「ねじ」を「赤い」容器から「青い」容器に「ピックアンドプレイス」するという作業をロボット40に実行させる要求を受け付けることができる。以下、この作業内容は、ピックアンドプレイスジョブと称される。
【0090】
時刻t2において、端末装置20は、GUIによるユーザの入力に基づいてピックアンドプレイスジョブを特定するジョブ情報を生成し、ロボット制御装置10に対してジョブ情報を出力するとともにジョブ情報の登録要求を出力する。
【0091】
時刻t2からt3までの期間において、ロボット制御装置10は、登録要求とともに取得したジョブ情報の内容を確認する。ロボット制御装置10は、ジョブ情報の内容に不整合等の問題が無い場合、ジョブ情報をデータベースに保存する。言い換えれば、ロボット制御装置10は、ジョブ情報をデータベースに登録して永続化する。情報の永続化は、情報を削除する指示を受けるまで保存し続けること、又は、所定期間にわたって保存し続けることを意味する。ロボット制御装置10は、ジョブ情報をデータベースに保存することによって、ジョブ情報が有効な情報として保存されている期間において、そのジョブ情報を何度でも呼び出すことができる。
【0092】
時刻t3において、ロボット制御装置10は、ジョブ情報の登録が完了した報告を含む登録応答を出力する。端末装置20は、登録応答を取得することによって、ジョブ情報が登録されたことを確認する。
【0093】
時刻t1からt3までの期間と必ずしも連続しない時系列に含まれる時刻t4からt5までの期間において、端末装置20は、ジョブ情報で特定される作業をロボット40に実行するように指示する情報であるタスクのデータの入力を受け付ける。端末装置20は、端末装置20にインストールされているアプリケーション又はウェブブラウザ上でロボット制御装置10等の外部装置から配信されるアプリケーションのGUIを用いてユーザにタスクのデータを入力させてよい。本例において、端末装置20は、タスクとして、ピックアンドプレイスジョブを実行させるロボット40を「X」と指定し、開始条件を「今すぐ」と指定し、終了条件を「指定回数の実行まで」と指定し、指定回数を「5回」と指定する入力を受け付けるとする。つまり、端末装置20は、ロボット40を選択する入力によって「誰が」を指定する情報を受け付け、開始条件又は終了条件を指定する入力によって「いつ」を指定する情報を受け付ける。具体的には、端末装置20は、「X」というロボット40がピックアンドプレイスジョブを「今すぐ」に「5回」実行するというタスクのデータを受け付ける。「X」というロボット40がピックアンドプレイスジョブを「今すぐ」に「5回」実行するというタスクのデータは、作業指示に相当する。以下、この作業指示は、ピックアンドプレイスタスクと称される。
【0094】
時刻t5において、端末装置20は、GUIによるユーザの入力に基づいてピックアンドプレイスタスクを特定するタスク情報を生成し、ロボット制御装置10に対してタスク情報を出力するとともにタスク情報の登録要求を出力する。
【0095】
時刻t5からt6までの期間において、ロボット制御装置10は、登録要求とともに取得したタスク情報の内容を確認する。ロボット制御装置10は、タスク情報の内容に不整合等の問題が無い場合、タスク情報をデータベースに保存する。言い換えれば、ロボット制御装置10は、タスク情報をデータベースに登録して永続化する。ロボット制御装置10は、タスク情報を、ユーザからロボット40の作業が指示されたことのエビデンスとして、ロボット40による作業の実行ログとともに保存する。
【0096】
時刻t6において、ロボット制御装置10は、タスク情報の登録が完了した報告を含む登録応答を出力する。端末装置20は、登録応答を取得することによって、タスク情報が登録されたことを確認する。
【0097】
時刻t1からt6までの期間と必ずしも連続しない時系列に含まれる時刻t7において、ロボット制御装置10は、データベースに登録されているタスク情報を読み出して、ロボットコントローラ30に対して作業指示を出力する。本例において、ロボット制御装置10は、ピックアンドプレイスタスクで指定された「X」というロボット40を制御するロボットコントローラ30に対して、開始条件が「今すぐ」であることに従って、すぐにタスク情報を作業指示として出力する。
【0098】
時刻t7からt8までの期間において、ロボットコントローラ30は、取得した作業指示としてのタスク情報を解析する。ロボットコントローラ30は、タスク情報の内容に不整合等の問題がない場合、タスク情報の内容に基づく作業の実行をロボット40に指示する手順に進む。
【0099】
時刻t8において、ロボットコントローラ30は、タスク情報の内容に不整合等の問題がない場合、作業指示としてのタスク情報が問題なく受け付けられてロボット40の作業が開始することを報告するフィードバック情報をロボット制御装置10に出力する。
【0100】
時刻t8からt9までの期間において、ロボットコントローラ30は、タスク情報及びタスク情報に含まれるジョブ情報の内容に基づいてロボット40のハードウェアを制御する情報を生成してロボット40に出力する。本例において、ロボットコントローラ30は、ピックアンドプレイスタスクの内容に基づいてロボット40のハードウェアを制御する情報を生成してロボット40に出力する。ロボット40は、ロボットコントローラ30から取得した情報に基づいてハードウェアを制御することによってハードウェアの各構成部を動作させ、ピックアンドプレイスタスクで特定される作業を実行する。
【0101】
まず、ロボットコントローラ30は、ピックアンドプレイスタスクで特定される終了条件に基づいて、ロボット40に実行させる作業ルーチンを決定する。続いて、ロボットコントローラ30は、決定した作業ルーチンに基づいてジョブを実行する。本例において、ジョブとしてピックアンドプレイスジョブが指定されている。また、終了条件として「5回実行すること」が指定されている。したがって、ロボットコントローラ30は、ピックアンドプレイスジョブを5回繰り返す作業をロボット40に実行させる。
【0102】
続いて、ロボットコントローラ30は、ピックアンドプレイスジョブで指定されているアクションライブラリの識別子に基づいて、ピックアンドプレイスを行うアクションライブラリを実行モジュールとして読み込む。また、ロボットコントローラ30は、ピックアンドプレイスの動作において作業対象物としての「ねじ」を認識するために用いる補助ライブラリと、ピックアンドプレイスの動作において「ねじ」をピック及びプレイスする容器を認識するために用いる補助ライブラリとを読み込む。また、ロボットコントローラ30は、ピックする容器として赤色の容器を指定する情報と、プレイスする容器として青色の容器を指定する情報とを読み込む。ロボットコントローラ30は、補助ライブラリを指定する識別子と容器の特徴を指定する情報とを実行時引数として引き渡してアクションライブラリを呼び出す。ロボットコントローラ30は、呼び出したアクションライブラリを実行することによって、ロボット40に、赤い容器からねじを見つけてピックさせ、ピックしたねじを青い容器にプレイスさせることができる。
【0103】
時刻t9において、ロボットコントローラ30は、ロボット40にタスク情報に基づく作業を実行させた結果を報告するフィードバック情報をロボット制御装置10に出力する。フィードバック情報は、ロボット40が作業の実行を開始したかロボット40が作業の実行を終了したかを表す情報を含んでよい。フィードバック情報は、ロボット40による作業の実行が正常に完了したか異常の発生によって途中で中断したかを表す情報を含んでよい。ロボットコントローラ30がフィードバック情報を出力するタイミングは、必ずしも時刻t8又はt9に限られない。ロボット制御装置10は、フィードバック情報を取得した場合、データベースに登録して永続化する。また、ロボット制御装置10は、データベースに登録されているタスク情報のうち、フィードバック情報に対応するタスク情報をフィードバック情報に基づいて更新する。ロボット制御装置10は、フィードバック情報がロボット40の異常発生の情報を含む場合、端末装置20に異常発生の情報を出力してユーザにエラーを通知してもよい。
【0104】
時刻t1からt10までの期間と必ずしも連続しない時系列に含まれる時刻t11において、端末装置20は、ユーザから、ロボット40に指示したピックアンドプレイスタスクの実行状況を参照する要求の入力を受け付ける。端末装置20は、参照要求をロボット制御装置10に出力する。ロボット制御装置10は、フィードバック情報に基づいてデータベースに登録されているタスク情報を更新している。したがって、ロボット制御装置10は、時刻t11からt12までの期間において、データベースに登録されているタスク情報を読み出してピックアンドプレイスタスクの実行状況に関する情報を取得できる。
【0105】
時刻t12において、ロボット制御装置10は、ピックアンドプレイスタスクの実行状況に関する情報をタスクの参照要求に対する参照応答として端末装置20に出力する。時刻t12からt13までの期間において、端末装置20は、ピックアンドプレイスタスクの実行状況に関する情報を取得してユーザに参照させることができる。
【0106】
<端末制御方法の手順例>
端末装置20の端末制御部21は、
図5に例示されるフローチャートの手順を含む端末制御方法を実行してもよい。端末制御方法は、端末制御部21を構成するプロセッサに実行させる端末制御プログラムとして実現されてもよい。端末制御プログラムは、非一時的なコンピュータ読み取り可能な媒体に格納されてよい。
【0107】
端末制御部21は、ユーザインタフェース23によってユーザの入力を受け付ける(ステップS51)。
【0108】
端末制御部21は、ユーザの入力に基づいてジョブ情報を生成する(ステップS52)。
【0109】
端末制御部21は、ユーザの入力に基づいてタスク情報を生成する(ステップS53)。
【0110】
端末制御部21は、ロボット制御装置10にジョブ情報及びタスク情報を出力する(ステップS54)。つまり、端末制御部21は、ロボット制御装置10にジョブ情報を含むタスク情報を出力する。端末制御部21は、ステップS54の手順の実行後、
図5のフローチャートの手順の実行を終了する。端末制御部21は、
図5のフローチャートの手順の実行を繰り返してもよい。端末制御部21は、ステップS52の手順と、ステップS53の手順とを、入れ替えた順番で実行してもよい。端末制御部21は、ステップS52及びステップS53の一方だけを実行してもよい。
【0111】
<ロボット制御方法の手順例>
ロボット制御装置10の制御部11は、
図6に例示されるフローチャートの手順を含むロボット制御方法を実行してもよい。ロボット制御方法は、制御部11を構成するプロセッサに実行させるロボット制御プログラムとして実現されてもよい。ロボット制御プログラムは、非一時的なコンピュータ読み取り可能な媒体に格納されてよい。
【0112】
制御部11は、端末装置20からジョブ情報を取得する(ステップS41)。さらに、制御部11は、取得したジョブ情報をデータベースに登録してよい。
【0113】
制御部11は、端末装置20からタスク情報を取得する(ステップS42)。さらに、制御部11は、取得したタスク情報をデータベースに登録してよい。
【0114】
制御部11は、ロボットコントローラ30にジョブ情報及びタスク情報を出力する(ステップS43)。つまり、制御部11は、ロボットコントローラ30に、ジョブ情報を含むタスク情報を出力する。制御部11は、ステップS43の手順の実行後、
図6のフローチャートの手順の実行を終了する。制御部11は、
図6のフローチャートの手順の実行を繰り返してもよい。制御部11は、ステップS41の手順と、ステップS42の手順とを、入れ替えた順番で実行してもよい。制御部11は、ステップS41及びステップS42の一方だけを実行してもよい。例えば、制御部11は、既に取得していたジョブ情報を再度取得せずに、タスク情報だけを取得してもよい。
【0115】
ロボットコントローラ30は、
図7に例示されるフローチャートの手順を含むロボット制御方法を実行してもよい。ロボット制御方法は、ロボットコントローラ30を構成するプロセッサに実行させるロボット制御プログラムとして実現されてもよい。ロボット制御プログラムは、非一時的なコンピュータ読み取り可能な媒体に格納されてよい。
【0116】
ロボットコントローラ30は、ロボット制御装置10からジョブ情報及びタスク情報を取得する(ステップS61)。つまり、ロボットコントローラ30は、ロボット制御装置10からジョブ情報を含むタスク情報を取得する。ロボットコントローラ30は、ジョブ情報及びタスク情報の一方だけを取得してもよい。例えば、ロボットコントローラ30は、既に取得していたジョブ情報を再度取得せずに、タスク情報だけを取得してもよい。
【0117】
ロボットコントローラ30は、ロボット40に対して動作を指示する情報を出力する(ステップS62)。
【0118】
ロボットコントローラ30は、ロボット40から指示に応じて動作した結果を取得する(ステップS63)。ロボットコントローラ30は、ステップS63の手順の実行後、
図7のフローチャートの手順の実行を終了する。ロボットコントローラ30は、
図7のフローチャートの手順の実行を繰り返してもよい。
【0119】
以上述べてきたように、本実施形態に係るロボット制御システム1は、自律機能を備えたロボット40に対する抽象化された作業指示を実現する。ユーザは、主にGUIからの設定によってロボット40に実行させる作業内容を示す定義情報データをジョブ情報として構成し、ロボット40に作業内容を指示することができる。
【0120】
比較例として、ティーチングシステムによって作成されたプログラムをロボットコントローラ30にインストールして稼働するシステムが想定される。比較例に係るシステムは、ロボット40に実行させる作業として、主に定型的な作業を対象としている。しかし、非定型の作業に対しては都度作業内容に応じたティーチング(プログラム開発)が必要となる。比較例に係るシステムにおいて、ロボット40を動作させるためにロボット40の各構成部の座標又はロボット40の入出力の具体的な情報を定義することが必要とされる。その結果、ロボット40に作業内容を指示する情報を作成するための作業に費やされる時間及び費用が増大する。その結果、比較例に係るシステムにおいて、ロボット40に非定型作業を実行させることは容易でない。つまり、比較例に係るシステムは、ロボット40に非定型作業を指示することを不得意としている。結果として、比較例に係るシステムにおいて、ロボット40の活用範囲が限定的となっている。
【0121】
また、比較例に係るシステムにおいて、ティーチングは、専門のスキルを持った技術者によって実行される必要がある工程となっている。つまり、ティーチングが容易ではない。ティーチングが容易ではないことは、ロボット40の活用先の拡大を妨げる一因となっている。
【0122】
これに対して、本実施形態に係るロボット制御システム1によれば、ロボット40自体の自律化と、自律化に伴う作業指示の抽象化とが実現される。そして、作業指示の抽象化に基づいてティーチング作業の負荷が低減され得る。その結果、ロボット40の作業範囲の拡大、及び、ロボット40の活用先の拡大が実現され得る。
【0123】
また、比較例に係るシステムにおいて、ティーチングによって定義された作業は、ロボット40の内部(ロボットコントローラ30)で管理されるプログラムであることが多い。ロボット40の内部で管理されるプログラムは、ネットワーク80経由でロボットコントローラ30に作業を指示するために、固有のデータ形式又はプロトコルを必要としたり、プログラムを中継するための専用のプログラムを必要としたりする。固有又は専用の構成は、工場等の生産現場で運用される情報処理システムとの連携を難しくする。つまり、ロボット40の内部で管理されるプログラムを用いるシステムは、工場等の生産現場で運用される情報処理システムとの親和性が低い。その結果、ロボット40の活用先が限定される。
【0124】
これに対して、本実施形態に係るロボット制御システム1は、例えば、どのロボット40が、いつ、どこで、何を、どうする、といった、人が人に対して作業を指示するように抽象的な粒度でロボット40に対して作業を定義して指示できる。このようにすることで、作業定義データ(ジョブ情報)又は作業指示データ(タスク情報)の組み替えだけで、ロボット40に非定型作業を実行させることができる。その結果、短時間かつ低コストでロボット40に実行させる作業内容を組み替えることができるようになる。
【0125】
本実施形態に係るロボット制御システム1において、ロボット40の自律機能は、ライブラリソフトウェア(ライブラリ群333に含まれるアクションライブラリ又は補助ライブラリ)と、ライブラリを実行するルーチン等のソフトウェア群によって実現される。ユーザは、ロボットコントローラ30にライブラリソフトウェアを追加でインストールしたり、ロボットコントローラ30からライブラリソフトウェアを削除したりすることができる。ライブラリソフトウェアのインストールによって、ロボット40は、新たな動作を身に付けたり、新たな判断基準を身に付けることができる。
【0126】
また、本実施形態に係るロボット制御システム1によれば、ユーザがプログラム開発等の専門のスキルを持たない運用担当者であっても、ユーザがロボット40に対する作業指示を作成することが容易になる。
【0127】
また、ロボット40に実行させる作業内容を示す作業定義データ(ジョブ情報)をサーバ装置で管理することによって、工場等の生産現場で用いられる他の情報処理システムとの親和性が高められ得る。他の情報処理システムとの親和性が高いことによって、ユーザが指示を入力するために用いるGUI等のインタフェースとして、他の情報処理システムと親和性の高いインタフェースが用いられ得る。その結果、ものづくりのライフサイクルの中でロボット40に作業を実行させるシステムを、1つのサービスコンポーネントとして、工場等の生産現場に組み込むことができるようになる。
【0128】
(他の実施形態)
以下、他の実施形態が説明される。
【0129】
<ロボットシミュレータ50>
ロボット制御装置10は、必須ではないがロボットシミュレータ50を更に備える。ロボット制御装置10は、ロボットシミュレータ50を備えず、外部に設置されているロボットシミュレータ50と通信可能に接続されてもよい。
【0130】
ロボットシミュレータ50は、ハードウェアとして実現されるロボット40の動作を情報処理によってシミュレートできる。ロボット制御装置10の制御部11は、ロボットシミュレータ50にタスク情報を出力してロボット40の動作をシミュレートさせ、ロボット40の動作のシミュレーション結果を取得してよい。具体的には、ロボットシミュレータ50は、タスク情報及びタスク情報に含まれるジョブ情報に基づく情報処理によってロボット40の動作をシミュレートする。ロボットシミュレータ50は、ロボット40の動作のシミュレーション結果を制御部11に出力する。
【0131】
制御部11は、シミュレーション結果を解析し、タスク情報に基づくロボット40の動作が正常に完了するか異常で途中停止するか判定してよい。制御部11は、ロボット40の動作が正常に完了すると判定したタスク情報を、ロボットコントローラ30に出力するように構成されてよい。制御部11は、ロボット40の動作が正常に完了しないと判定したタスク情報を、ロボットコントローラ30に出力しないように構成されてよい。制御部11がタスク情報に基づくシミュレーション結果をあらかじめ取得することによって、ロボット40の動作異常を減らすことができる。
【0132】
<フィードバック情報に基づくタスク情報の生成>
ロボット制御装置10の制御部11は、第2インタフェース14によって、ロボットコントローラ30から、ロボット40がタスク情報に基づいて実行した作業の結果に関するフィードバック情報を取得してよい。制御部11は、取得したフィードバック情報に基づいて、データベース325に登録されているタスク情報を更新してよい。また、制御部11は、取得したフィードバック情報に基づいて、新たなタスク情報を生成してデータベース325に登録してもよい。制御部11は、更新又は生成したタスク情報をロボットコントローラ30に出力してよい。つまり、制御部11は、フィードバック情報に基づいてタスク情報を更新又は生成してロボットコントローラ30に出力してよい。制御部11がフィードバック情報に基づいてタスク情報を更新又は生成することによって、ロボット40の動作が改善され得る。
【0133】
<保存したジョブ情報を利用したタスク情報の生成>
上述してきた実施形態において、ロボット制御装置10の制御部11は、ジョブ情報とタスク情報とを端末装置20から取得してデータベースに登録する。タスク情報は、ジョブ情報を含み、ジョブ情報で特定されるロボット40の作業内容をどのロボット40にいつ実行させるかを特定する。ユーザは、ロボット40に以前実行させたことのある作業を、再度実行させるように要求することがある。この場合、ジョブ情報は、変更されていない。したがって、制御部11は、以前の実行時にデータベース324に保存されているジョブ情報を利用することができる。このようにすることで、制御部11は、同じ作業をロボット40に実行させるためにジョブ情報を再度取得する必要がない。その結果、同一作業の任意のタイミングで繰り返して実行させることが容易になる。言い換えれば、制御部11は、ジョブ情報を一時的に保存するだけでなく永続化して保存する。あるいは、制御部11は、ロボット40に繰り返し作業を実行させるようにロボットコントローラ30に指示できるように、少なくとも、開始条件及び終了条件を特定するタスク情報に関連づけられるジョブ情報を保存する。このようにすることで、ロボット40に同一の作業を再度実行させることが容易になる。任意のタイミングで繰り返して実行させる同一作業は、繰り返し作業とも称される。
【0134】
<ライブラリのインストール>
ロボットコントローラ30は、アクションライブラリ又は補助ライブラリをあらかじめインストールしておき、インストールしたアクションライブラリ又は補助ライブラリを含むライブラリ群333からアクションライブラリ又は補助ライブラリを呼び出してロボット40に作業を実行させる。ロボットコントローラ30は、ロボット制御装置10からアクションライブラリ又は補助ライブラリのデータを取得してインストールする。ロボット制御装置10は、ロボットコントローラ30が新たなアクションライブラリ又は補助ライブラリをインストールできるように、新たなアクションライブラリ又は補助ライブラリのデータをロボットコントローラ30に出力してよい。ロボット制御装置10が新たなアクションライブラリ又は補助ライブラリのデータをロボットコントローラ30に出力することによって、ロボットコントローラ30は、ロボット40に実行させる新たな動作、又は、ロボット40に実行させる新たな物体認識等の種々の新たな機能を身に付けることができる。その結果、ロボット制御システム1の利便性が高められる。
【0135】
<端末装置20とロボット制御装置10との一体化>
端末装置20は、ジョブ情報及びタスク情報をデータベースに登録する機能を有してよい。この場合、ロボット制御システム1は、ロボット制御装置10を備えなくてもよい。
【0136】
ロボット制御装置10は、ユーザインタフェース23の機能を有することによって、ユーザから直接入力を受け付けてもよい。この場合、ロボット制御システム1は、端末装置20を備えなくてもよい。
【0137】
以上、ロボット制御システム1の実施形態を説明してきたが、本開示の実施形態としては、システム又は装置を実施するための方法又はプログラムの他、プログラムが記録された記憶媒体(一例として、光ディスク、光磁気ディスク、CD-ROM、CD-R、CD-RW、磁気テープ、ハードディスク、又はメモリカード等)としての実施態様をとることも可能である。
【0138】
また、プログラムの実装形態としては、コンパイラによってコンパイルされるオブジェクトコード、インタプリタにより実行されるプログラムコード等のアプリケーションプログラムに限定されることはなく、オペレーティングシステムに組み込まれるプログラムモジュール等の形態であっても良い。さらに、プログラムは、必ずしも制御基板上のCPUにおいてのみ、全ての処理が実施される必要はなく、必要に応じて基板に付加された拡張ボード又は拡張ユニットに実装された別の処理ユニットによってその一部又は全部が実施されるように構成されてもよい。
【0139】
本開示に係る実施形態について説明する図は模式的なものである。図面上の寸法比率等は、現実のものとは必ずしも一致していない。
【0140】
本開示に係る実施形態について、諸図面及び実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形又は改変を行うことが可能であることに注意されたい。従って、これらの変形又は改変は本開示の範囲に含まれることに留意されたい。例えば、各構成部等に含まれる機能等は論理的に矛盾しないように再配置可能であり、複数の構成部等を1つに組み合わせたり、或いは分割したりすることが可能である。
【0141】
本開示に記載された構成要件の全て、及び/又は、開示された全ての方法、又は、処理の全てのステップについては、これらの特徴が相互に排他的である組合せを除き、任意の組合せで組み合わせることができる。また、本開示に記載された特徴の各々は、明示的に否定されない限り、同一の目的、同等の目的、または類似する目的のために働く代替の特徴に置換することができる。したがって、明示的に否定されない限り、開示された特徴の各々は、包括的な一連の同一、又は、均等となる特徴の一例にすぎない。
【0142】
さらに、本開示に係る実施形態は、上述した実施形態のいずれの具体的構成にも制限されるものではない。本開示に係る実施形態は、本開示に記載された全ての新規な特徴、又は、それらの組合せ、あるいは記載された全ての新規な方法、又は、処理のステップ、又は、それらの組合せに拡張することができる。
【0143】
本開示において「第1」及び「第2」等の記載は、当該構成を区別するための識別子である。本開示における「第1」及び「第2」等の記載で区別された構成は、当該構成における番号を交換することができる。例えば、第1インタフェース13は、第2インタフェース14と識別子である「第1」と「第2」とを交換することができる。識別子の交換は同時に行われる。識別子の交換後も当該構成は区別される。識別子は削除してよい。識別子を削除した構成は、符号で区別される。本開示における「第1」及び「第2」等の識別子の記載のみに基づいて、当該構成の順序の解釈、小さい番号の識別子が存在することの根拠に利用してはならない。
【符号の説明】
【0144】
1 ロボット制御システム
10 ロボット制御装置(11:制御部、12:記憶部、13:第1インタフェース、14:第2インタフェース)
20 端末装置(21:端末制御部、22:通信インタフェース、23:ユーザインタフェース)
30 ロボットコントローラ
40 ロボット
50 ロボットシミュレータ
80 ネットワーク
82 アクセスポイント
322 作業内容管理ルーチン
323 作業指示管理ルーチン
326 作業指示出力ルーチン
328 フィードバック管理ルーチン
324、325、329 データベース
331 作業指示取得ルーチン
332 作業実行ルーチン
333 ライブラリ群