1 実施の形態1
1.1 ロボット
図1は、実施の形態1の原点復帰装置により制御されるロボットを模式的に図示する斜視図である。
図1に図示されるロボット100は、産業用ロボットである。ロボット100が、産業用ロボット以外の生産設備に備えられる複数の駆動部を持つ装置であってもよい。
ロボット100は、図1に図示されるように、ロボット本体111、ロボットハンド112、ロボットコントローラ113及びケーブル114を備える。
ロボット本体111は、複数のモータ及び複数のリンクを備える。また、ロボット本体111は、手首121を備える。手首121は、ロボット本体111の先端部に配置される。手首121には、ロボットハンド112が取り付けられる。ロボット本体111は、のツールセンターポイント122を有する。ツールセンターポイント122は、ロボットハンド112の手先が配置されて作業が行われる位置である。
ケーブル114は、ロボットコントローラ113をロボット本体111に電気的に接続する。これにより、ロボットコントローラ113は、ロボット本体111を制御することができる。
ロボット100の位置姿勢は、ロボット本体111に備えられる複数のモータの回転軸の角度、ツールセンターポイント122の3次元的な位置姿勢等により表現される。
ロボット100は、生産設備に備えられる装置に備えらえる。生産設備に備えられる装置は、ロボット100に加えて、ロボット100以外の駆動部、センサ及びこれらを制御するコントローラを備える。
1.2 ロボットプログラム
図2は、実施の形態1の原点復帰装置により参照されるロボットプログラムの例を示す図である。
図2に示されるロボットプログラムPは、教示位置の集合P1及びロボットプログラム本体P2を含む。
教示位置の集合P1は、ロボットプログラムPの下部に記述されている。ロボットプログラム本体P2は、ロボットプログラムPの上部に記述されている。
教示位置の集合P1は、教示位置Phome,P1,P2,P3(1)及びP3(2)を含む。教示位置Phome,P1,P2,P3(1)及びP3(2)は、値(300,0,450,180,0,0),(500,200,20,180,0,30),(500,-150,15,180,0,15),(400,-350,15,180,0,0)及び(400,-320,15,180,0,0)をそれぞれ有する。
教示位置Phome,P1,P2,P3(1)及びP3(2)に含まれる各教示位置は、ロボット100の位置姿勢を指定する。各教示位置は、様々な表現方法により表現される。例えば、各教示位置は、C言語等のプログラミング言語において用いることができる構造体により表現される。ロボット100の位置姿勢が複数のモータの回転軸の角度により表現される場合は、各教示位置は、複数のモータの回転軸の角度を纏めた構造体により表現される。ロボット100の位置姿勢がツールセンターポイント122の3次元的な位置姿勢により表現される場合は、各教示位置は、ツールセンターポイント122の位置及び姿勢、並びにロボット本体111の姿勢を一意に決定することができる付加情報を纏めた構造体により表現される。付加情報は、肘の位置、360°以上回転することができる回転軸の多回転情報等を含む。図2に示されるロボットプログラムPにおいては、各教示位置が、ツールセンターポイント122の位置及び姿勢、並びに付加情報を纏めた構造体により表現されている。ただし、図2に示されるロボットプログラムPにおいては、各教示位置を構成するツールセンターポイント122の位置及び姿勢が記述されているが、各教示位置を構成する付加情報が便宜上記述されていない。
教示位置P3(1)及びP3(2)は、配列P3を構成するふたつの要素である。教示位置P3(1)及びP3(2)は、括弧内に記述された数値「1」及び「2」からなるインデックスによりそれぞれ識別される。
教示位置Phome,P1,P2,P3(1)及びP3(2)は、望ましくは、ロボットプログラム本体P2にハードコーディングされず、ロボットプログラム本体P2から分離された状態で管理される。これにより、ロボット本体111の機械的な誤差を吸収するために現物調整により教示位置Phome,P1,P2,P3(1)及びP3(2)を設定する際にロボットプログラム本体P2を修正する作業が発生することを抑制することができる。
ロボットプログラム本体P2は、移動命令「Mov Phome」、「Mov P1,-50」、「Mvs P1」、「Mvs P1,-50」、「Mov P2,-50」、「Mvs P2」及び「Mvs P2,-50」、補助命令「HandOpen 1」、「HandClose 1」及び「GoTo *PICK」、ラベル「* INITIAL」、「*PICK」及び「*PUT」、並びにコメント「//」を含む。
移動命令「Mov Phome」、「Mov P1,-50」、「Mvs P1」、「Mvs P1,-50」、「Mov P2,-50」、「Mvs P2」及び「Mvs P2,-50」は、ロボットプログラム本体P2の第2行目、第6行目、第7行目、第9行目、第12行目、第13行目及び第15行目にそれぞれ記述されている。補助命令「HandOpen 1」は、ロボットプログラム本体P2の第3行目及び第14行目に記述されている。補助命令「HandClose 1」は、ロボットプログラム本体P2の第8行目に記述されている。補助命令「GoTo *PICK」は、ロボットプログラム本体P2の第16行目に記述されている。ラベル「* INITIAL」、「*PICK」及び「*PUT」は、ロボットプログラム本体P2の第1行目、第5行目及び第11行目にそれぞれ記述されている。コメント「//」は、ロボットプログラム本体P2の第4行目及び第10行目に記述されている。
移動命令「Mov Phome」、「Mov P1,-50」、「Mvs P1」、「Mvs P1,-50」、「Mov P2,-50」、「Mvs P2」及び「Mvs P2,-50」の各移動命令は、ロボット100を移動させる命令である。
移動命令「Mov Phome」、「Mov P1,-50」、「Mvs P1」、「Mvs P1,-50」、「Mov P2,-50」、「Mvs P2」及び「Mvs P2,-50」は、移動命令種別「Mov」、「Mov」、「Mvs」、「Mvs」、「Mov」、「Mvs」及び「Mvs」をぞれぞれ含み、目標位置「Phome」、「P1,-50」、「P1」、「P1,-50」、「P2,-50」、「P2」及び「P2,-50」をそれぞれ含む。
移動命令種別「Mov」及び「Mvs」の各移動命令種別は、ロボット100を移動させる際の移動方法を指定する。移動命令種別「Mov」は、ロボット本体111に備えられる各モータを台形速度パターンで回転させる移動方法を指定する。移動命令種別「Mov」によれば、ロボット100を最短時間で移動させることができる。移動命令種別「Mvs」は、ツールセンターポイント122を直線に沿って移動させる移動方法を指定する。
目標位置「Phome」、「P1,-50」、「P1」、「P2,-50」及び「P2」の各目標位置は、ロボット100を移動させた後のロボット100の位置姿勢を指定する。
目標位置「Phome」、「P1,-50」、「P1」、「P2,-50」及び「P2」は、教示位置Phome,P1,P1,P2及びP2をそれぞれ含む。目標位置「P1,-50」及び「P2,-50」は、目標位置変更情報「,-50」及び「,-50」をそれぞれ含む。
目標位置「Phome」、「P1」及び「P2」は、それぞれ、教示位置Phome,P1及びP2と同じ位置である。
目標位置「P1,-50」及び「P2,-50」に含まれる目標位置変更情報「,-50」は、教示位置P1及びP2の後にそれぞれ記述される。
目標位置変更情報は、目標位置を、目標位置変更情報の前に記述された教示位置から目標位置変更情報により特定される距離だけ目標位置変更情報により特定される方向に変更することを示す。例えば、教示位置P1の後に記述される目標位置変更情報「,-50」は、目標位置を、教示位置P1から50mmだけ手前に変更することを示す。
補助命令「HandOpen 1」及び「HandClose 1」の各補助命令は、ロボットハンド112を開閉させる命令である。
補助命令「HandOpen 1」及び「HandClose 1」は、補助命令種別「HandOpen」及び「HandClose」をそれぞれ含み、ロボットハンド番号「1」及び「1」をそれぞれ含む。
補助命令種別「HandOpen」及び「HandClose」の各補助命令種別は、ロボットハンド112を開閉させる際の開閉の別を指定する。補助命令種別「HandOpen」は、ロボットハンド112を開かせることを指定する。補助命令種別「HandClose」は、ロボットハンド112を閉じさせることを指定する。
ロボットハンド番号は、開閉させられるロボットハンド112を指定する。ロボットハンド番号「1」は、ロボットハンド番号「1」を有するロボットハンド112を指定する。
補助命令「GoTo *PICK」は、補助命令種別「GoTo」及び飛び先「*PICK」を含む。ラベル「* INITIAL」、「*PICK」及び「*PUT」の各ラベルは、文字「*」から始まる文字列である。
補助命令「GoTo *PICK」は、ロボットプログラムPの実行点を、飛び先「*PICK」に一致するラベル「*PICK」が記述された第5行目へ移動させる命令である。
コメント「//」は、ロボットプログラムPの可読性を向上するために挿入される改行である。
図2に示されるロボットプログラムPが、より複雑なロボットプログラムに変更されてもよい。より複雑なロボットプログラムは、ロボットコントローラ113に搭載された、前記以外の移動命令種別、制御文、サブルーチンコール、様々な補助命令等を含みうる。制御文は、If文、For文等を含む。様々な補助命令は、他の機器と通信させる命令等を含む。
1.3 原点復帰装置への要求
従来においては、ロボット100は、多くの場合は、生産ライン、物流ライン等に組み込まれ、ひとつの作業を繰り返し行っていた。
しかし、最近においては、ロボット100及びそれに付随するセンサの性能が向上している。このため、ロボット100が、様々な作業を行うようになってきている。例えば、ロボット100が、作業の対象及び内容を変更しながら複数の作業を行うようになってきている。また、ロボット100が、複数の工程に渡る複数の作業を連続して行うようになってきている。
ロボット100が複数の作業を行う場合は、ロボット100を原点に復帰させる際に実行される原点復帰プログラムが、複数の作業について共通化され、ロボット100に複数の作業を行わせる際に実行される作業プログラムから独立させられる。しかし、ロボット100が複数の作業を行う場合は、ロボット100に教示される教示位置の数がロボット100により行われる作業の数に応じて増える。このため、ロボット100が複数の作業を行う場合は、すべての教示位置について原点復帰プログラムを作成するために必要な作業が多くなる。したがって、原点復帰プログラムを作成することが困難になる。
また、生産現場においては、生産設備の電源を再投入することにより生産設備を復旧することがしばしば行われる。このため、揮発メモリ等に保存されたプログラムの全実行履歴に基づいてIf等が含まれる作業プログラムを逆実行することは、困難である。このため、不揮発性メモリに保存された情報、及びロボット100の位置姿勢を含む生産設備の状態を示す情報に基づいてロボット100を原点に復帰させることが望まれる。
生産設備の状態を示す情報に基づいてロボット100を原点に復帰させる方法としては、ロボット100の位置姿勢が属しうる空間を複数のエリアに分割し、複数のエリアに含まれる各エリアにロボット100の位置姿勢が属する場合にロボット100を原点に復帰させるために必要な移動命令を定義する方法が考えられる。当該方法が採用される場合は、ロボット100の位置姿勢としてツールセンターポイント122の位置姿勢が利用される。しかし、当該方法が採用された場合は、ロボット本体111を原点に適切に復帰させることができるか否かを検証するテストを十分に行うことができないことが多い。なぜなれば、各エリアは3次元空間であるからである。また、当該方法が採用された場合は、ロボット100の位置姿勢が属しうる空間が複数のエリアに適切に分割されていない状態でロボット本体111が原点に復帰させられた結果として、ロボット本体111が環境に衝突して生産設備が破損することがある。
ロボット100を原点に復帰させる方法として、3次元(3D)シミュレーションを活用して生成された経路に沿ってロボット100を移動させる方法も知られている。しかし、当該方法が採用された場合は、ロボット100を原点に復帰させる際に多くの計算リソースを利用しなければならない。一方で、ロボット100を原点に復帰させるために費やすことができる時間は、原点復帰プログラムが作成された際に想定されていなかった例外的な状況下においては、数分であるが、原点復帰プログラムが作成された際に想定されていた典型的な状況下においては、数秒である。例えば、製造過程において供給される部品の不具合により生産設備が停止した際にロボット100を原点に復帰させるために費やすことができる時間は、数秒である。このため、典型的な状況下においては、当該方法によりロボット100を原点に復帰させた場合は、ロボット100を原点に復帰させるために費やされる時間が長くなりすぎる。このため、原点復帰プログラムを事前に設定しておき、ロボット100を原点に復帰させる必要が生じた場合にロボット100を原点に復帰させる処理を直ぐに開始することができることが望まれる。
以下では、上述した要求に答えることができる原点復帰装置が開示される。
1.4 原点復帰装置
図3は、実施の形態1の原点復帰装置を模式的に図示するブロック図である。
図3に図示される実施の形態1の原点復帰装置1は、復帰軌跡ツリー生成部11及び原点復帰命令部12を備える。
復帰軌跡ツリー生成部11は、ロボットプログラムPから復帰軌跡ツリーTを生成する。
生成される復帰軌跡ツリーTは、複数の移動位置の各移動位置に配置されているロボット100を原点に復帰させるためにロボット100を移動させなければならない次の移動位置を指定する。指定される次の目標位置は、当該複数の移動位置に含まれる、各移動位置以外のひとつの移動位置である。また、復帰軌跡ツリーTは、ロボット100を各移動位置から次の移動位置へ移動させる際の移動条件を指定する。指定される移動条件は、ひとつの移動条件である。これらの要求を満たす限り、復帰軌跡ツリーTのデータ構造は任意である。
原点復帰命令部12は、生成された復帰軌跡ツリーTにしたがってロボット100を原点に復帰させることをロボット100に命令する。
1.5 原点復帰ツリー
図4は、実施の形態1の原点復帰装置により生成される復帰軌跡ツリーの例を示す図である。
図4に示される復帰軌跡ツリーTは、ツリー構造を有する。
復帰軌跡ツリーTは、複数のノードN0,N1,N2,N3,N4,N5,N6及びN7を含む。
複数のノードN0,N1,N2,N3,N4,N5,N6及びN7には、複数の移動位置「Phome」、「P1,-50」、「P1」、「P3(1),-50」、「P3(1)」、「P2」、「P3(2),-50」及び「P3(2)」がそれぞれ割り当てられている。
複数のノードN0,N1,N2,N3,N4,N5,N6及びN7は、根ノードN0を含む。複数の移動位置「Phome」、「P1,-50」、「P1」、「P3(1),-50」、「P3(1)」、「P2」、「P3(2),-50」及び「P3(2)」は、原点「Phome」を含む。根ノードN0には、原点「Phome」が割り当てられている。
復帰軌跡ツリーTは、複数の枝B1,B2,B3,B4,B5,B6及びB7を含む。
枝B1は、子ノードN1及び子ノードN1の親ノードN0を互いに接続する。枝B1には、子ノードN1に割り当てられた移動位置「P1,-50」から親ノードN0に割り当てられた移動位置「Phome」へロボット100を移動させる際の移動条件「Mov」が設定されている。枝B2は、子ノードN2及び子ノードN2の親ノードN1を互いに接続する。枝B2には、子ノードN2に割り当てられた移動位置「P1」から親ノードN1に割り当てられた移動位置「P1,-50」へロボット100を移動させる際の移動条件「Mvs」が設定されている。枝B3は、子ノードN5及び子ノードN5の親ノードN0を互いに接続する。枝B3には、子ノードN5に割り当てられた移動位置「P2」から親ノードN0に割り当てられた移動位置「Phome」へロボット100を移動させる際の移動条件「Mov」が設定されている。枝B4は、子ノードN3及び子ノードN3の親ノードN5を互いに接続する。枝B4には、子ノードN3に割り当てられた移動位置「P3(1),-50」から親ノードN5に割り当てられた移動位置「P2」へロボット100を移動させる際の移動条件「Mov/H2 close」が設定されている。枝B5は、子ノードN4及び子ノードN4の親ノードN3を互いに接続する。枝B4には、子ノードN4に割り当てられた移動位置「P3(1)」から親ノードN3に割り当てられた移動位置「P3(1),-50」へロボット100を移動させる際の移動条件「Mvs/H2 close」が設定されている。枝B6は、子ノードN6及び子ノードN6の親ノードN5を互いに接続する。枝B6には、子ノードN6に割り当てられた移動位置「P3(2),-50」から親ノードN5に割り当てられた移動位置「P2」へロボット100を移動させる際の移動条件「Mov/Y1000 Off/X1000 On」が設定されている。枝B7は、子ノードN7及び子ノードN7の親ノードN6を互いに接続する。枝B7には、子ノードN7に割り当てられた移動位置「P3(2)」から親ノードN6に割り当てられた移動位置「P3(2),-50」へロボット100を移動させる際の移動条件「Mvs/Y1000 Off/X1000 On」が設定されている。
子ノードN1及び親ノードN0の対においては、子ノードN1は、根ノードN0から相対的に遠く、親ノードN0は、根ノードN0に相対的に近い。子ノードN2及び親ノードN1の対、子ノードN5及び親ノードN0の対、子ノードN3及び親ノードN5の対、子ノードN4及び親ノードN3の対、子ノードN6及び親ノードN5の対、並びに子ノードN7及び親ノードN6の対においても、同様である。
根ノードN0以外の子ノードに接続される親ノードの数は、ひとつである。しかし、親ノードに接続される子ノードの数は、ひとつであるとは限らず、ふたつ以上であることもある。
移動条件「Mov」、「Mvs」、「Mov/H2 close」、「Mvs/H2 close」、「Mov/Y1000 Off/X1000 On」及び「Mvs/Y1000 Off/X1000 On」は、移動命令種別「Mov」、「Mvs」、「Mov」、「Mvs」、「Mov」及び「Mvs」をそれぞれ含む。移動条件「Mov/H2 close」、「Mvs/H2 close」、「Mov/Y1000 Off/X1000 On」及び「Mvs/Y1000 Off/X1000 On」は、信号条件「H2 close」、「H2 close」、「Y1000 Off/X1000 On」及び「Y1000 Off/X1000 On」をそれぞれ含む。
移動命令種別「Mov」及び「Mvs」の各移動命令種別は、ロボットコントローラ113が実行することができる移動命令を構成する。各移動命令種別は、ロボットプログラムPに記述することができる。移動命令が目標位置以外の引数を必要とする場合は、移動命令種別が当該引数を含んでもよい。
信号条件「H2 close」、「H2 close」、「Y1000 Off/X1000 On」及び「Y1000 Off/X1000 On」は、移動命令種別「Mov」、「Mvs」、「Mov」及び「Mov」の後に記述されたスラッシュ「/」の後にそれぞれ記述される。移動条件が信号条件を含まない場合は、移動命令種別の後にスラッシュ「/」及び信号条件は記述されない。
移動命令種別「Mov」及び「Mvs」の各移動命令種別は、ロボット100を移動させる際の移動方法を指定する。
信号条件「H2 close」及び「Y1000 Off/X1000 On」の各信号条件は、ロボット100を移動させることが開始される際に満たされていなければならない信号条件を示す。条件は、出力される信号又は確認される信号に関する信号条件である。出力される信号又は確認される信号は、ロボットコントローラ113により管理される信号であるが、ロボットコントローラ113以外のコントローラにより管理される信号であってもよい。ロボットコントローラ113以外のコントローラは、例えば、ロボット100を備える生産設備に備えられる装置において、当該装置に備えられる機器を制御するコントローラである。
信号条件「H2 close」は、ロボットハンド番号「2」を有するロボットハンド112が閉じられていることが確認されているという信号条件を示す。信号条件「Y1000 Off/X1000 On」は、ロボットコントローラ113により出力される信号番号「Y1000」を有する信号をオフにする指令がロボットコントローラ113に対して出力されて、ロボットコントローラ113に入力される信号番号「X1000」を有する信号がオンになったことが確認されているという信号条件を示す。
復帰軌跡ツリーTが、図4に示される復帰軌跡ツリーTのツリー構造と異なるツリー構造を有してもよい。
1.6 原点復帰ツリー生成部
復帰軌跡ツリー生成部11は、図3に図示されるように、移動位置抽出部13、原点設定部14及び復帰軌跡ツリー設定部15を備える。
移動位置抽出部13は、ロボットプログラムPから複数の移動位置を抽出する。例えば、ロボットプログラムPが図2に示されるロボットプログラムPである場合は、移動位置抽出部13は、ロボットプログラムPから5個の移動位置「Phome」、「P1」、「P1,-50」、「P2」及び「P2,-50」を抽出する。
抽出される移動位置は、ロボットプログラムPに記述されている移動位置である。抽出される移動位置は、ロボットプログラム本体P2に含まれる目標位置を含む。当該目標位置は、教示位置と同じ位置である目標位置、及びロボットプログラム本体P2が実行されることにより演算される、教示位置から変更された目標位置を含む。
移動位置抽出部13が、ロボットプログラムPに含まれるすべての教示位置を抽出してもよい。この場合は、抽出される移動位置は、ロボットプログラム本体P2に記述されていない教示位置を含みうる。
抽出された複数の移動位置は、復帰軌跡ツリーTに含まれる複数のノードにそれぞれ割り当てられる複数の移動位置の候補となる。
原点設定部14は、抽出された複数の移動位置のいずれかを原点に設定する。原点設定部14は、その際に、予め設定された教示位置の名前と同じ名前を有する教示位置を自動的に原点に設定する。原点設定部14が、原点の候補となる移動位置を作業者に提示し、原点の候補となる移動位置から原点を作業者に選択させてもよい。作業者への提示及び作業者による選択は、コンピュータにより提供される一般的なインターフェースにより行うことができる。
復帰軌跡ツリー設定部15は、復帰軌跡ツリーTを設定する。復帰軌跡ツリー設定部15は、その際に、設定された原点が割り当てられた根ノードを含む復帰軌跡ツリーTを生成する第1の処理を行う。また、復帰軌跡ツリー設定部15は、第1の処理を行った後に、親ノードに接続される子ノード、並びに子ノード及び親ノードを互いに接続する枝を、生成された復帰軌跡ツリーTに追加し、追加する子ノードに移動位置を割り当て、追加する枝に移動条件を設定する第2の処理を要求された回数行う。
1.7 復帰軌跡ツリーが設定される際に用いられる設定画面
図5は、実施の形態1の原点復帰装置により復帰軌跡ツリーが設定される際に用いられる設定画面の例を模式的に図示する図である。
図5に図示される設定画面Sは、グラフィカルユーザインターフェース(GUI)を提供する。
設定画面Sは、復帰軌跡ツリーTに、図4に図示されるノードN7及び枝B7を追加し、ノードN7に移動位置「P3(2)」を割り当て、枝B7に信号条件「Mvs/Y1000 Off/X1000 On」を設定する第2の処理が行われる際の設定画面を示す。当該第2の処理が行われる際には、復帰軌跡ツリーTは、図4に図示されるノードN0,N1,N2,N3,N4,N5及びN6並びに枝B1,B2,B3,B4,B5及びB6を含んでいる。また、ノードN0,N1,N2,N3,N4,N5及びN6には、移動位置「Phome」、「P1,-50」、「P1」、「P3(1),-50」、「P3(1)」、「P2」及び「P3(2),-50」がそれぞれ割り当てられている。また、枝B1,B2,B3,B4,B5及びB6には、信号条件「Mov」、「Mvs」、「Mov」、「Mov/H2 close」、「Mvs/H2 close」及び「Mov/Y1000 Off/X1000 On」がそれぞれ設定されている。
復帰軌跡ツリー設定部15は、設定画面Sを参照して作業者が行った操作にしたがって第2の処理を行う。
設定画面Sは、ツリーキャンパスウインドウW1、命令選択ウインドウW2、信号条件ウインドウW3、移動位置一覧ウインドウW4及び追加ボタンBを含む。
ツリーキャンパスウインドウW1は、復帰軌跡ツリーTを表示する。また、ツリーキャンパスウインドウW1は、追加される子ノードN7が接続される親ノードN6を選択するために用いられる。選択された親ノードN6は、強調表示される。
命令選択ウインドウW2は、追加される枝B7に設定される移動条件「Mvs/Y1000 Off/X1000 On」に含まれる移動命令種別「Mvs」を設定するために用いられる。命令選択ウインドウW2は、その際に、複数の移動命令種別の候補C2を表示する。復帰軌跡ツリー設定部15は、表示された複数の移動命令種別の候補C2を参照して作業者が行った選択操作にしたがって、複数の移動命令種別の候補C2から選択された移動命令種別「Mvs」を設定する。選択された移動命令種別「Mvs」は、強調表示される。複数の移動命令種別の候補C2に目標位置以外の設定項目を必要とする移動命令種別の候補が含まれる場合は、設定画面Sが、当該設定項目を追加するために用いられる表示要素を含んでもよい。復帰軌跡ツリー設定部15が、作業者が行った直接入力操作にしたがって、直接入力された移動命令種別「Mvs」を設定してもよい。
信号条件ウインドウW3は、枝B7に設定される移動条件「Mvs/Y1000 Off/X1000 On」に含まれる信号条件「Y1000 Off/X1000 On」を設定するために用いられる。信号条件ウインドウW3は、その際に、複数の信号条件の候補C3を表示する。復帰軌跡ツリー設定部15は、表示された複数の信号条件の候補C3を参照して作業者が行った選択操作にしたがって、複数の信号条件の候補C3から選択された信号条件「Y1000 Off/X1000 On」を設定する。選択された信号条件「Y1000 Off/X1000 On」は、強調表示される。信号条件ウインドウW3は、出力される信号又は確認される信号に関する信号条件を設定するために用いられる。復帰軌跡ツリー設定部15が、作業者が行った直接入力操作にしたがって、直接入力された信号条件「Y1000 Off/X1000 On」を設定してもよい。
移動位置一覧ウインドウW4は、子ノードN7に割り当てられる移動位置「P3(2)」を設定するために用いられる。移動位置一覧ウインドウW4は、その際に、移動位置抽出部13により抽出された複数の移動位置の候補C4を表示する。復帰軌跡ツリー設定部15は、表示された複数の移動位置の候補C4を参照して作業者が行った選択操作にしたがって、複数の移動位置の候補C4から選択された移動位置「P3(2)」を設定する。選択された移動位置「P3(2)」は、強調表示される。移動位置一覧ウインドウW4は、複数のステータスD4、複数の行数E4、及び複数の命令F4を表示する。表示される複数のステータスD4は、それぞれ、複数の移動位置の候補C4のステータスである。表示される複数の行数E4は、それぞれ、ロボットプログラム本体P2において複数の移動位置の候補C4が記述された行数である。表示される複数の命令F4は、それぞれ、複数の移動位置の候補C4を目標位置として含む移動命令に含まれる移動命令種別である。移動位置の候補のステータスは、当該移動位置が原点である場合は、「原点」となる。移動位置の候補のステータスは、当該移動位置が既に割り当てられている場合は、「済」となる。また、当該移動位置の候補のステータスは、移動位置が未だ割り当てられていない場合は、「未」となる。復帰軌跡ツリー設定部15が、作業者が行った直接入力操作にしたがって、直接入力された移動位置「P3(2)」を設定してもよい。
作業者は、追加ボタンBに対して押下操作を行うことにより、ツリーキャンパスウインドウW1の内部の破線に囲まれる領域範囲に描かれる子ノードN7等を復帰軌跡ツリーTに追加することができる。
1.8 原点復帰命令部
原点復帰命令部12は、図3に図示されるように、原点復帰命令受信部16、対応ノード判定部17及び原点復帰移動部18を備える。
原点復帰命令受信部16は、原点復帰命令を受信する。原点復帰命令は、外部から送信される。原点復帰命令は、例えば、作業者による入力により、又はロボット100を備える装置を制御するコントローラとの通信により、原点復帰命令部12に送信される。
原点復帰命令受信部16は、原点復帰命令を受信するのに連動して、対応ノード判定要求を対応ノード判定部17に出力する。
対応ノード判定部17は、設定された復帰軌跡ツリーTに含まれる、ロボット100の現在位置に対応する移動位置が割り当てられた対応ノードを判定する。対応ノード判定部17は、送信された対応ノード判定要求を受信するのに連動して、対応ノードを判定する。対応ノード判定部17は、その際に、ロボットコントローラ113からロボット100の現在位置を取得する。また、対応ノード判定部17は、取得したロボット100の現在位置を、復帰軌跡ツリーTに含まれる各ノードに割り当てられた移動位置と比較する。また、対応ノード判定部17は、ロボット100の現在位置と移動位置との差が予め設定された値以下である場合に、当該移動位置が割り当てられたノードが対応ノードであると判定する。予め設定される値は、例えば、ロボット本体111に備えられるモータに駆動電力を供給することを停止してからロボット本体111が機械的なブレーキにより停止するまでにロボット本体111が移動する距離と必要なマージンとの和である。
原点復帰移動部18は、設定された復帰軌跡ツリーTに含まれる、対応ノード及び対応ノードの親ノードを互いに接続する枝に設定された移動条件に含まれる移動命令にしたがってロボット100を移動させてロボット100を原点に復帰させる。原点復帰移動部18は、その際に、枝に設定された移動条件に含まれる信号条件が満たされている場合は、当該移動条件にしたがってロボット100を移動させることを開始するが、枝に設定された移動条件に含まれる信号条件が満たされていない場合は、当該移動条件にしたがってロボット100を移動させることを開始しない。
図6は、実施の形態1の原点復帰装置により行われる原点復帰処理の流れを示すフローチャートである。
原点復帰移動部18は、原点復帰処理を行う際に、図6に図示されるステップS101からS107までを実行する。
ステップS101においては、原点復帰移動部18は、対応ノードの親ノードに割り当てられた移動位置を取得する。また、原点復帰移動部18は、対応ノード及び対応ノードの親ノードを互いに接続する枝に設定された移動条件を取得する。復帰軌跡ツリーTが図4に図示される復帰軌跡ツリーTであり、対応ノードが図4に図示されるノードN7である場合は、取得される移動位置は、移動位置「P3(2),-50」であり、取得される移動条件は、移動条件「Mvs/Y1000 Off/X1000 On」である。
続くステップS102においては、原点復帰移動部18は、対応ノードが根ノードN0であるか否かを判定する。対応ノードが根ノードN0であると判定された場合は、ロボット100が既に原点に復帰しているため、原点復帰処理が終了する。一方、対応ノードが根ノードN0でないと判定された場合は、ステップ103が実行される。復帰軌跡ツリーTが図4に示される復帰軌跡ツリーTであり、対応ノードが図4に示されるノードN7である場合は、ノードN7が根ノードN0でないため、ステップS103が実行される。
続くステップS103においては、原点復帰移動部18は、対応ノード及び対応ノードの親ノードを互いに接続する枝に設定された移動条件に信号条件が含まれるか否かを判定する。信号条件が含まれると判定された場合は、ステップS104及びS105が順次に実行された後にステップS106が実行される。信号条件が含まれないと判定された場合は、ステップS104及びS105が実行されることなくステップS106が実行される。復帰軌跡ツリーTが図4に示される復帰軌跡ツリーTであり、対応ノードが図4に示されるノードN7である場合は、枝B7に設定された移動条件「Mvs/Y1000 Off/X1000 On」に信号条件「Y1000 Off/X1000 On」が含まれるため、ステップS104及びS105が順次に実行された後にステップS106が実行される。
ステップS104においては、原点復帰装置1は、ロボットコントローラ113の内部の内部変数を変更する指令をロボットコントローラ113に出力する。変更される内部変数は、一般の内部変数であり、ロボットコントローラ113からロボットコントローラ113に接続された外部機器に出力される信号に記載される内部変数であってもよいし、そうでなくてもよい。変更される内部変数が信号に記載される内部変数である場合は、変更される内部変数は、信号条件においてスラッシュ「/」の前に記述された信号名を有する信号に記載される内部変数である。ステップS104においては、原点復帰装置1は、基本的には、当該指令を一度送るのみで、通信エラー等に備えてロボットコントローラ113が指令を受け付けたことを確認するが、内部変数が実際に変更されたことを確認しない。内部変数が実際に変更されたことが確認されないのは、変更された内部変数がロボットコントローラ113の内部の他の処理により上書きされる可能性があるため、内部変数が実際に変更されたことを確認することが困難であるためである。例えば、内部変数が一連の処理を一度だけ呼び出すためのフラグに対応する場合は、内部変数が変更された状態が維持される時間は一瞬であるため、内部変数が実際に変更されたことを確認することは困難である。実施の形態1においては、変更される内部変数は、ロボットコントローラ113からロボット100に出力される信号に記載される内部変数であるとする。このため、原点復帰移動部18は、ロボットコントローラ113により出力される信号を指定された状態にするために、当該信号に記載される内部変数を変更する指令をロボットコントローラ113に出力する。復帰軌跡ツリーTが図4に図示される復帰軌跡ツリーTであり、対応ノードが図4に図示されるノードN7である場合は、原点復帰移動部18は、信号番号「Y1000」を有する信号をオフにするために、当該信号に記載される内部変数を変更する指令をロボットコントローラ113に出力する。ステップS104において出力される指令が複数の指令であってもよい。
ステップS105においては、原点復帰装置1は、ロボット100を制御するロボットコントローラ113の内部の内部変数が指定された状態となっておりロボット100が指定された状態となっていることを確認するまで待機する。確認される内部変数は、一般の内部変数であり、ロボットコントローラ113に接続された外部機器からロボットコントローラ113に入力される信号に記載された内部変数であってもよいし、そうでなくてもよい。確認される内部変数がロボットコントローラ113に接続された外部機器からロボットコントローラ113に入力される信号に記載された内部変数である場合は、確認される内部変数は、信号条件においてスラッシュ「/」の後に記述された信号名を有する信号に記載された内部変数である。一般的には、ロボット100に動作指令を出力してからロボット100の動作が完了するまでの時間は、ロボットコントローラ113の演算周期より長い。また、ロボット100の動作が完了したことは、多くの場合は、インポジション信号、光学式センサ等の外部機器からロボットコントローラ113に入力される信号により確認される。実施の形態1においては、確認される内部変数は、ロボットコントローラ113に接続された外部機器からロボットコントローラ113に入力される信号に記載された内部変数であるとする。このため、原点復帰移動部18は、ロボットコントローラ113に入力される信号が指定された状態となっておりロボット100が指定された状態となっていることを確認するために、当該信号に記載された内部変数が指定された状態となっていることを確認する。復帰軌跡ツリーTが図4に図示される復帰軌跡ツリーTであり、対応ノードが図4に図示されるノードN7である場合は、原点復帰移動部18は、信号番号「X1000」を有する信号がオンになっていることを確認するために、当該信号に記載された内部変数が指定された状態となっていることを確認する。ステップS105において確認される信号が複数の信号の組み合わせであってもよい。
ロボット100が利用される場合は、ロボットハンド112を開閉する指令を出力する処理とロボットハンド112が開閉したことを確認する処理とが一連の処理となることが多い。このため、信号条件においては、ロボットハンド112を開閉する指令を出力するために変更される内部変数が記述される信号名と、ロボットハンド112が開閉したことを確認するために確認される内部変数が記述された信号名と、が、まとめて記述される。信号条件「H2 close」は、その一例であり、信号条件「H2 close/H2 close」に含まれる重複した記述を省略したものとなっている。ただし、信号条件「H2 close/H2 close」においてスラッシュ「/」の前に記述された「H2 close」は、ロボットハンド112を閉じる指令を出力するために変更される内部変数が記述される信号名である。また、信号条件「H2 close/H2 close」においてスラッシュ「/」の後に記述された「H2 close」は、ロボットハンド112が閉じたことを確認するために確認される内部変数が記述された信号名である。したがって、信号条件「H2 close/H2 close」においてスラッシュ「/」の前後に記述されたふたつの「H2 close」は、互いに異なる信号の信号名である。
ステップS106においては、原点復帰移動部18は、対応ノード及び対応ノードの親ノードを互いに接続する枝に設定された移動条件に含まれる移動命令種別、及び対応ノードの親ノードに割り当てられている移動位置を含む移動命令をロボットコントローラ113に出力する。復帰軌跡ツリーTが図4に示される復帰軌跡ツリーTであり、対応ノードが図4に示されるノードN7である場合は、出力される移動命令は、枝B7に設定された移動条件「Mvs/Y1000 Off/X1000 On」に含まれる移動命令種別「Mvs」、及びノードN6に割り当てられた移動位置「P3(2),-50」を含む移動命令「Mvs P3(2),-50」である。
続くステップS107においては、原点復帰移動部18は、出力した移動命令にしたがってロボット100が移動したことを確認する。
原点復帰移動部18がステップS101からステップS107までを実行することにより、ロボット本体111は、既に原点に復帰している場合を除いて、対応ノードに割り当てられている移動位置から対応ノードの親ノードに割り当てられている移動位置まで移動する。そして、原点復帰移動部18がステップS101からステップS107までを再び実行することにより、当該対応ノードの親ノードは、新たな対応ノードとなり、ロボット本体111は、既に原点に復帰している場合を除いて、新たな対応ノードに割り当てられている移動位置から新たな対応ノードの親ノードに割り当てられている位置まで移動する。これらにより、ロボット100は、対応ノードに割り当てられている移動位置から根ノードN0に割り当てられている原点まで移動する。復帰軌跡ツリーTが図4に示される復帰軌跡ツリーTであり、対応ノードが図4に示されるノードN7である場合は、ロボット100は、ノードN7に割り当てられている移動位置「P3(2)」から、ノードN6に割り当てられている移動位置「P3(2),-50」及びノードN5に割り当てられている移動位置「P2」を順次に経由して根ノードN0に割り当てられている原点「Phome」まで移動する。ただし、ノードN5及びノードN0を互いに接続する枝B3に設定された移動条件「Mov」は信号条件を含まないため、ロボット100がノードN5に割り当てられている移動位置「P2」からノードN0に割り当てられている原点「Phome」に移動する際には、ステップS104及びS105は実行されない。
1.9 変形例
複数のノードN0,N1,N2,N3,N4,N5,N6及びN7に含まれるノードに割り当てられた移動位置に含まれる教示位置が配列を構成する要素である場合は、教示位置に含まれるインデックスがワイルドカードとされてもよい。例えば、ノードN6に割り当てられ移動位置「P3(2),-50」に含まれる教示位置P3(2)のインデックス「2」がワイルドカードとされてもよい。また、ノードN7に割り当てられ移動位置「P3(2)」に含まれる教示位置P3(2)のインデックス「2」がワイルドカードとされてもよい。インデックスがワイルドカードとされた教示位置は、インデックスが明記されているインデックスが「1」とされた教示位置以外の任意の教示位置である。ただし、子ノードに割り当てられた移動位置に含まれる教示位置のインデックス、及び子ノードの親ノードに割り当てられた移動位置に含まれる教示位置のインデックスがいずれもワイルドカードとされており、ロボット100が前者の移動位置から後者の移動位置へ移動する場合は、前者の教示位置及び後者の教示位置は、同じ教示位置である。子ノードに割り当てられた移動位置に含まれる教示位置のインデックスがワイルドカートとされておらず、親ノードに割り当てられた移動位置に含まれる教示位置のインデックスがワイルドカードとされており、ロボット100が前者の移動位置から後者の移動位置へ移動する場合は、後者の教示位置は、インデックスが最小の番号とされた教示位置とされる。
図7及び図8は、実施の形態1の原点復帰装置により復帰軌跡ツリーが設定される際に用いられる入力の例を示す図である。
復帰軌跡ツリー設定部15において、GUIを提供する設定画面Sを用いて復帰軌跡ツリーTを設定することに代えて、他の方法により復帰軌跡ツリーTを設定することが行われてもよい。例えば、復帰軌跡ツリー設定部15において、図7に示される入力I1又は図8に示される入力I2を用いて復帰軌跡ツリーTを設定することが行われてもよい。図7に図示される入力I1は、表計算ソフトウェアにより作成される表である。図8に図示される入力I2は、テキストである。
1.10 原点復帰装置を構成するコンピュータ
図9は、実施の形態1の原点復帰装置を構成することができるコンピュータを模式的に図示するブロック図である。
原点復帰装置1は、図9に図示されるコンピュータ1000により構成することができる。
コンピュータ1000は、図9に図示されるように、プロセッサ1020、メモリ1022及びストレージ1024を備える。
ストレージ1024には、プログラム1040がインストールされる。プログラム1040のインストールは、外部記録媒体1060から読み出したプログラム1040をストレージ1024に書き込むことにより行われてもよいし、ネットワーク1062を経由して受信したプログラム1040をストレージ1024に書き込むことにより行われてもよい。
プロセッサ1020は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、デジタル信号処理装置(DSP)等である。メモリ1022は、ランダムアクセスメモリ(RAM)等である。ストレージ1024は、ハードディスクドライブ、ソリッドステートドライブ、RAMディスク等である。外部記録媒体1060は、コンパクトディスク(CD)、デジタル多目的ディスク(DVD)、ブルーレイディスク(BD)、ユニバーサルシリアルバス(USB)メモリ等である。
プログラム1040は、コンピュータ1000を原点復帰装置1として動作させるためのプログラムである。
コンピュータ1000においては、ストレージ1024にインストールされたプログラム1040がメモリ1022にロードされ、ロードされたプログラム1040がプロセッサ1020により実行される。これにより、原点復帰装置1に備えられる要素が構成され、コンピュータ1000が原点復帰装置1として動作する。原点復帰装置1に備えられる要素の全部又は一部がプログラムを実行しないハードウェアにより構成されてもよい。
メモリ1022、ストレージ1024及び外部記録媒体1060は、プログラム1040を記録した非一時的でコンピュータ読み取り可能な記録媒体である。
1.11 実施の形態1の効果
実施の形態1によれば、ロボット100を原点以外の移動位置から原点に復帰させる際に経由する移動位置を減らすことができる。また、原点以外のすべての移動位置についてロボット100を原点に復帰させるためのプログラミング等の事前準備を移動位置毎に個別で行う必要がなくなる。これにより、ロボット100を効率的に原点に復帰させるための事前準備を簡単に行うことができる。
2 実施の形態2
図10は、実施の形態2の原点復帰装置を模式的に図示するブロック図である。図11は、実施の形態2の原点復帰装置により設定される原点復帰プログラムの例を示すフローチャートである。
図10に図示される実施の形態2の原点復帰装置2は、図3に図示される実施の形態1の原点復帰装置1と主に下述する点で相違する。下述されない点については、原点復帰装置1において採用される構成と同様の構成が原点復帰装置2においても採用される。
原点復帰装置2に備えられる復帰軌跡ツリー設定部15は、図10に図示されるように、複数の復帰軌跡ツリーT及びT’を設定する。第1の復帰軌跡ツリーTは、図11に図示されるように、原点復帰装置1により生成される復帰軌跡ツリーTと同じ復帰軌跡ツリーであり、原点Phomeが割り当てられた根ノードN0を含む。第2の復帰軌跡ツリーT’は、図11に図示されるように、原点復帰装置1により生成される復帰軌跡ツリーTと異なる復帰軌跡ツリーであり、原点Phomeと異なるサブゴール位置Pkariが割り当てられた根ノードN0’を含む。サブゴール位置Pkariは、ロボットハンド112により把持されたワークが仮置きされるワーク仮置き位置である。復帰軌跡ツリー生成部11が、原点設定部14及び復帰軌跡ツリー設定部15に処理を繰り返させることにより、複数の復帰軌跡ツリーT及びT’を生成してもよい。
原点復帰装置2は、図10に図示されるように、原点復帰プログラム設定部21をさらに備える。
原点復帰プログラム設定部21は、原点復帰プログラムPRGを設定する。原点復帰プログラム設定部21は、その際に、複数の復帰軌跡ツリーT及びT’を組み合わせて原点復帰プログラムPRGを設定する。
設定される原点復帰プログラムPRGは、図12に示されるように、開始箇所「Start」、条件分岐S201、第1のブロックS203、第2のブロックS202並びに終了箇所「End」を含む。
条件分岐S201においては、ロボットコントローラ113により管理される信号が設定された状態であるという条件が満たされるか否かに応じて処理が分岐させられる。条件分岐S201においては、ロボットコントローラ113により管理され信号番号「X9000」を有する信号が、ロボットハンド112がワークを把持していることを示す状態「0」であるという条件が満たされるか否かに応じて処理が分岐させられる。ロボットコントローラ113以外のコントローラにより管理される信号が設定された状態であるという条件が満たされるか否かに応じて処理が分岐させられてもよい。ロボットコントローラ113以外のコントローラは、例えば、ロボット100を備える生産設備に備えられる装置において、当該装置に備えられる機器を制御するコントローラである。条件分岐S201は、条件が満たされない場合の第1の分岐先、及び条件が満たされる場合の第2の分岐先を有する。第2の分岐先は、第1の分岐先と異なる分岐先である。
第1のブロックS203及び第2のブロックS202は、第1の分岐先及び第2の分岐先にそれぞれ配置される。第1のブロックS203及び第2のブロックS202は、第1の復帰軌跡ツリーT及び第2の復帰軌跡ツリーT’をそれぞれ指定する。
原点復帰装置2に備えられる原点復帰命令部12は、図10に図示されるように、原点復帰処理要求部22をさらに備える。
原点復帰処理要求部22は、原点復帰プログラムPRGを実行する。
原点復帰処理要求部22は、原点復帰命令受信部16により原点復帰命令が受信されたのに連動して、開始箇所「Start」において処理を開始する。
処理を開始した原点復帰処理要求部22は、条件分岐S201において、信号番号「X9000」を有する信号が、ロボットハンド112がワークを把持していることを示す状態「0」であるという条件が満たされているか否かを判定する。
原点復帰処理要求部22は、条件が満たされていると判定した場合は、ブロックS202を実行する。原点復帰処理要求部22は、ブロックS202を実行する際に、第2の復帰軌跡ツリーT’にしたがって処理を行うことを原点復帰移動部18に要求する。第2の復帰軌跡ツリーT’にしたがって処理を行うことを要求された原点復帰移動部18は、第2の復帰軌跡ツリーT’にしたがってワーク仮置き位置移動処理を行う。原点復帰移動部18は、ワーク仮置き位置移動処理を行う際に、第1の復帰軌跡ツリーTに代えて第2の復帰軌跡ツリーT’にしたがって処理を行う点を除いて実施の形態1において行われる原点復帰処理と同様の処理を行う。これにより、ロボット100は、ワーク仮置き位置Pkariまで移動する。
また、原点復帰処理要求部22は、条件が満たされていないと判定した場合は、ブロックS203を実行する。また、原点復帰処理要求部22は、ブロックS202を実行した後に、ブロックS203を実行する。原点復帰処理要求部22は、ブロックS203を実行する際に、第1の復帰軌跡ツリーTにしたがって処理を行うことを原点復帰移動部18に要求する。第1の復帰軌跡ツリーTにしたがって処理を行うことを要求された原点復帰移動部18は、第1の復帰軌跡ツリーTにしたがって実施の形態1において行われる原点復帰処理と同様の処理を行う。これにより、ロボット100は、原点Phomeまで移動する。ブロックS202を実行した後にブロックS203が実行される場合は、原点復帰移動部18は、ワーク仮置き位置Pkariに対応する移動位置が割り当てられたノードから処理を開始する。
原点復帰移動部18が第1の復帰軌跡ツリーTにしたがって処理を行うことによりロボット100が原点に復帰した後は、原点復帰処理要求部22は、終了箇所「End」において指定された完了条件に到達して終了箇所「End」において処理を完了する。
実施の形態2は、実施の形態1の効果と同様の効果を有する。
また、実施の形態2によれば、ロボットコントローラ113又はロボットコントローラ113以外のコントローラにより管理される信号の状態にしたがって、実行される処理を変化させることができる。これにより、複雑な原点復帰処理を行うことができる。
3 実施の形態3
図12は、実施の形態3の原点復帰装置を模式的に図示するブロック図である。図13及び図14は、実施の形態3の原点復帰装置により設定される原点復帰プログラムの例を示すフローチャートである。
図12に図示される実施の形態3の原点復帰装置3は、図10に図示される実施の形態2の原点復帰装置2と主に下述する点で相違する。下述されない点については、原点復帰装置2において採用される構成と同様の構成が原点復帰装置3においても採用される。
原点復帰装置3は、図12に図示されるように、コントローラプログラム追加部32をさらに備える。
原点復帰装置3に備えられる原点復帰プログラム設定部21は、原点復帰プログラムPRGを設定する際に、コントローラプログラム追加部32を呼び出す。呼び出されたコントローラプログラム追加部32は、図13に示されるブロックS301又は図14に示されるブロックS302を原点復帰プログラムPRGに追加する。ブロックS301は、コントローラプログラムを含む。ブロックS302は、コントローラプログラムを呼び出す命令を含む。
原点復帰装置3に備えられる原点復帰命令部12は、コントローラプログラム命令部34をさらに備える。
原点復帰処理要求部22は、ブロックS202を実行した後であってブロックS203を実行する前に、ブロックS301又はS302を実行する。原点復帰処理要求部22は、ブロックS301又はS302を実行する際に、コントローラプログラム命令部34を呼び出す。ブロックS301が実行される際に呼び出されたコントローラプログラム命令部34は、ブロックS301に含まれるコントローラプログラムを実行することをコントローラに命令する。ブロックS302が実行される際に呼び出されたコントローラプログラム命令部34は、ブロックS302に含まれる命令により呼び出されるコントローラプログラムを実行することをコントローラに命令する。これにより、コントローラプログラム命令部34は、ブロックS301又はS302が実行される際にコントローラプログラムを実行することをコントローラに命令する。
コントローラプログラムは、ロボットコントローラ113、又はロボットコントローラ113以外のコントローラにより実行される。ロボットコントローラ113以外のコントローラは、例えば、ロボット100を備える生産設備に備えられる装置において、当該装置に備えられる機器を制御するコントローラである。コントローラプログラムを実行するコントローラは、原点復帰プログラムPRGの内部において指定されてもよいし、原点復帰プログラムPRG以外のシステム構成情報の内部において指定されてもよい。コントローラプログラムは、原点復帰装置3の内部において記述されてもよいし、コントローラプログラムを記述する専用のソフトウェアにより記述されてもよい。コントローラプログラムを記述する専用のソフトウェアにより記述されたコントローラプログラムは、原点復帰装置3に読み込まれる。コントローラプログラムは、コントローラにより実行されるプログラム本体部であってもよい。
実施の形態3は、実施の形態2の効果と同様の効果を有する。
加えて、実施の形態3によれば、原点復帰プログラムPRGに含まれるコントローラプログラム又は原点復帰プログラムPRGに含まれる命令により呼び出されるコントローラプログラムがコントローラにより実行される。これにより、原点復帰処理が行われている間にコントローラによる制御を行うことができる。
4 実施の形態4
図15は、実施の形態4の原点復帰装置を模式的に図示するブロック図である。
図15に図示される実施の形態4の原点復帰装置4は、図3に図示される実施の形態1の原点復帰装置1と主に下述する点で相違する。下述されない点については、原点復帰装置1において採用される構成と同様の構成が原点復帰装置4においても採用される。
原点復帰装置4は、図15に図示されるように、最終移動命令保存部42をさらに備える。
最終移動命令保存部42は、ロボット100において最後に実行された最終移動命令を保存する。最終移動命令保存部42は、最終移動命令が実行される際に最終移動命令を保存する。保存される最終移動命令は、移動開始位置、移動目標位置、移動命令種別、移動命令が必要とする引数を示す引数情報等を含む。最終移動命令保存部42は、原点復帰命令受信部16が原点復帰命令を受信する可能性がある期間に最終移動命令を保存する。このため、最終移動命令保存部42は、原点復帰処理が行われている期間に最終移動命令を保存する場合もあるし、原点復帰処理が行われていない期間に最終移動命令を保存する場合もある。
原点復帰装置4に備えられる原点復帰命令部12は、図15に図示されるように、移動開始位置復帰部41をさらに備える。
移動開始位置復帰部41は、ロボット100が移動中に停止した後に原点復帰命令受信部16が原点復帰命令を受信したが対応ノード判定部17が対応ノードを判定することができない場合に呼び出される。呼び出された移動開始位置復帰部41は、最終移動命令保存部42に保存された最終移動命令を取得する。また、移動開始位置復帰部41は、取得した最終移動命令から最終移動命令が実行された際のロボット100の軌跡を計算する。また、移動開始位置復帰部41は、計算した軌跡上の、ロボット100の現在位置の最近傍にある最近傍位置を計算する。また、移動開始位置復帰部41は、ロボット100の現在位置から、計算した最近傍位置を経由して、最終移動命令の移動開始位置までロボット100を移動させてロボット100を移動開始位置に復帰させる。移動開始位置復帰部41は、最近傍位置から最終移動命令の移動開始位置までロボット100を移動させる際に、計算した軌跡に沿って計算した軌跡を逆に辿ってロボット100を移動させる。最終移動命令の移動開始位置は、原点復帰処理の対象となっている場合は、復帰軌跡ツリーTに含まれるノードに割り当てられている。このため、ロボット100が最終移動命令の移動開始位置まで移動した後は、実施の形態1において行われる原点復帰処理と同様に原点復帰処理を行うことができる。
最終移動命令は、望ましくは、不揮発性メモリに保存される。これにより、電源が遮断される事態が発生した後においても最終移動命令を取得することができる。また、最終移動命令は、望ましくは、ロボット100が移動を開始する前に保存される。最終移動命令保存部42が、ロボット100が移動を完了したことを示す完了情報を保存してもよい。また、対応ノード判定部17が、保存された完了情報を取得することができた場合、すなわち、ロボット100が移動を完了している場合に、最終移動命令の移動目標位置を現在位置として扱ってもよい。
実施の形態4は、実施の形態1の効果と同様の効果を有する。
加えて、実施の形態4によれば、ロボット100が移動中に停止した後にロボット100を移動開始位置を経由して原点に復帰させることができる。
5 実施の形態5
図16は、実施の形態5の原点復帰装置を模式的に図示するブロック図である。
図16に図示される実施の形態5の原点復帰装置5は、図3に図示される実施の形態1の原点復帰装置1と主に下述する点で相違する。下述されない点については、原点復帰装置1において採用される構成と同様の構成が原点復帰装置5においても採用される。
原点復帰装置5に備えられる復帰軌跡ツリー生成部11は、図16に図示されるように、候補生成部51をさらに備える。
候補生成部51は、復帰軌跡ツリーTの候補を生成する。候補生成部51は、その際に、ロボットプログラムPから復帰軌跡ツリーTの候補を生成する。例えば、候補生成部51は、ロボットプログラム本体P2を解析して移動命令、補助命令等の呼び出し順序に基づいて復帰軌跡ツリーTの候補を生成する。候補生成部51が、他のロボットプログラム及び他の復帰軌跡ツリーから復帰軌跡ツリーTの候補を生成してもよい。また、候補生成部51が、移動位置抽出部13により抽出された複数の移動位置の間の移動を3次元(3D)シミュレーション環境において衝突検知と組み合わせて実行して復帰軌跡ツリーTの候補を生成してもよい。また、候補生成部51が、これらの方式を組み合わせた方式により復帰軌跡ツリーTの候補を生成してもよい。また、候補生成部51は、生成した復帰軌跡ツリーTの候補を作業者に提示する。
復帰軌跡ツリー設定部15は、生成された復帰軌跡ツリーTの候補を、設定する復帰軌跡ツリーTとすることができる。
実施の形態5は、実施の形態1の効果と同様の効果を有する。
また、実施の形態5によれば、復帰軌跡ツリーTを容易に設定することができる。
なお、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
実施の形態は詳細に説明されたが、上記した説明は、すべての局面において、例示であって、実施の形態がそれに限定されるものではない。例示されていない無数の変形例が、想定され得るものと解される。