(57)【要約】【課題】時間の経過に従って長さの変化するロボットアームのアーム長を推定し、推定したアーム長に基づきロボットアームを制御する。【解決手段】アーム長測定制御部１０２は、時間間隔を空けて少なくとも２回に分けてロボットアームのアーム現在長を測定する。アーム推定長演算部１０３は、測定したアーム現在長に基づきアーム長の実変化長さを求めると共に、推定情報テーブルから求められるアーム推定長に基づきアーム長の推定変化長さを求める。アーム推定長演算部１０３は、これらアーム長の実変化長さとアーム長の推定変化長さとが所定範囲内にあることを契機に実作業を開始する。実作業中、推定情報テーブルのアーム推定長に従って目標位置に対するずれ量が補正され、ロボットアームの先端が前記目標位置となるようにロボットアームは制御される。【選択図】図４
2015150676.tif 000002
【特許請求の範囲】
【請求項１】
関節を動かすアクチュエータを内部に有する多関節のロボットアームと、
時間の経過に従って長さの変化する前記ロボットアームの、経過時間に応じたアーム推定長を示す推定情報を記憶する記憶手段と、
前記アクチュエータを駆動して前記ロボットアームの先端が目標位置となるように前記ロボットアームの制御を行う制御部と、を備え、
前記制御部は、前記ロボットアームの制御を行う際に、前記記憶手段から取得した推定情報と経過時間とに基づき前記アーム推定長を求め、該求めたアーム推定長に従って前記目標位置に対するずれ量を補正することを特徴とするロボット装置。
【請求項２】
前記ロボットアームのアーム現在長を測定する測定手段をさらに備え、
前記制御部は、前記ロボットアームの制御を行う前に前記ロボットアームを動作し、前記測定手段を用いて時間間隔を空けて少なくとも２回に分けて前記アーム現在長の測定を行い、該測定した前記アーム現在長に基づくアーム長の実変化長さと、前記アーム現在長を測定した各時間に対応した前記アーム推定長に基づくアーム長の推定変化長さとが所定範囲内にある場合に、前記ロボットアームの制御を開始することを特徴とする請求項１に記載のロボット装置。
【請求項３】
前記ロボットアームの周囲の温度を検出する温度検出手段をさらに備え、
前記記憶手段は、複数の前記推定情報を所定の作業工程及び所定の温度に対応付けて記憶しており、
前記制御部は、前記温度検出手段により検出される周囲温度と所定の作業工程とに基づき、前記記憶手段に記憶された複数の推定情報の中からいずれか１つを取得することを特徴とする請求項１又は２に記載のロボット装置。
【請求項４】
前記測定手段は、弾性部材と前記弾性部材を介して圧力を検出する圧力センサとを有し、
前記弾性部材は、前記ロボットアームを載置する架台に固定されており、
前記制御部は、前記ロボットアームの先端を前記弾性部材に押し当てるように前記ロボットアームを動作し、前記圧力センサからの圧力検出信号に基づき前記アーム現在長を求めることを特徴とする請求項２又は３に記載のロボット装置。
【請求項５】
関節を動かすアクチュエータを内部に有する多関節のロボットアームと、前記アクチュエータを駆動して前記ロボットアームの先端が目標位置となるように前記ロボットアームの制御を行う制御部と、を備えたロボット装置において前記ロボットアームを制御するロボット制御方法であって、
前記制御部が、時間の経過に従って長さの変化する前記ロボットアームの、経過時間に応じたアーム推定長を示す推定情報を記憶手段に記憶する記憶手順と、
前記制御部が、前記ロボットアームの制御を行う際に、前記記憶手段から取得した推定情報と経過時間とに基づき前記アーム推定長を求め、該求めたアーム推定長に従って前記目標位置に対するずれ量を補正するアーム制御手順と、
を備えることを特徴とするロボット制御方法。
【請求項６】
前記ロボット装置は、前記ロボットアームのアーム現在長を測定する測定手段をさらに備え、
前記制御部が、前記ロボットアームの制御を行う前に前記ロボットアームを動作し、前記測定手段を用いて時間間隔を空けて少なくとも２回に分けて前記アーム現在長の測定を行い、該測定した前記アーム現在長に基づくアーム長の実変化長さと、前記アーム現在長を測定した各時間に対応した前記アーム推定長に基づくアーム長の推定変化長さとが所定範囲内にある場合に、前記ロボットアームの制御を開始する開始手順をさらに備えることを特徴とする請求項５に記載のロボット制御方法。
【請求項７】
前記ロボット装置は、前記ロボットアームの周囲の温度を検出する温度検出手段をさらに備え、
前記制御部が、複数の前記推定情報を所定の作業工程及び所定の温度に対応付けて前記記憶手段に記憶する記憶手順と、
前記制御部が、前記温度検出手段により検出される周囲温度と所定の作業工程とに基づき、前記記憶手段に記憶された複数の推定情報の中からいずれか１つを取得する情報取得手順をさらに備えることを特徴とする請求項５又は６に記載のロボット制御方法。
【請求項８】
前記測定手段は、弾性部材と前記弾性部材を介して圧力を検出する圧力センサとを有し、
前記弾性部材は、前記ロボットアームを載置する架台に固定されており、
前記制御部が、前記ロボットアームの先端を前記弾性部材に押し当てるように前記ロボットアームを動作し、前記圧力センサからの圧力検出信号に基づき前記アーム現在長を求める現在長測定手順をさらに備えることを特徴とする請求項６又は７に記載のロボット制御方法。
【請求項９】
請求項５乃至８のいずれか一項に記載のロボット制御方法をコンピュータに実行させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多関節のロボットアームを制御するロボット装置、ロボット制御方法及びプログラム、並びに記録媒体に関する。特に、熱膨張などにより時間の経過に従って長さの変わるロボットアームを制御する技術に関する。
【背景技術】
【０００２】
ロボット装置は、複数のフレームが可動軸で連結された多関節のロボットアームを制御して、ワークの組み立てなどの実作業を行うものであるが、従来では実作業を行う前に実作業を伴わない空運転を数時間かけて行う必要があった（所謂、暖気運転）。これは、熱膨張によってロボットアーム全体の長さ（以下、単にアーム長と記す）が時間の経過に従って変わってしまうことに鑑みて、実作業を行う前にアーム長が最大長になるまで予めロボットアームを熱膨張変化させておくためである。暖気運転を行うことで、ロボット装置は実作業中に高い精度でロボットアームを制御することができる。
【０００３】
これに対して、最近では、実作業を開始するまでの準備時間の短縮や省エネルギーの観点から、暖気運転を行わなくてよい装置や方法が知られている。例えば、暖気運転を行う代わりにフレーム内に設けられた加熱器によりフレームを加熱することで、予めロボットアームを熱膨張変化させておくようにした装置が提案されている（特許文献１）。あるいは、暖気運転を行うことなく実作業を開始して、実作業中に随時にアーム長の測定を行い、その度に測定結果を反映させてロボットアームを制御するようにした方法が提案されている（特許文献２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２３５８３６号公報
【特許文献２】特開平５−２６９６８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の装置は、アーム長が最大長になるまで加熱器によってフレームを加熱するためにエネルギーを使わなければならず、エネルギーが無駄に消費されている。また、ロボットアームの構造が複雑になる上に重量も増すので、高い精度でロボットアームを制御するのが難しくなり得る。他方、特許文献２に記載の方法は、アーム長を測定するために所定時間毎に実作業を中断することから実作業時間が延びてしまい、生産性の著しい低下を招き得る。
【０００６】
本発明は上記問題に鑑みてなされたもので、準備や実作業の時間短縮及び省エネルギーを図りつつ、アーム長の変化の影響を減らし高い精度で実作業を行うことのできる、ロボット装置、ロボット制御方法及びプログラム、並びに記録媒体の提供を目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るロボット装置は、関節を動かすアクチュエータを内部に有する多関節のロボットアームと、時間の経過に従って長さの変化する前記ロボットアームの、経過時間に応じたアーム推定長を示す推定情報を記憶する記憶手段と、前記アクチュエータを駆動して前記ロボットアームの先端が目標位置となるように前記ロボットアームの制御を行う制御部と、を備え、前記制御部は、前記ロボットアームの制御を行う際に、前記記憶手段から取得した推定情報と経過時間とに基づき前記アーム推定長を求め、該求めたアーム推定長に従って前記目標位置に対するずれ量を補正することを特徴とする。
【０００８】
また、本発明に係るロボット制御方法は、関節を動かすアクチュエータを内部に有する多関節のロボットアームと、前記アクチュエータを駆動して前記ロボットアームの先端が目標位置となるように前記ロボットアームの制御を行う制御部と、を備えたロボット装置において前記ロボットアームを制御するロボット制御方法であって、前記制御部が、時間の経過に従って長さの変化する前記ロボットアームの、経過時間に応じたアーム推定長を示す推定情報を記憶手段に記憶する記憶手順と、前記制御部が、前記ロボットアームの制御を行う際に、前記記憶手段から取得した推定情報と経過時間とに基づき前記アーム推定長を求め、該求めたアーム推定長に従って前記目標位置に対するずれ量を補正するアーム制御手順と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、経過時間毎に推定されるアーム長に従ってロボットアームの制御を行うことにより、暖気運転を行わなくてもよく、その結果、実作業を開始するまでの準備時間を短縮できまた暖機運転のために生じていたエネルギーの無駄をなくすことができる。また、実作業を行ったまま随時にアーム長を反映することにより、高い精度でロボットアームを制御することができ且つ効率的に実作業を実施することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係るロボット装置の構成を示す上面概略図である。
【図２】本発明の実施形態に係るロボット装置の構成を示す側面概略図である。
【図３】本発明の実施形態に係る制御装置の構成を示すハード構成ブロック図である。
【図４】本発明の実施形態に係る制御装置の機能を示す機能ブロック図である。
【図５】推定情報テーブルを示す概略図である。
【図６】ロボット制御処理を示すフローチャートである。
【図７】ロボット制御処理を具体的に説明するための説明図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施形態を詳細に説明する。まず、本発明の実施形態に係るロボット装置の概略構成について、図１乃至図２を用いて説明する。以下では、二本のロボットアームを有し、これら二本のロボットアームを別々に制御して１つの製品を組み立てるロボット装置を例に説明する。なお、説明を理解しやすくするために、ロボットアームは三軸のものを示している。
【００１２】
ロボット装置１００は、第一ロボットアーム２及び第二ロボットアーム３と、弾性部材としての測長器１０と、温度検出手段としての温度センサ３５と、を備える。これら第一ロボットアーム２及び第二ロボットアーム３、測長器１０、温度センサ３５は、組立作業台としての架台１の上に配置されている。また、ロボット装置１００は、第一ロボットアーム２及び第二ロボットアーム３を制御する制御装置４０を備えている。
【００１３】
第一ロボットアーム２及び第二ロボットアーム３について説明する。ただし、第一ロボットアーム２と第二ロボットアーム３とは同様の構成であることから、代表として第一ロボットアーム２について説明する。図２に示すように、第一ロボットアーム２は、関節Ｘ１、Ｘ２により連結された複数のフレーム５〜７と、関節Ｘ１、Ｘ２を駆動するアクチュエータとしての電動モータ（不図示、以下モータ）と、エンドエフェクタとしてのハンド８と、旋回台４とを有している。
【００１４】
具体的に説明すると、第二フレーム６は第一フレーム５に対して第一関節Ｘ１で回転（旋回）可能に連結されており、第三フレーム７は第二フレーム６に対して第二関節Ｘ２で回転（旋回）可能に連結されている。図示を省略したが、第一関節Ｘ１を駆動するモータは第一フレーム５の内部に設けられ、第二関節Ｘ２を駆動するモータは第二フレーム６の内部に設けられている。ハンド８は第三フレーム７の先端に設置され、不図示のワーク（部品等）を把持するなど、ワークに直接効果を与えるものである。第三フレーム７の内部には、第一ロボットアーム２をインピーダンス制御するための圧力センサ２０がハンド８に近い側に設けられている。ただし、後述するように、圧力センサ２０は第一ロボットアーム２のアーム長を測定するためにも用いられる。圧力センサ２０は例えば力覚センサであって、静電容量型六軸センサ、ピエゾ抵抗型センサ、磁気式センサ等いずれのタイプであってもよい。第一フレーム５は、架台１上に固定されている旋回台４に取り付けられている。
【００１５】
図１に戻り、旋回台４は架台１の対角位置、ここでは右端上部と左端下部にそれぞれ配置されている。旋回台４は、回転自在に架台１上に取り付けられ、不図示のモータの駆動に従って図１において時計方向及び反時計方向に回転する。したがって、ロボットアーム２，３はそれぞれの旋回台４が回転することに応じて図中矢印Ｆ方向にそれぞれ回転（旋回）し得る。
【００１６】
架台１の中央部には、ワークの組み立てを行うためのスペースとして作業領域Ｃが確保されている。架台１の周囲には、ワークを供給するための供給台Ｂ及び供給台Ｄと、組み立てられた製品を載置するための出荷台Ａとが配置されている。ロボットアーム２，３はそれぞれが架台１上を旋回して、供給台Ｂ及び供給台Ｄから供給されるワークを把持して作業領域Ｃへ移送することができる。また、第一ロボットアーム２は、作業領域Ｃから組み立てられた製品等を把持して出荷台Ａへ移送することもできる。なお、ロボットアーム２，３は、フレーム内に有するモータ（不図示）によって各関節Ｘ１，Ｘ２が駆動されて、各フレーム５〜７が適宜に旋回してワークの把持や組み立て等を行う。
【００１７】
測長器１０は、スライダ１１と、ばね１２と、壁部１３と、ベース部１４と、を有している。ベース部１４は、壁部１３を固定支持する一方でスライダ１１を摺動可能に支持する。つまり、ベース部１４の中央部にはスライド溝（不図示）が設けられており、スライダ１１はスライド溝に摺動可能に取り付けられている。ばね１２は、一端がスライダ１１に、他端が壁部１３に取り付けられるようにして、スライダ１１と壁部１３との間に設けられている。測長器１０は、旋回台４の配置箇所とは異なる側の架台１の対角位置、ここでは左端上部と右端下部に１つずつ配置されている。架台１の左端上部に配置された測長器１０は第一ロボットアーム２のアーム長を測定するために、架台１の右端下部に配置された測長器１０は第二ロボットアーム３のアーム長を測定するために用いられる。
【００１８】
ここで、測長器１０を用いたロボットアーム２，３のアーム長の測定方法について説明する。まず、ロボットアーム２，３のハンド８の先端をスライダ１１に対向する位置に位置付け、その後、屈曲状態にあるロボットアーム２，３を直線状態になるまで動かす。すると、ハンド８がスライダ１１を押すので、スライダ１１はベース部１４上を壁部１３に向かって摺動する。スライダ１１が壁部１３に向かって摺動すると、ばね１２が縮んでスライダ１１を壁部１３と反対側に移動させようとする反力が働く。この反力をロボットアーム２，３内の圧力センサ２０を利用して検出する。この場合、圧力センサ２０は反力の大きさに応じた圧力検出信号を出力する。検出される反力の大きさはロボットアーム２，３のアーム長の伸び量に比例することから、圧力センサ２０によって得られる圧力検出信号はロボットアーム２，３それぞれのアーム長を反映した信号である。
【００１９】
このように、測定手段としての測長器１０及び圧力センサ２０は組み合されて用いられることで、アーム長を測定することが可能になっている。そうであるから、ベース部１４上におけるスライダ１１の摺動範囲は、ロボットアーム２，３が熱膨張によって変化したとしてもアーム長を測定可能な範囲に設定されている。なお、弾性体にばね１２を用いた測長器１０を例に示したがこれに限らず、弾性力を有するならば、ばね１２以外のものを用いてもよい。
【００２０】
温度センサ３５は、ロボットアーム２，３の周囲温度（雰囲気温度とも呼ばれる）を検出する。温度センサ３５は、例えば熱電対、測温抵抗体、サーミスタ等である。ここでは温度センサ３５を架台１上に設けて、周囲温度として架台１の温度を測定するようにしている。熱容量の大きい架台１を測定することで、変化の少ない安定した周囲温度を得ることができる。勿論、これに限られることなく、例えば温度センサ３５をロボットアーム２，３のフレーム内に設け、周囲温度としてフレームの温度を測定するようにしてもよい。
【００２１】
次に、制御装置４０について説明する。図３は、制御装置の構成を示すハード構成ブロック図である。制御装置４０は例えばパーソナルコンピュータを用いて構成されており、そこにおいて、ロボットアーム２，３を制御するロボット制御処理はコンピュータが所定の制御プログラムを実行することにより実施される。勿論、ロボット制御処理はコンピュータソフトウェアプログラムの形態に限られず、例えば、ＤＳＰ（ディジタル・シグナル・プロセッサ）によって処理されるマイクロプログラムの形態でも実施可能である。
【００２２】
図３に示すように、制御装置４０は、マイクロプロセッサユニット（ＣＰＵ）６１、リードオンリメモリ（ＲＯＭ）６２、ランダムアクセスメモリ（ＲＡＭ）６３からなるマイクロコンピュータによって制御される。制御部としてのＣＰＵ６１は、ロボット装置１００全体の動作を制御する。ＣＰＵ６１には、タイマ割込み処理（インタラプト処理）における割込み時間や各種時間を計時する計時手段としてのタイマ６８が接続されている。このＣＰＵ６１に対して、通信バス１Ｄ（例えばデータ及びアドレスバス）を介してＲＯＭ６２、ＲＡＭ６３、入力装置６４、表示装置６５、記憶装置６６、温度センサ３５、圧力センサ２０、モータ制御部６７がそれぞれ接続されている。
【００２３】
ＲＯＭ６２は、ＣＰＵ６１により実行あるいは参照される制御プログラムや各種データ等を格納する。ＲＡＭ６３は、ＣＰＵ６１が所定のプログラムを実行する際に発生する各種データなどを一時的に記憶するワーキングメモリとして、あるいは現在実行中のプログラムやそれに関連するデータを一時的に記憶するメモリ等として使用される。
【００２４】
入力装置６４はマウスやキーボード等であって、例えばロボットアーム２，３に作業させる作業工程やＣＰＵ６１に対する各種制御命令（開始指示など）を、操作者（以下、ユーザと呼ぶ）が入力するために用いられる。表示装置６５は液晶表示パネル（ＬＣＤ）やＣＲＴ等から構成されるディスプレイであって、ユーザが作業工程を入力するために利用する入力画面（不図示）などの各種画面やＣＰＵ６１の制御状態などを表示する。
【００２５】
記憶装置６６は、ＣＰＵ６１が実行するロボット制御処理（後述の図６参照）などの各種プログラムの他に、推定情報テーブル（後述の図５参照）などの各種データを記憶する。なお、ＲＯＭ６２に制御プログラムが記憶されていない場合、記憶装置６６に制御プログラムを記憶させておき、それをＲＡＭ６３に読み込むことにより、ＲＯＭ６２に制御プログラムを記憶している場合と同様の動作をＣＰＵ６１に実行させることができる。また、記憶装置６６はハードディスク装置に限られず、着脱自在な様々な形態のコンピュータ読み取り可能な記録媒体を利用する装置などであってよい。例えば、フレキシブルディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、さらには不揮発性のメモリカードなどを利用する装置であってよい。あるいは、フラッシュメモリなどの半導体メモリであってもよい。
【００２６】
温度センサ３５は、上述したように周囲温度を検出する。ＣＰＵ６１は、温度センサ３５からの温度検出結果（温度データ）の入力を受ける。圧力センサ２０は、上述したようにロボットアーム２，３が測長器１０のスライダ１１を押すことによって生ずる反力を検出する。ＣＰＵ６１は、圧力センサ２０からの圧力検出結果（圧力検出信号）の入力を受ける。
【００２７】
モータ制御部６７は、ロボットアーム２，３の関節Ｘ１，Ｘ２さらには旋回台４を駆動するための各モータ９１〜９３へ電流を供給して、ロボットアーム２，３の先端の位置制御を行う。ＣＰＵ６１は、各モータの回転角度の制御量を示すそれぞれの駆動指令のデータを所定時間間隔でモータ制御部６７に出力する。モータ制御部６７は、ＣＰＵ６１から入力を受けた各駆動指令に基づき、各モータ９１〜９３への電流の出力量を演算し、該出力量に応じて電流を各モータ９１〜９３へ供給することにより、各ロボットアーム２，３の先端の位置制御を行う。なお、駆動指令は各モータ９１〜９３へ出力する電流値を示す電流指令である。
【００２８】
図４は、制御装置の機能を示す機能ブロック図である。制御部としてのＣＰＵ６１は、ユーザによる電源オン等の起動操作により、ロボット制御処理プログラム（図６参照）を記憶装置６６等から読み出して実行する。ＣＰＵ６１は、ロボット制御処理プログラムを実行することにより、推定情報取得部１０１、アーム長測定制御部１０２、アーム推定長演算部１０３、順運動学演算部１０４及び逆運動学演算部１０５として機能する。
【００２９】
推定情報取得部１０１は、温度センサ３５により検出される周囲温度及び入力装置６４から入力される作業工程に基づき、推定情報記憶部８１に記憶されている複数の推定情報テーブルの中からいずれか１つを取得する。記憶手段としての記憶装置６６は、互いに異なる記憶エリアを示す推定情報記憶部８１及び軌道記憶部８２を有し、推定情報記憶部８１には複数の推定情報テーブルが記憶されている。推定情報テーブルは、後述するロボット制御処理（図６参照）を実行する前に生成済みのデータであって、予め推定情報記憶部８１に記憶されている。
【００３０】
ここで、推定情報テーブルの一例を図５に示す。図５（ａ）に示す推定情報テーブルは、アーム推定長の時間的推移を記憶したデータである。経過時間は、モータ９１〜９３等が発熱しておらず熱膨張の生じていない状態（これを初期状態と呼ぶ）のときにロボットアーム２，３を駆動開始した場合の、駆動開始からの時間である。アーム推定長は、上記の経過時間毎に測長器１０及び圧力センサ２０を用いて実際にアーム長を測定することにより得られる実測値である。
【００３１】
推定情報テーブルの生成／記憶について述べる。ＣＰＵ６１は、初期状態で駆動開始したロボットアーム２，３を所定時間（例えば、５〜１０分）毎に停止し、測長器１０のスライダ１１を押すようにロボットアーム２，３を制御する。ロボットアーム２，３がスライダ１１を押すと、圧力センサ２０から圧力検出信号が出力されるので、ＣＰＵ６１はこの圧力検出信号に基づいてアーム長を求め、求めたアーム長を推定情報記憶部８１に記憶する（記憶手順）。再度、ＣＰＵ６１は、所定時間が経過するまでロボットアーム２，３を駆動する。こうしてロボットアーム２，３の駆動開始及び停止並びにアーム長の測定が所定時間毎に繰り返されて、推定情報テーブルは生成／記憶されていく。
【００３２】
上述の推定情報テーブルは、図５（ｂ）に示すように、所定の作業工程に対応付けられて推定情報記憶部８１に記憶されている。ここでは、推定情報テーブルが工程「Ｉ−１」〜工程「III−２」の六種類の作業工程のいずれかに対応付けられている例を示した。具体的には、ワークの重量で工程Ｉ、工程II、工程IIIに、かつアーム速度で速度Ｖ１、速度Ｖ２に分類わけされる工程「Ｉ−１」〜工程「III−２」のいずれかに、推定情報テーブルは対応付けられる。実際のロボット装置１００の運用上、作業工程は組立作業を行うラインの編成、組み立てる製品の種類、単位時間当たりの生産量等で変更されるものであり、またワークの重量、アーム速度等で細分化されている。そして、作業工程毎にロボットアーム２，３に生ずる熱量の時間変化量は異なることからすれば、熱膨張によるアーム長の時間変化量も作業工程毎に異なり得る。それ故、推定情報テーブルは作業工程に対応付けられる。
【００３３】
作業工程の具体例を挙げる。例えば、第一ロボットアーム２を速度「Ｖ１」で動かし、供給台Ｂからワークを把持させて作業領域Ｃへと移送させ、第二ロボットアーム３と共同して組立作業を実施させてから、出荷台Ａへと組み立てられた製品を移送させる一連の工程「Ｉ−１」がある。例えば、第一ロボットアーム２を速度「Ｖ２」で動かし、供給台Ｄからワークを把持させて作業領域Ｃへと移送させ、第二ロボットアーム３と共同して組立作業を実施させてから、出荷台Ａへと組み立てられた製品を移送させる一連の工程「Ｉ−２」がある。
【００３４】
また、推定情報テーブルは、所定の周囲温度に対応付けられて推定情報記憶部８１に記憶されている。ここでは、推定情報テーブルが２０℃、１５℃、２５℃のいずれかの周囲温度に対応付けられている例を示した。ロボットアーム２，３はフレーム内に有するモータ等の発熱によって熱膨張するが、熱膨張によるアーム長の時間変化量はロボットアーム２，３の周囲温度の影響を受ける。それ故、推定情報テーブルは周囲温度に対応付けられる。例えば推定情報テーブル「ＡＶ２０１」は、工程「Ｉ−１」且つ周囲温度「２０℃」に対応付けられている。なお、推定情報テーブルは複数のロボットアーム２，３に共通のものが記憶されてもよいし、複数のロボットアーム２，３それぞれに別々のものが記憶されてもよい。
【００３５】
図４の説明に戻り、アーム長測定制御部１０２は、ロボットアーム２，３を制御して測長器１０及び圧力センサ２０を用いたロボットアーム２，３のアーム長の測定を行う。アーム長測定制御部１０２は、ロボット制御処理（図６参照）時には実作業の開始前に時間間隔を空けて少なくとも２回に分けてロボットアーム２，３のアーム長（区別するためにアーム現在長と呼ぶ）を測定する。この場合、アーム長測定制御部１０２は、アーム現在長の測定を行うまでの間、実作業を伴わない空運転を行う。また、アーム長測定制御部１０２は、上述した推定情報テーブルの生成時には所定時間毎にロボットアーム２，３のアーム長を測定し、測定結果を推定情報記憶部８１に記憶する。
【００３６】
アーム推定長演算部１０３は、アーム長測定制御部１０２によって時間間隔を空けて少なくとも２回に分けてアーム現在長が測定された場合に、これらのアーム現在長に基づきアーム長の実変化長さを求める。また、アーム推定長演算部１０３は、アーム現在長が測定された時間（経過時間）に対応するアーム推定長を推定情報テーブルから求め、該求めたアーム推定長に基づきアーム長の推定変化長さを求める。そして、アーム推定長演算部１０３は、これらアーム長の実変化長さとアーム長の推定変化長さとが所定範囲内にあることを契機に、実作業を開始する。アーム推定長演算部１０３は実作業の実行時に、経過時間に応じて対応するアーム推定長を推定情報テーブルから求め、該求めたアーム推定長に基づきロボットアーム２，３を制御する。
【００３７】
軌道記憶部８２には、ロボットアーム２，３の目標軌道（つまり、ロボットアーム２，３の先端の目標位置）が記憶されている。本実施形態にかかるロボット装置１００では、実作業を実施するための目標軌道や、アーム長を測定するための目標軌道などが記憶されている。
【００３８】
順運動学演算部１０４は、ロボットアーム２，３の先端の推定位置を順運動学の計算を用いて算出する。実作業の実行時には、アーム推定長演算部１０３によって推定されたアーム長（アーム推定長）からロボットアーム２，３の先端の推定位置を算出する。そして、軌道記憶部８２から読み込んだ目標位置と推定位置との差分である位置のずれ量を算出する。逆運動学演算部１０５は、このずれ量に基づいてモータ制御部６７に出力する駆動指令を算出する。具体的には、逆運動学演算部１０５は、ロボットアーム２，３の先端の位置のずれ量から逆運動学の計算を用いて各関節Ｘ１，Ｘ２及び旋回台４の回転角度の補正量を算出し、補正量を加味した制御量となる駆動指令を算出する。
【００３９】
次に、本発明の実施形態に係るロボット装置１００のＣＰＵ６１により実行されるロボット制御処理について、図６を用いて説明する。図６は、ロボット制御処理を示すフローチャートである。
【００４０】
まず、推定情報取得部１０１は、作業工程及び周囲温度に基づき該当する推定情報テーブルを推定情報記憶部８１から取得する（Ｓ１、情報取得手順）。上述したように、推定情報記憶部８１には、所定の作業工程及び所定の周囲温度に対応付けられた複数の推定情報テーブルが記憶されている。そこで、推定情報取得部１０１は、入力装置６４から入力された作業工程及び温度センサ３５から入力された周囲温度に対応する、いずれか１つの推定情報テーブルを推定情報記憶部８１から取得する。なお、入力された周囲温度に対応する推定情報テーブルが記憶されていなければ、入力された周囲温度に最も近似する所定の周囲温度に対応付けられた推定情報テーブルを取得すればよい。
【００４１】
次に、ＣＰＵ６１は、タイマ６８による時間の計測を開始する（Ｓ２）。アーム長測定制御部１０２は、１回目のアーム現在長の測定を行う（Ｓ３、現在長測定手順）。すなわち、ロボットアーム２，３の先端を測長器１０のスライダ１１に対し押し当てて、これに応じ圧力センサ２０から出力される圧力検出信号に基づいて、該測定時（第一計測時間）におけるアーム現在長（１回目）を求める。一方、アーム推定長演算部１０３は、第一計測時間におけるアーム推定長（１回目）を求める（Ｓ４）。すなわち、取得済みの推定情報テーブルを用いて、１回目のアーム現在長を測定した第一計測時間に従ってアーム推定長を求める。ここで求めた１回目のアーム現在長及び１回目のアーム推定長は、ＲＡＭ３等に一時記憶される。なお、初期状態のときにロボット制御処理を実行した場合には、第一計測時間のアーム現在長は初期状態であるときのアーム長であるので、上記Ｓ３の処理を省略して準備時間をより短縮させるようにしてよい。
【００４２】
ＣＰＵ６１は、所定時間が経過するまで待機する（Ｓ６）。この間、アーム長測定制御部１０２は実作業を伴わない空運転を実行する（Ｓ５）。空運転の開始から所定時間（例えば５〜１０分）が経過すると（Ｓ６のＹＥＳ）、アーム長測定制御部１０２は空運転を停止して２回目のアーム現在長の測定を行う（Ｓ７、現在長測定手順）。すなわち、ロボットアーム２，３の先端を測長器１０のスライダ１１に再度押し当てて、これに応じて圧力センサ２０から出力される圧力検出信号に基づいて、該測定時（第二計測時間）におけるアーム現在長（２回目）を求める。一方、アーム推定長演算部１０３は、取得済みの推定情報テーブルを用いて、第二計測時間におけるアーム推定長（２回目）を求める（Ｓ８）。ここで求めた２回目のアーム現在長及び２回目のアーム推定長は、ＲＡＭ３等に一時記憶される。
【００４３】
アーム推定長演算部１０３は、１回目と２回目のアーム現在長に基づくアーム長の実変化長さと、１回目と２回目のアーム推定長に基づくアーム長の推定変化長さとを比較する（Ｓ９）。アーム長の実変化長さとアーム長の推定変化長さの差分（絶対値）が所定範囲内でないと判定した場合（Ｓ９のＮＯ）、Ｓ３の処理に戻る。この場合、取得済みの推定情報テーブルは、実際の熱膨張変化を反映したデータであるか否かが確かでないので、上記Ｓ３〜Ｓ９の処理を繰り返す。一方、アーム長の実変化長さとアーム長の推定変化長さの差分が所定範囲内であると判定した場合（Ｓ９のＹＥＳ）、アーム推定長演算部１０３は実作業を開始する（Ｓ１０）。この場合、取得済みの推定情報テーブルは実際の熱膨張変化を反映したデータであるとして、作業工程に従う実作業のためのロボットアーム２，３の制御に用いられる。上記Ｓ３〜Ｓ１０のようにして、取得済みの推定情報テーブルが実際の熱膨張変化を反映したデータであるか否かを判定して、実際の熱膨張変化を反映したデータであるならば、実作業を開始する（開始手順）。
【００４４】
実作業が開始されると、ロボットアーム２，３は、以下に示すＳ１１及びＳ１２のアーム制御手順に従って、入力された作業工程（Ｓ１参照）に従うワークの組み立て等の実作業を行うよう制御される。すなわち、アーム推定長演算部１０３は、取得済みの推定情報テーブルに基づいて、タイマ６８により計測された時間に対応するアーム推定長を求める（Ｓ１１）。アーム推定長演算部１０３は、求めたアーム推定長を順運動学演算部１０４に送る。順運動学演算部１０４は、順運動学の計算により、アーム推定長演算部１０３から送られたアーム推定長を用いて、ロボットアーム２，３の先端の推定位置を算出する。そして、順運動学演算部１０４は、軌道記憶部８２からロボットアーム２，３の先端の目標位置を読み込み、読み込んだ目標位置に対する推定位置のずれ量を算出する（Ｓ１２）。順運動学演算部１０４は、算出したずれ量のデータを逆運動学演算部１０５に送る。
【００４５】
逆運動学演算部１０５は、ロボットアーム２，３の先端の位置のずれ量から逆運動学の計算により、関節Ｘ１，Ｘ２及び旋回台４の回転角度の補正量を算出し（Ｓ１３）、補正量を加味した制御量となる駆動指令を算出する（Ｓ１４）。つまり、逆運動学演算部１０５は、これらステップＳ１３，Ｓ１４の処理により、先端のずれ量に基づいて駆動指令を算出する。逆運動学演算部１０５（つまり、ＣＰＵ６１）は、モータ制御部６７に算出した駆動指令を出力する。モータ制御部６７は、駆動指令の入力を受けて各モータ９１〜９３に電流を供給し、各モータ９１〜９３は、駆動指令に応じた制御量で各関節を駆動する。これにより、ワークの組み立てなどの実作業が実際に行われる。なお、アーム長の測定時と異なり、実作業時はロボットアーム２，３が屈曲した状態であることが多い。そこで、ロボットアーム２，３の旋回台４の中心から架台１の中心までの直線距離と、ロボットアーム２，３のアーム推定長との比を補正係数として、目標位置に対するずれ量の補正をさらに行うと、より高い精度でロボットアーム２，３を制御し得る。
【００４６】
ＣＰＵ６１は、実作業中にエラーが生じたか否かを判定する（Ｓ１５）。エラーは、供給するワークが不足した場合や、ロボットアーム２，３自体に何らかのトラブルが生じた場合などに、エラー信号としてＣＰＵ６１に送信される。ＣＰＵ６１は実作業中にエラーが生じていないと判定した場合（Ｓ１５のＮＯ）、Ｓ１６の処理に進む。ＣＰＵ６１は、ロボットアーム２、３の組立作業が順調に進み作業工程に規定された作業量が所定量に達したか否かを判定する（Ｓ１６）。作業量が所定量に達していないと判定した場合（Ｓ１６のＮＯ）、Ｓ１１の処理に戻って上記Ｓ１１〜Ｓ１６の処理を繰り返す。一方、作業量が所定量に達していると判定した場合（Ｓ１６のＹＥＳ）、本ロボット制御処理を終了して実作業を終了する。
【００４７】
他方、ＣＰＵ６１は実作業中にエラーが生じたと判定した場合（Ｓ１５のＹＥＳ）、ロボットアーム２，３を停止して実作業を中断する（Ｓ１７）。この際には、タイマ６８による時間の計測を停止し、計測時間をクリアする。そして、ＣＰＵ６１は再始動信号（再開指示）を受信するまで待機する（Ｓ１８）。ＣＰＵ６１は再始動信号を受信したら（Ｓ１８のＹＥＳ）、Ｓ２の処理に戻る。すなわち、エラーにより実作業が中断された場合、ユーザはエラーを生じさせた原因を除いた後に、入力装置６４から実作業の再開を指示する。ユーザにより実作業の再開が指示された場合、入力装置６４はＣＰＵ６１へ再始動信号を送るので、ＣＰＵ６１は入力装置６４から送られる再始動信号に従って本ロボット制御処理の実行を再開する。
【００４８】
ロボット制御処理について具体例を用いて説明する。図７は、ロボット制御処理を具体的に説明するための説明図である。図７において、横軸は時間を表し、縦軸はアーム推定長及びアーム現在長を表す。アーム推定長の時間変化ｆ１（ｔ）を実線で示しかつ時間毎のアーム推定長（Ｌ１、Ｌ２等）を塗りつぶした三角で示した。また、アーム現在長の時間変化を二点鎖線で示しかつ時間毎のアーム現在長（Ｍ１、Ｍ２等）を塗りつぶした四角で示した。この図７には、時刻ｔ５で実作業を中断して時刻ｔ８で実作業を再開した場合の、時刻ｔ４〜ｔ８間におけるアーム現在長の時間変化ｆ４（ｔ）も示している。なお、この例では、推定情報テーブルにおいて最初の経過時刻（ｔ１）を熱膨張変化の生じ始めた時間とし、最初のアーム推定長（Ｌ１）を初期状態であるときのアーム長としている。
【００４９】
まず、モータ９１〜９３等が発熱しておらず熱膨張変化の生じていない初期状態である場合（初動時）について説明する。この場合、時刻ｔ１では、１回目のアーム現在長（Ｍ１）を測定し、１回目のアーム推定長（Ｌ１）を求める。初動時においては、１回目のアーム現在長（Ｍ１）と１回目のアーム推定長（Ｌ１）は同じ長さである。時刻ｔ２では、２回目のアーム現在長（Ｍ２）を測定し、２回目のアーム推定長（Ｌ２）を求める。この２回目のアーム現在長（Ｍ２）は、時刻ｔ１〜時刻ｔ２間でなされる空運転によって熱膨張変化の生じた状態であるので、必ずしも２回目のアーム推定長（Ｌ２）と同じであるとは限らない。そこで、１回目と２回目のアーム現在長に基づく実変化長さ（Ｍ２−Ｍ１）と、１回目と２回目のアーム推定長に基づく推定変化長さ（Ｌ２−Ｌ１）とを比較する。これら実変化長さ（Ｍ２−Ｍ１）と推定変化長さ（Ｌ２−Ｌ１）が略同一であれば、取得済みの推定情報テーブルは、アーム制御に用いるのに最適なデータ、つまりは実際のアーム長の熱膨張変化を反映したデータであると判定される。
【００５０】
しかし、時刻ｔ１〜時刻ｔ２間における実変化長さ（Ｍ２−Ｍ１）と推定変化長さ（Ｌ２−Ｌ１）とが略同一でない。その場合には、再度、時刻ｔ２と時刻ｔ３の２回に分けてアーム現在長（Ｍ２、Ｍ３）を測定し、またアーム推定長（Ｌ２、Ｌ３）を求める。そして、時刻ｔ２〜時刻ｔ３間の実変化長さ（Ｍ３−Ｍ２）と推定変化長さ（Ｌ３−Ｌ２）とを比較する。ここでは、時刻ｔ２〜時刻ｔ３間における実変化長さ（Ｍ３−Ｍ２）と推定変化長さ（Ｌ３−Ｌ２）とが略同一でないので、引き続き時刻ｔ３〜時刻ｔ４間でも上記の処理を繰り返す。
【００５１】
時刻ｔ６〜時刻ｔ７間において、実変化長さ（Ｍ７−Ｍ６）と推定変化長さ（Ｌ７−Ｌ６）とが略同一になっている。それ故、時刻ｔ７時点で、取得済みの推定情報テーブルが実際のアーム長の熱膨張変化を反映したデータであると判定されて、実作業が開始される。時刻ｔ７以降、取得済みの推定情報テーブルのアーム推定長（ＬＸ・・・）に従ってロボットアーム２，３が制御される。
【００５２】
引き続き、モータ９１〜９３等が発熱しており既に熱膨張変化の生じている状態である場合（再始動時）について説明する。この場合、再始動時の時刻ｔ８に、１回目のアーム現在長（Ｍ８）を測定すると共に、アーム推定長（Ｌ２）を求める。ただし、再始動時の１回目のアーム推定長は、推定情報テーブルに基づき前記測定した１回目のアーム現在長（Ｍ８）に最も近い値のアーム推定長（Ｌ２）が求められる。そして、この場合には、再始動時（時刻ｔ８）において既に熱膨張変化が生じていることから、タイマ６８による計時開始時（図６のＳ２参照）に、計時時間の調整を行う必要がある。具体的には、初期状態から再始動時（時刻ｔ８）のときのアーム推定長までアーム長が変化するのにかかる時間（図中Δｔ参照）を加算する調整を行う。この例では、加算する時間（Δｔ）は時刻ｔ１から時刻ｔ２までの時間である。
【００５３】
時刻ｔ１１〜時刻ｔ１２間において、実変化長さ（Ｍ１２−Ｍ１１）と推定変化長さ（Ｌ６−Ｌ５）とが略同一になっている。それ故、時刻ｔ１２時点で、取得済みの推定情報テーブルが実際のアーム長の熱膨張変化を反映したデータであると判定されて、実作業が開始される。時刻ｔ１２以降、取得済みの推定情報テーブルのアーム推定長（Ｌ７、ＬＸ・・・）に従ってロボットアーム２，３が制御される。このようにすることで、実作業の中断後、熱膨張変化の生じていない初期状態に戻る前にロボットアーム２，３の駆動が再開されたとしても、推定情報テーブルに基づきロボットアーム２，３のアーム長を正しく推定することができる。
【００５４】
以上、本実施形態によれば、経過時間に応じて長さの変化するロボットアーム２，３のアーム長を推定し、推定したアーム長に従って目標位置に対するずれ量を補正し、ロボットアーム２，３の先端が前記目標位置となるようにロボットアーム２，３を制御する。こうすることにより、実作業を行う前にアーム長が最大長になるまで予めロボットアームを熱膨張変化させておく必要がない。つまり、暖気運転を行わなくてすむので、実作業を開始するまでの準備時間を短縮でき、また暖機運転に費やしていたエネルギーを節約することができる。
【００５５】
また、実作業を中断せずとも実作業を行ったまま、推定したアーム長に従ってロボットアーム２，３の制御を行うことから、効率的に実作業を実施して実作業時間を短縮することができる。
【００５６】
ロボットアーム２，３のアーム長の推定は、推定情報テーブルのアーム推定長に基づき行われる。アーム推定長は、実際にロボットアーム２，３を駆動して得られた実測値を記憶したものであり、実際のロボットアーム２，３の熱膨張変化を正確に反映している。それ故に、推定情報テーブルを用いることで、ロボットアーム２，３の先端の位置ずれの補正を精度良く行うことができ、ロボットアーム２，３の先端を目標位置に正確に位置決めすることができる。つまり、高い精度でロボットアーム２，３を制御することができる。
【００５７】
さらに、アーム長を実測するのに、ロボットアーム２，３内に設けられた圧力センサ２０を用いることで、上述した簡易な構成の測長器１０を架台１上に設けるだけでよいのでコストがかからない。
【００５８】
なお、本発明は、以上説明した実施形態に限定されるものではなく、多くの変形が本発明の技術的思想内で当分野において通常の知識を有する者により可能である。
【００５９】
上述した実施形態では、ロボットアーム２、３のアーム長を測定するために、ロボットアーム２，３内の圧力センサ２０を利用する例を示したがこれに限らない。例えば、壁部１３の中に圧力センサを別途設けておき、この圧力センサにスライダ１１が摺動されたときに壁部１３にかかる力を検出させて、このときに出力される検出値に基づきアーム長を求めるようにしてもよい。あるいは、測長器１０のスライダ１１の移動量を計測するリニアエンコーダをベース部１４に設けておき、このリニアエンコーダにベース部１４を摺動されるスライダ１１の移動量を検出させるようにしてもよい。この場合、リニアエンコーダから出力される検出値に基づき、アーム長を求めることは言うまでもない。
【００６０】
なお、ロボットアーム２，３を測長器１０へ動かしてアーム長を測定するものに限らず、ロボットアーム２，３を動かすことなくアーム長を測定できるようにしてもよい。例えば、ロボット装置１００全体を俯瞰できる位置にカメラ等を設けておき、該カメラで撮った画像を解析してアーム長を測定できるようにしてもよい。
【００６１】
なお、上述した実施形態では、２０℃、１５℃、２５度の各周囲温度に対応付けた推定情報テーブルを記憶したものを示したが（図５（ｂ）参照）、これに限らず、推定情報テーブルを所定の周囲温度（例えば２０℃）のみに対応付けてもよい。ただし、この場合、推定情報テーブルの生成時に周囲温度が２０℃でない場合に関して、２０℃の時と比較したアーム長の変化量を別途記憶しておく。そして、周囲温度（例えば２０℃）に対応付けられた推定情報テーブルから求められるアーム推定長を、前記記憶したアーム長の変化量に従って補正することで、他の周囲温度（例えば２５℃）のときのアーム推定長を求めることのできるようにしてもよい。
【００６２】
なお、アーム推定長は推定情報テーブル（図５（ａ）参照）から求めることに限らず、予め用意された演算式から求めるようにしてもよい。初期状態のときのロボットアーム全長を「Ｌ」、ロボットアーム全体の線膨張係数を「α」とすると、例えば以下に示す式１によってアーム推定長を求めることができる。
Ｌ（ｔ）＝Ｌ＋Ｌ×α（ｔ−２０）  ・・・（式１）
【００６３】
ただし、式１は、ロボットアームの駆動開始から２０分後に熱膨張変化が始まるロボットアームのアーム推定長を表す。式１の「ｔ」は、経過時間である。なお、実際のロボットアームはモータの他にも減速機等がフレーム内で複雑に組み合わされている構造であることから、各フレームの熱分布が複雑である。そこで、アーム推定長を求める演算式は、予め実験で求めておいた数値から割り出して数式化するとよい。
【００６４】
なお、上述した実施形態では、時間間隔を空けて２回に分けて測定したアーム現在長と、推定情報テーブルから求めたアーム推定長とに基づいて、実変化長さと推定変化長さを求める例を示したが、これに限られない。例えば、実変化長さと推定変化長さとは、時間間隔を空けて３回以上に分けて得たうちのいずれか２回のアーム現在長とアーム推定長とに基づいて求めてもよい。
【００６５】
上述した実施形態では、ロボットアーム２，３が、垂直多関節ロボットである場合について説明したが、水平多関節ロボット、パラレルリンクロボットなどであってもよい。
【００６６】
また、上述した実施形態では、アクチュエータが電動モータである場合について説明したが、アクチュエータはこれに限定するものではない。例えば関節が直動関節の場合には、アクチュエータとして、電動モータの代わりに電動リニアアクチュエータを用いることも可能であり、この場合でも本発明は適用可能である。特に、アクチュエータとして、電動リニアアクチュエータを用いた場合には、通電による発熱量が多くなるため、本発明により効果的にロボットアームの先端を目標位置に位置決めすることができる。
【００６７】
また、上述した実施形態では、ロボットアームの関節数が三つの場合について説明したが、これに限定するものではなく、ロボットアームの関節数は１つ以上あればよい。
【符号の説明】
【００６８】
１…架台、２，３…ロボットアーム、４…旋回台、５〜７…フレーム、１０…測長器、
１２…ばね、２０…圧力センサ、３５…温度センサ、６１…ＣＰＵ、６４…入力装置、
６６…記憶装置、６７…モータ制御部、６８…タイマ、
９１〜９３…モータ（アクチュエータ）、１００…ロボット装置、
１０１…推定情報取得部、１０２…アーム長測定制御部、１０３…アーム推定長演算部
【図１】
2015150676.tif 000003
【図２】
2015150676.tif 000004
【図３】
2015150676.tif 000005
【図４】
2015150676.tif 000006
【図５】
2015150676.tif 000007
【図６】
2015150676.tif 000008
【図７】
2015150676.tif 000009