(57)【要約】【課題】ロボットの動作プログラム生成装置において、教示される動作軌跡がばらつく場合であっても、適切な動作プログラムを生成する。【解決手段】障害物Bを避けてロボット２０を動作させる動作プログラムを生成する動作プログラム生成装置３０であって、教示されたロボットの動作軌跡を入力する軌跡入力部と、軌跡入力部により入力された動作軌跡の周囲に、ロボットの動作点が設定されることを許容する許容領域を設定する領域設定部と、領域設定部により設定された許容領域の範囲内においてロボット２０の動作点を選択し、動作軌跡の一端から他端まで障害物を避けて元の動作点と次の動作点とを線で結ぶことを繰り返して、動作点の集まりである動作点群を設定する点群設定部と、点群設定部により設定された動作点群に基づいて、動作プログラムを生成するプログラム生成部と、を備える。【選択図】      図１
2018144147.tif 000002
【特許請求の範囲】
【請求項１】
障害物を避けてロボットを動作させる動作プログラムを生成する動作プログラム生成装置であって、
教示された前記ロボットの動作軌跡を入力する軌跡入力部と、
前記軌跡入力部により入力された前記動作軌跡の周囲に、前記ロボットの動作点が設定されることを許容する許容領域を設定する領域設定部と、
前記領域設定部により設定された前記許容領域の範囲内において前記ロボットの動作点を選択し、前記動作軌跡の一端から他端まで前記障害物を避けて元の動作点と次の動作点とを線で結ぶことを繰り返して、前記動作点の集まりである動作点群を設定する点群設定部と、
前記点群設定部により設定された前記動作点群に基づいて、前記動作プログラムを生成するプログラム生成部と、
を備えるロボットの動作プログラム生成装置。
【請求項２】
前記点群設定部は、前記軌跡入力部により入力された前記動作軌跡上から前記元の動作点及び前記次の動作点を選択して、前記動作軌跡の一端から他端まで前記障害物を避けて元の動作点と次の動作点とを直線で結ぶことを繰り返して第１動作線を特定し、前記領域設定部により設定された前記許容領域の範囲内において前記第１動作線を特定する前記動作点の位置を変更して、変更後の前記動作点を直線で結んで第２動作線を特定し、前記動作軌跡と前記第１動作線との類似度よりも前記動作軌跡と前記第２動作線との類似度が高い場合に、前記第２動作線を特定する前記動作点の集まりを前記動作点群として設定する請求項１に記載のロボットの動作プログラム生成装置。
【請求項３】
前記点群設定部は、前記領域設定部により設定された前記許容領域の範囲内において前記第１動作線を特定する前記動作点の位置を変更して、変更後の前記動作点を直線で結んで第２動作線を特定することを所定回数繰り返し、前記動作軌跡と前記第２動作線との類似度が最も高くなった第２動作線を特定する前記動作点の集まりを、前記動作点群として設定する請求項２に記載のロボットの動作プログラム生成装置。
【請求項４】
前記点群設定部は、前記領域設定部により設定された前記許容領域の範囲内において前記第１動作線を特定する前記動作点の位置を変更して、変更後の前記動作点を直線で結んで第２動作線を特定する際に、前記第２動作線と前記障害物との距離が所定距離よりも長くなるように、前記動作点の位置を変更する請求項２又は３に記載のロボットの動作プログラム生成装置。
【請求項５】
前記プログラム生成部は、前記第２動作線を前記ロボットの動作軌跡とするように、前記動作プログラムを生成する２〜４のいずれか１項に記載のロボットの動作プログラム生成装置。
【請求項６】
障害物を避けてロボットを動作させる動作プログラムを生成する動作プログラム生成装置であって、
教示された前記ロボットの動作軌跡を入力する軌跡入力部と、
前記軌跡入力部により入力された前記動作軌跡の周囲に、前記ロボットの動作点が設定されることを許容する許容領域を設定する領域設定部と、
前記領域設定部により設定された前記許容領域の範囲内において前記ロボットの動作点を選択し、前記動作軌跡の一端から他端まで前記障害物を避けて元の動作点と次の動作点とを直線で結ぶことを繰り返して、前記動作点の集まりである動作点群を設定する点群設定部と、
前記点群設定部により設定された前記動作点群を、前記軌跡入力部により入力された前記動作軌跡に近似させる目標値である近似目標値を設定する目標値設定部と、
前記点群設定部により設定された前記動作点群に基づいて、前記動作プログラムを生成するプログラム生成部と、
を備え、
前記点群設定部は、
前記軌跡入力部により入力された前記動作軌跡上から最小個数の前記元の動作点及び前記次の動作点を選択して、前記動作軌跡の一端から他端まで前記障害物を避けて元の動作点と次の動作点とを直線で結ぶことを繰り返して第１動作線を特定し、
前記第１動作線を特定する前記動作点の集まりの前記動作軌跡への近似度が、前記目標値設定部により設定された前記近似目標値を超えている場合に、前記第１動作線を特定する前記動作点の集まりを前記動作点群として設定し、
前記第１動作線を特定する前記動作点の集まりの前記動作軌跡への近似度が、前記目標値設定部により設定された前記近似目標値を超えていない場合に、前記領域設定部により設定された前記許容領域の範囲内において前記第１動作線を特定する前記動作点の位置及び個数の少なくとも一方を変更して、変更後の前記動作点を直線で結んで第２動作線を特定し、
前記第２動作線を特定する前記動作点の集まりの前記動作軌跡への近似度が、前記目標値設定部により設定された前記近似目標値を超えている場合に、前記第２動作線を特定する前記動作点の集まりを前記動作点群として設定し、
前記第２動作線を特定する前記動作点の集まりの前記動作軌跡への近似度が、前記目標値設定部により設定された前記近似目標値を超えていない場合に、前記第２動作線を特定する処理を繰り返すロボットの動作プログラム生成装置。
【請求項７】
前記点群設定部は、前記動作点の個数が増えるほど、前記第２動作線を特定する前記動作点の集まりの前記動作軌跡への近似度が、前記目標値設定部により設定された前記近似目標値を超えていると判定されにくくする請求項６に記載のロボットの動作プログラム生成装置。
【請求項８】
前記領域設定部は、前記動作軌跡の両端部の周囲に設定される前記許容領域よりも、前記動作軌跡の中間部の周囲に設定される前記許容領域を広く設定する請求項１〜７のいずれか１項に記載のロボットの動作プログラム生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットを動作させる動作プログラムを生成する装置に関する。
【背景技術】
【０００２】
従来、この種の装置において、ロボットの動作軌跡をいくつかの直線に分割し、分割した直線で障害物との干渉が発生する場合に、分割した直線をさらに分割して障害物との干渉がない直線動作を生成するものがある（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−４６９３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、特許文献１に記載のものでは、予め生成された動作軌跡上からロボットの動作点を選択している。このため、予め生成された動作軌跡が適切でなかった場合は、障害物の直近をロボットが通過するおそれがある。
【０００５】
本発明は、こうした課題を解決するためになされたものであり、ロボットの動作プログラム生成装置において、教示される動作軌跡がばらつく場合であっても、適切な動作プログラムを生成することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するための第１の手段は、
障害物を避けてロボットを動作させる動作プログラムを生成する動作プログラム生成装置であって、
教示された前記ロボットの動作軌跡を入力する軌跡入力部と、
前記軌跡入力部により入力された前記動作軌跡の周囲に、前記ロボットの動作点が設定されることを許容する許容領域を設定する領域設定部と、
前記領域設定部により設定された前記許容領域の範囲内において前記ロボットの動作点を選択し、前記動作軌跡の一端から他端まで前記障害物を避けて元の動作点と次の動作点とを線で結ぶことを繰り返して、前記動作点の集まりである動作点群を設定する点群設定部と、
前記点群設定部により設定された前記動作点群に基づいて、前記動作プログラムを生成するプログラム生成部と、
を備える。
【０００７】
上記構成によれば、軌跡入力部により、教示されたロボットの動作軌跡が入力される。そして、領域設定部によって、軌跡入力部により入力された動作軌跡の周囲に、ロボットの動作点が設定されることを許容する許容領域が設定される。このため、動作軌跡上に限らず、動作軌跡の周囲までロボットの動作点を設定することが可能となる。
【０００８】
そして、点群設定部によって、領域設定部により設定された許容領域の範囲内において、ロボットの動作点が選択される。ここで、点群設定部は、動作軌跡の一端から他端まで障害物を避けて元の動作点と次の動作点とを線で結ぶことを繰り返して、動作点の集まりである動作点群を設定する。このため、教示される動作軌跡がばらつく場合であっても、教示された動作軌跡上から許容領域まで広げた範囲内で、適切な動作点を選択して動作点群を設定することができる。そして、プログラム生成部によって、点群設定部により設定された動作点群に基づいて、動作プログラムが生成される。その結果、動作プログラム生成装置は、適切な動作プログラムを生成することができる。
【０００９】
第２の手段では、前記点群設定部は、前記軌跡入力部により入力された前記動作軌跡上から前記元の動作点及び前記次の動作点を選択して、前記動作軌跡の一端から他端まで前記障害物を避けて元の動作点と次の動作点とを直線で結ぶことを繰り返して第１動作線を特定し、前記領域設定部により設定された前記許容領域の範囲内において前記第１動作線を特定する前記動作点の位置を変更して、変更後の前記動作点を直線で結んで第２動作線を特定し、前記動作軌跡と前記第１動作線との類似度よりも前記動作軌跡と前記第２動作線との類似度が高い場合に、前記第２動作線を特定する前記動作点の集まりを前記動作点群として設定する。
【００１０】
上記構成によれば、軌跡入力部により入力された動作軌跡上から、元の動作点及び次の動作点が選択される。そして、動作軌跡の一端から他端まで、障害物を避けて元の動作点と次の動作点とを直線で結ぶことが繰り返されて第１動作線が特定される。すなわち、第１動作線は、動作点同士を結ぶ直線が障害物を避けるように、動作軌跡上から複数の点を選択することにより特定される。
【００１１】
領域設定部により設定された許容領域の範囲内において第１動作線を特定する動作点の位置が変更され、変更後の動作点が直線で結ばれて第２動作線が特定される。そして、動作軌跡と第１動作線との類似度よりも動作軌跡と第２動作線との類似度が高い場合に、第２動作線を特定する動作点の集まりが動作点群として設定される。このため、教示された動作軌跡に類似する動作線を特定する動作点の集まりを、動作点群として設定することができる。したがって、許容領域の範囲内で適切な動作点群を設定しつつ、教示された動作軌跡に類似する動作軌跡となるように動作プログラムを生成することができる。
【００１２】
第３の手段では、前記点群設定部は、前記領域設定部により設定された前記許容領域の範囲内において前記第１動作線を特定する前記動作点の位置を変更して、変更後の前記動作点を直線で結んで第２動作線を特定することを所定回数繰り返し、前記動作軌跡と前記第２動作線との類似度が最も高くなった第２動作線を特定する前記動作点の集まりを、前記動作点群として設定する。
【００１３】
上記構成によれば、領域設定部により設定された許容領域の範囲内において第１動作線を特定する動作点の位置を変更して、変更後の動作点を直線で結んで第２動作線を特定することが所定回数繰り返される。そして、動作軌跡と第２動作線との類似度が最も高くなった第２動作線を特定する動作点の集まりが、動作点群として設定される。このため、教示された動作軌跡に一層近い動作軌跡となるように、動作プログラムを生成することができる。
【００１４】
ところで、軌跡入力部により入力された動作軌跡が適切でなかった場合は、障害物の直近を上記第１動作線が通過するおそれがある。
【００１５】
この点、第４の手段では、前記点群設定部は、前記領域設定部により設定された前記許容領域の範囲内において前記第１動作線を特定する前記動作点の位置を変更して、変更後の前記動作点を直線で結んで第２動作線を特定する際に、前記第２動作線と前記障害物との距離が所定距離よりも長くなるように、前記動作点の位置を変更するといった構成を採用している。このため、障害物との距離が所定距離よりも長い第２動作線を特定する動作点の集まりを、動作点群として設定することができる。したがって、障害物と動作軌跡との距離が所定距離よりも長くなるように、動作プログラムを生成することができる。
【００１６】
第５の手段では、前記プログラム生成部は、前記第２動作線を前記ロボットの動作軌跡とするように、前記動作プログラムを生成する。
【００１７】
ユーザがロボットを直接動かして動作軌跡を教示するダイレクトティーチングでは、ユーザの手ぶれなどに起因して、教示された動作軌跡に無駄な曲線が多く含まれている。この動作軌跡に基づいて、多くの曲線を含む動作軌跡を実現する動作プログラムを生成すると、ロボットが微小な加減速を繰り返し、動作効率が低下するおそれがある。
【００１８】
この点、上記構成によれば、変更後の動作点を直線で結んだ第２動作線をロボットの動作軌跡とするように、動作プログラムが生成される。このため、動作軌跡に無駄な曲線が多く含まれることを抑制することができ、動作効率が低下することを抑制することができる。
【００１９】
第６の手段は、
障害物を避けてロボットを動作させる動作プログラムを生成する動作プログラム生成装置であって、
教示された前記ロボットの動作軌跡を入力する軌跡入力部と、
前記軌跡入力部により入力された前記動作軌跡の周囲に、前記ロボットの動作点が設定されることを許容する許容領域を設定する領域設定部と、
前記領域設定部により設定された前記許容領域の範囲内において前記ロボットの動作点を選択し、前記動作軌跡の一端から他端まで前記障害物を避けて元の動作点と次の動作点とを直線で結ぶことを繰り返して、前記動作点の集まりである動作点群を設定する点群設定部と、
前記点群設定部により設定された前記動作点群を、前記軌跡入力部により入力された前記動作軌跡に近似させる目標値である近似目標値を設定する目標値設定部と、
前記点群設定部により設定された前記動作点群に基づいて、前記動作プログラムを生成するプログラム生成部と、
を備え、
前記点群設定部は、
前記軌跡入力部により入力された前記動作軌跡上から最小個数の前記元の動作点及び前記次の動作点を選択して、前記動作軌跡の一端から他端まで前記障害物を避けて元の動作点と次の動作点とを直線で結ぶことを繰り返して第１動作線を特定し、
前記第１動作線を特定する前記動作点の集まりの前記動作軌跡への近似度が、前記目標値設定部により設定された前記近似目標値を超えている場合に、前記第１動作線を特定する前記動作点の集まりを前記動作点群として設定し、
前記第１動作線を特定する前記動作点の集まりの前記動作軌跡への近似度が、前記目標値設定部により設定された前記近似目標値を超えていない場合に、前記領域設定部により設定された前記許容領域の範囲内において前記第１動作線を特定する前記動作点の位置及び個数の少なくとも一方を変更して、変更後の前記動作点を直線で結んで第２動作線を特定し、
前記第２動作線を特定する前記動作点の集まりの前記動作軌跡への近似度が、前記目標値設定部により設定された前記近似目標値を超えている場合に、前記第２動作線を特定する前記動作点の集まりを前記動作点群として設定し、
前記第２動作線を特定する前記動作点の集まりの前記動作軌跡への近似度が、前記目標値設定部により設定された前記近似目標値を超えていない場合に、前記第２動作線を特定する処理を繰り返す。
【００２０】
上記構成によれば、目標値設定部により、点群設定部により設定された動作点群を、軌跡入力部により入力された動作軌跡に近似させる目標値である近似目標値が設定される。点群設定部は、軌跡入力部により入力された動作軌跡上から最小個数の元の動作点及び次の動作点を選択して、動作軌跡の一端から他端まで障害物を避けて元の動作点と次の動作点とを直線で結ぶことを繰り返して第１動作線を特定する。そして、第１動作線を特定する動作点の集まりの動作軌跡への近似度が近似目標値を超えている場合に、第１動作線を特定する動作点の集まりが動作点群として設定される。このため、最小個数の動作点に基づく動作軌跡となるように動作プログラムを生成することができ、ロボットの動作効率を向上させることができる。さらに、最小個数の動作点に基づき動作プログラムが生成されるため、入力された動作軌跡にゆらぎがあったとしても、生成される動作軌跡に無駄な曲線が含まれることを抑制することができ、動作効率が低下することを抑制することができる。
【００２１】
また、第１動作線を特定する動作点の集まりの動作軌跡への近似度が、近似目標値を超えていない場合に、許容領域の範囲内において第１動作線を特定する動作点の位置及び個数の少なくとも一方が変更されて、変更後の動作点が直線で結ばれて第２動作線が特定される。第２動作線を特定する動作点の集まりの動作軌跡への近似度が近似目標値を超えている場合に、第２動作線を特定する動作点の集まりが動作点群として設定される。このため、動作点の位置及び個数の少なくとも一方を変更することで、動作点の集まりの動作軌跡への近似度が近似目標値を超えるようにすることができる。
【００２２】
また、第２動作線を特定する動作点の集まりの動作軌跡への近似度が近似目標値を超えていない場合に、第２動作線を特定する処理が繰り返される。このため、動作点の位置及び個数の少なくとも一方を変更することを繰り返すことにより、動作点の集まりの動作軌跡への近似度が近似目標値を超えるようにすることができる。その場合であっても、できるだけ少ない個数の動作点に基づく動作軌跡となるように動作プログラムを生成することができ、ロボットの動作効率を向上させることができる。さらに、できるだけ少ない個数の動作点に基づき動作プログラムが生成されるため、入力された動作軌跡にゆらぎがあったとしても、生成される動作軌跡に無駄な曲線が含まれることを抑制することができ、動作効率が低下することを抑制することができる。
【００２３】
第７の手段では、前記点群設定部は、前記動作点の個数が増えるほど、前記第２動作線を特定する前記動作点の集まりの前記動作軌跡への近似度が、前記目標値設定部により設定された前記近似目標値を超えていると判定されにくくする。
【００２４】
上記構成によれば、動作点の個数が増えるほど、第２動作線を特定する動作点の集まりの動作軌跡への近似度が、近似目標値を超えていると判定されにくくされる。このため、できるだけ少ない個数の動作点に基づく動作軌跡となるように、動作プログラムを生成することができる。
【００２５】
第８の手段では、前記領域設定部は、前記動作軌跡の両端部の周囲に設定される前記許容領域よりも、前記動作軌跡の中間部の周囲に設定される前記許容領域を広く設定する。
【００２６】
通常、動作軌跡の両端部は、ロボットの動作軌跡の始点及び終点として教示される。このため、動作軌跡の両端部を通るように、ロボットの動作プログラムを生成する必要がある。一方、動作軌跡の中間部は、必ずしも教示された位置を通る必要はなく、障害物を避けるように動作点を設定することができる。
【００２７】
この点、上記構成によれば、動作軌跡の両端部の周囲に設定される許容領域よりも、動作軌跡の中間部の周囲に設定される許容領域が広く設定される。このため、動作軌跡の両端部から離れた位置では、障害物を避けて動作点を設定し易くなり、設定する動作点の数を少なくすることができる。その結果、動作軌跡を簡潔な形状にすることができる。
【図面の簡単な説明】
【００２８】
【図１】ロボットシステムの概要を示す斜視図。
【図２】経由点により動作軌跡を教示する態様を示す斜視図。
【図３】動作線により動作軌跡を教示する態様を示す斜視図。
【図４】動作プログラム生成の概要を示す模式図。
【図５】動作プログラム生成の手順を示すフローチャート。
【図６】第１動作線を特定する態様を示す模式図。
【図７】第２動作線を特定する態様を示す模式図。
【図８】動作プログラム生成の手順の変更例を示すフローチャート。
【発明を実施するための形態】
【００２９】
以下、一実施形態について、図面を参照しつつ説明する。本実施形態は、機械組立工場等において、機械等の組み立てを行うロボットシステムとして具現化している。
【００３０】
図１は、ロボットシステム１０の概要を示す斜視図である。同図に示すように、ロボットシステム１０は、ロボット２０及びコントローラ３０を備えている。
【００３１】
ロボット２０は、垂直多関節型のロボットであり、複数のリンク、及び基台２２を備えている。複数のリンク（被駆動部）は、基台２２側から順に、リンク２１Ａ、リンク２１Ｂ、リンク２１Ｃ、及びハンド部（リンク）２１Ｄを含んでいる。リンク２１Ａとリンク２１Ｂとが関節２３Ａにより連結され、リンク２１Ｂとリンク２１Ｃとが関節２３Ｂにより連結され、リンク２１Ｃとハンド部２１Ｄとが関節２３Ｃにより連結されている。なお、リンク２１Ｃは、相対回転する２つの部分に分かれている。
【００３２】
各関節（２３Ａ，２３Ｂ，２３Ｃのみ符号を付す）には、それぞれサーボモータ２５，２６（関節２３Ｃのサーボモータは図示略）が設けられており、これらのサーボモータの回転によりリンク２１Ａ〜２１Ｄが駆動される。各サーボモータには、その出力軸を制動する電磁ブレーキと、出力軸の回転角度に応じたパルス信号を出力するエンコーダとがそれぞれ設けられている。ロボット２０は、リンク２１Ａ〜２１Ｄを動作させることにより、ワークに対する部品の組付けやワークの搬送等の作業を行う。
【００３３】
コントローラ３０（動作プログラム生成装置に相当）は、ＣＰＵ、ＲＯＭ、ＲＡＭ、駆動回路、位置検出回路、入出力インターフェース等を備えている。ＲＯＭは、ロボット２０のシステムプログラムや動作プログラム等を記憶している。ＲＡＭは、これらのプログラムを実行する際にパラメータの値等を記憶する。位置検出回路には、各エンコーダの検出信号がそれぞれ入力される。位置検出回路は、各エンコーダの検出信号に基づいて、各関節に設けられたサーボモータの回転角度を検出する。ＣＰＵは、動作プログラム（プログラム）を実行することにより、位置検出回路から入力される位置情報に基づいて、リンク２１Ａ〜２１Ｄの各関節の回転角度を目標回転角度に制御する。コントローラ３０は、ユーザにより教示されたロボット２０の動作軌跡に基づいて、障害物を避けてロボット２０を動作させる動作プログラムを生成する。
【００３４】
図２は、経由点により動作軌跡を教示する態様を示す斜視図である。ここでは、障害物Ｂ避けてワークＷをパレットＰＬ１からパレットＰＬ２へ運ぶ作業を例に説明する。
【００３５】
同図に示すように、ユーザは、始点Ｓ、経由点Ｐ１、経由点Ｐ２、及び終点Ｅの４点を教示する。これらの点Ｓ，Ｐ１，Ｐ２，Ｅを教示する方法としては、例えばロボット２０の動作をシミュレーションする画像上において、ユーザがマウス等の操作に基づいて点Ｓ，Ｐ１，Ｐ２，Ｅを設定する。あるいは、ユーザが操作器によりロボット２０を実際に動作させながら、ロボット２０の位置を目視で確認して点Ｓ，Ｐ１，Ｐ２，Ｅを設定する。これらの方法の場合、適切に点Ｓ，Ｐ１，Ｐ２，Ｅを設定するためには、ユーザの熟練が必要となる。
【００３６】
図３は、動作線により動作軌跡を教示する態様を示す斜視図である。ここでも、障害物Ｂ避けてワークＷをパレットＰＬ１からパレットＰＬ２へ運ぶ作業を例に説明する。
【００３７】
同図に示すように、ユーザは始点Ｓ、動作軌跡Ｔ（動作線）、及び終点Ｅを教示する。始点Ｓ、動作軌跡Ｔ、及び終点Ｅを教示する方法としては、例えばダイレクトティーチングにより、始点Ｓを設定した後、ロボット２０を直接動かして動作軌跡Ｔを設定し、最後に終点Ｅを設定する。あるいは、ロボット２０の動作をシミュレーションする画像上において、ユーザがマウス等の操作に基づいて、ロボット２０のハンド部２１Ｄの位置を示すポインタを連続的に動かして、始点Ｓ、動作軌跡Ｔ、及び終点Ｅを設定する。これらの方法の場合、ユーザの手ぶれなどに起因して、教示された動作軌跡Ｔに無駄な曲線が多く含まれている。この動作軌跡Ｔに基づいて、多くの曲線を含む動作軌跡を実現する動作プログラムを生成すると、ロボット２０が微小な加減速を繰り返し、動作効率が低下するおそれがある。
【００３８】
また、教示された動作軌跡が適切でなかった場合は、障害物Ｂの直近をロボット２０が通過するおそれがある。本実施形態では、コントローラ３０は、以下のように動作プログラムを生成する。図４は、動作プログラム生成の概要を示す模式図である。
【００３９】
図４（ａ）は、教示された始点Ｓ、動作軌跡Ｔ、及び終点Ｅを示している。動作軌跡Ｔは、上記のように動作線により教示されており、障害物Ｂを避けて設定されている。コントローラ３０（軌跡入力部に相当）は、教示された動作軌跡Ｔを入力する。
【００４０】
図４（ｂ）に示すように、コントローラ３０（領域設定部に相当）は、動作軌跡Ｔの周囲に、ロボット２０の動作点が設定されることを許容する許容領域Ｒを設定する。許容領域Ｒは、動作軌跡Ｔを含み、動作軌跡Ｔの周囲に所定の太さ（広さ）で設定されている。
【００４１】
図４（ｃ）に示すように、コントローラ３０（点群設定部に相当）は、許容領域Ｒの範囲内においてロボット２０の動作点Ｐ（１），Ｐ（２）を選択し、動作軌跡Ｔの始点Ｓ（一端）から終点Ｅ（他端）まで障害物Ｂを避けて元の動作点と次の動作点とを直線（線）で結ぶことを繰り返して、動作点（始点Ｓ、動作点Ｐ（１），Ｐ（２）、終点Ｅ）の集まりである動作点群を設定する。動作点群を設定する条件は以下の通りである。
【００４２】
（１）動作点同士を結ぶ直線は、できるだけ教示された動作軌跡Ｔに近いこと。（２）動作点同士を結ぶ直線は障害物Ｂに干渉しないこと。（３）動作点の数はできるだけ少ないこと。
【００４３】
図４（ｄ）に示すように、コントローラ３０（プログラム生成部に相当）は、動作点群に基づいて動作プログラムを生成する。例えば、動作点群に含まれる始点Ｓ、動作点Ｐ（１），Ｐ（２）、終点Ｅを順に直線で結んだ動作軌跡となるように、動作プログラムを生成する。
【００４４】
図５は、動作プログラム生成の手順を示すフローチャートである。この一連の処理は、コントローラ３０により実行される。
【００４５】
まず、教示された動作軌跡Ｔを入力する（Ｓ１１）。許容領域Ｒを設定する（Ｓ１２）。具体的には、図６（ａ）に示すように、動作軌跡Ｔを略中心として、周囲に所定の太さ（広さ）の許容領域Ｒを設定する。許容領域Ｒは、障害物Ｂから少なくとも第１距離だけ離れており、障害物Ｂから第２距離以上は離れていない。第１距離は、ロボット２０が障害物Ｂを安全に避けることのできる距離である。第２距離は、ロボット２０が障害物Ｂから離れすぎて、ロボット２０の動作効率が低下する距離である。さらに、動作軌跡Ｔの両端部（始点Ｓ及び終点Ｅ）の周囲に設定される許容領域Ｒよりも、動作軌跡Ｔの中間部の周囲に設定される許容領域Ｒを広く設定する。詳しくは、動作軌跡Ｔの両端部から中間部へ近付くほど、許容領域Ｒを広く設定する。
【００４６】
続いて、障害物Ｂと干渉直前の移動点Ｐｔｂ（後述）を、暫定の動作点Ｐｐ（ｎ）として選択する（Ｓ１３）。初回は、始点Ｓを暫定の動作点Ｐｐ（０）として選択する。以降は、障害物Ｂと干渉直前の移動点Ｐｔを、暫定の動作点Ｐｐ（ｎ）として選択する。なお、暫定の動作点Ｐｐ（ｎ）が元の動作点に相当する。
【００４７】
続いて、暫定の動作点Ｐｐ（ｎ）から、動作軌跡Ｔに沿って移動点Ｐｔを移動させる（Ｓ１４）。なお、移動点Ｐｔが次の動作点に相当する。暫定の動作点Ｐｐ（ｎ）と移動点Ｐｔとを直線で結ぶ（Ｓ１５）。直線が障害物Ｂと干渉（接触）したか否か判定する（Ｓ１６）。例えば、図６（ｂ）に示すように、始点Ｓ（暫定の動作点Ｐｐ（ｎ））と移動点Ｐｔとを、障害物Ｂを避けて直線で結ぶことができない状態であるか否か判定する。この判定において、直線が障害物Ｂと干渉したと判定した場合（Ｓ１６：ＹＥＳ）、Ｓ１３の処理を実行する。すなわち、図６（ｂ）に示すように、障害物Ｂと干渉直前の移動点Ｐｔｂを、暫定の動作点Ｐｐ（ｎ）として選択する。
【００４８】
一方、Ｓ１６の判定において、直線が障害物Ｂと干渉していないと判定した場合（Ｓ１６：ＮＯ）、移動点ｐｔが終点Ｅに到達したか否か判定する（Ｓ１７）。この判定において、移動点ｐｔが終点Ｅに到達していないと判定した場合（Ｓ１７：ＮＯ）、再度Ｓ１４の処理を実行する。すなわち、図６（ｃ）に示すように、暫定の動作点Ｐｐ（１）から、動作軌跡Ｔに沿って移動点Ｐｔを移動させる。
【００４９】
一方、Ｓ１７の判定において、移動点ｐｔが終点Ｅに到達したと判定した場合（Ｓ１７：ＹＥＳ）、暫定の動作点Ｐｐ（ｎ）を順に直線で結んで第１動作線Ｌ１を特定する（Ｓ１８、図６（ｄ））。なお、終点Ｅは、最後の暫定の動作点Ｐｐ（ｎ）である。
【００５０】
続いて、教示された動作軌跡Ｔと第１動作線Ｌ１との類似度を算出する（Ｓ１９）。具体的には、動作軌跡Ｔ上の点の座標と第１動作線Ｌ１上の点の座標との相関係数を、類似度として算出する。相関係数は、２つの配列が完全に一致する場合に「１」となる。例えば、図７（ａ）に示すように、動作軌跡Ｔと第１動作線Ｌ１との類似度が０．５となる。
【００５１】
続いて、許容領域Ｒの範囲内で暫定の動作点Ｐｐ（ｎ）を微小移動させる（Ｓ２０）。具体的には、第１動作線Ｌ１を移動させた第２動作線Ｌ２と、動作軌跡Ｔとの類似度が上昇すると予測される方向へ暫定の動作点Ｐｐ（ｎ）を微小移動させる。第２動作線Ｌ２は、微小移動させた暫定の動作点Ｐｐ（ｎ）を順に直線で結んで特定される動作線である。類似度が上昇すると予測される方向は、周知の最適化アルゴリズムを用いて求めることができる。なお、微小移動前の暫定の動作点Ｐｐ（ｎ）が変更前の動作点に相当し、微小移動後の暫定の動作点Ｐｐ（ｎ）が変更後の動作点に相当する。そして、暫定の動作点Ｐｐ（ｎ）を順に直線で結んで第２動作線Ｌ２を特定する（Ｓ２１、図７（ｂ））。
【００５２】
続いて、教示された動作軌跡Ｔと第２動作線Ｌ２との類似度を算出する（Ｓ２２）。例えば、図７（ｂ）に示すように、動作軌跡Ｔと第２動作線Ｌ２との類似度が０．６となる。暫定の動作点Ｐｐ（ｎ）を移動前の類似度よりも、暫定の動作点Ｐｐ（ｎ）を移動後の類似度が高いか否か判定する（Ｓ２３）。暫定の動作点Ｐｐ（ｎ）を移動前の類似度は、初回は動作軌跡Ｔと第１動作線Ｌ１との類似度であり、以降は動作軌跡Ｔと更新（後述）された第２動作線Ｌ２との類似度である。この判定において、移動前の類似度よりも移動後の類似度が高いと判定した場合（Ｓ２３：ＹＥＳ）、暫定の動作点Ｐｐ（ｎ）を今回微小移動後の暫定の動作点Ｐｐ（ｎ）に更新する（Ｓ２４）。一方、この判定において、移動前の類似度よりも移動後の類似度が高くないと判定した場合（Ｓ２３：ＮＯ）、Ｓ２５の処理へ進む。
【００５３】
続いて、Ｓ２０〜Ｓ２４の処理が所定回数繰り返されたか否か判定する（Ｓ２５）。所定回数は、上記類似度の上昇率が所定値よりも小さくなる回数である。あるいは、Ｓ２０〜Ｓ２４の処理の繰り返しに要する処理時間が、所定時間よりも短くなるように所定回数を決めてもよい。この判定において、Ｓ２０〜Ｓ２４の処理が所定回数繰り返されていないと判定した場合（Ｓ２５：ＮＯ）、再度Ｓ２０の処理から実行する。
【００５４】
一方、Ｓ２５の判定において、Ｓ２０〜Ｓ２４の処理が所定回数繰り返されたと判定した場合（Ｓ２５：ＹＥＳ）、更新された最終の暫定の動作点Ｐｐ（ｎ）を、ロボット２０の動作点Ｐ（ｎ）の集まりである動作点群として設定する（Ｓ２６）。すなわち、動作軌跡Ｔと第２動作線Ｌ２との類似度が最も高くなった第２動作線Ｌ２を特定する暫定の動作点の集まりを、動作点群として設定する。例えば、図７（ｃ）に示すように、Ｓ２０〜Ｓ２４の処理が所定回数繰り返した後に上記類似度が０．８になっており、この時の第２動作線Ｌ２を特定する暫定の動作点Ｐｐ（０）〜Ｐｐ（３）を動作点群として設定する。そして、図７（ｄ）に示すように、暫定の動作点Ｐｐ（０）〜Ｐｐ（３）を、動作点Ｐ（０）〜Ｐ（３）とする。
【００５５】
続いて、設定された動作点群に基づいて、動作プログラムを生成する（Ｓ２７）。具体的には、動作点群に含まれる動作点Ｐ（０）（始点Ｓ）、動作点Ｐ（１），Ｐ（２）、動作点Ｐ（３）（終点Ｅ）を順に直線で結んだ動作軌跡となるように、動作プログラムを生成する。すなわち、更新された最終の動作線Ｌ２をロボット２０の動作軌跡とするように、動作プログラムを生成する。その後、この一連の処理を終了する（ＥＮＤ）。
【００５６】
なお、Ｓ１１の処理が軌跡入力部としての処理に相当し、Ｓ１２の処理が領域設定部としての処理に相当し、Ｓ１３〜Ｓ２６の処理が点群設定部としての処理に相当し、Ｓ２７の処理がプログラム生成部としての処理に相当する。
【００５７】
以上詳述した本実施形態は、以下の利点を有する。
【００５８】
・教示されたロボット２０の動作軌跡Ｔが入力される。そして、入力された動作軌跡Ｔの周囲に、ロボット２０の動作点Ｐ（ｎ）が設定されることを許容する許容領域Ｒが設定される。このため、動作軌跡Ｔ上に限らず、動作軌跡Ｔの周囲までロボット２０の動作点Ｐ（ｎ）を設定することが可能となる。
【００５９】
・許容領域Ｒの範囲内において、ロボット２０の暫定の動作点Ｐｐ（ｎ）が選択される。ここで、コントローラ３０は、動作軌跡Ｔの一端から他端まで障害物Ｂを避けて元の暫定の動作点Ｐｐ（ｎ−１）と次の暫定の動作点Ｐｐ（ｎ）とを線で結ぶことを繰り返して、動作点Ｐ（ｎ）の集まりである動作点群を設定する。このため、教示される動作軌跡Ｔがばらつく場合であっても、教示された動作軌跡Ｔ上から許容領域Ｒまで広げた範囲内で、適切な動作点Ｐ（ｎ）を選択して動作点群を設定することができる。そして、設定された動作点群に基づいて、動作プログラムが生成される。その結果、コントローラ３０は、適切な動作プログラムを生成することができる。
【００６０】
・許容領域Ｒの範囲内において第１動作線Ｌ１を特定する暫定の動作点Ｐｐ（ｎ）の位置が変更され、変更後の暫定の動作点Ｐｐ（ｎ）が直線で結ばれて第２動作線Ｌ２が特定される。そして、動作軌跡Ｔと第１動作線Ｌ１との類似度よりも動作軌跡Ｔと第２動作線Ｌ２との類似度が高い場合に、第２動作線Ｌ２を特定する暫定の動作点Ｐｐ（ｎ）の集まりが動作点群として設定される。このため、教示された動作軌跡Ｔに類似する動作線を特定する暫定の動作点Ｐｐ（ｎ）の集まりを、動作点群として設定することができる。したがって、許容領域Ｒの範囲内で適切な動作点群を設定しつつ、教示された動作軌跡Ｔに類似する動作軌跡となるように動作プログラムを生成することができる。
【００６１】
・許容領域Ｒの範囲内において第１動作線Ｌ１を特定する暫定の動作点Ｐｐ（ｎ）の位置を変更して、変更後の暫定の動作点Ｐｐ（ｎ）を直線で結んで第２動作線Ｌ２を特定することが所定回数繰り返される。そして、動作軌跡Ｔと第２動作線Ｌ２との類似度が最も高くなった第２動作線Ｌ２を特定する暫定の動作点Ｐｐ（ｎ）の集まりが、動作点群として設定される。このため、教示された動作軌跡Ｔに一層近い動作軌跡となるように、動作プログラムを生成することができる。
【００６２】
・動作点Ｐ（ｎ）を直線で結んだ第２動作線Ｌ２をロボット２０の動作軌跡とするように、動作プログラムが生成される。このため、動作軌跡に無駄な曲線が多く含まれることを抑制することができ、動作効率が低下することを抑制することができる。
【００６３】
・動作軌跡Ｔの両端部の周囲に設定される許容領域Ｒよりも、動作軌跡Ｔの中間部の周囲に設定される許容領域Ｒが広く設定される。このため、動作軌跡Ｔの両端部から離れた位置では、障害物Ｂを避けて動作点Ｐ（ｎ）を設定し易くなり、設定する動作点Ｐｐ（ｎ）の数を少なくすることができる。その結果、動作軌跡を簡潔な形状にすることができる。
【００６４】
なお、上記実施形態を、以下のように変更して実施することもできる。
【００６５】
・上記実施形態では、動作軌跡Ｔの両端部から中間部へ近付くほど、許容領域Ｒを広く設定した。これに対して、動作軌跡Ｔの両端部の周囲に設定される許容領域Ｒよりも、動作軌跡Ｔの中間部の周囲に設定される許容領域Ｒを広く設定し、動作軌跡Ｔの中間部の周囲に設定される許容領域Ｒを一定の広さにしてもよい。
【００６６】
・入力された動作軌跡Ｔが適切でなかった場合は、障害物Ｂの直近を第１動作線Ｌ１が通過するおそれがある。そこで、コントローラ３０（点群設定部）は、設定された許容領域Ｒの範囲内において第１動作線Ｌ１を特定する暫定の動作点Ｐｐ（ｎ）の位置を変更して、変更後の暫定の動作点Ｐｐ（ｎ）を直線で結んで第２動作線Ｌ２を特定する際に、第２動作線Ｌ２と障害物Ｂとの距離が所定距離よりも長くなるように、暫定の動作点Ｐｐ（ｎ）の位置を変更してもよい。こうした構成によれば、障害物Ｂとの距離が所定距離よりも長い第２動作線Ｌ２を特定する暫定の動作点Ｐｐ（ｎ）の集まりを、動作点群として設定することができる。したがって、コントローラ３０は、障害物Ｂと動作軌跡との距離が所定距離よりも長くなるように、動作プログラムを生成することができる。あるいは、障害物Ｂとの距離が所定距離よりも長くなるように許容領域Ｒを設定し、その許容領域Ｒの範囲内となるように第２動作線Ｌ２を特定することもできる。
【００６７】
・図８は、動作プログラム生成の手順の変更例を示すフローチャートである。この変更例では、入力された動作軌跡Ｔと動作点群との近似度を評価する処理と、暫定の動作点Ｐｐ（ｎ）を変更する処理とが、図５のフローチャートと相違している。この一連の処理は、コントローラ３０により実行される。なお、図５のフローチャートと同一の処理については、同一のステップ番号を付すことにより説明を省略する。
【００６８】
Ｓ１１〜Ｓ１８の処理は図５と同一である。続いて、教示された動作軌跡Ｔと第１動作線Ｌ１との近似度を評価する評価値Ｖを算出する（Ｓ１９Ａ）。具体的には、動作軌跡Ｔ上の点の座標と第１動作線Ｌ１上の点の座標との相関係数Ｃｃを算出する。そして、相関係数Ｃｃから、暫定の動作点Ｐｐ（ｎ）の個数ｎに係数α（０＜α＜０．１）を掛けた値を引いて、評価値Ｖを算出する（Ｖ＝Ｃｃ−α×ｎ）。続いて、第１動作線Ｌ１の評価値Ｖが評価値目標値Ｖｔよりも大きいか否か判定する（Ｓ１９Ｂ）。評価値目標値Ｖｔは、例えば０．７に設定されている。この判定において、第１動作線Ｌ１の評価値Ｖが評価値目標値Ｖｔよりも大きいと判定した場合（Ｓ１９Ｂ：ＹＥＳ）、Ｓ２６の処理へ進む。すなわち、第１動作線Ｌ１を特定する暫定の動作点Ｐｐ（ｎ）の評価値Ｖが、評価値目標値Ｖｔ（近似目標値）を超えている場合に、第１動作線Ｌ１を特定する暫定の動作点Ｐｐ（ｎ）の集まりを、ロボット２０の動作点Ｐ（ｎ）の集まりである動作点群として設定する。一方、この判定において、第１動作線Ｌ１の評価値Ｖが評価値目標値Ｖｔよりも大きくないと判定した場合（Ｓ１９Ｂ：ＮＯ）、Ｓ２０Ａの処理へ進む。
【００６９】
続いて、許容領域Ｒの範囲内で暫定の動作点Ｐｐ（ｎ）を微小移動させる又は暫定の動作点Ｐｐ（ｎ）の個数を１つ増加させる（Ｓ２０Ａ）。具体的には、上記実施形態と同様に暫定の動作点Ｐｐ（ｎ）を所定範囲で微小移動させ、その後に暫定の動作点Ｐｐ（ｎ）の個数を１つ増加させる。Ｓ２１の処理は、図５と同一である。
【００７０】
続いて、教示された動作軌跡Ｔと第２動作線Ｌ２との近似度を評価する評価値Ｖを算出する（Ｓ２２Ａ）。評価値Ｖの算出方法はＳ１９Ａの処理と同一である。暫定の動作点Ｐｐ（ｎ）を移動前の評価値Ｖよりも、暫定の動作点Ｐｐ（ｎ）を移動後の評価値Ｖが高いか否か判定する（Ｓ２３Ａ）。この判定において、移動前の評価値Ｖよりも移動後の評価値Ｖが高いと判定した場合（Ｓ２３Ａ：ＹＥＳ）、暫定の動作点Ｐｐ（ｎ）を今回微小移動後の暫定の動作点Ｐｐ（ｎ）に更新する（Ｓ２４）。一方、この判定において、移動前の評価値Ｖよりも移動後の評価値Ｖが高くないと判定した場合（Ｓ２３Ａ：ＮＯ）、Ｓ２５Ａの処理へ進む。
【００７１】
続いて、Ｓ２０Ａ〜Ｓ２４の処理が所定回数繰り返されたか否か、又は評価値Ｖが評価値目標値Ｖｔを超えたか否か判定する（Ｓ２５Ａ）。この判定において、否定判定した場合（Ｓ２５Ａ：ＮＯ）、再度Ｓ２０Ａの処理から実行する。一方、この判定において肯定判定した場合（Ｓ２５Ａ：ＹＥＳ）、Ｓ２６の処理へ進む。なお、Ｓ１９Ｂの処理が目標値設定部及び点群設定部としての処理に相当し、Ｓ１３〜Ｓ２６の処理が点群設定部としての処理に相当する。
【００７２】
上記構成によれば、最小個数の動作点Ｐ（ｎ）に基づく動作軌跡となるように動作プログラムを生成することができ、ロボット２０の動作効率を向上させることができる。さらに、最小個数の動作点Ｐ（ｎ）に基づき動作プログラムが生成されるため、入力された動作軌跡Ｔにゆらぎがあったとしても、生成される動作軌跡に無駄な曲線が含まれることを抑制することができ、動作効率が低下することを抑制することができる。また、暫定の動作点Ｐｐ（ｎ）の位置及び個数の少なくとも一方を変更することで、暫定の動作点Ｐｐ（ｎ）の集まりの評価値Ｖが評価値目標値Ｖｔを超えるようにすることができる。さらに、暫定の動作点Ｐｐ（ｎ）の個数が増えるほど、第２動作線Ｌ２を特定する暫定の動作点Ｐｐ（ｎ）の評価値Ｖが、評価値目標値Ｖｔを超えていると判定されにくくなる。このため、できるだけ少ない個数の動作点Ｐ（ｎ）に基づく動作軌跡となるように、動作プログラムを生成することができる。
【００７３】
・上記実施形態では、第１動作線Ｌ１を特定した後に、第１動作線Ｌ１を特定する暫定の動作点Ｐｐ（ｎ）を微小移動させて、上記類似度が最も高くなるように動作点群を最適化した。これに対して、第１動作線Ｌ１を特定せず、許容領域Ｒの範囲内において、上記類似度が最も高くなるように、遺伝的アルゴリズム等により動作点群を最適化することもできる。その場合は、動作点Ｐ（ｎ）の数が多くなりすぎないように、動作点Ｐ（ｎ）の数を制限することが望ましい。
【００７４】
・上記実施形態では、コントローラ３０は、動作点Ｐ（ｎ）を直線で結んだ第２動作線Ｌ２をロボット２０の動作軌跡とするように、動作プログラムを生成した。これに対して、コントローラ３０は、動作点Ｐ（ｎ）を曲線で結んだ動作線をロボット２０の動作軌跡とするように、動作プログラムを生成してもよい。その場合であっても、動作点Ｐ（ｎ）の集まりである動作点群が適切に設定されているため、適切な動作プログラムを生成することができる。
【００７５】
・障害物Ｂは、１つに限らず、複数あってもよい。その場合は、図５のＳ１６の処理において、直線が複数の障害物Ｂとそれぞれ干渉（接触）したか否か判定すればよい。そして、直線が少なくとも１つの障害物Ｂと干渉した場合に、Ｓ１３の処理へ進めばよい。
【００７６】
・ロボット２０として、水平多関節型のロボット等を採用することもできる。
【符号の説明】
【００７７】
１０…ロボットシステム、２０…ロボット、３０…コントローラ（動作プログラム生成装置）、Ｂ…障害物。
【図１】
2018144147.tif 000003
【図２】
2018144147.tif 000004
【図３】
2018144147.tif 000005
【図４】
2018144147.tif 000006
【図５】
2018144147.tif 000007
【図６】
2018144147.tif 000008
【図７】
2018144147.tif 000009
【図８】
2018144147.tif 000010