(57)【要約】【課題】教示作業者が意図した組み付け手順に基づいて複数マニピュレータの作業プログラムを生成することができ、また効率的に短時間で作業プログラムを生成することが可能となる複腕ロボットの作業プログラム作成方法を提供する。【解決手段】複数の部品の３次元モデルを作成し、連結された複数の部品の各々につき、その部品を把持して操作するマニピュレータを複数のマニピュレータから選定し、組み付け作業において各部品が経由する各点の位置と、各経由点における各部品の姿勢を設定し、各経由点について、マニピュレータが到達する順に番号を割り当て、マニピュレータ毎に、経由点番号、操作する部品名、経由点位置および姿勢からなる経由点データリストを作成し、各経由点にてマニピュレータが実行する作業内容に応じて、作業マクロを組み合わせて複数のマニピュレータの作業プログラムを作成する。【選択図】  図１
2010137298.tif 000002
【特許請求の範囲】
【請求項１】
複数のマニピュレータを有する複腕ロボットを動作させ、複数の部品の組み付け作業を行う作業プログラムをオフラインにて生成する複腕ロボットの作業プログラム作成方法であって、
前記複数の部品の各々につき、その部品を把持して操作するマニピュレータを前記複数のマニピュレータから選定して設定する第１ステップと、
前記組み付け作業において前記各部品が経由する各点の位置と、前記各経由点における前記各部品の姿勢を設定する第２ステップと、
前記第２ステップにて設定された各経由点について、前記マニピュレータが到達する順に番号を割り当てると共に、前記経由点での前記部品の位置および姿勢を前記経由点の位置および姿勢とし、前記マニピュレータ毎に、経由点番号、操作する部品名、前記経由点位置および姿勢からなる経由点データリストを作成する第３ステップと、
前記経由点データリストの前記各経由点にて前記マニピュレータが実行する作業内容を予め登録された作業一覧から選択する第４ステップと、
前記各経由点について設定された作業内容に応じて、前記マニピュレータに対する命令群からなる作業マクロを組み合わせて前記複数のマニピュレータの作業プログラムを作成する第５ステップと、
からなることを特徴とする複腕ロボットの作業プログラム作成方法。
【請求項２】
前記第２ステップにて、前記複数の部品の他にダミー部品を仮想的に定義し、前記ダミー部品の経由点の位置および姿勢を設定することによって前記部品を把持せずに前記マニピュレータのみの動作を作成することを特徴とする請求項１記載の複腕ロボットの作業プログラム作成方法。
【請求項３】
前記第４ステップにて、前記作業内容に関するパラメータとして作業条件を設定することを特徴とする請求項１記載の複腕ロボットの作業プログラム作成方法。
【請求項４】
前記組み付け作業において前記複数のマニピュレータを同期させて動作させる場合は、
前記第４ステップにて前記各マニピュレータに作業内容を設定する際に、同期命令と、同期動作の対象となる部品および部品の経由点番号を指定することを特徴とする請求項１記載の複腕ロボットの作業プログラム作成方法。
【請求項５】
前記第５ステップにて、前記経由点の位置および姿勢から逆運動学計算を用いてマニピュレータの各関節目標角度を計算し、前記マニピュレータが特異点を通過する場合は、
前記マニピュレータ手先の目標姿勢を所定の範囲で変化させ、変化させた目標姿勢について所定の評価方法による評価値を求め、前記評価値によって前記マニピュレータの目標姿勢を変更することを特徴とする請求項１記載の複腕ロボットの作業プログラム作成方法。
【請求項６】
前記第５ステップにて、前記経由点間の前記マニピュレータの補間動作をシミュレーションし、前記補間シミュレーションにて前記マニピュレータが特異点を通過する場合は、
前記マニピュレータ手先の目標姿勢を所定の範囲で変化させ、変化させた目標姿勢について所定の評価方法による評価値を求め、前記評価値によって前記マニピュレータの目標姿勢を変更することを特徴とする請求項１記載の複腕ロボットの作業プログラム作成方法。
【請求項７】
前記マニピュレータが７自由度以上の冗長自由度を持つ場合は、
前記マニピュレータの冗長自由度姿勢を所定の範囲で変化させた時の前記評価方法による評価値に基づいて、前記マニピュレータの冗長自由度の姿勢を変更することを特徴とする請求項５または６記載の複腕ロボットの作業プログラム作成方法。
【請求項８】
前記マニピュレータが前記マニピュレータの台座を移動させる外部軸上に搭載されている場合は、
前記外部軸の位置を所定の範囲で変化させた時の前記評価方法による評価値に基づいて、前記外部軸の位置を変更することを特徴とする請求項５または６記載の複腕ロボットの作業プログラム作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のマニピュレータで構成されるロボットの作業プログラム作成方法に関し、特に複数のマニピュレータを利用した部品組み付け作業に関する作業プログラムを自動生成する方法に関する。
【背景技術】
【０００２】
通常、ティーチングプレイバック方式のロボットの教示は、プログラミングペンダントと呼ばれる手動操作手段を用いて行う。プログラミングペンダント上の軸操作キーでロボットの各軸を動作させ、手先を対象ワークに対する作業位置へジョグ移動させて、その後記憶キーを押すことで移動命令とともにその時の各関節軸の角度データを記憶する。ロボットを所望の位置へとジョグ移動させて記憶させる操作を繰り返すことによってロボット言語で構成される作業プログラムを作成している。実際にロボットが作業を行う再生運転では、教示した各関節軸の角度データを順に読み出して、ロボットの各軸モータへの補間指令を生成し、位置速度制御によってロボットの先端を移動させる。
一方、ロボットによる部品の組み付けのような複雑な作業を教示する際には、このような方法では操作が煩雑であり教示に時間がかかる。特に特許文献１にて開示されたような２本以上のマニピュレータを持つ複腕ロボットによって組み付け作業を行わせる場合では、ロボットが行う作業自体は効率化することが可能になるものの、その作業を教示することは熟練者でも困難である。特許文献１では、ハーネスを含む部品の組み付け作業を行う複腕ロボットが開示されているが、組み付け作業の教示方法については特に記載されていない。
そこで、このような複雑な作業を簡単に教示する方法として、３次元ＣＡＤやオフラインシミュレータを使ってロボットの作業プログラムを生成する方法がある。
具体的な方法としては、３次元ＣＡＤによって部品の移動手順を定義し、その動きを実現するようにロボットの動作を決める（例えば特許文献２）。
また、複数マニピュレータで構成されるロボットの作業プログラム作成方法としては、組み付けのための部品の移動手順をマニピュレータごとに定義し、その移動動作単位毎にマニピュレータの優先度を設定してその優先度の組み合わせで各マニピュレータの動作手順を作成し、その中から作業可能かつ作業時間が最短となる動作手順を選択するようにしたロボットの作業プログラム作成方法（例えば特許文献３）がある。
【特許文献１】特開平７−２２３１７９号公報（図１）
【特許文献２】特開２００６−３５０６２０号公報（図２）
【特許文献３】特開昭６３−２９５１９２号公報（表２）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献２にて開示された従来の作業プログラム作成方法は１本のマニピュレータによる作業に適用されるものであり、複数のマニピュレータで構成されたロボットに対して教示を行う場合にマニピュレータ毎の動作を決定することはできないという問題があった。
また、特許文献３にて開示された従来の作業プログラム作成方法は、複数マニピュレータの各々について部品の移動手順を設定するようにしているものの、各マニピュレータおよび動作単位毎に優先度を設定する必要があるため、動作の種類が多い作業の場合などは動作手順の組み合わせが非常に多くなり、最適な動作手順を探索するための計算量が非常に大きくなるという問題があった。
また動作手順の組み合わせには、マニピュレータ間の干渉や組み付け手順などによって、実際には作業不能となるものも多くあり、無駄な計算が多くなる。さらに、どのような動作手順が選択されるのかが最後まで教示作業者にとっては不明（どの部品を先に移動させ、どの部品を先に組み付けるか等が不明）であり、教示作業者が全く意図しない動作手順になってしまうこともあるという問題があった。
さらに、作業項目を追加した時には最初から動作手順を探索し直さなければならず、作業プログラムの作成に時間を要するという問題もあった。
また、両者に共通の問題として、実際に組み付け作業をロボットで実施する際には、部品の移動のみでなく、部品位置をセンサで計測したり、力制御しながら部品同士の嵌め合いを行ったり、ねじ締めを行ったりする必要があるが、従来の方法ではこうした作業に関するロボット命令は作業プログラムを生成した後に別途追加する必要があり、作業プログラムのどの箇所にその命令を挿入したらよいか教示作業者にとって分かりにくいという問題もあった。
本発明はこのような問題点に鑑みてなされたものであり、教示作業者が意図した組み付け手順に基づいて複数マニピュレータの作業プログラムを生成することができ、また効率的に短時間で作業プログラムを生成することが可能となる複腕ロボットの作業プログラム作成方法を提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記問題を解決するため、本発明は、次のような方法をとったのである。
請求項１に記載の発明は、複数のマニピュレータを有する複腕ロボットを動作させ、複数の部品の組み付け作業を行う作業プログラムをオフラインにて生成する複腕ロボットの作業プログラム作成方法であって、前記複数の部品の各々につき、その部品を把持して操作するマニピュレータを前記複数のマニピュレータから選定して設定する第１ステップと、
前記組み付け作業において前記各部品が経由する各点の位置と、前記各経由点における前記各部品の姿勢を設定する第２ステップと、前記第２ステップにて設定された各経由点について、前記マニピュレータが到達する順に番号を割り当てると共に、前記経由点での前記部品の位置および姿勢を前記経由点の位置および姿勢とし、前記マニピュレータ毎に、経由点番号、操作する部品名、前記経由点位置および姿勢からなる経由点データリストを作成する第３ステップと、前記経由点データリストの前記各経由点にて前記マニピュレータが実行する作業内容を予め登録された作業一覧から選択する第４ステップと、前記各経由点について設定された作業内容に応じて、前記マニピュレータに対する命令群からなる作業マクロを組み合わせて前記複数のマニピュレータの作業プログラムを作成する第５ステップと、からなることを特徴とする。
【０００５】
請求項２に記載の発明は、前記第２ステップにて、前記複数の部品の他にダミー部品を仮想的に定義し、前記ダミー部品の経由点の位置および姿勢を設定することによって前記部品を把持せずに前記マニピュレータのみの動作を作成することを特徴とする。
【０００６】
請求項３に記載の発明は、前記第４ステップにて、前記作業内容に関するパラメータとして作業条件を設定することを特徴とする。
【０００７】
請求項４に記載の発明は、前記組み付け作業において前記複数のマニピュレータを同期させて動作させる場合は、前記第４ステップにて前記各マニピュレータに作業内容を設定する際に、同期命令と、同期動作の対象となる部品および部品の経由点番号を指定することを特徴とする。
【０００８】
請求項５に記載の発明は、前記第５ステップにて、前記経由点の位置および姿勢から逆運動学計算を用いてマニピュレータの各関節目標角度を計算し、前記マニピュレータが特異点を通過する場合は、前記マニピュレータ手先の目標姿勢を所定の範囲で変化させ、変化させた目標姿勢について所定の評価方法による評価値を求め、前記評価値によって前記マニピュレータの目標姿勢を変更することを特徴とする。
【０００９】
請求項６に記載の発明は、前記第５ステップにて、前記経由点間の前記マニピュレータの補間動作をシミュレーションし、前記補間シミュレーションにて前記マニピュレータが特異点を通過する場合は、前記マニピュレータ手先の目標姿勢を所定の範囲で変化させ、変化させた目標姿勢について所定の評価方法による評価値を求め、前記評価値によって前記マニピュレータの目標姿勢を変更することを特徴とする。
【００１０】
請求項７に記載の発明は、前記マニピュレータが７自由度以上の冗長自由度を持つ場合は、前記マニピュレータの冗長自由度姿勢を所定の範囲で変化させた時の前記評価方法による評価値に基づいて、前記マニピュレータの冗長自由度の姿勢を変更することを特徴とする。
【００１１】
請求項８に記載の発明は、前記マニピュレータが前記マニピュレータの台座を移動させる外部軸上に搭載されている場合は、前記外部軸の位置を所定の範囲で変化させた時の前記評価方法による評価値に基づいて、前記外部軸の位置を変更することを特徴とする。
【発明の効果】
【００１２】
請求項１に記載の発明によると、教示作業者が意図した組み付け手順に基づいて複数マニピュレータの作業プログラムを簡単に作成でき、また、作業項目の追加も簡単に行うことができる。また作業内容を作業一覧から選択できるようにしたため、作業プログラムの作成のための教示作業者の負担を軽減することができる。
請求項２に記載の発明によると、実際には存在しないダミー部品を定義し、その移動毎の位置姿勢を設定するようにしたため、部品の動きとは関係しないエアカット動作や退避動作などに関しても、作業プログラムを生成することができる。
請求項３に記載の発明によると、作業内容に応じて作業条件を設定するため、様々な組み付け作業へと対応可能となり、複腕ロボットの汎用性を増すことができる。
請求項４に記載の発明によると、作業内容に同期する対象の部品と同期する部品の経由点番号を指定するので、複数のマニピュレータが同期をとって動作することが可能となり、複数のマニピュレータを協調させて動作するような作業のプログラムを作成することができる。
請求項５乃至８に記載の発明によると、指定した部品の位置や姿勢、またはその移動動作が実現できない時でも、自動的にマニピュレータの姿勢や外部軸の位置を変更することで実行可能な作業プログラムを生成することが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態について図を参照して説明する。
【実施例１】
【００１４】
図１は、本発明の方法を実施する複腕ロボットおよび装置の構成を示している。ここでは左右２台のマニピュレータを有する双腕ロボットを例に説明する。図において、１０１はＪ１からＪ６の関節を有する左腕マニピュレータ、同様に１０２はＪ１からＪ６の関節を有する右腕マニピュレータである。マニピュレータ１０１と１０２はそれぞれの先端部に開閉するグリッパを備えており、グリッパによって作業台１０５上の部品を把持し、組み付け作業を行う。このように部品を組み付ける作業ではマニピュレータに力制御を施し、力加減を制御しながら組み付けることが多い。このような場合は、マニピュレータの先端部とグリッパとの間に力センサ（図示せず）を装着する。
１０３はマニピュレータ１０１と１０２の制御装置であり、作業プログラム読み込み部１０３により読み込んだ作業プログラムに記述された動作命令に応じて指令生成部１０３２が両マニピュレータへの指令を生成し、各マニピュレータのサーボ制御部１０３３、１０３４へ位置指令を送る。
サーボ制御部１０３３、１０３４では各マニピュレータの各軸モータの位置・速度制御を行う。
図１の例ではグリッパは空気圧により動作し、作業プログラムに記述されたＩ／Ｏ命令によってグリッパへの空気圧の供給または供給停止が行われてグリッパが開閉する。
また力制御を実行する場合は指令生成部１０３２は力センサによる計測結果を基にサーボ制御部１０３３、１０３４へ力指令を送り、サーボ制御部１０３３、１０３４では各マニピュレータの各軸モータの力制御も実行する。
【００１５】
この制御装置１０３で用いる作業プログラムは作業プログラム作成装置１０４で作成される。本発明の作業プログラム作成方法もこの作業プログラム作成装置１０４上で実施するものである。
作業プログラム作成装置１０４では、マニピュレータ１０１、１０２や作業台１０５のロボットモデルが３次元ＣＡＤデータ等を基に３次元コンピュータグラフィックスのモデルとして構築されている。マニピュレータの位置関係や各マニピュレータの軸構成、動作領域などの情報もロボットモデルには含まれている。さらに組み付け対象モデル１０４１が３次元ＣＡＤデータ等から変換されて３次元コンピュータグラフィックスのモデルとして作業プログラム作成装置１０４内に構築される。
また、作業情報入力部１０４２では作業プログラムを作成するための作業内容や作業条件など、様々な情報をＧＵＩを用いて入力する。各モデルやＧＵＩによる情報は、作業プログラム作成装置１０４に接続された表示装置１０６上に表示される。
作業プログラム作成装置１０４は、組み付け対象モデル１０４１で定義した部品の位置姿勢と作業情報入力部１０４２で入力された情報、および各作業内容に対応して予め用意された作業マクロ１０４３から作業プログラム生成部１０４４にて作業プログラムを自動的に生成するものである。この作業プログラム作成装置は例えばパソコンとそのパソコン上で動作するオフライン教示ソフトウェアで実現される。または、ロボットの制御装置に操作用として付加されているプログラミングペンダントの機能として実施しても良い。
作業プログラム作成装置をパソコンとオフライン教示ソフトウェアで実現する場合、作業情報入力部１０２４は具体的にはキーボードやマウスとなる。またプログラミングペンダントの機能として実施する場合は、プログラミングペンダント上に設けられたキーやタッチパネルとなる。作業情報入力部１０２４を用いたＧＵＩによる入力方法は一般的なパソコンと同様であるので説明は割愛する。
また図１では作業プログラム作成装置１０４と表示装置１０６とは別体となっているが、作業プログラム作成装置をプログラミングペンダントの機能として実施する場合は、表示装置１０６は作業プログラム作成装置１０４と一体となっていても良い。
【００１６】
図２は組み付け対象となる部品とその組み付けの一例を示している。図２（ａ）に示しているように作業台上におかれた部品２０１に、部品Ａ（２０２）と部品Ｂ（２０３）を図２（ｂ）のように組み付ける。ここで部品２０１には部品２０２と部品２０３をそれぞれ組み付ける穴２０１１と２０１２があり、また、部品２０２と部品２０３はケーブル２０４で接続されている。こうしたケーブルで接続された２つの部品を組み付ける作業は１台のマニピュレータのみでは行うことができない。２台のマニピュレータがそれぞれのグリッパで部品２０２と部品２０３を把持した状態でケーブル２０４に張力がかからないように協調して搬送し、部品２０１に組み付ける必要がある。
【００１７】
図３は図１で説明した作業プログラム作成装置１０４で実施する作業プログラム作成の過程を示すフローチャートである。
まず組み付け対象モデル１０４１を作成する（ステップＳ０）。ここでは図２で示した組み付け対象の３次元ＣＡＤデータを読み込むことによって３次元コンピュータグラフィックスとしてモデル化できる。
組み付け作業に先立って部品はロボットの周辺に設置される部品供給装置によって供給されるものとし、これを部品の初期位置とする。
次に、組み付け対象の各部品を操作するマニピュレータを指定する（ステップＳ１）。
具体的な指定方法としてはオフライン教示ソフトウェアのＧＵＩを用いてステップＳ０で読み込んだ組み付け対象モデルを表示装置１０６に表示させ、表示装置１０６上で各部品（２０２、２０３）を選択して、例えば部品２０３は左マニピュレータで把持、操作するよう指定し、部品２０２には右マニピュレータで把持、操作するよう指定する。ただし、部品２０１はマニピュレータで直接操作せず作業台上に固定されているだけなので、部品２０１を把持、操作するマニピュレータの指定は行わない。
【００１８】
次に、部品組み付けの動作の途中で各部品が経由する点の位置と姿勢を設定する（ステップＳ２）。ここでは部品２０２と２０３について、図２（ａ）に示した初期位置姿勢から図２（ｂ）に示した組み付け完了位置までの間を移動する際の経由点ごとの位置・姿勢を設定する。経由点の姿勢は、部品２０２と２０３にそれぞれ設けた直交座標系の姿勢によって設定する。
【００１９】
図４は、部品組み付け作業における、部品２０２と２０３の各経由点の位置・姿勢の具体例を示している。２０２１、２０３１がそれぞれ部品２０２と２０３に設定した直交座標系である。この座標系２０２１と２０３１は各部品に設定した代表点の位置姿勢を表すためのものである。
図４（ａ）の初期位置姿勢で、ステップＳ１で指定したように部品２０３を左マニピュレータ手先のグリッパで、部品２０２を右マニピュレータ手先のグリッパでそれぞれ把持し、（ｂ）のように持ち上げる。この際に部品２０３を部品２０１に組み付けに適した姿勢にするために、左マニピュレータにより部品２０３の姿勢を（ａ）の状態から９０°回転させる。（ｃ）で部品２０１の上に搬送し、（ｄ）で部品２０２を部品２０１の穴２０１１へ嵌めるためのアプローチ位置へ移動させる。
部品２０２を穴２０１１へ嵌めた後に、右マニピュレータ手先のグリッパを開放し部品２０２の把持を解消して、（ｅ）で部品２０３を部品２０１の穴２０１２へ嵌めるためのアプローチ位置へ移動させる。部品２０１を穴２０１２へ嵌めた後に、左マニピュレータ手先のグリッパを開放し部品２０１の把持を解消する。
このように教示作業者が想定した部品組み付け手順に従って、部品２０２の座標系２０２１と部品２０３の座標系２０３１の各経由点における位置姿勢を指定する。
具体的な指定方法としては、ステップＳ０で作成した組み付け対象モデルの３次元コンピュータグラフィックスを含むオフライン教示ソフトウェアのＧＵＩ環境において、表示装置１０６上に表示された組み付け対象モデルを教示作業者が図４（ａ）〜（ｅ）のように経由点へと移動させてその位置を記録するとともに、各部品の経由点における部品２０２、２０３の座標系を追加し、その軸方向を決めていく。経由点ごとにこの作業を繰り返すことで座標系２０２１と座標系２０３１の各経由点における位置姿勢が決定される。
【００２０】
次に、各部品を操作するよう指定されたマニピュレータや部品の経由点を基に実際の各マニピュレータの経由点データリストを生成する（ステップＳ３）。
経由点データリストは、作業プログラム生成部１０４４にて左マニピュレータ用のリストと右マニピュレータ用のリストがそれぞれ自動生成され、経由点番号、部品名、経由点の位置および姿勢からなる。経由点番号は部品が移動する順に割り振られた番号であり、経由点の位置姿勢はステップＳ２で設定した各部品の経由点の位置姿勢である。
【００２１】
次に、上記で設定した各部品の経由点で実行する作業内容を設定する（ステップＳ４）。作業内容は図２の作業例では「把持」、「嵌め合い」「把持解消」などがあるが、これに加えて「通過」「停止」なども作業内容の一つとして含める。作業内容は予め登録されたものから選択する。
また、選択された作業内容に応じて作業条件を入力する。
例えば「嵌め合い」の作業条件としては、力制御のパラメータや嵌め込み量等が挙げられる。このような作業条件を予め複数用意し、作業条件ごとに一意の番号を割り当ててその作業条件番号を必要に応じて設定する。教示作業者は適宜表示装置１０６に表示される画面を見ながら、こうした作業内容や作業条件の設定を作業情報入力部１０４２によって行う。
ステップＳ４で作業内容や作業条件を入力するＧＵＩの画面例を図５に示す。表の左から経由点番号、部品名、作業内容、作業条件番号が示される。ここでは経由点番号と部品名はステップＳ３で生成した経由点データリストに応じて、マニピュレータ毎に図５のような表が示され、教示作業者はそこに順次作業内容と作業条件番号を入力していく。
【００２２】
最後に、ステップＳ４で完成した表の各経由点番号における作業内容に対応した作業マクロを組み合わせてマニピュレータの作業プログラムを自動生成する（ステップＳ５）。
作業マクロとは各作業内容をマニピュレータで実現するための一つまたは複数のロボット言語で構成された命令群である。ロボット言語はＰＴＰ（ポイントｔｏポイント）制御を行うための動作命令やグリッパを開閉するためのＩ／Ｏ命令、あるいは力制御を使って嵌め合いを行う作業命令、センサ情報を取得するセンサ命令など様々な命令で構成されており、作業マクロはそれらの組み合わせであって予め登録されている。
なお、作業マクロの汎用性を高めるため、作業マクロ内の動作命令では原則として「現在位置からの移動量」のように相対的な移動量を指定するようになっており、直接移動先を指定しないようにして様々な作業プログラムから利用可能なように構成されている。
【００２３】
図５の左マニピュレータの経由点番号１の部品把持に対応する把持作業マクロとその作業条件の例、および左マニピュレータの経由点番号５の部品嵌め合いに対応する作業マクロとその作業条件の例を図６に示す。
図６（ａ）は作業内容「把持」に対応した作業マクロ「Ｇｒｉｐ」を示す。作業マクロ「Ｇｒｉｐ」は
（１行目）センサを用いた把持位置の計測命令と
（２行目）センサによる計測結果に基づいた移動命令、
（３行目）グリッパを閉める命令
の３つの命令から構成される。４行目は、作業マクロを呼び出した作業プログラムへ戻るための命令である。
経由点番号１においては、図４（ａ）に示すように部品は初期位置にあるが、実際にマニピュレータが部品の初期位置へアプローチしてグリッパによって部品を把持する場合、部品の位置を再確認する必要がある。そのためグリッパには部品の位置を計測するためのセンサが設けられており、作業マクロ「Ｇｒｉｐ」の１行目ではまず部品の位置計測を行う。
１行目によって計測センサを基準とした把持対象部品の位置がＰ００１に代入され、２行目によってＰ００１に代入された値だけマニピュレータが動作してグリッパの位置を微調整する。
また図６（ｂ）に示す作業条件は、グリッパ開閉に対応する制御装置のＩ／Ｏ番号、センサによる計測のための対象物番号、計測結果によって把持位置を決定するための把持位置補正値からなる。
【００２４】
同様に図５の左マニピュレータの経由点番号５では、図４（ｅ）に示すような初期位置から部品Ａ（２０３）を部品Ｃ（２０１）の穴（２０１２）へ挿入する作業を記述している。図６（ｃ）に作業内容「嵌め合い」に対応した作業マクロ「Ｆｉｔｔｉｎｇ」を示す。作業マクロ「Ｆｉｔｔｉｎｇ」は、
（１〜３行目）部品Ａ（２０３）を部品Ｃ（２０１）の嵌合部分への突き当たるまでマニピュレータを下降させるためのＴＵＫＩＡＴＥ命令に関する命令群
（４〜６行目）上記突き当てで部品Ａが部品Ｃの穴(２０１２)の縁に当たって止まった場合にマニピュレータを微動させて穴を探るＳＡＧＵＲＩ命令に関する命令群
（７〜１０行目）部品Ａを部品Ｃの穴の底部まで挿入するＩＮＳＥＲＴ命令に関する命令群
から構成される。
この作業が成功した場合は１１行目で０をリターンし、失敗した場合は１３行目で−１を、この作業マクロの呼び出し元の作業プログラムへ返す。
また図６（ｄ）に示すように、上記の突き当て、探り、挿入それぞれの作業条件を入力する。
なお７行目の「＊＿ＩＮＳ」や１２行目の「＊＿ＥＲＲＯＲ」は３行目や６行目、１０行目のＪＵＭＰ命令による移動先を示すラベルである。また「ＧＥＴＳＴＡＴＵＳ」は、突き当て命令（ＴＵＫＩＡＴＥ命令）や探り命令（ＳＡＧＵＲＩ命令）などの直前の命令が成功したか、失敗したかを戻り値としてＢ００１などの変数に取り込む命令である。ＴＵＫＩＡＴＥ命令、ＳＡＧＵＲＩ命令、ＩＮＳＥＲＴ命令といった命令は予めマニピュレータの作業命令として準備されている。
前述の「把持」「通過」「嵌め合い」「把持解消」「停止」といったそれぞれの作業内容に対応した作業マクロと作業条件を予め登録しておき、ステップＳ４で各経由点番号について作業内容とその作業条件を指定することで組み付け作業の作業プログラム生成に必要な情報が得られる。
【００２５】
このように選択可能な作業内容に応じて作業マクロと作業条件を準備しておき、ステップＳ４で作成した表の順番に従って作業マクロを組み合わせていくことでマニピュレータの作業プログラムが自動生成される。
以上述べたように本願発明では、部品毎に作業するマニピュレータを設定し、決められた組み付け手順に応じて部品の経由点の位置姿勢を設定し、それに対応する作業内容を設定し、設定された作業内容を実現する作業マクロの組み合わせから、複数のマニピュレータの作業プログラムを作成するという手順をとることにより、教示作業者が意図した組み付け手順に基づいて複数マニピュレータの作業プログラムを生成することができ、また効率的に短時間で作業プログラムを生成することが可能となる。
【００２６】
実際の組み付け作業では、待機位置にあるマニピュレータが部品にアプローチするまでの動作や、作業が終わって退避する動作、あるいは、１つの部品を他方のマニピュレータで持ち替える動作など、部品を直接操作せずにマニピュレータのみを移動させることが必要な部分が存在する。
このようなマニピュレータの動作は各部品の経由点の位置姿勢を設定する処理（ステップＳ２）において、図７のように実際には存在しないダミー部品３０２（部品Ｄ）と３０３（部品Ｅ）を定義し、さらにそれを操作するマニピュレータを指定し、各ダミー部品の経由点の位置姿勢３０２１、３０３１を設定することで、マニピュレータのみの移動を実現する作業プログラムが生成できるようにする。
ステップＳ４においても、ここで設定したダミー部品の経由点で実行する作業内容を図８のＮｏ．１やＮｏ．８のように設定する。このようにすることで、部品の移動を伴わないマニピュレータの部品へのアプローチ動作や、組み付け作業完了後のマニピュレータの退避動作についてもステップＳ５で自動生成される作業プログラムの中に含めることが可能となる。
【００２７】
さらに、複数のマニピュレータで作業を実行する場合はマニピュレータが相互に干渉しないようにする必要がある。また図２のような部品の組立てでは２台のマニピュレータがそれぞれ部品２０２と２０３を把持した状態で協調動作し、ケーブルに張力がかからないようにする必要がある。このように複数のマニピュレータが同期して動作しなければならない場合、ステップＳ４において各部品の経由点の作業内容を設定する際に、同期する対象の部品および、同期する対象部品の経由点番号を指定する。このような同期条件を入力するフィールドを追加したＧＵＩの例を図８に示している。
図８の左マニピュレータＮｏ．２やＮｏ．５のように同期する対象の部品（この例では右マニピュレータで操作する部品Ｂ）と経由点番号（この例では右マニピュレータで操作する部品Ｂの経由点番号）を入力する。
このように同期について入力した左右マニピュレータの作業内容に基づいて生成された作業プログラム例を図９に示す。図９（ａ）は左マニピュレータの作業プログラム例、図９（ｂ）は右マニピュレータの作業プログラム例である。図８で指定した作業内容と作業条件に対応して、図９のような作業プログラムが作成される。ここで、作業プログラム中のＰ０００〜Ｐ００４はステップＳ２で指定した部品の位置姿勢からステップＳ５で作成されたロボット位置姿勢データである。また、ＣＯＮＤは作業条件番号を指定するタグである。この時、左右マニピュレータの同期はＳＹＮＣ命令を挿入することで実現する。ＳＹＮＣ命令は左マニピュレータ（Ｒ０）と右マニピュレータ（Ｒ１）を同期させる命令であり、この命令が実行されると、相手マニピュレータのＳＹＮＣ命令が実行されるまで待つ。従ってＳＹＮＣ命令が両方とも実行された時点でそれ以下の作業プログラム実行が同時に再開されるようになる。
このようにすることで、複数のマニピュレータが同期をとって動作することが可能となるので、複数のマニピュレータを協調させて動作するような作業プログラムの作成も可能となる。
【００２８】
作業プログラムの自動生成（ステップＳ５）では、ステップＳ２で設定した部品の各経由点の位置および姿勢をマニピュレータ先端の位置および姿勢に変換し、これを入力として逆運動学変換の計算によってマニピュレータの各関節角目標値を計算する。
これによって各マニピュレータの各経由点での各関節軸の目標角度が求まり、移動命令とともに作業プログラムが生成できる。逆運動学変換の計算は既知の方法であり、すべての経由点についてこの計算を行うことで移動に関する作業プログラムが完成する。
しかし、経由点の位置はＧＵＩ環境にて指定したもので、実際にマニピュレータを動作させて決定したものではない。よって経由点が特異点になっている場合もありうる。特異点が含まれていた場合は逆運動学変換の解が求まらない。また逆運動学変換の計算では求まった解が、マニピュレータの関節の可動範囲外であるなど、ステップＳ２で設定した部品の経由点の位置姿勢がマニピュレータにとっては実現できない位置姿勢である場合がある。
一方、単に通過するだけの経由点や、部品の把持方法を変更して作業姿勢を変更しても問題ない経由点については、その経由点でのマニピュレータ手先の目標姿勢のみ変更すれば目標位置は実現できる場合が多い。例えば、図４の（ｂ）や（ｃ）において、部品２０２や２０３は必ずしも図４に示した通りの姿勢でなくても良い。
そこで、ステップＳ５において逆運動学変換で解が求まらなかったり、解が関節可動範囲外であったりした経由点が発生した場合は、マニピュレータ手先の目標姿勢を所定の範囲内で変化させ、所定の評価方法によって目標姿勢を変更することで部品の経由点におけるマニピュレータの実現可能な位置姿勢が求まる。
目標姿勢を決定する評価方法として例えば次のようにすればよい。
（１）可操作性楕円体（「吉川恒夫著「ロボット制御基礎論」参照」）の半径から姿勢が最も変更しやすい方向を決定する。
可操作性楕円体とは手先の可操作性を表したものであり、その主軸半径の長い方向が手先速度を出しやすい方向、短い方向が小さい手先速度しか出せない方向である。従って、可操作性楕円体主軸半径（ヤコビ行列の特異値）によって変更しやすい方向を知ることができる。
（２）上記の方向に姿勢を一定範囲に振って、逆運動学変換の計算が可能な範囲を決定する。
（３）上記範囲のうち、逆運動学変換の解が各関節可動範囲のリミット値からの距離が最も遠いものを目標姿勢とする。
このようにして自動的に目標姿勢を変更することで実現可能な作業プログラムが自動生成できる。
【００２９】
また、図１０のようにマニピュレータが冗長自由度を持った７軸以上の構成である場合は、冗長自由度の姿勢を変更することで特異点や関節可動範囲オーバーを回避することが可能である。例えば７軸のマニピュレータでは、マニピュレータ先端の位置と姿勢を変更せずに、マニピュレータの肘の位置（ロボットのベース部から数えて３軸目（Ｊ３）と４軸目（Ｊ４）の軸の交点を肘位置と定義する）を変更することが可能である。
マニピュレータの原点（ロボットのベース部から数えて１軸目（Ｊ１）の軸線上の点で、２軸目（Ｊ２）の軸線と同じ高さに位置する）と手首点（Ｊ６軸の軸線とＪ７軸の軸線の交点）を結ぶ直線回りの肘位置の回転角度を肘回転角度と呼び、７自由度マニピュレータでは冗長自由度としてよく用いられる。
このような冗長自由度を用いて特異点や関節可動範囲オーバーを回避する。
ステップＳ５において逆運動学変換で解が求まらなかったり、解が関節可動範囲外であったりした経由点が発生した場合は、マニピュレータの肘回転角度を所定の範囲内で変化させ、所定の評価方法によって目標肘回転角度を変更することでマニピュレータの経由点における実現可能な位置姿勢が求まる。
目標肘回転角度を決定する評価方法としては例えば次のようにすれば良い。
（１）肘回転角度を一定範囲で変化させ、逆運動学変換の計算が可能な範囲を決定する。
（２）上記範囲のうち、逆運動学変換の解が関節可動範囲のリミット値からの（各関節角度制限値との）距離が最も遠いものを目標肘回転角度とする。
（３）または上記範囲のうち、上述の可操作度が最も大きいものを肘回転角度とする。
このようにして自動的に冗長自由度姿勢を変更することで、実現可能な作業プログラムが自動生成できる。
【００３０】
さらに、マニピュレータが位置制御可能な外部の走行台や回転台の上に搭載されている場合は、走行台や回転台の位置を変更することで、特異点や関節可動範囲オーバーを回避することが可能である。
ステップＳ５において逆運動学変換で解が求まらなかったり、解が関節可動範囲外であったりした経由点が発生した場合は、マニピュレータが搭載されている走行台や回転台の位置を所定の範囲で変化させ、所定の評価方法によって走行台や回転台の位置を変更することで部品の経由点におけるマニピュレータの実現可能な位置姿勢が求まる。
走行台や回転台の位置を決定する評価方法としては例えば次のようにすれば良い。
（１）マニピュレータの可操作性楕円体の半径から走行台や回転台の変更方向を決定する。
（２）上記の方向に走行台または回転台の位置を一定範囲変化させ、その時のマニピュレータベースの位置姿勢の変化分をマニピュレータ手先の目標位置姿勢から差し引いて逆運動学変換し、その計算が可能な範囲を決定する。
（３）上記範囲のうち、逆運動学変換の解が関節可動範囲のリミット値からの距離が最も遠いものを走行台または回転台の目標位置とする。
このようにして自動的に走行台や回転台の位置を変更することで、実現可能な作業プログラムが自動生成できる。
【００３１】
上記はステップＳ２で設定した部品の経由点の位置姿勢が、マニピュレータにとっては実現できない位置姿勢である場合の例を示したが、経由点間を補間して移動する際に位置姿勢が実現できなくなる場合もある。これは、生成された作業プログラムをオフライン教示ソフトウェアで経由点間の補間移動シミュレーションを行うことによって確認することができる。
この場合は、マニピュレータの移動途中に目標位置姿勢を実現できない地点において、上記の経由点での姿勢や冗長自由度姿勢、走行台や回転台の位置を変更した方法と同じ方法を用いて、姿勢や冗長自由度姿勢、走行台や回転台の位置を変更し、その地点を新たな経由点として作業プログラムに追加すればよい。
【図面の簡単な説明】
【００３２】
【図１】本発明の方法を適用する複腕ロボット装置の構成図
【図２】本発明の方法を適用する組み付け作業の一例を示す図
【図３】本発明の方法の処理手順を示すフローチャート
【図４】本発明の方法の部品の移動毎の位置姿勢設定方法を示す図
【図５】本発明の方法の作業内容や作業条件の入力画面の例を示す図
【図６】本発明の方法の作業マクロと作業条件の例を示す図
【図７】本発明の方法のダミー部品での位置姿勢設定方法を示す図
【図８】本発明の方法の作業内容や作業条件の入力画面に同期条件を追加した図
【図９】本発明の方法によって生成された作業プログラムの例を示す図
【図１０】冗長自由度を持ったマニピュレータを示す図
【符号の説明】
【００３３】
１０１    左腕ロボット（６自由度）
１０２    右腕ロボット（６自由度）
１０３    制御装置
１０４    プログラム作成装置
１０５    作業台
１０６    表示装置
２０１    部品Ｃ
２０１１  部品Ｂを取り付ける穴
２０１２  部品Ａを取り付ける穴
２０２    部品Ｂ
２０２１  部品Ｂの位置姿勢を表す座標系
２０３    部品Ａ
２０３１  部品Ａの位置姿勢を表す座標系
２０４    ケーブル
３０２    ダミー部品Ｄ
３０３    ダミー部品Ｃ
３０２１  ダミー部品Ｄの位置姿勢を表す座標系
３０３１  ダミー部品Ｃの位置姿勢を表す座標系
【図１】
2010137298.tif 000003
【図２】
2010137298.tif 000004
【図３】
2010137298.tif 000005
【図４】
2010137298.tif 000006
【図５】
2010137298.tif 000007
【図６】
2010137298.tif 000008
【図７】
2010137298.tif 000009
【図８】
2010137298.tif 000010
【図９】
2010137298.tif 000011
【図１０】
2010137298.tif 000012