以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
〔処理システム〕
図1に示す処理システム1は、バイオメディカル分野における処理の少なくとも一部をロボットに実行させるシステムである。バイオメディカル分野における処理の具体例としては、細胞培養、調剤、ゲノム解析等の検体解析における検体の前処理等が挙げられる。処理システム1は、ロボットシステム2と、一以上の周辺機器3とを備える。
ロボットシステム2は、ロボット10と、コントローラ100とを有する。ロボット10は、上記処理における一連の動作を実行する。一連の動作は、一以上の作業対象物体に対する複数作業を含む。作業対象物体は、ロボット10により搬送可能であり、複数作業のいずれかによる作業対象となる物体である。作業対象物体の具体例としては、検体、試薬等を収容する容器(例えばマイクロチューブ、又はディッシュ)等が挙げられる。コントローラ100は、動作開始指令に応じて、上記一連の動作をロボット10に実行させる。ロボットシステム2の具体的な構成については後述する。
一以上の周辺機器3は、上記一連の動作においてロボット10により用いられる機器であり、ロボット10の作業フィールド内に配置されている。処理システム1は、ロボット10の作業フィールド内に配置された複数の周辺機器3を備えていてもよい。複数の周辺機器3の一例として、処理システム1は、作業テーブル3Aと、インキュベータ3Bと、フリーザ3Cと、ミキサー3Eと、ピペット3Fと、フィールドセンサ3Gと、廃棄瓶3Hと、ディッシュ置場3Jと、ラック3Kとを備える。
作業テーブル3Aは、他の周辺機器3の少なくとも一部を支持する。インキュベータ3Bは、培養空間に配置された容器(例えばディッシュ)内の細胞培養を促すように、培養空間内の温度、湿度、及び二酸化炭素濃度を一定に保つ装置である。一例として、インキュベータ3Bは、作業テーブル3Aの周囲に配置されている。フリーザ3Cは、検体又は試薬等を冷凍保存する装置である。一例として、フリーザ3Cは、作業テーブル3Aの周囲に配置されている。
遠心分離機3Dは、検体、試薬等の処理対象物を収容した容器(例えばマイクロチューブ)に遠心力を付与して、物体を分離させる装置である。一例として、遠心分離機3Dは、作業テーブル3Aの周囲に配置されている。ミキサー3Eは、検体、試薬等の処理対象物を収容した容器(例えばマイクロチューブ)を動かして、物体を攪拌する装置である。一例として、ミキサー3Eは作業テーブル3Aの上に配置されている。ミキサー3Eの具体例としては、ボルテックスミキサーが挙げられる。ピペット3Fは、物体を吸引し、吐出する電動ピペットである。処理システム1は、複数のピペット3Fを備えていてもよい。一例として、複数のピペット3Fは作業テーブル3Aの上に配置されている。
廃棄瓶3Hは、不要となった作業対象物体の回収容器である。一例として、廃棄瓶3Hは、作業テーブル3Aの上に配置されている。ディッシュ置場3Jは、検体、試薬の注入等のためにディッシュが一時的に配置される支持台である。処理システム1は複数のディッシュ置場3Jを備えていてもよい。一例として、ディッシュ置場3Jは作業テーブル3Aの上に配置されている。ラック3Kは、容器(例えばマイクロチューブ)を一時的に保持するラックである。処理システム1は、複数のラック3Kを備えていてもよい。一例として、ラック3Kは作業テーブル3Aの上に配置されている。
〔ロボットシステム〕
続いて、ロボットシステム2の構成を具体的に例示する。上述したように、ロボットシステム2は、ロボット10と、コントローラ100とを有する。例えばロボット10は、双腕型の多関節ロボットであり、図2に示すように、胴部11と、胸部12と、左アーム20と、右アーム30と、アクチュエータM01と、アクチュエータM11,M12,M13,M14,M15,M16,M17と、アクチュエータM21,M22,M23,M24,M25,M26,M27とを有する。
胴部11は、作業テーブル3Aの周囲に固定されている。胸部12は、鉛直な軸線Ax01まわりに回転可能となるように、胴部11の上に設けられている。胸部12は、水平方向に並ぶ左端部12aと右端部12bとを有する。以下、左端部12aと右端部12bとが並ぶ方向を左右方向という。左アーム20及び右アーム30は、胸部12の左端部12a及び右端部12bにそれぞれ取り付けられている。左アーム20及び右アーム30は、いずれも7自由度の多関節アームである。
左アーム20は、肩旋回部21と、第一アーム22と、第二アーム23と、手首部24と、先端部25と、ハンド26とを有する。肩旋回部21は、左右方向に沿った軸線Ax11まわりに回転可能となるように、左端部12aに取り付けられている。
第一アーム22は、軸線Ax11に交差(例えば直交)する軸線Ax12まわりに旋回可能となるように、肩旋回部21に取り付けられている。交差は、所謂立体交差のように、ねじれの関係にあることを含む。以下においても同様である。第一アーム22は、軸線Ax12に交差(例えば直交)する軸線Ax13に沿って延びており、肩旋回部21から順に並ぶアーム基部22aとアーム旋回部22bとを有する。アーム基部22aは軸線Ax12まわりに回転可能となるように肩旋回部21に接続されている。アーム旋回部22bは、軸線Ax13まわりに回転可能となるようにアーム基部22aの端部に接続されている。
第二アーム23は、軸線Ax13に交差(例えば直交)する軸線Ax14まわりに回転可能となるように、アーム旋回部22bの端部(第一アーム22の端部)に接続されている。第二アーム23は、軸線Ax14に交差(例えば直交)する軸線Ax15に沿って延びており、第一アーム22の端部から順に並ぶアーム基部23aとアーム旋回部23bとを有する。アーム基部23aは、軸線Ax14まわりに回転可能となるようにアーム旋回部22bの端部に接続されている。アーム旋回部23bは、軸線Ax15まわりに回転可能となるようにアーム基部23aの端部に接続されている。
手首部24は、軸線Ax15に交差(例えば直交)する軸線Ax16まわりに回転可能となるように、アーム旋回部23bの端部(第二アーム23の端部)に接続されている。手首部24は、軸線Ax16に交差(例えば直交)する軸線Ax17に沿って延びている。先端部25は、軸線Ax17まわりに回転可能となるように、手首部24の端部に設けられている。ハンド26は、作業対象物体又は、ピペット3F等を把持可能な把持ツールであり、先端部25に設けられている。
このように、左アーム20は、胸部12と肩旋回部21との間の関節J11と、肩旋回部21とアーム基部22aとの間の関節J12と、アーム基部22aとアーム旋回部22bとの間の関節J13と、アーム旋回部22bとアーム基部23aとの間の関節J14と、アーム基部23aとアーム旋回部23bとの間の関節J15と、アーム旋回部23bと手首部24との間の関節J16と、手首部24と先端部25との間の関節J17との7関節を有する。
右アーム30は、肩旋回部31と、第一アーム32と、第二アーム33と、手首部34と、先端部35と、ハンド36とを有する。肩旋回部31は、左右方向に沿った軸線Ax21まわりに回転可能となるように、右端部12bに取り付けられている。
第一アーム32は、軸線Ax21に交差(例えば直交)する軸線Ax22まわりに旋回可能となるように、肩旋回部31に取り付けられている。第一アーム32は、軸線Ax22に交差(例えば直交)する軸線Ax23に沿って延びており、肩旋回部31から順に並ぶアーム基部32aとアーム旋回部32bとを有する。アーム基部32aは軸線Ax22まわりに回転可能となるように肩旋回部31に接続されている。アーム旋回部32bは、軸線Ax23まわりに回転可能となるようにアーム基部32aの端部に接続されている。
第二アーム33は、軸線Ax23に交差(例えば直交)する軸線Ax24まわりに回転可能となるように、アーム旋回部32bの端部(第一アーム32の端部)に接続されている。第二アーム33は、軸線Ax24に交差(例えば直交)する軸線Ax25に沿って延びており、第一アーム32の端部から順に並ぶアーム基部33aとアーム旋回部33bとを有する。アーム基部33aは、軸線Ax24まわりに回転可能となるようにアーム旋回部32bの端部に接続されている。アーム旋回部33bは、軸線Ax25まわりに回転可能となるようにアーム基部33aの端部に接続されている。
手首部34は、軸線Ax25に交差(例えば直交)する軸線Ax26まわりに回転可能となるように、アーム旋回部33bの端部(第二アーム33の端部)に接続されている。手首部34は、軸線Ax26に交差(例えば直交)する軸線Ax27に沿って延びている。先端部35は、軸線Ax27まわりに回転可能となるように、手首部34の端部に設けられている。ハンド36は、作業対象物体又は、ピペット3F等を把持可能な把持ツールであり、先端部35に設けられている。
このように、右アーム30は、左アーム20と同様に、胸部12と肩旋回部31との間の関節J21と、肩旋回部31とアーム基部32aとの間の関節J22と、アーム基部32aとアーム旋回部32bの間の関節J23と、アーム旋回部32bとアーム基部33aとの間の関節J24と、アーム基部33aとアーム旋回部33bとの間の関節J25と、アーム旋回部33bと手首部34との間の関節J26と、手首部34と先端部35との間の関節J27との7関節を有する。
アクチュエータM01は、例えば電動モータが発生する動力によって、軸線Ax01まわりに胸部12を回転させる。アクチュエータM11,M12,M13,M14,M15,M16,M17は、左アーム20の関節J11,J12,J13,J14,J15,J16,J17をそれぞれ駆動する。例えばアクチュエータM11は、例えば電動モータが発生する動力によって、軸線Ax11まわりに肩旋回部21を回転させる。例えばアクチュエータM12は、例えば電動モータが発生する動力によって、軸線Ax12まわりにアーム基部22aを回転させる。例えばアクチュエータM13は、例えば電動モータが発生する動力によって、軸線Ax13まわりにアーム旋回部22bを回転させる。例えばアクチュエータM14は、例えば電動モータが発生する動力によって、軸線Ax14まわりにアーム基部23aを回転させる。例えばアクチュエータM15は、例えば電動モータが発生する動力によって、軸線Ax15まわりにアーム旋回部23bを回転させる。例えばアクチュエータM16は、例えば電動モータが発生する動力によって、軸線Ax16まわりに手首部24を回転させる。例えばアクチュエータM17は、例えば電動モータが発生する動力によって、軸線Ax17まわりに先端部25を回転させる。
アクチュエータM21,M22,M23,M24,M25,M26,M27は、右アーム30の関節J21,J22,J23,J24,J25,J26,J27をそれぞれ駆動する。例えばアクチュエータM21は、例えば電動モータが発生する動力によって、軸線Ax21まわりに肩旋回部31を回転させる。例えばアクチュエータM22は、例えば電動モータが発生する動力によって、軸線Ax22まわりにアーム基部32aを回転させる。例えばアクチュエータM23は、例えば電動モータが発生する動力によって、軸線Ax23まわりにアーム旋回部32bを回転させる。例えばアクチュエータM24は、例えば電動モータが発生する動力によって、軸線Ax24まわりにアーム基部33aを回転させる。例えばアクチュエータM25は、例えば電動モータが発生する動力によって、軸線Ax25まわりにアーム旋回部33bを回転させる。例えばアクチュエータM26は、例えば電動モータが発生する動力によって、軸線Ax26まわりに手首部34を回転させる。例えばアクチュエータM27は、例えば電動モータが発生する動力によって、軸線Ax27まわりに先端部35を回転させる。
以上に示したロボット10の構成はあくまで一例であり、一連の動作の内容に応じて適宜変更可能である。例えばロボット10の左アーム20及び右アーム30のそれぞれの自由度は必ずしも7でなくてもよい。左アーム20及び右アーム30のそれぞれの自由度数は、7より大きくてもよく、6以下であってもよい。ロボット10は、単腕型のロボット(例えば垂直多関節ロボット、又はスカラーロボット)であってもよい。
上述したように、コントローラ100は、上記動作開始指令に応じて、上記一連の動作をロボット10に実行させる。一連の動作は、作業者による動作開始指令の後、作業者による次の指令を待つことなく自動実行される一まとまりの動作を意味する。一連の動作は、動作条件が整うのを待機するための一時停止を含み得る。動作条件の具体例としては、2つの作業間に予め定められた待機時間が経過すること、又は周辺機器3による処理(例えば遠心分離機3Dによる遠心分離処理、又はミキサー3Eによる攪拌処理等)が完了すること等を含む。コントローラ100は、複数種類の一連の動作をロボット10に実行させてもよい。この場合、コントローラ100は、複数種類ごとに、作業者による動作開始指令を待機してもよい。
一連の動作によって、ロボット10に所望の複数作業を実行させるためには、的確な事前準備がなされる必要がある。事前準備が不適切である場合、ロボット10の作業不良が生じ得る。例えば、複数作業が作業対象物体の搬送作業を含む場合、搬送開始位置に当該作業対象物体(以下、「搬送対象物体」という。)が事前に配置されている必要がある。また、搬送完了位置が空となっている必要がある。
仮に、搬送開始位置に搬送対象物体が配置されていない状態で、コントローラ100がロボット10に搬送作業用の動作を実行させてしまうと、ロボット10は、搬送対象物体を把持することなく、搬送作業用の動作を実行することとなる。また、搬送開始位置に搬送対象物体が配置されているが搬送完了位置が空となっていない状態で、コントローラ100がロボット10に搬送作業用の動作を実行させてしまうと、ロボット10により搬送された搬送対象物体が、搬送完了位置の既存物体に衝突してしまうこととなる。
バイオメディカル分野における処理の少なくとも一部をロボット10に実行させるシステムにおいては、検体、試薬等の事前準備が人により行われる場合がある。このように、人とロボットとが協働するシステムにおいては、ヒューマンエラーによる不適切な事前準備を防ぐことがより重要となる。
これに対し、コントローラ100は、ロボット10の一連の動作により実行される複数作業の内容に基づいて、ロボット10の作業フィールド内の複数位置に対し、一連の動作の開始前における物体配置条件を生成するように構成されている。複数位置に対し、一連の動作の開始前に物体配置条件を生成することによって、適切な事前準備を促すことができる。
コントローラ100は、複数作業の内容を指定する作業指示情報に基づいて、上記一連の動作をロボット10に実行させるための動作プログラムを生成することを更に実行し、生成した動作プログラムに基づいて上記一連の動作をロボット10に実行させるように構成されていてもよい。この場合、コントローラ100は、作業指示情報に基づいて、上記複数位置に対する上記物体配置条件を生成するように構成されていてもよい。動作プログラムを生成するための作業指示情報を有効活用することで、上記複数位置に対する上記物体配置条件を容易に生成することができる。
コントローラ100は、上記物体配置条件を上記複数位置ごとに示す条件表示画像を生成することを更に実行するように構成されていてもよい。この場合、物体配置条件に基づく事前準備の確実な遂行を容易に促すことができる。
例えば図3に示すように、コントローラ100は、機能上の構成要素(以下、「機能ブロック」という。)として、単位ジョブデータベース111と、プログラム生成部112と、プログラム記憶部113と、配置条件生成部114と、条件表示部116と、動作制御部115とを有する。
単位ジョブデータベース111は、複数の単位ジョブを記憶する。単位ジョブのそれぞれは、ハンド26,36に対する時系列の移動命令の集合である。各移動命令は、少なくとも、ハンド26,36に対する目標位置・姿勢と、目標移動速度とを含む。複数の単位ジョブのそれぞれは、ロボット10の実機及びロボット10のシミュレータの少なくとも一方を用いたティーチングにより予め生成されている。複数の単位ジョブは、複数の処理ジョブと、複数のつなぎジョブとを含む。
複数の処理ジョブのそれぞれは、所定の作業基準位置・姿勢にハンド26,36が配置された状態で、ロボット10に所定作業に対応する単位動作を開始させ、作業基準位置・姿勢にハンド26,36が配置された状態で上記単位動作を完了させる単位動作プログラムである。所定作業の具体例を以下に示す。
例1) 所定のピペット置場からピペット3Fを持ち出す。
例2) 所定のピペット置場にピペット3Fを戻す。
例3) 所定位置に配置された容器から、ピペット3Fによって内容物を吸い出す。
例4) 所定位置に配置された容器に対し、ピペット3Fによって内容物を注入する。
例5) 所定位置から容器を持ち出す。
例6) 所定位置に容器を配置して解放する。
例7) 遠心分離機3Dに所定時間に亘る遠心分離を実行させる。
例8) ミキサー3Eに所定時間に亘る攪拌を実行させる。
複数のつなぎジョブのそれぞれは、2つの作業基準位置・姿勢の組み合わせのいずれかに対応付けられており、対応する2つの作業基準位置・姿勢の一方から他方に向かって、予め定められた経路に沿ってハンド26,36を移動させる単位動作プログラムである。
プログラム生成部112は、複数作業の内容を指定する作業指示情報に基づいて、一連の動作をロボット10に実行させるための動作プログラムを生成する。動作プログラムは、ハンド26,36に対する時系列の移動命令の集合である。各移動命令は、少なくとも、ハンド26,36に対する目標位置・姿勢と、目標移動速度とを含む。
上記複数作業は複数の作業対象物体にそれぞれ対応する複数グループの個別作業と、複数の作業対象物体のいずれか2つに対応する一以上の物体間作業とを含んでもよい。例えば、複数の作業対象物体が、第一容器及び第二容器を含む場合に、一以上の物体間作業は、第一容器の内容物の少なくとも一部を第二容器に移す作業を含んでいてもよい。第一容器の内容物の少なくとも一部を第二容器に移す作業の具体例としては、第一容器の内容物をピペット3Fにより吸い出し、吸い出した物体をピペット3Fにより第二容器に注入する作業が挙げられる。第一容器の内容物の少なくとも一部を第二容器に移す作業は、ピペット3Fを用いることなく、第一容器の内容物を直接第二容器に移す作業であってもよい。
作業指示情報は、複数グループの個別作業の作業内容をそれぞれ指定する複数グループの個別作業指示と、一以上の物体間作業の作業内容をそれぞれ指定する一以上の物体間作業指示とを含んでいてもよい。複数グループの個別作業指示、及び一以上の物体間作業指示のそれぞれは、一以上の処理ジョブの抽出指示を含んでいてもよい。この場合、プログラム生成部112は、複数グループの個別作業指示、及び一以上の物体間作業指示に基づいて複数の処理ジョブを抽出し、時系列に並ぶ2つの処理ジョブ間のそれぞれにつなぎジョブを挿入することで動作プログラムを生成してもよい。
プログラム生成部112は、予め準備された複数の指示シンボルの選択、配置、接続と、複数の指示シンボルのそれぞれに対するパラメータ入力とによって、複数グループの個別作業指示、及び一以上の物体間作業指示を入力可能なユーザインタフェースを生成し、当該ユーザインタフェースへの入力に基づいて動作プログラムを生成してもよい。
この場合、コントローラ100は指示シンボルデータベース119を更に有してもよい。指示シンボルデータベース119は、予め準備された複数の指示シンボルを記憶する。複数の指示シンボルは、初期状態指示シンボルと、個別作業指示シンボルと、物体間作業指示シンボルとを含む。
初期状態指示シンボルは、個別作業指示において、作業対象物体の初期状態を指定するためのシンボルであり、作業対象物体の初期配置位置などをパラメータとして入力することが可能である。作業対象物体が容器である場合、初期状態指示シンボルに対し入力可能なパラメータは、容器の内容物を更に含んでいてもよい。
個別作業指示シンボルは、一グループの個別作業における一つの作業を指定するためのシンボルであり、当該一つの作業用のパラメータを入力することが可能である。個別作業指示シンボルは、一以上の処理ジョブの抽出指示に対応付けられている。
物体間作業指示シンボルは、一つの物体間作業を指定するためのシンボルであり、当該一つの物体間作業用のパラメータを入力することが可能である。物体間作業指示シンボルは、少なくとも、一方の作業対象物体に対する一以上の処理ジョブと、他方の作業対象物体に対する一以上の処理ジョブとの抽出指示に対応付けられている。
例えばプログラム生成部112は、予め準備された複数の指示シンボルの選択、配置、接続と、複数の指示シンボルのそれぞれに対するパラメータ入力とを行うためのプロトコル入力画面を表示デバイス195(後述)に表示し、当該プロトコル入力画面への入力に基づいて動作プログラムを生成してもよい。
図4は、プロトコル入力画面への入力例を示す模式図である。図4において、プロトコル入力画面200には、第一容器に対応する第一グループの個別作業指示210と、第二容器に対応する第二グループの個別作業指示220と、第一容器の内容物を第二容器に移す物体間作業指示230とが入力されている。
個別作業指示210は、時系列に並ぶ指示シンボル211,212を含む。指示シンボル211は、上記初期状態指示シンボルの一例である。指示シンボル211の作業対象物体は第一容器である。指示シンボル211には、第一容器の初期の配置位置と、第一容器の内容物とを入力可能である。
指示シンボル212は、上記個別作業指示シンボルの一例であり、第一容器を指定の搬送先に搬送することを指示する。指示シンボル212には、搬送先を入力可能である。指示シンボル212は、時系列における一つ前の指示シンボルにより示される位置から第一容器を持ち出す処理ジョブと、搬送先に第一容器を配置して解放する処理ジョブとの抽出指示に対応付けられている。
個別作業指示220は、時系列に並ぶ指示シンボル221,222,223,224を含む。指示シンボル221は、上記初期状態指示シンボルの一例である。指示シンボル212の作業対象物体は第二容器である。指示シンボル221には、第二容器の初期の配置位置と、第二容器の内容物とを入力可能である。
指示シンボル222は、上記個別作業指示シンボルの一例であり、ミキサー3Eによる攪拌を行うことを指示する。指示シンボル222には、攪拌時間を入力可能である。指示シンボル222は、時系列における一つ前の指示シンボルにより示される位置から第二容器を持ち出す処理ジョブと、ミキサー3E上に第二容器を配置する処理ジョブと、指定された攪拌時間に亘る攪拌をミキサー3Eに実行させる処理ジョブとの抽出指示に対応付けられている。
指示シンボル223は、上記個別作業指示シンボルの一例であり、遠心分離機3Dによる遠心分離を行うことを指示する。指示シンボル223には、遠心分離時間を入力可能である。指示シンボル223は、時系列における一つ前の指示シンボルにより示される位置から第二容器を持ち出す処理ジョブと、遠心分離機3D内に第二容器を配置して解放する処理ジョブと、指定された遠心分離時間に亘る遠心分離を遠心分離機3Dに実行させる処理ジョブとの抽出指示に対応付けられている。
物体間作業指示230は、指示シンボル231を含む。指示シンボル231は、上記物体間作業指示シンボルの一例であり、ピペット3Fによって、第一容器の内容物を第二容器に移すことを指示する。指示シンボル231には、第一容器から第二容器への内容物の移送量を入力可能である。
指示シンボル231は、所定のピペット置場からピペット3Fを持ち出す処理ジョブと、時系列における一つ前の指示シンボルにより示される位置に配置された第一容器から、指定された移送量の内容物をピペット3Fによって吸い出す処理ジョブと、時系列における一つ後の指示シンボルにより示される位置に配置された第二容器に対し、ピペット3Fによって内容物を注入する処理ジョブと、ピペット置場にピペット3Fを戻す処理ジョブとの抽出指示に対応付けられている。
以下、図4の個別作業指示210、個別作業指示220及び物体間作業指示230に基づいて、プログラム生成部112が実行する動作プログラムの生成手順を例示する。プログラム生成部112は、まず、指示シンボル211と、指示シンボル221と、指示シンボル231とに基づいて、複数の単位ジョブから以下の処理ジョブを抽出する。
ジョブ1-1) 所定のピペット置場からピペット3Fを持ち出す。
ジョブ1-2) 指示シンボル211が指定する位置に配置された第一容器から、指示シンボル231が指定する量の内容物をピペット3Fによって吸い出す。
ジョブ1-3) 指示シンボル221が指定する位置に配置された第二容器に対し、ピペット3Fによって内容物を注入する。
ジョブ1-4) 所定のピペット置場にピペット3Fを戻す。
以上の処理ジョブを抽出した後、プログラム生成部112は、ジョブ1-1の作業基準位置・姿勢からジョブ1-2の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ1-1とジョブ1-2との間に挿入する。同様に、プログラム生成部112は、ジョブ1-2の作業基準位置・姿勢からジョブ1-3の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ1-2とジョブ1-3との間に挿入する。同様に、プログラム生成部112は、ジョブ1-3の作業基準位置・姿勢からジョブ1-4の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ1-3とジョブ1-4との間に挿入する。同様に、プログラム生成部112は、ジョブ1-4の作業基準位置・姿勢からジョブ1-5の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ1-4とジョブ1-5との間に挿入する。
次に、プログラム生成部112は、指示シンボル211と、指示シンボル212とに基づいて、複数の単位ジョブから以下の処理ジョブを抽出する。
ジョブ2-1) 指示シンボル211が指定する位置から第一容器を持ち出す。
ジョブ2-2) 指示シンボル212が指定する位置に第一容器を配置し、解放する。
以上の処理ジョブを抽出した後、プログラム生成部112は、ジョブ1-5の作業基準位置・姿勢からジョブ2-1の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ1-5とジョブ2-1との間に挿入する。同様に、プログラム生成部112は、ジョブ2-1の作業基準位置・姿勢からジョブ2-2の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ2-1とジョブ2-2との間に挿入する。
次にプログラム生成部112は、指示シンボル221と、指示シンボル222とに基づいて、複数の単位ジョブから以下の処理ジョブを抽出する。
ジョブ3-1) 指示シンボル221が指定する位置から第二容器を持ち出す。
ジョブ3-2) 第二容器をミキサー3E上に配置する。
ジョブ3-3) ミキサー3Eに、指示シンボル222が指定する時間に亘って攪拌を実行させる。
ジョブ3-4) ミキサー3Eから第二容器を持ち出す。
以上の処理ジョブを抽出した後、プログラム生成部112は、ジョブ2-2の作業基準位置・姿勢からジョブ3-1の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ2-2とジョブ3-1との間に挿入する。同様に、プログラム生成部112は、ジョブ3-1の作業基準位置・姿勢からジョブ3-2の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ3-1とジョブ3-2との間に挿入する。同様に、プログラム生成部112は、ジョブ3-2の作業基準位置・姿勢からジョブ3-3の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ3-2とジョブ3-3との間に挿入する。同様に、プログラム生成部112は、ジョブ3-3の作業基準位置・姿勢からジョブ3-4の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ3-3とジョブ3-4との間に挿入する。
次にプログラム生成部112は、指示シンボル223に基づいて、複数の単位ジョブから以下の処理ジョブを抽出する。
ジョブ4-1) 第二容器を遠心分離機3D内に配置し、解放する。
ジョブ4-2) 遠心分離機3Dに、指示シンボル223が指定する時間に亘って遠心分離を実行させる。
ジョブ4-3) 遠心分離機3Dから第二容器を持ち出す。
以上の処理ジョブを抽出した後、プログラム生成部112は、ジョブ3-4の作業基準位置・姿勢からジョブ4-1の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ3-4とジョブ4-1との間に挿入する。同様に、プログラム生成部112は、ジョブ4-1の作業基準位置・姿勢からジョブ4-2の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ4-1とジョブ4-2との間に挿入する。同様に、プログラム生成部112は、ジョブ4-2の作業基準位置・姿勢からジョブ4-3の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ4-2とジョブ4-3との間に挿入する。
次に、プログラム生成部112は、指示シンボル224に基づいて、複数の単位ジョブから以下の処理ジョブを抽出する。
ジョブ5-1) 指示シンボル224が指定する位置に第二容器を配置し、解放する。
以上の処理ジョブを抽出した後、プログラム生成部112は、ジョブ4-3の作業基準位置・姿勢からジョブ5-1の作業基準位置・姿勢に向かってハンド26,36を移動させるつなぎジョブを複数の単位ジョブから抽出し、ジョブ4-3とジョブ5-1との間に挿入する。以上で、図4に示されるプロトコルチャートに基づく動作プログラムの生成が完了する。
なお、以上においては、つなぎジョブが予め準備されている場合を例示したが、コントローラ100はつなぎジョブを自動生成するように構成されていてもよい。つなぎジョブを自動生成するアルゴリズムとしては、例えば、障害物(例えば周辺機器3又は作業対象物体等)との干渉が無いロボット10の姿勢をランダムに生成し、それらをつなぎ合わせたロードマップからグラフ探索アルゴリズムにより経路を生成するPRM(Probabilistic Roadmap Method)が挙げられる。与えられたロードマップから最短経路を生成するグラフ探索アルゴリズムとしては、ダイクストラ法や、ダイクストラ法を改良したA*アルゴリズムが挙げられる。経路を自動生成する他のアルゴリズムとして、動作の開始点を基点として障害物との干渉が無い経路木をランダムに幾つか生成し、経路木の先端を新たな基点として経路木のランダム生成を繰り返すRRT(Rapidly-exploring Random Trees)が挙げられる。また、PRMとRRTを組み合わせたSRT(Sampling-based Roadmap of Trees)、RRM(Rapidly-exploring RoadMap)等によっても、つなぎジョブを自動生成することが可能である。これらのアルゴリズムはあくまで一例である。つなぎジョブを自動生成するアルゴリズムは、ロボット10と障害物とが干渉しないつなぎジョブを生成し得る限り、いかなるアルゴリズムであってもよい。
プログラム記憶部113は、プログラム生成部112が生成した動作プログラムを記憶する。
配置条件生成部114は、上記一連の動作により実行される複数作業の内容に基づいて、ロボット10の作業フィールド内の複数位置に対し、一連の動作の開始前における物体配置条件を生成する。配置条件生成部114は、複数位置のそれぞれに対し、少なくとも物体の有無を指定する物体配置条件を生成する。配置条件生成部114は、物体が配置されるべき位置に対し、配置されるべき物体の種類・状態を更に指定する物体配置条件を生成してもよい。
配置条件生成部114は、作業指示情報に基づいて、上記複数位置に対する上記物体配置条件を生成してもよい。上記複数位置は、複数作業のそれぞれにおいて、作業開始時に作業対象物体が配置される位置と、作業終了後に作業対象物体が配置される位置とを含む。
作業開始時に作業対象物体が配置される位置と、作業終了後に作業対象物体が配置される位置とが異なる場合に、配置条件生成部114は、作業開始前に作業対象物体が配置される位置に当該作業対象物体が配置されることと、作業終了後に作業対象物体が配置される位置が空であることと、を含む物体配置条件を生成してもよい。
但し、いずれかの作業において、作業終了後に作業対象物体が配置される位置が、他の作業において、作業開始時に他の作業対象物体が配置される位置となっている場合もあり得る。このため、作業終了後に作業対象物体が配置される位置であったとしても、当該位置が、一連の動作の開始時において、必ずしも空であるとは限らない。
複数作業が、複数の作業対象物体にそれぞれ対応する複数グループの個別作業を含む場合、複数位置は、複数グループの個別作業のそれぞれの開始時において、対応する作業対象物が配置される第一種の位置と、第一種の位置に該当しないが、複数の作業対象物のいずれかが個別作業中に配置される第二種の位置と、を含む。この場合、配置条件生成部114は、複数グループの個別作業のそれぞれにおける作業対象物体の搬送経路に基づいて、第一種の位置と第二種の位置とを特定し、第一種の位置のそれぞれに対応する作業対象物体が配置されることと、第二種の位置が空であることと、を含む物体配置条件を生成してもよい。
配置条件生成部114は、作業指示情報が含む複数グループの個別作業指示に基づいて、第一種の位置と第二種の位置とを特定してもよい。例えば、図4に示されるプロトコルチャートによって作業指示情報が含まれる場合、配置条件生成部114は、第一グループの個別作業指示210の最初の指示シンボル211により指定される配置位置と、第二グループの個別作業指示220の最初の指示シンボル221により指定される配置位置とを第一種の位置として特定する。また、配置条件生成部114は、個別作業指示210の指示シンボル212により指定される配置位置と、個別作業指示220の指示シンボル222,223,224により指定される配置位置とを第二種の位置として特定する。
図3に戻り、条件表示部116は、配置条件生成部114により生成された物体配置条件を複数位置ごとに示す条件表示画像を生成し、表示デバイス195(後述)に表示させる。条件表示部116は、ロボット10の作業フィールドのレイアウト図内において、複数位置のそれぞれに対応付けて配置条件を表示する条件マップを含んでもよい。条件表示部116は、条件マップにおいて、複数位置のうち物体が配置されるべき位置を第一種のマーカで示し、複数位置のうち空とされるべき位置を第一種のマーカとは異なる第二種のマーカで示してもよい。
図5は、条件表示画像を例示する模式図である。図5に示す条件表示画像300は、配置条件リスト310と、条件マップ320とを含む。配置条件リスト310は、生成された物体配置条件を複数位置ごとに示すテキストのリストである。条件マップ320は、ロボット10の作業フィールドを上から見たレイアウト図321内において、複数位置のうち物体が配置されるべき位置を第一種のマーカ322で示し、複数位置のうち空とされるべき位置を第二種のマーカ323で示す。
条件表示画像300は、配置条件リスト310に表示されるテキストと、条件マップ320のマーカ322,323とを対応付ける引き出し線324を更に表示してもよい。図5に示すように、条件表示部116は、配置条件リスト310においてユーザにより選択されたテキストに対して引き出し線324を表示し、ユーザにより選択されていないテキストに対する引き出し線324の表示を省略してもよい。
図6に示すように、条件表示部116は、配置条件リスト310においてユーザにより選択されたテキストに対して引き出し線324を表示する際に、マーカ322,323が付与された位置の周囲を拡大表示してもよい。この場合、ユーザにより選択されたテキストと、拡大表示された画像内のマーカ322,323とを対応付けるように引き出し線324を表示してもよい。
動作制御部115は、上記動作開始指令に応じて、ロボット10に一連の動作を実行させる。例えば動作制御部115は、プログラム記憶部113が記憶する動作プログラムに基づいてロボット10を動作させる。一例として、動作制御部115は、所定の制御周期にて、動作プログラムの実行完了まで、以下の制御手順を繰り返し実行する。
制御手順1)動作プログラムに基づいて、現在の制御周期におけるハンド26,36の目標位置・姿勢を算出する。
制御手順2)所定の拘束条件及び逆運動学演算によって、ハンド26,36の目標位置・姿勢に対応するアクチュエータM01、アクチュエータM11,M12,M13,M14,M15,M16,M17、及びアクチュエータM21,M22,M23,M24,M25,M26,M27の目標回転角度を算出する。
制御手順3)アクチュエータM01、アクチュエータM11,M12,M13,M14,M15,M16,M17、及びアクチュエータM21,M22,M23,M24,M25,M26,M27のそれぞれに対し、回転角度を目標回転角度に追従させるための駆動電力を供給する。
コントローラ100は、複数位置のうち少なくとも一以上のチェック対象位置が物体配置条件を満たすか否かをチェックすることを更に実行するように構成されていてもよい。コントローラ100により、物体配置条件が満たされているか否かのチェック(以下、「配置チェック」という。)も行うことで、物体配置条件に基づく事前準備のより確実な遂行を促すことができる。
処理システム1は、ロボット10の作業フィールドにおける物体配置状態を検出するフィールドセンサ3Gを更に備えてもよい。この場合、コントローラ100は、フィールドセンサ3Gによる検出結果に基づいて、一以上のチェック対象位置が物体配置条件を満たすか否かをチェックしてもよい。フィールドセンサ3Gの具体例としては、レーザ光の反射に基づき物体の有無を検出するレーザセンサが挙げられる。フィールドセンサ3Gは、物体配置状態を表す情報として、作業フィールドの画像情報を取得するカメラであってもよい。
一例として、フィールドセンサ3Gは、ハンド26又はハンド36に固定されていてもよい(図2参照)。以下、ハンド26,36のうち、フィールドセンサ3Gが固定されたハンドを「検査用ハンド」という。フィールドセンサ3Gが検査用ハンドに固定される場合、コントローラ100は、一以上のチェック対象位置の物体配置状態を検出可能な位置にフィールドセンサ3Gを配置するようにロボット10を制御してもよい。例えばコントローラ100は、図3に示すように、センサ配置データベース121と、チェックプログラム生成部122と、チェックプログラム記憶部123と、チェック動作制御部124と、配置チェック部117と、結果表示部118とを更に有してもよい。
センサ配置データベース121は、上記複数位置を含む複数の候補位置ごとにフィールドセンサ3Gの配置を定める。例えばセンサ配置データベース121は、複数の検出位置・姿勢を、複数の候補位置にそれぞれ対応付けて記憶する。複数の検出位置・姿勢のそれぞれは、対応する候補位置の物体配置状態を検出し得る一にフィールドセンサ3Gを配置するための検査用ハンドの位置・姿勢である。フィールドセンサ3Gの配置を変更することなく、2以上の候補位置の物体配置状態を検出し得る場合もある。この場合、センサ配置データベース121は、2以上の候補位置に対して、同一の検査位置・姿勢を対応付けていてもよい。
チェックプログラム生成部122は、センサ配置データベース121と、一以上のチェック対象位置とに基づいて、フィールドセンサ3Gの搬送プログラムを生成する。例えばチェックプログラム生成部122は、センサ配置データベース121において、一以上のチェック対象位置にそれぞれ対応付けられた一以上の検査位置・姿勢に、検査用ハンドを順次配置させる動作プログラムを上記搬送プログラムとして生成する。チェックプログラム記憶部123は、チェックプログラム生成部122により生成された上記搬送プログラムを記憶する。
チェック動作制御部124は、一以上のチェック対象位置のそれぞれにおける物体配置状態を検出するように、ロボット10にフィールドセンサ3Gを移動させる。例えばチェック動作制御部124は、チェックプログラム記憶部123が記憶する搬送プログラムに基づいて、ロボット10にフィールドセンサ3Gを移動させる。一例として、チェック動作制御部124は、所定の制御周期にて、搬送プログラムの実行完了まで、以下の制御手順を繰り返し実行する。
制御手順2-1)搬送プログラムに基づいて、現在の制御周期における検査用ハンドの目標位置・姿勢を算出する。
制御手順2-2)所定の拘束条件及び逆運動学演算によって、検査用ハンドの目標位置・姿勢に対応するアクチュエータM01、アクチュエータM11,M12,M13,M14,M15,M16,M17、及びアクチュエータM21,M22,M23,M24,M25,M26,M27の目標回転角度を算出する。
制御手順2-3)アクチュエータM01、アクチュエータM11,M12,M13,M14,M15,M16,M17、及びアクチュエータM21,M22,M23,M24,M25,M26,M27のそれぞれに対し、回転角度を目標回転角度に追従させるための駆動電力を供給する。
配置チェック部117は、フィールドセンサ3Gによる検出結果に基づいて、一以上のチェック対象位置が物体配置条件を満たすか否かをチェックする。例えば配置チェック部117は、チェック動作制御部124が検査位置・姿勢に検査用ハンドを配置させる度に、当該検査位置・姿勢に対応するチェック対象位置の物体配置状態の検出結果をフィールドセンサ3Gから取得し、取得した物体配置状態が物体配置条件を満たすか否かをチェックする。
結果表示部118は、配置チェック部117によるチェック結果を一以上のチェック対象位置ごとに示す結果表示画像を生成する。結果表示画像は、ロボット10の作業フィールドのレイアウト図内において、一以上のチェック対象位置のそれぞれに対応付けて配置チェック部によるチェック結果を示す結果マップを含んでもよい。
図7は、結果表示画像を例示する模式図である。図7に示す結果表示画像400は、配置条件リスト410と、結果リスト412と、結果マップ420とを含む。配置条件リスト410は、配置条件リスト310と同様に、物体配置条件を複数位置ごとに示すテキストのリストである。
結果リスト412は、配置チェック部117によるチェック結果を、配置条件リスト410に対応付けて複数位置ごとに示すリストである。図示において、「OK」は、対応する位置が物体配置条件を満たすことを意味し、「NG」は、対応する位置が物体配置条件を満たしていないことを意味する。
結果マップ420は、ロボット10の作業フィールドを上から見たレイアウト図421内において、複数位置のうち物体が配置されるべき位置を第一種のマーカ422で示し、複数位置のうち空とされるべき位置を第二種のマーカ423で示す。結果マップ420は、例えばマーカ422,423の表示態様によって、物体配置条件を満たしているか否かを示す。物体配置条件を満たしているか否かを明示し得る限り、表示態様に特に制限はない。具体例として、結果マップ420は、マーカ422,マーカ423の大きさ、形状、枠線の太さ、色彩等の違いによって、物体配置条件を満たしているか否かを示してもよい。
結果表示画像400は、配置条件リスト410に表示されるテキストと、結果マップ420のマーカ422,423とを対応付ける引き出し線424を更に表示してもよい。図7に示すように、結果表示部118は、配置条件リスト410においてユーザにより選択されたテキストに対して引き出し線424を表示し、ユーザにより選択されていないテキストに対する引き出し線424の表示を省略してもよい。
なお、カメラのように、より広範囲の物体配置状態を検出可能なセンサをフィールドセンサ3Gとして採用する場合、フィールドセンサ3Gは、ロボット10の作業フィールド全域を確認可能な位置に固定されていてもよい。この場合、チェックプログラム生成部122による搬送プログラムの生成、及びチェック動作制御部124によるフィールドセンサ3Gの搬送制御は不要である。
条件表示部116は、複数位置ごとにチェック要否を指定可能な条件表示画像を生成してもよい。例えば条件表示部116は、図5及び図6に示すように、チェック要否リスト311を更に含む条件表示画像300を生成してもよい。チェック要否リスト311は、チェック要否を、配置条件リスト310に対応付けて複数位置ごとに示すリストである。図示において、「要」は、チェックが必要であることを意味し、「否」は、チェックが不要であることを意味する。「要」及び「否」は、例えば入力デバイス196(後述)を用いてユーザにより変更することが可能である。以下、チェック要否リスト311において「否」とされた位置を「チェック不要位置」という。
配置チェック部117は、チェック不要位置を一以上のチェック対象位置から除外してもよい。チェックプログラム生成部122は、チェック不要位置を一以上のチェック対象位置から除外して搬送プログラムを生成してもよい。これにより、ロボット10の無駄な動作を減らすことができる。
条件表示部116が、チェック要否リスト311を更に含む条件表示画像300を生成する場合、結果表示部118は、図7に示すように、チェック要否リスト411を更に含む結果表示画像400を生成してもよい。チェック要否リスト411は、チェック要否リスト311におけるチェック要否の指定結果を、配置条件リスト410に対応付けて複数位置ごとに示すリストである。図7において、チェック要否が「否」となっている位置に対しては、チェック結果が「-」とされている。これは、配置チェック部117によって、一以上のチェック対象位置から除外されたことを意味している。
動作制御部115は、一以上のチェック対象位置のそれぞれにおける物体配置状態が物体配置条件を満たす場合には、上記動作開始指令に応じてロボット10に上記一連の動作を実行させ、一以上のチェック対象位置のいずれかにおける物体配置状態が物体配置条件を満たさない場合に、上記動作開始指令に応じずにロボット10に上記一連の動作を中止させてもよい。ロボット10の上記一連の動作を中止させる場合、動作制御部115は、物体配置条件を満たさない位置が存在していることを表示デバイス195(後述)への表示等によってユーザに報知してもよい。
結果表示部118は、一以上のチェック対象位置ごとに、チェック結果を無視してよいか否かを指定可能な結果表示画像を生成してもよい。例えば結果表示部118は、図8に示すように、結果選択リスト413を更に含む結果表示画像400を生成してもよい。結果選択リスト413は、チェック結果を無視してよいか否かを、配置条件リスト410に対応付けて複数位置ごとに示すリストである。図示において、「可」は、チェック結果を無視してよいことを意味し、「不可」は、チェック結果を無視してはならないことを意味する。「可」及び「不可」は、例えば入力デバイス196(後述)を用いてユーザにより変更することが可能である。
動作制御部115は、物体配置条件を満たさないことを示す少なくとも一つのチェック結果が無視不可と指定された場合には、上記動作開始指令に応じずにロボット10に上記一連の動作を中止させ、物体配置条件を満たさないことを示すチェック結果の全てが無視可能と指定された場合には、上記動作開始指令に応じてロボット10に上記一連の動作を実行させてもよい。
図9は、コントローラ100のハードウェア構成を例示するブロック図である。図9に示すように、コントローラ100は、回路190を有する。回路190は、一つ又は複数のプロセッサ191と、メモリ192と、ストレージ193と、入出力ポート194と、表示デバイス195と、入力デバイス196と、サーボドライバ197とを含む。ストレージ193は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ193は、ロボット10の一連の動作により実行される複数作業の内容に基づいて、ロボット10の作業フィールド内の複数位置に対し、一連の動作の開始前における物体配置条件を生成することと、上記一連の動作をロボット10に実行させることと、をコントローラ100に実行させるためのプログラムを記憶している。例えばストレージ193は、上述した各機能ブロックをコントローラ100に構成させるためのプログラムを記憶している。
メモリ192は、ストレージ193の記憶媒体からロードしたプログラム及びプロセッサ191による演算結果を一時的に記憶する。プロセッサ191は、メモリ192と協働して上記プログラムを実行することで、コントローラ100の各機能ブロックを構成する。入出力ポート194は、プロセッサ191からの指令に従って、フィールドセンサ3Gとの間で情報の入出力を行う。表示デバイス195及び入力デバイス196は、コントローラ100のユーザインタフェースとして機能する。表示デバイス195は、例えば液晶モニタ等を含み、ユーザに対する情報表示に用いられる。入力デバイス196は、例えばキーパッド等であり、ユーザによる入力情報を取得する。表示デバイス195及び入力デバイス196は、所謂タッチパネルのように一体化されていてもよい。表示デバイス195及び入力デバイス196は、コントローラ100に組み込まれていてもよいし、コントローラ100に接続される外部機器に設けられていてもよい。サーボドライバ197は、プロセッサ191からの指令に従って、ロボット10のアクチュエータM01,M11,M12,M13,M14,M15,M16,M17,M21,M22,M23,M24,M25,M26,M27に駆動電力を出力する。
なお、回路190は、必ずしもプログラムにより各機能を構成するものに限られない。例えば回路190は、専用の論理回路又はこれを集積したASIC(Application Specific Integrated Circuit)により少なくとも一部の機能を構成してもよい。
また、以上においては、コントローラ100を一つの装置として例示したが、コントローラ100は、互いに通信可能な複数の装置により構成されていてもよい。例えばコントローラ100は、互いに通信可能なロボットコントローラと外部コンピュータとにより構成されていてもよい。この場合、例えばプログラム記憶部113、動作制御部115、チェックプログラム記憶部123及びチェック動作制御部124がロボットコントローラに設けられ、単位ジョブデータベース111、プログラム生成部112、配置条件生成部114、条件表示部116、配置チェック部117、結果表示部118、指示シンボルデータベース119、センサ配置データベース121、チェックプログラム生成部122が外部コンピュータに設けられていてもよい。
〔処理手順〕
続いて、処理方法の一例として、コントローラ100が実行するロボット10の制御手順を具体的に例示する。この手順は、プログラム生成手順と、物体配置条件の表示手順と、配置チェック手順と、動作制御手順とを含む。以下、各手順を詳細に説明する。
(プログラム生成手順)
図10に示すように、コントローラ100は、ステップS01,S02,S03,S04を順に実行する。ステップS01では、プログラム生成部112が、プロトコル入力画面200を表示デバイス195に表示させる。ステップS02では、プログラム生成部112が、プロトコル入力画面200の入力内容に基づく動作プログラムの生成指令を待機する。動作プログラムの生成指令は、例えば入力デバイス196を用いてユーザにより入力される。
ステップS03では、プログラム生成部112が、プロトコル入力画面200の入力内容に基づいて、単位ジョブデータベース111の複数の単位ジョブから、複数の処理ジョブを時系列に並べて抽出する。ステップS04では、プログラム生成部112が、時系列に並ぶ2つの処理ジョブ間のそれぞれに対して、単位ジョブデータベース111の複数の単位ジョブからつなぎジョブを抽出し、挿入する。以上でプログラム生成手順が完了する。
(物体配置条件の表示手順)
図11に示すように、コントローラ100は、ステップS11,S12,S13,S14,S15を順に実行する。ステップS11では、配置条件生成部114が、物体配置条件の表示指令を待機する。物体配置条件の表示指令は、例えば入力デバイス196を用いてユーザにより入力される。ステップS12では、配置条件生成部114が、複数グループの個別作業指示に基づいて、複数グループの個別作業のそれぞれにおける作業対象物体の移動経路を特定する。ステップS13では、配置条件生成部114が、複数グループの個別作業指示に基づいて、複数グループの個別作業のそれぞれの開始時において作業対象物が配置される第一種の位置と、第一種の位置に該当しないが、複数の作業対象物のいずれかが個別作業中に配置される第二種の位置とを特定する。
ステップS14では、配置条件生成部114が、第一種の位置のそれぞれに対応する作業対象物体が配置されることと、第二種の位置が空であることと、を含む物体配置条件を生成する。ステップS15では、条件表示部116が、配置条件生成部114により生成された物体配置条件を複数位置ごとに示す条件表示画像を生成し、表示デバイス195に表示させる。以上で物体配置条件の表示手順が完了する。
(配置チェック手順)
図12に示すように、コントローラ100は、まずステップS21,S22,S23,S24,S25を実行する。ステップS21では、チェックプログラム生成部122が、配置チェック指令を待機する。配置チェック指令は、例えば入力デバイス196を用いてユーザにより入力される。ステップS22では、チェックプログラム生成部122が、センサ配置データベース121と、一以上のチェック対象位置とに基づいて、フィールドセンサ3Gの搬送プログラムを生成し、チェックプログラム記憶部123に記憶させる。
ステップS23では、チェック動作制御部124が、搬送プログラムに基づいて、最初の検査位置・姿勢に検査用ハンドを移動させる。ステップS24では、配置チェック部117が、検査位置・姿勢に対応するチェック対象位置の物体配置状態の検出結果をフィールドセンサ3Gから取得し、取得した物体配置状態が物体配置条件を満たすか否かをチェックする。ステップS25では、チェック動作制御部124が、搬送プログラムに基づいて、全ての検査位置・姿勢に検査用ハンドを配置したか否かを確認する。
ステップS25において、まだ検査用ハンドを配置していない検査位置・姿勢が残っていると判定した場合、コントローラ100はステップS26を実行する。ステップS26では、チェック動作制御部124が、搬送プログラムに基づいて、次の検査位置・姿勢に検査用ハンドを移動させる。その後、コントローラ100は処理をステップS24に戻す。以後、全ての検査位置・姿勢に検査用ハンドが配置されるまで、検査用ハンドの移動と、物体配置状態が物体配置条件を満たすか否かのチェックとが繰り返される。
ステップS25において、全ての検査位置・姿勢に検査用ハンドを配置したと判定した場合、コントローラ100はステップS27を実行する。ステップS27では、結果表示部118が、配置チェック部117によるチェック結果を一以上のチェック対象位置ごとに示す結果表示画像を生成する。以上で配置チェック手順が完了する。
(動作制御手順)
図13に示すように、コントローラ100は、まずステップS31,S32を実行する。ステップS31では、動作制御部115が動作開始指令を待機する。動作開始指令は、例えば入力デバイス196を用いてユーザにより入力される。ステップS32では、動作制御部115が、一以上のチェック対象位置のそれぞれにおける物体配置状態が物体配置条件を満たすか否かを確認する。
ステップS32において、一以上のチェック対象位置のそれぞれにおける物体配置状態が物体配置条件を満たすと判定した場合、コントローラ100はステップS33を実行する。ステップS33では、動作制御部115が、上記動作開始指令に応じて、プログラム記憶部113の動作プログラムに基づきロボット10に上記一連の動作を実行させる。
ステップS32において、物体配置状態が物体配置条件を満たしていないチェック対象位置が存在すると判定した場合、コントローラ100はステップS34を実行する。ステップS34では、動作制御部115が、上記動作開始指令に応じずに、ロボット10に上記一連の動作を中止させ、物体配置条件を満たさない位置が存在していることを報知するメッセージを表示デバイス195に表示させる。以上で動作制御手順が完了する。
〔本実施形態の効果〕
以上に説明したように、処理システム1は、ロボット10と、ロボット10に一連の動作を実行させる動作制御部115と、ロボット10の一連の動作により実行される複数作業の内容に基づいて、ロボット10の作業フィールド内の複数位置に対し、一連の動作の開始前における物体配置条件を生成する配置条件生成部114と、を備える。
複数位置に対し、一連の動作の開始前に物体配置条件を生成することによって、適切な事前準備を促すことができる。従って、本システムは、不適切な事前準備に起因するロボット10の作業不良を抑制するのに有効である。
処理システム1は、複数作業の内容を指定する作業指示情報に基づいて、一連の動作をロボット10に実行させるための動作プログラムを生成するプログラム生成部112を更に備え、配置条件生成部114は、作業指示情報に基づいて、複数位置に対する物体配置条件を生成してもよい。この場合、動作プログラムを生成するための作業指示情報を有効活用することで、複数位置に対する物体配置条件を容易に生成することができる。
複数位置は、複数作業のそれぞれにおいて、作業開始時に作業対象物体が配置される位置と、作業終了後に作業対象物体が配置される位置とを含んでいてもよい。この場合、複数作業のそれぞれの要となる位置を含む複数位置の物体配置条件を生成することで、適切な事前準備を更に促すことができる。
作業開始時に作業対象物体が配置される位置と、作業終了後に作業対象物体が配置される位置とが異なる場合に、配置条件生成部114は、作業開始前に作業対象物体が配置される位置に当該作業対象物体が配置されることと、作業終了後に作業対象物体が配置される位置が空であることと、を含む物体配置条件を生成してもよい。この場合、より適切な物体配置条件を生成することで、適切な事前準備を更に促すことができる。
複数作業は複数の作業対象物体にそれぞれ対応する複数グループの個別作業と、複数の作業対象物体のいずれか2つに対応する一以上の物体間作業とを含み、複数位置は、複数グループの個別作業のそれぞれの開始時において、対応する作業対象物体が配置される第一種の位置と、第一種の位置に該当しないが、複数の作業対象物体のいずれかが個別作業中に配置される第二種の位置と、を含み、配置条件生成部114は、複数グループの個別作業のそれぞれにおける作業対象物体の搬送経路に基づいて、第一種の位置と第二種の位置とを特定し、第一種の位置のそれぞれに対応する作業対象物体が配置されることと、第二種の位置が空であることと、を含む物体配置条件を生成してもよい。この場合、より適切な物体配置条件を容易に生成することができる。
処理システム1は、複数グループの個別作業の作業内容を指定する個別作業指示と、一以上の物体間作業の作業内容を指定する物体間作業指示とに基づいて、一連の動作をロボットに実行させるための動作プログラムを生成するプログラム生成部112を更に備え、配置条件生成部114は、個別作業指示に基づいて、第一種の位置と第二種の位置とを特定してもよい。この場合、動作プログラムを生成するために、複数作業の内容及び手順を指定するプロトコルを有効活用し、複数位置に対する物体配置条件を容易に生成することができる。
複数の作業対象物体は、第一容器及び第二容器を含み、一以上の物体間作業は、第一容器の内容物の少なくとも一部を第二容器に移す作業を含んでいてもよい。この場合、より適切な物体配置条件を生成することで、適切な事前準備を更に促すことができる。
処理システム1は、物体配置条件を複数位置ごとに示す条件表示画像300を生成する条件表示部116を更に備えていてもよい。この場合、物体配置条件に基づく事前準備の確実な遂行を容易に促すことができる。
条件表示画像300は、作業フィールドのレイアウト図321内において、複数位置のそれぞれに対応付けて配置条件を表示する条件マップ320を含んでいてもよい。この場合、複数位置ごとの物体配置条件を認識し易くし、物体配置条件に基づく事前準備のより確実な遂行を促すことができる。
条件表示部116は、条件マップ320において、複数位置のうち物体が配置されるべき位置を第一種のマーカ322で示し、複数位置のうち空とされるべき位置を第一種のマーカ322とは異なる第二種のマーカ323で示してもよい。この場合、複数位置ごとの物体配置条件を更に認識し易くし、物体配置条件に基づく事前準備のより確実な遂行を促すことができる。
処理システム1は、作業フィールドにおける物体配置状態を検出するフィールドセンサ3Gによる検出結果に基づいて、複数位置のうち少なくとも一以上のチェック対象位置が物体配置条件を満たすか否かをチェックする配置チェック部117を更に備えていてもよい。この場合、物体配置条件に基づく事前準備のより確実な遂行を促すことができる。
処理システム1は、一以上のチェック対象位置のそれぞれにおける物体配置状態を検出するように、ロボット10にフィールドセンサ3Gを移動させるチェック動作制御部124を更に備えていてもよい。この場合、物体配置状態をより高い信頼性で検出することができる。
処理システム1は、複数位置を含む複数の候補位置ごとにフィールドセンサ3Gの配置を定めるデータベースと、一以上のチェック対象位置とに基づいて、フィールドセンサ3Gの搬送プログラムを生成するチェックプログラム生成部122を更に備え、チェック動作制御部124は、チェックプログラム生成部122により生成されたフィールドセンサ3Gの搬送プログラムに基づいて、ロボット10にフィールドセンサ3Gを移動させてもよい。この場合、フィールドセンサ3Gの搬送プログラムを、一以上のチェック対象位置に応じて容易に変更することができる。
処理システム1は、作業フィールドにおける物体配置状態を検出するフィールドセンサ3Gによる検出結果に基づいて、複数位置のうち少なくとも一以上のチェック対象位置が物体配置条件を満たすか否かをチェックする配置チェック部117を更に備え、条件表示部116は、複数位置ごとにチェック要否を指定可能な条件表示画像を生成し、配置チェック部117は、条件表示画像300においてチェック不要とされた位置を一以上のチェック対象位置から除外してもよい。この場合、物体配置状態が物体配置条件を満たすか否かのチェック効率を向上させることができる。
動作制御部115は、一以上のチェック対象位置のそれぞれにおける物体配置状態が物体配置条件を満たす場合に、ロボット10に一連の動作を実行させ、一以上のチェック対象位置のいずれかにおける物体配置状態が物体配置条件を満たさない場合に、ロボット10に一連の動作を中止させてもよい。この場合、不適切な事前準備に起因するロボット10の作業不良を抑制することができる。
処理システム1は、配置チェック部117によるチェック結果を一以上のチェック対象位置ごとに示す結果表示画像400を生成する結果表示部118を更に備えていてもよい。この場合、不適切な事前準備に起因するロボット10の作業不良を抑制することができる。
結果表示画像400は、作業フィールドのレイアウト図421内において、一以上のチェック対象位置のそれぞれに対応付けて配置チェック部117によるチェック結果を示す結果マップ420を含んでいてもよい。この場合、チェック結果をより認識し易くし、不適切な事前準備に起因するロボット10の作業不良をより確実に抑制することができる。
結果表示部118は、一以上のチェック対象位置ごとに、チェック結果を無視してよいか否かを指定可能な結果表示画像400を生成し、動作制御部115は、物体配置条件を満たさないことを示す少なくとも一つのチェック結果が無視不可と指定された場合には、ロボット10に一連の動作を中止させ、物体配置条件を満たさないことを示すチェック結果の全てが無視可能と指定された場合には、ロボット10に一連の動作を実行させてもよい。この場合、無視可能なチェック結果を無視してロボット10に一連の動作を実行させることで、不適切な事前準備に起因するロボット10の作業不良を抑制することと、ロボット10の稼働効率を向上させることとの両立を図ることができる。
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
以上においては、ロボットシステム2を、バイオメディカル分野の処理システムに適用した形態を例示したが、ロボットシステム2の適用範囲はバイオメディカル分野に限られない。例えばロボットシステム2は、産業分野の処理システム(例えば生産システム)にも適用可能である。産業分野の処理システムにおいては、複数の部品が作業対象物体となり得る。また、複数の作業対象物体にそれぞれ対応する複数グループの個別作業の具体例としては、個々の部品に対する加工作業が挙げられる。更に、一以上の物体間作業の具体例としては、一つの部品を他の部品に組み付ける作業が挙げられる。