(57)【要約】【課題】対象物の計測精度とロボットの動作精度とを考慮したロボット動作計画を容易に決定する。【解決手段】ロボット制御装置２０は、対象物４０に対して作業を実行するロボット装置１０を制御する。ロボット制御装置２０は、対象物４０の位置姿勢を計測可能な計測手段である形状取得装置３０の計測精度に関する情報と、ロボット装置１０の動作精度に関する情報と、上記作業に関する情報とを取得する。また、ロボット制御装置２０は、取得した情報に基づいて、ロボット装置１０が作業を実行する空間を規定するためのロボット装置１０の動作計画を決定する。【選択図】      図１
2016159406.tif 000002
【特許請求の範囲】
【請求項１】
対象物に対して作業を実行するロボットを制御するロボット制御装置であって、
前記対象物の位置姿勢を計測可能な計測手段の計測精度に関する情報と、前記ロボットの動作精度に関する情報と、前記作業に関する情報とを取得する取得手段と、
前記取得手段によって取得した情報に基づいて、前記ロボットが前記作業を実行する空間を規定するための前記ロボットの動作計画を決定する決定手段を備えることを特徴とするロボット制御装置。
【請求項２】
前記決定手段は、
前記計測手段の計測精度に関する情報と、前記ロボットの動作精度に関する情報とに基づいて、前記計測精度と前記動作精度とが保証された精度保証空間を導出する第一の導出手段と、
前記作業に関する情報に基づいて、前記ロボットによる前記作業の実行に必要な作業必要空間を導出する第二の導出手段と、
前記作業必要空間が前記精度保証空間内に配置されるような前記動作計画を導出する第三の導出手段と、を備えることを特徴とする請求項１に記載のロボット制御装置。
【請求項３】
前記作業に関する情報は、前記作業に必要な精度に関する情報を含み、
前記第三の導出手段は、前記作業必要空間が、前記作業に必要な精度を満たす前記精度保証空間内に配置されるような前記動作計画を導出することを特徴とする請求項２に記載のロボット制御装置。
【請求項４】
前記作業は、複数のタスクを含んで構成されており、
前記第二の導出手段は、前記ロボットによる前記タスクの実行にそれぞれ要する複数のタスク必要空間を包括する空間を前記作業必要空間として導出し、
前記第三の導出手段は、前記複数のタスク必要空間が、それぞれ各タスクに必要な精度を満たす前記精度保証空間内に配置されるような前記動作計画を導出することを特徴とする請求項３に記載のロボット制御装置。
【請求項５】
前記第三の導出手段は、前記作業必要空間と前記精度保証空間との重なり空間を評価するための評価関数の最適化計算により、前記動作計画を導出することを特徴とする請求項２〜４のいずれか１項に記載のロボット制御装置。
【請求項６】
前記第一の導出手段は、
前記計測手段の計測精度に関する情報に基づいて、前記計測手段の計測精度が保証された計測精度保証空間を導出する第四の導出手段と、
前記ロボットの動作精度に関する情報に基づいて、前記ロボットの動作精度が保証された動作精度保証空間を導出する第五の導出手段と、を備え、
前記計測精度保証空間と前記動作精度保証空間とが重複する空間を前記精度保証空間として導出することを特徴とする請求項２〜５のいずれか１項に記載のロボット制御装置。
【請求項７】
前記第四の導出手段は、前記計測手段の分解能を示す値が所定の第一の基準値以下となる空間を、前記計測精度保証空間として導出することを特徴とする請求項６に記載のロボット制御装置。
【請求項８】
前記第四の導出手段は、複数の前記第一の基準値を用いて、保証精度の異なる前記計測精度保証空間を複数導出することを特徴とする請求項７に記載のロボット制御装置。
【請求項９】
前記第五の導出手段は、前記ロボットの制御誤差を示す値が所定の第二の基準値以下となる空間を、前記動作精度保証空間として導出することを特徴とする請求項６〜８のいずれか１項に記載のロボット制御装置。
【請求項１０】
前記第五の導出手段は、複数の前記第二の基準値を用いて、保証精度の異なる前記動作精度保証空間を複数導出することを特徴とする請求項９に記載のロボット制御装置。
【請求項１１】
前記決定手段は、前記ロボットが備える複数の腕の動作計画をそれぞれ決定することを特徴とする請求項１〜１０のいずれか１項に記載のロボット制御装置。
【請求項１２】
前記決定手段は、前記対象物を支持する少なくとも１本の支持腕、及び当該支持腕が支持する前記対象物に対して精密作業を実行する少なくとも１本の精密腕の動作計画をそれぞれ決定することを特徴とする請求項１１に記載のロボット制御装置。
【請求項１３】
前記決定手段による前記ロボットの動作計画の決定状況をユーザに通知する通知制御手段をさらに備えることを特徴とする請求項１〜１２に記載のロボット制御装置。
【請求項１４】
対象物に対して作業を実行するロボットを制御するロボット制御方法であって、
前記対象物の位置姿勢を計測可能な計測手段の計測精度に関する情報と、前記ロボットの動作精度に関する情報と、前記作業に関する情報とを取得するステップと、
取得した情報に基づいて、前記ロボットが前記作業を実行する空間を規定するための前記ロボットの動作計画を決定するステップと、を含むことを特徴とするロボット制御方法。
【請求項１５】
ロボットと、
前記請求項１〜１３のいずれか１項に記載のロボット制御装置と、
前記決定手段が決定した前記ロボットの動作計画に基づいて、前記ロボットを駆動制御する駆動制御手段と、を備えることを特徴とするロボットシステム。
【請求項１６】
コンピュータを、前記請求項１〜１３のいずれか１項に記載のロボット制御装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対象物に対して作業を実行するロボットを制御するためのロボット制御装置、ロボット制御方法及びロボットシステムに関する。
【背景技術】
【０００２】
近年のロボット技術の発展とともに、製品の組立作業や解体作業のような複雑なタスクを、人間の代わりにロボットが行うようになりつつある。このようなロボットは、ハンドなどのエンドエフェクタによって部品を把持するなどにより所定の作業を行う。
従来、ロボットによって対象物の把持等を行うロボットハンドリング装置として、特許文献１に記載の技術がある。この技術は、三次元視覚センサによって対象物の位置を検出し、検出した対象物の位置に基づいて、ロボットハンドを対象物の把持位置に位置決めし、対象物を把持するものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第３７０２２５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ロボットによる高精度な作業を実現するためには、ロボットの動作計画を適切に決定する必要がある。具体的には、センサによって対象物を高精度に計測できる空間範囲や、ロボットが高精度に動作することができる空間範囲を考慮して、ロボットが作業を実行する空間を規定する必要がある。しかしながら、上記特許文献１に記載の技術では、ユーザがプログラミングにより上記のような最適な動作計画を決定しなければならず、膨大な工数がかかる。
そこで、本発明は、対象物の計測精度とロボットの動作精度とを考慮した適切なロボット動作計画を容易に決定することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明に係るロボット制御装置の一態様は、対象物に対して作業を実行するロボットを制御するロボット制御装置であって、前記対象物の位置姿勢を計測可能な計測手段の計測精度に関する情報と、前記ロボットの動作精度に関する情報と、前記作業に関する情報とを取得する取得手段と、前記取得手段によって取得した情報に基づいて、前記ロボットが前記作業を実行する空間を規定するための前記ロボットの動作計画を決定する決定手段を備える。
【発明の効果】
【０００６】
本発明によれば、対象物の計測精度とロボットの動作精度とを考慮した適切なロボット動作計画を容易に決定することができる。
【図面の簡単な説明】
【０００７】
【図１】本実施形態のロボットシステムの一例を示す構成図である。
【図２】ロボット制御装置のハードウェア構成例を示す図である。
【図３】ロボット制御処理の流れを示すフローチャートである。
【図４】動作計画作成処理の流れを示すフローチャートである。
【図５】タスク情報及びジョブ情報の内容を示す図である。
【図６】ジョブ必要空間範囲について説明する図である。
【図７】精度保証範囲とジョブ必要空間範囲との関係を示す図である。
【図８】計測精度保証範囲とジョブ必要空間範囲との関係を示す図である。
【図９】本実施形態の応用例を説明するための図である。
【図１０】本実施形態の応用例を説明するための図である。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照して、本発明を実施するための形態について詳細に説明する。
なお、以下に説明する実施の形態は、本発明の実現手段としての一例であり、本発明が適用される装置の構成や各種条件によって適宜修正又は変更されるべきものであり、本発明は以下の実施の形態に限定されるものではない。
（第一の実施形態）
図１は、本実施形態におけるロボット制御装置を備えるロボットシステム１００の構成例を示す図である。
ロボットシステム１００は、ロボット装置１０と、ロボット制御装置２０と、形状取得装置３０と、を備える。ロボット装置１０は、第一のロボット装置１１と第二のロボット装置１２とを備える。これらロボット装置１１及び１２は、例えば多関節ロボットであり、ロボットの各関節の角度を変更することで手先部の位置姿勢を変更可能な位置姿勢変更機構をそれぞれ備える。位置姿勢変更機構は、電動モータによって駆動されてもよいし、油圧や空気圧等の流体圧で作動するアクチュエータによって駆動されてもよい。この位置姿勢変更機構は、ロボット制御装置２０によって作成される動作指示情報をもとに駆動される。
【０００９】
さらに、各ロボット装置１１及び１２の手先部には、それぞれエンドエフェクタ１３及び１４が取り付けられている。エンドエフェクタ１３及び１４は、ロボット装置１１及び１２のワークの種類に応じた作業を実現するためのツールであり、例えばロボットハンド等である。当該ロボットハンドとしては、モータ駆動可能なチャック機構を有し物体を把持可能なハンドや、空気圧で物体を吸着する吸着パッドを用いたハンド等を用いることができる。なお、エンドエフェクタ１３及び１４は、アームに対して着脱可能に取り付けられており、ワークの種類に応じて交換可能である。なお、ロボット１０は、多関節ロボットに限定されるものではなく、数値制御（Numerical Control：ＮＣ）可能な可動式の機械であってもよい。
【００１０】
本実施形態では、ロボット装置１０が、例えば複写機の解体作業を行う場合について説明する。すなわち、ロボット装置１０の作業対象となる対象物４０は、例えばトナーカートリッジ等の容器である。当該トナーカートリッジには、複数のネジが部品として取り付けられている。ロボット装置１０は、上記対象物４０を把持して固定し、当該対象物４０に取り付けられたネジを取り外す作業を実行するものとする。例えば、第一のロボット装置１１は、対象物４０を支持することを目的とする支持腕、第二のロボット装置１２は、ネジを取り外す等の精密な作業を行うことを目的とする精密腕として機能する。この場合、第二のロボット装置１２のエンドエフェクタ１４は、ネジを取り外すためのドライバとなる。なお、ロボット装置１０の作業はこれに限定されるものではない。
【００１１】
形状取得装置３０は、対象物４０の形状を示す情報を取得し、当該情報をロボット制御装置２０へ出力する。形状取得装置３０は、ロボット装置１０に搭載してもよいし、他の作業機械に搭載してもよいし、更には所定の撮影対象空間の上空に固定配置してもよい。
形状取得装置３０は、例えばプロジェクタ（投影手段）とカメラ（撮像手段）とを備え、三角測量の原理を用いて対象物４０に関する三次元情報（距離画像や三次元点群データ）を取得する。すなわち、プロジェクタは、対象物４０に対してパターン光を投射し、カメラは、当該パターン光が投射された対象物４０の二次元画像を撮影する。形状取得装置３０は、上記カメラで撮影した画像データをロボット制御装置２０に出力する。ここで、パターン光としては、空間符号化法の幅の異なる複数の縞模様パターンや、複数の線パターンなどを利用することができる。なお、形状取得装置３０は、対象物４０の三次元情報および二次元画像を取得可能であれば、上記構成に限定されるものではない。
【００１２】
ロボット制御装置２０は、ロボット装置１０の動作計画を決定し、当該動作計画に基づいてロボット装置１０を制御するロボット制御処理を実行する。本実施形態では、ロボット制御装置２０は、形状取得装置３０の対象物４０の計測精度と、ロボット装置１０（エンドエフェクタ１４）の動作精度とを考慮した動作計画を決定する。具体的には、ロボット制御装置２０は、上記計測精度と上記動作精度とに基づいて、ロボット装置１０の作業を実行する空間を規定するための動作計画を決定する。本実施形態では、ロボット装置１０は、形状取得装置３０の計測精度保証範囲とロボット装置１０の動作精度保証範囲とに、ロボット装置１０の作業必要範囲が含まれるように、ロボット装置１０の動作計画を決定する。
【００１３】
ここで、上記計測精度保証範囲とは、形状取得装置３０が高精度に対象物４０を計測できる空間範囲（計測精度が保証された範囲）である。また、上記動作精度保証範囲とは、ロボット装置１０が高精度に動作できる空間範囲（動作精度が保証された範囲）である。さらに、上記作業必要範囲とは、ロボット装置１０による作業の実行に必要な空間範囲である。このロボット制御装置２０は、例えばパーソナルコンピュータ（ＰＣ）により構成されており、図１に示す各部２０１〜２１２を備える。
【００１４】
形状取得部２０１は、形状取得装置３０が取得した対象物４０の三次元情報及び二次元画像を取得し、これを位置姿勢計測部２０２に出力する。位置姿勢計測部２０２は、形状情報保持部２０３が予め保持する対象物４０の形状モデルをもとに、対象物４０の位置及び姿勢を計測する。ここで、上記形状モデルとしては、三次元ＣＡＤに基づく三次元幾何モデルや、実際の対象物４０もしくは対象物４０を模した三次元幾何モデルを予め定められた複数の視点から見た参照画像モデル等が挙げられる。位置姿勢計測部２０２は、対象物４０の位置姿勢情報を、状態保持部２０４に記録すると共に動作計画算出部２０５に出力する。
【００１５】
状態保持部２０４は、ロボット装置１０の位置姿勢情報や、形状取得装置３０の位置姿勢情報および計測パラメータ情報を保持する。ここで、計測パラメータ情報は、形状取得装置３０の光学条件（視野角や焦点面までの距離等）や誤差情報等を含む。
動作計画算出部２０５は、位置姿勢計測部２０２が出力する対象物４０の位置姿勢情報、状態保持部２０４が保持する各種情報、及び工程情報保持部２０６が保持する工程情報に基づいて、ロボット装置１０の動作計画を算出する。ここで、工程情報は、ロボット装置１０による対象物４０への操作に関する情報（後述するタスク情報）を含む。
動作計画算出部２０５は、算出した動作計画を動作計画記憶部２０７に記憶すると共に、動作決定部２０８に出力する。動作計画の算出は処理工数がかかるため、一度算出した動作計画を動作計画記憶部２０７に記憶し参照可能とすることで、演算負荷を削減する。
【００１６】
動作決定部２０８は、動作計画算出部２０５が算出した動作計画に基づいて、ロボット装置１１及び１２の動作指令情報をそれぞれ作成する。そして、動作決定部２０８は、第一のロボット装置１１の動作指令情報を第一のロボット制御部２０９に出力する。また、動作決定部２０８は、第二のロボット装置１２の動作指令情報を第二のロボット制御部２１０に出力する。通知部２１１は、ロボット制御装置２０の状態やロボット制御処理の処理結果等を使用者に通知する。通知の手段としては、例えばＬＥＤランプやディスプレイ装置などを用いることができる。なお、上記の各部２０８〜２１１は、ロボット制御装置２０に搭載されている必要はなく、別装置に搭載されていてもよい。
外部Ｉ／Ｆ部２１２は、第一のロボット制御部２０９が作成した動作指示情報を第一のロボット装置１１に送信する。また、外部Ｉ／Ｆ部２１２は、第二のロボット制御部２１０が作成した動作指示情報を第二のロボット装置１２に送信する。さらに、外部Ｉ／Ｆ部２１２は、形状取得装置３０が取得した情報を受信し、これを形状取得部２０１へ送信する。
【００１７】
（ロボット制御装置２０のハードウェア構成）
図２は、ロボット制御装置２０のハードウェア構成の一例である。
ロボット制御装置２０は、ＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、外部メモリ２  ４と、入力部２５と、表示部２６と、通信Ｉ／Ｆ２７と、システムバス２８とを備える。
ＣＰＵ２１は、ロボット制御装置２０における動作を統括的に制御するものであり、システムバス２８を介して、各構成部（２２〜２７）を制御する。ＲＯＭ２２は、ＣＰＵ２１が処理を実行するために必要な制御プログラム等を記憶する不揮発性メモリである。なお、当該プログラムは、外部メモリ２４や着脱可能な記憶媒体（不図示）に記憶されていてもよい。ＲＡＭ２３は、ＣＰＵ２１の主メモリ、ワークエリア等として機能する。すなわち、ＣＰＵ２１は、処理の実行に際してＲＯＭ２２から必要なプログラム等をＲＡＭ２３にロードし、当該プログラム等を実行することで各種の機能動作を実現する。
【００１８】
外部メモリ２４は、例えば、ＣＰＵ２１がプログラムを用いた処理を行う際に必要な各種データや各種情報等を記憶している。また、外部メモリ２４には、例えば、ＣＰＵ２１がプログラム等を用いた処理を行うことにより得られた各種データや各種情報等が記憶される。入力部２５は、例えばキーボードやマウス等のポインティングデバイスにより構成され、オペレータが入力部２５を介して当該ロボット制御装置２０に指示を与えることができるようになっている。表示部２６は、液晶ディスプレイ（ＬＣＤ）等のモニタで構成される。通信Ｉ／Ｆ２７は、外部装置（図１では、ロボット装置１０や形状取得装置３０）と通信するためのインターフェースである。システムバス２８は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、外部メモリ２４、入力部２５、表示部２６及び通信Ｉ／Ｆ２７を通信可能に接続する。
【００１９】
以下、ロボット制御装置２０が実行する処理について具体的に説明する。
（ロボット制御処理）
図３は、ロボット制御装置２０が実行するロボット制御処理手順を示すフローチャートである。図３に示される処理は、図２のＣＰＵ２１が、ＲＯＭ２２もしくは外部メモリ２４に格納されたプログラムを読み出して実行することにより実現される。ただし、図３の処理の一部または全部が、専用のハードウェアにより実現されてもよい。
先ずＳ１において、ＣＰＵ２１は、システムの初期化処理を行う。すなわち、ロボット装置１０のロボットコントローラおよび他の接続機器との接続を初期化し、ロボット制御装置２０のプログラムを実行可能な状態とする。
【００２０】
次にＳ２において、ＣＰＵ２１は、形状取得装置３０を制御し、対象物４０を計測する。そして、形状取得部２０１は、形状取得装置３０から対象物４０の三次元情報を取得する。次に、位置姿勢計測部２０２は、対象物４０のパターンマッチング処理を行う。このとき、位置姿勢計測部２０２は、形状情報保持部２０３が保持する対象物４０の形状モデルを参照し、例えばＩＣＰ（Iterative Closest Point）アルゴリズム等によって対象物４０の位置姿勢を算出する。位置姿勢計測部２０２は、算出した対象物４０の位置姿勢情報を、動作計画算出部２０５に出力すると共に、状態保持部２０４に記録する。
【００２１】
Ｓ３では、動作計画算出部２０５は、ロボット装置１０の動作計画を決定する動作計画決定処理を実施する。このＳ３において、動作計画算出部２０５は、工程情報保持部２０６から工程情報を取得し、ロボット装置１０による対象物４０への操作を実現するための動作計画を決定する。動作計画算出部２０５は、上記工程情報と、形状取得装置３０の空間的な計測分解能である計測精度情報と、ロボット装置１１及び１２の空間的な制御精度である動作精度情報と基づいて上記動作計画を決定する。ここで、形状取得装置３０の計測精度情報は、形状取得装置３０の位置姿勢や計測パラメータ情報（光学条件や誤差情報）によって決まる。また、ロボット装置１０の動作精度情報は、各ロボット装置１１及び１２の関節条件（関節角度、可動域等）や機械的誤差によって決まる。
【００２２】
動作計画算出部２０５は、対象物４０への操作の実現に要するロボット装置１０の作業必要範囲が、形状取得装置３０の計測精度を保証する計測精度保証範囲と、ロボット装置１０の動作精度を保証する動作精度保証範囲とに収まるように、上記動作計画を決定する。当該動作計画としては、例えばロボット装置１１及び１２のアームの移動開始点（座標）と移動終了点（座標）とを決定する。この動作計画決定処理については後で詳述する。
【００２３】
Ｓ４では、動作決定部２０８は、Ｓ３において決定した動作計画に基づいて、各ロボット装置１１及び１２の移動開始点から移動終了点までのアームの軌道制御や、ハンド部分の開閉制御などを実施するための動作指令情報を作成する。具体的には、動作決定部２０８は、各ロボット装置１１及び１２のアームの軌道計算を行い、当該アームの各関節の角度情報を時系列に算出する。軌道計算には、例えばＲＲＴ（Rapidly-exploring Random Tree）などのアルゴリズムを用いることができる。ここでは、予めわかっている障害物や、オンライン時に検出された障害物、対象物体４０などの衝突を回避した軌道を算出できればよい。動作決定部２０８は、作成した動作指令情報を第一のロボット制御部２０９や第二のロボット制御部２１０へ出力する。これにより、ロボット装置１０の動作指示が行われる。
【００２４】
Ｓ５では、ＣＰＵ２１は、ロボット装置１０による操作（ジョブ）の動作計画がすべて完了したか否かを判定する。そして、完了していない場合には、動作計画の決定処理を継続すると判断してＳ２に戻り、完了している場合にはＳ６に移行する。Ｓ６では、ＣＰＵ２１は、所定のシステム終了処理（例えば、他の接続機器との接続の切断等）を実施してから図３に示す処理を終了する。
なお、本実施形態では、上記のＳ３において、通知部２１１が、精度に関する情報を表示部２６に表示してもよい。例えば、通知部２１１は、ロボット装置１０の作業必要範囲が形状取得装置１０の計測精度保証範囲内に含まれているかどうか等を、３ＤのグラフィックスでロボットのＣＧに重畳して表現したものを表示部２６に表示してもよい。これにより、ユーザによる状況確認が容易となる。
また、本実施形態では、形状取得装置３０が三次元情報を取得し、当該三次元情報に基づいて対象物４０の位置姿勢を計測しているが、これに限定されるものではない。例えば、二次元情報やその他の位置姿勢センサなどによる計測結果を用いて、対象物４０の位置姿勢を計測してもよい。
【００２５】
（動作計画決定処理）
図４は、図３のＳ３において実行する動作計画決定処理手順を示すフローチャートである。先ずＳ３０１において、動作計画算出部２０５は、対象物４０の位置姿勢情報を状態保持部２０４から取得する。ここで動作計画算出部２０５が取得する位置姿勢情報は、対象物４０に取り付けられたネジ等、ロボット装置１０の操作の実行の対象となる実行対象物の位置姿勢情報を含む。次にＳ３０２では、動作計画算出部２０５は、ロボット装置１０が対象物４０を把持しているか否かを判定する。そして、ロボット装置１０が対象物４０を把持していない場合にはＳ３０３に移行し、把持している場合にはＳ３０６に移行する。
ロボット装置１０が対象物４０を把持していない場合、動作計画算出部２０５は、Ｓ３０３〜Ｓ３０５において、第一のロボット装置１１が対象物４０を把持するための把持計画を決定する。
【００２６】
先ずＳ３０３において、動作計画算出部２０５は、第一のロボット装置１１のアームの姿勢変化の軌道を算出する。当該軌道の算出には、例えばＦｏｒｃｅ−Ｃｌｏｓｕｒｅ（力拘束）による把持姿勢評価を用いた経路計画アルゴリズム等を利用することができる。経路計画アルゴリズムとしては、例えばＲＲＴ等を利用することができる。次にＳ３０４では、動作計画算出部２０５は、Ｓ３０３において決定した把持姿勢に関する情報に基づいて、第一のロボット装置１１による把持姿勢の開始位置と終了位置とを決定する。Ｓ３０５では、動作計画算出部２０５は、対象物４０を把持するためのエンドエフェクタ１３の開閉動作計画を算出する。このように、ロボット装置１０が対象物４０を把持していない場合、動作計画算出部２０５は、把持計画を決定して図３のメインルーチンに戻る。これにより、対象物４０の把持が行われる。
【００２７】
また、上記のＳ３０２において、ロボット装置１０が対象物４０を把持していると判断された場合には、動作計画算出部２０５は、Ｓ３０６〜Ｓ３１５において、第二のロボット装置１２が対象物４０に対する操作を実行するための動作計画を決定する。
先ずＳ３０６において、動作計画算出部２０５は、過去に同じ対象物４０に対する操作を行ったことがあるか否かを判定する。具体的には、動作計画算出部２０５は、動作計画記憶部２０７を参照し、過去のジョブ情報を確認する。そして、動作計画算出部２０５は、過去に同じジョブ情報を構築して実行したことがあるかどうかを確認する。
ここで、ジョブ情報について、図５を参照しながら説明する。この図５に示すように、ジョブ情報５１は、ｎ個（ｎ≧１）のタスク情報５０ｎの配列によって構成される。すなわち、対象物４０へのジョブは、いくつかの所定の動作で構成されるタスクを少なくとも１つ実行することで実現される。
【００２８】
タスク情報５０は、ロボット装置１０の基本動作を示すものである。例えば、本実施形態の場合、「ドライバがネジに接触する」、「ドライバを回してネジを緩める」、「ドライバによってネジを保持する」といった特定のロボットの動作がタスクとなる。そして、これらの特定のロボットの動作であるタスクを組み合わせることで、「ネジを取り外す」といった１つのジョブを実現する。上記動作計画の算出は、このタスクの組み合わせを算出することを含む。工程情報保持部２０６は、工程情報として、さまざまなロボット動作に対応する複数のタスク情報５０を保持している。
タスク情報５０は、タスク名５０１、タスク必要精度５０２、タスク必要空間範囲５０３、対象物との相対位置姿勢５０４、タスク前状態５０５、タスク後状態５０６、タスク実行プログラム５０７、タスク実行時間５０８を含む。
【００２９】
タスク名５０１は、タスクを特定するためのユニークな名前である。タスク必要精度５０２は、このタスクを実行するために必要な精度がどの程度であるかを示す情報である。タスク必要空間範囲５０３は、このタスクを実行するために必要な空間がどの程度であるかを示す情報である。対象物との相対位置姿勢５０４は、このタスクを実行する際の開始地点となる位置姿勢を示している。タスク前状態５０５は、このタスクを実行する際に必要となる状態を示す状態情報である。タスク後状態５０６は、このタスクを実行したことによって変化する状態を示す状態情報である。タスク実行プログラム５０７は、このタスクを実行する際に呼び出されるプログラムを示している。タスク実行時間５０８は、このタスクを実行する際に必要となる時間を示している。
【００３０】
ジョブ情報５１は、ジョブ名５１１、ジョブ必要精度５１２、ジョブ必要空間範囲５１３、対象物との相対位置姿勢５１４、ジョブ前状態５１５、ジョブ後状態５１６、ジョブ実行時間５１７、ジョブ評価値５１８、タスク情報配列５１９を含む。
ジョブ名５１１は、ジョブを特定するためのユニークな名前である。ジョブ必要精度５１２は、タスク情報配列５１９内のタスク情報で要求されているタスク必要精度５０２のうち最も高い精度の値である。ジョブ必要空間範囲５１３は、タスク情報配列５１９内のタスク情報で要求されているタスク必要空間範囲５０３のすべてのＯＲを行った空間である。対象物との相対位置姿勢５１４は、タスク情報配列５１９内の最初のタスク情報の対象物との相対位置姿勢５０４の値である。ジョブ前状態５１５は、タスク情報配列５１９内の最初のタスク情報のタスク前状態５０５の状態情報である。ジョブ後状態５１６は、タスク情報配列５１９内の最後のタスク情報のタスク後状態５０６の状態情報である。ジョブ実行時間５１７は、タスク情報配列５１９内のすべてのタスク情報のタスク実行時間５０８の合計の値である。ジョブ評価値５１８は、ジョブ全体の効率を示す値である。タスク情報配列５１９は、このジョブ情報を構成するタスク情報５０の配列である。
【００３１】
図４のＳ３０６では、動作計画算出部２０５は、動作計画記憶部２０７に記憶された過去のジョブ情報５１の例えばジョブ名５１１を確認し、過去に同じジョブ情報５１を構築して実行したことがあるかどうかを確認する。そして、動作計画算出部２０５は、過去に同じジョブ情報５１を構築して実行したことがあると判断した場合には、Ｓ３０７に移行し、そのジョブ情報５１を動作計画記憶部２０７から読み込む。一方、過去に同じジョブ情報５１を構築していないと判断した場合にはＳ３０８に移行し、ジョブ情報５１を生成する。
【００３２】
以下、Ｓ３０８におけるジョブ情報５１の生成方法について説明する。
先ず、タスク情報配列５１９の生成方法について説明する。タスク情報配列５１９は、工程情報保持部２０６が保持している全てのタスク情報５０の各種状態を参照し、条件を満たすタスク情報５０を順番につなぐことで生成する。各タスク情報５０には、タスク前状態５０５が存在する。タスク前状態５０５は、タスクを実行する際の前提になる状態を示す情報である。例えば、対象物４０に実行対象物（本実施形態では、ネジ）が存在する状態を「ＳＣＲＥＷ＿ＥＸＩＳＴ」、第二のロボット装置１２が実行対象物を保持している状態を「ＳＣＲＥＷ＿ＨＯＬＤ」などの文字列の配列で示すことができる。また、「対象物４０を発見していない」という状態を「ＴＯＮＥＲＢＯＴＴＬＥ＿ＮＯ＿ＥＸＩＳＴ」のように示すこともできる。このような状態を示す情報は、位置姿勢計測部２０２が上記文字列の配列によって状態保持部２０４に記録する。これにより、ロボットシステムの状態及びロボットシステムが捕捉している状態を把握することができる。
【００３３】
同様に、タスク後状態５０６も、タスクの実行により変化する状態の情報を文字列の配列で示すことができる。そこで、タスク情報配列５１９を生成する場合には、各タスク情報５０のタスク前状態５０５とタスク後状態５０６とを比較し、タスク情報５０の実行の順番を決定する。すなわち、タスク情報配列５１９の前段になるタスク情報５０のタスク後状態５０６が、後段になるタスク情報５０のタスク前状態５０５を内包するものを検索し、随時選択する。そして、最終目的状態であるジョブ後状態５１６が最後のタスク情報５０のタスク後状態５０６に内包された時点で、タスク情報配列５１９の生成は完了する。なお、タスク情報５０の検索の際に、複数のタスク情報５０が選択可能となる場合がある。この場合は、タスク実行時間５０８を比較し、タスク実行時間５０８が最も短いタスク情報５０を選択する。これにより、タクトタイムを最短にするタスク情報配列５１９を生成することができる。
【００３４】
タスク情報配列５１９の生成が完了すると、ジョブ必要精度５１２、ジョブ必要空間範囲５１３、対象物との相対位置姿勢５１４、ジョブ前状態５１５、ジョブ後状態５１６、ジョブ実行時間５１７、及びジョブ評価値５１８を決定することができる。以下、ジョブ必要空間範囲５１３とジョブ評価値５１８との決定方法について説明する。
ジョブ必要空間範囲５１３は、上述したように、このジョブを構成するタスクのタスク必要空間範囲５０３のすべてのＯＲを行った空間である。例えば、ロボット装置１２が実行する、ドライバを用いてネジを外すというジョブを、３つのタスクから構成するものとする。ここで、３つのタスクとは、図６（ａ）に示すネジに接近するタスク（ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ）、図６（ｂ）に示すネジを取り外すタスク（ＳＣＲＥＷ＿ＲＥＭＯＶＥ）、図６（ｃ）に示すネジを保持するタスク（ＳＣＲＥＷ＿ＨＯＬＤ）とする。
【００３５】
なお、図６では、対象物４０にネジ４１〜４４が取り付けられており、当該対象物４０をロボット装置１１が把持しているものとする。また、この図６では、ロボット装置１２がネジ４１を取り外すジョブを実行する例について示している。
図６（ａ）のタスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ」においては、ロボット装置１２のエンドエフェクタ１４は、ネジ４１から所定距離離れた位置から矢印７１に示す方向に移動し、ネジ４１にドライバを接触させる動作をする。このタスクを実行するために、空間６４１が必要となる。この空間６４１の範囲がタスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ」のタスク必要空間範囲となる。
【００３６】
また、図６（ｂ）のタスク「ＳＣＲＥＷ＿ＲＥＭＯＶＥ」においては、ロボット装置１２のエンドエフェクタ１４は、ドライバを回しながら矢印７２に示す方向に移動し、ネジ４１を対象物４０から外す動作をする。このタスクを実行するために、空間６４２が必要となる。この空間６４２の範囲がタスク「ＳＣＲＥＷ＿ＲＥＭＯＶＥ」のタスク必要空間範囲となる。更に、図６（ｃ）のタスク「ＳＣＲＥＷ＿ＨＯＬＤ」においては、ロボット装置１２のエンドエフェクタ１４は、ネジ４１を保持した動作をする。このタスクを実行するために必要となる空間６４３の範囲が、タスク「ＳＣＲＥＷ＿ＨＯＬＤ」のタスク必要空間範囲となる。
したがって、これら３つのタスクによって構成されるジョブに必要なジョブ必要空間範囲５１３は、３つのタスク必要空間範囲６４１〜６４３のＯＲをとった空間となる。このようにして、ジョブ必要空間範囲５１３を決定することができる。
【００３７】
次に、ジョブ評価値５１８の決定方法について説明する。本実施形態においては、タスク情報配列５１９が生成された段階で、対象物との相対位置姿勢５０４からロボットの動作概略がわかる。そこで、ロボット装置１０の開始点と終了点とを、対象物との相対位置姿勢５０４より推定し、そのときにかかるエンドエフェクタ１４の移動距離をジョブ実行にかかるコストの概算値として算出し、これをジョブ評価値５１８とする。
ロボット装置１０が動作する場合、障害物などのリアルタイムな環境情報等を加味して、障害物を避けながら、ロボットの動作計画を遂行するロボットの軌道情報が生成され、最終的なロボットの動作コストが算出できる。しかしながら、ロボットの動作計画算出後の段階では、この処理は演算コストが高い。そこで、本実施形態では、その代替として、上述したようにジョブ実行にかかるコストの概略値を算出し、ジョブ評価値５１８として利用する。したがって、高速にジョブ同士の効率の比較を行うことができる。なお、本実施形態においては、エンドエフェクタ１４の移動距離をジョブ実行の評価関数としたが、他の比較指標を用いてもよい。
【００３８】
図４に戻って、Ｓ３０９では、動作計画算出部２０５は、対象物４０に対する操作の実現に必要な作業必要範囲が、計測精度保証範囲及び動作精度保証範囲に入っているか否かを確認する。すなわち、図７に示すように、計測精度保証範囲６１と動作精度保証範囲６２とが重複する空間範囲である精度保証範囲６３内に、ジョブ必要空間範囲６４が含まれているか否かを判定する。ここで、ジョブ必要空間範囲６４は、ジョブ情報５１のジョブ必要空間範囲５１３から確認することができる。
【００３９】
計測精度保証範囲とは、形状取得装置３０の光学条件などによって決定する空間的な領域である。形状取得装置３０の測定精度は、形状取得装置３０の光学条件や三角測量法による誤差等から決定される。形状取得装置３０の光学条件とは、撮影を行うカメラや投光に使うプロジェクタのレンズの焦点距離や光学センサ（ＣＣＤやＣＭＯＳ）の素子間隔、レンズの光学ズレ量やラジアルレンズ歪み、センサ歪み等の誤差要因などを含む。また、三角測量法による誤差とは、キャリブレーション誤差、カメラやプロジェクタの取り付け誤差などを含む。これらの精度決定要因から算出される空間的な精度（分解能）が、所定の基準値以下である空間を計測精度保証範囲とする。
【００４０】
また、動作精度保証範囲とは、ロボット装置１２の関節条件や機械的誤差などによって決定する空間的な領域である。エンドエフェクタ１４の空間的な制御精度は、ロボット装置１２の関節の動作精度によって決まる。このような精度決定要因から算出される空間的な精度（制御誤差）が、所定の基準値以下である空間を動作精度保証範囲とする。
そして、精度保証範囲６３が存在しない場合や、ジョブ実行空間範囲６４が精度保証範囲６３内に入っていない場合には、動作計画算出部２０５は、Ｓ３１０〜Ｓ３１２において、ジョブ実行空間範囲６４を精度保証範囲６３内に配置するためのロボット装置１０の動作計画を算出する。
【００４１】
先ずＳ３１０では、動作計画算出部２０５は、ジョブ情報５１からジョブ必要空間範囲を取得する。次にＳ３１１では、動作計画算出部２０５は、Ｓ３１０において取得したジョブ必要空間範囲を内包する精度保証範囲を算出する。このとき、動作計画算出部２０５は、実行すべき各タスクのタスク必要精度を考慮して精度保証範囲を算出する。具体的には、ジョブ必要空間範囲を構成する各タスク必要空間範囲が、それぞれ各タスクのタスク必要精度を満たす精度保証範囲内に配置されるようにする。
【００４２】
精度保証範囲の保証精度は、上述した基準値によって決定される。ここで、当該基準値を１つのみではなく複数設定すれば、保証精度の異なる精度保証範囲を段階的に設定することができる。例えば、図８に示すように、範囲６１１→６１２→６１３→６１４の順に段階的に保証精度が低下する計測精度保証範囲を設定することができる。ここで、例えば、範囲６１１の計測精度は０．１［ｍｍ］、範囲６１２の計測精度は１．０［ｍｍ］、範囲６１３の計測精度は２．０［ｍｍ］、範囲６１４の計測精度は３．０［ｍｍ］である。
【００４３】
また、１つのジョブを構成する各タスクのタスク必要精度はそれぞれ異なり得る。例えば、上述した３つのタスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ」、「ＳＣＲＥＷ＿ＲＥＭＯＶＥ」、「ＳＣＲＥＷ＿ＨＯＬＤ」のタスク必要精度はそれぞれ異なる。例えば、タスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ」の必要精度は０．１［ｍｍ］、タスク「ＳＣＲＥＷ＿ＲＥＭＯＶＥ」の必要精度は１．０［ｍｍ］、タスク「ＳＣＲＥＷ＿ＨＯＬＤ」の必要精度は２．０［ｍｍ］である。
【００４４】
したがって、この場合、ジョブ必要空間範囲の位置姿勢（対象物４０の形状取得装置３０に対する相対的な位置姿勢）は、タスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ」のタスク必要空間範囲６４１が、当該タスクのタスク必要精度を満たす範囲６１１内に入るような位置姿勢であればよい。また、タスク「ＳＣＲＥＷ＿ＲＥＭＯＶＥ」のタスク必要空間範囲６４２は、当該タスクのタスク必要精度を満たす範囲６１２内に入っていればよい。タスク「ＳＣＲＥＷ＿ＨＯＬＤ」についても同様である。
つまり、ジョブ全体で、タスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ」で要求される精度が必要なわけではなく、各タスクに必要な精度がそれぞれ満たされていればよい。このように、要求される精度に応じて適切にジョブ必要空間範囲の位置姿勢を決定することができる。
【００４５】
なお、ここでは計測精度保証範囲とジョブ必要空間範囲との関係について説明したが、動作精度保証範囲とジョブ必要空間範囲との関係についても同様である。ロボット装置１０の動作精度は、各ロボット装置１１及び１２の機械的誤差などから決定するが、複数の基準値を設定することで、動作精度保証範囲を段階的に設定することができる。最終的なロボット動作計画の算出は、計測精度保証範囲及び動作精度保証範囲とジョブ必要空間範囲とが、同時に満たされている必要がある。
【００４６】
以下、計測精度保証範囲と動作精度保証範囲とジョブ必要空間範囲との関係について述べる。上述したように、ジョブ必要空間範囲が、計測精度保証範囲及び動作精度保証範囲内に入ることで、精度を保証したロボットの動作計画を策定することができる。この条件は、次式で表すことができる。
Ｇ（ｄ1，ｄ2，ａ）＝Ｆ（ｄ1）＋Ｍ（ｄ2）＋Ｔ（ａ）  ………（１）
ここで、Ｇ（ｄ1，ｄ2，ａ）は、計測精度保証範囲と動作精度保証範囲とジョブ必要空間範囲との重なり合いの精度評価関数である。また、ｄ1は、計測精度保証範囲を示す。Ｆ（ｄ1）は、計測精度保証範囲ｄ1において位置姿勢計測部２０２によって計測される対象物４０の位置姿勢の精度を評価するための精度評価関数を示す。さらに、ｄ2は、動作精度保証範囲を示す。そして、Ｍ（ｄ2）は、動作精度保証範囲ｄ2におけるロボット装置１０の動作の精度を評価するための精度評価関数である。また、ａは、ジョブ必要空間内での必要精度を示し、Ｔ（ａ）は、上記ａの場所におけるジョブの必要精度を評価するための必要精度評価関数を示す。
【００４７】
本実施形態では、精度評価関数Ｇ（ｄ1，ｄ2，ａ）を最小化するｄ1，ｄ2，ａを決めることで、計測精度保証範囲と動作精度保証範囲とジョブ必要空間範囲とを、最適に空間に配置する。つまり、次式で表される最適化演算を行って、精度評価関数Ｇ（ｄ1，ｄ2，ａ）を最小化するｄ1，ｄ2，ａを決定する。
【００４８】
【数１】
2016159406.tif 000003
【００４９】
このような最適化演算を実行することにより、計測精度と動作精度との保証精度が最も高い空間に必要精度が最も高い空間を配置するような、計測精度保証範囲、動作精度保証範囲及びジョブ必要空間範囲の位置姿勢を決定することができる。すなわち、上記条件を満たすジョブ必要空間範囲の位置姿勢と精度保証範囲の位置姿勢とを算出することができる。なお、この位置姿勢の算出には、モンテカルロ法等のサンプリング演算手法などを用いることもできる。
このように、精度評価関数による評価を行うことで、ジョブ必要空間範囲を、計測精度保証範囲及び動作精度保証範囲内に配置するためのロボットの動作計画を算出する。したがって、容易且つ適切にロボットの動作計画を算出することができる。なお、評価関数の算出に際し、ジョブ必要空間範囲や精度保証範囲の位置姿勢の実現に要するロボット（エンドエフェクタ）の移動距離や実行時間を考慮してもよい。これにより、タクトタイムを最短にするロボットの動作計画を算出することができる。
【００５０】
なお、本実施形態では、ロボット装置１０の作業全てをジョブ必要空間範囲で示し、これが計測精度保証範囲及び動作精度保証範囲内に収まるように、ロボットの動作計画を作成している。しかしながら、ジョブ全体に対して精度を保証する必要がない場合には、タスクの一部分に対してのみジョブ必要空間範囲を割り振ってもよい。
動作計画算出部２０５は、上述したようにジョブ必要空間範囲の位置姿勢と精度保証範囲の位置姿勢とを算出すると、次に、これらを実現するための各ロボット装置１１及び１２の位置姿勢を算出する。すなわち、ジョブ必要空間範囲の位置姿勢を、上記条件を満たす位置姿勢とするための第一のロボット装置１１の位置姿勢を算出する。また、精度保証範囲の位置姿勢（動作精度保証範囲の位置姿勢）を、上記条件を満たす位置姿勢とするための第二のロボット装置１２の位置姿勢を算出する。
【００５１】
そして、図４のＳ３１２では、動作計画算出部２０５は、各ロボット装置１１及び１２の位置姿勢を、Ｓ３１１において算出した位置姿勢とするための各ロボット装置１１及び１２の開始位置と終了位置とを算出する。このように、動作計画算出部２０５は、最適な精度保証範囲を作成し、当該範囲内に最適にジョブ必要空間範囲を配置するための動作計画を決定して図３のメインルーチンに戻る。
また、動作計画算出部２０５は、Ｓ３０９において作業必要範囲が精度保証範囲内に含まれていると判断した場合、Ｓ３１３〜Ｓ３１５において、タスクを実行するためのロボット装置１０の実行計画を作成する。
【００５２】
先ずＳ３１３では、動作計画算出部２０５は、実行すべきタスクを選択する。ここでは、動作計画算出部２０５は、状態保持部２０４から得られる対象物４０や実行対象物（例えば、ネジ４１〜４４）と、タスク情報５０のタスク前状態５０５とを比較し、実行すべきタスク情報５０を選択する。次にＳ３１４では、動作計画算出部２０５は、Ｓ３１３において選択したタスク情報５０の対象物との相対位置姿勢５０４を取得し、これをロボット装置１０の開始位置として決定する。また、動作計画算出部２０５は、Ｓ３１３において選択したタスク情報５０のタスク後状態５０６を取得し、これに基づいてロボット装置１０の終了位置を決定する。そして、Ｓ３１５では、動作計画算出部２０５は、Ｓ３１３において選択したタスク情報５０のタスク実行プログラム５０７を読み出し実行する。このように、動作計画算出部２０５は、タスクを実行するための動作計画を決定して図３のメインルーチンに戻る。
【００５３】
以上のように、本実施形態では、ロボット制御装置２０は、形状取得装置３０の計測精度に関する情報と、ロボット装置１０の動作精度に関する情報と、ロボット装置１０による作業に関する情報（ジョブ情報）とに基づいて動作計画を決定する。計測精度と動作精度とを考慮して、ロボット装置１０が作業を実行する空間を規定するための動作計画を決定するので、ロボット装置１０を高精度に作業させるための動作計画を決定することができる。したがって、ロボット装置１０が作業（ジョブ）を実行したときの精度保証を実現することができる。また、このような動作計画を自動的に決定するので、ユーザによる教示工程を削減することができ、大幅な工数削減となる。
【００５４】
また、ロボット制御装置２０は、計測精度と動作精度とが保証された精度保証範囲と、ロボットによる作業の実行に必要な作業必要範囲（ジョブ必要空間範囲）とをそれぞれ導出する。そして、ロボット制御装置２０は、作業必要範囲が精度保証範囲内に配置されるような動作計画を導出する。したがって、ロボット装置１０を常に計測精度と動作精度とが保証された範囲内で動作させるような動作計画を決定することができる。また、計測精度保証範囲と動作精度保証範囲とが重複する空間範囲を精度保証範囲とするので、適切に両精度が保証される空間範囲を導出することができる。
【００５５】
さらに、ロボット制御装置２０は、作業に必要な精度を更に考慮して動作計画を導出する。すなわち、作業必要範囲が、ジョブに必要な精度を満たす精度保証範囲内に配置されるような動作計画を導出する。また、ジョブが複数のタスクを含んで構成されている場合には、各タスク必要空間が、それぞれ各タスクに必要な精度を満たす精度保証範囲内に配置されるような動作計画を導出する。このように、作業の精度情報を考慮するので、より適切な動作計画を決定することができる。特に、高精度が要求されるタスクと高精度が要求されないタスクとが混在し、ジョブ全体で高精度が要求されるわけではない場合などにも適切に対応することができる。
【００５６】
また、ロボット制御装置２０は、精度評価関数による評価を行うことで動作計画を導出する。このように、評価関数による評価を行うため、容易且つ適切に動作計画の最適化を実現することができる。具体的には、上記（２）式に示す精度評価関数Ｇ（ｄ1，ｄ2，ａ）を最小化するような最適化計算を行うので、計測精度保証範囲と動作精度保証範囲とジョブ必要空間範囲とを、最適に空間に配置することができる。
【００５７】
さらに、ロボット制御装置２０は、ジョブ必要空間範囲が精度保証範囲内に配置されるような動作計画を決定するに際し、ロボット装置１０が備える複数のアーム（複数のロボット装置１１及び１２）の動作計画をそれぞれ決定する。例えば、ジョブ必要空間範囲の位置姿勢を、上記条件を満たす位置姿勢とするために、第一のロボット装置１１の動作計画を決定する。また、精度保証範囲の位置姿勢（動作精度保証範囲の位置姿勢）を、上記条件を満たす位置姿勢とするために、第二のロボット装置１２の動作計画を決定する。
このように、複数のロボット装置１１及び１２との協調動作をプランニングすることができる。また、ロボット制御装置２０は、対象物４０を支持する少なくとも支持腕と、当該支持腕が支持する対象物４０に対して精密作業を実行する精密腕との動作計画をそれぞれ決定する。このように、機能の違う腕の協調動作を適切にプランニングすることができる。
【００５８】
（応用例１）
上記実施形態においては、第一のロボット装置１１と第二のロボット装置１２とを同時に動作させ、タスク動作を複数並列に実行するよう動作計画を決定することもできる。これにより、よりタクトタイムの少ない動作計画を生成することができ、ジョブの実行を高速で実現することができる。
以下、特定のタスク動作を複数並列に実行する手法について、図９を参照しながら説明する。この図９は、タスクの動作の並列動作に関して説明する図である。上述した図６との違いは、タスク「ＷＯＲＫ＿ＭＯＶＥ」が追加されている点であり、図９（ａ）に示す動作は図６（ａ）と同様である。したがって、ここでは処理の異なる部分を中心に説明する。
４つのネジ４１〜４４を順次取り外す処理を行う際、対象物４０を第一のロボット装置１１で固定したままであると、第二のロボット装置１２のエンドエフェクタ１４の動作だけで当該処理を実現しなければならない。そのため、エンドエフェクタ１４の移動の時間の分だけ、タクトタイムが余分にかかってしまう。
【００５９】
そこで、図９（ｂ）に示すように、タスク「ＳＣＲＥＷ＿ＲＥＭＯＶＥ」を実行しているときに（エンドエフェクタ１４が矢印７４で示される方向に移動しているときに）、タスク「ＷＯＲＫ＿ＭＯＶＥ」を並列に実行する。これにより、エンドエフェクタ１４に必要であった移動時間（例えば、ネジ４１の取り付け位置からネジ４２の取り付け位置までの移動時間）を削減することができる。タスク「ＷＯＲＫ＿ＭＯＶＥ」は、矢印７５で示される方向に対象物４０が移動するように、第一のロボット装置１１を移動させる動作である。このタスク「ＷＯＲＫ＿ＭＯＶＥ」を実行する際に必要になる空間範囲は、タスク必要空間範囲６４４である。
ここで、タスクの並列実行が可能となる条件は、並列実行するタスクのタスク必要空間範囲同士が重ならないことと、並列実行した場合に、上述したジョブ評価関数の値がより低くなること（エンドエフェクタ１４の移動コストが低くなること）である。この条件の判定処理を、図４のＳ３０８に追加することで実現することができる。
【００６０】
また、タスク動作の並列実行は、タスク情報５０を拡張することで対応可能である。すなわち、タスク情報５０に、例えば「タスク並列実行」を追加する。これは、タスク並列実行のためのフラグであり、このフラグがＯＮの場合は、動作計画算出部２０５はタスクの並列実行を実現するような動作計画を作成する。そして、第一のロボット制御部２０９及び第二のロボット制御部２１０が制御動作する際も、動作決定部２０８で出力された並列動作を考慮した軌道計画によって動作する。なお、この軌道計画の演算も、例えばＲＲＴなどのアルゴリズムを用いることができる。
以上により、複数のロボット装置の腕を同時に動作させながら互いに協調するプログラミングを自動化することができる。したがって、開発にかかる開発工数を減少させ、よりタクトタイムのかからないロボットの動作計画を生成することができる。
【００６１】
（応用例２）
上記実施形態においては、計測精度保証範囲と対象物４０の位置とから必要精度を満足しているかを判断することにより、余分な形状計測を減らし、タクトタイムをより低減できるように構成することもできる。以下、この点について、図１０を参照しながら説明する。
図１０（ａ）は、ネジ４５を取り外すために、エンドエフェクタ１４が矢印７６の方向に移動してネジ４５に接近するタスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ＿１」を示している。また、図１０（ｂ）は、ネジ４６を取り外すために、エンドエフェクタ１４が矢印７７の方向に移動してネジ４６に接近するタスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ＿２」を示している。ここでは、対象物４０は、第一のロボット装置１１によって固定されているものとする。タスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ＿１」は、図１０（ａ）に示すように、エンドエフェクタ１４の位置姿勢精度を保証するために、形状取得装置３０の計測精度保証範囲６１５内にネジ４５が配置された状態で実行する。
【００６２】
次に、タスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ＿２」を実行する場合、ネジ４６の位置姿勢を形状取得装置３０で取得する必要がある。このとき、ネジ４６がネジ４５よりも大きく、計測精度保証範囲６１６内に存在している場合、ネジ４６の位置姿勢は、形状取得装置３０によって計測されている。ここで、計測精度保証範囲６１６の必要精度は、計測精度保証範囲６１５の必要精度よりも低いが、タスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ＿２」のタスク必要精度よりも高ければ、精度の問題は生じない。そのため、この場合には、図８（ｂ）にて、タスク「ＳＣＲＥＷ＿ＣＯＮＴＡＣＴ＿２」を実行する際に、形状取得装置３０によるネジ４６の位置姿勢の形状計測は省略することができる。
【００６３】
このように、要求精度の高いタスクと、要求精度の比較的低いタスクとが組み合わされている場合、形状計測の省略可能かどうかを判断し、できるだけ形状計測の頻度を低下させるようにする。これにより、ジョブ実行全体のタクトタイムを低減することができる。
また、他の方法として、対象物４０等が位置出し治具等を用いることにより位置精度が保証できる場合にも、形状取得装置３０によるネジ４６の位置姿勢の形状計測を省略することができる。さらに、これらの精度を使用者に知らせるために、通知部２１１を用いて、段階的な精度を表示部２６に表示してもよい。
以上により、形状計測の頻度を低下させ、よりタクトタイムのかからないロボットの動作計画を生成することができる。
【００６４】
（応用例３）
上記実施形態においては、複数のジョブの実行に際し、ジョブ間の動作の接続を考慮してロボットの動作計画を算出するようにしてもよい。この場合、図５に示すタスク情報５０及びジョブ情報５１に加え、動作計画記憶部２０７はジョブリスト情報を記憶するようにする。ここで、ジョブリスト情報は、ジョブ情報５１と同様のデータ構造を有し、タスク情報５０とジョブ情報５１との関係性と同等の関係性を、ジョブ情報５１との間で有する。つまり、ジョブリスト情報は、ジョブリスト名、ジョブリスト必要精度、ジョブリスト必要空間範囲、対象物との相対位置姿勢、ジョブリスト前情報、ジョブリスト後状態、ジョブリスト実行時間、ジョブリスト評価値、ジョブ情報配列などのメンバを持つデータ構造である。
【００６５】
ジョブの中で動作するロボットの動作は、特定ロボット動作（タスク）の順序を決定することで構成される。その結果、タスク情報配列が生成される。これと同様に、ジョブリストの中で動作するロボットの動作は、ジョブ情報の順序を決定することで構成することができる。このように、ジョブリスト情報は、ジョブ情報５１と同様に構築することができる。すなわち、ジョブ情報配列は、タスク情報配列を生成する処理と同様の処理を行うことで生成することができる。なお、ジョブ間の動作に関して、上述したタスクの並列化やタスクの空間利用の最適化と同等の処理を、ジョブに対しても行うこともできる。その結果、ジョブ間の動作を最適化することができる。
【００６６】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６７】
１０…ロボット装置、１１…第一のロボット装置、１２…第二のロボット装置、１３，１４…エンドエフェクタ、２０…ロボット制御装置、２０１…形状取得部、２０２…位置姿勢計測部、２０３…形状情報保持部、２０４…状態保持部、２０５…動作計画算出部、２０６…工程情報保持部、２０７…動作計画記憶部、２０８…動作決定部、２０９…第一のロボット制御部、２１０…第二のロボット制御部、２１１…通知部、３０…形状取得装置、４０…対象物、１００…ロボットシステム
【図１】
2016159406.tif 000004
【図２】
2016159406.tif 000005
【図３】
2016159406.tif 000006
【図４】
2016159406.tif 000007
【図５】
2016159406.tif 000008
【図６】
2016159406.tif 000009
【図７】
2016159406.tif 000010
【図８】
2016159406.tif 000011
【図９】
2016159406.tif 000012
【図１０】
2016159406.tif 000013