(57)【要約】  動作情報データベース（１７）に記憶されたロボットアーム（５）の動作情報を取得し、人（４Ａ）がロボットアームを操作してその動作補正時の補正動作情報を取得し、環境情報を取得部（１９）で取得し、ロボットアームが動作中に動作情報を動作補正部（２０）で補正し、補正された動作情報と取得した環境情報とにより、ロボットアームが自動で動作するための制御ルールを制御ルール生成部（２３）で生成し、生成された制御ルールに基づいてロボットアームの動作を制御する。
2011036865.tif 000002
【特許請求の範囲】
【請求項１】
ロボットアームの動作を制御する、ロボットアームの制御装置であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、及び、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を取得する動作情報取得部と、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を取得する補正動作情報取得部と、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて取得する環境情報取得部と、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを制御する位置制御部と、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を補正する動作補正部と、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを生成する制御ルール生成部とを備えて、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置。
【請求項２】
ロボットアームの動作を制御する、ロボットアームの制御装置であって、
前記動作に対応する、前記ロボットアームが対象物に加える力の時系列の動作情報として記憶された動作情報データベースから前記動作情報を取得する動作情報取得部と、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に、前記動作情報取得部で取得した前記動作情報に関連しかつ前記ロボットアームが加える力に関する補正動作情報を取得する補正動作情報取得部と、
前記ロボットアームが作用する前記対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて取得する環境情報取得部と、
前記動作情報取得部で取得した前記動作情報に設定された力で前記対象物に対して前記ロボットアームが力制御を行なうよう前記ロボットアームを力制御モードで制御する制御部と、
前記制御部により前記ロボットアームを前記力制御モードで制御している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を補正する動作補正部と、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを生成する制御ルール生成部とを備えて、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置。
【請求項３】
前記環境情報取得部は、前記ロボットアームに加えられた前記人の力を検出する力検出部を備えて、
前記力検出部で検出された前記人の力とその検出時間とに応じて前記人が前記ロボットアームを操作したことを検出して、前記ロボットアームの前記動作を補正する際の前記ロボットアームが加える力に関する前記補正動作情報を前記補正動作情報取得部で取得する請求項１又は２に記載のロボットアームの制御装置。
【請求項４】
前記環境情報取得部は、前記ロボットアーム及び前記ロボットアームの前記動作を行う周辺環境を撮像可能な複数の画像撮像装置を備え、
前記制御ルール生成部は、前記人の前記ロボットアームの操作時の前記ロボットアームの前記位置制御モードに応じて、前記環境情報取得部の前記複数の画像撮像装置で取得した複数の環境情報の中から、制御ルール生成の際の環境情報の種別を決定する請求項１に記載のロボットアームの制御装置。
【請求項５】
前記環境情報取得部は、前記ロボットアームに加えられた前記人の力を検出する力検出部を備えて、
前記制御ルール生成部は、前記人の前記ロボットアームの操作時の前記ロボットアームの前記力制御モードに応じて、制御ルール生成の際に前記力検出部で取得した環境情報を使用する請求項２に記載のロボットアームの制御装置。
【請求項６】
前記環境変化通知操作と、前記人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する動作補正操作とが同じ操作である場合は、前記動作補正操作の代わりに前記環境変化通知操作を使用する請求項１又は２に記載のロボットアームの制御装置。
【請求項７】
前記環境情報は、複数種類の検出方向から検出され取得された環境情報を有し、
前記制御ルール生成部は、前記ロボットアームの前記人の操作に応じて取得する前記環境情報の検出方向を決定する請求項６に記載のロボットアームの制御装置。
【請求項８】
前記制御ルール生成部で生成された制御ルールのうちの複数の動作情報から、前記環境情報取得部で取得した前記環境情報を参照して１つの動作情報を算出する動作算出部をさらに備える請求項１又は２に記載のロボットアームの制御装置。
【請求項９】
前記人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正して、前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を前記補正動作情報取得部で取得したのち、
前記環境情報取得部で取得した前記環境情報が、前記補正の操作時の前記環境情報と同じであるときに、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を、前記補正動作情報取得部で取得した前記補正動作情報に基づき補正するように制御する請求項１又は２に記載のロボットアームの制御装置。
【請求項１０】
前記環境情報取得部は、前記ロボットアーム及び前記ロボットアームの前記動作を行う周辺環境を撮像可能な複数の画像撮像装置を備え、
前記ロボットアームの先端には、ネジを回転可能な作業用治具を着脱可能に把持可能なハンドを備え、前記作業用治具は前記対象物であり、
前記複数の画像撮像装置で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記ハンドに把持した前記作業用治具で前記ネジの締め付け又は取り外し作業において前記ロボットアームの前記動作を制御する、請求項１に記載のロボットアームの制御装置。
【請求項１１】
前記環境情報取得部は、前記ロボットアーム及び前記ロボットアームの前記動作を行う周辺環境を撮像可能な複数の画像撮像装置を備え、
前記ロボットアームの先端には、フレキシブル基板を着脱可能に把持可能なハンドを備え、前記フレキシブル基板は前記対象物であり、
前記複数の画像撮像装置で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記ハンドに把持した前記フレキシブル基板を機器に取り付ける作業において前記ロボットアームの前記動作を制御する、請求項２に記載のロボットアームの制御装置。
【請求項１２】
ロボットアームの動作を制御する、ロボットアームの制御方法であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御方法。
【請求項１３】
前記ロボットアームと、
前記ロボットアームを制御する請求項１又は２に記載の前記ロボットアームの制御装置とを備えるロボット。
【請求項１４】
ロボットアームの動作を制御する、ロボットアームの制御プログラムであって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部取得するステップと、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得するステップと、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御するステップと、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正するステップと、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成するステップと、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するステップとを実行させるためのロボットアームの制御プログラム。
【請求項１５】
ロボットアームの動作を制御する、ロボットアーム制御用集積電子回路であって、前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアーム制御用集積電子回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットアームの動作を生成及び教示するためのロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、及び、ロボットアーム制御用集積電子回路に関する。
【背景技術】
【０００２】
近年、介護ロボット又は家事支援ロボットなどの家庭用ロボットが盛んに開発されるようになってきた。家庭ロボットは産業用ロボットと異なり、家庭の素人が操作するため、動作を簡単に教示できる必要がある。さらに、ロボットが作業する際の動作環境も、家庭に応じて様々であるため、多種多様な家庭環境に柔軟に対応する必要がある。【０００３】
ロボット装置の教示方法の一例として、ロボットの手首などに力センサを装着し、力センサの先に装着されたハンドルを教示者が直接把持してロボットを教示点に誘導し、ロボットの位置の教示を行っている（特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭５９−１５７７１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１においては、全ての教示点を教示者が教示する必要があるため、教示に時間がかかり、非常に面倒であった。さらに、産業用分野にて、教示した動きの一部を修正する場合に、ティーチングペンダントと呼ばれる遠隔装置により、プログラミングにより修正するか、若しくは、全ての動作を一から教示しなければならず、効率が悪かった。【０００６】
特に、家庭用ロボットでは、できるだけ教示する時間を短くする必要がある。さらに、ティーチングペンダンドなどの遠隔装置を用いたプログラミングの併用は、操作ステップが増大し、プログラミング言語の習得が必要となり、家庭の素人には困難である。【０００７】
また、特許文献１で記載しているように、産業ロボットでは、ロボットの動作を教示する教示作業とロボットが実際に作業する本作業とは明確に分けて行っている。しかし、家庭において、教示した作業を実行する場合に、教示を行った環境とは異なる環境に変動することが頻繁に起こるため、教示作業をそのまま実行しても、環境変動によりロボットが停止したり、誤って作業をしてしまうことがある。ここで環境変動とは、ロボットが動作する際の周辺の物の位置又は状態の変動と、人又はロボットが周辺環境に対して直接作用することによる物の位置又は状態の変動を指す。例えば、家庭環境においては、家にある物の配置又は形状が様々であり、例えば、調理作業における調理前と調理後では、物の形又は状態が変わるなどの環境の変動が起こる。さらに、産業用途では、セル生産時のフレキシブル基盤などの柔軟物の形状が変化したり、配線時のコネクタの位置が頻繁に変動する。また、リサイクル工場では、解体する家電製品の形が様々であり、さらに、図３７Ｂ（図３７Ａのネジ７３の頭部７３ａを上から見た図）に示すようなネジの破損部分９２、又は、図３７Ｃのような汚れ部分９３、図３７Ｄのようなさび部分９４などの経年変化により形状が様々である。【０００８】
これらの環境変動の全てを事前に想定して教示しておくことは、困難である。
さらに、組み立て作業などの製造現場において、モデルチェンジが頻繁に発生するために、教示作業が頻繁に発生する。【０００９】
そこで、環境変動又はモデルチェンジの度に、一から全ての動作を教示するのではなく、動作中のロボットに対して、人が状況の認識を行い、環境変化があれば、人がその都度ロボットに伝達することで、教示を意識させずに操作することが可能となる。また、教示時に予期していない環境の変動が起こった場合にでも、その都度、人が教示することでロボットを動作させることが可能となる。
しかしながら、この方法では、環境の変動が発生する度に、人が毎回操作をしなければならず、面倒であった。【００１０】
本発明の目的は、このような課題に鑑みてなされたものであり、予測できない環境の変動があっても、作業者が簡単で短時間にロボットアームの教示を行うことが可能なロボット制御を実現することができる、ロボットアームの制御装置及び制御方法、ロボット、ロボットアームの制御プログラム、及び、ロボットアーム制御用集積電子回路である。
【課題を解決するための手段】
【００１１】
上記の目的を達成するために、本発明は以下のように構成する。
本発明の第１態様によれば、ロボットアームの動作を制御する、ロボットアームの制御装置であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、及び、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を取得する動作情報取得部と、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を取得する補正動作情報取得部と、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて取得する環境情報取得部と、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを制御する位置制御部と、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を補正する動作補正部と、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを生成する制御ルール生成部とを備えて、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置を提供する。【００１２】
本発明の第２態様によれば、ロボットアームの動作を制御する、ロボットアームの制御装置であって、
前記動作に対応する、前記ロボットアームが対象物に加える力の時系列の動作情報として記憶された動作情報データベースから前記動作情報を取得する動作情報取得部と、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に、前記動作情報取得部で取得した前記動作情報に関連しかつ前記ロボットアームが加える力に関する補正動作情報を取得する補正動作情報取得部と、
前記ロボットアームが作用する前記対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて取得する環境情報取得部と、
前記動作情報取得部で取得した前記動作情報に設定された力で前記対象物に対して前記ロボットアームが力制御を行なうよう前記ロボットアームを力制御モードで制御する制御部と、
前記制御部により前記ロボットアームを前記力制御モードで制御している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を補正する動作補正部と、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを生成する制御ルール生成部とを備えて、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置を提供する。【００１３】
本発明の第１２態様によれば、ロボットアームの動作を制御する、ロボットアームの制御方法であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御方法を提供する。【００１４】
本発明の第１３態様によれば、前記ロボットアームと、
前記ロボットアームを制御する第１〜１１のいずれか１つの態様に記載の前記ロボットアームの制御装置とを備えるロボットを提供する。【００１５】
本発明の第１４態様によれば、ロボットアームの動作を制御する、ロボットアームの制御プログラムであって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部取得するステップと、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得するステップと、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御するステップと、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正するステップと、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成するステップと、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するステップとを実行させるためのロボットアームの制御プログラムを提供する。【００１６】
本発明の第１５態様によれば、ロボットアームの動作を制御する、ロボットアーム制御用集積電子回路であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアーム制御用集積電子回路を提供する。
【発明の効果】
【００１７】
以上述べたように、本発明は、周辺環境が変化した際に、人がロボットアームを操作して動作を補正することで、次回同じ環境になった場合に、環境情報取得部で取得した環境情報を参照しながら、制御ルール生成部により生成された制御ルールに基づいてロボットアームを自律的に動作させることが可能となる。
【図面の簡単な説明】
【００１８】
本発明のこれらと他の目的と特徴は、添付された図面についての好ましい実施形態に関連した次の記述から明らかになる。この図面においては、
【図１Ａ】図１Ａは、本発明の第１実施形態における、ロボットアームとその制御装置とを備えるロボットの構成の概要を示す図であり、
【図１Ｂ】図１Ｂは、本発明の前記第１実施形態における前記ロボット及びその周辺環境の概要を示す図であり、
【図１Ｃ】図１Ｃは、本発明の前記第１実施形態における前記ロボット及びその周辺環境の概要を示す図であり、
【図２】図２は、本発明の前記第１実施形態におけるロボットを構成する前記制御装置と制御対象である前記ロボットアームとの詳細構成を示す図であり、
【図３Ａ】図３Ａは、本発明の前記第１実施形態における座標系に関する図であり、
【図３Ｂ】図３Ｂは、本発明の前記第１実施形態における座標系に関する図であり、
【図３Ｃ】図３Ｃは、本発明の前記第１実施形態における座標系に関する図であり、
【図４】図４は、本発明の前記第１実施形態における前記制御装置の制御部の構成を示すブロック図であり、
【図５Ａ】図５Ａは、前記制御装置の動作情報データベースのデータである動作情報を説明する図であり、
【図５Ｂ】図５Ｂは、前記制御装置の前記動作情報データベースのデータである動作情報を説明する図であり、
【図５Ｃ】図５Ｃは、前記制御装置の前記動作情報データベースのデータである動作情報を説明する図であり、
【図６】図６は、前記制御装置の前記動作情報データベースのフラグの情報を説明する図であり、
【図７】図７は、前記制御装置の前記動作情報データベースの補正パラメータフラグに関する情報を説明する図であり、
【図８】図８は、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図９Ａ】図９Ａは、前記制御装置の環境情報データベースの環境情報の一覧表を説明する図であり、
【図９Ｂ】図９Ｂは、前記制御装置の前記環境情報データベースのフラグの情報を説明する図であり、
【図１０Ａ】図１０Ａは、前記制御装置の制御ルールデータベースの制御ルールの一覧表を説明する図であり、
【図１０Ｂ】図１０Ｂは、前記制御装置の前記制御ルールデータベースの制御ルールの一覧表を説明する図であり、
【図１１Ａ】図１１Ａは、前記制御装置の検出部選択ルールデータベースの検出部選択ルールの一覧表を説明する図であり、
【図１１Ｂ】図１１Ｂは、前記制御装置の前記検出部選択ルールデータベースの検出部選択ルールの環境情報の種別に関する情報を説明する図であり、
【図１２】図１２は、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１３Ａ】図１３Ａは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１３Ｂ】図１３Ｂは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１３Ｃ】図１３Ｃは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図１３Ｄ】図１３Ｄは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図１３Ｅ】図１３Ｅは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１４】図１４は、本発明の前記第１実施形態における環境情報の画像の例を示す図であり、
【図１５】図１５は、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１６】図１６は、本発明の前記第１実施形態における前記制御部の動作ステップを表すフローチャートであり、
【図１７Ａ】図１７Ａは、本発明の前記第１実施形態における動作指令部の動作ステップを表すフローチャートであり、
【図１７Ｂ】図１７Ｂは、本発明の前記第１実施形態における動作補正部と動作指令部と制御ルール生成部と環境情報取得部と制御パラメータ管理部との動作ステップを表すフローチャートであり、
【図１８Ａ】図１８Ａは、本発明の第２実施形態におけるロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図１８Ｂ】図１８Ｂは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図１９Ａ】図１９Ａは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１９Ｂ】図１９Ｂは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図１９Ｃ】図１９Ｃは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作状態を示す側面図であり、
【図１９Ｄ】図１９Ｄは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作状態を示す平面図であり、
【図１９Ｅ】図１９Ｅは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作状態を示す平面図であり、
【図２０】図２０は、本発明の前記第２実施形態における環境情報の画像の例を示す図であり、
【図２１】図２１は、本発明の第３実施形態におけるロボットの概要を示す図であり、
【図２２Ａ】図２２Ａは、前記第３実施形態におけるロボットのロボットアームの制御装置の動作情報データベースの動作情報の一覧表を説明する図であり、
【図２２Ｂ】図２２Ｂは、前記第３実施形態におけるロボットのロボットアームの制御装置の前記動作情報データベースの動作情報の一覧表を説明する図であり、
【図２３】図２３は、前記第３実施形態におけるロボットのロボットアームの制御装置の前記動作情報データベースのフラグの情報を説明する図であり、
【図２４Ａ】図２４Ａは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図２４Ｂ】図２４Ｂは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図２５】図２５は、本発明の前記第３実施形態における環境情報の画像の例を示す図であり、
【図２６Ａ】図２６Ａは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２６Ｂ】図２６Ｂは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２６Ｃ】図２６Ｃは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２６Ｄ】図２６Ｄは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２７】図２７は、本発明の前記第３実施形態における前記ロボットアームの制御装置の環境情報の画像の例を示す図であり、
【図２８Ａ】図２８Ａは、本発明の前記第３実施形態におけるロボットアームの制御装置の動作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２８Ｂ】図２８Ｂは、本発明の前記第３実施形態におけるロボットアームの制御装置の動作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２８Ｃ】図２８Ｃは、本発明の前記第３実施形態におけるロボットアームの制御装置の動作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２９】図２９は、本発明の前記第１実施形態における動作指令部の動作ステップを表すフローチャートであり、
【図３０Ａ】図３０Ａは、前記第１実施形態における人のかける力とその時刻の関係を示す図であり、
【図３０Ｂ】図３０Ｂは、前記第１実施形態における人のかける力とその時刻の関係を示す図であり、
【図３１】図３１は、本発明の第４実施形態におけるロボットアームの制御装置の構成の概要を示す図であり、
【図３２Ａ】図３２Ａは、前記第４実施形態における動作情報データベースの動作情報の一覧表を説明する図であり、
【図３２Ｂ】図３２Ｂは、前記第４実施形態における前記動作情報データベースの動作情報の一覧表を説明する図であり、
【図３３Ａ】図３３Ａは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３３Ｂ】図３３Ｂは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３３Ｃ】図３３Ｃは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３４】図３４は、本発明の前記第４実施形態における環境情報の画像の例を示す図であり、
【図３５Ａ】図３５Ａは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３５Ｂ】図３５Ｂは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３５Ｃ】図３５Ｃは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図３５Ｄ】図３５Ｄは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図３５Ｅ】図３５Ｅは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ａ】図３６Ａは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｂ】図３６Ｂは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｃ】図３６Ｃは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｄ】図３６Ｄは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｅ】図３６Ｅは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｆ】図３６Ｆは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｇ】図３６Ｇは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３７Ａ】図３７Ａは、従来のネジの斜視図であり、
【図３７Ｂ】図３７Ｂは、従来の破損部分のあるネジの頭部の平面図であり、
【図３７Ｃ】図３７Ｃは、従来の汚れ部分のあるネジの頭部の平面図であり、
【図３７Ｄ】図３７Ｄは、従来のさび部分のあるネジの頭部の平面図である。
【発明を実施するための形態】
【００１９】
以下に、本発明にかかる実施の形態を図面に基づいて詳細に説明する。
以下、図面を参照して本発明における実施形態を詳細に説明する前に、本発明の種々の態様について説明する。
【００２０】
本発明の第１態様によれば、ロボットアームの動作を制御する、ロボットアームの制御装置であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、及び、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を取得する動作情報取得部と、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を取得する補正動作情報取得部と、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて取得する環境情報取得部と、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを制御する位置制御部と、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を補正する動作補正部と、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを生成する制御ルール生成部とを備えて、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置を提供する。
【００２１】
本発明の第２態様によれば、ロボットアームの動作を制御する、ロボットアームの制御装置であって、
前記動作に対応する、前記ロボットアームが対象物に加える力の時系列の動作情報として記憶された動作情報データベースから前記動作情報を取得する動作情報取得部と、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に、前記動作情報取得部で取得した前記動作情報に関連しかつ前記ロボットアームが加える力に関する補正動作情報を取得する補正動作情報取得部と、
前記ロボットアームが作用する前記対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて取得する環境情報取得部と、
前記動作情報取得部で取得した前記動作情報に設定された力で前記対象物に対して前記ロボットアームが力制御を行なうよう前記ロボットアームを力制御モードで制御する制御部と、
前記制御部により前記ロボットアームを前記力制御モードで制御している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を補正する動作補正部と、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを生成する制御ルール生成部とを備えて、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置を提供する。
【００２２】
本発明の第３態様によれば、前記環境情報取得部は、前記ロボットアームに加えられた前記人の力を検出する力検出部を備えて、
前記力検出部で検出された前記人の力とその検出時間とに応じて前記人が前記ロボットアームを操作したことを検出して、前記ロボットアームの前記動作を補正する際の前記ロボットアームが加える力に関する前記補正動作情報を前記補正動作情報取得部で取得する第１又は２の態様に記載のロボットアームの制御装置を提供する。
【００２３】
本発明の第４態様によれば、前記環境情報取得部は、前記ロボットアーム及び前記ロボットアームの前記動作を行う周辺環境を撮像可能な複数の画像撮像装置を備え、
前記制御ルール生成部は、前記人の前記ロボットアームの操作時の前記ロボットアームの前記位置制御モードに応じて、前記環境情報取得部の前記複数の画像撮像装置で取得した複数の環境情報の中から、制御ルール生成の際の環境情報の種別を決定する第１の態様に記載のロボットアームの制御装置を提供する。
【００２４】
本発明の第５態様によれば、前記環境情報取得部は、前記ロボットアームに加えられた前記人の力を検出する力検出部を備えて、
前記制御ルール生成部は、前記人の前記ロボットアームの操作時の前記ロボットアームの前記力制御モードに応じて、制御ルール生成の際に前記力検出部で取得した環境情報を使用する第２の態様に記載のロボットアームの制御装置を提供する。
【００２５】
本発明の第６態様によれば、前記制御ルール生成部は、前記ロボットアームの前記人の環境変化通知操作に応じて取得する環境情報を決定する第１〜５のいずれか１つの態様に記載のロボットアームの制御装置を提供する。
【００２６】
本発明の第７態様によれば、前記環境情報は、複数種類の検出方向から検出され取得された環境情報を有し、
前記制御ルール生成部は、前記ロボットアームの前記人の操作に応じて取得する前記環境情報の検出方向を決定する第６の態様に記載のロボットアームの制御装置を提供する。
【００２７】
本発明の第８態様によれば、前記制御ルール生成部で生成された制御ルールのうちの複数の動作情報から、前記環境情報取得部で取得した前記環境情報を参照して１つの動作情報を算出する動作算出部をさらに備える第１〜７のいずれか１つの態様に記載のロボットアームの制御装置を提供する。
【００２８】
本発明の第９態様によれば、前記人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正して、前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を前記補正動作情報取得部で取得したのち、
前記環境情報取得部で取得した前記環境情報が、前記補正の操作時の前記環境情報と同じであるときに、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を、前記補正動作情報取得部で取得した前記補正動作情報に基づき補正するように制御する第１〜７のいずれか１つの態様に記載のロボットアームの制御装置を提供する。
【００２９】
本発明の第１０態様によれば、前記環境情報取得部は、前記ロボットアーム及び前記ロボットアームの前記動作を行う周辺環境を撮像可能な複数の画像撮像装置を備え、
前記ロボットアームの先端には、ネジを回転可能な作業用治具を着脱可能に把持可能なハンドを備え、前記作業用治具は前記対象物であり、
前記複数の画像撮像装置で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記ハンドに把持した前記作業用治具で前記ネジの締め付け又は取り外し作業において前記ロボットアームの前記動作を制御する、第１の態様に記載のロボットアームの制御装置を提供する。
【００３０】
本発明の第１１態様によれば、前記環境情報取得部は、前記ロボットアーム及び前記ロボットアームの前記動作を行う周辺環境を撮像可能な複数の画像撮像装置を備え、
前記ロボットアームの先端には、フレキシブル基板を着脱可能に把持可能なハンドを備え、前記フレキシブル基板は前記対象物であり、
前記複数の画像撮像装置で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記ハンドに把持した前記フレキシブル基板を機器に取り付ける作業において前記ロボットアームの前記動作を制御する、第２の態様に記載のロボットアームの制御装置を提供する。
【００３１】
本発明の第１２態様によれば、ロボットアームの動作を制御する、ロボットアームの制御方法であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御方法を提供する。
【００３２】
本発明の第１３態様によれば、前記ロボットアームと、
前記ロボットアームを制御する第１〜１１のいずれか１つの態様に記載の前記ロボットアームの制御装置とを備えるロボットを提供する。
【００３３】
本発明の第１４態様によれば、ロボットアームの動作を制御する、ロボットアームの制御プログラムであって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部取得するステップと、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得するステップと、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御するステップと、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正するステップと、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成するステップと、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するステップとを実行させるためのロボットアームの制御プログラムを提供する。
【００３４】
本発明の第１５態様によれば、ロボットアームの動作を制御する、ロボットアーム制御用集積電子回路であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアーム制御用集積電子回路を提供する。
【００３５】
以下、本発明の各実施形態について図面を用いて詳細に説明する。
【００３６】
（第１実施形態）
本発明の第１実施形態における、ロボットアームとその制御装置とを備えるロボット１の構成について説明する。
図１Ａは、本発明の第１実施形態におけるロボットアーム５と、そのロボットアーム５を駆動制御する制御装置７０とを備えるロボット１の概要を示す。図１Ｂは、ロボットアーム５が作業を行う図１Ａの作業台７を上方から見た図であり、図１Ｃは図１Ａの作業台７及び鍋３を正面から見た図である。
【００３７】
（装置構成）
図１Ａに示すように、ロボット１のロボットアーム５は、例えば家庭内のキッチン又はテーブルなどの作業台７の壁面７ａに設置される。ロボットアーム５の基端５ａが、壁面７ａに固定されたレール８に対して移動可能な状態で支持され、ロボットアーム５が、レール８上に沿って横方向（例えば水平方向）に、人４Ａの手４の力により、移動可能としている。ロボットアーム５の基端の固定場所は、作業台７の壁面７ａに限られるものではなく、天井などでもよい。
【００３８】
後述する環境情報取得部１９の一例としての、カメラなどの第１及び第２画像撮像装置１５ａ及び１５ｂは、ロボットアーム５及びロボットアーム５の動作を行う周辺環境を撮像して環境情報を取得可能としている。本第１実施形態において、第１画像撮像装置１５ａは、図１Ｃに示すように、天井７ｂから作業台７の全体を撮像可能なように天井７ｂから下向きに取り付けられ、第２画像撮像装置１５ｂは、図１Ｂ、図１Ｃに示すように、作業台７の上面７ｄと平行に作業台７の側面７ｃに取り付けられ、作業台７の上面付近を横方向から撮像可能としている。
【００３９】
ロボット１の操作を指示する操作盤１３は、データ入力ＩＦ２６の一例として機能し、ＩＨクッキングヒーター又はガスコンロなどの調理装置６の前側側面に配置されている。操作盤１３は、ユーザによる操作指示を入力するための操作ボタン１３ａ又は音声入力装置などが設けられている。
【００４０】
ロボットアーム５の先端にはハンド３０が設けられ、ハンド３０は作業用冶具９（例えばレードルなどの調理用具、又は、拭き掃除用モップなど、又は、電動ドライバ器具７２など）を着脱可能に把持する。ハンド３０としては、例えば、機械的チャックなど公知の着脱可能な取り付け機構を使用することができる。
【００４１】
表示手段の一例としての表示部９５は、例えば作業台７に設置されたディスプレイ装置であり、後述するロボットの動作などを表示部９５に表示する。すなわち、表示部９５は、必要に応じて、必要な情報を表示部９５に表示して、本発明の様々な動作を円滑に行なえるようにする。
【００４２】
尚、レール８は、作業台７の壁面７ａに配置したが、壁面の無いアイランドキッチンの場合は、天井面又はアイランドキッチンの天板６ａの側面など作業をするのに適した場所に設置することができる。
さらに、データ入力ＩＦ２６の一例としての操作盤１３は、調理装置６の側面に固定したが、操作盤１３に代えて、遠隔操作が可能なリモコンでも良い。
【００４３】
ロボット１は、例えば、家庭内において、ロボットアーム５を使用して、鍋３の中の具材をかき混ぜる作業、又は、キッチンの汚れ９１をふき取る作業（図１９Ｂなどに示す、汚れた部分９１での拭き掃除作業）などを、ロボットアーム５と人４Ａとが協働して行う。
【００４４】
以下、一例として、まず、ロボットアーム５により、かき混ぜ作業を行う場合の動作について図１Ａを用いて簡単に説明する。
まず、人４Ａがロボット１のロボットアーム５を直接把持し、人４Ａが手４でロボットアーム５に力を加える。そして、人４Ａからロボットアーム５に加えられた力により、ロボットアーム５がレール８に沿って移動し、例えば鍋などの調理器具３の付近までロボットアーム５が誘導される。
【００４５】
次に、人４Ａが、手４でロボットアーム５の先端のハンド３０に、作業用冶具９の一例として、かき混ぜ作業のためのレードルなどの調理用具９を取り付ける。
次に、人４Ａが、手４で操作盤１３から、ロボットアーム５に動作開始指令を入力すると、ロボットアーム５が作動し、予め選択された作業、すなわち、かき混ぜ作業を開始させる。
【００４６】
ロボットアーム５がレードル９により鍋３の中でかき混ぜているとき、人４Ａがかき混ぜている具材の状態を確認し、人４Ａがロボットアーム５を直接把持して、補正したい方向にロボットアーム５に力を加えることで、ロボットアーム５の動作を補正する。
調理終了後、人４Ａは、ロボットアーム５を調理器具の一例としての鍋３内から鍋３の外部に移動させて、次の作業に移行する。
【００４７】
次に、本第１実施形態のロボット１の詳細を説明する。図２はロボットアーム５と、ロボットアーム５の制御装置７０との詳細構成図である。ロボットアーム５の制御装置７０は、図２に示すように、制御装置本体部１１と、ロボットアーム５の動作を生成する動作生成装置１２と、周辺装置１４とを備えている。
【００４８】
《ロボットアーム》
第１実施形態のロボットアーム５は、一例として、６自由度の多リンクマニピュレータで構成される多関節ロボットアームとする。ロボットアーム５は、ハンド３０と、ハンド３０が取り付けられている手首部３１を先端３２ａに有する前腕リンク３２と、前腕リンク３２の基端３２ｂに回転可能に先端３３ａが連結される上腕リンク３３と、上腕リンク３３の基端３３ｂが回転可能に連結支持される台部３４とを備えている。台部３４は、移動可能なレール８に連結されているが、一定位置に固定されていても良い。手首部３１は、第４関節部３８と、第５関節部３９と、第６関節部４０との３つの回転軸を有しており、前腕リンク３２に対するハンド３０の相対的な姿勢（向き）を変化できる。すなわち、図２において、第４関節部３８は、手首部３１に対するハンド３０の横軸（ψ）周りの相対的な姿勢を変化できる。第５関節部３９は、手首部３１に対するハンド３０の、第４関節部３８の横軸とは直交する縦軸（Φ）周りの相対的な姿勢を変化させることができる。第６関節部４０は、手首部３１に対するハンド３０の、第４関節部３８の横軸（ψ）及び第５関節部３９の縦軸（φ）とそれぞれ直交する横軸（θ）周りの相対的な姿勢を変化できる。前腕リンク３２の他端は、上腕リンク３３の先端に対して第３関節部３７周りに、すなわち、第４関節部３８の横軸と平行な横軸周りに回転可能とする。上腕リンク３３の他端は、台部３４に対して第２関節部３６周りに、すなわち、第４関節部３８の横軸と平行な横軸周りに回転可能とする。さらに、台部３４の上側可動部３４ａは、台部３４の下側固定部３４ｂに対して第１関節部３５周りに、すなわち、第５関節部３９の縦軸と平行な縦軸周りに回転可能としている。
【００４９】
この結果、ロボットアーム５は、合計６個の軸周りに回転可能として前記６自由度の多リンクマニピュレータを構成している。
【００５０】
各軸の回転部分を構成する各関節部（具体的には第１関節部３５〜第６関節部４０）には、一例としてモータ４３のような回転駆動装置と、モータ４３の回転軸の回転位相角（すなわち関節角）を検出するエンコーダ４４を備えている。
【００５１】
この第１実施形態のモータ４３は、ロボットアーム５の各関節部の内部に配設されている。モータ４３は、各関節部を構成する２つのリンク部材（例えば、回動側部材と、該回動側部材を支持する支持側部材）のうちの一方のリンク部材に備えられるとともに、その一方のリンク部材に備えられかつ後述するモータドライバ２５によりモータ４３が駆動制御される。各関節部の前記一方のリンク部材の関節部の近傍部分に備えられたモータ４３の回転軸が、他方のリンク部材の関節部の近傍部分に連結されて、前記回転軸を正逆回転させることにより、前記他方のリンク部材を前記一方のリンク部材に対して第１関節部３５〜第６関節部４０のそれぞれの各軸周りに回転可能とする。また、エンコーダ４４は、モータ４３の回転軸の回転位相角（すなわち、関節角）を検出するために、一方のリンク部材に備えられる（実際には、ロボットアーム５の各関節部の一方のリンク部材の内部に配設されている）。
【００５２】
４１は台部３４の下側固定部３４ｂに対して相対的な位置関係が固定された絶対座標系であり、４２はハンド３０に対して相対的な位置関係が固定された手先座標系である。絶対座標系４１から見た手先座標系４２の原点位置Ｏｅ（ｘ，ｙ，ｚ）をロボットアーム５の手先位置（ハンド３０の位置）とし、絶対座標系４１から見た手先座標系４２の姿勢をロール角とピッチ角とヨー角で表現した（φ，θ，ψ）をロボットアーム５の手先姿勢とし、手先位置及び姿勢ベクトルをベクトルｒ＝［ｘ，ｙ，ｚ，φ，θ，ψ］Ｔと定義する。
図３は、本発明の第１実施形態におけるロボットアーム５の座標系を示す。
【００５３】
この第１実施形態では、絶対座標系３５のＺ軸を回転軸として、座標系を角度φだけ回転させた座標系を考える（図３Ａ参照）。このときの座標軸を［Ｘ'，Ｙ'，Ｚ］とする。
【００５４】
次に、この座標系を、Ｙ'を回転軸として角度θだけ回転させる（図３Ｂ参照）。このときの座標軸を［Ｘ''，Ｙ'，Ｚ''］とする。
【００５５】
最後に、この座標系を、Ｘ''軸を回転軸として角度ψだけＸ''軸周りに回転させる（図３Ｃ参照）。このときの座標軸を［Ｘ''，Ｙ'''、Ｚ'''］とする。このときの座標系の姿勢をロール角度φ、ピッチ角度θ、ヨー角度ψとし、このときの姿勢ベクトルは（φ，θ，ψ）となる。姿勢（φ，θ，ψ）の座標系が原点位置を手先座標系４２の原点位置Ｏｅ（ｘ，ｙ，ｚ）に平行移動した座標系と、手先座標系４２が一致する場合、手先座標系４２の姿勢ベクトルは（φ，θ，ψ）であるとする。
【００５６】
ロボットアーム５の手先位置及び姿勢を制御する場合には、手先位置及び姿勢ベクトルｒを、後述する目標軌道生成部５５で生成された手先位置及び姿勢目標ベクトルｒｄに追従させることになる。
【００５７】
ロボットアーム５は、後述する動作生成装置１２と、制御装置本体部１１と、周辺装置１４とを備えたロボットアームの制御装置により、次にように動作制御される。
【００５８】
ロボットアーム５の各関節部の、後述するエンコーダ４４より出力される各関節角度情報が、入出力ＩＦ（インターフェース）２４のカウンタボードを通じて制御装置本体部１１に取り込まれる。取り込まれた各関節角度情報に基づき制御装置本体部１１によって各関節部の回転動作での制御指令値が算出される。制御装置本体部１１によって算出された各制御指令値は、入出力ＩＦ２４のＤ／Ａボードを通じて、ロボットアーム５の各関節部を駆動制御するためのモータドライバ２５に与えられる。モータドライバ２５から送られた前記各制御指令値に従って、ロボットアーム５の各関節部のモータ４３が独立して正逆回転駆動される。
【００５９】
また、モータドライバ２５により駆動制御されるハンド用駆動装置の一例としてハンド３０は、ハンド開閉駆動用のモータ６２と、ハンド開閉駆動用のモータ６２の回転軸の回転位相角を検出するエンコーダ６１とを備える。
【００６０】
エンコーダ６１で検出されたモータ６２の回転軸の回転角度情報が、入出力ＩＦ２４のカウンタボードを通じて制御装置本体部１１に取り込まれる。制御装置本体部１１に取り込まれた回転角度情報を基に、制御装置本体部１１の制御部２２のハンド制御部５４（図４に図示）によってハンド３０の開閉動作での制御指令値が算出される。算出された制御指令値は、入出力ＩＦ２４のＤ／Ａボードを通じて、ハンド３０の開閉駆動も行うモータドライバ２５に与えられる。モータドライバ２５から送られた前記各制御指令値に従って、モータ６２の回転を駆動制御して、ハンド開閉駆動用のモータ６２の回転軸が正逆回転して、ハンド３０を開閉させる。例えば、モータ６２の回転軸を正方向に回転させることによりハンド３０を開いて、作業用冶具９（例えばレードル又はモップなど）を人４Ａの手４で取り付け可能とする一方、モータ６２の回転軸を逆方向に回転させることによりハンド３０を閉じて、ハンド３０に取り付けられた作業用冶具９（例えばレードル又はモップなど）を固定するように構成することができる。
【００６１】
制御装置本体部１１及び動作生成装置１２及び周辺装置１４は、一例として、それぞれ一般的なパーソナルコンピュータにより構成される。
【００６２】
《周辺装置１４》
周辺装置１４は、データ入力ＩＦ(インターフェース)２６と、入出力ＩＦ(インターフェース)２４と、モータドライバ２５とを有する。
【００６３】
入出力ＩＦ２４は、パーソナルコンピュータのＰＣＩバスなどの拡張スロットに接続された、例えばＤ／ＡボードとＡ／Ｄボードとカウンタボードとなどを有する。入出力ＩＦ２４は、ロボットアーム５の各関節部のエンコーダ４４より出力される各関節角度情報と、ハンド３０のエンコーダ６１より出力される角度情報とを取得し、制御部２２に入力する。一方、入出力ＩＦ２４は、制御部２２から制御信号などの制御情報が入力されるとともに、モータドライバ２５に制御指令値などの制御情報を出力する。モータドライバ２５は、ロボットアーム５の各関節部のモータ４３及びハンド３０のモータ６２に対し制御指令値などの制御情報を出力する。
【００６４】
データ入力ＩＦ（インターフェース）２６は、人４Ａがキーボード、マウス又はマイクなどの外部入力装置２６ａを使用して、データ入力ＩＦ２６とデータベース入出力部２８とを介して、作業情報（例えば作業ＩＤ）、又は、動作補正操作指令情報、ロボットアーム５の関節角速度情報に基づいた環境変化通知操作の指令、動作補正操作の指令、又は、動作情報を入力したり、変更したりするためのインターフェースである。よって、データ入力ＩＦ２６は、外部入力装置２６ａと、データベース入出力部２８と、動作指令部２７（動作算出部２）と、制御部２２の力検出部５３と制御パラメータ管理部２１と、表示部９５とに接続されている。
【００６５】
また、データ入力ＩＦ２６は、データ入力ＩＦ２６の一例としての図１Ａに示す操作盤１３のボタン１３ａなどの入力装置を使用して、人４Ａから動作指令部２７に対して制御動作開始及び終了の指令を受けるようにしてもよい。ボタン１３ａは、例えばトグルスイッチとして１つのボタンで制御動作開始及び制御動作終了をそれぞれ入力可能としてもよいし、制御動作開始ボタンと制御動作終了ボタンと別々に設けてもよい。ボタンの代わりに、キーボード又はマウス又はマイクなどの入力装置を使用して、制御動作開始及び制御動作終了などの指令をロボット１に入力するインターフェースである。
【００６６】
《動作生成装置１２》
動作生成装置１２は、動作情報データベース１７と、環境情報データベース１８と、制御ルールデータベース１６と、検出部選択ルールデータベース２９と、動作指令部２７（動作算出部２）と、動作補正部２０と、制御ルール生成部２３と、環境情報取得部１９と、データベース入出力部２８とにより構成される。
【００６７】
動作補正部２０と制御パラメータ管理部２１との間では、ロボットアーム５の手先位置及び姿勢と、人４Ａが加えた力の情報と、動作指令などが入出力される。制御パラメータ管理部２１からは、ロボットアーム５の手先位置及び姿勢と、人４Ａの加えられた力の情報などが動作補正部２０に出力される。なお、動作生成装置１２における各制御モード（（ｉ）位置制御モード、（ｉｉ）インピーダンス制御モード、（ｉｉｉ）ハイブリッドインピーダンス制御モード、（ｖ）力ハイブリッドインピーダンス制御モード）の詳細については、制御装置本体部１１の制御パラメータ管理部２１にて後述する。
【００６８】
−動作情報データベース−
動作情報データベース１７は、所定の時間におけるロボットアーム５の手先位置及び姿勢などのロボットアーム５の動作に関する情報（以下、動作情報と称す）を記憶している。動作情報は、予め設定しておいてもよいし、制御ルール生成部２３を介してデータベース入出力部２８により動作情報データベース１７に入力されて記憶してもよい。
【００６９】
図５Ａ（図５Ｂ、図５Ｃも同様）は、動作情報データベース１７のデータである動作情報を示す。
図６は、動作情報データベース１７のフラグの情報を示す
図７は、動作情報データベース１７の補正パラメータフラグに関する情報を示す。  動作情報の具体例として、図５Ａを参照して以下に示す。
【００７０】
（１）動作情報データベース１７に記憶されている動作情報の「動作ＩＤ」の欄は、作業をロボットアーム５に実行するためのロボットアーム５の個々の動きを識別する動作ＩＤ番号を示す。  （２）動作情報の「キー動作ＩＤ」の欄は、ロボットアーム５の動作制御する制御プログラムにおける個々の動作（キー動作）（コマンド,command）を識別するキー動作ＩＤ番号を示す。
【００７１】
（３）動作情報の「位置姿勢」の欄は、１つの動作におけるロボットアーム５の手先位置及び姿勢に関する情報を示す。尚、本第１実施形態は、一例として、メートル（ｍ）単位系で手先位置及び姿勢の座標を示す。
（４）動作情報の「力」の欄は、ロボットアーム５が作業をする際に作業対象となる物体（作業対象物、例えば作業用治具９，４６，７２又はフレキシブル基板７４）に加える力に関する情報を示す。尚、本第１実施形態は、一例として、ニュートン（Ｎ）単位系で示す。
【００７２】
（５）動作情報の「フラグ」の欄は、ロボットアーム５の手先位置、姿勢、及び力のパラメータのうちのいずれの情報が有効か否かを示すフラグに関する情報を示す。
（６）動作情報の「ハンド」の欄は、ハンド３０が開閉しているか否かのハンド開閉状態を表す情報を示す。
（７）動作情報の「時間」の欄は、ロボットアーム５の各キー動作を実行するための時間に関する情報を示す。尚、本第１実施形態では、一例として、秒（ｓｅｃ）単位で示す。
（８）動作情報の「補正パラメータフラグ」の欄は、後述する動作補正部２０を用いて動作情報データベース１７の動作情報を補正する際の、補正すべきパラメータの種別に関する情報を示す。
【００７３】
ここで、「作業」とは、例えば、かき混ぜ作業又は拭き掃除作業などの一定の手順に従ってロボットアーム５で実行する仕事を意味する。
また、「動作」とは、例えば、かき混ぜ作業又は拭き掃除作業などの「作業」をロボットアーム５に実行させるためのロボットアーム５の動きを意味する。１つ以上の「動作」を実行することで、前記「作業」をロボットアーム５に実行させることができる。
【００７４】
また、「キー動作」とは、ロボットアーム５を動作制御する制御プログラム上で、ある時刻でロボットアーム５にある「動作」を行なわせるためのコマンド（指令）を意味し、複数の「キー動作」(コマンド)で前記「動作」を構成し、複数の「キー動作」(コマンド)を時系列に前記制御装置で実行するように制御することでロボットアーム５の前記「動作」を実現することができる。
【００７５】
図５Ａの動作情報データベース１７の「位置姿勢」、すなわち、ロボットアーム５の手先位置及び姿勢に関する情報は、前述したロボットアーム５の手先位置及び姿勢を表し、原点位置Ｏｅと姿勢から、（ｘ，ｙ，ｚ，φ，θ，ψ）と表す。
【００７６】
力に関する情報は、ロボットアーム５が作業をする際に作業対象となる物体（作業対象物）に加える力に関する情報を示し、力のｘ、ｙ、ｚ、φ、θ、ψ方向の成分を（fｘ，fｙ，fｚ，fφ，fθ，fψ）と表す。例えば、ｆｚ＝５[Ｎ]である場合は、ｚ軸方向に５[Ｎ]の力を加えて、作業することを表す。具体的には、ＩＨクッキングヒーター６などの天板６ａを拭き掃除作業する際に、天板６ａの表面に力を加えて擦る場合などに使用する。
【００７７】
図５Ａの動作情報データベース１７の「フラグ」に関する情報は、各「キー動作ＩＤ」が示す動作情報に基づくロボットアーム５の手先位置及び姿勢及び力のうちのいずれの情報が有効か否かを示す値である。具体的には、図６は、図５Ａで示した３２ビットの数値で表し、各ビット数と位置姿勢と力とのパラメータは対応付けられている。図６において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値が有効の場合は「１」とし、手先位置及び姿勢及び力のそれぞれの値が無効の場合は「０」とする。例えば、０ビット目において、ロボットアーム５の手先位置のｘ座標の値が有効の場合には「１」とし、無効の場合には「０」とする。また、１ビット目において、ロボットアーム５の手先位置のｙ座標の値が有効の場合には「１」とし、無効の場合には「０」とする。また、２ビット目において、ロボットアーム５の手先位置のｚ座標の値が有効の場合には「１」とし、無効の場合には「０」とする。以後、順次、３，４，５ビット目は姿勢のφ、θ、ψの有効性を表す（すなわち、有効の場合は「１」とし、無効の場合は「０」とする）。さらに、６ビット目〜１１ビット目においては、力のそれぞれの成分が有効か無効かを示す（すなわち、有効の場合は「１」とし、無効の場合は「０」とする）。また、フラグに関する情報は、将来の拡張用に多め（３２ビット）に用意しているため、この例では１２ビット目から３１ビット目は使用しないので、「０」を入れておくが、１２ビットのみ記憶できる変数としても良い。図６は、図５Ａの動作情報データベース１７の「キー動作ＩＤ」の「１」のキー動作のフラグを示す。０ビット目から１ビット目、及び、３ビット目から５ビット目、及び、８ビット目が「１」となっているので、動作情報の手先位置及び姿勢情報うち、ｘ、ｙ、φ、θ、ψ情報、及び、力情報のうちのｆｚ情報のみが有効であることを示している。この結果、動作情報のうち、２ビット目、６〜７ビット目、及び９〜１１ビット目が「０」となっているので、z、fｘ、fｙ、fφ、fθ、fψの値にどういう値が記憶されていても無効であるとする。
【００７８】
図５Ａの「ハンド」に関する情報は、動作中のハンド３０の開閉の有無を表すフラグとし、ハンド３０が開いている場合は「０」と記載し、ハンド３０が閉じている場合は「１」と記載する。
【００７９】
図５Ａの動作情報データベース１７の「時間」に関する情報は、ロボットアーム５の各キー動作を実行するための時間である。すなわち、ロボットアーム５は「キー動作ＩＤ」に記憶された動作を、対応する「時間」に関する情報として記憶された時間をかけて行うことを表す。この「時間」は、絶対時刻ではなく、前の動作からの相対時間を表す。すなわち、「キー動作ＩＤ」が示す「位置姿勢」に、ロボットアーム５のハンド３０が移動するまでの時間又は「キー動作ＩＤ」が示す「力」になるまでの時間を表す。
【００８０】
図５Ａの動作情報データベース１７の「補正パラメータフラグ」に関する情報は、後述する動作補正部２０で、どのパラメータを補正するかを表す情報である。具体的には、図７に示した３２ビットの数値で表す。図７において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値の補正が可能な場合は「１」とし、手先位置及び姿勢及び力のそれぞれの値の補正が不可能な場合は「０」とする。例えば、０ビット目においては、手先位置のｘ座標の値の補正が可能な場合は「１」とし、手先位置のｘ座標の値の補正が不可能な場合は「０」とする。また、１ビット目においては、手先位置のｙ座標の値の補正が可能な場合は「１」とし、手先位置のｙ座標の値の補正が不可能な場合は「０」とする。また、２ビット目においては、手先位置のｚ座標の値の補正が可能な場合は「１」とし、手先位置のｚ座標の値の補正が不可能な場合は「０」とする。以後、順次、３，４，５ビット目は、姿勢のφ、θ、ψの補正可能性を表す（すなわち、補正が可能な場合は「１」とし、補正が不可能な場合は「０」とする）。さらに、６ビット目〜１１ビット目においては、力のそれぞれの成分の補正可能性を示す（すなわち、補正可能の場合は「１」とし、補正不可能の場合は「０」とする）。また、フラグに関する情報は、将来の拡張用に多め（３２ビット）に用意しているため、この例では、１２ビット目から３１ビット目は使用しないので、「０」を入れておくが、１２ビットのみ記憶できる変数としても良い。
【００８１】
動作情報データベース１７の情報は、予め設定してデータベース化しておくが、ロボットアーム５の手先の位置姿勢、力の入力及び更新は、ロボットアーム５を用いた教示を行ってもよく、以下に説明する。
【００８２】
図８は、本発明の前記第１実施形態におけるロボットアーム５を用いた人４Ａによる教示の状態を示す。
【００８３】
ロボットアーム５の手先の位置姿勢及び時間の情報は、以下のようにして作成する。すなわち、例えば、図８に示すように、ロボットアーム５を人４Ａが手４で直接把持して、後述するインピーダンス制御モードにて、ロボットアーム５を移動させる。このとき、ある一定時間毎（例えば０．２ｍｓｅｃ毎）にロボットアーム５の手先位置及び姿勢の情報を制御部２２及び制御パラメータ管理部２１を介してデータベース入出力部２８で取得する。取得したロボットアーム５の手先位置及び姿勢の情報を、時間と共に、データベース入出力部２８により動作情報データベース１７に記憶する。このようにしてロボットアーム５の手先の位置姿勢及び時間の情報を動作情報データベース１７に作成することができる。
【００８４】
さらに、動作情報データベース１７の力の情報は、データ入力ＩＦ２６を使用しかつデータベース入出力部２８を介して、加えたい力の値を動作情報データベース１７に入力することにより作成する。
【００８５】
なお、この例ではロボットアーム５の手先の位置姿勢及び時間の情報を連続的に作成したが、それぞれの位置姿勢及び時間の情報を、人４Ａが、キーボード、マウス、又はマイクなどの外部入力装置２６ａを使用して個別に入力しても良い。
【００８６】
−環境情報データベース−
環境情報データベース１８は、ロボットアーム５が動作する際のロボットアーム５の周辺の物体の位置及び状態に関する情報と、人４Ａ及びロボットアーム５が周辺環境に対して直接作用することによる物体の位置及び状態に関する情報（以下、これらの情報を環境情報と称す。）が記憶されている。環境情報は、後述する環境情報取得部１９で取得し、環境情報取得部１９からデータベース入出力部２８を介して環境情報データベース１８に記憶される。
【００８７】
次に、環境情報データベース１８の詳細について説明する。
図９Ａは、環境情報データベース１８のデータである環境情報を示す。
図９Ｂは、環境情報データベース１８のフラグの情報を示す。
【００８８】
（１）環境情報データベース１８に記憶された環境情報の「環境ＩＤ」の欄は、個々の環境情報を識別する環境ＩＤ番号を示す。
（２）環境情報の「画像ＩＤ」の欄は、環境情報取得部１９の一例として機能する第１及び第２画像撮像装置１５ａ及び１５ｂで撮像された画像を識別する画像ＩＤ番号を示す。ここでは、ファイル名を使用する。
【００８９】
（３）環境情報の「画像撮像装置ＩＤ」の欄は、２つの画像撮像装置１５ａ及び１５ｂのうちのどの画像撮像装置で撮影したかを識別するＩＤ番号である。この例では、第１画像撮像装置１５ａで撮影した場合には「１」、第２画像撮像装置１５ｂで撮像された場合には「２」で示す。
（４）環境情報の「力」の欄は、力検出部５３で検出された力に関する情報(力の情報)を示す。
力に関する情報は、ロボットアーム５の力検出部５３で検出した力に関する情報を示し、力のｘ、ｙ、ｚ、φ、θ、ψ方向の成分を（fｘ，fｙ，fｚ，fφ，fθ，fψ）と表す。
（５）環境情報の「フラグ」の欄は、環境情報の力及び画像のパラメータのうちのいずれの情報が有効か否かを示すフラグに関する情報を示す。
【００９０】
図９Ａの環境情報データベース１８の「フラグ」に関する情報は、各「環境ＩＤ」が示す環境情報の画像及び力の情報が有効か否かを示す値である。具体的には、図９Ｂで示した３２ビットの数値で表す。図９Ｂにおいて、各ビットで、画像及び力の値がそれぞれ有効の場合は「１」とし、画像及び力の値がそれぞれ無効の場合は「０」とする。本第１実施形態では０ビット目から５ビット目は力の情報、６ビット目は、画像の情報を示す。例えば、０ビット目において、力のｘ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。また、１ビット目において、力のｙ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。また、２ビット目において、力のｚ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。以後、順次、３，４，５ビット目は力のφ、θ、ψの有効性を表す。すなわち、有効の場合は「１」とし、無効の場合は「０」とする。さらに、６ビット目においては、第１又は第２画像撮像装置１５ａ又は１５ｂで撮影された画像が有効か無効かを示す（すなわち、有効の場合は「１」とし、無効の場合は「０」とする）。
【００９１】
また、フラグに関する情報は、将来の拡張用に多め（３２ビット）に用意しているため、この例では７ビット目から３１ビット目は使用しないので、「０」を入れておくが、６ビットのみ記憶できる変数としても良い。図９Ｂでは、０ビット目から５ビット目が「０」、６ビット目が「１」となっているので、環境情報の画像情報のみが有効であることを示す。
【００９２】
−制御ルールデータベース−
制御ルールデータベース１６は、ロボットアーム５が作動する際のロボットアーム５の制御ルールに関する情報（以下、制御ルール情報と称す）が記憶されている。制御ルール情報は、後述する制御ルール生成部２３で生成し、データベース入出力部２８により、制御ルール生成部２３と制御ルールデータベース１６との間で、生成された情報又は生成に必要な情報などが入出力される。また、データベース入出力部２８により、制御ルール生成部２３と他のデータベース１８，１７，２９との間で、生成に必要な情報などが入出力される。
【００９３】
次に、制御ルールデータベース１６の詳細について図１０Ａ及び図１０Ｂを用いて説明する。
【００９４】
図１０Ａと図１０Ｂは、制御ルールデータベース１６の制御ルールの一例を示す。
（１）制御ルールデータベース１６に記憶された制御ルールの「作業ＩＤ」の欄は、作業に関する情報を識別する作業ＩＤ番号を示す。
（２）制御ルールの「環境ＩＤ」の欄は、個々の環境情報を識別する環境ＩＤ番号を示し、環境情報データベース１８の環境ＩＤの値を参照可能とする。環境情報データベース１８の環境ＩＤの値を参照可能としない場合は、「−１」として記憶する。
【００９５】
（３）制御ルールの「動作ＩＤ」の欄は、作業の中のロボットアーム５の動作を識別する動作ＩＤ番号を示し、動作情報データベース１７の動作ＩＤを参照可能とする。
（４）制御ルールの「進捗情報」の欄は、ロボットアーム５の所定の動作が動作中か否かを示し、動作中である場合は「１」とし、動作中でない場合は「０」として、データベース入出力部２８により制御ルールデータベース１６に記憶する。具体的には、動作指令部２７によって、作業が開始されると、ロボットアーム５により現在動作（実行）中の動作については「１」をデータベース入出力部２８により制御ルールデータベース１６に記憶し、現在動作(実行)していない動作については「０」をデータベース入出力部２８により制御ルールデータベース１６に記憶する。
【００９６】
−検出部選択ルールデータベース−
検出部選択ルールデータベース２９は、ロボットアーム５を操作して環境情報を取得する際に、ロボットアーム５の制御モードにより、複数の環境情報の中から優先的に取得する環境情報の種別を選択するためのルール（検出部選択ルール）が記憶されている。検出部選択ルールデータベース２９は、ロボット１に予め用意されており、データベース入出力部２８により、検出部選択ルールの情報が入出力される。
【００９７】
次に、図１１Ａ、図１１Ｂを用いて検出部選択ルールデータベース２９の詳細を説明する。
【００９８】
図１１Ａは、検出部選択ルールデータベース２９の検出部選択ルールを示す。
図１１Ｂは、検出部選択ルールデータベース２９の検出部選択ルールの環境情報の種別に関する情報を示す。
【００９９】
（１）検出部選択ルールデータベース２９に記憶された検出部選択ルールの「制御モード」の欄は、ロボットアーム５の制御モードに関する情報を示す。具体的には、制御装置本体部１１の制御パラメータ管理部２１に関連して後述する。
【０１００】
（２）検出部選択ルールの「環境情報の種別ＩＤ」の欄は、環境情報の種別を識別する識別ＩＤを示す。環境情報の識別ＩＤは、検出部である環境情報取得部１９、例えば、ロボットアーム５が搭載する各種センサ(例えば、力検出部５３)又は、ロボット１の各種センサ(例えば、第１又は第２画像撮像装置１５ａ又は１５ｂ)で取得した環境情報の種別を識別するためのＩＤである。図１１Ａの「環境情報種別ＩＤ」は、図１１Ｂで定義されている。具体的には、検出部選択ルールとして、図１１Ｂのように、「環境情報の種別ＩＤ」が「１」の場合は、検出部の一例としての第１又は第２画像撮像装置１５ａ又は１５ｂで撮像した画像を表し、「環境情報の種別ＩＤ」が「２」の場合は、検出部の別の例としての力検出部５３で検出された力を表すとする。
【０１０１】
−データベース入出力部−
データベース入出力部２８は、各データベース群（動作情報データベース１７と、環境情報データベース１８と、制御ルールデータベース１６と、検出部選択ルールデータベース２９と）と、動作指令部２７と、制御ルール生成部２３と、環境情報取得部１９と、及び動作補正部２０との間でのデータの入出力を行う。よって、データベース入出力部２８は、動作情報取得部及び補正動作情報取得部の一例として機能することができる。すなわち、データベース入出力部２８は、ロボットアーム５の動作に対応する、ロボットアーム５の位置、姿勢、及び、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベース１７から前記動作情報を取得する動作情報取得部、又は、ロボットアーム５の動作に対応する、ロボットアーム５が作業対象物９，４６，７２，７４に加える力の時系列の動作情報として記憶された動作情報データベース１７から前記動作情報を取得する動作情報取得部として機能することができる。また、データベース入出力部２８は、人４Ａがロボットアーム５を操作して、ロボットアーム５の前記動作を補正する際に、動作情報取得部で取得した動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を取得する補正動作情報取得部、又は、人４Ａがロボットアーム５を操作して、ロボットアーム５の動作を補正する際に、動作情報取得部で取得した動作情報に関連しかつロボットアーム５が加える力に関する補正動作情報を取得する補正動作情報取得部としても機能することができる。
【０１０２】
もちろん、データベース入出力部２８を、動作情報の入出力を行う動作情報取得部と、補正動作情報の入出力を行う補正動作情報取得部と、その他の情報の入出力を行う他情報取得部とに分割してもよい。
【０１０３】
−環境情報取得部−
環境情報取得部１９は、ロボットアーム５が作用する作業対象物９，４６，７２，７４に関する情報である環境情報、すなわち、ロボットアーム５が動作する際のロボットアーム５の周辺の物体の位置及び状態に関する情報と、人４Ａ及びロボットアーム５が周辺環境に対して直接作用することによる物体の位置及び状態に関する情報を取得する。具体的には、第１又は第２画像撮像装置１５ａ又は１５ｂで撮像された画像と力検出部５３で検出された力の情報とを取得し、第１又は第２画像撮像装置１５ａ又は１５ｂで取得した画像及び力検出部５３で検出された力の情報を、環境情報取得部１９から制御ルール生成部２３及び動作指令部２７へ出力する。よって、第１及び第２画像撮像装置１５ａ及び１５ｂ及び力検出部５３は、それぞれ、環境情報取得部１９の一例として機能する。
【０１０４】
−動作指令部−
動作指令部２７には、人４Ａがデータ入力ＩＦ２６により指定した「作業ＩＤ」の作業の動作開始の指令が、データ入力ＩＦ２６から入力される。動作指令部２７は、指定された「作業ＩＤ」の作業の動作開始の指令を受けて、制御ルールデータベース１６の指定された「作業ＩＤ」をデータベース入出力部２８を介して参照して、その「作業ＩＤ」の作業を開始させるように制御パラメータ管理部２１へ指令する。
【０１０５】
以下、動作指令部２７の機能について説明する。
人４Ａは、データ入力ＩＦ２６により、表示部９５で作業などが表示された表示画像を使用しつつ、制御ルールデータベース１６の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業を選択して、選択した作業情報を動作指令部２７に入力して指定する。
【０１０６】
動作指令部２７は、データベース入出力部２８を介して制御ルールデータベース１６を参照し、指定された「作業ＩＤ」に対応する「動作ＩＤ」の動作を実行する。ここで、「動作ＩＤ」の動作を実行するとは、動作指令部２７が、データベース入出力部２８を介して動作情報データベース１７を参照し、対応するキー動作（具体的には、位置情報、姿勢情報、時間情報、及び、力情報）を基にフラグ（有効か無効かを示すフラグ）に従って制御モードを設定してロボットアーム５が動作するように、制御パラメータ管理部２１へ指令を出すことを意味する。
【０１０７】
動作指令部２７がデータベース入出力部２８を介して制御ルールデータベース１６を参照するとき、１つの「作業ＩＤ」に関する作業の中に複数の「環境ＩＤ」の環境情報が存在すると動作指令部２７で判断した場合又は複数の「動作ＩＤ」の動作が存在すると動作指令部２７で判断した場合には、それぞれの環境情報又は動作を制御ルールデータベース１６の上から下に順番に実行する。
【０１０８】
ここで、「環境ＩＤ」が「−１」の値の場合には、環境情報データベース１８の「環境ＩＤ」の値を参照しないことを意味している。よって、ロボットアーム５が動作している周辺の環境に拘わらず、「動作ＩＤ」で記述されているＩＤと同じ「動作ＩＤ」の動作を、動作指令部２７がデータベース入出力部２８を介して動作情報データベース１７から参照する。
【０１０９】
以下、人４Ａがデータ入力ＩＦ２６により、「作業ＩＤ」の「１」を選択した場合と、「作業ＩＤ」の「２」を選択した場合とについて説明する。
【０１１０】
（「作業ＩＤ」の「１」を選択した場合）
具体的には、図１０Ａの「作業ＩＤ」が「１」の作業が選択された場合は、「作業ＩＤ」が「１」の作業の「環境ＩＤ」が「−１」の値である場合には、このときの「動作ＩＤ」は「１」の動作である。従って、動作指令部２７は、環境に拘わらず、ロボットアーム５に動作を実行させるために、データベース入出力部２８を介して動作情報データベース１７の「動作ＩＤ」を参照する。この例では、制御ルールデータベース１６の「動作ＩＤ」には「１」と記憶されており、動作指令部２７は、データベース入出力部２８を介して、図５Ａの動作情報データベース１７の「動作ＩＤ」が「１」の動作の「キー動作ＩＤ」の「１」、「２」、「３」、「４」、「５」、「６」、「７」、「８」のキー動作(コマンド)を順番に参照する。
【０１１１】
動作情報データベース１７の「キー動作ＩＤ」が「１」のキー動作(コマンド)の場合には、「フラグ」は、０、１、３、４、５、８ビット目が「１」であるので、ロボットアーム５の手先位置のｘ、ｙ、φ、θ、ψの値、及び、力のｚ座標の値が有効ということを示している。よって、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸については位置制御モードで動作させ、ｚ軸については力制御モードで動作するように、動作指令部２７からデータベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す（力ハイブリッドインピーダンス制御の指令と同等）。同様に、「キー動作ＩＤ」が「２」〜「８」のキー動作(コマンド)についても、力ハイブリッドインピーダンス制御モードで動作するように、動作指令部２７からデータベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。
【０１１２】
（「作業ＩＤ」の「２」を選択した場合）
同様に、図１０Ａの「作業ＩＤ」が「２」の作業が選択された場合には、「作業ＩＤ」が「２」の作業の「環境ＩＤ」が「−１」の値であり、このときの「動作ＩＤ」は「２」の動作である。従って、動作指令部２７は、環境に拘わらず、ロボットアーム５に動作を実行するために、データベース入出力部２８を介して動作情報データベース１７の「動作ＩＤ」を参照する。この例では、制御ルールデータベース１６の「動作ＩＤ」には「２」と記憶されており、動作指令部２７は、データベース入出力部２８を介して、図５Ａの動作情報データベース１７の「動作ＩＤ」が「２」の動作の「キー動作ＩＤ」が「１０」、「１１」、「１２」、「１３」、「１４」、「１５」、「１６」、「１７」のキー動作(コマンド)を順番に参照する。
【０１１３】
このとき、「キー動作ＩＤ」が「１０」のキー動作(コマンド)の場合には、「フラグ」が０〜５ビット目が「１」であるので、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸の全ての軸について、位置制御モードで動作するように、動作指令部２７から、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。
【０１１４】
外部入力装置２６ａにより入力されて、動作が実行されると、動作指令部２７は、データベース入出力部２８を介して、制御ルールデータベース１６の動作中の「動作ＩＤ」の「進捗情報」に「１」を設定し、動作中の「動作ＩＤ」の「進捗情報」が「１」であるとの情報を、データベース入出力部２８により制御ルールデータベース１６に記憶する。その他の「動作ＩＤ」の「進捗情報」については「０」を動作指令部２７に設定し、その他の「動作ＩＤ」の「進捗情報」が「０」であるとの情報を、データベース入出力部２８により制御ルールデータベース１６に記憶する。
【０１１５】
ここで、具体的な作業例について説明する。
人４Ａによりデータ入力ＩＦ２６を使用して制御ルールデータベース１６の作業の中の「作業ＩＤ」が「１」である作業が選択された場合は、動作指令部２７は、ｚ軸方向を力制御モードで、その他の軸方向は位置制御モードで作業するように、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。その結果、制御パラメータ管理部２１は、後述するように、前記制御モードに従ってロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２による制御の下に、図１２に示すように、ロボットアーム５は、ＩＨクッキングヒーターなどの調理装置６の天板６ａの拭き掃除作業を開始する。
【０１１６】
人４Ａによりデータ入力ＩＦ２６を使用して制御ルールデータベース１６の作業の中の「作業ＩＤ」が「２」である作業が選択された場合は、動作指令部２７は、位置制御モードでかき混ぜ動作をするように、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。その結果、制御パラメータ管理部２１は、後述するように、前記制御モードに従ってロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２による制御の下に、図１３Ａに示すように、ロボットアーム５はかき混ぜ動作を開始する。
【０１１７】
一方、図１０Ａの「作業ＩＤ」が「１」の作業が選択された場合であって、かつ、「作業ＩＤ」が「１」の作業の「環境ＩＤ」が「−１」の値でない場合には、「環境ＩＤ」で記憶されたＩＤと同じ「環境ＩＤ」の環境情報を、環境情報データベース１８から動作指令部２７がデータベース入出力部２８を介して参照する。「環境ＩＤ」と同じ「環境ＩＤ」の環境情報（具体的には、画像の情報と力の情報）のうちのフラグにより有効な環境情報が、後述する環境情報取得部１９で取得した環境情報と合致したと動作指令部２７で判断した場合のみ、「動作ＩＤ」の動作を動作指令部２７で実行する。詳細については、制御ルール生成部２３と関連して後述する。
【０１１８】
また、選択された「作業ＩＤ」の中に複数の「環境ＩＤ」と「動作ＩＤ」とが存在する場合は、それぞれの「環境ＩＤ」とそれぞれの「動作ＩＤ」とのフラグ（ここでのフラグとは、「動作ＩＤ」で動作情報データベース１７を動作指令部２７がデータベース入出力部２８を介して参照し、そこで記憶されているフラグを意味する。）により、最終的に実行すべき動作情報を、動作指令部２７の動作算出部２により算出する。動作算出部２の詳細については、制御ルール生成部２３に関連して後述する。
【０１１９】
−動作補正部−
動作補正部２０は、制御装置本体部１１よりロボットアーム５を力制御モードで制御している最中又は制御部２２の位置制御部５９の制御によりロボットアーム５が位置制御モードで移動している最中に補正動作情報取得部の一例としてのデータベース入出力部２８で取得したそれぞれの時間での補正動作情報に応じて動作情報を補正することができる。すなわち、動作補正部２０は、ロボットアーム５の制御動作中に、データ入力ＩＦ２６から動作指令部２７を介して動作補正操作の開始の指令を受ける。動作補正部２０は、データベース入出力部２８を介して動作情報データベース１８の補正パラメータフラグに基づいて、ロボットアーム５の制御パラメータを切り替えることで、補正された動作（補正動作）でロボットアーム５を動作し、人４Ａがロボットアーム５に力を加えることで、データベース入出力部２８を介して制御ルールデータベース１６のロボットアーム５の制御ルールを修正する。
【０１２０】
ここで、前記ロボットアーム５の制御動作は、後述する（ｉ）位置制御モード、（ｉｉｉ）力制御モード、若しくは、（ｖ）それらを方向別に組み合わせた力ハイブリッドインピーダンス制御モード、のうち、いずれかのモードで動作することを示す。
【０１２１】
また、前記ロボットアーム５の補正動作は、ロボットアーム５に人４Ａが加えた力によりロボットアーム５の動作を補正する動作で、後述する（ｉｉ）インピーダンス制御モード、（ｖｉ）高剛性位置制御モード、若しくは、（ｖ）それらを方向別に組み合わせた力ハイブリッドインピーダンス制御モード、のうち、いずれかのモードで動作することを示す。
【０１２２】
以下、動作補正について説明する。
人４Ａは、データ入力ＩＦ２６により、制御ルールデータベース１６の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業を選択して、動作指令部２７により動作を実行する。
【０１２３】
このとき、図１０Ａの「作業ＩＤ」が「２」の作業が選択された場合には、動作指令部２７は、位置制御モードでかき混ぜ動作をするように制御パラメータ管理部２１へ指令を出す。よって、図１３Ａに示すように、ロボットアーム５はかき混ぜ動作を開始する。ここで、「作業ＩＤ」が「２」の作業の場合には「環境ＩＤ」が「−１」の値であるため（図１０Ａ参照）、ロボットアーム５が動作する環境情報に関わらず、「動作ＩＤ」で記憶された動作で動作（具体的には、「動作ＩＤ」が「２」の動作で動作）する。
【０１２４】
次に、人４Ａがデータ入力ＩＦ２６から動作指令部２７を介して動作補正部２０に動作補正操作の開始を指示すると、動作補正部２０は、動作補正の処理に移行する。
図１３は、本発明の前記第１実施形態におけるロボットアーム５の補正動作を説明する図である。
【０１２５】
本第１実施形態では、レードル９をハンド３０に保持したロボットアーム５が、図１３Ａに示す鍋３ａのかき混ぜを中止し、図１３Ｅに示すように、鍋３ａに比べて鍋の直径が大きい鍋３ｂをかき混ぜる動作を行う場合について説明する。ここで、動作補正を行わない場合、「作業ＩＤ」が「２」の作業は「環境ＩＤ」が「−１」の値であるため、鍋の大きさに拘わらず、「動作ＩＤ」で記述された動作を実行するため、鍋３ａを、直径が大きい鍋３ｂに交換したとしても、図１３Ｂのように直径の小さなかき混ぜを行うことになる。このため、鍋３ｂの中の具材が、うまく混ざらないという問題が発生する。
【０１２６】
そこで、人４Ａは、鍋３ｂの大きさを確認して、図１３Ｅのように鍋３ｂの直径に合わせて、レードル９で大きくかき混ぜるために、ロボットアーム５のかき混ぜ動作を補正する。
このため、人４Ａは、以下の２つの入力操作を行う。
【０１２７】
第１の入力操作は、作業環境が変化することを知らせる操作（以下、環境変化通知操作と称す。）である。この操作は、本第１実施形態では、かき混ぜ動作の対象の鍋３ａが直径の大きな鍋３ｂに変わった事をロボットアーム５に知らせる操作である。
第２の入力操作は、実際のロボットアーム５の動作を補正するための操作（以下、動作補正操作と称す。）である。
【０１２８】
本第１実施形態では、かき混ぜ動作を図１３Ｅのように大きくかき混ぜるように動作を補正するための操作である環境変化通知操作を開始した時点で、ロボットアーム５のかき混ぜ動作は停止し、次に、環境変化通知操作が終了し、ロボットアーム５のかき混ぜ動作を再開する。人４Ａはロボットアーム５がかき混ぜ動作している最中に動作補正操作を行う。
【０１２９】
人４Ａは、データ入力ＩＦ２６により、環境変化通知操作の開始の指令を動作指令部２７に入力する。動作指令部２７に環境変化通知操作の開始の命令が入力されると、動作指令部２７により、ロボットアーム５の動作を停止させる。そして、人４Ａによる環境変化通知操作が終了した時点で、引き続き、人４Ａはデータ入力ＩＦ２６により、動作補正操作の開始の指令を動作指令部２７に入力する。動作指令部２７が、動作補正操作の開始の指令をデータ入力ＩＦ２６を介して受け取ると、動作指令部２７は環境変化通知操作が終了したと判断して、動作補正操作の開始のためにロボットアーム５の動作を再開する。このとき、人４Ａはロボットアーム５の動作に対して動作補正操作を行う。
【０１３０】
動作指令部２７は、データ入力ＩＦ２６を介して環境変化通知操作の指令又は動作補正操作の指令を受けると、動作補正部２０及び後述する制御ルール生成部２３にそれぞれの環境変化通知操作の開始の情報又は動作補正操作の開始の情報を出力する。
【０１３１】
前記操作の具体的な指令は、位置制御モードでかき混ぜ動作をロボットアーム５が実行している最中に、人４Ａが手４でロボットアーム５を把持してロボットアーム５を補正したい方向に力をかける。このとき、図３０Ａのように、人４Ａがロボットアーム５にかけた力（後述する力検出部５３で検出された力）が、ある閾値（図３０Ａの値ｔ１）以上であり、その状態がある一定時間（図３０Ａの時間ｔｉｍｅ  １）以上続いた場合（後述する、制御パラメータ管理部２１のタイマ２１ａで検出された時間が前記ある一定時間以上続いた場合）に、環境変化通知操作の開始の指令が入力されたと動作指令部２７が判断する。逆に言えば、図３０Ｂのように、人４Ａがロボットアーム５にかけた力が、前記ある閾値（図３０Ｂの値ｔ２）未満の場合、又は、前記ある閾値（図３０Ｂの値ｔ２）以上であっても、その状態が前記ある一定時間（図３０Ａの時間ｔｉｍｅ  １）未満の時間（図３０Ｂの時間ｔｉｍｅ  ２）の場合に、環境変化通知操作の開始の指令は入力されていないと、動作指令部２７が判断する。人４Ａによる環境変化通知操作の開始の指令が入力されたと動作指令部２７で判断すると、動作指令部２７は、環境変化通知操作の開始の情報を動作補正部２０に入力する。
【０１３２】
環境変化通知操作の開始の指令が入力されたと動作指令部２７が判断すると、動作指令部２７により、かき混ぜ動作が停止される。このかき混ぜ動作の停止動作により、人４Ａは、環境変化通知操作が開始したとロボット１が判断したことがわかる。なお、後述するように、力検出部５３で検出された力の情報は制御パラメータ管理部２１に入力され、前記力の情報とタイマ２１ａで検出された時間の情報とが、制御パラメータ管理部２１から動作指令部２７に入力されて、動作指令部２７で前記判断が実行できるように構成している。
【０１３３】
次に、人４Ａが前記環境変化通知操作を行った後で、人４Ａがロボットアーム５にかけた力が前記閾値（図３０Ａの値ｔ１）より小さくなったと動作指令部２７により判断した場合には、動作指令部２７により環境変化通知操作が終了したと判断し、動作指令部２７により位置制御モードでのかき混ぜ動作を再開する。かき混ぜ動作を再開することにより、人４Ａは、環境変化通知操作が終了したとロボット１が判断したことがわかる。
【０１３４】
次に、前記したように環境変化通知操作が終了したとロボット１が判断したことを人４Ａが分かったのち、人４Ａがロボットアーム５を手４で把持して、ロボットアーム５の動作を補正したい方向にロボットアーム５に力をかける。図３０Ａのように、ロボットアーム５にかけた力が前記ある閾値（図３０Ａの値ｔ１）以上であり、その状態が前記ある一定時間（図３０Ａの時間ｔｉｍｅ  １）以上続いたと動作指令部２７が判断した場合に、人４Ａによる動作補正操作の開始の指令が入力されたと動作指令部２７で判断する。逆に言えば、図３０Ｂのように、人４Ａがロボットアーム５にかけた力が、前記ある閾値（図３０Ｂの値ｔ２）未満の場合、又は、前記ある閾値（図３０Ｂの値ｔ２）以上であっても、その状態が前記ある一定時間（図３０Ａの時間ｔｉｍｅ  １）未満の時間（図３０Ｂの時間ｔｉｍｅ  ２）の場合に、動作補正操作の開始の指令が入力されていないと、動作指令部２７が判断する。人４Ａによる動作補正操作の開始の指令が入力されたと動作指令部２７で判断すると、動作指令部２７は、動作補正操作の開始の情報を動作補正部２０に入力する。なお、一定時間経過しても、動作補正操作が開始されなかった場合には、環境変化通知操作を無効とし、かき混ぜ動作を再開する。
動作補正操作の開始の指令が入力されたと動作指令部２７で判断すると、動作指令部２７の指令により、ロボットアーム５のかき混ぜ動作の速度が遅くなり(例えば、動作補正操作の開始前の通常のかき混ぜ動作のときの速度の半分の速度)、人４Ａは、動作補正操作の開始の指令が入力されたとロボット１が判断したことがわかる。さらに、かき混ぜ動作の速度が遅くなるため、動作中のロボットアーム５の動作を人４Ａが補正しやすくなる。ロボットアーム５の動作を人４Ａが補正している間、その補正動作の情報は、後述するように、動作補正部２０で取得する。ロボットアーム５の動作を人４Ａが補正した後、人４Ａがかけた力が前記閾値（図３０Ａの値ｔ１）より小さくなったと動作指令部２７が判断した場合には、動作指令部２７により動作補正操作を終了し、動作指令部２７によりロボットアーム５の速度を補正前の速度に戻し、さらに、動作指令部２７及び動作補正部２０により、補正した動作を実行する。動作補正操作が終了したと動作指令部２７で判断すると、動作指令部２７の指令により、ロボットアーム５のかき混ぜ動作の速度が速くなり(例えば、動作補正操作時のかき混ぜ動作のときの速度の二倍の速度)、人４Ａは、動作補正操作が終了したとロボット１が判断したことがわかる。
【０１３５】
なお、この例では、人４Ａが加えた力により、環境変化通知操作及び動作補正操作の開始及び終了を動作指令部２７で自動的に判断して自動で切り替えたが、人４Ａがボタンを押すなどのデータ入力ＩＦ２６を使用することにより、環境変化通知操作及び動作補正操作の開始及び終了を手動で切り替えても良い。さらに、それぞれの操作によりロボットアーム５の動作を停止したり、遅くすることで、どのような操作をしているかを人４Ａに知らせたが、例えば、作業台７の壁面７ａなどに設置された表示部９５の一例としてのモニタなどに、環境変化通知操作又は動作補正操作のどちらの操作をしているかを表示しても良い。
【０１３６】
一方、動作補正部２０は、動作指令部２７から環境変化通知操作の開始の情報を受けたとき、人４Ａからロボットアーム５を介して入力される環境変化通知操作の情報を取得するため、補正したい「作業ＩＤ」の「動作ＩＤ」について、動作情報データベース１７の「動作ＩＤ」のフラグに従って制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出力する。
【０１３７】
具体的には、図１０Ａの「作業ＩＤ」の「２」の作業の「動作ＩＤ」の「２」の動作に対応する、動作情報データベース１８の「キー動作ＩＤ」が「１０」〜「１７」のキー動作(コマンド)について説明する。図５Ａにおいて、各「キー動作ＩＤ」のフラグが、０〜５ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸のみデータが有効である。従って、ロボットアーム５のｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸を、人４Ａが加えた力を用いて、動作補正操作することが可能となる。そして、ロボットアーム５のｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸について、位置制御モードからインピーダンス制御モード（人４Ａの力を検知した方向にロボットアーム５を移動させるモード）で動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。位置制御モードからインピーダンス制御モードに切り替わるため、人４Ａの力が加わっていない状態ではロボットアーム５は停止し、人４Ａが力を加えると、人４Ａが加えた力の方向にロボットアーム５を移動させることができる。
【０１３８】
次に、環境変化通知操作の開始後に、図１３Ｃに示すように、鍋３ａが直径の大きな鍋３ｂに変わった事をロボットアーム５に知らせる操作（環境変化通知操作）を人４Ａが行う。具体的には、図１３Ｃに示すように人４Ａがロボットアーム５のハンド３０又はハンド３０の近傍の前腕リンク３２を手４で直接把持して、鍋３ｂの鍋底面に平行（ｘ−ｙ平面）に力をかけると、インピーダンス制御モードにより、人４Ａの力を力検出部５３で検知して、人４Ａがロボットアーム５に力をかけた方向（矢印ＡＸ方向）にロボットアーム５を移動させる。この例では、この矢印ＡＸ方向にロボットアーム５を人４Ａにより移動させる操作が環境変化通知操作である。
【０１３９】
次いで、環境変化通知操作後に、人４Ａが力を加えて移動させた補正動作の情報を動作補正部２０で取得するために、制御パラメータ管理部２１からのロボットアーム５の手先位置を動作補正部２０で取得し、動作補正部２０から後述する制御ルール生成部２３へ出力する。
【０１４０】
次に、動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介して動作補正操作の開始の指令を受けて、動作情報データベース１７の補正パラメータフラグに従って、制御モードを設定して動作するように、動作補正部２０から制御パラメータ管理部２１へ指令を出す。具体的には、図１０Ａの「作業ＩＤ」が「２」の作業の「動作ＩＤ」が「２」の動作に対応する、動作情報データベース１８の「キー動作ＩＤ」が「１０」〜「１７」のキー動作(コマンド)について説明する。図５Ａにおいて、それぞれの「キー動作ＩＤ」の補正パラメータフラグは、０，１，２ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、ｘ軸、ｙ軸、ｚ軸のみ補正が可能である。従って、ロボットアーム５のｘ軸、ｙ軸、ｚ軸が人４Ａの加えた力を用いて補正することが可能となる。そして、ロボットアーム５のｘ軸、ｙ軸、ｚ軸について、位置制御モードからハイブリッドインピーダンス制御モード（位置制御モードで移動しながら、人４Ａの力を検知した方向にインピーダンス制御で移動させるモード）で動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０１４１】
そして、図１３Ｄに示すように、人４Ａがロボットアーム５を直接把持して、鍋３ｂの直径に合わせて大きく混ぜるように鍋３ｂの底面沿いの方向に力をかけると、ロボットアーム５は、前述したようにハイブリッドインピーダンス制御モードを行う。その結果、ロボットアーム５は、（１）位置制御モードによるロボットアーム５の移動と、（２）インピーダンス制御モードによる、人４Ａの力をかけた方向にロボットアーム５をｘ軸方向、又は、ｙ軸方向、又は、ｘ軸方向及びｙ軸方向への移動とを実行する。人４Ａは、ｘ−ｙ平面において、鍋３ｂ内で、鍋３ａの場合よりも円状に大きくかき混ぜるように補正したいことから、人４Ａはロボットアーム５を図１３Ｄに示すように、鍋底面に平行にロボットアーム５に力を加えて移動させる。人４Ａが力を加えて移動させたロボットアーム５の動作を動作補正部２０で取得するために、制御パラメータ管理部２１からのロボットアーム５の動作補正操作の情報として手先位置及び時間を所定の一定時間毎(例えば０．２秒毎)に動作補正部２０で取得し、取得した手先位置及び時間を、後述する制御ルール生成部２３へ動作補正部２０から出力する。ロボットアーム５の手先位置は、エンコーダ４４を介して制御パラメータ管理部２１より取得する。さらに、時間情報は、制御パラメータ管理部２１に備えたタイマ２１ａにより取得する。また、制御パラメータ管理部２１には、力検出部５３で検出された力の情報も入力されるため、この力検出部５３で検出された力の情報と、タイマ２１ａによる時間情報とが制御パラメータ管理部２１から動作指令部３７に入力されて、例えば、補正動作の環境変化通知操作及び動作補正操作の開始及び終了の判断を前記したように行うことができる。
【０１４２】
なお、この時間に関する情報は、人４Ａが作業を選択して、開始指令をデータ入力ＩＦ２６を介して動作指令部２７に出した時点を０とした相対時間とする。
【０１４３】
−制御ルール生成部−
制御ルール生成部２３は、動作補正部２０で補正された動作情報と環境情報取得部１９で取得した環境情報とを対応付けることにより、ロボットアーム５が自動で動作するための制御ルールを生成することができる。すなわち、制御ルール生成部２３は、後述するロボットアーム５の制御動作中に、データ入力ＩＦ２６から動作指令部２７を介して、動作補正部２０と同様に、動作補正操作の開始の指令を受ける。制御ルール生成部２３は、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報とに基づいて、制御ルールを生成し、制御ルールデータベース１６に記憶する。ここで、ロボットアーム５の制御動作は、（ｉｉ）インピーダンス制御モード、（ｉ）位置制御モード、（ｉｖ）力制御モード、若しくは、（ｖ）それらを方向別に組み合わせた力ハイブリッド制御モードのうち、いずれかのモードである。
【０１４４】
制御ルール生成部２３には、環境変化通知操作の開始の指令を受けて、人４Ａからの環境変化通知操作にて生成したロボットアーム５の手先位置及び時間が、動作補正部２０から入力される。また、制御ルール生成部２３には、環境変化通知操作により、環境情報取得部１９にて取得した環境情報がデータベース入出力部２８を介して入力される。すなわち、環境情報は、ロボットアーム５への人の環境変化通知操作に応じて、環境情報取得部１９で取得して、データベース入出力部２８を介して制御ルール生成部２３に入力される。また、制御ルール生成部２３には、環境変化通知操作の開始時の動作中の「動作ＩＤ」を動作情報データベース１７からデータベース入出力部２８を介して参照し、その「動作ＩＤ」の「キー動作ＩＤ」のフラグに関する情報からロボットアーム５の制御モードに関する情報を取得する。
【０１４５】
具体例として、図１０Ａの「作業ＩＤ」が「２」の作業で動作中の「動作ＩＤ」が「２」の動作の「キー動作ＩＤ」が「１０」〜「１７」のキー動作を、制御ルール生成部２３が、動作情報データベース１８をデータベース入出力部２８を介して参照する。それぞれの「キー動作ＩＤ」のフラグが、図５Ａでは、０〜５ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸のみデータが有効であると動作指令部２７で判断することができる。従って、ロボットアーム５のｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、インピーダンス制御モードとなっている。
【０１４６】
制御ルール生成部２３は、環境変化通知操作時における（１）ロボットアーム５の移動方向の制御モードと（２）検出部選択ルールデータベース２９の情報とに基づいて、複数の環境情報の中から制御ルールを生成するための環境情報の種別を選択する。具体的には、図１０Ａの「作業ＩＤ」が「２」の作業の環境変化通知操作の開始のタイミングでは、図１３Ｃのように、ｘ軸方向及びｙ軸方向で環境変化通知操作を行っている。ｘ軸及びｙ軸はインピーダンス制御モードで補正しているので、検出部選択ルールデータベース２９の検出部選択ルールの一例を示す図１１Ａより、「制御モード」が「インピーダンス制御モード」のときの「環境情報の種別ＩＤ」は「１」となり、図１１Ｂより、「環境情報の種別ＩＤ」が「１」のときは「画像」を制御ルール生成部２３で選択する。さらに、図１３Ｃでは、ｘ軸方向及びｙ軸方向に環境変化通知操作をしているので、ｘ−ｙ平面を撮影可能な第１画像撮像装置１５ａでの画像を環境変化通知操作の方向により環境情報取得部１９で取得し制御ルール生成部２３で選択し、第１画像撮像装置１５ａからの画像を制御ルール生成部２３で取得する。なお、ｘ−ｙ平面を撮影可能な第１画像撮像装置１５ａが複数存在する場合には、それらの複数の第１画像撮像装置１５ａの中で、環境変化通知操作の前後で画像が最も変化した画像を撮影した第１画像撮像装置１５ａを制御ルール生成部２３で選択する。
【０１４７】
図１４は、第１画像撮像装置１５ａにより、鍋３の上方から取得した画像を示す。
第１画像撮像装置１５ａにより制御ルール生成部２３で取得した画像は、データベース入出力部２８を介して環境情報データベース１８に記憶する。
【０１４８】
なお、この例では、ｘ−ｙ平面において環境変化通知操作をしたので、第１画像撮像装置１５ａの画像を制御ルール生成部２３で選択したが、ｙ−ｚ平面及びｘ−ｚ平面において環境変化通知操作をした場合には、第２画像撮像装置１５ｂの画像を制御ルール生成部２３で選択する。制御ルール生成部２３で選択した画像は、制御ルール生成部２３がデータベース入出力部２８を介して環境情報データベース１８に記憶する。さらに、変形例として、図３６Ｃと図３６Ｄのように、ｘ−ｙ平面の環境変化通知（鍋３の開口寸法の変化通知）の後に、ｙ−ｚ平面及びｘ−ｚ平面の環境変化（鍋３の深さ寸法の変化通知）を通知した場合には、制御ルール生成部２３が第１画像撮像装置１５ａと第２画像撮像装置１５ｂの両方の画像を選択する。
【０１４９】
前記例で、ｘ−ｙ平面において環境変化通知操作をしたとき、具体的には、図９Ａの「環境ＩＤ」が「１０」として示すように、制御ルール生成部２３により、新しい「環境ＩＤ」に「１０」を付与し、その「環境ＩＤ」の「画像ＩＤ」に、選択した画像のファイル名（この例では「画像３」）を制御ルール生成部２３が環境情報データベース１８に記憶する。さらに、フラグは画像のみであるので、制御ルール生成部２３により、６ビット目のみ「１」を、その他のビットに「０」を環境情報データベース１８に記憶する。
【０１５０】
なお、前記変形例において、図３６Ｃと図３６Ｄのように、ｘ−ｙ平面の環境変化通知の後に、ｙ−ｚ平面及びｘ−ｚ平面の環境変化を通知した場合には、「環境ＩＤ」が「３３」の環境情報に示すように、制御ルール生成部２３により、複数の画像（この例では「画像８」と「画像９」）を環境情報データベース１８に記憶するようにしても良い。
【０１５１】
次に、動作補正操作の開始の指令を受けて、人４Ａがロボットアーム５に力を加えてロボットアーム５を移動させて補正したロボットアーム５の動作情報（ロボットアーム５の手先位置と時間）を制御パラメータ管理部２１より制御ルール生成部２３で取得する。制御ルール生成部２３は、取得した動作情報をデータベース入出力部２８を介して動作情報データベース１７に記憶する。
【０１５２】
具体的には、図５Ｂに示すように、制御ルール生成部２３により、図５Ｂの動作情報データベース１７に新規に動作ＩＤを付与し（この例では「３」）、更に、取得した手先位置の数だけ「キー動作ＩＤ」として「２０」〜「３１」を付与し、動作補正部２０で補正した動作情報（手先情報、時間）を動作情報データベース１７の各「キー動作ＩＤ」に記憶する。
【０１５３】
動作情報の時間は、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間が、制御ルール生成部２３により動作情報データベース１７に入力される。このため、動作情報データベース１７の時間のデータ欄は、追加した最初のキー動作（この例では「２０」）の時間として、全ての動作のそれぞれの時間から減算した値を、制御ルール生成部２３により、動作情報データベース１７に記憶する。
【０１５４】
フラグのデータ欄は、動作補正操作前のフラグが「１」となる動作情報の成分のうち、補正前と補正後におけるキー動作の位置姿勢と、力の値とを成分毎にそれぞれ制御ルール生成部２３により比較し、制御ルール生成部２３により、閾値以上の差があると判断された場合の成分のみ、図６に示すフラグの各成分を「１」とし、閾値未満であるとされた場合のフラグの成分は「０」とするように、動作情報データベース１７に記憶する。
【０１５５】
なお、ここで比較する動作補正操作前後の「キー動作」は、動作補正操作前と動作補正操作後のそれぞれの「動作ＩＤ」の一番先頭のキー動作のみ、制御ルール生成部２３により比較する。
【０１５６】
具体的には、補正前の「動作ＩＤ」が「２」の動作の「キー動作ＩＤ」が「１０」のキー動作のフラグは、０〜５ビット目が「１」であり、その他は「０」であるので、補正前の動作と補正後の動作の位置姿勢と、力の値とのうち、位置姿勢成分のみを制御ルール生成部２３により比較する。
【０１５７】
ここで、制御ルール生成部２３により、補正前の「キー動作ＩＤ」は「１０」のキー動作、補正後の「キー動作ＩＤ」は「２０」のキー動作とする。
【０１５８】
「キー動作ＩＤ」が「１０」のキー動作と「キー動作ＩＤ」が「２０」のキー動作では、位置姿勢（ｘ，ｙ，ｚ，φ，θ，ψ）の成分のうち、ｚ，φ，θ，ψは同じで、ｘ座標、ｙ座標の差がそれぞれ（０．２、０．２）となる。上記差の閾値を０．１とすると、ｘ成分及びｙ成分のみが閾値以上と、制御ルール生成部２３により判断される。従って、フラグは０，１ビット目が「１」で、その他は「０」として、制御ルール生成部２３により動作情報データベース１７に記憶する。
【０１５９】
補正パラメータフラグは、補正前の動作（この例では「１０」〜「１７」）の値を記憶する。
なお、図３６Ｅに示すように、鍋の側面から鍋の底面に向かってかき混ぜるような動作として補正した場合には、図３６Ｆに示すように、時刻ｔ１、時刻ｔ２、時刻ｔ３と時間の経過とともに、ロボットアーム５の姿勢成分が変化するように補正しても良い。
【０１６０】
次に、制御ルール生成部２３は、取得した環境情報と動作補正部２０の動作補正操作により補正した動作とから、制御ルールデータベース１６に新しい制御ルールを生成して記憶する。
【０１６１】
具体的には、制御ルールデータベース１６の「作業ＩＤ」が「２」の作業で動作中に動作を補正するため、制御ルール生成部２３により、「作業ＩＤ」が「２」の作業に１行追加し、動作補正操作により新しく追加した「動作ＩＤ」が「３」の動作を追加するように、制御ルールデータベース１６に記憶させる。
【０１６２】
次に、制御ルール生成部２３で選択した環境情報の環境ＩＤを、制御ルール生成部２３により制御ルールデータベース１６に記憶する。
【０１６３】
以上、人４Ａが環境変化通知操作及び動作補正操作を行って制御ルール生成部２３により新しい制御ルールを生成して制御ルールデータベース１６に記憶することで、鍋の大きさを考慮した動作を事前に用意しておかなくても、その場で人４Ａがロボットアーム５の操作を行なって環境変化通知を行い、ロボットアーム５の動作を補正するだけで、その操作及び補正動作を制御ルールデータベース１６に記憶させることができ、次に同じような環境になった場合に、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５は自律的に動作することができるようになる。
【０１６４】
−動作指令部（動作算出部）−
この例では、図１０Ｂに示すように、「作業ＩＤ」が「２」の作業には、複数の「動作ＩＤ」（「２」、「３」）を制御ルールデータベース１６に記憶しているため、その場合の動作指令部２７の機能について説明する。
【０１６５】
図１０Ｂの「作業ＩＤ」が「２」の作業の「動作ＩＤ」が「２」の動作は図１３Ａの動作、「動作ＩＤ」が「３」の動作は図１３Ｅの動作を行うための動作情報を表す。
【０１６６】
人４Ａが図１３Ｅの鍋３ｂを作業台７に設置し、人４Ａがデータ入力ＩＦ２６を介して「作業ＩＤ」が「２」の作業の開始を動作指令部２７に指令する。動作指令部２７は、指定された「作業ＩＤ」の作業の作業開始の指令を受けて、制御ルールデータベース１６の指定された「作業ＩＤ」をデータベース入出力部２８を介して参照して、その「作業ＩＤ」の作業を開始させるように制御パラメータ管理部２１へ指令する。
【０１６７】
複数の動作が存在する場合には、「環境ＩＤ」に応じて、動作する動作情報を動作指令部２７により選択する。具体的には、動作指令部２７により、制御ルールデータベースに記憶されているそれぞれの「動作ＩＤ」の「環境ＩＤ」で環境情報データベース１８をデータベース入出力部２８を介して参照した環境情報が、ロボットアーム５の動作中の「環境ＩＤ」と合致したと判断した場合のみ、その「動作ＩＤ」の動作を実行するように、動作指令部２７から制御パラメータ管理部２１へ指令する。
【０１６８】
具体的には、図１０Ｂの「作業ＩＤ」が「２」の作業には、「動作ＩＤ」が「２」の動作と「３」の動作とがある。「動作ＩＤ」が「２」の動作は「環境ＩＤ」が「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず、ロボットアーム５は動作するので、実行すべき動作として動作指令部２７により選択する。
【０１６９】
次に、「動作ＩＤ」が「３」の動作の「環境ＩＤ」は「１０」の環境情報となり、「−１」の値ではないので、動作指令部２７により、環境情報データベース１８の「環境ＩＤ」が「１０」の環境情報をデータベース入出力部２８を介して参照する。図９Ａの「環境ＩＤ」が「１０」の環境情報のフラグは、６ビット目のみ「１」であり、それ以外は「０」であるので、画像が有効であると、動作指令部２７で判断することができる。そこで、画像ＩＤより、データベース入出力部２８を介して環境情報データベース１８に記憶されている画像情報を動作指令部２７が取得する。
【０１７０】
次に、環境情報取得部１９より、現在の画像情報を動作指令部２７が取得して、画像マッチングにより、前記取得した２つの画像を動作指令部２７で比較する。２つの画像が合致したと動作指令部２７で判断した場合には、「動作ＩＤ」が「３」の動作で記憶されている動作を実行すべき動作として動作指令部２７で選択する。
【０１７１】
動作指令部２７で選択された動作が複数存在する場合は（この例では「動作ＩＤ」が「２」の動作と「３」の動作）、選択された複数の動作を制御ルールデータベース１６に記憶されている順に、それぞれの動作情報のフラグに応じて、最終的に実行すべき動作を、動作指令部２７の動作算出部２により算出する。
【０１７２】
この例では、「動作ＩＤ」が「２」の動作と「３」の動作とが動作指令部２７で選択されており、図１０Ｂの制御ルールデータベース１６の「動作ＩＤ」には「２」の動作、「３」の動作の順に記憶されている。従って、「動作ＩＤ」が「２」の動作の動作情報のフラグが、図５Ｃより０〜５ビット目が「１」であるので、「動作ＩＤ」が「２」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，ｚ，φ，θ，ψ）を動作指令部２７で取得する。次に、「動作ＩＤ」が「３」の動作のフラグは、０，１ビット目のみ「１」であるので、「動作ＩＤ」が「２」の動作の位置姿勢情報（ｘ，ｙ，ｚ，φ，θ，ψ）のうち、（ｘ、ｙ）成分のみ「動作ＩＤ」が「３」の動作の値に置き換えて動作指令部２７で算出する。例えば、「キー動作ＩＤ」が「１０」のキー動作の位置姿勢は、（０．１，０．１，０．４，０，０，０）であり、「動作ＩＤ」が「３」の動作の「キー動作ＩＤ」が「２０」のキー動作の位置姿勢は、（０．３，０．３，０．４，０，０，０）であるので、「キー動作ＩＤ」が「１０」のキー動作の位置姿勢は、（０．１，０．１，０．４，０，０，０）のｘ成分及びｙ成分のみ、「キー動作」が「２０」のキー動作の位置姿勢（０．３，０．３，０．４，０，０，０）を動作指令部２７で置き換えることで、最終の位置姿勢は、（０．３，０．３，０．４，０，０，０）となる。同様に「キー動作ＩＤ」が「１１」のキー動作のｘ成分及びｙ成分を「キー動作ＩＤ」が「２１」のキー動作で動作指令部２７で置き換え、以降、「キー動作ＩＤ」の終わりまで順次動作指令部２７で算出する。
【０１７３】
動作指令部２７により、フラグについては、「動作ＩＤ」が「２」の動作と「３」の動作とのそれぞれのビットにおいて、どちらかのビットに「１」の場合には、算出後のフラグのビットを「１」にするとともに、両方とも「０」の場合には、「０」とする。ただし、位置と力のそれぞれの成分はどちらかにしか「１」とならないため（位置制御モード若しくは力制御モードのどちらかでしか作動しないため）、位置と力の両方に「１」となった場合には、力を優先する。よって、「動作ＩＤ」が「２」の動作のフラグは、０〜５ビット目が「１」であり、「動作ＩＤ」が「３」の動作は０、１ビット目が「１」であるので、０〜５ビット目が「１」となる。「動作ＩＤ」が「２」の動作と「３」の動作との動作パラメータフラグは、両方とも０，１，２ビット目が「１」であるので、算出後の動作パラメータフラグも０，１，２ビット目が「１」となり、その他は「０」となる。
【０１７４】
算出後の動作情報をフラグに応じて制御モードを動作指令部２７で切り替えて、動作情報を動作指令部２７から制御パラメータ管理部２１へ出力することで、算出した動作を制御部２２で実行することが可能となる。
【０１７５】
（制御装置本体部１１）
制御装置本体部１１は、制御パラメータ管理部２１と、制御部２２とを有する。制御部２２と制御パラメータ管理部２１との間では、ロボットアーム５の手先位置又は力の情報などが入出力される。この制御装置本体部１１は、動作情報取得部の一例であるデータベース入出力部２８で取得した動作情報に設定された力で作業対象物に対してロボットアーム５が力制御を行なうようロボットアーム５を力制御モードで制御する力制御部として機能することができる。
【０１７６】
−制御パラメータ管理部−
制御パラメータ管理部２１は、動作補正部２０又は動作指令部２７の指示に基づいて、設定された制御モードに従ってロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２による制御の下にロボットアーム５を動作させる。さらに、制御パラメータ管理部２１は、制御部２２からロボットアーム５の手先位置又は力の情報などを取得して動作補正部２０へ出力する。
【０１７７】
制御パラメータ管理部２１の詳細を説明する。
制御パラメータ管理部２１は、動作補正部２０又は動作指令部２７の指示に基づいて、ロボットアーム５の制御モードを切り替える設定信号を出力する。
それぞれの制御モードは、動作補正部２０又は動作指令部２７にて、動作情報データベースのフラグにより決定し、制御モードを切り替える設定信号を制御パラメータ管理部２１へ出力する。
【０１７８】
制御モードは、（ｉ）位置制御モードと、（ｉｉ）インピーダンス制御モードと、（ｉｉｉ）ハイブリッドインピーダンス制御モードと、（ｉｖ）力制御モードと、（ｖ）力ハイブリッドインピーダンス制御モードと、（ｖｉ）高剛性位置制御モードとのうち、いずれかの制御方法のモードである。
【０１７９】
また、制御パラメータ管理部２１は、（ｉｉｉ）インピーダンス制御モード、（ｉｖ）ハイブリッドインピーダンス制御モード、及び、（ｖ）力ハイブリッドインピーダンス制御モードにおける機械インピーダンス設定値の設定を行う。また、制御パラメータ管理部２１は、後述するインピーダンス計算部５１で出力する手先位置、姿勢目標補正出力ｒｄ△の設定、及び、目標軌道生成部５５への動作情報の設定を行う。
【０１８０】
−制御モードの切替動作−
各制御モードについて説明する。
【０１８１】
（ｉ）位置制御モード
位置制御モードは、後述する目標軌道生成部５５の手先位置と姿勢と時間とに関する情報に基づいて、ロボットアーム５が作動するモードである。
【０１８２】
この位置制御モードは、人４Ａがロボットアーム５に力を加えてもロボットアーム５は移動しないように、ロボットアーム５の動作を制御するモードである。例えば、かき混ぜ作業又は拭き掃除作業などの作業を行うためにロボットアーム５が動作する場合に用いるモードである。ただし、柔構造のロボットアーム５の場合は、機械的に柔らかい機構であるため、位置制御モードに設定していても、人４Ａがロボットアーム５に加えた力でロボットアーム５が若干移動する場合がある。これに対して、後述する高剛性位置制御モードは、人４Ａがロボットアーム５に加えた力では、ロボットアーム５が絶対に動かないように制御するモードである。
【０１８３】
（ｉｉ）インピーダンス制御モード
インピーダンス制御モードは、人４Ａなどからロボットアーム５に加わる力（具体的には、力検出部５３で検出された力）に応じて、ロボットアーム５が作動するようにロボットアーム５の動作を制御するモードである。例えば、図８に示すように、人４Ａが手４でロボットアーム５を直接持ち、ロボットアーム５の手先の位置姿勢を教示する場合に用いるモードである。
【０１８４】
（ｉｉｉ）ハイブリッドインピーダンス制御モード
ハイブリッドインピーダンス制御モードは、ロボットアーム５が位置制御モードで動作しているときに、力検出部５３で検出された力に応じて、ロボットアーム５が作動するようにロボットアーム５の動作を制御するモードである。例えば、図１３Ａに示すように、ロボットアーム５が位置制御モードによるかき混ぜ業を行っているときに、人４Ａが鍋３ａの中の底側の部分をかき混ぜるようにロボットアーム５の動作を補正したい場合に用いるモードである。ハイブリッドインピーダンス制御モードを行うことにより、図１３Ｄに示すように、人４Ａがロボットアーム５を把持して、鍋３ｂの底面沿い方向に力をかけることで、水平方向に大きくかき混ぜる動作に補正することができる。
【０１８５】
（ｉｖ）力制御モード
力制御モードは、動作補正部２０から制御パラメータ管理部２１へ設定された力で、ロボットアーム５を用いて作業対象物（作業用治具、例えば、レードル９又は拭き掃除用モップ若しくはスポンジ４６、又は、電動ドライバ器具７２、又はフレキシブル基板７４）を作業対象面（例えば、鍋底、又は、掃除対象面、又は、器具７１のネジ穴７１ａにネジ７３を取り付けるときの作業対象面）に押し付けながらかき混ぜ動作又は拭き掃除動作又はネジ回し動作などするようにロボットアーム５の動作を制御するモードである。図１２は、本第１実施形態におけるキッチンの拭き掃除動作を行うロボットを示す。例えば、図１２に示すようにＩＨクッキングヒーター６などの天板６ａの表面に力を加えて拭き掃除を行う場合、又は図１５に示すように、鍋３の底の部分で、レードル９により力を加えて、かき混ぜ作業を行う場合など、力を加えながら、制御する方向に使用する制御モードである。
【０１８６】
（ｖ）力ハイブリッドインピーダンス制御モード
力ハイブリッドインピーダンス制御モードは、ロボットアーム５の６軸の方向（ｘ軸，ｙ軸，ｚ軸，φ軸，θ軸，ψ軸の方向）別に、（ｉｉｉ）ハイブリッドインピーダンス制御モード、（ｉｉ）インピーダンス制御モード、（ｉ）位置制御モード、を切り替えるとともに、指定した力を作用させて動作する（ｉｉｉ）力制御モードで制御するモードである。なお、力制御モードとインピーダンス制御モードとは排他的な関係であるため、力制御モードが設定された方向にインピーダンス制御モードを設定することはできない。
【０１８７】
この力ハイブリッドインピーダンス制御モードは、例えば、図１２に示すようにＩＨクッキングヒーター６などの天板６ａの掃除面に対して、ロボットアーム５の先端のハンド３０で支持した作業用冶具９、例えば拭き掃除用モップが平行に円状に移動しながら、当該掃除面に垂直下向きに指定した力をかけて、拭き掃除をする場合に用いるモードである。具体的には、（ｘ，ｙ，ｚ，φ，θ，ψ）の６軸それぞれに、以下の制御モードを設定する。すなわち、（ｘ，ｙ）成分がハイブリッドインピーダンス制御モードで、（φ，θ，ψ）成分がインピーダンス制御モードで、ｚ軸成分が力制御モードでそれぞれ動作する力ハイブリッドインピーダンス制御モードである。このように掃除面と水平な方向はハイブリッドインピーダンス制御モードとすることで、位置制御モードで動作している最中に、人４Ａなどからロボットアーム５に加わる力に応じて、ロボットアーム５を移動させることができる。さらに、（φ，θ，ψ）成分をインピーダンス制御モードとすることで、ロボットアーム５が動作を停止している状態で人４Ａなどからロボットアーム５に加わる力に応じて、ロボットアーム５の姿勢を変更することができるようになる。また、ｚ軸成分を力制御モードに設定することで、指定された力で拭き掃除用モップを掃除面に押し付けながらロボットアーム５を動作させることができるようになる。又は、力ハイブリッドインピーダンス制御モードは、（ｘ，ｙ，ｚ，φ，θ，ψ）の６軸のうち、ｚ軸成分が力制御モードで、その他の軸は位置制御モードで動作させる制御モードであっても良い。その場合は、衝突など不用意な力がロボットアーム５に加わっても、位置制御成分を誤って移動させることはない。
【０１８８】
（ｖｉ）高剛性位置制御モード
高剛性位置制御モードは、ロボットアーム５の動作中の位置制御モードをさらに高剛性にした制御モードである。具体的には、後述する位置誤差補償部５６でのゲインを大きくすることで実現する。人４Ａがロボットアーム５に力をかけても、高剛性位置制御モードは、ロボットアーム５を容易に移動させることができず、接触面からの抗力の影響をロボットアーム５が受けないため、人４Ａがロボットアーム５にかけた力を正しく検出できる。
【０１８９】
これらの制御モード（ｉ）〜（ｖｉ）は、ロボットアーム５の動作の際に、ロボットアーム５の方向及び姿勢別にそれぞれ適切な制御モードを設定して動作させる。
さらに、（ｉｉｉ）ハイブリッドインピーダンス制御モード又は（ｖ）力ハイブリッドインピーダンスモードでロボットアーム５が動作中に、補正するパラメータに応じて、機械インピーダンス設定値又はインピーダンス計算部５１で出力する手先位置及び姿勢目標補正出力ｒｄ△の設定を制御パラメータ管理部２１により変更する。
【０１９０】
機械インピーダンス設定値の設定パラメータとしては、慣性Ｍと粘性Ｄと剛性Ｋとがある。機械インピーダンス設定値の各パラメータの設定は、補正値を使って、以下の評価式に基づいて行う。
【０１９１】
【数１】
2011036865.tif 000003
【０１９２】
【数２】
2011036865.tif 000004
【０１９３】
【数３】
2011036865.tif 000005
【０１９４】
前記式（３）〜（５）中のＫＭ、ＫＤ、ＫＫはそれぞれゲインであり、それぞれある定数値である。
【０１９５】
制御パラメータ管理部２１は、前記式（３）〜（５）に基づき計算した機械インピーダンス設定値の慣性Ｍと粘性Ｄと剛性Ｋとを制御部２２へ出力する。
【０１９６】
前記式（３）〜（５）により、ロボットアーム５のｘ軸及びｙ軸以外の位置成分及び姿勢成分が簡単に動かせると、ロボットアーム５の動作の補正作業が行ないにくくなる。そこで、制御パラメータ管理部２１は、ロボットアーム５のｘ軸及びｙ軸以外の位置成分及び姿勢成分についてのみ、上記補正値を高く（例えば、上記補正値の約１０倍）設定し、ロボットアーム５の粘性Ｄ及び剛性Ｋが大きくなるように設定する。この結果、ロボットアーム５の動きに抵抗感又は硬さが生じ、ロボットアーム５がそのｘ軸及びｙ軸以外の位置成分及び姿勢成分について動きにくくなる。例えば図１３Ｄに示すように、人４Ａがロボットアーム５のハンド３０で把持されたレードル９を使用して、鍋３ｂのサイズに合わせて大きくかき混ぜるよう動作を補正させたい場合に、このような設定を適用することができる。
【０１９７】
又は、別の方法として、インピーダンス計算部５１から出力される手先位置及び姿勢目標補正出力ｒｄ△の各成分のうち、ｘ軸及びｙ軸以外の値を、制御パラメータ管理部２１により、全て０にする方法がある。これによって、ｘ軸及びｙ軸以外は、人４Ａの力でロボットアーム５が移動できなくなるため、誤操作を防ぐことができる。
【０１９８】
制御パラメータ管理部２１は、動作補正部２０に、ロボットアーム５の手先位置及び姿勢と、ロボットアーム５に対して人４Ａの加えた力の情報（ロボットアーム５に作用する人４Ａの力に関する情報)とを出力する必要がある。そのため、制御部２２から制御パラメータ管理部２１にロボットアーム５の手先位置及び力の情報を受けると、制御パラメータ管理部２１は、動作補正部２０へ出力する。また、動作補正部２０及び動作指令部２７から制御パラメータ管理部２１に入力された、位置及び姿勢と時間などの動作情報を制御パラメータ管理部２１から制御部２２へ出力する。
【０１９９】
−制御部−
次に、制御部２２の詳細について、図４を用いて説明する。図４は、本第１実施形態のロボットアームの制御装置７０の制御部２２の詳細を示す。制御部２２は、目標軌道生成部５５と、ハンド制御部５４と、力検出手段の一例としての力検出部５３と、インピーダンス計算部５１と、位置制御部５９と、位置誤差計算部８０とを有する。位置制御部５９は、位置誤差補償部５６と、近似逆運動学計算部５７と、順運動学計算部５８とを有して、動作情報取得部の一例としてのデータベース入出力部２８で取得した動作情報に基づいてロボットアーム５を移動するよう位置制御モードでロボットアーム５を制御することができる。力検出部５３は、図４では制御部２２の一部として図示しているが、制御部２２とは別の構成としてもよい。
【０２００】
制御部２２は、制御パラメータ管理部２１で設定された制御モードで動作し、さらに制御モードに応じて、慣性Ｍと粘性Ｄと剛性Ｋとの設定値に基づき設定されたロボットアーム５の機械インピーダンス設定値に、ロボットアーム５の機械インピーダンスの値を制御する。
【０２０１】
制御部２２は、入出力ＩＦ２４を介してロボットアーム５との制御信号などの信号のやり取りを行うが、図４では、制御部２２とロボットアーム５とのデータ信号のやり取りとして簡略化した図とする。
【０２０２】
ロボットアーム５のそれぞれの関節部に設けた各関節軸のエンコーダ４４により計測された関節角の現在値（関節角度ベクトル）ベクトルｑ＝［ｑ１，ｑ２，ｑ３，ｑ４，ｑ５，ｑ６］Ｔが出力され、入出力ＩＦ２４により制御部２２に取り込まれる。ここで、ｑ１，ｑ２，ｑ３，ｑ４，ｑ５，ｑ６は、それぞれ、第１関節部３５、第２関節部３６、第３関節部３７、第４関節部３８、第５関節部３９、第６関節部４０の関節角度である。
【０２０３】
目標軌道生成部５５は、制御パラメータ管理部２１から入力された動作情報（具体的には、ロボットアーム５の手先位置、姿勢、時間）に基づいて、ロボットアーム５の目標とする手先位置及び姿勢目標ベクトルｒｄを生成する。目標軌道生成部５５は、生成した手先位置及び姿勢目標ベクトルｒｄを位置誤差計算部８０に出力する。
【０２０４】
具体的には、目標軌道生成部５５は、制御パラメータ管理部２１からの制御モード設定信号及び動作情報に基づき、各制御モードでロボットアーム５を動作するように、動作目標とする手先の位置及び姿勢目標ベクトルｒｄと力目標ベクトルｆｄとを生成する。
【０２０５】
具体的には、目標とするロボットアーム５の動作は、目的とする作業に応じて動作指令部２７からそれぞれの時間（ｔ＝０、ｔ＝ｔ１、ｔ＝ｔ２、・・・）でのポイント毎の位置及び姿勢（ｒｄ０、ｒｄ１、ｒｄ２、・・・）の情報と、力（ｆｄ０、ｆｄ１、ｆｄ２、・・・）の情報とが与えられている。
【０２０６】
目標軌道生成部５５は、多項式補間を使用し、前記各ポイント間の軌道を補間し、手先位置及び姿勢目標ベクトルｒｄと力目標ベクトルｆｄとを生成する。
目標軌道生成部５５は、（ｉ）位置制御モード、（ｉｉｉ）インピーダンス制御、（ｉｖ）ハイブリッドインピーダンス制御モード、（ｖ）力ハイブリッドインピーダンス制御モード、又は（ｖｉ）高剛性位置制御モードで、ロボットアーム５を動作するように動作目標とする手先の位置及び姿勢目標ベクトルｒｄを生成する。
【０２０７】
目標軌道生成部５５は、生成した目標とするロボットアーム５の動作を実現するための手先位置及び姿勢目標ベクトルｒｄと力目標ベクトルｆｄとそれぞれの方向別にどのパラメータが有効かを示すフラグとが、目標軌道生成部５５から位置誤差計算部８０に出力される。
【０２０８】
目標軌道生成部５５は、動作情報に含まれる「ハンド」の開閉フラグに基づいて、後述するハンド制御部５４に、ハンド３０の開閉指令を出す。
【０２０９】
ハンド制御部５４は、目標軌道生成部５５から入力された開閉フラグに基づいて、ハンド開閉駆動用のモータ６２を駆動してハンド３０を開閉するように、入出力ＩＦ２４を介してロボットアーム５のハンド開閉駆動用のモータ６２に指令を出す。
【０２１０】
力検出部５３は、力検出手段の一例として機能し、人４Ａ等とロボットアーム５との接触によってロボットアーム５に加わる外力Ｆｅｘｔを検出して、検出した力の情報をインピーダンス計算部５１と環境情報取得部１９と制御パラメータ管理部２１（制御パラメータ管理部２１を介して動作司令部２７）とに出力する。ただし、ロボットアーム５の手先(ハンド３０)に質量ｍの物体（たとえば、作業用冶具９）を把持して又は取り付けて作業している場合は、力検出部５３で検出したＦｅｘｔからｍｇを力検出部５３で予め減じておく。ここで、ｇは重力加速度である。把持物体（たとえば、作業用冶具９）の質量ｍの値は、物体を把持する（たとえば、作業用冶具９を取り付ける）前に、人４Ａが、外部入力装置２６ａからデータ入力ＩＦ２６を介して力検出部５３に入力できる（図４参照）。また、把持物体（たとえば、作業用冶具９，４６，７２又はフレキシブル基板７４など）である作業対象物の識別番号、質量、形状、寸法、及び、色などの物品情報を物品データベース（図示せず）に記憶しておき、物品認識装置（図示せず）が、作業対象物に備えられたタグなどの識別情報を読み取り、読み取られた識別情報を基に物品データベースに記憶された情報を参照して、対応する作業対象物の質量を取得することも可能である。
【０２１１】
力検出部５３は、モータドライバ２５の電流センサで計測された、ロボットアーム５の各関節部を駆動するモータ４３を流れる電流値ｉ＝［ｉ１，ｉ２，ｉ３，ｉ４，ｉ５，ｉ６］Ｔを、入出力ＩＦ２４を介して取得する。また、力検出部５３には、各エンコーダ４４で計測された関節角の現在値ｑが入出力ＩＦ２４を介して取り込まれるとともに、後述する近似逆運動学計算部５７からの関節角度誤差補償出力ｕｑｅが取り込まれる。力検出部５３は、オブザーバーとして機能し、前記電流値ｉと、関節角の現在値ｑと関節角度誤差補償出力ｕｑｅとに基づいて、ロボットアーム５に加わる外力により各関節部に発生するトルクτｅｘｔを算出する。
【０２１２】
そして、力検出部５３は、式：Ｆｅｘｔ＝Ｊｖ（ｑ）−Ｔτｅｘｔ−［０，０，ｍｇ］Ｔによりロボットアーム５の手先における等価手先外力Ｆｅｘｔに換算して、この等価手先外力Ｆｅｘｔをインピーダンス計算部５１に出力する。ここで、Ｊｖ（ｑ）は、
【０２１３】
【数４】
2011036865.tif 000006
【０２１４】
を満たすヤコビ行列である。ただし、ｖ＝［ｖｘ，ｖｙ，ｖｚ，ωｘ，ωｙ，ωｚ］Ｔであり、（ｖｘ，ｖｙ，ｖｚ）は手先座標系４２でのロボットアーム５の手先の並進速度、（ωｘ，ωｙ，ωｚ）は手先座標系４２でのロボットアーム５の手先の角速度である。また、ｍはハンド３０で把持している把持物体（又はハンド３０に取り付けられた作業用冶具９）の質量であり、ｇは重力加速度である。また、ロボットアーム５のハンド３０による物体の把持又は取付を実際に行い、そのときの力検出部５３の等価手先外力Ｆｅｘｔの推定結果に基づいて把持物体（又はハンド３０に取り付けられた作業用冶具９）の質量ｍの値を算出する事も可能である。物体を把持しない場合はｍ＝０として算出する。
【０２１５】
インピーダンス計算部５１は、制御パラメータ管理部２１から制御モードの設定信号及び機械インピーダンス設定値を受け取り、前記機械インピーダンス設定値にロボットアーム５の機械インピーダンス値を制御する。制御パラメータ管理部２１から（ｉ）位置制御モードの設定信号をインピーダンス計算部５１が受け取った場合は、機械インピーダンス値として“０”をインピーダンス計算部５１から位置誤差計算部８０に出力する。制御パラメータ管理部２１から（ｉｉｉ）インピーダンス制御モード及び（ｉｖ）ハイブリッドインピーダンス制御モードの設定信号をインピーダンス計算部５１が受け取った場合は、制御パラメータ管理部２１で設定された機械インピーダンス設定値である慣性Ｍと粘性Ｄと剛性Ｋと、エンコーダ４４で計測した関節角の現在値ｑと、力検出部５３で検出した外力Ｆｅｘｔとに基づいて、インピーダンス計算部５１は、ロボットアーム５が機械インピーダンス設定値の制御を実現するための手先位置及び姿勢目標補正出力ｒｄΔを、以下の式（６）により計算する。インピーダンス計算部５１は、計算して求められた手先位置及び姿勢目標補正出力ｒｄΔを位置誤差計算部８０に出力する。
【０２１６】
制御パラメータ管理部２１から（ｖ）力ハイブリッドインピーダンス制御モード又は（ｉｉ）力制御モードの設定信号をインピーダンス計算部５１が受け取った場合、動作制御の「フラグ」で指定された力成分が存在する場合には、制御パラメータ管理部２１で設定された機械インピーダンス設定値である慣性Ｍと粘性Ｄと剛性Ｋと、エンコーダ４４で計測した関節角の現在値ｑと、力検出部５３で検出した外力Ｆｅｘｔと、目標軌道生成部５５から出力される力ｆｄとに基づいて、インピーダンス計算部５１は、ロボットアーム５が機械インピーダンス設定値の制御を実現するための手先位置及び姿勢目標補正出力ｒｄΔを、以下の式（１０）により計算する。インピーダンス計算部５１は、計算して求められた手先位置及び姿勢目標補正出力ｒｄΔを位置誤差計算部８０に出力する。
【０２１７】
位置誤差計算部８０は、インピーダンス計算部５１から出力された手先位置及び姿勢目標補正出力ｒｄΔと、目標軌道生成部５５から出力された手先の位置姿勢目標ベクトルｒｄとを加算し、手先位置及び姿勢補正目標ベクトルｒｄｍを生成する。ただし、ハイブリッドインピーダンス制御モード時に、補正パラメータに応じて、ロボットアーム５の動作を拘束する場合に、例えばｚ軸のみロボットアーム５が動くようにするには、手先位置及び姿勢目標補正出力ｒｄΔのｚ成分以外を０にインピーダンス計算部５１で設定して、位置誤差計算部８０に出力する。
【０２１８】
【数５】
2011036865.tif 000007
ただし、
【０２１９】
【数６】
2011036865.tif 000008
【０２２０】
【数７】
2011036865.tif 000009
【０２２１】
【数８】
2011036865.tif 000010
であり、sはラプラス演算子である。
【０２２２】
【数９】
2011036865.tif 000011
ただし、
【０２２３】
【数１０】
2011036865.tif 000012
【０２２４】
は式（７）、式（８）、式（９）により算出する。
【０２２５】
位置誤差計算部８０は、さらに、手先位置及び姿勢補正目標ベクトルｒｄｍと、後述する順運動学計算部５８により計算される手先位置及び姿勢ベクトルｒとの誤差ｒｅを求め、求められた誤差ｒｅを位置誤差補償部５６に出力する。
【０２２６】
順運動学計算部５８には、ロボットアーム５の各関節部の各関節軸のエンコーダ４４からエンコーダ４４で計測された関節角の現在値ｑである関節角度ベクトルｑが、入出力ＩＦ２４を介して入力される。順運動学計算部５８は、ロボットアーム５の関節角度ベクトルｑから、手先位置及び姿勢ベクトルｒへの変換の幾何学的計算を行う。順運動学計算部５８で計算された手先位置及び姿勢ベクトルｒは、位置誤差計算部８０及びインピーダンス計算部５１及び目標軌道生成部５５に出力される。
【０２２７】
位置誤差補償部５６は、位置誤差計算部８０で求められた誤差ｒｅに基づいて、位置誤差補償出力ｕｒｅを近似逆運動学計算部５７に出力する。
具体的には、位置誤差補償出力ｕｒｅは、
【０２２８】
【数１１】
2011036865.tif 000013
【０２２９】
により計算される。ここで、Ｋｐは比例ゲイン行列、ＫＩは積分ゲイン行列、ＫＤは微分ゲイン行列であり、その対角成分が手先位置ベクトルｒｅ = [ｘ、ｙ、ｚ、φ、θ、ψ]Tの各成分に対するゲインで構成される対角行列である。
【０２３０】
さらに、位置誤差補償部５６では、高剛性位置制御モードが設定された際に、比例ゲイン行列Ｋｐ、積分ゲイン行列ＫＩ、微分ゲイン行列ＫＤをあらかじめ設定された値に大きく設定する。ここで、高剛性とは、通常の位置制御と比較して剛性が高くなることを意味し、具体的には、通常の位置制御モードと比較して大きな値を設定する。例えば、通常の位置制御モード時の２倍程度の値に設定すると、剛性を約２倍まで高くすることができる。
【０２３１】
このようにすることで、高剛性の位置制御を実現することができる。なお、前記ゲインを各成分毎に値を変えることで、例えば、ｚ軸方向のみ高剛性で、その他の方向は通常の位置制御で動作するよう制御することができる。
【０２３２】
近似逆運動学計算部５７は、位置誤差補償部５６から入力される位置誤差補償出力ｕｒｅとロボットアーム５において計測される関節角度ベクトルｑとに基づいて、近似式ｕｏｕｔ＝Ｊｒ（ｑ）−１ｕｉｎにより、逆運動学の近似計算を行う。ただし、Ｊｒ（ｑ）は、
【０２３３】
【数１２】
2011036865.tif 000014
【０２３４】
の関係を満たすヤコビ行列であり、ｕｉｎは近似逆運動学計算部５７への入力であり、ｕｏｕｔは近似逆運動学計算部５７からの出力であり、入力ｕｉｎを関節角度誤差ｑｅとすれば、ｑｅ＝Ｊｒ（ｑ）−１ｒｅのように手先の位置姿勢誤差ｒｅから関節角度誤差ｑｅへの変換式となる。
【０２３５】
従って、位置誤差補償部５６から位置誤差補償出力ｕｒｅが近似逆運動学計算部５７に入力されると、近似逆運動学計算部５７からの出力として、関節角度誤差ｑｅを補償するための関節角度誤差補償出力ｕｑｅが近似逆運動学計算部５７から入出力ＩＦ２４を介してロボットアーム５のモータドライバ２５に出力される。
【０２３６】
関節角度誤差補償出力ｕｑｅは、入出力ＩＦ２４のＤ／Ａボードを介してロボットアーム５のモータドライバ２５に電圧指令値として与えられ、各モータ４３により各関節軸が正逆回転駆動されロボットアーム５が動作する。
【０２３７】
（ロボットアーム５のインピーダンス制御動作の原理）
以上のように構成される制御部２２に関して、ロボットアーム５のインピーダンス制御動作の原理について説明する。
【０２３８】
インピーダンス制御動作（ハイブリッドインピーダンス制御も同様）の基本は、位置誤差補償部５６による手先の位置姿勢誤差ｒｅのフィードバック制御（位置制御）であり、図４の点線で囲まれた部分が位置制御部５９になっている。位置誤差補償部５６として、例えば、ＰＩＤ補償器を使用すれば、手先位置及び姿勢誤差ｒｅが０に収束するように位置制御部５９による制御が働き、目標とするロボットアーム５のインピーダンス制御動作を実現できる。
【０２３９】
（ｉｉｉ）インピーダンス制御モードと、（ｉｖ）ハイブリッドインピーダンス制御モードと、（ｖ）力ハイブリッドインピーダンス制御モードとの場合、位置誤差計算部８０は、インピーダンス計算部５１からの手先位置及び姿勢目標補正出力ｒｄΔを加算し、位置制御部５９に対して手先位置及び姿勢の目標値の補正を行う。このため位置制御部５９は、手先位置及び姿勢の目標値が本来の値より微妙にずれることになり、結果的に、ロボットアーム５の機械インピーダンスの値を前記適切に設定された設定値に制御でき、位置制御部５９の位置制御動作を補正できる。
【０２４０】
手先位置及び姿勢目標補正出力ｒｄΔは、（ｉｉ）インピーダンス制御モードと、（ｉｉｉ）ハイブリッドインピーダンス制御モードとの場合は式（６）により算出され、（ｖ）力ハイブリッドインピーダンス制御モードの場合は式（１０）による算出されるため、ロボットアーム５の慣性Ｍと粘性Ｄと剛性Ｋとの機械インピーダンスの値を設定された設定値に制御できる。
【０２４１】
（制御部２２の動作ステップ）
本第１実施形態の制御部２２の動作ステップについ説明する。図１６は、本第１実施形態の制御部２２の動作フローチャートである。
ロボットアーム５の各関節部のエンコーダ４４により計測された関節角度ベクトルｑが、入出力ＩＦ２４を介して、制御装置本体部１１の制御部２２に取り込まれる(ステップＳ１)。
【０２４２】
次に、制御部２２に取り込まれた関節角度ベクトルｑに基づいて、近似運動学計算部５７は、ロボットアーム５の運動学計算に必要なヤコビ行列Ｊｒ等の計算を行う (ステップＳ２)。ここでは、制御動作始動時のため、位置誤差補償部５６から入力される位置誤差補償出力ｕｒｅは、“０”値として近似運動学計算部５７で計算する。
【０２４３】
次に、順運動学計算部５８は、ロボットアーム５の各エンコーダ４４から計測された関節角度ベクトルｑから、ロボットアーム５の現在の手先位置及び姿勢ベクトルｒを計算して、計算した現在の手先位置及び姿勢ベクトルｒを、順運動学計算部５８から位置誤差計算部８０と目標軌道生成部５５とインピーダンス計算部５１とに出力する（ステップＳ３）。
【０２４４】
次に、動作指令部２７及び動作補正部２０から制御パラメータ管理部２１を介して入力された動作情報に基づき、目標軌道計算部５５は、ロボットアーム５の手先位置及び姿勢目標ベクトルｒｄ及び力目標ベクトルｆｄを計算し、インピーダンス制御モード時は、ロボットアーム５の手先位置を、目標とする手先位置及び姿勢目標ベクトルｒｄ及び力目標ベクトルｆｄとして位置誤差計算部８０に出力する（ステップＳ４）。
【０２４５】
次に、力検出部５３は、モータ４３の駆動電流値ｉと、関節角度ベクトルｑと、関節角度誤差補償出力ｕｑｅとに基づいて、ロボットアーム５の手先における等価手先外力Ｆｅｘｔを計算して、計算された等価手先外力Ｆextをインピーダンス計算部５１と環境情報取得部１９と制御パラメータ管理部２１とに出力する（ステップＳ５）。
【０２４６】
次に、制御パラメータ管理部２１は、各成分毎に制御モードの切り替えを実行する（ステップＳ６）。
このステップＳ６において、制御モードのそれぞれの成分において、（ｖｉ）高剛性位置制御モードの場合はステップＳ７に進み、（ｉ）位置制御モードの場合はステップＳ８に進み、（ｉｖ）力制御モードの場合は、ステップＳ９に進む。
【０２４７】
また、ステップＳ６において、（ｖ）力ハイブリッドインピーダンス制御モード又はハイブリッドインピーダンス制御モードの場合は、ロボットアーム５の回転軸のうち、変更したい位置成分を（ｉｉ）インピーダンス制御モードに変更するために、ステップＳ９に進む。
【０２４８】
具体的には、制御パラメータ管理部２１において、動作補正部２０により「補正有り」と指示され且つ補正パラメータで６軸のうち力成分を補正する場合は、力成分が設定された成分は高剛性位置制御モードに制御モードを切り替えられる（ステップＳ６）。その後、ステップＳ７へ進む。
【０２４９】
また、ステップＳ６では、制御パラメータ管理部２１において、力ハイブリッドインピーダンス制御モード又はハイブリッドインピーダンス制御モードが設定されている場合には、６軸のうち位置成分を補正する場合は、変更したい位置成分をインピーダンス制御モードに変更する。その後、ステップＳ９へ進む。
【０２５０】
また、ステップＳ６では、制御パラメータ管理部２１において、位置制御モードが設定されている場合には、ステップＳ８へ進む。ステップＳ８で、位置制御モードを設定する。若しくは、ステップＳ６で制御パラメータ管理部２１において、力制御モードが設定されている場合には、ステップＳ９へ進み、ステップＳ９で力制御モードを設定する。
【０２５１】
制御パラメータ管理部２１により高剛性位置制御モードに設定された場合、インピーダンス計算部５１は、手先位置及び姿勢目標補正出力ｒｄΔを０ベクトルとする（ステップＳ７）。その後、ステップＳ１０に進む。
位置誤差補償部５６の定数の対角行列である比例、微分、積分の３つのゲインを調整することにより、位置誤差ｒｅが０に収束するように位置誤差補償部５６の制御が働く。そのゲインを、ある値まで大きくすることで、高剛性の位置制御を実現する（ステップＳ１０）。その後、ステップＳ１２に進む。
【０２５２】
制御パラメータ管理部２１により位置制御モードが設定された場合、インピーダンス計算部５１は、手先位置及び姿勢目標補正出力ｒｄΔを０ベクトルとする（ステップＳ８）。その後、ステップＳ１１に進む。
【０２５３】
制御パラメータ管理部２１により、インピーダンス制御モード若しくは力制御モードが設定された場合、インピーダンス計算部５１は、制御パラメータ管理部２１において設定された機械インピーダンス設定値の慣性Ｍと粘性Ｄと剛性Ｋと、関節角度ベクトルｑと、力検出部５３により計算されたロボットアーム５に加わる等価手先外力Ｆｅｘｔとから、手先位置及び姿勢目標補正出力ｒｄΔが、インピーダンス計算部８０により計算される。さらに、補正パラメータに基づいて、手先位置及び姿勢目標補正出力ｒｄΔのいずれか成分の値を０に設定する（ステップＳ９）。その後、ステップＳ１１に進む。
【０２５４】
位置誤差補償部５６は、手先位置及び姿勢目標ベクトルｒｄと手先位置及び姿勢目標補正出力ｒｄΔとの和である手先位置及び姿勢補正目標ベクトルｒｄｍと、現在の手先位置及び姿勢ベクトルｒとの差である手先位置及び姿勢の誤差ｒｅを計算する（ステップＳ１１）。位置誤差補償部５６の具体例としては、ＰＩＤ補償器が考えられる。定数の対角行列である比例、微分、積分の３つのゲインを調整することにより、位置誤差ｒｅが０に収束するように位置誤差補償部５６の制御が働く。その後、ステップＳ１２に進む。
【０２５５】
近似逆運動学計算部５７は、ステップＳ２で計算したヤコビ行列Ｊｒの逆行列を位置誤差補償出力ｕｒｅに乗算することにより、位置誤差補償出力ｕｒｅを、手先位置及び姿勢の誤差に関する値から関節角度の誤差に関する値である関節角度誤差補償出力ｕｑｅが得られるように計算する（ステップＳ１２）。
【０２５６】
次に、関節角度誤差補償出力ｕｑｅが、近似逆運動学計算部５７から入出力ＩＦ２４を通じ、モータドライバ２５に与えられる。モータドライバ２５は、関節角度誤差補償出力ｕｑｅに基づき、ロボットアーム５の関節部のそれぞれのモータ４３を流れる電流量を変化させる。この電流量の変化により、ロボットアーム５のそれぞれの関節部のモータ駆動制御を行い（ステップＳ１３）、ロボットアーム５の動作を行う。
【０２５７】
以上のステップＳ１からステップＳ１３が制御の計算ループとして繰り返し実行されることにより、ロボットアーム５の動作の制御、すなわち、ロボットアーム５の機械インピーダンスの値を所定の設定値に制御する動作を実現することができる。
【０２５８】
（環境情報を考慮した制御ルール作成のための動作と環境情報を考慮した実際の動作フロー）
ロボットアーム５の制御装置における、環境情報を考慮した制御ルール作成のための動作と環境情報を考慮した実際の動作フローとについて説明する。
【０２５９】
図１７Ａは、本第１実施形態におけるロボットアーム５の制御装置における、ロボットアーム５の動作フローチャートを示す。
人４Ａは、外部入力装置２６ａにより、制御ルールデータベース１６の作業の中からロボットアーム５に実行させたい作業を選択し、データ入力ＩＦ２６を介して、前記選択された作業に対応する「作業ＩＤ」の選択指令を動作指令部２７に入力する（ステップＳ５０）。
【０２６０】
次に、動作指令部２７に入力された前記選択指令に基づいて、動作指令部２７は、データベース入出力部２８を介して制御ルールデータベース１６を参照して、前記選択した「作業ＩＤ」に関する「動作ＩＤ」を特定する。そして、動作指令部２７は、前記特定した「動作ＩＤ」の情報に基づいて、データベース入出力部２８を介して動作情報データベース１７を参照し、動作情報データベース１７に記憶された「動作ＩＤ」に従ってロボットアーム５の動作手順を設定する（ステップＳ５１）。
【０２６１】
次に、人４Ａが、データ入力ＩＦ２６を使用して、前記選択した作業についての動作開始の指令を動作指令部２７に入力すると、その動作開始指令を動作指令部２７が受けて、データベース入出力部２８を介して、制御パラメータ管理部２１へ、設定した制御モードで動作するよう指令を出す。制御パラメータ管理部２１は、設定した制御モードでロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２の制御の下にロボットアーム５を動作させる（ステップＳ５２）。
以上が、通常のロボットアーム５の制御動作フローである。
【０２６２】
（環境情報の変化を考慮した場合の、ロボットアーム５の制御動作フロー）
次に、環境情報の変化を考慮した場合の、ロボットアーム５の制御動作フローを説明する。
【０２６３】
図１７Ｂは、本第１実施形態におけるロボットアーム５の制御装置における、環境情報を考慮した制御ルール作成のための動作フローチャートを示す。
上記ロボットアーム５の動作中に、人４Ａがロボットアーム５を操作して、環境変化通知操作の開始の指令の入力を、データ入力ＩＦ２６を介して、動作指令部２７に行う（ステップＳ５３）。動作指令部２７に環境変化通知操作の開始の命令が入力されると、動作指令部２７により、ロボットアーム５の動作を停止させる。
【０２６４】
次に、人４Ａがロボットアーム５を把持して、前記制御装置に環境変化を通知するために、人４Ａが力をロボットアーム５にかけることで、データ入力ＩＦ２６から動作指令部２７を介して、動作補正部２０が環境変化通知操作の動作情報を取得する。具体的には、人４Ａが補正を開始した時点から終了する時点までのロボットアーム５の手先位置及び姿勢の情報を、データ入力ＩＦ２６から動作指令部２７を介して、動作補正部２０で取得し、制御ルール生成部２３へ環境変化通知操作の動作情報として出力する（ステップＳ５４）。
【０２６５】
次に、環境情報取得部１９により、ロボットアーム５が作用する環境に関する情報又はロボットアーム５が作動する周辺の環境に関する情報（環境情報）を取得する（ステップＳ５５）。
【０２６６】
次に、人４Ａの環境変化通知操作が終了すると、人４Ａが、データ入力ＩＦ２６を介して、環境変化通知操作の終了情報を動作指令部２７へ出力する（ステップＳ５６）。環境変化通知操作の終了情報が動作指令部２７へ出力されると、動作指令部２７から制御ルール生成部２３への環境変化通知操作の動作情報の出力が停止される。
【０２６７】
次に、ロボットアーム５の動作中に、人４Ａがロボットアーム５を操作して、動作補正操作の開始の指令の入力を、データ入力ＩＦ２６を介して、動作指令部２７に行う（ステップＳ５７）。一例として、ステップＳ５６とステップＳ５７とにおいて、環境変化通知操作の終了情報を受け取っていなくても、動作指令部２７が、人４Ａから動作補正操作の開始の指令をデータ入力ＩＦ２６を介して受け取ると、動作指令部２７は環境変化通知操作が終了したと判断して、動作補正操作の開始のためにロボットアーム５の動作を再開して、動作補正操作を開始するようにしてもよい。
【０２６８】
次に、ロボットアーム５の動作中に人４Ａがロボットアーム５を把持して、人４Ａが補正したい方向に力をロボットアーム５にかけることで、データ入力ＩＦ２６から動作指令部２７を介して、動作補正部２０が補正情報を取得し、動作補正部２０が動作情報を補正する。具体的には、人４Ａが補正を開始した時点から終了する時点までのロボットアーム５の手先位置及び姿勢の情報をある一定時間毎(例えば０．２秒毎)に、データ入力ＩＦ２６から動作指令部２７を介して、動作補正部２０で補正情報として取得し、動作補正部２０から制御ルール生成部２３へ補正情報を出力して動作情報を補正する（ステップＳ５８）。
【０２６９】
次に、人４Ａの動作補正操作が終了すると、データ入力ＩＦ２６を介して、動作補正操作の終了情報を動作指令部２７で判断して、動作指令部２７から、動作補正部２０を介して制御ルール生成部２３への補正情報の出力を停止する（ステップＳ５９）
次に、制御ルール生成部２３は、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報に基づいて、制御ルールを生成し、データベース入出力部２８を介して制御ルールデータベース１６に記憶する（ステップＳ６０）。
【０２７０】
（ロボットアーム５の制御装置の環境情報を考慮した実際の動作フロー）
図２９は、本第１実施形態におけるロボットアーム５の制御装置の環境情報を考慮した実際の動作フローチャートを示す。
【０２７１】
人４Ａは、外部入力装置２６ａにより、制御ルールデータベース１６の作業の中からロボットアーム５に実行させたい作業を選択し、データ入力ＩＦ２６を介して、前記選択された作業に対応する「作業ＩＤ」の選択指令を動作指令部２７に入力する（ステップＳ１００）。
【０２７２】
次に、動作指令部２７に入力された前記選択指令に基づいて、動作指令部２７は、データベース入出力部２８を介して制御ルールデータベース１６を参照して、制御ルールデータベース１６において、前記選択された「作業ＩＤ」に対応して複数の「動作ＩＤ」が存在するか否かを動作指令部２７で判断する（ステップＳ１０１）。前記選択された「作業ＩＤ」に対応して複数の「動作ＩＤ」が存在すると動作指令部２７で判断された場合には、ステップＳ１０２に進む。前記選択された「作業ＩＤ」に対応する「動作ＩＤ」が１つであると動作指令部２７で判断された場合には、ステップＳ１０７に進む。
【０２７３】
ステップＳ１０２では、環境情報取得部１９により、現在動作中のロボットアーム５の周辺の環境情報を取得する。その後、ステップＳ１０３に進む。
次に、ステップＳ１０２で取得した環境情報と、前記各「動作ＩＤ」に対応する「環境ＩＤ」で参照された環境情報の比較を動作指令部２７で行う（ステップＳ１０３）。
【０２７４】
動作指令部２７での比較により、環境情報が合致した「動作ＩＤ」の個数が１個であると動作指令部２７で判断された場合には、ステップＳ１０７に進む。環境情報が合致した動作の個数が０個であると動作指令部２７で判断された場合には、ステップＳ１１２に進む。環境情報が合致した動作の個数が２個以上であると動作指令部２７で判断された場合には、ステップＳ１０５に進む。
【０２７５】
ステップＳ１０５では、動作指令部２７の動作算出部２により、合致した２個以上の動作から１つの動作情報を算出する。その後、ステップＳ１０６に進む。
ステップＳ１０６では、動作算出部２により算出した動作情報は、制御パラメータ管理部２１へ出力して、このフローを終了する。
一方、ステップＳ１０４で合致した動作が０個であると動作指令部２７で判断された場合は、動作すべき動作が無しとなり、このフローを終了するとともに、ロボットアーム５は動作を停止する（ステップＳ１１２）。
【０２７６】
また、ステップＳ１０４で合致した動作が１個であると動作指令部２７で判断された場合とステップＳ１０１で「動作ＩＤ」が１個であると動作指令部２７で判断された場合には、その「動作ＩＤ」の「環境ＩＤ」が「−１」の値であるかを動作指令部２７で判断する（ステップＳ７）。「動作ＩＤ」の「環境ＩＤ」が「−１」の値であると動作指令部２７で判断された場合には、ステップＳ１１１に進む。「動作ＩＤ」の「環境ＩＤ」が「−１」の値でないと動作指令部２７で判断された場合には、ステップＳ１０８に進む。
【０２７７】
ステップＳ１０８では、環境情報取得部１９により、現在動作中のロボットアーム５の周辺の環境情報を取得する。その後、ステップＳ１０９に進む。
ステップＳ１０９では、ステップＳ１０８で取得した環境情報と、前記１個の「動作ＩＤ」に対応する「環境ＩＤ」で参照された環境情報との比較を動作指令部２７で行う。
【０２７８】
次いで、ステップＳ１１０において、ステップＳ１０９で環境情報が合致したと動作指令部２７で判断した場合には、動作指令部２７が制御ルールデータベース１６を参照して、前記合致した「環境ＩＤ」に対応する「動作ＩＤ」で記憶されている動作情報を取得し、取得した動作情報を制御パラメータ管理部２１へ出力して、このフローを終了する（ステップＳ１１１）。
【０２７９】
ステップＳ１１０において、環境情報が合致しなかったと動作指令部２７で判断した場合には、動作すべき動作が無しとして、このフローを終了するとともに、ロボットアーム５は動作を停止する（ステップＳ１１２）。
【０２８０】
以上、図１６の動作ステップＳ１〜ステップＳ１３及び図１７Ａ〜図１７ＢのステップＳ５０〜ステップＳ６０により、制御ルールに基づいてロボットアーム５の動作中に、人４Ａがロボットアーム５を直接把持して、力をロボットアーム５にかけることで、ロボットアーム５の周辺環境の変化を通知し、さらにその環境に応じて、動作情報を補正することができる。
【０２８１】
さらに、制御ルールを新たに生成することで、図２９のステップＳ１００〜Ｓ１１２の動作指令部２７の動作により、次回同じ環境となった際に、再度、人４Ａが動作補正の操作をすることなく、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５が自律的に動作することが可能となる。
【０２８２】
（第２実施形態）
本発明の第２実施形態における、ロボットアーム５とその制御装置の基本的な構成は、第１実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
【０２８３】
図１９Ａに示すように、ロボットアーム５とロボットアーム５制御装置を備えるロボット１を使って、ＩＨクッキングヒーター６などの天板６ａを拭き掃除作業する場合を例に説明する。ロボットアーム５のハンド３０には、作業対象物の一例である拭き掃除作業用治具の一例としてのスポンジ４６が取付けられている。
まず、比較例として、本発明とは異なり、汚れが発生した場合（汚れた部分を見つけた場合）に、その都度、人４Ａが補正操作をしなければならない場合について説明する。
【０２８４】
人４Ａは、ロボットアーム５が、例えば図１０Ａの「作業ＩＤ」の「１」の作業で、図１９Ａ（図１８ＡはＩＨクッキングヒーター６の天板６ａを上方から見た図）に示すように、ＩＨクッキングヒーター６などの天板６ａをスポンジ４６で拭き掃除動作をしている最中に、人４Ａが、ＩＨクッキングヒーター６などの天板６ａ上の拭き掃除動作中の場所とは別の場所（汚れた部分）９１が汚れていることを見つけたとする。このとき、図１９Ｂ（図１８ＢはＩＨクッキングヒーター６の上方から見た図）に示すように、汚れ付近をスポンジ４６で掃除するために、人４Ａが手４でロボットアーム５を把持して、ロボットアーム５の手先位置にあるスポンジ４６を、汚れた部分９１に移動させる。
【０２８５】
次に、汚れた部分９１に対して、天板６ａの平面方向のスポンジ４６（ハンド３０）の移動速度を加速させると同時に天板６ａの汚れ面に対してはスポンジ４６で強めに擦るために、人４Ａが動作中のロボットアーム５を把持して、天板６ａの平面方向は加速させて移動させながら、さらに、人４Ａが、ＩＨクッキングヒーター６の上方から下向きに汚れた部分９１に向かって力をロボットアーム５に加える。
【０２８６】
この結果、ロボットアーム５のＩＨクッキングヒーター６の平面方向は加速して移動しながら、ロボットアーム５は、さらに、ＩＨクッキングヒーター６の擦る力を強めて、拭き掃除作業を行う。
以上のような補正は、次回同じような汚れが発生した場合（汚れた部分を見つけた場合）に、再度、人４Ａが補正操作をしなければならず、面倒であった。
【０２８７】
そこで、この第２実施形態では、人４Ａからの操作とその際の環境情報から、制御ルール生成部２３により制御ルールを生成することにより、次回同じような汚れが発生した場合には、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５が自律的に拭き掃除作業をすることができるようになる。
【０２８８】
以下、その機能について説明する。
【０２８９】
−動作指令部−
以下、動作指令部２７の機能について説明する。
人４Ａは、データ入力ＩＦ２６により、制御ルールデータベース１６の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業を選択して、動作指令部２７により動作を実行する。すなわち、人４Ａがデータ入力ＩＦ２６により図１０Ａの「作業ＩＤ」が「１」の作業が選択された場合には、動作指令部２７は、その「１」の作業に対応する「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して参照し、動作情報（具体的には、位置、姿勢、時間、力）を基にフラグに従って制御モードを設定してロボットアーム５が動作するように、制御パラメータ管理部２１へ指令を出す。
【０２９０】
具体的には、図１０Ａの「作業ＩＤ」が「１」の作業が選択された場合は、「環境ＩＤ」が「−１」の値であるので、ロボットアーム５が動作する環境情報に関わらず、「動作ＩＤ」で記憶された動作で動作するように動作指令部２７から制御パラメータ管理部２１へ指令を出す。「作業ＩＤ」が「１」の作業の「動作ＩＤ」が「１」の動作の場合には、図５Ａの動作情報データベース１７より、「フラグ」が０、１、３、４、５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、φ、θ、ψについては位置制御モードで動作させ、ｚ軸についてはフラグの「８」ビット目が「１」であるので、力制御モードで動作するように動作指令部２７から制御パラメータ管理部２１へ指令を出す。以上により、図１９Ａに示すように、ロボットアーム５は、ＩＨクッキングヒーター６などの天板６ａの拭き掃除作業を開始する。
【０２９１】
−動作補正部−
以下、動作補正部２０の機能について説明する。
ＩＨクッキングヒーター６などの天板６ａを拭き掃除動作をしている最中に、人４ＡがＩＨクッキングヒーター６などの天板６ａ上の拭き掃除動作中の場所とは別の場所が汚れていることを確認し、データ入力ＩＦ２６により、汚れの状態をロボットアーム５に知らせる操作（環境変化通知操作）の開始の指令を動作指令部２７に出す。
【０２９２】
まず、動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介して環境変化通知操作の指令を受けて、データベース入出力部２８を介して動作情報データベース１７のフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。具体的には、図１０Ａの「作業ＩＤ」が「１」の作業で動作中の「動作ＩＤ」が「１」の動作をデータベース入出力部２８を介して動作情報データベース１７から参照すると、それぞれの「キー動作ＩＤ」のフラグが、図５Ａでは、０、１、３〜５ビット目、８ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関しては、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸、力に関してはｚ軸のみデータが有効ということが動作補正部２０でわかる。
【０２９３】
従って、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸について、位置制御モードからインピーダンス制御モード（人４Ａの力を検知した方向に移動させるモード）で動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。ｚ軸については、ＩＨクッキングヒーター６などの天板６ａの位置で高剛性位置制御モードにより動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。インピーダンス制御モードでは、人４Ａから力が加わっていない場合は停止し、人４Ａから力が加わっている場合はその方向に移動することができる。高剛性位置制御モードでは、人４Ａが力を加えても容易にロボットアーム５が移動しないモードで、人４Ａが加えた力を力検出部５３により検出することができる。
【０２９４】
次に、図１９Ｂ（図１８Ｂ）のように、ＩＨクッキングヒーター６などの天板６ａの汚れ箇所をロボットアーム５に知らせる操作（環境変化通知操作）を人４Ａが行う。具体的には、人４Ａが手４でロボットアーム５を直接把持して、汚れた部分９１に向かって力をロボットアーム５に加えてｘ−ｙ平面を移動させる。次いで、汚れた部分９１の上でｘ軸方向及びｙ軸方向にスポンジ４６を移動させながら、人４Ａがｚ軸方向下向きに力をロボットアーム５に加える。
【０２９５】
人４Ａが環境変化通知操作によりロボットアーム５に力を加えてロボットアーム５を移動させた動作を取得するために、制御パラメータ管理部２１からのロボットアーム５の手先位置及び力を動作補正部２０で取得し、取得した情報を動作補正部２０から、後述する制御ルール生成部２３へ出力する。
【０２９６】
次に、動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介して動作補正操作の開始の指令を受けて、動作情報データベース１７の補正パラメータフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。具体的には、図１０Ａの「作業ＩＤ」が「１」の作業で動作中の「動作ＩＤ」が「１」の動作をデータベース入出力部２８を介して動作情報データベース１８から動作補正部２０が参照すると、それぞれの「キー動作ＩＤ」の補正パラメータフラグが、図５Ａでは、０、１、８ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、ｘ軸及びｙ軸の位置成分及びｚ軸の力成分のみ補正が可能ということが動作補正部２０でわかる。ｘ軸及びｙ軸の位置成分とz軸の力成分を補正する場合には、ｘ軸及びｙ軸の位置成分とｚ軸の力成分を人４Ａの加えた力で補正ができるように、ｘ軸及びｙ軸はハイブリッドインピーダンス制御モードに、ｚ軸は高剛性位置制御モードで動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０２９７】
人４Ａは、図１９Ｃに示すように、汚れた部分９１及びその付近を強めに力をかけて速く移動してスポンジ４６で掃除するために、図１９Ｄ（図１９Ｃを上から見た図）に示すように、人４Ａでロボットアーム５を直接把持して、加速したい場合は、拭き掃除の進行方向と同じ向きに人４Ａでロボットアーム５に力をかけ、減速したい場合は掃除の進行方向に逆らう向きに人４Ａの手４でロボットアーム５に力をかける。さらに、汚れた部分９１に向かう方向については、人４Ａがロボットアーム５を把持して汚れのある部分に向かってロボットアーム５に力を加える。
【０２９８】
ｘ軸及びｙ軸は、ハイブリッドインピーダンス制御モードにより、位置制御モードでロボットアーム５を移動させながら、インピーダンス制御モードにより、人４Ａの手４でロボットアーム５にかけた力を力検出部５３で検出して人４Ａの手４でロボットアーム５に力をかけた方向にロボットアーム５をｘ軸方向及びｙ軸方向に移動させる。図１０Ａの「作業ＩＤ」が「１」の作業で動作中の「動作ＩＤ」が「１」の動作で示されたロボットアーム５の位置（ｘ１、ｙ１）から、次の「動作ＩＤ」のロボットアーム５の位置（ｘ２、ｙ２）まで移動するのにかかる時間をｔ１とすると、ロボットアーム５の速度を人４Ａの力で変更した場合（図１９Ｄ参照）には、すなわち、位置（ｘ１、ｙ１）から位置（ｘ２、ｙ２）までに移動するのにかかる時間がｔ１からｔ２に変更された場合には、時間ｔ２の値が、動作補正部２０から、制御パラメータ管理部２１へ出力する。これにより、図１９Ｅのような動作に補正される。
【０２９９】
さらに、ｚ軸方向に加えた力は力検出部５３で検出し、制御パラメータ管理部２１からのロボットアーム５の力及び時間を動作補正部２０で取得し、取得した情報を動作補正部２０から、後述する制御ルール生成部２３へ出力する。なお、この時間に関する情報は、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間とする。
【０３００】
−制御ルール生成部−
制御ルール生成部２３は、第１実施形態の場合と同様に、データベース入出力部２８を介して、制御ルールデータベース１６の「動作ＩＤ」が参照する動作情報データベース１７の位置及び姿勢及び力及び時間との情報にて、後述するインピーダンス制御モード、若しくは位置制御モード、若しくは力制御モード、若しくはそれらを方向別に組み合わせた制御モード、のうち、いずれかのモードでのロボットアーム５の動作中に、データ入力ＩＦ２６から動作指令部２７を介して、制御ルール生成部２３で動作補正操作の開始の指令を受ける。すると、制御ルール生成部２３では、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報とに基づいて、制御ルールを生成し、データベース入出力部２８を介して、制御ルールデータベース１６に記憶する機能を有している。
【０３０１】
以下、制御ルール生成部２３の機能について説明する。
制御ルール生成部２３には、データ入力ＩＦ２６から動作指令部２７を介して、動作中の作業ＩＤに対して、環境変化通知操作の開始の指令を受けて、人４Ａからの環境変化通知操作にて生成したロボットアーム５の手先位置及び時間を動作補正部２０より入力される。加えて、環境変化通知操作の開始のタイミングより、環境情報取得部１９より環境情報が制御ルール生成部２３に入力される。さらに、環境変化通知操作の開始時の動作中の「動作ＩＤ」を動作情報データベース１８からデータベース入出力部２８を介して制御ルール生成部２３で参照し、その「動作ＩＤ」の「キー動作ＩＤ」のフラグに関する情報から、現在のロボットアーム５の制御モードに関する情報を制御ルール生成部２３で取得する。具体的には、図１０Ａの「作業ＩＤ」が「１」の作業で動作中の「動作ＩＤ」が「１」の動作の「キー動作ＩＤ」が「１」〜「８」のキー動作をデータベース入出力部２８を介して動作情報データベース１８から制御ルール生成部２３で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図５Ａでは、０、１、３〜５、８ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関しては、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸、力に関してはｚ軸のみデータが有効ということが制御ルール生成部２３でわかる。従って、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、インピーダンス制御モードとなっている。
【０３０２】
現在動作中の環境変化通知操作の際のロボットアーム５の移動方向の制御モードと検出部選択ルールデータベース２９に基づいて、複数の環境情報の中から制御ルールを生成するための環境情報の種別を制御ルール生成部２３で選択する。具体的には、図１０Ａの「作業ＩＤ」が「１」の作業の環境変化通知操作の開始のタイミングでは、図１８Ｂのようにｘ軸方向及びｙ軸方向で環境変化通知操作を行っている。ｘ軸及びｙ軸はインピーダンス制御モードで補正しているので、図１１Ａより、環境情報の種別ＩＤは「１」となり、図１１Ｂより、「画像」となる。さらに、図１８Ｂでは、ｘ軸方向及びｙ軸方向に環境変化通知操作をしているので、ｘ−ｙ平面を撮影可能な第１画像撮像装置１５ａでの画像を制御ルール生成部２３で選択する（例えば図２０の汚れが撮像された画像）。さらに、図１８Ｂの操作では、高剛性位置制御モードにてｚ軸方向に力を加える操作をしている。図１１Ａより、環境情報の種別ＩＤは、高剛性位置制御モードの場合は「２」となり、図１１Ｂより、「力」となり、力検出部５３で検出した力を制御ルール生成部２３で選択する。
【０３０３】
制御ルール生成部２３で取得した画像と力の情報を、制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。具体的には、図９Ａの「環境ＩＤ」が「１１」の環境情報に示すように、新しい「環境ＩＤ」に「１１」を制御ルール生成部２３で付与し、その「環境ＩＤ」の「画像ＩＤ」に、選択した画像のファイル名を制御ルール生成部２３でデータベース入出力部２８を介して環境情報データベース１８に記憶する（この例では画像４であり、図２０の汚れた部分９１が撮像された画像である。）。さらに、検出した力の値を制御ルール生成部２３でデータベース入出力部２８を介して環境情報データベース１８に記憶する。なお、力に関しては全ての軸を制御ルール生成部２３でデータベース入出力部２８を介して環境情報データベース１８に記憶する。力に関しては、汚れによって摩擦係数（摩擦係数は、拭き掃除動作時の力検出部５３の出力のうち、掃除面上の進行方向の力を、掃除面の垂直抗力で割ることで算出される）が異なる。例えば、粘性のある物質がこびりついている場合には、摩擦係数が大きくなる。従って、力に関する情報を制御ルール生成部２３でデータベース入出力部２８を介して環境情報データベース１８に記憶することで、摩擦係数に応じて拭き掃除の力加減を変えることができるようになる。
【０３０４】
フラグは、画像及び力の全ての値が有効であるので、０〜６ビット目を「１」として、制御ルール生成部２３でデータベース入出力部２８を介して環境情報データベース１８に記憶する。
【０３０５】
動作補正操作の開始の指令を受けて、動作補正部２０で補正した動作情報をデータベース入出力部２８を介して動作情報データベース１７に記憶する。
【０３０６】
具体的には、図５Ｃに示すように、動作情報データベース１７に新規に「動作ＩＤ」を動作補正部２０で付与し（この例では「４」）、さらに「キー動作ＩＤ」として（「３２」〜「３８」）を動作補正部２０で付与し、動作補正部２０で補正した動作情報をそれぞれの「キー動作ＩＤ」に記憶する。時間については、動作補正部２０からは、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間が入力されるため、一番最初のキー動作（この例では「２０」）の時間を全ての動作のそれぞれの時間から減算した値を動作情報データベース１７に記憶する。フラグについては、補正前のフラグで「１」となっている動作情報の成分のうち、補正前と補正後の「動作ＩＤ」のそれぞれのキー動作の位置姿勢と力の値とをそれぞれの成分毎に動作補正部２０で比較し、その差がある閾値以上の成分のみ、動作補正部２０により、図６のフラグのそれぞれの成分を「１」とし、閾値未満の場合には「０」とする。
【０３０７】
具体的には、補正前の「動作ＩＤ」が「１」の動作のフラグは、０、１、３〜５、８ビット目が「１」であり、その他は「０」であるので、補正前の動作と補正後の動作の位置姿勢、力の値のうち、位置姿勢（ｘ，ｙ，φ，θ，ψ）、力ｚ成分のみを動作補正部２０で比較する。「キー動作ＩＤ」が「１」のキー動作と「４」のキー動作とでは、位置姿勢（ｘ，ｙ，φ，θ，ψ）の成分のうち、ｘ成分の差は０．１（ｍ）、ｙ成分の差は０．２（ｍ）、その他の成分は同じで、力のｚ成分の差が３（Ｎ）となる。位置の差の閾値を０．０５（ｍ）、力の差の閾値を０．５（Ｎ）とすると、位置ｘ成分及びｙ成分、力のｚ軸成分が閾値以上となる。従って、「動作ＩＤ」が「４」の動作のそれぞれの「キー動作ＩＤ」のフラグは、０、１、８ビット目が「１」で、その他は「０」となる。
【０３０８】
補正パラメータフラグについては、補正前の動作（この例では「１」〜「８」）の値を動作補正部２０により動作情報データベース１７に記憶する。
【０３０９】
以上により、人４Ａが環境変化通知操作及び動作補正操作をすることにより、制御ルール生成部２３により、新しい制御ルールを生成することで、環境変化に伴って、人４Ａが操作をして動作を補正すれば、次に同じような環境になった場合に、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５は自律的に動作することができるようになる。
【０３１０】
以上のように、制御ルールを新しく生成することで、次に同じ環境になった場合に（この例では、汚れがひどい場合は強めに速く拭き掃除を行う場合に）、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）追加した制御ルールで作業を行うことが可能になる。
【０３１１】
この例では、図１０Ｂに示すように、「作業ＩＤ」が「１」の作業には、複数の「動作ＩＤ」（「１」、「４」）を動作情報データベース１７に記憶しているため、その場合の動作指令部２７の機能（動作算出部２）について説明する。
【０３１２】
図１０Ｂの「作業ＩＤ」が「１」の作業の「動作ＩＤ」が「１」の動作は、図１９Ａの動作を行うための動作情報を表し、一方、「作業ＩＤ」が「１」の作業の「動作ＩＤ」が「４」の動作は図１９Ｂのように汚れがひどい場合の拭き掃除動作を行うための動作情報を表す。
【０３１３】
人４Ａが、データ入力ＩＦ２６により、「作業ＩＤ」が「１」の作業の開始を動作指令部２７に指令する。
【０３１４】
動作指令部２７は、指定された「作業ＩＤ」の作業の作業開始指令を受けて、データベース入出力部２８を介して制御ルールデータベース１６の指定された「作業ＩＤ」の作業を開始させる。このとき、「作業ＩＤ」の中に複数の「動作ＩＤ」が存在すると動作指令部２７で判断した場合は、それぞれの「環境ＩＤ」とそれぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７が参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を動作指令部２７の動作算出部２により算出する。
【０３１５】
具体的には、図１０Ｂにおいて、「作業ＩＤ」が「１」の作業には、「動作ＩＤ」が「１」の動作と「４」の動作とがある。「動作ＩＤ」が「１」の動作は「環境ＩＤ」が「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず動作するので、実行すべき動作として動作指令部２７により選択する。
【０３１６】
次に、「動作ＩＤ」が「４」の動作の「環境ＩＤ」は「１１」の環境情報となり、「−１」の値ではないので、動作指令部２７により、環境情報データベース１８の「環境ＩＤ」が「１１」の環境情報をデータベース入出力部２８を介して参照する。図９Ａの「環境ＩＤ」が「１１」の環境情報のフラグは、１〜６ビット目が「１」であるので、画像及び力が有効であると、動作指令部２７で判断できる。そこで、画像ＩＤ（具体的には画像ファイル名）及び力を、データベース入出力部２８を介して環境情報データベース１８により動作指令部２７が取得する。
【０３１７】
次に、環境情報取得部１９より、現在の画像情報及び力情報を動作指令部２７が取得して、画像マッチングにより、前記取得した画像ＩＤの画像情報と現在の画像情報とに基づく２つの画像を動作指令部２７で比較する。２つの画像が合致したと動作指令部２７で判断した場合には、「動作ＩＤ」が「３」で記憶されている動作を実行すべき動作として動作指令部２７で選択する。
【０３１８】
選択された動作が複数存在する場合は（この例では、「動作ＩＤ」が「１」の動作と「４」の動作）、選択された複数の動作を、制御ルールデータベース１６に記憶されている順に、それぞれの動作情報のフラグに応じて、実行すべき動作を動作指令部２７で足し合わせる。
【０３１９】
この例では、「動作ＩＤ」が「１」の動作と「４」の動作とが動作指令部２７で選択されており、図１０Ｂの制御ルールデータベース１６の「動作ＩＤ」には「１」の動作、「４」の動作の順に記憶されている。従って、「動作ＩＤ」が「１」の動作の動作情報のフラグが、図５Ｃより０、１、３〜５ビット目及びビット目が「１」であるので、「動作ＩＤ」が「１」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，φ，θ，ψ）と力ｚ軸成分の動作情報を動作指令部２７で取得する。
【０３２０】
次に、「動作ＩＤ」が「４」の動作のフラグは、０、１、８ビット目のみ「１」であるので、「動作ＩＤ」が「１」の動作の位置のｘ成分及びｙ成分と力のｚ軸成分を「動作ＩＤ」が「４」の動作のそれぞれに置き換えて動作指令部２７で算出する。例えば、「キー動作ＩＤ」が「１」のキー動作の位置姿勢は、（０．１，０．１，０，０，０，０）、力（０，０，５，０，０，０）であり、「動作ＩＤ」が「４」の動作の「キー動作」が「３２」の動作の位置姿勢は、（０．２，０．３，０，０，０，０）、力（０，０，８，０，０，０）であるので、「キー動作」が「１」のキー動作の位置姿勢、力情報のうち、「キー動作ＩＤ」が「３２」のキー動作の位置のｘ成分及びｙ成分（０．２、０．３）と力ｚ軸成分８（Ｎ）のみを動作指令部２７で置き換えることで、最終の位置姿勢は、（０．２，０．３，０，０，０，０）、力情報（０，０，８，０，０，０）となる。同様に「キー動作ＩＤ」が「２」のキー動作の位置のｘ成分及びｙ成分と力のｚ成分を、「キー動作ＩＤ」が「３３」のキー動作のｘ成分及びｙ成分と力のｚ成分で動作指令部２７で置き換え、以降、「キー動作ＩＤ」の終わりまで動作指令部２７で順次算出する。
【０３２１】
動作情報のフラグ及び動作情報フラグについて、「動作ＩＤ」が「１」の動作と「４」の動作とのそれぞれのビットにおいて、どちらかのビットが「１」の場合には、算出後のフラグのビットを「１」にするとともに、両方とも「０」の場合には、「０」とする。ただし、位置と力のそれぞれの成分はどちらかにしか「１」とならないため（位置制御モード若しくは力制御モードのどちらかでしか作動しないため）、位置と力の両方に「１」となった場合には、力を優先する。
【０３２２】
「動作ＩＤ」の「１」の動作のフラグは、０、１、３〜５、８ビット目が「１」であり、「４」は８ビット目が「１」であるので、算出した動作のフラグは、０、１、３〜５、８ビット目が「１」となる。
「動作ＩＤ」の「１」の動作と「４」の動作との動作パラメータフラグは、共に０、１、８ビット目が「１」であるので、算出した動作の動作パラメータフラグは０、１、８ビット目が「１」となる。
【０３２３】
算出後の動作情報をフラグに応じて制御モードを動作指令部２７で切り替えて、動作情報を動作指令部２７から制御パラメータ管理部２１へ出力することで、算出した動作を動作指令部２７で実行することが可能となる。
【０３２４】
以上により、拭き掃除中に人４Ａが汚れている箇所をロボットアーム５を直接把持して、力をロボットアーム５にかけることで、ロボットアーム５の周辺環境の変化（汚れのある箇所）を通知し、汚れの色又は汚れ面の摩擦係数に応じて、動作情報を補正することができる。さらに、第１実施形態と同様に、制御ルールを新たに生成することで、図２９のステップＳ１００〜Ｓ１１２の動作指令部２７の動作により、次回同じ環境となった際に、再度人４Ａが動作補正の操作をすることなく、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５が自律的に動作することができるようになる。
【０３２５】
（第３実施形態）
本発明の第３実施形態における、ロボットアーム５とその制御装置の基本的な構成は、第１実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
【０３２６】
第３実施形態においては、ロボットアーム５とロボットアーム５の制御装置を備えるロボット１を使って、図２１に示すように、セル生産の工場でテレビ又はＤＶＤレコーダなどの機器７１にネジ７３を取り付ける場合を例にとって説明する。ロボットアーム５のハンド３０には、作業用治具の一例としてネジ７３を取り付けるための工具が取付け可能としている。
【０３２７】
図２１に示したように、ロボット１のロボットアーム５は、例えば工場内の作業台テーブルなどの作業台７の壁面７ａに設置され、ロボットアーム５の基端が、壁面７ａに固定されたレール８に、移動可能に支持され、レール８上をロボットアーム５がレール８沿いの横方向例えば水平方向に、人４Ａの力により、移動可能とする。１５ａはカメラなどの第１画像撮像装置であり、例えば天井７ｂから作業台７を撮像できるように取り付けられている。
ロボット１は、例えば、工場内で、テレビ又はＤＶＤレコーダのネジ７３の取り付け作業などのロボットアーム５と人４Ａとが協働して行う作業をロボットアーム５を使用して行う。
【０３２８】
第１実施形態と同様に、まず、人４Ａが手４でロボット１のロボットアーム５を直接把持してロボットアーム５に力を加える。そして、人４Ａからロボットアーム５に加えられた力により、ロボット１のロボットアーム５をレール８に沿って移動させることで、器具７１（この例では、ネジ７３を取り付けるテレビ又はＤＶＤレコーダの機器を示す。）の付近までロボットアーム５を誘導する。
【０３２９】
次に、人４Ａが、ロボット１のロボットアーム５の手先すなわち先端のハンド３０に、作業対象物の一例である作業用冶具９の別の例として、ネジ７３を取り付けるための工具、例えば、電動ドライバ器具７２を取り付ける。電動ドライバ器具７２は、例えば、ネジ７３をその下端に支持可能でかつ電動ドライバ器具７２を下方に向けて機器７１に押し付けることにより、スイッチがオンになり、ドライバが自動的に回転してネジ７３をネジ穴７１ａに対してネジ回転動作可能（締め付け動作可能又は取り外し動作可能）に構成している。押し付けを解除すれば、推知がオフとなり、電動ドライバ器具７２のドライバの回転が停止される。
【０３３０】
次に、セル生産の作業台７などの前側側面７ｅなどに配置されている、データ入力ＩＦ２６の一例としてのロボット１の操作盤１３のボタン１３ａを、人４Ａが押すなどしてデータ入力ＩＦ２６を使用することにより、ロボットアーム５が作動し、予め選択された作業、すなわち、器具７１のネジ穴７１ａに、ハンド３０で把持した電動ドライバ器具７２の先端に支持されたネジ７３を取り付ける（締め付ける）作業を開始させる。
【０３３１】
次に、機器７１の仕様変更により、機器７１の形状又はネジ７３若しくはネジ穴７１ａの仕様が変更になった場合に、ロボットアーム５が、ハンド３０で把持した電動ドライバ７２によりネジ７３の取り付け作業を行っているときに、人４Ａがネジ７３の取り付け状態を確認し、人４Ａがロボットアーム５に力を加えて、ネジ７３の締め付け方、又は、ネジ７３の位置の調整などの動作補正を行うことにより、ロボット１のロボットアーム５の動作を補正する。
【０３３２】
レール８は、作業台７の壁面７ａに配置したが、壁面の無い作業台の場合は、天井面又は作業台の天板６ａの側面など作業をするのに適した場所に設置することができる。
さらに、操作盤１３は、作業台７の側面に固定したが、操作盤１３に代えて、遠隔操作が可能なリモコンでも良い。
【０３３３】
−動作情報データベース−
動作情報データベース１７は、第１実施形態と同様に、ロボットアーム５の、ある時間におけるロボットアーム５の手先位置及び姿勢などのロボットアーム５の動作に関する情報（動作情報）を記憶している。動作情報は、制御ルール生成部２３を介してデータベース入出力部２８により動作情報データベース１７に入出力される。
【０３３４】
図２２Ａ、図２２Ｂは、本第３実施形態の動作情報データベース１７を示す。フラグ以外の動作情報は第１実施形態と同様であるので、説明を省略する。フラグは、ロボットアーム５の手先位置及び姿勢及び力のパラメータのうちのいずれの情報が有効かを示すフラグに関する情報である（図２２Ａの「フラグ」の欄参照）。具体的には図２３に示した３２ビットの数値で表す。０〜１１ビット目は第１実施形態と同様である。１２〜１７ビット目は、手先位置及び姿勢のそれぞれの値が有効である場合に（０〜５ビット目のいずれかが「１」の場合）、その手先位置及び姿勢の動作情報として、その動作情報を実行する際の直前の手先位置及び姿勢の値をコピーして使う場合に「１」とし、使わない場合は「０」とする。例えば、図２２Ａの「キー動作ＩＤ」が「５０」のキー動作の「フラグ」は、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。これは、０，１、３〜５、８ビット目が「１」であることから、手先位置及び姿勢のうち、（ｘ，ｙ，φ，θ，ψ）と力のｚ成分が有効であることを示す。さらに、１２，１３，１５〜１７目が「１」であるので、手先位置及び姿勢のうち、（ｘ，ｙ，φ，θ，ψ）成分を直前で動作している手先位置及び姿勢の（ｘ，ｙ，φ，θ，ψ）成分をコピーする。例えば「キー動作ＩＤ」が「５０」のキー動作の開始直前に「キー動作ＩＤ」が「４８」のキー動作が動作していた場合には、「キー動作ＩＤ」が「４８」のキー動作の位置姿勢のうち、（ｘ，ｙ，φ，θ，ψ）の値（この例では、（０．２，０．１，０，０，０））を「キー動作ＩＤ」が「５０」のキー動作の位置姿勢（ｘ，ｙ，φ，θ，ψ）にコピーする。直前の手先位置及び姿勢をコピーするため、直前の手先位置及び姿勢が次の手先位置及び姿勢の値と同じであることから、ロボットアーム５はその手先位置及び姿勢で停止することになる。
【０３３５】
−動作指令部（動作算出部）−
以下、動作指令部２７の機能について説明する。
人４Ａは、データ入力ＩＦ２６により、制御ルールデータベース１６の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業をデータベース入出力部２８を介して選択して、動作指令部２７により、その選択した「作業ＩＤ」にかかる動作を実行するように制御パラメータ管理部２１へ指令する。
【０３３６】
動作指令部２７がデータベース入出力部２８を介して制御ルールデータベース１６を参照するとき、１つの「作業ＩＤ」の作業が選択された場合で、かつ、動作指令部２７は、前記１つの「作業ＩＤ」の作業の中に複数の「動作ＩＤ」が記憶されていると判断した場合は、動作算出部２により動作情報を算出し、算出した動作情報（具体的には、位置、姿勢、時間、力）をフラグに従って、制御モードを設定して動作するように、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。
【０３３７】
具体的には、図１０Ａの「作業ＩＤ」が「３」の作業は、図２４Ａ（図２１を上方から見た図）に示すように、ロボットアーム５の手先位置のハンド３０がネジ穴７１ａ間を移動しながら、ネジ穴７１ａをロボット１で検出すると、ロボットアーム５の手先位置のハンド３０の電動ドライバ器具７２に支持されたネジ７３をネジ穴７１ａに締め付ける動作を行う制御ルールでの作業を示す。「作業ＩＤ」が「３」の作業には複数の「動作ＩＤ」（「１１」、「１２」）が記憶されている。
【０３３８】
動作算出部２では、複数の動作から１つの動作情報を算出する。具体的には、「動作ＩＤ」が「１１」の動作と「１２」の動作との中から１つの動作情報を動作算出部２で算出する。「動作ＩＤ」が「１１」の動作は、ロボットアーム５の手先位置のハンド３０（正確には、ハンド３０で把持した電動ドライバ器具７２）が、図２４Ａに示すように、ネジ穴７１ａ間を移動する動作を表す。「動作ＩＤ」が「１１」の動作の「環境ＩＤ」は「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず、ロボットアーム５が動作するので、実行すべき動作として動作指令部２７で選択する。「動作ＩＤ」が「１２」の動作は、下記するように、ネジ穴７１ａであると動作指令部２７で判断した場合に、ネジ７３を締め付ける動作を表す。「動作ＩＤ」が「１２」の動作の「環境ＩＤ」は「２０」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「２０」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。図９Ａの「環境ＩＤ」が「２０」の環境情報のフラグは、６ビット目のみ「１」であり、それ以外は「０」であるので、画像が有効であると、動作指令部２７で判断することができる。そこで、画像ＩＤより、環境情報データベース１８に記憶されている画像の情報を動作指令部２７で取得する。この画像は図２５のネジ穴７１ａの画像の情報を示す。次に、環境情報取得部１９より、現在の画像情報を動作指令部２７で取得して、画像マッチングにより、２つの画像を動作指令部２７で比較し、ネジ穴７１ａかどうかを動作指令部２７で判断する。２つの画像が合致したと動作指令部２７で判断した場合には、ネジ穴７１ａだと動作指令部２７で判断し、「動作ＩＤ」が「１２」で記憶されている動作を実行すべき動作として動作指令部２７で選択する。合致しなかったと動作指令部２７で判断した場合には、「動作ＩＤ」が「１２」の動作は動作指令部２７で選択せず、「１１」の動作のみを動作指令部２７で選択する。
【０３３９】
動作指令部２７で選択された「動作ＩＤ」が１つのみの場合には、第１実施形態と同様に、「動作ＩＤ」と同じ「動作ＩＤ」の動作を動作情報データベース１７からデータベース入出力部２８を介して動作指令部２７で参照する。「動作ＩＤ」と同じＩＤの動作情報は複数の「キー動作ＩＤ」で管理する動作情報（具体的には、位置の情報と、姿勢の情報と、時間の情報と、力の情報）を動作情報のフラグに従って、制御モードを設定して動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出して、それぞれのキー動作を順次実行するように、動作指令部２７から制御パラメータ管理部２１へ動作情報を出力する。この例では、ロボットアーム５の周辺の環境が、「動作ＩＤ」が「１２」の動作の「環境ＩＤ」が「２０」の環境情報に合致しないと動作指令部２７で判断した場合には、ネジ穴７１ａが検出できなかったと動作指令部２７で判断し、「動作ＩＤ」が「１１」で示した動作を実行するように動作指令部２７から制御パラメータ管理部２１へ指令を出す。
【０３４０】
すなわち、図２２Ａの動作情報データベース１７より、「フラグ」が０〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、ｚ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、ｚ、φ、θ、ψについては位置制御モードで動作させる。
以上により、図２４Ａ（図２１を上方から見た図）に示すように、ロボットアーム５はネジ穴７１ａ間を移動する動作を開始する。
【０３４１】
「動作ＩＤ」が「１１」の動作でロボットアーム５がネジ穴７１ａ間を移動中に、ネジ穴７１ａの上方の部分にロボットアーム５が到達したと動作指令部２７で判断した場合には、「動作ＩＤ」が「１２」の動作の「環境ＩＤ」が「２０」の環境情報の画像と環境情報取得部１９で取得した現在の画像情報の画像とが合致すると動作指令部２７で判断されるため、「動作ＩＤ」が「１１」の動作と「１２」の動作との２つの動作が動作指令部２７で選択される。動作指令部２７の動作算出部２では、それぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７で参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を算出する。
【０３４２】
この例では、「動作ＩＤ」が「１１」の動作と「１２」の動作とが動作指令部２７で選択されており、図１０Ａの制御ルールデータベース１６の「動作ＩＤ」には「１１」の動作、「１２」の動作の順に記憶されている。従って、「動作ＩＤ」が「１１」の動作の動作情報のフラグが、図２２Ａより０〜５ビット目及びビット目が「１」であるので、「動作ＩＤ」が「１１」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，ｚ，φ，θ，ψ）の動作情報を動作指令部２７で取得する。
【０３４３】
次に、「動作ＩＤ」が「１２」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。フラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、その際に、「動作ＩＤ」が「１２」の動作のそれぞれのキー動作のフラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「１１」の動作の動作情報を現在実行中のロボットアーム５の手先位置情報をコピーして動作指令部２７で置き換える。この例では、ネジ穴７１ａの上方にロボットアーム５が配置されているので、その位置及び姿勢情報を「動作ＩＤ」が「１１」の動作に動作指令部２７でコピーする。他のキー動作の位置についても同様に動作指令部２７で置き換える。
【０３４４】
次に、「動作ＩＤ」が「１１」の動作の動作情報のうち、（ｘ，ｙ，φ，θ，ψ）と力ｚ成分の値を「動作ＩＤ」が「１２」の動作のそれぞれの動作情報に動作指令部２７で置き換えて動作算出部２で算出する。
以降、「キー動作ＩＤ」の終わりまで順次動作算出部２で算出する。
【０３４５】
動作算出部２で算出した動作情報のフラグ及び動作情報フラグについて、動作算出部２により、「動作ＩＤ」が「１１」の動作と「１２」の動作とのそれぞれのビットにおいて、どちらかのビットに「１」の場合には、算出後のフラグのビットを「１」に、両方とも「０」の場合には、「０」とする。ただし、位置と力のそれぞれの成分はどちらかにしか「１」とならないため（位置制御モード若しくは力制御モードのどちらかでしか作動しないため）、位置と力の両方に「１」となった場合には、力を優先する。
【０３４６】
「動作ＩＤ」が「１１」の動作のフラグは、０〜５ビット目が「１」であり、「１２」は０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」であるので、０〜５、８、１２、１３、１５〜１７ビット目が「１」となる。位置ｚ成分と力ｚ分の両方が「１」となっているので、力を優先するため、最終的には、０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」となる。
【０３４７】
「動作ＩＤ」が「１１」の動作の動作パラメータフラグは、１，２，３ビット目が「１」であり、「動作ＩＤ」が「１２」の動作の動作パラメータフラグは、８ビット目が「１」である。従って、動作算出部２で算出した動作の動作パラメータフラグは、１，２，３，８ビット目が「１」となる。
【０３４８】
動作算出部２で算出した動作の「フラグ」が０、１、３〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、φ、θ、ψについては位置制御モードで動作させる。さらに、８ビット目が「１」であるので、ｚ軸は力制御モードで動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出す。
【０３４９】
以上により、図２４Ｂ（図２１を上方から見た図）に示すように、ロボットアーム５はネジ７３をネジ穴７１ａの中に締め付ける動作を開始する。
【０３５０】
−動作補正部−
以下、動作補正部２０の機能について説明する。
人４Ａがデータ入力ＩＦ２６により、「作業ＩＤ」が「３」の作業を指定して動作指令部２７に作業開始を指示すると、図２６Ａに示すように、ロボットアーム５にネジ７３をネジ穴７１ａから取り外す作業を開始する。
【０３５１】
次に、ＴＶ又はＤＶＤレコーダなどの機器７１の仕様変更に伴い、図２６Ｂに示すように、仕様変更箇所に立設された突出部材（例えば、新たに装着された部品又はネジなど）７１ｂを追加するよう仕様変更した機器を設置する。あらかじめ生成されている「作業ＩＤ」が「３」の作業は突出部材７１ｂの仕様変更前に生成されているため、そのまま動作させると、突出部材７１ｂにぶつかって、ロボットアーム５の動作が止まってしまう。
【０３５２】
そこで、人４Ａは、図２６Ｃに示すような環境変化通知操作の開始の指令をデータ入力ＩＦ２６を介して動作指令部２７に入力する。動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介しての環境変化通知操作の指令を受けて、動作情報データベース１７のフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。
【０３５３】
具体的には、図２６Ｂに示すように、仕様変更箇所の突出部材７１ｂに衝突した箇所では、ネジ穴７１ａがないので、「動作ＩＤ」が「１２」の動作の「環境ＩＤ」が「２０」の環境情報に合致しないと動作補正部２０で判断するため、「動作ＩＤ」が「１１」の動作のみで動作している。動作中の「動作ＩＤ」が「１１」の動作を動作情報データベース１８からデータベース入出力部２８を介して動作補正部２０で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図２２Ａでは、０〜５ビット目が「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関しては、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸が有効ということが動作補正部２０でわかる。従って、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸について、位置制御モードからインピーダンス制御モード（人４Ａの力を検知した方向に移動させるモード）で動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０３５４】
次に、図２６Ｃのように、機器７１上の仕様変更箇所の突出部材７１ｂを知らせるために、仕様変更箇所の突出部材７１ｂの上方箇所を７１と平行にｘ−ｙ平面を移動させる。人４Ａが環境変化通知操作により力を加えて移動させた動作を動作補正部２０で取得するために、制御パラメータ管理部２１からのロボットアーム５の手先位置及び力を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。
【０３５５】
次に、動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介しての動作補正操作の開始の指令を受けて、動作情報データベース１７の補正パラメータフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ動作補正部２０から指令を出す。具体的には、図１０Ａの「作業ＩＤ」が「３」の作業で動作中の「動作ＩＤ」が「１１」の動作を動作情報データベース１８から動作補正部２０で参照すると、それぞれの「キー動作ＩＤ」の補正パラメータフラグが、図２２Ａでは、０〜２ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作の位置姿勢のうち、ｘ軸成分、ｙ軸成分、及び、ｚ軸成分のみ補正が可能ということが動作補正部２０でわかる。ｘ軸、ｙ軸、及び、ｚ軸について、位置制御モードからハイブリッドインピーダンス制御モード（位置制御モードで移動しながら、人４Ａの力を検知した方向にインピーダンス制御で移動させるモード）で動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０３５６】
次に、図２６Ｄに示すように、人４Ａがロボットアーム５を直接把持して、仕様変更箇所の突出部材７１ｂに衝突しない高さになるように力をかけると、ハイブリッドインピーダンス制御モードにより、位置制御モードでロボットアーム５を移動させながら、インピーダンス制御モードにより、人４Ａの力を検知して力をかけた方向にロボットアーム５をｘ軸方向、ｙ軸方向、及び、ｚ軸方向に移動させることができる。人４Ａが力を加えて移動させた動作を取得するために、制御パラメータ管理部２１からのロボットアーム５の手先位置及び時間を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。なお、この時間に関する情報は、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間とする。
【０３５７】
−制御ルール生成部−
制御ルール生成部２３は、第１実施形態の場合と同様に、制御ルールデータベース１６の動作ＩＤが参照する動作情報データベース１７の位置及び姿勢及び力及び時間との情報にて、後述するインピーダンス制御モード、若しくは位置制御モード、若しくは力制御モード、若しくはそれらを方向別に組み合わせた制御モード、のうち、いずれかのモードでのロボットアーム５の動作中に、データ入力ＩＦ２６から動作指令部２７を介して、制御ルール生成部２３で環境変化通知操作及び動作補正開始の指令を受ける。すると、制御ルール生成部２３では、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報とに基づいて、制御ルールを生成し、制御ルールデータベース１６に記憶する機能を有している。
【０３５８】
以下、制御ルール生成部２３の機能について説明する。
図２６Ｂに示すように、仕様変更箇所の突出部材７１ｂに衝突した箇所では、ネジ穴７１ａがないので、「動作ＩＤ」が「１２」の動作の「環境ＩＤ」が「２０」の環境情報に合致しないため、「動作ＩＤ」が「１１」の動作のみで動作している。
【０３５９】
制御ルール生成部２３は、データ入力ＩＦ２６から動作指令部２７を介して動作中の作業ＩＤに対して、環境変化通知操作の開始の指令を受けて、人４Ａからの環境変化通知操作にて生成したロボットアーム５の手先位置及び時間を動作補正部２０より入力する。加えて、環境変化通知操作の開始のタイミングより、環境情報取得部１９より環境情報を入力する。さらに、環境変化通知操作の開始時の動作中の「動作ＩＤ」を動作情報データベース１８から制御ルール生成部２３で参照し、その「動作ＩＤ」の「キー動作ＩＤ」のフラグに関する情報から現在のロボットアーム５の制御モードに関する情報を制御ルール生成部２３で取得する。具体的には、図１０Ａの「作業ＩＤ」が「３」の作業で動作中の「動作ＩＤ」が「１１」の動作の「キー動作ＩＤ」が「４１」〜「４８」のキー動作を動作情報データベース１８から参照すると、それぞれの「キー動作ＩＤ」のフラグが、図２２Ａでは、０〜５ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸のみデータが有効ということが制御ルール生成部２３でわかる。従って、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、インピーダンス制御モードとなっている。
【０３６０】
現在動作中の環境変化通知操作の際のロボットアーム５の移動方向の制御モードと検出部選択ルールデータベース２９に基づいて、複数の環境情報の中から制御ルールを生成するための環境情報の種別を制御ルール生成部２３で選択する。具体的には、図１０Ａの「作業ＩＤ」が「３」の作業の環境変化通知操作の開始のタイミングでは、図２６Ｃのようにｘ軸方向及びｙ軸方向で環境変化通知操作を行っている。ｘ軸及びｙ軸はインピーダンス制御モードで補正しているので、図１１Ａより、環境情報の種別ＩＤは「１」となり、図１１Ｂより、「画像」を制御ルール生成部２３で選択する。さらに、図２６Ｃでは、ｘ軸方向及びｙ軸方向に環境変化通知操作をしているので、ｘ−ｙ平面を撮影可能な画像撮像装置１５ａでの画像を制御ルール生成部２３で選択する。具体的には、図２７に示すように、仕様変更箇所の突出部材７１ｂを上方から下向きに撮像した画像となる。選択した画像は、制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。この例では、図９Ａの「環境ＩＤ」が「２１」の環境情報に示すように、新しい「環境ＩＤ」として「２１」を制御ルール生成部２３で付与し、その「環境ＩＤ」の「画像ＩＤ」に、選択した画像のファイル名を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。さらに、フラグは画像のみであるので、６ビット目のみ「１」を、その他のビットに「０」を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。
【０３６１】
次に、動作補正操作の開始の指令を受けて、動作補正部２０で補正した動作情報を、データベース入出力部２８を介して動作情報データベース１７に記憶する。
【０３６２】
具体的には、図２２Ｂの動作情報データベース１７に新規に「動作ＩＤ」を動作補正部２０で付与し（この例では「１３」）、さらに「キー動作ＩＤ」として「６０」〜「６７」を動作補正部２０で付与し、動作補正部２０で補正した動作情報を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７のそれぞれの「キー動作ＩＤ」に記憶する。時間について、動作補正部２０からは、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間が入力されるため、一番最初のキー動作（この例では「６０」）の時間を全ての動作のそれぞれの時間から減算した値を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。フラグについては、補正前のフラグで「１」となっている動作情報の成分のうち、補正前と補正後の「動作ＩＤ」のそれぞれのキー動作の位置姿勢と、力の値とをそれぞれの成分毎に動作補正部２０で比較し、その差がある閾値以上の成分のみ、図６のフラグのそれぞれの成分を動作補正部２０で「１」とし、閾値未満の場合には動作補正部２０で「０」とする。
【０３６３】
具体的には、補正前の「動作ＩＤ」が「１１」の動作のフラグは、０〜５ビット目が「１」であり、その他は「０」であるので、補正前の動作と補正後の動作の位置姿勢と、力の値とのうち、位置姿勢成分のみを動作補正部２０で比較する。「キー動作ＩＤ」が「４１」のキー動作と「キー動作ＩＤ」が「６０」のキー動作とでは、位置姿勢（ｘ，ｙ，ｚ，φ，θ，ψ）の成分のうち、φ，θ，ψは同じで、ｘ座標、ｙ座標、及び、ｚ座標の差がそれぞれ（０．２、０．２、０．４）となり、差の閾値を０．１とすると、ｘ成分、ｙ成分、及びｚ成分のみが閾値以上となる。従って、動作補正部２０により、フラグは０，１、２ビット目が「１」で、その他は「０」とする。
【０３６４】
補正パラメータフラグについては、補正前の動作（この例では「４１」〜「４８」）の値を動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。
【０３６５】
次に、取得した環境情報と動作補正部２０の動作補正操作で補正した動作から制御ルールデータベース１９に新しい制御ルールを制御ルール生成部２３で生成して記憶する。
具体的には、制御ルールデータベース１６の「作業ＩＤ」が「３」の作業で動作中に動作を補正するため、制御ルール生成部２３により、図１０Ｂに示すように、「作業ＩＤ」が「３」の作業に１行追加し、動作補正により新しく追加した「動作ＩＤ」が「１３」の動作を追加する。
【０３６６】
次に、制御ルール生成部２３で選択した環境情報の環境ＩＤをデータベース入出力部２８を介して制御ルールデータベース１６に記憶する（この例では環境ＩＤ「２１」）。
【０３６７】
以上により、人４Ａが環境変化通知操作及び動作補正操作を行い、制御ルール生成部２３により新しい制御ルールを生成することで、機器７１の仕様変更を考慮した動作を事前に用意しておかなくても、その場で人４Ａが操作をして環境通知及び動作を補正するだけで、次に同じような環境になった場合に、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５は自律的に動作することができるようになる。
【０３６８】
−動作指令部（動作算出部）−
この例では、図１０Ｂに示すように、「作業ＩＤ」が「３」の作業には、複数の「動作ＩＤ」（「１１」「１２」、「１３」）を記憶しているため、その場合の動作指令部２７の機能について説明する。
【０３６９】
図１０Ｂの「作業ＩＤ」が「３」の作業の「動作ＩＤ」が「１１」の動作は図２８Ａの動作（ネジ穴７１ａ間を移動する動作）、「動作ＩＤ」が「１２」の動作は図２８Ｂの動作（ネジ７３を締め付ける動作）、「動作ＩＤ」が「１３」の動作は図２８Ｃの動作（仕様変更箇所の突出部材７１ｂを避ける動作）を行うための動作情報を表す。
【０３７０】
動作算出部２により、複数の動作から１つの動作情報を算出する。具体的には、「動作ＩＤ」が「１１」の動作の「環境ＩＤ」は「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず、ロボットアーム５は動作するので、実行すべき動作として動作指令部２７で選択する。「動作ＩＤ」が「１２」の動作は、ネジ穴７１ａであると動作指令部２７で判断した場合に、ネジ７３をネジ穴７１ａに締め付ける動作を表す。「動作ＩＤ」が「１２」の動作の「環境ＩＤ」は「２０」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「２０」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。「環境ＩＤ」が［２０］の環境情報により動作指令部２７で参照された画像情報と環境情報取得部１９より現在の画像情報とを動作指令部２７で取得して、画像マッチングにより、２つの画像を動作指令部２７で比較し、ネジ穴７１ａかどうかを動作指令部２７で調べる。２つの画像が合致したと動作指令部２７で判断した場合には、ネジ穴７１ａであると動作指令部２７で判断し、「動作ＩＤ」が「１２」の動作で記憶されている動作を実行すべき動作として動作指令部２７で選択する。
【０３７１】
さらに、「動作ＩＤ」が「１３」の動作の「環境ＩＤ」は「２１」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「２１」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。「環境ＩＤ」が「２１」の環境情報により動作指令部２７で参照された画像情報と環境情報取得部１９より現在の画像情報とを動作指令部２７で取得して、画像マッチングにより２つの画像を動作指令部２７で比較し、仕様変更箇所の突出部材７１ｂかどうかを動作指令部２７で判断する。２つの画像が合致したと動作指令部２７で判断した場合には、仕様変更箇所の突出部材７１ｂだと動作指令部２７で判断し、「動作ＩＤ」が「１３」の動作で記憶されている動作を実行すべき動作として動作指令部２７で選択する。
【０３７２】
動作指令部２７で選択された「動作ＩＤ」が「１１」の動作のみの場合には、「動作ＩＤ」が「１１」の動作で参照される動作情報を、動作指令部２７から制御パラメータ管理部２１へ出力して、図２８Ａの動作を実行する。
【０３７３】
図２８Ｂのように、ネジ穴７１ａの上方近傍の部分でハンド３０が動作している場合には、「動作ＩＤ」が「１１」の動作と「１２」の動作とが動作指令部２７で選択され、「動作ＩＤ」が「１３」の動作は動作指令部２７で選択されない。従って、上述したように、動作算出部２により「１１」の動作と「１２」の動作とから１つの動作を算出し、動作算出部２で算出した動作情報を、動作指令部２７から制御パラメータ管理部２１へ出力して、図２８Ｂの動作を実行する。
【０３７４】
図２８Ｃのように、仕様変更箇所の突出部材７１ｂの上方近傍の部分でハンド３０が動作している場合には、「動作ＩＤ」が「１１」の動作と「１３」の動作とが動作指令部２７で選択され、「動作ＩＤ」が「１２」の動作は動作指令部２７で選択されない。従って、動作算出部２により「１１」「１３」の動作から１つの動作を算出し、動作算出部２で算出した動作情報を動作指令部２７から制御パラメータ管理部２１へ出力して、図２８Ｃの動作を実行する。
なお、第３実施形態では、仕様変更箇所の突出部材７１ｂの迂回動作を補正したが、例えば、ネジ締め付けの際の力加減についても、同様に、適応可能である。
【０３７５】
さらに、リサイクル工場でテレビ又はエアーコンディショナーなどのリサイクル対象物に取れ付けられたネジ７３を取り外す場合に、図３７Ｂ（図３７Ａのネジ７３の十字穴付きの頭部７３ａを上から見た図）に参照符号９２で示すようなネジ７３の破損部分、又は、図３７Ｃ（図３７Ａのネジ７３の十字穴付きの頭部７３ａを上から見た図）に参照符号９３で示すような汚れ部分、図３７Ｄ（図３７Ａのネジ７３の十字穴付きの頭部７３ａを上から見た図）に参照符号９４で示すようなさび部分に対しても、同様に、適応可能である。なお、ネジに限らず、リサイクル対象物から取り外すべき取外物体（例えば、部品、基板、かしめ部材など）に対しても、取外物体取り外し用治具をハンド３０に把持させた場合にも、本発明を適用することができる。
【０３７６】
（第４実施形態）
本発明の第４実施形態における、ロボットアーム５とその制御装置の基本的な構成は、第１実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
【０３７７】
第４実施形態においては、図３１に示すように、ロボットアーム５とロボットアーム５の制御装置を備えるロボット１を使って、セル生産の工場でテレビ又はＤＶＤレコーダなどの機器７１の挿入口７５に作業対象物の一例であるフレキシブル基板７４を取り付ける場合を例にとって説明する。
【０３７８】
図３１に示したように、ロボット１のロボットアーム５は、例えば工場内の作業台テーブルなどの作業台７の壁面７ａに設置され、ロボットアーム５の基端が、壁面７ａに固定されたレール８に、移動可能に支持され、レール８上をロボットアーム５がレール８沿いの横方向例えば水平方向に、人４Ａの力により、移動可能とする。１５ａはカメラなどの第１画像撮像装置であり、例えば天井７ｂから作業台７を撮像できるように取り付けられている。
【０３７９】
ロボット１は、例えば、工場内で、テレビ又はＤＶＤレコーダのフレキシブル基板７４の取り付け作業などのロボットアーム５と人４Ａとが協働して行う作業をロボットアーム５により行う。
【０３８０】
第１実施形態と同様に、まず、人４Ａが手４でロボット１のロボットアーム５を直接把持してロボットアーム５に力を加える。そして、人４Ａからロボットアーム５に加えられた力により、ロボット１のロボットアーム５をレール８に沿って移動させることで、器具７１（この例では、フレキシブル基板７４を挿入するテレビ又はＤＶＤレコーダの機器を示す）の付近までロボットアーム５を誘導する。
【０３８１】
次に、セル生産の作業台７などの前側側面７ｅなどに配置されている、データ入力ＩＦ２６の一例としてのロボット１の操作盤１３のボタン１３ａを、人４Ａが押すなどしてデータ入力ＩＦ２６を使用することにより、ロボットアーム５が作動し、予め選択された作業、すなわち、器具７１の挿入口７５に、ハンド３０でコネクタ部分７４ａを把持したフレキシブル基板７４を挿入して取り付ける作業を開始させる。
【０３８２】
次に、機器７１の仕様変更により、機器７１の形状又はフレキシブル基板７４の仕様が変更になった場合に、ロボットアーム５が、フレキシブル基板７４の取り付け作業を行っているときに、人４Ａがフレキシブル基板７４の取り付け状態を確認し、人４Ａがロボットアーム５に力を加えて、取り付ける力具合、又は、フレキシブル基板７４の位置の調整などの動作補正を行うことにより、ロボット１のロボットアーム５の動作を補正する。
【０３８３】
レール８は、作業台７の壁面７ａに配置したが、壁面の無い作業台の場合は、天井面又は作業台の天板６ａの側面など作業をするのに適した場所に設置することができる。
さらに、操作盤１３は、作業台７の側面に固定したが、操作盤１３に代えて、遠隔操作が可能なリモコンでも良い。
【０３８４】
−動作情報データベース−
動作情報データベース１７は、第３実施形態と同様に、ロボットアーム５の、ある時間におけるロボットアーム５の手先位置及び姿勢などのロボットアーム５の動作に関する情報（動作情報）を記憶している。動作情報は、制御ルール生成部２３を介してデータベース入出力部２８により動作情報データベース１７に入出力される。
図３２Ａ、図３２Ｂは、本第４実施形態の動作情報データベース１７を示す。動作情報は第１実施形態と同様であるので、説明を省略する。
【０３８５】
−動作指令部（動作算出部）−
以下、動作指令部２７の機能について説明する。
人４Ａは、データ入力ＩＦ２６により、制御ルールデータベース１６の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業をデータベース入出力部２８を介して選択して、動作指令部２７により、その選択した「作業ＩＤ」にかかる動作を実行するように制御パラメータ管理部２１へ指令する。
【０３８６】
動作指令部２７がデータベース入出力部２８を介して制御ルールデータベース１６を参照するとき、１つの「作業ＩＤ」の作業が選択された場合で、かつ、動作指令部２７は、前記１つの「作業ＩＤ」の作業の中に複数の「動作ＩＤ」が記憶されていると判断した場合は、動作算出部２により動作情報を算出し、算出した動作情報（具体的には、位置、姿勢、時間、力）をフラグに従って、制御モードを設定して動作するように、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。
【０３８７】
具体的には、図１０Ａの「作業ＩＤ」が「４」の作業は、図３３Ａ（図３１を上方から見た図）に示すように、ロボットアーム５が移動しながら挿入口７５をロボット１で検出すると、ロボットアーム５の手先位置のハンド３０でコネクタ部分７４ａが把持されたフレキシブル基板７４のコネクタ部分７４ａを挿入口７５に挿入する動作を行う制御ルールでの作業を示す。「作業ＩＤ」が「４」の作業には複数の「動作ＩＤ」（「２１」、「２２」、「２３」の動作）が記憶されている。
【０３８８】
動作算出部２では、複数の動作から１つの動作情報を算出する。具体的には、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作との中から１つの動作情報を動作算出部２で算出する。「動作ＩＤ」が「２１」の動作は、ロボットアーム５の手先位置のハンド３０（正確には、ハンド３０で把持したフレキシブル基板７４）が、図３３Ａに示すように、機器７１の挿入口７５の近傍の上方部分を移動する動作を表す。「動作ＩＤ」が「２１」の動作の「環境ＩＤ」は「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず、ロボットアーム５が動作するので、実行すべき動作として動作指令部２７で選択する。「動作ＩＤ」が「２２」の動作は、下記するように、挿入口７５であると動作指令部２７で判断した場合に、挿入口７５の入り口にフレキシブル基板７４のコネクタ部７４ａが接触するまで、フレキシブル基板７４を移動させる動作を表す。「動作ＩＤ」が「２２」の動作の「環境ＩＤ」は「３０」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「３０」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。図９Ａの「環境ＩＤ」が「３０」の環境情報のフラグは、６ビット目のみ「１」であり、それ以外は「０」であるので、画像が有効であると、動作指令部２７で判断することができる。そこで、画像ＩＤより、環境情報データベース１８に記憶されている画像の情報を動作指令部２７で取得する。この画像は、図３４の挿入口７５の画像の情報を示す。次に、環境情報取得部１９より、現在の画像情報を動作指令部２７で取得して、画像マッチングにより、２つの画像を動作指令部２７で比較し、挿入口７５かどうかを動作指令部２７で判断する。２つの画像が合致したと動作指令部２７で判断した場合には、挿入口だと動作指令部２７で判断し、「動作ＩＤ」が「２２」で記憶されている動作を実行すべき動作として動作指令部２７で選択する。合致しなかったと動作指令部２７で判断した場合には、「動作ＩＤ」が「２２」の動作は動作指令部２７で選択せず、「２１」の動作のみを動作指令部２７で選択する。
【０３８９】
「動作ＩＤ」が「２３」の動作は、フレキシブル基板７４のコネクタ部７４ａを挿入口７５に挿入するために、フレキシブル基板７４を移動させる動作を表す。「動作ＩＤ」が「２３」の動作の「環境ＩＤ」は「３１」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「３１」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。図９Ａの「環境ＩＤ」が「３１」の環境情報のフラグは、０〜５ビット目のみ「１」であり、それ以外は「０」であるので、力が有効であると、動作指令部２７で判断することができる。環境情報取得部１９より、現在の力検出部の値を動作指令部２７で取得して、環境情報データベース１８で記憶されている力と動作指令部２７で比較する。この２つの力が合致したと動作指令部２７で判断した場合には、フレキシブル基板７４が挿入口７５から受ける力が、環境情報データベース１８で記憶されている力が合致したと動作指令部２７で判断し、「動作ＩＤ」が「２３」の動作で記憶されている動作を実行すべき動作として動作指令部２７で選択する。合致しなかったと動作指令部２７で判断した場合には、「動作ＩＤ」が「２３」の動作は動作指令部２７で選択せず、「２１」の動作又は「２２」の動作のどちらかを動作指令部２７で選択する。
【０３９０】
選択された「動作ＩＤ」が１つのみの場合には、第１実施形態と同様に、「動作ＩＤ」と同じ「動作ＩＤ」の動作をデータベース入出力部２８を介して動作情報データベース１７から動作指令部２７で参照する。「動作ＩＤ」と同じＩＤの動作情報は複数の「キー動作ＩＤ」で管理する動作情報（具体的には、位置の情報と、姿勢の情報と、時間の情報と、力の情報）を動作情報のフラグに従って、制御モードを設定して動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出して、それぞれのキー動作を順次実行するように、動作指令部２７から制御パラメータ管理部２１へ動作情報を出力する。この例では、ロボットアーム５の周辺の環境が、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報に合致しないと動作指令部２７で判断した場合には、挿入口７５が検出できなかったと動作指令部２７で判断し、「動作ＩＤ」が「２１」の動作で示した動作を実行するように動作指令部２７から制御パラメータ管理部２１へ指令を出す。
【０３９１】
すなわち、図３２Ａの動作情報データベース１７より、「フラグ」が０〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、ｚ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、ｚ、φ、θ、ψについては位置制御モードで動作させる。
以上により、図３３Ａ（図３１を上方から見た図）に示すように、ロボットアーム５は機器７１上を移動する動作を開始する。
【０３９２】
「動作ＩＤ」が「２１」の動作でロボットアーム５が機器７１上を移動中に、挿入口７５の上方の部分にロボットアーム５が到達したと動作指令部２７で判断した場合には、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報の画像と環境情報取得部１９で取得した現在の画像情報の画像とが合致すると動作指令部２７で判断されるため、「動作ＩＤ」が「２１」の動作と「２２」の動作との２つの動作が動作指令部２７で選択される。動作指令部２７の動作算出部２では、それぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７で参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を算出する。
【０３９３】
この例では、「動作ＩＤ」が「２１」の動作と「２２」の動作とが動作指令部２７で選択されており、図１０Ａの制御ルールデータベース１６の「動作ＩＤ」には「２１」の動作、「２２」の動作の順に記憶されている。従って、「動作ＩＤ」が「２１」の動作の動作情報のフラグが、図３２Ａより０〜５ビット目及びビット目が「１」であるので、「動作ＩＤ」が「２１」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，ｚ，φ，θ，ψ）の動作情報を取得する。
【０３９４】
次に、「動作ＩＤ」が「２２」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。フラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、その際に、「動作ＩＤ」が「２２」の動作のそれぞれのキー動作のフラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「２１」の動作の動作情報を現在実行中のロボットアーム５の手先位置情報をコピーして動作指令部２７で置き換える。この例では、挿入口７５の上方にロボットアーム５が配置されているので、その位置及び姿勢情報を「動作ＩＤ」が「２１」の動作に動作指令部２７でコピーする。他のキー動作の位置についても同様に動作指令部２７で置き換える。
【０３９５】
次に、「動作ＩＤ」が「２１」の動作の動作情報のうち、（ｘ，ｙ，φ，θ，ψ）の値を「動作ＩＤ」が「２２」の動作のそれぞれの動作情報に動作指令部２７で置き換えて動作算出部２で算出する。
以降、「キー動作ＩＤ」の終わりまで順次動作算出部２で算出する。
【０３９６】
動作算出部２で算出した動作情報のフラグ及び動作情報フラグについて、動作算出部２により、「動作ＩＤ」が「２１」の動作と「２２」の動作とのそれぞれのビットにおいて、どちらかのビットに「１」の場合には、算出後のフラグのビットを「１」に、両方とも「０」の場合には、「０」とする。ただし、位置と力のそれぞれの成分はどちらかにしか「１」とならないため（位置制御モード若しくは力制御モードのどちらかでしか作動しないため）、位置と力の両方に「１」となった場合には、力を優先する。
【０３９７】
「動作ＩＤ」が「２１」の動作のフラグは、０〜５ビット目が「１」であり、「２２」は０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」であるので、０〜５、８、１２、１３、１５〜１７ビット目が「１」となる。位置ｚ成分と力ｚ分の両方が「１」となっているので、力を優先するため、最終的には、０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」となる。
【０３９８】
「動作ＩＤ」が「２１」の動作の動作パラメータフラグは、１，２，３ビット目が「１」であり、「動作ＩＤ」が「２２」の動作の動作パラメータフラグは、８ビット目が「１」である。従って、動作算出部２で算出した動作の動作パラメータフラグは、１，２，３，８ビット目が「１」となる。
【０３９９】
動作算出部２で算出した動作の「フラグ」が０、１、３〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、φ、θ、ψについては位置制御モードで動作させる。さらに、８ビット目が「１」であるので、ｚ軸は力制御モードで動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出す。
以上により、図３３Ｂに示すように、ロボットアーム５は挿入口７５にフレキシブル基板７４のコネクタ部２４ａを接触するまで移動させる動作を開始する。
【０４００】
「動作ＩＤ」が「２２」の動作にてフレキシブル基板７４のコネクタ部２４ａを挿入口７５に接触するまで移動させる動作が完了した時点で、次に動作させる動作を動作指令部２７で選択する。「動作ＩＤ」が「２３」の動作の「環境ＩＤ」が「３１」の環境情報の力と環境情報取得部１９で取得した力が合致したと動作指令部２７で判断した場合には、「動作ＩＤ」が「２１」の動作と「２３」の動作との２つの動作が動作指令部２７で選択される。さらに、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報の力と環境情報取得部１９で取得した画像が合致すると動作指令部２７で判断した場合には、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作との３つの動作が動作指令部２７で選択される。
【０４０１】
動作算出部２では、それぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７で参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を算出する。
【０４０２】
この例では、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作とが選択されており、図１０Ａの制御ルールデータベース１６の「動作ＩＤ」には「２１」の動作、「２２」の動作、「２３」の動作の順に記憶されている。この場合は、最も番号の大きい「動作ＩＤ」を優先して動作指令部２７で選択する。「動作ＩＤ」が「２２」の動作の動作情報のフラグが、図３２Ａより０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「２２」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，φ，θ，ψ）とｚ成分の力情報の動作情報を取得する。次に、「動作ＩＤ」が「２３」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。フラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、その際に、「動作ＩＤ」が「２２」の動作のそれぞれのキー動作のフラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「１１」の動作の動作情報を現在実行中のロボットアーム５の手先位置情報をコピーして動作指令部２７で置き換える。この例では、挿入口の上方にロボットアーム５が配置されているので、その位置及び姿勢情報を「動作ＩＤ」が「２１」の動作に動作指令部２７でコピーする。他のキー動作の位置についても、同様に動作指令部２７で置き換える。次に、「動作ＩＤ」が「２２」の動作の動作情報のうち、（ｘ，ｙ，φ，θ，ψ）成分の値を「動作ＩＤ」が「２３」の動作のそれぞれの動作情報に置き換えて動作算出部２で算出する。
以降、「キー動作ＩＤ」の終わりまで順次動作算出部２で算出する。
【０４０３】
−動作補正部−
以下、動作補正部２０の機能について説明する。
人４Ａがデータ入力ＩＦ２６により、「作業ＩＤ」が「４」の作業を指定して動作指令部２７に作業開始を指示すると、図３５Ａに示すように、ロボットアーム５はフレキシブル基板７４のコネクタ部７４ａを挿入口７４に挿入する作業を開始する。
【０４０４】
次に、ＴＶ又はＤＶＤレコーダなどの機器７１の仕様変更に伴い、図３５Ｂに示すように、フレキシブル基板７４Ａのサイズ又は厚み、フレキシブル基板自体の剛性の変更、挿入口７５Ａのサイズ変更が発生する。あらかじめ生成されている「作業ＩＤ」が「４」の作業は仕様変更前に生成されているため、そのまま動作させると、フレキシブル基板７４Ａ又は挿入口７５Ａの変更により、例えば、「作業ＩＤ」が「４」の作業の動作から挿入時の力加減が足りず、挿入口７５Ａに十分に差し込むことができないということが起こる。
【０４０５】
そこで、人４Ａは、環境変化通知操作の開始の指令をデータ入力ＩＦ２６を介して動作指令部２７に入力する。動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介しての環境変化通知操作の指令を受けて、動作情報データベース１７のフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。
【０４０６】
具体的には、図３５Ｂに示すように、フレキシブル基板７４Ａの挿入時は「動作ＩＤ」が「２３」の動作で動作している。動作中の「動作ＩＤ」が「２３」の動作を動作情報データベース１８からデータベース入出力部２８を介して動作補正部２０で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図３２Ａでは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関しては、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が、力に関してはｚ軸が有効ということを表す。従って、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸について、位置制御モードからインピーダンス制御モード（人４Ａの力を検知した方向に移動させるモード）で動作し、ｚ軸については、高剛性位置制御モードにより動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０４０７】
次に、図３５Ｃのように、機器７１上の仕様変更箇所に伴う力の状態変更を知らせるために、人４Ａがｚ軸方向に力を加える。人４Ａが環境変化通知操作により力を加えた動作を動作補正部２０で取得するために、制御パラメータ管理部２１からのロボットアーム５の力を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。
【０４０８】
次に、動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介しての動作補正操作の開始の指令を受けて、動作情報データベース１７の補正パラメータフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ動作補正部２０から指令を出す。具体的には、図１０Ａの「作業ＩＤ」が「４」の作業で動作中の「動作ＩＤ」が「２３」の動作を動作情報データベース１８から動作補正部２０で参照すると、それぞれの「キー動作ＩＤ」の補正パラメータフラグが、図２２Ａでは、８ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作の力のうち、ｚ軸成分のみ補正が可能ということが動作補正部２０でわかる。ｚ軸について、高剛性位置制御モードで動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０４０９】
次に、図３５Ｄに示すように、人４Ａがロボットアーム５を直接把持して、仕様変更箇所の突出部材７１ｂについて、もう少し力を強めに挿入するように動作させる。人４Ａが加えた力を取得するために、制御パラメータ管理部２１からのロボットアーム５の手先の力を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。
なお、ここで、環境変化通知操作と動作補正操作とを分けて別々に入力したが、環境変化通知操作と動作補正操作との操作の方向が同じである場合は、動作補正操作又は環境変化通知操作のいずれか一方の操作を省略することができる。具体的には、データ入力ＩＦ２６から動作補正操作の開始の指令を省略して、環境変化通知操作の開始の指令を出した場合には、動作補正操作を省略することができる（第５実施形態を参照）。その場合の動作補正部２０は、人４が動作補正操作をした際に、環境情報を取得した後、動作補正を行う。
【０４１０】
−制御ルール生成部−
制御ルール生成部２３は、第３実施形態の場合と同様に、制御ルールデータベース１６の「動作ＩＤ」が参照する動作情報データベース１７の位置及び姿勢及び力及び時間との情報にて、後述するインピーダンス制御モード、若しくは位置制御モード、若しくは力制御モード、若しくはそれらを方向別に組み合わせた制御モード、のうち、いずれかのモードでのロボットアーム５の動作中に、データ入力ＩＦ２６から動作指令部２７を介して、制御ルール生成部２３で環境変化通知操作及び動作補正開始の指令を受ける。すると、制御ルール生成部２３では、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報とに基づいて、制御ルールを生成し、制御ルールデータベース１６に記憶する機能を有している。
【０４１１】
以下、制御ルール生成部２３の機能について説明する。
図３５Ｂに示すように、フレキシブル基板挿入時は「動作ＩＤ」が「２３」の動作で動作している。
【０４１２】
制御ルール生成部２３は、データ入力ＩＦ２６から動作指令部２７を介して動作中の作業ＩＤに対して、環境変化通知操作の開始の指令を受けて、人４Ａからの環境変化通知操作にて生成したロボットアーム５の手先位置及び時間を動作補正部２０より入力する。加えて、環境変化通知操作の開始のタイミングより、環境情報取得部１９より環境情報を入力する。さらに、環境変化通知操作の開始時の動作中の「動作ＩＤ」を動作情報データベース１８から制御ルール生成部２３で参照し、その「動作ＩＤ」の「キー動作ＩＤ」のフラグに関する情報から現在のロボットアーム５の制御モードに関する情報を制御ルール生成部２３で取得する。具体的には、図１０Ａの「作業ＩＤ」が「４」の作業で動作中の「動作ＩＤ」が「２３」の動作の「キー動作ＩＤ」が「７８」〜「８６」のキー動作を動作情報データベース１８から制御ルール生成部２３で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図３２Ａでは、０、１、３〜５、８、１２、１３、１５〜１７目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関してはｘ軸、ｙ軸、φ軸、θ軸、ψ軸、力に関してはｚ軸成分のデータが有効ということが制御ルール生成部２３でわかる。従って、ｘ軸、ｙ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、インピーダンス制御モードとなり、ｚ軸については高剛性位置制御モードとなる。
【０４１３】
現在動作中の環境変化通知操作の際のロボットアーム５の移動方向の制御モードと検出部選択ルールデータベース２９に基づいて、複数の環境情報の中から制御ルールを生成するための環境情報の種別を制御ルール生成部２３で選択する。具体的には、図１０Ａの「作業ＩＤ」が「４」の作業の環境変化通知操作の開始のタイミングでは、図３５Ｃのようにｚ軸方向で環境変化通知操作を行っている。ｚ軸は高剛性位置制御モードで補正しているので、図１１Ａより、環境情報の種別ＩＤは「２」となり、図１１Ｂより、「力」を制御ルール生成部２３で選択する。したがって、力検出部５３で検出した力を制御ルール生成部２３で選択する。取得した力は、制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。この例では、図９Ａに示すように、新しい「環境ＩＤ」として「３２」を制御ルール生成部２３で付与し、その「環境ＩＤ」の「力」に、取得した力の情報を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。さらに、フラグは力のみであるので、０〜５ビット目のみ「１」を、その他のビットに「０」を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。
【０４１４】
次に、動作補正操作の開始の指令を受けて、動作補正部２０で補正した動作情報を、データベース入出力部２８を介して動作情報データベース１７に記憶する。
【０４１５】
具体的には、図３２Ｂの動作情報データベース１７に新規に「動作ＩＤ」を動作補正部２０で付与し（この例では「２４」）、さらに「キー動作ＩＤ」として「９０」〜「９８」を動作補正部２０で付与し、動作補正部２０で補正した動作情報を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７のそれぞれの「キー動作ＩＤ」に記憶する。時間について、動作補正部２０からは、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間が入力されるため、一番最初のキー動作（この例では「９０」）の時間を全ての動作のそれぞれの時間から減算した値を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。フラグについては、補正前のフラグで「１」となっている動作情報の成分のうち、補正前と補正後の「動作ＩＤ」のそれぞれのキー動作の位置姿勢と、力の値とをそれぞれの成分毎に動作補正部２０で比較し、その差がある閾値以上の成分のみ、図６のフラグのそれぞれの成分を動作補正部２０で「１」とし、閾値未満の場合には動作補正部２０で「０」とする。
【０４１６】
具体的には、補正前の「動作ＩＤ」が「２３」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」であり、その他は「０」であるので、補正前の動作と補正後の動作の位置姿勢と、力の値とのうち、位置姿勢の成分ｘ，ｙ，φ，θ，ψと力のｚ軸成分を動作補正部２０で比較する。「キー動作ＩＤ」が「７７」のキー動作と「キー動作ＩＤ」が「８６」のキー動作とでは、位置姿勢（ｘ，ｙ，φ，θ，ψ）の成分は同じで、力のｚ軸成分のみ異なり、差の閾値を０．１（N）とすると、力のｚ成分のみが閾値以上となる。従って、動作補正部２０により、フラグは８ビット目が「１」で、その他は「０」とする。
【０４１７】
補正パラメータフラグについては、補正前の動作（この例では「７８」〜「８６」）の値を動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。
【０４１８】
次に、取得した環境情報と動作補正部２０の動作補正操作で補正した動作から制御ルールデータベース１９に新しい制御ルールを制御ルール生成部２３で生成して記憶する。
具体的には、制御ルールデータベース１６の「作業ＩＤ」が「４」の作業で動作中に動作を補正するため、制御ルール生成部２３により、図１０Ｂに示すように、「作業ＩＤ」が「４」の作業に１行追加し、動作補正により新しく追加した「動作ＩＤ」が「２４」の動作を追加する。
【０４１９】
次に、制御ルール生成部２３で選択した環境情報の環境ＩＤをデータベース入出力部２８を介して制御ルールデータベース１６に記憶する（この例では「環境ＩＤ」が「３２」の環境情報）。
動作指令部（動作算出部２）２７により、具体的には上記した補正により、図３５Ｅのように仕様変更後に自動でロボットアーム５の動作を行うことができる。その仕様変更後の自動的に行う動作については、第３実施形態又は先の実施形態と同様であるので、説明を省略する。
【０４２０】
以上により、人４Ａが環境変化通知操作及び動作補正操作を行い、制御ルール生成部２３により新しい制御ルールを生成することで、機器７１の仕様変更を考慮した動作を事前に用意しておかなくても、その場で人４Ａが操作をして環境通知及び動作を補正するだけで、次に同じような環境になった場合に、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５は自律的に動作することができるようになる。
【０４２１】
（第５実施形態）
本発明の第５実施形態における、ロボットアーム５とその制御装置の基本的な構成は、第１実施形態又は第４実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。なお、この第５実施形態は、環境変化通知操作と動作補正操作が同じ場合には、2つの操作を行う代わりに、動作補正操作を省略して、１つの操作（ここでは、環境変化及び動作通知操作と呼ぶ。）のみ行うことができる例について説明している。
第５実施形態においては、第４実施形態と同様、図３１に示すように、ロボットアーム５とロボットアーム５の制御装置を備えるロボット１を使って、セル生産の工場でテレビ又はＤＶＤレコーダなどの機器７１の挿入口７５に作業対象物の一例であるフレキシブル基板７４を取り付ける場合を例にとって説明する。
図３１に示したように、ロボット１のロボットアーム５は、例えば工場内の作業台テーブルなどの作業台７の壁面７ａに設置され、ロボットアーム５の基端が、壁面７ａに固定されたレール８に、移動可能に支持され、レール８上をロボットアーム５がレール８沿いの横方向例えば水平方向に、人４Ａの力により、移動可能とする。１５ａはカメラなどの第１画像撮像装置であり、例えば天井７ｂから作業台７を撮像できるように取り付けられている。
ロボット１は、例えば、工場内で、テレビ又はＤＶＤレコーダのフレキシブル基板７４の取り付け作業などのロボットアーム５と人４Ａとが協働して行う作業をロボットアーム５により行う。
第４実施形態と同様に、まず、人４Ａが手４でロボット１のロボットアーム５を直接把持してロボットアーム５に力を加える。そして、人４Ａからロボットアーム５に加えられた力により、ロボット１のロボットアーム５をレール８に沿って移動させることで、器具７１（この例では、フレキシブル基板７４を挿入するテレビ又はＤＶＤレコーダの機器を示す）の付近までロボットアーム５を誘導する。
次に、セル生産の作業台７などの前側側面７ｅなどに配置されている、データ入力ＩＦ２６の一例としてのロボット１の操作盤１３のボタン１３ａを、人４Ａが押すなどしてデータ入力ＩＦ２６を使用することにより、ロボットアーム５が作動し、予め選択された作業、すなわち、器具７１の挿入口７５に、ハンド３０でコネクタ部分７４ａを把持したフレキシブル基板７４を挿入して取り付ける作業を開始させる。
次に、機器７１の仕様変更により、機器７１の形状又はフレキシブル基板７４の仕様が変更になった場合に、ロボットアーム５が、フレキシブル基板７４の取り付け作業を行っているときに、人４Ａがフレキシブル基板７４の取り付け状態を確認し、人４Ａがロボットアーム５に力を加えて、取り付ける力具合、又は、フレキシブル基板７４の位置の調整などの動作補正を行うことにより、ロボット１のロボットアーム５の動作を補正する。
レール８は、作業台７の壁面７ａに配置したが、壁面の無い作業台の場合は、天井面又は作業台の天板６ａの側面など作業をするのに適した場所に設置することができる。
さらに、操作盤１３は、作業台７の側面に固定したが、操作盤１３に代えて、遠隔操作が可能なリモコンでも良い。
−動作情報データベース−
動作情報データベース１７は、第４実施形態と同様に、ロボットアーム５の、ある時間におけるロボットアーム５の手先位置及び姿勢などのロボットアーム５の動作に関する情報（動作情報）を記憶している。動作情報は、制御ルール生成部２３を介してデータベース入出力部２８により動作情報データベース１７に入出力される。
図３２Ａ、図３２Ｂは、第４実施形態と同様に、本第５実施形態の動作情報データベース１７を示す。動作情報は第１実施形態と同様であるので、説明を省略する。
−動作指令部（動作算出部）−
以下、動作指令部２７の機能について説明する。
人４Ａは、データ入力ＩＦ２６により、制御ルールデータベース１６の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業をデータベース入出力部２８を介して選択して、動作指令部２７により、その選択した「作業ＩＤ」にかかる動作を実行するように制御パラメータ管理部２１へ指令する。
動作指令部２７がデータベース入出力部２８を介して制御ルールデータベース１６を参照するとき、１つの「作業ＩＤ」の作業が選択された場合で、かつ、動作指令部２７は、前記１つの「作業ＩＤ」の作業の中に複数の「動作ＩＤ」が記憶されていると判断した場合は、動作算出部２により動作情報を算出し、算出した動作情報（具体的には、位置、姿勢、時間、力）をフラグに従って、制御モードを設定して動作するように、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。
具体的には、図１０Ａの「作業ＩＤ」が「４」の作業は、図３３Ａ（図３１を上方から見た図）に示すように、ロボットアーム５が移動しながら挿入口７５をロボット１で検出すると、ロボットアーム５の手先位置のハンド３０でコネクタ部分７４ａが把持されたフレキシブル基板７４のコネクタ部分７４ａを挿入口７５に挿入する動作を行う制御ルールでの作業を示す。「作業ＩＤ」が「４」の作業には複数の「動作ＩＤ」（「２１」、「２２」、「２３」の動作）が記憶されている。
動作算出部２では、複数の動作から１つの動作情報を算出する。具体的には、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作との中から１つの動作情報を動作算出部２で算出する。「動作ＩＤ」が「２１」の動作は、ロボットアーム５の手先位置のハンド３０（正確には、ハンド３０で把持したフレキシブル基板７４）が、図３３Ａに示すように、機器７１の挿入口７５の近傍の上方部分を移動する動作を表す。「動作ＩＤ」が「２１」の動作の「環境ＩＤ」は「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず、ロボットアーム５が動作するので、実行すべき動作として動作指令部２７で選択する。「動作ＩＤ」が「２２」の動作は、下記するように、挿入口７５であると動作指令部２７で判断した場合に、挿入口７５の入り口にフレキシブル基板７４のコネクタ部７４ａが接触するまで、フレキシブル基板７４を移動させる動作を表す。「動作ＩＤ」が「２２」の動作の「環境ＩＤ」は「３０」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「３０」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。図９Ａの「環境ＩＤ」が「３０」の環境情報のフラグは、６ビット目のみ「１」であり、それ以外は「０」であるので、画像が有効であると、動作指令部２７で判断することができる。そこで、画像ＩＤより、環境情報データベース１８に記憶されている画像の情報を動作指令部２７で取得する。この画像は、図３４の挿入口７５の画像の情報を示す。次に、環境情報取得部１９より、現在の画像情報を動作指令部２７で取得して、画像マッチングにより、２つの画像を動作指令部２７で比較し、挿入口７５かどうかを動作指令部２７で判断する。２つの画像が合致したと動作指令部２７で判断した場合には、挿入口だと動作指令部２７で判断し、「動作ＩＤ」が「２２」で記憶されている動作を実行すべき動作として動作指令部２７で選択する。合致しなかったと動作指令部２７で判断した場合には、「動作ＩＤ」が「２２」の動作は動作指令部２７で選択せず、「２１」の動作のみを動作指令部２７で選択する。
「動作ＩＤ」が「２３」の動作は、フレキシブル基板７４のコネクタ部７４ａを挿入口７５に挿入するために、フレキシブル基板７４を移動させる動作を表す。「動作ＩＤ」が「２３」の動作の「環境ＩＤ」は「３１」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「３１」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。図９Ａの「環境ＩＤ」が「３１」の環境情報のフラグは、０〜５ビット目のみ「１」であり、それ以外は「０」であるので、力が有効であると、動作指令部２７で判断することができる。環境情報取得部１９より、現在の力検出部の値を動作指令部２７で取得して、環境情報データベース１８で記憶されている力と動作指令部２７で比較する。この２つの力が合致したと動作指令部２７で判断した場合には、フレキシブル基板７４が挿入口７５から受ける力が、環境情報データベース１８で記憶されている力が合致したと動作指令部２７で判断し、「動作ＩＤ」が「２３」の動作で記憶されている動作を実行すべき動作として動作指令部２７で選択する。合致しなかったと動作指令部２７で判断した場合には、「動作ＩＤ」が「２３」の動作は動作指令部２７で選択せず、「２１」の動作又は「２２」の動作のどちらかを動作指令部２７で選択する。
選択された「動作ＩＤ」が１つのみの場合には、第１実施形態と同様に、「動作ＩＤ」と同じ「動作ＩＤ」の動作をデータベース入出力部２８を介して動作情報データベース１７から動作指令部２７で参照する。「動作ＩＤ」と同じＩＤの動作情報は複数の「キー動作ＩＤ」で管理する動作情報（具体的には、位置の情報と、姿勢の情報と、時間の情報と、力の情報）を動作情報のフラグに従って、制御モードを設定して動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出して、それぞれのキー動作を順次実行するように、動作指令部２７から制御パラメータ管理部２１へ動作情報を出力する。この例では、ロボットアーム５の周辺の環境が、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報に合致しないと動作指令部２７で判断した場合には、挿入口７５が検出できなかったと動作指令部２７で判断し、「動作ＩＤ」が「２１」の動作で示した動作を実行するように動作指令部２７から制御パラメータ管理部２１へ指令を出す。
すなわち、図３２Ａの動作情報データベース１７より、「フラグ」が０〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、ｚ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、ｚ、φ、θ、ψについては位置制御モードで動作させる。
以上により、図３３Ａ（図３１を上方から見た図）に示すように、ロボットアーム５は機器７１上を移動する動作を開始する。
「動作ＩＤ」が「２１」の動作でロボットアーム５が機器７１上を移動中に、挿入口７５の上方の部分にロボットアーム５が到達したと動作指令部２７で判断した場合には、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報の画像と環境情報取得部１９で取得した現在の画像情報の画像とが合致すると動作指令部２７で判断されるため、「動作ＩＤ」が「２１」の動作と「２２」の動作との２つの動作が動作指令部２７で選択される。動作指令部２７の動作算出部２では、それぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７で参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を算出する。
この例では、「動作ＩＤ」が「２１」の動作と「２２」の動作とが動作指令部２７で選択されており、図１０Ａの制御ルールデータベース１６の「動作ＩＤ」には「２１」の動作、「２２」の動作の順に記憶されている。従って、「動作ＩＤ」が「２１」の動作の動作情報のフラグが、図３２Ａより０〜５ビット目及びビット目が「１」であるので、「動作ＩＤ」が「２１」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，ｚ，φ，θ，ψ）の動作情報を取得する。
次に、「動作ＩＤ」が「２２」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。フラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、その際に、「動作ＩＤ」が「２２」の動作のそれぞれのキー動作のフラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「２１」の動作の動作情報を現在実行中のロボットアーム５の手先位置情報をコピーして動作指令部２７で置き換える。この例では、挿入口７５の上方にロボットアーム５が配置されているので、その位置及び姿勢情報を「動作ＩＤ」が「２１」の動作に動作指令部２７でコピーする。他のキー動作の位置についても同様に動作指令部２７で置き換える。
次に、「動作ＩＤ」が「２１」の動作の動作情報のうち、（ｘ，ｙ，φ，θ，ψ）の値を「動作ＩＤ」が「２２」の動作のそれぞれの動作情報に動作指令部２７で置き換えて動作算出部２で算出する。
以降、「キー動作ＩＤ」の終わりまで順次動作算出部２で算出する。
動作算出部２で算出した動作情報のフラグ及び動作情報フラグについて、動作算出部２により、「動作ＩＤ」が「２１」の動作と「２２」の動作とのそれぞれのビットにおいて、どちらかのビットに「１」の場合には、算出後のフラグのビットを「１」に、両方とも「０」の場合には、「０」とする。ただし、位置と力のそれぞれの成分はどちらかにしか「１」とならないため（位置制御モード若しくは力制御モードのどちらかでしか作動しないため）、位置と力の両方に「１」となった場合には、力を優先する。
「動作ＩＤ」が「２１」の動作のフラグは、０〜５ビット目が「１」であり、「２２」は０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」であるので、０〜５、８、１２、１３、１５〜１７ビット目が「１」となる。位置ｚ成分と力ｚ分の両方が「１」となっているので、力を優先するため、最終的には、０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」となる。
「動作ＩＤ」が「２１」の動作の動作パラメータフラグは、１，２，３ビット目が「１」であり、「動作ＩＤ」が「２２」の動作の動作パラメータフラグは、８ビット目が「１」である。従って、動作算出部２で算出した動作の動作パラメータフラグは、１，２，３，８ビット目が「１」となる。
動作算出部２で算出した動作の「フラグ」が０、１、３〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、φ、θ、ψについては位置制御モードで動作させる。さらに、８ビット目が「１」であるので、ｚ軸は力制御モードで動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出す。
以上により、図３３Ｂに示すように、ロボットアーム５は挿入口７５にフレキシブル基板７４のコネクタ部２４ａを接触するまで移動させる動作を開始する。
「動作ＩＤ」が「２２」の動作にてフレキシブル基板７４のコネクタ部２４ａを挿入口７５に接触するまで移動させる動作が完了した時点で、次に動作させる動作を動作指令部２７で選択する。「動作ＩＤ」が「２３」の動作の「環境ＩＤ」が「３１」の環境情報の力と環境情報取得部１９で取得した力が合致したと動作指令部２７で判断した場合には、「動作ＩＤ」が「２１」の動作と「２３」の動作との２つの動作が動作指令部２７で選択される。さらに、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報の力と環境情報取得部１９で取得した画像が合致すると動作指令部２７で判断した場合には、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作との３つの動作が動作指令部２７で選択される。
動作算出部２では、それぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７で参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を算出する。
この例では、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作とが選択されており、図１０Ａの制御ルールデータベース１６の「動作ＩＤ」には「２１」の動作、「２２」の動作、「２３」の動作の順に記憶されている。この場合は、最も番号の大きい「動作ＩＤ」を優先して動作指令部２７で選択する。「動作ＩＤ」が「２２」の動作の動作情報のフラグが、図３２Ａより０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「２２」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，φ，θ，ψ）とｚ成分の力情報の動作情報を取得する。次に、「動作ＩＤ」が「２３」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。フラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、その際に、「動作ＩＤ」が「２２」の動作のそれぞれのキー動作のフラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「１１」の動作の動作情報を現在実行中のロボットアーム５の手先位置情報をコピーして動作指令部２７で置き換える。この例では、挿入口の上方にロボットアーム５が配置されているので、その位置及び姿勢情報を「動作ＩＤ」が「２１」の動作に動作指令部２７でコピーする。他のキー動作の位置についても、同様に動作指令部２７で置き換える。次に、「動作ＩＤ」が「２２」の動作の動作情報のうち、（ｘ，ｙ，φ，θ，ψ）成分の値を「動作ＩＤ」が「２３」の動作のそれぞれの動作情報に置き換えて動作算出部２で算出する。
以降、「キー動作ＩＤ」の終わりまで順次動作算出部２で算出する。
−動作補正部−
以下、動作補正部２０の機能について説明する。
人４Ａがデータ入力ＩＦ２６により、「作業ＩＤ」が「４」の作業を指定して動作指令部２７に作業開始を指示すると、図３５Ａに示すように、ロボットアーム５はフレキシブル基板７４のコネクタ部７４ａを挿入口７４に挿入する作業を開始する。
次に、ＴＶ又はＤＶＤレコーダなどの機器７１の仕様変更に伴い、図３５Ｂに示すように、フレキシブル基板７４Ａのサイズ又は厚み、フレキシブル基板自体の剛性の変更、挿入口７５Ａのサイズ変更が発生する。あらかじめ生成されている「作業ＩＤ」が「４」の作業は仕様変更前に生成されているため、そのまま動作させると、フレキシブル基板７４Ａ又は挿入口７５Ａの変更により、例えば、「作業ＩＤ」が「４」の作業の動作から挿入時の力加減が足りず、挿入口７５Ａに十分に差し込むことができないということが起こる。
第４実施形態と同様の補正を行う場合に、図３５Ｃに示す環境変化通知操作と図３５Ｄに示す動作補正操作とが同じ場合の実施形態について説明する。
人４Ａは、環境変化通知操作と動作補正操作とを１つの操作で操作するために、１つの環境変化及び動作通知操作の開始の指令をデータ入力ＩＦ２６を介して動作指令部２７に入力する。環境変化及び動作通知操作は、第４実施形態の環境変化通知操作と動作補正操作とを１つの操作で入力可能にした操作である（例えば、操作方向が同じ場合には、環境変化通知操作での操作方向と動作補正操作での操作方向との２つの操作方向を入力する代わりに、環境変化及び動作通知操作として、同じ１つの操作方向を入力することを意味する。）。動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介しての環境変化及び動作通知操作の指令を受けて、動作情報データベース１７のフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。
具体的には、図３５Ｂに示すように、フレキシブル基板７４Ａの挿入時は「動作ＩＤ」が「２３」の動作で動作している。動作中の「動作ＩＤ」が「２３」の動作を動作情報データベース１８からデータベース入出力部２８を介して動作補正部２０で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図３２Ａでは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関しては、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が、力に関してはｚ軸が有効ということを表す。従って、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸について、位置制御モードからインピーダンス制御モード（人４Ａの力を検知した方向に移動させるモード）で動作し、ｚ軸については、高剛性位置制御モードにより動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
次に、図３５Ｃのように、機器７１上の仕様変更箇所に伴う力の状態変更及び補正すべき動作の両方を知らせるために、人４Ａがｚ軸方向に力を加える。人４Ａが環境変化及び動作通知操作により力を加えた動作を動作補正部２０で取得するために、制御パラメータ管理部２１からのロボットアーム５の力を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。
次に、動作補正部２０は、環境変化及び動作通知操作により、もう少し力を強めに挿入するように動作させる。人４Ａが加えた力を取得するために、制御パラメータ管理部２１からのロボットアーム５の手先の力を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。
−制御ルール生成部−
制御ルール生成部２３は、制御ルールデータベース１６の「動作ＩＤ」が参照する動作情報データベース１７の位置及び姿勢及び力及び時間との情報にて、後述するインピーダンス制御モード、若しくは位置制御モード、若しくは力制御モード、若しくはそれらを方向別に組み合わせた制御モード、のうち、いずれかのモードでのロボットアーム５の動作中に、データ入力ＩＦ２６から動作指令部２７を介して、制御ルール生成部２３で環境変化及び動作補正開始の指令を受ける。すると、制御ルール生成部２３では、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報とに基づいて、制御ルールを生成し、制御ルールデータベース１６に記憶する機能を有している。
以下、制御ルール生成部２３の機能について説明する。
図３５Ｂに示すように、フレキシブル基板挿入時は「動作ＩＤ」が「２３」の動作で動作している。
制御ルール生成部２３は、データ入力ＩＦ２６から動作指令部２７を介して動作中の作業ＩＤに対して、環境変化及び動作通知操作の開始の指令を受けて、人４Ａからの環境変化及び動作通知操作にて生成したロボットアーム５の手先位置及び時間を動作補正部２０より入力する。加えて、環境変化及び動作通知操作の開始のタイミングより、環境情報取得部１９より環境情報を入力する。さらに、環境変化及び動作通知操作の開始時の動作中の「動作ＩＤ」を動作情報データベース１８から制御ルール生成部２３で参照し、その「動作ＩＤ」の「キー動作ＩＤ」のフラグに関する情報から現在のロボットアーム５の制御モードに関する情報を制御ルール生成部２３で取得する。具体的には、図１０Ａの「作業ＩＤ」が「４」の作業で動作中の「動作ＩＤ」が「２３」の動作の「キー動作ＩＤ」が「７８」〜「８６」のキー動作を動作情報データベース１８から制御ルール生成部２３で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図３２Ａでは、０、１、３〜５、８、１２、１３、１５〜１７目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関してはｘ軸、ｙ軸、φ軸、θ軸、ψ軸、力に関してはｚ軸成分のデータが有効ということが制御ルール生成部２３でわかる。従って、ｘ軸、ｙ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、インピーダンス制御モードとなり、ｚ軸については高剛性位置制御モードとなる。
現在動作中の環境変化及び動作通知操作の際のロボットアーム５の移動方向の制御モードと検出部選択ルールデータベース２９に基づいて、複数の環境情報の中から制御ルールを生成するための環境情報の種別を制御ルール生成部２３で選択して決定する。具体的には、図１０Ａの「作業ＩＤ」が「４」の作業の環境変化及び動作通知操作の開始のタイミングでは、図３５Ｃのようにｚ軸方向で環境変化及び動作通知操作を行っている。ｚ軸は高剛性位置制御モードで補正しているので、図１１Ａより、環境情報の種別ＩＤは「２」となり、図１１Ｂより、「力」を制御ルール生成部２３で選択する。したがって、力検出部５３で検出した力を制御ルール生成部２３で選択する。取得した力は、制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８及び動作情報データベース１７に記憶する。この例では、図９Ａに示すように、新しい「環境ＩＤ」として「３２」を制御ルール生成部２３で付与し、その「環境ＩＤ」の「力」に、取得した力の情報を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。さらに、フラグは力のみであるので、０〜５ビット目のみ「１」を、その他のビットに「０」を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。
また、図３２Ｂの動作情報データベース１７に新規に「動作ＩＤ」を動作補正部２０で付与し（この例では「２４」）、さらに「キー動作ＩＤ」として「９０」〜「９８」を動作補正部２０で付与し、動作補正部２０で補正した動作情報を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７のそれぞれの「キー動作ＩＤ」に記憶する。時間について、動作補正部２０からは、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間が入力されるため、一番最初のキー動作（この例では「９０」）の時間を全ての動作のそれぞれの時間から減算した値を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。フラグについては、補正前のフラグで「１」となっている動作情報の成分のうち、補正前と補正後の「動作ＩＤ」のそれぞれのキー動作の位置姿勢と、力の値とをそれぞれの成分毎に動作補正部２０で比較し、その差がある閾値以上の成分のみ、図６のフラグのそれぞれの成分を動作補正部２０で「１」とし、閾値未満の場合には動作補正部２０で「０」とする。
具体的には、補正前の「動作ＩＤ」が「２３」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」であり、その他は「０」であるので、補正前の動作と補正後の動作の位置姿勢と、力の値とのうち、位置姿勢の成分ｘ，ｙ，φ，θ，ψと力のｚ軸成分を動作補正部２０で比較する。「キー動作ＩＤ」が「７７」のキー動作と「キー動作ＩＤ」が「８６」のキー動作とでは、位置姿勢（ｘ，ｙ，φ，θ，ψ）の成分は同じで、力のｚ軸成分のみ異なり、差の閾値を０．１（N）とすると、力のｚ成分のみが閾値以上となる。従って、動作補正部２０により、フラグは８ビット目が「１」で、その他は「０」とする。
補正パラメータフラグについては、補正前の動作（この例では「７８」〜「８６」）の値を動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。
次に、取得した環境情報と動作補正部２０の動作補正操作で補正した動作から制御ルールデータベース１９に新しい制御ルールを制御ルール生成部２３で生成して記憶する。
具体的には、制御ルールデータベース１６の「作業ＩＤ」が「４」の作業で動作中に動作を補正するため、制御ルール生成部２３により、図１０Ｂに示すように、「作業ＩＤ」が「４」の作業に１行追加し、動作補正により新しく追加した「動作ＩＤ」が「２４」の動作を追加する。
次に、制御ルール生成部２３で選択した環境情報の環境ＩＤをデータベース入出力部２８を介して制御ルールデータベース１６に記憶する（この例では「環境ＩＤ」が「３２」の環境情報）。
動作指令部（動作算出部２）２７により、具体的には上記した補正により、図３５Ｅのように仕様変更後に自動でロボットアーム５の動作を行うことができる。その仕様変更後の自動的に行う動作については、第３実施形態又は先の実施形態と同様であるので、説明を省略する。
以上により、人４Ａが環境変化通知操作と動作補正操作が同じ場合は、１つの環境変化及び動作補正のみの操作により、操作の負荷を削減でき、さらに、制御ルール生成部２３により新しい制御ルールを生成することで、機器７１の仕様変更を考慮した動作を事前に用意しておかなくても、その場で人４Ａが操作をして環境通知及び動作を補正するだけで、次に同じような環境になった場合に、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５は自律的に動作することができるようになる。
（変形例）
なお、上記第１〜第５実施形態では、作業を行うロボットアーム５を直接把持して操作をしたが、マスタースレーブ方式のように、実際に作業を行うロボットアーム５ではなく、容易に動かすことが可能な別の操作機器（マスター）を人４Ａが操作することで、それに接続された実際のロボットアーム（スレーブ）を動かし、動作を補正する方法についても適応可能である。
【０４２２】
さらに、上記第１〜第５実施形態では、ロボットアーム５を例に説明したが、本発明は、アームに限らず、車輪により動く移動ロボット、又は、２足歩行ロボット、又は、多足歩行ロボットなどにも適用することができ、移動ロボットなどと人間との接触に関して同様の効果を発揮する。
上記様々な実施形態のうちの任意の実施形態を適宜組み合わせることにより、それぞれの有する効果を奏するようにすることができる。
【産業上の利用可能性】
【０４２３】
本発明は、家庭用ロボットなど、人とロボットが協調して作業を行う際のロボットアームの動作の制御を行うロボットアームの制御装置及び制御方法、ロボット、ロボットアームの制御プログラム、及び、ロボットアーム制御用集積電子回路として有用である。また、家庭用ロボットに限らず、産業用ロボット、又は、生産設備等における可動機構のロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、及び、ロボットアーム制御用集積電子回路としても適用が可能である。【０４２４】
本発明は、添付図面を参照しながら好ましい実施形態に関連して充分に記載されているが、この技術の熟練した人々にとっては種々の変形又は修正は明白である。そのような変形又は修正は、添付した請求の範囲による本発明の範囲から外れない限りにおいて、その中に含まれると理解されるべきである。
【図１Ａ】
2011036865.tif 000015
【図１Ｂ】
2011036865.tif 000016
【図１Ｃ】
2011036865.tif 000017
【図２】
2011036865.tif 000018
【図３Ａ】
2011036865.tif 000019
【図３Ｂ】
2011036865.tif 000020
【図３Ｃ】
2011036865.tif 000021
【図４】
2011036865.tif 000022
【図５Ａ】
2011036865.tif 000023
【図５Ｂ】
2011036865.tif 000024
【図５Ｃ】
2011036865.tif 000025
【図６】
2011036865.tif 000026
【図７】
2011036865.tif 000027
【図８】
2011036865.tif 000028
【図９Ａ】
2011036865.tif 000029
【図９Ｂ】
2011036865.tif 000030
【図１０Ａ】
2011036865.tif 000031
【図１０Ｂ】
2011036865.tif 000032
【図１１Ａ】
2011036865.tif 000033
【図１１Ｂ】
2011036865.tif 000034
【図１２】
2011036865.tif 000035
【図１３Ａ】
2011036865.tif 000036
【図１３Ｂ】
2011036865.tif 000037
【図１３Ｃ】
2011036865.tif 000038
【図１３Ｄ】
2011036865.tif 000039
【図１３Ｅ】
2011036865.tif 000040
【図１４】
2011036865.tif 000041
【図１５】
2011036865.tif 000042
【図１６】
2011036865.tif 000043
【図１７Ａ】
2011036865.tif 000044
【図１７Ｂ】
2011036865.tif 000045
【図１８Ａ】
2011036865.tif 000046
【図１８Ｂ】
2011036865.tif 000047
【図１９Ａ】
2011036865.tif 000048
【図１９Ｂ】
2011036865.tif 000049
【図１９Ｃ】
2011036865.tif 000050
【図１９Ｄ】
2011036865.tif 000051
【図１９Ｅ】
2011036865.tif 000052
【図２０】
2011036865.tif 000053
【図２１】
2011036865.tif 000054
【図２２Ａ】
2011036865.tif 000055
【図２２Ｂ】
2011036865.tif 000056
【図２３】
2011036865.tif 000057
【図２４Ａ】
2011036865.tif 000058
【図２４Ｂ】
2011036865.tif 000059
【図２５】
2011036865.tif 000060
【図２６Ａ】
2011036865.tif 000061
【図２６Ｂ】
2011036865.tif 000062
【図２６Ｃ】
2011036865.tif 000063
【図２６Ｄ】
2011036865.tif 000064
【図２７】
2011036865.tif 000065
【図２８Ａ】
2011036865.tif 000066
【図２８Ｂ】
2011036865.tif 000067
【図２８Ｃ】
2011036865.tif 000068
【図２９】
2011036865.tif 000069
【図３０Ａ】
2011036865.tif 000070
【図３０Ｂ】
2011036865.tif 000071
【図３１】
2011036865.tif 000072
【図３２Ａ】
2011036865.tif 000073
【図３２Ｂ】
2011036865.tif 000074
【図３３Ａ】
2011036865.tif 000075
【図３３Ｂ】
2011036865.tif 000076
【図３３Ｃ】
2011036865.tif 000077
【図３４】
2011036865.tif 000078
【図３５Ａ】
2011036865.tif 000079
【図３５Ｂ】
2011036865.tif 000080
【図３５Ｃ】
2011036865.tif 000081
【図３５Ｄ】
2011036865.tif 000082
【図３５Ｅ】
2011036865.tif 000083
【図３６Ａ】
2011036865.tif 000084
【図３６Ｂ】
2011036865.tif 000085
【図３６Ｃ】
2011036865.tif 000086
【図３６Ｄ】
2011036865.tif 000087
【図３６Ｅ】
2011036865.tif 000088
【図３６Ｆ】
2011036865.tif 000089
【図３６Ｇ】
2011036865.tif 000090
【図３７Ａ】
2011036865.tif 000091
【図３７Ｂ】
2011036865.tif 000092
【図３７Ｃ】
2011036865.tif 000093
【図３７Ｄ】
2011036865.tif 000094
【手続補正書】
【提出日】平成22年12月2日(2010.12.2)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットアームの動作を生成及び教示するためのロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、及び、ロボットアーム制御用集積電子回路に関する。
【背景技術】
【０００２】
近年、介護ロボット又は家事支援ロボットなどの家庭用ロボットが盛んに開発されるようになってきた。家庭ロボットは産業用ロボットと異なり、家庭の素人が操作するため、動作を簡単に教示できる必要がある。さらに、ロボットが作業する際の動作環境も、家庭に応じて様々であるため、多種多様な家庭環境に柔軟に対応する必要がある。
【０００３】
ロボット装置の教示方法の一例として、ロボットの手首などに力センサを装着し、力センサの先に装着されたハンドルを教示者が直接把持してロボットを教示点に誘導し、ロボットの位置の教示を行っている（特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭５９−１５７７１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１においては、全ての教示点を教示者が教示する必要があるため、教示に時間がかかり、非常に面倒であった。さらに、産業用分野にて、教示した動きの一部を修正する場合に、ティーチングペンダントと呼ばれる遠隔装置により、プログラミングにより修正するか、若しくは、全ての動作を一から教示しなければならず、効率が悪かった。
【０００６】
特に、家庭用ロボットでは、できるだけ教示する時間を短くする必要がある。さらに、ティーチングペンダンドなどの遠隔装置を用いたプログラミングの併用は、操作ステップが増大し、プログラミング言語の習得が必要となり、家庭の素人には困難である。
【０００７】
また、特許文献１で記載しているように、産業ロボットでは、ロボットの動作を教示する教示作業とロボットが実際に作業する本作業とは明確に分けて行っている。しかし、家庭において、教示した作業を実行する場合に、教示を行った環境とは異なる環境に変動することが頻繁に起こるため、教示作業をそのまま実行しても、環境変動によりロボットが停止したり、誤って作業をしてしまうことがある。ここで環境変動とは、ロボットが動作する際の周辺の物の位置又は状態の変動と、人又はロボットが周辺環境に対して直接作用することによる物の位置又は状態の変動を指す。例えば、家庭環境においては、家にある物の配置又は形状が様々であり、例えば、調理作業における調理前と調理後では、物の形又は状態が変わるなどの環境の変動が起こる。さらに、産業用途では、セル生産時のフレキシブル基盤などの柔軟物の形状が変化したり、配線時のコネクタの位置が頻繁に変動する。また、リサイクル工場では、解体する家電製品の形が様々であり、さらに、図３７Ｂ（図３７Ａのネジ７３の頭部７３ａを上から見た図）に示すようなネジの破損部分９２、又は、図３７Ｃのような汚れ部分９３、図３７Ｄのようなさび部分９４などの経年変化により形状が様々である。
【０００８】
これらの環境変動の全てを事前に想定して教示しておくことは、困難である。
さらに、組み立て作業などの製造現場において、モデルチェンジが頻繁に発生するために、教示作業が頻繁に発生する。
【０００９】
そこで、環境変動又はモデルチェンジの度に、一から全ての動作を教示するのではなく、動作中のロボットに対して、人が状況の認識を行い、環境変化があれば、人がその都度ロボットに伝達することで、教示を意識させずに操作することが可能となる。また、教示時に予期していない環境の変動が起こった場合にでも、その都度、人が教示することでロボットを動作させることが可能となる。
しかしながら、この方法では、環境の変動が発生する度に、人が毎回操作をしなければならず、面倒であった。
【００１０】
本発明の目的は、このような課題に鑑みてなされたものであり、予測できない環境の変動があっても、作業者が簡単で短時間にロボットアームの教示を行うことが可能なロボット制御を実現することができる、ロボットアームの制御装置及び制御方法、ロボット、ロボットアームの制御プログラム、及び、ロボットアーム制御用集積電子回路である。
【課題を解決するための手段】
【００１１】
上記の目的を達成するために、本発明は以下のように構成する。
本発明の第１態様によれば、ロボットアームの動作を制御する、ロボットアームの制御装置であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、及び、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を取得する動作情報取得部と、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を取得する補正動作情報取得部と、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて取得する環境情報取得部と、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを制御する位置制御部と、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を補正する動作補正部と、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを生成する制御ルール生成部とを備えて、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置を提供する。
【００１２】
本発明の第２態様によれば、ロボットアームの動作を制御する、ロボットアームの制御装置であって、
前記動作に対応する、前記ロボットアームが対象物に加える力の時系列の動作情報として記憶された動作情報データベースから前記動作情報を取得する動作情報取得部と、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に、前記動作情報取得部で取得した前記動作情報に関連しかつ前記ロボットアームが加える力に関する補正動作情報を取得する補正動作情報取得部と、
前記ロボットアームが作用する前記対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて取得する環境情報取得部と、
前記動作情報取得部で取得した前記動作情報に設定された力で前記対象物に対して前記ロボットアームが力制御を行なうよう前記ロボットアームを力制御モードで制御する制御部と、
前記制御部により前記ロボットアームを前記力制御モードで制御している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を補正する動作補正部と、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを生成する制御ルール生成部とを備えて、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置を提供する。
【００１３】
本発明の第１２態様によれば、ロボットアームの動作を制御する、ロボットアームの制御方法であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御方法を提供する。
【００１４】
本発明の第１３態様によれば、前記ロボットアームと、
前記ロボットアームを制御する第１〜１１のいずれか１つの態様に記載の前記ロボットアームの制御装置とを備えるロボットを提供する。
【００１５】
本発明の第１４態様によれば、ロボットアームの動作を制御する、ロボットアームの制御プログラムであって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部取得するステップと、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得するステップと、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御するステップと、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正するステップと、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成するステップと、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するステップとを実行させるためのロボットアームの制御プログラムを提供する。
【００１６】
本発明の第１５態様によれば、ロボットアームの動作を制御する、ロボットアーム制御用集積電子回路であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアーム制御用集積電子回路を提供する。
【発明の効果】
【００１７】
以上述べたように、本発明は、周辺環境が変化した際に、人がロボットアームを操作して動作を補正することで、次回同じ環境になった場合に、環境情報取得部で取得した環境情報を参照しながら、制御ルール生成部により生成された制御ルールに基づいてロボットアームを自律的に動作させることが可能となる。
【図面の簡単な説明】
【００１８】
本発明のこれらと他の目的と特徴は、添付された図面についての好ましい実施形態に関連した次の記述から明らかになる。この図面においては、
【図１Ａ】図１Ａは、本発明の第１実施形態における、ロボットアームとその制御装置とを備えるロボットの構成の概要を示す図であり、
【図１Ｂ】図１Ｂは、本発明の前記第１実施形態における前記ロボット及びその周辺環境の概要を示す図であり、
【図１Ｃ】図１Ｃは、本発明の前記第１実施形態における前記ロボット及びその周辺環境の概要を示す図であり、
【図２】図２は、本発明の前記第１実施形態におけるロボットを構成する前記制御装置と制御対象である前記ロボットアームとの詳細構成を示す図であり、
【図３Ａ】図３Ａは、本発明の前記第１実施形態における座標系に関する図であり、
【図３Ｂ】図３Ｂは、本発明の前記第１実施形態における座標系に関する図であり、
【図３Ｃ】図３Ｃは、本発明の前記第１実施形態における座標系に関する図であり、
【図４】図４は、本発明の前記第１実施形態における前記制御装置の制御部の構成を示すブロック図であり、
【図５Ａ】図５Ａは、前記制御装置の動作情報データベースのデータである動作情報を説明する図であり、
【図５Ｂ】図５Ｂは、前記制御装置の前記動作情報データベースのデータである動作情報を説明する図であり、
【図５Ｃ】図５Ｃは、前記制御装置の前記動作情報データベースのデータである動作情報を説明する図であり、
【図６】図６は、前記制御装置の前記動作情報データベースのフラグの情報を説明する図であり、
【図７】図７は、前記制御装置の前記動作情報データベースの補正パラメータフラグに関する情報を説明する図であり、
【図８】図８は、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図９Ａ】図９Ａは、前記制御装置の環境情報データベースの環境情報の一覧表を説明する図であり、
【図９Ｂ】図９Ｂは、前記制御装置の前記環境情報データベースのフラグの情報を説明する図であり、
【図１０Ａ】図１０Ａは、前記制御装置の制御ルールデータベースの制御ルールの一覧表を説明する図であり、
【図１０Ｂ】図１０Ｂは、前記制御装置の前記制御ルールデータベースの制御ルールの一覧表を説明する図であり、
【図１１Ａ】図１１Ａは、前記制御装置の検出部選択ルールデータベースの検出部選択ルールの一覧表を説明する図であり、
【図１１Ｂ】図１１Ｂは、前記制御装置の前記検出部選択ルールデータベースの検出部選択ルールの環境情報の種別に関する情報を説明する図であり、
【図１２】図１２は、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１３Ａ】図１３Ａは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１３Ｂ】図１３Ｂは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１３Ｃ】図１３Ｃは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図１３Ｄ】図１３Ｄは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図１３Ｅ】図１３Ｅは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１４】図１４は、本発明の前記第１実施形態における環境情報の画像の例を示す図であり、
【図１５】図１５は、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１６】図１６は、本発明の前記第１実施形態における前記制御部の動作ステップを表すフローチャートであり、
【図１７Ａ】図１７Ａは、本発明の前記第１実施形態における動作指令部の動作ステップを表すフローチャートであり、
【図１７Ｂ】図１７Ｂは、本発明の前記第１実施形態における動作補正部と動作指令部と制御ルール生成部と環境情報取得部と制御パラメータ管理部との動作ステップを表すフローチャートであり、
【図１８Ａ】図１８Ａは、本発明の第２実施形態におけるロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図１８Ｂ】図１８Ｂは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図１９Ａ】図１９Ａは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図１９Ｂ】図１９Ｂは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図１９Ｃ】図１９Ｃは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作状態を示す側面図であり、
【図１９Ｄ】図１９Ｄは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作状態を示す平面図であり、
【図１９Ｅ】図１９Ｅは、本発明の前記第２実施形態における前記ロボットアームの制御装置の動作状態を示す平面図であり、
【図２０】図２０は、本発明の前記第２実施形態における環境情報の画像の例を示す図であり、
【図２１】図２１は、本発明の第３実施形態におけるロボットの概要を示す図であり、
【図２２Ａ】図２２Ａは、前記第３実施形態におけるロボットのロボットアームの制御装置の動作情報データベースの動作情報の一覧表を説明する図であり、
【図２２Ｂ】図２２Ｂは、前記第３実施形態におけるロボットのロボットアームの制御装置の前記動作情報データベースの動作情報の一覧表を説明する図であり、
【図２３】図２３は、前記第３実施形態におけるロボットのロボットアームの制御装置の前記動作情報データベースのフラグの情報を説明する図であり、
【図２４Ａ】図２４Ａは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図２４Ｂ】図２４Ｂは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図２５】図２５は、本発明の前記第３実施形態における環境情報の画像の例を示す図であり、
【図２６Ａ】図２６Ａは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２６Ｂ】図２６Ｂは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２６Ｃ】図２６Ｃは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２６Ｄ】図２６Ｄは、本発明の前記第３実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２７】図２７は、本発明の前記第３実施形態における前記ロボットアームの制御装置の環境情報の画像の例を示す図であり、
【図２８Ａ】図２８Ａは、本発明の前記第３実施形態におけるロボットアームの制御装置の動作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２８Ｂ】図２８Ｂは、本発明の前記第３実施形態におけるロボットアームの制御装置の動作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２８Ｃ】図２８Ｃは、本発明の前記第３実施形態におけるロボットアームの制御装置の動作状態を示す図（ただし、図の簡略化のため、電動ドライバ器具を省略して、ハンドにネジを直接把持した状態で図示している。）であり、
【図２９】図２９は、本発明の前記第１実施形態における動作指令部の動作ステップを表すフローチャートであり、
【図３０Ａ】図３０Ａは、前記第１実施形態における人のかける力とその時刻の関係を示す図であり、
【図３０Ｂ】図３０Ｂは、前記第１実施形態における人のかける力とその時刻の関係を示す図であり、
【図３１】図３１は、本発明の第４実施形態におけるロボットアームの制御装置の構成の概要を示す図であり、
【図３２Ａ】図３２Ａは、前記第４実施形態における動作情報データベースの動作情報の一覧表を説明する図であり、
【図３２Ｂ】図３２Ｂは、前記第４実施形態における前記動作情報データベースの動作情報の一覧表を説明する図であり、
【図３３Ａ】図３３Ａは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３３Ｂ】図３３Ｂは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３３Ｃ】図３３Ｃは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３４】図３４は、本発明の前記第４実施形態における環境情報の画像の例を示す図であり、
【図３５Ａ】図３５Ａは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３５Ｂ】図３５Ｂは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３５Ｃ】図３５Ｃは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図３５Ｄ】図３５Ｄは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作及び人の操作状態を示す図であり、
【図３５Ｅ】図３５Ｅは、本発明の前記第４実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ａ】図３６Ａは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｂ】図３６Ｂは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｃ】図３６Ｃは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｄ】図３６Ｄは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｅ】図３６Ｅは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｆ】図３６Ｆは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３６Ｇ】図３６Ｇは、本発明の前記第１実施形態における前記ロボットアームの制御装置の動作状態を示す図であり、
【図３７Ａ】図３７Ａは、従来のネジの斜視図であり、
【図３７Ｂ】図３７Ｂは、従来の破損部分のあるネジの頭部の平面図であり、
【図３７Ｃ】図３７Ｃは、従来の汚れ部分のあるネジの頭部の平面図であり、
【図３７Ｄ】図３７Ｄは、従来のさび部分のあるネジの頭部の平面図である。
【発明を実施するための形態】
【００１９】
以下に、本発明にかかる実施の形態を図面に基づいて詳細に説明する。
以下、図面を参照して本発明における実施形態を詳細に説明する前に、本発明の種々の態様について説明する。
【００２０】
本発明の第１態様によれば、ロボットアームの動作を制御する、ロボットアームの制御装置であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、及び、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を取得する動作情報取得部と、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を取得する補正動作情報取得部と、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて取得する環境情報取得部と、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを制御する位置制御部と、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を補正する動作補正部と、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを生成する制御ルール生成部とを備えて、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置を提供する。
【００２１】
本発明の第２態様によれば、ロボットアームの動作を制御する、ロボットアームの制御装置であって、
前記動作に対応する、前記ロボットアームが対象物に加える力の時系列の動作情報として記憶された動作情報データベースから前記動作情報を取得する動作情報取得部と、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に、前記動作情報取得部で取得した前記動作情報に関連しかつ前記ロボットアームが加える力に関する補正動作情報を取得する補正動作情報取得部と、
前記ロボットアームが作用する前記対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて取得する環境情報取得部と、
前記動作情報取得部で取得した前記動作情報に設定された力で前記対象物に対して前記ロボットアームが力制御を行なうよう前記ロボットアームを力制御モードで制御する制御部と、
前記制御部により前記ロボットアームを前記力制御モードで制御している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を補正する動作補正部と、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを生成する制御ルール生成部とを備えて、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置を提供する。
【００２２】
本発明の第３態様によれば、前記環境情報取得部は、前記ロボットアームに加えられた前記人の力を検出する力検出部を備えて、
前記力検出部で検出された前記人の力とその検出時間とに応じて前記人が前記ロボットアームを操作したことを検出して、前記ロボットアームの前記動作を補正する際の前記ロボットアームが加える力に関する前記補正動作情報を前記補正動作情報取得部で取得する第１又は２の態様に記載のロボットアームの制御装置を提供する。
【００２３】
本発明の第４態様によれば、前記環境情報取得部は、前記ロボットアーム及び前記ロボットアームの前記動作を行う周辺環境を撮像可能な複数の画像撮像装置を備え、
前記制御ルール生成部は、前記人の前記ロボットアームの操作時の前記ロボットアームの前記位置制御モードに応じて、前記環境情報取得部の前記複数の画像撮像装置で取得した複数の環境情報の中から、制御ルール生成の際の環境情報の種別を決定する第１の態様に記載のロボットアームの制御装置を提供する。
【００２４】
本発明の第５態様によれば、前記環境情報取得部は、前記ロボットアームに加えられた前記人の力を検出する力検出部を備えて、
前記制御ルール生成部は、前記人の前記ロボットアームの操作時の前記ロボットアームの前記力制御モードに応じて、制御ルール生成の際に前記力検出部で取得した環境情報を使用する第２の態様に記載のロボットアームの制御装置を提供する。
【００２５】
本発明の第６態様によれば、前記制御ルール生成部は、前記ロボットアームの前記人の環境変化通知操作に応じて取得する環境情報を決定する第１〜５のいずれか１つの態様に記載のロボットアームの制御装置を提供する。
【００２６】
本発明の第７態様によれば、前記環境情報は、複数種類の検出方向から検出され取得された環境情報を有し、
前記制御ルール生成部は、前記ロボットアームの前記人の操作に応じて取得する前記環境情報の検出方向を決定する第６の態様に記載のロボットアームの制御装置を提供する。
【００２７】
本発明の第８態様によれば、前記制御ルール生成部で生成された制御ルールのうちの複数の動作情報から、前記環境情報取得部で取得した前記環境情報を参照して１つの動作情報を算出する動作算出部をさらに備える第１〜７のいずれか１つの態様に記載のロボットアームの制御装置を提供する。
【００２８】
本発明の第９態様によれば、前記人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正して、前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を前記補正動作情報取得部で取得したのち、
前記環境情報取得部で取得した前記環境情報が、前記補正の操作時の前記環境情報と同じであるときに、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を、前記補正動作情報取得部で取得した前記補正動作情報に基づき補正するように制御する第１〜７のいずれか１つの態様に記載のロボットアームの制御装置を提供する。
【００２９】
本発明の第１０態様によれば、前記環境情報取得部は、前記ロボットアーム及び前記ロボットアームの前記動作を行う周辺環境を撮像可能な複数の画像撮像装置を備え、
前記ロボットアームの先端には、ネジを回転可能な作業用治具を着脱可能に把持可能なハンドを備え、前記作業用治具は前記対象物であり、
前記複数の画像撮像装置で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記ハンドに把持した前記作業用治具で前記ネジの締め付け又は取り外し作業において前記ロボットアームの前記動作を制御する、第１の態様に記載のロボットアームの制御装置を提供する。
【００３０】
本発明の第１１態様によれば、前記環境情報取得部は、前記ロボットアーム及び前記ロボットアームの前記動作を行う周辺環境を撮像可能な複数の画像撮像装置を備え、
前記ロボットアームの先端には、フレキシブル基板を着脱可能に把持可能なハンドを備え、前記フレキシブル基板は前記対象物であり、
前記複数の画像撮像装置で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記ハンドに把持した前記フレキシブル基板を機器に取り付ける作業において前記ロボットアームの前記動作を制御する、第２の態様に記載のロボットアームの制御装置を提供する。
【００３１】
本発明の第１２態様によれば、ロボットアームの動作を制御する、ロボットアームの制御方法であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御方法を提供する。
【００３２】
本発明の第１３態様によれば、前記ロボットアームと、
前記ロボットアームを制御する第１〜１１のいずれか１つの態様に記載の前記ロボットアームの制御装置とを備えるロボットを提供する。
【００３３】
本発明の第１４態様によれば、ロボットアームの動作を制御する、ロボットアームの制御プログラムであって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部取得するステップと、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得するステップと、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御するステップと、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正するステップと、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成するステップと、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するステップとを実行させるためのロボットアームの制御プログラムを提供する。
【００３４】
本発明の第１５態様によれば、ロボットアームの動作を制御する、ロボットアーム制御用集積電子回路であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアーム制御用集積電子回路を提供する。
【００３５】
以下、本発明の各実施形態について図面を用いて詳細に説明する。
【００３６】
（第１実施形態）
本発明の第１実施形態における、ロボットアームとその制御装置とを備えるロボット１の構成について説明する。
図１Ａは、本発明の第１実施形態におけるロボットアーム５と、そのロボットアーム５を駆動制御する制御装置７０とを備えるロボット１の概要を示す。図１Ｂは、ロボットアーム５が作業を行う図１Ａの作業台７を上方から見た図であり、図１Ｃは図１Ａの作業台７及び鍋３を正面から見た図である。
【００３７】
（装置構成）
図１Ａに示すように、ロボット１のロボットアーム５は、例えば家庭内のキッチン又はテーブルなどの作業台７の壁面７ａに設置される。ロボットアーム５の基端５ａが、壁面７ａに固定されたレール８に対して移動可能な状態で支持され、ロボットアーム５が、レール８上に沿って横方向（例えば水平方向）に、人４Ａの手４の力により、移動可能としている。ロボットアーム５の基端の固定場所は、作業台７の壁面７ａに限られるものではなく、天井などでもよい。
【００３８】
後述する環境情報取得部１９の一例としての、カメラなどの第１及び第２画像撮像装置１５ａ及び１５ｂは、ロボットアーム５及びロボットアーム５の動作を行う周辺環境を撮像して環境情報を取得可能としている。本第１実施形態において、第１画像撮像装置１５ａは、図１Ｃに示すように、天井７ｂから作業台７の全体を撮像可能なように天井７ｂから下向きに取り付けられ、第２画像撮像装置１５ｂは、図１Ｂ、図１Ｃに示すように、作業台７の上面７ｄと平行に作業台７の側面７ｃに取り付けられ、作業台７の上面付近を横方向から撮像可能としている。
【００３９】
ロボット１の操作を指示する操作盤１３は、データ入力ＩＦ２６の一例として機能し、ＩＨクッキングヒーター又はガスコンロなどの調理装置６の前側側面に配置されている。操作盤１３は、ユーザによる操作指示を入力するための操作ボタン１３ａ又は音声入力装置などが設けられている。
【００４０】
ロボットアーム５の先端にはハンド３０が設けられ、ハンド３０は作業用冶具９（例えばレードルなどの調理用具、又は、拭き掃除用モップなど、又は、電動ドライバ器具７２など）を着脱可能に把持する。ハンド３０としては、例えば、機械的チャックなど公知の着脱可能な取り付け機構を使用することができる。
【００４１】
表示手段の一例としての表示部９５は、例えば作業台７に設置されたディスプレイ装置であり、後述するロボットの動作などを表示部９５に表示する。すなわち、表示部９５は、必要に応じて、必要な情報を表示部９５に表示して、本発明の様々な動作を円滑に行なえるようにする。
【００４２】
尚、レール８は、作業台７の壁面７ａに配置したが、壁面の無いアイランドキッチンの場合は、天井面又はアイランドキッチンの天板６ａの側面など作業をするのに適した場所に設置することができる。
さらに、データ入力ＩＦ２６の一例としての操作盤１３は、調理装置６の側面に固定したが、操作盤１３に代えて、遠隔操作が可能なリモコンでも良い。
【００４３】
ロボット１は、例えば、家庭内において、ロボットアーム５を使用して、鍋３の中の具材をかき混ぜる作業、又は、キッチンの汚れ９１をふき取る作業（図１９Ｂなどに示す、汚れた部分９１での拭き掃除作業）などを、ロボットアーム５と人４Ａとが協働して行う。
【００４４】
以下、一例として、まず、ロボットアーム５により、かき混ぜ作業を行う場合の動作について図１Ａを用いて簡単に説明する。
まず、人４Ａがロボット１のロボットアーム５を直接把持し、人４Ａが手４でロボットアーム５に力を加える。そして、人４Ａからロボットアーム５に加えられた力により、ロボットアーム５がレール８に沿って移動し、例えば鍋などの調理器具３の付近までロボットアーム５が誘導される。
【００４５】
次に、人４Ａが、手４でロボットアーム５の先端のハンド３０に、作業用冶具９の一例として、かき混ぜ作業のためのレードルなどの調理用具９を取り付ける。
次に、人４Ａが、手４で操作盤１３から、ロボットアーム５に動作開始指令を入力すると、ロボットアーム５が作動し、予め選択された作業、すなわち、かき混ぜ作業を開始させる。
【００４６】
ロボットアーム５がレードル９により鍋３の中でかき混ぜているとき、人４Ａがかき混ぜている具材の状態を確認し、人４Ａがロボットアーム５を直接把持して、補正したい方向にロボットアーム５に力を加えることで、ロボットアーム５の動作を補正する。
調理終了後、人４Ａは、ロボットアーム５を調理器具の一例としての鍋３内から鍋３の外部に移動させて、次の作業に移行する。
【００４７】
次に、本第１実施形態のロボット１の詳細を説明する。図２はロボットアーム５と、ロボットアーム５の制御装置７０との詳細構成図である。ロボットアーム５の制御装置７０は、図２に示すように、制御装置本体部１１と、ロボットアーム５の動作を生成する動作生成装置１２と、周辺装置１４とを備えている。
【００４８】
《ロボットアーム》
第１実施形態のロボットアーム５は、一例として、６自由度の多リンクマニピュレータで構成される多関節ロボットアームとする。ロボットアーム５は、ハンド３０と、ハンド３０が取り付けられている手首部３１を先端３２ａに有する前腕リンク３２と、前腕リンク３２の基端３２ｂに回転可能に先端３３ａが連結される上腕リンク３３と、上腕リンク３３の基端３３ｂが回転可能に連結支持される台部３４とを備えている。台部３４は、移動可能なレール８に連結されているが、一定位置に固定されていても良い。手首部３１は、第４関節部３８と、第５関節部３９と、第６関節部４０との３つの回転軸を有しており、前腕リンク３２に対するハンド３０の相対的な姿勢（向き）を変化できる。すなわち、図２において、第４関節部３８は、手首部３１に対するハンド３０の横軸（ψ）周りの相対的な姿勢を変化できる。第５関節部３９は、手首部３１に対するハンド３０の、第４関節部３８の横軸とは直交する縦軸（Φ）周りの相対的な姿勢を変化させることができる。第６関節部４０は、手首部３１に対するハンド３０の、第４関節部３８の横軸（ψ）及び第５関節部３９の縦軸（φ）とそれぞれ直交する横軸（θ）周りの相対的な姿勢を変化できる。前腕リンク３２の他端は、上腕リンク３３の先端に対して第３関節部３７周りに、すなわち、第４関節部３８の横軸と平行な横軸周りに回転可能とする。上腕リンク３３の他端は、台部３４に対して第２関節部３６周りに、すなわち、第４関節部３８の横軸と平行な横軸周りに回転可能とする。さらに、台部３４の上側可動部３４ａは、台部３４の下側固定部３４ｂに対して第１関節部３５周りに、すなわち、第５関節部３９の縦軸と平行な縦軸周りに回転可能としている。
【００４９】
この結果、ロボットアーム５は、合計６個の軸周りに回転可能として前記６自由度の多リンクマニピュレータを構成している。
【００５０】
各軸の回転部分を構成する各関節部（具体的には第１関節部３５〜第６関節部４０）には、一例としてモータ４３のような回転駆動装置と、モータ４３の回転軸の回転位相角（すなわち関節角）を検出するエンコーダ４４を備えている。
【００５１】
この第１実施形態のモータ４３は、ロボットアーム５の各関節部の内部に配設されている。モータ４３は、各関節部を構成する２つのリンク部材（例えば、回動側部材と、該回動側部材を支持する支持側部材）のうちの一方のリンク部材に備えられるとともに、その一方のリンク部材に備えられかつ後述するモータドライバ２５によりモータ４３が駆動制御される。各関節部の前記一方のリンク部材の関節部の近傍部分に備えられたモータ４３の回転軸が、他方のリンク部材の関節部の近傍部分に連結されて、前記回転軸を正逆回転させることにより、前記他方のリンク部材を前記一方のリンク部材に対して第１関節部３５〜第６関節部４０のそれぞれの各軸周りに回転可能とする。また、エンコーダ４４は、モータ４３の回転軸の回転位相角（すなわち、関節角）を検出するために、一方のリンク部材に備えられる（実際には、ロボットアーム５の各関節部の一方のリンク部材の内部に配設されている）。
【００５２】
４１は台部３４の下側固定部３４ｂに対して相対的な位置関係が固定された絶対座標系であり、４２はハンド３０に対して相対的な位置関係が固定された手先座標系である。絶対座標系４１から見た手先座標系４２の原点位置Ｏｅ（ｘ，ｙ，ｚ）をロボットアーム５の手先位置（ハンド３０の位置）とし、絶対座標系４１から見た手先座標系４２の姿勢をロール角とピッチ角とヨー角で表現した（φ，θ，ψ）をロボットアーム５の手先姿勢とし、手先位置及び姿勢ベクトルをベクトルｒ＝［ｘ，ｙ，ｚ，φ，θ，ψ］Ｔと定義する。
図３は、本発明の第１実施形態におけるロボットアーム５の座標系を示す。
【００５３】
この第１実施形態では、絶対座標系３５のＺ軸を回転軸として、座標系を角度φだけ回転させた座標系を考える（図３Ａ参照）。このときの座標軸を［Ｘ'，Ｙ'，Ｚ］とする。
【００５４】
次に、この座標系を、Ｙ'を回転軸として角度θだけ回転させる（図３Ｂ参照）。このときの座標軸を［Ｘ''，Ｙ'，Ｚ''］とする。
【００５５】
最後に、この座標系を、Ｘ''軸を回転軸として角度ψだけＸ''軸周りに回転させる（図３Ｃ参照）。このときの座標軸を［Ｘ''，Ｙ'''、Ｚ'''］とする。このときの座標系の姿勢をロール角度φ、ピッチ角度θ、ヨー角度ψとし、このときの姿勢ベクトルは（φ，θ，ψ）となる。姿勢（φ，θ，ψ）の座標系が原点位置を手先座標系４２の原点位置Ｏｅ（ｘ，ｙ，ｚ）に平行移動した座標系と、手先座標系４２が一致する場合、手先座標系４２の姿勢ベクトルは（φ，θ，ψ）であるとする。
【００５６】
ロボットアーム５の手先位置及び姿勢を制御する場合には、手先位置及び姿勢ベクトルｒを、後述する目標軌道生成部５５で生成された手先位置及び姿勢目標ベクトルｒｄに追従させることになる。
【００５７】
ロボットアーム５は、後述する動作生成装置１２と、制御装置本体部１１と、周辺装置１４とを備えたロボットアームの制御装置により、次にように動作制御される。
【００５８】
ロボットアーム５の各関節部の、後述するエンコーダ４４より出力される各関節角度情報が、入出力ＩＦ（インターフェース）２４のカウンタボードを通じて制御装置本体部１１に取り込まれる。取り込まれた各関節角度情報に基づき制御装置本体部１１によって各関節部の回転動作での制御指令値が算出される。制御装置本体部１１によって算出された各制御指令値は、入出力ＩＦ２４のＤ／Ａボードを通じて、ロボットアーム５の各関節部を駆動制御するためのモータドライバ２５に与えられる。モータドライバ２５から送られた前記各制御指令値に従って、ロボットアーム５の各関節部のモータ４３が独立して正逆回転駆動される。
【００５９】
また、モータドライバ２５により駆動制御されるハンド用駆動装置の一例としてハンド３０は、ハンド開閉駆動用のモータ６２と、ハンド開閉駆動用のモータ６２の回転軸の回転位相角を検出するエンコーダ６１とを備える。
【００６０】
エンコーダ６１で検出されたモータ６２の回転軸の回転角度情報が、入出力ＩＦ２４のカウンタボードを通じて制御装置本体部１１に取り込まれる。制御装置本体部１１に取り込まれた回転角度情報を基に、制御装置本体部１１の制御部２２のハンド制御部５４（図４に図示）によってハンド３０の開閉動作での制御指令値が算出される。算出された制御指令値は、入出力ＩＦ２４のＤ／Ａボードを通じて、ハンド３０の開閉駆動も行うモータドライバ２５に与えられる。モータドライバ２５から送られた前記各制御指令値に従って、モータ６２の回転を駆動制御して、ハンド開閉駆動用のモータ６２の回転軸が正逆回転して、ハンド３０を開閉させる。例えば、モータ６２の回転軸を正方向に回転させることによりハンド３０を開いて、作業用冶具９（例えばレードル又はモップなど）を人４Ａの手４で取り付け可能とする一方、モータ６２の回転軸を逆方向に回転させることによりハンド３０を閉じて、ハンド３０に取り付けられた作業用冶具９（例えばレードル又はモップなど）を固定するように構成することができる。
【００６１】
制御装置本体部１１及び動作生成装置１２及び周辺装置１４は、一例として、それぞれ一般的なパーソナルコンピュータにより構成される。
【００６２】
《周辺装置１４》
周辺装置１４は、データ入力ＩＦ(インターフェース)２６と、入出力ＩＦ(インターフェース)２４と、モータドライバ２５とを有する。
【００６３】
入出力ＩＦ２４は、パーソナルコンピュータのＰＣＩバスなどの拡張スロットに接続された、例えばＤ／ＡボードとＡ／Ｄボードとカウンタボードとなどを有する。入出力ＩＦ２４は、ロボットアーム５の各関節部のエンコーダ４４より出力される各関節角度情報と、ハンド３０のエンコーダ６１より出力される角度情報とを取得し、制御部２２に入力する。一方、入出力ＩＦ２４は、制御部２２から制御信号などの制御情報が入力されるとともに、モータドライバ２５に制御指令値などの制御情報を出力する。モータドライバ２５は、ロボットアーム５の各関節部のモータ４３及びハンド３０のモータ６２に対し制御指令値などの制御情報を出力する。
【００６４】
データ入力ＩＦ（インターフェース）２６は、人４Ａがキーボード、マウス又はマイクなどの外部入力装置２６ａを使用して、データ入力ＩＦ２６とデータベース入出力部２８とを介して、作業情報（例えば作業ＩＤ）、又は、動作補正操作指令情報、ロボットアーム５の関節角速度情報に基づいた環境変化通知操作の指令、動作補正操作の指令、又は、動作情報を入力したり、変更したりするためのインターフェースである。よって、データ入力ＩＦ２６は、外部入力装置２６ａと、データベース入出力部２８と、動作指令部２７（動作算出部２）と、制御部２２の力検出部５３と制御パラメータ管理部２１と、表示部９５とに接続されている。
【００６５】
また、データ入力ＩＦ２６は、データ入力ＩＦ２６の一例としての図１Ａに示す操作盤１３のボタン１３ａなどの入力装置を使用して、人４Ａから動作指令部２７に対して制御動作開始及び終了の指令を受けるようにしてもよい。ボタン１３ａは、例えばトグルスイッチとして１つのボタンで制御動作開始及び制御動作終了をそれぞれ入力可能としてもよいし、制御動作開始ボタンと制御動作終了ボタンと別々に設けてもよい。ボタンの代わりに、キーボード又はマウス又はマイクなどの入力装置を使用して、制御動作開始及び制御動作終了などの指令をロボット１に入力するインターフェースである。
【００６６】
《動作生成装置１２》
動作生成装置１２は、動作情報データベース１７と、環境情報データベース１８と、制御ルールデータベース１６と、検出部選択ルールデータベース２９と、動作指令部２７（動作算出部２）と、動作補正部２０と、制御ルール生成部２３と、環境情報取得部１９と、データベース入出力部２８とにより構成される。
【００６７】
動作補正部２０と制御パラメータ管理部２１との間では、ロボットアーム５の手先位置及び姿勢と、人４Ａが加えた力の情報と、動作指令などが入出力される。制御パラメータ管理部２１からは、ロボットアーム５の手先位置及び姿勢と、人４Ａの加えられた力の情報などが動作補正部２０に出力される。なお、動作生成装置１２における各制御モード（（ｉ）位置制御モード、（ｉｉ）インピーダンス制御モード、（ｉｉｉ）ハイブリッドインピーダンス制御モード、（ｖ）力ハイブリッドインピーダンス制御モード）の詳細については、制御装置本体部１１の制御パラメータ管理部２１にて後述する。
【００６８】
−動作情報データベース−
動作情報データベース１７は、所定の時間におけるロボットアーム５の手先位置及び姿勢などのロボットアーム５の動作に関する情報（以下、動作情報と称す）を記憶している。動作情報は、予め設定しておいてもよいし、制御ルール生成部２３を介してデータベース入出力部２８により動作情報データベース１７に入力されて記憶してもよい。
【００６９】
図５Ａ（図５Ｂ、図５Ｃも同様）は、動作情報データベース１７のデータである動作情報を示す。
図６は、動作情報データベース１７のフラグの情報を示す
図７は、動作情報データベース１７の補正パラメータフラグに関する情報を示す。  動作情報の具体例として、図５Ａを参照して以下に示す。
【００７０】
（１）動作情報データベース１７に記憶されている動作情報の「動作ＩＤ」の欄は、作業をロボットアーム５に実行するためのロボットアーム５の個々の動きを識別する動作ＩＤ番号を示す。  （２）動作情報の「キー動作ＩＤ」の欄は、ロボットアーム５の動作制御する制御プログラムにおける個々の動作（キー動作）（コマンド,command）を識別するキー動作ＩＤ番号を示す。
【００７１】
（３）動作情報の「位置姿勢」の欄は、１つの動作におけるロボットアーム５の手先位置及び姿勢に関する情報を示す。尚、本第１実施形態は、一例として、メートル（ｍ）単位系で手先位置及び姿勢の座標を示す。
（４）動作情報の「力」の欄は、ロボットアーム５が作業をする際に作業対象となる物体（作業対象物、例えば作業用治具９，４６，７２又はフレキシブル基板７４）に加える力に関する情報を示す。尚、本第１実施形態は、一例として、ニュートン（Ｎ）単位系で示す。
【００７２】
（５）動作情報の「フラグ」の欄は、ロボットアーム５の手先位置、姿勢、及び力のパラメータのうちのいずれの情報が有効か否かを示すフラグに関する情報を示す。
（６）動作情報の「ハンド」の欄は、ハンド３０が開閉しているか否かのハンド開閉状態を表す情報を示す。
（７）動作情報の「時間」の欄は、ロボットアーム５の各キー動作を実行するための時間に関する情報を示す。尚、本第１実施形態では、一例として、秒（ｓｅｃ）単位で示す。
（８）動作情報の「補正パラメータフラグ」の欄は、後述する動作補正部２０を用いて動作情報データベース１７の動作情報を補正する際の、補正すべきパラメータの種別に関する情報を示す。
【００７３】
ここで、「作業」とは、例えば、かき混ぜ作業又は拭き掃除作業などの一定の手順に従ってロボットアーム５で実行する仕事を意味する。
また、「動作」とは、例えば、かき混ぜ作業又は拭き掃除作業などの「作業」をロボットアーム５に実行させるためのロボットアーム５の動きを意味する。１つ以上の「動作」を実行することで、前記「作業」をロボットアーム５に実行させることができる。
【００７４】
また、「キー動作」とは、ロボットアーム５を動作制御する制御プログラム上で、ある時刻でロボットアーム５にある「動作」を行なわせるためのコマンド（指令）を意味し、複数の「キー動作」(コマンド)で前記「動作」を構成し、複数の「キー動作」(コマンド)を時系列に前記制御装置で実行するように制御することでロボットアーム５の前記「動作」を実現することができる。
【００７５】
図５Ａの動作情報データベース１７の「位置姿勢」、すなわち、ロボットアーム５の手先位置及び姿勢に関する情報は、前述したロボットアーム５の手先位置及び姿勢を表し、原点位置Ｏｅと姿勢から、（ｘ，ｙ，ｚ，φ，θ，ψ）と表す。
【００７６】
力に関する情報は、ロボットアーム５が作業をする際に作業対象となる物体（作業対象物）に加える力に関する情報を示し、力のｘ、ｙ、ｚ、φ、θ、ψ方向の成分を（fｘ，fｙ，fｚ，fφ，fθ，fψ）と表す。例えば、ｆｚ＝５[Ｎ]である場合は、ｚ軸方向に５[Ｎ]の力を加えて、作業することを表す。具体的には、ＩＨクッキングヒーター６などの天板６ａを拭き掃除作業する際に、天板６ａの表面に力を加えて擦る場合などに使用する。
【００７７】
図５Ａの動作情報データベース１７の「フラグ」に関する情報は、各「キー動作ＩＤ」が示す動作情報に基づくロボットアーム５の手先位置及び姿勢及び力のうちのいずれの情報が有効か否かを示す値である。具体的には、図６は、図５Ａで示した３２ビットの数値で表し、各ビット数と位置姿勢と力とのパラメータは対応付けられている。図６において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値が有効の場合は「１」とし、手先位置及び姿勢及び力のそれぞれの値が無効の場合は「０」とする。例えば、０ビット目において、ロボットアーム５の手先位置のｘ座標の値が有効の場合には「１」とし、無効の場合には「０」とする。また、１ビット目において、ロボットアーム５の手先位置のｙ座標の値が有効の場合には「１」とし、無効の場合には「０」とする。また、２ビット目において、ロボットアーム５の手先位置のｚ座標の値が有効の場合には「１」とし、無効の場合には「０」とする。以後、順次、３，４，５ビット目は姿勢のφ、θ、ψの有効性を表す（すなわち、有効の場合は「１」とし、無効の場合は「０」とする）。さらに、６ビット目〜１１ビット目においては、力のそれぞれの成分が有効か無効かを示す（すなわち、有効の場合は「１」とし、無効の場合は「０」とする）。また、フラグに関する情報は、将来の拡張用に多め（３２ビット）に用意しているため、この例では１２ビット目から３１ビット目は使用しないので、「０」を入れておくが、１２ビットのみ記憶できる変数としても良い。図６は、図５Ａの動作情報データベース１７の「キー動作ＩＤ」の「１」のキー動作のフラグを示す。０ビット目から１ビット目、及び、３ビット目から５ビット目、及び、８ビット目が「１」となっているので、動作情報の手先位置及び姿勢情報うち、ｘ、ｙ、φ、θ、ψ情報、及び、力情報のうちのｆｚ情報のみが有効であることを示している。この結果、動作情報のうち、２ビット目、６〜７ビット目、及び９〜１１ビット目が「０」となっているので、z、fｘ、fｙ、fφ、fθ、fψの値にどういう値が記憶されていても無効であるとする。
【００７８】
図５Ａの「ハンド」に関する情報は、動作中のハンド３０の開閉の有無を表すフラグとし、ハンド３０が開いている場合は「０」と記載し、ハンド３０が閉じている場合は「１」と記載する。
【００７９】
図５Ａの動作情報データベース１７の「時間」に関する情報は、ロボットアーム５の各キー動作を実行するための時間である。すなわち、ロボットアーム５は「キー動作ＩＤ」に記憶された動作を、対応する「時間」に関する情報として記憶された時間をかけて行うことを表す。この「時間」は、絶対時刻ではなく、前の動作からの相対時間を表す。すなわち、「キー動作ＩＤ」が示す「位置姿勢」に、ロボットアーム５のハンド３０が移動するまでの時間又は「キー動作ＩＤ」が示す「力」になるまでの時間を表す。
【００８０】
図５Ａの動作情報データベース１７の「補正パラメータフラグ」に関する情報は、後述する動作補正部２０で、どのパラメータを補正するかを表す情報である。具体的には、図７に示した３２ビットの数値で表す。図７において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値の補正が可能な場合は「１」とし、手先位置及び姿勢及び力のそれぞれの値の補正が不可能な場合は「０」とする。例えば、０ビット目においては、手先位置のｘ座標の値の補正が可能な場合は「１」とし、手先位置のｘ座標の値の補正が不可能な場合は「０」とする。また、１ビット目においては、手先位置のｙ座標の値の補正が可能な場合は「１」とし、手先位置のｙ座標の値の補正が不可能な場合は「０」とする。また、２ビット目においては、手先位置のｚ座標の値の補正が可能な場合は「１」とし、手先位置のｚ座標の値の補正が不可能な場合は「０」とする。以後、順次、３，４，５ビット目は、姿勢のφ、θ、ψの補正可能性を表す（すなわち、補正が可能な場合は「１」とし、補正が不可能な場合は「０」とする）。さらに、６ビット目〜１１ビット目においては、力のそれぞれの成分の補正可能性を示す（すなわち、補正可能の場合は「１」とし、補正不可能の場合は「０」とする）。また、フラグに関する情報は、将来の拡張用に多め（３２ビット）に用意しているため、この例では、１２ビット目から３１ビット目は使用しないので、「０」を入れておくが、１２ビットのみ記憶できる変数としても良い。
【００８１】
動作情報データベース１７の情報は、予め設定してデータベース化しておくが、ロボットアーム５の手先の位置姿勢、力の入力及び更新は、ロボットアーム５を用いた教示を行ってもよく、以下に説明する。
【００８２】
図８は、本発明の前記第１実施形態におけるロボットアーム５を用いた人４Ａによる教示の状態を示す。
【００８３】
ロボットアーム５の手先の位置姿勢及び時間の情報は、以下のようにして作成する。すなわち、例えば、図８に示すように、ロボットアーム５を人４Ａが手４で直接把持して、後述するインピーダンス制御モードにて、ロボットアーム５を移動させる。このとき、ある一定時間毎（例えば０．２ｍｓｅｃ毎）にロボットアーム５の手先位置及び姿勢の情報を制御部２２及び制御パラメータ管理部２１を介してデータベース入出力部２８で取得する。取得したロボットアーム５の手先位置及び姿勢の情報を、時間と共に、データベース入出力部２８により動作情報データベース１７に記憶する。このようにしてロボットアーム５の手先の位置姿勢及び時間の情報を動作情報データベース１７に作成することができる。
【００８４】
さらに、動作情報データベース１７の力の情報は、データ入力ＩＦ２６を使用しかつデータベース入出力部２８を介して、加えたい力の値を動作情報データベース１７に入力することにより作成する。
【００８５】
なお、この例ではロボットアーム５の手先の位置姿勢及び時間の情報を連続的に作成したが、それぞれの位置姿勢及び時間の情報を、人４Ａが、キーボード、マウス、又はマイクなどの外部入力装置２６ａを使用して個別に入力しても良い。
【００８６】
−環境情報データベース−
環境情報データベース１８は、ロボットアーム５が動作する際のロボットアーム５の周辺の物体の位置及び状態に関する情報と、人４Ａ及びロボットアーム５が周辺環境に対して直接作用することによる物体の位置及び状態に関する情報（以下、これらの情報を環境情報と称す。）が記憶されている。環境情報は、後述する環境情報取得部１９で取得し、環境情報取得部１９からデータベース入出力部２８を介して環境情報データベース１８に記憶される。
【００８７】
次に、環境情報データベース１８の詳細について説明する。
図９Ａは、環境情報データベース１８のデータである環境情報を示す。
図９Ｂは、環境情報データベース１８のフラグの情報を示す。
【００８８】
（１）環境情報データベース１８に記憶された環境情報の「環境ＩＤ」の欄は、個々の環境情報を識別する環境ＩＤ番号を示す。
（２）環境情報の「画像ＩＤ」の欄は、環境情報取得部１９の一例として機能する第１及び第２画像撮像装置１５ａ及び１５ｂで撮像された画像を識別する画像ＩＤ番号を示す。ここでは、ファイル名を使用する。
【００８９】
（３）環境情報の「画像撮像装置ＩＤ」の欄は、２つの画像撮像装置１５ａ及び１５ｂのうちのどの画像撮像装置で撮影したかを識別するＩＤ番号である。この例では、第１画像撮像装置１５ａで撮影した場合には「１」、第２画像撮像装置１５ｂで撮像された場合には「２」で示す。
（４）環境情報の「力」の欄は、力検出部５３で検出された力に関する情報(力の情報)を示す。
力に関する情報は、ロボットアーム５の力検出部５３で検出した力に関する情報を示し、力のｘ、ｙ、ｚ、φ、θ、ψ方向の成分を（fｘ，fｙ，fｚ，fφ，fθ，fψ）と表す。
（５）環境情報の「フラグ」の欄は、環境情報の力及び画像のパラメータのうちのいずれの情報が有効か否かを示すフラグに関する情報を示す。
【００９０】
図９Ａの環境情報データベース１８の「フラグ」に関する情報は、各「環境ＩＤ」が示す環境情報の画像及び力の情報が有効か否かを示す値である。具体的には、図９Ｂで示した３２ビットの数値で表す。図９Ｂにおいて、各ビットで、画像及び力の値がそれぞれ有効の場合は「１」とし、画像及び力の値がそれぞれ無効の場合は「０」とする。本第１実施形態では０ビット目から５ビット目は力の情報、６ビット目は、画像の情報を示す。例えば、０ビット目において、力のｘ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。また、１ビット目において、力のｙ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。また、２ビット目において、力のｚ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。以後、順次、３，４，５ビット目は力のφ、θ、ψの有効性を表す。すなわち、有効の場合は「１」とし、無効の場合は「０」とする。さらに、６ビット目においては、第１又は第２画像撮像装置１５ａ又は１５ｂで撮影された画像が有効か無効かを示す（すなわち、有効の場合は「１」とし、無効の場合は「０」とする）。
【００９１】
また、フラグに関する情報は、将来の拡張用に多め（３２ビット）に用意しているため、この例では７ビット目から３１ビット目は使用しないので、「０」を入れておくが、６ビットのみ記憶できる変数としても良い。図９Ｂでは、０ビット目から５ビット目が「０」、６ビット目が「１」となっているので、環境情報の画像情報のみが有効であることを示す。
【００９２】
−制御ルールデータベース−
制御ルールデータベース１６は、ロボットアーム５が作動する際のロボットアーム５の制御ルールに関する情報（以下、制御ルール情報と称す）が記憶されている。制御ルール情報は、後述する制御ルール生成部２３で生成し、データベース入出力部２８により、制御ルール生成部２３と制御ルールデータベース１６との間で、生成された情報又は生成に必要な情報などが入出力される。また、データベース入出力部２８により、制御ルール生成部２３と他のデータベース１８，１７，２９との間で、生成に必要な情報などが入出力される。
【００９３】
次に、制御ルールデータベース１６の詳細について図１０Ａ及び図１０Ｂを用いて説明する。
【００９４】
図１０Ａと図１０Ｂは、制御ルールデータベース１６の制御ルールの一例を示す。
（１）制御ルールデータベース１６に記憶された制御ルールの「作業ＩＤ」の欄は、作業に関する情報を識別する作業ＩＤ番号を示す。
（２）制御ルールの「環境ＩＤ」の欄は、個々の環境情報を識別する環境ＩＤ番号を示し、環境情報データベース１８の環境ＩＤの値を参照可能とする。環境情報データベース１８の環境ＩＤの値を参照可能としない場合は、「−１」として記憶する。
【００９５】
（３）制御ルールの「動作ＩＤ」の欄は、作業の中のロボットアーム５の動作を識別する動作ＩＤ番号を示し、動作情報データベース１７の動作ＩＤを参照可能とする。
（４）制御ルールの「進捗情報」の欄は、ロボットアーム５の所定の動作が動作中か否かを示し、動作中である場合は「１」とし、動作中でない場合は「０」として、データベース入出力部２８により制御ルールデータベース１６に記憶する。具体的には、動作指令部２７によって、作業が開始されると、ロボットアーム５により現在動作（実行）中の動作については「１」をデータベース入出力部２８により制御ルールデータベース１６に記憶し、現在動作(実行)していない動作については「０」をデータベース入出力部２８により制御ルールデータベース１６に記憶する。
【００９６】
−検出部選択ルールデータベース−
検出部選択ルールデータベース２９は、ロボットアーム５を操作して環境情報を取得する際に、ロボットアーム５の制御モードにより、複数の環境情報の中から優先的に取得する環境情報の種別を選択するためのルール（検出部選択ルール）が記憶されている。検出部選択ルールデータベース２９は、ロボット１に予め用意されており、データベース入出力部２８により、検出部選択ルールの情報が入出力される。
【００９７】
次に、図１１Ａ、図１１Ｂを用いて検出部選択ルールデータベース２９の詳細を説明する。
【００９８】
図１１Ａは、検出部選択ルールデータベース２９の検出部選択ルールを示す。
図１１Ｂは、検出部選択ルールデータベース２９の検出部選択ルールの環境情報の種別に関する情報を示す。
【００９９】
（１）検出部選択ルールデータベース２９に記憶された検出部選択ルールの「制御モード」の欄は、ロボットアーム５の制御モードに関する情報を示す。具体的には、制御装置本体部１１の制御パラメータ管理部２１に関連して後述する。
【０１００】
（２）検出部選択ルールの「環境情報の種別ＩＤ」の欄は、環境情報の種別を識別する識別ＩＤを示す。環境情報の識別ＩＤは、検出部である環境情報取得部１９、例えば、ロボットアーム５が搭載する各種センサ(例えば、力検出部５３)又は、ロボット１の各種センサ(例えば、第１又は第２画像撮像装置１５ａ又は１５ｂ)で取得した環境情報の種別を識別するためのＩＤである。図１１Ａの「環境情報種別ＩＤ」は、図１１Ｂで定義されている。具体的には、検出部選択ルールとして、図１１Ｂのように、「環境情報の種別ＩＤ」が「１」の場合は、検出部の一例としての第１又は第２画像撮像装置１５ａ又は１５ｂで撮像した画像を表し、「環境情報の種別ＩＤ」が「２」の場合は、検出部の別の例としての力検出部５３で検出された力を表すとする。
【０１０１】
−データベース入出力部−
データベース入出力部２８は、各データベース群（動作情報データベース１７と、環境情報データベース１８と、制御ルールデータベース１６と、検出部選択ルールデータベース２９と）と、動作指令部２７と、制御ルール生成部２３と、環境情報取得部１９と、及び動作補正部２０との間でのデータの入出力を行う。よって、データベース入出力部２８は、動作情報取得部及び補正動作情報取得部の一例として機能することができる。すなわち、データベース入出力部２８は、ロボットアーム５の動作に対応する、ロボットアーム５の位置、姿勢、及び、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベース１７から前記動作情報を取得する動作情報取得部、又は、ロボットアーム５の動作に対応する、ロボットアーム５が作業対象物９，４６，７２，７４に加える力の時系列の動作情報として記憶された動作情報データベース１７から前記動作情報を取得する動作情報取得部として機能することができる。また、データベース入出力部２８は、人４Ａがロボットアーム５を操作して、ロボットアーム５の前記動作を補正する際に、動作情報取得部で取得した動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を取得する補正動作情報取得部、又は、人４Ａがロボットアーム５を操作して、ロボットアーム５の動作を補正する際に、動作情報取得部で取得した動作情報に関連しかつロボットアーム５が加える力に関する補正動作情報を取得する補正動作情報取得部としても機能することができる。
【０１０２】
もちろん、データベース入出力部２８を、動作情報の入出力を行う動作情報取得部と、補正動作情報の入出力を行う補正動作情報取得部と、その他の情報の入出力を行う他情報取得部とに分割してもよい。
【０１０３】
−環境情報取得部−
環境情報取得部１９は、ロボットアーム５が作用する作業対象物９，４６，７２，７４に関する情報である環境情報、すなわち、ロボットアーム５が動作する際のロボットアーム５の周辺の物体の位置及び状態に関する情報と、人４Ａ及びロボットアーム５が周辺環境に対して直接作用することによる物体の位置及び状態に関する情報を取得する。具体的には、第１又は第２画像撮像装置１５ａ又は１５ｂで撮像された画像と力検出部５３で検出された力の情報とを取得し、第１又は第２画像撮像装置１５ａ又は１５ｂで取得した画像及び力検出部５３で検出された力の情報を、環境情報取得部１９から制御ルール生成部２３及び動作指令部２７へ出力する。よって、第１及び第２画像撮像装置１５ａ及び１５ｂ及び力検出部５３は、それぞれ、環境情報取得部１９の一例として機能する。
【０１０４】
−動作指令部−
動作指令部２７には、人４Ａがデータ入力ＩＦ２６により指定した「作業ＩＤ」の作業の動作開始の指令が、データ入力ＩＦ２６から入力される。動作指令部２７は、指定された「作業ＩＤ」の作業の動作開始の指令を受けて、制御ルールデータベース１６の指定された「作業ＩＤ」をデータベース入出力部２８を介して参照して、その「作業ＩＤ」の作業を開始させるように制御パラメータ管理部２１へ指令する。
【０１０５】
以下、動作指令部２７の機能について説明する。
人４Ａは、データ入力ＩＦ２６により、表示部９５で作業などが表示された表示画像を使用しつつ、制御ルールデータベース１６の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業を選択して、選択した作業情報を動作指令部２７に入力して指定する。
【０１０６】
動作指令部２７は、データベース入出力部２８を介して制御ルールデータベース１６を参照し、指定された「作業ＩＤ」に対応する「動作ＩＤ」の動作を実行する。ここで、「動作ＩＤ」の動作を実行するとは、動作指令部２７が、データベース入出力部２８を介して動作情報データベース１７を参照し、対応するキー動作（具体的には、位置情報、姿勢情報、時間情報、及び、力情報）を基にフラグ（有効か無効かを示すフラグ）に従って制御モードを設定してロボットアーム５が動作するように、制御パラメータ管理部２１へ指令を出すことを意味する。
【０１０７】
動作指令部２７がデータベース入出力部２８を介して制御ルールデータベース１６を参照するとき、１つの「作業ＩＤ」に関する作業の中に複数の「環境ＩＤ」の環境情報が存在すると動作指令部２７で判断した場合又は複数の「動作ＩＤ」の動作が存在すると動作指令部２７で判断した場合には、それぞれの環境情報又は動作を制御ルールデータベース１６の上から下に順番に実行する。
【０１０８】
ここで、「環境ＩＤ」が「−１」の値の場合には、環境情報データベース１８の「環境ＩＤ」の値を参照しないことを意味している。よって、ロボットアーム５が動作している周辺の環境に拘わらず、「動作ＩＤ」で記述されているＩＤと同じ「動作ＩＤ」の動作を、動作指令部２７がデータベース入出力部２８を介して動作情報データベース１７から参照する。
【０１０９】
以下、人４Ａがデータ入力ＩＦ２６により、「作業ＩＤ」の「１」を選択した場合と、「作業ＩＤ」の「２」を選択した場合とについて説明する。
【０１１０】
（「作業ＩＤ」の「１」を選択した場合）
具体的には、図１０Ａの「作業ＩＤ」が「１」の作業が選択された場合は、「作業ＩＤ」が「１」の作業の「環境ＩＤ」が「−１」の値である場合には、このときの「動作ＩＤ」は「１」の動作である。従って、動作指令部２７は、環境に拘わらず、ロボットアーム５に動作を実行させるために、データベース入出力部２８を介して動作情報データベース１７の「動作ＩＤ」を参照する。この例では、制御ルールデータベース１６の「動作ＩＤ」には「１」と記憶されており、動作指令部２７は、データベース入出力部２８を介して、図５Ａの動作情報データベース１７の「動作ＩＤ」が「１」の動作の「キー動作ＩＤ」の「１」、「２」、「３」、「４」、「５」、「６」、「７」、「８」のキー動作(コマンド)を順番に参照する。
【０１１１】
動作情報データベース１７の「キー動作ＩＤ」が「１」のキー動作(コマンド)の場合には、「フラグ」は、０、１、３、４、５、８ビット目が「１」であるので、ロボットアーム５の手先位置のｘ、ｙ、φ、θ、ψの値、及び、力のｚ座標の値が有効ということを示している。よって、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸については位置制御モードで動作させ、ｚ軸については力制御モードで動作するように、動作指令部２７からデータベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す（力ハイブリッドインピーダンス制御の指令と同等）。同様に、「キー動作ＩＤ」が「２」〜「８」のキー動作(コマンド)についても、力ハイブリッドインピーダンス制御モードで動作するように、動作指令部２７からデータベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。
【０１１２】
（「作業ＩＤ」の「２」を選択した場合）
同様に、図１０Ａの「作業ＩＤ」が「２」の作業が選択された場合には、「作業ＩＤ」が「２」の作業の「環境ＩＤ」が「−１」の値であり、このときの「動作ＩＤ」は「２」の動作である。従って、動作指令部２７は、環境に拘わらず、ロボットアーム５に動作を実行するために、データベース入出力部２８を介して動作情報データベース１７の「動作ＩＤ」を参照する。この例では、制御ルールデータベース１６の「動作ＩＤ」には「２」と記憶されており、動作指令部２７は、データベース入出力部２８を介して、図５Ａの動作情報データベース１７の「動作ＩＤ」が「２」の動作の「キー動作ＩＤ」が「１０」、「１１」、「１２」、「１３」、「１４」、「１５」、「１６」、「１７」のキー動作(コマンド)を順番に参照する。
【０１１３】
このとき、「キー動作ＩＤ」が「１０」のキー動作(コマンド)の場合には、「フラグ」が０〜５ビット目が「１」であるので、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸の全ての軸について、位置制御モードで動作するように、動作指令部２７から、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。
【０１１４】
外部入力装置２６ａにより入力されて、動作が実行されると、動作指令部２７は、データベース入出力部２８を介して、制御ルールデータベース１６の動作中の「動作ＩＤ」の「進捗情報」に「１」を設定し、動作中の「動作ＩＤ」の「進捗情報」が「１」であるとの情報を、データベース入出力部２８により制御ルールデータベース１６に記憶する。その他の「動作ＩＤ」の「進捗情報」については「０」を動作指令部２７に設定し、その他の「動作ＩＤ」の「進捗情報」が「０」であるとの情報を、データベース入出力部２８により制御ルールデータベース１６に記憶する。
【０１１５】
ここで、具体的な作業例について説明する。
人４Ａによりデータ入力ＩＦ２６を使用して制御ルールデータベース１６の作業の中の「作業ＩＤ」が「１」である作業が選択された場合は、動作指令部２７は、ｚ軸方向を力制御モードで、その他の軸方向は位置制御モードで作業するように、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。その結果、制御パラメータ管理部２１は、後述するように、前記制御モードに従ってロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２による制御の下に、図１２に示すように、ロボットアーム５は、ＩＨクッキングヒーターなどの調理装置６の天板６ａの拭き掃除作業を開始する。
【０１１６】
人４Ａによりデータ入力ＩＦ２６を使用して制御ルールデータベース１６の作業の中の「作業ＩＤ」が「２」である作業が選択された場合は、動作指令部２７は、位置制御モードでかき混ぜ動作をするように、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。その結果、制御パラメータ管理部２１は、後述するように、前記制御モードに従ってロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２による制御の下に、図１３Ａに示すように、ロボットアーム５はかき混ぜ動作を開始する。
【０１１７】
一方、図１０Ａの「作業ＩＤ」が「１」の作業が選択された場合であって、かつ、「作業ＩＤ」が「１」の作業の「環境ＩＤ」が「−１」の値でない場合には、「環境ＩＤ」で記憶されたＩＤと同じ「環境ＩＤ」の環境情報を、環境情報データベース１８から動作指令部２７がデータベース入出力部２８を介して参照する。「環境ＩＤ」と同じ「環境ＩＤ」の環境情報（具体的には、画像の情報と力の情報）のうちのフラグにより有効な環境情報が、後述する環境情報取得部１９で取得した環境情報と合致したと動作指令部２７で判断した場合のみ、「動作ＩＤ」の動作を動作指令部２７で実行する。詳細については、制御ルール生成部２３と関連して後述する。
【０１１８】
また、選択された「作業ＩＤ」の中に複数の「環境ＩＤ」と「動作ＩＤ」とが存在する場合は、それぞれの「環境ＩＤ」とそれぞれの「動作ＩＤ」とのフラグ（ここでのフラグとは、「動作ＩＤ」で動作情報データベース１７を動作指令部２７がデータベース入出力部２８を介して参照し、そこで記憶されているフラグを意味する。）により、最終的に実行すべき動作情報を、動作指令部２７の動作算出部２により算出する。動作算出部２の詳細については、制御ルール生成部２３に関連して後述する。
【０１１９】
−動作補正部−
動作補正部２０は、制御装置本体部１１よりロボットアーム５を力制御モードで制御している最中又は制御部２２の位置制御部５９の制御によりロボットアーム５が位置制御モードで移動している最中に補正動作情報取得部の一例としてのデータベース入出力部２８で取得したそれぞれの時間での補正動作情報に応じて動作情報を補正することができる。すなわち、動作補正部２０は、ロボットアーム５の制御動作中に、データ入力ＩＦ２６から動作指令部２７を介して動作補正操作の開始の指令を受ける。動作補正部２０は、データベース入出力部２８を介して動作情報データベース１８の補正パラメータフラグに基づいて、ロボットアーム５の制御パラメータを切り替えることで、補正された動作（補正動作）でロボットアーム５を動作し、人４Ａがロボットアーム５に力を加えることで、データベース入出力部２８を介して制御ルールデータベース１６のロボットアーム５の制御ルールを修正する。
【０１２０】
ここで、前記ロボットアーム５の制御動作は、後述する（ｉ）位置制御モード、（ｉｉｉ）力制御モード、若しくは、（ｖ）それらを方向別に組み合わせた力ハイブリッドインピーダンス制御モード、のうち、いずれかのモードで動作することを示す。
【０１２１】
また、前記ロボットアーム５の補正動作は、ロボットアーム５に人４Ａが加えた力によりロボットアーム５の動作を補正する動作で、後述する（ｉｉ）インピーダンス制御モード、（ｖｉ）高剛性位置制御モード、若しくは、（ｖ）それらを方向別に組み合わせた力ハイブリッドインピーダンス制御モード、のうち、いずれかのモードで動作することを示す。
【０１２２】
以下、動作補正について説明する。
人４Ａは、データ入力ＩＦ２６により、制御ルールデータベース１６の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業を選択して、動作指令部２７により動作を実行する。
【０１２３】
このとき、図１０Ａの「作業ＩＤ」が「２」の作業が選択された場合には、動作指令部２７は、位置制御モードでかき混ぜ動作をするように制御パラメータ管理部２１へ指令を出す。よって、図１３Ａに示すように、ロボットアーム５はかき混ぜ動作を開始する。ここで、「作業ＩＤ」が「２」の作業の場合には「環境ＩＤ」が「−１」の値であるため（図１０Ａ参照）、ロボットアーム５が動作する環境情報に関わらず、「動作ＩＤ」で記憶された動作で動作（具体的には、「動作ＩＤ」が「２」の動作で動作）する。
【０１２４】
次に、人４Ａがデータ入力ＩＦ２６から動作指令部２７を介して動作補正部２０に動作補正操作の開始を指示すると、動作補正部２０は、動作補正の処理に移行する。
図１３は、本発明の前記第１実施形態におけるロボットアーム５の補正動作を説明する図である。
【０１２５】
本第１実施形態では、レードル９をハンド３０に保持したロボットアーム５が、図１３Ａに示す鍋３ａのかき混ぜを中止し、図１３Ｅに示すように、鍋３ａに比べて鍋の直径が大きい鍋３ｂをかき混ぜる動作を行う場合について説明する。ここで、動作補正を行わない場合、「作業ＩＤ」が「２」の作業は「環境ＩＤ」が「−１」の値であるため、鍋の大きさに拘わらず、「動作ＩＤ」で記述された動作を実行するため、鍋３ａを、直径が大きい鍋３ｂに交換したとしても、図１３Ｂのように直径の小さなかき混ぜを行うことになる。このため、鍋３ｂの中の具材が、うまく混ざらないという問題が発生する。
【０１２６】
そこで、人４Ａは、鍋３ｂの大きさを確認して、図１３Ｅのように鍋３ｂの直径に合わせて、レードル９で大きくかき混ぜるために、ロボットアーム５のかき混ぜ動作を補正する。
このため、人４Ａは、以下の２つの入力操作を行う。
【０１２７】
第１の入力操作は、作業環境が変化することを知らせる操作（以下、環境変化通知操作と称す。）である。この操作は、本第１実施形態では、かき混ぜ動作の対象の鍋３ａが直径の大きな鍋３ｂに変わった事をロボットアーム５に知らせる操作である。
第２の入力操作は、実際のロボットアーム５の動作を補正するための操作（以下、動作補正操作と称す。）である。
【０１２８】
本第１実施形態では、かき混ぜ動作を図１３Ｅのように大きくかき混ぜるように動作を補正するための操作である環境変化通知操作を開始した時点で、ロボットアーム５のかき混ぜ動作は停止し、次に、環境変化通知操作が終了し、ロボットアーム５のかき混ぜ動作を再開する。人４Ａはロボットアーム５がかき混ぜ動作している最中に動作補正操作を行う。
【０１２９】
人４Ａは、データ入力ＩＦ２６により、環境変化通知操作の開始の指令を動作指令部２７に入力する。動作指令部２７に環境変化通知操作の開始の命令が入力されると、動作指令部２７により、ロボットアーム５の動作を停止させる。そして、人４Ａによる環境変化通知操作が終了した時点で、引き続き、人４Ａはデータ入力ＩＦ２６により、動作補正操作の開始の指令を動作指令部２７に入力する。動作指令部２７が、動作補正操作の開始の指令をデータ入力ＩＦ２６を介して受け取ると、動作指令部２７は環境変化通知操作が終了したと判断して、動作補正操作の開始のためにロボットアーム５の動作を再開する。このとき、人４Ａはロボットアーム５の動作に対して動作補正操作を行う。
【０１３０】
動作指令部２７は、データ入力ＩＦ２６を介して環境変化通知操作の指令又は動作補正操作の指令を受けると、動作補正部２０及び後述する制御ルール生成部２３にそれぞれの環境変化通知操作の開始の情報又は動作補正操作の開始の情報を出力する。
【０１３１】
前記操作の具体的な指令は、位置制御モードでかき混ぜ動作をロボットアーム５が実行している最中に、人４Ａが手４でロボットアーム５を把持してロボットアーム５を補正したい方向に力をかける。このとき、図３０Ａのように、人４Ａがロボットアーム５にかけた力（後述する力検出部５３で検出された力）が、ある閾値（図３０Ａの値ｔ１）以上であり、その状態がある一定時間（図３０Ａの時間ｔｉｍｅ  １）以上続いた場合（後述する、制御パラメータ管理部２１のタイマ２１ａで検出された時間が前記ある一定時間以上続いた場合）に、環境変化通知操作の開始の指令が入力されたと動作指令部２７が判断する。逆に言えば、図３０Ｂのように、人４Ａがロボットアーム５にかけた力が、前記ある閾値（図３０Ｂの値ｔ２）未満の場合、又は、前記ある閾値（図３０Ｂの値ｔ２）以上であっても、その状態が前記ある一定時間（図３０Ａの時間ｔｉｍｅ  １）未満の時間（図３０Ｂの時間ｔｉｍｅ  ２）の場合に、環境変化通知操作の開始の指令は入力されていないと、動作指令部２７が判断する。人４Ａによる環境変化通知操作の開始の指令が入力されたと動作指令部２７で判断すると、動作指令部２７は、環境変化通知操作の開始の情報を動作補正部２０に入力する。
【０１３２】
環境変化通知操作の開始の指令が入力されたと動作指令部２７が判断すると、動作指令部２７により、かき混ぜ動作が停止される。このかき混ぜ動作の停止動作により、人４Ａは、環境変化通知操作が開始したとロボット１が判断したことがわかる。なお、後述するように、力検出部５３で検出された力の情報は制御パラメータ管理部２１に入力され、前記力の情報とタイマ２１ａで検出された時間の情報とが、制御パラメータ管理部２１から動作指令部２７に入力されて、動作指令部２７で前記判断が実行できるように構成している。
【０１３３】
次に、人４Ａが前記環境変化通知操作を行った後で、人４Ａがロボットアーム５にかけた力が前記閾値（図３０Ａの値ｔ１）より小さくなったと動作指令部２７により判断した場合には、動作指令部２７により環境変化通知操作が終了したと判断し、動作指令部２７により位置制御モードでのかき混ぜ動作を再開する。かき混ぜ動作を再開することにより、人４Ａは、環境変化通知操作が終了したとロボット１が判断したことがわかる。
【０１３４】
次に、前記したように環境変化通知操作が終了したとロボット１が判断したことを人４Ａが分かったのち、人４Ａがロボットアーム５を手４で把持して、ロボットアーム５の動作を補正したい方向にロボットアーム５に力をかける。図３０Ａのように、ロボットアーム５にかけた力が前記ある閾値（図３０Ａの値ｔ１）以上であり、その状態が前記ある一定時間（図３０Ａの時間ｔｉｍｅ  １）以上続いたと動作指令部２７が判断した場合に、人４Ａによる動作補正操作の開始の指令が入力されたと動作指令部２７で判断する。逆に言えば、図３０Ｂのように、人４Ａがロボットアーム５にかけた力が、前記ある閾値（図３０Ｂの値ｔ２）未満の場合、又は、前記ある閾値（図３０Ｂの値ｔ２）以上であっても、その状態が前記ある一定時間（図３０Ａの時間ｔｉｍｅ  １）未満の時間（図３０Ｂの時間ｔｉｍｅ  ２）の場合に、動作補正操作の開始の指令が入力されていないと、動作指令部２７が判断する。人４Ａによる動作補正操作の開始の指令が入力されたと動作指令部２７で判断すると、動作指令部２７は、動作補正操作の開始の情報を動作補正部２０に入力する。なお、一定時間経過しても、動作補正操作が開始されなかった場合には、環境変化通知操作を無効とし、かき混ぜ動作を再開する。
動作補正操作の開始の指令が入力されたと動作指令部２７で判断すると、動作指令部２７の指令により、ロボットアーム５のかき混ぜ動作の速度が遅くなり(例えば、動作補正操作の開始前の通常のかき混ぜ動作のときの速度の半分の速度)、人４Ａは、動作補正操作の開始の指令が入力されたとロボット１が判断したことがわかる。さらに、かき混ぜ動作の速度が遅くなるため、動作中のロボットアーム５の動作を人４Ａが補正しやすくなる。ロボットアーム５の動作を人４Ａが補正している間、その補正動作の情報は、後述するように、動作補正部２０で取得する。ロボットアーム５の動作を人４Ａが補正した後、人４Ａがかけた力が前記閾値（図３０Ａの値ｔ１）より小さくなったと動作指令部２７が判断した場合には、動作指令部２７により動作補正操作を終了し、動作指令部２７によりロボットアーム５の速度を補正前の速度に戻し、さらに、動作指令部２７及び動作補正部２０により、補正した動作を実行する。動作補正操作が終了したと動作指令部２７で判断すると、動作指令部２７の指令により、ロボットアーム５のかき混ぜ動作の速度が速くなり(例えば、動作補正操作時のかき混ぜ動作のときの速度の二倍の速度)、人４Ａは、動作補正操作が終了したとロボット１が判断したことがわかる。
【０１３５】
なお、この例では、人４Ａが加えた力により、環境変化通知操作及び動作補正操作の開始及び終了を動作指令部２７で自動的に判断して自動で切り替えたが、人４Ａがボタンを押すなどのデータ入力ＩＦ２６を使用することにより、環境変化通知操作及び動作補正操作の開始及び終了を手動で切り替えても良い。さらに、それぞれの操作によりロボットアーム５の動作を停止したり、遅くすることで、どのような操作をしているかを人４Ａに知らせたが、例えば、作業台７の壁面７ａなどに設置された表示部９５の一例としてのモニタなどに、環境変化通知操作又は動作補正操作のどちらの操作をしているかを表示しても良い。
【０１３６】
一方、動作補正部２０は、動作指令部２７から環境変化通知操作の開始の情報を受けたとき、人４Ａからロボットアーム５を介して入力される環境変化通知操作の情報を取得するため、補正したい「作業ＩＤ」の「動作ＩＤ」について、動作情報データベース１７の「動作ＩＤ」のフラグに従って制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出力する。
【０１３７】
具体的には、図１０Ａの「作業ＩＤ」の「２」の作業の「動作ＩＤ」の「２」の動作に対応する、動作情報データベース１８の「キー動作ＩＤ」が「１０」〜「１７」のキー動作(コマンド)について説明する。図５Ａにおいて、各「キー動作ＩＤ」のフラグが、０〜５ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸のみデータが有効である。従って、ロボットアーム５のｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸を、人４Ａが加えた力を用いて、動作補正操作することが可能となる。そして、ロボットアーム５のｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸について、位置制御モードからインピーダンス制御モード（人４Ａの力を検知した方向にロボットアーム５を移動させるモード）で動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。位置制御モードからインピーダンス制御モードに切り替わるため、人４Ａの力が加わっていない状態ではロボットアーム５は停止し、人４Ａが力を加えると、人４Ａが加えた力の方向にロボットアーム５を移動させることができる。
【０１３８】
次に、環境変化通知操作の開始後に、図１３Ｃに示すように、鍋３ａが直径の大きな鍋３ｂに変わった事をロボットアーム５に知らせる操作（環境変化通知操作）を人４Ａが行う。具体的には、図１３Ｃに示すように人４Ａがロボットアーム５のハンド３０又はハンド３０の近傍の前腕リンク３２を手４で直接把持して、鍋３ｂの鍋底面に平行（ｘ−ｙ平面）に力をかけると、インピーダンス制御モードにより、人４Ａの力を力検出部５３で検知して、人４Ａがロボットアーム５に力をかけた方向（矢印ＡＸ方向）にロボットアーム５を移動させる。この例では、この矢印ＡＸ方向にロボットアーム５を人４Ａにより移動させる操作が環境変化通知操作である。
【０１３９】
次いで、環境変化通知操作後に、人４Ａが力を加えて移動させた補正動作の情報を動作補正部２０で取得するために、制御パラメータ管理部２１からのロボットアーム５の手先位置を動作補正部２０で取得し、動作補正部２０から後述する制御ルール生成部２３へ出力する。
【０１４０】
次に、動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介して動作補正操作の開始の指令を受けて、動作情報データベース１７の補正パラメータフラグに従って、制御モードを設定して動作するように、動作補正部２０から制御パラメータ管理部２１へ指令を出す。具体的には、図１０Ａの「作業ＩＤ」が「２」の作業の「動作ＩＤ」が「２」の動作に対応する、動作情報データベース１８の「キー動作ＩＤ」が「１０」〜「１７」のキー動作(コマンド)について説明する。図５Ａにおいて、それぞれの「キー動作ＩＤ」の補正パラメータフラグは、０，１，２ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、ｘ軸、ｙ軸、ｚ軸のみ補正が可能である。従って、ロボットアーム５のｘ軸、ｙ軸、ｚ軸が人４Ａの加えた力を用いて補正することが可能となる。そして、ロボットアーム５のｘ軸、ｙ軸、ｚ軸について、位置制御モードからハイブリッドインピーダンス制御モード（位置制御モードで移動しながら、人４Ａの力を検知した方向にインピーダンス制御で移動させるモード）で動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０１４１】
そして、図１３Ｄに示すように、人４Ａがロボットアーム５を直接把持して、鍋３ｂの直径に合わせて大きく混ぜるように鍋３ｂの底面沿いの方向に力をかけると、ロボットアーム５は、前述したようにハイブリッドインピーダンス制御モードを行う。その結果、ロボットアーム５は、（１）位置制御モードによるロボットアーム５の移動と、（２）インピーダンス制御モードによる、人４Ａの力をかけた方向にロボットアーム５をｘ軸方向、又は、ｙ軸方向、又は、ｘ軸方向及びｙ軸方向への移動とを実行する。人４Ａは、ｘ−ｙ平面において、鍋３ｂ内で、鍋３ａの場合よりも円状に大きくかき混ぜるように補正したいことから、人４Ａはロボットアーム５を図１３Ｄに示すように、鍋底面に平行にロボットアーム５に力を加えて移動させる。人４Ａが力を加えて移動させたロボットアーム５の動作を動作補正部２０で取得するために、制御パラメータ管理部２１からのロボットアーム５の動作補正操作の情報として手先位置及び時間を所定の一定時間毎(例えば０．２秒毎)に動作補正部２０で取得し、取得した手先位置及び時間を、後述する制御ルール生成部２３へ動作補正部２０から出力する。ロボットアーム５の手先位置は、エンコーダ４４を介して制御パラメータ管理部２１より取得する。さらに、時間情報は、制御パラメータ管理部２１に備えたタイマ２１ａにより取得する。また、制御パラメータ管理部２１には、力検出部５３で検出された力の情報も入力されるため、この力検出部５３で検出された力の情報と、タイマ２１ａによる時間情報とが制御パラメータ管理部２１から動作指令部３７に入力されて、例えば、補正動作の環境変化通知操作及び動作補正操作の開始及び終了の判断を前記したように行うことができる。
【０１４２】
なお、この時間に関する情報は、人４Ａが作業を選択して、開始指令をデータ入力ＩＦ２６を介して動作指令部２７に出した時点を０とした相対時間とする。
【０１４３】
−制御ルール生成部−
制御ルール生成部２３は、動作補正部２０で補正された動作情報と環境情報取得部１９で取得した環境情報とを対応付けることにより、ロボットアーム５が自動で動作するための制御ルールを生成することができる。すなわち、制御ルール生成部２３は、後述するロボットアーム５の制御動作中に、データ入力ＩＦ２６から動作指令部２７を介して、動作補正部２０と同様に、動作補正操作の開始の指令を受ける。制御ルール生成部２３は、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報とに基づいて、制御ルールを生成し、制御ルールデータベース１６に記憶する。ここで、ロボットアーム５の制御動作は、（ｉｉ）インピーダンス制御モード、（ｉ）位置制御モード、（ｉｖ）力制御モード、若しくは、（ｖ）それらを方向別に組み合わせた力ハイブリッド制御モードのうち、いずれかのモードである。
【０１４４】
制御ルール生成部２３には、環境変化通知操作の開始の指令を受けて、人４Ａからの環境変化通知操作にて生成したロボットアーム５の手先位置及び時間が、動作補正部２０から入力される。また、制御ルール生成部２３には、環境変化通知操作により、環境情報取得部１９にて取得した環境情報がデータベース入出力部２８を介して入力される。すなわち、環境情報は、ロボットアーム５への人の環境変化通知操作に応じて、環境情報取得部１９で取得して、データベース入出力部２８を介して制御ルール生成部２３に入力される。また、制御ルール生成部２３には、環境変化通知操作の開始時の動作中の「動作ＩＤ」を動作情報データベース１７からデータベース入出力部２８を介して参照し、その「動作ＩＤ」の「キー動作ＩＤ」のフラグに関する情報からロボットアーム５の制御モードに関する情報を取得する。
【０１４５】
具体例として、図１０Ａの「作業ＩＤ」が「２」の作業で動作中の「動作ＩＤ」が「２」の動作の「キー動作ＩＤ」が「１０」〜「１７」のキー動作を、制御ルール生成部２３が、動作情報データベース１８をデータベース入出力部２８を介して参照する。それぞれの「キー動作ＩＤ」のフラグが、図５Ａでは、０〜５ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸のみデータが有効であると動作指令部２７で判断することができる。従って、ロボットアーム５のｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、インピーダンス制御モードとなっている。
【０１４６】
制御ルール生成部２３は、環境変化通知操作時における（１）ロボットアーム５の移動方向の制御モードと（２）検出部選択ルールデータベース２９の情報とに基づいて、複数の環境情報の中から制御ルールを生成するための環境情報の種別を選択する。具体的には、図１０Ａの「作業ＩＤ」が「２」の作業の環境変化通知操作の開始のタイミングでは、図１３Ｃのように、ｘ軸方向及びｙ軸方向で環境変化通知操作を行っている。ｘ軸及びｙ軸はインピーダンス制御モードで補正しているので、検出部選択ルールデータベース２９の検出部選択ルールの一例を示す図１１Ａより、「制御モード」が「インピーダンス制御モード」のときの「環境情報の種別ＩＤ」は「１」となり、図１１Ｂより、「環境情報の種別ＩＤ」が「１」のときは「画像」を制御ルール生成部２３で選択する。さらに、図１３Ｃでは、ｘ軸方向及びｙ軸方向に環境変化通知操作をしているので、ｘ−ｙ平面を撮影可能な第１画像撮像装置１５ａでの画像を環境変化通知操作の方向により環境情報取得部１９で取得し制御ルール生成部２３で選択し、第１画像撮像装置１５ａからの画像を制御ルール生成部２３で取得する。なお、ｘ−ｙ平面を撮影可能な第１画像撮像装置１５ａが複数存在する場合には、それらの複数の第１画像撮像装置１５ａの中で、環境変化通知操作の前後で画像が最も変化した画像を撮影した第１画像撮像装置１５ａを制御ルール生成部２３で選択する。
【０１４７】
図１４は、第１画像撮像装置１５ａにより、鍋３の上方から取得した画像を示す。
第１画像撮像装置１５ａにより制御ルール生成部２３で取得した画像は、データベース入出力部２８を介して環境情報データベース１８に記憶する。
【０１４８】
なお、この例では、ｘ−ｙ平面において環境変化通知操作をしたので、第１画像撮像装置１５ａの画像を制御ルール生成部２３で選択したが、ｙ−ｚ平面及びｘ−ｚ平面において環境変化通知操作をした場合には、第２画像撮像装置１５ｂの画像を制御ルール生成部２３で選択する。制御ルール生成部２３で選択した画像は、制御ルール生成部２３がデータベース入出力部２８を介して環境情報データベース１８に記憶する。さらに、変形例として、図３６Ｃと図３６Ｄのように、ｘ−ｙ平面の環境変化通知（鍋３の開口寸法の変化通知）の後に、ｙ−ｚ平面及びｘ−ｚ平面の環境変化（鍋３の深さ寸法の変化通知）を通知した場合には、制御ルール生成部２３が第１画像撮像装置１５ａと第２画像撮像装置１５ｂの両方の画像を選択する。
【０１４９】
前記例で、ｘ−ｙ平面において環境変化通知操作をしたとき、具体的には、図９Ａの「環境ＩＤ」が「１０」として示すように、制御ルール生成部２３により、新しい「環境ＩＤ」に「１０」を付与し、その「環境ＩＤ」の「画像ＩＤ」に、選択した画像のファイル名（この例では「画像３」）を制御ルール生成部２３が環境情報データベース１８に記憶する。さらに、フラグは画像のみであるので、制御ルール生成部２３により、６ビット目のみ「１」を、その他のビットに「０」を環境情報データベース１８に記憶する。
【０１５０】
なお、前記変形例において、図３６Ｃと図３６Ｄのように、ｘ−ｙ平面の環境変化通知の後に、ｙ−ｚ平面及びｘ−ｚ平面の環境変化を通知した場合には、「環境ＩＤ」が「３３」の環境情報に示すように、制御ルール生成部２３により、複数の画像（この例では「画像８」と「画像９」）を環境情報データベース１８に記憶するようにしても良い。
【０１５１】
次に、動作補正操作の開始の指令を受けて、人４Ａがロボットアーム５に力を加えてロボットアーム５を移動させて補正したロボットアーム５の動作情報（ロボットアーム５の手先位置と時間）を制御パラメータ管理部２１より制御ルール生成部２３で取得する。制御ルール生成部２３は、取得した動作情報をデータベース入出力部２８を介して動作情報データベース１７に記憶する。
【０１５２】
具体的には、図５Ｂに示すように、制御ルール生成部２３により、図５Ｂの動作情報データベース１７に新規に動作ＩＤを付与し（この例では「３」）、更に、取得した手先位置の数だけ「キー動作ＩＤ」として「２０」〜「３１」を付与し、動作補正部２０で補正した動作情報（手先情報、時間）を動作情報データベース１７の各「キー動作ＩＤ」に記憶する。
【０１５３】
動作情報の時間は、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間が、制御ルール生成部２３により動作情報データベース１７に入力される。このため、動作情報データベース１７の時間のデータ欄は、追加した最初のキー動作（この例では「２０」）の時間として、全ての動作のそれぞれの時間から減算した値を、制御ルール生成部２３により、動作情報データベース１７に記憶する。
【０１５４】
フラグのデータ欄は、動作補正操作前のフラグが「１」となる動作情報の成分のうち、補正前と補正後におけるキー動作の位置姿勢と、力の値とを成分毎にそれぞれ制御ルール生成部２３により比較し、制御ルール生成部２３により、閾値以上の差があると判断された場合の成分のみ、図６に示すフラグの各成分を「１」とし、閾値未満であるとされた場合のフラグの成分は「０」とするように、動作情報データベース１７に記憶する。
【０１５５】
なお、ここで比較する動作補正操作前後の「キー動作」は、動作補正操作前と動作補正操作後のそれぞれの「動作ＩＤ」の一番先頭のキー動作のみ、制御ルール生成部２３により比較する。
【０１５６】
具体的には、補正前の「動作ＩＤ」が「２」の動作の「キー動作ＩＤ」が「１０」のキー動作のフラグは、０〜５ビット目が「１」であり、その他は「０」であるので、補正前の動作と補正後の動作の位置姿勢と、力の値とのうち、位置姿勢成分のみを制御ルール生成部２３により比較する。
【０１５７】
ここで、制御ルール生成部２３により、補正前の「キー動作ＩＤ」は「１０」のキー動作、補正後の「キー動作ＩＤ」は「２０」のキー動作とする。
【０１５８】
「キー動作ＩＤ」が「１０」のキー動作と「キー動作ＩＤ」が「２０」のキー動作では、位置姿勢（ｘ，ｙ，ｚ，φ，θ，ψ）の成分のうち、ｚ，φ，θ，ψは同じで、ｘ座標、ｙ座標の差がそれぞれ（０．２、０．２）となる。上記差の閾値を０．１とすると、ｘ成分及びｙ成分のみが閾値以上と、制御ルール生成部２３により判断される。従って、フラグは０，１ビット目が「１」で、その他は「０」として、制御ルール生成部２３により動作情報データベース１７に記憶する。
【０１５９】
補正パラメータフラグは、補正前の動作（この例では「１０」〜「１７」）の値を記憶する。
なお、図３６Ｅに示すように、鍋の側面から鍋の底面に向かってかき混ぜるような動作として補正した場合には、図３６Ｆに示すように、時刻ｔ１、時刻ｔ２、時刻ｔ３と時間の経過とともに、ロボットアーム５の姿勢成分が変化するように補正しても良い。
【０１６０】
次に、制御ルール生成部２３は、取得した環境情報と動作補正部２０の動作補正操作により補正した動作とから、制御ルールデータベース１６に新しい制御ルールを生成して記憶する。
【０１６１】
具体的には、制御ルールデータベース１６の「作業ＩＤ」が「２」の作業で動作中に動作を補正するため、制御ルール生成部２３により、「作業ＩＤ」が「２」の作業に１行追加し、動作補正操作により新しく追加した「動作ＩＤ」が「３」の動作を追加するように、制御ルールデータベース１６に記憶させる。
【０１６２】
次に、制御ルール生成部２３で選択した環境情報の環境ＩＤを、制御ルール生成部２３により制御ルールデータベース１６に記憶する。
【０１６３】
以上、人４Ａが環境変化通知操作及び動作補正操作を行って制御ルール生成部２３により新しい制御ルールを生成して制御ルールデータベース１６に記憶することで、鍋の大きさを考慮した動作を事前に用意しておかなくても、その場で人４Ａがロボットアーム５の操作を行なって環境変化通知を行い、ロボットアーム５の動作を補正するだけで、その操作及び補正動作を制御ルールデータベース１６に記憶させることができ、次に同じような環境になった場合に、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５は自律的に動作することができるようになる。
【０１６４】
−動作指令部（動作算出部）−
この例では、図１０Ｂに示すように、「作業ＩＤ」が「２」の作業には、複数の「動作ＩＤ」（「２」、「３」）を制御ルールデータベース１６に記憶しているため、その場合の動作指令部２７の機能について説明する。
【０１６５】
図１０Ｂの「作業ＩＤ」が「２」の作業の「動作ＩＤ」が「２」の動作は図１３Ａの動作、「動作ＩＤ」が「３」の動作は図１３Ｅの動作を行うための動作情報を表す。
【０１６６】
人４Ａが図１３Ｅの鍋３ｂを作業台７に設置し、人４Ａがデータ入力ＩＦ２６を介して「作業ＩＤ」が「２」の作業の開始を動作指令部２７に指令する。動作指令部２７は、指定された「作業ＩＤ」の作業の作業開始の指令を受けて、制御ルールデータベース１６の指定された「作業ＩＤ」をデータベース入出力部２８を介して参照して、その「作業ＩＤ」の作業を開始させるように制御パラメータ管理部２１へ指令する。
【０１６７】
複数の動作が存在する場合には、「環境ＩＤ」に応じて、動作する動作情報を動作指令部２７により選択する。具体的には、動作指令部２７により、制御ルールデータベースに記憶されているそれぞれの「動作ＩＤ」の「環境ＩＤ」で環境情報データベース１８をデータベース入出力部２８を介して参照した環境情報が、ロボットアーム５の動作中の「環境ＩＤ」と合致したと判断した場合のみ、その「動作ＩＤ」の動作を実行するように、動作指令部２７から制御パラメータ管理部２１へ指令する。
【０１６８】
具体的には、図１０Ｂの「作業ＩＤ」が「２」の作業には、「動作ＩＤ」が「２」の動作と「３」の動作とがある。「動作ＩＤ」が「２」の動作は「環境ＩＤ」が「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず、ロボットアーム５は動作するので、実行すべき動作として動作指令部２７により選択する。
【０１６９】
次に、「動作ＩＤ」が「３」の動作の「環境ＩＤ」は「１０」の環境情報となり、「−１」の値ではないので、動作指令部２７により、環境情報データベース１８の「環境ＩＤ」が「１０」の環境情報をデータベース入出力部２８を介して参照する。図９Ａの「環境ＩＤ」が「１０」の環境情報のフラグは、６ビット目のみ「１」であり、それ以外は「０」であるので、画像が有効であると、動作指令部２７で判断することができる。そこで、画像ＩＤより、データベース入出力部２８を介して環境情報データベース１８に記憶されている画像情報を動作指令部２７が取得する。
【０１７０】
次に、環境情報取得部１９より、現在の画像情報を動作指令部２７が取得して、画像マッチングにより、前記取得した２つの画像を動作指令部２７で比較する。２つの画像が合致したと動作指令部２７で判断した場合には、「動作ＩＤ」が「３」の動作で記憶されている動作を実行すべき動作として動作指令部２７で選択する。
【０１７１】
動作指令部２７で選択された動作が複数存在する場合は（この例では「動作ＩＤ」が「２」の動作と「３」の動作）、選択された複数の動作を制御ルールデータベース１６に記憶されている順に、それぞれの動作情報のフラグに応じて、最終的に実行すべき動作を、動作指令部２７の動作算出部２により算出する。
【０１７２】
この例では、「動作ＩＤ」が「２」の動作と「３」の動作とが動作指令部２７で選択されており、図１０Ｂの制御ルールデータベース１６の「動作ＩＤ」には「２」の動作、「３」の動作の順に記憶されている。従って、「動作ＩＤ」が「２」の動作の動作情報のフラグが、図５Ｃより０〜５ビット目が「１」であるので、「動作ＩＤ」が「２」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，ｚ，φ，θ，ψ）を動作指令部２７で取得する。次に、「動作ＩＤ」が「３」の動作のフラグは、０，１ビット目のみ「１」であるので、「動作ＩＤ」が「２」の動作の位置姿勢情報（ｘ，ｙ，ｚ，φ，θ，ψ）のうち、（ｘ、ｙ）成分のみ「動作ＩＤ」が「３」の動作の値に置き換えて動作指令部２７で算出する。例えば、「キー動作ＩＤ」が「１０」のキー動作の位置姿勢は、（０．１，０．１，０．４，０，０，０）であり、「動作ＩＤ」が「３」の動作の「キー動作ＩＤ」が「２０」のキー動作の位置姿勢は、（０．３，０．３，０．４，０，０，０）であるので、「キー動作ＩＤ」が「１０」のキー動作の位置姿勢は、（０．１，０．１，０．４，０，０，０）のｘ成分及びｙ成分のみ、「キー動作」が「２０」のキー動作の位置姿勢（０．３，０．３，０．４，０，０，０）を動作指令部２７で置き換えることで、最終の位置姿勢は、（０．３，０．３，０．４，０，０，０）となる。同様に「キー動作ＩＤ」が「１１」のキー動作のｘ成分及びｙ成分を「キー動作ＩＤ」が「２１」のキー動作で動作指令部２７で置き換え、以降、「キー動作ＩＤ」の終わりまで順次動作指令部２７で算出する。
【０１７３】
動作指令部２７により、フラグについては、「動作ＩＤ」が「２」の動作と「３」の動作とのそれぞれのビットにおいて、どちらかのビットに「１」の場合には、算出後のフラグのビットを「１」にするとともに、両方とも「０」の場合には、「０」とする。ただし、位置と力のそれぞれの成分はどちらかにしか「１」とならないため（位置制御モード若しくは力制御モードのどちらかでしか作動しないため）、位置と力の両方に「１」となった場合には、力を優先する。よって、「動作ＩＤ」が「２」の動作のフラグは、０〜５ビット目が「１」であり、「動作ＩＤ」が「３」の動作は０、１ビット目が「１」であるので、０〜５ビット目が「１」となる。「動作ＩＤ」が「２」の動作と「３」の動作との動作パラメータフラグは、両方とも０，１，２ビット目が「１」であるので、算出後の動作パラメータフラグも０，１，２ビット目が「１」となり、その他は「０」となる。
【０１７４】
算出後の動作情報をフラグに応じて制御モードを動作指令部２７で切り替えて、動作情報を動作指令部２７から制御パラメータ管理部２１へ出力することで、算出した動作を制御部２２で実行することが可能となる。
【０１７５】
（制御装置本体部１１）
制御装置本体部１１は、制御パラメータ管理部２１と、制御部２２とを有する。制御部２２と制御パラメータ管理部２１との間では、ロボットアーム５の手先位置又は力の情報などが入出力される。この制御装置本体部１１は、動作情報取得部の一例であるデータベース入出力部２８で取得した動作情報に設定された力で作業対象物に対してロボットアーム５が力制御を行なうようロボットアーム５を力制御モードで制御する力制御部として機能することができる。
【０１７６】
−制御パラメータ管理部−
制御パラメータ管理部２１は、動作補正部２０又は動作指令部２７の指示に基づいて、設定された制御モードに従ってロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２による制御の下にロボットアーム５を動作させる。さらに、制御パラメータ管理部２１は、制御部２２からロボットアーム５の手先位置又は力の情報などを取得して動作補正部２０へ出力する。
【０１７７】
制御パラメータ管理部２１の詳細を説明する。
制御パラメータ管理部２１は、動作補正部２０又は動作指令部２７の指示に基づいて、ロボットアーム５の制御モードを切り替える設定信号を出力する。
それぞれの制御モードは、動作補正部２０又は動作指令部２７にて、動作情報データベースのフラグにより決定し、制御モードを切り替える設定信号を制御パラメータ管理部２１へ出力する。
【０１７８】
制御モードは、（ｉ）位置制御モードと、（ｉｉ）インピーダンス制御モードと、（ｉｉｉ）ハイブリッドインピーダンス制御モードと、（ｉｖ）力制御モードと、（ｖ）力ハイブリッドインピーダンス制御モードと、（ｖｉ）高剛性位置制御モードとのうち、いずれかの制御方法のモードである。
【０１７９】
また、制御パラメータ管理部２１は、（ｉｉｉ）インピーダンス制御モード、（ｉｖ）ハイブリッドインピーダンス制御モード、及び、（ｖ）力ハイブリッドインピーダンス制御モードにおける機械インピーダンス設定値の設定を行う。また、制御パラメータ管理部２１は、後述するインピーダンス計算部５１で出力する手先位置、姿勢目標補正出力ｒｄ△の設定、及び、目標軌道生成部５５への動作情報の設定を行う。
【０１８０】
−制御モードの切替動作−
各制御モードについて説明する。
【０１８１】
（ｉ）位置制御モード
位置制御モードは、後述する目標軌道生成部５５の手先位置と姿勢と時間とに関する情報に基づいて、ロボットアーム５が作動するモードである。
【０１８２】
この位置制御モードは、人４Ａがロボットアーム５に力を加えてもロボットアーム５は移動しないように、ロボットアーム５の動作を制御するモードである。例えば、かき混ぜ作業又は拭き掃除作業などの作業を行うためにロボットアーム５が動作する場合に用いるモードである。ただし、柔構造のロボットアーム５の場合は、機械的に柔らかい機構であるため、位置制御モードに設定していても、人４Ａがロボットアーム５に加えた力でロボットアーム５が若干移動する場合がある。これに対して、後述する高剛性位置制御モードは、人４Ａがロボットアーム５に加えた力では、ロボットアーム５が絶対に動かないように制御するモードである。
【０１８３】
（ｉｉ）インピーダンス制御モード
インピーダンス制御モードは、人４Ａなどからロボットアーム５に加わる力（具体的には、力検出部５３で検出された力）に応じて、ロボットアーム５が作動するようにロボットアーム５の動作を制御するモードである。例えば、図８に示すように、人４Ａが手４でロボットアーム５を直接持ち、ロボットアーム５の手先の位置姿勢を教示する場合に用いるモードである。
【０１８４】
（ｉｉｉ）ハイブリッドインピーダンス制御モード
ハイブリッドインピーダンス制御モードは、ロボットアーム５が位置制御モードで動作しているときに、力検出部５３で検出された力に応じて、ロボットアーム５が作動するようにロボットアーム５の動作を制御するモードである。例えば、図１３Ａに示すように、ロボットアーム５が位置制御モードによるかき混ぜ業を行っているときに、人４Ａが鍋３ａの中の底側の部分をかき混ぜるようにロボットアーム５の動作を補正したい場合に用いるモードである。ハイブリッドインピーダンス制御モードを行うことにより、図１３Ｄに示すように、人４Ａがロボットアーム５を把持して、鍋３ｂの底面沿い方向に力をかけることで、水平方向に大きくかき混ぜる動作に補正することができる。
【０１８５】
（ｉｖ）力制御モード
力制御モードは、動作補正部２０から制御パラメータ管理部２１へ設定された力で、ロボットアーム５を用いて作業対象物（作業用治具、例えば、レードル９又は拭き掃除用モップ若しくはスポンジ４６、又は、電動ドライバ器具７２、又はフレキシブル基板７４）を作業対象面（例えば、鍋底、又は、掃除対象面、又は、器具７１のネジ穴７１ａにネジ７３を取り付けるときの作業対象面）に押し付けながらかき混ぜ動作又は拭き掃除動作又はネジ回し動作などするようにロボットアーム５の動作を制御するモードである。図１２は、本第１実施形態におけるキッチンの拭き掃除動作を行うロボットを示す。例えば、図１２に示すようにＩＨクッキングヒーター６などの天板６ａの表面に力を加えて拭き掃除を行う場合、又は図１５に示すように、鍋３の底の部分で、レードル９により力を加えて、かき混ぜ作業を行う場合など、力を加えながら、制御する方向に使用する制御モードである。
【０１８６】
（ｖ）力ハイブリッドインピーダンス制御モード
力ハイブリッドインピーダンス制御モードは、ロボットアーム５の６軸の方向（ｘ軸，ｙ軸，ｚ軸，φ軸，θ軸，ψ軸の方向）別に、（ｉｉｉ）ハイブリッドインピーダンス制御モード、（ｉｉ）インピーダンス制御モード、（ｉ）位置制御モード、を切り替えるとともに、指定した力を作用させて動作する（ｉｉｉ）力制御モードで制御するモードである。なお、力制御モードとインピーダンス制御モードとは排他的な関係であるため、力制御モードが設定された方向にインピーダンス制御モードを設定することはできない。
【０１８７】
この力ハイブリッドインピーダンス制御モードは、例えば、図１２に示すようにＩＨクッキングヒーター６などの天板６ａの掃除面に対して、ロボットアーム５の先端のハンド３０で支持した作業用冶具９、例えば拭き掃除用モップが平行に円状に移動しながら、当該掃除面に垂直下向きに指定した力をかけて、拭き掃除をする場合に用いるモードである。具体的には、（ｘ，ｙ，ｚ，φ，θ，ψ）の６軸それぞれに、以下の制御モードを設定する。すなわち、（ｘ，ｙ）成分がハイブリッドインピーダンス制御モードで、（φ，θ，ψ）成分がインピーダンス制御モードで、ｚ軸成分が力制御モードでそれぞれ動作する力ハイブリッドインピーダンス制御モードである。このように掃除面と水平な方向はハイブリッドインピーダンス制御モードとすることで、位置制御モードで動作している最中に、人４Ａなどからロボットアーム５に加わる力に応じて、ロボットアーム５を移動させることができる。さらに、（φ，θ，ψ）成分をインピーダンス制御モードとすることで、ロボットアーム５が動作を停止している状態で人４Ａなどからロボットアーム５に加わる力に応じて、ロボットアーム５の姿勢を変更することができるようになる。また、ｚ軸成分を力制御モードに設定することで、指定された力で拭き掃除用モップを掃除面に押し付けながらロボットアーム５を動作させることができるようになる。又は、力ハイブリッドインピーダンス制御モードは、（ｘ，ｙ，ｚ，φ，θ，ψ）の６軸のうち、ｚ軸成分が力制御モードで、その他の軸は位置制御モードで動作させる制御モードであっても良い。その場合は、衝突など不用意な力がロボットアーム５に加わっても、位置制御成分を誤って移動させることはない。
【０１８８】
（ｖｉ）高剛性位置制御モード
高剛性位置制御モードは、ロボットアーム５の動作中の位置制御モードをさらに高剛性にした制御モードである。具体的には、後述する位置誤差補償部５６でのゲインを大きくすることで実現する。人４Ａがロボットアーム５に力をかけても、高剛性位置制御モードは、ロボットアーム５を容易に移動させることができず、接触面からの抗力の影響をロボットアーム５が受けないため、人４Ａがロボットアーム５にかけた力を正しく検出できる。
【０１８９】
これらの制御モード（ｉ）〜（ｖｉ）は、ロボットアーム５の動作の際に、ロボットアーム５の方向及び姿勢別にそれぞれ適切な制御モードを設定して動作させる。
さらに、（ｉｉｉ）ハイブリッドインピーダンス制御モード又は（ｖ）力ハイブリッドインピーダンスモードでロボットアーム５が動作中に、補正するパラメータに応じて、機械インピーダンス設定値又はインピーダンス計算部５１で出力する手先位置及び姿勢目標補正出力ｒｄ△の設定を制御パラメータ管理部２１により変更する。
【０１９０】
機械インピーダンス設定値の設定パラメータとしては、慣性Ｍと粘性Ｄと剛性Ｋとがある。機械インピーダンス設定値の各パラメータの設定は、補正値を使って、以下の評価式に基づいて行う。
【０１９１】
【数１】
2011036865.tif 000095
【０１９２】
【数２】
2011036865.tif 000096
【０１９３】
【数３】
2011036865.tif 000097
【０１９４】
前記式（３）〜（５）中のＫＭ、ＫＤ、ＫＫはそれぞれゲインであり、それぞれある定数値である。
【０１９５】
制御パラメータ管理部２１は、前記式（３）〜（５）に基づき計算した機械インピーダンス設定値の慣性Ｍと粘性Ｄと剛性Ｋとを制御部２２へ出力する。
【０１９６】
前記式（３）〜（５）により、ロボットアーム５のｘ軸及びｙ軸以外の位置成分及び姿勢成分が簡単に動かせると、ロボットアーム５の動作の補正作業が行ないにくくなる。そこで、制御パラメータ管理部２１は、ロボットアーム５のｘ軸及びｙ軸以外の位置成分及び姿勢成分についてのみ、上記補正値を高く（例えば、上記補正値の約１０倍）設定し、ロボットアーム５の粘性Ｄ及び剛性Ｋが大きくなるように設定する。この結果、ロボットアーム５の動きに抵抗感又は硬さが生じ、ロボットアーム５がそのｘ軸及びｙ軸以外の位置成分及び姿勢成分について動きにくくなる。例えば図１３Ｄに示すように、人４Ａがロボットアーム５のハンド３０で把持されたレードル９を使用して、鍋３ｂのサイズに合わせて大きくかき混ぜるよう動作を補正させたい場合に、このような設定を適用することができる。
【０１９７】
又は、別の方法として、インピーダンス計算部５１から出力される手先位置及び姿勢目標補正出力ｒｄ△の各成分のうち、ｘ軸及びｙ軸以外の値を、制御パラメータ管理部２１により、全て０にする方法がある。これによって、ｘ軸及びｙ軸以外は、人４Ａの力でロボットアーム５が移動できなくなるため、誤操作を防ぐことができる。
【０１９８】
制御パラメータ管理部２１は、動作補正部２０に、ロボットアーム５の手先位置及び姿勢と、ロボットアーム５に対して人４Ａの加えた力の情報（ロボットアーム５に作用する人４Ａの力に関する情報)とを出力する必要がある。そのため、制御部２２から制御パラメータ管理部２１にロボットアーム５の手先位置及び力の情報を受けると、制御パラメータ管理部２１は、動作補正部２０へ出力する。また、動作補正部２０及び動作指令部２７から制御パラメータ管理部２１に入力された、位置及び姿勢と時間などの動作情報を制御パラメータ管理部２１から制御部２２へ出力する。
【０１９９】
−制御部−
次に、制御部２２の詳細について、図４を用いて説明する。図４は、本第１実施形態のロボットアームの制御装置７０の制御部２２の詳細を示す。制御部２２は、目標軌道生成部５５と、ハンド制御部５４と、力検出手段の一例としての力検出部５３と、インピーダンス計算部５１と、位置制御部５９と、位置誤差計算部８０とを有する。位置制御部５９は、位置誤差補償部５６と、近似逆運動学計算部５７と、順運動学計算部５８とを有して、動作情報取得部の一例としてのデータベース入出力部２８で取得した動作情報に基づいてロボットアーム５を移動するよう位置制御モードでロボットアーム５を制御することができる。力検出部５３は、図４では制御部２２の一部として図示しているが、制御部２２とは別の構成としてもよい。
【０２００】
制御部２２は、制御パラメータ管理部２１で設定された制御モードで動作し、さらに制御モードに応じて、慣性Ｍと粘性Ｄと剛性Ｋとの設定値に基づき設定されたロボットアーム５の機械インピーダンス設定値に、ロボットアーム５の機械インピーダンスの値を制御する。
【０２０１】
制御部２２は、入出力ＩＦ２４を介してロボットアーム５との制御信号などの信号のやり取りを行うが、図４では、制御部２２とロボットアーム５とのデータ信号のやり取りとして簡略化した図とする。
【０２０２】
ロボットアーム５のそれぞれの関節部に設けた各関節軸のエンコーダ４４により計測された関節角の現在値（関節角度ベクトル）ベクトルｑ＝［ｑ１，ｑ２，ｑ３，ｑ４，ｑ５，ｑ６］Ｔが出力され、入出力ＩＦ２４により制御部２２に取り込まれる。ここで、ｑ１，ｑ２，ｑ３，ｑ４，ｑ５，ｑ６は、それぞれ、第１関節部３５、第２関節部３６、第３関節部３７、第４関節部３８、第５関節部３９、第６関節部４０の関節角度である。
【０２０３】
目標軌道生成部５５は、制御パラメータ管理部２１から入力された動作情報（具体的には、ロボットアーム５の手先位置、姿勢、時間）に基づいて、ロボットアーム５の目標とする手先位置及び姿勢目標ベクトルｒｄを生成する。目標軌道生成部５５は、生成した手先位置及び姿勢目標ベクトルｒｄを位置誤差計算部８０に出力する。
【０２０４】
具体的には、目標軌道生成部５５は、制御パラメータ管理部２１からの制御モード設定信号及び動作情報に基づき、各制御モードでロボットアーム５を動作するように、動作目標とする手先の位置及び姿勢目標ベクトルｒｄと力目標ベクトルｆｄとを生成する。
【０２０５】
具体的には、目標とするロボットアーム５の動作は、目的とする作業に応じて動作指令部２７からそれぞれの時間（ｔ＝０、ｔ＝ｔ１、ｔ＝ｔ２、・・・）でのポイント毎の位置及び姿勢（ｒｄ０、ｒｄ１、ｒｄ２、・・・）の情報と、力（ｆｄ０、ｆｄ１、ｆｄ２、・・・）の情報とが与えられている。
【０２０６】
目標軌道生成部５５は、多項式補間を使用し、前記各ポイント間の軌道を補間し、手先位置及び姿勢目標ベクトルｒｄと力目標ベクトルｆｄとを生成する。
目標軌道生成部５５は、（ｉ）位置制御モード、（ｉｉｉ）インピーダンス制御、（ｉｖ）ハイブリッドインピーダンス制御モード、（ｖ）力ハイブリッドインピーダンス制御モード、又は（ｖｉ）高剛性位置制御モードで、ロボットアーム５を動作するように動作目標とする手先の位置及び姿勢目標ベクトルｒｄを生成する。
【０２０７】
目標軌道生成部５５は、生成した目標とするロボットアーム５の動作を実現するための手先位置及び姿勢目標ベクトルｒｄと力目標ベクトルｆｄとそれぞれの方向別にどのパラメータが有効かを示すフラグとが、目標軌道生成部５５から位置誤差計算部８０に出力される。
【０２０８】
目標軌道生成部５５は、動作情報に含まれる「ハンド」の開閉フラグに基づいて、後述するハンド制御部５４に、ハンド３０の開閉指令を出す。
【０２０９】
ハンド制御部５４は、目標軌道生成部５５から入力された開閉フラグに基づいて、ハンド開閉駆動用のモータ６２を駆動してハンド３０を開閉するように、入出力ＩＦ２４を介してロボットアーム５のハンド開閉駆動用のモータ６２に指令を出す。
【０２１０】
力検出部５３は、力検出手段の一例として機能し、人４Ａ等とロボットアーム５との接触によってロボットアーム５に加わる外力Ｆｅｘｔを検出して、検出した力の情報をインピーダンス計算部５１と環境情報取得部１９と制御パラメータ管理部２１（制御パラメータ管理部２１を介して動作司令部２７）とに出力する。ただし、ロボットアーム５の手先(ハンド３０)に質量ｍの物体（たとえば、作業用冶具９）を把持して又は取り付けて作業している場合は、力検出部５３で検出したＦｅｘｔからｍｇを力検出部５３で予め減じておく。ここで、ｇは重力加速度である。把持物体（たとえば、作業用冶具９）の質量ｍの値は、物体を把持する（たとえば、作業用冶具９を取り付ける）前に、人４Ａが、外部入力装置２６ａからデータ入力ＩＦ２６を介して力検出部５３に入力できる（図４参照）。また、把持物体（たとえば、作業用冶具９，４６，７２又はフレキシブル基板７４など）である作業対象物の識別番号、質量、形状、寸法、及び、色などの物品情報を物品データベース（図示せず）に記憶しておき、物品認識装置（図示せず）が、作業対象物に備えられたタグなどの識別情報を読み取り、読み取られた識別情報を基に物品データベースに記憶された情報を参照して、対応する作業対象物の質量を取得することも可能である。
【０２１１】
力検出部５３は、モータドライバ２５の電流センサで計測された、ロボットアーム５の各関節部を駆動するモータ４３を流れる電流値ｉ＝［ｉ１，ｉ２，ｉ３，ｉ４，ｉ５，ｉ６］Ｔを、入出力ＩＦ２４を介して取得する。また、力検出部５３には、各エンコーダ４４で計測された関節角の現在値ｑが入出力ＩＦ２４を介して取り込まれるとともに、後述する近似逆運動学計算部５７からの関節角度誤差補償出力ｕｑｅが取り込まれる。力検出部５３は、オブザーバーとして機能し、前記電流値ｉと、関節角の現在値ｑと関節角度誤差補償出力ｕｑｅとに基づいて、ロボットアーム５に加わる外力により各関節部に発生するトルクτｅｘｔを算出する。
【０２１２】
そして、力検出部５３は、式：Ｆｅｘｔ＝Ｊｖ（ｑ）−Ｔτｅｘｔ−［０，０，ｍｇ］Ｔによりロボットアーム５の手先における等価手先外力Ｆｅｘｔに換算して、この等価手先外力Ｆｅｘｔをインピーダンス計算部５１に出力する。ここで、Ｊｖ（ｑ）は、
【０２１３】
【数４】
2011036865.tif 000098
【０２１４】
を満たすヤコビ行列である。ただし、ｖ＝［ｖｘ，ｖｙ，ｖｚ，ωｘ，ωｙ，ωｚ］Ｔであり、（ｖｘ，ｖｙ，ｖｚ）は手先座標系４２でのロボットアーム５の手先の並進速度、（ωｘ，ωｙ，ωｚ）は手先座標系４２でのロボットアーム５の手先の角速度である。また、ｍはハンド３０で把持している把持物体（又はハンド３０に取り付けられた作業用冶具９）の質量であり、ｇは重力加速度である。また、ロボットアーム５のハンド３０による物体の把持又は取付を実際に行い、そのときの力検出部５３の等価手先外力Ｆｅｘｔの推定結果に基づいて把持物体（又はハンド３０に取り付けられた作業用冶具９）の質量ｍの値を算出する事も可能である。物体を把持しない場合はｍ＝０として算出する。
【０２１５】
インピーダンス計算部５１は、制御パラメータ管理部２１から制御モードの設定信号及び機械インピーダンス設定値を受け取り、前記機械インピーダンス設定値にロボットアーム５の機械インピーダンス値を制御する。制御パラメータ管理部２１から（ｉ）位置制御モードの設定信号をインピーダンス計算部５１が受け取った場合は、機械インピーダンス値として“０”をインピーダンス計算部５１から位置誤差計算部８０に出力する。制御パラメータ管理部２１から（ｉｉｉ）インピーダンス制御モード及び（ｉｖ）ハイブリッドインピーダンス制御モードの設定信号をインピーダンス計算部５１が受け取った場合は、制御パラメータ管理部２１で設定された機械インピーダンス設定値である慣性Ｍと粘性Ｄと剛性Ｋと、エンコーダ４４で計測した関節角の現在値ｑと、力検出部５３で検出した外力Ｆｅｘｔとに基づいて、インピーダンス計算部５１は、ロボットアーム５が機械インピーダンス設定値の制御を実現するための手先位置及び姿勢目標補正出力ｒｄΔを、以下の式（６）により計算する。インピーダンス計算部５１は、計算して求められた手先位置及び姿勢目標補正出力ｒｄΔを位置誤差計算部８０に出力する。
【０２１６】
制御パラメータ管理部２１から（ｖ）力ハイブリッドインピーダンス制御モード又は（ｉｉ）力制御モードの設定信号をインピーダンス計算部５１が受け取った場合、動作制御の「フラグ」で指定された力成分が存在する場合には、制御パラメータ管理部２１で設定された機械インピーダンス設定値である慣性Ｍと粘性Ｄと剛性Ｋと、エンコーダ４４で計測した関節角の現在値ｑと、力検出部５３で検出した外力Ｆｅｘｔと、目標軌道生成部５５から出力される力ｆｄとに基づいて、インピーダンス計算部５１は、ロボットアーム５が機械インピーダンス設定値の制御を実現するための手先位置及び姿勢目標補正出力ｒｄΔを、以下の式（１０）により計算する。インピーダンス計算部５１は、計算して求められた手先位置及び姿勢目標補正出力ｒｄΔを位置誤差計算部８０に出力する。
【０２１７】
位置誤差計算部８０は、インピーダンス計算部５１から出力された手先位置及び姿勢目標補正出力ｒｄΔと、目標軌道生成部５５から出力された手先の位置姿勢目標ベクトルｒｄとを加算し、手先位置及び姿勢補正目標ベクトルｒｄｍを生成する。ただし、ハイブリッドインピーダンス制御モード時に、補正パラメータに応じて、ロボットアーム５の動作を拘束する場合に、例えばｚ軸のみロボットアーム５が動くようにするには、手先位置及び姿勢目標補正出力ｒｄΔのｚ成分以外を０にインピーダンス計算部５１で設定して、位置誤差計算部８０に出力する。
【０２１８】
【数５】
2011036865.tif 000099
ただし、
【０２１９】
【数６】
2011036865.tif 000100
【０２２０】
【数７】
2011036865.tif 000101
【０２２１】
【数８】
2011036865.tif 000102
であり、sはラプラス演算子である。
【０２２２】
【数９】
2011036865.tif 000103
ただし、
【０２２３】
【数１０】
2011036865.tif 000104
【０２２４】
は式（７）、式（８）、式（９）により算出する。
【０２２５】
位置誤差計算部８０は、さらに、手先位置及び姿勢補正目標ベクトルｒｄｍと、後述する順運動学計算部５８により計算される手先位置及び姿勢ベクトルｒとの誤差ｒｅを求め、求められた誤差ｒｅを位置誤差補償部５６に出力する。
【０２２６】
順運動学計算部５８には、ロボットアーム５の各関節部の各関節軸のエンコーダ４４からエンコーダ４４で計測された関節角の現在値ｑである関節角度ベクトルｑが、入出力ＩＦ２４を介して入力される。順運動学計算部５８は、ロボットアーム５の関節角度ベクトルｑから、手先位置及び姿勢ベクトルｒへの変換の幾何学的計算を行う。順運動学計算部５８で計算された手先位置及び姿勢ベクトルｒは、位置誤差計算部８０及びインピーダンス計算部５１及び目標軌道生成部５５に出力される。
【０２２７】
位置誤差補償部５６は、位置誤差計算部８０で求められた誤差ｒｅに基づいて、位置誤差補償出力ｕｒｅを近似逆運動学計算部５７に出力する。
具体的には、位置誤差補償出力ｕｒｅは、
【０２２８】
【数１１】
2011036865.tif 000105
【０２２９】
により計算される。ここで、Ｋｐは比例ゲイン行列、ＫＩは積分ゲイン行列、ＫＤは微分ゲイン行列であり、その対角成分が手先位置ベクトルｒｅ = [ｘ、ｙ、ｚ、φ、θ、ψ]Tの各成分に対するゲインで構成される対角行列である。
【０２３０】
さらに、位置誤差補償部５６では、高剛性位置制御モードが設定された際に、比例ゲイン行列Ｋｐ、積分ゲイン行列ＫＩ、微分ゲイン行列ＫＤをあらかじめ設定された値に大きく設定する。ここで、高剛性とは、通常の位置制御と比較して剛性が高くなることを意味し、具体的には、通常の位置制御モードと比較して大きな値を設定する。例えば、通常の位置制御モード時の２倍程度の値に設定すると、剛性を約２倍まで高くすることができる。
【０２３１】
このようにすることで、高剛性の位置制御を実現することができる。なお、前記ゲインを各成分毎に値を変えることで、例えば、ｚ軸方向のみ高剛性で、その他の方向は通常の位置制御で動作するよう制御することができる。
【０２３２】
近似逆運動学計算部５７は、位置誤差補償部５６から入力される位置誤差補償出力ｕｒｅとロボットアーム５において計測される関節角度ベクトルｑとに基づいて、近似式ｕｏｕｔ＝Ｊｒ（ｑ）−１ｕｉｎにより、逆運動学の近似計算を行う。ただし、Ｊｒ（ｑ）は、
【０２３３】
【数１２】
2011036865.tif 000106
【０２３４】
の関係を満たすヤコビ行列であり、ｕｉｎは近似逆運動学計算部５７への入力であり、ｕｏｕｔは近似逆運動学計算部５７からの出力であり、入力ｕｉｎを関節角度誤差ｑｅとすれば、ｑｅ＝Ｊｒ（ｑ）−１ｒｅのように手先の位置姿勢誤差ｒｅから関節角度誤差ｑｅへの変換式となる。
【０２３５】
従って、位置誤差補償部５６から位置誤差補償出力ｕｒｅが近似逆運動学計算部５７に入力されると、近似逆運動学計算部５７からの出力として、関節角度誤差ｑｅを補償するための関節角度誤差補償出力ｕｑｅが近似逆運動学計算部５７から入出力ＩＦ２４を介してロボットアーム５のモータドライバ２５に出力される。
【０２３６】
関節角度誤差補償出力ｕｑｅは、入出力ＩＦ２４のＤ／Ａボードを介してロボットアーム５のモータドライバ２５に電圧指令値として与えられ、各モータ４３により各関節軸が正逆回転駆動されロボットアーム５が動作する。
【０２３７】
（ロボットアーム５のインピーダンス制御動作の原理）
以上のように構成される制御部２２に関して、ロボットアーム５のインピーダンス制御動作の原理について説明する。
【０２３８】
インピーダンス制御動作（ハイブリッドインピーダンス制御も同様）の基本は、位置誤差補償部５６による手先の位置姿勢誤差ｒｅのフィードバック制御（位置制御）であり、図４の点線で囲まれた部分が位置制御部５９になっている。位置誤差補償部５６として、例えば、ＰＩＤ補償器を使用すれば、手先位置及び姿勢誤差ｒｅが０に収束するように位置制御部５９による制御が働き、目標とするロボットアーム５のインピーダンス制御動作を実現できる。
【０２３９】
（ｉｉｉ）インピーダンス制御モードと、（ｉｖ）ハイブリッドインピーダンス制御モードと、（ｖ）力ハイブリッドインピーダンス制御モードとの場合、位置誤差計算部８０は、インピーダンス計算部５１からの手先位置及び姿勢目標補正出力ｒｄΔを加算し、位置制御部５９に対して手先位置及び姿勢の目標値の補正を行う。このため位置制御部５９は、手先位置及び姿勢の目標値が本来の値より微妙にずれることになり、結果的に、ロボットアーム５の機械インピーダンスの値を前記適切に設定された設定値に制御でき、位置制御部５９の位置制御動作を補正できる。
【０２４０】
手先位置及び姿勢目標補正出力ｒｄΔは、（ｉｉ）インピーダンス制御モードと、（ｉｉｉ）ハイブリッドインピーダンス制御モードとの場合は式（６）により算出され、（ｖ）力ハイブリッドインピーダンス制御モードの場合は式（１０）による算出されるため、ロボットアーム５の慣性Ｍと粘性Ｄと剛性Ｋとの機械インピーダンスの値を設定された設定値に制御できる。
【０２４１】
（制御部２２の動作ステップ）
本第１実施形態の制御部２２の動作ステップについ説明する。図１６は、本第１実施形態の制御部２２の動作フローチャートである。
ロボットアーム５の各関節部のエンコーダ４４により計測された関節角度ベクトルｑが、入出力ＩＦ２４を介して、制御装置本体部１１の制御部２２に取り込まれる(ステップＳ１)。
【０２４２】
次に、制御部２２に取り込まれた関節角度ベクトルｑに基づいて、近似運動学計算部５７は、ロボットアーム５の運動学計算に必要なヤコビ行列Ｊｒ等の計算を行う (ステップＳ２)。ここでは、制御動作始動時のため、位置誤差補償部５６から入力される位置誤差補償出力ｕｒｅは、“０”値として近似運動学計算部５７で計算する。
【０２４３】
次に、順運動学計算部５８は、ロボットアーム５の各エンコーダ４４から計測された関節角度ベクトルｑから、ロボットアーム５の現在の手先位置及び姿勢ベクトルｒを計算して、計算した現在の手先位置及び姿勢ベクトルｒを、順運動学計算部５８から位置誤差計算部８０と目標軌道生成部５５とインピーダンス計算部５１とに出力する（ステップＳ３）。
【０２４４】
次に、動作指令部２７及び動作補正部２０から制御パラメータ管理部２１を介して入力された動作情報に基づき、目標軌道計算部５５は、ロボットアーム５の手先位置及び姿勢目標ベクトルｒｄ及び力目標ベクトルｆｄを計算し、インピーダンス制御モード時は、ロボットアーム５の手先位置を、目標とする手先位置及び姿勢目標ベクトルｒｄ及び力目標ベクトルｆｄとして位置誤差計算部８０に出力する（ステップＳ４）。
【０２４５】
次に、力検出部５３は、モータ４３の駆動電流値ｉと、関節角度ベクトルｑと、関節角度誤差補償出力ｕｑｅとに基づいて、ロボットアーム５の手先における等価手先外力Ｆｅｘｔを計算して、計算された等価手先外力Ｆextをインピーダンス計算部５１と環境情報取得部１９と制御パラメータ管理部２１とに出力する（ステップＳ５）。
【０２４６】
次に、制御パラメータ管理部２１は、各成分毎に制御モードの切り替えを実行する（ステップＳ６）。
このステップＳ６において、制御モードのそれぞれの成分において、（ｖｉ）高剛性位置制御モードの場合はステップＳ７に進み、（ｉ）位置制御モードの場合はステップＳ８に進み、（ｉｖ）力制御モードの場合は、ステップＳ９に進む。
【０２４７】
また、ステップＳ６において、（ｖ）力ハイブリッドインピーダンス制御モード又はハイブリッドインピーダンス制御モードの場合は、ロボットアーム５の回転軸のうち、変更したい位置成分を（ｉｉ）インピーダンス制御モードに変更するために、ステップＳ９に進む。
【０２４８】
具体的には、制御パラメータ管理部２１において、動作補正部２０により「補正有り」と指示され且つ補正パラメータで６軸のうち力成分を補正する場合は、力成分が設定された成分は高剛性位置制御モードに制御モードを切り替えられる（ステップＳ６）。その後、ステップＳ７へ進む。
【０２４９】
また、ステップＳ６では、制御パラメータ管理部２１において、力ハイブリッドインピーダンス制御モード又はハイブリッドインピーダンス制御モードが設定されている場合には、６軸のうち位置成分を補正する場合は、変更したい位置成分をインピーダンス制御モードに変更する。その後、ステップＳ９へ進む。
【０２５０】
また、ステップＳ６では、制御パラメータ管理部２１において、位置制御モードが設定されている場合には、ステップＳ８へ進む。ステップＳ８で、位置制御モードを設定する。若しくは、ステップＳ６で制御パラメータ管理部２１において、力制御モードが設定されている場合には、ステップＳ９へ進み、ステップＳ９で力制御モードを設定する。
【０２５１】
制御パラメータ管理部２１により高剛性位置制御モードに設定された場合、インピーダンス計算部５１は、手先位置及び姿勢目標補正出力ｒｄΔを０ベクトルとする（ステップＳ７）。その後、ステップＳ１０に進む。
位置誤差補償部５６の定数の対角行列である比例、微分、積分の３つのゲインを調整することにより、位置誤差ｒｅが０に収束するように位置誤差補償部５６の制御が働く。そのゲインを、ある値まで大きくすることで、高剛性の位置制御を実現する（ステップＳ１０）。その後、ステップＳ１２に進む。
【０２５２】
制御パラメータ管理部２１により位置制御モードが設定された場合、インピーダンス計算部５１は、手先位置及び姿勢目標補正出力ｒｄΔを０ベクトルとする（ステップＳ８）。その後、ステップＳ１１に進む。
【０２５３】
制御パラメータ管理部２１により、インピーダンス制御モード若しくは力制御モードが設定された場合、インピーダンス計算部５１は、制御パラメータ管理部２１において設定された機械インピーダンス設定値の慣性Ｍと粘性Ｄと剛性Ｋと、関節角度ベクトルｑと、力検出部５３により計算されたロボットアーム５に加わる等価手先外力Ｆｅｘｔとから、手先位置及び姿勢目標補正出力ｒｄΔが、インピーダンス計算部８０により計算される。さらに、補正パラメータに基づいて、手先位置及び姿勢目標補正出力ｒｄΔのいずれか成分の値を０に設定する（ステップＳ９）。その後、ステップＳ１１に進む。
【０２５４】
位置誤差補償部５６は、手先位置及び姿勢目標ベクトルｒｄと手先位置及び姿勢目標補正出力ｒｄΔとの和である手先位置及び姿勢補正目標ベクトルｒｄｍと、現在の手先位置及び姿勢ベクトルｒとの差である手先位置及び姿勢の誤差ｒｅを計算する（ステップＳ１１）。位置誤差補償部５６の具体例としては、ＰＩＤ補償器が考えられる。定数の対角行列である比例、微分、積分の３つのゲインを調整することにより、位置誤差ｒｅが０に収束するように位置誤差補償部５６の制御が働く。その後、ステップＳ１２に進む。
【０２５５】
近似逆運動学計算部５７は、ステップＳ２で計算したヤコビ行列Ｊｒの逆行列を位置誤差補償出力ｕｒｅに乗算することにより、位置誤差補償出力ｕｒｅを、手先位置及び姿勢の誤差に関する値から関節角度の誤差に関する値である関節角度誤差補償出力ｕｑｅが得られるように計算する（ステップＳ１２）。
【０２５６】
次に、関節角度誤差補償出力ｕｑｅが、近似逆運動学計算部５７から入出力ＩＦ２４を通じ、モータドライバ２５に与えられる。モータドライバ２５は、関節角度誤差補償出力ｕｑｅに基づき、ロボットアーム５の関節部のそれぞれのモータ４３を流れる電流量を変化させる。この電流量の変化により、ロボットアーム５のそれぞれの関節部のモータ駆動制御を行い（ステップＳ１３）、ロボットアーム５の動作を行う。
【０２５７】
以上のステップＳ１からステップＳ１３が制御の計算ループとして繰り返し実行されることにより、ロボットアーム５の動作の制御、すなわち、ロボットアーム５の機械インピーダンスの値を所定の設定値に制御する動作を実現することができる。
【０２５８】
（環境情報を考慮した制御ルール作成のための動作と環境情報を考慮した実際の動作フロー）
ロボットアーム５の制御装置における、環境情報を考慮した制御ルール作成のための動作と環境情報を考慮した実際の動作フローとについて説明する。
【０２５９】
図１７Ａは、本第１実施形態におけるロボットアーム５の制御装置における、ロボットアーム５の動作フローチャートを示す。
人４Ａは、外部入力装置２６ａにより、制御ルールデータベース１６の作業の中からロボットアーム５に実行させたい作業を選択し、データ入力ＩＦ２６を介して、前記選択された作業に対応する「作業ＩＤ」の選択指令を動作指令部２７に入力する（ステップＳ５０）。
【０２６０】
次に、動作指令部２７に入力された前記選択指令に基づいて、動作指令部２７は、データベース入出力部２８を介して制御ルールデータベース１６を参照して、前記選択した「作業ＩＤ」に関する「動作ＩＤ」を特定する。そして、動作指令部２７は、前記特定した「動作ＩＤ」の情報に基づいて、データベース入出力部２８を介して動作情報データベース１７を参照し、動作情報データベース１７に記憶された「動作ＩＤ」に従ってロボットアーム５の動作手順を設定する（ステップＳ５１）。
【０２６１】
次に、人４Ａが、データ入力ＩＦ２６を使用して、前記選択した作業についての動作開始の指令を動作指令部２７に入力すると、その動作開始指令を動作指令部２７が受けて、データベース入出力部２８を介して、制御パラメータ管理部２１へ、設定した制御モードで動作するよう指令を出す。制御パラメータ管理部２１は、設定した制御モードでロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２の制御の下にロボットアーム５を動作させる（ステップＳ５２）。
以上が、通常のロボットアーム５の制御動作フローである。
【０２６２】
（環境情報の変化を考慮した場合の、ロボットアーム５の制御動作フロー）
次に、環境情報の変化を考慮した場合の、ロボットアーム５の制御動作フローを説明する。
【０２６３】
図１７Ｂは、本第１実施形態におけるロボットアーム５の制御装置における、環境情報を考慮した制御ルール作成のための動作フローチャートを示す。
上記ロボットアーム５の動作中に、人４Ａがロボットアーム５を操作して、環境変化通知操作の開始の指令の入力を、データ入力ＩＦ２６を介して、動作指令部２７に行う（ステップＳ５３）。動作指令部２７に環境変化通知操作の開始の命令が入力されると、動作指令部２７により、ロボットアーム５の動作を停止させる。
【０２６４】
次に、人４Ａがロボットアーム５を把持して、前記制御装置に環境変化を通知するために、人４Ａが力をロボットアーム５にかけることで、データ入力ＩＦ２６から動作指令部２７を介して、動作補正部２０が環境変化通知操作の動作情報を取得する。具体的には、人４Ａが補正を開始した時点から終了する時点までのロボットアーム５の手先位置及び姿勢の情報を、データ入力ＩＦ２６から動作指令部２７を介して、動作補正部２０で取得し、制御ルール生成部２３へ環境変化通知操作の動作情報として出力する（ステップＳ５４）。
【０２６５】
次に、環境情報取得部１９により、ロボットアーム５が作用する環境に関する情報又はロボットアーム５が作動する周辺の環境に関する情報（環境情報）を取得する（ステップＳ５５）。
【０２６６】
次に、人４Ａの環境変化通知操作が終了すると、人４Ａが、データ入力ＩＦ２６を介して、環境変化通知操作の終了情報を動作指令部２７へ出力する（ステップＳ５６）。環境変化通知操作の終了情報が動作指令部２７へ出力されると、動作指令部２７から制御ルール生成部２３への環境変化通知操作の動作情報の出力が停止される。
【０２６７】
次に、ロボットアーム５の動作中に、人４Ａがロボットアーム５を操作して、動作補正操作の開始の指令の入力を、データ入力ＩＦ２６を介して、動作指令部２７に行う（ステップＳ５７）。一例として、ステップＳ５６とステップＳ５７とにおいて、環境変化通知操作の終了情報を受け取っていなくても、動作指令部２７が、人４Ａから動作補正操作の開始の指令をデータ入力ＩＦ２６を介して受け取ると、動作指令部２７は環境変化通知操作が終了したと判断して、動作補正操作の開始のためにロボットアーム５の動作を再開して、動作補正操作を開始するようにしてもよい。
【０２６８】
次に、ロボットアーム５の動作中に人４Ａがロボットアーム５を把持して、人４Ａが補正したい方向に力をロボットアーム５にかけることで、データ入力ＩＦ２６から動作指令部２７を介して、動作補正部２０が補正情報を取得し、動作補正部２０が動作情報を補正する。具体的には、人４Ａが補正を開始した時点から終了する時点までのロボットアーム５の手先位置及び姿勢の情報をある一定時間毎(例えば０．２秒毎)に、データ入力ＩＦ２６から動作指令部２７を介して、動作補正部２０で補正情報として取得し、動作補正部２０から制御ルール生成部２３へ補正情報を出力して動作情報を補正する（ステップＳ５８）。
【０２６９】
次に、人４Ａの動作補正操作が終了すると、データ入力ＩＦ２６を介して、動作補正操作の終了情報を動作指令部２７で判断して、動作指令部２７から、動作補正部２０を介して制御ルール生成部２３への補正情報の出力を停止する（ステップＳ５９）
次に、制御ルール生成部２３は、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報に基づいて、制御ルールを生成し、データベース入出力部２８を介して制御ルールデータベース１６に記憶する（ステップＳ６０）。
【０２７０】
（ロボットアーム５の制御装置の環境情報を考慮した実際の動作フロー）
図２９は、本第１実施形態におけるロボットアーム５の制御装置の環境情報を考慮した実際の動作フローチャートを示す。
【０２７１】
人４Ａは、外部入力装置２６ａにより、制御ルールデータベース１６の作業の中からロボットアーム５に実行させたい作業を選択し、データ入力ＩＦ２６を介して、前記選択された作業に対応する「作業ＩＤ」の選択指令を動作指令部２７に入力する（ステップＳ１００）。
【０２７２】
次に、動作指令部２７に入力された前記選択指令に基づいて、動作指令部２７は、データベース入出力部２８を介して制御ルールデータベース１６を参照して、制御ルールデータベース１６において、前記選択された「作業ＩＤ」に対応して複数の「動作ＩＤ」が存在するか否かを動作指令部２７で判断する（ステップＳ１０１）。前記選択された「作業ＩＤ」に対応して複数の「動作ＩＤ」が存在すると動作指令部２７で判断された場合には、ステップＳ１０２に進む。前記選択された「作業ＩＤ」に対応する「動作ＩＤ」が１つであると動作指令部２７で判断された場合には、ステップＳ１０７に進む。
【０２７３】
ステップＳ１０２では、環境情報取得部１９により、現在動作中のロボットアーム５の周辺の環境情報を取得する。その後、ステップＳ１０３に進む。
次に、ステップＳ１０２で取得した環境情報と、前記各「動作ＩＤ」に対応する「環境ＩＤ」で参照された環境情報の比較を動作指令部２７で行う（ステップＳ１０３）。
【０２７４】
動作指令部２７での比較により、環境情報が合致した「動作ＩＤ」の個数が１個であると動作指令部２７で判断された場合には、ステップＳ１０７に進む。環境情報が合致した動作の個数が０個であると動作指令部２７で判断された場合には、ステップＳ１１２に進む。環境情報が合致した動作の個数が２個以上であると動作指令部２７で判断された場合には、ステップＳ１０５に進む。
【０２７５】
ステップＳ１０５では、動作指令部２７の動作算出部２により、合致した２個以上の動作から１つの動作情報を算出する。その後、ステップＳ１０６に進む。
ステップＳ１０６では、動作算出部２により算出した動作情報は、制御パラメータ管理部２１へ出力して、このフローを終了する。
一方、ステップＳ１０４で合致した動作が０個であると動作指令部２７で判断された場合は、動作すべき動作が無しとなり、このフローを終了するとともに、ロボットアーム５は動作を停止する（ステップＳ１１２）。
【０２７６】
また、ステップＳ１０４で合致した動作が１個であると動作指令部２７で判断された場合とステップＳ１０１で「動作ＩＤ」が１個であると動作指令部２７で判断された場合には、その「動作ＩＤ」の「環境ＩＤ」が「−１」の値であるかを動作指令部２７で判断する（ステップＳ７）。「動作ＩＤ」の「環境ＩＤ」が「−１」の値であると動作指令部２７で判断された場合には、ステップＳ１１１に進む。「動作ＩＤ」の「環境ＩＤ」が「−１」の値でないと動作指令部２７で判断された場合には、ステップＳ１０８に進む。
【０２７７】
ステップＳ１０８では、環境情報取得部１９により、現在動作中のロボットアーム５の周辺の環境情報を取得する。その後、ステップＳ１０９に進む。
ステップＳ１０９では、ステップＳ１０８で取得した環境情報と、前記１個の「動作ＩＤ」に対応する「環境ＩＤ」で参照された環境情報との比較を動作指令部２７で行う。
【０２７８】
次いで、ステップＳ１１０において、ステップＳ１０９で環境情報が合致したと動作指令部２７で判断した場合には、動作指令部２７が制御ルールデータベース１６を参照して、前記合致した「環境ＩＤ」に対応する「動作ＩＤ」で記憶されている動作情報を取得し、取得した動作情報を制御パラメータ管理部２１へ出力して、このフローを終了する（ステップＳ１１１）。
【０２７９】
ステップＳ１１０において、環境情報が合致しなかったと動作指令部２７で判断した場合には、動作すべき動作が無しとして、このフローを終了するとともに、ロボットアーム５は動作を停止する（ステップＳ１１２）。
【０２８０】
以上、図１６の動作ステップＳ１〜ステップＳ１３及び図１７Ａ〜図１７ＢのステップＳ５０〜ステップＳ６０により、制御ルールに基づいてロボットアーム５の動作中に、人４Ａがロボットアーム５を直接把持して、力をロボットアーム５にかけることで、ロボットアーム５の周辺環境の変化を通知し、さらにその環境に応じて、動作情報を補正することができる。
【０２８１】
さらに、制御ルールを新たに生成することで、図２９のステップＳ１００〜Ｓ１１２の動作指令部２７の動作により、次回同じ環境となった際に、再度、人４Ａが動作補正の操作をすることなく、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５が自律的に動作することが可能となる。
【０２８２】
（第２実施形態）
本発明の第２実施形態における、ロボットアーム５とその制御装置の基本的な構成は、第１実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
【０２８３】
図１９Ａに示すように、ロボットアーム５とロボットアーム５制御装置を備えるロボット１を使って、ＩＨクッキングヒーター６などの天板６ａを拭き掃除作業する場合を例に説明する。ロボットアーム５のハンド３０には、作業対象物の一例である拭き掃除作業用治具の一例としてのスポンジ４６が取付けられている。
まず、比較例として、本発明とは異なり、汚れが発生した場合（汚れた部分を見つけた場合）に、その都度、人４Ａが補正操作をしなければならない場合について説明する。
【０２８４】
人４Ａは、ロボットアーム５が、例えば図１０Ａの「作業ＩＤ」の「１」の作業で、図１９Ａ（図１８ＡはＩＨクッキングヒーター６の天板６ａを上方から見た図）に示すように、ＩＨクッキングヒーター６などの天板６ａをスポンジ４６で拭き掃除動作をしている最中に、人４Ａが、ＩＨクッキングヒーター６などの天板６ａ上の拭き掃除動作中の場所とは別の場所（汚れた部分）９１が汚れていることを見つけたとする。このとき、図１９Ｂ（図１８ＢはＩＨクッキングヒーター６の上方から見た図）に示すように、汚れ付近をスポンジ４６で掃除するために、人４Ａが手４でロボットアーム５を把持して、ロボットアーム５の手先位置にあるスポンジ４６を、汚れた部分９１に移動させる。
【０２８５】
次に、汚れた部分９１に対して、天板６ａの平面方向のスポンジ４６（ハンド３０）の移動速度を加速させると同時に天板６ａの汚れ面に対してはスポンジ４６で強めに擦るために、人４Ａが動作中のロボットアーム５を把持して、天板６ａの平面方向は加速させて移動させながら、さらに、人４Ａが、ＩＨクッキングヒーター６の上方から下向きに汚れた部分９１に向かって力をロボットアーム５に加える。
【０２８６】
この結果、ロボットアーム５のＩＨクッキングヒーター６の平面方向は加速して移動しながら、ロボットアーム５は、さらに、ＩＨクッキングヒーター６の擦る力を強めて、拭き掃除作業を行う。
以上のような補正は、次回同じような汚れが発生した場合（汚れた部分を見つけた場合）に、再度、人４Ａが補正操作をしなければならず、面倒であった。
【０２８７】
そこで、この第２実施形態では、人４Ａからの操作とその際の環境情報から、制御ルール生成部２３により制御ルールを生成することにより、次回同じような汚れが発生した場合には、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５が自律的に拭き掃除作業をすることができるようになる。
【０２８８】
以下、その機能について説明する。
【０２８９】
−動作指令部−
以下、動作指令部２７の機能について説明する。
人４Ａは、データ入力ＩＦ２６により、制御ルールデータベース１６の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業を選択して、動作指令部２７により動作を実行する。すなわち、人４Ａがデータ入力ＩＦ２６により図１０Ａの「作業ＩＤ」が「１」の作業が選択された場合には、動作指令部２７は、その「１」の作業に対応する「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して参照し、動作情報（具体的には、位置、姿勢、時間、力）を基にフラグに従って制御モードを設定してロボットアーム５が動作するように、制御パラメータ管理部２１へ指令を出す。
【０２９０】
具体的には、図１０Ａの「作業ＩＤ」が「１」の作業が選択された場合は、「環境ＩＤ」が「−１」の値であるので、ロボットアーム５が動作する環境情報に関わらず、「動作ＩＤ」で記憶された動作で動作するように動作指令部２７から制御パラメータ管理部２１へ指令を出す。「作業ＩＤ」が「１」の作業の「動作ＩＤ」が「１」の動作の場合には、図５Ａの動作情報データベース１７より、「フラグ」が０、１、３、４、５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、φ、θ、ψについては位置制御モードで動作させ、ｚ軸についてはフラグの「８」ビット目が「１」であるので、力制御モードで動作するように動作指令部２７から制御パラメータ管理部２１へ指令を出す。以上により、図１９Ａに示すように、ロボットアーム５は、ＩＨクッキングヒーター６などの天板６ａの拭き掃除作業を開始する。
【０２９１】
−動作補正部−
以下、動作補正部２０の機能について説明する。
ＩＨクッキングヒーター６などの天板６ａを拭き掃除動作をしている最中に、人４ＡがＩＨクッキングヒーター６などの天板６ａ上の拭き掃除動作中の場所とは別の場所が汚れていることを確認し、データ入力ＩＦ２６により、汚れの状態をロボットアーム５に知らせる操作（環境変化通知操作）の開始の指令を動作指令部２７に出す。
【０２９２】
まず、動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介して環境変化通知操作の指令を受けて、データベース入出力部２８を介して動作情報データベース１７のフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。具体的には、図１０Ａの「作業ＩＤ」が「１」の作業で動作中の「動作ＩＤ」が「１」の動作をデータベース入出力部２８を介して動作情報データベース１７から参照すると、それぞれの「キー動作ＩＤ」のフラグが、図５Ａでは、０、１、３〜５ビット目、８ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関しては、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸、力に関してはｚ軸のみデータが有効ということが動作補正部２０でわかる。
【０２９３】
従って、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸について、位置制御モードからインピーダンス制御モード（人４Ａの力を検知した方向に移動させるモード）で動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。ｚ軸については、ＩＨクッキングヒーター６などの天板６ａの位置で高剛性位置制御モードにより動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。インピーダンス制御モードでは、人４Ａから力が加わっていない場合は停止し、人４Ａから力が加わっている場合はその方向に移動することができる。高剛性位置制御モードでは、人４Ａが力を加えても容易にロボットアーム５が移動しないモードで、人４Ａが加えた力を力検出部５３により検出することができる。
【０２９４】
次に、図１９Ｂ（図１８Ｂ）のように、ＩＨクッキングヒーター６などの天板６ａの汚れ箇所をロボットアーム５に知らせる操作（環境変化通知操作）を人４Ａが行う。具体的には、人４Ａが手４でロボットアーム５を直接把持して、汚れた部分９１に向かって力をロボットアーム５に加えてｘ−ｙ平面を移動させる。次いで、汚れた部分９１の上でｘ軸方向及びｙ軸方向にスポンジ４６を移動させながら、人４Ａがｚ軸方向下向きに力をロボットアーム５に加える。
【０２９５】
人４Ａが環境変化通知操作によりロボットアーム５に力を加えてロボットアーム５を移動させた動作を取得するために、制御パラメータ管理部２１からのロボットアーム５の手先位置及び力を動作補正部２０で取得し、取得した情報を動作補正部２０から、後述する制御ルール生成部２３へ出力する。
【０２９６】
次に、動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介して動作補正操作の開始の指令を受けて、動作情報データベース１７の補正パラメータフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。具体的には、図１０Ａの「作業ＩＤ」が「１」の作業で動作中の「動作ＩＤ」が「１」の動作をデータベース入出力部２８を介して動作情報データベース１８から動作補正部２０が参照すると、それぞれの「キー動作ＩＤ」の補正パラメータフラグが、図５Ａでは、０、１、８ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、ｘ軸及びｙ軸の位置成分及びｚ軸の力成分のみ補正が可能ということが動作補正部２０でわかる。ｘ軸及びｙ軸の位置成分とz軸の力成分を補正する場合には、ｘ軸及びｙ軸の位置成分とｚ軸の力成分を人４Ａの加えた力で補正ができるように、ｘ軸及びｙ軸はハイブリッドインピーダンス制御モードに、ｚ軸は高剛性位置制御モードで動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０２９７】
人４Ａは、図１９Ｃに示すように、汚れた部分９１及びその付近を強めに力をかけて速く移動してスポンジ４６で掃除するために、図１９Ｄ（図１９Ｃを上から見た図）に示すように、人４Ａでロボットアーム５を直接把持して、加速したい場合は、拭き掃除の進行方向と同じ向きに人４Ａでロボットアーム５に力をかけ、減速したい場合は掃除の進行方向に逆らう向きに人４Ａの手４でロボットアーム５に力をかける。さらに、汚れた部分９１に向かう方向については、人４Ａがロボットアーム５を把持して汚れのある部分に向かってロボットアーム５に力を加える。
【０２９８】
ｘ軸及びｙ軸は、ハイブリッドインピーダンス制御モードにより、位置制御モードでロボットアーム５を移動させながら、インピーダンス制御モードにより、人４Ａの手４でロボットアーム５にかけた力を力検出部５３で検出して人４Ａの手４でロボットアーム５に力をかけた方向にロボットアーム５をｘ軸方向及びｙ軸方向に移動させる。図１０Ａの「作業ＩＤ」が「１」の作業で動作中の「動作ＩＤ」が「１」の動作で示されたロボットアーム５の位置（ｘ１、ｙ１）から、次の「動作ＩＤ」のロボットアーム５の位置（ｘ２、ｙ２）まで移動するのにかかる時間をｔ１とすると、ロボットアーム５の速度を人４Ａの力で変更した場合（図１９Ｄ参照）には、すなわち、位置（ｘ１、ｙ１）から位置（ｘ２、ｙ２）までに移動するのにかかる時間がｔ１からｔ２に変更された場合には、時間ｔ２の値が、動作補正部２０から、制御パラメータ管理部２１へ出力する。これにより、図１９Ｅのような動作に補正される。
【０２９９】
さらに、ｚ軸方向に加えた力は力検出部５３で検出し、制御パラメータ管理部２１からのロボットアーム５の力及び時間を動作補正部２０で取得し、取得した情報を動作補正部２０から、後述する制御ルール生成部２３へ出力する。なお、この時間に関する情報は、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間とする。
【０３００】
−制御ルール生成部−
制御ルール生成部２３は、第１実施形態の場合と同様に、データベース入出力部２８を介して、制御ルールデータベース１６の「動作ＩＤ」が参照する動作情報データベース１７の位置及び姿勢及び力及び時間との情報にて、後述するインピーダンス制御モード、若しくは位置制御モード、若しくは力制御モード、若しくはそれらを方向別に組み合わせた制御モード、のうち、いずれかのモードでのロボットアーム５の動作中に、データ入力ＩＦ２６から動作指令部２７を介して、制御ルール生成部２３で動作補正操作の開始の指令を受ける。すると、制御ルール生成部２３では、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報とに基づいて、制御ルールを生成し、データベース入出力部２８を介して、制御ルールデータベース１６に記憶する機能を有している。
【０３０１】
以下、制御ルール生成部２３の機能について説明する。
制御ルール生成部２３には、データ入力ＩＦ２６から動作指令部２７を介して、動作中の作業ＩＤに対して、環境変化通知操作の開始の指令を受けて、人４Ａからの環境変化通知操作にて生成したロボットアーム５の手先位置及び時間を動作補正部２０より入力される。加えて、環境変化通知操作の開始のタイミングより、環境情報取得部１９より環境情報が制御ルール生成部２３に入力される。さらに、環境変化通知操作の開始時の動作中の「動作ＩＤ」を動作情報データベース１８からデータベース入出力部２８を介して制御ルール生成部２３で参照し、その「動作ＩＤ」の「キー動作ＩＤ」のフラグに関する情報から、現在のロボットアーム５の制御モードに関する情報を制御ルール生成部２３で取得する。具体的には、図１０Ａの「作業ＩＤ」が「１」の作業で動作中の「動作ＩＤ」が「１」の動作の「キー動作ＩＤ」が「１」〜「８」のキー動作をデータベース入出力部２８を介して動作情報データベース１８から制御ルール生成部２３で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図５Ａでは、０、１、３〜５、８ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関しては、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸、力に関してはｚ軸のみデータが有効ということが制御ルール生成部２３でわかる。従って、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、インピーダンス制御モードとなっている。
【０３０２】
現在動作中の環境変化通知操作の際のロボットアーム５の移動方向の制御モードと検出部選択ルールデータベース２９に基づいて、複数の環境情報の中から制御ルールを生成するための環境情報の種別を制御ルール生成部２３で選択する。具体的には、図１０Ａの「作業ＩＤ」が「１」の作業の環境変化通知操作の開始のタイミングでは、図１８Ｂのようにｘ軸方向及びｙ軸方向で環境変化通知操作を行っている。ｘ軸及びｙ軸はインピーダンス制御モードで補正しているので、図１１Ａより、環境情報の種別ＩＤは「１」となり、図１１Ｂより、「画像」となる。さらに、図１８Ｂでは、ｘ軸方向及びｙ軸方向に環境変化通知操作をしているので、ｘ−ｙ平面を撮影可能な第１画像撮像装置１５ａでの画像を制御ルール生成部２３で選択する（例えば図２０の汚れが撮像された画像）。さらに、図１８Ｂの操作では、高剛性位置制御モードにてｚ軸方向に力を加える操作をしている。図１１Ａより、環境情報の種別ＩＤは、高剛性位置制御モードの場合は「２」となり、図１１Ｂより、「力」となり、力検出部５３で検出した力を制御ルール生成部２３で選択する。
【０３０３】
制御ルール生成部２３で取得した画像と力の情報を、制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。具体的には、図９Ａの「環境ＩＤ」が「１１」の環境情報に示すように、新しい「環境ＩＤ」に「１１」を制御ルール生成部２３で付与し、その「環境ＩＤ」の「画像ＩＤ」に、選択した画像のファイル名を制御ルール生成部２３でデータベース入出力部２８を介して環境情報データベース１８に記憶する（この例では画像４であり、図２０の汚れた部分９１が撮像された画像である。）。さらに、検出した力の値を制御ルール生成部２３でデータベース入出力部２８を介して環境情報データベース１８に記憶する。なお、力に関しては全ての軸を制御ルール生成部２３でデータベース入出力部２８を介して環境情報データベース１８に記憶する。力に関しては、汚れによって摩擦係数（摩擦係数は、拭き掃除動作時の力検出部５３の出力のうち、掃除面上の進行方向の力を、掃除面の垂直抗力で割ることで算出される）が異なる。例えば、粘性のある物質がこびりついている場合には、摩擦係数が大きくなる。従って、力に関する情報を制御ルール生成部２３でデータベース入出力部２８を介して環境情報データベース１８に記憶することで、摩擦係数に応じて拭き掃除の力加減を変えることができるようになる。
【０３０４】
フラグは、画像及び力の全ての値が有効であるので、０〜６ビット目を「１」として、制御ルール生成部２３でデータベース入出力部２８を介して環境情報データベース１８に記憶する。
【０３０５】
動作補正操作の開始の指令を受けて、動作補正部２０で補正した動作情報をデータベース入出力部２８を介して動作情報データベース１７に記憶する。
【０３０６】
具体的には、図５Ｃに示すように、動作情報データベース１７に新規に「動作ＩＤ」を動作補正部２０で付与し（この例では「４」）、さらに「キー動作ＩＤ」として（「３２」〜「３８」）を動作補正部２０で付与し、動作補正部２０で補正した動作情報をそれぞれの「キー動作ＩＤ」に記憶する。時間については、動作補正部２０からは、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間が入力されるため、一番最初のキー動作（この例では「２０」）の時間を全ての動作のそれぞれの時間から減算した値を動作情報データベース１７に記憶する。フラグについては、補正前のフラグで「１」となっている動作情報の成分のうち、補正前と補正後の「動作ＩＤ」のそれぞれのキー動作の位置姿勢と力の値とをそれぞれの成分毎に動作補正部２０で比較し、その差がある閾値以上の成分のみ、動作補正部２０により、図６のフラグのそれぞれの成分を「１」とし、閾値未満の場合には「０」とする。
【０３０７】
具体的には、補正前の「動作ＩＤ」が「１」の動作のフラグは、０、１、３〜５、８ビット目が「１」であり、その他は「０」であるので、補正前の動作と補正後の動作の位置姿勢、力の値のうち、位置姿勢（ｘ，ｙ，φ，θ，ψ）、力ｚ成分のみを動作補正部２０で比較する。「キー動作ＩＤ」が「１」のキー動作と「４」のキー動作とでは、位置姿勢（ｘ，ｙ，φ，θ，ψ）の成分のうち、ｘ成分の差は０．１（ｍ）、ｙ成分の差は０．２（ｍ）、その他の成分は同じで、力のｚ成分の差が３（Ｎ）となる。位置の差の閾値を０．０５（ｍ）、力の差の閾値を０．５（Ｎ）とすると、位置ｘ成分及びｙ成分、力のｚ軸成分が閾値以上となる。従って、「動作ＩＤ」が「４」の動作のそれぞれの「キー動作ＩＤ」のフラグは、０、１、８ビット目が「１」で、その他は「０」となる。
【０３０８】
補正パラメータフラグについては、補正前の動作（この例では「１」〜「８」）の値を動作補正部２０により動作情報データベース１７に記憶する。
【０３０９】
以上により、人４Ａが環境変化通知操作及び動作補正操作をすることにより、制御ルール生成部２３により、新しい制御ルールを生成することで、環境変化に伴って、人４Ａが操作をして動作を補正すれば、次に同じような環境になった場合に、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５は自律的に動作することができるようになる。
【０３１０】
以上のように、制御ルールを新しく生成することで、次に同じ環境になった場合に（この例では、汚れがひどい場合は強めに速く拭き掃除を行う場合に）、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）追加した制御ルールで作業を行うことが可能になる。
【０３１１】
この例では、図１０Ｂに示すように、「作業ＩＤ」が「１」の作業には、複数の「動作ＩＤ」（「１」、「４」）を動作情報データベース１７に記憶しているため、その場合の動作指令部２７の機能（動作算出部２）について説明する。
【０３１２】
図１０Ｂの「作業ＩＤ」が「１」の作業の「動作ＩＤ」が「１」の動作は、図１９Ａの動作を行うための動作情報を表し、一方、「作業ＩＤ」が「１」の作業の「動作ＩＤ」が「４」の動作は図１９Ｂのように汚れがひどい場合の拭き掃除動作を行うための動作情報を表す。
【０３１３】
人４Ａが、データ入力ＩＦ２６により、「作業ＩＤ」が「１」の作業の開始を動作指令部２７に指令する。
【０３１４】
動作指令部２７は、指定された「作業ＩＤ」の作業の作業開始指令を受けて、データベース入出力部２８を介して制御ルールデータベース１６の指定された「作業ＩＤ」の作業を開始させる。このとき、「作業ＩＤ」の中に複数の「動作ＩＤ」が存在すると動作指令部２７で判断した場合は、それぞれの「環境ＩＤ」とそれぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７が参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を動作指令部２７の動作算出部２により算出する。
【０３１５】
具体的には、図１０Ｂにおいて、「作業ＩＤ」が「１」の作業には、「動作ＩＤ」が「１」の動作と「４」の動作とがある。「動作ＩＤ」が「１」の動作は「環境ＩＤ」が「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず動作するので、実行すべき動作として動作指令部２７により選択する。
【０３１６】
次に、「動作ＩＤ」が「４」の動作の「環境ＩＤ」は「１１」の環境情報となり、「−１」の値ではないので、動作指令部２７により、環境情報データベース１８の「環境ＩＤ」が「１１」の環境情報をデータベース入出力部２８を介して参照する。図９Ａの「環境ＩＤ」が「１１」の環境情報のフラグは、１〜６ビット目が「１」であるので、画像及び力が有効であると、動作指令部２７で判断できる。そこで、画像ＩＤ（具体的には画像ファイル名）及び力を、データベース入出力部２８を介して環境情報データベース１８により動作指令部２７が取得する。
【０３１７】
次に、環境情報取得部１９より、現在の画像情報及び力情報を動作指令部２７が取得して、画像マッチングにより、前記取得した画像ＩＤの画像情報と現在の画像情報とに基づく２つの画像を動作指令部２７で比較する。２つの画像が合致したと動作指令部２７で判断した場合には、「動作ＩＤ」が「３」で記憶されている動作を実行すべき動作として動作指令部２７で選択する。
【０３１８】
選択された動作が複数存在する場合は（この例では、「動作ＩＤ」が「１」の動作と「４」の動作）、選択された複数の動作を、制御ルールデータベース１６に記憶されている順に、それぞれの動作情報のフラグに応じて、実行すべき動作を動作指令部２７で足し合わせる。
【０３１９】
この例では、「動作ＩＤ」が「１」の動作と「４」の動作とが動作指令部２７で選択されており、図１０Ｂの制御ルールデータベース１６の「動作ＩＤ」には「１」の動作、「４」の動作の順に記憶されている。従って、「動作ＩＤ」が「１」の動作の動作情報のフラグが、図５Ｃより０、１、３〜５ビット目及びビット目が「１」であるので、「動作ＩＤ」が「１」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，φ，θ，ψ）と力ｚ軸成分の動作情報を動作指令部２７で取得する。
【０３２０】
次に、「動作ＩＤ」が「４」の動作のフラグは、０、１、８ビット目のみ「１」であるので、「動作ＩＤ」が「１」の動作の位置のｘ成分及びｙ成分と力のｚ軸成分を「動作ＩＤ」が「４」の動作のそれぞれに置き換えて動作指令部２７で算出する。例えば、「キー動作ＩＤ」が「１」のキー動作の位置姿勢は、（０．１，０．１，０，０，０，０）、力（０，０，５，０，０，０）であり、「動作ＩＤ」が「４」の動作の「キー動作」が「３２」の動作の位置姿勢は、（０．２，０．３，０，０，０，０）、力（０，０，８，０，０，０）であるので、「キー動作」が「１」のキー動作の位置姿勢、力情報のうち、「キー動作ＩＤ」が「３２」のキー動作の位置のｘ成分及びｙ成分（０．２、０．３）と力ｚ軸成分８（Ｎ）のみを動作指令部２７で置き換えることで、最終の位置姿勢は、（０．２，０．３，０，０，０，０）、力情報（０，０，８，０，０，０）となる。同様に「キー動作ＩＤ」が「２」のキー動作の位置のｘ成分及びｙ成分と力のｚ成分を、「キー動作ＩＤ」が「３３」のキー動作のｘ成分及びｙ成分と力のｚ成分で動作指令部２７で置き換え、以降、「キー動作ＩＤ」の終わりまで動作指令部２７で順次算出する。
【０３２１】
動作情報のフラグ及び動作情報フラグについて、「動作ＩＤ」が「１」の動作と「４」の動作とのそれぞれのビットにおいて、どちらかのビットが「１」の場合には、算出後のフラグのビットを「１」にするとともに、両方とも「０」の場合には、「０」とする。ただし、位置と力のそれぞれの成分はどちらかにしか「１」とならないため（位置制御モード若しくは力制御モードのどちらかでしか作動しないため）、位置と力の両方に「１」となった場合には、力を優先する。
【０３２２】
「動作ＩＤ」の「１」の動作のフラグは、０、１、３〜５、８ビット目が「１」であり、「４」は８ビット目が「１」であるので、算出した動作のフラグは、０、１、３〜５、８ビット目が「１」となる。
「動作ＩＤ」の「１」の動作と「４」の動作との動作パラメータフラグは、共に０、１、８ビット目が「１」であるので、算出した動作の動作パラメータフラグは０、１、８ビット目が「１」となる。
【０３２３】
算出後の動作情報をフラグに応じて制御モードを動作指令部２７で切り替えて、動作情報を動作指令部２７から制御パラメータ管理部２１へ出力することで、算出した動作を動作指令部２７で実行することが可能となる。
【０３２４】
以上により、拭き掃除中に人４Ａが汚れている箇所をロボットアーム５を直接把持して、力をロボットアーム５にかけることで、ロボットアーム５の周辺環境の変化（汚れのある箇所）を通知し、汚れの色又は汚れ面の摩擦係数に応じて、動作情報を補正することができる。さらに、第１実施形態と同様に、制御ルールを新たに生成することで、図２９のステップＳ１００〜Ｓ１１２の動作指令部２７の動作により、次回同じ環境となった際に、再度人４Ａが動作補正の操作をすることなく、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５が自律的に動作することができるようになる。
【０３２５】
（第３実施形態）
本発明の第３実施形態における、ロボットアーム５とその制御装置の基本的な構成は、第１実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
【０３２６】
第３実施形態においては、ロボットアーム５とロボットアーム５の制御装置を備えるロボット１を使って、図２１に示すように、セル生産の工場でテレビ又はＤＶＤレコーダなどの機器７１にネジ７３を取り付ける場合を例にとって説明する。ロボットアーム５のハンド３０には、作業用治具の一例としてネジ７３を取り付けるための工具が取付け可能としている。
【０３２７】
図２１に示したように、ロボット１のロボットアーム５は、例えば工場内の作業台テーブルなどの作業台７の壁面７ａに設置され、ロボットアーム５の基端が、壁面７ａに固定されたレール８に、移動可能に支持され、レール８上をロボットアーム５がレール８沿いの横方向例えば水平方向に、人４Ａの力により、移動可能とする。１５ａはカメラなどの第１画像撮像装置であり、例えば天井７ｂから作業台７を撮像できるように取り付けられている。
ロボット１は、例えば、工場内で、テレビ又はＤＶＤレコーダのネジ７３の取り付け作業などのロボットアーム５と人４Ａとが協働して行う作業をロボットアーム５を使用して行う。
【０３２８】
第１実施形態と同様に、まず、人４Ａが手４でロボット１のロボットアーム５を直接把持してロボットアーム５に力を加える。そして、人４Ａからロボットアーム５に加えられた力により、ロボット１のロボットアーム５をレール８に沿って移動させることで、器具７１（この例では、ネジ７３を取り付けるテレビ又はＤＶＤレコーダの機器を示す。）の付近までロボットアーム５を誘導する。
【０３２９】
次に、人４Ａが、ロボット１のロボットアーム５の手先すなわち先端のハンド３０に、作業対象物の一例である作業用冶具９の別の例として、ネジ７３を取り付けるための工具、例えば、電動ドライバ器具７２を取り付ける。電動ドライバ器具７２は、例えば、ネジ７３をその下端に支持可能でかつ電動ドライバ器具７２を下方に向けて機器７１に押し付けることにより、スイッチがオンになり、ドライバが自動的に回転してネジ７３をネジ穴７１ａに対してネジ回転動作可能（締め付け動作可能又は取り外し動作可能）に構成している。押し付けを解除すれば、推知がオフとなり、電動ドライバ器具７２のドライバの回転が停止される。
【０３３０】
次に、セル生産の作業台７などの前側側面７ｅなどに配置されている、データ入力ＩＦ２６の一例としてのロボット１の操作盤１３のボタン１３ａを、人４Ａが押すなどしてデータ入力ＩＦ２６を使用することにより、ロボットアーム５が作動し、予め選択された作業、すなわち、器具７１のネジ穴７１ａに、ハンド３０で把持した電動ドライバ器具７２の先端に支持されたネジ７３を取り付ける（締め付ける）作業を開始させる。
【０３３１】
次に、機器７１の仕様変更により、機器７１の形状又はネジ７３若しくはネジ穴７１ａの仕様が変更になった場合に、ロボットアーム５が、ハンド３０で把持した電動ドライバ７２によりネジ７３の取り付け作業を行っているときに、人４Ａがネジ７３の取り付け状態を確認し、人４Ａがロボットアーム５に力を加えて、ネジ７３の締め付け方、又は、ネジ７３の位置の調整などの動作補正を行うことにより、ロボット１のロボットアーム５の動作を補正する。
【０３３２】
レール８は、作業台７の壁面７ａに配置したが、壁面の無い作業台の場合は、天井面又は作業台の天板６ａの側面など作業をするのに適した場所に設置することができる。
さらに、操作盤１３は、作業台７の側面に固定したが、操作盤１３に代えて、遠隔操作が可能なリモコンでも良い。
【０３３３】
−動作情報データベース−
動作情報データベース１７は、第１実施形態と同様に、ロボットアーム５の、ある時間におけるロボットアーム５の手先位置及び姿勢などのロボットアーム５の動作に関する情報（動作情報）を記憶している。動作情報は、制御ルール生成部２３を介してデータベース入出力部２８により動作情報データベース１７に入出力される。
【０３３４】
図２２Ａ、図２２Ｂは、本第３実施形態の動作情報データベース１７を示す。フラグ以外の動作情報は第１実施形態と同様であるので、説明を省略する。フラグは、ロボットアーム５の手先位置及び姿勢及び力のパラメータのうちのいずれの情報が有効かを示すフラグに関する情報である（図２２Ａの「フラグ」の欄参照）。具体的には図２３に示した３２ビットの数値で表す。０〜１１ビット目は第１実施形態と同様である。１２〜１７ビット目は、手先位置及び姿勢のそれぞれの値が有効である場合に（０〜５ビット目のいずれかが「１」の場合）、その手先位置及び姿勢の動作情報として、その動作情報を実行する際の直前の手先位置及び姿勢の値をコピーして使う場合に「１」とし、使わない場合は「０」とする。例えば、図２２Ａの「キー動作ＩＤ」が「５０」のキー動作の「フラグ」は、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。これは、０，１、３〜５、８ビット目が「１」であることから、手先位置及び姿勢のうち、（ｘ，ｙ，φ，θ，ψ）と力のｚ成分が有効であることを示す。さらに、１２，１３，１５〜１７目が「１」であるので、手先位置及び姿勢のうち、（ｘ，ｙ，φ，θ，ψ）成分を直前で動作している手先位置及び姿勢の（ｘ，ｙ，φ，θ，ψ）成分をコピーする。例えば「キー動作ＩＤ」が「５０」のキー動作の開始直前に「キー動作ＩＤ」が「４８」のキー動作が動作していた場合には、「キー動作ＩＤ」が「４８」のキー動作の位置姿勢のうち、（ｘ，ｙ，φ，θ，ψ）の値（この例では、（０．２，０．１，０，０，０））を「キー動作ＩＤ」が「５０」のキー動作の位置姿勢（ｘ，ｙ，φ，θ，ψ）にコピーする。直前の手先位置及び姿勢をコピーするため、直前の手先位置及び姿勢が次の手先位置及び姿勢の値と同じであることから、ロボットアーム５はその手先位置及び姿勢で停止することになる。
【０３３５】
−動作指令部（動作算出部）−
以下、動作指令部２７の機能について説明する。
人４Ａは、データ入力ＩＦ２６により、制御ルールデータベース１６の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業をデータベース入出力部２８を介して選択して、動作指令部２７により、その選択した「作業ＩＤ」にかかる動作を実行するように制御パラメータ管理部２１へ指令する。
【０３３６】
動作指令部２７がデータベース入出力部２８を介して制御ルールデータベース１６を参照するとき、１つの「作業ＩＤ」の作業が選択された場合で、かつ、動作指令部２７は、前記１つの「作業ＩＤ」の作業の中に複数の「動作ＩＤ」が記憶されていると判断した場合は、動作算出部２により動作情報を算出し、算出した動作情報（具体的には、位置、姿勢、時間、力）をフラグに従って、制御モードを設定して動作するように、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。
【０３３７】
具体的には、図１０Ａの「作業ＩＤ」が「３」の作業は、図２４Ａ（図２１を上方から見た図）に示すように、ロボットアーム５の手先位置のハンド３０がネジ穴７１ａ間を移動しながら、ネジ穴７１ａをロボット１で検出すると、ロボットアーム５の手先位置のハンド３０の電動ドライバ器具７２に支持されたネジ７３をネジ穴７１ａに締め付ける動作を行う制御ルールでの作業を示す。「作業ＩＤ」が「３」の作業には複数の「動作ＩＤ」（「１１」、「１２」）が記憶されている。
【０３３８】
動作算出部２では、複数の動作から１つの動作情報を算出する。具体的には、「動作ＩＤ」が「１１」の動作と「１２」の動作との中から１つの動作情報を動作算出部２で算出する。「動作ＩＤ」が「１１」の動作は、ロボットアーム５の手先位置のハンド３０（正確には、ハンド３０で把持した電動ドライバ器具７２）が、図２４Ａに示すように、ネジ穴７１ａ間を移動する動作を表す。「動作ＩＤ」が「１１」の動作の「環境ＩＤ」は「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず、ロボットアーム５が動作するので、実行すべき動作として動作指令部２７で選択する。「動作ＩＤ」が「１２」の動作は、下記するように、ネジ穴７１ａであると動作指令部２７で判断した場合に、ネジ７３を締め付ける動作を表す。「動作ＩＤ」が「１２」の動作の「環境ＩＤ」は「２０」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「２０」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。図９Ａの「環境ＩＤ」が「２０」の環境情報のフラグは、６ビット目のみ「１」であり、それ以外は「０」であるので、画像が有効であると、動作指令部２７で判断することができる。そこで、画像ＩＤより、環境情報データベース１８に記憶されている画像の情報を動作指令部２７で取得する。この画像は図２５のネジ穴７１ａの画像の情報を示す。次に、環境情報取得部１９より、現在の画像情報を動作指令部２７で取得して、画像マッチングにより、２つの画像を動作指令部２７で比較し、ネジ穴７１ａかどうかを動作指令部２７で判断する。２つの画像が合致したと動作指令部２７で判断した場合には、ネジ穴７１ａだと動作指令部２７で判断し、「動作ＩＤ」が「１２」で記憶されている動作を実行すべき動作として動作指令部２７で選択する。合致しなかったと動作指令部２７で判断した場合には、「動作ＩＤ」が「１２」の動作は動作指令部２７で選択せず、「１１」の動作のみを動作指令部２７で選択する。
【０３３９】
動作指令部２７で選択された「動作ＩＤ」が１つのみの場合には、第１実施形態と同様に、「動作ＩＤ」と同じ「動作ＩＤ」の動作を動作情報データベース１７からデータベース入出力部２８を介して動作指令部２７で参照する。「動作ＩＤ」と同じＩＤの動作情報は複数の「キー動作ＩＤ」で管理する動作情報（具体的には、位置の情報と、姿勢の情報と、時間の情報と、力の情報）を動作情報のフラグに従って、制御モードを設定して動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出して、それぞれのキー動作を順次実行するように、動作指令部２７から制御パラメータ管理部２１へ動作情報を出力する。この例では、ロボットアーム５の周辺の環境が、「動作ＩＤ」が「１２」の動作の「環境ＩＤ」が「２０」の環境情報に合致しないと動作指令部２７で判断した場合には、ネジ穴７１ａが検出できなかったと動作指令部２７で判断し、「動作ＩＤ」が「１１」で示した動作を実行するように動作指令部２７から制御パラメータ管理部２１へ指令を出す。
【０３４０】
すなわち、図２２Ａの動作情報データベース１７より、「フラグ」が０〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、ｚ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、ｚ、φ、θ、ψについては位置制御モードで動作させる。
以上により、図２４Ａ（図２１を上方から見た図）に示すように、ロボットアーム５はネジ穴７１ａ間を移動する動作を開始する。
【０３４１】
「動作ＩＤ」が「１１」の動作でロボットアーム５がネジ穴７１ａ間を移動中に、ネジ穴７１ａの上方の部分にロボットアーム５が到達したと動作指令部２７で判断した場合には、「動作ＩＤ」が「１２」の動作の「環境ＩＤ」が「２０」の環境情報の画像と環境情報取得部１９で取得した現在の画像情報の画像とが合致すると動作指令部２７で判断されるため、「動作ＩＤ」が「１１」の動作と「１２」の動作との２つの動作が動作指令部２７で選択される。動作指令部２７の動作算出部２では、それぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７で参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を算出する。
【０３４２】
この例では、「動作ＩＤ」が「１１」の動作と「１２」の動作とが動作指令部２７で選択されており、図１０Ａの制御ルールデータベース１６の「動作ＩＤ」には「１１」の動作、「１２」の動作の順に記憶されている。従って、「動作ＩＤ」が「１１」の動作の動作情報のフラグが、図２２Ａより０〜５ビット目及びビット目が「１」であるので、「動作ＩＤ」が「１１」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，ｚ，φ，θ，ψ）の動作情報を動作指令部２７で取得する。
【０３４３】
次に、「動作ＩＤ」が「１２」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。フラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、その際に、「動作ＩＤ」が「１２」の動作のそれぞれのキー動作のフラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「１１」の動作の動作情報を現在実行中のロボットアーム５の手先位置情報をコピーして動作指令部２７で置き換える。この例では、ネジ穴７１ａの上方にロボットアーム５が配置されているので、その位置及び姿勢情報を「動作ＩＤ」が「１１」の動作に動作指令部２７でコピーする。他のキー動作の位置についても同様に動作指令部２７で置き換える。
【０３４４】
次に、「動作ＩＤ」が「１１」の動作の動作情報のうち、（ｘ，ｙ，φ，θ，ψ）と力ｚ成分の値を「動作ＩＤ」が「１２」の動作のそれぞれの動作情報に動作指令部２７で置き換えて動作算出部２で算出する。
以降、「キー動作ＩＤ」の終わりまで順次動作算出部２で算出する。
【０３４５】
動作算出部２で算出した動作情報のフラグ及び動作情報フラグについて、動作算出部２により、「動作ＩＤ」が「１１」の動作と「１２」の動作とのそれぞれのビットにおいて、どちらかのビットに「１」の場合には、算出後のフラグのビットを「１」に、両方とも「０」の場合には、「０」とする。ただし、位置と力のそれぞれの成分はどちらかにしか「１」とならないため（位置制御モード若しくは力制御モードのどちらかでしか作動しないため）、位置と力の両方に「１」となった場合には、力を優先する。
【０３４６】
「動作ＩＤ」が「１１」の動作のフラグは、０〜５ビット目が「１」であり、「１２」は０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」であるので、０〜５、８、１２、１３、１５〜１７ビット目が「１」となる。位置ｚ成分と力ｚ分の両方が「１」となっているので、力を優先するため、最終的には、０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」となる。
【０３４７】
「動作ＩＤ」が「１１」の動作の動作パラメータフラグは、１，２，３ビット目が「１」であり、「動作ＩＤ」が「１２」の動作の動作パラメータフラグは、８ビット目が「１」である。従って、動作算出部２で算出した動作の動作パラメータフラグは、１，２，３，８ビット目が「１」となる。
【０３４８】
動作算出部２で算出した動作の「フラグ」が０、１、３〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、φ、θ、ψについては位置制御モードで動作させる。さらに、８ビット目が「１」であるので、ｚ軸は力制御モードで動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出す。
【０３４９】
以上により、図２４Ｂ（図２１を上方から見た図）に示すように、ロボットアーム５はネジ７３をネジ穴７１ａの中に締め付ける動作を開始する。
【０３５０】
−動作補正部−
以下、動作補正部２０の機能について説明する。
人４Ａがデータ入力ＩＦ２６により、「作業ＩＤ」が「３」の作業を指定して動作指令部２７に作業開始を指示すると、図２６Ａに示すように、ロボットアーム５にネジ７３をネジ穴７１ａから取り外す作業を開始する。
【０３５１】
次に、ＴＶ又はＤＶＤレコーダなどの機器７１の仕様変更に伴い、図２６Ｂに示すように、仕様変更箇所に立設された突出部材（例えば、新たに装着された部品又はネジなど）７１ｂを追加するよう仕様変更した機器を設置する。あらかじめ生成されている「作業ＩＤ」が「３」の作業は突出部材７１ｂの仕様変更前に生成されているため、そのまま動作させると、突出部材７１ｂにぶつかって、ロボットアーム５の動作が止まってしまう。
【０３５２】
そこで、人４Ａは、図２６Ｃに示すような環境変化通知操作の開始の指令をデータ入力ＩＦ２６を介して動作指令部２７に入力する。動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介しての環境変化通知操作の指令を受けて、動作情報データベース１７のフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。
【０３５３】
具体的には、図２６Ｂに示すように、仕様変更箇所の突出部材７１ｂに衝突した箇所では、ネジ穴７１ａがないので、「動作ＩＤ」が「１２」の動作の「環境ＩＤ」が「２０」の環境情報に合致しないと動作補正部２０で判断するため、「動作ＩＤ」が「１１」の動作のみで動作している。動作中の「動作ＩＤ」が「１１」の動作を動作情報データベース１８からデータベース入出力部２８を介して動作補正部２０で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図２２Ａでは、０〜５ビット目が「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関しては、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸が有効ということが動作補正部２０でわかる。従って、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸について、位置制御モードからインピーダンス制御モード（人４Ａの力を検知した方向に移動させるモード）で動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０３５４】
次に、図２６Ｃのように、機器７１上の仕様変更箇所の突出部材７１ｂを知らせるために、仕様変更箇所の突出部材７１ｂの上方箇所を７１と平行にｘ−ｙ平面を移動させる。人４Ａが環境変化通知操作により力を加えて移動させた動作を動作補正部２０で取得するために、制御パラメータ管理部２１からのロボットアーム５の手先位置及び力を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。
【０３５５】
次に、動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介しての動作補正操作の開始の指令を受けて、動作情報データベース１７の補正パラメータフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ動作補正部２０から指令を出す。具体的には、図１０Ａの「作業ＩＤ」が「３」の作業で動作中の「動作ＩＤ」が「１１」の動作を動作情報データベース１８から動作補正部２０で参照すると、それぞれの「キー動作ＩＤ」の補正パラメータフラグが、図２２Ａでは、０〜２ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作の位置姿勢のうち、ｘ軸成分、ｙ軸成分、及び、ｚ軸成分のみ補正が可能ということが動作補正部２０でわかる。ｘ軸、ｙ軸、及び、ｚ軸について、位置制御モードからハイブリッドインピーダンス制御モード（位置制御モードで移動しながら、人４Ａの力を検知した方向にインピーダンス制御で移動させるモード）で動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０３５６】
次に、図２６Ｄに示すように、人４Ａがロボットアーム５を直接把持して、仕様変更箇所の突出部材７１ｂに衝突しない高さになるように力をかけると、ハイブリッドインピーダンス制御モードにより、位置制御モードでロボットアーム５を移動させながら、インピーダンス制御モードにより、人４Ａの力を検知して力をかけた方向にロボットアーム５をｘ軸方向、ｙ軸方向、及び、ｚ軸方向に移動させることができる。人４Ａが力を加えて移動させた動作を取得するために、制御パラメータ管理部２１からのロボットアーム５の手先位置及び時間を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。なお、この時間に関する情報は、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間とする。
【０３５７】
−制御ルール生成部−
制御ルール生成部２３は、第１実施形態の場合と同様に、制御ルールデータベース１６の動作ＩＤが参照する動作情報データベース１７の位置及び姿勢及び力及び時間との情報にて、後述するインピーダンス制御モード、若しくは位置制御モード、若しくは力制御モード、若しくはそれらを方向別に組み合わせた制御モード、のうち、いずれかのモードでのロボットアーム５の動作中に、データ入力ＩＦ２６から動作指令部２７を介して、制御ルール生成部２３で環境変化通知操作及び動作補正開始の指令を受ける。すると、制御ルール生成部２３では、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報とに基づいて、制御ルールを生成し、制御ルールデータベース１６に記憶する機能を有している。
【０３５８】
以下、制御ルール生成部２３の機能について説明する。
図２６Ｂに示すように、仕様変更箇所の突出部材７１ｂに衝突した箇所では、ネジ穴７１ａがないので、「動作ＩＤ」が「１２」の動作の「環境ＩＤ」が「２０」の環境情報に合致しないため、「動作ＩＤ」が「１１」の動作のみで動作している。
【０３５９】
制御ルール生成部２３は、データ入力ＩＦ２６から動作指令部２７を介して動作中の作業ＩＤに対して、環境変化通知操作の開始の指令を受けて、人４Ａからの環境変化通知操作にて生成したロボットアーム５の手先位置及び時間を動作補正部２０より入力する。加えて、環境変化通知操作の開始のタイミングより、環境情報取得部１９より環境情報を入力する。さらに、環境変化通知操作の開始時の動作中の「動作ＩＤ」を動作情報データベース１８から制御ルール生成部２３で参照し、その「動作ＩＤ」の「キー動作ＩＤ」のフラグに関する情報から現在のロボットアーム５の制御モードに関する情報を制御ルール生成部２３で取得する。具体的には、図１０Ａの「作業ＩＤ」が「３」の作業で動作中の「動作ＩＤ」が「１１」の動作の「キー動作ＩＤ」が「４１」〜「４８」のキー動作を動作情報データベース１８から参照すると、それぞれの「キー動作ＩＤ」のフラグが、図２２Ａでは、０〜５ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸のみデータが有効ということが制御ルール生成部２３でわかる。従って、ｘ軸、ｙ軸、ｚ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、インピーダンス制御モードとなっている。
【０３６０】
現在動作中の環境変化通知操作の際のロボットアーム５の移動方向の制御モードと検出部選択ルールデータベース２９に基づいて、複数の環境情報の中から制御ルールを生成するための環境情報の種別を制御ルール生成部２３で選択する。具体的には、図１０Ａの「作業ＩＤ」が「３」の作業の環境変化通知操作の開始のタイミングでは、図２６Ｃのようにｘ軸方向及びｙ軸方向で環境変化通知操作を行っている。ｘ軸及びｙ軸はインピーダンス制御モードで補正しているので、図１１Ａより、環境情報の種別ＩＤは「１」となり、図１１Ｂより、「画像」を制御ルール生成部２３で選択する。さらに、図２６Ｃでは、ｘ軸方向及びｙ軸方向に環境変化通知操作をしているので、ｘ−ｙ平面を撮影可能な画像撮像装置１５ａでの画像を制御ルール生成部２３で選択する。具体的には、図２７に示すように、仕様変更箇所の突出部材７１ｂを上方から下向きに撮像した画像となる。選択した画像は、制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。この例では、図９Ａの「環境ＩＤ」が「２１」の環境情報に示すように、新しい「環境ＩＤ」として「２１」を制御ルール生成部２３で付与し、その「環境ＩＤ」の「画像ＩＤ」に、選択した画像のファイル名を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。さらに、フラグは画像のみであるので、６ビット目のみ「１」を、その他のビットに「０」を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。
【０３６１】
次に、動作補正操作の開始の指令を受けて、動作補正部２０で補正した動作情報を、データベース入出力部２８を介して動作情報データベース１７に記憶する。
【０３６２】
具体的には、図２２Ｂの動作情報データベース１７に新規に「動作ＩＤ」を動作補正部２０で付与し（この例では「１３」）、さらに「キー動作ＩＤ」として「６０」〜「６７」を動作補正部２０で付与し、動作補正部２０で補正した動作情報を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７のそれぞれの「キー動作ＩＤ」に記憶する。時間について、動作補正部２０からは、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間が入力されるため、一番最初のキー動作（この例では「６０」）の時間を全ての動作のそれぞれの時間から減算した値を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。フラグについては、補正前のフラグで「１」となっている動作情報の成分のうち、補正前と補正後の「動作ＩＤ」のそれぞれのキー動作の位置姿勢と、力の値とをそれぞれの成分毎に動作補正部２０で比較し、その差がある閾値以上の成分のみ、図６のフラグのそれぞれの成分を動作補正部２０で「１」とし、閾値未満の場合には動作補正部２０で「０」とする。
【０３６３】
具体的には、補正前の「動作ＩＤ」が「１１」の動作のフラグは、０〜５ビット目が「１」であり、その他は「０」であるので、補正前の動作と補正後の動作の位置姿勢と、力の値とのうち、位置姿勢成分のみを動作補正部２０で比較する。「キー動作ＩＤ」が「４１」のキー動作と「キー動作ＩＤ」が「６０」のキー動作とでは、位置姿勢（ｘ，ｙ，ｚ，φ，θ，ψ）の成分のうち、φ，θ，ψは同じで、ｘ座標、ｙ座標、及び、ｚ座標の差がそれぞれ（０．２、０．２、０．４）となり、差の閾値を０．１とすると、ｘ成分、ｙ成分、及びｚ成分のみが閾値以上となる。従って、動作補正部２０により、フラグは０，１、２ビット目が「１」で、その他は「０」とする。
【０３６４】
補正パラメータフラグについては、補正前の動作（この例では「４１」〜「４８」）の値を動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。
【０３６５】
次に、取得した環境情報と動作補正部２０の動作補正操作で補正した動作から制御ルールデータベース１９に新しい制御ルールを制御ルール生成部２３で生成して記憶する。
具体的には、制御ルールデータベース１６の「作業ＩＤ」が「３」の作業で動作中に動作を補正するため、制御ルール生成部２３により、図１０Ｂに示すように、「作業ＩＤ」が「３」の作業に１行追加し、動作補正により新しく追加した「動作ＩＤ」が「１３」の動作を追加する。
【０３６６】
次に、制御ルール生成部２３で選択した環境情報の環境ＩＤをデータベース入出力部２８を介して制御ルールデータベース１６に記憶する（この例では環境ＩＤ「２１」）。
【０３６７】
以上により、人４Ａが環境変化通知操作及び動作補正操作を行い、制御ルール生成部２３により新しい制御ルールを生成することで、機器７１の仕様変更を考慮した動作を事前に用意しておかなくても、その場で人４Ａが操作をして環境通知及び動作を補正するだけで、次に同じような環境になった場合に、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５は自律的に動作することができるようになる。
【０３６８】
−動作指令部（動作算出部）−
この例では、図１０Ｂに示すように、「作業ＩＤ」が「３」の作業には、複数の「動作ＩＤ」（「１１」「１２」、「１３」）を記憶しているため、その場合の動作指令部２７の機能について説明する。
【０３６９】
図１０Ｂの「作業ＩＤ」が「３」の作業の「動作ＩＤ」が「１１」の動作は図２８Ａの動作（ネジ穴７１ａ間を移動する動作）、「動作ＩＤ」が「１２」の動作は図２８Ｂの動作（ネジ７３を締め付ける動作）、「動作ＩＤ」が「１３」の動作は図２８Ｃの動作（仕様変更箇所の突出部材７１ｂを避ける動作）を行うための動作情報を表す。
【０３７０】
動作算出部２により、複数の動作から１つの動作情報を算出する。具体的には、「動作ＩＤ」が「１１」の動作の「環境ＩＤ」は「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず、ロボットアーム５は動作するので、実行すべき動作として動作指令部２７で選択する。「動作ＩＤ」が「１２」の動作は、ネジ穴７１ａであると動作指令部２７で判断した場合に、ネジ７３をネジ穴７１ａに締め付ける動作を表す。「動作ＩＤ」が「１２」の動作の「環境ＩＤ」は「２０」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「２０」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。「環境ＩＤ」が［２０］の環境情報により動作指令部２７で参照された画像情報と環境情報取得部１９より現在の画像情報とを動作指令部２７で取得して、画像マッチングにより、２つの画像を動作指令部２７で比較し、ネジ穴７１ａかどうかを動作指令部２７で調べる。２つの画像が合致したと動作指令部２７で判断した場合には、ネジ穴７１ａであると動作指令部２７で判断し、「動作ＩＤ」が「１２」の動作で記憶されている動作を実行すべき動作として動作指令部２７で選択する。
【０３７１】
さらに、「動作ＩＤ」が「１３」の動作の「環境ＩＤ」は「２１」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「２１」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。「環境ＩＤ」が「２１」の環境情報により動作指令部２７で参照された画像情報と環境情報取得部１９より現在の画像情報とを動作指令部２７で取得して、画像マッチングにより２つの画像を動作指令部２７で比較し、仕様変更箇所の突出部材７１ｂかどうかを動作指令部２７で判断する。２つの画像が合致したと動作指令部２７で判断した場合には、仕様変更箇所の突出部材７１ｂだと動作指令部２７で判断し、「動作ＩＤ」が「１３」の動作で記憶されている動作を実行すべき動作として動作指令部２７で選択する。
【０３７２】
動作指令部２７で選択された「動作ＩＤ」が「１１」の動作のみの場合には、「動作ＩＤ」が「１１」の動作で参照される動作情報を、動作指令部２７から制御パラメータ管理部２１へ出力して、図２８Ａの動作を実行する。
【０３７３】
図２８Ｂのように、ネジ穴７１ａの上方近傍の部分でハンド３０が動作している場合には、「動作ＩＤ」が「１１」の動作と「１２」の動作とが動作指令部２７で選択され、「動作ＩＤ」が「１３」の動作は動作指令部２７で選択されない。従って、上述したように、動作算出部２により「１１」の動作と「１２」の動作とから１つの動作を算出し、動作算出部２で算出した動作情報を、動作指令部２７から制御パラメータ管理部２１へ出力して、図２８Ｂの動作を実行する。
【０３７４】
図２８Ｃのように、仕様変更箇所の突出部材７１ｂの上方近傍の部分でハンド３０が動作している場合には、「動作ＩＤ」が「１１」の動作と「１３」の動作とが動作指令部２７で選択され、「動作ＩＤ」が「１２」の動作は動作指令部２７で選択されない。従って、動作算出部２により「１１」「１３」の動作から１つの動作を算出し、動作算出部２で算出した動作情報を動作指令部２７から制御パラメータ管理部２１へ出力して、図２８Ｃの動作を実行する。
なお、第３実施形態では、仕様変更箇所の突出部材７１ｂの迂回動作を補正したが、例えば、ネジ締め付けの際の力加減についても、同様に、適応可能である。
【０３７５】
さらに、リサイクル工場でテレビ又はエアーコンディショナーなどのリサイクル対象物に取れ付けられたネジ７３を取り外す場合に、図３７Ｂ（図３７Ａのネジ７３の十字穴付きの頭部７３ａを上から見た図）に参照符号９２で示すようなネジ７３の破損部分、又は、図３７Ｃ（図３７Ａのネジ７３の十字穴付きの頭部７３ａを上から見た図）に参照符号９３で示すような汚れ部分、図３７Ｄ（図３７Ａのネジ７３の十字穴付きの頭部７３ａを上から見た図）に参照符号９４で示すようなさび部分に対しても、同様に、適応可能である。なお、ネジに限らず、リサイクル対象物から取り外すべき取外物体（例えば、部品、基板、かしめ部材など）に対しても、取外物体取り外し用治具をハンド３０に把持させた場合にも、本発明を適用することができる。
【０３７６】
（第４実施形態）
本発明の第４実施形態における、ロボットアーム５とその制御装置の基本的な構成は、第１実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
【０３７７】
第４実施形態においては、図３１に示すように、ロボットアーム５とロボットアーム５の制御装置を備えるロボット１を使って、セル生産の工場でテレビ又はＤＶＤレコーダなどの機器７１の挿入口７５に作業対象物の一例であるフレキシブル基板７４を取り付ける場合を例にとって説明する。
【０３７８】
図３１に示したように、ロボット１のロボットアーム５は、例えば工場内の作業台テーブルなどの作業台７の壁面７ａに設置され、ロボットアーム５の基端が、壁面７ａに固定されたレール８に、移動可能に支持され、レール８上をロボットアーム５がレール８沿いの横方向例えば水平方向に、人４Ａの力により、移動可能とする。１５ａはカメラなどの第１画像撮像装置であり、例えば天井７ｂから作業台７を撮像できるように取り付けられている。
【０３７９】
ロボット１は、例えば、工場内で、テレビ又はＤＶＤレコーダのフレキシブル基板７４の取り付け作業などのロボットアーム５と人４Ａとが協働して行う作業をロボットアーム５により行う。
【０３８０】
第１実施形態と同様に、まず、人４Ａが手４でロボット１のロボットアーム５を直接把持してロボットアーム５に力を加える。そして、人４Ａからロボットアーム５に加えられた力により、ロボット１のロボットアーム５をレール８に沿って移動させることで、器具７１（この例では、フレキシブル基板７４を挿入するテレビ又はＤＶＤレコーダの機器を示す）の付近までロボットアーム５を誘導する。
【０３８１】
次に、セル生産の作業台７などの前側側面７ｅなどに配置されている、データ入力ＩＦ２６の一例としてのロボット１の操作盤１３のボタン１３ａを、人４Ａが押すなどしてデータ入力ＩＦ２６を使用することにより、ロボットアーム５が作動し、予め選択された作業、すなわち、器具７１の挿入口７５に、ハンド３０でコネクタ部分７４ａを把持したフレキシブル基板７４を挿入して取り付ける作業を開始させる。
【０３８２】
次に、機器７１の仕様変更により、機器７１の形状又はフレキシブル基板７４の仕様が変更になった場合に、ロボットアーム５が、フレキシブル基板７４の取り付け作業を行っているときに、人４Ａがフレキシブル基板７４の取り付け状態を確認し、人４Ａがロボットアーム５に力を加えて、取り付ける力具合、又は、フレキシブル基板７４の位置の調整などの動作補正を行うことにより、ロボット１のロボットアーム５の動作を補正する。
【０３８３】
レール８は、作業台７の壁面７ａに配置したが、壁面の無い作業台の場合は、天井面又は作業台の天板６ａの側面など作業をするのに適した場所に設置することができる。
さらに、操作盤１３は、作業台７の側面に固定したが、操作盤１３に代えて、遠隔操作が可能なリモコンでも良い。
【０３８４】
−動作情報データベース−
動作情報データベース１７は、第３実施形態と同様に、ロボットアーム５の、ある時間におけるロボットアーム５の手先位置及び姿勢などのロボットアーム５の動作に関する情報（動作情報）を記憶している。動作情報は、制御ルール生成部２３を介してデータベース入出力部２８により動作情報データベース１７に入出力される。
図３２Ａ、図３２Ｂは、本第４実施形態の動作情報データベース１７を示す。動作情報は第１実施形態と同様であるので、説明を省略する。
【０３８５】
−動作指令部（動作算出部）−
以下、動作指令部２７の機能について説明する。
人４Ａは、データ入力ＩＦ２６により、制御ルールデータベース１６の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業をデータベース入出力部２８を介して選択して、動作指令部２７により、その選択した「作業ＩＤ」にかかる動作を実行するように制御パラメータ管理部２１へ指令する。
【０３８６】
動作指令部２７がデータベース入出力部２８を介して制御ルールデータベース１６を参照するとき、１つの「作業ＩＤ」の作業が選択された場合で、かつ、動作指令部２７は、前記１つの「作業ＩＤ」の作業の中に複数の「動作ＩＤ」が記憶されていると判断した場合は、動作算出部２により動作情報を算出し、算出した動作情報（具体的には、位置、姿勢、時間、力）をフラグに従って、制御モードを設定して動作するように、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。
【０３８７】
具体的には、図１０Ａの「作業ＩＤ」が「４」の作業は、図３３Ａ（図３１を上方から見た図）に示すように、ロボットアーム５が移動しながら挿入口７５をロボット１で検出すると、ロボットアーム５の手先位置のハンド３０でコネクタ部分７４ａが把持されたフレキシブル基板７４のコネクタ部分７４ａを挿入口７５に挿入する動作を行う制御ルールでの作業を示す。「作業ＩＤ」が「４」の作業には複数の「動作ＩＤ」（「２１」、「２２」、「２３」の動作）が記憶されている。
【０３８８】
動作算出部２では、複数の動作から１つの動作情報を算出する。具体的には、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作との中から１つの動作情報を動作算出部２で算出する。「動作ＩＤ」が「２１」の動作は、ロボットアーム５の手先位置のハンド３０（正確には、ハンド３０で把持したフレキシブル基板７４）が、図３３Ａに示すように、機器７１の挿入口７５の近傍の上方部分を移動する動作を表す。「動作ＩＤ」が「２１」の動作の「環境ＩＤ」は「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず、ロボットアーム５が動作するので、実行すべき動作として動作指令部２７で選択する。「動作ＩＤ」が「２２」の動作は、下記するように、挿入口７５であると動作指令部２７で判断した場合に、挿入口７５の入り口にフレキシブル基板７４のコネクタ部７４ａが接触するまで、フレキシブル基板７４を移動させる動作を表す。「動作ＩＤ」が「２２」の動作の「環境ＩＤ」は「３０」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「３０」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。図９Ａの「環境ＩＤ」が「３０」の環境情報のフラグは、６ビット目のみ「１」であり、それ以外は「０」であるので、画像が有効であると、動作指令部２７で判断することができる。そこで、画像ＩＤより、環境情報データベース１８に記憶されている画像の情報を動作指令部２７で取得する。この画像は、図３４の挿入口７５の画像の情報を示す。次に、環境情報取得部１９より、現在の画像情報を動作指令部２７で取得して、画像マッチングにより、２つの画像を動作指令部２７で比較し、挿入口７５かどうかを動作指令部２７で判断する。２つの画像が合致したと動作指令部２７で判断した場合には、挿入口だと動作指令部２７で判断し、「動作ＩＤ」が「２２」で記憶されている動作を実行すべき動作として動作指令部２７で選択する。合致しなかったと動作指令部２７で判断した場合には、「動作ＩＤ」が「２２」の動作は動作指令部２７で選択せず、「２１」の動作のみを動作指令部２７で選択する。
【０３８９】
「動作ＩＤ」が「２３」の動作は、フレキシブル基板７４のコネクタ部７４ａを挿入口７５に挿入するために、フレキシブル基板７４を移動させる動作を表す。「動作ＩＤ」が「２３」の動作の「環境ＩＤ」は「３１」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「３１」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。図９Ａの「環境ＩＤ」が「３１」の環境情報のフラグは、０〜５ビット目のみ「１」であり、それ以外は「０」であるので、力が有効であると、動作指令部２７で判断することができる。環境情報取得部１９より、現在の力検出部の値を動作指令部２７で取得して、環境情報データベース１８で記憶されている力と動作指令部２７で比較する。この２つの力が合致したと動作指令部２７で判断した場合には、フレキシブル基板７４が挿入口７５から受ける力が、環境情報データベース１８で記憶されている力が合致したと動作指令部２７で判断し、「動作ＩＤ」が「２３」の動作で記憶されている動作を実行すべき動作として動作指令部２７で選択する。合致しなかったと動作指令部２７で判断した場合には、「動作ＩＤ」が「２３」の動作は動作指令部２７で選択せず、「２１」の動作又は「２２」の動作のどちらかを動作指令部２７で選択する。
【０３９０】
選択された「動作ＩＤ」が１つのみの場合には、第１実施形態と同様に、「動作ＩＤ」と同じ「動作ＩＤ」の動作をデータベース入出力部２８を介して動作情報データベース１７から動作指令部２７で参照する。「動作ＩＤ」と同じＩＤの動作情報は複数の「キー動作ＩＤ」で管理する動作情報（具体的には、位置の情報と、姿勢の情報と、時間の情報と、力の情報）を動作情報のフラグに従って、制御モードを設定して動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出して、それぞれのキー動作を順次実行するように、動作指令部２７から制御パラメータ管理部２１へ動作情報を出力する。この例では、ロボットアーム５の周辺の環境が、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報に合致しないと動作指令部２７で判断した場合には、挿入口７５が検出できなかったと動作指令部２７で判断し、「動作ＩＤ」が「２１」の動作で示した動作を実行するように動作指令部２７から制御パラメータ管理部２１へ指令を出す。
【０３９１】
すなわち、図３２Ａの動作情報データベース１７より、「フラグ」が０〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、ｚ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、ｚ、φ、θ、ψについては位置制御モードで動作させる。
以上により、図３３Ａ（図３１を上方から見た図）に示すように、ロボットアーム５は機器７１上を移動する動作を開始する。
【０３９２】
「動作ＩＤ」が「２１」の動作でロボットアーム５が機器７１上を移動中に、挿入口７５の上方の部分にロボットアーム５が到達したと動作指令部２７で判断した場合には、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報の画像と環境情報取得部１９で取得した現在の画像情報の画像とが合致すると動作指令部２７で判断されるため、「動作ＩＤ」が「２１」の動作と「２２」の動作との２つの動作が動作指令部２７で選択される。動作指令部２７の動作算出部２では、それぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７で参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を算出する。
【０３９３】
この例では、「動作ＩＤ」が「２１」の動作と「２２」の動作とが動作指令部２７で選択されており、図１０Ａの制御ルールデータベース１６の「動作ＩＤ」には「２１」の動作、「２２」の動作の順に記憶されている。従って、「動作ＩＤ」が「２１」の動作の動作情報のフラグが、図３２Ａより０〜５ビット目及びビット目が「１」であるので、「動作ＩＤ」が「２１」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，ｚ，φ，θ，ψ）の動作情報を取得する。
【０３９４】
次に、「動作ＩＤ」が「２２」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。フラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、その際に、「動作ＩＤ」が「２２」の動作のそれぞれのキー動作のフラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「２１」の動作の動作情報を現在実行中のロボットアーム５の手先位置情報をコピーして動作指令部２７で置き換える。この例では、挿入口７５の上方にロボットアーム５が配置されているので、その位置及び姿勢情報を「動作ＩＤ」が「２１」の動作に動作指令部２７でコピーする。他のキー動作の位置についても同様に動作指令部２７で置き換える。
【０３９５】
次に、「動作ＩＤ」が「２１」の動作の動作情報のうち、（ｘ，ｙ，φ，θ，ψ）の値を「動作ＩＤ」が「２２」の動作のそれぞれの動作情報に動作指令部２７で置き換えて動作算出部２で算出する。
以降、「キー動作ＩＤ」の終わりまで順次動作算出部２で算出する。
【０３９６】
動作算出部２で算出した動作情報のフラグ及び動作情報フラグについて、動作算出部２により、「動作ＩＤ」が「２１」の動作と「２２」の動作とのそれぞれのビットにおいて、どちらかのビットに「１」の場合には、算出後のフラグのビットを「１」に、両方とも「０」の場合には、「０」とする。ただし、位置と力のそれぞれの成分はどちらかにしか「１」とならないため（位置制御モード若しくは力制御モードのどちらかでしか作動しないため）、位置と力の両方に「１」となった場合には、力を優先する。
【０３９７】
「動作ＩＤ」が「２１」の動作のフラグは、０〜５ビット目が「１」であり、「２２」は０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」であるので、０〜５、８、１２、１３、１５〜１７ビット目が「１」となる。位置ｚ成分と力ｚ分の両方が「１」となっているので、力を優先するため、最終的には、０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」となる。
【０３９８】
「動作ＩＤ」が「２１」の動作の動作パラメータフラグは、１，２，３ビット目が「１」であり、「動作ＩＤ」が「２２」の動作の動作パラメータフラグは、８ビット目が「１」である。従って、動作算出部２で算出した動作の動作パラメータフラグは、１，２，３，８ビット目が「１」となる。
【０３９９】
動作算出部２で算出した動作の「フラグ」が０、１、３〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、φ、θ、ψについては位置制御モードで動作させる。さらに、８ビット目が「１」であるので、ｚ軸は力制御モードで動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出す。
以上により、図３３Ｂに示すように、ロボットアーム５は挿入口７５にフレキシブル基板７４のコネクタ部２４ａを接触するまで移動させる動作を開始する。
【０４００】
「動作ＩＤ」が「２２」の動作にてフレキシブル基板７４のコネクタ部２４ａを挿入口７５に接触するまで移動させる動作が完了した時点で、次に動作させる動作を動作指令部２７で選択する。「動作ＩＤ」が「２３」の動作の「環境ＩＤ」が「３１」の環境情報の力と環境情報取得部１９で取得した力が合致したと動作指令部２７で判断した場合には、「動作ＩＤ」が「２１」の動作と「２３」の動作との２つの動作が動作指令部２７で選択される。さらに、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報の力と環境情報取得部１９で取得した画像が合致すると動作指令部２７で判断した場合には、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作との３つの動作が動作指令部２７で選択される。
【０４０１】
動作算出部２では、それぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７で参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を算出する。
【０４０２】
この例では、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作とが選択されており、図１０Ａの制御ルールデータベース１６の「動作ＩＤ」には「２１」の動作、「２２」の動作、「２３」の動作の順に記憶されている。この場合は、最も番号の大きい「動作ＩＤ」を優先して動作指令部２７で選択する。「動作ＩＤ」が「２２」の動作の動作情報のフラグが、図３２Ａより０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「２２」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，φ，θ，ψ）とｚ成分の力情報の動作情報を取得する。次に、「動作ＩＤ」が「２３」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。フラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、その際に、「動作ＩＤ」が「２２」の動作のそれぞれのキー動作のフラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「１１」の動作の動作情報を現在実行中のロボットアーム５の手先位置情報をコピーして動作指令部２７で置き換える。この例では、挿入口の上方にロボットアーム５が配置されているので、その位置及び姿勢情報を「動作ＩＤ」が「２１」の動作に動作指令部２７でコピーする。他のキー動作の位置についても、同様に動作指令部２７で置き換える。次に、「動作ＩＤ」が「２２」の動作の動作情報のうち、（ｘ，ｙ，φ，θ，ψ）成分の値を「動作ＩＤ」が「２３」の動作のそれぞれの動作情報に置き換えて動作算出部２で算出する。
以降、「キー動作ＩＤ」の終わりまで順次動作算出部２で算出する。
【０４０３】
−動作補正部−
以下、動作補正部２０の機能について説明する。
人４Ａがデータ入力ＩＦ２６により、「作業ＩＤ」が「４」の作業を指定して動作指令部２７に作業開始を指示すると、図３５Ａに示すように、ロボットアーム５はフレキシブル基板７４のコネクタ部７４ａを挿入口７４に挿入する作業を開始する。
【０４０４】
次に、ＴＶ又はＤＶＤレコーダなどの機器７１の仕様変更に伴い、図３５Ｂに示すように、フレキシブル基板７４Ａのサイズ又は厚み、フレキシブル基板自体の剛性の変更、挿入口７５Ａのサイズ変更が発生する。あらかじめ生成されている「作業ＩＤ」が「４」の作業は仕様変更前に生成されているため、そのまま動作させると、フレキシブル基板７４Ａ又は挿入口７５Ａの変更により、例えば、「作業ＩＤ」が「４」の作業の動作から挿入時の力加減が足りず、挿入口７５Ａに十分に差し込むことができないということが起こる。
【０４０５】
そこで、人４Ａは、環境変化通知操作の開始の指令をデータ入力ＩＦ２６を介して動作指令部２７に入力する。動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介しての環境変化通知操作の指令を受けて、動作情報データベース１７のフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。
【０４０６】
具体的には、図３５Ｂに示すように、フレキシブル基板７４Ａの挿入時は「動作ＩＤ」が「２３」の動作で動作している。動作中の「動作ＩＤ」が「２３」の動作を動作情報データベース１８からデータベース入出力部２８を介して動作補正部２０で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図３２Ａでは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関しては、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が、力に関してはｚ軸が有効ということを表す。従って、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸について、位置制御モードからインピーダンス制御モード（人４Ａの力を検知した方向に移動させるモード）で動作し、ｚ軸については、高剛性位置制御モードにより動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０４０７】
次に、図３５Ｃのように、機器７１上の仕様変更箇所に伴う力の状態変更を知らせるために、人４Ａがｚ軸方向に力を加える。人４Ａが環境変化通知操作により力を加えた動作を動作補正部２０で取得するために、制御パラメータ管理部２１からのロボットアーム５の力を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。
【０４０８】
次に、動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介しての動作補正操作の開始の指令を受けて、動作情報データベース１７の補正パラメータフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ動作補正部２０から指令を出す。具体的には、図１０Ａの「作業ＩＤ」が「４」の作業で動作中の「動作ＩＤ」が「２３」の動作を動作情報データベース１８から動作補正部２０で参照すると、それぞれの「キー動作ＩＤ」の補正パラメータフラグが、図２２Ａでは、８ビット目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作の力のうち、ｚ軸成分のみ補正が可能ということが動作補正部２０でわかる。ｚ軸について、高剛性位置制御モードで動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
【０４０９】
次に、図３５Ｄに示すように、人４Ａがロボットアーム５を直接把持して、仕様変更箇所の突出部材７１ｂについて、もう少し力を強めに挿入するように動作させる。人４Ａが加えた力を取得するために、制御パラメータ管理部２１からのロボットアーム５の手先の力を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。
なお、ここで、環境変化通知操作と動作補正操作とを分けて別々に入力したが、環境変化通知操作と動作補正操作との操作の方向が同じである場合は、動作補正操作又は環境変化通知操作のいずれか一方の操作を省略することができる。具体的には、データ入力ＩＦ２６から動作補正操作の開始の指令を省略して、環境変化通知操作の開始の指令を出した場合には、動作補正操作を省略することができる（第５実施形態を参照）。その場合の動作補正部２０は、人４が動作補正操作をした際に、環境情報を取得した後、動作補正を行う。
【０４１０】
−制御ルール生成部−
制御ルール生成部２３は、第３実施形態の場合と同様に、制御ルールデータベース１６の「動作ＩＤ」が参照する動作情報データベース１７の位置及び姿勢及び力及び時間との情報にて、後述するインピーダンス制御モード、若しくは位置制御モード、若しくは力制御モード、若しくはそれらを方向別に組み合わせた制御モード、のうち、いずれかのモードでのロボットアーム５の動作中に、データ入力ＩＦ２６から動作指令部２７を介して、制御ルール生成部２３で環境変化通知操作及び動作補正開始の指令を受ける。すると、制御ルール生成部２３では、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報とに基づいて、制御ルールを生成し、制御ルールデータベース１６に記憶する機能を有している。
【０４１１】
以下、制御ルール生成部２３の機能について説明する。
図３５Ｂに示すように、フレキシブル基板挿入時は「動作ＩＤ」が「２３」の動作で動作している。
【０４１２】
制御ルール生成部２３は、データ入力ＩＦ２６から動作指令部２７を介して動作中の作業ＩＤに対して、環境変化通知操作の開始の指令を受けて、人４Ａからの環境変化通知操作にて生成したロボットアーム５の手先位置及び時間を動作補正部２０より入力する。加えて、環境変化通知操作の開始のタイミングより、環境情報取得部１９より環境情報を入力する。さらに、環境変化通知操作の開始時の動作中の「動作ＩＤ」を動作情報データベース１８から制御ルール生成部２３で参照し、その「動作ＩＤ」の「キー動作ＩＤ」のフラグに関する情報から現在のロボットアーム５の制御モードに関する情報を制御ルール生成部２３で取得する。具体的には、図１０Ａの「作業ＩＤ」が「４」の作業で動作中の「動作ＩＤ」が「２３」の動作の「キー動作ＩＤ」が「７８」〜「８６」のキー動作を動作情報データベース１８から制御ルール生成部２３で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図３２Ａでは、０、１、３〜５、８、１２、１３、１５〜１７目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関してはｘ軸、ｙ軸、φ軸、θ軸、ψ軸、力に関してはｚ軸成分のデータが有効ということが制御ルール生成部２３でわかる。従って、ｘ軸、ｙ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、インピーダンス制御モードとなり、ｚ軸については高剛性位置制御モードとなる。
【０４１３】
現在動作中の環境変化通知操作の際のロボットアーム５の移動方向の制御モードと検出部選択ルールデータベース２９に基づいて、複数の環境情報の中から制御ルールを生成するための環境情報の種別を制御ルール生成部２３で選択する。具体的には、図１０Ａの「作業ＩＤ」が「４」の作業の環境変化通知操作の開始のタイミングでは、図３５Ｃのようにｚ軸方向で環境変化通知操作を行っている。ｚ軸は高剛性位置制御モードで補正しているので、図１１Ａより、環境情報の種別ＩＤは「２」となり、図１１Ｂより、「力」を制御ルール生成部２３で選択する。したがって、力検出部５３で検出した力を制御ルール生成部２３で選択する。取得した力は、制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。この例では、図９Ａに示すように、新しい「環境ＩＤ」として「３２」を制御ルール生成部２３で付与し、その「環境ＩＤ」の「力」に、取得した力の情報を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。さらに、フラグは力のみであるので、０〜５ビット目のみ「１」を、その他のビットに「０」を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。
【０４１４】
次に、動作補正操作の開始の指令を受けて、動作補正部２０で補正した動作情報を、データベース入出力部２８を介して動作情報データベース１７に記憶する。
【０４１５】
具体的には、図３２Ｂの動作情報データベース１７に新規に「動作ＩＤ」を動作補正部２０で付与し（この例では「２４」）、さらに「キー動作ＩＤ」として「９０」〜「９８」を動作補正部２０で付与し、動作補正部２０で補正した動作情報を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７のそれぞれの「キー動作ＩＤ」に記憶する。時間について、動作補正部２０からは、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間が入力されるため、一番最初のキー動作（この例では「９０」）の時間を全ての動作のそれぞれの時間から減算した値を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。フラグについては、補正前のフラグで「１」となっている動作情報の成分のうち、補正前と補正後の「動作ＩＤ」のそれぞれのキー動作の位置姿勢と、力の値とをそれぞれの成分毎に動作補正部２０で比較し、その差がある閾値以上の成分のみ、図６のフラグのそれぞれの成分を動作補正部２０で「１」とし、閾値未満の場合には動作補正部２０で「０」とする。
【０４１６】
具体的には、補正前の「動作ＩＤ」が「２３」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」であり、その他は「０」であるので、補正前の動作と補正後の動作の位置姿勢と、力の値とのうち、位置姿勢の成分ｘ，ｙ，φ，θ，ψと力のｚ軸成分を動作補正部２０で比較する。「キー動作ＩＤ」が「７７」のキー動作と「キー動作ＩＤ」が「８６」のキー動作とでは、位置姿勢（ｘ，ｙ，φ，θ，ψ）の成分は同じで、力のｚ軸成分のみ異なり、差の閾値を０．１（N）とすると、力のｚ成分のみが閾値以上となる。従って、動作補正部２０により、フラグは８ビット目が「１」で、その他は「０」とする。
【０４１７】
補正パラメータフラグについては、補正前の動作（この例では「７８」〜「８６」）の値を動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。
【０４１８】
次に、取得した環境情報と動作補正部２０の動作補正操作で補正した動作から制御ルールデータベース１９に新しい制御ルールを制御ルール生成部２３で生成して記憶する。
具体的には、制御ルールデータベース１６の「作業ＩＤ」が「４」の作業で動作中に動作を補正するため、制御ルール生成部２３により、図１０Ｂに示すように、「作業ＩＤ」が「４」の作業に１行追加し、動作補正により新しく追加した「動作ＩＤ」が「２４」の動作を追加する。
【０４１９】
次に、制御ルール生成部２３で選択した環境情報の環境ＩＤをデータベース入出力部２８を介して制御ルールデータベース１６に記憶する（この例では「環境ＩＤ」が「３２」の環境情報）。
動作指令部（動作算出部２）２７により、具体的には上記した補正により、図３５Ｅのように仕様変更後に自動でロボットアーム５の動作を行うことができる。その仕様変更後の自動的に行う動作については、第３実施形態又は先の実施形態と同様であるので、説明を省略する。
【０４２０】
以上により、人４Ａが環境変化通知操作及び動作補正操作を行い、制御ルール生成部２３により新しい制御ルールを生成することで、機器７１の仕様変更を考慮した動作を事前に用意しておかなくても、その場で人４Ａが操作をして環境通知及び動作を補正するだけで、次に同じような環境になった場合に、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５は自律的に動作することができるようになる。
【０４２１】
（第５実施形態）
本発明の第５実施形態における、ロボットアーム５とその制御装置の基本的な構成は、第１実施形態又は第４実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。なお、この第５実施形態は、環境変化通知操作と動作補正操作が同じ場合には、2つの操作を行う代わりに、動作補正操作を省略して、１つの操作（ここでは、環境変化及び動作通知操作と呼ぶ。）のみ行うことができる例について説明している。
第５実施形態においては、第４実施形態と同様、図３１に示すように、ロボットアーム５とロボットアーム５の制御装置を備えるロボット１を使って、セル生産の工場でテレビ又はＤＶＤレコーダなどの機器７１の挿入口７５に作業対象物の一例であるフレキシブル基板７４を取り付ける場合を例にとって説明する。
図３１に示したように、ロボット１のロボットアーム５は、例えば工場内の作業台テーブルなどの作業台７の壁面７ａに設置され、ロボットアーム５の基端が、壁面７ａに固定されたレール８に、移動可能に支持され、レール８上をロボットアーム５がレール８沿いの横方向例えば水平方向に、人４Ａの力により、移動可能とする。１５ａはカメラなどの第１画像撮像装置であり、例えば天井７ｂから作業台７を撮像できるように取り付けられている。
ロボット１は、例えば、工場内で、テレビ又はＤＶＤレコーダのフレキシブル基板７４の取り付け作業などのロボットアーム５と人４Ａとが協働して行う作業をロボットアーム５により行う。
第４実施形態と同様に、まず、人４Ａが手４でロボット１のロボットアーム５を直接把持してロボットアーム５に力を加える。そして、人４Ａからロボットアーム５に加えられた力により、ロボット１のロボットアーム５をレール８に沿って移動させることで、器具７１（この例では、フレキシブル基板７４を挿入するテレビ又はＤＶＤレコーダの機器を示す）の付近までロボットアーム５を誘導する。
次に、セル生産の作業台７などの前側側面７ｅなどに配置されている、データ入力ＩＦ２６の一例としてのロボット１の操作盤１３のボタン１３ａを、人４Ａが押すなどしてデータ入力ＩＦ２６を使用することにより、ロボットアーム５が作動し、予め選択された作業、すなわち、器具７１の挿入口７５に、ハンド３０でコネクタ部分７４ａを把持したフレキシブル基板７４を挿入して取り付ける作業を開始させる。
次に、機器７１の仕様変更により、機器７１の形状又はフレキシブル基板７４の仕様が変更になった場合に、ロボットアーム５が、フレキシブル基板７４の取り付け作業を行っているときに、人４Ａがフレキシブル基板７４の取り付け状態を確認し、人４Ａがロボットアーム５に力を加えて、取り付ける力具合、又は、フレキシブル基板７４の位置の調整などの動作補正を行うことにより、ロボット１のロボットアーム５の動作を補正する。
レール８は、作業台７の壁面７ａに配置したが、壁面の無い作業台の場合は、天井面又は作業台の天板６ａの側面など作業をするのに適した場所に設置することができる。
さらに、操作盤１３は、作業台７の側面に固定したが、操作盤１３に代えて、遠隔操作が可能なリモコンでも良い。
−動作情報データベース−
動作情報データベース１７は、第４実施形態と同様に、ロボットアーム５の、ある時間におけるロボットアーム５の手先位置及び姿勢などのロボットアーム５の動作に関する情報（動作情報）を記憶している。動作情報は、制御ルール生成部２３を介してデータベース入出力部２８により動作情報データベース１７に入出力される。
図３２Ａ、図３２Ｂは、第４実施形態と同様に、本第５実施形態の動作情報データベース１７を示す。動作情報は第１実施形態と同様であるので、説明を省略する。
−動作指令部（動作算出部）−
以下、動作指令部２７の機能について説明する。
人４Ａは、データ入力ＩＦ２６により、制御ルールデータベース１６の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業をデータベース入出力部２８を介して選択して、動作指令部２７により、その選択した「作業ＩＤ」にかかる動作を実行するように制御パラメータ管理部２１へ指令する。
動作指令部２７がデータベース入出力部２８を介して制御ルールデータベース１６を参照するとき、１つの「作業ＩＤ」の作業が選択された場合で、かつ、動作指令部２７は、前記１つの「作業ＩＤ」の作業の中に複数の「動作ＩＤ」が記憶されていると判断した場合は、動作算出部２により動作情報を算出し、算出した動作情報（具体的には、位置、姿勢、時間、力）をフラグに従って、制御モードを設定して動作するように、データベース入出力部２８を介して制御パラメータ管理部２１へ指令を出す。
具体的には、図１０Ａの「作業ＩＤ」が「４」の作業は、図３３Ａ（図３１を上方から見た図）に示すように、ロボットアーム５が移動しながら挿入口７５をロボット１で検出すると、ロボットアーム５の手先位置のハンド３０でコネクタ部分７４ａが把持されたフレキシブル基板７４のコネクタ部分７４ａを挿入口７５に挿入する動作を行う制御ルールでの作業を示す。「作業ＩＤ」が「４」の作業には複数の「動作ＩＤ」（「２１」、「２２」、「２３」の動作）が記憶されている。
動作算出部２では、複数の動作から１つの動作情報を算出する。具体的には、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作との中から１つの動作情報を動作算出部２で算出する。「動作ＩＤ」が「２１」の動作は、ロボットアーム５の手先位置のハンド３０（正確には、ハンド３０で把持したフレキシブル基板７４）が、図３３Ａに示すように、機器７１の挿入口７５の近傍の上方部分を移動する動作を表す。「動作ＩＤ」が「２１」の動作の「環境ＩＤ」は「−１」の値であるので、ロボットアーム５の周辺環境に拘わらず、ロボットアーム５が動作するので、実行すべき動作として動作指令部２７で選択する。「動作ＩＤ」が「２２」の動作は、下記するように、挿入口７５であると動作指令部２７で判断した場合に、挿入口７５の入り口にフレキシブル基板７４のコネクタ部７４ａが接触するまで、フレキシブル基板７４を移動させる動作を表す。「動作ＩＤ」が「２２」の動作の「環境ＩＤ」は「３０」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「３０」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。図９Ａの「環境ＩＤ」が「３０」の環境情報のフラグは、６ビット目のみ「１」であり、それ以外は「０」であるので、画像が有効であると、動作指令部２７で判断することができる。そこで、画像ＩＤより、環境情報データベース１８に記憶されている画像の情報を動作指令部２７で取得する。この画像は、図３４の挿入口７５の画像の情報を示す。次に、環境情報取得部１９より、現在の画像情報を動作指令部２７で取得して、画像マッチングにより、２つの画像を動作指令部２７で比較し、挿入口７５かどうかを動作指令部２７で判断する。２つの画像が合致したと動作指令部２７で判断した場合には、挿入口だと動作指令部２７で判断し、「動作ＩＤ」が「２２」で記憶されている動作を実行すべき動作として動作指令部２７で選択する。合致しなかったと動作指令部２７で判断した場合には、「動作ＩＤ」が「２２」の動作は動作指令部２７で選択せず、「２１」の動作のみを動作指令部２７で選択する。
「動作ＩＤ」が「２３」の動作は、フレキシブル基板７４のコネクタ部７４ａを挿入口７５に挿入するために、フレキシブル基板７４を移動させる動作を表す。「動作ＩＤ」が「２３」の動作の「環境ＩＤ」は「３１」の環境情報で、「−１」の値ではないので、環境情報データベース１８の「環境ＩＤ」が「３１」の環境情報をデータベース入出力部２８を介して動作指令部２７で参照する。図９Ａの「環境ＩＤ」が「３１」の環境情報のフラグは、０〜５ビット目のみ「１」であり、それ以外は「０」であるので、力が有効であると、動作指令部２７で判断することができる。環境情報取得部１９より、現在の力検出部の値を動作指令部２７で取得して、環境情報データベース１８で記憶されている力と動作指令部２７で比較する。この２つの力が合致したと動作指令部２７で判断した場合には、フレキシブル基板７４が挿入口７５から受ける力が、環境情報データベース１８で記憶されている力が合致したと動作指令部２７で判断し、「動作ＩＤ」が「２３」の動作で記憶されている動作を実行すべき動作として動作指令部２７で選択する。合致しなかったと動作指令部２７で判断した場合には、「動作ＩＤ」が「２３」の動作は動作指令部２７で選択せず、「２１」の動作又は「２２」の動作のどちらかを動作指令部２７で選択する。
選択された「動作ＩＤ」が１つのみの場合には、第１実施形態と同様に、「動作ＩＤ」と同じ「動作ＩＤ」の動作をデータベース入出力部２８を介して動作情報データベース１７から動作指令部２７で参照する。「動作ＩＤ」と同じＩＤの動作情報は複数の「キー動作ＩＤ」で管理する動作情報（具体的には、位置の情報と、姿勢の情報と、時間の情報と、力の情報）を動作情報のフラグに従って、制御モードを設定して動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出して、それぞれのキー動作を順次実行するように、動作指令部２７から制御パラメータ管理部２１へ動作情報を出力する。この例では、ロボットアーム５の周辺の環境が、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報に合致しないと動作指令部２７で判断した場合には、挿入口７５が検出できなかったと動作指令部２７で判断し、「動作ＩＤ」が「２１」の動作で示した動作を実行するように動作指令部２７から制御パラメータ管理部２１へ指令を出す。
すなわち、図３２Ａの動作情報データベース１７より、「フラグ」が０〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、ｚ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、ｚ、φ、θ、ψについては位置制御モードで動作させる。
以上により、図３３Ａ（図３１を上方から見た図）に示すように、ロボットアーム５は機器７１上を移動する動作を開始する。
「動作ＩＤ」が「２１」の動作でロボットアーム５が機器７１上を移動中に、挿入口７５の上方の部分にロボットアーム５が到達したと動作指令部２７で判断した場合には、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報の画像と環境情報取得部１９で取得した現在の画像情報の画像とが合致すると動作指令部２７で判断されるため、「動作ＩＤ」が「２１」の動作と「２２」の動作との２つの動作が動作指令部２７で選択される。動作指令部２７の動作算出部２では、それぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７で参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を算出する。
この例では、「動作ＩＤ」が「２１」の動作と「２２」の動作とが動作指令部２７で選択されており、図１０Ａの制御ルールデータベース１６の「動作ＩＤ」には「２１」の動作、「２２」の動作の順に記憶されている。従って、「動作ＩＤ」が「２１」の動作の動作情報のフラグが、図３２Ａより０〜５ビット目及びビット目が「１」であるので、「動作ＩＤ」が「２１」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，ｚ，φ，θ，ψ）の動作情報を取得する。
次に、「動作ＩＤ」が「２２」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。フラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、その際に、「動作ＩＤ」が「２２」の動作のそれぞれのキー動作のフラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「２１」の動作の動作情報を現在実行中のロボットアーム５の手先位置情報をコピーして動作指令部２７で置き換える。この例では、挿入口７５の上方にロボットアーム５が配置されているので、その位置及び姿勢情報を「動作ＩＤ」が「２１」の動作に動作指令部２７でコピーする。他のキー動作の位置についても同様に動作指令部２７で置き換える。
次に、「動作ＩＤ」が「２１」の動作の動作情報のうち、（ｘ，ｙ，φ，θ，ψ）の値を「動作ＩＤ」が「２２」の動作のそれぞれの動作情報に動作指令部２７で置き換えて動作算出部２で算出する。
以降、「キー動作ＩＤ」の終わりまで順次動作算出部２で算出する。
動作算出部２で算出した動作情報のフラグ及び動作情報フラグについて、動作算出部２により、「動作ＩＤ」が「２１」の動作と「２２」の動作とのそれぞれのビットにおいて、どちらかのビットに「１」の場合には、算出後のフラグのビットを「１」に、両方とも「０」の場合には、「０」とする。ただし、位置と力のそれぞれの成分はどちらかにしか「１」とならないため（位置制御モード若しくは力制御モードのどちらかでしか作動しないため）、位置と力の両方に「１」となった場合には、力を優先する。
「動作ＩＤ」が「２１」の動作のフラグは、０〜５ビット目が「１」であり、「２２」は０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」であるので、０〜５、８、１２、１３、１５〜１７ビット目が「１」となる。位置ｚ成分と力ｚ分の両方が「１」となっているので、力を優先するため、最終的には、０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」となる。
「動作ＩＤ」が「２１」の動作の動作パラメータフラグは、１，２，３ビット目が「１」であり、「動作ＩＤ」が「２２」の動作の動作パラメータフラグは、８ビット目が「１」である。従って、動作算出部２で算出した動作の動作パラメータフラグは、１，２，３，８ビット目が「１」となる。
動作算出部２で算出した動作の「フラグ」が０、１、３〜５ビット目が「１」であるので、ロボットアーム５の手先のｘ、ｙ、φ、θ、ψが有効ということを示しているので、ｘ、ｙ、φ、θ、ψについては位置制御モードで動作させる。さらに、８ビット目が「１」であるので、ｚ軸は力制御モードで動作するように、動作指令部２７から制御パラメータ管理部２１へ指令を出す。
以上により、図３３Ｂに示すように、ロボットアーム５は挿入口７５にフレキシブル基板７４のコネクタ部２４ａを接触するまで移動させる動作を開始する。
「動作ＩＤ」が「２２」の動作にてフレキシブル基板７４のコネクタ部２４ａを挿入口７５に接触するまで移動させる動作が完了した時点で、次に動作させる動作を動作指令部２７で選択する。「動作ＩＤ」が「２３」の動作の「環境ＩＤ」が「３１」の環境情報の力と環境情報取得部１９で取得した力が合致したと動作指令部２７で判断した場合には、「動作ＩＤ」が「２１」の動作と「２３」の動作との２つの動作が動作指令部２７で選択される。さらに、「動作ＩＤ」が「２２」の動作の「環境ＩＤ」が「３０」の環境情報の力と環境情報取得部１９で取得した画像が合致すると動作指令部２７で判断した場合には、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作との３つの動作が動作指令部２７で選択される。
動作算出部２では、それぞれの「動作ＩＤ」のフラグ（「動作ＩＤ」で動作情報データベース１７をデータベース入出力部２８を介して動作指令部２７で参照し、そこで記憶されているフラグ）により、最終的に実行すべき動作情報を算出する。
この例では、「動作ＩＤ」が「２１」の動作と「２２」の動作と「２３」の動作とが選択されており、図１０Ａの制御ルールデータベース１６の「動作ＩＤ」には「２１」の動作、「２２」の動作、「２３」の動作の順に記憶されている。この場合は、最も番号の大きい「動作ＩＤ」を優先して動作指令部２７で選択する。「動作ＩＤ」が「２２」の動作の動作情報のフラグが、図３２Ａより０、１、３〜５、８、１２、１３、１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「２２」の動作の動作情報のうち、位置姿勢情報（ｘ，ｙ，φ，θ，ψ）とｚ成分の力情報の動作情報を取得する。次に、「動作ＩＤ」が「２３」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」で、その他は「０」である。フラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、その際に、「動作ＩＤ」が「２２」の動作のそれぞれのキー動作のフラグのうち、１２，１３，１５〜１７ビット目が「１」であるので、「動作ＩＤ」が「１１」の動作の動作情報を現在実行中のロボットアーム５の手先位置情報をコピーして動作指令部２７で置き換える。この例では、挿入口の上方にロボットアーム５が配置されているので、その位置及び姿勢情報を「動作ＩＤ」が「２１」の動作に動作指令部２７でコピーする。他のキー動作の位置についても、同様に動作指令部２７で置き換える。次に、「動作ＩＤ」が「２２」の動作の動作情報のうち、（ｘ，ｙ，φ，θ，ψ）成分の値を「動作ＩＤ」が「２３」の動作のそれぞれの動作情報に置き換えて動作算出部２で算出する。
以降、「キー動作ＩＤ」の終わりまで順次動作算出部２で算出する。
−動作補正部−
以下、動作補正部２０の機能について説明する。
人４Ａがデータ入力ＩＦ２６により、「作業ＩＤ」が「４」の作業を指定して動作指令部２７に作業開始を指示すると、図３５Ａに示すように、ロボットアーム５はフレキシブル基板７４のコネクタ部７４ａを挿入口７４に挿入する作業を開始する。
次に、ＴＶ又はＤＶＤレコーダなどの機器７１の仕様変更に伴い、図３５Ｂに示すように、フレキシブル基板７４Ａのサイズ又は厚み、フレキシブル基板自体の剛性の変更、挿入口７５Ａのサイズ変更が発生する。あらかじめ生成されている「作業ＩＤ」が「４」の作業は仕様変更前に生成されているため、そのまま動作させると、フレキシブル基板７４Ａ又は挿入口７５Ａの変更により、例えば、「作業ＩＤ」が「４」の作業の動作から挿入時の力加減が足りず、挿入口７５Ａに十分に差し込むことができないということが起こる。
第４実施形態と同様の補正を行う場合に、図３５Ｃに示す環境変化通知操作と図３５Ｄに示す動作補正操作とが同じ場合の実施形態について説明する。
人４Ａは、環境変化通知操作と動作補正操作とを１つの操作で操作するために、１つの環境変化及び動作通知操作の開始の指令をデータ入力ＩＦ２６を介して動作指令部２７に入力する。環境変化及び動作通知操作は、第４実施形態の環境変化通知操作と動作補正操作とを１つの操作で入力可能にした操作である（例えば、操作方向が同じ場合には、環境変化通知操作での操作方向と動作補正操作での操作方向との２つの操作方向を入力する代わりに、環境変化及び動作通知操作として、同じ１つの操作方向を入力することを意味する。）。動作補正部２０は、データ入力ＩＦ２６から動作指令部２７を介しての環境変化及び動作通知操作の指令を受けて、動作情報データベース１７のフラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。
具体的には、図３５Ｂに示すように、フレキシブル基板７４Ａの挿入時は「動作ＩＤ」が「２３」の動作で動作している。動作中の「動作ＩＤ」が「２３」の動作を動作情報データベース１８からデータベース入出力部２８を介して動作補正部２０で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図３２Ａでは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関しては、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が、力に関してはｚ軸が有効ということを表す。従って、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、ｘ軸、ｙ軸、φ軸、θ軸、ψ軸について、位置制御モードからインピーダンス制御モード（人４Ａの力を検知した方向に移動させるモード）で動作し、ｚ軸については、高剛性位置制御モードにより動作するように、動作補正部２０は制御パラメータ管理部２１へ指令を出す。
次に、図３５Ｃのように、機器７１上の仕様変更箇所に伴う力の状態変更及び補正すべき動作の両方を知らせるために、人４Ａがｚ軸方向に力を加える。人４Ａが環境変化及び動作通知操作により力を加えた動作を動作補正部２０で取得するために、制御パラメータ管理部２１からのロボットアーム５の力を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。
次に、動作補正部２０は、環境変化及び動作通知操作により、もう少し力を強めに挿入するように動作させる。人４Ａが加えた力を取得するために、制御パラメータ管理部２１からのロボットアーム５の手先の力を動作補正部２０で取得し、後述する制御ルール生成部２３へ動作補正部２０から出力する。
−制御ルール生成部−
制御ルール生成部２３は、制御ルールデータベース１６の「動作ＩＤ」が参照する動作情報データベース１７の位置及び姿勢及び力及び時間との情報にて、後述するインピーダンス制御モード、若しくは位置制御モード、若しくは力制御モード、若しくはそれらを方向別に組み合わせた制御モード、のうち、いずれかのモードでのロボットアーム５の動作中に、データ入力ＩＦ２６から動作指令部２７を介して、制御ルール生成部２３で環境変化及び動作補正開始の指令を受ける。すると、制御ルール生成部２３では、動作補正部２０で補正した動作情報と環境情報取得部１９で取得した環境情報とに基づいて、制御ルールを生成し、制御ルールデータベース１６に記憶する機能を有している。
以下、制御ルール生成部２３の機能について説明する。
図３５Ｂに示すように、フレキシブル基板挿入時は「動作ＩＤ」が「２３」の動作で動作している。
制御ルール生成部２３は、データ入力ＩＦ２６から動作指令部２７を介して動作中の作業ＩＤに対して、環境変化及び動作通知操作の開始の指令を受けて、人４Ａからの環境変化及び動作通知操作にて生成したロボットアーム５の手先位置及び時間を動作補正部２０より入力する。加えて、環境変化及び動作通知操作の開始のタイミングより、環境情報取得部１９より環境情報を入力する。さらに、環境変化及び動作通知操作の開始時の動作中の「動作ＩＤ」を動作情報データベース１８から制御ルール生成部２３で参照し、その「動作ＩＤ」の「キー動作ＩＤ」のフラグに関する情報から現在のロボットアーム５の制御モードに関する情報を制御ルール生成部２３で取得する。具体的には、図１０Ａの「作業ＩＤ」が「４」の作業で動作中の「動作ＩＤ」が「２３」の動作の「キー動作ＩＤ」が「７８」〜「８６」のキー動作を動作情報データベース１８から制御ルール生成部２３で参照すると、それぞれの「キー動作ＩＤ」のフラグが、図３２Ａでは、０、１、３〜５、８、１２、１３、１５〜１７目のみ「１」であり、その他は「０」であるので、ロボットアーム５の動作のうち、位置姿勢に関してはｘ軸、ｙ軸、φ軸、θ軸、ψ軸、力に関してはｚ軸成分のデータが有効ということが制御ルール生成部２３でわかる。従って、ｘ軸、ｙ軸、θ軸、ψ軸が人４Ａの加えた力で補正ができるように、インピーダンス制御モードとなり、ｚ軸については高剛性位置制御モードとなる。
現在動作中の環境変化及び動作通知操作の際のロボットアーム５の移動方向の制御モードと検出部選択ルールデータベース２９に基づいて、複数の環境情報の中から制御ルールを生成するための環境情報の種別を制御ルール生成部２３で選択して決定する。具体的には、図１０Ａの「作業ＩＤ」が「４」の作業の環境変化及び動作通知操作の開始のタイミングでは、図３５Ｃのようにｚ軸方向で環境変化及び動作通知操作を行っている。ｚ軸は高剛性位置制御モードで補正しているので、図１１Ａより、環境情報の種別ＩＤは「２」となり、図１１Ｂより、「力」を制御ルール生成部２３で選択する。したがって、力検出部５３で検出した力を制御ルール生成部２３で選択する。取得した力は、制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８及び動作情報データベース１７に記憶する。この例では、図９Ａに示すように、新しい「環境ＩＤ」として「３２」を制御ルール生成部２３で付与し、その「環境ＩＤ」の「力」に、取得した力の情報を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。さらに、フラグは力のみであるので、０〜５ビット目のみ「１」を、その他のビットに「０」を制御ルール生成部２３によりデータベース入出力部２８を介して環境情報データベース１８に記憶する。
また、図３２Ｂの動作情報データベース１７に新規に「動作ＩＤ」を動作補正部２０で付与し（この例では「２４」）、さらに「キー動作ＩＤ」として「９０」〜「９８」を動作補正部２０で付与し、動作補正部２０で補正した動作情報を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７のそれぞれの「キー動作ＩＤ」に記憶する。時間について、動作補正部２０からは、人４Ａが作業を選択して開始指令を出した時点を０とした相対時間が入力されるため、一番最初のキー動作（この例では「９０」）の時間を全ての動作のそれぞれの時間から減算した値を、動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。フラグについては、補正前のフラグで「１」となっている動作情報の成分のうち、補正前と補正後の「動作ＩＤ」のそれぞれのキー動作の位置姿勢と、力の値とをそれぞれの成分毎に動作補正部２０で比較し、その差がある閾値以上の成分のみ、図６のフラグのそれぞれの成分を動作補正部２０で「１」とし、閾値未満の場合には動作補正部２０で「０」とする。
具体的には、補正前の「動作ＩＤ」が「２３」の動作のフラグは、０、１、３〜５、８、１２、１３、１５〜１７目が「１」であり、その他は「０」であるので、補正前の動作と補正後の動作の位置姿勢と、力の値とのうち、位置姿勢の成分ｘ，ｙ，φ，θ，ψと力のｚ軸成分を動作補正部２０で比較する。「キー動作ＩＤ」が「７７」のキー動作と「キー動作ＩＤ」が「８６」のキー動作とでは、位置姿勢（ｘ，ｙ，φ，θ，ψ）の成分は同じで、力のｚ軸成分のみ異なり、差の閾値を０．１（N）とすると、力のｚ成分のみが閾値以上となる。従って、動作補正部２０により、フラグは８ビット目が「１」で、その他は「０」とする。
補正パラメータフラグについては、補正前の動作（この例では「７８」〜「８６」）の値を動作補正部２０によりデータベース入出力部２８を介して動作情報データベース１７に記憶する。
次に、取得した環境情報と動作補正部２０の動作補正操作で補正した動作から制御ルールデータベース１９に新しい制御ルールを制御ルール生成部２３で生成して記憶する。
具体的には、制御ルールデータベース１６の「作業ＩＤ」が「４」の作業で動作中に動作を補正するため、制御ルール生成部２３により、図１０Ｂに示すように、「作業ＩＤ」が「４」の作業に１行追加し、動作補正により新しく追加した「動作ＩＤ」が「２４」の動作を追加する。
次に、制御ルール生成部２３で選択した環境情報の環境ＩＤをデータベース入出力部２８を介して制御ルールデータベース１６に記憶する（この例では「環境ＩＤ」が「３２」の環境情報）。
動作指令部（動作算出部２）２７により、具体的には上記した補正により、図３５Ｅのように仕様変更後に自動でロボットアーム５の動作を行うことができる。その仕様変更後の自動的に行う動作については、第３実施形態又は先の実施形態と同様であるので、説明を省略する。
以上により、人４Ａが環境変化通知操作と動作補正操作が同じ場合は、１つの環境変化及び動作補正のみの操作により、操作の負荷を削減でき、さらに、制御ルール生成部２３により新しい制御ルールを生成することで、機器７１の仕様変更を考慮した動作を事前に用意しておかなくても、その場で人４Ａが操作をして環境通知及び動作を補正するだけで、次に同じような環境になった場合に、制御ルールデータベース１６の情報を基に（言い換えれば、環境情報取得部１９で取得した環境情報を参照しながら、制御ルール生成部２３により生成された制御ルールに基づいて）ロボットアーム５は自律的に動作することができるようになる。
（変形例）
なお、上記第１〜第５実施形態では、作業を行うロボットアーム５を直接把持して操作をしたが、マスタースレーブ方式のように、実際に作業を行うロボットアーム５ではなく、容易に動かすことが可能な別の操作機器（マスター）を人４Ａが操作することで、それに接続された実際のロボットアーム（スレーブ）を動かし、動作を補正する方法についても適応可能である。
【０４２２】
さらに、上記第１〜第５実施形態では、ロボットアーム５を例に説明したが、本発明は、アームに限らず、車輪により動く移動ロボット、又は、２足歩行ロボット、又は、多足歩行ロボットなどにも適用することができ、移動ロボットなどと人間との接触に関して同様の効果を発揮する。
上記様々な実施形態のうちの任意の実施形態を適宜組み合わせることにより、それぞれの有する効果を奏するようにすることができる。
【産業上の利用可能性】
【０４２３】
本発明は、家庭用ロボットなど、人とロボットが協調して作業を行う際のロボットアームの動作の制御を行うロボットアームの制御装置及び制御方法、ロボット、ロボットアームの制御プログラム、及び、ロボットアーム制御用集積電子回路として有用である。また、家庭用ロボットに限らず、産業用ロボット、又は、生産設備等における可動機構のロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、及び、ロボットアーム制御用集積電子回路としても適用が可能である。
【０４２４】
本発明は、添付図面を参照しながら好ましい実施形態に関連して充分に記載されているが、この技術の熟練した人々にとっては種々の変形又は修正は明白である。そのような変形又は修正は、添付した請求の範囲による本発明の範囲から外れない限りにおいて、その中に含まれると理解されるべきである。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ロボットアームの動作を制御する、ロボットアームの制御装置であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、及び、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を取得する動作情報取得部と、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を取得する補正動作情報取得部と、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて取得する環境情報取得部と、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを制御する位置制御部と、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を補正する動作補正部と、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを生成する制御ルール生成部とを備えて、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置。
【請求項２】
前記環境情報取得部は、前記ロボットアームに加えられた前記人の力を検出する力検出部を備えて、
前記力検出部で検出された前記人の力とその検出時間とに応じて前記人が前記ロボットアームを操作したことを検出して、前記ロボットアームの前記動作を補正する際の前記ロボットアームが加える力に関する前記補正動作情報を前記補正動作情報取得部で取得する請求項１に記載のロボットアームの制御装置。
【請求項３】
前記環境情報取得部は、前記ロボットアーム及び前記ロボットアームの前記動作を行う周辺環境を撮像可能な複数の画像撮像装置を備え、
前記制御ルール生成部は、前記人の前記ロボットアームの操作時の前記ロボットアームの前記位置制御モードに応じて、前記環境情報取得部の前記複数の画像撮像装置で取得した複数の環境情報の中から、制御ルール生成の際の環境情報の種別を決定する請求項１に記載のロボットアームの制御装置。
【請求項４】
前記環境変化通知操作と、前記人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する動作補正操作とが同じ操作である場合は、前記動作補正操作の代わりに前記環境変化通知操作を使用する請求項１に記載のロボットアームの制御装置。
【請求項５】
前記環境情報は、複数種類の検出方向から検出され取得された環境情報を有し、
前記制御ルール生成部は、前記ロボットアームの前記人の操作に応じて取得する前記環境情報の検出方向を決定する請求項４に記載のロボットアームの制御装置。
【請求項６】
前記制御ルール生成部で生成された制御ルールのうちの複数の動作情報から、前記環境情報取得部で取得した前記環境情報を参照して１つの動作情報を算出する動作算出部をさらに備える請求項１に記載のロボットアームの制御装置。
【請求項７】
前記人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正して、前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を前記補正動作情報取得部で取得したのち、
前記環境情報取得部で取得した前記環境情報が、前記補正の操作時の前記環境情報と同じであるときに、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を、前記補正動作情報取得部で取得した前記補正動作情報に基づき補正するように制御する請求項１に記載のロボットアームの制御装置。
【請求項８】
前記環境情報取得部は、前記ロボットアーム及び前記ロボットアームの前記動作を行う周辺環境を撮像可能な複数の画像撮像装置を備え、
前記ロボットアームの先端には、ネジを回転可能な作業用治具を着脱可能に把持可能なハンドを備え、前記作業用治具は前記対象物であり、
前記複数の画像撮像装置で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記ハンドに把持した前記作業用治具で前記ネジの締め付け又は取り外し作業において前記ロボットアームの前記動作を制御する、請求項１に記載のロボットアームの制御装置。
【請求項９】
ロボットアームの動作を制御する、ロボットアームの制御方法であって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御方法。
【請求項１０】
前記ロボットアームと、
前記ロボットアームを制御する請求項１に記載の前記ロボットアームの制御装置とを備えるロボット。
【請求項１１】
ロボットアームの動作を制御する、ロボットアームの制御プログラムであって、
前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部取得するステップと、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得するステップと、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御するステップと、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正するステップと、
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成するステップと、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するステップとを実行させるためのロボットアームの制御プログラム。
【請求項１２】
ロボットアームの動作を制御する、ロボットアーム制御用集積電子回路であって、前記動作に対応する、前記ロボットアームの位置、姿勢、速度の少なくとも１つ以上が時系列に動作情報として記憶された動作情報データベースから前記動作情報を動作情報取得部で取得し、
人が前記ロボットアームを操作して、前記ロボットアームの前記動作を補正する際に前記動作情報取得部で取得した前記動作情報のうちの少なくとも１つ以上の前記動作情報に対応する補正動作情報を補正動作情報取得部で取得し、
前記ロボットアームが作用する対象物に関する情報である環境情報を前記ロボットアームへの前記人の環境変化通知操作に応じて環境情報取得部で取得し、
前記動作情報取得部で取得した前記動作情報に基づいて前記ロボットアームを移動するよう位置制御モードで前記ロボットアームを位置制御部で制御し、
前記位置制御部の制御により前記ロボットアームが前記位置制御モードで移動している最中に前記補正動作情報取得部で取得したそれぞれの時間での前記補正動作情報に応じて前記動作情報を動作補正部で補正し
前記ロボットアームの前記人の前記環境変化通知操作に応じて、前記環境情報取得部で取得する前記環境情報を決定するとともに、前記動作補正部で補正された前記動作情報と前記環境情報取得部で取得した前記環境情報とを対応付けることにより、前記ロボットアームが自動で動作するための制御ルールを制御ルール生成部で生成し、
前記環境情報取得部で取得した前記環境情報を参照しながら、前記制御ルール生成部により生成された前記制御ルールに基づいて、前記ロボットアームの前記動作を制御するロボットアーム制御用集積電子回路。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１Ａ】
2011036865.tif 000107
【図１Ｂ】
2011036865.tif 000108
【図１Ｃ】
2011036865.tif 000109
【図２】
2011036865.tif 000110
【図３Ａ】
2011036865.tif 000111
【図３Ｂ】
2011036865.tif 000112
【図３Ｃ】
2011036865.tif 000113
【図４】
2011036865.tif 000114
【図５Ａ】
2011036865.tif 000115
【図５Ｂ】
2011036865.tif 000116
【図５Ｃ】
2011036865.tif 000117
【図６】
2011036865.tif 000118
【図７】
2011036865.tif 000119
【図８】
2011036865.tif 000120
【図９Ａ】
2011036865.tif 000121
【図９Ｂ】
2011036865.tif 000122
【図１０Ａ】
2011036865.tif 000123
【図１０Ｂ】
2011036865.tif 000124
【図１１Ａ】
2011036865.tif 000125
【図１１Ｂ】
2011036865.tif 000126
【図１２】
2011036865.tif 000127
【図１３Ａ】
2011036865.tif 000128
【図１３Ｂ】
2011036865.tif 000129
【図１３Ｃ】
2011036865.tif 000130
【図１３Ｄ】
2011036865.tif 000131
【図１３Ｅ】
2011036865.tif 000132
【図１４】
2011036865.tif 000133
【図１５】
2011036865.tif 000134
【図１６】
2011036865.tif 000135
【図１７Ａ】
2011036865.tif 000136
【図１７Ｂ】
2011036865.tif 000137
【図１８Ａ】
2011036865.tif 000138
【図１８Ｂ】
2011036865.tif 000139
【図１９Ａ】
2011036865.tif 000140
【図１９Ｂ】
2011036865.tif 000141
【図１９Ｃ】
2011036865.tif 000142
【図１９Ｄ】
2011036865.tif 000143
【図１９Ｅ】
2011036865.tif 000144
【図２０】
2011036865.tif 000145
【図２１】
2011036865.tif 000146
【図２２Ａ】
2011036865.tif 000147
【図２２Ｂ】
2011036865.tif 000148
【図２３】
2011036865.tif 000149
【図２４Ａ】
2011036865.tif 000150
【図２４Ｂ】
2011036865.tif 000151
【図２５】
2011036865.tif 000152
【図２６Ａ】
2011036865.tif 000153
【図２６Ｂ】
2011036865.tif 000154
【図２６Ｃ】
2011036865.tif 000155
【図２６Ｄ】
2011036865.tif 000156
【図２７】
2011036865.tif 000157
【図２８Ａ】
2011036865.tif 000158
【図２８Ｂ】
2011036865.tif 000159
【図２８Ｃ】
2011036865.tif 000160
【図２９】
2011036865.tif 000161
【図３０Ａ】
2011036865.tif 000162
【図３０Ｂ】
2011036865.tif 000163
【図３１】
2011036865.tif 000164
【図３２Ａ】
2011036865.tif 000165
【図３２Ｂ】
2011036865.tif 000166
【図３３Ａ】
2011036865.tif 000167
【図３３Ｂ】
2011036865.tif 000168
【図３３Ｃ】
2011036865.tif 000169
【図３４】
2011036865.tif 000170
【図３５Ａ】
2011036865.tif 000171
【図３５Ｂ】
2011036865.tif 000172
【図３５Ｃ】
2011036865.tif 000173
【図３５Ｄ】
2011036865.tif 000174
【図３５Ｅ】
2011036865.tif 000175
【図３６Ａ】
2011036865.tif 000176
【図３６Ｂ】
2011036865.tif 000177
【図３６Ｃ】
2011036865.tif 000178
【図３６Ｄ】
2011036865.tif 000179
【図３６Ｅ】
2011036865.tif 000180
【図３６Ｆ】
2011036865.tif 000181
【図３６Ｇ】
2011036865.tif 000182
【図３７Ａ】
2011036865.tif 000183
【図３７Ｂ】
2011036865.tif 000184
【図３７Ｃ】
2011036865.tif 000185
【図３７Ｄ】
2011036865.tif 000186
【国際調査報告】
2011036865.tif 000187
2011036865.tif 000188
2011036865.tif 000189
2011036865.tif 000190
2011036865.tif 000191
2011036865.tif 000192
2011036865.tif 000193
2011036865.tif 000194