(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-28
(45)【発行日】2022-04-05
(54)【発明の名称】ロボット制御装置、ロボット制御方法、プログラム
(51)【国際特許分類】
B25J 9/10 20060101AFI20220329BHJP
【FI】
B25J9/10 A
(21)【出願番号】P 2018058527
(22)【出願日】2018-03-26
【審査請求日】2020-12-22
(73)【特許権者】
【識別番号】000232302
【氏名又は名称】日本電産株式会社
(74)【代理人】
【識別番号】110000165
【氏名又は名称】グローバル・アイピー東京特許業務法人
(72)【発明者】
【氏名】ドアン ナット タン
(72)【発明者】
【氏名】吉田 昌弘
(72)【発明者】
【氏名】常田 晴弘
【審査官】木原 裕二
(56)【参考文献】
【文献】特開平06-019528(JP,A)
【文献】特開平09-265313(JP,A)
【文献】特開平10-286788(JP,A)
【文献】特開昭59-114604(JP,A)
【文献】特開2007-042021(JP,A)
【文献】特開2009-082945(JP,A)
【文献】特開2009-266011(JP,A)
【文献】米国特許第04774445(US,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 9/10
(57)【特許請求の範囲】
【請求項1】
複数の関節を含む多関節ロボットの基準点を始点から終点まで直線補間で移動させるロボット制御装置であって、
前記始点と前記終点を結ぶ直線のうち、前記基準点が前記始点から加速して
所定の速度に達するまでの加速時間の要求値に基づいて所定の
速度に達するまでの加速区間、前記基準点が前記所定の
速度を維持する等速区間、および、前記基準点が前記所定の
速度から減速して
前記終点に到達するまでの減速時間の要求値に基づいて前記終点に到達するまでの減速区間を設定する区間設定部と、
前記加速区間、前記等速区間、および、前記減速区間をそれぞれ複数のセグメントに分割するセグメント設定部であって、前記基準点の各セグメントの移動時間が実質的に同一となるように、前記加速区間、前記等速区間、および、前記減速区間の各セグメントの距離を設定するセグメント設定部と、
前記加速区間、前記等速区間、および、前記減速区間の各セグメント
の隣り合う終端位置での前記ロボットの各関節の角度を逆運動学によって求め、
前記各関節の角度のうち各セグメントの隣り合う終端位置までの角度変化量が最大となる
角度をもつ関節
を特定し、
前記基準点を各セグメントにおいて
所定の角速度、加速時間及び減速時間の要求値を満たすようにPTP(Point to Point)制御で移動させるときの各セグメント
における各関節の角速度を
前記角度変化量が最大となる角度をもつ関節の角度変化量に基づいて設定する角速度設定部と、
を備えた、ロボット制御装置。
【請求項2】
前記区間設定部は、前記基準点が前記始点から加速して所定の角速度に達するまでの加速時間の要求値、および、前記基準点が前記所定の角速度から減速して前記終点に到達するまでの減速時間の要求値に基づいて、前記加速区間、前記等速区間、および前記減速区間を設定する、
請求項
1に記載されたロボット制御装置。
【請求項3】
前記角速度設定部により設定された各セグメントの角速度に応じた、所定時間ごとのパルス数を設定するパルス数設定部と、
前記パルス数設定部により設定されたパルス数に対してフィルタ処理を行うフィルタ処理部と、
前記ロボットの各関節を駆動するモータに対して供給される制御パルスを生成するパルス生成部であって、前記制御パルスのパルス数を、前記フィルタ処理後のパルス数に設定する前記パルス生成部と、
請求項1または2に記載されたロボット制御装置。
【請求項4】
前記フィルタ処理は、所定回数の前記所定時間に対して設定されたパルス数に基づく移動平均フィルタの処理である、
請求項3に記載されたロボット制御装置。
【請求項5】
複数の関節を含む多関節ロボットの基準点を始点から終点まで直線補間で移動させるロボット制御方法であって、
前記始点と前記終点を結ぶ直線のうち、前記基準点が前記始点から加速して
所定の速度に達するまでの加速時間の要求値に基づいて所定の
速度に達するまでの加速区間、前記基準点が前記所定の
速度を維持する等速区間、および、前記基準点が前記所定の
速度から減速して
前記終点に到達するまでの減速時間の要求値に基づいて前記終点に到達するまでの減速区間を設定し、
前記加速区間、前記等速区間、および、前記減速区間をそれぞれ複数のセグメントに分割し、前記基準点の各セグメントの移動時間が実質的に同一となるように、前記加速区間、前記等速区間、および、前記減速区間の各セグメントの距離を設定し、
前記加速区間、前記等速区間、および、前記減速区間の各セグメント
の隣り合う終端位置での前記ロボットの各関節の角度を逆運動学によって求め、
前記各関節の角度のうち各セグメントの隣り合う終端位置までの角度変化量が最大となる
角度をもつ関節
を特定し、
前記基準点を各セグメントにおいて
所定の角速度、加速時間及び減速時間の要求値を満たすようにPTP(Point to Point)制御で移動させるときの各セグメント
における各関節の角速度を
前記角度変化量が最大となる角度をもつ関節の角度変化量に基づいて設定する、
ロボット制御方法。
【請求項6】
複数の関節を含む多関節ロボットの基準点を始点から終点まで直線補間で移動させるプログラムであって、
コンピュータに、
前記始点と前記終点を結ぶ直線のうち、前記基準点が前記始点から加速して
所定の速度に達するまでの加速時間の要求値に基づいて所定の
速度に達するまでの加速区間、前記基準点が前記所定の
速度を維持する等速区間、および、前記基準点が前記所定の
速度から減速して
前記終点に到達するまでの減速時間の要求値に基づいて前記終点に到達するまでの減速区間を設定する手順、
前記加速区間、前記等速区間、および、前記減速区間をそれぞれ複数のセグメントに分割し、前記基準点の各セグメントの移動時間が実質的に同一となるように、前記加速区間、前記等速区間、および、前記減速区間の各セグメントの距離を設定する手順、
前記加速区間、前記等速区間、および、前記減速区間の各セグメント
の隣り合う終端位置での前記ロボットの各関節の角度を逆運動学によって求め、
前記各関節の角度のうち各セグメントの隣り合う終端位置までの角度変化量が最大となる
角度をもつ関節
を特定し、
前記基準点を各セグメントにおいて
所定の角速度、加速時間及び減速時間の要求値を満たすようにPTP(Point to Point)制御で移動させるときの各セグメント
における各関節の角速度を
前記角度変化量が最大となる角度をもつ関節の角度変化量に基づいて設定する手順、を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボット制御装置、ロボット制御方法、プログラムに関する。
【背景技術】
【0002】
従来から、ロボットのアーム先端(手先)の位置を始点(教示点)から終点(教示点)まで移動させる場合の経路制御方式としてPTP(Point to Point)制御が知られている。また、ロボットのアームの先端の位置を直線経路で移動させる直線補間制御が知られている(特許文献1、2)。
【0003】
特許文献1には、ロボットの現在位置情報を取得する手段と、ロボットの関節の定格最高速度情報を取得する手段と、上記ロボット現在位置情報と上記関節定格最高速度とに基づいてロボット先端の直線補間動作において取り得る許容限界速度を算出する手段と、を備えるロボットの速度演算装置が記載されている。
特許文献2には、あい前後する2つの移動区間の補間種別が関節補間動作から直線補間動作に移り変わるか、直線補間動作から関節補間動作に移り変わるかを判別し、その2つの移動区間の繋ぎ点もしくはその近傍を通過させる際に速度の結合処理が可能かどうかを判定し、速度の結合処理が可能であると判定されたとき、異種補間動作間の速度を重ね合わせるような挙動をさせるための補間点を関節変数により決定することが記載されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開1997-265313号公報
【文献】特開2004-252814号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ロボットのアーム先端を始点から終点まで移動させるときにはPTP制御を適用することで移動時間が最速となるが、PTP制御では移動経路が保証されないため、ロボットの作業スペースにおいて他の物体や壁等に衝突する可能性がある。
直線補間制御では、ロボットのアーム先端を直線経路で移動させることができ、始点から終点までの経路を保証することができるが、従来は高速に移動させることができなかった。
【0006】
そこで、本発明は、ロボットを直線移動させるときに、従来よりも高速に移動させることを目的とする。
【課題を解決するための手段】
【0007】
本願の例示的な第1発明は、複数の関節を含む多関節ロボットの基準点を始点から終点まで直線補間で移動させるロボット制御装置であって、前記始点と前記終点を結ぶ直線のうち、前記基準点が前記始点から加速して所定の角速度に達するまでの加速区間、前記基準点が前記所定の角速度を維持する等速区間、および、前記基準点が前記所定の角速度から減速して前記終点に到達するまでの減速区間を設定する区間設定部と、前記加速区間、前記等速区間、および、前記減速区間をそれぞれ複数のセグメントに分割するセグメント設定部であって、前記基準点の各セグメントの移動時間が実質的に同一となるように、前記加速区間、前記等速区間、および、前記減速区間の各セグメントの距離を設定するセグメント設定部と、前記加速区間、前記等速区間、および、前記減速区間の各セグメントについて角度変化量が最大となる関節の前記角度変化量に基づいて、前記基準点を各セグメントにおいてPTP(Point to Point)制御で移動させるときの各セグメントの角速度を設定する角速度設定部と、を備えたロボット制御装置である。
【発明の効果】
【0008】
本発明によれば、ロボットを直線移動させるときに、従来よりも高速に移動させることができる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、第1の実施形態のロボットシステムの概略構成を示す図である。
【
図2】
図2は、第1の実施形態のロボットシステムの内部構成を示す図である。
【
図3】
図3は、第1の実施形態のロボット制御装置の機能ブロック図である。
【
図4】
図4は、PTP制御で移動した場合に時間の経過に対する主関節の角速度の変化を示す図である。
【
図5】
図5は、加速区間および減速区間について説明する図である。
【
図6】
図6は、PTP制御による時間の経過に対する角速度変化を示す図である。
【
図7】
図7は、加速区間の算出方法について説明する図である。
【
図8】
図8は、第1の実施形態のロボット制御方法による時間の経過に対する角速度変化を示す図である。
【
図9】
図9は、第1の実施形態のロボット制御装置によって実行されるフローチャートである。
【
図10】
図10は、PTP制御と第1の実施形態の制御における時間の経過に対する制御パルスの数の変化を説明する図である。
【
図11】
図11は、第2の実施形態のロボット制御方法において、セグメント調整前後の時間の経過に対する角速度変化を示す図である。
【
図12】
図12は、第1の実施形態のロボット制御装置によって実行されるフローチャートである。
【発明を実施するための形態】
【0010】
以下、本発明の実施形態に係るロボット制御装置を含むロボットシステムについて説明する。
各実施形態に係るロボットシステムでは、ロボットの基準点として、ロボットのアーム先端、すなわち、エンドエフェクタの取付の基準となる位置を始点から終点まで移動させるときに、直線補間制御で移動させるように制御される。直線補間制御では、始点と終点を結ぶ直線が複数のセグメントに分割され、各セグメントではロボットをPTP制御で動作させる。このとき、各セグメントでのPTP動作は一定の角速度とし、各セグメントの角速度を最適に決定することで高速な疑似直線動作を実現する。
【0011】
以下の説明において、ロボットの基準点とは、ロボットのアプローチ点、目標点、デパーチャ点等のロボットの教示点の基準となるロボットの位置を意味し、例えばロボットの作用点(TCP:Tool Center Point)である。
以下の説明において、ロボットを2点間で移動させることは、ロボットの基準点を当該2点間で移動させることを意味する。
【0012】
(1)第1の実施形態
(1-1)ロボットシステム1の構成
先ず、第1の実施形態のロボットシステム1の構成について、
図1および
図2を参照して説明する。
図1は、本実施形態のロボットシステム1の概略構成を示す図である。
図2は、本実施形態ロボットシステム1の内部構成を示す図である。
【0013】
図1に示すように、ロボットシステム1は、情報処理装置2、ロボット制御装置3、および、ロボットRを備える。情報処理装置2とロボット制御装置3とは、例えばイーサネット(登録商標)ケーブルECにより通信可能に接続される。
情報処理装置2は、例えば工場のラインに設置されたロボットRに対して動作を教示するための装置である。情報処理装置2は、オペレータによるティーチングを行うために設けられており、ロボットRが設置される工場等から離れた位置(例えば、工場から離れたオペレータの作業場所)に配置されていてもよい。
【0014】
情報処理装置2は、例えばパーソナルコンピュータ装置、タブレット型コンピュータ装置であり、オペレータによるオフラインティーチングあるいはオンラインティーチングを行うために設けられている。所定の教示プログラムを実行することで、ロボットRの教示点や動作パラメータが決定される。
【0015】
ロボット制御装置3は、情報処理装置2から送信されるロボットRの教示点や動作パラメータを基にロボットプログラムを実行することでロボットRを制御する。ロボットプログラムの実行結果として、ロボット制御装置3は、ロボットRの各関節を動作させる複数のモータに対する制御パルスをロボットRに対して送出する。
【0016】
ロボットRは、複数の関節を含む多関節ロボットである。ロボットRは、ロボット制御装置3から受信する制御パルスに基づいて、各関節のモータを駆動し、情報処理装置2により決定された教示点や動作パラメータに従った動作を行う。
【0017】
図2を参照すると、情報処理装置2は、制御部21と、ストレージ22と、入力装置23と、表示装置24と、通信インタフェース部25とを備える。
制御部21は、CPU(Central Processing Unit)、ROM(Read Only Memory)、および、RAM(Random Access Memory)を含む。ROMには、教示ソフトウェアが記憶されている。CPUは、ROMに記憶される教示ソフトウェアをRAMに展開して実行する。オペレータにより教示ソフトウェアを介して設定されたロボットRの教示点や動作パラメータは、ロボットプログラムに組み込まれる。
ストレージ22は、HDD(Hard Disk Drive)あるいはSSD(Solid State Drive)等の大容量記憶装置であり、制御部21のCPUにより逐次アクセス可能に構成される。ストレージ22には、ロボットプログラムが格納される。
【0018】
入力装置23は、オペレータによる操作入力を受け付けるためのデバイスであり、ポインティングデバイスを含む。
表示装置24は、教示ソフトウェアの実行結果を表示するためのデバイスであり、表示駆動回路および表示パネルを含む。
通信インタフェース部25は、ロボット制御装置3との間でイーサネット通信を行うための通信回路を含む。制御部21は、オペレータによるロボットのシミュレーションの実行要求、またはロボットの実機を動作させる要求に応じて、ロボットRの教示点や動作パラメータを含むロボットプログラムを、通信インタフェース部25を介してロボット制御装置3に送信する。
【0019】
図2に示すように、ロボット制御装置3は、制御部31と、ストレージ32と、通信インタフェース部33とを備える。
制御部31は、CPU、ROM、および、RAMを含む。CPUは、情報処理装置2から受信してストレージ32に記憶されるロボットプログラムを、RAMに展開して実行する。制御部31のCPUがロボットプログラムを実行することで、後述する各機能が実現される。
制御部31は、所定時間毎(例えば1ms毎)にロボットRの各関節のモータを動作させるための制御パルスを生成して、ロボットRに供給する。
【0020】
ストレージ32は、HDDあるいはSSD等の大容量記憶装置であり、制御部31のCPUにより逐次アクセス可能に構成される。ストレージ32には、情報処理装置2から受信するロボットプログラムが格納されるとともに、ロボットプログラムの実行記録である実行ログデータが格納される。
通信インタフェース部33は、情報処理装置2との間でイーサネット通信を行うための通信回路を含む。
【0021】
図2に示すように、ロボットRは、モータ駆動回路101およびモータ102を含む。モータ駆動回路101は、ロボット制御装置3から供給される制御パルスに基づいてモータ102を駆動するのに必要な駆動電圧を生成する。モータ102は、ロボットRを動作させる関節の数だけ設けられる。
以下では、ロボットRが6軸の垂直多関節ロボットである場合について説明する。この場合、ロボットRには、6個の関節の各々を駆動するモータ102が設けられ、各モータ102に対してモータ駆動回路101から駆動電圧が供給される。
【0022】
(1-2)ロボット制御装置3の機能
次に、
図3~8を参照して、ロボット制御装置3の制御部31がロボットプログラムを実行して実現される機能について説明する。
図3は、本実施形態のロボット制御装置3の機能ブロック図である。
図3に示すように、ロボット制御装置3によって実現される機能には、区間設定部311、セグメント設定部312、角速度設定部313、パルス数設定部314、および、パルス生成部315がある。以下、各部が備える機能について順に説明する。
【0023】
以下では、ロボットの基準点が始点Aから終点Bまで擬似的に直線移動させる場合について説明する。始点A、終点Bは、以下において適宜、点A,点Bという。
上述したように、ロボット制御装置3が情報処理装置2から受信するロボットプログラムには、ロボットRの教示点や動作パラメータが設定されている。本実施形態では、ロボットプログラムにおいて教示点として始点Aおよび終点Bが設定され、始点Aから終点Bまでの移動に際して、動作パラメータとして加速時間、最大角速度、減速時間が設定されている。
【0024】
以下の説明では、動作パラメータとして設定されている加速時間、最大角速度、および減速時間をそれぞれ、「加速時間要求値」、「最大角速度要求値」、および「減速時間要求値」という。加速時間要求値は、ロボットの基準点が始点Aから加速して最大角速度(上記最大角速度要求値;所定の角速度の一例)に達するまでの加速時間の要求値である。減速時間要求値は、ロボットの基準点が最大角速度から減速して終点Bに到達するまでの減速時間の要求値である。
【0025】
以下の説明において、ロボットの6個の関節のうち各関節の中心軸周りの角度変化量が最大となる関節を「主関節」という。6個の関節のうち主関節となる関節は、点Aから点Bまでの直線移動において注目する時間あるいは範囲によって異なる場合がある。
【0026】
(1-2-1)区間設定
区間設定部311は、始点Aと終点Bを結ぶ直線のうち、ロボットの基準点が始点Aから加速して最大角速度に達するまでの加速区間、ロボットの基準点が最大角速度を維持する等速区間、および、ロボットの基準点が最大角速度から減速して終点Bに到達するまでの減速区間を設定する機能を備える。
本実施形態の一例では、区間設定部311は、上述した加速時間要求値および減速時間要求値に基づいて、加速区間、等速区間、および減速区間を設定する。以下、
図4を参照して、各区間の設定方法について説明する。
【0027】
本実施形態では、ロボットを直線AB間において高速で移動させることを目的として、仮にロボットがAB間をPTP制御で移動した場合の時間の経過に対する主関節の速度変化を模擬する。
図4は、仮にAB間をPTP制御で移動した場合に、AB間における時間の経過に対する主関節の角速度の変化を示す図である。
図4において、ロボットが点Aを移動開始してから最大角速度要求値Vmに達するまでの時間が加速時間要求値t1に相当し、ロボットが時刻t2から減速を開始して時刻tfにおいて点Bに到達するまでの時間(tf-t2)が減速時間要求値に相当する。
図4においてtfは、PTP制御で移動した場合の総移動時間を意味する。
【0028】
図5に、ロボットがAB間を仮にPTP制御により移動する場合の経路T
ptpと、ロボットがAB間を本実施形態の直線補間制御で移動する場合の経路T
slnとを示す。
図5に示すように、ロボットがAB間をPTP制御により移動する場合の経路T
ptpは、直線状とならず湾曲した経路となる。経路T
ptp上において点Aから点p1までの区間はPTP制御における加速区間であり、点p1から点p2までの区間はPTP制御における等速区間であり、経路T
ptp上において点p2から点Bまでの区間はPTP制御における減速区間である。
点p1,p2は、
図4の時刻t1,t2に対応している。つまり、PTP制御では、点Aから点p1に達するまでの時間が加速時間要求値t1となり、点p2から点Bに達するまでの時間が減速時間要求値(tf-t2)となる。
【0029】
直線補間制御においても、点Aから点Bまでの直線における加速区間および減速区間は、加速時間要求値および減速時間要求値を満たすように設定する必要がある。そこで、点Aから点Bまでを仮にPTP制御で移動した場合の加速終了位置である点p1と減速開始位置である点p2を直線AB上に投影することで、直線補間制御における直線上の加速区間、減速区間を設定する。
図4において、PTP制御の経路T
ptp上の点p1,p2を直線AB上に投影した点が、それぞれ点p1s,p2sである。
【0030】
本実施形態の直線補間制御による経路Tslnにおいて、点Aから点p1sまでの区間が加速区間として設定され、点p2sから点Bまでの区間が減速区間として設定される。
ここで、加速区間の距離acc_dstの直線AB間の距離に対する比率は、PTP制御による経路Tptp上の加速区間の距離(点Aと点p1の距離)の、経路Tptpの経路長に対する比率と同じとなるように、設定される。同様に、減速区間の距離dacc_dstの直線AB間の距離に対する比率は、PTP制御による経路Tptp上の減速区間の距離(点p2と点Bの距離)の、経路Tptpの経路長に対する比率と同じとなるように、設定される。
【0031】
例えば、経路T
slnにおける加速区間の直線AB間の距離T
slnに対する比率を加速区間比率acc_ratioとすると、加速区間比率acc_ratioは、式(1)のようにして算出される。
なお、式(1)において、
t1:加速時間要求値 (msec)
Vm:最大角速度要求値 (radian)
maxdst:主関節の角度変化量
である。主関節の角度変化量maxdstは、
図4に示される台形の面積に相当する。
【0032】
【0033】
直線AB間で各関節の角度は線形に変化するため、点p1におけるロボットの各関節の角度p1[i](i:関節番号1~6)は、加速区間比率acc_ratioを用いて、以下式(2)に従ってもとめられる。
なお、式(2)において、
A[i]:点Aにおける関節iの角度 (radian)
B[i]:点Bにおける関節iの角度 (radian)
である。
【0034】
【0035】
式(2)により各関節の点p1における角度がわかるため、順運動学により点p1の直交座標を算出することができる。さらに、直線AB上の加速区間の距離acc_dst(
図5参照)は、点A、点p1、および、点Bの直交座標の値から、以下のようにして算出される。
図6に示すように、点p1と点p1sの距離をh1とすると、h1は、下記式(3)に従い、点Aから点p1に向かうベクトル(以下の式(3)の太字のp1)と、点Aから点Bに向かうベクトル(式(3)の太字のAB)との外積の大きさを、直線AB間の距離Lにより除算することによって算出される。
さらに、点Aから点p1に向かうベクトルの大きさをn1とすると、式(4)に従って加速区間の距離acc_dstが算出される。
【0036】
【0037】
【0038】
以上、加速区間の距離acc_dstの算出方法について説明したが、減速区間の距離dacc_dst(
図5参照)についても点p2に基づいて同様にして算出することができる。
また、直線補間動作による等速区間の距離は、直線AB間の距離Lから加速区間の距離acc_dstと減速区間の距離dacc_dstとを減算することにより得られる。すなわち、等速区間の距離cst_dstは、以下の式(5)から算出される。
【数5】
【0039】
(1-2-2)セグメント設定
図3において、セグメント設定部312は、区間設定部311によって設定された加速区間、等速区間、および、減速区間をそれぞれ複数のセグメントに分割する機能を備える。このとき、セグメント設定部312は、ロボットの基準点の各セグメントの移動時間が実質的に同一となるように、加速区間、等速区間、および、減速区間の各セグメントの距離を設定する。
以下、
図7を参照して、本実施形態の直線補間制御における加速区間、等速区間、および、減速区間の各セグメントの距離の設定方法について説明する。
【0040】
各セグメントの距離を設定するに当たっては、ロボットの基準点の軌道の理想的な直線との誤差と、動作時間とを考慮して決定することが好ましい。すなわち、セグメントの距離が大きい場合には、各セグメントにおいてPTP制御がなされることから各セグメントにおけるロボットの基準点の軌跡が理想的な直線から乖離し、誤差が大きくなりやすい。その一方で、ロボットに対する制御が基準時間(例えば1ms)ごとに行われるために、セグメントの距離を小さくした場合には各セグメントで丸め誤差が生じ、その丸め誤差がセグメントの数だけ積算されることによって、動作時間が増加することになる。
そこで、加速区間の距離(acc_dst)、減速区間の距離(dacc_dst)、および、等速区間の距離cst_dstをそれぞれ複数のセグメントに分割するときの好ましい例では、1つのセグメントの距離の最大値を20mm以下としつつ、各セグメントの距離が20mmと比較して著しく短い距離とならないように分割する。
【0041】
(A)加速区間
先ず、加速区間では、各セグメントの移動時間が極力一定となるように、点Aから点p1sに向かって徐々にセグメントの距離が長くなるように以下の設定を行う。
すなわち、加速区間の距離acc_dstが90mm以下の場合には、加速区間のセグメント数acc_seg_num を9とし、加速区間の距離acc_dstが90mmより大きい場合には、加速区間のセグメント数acc_seg_num を以下の式(6)により算出する。
【0042】
【0043】
そして、加速区間の点Aから点p1sに向かって各セグメントのセグメント番号をj(j=0, 1, 2, …)としたときに、各セグメントの距離acc_seg[j]を以下の式(7)のようにして設定する。
【数7】
【0044】
(B)減速区間
次に、減速区間では、各セグメントの移動時間が極力一定となるように、点p2sから点Bに向かって徐々にセグメントの距離が短くなるように以下の設定を行う。
すなわち、減速区間の距離dacc_dstが90mm以下の場合には、減速区間のセグメント数dacc_seg_num を9とし、減速区間の距離dacc_dstが90mmより大きい場合には、減速区間のセグメント数dacc_seg_num を以下の式(8)により算出する。
【0045】
【0046】
そして、減速区間の点p2sから点Bに向かって各セグメントのセグメント番号をj(j=0, 1, 2, …)としたときに、各セグメントの距離dacc_seg[j]を以下の式(9)のようにして設定する。
【数9】
【0047】
(C)等速区間
最後に、等速区間では、各セグメントの距離が一定で、かつ20mm以下となるように設定する。
具体的には、等速区間の距離cst_dstを20で除算した値が1.25より小さい場合には、等速区間のセグメント数cst_seg_numを1とする。等速区間の距離cst_dstを20で除算した値が1.25以上である場合には、等速区間のセグメント数cst_seg_numを以下の式(10)により算出する。各セグメントの距離は、式(11)に示すとおりである。
【数10】
【数11】
【0048】
なお、上述した各セグメントの距離の設定は一例に過ぎず、適宜変更可能である。例えば、上記式(7)に示したように、加速区間の各セグメントの距離は、隣接するセグメント間の距離が2倍ずつ増加するように設定されているが、その限りではない。隣接するセグメント間の距離の比率は、適宜調整してもよい。減速区間の各セグメントの距離についても同様である。
【0049】
(1-2-3)各セグメントの角速度設定
角速度設定部313は、加速区間、等速区間、および、減速区間の各セグメントについて角度変化量が最大となる関節の角度変化量に基づいて、基準点を各セグメントにおいてPTP(Point to Point)制御で移動させるときの各セグメントの角速度を設定する機能を備える。
【0050】
以下、セグメント設定部312によって設定された加速区間、等速区間、および、減速区間の各セグメントの主関節の角速度の設定方法について、
図8を参照して説明する。
図8は、本実施形態のロボット制御方法による時間の経過に対する主関節の角速度変化を示す図であり、各セグメントの主関節の角速度を棒状に表している。
【0051】
既に述べたように、本実施形態の直線補間制御では、ロボットを直線AB間において高速で移動させることを目的として、仮にロボットがAB間をPTP制御で移動した場合の時間の経過に対する主関節の速度変化を模擬する。
図8において、台形状の太線は、
図4に示したものと同じであり、ロボットをAB間においてPTP制御で動作させたときの主関節の速度変化を示しており、この速度変化が本実施形態の直線補間動作において模擬される。つまり、本実施形態において各セグメントの主関節の角速度は、PTP制御の場合の主関節の角速度の変化と一致するように設定される。
また、各セグメント内の主関節の角速度は一定とする。
【0052】
本実施形態の直線補間制御では、セグメント毎に主関節(つまり、セグメントにおいて角度変化量が最大となる関節)が特定される。上述したように、各セグメントの距離が設定されて既知であるため、各セグメントの終端位置でのロボットの各関節の角度は逆運動学でもとめられ、それによって角度変化量が最大となる主関節が特定される。
【0053】
(A)加速区間
加速区間におけるセグメント番号をj(j=0, 1, 2, …)としたとき各セグメントの終端位置での時刻tは、以下の式(12)に従って算出される。
なお、式(12)において、
maxdst_seg[j]:セグメント番号がjのセグメントにおける主関節の角度変化量
jcur:現在のセグメント番号
t1:加速時間要求値 (msec)
Vm:最大角速度要求値 (radian)
である。
【0054】
【0055】
(B)等速区間
等速区間におけるセグメント番号をj(j=0, 1, 2, …)としたとき各セグメントの終端位置での時刻tは、以下の式(13)に従って算出される。
【0056】
【0057】
(C)減速区間
減速区間におけるセグメント番号をj(j=0, 1, 2, …)としたとき各セグメントの終端位置での時刻tは、以下の式(14)に従って算出される。
なお、式(14)において、
total_dst:全体(点Aから点Bまで)の主関節の角度変化量
t2:減速時間要求値 (msec)
tf:総移動時間 (msec)
である。total_dstは、
図8の太線で示す台形の面積に等しい。
【0058】
【0059】
上述したようにして、加速区間、等速区間、および、減速区間における各セグメントの終端位置での時刻tを算出した後、各セグメントにおける主関節の角速度は、式(15)に従って算出される。なお、式(15)において、j=0の時にはt[j-1]=0であるとする。
【0060】
【0061】
(1-2-4)制御パルスのパルス数の設定
図3において、パルス数設定部314は、角速度設定部により設定された各セグメントの角速度に応じた、所定時間ごとのパルス数を設定する機能を有する。パルス生成部315は、ロボットの各関節を駆動するモータに対して供給される制御パルスを生成する機能を有する。このとき、制御パルスのパルス数を、パルス数設定部314により設定されたパルス数とする。
すなわち、各セグメントの角速度が決定されると、決定された角速度に応じた制御パルスのパルス数が、ロボットに対する制御が基準時間(例えば1ms)ごとに設定される。パルス数の決定方法は、決定された角速度が得られる制御パルスの数であれば如何なる決定方法でもよい。例えば、制御パルスの数は、決定された角速度を変数とした所定の関数演算により算出してもよいし、所定のルックアップテーブルを参照することにより得るようにしてもよい。
【0062】
(1-3)本実施形態のロボット制御装置3の処理フロー
次に、本実施形態のロボット制御装置3の処理フローについて、
図9を参照して説明する。
図9は、本実施形態のロボット制御装置3によって実行されるフローチャートである。
既に述べたように、ロボット制御装置3は情報処理装置2からロボットプログラムを取得し、ロボット制御装置3の制御部31は、取得したロボットプログラムを実行することによって
図9に示す各処理が行われる。ロボットプログラムには、教示点として始点Aおよび終点Bが設定され、始点Aから終点Bまでの移動に際して、動作パラメータとして加速時間、最大角速度、減速時間の要求値が設定されている。
ロボット制御装置3の制御部31は、上記動作パラメータに基づき、始点Aから終点Bまでロボットの基準点を直線で移動させる直線補間制御を実行する。このとき、直線AB間の主関節の角速度変化が、仮にAB間をPTP制御により移動させた場合の主関節の角速度変化と一致するようにして、各セグメントにおける主関節の角速度が決定される。
【0063】
ロボット制御装置3の制御部31は先ず、ロボットプログラムに設定された加速時間要求値、減速時間要求値、および、最大角速度要求値に基づいて、加速区間、等速区間、および、減速区間を設定する(ステップS10)。加速区間、等速区間、および、減速区間の設定は、直線AB間における加速区間、等速区間、および、減速区間の比率が、仮にAB間をPTP制御で移動した場合の経路における各区間の比率と同じになるようにして決定される。
【0064】
次いで、制御部31は、ステップS10で設定した加速区間、等速区間、および、減速区間の各区間に対して複数のセグメントを設定する(ステップS12)。すなわち、直線ABにおける加速区間、等速区間、および、減速区間の各区間が、それぞれ複数のセグメントに分割され、各セグメントの距離が決定される。このとき、制御部31は、上述したように、各セグメントの移動時間が実質的に一定となるようにして各セグメントの距離を決定する。加速区間では、点Aから点Bに向けて各セグメントの距離が速度の上昇に応じて長くなるように設定され、減速区間では、点Bに向けて各セグメントの距離が速度の減少に応じて短くなるように設定される。
【0065】
次いで、制御部31は、各セグメントの主関節の角速度を設定する(ステップS14)。各セグメントの主関節の角速度は、上述したように、仮にAB間をPTP制御により移動させた場合の主関節の角速度変化と一致するようにして決定される。
以上のステップS10~S14の処理によって、始点Aから終点Bまでロボットの基準点を直線補間で移動させるときの各セグメントにおける主関節の速度が設定されたことになる。ロボット制御装置3の制御部31は次いで、ステップS14で設定した各セグメントの主関節の角速度が得られるように制御パルスの数を決定し(ステップS16)、当該数の制御パルスを生成して(ステップS18)、ロボットRへ送出する。
【0066】
以上説明したように、本実施形態のロボットシステム1では、ロボット制御装置3は、ロボットの基準点を直線補間によって移動させる場合に、ロボットの主関節の角度変化を、仮に当該直線をPTP制御で移動させた場合の主関節の角度変化と同一となるように制御する。そのため、ロボットを直線移動させるときに、高速に移動させることができる。
【0067】
図10に、例示的な2点間においてロボットをPTP制御で移動させる場合と、同じ2点間においてロボットを本実施形態の直線補間により移動させる場合との、時間の経過に伴って変化する制御パルスの数のシミュレーション結果を示す。
図10では、ロボットの6個の関節のうち角速度が高い関節J1~J3に対する1ms毎の制御パルスの数が示される。
図10に示すように、PTP制御の場合の主関節J1に対する制御パルスの数と、本実施形態の直線補間の場合の主関節J1(約500msまで)および主関節J2(約500ms以降)に対する制御パルスの数が概ね等しくなっており、2点間の移動時間が同程度となっていることがわかる。すなわち、本実施形態の直線補間制御では、全体をPTP制御で移動させた場合と同等の移動速度を達成できることが確認された。
【0068】
(2)第2の実施形態
次に、第2の実施形態について説明する。
第1の実施形態では、加速区間および減速区間は、仮に始点から終点までの全体をPTP制御で移動した場合の主関節の角度変化量を基に設定される。しかし、加速区間および減速区間では主関節がセグメント単位で特定され、特定された主関節が、全体をPTP制御で移動させた場合の主関節と一致しない場合が生じうる。そのような場合、全体をPTP制御で移動させた場合の主関節の移動量に対して、セグメント単位の主関節の移動量をすべてのセグメントで合計した移動量が大きくなり、本実施形態による総移動時間が長くなってしまうことがある。すなわち、上記式(12)および式(14)においてΣの項が大きくなり、各セグメントの終端位置での時刻tが遅れることから、結果的に総移動時間が長くなってしまうことがある。
そこで、本実施形態では、加速時間要求値および減速時間要求値を満たすように、各セグメントの主関節の角度変化量に基づいて、加速区間および/または減速区間のセグメントを再設定することを特徴とする。
【0069】
本実施形態のセグメント設定部312は、角速度設定部313によって設定された各セグメントの角速度に基づく加速時間と加速時間要求値の第1差分値が第1閾値より大きい場合、第1差分値が第1閾値以下となるように加速区間のセグメント数または各セグメントの距離を再設定する。
また、本実施形態のセグメント設定部312は、角速度設定部313によって設定された各セグメントの角速度に基づく減速時間と減速時間要求値との第2差分値が第2閾値より大きい場合、第2差分値が第2閾値以下となるように減速区間のセグメント数または各セグメントの距離を再設定する。
なお、第1閾値および第2閾値は、それぞれ加速時間要求値および減速時間要求値との乖離度合がシステム上許容可能なレベルに応じて適宜設定可能である。
【0070】
以下、本実施形態のセグメント設定部312によって行われるセグメント数または各セグメントの距離の再設定の例を、
図11を参照して説明する。
図11は、本実施形態のロボット制御方法において、セグメント調整前後の時間の経過に対する主関節の角速度変化を示す図である。
図11において、セグメント調整前の場合には、加速区間は各セグメントに対して特定された主関節が、全体をPTP制御で移動させた場合の主関節と一致しないことから、直線補間制御による加速時間が加速時間要求値t1よりも長くなっている。そのため、総移動時間tfが長くなっている。
【0071】
それに対して本実施形態では、セグメント設定部312は、加速区間の各セグメントの距離を短くするか、またはセグメント数を少なくし、それによって加速区間が以下の条件式(16)を満たすようにする。例えば各セグメントの距離の調整は、上記式(6),(7)の定数を変更することで可能である。
なお、条件式(16)において、
maxdst_seg[j]:セグメント番号がjのセグメントにおける主関節の角度変化量
jcur:現在のセグメント番号
t1:加速時間要求値 (msec)
Vm:最大角速度要求値 (radian)
である。
【0072】
【0073】
セグメント調整前の加速区間の各セグメントの距離では、各セグメントに設定される角速度が
図11のPTP制御による太線で示す角速度よりも速く、条件式(16)を満たさない。
そこで、加速区間の各セグメントの距離を短くするか、または加速時間のセグメント数を少なくすることで、条件式(16)を満たすことが可能となる。その結果、セグメント調整後の加速区間では、
図11に示すように、セグメント調整前と比較して加速が緩やかとなり、加速時間要求値を満たすようになることがわかる。
上記式(16)の右辺から左辺を引いた値が、第1差分値の一例である。
【0074】
同様には、セグメント調整前の減速区間では、各セグメントに対して特定された主関節が、全体をPTP制御で移動させた場合の主関節と必ずしも一致しないことから、加速区間と同様に、本実施形態による総移動時間が長くなってしまうことがある。
そこで、セグメント設定部312は、減速区間の各セグメントの距離を短くするか、セグメント数を少なくすることで、以下の条件式(17)を満たすようにする。例えば各セグメントの距離の調整は、上記式(8),(9)の定数を変更することで可能である。
【0075】
なお、条件式(17)において、
maxdst_seg[j]:セグメント番号がjのセグメントにおける主関節の角度変化量
jcur:現在のセグメント番号
t2:減速時間要求値 (msec)
tf:総移動時間 (msec)
Vm:最大角速度要求値 (radian)
である。
上記式(17)の右辺から左辺を引いた値が、第2差分値の一例である。
【0076】
【0077】
本実施形態のロボット制御装置3の処理フローを
図12に示す。
図12は、本実施形態のロボット制御装置3によって実行されるフローチャートである。
図12に示すフローチャートが
図9と異なるのは、ステップS15が追加された点である。
ロボット制御装置3の制御部31は、各セグメントの主関節の角速度を設定すると(ステップS14)、加速時間要求値および減速時間要求値を満たすか否か(つまり、式(16)および式(17)を満たすか否か)判断する(ステップS15)。満たさない場合にはステップS12に戻り、加速区間および/または減速区間のセグメント数または各セグメントの距離を変更する。ステップS12,S14の処理は、ステップS15の条件式が満たされるまで行われる。
このとき、ステップS15では、上記式(16)の右辺から左辺を引いた値が所定の第1閾値以下であり、かつ上記式(17)の右辺から左辺を引いた値が所定の第2閾値以下であることを収束条件としてもよい。
【0078】
(3)第3の実施形態
次に、第3の実施形態について説明する。
第1の実施形態のロボット制御装置3において設定される主関節の角速度は、各セグメント内では一定であるため、セグメント間において主関節の角速度が大きく変化する場合がある。しかし、大きな角速度の変化は、ロボットに振動を生じさせることがあり好ましくない。そこで、本実施形態では、ロボットに振動が生じ難くなるように、主関節の角速度の変化を平滑化する。
上記観点から、本実施形態のロボット制御装置3は、パルス数設定部314により設定されたパルス数に対してフィルタ処理を行うフィルタ処理部をさらに備える。そして、パルス生成部315は、制御パルスのパルス数を、フィルタ処理後のパルス数に設定する。
【0079】
フィルタ処理の方法は特に限定しないが、例えば所定回数の基準時間(例えば1ms)に対して設定されたパルス数に基づく移動平均フィルタを利用することができる。移動平均フィルタに使用するパルス数のサンプルの数は問わないが、平滑化の効果を高めるためにはサンプル数が十分に多いことが好ましい一方で、サンプル数が多過ぎると移動時間が長くなる。好適な一例では、サンプル数nは10である。
【0080】
具体的には、関節番号i(i=1~6)の関節に対するk番目の制御パルスの数をpls_new[i][k]とすると、パルス数pls_new[i][k]は、式(18)に従ってもとめられる。
なお、式(18)において、
pls_new:移動平均フィルタ適用後の制御パルスの数
pls:移動平均フィルタ適用前の制御パルスの数
i:関節番号 (1, 2, 3, 4, 5, 6)
k:動作パルスの生成回数
n:移動平均に使用するサンプル数
である。
【0081】
【0082】
以上、本発明のロボット制御装置の複数の実施形態について詳述したが、本発明は上記の各実施形態に限定されない。また、上記の実施形態は、本発明の主旨を逸脱しない範囲において、種々の改良や変更が可能である。例えば、各実施形態について言及した技術的事項は、技術的矛盾が生じない限り、異なる実施形態の間で適宜組み合わせてもよい。
【0083】
上述した説明により、
図3の機能ブロック図に記載された機能のうち少なくとも一部の機能をコンピュータに実現させるためのプログラム、および、当該プログラムが記録されたコンピュータ可読記憶媒体(不揮発性の記憶媒体をも含む。)が開示されていることは当業者に理解される。
【符号の説明】
【0084】
1…ロボットシステム、2…情報処理装置、21…制御部、22…ストレージ、23…入力装置、24…表示装置、25…通信インタフェース部、3…ロボット制御装置、31…制御部、311…区間設定部、312…セグメント設定部、313…角速度設定部、314…パルス数設定部、315…パルス生成部、32…ストレージ、33…通信インタフェース部、EC…イーサネットケーブル、WC…ケーブル、R…ロボット、101…モータ駆動回路、102…モータ