(57)【特許請求の範囲】
【請求項１】
ロボットプログラムから複数の移動位置を抽出する移動位置抽出部と、
前記複数の移動位置のいずれかを原点に設定する原点設定部と、
前記複数の移動位置がそれぞれ割り当てられた複数のノードと、前記複数のノードに含まれる子ノード及び前記子ノードの親ノードを互いに接続し前記子ノードに割り当てられた移動位置から前記子ノードの親ノードに割り当てられた移動位置へロボットを移動させる際の移動条件が設定された枝と、を含み、前記原点が割り当てられた根ノードを前記複数のノードが含む復帰軌跡ツリーを設定する復帰軌跡ツリー設定部と、
前記復帰軌跡ツリーに含まれる、前記ロボットの現在位置に対応する移動位置が割り当てられた対応ノードを判定する対応ノード判定部と、
前記復帰軌跡ツリーに含まれる、前記対応ノード及び前記対応ノードの親ノードを互いに接続する枝に設定された移動を開始する前に出力される信号または確認される信号を指定する信号条件を含む移動条件にしたがって前記ロボットを移動させて前記ロボットを前記原点に復帰させる原点復帰移動部と
を備える原点復帰装置。
【請求項２】
分岐先を有する条件分岐と、前記分岐先に配置され前記復帰軌跡ツリーを指定するブロックと、を含む原点復帰プログラムを設定する原点復帰プログラム設定部と、
前記原点復帰プログラムを実行し、前記ブロックを実行する際に、前記復帰軌跡ツリーにしたがって処理を行うことを前記原点復帰移動部に要求する原点復帰処理要求部と、
をさらに備える請求項１の原点復帰装置。
【請求項３】
前記分岐先は、第１の分岐先であり、
前記条件分岐は、前記第１の分岐先と異なる第２の分岐先を有し、
前記復帰軌跡ツリーは、第１の復帰軌跡ツリーであり、
前記復帰軌跡ツリー設定部は、前記第１の復帰軌跡ツリーと異なる第２の復帰軌跡ツリーをさらに設定し、
前記ブロックは、第１のブロックであり、
前記原点復帰プログラムは、前記第２の分岐先に配置され前記第２の復帰軌跡ツリーを指定する第２のブロックをさらに含み、
前記原点復帰処理要求部は、前記第２のブロックを実行する際に、前記第２の復帰軌跡ツリーにしたがって処理を行うことを前記原点復帰移動部に要求する
請求項２の原点復帰装置。
【請求項４】
前記第２の復帰軌跡ツリーは、前記原点と異なるサブゴールが割り当てられた根ノードを含む
請求項３の原点復帰装置。
【請求項５】
コントローラプログラム又は前記コントローラプログラムを呼び出す命令を含むブロックを前記原点復帰プログラムに追加するコントローラプログラム追加部と、
前記コントローラプログラム又は前記コントローラプログラムを呼び出す命令を含むブロックが実行される際に前記コントローラプログラムを実行することをコントローラに命令するコントローラプログラム命令部と、
をさらに備える請求項２から４までのいずれかの原点復帰装置。
【請求項６】
前記ロボットにおいて最後に実行された最終移動命令を保存する最終移動命令保存部と、
前記最終移動命令が実行された際の前記ロボットの軌跡上の、前記現在位置の最近傍にある最近傍位置を計算し、前記現在位置から前記最近傍位置を経由して前記最終移動命令の移動開始位置まで前記ロボットを移動させて前記ロボットを前記移動開始位置に復帰させる移動開始位置復帰部と、
をさらに備える請求項１から５までのいずれかの原点復帰装置。
【請求項７】
前記復帰軌跡ツリーの候補を生成する候補生成部をさらに備え、
前記復帰軌跡ツリー設定部は、前記復帰軌跡ツリーの候補を前記復帰軌跡ツリーに設定することができる
請求項１から６までのいずれかの原点復帰装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ロボットを原点に復帰させる原点復帰装置に関する。
【背景技術】
【０００２】
産業用ロボットは、初期位置を有する。初期位置は、原点とも呼ばれる。産業用ロボットを現在位置から原点に復帰させる場合は、産業用ロボットが原点から現在位置まで移動する途上で経由した移動位置を逆順で経由して産業用ロボットを現在位置から原点まで移動させることが行われる。特許文献１に記載された技術は、その一例である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−０６１８７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述した産業用ロボットを原点に復帰させる方法は、産業用ロボットがひとつの作業を繰り返し行う場合には好適であるが、産業用ロボットが複数の作業を行う場合には問題を生じる。【０００５】
例えば、産業用ロボットが部品を取りに行く作業及び部品を組み付けに行く作業からなる一連の作業を繰り返し行う場合を考える。この場合は、産業用ロボットは、原点を経由せずに、部品を取りに行く作業及び部品を組み付けに行く作業を連続して行う。また、産業用ロボットは、一連の作業を行った後に、原点を経由せずに、再び一連の作業を行う。このため、産業用ロボットは、部品を組み付ける作業に失敗した場合は、現在位置から原点まで移動する間に、産業用ロボットが部品を取りに行く作業を行う間に経由しなければならない移動位置を逆順で経由するか、又は産業用ロボットが一連の作業を繰り返し行う間に経由しなければならない作業位置を逆順で経由する。したがって、産業用ロボットが現在位置から原点まで移動する間に経由しなければならない移動位置が増える。【０００６】
また、原点以外のすべての移動位置について産業用ロボットを原点以外の移動位置から原点に移動させるプログラミング作業を行うことも考えられるが、当該プログラミング作業を行うことは簡単ではない。【０００７】
これらの問題は、産業用ロボット以外の生産設備に備えられる複数の駆動部を持つ装置一般にも生じる。【０００８】
本開示は、これらの問題に鑑みてなされた。本開示は、ロボットを効率的に原点に復帰させるための事前準備を簡単に行うことができる原点復帰装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
原点復帰装置は、移動位置抽出部、原点設定部、復帰軌跡ツリー設定部、対応ノード判定部及び原点復帰移動部を備える。【００１０】
移動位置抽出部は、ロボットプログラムから複数の移動位置を抽出する。【００１１】
原点設定部は、複数の移動位置のいずれかを原点に設定する。【００１２】
復帰軌跡ツリー設定部は、復帰軌跡ツリーを設定する。復帰軌跡ツリーは、複数のノードを含む。複数のノードには、複数の移動位置がそれぞれ割り当てられる。復帰軌跡ツリーは、複数のノードに含まれる子ノード及び子ノードの親ノードを互いに接続する枝を含む。枝には、子ノードに割り当てられた移動位置から子ノードの親ノードに割り当てられた移動位置へロボットを移動させる際の移動条件が設定される。複数のノードに含まれる根ノードには、原点が割り当てられる。【００１３】
対応ノード判定部は、ロボットの現在位置に対応する移動位置が割り当てられた対応ノードを判定する。【００１４】
原点復帰移動部は、復帰軌跡ツリーに含まれる、対応ノード及び対応ノードの親ノードを互いに接続する枝に設定された移動を開始する前に出力される信号または確認される信号を指定する信号条件を含む移動条件にしたがってロボットを移動させてロボットを原点に復帰させる。
【発明の効果】
【００１５】
本開示によれば、ロボットを原点以外の移動位置から原点に復帰させる際に経由する移動位置を減らすことができる。また、原点以外の移動位置のすべてについてロボットを原点以外の移動位置から原点に移動させるための移動位置毎に個別のプログラム作成が必要なくなる。これにより、ロボット本体を効率的に原点に復帰させるための事前準備を簡単に行うことができる。【００１６】
本開示の目的、特徴、局面及び利点は、以下の詳細な説明と添付図面とによって、より明白となる。
【図面の簡単な説明】
【００１７】
【図１】実施の形態１の原点復帰装置により制御されるロボットを模式的に図示する斜視図である。
【図２】実施の形態１の原点復帰装置により参照されるロボットプログラムの例を示す図である。
【図３】実施の形態１の原点復帰装置を模式的に図示するブロック図である。
【図４】実施の形態１の原点復帰装置により生成される原点復帰ツリーの例を示す図である。
【図５】実施の形態１の原点復帰装置により復帰軌跡ツリーが設定される際に用いられる設定画面の例を模式的に図示する図である。
【図６】実施の形態１の原点復帰装置により行われる原点復帰処理の流れを示すフローチャートである。
【図７】実施の形態１の原点復帰装置により復帰軌跡ツリーが設定される際に用いられる入力の例を示す図である。
【図８】実施の形態１の原点復帰装置により復帰軌跡ツリーが設定される際に用いられる入力の例を示す図である。
【図９】実施の形態１の原点復帰装置を構成することができるコンピュータを模式的に図示するブロック図である。
【図１０】実施の形態２の原点復帰装置を模式的に図示するブロック図である。
【図１１】実施の形態２の原点復帰装置により設定される原点復帰プログラムの例を示すフローチャートである。
【図１２】実施の形態３の原点復帰装置を模式的に図示するブロック図である。
【図１３】実施の形態３の原点復帰装置により設定される原点復帰プログラムの例を示すフローチャートである。
【図１４】実施の形態３の原点復帰装置により設定される原点復帰プログラムの例を示すフローチャートである。
【図１５】実施の形態４の原点復帰装置を模式的に図示するブロック図である。
【図１６】実施の形態５の原点復帰装置を模式的に図示するブロック図である。
【発明を実施するための形態】
【００１８】
１  実施の形態１
１．１  ロボット
図１は、実施の形態１の原点復帰装置により制御されるロボットを模式的に図示する斜視図である。
【００１９】
図１に図示されるロボット１００は、産業用ロボットである。ロボット１００が、産業用ロボット以外の生産設備に備えられる複数の駆動部を持つ装置であってもよい。
【００２０】
ロボット１００は、図１に図示されるように、ロボット本体１１１、ロボットハンド１１２、ロボットコントローラ１１３及びケーブル１１４を備える。
【００２１】
ロボット本体１１１は、複数のモータ及び複数のリンクを備える。また、ロボット本体１１１は、手首１２１を備える。手首１２１は、ロボット本体１１１の先端部に配置される。手首１２１には、ロボットハンド１１２が取り付けられる。ロボット本体１１１は、のツールセンターポイント１２２を有する。ツールセンターポイント１２２は、ロボットハンド１１２の手先が配置されて作業が行われる位置である。
【００２２】
ケーブル１１４は、ロボットコントローラ１１３をロボット本体１１１に電気的に接続する。これにより、ロボットコントローラ１１３は、ロボット本体１１１を制御することができる。
【００２３】
ロボット１００の位置姿勢は、ロボット本体１１１に備えられる複数のモータの回転軸の角度、ツールセンターポイント１２２の３次元的な位置姿勢等により表現される。
【００２４】
ロボット１００は、生産設備に備えられる装置に備えらえる。生産設備に備えられる装置は、ロボット１００に加えて、ロボット１００以外の駆動部、センサ及びこれらを制御するコントローラを備える。
【００２５】
１．２  ロボットプログラム
図２は、実施の形態１の原点復帰装置により参照されるロボットプログラムの例を示す図である。
【００２６】
図２に示されるロボットプログラムＰは、教示位置の集合Ｐ１及びロボットプログラム本体Ｐ２を含む。
【００２７】
教示位置の集合Ｐ１は、ロボットプログラムＰの下部に記述されている。ロボットプログラム本体Ｐ２は、ロボットプログラムＰの上部に記述されている。
【００２８】
教示位置の集合Ｐ１は、教示位置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)に含まれる各教示位置は、ロボット１００の位置姿勢を指定する。各教示位置は、様々な表現方法により表現される。例えば、各教示位置は、Ｃ言語等のプログラミング言語において用いることができる構造体により表現される。ロボット１００の位置姿勢が複数のモータの回転軸の角度により表現される場合は、各教示位置は、複数のモータの回転軸の角度を纏めた構造体により表現される。ロボット１００の位置姿勢がツールセンターポイント１２２の３次元的な位置姿勢により表現される場合は、各教示位置は、ツールセンターポイント１２２の位置及び姿勢、並びにロボット本体１１１の姿勢を一意に決定することができる付加情報を纏めた構造体により表現される。付加情報は、肘の位置、３６０°以上回転することができる回転軸の多回転情報等を含む。図２に示されるロボットプログラムＰにおいては、各教示位置が、ツールセンターポイント１２２の位置及び姿勢、並びに付加情報を纏めた構造体により表現されている。ただし、図２に示されるロボットプログラムＰにおいては、各教示位置を構成するツールセンターポイント１２２の位置及び姿勢が記述されているが、各教示位置を構成する付加情報が便宜上記述されていない。
【００３０】
教示位置P3(1)及びP3(2)は、配列P3を構成するふたつの要素である。教示位置P3(1)及びP3(2)は、括弧内に記述された数値「1」及び「2」からなるインデックスによりそれぞれ識別される。
【００３１】
教示位置Phome,P1,P2,P3(1)及びP3(2)は、望ましくは、ロボットプログラム本体Ｐ２にハードコーディングされず、ロボットプログラム本体Ｐ２から分離された状態で管理される。これにより、ロボット本体１１１の機械的な誤差を吸収するために現物調整により教示位置Phome,P1,P2,P3(1)及びP3(2)を設定する際にロボットプログラム本体Ｐ２を修正する作業が発生することを抑制することができる。
【００３２】
ロボットプログラム本体Ｐ２は、移動命令「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」は、ロボットプログラム本体Ｐ２の第２行目、第６行目、第７行目、第９行目、第１２行目、第１３行目及び第１５行目にそれぞれ記述されている。補助命令「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」の各移動命令は、ロボット１００を移動させる命令である。
【００３５】
移動命令「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」の各移動命令種別は、ロボット１００を移動させる際の移動方法を指定する。移動命令種別「Mov」は、ロボット本体１１１に備えられる各モータを台形速度パターンで回転させる移動方法を指定する。移動命令種別「Mov」によれば、ロボット１００を最短時間で移動させることができる。移動命令種別「Mvs」は、ツールセンターポイント１２２を直線に沿って移動させる移動方法を指定する。
【００３７】
目標位置「Phome」、「P1,-50」、「P1」、「P2,-50」及び「P2」の各目標位置は、ロボット１００を移動させた後のロボット１００の位置姿勢を指定する。
【００３８】
目標位置「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」の各補助命令は、ロボットハンド１１２を開閉させる命令である。
【００４３】
補助命令「HandOpen 1」及び「HandClose 1」は、補助命令種別「HandOpen」及び「HandClose」をそれぞれ含み、ロボットハンド番号「1」及び「1」をそれぞれ含む。
【００４４】
補助命令種別「HandOpen」及び「HandClose」の各補助命令種別は、ロボットハンド１１２を開閉させる際の開閉の別を指定する。補助命令種別「HandOpen」は、ロボットハンド１１２を開かせることを指定する。補助命令種別「HandClose」は、ロボットハンド１１２を閉じさせることを指定する。
【００４５】
ロボットハンド番号は、開閉させられるロボットハンド１１２を指定する。ロボットハンド番号「1」は、ロボットハンド番号「1」を有するロボットハンド１１２を指定する。
【００４６】
補助命令「GoTo *PICK」は、補助命令種別「GoTo」及び飛び先「*PICK」を含む。ラベル「* INITIAL」、「*PICK」及び「*PUT」の各ラベルは、文字「*」から始まる文字列である。
【００４７】
補助命令「GoTo *PICK」は、ロボットプログラムＰの実行点を、飛び先「*PICK」に一致するラベル「*PICK」が記述された第５行目へ移動させる命令である。
【００４８】
コメント「//」は、ロボットプログラムＰの可読性を向上するために挿入される改行である。
【００４９】
図２に示されるロボットプログラムＰが、より複雑なロボットプログラムに変更されてもよい。より複雑なロボットプログラムは、ロボットコントローラ１１３に搭載された、前記以外の移動命令種別、制御文、サブルーチンコール、様々な補助命令等を含みうる。制御文は、If文、For文等を含む。様々な補助命令は、他の機器と通信させる命令等を含む。
【００５０】
１．３  原点復帰装置への要求
従来においては、ロボット１００は、多くの場合は、生産ライン、物流ライン等に組み込まれ、ひとつの作業を繰り返し行っていた。
【００５１】
しかし、最近においては、ロボット１００及びそれに付随するセンサの性能が向上している。このため、ロボット１００が、様々な作業を行うようになってきている。例えば、ロボット１００が、作業の対象及び内容を変更しながら複数の作業を行うようになってきている。また、ロボット１００が、複数の工程に渡る複数の作業を連続して行うようになってきている。
【００５２】
ロボット１００が複数の作業を行う場合は、ロボット１００を原点に復帰させる際に実行される原点復帰プログラムが、複数の作業について共通化され、ロボット１００に複数の作業を行わせる際に実行される作業プログラムから独立させられる。しかし、ロボット１００が複数の作業を行う場合は、ロボット１００に教示される教示位置の数がロボット１００により行われる作業の数に応じて増える。このため、ロボット１００が複数の作業を行う場合は、すべての教示位置について原点復帰プログラムを作成するために必要な作業が多くなる。したがって、原点復帰プログラムを作成することが困難になる。
【００５３】
また、生産現場においては、生産設備の電源を再投入することにより生産設備を復旧することがしばしば行われる。このため、揮発メモリ等に保存されたプログラムの全実行履歴に基づいてIf等が含まれる作業プログラムを逆実行することは、困難である。このため、不揮発性メモリに保存された情報、及びロボット１００の位置姿勢を含む生産設備の状態を示す情報に基づいてロボット１００を原点に復帰させることが望まれる。
【００５４】
生産設備の状態を示す情報に基づいてロボット１００を原点に復帰させる方法としては、ロボット１００の位置姿勢が属しうる空間を複数のエリアに分割し、複数のエリアに含まれる各エリアにロボット１００の位置姿勢が属する場合にロボット１００を原点に復帰させるために必要な移動命令を定義する方法が考えられる。当該方法が採用される場合は、ロボット１００の位置姿勢としてツールセンターポイント１２２の位置姿勢が利用される。しかし、当該方法が採用された場合は、ロボット本体１１１を原点に適切に復帰させることができるか否かを検証するテストを十分に行うことができないことが多い。なぜなれば、各エリアは３次元空間であるからである。また、当該方法が採用された場合は、ロボット１００の位置姿勢が属しうる空間が複数のエリアに適切に分割されていない状態でロボット本体１１１が原点に復帰させられた結果として、ロボット本体１１１が環境に衝突して生産設備が破損することがある。
【００５５】
ロボット１００を原点に復帰させる方法として、３次元（３Ｄ）シミュレーションを活用して生成された経路に沿ってロボット１００を移動させる方法も知られている。しかし、当該方法が採用された場合は、ロボット１００を原点に復帰させる際に多くの計算リソースを利用しなければならない。一方で、ロボット１００を原点に復帰させるために費やすことができる時間は、原点復帰プログラムが作成された際に想定されていなかった例外的な状況下においては、数分であるが、原点復帰プログラムが作成された際に想定されていた典型的な状況下においては、数秒である。例えば、製造過程において供給される部品の不具合により生産設備が停止した際にロボット１００を原点に復帰させるために費やすことができる時間は、数秒である。このため、典型的な状況下においては、当該方法によりロボット１００を原点に復帰させた場合は、ロボット１００を原点に復帰させるために費やされる時間が長くなりすぎる。このため、原点復帰プログラムを事前に設定しておき、ロボット１００を原点に復帰させる必要が生じた場合にロボット１００を原点に復帰させる処理を直ぐに開始することができることが望まれる。
【００５６】
以下では、上述した要求に答えることができる原点復帰装置が開示される。
【００５７】
１．４  原点復帰装置
図３は、実施の形態１の原点復帰装置を模式的に図示するブロック図である。
【００５８】
図３に図示される実施の形態１の原点復帰装置１は、復帰軌跡ツリー生成部１１及び原点復帰命令部１２を備える。
【００５９】
復帰軌跡ツリー生成部１１は、ロボットプログラムＰから復帰軌跡ツリーＴを生成する。
【００６０】
生成される復帰軌跡ツリーＴは、複数の移動位置の各移動位置に配置されているロボット１００を原点に復帰させるためにロボット１００を移動させなければならない次の移動位置を指定する。指定される次の目標位置は、当該複数の移動位置に含まれる、各移動位置以外のひとつの移動位置である。また、復帰軌跡ツリーＴは、ロボット１００を各移動位置から次の移動位置へ移動させる際の移動条件を指定する。指定される移動条件は、ひとつの移動条件である。これらの要求を満たす限り、復帰軌跡ツリーＴのデータ構造は任意である。
【００６１】
原点復帰命令部１２は、生成された復帰軌跡ツリーＴにしたがってロボット１００を原点に復帰させることをロボット１００に命令する。
【００６２】
１．５  原点復帰ツリー
図４は、実施の形態１の原点復帰装置により生成される復帰軌跡ツリーの例を示す図である。
【００６３】
図４に示される復帰軌跡ツリーＴは、ツリー構造を有する。
【００６４】
復帰軌跡ツリーＴは、複数のノードＮ０，Ｎ１，Ｎ２，Ｎ３，Ｎ４，Ｎ５，Ｎ６及びＮ７を含む。
【００６５】
複数のノードＮ０，Ｎ１，Ｎ２，Ｎ３，Ｎ４，Ｎ５，Ｎ６及びＮ７には、複数の移動位置「Phome」、「P1,-50」、「P1」、「P3(1),-50」、「P3(1)」、「P2」、「P3(2),-50」及び「P3(2)」がそれぞれ割り当てられている。
【００６６】
複数のノードＮ０，Ｎ１，Ｎ２，Ｎ３，Ｎ４，Ｎ５，Ｎ６及びＮ７は、根ノードＮ０を含む。複数の移動位置「Phome」、「P1,-50」、「P1」、「P3(1),-50」、「P3(1)」、「P2」、「P3(2),-50」及び「P3(2)」は、原点「Phome」を含む。根ノードＮ０には、原点「Phome」が割り当てられている。
【００６７】
復帰軌跡ツリーＴは、複数の枝Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｂ５，Ｂ６及びＢ７を含む。
【００６８】
枝Ｂ１は、子ノードＮ１及び子ノードＮ１の親ノードＮ０を互いに接続する。枝Ｂ１には、子ノードＮ１に割り当てられた移動位置「P1,-50」から親ノードＮ０に割り当てられた移動位置「Phome」へロボット１００を移動させる際の移動条件「Mov」が設定されている。枝Ｂ２は、子ノードＮ２及び子ノードＮ２の親ノードＮ１を互いに接続する。枝Ｂ２には、子ノードＮ２に割り当てられた移動位置「P1」から親ノードＮ１に割り当てられた移動位置「P1,-50」へロボット１００を移動させる際の移動条件「Mvs」が設定されている。枝Ｂ３は、子ノードＮ５及び子ノードＮ５の親ノードＮ０を互いに接続する。枝Ｂ３には、子ノードＮ５に割り当てられた移動位置「P2」から親ノードＮ０に割り当てられた移動位置「Phome」へロボット１００を移動させる際の移動条件「Mov」が設定されている。枝Ｂ４は、子ノードＮ３及び子ノードＮ３の親ノードＮ５を互いに接続する。枝Ｂ４には、子ノードＮ３に割り当てられた移動位置「P3(1),-50」から親ノードＮ５に割り当てられた移動位置「P2」へロボット１００を移動させる際の移動条件「Mov/H2 close」が設定されている。枝Ｂ５は、子ノードＮ４及び子ノードＮ４の親ノードＮ３を互いに接続する。枝Ｂ４には、子ノードＮ４に割り当てられた移動位置「P3(1)」から親ノードＮ３に割り当てられた移動位置「P3(1),-50」へロボット１００を移動させる際の移動条件「Mvs/H2 close」が設定されている。枝Ｂ６は、子ノードＮ６及び子ノードＮ６の親ノードＮ５を互いに接続する。枝Ｂ６には、子ノードＮ６に割り当てられた移動位置「P3(2),-50」から親ノードＮ５に割り当てられた移動位置「P2」へロボット１００を移動させる際の移動条件「Mov/Y1000 Off/X1000 On」が設定されている。枝Ｂ７は、子ノードＮ７及び子ノードＮ７の親ノードＮ６を互いに接続する。枝Ｂ７には、子ノードＮ７に割り当てられた移動位置「P3(2)」から親ノードＮ６に割り当てられた移動位置「P3(2),-50」へロボット１００を移動させる際の移動条件「Mvs/Y1000 Off/X1000 On」が設定されている。
【００６９】
子ノードＮ１及び親ノードＮ０の対においては、子ノードＮ１は、根ノードＮ０から相対的に遠く、親ノードＮ０は、根ノードＮ０に相対的に近い。子ノードＮ２及び親ノードＮ１の対、子ノードＮ５及び親ノードＮ０の対、子ノードＮ３及び親ノードＮ５の対、子ノードＮ４及び親ノードＮ３の対、子ノードＮ６及び親ノードＮ５の対、並びに子ノードＮ７及び親ノードＮ６の対においても、同様である。
【００７０】
根ノードＮ０以外の子ノードに接続される親ノードの数は、ひとつである。しかし、親ノードに接続される子ノードの数は、ひとつであるとは限らず、ふたつ以上であることもある。
【００７１】
移動条件「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」の各移動命令種別は、ロボットコントローラ１１３が実行することができる移動命令を構成する。各移動命令種別は、ロボットプログラムＰに記述することができる。移動命令が目標位置以外の引数を必要とする場合は、移動命令種別が当該引数を含んでもよい。
【００７３】
信号条件「H2 close」、「H2 close」、「Y1000 Off/X1000 On」及び「Y1000 Off/X1000 On」は、移動命令種別「Mov」、「Mvs」、「Mov」及び「Mov」の後に記述されたスラッシュ「/」の後にそれぞれ記述される。移動条件が信号条件を含まない場合は、移動命令種別の後にスラッシュ「/」及び信号条件は記述されない。
【００７４】
移動命令種別「Mov」及び「Mvs」の各移動命令種別は、ロボット１００を移動させる際の移動方法を指定する。
【００７５】
信号条件「H2 close」及び「Y1000 Off/X1000 On」の各信号条件は、ロボット１００を移動させることが開始される際に満たされていなければならない信号条件を示す。条件は、出力される信号又は確認される信号に関する信号条件である。出力される信号又は確認される信号は、ロボットコントローラ１１３により管理される信号であるが、ロボットコントローラ１１３以外のコントローラにより管理される信号であってもよい。ロボットコントローラ１１３以外のコントローラは、例えば、ロボット１００を備える生産設備に備えられる装置において、当該装置に備えられる機器を制御するコントローラである。
【００７６】
信号条件「H2 close」は、ロボットハンド番号「2」を有するロボットハンド１１２が閉じられていることが確認されているという信号条件を示す。信号条件「Y1000 Off/X1000 On」は、ロボットコントローラ１１３により出力される信号番号「Y1000」を有する信号をオフにする指令がロボットコントローラ１１３に対して出力されて、ロボットコントローラ１１３に入力される信号番号「X1000」を有する信号がオンになったことが確認されているという信号条件を示す。
【００７７】
復帰軌跡ツリーＴが、図４に示される復帰軌跡ツリーＴのツリー構造と異なるツリー構造を有してもよい。
【００７８】
１．６  原点復帰ツリー生成部
復帰軌跡ツリー生成部１１は、図３に図示されるように、移動位置抽出部１３、原点設定部１４及び復帰軌跡ツリー設定部１５を備える。
【００７９】
移動位置抽出部１３は、ロボットプログラムＰから複数の移動位置を抽出する。例えば、ロボットプログラムＰが図２に示されるロボットプログラムＰである場合は、移動位置抽出部１３は、ロボットプログラムＰから５個の移動位置「Phome」、「P1」、「P1,-50」、「P2」及び「P2,-50」を抽出する。
【００８０】
抽出される移動位置は、ロボットプログラムＰに記述されている移動位置である。抽出される移動位置は、ロボットプログラム本体Ｐ２に含まれる目標位置を含む。当該目標位置は、教示位置と同じ位置である目標位置、及びロボットプログラム本体Ｐ２が実行されることにより演算される、教示位置から変更された目標位置を含む。
【００８１】
移動位置抽出部１３が、ロボットプログラムＰに含まれるすべての教示位置を抽出してもよい。この場合は、抽出される移動位置は、ロボットプログラム本体Ｐ２に記述されていない教示位置を含みうる。
【００８２】
抽出された複数の移動位置は、復帰軌跡ツリーＴに含まれる複数のノードにそれぞれ割り当てられる複数の移動位置の候補となる。
【００８３】
原点設定部１４は、抽出された複数の移動位置のいずれかを原点に設定する。原点設定部１４は、その際に、予め設定された教示位置の名前と同じ名前を有する教示位置を自動的に原点に設定する。原点設定部１４が、原点の候補となる移動位置を作業者に提示し、原点の候補となる移動位置から原点を作業者に選択させてもよい。作業者への提示及び作業者による選択は、コンピュータにより提供される一般的なインターフェースにより行うことができる。
【００８４】
復帰軌跡ツリー設定部１５は、復帰軌跡ツリーＴを設定する。復帰軌跡ツリー設定部１５は、その際に、設定された原点が割り当てられた根ノードを含む復帰軌跡ツリーＴを生成する第１の処理を行う。また、復帰軌跡ツリー設定部１５は、第１の処理を行った後に、親ノードに接続される子ノード、並びに子ノード及び親ノードを互いに接続する枝を、生成された復帰軌跡ツリーＴに追加し、追加する子ノードに移動位置を割り当て、追加する枝に移動条件を設定する第２の処理を要求された回数行う。
【００８５】
１．７  復帰軌跡ツリーが設定される際に用いられる設定画面
図５は、実施の形態１の原点復帰装置により復帰軌跡ツリーが設定される際に用いられる設定画面の例を模式的に図示する図である。
【００８６】
図５に図示される設定画面Ｓは、グラフィカルユーザインターフェース（ＧＵＩ）を提供する。
【００８７】
設定画面Ｓは、復帰軌跡ツリーＴに、図４に図示されるノードＮ７及び枝Ｂ７を追加し、ノードＮ７に移動位置「P3(2)」を割り当て、枝Ｂ７に信号条件「Mvs/Y1000 Off/X1000 On」を設定する第２の処理が行われる際の設定画面を示す。当該第２の処理が行われる際には、復帰軌跡ツリーＴは、図４に図示されるノードＮ０，Ｎ１，Ｎ２，Ｎ３，Ｎ４，Ｎ５及びＮ６並びに枝Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｂ５及びＢ６を含んでいる。また、ノードＮ０，Ｎ１，Ｎ２，Ｎ３，Ｎ４，Ｎ５及びＮ６には、移動位置「Phome」、「P1,-50」、「P1」、「P3(1),-50」、「P3(1)」、「P2」及び「P3(2),-50」がそれぞれ割り当てられている。また、枝Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｂ５及びＢ６には、信号条件「Mov」、「Mvs」、「Mov」、「Mov/H2 close」、「Mvs/H2 close」及び「Mov/Y1000 Off/X1000 On」がそれぞれ設定されている。
【００８８】
復帰軌跡ツリー設定部１５は、設定画面Ｓを参照して作業者が行った操作にしたがって第２の処理を行う。
【００８９】
設定画面Ｓは、ツリーキャンパスウインドウＷ１、命令選択ウインドウＷ２、信号条件ウインドウＷ３、移動位置一覧ウインドウＷ４及び追加ボタンＢを含む。
【００９０】
ツリーキャンパスウインドウＷ１は、復帰軌跡ツリーＴを表示する。また、ツリーキャンパスウインドウＷ１は、追加される子ノードＮ７が接続される親ノードＮ６を選択するために用いられる。選択された親ノードＮ６は、強調表示される。
【００９１】
命令選択ウインドウＷ２は、追加される枝Ｂ７に設定される移動条件「Mvs/Y1000 Off/X1000 On」に含まれる移動命令種別「Mvs」を設定するために用いられる。命令選択ウインドウＷ２は、その際に、複数の移動命令種別の候補Ｃ２を表示する。復帰軌跡ツリー設定部１５は、表示された複数の移動命令種別の候補Ｃ２を参照して作業者が行った選択操作にしたがって、複数の移動命令種別の候補Ｃ２から選択された移動命令種別「Mvs」を設定する。選択された移動命令種別「Mvs」は、強調表示される。複数の移動命令種別の候補Ｃ２に目標位置以外の設定項目を必要とする移動命令種別の候補が含まれる場合は、設定画面Ｓが、当該設定項目を追加するために用いられる表示要素を含んでもよい。復帰軌跡ツリー設定部１５が、作業者が行った直接入力操作にしたがって、直接入力された移動命令種別「Mvs」を設定してもよい。
【００９２】
信号条件ウインドウＷ３は、枝Ｂ７に設定される移動条件「Mvs/Y1000 Off/X1000 On」に含まれる信号条件「Y1000 Off/X1000 On」を設定するために用いられる。信号条件ウインドウＷ３は、その際に、複数の信号条件の候補Ｃ３を表示する。復帰軌跡ツリー設定部１５は、表示された複数の信号条件の候補Ｃ３を参照して作業者が行った選択操作にしたがって、複数の信号条件の候補Ｃ３から選択された信号条件「Y1000 Off/X1000 On」を設定する。選択された信号条件「Y1000 Off/X1000 On」は、強調表示される。信号条件ウインドウＷ３は、出力される信号又は確認される信号に関する信号条件を設定するために用いられる。復帰軌跡ツリー設定部１５が、作業者が行った直接入力操作にしたがって、直接入力された信号条件「Y1000 Off/X1000 On」を設定してもよい。
【００９３】
移動位置一覧ウインドウＷ４は、子ノードＮ７に割り当てられる移動位置「P3(2)」を設定するために用いられる。移動位置一覧ウインドウＷ４は、その際に、移動位置抽出部１３により抽出された複数の移動位置の候補Ｃ４を表示する。復帰軌跡ツリー設定部１５は、表示された複数の移動位置の候補Ｃ４を参照して作業者が行った選択操作にしたがって、複数の移動位置の候補Ｃ４から選択された移動位置「P3(2)」を設定する。選択された移動位置「P3(2)」は、強調表示される。移動位置一覧ウインドウＷ４は、複数のステータスＤ４、複数の行数Ｅ４、及び複数の命令Ｆ４を表示する。表示される複数のステータスＤ４は、それぞれ、複数の移動位置の候補Ｃ４のステータスである。表示される複数の行数Ｅ４は、それぞれ、ロボットプログラム本体Ｐ２において複数の移動位置の候補Ｃ４が記述された行数である。表示される複数の命令Ｆ４は、それぞれ、複数の移動位置の候補Ｃ４を目標位置として含む移動命令に含まれる移動命令種別である。移動位置の候補のステータスは、当該移動位置が原点である場合は、「原点」となる。移動位置の候補のステータスは、当該移動位置が既に割り当てられている場合は、「済」となる。また、当該移動位置の候補のステータスは、移動位置が未だ割り当てられていない場合は、「未」となる。復帰軌跡ツリー設定部１５が、作業者が行った直接入力操作にしたがって、直接入力された移動位置「P3(2)」を設定してもよい。
【００９４】
作業者は、追加ボタンＢに対して押下操作を行うことにより、ツリーキャンパスウインドウＷ１の内部の破線に囲まれる領域範囲に描かれる子ノードＮ７等を復帰軌跡ツリーＴに追加することができる。
【００９５】
１．８  原点復帰命令部
原点復帰命令部１２は、図３に図示されるように、原点復帰命令受信部１６、対応ノード判定部１７及び原点復帰移動部１８を備える。
【００９６】
原点復帰命令受信部１６は、原点復帰命令を受信する。原点復帰命令は、外部から送信される。原点復帰命令は、例えば、作業者による入力により、又はロボット１００を備える装置を制御するコントローラとの通信により、原点復帰命令部１２に送信される。
【００９７】
原点復帰命令受信部１６は、原点復帰命令を受信するのに連動して、対応ノード判定要求を対応ノード判定部１７に出力する。
【００９８】
対応ノード判定部１７は、設定された復帰軌跡ツリーＴに含まれる、ロボット１００の現在位置に対応する移動位置が割り当てられた対応ノードを判定する。対応ノード判定部１７は、送信された対応ノード判定要求を受信するのに連動して、対応ノードを判定する。対応ノード判定部１７は、その際に、ロボットコントローラ１１３からロボット１００の現在位置を取得する。また、対応ノード判定部１７は、取得したロボット１００の現在位置を、復帰軌跡ツリーＴに含まれる各ノードに割り当てられた移動位置と比較する。また、対応ノード判定部１７は、ロボット１００の現在位置と移動位置との差が予め設定された値以下である場合に、当該移動位置が割り当てられたノードが対応ノードであると判定する。予め設定される値は、例えば、ロボット本体１１１に備えられるモータに駆動電力を供給することを停止してからロボット本体１１１が機械的なブレーキにより停止するまでにロボット本体１１１が移動する距離と必要なマージンとの和である。
【００９９】
原点復帰移動部１８は、設定された復帰軌跡ツリーＴに含まれる、対応ノード及び対応ノードの親ノードを互いに接続する枝に設定された移動条件に含まれる移動命令にしたがってロボット１００を移動させてロボット１００を原点に復帰させる。原点復帰移動部１８は、その際に、枝に設定された移動条件に含まれる信号条件が満たされている場合は、当該移動条件にしたがってロボット１００を移動させることを開始するが、枝に設定された移動条件に含まれる信号条件が満たされていない場合は、当該移動条件にしたがってロボット１００を移動させることを開始しない。
【０１００】
図６は、実施の形態１の原点復帰装置により行われる原点復帰処理の流れを示すフローチャートである。
【０１０１】
原点復帰移動部１８は、原点復帰処理を行う際に、図６に図示されるステップＳ１０１からＳ１０７までを実行する。
【０１０２】
ステップＳ１０１においては、原点復帰移動部１８は、対応ノードの親ノードに割り当てられた移動位置を取得する。また、原点復帰移動部１８は、対応ノード及び対応ノードの親ノードを互いに接続する枝に設定された移動条件を取得する。復帰軌跡ツリーＴが図４に図示される復帰軌跡ツリーＴであり、対応ノードが図４に図示されるノードＮ７である場合は、取得される移動位置は、移動位置「P3(2),-50」であり、取得される移動条件は、移動条件「Mvs/Y1000 Off/X1000 On」である。
【０１０３】
続くステップＳ１０２においては、原点復帰移動部１８は、対応ノードが根ノードＮ０であるか否かを判定する。対応ノードが根ノードＮ０であると判定された場合は、ロボット１００が既に原点に復帰しているため、原点復帰処理が終了する。一方、対応ノードが根ノードＮ０でないと判定された場合は、ステップ１０３が実行される。復帰軌跡ツリーＴが図４に示される復帰軌跡ツリーＴであり、対応ノードが図４に示されるノードＮ７である場合は、ノードＮ７が根ノードＮ０でないため、ステップＳ１０３が実行される。
【０１０４】
続くステップＳ１０３においては、原点復帰移動部１８は、対応ノード及び対応ノードの親ノードを互いに接続する枝に設定された移動条件に信号条件が含まれるか否かを判定する。信号条件が含まれると判定された場合は、ステップＳ１０４及びＳ１０５が順次に実行された後にステップＳ１０６が実行される。信号条件が含まれないと判定された場合は、ステップＳ１０４及びＳ１０５が実行されることなくステップＳ１０６が実行される。復帰軌跡ツリーＴが図４に示される復帰軌跡ツリーＴであり、対応ノードが図４に示されるノードＮ７である場合は、枝Ｂ７に設定された移動条件「Mvs/Y1000 Off/X1000 On」に信号条件「Y1000 Off/X1000 On」が含まれるため、ステップＳ１０４及びＳ１０５が順次に実行された後にステップＳ１０６が実行される。
【０１０５】
ステップＳ１０４においては、原点復帰装置１は、ロボットコントローラ１１３の内部の内部変数を変更する指令をロボットコントローラ１１３に出力する。変更される内部変数は、一般の内部変数であり、ロボットコントローラ１１３からロボットコントローラ１１３に接続された外部機器に出力される信号に記載される内部変数であってもよいし、そうでなくてもよい。変更される内部変数が信号に記載される内部変数である場合は、変更される内部変数は、信号条件においてスラッシュ「/」の前に記述された信号名を有する信号に記載される内部変数である。ステップＳ１０４においては、原点復帰装置１は、基本的には、当該指令を一度送るのみで、通信エラー等に備えてロボットコントローラ１１３が指令を受け付けたことを確認するが、内部変数が実際に変更されたことを確認しない。内部変数が実際に変更されたことが確認されないのは、変更された内部変数がロボットコントローラ１１３の内部の他の処理により上書きされる可能性があるため、内部変数が実際に変更されたことを確認することが困難であるためである。例えば、内部変数が一連の処理を一度だけ呼び出すためのフラグに対応する場合は、内部変数が変更された状態が維持される時間は一瞬であるため、内部変数が実際に変更されたことを確認することは困難である。実施の形態１においては、変更される内部変数は、ロボットコントローラ１１３からロボット１００に出力される信号に記載される内部変数であるとする。このため、原点復帰移動部１８は、ロボットコントローラ１１３により出力される信号を指定された状態にするために、当該信号に記載される内部変数を変更する指令をロボットコントローラ１１３に出力する。復帰軌跡ツリーＴが図４に図示される復帰軌跡ツリーＴであり、対応ノードが図４に図示されるノードＮ７である場合は、原点復帰移動部１８は、信号番号「Y1000」を有する信号をオフにするために、当該信号に記載される内部変数を変更する指令をロボットコントローラ１１３に出力する。ステップＳ１０４において出力される指令が複数の指令であってもよい。
【０１０６】
ステップＳ１０５においては、原点復帰装置１は、ロボット１００を制御するロボットコントローラ１１３の内部の内部変数が指定された状態となっておりロボット１００が指定された状態となっていることを確認するまで待機する。確認される内部変数は、一般の内部変数であり、ロボットコントローラ１１３に接続された外部機器からロボットコントローラ１１３に入力される信号に記載された内部変数であってもよいし、そうでなくてもよい。確認される内部変数がロボットコントローラ１１３に接続された外部機器からロボットコントローラ１１３に入力される信号に記載された内部変数である場合は、確認される内部変数は、信号条件においてスラッシュ「/」の後に記述された信号名を有する信号に記載された内部変数である。一般的には、ロボット１００に動作指令を出力してからロボット１００の動作が完了するまでの時間は、ロボットコントローラ１１３の演算周期より長い。また、ロボット１００の動作が完了したことは、多くの場合は、インポジション信号、光学式センサ等の外部機器からロボットコントローラ１１３に入力される信号により確認される。実施の形態１においては、確認される内部変数は、ロボットコントローラ１１３に接続された外部機器からロボットコントローラ１１３に入力される信号に記載された内部変数であるとする。このため、原点復帰移動部１８は、ロボットコントローラ１１３に入力される信号が指定された状態となっておりロボット１００が指定された状態となっていることを確認するために、当該信号に記載された内部変数が指定された状態となっていることを確認する。復帰軌跡ツリーＴが図４に図示される復帰軌跡ツリーＴであり、対応ノードが図４に図示されるノードＮ７である場合は、原点復帰移動部１８は、信号番号「X1000」を有する信号がオンになっていることを確認するために、当該信号に記載された内部変数が指定された状態となっていることを確認する。ステップＳ１０５において確認される信号が複数の信号の組み合わせであってもよい。
【０１０７】
ロボット１００が利用される場合は、ロボットハンド１１２を開閉する指令を出力する処理とロボットハンド１１２が開閉したことを確認する処理とが一連の処理となることが多い。このため、信号条件においては、ロボットハンド１１２を開閉する指令を出力するために変更される内部変数が記述される信号名と、ロボットハンド１１２が開閉したことを確認するために確認される内部変数が記述された信号名と、が、まとめて記述される。信号条件「H2 close」は、その一例であり、信号条件「H2 close/H2 close」に含まれる重複した記述を省略したものとなっている。ただし、信号条件「H2 close/H2 close」においてスラッシュ「/」の前に記述された「H2 close」は、ロボットハンド１１２を閉じる指令を出力するために変更される内部変数が記述される信号名である。また、信号条件「H2 close/H2 close」においてスラッシュ「/」の後に記述された「H2 close」は、ロボットハンド１１２が閉じたことを確認するために確認される内部変数が記述された信号名である。したがって、信号条件「H2 close/H2 close」においてスラッシュ「/」の前後に記述されたふたつの「H2 close」は、互いに異なる信号の信号名である。
【０１０８】
ステップＳ１０６においては、原点復帰移動部１８は、対応ノード及び対応ノードの親ノードを互いに接続する枝に設定された移動条件に含まれる移動命令種別、及び対応ノードの親ノードに割り当てられている移動位置を含む移動命令をロボットコントローラ１１３に出力する。復帰軌跡ツリーＴが図４に示される復帰軌跡ツリーＴであり、対応ノードが図４に示されるノードＮ７である場合は、出力される移動命令は、枝Ｂ７に設定された移動条件「Mvs/Y1000 Off/X1000 On」に含まれる移動命令種別「Mvs」、及びノードＮ６に割り当てられた移動位置「P3(2),-50」を含む移動命令「Mvs P3(2),-50」である。
【０１０９】
続くステップＳ１０７においては、原点復帰移動部１８は、出力した移動命令にしたがってロボット１００が移動したことを確認する。
【０１１０】
原点復帰移動部１８がステップＳ１０１からステップＳ１０７までを実行することにより、ロボット本体１１１は、既に原点に復帰している場合を除いて、対応ノードに割り当てられている移動位置から対応ノードの親ノードに割り当てられている移動位置まで移動する。そして、原点復帰移動部１８がステップＳ１０１からステップＳ１０７までを再び実行することにより、当該対応ノードの親ノードは、新たな対応ノードとなり、ロボット本体１１１は、既に原点に復帰している場合を除いて、新たな対応ノードに割り当てられている移動位置から新たな対応ノードの親ノードに割り当てられている位置まで移動する。これらにより、ロボット１００は、対応ノードに割り当てられている移動位置から根ノードＮ０に割り当てられている原点まで移動する。復帰軌跡ツリーＴが図４に示される復帰軌跡ツリーＴであり、対応ノードが図４に示されるノードＮ７である場合は、ロボット１００は、ノードＮ７に割り当てられている移動位置「P3(2)」から、ノードＮ６に割り当てられている移動位置「P3(2),-50」及びノードＮ５に割り当てられている移動位置「P2」を順次に経由して根ノードＮ０に割り当てられている原点「Phome」まで移動する。ただし、ノードＮ５及びノードＮ０を互いに接続する枝Ｂ３に設定された移動条件「Mov」は信号条件を含まないため、ロボット１００がノードＮ５に割り当てられている移動位置「P2」からノードＮ０に割り当てられている原点「Phome」に移動する際には、ステップＳ１０４及びＳ１０５は実行されない。
【０１１１】
１．９  変形例
複数のノードＮ０，Ｎ１，Ｎ２，Ｎ３，Ｎ４，Ｎ５，Ｎ６及びＮ７に含まれるノードに割り当てられた移動位置に含まれる教示位置が配列を構成する要素である場合は、教示位置に含まれるインデックスがワイルドカードとされてもよい。例えば、ノードＮ６に割り当てられ移動位置「P3(2),-50」に含まれる教示位置P3(2)のインデックス「2」がワイルドカードとされてもよい。また、ノードＮ７に割り当てられ移動位置「P3(2)」に含まれる教示位置P3(2)のインデックス「2」がワイルドカードとされてもよい。インデックスがワイルドカードとされた教示位置は、インデックスが明記されているインデックスが「1」とされた教示位置以外の任意の教示位置である。ただし、子ノードに割り当てられた移動位置に含まれる教示位置のインデックス、及び子ノードの親ノードに割り当てられた移動位置に含まれる教示位置のインデックスがいずれもワイルドカードとされており、ロボット１００が前者の移動位置から後者の移動位置へ移動する場合は、前者の教示位置及び後者の教示位置は、同じ教示位置である。子ノードに割り当てられた移動位置に含まれる教示位置のインデックスがワイルドカートとされておらず、親ノードに割り当てられた移動位置に含まれる教示位置のインデックスがワイルドカードとされており、ロボット１００が前者の移動位置から後者の移動位置へ移動する場合は、後者の教示位置は、インデックスが最小の番号とされた教示位置とされる。
【０１１２】
図７及び図８は、実施の形態１の原点復帰装置により復帰軌跡ツリーが設定される際に用いられる入力の例を示す図である。
【０１１３】
復帰軌跡ツリー設定部１５において、ＧＵＩを提供する設定画面Ｓを用いて復帰軌跡ツリーＴを設定することに代えて、他の方法により復帰軌跡ツリーＴを設定することが行われてもよい。例えば、復帰軌跡ツリー設定部１５において、図７に示される入力Ｉ１又は図８に示される入力Ｉ２を用いて復帰軌跡ツリーＴを設定することが行われてもよい。図７に図示される入力Ｉ１は、表計算ソフトウェアにより作成される表である。図８に図示される入力Ｉ２は、テキストである。
【０１１４】
１．１０  原点復帰装置を構成するコンピュータ
図９は、実施の形態１の原点復帰装置を構成することができるコンピュータを模式的に図示するブロック図である。
【０１１５】
原点復帰装置１は、図９に図示されるコンピュータ１０００により構成することができる。
【０１１６】
コンピュータ１０００は、図９に図示されるように、プロセッサ１０２０、メモリ１０２２及びストレージ１０２４を備える。
【０１１７】
ストレージ１０２４には、プログラム１０４０がインストールされる。プログラム１０４０のインストールは、外部記録媒体１０６０から読み出したプログラム１０４０をストレージ１０２４に書き込むことにより行われてもよいし、ネットワーク１０６２を経由して受信したプログラム１０４０をストレージ１０２４に書き込むことにより行われてもよい。
【０１１８】
プロセッサ１０２０は、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、デジタル信号処理装置（ＤＳＰ）等である。メモリ１０２２は、ランダムアクセスメモリ（ＲＡＭ）等である。ストレージ１０２４は、ハードディスクドライブ、ソリッドステートドライブ、ＲＡＭディスク等である。外部記録媒体１０６０は、コンパクトディスク（ＣＤ）、デジタル多目的ディスク（ＤＶＤ）、ブルーレイディスク（ＢＤ）、ユニバーサルシリアルバス（ＵＳＢ）メモリ等である。
【０１１９】
プログラム１０４０は、コンピュータ１０００を原点復帰装置１として動作させるためのプログラムである。
【０１２０】
コンピュータ１０００においては、ストレージ１０２４にインストールされたプログラム１０４０がメモリ１０２２にロードされ、ロードされたプログラム１０４０がプロセッサ１０２０により実行される。これにより、原点復帰装置１に備えられる要素が構成され、コンピュータ１０００が原点復帰装置１として動作する。原点復帰装置１に備えられる要素の全部又は一部がプログラムを実行しないハードウェアにより構成されてもよい。
【０１２１】
メモリ１０２２、ストレージ１０２４及び外部記録媒体１０６０は、プログラム１０４０を記録した非一時的でコンピュータ読み取り可能な記録媒体である。
【０１２２】
１．１１  実施の形態１の効果
実施の形態１によれば、ロボット１００を原点以外の移動位置から原点に復帰させる際に経由する移動位置を減らすことができる。また、原点以外のすべての移動位置についてロボット１００を原点に復帰させるためのプログラミング等の事前準備を移動位置毎に個別で行う必要がなくなる。これにより、ロボット１００を効率的に原点に復帰させるための事前準備を簡単に行うことができる。
【０１２３】
２  実施の形態２
図１０は、実施の形態２の原点復帰装置を模式的に図示するブロック図である。図１１は、実施の形態２の原点復帰装置により設定される原点復帰プログラムの例を示すフローチャートである。
【０１２４】
図１０に図示される実施の形態２の原点復帰装置２は、図３に図示される実施の形態１の原点復帰装置１と主に下述する点で相違する。下述されない点については、原点復帰装置１において採用される構成と同様の構成が原点復帰装置２においても採用される。
【０１２５】
原点復帰装置２に備えられる復帰軌跡ツリー設定部１５は、図１０に図示されるように、複数の復帰軌跡ツリーＴ及びＴ’を設定する。第１の復帰軌跡ツリーＴは、図１１に図示されるように、原点復帰装置１により生成される復帰軌跡ツリーＴと同じ復帰軌跡ツリーであり、原点Phomeが割り当てられた根ノードＮ０を含む。第２の復帰軌跡ツリーＴ’は、図１１に図示されるように、原点復帰装置１により生成される復帰軌跡ツリーＴと異なる復帰軌跡ツリーであり、原点Phomeと異なるサブゴール位置Pkariが割り当てられた根ノードＮ０’を含む。サブゴール位置Pkariは、ロボットハンド１１２により把持されたワークが仮置きされるワーク仮置き位置である。復帰軌跡ツリー生成部１１が、原点設定部１４及び復帰軌跡ツリー設定部１５に処理を繰り返させることにより、複数の復帰軌跡ツリーＴ及びＴ’を生成してもよい。
【０１２６】
原点復帰装置２は、図１０に図示されるように、原点復帰プログラム設定部２１をさらに備える。
【０１２７】
原点復帰プログラム設定部２１は、原点復帰プログラムＰＲＧを設定する。原点復帰プログラム設定部２１は、その際に、複数の復帰軌跡ツリーＴ及びＴ’を組み合わせて原点復帰プログラムＰＲＧを設定する。
【０１２８】
設定される原点復帰プログラムＰＲＧは、図１２に示されるように、開始箇所「Start」、条件分岐Ｓ２０１、第１のブロックＳ２０３、第２のブロックＳ２０２並びに終了箇所「End」を含む。
【０１２９】
条件分岐Ｓ２０１においては、ロボットコントローラ１１３により管理される信号が設定された状態であるという条件が満たされるか否かに応じて処理が分岐させられる。条件分岐Ｓ２０１においては、ロボットコントローラ１１３により管理され信号番号「X9000」を有する信号が、ロボットハンド１１２がワークを把持していることを示す状態「0」であるという条件が満たされるか否かに応じて処理が分岐させられる。ロボットコントローラ１１３以外のコントローラにより管理される信号が設定された状態であるという条件が満たされるか否かに応じて処理が分岐させられてもよい。ロボットコントローラ１１３以外のコントローラは、例えば、ロボット１００を備える生産設備に備えられる装置において、当該装置に備えられる機器を制御するコントローラである。条件分岐Ｓ２０１は、条件が満たされない場合の第１の分岐先、及び条件が満たされる場合の第２の分岐先を有する。第２の分岐先は、第１の分岐先と異なる分岐先である。
【０１３０】
第１のブロックＳ２０３及び第２のブロックＳ２０２は、第１の分岐先及び第２の分岐先にそれぞれ配置される。第１のブロックＳ２０３及び第２のブロックＳ２０２は、第１の復帰軌跡ツリーＴ及び第２の復帰軌跡ツリーＴ’をそれぞれ指定する。
【０１３１】
原点復帰装置２に備えられる原点復帰命令部１２は、図１０に図示されるように、原点復帰処理要求部２２をさらに備える。
【０１３２】
原点復帰処理要求部２２は、原点復帰プログラムＰＲＧを実行する。
【０１３３】
原点復帰処理要求部２２は、原点復帰命令受信部１６により原点復帰命令が受信されたのに連動して、開始箇所「Start」において処理を開始する。
【０１３４】
処理を開始した原点復帰処理要求部２２は、条件分岐Ｓ２０１において、信号番号「X9000」を有する信号が、ロボットハンド１１２がワークを把持していることを示す状態「0」であるという条件が満たされているか否かを判定する。
【０１３５】
原点復帰処理要求部２２は、条件が満たされていると判定した場合は、ブロックＳ２０２を実行する。原点復帰処理要求部２２は、ブロックＳ２０２を実行する際に、第２の復帰軌跡ツリーＴ’にしたがって処理を行うことを原点復帰移動部１８に要求する。第２の復帰軌跡ツリーＴ’にしたがって処理を行うことを要求された原点復帰移動部１８は、第２の復帰軌跡ツリーＴ’にしたがってワーク仮置き位置移動処理を行う。原点復帰移動部１８は、ワーク仮置き位置移動処理を行う際に、第１の復帰軌跡ツリーＴに代えて第２の復帰軌跡ツリーＴ’にしたがって処理を行う点を除いて実施の形態１において行われる原点復帰処理と同様の処理を行う。これにより、ロボット１００は、ワーク仮置き位置Pkariまで移動する。
【０１３６】
また、原点復帰処理要求部２２は、条件が満たされていないと判定した場合は、ブロックＳ２０３を実行する。また、原点復帰処理要求部２２は、ブロックＳ２０２を実行した後に、ブロックＳ２０３を実行する。原点復帰処理要求部２２は、ブロックＳ２０３を実行する際に、第１の復帰軌跡ツリーＴにしたがって処理を行うことを原点復帰移動部１８に要求する。第１の復帰軌跡ツリーＴにしたがって処理を行うことを要求された原点復帰移動部１８は、第１の復帰軌跡ツリーＴにしたがって実施の形態１において行われる原点復帰処理と同様の処理を行う。これにより、ロボット１００は、原点Phomeまで移動する。ブロックＳ２０２を実行した後にブロックＳ２０３が実行される場合は、原点復帰移動部１８は、ワーク仮置き位置Pkariに対応する移動位置が割り当てられたノードから処理を開始する。
【０１３７】
原点復帰移動部１８が第１の復帰軌跡ツリーＴにしたがって処理を行うことによりロボット１００が原点に復帰した後は、原点復帰処理要求部２２は、終了箇所「End」において指定された完了条件に到達して終了箇所「End」において処理を完了する。
【０１３８】
実施の形態２は、実施の形態１の効果と同様の効果を有する。
【０１３９】
また、実施の形態２によれば、ロボットコントローラ１１３又はロボットコントローラ１１３以外のコントローラにより管理される信号の状態にしたがって、実行される処理を変化させることができる。これにより、複雑な原点復帰処理を行うことができる。
【０１４０】
３  実施の形態３
図１２は、実施の形態３の原点復帰装置を模式的に図示するブロック図である。図１３及び図１４は、実施の形態３の原点復帰装置により設定される原点復帰プログラムの例を示すフローチャートである。
【０１４１】
図１２に図示される実施の形態３の原点復帰装置３は、図１０に図示される実施の形態２の原点復帰装置２と主に下述する点で相違する。下述されない点については、原点復帰装置２において採用される構成と同様の構成が原点復帰装置３においても採用される。
【０１４２】
原点復帰装置３は、図１２に図示されるように、コントローラプログラム追加部３２をさらに備える。
【０１４３】
原点復帰装置３に備えられる原点復帰プログラム設定部２１は、原点復帰プログラムＰＲＧを設定する際に、コントローラプログラム追加部３２を呼び出す。呼び出されたコントローラプログラム追加部３２は、図１３に示されるブロックＳ３０１又は図１４に示されるブロックＳ３０２を原点復帰プログラムＰＲＧに追加する。ブロックＳ３０１は、コントローラプログラムを含む。ブロックＳ３０２は、コントローラプログラムを呼び出す命令を含む。
【０１４４】
原点復帰装置３に備えられる原点復帰命令部１２は、コントローラプログラム命令部３４をさらに備える。
【０１４５】
原点復帰処理要求部２２は、ブロックＳ２０２を実行した後であってブロックＳ２０３を実行する前に、ブロックＳ３０１又はＳ３０２を実行する。原点復帰処理要求部２２は、ブロックＳ３０１又はＳ３０２を実行する際に、コントローラプログラム命令部３４を呼び出す。ブロックＳ３０１が実行される際に呼び出されたコントローラプログラム命令部３４は、ブロックＳ３０１に含まれるコントローラプログラムを実行することをコントローラに命令する。ブロックＳ３０２が実行される際に呼び出されたコントローラプログラム命令部３４は、ブロックＳ３０２に含まれる命令により呼び出されるコントローラプログラムを実行することをコントローラに命令する。これにより、コントローラプログラム命令部３４は、ブロックＳ３０１又はＳ３０２が実行される際にコントローラプログラムを実行することをコントローラに命令する。
【０１４６】
コントローラプログラムは、ロボットコントローラ１１３、又はロボットコントローラ１１３以外のコントローラにより実行される。ロボットコントローラ１１３以外のコントローラは、例えば、ロボット１００を備える生産設備に備えられる装置において、当該装置に備えられる機器を制御するコントローラである。コントローラプログラムを実行するコントローラは、原点復帰プログラムＰＲＧの内部において指定されてもよいし、原点復帰プログラムＰＲＧ以外のシステム構成情報の内部において指定されてもよい。コントローラプログラムは、原点復帰装置３の内部において記述されてもよいし、コントローラプログラムを記述する専用のソフトウェアにより記述されてもよい。コントローラプログラムを記述する専用のソフトウェアにより記述されたコントローラプログラムは、原点復帰装置３に読み込まれる。コントローラプログラムは、コントローラにより実行されるプログラム本体部であってもよい。
【０１４７】
実施の形態３は、実施の形態２の効果と同様の効果を有する。
【０１４８】
加えて、実施の形態３によれば、原点復帰プログラムＰＲＧに含まれるコントローラプログラム又は原点復帰プログラムＰＲＧに含まれる命令により呼び出されるコントローラプログラムがコントローラにより実行される。これにより、原点復帰処理が行われている間にコントローラによる制御を行うことができる。
【０１４９】
４  実施の形態４
図１５は、実施の形態４の原点復帰装置を模式的に図示するブロック図である。
【０１５０】
図１５に図示される実施の形態４の原点復帰装置４は、図３に図示される実施の形態１の原点復帰装置１と主に下述する点で相違する。下述されない点については、原点復帰装置１において採用される構成と同様の構成が原点復帰装置４においても採用される。
【０１５１】
原点復帰装置４は、図１５に図示されるように、最終移動命令保存部４２をさらに備える。
【０１５２】
最終移動命令保存部４２は、ロボット１００において最後に実行された最終移動命令を保存する。最終移動命令保存部４２は、最終移動命令が実行される際に最終移動命令を保存する。保存される最終移動命令は、移動開始位置、移動目標位置、移動命令種別、移動命令が必要とする引数を示す引数情報等を含む。最終移動命令保存部４２は、原点復帰命令受信部１６が原点復帰命令を受信する可能性がある期間に最終移動命令を保存する。このため、最終移動命令保存部４２は、原点復帰処理が行われている期間に最終移動命令を保存する場合もあるし、原点復帰処理が行われていない期間に最終移動命令を保存する場合もある。
【０１５３】
原点復帰装置４に備えられる原点復帰命令部１２は、図１５に図示されるように、移動開始位置復帰部４１をさらに備える。
【０１５４】
移動開始位置復帰部４１は、ロボット１００が移動中に停止した後に原点復帰命令受信部１６が原点復帰命令を受信したが対応ノード判定部１７が対応ノードを判定することができない場合に呼び出される。呼び出された移動開始位置復帰部４１は、最終移動命令保存部４２に保存された最終移動命令を取得する。また、移動開始位置復帰部４１は、取得した最終移動命令から最終移動命令が実行された際のロボット１００の軌跡を計算する。また、移動開始位置復帰部４１は、計算した軌跡上の、ロボット１００の現在位置の最近傍にある最近傍位置を計算する。また、移動開始位置復帰部４１は、ロボット１００の現在位置から、計算した最近傍位置を経由して、最終移動命令の移動開始位置までロボット１００を移動させてロボット１００を移動開始位置に復帰させる。移動開始位置復帰部４１は、最近傍位置から最終移動命令の移動開始位置までロボット１００を移動させる際に、計算した軌跡に沿って計算した軌跡を逆に辿ってロボット１００を移動させる。最終移動命令の移動開始位置は、原点復帰処理の対象となっている場合は、復帰軌跡ツリーＴに含まれるノードに割り当てられている。このため、ロボット１００が最終移動命令の移動開始位置まで移動した後は、実施の形態１において行われる原点復帰処理と同様に原点復帰処理を行うことができる。
【０１５５】
最終移動命令は、望ましくは、不揮発性メモリに保存される。これにより、電源が遮断される事態が発生した後においても最終移動命令を取得することができる。また、最終移動命令は、望ましくは、ロボット１００が移動を開始する前に保存される。最終移動命令保存部４２が、ロボット１００が移動を完了したことを示す完了情報を保存してもよい。また、対応ノード判定部１７が、保存された完了情報を取得することができた場合、すなわち、ロボット１００が移動を完了している場合に、最終移動命令の移動目標位置を現在位置として扱ってもよい。
【０１５６】
実施の形態４は、実施の形態１の効果と同様の効果を有する。
【０１５７】
加えて、実施の形態４によれば、ロボット１００が移動中に停止した後にロボット１００を移動開始位置を経由して原点に復帰させることができる。
【０１５８】
５  実施の形態５
図１６は、実施の形態５の原点復帰装置を模式的に図示するブロック図である。
【０１５９】
図１６に図示される実施の形態５の原点復帰装置５は、図３に図示される実施の形態１の原点復帰装置１と主に下述する点で相違する。下述されない点については、原点復帰装置１において採用される構成と同様の構成が原点復帰装置５においても採用される。
【０１６０】
原点復帰装置５に備えられる復帰軌跡ツリー生成部１１は、図１６に図示されるように、候補生成部５１をさらに備える。
【０１６１】
候補生成部５１は、復帰軌跡ツリーＴの候補を生成する。候補生成部５１は、その際に、ロボットプログラムＰから復帰軌跡ツリーＴの候補を生成する。例えば、候補生成部５１は、ロボットプログラム本体Ｐ２を解析して移動命令、補助命令等の呼び出し順序に基づいて復帰軌跡ツリーＴの候補を生成する。候補生成部５１が、他のロボットプログラム及び他の復帰軌跡ツリーから復帰軌跡ツリーＴの候補を生成してもよい。また、候補生成部５１が、移動位置抽出部１３により抽出された複数の移動位置の間の移動を３次元（３Ｄ）シミュレーション環境において衝突検知と組み合わせて実行して復帰軌跡ツリーＴの候補を生成してもよい。また、候補生成部５１が、これらの方式を組み合わせた方式により復帰軌跡ツリーＴの候補を生成してもよい。また、候補生成部５１は、生成した復帰軌跡ツリーＴの候補を作業者に提示する。
【０１６２】
復帰軌跡ツリー設定部１５は、生成された復帰軌跡ツリーＴの候補を、設定する復帰軌跡ツリーＴとすることができる。
【０１６３】
実施の形態５は、実施の形態１の効果と同様の効果を有する。
【０１６４】
また、実施の形態５によれば、復帰軌跡ツリーＴを容易に設定することができる。
【０１６５】
なお、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。
【０１６６】
実施の形態は詳細に説明されたが、上記した説明は、すべての局面において、例示であって、実施の形態がそれに限定されるものではない。例示されていない無数の変形例が、想定され得るものと解される。
【符号の説明】
【０１６７】
１，２，３，４，５  原点復帰装置、１１  復帰軌跡ツリー生成部、１２  原点復帰命令部、１３  移動位置抽出部、１４  原点設定部、１５  復帰軌跡ツリー設定部、１６  原点復帰命令受信部、１７  対応ノード判定部、１８  原点復帰移動部、２１  原点復帰プログラム設定部、２２  原点復帰処理要求部、３２  コントローラプログラム追加部、３４  コントローラプログラム命令部、４１  移動開始位置復帰部、４２  最終移動命令保存部、５１  候補生成部、１００  ロボット、Ｐ  ロボットプログラム、Ｓ２０１  条件分岐、Ｓ２０２，Ｓ２０３，Ｓ３０１，Ｓ３０２  ブロック、Ｔ，Ｔ’  復帰軌跡ツリー、Ｎ０，Ｎ１，Ｎ２，Ｎ３，Ｎ４，Ｎ５，Ｎ６，Ｎ７，Ｎ０’  ノード、Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｂ５，Ｂ６，Ｂ７  枝、ＰＲＧ  原点復帰プログラム。
【要約】
ロボットを効率的に原点に復帰させるための事前準備を簡単に行うことができる原点復帰装置を提供する。原点復帰装置において、移動位置抽出部は、ロボットプログラムから複数の移動位置を抽出する。原点設定部は、複数の移動位置のいずれかを原点に設定する。復帰軌跡ツリー設定部は、復帰軌跡ツリーを設定する。復帰軌跡ツリーは、複数のノードを含む。複数のノードには、複数の移動位置がそれぞれ割り当てられる。復帰軌跡ツリーは、子ノード及び子ノードの親ノードを互いに接続する枝を含む。枝には、移動条件が設定される。根ノードには、原点が割り当てられる。対応ノード判定部は、ロボットの現在位置に対応する移動位置が割り当てられた対応ノードを判定する。原点復帰移動部は、復帰軌跡ツリーに含まれる、対応ノード及び対応ノードの親ノードを互いに接続する枝に設定された移動条件にしたがってロボットを移動させてロボットを原点に復帰させる。【図１】
0006758543.tif 000002
【図２】
0006758543.tif 000003
【図３】
0006758543.tif 000004
【図４】
0006758543.tif 000005
【図５】
0006758543.tif 000006
【図６】
0006758543.tif 000007
【図７】
0006758543.tif 000008
【図８】
0006758543.tif 000009
【図９】
0006758543.tif 000010
【図１０】
0006758543.tif 000011
【図１１】
0006758543.tif 000012
【図１２】
0006758543.tif 000013
【図１３】
0006758543.tif 000014
【図１４】
0006758543.tif 000015
【図１５】
0006758543.tif 000016
【図１６】
0006758543.tif 000017