以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
図1に示すように、ロボット装置1は、多関節ロボットであるロボット本体2と、ロボット本体2の動作を制御するコントローラ3とを備えている。
ロボット本体2は、6軸の多関節アーム(以下、アームと呼ぶ)21と、エンドエフェクタであるハンド22とを有している。本実施の形態では、アーム21として6軸の多関節アームを適用しているが、軸を複数有していれば軸数は用途や目的に応じて適宜変更してもよい。また、本実施の形態では、エンドエフェクタとしてハンド22を適用しているが、これには限られず、ワークWを移動させたり、あるいはワークWに対して作業等を施すことが可能なツールの全般を含めることができる。
アーム21は、7つのリンク61〜67と、各リンク61〜67を揺動又は回動可能に連結する6つの関節71〜76とを備えている。各リンク61〜67としては、長さが固定されたものを採用している。但し、例えば、直動アクチュエータにより伸縮可能なリンクを採用してもよい。
図2に示すように、各関節71〜76には、各関節71〜76を各々駆動するモータ(アクチュエータ)71a〜76aと、モータ71a〜76aに供給する電力を制御するドライバ71b〜76bとが設けられている。また、各関節71〜76には、モータ71a〜76aの回転角度を検知するエンコーダ71c〜76cと、各モータ71a〜76aに供給する電流を検知する電流センサ71d〜76dとが設けられている。更に、各関節71〜76には、各関節71〜76のトルクを検知するトルクセンサ71e〜76eが設けられている。尚、本実施の形態では、関節は回転関節としているが、これには限られず直動関節としてもよい。
各ドライバ71b〜76bは、コントローラ3の後述する電源本体4に対して電源ケーブル4aにより接続され、電力供給を受けるようになっている。また、各ドライバ71b〜76bは、各モータ71a〜76aに接続され、電源本体4の電力を調整して駆動用電力として各モータ71a〜76aに供給するようになっている。各ドライバ71b〜76b、エンコーダ71c〜76c、電流センサ71d〜76d、トルクセンサ71e〜76eは、いずれもコントローラ3の後述するロボット制御装置30に接続されている。
図1に示すように、ハンド22は、アーム21の先端リンク67に取り付けられて支持され、アーム21の動作により位置及び姿勢の少なくとも一自由度が調整されるようになっている。ハンド22は、2本の指23と、これら指23の間隔を開閉可能に支持するハンド本体24とを備え、指23同士が接近する閉動作によりワークWを把持可能になっている。ハンド本体24には、指23を動作させるためのモータと、該モータの回転角度を検知するエンコーダと、先端リンク67に連結される連結部とが設けられている。
図2に示すように、コントローラ3は、ロボット制御装置(制御装置)30と、電源本体4とを備えている。電源本体4と電源ケーブル4aとにより、電力供給部が構成されている。
ロボット制御装置30は、コンピュータにより構成され、ロボット本体2を制御するようになっている。ロボット制御装置30を構成するコンピュータは、例えばCPU31と、データを一時的に記憶するRAM32と、各部を制御するためのプログラムを記憶するROM33と、入出力インタフェース回路(I/F)34とを備えている。
ロボット制御装置30は、ドライバ71b〜76bを制御することにより、モータ71a〜76aの動作に要求される要求電力を電源本体4及び電源ケーブル4aからモータ71a〜76aに供給させて多関節アーム21の位置姿勢を移動させる。
ロボット制御装置30は、多関節アーム21の移動開始前に、多関節アーム21の位置姿勢の移動における移動速度及び軌道の少なくとも一方を、全てのモータ71a〜76aの合計の要求ピーク電力が電源本体4の許容電力以下になるように設定する。ここでの要求ピーク電力とは、各モータ71a〜76aで要求される瞬間的な電力を合計したものとしている。また、ロボット制御装置30は、設定された移動速度及び軌道の少なくとも一方を、多関節アーム21の移動時間が所定時間より短くなるように設定するようになっている。
また、ロボット制御装置30には、ティーチングペンダント6が接続可能になっている。ティーチングペンダント6は、ユーザが操作することにより、ロボット本体2の例えば指23の位置姿勢に関して、所定の教示点を入力して設定可能になっている。
次に、本実施の形態のロボット装置1によって、軌道設定工程及び判断工程を実行する手順について、図3に示すフローチャートに沿って説明する。本実施の形態では、ロボット制御装置30は、各教示点の通過時間を設定し、その設定後に各教示点の位置姿勢の修正量を設定するものとする。
図3に示すように、ロボット制御装置30は、設定された複数の教示点のうち、動作開始点(第1の位置姿勢)P1と動作終了点(第2の位置姿勢)P2を選択し、軌道とそれらの間の教示点の通過時間tとを設定する(ステップS1、軌道設定工程)。例えば、図5(a)に示すように、動作開始点P1と動作終了点P2を選択する。図5(a)では、動作開始点P1と動作終了点P2との間に1つの教示点(補間点)P3を設けて、動作開始点P1から教示点P3を通って動作終了点P2に行く実線で示す軌道と通過時間とを決定する。尚、図5(a)では、動作開始点P1と動作終了点P2との間の教示点の数は1つであるが、教示点が無くても、教示点が複数であっても良い。また、ここでのロボット本体2の移動速度を第1の速度とする。
そして、ロボット制御装置30は、設定された通過時間tに対し、各教示点の関節71〜76について、位置θ(t)、速度ω(t)、加速度α(t)、トルクτ(t)を算出する(ステップS2)。θ(t),ω(t),α(t)の値は、それぞれ全関節71〜76の値を縦に並べたベクトルである。尚、トルクτ(t)については、多関節アーム21の運動方程式に関節71〜76の位置θ(t)、速度ω(t)、加速度α(t)を代入することで算出できる。
ロボット制御装置30は、求められた位置θ(t)、速度ω(t)、加速度α(t)、トルクτ(t)から、モータ回転数とモータトルクを求め、モータ回転数とトルクの積算によりモータ出力を求める。また、モータ出力にモータ損失を加算してドライバ出力を求める。尚、モータ出力をモータ効率で除算したり、モータ出力に鉄損や銅損を加算した後にドライバ損失を加算して求めることで、より精密にドライバ出力が求められる。ドライバ出力にドライバ損失を加算し電源出力を求める。更に、電源ケーブル4aより先に接続されているドライバ71b〜76bの出力を合算し、電源電圧で除算することでケーブル電流を求める(ステップS3)。
そして、ロボット制御装置30は、算出された電源出力が、電源本体4の許容電力である最大出力電力(許容値)以下であるか否かを判断する(ステップS4)。ロボット制御装置30が、算出された電源出力が電源本体4の最大出力電力以下であると判断した場合は、算出されたケーブル電流が、電源ケーブル4aの許容電力である最大定格電流(許容値)以下であるか否かを判断する(ステップS5)。尚、これらステップS4及びステップS5が、判断工程を構成する。ロボット制御装置30が、ケーブル電流が電源ケーブル4aの最大定格電流以下であると判断した場合は、ステップS1で設定した各教示点の通過時間をそのまま採用し、それに基づいてロボット本体2の位置姿勢指令値を設定する(ステップS6)。
従って、ロボット制御装置30は、全てのモータ71a〜76aの合計の要求ピーク電力を電源本体4の許容電力以下にすると共に、合計の要求ピーク電力に基づくケーブル電流を電源ケーブル4aの最大定格電流以下にする。これにより、電力供給部の過負荷を検知して、抑制するよう対処することができる。
一方、ロボット制御装置30が、算出された電源出力が電源本体4の最大出力電力以下ではないと判断するか、あるいは算出されたケーブル電流が電源ケーブル4aの最大定格電流以下ではないと判断した場合は、軌道を再設定する(ステップS7)。尚、このステップS7が、軌道再設定工程を構成する。
次に、本実施の形態のロボット装置1によって、軌道再設定工程を実行する手順について、図4に示すフローチャートに沿って説明する。図4に示すように、ロボット制御装置30は、設定された複数の教示点の修正量ΔXを設定する(ステップS11)。ここで、修正量ΔX並びに教示点及び軌道の関係を、図5(b)を用いて説明する。修正量ΔXは最大で3方向及び3姿勢からなるベクトルであり、ロボット本体2が他の物体あるいはロボット本体2自身に干渉しないように、予め4つの修正量ΔX1〜ΔX4の候補が設定されている。尚、この4つの修正量ΔX1〜ΔX4は、ユーザの入力による設定、あるいはロボット制御装置30による自動設定等、適宜設定することができる。また、本実施の形態では修正量ΔX1〜ΔX4を4つ設定しているが、4つに限られないのは勿論である。
前述した通り、修正前の軌道は、ロボット本体2の例えば指23が動作開始点P1から教示点P3を通って動作終了点P2に移動する際の軌道であった。これに対し、修正後の軌道は、例えば、ロボット本体2の例えば指23が動作開始点P1から教示点P31を通って動作終了点P2に移動する際の軌道を、1つの候補として設定する。この候補となる軌道では、教示点P3が教示点P31に変更され、軌道も直線状であったものが滑らかな曲線状に設定される。このとき、教示点P3と教示点P31との位置及び姿勢のベクトルの差が、修正量ΔX1となる。
同様に、例えば、ロボット本体2の例えば指23が動作開始点P1から教示点P32〜P34のそれぞれを通って動作終了点P2に移動する際の軌道を、それぞれ候補として設定する。これらの候補となる各軌道において、教示点P3と各教示点P32〜P34との位置及び姿勢のベクトルの差が、修正量ΔX2〜ΔX4となる。
そして、ロボット制御装置30は、設定された修正量ΔXに対し、各教示点の関節71〜76について、位置θ(t)、速度ω(t)、加速度α(t)、トルクτ(t)を算出する(ステップS12)。各値の算出方法は、ステップS2(図3参照)と同様である。
ロボット制御装置30は、求められた位置θ(t)、速度ω(t)、加速度α(t)、トルクτ(t)から、モータ出力、ドライバ出力、電源出力、ケーブル電流を求める(ステップS13)。各値の算出方法は、ステップS3(図3参照)と同様である。
そして、ロボット制御装置30は、再設定された軌道で算出された電源出力が、電源本体4の許容電力である最大出力電力(許容値)以下であるか否かを判断する(ステップS14)。これを4つの修正量ΔX1〜ΔX4の候補について判断する。ロボット制御装置30が、4つの修正量ΔX1〜ΔX4のうち1つでも算出された電源出力が電源本体4の最大出力電力以下であると判断した場合は、以下のように処理する。この場合は、ロボット制御装置30は、算出されたケーブル電流が、電源ケーブル4aの許容電力である最大定格電流(許容値)以下であるか否かを判断する(ステップS15)。
ロボット制御装置30は、修正量ΔX1〜ΔX4の全て(ここでは4つ)について、ステップS14,S15の判断が終了したか否かを判断する(ステップS16)。ロボット制御装置30は、全ての修正量ΔXについては判断が終了していないと判断した場合は、まだ判断していない修正量ΔXについて判断を実行する(ステップS14)。ロボット制御装置30は、全ての修正量ΔXについて判断が終了したと判断した場合は、ステップS14,S15の条件に該当する修正量ΔXは1つのみであるか否かを判断する(ステップS17)。ロボット制御装置30は、ステップS14,S15の条件に該当する修正量ΔXは1つのみであると判断した場合は、その修正量ΔXに基づいて教示点P3の位置姿勢を修正する(ステップS18)。
また、ロボット制御装置30は、ステップS14,S15の条件に該当する修正量ΔXは1つではないと判断した場合は、ステップS14,S15の条件に該当する修正量ΔXは2つ以上であるか否かを判断する(ステップS19)。ロボット制御装置30は、ステップS14,S15の条件に該当する修正量ΔXは2つ以上であると判断した場合は、その中から1つの修正量ΔXを選択する(ステップS20)。この場合、ロボット制御装置30は、予め定めた条件の修正量ΔXを採用する。予め定めた条件としては、例えば、電源出力が最も小さい値、又は最もケーブル電流が最も小さい値等を定めることができる。これにより、複数の修正量ΔXの中から、いずれか1つの修正量ΔXが選択される。
また、ロボット制御装置30は、ステップS14,S15の条件に該当する修正量ΔXは2つ以上ではないと判断した場合は、修正量ΔXを変更し(ステップS21)、変更後の修正量ΔXに基づいて再度判断を開始する(ステップS11)。以上のようにして、ロボット制御装置30は、軌道の再設定を実行することができる。
次に、本実施の形態のロボット装置1によって、速度設定工程を実行する手順について、図6に示すフローチャートに沿って説明する。本実施の形態のロボット装置1では、ロボット制御装置30は、再設定した軌道で、多関節アーム21を動作開始点P1から動作終了点P2まで移動させるための移動速度を変更することができる(ステップS27)。これは、上述した教示点P3の修正(ステップS18)により、電源出力やケーブル出力に余裕が生じている場合に、当初の移動速度(第1の移動速度)を高速化して第2の移動速度とし、作業時間の短縮化を図るためである。そのため、ロボット制御装置30は、通過時間tを、直前に設定されている通過時間よりも短くするように再設定する。
図6に示すように、ロボット制御装置30は、設定された複数の教示点のうち、動作開始点P1と動作終了点P2とを選択し、それらの間の教示点の通過時間tを設定する(ステップS21)。ロボット制御装置30は、ステップS2と同様の方法により、設定された通過時間tに対し、各教示点の関節71〜76について、位置θ(t)、速度ω(t)、加速度α(t)、トルクτ(t)を算出する(ステップS22)。ロボット制御装置30は、ステップS3と同様の方法により、求められた位置θ(t)、速度ω(t)、加速度α(t)、トルクτ(t)から、モータ出力、ドライバ出力、電源出力、ケーブル電流を求める(ステップS23)。
そして、ロボット制御装置30は、算出された電源出力が、最終的にステップS18で保存されていた電源出力の前回値以上かつ電源本体4の許容電力である最大出力電力(許容値)以下であるか否かを判断する(ステップS24)。ロボット制御装置30が、算出された電源出力が最終的にステップS18で保存されていた電源出力の前回値以上かつ電源本体4の最大出力電力以下であると判断した場合は、以下のように処理する。この場合、ロボット制御装置30は、算出されたケーブル電流が、最終的にステップS18で保存されていたケーブル電流の前回値以上かつ電源ケーブル4aの許容電力である最大定格電流(許容値)以下であるか否かを判断する(ステップS25)。ロボット制御装置30が、最終的にステップS18で保存されていたケーブル電流の前回値以上かつケーブル電流が電源ケーブル4aの最大定格電流以下であると判断した場合は、以下のように処理する。この場合、ロボット制御装置30は、ステップS21で設定した各教示点の通過時間tをそのまま採用し、それに基づいてロボット本体2の位置姿勢指令値を設定する(ステップS26)。
これにより、ロボット制御装置30は、全てのモータ71a〜76aの合計の要求ピーク電力を電源本体4の許容電力以下にすることができる。そして、ロボット制御装置30は、合計の要求ピーク電力に基づくケーブル電流を電源ケーブル4aの最大定格電流以下にしながらも、合計の要求ピーク電力を上げることにより、動作速度を第2の移動速度に速めた高速駆動可能な軌道を選択できる。即ち、ロボット制御装置30は、軌道設定工程では多関節アーム21の移動速度を第1の移動速度として軌道を設定し、速度設定工程では多関節アーム21の移動速度を第1の移動速度よりも早い第2の移動速度として軌道を設定する。
一方、ロボット制御装置30が、ステップS24,S25の条件を満たさないと判断した場合は、以下のように処理する。この場合、ロボット制御装置30は、ステップS1で設定した通過時間tを再設定する(ステップS27、速度設定工程)。そして、ロボット制御装置30は、再度、各教示点の通過時間tを設定する(ステップS21)。
上述したように本実施の形態のロボット装置1によれば、ロボット制御装置30は、多関節アーム21の移動開始前に、教示点を通る軌道で最大出力電力(許容値)以下であるか、並びに最大定格電流(許容値)以下であるかを判断する。ロボット制御装置30は、教示点を通る軌道で、最大出力電力以上又は最大定格電流以上であると判断した場合には、多関節アーム21の軌道を最大出力電力以下であり且つ最大定格電流以下である軌道に再設定する。このため、多関節アーム21の移動開始後に再設定する必要が生じて多関節アーム21を停止させることがないので、動作タクトに影響を及ぼすことを抑制できる。また、ロボット制御装置30は、全てのモータ71a〜76aの合計の要求ピーク電力が電力供給部の許容電力以下になるようにするので、多関節アームの電力供給部の過負荷を検知して抑制するよう対処することができる。
尚、上述した実施の形態では、ロボット制御装置30は、電源出力を判断し、その後にケーブル電流を判断する場合について説明したが(図3のステップS4,S5、図4のステップS14,S15)、これには限られない。これらの順序が逆であってもよく、あるいは、いずれか一方であってもよい。更には、例えばコネクタに印加する電圧について、許容値や前回値と比較して判断するようにしてもよい。
また、上述した実施の形態では、最初に教示点の通過時間tを設定し(図3)、設定後に教示点の修正量ΔXを設定(図4)し、最後に通過時間tを再設定(図6)する場合について説明したが、これには限られない。例えば、これらの順序を逆にしたり、あるいは同時に処理するようにしてもよい。
また、上述した実施の形態では、ロボット制御装置30は、速度設定工程により多関節アーム21の移動速度の高速化を図る場合について説明したが、これには限られない。例えば、速度設定工程は必ずしも無くてもよく、その場合は処理の簡素化を図ることができる。
本実施の形態の各処理動作は、具体的にはロボット制御装置30により実行される。従って、上述した機能を実現するソフトウェアのロボット制御プログラムを記録した記録媒体をロボット制御装置30に供給し、記録媒体に格納されたロボット制御プログラムをCPU31が読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施の形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
また、上述した例では、コンピュータ読み取り可能な記録媒体がROM33であり、ROM33にプログラムが格納される場合について説明したが、これに限定するものではない。プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、HDD、外部記憶装置、記録ディスク等を用いてもよい。