(57)【要約】【課題】人とロボットとの協働作業における人の負担軽減に有効なロボットシステムを提供する。【解決手段】ロボットシステム１は、先端部４と、基部３と、多関節アーム１０とを有するロボット２と、先端部４の目標位置及び目標姿勢の経時的推移を定める動作プログラムに従って、先端部４を移動させる通常制御部１１２と、制御の途中で、ロボット２への外力の付加によるガイド操作に応じて先端部４を移動させる力ガイド制御部１１４と、目標位置及び目標姿勢の推移の途中から開始する補正対象区間について、当該補正対象区間の始点における先端部４の目標位置及び目標姿勢を基準とした、当該補正対象区間の終点までの先端部４の目標位置及び目標姿勢を定める相対指令情報を取得する相対情報取得部１１５と、多関節アーム１０の動作の完了時における先端部４の位置及び姿勢を基準とし、相対指令情報に従って先端部４を移動させる補正制御部１１６と、を備える。【選択図】図１
2019177432.tif 000002
【特許請求の範囲】
【請求項１】
先端部と、基部と、前記基部に対する前記先端部の位置及び姿勢を調節する多関節アームとを有するロボットと、
前記基部に対する前記先端部の目標位置及び目標姿勢の経時的推移を定める動作プログラムに従って、前記先端部を移動させるように前記多関節アームを制御する通常制御部と、
前記通常制御部による制御の途中で、前記ロボットへの外力の付加によるガイド操作に応じて前記先端部を移動させるように前記多関節アームを制御する力ガイド制御部と、
前記動作プログラムに従った前記目標位置及び目標姿勢の推移の途中から開始する補正対象区間について、当該補正対象区間の始点における前記先端部の目標位置及び目標姿勢を基準とした、当該補正対象区間の終点までの前記先端部の目標位置及び目標姿勢を定める相対指令情報を取得する相対情報取得部と、
前記力ガイド制御部による制御に応じた前記多関節アームの動作の完了時における前記先端部の位置及び姿勢を基準とし、前記相対指令情報に従って前記先端部を移動させるように前記多関節アームを制御する補正制御部と、を備えるロボットシステム。
【請求項２】
前記動作プログラムは、前記補正対象区間を示す区間指定情報を含み、
前記相対情報取得部は、前記区間指定情報に基づいて前記相対指令情報を取得する、請求項１記載のロボットシステム。
【請求項３】
前記補正制御部による制御に応じた前記多関節アームの動作の完了時における前記先端部の位置及び姿勢を、前記動作プログラムに従った位置及び姿勢に移行させるように前記多関節アームを制御する復帰制御部を更に備える、請求項１又は２記載のロボットシステム。
【請求項４】
前記通常制御部は、前記動作プログラムの途中で前記先端部の移動を一時停止させるように前記多関節アームを制御し、
前記力ガイド制御部は、前記ガイド操作に応じて前記先端部を移動させるように前記多関節アームを制御することを、前記先端部の移動が一時停止した状態にて開始する、請求項１〜３のいずれか一項記載のロボットシステム。
【請求項５】
前記動作プログラムは、前記先端部の移動を一時停止させるタイミングを定めるタイミング指定情報を含み、
前記通常制御部は、前記タイミング指定情報により定められる前記タイミングに従って前記先端部の移動を一時停止させるように前記多関節アームを制御する、請求項４記載のロボットシステム。
【請求項６】
前記力ガイド制御部は、前記ガイド操作に応じて前記先端部を移動させる際に、前記先端部の可動範囲を制限し、
前記通常制御部は、前記補正対象区間の始点における前記先端部の目標位置及び目標姿勢を前記可動範囲に含む位置及び姿勢にて前記先端部の移動を一時停止させるように多関節アームを制御する、請求項４又は５記載のロボットシステム。
【請求項７】
前記力ガイド制御部は、前記ガイド操作に応じて前記先端部を移動させる際に、前記先端部の可動範囲を制限するように前記多関節アームを制御する、請求項１〜５のいずれか一項記載のロボットシステム。
【請求項８】
前記力ガイド制御部は、前記ガイド操作に応じて前記先端部を移動させる際に、前記先端部の移動の自由度を制限するように前記多関節アームを制御する、請求項１〜７のいずれか一項記載のロボットシステム。
【請求項９】
前記補正制御部は、前記相対指令情報に従って前記先端部を移動させるように前記多関節アームを制御することを、作業者が入力する再開指令信号に応じて開始する、請求項１〜８のいずれか一項記載のロボットシステム。
【請求項１０】
前記力ガイド制御部は、前記ガイド操作に応じて前記先端部を移動させるように前記多関節アームを制御することを、作業者が入力するガイドオン指令信号に応じて開始する、請求項１〜９のいずれか一項記載のロボットシステム。
【請求項１１】
前記通常制御部は、前記動作プログラムの途中で前記先端部の移動を一時停止させるように前記多関節アームを制御することを、作業者が入力する停止指令信号に応じて実行する、請求項１〜１０のいずれか一項記載のロボットシステム。
【請求項１２】
前記補正制御部は、前記相対指令情報に従って前記先端部を移動させるように前記多関節アームを制御することを、前記ロボットへの接触により入力される再開指令信号に応じて開始する、請求項９記載のロボットシステム。
【請求項１３】
前記通常制御部による制御に応じた前記ロボットの動作に抗する抵抗力の増加に応じて、当該抵抗力に抗う動作を止めるように前記多関節アームを制御する非常制御部を更に備える、請求項１〜１２のいずれか一項記載のロボットシステム。
【請求項１４】
前記ロボットは複数の関節を含み、
力ガイド制御部は、前記ガイド操作に応じて前記先端部を移動させるように前記多関節アームを制御することを、複数の関節に作用するトルクに関する情報に基づいて実行する、請求項１〜１３のいずれか一項記載のロボットシステム。
【請求項１５】
先端部と、基部と、前記基部に対する前記先端部の位置及び姿勢を調節する多関節アームとを有するロボットの、前記基部に対する前記先端部の目標位置及び目標姿勢の経時的推移を定める動作プログラムに従って、前記先端部を移動させるように前記多関節アームを制御する通常制御を行うことと、
前記通常制御の途中で、前記ロボットへの外力の付加によるガイド操作に応じて前記先端部を移動させるように前記多関節アームを制御する力ガイド制御を行うことと、
前記動作プログラムに従った前記目標位置及び目標姿勢の推移の途中から開始する補正対象区間について、当該補正対象区間の始点における前記先端部の目標位置及び目標姿勢を基準とした、当該補正対象区間の終点までの前記先端部の目標位置及び目標姿勢を定める相対指令情報を取得することと、
前記力ガイド制御に応じた前記多関節アームの動作の完了時における前記先端部の位置及び姿勢を基準とし、前記相対指令情報に従って前記先端部を移動させるように前記多関節アームを制御する補正制御を行うことと、を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ロボットシステム及び制御方法に関する。
【背景技術】
【０００２】
特許文献１には、ロボットが予め登録された作業プログラムに基づく再生動作の途中で停止する第１段階と、ロボットのダイレクト操作を許可する第２段階と、ダイレクト操作によりロボットを誘導動作させる第３段階と、ロボットのダイレクト操作を禁止する第４段階と、ロボットが作業プログラムに基づく再生動作を継続起動する第５段階からなるロボット誘導方法が開示されている。また、第３段階でいずれかの教示点の位置が修正された場合、第５段階におけるロボットの動作は、修正後の当該教示点と、未修正の次の教示点との間を直線補間した動作となることが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−８２１８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、人とロボットとの協働作業における人の負担軽減に有効なロボットシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本開示の一側面に係るロボットシステムは、先端部と、基部と、基部に対する先端部の位置及び姿勢を調節する多関節アームとを有するロボットと、基部に対する先端部の目標位置及び目標姿勢の経時的推移を定める動作プログラムに従って、先端部を移動させるように多関節アームを制御する通常制御部と、通常制御部による制御の途中で、ロボットへの外力の付加によるガイド操作に応じて先端部を移動させるように多関節アームを制御する力ガイド制御部と、動作プログラムに従った目標位置及び目標姿勢の推移の途中から開始する補正対象区間について、当該補正対象区間の始点における先端部の目標位置及び目標姿勢を基準とした、当該補正対象区間の終点までの先端部の目標位置及び目標姿勢を定める相対指令情報を取得する相対情報取得部と、力ガイド制御部による制御に応じた多関節アームの動作の完了時における先端部の位置及び姿勢を基準とし、相対指令情報に従って先端部を移動させるように多関節アームを制御する補正制御部と、を備える。
【０００６】
本開示の他の側面に係る制御方法は、先端部と、基部と、基部に対する先端部の位置及び姿勢を調節する多関節アームとを有するロボットの、基部に対する先端部の目標位置及び目標姿勢の経時的推移を定める動作プログラムに従って、先端部を移動させるように多関節アームを制御する通常制御を行うことと、通常制御の途中で、ロボットへの外力の付加によるガイド操作に応じて先端部を移動させるように多関節アームを制御する力ガイド制御を行うことと、動作プログラムに従った目標位置及び目標姿勢の推移の途中から開始する補正対象区間について、当該補正対象区間の始点における先端部の目標位置及び目標姿勢を基準とした、当該補正対象区間の終点までの先端部の目標位置及び目標姿勢を定める相対指令情報を取得することと、力ガイド制御に応じた多関節アームの動作の完了時における先端部の位置及び姿勢を基準とし、相対指令情報に従って先端部を移動させるように多関節アームを制御する補正制御を行うことと、を含む。
【発明の効果】
【０００７】
本開示によれば、人とロボットとの協働作業における人の負担軽減に有効なロボットシステムを提供することができる。
【図面の簡単な説明】
【０００８】
【図１】ロボットシステムの全体構成を示す模式図である。
【図２】動作プログラムに従うロボットの動作を例示する模式図である。
【図３】動作プログラムを例示するテーブルである。
【図４】コントローラのハードウェア構成を例示するブロック図である。
【図５】ロボットの制御手順を例示するフローチャートである。
【図６】通常制御の手順を例示するフローチャートである。
【図７】退避制御の手順を例示するフローチャートである。
【図８】退避制御の手順を例示するフローチャートである。
【図９】力ガイド制御の手順を例示するフローチャートである。
【図１０】補正制御の手順を例示するフローチャートである。
【図１１】復帰制御の手順を例示するフローチャートである。
【図１２】通常制御、力ガイド制御及び補正制御に従ったロボットの動作を例示する模式図である。
【図１３】退避制御に従ったロボットの動作を例示する模式図である。
【図１４】停止位置と、補正対象区間との関係を示す模式図である。
【発明を実施するための形態】
【０００９】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【００１０】
〔ロボットシステム〕
図１に示すロボットシステム１は、ロボット２と作業者との協働を前提とする人協働型のシステムである。ロボットシステム１は、ロボット２と、コントローラ１００とを有する。
【００１１】
ロボット２は、例えば６軸の垂直多関節ロボットであり、基部３と、先端部４と、多関節アーム１０と、ツール５と、入力スイッチ６とを有する。基部３は、ロボット２用の作業エリアにおいて、例えば床面に設置されている。
【００１２】
多関節アーム１０は、基部３及び先端部４を接続する。多関節アーム１０は複数の関節を有し、当該複数の関節の角度を変更することで基部３に対する先端部４の位置及び姿勢を調節する。例えば多関節アーム１０は、旋回部１１と、下アーム１２と、上アーム１３と、手首部１６と、アクチュエータ２１，２２，２３，２４，２５，２６と、力センサ３１，３２，３３，３４，３５，３６とを有する。
【００１３】
旋回部１１は、鉛直な軸線Ａｘ１まわりに旋回可能となるように、基部３の上部に設けられている。すなわち多関節アーム１０は、軸線Ａｘ１まわりに旋回部１１を旋回可能とする関節４１を有する。
【００１４】
下アーム１２は、軸線Ａｘ１に交差（例えば直交）する軸線Ａｘ２まわりに揺動可能となるように下アーム１２に接続されている。すなわち多関節アーム１０は、軸線Ａｘ２まわりに下アーム１２を揺動可能とする関節４２を有する。なお、ここでの交差とは、所謂立体交差のように、互いにねじれの関係にある場合も含む。以下においても同様である。
【００１５】
上アーム１３は、軸線Ａｘ１に交差する軸線Ａｘ３まわりに揺動可能となるように、下アーム１２の端部に接続されている。すなわち多関節アーム１０は、軸線Ａｘ３まわりに上アーム１３を揺動可能とする関節４３を有する。軸線Ａｘ３は軸線Ａｘ２に平行であってもよい。
【００１６】
上アーム１３の先端部１５は、上アーム１３の中心に沿う軸線Ａｘ４まわりに旋回可能となっている。換言すると、上アーム１３の先端部１５は、上アーム１３の基端部１４に対して旋回可能である。すなわち多関節アーム１０は、軸線Ａｘ４まわりに上アーム１３の先端部１５を旋回可能とする関節４４を有する。
【００１７】
手首部１６は、軸線Ａｘ４に交差（例えば直交）する軸線Ａｘ５まわりに揺動可能となるように上アーム１３の先端部１５に接続されている。すなわち多関節アーム１０は、軸線Ａｘ５まわりに手首部１６を揺動可能とする関節４５を有する。
【００１８】
先端部４は、手首部１６の中心に沿う軸線Ａｘ６まわりに旋回可能となるように、手首部１６の先端部に接続されている。すなわち多関節アーム１０は、軸線Ａｘ６まわりに先端部４を旋回可能とする関節４６を有する。
【００１９】
アクチュエータ２１，２２，２３，２４，２５，２６は、例えば電動モータを動力源とし、多関節アーム１０の複数の可動部をそれぞれ駆動する。例えばアクチュエータ２１は、軸線Ａｘ１まわりに旋回部１１を旋回させ、アクチュエータ２２は軸線Ａｘ２まわりに下アーム１２を揺動させ、アクチュエータ２３は軸線Ａｘ３まわりに上アーム１３を搖動させ、アクチュエータ２４は軸線Ａｘ４まわりに上アーム１３の先端部１５を旋回させ、アクチュエータ２５は軸線Ａｘ５まわりに手首部１６を揺動させ、アクチュエータ２６は軸線Ａｘ６まわりに先端部４を旋回させる。すなわちアクチュエータ２１〜２６は、関節４１〜４６をそれぞれ駆動する。力センサ３１〜３６は、例えばひずみゲージ式等のトルクセンサであり、関節４１〜４６に作用するトルクをそれぞれ検出する。
【００２０】
ツール５は、先端部４に装着されており、ロボット２による作業に用いられる。ツール５の具体的構成は、ロボット２による作業内容によって異なる。ツール５の具体例としては、ワークを把持するためのハンド、ネジ締め用のドライバ、溶接トーチ等が挙げられる。図においては、ツール５が、ワークを把持するためのハンドである場合を例示している。
【００２１】
入力スイッチ６は、ロボット２と協働作業を行う作業者が、ロボット２に対して各種信号を入力するためのスイッチである。入力スイッチ６により入力可能な信号の具体例としては、後述のガイドオン信号、停止指令信号、再開指令信号等が挙げられる。
【００２２】
なお、上述したロボット２の構成はあくまで一例である。ロボット２は、基部３に対する先端部４の位置及び姿勢を調節し得る限りいかに構成されていてもよい。例えばロボット２は、上記６軸の垂直多関節ロボットに冗長軸を追加した７軸のロボットであってもよい。また、ロボット２は所謂スカラー型のロボットであってもよい。
【００２３】
コントローラ１００は、基部３に対する先端部４の目標位置及び目標姿勢の経時的推移を定める動作プログラムに従って、先端部４を移動させるように多関節アーム１０を制御する通常制御を行うことと、通常制御の途中で、ロボット２への外力の付加によるガイド操作に応じて先端部４を移動させるように多関節アーム１０を制御する力ガイド制御を行うことと、動作プログラムに従った目標位置及び目標姿勢の推移の途中から開始する補正対象区間について、当該補正対象区間の始点における先端部４の目標位置及び目標姿勢を基準とした、当該補正対象区間の終点までの先端部４の目標位置及び目標姿勢を定める相対指令情報を取得することと、力ガイド制御に応じた多関節アーム１０の動作の完了時における先端部４の位置及び姿勢を基準とし、相対指令情報に従って先端部４を移動させるように多関節アーム１０を制御する補正制御を行うことと、を実行するように構成されている。
【００２４】
例えばコントローラ１００は、機能上の構成（以下、「機能モジュール」という。）として、動作プログラム保持部１１１と、通常制御部１１２と、力ガイド制御部１１４と、相対情報取得部１１５と、補正制御部１１６と、復帰制御部１１７と、非常制御部１１３とを有する。
【００２５】
動作プログラム保持部１１１は、上記動作プログラムを記憶する。動作プログラムは、時系列に並ぶ複数の動作命令を含む。動作命令は、多関節アーム１０の動作命令と、ツール５の動作命令とを含む。多関節アーム１０の動作命令は、基部３に対する先端部４の目標位置及び目標姿勢を定める移動命令を含む。なお、少なくとも一部の移動命令は、当該移動命令による先端部４の位置及び姿勢の相対的な変化を定めるように記述されていてもよい。以下、このように記述された命令を「相対命令」という。一方、基部３に対する先端部４の目標位置及び目標姿勢を定めるように記述された命令を「絶対命令」という。相対命令単独では、基部３に対する先端部４の目標位置及び目標姿勢は定まらないが、少なくとも一つの絶対命令が動作プログラムに含まれていれば、絶対命令の目標位置及び目標姿勢を基準にして、相対命令においても基部３に対する先端部４の目標位置及び目標姿勢が定まる。ツール５がハンドである場合、ツール５の動作命令は、ワークの把持命令と、ワークの解放命令とを含む。動作プログラムは、補正対象区間を示す区間指定情報を含んでもよい。
【００２６】
図２は、ロボット２の動作を例示する模式図である。図２が例示する動作は、エリアＷＡ１にパーツ９２が配置され、エリアＷＡ２にパーツ９３が配置された状態において、エリアＷＡ２からエリアＷＡ１にパーツ９３を搬送することと、搬送したパーツ９３をパーツ９２の孔部９２ａに挿入することとを含む。点Ｐ１は、パーツ９３を把持する際のツール５の位置である。点Ｐ９は、孔部９２ａへのパーツ９３の挿入を開始する際のツール５の位置である。点Ｐ１０は、孔部９２ａへのパーツ９３の挿入を完了する際のツール５の位置である。点Ｐ２〜Ｐ８は、点Ｐ１〜点Ｐ９までの間におけるツール５の経由点の位置である。
【００２７】
図３は、図２の動作をロボット２に実行させるための動作プログラムを例示するテーブルである。命令００１は、ツール５を点Ｐ１に移動させるための命令である。この移動命令は、ツール５を点Ｐ１に配置する際の先端部４の目標位置及び目標姿勢を含む。命令００２は、ツール５にパーツ９３を把持させる命令である。命令００３〜０１１は、ツール５を点Ｐ２〜Ｐ１０に順次移動させるための命令であり、いずれも移動先の点にツール５を配置する際の先端部４の目標位置及び目標姿勢を含む。命令０１２は、ツール５にパーツ９３を解放させる命令である。命令０１３は、パーツ９３を解放したツール５を点Ｐ９に移動させるための命令であり、点Ｐ９にツール５を配置する際の先端部４の目標位置及び目標姿勢を含む。命令０１４以降には、ツール５をエリアＷＡ２側に戻すための命令が後続する。図３における補正対象フラグは、上述した区間指定情報に相当する。補正対象フラグは、命令ごとに設定されており、各命令に応じた移動区間が補正対象区間であるか否かを示している。例えば、「０」は補正対象区間ではないことを示し、「１」は補正対象区間であることを示している。以下、必要に応じて図２及び図３を参照し、説明内容の具体例を示す。
【００２８】
通常制御部１１２は、基部３に対する先端部４の目標位置及び目標姿勢の経時的推移を定める動作プログラムに従って、先端部４を移動させるように多関節アーム１０を制御する。以下、この制御を「通常制御」という。例えば通常制御部１１２は、基部３に対する先端部４の位置及び姿勢を、動作プログラムの目標位置及び目標姿勢に移動させるための関節４１〜４６の目標動作角度を導出し、これに関節４１〜４６の動作角度を追従させるように多関節アーム１０を制御する。通常制御部１１２は、動作プログラムの途中で先端部４の移動を一時停止させるように多関節アーム１０を制御してもよい。
【００２９】
上記動作プログラムが、先端部４の移動を一時停止させるタイミングを定めるタイミング指定情報を含んでいる場合に、通常制御部１１２は、当該タイミング指定情報により定められるタイミングに従って先端部４の移動を一時停止させるように多関節アーム１０を制御してもよい。例えば通常制御部１１２は、上述した区間指定情報をタイミング指定情報として取得し、上記補正対象区間の開始直前に先端部４の移動を一時停止させるように多関節アーム１０を制御する。より具体的に、通常制御部１１２は、図３の補正対象フラグが０から１に切り替わる直前（命令０１０，０１１の間）に先端部４の移動を一時停止させるように多関節アーム１０を制御する。
【００３０】
力ガイド制御部１１４は、通常制御部１１２による制御の途中で、ロボット２への外力の付加によるガイド操作に応じて先端部４を移動させるように多関節アーム１０を制御する。以下、この制御を「力ガイド制御」という。人協働型のロボットシステム１において、ガイド操作用の外力は、作業者がロボット２に触れることで付加される。ここでの「外力」は力及びモーメントの両方を含み、「移動」は位置及び姿勢の少なくとも一方の変更を意味する。
【００３１】
例えば力ガイド制御部１１４は、外力の方向に従って先端部４を移動させるように、先端部４の目標位置及び目標姿勢を導出し、当該目標位置及び目標姿勢に先端部４を移動させるための関節４１〜４６の目標動作角度を導出し、これに関節４１〜４６の動作角度を追従させるように多関節アーム１０を制御する。
【００３２】
力ガイド制御部１１４は、動作プログラムの途中で先端部４の移動が一時停止した状態にて力ガイド制御を開始し、先端部４の移動が一時停止するまでは力ガイド制御を禁止してもよい。力ガイド制御部１１４は、力ガイド制御において、先端部４の可動範囲を制限するように多関節アーム１０を制御してもよい。例えば力ガイド制御部１１４は、先端部４の位置及び姿勢の可動範囲を制限してもよいし、関節４１〜４６の可動範囲を制限してもよい。また、力ガイド制御部１１４は、ガイド操作に応じて先端部４を移動させる時間を制限することで、先端部４の位置及び姿勢の可動範囲を制限してもよい。
【００３３】
力ガイド制御部１１４は、力ガイド制御において、先端部４の移動の自由度を制限するように多関節アーム１０を制御してもよい。自由度の制限の具体例としては、所定の軸線まわりの先端部４の姿勢変更を禁止すること、所定の軸線に沿った先端部４の移動を禁止すること、先端部４の姿勢の変更を禁止し、先端部４の位置の変更のみを許可すること等が挙げられる。
【００３４】
力ガイド制御部１１４は、作業者が入力するガイドオン指令信号に応じて力ガイド制御を開始し、ガイドオン指令信号が入力されるまでは力ガイド制御を禁止してもよい。例えば力ガイド制御部１１４は、先端部４の移動が一時停止している期間の入力スイッチ６の状態をガイドオン指令信号として取得し、入力スイッチ６がオンとなるのに応じて力ガイド制御を開始してもよい。なお、ガイドオン指令信号は、入力スイッチ６の状態に限られない。例えば力ガイド制御部１１４は、力センサ３１〜３６による検出結果に基づいて、作業者がロボット２に対して所定の外力付加操作（例えば叩くこと）を行ったことを検出し、これに応じて力ガイド制御を開始してもよい。
【００３５】
力ガイド制御部１１４は、複数の関節４１〜４６に作用するトルクに関する情報に基づいて力ガイド制御を実行してもよい。具体的に、力ガイド制御部１１４は、関節４１〜４６に作用するトルクに基づいて上記外力を導出し、当該外力に応じて先端部４を移動させるように多関節アーム１０を制御してもよい。力ガイド制御部１１４は、関節４１〜４６に作用するトルクに関する情報として、力センサ３１〜３６の検出結果を参照してもよい。力ガイド制御部１１４は、関節４１〜４６に作用するトルクに関する情報として、関節４１〜４６の軸の撓み角（アクチュエータ２１〜２６の回転角、各軸減速比、及び関節４１〜４６の回転角に基づき算出されるねじれ角）の検出結果を参照してもよい。この場合、各関節軸に二つの角度センサが必要となるが、力センサ３１〜３６は不要となる。また、力ガイド制御部１１４は、関節４１〜４６に作用するトルクに関する情報として、アクチュエータ２１〜２６の出力トルクを参照してもよい。アクチュエータ２１〜２６の出力トルクは、アクチュエータ２１〜２６に供給される電流に基づいて導出可能である。
【００３６】
相対情報取得部１１５は、上記補正対象区間の始点における先端部４の目標位置及び目標姿勢を基準とした、当該補正対象区間の終点までの先端部４の目標位置及び目標姿勢を定める相対指令情報を動作プログラムから取得する。例えば相対情報取得部１１５は、動作プログラムの区間指定情報に基づいて相対指令情報を取得する。例えば相対情報取得部１１５は、補正対象フラグが０から１に変わる直前の目標位置及び目標姿勢（例えば図３の命令０１０の目標位置及び目標姿勢）を上記始点における目標位置及び目標姿勢として相対指令情報を取得する。
【００３７】
補正対象区間における動作命令が、上述した「絶対命令」となっている場合、相対情報取得部１１５は、当該動作命令の目標位置及び目標姿勢から、上記始点における目標位置及び目標姿勢を減算した情報を相対指令情報として取得する。補正対象区間における動作命令が、上述した「相対命令」となっている場合、相対情報取得部１１５は、当該動作命令自体を相対指令情報として取得する。
【００３８】
補正制御部１１６は、力ガイド制御に応じた多関節アーム１０の動作の完了時における先端部４の位置及び姿勢（以下、「力ガイド制御後の位置及び姿勢」という。）を基準とし、相対情報取得部１１５が取得した相対指令情報に従って先端部４を移動させるように多関節アーム１０を制御する。以下、この制御を「補正制御」という。
【００３９】
補正制御部１１６は、作業者が入力する再開指令信号に応じて補正制御を開始してもよい。例えば補正制御部１１６は、作業者が入力する再開指令信号に応じて補正制御を開始してもよい。この場合、補正制御部１１６は、ロボット２への接触により入力される再開指令信号に応じて補正制御を開始してもよい。具体的に、補正制御部１１６は、力ガイド制御後の入力スイッチ６の状態を再開指令信号として取得し、入力スイッチ６がオンとなるのに応じて補正制御を開始してもよい。なお、再開指令信号も、入力スイッチ６の状態に限られない。例えば補正制御部１１６は、力センサ３１〜３６による検出結果に基づいて、作業者がロボット２に対して所定の外力付加操作（例えば叩くこと）を行ったことを検出し、これに応じて補正制御を開始してもよい。
【００４０】
復帰制御部１１７は、補正制御部１１６による制御に応じた多関節アーム１０の動作の完了時における先端部４の位置及び姿勢を、動作プログラムに従った位置及び姿勢に移行させるように多関節アーム１０を制御する。以下、この制御を「復帰制御」という。
【００４１】
非常制御部１１３は、通常制御部１１２、補正制御部１１６及び復帰制御部１１７による制御に応じたロボット２の動作に抗する抵抗力の増加に応じて、当該抵抗力に抗う動作を止めるように多関節アーム１０を制御する。上記抵抗力は、例えばロボット２が作業者に接触した場合に増加し得る。また、上記抵抗力は、ロボット２の構成要素間（例えば下アーム１２と上アーム１３との間）に作業者の腕等が挟まれた場合にも増加し得る。上記抵抗力の増加は、例えば力センサ３１〜３６の検出結果に基づいて検知可能である。上記抵抗力に抗う動作を止めることは、ロボット２の動作を停止させることの他、抵抗力に応じた方向（抵抗力を緩和する方向）にロボット２を動作させること（以下、これを「退避動作」という。）を含む。
【００４２】
図４は、コントローラ１００のハードウェア構成を例示するブロック図である。図４に示すように、コントローラ１００は回路１２０を含む。回路１２０は、少なくとも一つのプロセッサ１２１と、メモリ１２２と、ストレージ１２３と、ドライバ１２４と、入出力ポート１２５と、を含む。ストレージ１２３は、コンピュータによって読み取り可能な不揮発型の記憶媒体（例えばハードディスク又はフラッシュメモリ）である。ストレージ１２３は、コントローラ１００の各機能モジュールを構成するためのプログラムの記憶領域と、上記動作プログラム保持部１１１に割り当てられる記憶領域とを含む。メモリ１２２は、ストレージ１２３からロードしたプログラム及びプロセッサ１２１による演算結果等を一時的に記憶する。プロセッサ１２１は、メモリ１２２と協働して上記プログラムを実行することで、コントローラ１００の各機能モジュールを構成する。ドライバ１２４は、プロセッサ１２１からの指令に応じてアクチュエータ２１〜２６のモータに駆動電力を出力する。ドライバ１２４は、プロセッサ１２１からの指令に応じてアクチュエータ２１〜２６に駆動電力を出力する。入出力ポート１２５は、プロセッサ１２１からの指令に応じて、力センサ３１〜３６との間で電気信号の入出力を行う。
【００４３】
なお、回路１２０は、必ずしもプログラムにより各機能を構成するものに限られない。例えば、回路１２０は、専用の論理回路又はこれを集積したＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により少なくとも一部の機能を構成してもよい。
【００４４】
〔制御手順〕
続いて、ロボット２の制御方法の一例として、コントローラ１００が実行する制御手順を説明する。この制御手順は、基部３に対する先端部４の目標位置及び目標姿勢の経時的推移を定める動作プログラムに従って、先端部４を移動させるように多関節アーム１０を制御する通常制御を行うことと、通常制御の途中で、ロボット２への外力の付加によるガイド操作に応じて先端部４を移動させるように多関節アーム１０を制御する力ガイド制御を行うことと、動作プログラムに従った目標位置及び目標姿勢の推移の途中から開始する補正対象区間について、当該補正対象区間の始点における先端部４の目標位置及び目標姿勢を基準とした、当該補正対象区間の終点までの先端部４の目標位置及び目標姿勢を定める相対指令情報を取得することと、力ガイド制御に応じた多関節アーム１０の動作の完了時における先端部４の位置及び姿勢を基準とし、相対指令情報に従って先端部４を移動させるように多関節アーム１０を制御する補正制御を行うことと、を含む。
【００４５】
図５に示すように、コントローラ１００は、ステップＳ０１，Ｓ０２，Ｓ０３，Ｓ０４を実行する。ステップＳ０１では、通常制御部１１２が、上記補正対象区間の開始直前まで通常制御を実行し、その後先端部４の移動を一時停止させるように多関節アーム１０を制御する。図１２の（ａ）は、ツール５を点Ｐ９に配置した状態で先端部４の移動が一時停止した状態を例示している。ステップＳ０２では、力ガイド制御部１１４が上記力ガイド制御を実行する。図１２の（ｂ）は、外力ＴＦ１の付加によるガイド操作に応じて、先端部４が点Ｐ９から点Ｐ２１に移動した状態を例示している。ステップＳ０３では、相対情報取得部１１５が上記相対指令情報を取得し、補正制御部１１６が上記補正制御を実行する。
【００４６】
図１２の（ｃ）の例において、相対情報取得部１１５は、ツール５を点Ｐ９から点Ｐ１０まで移動させ、更に点Ｐ１０から点Ｐ９に移動させるための相対指令ＩＭ１の情報を取得する。例えば、命令０１１が上記絶対指令で記述されている場合、相対情報取得部１１５は、命令０１１の目標位置及び目標姿勢から、点Ｐ９における目標位置及び目標姿勢を減算した情報を相対指令ＩＭ１の情報として取得する。命令０１１が上記相対指令で記述されている場合、相対情報取得部１１５は、命令０１１自体を相対指令ＩＭ１の情報として取得する。
【００４７】
ステップＳ０４では、復帰制御部１１７が上記復帰制御を実行する。図１２の（ｃ）の例において、復帰制御部１１７は、点Ｐ２１に対応する位置及び姿勢を、点Ｐ８に対応する位置及び姿勢に移行させるように多関節アーム１０を制御する。
【００４８】
次に、コントローラ１００は、ステップＳ０５を実行する。ステップＳ０５では、通常制御部１１２がロボット２の制御の終了指令の有無を確認する。ステップＳ０５において終了指令がないと判定した場合、コントローラ１００は処理をステップＳ０１に戻す。以後、通常制御、力ガイド制御及び補正制御が繰り返される。ステップＳ０５において終了指令があると判定した場合、コントローラ１００は処理を完了する。
【００４９】
（通常制御手順）
続いて、ステップＳ０１における通常制御の具体的手順を例示する。図６に示すように、コントローラ１００は、まずステップＳ１１，Ｓ１２，Ｓ１３を実行する。ステップＳ１１では、通常制御部１１２が動作プログラムから動作命令を取得する。例えば通常制御部１１２は、動作プログラム中において未実行の動作命令のうち、最も番号の若い動作命令を取得する。ステップＳ１２では、通常制御部１１２が、動作命令により示される目標位置及び目標姿勢に先端部４を移動させるための関節角度目標値（関節４１〜４６の動作角度目標値）を逆運動学演算により導出する。動作命令を複数の制御周期に分けて実行する場合、通常制御部１１２は、例えば線形補間等により制御周期ごとの関節角度目標値を導出する。ステップＳ１３では、通常制御部１１２が最初の制御周期の関節角度目標値を選択する。
【００５０】
次に、コントローラ１００は、ステップＳ１４，Ｓ１５を実行する。ステップＳ１４では、通常制御部１１２が、選択中の関節角度目標値に従って、アクチュエータ２１〜２６により関節４１〜４６をそれぞれ駆動するように多関節アーム１０を制御する。ステップＳ１５では、非常制御部１１３が、抵抗力の増加の有無を確認する。
【００５１】
ステップＳ１５において抵抗力が増加していると判定した場合、コントローラ１００は、ステップＳ１６を実行する。ステップＳ１６では、非常制御部１１３が退避制御を実行する。退避制御の具体的内容については後述する。
【００５２】
次に、コントローラ１００は、ステップＳ１７を実行する。ステップＳ１６において抵抗力が増加していないと判定した場合、コントローラ１００は、ステップＳ１６を実行することなくステップＳ１７を実行する。ステップＳ１７では、通常制御部１１２が、動作命令に従った先端部４の移動が完了したか否かを確認する。例えば、通常制御部１１２は、当該動作命令に対応する全ての制御周期の実行が完了したか否かを確認する。
【００５３】
ステップＳ１７において全ての制御周期の実行が完了していないと判定した場合、コントローラ１００は、ステップＳ１８を実行する。ステップＳ１８では、通常制御部１１２が、次の制御周期の関節角度目標値を選択する。その後、コントローラ１００は処理をステップＳ１４に戻す。以後、抵抗力の増加を監視しつつ、動作命令に従って先端部４を移動させる制御が繰り返される。
【００５４】
ステップＳ１７において全ての制御周期の実行が完了したと判定した場合、コントローラ１００は、ステップＳ１９を実行する。ステップＳ１９では、先端部４がガイド操作の待機位置に到達したか否かを通常制御部１１２が確認する。ガイド操作の待機位置は、例えば上記補正対象区間の開始直前における先端部４の目標位置及び目標姿勢（例えば図３の命令０１０の目標位置及び目標姿勢）である。
【００５５】
ステップＳ１９において先端部４が待機位置に到達していないと判定した場合、コントローラ１００は処理をステップＳ１１に戻す。以後、待機位置に到達するまでは通常制御が繰り返される。ステップＳ１９において先端部４が待機位置に到達したと判定した場合、コントローラ１００は、通常制御を完了する。これにより、先端部４の移動が一時停止する。なお、上記待機位置は、必ずしも補正対象区間の開始直前における先端部４の目標位置及び目標姿勢でなくてもよい。例えば上記待機位置は、補正対象区間よりも二つ以上前の動作命令における先端部４の目標位置及び目標姿勢であってもよい。この場合、上記待機位置は、補正対象区間の始点における先端部４の目標位置及び目標姿勢を可動範囲に含む位置及び姿勢となるように設定されていてもよい。例えば、図１４においては、補正対象区間よりも三つ前の命令００８における先端部４の目標位置及び目標姿勢（点Ｐ７に対応する位置）が上記待機位置となっており、補正対象区間の始点における先端部４の目標位置及び目標姿勢（点Ｐ９に対応する位置）は上記待機位置からの可動範囲ＭＡ１内に含まれている。
【００５６】
また、通常制御部１１２は、先端部４の移動を一時停止させるように多関節アーム１０を制御することを、作業者が入力する停止指令信号に応じて実行してもよい。この場合、通常制御部１１２は、入力スイッチ６の状態を停止指令信号として取得し、入力スイッチ６がオンとなるのに応じて先端部４の移動を一時停止させるように多関節アーム１０を制御してもよい。
【００５７】
続いて、ステップＳ１６における退避制御の具体的手順を例示する。図７に示すように、コントローラ１００は、まずステップＳ２１，Ｓ２２，Ｓ２３を実行する。ステップＳ２１では、非常制御部１１３が、抵抗力を緩和するための関節角度目標値を導出する。以下、この関節角度目標値に対応するロボット２の姿勢を「退避姿勢」という。例えば、非常制御部１１３は、力センサ３１〜３６により検出されるトルクを緩和するように関節４１〜４６の角度目標値を導出する。退避制御を複数の制御周期に分けて実行する場合、非常制御部１１３は、例えば線形補間等により制御周期ごとの関節角度目標値を導出する。ステップＳ２２では、非常制御部１１３が、最初の制御周期の関節角度目標値を選択する。ステップＳ２３では、非常制御部１１３が、選択中の関節角度目標値に従って、アクチュエータ２１〜２６により関節４１〜４６をそれぞれ駆動するように多関節アーム１０を制御する。
【００５８】
次に、コントローラ１００は、ステップＳ２４を実行する。ステップＳ２４では、ロボット２の姿勢が退避姿勢となったか否かを非常制御部１１３が確認する。ステップＳ２４においてロボット２の姿勢が退避姿勢となっていないと判定した場合、ステップＳ２５を実行する。ステップＳ２５では、通常制御部１１２が、次の制御周期の関節角度目標値を選択する。その後、コントローラ１００は処理をステップＳ２３に戻す。以後、ロボット２の姿勢が退避姿勢となるまでロボット２の姿勢変更が繰り返される。
【００５９】
図１３の（ａ）は、点Ｐ７から点Ｐ８にツール５を移動させる過程で、作業者の腕とロボット２とが接触した場合を例示している。この場合、力センサ３１〜３６により検出されるトルクを緩和するように関節４１〜４６の角度目標値が変更されることにより、ロボット２の退避姿勢は作業者の腕から遠ざかるように設定される（図１３の（ｂ）参照）。
【００６０】
ステップＳ２４においてロボット２の姿勢が退避姿勢となっていると判定した場合、コントローラ１００はステップＳ２６を実行する。ステップＳ２６では、非常制御部１１３が、再開指令の入力を待機する。例えば非常制御部１１３は、入力スイッチ６の状態を再開指令信号として取得し、入力スイッチ６がオンとなるのを待機する。
【００６１】
次に、コントローラ１００は、図８に示すようにステップＳ３１，Ｓ３２，Ｓ３３，Ｓ３４，Ｓ３５を実行する。ステップＳ３１では、非常制御部１１３が、復帰目標位置を設定する。例えば、非常制御部１１３は、退避姿勢へのロボット２の姿勢の移行を開始する直前における先端部４の位置及び姿勢を復帰目標位置とする。ステップＳ３２では、非常制御部１１３が、復帰目標位置に先端部４を移動させるための関節角度目標値（関節４１〜４６の動作角度目標値）を逆運動学演算により導出する。復帰目標位置までの復帰を複数の制御周期に分けて実行する場合、非常制御部１１３は、例えば線形補間等により制御周期ごとの関節角度目標値を導出する。ステップＳ３３では、非常制御部１１３が最初の制御周期の関節角度目標値を選択する。ステップＳ３４では、非常制御部１１３が、選択中の関節角度目標値に従って、アクチュエータ２１〜２６により関節４１〜４６をそれぞれ駆動するように多関節アーム１０を制御する。ステップＳ３５では、非常制御部１１３が、抵抗力の増加の有無を確認する。
【００６２】
ステップＳ３５において抵抗力が増加していると判定した場合、コントローラ１００は処理をステップＳ２１に戻す。ステップＳ３５において抵抗力が増加していないと判定した場合、コントローラ１００はステップＳ３６を実行する。ステップＳ３６では、非常制御部１１３が、復帰目標位置までの先端部４の移動が完了したか否かを確認する。
【００６３】
ステップＳ３６において先端部４の移動が完了していないと判定した場合、コントローラ１００はステップＳ３７を実行する。ステップＳ３７では、非常制御部１１３が次の制御周期の関節角度目標値を選択する。その後、コントローラ１００は処理をステップＳ３４に戻す。以後、復帰目標位置までの先端部４の移動が完了するまで先端部４の移動が繰り返される。ステップＳ３６において先端部４の移動が完了したと判定した場合、コントローラ１００は退避制御を完了する。
【００６４】
（力ガイド制御手順）
続いて、ステップＳ０２における力ガイド制御の具体的手順を例示する。図９に示すように、コントローラ１００は、ステップＳ４１を実行する。ステップＳ４１では、力ガイド制御部１１４が、上記ガイドオン指令の入力を待機する。例えば力ガイド制御部１１４は、先端部４の移動が一時停止している期間の入力スイッチ６の状態をガイドオン指令信号として取得し、入力スイッチ６がオンとなるのを待機する。
【００６５】
次に、コントローラ１００は、ステップＳ４２，Ｓ４３，Ｓ４４，Ｓ４５を実行する。ステップＳ４２では、力ガイド制御部１１４が、ガイド操作として入力された外力の情報を取得する。例えば力ガイド制御部１１４は、例えば力センサ３１〜３６の検出結果を取得する。ステップＳ４３では、力ガイド制御部１１４が、外力に応じた先端部４の目標位置及び目標姿勢（以下、「ガイド目標位置」という。）を導出する。例えば力ガイド制御部１１４は、力センサ３１〜３６の検出結果に基づいて、先端部４に作用する力及びモーメントを導出し、これに応じて先端部４の目標位置及び目標姿勢を導出する。ステップＳ４４では、力ガイド制御部１１４が、ガイド目標位置に先端部４を移動させるための関節角度目標値（関節４１〜４６の動作角度目標値）を逆運動学演算により導出する。ステップＳ４５では、力ガイド制御部１１４が、関節角度目標値に従って、アクチュエータ２１〜２６により関節４１〜４６をそれぞれ駆動するように多関節アーム１０を制御する。
【００６６】
次に、コントローラ１００はステップＳ４６を実行する。ステップＳ４６では、補正制御部１１６が、上記再開指令信号の入力の有無を確認する。具体的に、補正制御部１１６は、力ガイド制御後の入力スイッチ６の状態を再開指令信号として取得し、入力スイッチ６がオンであるか否かを確認する。ステップＳ４６において再開指令信号が入力されていないと判定した場合、コントローラ１００は処理をステップＳ４２に戻す。以後、再開指令信号が入力されるまで、力ガイド制御が繰り返される。ステップＳ４６において再開指令信号が入力されていると判定した場合、コントローラ１００は力ガイド制御を完了する。
【００６７】
（補正制御手順）
続いて、ステップＳ０３における補正制御の具体的手順を例示する。図１０に示すように、コントローラ１００は、まずステップＳ５１，Ｓ５２を実行する。ステップＳ５１では、相対情報取得部１１５が、相対指令情報を取得する。例えば、命令０１１が上記絶対指令で記述されている場合、相対情報取得部１１５は、命令０１１の目標位置及び目標姿勢から、点Ｐ９における目標位置及び目標姿勢を減算した情報を相対指令ＩＭ１の情報として取得する。命令０１１が上記相対指令で記述されている場合、相対情報取得部１１５は、命令０１１次隊を相対指令ＩＭ１の情報として取得する。ステップＳ５２では、補正制御部１１６が、先端部４の現在の位置及び姿勢を基準とし、相対指令情報に従った場合の先端部４の目標位置及び目標姿勢（以下、「補正目標位置」という。）を導出する。相対指令情報に対応する動作指令が、補正対象区間の最初の動作指令である場合、先端部４の現在の位置及び姿勢は、力ガイド制御に応じたロボット２の動作の完了時における先端部４の位置及び姿勢に相当する。
【００６８】
次に、コントローラ１００は、ステップＳ５３，Ｓ５４，Ｓ５５を実行する。ステップＳ５３では、補正制御部１１６が、補正目標位置に先端部４を移動させるための関節角度目標値（関節４１〜４６の動作角度目標値）を逆運動学演算により導出する。補正目標位置までの移動を複数の制御周期に分けて実行する場合、補正制御部１１６は、例えば線形補間等により制御周期ごとの関節角度目標値を導出する。ステップＳ５４では、補正制御部１１６が、最初の制御周期の関節角度目標値を選択する。ステップＳ５５では、補正制御部１１６が、選択中の関節角度目標値に従って、アクチュエータ２１〜２６により関節４１〜４６をそれぞれ駆動するように多関節アーム１０を制御する。
【００６９】
次に、コントローラ１００は、ステップＳ５６を実行する。ステップＳ５６では、非常制御部１１３が、抵抗力の増加の有無を確認する。抵抗力が増加していると判定した場合、コントローラ１００は、ステップＳ５７を実行する。ステップＳ５７では、ステップＳ１６と同様に、非常制御部１１３が退避制御を実行する。
【００７０】
次に、コントローラ１００は、ステップＳ５８を実行する。ステップＳ５６において抵抗力が増加していないと判定した場合、コントローラ１００は、ステップＳ５７を実行することなくステップＳ５８を実行する。ステップＳ５８では、補正制御部１１６が、補正目標位置までの先端部４の移動が完了したか否かを確認する。例えば、補正制御部１１６は、先端部４を補正目標位置に移動させるための全ての制御周期の実行が完了したか否かを確認する。
【００７１】
ステップＳ５８において先端部４の移動が完了していないと判定した場合、コントローラ１００は、ステップＳ５９を実行する。ステップＳ５９では、補正制御部１１６が、次の制御周期の関節角度目標値を選択する。その後、コントローラ１００は処理をステップＳ５５に戻す。以後、抵抗力の増加を監視しつつ、補正目標位置まで先端部４を移動させる制御が繰り返される。
【００７２】
ステップＳ５８において先端部４の移動が完了していると判定した場合、コントローラ１００は、ステップＳ６１を実行する。補正対象区間の全ての動作命令について補正制御が完了したか否かを補正制御部１１６が確認する。ステップＳ６１において全ての動作命令について補正制御が完了していないと判定した場合、コントローラ１００は処理をステップＳ５１に戻す。以後、補正対象区間の全ての動作命令について補正制御が完了するまでは補正制御が繰り返される。ステップＳ６１において全ての動作命令について補正制御が完了していると判定した場合、コントローラ１００は補正制御を完了する。
【００７３】
（復帰制御手順）
続いて、ステップＳ０４の復帰制御の具体的手順を例示する。図１１に示すように、コントローラ１００は、まずステップＳ７１，Ｓ７２，Ｓ７３，Ｓ７４を実行する。ステップＳ７１では、復帰制御部１１７が、通常制御を再開させるための先端部４の目標位置及び目標姿勢（以下、「復帰目標位置」という。）を設定する。例えば復帰制御部１１７は、補正対象区間の直後の動作命令における先端部４の目標位置及び目標姿勢を復帰目標位置とする。ステップＳ７２では、復帰制御部１１７が、復帰目標位置に先端部４を移動させるための関節角度目標値（関節４１〜４６の動作角度目標値）を逆運動学演算により導出する。復帰目標位置までの移動を複数の制御周期に分けて実行する場合、復帰制御部１１７は、例えば線形補間等により制御周期ごとの関節角度目標値を導出する。ステップＳ７３では、復帰制御部１１７が最初の制御周期の関節角度目標値を選択する。ステップＳ７４では、復帰制御部１１７が、選択中の関節角度目標値に従って、アクチュエータ２１〜２６により関節４１〜４６をそれぞれ駆動するように多関節アーム１０を制御する。
【００７４】
次に、コントローラ１００は、ステップＳ７５を実行する。ステップＳ７５では、非常制御部１１３が、抵抗力の増加の有無を確認する。ステップＳ７５において抵抗力が増加していると判定した場合、コントローラ１００は、ステップＳ７６を実行する。ステップＳ７６では、ステップＳ１６と同様に、非常制御部１１３が退避制御を実行する。
【００７５】
次に、コントローラ１００は、ステップＳ７７を実行する。ステップＳ７５において抵抗力が増加していないと判定した場合、コントローラ１００は、ステップＳ７６を実行することなくステップＳ７７を実行する。ステップＳ７７では、復帰制御部１１７が、復帰目標位置までの先端部４の移動が完了したか否かを確認する。例えば、復帰制御部１１７は、先端部４を復帰目標位置に移動させるための全ての制御周期の実行が完了したか否かを確認する。
【００７６】
ステップＳ７７において先端部４の移動が完了していないと判定した場合、コントローラ１００は、ステップＳ７８を実行する。ステップＳ７８では、復帰制御部１１７が、次の制御周期の関節角度目標値を選択する。その後、コントローラ１００は処理をステップＳ７４に戻す。以後、抵抗力の増加を監視しつつ、復帰目標位置まで先端部４を移動させる制御が繰り返される。ステップＳ７７において先端部４の移動が完了していると判定した場合、コントローラ１００は復帰制御を完了する。
【００７７】
〔本実施形態の効果〕
以上に説明したように、ロボットシステム１は、先端部４と、基部３と、基部３に対する先端部４の位置及び姿勢を調節する多関節アーム１０とを有するロボット２と、基部３に対する先端部４の目標位置及び目標姿勢の経時的推移を定める動作プログラムに従って、先端部４を移動させるように多関節アーム１０を制御する通常制御部１１２と、通常制御部１１２による制御の途中で、ロボット２への外力の付加によるガイド操作に応じて先端部４を移動させるように多関節アーム１０を制御する力ガイド制御部１１４と、動作プログラムに従った目標位置及び目標姿勢の推移の途中から開始する補正対象区間について、当該補正対象区間の始点における先端部４の目標位置及び目標姿勢を基準とした、当該補正対象区間の終点までの先端部４の目標位置及び目標姿勢を定める相対指令情報を取得する相対情報取得部１１５と、力ガイド制御部１１４による制御に応じた多関節アーム１０の動作の完了時における先端部４の位置及び姿勢を基準とし、相対指令情報に従って先端部４を移動させるように多関節アーム１０を制御する補正制御部１１６と、を備える。
【００７８】
動作プログラムに従ってロボット２の作業を高精度に繰り返すためには、ロボット２の作業環境も一定である必要がある。しかしながら、ロボット２の実際の作業環境（以下、「実環境」という。）にはずれが生じる場合もある。例えばワークの配置位置・姿勢にずれが生じる場合がある。これに対し、ロボットシステム１は力ガイド制御部１１４を備えるので、外力の付加により先端部４の位置及び姿勢を実環境に適応させるガイド操作を、ロボット２の作業の実行途中で作業者に実行させることができる。更に、ロボットシステム１は、補正制御部１１６を備えるので、実環境に適応させた先端部４の位置及び姿勢を基準にして、以降の作業をロボットに継続させることができる。従って、ロボットシステム１は、人とロボット２との協働作業における人の負担軽減に有効である。
【００７９】
動作プログラムは、補正対象区間を示す区間指定情報を含み、相対情報取得部１１５は、区間指定情報に基づいて相対指令情報を取得してもよい。この場合、補正制御部による制御の実行対象となる区間を動作プログラム上で予め定めておくことにより、不適切な対象区間の相対指令情報の取得に起因するロボット２の誤作業を防止することができる。
【００８０】
ロボットシステム１は、補正制御部１１６による制御に応じた多関節アーム１０の動作の完了時における先端部４の位置及び姿勢を、動作プログラムに従った位置及び姿勢に移行させるように多関節アーム１０を制御する復帰制御部１１７を更に備えていてもよい。この場合、先端部４の位置及び姿勢の動作プログラムからの乖離が、補正制御部１１６による制御の繰り返しにより拡大し、これに起因してロボット２の作業の信頼性が低下することを抑制することができる。
【００８１】
通常制御部１１２は、動作プログラムの途中で先端部４の移動を一時停止させるように多関節アーム１０を制御し、力ガイド制御部１１４は、ガイド操作に応じて先端部を移動させるように多関節アーム１０を制御することを、先端部４の移動が一時停止した状態にて開始してもよい。この場合、ロボット２の動作を一時停止させることにより、ガイド操作が容易になる。
【００８２】
動作プログラムは、先端部４の移動を一時停止させるタイミングを定めるタイミング指定情報を含み、通常制御部１１２は、タイミング指定情報により定められるタイミングに従って先端部４の移動を一時停止させるように多関節アーム１０を制御してもよい。この場合、一時停止のタイミングを動作プログラム上で予め定めておくことにより、ガイド操作の開始位置を安定化し、作業者の負担をより確実に軽減することができる。
【００８３】
力ガイド制御部１１４は、ガイド操作に応じて先端部４を移動させる際に、先端部４の可動範囲を制限し、通常制御部１１２は、補正対象区間の始点における先端部４の目標位置及び目標姿勢を可動範囲に含む位置及び姿勢にて先端部４の移動を一時停止させるように多関節アーム１０を制御してもよい。この場合、可動範囲の制限により、誤ったガイド操作を抑制することができる。また、相対指令情報の基準となる位置及び姿勢を補正するのに、可動範囲が過小となることを抑制することができる。
【００８４】
力ガイド制御部１１４は、ガイド操作に応じて先端部を移動させる際に、先端部４の可動範囲を制限するように多関節アーム１０を制御してもよい。この場合、可動範囲の制限により、誤ったガイド操作を抑制することができる。
【００８５】
力ガイド制御部１１４は、ガイド操作に応じて先端部４を移動させる際に、先端部４の移動の自由度を制限するように多関節アーム１０を制御してもよい。この場合、自由度の制限により、誤ったガイド操作を抑制することができる。
【００８６】
補正制御部１１６は、相対指令情報に従って先端部４を移動させるように多関節アーム１０を制御することを、作業者が入力する再開指令信号に応じて開始してもよい。この場合、作業者が意図しないタイミングで補正制御部１１６による制御が行われる状況を回避することができる。
【００８７】
力ガイド制御部１１４は、ガイド操作に応じて先端部を移動させるように多関節アーム１０を制御することを、作業者が入力するガイドオン指令信号に応じて開始してもよい。この場合、作業者が意図しないタイミングで力ガイド制御部１１４による制御が行われる状況を回避することができる。
【００８８】
通常制御部１１２は、動作プログラムの途中で先端部４の移動を一時停止させるように多関節アーム１０を制御することを、作業者が入力する停止指令信号に応じて実行してもよい。この場合、作業者が望む位置で先端部４の移動を一時停止させることにより、ガイド操作を行う作業者の快適性を向上させることができる。
【００８９】
補正制御部１１６は、相対指令情報に従って先端部４を移動させるように多関節アーム１０を制御することを、ロボット２への接触により入力される再開指令信号に応じて開始してもよい。この場合、ロボット２の作業を、作業者のガイド操作後に迅速に再開させることができる。
【００９０】
ロボットシステム１は、通常制御部１１２による制御に応じたロボット２の動作に抗する抵抗力の増加に応じて、当該抵抗力に抗う動作を止めるように多関節アーム１０を制御する非常制御部１１３を更に備えていてもよい。
【００９１】
ロボット２は複数の関節４１〜４６を含み、力ガイド制御部１１４は、ガイド操作に応じて先端部４を移動させるように多関節アーム１０を制御することを、複数の関節４１〜４６に作用するトルクに関する情報に基づいて実行してもよい。この場合、多関節アーム１０において取得可能な情報を、力ガイド制御部１１４による制御に有効活用し、装置構成の簡素化を図ることができる。
【００９２】
以上、実施形態について説明したが、本発明は必ずしも上述した形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変形が可能である。
【符号の説明】
【００９３】
１…ロボットシステム、２…ロボット、３…基部、４…先端部、１０…多関節アーム、４１〜４６…関節、１１２…通常制御部、１１３…非常制御部、１１４…力ガイド制御部、１１５…相対情報取得部、１１６…補正制御部、１１７…復帰制御部。
【図１】
2019177432.tif 000003
【図２】
2019177432.tif 000004
【図３】
2019177432.tif 000005
【図４】
2019177432.tif 000006
【図５】
2019177432.tif 000007
【図６】
2019177432.tif 000008
【図７】
2019177432.tif 000009
【図８】
2019177432.tif 000010
【図９】
2019177432.tif 000011
【図１０】
2019177432.tif 000012
【図１１】
2019177432.tif 000013
【図１２】
2019177432.tif 000014
【図１３】
2019177432.tif 000015
【図１４】
2019177432.tif 000016