(57)【特許請求の範囲】
【請求項１】
多関節のロボットアーム、及び前記ロボットアームの先端に取り付けられたロボットハンドを有するロボットと、
前記ロボットの動作を制御して、前記ロボットハンドが把持した第１のワークを第２のワークに挿入する挿入作業を前記ロボットに行わせる制御部と、を備え、
前記ロボットアームは、関節を駆動する関節駆動部を有し、
前記関節駆動部は、回転モータと、前記回転モータの回転軸の回転を減速する減速機と、前記回転モータの回転軸及び前記減速機の入力軸のうちいずれか一方の軸の回転角度を検出する入力側角度検出部と、前記減速機の出力軸の回転角度を検出する出力側角度検出部と、を有し、
前記制御部は、関節の角度を前記出力側角度検出部の角度検出値に基づいてフィードバック制御する出力制御モードにて前記ロボットの動作を制御して、前記第１のワークを把持した前記ロボットハンドを前記挿入作業を開始する作業開始位置に位置合わせする処理と、
前記ロボットハンドが前記作業開始位置に到達したか否かを判断する処理と、
前記ロボットハンドが前記作業開始位置に到達したと判断した場合、関節の角度を前記入力側角度検出部の角度検出値に基づいてフィードバック制御する入力制御モードに切り替えて前記ロボットの動作を制御して、前記作業開始位置から前記挿入作業が完了する位置まで前記第１のワークを前記第２のワークに挿入する挿入方向に、前記第１のワークを把持した前記ロボットハンドを移動させる処理と、を実行することを特徴とするロボット装置。
【請求項２】
前記作業開始位置は、前記第１のワークと前記ロボットハンドの距離、前記第２のワークの精度、および、前記ロボットの精度に基づいて設定されていることを特徴とする請求項１に記載のロボット装置。
【請求項３】
前記制御部は、前記ロボットに前記挿入作業を行わせているときに、前記入力側角度検出部の角度検出値及び前記出力側角度検出部の角度検出値に基づき、関節のねじれ角度を算出し、該ねじれ角度が許容値を超えない場合に、前記挿入作業を継続することを特徴とする請求項１又は２に記載のロボット装置。
【請求項４】
前記制御部は、前記ねじれ角度が前記許容値を超えた場合は、前記挿入作業を停止することを特徴とする請求項３に記載のロボット装置。
【請求項５】
前記制御部は、前記ねじれ角度が前記許容値を超えた場合は、再度、前記作業開始位置に前記ロボットハンドを移動させて前記ロボットに前記挿入作業を行わせることを特徴とする請求項３に記載のロボット装置。
【請求項６】
前記ねじれ角度が前記許容値を超えた場合にユーザに報知する報知部を更に備えたことを特徴とする請求項３乃至５のいずれか１項に記載のロボット装置。
【請求項７】
前記制御部は、前記ロボットアームの各関節の前記出力側角度検出部により検出された角度検出値に基づき、前記ロボットハンドを前記作業開始位置から前記挿入方向に移動させた距離を演算し、演算した距離が所定の距離に達したか否かを判断し、演算した距離が所定の距離に達したと判断したときに、前記挿入作業を完了することを特徴とする請求項１乃至６のいずれか１項に記載のロボット装置。
【請求項８】
前記制御部は、前記ロボットハンドを前記作業開始位置から挿入方向に移動させた際に、前記入力側角度検出部の角度検出値及び前記出力側角度検出部の角度検出値に基づき、関節のねじれ角度を算出し、該ねじれ角度が所定値に達したときに、前記挿入作業を完了したと判断することを特徴とする請求項１乃至６のいずれか１項に記載のロボット装置。
【請求項９】
前記ロボットアームは、前記関節駆動部を、複数の関節それぞれに対応して複数有し、
前記挿入作業は、前記第２のワークの長穴に円柱形状の前記第１のワークを挿入する作業であり、
前記制御部は、前記作業開始位置に前記ロボットハンドを位置合わせする場合には、前記複数の関節駆動部のそれぞれに対して出力制御モードに設定し、
前記ロボットが前記挿入作業をする場合には、コンプライアンス性の必要度に応じて前記複数の関節駆動部のうち少なくとも１つの関節駆動部を選択し、選択した関節駆動部について、入力制御モードに設定することを特徴とする請求項１乃至８のいずれか１項に記載のロボット装置。
【請求項１０】
ユーザの操作により前記ロボットの動作を教示する教示部を備え、
前記制御部は、前記教示部の操作に従って前記ロボットに前記挿入作業を行わせる際に前記入力制御モードに設定し、前記出力側角度検出部により検出された角度検出値のデータを教示データとすることを特徴とする請求項１乃至９のいずれか１項に記載のロボット装置。
【請求項１１】
前記制御部は、関節ねじれ角度が小さくなるように制御し教示位置を探索することを特徴とする請求項１０に記載のロボット装置。
【請求項１２】
多関節のロボットアーム、及び前記ロボットアームの先端に取り付けられたロボットハンドを有するロボットと、
前記ロボットの動作を制御して、第１のワークが挿入された第２のワークから前記第１のワークを抜き取る抜き取り作業を前記ロボットに行わせる制御部と、を備え、
前記ロボットアームは、関節を駆動する関節駆動部を有し、
前記関節駆動部は、回転モータと、前記回転モータの回転軸の回転を減速する減速機と、前記回転モータの回転軸及び前記減速機の入力軸のうちいずれか一方の軸の回転角度を検出する入力側角度検出部と、前記減速機の出力軸の回転角度を検出する出力側角度検出部と、を有し、
前記制御部は、関節の角度を前記出力側角度検出部の角度検出値に基づいてフィードバック制御する出力制御モードにて前記ロボットの動作を制御して、前記ロボットハンドを前記抜き取り作業を開始する作業開始位置に位置合わせする処理と、
前記ロボットハンドが前記作業開始位置に到達したか否かを判断する処理と、
前記ロボットハンドが前記作業開始位置に到達したと判断した場合、関節の角度を前記入力側角度検出部の角度検出値に基づいてフィードバック制御する入力制御モードに切り替えて前記ロボットの動作を制御して、前記ロボットハンドに前記第１のワークを把持させ、前記作業開始位置から前記抜き取り作業が完了する位置まで前記第１のワークを前記第２のワークから抜き取る抜き取り方向に、前記第１のワークを把持した前記ロボットハンドを移動させる処理とを実行することを特徴とするロボット装置。
【請求項１３】
前記作業開始位置は、前記第１のワークと前記ロボットハンドの距離、前記第２のワークの精度、および、前記ロボットの精度に基づいて設定されていることを特徴とする請求項１２に記載のロボット装置。
【請求項１４】
前記制御部は、前記ロボットに前記抜き取り作業を行わせているときに、前記入力側角度検出部の角度検出値及び前記出力側角度検出部の角度検出値に基づき、関節のねじれ角度を算出し、該ねじれ角度が許容値を超えない場合に、前記抜き取り作業を継続することを特徴とする請求項１２又は１３に記載のロボット装置。
【請求項１５】
前記制御部は、前記ねじれ角度が前記許容値を超えた場合は、前記抜き取り作業を停止することを特徴とする請求項１４に記載のロボット装置。
【請求項１６】
前記制御部は、前記ねじれ角度が前記許容値を超えた場合は、再度、前記作業開始位置に前記ロボットハンドを移動させて前記ロボットに前記抜き取り作業を行わせることを特徴とする請求項１４に記載のロボット装置。
【請求項１７】
前記ねじれ角度が前記許容値を超えた場合にユーザに報知する報知部を更に備えたことを特徴とする請求項１４乃至１６のいずれか１項に記載のロボット装置。
【請求項１８】
前記制御部は、前記ロボットアームの各関節の前記出力側角度検出部により検出された角度検出値に基づき、前記ロボットハンドを前記作業開始位置から前記抜き取り方向に移動させた距離を演算し、演算した距離が所定の距離に達したか否かを判断し、演算した距離が所定の距離に達したと判断したときに、前記抜き取り作業を完了することを特徴とする請求項１２乃至１７のいずれか１項に記載のロボット装置。
【請求項１９】
前記ロボットとして、第１のロボットと第２のロボットとを備え、
前記制御部として、前記第１のロボットと前記第２のロボットとを制御する統合制御装置を備え、
前記統合制御装置は、前記第１のロボット及び前記第２のロボットに対して、それぞれ個別に前記出力制御モード又は前記入力制御モードに設定可能に構成され、
前記挿入作業を開始する作業開始位置の位置決めには、前記第１のロボット及び前記第２のロボットそれぞれについて前記出力制御モードに設定し、前記第１のロボットと前記第２のロボットが前記挿入作業をする場合には、前記第１のロボット又は前記第２のロボットの一方を前記入力制御モードに設定することを特徴とする請求項１乃至１１のいずれか１項に記載のロボット装置。
【請求項２０】
前記統合制御装置は、前記第１のロボット及び前記第２のロボットのコンプライアンス性を求めて、前記コンプライアンス性の高い方を前記入力制御モードに設定することを特徴とする請求項１９に記載のロボット装置。
【請求項２１】
前記統合制御装置は、前記コンプライアンス性として、前記第１のロボット及び前記第２のロボットの先端に所定の外力を作用させたと仮定したときの前記第１のロボット及び前記第２のロボットの先端の移動速度を推定することを特徴とする請求項２０に記載のロボット装置。
【請求項２２】
前記統合制御装置は、前記コンプライアンス性として、前記第１のロボット及び前記第２のロボットの先端に所定の外力を作用させたときの前記第１のロボット及び前記第２のロボットの先端の移動速度を、前記出力側角度検出部の検出結果から計測することを特徴とする請求項２０に記載のロボット装置。
【請求項２３】
前記統合制御装置は、前記第１のロボットに接続された第１の制御装置と、前記第２のロボットに接続された第２の制御装置とを有し、
前記第１の制御装置と前記第２の制御装置とは、通信可能に接続され、
前記第１の制御装置又は前記第２の制御装置が、前記第１のロボット及び前記第２のロボットの制御を行うことを特徴とする請求項１９乃至２２のいずれか１項に記載のロボット装置。
【請求項２４】
多関節のロボットアーム、及び前記ロボットアームの先端に取り付けられたロボットハンドを有するロボットの動作を制御部が制御して、前記ロボットハンドが把持した第１のワークを第２のワークに挿入する挿入作業を行わせるロボット制御方法であって、
前記ロボットアームは、関節を駆動する関節駆動部を有しており、
前記関節駆動部は、回転モータと、前記回転モータの回転軸の回転を減速する減速機と、前記回転モータの回転軸及び前記減速機の入力軸のうちいずれか一方の軸の回転角度を検出する入力側角度検出部と、前記減速機の出力軸の回転角度を検出する出力側角度検出部と、を有しており、
前記制御部が、関節の角度を前記出力側角度検出部の角度検出値に基づいてフィードバック制御する出力制御モードにて前記ロボットの動作を制御して、前記第１のワークを把持した前記ロボットハンドを前記挿入作業を開始する作業開始位置に位置合わせする出力制御工程と、
前記制御部が、前記ロボットハンドが前記作業開始位置に到達したか否かを判断する工程と、
前記制御部が、前記ロボットハンドが前記作業開始位置に到達したと判断した場合、関節の角度を前記入力側角度検出部の角度検出値に基づいてフィードバック制御する入力制御モードに切り替えて前記ロボットの動作を制御して、前記作業開始位置から前記挿入作業が完了する位置まで前記第１のワークを前記第２のワークに挿入する挿入方向に、前記第１のワークを把持した前記ロボットハンドを移動させる入力制御工程と、を備えたことを特徴とするロボット制御方法。
【請求項２５】
多関節のロボットアーム、及び前記ロボットアームの先端に取り付けられたロボットハンドを有するロボットの動作を制御部が制御して、第１のワークが挿入された第２のワークから前記第１のワークを抜き取る抜き取り作業を行わせるロボット制御方法であって、
前記ロボットアームは、関節を駆動する関節駆動部を有しており、
前記関節駆動部は、回転モータと、前記回転モータの回転軸の回転を減速する減速機と、前記回転モータの回転軸及び前記減速機の入力軸のうちいずれか一方の軸の回転角度を検出する入力側角度検出部と、前記減速機の出力軸の回転角度を検出する出力側角度検出部と、を有しており、
前記制御部が、関節の角度を前記出力側角度検出部の角度検出値に基づいてフィードバック制御する出力制御モードにて前記ロボットの動作を制御して、前記ロボットハンドを前記抜き取り作業を開始する作業開始位置に位置合わせする出力制御工程と、
前記制御部が、前記ロボットハンドが前記作業開始位置に到達したか否かを判断する工程と、
前記制御部が、前記ロボットハンドが前記作業開始位置に到達したと判断した場合、関節の角度を前記入力側角度検出部の角度検出値に基づいてフィードバック制御する入力制御モードに切り替えて前記ロボットの動作を制御して、前記ロボットハンドに前記第１のワークを把持させ、前記作業開始位置から前記抜き取り作業が完了する位置まで前記第１のワークを前記第２のワークから抜き取る抜き取り方向に、前記第１のワークを把持した前記ロボットハンドを移動させる入力制御工程と、を備えたことを特徴とするロボット制御方法。
【請求項２６】
コンピュータに請求項２４又は２５に記載のロボット制御方法の各工程を実行させるためのプログラム。
【請求項２７】
請求項２６に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットアームの関節の駆動を制御するロボット装置、ロボット制御方法、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
製品を製造する生産ラインにおいて、多関節のロボットアームと、ロボットアームの先端に設けられたエンドエフェクタとを有するロボットが用いられている。ロボットアームの関節機構は、ＡＣサーボモータやＤＣブラシレスサーボモータ等のサーボモータと、高出力のトルクを得るためにサーボモータの出力側に設けられた減速機とを有し、リンク等の構造部材に接続されて構成されている。そして、モータの回転軸に直結されたロータリーエンコーダ（以下、「エンコーダ」という）で角度を検出し、検出結果に基づいて、ロボットアームの先端（ロボットの手先）の位置制御を行っている。当該エンコーダでは、モータに接続した減速機のねじれやガタが検出されないため、ロボットアームの先端の位置誤差となる。また、ロボットアームの姿勢やワーク質量が変わることでもロボットアーム先端の位置誤差となる。また、駆動系にはタイミングベルトや波動歯車減速機がよく使用されるが、ねじれやガタが存在し、ロボットアーム先端の位置誤差の一因となっている。
【０００３】
一方、部品の挿入等の作業においては、駆動系の剛性が低いことやガタが存在することによって、多少の誤差が許容される。例えば、第１のワークをエンドエフェクタとしてのロボットハンドに把持させて、第１のワークを第２のワークに挿入する動作をロボットに行わせる場合がある。この場合、ロボットアームの先端に多少の位置ずれがあっても、ロボットアームの関節ねじれやガタにより、ロボットアームの先端位置が移動し、第１のワークを第２のワークに倣って挿入できる。即ち、ロボットアームにはコンプライアンス量が存在する。よって、モータの回転軸のエンコーダで制御する一般的なロボットアームでは、所定のコンプライアンス性が確保される。
【０００４】
上記のロボットアーム先端の位置誤差を小さくするために、減速機の出力軸にエンコーダを設けた構成が提案されている。また、減速機の入力軸と出力軸の双方にエンコーダを備えたロボットも提案されており、出力軸のエンコーダ情報を使用する高精度モードと、使用しない高速モードとを備える構成が提案されている（特許文献１参照）。
【０００５】
上記の部品の挿入作業においては、第１のワークを第１のロボットのロボットハンドに把持させて、第２のワークを第２のロボットのロボットハンドに把持させて、第１のワークを第２のワークに挿入する動作を行わせる場合がある（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−１７６９１３号公報
【特許文献２】特開２０１１−１１５８７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記のように減速機の出力軸にエンコーダを設けた構成のロボットアームでは、各関節の出力軸のエンコーダ値を各関節の指令値にフィードバックさせるフィードバック制御を行う。このため、ロボットアームにおいてコンプライアンス量が存在しない、又は極めて小さい状態となり、ロボットアームのコンプライアンス性が期待できない。従って、組付対象のワークと被組付対象のワークとの間に位置誤差があると、組立作業が困難となっていた。
【０００８】
そこで、本発明は、エンドエフェクタを作業開始位置に位置合わせする際には、ロボットアームの動作精度を高め、作業時にはロボットアームのコンプライアンス性を確保することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のロボット装置は、多関節のロボットアーム、及び前記ロボットアームの先端に取り付けられたロボットハンドを有するロボットと、前記ロボットの動作を制御して、前記ロボットハンドが把持した第１のワークを第２のワークに挿入する挿入作業を前記ロボットに行わせる制御部と、を備え、前記ロボットアームは、関節を駆動する関節駆動部を有し、前記関節駆動部は、回転モータと、前記回転モータの回転軸の回転を減速する減速機と、前記回転モータの回転軸及び前記減速機の入力軸のうちいずれか一方の軸の回転角度を検出する入力側角度検出部と、前記減速機の出力軸の回転角度を検出する出力側角度検出部と、を有し、前記制御部は、関節の角度を前記出力側角度検出部の角度検出値に基づいてフィードバック制御する出力制御モードにて前記ロボットの動作を制御して、前記第１のワークを把持した前記ロボットハンドを前記挿入作業を開始する作業開始位置に位置合わせする処理と、前記ロボットハンドが前記作業開始位置に到達したか否かを判断する処理と、前記ロボットハンドが前記作業開始位置に到達したと判断した場合、関節の角度を前記入力側角度検出部の角度検出値に基づいてフィードバック制御する入力制御モードに切り替えて前記ロボットの動作を制御して、前記作業開始位置から前記挿入作業が完了する位置まで前記第１のワークを前記第２のワークに挿入する挿入方向に、前記第１のワークを把持した前記ロボットハンドを移動させる処理と、を実行することを特徴とする。
また、本発明のロボット装置は、多関節のロボットアーム、及び前記ロボットアームの先端に取り付けられたロボットハンドを有するロボットと、前記ロボットの動作を制御して、第１のワークが挿入された第２のワークから前記第１のワークを抜き取る抜き取り作業を前記ロボットに行わせる制御部と、を備え、前記ロボットアームは、関節を駆動する関節駆動部を有し、前記関節駆動部は、回転モータと、前記回転モータの回転軸の回転を減速する減速機と、前記回転モータの回転軸及び前記減速機の入力軸のうちいずれか一方の軸の回転角度を検出する入力側角度検出部と、前記減速機の出力軸の回転角度を検出する出力側角度検出部と、を有し、前記制御部は、関節の角度を前記出力側角度検出部の角度検出値に基づいてフィードバック制御する出力制御モードにて前記ロボットの動作を制御して、前記ロボットハンドを前記抜き取り作業を開始する作業開始位置に位置合わせする処理と、前記ロボットハンドが前記作業開始位置に到達したか否かを判断する処理と、前記ロボットハンドが前記作業開始位置に到達したと判断した場合、関節の角度を前記入力側角度検出部の角度検出値に基づいてフィードバック制御する入力制御モードに切り替えて前記ロボットの動作を制御して、前記ロボットハンドに前記第１のワークを把持させ、前記作業開始位置から前記抜き取り作業が完了する位置まで前記第１のワークを前記第２のワークから抜き取る抜き取り方向に、前記第１のワークを把持した前記ロボットハンドを移動させる処理とを実行することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、エンドエフェクタを作業開始位置に位置合わせする際には、出力制御モードに設定されるので、ロボットアームの動作精度が高められ、エンドエフェクタを作業開始位置に高精度に位置合わせすることができる。また、作業時には、入力制御モードに設定されるので、ロボットアームのコンプライアンス性が確保され、ロボットの作業性が向上する。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態に係るロボット装置を示す斜視図である。
【図２】ロボットアームの関節を示す部分断面図である。
【図３】第１実施形態に係るロボット装置の制御装置の構成を示すブロック図である。
【図４】第１実施形態に係るロボット装置の要部構成を示した機能ブロック図である。
【図５】第１実施形態に係るロボット制御方法を示すフローチャートである。
【図６】第２のワークに第１のワークを挿入させる挿入作業前後を示す説明図である。
【図７】第２実施形態に係るロボット装置の要部構成を示した機能ブロック図である。
【図８】第２実施形態に係るロボット制御方法を示すフローチャートである。
【図９】第２のワークに第１のワークを挿入させる挿入作業前後を示す説明図である。
【図１０】第３実施形態に係るロボット制御方法を示すフローチャートである。
【図１１】第２のワークから第１のワークを抜き取る抜き取り作業前後を示す説明図である。
【図１２】第４実施形態に係るロボット制御方法を示すフローチャートである。
【図１３】第５実施形態に係るロボット制御方法を示すフローチャートである。
【図１４】第６実施形態に係るロボット装置のロボットによるワークの挿入作業を示す説明図である。
【図１５】第６実施形態に係るロボット装置の要部構成を示した機能ブロック図である。
【図１６】第６実施形態に係るロボット制御方法を示すフローチャートである。
【図１７】第７実施形態に係るロボット制御方法を示すフローチャートである。
【図１８】第８実施形態に係るロボット装置を示す斜視図である。
【図１９】第８実施形態に係るロボット装置の制御装置の構成を示すブロック図である。
【図２０】第８実施形態に係るロボット制御方法を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１３】
［第１実施形態］
（１）ロボット装置の構成の説明
図１は、本発明の第１実施形態に係るロボット装置を示す斜視図である。ロボット装置１００は、ロボット２００と、ロボット２００の動作を制御する制御部としての制御装置３００と、ユーザの操作によりロボット２００の動作を教示する教示部としてのティーチングペンダント４００と、を備えている。
【００１４】
ロボット２００は、多軸の垂直多関節型のロボットアーム２０１と、ロボットアーム２０１の先端に取り付けられた、エンドエフェクタとしてのロボットハンド２０２と、を有している。
【００１５】
ロボットアーム２０１は、作業台に固定されるベース部２１０と、変位や力を伝達する複数のリンク２１１〜２１６とが関節Ｊ１〜Ｊ６で屈曲又は回転可能に連結されている。第１実施形態では、ロボットアーム２０１は、屈曲する３軸と回転する３軸の６軸の関節Ｊ１〜Ｊ６で構成されている。ここで、屈曲とは２つのリンクの結合部のある点で折れ曲がること、回転とは２つのリンクの長手方向の回転軸でリンクが相対的に回ることをいい、それぞれを屈曲部、回転部と呼ぶ。ロボットアーム２０１は、６つの関節Ｊ１〜Ｊ６から構成され、関節Ｊ１，Ｊ４，Ｊ６が回転部、関節Ｊ２，Ｊ３，Ｊ５が屈曲部である。
【００１６】
ロボットハンド２０２は、第６のリンク（先端リンク）２１６に結合され、第１のワークであるワークＷ１の組付け作業を行うエンドエフェクタであり、複数のフィンガー２２０を有する。複数のフィンガー２２０を閉動作させることにより、ワークＷ１を把持することができ、複数のフィンガー２２０を開動作させることにより、ワークＷ１を把持解放することができる。ワークＷ２は第２のワークであり、本実施形態ではワークＷ２にワークＷ１を挿入する例を用いて説明する。
【００１７】
ロボットアーム２０１は、各関節Ｊ１〜Ｊ６に対して設けられ、各関節Ｊ１〜Ｊ６をそれぞれ駆動する複数（６つ）の関節駆動部２３０を有している。なお、図１では、関節駆動部２３０は、便宜上、関節Ｊ２にのみ図示し、他の関節Ｊ１，Ｊ３〜Ｊ６には図示を省略しているが、他の関節Ｊ１，Ｊ３〜Ｊ６にも、同様の構成の関節駆動部２３０が配置されている。なお、第１実施形態では、関節Ｊ１〜Ｊ６の全てが関節駆動部２３０で構成される場合について説明するが、関節Ｊ１〜Ｊ６のうち少なくとも１つが関節駆動部２３０で駆動されるよう構成されていればよい。
【００１８】
以下、関節Ｊ２における関節駆動部２３０を例に代表して説明し、他の関節Ｊ１，Ｊ３〜Ｊ６の関節駆動部２３０については、サイズや性能が異なる場合もあるが、同様の構成であるため、説明を省略する。
【００１９】
（２）関節Ｊ２における関節駆動部２３０の構成の説明
図２は、ロボットアーム２０１の関節Ｊ２を示す部分断面図である。関節駆動部２３０は、電磁モータである回転モータ（以下、「モータ」という）２３１と、モータ２３１の回転軸２３２の回転を減速する減速機２３３と、を有している。
【００２０】
また、関節駆動部２３０は、モータ２３１の回転軸２３２及び減速機２３３の入力軸のうちいずれか一方の軸、第１実施形態ではモータ２３１の回転軸２３２の回転角度を検出する入力側角度検出部である入力側エンコーダ２３５を有している。また、関節駆動部２３０は、減速機２３３の出力軸の回転角度を検出する出力側角度検出部である出力側エンコーダ２３６を有している。なお、図２では不図示であるが、関節駆動部２３０は、後述するモータ駆動装置を有している。
【００２１】
回転モータ２３１は、サーボモータであり、例えばブラシレスＤＣサーボモータやＡＣサーボモータである。
【００２２】
入力側エンコーダ２３５は、アブソリュート型のロータリーエンコーダが望ましく、１回転の絶対角度エンコーダ、絶対角度エンコーダの回転総数のカウンタ、及びカウンタに電力を供給するバックアップ電池を有して構成される。ロボットアーム２０１への電源の供給がオフになっても、このバックアップ電池が有効であれば、ロボットアーム２０１への電源供給のオン／オフに関係なく、カウンタにおいて回転総数が保持される。したがって、ロボットアーム２０１の姿勢が制御可能となる。なお、入力側エンコーダ２３５は、回転軸２３２に取り付けられているが、減速機２３３の入力軸に取り付けてもよい。
【００２３】
出力側エンコーダ２３６は、ベース部２１０とリンク２１１、或いは隣り合う２つのリンク間の相対角度を検出するロータリーエンコーダである。関節Ｊ２においては、出力側エンコーダ２３６は、リンク２１１とリンク２１２との間の相対角度を検出するロータリーエンコーダである。出力側エンコーダ２３６は、リンク２１１にエンコーダスケールを設け、リンク２１２に検出ヘッドを設けた構成、或いは逆の構成となる。
【００２４】
また、リンク２１１とリンク２１２とは、クロスローラベアリング２３７を介して回転自由に結合される。
【００２５】
モータ２３１は、モータカバー２３８で覆われて保護されている。モータ２３１とエンコーダ２３５との間には、不図示のブレーキユニットが設けられている。ブレーキユニットの主な機能は、電源オフ時のロボットアーム２０１の姿勢の保持である。
【００２６】
減速機２３３は、第１実施形態では、小型軽量で減速比の大きい波動歯車減速機である。減速機２３３は、モータ２３１の回転軸２３２に結合された、入力軸であるウェブジェネレータ２４１と、リンク２１２に固定された、出力軸であるサーキュラスプライン２４２と、を備えている。なお、サーキュラスプライン２４２は、リンク２１２に直結されているが、リンク２１２に一体に形成されていてもよい。
【００２７】
また、減速機２３３は、ウェブジェネレータ２４１とサーキュラスプライン２４２との間に配置され、リンク２１１に固定されたフレクスプライン２４３を備えている。フレクスプライン２４３は、ウェブジェネレータ２４１の回転に対して減速比Ｎで減速され、サーキュラスプライン２４２に対して相対的に回転する。従って、モータ２３１の回転軸２３２の回転は、減速機２３３で１／Ｎの減速比で減速されて、フレクスプライン２４３が固定されたリンク２１１に対してサーキュラスプライン２４２が固定されたリンク２１２を相対的に回転運動させ、関節Ｊ２を屈曲させる。
【００２８】
（３）制御装置３００の構成の説明
図３は、ロボット装置１００の制御装置３００の構成を示すブロック図である。制御装置３００は、制御部（演算部）としてのＣＰＵ（Central  Processing  Unit）３０１を備えている。また、制御装置３００は、記憶部として、ＲＯＭ（Read  Only  Memory）３０２、ＲＡＭ（Random  Access  Memory）３０３、ＨＤＤ（Hard  Disk  Drive）３０４を備えている。また、制御装置３００は、記録ディスクドライブ３０５及び各種のインタフェース３１１〜３１５を備えている。
【００２９】
ＣＰＵ３０１には、ＲＯＭ３０２、ＲＯＭ３０３、ＨＤＤ３０４、記録ディスクドライブ３０５及び各種のインタフェース３１１〜３１５が、バス３１６を介して接続されている。ＲＯＭ３０２には、ＢＩＯＳ等の基本プログラムが格納されている。ＲＡＭ３０３は、ＣＰＵ３０１の演算処理結果等、各種データを一時的に記憶する記憶装置である。
【００３０】
ＨＤＤ３０４は、ＣＰＵ３０１の演算処理結果や外部から取得した各種データ等を記憶する記憶装置であると共に、ＣＰＵ３０１に、後述する各種演算処理を実行させるためのプログラム３２０を記録するものである。ＣＰＵ３０１は、ＨＤＤ３０４に記録（格納）されたプログラム３２０に基づいてロボット制御方法の各工程を実行する。
【００３１】
記録ディスクドライブ３０５は、記録ディスク３２１に記録された各種データやプログラム等を読み出すことができる。
【００３２】
教示部であるティーチングペンダント４００は、インタフェース３１１に接続されている。ティーチングペンダント４００は、ユーザの入力操作により、ロボット２００を教示する教示点、即ち各関節Ｊ１〜Ｊ６の目標関節角度（角度指令値）を指定するものである。教示点のデータ（教示データ）は、インタフェース３１１及びバス３１６を通じてＣＰＵ３０１又はＨＤＤ３０４に出力される。ＣＰＵ３０１は、ティーチングペンダント４００又はＨＤＤ３０４から教示データの入力を受ける。
【００３３】
入力側エンコーダ２３５は、インタフェース３１２に接続され、出力側エンコーダ２３６は、インタフェース３１３に接続されている。エンコーダ２３５，２３６からは、検出した角度検出値を示すパルス信号が出力される。ＣＰＵ３０１は、インタフェース３１２，３１３及びバス３１６を介してエンコーダ２３５，２３６からのパルス信号の入力を受ける。
【００３４】
表示部である表示装置（モニタ）５００は、インタフェース３１４に接続されており、ＣＰＵ３０１の制御の下、画像を表示する。
【００３５】
インタフェース３１５には、モータ駆動装置２５１が接続されている。ＣＰＵ３０１は、教示データに基づき、モータ２３１の回転軸２３２の回転角度の制御量を示す駆動指令のデータを所定時間間隔でバス３１６及びインタフェース３１５を介してモータ駆動装置２５１に出力する。
【００３６】
モータ駆動装置２５１は、ＣＰＵ３０１から入力を受けた駆動指令に基づき、モータ２３１への電流の出力量を演算し、モータ２３１へ電流を供給して、関節Ｊ１〜Ｊ６の関節角度制御を行う。モータ駆動装置２５１は、関節Ｊ１〜Ｊ６それぞれに対応して設けられ、例えば、図２では省略しているが、各関節Ｊ１〜Ｊ６に配置されている。そして、モータ２３１は、モータ駆動装置２５１から電力供給を受けて駆動トルクを発生し、減速機２３３の入力軸であるウェブジェネレータ２４１にトルクを伝達する。減速機２３３において、出力軸であるサーキュラスプライン２４２は、ウェブジェネレータ２４１の回転に対して１／Ｎの回転数で回転する。これにより、リンク２１２がリンク２１１に対して相対的に回転する。即ち、ＣＰＵ３０１は、モータ駆動装置２５１を介して、関節Ｊ１〜Ｊ６の関節角度が目標関節角度となるように、モータ２３１による関節Ｊ１〜Ｊ６の駆動を制御する。
【００３７】
なお、バス３１６には、不図示のインタフェースを介して、書き換え可能な不揮発性メモリや外付けＨＤＤ等の不図示の外部記憶装置が接続されていてもよい。
【００３８】
（４）制御装置３００及び関節Ｊ２の機能の説明
図４は、第１実施形態に係るロボット装置の要部構成を示した機能ブロック図である。制御装置３００においては、プログラム３２０に基づくＣＰＵ３０１の機能をブロック化して図示し、ロボット２００においては、ロボットアーム２０１の関節Ｊ２をブロック化して図示している。制御装置３００は、メイン制御部３３０及び各関節に対応する関節制御部３４０の機能を有している。図４では、関節Ｊ２に対応する関節制御部３４０のみ図示しており、図示は省略しているが、他の関節Ｊ１，Ｊ３〜Ｊ６それぞれに対応する関節制御部３４０を複数有している。
【００３９】
メイン制御部３３０は、軌道計算部３３１、作業開始位置検出部３３２、制御切替指令部３３３からなる。各関節制御部３４０は、制御切替部３４１、入力軸制御部３４２、出力軸制御部３４３からなる。
【００４０】
まず、メイン制御部３３０の制御動作について説明する。軌道計算部３３１は、教示データに基づいて、ロボットアーム２０１の動作（軌道）を計算する。作業開始位置検出部３３２は、軌道計算部３３１よる計算結果を用いて、ロボットアーム２０１の先端に取り付けられたロボットハンド２０２が作業開始位置へ達したか否かを検出（判断）する。制御切替指令部３３３は、各関節、図４では関節Ｊ２の駆動を制御する関節制御部３４０の制御切替部３４１へ入力軸制御部３４２による入力軸制御、或いは、出力軸制御部３４３による出力軸制御を切替えるための制御切替指令信号を発生する。具体的には、制御切替指令部３３３は、作業開始位置検出部３３２にてロボットハンド２０２が作業開始位置に到達したと判断すれば、入力軸制御へ切り替える指令を、制御切替部３４１に出力する。作業開始位置は、第１のワークＷ１とフィンガー２２０が干渉しない位置に設定する。精度良い作業を行うために、作業開始位置を第１のワークＷ１になるべく近い位置に設定する必要がある。このため、ワークＷ１とフィンガー２２０（ロボットハンド）の距離を計算し、この距離にワークＷ２の位置精度、部品精度、フィンガーの位置精度を考慮する。第１のワークＷ１とフィンガー２２０が干渉しないで、且つ、ワークＷ１とフィンガー２２０の距離が最少になるように設定する。このように、ワークとロボットハンドの距離、ワークの精度、および、ロボットの精度から作業開始位置を求める。ロボットへの外乱影響等を考慮し、更にマージンを加えてもよい。また、制御切替指令部３３３は、作業開始位置検出部３３２にてロボットハンド２０２が作業開始位置に到達していないと判断した場合は、出力軸制御へ切り替える指令を、制御切替部３４１に出力する。
【００４１】
次に、関節制御部３４０について説明する。制御切替部３４１は、入力軸制御部３４２及び出力軸制御部３４３のどちらを機能させるかを、メイン制御部３３０の制御切替指令部３３３からの指令に応じて切り替える。具体的には、制御切替部３４１は、入力軸制御へ切り替える指令を受けた場合は、入力軸制御部３４２を機能させ、出力軸制御へ切り替える指令を受けた場合は、出力軸制御部３４３を機能させる。
【００４２】
入力軸制御部３４２は、入力側エンコーダ２３５の値で関節を制御する。つまり、入力軸制御部３４２は、入力側エンコーダ２３５からの角度情報を参照して位置制御を行う。出力軸制御部３４３は、出力側エンコーダ２３６の値で関節を制御する。つまり、出力軸制御部３４３は、出力側エンコーダ２３６からの角度情報を参照して位置制御を行う。
【００４３】
出力軸制御部３４３で制御する出力制御モードの場合は、減速機２３３の弾性やガタの影響をキャンセルするため、先端精度を確保することができる。一方、入力軸制御部３４２で制御する入力制御モードの場合は、減速機２３３の弾性等により先端精度が低化する。しかし、減速機２３３の弾性によりコンプライアンス量が出力軸制御部３４３で制御するより大きいので、部品挿入時のコンプライアンス性が高い。
【００４４】
（５）ロボット制御方法の各工程の説明
次に、ＣＰＵ３０１によりロボット２００の動作を制御するロボット制御方法について説明する。図５は、第１実施形態に係るロボット制御方法を示すフローチャートである。第１実施形態では、ロボット２００による所定の作業は、ワークＷ１を、第２のワークであるワークＷ２に挿入する挿入作業である。
【００４５】
ＣＰＵ３０１は、ロボットアーム２０１の制御を出力制御モードに変更する（Ｓ１）。出力制御モードは、関節Ｊ２の角度を出力側エンコーダ２３６の角度検出値に基づいてフィードバック制御する制御モードである。つまり、出力制御モードは、出力側エンコーダ２３６の角度検出値が、目標関節角度に対応する目標値に近づくようにモータ２３１の回転角度をフィードバック制御する制御モードである。第１実施形態では、関節Ｊ１〜Ｊ６に対応する複数の関節駆動部２３０の全てについて、出力制御モードに設定する。出力制御モードでは、減速機２３３の出力軸の回転角度を検出する出力側エンコーダ２３６の角度検出値を用いてフィードバック制御しているので、減速機２３３の弾性変形に依存せず、関節Ｊ２の角度を目標関節角度に高精度に制御することができる。
【００４６】
次に、ＣＰＵ３０１は、ワークＷ１を把持して取り出すための位置（ワーク取り出し位置）にロボットハンド２０２が移動するようロボットアーム２０１の動作を制御する（Ｓ２）。この場合、ＣＰＵ３０１は、出力制御モードに設定しているので、ロボットハンド２０２は、ワーク取り出し位置に高精度に位置合わせされる。
【００４７】
次に、ＣＰＵ３０１は、ロボットハンド２０２がワーク取り出し位置に移動したら、ロボットハンド２０２にワークＷ１を把持させるようロボットハンド２０２の動作を制御する（Ｓ３）。
【００４８】
次に、ＣＰＵ３０１は、ロボット２００によりワークＷ１の挿入作業を開始する作業開始位置にロボットハンド２０２を位置合わせするよう、ロボットアーム２０１の動作を制御する（Ｓ４：出力制御工程）。この場合、ＣＰＵ３０１は、出力制御モードに設定しているので、ロボットハンド２０２を作業開始位置に高精度に位置合わせすることができる。作業開始位置は、ワークＷ２の近傍の位置に設定されている。
【００４９】
ここで、ステップＳ２で出力制御モードに設定を変更したのは、ロボットハンド２０２の作業開始位置への位置精度を確保するためであるので、移動途中の経路に制約がない場合は、作業開始位置で出力制御モードに設定を変更してもよい。
【００５０】
次に、ＣＰＵ３０１は、作業開始位置にロボットハンド２０２が到達したか否かを判断する（Ｓ５：判断工程）。
【００５１】
ＣＰＵ３０１は、ステップＳ５にて、ロボットハンド２０２が作業開始位置に到達していないと判断した場合には（Ｓ５：Ｎｏ）、ステップＳ４へ戻り、出力制御モードによりロボットアーム２０１の動作を制御する。
【００５２】
ＣＰＵ３０１は、ステップＳ５にて、ロボットハンド２０２が作業開始位置に到達したと判断した場合には（Ｓ５：Ｙｅｓ）、ロボットアーム２０１の制御を、出力制御モードから入力制御モードへ切り替える（Ｓ６：入力制御工程）。入力制御モードは、関節Ｊ２の角度を入力側エンコーダ２３５の角度検出値に基づいてフィードバック制御する制御モードである。つまり、入力制御モードは、入力側エンコーダ２３５の角度検出値が、目標関節角度に対応する目標値に近づくようにモータ２３１の回転角度をフィードバック制御する制御モードである。第１実施形態では、関節Ｊ１〜Ｊ６に対応する複数の関節駆動部２３０のうち少なくとも１つの関節駆動部について、入力制御モードに設定変更する。第１実施形態では、全ての関節駆動部について、入力制御モードに設定変更する。このように、ロボットハンド２０２が作業開始位置に位置合わせした後にロボット２００がワークＷ１をワークＷ２に挿入する挿入作業をする場合には、出力制御モードから入力制御モードへ設定変更する。
【００５３】
入力制御モードでは、入力側エンコーダ２３５の角度検出値に基づきフィードバック制御しているので、関節の角度、即ちロボットハンド２０２の位置に減速機２３３の弾性変形の分の移動が許容されることとなる。つまり、ＣＰＵ３０１がステップＳ６を実行することにより、ロボットアーム２０１のコンプライアンス性が向上する。ロボットアーム２０１のコンプライアンス性が向上することで、ワークＷ１をワークＷ２に挿入できる範囲を大きくすることができる。
【００５４】
ＣＰＵ３０１は、ワークＷ１を把持したロボットハンド２０２がワークＷ１をワークＷ２に挿入する挿入方向に移動するようロボットアーム２０１の動作を制御する（Ｓ７）。
【００５５】
次に、ＣＰＵ３０１は、所定の作業として挿入作業が完了したか否かを判断する（Ｓ８：ワーク作業判断工程）。ＣＰＵ３０１は、挿入作業が未完了であれば（Ｓ８：Ｎｏ）、ステップＳ７に戻り、挿入作業を継続する。
【００５６】
ＣＰＵ３０１は、挿入作業が完了したと判断した場合は（Ｓ８：Ｙｅｓ）、ロボットハンド２０２のフィンガー２２０を開方向へ移動させて（つまり、ロボットハンド２０２を広げて）、ワークＷ１の把持解放を行う。そして、ロボットアーム２０１を所定の位置姿勢へ移動させる（Ｓ９）。これにより本動作が終了する。
【００５７】
以上、第１実施形態によれば、ロボットハンド２０２を作業開始位置に位置合わせする際には、出力制御モードに設定されるので、ロボットアーム２０１の動作精度が高められ、ロボットハンド２０２を作業開始位置に高精度に位置合わせすることができる。また、挿入作業時には、入力制御モードに設定されるので、ロボットアーム２０１のコンプライアンス性（柔軟性）が確保され、ロボット２００による挿入作業がスムーズとなり、挿入作業の作業性が向上する。よって、ユーザの使い勝手を低下させない。
【００５８】
なお、上記のワーク作業判断工程は、入力制御モードと出力制御モードに係わらない。
【００５９】
［第２実施形態］
次に、本発明の第２実施形態に係るロボット装置におけるロボット制御方法について説明する。ワークＷ１をワークＷ２へ挿入する際、ワークＷ１をワークＷ２に対して所定の距離移動させて、挿入作業を完了する場合と、ワークＷ２の突き当て面にワークＷ１を突き当てて挿入作業を完了する場合がある。第２実施形態では、ロボットハンド２０２を（つまり、ワークＷ２に対してワークＷ１を）挿入方向に作業開始位置から所定の距離移動させて、挿入作業を完了する場合について説明する。
【００６０】
図６は、ワークＷ２にワークＷ１を挿入させる挿入作業前後を示す説明図である。図６（ａ）は挿入作業前を示し、図６（ｂ）は挿入作業後を示す。ワークＷ１は、円柱形状の部材であり、ワークＷ２は、ワークＷ１が嵌る貫通孔が形成された部材である。ロボットハンド２０２が作業開始位置に移動した際に、ロボットハンド２０２に把持されたワークＷ１が図６（ａ）の位置に移動する。第１実施形態で説明したように、作業開始位置で入力制御モードに切り換えることで、多少の軸ずれがあっても挿入が可能となる。ロボットハンド２０２を作業開始位置から所定の距離Ｄ、挿入方向に移動させることで、図６（ｂ）に示すにように、ワークＷ１が所定の距離Ｄ、ワークＷ２に対して挿入方向（矢印Ｘ１方向）に移動し、挿入作業が完了する。
【００６１】
図７は、第２実施形態に係るロボット装置の要部構成を示した機能ブロック図である。なお、第２実施形態において、ロボット装置の装置構成は、上記第１実施形態と略同様であり、制御部であるＣＰＵの制御動作、即ちＣＰＵを動作させるプログラムが上記第１実施形態と異なる。したがって、第２実施形態において、上記第１実施形態と同様の構成については説明を省略し、異なる点について説明する。図７では、関節Ｊ２に対応する関節制御部３４０のみ図示しており、図示は省略しているが、他の関節Ｊ１，Ｊ３〜Ｊ６それぞれに対応する関節制御部３４０を複数有している。
【００６２】
メイン制御部３３０は、軌道計算部３３１、作業開始位置検出部３３２、制御切替指令部３３３の他、ワーク作業判断部３３４を有している。
【００６３】
ワーク作業判断部３３４は、出力側エンコーダ２３６により検出された角度検出値と入力側エンコーダ２３５により検出された角度検出値により、関節のねじれ角度を計算する。
【００６４】
図８は、第２実施形態に係るロボット制御方法を示すフローチャートである。第２実施形態においても、上記第１実施形態と同様、ＣＰＵ３０１がプログラム３２０に基づいてロボット制御方法の各工程を実行する。
【００６５】
なお、図８に示すステップＳ１１〜Ｓ１７，Ｓ２２は、上記第１実施形態で説明した図５のステップＳ１〜Ｓ７，Ｓ９と同様であるため、説明を省略する。
【００６６】
ワーク作業判断部３３４として機能するＣＰＵ３０１は、上述したように、ロボット２００に挿入作業を行わせているときに、入力側エンコーダ２３５の角度検出値及び出力側エンコーダ２３６の角度検出値に基づき、関節のねじれ角度を算出する（Ｓ１８）。
【００６７】
具体的に説明すると、入力側エンコーダ２３５により検出された角度検出値をθｉｎ、出力側エンコーダ２３６により検出された角度検出値をθｏｕｔ、減速機２３３の減速比をＮとし、関節のねじれ角度をΔθとする。関節のねじれ角度は、Δθ＝θｏｕｔ−θｉｎ／Ｎで計算でき、ＣＰＵ３０１は、この計算式を用いて関節のねじれ角度Δθを算出する。関節のねじれ角度Δθは、各関節Ｊ１〜Ｊ６について計算する。
【００６８】
関節、即ち減速機２３３は、ロボットハンド２０２がワークを把持した使用状態やリンクの重量等によりトルクが作用し、弾性変形する。減速機２３３の弾性変形によりリンク２１１がリンク２１２に対して関節Ｊ２まわりに角度変位することが関節Ｊ２のねじれであり、関節Ｊ２のねじれ角度とは、ねじれがない状態に対する変位角度である。そのため、関節Ｊ２のねじれ角度を算出することは、関節Ｊ２に加わるトルクを算出していることと同じである。なお、他の関節についても同様である。
【００６９】
したがって、ＣＰＵ３０１は、各関節Ｊ１〜Ｊ６について、算出したねじれ角度Δθが許容値以下であるか否かを判断する（Ｓ１９）。許容値は、関節に許容される許容トルクに対応する許容ねじれ角度である。
【００７０】
ＣＰＵ３０１は、算出したねじれ角度Δθが、予め設定された許容値を超えない場合、即ち許容値以下の場合（Ｓ１９：Ｙｅｓ）、挿入作業を継続する。つまり、全ての関節Ｊ１〜Ｊ６について、ねじれ角度Δθが許容値以下であれば、挿入作業を継続する。これにより、関節の破壊を防ぐことができる。
【００７１】
そして、ＣＰＵ３０１は、各関節Ｊ１〜Ｊ６の出力側エンコーダ２３６により検出された角度検出値に基づき、ロボットハンド２０２が、作業開始位置からワークＷ２に対するワークＷ１の挿入方向に移動した距離（作業距離）を演算する（Ｓ２０）。出力側エンコーダ２３６により検出された角度検出値を用いているので、正確な作業距離を算出することができる。
【００７２】
次に、ＣＰＵ３０１は、ステップＳ２０で算出した作業距離が所定の距離Ｄに達したか（即ち、挿入作業が完了したか）否かを判断する（Ｓ２１）。
【００７３】
ＣＰＵ３０１は、挿入作業が未完了であれば（Ｓ２１：Ｎｏ）、ステップＳ１７に戻り、挿入作業を継続する。
【００７４】
ＣＰＵ３０１は、挿入作業が完了したと判断した場合は（Ｓ２１：Ｙｅｓ）、ロボットハンド２０２のフィンガー２２０を開方向へ移動させて（つまり、ロボットハンド２０２を広げて）、ワークＷ１の把持解放を行う。そして、ロボットアーム２０１を所定の位置姿勢へ移動させ（Ｓ２２）、本動作が終了する。
【００７５】
ＣＰＵ３０１は、ねじれ角度Δθが許容値を超えた場合（Ｓ１９：Ｎｏ）、報知部であるモニタ５００（図３参照）に、ねじれ角度が許容値を超えた旨の画像を表示させて、ユーザに報知する（Ｓ２３）。これにより、ユーザは挿入作業が失敗したことがわかる。
【００７６】
その際、ＣＰＵ３０１は、挿入作業を停止（中止、中断を含む）、具体的には作業を中断させる。又は、ＣＰＵ３０１は、再度、作業開始位置にロボットハンド２０２を移動させてロボット２００に挿入作業を行わせる（リトライ）。これにより、関節Ｊ１〜Ｊ６に過負荷がかかるのが防止される。つまり、関節Ｊ１〜Ｊ６の破壊を防ぐ、即ち関節Ｊ１〜Ｊ６を過負荷に対して保護することができる。
【００７７】
また、ワークＷ１がワークＷ２に詰まっていて挿入できていない場合がある。このときの関節Ｊ１〜Ｊ６のねじれ角度を予め実験的に求めて、当該ねじれ角度を許容値として設定しておけば、ねじれ角度Δθから、挿入時のワークＷ１の詰まりを検出できる。つまり、ＣＰＵ３０１において関節のねじれ角度Δθを許容値と比較する機能が、ワークＷ１の詰まりを検出する検出手段となる。
【００７８】
以上、第２実施形態によれば、ロボットハンド２０２を作業開始位置から所定の距離Ｄ、挿入方向に移動させる挿入作業を行う場合において、ロボットアーム２０１のコンプライアンス性が確保される。したがって、ロボット２００によるワークＷ２に対するワークＷ１の挿入作業がスムーズとなり、挿入作業の作業性が向上する。
【００７９】
［第３実施形態］
次に、本発明の第３実施形態に係るロボット装置におけるロボット制御方法について説明する。第３実施形態では、ワークＷ２の突き当て面にワークＷ１を突き当てて挿入作業を完了する場合について説明する。
【００８０】
図９は、ワークＷ２にワークＷ１を挿入させる挿入作業前後を示す説明図である。図９（ａ）は挿入作業前を示し、図９（ｂ）は挿入作業後を示す。ワークＷ１は、円柱形状の本体部分に、半径方向に延びるフランジが形成された部材であり、ワークＷ２は、ワークＷ１の本体部分が嵌る貫通孔が形成された部材である。ロボットハンド２０２が作業開始位置に移動した際に、ロボットハンド２０２に把持されたワークＷ１が図９（ａ）の位置に移動する。ロボットハンド２０２を作業開始位置から挿入方向（矢印Ｘ１方向）に移動させることで、図９（ｂ）に示すにように、ワークＷ１のフランジの当接面Ｗ１ａが、ワークＷ２の被当接面Ｗ２ａに突き当たり、挿入作業が完了する。
【００８１】
図１０は、第３実施形態に係るロボット制御方法を示すフローチャートである。なお、第３実施形態において、ロボット装置の装置構成は、上記第１、第２実施形態と略同様であり、制御部であるＣＰＵの制御動作、即ちＣＰＵを動作させるプログラムが上記第１、第２実施形態と異なる。したがって、第３実施形態において、上記第１、第２実施形態と同様の構成については説明を省略し、異なる点について説明する。
【００８２】
第３実施形態においても、上記第１、第２実施形態と同様、ＣＰＵ３０１がプログラム３２０に基づいてロボット制御方法の各工程を実行する。図１０に示すステップＳ３１〜Ｓ３７は、上記第１実施形態で説明した図５のステップＳ１〜Ｓ７と同様であり、ステップＳ３８〜Ｓ４１，Ｓ４４は、上記第２実施形態で説明した図８のステップＳ１８〜Ｓ２１，Ｓ２３と同様であるため、説明を省略する。
【００８３】
ＣＰＵ３０１は、ステップＳ４１において、作業距離が所定の距離Ｄに達したと判断した場合（Ｓ４１：Ｙｅｓ）、各関節Ｊ１〜Ｊ６のねじれ角度Δθが所定値に達したか否かを判断する（Ｓ４２）。
【００８４】
ここで、作業開始位置から挿入方向に所定の距離Ｄの位置（挿入位置）は、ワークＷ１又はワークＷ２の公差等により、所定の幅を持つ。したがって、ＣＰＵ３０１は、挿入位置と判断すれば（Ｓ４１：Ｙｅｓ）、次のステップＳ４２の処理へ進む。
【００８５】
ＣＰＵ３０１は、ねじれ角度Δθが所定値以下の場合は（Ｓ４２：Ｎｏ）、ステップＳ３７に戻り、挿入作業を継続する。
【００８６】
ＣＰＵ３０１は、ねじれ角度Δθが所定値に達した場合は（Ｓ４２：Ｙｅｓ）、ロボットハンド２０２のフィンガー２２０を開方向へ移動させて（つまり、ロボットハンド２０２を広げて）、ワークＷ１の把持解放を行う。そして、ロボットアーム２０１を所定の位置姿勢へ移動させ（Ｓ４３）、挿入作業が完了する。このようにワークＷ１をワークＷ２へ突き当てることで挿入が完了する場合、出力側エンコーダ２３６により検出された角度検出値から演算したワークＷ１の作業距離と、関節ねじれ角度が所定位置範囲にある場合に挿入作業完了と判断できる。
【００８７】
第３実施形態によれば、上記第２実施形態のＣＰＵの処理に対して、ステップＳ４２の処理を加えることで、ロボットアーム２０１の各関節Ｊ１〜Ｊ６のねじれ量が一定となり、一定のトルクをワークＷ１に加えることになる。一定のトルクをワークＷ１にかけることで、挿入作業が確実となり、安定した組立作業が実現できる。
【００８８】
そして、第３実施形態によれば、上記第１、第２実施形態と同様、出力制御モードと入力制御モードとを適正に切り替えることにより、作業開始位置までの位置決め精度、挿入動作時のコンプライアンス性が確保できる。
【００８９】
［第４実施形態］
次に、本発明の第４実施形態に係るロボット装置におけるロボット制御方法について説明する。第４実施形態では、ワークＷ１をワークＷ２から抜き取る作業におけるロボット制御方法について説明する。
【００９０】
図１１は、ワークＷ２からワークＷ１を抜き取る抜き取り作業前後を示す説明図である。図１１（ａ）は抜き取り作業前を示し、図１１（ｂ）は抜き取り作業後を示す。ワークＷ１は、円柱形状の本体部分に、半径方向に延びるフランジが形成された部材であり、ワークＷ２は、ワークＷ１の本体部分が嵌る貫通孔が形成された部材である。
【００９１】
図１１（ａ）には、ロボットハンド２０２が作業開始位置に移動して、ロボットハンド２０２に把持させた状態のワークＷ１の位置を示している。図１１（ｂ）には、ロボットハンド２０２を、作業開始位置からワークＷ１をワークＷ２から抜き取る抜き取り方向（矢印Ｘ２方向）に所定の距離Ｄ、移動させた際のワークＷ１の位置を示している。なお、ワークＷ２は、ワークＷ１の抜き取り作業によりワークＷ１と共に連れ動くことがないように、不図示の治具によって所定位置に固定されている。
【００９２】
図１２は、第４実施形態に係るロボット制御方法を示すフローチャートである。第４実施形態において、ロボット装置の装置構成は、上記第１〜第３実施形態と略同様であり、制御部であるＣＰＵの制御動作、即ちＣＰＵを動作させるプログラムが上記第１〜第３実施形態と異なる。したがって、第４実施形態において、上記第１〜第３実施形態と同様の構成については説明を省略し、異なる点について説明する。
【００９３】
第４実施形態においても、上記第１〜第３実施形態と同様、ＣＰＵ３０１がプログラム３２０に基づいてロボット制御方法の各工程を実行する。第４実施形態では、ロボット２００による所定の作業は、ワークＷ１を、ワークＷ２から抜き取る抜き取り作業である。
【００９４】
ＣＰＵ３０１は、ロボットアーム２０１の制御を出力制御モードに変更する（Ｓ５１）。
【００９５】
次に、ＣＰＵ３０１は、ロボットハンド２０２にワークＷ１を把持させるために、ロボットハンド２０２のフィンガー２２０を開方向へ移動させて、ワークＷ１の把持の準備をする（Ｓ５２）。
【００９６】
次に、ＣＰＵ３０１は、ロボット２００によりワークＷ１の抜き取り作業を開始する作業開始位置にロボットハンド２０２を位置合わせするよう、ロボットアーム２０１の動作を制御する（Ｓ５３：出力制御工程）。この場合、ＣＰＵ３０１は、出力制御モードに設定しているので、ロボットハンド２０２を作業開始位置に高精度に位置合わせすることができる。作業開始位置は、ワークＷ１の位置に設定されている。なお、ステップＳ５２の動作は、ステップＳ５３のロボットアーム２０１の動作中に行ってもよい。
【００９７】
次に、ＣＰＵ３０１は、作業開始位置にロボットハンド２０２が到達したか否かを判断する（Ｓ５４：判断工程）。
【００９８】
ＣＰＵ３０１は、ステップＳ５４にて、ロボットハンド２０２が作業開始位置に到達していないと判断した場合には（Ｓ５４：Ｎｏ）、ステップＳ５３へ戻り、出力制御モードによりロボットアーム２０１の動作を制御する。
【００９９】
ＣＰＵ３０１は、ステップＳ５４にて、ロボットハンド２０２が作業開始位置に到達したと判断した場合には（Ｓ５４：Ｙｅｓ）、ロボットアーム２０１の制御を、出力制御モードから入力制御モードへ設定変更する（Ｓ５５：入力制御工程）。これにより、ロボットアーム２０１のコンプライアンス性を確保する。
【０１００】
次に、ＣＰＵ３０１は、ロボットハンド２０２のフィンガー２２０を閉方向に移動させてロボットハンド２０２にワークＷ１を把持させる（Ｓ５６）。なお、ステップＳ５６の処理を、ステップＳ５４とステップＳ５５の間で行ってもよい。
【０１０１】
次に、ＣＰＵ３０１は、ワークＷ１を把持したロボットハンド２０２がワークＷ１をワークＷ２から抜き取る抜き取り方向に移動するようロボットアーム２０１の動作を制御する（Ｓ５７）。
【０１０２】
入力制御モードではコンプライアンス性が高いため、抜き取り作業中に、ワーク或いはロボットアーム２０１に過度な負荷が掛かるのが抑制され、ワークＷ１が抜けない、又はワークＷ１，Ｗ２に傷がつく等の問題が生じるのが防止される。
【０１０３】
次に、ＣＰＵ３０１は、抜き取り作業が完了したか否かを判断する（Ｓ５８：ワーク作業判断工程）。ＣＰＵ３０１は、抜き取り作業が未完了であれば（Ｓ５８：Ｎｏ）、ステップＳ５７に戻り、抜き取り作業を継続する。
【０１０４】
ＣＰＵ３０１は、抜き取り作業が完了したと判断した場合は（Ｓ５８：Ｙｅｓ）、ロボットアーム２０１の制御を、入力制御モードから出力制御モードへ設定変更する（Ｓ５９）。次に、ＣＰＵ３０１は、ワークＷ１を所定の位置へ移動させるよう、ロボットアーム２０１の動作を制御し（Ｓ６０）、ワークＷ１を所定の位置へ移動させたら、動作を終了する。第４実施形態では、ＣＰＵ３０１は出力制御モードに設定変更したので、ワークＷ１は所定の位置へ高精度に位置決めされる。
【０１０５】
なお、抜き取り作業が完了した時点で、制御モードを出力制御モードへ変更したが、次の動作でワークＷ１を高精度に位置決めする必要がない場合や、途中の動作経路の精度を問わない場合は入力制御モードのままでもよい。即ち、ワークＷ１を搬送する場合、位置決めの精度或いは軌道精度により、出力制御モードと入力制御モードのいずれかに、制御モードを設定すればよい。よって、位置決め精度或いは軌道精度で高精度が要求される場合に出力制御モードとすればよい。
【０１０６】
以上、第４実施形態によれば、ロボットハンド２０２を作業開始位置に位置合わせする際には、出力制御モードに設定されるので、ロボットアーム２０１の動作精度が高められ、ロボットハンド２０２を作業開始位置に高精度に位置合わせすることができる。また、抜き取り作業時には、入力制御モードに設定されるので、ロボットアーム２０１のコンプライアンス性（柔軟性）が確保され、ロボット２００によるワークＷ１の抜き取り作業がスムーズとなり、抜き取り作業の作業性が向上する。
【０１０７】
［第５実施形態］
次に、本発明の第５実施形態に係るロボット装置におけるロボット制御方法について説明する。第５実施形態では、ワークＷ１をワークＷ２から抜き取る作業におけるロボット制御方法について説明する。
【０１０８】
図１３は、第５実施形態に係るロボット制御方法を示すフローチャートである。第５実施形態において、ロボット装置の装置構成は、上記第１〜第４実施形態と略同様であり、制御部であるＣＰＵの制御動作、即ちＣＰＵを動作させるプログラムが上記第１〜第４実施形態と異なる。したがって、第５実施形態において、上記第１〜第４実施形態と同様の構成については説明を省略し、異なる点について説明する。
【０１０９】
第５実施形態においても、上記第１〜第４実施形態と同様、ＣＰＵ３０１がプログラム３２０に基づいてロボット制御方法の各工程を実行する。第５実施形態では、上記第４実施形態と同様、ロボット２００による所定の作業は、ワークＷ１を、ワークＷ２から抜き取る抜き取り作業である。
【０１１０】
図１３に示すステップＳ６１〜Ｓ６７は、上記第４実施形態で説明した図１２のステップＳ５１〜Ｓ５７と同様であるため、説明を省略する。
【０１１１】
ＣＰＵ３０１は、ステップＳ６７の抜き取り作業をロボット２００に行わせているときに、入力側エンコーダ２３５の角度検出値及び出力側エンコーダ２３６の角度検出値に基づき、各関節Ｊ１〜Ｊ６のねじれ角度を算出する（Ｓ６８）。
【０１１２】
次に、ＣＰＵ３０１は、各関節Ｊ１〜Ｊ６について、算出したねじれ角度が許容値以下であるか否かを判断する（Ｓ６９）。許容値は、関節に許容される許容トルクに対応する許容ねじれ角度である。
【０１１３】
ＣＰＵ３０１は、算出したねじれ角度が、予め設定された許容値を超えない場合、即ち許容値以下の場合（Ｓ６９：Ｙｅｓ）、抜き取り作業を継続する。つまり、全ての関節Ｊ１〜Ｊ６について、ねじれ角度が許容値以下であれば、抜き取り作業を継続する。これにより、関節の破壊を防ぐことができる。
【０１１４】
そして、ＣＰＵ３０１は、各関節Ｊ１〜Ｊ６の出力側エンコーダ２３６により検出された角度検出値に基づき、ロボットハンド２０２が、作業開始位置からワークＷ２に対するワークＷ１の抜き取り方向に移動した距離（作業距離）を演算する（Ｓ７０）。
【０１１５】
次に、ＣＰＵ３０１は、ステップＳ７０で算出した作業距離が所定の距離Ｄに達したか（即ち、抜き取り作業が完了したか）否かを判断する（Ｓ７１）。
【０１１６】
ＣＰＵ３０１は、抜き取り作業が未完了であれば（Ｓ７１：Ｎｏ）、ステップＳ６７に戻り、抜き取り作業を継続する。
【０１１７】
ＣＰＵ３０１は、抜き取り作業が完了したと判断した場合は（Ｓ７１：Ｙｅｓ）、ロボットアーム２０１の制御を、入力制御モードから出力制御モードへ設定変更する（Ｓ７２）。次に、ＣＰＵ３０１は、ワークＷ１を所定の位置へ移動させるよう、ロボットアーム２０１の動作を制御し（Ｓ７３）、ワークＷ１を所定の位置へ移動させたら、動作を終了する。
【０１１８】
ＣＰＵ３０１は、ねじれ角度が許容値を超えた場合（Ｓ６９：Ｎｏ）、報知部であるモニタ５００（図３参照）に、ねじれ角度が許容値を超えた旨の画像を表示させて、ユーザに報知する（Ｓ７４）。これにより、ユーザはワークＷ１の抜き取り作業が失敗したことがわかる。
【０１１９】
その際、ＣＰＵ３０１は、抜き取り作業を停止（中止、中断を含む）、具体的には抜き取り作業を中断させる。又は、ＣＰＵ３０１は、再度、作業開始位置にロボットハンド２０２を移動させてロボット２００に抜き取り作業を行わせる（リトライ）。これにより、関節Ｊ１〜Ｊ６に過負荷がかかるのが防止される。つまり、関節Ｊ１〜Ｊ６の破壊を防ぐ、即ち関節Ｊ１〜Ｊ６を過負荷に対して保護することができる。更に、ステップＳ７０において、出力側エンコーダ２３６の角度検出値を使用することで、正確な抜き取りの作業距離を算出することができる。
【０１２０】
また、出力制御モードと入力制御モードとを適正に切り替えることにより、作業開始位置までの位置決め精度、抜き取り作業時のコンプライアンス性が確保できる。
【０１２１】
［第６実施形態］
次に、本発明の第６実施形態に係るロボット装置におけるロボット制御方法について説明する。第６実施形態では、ワークＷ１をワークＷ２に挿入する挿入作業におけるロボット制御方法について説明する。
【０１２２】
図１４は、第６実施形態に係るロボット装置のロボットによるワークの挿入作業を示す説明図である。なお、第６実施形態において、上記第１〜第５実施形態と同様の構成については同一符号を付して説明を省略する。図１４に示すように、ワークＷ２には、ワークＷ１が挿入される貫通孔が形成されており、ロボット２００は、ワークＷ２の長穴形状の貫通孔に、円柱形状のワークＷ１を挿入する。
【０１２３】
図１５は、第６実施形態に係るロボット装置の要部構成を示した機能ブロック図である。制御装置３００においては、プログラム３２０に基づくＣＰＵ３０１の機能をブロック化して図示している。
【０１２４】
各関節Ｊ１〜Ｊ６にはそれぞれの関節を駆動する関節駆動部２３０１〜２３０６が配置されている。制御装置３００は、メイン制御部３３０及び各関節Ｊ１〜Ｊ６に対応する関節制御部３４０と同様の関節制御部３４０１〜３４０６の機能を有している。
【０１２５】
メイン制御部３３０は、軌道計算部３３１、作業開始位置検出部３３２の他、関節選択部３３５、関節切替制御部３３６を有している。
【０１２６】
関節選択部３３５は、組立作業によって、関節Ｊ１〜Ｊ６における関節駆動部２３０１〜２３０６の各々で入力軸制御モード、或いは、出力制御モードの切り替えを選択する。
【０１２７】
関節切替制御部３３６は、関節選択部３３５の結果に応じて、関節Ｊ１〜Ｊ６毎（関節駆動部２３０１〜２３０６毎）に選択的に入力制御モードと出力制御モードを切替える。
【０１２８】
なお、軌道計算部３３１はロボットアーム２０１の動作毎に関節の制御指令値を計算する。作業開始位置検出部３３２は軌道計算部３３１に基づき、関節の切替位置を演算する。
【０１２９】
図１６は、第６実施形態に係るロボット制御方法を示すフローチャートである。第６実施形態において、制御部であるＣＰＵの制御動作、即ちＣＰＵを動作させるプログラムが上記第１〜第５実施形態と異なる。
【０１３０】
図１６に示すステップＳ８１〜Ｓ８５、Ｓ８７〜８９は、上記第１実施形態で説明した図５のステップＳ１〜Ｓ５、Ｓ７〜９と同様であるため、説明を省略し、以下、ステップＳ８６の処理について説明する。
【０１３１】
ＣＰＵ３０１は、ステップＳ８６では、ロボットアーム２０１の姿勢や作業開始位置に応じて、関節毎に出力制御モードから入力制御モードに切り替える。即ち、ＣＰＵ３０１は、前記ロボット２００が挿入作業を行う場合には、複数の関節駆動部２３０１〜２３０６のうち少なくとも１つの関節駆動部を選択し、選択した関節駆動部について、入力制御モードに設定変更する。例えば、図１４のワークＷ２とロボットアーム２０１の状態では、鉛直方向には大きな隙間があるため、鉛直方向のコンプライアンス性を必要としない。また、水平方向の隙間は小さいためコンプライアンス性が必要である。コンプライアンス性が不要な関節は、関節Ｊ２，Ｊ３，Ｊ５，Ｊ６となり、これらの関節の関節駆動部２３０２，２３０３，２３０５，２３０６は、出力制御モードでの制御とする。残りの関節Ｊ１，Ｊ４はコンプライアンス性が必要なため、関節駆動部２３０１，２３０４は、入力制御モードでの制御とする。このように方向によるコンプライアンス性の必要度に応じて、切り換える関節を選択する。
【０１３２】
したがって、この例では、ＣＰＵ３０１は、ステップＳ８６では、関節駆動部２３０１，２３０４を選択し、選択した関節駆動部２３０１，２３０４について、制御モードを入力制御モードに設定変更する。
【０１３３】
コンプライアンス性を確保することは、関節の剛性が低下することと略等しく、振動や自重、配線や配管の外力の影響を受けやすくなる。
【０１３４】
第６実施形態では、必要最小限の関節Ｊ１，Ｊ４について入力制御モードに切り替えて、他の関節Ｊ２，Ｊ３，Ｊ５，Ｊ６については、出力制御モードのままである。これにより、上記第１〜第５実施形態よりも、より安定した作業が可能となる。
【０１３５】
［第７実施形態］
次に、本発明の第７実施形態に係るロボット装置におけるロボット制御方法について説明する。
【０１３６】
ロボット２００で作業を行わせる場合、その作業を開始する作業開始位置をユーザがティーチングペンダント４００を用いて制御装置３００に教え込む教示作業が必要になる。教示作業は、ユーザがティーチングペンダント４００でロボット２００を操作し、部品挿入等の作業を行い、その座標を制御装置３００に記憶させる。
【０１３７】
第７実施形態では、入力制御モードと出力制御モードとを切替えて教示し、教示時間を短縮する方法について説明する。
【０１３８】
図１７は、第７実施形態に係るロボット制御方法を示すフローチャートである。第７実施形態において、ロボット装置の装置構成は、上記第１〜第６実施形態と略同様であり、制御部であるＣＰＵの制御動作、即ちＣＰＵを動作させるプログラムが上記第１〜第６実施形態と異なる。したがって、第５実施形態において、上記第１〜第６実施形態と同様の構成については説明を省略し、異なる点について説明する。
【０１３９】
まず、本動作の開始し、ＣＰＵ３０１が、ロボットアーム２０１の運転を教示モードに変更する（Ｓ９１）。教示モードでは、ロボット２００の操作権がユーザへ移り、ロボットアーム２０１の速度を落とす等の措置が行われる。
【０１４０】
ＣＰＵ３０１は、ユーザの操作によるティーチングペンダント４００からの指令により、ワークＷ１の挿入を開始する作業開始位置にロボットハンド２０２が移動するようロボットアーム２０１の動作を制御する（Ｓ９２）。なお、移動方法は予め決められたプログラム動作でも、手動による方法でも良い。次に、ＣＰＵ３０１は、出力制御モードから入力制御モードに変更し（Ｓ９３）、ロボットアーム２０１のコンプライアンス性を向上させる。
【０１４１】
ＣＰＵ３０１は、ユーザの操作によるティーチングペンダント４００からの指令により、ロボットアーム２０１の動作を制御して、ロボット２００に挿入作業を行わせる（Ｓ９４）。
【０１４２】
次に、ワークＷ２にワークＷ１が挿入できたか否かを判断する（Ｓ９５）。通常は、ユーザの目視により判断され、挿入できなかった場合は、ステップＳ９４に戻り作業を繰り返す。ステップＳ９５で挿入が確認できた場合は、ステップＳ９６に進む。
【０１４３】
ステップＳ９６では、ＣＰＵ３０１が、出力側エンコーダ２３６（出力側角度検出部）により検出された角度検出値のデータを教示データとして記憶部（例えばＨＤＤ３０４等）に記憶させる。更に教示データの精度を上げる目的で、ステップＳ９５の挿入の判断の際に、関節ねじれ角度を参照し、関節ねじれ角度が小さくなるようにステップＳ９４で操作してもよい。また、ＣＰＵ３０１が関節ねじれ角度が小さくなるように制御し教示位置を探索することによって、教示を省力化できる。
【０１４４】
以上、第７実施形態によれば、制御部としてのＣＰＵ３０１が、ステップＳ９３において、ティーチングペンダント４００の操作に従ってロボット２００に挿入作業を行わせる際に入力制御モードに変更設定している。これにより、教示時のコンプライアンス性を向上させながら、教示時間を短縮できる。
【０１４５】
［第８実施形態］
次に、本発明の第８実施形態に係るロボット装置におけるロボット制御方法について説明する。第８実施形態では、入力制御モードと出力制御モードを各々備えた第１のロボットと第２のロボットで行う組立作業に関する。第１のワークは第１のロボット、第２のワークは第２のロボットで把持される。第１のワークから第２のワーク、或いは、第２のワークから第１のワークの挿入作業のロボット制御方法について説明する。
【０１４６】
（１）ロボット装置の構成の説明
図１８は、本発明の第８実施形態に係るロボット装置を示す斜視図である。本第８実施形態のロボット装置１０１は、第１のロボットであるロボット２００と、第２のロボットであるロボット２８０と、ロボット２００とロボット２８０の動作を制御する制御部としての統合制御装置３８０と、を備えている。また、ロボット装置１０１は、ユーザの操作によりロボット２００とロボット２８０の動作を教示する教示部としてのティーチングペンダント４００（不図示）を備えている。
【０１４７】
ロボット２００は、多軸の垂直多関節型のロボットアーム２０１と、ロボットアーム２０１の先端に取り付けられたエンドエフェクタとしてのロボットハンド２０２と、を有している。ロボット２８０は、多軸の垂直多関節型のロボットアーム２８１と、ロボットアーム２８１の先端に取り付けられたエンドエフェクタとしてのロボットハンド２８２と、を有している。
【０１４８】
ロボットアーム２０１とロボットハンド２０２は、第１実施形態で説明した構成と同一の構成である。統合制御装置３８０は、各ロボット２００，２８０に対して、入力制御モードと出力制御モードのいずれかに個別に設定可能である。ロボットアーム２８１とロボットハンド２８２はロボットアーム２０１とロボットハンド２０２と同一の性能でも異なる性能でも良いが、第８実施形態では構成と機能は同様である。ロボット２００で第１のワークであるワークＷ１の把持や移動を行い、ロボット２８０で第２のワークであるワークＷ２の把持や移動を行う。
【０１４９】
ロボットハンド２０２とロボットハンド２８２は第１実施形態と同様にワークＷ１とワークＷ２を複数のフィンガーの開閉で把持、及び、解放が可能となる。
【０１５０】
（２）統合制御装置３８０の構成の説明
図１９は、ロボット装置１０１の統合制御装置３８０の構成を示すブロック図である。第１実施形態の制御装置３００が１台のロボットの制御に対して、統合制御装置３８０は複数のロボットの制御が可能である。本第８実施形態では、統合制御装置３８０はロボット２００とロボット２８０の制御を担う。統合制御装置３８０は、コンプライアンス性取得部３８１、出力制御／入力制御選択部（選択部）３８２、ロボット２００を制御するロボット制御部３８３、ロボット２８０を制御するロボット制御部３８４からなる。コンプライアンス性取得部３８１は、力学計算部３８５を有する。
【０１５１】
まず、コンプライアンス性取得部３８１の働きについて説明する。コンプライアンス性取得部３８１はロボット２００とロボット２８０の先端に外力が加わった場合のロボットアームの追従性を判定する。この場合、追従性が良いことはロボットアームのコンプライアンス性が高いことを示す。判定方法は、図１８に示した作業姿勢、即ち、作業開始位置で所定の外力が加わったときの先端移動速度を力学計算部３８５で計算する。先端移動速度は作業姿勢での各軸の慣性モーメント、軸受けトルク、ロボットハンドとワークの質量と重心位置から計算する。また、実際に先端位置に外力を加え、このときの先端移動速度を実測しても良い。先端移動速度の実測は、出力側角度検出部の計測値を順運動学で容易に求めることができる。このように、コンプライアンス性取得部３８１は、コンプライアンス性として、各ロボット２００，２８０の先端に所定の外力を作用させたと仮定したときの各ロボット２００，２８０の先端の移動速度を推定する。同一の外力で先端の移動速度が速い方が、追従性、即ち、コンプライアンス性が高いと判定できる。
【０１５２】
選択部３８２は、ロボット２００、ロボット２８０の各々を入力制御モード、或いは、出力制御モードへ設定する。作業開始位置での位置決めにはロボット２００、及び、ロボット２８０の両方を出力制御モードで精度良く位置決めし、挿入作業時にはロボット２００とロボット２８０の一方を出力制御モード、他方を入力制御モードに設定する。ワークＷ１とワークＷ２の挿入作業時には、コンプライアンス性取得部３８１の結果に基づき、コンプライアンス性の高いロボットを入力制御モード、コンプライアンス性の低いロボットを出力制御モードに切り替える。ロボット制御部３８３とロボット制御部３８４は夫々のロボット２００とロボット２８０の制御を上記実施形態と同様に行う。
【０１５３】
（３）ロボット制御方法の各工程の説明
次に、統合制御装置３８０が制御するロボット制御方法について説明する。図２０は、第８実施形態に係るロボット制御方法を示すフローチャートである。統合制御装置３８０は、ロボット２００のロボットハンド２０２にワークＷ１を把持させ、ロボット２００を作業開始位置に出力制御モードで位置決めする（Ｓ１０１）。同様に統合制御装置３８０は、ロボット２８０のロボットハンド２８２にワークＷ２を把持させ、作業開始位置に出力制御モードで位置決めする（Ｓ１０２）。なお、ステップＳ１０１とステップＳ１０２の出力制御モードは、作業開始位置への位置決めに必要であって、途中の経路は入力制御モードでも良い。ロボット２００とロボット２８０の両方を出力制御モードで位置決めすることにより、ワークＷ１とワークＷ２の相対精度を高めることができる。
【０１５４】
次に作業開始位置でのロボット２００のコンプライアンス性をコンプライアンス性取得部３８１で求める（Ｓ１０３）。同様に作業開始位置でのロボット２８０のコンプライアンス性をコンプライアンス性取得部３８１で求める（Ｓ１０４）。
【０１５５】
次に、ロボット２００とロボット２８０のコンプライアンスを比較し、ロボット２００の方がコンプライアンス性が高いと判定した場合は、ステップＳ１０６へ分岐し、逆の場合はステップＳ１０７へ分岐する（Ｓ１０５）。
【０１５６】
ステップＳ１０６へ分岐した場合、統合制御装置３８０は、ロボットアーム２８１を出力制御モードに切替えて作業開始位置に留まるように制御し、ロボットアーム２０１を入力制御モードに切替えてロボットアーム２０１を移動し挿入作業を行う（Ｓ１０６）。
【０１５７】
ステップＳ１０７へ分岐した場合、統合制御装置３８０は、ロボットアーム２０１を出力制御モードに切替えて作業開始位置に留まるように制御し、ロボットアーム２８１を入力制御モードに切替えてロボットアーム２８１を移動し挿入作業を行う（Ｓ１０７）。
【０１５８】
なお、同様な作業の繰り返しの場合、２回目以降の作業でステップＳ１０３、Ｓ１０４、Ｓ１０５の工程を省いても良い。
【０１５９】
以上、第８実施形態によれば、ロボット２００，２８０は作業開始位置に位置決めする場合は、出力制御モードに設定される。ワークＷ１とワークＷ２の挿入等の所定の作業をする場合、ロボット２００、或いはロボット２８０の一方が入力制御モードに設定される。この際、ロボット２００とロボット２８０の何れか一方を入力制御モードに設定するために、夫々のロボット２００，２８０のコンプライアンス性を求める。コンプライアンス性の高い方を入力制御モードに設定する。このことによって２台のロボット２００，２８０の作業であっても、作業開始位置に位置合わせする際には、ロボット２００，２８０が出力制御モードに設定されるので動作精度が高められる。挿入作業時には、一方のロボットが入力制御モードに設定されるので、コンプライアンス性（柔軟性）が確保される。また、コンプライアンス性の高い方のロボットを入力制御モードにするので、挿入時間が短縮される。結果として、挿入作業がスムーズとなり、挿入作業の作業性が向上する。よって、ユーザの使い勝手を低下させない。尚、第８実施形態では２台のロボットに例を示したが、３台以上の場合でも随時、コンプライアンス性を求めて入力軸制御モードと出力軸制御モードを切り替えてもよい。
【０１６０】
第８実施形態では統合制御装置３８０でロボット２００とロボット２８０を制御している。なお、ロボット２００に接続された第１の制御装置と、ロボット２８０に接続された第２の制御装置とで、統合制御装置３８０を構成してもよい。この場合、第１の制御装置と第２の制御装置とは、互いに通信可能に有線又は無線で接続され、第１の制御装置又は第２の制御装置でロボット２００，２８０の制御を行っても良い。
【０１６１】
また、第８実施形態では、統合制御装置３８０が、コンプライアンス性として、各ロボット２００，２８０の移動速度を推定したが、実際に移動速度を計測してもよい。即ち統合制御装置３８０は、コンプライアンス性として、各ロボット２００，２８０の先端に所定の外力を作用させたときの各ロボット２００，２８０の先端の移動速度を、各ロボット２００，２８０の出力側エンコーダ２３６の検出結果から計測すればよい。
【０１６２】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。
【０１６３】
上記実施形態では、各角度検出部が、ロータリーエンコーダである場合について説明したが、ロータリーエンコーダに限定するものではなく、各軸の回転角度を検出できるものであれば、いかなるものでもよく、例えばレゾルバ等を用いてもよい。
【０１６４】
また、上記実施形態では、減速機が波動歯車減速機である場合について説明したが、波動歯車減速機に限定するものではない。波動歯車減速機以外の減速機であって、出力軸にトルクが作用した際に弾性変形等により出力軸が変位する減速機であれば本発明は適用可能である。
【０１６５】
また、上記実施形態では、ロボットアームが垂直多関節型の場合について説明したが、これに限定するものではなく、ロボットアームが水平多関節型の場合についても本発明は適用可能である。
【０１６６】
また、上記実施形態では、エンドエフェクタがロボットハンドである場合について説明したが、これに限定するものではなく、エンドエフェクタがワークに対して作業を施すツールであっても本発明は適用可能である。
【０１６７】
また、上記実施形態では、作業開始位置まで出力制御モードであったが、作業開始位置で入力制御モードから出力制御モードへ切替えて高精度に位置決めし、次いで入力制御モードへ切り替えてもよい。これにより、ロボットアーム２０１の動作中の高速性を上げることができる。
【０１６８】
また、上記実施形態では、回転モータの駆動力を減速機へ直接伝達する場合について説明したが、これに限定するものではなく、間接的に伝達する手段、例えば回転モータの回転軸の回転を、減速機の入力軸にベルトで伝達する場合であってもよい。この場合、入力側エンコーダは、回転モータの回転軸又は減速機の入力軸のどちらの回転角度を検出するようにしてもよい。
【０１６９】
また、上記実施形態では、報知部がモニタ５００である場合について説明したが、これに限定するものではなく、音声部による音声出力や発光部による発光によりユーザに報知するようにしてもよい。
【０１７０】
また、上記実施形態の各処理動作は具体的にはＣＰＵ３０１により実行されるものである。従って上述した機能を実現するプログラムを記録した記録媒体を制御装置３００に供給し、制御装置３００のコンピュータ（ＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
【０１７１】
また、上記実施形態では、コンピュータ読み取り可能な記録媒体がＨＤＤ３０４であり、ＨＤＤ３０４にプログラム３２０が格納される場合について説明したが、これに限定するものではない。プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、図３に示すＲＯＭ３０２、記録ディスク３２１、不図示の外部記憶装置等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、書き換え可能な不揮発性のメモリ（例えばＵＳＢメモリ）、ＲＯＭ等を用いることができる。
【０１７２】
また、上記実施形態におけるプログラムを、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
【０１７３】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施形態の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１７４】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上記実施形態の機能が実現される場合も含まれる。
【０１７５】
また、上記実施形態では、コンピュータがＨＤＤ等の記録媒体に記録されたプログラムを実行することにより、画像処理を行う場合について説明したが、これに限定するものではない。プログラムに基づいて動作する制御部の一部又は全部の機能をＡＳＩＣやＦＰＧＡ等の専用ＬＳＩで構成してもよい。なお、ＡＳＩＣはApplication  Specific  Integrated  Circuit、ＦＰＧＡはField-Programmable  Gate  Arrayの頭字語である。
【符号の説明】
【０１７６】
２００…ロボット、２０１…ロボットアーム、２０２…ロボットハンド（エンドエフェクタ）、２３０…関節駆動部、２３１…回転モータ、２３３…減速機、２３５…入力側エンコーダ（入力側角度検出部）、２３６…出力側エンコーダ（出力側角度検出部）、３０１…ＣＰＵ（制御部）、３２０…プログラム、４００…ティーチングペンダント、Ｊ１〜Ｊ６…関節
【図１】
0005972346.tif 000002
【図２】
0005972346.tif 000003
【図３】
0005972346.tif 000004
【図４】
0005972346.tif 000005
【図５】
0005972346.tif 000006
【図６】
0005972346.tif 000007
【図７】
0005972346.tif 000008
【図８】
0005972346.tif 000009
【図９】
0005972346.tif 000010
【図１０】
0005972346.tif 000011
【図１１】
0005972346.tif 000012
【図１２】
0005972346.tif 000013
【図１３】
0005972346.tif 000014
【図１４】
0005972346.tif 000015
【図１５】
0005972346.tif 000016
【図１６】
0005972346.tif 000017
【図１７】
0005972346.tif 000018
【図１８】
0005972346.tif 000019
【図１９】
0005972346.tif 000020
【図２０】
0005972346.tif 000021