本出願は、日本国特許出願2021-158480号(2021年9月28日出願)の優先権を主張するものであり、当該出願の開示全体を、ここに参照のために取り込む。
(ロボット制御システム100の概要)
図1及び図2に示されるように、一実施形態に係るロボット制御システム100は、ロボット1と、ロボットコントローラ2と、情報取得装置3と、端末装置9と、情報処理装置10とを備える。ロボット制御システム100は、作業環境4に位置する作業台5の上に配置されている物体に対してロボット1に作業を実行させる。具体的に、例えばロボット1は、第1トレイ6に収容されているワーク8を、第2トレイ7に移動させることができる。
ロボット1の動作を制御するプログラムは、例えば、ユーザがロボット1を実際に操作しながら作成され、ロボットコントローラ2又は情報処理装置10に保存されてよい。ロボット1の動作を制御するプログラムは、制御プログラムとも称される。なお、制御プログラムは、ロボットシミュレーターなどを用いて作成されてもよい。この場合、例えば、ネットワークに接続しない状態(オフライン)にて、制御プログラムが作成されてもよい。
ロボット1は、所定の処理パターンで動作することによって作業を実行する。処理パターンは、例えば、ロボット1が指示された作業を達成するための動作の組み合わせとして表される。例えば、処理パターンは、ワーク8を把持する動作と、把持したワーク8を搬送する動作と、搬送したワーク8を所定位置に配置する動作との組み合わせとして表され得る。また、作業は、処理パターンに含まれる一連の動作を実行することによって達成される目標を規定する概念であるとする。作業は、例えば、ワーク8をA地点からB地点に運ぶという目標を規定する概念であってよい。作業は、例えば、ワーク8をC地点に載せるという目標を規定する概念であってよい。作業は、例えば、ワーク8を別の物体と組み合わせるという目標を規定する概念であってよい。処理パターンは、ロボット1が作業を完遂するための動作の組み合わせであるともいえる。また、制御プログラムは、ロボット1が作業を完遂できるように処理パターンで表される動作の組み合わせをロボット1に実行させる命令群であるともいえる。すなわち、制御プログラムは、所定の作業を達成するための処理パターンがプログラミングされたソフトウェアともいえる。なお、複数の制御プログラムは、同種のワーク8に対して行なう異なる作業がそれぞれ記録された制御プログラムを含んで構成されてよいし、異種のワーク8に対して行なう同種の作業がそれぞれ記録された制御プログラムを含んで構成されてもよい。また、1つの制御プログラムに、1種類のワーク8に対する1種類の作業がプログラムされていてもよい。
ロボット1に1つの作業を実行させる場合、実行させる作業に対応する1つの制御プログラムがあらかじめ準備される。ロボット1に複数の作業を実行させる場合、各作業に対応する複数の制御プログラムがあらかじめ準備される。ユーザは、ロボット1に実行させたい作業に対応する制御プログラムを選択してロボットコントローラ2に指示することによってロボット1に作業を実行させる。
あらかじめ準備された制御プログラムの数が増加する場合、ユーザが制御プログラムを適切に選択することが難しくなる。例えば、ユーザは、間違った制御プログラムを選択し得る。また、ユーザは、ロボット1に作業を実行させるために作業環境4を準備する際に、作業環境4に配置する物体の種類、数又は位置を間違えることがある。
比較例として、ロボットコントローラ中のワークが作業環境を撮影した画像に基づいて作業環境に存在するワークを推定し、作業環境に存在するワークに対してロボットが実行する作業を推定することが考えられる。しかし、比較例に係る作業の推定方法によれば、例えば、同じワークにおいて複数の異なる作業が実行される可能性がある場合、又は作業環境に間違ったワークが配置されている場合、ロボットコントローラが適切な作業を判断しにくい。
本開示に係る一実施形態に係るロボット制御システム100の情報処理装置10は、ロボットの作業環境4の少なくとも一部を情報取得装置3によって撮影した画像に基づいて作業環境4の少なくとも一部の情報を取得する。ロボット制御システム100の情報処理装置10は、作業環境4の少なくとも一部の情報と、候補となる制御プログラムに関連づけられている情報とを比較する。ロボット制御システム100の情報処理装置10は、候補となる制御プログラムがロボットに作業させる制御プログラムとして適切か判定できる。または、ロボット制御システム100の情報処理装置10は、候補となる制御プログラムが作業環境4に対して適切か判定できる。または、ロボット制御システム100の情報処理装置10は、作業環境4が候補となる制御プログラムを実施する環境として適切か判定できる。
言い換えれば、ロボット制御システム100の情報処理装置10は、情報処理装置10の記憶部12に記録された、ロボット1を制御する複数の制御プログラムから、制御の対象とするロボット1を制御する制御プログラムの候補の適否を推定する。制御の対象とするロボット1は、単に区別のために第1ロボットとも称される。また、第1ロボットを制御する制御プログラムは、単に区別のために第1制御プログラムとも称される。
なお、ロボット制御システム100の情報処理装置10は、ユーザが選択した制御プログラムが作業環境4に対して適切でない場合、ユーザに対して通知してもよいし、適切な制御プログラムを抽出して提示してもよい。このようにすることで、ユーザが制御プログラムの選択を間違う可能性が低減され得る。
(ロボット制御システム100の構成例)
図1及び図2に示されるように、一実施形態に係るロボット制御システム100は、ロボット1と、ロボットコントローラ2と、情報取得装置3と、端末装置9と、情報処理装置10とを備える。ロボット制御システム100の少なくとも1つの構成部は、ネットワーク80を介して通信可能に接続されてもよいし、ネットワーク80を介さずに通信可能に接続されてもよい。ロボット制御システム100の少なくとも1つの構成部は、有線又は無線で通信可能に接続されてもよい。ロボット制御システム100の少なくとも1つの構成部は、専用回線を介して通信可能に接続されてもよい。ロボット制御システム100の少なくとも1つの構成部は、これらの例に限られず他の種々の形態で互いに通信可能に接続されてもよい。以下、ロボット制御システム100の各構成が具体的に説明される。
<情報処理装置10>
情報処理装置10は、制御部11と、記憶部12とを備える。情報処理装置10は、ネットワーク80を介して、又は、ネットワーク80を介さずに直接、他の構成部と通信可能に接続される。
制御部11は、情報処理装置10の種々の機能を実現するために、少なくとも1つのプロセッサを含んで構成されてよい。プロセッサは、情報処理装置10の種々の機能を実現するプログラムを実行しうる。プロセッサは、単一の集積回路として実現されてよい。集積回路は、IC(Integrated Circuit)とも称される。プロセッサは、複数の通信可能に接続された集積回路及びディスクリート回路として実現されてよい。プロセッサは、CPU(Central Processing Unit)を含んで構成されてよい。プロセッサは、DSP(Digital Signal Processor)又はGPU(Graphics Processing Unit)を含んで構成されてもよい。プロセッサは、他の種々の既知の技術に基づいて実現されてよい。
情報処理装置10は、記憶部12を更に備える。記憶部12は、磁気ディスク等の電磁記憶媒体を含んで構成されてよいし、半導体メモリ又は磁気メモリ等のメモリを含んで構成されてもよい。記憶部12は、HDD(Hard Disk Drive)として構成されてもよいしSSD(Solid State Drive)として構成されてもよい。記憶部12は、各種情報及び制御部11で実行されるプログラム等を格納する。記憶部12は、制御部11のワークメモリとして機能してよい。記憶部12の少なくとも一部は、制御部11に含まれてもよい。記憶部12の少なくとも一部は、情報処理装置10と別体の記憶装置として構成されてもよい。
情報処理装置10は、有線又は無線で通信可能に構成される通信デバイスを含んで構成されてよい。通信デバイスは、種々の通信規格に基づく通信方式で通信可能に構成されてよい。
情報処理装置10は、1又は複数のサーバを含んで構成されてよい。情報処理装置10は、複数のサーバに並列処理を実行させるように構成されてよい。情報処理装置10は、物理的な筐体を含んで構成される必要はなく、ヴァーチャルマシン又はコンテナオーケストレイションシステム等の仮想化技術に基づいて構成されてもよい。情報処理装置10は、クラウドサービスを用いて構成されてもよい。情報処理装置10がクラウドサービスを用いて構成される場合、マネージドサービスを組み合わせることで構成され得る。つまり、情報処理装置10の機能は、クラウドサービスとして実現され得る。
情報処理装置10は、少なくとも1つのサーバ群と、少なくとも1つのデータベース群とを備えてよい。サーバ群は、制御部11として機能する。データベース群は、記憶部12として機能する。サーバ群の数は、1つであってもよいし2つ以上であってもよい。サーバ群の数が1つである場合、1つのサーバ群で実現される機能が各サーバ群で実現される機能を包含する。各サーバ群は、互いに有線又は無線で通信可能に接続される。データベース群の数は、1つであってもよいし2つ以上であってもよい。データベース群の数は、情報処理装置10で管理するデータの容量と情報処理装置10に求められる可用性要件とに基づいて適宜増減されてよい。データベース群は、各サーバ群と有線又は無線で通信可能に接続される。情報処理装置10は、外部のデータベースに接続されてもよい。情報処理装置10と外部のデータベースとを備える情報処理システムが構成されてもよい。
情報処理装置10は、図1及び図2において1つの構成として記載されているが、必要に応じて複数の構成を1つのシステムとみなして運用され得る。つまり、情報処理装置10は、容量可変なプラットフォームとして構成される。情報処理装置10として複数の構成が用いられることによって、1つの構成が天災等の不測の事態の発生時に運用できなくなった場合も、その他の構成を用いてシステムの運用が継続される。この場合、複数の構成それぞれは、有線又は無線を問わない回線によって接続され、相互に通信可能に構成されている。この複数の構成は、クラウド環境とオンプレミス環境とに跨って構築されてもよい。
また、情報処理装置10は、有線又は無線を問わない回線によって、ロボット制御システム100の少なくとも1つの構成と通信可能に接続される。情報処理装置10と、ロボット制御システム100の少なくとも1つの構成とは、相互に標準的なプロトコルを用いたインタフェースを具備しており、双方向のコミュニケーションをとることができる。
<端末装置9>
端末装置9は、ロボット制御システム100のロボットコントローラ2および情報処理装置10の少なくとも1つの構成と通信可能に接続される。なお、端末装置9は、ロボット制御システム100の他の構成と通信可能に接続されてもよい。また、端末装置9と、ロボット制御システム100の少なくとも1つの構成とは、ネットワーク80を介して、又は、ネットワーク80を介さずに直接、通信可能に接続されてもよい。
端末装置9は、少なくとも1つのプロセッサを含んで構成されてよい。端末装置9のプロセッサは、情報処理装置10の制御部11のプロセッサと同一又は類似に構成されてよい。端末装置9は、記憶デバイスを含んで構成されてよい。端末装置9の記憶デバイスは、情報処理装置10の記憶部12と同一又は類似に構成されてよい。端末装置9は、通信デバイスを含んで構成されてよい。端末装置9の通信デバイスは、情報処理装置10の通信デバイスと同一又は類似に構成されてよい。
端末装置9は、入力デバイスを備えてよい。入力デバイスは、例えば、タッチパネル若しくはタッチセンサ、又はマウス等のポインティングデバイスを含んで構成されてよい。入力デバイスは、物理キーを含んで構成されてもよい。入力デバイスは、マイク等の音声入力デバイスを含んで構成されてもよい。入力デバイスは、これらの例に限られず、他の種々のデバイスを含んで構成されてよい。
端末装置9は、出力デバイスを備えてよい。出力デバイスは、表示デバイスを含んで構成されてよい。表示デバイスは、例えば、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(Electro-Luminescence)ディスプレイ若しくは無機ELディスプレイ、又は、プラズマディスプレイ(PDP:Plasma Display Panel)等を含んで構成されてよい。表示デバイスは、これらのディスプレイに限られず、他の種々の方式のディスプレイを含んで構成されてよい。表示デバイスは、LED(Light Emitting Diode)等の発光デバイスを含んで構成されてよい。表示デバイスは、他の種々のデバイスを含んで構成されてよい。出力デバイスは、音声等の聴覚情報を出力するスピーカ等の音声出力デバイスを含んで構成されてもよい。出力デバイスは、これらの例に限られず、他の種々のデバイスを含んで構成されてよい。
ロボット制御システム100が備える端末装置9の数は、1台に限られず、2台以上であってよい。ロボット制御システム100が複数の端末装置9を備える場合、各端末装置9がユーザからの入力を受け付けてよい。端末装置9は、タブレット端末として構成されてよい。端末装置9は、フィーチャフォン又はスマートフォン等の携帯電話端末として構成されてよい。端末装置9は、デスクトップPC(Personal Computer)又はノートPC等のPC端末として構成されてよい。端末装置9は、これらの例に限られず、GUI(Graphical User Interface)及び通信機能を提供できる種々のデバイスとして構成されてよい。
端末装置9は、制御プログラムを情報処理装置10にあらかじめ格納する作業をユーザが実行するために使用されてよい。端末装置9は、ロボット1の状態を監視するために使用されてもよい。端末装置9は、これらの例に限られず、他の種々の機能を提供できる。端末装置9は、ロボットコントローラ2に併設されていてもよい。端末装置9がロボットコントローラ2に併設される場合、ロボットコントローラ2自体が入力デバイス又は出力デバイスを有してもよい。ロボットコントローラ2が端末装置9の中に含まれてもよい。
<ロボットコントローラ2>
ロボットコントローラ2は、情報処理装置10から、制御プログラムをダウンロードする。ロボットコントローラ2は、ダウンロードした制御プログラムを実行することによって、ロボット1の動作を制御する情報をロボット1に出力し、制御プログラムで特定される作業をロボット1に実行させる。ロボットコントローラ2は、ロボットコントローラ2自身が保持している制御プログラムを実行してもよい。ロボットコントローラ2は、図1に例示されるように、ワーク8を第1トレイ6から第2トレイ7に移動させる作業をロボット1に実行させてよい。ロボットコントローラ2は、これに限られず種々の作業をロボット1に実行させてよい。ロボットコントローラ2は、クラウドコンピューティング環境に接続されてもよいし接続されなくてもよい。ロボットコントローラ2がクラウドコンピューティング環境に接続されない場合、ロボットコントローラ2の動作は、オンプレミス環境で完結する。ロボットコントローラ2の動作がオンプレミス環境で完結する場合、情報処理装置10の動作は、ロボットコントローラ2によって実行される。
ロボットコントローラ2は、制御プログラムを情報処理装置10からダウンロードする通信デバイスを備えてよい。ロボットコントローラ2の通信デバイスは、情報処理装置10の通信デバイスと同一又は類似に構成されてよい。ロボットコントローラ2は、制御プログラムを実行することによってロボット1の動作を制御する情報を生成するプロセッサを備えてよい。ロボットコントローラ2のプロセッサは、情報処理装置10の制御部11のプロセッサと同一又は類似に構成されてよい。
図1に例示される構成において、1台のロボットコントローラ2が1台のロボット1に接続されている。1台のロボットコントローラ2が2台以上のロボット1に接続されてもよい。1台のロボットコントローラ2は、1台のロボット1だけを制御してもよいし、2台以上のロボット1を制御してもよい。ロボットコントローラ2及びロボット1の数は、2台に限られず、1台であってもよいし、3台以上であってもよい。また、ロボットコントローラ2は、情報処理装置10と統合され、情報処理装置10の一機能としてロボットコントローラ2の機能が実現されてもよい。
<ロボット1>
ロボット1は、アームを備えるロボットアームとして構成されてよい。アームは、例えば、6軸又は7軸の垂直多関節ロボットとして構成されてよい。アームは、3軸又は4軸の水平多関節ロボット又はスカラロボットとして構成されてもよい。アームは、2軸又は3軸の直交ロボットとして構成されてもよい。アームは、パラレルリンクロボット等として構成されてもよい。アームを構成する軸の数は、例示したものに限られない。
ロボット1は、アームに取り付けられるエンドエフェクタを備えてよい。エンドエフェクタは、例えば、作業対象物を把持できるように構成される把持ハンドを含んでよい。把持ハンドは、複数の指を有してよい。把持ハンドの指の数は、2つ以上であってよい。把持ハンドの指は、1つ以上の関節を有してよい。エンドエフェクタは、作業対象物を吸着できるように構成される吸着ハンドを含んでもよい。エンドエフェクタは、作業対象物を掬うことができるように構成される掬いハンドを含んでもよい。エンドエフェクタは、ドリル等の工具を含み、作業対象物に穴を開ける作業等の種々の加工を実施できるように構成されてもよい。エンドエフェクタは、これらの例に限られず、他の種々の動作ができるように構成されてよい。
ロボット1は、アームを動作させることによって、エンドエフェクタの位置を制御できる。エンドエフェクタは、作業対象物に対して作用する方向の基準となる軸を有してもよい。エンドエフェクタが軸を有する場合、ロボット1は、アームを動作させることによって、エンドエフェクタの軸の方向を制御できる。ロボット1は、エンドエフェクタが作業対象物に作用する動作の開始及び終了を制御する。ロボット1は、エンドエフェクタの位置、又は、エンドエフェクタの軸の方向を制御しつつ、エンドエフェクタの動作を制御することによって、作業対象物を動かしたり加工したりすることができる。
ロボット1は、無人搬送車(AGV:Automated Guided Vehicle)として構成されてもよい。ロボット1は、ドローンとして構成されてもよい。ロボット1は、ロボットアーム又はAGVに限られず、乗り物、電子機器又は制御機械等の他の種々の形態で構成されてもよい。
ロボット1は、ロボット1の少なくとも1つの構成部の状態を検出するセンサを更に備えてよい。センサは、ロボット1の少なくとも1つの構成部の現実の位置若しくは姿勢、又は、ロボット1の少なくとも1つの構成部の速度若しくは加速度に関する情報を検出してよい。センサは、ロボット1の少なくとも1つの構成部に作用する力を検出してもよい。センサは、ロボット1の少なくとも1つの構成部を駆動するモータに流れる電流又はモータのトルクを検出してもよい。センサは、ロボット1の実際の動作の結果として得られる情報を検出できる。ロボットコントローラ2は、センサの検出結果を取得することによって、ロボット1の実際の動作の結果を把握することができる。
ロボット1は、製品に対して所定の作業を実行し、製品の種類に応じた条件を設定して異なる種類の製品を加工する装置と異なり、作業に合わせた制御プログラムを生成可能であり、制御プログラムを生成することによって、種々の作業を実行するように動作することができる。
<情報取得装置3>
情報取得装置3は、ロボット1の作業環境4の少なくとも一部の情報を取得する。情報取得装置3は、作業環境4の少なくとも一部を撮影するカメラを含んで構成されてよい。情報取得装置3は、作業環境4の少なくとも一部に存在する物体の位置又は形状若しくは大きさを測定するセンサを含んで構成されてよい。情報取得装置3は、3Dセンサ又は距離センサ等を含んで構成されてよい。情報取得装置3は、作業環境4の少なくとも一部の温度又は湿度などを測定するセンサを含んで構成されてよい。情報取得装置3は、作業環境4の少なくとも一部がクリーンルームである場合、クリーンルーム内のパーティクル密度を測定するセンサを含んで構成されてよい。作業環境4の少なくとも一部の情報は、クリーンルームのクラス分類情報を含んでもよい。情報取得装置3は、作業環境4の少なくとも一部の騒音を測定するセンサを含んで構成されてよい。また、情報取得装置3は、周辺機器の稼働を示す、電流などを測定する電流センサ等のセンサを含んで構成されてよい。情報取得装置3は、ロボット1の作業環境4の少なくとも一部の情報を取得できる位置に固定されてよい。情報取得装置3は、ロボットアーム又はエンドエフェクタに取り付けられてもよい。情報取得装置3の数は、1台に限られず2台以上であってよい。複数の情報取得装置3は、互いに通信可能に接続されてよい。複数の情報取得装置3のうち少なくとも1台の情報取得装置3は、ロボットコントローラ2又は情報処理装置10に通信可能に接続されてよい。情報取得装置3は、物理的に離れた複数の情報取得部を備えてよい。複数の情報取得部は、互いに通信可能に接続されてよい。
情報取得装置3が作業環境4の少なくとも一部として取得する情報は、図1に例示されるように作業台5及び作業台5に配置された物体が位置する範囲などのロボット1の作業範囲内の情報を含んでいてもよい。情報取得装置3が作業環境4の少なくとも1部の上方として取得する情報は、作業対象物自体又はロボット1自体と異なる情報が含まれていてもよい。また、情報取得装置3が作業環境4の少なくとも一部の情報として取得する情報は、これらの情報に限られず、ロボット1の作業範囲外の情報を含んでいてもよい。具体的には、情報取得装置3が作業環境4の少なくとも一部の情報として取得する情報は、周辺機器が位置する範囲の情報を含んでよい。周辺機器は、ワーク8を配置するパーツフィーダ、又は、第1トレイ6若しくは第2トレイ7等を配置するトレイチェンジャを含んでよい。周辺機器は、ワーク8の表と裏とを反転させるワーク反転装置を含んでよい。周辺機器は、ロボット1のエンドエフェクタを交換するツールチェンジャを含んでよい。周辺機器は、ワーク8を加工する研磨機等の製造装置を含んでよい。周辺機器は、これらに限られず種々の機器を含んでよい。情報取得装置3が作業環境4の少なくとも一部の情報として取得する情報は、ワーク8が位置していない範囲の情報を含んでもよい。情報取得装置3が作業環境4の少なくとも一部の情報として取得する情報は、ロボット1のエンドエフェクタの属性情報又はアームの属性情報を含んでよい。エンドエフェクタの属性情報は、エンドエフェクタがハンドであるか吸盤であるか等を特定する情報を含んでよい。アームの属性情報は、アームの関節の数若しくは可動範囲、又は、アームの長さを特定する情報を含んでよい。
情報取得装置3が情報を取得する範囲は、ロボット1の動作範囲であってもよい。また、情報取得装置3が情報を取得する範囲は、ロボット1の動作範囲に限られず、ロボット1の動作範囲外の範囲、又は、動作範囲の周辺の範囲を含んでもよい。情報取得装置3は、ロボット1の動作範囲外の範囲、又は、動作範囲の周辺の範囲の情報を作業環境4の少なくとも一部の情報として取得してよい。動作範囲の周辺の範囲は、動作範囲から所定距離以内の範囲であってよい。所定距離は、例えば同じ工場の建屋内、同じ部屋内、又は同じ製造ライン内等の2地点間の距離として設定されてよい。周辺機器は、ロボット1の動作範囲内に向けてワーク8等を流すベルトコンベアを含み得る。ロボット制御システム100は、ロボット1の動作範囲外に位置するベルトコンベア上のワーク8の状態に基づいて制御プログラムを選択し得る。
(ロボット制御システム100の動作例)
ロボット制御システム100は、制御プログラム(処理パターン)をプログラム番号、プログラム名又は作業名に対応づけて情報処理装置10に格納してよい。ロボット制御システム100は、プログラム番号等に、その制御プログラムが実行される作業環境4の少なくとも一部の情報を対応づける。つまり、制御プログラムは、その制御プログラムが実行される作業環境4の少なくとも一部の情報に対応づけられる。ユーザが準備した作業環境4の少なくとも一部の情報は、準備環境情報又は第1環境情報とも称される。制御プログラムに関連づけられている作業環境4の少なくとも一部の情報は、制御プログラムが過去に記録されたときの作業環境4の少なくとも一部の情報であり、過去記録情報又は第2環境情報とも称される。過去記録情報又は第2環境情報は、ロボットコントローラ2が制御プログラムを実行したことによって、ロボット1によって作業が実行された際の作業環境4の少なくとも一部の情報に対応する。過去記録情報又は第2環境情報は、ユーザが登録した作業環境4の少なくとも一部の情報を含んでもよい。ロボット制御システム100において、端末装置9は、ユーザから作業環境4の少なくとも一部の情報を登録する入力を受け付けるように構成されてよい。つまり、ロボット制御システム100は、ユーザによって模擬的に登録された情報をロボット制御プログラム(処理パターン)の番号等に関連づけてよい。第1ロボットの過去記録情報又は第2環境情報を登録できるユーザは、例えば、過去に第1ロボットに作業を実行させた実績を有するユーザであってよいし、他のロボットのユーザであってもよい。第1ロボットの過去記録情報又は第2環境情報を登録できるユーザは、工場等の管理者であってもよいし、作業者等であってもよい。
過去記録情報は、準備環境情報と比較可能な情報を含んでいればよい。すなわち、過去記録情報は、準備環境情報に対応した情報を含んでいればよく、例えば準備環境情報が画像を有していれば過去記録情報も画像を有していてもよいし、準備環境情報がセンサ出力等の数値データを有していれば過去記録情報も数値データを有していてもよい。なお、言い換えれば、準備環境情報は、過去記録記録情報と比較可能な情報を含んでいてもよい。
過去記録情報は、例えば、その制御プログラムを実行するときに撮影した作業環境4の少なくとも一部の画像を含んでよい。過去記録情報は、作業環境4の少なくとも一部の画像を解析することによって得られた、作業環境4の少なくとも一部に存在する物体の属性情報を含んでよい。物体の属性情報は、物体の輪郭等の形状、物体の色若しくはテクスチャ、又は、物体の大きさ等の物体の外観の情報を含んでよい。物体の属性情報は、作業環境4の少なくとも一部の画像に写った二次元の情報を含んでよいし、作業環境4の少なくとも一部のデプス情報に基づく三次元の情報を含んでもよい。属性情報は、物体の外観に関する情報に限られず、物体の材質又は密度等の情報を含んでもよい。過去記録情報は、作業環境4の少なくとも一部に存在する物体の座標等の位置情報を含んでよい。位置情報は、作業環境4に設定されている基準位置からの相対位置を表してよい。位置情報は、情報取得装置3に設定されている絶対位置を表してもよい。位置情報は、ロボット1の周辺にある複数の物体の位置関係を表してもよい。位置情報は、作業環境4の少なくとも一部に存在する複数の物体の位置関係を表してもよい。位置情報は、ワーク8と、ワーク8の周辺にある物体との位置関係を表してもよい。過去記録情報は、作業環境4の少なくとも一部を撮影したカメラの種類、又は、カメラの位置若しくは向き等の撮影条件を含んでもよい。
以上述べてきたように、ロボット制御システム100は、プログラム番号又はプログラム名に対応づけられた制御プログラムを、その制御プログラムの過去記録情報に関連づけて情報処理装置10に格納する。具体的に、ロボット制御システム100は、以下の情報を情報処理装置10に格納してよい。
(1)プログラム番号
(2)制御プログラム(処理パターン)
(3)作業環境4の少なくとも一部を撮影した画像
(4)作業環境4の少なくとも一部を撮影した画像から認識された物体の属性情報及び位置情報
図3に、作業環境4の少なくとも一部を撮影した画像の一例が示される。作業環境4に作業台5が位置する。作業台5の上に第1トレイ6と第2トレイ7とが位置する。また、第1トレイ6にワーク8が収容されている。
図4に、作業環境4の少なくとも一部を撮影した画像から認識された物体の属性情報及び位置情報の一例が示される。画像から認識された物体の総数は、11個である。物体は4種類存在する。物体を種類別に特定するために、各種類に1番から4番までの物体IDが付されている。作業台5が1番に対応づけられている。第2トレイ7が2番に対応づけられている。第1トレイ6が3番に対応づけられている。ワーク8が4番に対応づけられている。作業台5、第1トレイ6及び第2トレイ7の数はそれぞれ1個である。ワーク8の数は8個である。
各物体の色情報は、物体の各部の色情報を平均した平均色情報として表される。色情報は、画像のRGB(Red Green Blue)の各成分の階調に対応する数値として表される。作業台5(物体ID=1)の平均色情報は、(R1,G1,B1)で表される。第2トレイ7(物体ID=2)の平均色情報は、(R2,G2,B2)で表される。第1トレイ6(物体ID=3)の平均色情報は、(R3,G3,B3)で表される。ワーク8(物体ID=4)の平均色情報は、(R4,G4,B4)で表される。
各物体の輪郭及びテクスチャは、その画像によって表される。
本実施形態において、各物体の大きさは、各物体の幅(W)×奥行(D)×高さ(H)によって表されるとする。作業台5(物体ID=1)の大きさは、W1×D1×H1で表される。第2トレイ7(物体ID=2)の大きさは、W2×D2×H2で表される。第1トレイ6(物体ID=3)の大きさは、W3×D3×H3で表される。ワーク8(物体ID=4)の大きさは、W4×D4×H4で表される。
各物体の座標は、作業環境4に設定されている基準位置の座標に対する相対的な座標によって表されてよいし、情報取得装置3に設定されている絶対的な座標(例えば撮影画像の画素位置)によって表されてもよい。本実施形態において、座標は、XYZ座標で表されるとする。作業台5(物体ID=1)の座標は、(X1,Y1,Z1)で表される。第2トレイ7(物体ID=2)の座標は、(X2,Y2,Z2)で表される。第1トレイ6(物体ID=3)の座標は、(X3,Y3,Z3)で表される。ワーク8(物体ID=4)の座標は、(X4,Y4,Z4)で表される。
<制御プログラムの実行時における過去記録情報との関連づけ>
ロボット制御システム100は、あらかじめ制御プログラムを情報処理装置10に格納する。制御プログラムの実行時において制御プログラムが過去記録情報とまだ関連づけられていない場合、ロボット制御システム100は、制御プログラムの実行時に作業環境4の少なくとも一部の情報を取得してよい。ロボット制御システム100は、取得した作業環境4の少なくとも一部の情報を過去記録情報として制御プログラムに関連づけてよい。ロボット制御システム100は、例えば、制御プログラムを初めて実行する時にその作業環境4の少なくとも一部の情報を過去記録情報として取得し、制御プログラムに関連づけてよい。ロボット制御システム100は、制御プログラムに対応する作業に過去記録情報を関連づけるともいえる。過去記録情報は、ユーザが登録した作業環境4の少なくとも一部の情報を含んでもよい。ロボット制御システム100において、端末装置9は、ユーザから作業環境4の少なくとも一部の情報を登録する入力を受け付けるように構成されてよい。つまり、ロボット制御システム100は、ユーザによって模擬的に登録された情報をロボット制御プログラム(処理パターン)の番号等に関連づけてよい。第1ロボットの過去記録情報を登録できるユーザは、例えば、過去に第1ロボットに作業を実行させた実績を有するユーザであってよいし、他のロボットのユーザであってもよい。第1ロボットの過去記録情報を登録できるユーザは、工場等の管理者であってもよいし、作業者等であってもよい。
制御プログラムは、具体的に以下の手順で、過去記録情報に関連づけられて情報処理装置10に格納され得る。
ロボット制御システム100において、ロボット1に実行させるために必要なワーク8等が図3に示されるように準備される。例えば、ユーザは、作業環境4に、第1トレイ6と第2トレイ7とを配置する。ユーザは、第1トレイ6にワーク8を収容する。つまり、ワーク8並びに第1トレイ6及び第2トレイ7は、ユーザによって配置されてよい。他の例として、ワーク8並びに第1トレイ6及び第2トレイ7は、周辺機器によって配置されてもよい。
ユーザは、作業環境4においてワーク8等を準備した後、端末装置9によってロボットコントローラ2に実行させる制御プログラムを選択する。端末装置9は、選択された制御プログラムをロボットコントローラ2に出力する。ロボットコントローラ2は、取得した制御プログラムを実行することによってロボット1を制御し、ロボット1に作業を実行させる。
ロボット1又はロボットコントローラ2は、ロボット1が作業を実行する際に、情報取得装置3によって作業環境4の少なくとも一部の情報を取得する。情報取得装置3は、例えば作業環境4の少なくとも一部を撮影し、作業環境4の少なくとも一部の撮影画像を作業環境4の少なくとも一部の情報として取得してよい。情報取得装置3がロボット1のアーム又はエンドエフェクタに取り付けられている場合、ロボット1は、情報取得装置3をあらかじめ決められた撮影位置に移動させ、作業環境4の少なくとも一部を情報取得装置3に撮影させてよい。情報取得装置3は、作業環境4の少なくとも一部を撮影した画像だけでなく、作業環境4の少なくとも一部のデプス情報等の種々の情報を作業環境4の少なくとも一部の情報として取得してよい。
情報取得装置3は、取得した作業環境4の少なくとも一部の情報を情報処理装置10に出力する。情報処理装置10の制御部11は、作業環境4の少なくとも一部の情報を解析することによって、作業環境4の少なくとも一部に存在するワーク8等の物体を認識する。制御部11は、例えば、作業環境4の少なくとも一部の撮影画像の画像解析によって、ワーク8、第1トレイ6及び第2トレイ7それぞれを認識してよい。制御部11は、例えば、作業環境4の少なくとも一部のデプス情報を解析することによって、ワーク8、第1トレイ6及び第2トレイ7それぞれを認識してよい。
制御部11は、作業環境4の少なくとも一部の情報から認識された各物体の属性情報及び位置情報を取得する。制御部11は、各物体の属性情報及び位置情報を過去記録情報として、記憶部12に格納されている制御プログラムに関連づける。以上述べてきたように、制御プログラムは、過去記録情報に関連づけられて情報処理装置10に格納される。
<過去記録情報に関連づけられた制御プログラムの実行>
ロボット制御システム100は、制御プログラムを過去記録情報に関連づけることによって、準備された作業環境4においてロボット1に作業を実行させるために用いる制御プログラムの適否を、以下の手順で容易に判定し得る。ロボット制御システム100は、ユーザがロボット1に作業を実行させるために用いる制御プログラムの候補を選択した際に、候補となった制御プログラムの適否を推定するともいえる。
ロボット制御システム100において、ロボット1に実行させるために必要なワーク8等が図3に示されるように準備される。例えば、ユーザは、作業環境4に、第1トレイ6と第2トレイ7とを配置する。ユーザは、第1トレイ6にワーク8を収容する。つまり、ワーク8並びに第1トレイ6及び第2トレイ7は、ユーザによって配置されてよい。他の例として、ワーク8並びに第1トレイ6及び第2トレイ7は、周辺機器によって配置されてもよい。
ユーザは、端末装置9によって、ロボットコントローラ2又はロボット1を起動する。ユーザは、作業環境4においてワーク8等を準備した後、端末装置9によってロボットコントローラ2に実行させる制御プログラムを選択する。一方、ロボット制御システム100は、情報取得装置3によって作業環境4の少なくとも一部の情報を取得する。情報取得装置3がロボット1のアーム又はエンドエフェクタに取り付けられている場合、ロボットコントローラ2は、作業環境4の少なくとも一部の情報を取得するために情報取得装置3を所定位置に移動させたり所定方向を向かせたりするようにロボット1の動作を制御する。
情報取得装置3は、取得した作業環境4の少なくとも一部の情報を情報処理装置10に出力する。情報処理装置10の制御部11は、作業環境4の少なくとも一部の情報を解析することによって、作業環境4の少なくとも一部に存在するワーク8等の物体を認識する。制御部11は、例えば、作業環境4の少なくとも一部の撮影画像の画像解析によって、ワーク8、第1トレイ6及び第2トレイ7それぞれを認識してよい。制御部11は、例えば、作業環境4の少なくとも一部のデプス情報を解析することによって、ワーク8、第1トレイ6及び第2トレイ7それぞれを認識してよい。
制御部11は、作業環境4の少なくとも一部の情報から認識された各物体の属性情報及び位置情報を取得する。制御部11は、各物体の属性情報及び位置情報を、選択された制御プログラムに関連づけられている過去記録情報と比較する。制御部11は、選択された制御プログラムに関連づけられている過去記録情報が、作業環境4の少なくとも一部の情報に適合する場合、選択された制御プログラムをロボットコントローラ2に出力する。ロボットコントローラ2は、選択された制御プログラムを実行し、ロボット1に作業を実行させる。
<<類似度に基づく制御プログラムの抽出>>
制御部11は、選択された制御プログラムに関連づけられている過去記録情報が作業環境4の少なくとも一部の情報に適合するか判定するために、作業環境4の少なくとも一部の情報と過去記録情報との類似度を算出してよい。類似度は、2つの情報が完全に一致する場合に100%として算出され、2つの情報が完全に不一致の場合に0%として算出されるとする。制御部11は、類似度が所定値以上である場合に、選択された制御プログラムをロボットコントローラ2に実行させてよい。
制御部11は、類似度として、作業環境4の少なくとも一部に存在する物体の形状又は色等の属性情報の類似度を算出してよい。具体的に、制御部11は、作業環境4の少なくとも一部の情報から認識された各物体の属性情報を、情報処理装置10に格納されている制御プログラムに関連づけられている過去記録情報に含まれる属性情報と比較する。制御部11は、テンプレートマッチング、又は、機械学習若しくはディープラーニングによって生成した学習済みモデルを用いて、類似度を数値として算出してよい。制御部11は、認識した物体の種類毎に類似度を算出する。制御部11は、認識した物体の全種類について類似度を算出する。図3に例示される作業環境4の少なくとも一部において認識される物体は、4種類に分けられる。制御部11は、4種類それぞれについて類似度を算出する。制御部11は、各種類について算出した4つの類似度の平均値及び標準偏差を計算する。制御部11は、平均値があらかじめ設定された平均値判定閾値以上であり、かつ、標準偏差があらかじめ設定された標準偏差判定閾値以下である場合、過去記録情報が作業環境4の少なくとも一部の情報に適合すると判定する。なお、学習済みモデルを使用する場合、学習済みモデルは、複数の過去記録情報に関するデータを学習用データセットとして機械学習することによって生成することができる。
制御部11は、類似度として、作業環境4の少なくとも一部に存在する物体の位置の類似度を算出してよい。具体的に、制御部11は、作業環境4の少なくとも一部の情報から認識された各物体の位置情報に基づいて、各物体間の距離を算出する。各物体の位置情報は、各物体の重心の座標を含むとする。各物体の位置情報は、各物体の端の座標(例えば、各物体が存在する範囲のX座標、Y座標及びZ座標の最小値又は最大値)を含んでもよい。制御部11は、各物体の重心の座標に基づいて各物体間の距離を算出する。制御部11は、図3に例示される作業環境4において、作業台5(物体ID=1)、第2トレイ7(物体ID=2)、第1トレイ6(物体ID=3)、及びワーク8(物体ID=4)それぞれの間の距離を算出する。図3の例において、ワーク8(物体ID=4)として同一の種類に分類される物体の数は8個である。制御部11は、同一の種類に分類した複数個の物体について、1つの物体とみなして重心の座標を計算し、他の物体との距離を算出する。作業環境4に4種類の物体が存在する場合、各物体間の距離を算出する組み合わせは6通りである。したがって、各物体間の距離は6通り算出される。
制御部11は、情報処理装置10に格納されている制御プログラムに関連づけられている過去記録情報に含まれる位置情報に基づいて、過去記録情報に含まれる各物体間の距離を算出する。制御部11は、4種類の物体を含む過去記録情報について各物体間の距離を算出してよい。制御部11は、過去記録情報が作業環境4の少なくとも一部に存在する物体に対応する物体を含む場合に各物体間の距離を算出してもよい。つまり、制御部11は、過去記録情報が作業環境4の少なくとも一部に存在する物体に対応する物体を含まない場合、過去記録情報における各物体間の距離を算出せずに、過去記録情報が作業環境4の少なくとも一部の情報に適合しないと判定してもよい。
制御部11は、作業環境4の少なくとも一部の情報から認識された各物体間の距離と、制御プログラムに関連づけられている過去記録情報における各物体間の距離とを比較する。制御部11は、作業環境4の少なくとも一部の情報から認識された物体から2つの物体を選択する。また、制御部11は、過去記録情報に含まれる物体のうち、作業環境4の少なくとも一部の情報から認識された物体から選択した2つの物体に対応する2つの物体を選択する。制御部11は、作業環境4の少なくとも一部の情報から認識された物体から選択した2つの物体間の距離と、過去記録用法に含まれる物体から選択した2つの物体間の距離との差の絶対値を算出する。制御部11は、図3の例において6通りの組み合わせで算出された距離それぞれについて、作業環境4の少なくとも一部の情報に含まれる2つの物体間の距離と、過去記録情報に含まれる2つの物体間の距離との差の絶対値を算出する。制御部11は、全ての組み合わせで算出された距離の差の絶対値の平均値及び標準偏差を位置の類似度として算出する。制御部11は、平均値があらかじめ設定された平均値判定閾値以上であり、かつ、標準偏差があらかじめ設定された標準偏差判定閾値以下である場合、過去記録情報が作業環境4の少なくとも一部の情報に適合すると判定する。
過去記録情報が作業環境4の少なくとも一部の情報に適合しない場合の類型が図5に例示される。図5の表の1行目の左列のセルに「正しい組み合わせ」として示される類型は、情報処理装置10の記憶部12に格納されている制御プログラムのデータ(格納データ)に関連づけられている過去記録情報が作業環境4の少なくとも一部の情報に適合する場合を示す。具体的に、プログラム番号が28番である制御プログラムは、1行目の右列のセルに示されるように、作業環境4に第1トレイ6、第2トレイ7及びワーク8が配置されている構成に関連づけされている。
図5の表の2行目の左列のセルに「ワークの間違い」として示される類型は、ユーザが選択した制御プログラムのデータ(選択データ)に関連づけられる過去記録情報に対して、作業環境4に配置されたワーク8が間違っている場合を示す。具体的に、第1トレイ6にワーク8が収容されるべきところ、2行目の右列のセルに示されるように第1トレイ6にワーク8Fが収容されている点で間違っている。
図5の表の3行目の左列のセルに「トレイのセット漏れ」として示される類型は、選択データに関連づけられる過去記録情報に対して、作業環境4に第2トレイ7が不足している場合を示す。具体的に、第2トレイ7がセットされるべきところ、3行目の右列のセルに二点鎖線で表されたセット漏れトレイ7Fとして示されるように第2トレイ7がセットされていない点で間違っている。
図5の表の4行目の左列のセルに「プログラムの選択の間違い」として示される類型は、作業環境4がユーザの意図どおりになっているものの、選択データが間違っている場合を示す。具体的に、選択データとして28番の制御プログラムが選択されるべきところ、4行目の中央列に示されるように、14番の制御プログラムが選択されている点で間違っている。
過去記録情報が作業環境4の少なくとも一部の情報に適合しない場合の類型は、これらに限られない。例えば作業環境4の少なくとも一部に余分な物体が配置されている類型が含まれてよい。また、ワーク8が配置されていない類型が含まれてもよい。
図5の表の2~4行目に例示された各類型又は他の種々の類型に当てはまる場合、制御部11は、過去記録情報が作業環境4の少なくとも一部の情報に適合しないと判定する。制御部11は、類似度を算出し、類似度に基づいて過去記録情報が作業環境4の少なくとも一部の情報に適合しないと判定してもよい。制御部11は、過去記録情報と作業環境4の少なくとも一部の情報との類似度として算出した属性情報の類似度又は位置の類似度がいずれも所定値未満である場合に、過去記録情報が作業環境4の少なくとも一部の情報に適合しないと判定してもよい。制御部11は、過去記録情報が作業環境4の少なくとも一部の情報に適合しないと判定した場合、ユーザから選択された制御プログラムをロボットコントローラ2に出力しない。
制御部11は、過去記録情報が作業環境4の少なくとも一部の情報に適合しない場合、他の制御プログラムの中に、過去記録情報が作業環境4の少なくとも一部の情報に適合する制御プログラムが存在するか検索する。制御部11は、過去記録情報が作業環境4の少なくとも一部の情報に適合する制御プログラムを発見した場合、発見した制御プログラムを選択候補として端末装置9に出力してユーザに提示してよい。この場合、ユーザが制御プログラムの選択を間違えた可能性がある。ユーザが制御プログラムの選択を間違えたことは、制御プログラムの選択不備とも称される。制御部11は、ユーザが制御プログラムの候補を選択した場合に、ユーザによる制御プログラムの選択不備を推定してよい。制御部11は、制御プログラムの候補の適否の推定結果に基づき、ユーザによる制御プログラムの選択不備を推定してよい。
制御部11は、ユーザに提示した制御プログラムの選択候補からユーザが選択する入力を端末装置9で受け付け、端末装置9からユーザが選択した制御プログラムを特定する情報を取得する。制御部11は、過去記録情報が作業環境4の少なくとも一部の情報に適合する制御プログラムの候補の発見精度を高めるように、ユーザの選択結果を教師データとして学習し、過去記録情報が作業環境4の少なくとも一部の情報に適合するか判定するモデルを変更してよい。モデルは、作業環境4の少なくとも一部を撮影した画像から物体を認識する精度が向上するように変更されてよい。また、ユーザの選択結果によって、類似度に基づいて判定するために用いられる閾値が調整されてもよい。
制御部11は、過去記録情報が作業環境4の少なくとも一部の情報に適合する制御プログラムを発見できない場合、ユーザが制御プログラムを正しく選択したと仮定して、作業環境4の少なくとも一部の情報の中で間違って準備されている項目を推定する。作業環境4の少なくとも一部の中に間違って準備されている項目が存在することは、環境不備とも称される。制御部11は、作業環境4の少なくとも一部の環境不備を推定してよい。制御部11は、制御プログラムの候補の適否の推定結果に基づき、作業環境4の少なくとも一部の環境不備を推定してよい。
制御部11は、環境不備の要因として、作業環境4の少なくとも一部に準備すべき物体の不足若しくは過剰、物体の配置の違い、又は、物体の属性情報の違いを検出してよい。例えば、制御部11は、ユーザが選択した制御プログラムが正しいと仮定して、ユーザが選択した制御プログラムの番号に対応づけられている過去記録情報と、ユーザが配置した物体を含む作業環境4の画像とを比較してよい。制御部11は、比較結果に基づいて、作業環境4の少なくとも一部に配置すべき物体の不足若しくは過剰、物体の配置の違い、又は、物体の属性情報の違いを検出してよい。制御部11は、違いを検出した項目を、間違って準備されている項目として推定してよい。
制御部11は、作業環境4の画像に写っている物体を、作業環境4の画像を解析することによって検出してよい。制御部11は、過去記録情報に含まれている物体と、作業環境4の画像から検出した、ユーザが作業環境4に配置した物体との類似度を算出してよい。制御部11は、過去記録情報に含まれている物体の属性情報と、作業環境4の画像から検出した物体の属性情報との類似度を算出してよい。制御部11は、テンプレートマッチング、又は、機械学習若しくはディープラーニングによって生成した学習済みモデルを用いて、類似度を数値として算出してよい。なお、学習済みモデルを使用する場合、学習済みモデルは、複数の過去記録情報の各物体の属性データなどを学習用データセットとして機械学習することによって生成することができる。
制御部11は、物体の輪郭又は大きさ等の類似度を算出してよい。制御部11は、例えば物体の輪郭及び大きさの類似度があらかじめ決められた閾値以上であるような、類似度が高いことを表す値である場合に、作業環境4に正しい物体が準備されていると判定してよい。制御部11は、物体の輪郭及び大きさの類似度が所定閾値以上である作業環境4に正しい物体が準備されていると判定してもよい。
制御部11は、過去記録情報に含まれている複数の物体を作業環境4から検出した場合、過去記録情報に含まれている各物体と、作業環境4の画像から検出した物体との間で、物体の輪郭又は大きさ等の類似度を算出してよい。制御部11は、作業環境4の画像から複数の物体を検出した場合、作業環境4の画像から検出した各物体と、過去記録情報に含まれている物体との間で、物体の輪郭又は及び大きさ等の類似度を算出してよい。制御部11は、過去記録情報に含まれている各物体と、作業環境4の画像から検出した各物体との少なくとも一部の組み合わせで、物体の輪郭又は大きさ等の類似度を算出してよい。制御部11は、過去記録情報に含まれている複数の物体の中に、作業環境4の画像から検出した物体との類似度が高い物体が含まれる場合、作業環境4に正しい物体が準備されていると判定してもよい。
制御部11は、環境不備の原因として、類似度を低下させている要因を推定してよい。制御部11は、例えば、作業環境4の少なくとも一部に配置されている各物体の位置の間違いによって類似度が低下しているか推定してよい。制御部11は、例えば、作業環境4の少なくとも一部に準備されるべき物体が準備されていないことによって類似度が低下しているか推定してよい。制御部11は、例えば、作業環境4の少なくとも一部に必要のない物体が配置されていることによって類似度が低下しているか推定してよい。制御部11は、上述したように、ユーザが選択した制御プログラムの番号に対応づけられている過去記録情報と、ユーザが配置した作業環境中に存在する物体の画像との比較結果に基づいて、必要な物体の不足又は不要な物体の存在を検出し、検出した項目を類似度の低下の原因として推定してよい。
制御部11は、類似度が高くなるように作業環境4の少なくとも一部をどのように変更すればよいか推定し、変更すべき点を端末装置9に出力してユーザに提示してよい。ユーザは、提示された情報に基づいて作業環境4の少なくとも一部を変更してもよいし、選択した制御プログラムをそのままロボットコントローラ2に実行させるように指示してもよい。制御部11は、ユーザの指示内容を教師データとして学習し、過去記録情報が作業環境4の少なくとも一部の情報に適合するか判定するモデルを変更してよい。また、ユーザの指示内容によって、類似度に基づいて判定するために用いられる閾値が調整されてもよい。
制御部11は、類似度に基づいて、不備の種別を推定してよい。具体的に、制御部11は、類似度が低くなる要因が、選択不備であるか環境不備であるか推定してよい。制御部11は、例えば、類似度が90%以上の場合に環境不備であると推定し、類似度が50%未満の場合に選択不備であると推定してよい。
制御部11は、作業環境4の画像から検出した物体のうち、作業環境4に準備する物体として正しい物体であると判定した物体について、配置されている位置が正しいか判定してよい。制御部11は、情報処理装置10に格納されているデータで特定される、作業環境4に物体を配置すべき位置と、作業環境4の画像に写っている物体の位置とに基づいて、作業環境4に物体が本来配置されるべき位置から実際に物体が配置された位置までの距離を算出してよい。制御部11は、過去記録情報に含まれている類似度が高い物体の位置と、作業環境4の画像に写っている物体の位置との距離を算出してもよい。制御部11は、算出した距離があらかじめ決められた閾値未満である場合に、物体が正しい位置に配置されていると判定してよい。制御部11は、算出した距離が所定閾値未満である場合に、物体が正しい位置に配置されていると判定してよい。制御部11は、算出した距離があらかじめ決められた閾値以上である場合に、ユーザが作業環境4に配置した物体の位置が間違っていると判定してよい。
制御部11は、ユーザが作業環境4に配置した物体の個数が正しいか判定してよい。制御部11は、情報処理装置10に格納されているデータにおいて各物体の個数が1個のものについて、ユーザが作業環境4に配置した物体の中で類似度が高く、データで特定される物体と同一の物体と判断されるものの個数を比較して、正しく準備されているか判定してよい。制御部11は、情報処理装置10に格納されているデータで特定される、作業環境4に配置されるべき第1の種類の物体の個数が1個である場合、ユーザが実際に作業環境4に配置した物体の中で、第1の種類の物体と同一の物体であると判定される物体が1つ存在すれば、作業環境4に配置されている第1の種類の物体の個数が正しいと判定してよい。制御部11は、ユーザが実際に作業環境4に配置した物体の中で、第1の種類の物体に対して類似度が高い物体の個数を算出してよい。制御部11は、算出した個数が作業環境4に配置されるべき第1の種類の物体の個数に一致する場合に、作業環境4に配置されている第1の種類の物体の個数が正しいと判定してよい。制御部11は、算出した個数が作業環境4に配置されるべき第1の種類の物体の個数より多い場合に、作業環境4に配置されている第1の種類の物体の個数が正しい、又は、作業環境4に第1の種類の物体が十分に配置されていると判定してよい。
制御部11は、ユーザが作業環境4に配置した物体が、いずれも、第1の種類の物体に対して類似度が低い物体である場合、各属性情報の類似度が所定の閾値未満である場合、又は、第1の種類の物体に類似しない場合、ユーザが作業環境4に第1の種類の物体を配置していない、又は、ユーザが作業環境4に間違った物体を配置したと判定してよい。
制御部11は、物体の種類にかかわらず、作業環境4に準備する物体として正しい物体であると判定した物体の個数を算出してよい。制御部11は、作業環境4に配置する物体として正しい物体であると判定した物体の個数が、情報処理装置10に格納されているデータで特定される、作業環境4に準備すべき物体の個数に一致している場合に、準備されている物体の個数が正しいと判定してよい。制御部11は、作業環境4に配置する物体として正しい物体であると判定した物体の個数が作業環境4に配置すべき物体の個数より多い場合に、配置されている物体の個数が正しい、又は、作業環境4に物体が十分に配置されていると判定してよい。
制御部11は、ユーザが作業環境4に配置した物体の位置又は個数が間違っていると判定した場合、作業環境4に配置されている物体に間違いがあることを端末装置9に通知してよい。制御部11は、作業環境4に配置されるべき物体の位置又は個数の正しい情報を端末装置9に通知し、ユーザに正しい配置に変更するよう促してよい。
仮にユーザが作業環境4に配置する物体の位置又は個数を意図的に異ならせている場合、端末装置9は、ユーザが作業環境4に配置した物体の位置及び個数が正しいことをユーザが確認した情報を取得し、情報処理装置10に対して、ユーザが作業環境4に配置した物体の位置及び個数が正しいことを通知してよい。情報処理装置10は、ユーザが作業環境4に配置した物体の位置及び個数を正しいデータとしてデータを更新してよい。
(情報処理方法の手順例)
ロボット制御システム100は、図6及び図7に例示されるフローチャートの手順を含む情報処理方法を実行してもよい。情報処理方法は、情報処理装置10の制御部11、ロボットコントローラ2又は端末装置9を構成するプロセッサに実行させる情報処理プログラムとして実現されてもよい。情報処理プログラムは、非一時的なコンピュータ読み取り可能な媒体に格納されてよい。
制御部11は、図6のフローチャートの手順を実行することによって、制御プログラムに過去記録情報を関連づけてよい。制御部11は、ユーザからの制御プログラムの選択を取得する(ステップS1)。具体的に、端末装置9がユーザから制御プログラムを選択する入力を受け付ける。制御部11は、端末装置9から制御プログラムの選択を取得する。
制御部11は、作業環境4の少なくとも一部を撮影した画像を取得する(ステップS2)。具体的に、情報取得装置3が作業環境4の少なくとも一部の情報として、作業環境4の少なくとも一部を撮影した画像、又は、作業環境4の少なくとも一部のデプス情報等を取得する。制御部11は、情報取得装置3から作業環境4の少なくとも一部の情報を取得する。
制御部11は、作業環境4の少なくとも一部の中の物体を認識する(ステップS3)。制御部11は、認識した物体の属性情報及び位置情報を取得する(ステップS4)。制御部11は、ユーザから選択された制御プログラムに、作業環境4の少なくとも一部で認識した物体の属性情報及び位置情報を含む過去記録情報を関連づけて記憶部12に格納する(ステップS5)。制御部11は、ステップS5の手順の実行後、図6のフローチャートの手順の実行を終了する。
制御部11は、図7のフローチャートの手順を実行することによって、ユーザが選択した制御プログラムの適否を判定してよい。
制御部11は、ユーザからの制御プログラムの選択を取得する(ステップS11)。具体的に、端末装置9がユーザから制御プログラムを選択する入力を受け付ける。制御部11は、端末装置9から制御プログラムの選択を取得する。
制御部11は、作業環境4の少なくとも一部を撮影した画像を取得する(ステップS12)。制御部11は、作業環境4の少なくとも一部の中の物体を認識する(ステップS13)。制御部11は、認識した物体の属性情報及び位置情報を取得する(ステップS14)。
制御部11は、制御プログラムに関連づけられた過去記録情報と認識した物体の属性情報及び位置情報との類似度を算出する(ステップS15)。制御部11は、算出した類似度が閾値以上であるか判定する(ステップS16)。制御部11は、算出した類似度が閾値以上である場合(ステップS16:YES)、ユーザによって選択された制御プログラムをロボットコントローラ2に実行させる(ステップS17)。制御部11は、ステップS17の手順の実行後、図7のフローチャートの手順の実行を終了する。
制御部11は、算出した類似度が閾値以上でない場合(ステップS16:NO)、つまり算出した類似度が閾値未満である場合、ユーザが実行させたい作業に類似する制御プログラムが存在するか判定する(ステップS18)。具体的に、制御部11は、記憶部12に格納されている制御プログラムのうち、ユーザが準備した作業環境4の少なくとも一部の情報に類似する過去記録情報に関連づけられている制御プログラムが存在するか判定する。制御部11は、ユーザが準備した作業環境4の少なくとも一部の情報との類似度が高い過去記録情報に関連づけられている制御プログラムが存在するか判定してよい。
制御部11は、類似する制御プログラムが存在する場合(ステップS18:YES)、類似する制御プログラムを抽出する(ステップS19)。制御部11は、抽出した制御プログラムを特定する情報を端末装置9に出力してユーザに提示する。制御部11は、ユーザからの制御プログラムの選択を取得する(ステップS20)。具体的に、端末装置9がユーザから制御プログラムを選択する入力を受け付ける。制御部11は、端末装置9から制御プログラムの選択を取得する。制御部11は、ステップS20の手順の実行後、ステップS17の手順に進み、ユーザに選択された制御プログラムをロボットコントローラ2に実行させる。
制御部11は、類似する制御プログラムが存在しない場合(ステップS18:NO)、作業環境4の少なくとも一部において既存の過去記録情報との類似度を低下させる要因を推定し端末装置9に出力して表示させる(ステップS21)。制御部11は、ステップS21の手順の実行後、図7のフローチャートの手順の実行を終了する。制御部11は、ステップS21の手順の実行後に、ユーザが作業環境4の少なくとも一部を変更したことを確認してステップS18の判定手順に戻ってもよい。
(まとめ)
以上述べてきたように、本実施形態に係るロボット制御システム100、情報処理装置10、及び情報処理方法によれば、複数の制御プログラムから、ロボット1を制御する制御プログラムの候補の適否が推定され得る。また、ユーザが選択した制御プログラムが作業環境4の少なくとも一部に適合しているか判定され得る。このようにすることで、ユーザが制御プログラムの選択を間違えにくくなる。また、作業環境4の少なくとも一部の準備、又は、制御プログラムの選択を間違えたままでロボット1の作業が開始されることが避けられ得る。その結果、ユーザの負担が低減され得る。
本実施形態によれば、作業環境4の少なくとも一部に存在する物体の属性情報及び位置情報と、制御プログラムに関連づけられている過去記録情報とを比較することによって、作業環境4の少なくとも一部と制御プログラムの選択が適切であるかが判定され得る。単に作業環境4にワーク8等が揃っていることを確認しても、選択した制御プログラムでロボット1の作業が成功しないことがある。逆に、作業環境4にワーク8等が揃っていなくても、選択した制御プログラムでロボット1の作業が成功することがある。作業環境4の少なくとも一部の情報と過去記録情報との比較、又は、類似度に基づく判定によって、ロボット1の作業における柔軟な対応が許容され得る。その結果、ロボット1の作業が効率的に実行され得る。
制御プログラムの適否の判定は、ロボット1に実行させる作業毎に実行されてもよいし、ロボット1に実行させる複数の一連の作業に対してまとめて実行されてもよい。
また、ロボット1を使用する際の効率が向上され得る。また、ロボット1を含む協調作業の効率が向上され得る。協調作業は、人とロボット1とが連携して実施する作業、ロボット1同士が連携して実施する作業、又は、ロボット1と他の機械とが連携して実施する作業を含む。協調作業は、人とロボット1とが連携して実施する協働作業を含む。
(他の実施形態)
本実施形態に係るロボット制御システム100は、工業製品の生産現場、食材を扱う食品加工の現場、又は、化粧品若しくは医薬品を製造する現場に展開され得る。
また、本実施形態に係るロボット制御システム100は、ユーザと対話するコミュニケーションロボット又はサービスロボット等のロボット1を制御するために利用され得る。例えば、ロボット1がカメラ等の情報取得装置3を有する場合、ロボット制御システム100は、対話又はサービス提供の対象となるユーザの顔を認識した結果に基づいて制御プログラムの選択の適否を判定してよい。ロボット制御システム100は、例えばユーザが眼鏡をかけていたりマスクを着用していたりするような状況の変化に応じて制御プログラムを変更する必要がある場合等に適用され得る。
情報処理装置10の制御部11は、ユーザが選択した制御プログラムの候補の使用状況を示す使用情報を取得し、類似度及び使用情報に基づいて、候補の適否を推定してよい。使用情報は、1日のうちの作業時間を表してもよいし、1年又は1か月のうちの作業時期を表してもよい。また、使用情報は、ロボット1に作業を実行させるユーザを表してもよいし、ロボット1に作業を実行させる場所を表してもよい。また、使用情報は、ロボット1に作業を実行させた直近の時刻、又は、ロボット1に作業を実行させた直近の頻度を表してもよい。
制御部11は、ロボットコントローラ2に実行させる制御プログラムを決定したときに、ロボット1の作業環境4の少なくとも一部に対応する準備環境情報を過去記録情報として、決定した制御プログラムに、新たに関連づけてよい。決定した制御プログラムに関連づける新たな過去記録情報は、第3環境情報とも称される。第3環境情報を制御プログラムに関連づけることは、第3環境情報の記録とも称される。第3環境情報の記録は、ユーザが選択した候補が適切であると判定された場合でも、不適切であると推定された場合でも実行されてよい。また、ユーザが選択した候補を制御部11が不適切であると判定したにもかかわらずユーザが選択した候補をそのまま使用する指示をした場合において、第3環境情報の記録を実行してもよい。また、ユーザが選択した候補を制御部11が不適切であると判定した場合に、ユーザが他の候補を使用する指示をした場合において、第3環境情報の記録を実行してもよい。制御プログラムに第3環境情報を関連づけることによって、つまり第3環境情報の記録を実行することによって、制御部11が制御プログラムの候補の適否を推定する精度が高められ得る。具体的には、例えば、AI(Artificial Intelligence)を使用して、制御プログラムが適用される環境情報が再学習によって更新されてもよいし、または、制御部11が制御プログラムの候補の適否を推定するモデルが再学習によって更新されてもよい。
制御部11は、第3環境情報に基づいて、制御プログラムの候補の適否の判断基準を修正してよい。例えば、制御部11は、類似度が90%以上の場合に候補が適切であると推定していた場合に、第3環境情報に基づいて類似度が80%以上の場合でも候補が適切であると推定するように判断基準を修正してよい。また、制御部11は、類似度が80%以上かつ90%未満である場合に環境不備であると推定していた場合に、類似度が75%以上かつ90%未満である場合に環境不備であると推定し、類似度が75%未満である場合に選択不備であると推定するように判断基準を修正してよい。
また、類似度が90%と判断する許容範囲が変わり得る。例えば、判断基準の修正前に類似度が90%未満であった作業環境4の少なくとも一部の情報と過去記録情報との関係が、判断基準の修正後に類似度が90%以上になり得る。
制御部11は、複数の物体の位置関係に基づいて環境不備又は選択不備を検出してよい。制御部11は、過去記録情報を制御プログラムに関連づけた情報に更に基づいて環境不備又は選択不備を検出してよい。
本実施形態に係るロボット制御システム100は、ユーザが選択した制御プログラムの適否を判定している。ロボット制御システム100は、ユーザが制御プログラムを選択するときに、制御プログラムの候補を端末装置9に表示させてもよい。この場合、ロボット制御システム100の制御部11は、ロボットコントローラ2、端末装置9又は情報取得装置3等を通じて、例えばユーザが使用予定のロボット1の属性情報、ロボット1を使用予定のユーザの情報、又は認識した作業予定の作業対象物などの情報を取得し、制御プログラムの候補として、例えばユーザが使用予定のロボット1、使用予定のロボット1と同型のロボット、又は作業予定の作業対象物において、所定期間内に実行された頻度が高い制御プログラム、又は、特定のユーザが実行する頻度が高い制御プログラムを抽出してもよい。また、この場合、ロボット制御システム100は、関連度と称される指標を算出してもよい。情報処理装置10の制御部11は、例えば、現在からさかのぼった所定期間において実行された頻度が高い制御プログラムに高い優先順位が付されるように、関連度を算出してよい。制御部11は、直近に実行された制御プログラムに高い優先順位が付されるように、関連度を算出してよい。制御部11は、作業環境4を準備してロボット1に作業を実行させようとしているユーザが直近に実行した制御プログラム又はそのユーザが実行した頻度が高い制御プログラムに高い優先順位が付されるように関連度を算出してよい。制御部11は、算出した関連度等の指標の値に基づいて制御プログラムを抽出してよい。
以上、ロボット制御システム100の実施形態を説明してきたが、本開示の実施形態としては、システム又は装置を実施するための方法又はプログラムの他、プログラムが記録された記憶媒体(一例として、光ディスク、光磁気ディスク、CD-ROM、CD-R、CD-RW、磁気テープ、ハードディスク、又はメモリカード等)としての実施態様をとることも可能である。プログラムは、非一時的なコンピュータ読み取り可能な媒体に格納されてよい。
また、プログラムの実装形態としては、コンパイラによってコンパイルされるオブジェクトコード、インタプリタにより実行されるプログラムコード等のアプリケーションプログラムに限定されることはなく、オペレーティングシステムに組み込まれるプログラムモジュール等の形態であっても良い。さらに、プログラムは、制御基板上のCPUにおいてのみ全ての処理が実施されるように構成されてもされなくてもよい。プログラムは、必要に応じて基板に付加された拡張ボード又は拡張ユニットに実装された別の処理ユニットによってその一部又は全部が実施されるように構成されてもよい。
本開示に係る実施形態について、諸図面及び実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形又は改変を行うことが可能であることに注意されたい。従って、これらの変形又は改変は本開示の範囲に含まれることに留意されたい。例えば、各構成部等に含まれる機能等は論理的に矛盾しないように再配置可能であり、複数の構成部等を1つに組み合わせたり、或いは分割したりすることが可能である。
本開示に記載された構成要件の全て、及び/又は、開示された全ての方法、又は、処理の全てのステップについては、これらの特徴が相互に排他的である組合せを除き、任意の組合せで組み合わせることができる。また、本開示に記載された特徴の各々は、明示的に否定されない限り、同一の目的、同等の目的、または類似する目的のために働く代替の特徴に置換することができる。したがって、明示的に否定されない限り、開示された特徴の各々は、包括的な一連の同一、又は、均等となる特徴の一例にすぎない。
さらに、本開示に係る実施形態は、上述した実施形態のいずれの具体的構成にも制限されるものではない。本開示に係る実施形態は、本開示に記載された全ての新規な特徴、又は、それらの組合せ、あるいは記載された全ての新規な方法、又は、処理のステップ、又は、それらの組合せに拡張することができる。
本開示において「第1」及び「第2」等の記載は、当該構成を区別するための識別子である。本開示における「第1」及び「第2」等の記載で区別された構成は、当該構成における番号を交換することができる。例えば、第1トレイ6は、第2トレイ7と識別子である「第1」と「第2」とを交換することができる。識別子の交換は同時に行われる。識別子の交換後も当該構成は区別される。識別子は削除してよい。識別子を削除した構成は、符号で区別される。本開示における「第1」及び「第2」等の識別子の記載のみに基づいて、当該構成の順序の解釈、小さい番号の識別子が存在することの根拠に利用してはならない。