(57)【要約】【課題】ロボットアームの先端の位置精度を向上させる。【解決手段】ＣＰＵ３０１が、ロボットアーム２００における複数の関節Ｊ１〜Ｊ６の動作を制御する複数の関節制御装置２７０１〜２７０６のそれぞれに指令を送信し、複数の関節制御装置２７０１〜２７０６のそれぞれがＣＰＵ３０１に応答を送信することにより、ロボットアーム２００を制御する。ＣＰＵ３０１と複数の関節制御装置２７０１〜２７０６のそれぞれとが、ＣＰＵ３０１と複数の関節制御装置２７０１〜２７０６のそれぞれとの間の通信に割り当てられる通信帯域を、ロボットアーム２００の先端の挙動に応じて調整して通信する。【選択図】図２
2020015135.tif 000002
【特許請求の範囲】
【請求項１】
指令部がロボットアームにおける複数の関節の動作を制御する複数の制御部のそれぞれに指令を送信し、前記複数の制御部のそれぞれが前記指令部に応答を送信することにより、前記ロボットアームを制御するロボット制御方法であって、
前記指令部と前記複数の制御部のそれぞれとが、前記指令部と前記複数の制御部のそれぞれとの間の通信に割り当てられる通信帯域を、前記ロボットアームの先端の挙動に応じて調整して通信することを特徴とするロボット制御方法。
【請求項２】
前記指令部と前記複数の制御部のそれぞれとの通信に割り当てられる通信帯域の合計が一定であることを特徴とする請求項１に記載のロボット制御方法。
【請求項３】
前記指令部が、前記複数の関節のうち１つの関節の軌道データに従って前記１つの関節のみを動作させるシミュレーションを行って前記ロボットアームの先端の動きを求め、求めた前記ロボットアームの先端の動きに応じて、前記複数の制御部のうち、前記１つの関節の動作を制御する１つの制御部との通信に割り当てられる通信帯域を決定することを特徴とする請求項１又は２に記載のロボット制御方法。
【請求項４】
前記指令部が、前記ロボットアームの先端の動きとして、前記ロボットアームの先端の移動量を求め、前記移動量が大きいほど、前記１つの制御部との通信に割り当てられる通信帯域を広くすることを特徴とする請求項３に記載のロボット制御方法。
【請求項５】
前記移動量は、所定方向の移動量であることを特徴とする請求項４に記載のロボット制御方法。
【請求項６】
前記移動量は、所定時間当たりの移動量であることを特徴とする請求項４又は５に記載のロボット制御方法。
【請求項７】
前記指令部が、前記１つの制御部との通信に割り当てられる通信帯域と、前記１つの制御部が送信する応答の１周期分の通信データ量とに応じて、前記１つの制御部との通信周期を決定することを特徴とする請求項３乃至６のいずれか１項に記載のロボット制御方法。
【請求項８】
前記１つの制御部が送信する応答の１周期分の通信データ量が一定であることを特徴とする請求項７に記載のロボット制御方法。
【請求項９】
前記１つの制御部が送信する応答の１周期分の通信データ量が、前記指令部と前記１つの制御部との通信に割り当てられる通信帯域に応じて変更されることを特徴とする請求項７に記載のロボット制御方法。
【請求項１０】
前記複数の制御部のうち、１つの制御部が送信する応答の１周期分の通信データ量が、前記指令部と前記１つの制御部との通信に割り当てられる通信帯域に応じて変更されることを特徴とする請求項１又は２に記載のロボット制御方法。
【請求項１１】
前記応答には、前記ロボットアームの関節に設けられた減速機の入力側に配置された第１エンコーダのエンコーダデータと、前記減速機の出力側に配置された第２エンコーダのエンコーダデータとが含まれることを特徴とする請求項１乃至１０のいずれか１項に記載のロボット制御方法。
【請求項１２】
指令部がロボットアームにおける複数の関節の動作を制御する複数の制御部のそれぞれに指令を送信し、前記複数の制御部のそれぞれが前記指令部に応答を送信することにより、前記ロボットアームを制御するロボット制御方法であって、
前記指令部と前記複数の制御部のそれぞれとが、前記指令部と前記複数の制御部のそれぞれとの間の通信周期を、前記ロボットアームの先端の挙動に応じて調整することを特徴とするロボット制御方法。
【請求項１３】
請求項１乃至１２のいずれか１項に記載のロボット制御方法により前記ロボットアームを制御して物品を製造する物品の製造方法。
【請求項１４】
ロボットアームにおける複数の関節の動作を制御する複数の制御部と、
前記複数の制御部のそれぞれに指令を送信し、前記複数の制御部のそれぞれから応答を受信する指令部と、を備え、
前記指令部と前記複数の制御部のそれぞれとが、前記指令部と前記複数の制御部のそれぞれとの通信に割り当てられる通信帯域を、前記ロボットアームの先端の挙動に応じて調整して通信することを特徴とする制御システム。
【請求項１５】
ロボットアームにおける複数の関節の動作を制御する複数の制御部と、
前記複数の制御部のそれぞれに指令を送信し、前記複数の制御部のそれぞれから応答を受信する指令部と、を備え、
前記指令部と前記複数の制御部のそれぞれとが、前記指令部と前記複数の制御部のそれぞれとの間の通信周期を、前記ロボットアームの先端の挙動に応じて調整することを特徴とする制御システム。
【請求項１６】
前記ロボットアームと、
前記ロボットアームを制御する請求項１４又は１５に記載の制御システムと、を備えたロボット。
【請求項１７】
コンピュータに、請求項１乃至１２のいずれか１項に記載のロボット制御方法を行わせるプログラム。
【請求項１８】
請求項１７に記載のプログラムが記録されたコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットアームの制御に関する。
【背景技術】
【０００２】
産業用ロボットなどのロボットは、ロボットアームと、ロボットアームを制御するロボット制御装置とを有している。ロボットアームの関節は、モータ及び減速機等を有する駆動機構により駆動される。ロボット制御装置は、指令部を有する。関節、即ちモータは、指令部からの指令に従って動作する制御部によって制御される。制御部は、例えば関節の数と同じ数存在する。指令部は、各制御部にバスを介して接続されており、各制御部と双方向通信が可能となっている。また、駆動機構のまわりには、センサが配置されており、制御部は、センサからの情報に基づいてモータをフィードバック制御したり、センサからの情報を含む応答を指令部に送信したりする。このように、指令部と各制御部との双方向通信により、ロボットアームが制御される。
【０００３】
近年、この種のロボットにおいて、センサの数が増加の傾向にある。センサ数が増加すると、指令部と各制御部との間で通信される通信データ量が増加する。このため、指令部と各制御部と間の通信帯域が不足する傾向にあった。
【０００４】
一方、特許文献１には、目標値を予定の移動軌跡からサンプリングする際に、関節の速度変化が大きい部分では、サンプリング間隔を短縮するとともに、関節の速度変化が小さい部分では、サンプリング間隔を延長することが開示されている。特許文献１に記載の方法では、緻密な制御が必要な部分では目標値の個数を増加させ、緻密な制御が不要な部分では目標値の個数を減少させるというものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−１７５５０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、近年要求されている精密組立などの精密作業をロボットアームに行わせようとする場合、特許文献１に開示されている方法によるロボットアームの先端の位置精度では不十分であり、更なる精度向上が求められていた。
【０００７】
本発明は、ロボットアームの先端の位置精度を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、指令部がロボットアームにおける複数の関節の動作を制御する複数の制御部のそれぞれに指令を送信し、前記複数の制御部のそれぞれが前記指令部に応答を送信することにより、前記ロボットアームを制御するロボット制御方法であって、前記指令部と前記複数の制御部のそれぞれとが、前記指令部と前記複数の制御部のそれぞれとの間の通信に割り当てられる通信帯域を、前記ロボットアームの先端の挙動に応じて調整して通信することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ロボットアームの先端の位置精度が向上する。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係るロボットを示す斜視図である。
【図２】第１実施形態に係るロボットの構成をブロックで示す説明図である。
【図３】第１実施形態に係るロボットの制御系を機能で示すブロック図である。
【図４】第１実施形態に係るロボット制御装置の処理を示すフローチャートである。
【図５】第１実施形態に係る各関節制御装置の処理を示すフローチャートである。
【図６】（ａ）及び（ｂ）は、第１実施形態に係るロボットアームをシミュレーションにより仮想的に動作させたときの一例を示す説明図である。
【図７】第１実施形態に係る通信帯域の割り当て例を示す図である。
【図８】第２実施形態に係るロボットの制御系を機能で示すブロック図である。
【図９】第３実施形態に係るロボットアームをシミュレーションにより仮想的に動作させたときの一例を示す説明図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
［第１実施形態］
図１は、第１実施形態に係るロボット１００を示す斜視図である。図２は、第１実施形態に係るロボット１００の構成をブロックで示す説明図である。ロボット１００は、工場等の生産ラインに配置され、第１ワークであるワークＷ１を、第２ワークであるワークＷ２に組み付けて物品Ｗ０を製造する組み付け作業などの生産作業を行う産業用ロボットである。
【００１２】
ロボット１００は、マニピュレータである垂直多関節のロボットアーム２００と、ロボットアーム２００を制御する制御システム３５０と、教示ペンダント４００とを有する。ロボットアーム２００は、台座の上面１５０に固定されている。ロボットアーム２００は、アーム本体２０１と、アーム本体２０１の先端に設けられたエンドエフェクタの一例であるハンド２０２と、を有する。ロボットアーム２００の先端（手先）がハンド２０２である。ハンド２０２は、物体、例えば部品、ツール、治具、カメラ等を把持可能な把持部である。
【００１３】
アーム本体２０１は、複数の関節Ｊ１〜Ｊ６で連結された複数のリンク２１０〜２１６を有する。以下、各関節が回転関節又は旋回関節である場合について説明するが、関節が直動関節であってもよい。本実施形態では、関節Ｊ１，Ｊ４，Ｊ６が回転関節であり、関節Ｊ２，Ｊ３，Ｊ５が旋回関節である。各関節Ｊ１〜Ｊ６が回転動作又は旋回動作することで、ロボットアーム２００の姿勢を変更することができる。ロボットアーム２００の姿勢を変更することで、ロボットアーム２００の先端であるハンド２０２を、作業空間における任意の位置及び姿勢に移動させることができる。
【００１４】
制御システム３５０は、ロボットアーム２００（アーム本体２０１）の外部に配置されたロボット制御装置３００と、ロボットアーム２００（アーム本体２０１）の内部に配置された複数（６つ）の制御部である関節制御装置２７０１〜２７０６とを有する。以下、部材に付す符号における下付き文字は、関節の符号Ｊ１〜Ｊ６における下付き文字と対応している。
【００１５】
ロボット制御装置３００と複数の関節制御装置２７０１〜２７０６とは、共通のバス３６０で接続されている。これにより、ロボット制御装置３００と複数の関節制御装置２７０１〜２７０６のそれぞれとは、バス３６０を介してデジタル信号の双方向通信が可能となっている。ロボット制御装置３００は、バス３６０を介して各関節制御装置２７０１〜２７０６に指令を示すデジタル信号を送信する。各関節制御装置２７０１〜２７０６は、バス３６０を介してロボット制御装置３００に応答を示すデジタル信号を送信する。なお、関節制御装置２７０１〜２７０６は、ロボットアーム２００（アーム本体２０１）の内部に配置される場合について説明するが、これに限定するものではない。関節制御装置２７０１〜２７０６は、ロボットアーム２００（アーム本体２０１）の外部に配置されてもよい。例えば、関節制御装置２７０１〜２７０６は、ロボット制御装置３００の筐体内に配置されていてもよく、また、ロボット制御装置３００とは別の制御ボックスに配置されていてもよい。
【００１６】
教示ペンダント４００は、作業者による操作指示をロボット制御装置３００に送信することで、作業者がロボットアーム２００を操作可能とするものであり、例えばロボットアーム２００を教示する際に用いられる。
【００１７】
図２に示すように、ロボットアーム２００は、複数の関節Ｊ１〜Ｊ６を駆動する複数の駆動機構２４０１〜２４０６を有する。駆動機構２４０１〜２４０６は、モータ２５０１〜２５０６と、モータ２５０１〜２５０６の回転軸の回転速度を減速する減速機２６０１〜２６０６とを有する。関節Ｊ１〜Ｊ６は、モータ２５０１〜２５０６により減速機２６０１〜２６０６を介して駆動される。モータ２５０１〜２５０６は、例えばブラシレスＤＣモータやＡＣサーボモータである。減速機２６０１〜２６０６は、例えば波動歯車減速機である。関節制御装置２７０１〜２７０６は、ロボット制御装置３００の指令の下、駆動機構２４０１〜２４０６のモータ２５０１〜２５０６をフィードバック制御して、関節Ｊ１〜Ｊ６の動作を制御する。
【００１８】
ロボット制御装置３００は、コンピュータで構成されている。ロボット制御装置３００は、指令部の一例であるプロセッサとしてのＣＰＵ（Central  Processing  Unit）３０１を備えている。また、ロボット制御装置３００は、記憶部の一例として、ＲＯＭ（Read  Only  Memory）３０２、ＲＡＭ（Random  Access  Memory）３０３、及びＨＤＤ（Hard  Disk  Drive）３０４を備えている。また、ロボット制御装置３００は、記録ディスクドライブ３０５、及び入出力インタフェースであるＩ／Ｆ３１１を備えている。
【００１９】
ＣＰＵ３０１、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５、及びＩ／Ｏ３１１は、互いに通信可能にバス３１０で接続されている。Ｉ／Ｆ３１１には、関節制御装置２７０１〜２７０６及び教示ペンダント４００が接続される。
【００２０】
ＣＰＵ３０１は、バス３６０を介して複数の関節制御装置２７０１〜２７０６のそれぞれに指令を送信し、各モータ２５０１〜２５０６の動作を、各関節制御装置２７０１〜２７０６に制御させる。複数の関節制御装置２７０１〜２７０６のそれぞれは、ＣＰＵ３０１に、センサデータを含む応答を送信する。これら、ＣＰＵ３０１及び複数の関節制御装置２７０１〜２７０６により、ロボットアーム２００を制御する。
【００２１】
ＨＤＤ３０４には、コンピュータに実行させるプログラムの一例である制御プログラム３２０と、複数の教示点データを含むタスクプログラム３２１とが格納される。ＣＰＵ３０１が制御プログラム３２０を読み出して実行することにより、ロボット全体を統括的に制御する。なお、ＣＰＵ３０１は、作業者の操作によって教示ペンダント４００から送信される指示を示す信号を受け付け、記憶部であるＨＤＤ３０４に、複数の教示点データを含むタスクプログラム３２１を記憶させる処理等を行う。記録ディスクドライブ３０５は、記録ディスク３２２に記録された情報を読み出すことができる。
【００２２】
なお、本実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ３０４であり、ＨＤＤ３０４に制御プログラム３２０が格納される場合について説明するが、これに限定するものではない。制御プログラム３２０は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、制御プログラム３２０を供給するための記録媒体としては、図２に示すＲＯＭ３０２、記録ディスク３２２、不図示の外部記憶装置等を用いてもよい。具体的に例示すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、磁気テープ、不揮発性メモリ等を用いることができる。光ディスクは、例えばＤＶＤ−ＲＯＭ、ＣＤ−ＲＯＭ、ＣＤ−Ｒである。不揮発性メモリは、例えばＵＳＢメモリ、メモリカード、ＲＯＭである。
【００２３】
図３は、第１実施形態に係るロボットの制御系を機能で示すブロック図である。図２に示すＣＰＵ３０１が制御プログラム３２０を実行することにより、図３に示す軌道生成部３７２、影響度算出部３７３、第１決定部３７４、第２決定部３７５、指令生成部３７６、及び通信部３７７として機能する。図２に示すＨＤＤ３０４は、図３に示す記憶部３７１として機能する。なお、記憶部３７１には、図２に示す複数の教示点データを含むタスクプログラム３２１が記憶されている。
【００２４】
関節制御装置２７０１，２７０２，…，２７０６は、不図示のマイクロコンピュータを有しており、図３に示す通信部８０１，８０２，…，８０６及びＰＩＤ部９０１，９０２，…，９０６として機能する。ＰＩＤ部９０１，９０２，…，９０６は、モータに電流を供給するモータドライバや、各種センサからのセンサ信号をデジタルのセンサデータに変換する変換器等を含む。
【００２５】
図２に示すモータ２５０１，２５０２，…，２５０６に接続された減速機２６０１，２６０２，…，２６０６の入力側には、センサの一例としての第１エンコーダである図３に示す入力軸エンコーダ５００１，５００２，…，５００６が配置されている。図２に示すモータ２５０１，２５０２，…，２５０６に接続された減速機２６０１，２６０２，…，２６０６の出力側には、センサの一例としての第２エンコーダである図３に示す出力軸エンコーダ６００１，６００２，…，６００６が配置されている。モータ２５０１，２５０２，…，２５０６に電流を供給するラインには、センサの一例としての電流センサ７００１，７００２，…，７００６が配置されている。
【００２６】
入力軸エンコーダ５００１〜５００６、及び出力軸エンコーダ６００１〜６００６は、ロータリエンコーダであり、光学式或いは磁気式のいずれであってもよく、またアブソリュート形或いはインクリメンタル形のいずれであってもよい。入力軸エンコーダ５００１〜５００６は、モータ２５０１〜２５０６の回転軸の回転角度に応じた信号を、ＰＩＤ部９０１〜９０６に出力する。出力軸エンコーダ６００１〜６００６は、減速機２６０１〜２６０６の出力軸の回転角度、即ち関節Ｊ１〜Ｊ６の角度に応じた信号を、ＰＩＤ部９０１〜９０６に出力する。電流センサ７００１〜７００６は、ラインを流れる電流に応じた信号を、ＰＩＤ部９０１〜９０６に出力する。ＰＩＤ部９０１〜９０６は、これら信号をデジタルデータに変換して、通信部８０１〜８０６に出力する。
【００２７】
ＰＩＤ部９０１〜９０６は、入力軸エンコーダ５００１〜５００６を用いたセミクローズドループ制御、又は出力軸エンコーダ６００１〜６００６を用いたフルクローズドループ制御によるフィードバック制御により、モータ、即ち関節の動作を制御する。
【００２８】
以下、ロボット制御装置３００の各部３７１〜３７７の機能、及び関節制御装置２７０１〜２７０６の各部８０１〜８０６，９０１〜９０６の機能について、図４及び図５に示すフローチャートを参照しながら説明する。図４は、第１実施形態に係るロボット制御装置３００の処理を示すフローチャートであり、図５は、第１実施形態に係る各関節制御装置２７０１〜２７０６の処理を示すフローチャートである。なお、図３に示す記憶部３７１に記憶された、複数の教示点データを含むタスクプログラム３２１（図２）は、事前の教示作業によって予め作成されたものである。
【００２９】
軌道生成部３７２は、記憶部３７１に予め記憶されている教示点データを取得する（Ｓ１）。軌道生成部３７２は、取得した教示点データに基づいてロボットアーム２００の先端の軌道データを生成する（Ｓ２）。例えば、軌道生成部３７２は、現在のロボットアーム２００の先端の位置から次の教示点の位置までの軌道データを生成する。現在のロボットアーム２００の先端の位置は、ロボットの順運動学計算により、例えば関節角度に相当する出力軸エンコーダ６００１〜６００６の信号に基づくエンコーダデータ（センサデータ）を用いて求めることができる。
【００３０】
更に軌道生成部３７２は、算出したロボットアーム２００の先端の軌道データに基づいて、複数の関節Ｊ１〜Ｊ６のそれぞれの軌道データを生成（算出）する（Ｓ３）。軌道生成部３７２は、算出した各関節Ｊ１〜Ｊ６の軌道データを、影響度算出部３７３及び指令生成部３７６へ出力する。
【００３１】
影響度算出部３７３は、軌道生成部３７２から取得した各関節Ｊ１〜Ｊ６の軌道データに基づいて、複数の関節Ｊ１〜Ｊ６のそれぞれに対応する影響度を算出する（Ｓ４）。影響度算出部３７３は、算出結果を第１決定部３７４及び第２決定部３７５へ出力する。
【００３２】
以下、複数の関節Ｊ１〜Ｊ６のそれぞれに対応する影響度及びその算出方法について具体的に説明する。ここで、例えば関節Ｊ１に対応する影響度とは、仮想空間において、１つの関節Ｊ１の軌道データに従って１つの関節Ｊ１のみを動作させるシミュレーションを行ったときのロボットアーム２００の先端の動きである。この場合、関節Ｊ１以外の関節Ｊ２〜Ｊ６は、仮想空間上、動作を停止させてシミュレーションする。
【００３３】
本実施形態において、ロボットアーム２００の先端の動きとは、ロボットアーム２００の先端の移動量のことである。例えば関節Ｊ１の場合、ロボットアーム２００の先端の動きとは、関節Ｊ１の軌道データに従って関節Ｊ１のみを動作させるシミュレーションを行ったときのロボットアーム２００の先端の移動量であり、その移動量をＬ１とする。他の関節Ｊ２〜Ｊ６も同様であり、そのときのロボットアーム２００の先端の移動量をＬ２〜Ｌ６とする。以下、ロボットアーム２００の先端の移動量Ｌ１〜Ｌ６を算出する方法について具体例を挙げて説明する。
【００３４】
図６（ａ）及び図６（ｂ）は、第１実施形態に係るロボットアーム２００をシミュレーションにより仮想的に動作させたときの一例を示す説明図である。図６（ａ）及び図６（ｂ）には、ロボットアーム２００を、関節Ｊ１の軌道データに従って関節Ｊ１のみを動作させるシミュレーションを行ったときのロボットアーム２００の動きを図示しており、動作開始時のロボットアーム２００の姿勢が互いに異なる。
【００３５】
図６（ａ）及び図６（ｂ）に示すＡ１は、関節Ｊ１の回転軸線である。Ｄ１は、回転軸線Ａ１からロボットアーム２００の先端までの距離（最短距離）である。θ１は、回転軸線Ａ１を中心とする関節Ｊ１の所定時間当たりの回転量である。Ｌ１は、所定時間当たりのロボットアーム２００の先端の移動量（道のり）である。回転量θ１の単位を［度］とすると、移動量Ｌ１は、次式（１）で表される。所定時間は、予め設定された時間である。
Ｌ１＝２π×Ｄ１×θ１÷３６０    （１）
【００３６】
距離Ｄ１は、図６（ａ）の場合と図６（ｂ）の場合とで異なる。即ち、距離Ｄ１は、ロボットアーム２００の動作を開始するときの姿勢に応じて異なる。このため、ロボットアーム２００の先端の動きである影響度、即ち移動量Ｌ１は、関節Ｊ１の回転を開始するときのロボットアーム２００の姿勢で異なる。このように、影響度算出部３７３は、１つの関節Ｊ１の軌道データに従って１つの関節Ｊ１のみを動作させるシミュレーションを行ってロボットアーム２００の先端の動きである移動量Ｌ１を求める。
【００３７】
影響度算出部３７３は、他の関節Ｊ２〜Ｊ６についても同様に、以下の式（２）〜（６）で、所定時間当たりのロボットアーム２００の先端の移動量（道のり）Ｌ２〜Ｌ６を求める。なお、関節Ｊ２〜Ｊ６の回転軸線からロボットアーム２００の先端までの距離（最短距離）を、Ｄ２〜Ｄ６とする。関節Ｊ２〜Ｊ６の回転軸線を中心とする関節Ｊ２〜Ｊ６の所定時間当たりの回転量をθ２〜θ６とする。回転量θ１の単位は［度］とする。
Ｌ２＝２π×Ｄ２×θ２÷３６０    （２）
Ｌ３＝２π×Ｄ３×θ３÷３６０    （３）
Ｌ４＝２π×Ｄ４×θ４÷３６０    （４）
Ｌ５＝２π×Ｄ５×θ５÷３６０    （５）
Ｌ６＝２π×Ｄ６×θ６÷３６０    （６）
【００３８】
図６（ａ）の姿勢のロボットアーム２００を例に、上記式（１）〜（６）を用いて移動量Ｌ１〜Ｌ６を算出した結果を表１に示す。
【表１】
2020015135.tif 000003
【００３９】
第１決定部３７４は、影響度算出部３７３から取得した各関節Ｊ１〜Ｊ６に対応する影響度、即ちロボットアーム２００の先端の動きに応じて、各関節Ｊ１〜Ｊ６に割り当てられる通信帯域Ｒ１〜Ｒ６を決定する（Ｓ５）。関節Ｊ１を例に説明すると、第１決定部３７４は、ロボットアーム２００の動きである移動量Ｌ１に応じて、関節Ｊ１の動作を制御する関節制御装置２７０１との通信に割り当てられる通信帯域Ｒ１を決定する。具体的には、第１決定部３７４は、ロボットアーム２００の先端の移動量Ｌ１が大きいほど、関節制御装置２７０１との通信に割り当てられる通信帯域Ｒ１を広くする。
【００４０】
本実施形態では、第１決定部３７４は、通信帯域Ｒ１を、合計の移動量（Ｌ１＋Ｌ２＋Ｌ３＋Ｌ４＋Ｌ５＋Ｌ６）を分母とし移動量Ｌ１を分子とする比率（以下、移動量Ｌ１の比率という）に応じて、以下の式（７）で算出する。
通信帯域Ｒ１＝（通信帯域の上限値−通信帯域の下限値×関節の総数）
×移動量Ｌ１の比率＋通信帯域の下限値        （７）
【００４１】
なお、通信帯域の上限値は、６つの通信帯域Ｒ１〜Ｒ６を合計した値であって、予め定められた値であり、所定の通信帯域、例えば８００［ｋｂｐｓ］に設定される。通信帯域の下限値は、６つの通信帯域Ｒ１〜Ｒ６それぞれにおける下限値であり、各通信帯域Ｒ１〜Ｒ６とも予め定められた同一の値に設定され、例えば４０［ｋｂｐｓ］に設定される。
【００４２】
第１決定部３７４は、ステップＳ５において、他の関節Ｊ２〜Ｊ６に対応する関節制御装置２７０２〜２７０６についても同様に、移動量Ｌ２〜Ｌ６に応じて、関節制御装置２７０２〜２７０６との通信に割り当てられる通信帯域Ｒ２〜Ｒ６を決定する。即ち、本実施形態では、所定の通信帯域（８００［ｋｂｐｓ］）を、各移動量Ｌ１〜Ｌ６の比率に応じて割り振り、各通信帯域Ｒ１〜Ｒ６を決定する。
【００４３】
通信帯域の上限値を８００［ｋｂｐｓ］、下限値を４０［ｋｂｐｓ］として、表１に示される各移動量Ｌ１〜Ｌ６に基づき、各移動量Ｌ１〜Ｌ６の比率、各通信帯域Ｒ１〜Ｒ６を求めると、以下の表２に示す通りとなる。
【表２】
2020015135.tif 000004
【００４４】
図６（ａ）の場合と同様にして図６（ｂ）の場合の各通信帯域Ｒ１〜Ｒ６を算出した結果が以下の表３である。
【表３】
2020015135.tif 000005
【００４５】
表３には、各関節の回転量θ１〜θ６を表１と同じ値として各通信帯域Ｒ１〜Ｒ６を算出した結果を示している。ロボットアーム２００の動作を開始する姿勢が互いに異なることにより、移動量Ｌ１〜Ｌ６が互いに異なるため、算出される通信帯域Ｒ１〜Ｒ６も、表２と表３とで互いに異なる。第１決定部３７４は、決定した通信帯域Ｒ１〜Ｒ６の情報を第２決定部３７５へ出力する。
【００４６】
第２決定部３７５は、関節制御装置２７０１との通信に割り当てられる通信帯域Ｒ１と、関節制御装置２７０１が送信する応答の１周期分の通信データ量とに応じて、関節制御装置２７０１との通信周期を決定する（Ｓ６）。関節制御装置２７０２〜２７０６との通信周期についても同様である。
【００４７】
具体的には、第２決定部３７５は、以下の式（８）に基づいて、各通信周期を決定する。
通信周期＝１周期分の通信データ量／通信帯域    （８）
【００４８】
具体的に数値例を挙げて説明する。図３に示す通信部３７７から各通信部８０１〜８０６へ送信する各指令の分解能を３２［ｂｉｔ］固定とする。通信部８０１〜８０６が通信部３７７へ送信する１周期分の応答の通信データ量、即ち入力軸エンコーダ５００１〜５００６、出力軸エンコーダ６００１〜６００５及び電流センサ７００１〜７００６の各センサデータの分解能を、３２［ｂｉｔ］固定とする。例えば通信部８０１においては、１周期分の応答の通信データ量を、入力軸エンコーダ５００１のエンコーダデータを３２［ｂｉｔ］、出力軸エンコーダ６００１のエンコーダデータを３２［ｂｉｔ］、電流センサ７００１の電流データを３２［ｂｉｔ］とする。他の通信部８０２〜８０６についても同様である。
【００４９】
指令及び応答共に送信時に８バイト分のヘッダを付加することとすると、１周期分の通信データ量は以下の通りとなる。
１周期分の通信データ量
＝指令（４［バイト］）＋１周期分の応答の通信データ量（４［バイト］×３）＋ヘッダ（８［バイト］×２）
＝３２［バイト］
【００５０】
１周期分の通信データ量が固定値であるので、通信帯域が決まれば、通信周期は、式（８）で求めることができる。上記の式（８）を用いて、表２に示した通信帯域の場合でロボット制御装置３００のＣＰＵ３０１と各関節制御装置２７０１〜２７０６との通信周期を求めると表４に示す通りとなる。なお、算出した通信周期の通りに通信を行おうとすると処理が煩雑となるため、本実施形態では、第２決定部３７５は、１ｍｓｅｃ単位に小数点以下を切り上げて通信周期を決定する。
【表４】
2020015135.tif 000006
【００５１】
上記の方法で決定した通信帯域の例を図７に示す。図７は、第１実施形態に係るＣＰＵ３０１と各関節制御装置との通信帯域の割り当て例を示す図である。なお、図７に示す符号Ｐ１は、図６（ａ）に示すロボットアーム２００の姿勢に対応する教示点を示し、図７に示す符号Ｐ２は、図６（ｂ）に示すロボットアーム２００の姿勢に対応する教示点を示す。図７に示すように、ＣＰＵ３０１（図２）は、教示点Ｐ１から教示点Ｐ２に到達するまで所定時間Ｔ毎に各移動量Ｌ１〜Ｌ６（影響度）を求め、通信帯域Ｒ１〜Ｒ６の割り当てを調整する。なお、本実施形態では、ロボット１００で使用可能な通信帯域ＲＴを所定の通信帯域（上限値、例えば８００［ｋｂｐｓ］）として、その中で各通信帯域Ｒ１〜Ｒ６に割り当てる割合を調整する。よって、通信帯域Ｒ１〜Ｒ６を合計した通信帯域の総量は一定となる。
【００５２】
なお、以上の説明では所定時間Ｔ毎に通信帯域Ｒ１〜Ｒ６の割り当てを変更する例を示したが、別の方法で割り当てを変更するようにしてよい。例えば、所定時間毎に算出した各通信帯域Ｒ１〜Ｒ６の変化量が所定値以内（具体的には算出した通信帯域が現在の通信帯域の±１０％以内）の場合は割り当てを変更せず、変化量が所定値を超えた場合に割り当てを変更するようにしてもよい。
【００５３】
指令生成部３７６は、軌道生成部３７２が生成した軌道データに基づいて、各関節制御装置２７０１〜２７０６に対する仮の角度指令を生成し、通信部３７７へ出力する。なお、指令生成部３７６は、仮の角度指令を、設定可能な範囲の中で最短となる周期、及び最大となる分解能を前提に生成する。また、指令生成部３７６は、通信部３７７から受信する入力軸エンコーダ、出力軸エンコーダ、及び電流センサのセンサデータの現在値を、例えば図２に示すＨＤＤ３０４などのログ保存部に記録、もしくは不図示の外部記憶装置に送信する。更に、指令生成部３７６は、各センサデータの現在値が所定範囲内かどうかを判定し、所定範囲外の場合、異常動作であるのでロボットアーム２００の動作を緊急停止する指令を各関節制御装置２７０１〜２７０６に送る。
【００５４】
通信部３７７は、指令生成部３７６から取得した各仮の角度指令を、第２決定部３７５から取得した各通信周期に基づいた角度指令に変換すると共に、通信周期の情報やヘッダ情報を埋め込んだ指令を生成する（図４のＳ７）。通信部３７７は、生成した指令を、各関節制御装置に対する通信周期に合わせたタイミングで通信部８０１〜８０６のそれぞれに送信する（図４のＳ８）。
【００５５】
また、通信部３７７は、各通信部８０１〜８０６が送信した入力軸エンコーダ、出力軸エンコーダ、及び電流センサのセンサデータの現在値を、所定の分解能のデータに変換し、指令生成部３７６へ出力する。なお、所定の分解能は、設定可能な範囲の中で最大となる分解能とする。
【００５６】
一方、各通信部８０１〜８０６は、通信部３７７から指令を受信した場合（図５のＳ１１：ＹＥＳ）、受信した指令から通信周期の情報及び角度指令の情報を抽出し、角度指令を対応するＰＩＤ部９０１〜９０６へ出力する。各ＰＩＤ部９０１〜９０６は、角度指令の入力を受け、各モータ２５０１〜２５０６をフィードバック制御（ＰＩＤ制御、即ち位置制御）する（Ｓ１２）。各ＰＩＤ部９０１〜９０６は、入力軸エンコーダ、出力軸エンコーダ及び電流センサのセンサデータの現在値を、各通信部８０１〜８０６へ出力する。各通信部８０１〜８０６は、各ＰＩＤ部９０１〜９０６から取得したセンサデータの現在値を、所定の分解能のデータに変換し、応答として、ＣＰＵ３０１により指定された通信周期で、通信部３７７へ送信する（Ｓ１３）。
【００５７】
以上の動作は、ＣＰＵ３０１がタスクプログラム３２１（図２）における教示点データの読み出しが終了するまで行う。このように、ＣＰＵ３０１と各関節制御装置２７０１〜２７０６とが連携し、ロボットアーム２００の制御を実行する。
【００５８】
本実施形態では、入力軸エンコーダ５００１〜５００６のエンコーダデータのみならず、出力軸エンコーダ６００１〜６００６のエンコーダデータが、応答に含まれており、応答の通信データ量が増加している。上述の制御により、ＣＰＵ３０１と各関節制御装置２７０１〜２７０６とが、各通信帯域Ｒ１〜Ｒ６を、ロボットアーム２００の先端の挙動に応じて調整して通信する。即ち、ＣＰＵ３０１と各関節制御装置２７０１〜２７０６とが、ＣＰＵ３０１と各関節制御装置２７０１〜２７０６との間の通信周期を、ロボットアーム２００の先端の挙動に応じて調整する。このように、各通信帯域（各通信周期）がロボットアーム２００の先端の挙動に応じて調整されるので、各通信帯域（各通信周期）を各関節の速度変化に応じて変更する場合に比べ、ロボットアーム２００の先端の位置精度が向上する。
【００５９】
そして、本実施形態では、限られた通信帯域ＲＴ（所定の通信帯域）、例えば８００［ｋｐｂｓ］の中で、ロボットアーム２００の先端の挙動に応じて各通信帯域Ｒ１〜Ｒ６が調整されるので、更にロボットアーム２００の先端の位置精度が向上する。
【００６０】
また、関節Ｊ１の動作に起因するロボットアーム２００の先端の移動量Ｌ１が大きいほど、広い通信帯域、即ち短い周期で制御するのが好ましい。逆に、関節Ｊ１の動作に起因するロボットアーム２００の先端の移動量Ｌ１が小さいほど、狭い通信帯域、即ち長い周期で制御しても差し支えない。他の関節Ｊ２〜Ｊ６も同様である。第１実施形態では、ＣＰＵ３０１は、移動量Ｌ１が大きいほど、応答である入力軸エンコーダ５００１、出力軸エンコーダ６００１及び電流センサ７００１のセンサデータを広い通信帯域（短い通信周期）で送信するように、関節制御装置２７０１に指令を送る。関節制御装置２７０１は、ＣＰＵ３０１からの指令に従った通信周期で、センサデータをＣＰＵ３０１に送信する。ＣＰＵ３０１は、他の関節Ｊ２〜Ｊ６に対応する関節制御装置２７０２〜２７０６との間でも同様の処理を行う。以上、ＣＰＵ３０１と各関節制御装置２７０１〜２７０６との間の制御動作により、通信帯域（通信周期）が調整され、ロボットアーム２００の先端の位置精度が更に向上する。
【００６１】
［第２実施形態］
次に、第２実施形態について説明する。図８は、第２実施形態に係るロボットの制御系を機能で示すブロック図である。なお、第２実施形態の図８において、ロボット制御装置３００における第２決定部３７５Ａ及び通信部３７７Ａの機能が、第１実施形態の図３における第２決定部３７５及び通信部３７７の機能と異なる。また、第２実施形態の図８において、関節制御装置２７０１〜２７０６における通信部８０Ａ１〜８０Ａ６の機能が、第１実施形態の図３における通信部８０１〜８０６の機能と異なる。なお、第２実施形態において、ロボット１００のハードウエアの構成、即ちロボット制御装置３００及び関節制御装置２７０１〜２７０６のハードウエアの構成は、上記第１実施形態と同様であるため、説明を省略する。
【００６２】
以下、通信部３７７Ａから通信部８０Ａ１〜８０Ａ６へ送信する指令の分解能を３２［ｂｉｔ］固定とする。通信部８０１〜８０６から通信部３７７へ送信する応答、即ち入力軸エンコーダ５００１〜５００６、出力軸エンコーダ６００１〜６００６及び電流センサ７００１〜７００６のセンサデータの現在値の各分解能を変更する。
【００６３】
第２決定部３７５Ａは、移動量Ｌ１〜Ｌ６が大きいほど、１周期分の応答の通信データの分解能を高くするように、各関節制御装置２７０１〜２７０６との通信周期及び各関節制御装置２７０１〜２７０６に応答させるデータの分解能を決定する。なお、分解能を高くすることは、通信データ量を増加させること意味する。第２決定部３７５Ａは、この処理を、図４におけるステップＳ７で行う。
【００６４】
具体的な方法としては、第２決定部３７５Ａは、算出した移動量Ｌ１〜Ｌ６の比率に応じて、以下の通りに分解能を変更する。
・移動量の比率≧２０％          →  応答の各分解能を３２［ｂｉｔ］に決定
・１０％≦移動量の比率＜２０％  →  応答の各分解能を２４［ｂｉｔ］に決定
・移動量の比率＜１０％          →  応答の各分解能を１６［ｂｉｔ］に決定
【００６５】
第２決定部３７５Ａは、応答の各分解能を決定することで、各関節制御装置２７０１〜２７０６が送信する応答の１周期分の通信データ量を算出する。そして、以下の式により、各関節制御装置２７０１〜２７０６と通信する１周期分の通信データ量を算出する。
１周期分の通信データ量
＝指令（４［バイト］）＋応答の１周期分の通信データ量＋ヘッダ（８［バイト］×２）
【００６６】
通信帯域と１周期分の通信データ量が決まれば、通信周期は、上記の式（８）で求めることができる。上記の式（８）を用いて、表２に示した通信帯域の場合でロボット制御装置３００のＣＰＵ３０１と各関節制御装置２７０１〜２７０６との通信周期を求めると表５に示す通りとなる。なお、算出した通信周期の通りに通信を行おうとすると処理が煩雑となるため、本実施形態では、第２決定部３７５Ａは、１ｍｓｅｃ単位に小数点以下を切り上げて通信周期を決定する。
【表５】
2020015135.tif 000007
【００６７】
表５において、各通信帯域は表４と同じであるが、分解能を変更したため、表４と通信周期が異なる結果となっている。なお、上記分解能の変更の仕方はあくまでも一例であり、移動量が大きいほど関節の分解能を高くするような決定方法であれば、他の方法でもよい。
【００６８】
第２決定部３７５Ａは、通信周期及び分解能の情報を通信部３７７Ａへ出力する。通信部３７７Ａは、指令生成部３７６から出力された各仮の角度指令を、通信周期及び分解能に基づいた角度指令に変換すると共に、通信周期及び分解能の情報を埋め込んで、指令を生成する。通信部３７７Ａは、生成した指令を、各関節制御装置２７０１〜２７０６の通信周期に合わせたタイミングで、各通信部８０Ａ１〜８０Ａ６に送信する。
【００６９】
各通信部８０Ａ１〜８０Ａ６は、受信した指令から通信周期及び分解能の情報と、角度指令の情報を抽出するとともに、各角度指令を各ＰＩＤ部９０１〜９０６へ出力する。各通信部８０Ａ１〜８０Ａ６は、各ＰＩＤ部９０１〜９０６から出力された入力軸エンコーダ、出力軸エンコーダ、及び電流センサのセンサデータの現在値を取得して、指定された分解能のデータに変換し、指定された通信周期で通信部３７７Ａへ送信する。
【００７０】
以上、第２実施形態によれば、第１実施形態と同様、影響度に基づいて各通信帯域を調整することにより、限られた通信帯域の中でロボットアーム２００の先端の位置精度が向上する。
【００７１】
［第３実施形態］
次に、第３実施形態について説明する。図９は、第３実施形態に係るロボットアーム２００をシミュレーションにより仮想的に動作させたときの一例を示す説明図である。なお、第３実施形態において、ロボット１００のハードウエアの構成は、上記第１実施形態と同様であるため、説明を省略する。
【００７２】
第３実施形態では、影響度の算出方法が第１及び第２実施形態と異なる。第３実施形態における影響度の算出例について、図９を用いて説明する。なお、図９には、関節Ｊ２のみを動作させる場合について例示している。
【００７３】
第３実施形態では、影響度算出部３７３（図３）は、関節Ｊ２の回転量θａ２と、回転軸線Ａ２からロボットアーム２００の先端までの距離Ｄ２に基づいて、ロボットアーム２００の先端の移動量のうち、所定方向である鉛直方向の移動量Ｖ２を算出とする。
【００７４】
移動量Ｖ２は、次の式（９）で算出される。
Ｖ２＝２π×Ｄ２×θａ２÷３６０×ｃｏｓθｂ２    （９）
Ｄ２は、関節Ｊ２の回転軸線Ａ２から先端までの距離である。θａ２は、関節Ｊ２の回転量（単位は度）である。θｂ２は、鉛直方向に対する関節Ｊ２の回転面の傾き（単位は度）である。例えばθａ２＝１［度］、θｂ２＝５［度］、Ｄ２＝１６０［ｍｍ］とした場合、Ｖ２＝２π×１６０［ｍｍ］×１÷３６０×ｃｏｓ５［°］＝約２．８［ｍｍ］となる。
【００７５】
他の関節Ｊ１、Ｊ３〜Ｊ６の鉛直方向成分の移動量も、式（９）と同様にして計算することが可能であり、その算出した例を表６に示す。
【表６】
2020015135.tif 000008
【００７６】
第１実施形態と同様、第１決定部３７４（図３）は、算出した鉛直方向の移動量Ｖ１〜Ｖ６の比率に応じて、各通信帯域Ｒ１〜Ｒ６を決定する。
【００７７】
以上、第３実施形態によれば、第１及び第２実施形態と同様、影響度に基づいて各通信帯域を調整することにより、限られた通信帯域の中でロボットアーム２００の先端の位置精度を向上させることができる。
【００７８】
また、第３実施形態によれば、所定方向の移動量に絞ることで、所定方向に対するロボットアーム２００の先端の位置精度を向上させることができる。これによって、例えばワーク組付け時のオーバーシュートを抑制し、ロボットアームとワークとの衝突を防ぐことができる。
【００７９】
なお、第３実施形態では、所定方向を鉛直方向とした場合について説明したが、ロボットアーム２００の動作状況に合わせて適宜の方向に設定すればよい。
【００８０】
本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。また、実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されない。
【００８１】
上述の実施形態では、ロボットアーム２００が垂直多関節のロボットアームの場合について説明したが、これに限定するものではない。ロボットアームが、例えば、水平多関節のロボットアーム、パラレルリンクのロボットアーム、直交ロボット等、種々のロボットアームについて本発明は適用可能である。
【００８２】
上述の実施形態では、影響度、即ちロボットアームの動きとして、１つの関節の軌道データに従って１つの関節のみを動作させるシミュレーションを行ってロボットアームの先端の移動量を求めたが、これに限定するものではない。例えば、影響度として、１つの関節の軌道データに従って１つの関節のみを動作させるシミュレーションを行ってロボットアームの先端の加速度を求めてもよい。
【００８３】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８４】
１００…ロボット、２００…ロボットアーム、２７０１〜２７０６…関節制御装置（制御部）、３００…ロボット制御装置、３０１…ＣＰＵ（指令部）
【図１】
2020015135.tif 000009
【図２】
2020015135.tif 000010
【図３】
2020015135.tif 000011
【図４】
2020015135.tif 000012
【図５】
2020015135.tif 000013
【図６】
2020015135.tif 000014
【図７】
2020015135.tif 000015
【図８】
2020015135.tif 000016
【図９】
2020015135.tif 000017