(57)【特許請求の範囲】
【請求項１】
複数の関節を有するロボットを動作させるロボットプログラムを生成するロボットプログラム生成装置であって、
前記ロボットの各々の関節の駆動軸に対してジャークの許容値を設定する許容値設定部と、
ロボットプログラムの実行を仮想空間内でシミュレーションして、前記駆動軸の位置及びジャークを時間に関連付けて計算する軸情報計算部と、
前記軸情報計算部によって計算される前記ジャークが前記許容値を超える超過ジャークであるか否かを判定するジャーク判定部と、
前記超過ジャークが発生した駆動軸及び駆動軸の位置を特定する軸情報特定部と、
前記軸情報特定部によって特定される前記駆動軸のジャークが前記許容値以下になるように、前記超過ジャークが発生した前記駆動軸の位置の近傍の教示点を変更することによって前記ロボットプログラムを調整するロボットプログラム調整部と、を備える、ロボットプログラム生成装置。
【請求項２】
前記ロボットプログラム調整部は、前記超過ジャークが発生した前記駆動軸の位置の近傍の空間を格子状に分割して形成される格子点のうち、最もジャークが小さくなる格子点に一致するように前記教示点を変更する、請求項１に記載のロボットプログラム生成装置。
【請求項３】
前記ロボットプログラム調整部は、前記超過ジャークが発生した前記駆動軸において時間に関するジャークの変化量を低減させるように前記教示点を変更する、請求項１に記載のロボットプログラム生成装置。
【請求項４】
前記ロボット及び前記ロボットの周囲に存在する物体の三次元モデルを前記仮想空間内にそれぞれ配置し、前記シミュレーションの際に、前記ロボットと前記物体との干渉の有無を判定する干渉判定部をさらに備えており、
前記ロボットプログラム調整部は、前記ロボットと前記物体との干渉が発生しないように前記教示点を変更する、請求項１から３のいずれか１項に記載のロボットプログラム生成装置。
【請求項５】
前記ロボットプログラムを実行するのに必要な動作時間を計算する動作時間計算部をさらに備えており、
前記ロボットプログラム調整部は、前記動作時間が短縮されるように前記教示点を変更する、請求項１から４のいずれか１項に記載のロボットプログラム生成装置。
【請求項６】
前記ロボットにおいてロボットプログラムが更新可能であるか否かを判定する更新判定部と、
当該ロボットプログラム生成装置によって生成されたロボットプログラムをロボットに送信するプログラム送信部をさらに備えており、
前記プログラム送信部は、前記更新判定部によってロボットプログラムが更新可能であると判定されたときに、前記ロボットプログラムを前記ロボットに送信する、請求項１から５のいずれか１項に記載のロボットプログラム生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットを動作させるためのロボットプログラムを生成するロボットプログラム生成装置に関する。
【背景技術】
【０００２】
対象物をロボットにより搬送するのに使用されるロボットシステムにおいて、処理効率を向上させるためにロボットを高速で動作させることが望まれる。しかしながら、ロボットの動作を単純に高速化した場合、ロボットが対象物を把持する際又は解放する際に対象物が損傷する虞がある。また、ロボットが対象物を搬送途中で落下させる虞がある。そのため、対象物の損傷ないし落下が発生した場合には、操作者がロボットプログラムを変更する必要があった。
【０００３】
例えば、速度プロファイルなどに対して補間処理を実行する際に、ローパスフィルタを介在させることによって入力プロファイルを平滑化し、それによりジャークの変化を緩やかにしてロボットの動作を円滑化するようにした産業用ロボットの経路計画方法が公知である（特許文献１及び特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２４１８１１号公報
【特許文献２】特開平１１−２４９７２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、補間経路を調整してロボットの動作を円滑化したとしても、ロボットを高速で動作させたときに必ずしも常にロボットの振動が抑制されるとは限らない。そのため、実際には、操作者が試行錯誤しながらロボットプログラムを変更する必要がある。そこで、振動発生の原因の１つである駆動軸のジャークをより容易かつ確実に低減する技術が求められている。
【課題を解決するための手段】
【０００６】
本願の１番目の発明によれば、複数の関節を有するロボットを動作させるロボットプログラムを生成するロボットプログラム生成装置であって、前記ロボットの各々の関節の駆動軸に対してジャークの許容値を設定する許容値設定部と、ロボットプログラムの実行を仮想空間内でシミュレーションして、前記駆動軸の位置及びジャークを時間に関連付けて計算する軸情報計算部と、前記軸情報計算部によって計算される前記ジャークが前記許容値を超える超過ジャークであるか否かを判定するジャーク判定部と、前記超過ジャークが発生した駆動軸及び駆動軸の位置を特定する軸情報特定部と、前記軸情報特定部によって特定される前記駆動軸のジャークが前記許容値以下になるように、前記超過ジャークが発生した前記駆動軸の位置の近傍の教示点を変更することによって前記ロボットプログラムを調整するロボットプログラム調整部と、を備える、ロボットプログラム生成装置が提供される。
本願の２番目の発明によれば、１番目の発明に係るロボットプログラム生成装置において、前記ロボットプログラム調整部は、前記超過ジャークが発生した前記駆動軸の位置の近傍の空間を格子状に分割して形成される格子点のうち、最もジャークが小さくなる格子点に一致するように前記教示点を変更する。
本願の３番目の発明によれば、１番目の発明に係るロボットプログラム生成装置において、前記ロボットプログラム調整部は、前記超過ジャークが発生した前記駆動軸において時間に関するジャークの変化量を低減させるように前記教示点を変更する。
本願の４番目の発明によれば、１番目から３番目のいずれかの発明に係るロボットプログラム生成装置において、前記ロボット及び前記ロボットの周囲に存在する物体の三次元モデルを前記仮想空間内にそれぞれ配置し、前記シミュレーションの際に、前記ロボットと前記物体との干渉の有無を判定する干渉判定部をさらに備えており、前記ロボットプログラム調整部は、前記ロボットと前記物体との干渉が発生しないように前記教示点を変更する。
本願の５番目の発明によれば、１番目から４番目のいずれかの発明に係るロボットプログラム生成装置において、前記ロボットプログラムを実行するのに必要な動作時間を計算する動作時間計算部をさらに備えており、前記ロボットプログラム調整部は、前記動作時間が短縮されるように前記教示点を変更する。
本願の６番目の発明によれば、１番目から５番目のいずれかの発明に係るロボットプログラム生成装置において、前記ロボットにおいてロボットプログラムが更新可能であるか否かを判定する更新判定部と、当該ロボットプログラム生成装置によって生成されたロボットプログラムをロボットに送信するプログラム送信部をさらに備えており、前記プログラム送信部は、前記更新判定部によってロボットプログラムが更新可能であると判定されたときに、前記ロボットプログラムを前記ロボットに送信する。
【０００７】
これら及び他の本発明の目的、特徴及び利点は、添付図面に示される本発明の例示的な実施形態に係る詳細な説明を参照することによって、より明らかになるであろう。
【発明の効果】
【０００８】
本発明のロボットプログラム生成装置によれば、許容値を超える超過ジャークが発生したときに、ロボットプログラム調整部によって、超過ジャークが発生した駆動軸に対する教示点を変更し、ジャークを低減させるようにする。それにより、ロボット動作時に発生する振動の原因となるジャークが低減されるので、ロボットを高速でかつ安全に動作させられるようになる。
【図面の簡単な説明】
【０００９】
【図１】ロボットプログラム生成装置を含むロボットシステムの構成を示す図である。
【図２】仮想空間内に配置されるロボットモデルの表示例である。
【図３】一実施形態に係るロボットプログラム生成装置の機能ブロック図である。
【図４】一実施形態に係るロボットプログラム生成装置によって実行される工程を示すフローチャートである。
【図５】教示点及び教示点に従って形成される動作経路並びに超過ジャークの発生区間を示す図である。
【図６】教示点の変更範囲を示す図である。
【図７】図６の筒状空間を格子状に分割した状態を示す図である。
【図８】変更前の教示点及び変更後の教示点を示す図である。
【図９】別の実施形態に係るロボットプログラム生成装置の機能ブロック図である。
【図１０】ロボットモデルと干渉物モデルとが互いに重なり合っている状態を示す図である。
【図１１】別の実施形態に係るロボットプログラム生成装置の機能ブロック図である。
【図１２】図１１のロボットプログラム生成装置において、第２の変更教示点及び第３の変更教示点の例を示す図である。
【図１３】別の実施形態に係るロボットプログラム生成装置の機能ブロック図である。
【図１４】図１２のロボットプログラム生成装置において実行されるロボットプログラムを更新する工程を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の実施形態を説明する。図示される構成要素は、本発明の理解を助けるために縮尺が適宜変更されている。また、同一又は対応する構成要素には、同一の参照符号が使用される。
【００１１】
図１は、ロボットシステム１の構成例を示している。ロボットシステム１は、例えばロボット２を使用して複数の対象物３（例えばワーク）を所定の位置まで順次搬送するのに使用される。ロボット２は、例えばハンド７をアームの先端に備えた垂直多関節ロボットである。対象物３は、例えば容器４内にバラ積みされており、ロボット２のハンド７によって保持されて容器４から順次取出される。ロボットシステム１は、ロボット２の各関節の駆動軸を駆動するサーボモータを制御するコンピュータ５をさらに備えている。
【００１２】
コンピュータ５は、オンラインでは、対象物３の位置及び姿勢を検出するのに使用される視覚センサ（図示せず）と協働してロボット２を制御する制御装置として機能する。コンピュータ５は、視覚センサの制御装置としての機能と、及びカメラで撮影した画像を処理する画像処理装置としての機能と、を有していてもよい。また、コンピュータ５は、オフラインでは、ロボット２の動作を仮想空間内でシミュレーションしてロボットプログラムを生成するロボットプログラム生成装置１０として機能する。コンピュータ５は、互いにバスで接続されたＣＰＵ、ＲＯＭ、ＲＡＭ、外部装置とデータ及び信号を送受信するインターフェイスなどを備えたデジタルコンピュータである。コンピュータ５には、例えば液晶ディスプレイなどのモニタ、マウス及びキーボードなどの入力デバイスその他の外部装置が接続される。以下、本発明の一実施形態に従ってロボットプログラムを生成するロボットプログラム生成装置１０について説明する。
【００１３】
前述したように、ロボットプログラム生成装置１０は、ロボット２の動作を仮想空間内でシミュレーションする機能を有する。シミュレーションを実行する際、ロボットプログラム生成装置１０は、関連する構成要素をそれぞれ３次元空間で表現した形状モデルを仮想空間内に配置する。図２は、ロボットプログラム生成装置１０に接続されたモニタ６に表示される仮想空間８の例を示している。仮想空間８には、ロボット２、対象物３、容器４を三次元モデルでそれぞれ表現したロボットモデル２Ｍ、対象物モデル３Ｍ、容器モデル４Ｍが配置される。操作者は、入力デバイスを操作して視点を変更することによって、各々のモデルの位置関係を三次元空間において確認できるようになっている。
【００１４】
シミュレーションに使用されるモデルは、動力学、振動に関して必要な精度が得られる近似モデルである。近似モデルは、機構だけを考慮する剛体モデルであってもよいし、或いは機構に加えて手先の負荷、機構の撓み及び重力の作用を考慮した弾塑性モデルであってもよい。また、近似モデルは、サーボモータに付与される角度センサから得られる駆動軸の位置からロボットの手先の位置を求めるロボットシステムと、逆にロボットの手先の位置から駆動軸の位置を求めるロボットシステムの両方に対応可能であってもよい。
【００１５】
図３は、ロボットプログラム生成装置１０の機能ブロック図を示している。ロボットプログラム生成装置１０は、所定のロボットプログラムに従ってロボット２が動作するときに、各関節に設けられた駆動軸のジャーク（単位時間当りの加速度の変化量）が所定の許容値以下になるように、駆動軸に対する教示点を変更することによってロボットプログラムを調整する機能を有する。ロボットプログラム生成装置１０は、図示されるように、許容値設定部１１と、軸情報計算部１２と、ジャーク判定部１３と、軸情報特定部１４と、ロボットプログラム調整部１５と、を機能的構成として備えている。
【００１６】
許容値設定部１１は、ロボット２の各々の駆動軸に対してジャークの許容値を設定する。ジャークの許容値は、例えばロボット２の製造者によって指定される値、例えばロボット２の仕様書に記載された値である。或いは、試験用の動作プログラムに従ってロボットを動作させ、その際に測定されるジャークに基づいて許容値を求めてもよい。なお、ジャークは、各々の駆動軸を駆動するサーボモータに取付けられた角度センサによって検出される駆動軸の位置データに基づいて計算される。角度センサによって検出される駆動軸の位置は、その取得時間に関連付けられて出力される。ジャークは、駆動軸の位置を時間に関して３階微分することによって求められる。
【００１７】
ジャークは、実際のロボット２を動作させて得られる実測値であってもよいし、或いは図２に示されるような仮想空間８において実行されるシミュレーションを利用して取得されてもよい。試験用のロボットプログラムによって指定されるロボット２の動作には、搬送工程を想定した所定のロボット２の動作が含まれる。また、実際の動作を想定した種々の条件が課されてもよい。また、試験用のロボットプログラムは、ロボット２において、対象物の損傷ないし落下の原因となり得る振動を発生させないものである必要がある。許容値設定部１１は、試験用のロボットプログラムを実行した結果として取得されたジャークの最大値を許容値として設定する。
【００１８】
軸情報計算部１２は、ロボット２の動作を仮想空間内でシミュレーションしたときに、各々の駆動軸の位置及びジャークを時間に関連付けて計算する。ジャークは、位置データを時間に関して３階微分することによって計算される。
【００１９】
ジャーク判定部１３は、軸情報計算部１２によって計算された各々の駆動軸のジャークが、許容値設定部１１によって設定される許容値を超えたか否かを判定する。ジャーク判定部１３による判定結果は、軸情報特定部１４に出力される。以下、許容値を超えたジャークを「超過ジャーク」と便宜上称することがある。
【００２０】
軸情報特定部１４は、ジャーク判定部１３によって超過ジャークが発生したと判定されたときに、超過ジャークが発生した駆動軸及び駆動軸の位置を特定する。超過ジャークは、複数の駆動軸において発生することがある。また、同一の駆動軸において超過ジャークが複数回発生することがある。軸情報特定部１４は、すべての超過ジャークに対応する駆動軸及び駆動軸の位置を特定する。
【００２１】
ロボットプログラム調整部１５は、駆動軸のジャークを低減して駆動軸のジャークが許容値以下になるようにロボットプログラムを調整する。具体的には、ロボットプログラム調整部１５は、軸情報特定部１４によって特定される超過ジャークに対応する駆動軸の位置の近傍の教示点を変更する。
【００２２】
図４に示されるフローチャートを参照して、ロボットプログラム生成装置１０によって実行される工程を説明する。まず、ステップＳ４０１において、許容値設定部１１がジャークの許容値を設定する。
【００２３】
ステップＳ４０２において、ロボットプログラム生成装置１０は、ロボットプログラムのシミュレーションを実行する。シミュレーションは、予め用意されたロボットシステム１の構成要素の三次元モデル、例えばロボットモデル２Ｍ、対象物モデル３Ｍを仮想空間８に配置して実行される。
【００２４】
ステップＳ４０３では、動作プログラムのシミュレーションの結果に基づいて、軸情報計算部１２が、ロボット２の各々の駆動軸の位置を時間に関連付けて計算するとともに、それら駆動軸の位置及び時間からジャークの時系列データを計算する。
【００２５】
ステップＳ４０４では、ジャーク判定部１３によって、ステップＳ４０３で取得した駆動軸のジャークが、ステップＳ４０１で設定した許容値を超えたか否かを判定する。すべての駆動軸におけるジャークについてステップＳ４０４の判定が否定された場合、ジャークは十分に小さく、ロボット２において顕著な振動は生じないとみなされ、処理を終了する。
【００２６】
他方、ステップＳ４０４の判定が肯定された場合、すなわち超過ジャークが発生した区間が少なくとも１つ検出された場合、ステップＳ４０５に進み、軸情報特定部１４によって、超過ジャークが発生した駆動軸及び駆動軸の位置を特定する。
【００２７】
図５は、超過ジャークが発生する区間の近傍に位置する教示点ＰＡ、ＰＢ，ＰＣ及びそれら教示点ＰＡ、ＰＢ、ＰＣに従って作成される動作経路Ｑを示している。図５において、２つの黒丸は、超過ジャークが発生する区間の始点Ｑ（ｔ１）及び終点Ｑ（ｔ２）を示している。「ｔ１」、「ｔ２」は、超過ジャーク発生区間の始点及び終点にそれぞれ対応する時刻である。白色の四角は、ロボットプログラムによって指定されるロボットに対する教示点のうち、超過ジャーク発生区間の近傍に位置する教示点を示している。ロボットプログラムによって指定される教示点は、Ｐ１、Ｐ２、Ｐ３、・・・ＰＡ、ＰＢ、ＰＣ、・・・Ｐｎを含む点の集合である（ｎ：自然数）。ロボットプログラムを実行したとき、それら教示点に対して所定の補間処理が実行され、動作経路Ｑが求められる。
【００２８】
ステップＳ４０６では、ロボットプログラム調整部１５によって、超過ジャークが発生した駆動軸の位置の近傍の教示点を変更する。例えば、図５に示された例において、始点Ｑ（ｔ１）と終点Ｑ（ｔ２）とによって定められる超過ジャーク発生区間の近傍に位置する教示点ＰＢ、ＰＣがそれぞれ変更される。教示点ＰＢ、ＰＣを変更する具体的な態様については後述する。
【００２９】
ロボットプログラムの修正が完了すると、ステップＳ４０２に戻り、ステップＳ４０６において変更された教示点を含む調整後のロボットプログラムに従ってロボット２の動作をシミュレーションする。
【００３０】
続いて、図６〜図８を参照して、ステップＳ４０６においてロボットプログラム調整部１５がロボットプログラムの教示点を変更する態様について説明する。
【００３１】
前述したように、ロボットプログラム調整部１５は、超過ジャークが発生した区間の近傍の教示点を変更する。一実施形態において、教示点は、動作経路Ｑを中心軸線とする筒状空間の範囲内において変更される。例えば、図６に示される例においては、筒状空間ＴＳは、動作経路Ｑを中心軸線とするとともに、超過ジャークが発生した区間の動作経路Ｑ、すなわち動作経路Ｑに沿った始点Ｑ（ｔ１）と終点Ｑ（ｔ２）との間の距離に等しい半径を有する。
【００３２】
ロボットプログラム調整部１５は、このような筒状空間ＴＳの範囲内で変更後の教示点ＰＢ’、ＰＣ’を決定する（図６参照）。この場合、ロボットプログラム生成装置１０によって生成されるロボットプログラムの教示点は、Ｐ１、Ｐ２、Ｐ３、・・・ＰＡ、ＰＢ’、ＰＣ’・・・Ｐｎとなり、それら変更後の教示点に従って、図６に点線で示される動作経路Ｑ’が形成される。
【００３３】
一実施形態において、図７に示されるように、筒状空間ＴＳを格子状に分割して教示点の候補を求めてもよい。この場合、筒状空間ＴＳ内に設定される有限個の格子点の中から教示点ＰＢ、ＰＣの変更後の教示点ＰＢ’、ＰＣ’をそれぞれ選択する。
【００３４】
一実施形態において、ロボットプログラム調整部１５は、次のような工程に従って変更後の教示点を取得する。まず、図４のステップＳ４０３で取得されたジャークの時系列データから、超過ジャークが発生する区間に対応するジャークの時系列データを特定する。特定されたジャークの時系列データに基づいて、時間に関するジャークの変化量が小さくなるように新たなジャークの時系列データを作成する。この際、新たなジャークの時系列データから求められる駆動軸の回転量は、元のジャークの時系列データから求められる駆動軸の回転量に概ね一致するようにする。本実施形態において、ロボットプログラム調整部１５は、ジャークの時間変化量を小さくした新たなジャークの時系列データに基づいて、教示点を変更する。
【００３５】
図８は、教示点を変更する前の動作経路Ｑ、及び新たなジャークの時系列データに基づいて形成される動作経路Ｑ’を示している。Ｑ’（ｔ１）は、変更前のロボットプログラムにおいて超過ジャーク発生区間の始点Ｑ（ｔ１）に対応する時刻ｔ１における動作経路Ｑ’上の位置を表している。また、Ｑ’（ｔ２）は、超過ジャーク発生区間の終点Ｑ（ｔ２）に対応する時刻ｔ２における動作経路Ｑ’上の位置を表している。図８に示された例によれば、ロボットプログラム調整部１５は、始点Ｑ（ｔ１）及び終点Ｑ（ｔ２）の近傍のロボットプログラムの教示点ＰＢ、ＰＣを、動作経路Ｑ’上のＱ’（ｔ１）及びＱ’（ｔ２）にそれぞれ一致する教示点ＰＢ’、ＰＣ’に変更する。変更された教示点ＰＢ’、ＰＣ’を含む教示点に従って形成される動作経路は、ロボットに固有のサーボ制御及び補間処理に依存するので、図示される動作経路Ｑ’には一致しないことがある。しかしながら、変更後の教示点に従って形成される動作経路は、ジャークの時間変化量を小さくした動作経路Ｑ’に近似しているので、ジャークを低減する効果が得られるであろう。
【００３６】
一実施形態において、ロボットプログラム生成装置１０は、ロボットプログラム調整部１５による教示点の変更を所定の回数だけ繰返し実行しても、依然として超過ジャークが発生する場合、ロボットプログラムの調整を終了するように構成される。教示点の変更を繰り返しても超過ジャークが解消されない場合、操作者は、教示点以外の設定内容を見直して超過ジャークの低減を図ることが合理的である場合がある。
【００３７】
なお、複数の超過ジャーク発生区間が検出された場合は、各々の超過ジャーク発生区間におけるジャークを低減するように、ロボットプログラムの教示点を変更する処理が実行される。
【００３８】
前述した実施形態に係るロボットプログラム生成装置１０は、次のような利点を有する。
（１）ロボットプログラム調整部１５によって、ジャークが許容値以下になるようにロボットに対する教示点が調整される。それにより、駆動軸のジャークが大きい場合に発生するロボットの振動を防止できるようになる。
【００３９】
（２）ロボットプログラム生成装置１０によれば、超過ジャークが発生することが予測されるときに、ロボットプログラムを自動的に調整できる。それにより、操作者に試行錯誤の負担を強いることなく、ジャークを低減できるようになる。
【００４０】
（３）ロボットプログラム生成装置１０によれば、ロボットを動作させるロボットに対する教示点を変更することによってジャークの低減を図ることができる。すなわち、ロボットの仕様に依存しないジャークの低減方法を提供できる。例えばパラメータ又は補間処理は、ロボットの製造者によって異なる仕様に従って定められているので、製造元が異なる複数のロボットを備えたロボットシステムにおいては、パラメータ又は補間処理を同一の方法で調整しても十分なジャーク低減効果が得られないことがある。それに対し、ロボットプログラム生成装置１０は、ロボットに対する教示点を変更するので、ロボットの仕様に依存しないジャーク低減効果が得られる。
【００４１】
（４）動作経路Ｑに沿って形成される筒状空間ＴＳ内で変更後の教示点を選択するようにすれば、教示点の変更を効率的に実行できるようになる。
【００４２】
（５）筒状空間ＴＳを格子状に分割して形成される格子点から変更後の教示点を選択するようにすれば、教示点を有限個の候補の中から選択できるので、教示点の変更を効率的に実行できるようになる。
【００４３】
図９は、別の実施形態に係るロボットプログラム生成装置１０の機能ブロック図である。本実施形態に係るロボットプログラム生成装置１０は、図３を参照して説明した構成に加えて、干渉判定部１６をさらに備えている。
【００４４】
干渉判定部１６は、仮想空間８内でロボット２の動作をシミュレーションする際に、ロボットモデル２Ｍが周囲の物体（例えば対象物モデル３Ｍ、容器モデル４Ｍ）に干渉するか否かを判定する。
【００４５】
本実施形態に係るロボットプログラム生成装置１０においては、ロボットプログラム調整部１５が、ロボットが周囲の物体に干渉しないようにロボットプログラムの教示点を変更する。したがって、本実施形態に係るロボットプログラム生成装置１０は、駆動軸のジャークが許容値以下になるとともに、ロボットシステム１が干渉を起こさないようなロボットプログラムを生成できる。
【００４６】
図１０を参照して、ロボットシステム１において干渉が生じた場合の教示点の変更方法の一例について説明する。仮想空間８内で干渉が発生した場合、ロボット２Ｍと干渉物モデル９Ｍとは、少なくとも１つの点で接触しているか、或いはロボットモデル２Ｍと干渉物モデル９Ｍとが互いに３次元空間で重なり合っている。図１０は、ロボットモデル２Ｍと干渉物モデル９Ｍとが互いに重なり合っている状態を示している。図１０に示されるように、ロボットモデル２Ｍと干渉物モデル９Ｍとが重なり合っている部分の質量中心の位置をＫ１とする。なお、ロボットモデル２Ｍと干渉物モデルとが点で接触している場合は、それらの接触点の位置をＫ１に設定すればよい。
【００４７】
ロボットモデル２Ｍ（ロボット２の手先の三次元モデル）の質量中心の位置をＫ２とし、干渉物の質量中心をＫ３とする。Ｋ１からＫ２に向けられた方向の単位ベクトルをＶ１とし、Ｋ３からＫ２に向けられた方向の単位ベクトルをＶ２とする。ベクトルＶ１、Ｖ２の平均をＶ３とする。ロボットプログラム調整部１５は、干渉判定部１６によって干渉が生じたと判定された場合、干渉が生じた教示点Ｐｍを、ベクトルＶ３の方向に所定の距離だけ離間する位置の変更教示点Ｐｍ’に変更する。このようにして、ロボットプログラム生成装置１０は、ロボット２が周囲の物体に干渉しないように調整されたロボットプログラムを生成できる。
【００４８】
図１１は、別の実施形態に係るロボットプログラム生成装置１０の機能ブロック図である。本実施形態に係るロボットプログラム生成装置１０は、図３を参照して説明した構成に加えて、動作時間計算部１７をさらに備えている。動作時間計算部１７は、ロボットプログラムを実行するのに必要な時間をそれぞれ計算する。本実施形態に係るロボットプログラム生成装置１０は、任意の数のロボットプログラムのうち、実行するのに必要な時間が最も短いロボットプログラムを生成する。
【００４９】
例えば、前述した実施形態に従ってジャークを低減するように変更した教示点（便宜上、「第１の変更教示点」と称する。）を含むロボットプログラム（便宜上、「第１のロボットプログラム」と称する。）に基づいて、第１のロボットプログラムとは異なる任意の数、例えば２つのロボットプログラムを生成する。すなわち、教示点が互いに異なる３種類のロボットプログラムが一旦作成されることになる。そして、動作時間計算部１７の計算結果に基づいて、ロボットプログラム生成装置１０は、３種類のロボットプログラムのうち最も所要時間が短いロボットプログラムを選択して生成する。
【００５０】
図１２を参照して、第１のロボットプログラムの教示点から、第２のロボットプログラム及び第３のロボットプログラムの教示点を求める方法の例について説明する。図１２に示されるように、教示点を変更する前の超過ジャーク発生区間の始点Ｑ（ｔ１）から、第１のロボットプログラムに従って形成される動作経路の時刻ｔ１における位置Ｑ’（ｔ１）まで延在するベクトルＶ１とする。ベクトルＶ１を、変更前の動作経路Ｑに対して直交する平面ＰＬ上において始点Ｑ（ｔ１）の周りに角度αだけ回転させたベクトルをＶ２とし、角度−αだけ回転させたベクトルをＶ３とする。
【００５１】
第２のロボットプログラムでは、教示点ＰＢ（図５参照）を、始点Ｑ（ｔ１）からベクトルＶ２だけ移動した位置にある教示点ＰＢ２に変更する。また、教示点ＰＣ（図５参照）を、超過ジャークの発生区間の終点Ｑ（ｔ２）（図５参照）からベクトルＶ２だけ移動した位置にある教示点ＰＣ２に変更する。それにより、第２のロボットプログラムによって指定される教示点は、Ｐ１、Ｐ２、Ｐ３、・・・ＰＡ、ＰＢ２、ＰＣ２、・・・Ｐｎとなる。
【００５２】
第３のロボットプログラムでは、教示点ＰＢ（図５参照）を、始点Ｑ（ｔ１）からベクトルＶ３だけ移動した位置にある教示点ＰＢ３に変更する。また、教示点ＰＣ（図５参照）を、超過ジャークの発生区間の終点Ｑ（ｔ２）（図５参照）からベクトルＶ３だけ移動した位置にある教示点ＰＣ３に変更する。それにより、第３のロボットプログラムによって指定される教示点は、Ｐ１、Ｐ２、Ｐ３、・・・ＰＡ、ＰＢ３、ＰＣ３、・・・Ｐｎとなる。
【００５３】
第１〜第３のロボットプログラムを実行したときに発生するジャークがいずれも許容値を下回る場合、本実施形態に係るロボットプログラム生成装置１０は、第１のロボットプログラム、第２のロボットプログラム及び第３ロボットプログラムのうち、実行するのに必要な時間が最も短いロボットプログラムを選択的に生成する。
【００５４】
図１３は、別の実施形態に係るロボットプログラム生成装置１０の機能ブロック図である。本実施形態に係るロボットプログラム生成装置１０は、図３を参照して説明した構成に加えて、更新判定部１８と、プログラム送信部１９と、をさらに備えている。更新判定部１８は、ロボット２（図１参照）がロボットプログラムを更新できる状態で否かを判定する。プログラム送信部１９は、例えば教示操作盤の操作に応答して、ロボットプログラム生成装置１０によって生成されたロボットプログラムをロボット２に送信する。
【００５５】
図１４は、本実施形態に従ってロボットプログラムを更新する工程を示すフローチャートである。ロボットプログラム生成装置１０によってロボットプログラムが生成されたときに当該工程は開始される。ステップＳ１４０１において、ロボットプログラム生成装置１０（コンピュータ５）がロボットプログラムを生成したことをロボット２に通知する。
【００５６】
ステップＳ１４０２において、更新判定部１８によって、ロボット２がロボットプログラムの更新を許可しているか否かを判定する。例えばロボット２がロボットプログラム生成装置１０によって生成されたロボットプログラムとは無関係の動作をしているときに、ロボット２に対するロボットプログラムを更新できる。ステップＳ１４０２における判定が否定されると、ステップＳ１４０３には進まずに、所定の制御周期でステップＳ１４０２の判定を実行する。
【００５７】
ステップ１４０２における判定が肯定されると、ステップＳ１４０３に進み、プログラム送信部１９が、ロボットプログラム生成装置１０によって生成されたロボットプログラムをロボット２に送信する。それにより、ロボット２は、ジャークが低減されるように教示点が変更されたロボットプログラムに従って所定の動作を実行できるようになる。
【００５８】
本実施形態に係るロボットプログラム生成装置１０は、ロボット２の動作を一旦停止しなくても、状況に応じてロボットプログラムの更新を可能にする。それにより、作業効率を向上させられる。
【００５９】
以上、本発明の種々の実施形態について説明したが、当業者であれば、他の実施形態によっても本発明の意図する作用効果を実現できることを認識するであろう。特に、本発明の範囲を逸脱することなく、前述した実施形態の構成要素を削除又は置換することができるし、或いは公知の手段をさらに付加することができる。また、本明細書において明示的又は暗示的に開示される複数の実施形態の特徴を任意に組合せることによっても本発明を実施できることは当業者に自明である。
【符号の説明】
【００６０】
１    ロボットシステム
２    ロボット
２Ｍ    ロボットモデル
３    対象物
３Ｍ    対象物モデル
４    容器
４Ｍ    容器モデル
５    コンピュータ
６    モニタ
７    ハンド
８    仮想空間
９Ｍ    干渉物モデル
１０    ロボットプログラム生成装置
１１    許容値設定部
１２    軸情報計算部
１３    ジャーク判定部
１４    軸情報特定部
１５    ロボットプログラム調整部
１６    干渉判定部
１７    動作時間計算部
１８    更新判定部
１９    プログラム送信部
【図１】
0005908544.tif 000002
【図２】
0005908544.tif 000003
【図３】
0005908544.tif 000004
【図４】
0005908544.tif 000005
【図５】
0005908544.tif 000006
【図６】
0005908544.tif 000007
【図７】
0005908544.tif 000008
【図８】
0005908544.tif 000009
【図９】
0005908544.tif 000010
【図１０】
0005908544.tif 000011
【図１１】
0005908544.tif 000012
【図１２】
0005908544.tif 000013
【図１３】
0005908544.tif 000014
【図１４】
0005908544.tif 000015