(57)【要約】【課題】複雑化が防止され、より容易に動作指令を生成する動作指令生成装置、プログラム及び動作指令生成方法を提供すること。【解決手段】  全体作業フローから、作業コマンドを抽出し、コマンド定義データベースから、読み込まれた前記作業コマンドに対応するコマンド定義を抽出し、読み込ませた前記作業コマンドを参照し、抽出された前記コマンド定義に基づいて、前記作業コマンドを１又は複数の順序づけられた単位ジョブのセットを生成し、複数の単位ジョブにおいて、先の単位ジョブの終了位置から、後の単位ジョブの開始位置へとロボットを動作させるつなぎジョブを生成し、前記単位ジョブ及び前記つなぎジョブが連続するロボット動作指令を生成するロボット動作指令生成方法。【選択図】図１
2018167361.tif 000002
【特許請求の範囲】
【請求項１】
全体作業フローから、作業コマンドを抽出し、
コマンド定義データベースから、読み込まれた前記作業コマンドに対応するコマンド定義を抽出し、
読み込ませた前記作業コマンドを参照し、抽出された前記コマンド定義に基づいて、前記作業コマンドを１又は複数の順序づけられた単位ジョブのセットを生成し、
複数の単位ジョブにおいて、先の単位ジョブの終了位置から、後の単位ジョブの開始位置へとロボットを動作させるつなぎジョブを生成し、
前記単位ジョブ及び前記つなぎジョブが連続するロボット動作指令を生成する、
ロボット動作指令生成方法。
【請求項２】
前記ロボット動作指令を生成する際に、前記単位ジョブを予め記憶された単位ジョブ群から呼び出す
請求項１に記載のロボット動作指令生成方法。
【請求項３】
前記コマンド定義は、前記作業コマンド毎に使用する単位ジョブの順序及び組み合わせを１又は複数定義するものであり、
前記作業コマンドは、前記作業コマンドの作業条件に応じて、使用する単位ジョブの順序及び組み合わせが選択される、
請求項１又は２に記載のロボット動作指令生成方法。
【請求項４】
前記コマンド定義には、順序付けられ、実行される前記単位ジョブを示す情報のほか、実行される単位ジョブを変化させる制御情報が含まれ、
前記作業コマンドは、直列に順序付けられた前記単位ジョブに変換され、前記単位ジョブのセットとして生成される請求項３に記載のロボット動作指令生成方法。
【請求項５】
作業モデルを参照して、モデル間の干渉を起こさない経路で前記つなぎジョブを生成する、
請求項１〜４のいずれか１項に記載のロボット動作指令生成方法。
【請求項６】
前記コマンド定義にはロボット保持物情報が含まれており、
前記つなぎジョブは、前記ロボット保持物情報に基づいて生成される、
請求項５に記載のロボット動作指令生成方法。
【請求項７】
あらかじめ記憶された前記単位ジョブの実行に要する時間と、前記つなぎジョブの実行に要する時間を合算して前記全体作業フローの実行に要する時間である全体作業時間を求める、
請求項１〜６のいずれか１項に記載のロボット動作指令生成方法。
【請求項８】
生成された前記つなぎジョブの動作シミュレーションを行い、当該つなぎジョブの実行に要する時間を求め、
あらかじめ記憶された前記単位ジョブの実行に要する時間と、前記つなぎジョブの実行に要する時間を合算して前記全体作業フローの実行に要する時間である全体作業時間を求める、
請求項７に記載のロボット動作指令生成方法。
【請求項９】
生成された前記つなぎジョブの実行に要する時間を記憶する、
請求項７又は８に記載のロボット動作指令生成方法。
【請求項１０】
少なくとも、前記作業コマンドの開始および終了時点における作業用機器及び前記ロボットの状態を示す状態情報を生成する、
請求項１〜９のいずれか１項に記載のロボット動作指令生成方法。
【請求項１１】
前記単位ジョブの開始および終了時点における作業用機器及び前記ロボットの状態を示す状態情報を生成する、
請求項１０に記載のロボット動作指令生成方法。
【請求項１２】
少なくとも、前記作業コマンドの開始および終了時点における作業用機器及び前記ロボットの状態を示す状態情報を生成し、
前記つなぎジョブは、前記状態情報に基づいて、モデル間の干渉を起こさない経路として生成される、
請求項５に記載のロボット動作指令生成方法。
【請求項１３】
生成されたつなぎジョブを記憶し、
連続する前記作業コマンドにおいて、先の作業コマンドの終了時点及び後の作業コマンドの開始時点における状態情報が、既に生成されたつなぎジョブについての状態情報と等しい場合には、記憶された当該つなぎジョブを用いる、
請求項１０又は１１に記載のロボット動作指令生成方法。
【請求項１４】
連続する前記作業コマンドにおいて、先の作業コマンドの終了位置と後の作業コマンドの開始位置が等しい場合に、前記つなぎジョブの生成を省略するか、又は生成された前記つなぎジョブを破棄する、
請求項１〜１３のいずれか１項に記載のロボット指令生成方法。
【請求項１５】
連続する前記単位ジョブにおいて、先の単位ジョブと後の単位ジョブが、互いに開始位置と終了位置を同じくし、作業位置のみオフセットしたものである場合に、先の単位ジョブに含まれる終了位置への移動指令と、後の単位ジョブに含まれる開始位置への移動指令を破棄する、
請求項１〜１４のいずれか１項に記載のロボット指令生成方法。
【請求項１６】
前記単位ジョブには、ローカル座標系を指定する座標系指定指令と、当該ローカル座標系に基づく移動指令が含まれる、
請求項１〜１５のいずれか１項に記載のロボット指令生成方法。
【請求項１７】
全体作業フローから、作業コマンドを抽出する作業コマンド抽出部と、
コマンド定義データベースから、読み込まれた前記作業コマンドに対応するコマンド定義を抽出するコマンド定義抽出部と、
読み込ませた前記作業コマンドを参照し、抽出された前記コマンド定義に基づいて、前記作業コマンドを１又は複数の順序の定まった単位ジョブのセットを生成する単位ジョブセット生成部と、
複数の単位ジョブにおいて、先の単位ジョブの終了位置から、後の単位ジョブの開始位置へとロボットを動作させるつなぎジョブを生成するつなぎジョブ生成部と、
前記単位ジョブ及び前記つなぎジョブが連続するロボット動作指令を生成するロボット動作指令生成部と、
を有するロボット動作指令生成装置。
【請求項１８】
予め作成された複数の単位ジョブを記憶する単位ジョブ群記憶部を有し、
前記ロボット動作指令生成部が前記ロボット動作指令を生成する際に、前記単位ジョブ群記憶部に記憶された単位ジョブを参照する
請求項１７記載のロボット動作指令生成装置。
【請求項１９】
コンピュータを、請求項１８に記載のロボット動作指令生成装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット動作指令生成方法、ロボット動作指令生成装置及びコンピュータプログラムに関する。
【背景技術】
【０００２】
ロボットの教示作業には教示者のスキルに依存しており教示作業を簡易化することが求められている。教示の簡易化の例として特許文献１にはロボットに作業を行わせる場合、単位ジョブデータを組み合わせることで一連の動作を構成するものが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５５８２４２７号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ロボットを制御する動作指令は、条件分岐やループ等を含んで、その判断結果に応じて単位ジョブを呼び出す場合がある。そのような場合、ロボットにいずれの動作を行わせるかを先の動作に依存して判断しなければならず、動作指令が複雑化して、ロボット制御装置の演算負荷が増大してしまう。一方、ユーザが、条件分岐やループ等を含まないようにロボットの動作指令を記述することとすると、記述の自由度が著しく低下し、冗長な記述を強いられることとなり、効率的でない。
【０００５】
そこで、本発明は、複雑化が防止され、より容易に動作指令を生成する動作指令生成装置、プログラム及び動作指令生成方法を提供することをその課題とする。
【課題を解決するための手段】
【０００６】
本発明の一の側面によるロボット動作指令生成方法は、全体作業フローから、作業コマンドを抽出し、コマンド定義データベースから、読み込まれた前記作業コマンドに対応するコマンド定義を抽出し、読み込ませた前記作業コマンドを参照し、抽出された前記コマンド定義に基づいて、前記作業コマンドを１又は複数の順序づけられた単位ジョブのセットを生成し、複数の単位ジョブにおいて、先の単位ジョブの終了位置から、後の単位ジョブの開始位置へとロボットを動作させるつなぎジョブを生成し、前記単位ジョブ及び前記つなぎジョブが連続するロボット動作指令を生成する。
【０００７】
また、本発明の一の側面によるロボット動作指令生成方法では、前記ロボット動作指令を生成する際に、前記単位ジョブを予め記憶された単位ジョブ群から呼び出してよい。
【０００８】
また、本発明の一の側面によるロボット動作指令生成方法では、前記コマンド定義は、前記作業コマンド毎に使用する単位ジョブの順序及び組み合わせを１又は複数定義するものであり、前記作業コマンドは、前記作業コマンドの作業条件に応じて、使用する単位ジョブの順序及び組み合わせが選択されてよい。
【０００９】
また、本発明の一の側面によるロボット動作指令生成方法では、前記コマンド定義には、順序付けられ、実行される前記単位ジョブを示す情報のほか、実行される単位ジョブを変化される制御情報が含まれ、前記作業コマンドは、直列に順序付けられた前記単位ジョブに変換され、前記単位ジョブのセットとして生成されてよい。
【００１０】
また、本発明の一の側面によるロボット動作指令生成方法では、作業モデルを参照して、モデル間の干渉を起こさない経路で前記つなぎジョブを生成してよい。
【００１１】
また、本発明の一の側面によるロボット動作指令生成方法では、前記コマンド定義にはロボット保持物情報が含まれており、前記つなぎジョブは、前記ロボット保持物情報に基づいて生成されてよい。
【００１２】
また、本発明の一の側面によるロボット動作指令生成方法では、あらかじめ記憶された前記単位ジョブの実行に要する時間と、前記つなぎジョブの実行に要する時間を合算して前記全体作業フローの実行に要する時間である全体作業時間を求めてよい。
【００１３】
また、本発明の一の側面によるロボット動作指令生成方法では、生成された前記つなぎジョブの動作シミュレーションを行い、当該つなぎジョブの実行に要する時間を求め、あらかじめ記憶された前記単位ジョブの実行に要する時間と、前記つなぎジョブの実行に要する時間を合算して前記全体作業フローの実行に要する時間である全体作業時間を求めてよい。
【００１４】
また、本発明の一の側面によるロボット動作指令生成方法では、生成された前記つなぎジョブの実行に要する時間を記憶してよい。
【００１５】
また、本発明の一の側面によるロボット動作指令生成方法では、少なくとも、前記作業コマンドの開始および終了時点における作業用機器及び前記ロボットの状態を示す状態情報を生成してよい。
【００１６】
また、本発明の一の側面によるロボット動作指令生成方法では、前記単位ジョブの開始および終了時点における作業用機器及び前記ロボットの状態を示す状態情報を生成してよい。
【００１７】
また、本発明の一の側面によるロボット動作指令生成方法では、少なくとも、前記作業コマンドの開始および終了時点における作業用機器及び前記ロボットの状態を示す状態情報を生成し、前記つなぎジョブは、前記状態情報に基づいて、モデル間の干渉を起こさない経路として生成されてよい。
【００１８】
また、本発明の一の側面によるロボット動作指令生成方法では、生成されたつなぎジョブを記憶し、連続する前記作業コマンドにおいて、先の作業コマンドの終了時点及び後の作業コマンドの開始時点における状態情報が、既に生成されたつなぎジョブについての状態情報と等しい場合には、記憶された当該つなぎジョブを用いてよい。
【００１９】
また、本発明の一の側面によるロボット動作指令生成方法では、連続する前記作業コマンドにおいて、先の作業コマンドの終了位置と後の作業コマンドの開始位置が等しい場合に、前記つなぎジョブの生成を省略するか、又は生成された前記つなぎジョブを破棄してよい。
【００２０】
また、本発明の一の側面によるロボット動作指令生成方法では、連続する前記単位ジョブにおいて、先の単位ジョブと後の単位ジョブが、互いに開始位置と終了位置を同じくし、作業位置のみオフセットしたものである場合に、先の単位ジョブに含まれる終了位置への移動指令と、後の単位ジョブに含まれる開始位置への移動指令を破棄してよい。
【００２１】
また、本発明の一の側面によるロボット動作指令生成方法では、前記単位ジョブには、ローカル座標系を指定する座標系指定指令と、当該ローカル座標系に基づく移動指令が含まれてよい。
【００２２】
また、本発明の別の一の側面によるロボット動作指令生成装置は、全体作業フローから、作業コマンドを抽出する作業コマンド抽出部と、コマンド定義データベースから、読み込まれた前記作業コマンドに対応するコマンド定義を抽出するコマンド定義抽出部と、読み込ませた前記作業コマンドを参照し、抽出された前記コマンド定義に基づいて、前記作業コマンドを１又は複数の順序の定まった単位ジョブのセットを生成する単位ジョブセット生成部と、複数の単位ジョブにおいて、先の単位ジョブの終了位置から、後の単位ジョブの開始位置へとロボットを動作させるつなぎジョブを生成するつなぎジョブ生成部と、前記単位ジョブ及び前記つなぎジョブが連続するロボット動作指令を生成するロボット動作指令生成部と、を有する。
【００２３】
また、本発明の一の側面によるロボット動作指令生成装置では、予め作成された複数の単位ジョブを記憶する単位ジョブ群記憶部を有し、前記ロボット動作指令生成部が前記ロボット動作指令を生成する際に、前記単位ジョブ群記憶部に記憶された単位ジョブを参照してよい。
【００２４】
また、本発明の一の側面によるコンピュータプログラムは、コンピュータを、上述のロボット動作指令生成装置として機能させる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施形態に係る処理システムの物理的な構成を示す概略図である。
【図２】本発明の実施形態に係る動作指令生成装置の物理的な構成を示すブロック図である。
【図３】本発明の実施形態に係る動作指令生成装置の機能ブロック図である。
【図４】本発明の実施形態に係る動作指令生成装置に取得されるプロトコルチャートの例を示す図である。
【図５】本発明の実施形態に係る動作指令生成装置により生成されるロボット動作指令の例の前半部分を示す図である。
【図６】本発明の実施形態に係る動作指令生成装置により生成される動作指令の例の後半部分を示す図である。
【図７】本発明の実施形態に係る動作指令生成装置により生成される動作指令の例の詳細を示す図である。
【図８】本発明の実施形態に係る状態データベースの内容例を示す図である。
【図９】本発明の実施形態に係る動作指令生成装置により参照される状態対応表の例の一部を示す図である。
【図１０】ロボットアームの動きを説明する図である。
【図１１】コマンド定義の例を示す概念図である。
【図１２】つなぎジョブ生成部にて実行されるつなぎジョブ生成のフロー図である。
【図１３】単位ジョブ群記憶部に記憶されている単位ジョブ群を模式的に示す図である。
【図１４】つなぎジョブ記憶部に記憶されたつなぎジョブを模式的に示す図である。
【図１５】メインラックに関するローカル座標系と、マイクロチューブに液剤を吐出する単位ジョブにおけるハンドの移動経路を示す図である。
【発明を実施するための形態】
【００２６】
図１は、本発明の実施形態に係る処理システム２００の物理的な構成を示す概略図である。処理システム２００は、ここで示した例では、生命科学における実験や、試料に対して施す処理をロボット３を用いて自動化したシステムである。処理システム２００に使用されるロボット３はここでは汎用品であり、ロボット３のアームを用いて、生命科学において一般に使用される種々の機器を人に代わって操作し、種々の複雑な操作を連続して行っていくように制御される。各操作では、試料に応じてなされる、熟練者による手技が高精度に再現される。
【００２７】
処理システム２００は、特定の実験や処理のみを実行するいわゆる専用機ではなく、種々の実験や処理に柔軟に対応できる汎用機としての性質を有している。そのため、処理システム２００には動作指令生成装置１が含まれ、動作指令生成装置１にプロトコルチャートを入力することで、動作指令生成装置１は自動的にロボット動作指令を生成し、ロボット３を制御し所望の動作をさせるようになっている。ここで、プロトコルチャートは、生命科学におけるいわゆるプロトコル（実験や処理の手順及び条件を記述したもの）を、人が認識でき、また記述の様式を共通化するべくチャートの形式で表現したものである。プロトコルチャートの具体的な形式は後述するが、プロトコルチャートには、処理対象に対する処理又は処理対象を収容した容器に対する処理をそれぞれ表し、処理順番が決定された複数の処理シンボルが含まれる。そして、複数の処理シンボルは、プロトコルに含まれる個々の処理を視覚的に表現したシンボルであり、処理シンボルの配置により個々の処理の手順が明示される。
【００２８】
なお、本実施形態では、処理システム２００を生命科学における実験や処理をする汎用のセルとして示したが、処理システム２００が適用される技術の分野は生命科学に限定されるものではない。ロボット３を用いて様々な処理に柔軟に対応できる自動機を用いることができるいかなる用途に用いてもよい。したがって、動作指令生成装置１は、処理システム２００が実行すべき全体の作業を示す全体作業フローが与えられると、かかる全体作業フローからロボット動作指令を生成するものである。また、全体作業フローには、作業コマンドが含まれる。ここで、先のプロトコルチャートは、生命科学の分野における、全体作業フローに相当する。また、作業コマンドは、ユーザがロボット３にさせようとする一作業を示すものであり、プロトコルチャートに含まれる処理シンボルは、作業コマンドに相当する。
【００２９】
したがって、以降の説明では、処理システム２００を生命科学における実験や処理をする汎用のセルとして例示している都合上、「プロトコルチャート」及び「処理シンボル」の語を用いるが、これは技術の分野を限定しない場合には、「全体作業フロー」及び「作業コマンド」と読み替えられる。また、プロトコルチャート及び処理シンボルの具体的記述方式として後述するものは、一つの例であり、プロトコルチャート及び処理シンボルはもちろん、全体作業フロー及び作業コマンドの記述形式を特定の形式に限定するものではない。
【００３０】
動作指令生成装置１自体は、専用の機器であってもよいが、ここでは一般的なコンピュータを使用して実現されている。すなわち、市販のコンピュータにおいて、当該コンピュータを動作指令生成装置１として動作させるコンピュータプログラムを実行することによりかかるコンピュータを動作指令生成装置１として使用する。かかるコンピュータプログラムは、一般にアプリケーションソフトウェアの形で提供され、コンピュータにインストールされて使用される。当該アプリケーションソフトウェアは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭその他のコンピュータ読み取り可能な適宜の情報記録媒体に記録されて提供されてよく、また、インターネット等の各種の情報通信ネットワークを通じて提供されてもよい。あるいは、情報通信ネットワークを通じて遠隔地にあるサーバによりその機能が提供される、いわゆるクラウドコンピューティングにより実現されてもよい。
【００３１】
処理システム２００は、動作指令生成装置１により生成された動作指令に基づき、少なくともロボット３を制御するロボット制御装置２を含む。ここで、ロボット制御装置２は、原則として、ロボット３の内部に原点を有するロボット座標系ＳＲを用いて、ロボット３の動作を規定し、制御する。本実施形態に係るロボット制御装置２は、ロボット３と一体となって設けられているが、ロボット３と別体に設けられてもよい。
【００３２】
ロボット３は、汎用の多関節ロボットである。ロボット３の形式は特に限定されず、垂直多関節型、水平多関節型、ガントリ型等用途（技術の分野）に応じた任意の形式でよく、また、同時設置数も任意である。本実施形態では、ロボット３は双腕垂直多関節型ロボットであり、コンパクトであると同時に、２本のロボットアームを有することにより、熟練した人が行う作業を高い精度で再現する。
【００３３】
ロボット３は、２本のロボットアームを用いて、処理対象又は処理対象を収容した容器に対する処理を行う。ロボット３は、ロボットアームによりピペットラック１０に収容されたピペット４を把持し操作する等、図示しあるいは図示しない実験器具を操作することができる。また、ロボット３は、ロボットアームによりチューブラック５ａに格納されたマイクロチューブ６を把持し、マイクロチューブ６をチューブラック５ａから恒温槽９、ボルテックスミキサー１１又は遠心分離器１２等へ移動させるなど、図示しあるいは図示しない各種容器を移動させることができる。本実施形態では、ロボット３は、ロボットアームによりピペット４を把持し、液剤を吸引又は注入する場合、チップラック７に用意されたチップ８をピペット４の先端に装着して作業を行う。チップ８は、原則として使い捨てされるものであり、使用済みのチップ８は、ダストボックス１３に廃棄される。恒温槽９には、液剤Ａと液剤Ｂが載置され、一定温度に保たれている。液剤Ａ及び液剤Ｂは、処理システム２００で行おうとする処理に必要な適宜のものを必要な種類及び量だけ用意すればよく、この例では、例えばリン酸緩衝食塩液や溶解バッファーである。
【００３４】
図１に示す例では、処理システム２００に恒温槽９と、ボルテックスミキサー１１と、遠心分離器１２とが含まれるが、これらは実験を行う場合に用いられる器具の一例であり、これらの器具に加えて又は換えて、他の器具が含まれてもよい。例えば、処理システム２００には、ペトリ皿を保管するラックや、マグネットラック等が含まれてもよい。
【００３５】
図２は、本発明の実施形態に係る動作指令生成装置１の物理的な構成を示すブロック図である。図２に示した構成は、動作指令生成装置１として用いられる一般的なコンピュータを示しており、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１ａ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１ｂ、静的記憶装置１ｃ、ＧＣ（Ｇｒａｐｈｉｃｓ  Ｃｏｎｔｒｏｌｌｅｒ）１ｄ、入力デバイス１ｅ及びＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）１ｆがデータバス１ｇにより相互に電気信号のやり取りができるよう接続されている。ここで、静的記憶装置１ｃはＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の静的に情報を記録できる装置である。またＧＣ１ｄからの信号はフラットパネルディスプレイ等の、使用者が視覚的に画像を認識するモニタ１ｈに出力され、画像として表示される。入力デバイス１ｅはキーボードやマウス、タッチパネル等の、ユーザが情報を入力するための機器であり、Ｉ／Ｏ１ｆは動作指令生成装置１が外部の機器と情報をやり取りするためのインタフェースである。
【００３６】
図３は、本発明の実施形態に係る動作指令生成装置１の機能ブロック図である。なお、ここで示した機能ブロックは、動作指令生成装置１等が有する機能に着目して示したものであり、必ずしも各機能ブロックに１対１に対応する物理的構成が存在するとは限らない。いくらかの機能ブロックは動作指令生成装置１のＣＰＵ１ａ等の情報処理装置が特定のソフトウェアを実行することにより実現され、またいくらかの機能ブロックは動作指令生成装置１のＲＡＭ１ｂや静的記憶装置１ｃ等の情報記憶装置に特定の記憶領域が割り当てられることにより実現されてよい。
【００３７】
動作指令生成装置１は、全体作業フロー取得部２０を有しており、全体作業フロー取得部２０により取得されたプロトコルチャートに基づいて、ロボット動作指令を生成する。本実施形態では、全体作業フローは、プロトコルチャートである。プロトコルチャートは、プロトコルチャートを示す電子ファイルを読み込むことによって取得されても、また、動作指令生成装置１の入力デバイス１ｅを用いてユーザにより入力されることによって取得されてもよい。後者の場合、動作指令生成装置１は、同時にプロトコルチャートの作成および編集機能をも備えていることとなり、実際かかる機能を備えるものとしてよいが、かかる機能は本発明を説明する上で重要ではないため、本明細書ではその詳細な説明は書略する。
【００３８】
ここで、ロボット動作指令とは、プロトコルチャートに記述された、処理システム２００が全体として実現すべき一連の作業をロボット３が実行するために、ロボット３に与えられる命令群である。言い換えれば、プロトコルチャートは人がプロトコルを理解できるように記述されたものであるのに対し、ロボット動作指令は、ロボット３がプロトコルを実行できるように記述されたものともいえ、動作指令生成装置１は、人が見て理解できるプロトコルチャートを、ロボット３が実行できるロボット動作指令に変換する装置であるということもできる。
【００３９】
ロボット動作指令には、単位ジョブとつなぎジョブが含まれる。ここで、単位ジョブは、ロボット３の基本的な一動作命令を示すものであって、開始位置と終了位置が定義されている。ここで、基本的な一動作命令とは、必ずしもロボット制御装置２が認識し実行する一命令（ニーモニック）には対応せず、ロボット３の動作としてひとまとまりと考えられる単位を示す。一動作命令の中には複数のニーモニックが含まれてよく、当然にロボットの複数の単位動作が含まれてもよいが、ひとまとまりの動作をそれら単位動作に分解して任意に組み合わせることは不適当である。例えば、「容器をつかむ」という単位ジョブは、ロボットアームを対象容器の位置まで移動させ、ハンドを動作させて指で容器をはさむ、という複数の単位動作を含むが、これらを分解して、単にロボットアームを対象容器の位置まで移動させるだけの単位動作や、何もないところでハンドを動作させて指で挟むような単位動作には意味がないから、これらは一動作命令とは言えず、単位ジョブを構成しない。
【００４０】
なお、ここでいう開始位置と終了位置は、ロボット３の各関節の位置、すなわち、各モータの回転角のベクトル量を示しており、その実際上の意味は、ロボット３の姿勢である。すなわち、開始位置は、動作開始時のロボット３の姿勢を意味し、終了位置は、動作終了時のロボット３の姿勢を意味している。
【００４１】
つなぎジョブは、単位ジョブ間のロボット３の位置（すなわち、姿勢）の違いを吸収する動作であり、より具体的には、先の単位ジョブの終了位置から後の単位ジョブの開始位置までロボットを移動させる（姿勢を変化させる）ための、単一または複数の移動命令の集合である。ロボット動作指令は、この単位ジョブと、つなぎジョブが順序付けられ、実行されることで、ロボット３が新たな軌道の生成や補完をすることなく、切れ目なく連続して動作できるように構成される。
【００４２】
動作指令生成装置１の外部記憶装置１ｃには、記憶領域として、コマンド定義データベース１ｃａ、単位ジョブ群記憶部１ｃｂ、状態情報データベース１ｃｃ、つなぎジョブ記憶部１ｃｄ、作業モデル記憶部１ｃｅ及びロボット動作指令記憶部１ｃｆが割り当てられている。さらに、動作指令生成装置１は、ロボット動作指令を生成し、また、全体作業時間を予測するための種々の機能を有しており、各機能は図３では機能ブロックとして示されている。ここでは、全体作業フロー取得部２０に加え、作業コマンド抽出部２１、コマンド定義抽出部２２、単位ジョブセット生成部２３、状態情報生成部２４、つなぎジョブ生成部２５、つなぎジョブシミュレータ２６、ロボット動作指令生成部２７、ロボット動作指令表示部２８及びロボット動作指令出力部２９に加え、全体作業時間予測部３０及び全体作業時間表示部３１が示されている。
【００４３】
各機能ブロックの動作の詳細は、後ほど動作指令生成装置１の全体動作の説明をする際に併せて説明するので、ここでは、各機能ブロックの機能の概要を説明する。
【００４４】
全体作業フロー取得部２０は、全体作業フローを外部から取得する。ここでは、全体作業フローはプロトコルチャートであり、すでに述べたとおり、プロトコルチャートを示す電子データを取得することによっても、ユーザからの入力によりプロトコルチャートを取得することによってもよい。
【００４５】
作業コマンド抽出部２１は、全体作業フロー取得部２０から全体作業フローを受け取り、全体作業フローに含まれる作業コマンドをその実行順に抽出する。この場合、プロトコルチャートに含まれる処理シンボルを、プロトコルチャートの解釈ルールに従って、実行純に抽出する。
【００４６】
コマンド定義抽出部２２は、作業コマンド抽出部２１から作業コマンドを受け取り、当該作業コマンドに対応するコマンド定義をコマンド定義データベース１ｃａから抽出する。コマンド定義は、作業コマンド毎に使用する単位ジョブの順序及び組み合わせを１又は複数定義するものである。ここでは、処理シンボル毎にどの組み合わせるべき単位ジョブと、その順番が定義されているものとなる。
【００４７】
単位ジョブセット生成部２３は、コマンド定義抽出部２２から、作業コマンドとコマンド定義を受け取り、コマンド定義に定義された順序及び組み合わせに基づいて、単位ジョブ群記憶部１ｃｂに記憶された単位ジョブを呼び出し、ロボット制御装置３が実行できる命令のセットである、単位ジョブのセットを生成する。このとき、コマンド定義により定まる単位ジョブのセットは、コマンド定義と１対１には必ずしも対応しない。すなわち、同じコマンド定義を用いても、異なる単位ジョブのセットが生成されることが有り得る。
【００４８】
これは、コマンド定義には、順序付けられ、実行される単位ジョブを示す情報のほか、条件分岐など、実行される単位ジョブを変化させる制御情報が含まれるためである。そして、単位ジョブセット生成部２３は、コマンド定義のパラメータなどの引数と、状態情報データベース１ｃｃに記録された、処理システム２００の状態情報を適宜参照し、制御情報に基づいて、実行すべき単位ジョブとその順序を決定し、単位ジョブのセットを生成する。
【００４９】
また、状態情報生成部２４は、単位ジョブセット生成部２３により生成された単位ジョブのセットに基づいて、処理システム２００の状態、すなわち、作業用機器及びロボット３の状態を示す状態情報を生成する。より具体的には、状態情報には、作業用機器であるマイクロチューブの蓋が開いているのか閉まっているのか、また内容物として何がどれだけの量入っているのか、またラックのどの位置にどのマイクロチューブが収容され、あるいは収容されていないのか、さらには、ロボット３の姿勢はどのようなものであり、ロボットハンドにはどのような器具が把持され、あるいは把持されていないのか、といった、処理システム２００の状態を知るために必要な情報が含まれる。
【００５０】
すなわち、全体作業フローにおけるある時点での状態情報を参照すれば、その時点までに作業がどれだけ進んでいるのかが把握できる。そして、この状態情報は、全体作業フローに基づいて、ロボット３の動作による処理がなされれば、処理システム２００に生じるであろう変化から、順次生成される。そのため、状態情報生成部２４は、少なくとも、作業コマンドの開始及び終了時点における作業用機器及びロボット３の状態を示す状態情報を生成する。こうすれば、特定の作業コマンドの前後における処理システム２００の状態が把握でき、全体作業フローを途中で中断する等の際にも、適切な対応をとることができる。さらに、本実施形態では、状態情報生成部２４は、各単位ジョブの開始及び終了時点における作業用機器及びロボット３の状態を示す状態情報を生成する。これにより、処理システム２００の状態をよりきめ細かく把握することができ、処理システム２００の動作中に不測の事態により緊急停止がなされたなどの場合にも、その後の適切な対応をとることが容易となる。
【００５１】
生成された状態情報は、状態情報データベースに逐次記憶され、蓄積される。蓄積された状態情報は、前述の通り、単位ジョブセット生成部２３にて制御情報に基づいて、実行すべき単位ジョブとその順序を決定する際に使用されるほか、任意の時点における処理システム２００の状態を知ることができる情報として、外部から参照される。
【００５２】
つなぎジョブ生成部２５は、連続する複数の単位ジョブ間において、先の単位ジョブの終了位置から、後の単位ジョブの開始位置へとロボットを移動させるつなぎジョブを生成する。つなぎジョブは、先の単位ジョブの終了位置から後の単位ジョブの開始位置までロボットを移動させる移動命令の集合である。単位ジョブと単位ジョブの間でつなぎジョブが実行されることにより、ある単位ジョブを作成する際に、他の単位ジョブとの位置関係を意識することなく、作成しようとする単位ジョブを単体で独立して作成することができ、単位ジョブの作成における生産性が向上する。つなぎジョブは自動で必要な分だけ生成されるから、多数の単位ジョブ間をつなぐあらゆる組み合わせについてつなぎジョブを生成しておく必要はなく、手間及び容量が軽減される。
【００５３】
なお、つなぎジョブは、必ずしも、単純に先の単位ジョブの終了位置から、後の単位ジョブの開始位置までを最短でつなげばよいわけではない。作業用機器の配置や、ロボット３の姿勢により、干渉しない経路でロボット３の姿勢を変化させる必要がある。そのため、つなぎジョブ生成部２５は、作業モデル記憶部１ｃｅに記憶されている作業モデルを参照して、モデル間の干渉を起こさない経路を生成し、かかる経路に沿ってロボット３を移動させる移動命令の集合としてつなぎジョブを生成する。ここでいう作業モデルは、処理システム２００を仮想空間内で立体モデルとして定義したものであり、ロボット３や、使用される各種の作業用機器がモデル化され、配置される。さらに、作業モデルは状態情報データベース１ｃｃから得られる状態情報（蓋が閉まっているまたは蓋が開いているなど）に対応した形態の立体モデルとなっており、つなぎジョブを生成する際にはそのときの状態情報に応じた形態の作業モデルを参照するようになっている。
【００５４】
作業用機器の中には、電動ピペットなど、ロボット３のハンドに保持されて使用される機器も含まれる。そして、ロボット３の移動経路として、他の機器との干渉をおこさない経路が都のようなのとなるかは、ロボット３のハンドが保持する作業用機器に依存する。そこで、本実施形態では、コマンド定義中に、対応する作業コマンドの実行中にロボット３が保持する作業用機器を示すロボット保持物情報が含まれている。したがって、つなぎジョブ生成部２５がつなぎジョブを生成するにあたっては、このロボット保持物情報を参照することにより、ロボット３に保持される作業用機器を含め、機器間の干渉を生じないようなつなぎジョブを生成することができる。
【００５５】
生成されたつなぎジョブは、つなぎジョブ記憶部１ｃｄに記憶される。また、つなぎジョブ生成部２５は、一度生成されたつなぎジョブと全く同じつなぎジョブを重複して生成することはしない。すなわち、連続する作業コマンドあるいは単位ジョブの開始及び終了時点における状態情報が、すでに生成されたつなぎジョブについての状態情報と等しい場合には、生成されるべきつなぎジョブはすでに生成されたものと同じとなるため、新たにつなぎジョブを生成することはせず、つなぎジョブ記憶部１ｃｄに記憶されたつなぎジョブを呼び出すことにより、つなぎジョブの生成に要する負荷を軽減する。
【００５６】
生成されたつなぎジョブは、つなぎジョブシミュレータ２６において、仮想空間内でロボット３及び作業用機器の動作シミュレーションが行われる。この時、ロボット３及び作業用機器間の干渉がないことの確認と、つなぎジョブの実行に要する時間が求められる。干渉がなく、つなぎジョブに問題がなければ、つなぎジョブの実行に要する時間はそのつなぎジョブに紐づけられて、つなぎジョブ記憶部１ｃｄに記憶される。
【００５７】
こうして得られた単位ジョブのセットとつなぎジョブを、ロボット動作指令生成部２７が所定の順序で直列に接続して、ロボット動作指令が生成される。得られたロボット動作指令は、ロボット動作指令記憶部１ｃｆに記憶される。
【００５８】
ロボット動作指令記憶部１ｃｆに記憶されたロボット指令は、ユーザからの適宜の指示等に応じ、ロボット動作指令表示部２８により、モニタ１ｈ上に適宜の形式で表示される。また、ユーザからの適宜の指示等に応じ、ロボット動作指令出力部２９により、ロボット制御装置２に出力され、ロボット動作指令に従ってロボット３が動作することによって、処理システム２００における、全体作業フローに記述された通りの作業が実行される。
【００５９】
なお、つなぎジョブ記憶部１ｃｄに記憶されたつなぎジョブには、つなぎジョブシミュレータ２６のシミュレーション結果として得られたつなぎジョブの実行時間が紐づけられ記憶されているが、同様に、単位ジョブ群記憶部１ｃｂに記憶された各単位ジョブには、それぞれその単位ジョブの実行時間が紐づけられ記憶されている。この単位ジョブの実行時間は、あらかじめ、つなぎジョブと同様にシミュレーションにより求めておいてもよいし、実際にロボット３に単位ジョブを実行させ、その実行に要した実時間を計測により求めておいてもよい。
【００６０】
そして、全体作業時間予測部３０は、ロボット動作指令記憶部１ｃｆに記憶されたロボット動作指令について、当該ロボット動作指令に含まれる単位ジョブの実行に要する時間とつなぎジョブの実行に要する時間を合算して、全体作業フローの実行に要する時間である全体作業時間を求める。全体作業時間は、全体作業フローに従った作業を処理システム２００で実行させた際に要する時間の予測値である。
【００６１】
全体作業時間表示部３１は、全体作業時間予測部３０より全体作業時間を受け取り、モニタ１ｈに表示する。こうすることで、実際に処理システム２００を用いてロボット３を動作させることなく、あらかじめ、全体作業フローの実行に要する時間を実用上十分な精度で予測することができ、処理システム２００で期間内に処理できる作業数の見積もりや、処理を開始時刻の設定、終了時刻の予測が可能となり、効率的な実行計画の立案が容易となる。
【００６２】
図４は、本発明の実施形態に係る動作指令生成装置１に取得されるプロトコルチャートの例を示す図である。ここで示すプロトコルチャートは、処理対象又は処理対象を収容した容器に対する処理を表す処理シンボル１０３を、処理の手順がわかるよう配置したチャートである。なお、処理対象は、ここでは生命科学の実験や検査などの処理の対象となる材料であり、細胞やＤＮＡ等の生体組織の一部であることが多い。また、処理対象は実験に適した器具、例えば、マイクロチューブ６、ペトリ皿やマイクロプレート等に収容された状態で処理がなされるが、本明細書では、これらの器具を単に容器と呼ぶ。
【００６３】
本例のプロトコルチャートは、処理対象を収容する容器ごとに、その初期状態を示す初期シンボル１００をチャートの上に、その最終状態を示す最終シンボル１０１をチャートの下に配置して、両者を順序線１０２で接続している。順序線１０２は、上から下への処理の手順を示しており、順序線１０２上に配置された処理シンボル１０３は、この順序で該当する容器に対してなされる処理を表している。
【００６４】
図４に示す例では、「Ｔｕｂｅ」と記載された初期シンボル１００、最終シンボル１０１及び両者を接続する順序線１０２からなる組が記載されている。ここで、順序線１０２は矢線で示されており、処理が行われる順序を明示している。また、初期シンボル１００自体もまた、容器を用意するという処理を示し、最終シンボル１０１もまた、容器を収容又は廃棄するという処理を示すので、本例のプロトコルチャートでは、はじめに「Ｔｕｂｅ」と記載された初期シンボル１００が表す処理を行い、その後順序線１０２に対して追加線１０４で接続された「ＡＤＤ」と記載された処理シンボル１０３が表す処理を行い、次に「ＣＥＮＴＲＩＦＵＧＥ」と記載された処理シンボル１０３が表す処理を行い、最後に「Ｔｕｂｅ」と記載された最終シンボル１０１が表す処理を行うことを意味する。また、本例のプロトコルチャートは、「×２」と表示された容器数シンボル１０５を含む。容器数シンボル１０５は、初期シンボル１００で指定される容器を、２つ用意し、以降の処理を２つの容器それぞれについて行うことを表す。
【００６５】
初期シンボル１００は、「Ｔｕｂｅ」すなわちマイクロチューブ６を、「Ｔｕｂｅ  Ｒａｃｋ」すなわちチューブラック５ａから作業場所であるメインラック５ｂに移送する処理を表す。ここで、チューブラック５ａは、マイクロチューブの保管場所あるいは退避場所となっており、メインラック５ｂは、種々の器具を用いて具体的にマイクロチューブ６に処理を行うべき場所である。「ＡＤＤ」と記載された処理シンボル１０３は、マイクロチューブ６に対して、「ｓｏｌｕｔｉｏｎ  Ａ」すなわち液剤Ａを「１００［μｌ］」加える処理を表す。「ＣＥＮＴＲＩＦＵＧＥ」と記載された処理シンボル１０３は、マイクロチューブ６を遠心分離器１２にセットして、「３［ｍｉｎ］」の遠心分離を行う処理を表す。また、最終シンボル１０１は、マイクロチューブ６を、チューブラック５ａに移送する処理を表す。
【００６６】
図５は、本発明の実施形態に係る動作指令生成装置１により生成されるロボット動作指令の例の前半部分を示す図であり、図６は、本発明の実施形態に係る動作指令生成装置１により生成されるロボット動作指令の例の後半部分を説明する図である。図５及び６にて説明されるロボット動作指令は、図４に示すプロトコルチャートに基づき、本実施形態に係る動作指令生成装置１により生成されるロボット動作指令である。
【００６７】
ロボット動作指令は、１本目のマイクロチューブ６をチューブラック５ａからメインラック５ｂに移送する単位ジョブのセット（Ｓ１０１）から始まり、２本目のマイクロチューブ６をチューブラック５ａからメインラック５ｂに移送する単位ジョブのセット（Ｓ１０２）が続く。マイクロチューブ６をメインラック５ｂに移送する単位ジョブのセットは、図４に示すプロトコルチャートの初期シンボル１００に基づいて生成される。また、初期シンボル１００に関連付けられた容器数シンボル１０５に基づいて、２本のマイクロチューブ６について、チューブ１に関する単位ジョブ（Ｓ１０１）、チューブ２に関する単位ジョブ（Ｓ１０２）の順で単位ジョブが生成される。なお、ここでは、単位ジョブ（Ｓ１０１）及び単位ジョブ（Ｓ１０２）は、それぞれ単独の単位ジョブで単位ジョブのセットを構成している。
【００６８】
図７は、本発明の実施形態に係る動作指令生成装置１により生成されるロボット動作指令の例の詳細を示す図である。同図では、１本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０１）と、２本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０２）とについて、単位ジョブに含まれるコマンド５０と、コマンド５０において参照される対象５１及び引数５２を示している。単位ジョブは、ロボット３に一又は複数の単位動作を行わせ、先頭に単位動作である開始位置への移動命令を含み、末尾に単位動作である終了位置への移動命令を含む。
【００６９】
１本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０１）は、マイクロチューブ６を作業場所であるメインラック５ｂに移送するという一動作をロボット３に行わせるジョブである。当該単位ジョブは、コマンド５０として、先頭と末尾に「ＭＯＶＥ」という移動命令を有する。具体的には、先頭の「ＭＯＶＥ」コマンド５０は、対象５１が「ＴＵＢＥ＿ＲＡＣＫ」（チューブラック５ａ）であり、引数５２が「−」（無し）であって、ロボットアームを開始位置であるチューブラック５ａの位置に移動させる。また、「ＧＥＴ」コマンド５０は、対象５１が「ＴＵＢＥ」（マイクロチューブ６）であり、引数５２が「１」であって、１本目のマイクロチューブ６をロボットアームのハンドで把持する。続く「ＭＯＶＥ」コマンド５０は、対象５１が「ＭＡＩＮ＿ＲＡＣＫ」（メインラック５ｂ）であり、引数５２が「−」（無し）であって、ハンドにマイクロチューブ６を把持したロボットアームを終了位置であるメインラック５ｂの位置に移動させる。
【００７０】
なお、ロボットアームについて、特定の作業用機器の位置という場合には、当該作業用機器の近傍であって、ロボットアームを用いてかかる作業用機器に対する各種の操作をするのに適した基準となる位置を指している。例えば、上述のチューブラック５ａの位置とは、例えば、チューブラック５ａの上方であって、ハンドやハンドに把持された物品がチューブラック５ａやチューブラック５ａに載置されたマイクロチューブ６と干渉しない程度の距離を開けた位置が適している。その他の作業用機器についても同様に、適した基準となる位置が定められる。
【００７１】
さらに、「ＰＵＴ」コマンド５０は、対象５１が「ＴＵＢＥ」（マイクロチューブ６）であり、引数５２が「１」であって、ロボットアームのハンドに把持された１本目のマイクロチューブ６をメインラック５ｂに置く。１本目のマイクロチューブ６は、引数５２に従って、メインラック５ｂの１番目の穴に置かれる。最後に、末尾の「ＭＯＶＥ」コマンド５０は、対象５１が「ＭＡＩＮ＿ＲＡＣＫ」（メインラック５ｂ）であり、引数５２が「−」（無し）であって、ロボットアームをメインラック５ｂの位置に移動させる。
【００７２】
２本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０２）は、先ほどとは異なるマイクロチューブ６を作業場所であるメインラック５ｂに移送するという一動作をロボット３に行わせる単位ジョブである。その詳細は、１本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０１）と、「ＧＥＴ」コマンド５０及び「ＰＵＴ」コマンド５０の引数５２が「２」である点で相違する。この相違は、２本目のマイクロチューブ６をハンドで把持し、メインラック５ｂに置くという相違を意味しており、マイクロチューブ６が置かれるメインラック５ｂの穴も、引数５２に応じて先ほどとは異なる２番目の穴に置かれるため、２本目のマイクロチューブが１本目のマイクロチューブと干渉することはない。「ＭＯＶＥ」コマンド５０については、１本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０１）と同様である。
【００７３】
図４に示すプロトコルチャートの例から生成される動作指令では、初期シンボル１００に容器数シンボル１０５が付随しているため、繰り返し実行される単位ジョブに引き渡される引数は同じ初期シンボル１００や最終シンボル１０１、処理シンボルについての単位ジョブであっても異なる。このように、各シンボルに対し引き渡される引数は、単位ジョブセット生成部２３が単位ジョブのセットを生成する際に、実値として生成し用いられる。
【００７４】
すなわち、作業フローの実行中に変化する引数は、ロボット動作指令に含まれる単位ジョブ上では実値としてあらかじめ与えられ、作業フローの実行中に変化する変数を参照するものとしては生成されない。これにより、後述する状態情報生成部２４において状態情報を生成する際に、処理システム２００の状態を一意に決定できる。
【００７５】
なお、本実施形態に係る動作指令作成装置１では、生成されるロボット動作指令に含まれる単位ジョブの引数として、変数を用いることは必ずしも排除されない。作業フローの実行中に動的に変化しないパラメータは、変数を参照して差し支えない。そのようなパラメータとしては、例えば、基準点の位置などが挙げられる。
【００７６】
１本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０１）の最後は、ロボットアームを単位ジョブのセットの終了位置であるメインラック５ｂの位置に移動させる「ＭＯＶＥ」コマンド５０である。そして、２本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０２）の先頭は、ロボットアームを単位ジョブの開始位置であるチューブラック５ａの位置に移動させる「ＭＯＶＥ」コマンド５０である。したがって、先の単位ジョブ（Ｓ１０１）の終了後、後の単位ジョブ（Ｓ１０２）が開始されると、ロボットアームは、メインラック５ｂの位置からチューブラック５ａの位置に移動することとなる。
【００７７】
このように、単位ジョブの先頭と最後には、それぞれ開始位置への移動命令と終了位置への移動命令が含まれており、ロボット制御装置２は、直列に接続された単位ジョブを順番に実行することで、ロボット３に所望の動作をさせることができる。
【００７８】
本実施形態に係る動作指令生成装置１によれば、単位ジョブを直列に順序付けられたものとしてロボット動作指令が生成されるため、ロボット制御装置２において条件分岐の判断やループの判断等が行われず、複雑な処理であっても、ロボット制御装置２における負荷が小さく、高速に実行される。また、無限ループなどのプログラムミスによる誤動作はあらかじめ排除される。さらに、詳細は後述するが、本実施形態に係る動作指令生成装置１によって生成されたロボット動作指令は、先の単位ジョブの内容に依存して後の単位ジョブの内容が変動することがないため、その実行に要する時間の推定が容易である。
【００７９】
図７には、さらに、状態情報が状態情報生成部２４により生成され、状態情報データベース１ｃｃに記録されることが示されている。状態情報生成部２４は、少なくとも、作業コマンドの開始および終了時点における作業用機器及びロボット３の状態を示す状態情報を生成するが、本実施形態では、状態情報生成部２４は、単位ジョブの開始および終了時点における作業用機器及びロボット３の状態を示す状態情報を生成し、状態情報データベース１ｃｃに記録する。
【００８０】
ここで、１本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０１）の開始時点の状態は、最初の「ＭＯＶＥ」コマンド５０により開始位置であるチューブラック５ａの位置に移動した状態である。このロボット３の状態を、他の作業用機器の状態と合わせて記述した状態情報６０ｂが状態情報データベース１ｃｃに記録される。
【００８１】
また、１本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０１）の終了時点の状態は、最後の「ＭＯＶＥ」コマンド５０により終了位置であるメインラック５ｂの位置に移動した状態である。このロボット３の状態を、他の作業用機器の状態と合わせて記述した状態情報６０ｃが状態情報データベース１ｃｃに記録される。
【００８２】
なお、状態情報データベース１ｃｃには、処理システム２００の初期状態があらかじめ状態情報６０ａとして与えられている。状態情報生成部２４は、新たな状態情報を生成する際に、１つ前の状態情報を参照して、そこから変化した部分を更新して新たな状態情報を生成してよい。例えば、状態情報６０ｂを生成する際には、状態情報６０ａに対し、作業用機器の状態は変化せず、ロボット３の位置のみが変化するから、状態情報６０ａのロボットの位置をチューブラック５ａの位置に更新すればよい。なお、２つ目以降の状態情報は、１つ前の状態情報に対する差分として状態情報データベース１ｃｃに記録されてもよい。
【００８３】
状態情報に記録される作業用機器は、処理システム２００の状態を把握する上で必要な機器が全て含まれてよい。作業用機器には、ロボット３がロボットアームのハンドで操作する機器の他、有線通信又は無線通信によって、ロボット制御装置２により制御される機器を含む。例えば、ピペット４は、手動ピペットである場合には、ロボットアームのハンドで操作される機器である。また、電動ピペットは、無線通信可能である場合には、ロボット制御装置２との通信により制御される機器であり、ロボット３が操作する機器に含まれる。図１に示す例では、ピペット４、チューブラック５ａ、メインラック５ｂ、マイクロチューブ６、チップラック７、チップ８、恒温槽９、ピペットラック１０、ボルテックスミキサー１１及び遠心分離器１２は、作業用機器に該当する。
【００８４】
本実施形態に係る状態情報生成部２４は、単位ジョブの開始時点と終了時点において状態情報を生成するが、単位ジョブに含まれる他の単位動作ごとに状態情報を生成してもよい。さらに、状態情報は、単位動作ごと、あるいは、ロボット制御装置で実行されるニーモニックごとに生成してもよい。より細かく状態情報を生成すれば、よりきめ細かく処理システム２００の状態を把握できるが、それに伴い、状態情報データベース１ｃｃに必要な容量も増大する。
【００８５】
図８は、本発明の実施形態に係る状態情報データベース１ｃｃの内容例を示す図である。状態情報データベース１ｃｃは、作業用機器及びロボット３の状態を記述した状態情報６０と、状態情報６０で用いられる値について、その意味をまとめた状態対応表６１とを含む。状態情報６０としては、図７に示した状態情報６０ａ〜６０ｅが例示されている。状態情報６０ａは、処理システム２００の初期状態を表す。状態情報６０ｂ、６０ｃはそれぞれ、１本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０１）の開始位置と終了位置における、作業用機器とロボット３の状態であり、開始位置及び終了位置への移動命令である「ＭＯＶＥ」コマンド５０の実行後の状態を示している。状態情報６０ｄ、６０ｅはそれぞれ、２本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０２）の開始位置と終了位置における、作業用機器とロボット３の状態であり、開始位置及び終了位置への移動命令である「ＭＯＶＥ」コマンド５０の実行後の状態を示している。
【００８６】
図９は、本発明の実施形態に係る動作指令生成装置１により参照される状態対応表６１の例の一部を示す図である。状態対応表６１は、ロボット３のハンドや、処理システム２００で用いられる作業用機器について、それぞれの状態を示す値の意味、すなわち、かかる値によって指示される状態を示している。第１の状態対応表６１ａはロボット３のハンドの状態について、値の意味を示すものである。同様に、第２の状態対応表６１ｂは恒温槽９の、第３の状態対応表６１ｃはピペットラック１０の、そして第４の状態対応表６１ｄは遠心分離器１２の状態について、値の意味を示している。状態対応表６１はその状態が状態情報として記録される作業用機器について用意され、この状態対応表６１を参照することにより、任意の状態情報が意味する処理システム２００の状態を把握できる。
【００８７】
第１の状態対応表６１ａは、ロボット３のハンドに何も把持されていない場合を符号「０」で表し、マイクロチューブ６が把持されている場合を符号「１」で表し、チップ８が装着されていないピペット４が把持されている場合を符号「２」で表し、チップ８が装着されたピペット４が把持されている場合を符号「３」で表すことを示している。ピペット４にチップ８が装着されている場合と、装着されていない場合とでは、ハンドにピペット４を把持した場合におけるピペット４（又はチップ８）と他の機器との干渉範囲が異なる。そのため、両者は区別されている。
【００８８】
第２の状態対応表６１ｂは、恒温槽９のドアが閉まっている場合を符号「０」で表し、恒温槽９のドアが開いている場合を符号「１」で表すことを示している。恒温槽９のドアが閉まっているか、開いているかによって、他の機器との干渉範囲が異なるため、両者は区別されている。
【００８９】
第３の状態対応表６１ｃは、ピペットラック１０に全てのピペット４が収容されている場合を符号「０」で表し、ピペットラック１０から第１のピペット（ロボット３から見て最も左側に収容されるピペット４）が持ちだされている場合を符号「１」で表し、ピペットラック１０から第２のピペット（中央に収容されるピペット４）が持ちだされている場合を符号「２」で表し、ピペットラック１０から第３のピペット（ロボット３から見て最も右側に収容されるピペット４）が持ちだされている場合を符号「３」で表すことを示している。ピペットラック１０からいずれのピペット４が持ちだされているかによって、他の機器との干渉範囲が異なるため、それぞれの場合が区別されている。
【００９０】
第４の状態対応表６１ｄは、遠心分離器１２の蓋が開いて停止中である場合を符号「０」で表し、遠心分離器１２の蓋が閉まって停止中である場合を符号「１」で表し、遠心分離器１２の蓋が閉まって動作中である場合を符号「２」で表すことを示している。遠心分離器１２の蓋が開いているか否かによって他の機器との干渉範囲が異なるため、両者は区別されている。また、遠心分離器１２の蓋が閉まっていても、動作中であるか否かによって遠心分離器１２に対し許容される操作に違いが生じるため区別されている。
【００９１】
なお、これら状態対応表６１は、必ずしも状態情報データベース１ｃｃに記録されている必要はなく、ユーザが参照可能な任意の場所に記録されているか、あるいは印刷物としてユーザの手元に用意しておいてもよい。
【００９２】
図８には、動作指令生成装置１により順次生成され、状態情報データベース１ｃｃに記録されていく状態情報６０が模式的に示されている。処理システム２００の初期状態を示す状態情報６０ａは、状態情報生成部２４により生成されても、あらかじめ所与のものとして用意されていてもよい。そして、図７に示したように、本実施形態では、各単位ジョブの開始時点と終了時点において、状態情報６０が次々と生成され、記録されていく。そして、単位ジョブの先頭には開始位置への移動命令が、末尾には終了位置への移動命令が含まれるから、結局、状態情報６０は、各単位ジョブについて、開始位置への移動直後のロボット３と作業用機器の状態と、終了位置への移動直後のロボット３と作業用機器の状態が状態情報６０として状態情報データベース１ｃｃに記録され、蓄積されていくこととなる。
【００９３】
例えば、図８に示した初期状態を示す状態情報６０ａでは、ハンド右、ハンド左、恒温槽、ピペットラック、遠心分離器の項の値がすべて０である。そして、図９に示した状態対応表６１を参照すれば、作業用機器の状態が把握できる。すなわち、ロボット３の左右のロボットアームに備えられたハンドには、いずれも何も把持されておらず、恒温槽９のドアは閉まっており、ピペットラック４にはすべてのピペットが収容され、そして遠心分離器１２は蓋が開いた状態で、動作を停止していることがわかる。また、ロボット３の状態としては、その姿勢が状態情報６０に記録されてよい。
【００９４】
図５及び６に戻り、単位ジョブセット生成部２３は、「ＡＤＤ」と記載された処理シンボル１０３が表す単位ジョブのセットを生成する。「ＡＤＤ」は、ここでは、マイクロチューブに液剤Ａをそれぞれ１００μｌ加える処理であるが、この処理は、ロボットアームでピペットラック１０からピペット４を把持し取り出し、さらにピペット４の先端にチップを装着し、当該ピペット４で液剤を規定量吸引し、さらに当該ピペット４で、メインラック５ｂに置かれたマイクロチューブそれぞれに規定量の液剤を吐出した後、チップを破棄、ピペット４をピペットラック１０に戻す、という複数の動作からなる。そのため、「ＡＤＤ」と記載された処理シンボル１０３が表す単位ジョブのセットは、複数の単位ジョブからなり、この例では、対象となるマイクロチューブの本数が２本であるため、７つの単位ジョブから構成されることとなる。
【００９５】
この「ＡＤＤ」と記載された処理シンボル１０３が表す単位ジョブのセットは、まずは、第１のピペット４をロボットアームの右側のハンドに把持する単位ジョブ（Ｓ３０１）から始まる。そして、第１のピペット４にチップ８を装着する単位ジョブ（Ｓ４０１）、チップ８を装着済みの第１のピペット４を用いて、液剤Ａを２００μｌ吸引する単位ジョブ（Ｓ５０１）、さらに第１のピペット４を用いて、チューブ１に液剤Ａを１００μｌ吐出する単位ジョブ（Ｓ６０１）と、チューブ２に液剤Ｂを１００μｌ吐出する単位ジョブ（Ｓ６０２）、第１のピペット４先端に装着されたチップ８を破棄する単位ジョブ（Ｓ７０２）が続き、第１のピペット４をピペットラック１０に返却する単位ジョブ（Ｓ３０２）にて終了する。なお、図５及び６に示されているように、単位ジョブと単位ジョブの間には、つなぎジョブ（Ｓ２０１〜Ｓ２０７）が挿入される場合があるが、これは、単位ジョブのセットの生成後、続けて生成され挿入される。つなぎジョブについては後述する。
【００９６】
第１のピペット４をロボットアームの右側のハンドに把持する単位ジョブ（Ｓ３０１）は、図７に示すように、対象５１が「ＰＩＰＥＴ＿ＲＡＣＫ」で、引数が「−」（無し）である「ＭＯＶＥ」コマンド５０が先頭であり、このコマンド５０は、ロボットアームを開始位置であるピペットラック１０の位置に移動させる命令を表す。その次の、対象５１が「ＰＩＰＥＴ」、引数が「１」である「ＧＥＴ」コマンド５０は、この例では、右のロボットアームのハンドで対象物を把持する命令を表しており、ここでの対象物は「ＰＩＰＥＴ」で表される通りピペット４であり、引数「１」で示される通り、第１のピペット４を把持することを示している。最後は、対象５１が「ＰＩＰＥＴ＿ＲＡＣＫ」で、引数が「−」（無し）である「ＭＯＶＥ」コマンド５０であり、これは、ロボットアームを再度、終了位置であるピペットラック１０の位置に移動させる命令を表す。
【００９７】
この単位ジョブ（Ｓ３０１）の開始時点と終了時点においても、それぞれ、状態情報６０ｆ及び６０ｇが状態情報生成部２４により生成され、状態情報データベース１ｃｃに保存される。ここで、単位ジョブ（Ｓ３０１）の終了時点においては、ピペットラック１０からは第１のピペットが取り出され、ロボット３の右側のハンドには、いまだチップ８が装着されていない状態の第１のピペット４が把持されている状態となっている。そのため、図８に示すように、状態情報６０ｇでは、「作業用機器」の項目中、「ハンド右」の状態は「２」であり、これは図９の状態対応表６１ａに示すように、「ピペット把持（チップ無し）」を示す。また、「作業用機器」の項目中、「ピペットラック」の状態は「１」であり、これは図９の状態対応表６１ｃに示すように、「第１ピペット無し」を示す。
【００９８】
したがって、何らかの理由により、単位ジョブ（Ｓ３０１）の終了時点でロボット３が停止したとしても、その時点での状態情報６０ｇを参照すれば、ロボット３及び作業用機器の状態がわかる。
【００９９】
同様にして、残る単位ジョブも単位ジョブセット生成部２３により生成される。おのおのの単位ジョブを構成する命令については、説明が冗長となるため、その詳細は割愛するが、各単位ジョブによりなされる動作は次のようなものである。
【０１００】
すなわち、ピペット４にチップを装着する単位ジョブ（Ｓ４０１）では、第１のピペット４をハンドに把持した右のロボットアームを開始位置であるチップラック７の位置まで移動させ、チップラック７に保持されているチップ８の真上から第１のピペット４を押し付けてその先端にチップ８を取り付ける。その後、終了位置であるチップラック７の位置まで再度ロボットアームを移動させる。また、液剤Ａを２００μｌ吸引する単位ジョブ（Ｓ５０１）では、右ロボットアームを開始位置である恒温槽９の位置まで移動させ、さらに第１のピペット４に装着されたチップ８の先端を液剤Ａの容器に挿入して、液剤Ａを２００μｌ吸引する。この動作は、第１のピペット４が電動ピペットであれば、ロボット３又はロボット制御装置２から第１のピペット４に適切な駆動信号を送信すればよく、第１のピペット４が手動ピペットであれば、ロボット３の左のロボットアームを用いて、右のロボットアームに把持された第１のピペット４を操作すればよい。本実施形態で使用しているロボット３は、双腕型で、２以上のロボットアームを持つため、人が操作することを前提にデザインされた市販の作業用機器を問題なく使用することができるため、処理システム２００用に特別の作業用機器を用意する必要はない。その後、終了位置である恒温槽９の位置まで再度ロボットアームを移動させる。
【０１０１】
さらに、続いて、チューブ１に液剤Ａを吐出する単位ジョブ（Ｓ６０１）と、チューブ２に液剤Ｂを吐出する単位ジョブ（Ｓ６０２）が連続して生成され、順に直列に接続される。このロボットアームの動きを、図１０を参照して説明する。
【０１０２】
まず、単位ジョブ（Ｓ６０１）では、ロボットアームを開始位置であるメインラック５ｂの位置７０に移動させ、その後、矢線７１に示すように、メインラック５ｂに載置された１本目のマイクロチューブ６ａの直上にチップ８がくる位置７２に移動させる。それから、１本目のマイクロチューブ６ａに第１のピペット４に装着されたチップ８の先端を挿入して、溶剤Ａを１００μｌ吐出する。その後ロボットアームは、１本目のマイクロチューブ６ａからチップ８の先端を引き抜いた位置となる、位置７２まで上昇させる。その後、通常であれば、矢線７３ａに示すように、終了位置であるメインラック５ｂの位置７０にロボットアームを移動させるが、この場合は特例として終了位置への移動が破棄されるため、ロボットアームの位置は位置７２のままである。
【０１０３】
そして、続く単位ジョブ（Ｓ６０２）では、通常であれば、まずロボットアームを開始位置であるメインラック５ｂの位置７０に移動させるが、この場合に特例として開始位置への移動が破棄されるため、ロボットアームの位置は１本目のマイクロチューブ６ａからチップ８の先端を引き抜いた位置７２のままとなる。その後、矢線７３に示すように、メインラック５ｂに載置された２本目のマイクロチューブ６ｂの直上にチップ８がくる位置７４に移動させる。この移動は、位置７４への移動命令であり、ロボットアームが初期位置である位置７０にあれば、矢線７３ｂのように位置７０から位置７４への移動となっていたものが、ロボットアームが位置７２のままであったために変化したものである。さらに、第１のピペット４に装着されたチップ８の先端を２本目のマイクロチューブ６ｂに挿入して、残る溶剤Ａを１００μｌ吐出する。その後ロボットアームは、２本目のマイクロチューブ６からチップ８の先端を引き抜いた位置まで上昇し、矢線７５に示すように、通常どおり、終了位置であるメインラック５ｂの位置７０にロボットアームを移動させる。
【０１０４】
この２つの単位ジョブは、同種の動作、すなわち、メインラック５ｂに載置されたマイクロチューブ６に、同じ液剤Ａを同じ分量吐出するというものであり、吐出すべきマイクロチューブ６のみが異なるというものである。そして、異なるマイクロチューブ６は、メインラック４ｂの隣接する穴に挿入され支持されるのであるから、結局、この２つの単位ジョブは、本来、開始位置と終了位置を同じくし、作業位置であるマイクロチューブ６の位置のみオフセットしたものであるといえる。なぜなら、メインラック４ｂの隣接する穴間のピッチは既知であるからである。
【０１０５】
単位ジョブセット生成部２３は、このような同種の動作を行う連続する単位ジョブについては、先の単位ジョブ、ここでは単位ジョブ（Ｓ６０１）に含まれる終了位置への移動指令と、後の単位ジョブ、ここでは単位ジョブ（Ｓ６０２）に含まれる開始位置への移動指令を破棄する。この結果、先ほど説明したように、先の単位ジョブ（Ｓ６０１）の実行後、１本目のマイクロチューブ６からチップ８の先端を引き抜いた位置から直接ロボットアームは２本目のマイクロチューブ６に、第１のピペット４に装着されたチップ８の先端を挿入する動作を行うことになる。こうすることで、連続する同種の動作を実行するにあたり、一回ごとにロボットアームをその単位ジョブの開始位置（または終了位置）まで往復させる無駄な動作が省略され、作業効率が向上する。図１０の例でいえば、位置７２から位置７４の移動が、かかる動作の省略がなされなければ、矢線７３ａ及び矢線７３ｂに示すように、位置７０を経由した迂遠で非効率なものとなっていたところ、矢線７３に示すように短く効率の良いものとなる。
【０１０６】
さらに、第１のピペット４先端に装着されたチップ８を破棄する単位ジョブ（Ｓ７０２）が生成される。これは、ロボットアームを初期位置であるダストボックス１３の位置まで移動させる。この位置は、右のロボットアームに把持された第１のピペット４が、ダストボックス１３の直上となる位置であり、このまま、ロボット３は、第１のピペット４の先端のチップ８を第１のピペット４から脱離させる。外れたチップ８ダストボックス１３内に落下し、破棄される。チップ８の第１のピペット４からの脱離は、左のロボットアームで第１のピペット４のチップ取り外しボタンを押し込むなどの操作をするか、あるいは第１のピペット４が電動ピペットである場合には、チップ脱離の信号をロボット３又はロボット制御装置２から送信すればよい。その後、ロボットアームは終了位置であるダストボックス１３の位置まで移動させられることになるが、この単位ジョブ（Ｓ７０２）ではロボットアームの位置に変化はないため、ロボットアームの移動はない。単位ジョブ（Ｓ７０２）内の末尾には、終了位置への移動命令が含まれていてもよく（この場合には、ロボット制御装置２において、単に命令が無視される）、かかる移動命令自体が破棄されていてもよい。本実施形態では、終了位置への移動命令はそのまま残されている。
【０１０７】
最後に、第１のピペット４をピペットラック１０に返却する単位ジョブ（Ｓ３０２）が生成される。これは、ロボットアームを開始位置であるピペットラック１０の位置に移動させ、その後、右のロボットアームのハンドに把持された第１のピペット４をピペットラック１０の元あった位置に戻し、把持を解除し、その後終了位置であるピペットラック１０の位置に移動するというものである。
【０１０８】
以上の７つの単位ジョブにより、「ＡＤＤ」と記載された処理シンボル１０３が表す単位ジョブのセットが生成されたことになる。そして、単位ジョブセット生成部２３は、作業コマンドである処理シンボル１０３に対応するコマンド定義に基づいて単位ジョブのセットを生成する。コマンド定義は、図３に示すコマンド定義抽出部２２により、コマンド定義データベース１ｃａより抽出される。
【０１０９】
図１１は、コマンド定義の例を示す概念図である。同図に示されているのは、本例で示した「ＡＤＤ」と記載された処理シンボル１０３のコマンド定義である。コマンド定義自体のデータ形式には特に限定はなく、任意のフォーマットで記述されてよいので、図１１で示したものは、そのコマンド定義を概念的に示したものである。
【０１１０】
コマンド定義は、前述したとおり、作業コマンド毎に使用する単位ジョブの順序及び組み合わせを１又は複数定義したものである。そして、コマンド定義内には、以降説明するように、作業コマンドその他の条件に応じた条件分岐や繰り返しなどの制御命令、引数の計算が含まれ得るが、単位ジョブセット生成部２３が生成する単位ジョブのセットは、単位ジョブを直列に連続して並べたものであり、その引数も固定値であるか、または動的な計算の必要ない変数の参照となっている。以下に、図１１のコマンド定義を例として、単位ジョブセット生成部２３が「ＡＤＤ」と記載された処理シンボル１０３から単位ジョブのセットを生成するフローを説明する。
【０１１１】
単位ジョブセット生成部２３は、コマンド定義を通常のフロー（アルゴリズム）と同様に、図１１の上から順に解釈して単位ジョブのセットを生成していく。まず、ステップＴ１０にて、必要となる液剤の総容量を計算する。総容量は、個々のマイクロチューブ６に加える液剤の量（個別容量）とマイクロチューブの本数の積である。ここでは、図４に示すように、「ＡＤＤ」と記載された処理シンボル１０３で与えられた個別容量は１００μｌであり、また、チューブの本数は容器数シンボル１０５で示されるように、２本である。したがって、総容量は２００μｌである。このように、コマンド定義中には、引数の計算が含まれてよい。
【０１１２】
続くステップＴ２０では、計算された総容量の大小に応じて、条件分岐により使用すべきピペット４を決定する。ここでは、総容量に応じて、容量が小さいものから順に第１のピペット、第２のピペット、第３のピペットが用意されているものとして、２００μｌは容量が小さいと判定されるものとする。
【０１１３】
その結果、ステップＴ２１へと進み、第１のピペットを把持する単位ジョブ（Ｓ３０１）が生成される。この単位ジョブは、図３の単位ジョブ群記憶部１ｃｂにあらかじめ記憶されており、単位ジョブセット生成部２３は、単位ジョブ群記憶部１ｃｂから必要な単位ジョブを呼び出す。異なる容量のピペットである、第２のピペット、第３のピペットを把持する単位ジョブも単位ジョブ群記憶部１ｃｂにあらかじめ記憶されており、選択されたピペットに対応した単位ジョブが呼び出されるようになっている（ステップＴ２２、２３）。そして、各ピペットがピペットホルダ１０に収納されている位置の違いや、ピペットの形状の違いによる把持位置の違いや、ハンドの開閉の度合いの差異は、単位ジョブ群記憶部１ｃｂに記憶された単位ジョブにあらかじめ反映されているから、コマンド定義の条件や、作業用機器の差によるロボット３の動作の差は吸収される。また、作業用機器の更新があった時など（例えば、ピペット４を形状が異なる別製品に交換した場合など）には、単位ジョブ群記憶部１ｃｂに記憶された該当する単位ジョブを修正するのみで済むから、処理システム２００の構成の更新や変更に柔軟に対応できる。
【０１１４】
続くステップＴ３０では、チップ８を装着する単位ジョブ（Ｓ４０１）が単位ジョブ群記憶部１ｃｂから呼び出され、生成される。さらに、ステップＴ４０で、資料に加えるべき液剤が、液剤Ａであるか、液剤Ｂであるかを条件分岐により判定する。ここでは、「ＡＤＤ」と記載された処理シンボル１０３で液剤Ａが指定されているため、ステップＴ４１が選択され、液剤Ａを吸引する単位ジョブが単位ジョブ群記憶部１ｃｂから呼び出され、ステップＴ１０で計算された総容量２００μｌが引数として引き渡され反映される。なお、液剤Ｂが指定されていた場合にはステップＴ４２へと進み、液剤Ｂを吸引する単位ジョブが単位ジョブ群記憶部１ｃｂから呼び出されることになる。このように、単位ジョブが吸引すべき液剤により別々になっているため、液剤の配置位置の差異や、液剤を吸引する際に液剤に応じた特別の手技（例えば、吸引と吐出を何度か繰り返すことにより液剤を攪拌してから吸引する必要があるなど）が必要となる場合にも柔軟に対応できる。
【０１１５】
その後ステップＴ５０へと進み、容器数シンボル１０５で示されたマイクロチューブ６の本数だけ、液剤を吐出する単位ジョブ（Ｓ６０１、Ｓ６０２）が単位ジョブ群記憶部１ｃｂから繰り返し呼び出され生成される。また、この時個々の単位ジョブには、引数として個別容量１００μｌが引き渡され反映される。さらに、ここで繰り返し呼び出される単位ジョブは、同種の動作であって、本来、開始位置と終了位置を同じくし、作業位置のみオフセットしたものであるから、個々の単位ジョブには、作業位置としてオフセットした値が単位ジョブセット生成部２４により計算され引き渡されて反映されるとともに、前述したように、先の単位ジョブ（Ｓ６０１）に含まれる終了位置への移動指令と、後の単位ジョブ（Ｓ６０２）に含まれる開始位置への移動指令は破棄される。
【０１１６】
続くステップＴ６０では、チップ８を破棄する単位ジョブ（Ｓ７０２）が単位ジョブ群記憶部１ｃｂから呼び出され、生成される。最後に、ステップＴ７０で、使用したピペットが条件分岐により判断され、ピペットラック１０の適切な位置にピペットが返却される単位ジョブ（Ｓ３０２）が単位ジョブ群記憶部１ｃｂから呼び出され、生成される。ここでは、第１のピペット４が使用されていたため、ステップＴ７１へと進み、第１のピペット４はピペットラック１０の元々第１のピペット４が収容されていた位置に返却される。他のピペットが選択されていた場合には、それぞれのピペットを適切な位置に返却するよう単位ジョブが呼び出され、生成される（ステップＴ７２、Ｔ７３）。
【０１１７】
以上のような単位ジョブセット生成部２３の動作により、単位ジョブのセットが生成される。したがって、同種の作業コマンドに対しても、与えられる条件およびコマンド定義に起因して、条件分岐により生成される単位ジョブが異なったり、繰り返しの数が異なることにより生成される単位ジョブの数が異なったりなど、ロボット３において実行される単位ジョブが変化する。このように、コマンド定義を参照して単位ジョブのセットを生成することにより、処理条件に応じて複雑な手順が必要となる作業コマンドに対して、柔軟に単位ジョブのセットを生成できるため、汎用性の高い処理システム２００が実現される。また、単位ジョブ自体はコマンド定義に含まれず、単位ジョブ群記憶部１ｃｂから呼び出すから、処理システム２００や作業用機器の変更などに柔軟に対応でき、作業時間及び手間を軽減できる。
【０１１８】
図４へと戻り、単位ジョブセット生成部２３は、残る「ＣＥＮＴＲＩＦＵＧＥ」と記載された処理シンボル１０３から単位ジョブのセットを生成する。この動作も、先の説明と同じく、コマンド定義抽出部２２より「ＣＥＮＴＲＩＦＵＧＥ」に対応するコマンド定義がコマンド定義データベース１ｃａから抽出され、かかるコマンド定義に基づいて、単位ジョブ群記憶部１ｃｂに記憶された単位ジョブ群から単位ジョブが呼び出され順序付けられ、また必要に応じて引数が計算されて引き渡されて反映されるものである。ここでは、図７に示すように、１本目のマイクロチューブ６をメインラック５ｂから遠心分離機１２へと移送する単位ジョブ（Ｓ１０３）、２本目のマイクロチューブ６をメインラック５ｂから遠心分離機１２へと移送する単位ジョブ（Ｓ１０４）、及び遠心分離機１２を操作して遠心処理を行う単位ジョブ（Ｓ８０１）が単位ジョブのセットとして生成されるが、各単位ジョブの動作の詳細については省略する。
【０１１９】
最後に、単位ジョブセット生成部２３は、「ＰＵＴ」と記載された終了シンボル１０１から単位ジョブのセットを生成する。この動作も同様であり、コマンド定義抽出部２２より「ＰＵＴ」に対応するコマンド定義がコマンド定義データベース１ｃａから抽出され、かかるコマンド定義に基づいて単位ジョブのセットが生成される。ここでは、第１のマイクロチューブ６を遠心分離機から取り出しチューブラック５ａへと移送する単位ジョブ（Ｓ１０５）と第２のマイクロチューブ６を遠心分離機から取り出しチューブラック５ａへと移送する単位ジョブ（Ｓ１０６）が生成される。これにより、図４に例示したプロトコルチャートに記述された作業コマンドに対応する単位ジョブはすべて生成され、直列に並べられたことになる。
【０１２０】
しかしながら、このままでは、連続する２つの単位ジョブについて、先の単位ジョブの終了位置から、後の単位ジョブの開始位置までのロボットアームの移動経路が何ら考慮されていないため、ロボットアームそれ自体や、ロボットアームのハンドに把持された保持物が、他の物品と干渉する恐れがある。そこで、図３に示すつなぎジョブ生成部２５により、つなぎジョブが生成される。
【０１２１】
つなぎジョブは、少なくとも、連続する作業コマンドと作業コマンドの間に挿入されるものとして生成され、本実施形態では、連続する単位ジョブと単位ジョブの間に挿入されるものとして生成される。ただし、以降説明するように、つなぎジョブは、必ずしも連続する単位ジョブと単位ジョブの間の全てに挿入されるわけではなく、その生成がなされない、あるいは生成された単位ジョブが破棄又は省略される場合があり得る。
【０１２２】
つなぎジョブ生成部２５によるつなぎジョブの生成を、図５の２本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ１０２）と、第１のピペット４を把持する単位ジョブ（Ｓ２０１）の間に挿入されるつなぎジョブ（Ｓ２０１）を例にとり説明する。
【０１２３】
ここで、２本目のマイクロチューブ６をメインラック５ｂに移送する単位ジョブ（Ｓ２０１）の終了位置は、メインラック５ｂの位置であり、第１のピペットをロボットアームの右側のハンドに把持する単位ジョブ（Ｓ２０１）の開始位置はピペットラック１０であるから、両者は等しくない。そして、このように、連続する単位ジョブの間で、先の単位ジョブの終了位置と、後の単位ジョブの終了位置とが異なる場合、仮につなぎジョブが挿入されないと、ロボットアームは、後の単位ジョブの先頭に含まれる開始位置への移動命令によって、先の単位ジョブの終了位置から後の単位ジョブの開始位置まで直線移動することとなる。そして、作業用機器の配置や、ロボットハンドに把持された物品によっては、この直線移動による経路が、他の機器と干渉する場合があり得る。
【０１２４】
そこで、つなぎジョブ生成部２４は、メインラック５ｂの位置と、ピペットラック１０の位置と、状態情報データベース１ｃｃに記述された状態とに基づいて、メインラック５ｂの位置からピペットラック１０の位置への移動命令の集合である、つなぎジョブ（Ｓ２０１）を生成する。つなぎジョブは、ロボットアームと機器との干渉を避け、出来る限り移動距離あるいは移動時間の短い経路を通って、ロボットアームを移動させるジョブである。
【０１２５】
つなぎジョブ生成部２５は、障害物との干渉を避けるように、ロボットアームの経路を自動生成する。その際、状態情報データベース１ｃｃが参照され、ロボットアームのハンドに把持されているものがあるか否か、また何が把持されているかを示す把持物情報、作業用機器、特に設置されている各種機器の蓋やドアが開いているか否かといった作業用機器状態情報等の状態情報が加味される。その結果として、状態情報に応じた作業モデルを作業モデル記憶部１ｃｅから読み出し使用してもよい。ロボットアームの経路を自動生成するアルゴリズムは既知のどのようなものを用いてもよい。例えば、障害物との干渉が無いロボットアームの姿勢をランダムに幾つか生成し、それらをつなぎ合わせたロードマップからグラフ探索アルゴリズムにより経路を生成するＰＲＭ（Ｐｒｏｂａｂｉｌｉｓｔｉｃ  Ｒｏａｄｍａｐ  Ｍｅｔｈｏｄ）を用いてよい。また、与えられたロードマップから最短経路を生成するグラフ探索アルゴリズムとして、ダイクストラ法や、ダイクストラ法を改良したＡ＊アルゴリズムを用いてよい。あるいは、経路を自動生成する他のアルゴリズムとして、動作の開始点を基点として障害物との干渉が無い経路木をランダムに幾つか生成し、経路木の先端を新たな基点として経路木のランダム生成を繰り返すＲＲＴ（Ｒａｐｉｄｌｙ−ｅｘｐｌｏｒｉｎｇ  Ｒａｎｄｏｍ  Ｔｒｅｅｓ）、ＰＲＭとＲＲＴを組み合わせたＳＲＴ（Ｓａｍｐｌｉｎｇ−ｂａｓｅｄ  Ｒｏａｄｍａｐ  ｏｆ  Ｔｒｅｅｓ）やＲＲＭ（Ｒａｐｉｄｌｙ−ｅｘｐｌｏｒｉｎｇ  ＲｏａｄＭａｐ）を用いてもよい。さらに、これらのロボットアームの姿勢をランダムに生成するアルゴリズムに限らず、他のアルゴリズム、例えば、ロボットアームの到着点で値が低く、障害物の位置で値が高くなるようなポテンシャルを導入し、そのポテンシャルの勾配に沿ってロボットアームを動かす方法であるポテンシャル法のような方法を用いてもよい。
【０１２６】
生成されたつなぎジョブは、図３に示すように、つなぎジョブ記憶部１ｃｄに記憶される。この時、生成されたつなぎジョブと、かかるつなぎジョブの前後の状態情報とを紐づけるか、つなぎジョブと状態情報とを合わせて繋ぎジョブ記憶部１ｃｄに記憶するとよい。
【０１２７】
図７には、メインラック５ｂからピペットラック１０へのつなぎジョブ（Ｓ２０１）が示されている。メインラック５ｂからピペットラック１０へのつなぎジョブ（Ｓ２０１）は、「ＣＯＮＮＥＣＴ」コマンド５０と、「ＭＡＩＮ＿ＲＡＣＫ：ＰＩＰＥＴ＿ＲＡＣＫ」という対象５１と、５つの引数５２を含む。対象５１は、つなぎジョブの開始位置（メインラック５ｂの位置）と、終了位置（ピペットラック１０の位置）を表している。
【０１２８】
つなぎジョブ生成部２４は、ロボット３及びロボット３が操作する機器の直前の状態を表す状態情報６０ｅを参照する。状態情報６０ｅが表す状態は、第２のマイクロチューブ６ｂをメインラック５ｂに置き、ハンドをメインラック５ｂの位置に移動させた状態であり、ハンドには何も把持されておらず、全ての機器の状態は初期状態と同じである。よって、第３の状態表６０ｄの内容は、第１の状態表６０ｂの内容と同一である。図７では、状態情報データベース１ｃｃから取得された情報が、引数５２として表されている。引数５２のうち「ＨＡＮＤ＿Ｒ＝０，ＨＡＮＤ＿Ｌ＝０」は、両方のハンドに何も把持されていないことを表し、「ＢＡＴＨ＝０」は、恒温槽９のドアが閉じていることを表し、ＰＩＰＥＴ＿ＲＡＣＫ＝０」は、ピペットラック１０に全てのピペット４が収容されていることを表し、「ＣＥＮＴＲＩＦＵＧＥ＝０」は、遠心分離器１２の蓋が開いて停止中であることを表している。つなぎジョブ生成部２４は、これらの引数５２に基づいて、機器の状態を読み取り、機器との干渉が無いロボットアームの移動経路を生成する。
【０１２９】
ところで、前述したように、つなぎジョブ生成部２４は、必ずしも連続する単位ジョブ間の全ての位置につなぎジョブを生成し、挿入するわけではない。まず、第１の例外として、つなぎジョブを生成し挿入しようとする隣接する単位ジョブにおいて、先の単位ジョブの終了位置と、後の単位ジョブの開始位置が等しい場合には、つなぎジョブの生成自体を省略する。これは、つなぎジョブを介在せずとも、ロボットアームが移動する必要がないためである。このときの、先の単位ジョブの終了位置と、後の単位ジョブの開始位置は、図７に一部示された、単位ジョブセット生成部２３により生成された単位ジョブにおける、開始位置への移動コマンド５０と終了位置への移動コマンド５０を参照することにより得られる。あるいは、先の単位ジョブの終了時点における状態情報と、後の単位ジョブの開始時点における状態情報を参照することによっても得られる。いずれにしても、つなぎジョブを生成する際に状態情報は参照されるため、本実施形態では、先の単位ジョブの終了時点における状態情報と、後の単位ジョブの開始時点における状態情報を参照している。
【０１３０】
第２の例外は、生成されたつなぎジョブが、単なる無直線移動指令に等しい場合である。この場合は、生成されたつなぎジョブは、後の単位ジョブの先頭で実行される、開始位置への移動命令と実質的に同等であるため、つなぎジョブを挿入する必要がないためである。この判別は、つなぎジョブを生成し、かかるつなぎジョブが単なる無直線移動指令に等しいか否かを判断することにより行われる。つなぎジョブが単なる無直線移動指令に等しい場合には、生成したつなぎジョブは破棄される。
【０１３１】
第３の例外は、挿入しようとするつなぎジョブが、すでに生成済みのつなぎジョブと同一である場合である。この場合は、すでに生成済みのつなぎジョブの経路を毎回経路探索アルゴリズムを用いて再生成することは、ロボット制御指令生成装置１に無駄な演算負荷をかけ、ロボット動作指令の生成に時間を要し、その生産性低下の原因となるため、同一のつなぎジョブの再生成を防ぐためである。
【０１３２】
つなぎジョブがすでに生成したものと同じか否かは、当該つなぎジョブを挿入しようとする隣接した単位ジョブについて、先の作業コマンドの終了時点での状態情報と、後の作業コマンドの開始時点での状態情報をすでに生成済みのつなぎジョブについてのものと比較することにより行われる。すなわち、つなぎジョブの開始位置（先の単位ジョブの終了位置）と、つなぎジョブの終了位置（後の単位ジョブの開始位置）が同じであっても、ロボットハンドに把持した物品の差異や、作業用機器の状態、例えば蓋や扉が空いているか閉まっているか、等の処理システム２００の状態の差によって、つなぎジョブとして適した移動経路は異なると考えられるところ、先の単位ジョブの終了時点及び後の単位ジョブの開始時点における状態情報が等しい場合には、同一のつなぎジョブが生成されることになるためである。
【０１３３】
生成しようとするつなぎジョブ前後の状態情報が等しいつなぎジョブ２５が既につなぎジョブ生成部２５により生成され、つなぎジョブ記憶部１ｃｄに記憶されている場合には、つなぎジョブ生成部２５は、新たにつなぎジョブを生成せず、つなぎジョブ記憶部１ｃｄに記憶された生成済みのつなぎジョブを呼び出す。
【０１３４】
つなぎジョブ記憶部１ｃｄには、つなぎジョブ生成部２５が生成したつなぎジョブが、つなぎジョブ前後の状態情報を合わせて記憶されるか、またはつなぎジョブ前後の状態情報と紐付けして記憶されているため、つなぎジョブ生成部２５は、新たなつなぎジョブを生成しようとする際に、つなぎジョブを挿入しようとする位置の前後の状態情報をつなぎジョブ記憶部１ｃｄに照会することで、これから生成しようとするつなぎジョブがすでに生成済みであるのか、新規に生成すべきものであるのかを判別できる。
【０１３５】
図１２は、つなぎジョブ生成部２５にて実行されるつなぎジョブ生成のフロー図である。まず、つなぎジョブは連続する単位ジョブ間に挿入されるジョブであるから、単位ジョブセット生成部２３で生成された単位ジョブを先頭から順番に参照し、連続する単位ジョブを抽出する（ステップＴ１００）。この抽出された単位ジョブ間に、つなぎジョブを挿入するか否か、また生成するか否かを判断していくことになる。
【０１３６】
続いて、抽出された連続する単位ジョブのうち、先の単位ジョブの終了時点及び、後の単位ジョブの開始時点の状態情報を、状態情報データベース１ｃｃより抽出する（ステップＴ１１０）。そして、抽出された状態情報から、挿入しようとするつなぎジョブの開始位置（先の単位ジョブの終了位置）と、終了位置（後の単位ジョブの開始位置）が等しいかどうか判断する（ステップＴ１２０）。両者が等しい場合（ステップＴ１２０：Ｙ）は、つなぎジョブを挿入する必要がないため、つなぎジョブ生成を省略し、ステップＴ１５０へと進む。
【０１３７】
作成しようとするつなぎジョブの開始位置と、終了位置が等しくない場合（ステップＴ１２０：Ｎ）には、さらに、挿入しようとするつなぎジョブの開始時点と終了時点における状態情報が等しいつなぎジョブが、すでに生成され、つなぎジョブ記憶部１ｃｄに記憶されていないか判断する（ステップＴ１３０）。これは上述したように、つなぎジョブ記憶部１ｃｄに記憶されたつなぎジョブと合わせて記憶された状態情報、または紐づけられた状態情報を参照していくことで容易に判断できる。すでに記憶されている場合（ステップ１３０：Ｙ）には、当該記憶されているつなぎジョブをつなぎジョブ記憶部１ｃｄから呼び出して（ステップＴ１３１）、ステップＴ１５０へと進む。
【０１３８】
状態情報の等しいつなぎジョブが存在していない場合（ステップ１３０：Ｎ）には、新しくつなぎジョブが必要であるため、抽出した状態情報に基づいて、つなぎジョブを生成する（ステップＴ１３２）。
【０１３９】
生成されたつなぎジョブについては、単なる直線移動指令と同等であるかを判断する（ステップＴ１４０）。つなぎジョブが単なる直線移動指令と同等の場合（ステップＴ１４０：Ｙ）には、生成されたつなぎジョブは破棄し（ステップＴ１４１）、ステップＴ１５０へと進む。生成されたつなぎジョブが単なる直線移動指令と同等でない場合（ステップＴ１４０：Ｎ）には、生成されたつなぎジョブをつなぎジョブ記憶部１ｃｄに記憶する。また、この時同時に、つなぎジョブの開始時点での状態情報と、終了時点での状態情報（またはそれらとの紐づけ情報）を併せてつなぎジョブ記憶部１ｃｄに記憶する。
【０１４０】
ここまでで、注目している連続する単位ジョブ間について、つなぎジョブを生成するか、呼び出すか、破棄するか、あるいは生成を省略するかが定まる。そして、さらにつなぎジョブを挿入すべき連続する単位ジョブが存在するか否かを判断する（ステップＴ１５０）。単位ジョブセット生成部２３により生成された単位ジョブがまだ続いており、連続する単位ジョブが存在する場合（ステップＴ１５０：Ｙ）には、ステップＴ１００へと戻り、上述の動作を繰り返す。連続する単位ジョブが存在しない場合（ステップＴ１５０：Ｎ）は、つなぎジョブを挿入する可能性のある連続する単位ジョブについての処理をすべて終えたこととなるので、処理を終了する。
【０１４１】
図３に戻り、最後に、生成された単位ジョブ及びつなぎジョブは、ロボット動作指令生成部２７へと受け渡され、ロボット動作指令生成部２７は、生成された単位ジョブと、つなぎジョブを直列に連続する命令セットとして統合し、ロボット動作指令を生成する。生成されたロボット動作指令は、ロボット動作指令記憶部１ｃｆに記憶される。
【０１４２】
図５及び６に示したロボット動作指令には、そのようにして単位ジョブ間に挿入されたつなぎジョブが示されている。第１のチューブをチューブラック５ａからメインラック５ｂに移送する単位ジョブＳ１０１の終了位置であるメインラック５ｂの位置と、第２のチューブをチューブラック５ａからメインラック５ｂに移送する単位ジョブＳ１０２の開始位置であるチューブラック５ａの位置との間は、直線移動が可能であるため、つなぎジョブ生成部２５により生成されたつなぎジョブは破棄されている。
【０１４３】
単位ジョブＳ１０２と第１のピペット４を把持する単位ジョブＳ３０１との間には、メインラック５ｂの位置からピペットラック１０の位置へとつなぐつなぎジョブＳ２０１が生成され挿入される。同様に、単位ジョブＳ３０１とチップ８を装着する単位ジョブＳ４０１との間には、ピペットラック１０の位置からチップラック７の位置へとつなぐつなぎジョブＳ２０２が生成され挿入され、単位ジョブＳ４０１と液剤Ａを吸引する単位ジョブＳ５０１との間には、チップラック７の位置から恒温槽９の位置へとつなぐつなぎジョブＳ２０３が生成され挿入される。以下同様に、つなぎジョブＳ２０４、Ｓ２０５、Ｓ２０６、Ｓ２０７が生成され挿入される。
【０１４４】
第１のチューブ６に液剤Ａを吐出する単位ジョブＳ６０１と第２のチューブ６に液剤Ａを吐出する単位ジョブＳ６０２は、前述したように、同種の動作を行う連続する単位ジョブであるから、その開始位置と終了位置はいずれもメインラック５ｂの位置であって同位置である。そのため、この連続する単位ジョブＳ６０１，Ｓ６０２間のつなぎジョブの生成は省略されるため、つなぎジョブは挿入されない。
【０１４５】
単位ジョブＳ１０３とＳ１０４の間については、メインラック５ｂの位置と遠心分離機１２の位置をつなぐ移動であり、単位ジョブＳ１０５とＳ１０６の間は、遠心分離機１２の位置とチューブラック５ａの位置をつなぐ移動であるが、これはいずれも直線移動となるため、生成されたつなぎジョブは単なる直線移動指令と同等となり、破棄されるため、これらの単位ジョブ間につなぎジョブは生成されない。
【０１４６】
そして、単位ジョブＳ１０４と単位ジョブＳ８０１間、及び、単位ジョブＳ８０１と単位ジョブＳ１０５間については、開始位置と終了位置がいずれも遠心分離機１２の位置であり、つなぎジョブの開始位置と終了位置が等しいため、つなぎジョブの生成は省略され、単位ジョブ間につなぎジョブは生成されない。
【０１４７】
ロボット動作指令記憶部１ｃｆに記憶されたロボット動作指令は、ユーザからの指令その他の指令により、ロボット動作指令表示部２８により読みだされて、適宜モニタ１ｈに表示される。また、ロボット動作指令出力部２９により読みだされて、ロボット制御装置２に出力され、ロボット制御装置２がかかるロボット動作指令を実行することでロボット３を動作させ、全体作業フローに従った作業が処理システム２００において実行される。
【０１４８】
上述したように、本実施形態に係るロボット動作指令生成装置１で作成されたロボット動作指令は、図５及び６に示した例のように、単位ジョブと繋ぎジョブが連続して直列に接続されたものとして生成されており、条件分岐や繰り返しなどのコンピュータ制御に言ういわゆる制御命令を含まないものとなっている。そのため、ロボット制御装置２での演算の負荷が小さく、また、実行途中の処理システム２００の状態が一意に定まるため、実行途中で動作が停止した場合等にも、ロボット動作指令の進行状況から、処理システム２００の状態を知ることが容易である。さらに、実際にロボット３を動作させたり、全体の動作シミュレーションを行ったりすることなく、ロボット動作指令全体を実行するのに必要な時間である全体時間を事前に予測できる。
【０１４９】
図１３は、単位ジョブ群記憶部１ｃｂに記憶されている単位ジョブ群３００を模式的に示す図である。単位ジョブ群記憶部１ｃｂには、あらかじめ、処理システム２００においてロボット３により実行される単位ジョブをまとめて、単位ジョブ群３００として記憶させておく。単位ジョブ群記憶部１ｃｂに記憶されている単位ジョブは、単位ジョブセット生成部２３により必要に応じて読みだされ、ロボット動作指令を構成する単位ジョブとして必要なパラメータを与えられる。
【０１５０】
単位ジョブ群３００に含まれる単位ジョブには、ロボット制御装置２で実行される命令だけでなく、それぞれの単位ジョブをロボット３に実行させるにあたって必要な所要時間が記憶されている。例えば、チューブをチューブラック５ａからメインラック５ｂに移送する単位ジョブは、図１３に示されているように、１０秒を要することが示されている。この所要時間は、単位ジョブ群３００に単位ジョブを登録する際に、あらかじめ与えられる。この時間は、単位ジョブを作成した際に、実際にロボット３を動作させて所要時間を測定して得てもよいし、コンピュータシミュレーションを用い、単位ジョブに相当する動作を仮想的に再現して所要時間を測定して得てもよい。
【０１５１】
また、この単位ジョブごとの所要時間は、必ずしも正確なものでなく、概算であってもよい。例えば、先の例で挙げたチューブをチューブラック５ａからメインラック５ｂに移送する単位ジョブに要する時間は、何番目のチューブを移送するかにより若干の時間の差が生じると考えられるが、その差は全体作業時間に大きな影響を与えるほどではないと考えられるため、代表的な時間を採用するか、あるいは平均的な時間を採用するなどしてもよい。この例では、１番目のチューブを移送するにあたって必要な時間を代表的な時間として採用している。
【０１５２】
さらに、この単位ジョブごとの所要時間は、必ずしも固定値として与えられなくともよい。例えば、図１３に示された遠心処理を行う単位ジョブは、遠心分離機を操作するのに必要な時間はおおむね固定であると考えられるのに対し、遠心処理それ自体に必要な時間は、作業コマンドによって与えられるものであり一定でない。このような場合には、単位ジョブ群記憶部１ｃｂには、単位ジョブの所要時間として、固定時間と変動時間を与えておき、変動時間は、作業コマンドに与えられたパラメータによって変化するものとしてよい。この例で示した遠心処理については、固定時間は２０秒であり、これはロボット３により遠心分離機１２の蓋を操作したり、ボタンスイッチを操作したりするのに要する時間である。これに対して変動時間はＸとして示されており、これは遠心処理それ自体の時間であるから、図４に示したプロトコルチャートでは、３分（１８０秒）となり、結局、この例での遠心処理には２００秒が必要となる。
【０１５３】
図１４は、つなぎジョブ記憶部１ｃｄに記憶されたつなぎジョブを模式的に示す図である。つなぎジョブ記憶部１ｃｄには、つなぎジョブ作成部２５によりつなぎジョブが作成されると、作成されたつなぎジョブが順次記憶されていく。
【０１５４】
このとき、全体動作時間の予測のためには、新たに作成されたつなぎジョブをロボット３が実行するにあたって必要な所要時間を見積もる必要がある。そこで、図３に示すように、つなぎジョブ２５により作成されたつなぎジョブは、つなぎジョブシミュレータ２６にも受け渡され、コンピュータシミュレーションにより、仮想的に実行されることで、その動作に必要な所要時間が見積もられる。見積もられた所要時間はつなぎジョブ記憶部１ｃｄに記憶され、図１４に示したように、記憶されたつなぎジョブごとにその所要時間が記憶される。
【０１５５】
また、つなぎジョブシミュレータ２６は、単にロボット３の動作シミュレーションのみを行うことで、その所要時間を推定するものであってもよいが、さらに、ロボット３のみならず、作業用機器を含めた処理システム２００で使用される機器の３Ｄモデルである、作業モデルを仮想空間内で動作させるものであってよい。その場合、つなぎジョブシミュレータ２６は、作業モデル記憶部１に記憶された作業モデルを参照して、仮想空間内でかかる作業モデルを動作させることで、モデル間の干渉の有無を検証することができる。検証結果はつなぎジョブ作成部２５にフィードバックされることで、つなぎジョブ作成部２５は、モデル間の干渉を起こさない経路でつなぎジョブを作成することができる。
【０１５６】
図３に戻り、全体作業時間予測部３０は、ユーザからの適宜の指示等に応じ、作業フロー全体の実行に要する時間である全体時間を予測する。この予測には、改めてシミュレーションを行う必要はなく、ロボット動作指令を参照し、ロボット動作指令に含まれる単位ジョブそれぞれの所要時間を単位ジョブ群記憶部１ｃｂを参照して求め、また、つなぎジョブそれぞれの所要時間をつなぎジョブ記憶部１ｃｄを参照して求め、合算すればよいので、作業フローの実行時間を予測するにあたり、長時間の計算（シミュレーション）や、実機であるロボット３の実動作は不要である。
【０１５７】
予測された全体時間は、全体作業時間表示部３１により、モニタ１ｈに表示される。これより、ユーザは、処理全体の実行に要する時間を把握できるため、例えば、処理結果を所望の日時に得たい場合には、どれくらい前から作業を開始すればよいのか、また、決められた期間内で何回処理を繰り返し実行することができるのかといったことが、実機を動作させることなく事前に把握できるので便利である。
【０１５８】
ところで、本実施形態では、ロボット３は、ロボット３の内部に原点を有するロボット座標系ＳＲによりその位置が指定され、動作を行う。これに対し、単位ジョブ群記憶部１ｃｂに記憶された単位ジョブ群に含まれる単位ジョブは、その単位ジョブで取り扱う作業用機器毎に定められたローカル座標系ＳＬによりその位置が指定されていてよい。そして、単位ジョブには、ローカル座標系ＳＬを指定する座標系指定指令と、当該ローカル座標系ＳＬに基づく移動指令が含まれてよい。この理由を、マイクロチューブ６に液剤を吐出する単位ジョブを例にとり、図１５を参照して説明する。
【０１５９】
図１５は、メインラック５ｂに関するローカル座標系ＳＬと、マイクロチューブ６に液剤を吐出する単位ジョブにおけるハンドの移動経路を示す図である。メインラック５ｂは作業台の指定の位置に固定設置されるが、設置時の誤差や、形状の個体差などの理由により、必ずしも毎回正確な位置に設置されるとは限らない。図１５では、かかる誤差の例として、メインラック５ｂがロボット座標系ＳＲに対して角度θだけ傾いている場合を誇張して示している。このような場合には、液剤を吐出する作業において、ロボットアーム先端のハンドの位置が若干変わることはもちろん、ハンドに把持されたピペット４を角度θだけ傾けて、ハンドを斜めに移動させる必要がある。
【０１６０】
かかる修正を、メインラック５ｂの設置誤差に基づいて、単位ジョブの移動指令に反映させることは現実的ではない。なぜなら、メインラック５ｂを設置しなおすために誤差の値は変化するため、そのたびに単位ジョブ群記憶部１ｃｂに記憶された単位ジョブを修正しなければならなくなるし、また、かかる修正が必要であるならば、メインラック５ｂを実際に設置して設置誤差を測定するまでは、単位ジョブの作成が行えないことになってしまうからである。
【０１６１】
そこで、本実施形態に係る座標系指定部２３ｄは、機器に付随するローカル座標系ＳＬを設定し、かかるローカル座標系ＳＬを指定する座標系指定命令を単位ジョブにふくませる。そして、かかる単位ジョブ内の移動命令は、このローカル座標系ＳＬにより指定された移動命令である。したがって、図１５において、メインラック５ｂの位置である基準点７０と、マイクロチューブ６に対して作業を行う作業点７６は、ローカル座標系ＳＬで記述されている。
【０１６２】
ローカル座標系ＳＬの原点と向きは、メインラック５ｂの測定の容易な位置に設定される。例えば、図１５に示したように、メインラック５ｂの角を原点とし、メインラック５ｂの辺の向きを座標軸の向きとする。このようにすることで、単位ジョブに含まれる移動命令は、作業用機器であるメインラック５ｂに対する相対位置として指定すればよく、メインラック５ｂの設置誤差には依存しない。
【０１６３】
そして、ロボット制御装置２は、ロボット３を動作させるに際し、ロボット座標系ＳＲとローカル座標系ＳＬとの誤差を含む位置関係を予め測定し与えておくことで、ローカル座標系ＳＬと容易にロボット座標系ＳＲに座標変換してロボット３を動作させることができる。具体的には、ローカル座標系ＳＬを用いてメインラック５ｂに対する液剤吐出の動作を記述することで、ロボット３の動作は、結果として、ロボット座標系ＳＲにおいて位置のずれた基準点７０を開始位置として、ピペット４を角度θ傾けて把持し、角度θ傾いた移動経路７３ｃに沿って移動して作業点７６において液剤吐出を行い、角度θ傾いたまま移動経路７３ｃに沿って基準点７０に戻る動作となる。
【０１６４】
このように、単位ジョブを、当該作業ジョブで取り扱う作業用機器毎に定められたローカル座標系ＳＬにより記述することで、作業用機器の設置誤差を意識することなく単位ジョブを作成することができ、その生産性及び保守性が向上する。また、作業用機器の設置誤差の構成は、設置時に行えば足り、その結果に応じて座標を再計算してロボット制御指令自体を書き換える必要はないので、省力化が図られる。
【０１６５】
以上説明した実施形態の構成は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成そのものに限定することは意図されていない。当業者はこれら開示された実施形態に種々の変形、例えば、機能や操作方法の変更や追加等を加えてもよく、また、フローチャートに示した制御は、同等の機能を奏する他の制御に置き換えてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。
【符号の説明】
【０１６６】
１  動作指令生成装置、１ａ  ＣＰＵ、１ｂ  ＲＡＭ、１ｃ  静的記憶装置、１ｃａ  コマンド定義データベース、１ｃｂ  単位ジョブ群記憶部、１ｃｃ  状態情報データベース、１ｃｄ  つなぎジョブ記憶部、１ｃｅ  作業モデル記憶部、１ｃｆ  ロボット動作指令記憶部、１ｄ  ＧＣ、１ｅ  入力デバイス、１ｆ  Ｉ／Ｏ、１ｇ  データバス、１ｈ  モニタ、２  ロボット制御装置、３  ロボット、４  ピペット、５ａ  チューブラック、５ｂ  メインラック、５ｃ  傾斜台、６  マイクロチューブ、６ａ  第１のマイクロチューブ、６ｂ  第２のマイクロチューブ、７  チップラック、８  チップ、９  恒温槽、１０  ピペットラック、１１  ボルテックスミキサー、１２  遠心分離器、１３  ダストボックス、２０  全体作業フロー取得部、２１  作業コマンド抽出部、２２  コマンド定義抽出部、２３  単位ジョブセット生成部、２４  状態情報生成部、２５  つなぎジョブ生成部、２６  つなぎジョブシミュレータ、２７  ロボット動作指令生成部、２８  ロボット動作指令表示部、２９  ロボット動作指令出力部、３０  全体作業時間予測部、３１  全体作業時間表示部、５０  コマンド、５１  対象、５２  引数、６０  状態表、６０ａ〜６０ｇ  状態情報、６１  状態対応表、６１ａ〜６１ｄ  状態対応表、７０  基準点、７１  矢線、７２  位置、７３  矢線、７３ａ，７３ｂ  矢線、７３ｃ  移動経路、７４  位置、７５  矢線、７６  作業点、８０  第１の移動命令、８１  第２の移動命令、１００  初期シンボル、１０１  最終シンボル、１０２  順序線、１０３  処理シンボル、１０４  追加線、１０５  容器数シンボル、２００  処理システム、３００  単位ジョブ群。
【図１】
2018167361.tif 000003
【図２】
2018167361.tif 000004
【図３】
2018167361.tif 000005
【図４】
2018167361.tif 000006
【図５】
2018167361.tif 000007
【図６】
2018167361.tif 000008
【図７】
2018167361.tif 000009
【図８】
2018167361.tif 000010
【図９】
2018167361.tif 000011
【図１０】
2018167361.tif 000012
【図１１】
2018167361.tif 000013
【図１２】
2018167361.tif 000014
【図１３】
2018167361.tif 000015
【図１４】
2018167361.tif 000016
【図１５】
2018167361.tif 000017