(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-24
(45)【発行日】2024-06-03
(54)【発明の名称】制御方法、制御装置、ロボットシステム、物品の製造方法、動作プログラム作成方法、動作プログラム作成装置、表示装置、表示装置の制御方法、プログラムおよび記録媒体
(51)【国際特許分類】
B25J 9/22 20060101AFI20240527BHJP
G05B 19/42 20060101ALI20240527BHJP
【FI】
B25J9/22 A
G05B19/42 P
(21)【出願番号】P 2019197997
(22)【出願日】2019-10-30
【審査請求日】2022-10-25
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】徳岡 岳海
【審査官】稲垣 浩司
(56)【参考文献】
【文献】特開2003-103481(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 9/22
G05B 19/42
(57)【特許請求の範囲】
【請求項1】
ロボットを、複数の教示点に基づき制御する制御方法であって、
前記複数の教示点において、動作順序と、前記ロボットが実現する第1姿勢を設定した第1動作プログラムを取得し、
前記第1動作プログラムにおいて、前記複数の教示点の内、前記動作順序が変更された少なくとも2つの教示点を特定し、
前記少なくとも2つの教示点において前記第1姿勢とは異なる第2姿勢を実現し、前記複数の教示点の内前記少なくとも2つの教示点以外の教示点では前記第1姿勢を実現するように、前記ロボットを変更された前記動作順序で動作させる第2動作プログラムを取得
し、
動作時間が前記第1動作プログラムの動作時間よりも短い前記第2動作プログラムを、前記ロボットを制御する動作プログラムとして選択する、
ことを特徴とする制御方法。
【請求項2】
請求項1に記載の制御方法において、
前記動作順序を変更することで前記第1動作プログラムにおける動作時間よりも当該変更後の動作時間が短くなる場合は当該変更を維持し、当該変更により前記第1動作プログラムにおける動作時間よりも動作時間が短くならない場合は当該変更を維持しない、
ことを特徴とする制御方法。
【請求項3】
請求項1または2に記載の制御方法において、
前記複数の教示点の内、前記ロボットが実現する姿勢が前記第1姿勢で固定されている教示点が存在する場合、前記第1姿勢で固定されている教示点を特定し、
前記複数の教示点の内、前記第1姿勢で固定されている教示点においては前記第1姿勢を前記ロボットが実現するように前記第2動作プログラムを取得する、
ことを特徴とする制御方法。
【請求項4】
請求項3に記載の制御方法において、
前記第1姿勢で固定されている教示点については前記動作順序の変更を行わない、
ことを特徴とする制御方法。
【請求項5】
請求項3または4に記載の制御方法において、
前記第1姿勢で固定されている教示点については、前記第1姿勢と異なる姿勢を前記ロボットが実現するような前記第2動作プログラムを取得しない、
ことを特徴とする制御方法。
【請求項6】
請求項1から5のいずれか1項に記載の制御方法において、
前記第2動作プログラムにおいて最も動作時間の短い第2動作プログラムの動作時間が前記第1動作プログラムの動作時間よりも短い場合、当該最も動作時間の短い第2動作プログラムを、前記ロボットを制御する動作プログラムとして選択する、
ことを特徴とする制御方法。
【請求項7】
請求項1から6のいずれか1項に記載の制御方法において、
前記第1動作プログラムを最近傍法で取得する、
ことを特徴とする制御方法。
【請求項8】
請求項1から7のいずれか1項に記載の制御方法において、
前記第1姿勢または前記第2姿勢をユーザにより設定できる、
ことを特徴とする制御方法。
【請求項9】
請求項1から8のいずれか1項に記載の制御方法において、
前記複数の教示点を、前記ロボットの所定部位の姿勢に基づき設定する、
ことを特徴とする制御方法。
【請求項10】
請求項9に記載の制御方法において、
前記第2姿勢を、前記第1姿勢における前記所定部位の姿勢から逆運動学を用いて取得する、
ことを特徴とする制御方法。
【請求項11】
請求項9に記載の制御方法において、
前記ロボットは多回転可能な関節を有しており、
前記第2姿勢を、前記第1姿勢において前記関節が設定されている値に360度加算または減算して取得する、
ことを特徴とする制御方法。
【請求項12】
請求項9から11のいずれか1項に記載の制御方法において、
前記複数の教示点において前記ロボットの前記所定部位が実現する姿勢に制約が設定されていない、
ことを特徴とする制御方法。
【請求項13】
請求項1から12のいずれか1項に記載の制御方法において、
所定の収束条件を満たすまで、前記第2動作プログラムを取得する、
ことを特徴とする制御方法。
【請求項14】
請求項13に記載の制御方法において、
前記所定の収束条件は、所定の動作時間となった前記第2動作プログラムの取得、前記動作順序を入れ換えた回数、前記第2動作プログラムを取得した数、の少なくとも1つに基づき設定される、
ことを特徴とする制御方法。
【請求項15】
ロボットを、複数の教示点に基づき制御する制御装置であって、
前記複数の教示点において、動作順序と、前記ロボットが実現する第1姿勢を設定した第1動作プログラムを取得し、
前記第1動作プログラムにおいて、前記複数の教示点の内、前記動作順序が変更された少なくとも2つの教示点を特定し、
前記少なくとも2つの教示点において前記第1姿勢とは異なる第2姿勢を実現し、前記複数の教示点の内前記少なくとも2つの教示点以外の教示点では前記第1姿勢を実現するように、前記ロボットを変更された前記動作順序で動作させる第2動作プログラムを取得
し、
動作時間が前記第1動作プログラムの動作時間よりも短い前記第2動作プログラムを、前記ロボットを制御する動作プログラムとして選択する、
ことを特徴とする制御装置。
【請求項16】
請求項15に記載の制御装置により制御されるロボットアームを前記ロボットとして備えたロボットシステム。
【請求項17】
請求項16に記載のロボットシステムを用いて物品の製造を行うことを特徴とする物品の製造方法。
【請求項18】
ロボットの動作を、複数の教示点に基づいて制御する動作プログラムを作成する動作プログラム作成方法であって、
前記複数の教示点において、動作順序と、前記ロボットが実現する第1姿勢を設定した第1動作プログラムを取得し、
前記第1動作プログラムにおいて、前記複数の教示点の内、前記動作順序が変更された少なくとも2つの教示点を特定し、
前記少なくとも2つの教示点において前記第1姿勢とは異なる第2姿勢を実現し、前記複数の教示点の内前記少なくとも2つの教示点以外の教示点では前記第1姿勢を実現するように、前記ロボットを変更された前記動作順序で動作させる第2動作プログラムを取得
し、
動作時間が前記第1動作プログラムの動作時間よりも短い前記第2動作プログラムを、前記ロボットを制御する動作プログラムとして選択する、
ことを特徴とする動作プログラム作成方法。
【請求項19】
ロボットの動作を、複数の教示点に基づいて制御する動作プログラムを作成する動作プログラム作成装置であって、
前記複数の教示点において、動作順序と、前記ロボットが実現する第1姿勢を設定した第1動作プログラムを取得し、
前記第1動作プログラムにおいて、前記複数の教示点の内、前記動作順序が変更された少なくとも2つの教示点を特定し、
前記少なくとも2つの教示点において前記第1姿勢とは異なる第2姿勢を実現し、前記複数の教示点の内前記少なくとも2つの教示点以外の教示点では前記第1姿勢を実現するように、前記ロボットを変更された前記動作順序で動作させる第2動作プログラムを取得
し、
動作時間が前記第1動作プログラムの動作時間よりも短い前記第2動作プログラムを、前記ロボットを制御する動作プログラムとして選択する、
ことを特徴とする動作プログラム作成装置。
【請求項20】
ロボットに設定される複数の教示点の情報を表示する表示装置であって、
前記複数の教示点において、動作順序と、前記ロボットが実現する第1姿勢を設定した第1動作プログラムを取得し、
前記第1動作プログラムにおいて、前記複数の教示点の内、前記動作順序が変更された少なくとも2つの教示点を特定し、
前記少なくとも2つの教示点において前記第1姿勢とは異なる第2姿勢を実現し、前記複数の教示点の内前記少なくとも2つの教示点以外の教示点では前記第1姿勢を実現するように、前記ロボットを変更された前記動作順序で動作させる第2動作プログラムを取得し、
動作時間が前記第1動作プログラムの動作時間よりも短い前記第2動作プログラムを、前記ロボットを制御する動作プログラムとして選択し、
前記第2動作プログラムに関する情報を表示する、
ことを特徴とする表示装置。
【請求項21】
請求項20に記載の表示装置において、
表示されている前記第2動作プログラムに関する情報の変更を受け付ける、
ことを特徴とする表示装置。
【請求項22】
請求項20または21に記載の表示装置において、
前記第2動作プログラムにおける動作時間が、前記第1動作プログラムにおける動作時間よりもどのくらい短くなったか表示する、
ことを特徴とする表示装置。
【請求項23】
ロボットに設定される複数の教示点の情報を表示する表示装置の制御方法であって、
前記複数の教示点において、動作順序と、前記ロボットが実現する第1姿勢を設定した第1動作プログラムを取得し、
前記第1動作プログラムにおいて、前記複数の教示点の内、前記動作順序が変更された少なくとも2つの教示点を特定し、
前記少なくとも2つの教示点において前記第1姿勢とは異なる第2姿勢を実現し、前記複数の教示点の内前記少なくとも2つの教示点以外の教示点では前記第1姿勢を実現するように、前記ロボットを変更された前記動作順序で動作させる第2動作プログラムを取得し
動作時間が前記第1動作プログラムの動作時間よりも短い前記第2動作プログラムを、前記ロボットを制御する動作プログラムとして選択し、
前記第2動作プログラムに関する情報を表示する、
ことを特徴とする制御方法。
【請求項24】
請求項1から14のいずれか1項に記載の制御方法、または請求項18に記載の
動作プログラム作成方法、または請求項23に記載の制御方法を実行可能なプログラム。
【請求項25】
請求項24に記載のプログラムを格納した、コンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット装置の制御方法に関する。
【背景技術】
【0002】
近年、工場等の生産ラインにおける製品の組立、検査等の作業はロボット装置による自動化が進められている。用いられるロボット装置は数多くの種類が存在するが、中でも広く普及しているのは回転駆動する関節を有するロボット装置である。このようなロボット装置を動作させる際には教示作業を行う。教示作業とは、ロボット装置が有する全ての関節の角度を一意に定めることである。作業者はロボット装置の作業内容に応じて、ロボット装置の手先が位置すべき作業点を設定し、各作業点におけるロボット装置の手先の姿勢を設定する。それに基づきロボット装置の関節の角度が決定される。複数の作業点に対して連続的にロボット装置を動作させる場合は、各作業点に対してそれぞれ教示作業を行い、各作業点を移動する順序を記述した動作プログラムを作成する。
【0003】
しかしながら生産ラインにおける作業の中では、数十から数百の作業点が存在する作業がある。そしてそれらの作業点を移動する順序、各作業点におけるロボット装置の手先の姿勢には制約がない場合がある。こういった作業の場合、各作業点を移動する順序と、各作業点におけるロボット装置の手先の姿勢は、工程設計の際に作業者が勘やコツに基づいて決定する場合が多い。そのため、数十から数百の作業点について、順序と姿勢を決定する作業は試行錯誤を伴う煩雑な作業であり、決定した順序と姿勢では、ロボット装置の動作時間が長くなる非効率な動作プログラムとなり得る場合が往々にしてある。
【0004】
このような課題を解決するため、特許文献1では巡回セールスマン問題の解法を利用して作業点の順序を決定し、作業者の熟練度に依存せずロボット装置が適切な順序で移動できるロボットプログラミング装置を提案している。また、特許文献2では各作業点におけるロボット装置の手先の姿勢を適正化し、作業者の熟練度に依存せずロボット装置が各作業点において適切な姿勢で作業できる姿勢適正化方法が提案されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2017-140684号公報
【文献】特開2003-103481号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら特許文献1、特許文献2に記載された技術では以下に示す課題がある。例えば、15の作業点が存在し、各作業点につき5つの姿勢を取り得る工程について考える。特許文献1の手法により15の作業点の順序の最適化を図ることはできるが、特許文献2の手法により姿勢も最適化するためには作業点の順序を入れ替えるたびに多数の姿勢の組み合わせを考慮しなければならない。仮に1つの組み合わせの動作プログラムの算出が短い時間で済むとしても、膨大な時間が必要になる。
【0007】
本発明は以上のような課題を鑑みてなされたものであり、順序と姿勢の両方を考慮しながら動作時間の短い動作プログラムを、従来手法よりも少しでも短い計算時間で作成することを目的としている。
【課題を解決するための手段】
【0008】
上記課題を解決するために、ロボットを、複数の教示点に基づき制御する制御方法であって、前記複数の教示点において、動作順序と、前記ロボットが実現する第1姿勢を設定した第1動作プログラムを取得し、前記第1動作プログラムにおいて、前記複数の教示点の内、前記動作順序が変更された少なくとも2つの教示点を特定し、前記少なくとも2つの教示点において前記第1姿勢とは異なる第2姿勢を実現し、前記複数の教示点の内前記少なくとも2つの教示点以外の教示点では前記第1姿勢を実現するように、前記ロボットを変更された前記動作順序で動作させる第2動作プログラムを取得する、ことを特徴とする制御方法を採用した。
【発明の効果】
【0009】
本発明によれば、順序と姿勢の両方を考慮しながら動作時間の短い動作プログラムを、従来手法よりも少しでも短い計算時間で作成することができる。
【図面の簡単な説明】
【0010】
【
図1】実施形態におけるロボットシステム100を示す概略図である。
【
図2】実施形態におけるロボットシステム100のブロック図である。
【
図3】実施形態におけるシミュレーション装置600の概略図である。
【
図5】実施形態におけるディスプレイ602の表示例である。
【
図6】実施形態における教示点候補の概略図である。
【
図7】実施形態における動作プログラムの概略図である。
【
図8】実施形態における動作プログラムの概略図である。
【
図9】実施形態における動作プログラムの概略図である。
【
図10】実施形態における作業点の数と教示点候補数の関係を示したグラフである。
【
図11】実施形態におけるディスプレイ602の表示例である。
【
図12】実施形態におけるディスプレイ602の表示例である。
【
図13】実施形態における教示点候補の概略図である。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して本発明を実施するための形態について説明する。なお、以下に示す実施形態はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、本実施形態で取り上げる数値は、参考数値であって、本発明を限定するものではない。
【0012】
(第1の実施形態)
図1は、本実施形態におけるロボットシステム100を、XYZ座標系のある方向から見た平面図である。なお以下の図面において、図中の矢印X、Y、Zはロボットシステム100全体の座標系を示す。一般に、ロボット装置を用いたロボットシステムでは、XYZ3次元座標系は、設置環境全体のワールド座標系の他に、制御の都合などによって、ロボットハンド、指部、関節などに関して適宜ローカル座標系を用いる場合がある。本実施形態ではロボット装置100全体の座標系であるワールド座標系をXYZ、ローカル座標系をxyzで表すものとする。
【0013】
図1に示すように、ロボットシステム100は、多関節のロボットアーム本体200、ロボットアーム本体200に設けられた撮像装置300、ロボットアーム本体200の動作を制御する制御装置400を備えている。
【0014】
さらに、ロボットアーム制御装置400にロボットアーム本体200が取りうる教示点のデータである教示データを送信する教示装置としての外部入力装置500を備えている。外部入力装置500の一例としてティーチングペンダントが挙げられ、作業者がロボットアーム本体200の位置および姿勢(厳密には全ての関節の角度)を指定するのに用いる。
【0015】
本実施形態では、エンドエフェクタの部位としてロボットアーム本体200の手先に設けられるものが、撮像装置300である場合について説明するが、これに限定するものではなく、適宜ロボットハンド、ロボットツール等に取り換えてよい。ここで、ロボットアーム本体200の手先とは、本実施形態では撮像装置300が設けられている部分のことである。エンドエフェクタとして取り付けられている撮像装置300を手先と呼称する。
【0016】
ロボットアーム本体200の基端となるリンク201は、基台210に設けられている。撮像装置300は、ロボットアーム本体200の手先の位置および姿勢からワーク等を撮像し、ロボットアーム本体200の制御に使用するものである。また、ロボットアーム本体200は、複数のリンク201~206が各関節J
1~J
6でロボットアーム本体200の基端側から手先側に向かって、リンク201~206が順に直列に回転可能に連結されている。また、ロボットアーム本体200は、各関節J
1~J
6を各回転軸まわりにそれぞれ回転駆動させる複数(6つ)のモータ211~216(
図2)を有している。
【0017】
撮像装置300はリンク206に接続され、リンク206が関節J6により回転させられることで、撮像装置300も回転させることができる。そして各関節J1~J6の値を制御することで、撮像装置300(手先)を任意の3次元位置で任意の3方向の姿勢を実現することができる。これら任意の3次元位置における任意の3方向の姿勢を実現する各関節J1~J6の値を教示点とする。
【0018】
そして撮像装置300の代わりにエンドエフェクタとしてロボットハンドを装着させることで、ロボットアーム本体200によりロボットハンドを任意の位置に動作させ、所望の作業を行わせることができる。所望の作業とは例えば、対象物同士を組み付け物品の製造を行う等の作業である。
【0019】
撮像装置300は視野13で示す四角錐領域を撮像可能である。各関節J
1~J
6の値を適切に設定することで、撮像装置300を所望の3次元位置に移動させ、対象物を撮影する。本実施形態では
図1中の点A、点B、点C、点D、点Eに対象物が位置し、撮像装置300により点A、点B、点C、点D、点Eを撮像するものとする。
【0020】
図2は、本実施形態におけるロボット装置100の構成を示すブロック図である。制御装置400は、コンピュータで構成されており、制御部(処理部)としてのCPU(Central Processing Unit)401を備えている。
【0021】
また制御装置400は、記憶部として、ROM(Read Only Memory)402、RAM(Random Access Memory)403、HDD(Hard Disk Drive)404を備えている。また、制御装置400は、記録ディスクドライブ405、各種のインタフェース406~409、411を備えている。
【0022】
CPU401には、ROM402、RAM403、HDD404、記録ディスクドライブ405、各種のインタフェース406~409、411が、バス410を介して接続されている。ROM402には、BIOS等の基本プログラムが格納されている。RAM403は、CPU401の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【0023】
HDD404は、CPU401の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、CPU401に、演算処理を実行させるためのプログラム430を記録するものである。CPU401は、HDD404に記録(格納)されたプログラム430に基づいてロボット制御方法の各工程を実行する。記録ディスクドライブ405は、記録ディスク431に記録された各種データやプログラム等を読み出すことができる。
【0024】
外部入力装置500はインタフェース406に接続されている。CPU401はインタフェース406及びバス410を介して外部入力装置500からの入力を受ける。
【0025】
アーム用モータドライバ230は、インタフェース409に接続されている。各関節J1~J6に設けられるモータ211~216には、モータの回転軸の回転角度を検出するためのエンコーダである入力軸エンコーダ231~236がそれぞれ設けられている。CPU401は、アーム用モータドライバ230、インタフェース409及びバス410を介して各入力軸エンコーダ231~236から検出結果を取得する。また、CPU401は、各関節の指令値のデータを所定時間間隔でバス410及びインタフェース409を介してアーム用モータドライバ230に出力する。
【0026】
撮像装置300はインタフェース411に接続され、バス410を介してCPU401と通信可能に設けられている。CPU401は、バス410、インタフェース411を介して撮像装置300が撮影した画像を取得する。
【0027】
インタフェース407には、モニタ421が接続されており、モニタ421には、CPU401の制御の下、各種画像が表示される。インタフェース408は、書き換え可能な不揮発性メモリや外付けHDD等の記憶部である外部記憶装置422が接続可能に構成されている。
【0028】
なお本実施形態では、コンピュータ読み取り可能な記録媒体がHDD404であり、HDD404にプログラム430が格納される場合について説明するが、これに限定するものではない。プログラム430は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。
【0029】
例えば、プログラム430を供給するための記録媒体としては、ROM402、記録ディスク431、外部記憶装置422等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD-ROM、CD-R、磁気テープ、不揮発性メモリ、ROM等を用いることができる。
【0030】
図3はロボットアーム本体200の動作のシミュレーションを行うシミュレーション装置600の概略図である。シミュレーション装置600は、OS(Operation System)601、ディスプレイ602、キーボード603、マウス604を備えたデスクトップパソコンである。OS601にはロボットアーム本体200のCADデータ及び周辺環境の情報に基づいて作成されたシミュレーションプログラムが格納されている。そしてディスプレイ602にロボットアーム本体200のシミュレーション画面が表示されている。また、ロボットアーム本体200の撮像装置300が撮影すべき点A~点Eの情報もOS601に格納されているものとする。作業者は、キーボード603、マウス604を用いて所定の情報を入力し、点A~点Eを通るロボットアーム本体200の動作プログラムをシミュレーション装置600により作成することが可能となる。以降の説明では、
図1の点A、点B、点C、点D、点Eを順不同にロボットアーム本体200の撮像装置300が撮影し、始点に戻る巡回検査作業の動作プログラムをシミュレーション装置600により作成する方法について説明する。なお本実施形態ではシミュレーション装置600を用いて動作プログラムを作成するが、制御装置400にシミュレーションプログラムを格納し、制御装置400により動作プログラムを作成しても構わない。これにより制御装置400が動作プログラムに基づいてロボットアーム本体200を制御することができる。
【0031】
図4は本発明におけるロボットアーム本体200の動作プログラムを作成する方法の処理の流れを示すフローチャートである。フローチャートは工程S1から工程S9で構成されている。以下、工程S1から工程S9における各処理の内容について図を用いて詳細に説明する。
【0032】
まずS1では、作業者からロボットアーム本体200の作業情報を取得する。作業情報とはロボットアーム本体200の手先の撮像装置300が撮影すべき全ての作業点(点A~点E)の位置座標と、各作業点におけるロボットアーム本体200の手先の姿勢の制約に関する情報のことである。
図5は作業者が作業情報を入力する画面をディスプレイ602に表示した際の例図を示している。
【0033】
図5より列3aには各作業点に関して作業者が任意につけた名称を入力する。本実施形態においては、
図1に示した通り、作業点の名称はA、B、C、D、Eである。列3b、列3c、列3dには各作業点の位置情報を入力する。本実施形態では位置情報はワールド座標系であるXYZ直交座標系で表しており、X座標の値を列3bに、Y座標の値を列3cに、Z座標の値を列3dに入力する。
【0034】
列3e、3f、3g、3h、3i、3j、3kには各作業点におけるロボットアーム本体200の手先の姿勢の制約に関する情報を入力する。本実施形態では、ロボットアーム本体200の手先の姿勢をオイラー角で表す。オイラー角とは、剛体の姿勢の表現方法の一つで、基準座標系に対して剛体に固定された座標系がどれだけ回転しているかをα、β、γの3つの値で表現する。基準座標系が(X,Y,Z)、剛体座標系が(x,y,z)であるとき、(X,Y,Z)をZ軸まわりにα回転させた座標系を(X’,Y’,Z’)とする。(X’,Y’,Z’)をX’軸回りにβ回転させた座標系を(X”,Y”,Z”)とし、(X”,Y”,Z”)をZ”軸まわりにγ回転させたときに剛体座標系(x,y,z)を得ることができる。
【0035】
作業者はまず工程上の制約からα、β、γの各値の最大値と最小値を入力する。列3eにはαの最大値α
maxを、列3fにはαの最小値α
minを、列3gにはβの最大値β
maxを、列3hにはβの最小値β
minを、列3iにはγの最大値γ
maxを、列3jにはγの最小値γ
minをそれぞれ入力する。本実施形態で対象としている作業工程は、点A、点B、点C、点D、点Eをそれぞれにロボットアーム本体200の手先の撮像装置300に撮影させることを要件としており、
図1の視野13で示す四角錐底面の面内方向の回転に関しては制約がない。今回の例ではオイラー角のγの値が視野13で示す四角錐底面の面内方向の回転に対応している。そのため、
図5では全ての点についてαとβの最大値及び最小値を0°とし、γは0°から360°までの値を取るように設定している。
【0036】
列3kにはオイラー角の刻み幅stepを入力する。オイラー角の刻み幅とは、最小値と最大値の範囲内で無限に存在するオイラー角を離散的に扱う際に使用する値である。例えば
図5では点Aについてγの最小値を0°、最大値を360°、刻み幅を90°と入力しているので、点Aはγ=0°,90°,180°,270°のいずれかの値をとる。刻み幅は作業者が任意の値を設定することができる。また、
図5ではロボットアーム本体200の手先の姿勢の制約に関する情報について、全ての点で同一の値を設定しているが、各作業点で独立して値を設定しても構わない。
【0037】
次にS2では、S1で入力された情報を基に、教示点候補の作成を行う。動作プログラムを作成するにあたっては、ロボットアーム本体200の各関節J1~J6が取り得る値を教示点として全て作成する。教示点を作成する際には、ロボットアーム本体200の手先の位置と手先の姿勢から、ロボットアーム本体200のリンクパラメータを基に逆運動学を解き、6つの関節J1からJ6の各値を一意に定める。一般に6軸の垂直多関節ロボットアームの場合、1つの手先の位置、手先の姿勢に対して複数の逆運動学の解が存在する場合があるが、本実施形態では1つの手先姿勢・手先位置に対して1つの逆運動学の解を定めることとする。また、各関節が取る値の情報および、各作業点における各教示点の動作順序を本実施形態における教示点の動作条件とする。すなわち教示点の動作条件とは各教示点において設定される条件である。本実施形態では動作条件として動作順序、各関節が取る値としたが、場合によっては作業点間における速度、加速度、教示点の変更要否等を設定しても構わない。
【0038】
点Aに関して、S1で入力された情報からX=700mm,Y=-350mm,Z=800mm,α=0°,β=0°とし、γ=0°,90°,180°,270°における逆運動学の解をそれぞれ求める。本実施形態では、点Aにおいてγ=90°とγ=180°に関しては逆運動学の解が存在しない。
図6(A)はγ=0°で点Aを撮像しているロボット11の状態を、
図6(B)はγ=270°で点Aを撮像しているロボットアーム本体200の状態を示している。
【0039】
作業点が同じでもロボットアーム本体200の手先の姿勢が異なるものは別々の教示点として扱うため、γの値を下付き添え字に用いてそれぞれ教示点A0、教示点A270と表す。今回は各関節[J1,J2,J3,J4,J5,J6]は以下の表1の値を取る。
【0040】
【0041】
他の作業点についても同様にして逆運動学の解を求め、以下表2~表5に示す教示点が得られる。説明の簡略化のため図による各教示点の例示は割愛する。
【0042】
【0043】
【0044】
【0045】
【0046】
以上、本実施形態において動作プログラムを作成する際に使用する教示点を全て作成した。これらを用いて、ロボットアーム本体200及び撮像装置300を用いて点A、点B、点C、点D、点Eを順不同に撮像し、始点に戻る巡回検査作業の動作プログラムを作成する。
【0047】
各点をどのような順序で巡回するか、という順序の組み合わせ数は作業点数の階乗に等しく、5!=120通り存在する。各点におけるロボットアーム本体200の手先の姿勢の組み合わせ数は、各点で取り得る手先の姿勢数の積に等しく、2×2×2×3×2=48通り存在する。動作プログラムの候補数は順序の組み合わせ数と姿勢の組み合わせ数の積に等しく120×48=5760通り存在する。このように動作プログラム候補は多数存在するが、これら全てについて動作時間の検証を行うことなく、効率的に動作時間の短縮を図る動作プログラムを作成する方法を以下のS3からS8で説明する。
【0048】
次にS3では初期解の生成を行う。初期解とは最初に基準とする動作プログラムのことで、点A、点B、点C、点D、点Eの各作業点のいずれかを撮影するロボットアーム本体200の手先の姿勢に一度ずつ移動し、始点に戻る動作プログラムである必要がある。初期解は最近傍法のようなアルゴリズムで作成した動作プログラムを用いてもよいし、単に作業者が最初に設定した動作プログラムを用いてもよい。最近傍法とは、任意の点を始点として設定し、未移動の点の内で、始点から最も短い動作時間で移動できる点を順に辿るという手順で動作プログラムを作成するアルゴリズムである。
【0049】
今回は作業者がS1で入力した順に、A
0-B
0-C
180-D
90-E
90-A
0を初期解として定める。
図7は初期解として定めた動作をロボットアーム本体200の手先にとりつけた撮像装置300及び撮像装置300の視野13のみで模式的に示している。矢印ab、矢印bc、矢印cd、矢印de、矢印eaはロボットアーム本体200が移動する順序を示している。初期解として定めた動作プログラムはここで暫定動作プログラムとして記録する。
【0050】
次にS4では、S3で作成した暫定動作プログラムに対して、姿勢は変更せずに点Aから点Eの動作順序だけを変更した新規動作プログラムを作成する。順序の変更をどのような手順で行うかについては様々な方法が考えられるが、ここでは2点の順序を入れ替え、新規動作プログラムを作成する方法を採る。本実施形態では入れ替えるだけだが、入れ替えた結果、動作時間が短くなる場合は変更を維持し、短くならない場合は元に戻すなどしてかまわない。暫定動作プログラムに対して点Aと点Bの順序を入れ替えた新規動作プログラム1を作成する。
【0051】
【0052】
図8はS4で作成した新規動作プログラム1の動作を、ロボットアーム本体200の手先に取り付けられた撮像装置300及び撮像装置300の視野13のみで模式的に示している。矢印ba、矢印ac、矢印cd、矢印de、矢印ebはロボットアーム本体200が移動する順序を示している。
【0053】
次にS5では、暫定動作プログラムから新規動作プログラム1への変更において、動作順序が変わっている作業点について、ロボットアーム本体200の手先の姿勢変更を施した新規動作プログラムを作成する。今回は暫定動作プログラムと新規動作プログラム1とでは点Aと点Bの動作順序が変更されているので、点Aと点Bについて手先の姿勢を変更した以下の新規動作プログラムを作成する。
【0054】
【0055】
図9は新規動作プログラム1に対して点A及び点Bにおけるロボットアーム本体200の手先姿勢を変更した、新規動作プログラム3の動作を、撮像装置300及び撮像装置300の視野13のみで模式的に示している。矢印ba、矢印ac、矢印cd、矢印de、矢印ebはロボット11が移動する順序を示している。
図9では
図8に対して、点A、点Bにおいて撮像装置300が所定の方向に回転させられている。
【0056】
ここで、全ての点について手先の姿勢を変化させて検証を行うならば、点C、点D、点Eについても手先の姿勢を変更して新規動作プログラムを作成しなければならない。しかしながら、各点における手先の姿勢の変更が動作時間に与える影響は、実行する教示点間の前後において手先の姿勢がどれくらい変更されたかに依る。つまり、動作順序の変更が生じていない教示点間においては、実行する教示点間の前後において手先の姿勢を変更することで逆に動作時間が大きくなる可能性の方が高く、姿勢の変更により動作時間に大きな影響を与えることは考えづらい。よって動作順序に変更が生じていない教示点間の姿勢の変更についての検証を割愛する。これにより効率的に動作時間の短い動作プログラムの探索を行うことが可能となる。
【0057】
次にS6では、暫定動作プログラムとS4およびS5で作成した各新規動作プログラムの全てについて動作時間の算出を行う。動作時間は、ロボットアーム本体200のダイナミクスを考慮に入れた軌道計算を行い、算出する。ここで行われる軌道計算は、実際にロボットアーム本体200を動かした際の振る舞いと出来る限り近い方が良い。そのため、各関節の速度や、モータにかかるトルク等が、機構上の制約を超えないように制御を行った軌道計算方法であることが望ましい。また、他の周辺設備やワーク等の障害物と干渉しないような軌道を生成していることを前提としている。今回の例では以下表8に示すような動作時間が算出された。
【0058】
【0059】
今回の例では、
図9で示した姿勢を変更後の新規動作プログラム3が最も動作時間が短く、姿勢を変更前の暫定動作プログラムの動作時間よりも小さくなったため、作業点Aと作業点Bにおける教示点は教示点A
270と教示点B
90が適当であることが分かった。ここで、S5で割愛した動作プログラムについて、割愛したことが適切であることを示す。点Aと点Bにおける教示点は教示点A
270と教示点B
90に固定して、点C、点D、点Eの姿勢を変化させて動作時間を確認する。割愛した動作プログラムの動作時間は以下の値で算出された。
【0060】
【0061】
今回割愛した動作プログラムの中で、新規動作プログラム3よりも動作時間が短いものはなく、割愛したことが妥当であることが分かった。よって短い計算時間でも効率的に動作時間の短いプログラムを作成できる。
【0062】
次にS7では、S6で算出した動作時間を基に、暫定動作プログラムと新規動作プログラムのうちで最も動作時間の短い動作プログラムを新たな暫定動作プログラムとして記録する。今回の例では新規動作プログラム3が1.72[sec]と最も動作時間が短いので、新規動作プログラム3:(B90-A270-C180-D90-E90-B90)を新たな暫定動作プログラムとして記録する。暫定動作プログラムの動作時間は2.43[sec]だったため、0.71[sec](29.2%)動作時間を短縮できた。
【0063】
次にS8では収束条件の判定を行う。収束条件をどのように設定するかは任意であり、暫定動作プログラムの動作時間であってもよいし、動作順序を入れ替えた回数であってもよいし、動作時間を算出した動作プログラムの数であってもよい。本実施形態では、S4で全ての2点の組み合わせについて動作順序の変更を行うことを収束条件とする。
【0064】
S8で収束条件を満たしていなければ、S8:Noとなり、S4からS7までを繰り返し実行する。今回の収束条件は全ての2点の組み合わせについて動作順序の変更を行うことなので、動作順序については5C2=10通りの組み合わせを検証することになる。
【0065】
一方、手先の姿勢については動作順序の変更を行うたびに2×2の4通りか2×3の6通りの組み合わせを検証することになる。今回検証する動作プログラムの候補数は、順序の組み合わせ数と姿勢の組み合わせ数の積に等しいので、最大でも10×6=60通りである。S2に関する説明で言及した通り、動作プログラムの候補数は全部で5760通り存在するため、本件では検証する動作プログラム候補数を少なくして、効率的に探索を行っていることが分かる。
【0066】
本実施形態では、説明の簡略化のため作業点と手先の姿勢の数を小さく設定したが、対象とする工程によって作業点の数は様々である。
図10は作業点の数と動作プログラム候補数の関係を示したグラフである。横軸を作業点の数、縦軸を動作プログラム候補数として、存在する全ての動作プログラム数をプロット81に、本実施形態の方法を用いた場合に検証する動作プログラム候補数をプロット82に示しており、縦軸は指数形式で表している。なお、各作業点において取り得る姿勢の数は一律で5とした。
【0067】
図10より、全動作プログラム候補数は作業点の数の増加とともに動作プログラム候補数が爆発的に増加するのに対して、本実施形態の方法で検証する動作プログラム候補数は点数が増加しても一定の水準を保っている。仮に、一つの動作プログラムの動作時間を算出するのに1秒かかるとした場合、全ての動作プログラムについて検証を行う場合は、作業点の数が10点でも100万年以上かかってしまう。しかし本実施形態の方法によれば、作業点数が10点の場合は7分程度、50点だとしても3時間程度で動作プログラムを作成することができる。
【0068】
S8で収束条件を満たせば、S8:YESとなり、動作プログラム候補の作成を終了し、S9で現在の暫定動作プログラムを、検証した動作プログラムの中で最も動作時間の短い動作プログラムとしてディスプレイ602に出力する。
図11、
図12は動作プログラム出力画面の例を示している。表示している動作プログラムは新規動作プログラム3である。
【0069】
図11において、列9aは各作業点に移動する順番を示している。列9bは各作業点の名称を9a列に示す順番に従って表示している。列9c、列9d、列9eは各作業点の位置座標を表示している。位置座標はS1で作業者が入力したものと同じ値であり、X座標の値を列9cに、Y座標の値を列9dに、Z座標の値を列9eに表示している。列9f、列9g、列9hは各作業点におけるロボットアーム本体200の手先の姿勢をオイラー角で表している。手先姿勢はS1で作業者が指定した制約条件に基づいて、本実施形態によって効率の良い姿勢を選択した値となっており、列9fはαの値を、列9gはβの値を、列9hはγの値を表示している。9iは初期解として定めた動作プログラムである暫定動作プログラムからどのくらい時間が小さくなったかを表示している。
【0070】
図12においては、各教示点における各関節J
1~J
6が取る値を表示している。列9bは各教示点の名称を9a列に示す順番に従って表示している。列9c、列9d、列9e、列9f、列9g、列9hは各関節J
1~J
6が取りうる値を表示している。9iは初期解として定めた動作プログラムである暫定動作プログラムからどのくらい時間が小さくなったかを表示している。
【0071】
なお、
図11、
図12にて表示している動作プログラムにおいて、列9aの順番を作業者により適宜変更できるようにしてもかまわないし、
図12にて表示している各教示点の各関節の値を変更できるようにしてもかまわない。
【0072】
そして作成した動作プログラムを、制御装置400の記録ディスク431やHDD404に格納させることで、ロボットアーム本体200を動作時間の短い動作で制御することが可能となる。
【0073】
以上、本実施形態では、動作順序に変更が生じている教示点間の姿勢の変更について検証し、動作順序に変更が生じていない教示点間の姿勢の変更についての検証を割愛する。これにより順序と姿勢の両方を考慮しながら、現実的な計算時間で、動作時間の短い動作プログラムを作成し、ロボットアームの制御を行うことができる。
【0074】
特に本実施形態では、作業点におけるロボットアーム本体200の手先の姿勢について制約がなく、手先の姿勢について検討する候補が爆発的に増えるような作業について大きく効果を発揮する。今回の例のようにロボットアームにより対象物の外観検査を行う作業などで特に効果を発揮する。
【0075】
また本実施形態では、動作順序の変更が生じた教示点間において、姿勢の変更を行ったがこれに限られない。例えば、ロボットアーム本体200の動作によっては、教示点に動作条件が固定されている教示点が存在する場合もある。その際は、動作条件が固定されている教示点以外の教示点において手先の姿勢を変更し、新たな教示点を設定して構わない。
【0076】
(第2の実施形態)
上述した第1の実施形態では、教示点の候補を作成するにあたり、1つの手先姿勢・手先位置に対して1つの逆運動学の解を定めて作成した。しかしながら、1つの手先位置・手先姿勢に対して、関節角の組み合わせが複数存在し、各作業点において複数の解を用いて教示点の候補を作成しても構わない。
【0077】
以下では、第1の実施形態とは異なるハードウェアや制御系の構成の部分について図示し説明する。また、第1の実施形態と同様の部分については上記と同様の構成ならびに作用が可能であるものとし、その詳細な説明は省略するものとする。
【0078】
本実施形態では、多関節ロボットアームの特徴として、1つの手先位置・手先姿勢に対して、各関節の角度の組み合わせが複数存在する場合を考える。例として第1の実施形態で述べた教示点A
270では、ロボットアーム本体200は、
図13(A)に示すような状態の他に
図13(B)に示すような状態も取り得る。ロボットアーム本体200で示しているような6軸の垂直多関節ロボットアームの場合は、1つの手先位置・手先姿勢に対して最大8通りの関節角の組み合わせが存在する。なお、各関節の可動範囲やリンク長によって常に8通りの関節角の組み合わせが求まるとは限らない。本実施形態では手先位置・手先姿勢が同じで逆運動学の解が異なる教示点を、1-8の整数iを用いて教示点A
270_iという風に表す。
【0079】
本実施形態におけるロボットアーム本体200の動作プログラム作成方法において、第1の実施形態との差異は、
図4のフローチャートにおけるS2である。本実施形態におけるロボットアーム本体200の動作プログラム作成方法では、S2において、一つの手先姿勢につき複数存在する逆運動学の解を全て教示点候補として作成する。例えば第1の実施形態で用いていた教示点A
270について、存在する逆運動学の解を全て求めると、以下の4つの教示点を求めることができる。
【0080】
【0081】
他の教示点A0、B0、B90、C180、C270、D90、D180、D270、E90、E180についても同様に、存在する逆運動学の解を全て求め、動作プログラム作成における教示点候補とする。以降の処理は第1実施形態と同様である。
【0082】
以上、本実施形態の方法を採用すれば、教示点の候補の作成において、逆運動学の解を複数検討するため、第1実施形態よりも動作時間の短い動作プログラムを作成することができる。
【0083】
(第3の実施形態)
上述した第1の実施形態、第2の実施形態では、多回転可能な関節について検討していなかったが、本発明は、多回転可能な関節を有するロボットアームにおいても適用可能である。
【0084】
以下では、第1の実施形態、第2の実施形態とは異なるハードウェアや制御系の構成の部分について図示し説明する。また、第1の実施形態と同様の部分については上記と同様の構成ならびに作用が可能であるものとし、その詳細な説明は省略するものとする。
【0085】
本実施形態では、多関節ロボットアームの特徴として、多回転可能な関節はその関節角を360度加算・減算してもロボットの手先位置・手先姿勢は同一となる点を利用する。
【0086】
本実施形態のロボットアーム本体200の動作プログラム作成方法における第1の実施形態、第2の実施形態との差異は、
図4のフローチャートにおけるS2である。第2の実施形態で作成した各教示点候補について多回転可能な関節J
1、J
4、J
6に対して、何も変更しない場合と、+360°する場合と、-360°する場合の3通りの角度を計算する。なお、各関節の可動範囲やリンク長によって常にJ
1、J
4、J
6に対して全て加算もしくは減算が可能とは限らない。第2の実施形態で用いていた教示点表記に、J
1の多回転情報j、J
4の多回転情報k、J
6の多回転情報lを付与し、A
270_i_jklという風に表す。何も変更しない場合は0、+360°する場合は1、-360°する場合はFがjklの各値で表記することとする。例として、教示点A
270_iでは教示点A
270_2のJ
6についてのみ-360°することができ、以下の2つの教示点を得る。
【0087】
【0088】
他の教示点A0_i、B0_i、B90_i、C180_i、C270_i、D90_i、D180_i、D270_i、E90_i、E180_iについても同様である。J1、J4、J6に対して加算もしくは減算が可能な場合は、動作プログラム作成における新たな教示点候補とする。以降の処理は第1の実施形態と同様である。
【0089】
以上、本実施形態の方法を採用すれば、多回転可能な関節を有する場合における教示点についても考慮するので、更なる動作時間の短い動作プログラムを作成できるようになる。
【0090】
上述した種々の実施形態の処理手順は具体的にはシミュレーション装置600により実行されるものとして説明した。しかし、上述した機能を実行可能なソフトウェアの制御プログラムおよびそのプログラムを記録した記録媒体を制御装置400に搭載させて実施しても良い。その際、表示装置としてモニタ421、作業者の入力手段として外部入力装置500を使用することができる。
【0091】
従って上述した機能を実行可能なソフトウェアの制御プログラムおよびそのプログラムを記録した記録媒体、通信装置は本発明を構成することになる。例えば、スマートフォン等の情報端末に上述した実施形態を実行可能なアプリケーションとして適用しても構わない。
【0092】
また、上記実施形態では、コンピュータで読み取り可能な記録媒体がROM或いはRAMであり、ROM或いはRAMに制御プログラムが格納される場合について説明したが、本発明はこのような形態に限定されるものではない。
【0093】
本発明を実施するための制御プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、制御プログラムを供給するための記録媒体としては、HDD、外部記憶装置、記録ディスク等を用いてもよい。
【0094】
(その他の実施形態)
また上述した種々の実施形態では、ロボットアーム本体200が複数の関節を有する多関節ロボットアームを用いた場合を説明したが、関節の数はこれに限定されるものではない。ロボット装置の形式として、垂直多軸構成を示したが、パラレルリンク型など異なる形式の関節においても上記と同等の構成を実施することができる。
【0095】
また上述した種々の実施形態は、制御装置に設けられる記憶装置の情報に基づき、伸縮、屈伸、上下移動、左右移動もしくは旋回の動作またはこれらの複合動作を自動的に行うことができる機械に適用可能である。
【0096】
なお本発明は、上述した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されない。
【符号の説明】
【0097】
13 視野
100 ロボットシステム
200 ロボットアーム本体
201、202、203、204、205、206 リンク
210 基台
211、212、213、214、215、216 モータ
300 撮像装置
400 制御装置
500 外部入力装置
600 シミュレーション装置
601 OS
602 ディスプレイ
603 キーボード
604 マウス
J1、J2、J3、J4、J5、J6 関節