説明

プログラム作成装置及びプログラム作成方法

【課題】作業ブロックの設定作業において作業者の負担を軽減する技術を提供する。
【解決手段】プログラム作成装置は、作業ブロック定義部41と、工程フロー編集部42と、制御プログラム生成部43とを備える。工程フロー編集部42は、複数の作業ブロック情報を所望の順序で並べて得られる工程フローにおいて、処理対象作業ブロック情報よりも後続の設定対象ブロック情報の内部状態情報を、当該処理対象ブロック情報の事後条件を用いて設定する。制御プログラム生成部43は、工程フロー編集部43により内部状態情報が設定された複数の作業ブロック情報に基づいて制御プログラムを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、組み立てセルにおいて使用されるロボットを制御するための制御プログラムを作成するプログラム作成装置、及び、プログラム作成方法に関するものである。
【背景技術】
【0002】
自動組み立てセルにおいて使用されるロボットには、当該ロボットの遠隔地において作成される制御プログラム、いわゆるオフラインプログラムにより制御されものがある。制御プログラムの作成方法には、ロボットの作業単位、例えば、部品の移動、ネジ締めごとに作業ブロック等を定義し、当該作業ブロック等を示すアイコンを組み合わせて作成する方法がある。この方法によれば、制御プログラムの作成工数を削減するとともに、多種多様な動作を実現することが可能となっている。
【0003】
特許文献1に開示されている技術では、複数の作業ブロックを連結することにより処理のシーケンスを定義している。さらに、この技術では、定義したシーケンスに従って駆動部を動作させる制御手段を備えている。特許文献2に開示されているような、業務システムに関わるプログラムの作成を行うソフトウェアの生産支援システムでは、データの流れに着目して業務仕様を作業部品に分割化して登録し、複数の作業部品を用いて処理のシーケンスを定義している。さらに、この技術では、画面項目の遷移に関する項目遷移条件を用いて項目間の遷移を行うことにより、プログラムが作成されている。
【0004】
このように、従来においては、部品の移動、ワークの姿勢変更、組み付け、ネジ締め、嵌め合いなどの作業単位ごとに作業ブロックまたは作業部品を定義し、それらを所望の順序で並べてシーケンスとして定義することにより、装置やシステムの制御プログラムを作成するものが提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001−147704号公報
【特許文献2】特開平7−44358号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
さて、工場の設備の一つであるロボットを使用した自動組み立てセルのような装置は、自由度の高い可動部を複数有しており、主にロボットが、ネジなどの部品を治具に仮置きする作業や、組み立て対象物たるワークに部品を組み付ける作業などを行う。そのロボットには、組み立て工程における多様な作業を行うことができるように、複数種類のハンドが用意されている。しかし、作業者は、作業ブロックを追加して配置する度に、配置した作業ブロックにハンドの情報等をいちいち最初から設定しなければならず、設定作業に多くの時間を費やさなければならなかった。
【0007】
また、組み立て作業を構成する作業単位が多いこと、製品設計に応じて組み付け手順などの作業内容が異なることから、作業ブロックが多数登録されている。しかし、使用するハンドによって把持可能な部品が限定されたり、把持する部品によって仮置き可能な治具が限定されたりすることから、作業者は、作業ブロックを配置する度に、前後の作業ブロックの内容を確認しながら適切な作業ブロックを選定しなければならず、手間がかかるものとなっていた。
【0008】
また、組立作業では、ロボットは部品を供給台から取外し、位置決めを行うために治具に一時的に部品を仮置きする。さらに、ロボットは治具から部品を取り出してワークに組み付ける作業を行う。このように、同一部品を扱う場合であっても、取り出し座標、取り付け座標などのロボットの動作位置が工程の組み方に応じて変化する。このため、工程の進行を考慮しながら座標値を計算し、各作業ブロックに個別に設定する必要があった。
【0009】
そこで、本発明は、上記のような問題点を鑑みてなされたものであり、主に作業ブロックの設定作業において作業者の負担を軽減する技術を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明に係るプログラム作成装置は、組み立てセルにおいて使用されるロボットを制御するための制御プログラムを作成するプログラム作成装置であって、未設定の内部状態情報と事後条件とを含む作業ブロックを、前記ロボットの作業単位ごとに定義する作業ブロック定義部を備える。そして、複数の前記作業ブロックを所望の順序で並べて得られる工程フローにおいて、処理対象の作業ブロックよりも後続の複数の作業ブロックの前記内部状態情報を、当該処理対象の作業ブロックの前記事後条件を用いて設定する工程フロー編集部と、前記工程フロー編集部により前記内部状態情報が設定された前記複数の作業ブロックに基づいて前記制御プログラムを生成する制御プログラム生成部とを備える。
【0011】
また、本発明に係るプログラム作成方法は、組み立てセルにおいて使用されるロボットを制御するための制御プログラムを作成するプログラム作成方法であって、(a)未設定の内部状態情報と事後条件とを含む作業ブロックを、前記ロボットの作業単位ごとに定義する工程を備える。そして、(b)複数の前記作業ブロックを所望の順序で並べて得られる工程フローにおいて、処理対象の作業ブロックよりも後続の複数の作業ブロックの前記内部状態情報を、当該処理対象の作業ブロックの前記事後条件を用いて設定する工程と、(c)前記工程(b)により前記内部状態情報が設定された前記複数の作業ブロックに基づいて前記制御プログラムを生成する工程とを備える。
【発明の効果】
【0012】
本発明によれば、作業者が作業ブロックの内部状態情報において一部の設定作業をするだけで、残りの内部状態情報が自動的に設定される。したがって、作業ブロック情報の設定作業における作業者の負担を軽減することができる。
【図面の簡単な説明】
【0013】
【図1】実施の形態1に係るロボットシステムの構成を示す図である。
【図2】実施の形態1に係るロボットの動作を示す図である。
【図3】実施の形態1に係るプログラム作成・教示部の構成を示すブロック図である。
【図4】実施の形態1に係る作業ブロックデータ記憶部の構成を示す図である。
【図5】実施の形態1に係る工程フローデータ記憶部の構成を示す図である。
【図6】実施の形態1に係る内部状態情報の構成を示す図である。
【図7】実施の形態1に係る工程フロー編集部の動作を示すフローチャートである。
【図8】実施の形態2に係るプログラム作成・教示部の構成を示すブロック図である。
【図9】実施の形態2に係る作業ブロック絞込部の動作を示すフローチャートである。
【図10】実施の形態2に係る作業ブロック絞込部の動作を示す図である。
【図11】実施の形態3に係るプログラム作成・教示部の構成を示すブロック図である。
【図12】実施の形態3に係るパーツ絞込部の動作を示すフローチャートである。
【図13】実施の形態3に係るパーツ絞込部の動作を示す図である。
【図14】実施の形態4に係るプログラム作成・教示部の構成を示すブロック図である。
【図15】実施の形態4に係る工程フローデータ記憶部の構成を示す図である。
【図16】実施の形態4に係る複数台対応干渉チェック部の動作を示すフローチャートである。
【発明を実施するための形態】
【0014】
<実施の形態1>
図1は、本発明の実施の形態1に係るロボットシステムの構成を示す図である。図に示すように、本実施の形態に係るロボットシステムは、組み立てセルにおいて使用されるロボット1と、ロボット制御装置2と、プログラム作成装置たるプログラム作成・教示装置3とを備える。
【0015】
プログラム作成・教示装置3は、ロボット1を遠隔的に制御するための制御プログラム、いわゆるオフラインプログラムを作成する装置である。作業者(ユーザ)は、プログラム作成・教示装置3を用いて制御プログラムを作成することが可能となっている。このプログラム作成・教示装置3は、プログラム作成・教示部31と、表示部32と、通信部33とを備える。
【0016】
プログラム作成・教示部31は制御プログラムを作成するとともに、ロボット1を教示(ティーチング)する。また、プログラム作成・教示部31は、制御プログラムと、ロボット1を教示することにより得られるロボット1の各部分の位置データとを記憶する。表示部32は、制御プログラムや位置データ等を表示する。通信部33は、ロボット制御装置2の通信部23と通信を行うものであり、制御プログラム等を送信する。
【0017】
ロボット制御装置2は、プログラム作成・教示装置3で生成された制御プログラムに基づいてロボット1を制御する装置である。このロボット制御装置2は、ロボット制御部21と、プログラム実行部22と、通信部23と、プログラム・データ記憶部24とを備える。
【0018】
通信部23は、通信部33と通信を行うものであり、プログラム作成・教示装置3から送信される制御プログラム等を受信する。プログラム・データ記憶部24は、ロボット1の制御プログラム及び位置データ等を記憶するものであり、通信部23で受信された制御プログラムを記憶する。プログラム実行部22は、ロボットプログラムを実行するものであり、通信部23からの制御プログラムや、プログラム・データ記憶部24に記憶されている制御プログラムを実行し、ロボット1を制御するための制御信号をロボット制御部21に出力する。ロボット制御部21は、当該制御信号に基づいてロボット1の動作を制御する。
【0019】
図2は、ロボット1を使用する組み立てセルの構成を示す図である。図に示すように、ロボット1は、ハンド11を着脱可能となっている。ロボット1は、製品の一部分である部品12を把持して、当該部品12を製品の別部分であるワーク15に組み付けて製品を組み立てていく。ハンド11は、複数種類存在し、その種類ごとに把持可能な部品12の種類が決まっている。供給装置13は、一以上の部品12をロボット1に供給する。この供給装置13は、複数の部品12が載置される単なる台(供給台(作業台ともいう))であってもよいし、例えばネジ供給装置のように、ネジ(部品12)をロボット1まで移送する移送機構を有する専用装置であってもよい。
【0020】
治具14は、ワーク15に組み付けられる前の部品12が仮置きされるものであり、部品12の位置・姿勢を一時的に保持するものである。治具14は、その種類ごとに仮置き可能な部品12の種類が決まっている。なお、この治具14は、複数種類の部品12について複数個の部品12が同時に仮置きされるものであってもよい。ワーク15は、部品12の組み付け対象物である。最終的に供給装置13から供給される全ての部品12をワーク15に組み付けることで製品の組み立てが行われる。
【0021】
次に、ロボット1が制御プログラムの制御により行う基本的な一連の組み立て動作について説明する。まず、ロボット1は用意されているハンド11を装着する。次に、ロボット1は、供給装置13に載置されている部品12を把持し、把持した部品12を治具14の所定の箇所に仮置きする。この際、複数種類の部品12について複数の部品12を治具14に同時に仮置きしてもよい。それから、ロボット1は、治具14に仮置きされた部品14を把持し、ワーク15へ予め決められた順に組み付ける。この組み付けの際、ロボット1は、複数の部品11が仮置きされた治具14を把持して移送することにより、当該複数の部品11を移送してもよいし、ワーク15を把持して移動させたり回転させたりしてもよい。なお、本実施の形態では、1台のロボット1が、供給装置13から治具14への部品12の移動と、治具14からワーク15への部品12の組み付けとを行う場合について説明するが、後の実施の形態のように、例えば、複数台のロボット1がこれらの作業を行ってもよい。
【0022】
さて、図1に示されるプログラム作成・教示部31では、ロボット1が行う作業単位、例えば、部品の移動、組み付け、ネジ締め、嵌め合いごとに、当該作業単位の内容を示す作業ブロックが定義される。そして、複数の作業ブロックが選択され、選択された複数の作業ブロックが所望の順序で並べて配置される。それから、配置された複数の作業ブロックのそれぞれにおいて、後で説明する図6に示される、ロボット1を動作させるのに必要な内部状態情報122が設定される。それから、設定後の複数の作業ブロックに基づいて、ロボット1に一連の動作及び作業をさせる制御プログラムが作成される。
【0023】
従来の技術では、作業者は、作業ブロックごとに、内部状態情報122の多くの項目についていちいち最初から設定及び入力をしなければならず、その作業は非常に時間がかかるものとなっていた。そこで、本実施の形態に係るプログラム作成・教示部31では、内部状態情報122の設定作業における作業者の負担を軽減することが可能となっている。以下、プログラム作成・教示部31の構成について詳細に説明する。
【0024】
図3は、プログラム作成・教示部31の構成を示すブロック図である。プログラム作成・教示部31は、例えば、CPU、記憶装置(いずれも図示せず)及び表示部32などから構成されている。そして、CPUが記憶装置に記憶されているプログラムを実行することにより、作業ブロック定義部41と、工程フロー編集部42と、制御プログラム生成部43と、ロボットシミュレータ部44と、作業ブロックデータ記憶部61と、工程フローデータ記憶部62とが、プログラム作成・教示部31に機能ブロックとして形成される。
【0025】
作業ブロック定義部41は、作業ブロックの雛形(以下、「作業ブロックテンプレート110」と呼ぶ)を作成する。作業ブロックデータ記憶部61は、作業ブロック定義部41が作成した複数の作業ブロックテンプレート110を記憶する。
【0026】
工程フロー編集部42は、作業者により選択された複数の作業ブロックテンプレート110をコピーし、複数の作業ブロック情報120として工程フローデータ記憶部62に記憶する。そして、工程フロー編集部42は、作業者により所望の順序で並べられた複数の作業ブロック情報120からなる「工程フロー」を作成する。
【0027】
工程フロー編集部42にて複数の作業ブロック情報120が並べられる際には、工程フロー編集部42は、例えばGUI(Graphical User Interface)を用いて当該複数の作業ブロック情報120を表示する。工程フロー編集部42は、この表示において、前後する複数の作業ブロック情報120の間を線または矢印で接続する。以下においては、工程フロー編集部42は、作業ブロック情報120の間を線で接続するものとして説明する。
【0028】
また、工程フロー編集部42は、作業者による部分的な設定に基づいて自動設定を行うことにより、工程フローの設定を完了させる。
【0029】
制御プログラム生成部43は、工程フロー設定完了後に、工程フロー編集部42によって起動される。制御プログラム生成部43は、工程フローデータ記憶部62から設定完了後の工程フローを読み込み、ロボット1を制御するための制御プログラムを生成する。
【0030】
ロボットシミュレータ部44は、工程フロー設定完了後に、工程フロー編集部42によって起動される。ロボットシミュレータ部44は、工程フローデータ記憶部62から設定完了後の工程フローを読み込み、ロボット1の動きを模擬する。この模擬においては、例えば三次元におけるロボット1の模擬的な位置、姿勢及び動きが制御プログラムに基づいて算出される。この模擬においては、ロボット1だけでなく、ロボット1、ハンド11及び部品11等の関係を考慮して、ハンド11、部品12等についてもロボット1と同様に模擬する。例えば、ロボット「A」が、ハンド「B」を装着して部品「C」を把持する場合、ロボットシミュレータ部44が制御プログラムを解釈して、ロボット「A」を模擬的に動作させてハンド「B」の模擬的な位置及び姿勢等を算出し、ハンド「B」の模擬的な位置及び姿勢等から部品「C」の模擬的な位置及び姿勢等を算出する。
【0031】
図4は、作業ブロックデータ記憶部61に複数の作業ブロックテンプレート110が記憶されている様子を示す図である。図に示すように、作業ブロックテンプレート110は、プログラムテンプレート111と、内部状態初期値112と、事前条件113と、事後条件114とを含む。本実施の形態では、事前条件113及び事後条件114のそれぞれは複数設けられている。
【0032】
図5は、工程フローデータ記憶部62に複数の作業ブロック情報120が記憶されている様子を示す図である。図に示すように、作業ブロック情報120は、プログラム121と、先に簡単に説明された内部状態情報122と、事前条件113と、事後条件114とを含む。本実施の形態では、事前条件113及び事後条件114のそれぞれは複数設けられている。
【0033】
作業ブロック情報120は、作業ブロックデータ記憶部61に記憶されている作業ブロックテンプレート110が工程フローデータ記憶部62に配置されることにより生成されるものであり、一つの作業ブロック情報120は、一つの作業ブロックテンプレート110を実質的にコピーしたものとなっている。具体的には、工程フロー編集部42により、プログラムテンプレート111の内容がプログラム121にコピーされる。内部状態初期値112は、内部状態情報122の初期値から構成されている。工程フロー編集部42により、内部状態初期値112の内容が内部状態情報122にコピーされることにより、内部状態情報122の予め決められた項目に対して初期値が設定される。また、工程フロー編集部42によって、複数の事前条件113及び複数の事後条件114が、作業ブロックテンプレート110から作業ブロック情報120にそのままコピーされる。
【0034】
次に、作業ブロックテンプレート110等に含まれる各種情報について説明する。プログラムテンプレート111及び内部状態初期値112は、テキスト形式のデータである。内部状態初期値112における各項目の初期値の設定は、例えば、下記の形式で記述される。
【0035】
【数1】

【0036】
ここで、式には定数値や文字列を使用することができる。定数値には整数、実数が用いられる。文字列は“”(ダブルクォート)で囲まれる。また、内部状態情報122で初期値が設定されていない項目には、値の設定が無効である状態を示す予約語として“NULL”が設定される。
【0037】
事前条件113及び事後条件114は、テキスト形式のデータである。事前条件113は、それが属する作業ブロックの作業単位をロボット1が実行する前の条件であり、条件文から構成されている。事後条件114は、それが属する作業ブロックの作業単位をロボット1が実行した後の条件であり、条件文から構成されている。これら条件文は、例えば、下記の形式で記述される。
【0038】
【数2】

【0039】
ここで、式には定数値や文字列を使用することができる。定数値には整数、実数が用いられる。文字列は“”(ダブルクォート)で囲まれる。また、式には変数名が使用可能である。式に使用可能な変数名は内部状態の項目名、及び、プログラム中で使用可能な変数名である。プログラム中で使用可能な変数には、ロボット1の動作状態を示す予め決められた変数名と、作業者が定義した変数名との2種類がある。式における演算としては、四則演算が可能である。また、sinやcosのような一般的な算術関数を利用してもよい。また、内部状態のクリア処理をするための条件文は、例えば、下記の形式で記述される。ここで、“NULL”は値の設定が無効である状態を示す。
【0040】
【数3】

【0041】
図6は、本実施の形態に係る作業ブロックの内部状態情報122のデータ構造を示す図である。内部状態情報122は、ハンド情報151と、部品情報152と、把持した部品12等を移動するときの始点となるFROM情報、及び、把持した部品12等を移動するときの終点となるTO情報からなる位置情報153とから構成されている。
【0042】
ハンド情報151は、ハンド11が装着されるか否かを示すハンド11の有無と、装着されるハンド11の種類と、装着されるハンド11のIDとから構成される。ハンド11の種類及びIDは、文字列で示される。ハンド11の種類ごとに把持可能な部品12は、ハンド11の機構設計時に決定されていることから、予めハンド11が把持可能な部品12の一覧を作成しておき、外部ファイルなどに格納しておく。ハンド11のIDは、組み立てセルに同一種類のハンド11が複数個存在する場合に、どのハンド11がロボット1に装着されているかを一意に識別するための識別子である。なお、ハンド11のIDには文字列の代わりに整数値などを用いて示されてもよい。
【0043】
部品情報152は、部品12が把持されるか否かを示す部品12の有無と、把持される部品12の種類、把持される部品12のIDとから構成される。部品12の種類及びIDは、文字列で示される。部品12の種類ごとに仮置き可能な治具14の種類、及び、治具14における仮置き箇所は、治具14の設計時に決定されていることから、予め部品12を仮置き可能な治具14の一覧を作成しておき、外部ファイルなどに格納しておく。また、部品12の種類ごとに取り付け可能なワーク15の種類、及び、ワーク15における組み付け箇所は製品の設計時に決定されているため、予め部品12を組み付け可能なワーク15の一覧を作成しておき、外部ファイルなどに格納しておく。部品12のIDは、組み立てセルに同一種類の部品12が複数個存在する場合に、どの部品12が把持されるかを一意に識別するための識別子である。なお、部品12のIDには文字列の代わりに整数値などを用いて示されてもよい。
【0044】
位置情報153は、作業位置の教示点を示す教示点名と、教示点に対応するプログラム中の変数を示す変数名と、作業位置の対象である供給装置13もしくは治具14の分類を示す対象分類と、対象の種類を示す対象種類と、対象の識別子を示す対象IDと、対象の仮置きまたは組み付け位置を示す対象箇所と、教示座標であるX,Y,Zとから構成されている。
【0045】
教示点名は、文字列で示され、教示作業を行う際に教示点を一意に識別するために使用される。変数名は、文字列で示され、プログラム中で教示点に対応する変数を示す。対象分類は、文字列で示され、供給装置13、作業台、治具14、退避位置などの分類を示す。対象分類は、これ以外に作業者定義の指定位置などが設定されてもよい。対象種類は、文字列で示され、対象分類ごとに種類の一覧が設けられている。この種類の一覧は、組み立てセルの設計時に決定されているため、予め種類の一覧を作成しておき、外部ファイルなどに格納しておく。対象IDは、文字列で示され、組み立てセルに同一種類の複数の対象が存在する場合、どの対象を指しているかを一意に識別するための識別子である。この対象IDには文字列の代わりに整数値などを用いて示されてもよい。
【0046】
対象箇所は、文字列で示され、複数の部品12を仮置き可能な治具14に部品12を仮置きする場合に、治具14においてどの箇所を指しているかを一意に識別するための識別子である。対象箇所は文字列の代わりに整数値などを用いて示されてもよい。対象箇所は、治具14のほか、供給装置13、作業台、ワーク15などの設計時に決定されるため、予め治具14、供給装置13、作業台、ワーク15などの種類ごとに対象箇所の一覧を作成しておき、外部ファイルなどに格納しておく。教示座標であるX,Y,Zには、教示の際に三次元の位置座標値が格納される。教示座標には、三次元の位置座標値だけでなく、姿勢を示すパラメータ、例えば、「A」、「B」、「C」などを加えてもよい。
【0047】
次に、本実施の形態に係るプログラム作成・教示部31の動作について説明する。
【0048】
<作業ブロックテンプレートの定義>
まず、プログラム作成・教示部31は、作業ブロック定義部41を用いて作業ブロックテンプレート110を定義する。具体的には、作業ブロック定義部41が、作業者の操作に基づいて、作業ブロックテンプレート110における事後条件114と事前条件113とを定義する。
【0049】
より具体的には、作業ブロック定義部41は、内部状態情報122において値などの設定が自動的に行われるようにするための条件を含む事後条件114を定義する。
【0050】
例えば、ロボット1がハンド「A」を装着する作業ブロックテンプレートkにおいては、事後条件114は次のように記される。
【0051】
【数4】

【0052】
ここで、“.”(ドット)は、項目名を階層的に示すために使用される。また、ロボット1が供給装置「C」上の部品「B」を把持する作業ブロックテンプレートlにおいては、事後条件114は次のように記される。
【0053】
【数5】

【0054】
また、ロボット1が把持した部品12を治具「D」へ移送する作業ブロックテンプレートmにおいては、事後条件114は次のように記される。
【0055】
【数6】

【0056】
本実施の形態では、内部状態のクリアに関する条件文が、内部状態情報122における自動設定を停止させるようにするための条件(以下、「終了条件」と呼ぶ)を示す条件文として用いられる。作業ブロック定義部41は、終了条件を含む事前条件113を定義する。
【0057】
例えば、ロボット1がハンド11を取り外してから作業を行う作業ブロックテンプレート110においては、事前条件113が次のように記される。
【0058】
【数7】

【0059】
作業ブロック定義部41は、複数の事前条件113及び複数の事後条件114が作成された作業ブロックテンプレート110を作業ブロックデータ記憶部61に記憶する。
【0060】
<工程フローの作成>
次に、プログラム作成・教示部31は、工程フロー編集部42を用いて工程フローを作成する。具体的には、まず、工程フロー編集部42は、作業ブロックデータ記憶部61から作業者により選択された複数の作業ブロックテンプレート110をコピーし、それによって得られた複数の作業ブロック情報120を工程フローデータ記憶部62に記憶する。
【0061】
そして、工程フロー編集部42は、複数の作業ブロック情報120をGUI表示する。作業者により、GUI表示された複数の作業ブロック情報120が並べて配置されると、工程フロー編集部42が、前後する二つの作業ブロック情報120の間を線で接続し、工程フローを作成する。
【0062】
例えば、上述の作業ブロックテンプレートk,l,mのコピーである作業ブロック情報K,L,Mを用いて、ロボット1にハンド「A」を装着し、供給装置「C」上にある部品「B」をハンド「A」で把持して治具「D」へ移送する作業を実現しようとする場合には、作業者により、作業ブロック情報K,L,Mがこの順に並べられる。この場合に、工程フロー編集部42は、GUI表示において、作業ブロック情報Kと作業ブロック情報Lとを線で互いに接続し、作業ブロック情報Lと作業ブロック情報Mとを線で互いに接続する。
【0063】
工程フロー編集部42は、工程フローにおける複数の作業ブロック情報120の並び順に関する情報を工程フロー接続情報125として生成する。そして、工程フロー編集部42は、図5に示すように、生成した工程フロー接続情報125を工程フローデータ記憶部62に記憶する。
【0064】
<作業者による内部状態情報の設定>
次に、作業者により、工程フローを構成する複数の作業ブロック情報120において、内部状態情報122が部分的に設定される。
【0065】
具体的には、まず、作業者により、作業ブロック情報120の内部状態情報122において、ハンド11のID及び部品12のIDが設定される。これにより、組み立てセルに存在する複数のハンド11及び複数の部品12から、使用すべきハンド11及び部品12がそれぞれ指定される。この際、ハンド11のIDは、ハンド11が装着される最初の作業ブロック情報120の内部状態情報122にのみ設定され、部品12のIDは、部品12が把持される最初の作業ブロック情報120の内部状態情報122にのみ設定される。
【0066】
例えば、上述の作業ブロック情報K,L,Mのうち、ハンド11を装着する最初の作業ブロック情報120は作業ブロック情報Kであるから、作業ブロック情報Kにおいてのみハンド11のIDが設定される。また、作業ブロック情報K,L,Mのうち、部品12を把持する最初の作業ブロック情報120は作業ブロック情報Lであるから、作業ブロック情報Lにおいてのみ部品12のIDが設定される。以下、作業ブロック情報Kのハンド11のID、及び、作業ブロック情報Lの部品12のIDには、「A1」及び「B1」がそれぞれ設定されたものとして説明する。
【0067】
また、作業者により、作業ブロック情報120の内部状態情報122において、ハンド11のIDと同様に、対象ID及び対象箇所が設定される。これにより組み立てセルに存在する複数の対象、つまり、複数の供給装置13及び複数の治具14から、使用すべき供給装置13及び治具14がそれぞれ指定される。
【0068】
以下、作業ブロック情報Lの対象ID及び対象箇所においてのみ、例えば「C1」及び「C11」がそれぞれ設定され、上述の作業ブロック情報Mの対象ID及び対象箇所においてのみ、例えば「D1」及び「D11」がそれぞれ設定されたものとして説明する。
【0069】
以上により、内部状態情報122においては、ハンド11等の項目について部分的に設定されるが、設定されない項目については初期値としてNULLに設定されるものとする。なお、三次元CADなどを使用している場合、CAD部品に予めIDの情報を持たせておき、作業者がCAD部品の中から対象を選択することで、ハンド11のID、部品12のID、対象ID及び対象箇所などの入力を行ってもよい。
【0070】
<内部状態情報の自動設定>
次に、プログラム作成・教示部31は、工程フロー編集部42を用いて作業ブロック情報120の内部状態情報122を自動設定する。具体的には、工程フロー編集部42が、作業者により行われた内部状態情報122での部分的な設定に基づいて、内部状態情報122での残りの設定を自動的に設定していく。
【0071】
図7は、工程フロー編集部42が、作業ブロック情報120の内部状態情報122を自動設定する際の動作を示すフローチャートである。以下、図7を用いて、工程フロー編集部42の動作を説明する。
【0072】
まず、ステップs1にて、工程フロー編集部42は、工程フローデータ記憶部62に記憶されている工程フローから、一つの作業ブロック情報120を処理対象の作業ブロック情報120(以下、「処理対象ブロック情報120A」と呼ぶこともある)として取得する。工程フロー編集部42は、ステップs1を最初に行う際には、工程フローの先頭にある作業ブロック情報120を処理対象ブロック情報120Aとして取得し、ステップs1を行うごとに、次の作業ブロック情報120を処理対象ブロック情報120Aとして取得していく。
【0073】
ステップs2にて、工程フロー編集部42は、処理対象ブロック情報120Aから、一つの事後条件114を「処理対象事後条件114A」として取得する。工程フロー編集部42は、ステップs2を最初に行う際には、先頭の事後条件114を処理対象事後条件114Aとして取得し、ステップs2を行うごとに、次の事後条件114を処理対象事後条件114Aとして取得する。
【0074】
ステップs3にて、工程フロー編集部42は、工程フローにおいて、処理対象ブロック情報120Aよりも後続の一つの作業ブロック情報120を、設定対象の作業ブロック情報120(以下、「設定対象ブロック情報120B」と呼ぶこともある)として取得する。工程フロー編集部42は、ステップs3を最初に行う際には、処理対象ブロック情報120A直後の作業ブロック情報120を設定対象ブロック情報120Bとして取得し、ステップs3を行うごとに、次の作業ブロック情報120を設定対象ブロック情報120Bとして取得する。
【0075】
ステップs4にて、工程フロー編集部42は、設定対象ブロック情報120Bの事前条件113が、処理対象事後条件114Aの終了条件であるかを判定する。具体的には、工程フロー編集部42は、このステップs4にて、設定対象ブロック情報120Bから一つの事前条件113を取得し、当該取得した一つの事前条件113が処理対象事後条件114Aの終了条件であるかを判定する。ステップs4において、一つの事前条件113が処理対象事後条件114Aの終了条件であると判定した場合にはステップs6に進む。一方、ステップs4において、一つの事前条件113が処理対象事後条件114Aの終了条件でないと判定した場合には、工程フロー編集部42は、設定対象ブロック情報120Bの残りの事前条件113についても同様に判定していく。そして、工程フロー編集部42は、設定対象ブロック情報120Bの事前条件113のいずれも、処理対象事後条件114Aの終了条件ではないと判定した場合にはステップs5に進む。
【0076】
ステップs5にて、工程フロー編集部42は、処理対象ブロック情報120Aの内部状態情報122の設定に処理対象事後条件114Aを適用して、設定用の情報を取得する。そして、工程フロー編集部42は、設定対象ブロック情報120Bの内部状態情報122に、当該設定用の情報を書き込む。つまり、工程フロー編集部42は、処理対象ブロック情報120Aの処理対象事後条件114Aを用いて、設定対象ブロック情報120Bの内部状態情報122を設定する。それからステップs3に戻る。
【0077】
工程フロー編集部42は、ステップs4において事前条件113が処理対象事後条件114Aの終了条件であると判定するまで、以上のステップs3〜s5の処理を繰り返す。したがって、工程フロー編集部42は、ステップs4において当該判定をするまで、処理対象ブロック情報120Aよりも後続の複数の作業ブロック情報120の内部状態情報122を、処理対象ブロック情報120Aの処理対象事後条件114Aを用いて自動的に設定していく。一方、工程フロー編集部42は、ステップs4において事前条件113が処理対象事後条件114Aの終了条件であると判定する場合には、処理対象事後条件114Aを用いて設定対象ブロック情報120Bの内部状態情報122を自動設定するのを停止する。
【0078】
ステップs6にて、工程フロー編集部42は、処理対象ブロック情報120Aにおいて、処理対象事後条件114Aとすべき次の事後条件114があるかを判定する。ステップs6において、次の事後条件114があると判定した場合にはステップs2に戻り、次の事後条件114がないと判定した場合にはステップs7に進む。
【0079】
工程フロー編集部42は、ステップs6において次の事後条件114がないと判定するまで、ステップs2〜s6の処理を繰り返す。したがって、工程フロー編集部42は、処理対象ブロック情報120Aの全ての事後条件114について、ステップs2〜s6の処理を繰り返すことになる。
【0080】
ステップs7にて、工程フロー編集部42は、工程フローにおいて、処理対象ブロック情報120Aとすべき次の作業ブロック情報120があるかを判定する。ステップs7において、次の作業ブロック情報120があると判定した場合にはステップs1に戻り、次の作業ブロック情報120がないと判定した場合には処理を終了する。
【0081】
以上により、工程フローを構成する複数の作業ブロック情報120の内部状態情報122の大部分または全部が自動設定される。例えば、作業ブロック情報K,L,Mに対して以上の処理を行った場合、作業ブロック情報Mの内部状態情報122は下記のようになる。
【0082】
【数8】

【0083】
この場合、作業ブロック情報Mの内部状態情報122において、作業者が設定したのは位置の対象IDと位置の対象箇所だけであったが、工程フロー編集部42の自動設定により大部分または全ての設定が完了することになる。したがって、作業者の設定作業が軽減されることになる。
【0084】
<その後の処理>
その後、プログラム作成・教示部31は、ロボットシミュレータ部44を用いてオフラインティーチング作業を行う。具体的には、まず、工程フロー編集部42が、工程フローデータ記憶部62に記憶されている設定完了後の工程フローをロボットシミュレータ部44に渡す。そして、ロボットシミュレータ部44が、当該工程フローに沿ってロボット1を模擬動作させる。ロボットシミュレータ部44は、この模擬動作を工程フローの作業ブロック情報120ごとに順番に行い、その時のハンド11などの模擬的な位置などを三次元で計算する。
【0085】
ここで、ロボット1がハンド11を装着し、ハンド11が部品12を把持する場合には、ハンド11のサイズ、部品12のサイズなどを考慮してロボット1の教示座標の計算を行う。また、部品12が仮置きされている治具14を模擬的に移動すること、もしくは、組み付けの際にワーク15の姿勢を模擬的に変更することも可能である。いずれの場合も、ロボット1の模擬動作により、現実に行われる動作とほぼ同じ位置を取得することができることから、ロボット1等を実際に動かさなくても、ロボット1等が正しく動作するか等について予測することができる。
【0086】
プログラム作成・教示部31は、制御プログラム生成部43を用いて、組み立てセルのロボット1の制御プログラムを生成する。具体的には、まず、工程フロー編集部42が、工程フローデータ記憶部62に記憶されている設定完了後の工程フローを制御プログラム生成部43に渡す。そして、制御プログラム生成部43が、設定完了後の複数の作業ブロック情報120に基づいて制御プログラムを生成する。制御プログラム生成直前においては、作業ブロック情報120の内部状態情報122は全て設定されていることから、制御プログラム生成部43は、プログラム中の変数に教示点の位置情報を設定し、工程フローに従ってプログラムを連結することで、ロボット1の制御プログラムを生成することができる。
【0087】
以上のようなプログラム作成・教示装置3によれば、作業者が作業ブロック情報120の内部状態情報122において一部の設定作業をするだけで、残りの内部状態情報122が自動的に設定される。したがって、作業ブロック情報120の設定作業における作業者の負担を軽減することができ、工程フローの作成時間を短縮することができる。
【0088】
また、事前条件113が事後条件114の終了条件である場合には、その事後条件114を用いて行う自動設定が停止する。したがって、所望の事後条件114のみを用いて自動設定を行うことができる。
【0089】
なお、以上の説明では、自動設定する情報として、ハンド情報、部品情報、位置情報について説明したが、これに限ったものではない。例えば、上記と同様のアルゴリズムを用いて、ロボット1の付帯機器である、ビジョンセンサなどの機器の装着有無などの情報も自動設定可能である。また、組み立てセルが処理中の製品情報、組み立てレシピ、個々の製品のカスタマイズ情報などの付加情報を自動設定する処理にも上記の技術を適用することができる。
【0090】
<実施の形態2>
図8は、本実施の形態2に係るプログラム作成・教示装置が備えるプログラム作成・教示部の構成を示すブロック図である。以下、本実施の形態に係るプログラム作成・教示装置の説明においては、実施の形態1と同一の部分には同一符号を付与するものとする。
【0091】
本実施の形態に係るプログラム作成・教示装置3では、複数の作業ブロックテンプレート110の中から、工程フローの終端に配置可能な作業ブロックテンプレート110を自動的に絞り込むことが可能となっている。以下、実施の形態1と異なる部分を中心に本実施の形態に係るプログラム作成・教示装置3について説明する。
【0092】
図8に示すように、本実施の形態に係るプログラム作成・教示装置3のプログラム作成・教示部31は、実施の形態1に係るプログラム作成・教示部31に作業ブロック絞込部45を加えたものである。この作業ブロック絞込部45は、工程フローの終端に配置されている作業ブロック情報120(以下、「終端ブロック情報120C」と呼ぶ)の内部状態情報122に基づいて、終端ブロック情報120Cの後に配置可能な作業ブロックテンプレート110の候補を絞り込む機能を有する。
【0093】
この作業ブロック絞込部45の機能を実現すべく、作業ブロックテンプレート110の複数の事前条件113は、作業ブロックテンプレート110の前に配置可能な作業ブロック情報120を絞り込むための条件を含んでいる。この条件を示す条件文は、例えば、下記の形式で記述される。
【0094】
【数9】

【0095】
ここで、項目名は内部状態情報122の項目名である。比較演算子には、等価(==)、不等(!=)、比較(>、≧、≦、<)のいずれかが用いられる。論理演算式は、比較演算子、否定(!)、論理積(AND)、論理和(OR)、四則演算、算術関数と、定数、項目名、プログラム中の変数名などの組合せによる式である。演算の優先度を付けるために“(”、“)”などの括弧を用いてもよい。例えば、作業ブロック情報120が示す部分作業において扱うことができるハンド種類が「A」に限定される場合には、その作業ブロック情報120の事前条件113に格納される条件文は、例えば、下記のように記述される。
【0096】
【数10】

【0097】
作業ブロック絞込部45は、複数の作業ブロックテンプレート110の事前条件113の中から「IF(〜)」という条件文を抽出し、終端ブロック情報120Cの内部状態情報122が、当該条件文が示す条件を満たしているかを判定する。そして、作業ブロック絞込部45は、例えば、作業ブロックテンプレート110の事前条件113の「IF(〜)」という条件が全て「真」である場合には、当該作業ブロックテンプレート110は終端ブロック情報120Cの後に配置可能であると判定する。
【0098】
なお、本実施の形態においては、作業ブロックテンプレート110が終端ブロック情報120Cの後に配置不可能であることを示すマークが用いられる。そして、そのマークの有無が設定される領域が、各作業ブロックテンプレート110に設けられている。作業ブロック絞込部45は、上述の判定結果に応じて各作業ブロックテンプレート110のマークの有無を変更する。
【0099】
図9は、本実施の形態に係る作業ブロック絞込部45の動作を示すフローチャートである。以下、図9を用いて作業ブロック絞込部45の動作について説明する。
【0100】
まず、ステップs11にて、作業ブロック絞込部45は、作業ブロックデータ記憶部61に定義(登録)された全ての作業ブロックテンプレート110のマークをクリア(解除)する。ステップs12にて、作業ブロック絞込部45は、作成中の工程フローから終端ブロック情報120Cを検索する。
【0101】
ステップs13にて、作業ブロック絞込部45は、作業ブロックデータ記憶部61から、一つの作業ブロックテンプレート110を「処理対象テンプレート110A」として取得する。作業ブロック絞込部45は、次にステップs13を行う際には、取得した作業ブロックテンプレート110とは別の作業ブロックテンプレート110を、処理対象テンプレート110Aとして取得する。
【0102】
ステップs14にて、作業ブロック絞込部45は、処理対象テンプレート110Aの複数の事前条件113から、一つの事前条件113を「処理対象事前条件113A」として取得する。作業ブロック絞込部45は、ステップs14を最初に行う際には、複数の事前条件113から、先頭の事前条件113を処理対象事前条件113Aとして取得し、ステップs14を行うごとに、次の事前条件113を処理対象事前条件113Aとして取得する。
【0103】
ステップs15にて、作業ブロック絞込部45は、ステップs12にて検索した終端ブロック情報120Cの内部状態情報122が、処理対象事前条件113Aを満たすかを判定する。ステップs15において、満たすと判定した場合にはステップs17に進み、満たさないと判定した場合にはステップs16に進む。
【0104】
ステップs16にて、作業ブロック絞込部45は、満たさなかった処理対象事前条件113Aの処理対象テンプレート110Aにマークを設定し、ステップs17に進む。
【0105】
ステップs17にて、作業ブロック絞込部45は、処理対象テンプレート110Aにおいて、処理対象事前条件113Aとすべき次の事前条件113があるかを判定する。ステップs17において次の事前条件113があると判定した場合にはステップs14に戻り、次の事前条件113がないと判定した場合にはステップs18に進む。
【0106】
作業ブロック絞込部45は、ステップs17において次の事前条件113がないと判定するまで、ステップs14〜s17の処理を繰り返す。したがって、作業ブロック絞込部45は、処理対象テンプレート110Aの全ての事前条件113についてステップs14〜s17の処理を繰り返すことになる。よって、作業ブロック絞込部45は、終端ブロック情報120Cの内部状態情報122が処理対象テンプレート110Aの事前条件113のいずれか一つでも満たさないと判定した場合に、当該処理対象テンプレート110Aにマークを設定することになる。
【0107】
ステップs18にて、作業ブロック絞込部45は、作業ブロックデータ記憶部61において、処理対象テンプレート110Aとすべき別の作業ブロックテンプレート110があるかを判定する。ステップs18において、別の作業ブロックテンプレート110があると判定した場合にはステップs13に戻り、そうでない場合にはステップs19に進む。
【0108】
ステップs19にて、作業ブロック絞込部45は、マークが設定されていない作業ブロックテンプレート110をハイライト表示する。なお、マークが設定されていない作業ブロックテンプレート110を表示する態様は、ハイライト表示に限ったものではなく、マークの設定の有無を区別可能な表示態様であればよい。例えば、マークが設定されていない作業ブロックテンプレート110の色やフォントを変えてもよいし、当該作業ブロックテンプレート110のみを表示すれば、選択時のスクロール作業を減らすこともできる。
【0109】
次に、以上の処理の動作結果の例を示す。ここでは、部品12の把持において3種類の作業ブロックテンプレートp,q,rがある場合を例にして説明する。作業ブロックテンプレートpは部品12を「上」からロボット1が把持する動作、作業ブロックテンプレートqは部品12を「横」からロボット1が把持する動作、作業ブロックテンプレートrは部品12を「上下」から挟み込むようにロボット1が把持する動作にそれぞれ対応しているものとする。
【0110】
そして、ワーク15に部品「B」を複数個組み付ける場合には、部品12を「上」から把持して下方向に組み付ける作業と、部品12を「横」から把持して横方向に組み付ける作業とが存在するものとする。そして、ワーク15に部品「C」を複数個組み付ける場合には、部品12を「上」から把持して下方向に組み付ける作業と、部品12を「上下」から把持して向きを変えてから組み付ける作業とが存在するものとする。
【0111】
この場合、作業ブロックテンプレートpの事前条件113は、次のように記述される。
【0112】
【数11】

【0113】
また、作業ブロックテンプレートqの事前条件113は、次のように記述される。
【0114】
【数12】

【0115】
また、作業ブロックテンプレートrの事前条件113は、次のように記述される。
【0116】
【数13】

【0117】
工程フローの終端において、部品「B」を把持可能なハンド11がロボット1に装着されている際に、作業ブロック絞込部45が上述した絞込作業をした場合には、作業部ブロックテンプレートp、qが絞り込まれてハイライト表示される。一方、工程フローの終端において、部品「C」を把持可能なハンド11がロボット1に装着されている際に、作業ブロック絞込部45が上述した絞込作業をした場合には、作業ブロックテンプレートp,rが絞り込まれてハイライト表示される。
【0118】
図10は、作業ブロック絞込部45により作業ブロックテンプレート110を絞り込まれる際の画面170の例を示す図である。画面170の右側には工程フローが表示される工程フロー表示領域171が設けられている。画面170の左上側には作業ブロックテンプレート110の一覧が表示されるテンプレート表示領域172が設けられている。画面170の左下側には工程フローの中でマウスクリックなどにより選択された作業ブロック情報120のプログラム121及び内部状態情報122などを表示する詳細情報表示領域173が設けられている。
【0119】
この図においては、作成中の工程フローが工程フロー表示領域171に表示されており、当該工程フローの終端が閉じていない箇所が破線で示されている。作業ブロック絞込部45は、この破線の位置に配置可能な作業ブロックテンプレート110の候補を作業ブロックデータ記憶部61から抽出し、テンプレート表示領域172に記される作業ブロックテンプレート110の名称を四角形で囲ってハイライト表示する。
【0120】
以上のようなプログラム作成・教示装置3によれば、作業ブロック絞込部45が、工程フローの終端に配置されている作業ブロック情報120の内部状態情報122に基づいて、当該作業ブロック情報120の後に配置可能な作業ブロックテンプレート110を自動的に絞り込む。したがって、作業者は、工程フローにおける作業ブロック情報120の前後関係を意識することなく、作業ブロック絞込部45により絞り込まれた作業ブロックテンプレート110の中から、工程フローの終端に配置すべきものを選択することができる。よって、作業ブロック情報120の配置作業における作業者の負担を軽減することができ、工程フローの作成時間を短縮することができる。また、本実施の形態に係るプログラム作成・教示装置3は、実施の形態1に係るプログラム作成・教示装置3と同様の構成を備えるため、それと同じ効果を得ることができる。
【0121】
<実施の形態3>
図11は、本実施の形態3に係るプログラム作成・教示装置が備えるプログラム作成・教示部の構成を示すブロック図である。以下、本実施の形態に係るプログラム作成・教示装置の説明においては、実施の形態2と同一の部分には同一符号を付与するものとする。
【0122】
本実施の形態に係るプログラム作成・教示装置3では、オフライン教示する際にロボット1による作用対象として選択可能なパーツ182を絞り込むことが可能となっている。ここでパーツ182とは、後で説明する図12に示されるように、形状情報及び位置情報により示される、三次元におけるハンド11、部品12、供給台を含む供給装置13、治具14、ワーク15などの要素単位である。以下、実施の形態2と異なる部分を中心に本実施の形態に係るプログラム作成・教示装置3について説明する。
【0123】
図11に示されるように、本実施の形態に係るプログラム作成・教示装置3のプログラム作成・教示部31は、実施の形態2に係るプログラム作成・教示部31にパーツ絞込部46を加えたものである。このパーツ絞込部46は、ロボットシミュレータ部44を用いてオフライン教示する際に選択可能なパーツ182を絞り込む機能を有する。
【0124】
具体的には、ロボットシミュレータ部44は、ロボット1を模擬的に動かして、ロボット1の可動範囲を取得する。そして、パーツ絞込部46は、パーツの模擬的な位置がロボット1の可動範囲内にあるか否かの判定結果と、ロボット1、ハンド11、部品12、供給装置13、治具14及びワーク15のそれぞれの種類とに基づいて、選択可能なパーツ182を絞り込む。
【0125】
なお、本実施の形態においては、ロボット1によりパーツ182が選択されることができないことを示すマークが用いられる。そして、作業ブロック情報120には、パーツ182ごとにそのマークの有無が設定される領域が設けられている。パーツ絞込部46は、干渉チェックの結果に応じて、作業ブロック情報120におけるマークの有無を変更する。
【0126】
図12は、本実施の形態に係るパーツ絞込部46がパーツを絞り込む際の動作を示すフローチャートである。以下、図12を用いてパーツ絞込部46における当該動作について説明する。
【0127】
まず、ステップs21にて、作業者により、選択可能なパーツ182を絞り込む対象とされる作業ブロック情報120が指定される。ステップs22にて、パーツ絞込部46は、指定された作業ブロック情報120において、全てのパーツ182のマークをクリアする。
【0128】
ステップs23にて、パーツ絞込部46は、複数のパーツ182から一つのパーツ182を「処理対象パーツ182A」として取得する。パーツ絞込部46は、次にステップs23を行う際には、取得したパーツ182とは別のパーツ182を、「処理対象パーツ182A」として取得する。ステップs24にて、パーツ絞込部46は、複数の教示点の中から一つの教示点を「処理対象教示点」として取得する。パーツ絞込部46は、次にステップs24を行う際には、取得した教示点とは別の教示点を、処理対象教示点として取得する。
【0129】
ステップs25にて、パーツ絞込部46は、処理対象パーツ182Aの種類が処理対象教示点の種類と一致しているかを判定する。一致していないと判定した場合にはステップs26に進み、一致すると判定した場合にはステップs27に進む。
【0130】
ステップs26では、パーツ絞込部46は、処理対象パーツ182Aにマークを設定する。
【0131】
ステップs27にて、パーツ絞込部46は、ロボットシミュレータ部44で取得された処理対象パーツ182Aの模擬的な位置が、ロボットシミュレータ部44で取得されたロボット1の可動範囲内にあるかを判定する。ステップs27において、パーツ絞込部46は、模擬的な位置がロボット1の可動範囲内にあると判定した場合にはステップs28に進み、模擬的な位置がロボット1の可動範囲内にないと判定した場合にはステップs29に進む。
【0132】
ステップs28にて、パーツ絞込部46は、処理対象パーツ182Aにマークを設定する。
【0133】
ステップs29にて、パーツ絞込部46は、複数の教示点のうち処理対象教示点とすべき別の教示点があるかを判定する。ステップs29において、別の教示点があると判定した場合にはステップs24に戻り、別の教示点がないと判定した場合には、ステップs30に進む。
【0134】
ステップs30にて、パーツ絞込部46は、複数のパーツ182のうち、処理対象パーツ182Aとすべき別のパーツ182があるかを判定する。ステップs30において、別のパーツ182があると判定した場合にはステップs23に進み、別のパーツ182がないと判定した場合にはステップs31に進む。
【0135】
ステップs31にて、パーツ絞込部46は、マークが設定されていないパーツ182をハイライト表示する。
【0136】
図13は、パーツ絞込部46によりパーツ182が絞り込まれたときの画面181の例を示す図である。この画面181においては、ロボット1等が、三次元CADなどによって三次元表示されている。パーツ絞込部46は、現在教示しようとしている教示点と条件が合致するパーツ182をハイライト表示する。この図13においては、ハッチングが施された部品12のパーツ182がハイライト表示されている。作業者は、三次元表示されたパーツ182のうち、ハイライト表示されたパーツ182を教示の対象としてマウスのクリックなどの操作により選択することが可能となる。
【0137】
なお、ここでは、オフライン教示の際に選択可能なパーツ182が三次元で表示される場合について説明したが、これに限ったものではない。例えば、当該パーツ182の表示は、二次元表示であってもよいし、パーツ名の一覧表示や順次表示であってもよい。また、パーツ候補及びその周辺への自動ズームが併用されてもよい。
【0138】
以上のようなプログラム作成・教示装置3によれば、パーツ絞込部46が、オフライン教示の際に選択可能なパーツ182を自動的に絞り込む。したがって、作業者がどのパーツ182を選択できるかを知ることができるので教示作業が容易になる。よって、オフライン教示時の作業時間を短縮することができる。また、本実施の形態に係るプログラム作成・教示装置3は、実施の形態2に係るプログラム作成・教示装置3と同様の構成を備えるため、それと同じ効果を得ることができる。
【0139】
<実施の形態4>
図14は、本実施の形態4に係るプログラム作成・教示装置が備えるプログラム作成・教示部の構成を示すブロック図である。以下、本実施の形態に係るプログラム作成・教示装置の説明においては、実施の形態3と同一の部分には同一符号を付与するものとする。
【0140】
これまでの制御プログラムは、1台のロボット1を制御するものであったが、本実施の形態では、互いに可動範囲(作業範囲)の一部分が重複する複数台のロボット1を制御するものである。本実施の形態に係るプログラム作成・教示装置3は、そのような複数のロボット1同士が作業中に互いに衝突するのを事前に防止することが可能となっている。以下、実施の形態3と異なる部分を中心に本実施の形態に係るプログラム作成・教示装置3について説明する。
【0141】
図14に示すように、本実施の形態に係るプログラム作成・教示装置3のプログラム作成・教示部31は、実施の形態3に係る工程フロー編集部42及びロボットシミュレータ部44の代わりに、複数台対応工程フロー編集部52及び複数対応ロボットシミュレータ部54がそれぞれ設けられている。そして、その構成に、複数台対応干渉チェック部57が加わったものとなっている。
【0142】
複数台対応工程フロー編集部52は、工程フロー編集部42において、複数のロボット1の工程フローを作成可能にしたものである。この複数台対応工程フロー編集部52は、複数のロボット1のそれぞれに対して工程フロー編集部42と同様の動作を行い、ロボット1ごとに工程フローの作成等を行う。そして、ロボット1の作業ブロック情報120と、他のロボット1の作業ブロック情報120とが作業者によって互いに線で接続された場合に、複数台対応工程フロー編集部52は、線で接続された二つの作業ブロック情報120のそれぞれを、同期すべき作業ブロック情報120(以下、「同期ブロック情報120D」と呼ぶ)として定義する。
【0143】
この同期の定義は、一つのロボット1の工程フローにおいて複数行われる。そして、本実施の形態に係る複数のロボット1は、それらロボット1全てが同期ブロック情報120Dの作業を行うまで次の作業を行わず、それらロボット1全てが同期ブロック情報120Dの作業を行った時点で次の作業を行うようになっている。
【0144】
図15は、本実施の形態に係る工程フローデータ記憶部62の様子を示す図である。複数台対応工程フロー編集部52は、同期に関する情報を同期接続情報126として生成する。そして、複数台対応工程フロー編集部52は、同図15に示すように、生成した同期接続情報126を工程フローデータ記憶部62に記憶する。
【0145】
図14に戻って、複数台対応ロボットシミュレータ部54は、ロボットシミュレータ部44において、複数のロボット1の可動範囲を取得可能にしたものである。本実施の形態では、複数台対応ロボットシミュレータ部54は、ロボットプログラムを解釈して複数のロボット1の動作を計算することにより、複数のロボット1を同時に模擬的に動かすことができる。なお、複数台対応ロボットシミュレータ部54は、時間を合わせて複数のロボット1を模擬的に動かすものとする。また、ハンド11、部品12、供給装置13、治具14及びワーク15など、ロボット1の作業に関する物は、二以上のロボット1において共通しているものとする。これにより、例えば、ロボット「A」が部品12を供給装置13から治具14に移送し、ロボット「B」が当該部品12を当該治具14から取り出しでワーク15に組み付けるといった組み立て作業が可能となる。
【0146】
複数台対応干渉チェック部57は、同期ブロック情報120Dから次の同期ブロック情報120Dまでの間に存在する複数の作業ブロック情報120(以下、「同期ブロック情報群」と呼ぶ)を取得する。つまり、複数台対応干渉チェック部57は、前後する二つの同期ブロック情報120Dの間に存在する複数の作業ブロック情報120を、同期ブロック情報群として取得する。
【0147】
そして、複数台対応干渉チェック部57は、複数台対応ロボットシミュレータ部54を用いて、同期ブロック情報群の作業が模擬的に行われる際の複数のロボット1の可動範囲を、ロボット1ごとに取得する。そして、複数台対応干渉チェック部57は、複数台対応ロボットシミュレータ部54で取得した複数のロボット1の可動範囲が互いに重複するか否かを判定する。つまり、複数台対応干渉チェック部57は、同期ブロック情報群の作業が模擬的に行われる場合に、複数のロボット1が互いに干渉するか否かを判定する。以下、この判定を「干渉チェック」と呼ぶこともある。
【0148】
なお、本実施の形態においては、複数のロボット1の可動範囲の一部分が互いに重複していることを示すマークが用いられる。そして、各作業ブロック情報120には、そのマークの有無が設定される領域が設けられている。複数台対応干渉チェック部57は、干渉チェックの結果に応じて各作業ブロック情報120のマークの有無を変更する。
【0149】
図16は、本実施の形態に係る複数台対応干渉チェック部57が、複数のロボット1のうちの第1ロボット1と第2ロボット2との間において干渉チェックを行うときの動作を示すフローチャートである。以下、図16を用いて複数台対応干渉チェック部57における当該動作について説明する。なお、このステップs41の前には、複数台対応工程フロー編集部52により、複数の同期ブロック情報120Dがすでに定義されているものとする。
【0150】
まず、ステップs41にて、複数台対応干渉チェック部57は、工程フローにおける全ての作業ブロック情報120のマークをクリアする。ステップs42にて、複数台対応干渉チェック部57は、干渉チェックの対象となる第1ロボット1の工程フローから同期ブロック情報群を取得する。複数台対応干渉チェック部57は、ステップs41を最初に行う際には、干渉チェックすべき工程フローの先頭の同期ブロック情報群を取得し、ステップs41を行うごとに、次の同期ブロック情報群を取得する。
【0151】
ステップs43にて、複数台対応干渉チェック部57は、干渉チェックの対象となる第2ロボット1の工程フローから、ステップs42と同様にして同期ブロック情報群を取得する。
【0152】
ステップs44にて、複数台対応干渉チェック部57は、複数台対応ロボットシミュレータ部54を用いて、ステップs42で取得した同期ブロック情報群の作業が行われる際の第1ロボット1の可動範囲と、ステップs43で取得した同期ブロック情報群の作業が行われる際の第2ロボット1の可動範囲とが、互いに重複しているかを判定する。本実施の形態では、この判定が、ステップs42で取得された同期ブロック情報群に含まれる複数の作業ブロック情報120と、ステップs43で取得された同期ブロック情報群に含まれる複数の作業ブロック情報120との全ての組合せにおいて行われる。ステップs44において、重複していると判定した場合にはステップs45に進み、重複していないと判定した場合にはステップs46に進む。
【0153】
ステップs45にて、複数台対応干渉チェック部57は、ステップs42で取得した同期ブロック情報群の各作業ブロック情報120にマークを設定する。同様に、複数台対応干渉チェック部57は、ステップs43で取得した同期ブロック情報群の各作業ブロック情報120にマークを設定する。
【0154】
ステップs46にて、複数台対応干渉チェック部57は、干渉チェックすべき次の同期ブロック情報群があるかを判定する。ステップs46において、次の同期ブロック情報群があると判定した場合にはステップs42に戻り、次の同期ブロック情報群がないと判定した場合にはステップs47に進む。
【0155】
ステップs47にて、複数台対応干渉チェック部57は、マークが設定された作業ブロック情報120を表示するとともに、干渉している旨の警告を表示する。この警告表示は、ダイアログボックスを出して表示してもよいし、特定のウィンドウに表示してもよい。また、その際にログファイルに書き込むようにしてもよい。
【0156】
以上のようなプログラム作成・教示装置3によれば、複数台対応干渉チェック部57が、複数のロボット1の可動範囲が互いに重なるかを判定する。したがって、複数のロボット1を実際に動作させて確認する作業を省くことができるため、時間を短縮することができるとともに、ロボット1同士が衝突して故障するのを事前に防ぐことができる。また、本実施の形態に係るプログラム作成・教示装置3は、実施の形態3に係るプログラム作成・教示装置3と同様の構成を備えるため、それと同じ効果を得ることができる。
【符号の説明】
【0157】
1 ロボット、3 プログラム作成・教示装置、11 ハンド、12 部品、13 供給装置、14 治具、15 ワーク、41 作業ブロック定義部、42 工程フロー編集部、43 制御プログラム生成部、44 ロボットシミュレータ部、45 作業ブロック絞込部、46 パーツ絞込部、57 複数台対応干渉チェック部、110 作業ブロックテンプレート、113 事前条件、114 事後条件、120 作業ブロック情報、122 内部状態情報、182 パーツ。

【特許請求の範囲】
【請求項1】
組み立てセルにおいて使用されるロボットを制御するための制御プログラムを作成するプログラム作成装置であって、
未設定の内部状態情報と事後条件とを含む作業ブロックを、前記ロボットの作業単位ごとに定義する作業ブロック定義部と、
複数の前記作業ブロックを所望の順序で並べて得られる工程フローにおいて、処理対象の作業ブロックよりも後続の複数の作業ブロックの前記内部状態情報を、当該処理対象の作業ブロックの前記事後条件を用いて設定する工程フロー編集部と、
前記工程フロー編集部により前記内部状態情報が設定された前記複数の作業ブロックに基づいて前記制御プログラムを生成する制御プログラム生成部と
を備える、プログラム作成装置。
【請求項2】
請求項1に記載のプログラム作成装置であって、
前記作業ブロック定義部は、
前記未設定の内部状態情報と、前記事後条件と、事前条件とを含む作業ブロックを、前記ロボットの作業単位ごとに定義し、
前記工程フロー編集部は、
前記処理対象の作業ブロックよりも後続の複数の作業ブロックを一つずつ順次に設定対象の作業ブロックとして取得し、
当該設定対象の作業ブロックの前記事前条件が、当該処理対象の作業ブロックの前記事後条件の終了条件でない場合には、当該事後条件を用いて当該設定対象の作業ブロックの前記内部状態情報を設定し、
当該設定対象の作業ブロックの前記事前条件が、当該処理対象の作業ブロックの前記事後条件の終了条件である場合には、当該事後条件を用いて当該設定対象の作業ブロックの前記内部状態情報を設定するのを停止する、プログラム作成装置。
【請求項3】
請求項1または請求項2に記載のプログラム作成装置であって、
前記工程フローの終端に配置されている前記作業ブロックの前記内部状態情報に基づいて、当該作業ブロックの後に配置可能な前記作業ブロックを絞り込む作業ブロック絞込部をさらに備える、プログラム作成装置。
【請求項4】
請求項1乃至請求項3のいずれかに記載のプログラム作成装置であって、
前記ロボットを模擬的に動かして、前記ロボットの可動範囲を取得するロボットシミュレータ部と、
ハンド、部品、ワーク、供給台を含む供給装置及び治具のそれぞれをパーツとして、各前記パーツの模擬的な位置が前記ロボットの可動範囲内にあるか否かの判定結果と、前記ロボット、前記ハンド、前記部品、前記供給装置、前記治具及び前記ワークのそれぞれの種類とに基づいて、選択可能な前記パーツを絞り込むパーツ絞込部と
をさらに備える、プログラム作成装置。
【請求項5】
請求項1乃至請求項4のいずれかに記載のプログラム作成装置であって、
前記ロボットは複数設けられ、
複数の前記ロボットのうち、第1ロボットの可動範囲と、当該第1ロボットと可動範囲の一部分が重なる第2ロボットの可動範囲とを取得するロボットシミュレータ部を備え、
前記工程フロー編集機能は、
前記第1及び第2ロボットについて、同期すべき前記作業ブロックを定義し、
前後する二つの前記同期すべき作業ブロックの間において、前記ロボットシミュレータ部で取得された前記第1ロボットの可動範囲と前記第2ロボットの可動範囲とが互いに重なるかを判定する複数台対応干渉チェック部をさらに備える、プログラム作成装置。
【請求項6】
組み立てセルにおいて使用されるロボットを制御するための制御プログラムを作成するプログラム作成方法であって、
(a)未設定の内部状態情報と事後条件とを含む作業ブロックを、前記ロボットの作業単位ごとに定義する工程と、
(b)複数の前記作業ブロックを所望の順序で並べて得られる工程フローにおいて、処理対象の作業ブロックよりも後続の複数の作業ブロックの前記内部状態情報を、当該処理対象の作業ブロックの前記事後条件を用いて設定する工程と、
(c)前記工程(b)により前記内部状態情報が設定された前記複数の作業ブロックに基づいて前記制御プログラムを生成する工程と
を備える、プログラム作成方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2011−238041(P2011−238041A)
【公開日】平成23年11月24日(2011.11.24)
【国際特許分類】
【出願番号】特願2010−109174(P2010−109174)
【出願日】平成22年5月11日(2010.5.11)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】