(57)【要約】  ロボットアーム（５）の動作中に、人のロボットアーム（５）の把持位置と力の検出の有無の情報及び抗力の影響の有無に関する情報とを含む特性情報に基づきロボットアーム（５）の制御方法を制御方法切替部（１６）で切り替えた後、人の操作に応じて動作情報の力に関する情報を動作補正部（２０）で補正する。
2010079564.tif 000002
【特許請求の範囲】
【請求項１】
ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御装置であって、
前記ロボットアームの前記動作に関する動作情報を取得する動作情報取得部と、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を検出する把持位置検出部と、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する特性情報取得部と、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を切り替える制御方法切替部と、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する動作補正部とを備えて、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置。
【請求項２】
前記ロボットアームに外部から加えられた力を検出する力検出部をさらに備え、
前記特性情報取得部は、前記ロボットアームに前記外部から加えられた力を前記力検出部で検出する際に、前記特性情報のうちの前記人が把持した際の前記接触面からの抗力の影響の有無に関する情報を取得し、
前記動作補正部は、前記動作情報で前記ロボットアームの前記動作中に、前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作として、前記力検出部で検出された前記力に応じて、前記動作情報の力に関する情報を補正する請求項１に記載のロボットアームの制御装置。
【請求項３】
前記制御方法切替部は、
（Ｉ）前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩ）前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩＩ）前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法とのいずれか１つの制御方法に切り替え、
前記力検出部は、前記（Ｉ）の制御方法の場合には、前記ロボットアームが移動している最中の前記力を検出するか、若しくは、前記ロボットアームが移動後に前記接触面に前記ロボットアームが直接的に又は間接的に衝突して前記ロボットアームが移動を停止した状態で前記力を検出するかのいずれかの方法で検出し、前記（ＩＩ）の制御方法及び前記（ＩＩＩ）の制御方法の場合には、前記人が前記力を前記ロボットアームに加えた段階で前記力を検出する請求項２に記載のロボットアームの制御装置。
【請求項４】
前記制御方法切替部は、
（Ｉ）前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合で且つ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範囲内であるという情報を含む場合は、前記切り替え前の制御方法で前記ロボットアームの前記動作を制御するか、若しくは、前記人が前記ロボットアームに加えた力で移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
（ＩＩ）前記特性情報が、前記接触面からの抗力の影響が有るとの情報を含む場合でかつ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範
囲内であるという情報を含む場合は、前記人が前記ロボットアームに力を加えても前記ロボットアームが移動して接触面に直接的に又は間接的に接触しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
（ＩＩＩ）前記特性情報が、前記接触面からの抗力の影響が有るとの情報を含む場合でかつ前記人の前記把持位置が前記力検出部の検出可能範囲外であるという情報を含む場合は、前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法に切り替える請求項３に記載のロボットアームの制御装置。
【請求項５】
前記把持位置検出部で、前記把持位置を複数検出した場合には、それぞれの把持位置と前記力検出部の特性とに応じて、
前記制御方法切替部は、
（Ｉ）前記人が加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩ）前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩＩ）前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法と、
のいずれか１つの制御方法を順次切り替え、前記力検出部はそれぞれの制御方法で前記力を検出し、
それぞれの前記把持位置により前記力検出部で検出した複数の値に基づいて、前記人が前記ロボットアームに加えた力の値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した力の値で、前記動作情報データベースの前記動作情報を補正する請求項３に記載のロボットアームの制御装置。
【請求項６】
前記力算出部は、
（Ｉ）前記力検出部で検出した複数の値を合算して算出する方法と、
（ＩＩ）前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
（ＩＩＩ）前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
（ＩＶ）前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか１つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する請求項５に記載のロボットアームの制御装置。
【請求項７】
複数のロボットアームを備え、
前記把持位置検出部は、前記複数のロボットアームのうち、いずれのロボットアームを前記人が把持しているかどうかを検出し、
前記人が前記複数のロボットアームのうちの一方のロボットアームを把持している場合には、その一方のロボットアームに具備された前記力検出部で前記力を検出し、
さらに、前記力検出部で検出した値から、前記人が把持していない他方のロボットアームを補正する値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した値で、前記動作情報取得部で取得された前記動作情報を補正する請求項２又は３に記載のロボットアームの制御装置。
【請求項８】
前記力算出部は、
（Ｉ）前記力検出部で検出した複数の値を合算して算出する方法と、
（ＩＩ）前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
（ＩＩＩ）前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
（ＩＶ）前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか１つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された、全てのロボットアームの前記動作情報を補正する請求項７に記載のロボットアームの制御装置。
【請求項９】
前記制御方法切替部は、前記人が力を前記ロボットアームに加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替えた場合に、切り替え前の制御方法と前記切り替え後の制御方法を交互に切り替え、
前記力検出部は、前記切り替え後の制御方法に切り替えたときに、前記力を検出する請求項３に記載のロボットアームの制御装置。
【請求項１０】
ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御方法であって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御方法。
【請求項１１】
前記ロボットアームと、
前記ロボットアームの前記動作を制御する請求項１〜８のいずれか１つに記載のロボットアームの制御装置とを有するロボット。
【請求項１２】
ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御プログラムであって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出するステップと、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得するステップと、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替えるステップと、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の
力に関する情報を動作補正部で補正するステップと、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するステップとをコンピュータに実行させるためのロボットアームの制御プログラム。
【請求項１３】
ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームを制御する集積電子回路であって、
前記ロボットアームの前記動作に関する情報である動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するロボットアームの集積電子回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの動作を生成、教示するためのロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路に関する。
【背景技術】
【０００２】
近年、介護ロボット又は家事支援ロボットなどの家庭用ロボットが盛んに開発されるようになってきた。家庭ロボットは産業用ロボットと異なり、家庭の素人が操作するため、簡単に動作を教示できる必要がある。さらに、ロボットが作業する際の動作環境も、家庭に応じて様々であるため、家庭環境に柔軟に対応する必要がある。【０００３】
ロボット装置の教示方法の一例として、ロボットの手首などに力センサを装着し、力センサの先に装着されたハンドルを教示者が直接把持して、ロボットを教示点に誘導し、ロボットの位置の教示を行っている（特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭５９−１５７７１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１においては、全ての教示点を教示者が教示する必要があるため、教示に時間がかかり、非常に面倒であった。さらに、産業用分野にて、教示した動きの一部を修正する場合に、ティーチングペンダントと呼ばれる遠隔装置により、プログラミングにより修正するか、若しくは、全ての動作を一から教示しなければならず、効率が悪かった。【０００６】
特に、家庭用ロボットでは、できるだけ教示する時間を短くする必要がある。さらに、ティーチングペンダンドなどの遠隔装置でのプログラミングの併用は、操作ステップが増大し、プログラミング言語の習得が必要となり、家庭の素人には困難である。【０００７】
また、家庭環境は時々刻々と変化しており、全ての環境変動を教示時に予測しておくことは難しく、また、多くのセンサーを搭載して検出できたとしても、検出精度が１００％ではない場合は、誤作動を起こす場合がある。【０００８】
また、産業ロボットでは、ロボットの動作を教示する教示作業とロボットが実際に作業する本作業とは明確に分けて行っているが、家庭用ロボットでは、家庭の素人が操作するために、教示作業と本作業を分けて操作するのは難しく、面倒であった（特許文献１参照）。【０００９】
そこで、動作中のロボットに対して、人が状況の認識を行い、その都度、それをロボットに伝達することで、教示を意識させずに操作ができ、また、教示時に予期していない環境の変動が起こった場合にでも、その都度、人が教示することでロボットを動作させることが可能となる。【００１０】
例えば、拭き掃除作業は、汚れのある面に対して、ある力をかけて汚れを擦る作業である。ロボットにより拭き掃除作業を実行している最中に、人が汚れのひどい箇所を確認し、人がロボットを直接把持して強めに拭き掃除をするよう、力のかけ具合を指示すると、ロボットは強めに拭き掃除作業をするよう動作を制御して作業を行う。【００１１】
拭き掃除作業は、ある力をかけて汚れを擦る作業であるので、ロボットは、位置を目標値にして制御するよりは、力を目標値にして制御する方が、精度良く作業を行うことが可能である。このような作業では、力を目標値にして作業を行っているため、例えば人がロボットを直接把持して強めに拭き掃除をするように力のかけ具合を指示した場合、人が加えた力が人からの力なのか、あるいは接触面（汚れ面）からの抗力などの外乱なのかの区別がつかないという課題がある。【００１２】
更に、人が加えた力を検出するために、ロボットアームに力センサなどを搭載した場合、産業用ロボットでは、ロボットのどこを把持して教示するかは、ロボットアームに具備された持ち手（ハンドル部分）など予め決まっており、そのハンドル部分に力センサなどを搭載して、人が加えた力を計測している。しかしながら、図１８に示すように家庭内においては、（ａ）持ち手部分に障害物９９などがあり、持ち手以外を人が把持して操作する場合、（ｂ）複数の人が同時に操作する場合、（ｃ）人が両手を使って複数箇所を把持してしまう場合などには、人が加えた力を正しく検出することができない。【００１３】
本発明の目的は、このような課題に対して、予測できない環境の変動があっても、作業者が簡単に短時間でロボットの教示を行うことが可能なロボット制御を実現できる、ロボットアームの制御装置及び制御方法、ロボット、ロボットアームの制御プログラム、並びに、集積電子回路を提供する。
【課題を解決するための手段】
【００１４】
前記の目的を達成するために、本発明は以下のように構成する。【００１５】
本発明の第１態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御装置であって、
前記ロボットアームの前記動作に関する動作情報を取得する動作情報取得部と、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を検出する把持位置検出部と、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する特性情報取得部と、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を切り替える制御方法切替部と、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する動作補正部とを備えて、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御装置を提供する。【００１６】
本発明の第１０態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御方法であって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御方法を提供する。【００１７】
本発明の第１２態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御プログラムであって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出するステップと、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得するステップと、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替えるステップと、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正するステップと、前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するステップとをコンピュータに実行させるためのロボットアームの制御プログラムを提供する。【００１８】
本発明の第１３態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームを制御する集積電子回路であって、
前記ロボットアームの前記動作に関する情報である動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの集積電子回路を提供する。
【発明の効果】
【００１９】
以上述べたように、本発明のロボットアームの制御装置及びロボットによれば、動作情報取得部と、把持位置検出部と、特性情報取得部と、制御方法切替部と、動作補正部とを有することにより、人がロボットアームのどの部分を把持しても、動作情報で記述されたロボットの動作を、簡単に動作を補正することができるロボット制御が可能となる。すなわち、人のロボットアームの把持位置と力の検出の有無の情報及び抗力の影響の有無に関する情報とを含む特性情報に基づき前記ロボットアームの制御方法を切り替えるとともに、動作情報に基づいてのロボットアーム動作中に、把持位置と特性情報とに応じて制御方法切替部で制御方法を切り替えた後、人の操作に応じて動作情報の力に関する情報を動作補正部で補正することができる。【００２０】
また、本発明のロボットアームの制御方法、ロボットアームの制御プログラム、及び、集積電子回路によれば、ロボットアームの動作中に、人のロボットアームの把持位置と力の検出の有無の情報及び抗力の影響の有無に関する情報とを含む特性情報に基づきロボットアームの制御方法を制御方法切替部で切り替えた後、人がロボットアームのどの部分を把持しても、人の操作に応じて動作情報の力に関する情報を動作補正部で補正することができるロボット制御が可能となる。
【図面の簡単な説明】
【００２１】
本発明のこれらと他の目的と特徴は、添付された図面についての好ましい実施形態に関連した次の記述から明らかになる。この図面においては、
【図１】図１は、本発明の第１実施形態におけるロボット制御装置の構成の概要を示す図であり、
【図２】図２は、本発明の前記第１実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図であり、
【図３】図３は、本発明の前記第１実施形態における前記制御装置の制御部の構成を示すブロック図であり、
【図４Ａ】図４Ａは、本発明の前記第１実施形態における前記制御装置における前記ロボットアームの座標系に関する図であり、
【図４Ｂ】図４Ｂは、本発明の前記第１実施形態における前記制御装置における前記ロボットアームの座標系に関する図であり、
【図４Ｃ】図４Ｃは、本発明の前記第１実施形態における前記制御装置における前記ロボットアームの座標系に関する図であり、
【図５】図５は、前記第１実施形態における前記ロボット制御装置の動作情報データベースの動作情報の一覧表を説明する図であり、
【図６】図６は、前記第１実施形態における前記ロボット制御装置の動作情報データベースのフラグの情報を説明する図であり、
【図７】図７は、前記第１実施形態における前記ロボット制御装置の動作情報データベースの補正パラメータフラグに関する情報を説明する図であり、
【図８】図８は、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図９Ａ】図９Ａは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
【図９Ｂ】図９Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
【図１０】図１０は、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図１１】図１１は、本発明の前記第１実施形態における前記ロボット制御装置の制御方法切替部の動作ステップを表すフローチャートであり、
【図１２Ａ】図１２Ａは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図１２Ｂ】図１２Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図１２Ｃ】図１２Ｃは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図１３】図１３は、本発明の前記第１実施形態における前記ロボット制御装置の動作状態を示す図であり、
【図１４】図１４は、本発明の前記第１実施形態における前記ロボット制御装置の動作状態を示す図であり、
【図１５】図１５は、本発明の前記第１実施形態における前記ロボット制御装置の制御部の動作ステップを表すフローチャートであり、
【図１６Ａ】図１６Ａは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図１６Ｂ】図１６Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図１７】図１７は、本発明の前記第１実施形態における前記ロボット制御装置の動作補正部と動作指令部と動作記憶部と制御方法切替部と把持位置検出部と制御パラメータ管理部との動作ステップを表すフローチャートであり、
【図１８】図１８は、本発明の第２実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図１９】図１９は、本発明の前記第２実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図であり、
【図２０Ａ】図２０Ａは、本発明の前記第２実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
【図２０Ｂ】図２０Ｂは、本発明の前記第２実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
【図２０Ｃ】図２０Ｃは、本発明の前記第２実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
【図２１Ａ】図２１Ａは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図２１Ｂ】図２１Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図２２Ａ】図２２Ａは、本発明の第３実施形態におけるロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図２２Ｂ】図２２Ｂは、本発明の前記第３実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図２２Ｃ】図２２Ｃは、本発明の前記第３実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図２２Ｄ】図２２Ｄは、本発明の前記第３実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
【図２３】図２３は、本発明の前記第３実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図であり、
【図２４】図２４は、本発明の前記第３実施形態における前記ロボット制御装置の動作情報データベースの動作情報の一覧表を説明する図であり、
【図２５Ａ】図２５Ａは、本発明の前記第３実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
【図２５Ｂ】図２５Ｂは、本発明の前記第３実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
【図２６Ａ】図２６Ａは、本発明の前記第３実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
【図２６Ｂ】図２６Ｂは、本発明の前記第３実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
【図２６Ｃ】図２６Ｃは、本発明の前記第３実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
【図２７Ａ】図２７Ａは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部の１つの構成例を説明する図であり、
【図２７Ｂ】図２７Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部の別の構成例を説明する図であり、
【図２８】図２８は、本発明の前記第１実施形態における前記ロボット制御装置においてロボットアームに対する人のロボットアームの操作状態を示す図であり、
【図２９】図２９は、本発明の前記第１実施形態における人のロボットアームの操作状態を示す図であり、
【図３０Ａ】図３０Ａは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
【図３０Ｂ】図３０Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
【図３１Ａ】図３１Ａは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
【図３１Ｂ】図３１Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
【発明を実施するための形態】
【００２２】
以下に、本発明にかかる実施の形態を図面に基づいて詳細に説明する。
【００２３】
以下、図面を参照して本発明における実施形態を詳細に説明する前に、本発明の種々の態様について説明する。
【００２４】
本発明の第１態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御装置であって、
前記ロボットアームの前記動作に関する動作情報を取得する動作情報取得部と、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を検出する把持位置検出部と、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する特性情報取得部と、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を切り替える制御方法切替部と、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する動作補正部とを備えて、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御装置を提供する。
【００２５】
本発明の第２態様によれば、前記ロボットアームに外部から加えられた力を検出する力検出部をさらに備え、
前記特性情報取得部は、前記ロボットアームに前記外部から加えられた力を前記力検出部で検出する際に、前記特性情報のうちの前記人が把持した際の前記接触面からの抗力の影響の有無に関する情報を取得し、
前記動作補正部は、前記動作情報で前記ロボットアームの前記動作中に、前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作として、前記力検出部で検出された前記力に応じて、前記動作情報の力に関する情報を補正することを特徴とする第１の態様に記載のロボットアームの制御装置を提供する。
【００２６】
本発明の第３態様によれば、前記制御方法切替部は、
（Ｉ）前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩ）前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩＩ）前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法とのいずれか１つの制御方法に切り替え、
前記力検出部は、前記（Ｉ）の制御方法の場合には、前記ロボットアームが移動している最中の前記力を検出するか、若しくは、前記ロボットアームが移動後に前記接触面に前記ロボットアームが直接的に又は間接的に衝突して前記ロボットアームが移動を停止した状態で前記力を検出するかのいずれかの方法で検出し、前記（ＩＩ）の制御方法及び前記（ＩＩＩ）の制御方法の場合には、前記人が前記力を前記ロボットアームに加えた段階で前記力を検出することを特徴とする第２の態様に記載のロボットアームの制御装置を提供する。
【００２７】
本発明の第４態様によれば、前記制御方法切替部は、
（Ｉ）前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合で且つ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範囲内であるという情報を含む場合は、前記切り替え前の制御方法で前記ロボットアームの前記動作を制御するか、若しくは、前記人が前記ロボットアームに加えた力で移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
（ＩＩ）前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合でかつ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範囲内であるという情報を含む場合は、前記人が前記ロボットアームに力を加えても前記ロボットアームが移動して接触面に直接的に又は間接的に接触しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
（ＩＩＩ）前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合でかつ前記人の前記把持位置が前記力検出部の検出可能範囲外であるという情報を含む場合は、前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法に切り替えることを特徴とする第３の態様に記載のロボットアームの制御装置を提供する。
【００２８】
本発明の第５態様によれば、前記把持位置検出部で、前記把持位置を複数検出した場合には、それぞれの把持位置と前記力検出部の特性とに応じて、
前記制御方法切替部は、
（Ｉ）前記人が加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩ）前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩＩ）前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法と、
のいずれか１つの制御方法を順次切り替え、前記力検出部はそれぞれの制御方法で前記力を検出し、
それぞれの前記把持位置により前記力検出部で検出した複数の値に基づいて、前記人が前記ロボットアームに加えた力の値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した力の値で、前記動作情報データベースの前記動作情報を補正することを特徴とする第３の態様に記載のロボットアームの制御装置を提供する。
【００２９】
本発明の第６態様によれば、前記力算出部は、
（Ｉ）前記力検出部で検出した複数の値を合算して算出する方法と、
（ＩＩ）前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
（ＩＩＩ）前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
（ＩＶ）前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか１つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正することを特徴とする第５の態様に記載のロボットアームの制御装置を提供する。
【００３０】
本発明の第７態様によれば、複数のロボットアームを備え、
前記把持位置検出部は、前記複数のロボットアームのうち、いずれのロボットアームを前記人が把持しているかどうかを検出し、
前記人が前記複数のロボットアームのうちの一方のロボットアームを把持している場合には、その一方のロボットアームに具備された前記力検出部で前記力を検出し、
さらに、前記力検出部で検出した値から、前記人が把持していない他方のロボットアームを補正する値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した値で、前記動作情報取得部で取得された前記動作情報を補正することを特徴とする第２又は３の態様に記載のロボットアームの制御装置を提供する。
【００３１】
本発明の第８態様によれば、前記力算出部は、
（Ｉ）前記力検出部で検出した複数の値を合算して算出する方法と、
（ＩＩ）前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
（ＩＩＩ）前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
（ＩＶ）前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか１つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された、全てのロボットアームの前記動作情報を補正することを特徴とする第７の態様に記載のロボットアームの制御装置を提供する。
【００３２】
本発明の第９態様によれば、前記制御方法切替部は、前記人が力を前記ロボットアームに加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替えた場合に、切り替え前の制御方法と前記切り替え後の制御方法を交互に切り替え、
前記力検出部は、前記切り替え後の制御方法に切り替えたときに、前記力を検出することを特徴とする第３の態様に記載のロボットアームの制御装置を提供する。
【００３３】
本発明の第１０態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御方法であって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御方法を提供する。
【００３４】
本発明の第１１態様によれば、前記ロボットアームと、
前記ロボットアームの前記動作を制御する第１〜８のいずれか１つの態様に記載のロボットアームの制御装置とを有することを特徴とするロボットを提供する。
【００３５】
本発明の第１２態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御プログラムであって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出するステップと、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得するステップと、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替えるステップと、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正するステップと、前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するステップとをコンピュータに実行させるためのロボットアームの制御プログラムを提供する。
【００３６】
本発明の第１３態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームを制御する集積電子回路であって、
前記ロボットアームの前記動作に関する情報である動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの集積電子回路を提供する。
【００３７】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【００３８】
（第１実施形態）
まず、本発明の第１実施形態におけるロボットアームの制御装置を備えるロボットシステム１の構成について説明する。図１及び図２は、本発明の第１実施形態におけるロボットアーム５及びその制御装置７０を備えるロボットシステム１の概要を示す図である。
【００３９】
図１に示すように、ロボットシステム１のロボットアーム５は、例えば家庭内のキッチン又はテーブルなどの作業台７の壁面７ａに設置される。ロボットアーム５の基端５ａが壁面７ａに固定されたレール８に対して移動可能な状態で支持され、ロボットアーム５がレール８上に沿って横方向（例えば水平方向）に、人４の力により、移動可能としている。
【００４０】
ロボットシステム１は、例えばロボットアーム５を使用してキッチンの汚れ９１をふき取る作業又は鍋底をかき混ぜる作業などの家庭内においてロボットアーム５と人４とが協働して行う作業を行う。図１は、一例として、拭き掃除作業を行うロボットシステム１による作業の操作手順の一例を示す。
【００４１】
まず、人４がロボットアーム５を直接把持し、人４がロボットアーム５に力を加える。そして、人４からロボットアーム５に加えられた力により、ロボットアーム５がレール８に沿って移動し、IＨクッキングヒーター又はガスコンロなどの調理装置６の付近までロボットアーム５が誘導される。
【００４２】
次に、人４が、ロボットアーム５の先端のハンド３０に、拭き掃除作業のための掃除用具の一例としてのスポンジ４６を取り付ける。
【００４３】
次に、調理装置６の側面などに配置されているロボットシステム１の操作盤１３のボタン１３ａを人４が押すなどして、人４が、データ入力ＩＦ２６を使用することにより、ロボットアーム５に動作開始指令を入力すると、ロボットアーム５が作動し、予め選択された作業（ここでは拭き掃除作業）を開始させる。
【００４４】
ロボットアーム５がハンド３０で把持した掃除用具４６による調理装置６の拭き掃除を実施しているときに、拭き掃除を実施している場所とは異なる場所でかつ人４が汚れのひどい部分９１ａを見つけて、人４の手４ａでロボットアーム５を直接把持してロボットアーム５に力を加えてその部分９１ａまでロボットアーム５を移動させ（図２９の場合は矢印（１）の方向）る。そして、さらに、汚れのひどい部分９１ａで、補正したい方向（図２９の場合は矢印（２）の方向）に人４の手４ａでロボットアーム５に力を加えることで、ロボットアーム５に対して動作を補正させるための補正指令を入力して、ロボットアーム５の動作を、強めに拭き掃除作業をするように補正する（図２９参照）。
【００４５】
レール８は、作業台７の壁面７ａに配置したが、壁面の無いアイランドキッチンの場合は、天井面又はアイランドキッチンの天板側面など作業をするのに適した場所に設置することができる。
【００４６】
さらに、操作盤１３は、調理装置６の側面に固定したが、操作盤１３に代えて、遠隔操作が可能なリモコンでも良い。
【００４７】
図２はロボットシステム１を構成する、制御対象であるロボットアーム５と、ロボットアーム５の制御装置７０との詳細構成を示す図である。ロボットアーム５の制御装置７０は、図２に示すように、把持位置検出部２３と、ロボットアーム５の動作を生成する動作生成装置１２と、制御装置本体部１１と、周辺装置１４とを備えている。
【００４８】
−ロボットアーム−
この第１実施形態のロボットアーム５は、一例として６自由度の多リンクマニピュレータで構成される多関節ロボットアームとする。ロボットアーム５は、ハンド３０と、ハンド３０が取り付けられている手首部３１を先端３２ａに有する前腕リンク３２と、前腕リンク３２の基端３２ｂに回転可能に先端３３ａが連結される上腕リンク３３と、上腕リンク３３の基端３３ｂが回転可能に連結支持される台部３４とを備えている。台部３４は、移動可能なレール８に連結されているが、一定位置に固定されていても良い。手首部３１は、第４関節部３８と、第５関節部３９と、第６関節部４０との３つの回転軸を有しており、前腕リンク３２に対するハンド３０の相対的な姿勢（向き）を変化できる。すなわち、図２において、第４関節部３８は、手首部３１に対するハンド３０の横軸（ψ）周りの相対的な姿勢を変化できる。第５関節部３９は、手首部３１に対するハンド３０の、第４関節部３８の横軸とは直交する縦軸（Φ）周りの相対的な姿勢を変化させることができる。第６関節部４０は、手首部３１に対するハンド３０の、第４関節部３８の横軸（ψ）及び第５関節部３９の縦軸（Φ）とそれぞれ直交する横軸（θ）周りの相対的な姿勢を変化できる。前腕リンク３２の他端は、上腕リンク３３の先端に対して第３関節部３７周りに、すなわち、第４関節部３８の横軸と平行な横軸周りに回転可能とする。上腕リンク３３の他端は、台部３４に対して第２関節部３６周りに、すなわち、第４関節部３８の横軸と平行な横軸周りに回転可能とする。さらに、台部３４の上側可動部３４ａは、台部３４の下側固定部３４ｂに対して第１関節部３５周りに、すなわち、第５関節部３９の縦軸と平行な縦軸周りに回転可能としている。
【００４９】
この結果、ロボットアーム５は、合計６個の軸周りに回転可能として前記６自由度の多リンクマニピュレータを構成している。
【００５０】
各軸の回転部分を構成する各関節部には、モータ４３のような回転駆動装置と、モータ４３の回転軸の回転位相角（すなわち関節角）を検出するエンコーダ４４とを備えている。この第１実施形態のモータ４３は、ロボットアーム５の各関節部の内部に配設されている。モータ４３は、各関節部を構成する２つのリンク部材のうちの一方のリンク部材に備えられる後述するモータドライバ２５により駆動制御される。各関節部の一つのリンク部材の関節部に備えられたモータ４３の回転軸が、他のリンク部材に連結されて、前記回転軸を正逆回転させることにより、前記他のリンク部材を前記一つのリンク部材に対して各軸周りに回転可能とする。
【００５１】
４１は台部３４の下側固定部３４ｂに対して相対的な位置関係が固定された絶対座標系であり、４２はハンド３０に対して相対的な位置関係が固定された手先座標系である。絶対座標系４１から見た手先座標系４２の原点位置Ｏｅ（ｘ，ｙ，ｚ）をロボットアーム５の手先位置（ハンド３０の位置）とし、絶対座標系４１から見た手先座標系４２の姿勢をロール角とピッチ角とヨー角で表現した（φ，θ，ψ）をロボットアーム５の手先姿勢とし、手先位置及び姿勢ベクトルをベクトルｒ＝［ｘ，ｙ，ｚ，φ，θ，ψ］Ｔと定義する。
【００５２】
この第１実施形態では、絶対座標系３５のＺ軸を回転軸として、座標系を角度φだけ回転させた座標系を考え（図４Ａ参照）、このときの座標軸を［Ｘ'，Ｙ'，Ｚ］とする。次に、この座標系を、Ｙ'を回転軸として角度θだけ回転させ（図４Ｂ参照）、このときの座標軸を［Ｘ''，Ｙ'，Ｚ''］とする。最後に、この座標系を、Ｘ''を回転軸として角度ψだけ回転させ（図４Ｃ参照）、このときの座標系の姿勢をロール角度φ、ピッチ角度θ、ヨー角度ψとし、このときの姿勢ベクトルは（φ，θ，ψ）となる。姿勢（φ，θ，ψ）の座標系が原点位置を手先座標系４２の原点位置Ｏｅ（ｘ，ｙ，ｚ）に平行移動した座標系と、手先座標系４２が一致する場合、手先座標系の姿勢ベクトルは（φ，θ，ψ）であるとする。
【００５３】
ロボットアーム５の手先位置及び姿勢を制御する場合には、手先位置及び姿勢ベクトルｒを後述する目標軌道生成部５５で生成された手先位置及び姿勢目標ベクトルｒｄに追従させることになる。
【００５４】
力センサなどの力検出部５３は、人４などからロボットアーム５に加わる力を検出する。具体的には、力検出部５３に加わる３方向（ｘ，ｙ，ｚ方向）と姿勢方向（φ，θ，ψ方向）の６軸の方向別に力を検出する。
【００５５】
なお、力検出部５３の１つの構成例として、図２７Ａに示すように、操作用の力センサ５３ａと後述する力制御用の力センサ５３ｂを搭載していた場合は、それぞれの力センサ５３ａ，５３ｂに加わる力を力検出部５３として検出する。
【００５６】
また、力検出部５３の別の構成例として、図２７Ｂに示すように、各関節部にトルクセンサ５３ｃ，５３ｄ，５３ｅを搭載していた場合、力検出部５３には、モータドライバ２５の電流センサで計測されたロボットアーム５の各関節部を駆動するモータ４３を流れる電流値ｉ＝［ｉ１，ｉ２，ｉ３，ｉ４，ｉ５，ｉ６］Ｔが入出力ＩＦ２４を介して取り込まれて力検出部５３として力を検出する。また、各エンコーダ４４で計測された関節角の現在値ｑが入出力ＩＦ２４を介して取り込まれるとともに、後述する近似逆運動学計算部５７からの関節角度誤差補償出力ｕｑｅが取り込まれる。力検出部５３は、オブザーバーとして機能し、以上の電流値ｉと、関節角の現在値ｑと、関節角度誤差補償出力ｕｑｅとより、ロボットアーム５に加わる外力により各関節部に発生するトルクτｅｘｔを算出する。そして、Ｆｅｘｔ＝Ｊｖ（ｑ）−Ｔτｅｘｔ−［０，０，ｍｇ］Ｔによりロボットアーム５の手先における等価手先外力Ｆｅｘｔに換算して、この等価手先外力Ｆｅｘｔをインピーダンス計算部５１に出力する。ここで、Ｊｖ（ｑ）は、
【００５７】
【数１】
2010079564.tif 000003
【００５８】
を満たすヤコビ行列である。ただし、ｖ＝［ｖｘ，ｖｙ，ｖｚ，ωｘ，ωｙ，ωｚ］Ｔであり、（ｖｘ，ｖｙ，ｖｚ）は手先座標系４２におけるロボットアーム５の手先の並進速度、（ωｘ，ωｙ，ωｚ）が手先座標系４２におけるロボットアーム５の手先の角速度となる。また、ｍはハンド３０で把持している把持物体の重さであり、ｇは重力加速度である。把持物体の重さｍの値は、その物体を把持する前に、人４が入出力ＩＦ２４を介して力検出部５３に入力することができる。また、ロボットアーム５のハンド３０により物体の把持を実際に行い、そのときの力検出部５３の等価手先外力Ｆｅｘｔの推定結果より把持物体の重さｍの値を算出することも可能である。
【００５９】
後述するロボットアーム５の動作を制御するため、動作生成装置１２と、制御装置本体部１１と、周辺装置１４とのそれぞれの動作が実行されることにより、ロボットアーム５の各関節部の、後述するエンコーダ４４より出力される各関節角度情報が、入出力ＩＦ２４のカウンタボードを通じて制御装置本体部１１に取り込まれ、取り込まれた各関節角度情報に基づき制御装置本体部１１によって各関節部の回転動作での制御指令値が算出される。算出された各制御指令値は、入出力ＩＦ２４のＤ／Ａボードを通じて、ロボットアーム５の各関節部を駆動制御するためのモータドライバ２５に与えられ、モータドライバ２５から送られた各制御指令値に従って、ロボットアーム５の各関節部のモータ４３が駆動される。また、モータドライバ２５により駆動制御されるハンド駆動装置の一例としてハンド駆動用のモータ６２と、ハンド駆動用のモータ６２の回転軸の回転位相角を検出するエンコーダ６１とを、さらに、ハンド３０に備えて、エンコーダ６１で検出された回転角度情報が、入出力ＩＦ２４のカウンタボードを通じて制御装置本体部１１に取り込まれ、取り込まれた回転角度情報を基に、制御装置本体部１１の制御部２２のハンド制御部５４（図３に図示）によってハンド３０の開閉動作での制御指令値が算出される。算出された制御指令値は、入出力ＩＦ２４のＤ／Ａボードを通じて、ハンド３０の開閉駆動も行うモータドライバ２５に与えられ、モータドライバ２５から送られた各制御指令値に従って、モータ６２の回転を駆動制御して、ハンド駆動用のモータ６２の回転軸を正逆回転させることにより、ハンド３０を開閉させる。
【００６０】
制御装置本体部１１及び動作生成装置１２及び周辺装置１４及び把持位置検出部２３は、一例として、それぞれ一般的なパーソナルコンピュータにより構成される。
【００６１】
−把持位置検出部−
２３は把持位置検出部であり、人４がロボットアーム５を把持するとき、人４がロボットアーム５のどの部分（どの位置）を把持して操作しているかを検出する（人４のロボットアーム５の把持位置を検出する）。具体的には、カメラなどの画像撮像装置１９の画像データより、操作している人４の手４ａの画像認識を把持位置検出部２３で行い、その手４ａが、ロボットアーム５の前腕リンク３２か上腕リンク３３かハンド３０のいずれを把持して操作しているかを把持位置検出部２３で検出する。
【００６２】
（動作生成装置１２）
動作生成装置１２は、動作情報取得部の一例として機能する動作情報データベース１７と、特性情報取得部の一例として機能する力検出部特性データベース１８と、動作指令部２７と、動作補正部２０と、動作記憶部１５と、制御方法切替部１６とを有するように構成される。動作補正部２０と制御パラメータ管理部２１との間では、ロボットアーム５の手先位置及び姿勢の情報と、人４の加えられた力の情報と、動作指令などが入出力される。制御パラメータ管理部２１により、ロボットアーム５の手先位置及び姿勢と人４からロボットアーム５に加えられた力の情報などが動作記憶部１５に出力される。なお、動作生成装置１２における各制御モード（ｉ）位置制御モード、（ｉｉ）インピーダンス制御モード、（ｉｉｉ）力制御モード）の詳細については、制御装置本体部１１の制御パラメータ管理部２１にて後述する。
【００６３】
−動作情報データベース−
動作情報データベース１７は、動作指令部２７との間で動作情報が入出力されるとともに、動作補正部２０との間で動作情報が入出力され、動作記憶部１５により種々の動作情報が入力され記憶される。
【００６４】
次に、動作情報データベース１７の詳細について説明する。
【００６５】
動作情報データベース１７は、例えば、図５に示したロボットアーム５の動作に関する情報（動作情報）が動作記憶部１５により記憶される。動作情報の具体データ例として、以下に示す。
【００６６】
（１）作業を識別する作業ＩＤ番号（図５の「作業ＩＤ」の欄参照）。
【００６７】
（２）作業の中の個々の動作を識別する動作ＩＤ番号（図５の「動作ＩＤ」の欄参照）。
【００６８】
（３）動作におけるロボットアーム５の手先位置及び姿勢に関する情報（図５の「位置姿勢」の欄参照）。
【００６９】
（４）ロボットアーム５が作業をする際に対象となる物体に加える力に関する情報（図５の「力」の欄参照）。
【００７０】
（５）ロボットアーム５の手先位置、姿勢、及び力のパラメータのうちのいずれの情報が有効か否かを示すフラグに関する情報（図５の「フラグ」の欄参照）。
【００７１】
（６）ハンド３０が開閉しているか否かのハンド開閉状態を表す情報（図５の「ハンド」の欄参照）。
【００７２】
（７）各動作が作用する時間に関する情報（図５の「時間」の欄参照）。
【００７３】
（８）動作補正部２０による動作情報データベース１７の動作情報を補正する際の補正すべきパラメータの種別に関する情報（図５の「補正パラメータフラグ」の欄参照）。
【００７４】
（９）ロボットアーム５の動作が実行中か否かを示す進捗情報（図５の「進捗情報」の欄参照）。
【００７５】
ここで、作業ＩＤは、作業に関する情報を識別するために用いられる符号であり、動作ＩＤは、動作に関する情報を識別するために用いられる符号である。
【００７６】
図５の動作情報データベース１７の「位置姿勢」、すなわち、ロボットアーム５の手先位置及び姿勢に関する情報は、前述したロボットアーム５の手先位置及び姿勢を表し、原点位置Ｏｅの座標及び姿勢から、（ｘ，ｙ，ｚ，φ，θ，ψ）と表す。
【００７７】
力に関する情報は、ロボットアーム５が作業をする際に対象となる物体に加える力に関する情報を示し、力のｘ、ｙ、ｚ、φ、θ、ψ方向の成分を（fｘ，fｙ，fｚ，fφ，fθ，fψ）と表す。例えば、ｆｚ＝５[Ｎ]である場合は、ｚ軸方向に５[Ｎ]の力を加えて、作業することを表す。具体的には、ＩＨクッキングヒータ６などの天板を拭き掃除作業する際に、天板の表面に力を加えて擦る場合などに使用する。
【００７８】
図５の動作情報データベースの「フラグ」に関する情報は、各「動作ＩＤ」が示す動作情報に基づくロボットアーム５の手先位置及び姿勢及び力のうちのいずれの情報が有効かを示す値である。具体的には、図６で示した３２ビットの数値で表す。図６において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値が有効の場合は「１」とし、手先位置及び姿勢及び力のそれぞれの値が無効の場合は「０」とする。例えば、０ビット目において、ロボットアーム５の手先位置のｘ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。また、１ビット目において、ロボットアーム５の手先位置のｙ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。また、２ビット目において、ロボットアーム５の手先位置のｚ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。以後、順次、３，４，５ビット目は姿勢のφ、θ、ψの有効性を表す（すなわち、有効の場合は「１」とし、無効の場合は「０」とする。）。さらに、６ビット目〜１１ビット目においては、力のそれぞれの成分が有効か無効かを示す（すなわち、有効の場合は「１」とし、無効の場合は「０」とする。）。また、フラグに関する情報は、将来の拡張用に多め（３２ビット）に用意しているため、この例では１２ビット目から３１ビット目は使用しないので、「０」を入れておくが、１２ビットのみ格納できる変数としても良い。図６では、０ビット目から１ビット目、及び３ビット目から５ビット目、及び８ビット目が「１」となっているので、動作情報の手先位置及び姿勢情報としてｘ、ｙ、φ、θ、ψ情報と力情報としてｆｚのみが有効であることを示している。この結果、動作情報のうち、２ビット目、６〜７ビット目、及び９〜１１ビット目が「０」となっているので、z、fｘ、fｙ、fφ、fθ、fψの値にどういう値が記憶されていても無効であるとする。
【００７９】
図５の動作情報データベース１７のハンド３０が開閉しているか否かの情報である「ハンド」に関する情報は、ロボットアーム５の動作中のハンド３０の開閉の有無を表すフラグとし、ハンド３０が開いている場合は「０」と記載し、閉じている場合は「１」と記載する。
【００８０】
図５の動作情報データベース１７の「時間」に関する情報は、ロボットアーム５の各動作を実行するための時間であり、この「動作ＩＤ」に記憶された動作を、ここでの「時間」に関する情報として記憶された時間をかけて行うことを表す。すなわち、絶対時刻ではなく、前の動作からの相対時間を表す。すなわち、「動作ＩＤ」が示す「位置及び姿勢」に、ロボットアーム５のハンド３０が移動するまでの時間又は「動作ＩＤ」が示す「力」になるまでの時間を表す。
【００８１】
図５の動作情報データベース１７の「補正パラメータフラグ」に関する情報は、後述する動作補正部２０で、どのパラメータを補正するかを表す情報である。具体的には、図７に示した３２ビットの数値で表す。図７において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値の補正が可能な場合は「１」とし、手先位置及び姿勢及び力のそれぞれの値の補正が不可能な場合は「０」とする。例えば、０ビット目においては、手先位置のｘ座標の値の補正が可能な場合は「１」とし、手先位置のｘ座標の値の補正が不可能な場合は「０」とする。また、１ビット目においては、手先位置のｙ座標の値の補正が可能な場合は「１」とし、手先位置のｙ座標の値の補正が不可能な場合は「０」とする。また、２ビット目においては、手先位置のｚ座標の値の補正が可能な場合は「１」とし、手先位置のｚ座標の値の補正が不可能な場合は「０」とする。以後、順次、３，４，５ビット目は、姿勢のφ、θ、ψの補正可能性を表す（すなわち、補正が可能な場合は「１」とし、補正が不可能な場合は「０」とする。）。さらに、６ビット目〜１１ビット目においては、力のそれぞれの成分の補正可能性を示す（すなわち、補正可能の場合は「１」とし、補正不可能の場合は「０」とする。）。また、フラグに関する情報は、将来の拡張用に多め（３２ビット）に用意しているため、この例では、１２ビット目から３１ビット目は使用しないので、「０」を入れておくが、１２ビットのみ格納できる変数としても良い。
【００８２】
図５の動作情報データベース１７の「進捗情報」に関する情報は、現在実行中の動作であるかどうかを示す情報であり、実行中の動作である場合は「１」とし、実行中の動作でない場合は「０」として、動作記憶部１５により動作情報データベース１７に記憶する。具体的には、動作指令部２７によって、作業が開始されると、その作業の各動作のうち、現在動作（実行）中の動作については「１」を動作記憶部１５により記憶し、現在動作（実行）していない動作については「０」を動作記憶部１５により記憶する。
【００８３】
-動作指令部-
動作指令部２７には、人４がデータ入力ＩＦ２６により指定された「作業ＩＤ」の作業の動作開始の指令が入力される。動作指令部２７は、指定された「作業ＩＤ」の作業の動作開始の指令を受けて、指定された「作業ＩＤ」の作業の動作を開始させる。具体的には、動作情報指令部２７により「動作ＩＤ」の「進捗情報」に「１」を設定し、動作記憶部１５により動作情報データベース１７に記憶する。その他の「動作ＩＤ」の「進捗情報」については「０」を動作指令部２７に設定し、動作記憶部１５により動作情報データベース１７に記憶する。動作指令部２７により指令された作業ＩＤの作業の全ての動作は、「動作ＩＤ」の番号の小さいものから、順番に実行され、一番最後の動作まで実行されると、その「作業ＩＤ」の先頭の「動作ＩＤ」の動作に戻り、一連の動作を繰り返し実行する。
【００８４】
動作情報データベース１７のロボットアーム５の手先の位置姿勢及び時間の情報は、例えば図８に示すようにロボットアーム５を人４が把持して、後述するインピーダンス制御モードにて、ロボットアーム５を移動させて、ある一定時間毎（例えば０．２ｍｓｅｃ毎）にロボットアーム５の手先位置及び姿勢の情報を取得し、時間と共に、動作記憶部１５により動作情報データベース１７に記憶して作成する。さらに、動作情報データベース１７の力の情報は、データ入力ＩＦ２６で加えたい力の値を入力して作成する。なお、図８において、３は調理器具の一例としての鍋、９はハンド３０で把持されて鍋３をかき混ぜるための調理用具の一例としてのレードルである。
【００８５】
−力検出部特性データベース−
力検出部特性データベース１８は、力検出部５３（図３に図示）の特性を表す情報（特性情報）が記憶されており、図９Ａに一例を示す。特性情報は、一例として、人４のロボットアーム５の把持位置に関する情報（図９Ａの「把持位置ＩＤ」の欄参照）と、人４がロボットアーム５を把持した位置で力の検出ができるかどうかに関する情報（図９Ａの「検出の有無」の欄参照）と、力検出の際に、接触面からの抗力の影響を受ける可能性があるかどうかに関する情報（図９Ａの「抗力の影響の可能性の有無」の欄参照）とで構成される。
【００８６】
図９Ａの「把持位置ＩＤ」に関する情報は、力検出部特性データベース１８に記憶されている図９Ｂのテーブルにより、人４がロボットアーム５のどの部分を把持しているかの情報を示す。それぞれの「把持位置ＩＤ」に関する情報は、図９Ｂに示すテーブルにより決定する。具体的には、図２の上腕リンク３３を把持している場合（図２８の操作Ａ）には、図９Ｂにより、「上腕」は「把持位置ＩＤ」が「１」となる。また、前腕リンク３２を把持している場合（図２８の操作Ｂ）には、図９Ｂにより、「前腕」は「把持位置ＩＤ」が「２」」となることが、力検出部特性データベース１８から制御方法切替部１６で検出される。同様に、手首部３１を把持している場合には、図９Ｂにより、「手首」は「把持位置ＩＤ」が「３」となる。同様に、ハンド３０を把持している場合（図２８の操作Ｃ）には、図９Ｂにより、「ハンド」は「把持位置ＩＤ」が「４」となることが、力検出部特性データベース１８から制御方法切替部１６で検出される。
【００８７】
図９Ａの「検出の有無」に関する情報は、それぞれの「把持位置ＩＤ」で示す把持位置を人４が把持して人４が把持位置で力を加えた場合に、力検出部５３で検出可能である場合は「１」を設定し、力検出部５３で検出不可能である場合は「０」を設定する。
【００８８】
図９Ａの「抗力の影響の可能性の有無」に関する情報は、ロボットアーム５が所定の作業を行うとき例えばロボットアーム５がハンド３０で直接的に接触面に接触した際又はロボットアーム５がハンド３０で把持した物体などを介して間接的に接触面に接触した際に、力検出部５３が接触面から抗力の影響を受ける可能性があるかどうかの情報である。具体的には、図１０のようにロボットアーム５が、物体、例えば拭き掃除用具の一例としてのスポンジ４６を把持して、ＩＨクッキングヒータ又はガスコンロなどの調理装置６に力を加えて拭き掃除をしていると仮定する。この拭き掃除の最中に、人４がロボットアーム５を把持して力を加えた際の力を検出する場合に、力検出部５３が接触面からの抗力の影響を受けて、力検出部５３で正しく力を検出できない場合は、抗力の影響を受けるとし、「１」を設定する。逆に、力検出部５３が接触面からの抗力の影響を受けずに、人４からの力を正しく検出できる場合は、「０」を設定する。
【００８９】
具体的な例としては、図１０に示す例のように、手首部３１にのみ力検出部５３を設定しかつ、スポンジ４６をハンド３０で把持して拭き掃除をしている場合に、スポンジ４６を介してハンド３０が調理装置６に直接的に又は間接的に接触して調理装置６の天板から抗力の影響を受けると仮定する。このとき、さらに、人４の手４ａでハンド３０又は手首部３１を把持した場合には、力検出部５３で力検出が可能である。これに対して、人４の手４ａでハンド３０又は手首部３１以外の部分を把持した場合でかつ力検出部５３で力検出ができない。このような場合には、力検出部特性データベース１８は図９Ａのようになる。すなわち、設置した力検出部５３は、抗力の影響を受ける可能性があるため、図９Ａの「抗力の影響の可能性の有無」に関する情報は、把持位置に関わらず、全て「１」となる。さらに、力検出部５３は、ハンド３０又は手首部３１で把持した場合には力検出が可能であるため、手首部３１を示す「把持位置ＩＤ」が「３」の場合と、ハンド３０を示す「把持位置ＩＤ」が「４」の場合の「検出の有無」は、それぞれ、「１」なる。同様に、上腕リンク３３又は前腕リンク３２を把持した場合には、人４が加えた力を直接検出できないために、上腕リンク３３を示す「把持位置ＩＤ」が「１」の場合と前腕リンク３２を示す「把持位置ＩＤ」が「２」の場合との「検出の有無」は、それぞれ、「０」となる。
【００９０】
図２７Ａのように、前腕リンク３２においてる操作用の力センサ５３ａと力制御用の力センサ５３ｂを搭載していた場合の力検出部特性データベース１８は、図３０Ａとなる。図２７Ａに示すように、人４が前腕リンク３２を操作した際に、人４からの力を図２７Ａの操作用の力センサ５３ａで直接検出することができることから、「把持位置ＩＤ」が「２」の場合（図３０Ｂにより「前腕」を示す場合）の「検出の有無」は「１」となる。さらに、操作用の力センサ５３ａが調理装置６に直接的に又は間接的に接触しても抗力の影響を受けないとすると、「把持位置ＩＤ」が「２」の「抗力の影響の可能性の有無」は「０」となる。それ以外の把持位置については、図１０の例と同様となるため、説明は省略する。
【００９１】
さらに、図２７Ｂのように、ロボットアーム５の各関節部にトルクセンサ５３ｃ，５３ｄ，５３ｅを搭載している場合には、ロボットアーム５のどの部分を把持して操作しても、人４が加えた力を検出できることから、図３１Ａ及び図３１Ｂに示すように、全ての把持位置において、「検出の有無」が「１」となる。また、図２７Ｂのトルクセンサ５３ｃ，５３ｄ，５３ｅが、接触面からの抗力の影響を受けるようなセンサである場合には、全ての把持位置において、「抗力の影響の可能性の有無」は「１」となる。
【００９２】
以上のように、力検出部特性データベース１８を力センサなどの力検出部５３の特性に合わせて用意することで、後述する制御方法切替部１６で制御方法を切り替えることが可能となる。
【００９３】
−動作補正部−
動作補正部２０は、動作情報データベース１７の位置と姿勢と力と時間との情報にて、（ｉ）位置制御モード、（ｉｉ）インピーダンス制御モード、（ｉｉｉ）力制御モードと、それらを方向別に組み合わせた制御モードのうち、いずれかのモードでのロボットアーム５の動作中に、データ入力ＩＦ２６から動作指令部２７を介して動作補正部２０で動作補正開始の指令を受ける。すると、動作補正部２０は、制御方法切替部１６により制御方法を切り替えた後、動作補正情報データベース１８の動作補正情報に基づいて、人４がロボットアーム５に力を加えることで動作情報データベース１７のロボットアーム５の動作情報を補正する機能を有している。なお、（ｉ）、（ｉｉ）、（ｉｉｉ）のそれぞれの制御モードの詳細については、制御パラメータ管理部２１の動作と共に後述する。
【００９４】
以下、動作補正部２０の機能について説明する。
【００９５】
人４が、データ入力ＩＦ２６により、動作情報データベース１７の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業を選択して、選択情報を動作指令部２７に入力して指定する。指定された作業について、動作指令部２７は、動作補正部２０に作業選択の指示を行う。動作補正部２０は、動作情報データベース１７の中から選択された「作業ＩＤ」の作業の動作情報（具体的には、位置の情報と姿勢の情報と時間の情報と力の情報）を、フラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。
【００９６】
具体的には、図５の「作業ＩＤ」が「１」の作業が選択された場合は、「作業ＩＤ」が「１」でかつ「動作ＩＤ」が「１」の動作の場合には、「フラグ」が０、１、３、４、５ビット目が「１」なので、ロボットアーム５の手先位置のｘ、ｙ、φ、θ、ψが有効ということを示している。よって、ｘ、ｙ、φ、θ、ψについては位置制御モードで動作させ、ｚ軸については「フラグ」の８ビット目が「１」なので、力制御モードで動作するように、動作補正部２０から制御パラメータ管理部２１へ指令を出す。
【００９７】
以上により、図１６Ａに示すように、ロボットアーム５はＩＨクッキングヒータ６などの天板を拭き掃除作業を開始する。
【００９８】
ＩＨクッキングヒータ６などの天板を拭き掃除動作をしているときに、人４が、ＩＨクッキングヒータ６などの天板上の、拭き掃除動作をしている場所とは別の場所が汚れていること見つけ、かつ、ロボットアーム５に別の場所での拭き掃除動作をさせたいため、人４が、データ入力ＩＦ２６にロボットアーム５を別の場所に移動させるように、データ入力ＩＦ２６により補正開始の命令を動作指令部２７に入力したとする。このとき、動作指令部２７は、データ入力ＩＦ２６からの補正開始の指令を受けて、動作補正部２０に補正開始を出力する。
【００９９】
動作補正部２０は、データ入力ＩＦ２６からの補正開始の指令を受けて、動作情報データベース１７の補正パラメータフラグにしたがって、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。具体的には、図５の「作業ＩＤ」が「１」の作業が動作中（進捗情報が「１」の動作）の「動作ＩＤ」の補正パラメータフラグが、図５では、８ビット目のみ「１」でその他は「０」なので、ロボットアーム５の動作のうち、ｚ軸の力成分のみ補正が可能ということを表す。力成分を補正する場合には、その力成分を人４の加えた力で補正ができるように、力ハイブリッドインピーダンス制御モードの設定を行い、ｚ軸方向の制御方法の切り替えの指令を動作補正部２０から制御方法切替部１６へ出力する。
【０１００】
人４がロボットアーム５を把持するとき、人４がロボットアーム５についてどこの部分を把持しているかを把持位置検出部２３で検出し、検出結果を把持位置検出部２３から制御方法切替部１６へ入力する。すると、制御方法切替部１６で制御方法を把持位置に応じて切り替えて、その制御方法で動作するように、制御方法切替部１６が制御パラメータ管理部２１へ指令を出す。
【０１０１】
人４は、図１６Ｂに示すように、汚れ９１の付近を強めに力をかけて掃除するために、ロボットアーム５を人４が把持して、汚れのある部分９１ａに向かって人４からロボットアーム５に力を加える。加えた力の情報は、制御部２２の力検出部５３で検出し、制御パラメータ管理部２１を介して、動作補正部２０に入力される。動作補正部２０では、現在動作中の「作業ＩＤ」の情報と「動作ＩＤ」の動作情報のうち、力制御で動作しているｚ軸の力成分の値を、入力された力成分の値に修正して補正する。
【０１０２】
動作補正部２０により、人４がロボットアーム５に加えた力で、ロボットアーム５の動作を補正し、ロボットアーム５のＩＨクッキングヒータ６を擦る力を強めて拭き掃除作業を行う。
【０１０３】
以上により、動作補正部２０は、動作情報データベース１７の動作情報で動作している状態で、人４がロボットアーム５に力を加えることで、動作情報を補正することができるようになる。さらに、制御方法切替部１６により、人４がロボットアーム５のどの部分を把持しても、人４が加えた力を正しく検出することができるようになる。
【０１０４】
−制御方法切替部−
制御方法切替部１６は、
（ｉ）位置制御モードと、
（ｉｉ）インピーダンス制御モードと、
（ｉｉｉ）力制御モードと、
（ｉｖ）それらを方向別に組み合わせた制御モードと
のうち、いずれかのモードで動作中に動作補正部２０からの指令を受けると、把持位置検出部２３で検出された把持位置と力検出部特性データベース１８に記憶された情報とに基づいて、人４がロボットアーム５を把持して力のパラメータを補正する際の制御方法を切り替える。なお、本発明では、一例として、制御方法を切り替えするか否かを制御方法切替部１６で判断するとき、切り替え前（切り替えるか否かの判断前）の制御方法でロボットアーム５の動作を制御する制御方法に切り替える（結果的には、制御方法を変更しない）ときも、「制御方法に切り替える」と称する。
【０１０５】
例えば、図１０のように、手首部３１に、力検出部５３の一例としての力センサを配置した場合に、ロボットアーム５が（ｉｉｉ）の力制御モードで動作している最中に、（ｉｖ）の制御モードの一例としての力ハイブリッドインピーダンス制御モードで動作するよう指令を受けた場合の制御方法の切り替えについて、図１１のフローチャートに示す。
【０１０６】
まず、動作補正部２０から（ｉｖ）の力ハイブリッドインピーダンス制御モードによる制御を行うように制御方法切替部１６が指令を受けると、制御方法切替部１６は、把持位置検出部２３でロボットアーム５における人４の把持位置を検出して、検出した結果の情報を制御方法切替部１６に入力する（ステップＳ１）。
【０１０７】
次に、把持位置検出部２３により検出された把持位置の力検出部５３の抗力の有無に関する特性を、力検出部特性データベース１８を使って、制御方法切替部１６により検出する（ステップＳ２）。例えば、人４が前腕リンク３２を把持している場合は、図９Ｂの力検出部特性データベース１８の「前腕」を表す「把持位置ＩＤ」は「２」であることから、図９Ａによれば、「把持位置ＩＤ」が「２」の場合の「抗力の影響の可能性の有無」は「１」であると、制御方法切替部１６により検出する。同様に、人４がハンド３０を把持している場合は、図９Ｂの[ハンド]を表す「把持位置ＩＤ」は「４」であることから、図９Ａの「把持位置ＩＤ」が「４」の場合の、「抗力の影響の可能性の有無」は「１」であると、制御方法切替部１６により検出する。これらの場合は、「抗力の影響の可能性の有無」は「１」である（抗力の影響が有る）ので、ステップＳ２ではＹｅｓとなり、ステップＳ３に進む。もし、「抗力の影響の可能性の有無」は「０」である（抗力の影響を受けない）ならば、ステップＳ２ではＮｏとなり、ステップＳ４に進む。
【０１０８】
次に、ステップＳ３及びステップＳ４において、それぞれ、把持位置検出部２３により検出された把持位置の力検出部５３の検出の有無に関する特性を、力検出部特性データベース１８を使って、制御方法切替部１６により検出する（ステップＳ３、ステップＳ４）。このステップＳ３及びステップＳ４において、「検出の有無」は「１」である場合（力検出部５３で検出可能である場合）ならば、ステップＳ３及びステップＳ４において、それぞれＹｅｓとなり、ステップＳ５又はＳ７に進む。もし、「検出の有無」は「０」である場合（力検出部５３で検出可能である場合）ならば、ステップＳ３及びステップＳ４において、それぞれＮｏとなり、ステップＳ６又はＳ８に進む。例えば、ステップＳ３及びステップＳ４において、人４が前腕リンク３２を把持している場合は、図９Ｂの力検出部特性データベース１８の「前腕」の「把持位置ＩＤ」は「２」であることから、図９Ａの「把持位置ＩＤ」が「２」の場合の「検出の有無」が「０」であると、制御方法切替部１６により検出する（すなわち、前腕では力検出部５３で検出不可能である、と検出する）。同様に、人４がハンド３０を把持している場合は、図９Ｂの[ハンド]の「把持位置ＩＤ」は「４」となり、図９Ａの「把持位置ＩＤ」が「４」の場合の「検出の有無」が「１」であると、制御方法切替部１６により検出する（すなわち、ハンド３０では力検出部５３で検出可能である、と検出する）。
【０１０９】
ステップＳ５では、後述する高剛性位置制御モード（人４の力でロボットアーム５が移動できない制御方法）に制御方法切替部１６により切り替える。すなわち、ステップＳ２で「抗力の影響の可能性の有無」が「１」であり（すなわち、抗力の影響を受ける場合で）、且つステップＳ３で「検出の有無」が「１」である場合（例えば、ハンド３０を把持して、抗力の影響を受けるとともに、力検出部５３で検出可能である場合）は、ステップＳ５で、ロボットアーム５が接触面に直接的に又は間接的に接触しない位置で、後述する高剛性位置制御モード（人４の力でロボットアーム５が移動できない制御方法）に制御方法切替部１６により切り替える。なお、図２１Ａを基に後述するように、接触面で拭き掃除などの作業をしているロボットアーム５の現在の手先位置を取得し、その手先位置から高さｈだけ接触面から離した位置を設定することで、直接的に又は間接的に接触面に接触していない状態を設定することができる。また、「接触面に接触しない位置」でない位置の場合には、人がロボットアーム５を把持した時点で、「接触面に接触しない位置」まで切り替え動作を実行する。
【０１１０】
このように、ロボットアーム５が接触面に直接的に又は間接的に接触しないようにすることで、接触面からの抗力の影響を無くし、さらに高剛性位置制御モードにすることで、ロボットアーム５が容易に移動して接触面に直接的に又は間接的に接触してしまうことを防ぐことができる。
【０１１１】
一方、ステップＳ６では、人４の力でロボットアーム５が移動できる制御方法である低剛性位置制御モードに制御方法切替部１６により切り替える。すなわち、ステップＳ２で「抗力の影響の可能性の有無」が「１」であり、且つステップＳ３で「検出の有無」が「０」である場合（例えば、前腕リンク３２を把持して、抗力の影響を受けるとともに、力検出部５３で検出不可能である場合）は、ステップＳ６で、人４の力でロボットアーム５が移動できる制御方法である低剛性位置制御モードに切り替える。人４は、接触面に対してロボットアーム５を介して加えたい力をロボットアーム５にかけるために、人４は、ロボットアーム５を把持して接触面に接近する方向にロボットアーム５を押す。低剛性位置制御モードであるため、人４の加えた力でロボットアーム５が容易に移動でき、ロボットアーム５を接触面に直接的に又は間接的に接触させることができる。「検出の有無」が「０」であるため、人４がロボットアーム５に加えた力を力検出部５３で直接検出することはできないが、ロボットアーム５における接触面からの抗力が人４の加えた力と等しいことから、接触面からの抗力を力検出部５３で検出することで、人４の加えた力を力検出部５３で検出することができる。なお、接触面の摩擦の影響などにより、人４がロボットアーム５に加えた力が微小である場合に、人４がロボットアーム５に加えた力か、摩擦の影響による誤検出か、の区別がつかない場合には、力検出部５３で検出された力が、ある閾値以上（例えば０．５（Ｎ））の場合のみ、有効とすることも可能である。
【０１１２】
さらに、ステップＳ７では、制御方法切替部１６による制御方法の切り替えをしない。すなわち、ステップＳ２で「抗力の影響の可能性の有無」が「０」であり、且つステップＳ４で「検出の有無」が「１」である場合（図２７Ａのように力センサ５３ａ，５３ｂを配置し、前腕リンク３２を把持した場合：図３０Ａ参照）は、制御方法の切り替えをしない。すなわち、ロボットアーム５が人４の加えた力で移動したとしても、接触面からの抗力の影響はなく、さらに、「検出の有無」が「１」であるので、人４の加えた力を力検出部５３で直接検出することができるため、（ｉｖ）の力ハイブリッドインピーダンス制御モードに切り替える前の力制御モードのままで制御するよう設定を行う（言い換えれば、Ｓ２及びＳ４の切り替え判断を行なう前（切り替える判断の前）の制御モードのままで制御するよう設定を行う、又は、力制御モードに切り替えるよう設定を行う）。なお、ここで、制御方法切替部１６による制御方法の切り替えを行わないとしたが、位置制御モードに切り替えても、力を正しく検出することができるため、制御方法の切り替えを行わない代わりに、位置制御モードに制御方法切替部１６により切り替えるようにしてもよい。
【０１１３】
また、ステップＳ８では、接触面からの抗力の検出が不可能であるために、人４が加えた力を検出することはできず、ステップＳ９に進む。ステップＳ９では、人４に対して警告を表示するなど、検出ができなかった事を人４に通知する。すなわち、ステップＳ２で「抗力の影響の可能性の有無」が「０」であり、且つステップＳ４で「検出の有無」が「０」である場合は、接触面からの抗力の検出が不可能であるために、ステップ８で、人４が加えた力を検出することはできないと、制御方法切替部１６により判断する。したがって、ステップＳ９において、人４に対して警告を表示するなど、検出ができなかった事を人４に制御方法切替部１６により通知する。
【０１１４】
−動作記憶部−
動作記憶部１５は、動作補正部２０により補正した動作情報を動作情報データベース１７に記憶する。さらに、動作記憶部１５には、制御パラメータ管理部２１からロボットアーム５の手先位置（ハンド３０の位置）及び姿勢と人４がロボットアーム５にかけた力の情報が入力され、動作記憶部１５で記憶する。
【０１１５】
（制御装置本体部１１）
制御装置本体部１１は、制御パラメータ管理部２１と、制御部２２とを有するように構成される。制御部２２と制御パラメータ管理部２１との間では、ロボットアーム５の手先位置又は力の情報などが入出力される。
【０１１６】
−制御パラメータ管理部−
次に、制御パラメータ管理部２１の詳細について説明する。
【０１１７】
制御パラメータ管理部２１は、動作補正部２０又は制御方法切替部１６の指示に基づいて、ロボットアーム５の位置制御モードと、インピーダンス制御モードと、ハイブリッドインピーダンス制御モードと、（ｉｖ）の力ハイブリッドインピーダンス制御モードと、高剛性位置制御モードと、低剛性位置制御モードとの６つのモードの間で制御モードを切り替える設定を行う。また、制御パラメータ管理部２１は、インピーダンス制御モード時及び力ハイブリッドインピーダンス制御モード時の機械インピーダンス設定値の設定を行う。また、制御パラメータ管理部２１は、後述するインピーダンス計算部５１で出力する手先位置及び姿勢目標補正出力ｒｄ△の設定及び目標軌道生成部５５への動作情報の設定を行う。制御パラメータ管理部２１は、動作補正部２０又は制御方法切替部１６の指示に基づいて、設定された制御モードに従ってロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２の制御の下にロボットアーム５を動作させる。さらに、制御パラメータ管理部２１は、制御部２２からロボットアーム５の手先位置又は力の情報などを動作補正部２０へ通知を行う。
【０１１８】
（ｉ）位置制御モード
位置制御モードは、後述する目標軌道生成部５５の手先位置と姿勢目標ベクトル指令とに基づいてロボットアーム５が作動するモードであり、人４がロボットアーム５に力を加えてもロボットアーム５は移動しないようにロボットアーム５の動作を制御する制御方法のモードである。具体的には、かき混ぜ作業又は拭き掃除作業などの作業時におけるロボットアーム５の移動を伴って動作するモードが位置制御モードである。
【０１１９】
（ｉｉ）インピーダンス制御モード
インピーダンス制御モードは、力検出部５３で検出され、かつ人４などからロボットアーム５に加わる力に応じて、ロボットアーム５が作動するようにロボットアーム５の動作を制御する制御方法のモードである。例えば、図８に示すように、人４がロボットアーム５を直接持って、作業場所（図８では鍋３の位置）までロボットアーム５を誘導する場合に動作するモードがインピーダンス制御モードである。
【０１２０】
（ｉｉｉ）力制御モード
力制御モードは、動作補正部２０から制御パラメータ管理部２１へ設定された力で対象物をロボットアーム５で押し付けながら動作するようにロボットアーム５の動作を制御する制御方法の制御モードである。例えば、図１３のように、ＩＨクッキングヒータ６などの天板を拭き掃除作業する際に、天板の表面に力を加えて擦るような拭き掃除作業の場合、又は、図１４のように、鍋３の底に力を加えて擦るようなかき混ぜ作業の場合などの、力を加えて制御する方向に使用する制御モードが力制御モードである。
【０１２１】
（ｉｖ）ハイブリッドインピーダンス制御モード
ハイブリッドインピーダンス制御モードは、ロボットアーム５が位置制御モードで動作しているときに、ロボットアーム５に加わる力が力検出部５３により検出され、かつ力検出部５３で検出された力に応じて、ロボットアーム５が作動するようにロボットアーム５の動作を制御する制御方法のモードである。具体的には、ロボットアーム５が、図１２Ａに示すように、ロボットアーム５が位置制御モードによるかき混ぜ業を行っているときに、人４が鍋３の中の底側の部分をかき混ぜることができるようにロボットアーム５の動作を補正したい場合に、制御パラメータ管理部２１は、ハイブリッドインピーダンス制御モードに切り替える指令を制御部２２へ出力する。その結果、図１２Ｂに示すように、人４がロボットアーム５を把持しながら、ハイブリッドインピーダンス制御モードにより下方向に力をかけることで（図１２Ｂの下向きの矢印参照）、水平方向を位置制御モードでかき混ぜながら、図１２Ｃの下向きの矢印及び下側の回転方向の矢印で示すように、垂直方向すなわち鍋底をかき混ぜる動作に補正することができるようになる。このような制御方法がハイブリッドインピーダンス制御モードである。
【０１２２】
（ｖ）力ハイブリッドインピーダンス制御モード
力ハイブリッドインピーダンス制御モードは、ロボットアーム５が力制御モードで動作しているときに、人４からロボットアーム５に加わる力に応じて、ロボットアーム５が作動するようにロボットアーム５の動作を制御する制御方法のモードである。具体的には、図１６ＡのようにＩＨクッキングヒータ６などの天板を拭き掃除作業をしているときに、図１６Ｂのように汚れがひどい部分９１ａを人４が見つけて、ロボットアーム５を把持して汚れがひどい部分９１ａまでロボットアーム５を移動させて、ロボットアーム５が天板に加える力を補正する際に使用するモードである。なお、力ハイブリッドインピーダンス制御モードの具体的な制御モードは、制御方法切替部１６により切り替えられたモードが力ハイブリッドインピーダンス制御モードである。
【０１２３】
以上の制御モードは、６軸の方向別にそれぞれ別個に設定することができる。
例えば、図１６Ａの拭き掃除作業は、６軸の方向別に、ハイブリッドインピーダンス制御モードか、インピーダンス制御モードか、位置制御モードかを制御方法切替部１６により切り替え、さらに、制御方法切替部１６により指定した力を作用させて動作する力制御モードで動作させる制御モードである。なお、力制御モードが設定された方向にインピーダンス制御モードを設定することはできない（力制御モードとインピーダンス制御モードは排他的な関係）。
【０１２４】
例えば、図１６ＡのようにＩＨクッキングヒータ６などの天板を拭き掃除作業する際に、掃除面に平行に円状に動作しながら、掃除面に垂直下向きに指定した力をかけて、拭き掃除をする場合には、具体的には、（ｘ，ｙ，ｚ，φ，θ，ψ）の６軸それぞれに以下の制御モードを設定する。すなわち、（ｘ，ｙ）成分がハイブリッドインピーダンス制御モード、（φ，θ，ψ）成分がインピーダンス制御モードで、ｚ軸成分が力制御モードである。ｚ軸成分の力の補正を行う場合には、力ハイブリッドインピーダンス制御モードに切り替える。
【０１２５】
このように掃除面と水平な方向はハイブリッドインピーダンス制御モードとすることで、位置制御モードで動作している最中に、人４などからロボットアーム５に加わる力に応じて、ロボットアーム５を移動させることができる。さらに、（φ，θ，ψ）成分をインピーダンス制御モードとすることで、停止している状態で人４などからロボットアーム５に加わる力に応じて、ロボットアーム５の姿勢を変更することができるようになる。また、ｚ軸成分を力制御モードに設定することで、指定された力で押し付けながら動作することができるようになる。さらに、力ハイブリッドインピーダンス制御モードにすることで、人４が加えた力で拭き掃除をするよう、ロボットアーム５の動作を補正することができる。なお、（ｘ，ｙ，ｚ，φ，θ，ψ）の６軸のうち、ｚ軸成分が力制御モードで、その他の軸は位置制御モードで動作させても良い。その場合は、衝突など不用意な力がロボットアーム５に加わっても、位置制御成分を誤って移動させることはない。
【０１２６】
高剛性位置制御モードは、ロボットアーム５の動作中の位置制御モードをさらに高剛性にした制御モードである。具体的には、後述する位置誤差補償部５６でのゲインを大きくすることで実現し、人４が力を加えても、ロボットアーム５を容易に移動させることができない。そのため、接触面に直接的に又は間接的に接触していない状態で、高剛性位置制御モードに切り替えることで、接触面からの抗力の影響を受けないため、人４がかけた力を正しく検出することができる。さらに、接触面で拭き掃除などの作業をしているロボットアーム５の現在の手先位置を取得し、その手先位置から高さｈだけ接触面から離した位置を設定することで、直接的に又は間接的に接触面に接触していない状態を設定することができる（図２１Ａに図示）。
【０１２７】
低剛性位置制御モードは、ロボットアーム５の動作中の位置制御モードをさらに低剛性にした制御モードである。具体的には、後述する位置誤差補償部５６でのゲインを小さくすることで実現し、人４が力を加えた場合に、ロボットアーム５を容易に移動させることができる。そのため、人４が把持した位置で力検出部５３で力が検出できない場合には、人４がロボットアーム５を直接的に又は間接的に接触面に接触する（接触面に衝突する）まで移動させて接触位置で停止させ、その接触面からの抗力を力検出部５３で検出することで、人４がかけた力を正しく検出することができる。
【０１２８】
これらの制御モードは、ロボットアーム５の動作の際に、ロボットアーム５の方向及び姿勢別にそれぞれ適切な制御モードを設定して動作させる。
【０１２９】
さらに、人４が、ハイブリッドインピーダンス制御モード又はインピーダンス制御モードでロボットアーム５が動作中に、補正するパラメータに応じて、機械インピーダンスパラメータ又はインピーダンス計算部５１で出力する手先位置及び姿勢目標補正出力ｒｄ△の設定を変更する。
【０１３０】
機械インピーダンス設定値の設定パラメータとしては、慣性Ｍと粘性Ｄと剛性Ｋとがある。機械インピーダンス設定値の各パラメータの設定は、補正値を使って、以下の評価式に基づいて行う。
【０１３１】
【数２】
2010079564.tif 000004
【０１３２】
【数３】
2010079564.tif 000005
【０１３３】
【数４】
2010079564.tif 000006
【０１３４】
前記式（３）〜（５）中のＫＭ、ＫＤ、ＫＫはそれぞれゲインであり、それぞれある定数値である。
【０１３５】
制御パラメータ管理部２１は、前記式（３）〜（５）に基づき計算した機械インピーダンスパラメータの慣性Ｍと粘性Ｄと剛性Ｋとを制御部２２へ出力する。
【０１３６】
前記式（３）〜（５）により、例えば、図１２Ｂのように、人４がロボットアーム５のハンド３０で把持されたレードル９を使用して鍋３の中の上側の部分をかき混ぜている動作に対して、鍋３の中の底側の部分をかき混ぜるようロボットアーム５の動作を補正させたい場合に、ロボットアーム５のｚ軸以外の位置成分及び姿勢成分が簡単に動くと、ロボットアーム５の動作の補正作業がやりにくくなる。そこで、制御パラメータ管理部２１により、ロボットアーム５のｚ軸以外の位置成分及び姿勢成分についてのみ、上述の補正値を高く（具体的には、例えば、上述の補正値の約１０倍に）設定することで、ロボットアーム５の粘性Ｄ及び剛性Ｋが大きくなるように設定されることになり、ロボットアーム５の動きに抵抗感又は硬さが生じ、ロボットアーム５が動きにくくなる。
【０１３７】
又は、別の方法として、インピーダンス計算部５１から出力される手先位置及び姿勢目標補正出力ｒｄ△の各成分のうち、ｚ軸以外の値を全て０にする方法がある。これによって、ｚ軸以外は、人４の力で移動できなくなるため、誤操作を防ぐことができる。
【０１３８】
さらに、上述したように、制御パラメータ管理部２１から、動作記憶部１５と動作補正部２０とに、ロボットアーム５の手先位置及び姿勢と、人４の加えた力の情報とを通知する必要がある。そのため、制御部２２から制御パラメータ管理部２１にロボットアーム５の手先位置及び力の情報を受けると、制御パラメータ管理部２１は、動作記憶部１５と動作補正部２０とへ通知を行う。また、動作補正部２０から制御パラメータ管理部２１に入力された、位置及び姿勢と時間となどの動作情報を、制御パラメータ管理部２１から制御部２２へ通知する。
【０１３９】
−制御部−
次に、制御部２２の詳細について、図３により説明する。制御部２２は、目標軌道生成部５５と、ハンド制御部５４と、力検出部５３と、インピーダンス計算部５１と、位置制御系５９（位置誤差補償部５６と、近似逆運動学計算部５７と、順運動学計算部５８とを有する。）と、位置誤差計算部８０とを有するように構成されている。力検出部５３は、図３では制御部２２の一部として図示しているが、制御部２２とは別の構成としてもよい。
【０１４０】
ロボットアーム５からは、それぞれの関節軸のエンコーダ４４により計測された関節角の現在値（関節角度ベクトル）ベクトルｑ＝［ｑ１，ｑ２，ｑ３，ｑ４，ｑ５，ｑ６］Ｔが出力され、入出力ＩＦ２４により制御部２２に取り込まれる。ただし、ｑ１，ｑ２，ｑ３，ｑ４，ｑ５，ｑ６は、それぞれ、第１関節部３５、第２関節部３６、第３関節部３７、第４関節部３８、第５関節部３９、第６関節部４０の関節角度である。
【０１４１】
目標軌道生成部５５は、位置制御モードで、又は力制御モードで、又は方向別に位置制御モード若しくは力制御モードで、ロボットアーム５を動作するように、動作補正部２０で生成されかつ制御パラメータ管理部２１を介して目標軌道生成部５５に入力された動作情報から、目標とする手先位置及び姿勢目標ベクトルｒｄと目標とする手先（ハンド３０）にかかる力ベクトルｆｄとを目標軌道生成部５５により生成する。
【０１４２】
具体的には、動作補正部２０から制御パラメータ管理部２１を介して、動作情報が目標軌道生成部５５に入力されると、目標とするロボットアーム５の動作を実現するための手先位置及び姿勢目標ベクトルｒｄと目標とする手先にかかる力ベクトルｆｄとそれぞれの方向別にどのパラメータが有効かを示すフラグとが、目標軌道生成部５５から位置誤差計算部８０に出力される。目標とするロボットアーム５の動作は、目的とする作業に応じて動作補正部２０からそれぞれの時間（ｔ＝０、ｔ＝ｔ１、ｔ＝ｔ２、・・・）でのポイント毎の位置及び姿勢（ｒｄ０、ｒｄ１、ｒｄ２、・・・）と力（ｆｄ０、ｆｄ１、ｆｄ２、・・・）とが与えられており、目標軌道生成部５５は、多項式補間を使用し、各ポイント間の軌道及び力を補間し、手先位置及び姿勢目標ベクトルｒｄと目標力ベクトルｆｄとを生成する。
【０１４３】
インピーダンス制御モード時には、インピーダンス制御モードに切り替え時のロボットアーム５の手先位置を、目標とする手先位置及び姿勢目標ベクトルｒｄとして出力する。さらに、動作情報データベース１７の動作情報のハンド３０の開閉フラグにより、後述するハンド制御部５４へ、ハンド３０の開閉指令を出す。
【０１４４】
５４はハンド制御部であり、目標軌道生成部５５から入力した開閉フラグにより、ハンド３０を開閉するよう、入出力ＩＦ２４を介してロボットアーム５へ指令を出す。
【０１４５】
５３は力検出部であり、人４等とロボットアーム５の接触によってロボットアーム５に加わる外力Ｆｅｘｔを検出する。ただし、手先に重量ｍの物体を把持して作業している場合は、検出したＦｅｘｔからｍｇをあらかじめ減じておく。ここで、ｇは重力加速度である。把持物体の質量ｍの値は、物体を把持する前に人４がデータ入力ＩＦ２６により力検出部５３に入力することができる。
【０１４６】
インピーダンス計算部５１は、ロボットアーム５に機械インピーダンス設定値への前記ロボットアーム５の機械インピーダンスの値の制御を実現する機能を果たす部分であり、制御パラメータ管理部２１から位置制御モードに切り替えられた際には０を出力する。
【０１４７】
一方、インピーダンス制御モード及びハイブリッドインピーダンス制御モードに切り替えられた際には、制御パラメータ管理部２１で設定されたインピーダンスパラメータである慣性Ｍと粘性Ｄと剛性Ｋと、関節角の現在値ｑと、力検出部５３が検出した外力Ｆｅｘｔとより、ロボットアーム５に機械インピーダンス設定値への前記ロボットアーム５の機械インピーダンスの値の制御を実現するための手先位置及び姿勢目標補正出力ｒｄΔを以下の式（６）によりインピーダンス計算部５１で計算し、計算して求められた手先位置及び姿勢目標補正出力ｒｄΔを位置誤差計算部８０に出力する。
【０１４８】
さらに、制御パラメータ管理部２１で力制御モードに切り替えられた際には、「フラグ」で指定された力成分が存在する場合には、制御パラメータ管理部２１で設定されたインピーダンスパラメータである慣性Ｍと粘性Ｄと剛性Ｋと、関節角の現在値ｑと、力検出部５３が検出した外力Ｆｅｘｔと、目標軌道生成部５５から出力されるｆｄとより、ロボットアーム５に機械インピーダンス設定値への前記ロボットアーム５の機械インピーダンスの値の制御を実現するための手先位置及び姿勢目標補正出力ｒｄΔを以下の式（１０）によりインピーダンス計算部５１で計算して、計算して求められた手先位置及び姿勢目標補正出力ｒｄΔを位置誤差計算部８０に出力する。
【０１４９】
手先位置及び姿勢目標補正出力ｒｄΔは、目標軌道生成部５５の出力する手先位置及び姿勢目標ベクトルｒｄに位置誤差計算部８０で加算され、手先位置及び姿勢補正目標ベクトルｒｄｍが生成される。ただし、ハイブリッドインピーダンス制御モード時に、補正パラメータに応じて、ロボットアーム５の動作を拘束する場合に、例えばｚ軸のみロボットアーム５が動くようにするには、手先位置及び姿勢目標補正出力ｒｄΔのｚ成分以外を０にインピーダンス計算部５１で設定する。
【０１５０】
【数５】
2010079564.tif 000007
ただし、
【０１５１】
【数６】
2010079564.tif 000008
【０１５２】
【数７】
2010079564.tif 000009
【０１５３】
【数８】
2010079564.tif 000010
であり、sはラプラス演算子である。
【０１５４】
【数９】
2010079564.tif 000011
ただし、Ｍ，Ｄ，Ｋは式（７）、式（８）、式（９）により算出する。
【０１５５】
５８はロボットアーム５からのそれぞれの関節軸のエンコーダ４４により計測された関節角の現在値ｑである関節角度ベクトルｑが、入出力ＩＦ２４を介して入力される順運動学計算部である。順運動学計算部５８は、ロボットアーム５の関節角度ベクトルｑから、手先位置及び姿勢ベクトルｒへの変換の幾何学的計算を順運動学計算部５８で行う。順運動学計算部５８で計算された手先位置及び姿勢ベクトルｒは、位置誤差計算部８０及びインピーダンス計算部５１及び目標軌道生成部５５に出力される。
【０１５６】
５６は位置誤差補償部であり、ロボットアーム５において計測される関節角度ベクトルｑより順運動学計算部５８により計算される手先位置及び姿勢ベクトルｒと、手先位置及び姿勢補正目標ベクトルｒｄｍとの誤差ｒｅが位置誤差計算部８０で求められたのち、その誤差ｒｅが位置誤差補償部５６に入力され、位置誤差補償部５６から、位置誤差補償出力ｕｒｅが近似逆運動学計算部５７に向けて出力される。
【０１５７】
さらに、高剛性位置制御モードが設定された際に、定数の対角行列である比例、微分、積分の３つのゲインをあらかじめ設定された値に大きく設定する（通常の位置制御モードと比較して大きな値を設定する。具体的には、通常の位置制御モード時の２倍程度の値に設定する。ここで、高剛性とは、通常の位置制御と比較して、剛性が高くなることを意味する。値を通常の位置制御モード時の２倍程度にすると、剛性を約２倍まで高くすることができる。このようにすることで、高剛性の位置制御を実現することができる。なお、前記ゲインを各成分毎に値を変えることで、例えば、ｚ軸方向のみ高剛性で、その他の方向は通常の位置制御で動作するよう制御することができる。
【０１５８】
また、低剛性位置制御モードが設定された際に、定数の対角行列である比例、微分、積分の３つのゲインをあらかじめ設定された値に小さく設定する。すなわち、通常の位置制御モードと比較して、小さな値を設定する。具体的には、通常の位置制御モード時の半分程度の値に設定する。ここで、低剛性とは、通常の位置制御と比較して、剛性が低くなることを意味する。値を通常の位置制御モード時の半分程度にすると、剛性を約半分まで低くすることができる。このようにすることで、低剛性の位置制御を実現することができる。なお、前記ゲインを各成分毎に値を変えることで、例えば、ｚ軸方向のみ低剛性で、その他の方向は通常の位置制御で動作するよう制御することができる。
【０１５９】
近似逆運動学計算部５７では、位置誤差補償部５６により入力される位置誤差補償出力ｕｒｅとロボットアーム５において計測される関節角度ベクトルｑとに基づき、近似式ｕｏｕｔ＝Ｊｒ（ｑ）−１ｕｉｎにより、逆運動学の近似計算を行う。ただし、Ｊｒ（ｑ）は、
【０１６０】
【数１０】
2010079564.tif 000012
【０１６１】
の関係を満たすヤコビ行列、ｕｉｎは近似逆運動学計算部５７への入力、ｕｏｕｔは近似逆運動学計算部５７からの出力であり、入力ｕｉｎを関節角度誤差ｑｅとすれば、ｑｅ＝Ｊｒ（ｑ））−１ｒｅのように手先位置及び姿勢誤差ｒｅから関節角度誤差ｑｅへの変換式となる。したがって、位置誤差補償部５６から位置誤差補償出力ｕｒｅが近似逆運動学計算部５７に入力されると、近似逆運動学計算部５７からの出力として、関節角度誤差ｑｅを補償するための関節角度誤差補償出力ｕｑｅが近似逆運動学計算部５７から入出力ＩＦ２４を介してロボットアーム５のモータドライバ２５に向けて出力される。
【０１６２】
関節角度誤差補償出力ｕｑｅは、入出力ＩＦ２４のＤ／Ａボードを介してロボットアーム５のモータドライバ２５に電圧指令値として与えられ、各モータ４３により各関節軸が正逆回転駆動されロボットアーム５が動作する。
【０１６３】
以上のように構成される制御部２２に関して、ロボットアーム５のインピーダンス制御動作の原理について説明する。
【０１６４】
インピーダンス制御動作（ハイブリッドインピーダンス制御も同様）の基本は、位置誤差補償部５６による手先位置及び姿勢誤差ｒｅのフィードバック制御（位置制御）であり、図３の点線で囲まれた部分が位置制御系５９になっている。位置誤差補償部５６として、例えば、ＰＩＤ補償器を使用すれば、手先位置及び姿勢誤差ｒｅが０に収束するように位置制御系５９による制御が働き、目標とするロボットアーム５のインピーダンス制御動作を実現することができる。
【０１６５】
制御パラメータ管理部２１でインピーダンス制御モード若しくはハイブリッドインピーダンス制御モード若しくは力ハイブリッドインピーダンス制御モードに切り替えられた場合には、前記説明した位置制御系５９に対し、インピーダンス計算部５１により手先位置及び姿勢目標補正出力ｒｄΔが位置誤差計算部８０で加算され、手先位置及び姿勢の目標値の補正が行われる。このために、前記した位置制御系５９は、手先位置及び姿勢の目標値が本来の値より微妙にずれることになり、結果的に、前記ロボットアーム５の機械インピーダンスの値を前記適切に設定された設定値に制御する動作が実現され、位置制御系５９の位置制御動作を補正することができる。手先位置及び姿勢目標補正出力ｒｄΔはインピーダンス制御モード若しくはハイブリッドインピーダンス制御モードの場合は式（６）により算出され、力ハイブリッドインピーダンス制御モードの場合は式（１０）による算出されるため、前記ロボットアーム５の慣性Ｍと粘性Ｄと剛性Ｋとの機械インピーダンスの値を前記適切に設定された設定値に制御する動作が実現される。
【０１６６】
（周辺装置１４）    
周辺装置１４は、データ入力ＩＦ(インターフェース)２６と入出力ＩＦ(インターフェース)２４とモータドライバ２５と表示部２とを有するように構成される。制御部２２から入出力ＩＦ２４には制御信号などの制御情報が出力される。動作補正部２０から、動作情報データベース１７で記憶された補正パラメータなどの補正情報及び動作ＩＤに該当する映像若しくは写真若しくはテキストが表示部２へ出力されて、動作情報で記述されたロボットアーム５の動作の映像若しくは写真若しくはテキストを表示部２で表示する。
【０１６７】
入出力ＩＦ２４は、パーソナルコンピュータのＰＣＩバスなどの拡張スロットに接続された、例えばＤ／ＡボードとＡ／Ｄボードとカウンタボードとなどを有するように構成されている。入出力ＩＦ２４は、ロボットアーム５の各関節部の、後述するエンコーダ４４より出力される各関節角度情報及びハンド３０のエンコーダ６１より出力される角度情報が入力されて制御部２２に入力する。一方、入出力ＩＦ２４には、制御部２２から制御信号などの制御情報が入力されるとともに、モータドライバ２５に制御指令値などの制御情報を出力する。モータドライバ２５は、ロボットアーム５の各関節部の、後述するモータ４３及びハンド３０のモータ６２へ制御指令値などの制御情報を出力する。
【０１６８】
データ入力ＩＦ（インターフェース）２６は、人４がキーボード又はマウス又はマイクなどの入力装置を使用して、後述する動作情報を入力したり変更したりするためのインターフェースである。また、データ入力ＩＦ２６は、図１の操作盤１３のボタン１３ａなどの入力装置を使用して、人４から動作指令部２７に対して制御動作開始及び終了、動作の補正開始及び終了の指令を受けるようにしてもよい。ボタン１３ａとしては、例えばトグルスイッチとして１つのボタンで制御動作開始及び制御動作終了をそれぞれ入力可能としてもよいし、制御動作開始ボタンと制御動作終了ボタンと別々に設けてもよい。
【０１６９】
表示部２は、例えばロボットアーム５又は作業台７の側面に設置されたディスプレイ装置であり、動作情報などを表示する。
【０１７０】
以上の原理に基づく制御プログラムの実際の動作ステップについて、図１５のフローチャートに基づいて説明する。
【０１７１】
ロボットアーム５の関節部それぞれのエンコーダ４４により計測された関節角度データ（関節変数ベクトル又は関節角度ベクトルｑ）が、エンコーダ４４から、入出力ＩＦ２４を介して、制御装置本体部１１の制御部２２に取り込まれる(ステップＳ１０１)。
【０１７２】
次いで、制御部２２に取り込まれた関節角度データ（関節変数ベクトル又は関節角度ベクトルｑ）に基づいて、逆運動学計算部５７にてロボットアーム５の運動学計算に必要なヤコビ行列Ｊｒ等の計算を行う (ステップＳ１０２)。
【０１７３】
次いで、順運動学計算部５８にて、ロボットアーム５のそれぞれのエンコーダ４４からの関節角度データ（関節変数ベクトル又は関節角度ベクトルｑ）から、ロボットアーム５の現在の手先位置及び姿勢ベクトルｒを計算して、位置誤差計算部８０と目標軌道生成部５５とインピーダンス計算部５１とに出力する（ステップＳ１０３）。
【０１７４】
次いで、動作補正部２０から制御パラメータ管理部２１を介して送信された動作情報に基づき、目標軌道計算部５５は、ロボットアーム５の手先位置及び姿勢目標ベクトルｒｄと目標力ベクトルｆｄとを計算し、インピーダンス制御モード時は、ロボットアーム５の手先位置を、目標とする手先位置及び姿勢目標ベクトルｒｄとして位置誤差計算部８０に出力する（ステップＳ１０４）。
【０１７５】
次いで、力検出部５３は、モータ４３の駆動電流値ｉと、関節角度データ（関節変数ベクトル又は関節角度ベクトルｑ）と、関節角度誤差補償出力ｕｑｅとから、ロボットアーム５の手先における等価手先外力Ｆｅｘｔを計算してインピーダンス計算部５１に出力する（ステップＳ１０５）。
【０１７６】
次いで、ステップＳ１０６では、制御パラメータ管理部２１において、後述する動作補正部２０により補正有りと指示され且つ補正パラメータで６軸のうち力成分を補正する場合であって、かつ、制御方法切替部１６で低剛性位置制御モードに切り替えられた場合は、力成分が設定された成分は低剛性位置制御モードに制御モードを切り替えられる。その後、ステップＳ１０７へ進む。
【０１７７】
また、ステップＳ１０６では、制御パラメータ管理部２１において、後述する動作補正部２０により補正有りと指示され且つ補正パラメータで６軸のうち力成分を補正する場合であって、かつ、制御方法切替部１６で高剛性位置制御モードに切り替えられた場合は、力成分が設定された成分は高剛性位置制御モードに制御モードを切り替えられる。その後、ステップＳ１０８へ進む。
【０１７８】
また、ステップＳ１０６では、制御パラメータ管理部２１において、６軸のうち位置成分を補正する場合は、変更したい位置成分をインピーダンス制御モードに制御方法切替部１６で変更する。その後、ステップＳ１１０へ進む。
【０１７９】
また、ステップＳ１０６では、制御パラメータ管理部２１において、補正なしの場合には、ステップＳ１０９へ進み、位置制御モードを設定する。
【０１８０】
また、ステップＳ１０６では、制御パラメータ管理部２１において、後述する動作補正部２０により補正有りと指示され且つ補正パラメータで６軸のうち力成分を補正する場合であって、かつ、制御方法切替部１６で切り替えなしと設定された場合は、切り替え前の制御方法（力制御モード）に切り替える。その後、ステップＳ１１０へ進む。
【０１８１】
ステップＳ１０７（インピーダンス計算部５１での処理）では、制御パラメータ管理部２１において、低剛性位置制御モードが設定された場合には、インピーダンス計算部５１で、手先位置及び姿勢目標補正出力ｒｄΔを０ベクトルとする。その後、ステップＳ１１１に進む。
【０１８２】
ステップＳ１０８（インピーダンス計算部５１での処理）では、制御パラメータ管理部２１において、高剛性位置制御モードが設定された場合には、インピーダンス計算部５１で、手先位置及び姿勢目標補正出力ｒｄΔを０ベクトルとする。その後、ステップＳ１１２に進む。
【０１８３】
ステップＳ１０９（インピーダンス計算部５１での処理）では、制御パラメータ管理部２１において、位置制御モードが設定された場合には、インピーダンス計算部５１で、手先位置及び姿勢目標補正出力ｒｄΔを０ベクトルとする。その後、ステップＳ１１３に進む。
【０１８４】
ステップＳ１１０では、制御パラメータ管理部２１において、インピーダンス制御モード若しくは力制御モードが設定された場合には、インピーダンス計算部５１では、制御パラメータ管理部２１において設定された機械インピーダンスパラメータの慣性Ｍと粘性Ｄと剛性Ｋと、関節角度データ（関節角度ベクトルｑ）と、力検出部５３により計算されたロボットアーム５に加わる等価手先外力Ｆｅｘｔとから、手先位置及び姿勢目標補正出力ｒｄΔが、インピーダンス計算部５１により計算される。さらに、補正パラメータに基づいて、手先位置及び姿勢目標補正出力ｒｄΔのいずれか成分の値を０に設定する。
【０１８５】
ステップＳ１１３では、位置誤差補償部５６では、手先位置及び姿勢目標ベクトルｒｄと手先位置及び姿勢目標補正出力ｒｄΔとの和である手先位置及び姿勢補正目標ベクトルｒｄｍと、現在の手先位置及び姿勢ベクトルｒとの差である手先位置及び姿勢の誤差ｒｅが計算される。位置誤差補償部５６の具体例としては、ＰＩＤ補償器が考えられる。定数の対角行列である比例、微分、積分の３つのゲインを適切に調整することにより、位置誤差が０に収束するように位置誤差補償部５６の制御が働く。その後、ステップＳ１１４に進む。
【０１８６】
ステップＳ１１１では、位置誤差補償部５６の定数の対角行列である比例、微分、積分の３つのゲインを適切に調整することにより、位置誤差が０に収束するように位置誤差補償部５６の制御が働く。そのゲインを、ある値まで小さくすることで、低剛性の位置制御を実現する。その後、ステップＳ１１４に進む。
【０１８７】
ステップＳ１１２では、位置誤差補償部５６の定数の対角行列である比例、微分、積分の３つのゲインを適切に調整することにより、位置誤差が０に収束するように位置誤差補償部５６の制御が働く。そのゲインを、ある値まで大きくすることで、高剛性の位置制御を実現する。その後、ステップＳ１１４に進む。
【０１８８】
ステップＳ１１４では、近似逆運動学計算部５７では、ステップＳ１０２で計算したヤコビ行列Ｊｒの逆行列を位置誤差補償出力ｕｒｅに近似逆運動学計算部５７で乗算することにより、位置誤差補償出力ｕｒｅを、手先位置及び姿勢の誤差に関する値から関節角度の誤差に関する値である関節角度誤差補償出力ｕｑｅに、近似逆運動学計算部５７により変換する。
【０１８９】
次いで、ステップＳ１１５では、関節角度誤差補償出力ｕｑｅが、近似逆運動学計算部５７から入出力ＩＦ２４を通じ、モータドライバ２５に与えられる。モータドライバ２５は、関節角度誤差補償出力ｕｑｅに基づき、関節部のそれぞれのモータ４３を流れる電流量を変化させる。この電流量の変化により、ロボットアーム５のそれぞれの関節部の回転運動が発生して、ロボットアーム５が動作を行なう。
【０１９０】
以上のステップＳ１０１〜ステップＳ１１５が制御の計算ループとして繰り返し実行されることにより、ロボットアーム５の動作の制御、すなわち、ロボットアーム５の機械インピーダンスの値を前記適切に設定された設定値に制御する動作を実現することができる。
【０１９１】
以上の動作補正部２０とデータ入力ＩＦ２６と動作記憶部１５と動作情報データベース１７と把持位置検出部２３と制御方法切替部１６と制御パラメータ管理部２１との動作ステップについて、図１７のフローチャートに基づいて説明する。
【０１９２】
人４は、データ入力ＩＦ２６により、動作情報データベース１７の作業の中からロボットアーム５に実行させたい作業を選択した選択指令、すなわち、選択された（指定された）「作業ＩＤ」の選択指令を動作指令部２７に入力する（ステップＳ５０）。
【０１９３】
次いで、動作指令部２７に入力された選択指令に基づいて、動作補正部２０は、動作情報データベース１７に記憶されかつ選択された（指定された）「作業ＩＤ」に関する動作情報の「フラグ」に従って制御モードを設定する（ステップＳ５１）。
【０１９４】
次いで、人４がデータ入力ＩＦ２６を使用して選択した作業についての動作開始の指令を動作指令部２７に入力すると、その動作開始指令を動作指令部２７が受けて、動作補正部２０を介して、制御パラメータ管理部２１へ、設定した制御モードで動作するよう指令を出す（ステップＳ５２）。制御パラメータ管理部２１は、設定した制御モードでロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２の制御の下にロボットアーム５を動作させる。
【０１９５】
次いで、ロボットアーム５での動作中に、人４がデータ入力ＩＦ２６を使用して、補正開始の指令の入力を動作指令部２７に行う（ステップＳ５３）。動作指令部２７が補正開始の指令を受け取ると、動作補正部２０に動作補正開始の指令を入力する。すると、動作補正部２０は、「動作パラメータフラグ」が力制御モードの場合は、制御方法切替部１６に制御方法を切り替えるよう指令を出す。制御方法切替部１６は、把持位置検出部２３により検出した把持位置（ステップＳ５４）と力検出部特性データベース１８に記憶された情報により、制御方法を決定して、決定した制御方法で動作するように、制御パラメータ管理部２１へ指令を出す（ステップＳ５５）。
【０１９６】
次いで、人４がロボットアーム５を把持して、補正したい方向に力をロボットアーム５にかけることで、動作補正部２０が動作情報を補正する。具体的には、人４が補正を行った力の情報を力検出部５３で検出し（ステップＳ５６）、力検出部５３で検出した結果の情報を、制御パラメータ管理部２１を介して、動作補正部２０に入力する。動作補正部２０では、現在動作中の「作業ＩＤ」及び「動作ＩＤ」の動作情報のうち、力制御で動作しているｚ軸の力成分の値を、入力された力成分の値に修正して補正する（ステップＳ５７）。
【０１９７】
次いで、動作補正部２０で補正された動作情報は、動作記憶部１５により、動作情報データベース１７に記憶される（ステップ５８）。
【０１９８】
以上の図１５の動作ステップＳ１０１〜ステップＳ１１５及び図１７のステップＳ５０〜ステップＳ５８により、動作情報に基づいてロボットアーム５の動作中に、人４がロボットアーム５のどの部分（いずれの位置）を直接把持しても、人４が加えた力を力検出部５３で正しく検出し、力検出部５３で検出した力情報で動作情報を動作補正部２０により補正することができる。
【０１９９】
なお、この例では、力制御モードで拭き掃除作業をしている最中に、人４がロボットアーム５に強めに力をかけて拭き掃除作業の力のかけ具合を補正するために、制御方法切替部１６で制御方法を切り替えて、ロボットアーム５の拭き掃除作業の動作補正を行う場合について説明している。例えば、制御方法を高剛性位置制御モードに切り替え、さらに接触面からの抗力の影響を無くすために、接触面から少し浮かせて状態（図２１Ａ参照）に切り替えて動作補正を行うが、人４が力を補正している最中は、高剛性位置制御モードであり且つ接触面から浮いた状態なので、補正した力を加えて、どれくらい汚れが落ちるのかをリアルタイムに確認しながら補正することができない。そこで、制御方法切替部１６では、図１１のフローチャートのステップＳ３にて、低剛性位置制御モード若しくは高剛性位置制御モードのいずれかに切り替える場合に、補正前の力制御モードと補正中の制御モード（低剛性位置制御モード若しくは高剛性位置制御モード）とを交互に切り替えを行う（具体的には０．０２秒毎に切り替える）。力制御モード時には補正した力で力制御を行い、補正中の制御モード（低剛性位置制御モード若しくは高剛性位置制御モード）では、補正した力で補正することを交互に繰り返すことで、人４が補正した値で作業が正確にできているかを確認しながら動作補正部２０により補正することが可能となる。
【０２００】
なお、この例では拭き掃除作業を例に説明したが、図１４に示したように力制御モードで鍋底をこすりながらかき混ぜ動作をしている最中も、同様の方法で動作補正部２０により補正することができる。
【０２０１】
また、この例では、手首（ハンド３０）に力検出部５３を搭載した場合を例に説明しているが、図２７Ａのように、操作用の力センサ５３ａと力制御用の力センサ５３ｂとを搭載していた場合、又は、図２７Ｂのように各関節にトルクセンサ５３ｃ，５３ｄ，５３ｅを搭載していた場合なども、図３０Ａ又は図３１Ａのようにの力検出部特性データベース１８を力センサ５３ａ，５３ｂ，５３ｃ，５３ｄ，５３ｅの特性に合わせて用意することで、同様の方法で補正することができる。
【０２０２】
なお、人４が図２８の操作Ａと操作Ｂの境目、若しくは、操作Ｂと操作Ｃの境目など、複数の把持位置にまたがって人４が操作している場合は、把持位置検出部２３において、人４の手４ａがより多く把持している把持位置を検出しても良い。
【０２０３】
（第２実施形態）
本発明の第２実施形態における、ロボットアームの制御装置の基本的な構成は、第１実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
【０２０４】
第１実施形態の場合と同様に、図１６Ａ及び図１６Ｂに示すように、ロボットシステム１を使って拭き掃除作業をする場合に、図１８に示すような複数人４Ａ，４Ｂで１つのロボットアーム５を複数箇所把持して操作する場合、又は、一人の人４が１つのロボットアーム５の複数箇所を把持する場合を例に説明する。  図１９は、第２実施形態におけるロボットシステム１を構成する、制御対象であるロボットアーム５と、ロボットアーム５の制御装置７０との詳細構成を示す図である。ロボットアーム５と、周辺装置１４と、制御パラメータ管理部２１と、制御部２２と、制御装置７０と、動作情報データベース１７と、力検出部特性データベース１８と、動作指令部２７と、動作記憶部１５とは、第１実施形態と同様であるので、説明は省略する。第１実施形態と大きく異なる点は、力検出部５３により検出した複数の力の情報から、後述する力算出方法テーブル８１を使用して、動作補正に使用する力を１つ算出する力算出部２８を備えていることである。
【０２０５】
把持位置検出部２３は、人４がロボットアーム５を把持するとき、人４がロボットアーム５のどの部分を把持して操作しているかを検出し、複数人４Ａ，４Ｂが把持している場合又は一人の人４が両手などを使って複数箇所を把持している場合は、それぞれの把持位置を検出する。具体的には、カメラなどの画像撮像装置１９の画像データより、操作している人４，４Ａ，４Ｂの手の画像認識を行い、その手が、ロボットアーム５の前腕リンク３２か上腕リンク３３かハンド３０かのいずれを把持して操作しているかを把持位置検出部２３により検出する。
【０２０６】
制御方法切替部１６は、把持位置検出部２３で検出された把持位置と、力検出部特性データベース１８で記憶された情報とにより、人４が把持して力のパラメータを補正する際の制御方法を切り替える。
【０２０７】
把持位置が複数箇所検出された場合には、制御方法切替部１６ではそれぞれの把持位置での制御方法を第１実施形態と同様の方法で求める。例えば、前腕リンク３２とハンド３０の２箇所を一人の人４が把持してロボットアーム５を操作した場合に、図９Ａの力検出部特性データベース１８を使用して、ロボットアーム５の前腕リンク３２を人４が把持した場合は、図９Ｂの力検出部特性データベース１８より、「把持位置ＩＤ」は「２」となり、図９Ａの力検出部特性データベース１８により、「把持位置ＩＤ」が「２」の「検出の有無」は「０」で、「抗力の影響の可能性の有無」は「１」であることが、力検出部特性データベース１８から制御方法切替部１６で検出される。同様に、ハンド３０を人４が把持した場合は、図９Ｂの力検出部特性データベース１８より、「把持位置ＩＤ」は「４」となり、図９Ａの力検出部特性データベース１８により、「把持位置ＩＤ」が「４」の「検出の有無」は「１」で、「抗力の影響の可能性の有無」は「１」であることが、力検出部特性データベース１８から制御方法切替部１６で検出される。そして、制御方法切替部１６は、それぞれの把持位置での制御方法を求める。例えば、「把持位置ＩＤ」が「２」の場合（前腕」の場合）は、第１実施形態と同様に図１１のフローチャートを使って、「検出の有無」は「０」で、「抗力の影響の可能性の有無」は「１」であるので、低剛性位置制御モードとなる（図１１のステップＳ６参照）。把持位置ＩＤが「４」の場合（ハンド」の場合）は、第１実施形態と同様に図１１のフローチャートを使って、「検出の有無」は「１」で、「抗力の影響の可能性の有無」は「１」であるので、高剛性位置制御モードとなる（図１１のステップＳ５参照）。次に、求めた複数の制御モード（この例では、低剛性位置制御モードと高剛性位置制御モード）を制御方法切替部１６により交互に繰り返して切り替える。
【０２０８】
力検出部５３により、第１実施形態と同様の方法で、全ての把持位置での力を検出し、検出した結果が、制御パラメータ管理部２１を介して、動作補正部２０に入力される。
【０２０９】
図２０Ａは、力算出部２８に内蔵されているデータベース又はメモリ２８ａに記憶された力算出方法テーブル８１の例である。
【０２１０】
「算出方法」は、図１９の力算出部２８で、力検出部５３により検出された複数の力に関する情報（力情報）から、どのような方法で１つの力に関する情報（力情報）を算出するかを記述したものである。具体的には、複数の力情報の中から最大値を算出する場合には「最大」と記述し、複数の力情報の中から最小値を算出する場合には「最小」と記述し、複数の力情報の平均値を算出する場合には「平均」と記述し、複数の力情報を合算して算出する場合には「合算」と記述し、複数の力情報に重み係数を乗算した後に合算して算出する場合には「重み付け」と記述する。
【０２１１】
力算出部２８は、制御方法切替部１６で複数の制御方法を切り替えている際に、人４がロボットアーム５を複数の把持位置で把持し、それぞれの把持位置で力検出部５３により検出した力の情報から、力算出方法テーブル８１を使用して、動作補正に使用する力を１つ算出する。
【０２１２】
具体的には、力算出部２８は、力算出方法テーブル８１を参照し、例えば「フラグ」が「１」となっている「算出方法」に従って算出する。図２０Ａに示す力算出方法テーブル８１の場合では、「合算」が「１」となっているので、それぞれの把持位置での力検出部５３の出力値の全ての値を力算出部２８で合算して算出する。
【０２１３】
「フラグ」は、複数ある算出方法から、どの算出方法が有効かを示すフラグで、この例では、「合算」値を算出する方法が「１」なので、力算出部２８において「合算」値を算出する方法が有効であることを示している。よって、それぞれの把持位置で力検出部５３により検出した力の情報を、力算出部２８により、全て合算する。力算出部２８により合算した力の値を、動作補正部２０に出力する。
【０２１４】
なお、図２０Ａの「算出方法」が「重み付け」の場合には、図２０Ａのように、（「フラグ」，「係数ＩＤ」）として記述し、「フラグ」は、どの算出方法を使って算出するかを示すフラグであり、「係数ＩＤ」は、図２０Ｃに示す、係数ＩＤで示す重み付けの係数を示している。
【０２１５】
力算出部２８は、図２０Ａのように、「算出方法」が「重み付け」のときの係数ＩＤが「４」の場合は、図２０Ｃより、係数が（０．６，０．４）であることを予め取得しておく。この係数に基づいて、ロボットアーム５の２箇所の位置を人４が把持した場合には、力検出部５３により一番目に検出された力の値に０．６を力算出部２８で乗じ、力検出部５３により二番目に検出された力の値に０．４を力算出部２８で乗じ、それぞれ係数を乗じた値を力算出部２８で合算して算出する。もし、ロボットアーム５を３箇所で把持した場合には、図２０Ｃの「係数ＩＤ」の「３」を使うことで算出することができる。
【０２１６】
動作補正部２０では、第１実施形態と同様の方法で動作情報データベース１７の動作情報を補正する。
【０２１７】
以上により、複数の人４Ａ，４Ｂ又は一人の人４が両手を使ってロボットアーム５の複数箇所を把持した場合であっても、力検出部５３と力算出部２８とにより、力を正しく検出することができる。さらに、力算出部２８を設けることで、人４が高齢者又は子供である場合に、補正すべき力が不足している場合であっても、算出方法を「合算」とすることで、より大きな力を加えることが可能となる。また、子供と大人がそれぞれ把持している場合には、「算出方法」として「最大」を力算出部２８で選択することで、子供が加えた力よりも大人が加えた力を優先して設定することができる。また、人４が１人で両手を使って操作をしている場合に、「算出方法」として「最大」を力算出部２８で選択することで、力を強く加えることができる利き腕の力を、利き腕でない腕の力よりも優先して設定することができる。さらに、複数個所を把持している場合に、急激な力を加えて危険な状態になることを防ぐために、「算出方法」として「最小」若しくは「平均」若しくは「重み付け」を選択することで、より安全に操作をすることが可能となる。
【０２１８】
なお、この例では、「算出方法」を「合算」としたが、どの算出方法を選ぶかをデータ入力ＩＦ２６などで人４が入力しても良い。その場合には、データ入力ＩＦ２６で入力された「算出方法」のフラグに「１」を設定する。また、操作する人４の状態（例えば高齢者又は子供など）により、例えば図２０Ｂのように、ＩＤ１〜ＩＤ３を、適宜、切り替えて算出しても良い。この場合、データ入力ＩＦ２６を使用して、「高齢者」若しくは「子供」かどうかを識別するＩＤを入力するか、若しくは、年齢を入力し、６５歳以上であれば「高齢者」と判断し、１５歳以下であれば「子供」と力算出部２８で判断することにより、人が高齢者若しくは子供であることを検出することができる。
【０２１９】
（第３実施形態）
本発明の第３実施形態における、ロボットアームの制御装置の基本的な構成は、第１実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
【０２２０】
図２２Ａ〜図２２Ｄに示すように、複数のロボットアーム５Ａ，５Ｂが動作する場合を例に説明する。図２２Ａは、例えば、調理時にパン生地を丸めたり、パン生地を伸ばす等の複数のロボットアーム５Ａ，５Ｂが協調して物体４７に力を加えている作業である。また、図２２Ｂは、調理時にパン生地をこねたり、拭き掃除など複数のロボットアーム５Ａ，５Ｂで接触面に同時に力を加える作業である。このような作業中に、図２２Ｃ、図２２Ｄに示すように、人４が複数のロボットアーム５Ａ，５Ｂの片方のロボットアーム５Ａを操作して、ロボットアーム５Ａ，５Ｂの力のかけ具合を補正する場合を例に説明する。
【０２２１】
図２３は、第３実施形態におけるロボットシステム１を構成する、制御対象である第１のロボットアーム５Ａと第２のロボットアーム５Ｂ、第１のロボットアーム５Ａ及び第２のロボットアーム５Ｂの制御装置７０との詳細構成を示す図である。第１のロボットアーム５Ａ及び第２のロボットアーム５Ｂのそれぞれのロボットアームと、動作指令部２７と、周辺装置１４とは、第１実施形態と同様であるので、説明は省略する。
【０２２２】
図２４は、第３実施形態における動作情報データベース１７の一例である。図２４の「作業ＩＤ」は、複数のロボットアーム５Ａ，５Ｂで行う作業を識別するＩＤ番号である。「動作ＩＤ」は、その作業の中で複数のロボットアーム５Ａ，５Ｂの動作を識別する動作ＩＤ番号である。「ロボットＩＤ」は複数のロボットアーム５Ａ，５Ｂを識別するＩＤ番号であり、例えば、「１」は第１のロボットアーム５Ａであり、「２」は第２のロボットアーム５Ｂである。「位置姿勢」と、「力」と、「フラグ」と、「ハンド」と、「時間」と、「補正パラメータフラグ」とは、「ロボットＩＤ」で識別したロボットアーム５Ａ，５Ｂの動作に関する情報で、それぞれの説明は第１実施形態と同様であるので省略する。「進捗情報」はそれぞれのロボットアーム５Ａ，５Ｂの動作が動作中か否かを示す情報である。
【０２２３】
図２５Ａは、第３実施形態における力検出部特性データベース１８である。「ロボットＩＤ」は複数のロボットアーム５Ａ，５Ｂを識別するＩＤ番号である。「把持位置ＩＤ」と、「検出の有無」と、「抗力の影響の可能性の有無」とは、「ロボットＩＤ」で識別したそれぞれのロボットアーム５Ａ，５Ｂの力検出部の特性を表しており、それぞれの説明は第１実施形態と同様であるので省略する。
【０２２４】
動作記憶部１５は、後述する動作補正部２０により補正した動作情報をそれぞれのロボットアーム毎に「ロボットＩＤ」で識別して、動作情報データベース１７に記憶する。
【０２２５】
把持位置検出部２３は、人４がロボットアーム５Ａ若しくは５Ｂを把持するとき、人４が、ロボットアーム５Ａ若しくはロボットアーム５Ｂのどの部分を把持して操作しているかを検出する。具体的には、カメラなどの画像撮像装置１９の画像データより、操作している人４の手４ａの画像認識を把持位置検出部２３で行い、その手４ａが、ロボットアーム５Ａ及びロボットアーム５Ｂの前腕リンク３２か上腕リンク３３かハンド３０かのいずれを把持して操作しているかを把持位置検出部２３で検出する。
【０２２６】
制御パラメータ管理部２１は、動作補正部２０又は制御方法切替部１６の指示に基づいて、ロボットアーム５Ａ及びロボットアーム５Ｂの制御モードの切り替え及びそれぞれのロボットアーム５Ａ，５Ｂのインピーダンス計算部５１で出力する手先位置及び姿勢目標補正出力ｒｄ△の設定及び目標軌道生成部５５への動作情報の設定を行う。動作補正部２０又は制御方法切替部１６から、ロボットアーム５Ａ，５Ｂを識別する「ロボットＩＤ」と共に、動作情報又は制御方法の切り替えの指令を制御パラメータ管理部２１が受けて、制御パラメータ管理部２１から制御部２０に指令を出すが、それぞれのロボットアーム５Ａ，５Ｂへの指令の内容及び指令を受けた後の制御部２０の動作は第１実施形態と同様であるので、説明は省略する。
【０２２７】
制御方法切替部１６は、ロボットＩＤで識別されたそれぞれのロボットアーム毎に、把持位置検出部２３で検出された把持位置（どのロボットアーム５Ａ，５Ｂのどの位置か）と、力検出部特性データベース１８に記憶された情報とにより、人４がロボットアーム５Ａ，５Ｂを把持して力のパラメータを補正する際の制御方法を切り替える。
【０２２８】
具体的には、図２５Ａの力検出特性データベース１８において、把持位置検出部２３で検出されたロボットアーム５Ａ，５Ｂの識別ＩＤ（「ロボットＩＤ」）と「把持位置ＩＤ」（「把持位置ＩＤ」は第１実施形態と同様に、図２５Ｂより「把持位置」から「把持位置ＩＤ」を求める。）により、「検出の有無」と「抗力の影響の可能性の有無」とを参照し、第１実施形態と同様に、図１１のフローチャートにより、制御方法を決定する。
【０２２９】
力検出部５３により、第１実施形態と同様の方法で、全ての把持位置での力を検出し、制御パラメータ管理部２１を介して、動作補正部２０に入力される。
【０２３０】
力算出部２８は、制御方法切替部１６で、複数のロボットアーム５Ａ，５Ｂの把持位置で検出した力の情報から、力算出方法テーブル８１を使用して、それぞれのロボットアーム５Ａ，５Ｂの動作補正に使用する力を算出する。
【０２３１】
図２６Ａは、力算出方法テーブル８１の例である。
【０２３２】
「算出方法」は、力算出部２８で、力検出部５３により検出された複数のロボットアーム５Ａ，５Ｂの力に関する情報（力情報）から、それぞれのロボットアーム５Ａ，５Ｂの動作補正に使用する力に関する情報（力情報）をどのような方法で算出するかを記述したものである。具体的には、それぞれのロボットアーム５Ａ，５Ｂの複数の力情報の中から最大値を算出して、全てのロボットアーム５Ａ，５Ｂの補正値とする場合には「最大」と記述する。また、複数の力情報の中から最小値を算出して、全てのロボットアーム５Ａ，５Ｂの補正値とする場合には「最小」と記述する。また、複数の力情報の平均値を算出して、全てのロボットアーム５Ａ，５Ｂの補正値とする場合には「平均」と記述する。また、複数の力情報を合算して、全てのロボットアーム５Ａ，５Ｂの補正値とする場合には「合算」と記述する。また、複数の力情報に重み係数を乗算した後に合算して算出する場合には「重み付け」と記述する。
【０２３３】
具体的には、力算出部２８は、力算出方法テーブル８１を参照し、例えば「フラグ」が「１」となっている「算出方法」に従って算出する。図２６Ａに示す力算出方法テーブル８１の場合では、「合算」が「１」となっているので、それぞれのロボットアーム５Ａ，５Ｂの把持位置での力検出部５３の出力値の全ての値を力算出部２８で合算して算出する。
【０２３４】
「フラグ」は、複数ある算出方法から、どの算出方法が有効かを示すフラグで、この例では、「合算」値を算出する方法が「１」なので、力算出部２８において「合算」値を算出する方法が有効であることを示している。よって、それぞれの把持位置で力算出部２８により検出した力の情報を、力算出部２８により、全て合算する。力算出部２８により合算した力の値を、動作補正部２０に出力する。
【０２３５】
なお、図２６Ａの「算出方法」が「重み付け」の場合には、図２６Ａのように、（「フラグ」，「係数ＩＤ」）として記述し、「フラグ」は、どの算出方法を使って算出するかを示すフラグであり、「係数ＩＤ」は、図２６Ｃに示す。係数ＩＤで示す重み付けの係数を示している。
【０２３６】
力算出部２８は、図２６Ａのように「算出方法」が「重み付け」のときの係数ＩＤが「４」の場合は、図２６Ｃより、係数が（０．６，０．４）であることを予め取得しておくこの係数に基づいて、２つのロボットアーム５Ａ，５Ｂからの力の値について、一番目のロボットアーム５Ａで力検出部５３により検出された力の値に０．６を力算出部２８で乗じ、二番目のロボットアーム５Ｂで力検出部５３により検出された力の値に０．４を力算出部２８で乗じ、それぞれ係数を乗じた値を力算出部２８で合算して算出する。３つのロボットアーム５の場合には、図２６Ｃの「係数ＩＤ」の「３」を使うことで算出することができる。
【０２３７】
動作補正部２０は、力算出部２８で算出された力の補正値を使って、第１実施形態と同様に、動作情報データベース１７の動作情報を補正することで、人４が補正した値に動作を補正することが可能となる。
【０２３８】
以上により、人４が、複数のロボットアーム５Ａ，５Ｂを、１箇所以上把持した場合であっても、力検出部５３と力算出部２８とにより、力を正しく検出することができる。さらに、力算出部２８を設けることで、複数のロボットアーム５Ａ，５Ｂのうちの片方のロボットアーム５Ａ又は５Ｂを把持して操作するだけで、把持していないロボットアーム５Ｂ又は５Ａの動作を補正することが可能となる。さらに、人４が高齢者又は子供である場合に、補正すべき力が不足している場合であっても、算出方法を「合算」とすることで、より大きな力を加えることが可能となる。また、子供と大人がそれぞれ把持している場合には、「算出方法」として「最大」を力算出部２８で選択することで、子供が加えた力よりも大人が加えた力を優先して設定することができる。また、人４が１人で両手を使って操作をしている場合に、「算出方法」として「最大」を力算出部２８で選択することで、力を強く加えることができる利き腕の力を、利き腕でない腕の力よりも優先して設定することができる。さらに、複数個所を把持している場合に、急激な力を加えて危険な状態になることを防ぐために、「算出方法」として「最小」若しくは「平均」若しくは「重み付け」を選択することで、より安全に操作をすることが可能となる。
【０２３９】
なお、この例では、「算出方法」を「合算」としたが、どの算出方法を選ぶかをデータ入力ＩＦ２６などで人４が入力しても良い。その場合には、データ入力ＩＦ２６で入力された「算出方法」のフラグに「１」を設定する。また、操作する人４の状態（例えば高齢者又は子供など）により、例えば図２６Ｂのように、ＩＤ１〜ＩＤ３を、適宜、切り替えて算出しても良い。この場合、データ入力ＩＦ２６を使用して、「高齢者」若しくは「子供」かどうかを識別するＩＤを入力するか、若しくは、年齢を入力し、６５歳以上であれば「高齢者」と判断し、１５歳以下であれば「子供」と力算出部２８で判断することにより、人が高齢者若しくは子供であることを検出することができる。
【０２４０】
なお、前記第１〜第３実施形態では、ロボットアーム５を例に説明したが、本発明は、アームに限らず、車輪により動く移動ロボット、又は、２足歩行ロボット、多足歩行ロボットなどにも適用することができ、移動ロボットなどと人間との接触に関して同様の効果を発揮する。
【０２４１】
なお、前記第１〜第３実施形態においては、動作情報取得部の一例として動作情報データベース１７を説明しているが、動作情報取得部としては、データベースに限定されるものではなく、前記ロボットアームの前記動作に関する動作情報を取得する機能を有するものならば、サーバーなどの別の装置に記憶されているデータベースからネットワークンなどを使用して前記情報を取得可能な手段で構成するようにしてもよい。
【０２４２】
また、前記第１〜第３実施形態においては、特性情報取得部の一例として力検出部特性データベース１８を説明しているが、特性情報取得部としては、データベースに限定されるものではなく、前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持て前記ロボットアームによる前記作業を行うときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する機能を有するものならば、サーバーなどの別の装置に記憶されているデータベースからネットワークンなどを使用して前記情報を取得可能な手段で構成するようにしてもよい。
【０２４３】
さらに、前記様々な実施形態のうちの任意の実施形態を適宜組み合わせることにより、それぞれの有する効果を奏するようにすることができる。
【産業上の利用可能性】
【０２４４】
本発明は、家庭用ロボットなど人とロボットが協調して作業を行う際のロボットアームの動作の制御を行なうロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路として有用である。また、家庭用ロボットに限らず、産業用ロボット、又は、生産設備等における可動機構のロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路としても適用が可能である。【０２４５】
本発明は、添付図面を参照しながら好ましい実施形態に関連して充分に記載されているが、この技術の熟練した人々にとっては種々の変形又は修正は明白である。そのような変形又は修正は、添付した請求の範囲による本発明の範囲から外れない限りにおいて、その中に含まれると理解されるべきである。
【図１】
2010079564.tif 000013
【図２】
2010079564.tif 000014
【図３】
2010079564.tif 000015
【図４Ａ】
2010079564.tif 000016
【図４Ｂ】
2010079564.tif 000017
【図４Ｃ】
2010079564.tif 000018
【図５】
2010079564.tif 000019
【図６】
2010079564.tif 000020
【図７】
2010079564.tif 000021
【図８】
2010079564.tif 000022
【図９Ａ】
2010079564.tif 000023
【図９Ｂ】
2010079564.tif 000024
【図１０】
2010079564.tif 000025
【図１１】
2010079564.tif 000026
【図１２Ａ】
2010079564.tif 000027
【図１２Ｂ】
2010079564.tif 000028
【図１２Ｃ】
2010079564.tif 000029
【図１３】
2010079564.tif 000030
【図１４】
2010079564.tif 000031
【図１５】
2010079564.tif 000032
【図１６Ａ】
2010079564.tif 000033
【図１６Ｂ】
2010079564.tif 000034
【図１７】
2010079564.tif 000035
【図１８】
2010079564.tif 000036
【図１９】
2010079564.tif 000037
【図２０Ａ】
2010079564.tif 000038
【図２０Ｂ】
2010079564.tif 000039
【図２０Ｃ】
2010079564.tif 000040
【図２１Ａ】
2010079564.tif 000041
【図２１Ｂ】
2010079564.tif 000042
【図２２Ａ】
2010079564.tif 000043
【図２２Ｂ】
2010079564.tif 000044
【図２２Ｃ】
2010079564.tif 000045
【図２２Ｄ】
2010079564.tif 000046
【図２３】
2010079564.tif 000047
【図２４】
2010079564.tif 000048
【図２５Ａ】
2010079564.tif 000049
【図２５Ｂ】
2010079564.tif 000050
【図２６Ａ】
2010079564.tif 000051
【図２６Ｂ】
2010079564.tif 000052
【図２６Ｃ】
2010079564.tif 000053
【図２７Ａ】
2010079564.tif 000054
【図２７Ｂ】
2010079564.tif 000055
【図２８】
2010079564.tif 000056
【図２９】
2010079564.tif 000057
【図３０Ａ】
2010079564.tif 000058
【図３０Ｂ】
2010079564.tif 000059
【図３１Ａ】
2010079564.tif 000060
【図３１Ｂ】
2010079564.tif 000061
【手続補正書】
【提出日】平成22年5月13日(2010.5.13)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの動作を生成、教示するためのロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路に関する。
【背景技術】
【０００２】
近年、介護ロボット又は家事支援ロボットなどの家庭用ロボットが盛んに開発されるようになってきた。家庭ロボットは産業用ロボットと異なり、家庭の素人が操作するため、簡単に動作を教示できる必要がある。さらに、ロボットが作業する際の動作環境も、家庭に応じて様々であるため、家庭環境に柔軟に対応する必要がある。
【０００３】
ロボット装置の教示方法の一例として、ロボットの手首などに力センサを装着し、力センサの先に装着されたハンドルを教示者が直接把持して、ロボットを教示点に誘導し、ロボットの位置の教示を行っている（特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭５９−１５７７１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１においては、全ての教示点を教示者が教示する必要があるため、教示に時間がかかり、非常に面倒であった。さらに、産業用分野にて、教示した動きの一部を修正する場合に、ティーチングペンダントと呼ばれる遠隔装置により、プログラミングにより修正するか、若しくは、全ての動作を一から教示しなければならず、効率が悪かった。
【０００６】
特に、家庭用ロボットでは、できるだけ教示する時間を短くする必要がある。さらに、ティーチングペンダンドなどの遠隔装置でのプログラミングの併用は、操作ステップが増大し、プログラミング言語の習得が必要となり、家庭の素人には困難である。
【０００７】
また、家庭環境は時々刻々と変化しており、全ての環境変動を教示時に予測しておくことは難しく、また、多くのセンサーを搭載して検出できたとしても、検出精度が１００％ではない場合は、誤作動を起こす場合がある。
【０００８】
また、産業ロボットでは、ロボットの動作を教示する教示作業とロボットが実際に作業する本作業とは明確に分けて行っているが、家庭用ロボットでは、家庭の素人が操作するために、教示作業と本作業を分けて操作するのは難しく、面倒であった（特許文献１参照）。
【０００９】
そこで、動作中のロボットに対して、人が状況の認識を行い、その都度、それをロボットに伝達することで、教示を意識させずに操作ができ、また、教示時に予期していない環境の変動が起こった場合にでも、その都度、人が教示することでロボットを動作させることが可能となる。
【００１０】
例えば、拭き掃除作業は、汚れのある面に対して、ある力をかけて汚れを擦る作業である。ロボットにより拭き掃除作業を実行している最中に、人が汚れのひどい箇所を確認し、人がロボットを直接把持して強めに拭き掃除をするよう、力のかけ具合を指示すると、ロボットは強めに拭き掃除作業をするよう動作を制御して作業を行う。
【００１１】
拭き掃除作業は、ある力をかけて汚れを擦る作業であるので、ロボットは、位置を目標値にして制御するよりは、力を目標値にして制御する方が、精度良く作業を行うことが可能である。このような作業では、力を目標値にして作業を行っているため、例えば人がロボットを直接把持して強めに拭き掃除をするように力のかけ具合を指示した場合、人が加えた力が人からの力なのか、あるいは接触面（汚れ面）からの抗力などの外乱なのかの区別がつかないという課題がある。
【００１２】
更に、人が加えた力を検出するために、ロボットアームに力センサなどを搭載した場合、産業用ロボットでは、ロボットのどこを把持して教示するかは、ロボットアームに具備された持ち手（ハンドル部分）など予め決まっており、そのハンドル部分に力センサなどを搭載して、人が加えた力を計測している。しかしながら、図１８に示すように家庭内においては、（ａ）持ち手部分に障害物９９などがあり、持ち手以外を人が把持して操作する場合、（ｂ）複数の人が同時に操作する場合、（ｃ）人が両手を使って複数箇所を把持してしまう場合などには、人が加えた力を正しく検出することができない。
【００１３】
本発明の目的は、このような課題に対して、予測できない環境の変動があっても、作業者が簡単に短時間でロボットの教示を行うことが可能なロボット制御を実現できる、ロボットアームの制御装置及び制御方法、ロボット、ロボットアームの制御プログラム、並びに、集積電子回路を提供する。
【課題を解決するための手段】
【００１４】
前記の目的を達成するために、本発明は以下のように構成する。
【００１５】
本発明の第１態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御装置であって、
前記ロボットアームの前記動作に関する動作情報を取得する動作情報取得部と、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を検出する把持位置検出部と、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する特性情報取得部と、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を切り替える制御方法切替部と、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する動作補正部とを備えて、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御装置を提供する。
【００１６】
本発明の第１０態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御方法であって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御方法を提供する。
【００１７】
本発明の第１２態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御プログラムであって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出するステップと、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得するステップと、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替えるステップと、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正するステップと、前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するステップとをコンピュータに実行させるためのロボットアームの制御プログラムを提供する。
【００１８】
本発明の第１３態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームを制御する集積電子回路であって、
前記ロボットアームの前記動作に関する情報である動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの集積電子回路を提供する。
【発明の効果】
【００１９】
以上述べたように、本発明のロボットアームの制御装置及びロボットによれば、動作情報取得部と、把持位置検出部と、特性情報取得部と、制御方法切替部と、動作補正部とを有することにより、人がロボットアームのどの部分を把持しても、動作情報で記述されたロボットの動作を、簡単に動作を補正することができるロボット制御が可能となる。すなわち、人のロボットアームの把持位置と力の検出の有無の情報及び抗力の影響の有無に関する情報とを含む特性情報に基づき前記ロボットアームの制御方法を切り替えるとともに、動作情報に基づいてのロボットアーム動作中に、把持位置と特性情報とに応じて制御方法切替部で制御方法を切り替えた後、人の操作に応じて動作情報の力に関する情報を動作補正部で補正することができる。
【００２０】
また、本発明のロボットアームの制御方法、ロボットアームの制御プログラム、及び、集積電子回路によれば、ロボットアームの動作中に、人のロボットアームの把持位置と力の検出の有無の情報及び抗力の影響の有無に関する情報とを含む特性情報に基づきロボットアームの制御方法を制御方法切替部で切り替えた後、人がロボットアームのどの部分を把持しても、人の操作に応じて動作情報の力に関する情報を動作補正部で補正することができるロボット制御が可能となる。
【図面の簡単な説明】
【００２１】
本発明のこれらと他の目的と特徴は、添付された図面についての好ましい実施形態に関連した次の記述から明らかになる。
【図１】図１は、本発明の第１実施形態におけるロボット制御装置の構成の概要を示す図である。
【図２】図２は、本発明の前記第１実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図である。
【図３】図３は、本発明の前記第１実施形態における前記制御装置の制御部の構成を示すブロック図である。
【図４Ａ】図４Ａは、本発明の前記第１実施形態における前記制御装置における前記ロボットアームの座標系に関する図である。
【図４Ｂ】図４Ｂは、本発明の前記第１実施形態における前記制御装置における前記ロボットアームの座標系に関する図である。
【図４Ｃ】図４Ｃは、本発明の前記第１実施形態における前記制御装置における前記ロボットアームの座標系に関する図である。
【図５】図５は、前記第１実施形態における前記ロボット制御装置の動作情報データベースの動作情報の一覧表を説明する図である。
【図６】図６は、前記第１実施形態における前記ロボット制御装置の動作情報データベースのフラグの情報を説明する図である。
【図７】図７は、前記第１実施形態における前記ロボット制御装置の動作情報データベースの補正パラメータフラグに関する情報を説明する図である。
【図８】図８は、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図９Ａ】図９Ａは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
【図９Ｂ】図９Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
【図１０】図１０は、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図１１】図１１は、本発明の前記第１実施形態における前記ロボット制御装置の制御方法切替部の動作ステップを表すフローチャートである。
【図１２Ａ】図１２Ａは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図１２Ｂ】図１２Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図１２Ｃ】図１２Ｃは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図１３】図１３は、本発明の前記第１実施形態における前記ロボット制御装置の動作状態を示す図である。
【図１４】図１４は、本発明の前記第１実施形態における前記ロボット制御装置の動作状態を示す図である。
【図１５】図１５は、本発明の前記第１実施形態における前記ロボット制御装置の制御部の動作ステップを表すフローチャートである。
【図１６Ａ】図１６Ａは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図１６Ｂ】図１６Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図１７】図１７は、本発明の前記第１実施形態における前記ロボット制御装置の動作補正部と動作指令部と動作記憶部と制御方法切替部と把持位置検出部と制御パラメータ管理部との動作ステップを表すフローチャートである。
【図１８】図１８は、本発明の第２実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図１９】図１９は、本発明の前記第２実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図である。
【図２０Ａ】図２０Ａは、本発明の前記第２実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
【図２０Ｂ】図２０Ｂは、本発明の前記第２実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
【図２０Ｃ】図２０Ｃは、本発明の前記第２実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
【図２１Ａ】図２１Ａは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図２１Ｂ】図２１Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図２２Ａ】図２２Ａは、本発明の第３実施形態におけるロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図２２Ｂ】図２２Ｂは、本発明の前記第３実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図２２Ｃ】図２２Ｃは、本発明の前記第３実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図２２Ｄ】図２２Ｄは、本発明の前記第３実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
【図２３】図２３は、本発明の前記第３実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図である。
【図２４】図２４は、本発明の前記第３実施形態における前記ロボット制御装置の動作情報データベースの動作情報の一覧表を説明する図である。
【図２５Ａ】図２５Ａは、本発明の前記第３実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
【図２５Ｂ】図２５Ｂは、本発明の前記第３実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
【図２６Ａ】図２６Ａは、本発明の前記第３実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
【図２６Ｂ】図２６Ｂは、本発明の前記第３実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
【図２６Ｃ】図２６Ｃは、本発明の前記第３実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
【図２７Ａ】図２７Ａは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部の１つの構成例を説明する図である。
【図２７Ｂ】図２７Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部の別の構成例を説明する図である。
【図２８】図２８は、本発明の前記第１実施形態における前記ロボット制御装置においてロボットアームに対する人のロボットアームの操作状態を示す図である。
【図２９】図２９は、本発明の前記第１実施形態における人のロボットアームの操作状態を示す図である。
【図３０Ａ】図３０Ａは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
【図３０Ｂ】図３０Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
【図３１Ａ】図３１Ａは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
【図３１Ｂ】図３１Ｂは、本発明の前記第１実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
【発明を実施するための形態】
【００２２】
以下に、本発明にかかる実施の形態を図面に基づいて詳細に説明する。
【００２３】
以下、図面を参照して本発明における実施形態を詳細に説明する前に、本発明の種々の態様について説明する。
【００２４】
本発明の第１態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御装置であって、
前記ロボットアームの前記動作に関する動作情報を取得する動作情報取得部と、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を検出する把持位置検出部と、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する特性情報取得部と、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を切り替える制御方法切替部と、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する動作補正部とを備えて、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御装置を提供する。
【００２５】
本発明の第２態様によれば、前記ロボットアームに外部から加えられた力を検出する力検出部をさらに備え、
前記特性情報取得部は、前記ロボットアームに前記外部から加えられた力を前記力検出部で検出する際に、前記特性情報のうちの前記人が把持した際の前記接触面からの抗力の影響の有無に関する情報を取得し、
前記動作補正部は、前記動作情報で前記ロボットアームの前記動作中に、前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作として、前記力検出部で検出された前記力に応じて、前記動作情報の力に関する情報を補正することを特徴とする第１の態様に記載のロボットアームの制御装置を提供する。
【００２６】
本発明の第３態様によれば、前記制御方法切替部は、
（Ｉ）前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩ）前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩＩ）前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法とのいずれか１つの制御方法に切り替え、
前記力検出部は、前記（Ｉ）の制御方法の場合には、前記ロボットアームが移動している最中の前記力を検出するか、若しくは、前記ロボットアームが移動後に前記接触面に前記ロボットアームが直接的に又は間接的に衝突して前記ロボットアームが移動を停止した状態で前記力を検出するかのいずれかの方法で検出し、前記（ＩＩ）の制御方法及び前記（ＩＩＩ）の制御方法の場合には、前記人が前記力を前記ロボットアームに加えた段階で前記力を検出することを特徴とする第２の態様に記載のロボットアームの制御装置を提供する。
【００２７】
本発明の第４態様によれば、前記制御方法切替部は、
（Ｉ）前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合で且つ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範囲内であるという情報を含む場合は、前記切り替え前の制御方法で前記ロボットアームの前記動作を制御するか、若しくは、前記人が前記ロボットアームに加えた力で移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
（ＩＩ）前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合でかつ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範囲内であるという情報を含む場合は、前記人が前記ロボットアームに力を加えても前記ロボットアームが移動して接触面に直接的に又は間接的に接触しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
（ＩＩＩ）前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合でかつ前記人の前記把持位置が前記力検出部の検出可能範囲外であるという情報を含む場合は、前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法に切り替えることを特徴とする第３の態様に記載のロボットアームの制御装置を提供する。
【００２８】
本発明の第５態様によれば、前記把持位置検出部で、前記把持位置を複数検出した場合には、それぞれの把持位置と前記力検出部の特性とに応じて、
前記制御方法切替部は、
（Ｉ）前記人が加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩ）前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩＩ）前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法と、
のいずれか１つの制御方法を順次切り替え、前記力検出部はそれぞれの制御方法で前記力を検出し、
それぞれの前記把持位置により前記力検出部で検出した複数の値に基づいて、前記人が前記ロボットアームに加えた力の値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した力の値で、前記動作情報データベースの前記動作情報を補正することを特徴とする第３の態様に記載のロボットアームの制御装置を提供する。
【００２９】
本発明の第６態様によれば、前記力算出部は、
（Ｉ）前記力検出部で検出した複数の値を合算して算出する方法と、
（ＩＩ）前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
（ＩＩＩ）前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
（ＩＶ）前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか１つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正することを特徴とする第５の態様に記載のロボットアームの制御装置を提供する。
【００３０】
本発明の第７態様によれば、複数のロボットアームを備え、
前記把持位置検出部は、前記複数のロボットアームのうち、いずれのロボットアームを前記人が把持しているかどうかを検出し、
前記人が前記複数のロボットアームのうちの一方のロボットアームを把持している場合には、その一方のロボットアームに具備された前記力検出部で前記力を検出し、
さらに、前記力検出部で検出した値から、前記人が把持していない他方のロボットアームを補正する値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した値で、前記動作情報取得部で取得された前記動作情報を補正することを特徴とする第２又は３の態様に記載のロボットアームの制御装置を提供する。
【００３１】
本発明の第８態様によれば、前記力算出部は、
（Ｉ）前記力検出部で検出した複数の値を合算して算出する方法と、
（ＩＩ）前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
（ＩＩＩ）前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
（ＩＶ）前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか１つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された、全てのロボットアームの前記動作情報を補正することを特徴とする第７の態様に記載のロボットアームの制御装置を提供する。
【００３２】
本発明の第９態様によれば、前記制御方法切替部は、前記人が力を前記ロボットアームに加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替えた場合に、切り替え前の制御方法と前記切り替え後の制御方法を交互に切り替え、
前記力検出部は、前記切り替え後の制御方法に切り替えたときに、前記力を検出することを特徴とする第３の態様に記載のロボットアームの制御装置を提供する。
【００３３】
本発明の第１０態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御方法であって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御方法を提供する。
【００３４】
本発明の第１１態様によれば、前記ロボットアームと、
前記ロボットアームの前記動作を制御する第１〜８のいずれか１つの態様に記載のロボットアームの制御装置とを有することを特徴とするロボットを提供する。
【００３５】
本発明の第１２態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御プログラムであって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出するステップと、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得するステップと、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替えるステップと、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正するステップと、前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するステップとをコンピュータに実行させるためのロボットアームの制御プログラムを提供する。
【００３６】
本発明の第１３態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームを制御する集積電子回路であって、
前記ロボットアームの前記動作に関する情報である動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの集積電子回路を提供する。
【００３７】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【００３８】
（第１実施形態）
まず、本発明の第１実施形態におけるロボットアームの制御装置を備えるロボットシステム１の構成について説明する。図１及び図２は、本発明の第１実施形態におけるロボットアーム５及びその制御装置７０を備えるロボットシステム１の概要を示す図である。
【００３９】
図１に示すように、ロボットシステム１のロボットアーム５は、例えば家庭内のキッチン又はテーブルなどの作業台７の壁面７ａに設置される。ロボットアーム５の基端５ａが壁面７ａに固定されたレール８に対して移動可能な状態で支持され、ロボットアーム５がレール８上に沿って横方向（例えば水平方向）に、人４の力により、移動可能としている。
【００４０】
ロボットシステム１は、例えばロボットアーム５を使用してキッチンの汚れ９１をふき取る作業又は鍋底をかき混ぜる作業などの家庭内においてロボットアーム５と人４とが協働して行う作業を行う。図１は、一例として、拭き掃除作業を行うロボットシステム１による作業の操作手順の一例を示す。
【００４１】
まず、人４がロボットアーム５を直接把持し、人４がロボットアーム５に力を加える。そして、人４からロボットアーム５に加えられた力により、ロボットアーム５がレール８に沿って移動し、IＨクッキングヒーター又はガスコンロなどの調理装置６の付近までロボットアーム５が誘導される。
【００４２】
次に、人４が、ロボットアーム５の先端のハンド３０に、拭き掃除作業のための掃除用具の一例としてのスポンジ４６を取り付ける。
【００４３】
次に、調理装置６の側面などに配置されているロボットシステム１の操作盤１３のボタン１３ａを人４が押すなどして、人４が、データ入力ＩＦ２６を使用することにより、ロボットアーム５に動作開始指令を入力すると、ロボットアーム５が作動し、予め選択された作業（ここでは拭き掃除作業）を開始させる。
【００４４】
ロボットアーム５がハンド３０で把持した掃除用具４６による調理装置６の拭き掃除を実施しているときに、拭き掃除を実施している場所とは異なる場所でかつ人４が汚れのひどい部分９１ａを見つけて、人４の手４ａでロボットアーム５を直接把持してロボットアーム５に力を加えてその部分９１ａまでロボットアーム５を移動させ（図２９の場合は矢印（１）の方向）る。そして、さらに、汚れのひどい部分９１ａで、補正したい方向（図２９の場合は矢印（２）の方向）に人４の手４ａでロボットアーム５に力を加えることで、ロボットアーム５に対して動作を補正させるための補正指令を入力して、ロボットアーム５の動作を、強めに拭き掃除作業をするように補正する（図２９参照）。
【００４５】
レール８は、作業台７の壁面７ａに配置したが、壁面の無いアイランドキッチンの場合は、天井面又はアイランドキッチンの天板側面など作業をするのに適した場所に設置することができる。
【００４６】
さらに、操作盤１３は、調理装置６の側面に固定したが、操作盤１３に代えて、遠隔操作が可能なリモコンでも良い。
【００４７】
図２はロボットシステム１を構成する、制御対象であるロボットアーム５と、ロボットアーム５の制御装置７０との詳細構成を示す図である。ロボットアーム５の制御装置７０は、図２に示すように、把持位置検出部２３と、ロボットアーム５の動作を生成する動作生成装置１２と、制御装置本体部１１と、周辺装置１４とを備えている。
【００４８】
−ロボットアーム−
この第１実施形態のロボットアーム５は、一例として６自由度の多リンクマニピュレータで構成される多関節ロボットアームとする。ロボットアーム５は、ハンド３０と、ハンド３０が取り付けられている手首部３１を先端３２ａに有する前腕リンク３２と、前腕リンク３２の基端３２ｂに回転可能に先端３３ａが連結される上腕リンク３３と、上腕リンク３３の基端３３ｂが回転可能に連結支持される台部３４とを備えている。台部３４は、移動可能なレール８に連結されているが、一定位置に固定されていても良い。手首部３１は、第４関節部３８と、第５関節部３９と、第６関節部４０との３つの回転軸を有しており、前腕リンク３２に対するハンド３０の相対的な姿勢（向き）を変化できる。すなわち、図２において、第４関節部３８は、手首部３１に対するハンド３０の横軸（ψ）周りの相対的な姿勢を変化できる。第５関節部３９は、手首部３１に対するハンド３０の、第４関節部３８の横軸とは直交する縦軸（Φ）周りの相対的な姿勢を変化させることができる。第６関節部４０は、手首部３１に対するハンド３０の、第４関節部３８の横軸（ψ）及び第５関節部３９の縦軸（Φ）とそれぞれ直交する横軸（θ）周りの相対的な姿勢を変化できる。前腕リンク３２の他端は、上腕リンク３３の先端に対して第３関節部３７周りに、すなわち、第４関節部３８の横軸と平行な横軸周りに回転可能とする。上腕リンク３３の他端は、台部３４に対して第２関節部３６周りに、すなわち、第４関節部３８の横軸と平行な横軸周りに回転可能とする。さらに、台部３４の上側可動部３４ａは、台部３４の下側固定部３４ｂに対して第１関節部３５周りに、すなわち、第５関節部３９の縦軸と平行な縦軸周りに回転可能としている。
【００４９】
この結果、ロボットアーム５は、合計６個の軸周りに回転可能として前記６自由度の多リンクマニピュレータを構成している。
【００５０】
各軸の回転部分を構成する各関節部には、モータ４３のような回転駆動装置と、モータ４３の回転軸の回転位相角（すなわち関節角）を検出するエンコーダ４４とを備えている。この第１実施形態のモータ４３は、ロボットアーム５の各関節部の内部に配設されている。モータ４３は、各関節部を構成する２つのリンク部材のうちの一方のリンク部材に備えられる後述するモータドライバ２５により駆動制御される。各関節部の一つのリンク部材の関節部に備えられたモータ４３の回転軸が、他のリンク部材に連結されて、前記回転軸を正逆回転させることにより、前記他のリンク部材を前記一つのリンク部材に対して各軸周りに回転可能とする。
【００５１】
４１は台部３４の下側固定部３４ｂに対して相対的な位置関係が固定された絶対座標系であり、４２はハンド３０に対して相対的な位置関係が固定された手先座標系である。絶対座標系４１から見た手先座標系４２の原点位置Ｏｅ（ｘ，ｙ，ｚ）をロボットアーム５の手先位置（ハンド３０の位置）とし、絶対座標系４１から見た手先座標系４２の姿勢をロール角とピッチ角とヨー角で表現した（φ，θ，ψ）をロボットアーム５の手先姿勢とし、手先位置及び姿勢ベクトルをベクトルｒ＝［ｘ，ｙ，ｚ，φ，θ，ψ］Ｔと定義する。
【００５２】
この第１実施形態では、絶対座標系３５のＺ軸を回転軸として、座標系を角度φだけ回転させた座標系を考え（図４Ａ参照）、このときの座標軸を［Ｘ'，Ｙ'，Ｚ］とする。次に、この座標系を、Ｙ'を回転軸として角度θだけ回転させ（図４Ｂ参照）、このときの座標軸を［Ｘ''，Ｙ'，Ｚ''］とする。最後に、この座標系を、Ｘ''を回転軸として角度ψだけ回転させ（図４Ｃ参照）、このときの座標系の姿勢をロール角度φ、ピッチ角度θ、ヨー角度ψとし、このときの姿勢ベクトルは（φ，θ，ψ）となる。姿勢（φ，θ，ψ）の座標系が原点位置を手先座標系４２の原点位置Ｏｅ（ｘ，ｙ，ｚ）に平行移動した座標系と、手先座標系４２が一致する場合、手先座標系の姿勢ベクトルは（φ，θ，ψ）であるとする。
【００５３】
ロボットアーム５の手先位置及び姿勢を制御する場合には、手先位置及び姿勢ベクトルｒを後述する目標軌道生成部５５で生成された手先位置及び姿勢目標ベクトルｒｄに追従させることになる。
【００５４】
力センサなどの力検出部５３は、人４などからロボットアーム５に加わる力を検出する。具体的には、力検出部５３に加わる３方向（ｘ，ｙ，ｚ方向）と姿勢方向（φ，θ，ψ方向）の６軸の方向別に力を検出する。
【００５５】
なお、力検出部５３の１つの構成例として、図２７Ａに示すように、操作用の力センサ５３ａと後述する力制御用の力センサ５３ｂを搭載していた場合は、それぞれの力センサ５３ａ，５３ｂに加わる力を力検出部５３として検出する。
【００５６】
また、力検出部５３の別の構成例として、図２７Ｂに示すように、各関節部にトルクセンサ５３ｃ，５３ｄ，５３ｅを搭載していた場合、力検出部５３には、モータドライバ２５の電流センサで計測されたロボットアーム５の各関節部を駆動するモータ４３を流れる電流値ｉ＝［ｉ１，ｉ２，ｉ３，ｉ４，ｉ５，ｉ６］Ｔが入出力ＩＦ２４を介して取り込まれて力検出部５３として力を検出する。また、各エンコーダ４４で計測された関節角の現在値ｑが入出力ＩＦ２４を介して取り込まれるとともに、後述する近似逆運動学計算部５７からの関節角度誤差補償出力ｕｑｅが取り込まれる。力検出部５３は、オブザーバーとして機能し、以上の電流値ｉと、関節角の現在値ｑと、関節角度誤差補償出力ｕｑｅとより、ロボットアーム５に加わる外力により各関節部に発生するトルクτｅｘｔを算出する。そして、Ｆｅｘｔ＝Ｊｖ（ｑ）−Ｔτｅｘｔ−［０，０，ｍｇ］Ｔによりロボットアーム５の手先における等価手先外力Ｆｅｘｔに換算して、この等価手先外力Ｆｅｘｔをインピーダンス計算部５１に出力する。ここで、Ｊｖ（ｑ）は、
【００５７】
【数１】
2010079564.tif 000062
【００５８】
を満たすヤコビ行列である。ただし、ｖ＝［ｖｘ，ｖｙ，ｖｚ，ωｘ，ωｙ，ωｚ］Ｔであり、（ｖｘ，ｖｙ，ｖｚ）は手先座標系４２におけるロボットアーム５の手先の並進速度、（ωｘ，ωｙ，ωｚ）が手先座標系４２におけるロボットアーム５の手先の角速度となる。また、ｍはハンド３０で把持している把持物体の重さであり、ｇは重力加速度である。把持物体の重さｍの値は、その物体を把持する前に、人４が入出力ＩＦ２４を介して力検出部５３に入力することができる。また、ロボットアーム５のハンド３０により物体の把持を実際に行い、そのときの力検出部５３の等価手先外力Ｆｅｘｔの推定結果より把持物体の重さｍの値を算出することも可能である。
【００５９】
後述するロボットアーム５の動作を制御するため、動作生成装置１２と、制御装置本体部１１と、周辺装置１４とのそれぞれの動作が実行されることにより、ロボットアーム５の各関節部の、後述するエンコーダ４４より出力される各関節角度情報が、入出力ＩＦ２４のカウンタボードを通じて制御装置本体部１１に取り込まれ、取り込まれた各関節角度情報に基づき制御装置本体部１１によって各関節部の回転動作での制御指令値が算出される。算出された各制御指令値は、入出力ＩＦ２４のＤ／Ａボードを通じて、ロボットアーム５の各関節部を駆動制御するためのモータドライバ２５に与えられ、モータドライバ２５から送られた各制御指令値に従って、ロボットアーム５の各関節部のモータ４３が駆動される。また、モータドライバ２５により駆動制御されるハンド駆動装置の一例としてハンド駆動用のモータ６２と、ハンド駆動用のモータ６２の回転軸の回転位相角を検出するエンコーダ６１とを、さらに、ハンド３０に備えて、エンコーダ６１で検出された回転角度情報が、入出力ＩＦ２４のカウンタボードを通じて制御装置本体部１１に取り込まれ、取り込まれた回転角度情報を基に、制御装置本体部１１の制御部２２のハンド制御部５４（図３に図示）によってハンド３０の開閉動作での制御指令値が算出される。算出された制御指令値は、入出力ＩＦ２４のＤ／Ａボードを通じて、ハンド３０の開閉駆動も行うモータドライバ２５に与えられ、モータドライバ２５から送られた各制御指令値に従って、モータ６２の回転を駆動制御して、ハンド駆動用のモータ６２の回転軸を正逆回転させることにより、ハンド３０を開閉させる。
【００６０】
制御装置本体部１１及び動作生成装置１２及び周辺装置１４及び把持位置検出部２３は、一例として、それぞれ一般的なパーソナルコンピュータにより構成される。
【００６１】
−把持位置検出部−
２３は把持位置検出部であり、人４がロボットアーム５を把持するとき、人４がロボットアーム５のどの部分（どの位置）を把持して操作しているかを検出する（人４のロボットアーム５の把持位置を検出する）。具体的には、カメラなどの画像撮像装置１９の画像データより、操作している人４の手４ａの画像認識を把持位置検出部２３で行い、その手４ａが、ロボットアーム５の前腕リンク３２か上腕リンク３３かハンド３０のいずれを把持して操作しているかを把持位置検出部２３で検出する。
【００６２】
（動作生成装置１２）
動作生成装置１２は、動作情報取得部の一例として機能する動作情報データベース１７と、特性情報取得部の一例として機能する力検出部特性データベース１８と、動作指令部２７と、動作補正部２０と、動作記憶部１５と、制御方法切替部１６とを有するように構成される。動作補正部２０と制御パラメータ管理部２１との間では、ロボットアーム５の手先位置及び姿勢の情報と、人４の加えられた力の情報と、動作指令などが入出力される。制御パラメータ管理部２１により、ロボットアーム５の手先位置及び姿勢と人４からロボットアーム５に加えられた力の情報などが動作記憶部１５に出力される。なお、動作生成装置１２における各制御モード（ｉ）位置制御モード、（ｉｉ）インピーダンス制御モード、（ｉｉｉ）力制御モード）の詳細については、制御装置本体部１１の制御パラメータ管理部２１にて後述する。
【００６３】
−動作情報データベース−
動作情報データベース１７は、動作指令部２７との間で動作情報が入出力されるとともに、動作補正部２０との間で動作情報が入出力され、動作記憶部１５により種々の動作情報が入力され記憶される。
【００６４】
次に、動作情報データベース１７の詳細について説明する。
【００６５】
動作情報データベース１７は、例えば、図５に示したロボットアーム５の動作に関する情報（動作情報）が動作記憶部１５により記憶される。動作情報の具体データ例として、以下に示す。
【００６６】
（１）作業を識別する作業ＩＤ番号（図５の「作業ＩＤ」の欄参照）。
【００６７】
（２）作業の中の個々の動作を識別する動作ＩＤ番号（図５の「動作ＩＤ」の欄参照）。
【００６８】
（３）動作におけるロボットアーム５の手先位置及び姿勢に関する情報（図５の「位置姿勢」の欄参照）。
【００６９】
（４）ロボットアーム５が作業をする際に対象となる物体に加える力に関する情報（図５の「力」の欄参照）。
【００７０】
（５）ロボットアーム５の手先位置、姿勢、及び力のパラメータのうちのいずれの情報が有効か否かを示すフラグに関する情報（図５の「フラグ」の欄参照）。
【００７１】
（６）ハンド３０が開閉しているか否かのハンド開閉状態を表す情報（図５の「ハンド」の欄参照）。
【００７２】
（７）各動作が作用する時間に関する情報（図５の「時間」の欄参照）。
【００７３】
（８）動作補正部２０による動作情報データベース１７の動作情報を補正する際の補正すべきパラメータの種別に関する情報（図５の「補正パラメータフラグ」の欄参照）。
【００７４】
（９）ロボットアーム５の動作が実行中か否かを示す進捗情報（図５の「進捗情報」の欄参照）。
【００７５】
ここで、作業ＩＤは、作業に関する情報を識別するために用いられる符号であり、動作ＩＤは、動作に関する情報を識別するために用いられる符号である。
【００７６】
図５の動作情報データベース１７の「位置姿勢」、すなわち、ロボットアーム５の手先位置及び姿勢に関する情報は、前述したロボットアーム５の手先位置及び姿勢を表し、原点位置Ｏｅの座標及び姿勢から、（ｘ，ｙ，ｚ，φ，θ，ψ）と表す。
【００７７】
力に関する情報は、ロボットアーム５が作業をする際に対象となる物体に加える力に関する情報を示し、力のｘ、ｙ、ｚ、φ、θ、ψ方向の成分を（fｘ，fｙ，fｚ，fφ，fθ，fψ）と表す。例えば、ｆｚ＝５[Ｎ]である場合は、ｚ軸方向に５[Ｎ]の力を加えて、作業することを表す。具体的には、ＩＨクッキングヒータ６などの天板を拭き掃除作業する際に、天板の表面に力を加えて擦る場合などに使用する。
【００７８】
図５の動作情報データベースの「フラグ」に関する情報は、各「動作ＩＤ」が示す動作情報に基づくロボットアーム５の手先位置及び姿勢及び力のうちのいずれの情報が有効かを示す値である。具体的には、図６で示した３２ビットの数値で表す。図６において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値が有効の場合は「１」とし、手先位置及び姿勢及び力のそれぞれの値が無効の場合は「０」とする。例えば、０ビット目において、ロボットアーム５の手先位置のｘ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。また、１ビット目において、ロボットアーム５の手先位置のｙ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。また、２ビット目において、ロボットアーム５の手先位置のｚ座標の値が有効の場合は「１」とし、無効の場合は「０」とする。以後、順次、３，４，５ビット目は姿勢のφ、θ、ψの有効性を表す（すなわち、有効の場合は「１」とし、無効の場合は「０」とする。）。さらに、６ビット目〜１１ビット目においては、力のそれぞれの成分が有効か無効かを示す（すなわち、有効の場合は「１」とし、無効の場合は「０」とする。）。また、フラグに関する情報は、将来の拡張用に多め（３２ビット）に用意しているため、この例では１２ビット目から３１ビット目は使用しないので、「０」を入れておくが、１２ビットのみ格納できる変数としても良い。図６では、０ビット目から１ビット目、及び３ビット目から５ビット目、及び８ビット目が「１」となっているので、動作情報の手先位置及び姿勢情報としてｘ、ｙ、φ、θ、ψ情報と力情報としてｆｚのみが有効であることを示している。この結果、動作情報のうち、２ビット目、６〜７ビット目、及び９〜１１ビット目が「０」となっているので、z、fｘ、fｙ、fφ、fθ、fψの値にどういう値が記憶されていても無効であるとする。
【００７９】
図５の動作情報データベース１７のハンド３０が開閉しているか否かの情報である「ハンド」に関する情報は、ロボットアーム５の動作中のハンド３０の開閉の有無を表すフラグとし、ハンド３０が開いている場合は「０」と記載し、閉じている場合は「１」と記載する。
【００８０】
図５の動作情報データベース１７の「時間」に関する情報は、ロボットアーム５の各動作を実行するための時間であり、この「動作ＩＤ」に記憶された動作を、ここでの「時間」に関する情報として記憶された時間をかけて行うことを表す。すなわち、絶対時刻ではなく、前の動作からの相対時間を表す。すなわち、「動作ＩＤ」が示す「位置及び姿勢」に、ロボットアーム５のハンド３０が移動するまでの時間又は「動作ＩＤ」が示す「力」になるまでの時間を表す。
【００８１】
図５の動作情報データベース１７の「補正パラメータフラグ」に関する情報は、後述する動作補正部２０で、どのパラメータを補正するかを表す情報である。具体的には、図７に示した３２ビットの数値で表す。図７において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値の補正が可能な場合は「１」とし、手先位置及び姿勢及び力のそれぞれの値の補正が不可能な場合は「０」とする。例えば、０ビット目においては、手先位置のｘ座標の値の補正が可能な場合は「１」とし、手先位置のｘ座標の値の補正が不可能な場合は「０」とする。また、１ビット目においては、手先位置のｙ座標の値の補正が可能な場合は「１」とし、手先位置のｙ座標の値の補正が不可能な場合は「０」とする。また、２ビット目においては、手先位置のｚ座標の値の補正が可能な場合は「１」とし、手先位置のｚ座標の値の補正が不可能な場合は「０」とする。以後、順次、３，４，５ビット目は、姿勢のφ、θ、ψの補正可能性を表す（すなわち、補正が可能な場合は「１」とし、補正が不可能な場合は「０」とする。）。さらに、６ビット目〜１１ビット目においては、力のそれぞれの成分の補正可能性を示す（すなわち、補正可能の場合は「１」とし、補正不可能の場合は「０」とする。）。また、フラグに関する情報は、将来の拡張用に多め（３２ビット）に用意しているため、この例では、１２ビット目から３１ビット目は使用しないので、「０」を入れておくが、１２ビットのみ格納できる変数としても良い。
【００８２】
図５の動作情報データベース１７の「進捗情報」に関する情報は、現在実行中の動作であるかどうかを示す情報であり、実行中の動作である場合は「１」とし、実行中の動作でない場合は「０」として、動作記憶部１５により動作情報データベース１７に記憶する。具体的には、動作指令部２７によって、作業が開始されると、その作業の各動作のうち、現在動作（実行）中の動作については「１」を動作記憶部１５により記憶し、現在動作（実行）していない動作については「０」を動作記憶部１５により記憶する。
【００８３】
-動作指令部-
動作指令部２７には、人４がデータ入力ＩＦ２６により指定された「作業ＩＤ」の作業の動作開始の指令が入力される。動作指令部２７は、指定された「作業ＩＤ」の作業の動作開始の指令を受けて、指定された「作業ＩＤ」の作業の動作を開始させる。具体的には、動作情報指令部２７により「動作ＩＤ」の「進捗情報」に「１」を設定し、動作記憶部１５により動作情報データベース１７に記憶する。その他の「動作ＩＤ」の「進捗情報」については「０」を動作指令部２７に設定し、動作記憶部１５により動作情報データベース１７に記憶する。動作指令部２７により指令された作業ＩＤの作業の全ての動作は、「動作ＩＤ」の番号の小さいものから、順番に実行され、一番最後の動作まで実行されると、その「作業ＩＤ」の先頭の「動作ＩＤ」の動作に戻り、一連の動作を繰り返し実行する。
【００８４】
動作情報データベース１７のロボットアーム５の手先の位置姿勢及び時間の情報は、例えば図８に示すようにロボットアーム５を人４が把持して、後述するインピーダンス制御モードにて、ロボットアーム５を移動させて、ある一定時間毎（例えば０．２ｍｓｅｃ毎）にロボットアーム５の手先位置及び姿勢の情報を取得し、時間と共に、動作記憶部１５により動作情報データベース１７に記憶して作成する。さらに、動作情報データベース１７の力の情報は、データ入力ＩＦ２６で加えたい力の値を入力して作成する。なお、図８において、３は調理器具の一例としての鍋、９はハンド３０で把持されて鍋３をかき混ぜるための調理用具の一例としてのレードルである。
【００８５】
−力検出部特性データベース−
力検出部特性データベース１８は、力検出部５３（図３に図示）の特性を表す情報（特性情報）が記憶されており、図９Ａに一例を示す。特性情報は、一例として、人４のロボットアーム５の把持位置に関する情報（図９Ａの「把持位置ＩＤ」の欄参照）と、人４がロボットアーム５を把持した位置で力の検出ができるかどうかに関する情報（図９Ａの「検出の有無」の欄参照）と、力検出の際に、接触面からの抗力の影響を受ける可能性があるかどうかに関する情報（図９Ａの「抗力の影響の可能性の有無」の欄参照）とで構成される。
【００８６】
図９Ａの「把持位置ＩＤ」に関する情報は、力検出部特性データベース１８に記憶されている図９Ｂのテーブルにより、人４がロボットアーム５のどの部分を把持しているかの情報を示す。それぞれの「把持位置ＩＤ」に関する情報は、図９Ｂに示すテーブルにより決定する。具体的には、図２の上腕リンク３３を把持している場合（図２８の操作Ａ）には、図９Ｂにより、「上腕」は「把持位置ＩＤ」が「１」となる。また、前腕リンク３２を把持している場合（図２８の操作Ｂ）には、図９Ｂにより、「前腕」は「把持位置ＩＤ」が「２」」となることが、力検出部特性データベース１８から制御方法切替部１６で検出される。同様に、手首部３１を把持している場合には、図９Ｂにより、「手首」は「把持位置ＩＤ」が「３」となる。同様に、ハンド３０を把持している場合（図２８の操作Ｃ）には、図９Ｂにより、「ハンド」は「把持位置ＩＤ」が「４」となることが、力検出部特性データベース１８から制御方法切替部１６で検出される。
【００８７】
図９Ａの「検出の有無」に関する情報は、それぞれの「把持位置ＩＤ」で示す把持位置を人４が把持して人４が把持位置で力を加えた場合に、力検出部５３で検出可能である場合は「１」を設定し、力検出部５３で検出不可能である場合は「０」を設定する。
【００８８】
図９Ａの「抗力の影響の可能性の有無」に関する情報は、ロボットアーム５が所定の作業を行うとき例えばロボットアーム５がハンド３０で直接的に接触面に接触した際又はロボットアーム５がハンド３０で把持した物体などを介して間接的に接触面に接触した際に、力検出部５３が接触面から抗力の影響を受ける可能性があるかどうかの情報である。具体的には、図１０のようにロボットアーム５が、物体、例えば拭き掃除用具の一例としてのスポンジ４６を把持して、ＩＨクッキングヒータ又はガスコンロなどの調理装置６に力を加えて拭き掃除をしていると仮定する。この拭き掃除の最中に、人４がロボットアーム５を把持して力を加えた際の力を検出する場合に、力検出部５３が接触面からの抗力の影響を受けて、力検出部５３で正しく力を検出できない場合は、抗力の影響を受けるとし、「１」を設定する。逆に、力検出部５３が接触面からの抗力の影響を受けずに、人４からの力を正しく検出できる場合は、「０」を設定する。
【００８９】
具体的な例としては、図１０に示す例のように、手首部３１にのみ力検出部５３を設定しかつ、スポンジ４６をハンド３０で把持して拭き掃除をしている場合に、スポンジ４６を介してハンド３０が調理装置６に直接的に又は間接的に接触して調理装置６の天板から抗力の影響を受けると仮定する。このとき、さらに、人４の手４ａでハンド３０又は手首部３１を把持した場合には、力検出部５３で力検出が可能である。これに対して、人４の手４ａでハンド３０又は手首部３１以外の部分を把持した場合でかつ力検出部５３で力検出ができない。このような場合には、力検出部特性データベース１８は図９Ａのようになる。すなわち、設置した力検出部５３は、抗力の影響を受ける可能性があるため、図９Ａの「抗力の影響の可能性の有無」に関する情報は、把持位置に関わらず、全て「１」となる。さらに、力検出部５３は、ハンド３０又は手首部３１で把持した場合には力検出が可能であるため、手首部３１を示す「把持位置ＩＤ」が「３」の場合と、ハンド３０を示す「把持位置ＩＤ」が「４」の場合の「検出の有無」は、それぞれ、「１」なる。同様に、上腕リンク３３又は前腕リンク３２を把持した場合には、人４が加えた力を直接検出できないために、上腕リンク３３を示す「把持位置ＩＤ」が「１」の場合と前腕リンク３２を示す「把持位置ＩＤ」が「２」の場合との「検出の有無」は、それぞれ、「０」となる。
【００９０】
図２７Ａのように、前腕リンク３２においてる操作用の力センサ５３ａと力制御用の力センサ５３ｂを搭載していた場合の力検出部特性データベース１８は、図３０Ａとなる。図２７Ａに示すように、人４が前腕リンク３２を操作した際に、人４からの力を図２７Ａの操作用の力センサ５３ａで直接検出することができることから、「把持位置ＩＤ」が「２」の場合（図３０Ｂにより「前腕」を示す場合）の「検出の有無」は「１」となる。さらに、操作用の力センサ５３ａが調理装置６に直接的に又は間接的に接触しても抗力の影響を受けないとすると、「把持位置ＩＤ」が「２」の「抗力の影響の可能性の有無」は「０」となる。それ以外の把持位置については、図１０の例と同様となるため、説明は省略する。
【００９１】
さらに、図２７Ｂのように、ロボットアーム５の各関節部にトルクセンサ５３ｃ，５３ｄ，５３ｅを搭載している場合には、ロボットアーム５のどの部分を把持して操作しても、人４が加えた力を検出できることから、図３１Ａ及び図３１Ｂに示すように、全ての把持位置において、「検出の有無」が「１」となる。また、図２７Ｂのトルクセンサ５３ｃ，５３ｄ，５３ｅが、接触面からの抗力の影響を受けるようなセンサである場合には、全ての把持位置において、「抗力の影響の可能性の有無」は「１」となる。
【００９２】
以上のように、力検出部特性データベース１８を力センサなどの力検出部５３の特性に合わせて用意することで、後述する制御方法切替部１６で制御方法を切り替えることが可能となる。
【００９３】
−動作補正部−
動作補正部２０は、動作情報データベース１７の位置と姿勢と力と時間との情報にて、（ｉ）位置制御モード、（ｉｉ）インピーダンス制御モード、（ｉｉｉ）力制御モードと、それらを方向別に組み合わせた制御モードのうち、いずれかのモードでのロボットアーム５の動作中に、データ入力ＩＦ２６から動作指令部２７を介して動作補正部２０で動作補正開始の指令を受ける。すると、動作補正部２０は、制御方法切替部１６により制御方法を切り替えた後、動作補正情報データベース１８の動作補正情報に基づいて、人４がロボットアーム５に力を加えることで動作情報データベース１７のロボットアーム５の動作情報を補正する機能を有している。なお、（ｉ）、（ｉｉ）、（ｉｉｉ）のそれぞれの制御モードの詳細については、制御パラメータ管理部２１の動作と共に後述する。
【００９４】
以下、動作補正部２０の機能について説明する。
【００９５】
人４が、データ入力ＩＦ２６により、動作情報データベース１７の作業の中の「作業ＩＤ」に関する作業の中からロボットアーム５に実行させたい作業を選択して、選択情報を動作指令部２７に入力して指定する。指定された作業について、動作指令部２７は、動作補正部２０に作業選択の指示を行う。動作補正部２０は、動作情報データベース１７の中から選択された「作業ＩＤ」の作業の動作情報（具体的には、位置の情報と姿勢の情報と時間の情報と力の情報）を、フラグに従って、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。
【００９６】
具体的には、図５の「作業ＩＤ」が「１」の作業が選択された場合は、「作業ＩＤ」が「１」でかつ「動作ＩＤ」が「１」の動作の場合には、「フラグ」が０、１、３、４、５ビット目が「１」なので、ロボットアーム５の手先位置のｘ、ｙ、φ、θ、ψが有効ということを示している。よって、ｘ、ｙ、φ、θ、ψについては位置制御モードで動作させ、ｚ軸については「フラグ」の８ビット目が「１」なので、力制御モードで動作するように、動作補正部２０から制御パラメータ管理部２１へ指令を出す。
【００９７】
以上により、図１６Ａに示すように、ロボットアーム５はＩＨクッキングヒータ６などの天板を拭き掃除作業を開始する。
【００９８】
ＩＨクッキングヒータ６などの天板を拭き掃除動作をしているときに、人４が、ＩＨクッキングヒータ６などの天板上の、拭き掃除動作をしている場所とは別の場所が汚れていること見つけ、かつ、ロボットアーム５に別の場所での拭き掃除動作をさせたいため、人４が、データ入力ＩＦ２６にロボットアーム５を別の場所に移動させるように、データ入力ＩＦ２６により補正開始の命令を動作指令部２７に入力したとする。このとき、動作指令部２７は、データ入力ＩＦ２６からの補正開始の指令を受けて、動作補正部２０に補正開始を出力する。
【００９９】
動作補正部２０は、データ入力ＩＦ２６からの補正開始の指令を受けて、動作情報データベース１７の補正パラメータフラグにしたがって、制御モードを設定して動作するように、制御パラメータ管理部２１へ指令を出す。具体的には、図５の「作業ＩＤ」が「１」の作業が動作中（進捗情報が「１」の動作）の「動作ＩＤ」の補正パラメータフラグが、図５では、８ビット目のみ「１」でその他は「０」なので、ロボットアーム５の動作のうち、ｚ軸の力成分のみ補正が可能ということを表す。力成分を補正する場合には、その力成分を人４の加えた力で補正ができるように、力ハイブリッドインピーダンス制御モードの設定を行い、ｚ軸方向の制御方法の切り替えの指令を動作補正部２０から制御方法切替部１６へ出力する。
【０１００】
人４がロボットアーム５を把持するとき、人４がロボットアーム５についてどこの部分を把持しているかを把持位置検出部２３で検出し、検出結果を把持位置検出部２３から制御方法切替部１６へ入力する。すると、制御方法切替部１６で制御方法を把持位置に応じて切り替えて、その制御方法で動作するように、制御方法切替部１６が制御パラメータ管理部２１へ指令を出す。
【０１０１】
人４は、図１６Ｂに示すように、汚れ９１の付近を強めに力をかけて掃除するために、ロボットアーム５を人４が把持して、汚れのある部分９１ａに向かって人４からロボットアーム５に力を加える。加えた力の情報は、制御部２２の力検出部５３で検出し、制御パラメータ管理部２１を介して、動作補正部２０に入力される。動作補正部２０では、現在動作中の「作業ＩＤ」の情報と「動作ＩＤ」の動作情報のうち、力制御で動作しているｚ軸の力成分の値を、入力された力成分の値に修正して補正する。
【０１０２】
動作補正部２０により、人４がロボットアーム５に加えた力で、ロボットアーム５の動作を補正し、ロボットアーム５のＩＨクッキングヒータ６を擦る力を強めて拭き掃除作業を行う。
【０１０３】
以上により、動作補正部２０は、動作情報データベース１７の動作情報で動作している状態で、人４がロボットアーム５に力を加えることで、動作情報を補正することができるようになる。さらに、制御方法切替部１６により、人４がロボットアーム５のどの部分を把持しても、人４が加えた力を正しく検出することができるようになる。
【０１０４】
−制御方法切替部−
制御方法切替部１６は、
（ｉ）位置制御モードと、
（ｉｉ）インピーダンス制御モードと、
（ｉｉｉ）力制御モードと、
（ｉｖ）それらを方向別に組み合わせた制御モードと
のうち、いずれかのモードで動作中に動作補正部２０からの指令を受けると、把持位置検出部２３で検出された把持位置と力検出部特性データベース１８に記憶された情報とに基づいて、人４がロボットアーム５を把持して力のパラメータを補正する際の制御方法を切り替える。なお、本発明では、一例として、制御方法を切り替えするか否かを制御方法切替部１６で判断するとき、切り替え前（切り替えるか否かの判断前）の制御方法でロボットアーム５の動作を制御する制御方法に切り替える（結果的には、制御方法を変更しない）ときも、「制御方法に切り替える」と称する。
【０１０５】
例えば、図１０のように、手首部３１に、力検出部５３の一例としての力センサを配置した場合に、ロボットアーム５が（ｉｉｉ）の力制御モードで動作している最中に、（ｉｖ）の制御モードの一例としての力ハイブリッドインピーダンス制御モードで動作するよう指令を受けた場合の制御方法の切り替えについて、図１１のフローチャートに示す。
【０１０６】
まず、動作補正部２０から（ｉｖ）の力ハイブリッドインピーダンス制御モードによる制御を行うように制御方法切替部１６が指令を受けると、制御方法切替部１６は、把持位置検出部２３でロボットアーム５における人４の把持位置を検出して、検出した結果の情報を制御方法切替部１６に入力する（ステップＳ１）。
【０１０７】
次に、把持位置検出部２３により検出された把持位置の力検出部５３の抗力の有無に関する特性を、力検出部特性データベース１８を使って、制御方法切替部１６により検出する（ステップＳ２）。例えば、人４が前腕リンク３２を把持している場合は、図９Ｂの力検出部特性データベース１８の「前腕」を表す「把持位置ＩＤ」は「２」であることから、図９Ａによれば、「把持位置ＩＤ」が「２」の場合の「抗力の影響の可能性の有無」は「１」であると、制御方法切替部１６により検出する。同様に、人４がハンド３０を把持している場合は、図９Ｂの[ハンド]を表す「把持位置ＩＤ」は「４」であることから、図９Ａの「把持位置ＩＤ」が「４」の場合の、「抗力の影響の可能性の有無」は「１」であると、制御方法切替部１６により検出する。これらの場合は、「抗力の影響の可能性の有無」は「１」である（抗力の影響が有る）ので、ステップＳ２ではＹｅｓとなり、ステップＳ３に進む。もし、「抗力の影響の可能性の有無」は「０」である（抗力の影響を受けない）ならば、ステップＳ２ではＮｏとなり、ステップＳ４に進む。
【０１０８】
次に、ステップＳ３及びステップＳ４において、それぞれ、把持位置検出部２３により検出された把持位置の力検出部５３の検出の有無に関する特性を、力検出部特性データベース１８を使って、制御方法切替部１６により検出する（ステップＳ３、ステップＳ４）。このステップＳ３及びステップＳ４において、「検出の有無」は「１」である場合（力検出部５３で検出可能である場合）ならば、ステップＳ３及びステップＳ４において、それぞれＹｅｓとなり、ステップＳ５又はＳ７に進む。もし、「検出の有無」は「０」である場合（力検出部５３で検出可能である場合）ならば、ステップＳ３及びステップＳ４において、それぞれＮｏとなり、ステップＳ６又はＳ８に進む。例えば、ステップＳ３及びステップＳ４において、人４が前腕リンク３２を把持している場合は、図９Ｂの力検出部特性データベース１８の「前腕」の「把持位置ＩＤ」は「２」であることから、図９Ａの「把持位置ＩＤ」が「２」の場合の「検出の有無」が「０」であると、制御方法切替部１６により検出する（すなわち、前腕では力検出部５３で検出不可能である、と検出する）。同様に、人４がハンド３０を把持している場合は、図９Ｂの[ハンド]の「把持位置ＩＤ」は「４」となり、図９Ａの「把持位置ＩＤ」が「４」の場合の「検出の有無」が「１」であると、制御方法切替部１６により検出する（すなわち、ハンド３０では力検出部５３で検出可能である、と検出する）。
【０１０９】
ステップＳ５では、後述する高剛性位置制御モード（人４の力でロボットアーム５が移動できない制御方法）に制御方法切替部１６により切り替える。すなわち、ステップＳ２で「抗力の影響の可能性の有無」が「１」であり（すなわち、抗力の影響を受ける場合で）、且つステップＳ３で「検出の有無」が「１」である場合（例えば、ハンド３０を把持して、抗力の影響を受けるとともに、力検出部５３で検出可能である場合）は、ステップＳ５で、ロボットアーム５が接触面に直接的に又は間接的に接触しない位置で、後述する高剛性位置制御モード（人４の力でロボットアーム５が移動できない制御方法）に制御方法切替部１６により切り替える。なお、図２１Ａを基に後述するように、接触面で拭き掃除などの作業をしているロボットアーム５の現在の手先位置を取得し、その手先位置から高さｈだけ接触面から離した位置を設定することで、直接的に又は間接的に接触面に接触していない状態を設定することができる。また、「接触面に接触しない位置」でない位置の場合には、人がロボットアーム５を把持した時点で、「接触面に接触しない位置」まで切り替え動作を実行する。
【０１１０】
このように、ロボットアーム５が接触面に直接的に又は間接的に接触しないようにすることで、接触面からの抗力の影響を無くし、さらに高剛性位置制御モードにすることで、ロボットアーム５が容易に移動して接触面に直接的に又は間接的に接触してしまうことを防ぐことができる。
【０１１１】
一方、ステップＳ６では、人４の力でロボットアーム５が移動できる制御方法である低剛性位置制御モードに制御方法切替部１６により切り替える。すなわち、ステップＳ２で「抗力の影響の可能性の有無」が「１」であり、且つステップＳ３で「検出の有無」が「０」である場合（例えば、前腕リンク３２を把持して、抗力の影響を受けるとともに、力検出部５３で検出不可能である場合）は、ステップＳ６で、人４の力でロボットアーム５が移動できる制御方法である低剛性位置制御モードに切り替える。人４は、接触面に対してロボットアーム５を介して加えたい力をロボットアーム５にかけるために、人４は、ロボットアーム５を把持して接触面に接近する方向にロボットアーム５を押す。低剛性位置制御モードであるため、人４の加えた力でロボットアーム５が容易に移動でき、ロボットアーム５を接触面に直接的に又は間接的に接触させることができる。「検出の有無」が「０」であるため、人４がロボットアーム５に加えた力を力検出部５３で直接検出することはできないが、ロボットアーム５における接触面からの抗力が人４の加えた力と等しいことから、接触面からの抗力を力検出部５３で検出することで、人４の加えた力を力検出部５３で検出することができる。なお、接触面の摩擦の影響などにより、人４がロボットアーム５に加えた力が微小である場合に、人４がロボットアーム５に加えた力か、摩擦の影響による誤検出か、の区別がつかない場合には、力検出部５３で検出された力が、ある閾値以上（例えば０．５（Ｎ））の場合のみ、有効とすることも可能である。
【０１１２】
さらに、ステップＳ７では、制御方法切替部１６による制御方法の切り替えをしない。すなわち、ステップＳ２で「抗力の影響の可能性の有無」が「０」であり、且つステップＳ４で「検出の有無」が「１」である場合（図２７Ａのように力センサ５３ａ，５３ｂを配置し、前腕リンク３２を把持した場合：図３０Ａ参照）は、制御方法の切り替えをしない。すなわち、ロボットアーム５が人４の加えた力で移動したとしても、接触面からの抗力の影響はなく、さらに、「検出の有無」が「１」であるので、人４の加えた力を力検出部５３で直接検出することができるため、（ｉｖ）の力ハイブリッドインピーダンス制御モードに切り替える前の力制御モードのままで制御するよう設定を行う（言い換えれば、Ｓ２及びＳ４の切り替え判断を行なう前（切り替える判断の前）の制御モードのままで制御するよう設定を行う、又は、力制御モードに切り替えるよう設定を行う）。なお、ここで、制御方法切替部１６による制御方法の切り替えを行わないとしたが、位置制御モードに切り替えても、力を正しく検出することができるため、制御方法の切り替えを行わない代わりに、位置制御モードに制御方法切替部１６により切り替えるようにしてもよい。
【０１１３】
また、ステップＳ８では、接触面からの抗力の検出が不可能であるために、人４が加えた力を検出することはできず、ステップＳ９に進む。ステップＳ９では、人４に対して警告を表示するなど、検出ができなかった事を人４に通知する。すなわち、ステップＳ２で「抗力の影響の可能性の有無」が「０」であり、且つステップＳ４で「検出の有無」が「０」である場合は、接触面からの抗力の検出が不可能であるために、ステップ８で、人４が加えた力を検出することはできないと、制御方法切替部１６により判断する。したがって、ステップＳ９において、人４に対して警告を表示するなど、検出ができなかった事を人４に制御方法切替部１６により通知する。
【０１１４】
−動作記憶部−
動作記憶部１５は、動作補正部２０により補正した動作情報を動作情報データベース１７に記憶する。さらに、動作記憶部１５には、制御パラメータ管理部２１からロボットアーム５の手先位置（ハンド３０の位置）及び姿勢と人４がロボットアーム５にかけた力の情報が入力され、動作記憶部１５で記憶する。
【０１１５】
（制御装置本体部１１）
制御装置本体部１１は、制御パラメータ管理部２１と、制御部２２とを有するように構成される。制御部２２と制御パラメータ管理部２１との間では、ロボットアーム５の手先位置又は力の情報などが入出力される。
【０１１６】
−制御パラメータ管理部−
次に、制御パラメータ管理部２１の詳細について説明する。
【０１１７】
制御パラメータ管理部２１は、動作補正部２０又は制御方法切替部１６の指示に基づいて、ロボットアーム５の位置制御モードと、インピーダンス制御モードと、ハイブリッドインピーダンス制御モードと、（ｉｖ）の力ハイブリッドインピーダンス制御モードと、高剛性位置制御モードと、低剛性位置制御モードとの６つのモードの間で制御モードを切り替える設定を行う。また、制御パラメータ管理部２１は、インピーダンス制御モード時及び力ハイブリッドインピーダンス制御モード時の機械インピーダンス設定値の設定を行う。また、制御パラメータ管理部２１は、後述するインピーダンス計算部５１で出力する手先位置及び姿勢目標補正出力ｒｄ△の設定及び目標軌道生成部５５への動作情報の設定を行う。制御パラメータ管理部２１は、動作補正部２０又は制御方法切替部１６の指示に基づいて、設定された制御モードに従ってロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２の制御の下にロボットアーム５を動作させる。さらに、制御パラメータ管理部２１は、制御部２２からロボットアーム５の手先位置又は力の情報などを動作補正部２０へ通知を行う。
【０１１８】
（ｉ）位置制御モード
位置制御モードは、後述する目標軌道生成部５５の手先位置と姿勢目標ベクトル指令とに基づいてロボットアーム５が作動するモードであり、人４がロボットアーム５に力を加えてもロボットアーム５は移動しないようにロボットアーム５の動作を制御する制御方法のモードである。具体的には、かき混ぜ作業又は拭き掃除作業などの作業時におけるロボットアーム５の移動を伴って動作するモードが位置制御モードである。
【０１１９】
（ｉｉ）インピーダンス制御モード
インピーダンス制御モードは、力検出部５３で検出され、かつ人４などからロボットアーム５に加わる力に応じて、ロボットアーム５が作動するようにロボットアーム５の動作を制御する制御方法のモードである。例えば、図８に示すように、人４がロボットアーム５を直接持って、作業場所（図８では鍋３の位置）までロボットアーム５を誘導する場合に動作するモードがインピーダンス制御モードである。
【０１２０】
（ｉｉｉ）力制御モード
力制御モードは、動作補正部２０から制御パラメータ管理部２１へ設定された力で対象物をロボットアーム５で押し付けながら動作するようにロボットアーム５の動作を制御する制御方法の制御モードである。例えば、図１３のように、ＩＨクッキングヒータ６などの天板を拭き掃除作業する際に、天板の表面に力を加えて擦るような拭き掃除作業の場合、又は、図１４のように、鍋３の底に力を加えて擦るようなかき混ぜ作業の場合などの、力を加えて制御する方向に使用する制御モードが力制御モードである。
【０１２１】
（ｉｖ）ハイブリッドインピーダンス制御モード
ハイブリッドインピーダンス制御モードは、ロボットアーム５が位置制御モードで動作しているときに、ロボットアーム５に加わる力が力検出部５３により検出され、かつ力検出部５３で検出された力に応じて、ロボットアーム５が作動するようにロボットアーム５の動作を制御する制御方法のモードである。具体的には、ロボットアーム５が、図１２Ａに示すように、ロボットアーム５が位置制御モードによるかき混ぜ業を行っているときに、人４が鍋３の中の底側の部分をかき混ぜることができるようにロボットアーム５の動作を補正したい場合に、制御パラメータ管理部２１は、ハイブリッドインピーダンス制御モードに切り替える指令を制御部２２へ出力する。その結果、図１２Ｂに示すように、人４がロボットアーム５を把持しながら、ハイブリッドインピーダンス制御モードにより下方向に力をかけることで（図１２Ｂの下向きの矢印参照）、水平方向を位置制御モードでかき混ぜながら、図１２Ｃの下向きの矢印及び下側の回転方向の矢印で示すように、垂直方向すなわち鍋底をかき混ぜる動作に補正することができるようになる。このような制御方法がハイブリッドインピーダンス制御モードである。
【０１２２】
（ｖ）力ハイブリッドインピーダンス制御モード
力ハイブリッドインピーダンス制御モードは、ロボットアーム５が力制御モードで動作しているときに、人４からロボットアーム５に加わる力に応じて、ロボットアーム５が作動するようにロボットアーム５の動作を制御する制御方法のモードである。具体的には、図１６ＡのようにＩＨクッキングヒータ６などの天板を拭き掃除作業をしているときに、図１６Ｂのように汚れがひどい部分９１ａを人４が見つけて、ロボットアーム５を把持して汚れがひどい部分９１ａまでロボットアーム５を移動させて、ロボットアーム５が天板に加える力を補正する際に使用するモードである。なお、力ハイブリッドインピーダンス制御モードの具体的な制御モードは、制御方法切替部１６により切り替えられたモードが力ハイブリッドインピーダンス制御モードである。
【０１２３】
以上の制御モードは、６軸の方向別にそれぞれ別個に設定することができる。
例えば、図１６Ａの拭き掃除作業は、６軸の方向別に、ハイブリッドインピーダンス制御モードか、インピーダンス制御モードか、位置制御モードかを制御方法切替部１６により切り替え、さらに、制御方法切替部１６により指定した力を作用させて動作する力制御モードで動作させる制御モードである。なお、力制御モードが設定された方向にインピーダンス制御モードを設定することはできない（力制御モードとインピーダンス制御モードは排他的な関係）。
【０１２４】
例えば、図１６ＡのようにＩＨクッキングヒータ６などの天板を拭き掃除作業する際に、掃除面に平行に円状に動作しながら、掃除面に垂直下向きに指定した力をかけて、拭き掃除をする場合には、具体的には、（ｘ，ｙ，ｚ，φ，θ，ψ）の６軸それぞれに以下の制御モードを設定する。すなわち、（ｘ，ｙ）成分がハイブリッドインピーダンス制御モード、（φ，θ，ψ）成分がインピーダンス制御モードで、ｚ軸成分が力制御モードである。ｚ軸成分の力の補正を行う場合には、力ハイブリッドインピーダンス制御モードに切り替える。
【０１２５】
このように掃除面と水平な方向はハイブリッドインピーダンス制御モードとすることで、位置制御モードで動作している最中に、人４などからロボットアーム５に加わる力に応じて、ロボットアーム５を移動させることができる。さらに、（φ，θ，ψ）成分をインピーダンス制御モードとすることで、停止している状態で人４などからロボットアーム５に加わる力に応じて、ロボットアーム５の姿勢を変更することができるようになる。また、ｚ軸成分を力制御モードに設定することで、指定された力で押し付けながら動作することができるようになる。さらに、力ハイブリッドインピーダンス制御モードにすることで、人４が加えた力で拭き掃除をするよう、ロボットアーム５の動作を補正することができる。なお、（ｘ，ｙ，ｚ，φ，θ，ψ）の６軸のうち、ｚ軸成分が力制御モードで、その他の軸は位置制御モードで動作させても良い。その場合は、衝突など不用意な力がロボットアーム５に加わっても、位置制御成分を誤って移動させることはない。
【０１２６】
高剛性位置制御モードは、ロボットアーム５の動作中の位置制御モードをさらに高剛性にした制御モードである。具体的には、後述する位置誤差補償部５６でのゲインを大きくすることで実現し、人４が力を加えても、ロボットアーム５を容易に移動させることができない。そのため、接触面に直接的に又は間接的に接触していない状態で、高剛性位置制御モードに切り替えることで、接触面からの抗力の影響を受けないため、人４がかけた力を正しく検出することができる。さらに、接触面で拭き掃除などの作業をしているロボットアーム５の現在の手先位置を取得し、その手先位置から高さｈだけ接触面から離した位置を設定することで、直接的に又は間接的に接触面に接触していない状態を設定することができる（図２１Ａに図示）。
【０１２７】
低剛性位置制御モードは、ロボットアーム５の動作中の位置制御モードをさらに低剛性にした制御モードである。具体的には、後述する位置誤差補償部５６でのゲインを小さくすることで実現し、人４が力を加えた場合に、ロボットアーム５を容易に移動させることができる。そのため、人４が把持した位置で力検出部５３で力が検出できない場合には、人４がロボットアーム５を直接的に又は間接的に接触面に接触する（接触面に衝突する）まで移動させて接触位置で停止させ、その接触面からの抗力を力検出部５３で検出することで、人４がかけた力を正しく検出することができる。
【０１２８】
これらの制御モードは、ロボットアーム５の動作の際に、ロボットアーム５の方向及び姿勢別にそれぞれ適切な制御モードを設定して動作させる。
【０１２９】
さらに、人４が、ハイブリッドインピーダンス制御モード又はインピーダンス制御モードでロボットアーム５が動作中に、補正するパラメータに応じて、機械インピーダンスパラメータ又はインピーダンス計算部５１で出力する手先位置及び姿勢目標補正出力ｒｄ△の設定を変更する。
【０１３０】
機械インピーダンス設定値の設定パラメータとしては、慣性Ｍと粘性Ｄと剛性Ｋとがある。機械インピーダンス設定値の各パラメータの設定は、補正値を使って、以下の評価式に基づいて行う。
【０１３１】
【数２】
2010079564.tif 000063
【０１３２】
【数３】
2010079564.tif 000064
【０１３３】
【数４】
2010079564.tif 000065
【０１３４】
前記式（３）〜（５）中のＫＭ、ＫＤ、ＫＫはそれぞれゲインであり、それぞれある定数値である。
【０１３５】
制御パラメータ管理部２１は、前記式（３）〜（５）に基づき計算した機械インピーダンスパラメータの慣性Ｍと粘性Ｄと剛性Ｋとを制御部２２へ出力する。
【０１３６】
前記式（３）〜（５）により、例えば、図１２Ｂのように、人４がロボットアーム５のハンド３０で把持されたレードル９を使用して鍋３の中の上側の部分をかき混ぜている動作に対して、鍋３の中の底側の部分をかき混ぜるようロボットアーム５の動作を補正させたい場合に、ロボットアーム５のｚ軸以外の位置成分及び姿勢成分が簡単に動くと、ロボットアーム５の動作の補正作業がやりにくくなる。そこで、制御パラメータ管理部２１により、ロボットアーム５のｚ軸以外の位置成分及び姿勢成分についてのみ、上述の補正値を高く（具体的には、例えば、上述の補正値の約１０倍に）設定することで、ロボットアーム５の粘性Ｄ及び剛性Ｋが大きくなるように設定されることになり、ロボットアーム５の動きに抵抗感又は硬さが生じ、ロボットアーム５が動きにくくなる。
【０１３７】
又は、別の方法として、インピーダンス計算部５１から出力される手先位置及び姿勢目標補正出力ｒｄ△の各成分のうち、ｚ軸以外の値を全て０にする方法がある。これによって、ｚ軸以外は、人４の力で移動できなくなるため、誤操作を防ぐことができる。
【０１３８】
さらに、上述したように、制御パラメータ管理部２１から、動作記憶部１５と動作補正部２０とに、ロボットアーム５の手先位置及び姿勢と、人４の加えた力の情報とを通知する必要がある。そのため、制御部２２から制御パラメータ管理部２１にロボットアーム５の手先位置及び力の情報を受けると、制御パラメータ管理部２１は、動作記憶部１５と動作補正部２０とへ通知を行う。また、動作補正部２０から制御パラメータ管理部２１に入力された、位置及び姿勢と時間となどの動作情報を、制御パラメータ管理部２１から制御部２２へ通知する。
【０１３９】
−制御部−
次に、制御部２２の詳細について、図３により説明する。制御部２２は、目標軌道生成部５５と、ハンド制御部５４と、力検出部５３と、インピーダンス計算部５１と、位置制御系５９（位置誤差補償部５６と、近似逆運動学計算部５７と、順運動学計算部５８とを有する。）と、位置誤差計算部８０とを有するように構成されている。力検出部５３は、図３では制御部２２の一部として図示しているが、制御部２２とは別の構成としてもよい。
【０１４０】
ロボットアーム５からは、それぞれの関節軸のエンコーダ４４により計測された関節角の現在値（関節角度ベクトル）ベクトルｑ＝［ｑ１，ｑ２，ｑ３，ｑ４，ｑ５，ｑ６］Ｔが出力され、入出力ＩＦ２４により制御部２２に取り込まれる。ただし、ｑ１，ｑ２，ｑ３，ｑ４，ｑ５，ｑ６は、それぞれ、第１関節部３５、第２関節部３６、第３関節部３７、第４関節部３８、第５関節部３９、第６関節部４０の関節角度である。
【０１４１】
目標軌道生成部５５は、位置制御モードで、又は力制御モードで、又は方向別に位置制御モード若しくは力制御モードで、ロボットアーム５を動作するように、動作補正部２０で生成されかつ制御パラメータ管理部２１を介して目標軌道生成部５５に入力された動作情報から、目標とする手先位置及び姿勢目標ベクトルｒｄと目標とする手先（ハンド３０）にかかる力ベクトルｆｄとを目標軌道生成部５５により生成する。
【０１４２】
具体的には、動作補正部２０から制御パラメータ管理部２１を介して、動作情報が目標軌道生成部５５に入力されると、目標とするロボットアーム５の動作を実現するための手先位置及び姿勢目標ベクトルｒｄと目標とする手先にかかる力ベクトルｆｄとそれぞれの方向別にどのパラメータが有効かを示すフラグとが、目標軌道生成部５５から位置誤差計算部８０に出力される。目標とするロボットアーム５の動作は、目的とする作業に応じて動作補正部２０からそれぞれの時間（ｔ＝０、ｔ＝ｔ１、ｔ＝ｔ２、・・・）でのポイント毎の位置及び姿勢（ｒｄ０、ｒｄ１、ｒｄ２、・・・）と力（ｆｄ０、ｆｄ１、ｆｄ２、・・・）とが与えられており、目標軌道生成部５５は、多項式補間を使用し、各ポイント間の軌道及び力を補間し、手先位置及び姿勢目標ベクトルｒｄと目標力ベクトルｆｄとを生成する。
【０１４３】
インピーダンス制御モード時には、インピーダンス制御モードに切り替え時のロボットアーム５の手先位置を、目標とする手先位置及び姿勢目標ベクトルｒｄとして出力する。さらに、動作情報データベース１７の動作情報のハンド３０の開閉フラグにより、後述するハンド制御部５４へ、ハンド３０の開閉指令を出す。
【０１４４】
５４はハンド制御部であり、目標軌道生成部５５から入力した開閉フラグにより、ハンド３０を開閉するよう、入出力ＩＦ２４を介してロボットアーム５へ指令を出す。
【０１４５】
５３は力検出部であり、人４等とロボットアーム５の接触によってロボットアーム５に加わる外力Ｆｅｘｔを検出する。ただし、手先に重量ｍの物体を把持して作業している場合は、検出したＦｅｘｔからｍｇをあらかじめ減じておく。ここで、ｇは重力加速度である。把持物体の質量ｍの値は、物体を把持する前に人４がデータ入力ＩＦ２６により力検出部５３に入力することができる。
【０１４６】
インピーダンス計算部５１は、ロボットアーム５に機械インピーダンス設定値への前記ロボットアーム５の機械インピーダンスの値の制御を実現する機能を果たす部分であり、制御パラメータ管理部２１から位置制御モードに切り替えられた際には０を出力する。
【０１４７】
一方、インピーダンス制御モード及びハイブリッドインピーダンス制御モードに切り替えられた際には、制御パラメータ管理部２１で設定されたインピーダンスパラメータである慣性Ｍと粘性Ｄと剛性Ｋと、関節角の現在値ｑと、力検出部５３が検出した外力Ｆｅｘｔとより、ロボットアーム５に機械インピーダンス設定値への前記ロボットアーム５の機械インピーダンスの値の制御を実現するための手先位置及び姿勢目標補正出力ｒｄΔを以下の式（６）によりインピーダンス計算部５１で計算し、計算して求められた手先位置及び姿勢目標補正出力ｒｄΔを位置誤差計算部８０に出力する。
【０１４８】
さらに、制御パラメータ管理部２１で力制御モードに切り替えられた際には、「フラグ」で指定された力成分が存在する場合には、制御パラメータ管理部２１で設定されたインピーダンスパラメータである慣性Ｍと粘性Ｄと剛性Ｋと、関節角の現在値ｑと、力検出部５３が検出した外力Ｆｅｘｔと、目標軌道生成部５５から出力されるｆｄとより、ロボットアーム５に機械インピーダンス設定値への前記ロボットアーム５の機械インピーダンスの値の制御を実現するための手先位置及び姿勢目標補正出力ｒｄΔを以下の式（１０）によりインピーダンス計算部５１で計算して、計算して求められた手先位置及び姿勢目標補正出力ｒｄΔを位置誤差計算部８０に出力する。
【０１４９】
手先位置及び姿勢目標補正出力ｒｄΔは、目標軌道生成部５５の出力する手先位置及び姿勢目標ベクトルｒｄに位置誤差計算部８０で加算され、手先位置及び姿勢補正目標ベクトルｒｄｍが生成される。ただし、ハイブリッドインピーダンス制御モード時に、補正パラメータに応じて、ロボットアーム５の動作を拘束する場合に、例えばｚ軸のみロボットアーム５が動くようにするには、手先位置及び姿勢目標補正出力ｒｄΔのｚ成分以外を０にインピーダンス計算部５１で設定する。
【０１５０】
【数５】
2010079564.tif 000066
ただし、
【０１５１】
【数６】
2010079564.tif 000067
【０１５２】
【数７】
2010079564.tif 000068
【０１５３】
【数８】
2010079564.tif 000069
であり、sはラプラス演算子である。
【０１５４】
【数９】
2010079564.tif 000070
ただし、Ｍ，Ｄ，Ｋは式（７）、式（８）、式（９）により算出する。
【０１５５】
５８はロボットアーム５からのそれぞれの関節軸のエンコーダ４４により計測された関節角の現在値ｑである関節角度ベクトルｑが、入出力ＩＦ２４を介して入力される順運動学計算部である。順運動学計算部５８は、ロボットアーム５の関節角度ベクトルｑから、手先位置及び姿勢ベクトルｒへの変換の幾何学的計算を順運動学計算部５８で行う。順運動学計算部５８で計算された手先位置及び姿勢ベクトルｒは、位置誤差計算部８０及びインピーダンス計算部５１及び目標軌道生成部５５に出力される。
【０１５６】
５６は位置誤差補償部であり、ロボットアーム５において計測される関節角度ベクトルｑより順運動学計算部５８により計算される手先位置及び姿勢ベクトルｒと、手先位置及び姿勢補正目標ベクトルｒｄｍとの誤差ｒｅが位置誤差計算部８０で求められたのち、その誤差ｒｅが位置誤差補償部５６に入力され、位置誤差補償部５６から、位置誤差補償出力ｕｒｅが近似逆運動学計算部５７に向けて出力される。
【０１５７】
さらに、高剛性位置制御モードが設定された際に、定数の対角行列である比例、微分、積分の３つのゲインをあらかじめ設定された値に大きく設定する（通常の位置制御モードと比較して大きな値を設定する。具体的には、通常の位置制御モード時の２倍程度の値に設定する。ここで、高剛性とは、通常の位置制御と比較して、剛性が高くなることを意味する。値を通常の位置制御モード時の２倍程度にすると、剛性を約２倍まで高くすることができる。このようにすることで、高剛性の位置制御を実現することができる。なお、前記ゲインを各成分毎に値を変えることで、例えば、ｚ軸方向のみ高剛性で、その他の方向は通常の位置制御で動作するよう制御することができる。
【０１５８】
また、低剛性位置制御モードが設定された際に、定数の対角行列である比例、微分、積分の３つのゲインをあらかじめ設定された値に小さく設定する。すなわち、通常の位置制御モードと比較して、小さな値を設定する。具体的には、通常の位置制御モード時の半分程度の値に設定する。ここで、低剛性とは、通常の位置制御と比較して、剛性が低くなることを意味する。値を通常の位置制御モード時の半分程度にすると、剛性を約半分まで低くすることができる。このようにすることで、低剛性の位置制御を実現することができる。なお、前記ゲインを各成分毎に値を変えることで、例えば、ｚ軸方向のみ低剛性で、その他の方向は通常の位置制御で動作するよう制御することができる。
【０１５９】
近似逆運動学計算部５７では、位置誤差補償部５６により入力される位置誤差補償出力ｕｒｅとロボットアーム５において計測される関節角度ベクトルｑとに基づき、近似式ｕｏｕｔ＝Ｊｒ（ｑ）−１ｕｉｎにより、逆運動学の近似計算を行う。ただし、Ｊｒ（ｑ）は、
【０１６０】
【数１０】
2010079564.tif 000071
【０１６１】
の関係を満たすヤコビ行列、ｕｉｎは近似逆運動学計算部５７への入力、ｕｏｕｔは近似逆運動学計算部５７からの出力であり、入力ｕｉｎを関節角度誤差ｑｅとすれば、ｑｅ＝Ｊｒ（ｑ））−１ｒｅのように手先位置及び姿勢誤差ｒｅから関節角度誤差ｑｅへの変換式となる。したがって、位置誤差補償部５６から位置誤差補償出力ｕｒｅが近似逆運動学計算部５７に入力されると、近似逆運動学計算部５７からの出力として、関節角度誤差ｑｅを補償するための関節角度誤差補償出力ｕｑｅが近似逆運動学計算部５７から入出力ＩＦ２４を介してロボットアーム５のモータドライバ２５に向けて出力される。
【０１６２】
関節角度誤差補償出力ｕｑｅは、入出力ＩＦ２４のＤ／Ａボードを介してロボットアーム５のモータドライバ２５に電圧指令値として与えられ、各モータ４３により各関節軸が正逆回転駆動されロボットアーム５が動作する。
【０１６３】
以上のように構成される制御部２２に関して、ロボットアーム５のインピーダンス制御動作の原理について説明する。
【０１６４】
インピーダンス制御動作（ハイブリッドインピーダンス制御も同様）の基本は、位置誤差補償部５６による手先位置及び姿勢誤差ｒｅのフィードバック制御（位置制御）であり、図３の点線で囲まれた部分が位置制御系５９になっている。位置誤差補償部５６として、例えば、ＰＩＤ補償器を使用すれば、手先位置及び姿勢誤差ｒｅが０に収束するように位置制御系５９による制御が働き、目標とするロボットアーム５のインピーダンス制御動作を実現することができる。
【０１６５】
制御パラメータ管理部２１でインピーダンス制御モード若しくはハイブリッドインピーダンス制御モード若しくは力ハイブリッドインピーダンス制御モードに切り替えられた場合には、前記説明した位置制御系５９に対し、インピーダンス計算部５１により手先位置及び姿勢目標補正出力ｒｄΔが位置誤差計算部８０で加算され、手先位置及び姿勢の目標値の補正が行われる。このために、前記した位置制御系５９は、手先位置及び姿勢の目標値が本来の値より微妙にずれることになり、結果的に、前記ロボットアーム５の機械インピーダンスの値を前記適切に設定された設定値に制御する動作が実現され、位置制御系５９の位置制御動作を補正することができる。手先位置及び姿勢目標補正出力ｒｄΔはインピーダンス制御モード若しくはハイブリッドインピーダンス制御モードの場合は式（６）により算出され、力ハイブリッドインピーダンス制御モードの場合は式（１０）による算出されるため、前記ロボットアーム５の慣性Ｍと粘性Ｄと剛性Ｋとの機械インピーダンスの値を前記適切に設定された設定値に制御する動作が実現される。
【０１６６】
（周辺装置１４）    
周辺装置１４は、データ入力ＩＦ(インターフェース)２６と入出力ＩＦ(インターフェース)２４とモータドライバ２５と表示部２とを有するように構成される。制御部２２から入出力ＩＦ２４には制御信号などの制御情報が出力される。動作補正部２０から、動作情報データベース１７で記憶された補正パラメータなどの補正情報及び動作ＩＤに該当する映像若しくは写真若しくはテキストが表示部２へ出力されて、動作情報で記述されたロボットアーム５の動作の映像若しくは写真若しくはテキストを表示部２で表示する。
【０１６７】
入出力ＩＦ２４は、パーソナルコンピュータのＰＣＩバスなどの拡張スロットに接続された、例えばＤ／ＡボードとＡ／Ｄボードとカウンタボードとなどを有するように構成されている。入出力ＩＦ２４は、ロボットアーム５の各関節部の、後述するエンコーダ４４より出力される各関節角度情報及びハンド３０のエンコーダ６１より出力される角度情報が入力されて制御部２２に入力する。一方、入出力ＩＦ２４には、制御部２２から制御信号などの制御情報が入力されるとともに、モータドライバ２５に制御指令値などの制御情報を出力する。モータドライバ２５は、ロボットアーム５の各関節部の、後述するモータ４３及びハンド３０のモータ６２へ制御指令値などの制御情報を出力する。
【０１６８】
データ入力ＩＦ（インターフェース）２６は、人４がキーボード又はマウス又はマイクなどの入力装置を使用して、後述する動作情報を入力したり変更したりするためのインターフェースである。また、データ入力ＩＦ２６は、図１の操作盤１３のボタン１３ａなどの入力装置を使用して、人４から動作指令部２７に対して制御動作開始及び終了、動作の補正開始及び終了の指令を受けるようにしてもよい。ボタン１３ａとしては、例えばトグルスイッチとして１つのボタンで制御動作開始及び制御動作終了をそれぞれ入力可能としてもよいし、制御動作開始ボタンと制御動作終了ボタンと別々に設けてもよい。
【０１６９】
表示部２は、例えばロボットアーム５又は作業台７の側面に設置されたディスプレイ装置であり、動作情報などを表示する。
【０１７０】
以上の原理に基づく制御プログラムの実際の動作ステップについて、図１５のフローチャートに基づいて説明する。
【０１７１】
ロボットアーム５の関節部それぞれのエンコーダ４４により計測された関節角度データ（関節変数ベクトル又は関節角度ベクトルｑ）が、エンコーダ４４から、入出力ＩＦ２４を介して、制御装置本体部１１の制御部２２に取り込まれる(ステップＳ１０１)。
【０１７２】
次いで、制御部２２に取り込まれた関節角度データ（関節変数ベクトル又は関節角度ベクトルｑ）に基づいて、逆運動学計算部５７にてロボットアーム５の運動学計算に必要なヤコビ行列Ｊｒ等の計算を行う (ステップＳ１０２)。
【０１７３】
次いで、順運動学計算部５８にて、ロボットアーム５のそれぞれのエンコーダ４４からの関節角度データ（関節変数ベクトル又は関節角度ベクトルｑ）から、ロボットアーム５の現在の手先位置及び姿勢ベクトルｒを計算して、位置誤差計算部８０と目標軌道生成部５５とインピーダンス計算部５１とに出力する（ステップＳ１０３）。
【０１７４】
次いで、動作補正部２０から制御パラメータ管理部２１を介して送信された動作情報に基づき、目標軌道計算部５５は、ロボットアーム５の手先位置及び姿勢目標ベクトルｒｄと目標力ベクトルｆｄとを計算し、インピーダンス制御モード時は、ロボットアーム５の手先位置を、目標とする手先位置及び姿勢目標ベクトルｒｄとして位置誤差計算部８０に出力する（ステップＳ１０４）。
【０１７５】
次いで、力検出部５３は、モータ４３の駆動電流値ｉと、関節角度データ（関節変数ベクトル又は関節角度ベクトルｑ）と、関節角度誤差補償出力ｕｑｅとから、ロボットアーム５の手先における等価手先外力Ｆｅｘｔを計算してインピーダンス計算部５１に出力する（ステップＳ１０５）。
【０１７６】
次いで、ステップＳ１０６では、制御パラメータ管理部２１において、後述する動作補正部２０により補正有りと指示され且つ補正パラメータで６軸のうち力成分を補正する場合であって、かつ、制御方法切替部１６で低剛性位置制御モードに切り替えられた場合は、力成分が設定された成分は低剛性位置制御モードに制御モードを切り替えられる。その後、ステップＳ１０７へ進む。
【０１７７】
また、ステップＳ１０６では、制御パラメータ管理部２１において、後述する動作補正部２０により補正有りと指示され且つ補正パラメータで６軸のうち力成分を補正する場合であって、かつ、制御方法切替部１６で高剛性位置制御モードに切り替えられた場合は、力成分が設定された成分は高剛性位置制御モードに制御モードを切り替えられる。その後、ステップＳ１０８へ進む。
【０１７８】
また、ステップＳ１０６では、制御パラメータ管理部２１において、６軸のうち位置成分を補正する場合は、変更したい位置成分をインピーダンス制御モードに制御方法切替部１６で変更する。その後、ステップＳ１１０へ進む。
【０１７９】
また、ステップＳ１０６では、制御パラメータ管理部２１において、補正なしの場合には、ステップＳ１０９へ進み、位置制御モードを設定する。
【０１８０】
また、ステップＳ１０６では、制御パラメータ管理部２１において、後述する動作補正部２０により補正有りと指示され且つ補正パラメータで６軸のうち力成分を補正する場合であって、かつ、制御方法切替部１６で切り替えなしと設定された場合は、切り替え前の制御方法（力制御モード）に切り替える。その後、ステップＳ１１０へ進む。
【０１８１】
ステップＳ１０７（インピーダンス計算部５１での処理）では、制御パラメータ管理部２１において、低剛性位置制御モードが設定された場合には、インピーダンス計算部５１で、手先位置及び姿勢目標補正出力ｒｄΔを０ベクトルとする。その後、ステップＳ１１１に進む。
【０１８２】
ステップＳ１０８（インピーダンス計算部５１での処理）では、制御パラメータ管理部２１において、高剛性位置制御モードが設定された場合には、インピーダンス計算部５１で、手先位置及び姿勢目標補正出力ｒｄΔを０ベクトルとする。その後、ステップＳ１１２に進む。
【０１８３】
ステップＳ１０９（インピーダンス計算部５１での処理）では、制御パラメータ管理部２１において、位置制御モードが設定された場合には、インピーダンス計算部５１で、手先位置及び姿勢目標補正出力ｒｄΔを０ベクトルとする。その後、ステップＳ１１３に進む。
【０１８４】
ステップＳ１１０では、制御パラメータ管理部２１において、インピーダンス制御モード若しくは力制御モードが設定された場合には、インピーダンス計算部５１では、制御パラメータ管理部２１において設定された機械インピーダンスパラメータの慣性Ｍと粘性Ｄと剛性Ｋと、関節角度データ（関節角度ベクトルｑ）と、力検出部５３により計算されたロボットアーム５に加わる等価手先外力Ｆｅｘｔとから、手先位置及び姿勢目標補正出力ｒｄΔが、インピーダンス計算部５１により計算される。さらに、補正パラメータに基づいて、手先位置及び姿勢目標補正出力ｒｄΔのいずれか成分の値を０に設定する。
【０１８５】
ステップＳ１１３では、位置誤差補償部５６では、手先位置及び姿勢目標ベクトルｒｄと手先位置及び姿勢目標補正出力ｒｄΔとの和である手先位置及び姿勢補正目標ベクトルｒｄｍと、現在の手先位置及び姿勢ベクトルｒとの差である手先位置及び姿勢の誤差ｒｅが計算される。位置誤差補償部５６の具体例としては、ＰＩＤ補償器が考えられる。定数の対角行列である比例、微分、積分の３つのゲインを適切に調整することにより、位置誤差が０に収束するように位置誤差補償部５６の制御が働く。その後、ステップＳ１１４に進む。
【０１８６】
ステップＳ１１１では、位置誤差補償部５６の定数の対角行列である比例、微分、積分の３つのゲインを適切に調整することにより、位置誤差が０に収束するように位置誤差補償部５６の制御が働く。そのゲインを、ある値まで小さくすることで、低剛性の位置制御を実現する。その後、ステップＳ１１４に進む。
【０１８７】
ステップＳ１１２では、位置誤差補償部５６の定数の対角行列である比例、微分、積分の３つのゲインを適切に調整することにより、位置誤差が０に収束するように位置誤差補償部５６の制御が働く。そのゲインを、ある値まで大きくすることで、高剛性の位置制御を実現する。その後、ステップＳ１１４に進む。
【０１８８】
ステップＳ１１４では、近似逆運動学計算部５７では、ステップＳ１０２で計算したヤコビ行列Ｊｒの逆行列を位置誤差補償出力ｕｒｅに近似逆運動学計算部５７で乗算することにより、位置誤差補償出力ｕｒｅを、手先位置及び姿勢の誤差に関する値から関節角度の誤差に関する値である関節角度誤差補償出力ｕｑｅに、近似逆運動学計算部５７により変換する。
【０１８９】
次いで、ステップＳ１１５では、関節角度誤差補償出力ｕｑｅが、近似逆運動学計算部５７から入出力ＩＦ２４を通じ、モータドライバ２５に与えられる。モータドライバ２５は、関節角度誤差補償出力ｕｑｅに基づき、関節部のそれぞれのモータ４３を流れる電流量を変化させる。この電流量の変化により、ロボットアーム５のそれぞれの関節部の回転運動が発生して、ロボットアーム５が動作を行なう。
【０１９０】
以上のステップＳ１０１〜ステップＳ１１５が制御の計算ループとして繰り返し実行されることにより、ロボットアーム５の動作の制御、すなわち、ロボットアーム５の機械インピーダンスの値を前記適切に設定された設定値に制御する動作を実現することができる。
【０１９１】
以上の動作補正部２０とデータ入力ＩＦ２６と動作記憶部１５と動作情報データベース１７と把持位置検出部２３と制御方法切替部１６と制御パラメータ管理部２１との動作ステップについて、図１７のフローチャートに基づいて説明する。
【０１９２】
人４は、データ入力ＩＦ２６により、動作情報データベース１７の作業の中からロボットアーム５に実行させたい作業を選択した選択指令、すなわち、選択された（指定された）「作業ＩＤ」の選択指令を動作指令部２７に入力する（ステップＳ５０）。
【０１９３】
次いで、動作指令部２７に入力された選択指令に基づいて、動作補正部２０は、動作情報データベース１７に記憶されかつ選択された（指定された）「作業ＩＤ」に関する動作情報の「フラグ」に従って制御モードを設定する（ステップＳ５１）。
【０１９４】
次いで、人４がデータ入力ＩＦ２６を使用して選択した作業についての動作開始の指令を動作指令部２７に入力すると、その動作開始指令を動作指令部２７が受けて、動作補正部２０を介して、制御パラメータ管理部２１へ、設定した制御モードで動作するよう指令を出す（ステップＳ５２）。制御パラメータ管理部２１は、設定した制御モードでロボットアーム５が動作するように、制御部２２へ指令を出して、制御部２２の制御の下にロボットアーム５を動作させる。
【０１９５】
次いで、ロボットアーム５での動作中に、人４がデータ入力ＩＦ２６を使用して、補正開始の指令の入力を動作指令部２７に行う（ステップＳ５３）。動作指令部２７が補正開始の指令を受け取ると、動作補正部２０に動作補正開始の指令を入力する。すると、動作補正部２０は、「動作パラメータフラグ」が力制御モードの場合は、制御方法切替部１６に制御方法を切り替えるよう指令を出す。制御方法切替部１６は、把持位置検出部２３により検出した把持位置（ステップＳ５４）と力検出部特性データベース１８に記憶された情報により、制御方法を決定して、決定した制御方法で動作するように、制御パラメータ管理部２１へ指令を出す（ステップＳ５５）。
【０１９６】
次いで、人４がロボットアーム５を把持して、補正したい方向に力をロボットアーム５にかけることで、動作補正部２０が動作情報を補正する。具体的には、人４が補正を行った力の情報を力検出部５３で検出し（ステップＳ５６）、力検出部５３で検出した結果の情報を、制御パラメータ管理部２１を介して、動作補正部２０に入力する。動作補正部２０では、現在動作中の「作業ＩＤ」及び「動作ＩＤ」の動作情報のうち、力制御で動作しているｚ軸の力成分の値を、入力された力成分の値に修正して補正する（ステップＳ５７）。
【０１９７】
次いで、動作補正部２０で補正された動作情報は、動作記憶部１５により、動作情報データベース１７に記憶される（ステップ５８）。
【０１９８】
以上の図１５の動作ステップＳ１０１〜ステップＳ１１５及び図１７のステップＳ５０〜ステップＳ５８により、動作情報に基づいてロボットアーム５の動作中に、人４がロボットアーム５のどの部分（いずれの位置）を直接把持しても、人４が加えた力を力検出部５３で正しく検出し、力検出部５３で検出した力情報で動作情報を動作補正部２０により補正することができる。
【０１９９】
なお、この例では、力制御モードで拭き掃除作業をしている最中に、人４がロボットアーム５に強めに力をかけて拭き掃除作業の力のかけ具合を補正するために、制御方法切替部１６で制御方法を切り替えて、ロボットアーム５の拭き掃除作業の動作補正を行う場合について説明している。例えば、制御方法を高剛性位置制御モードに切り替え、さらに接触面からの抗力の影響を無くすために、接触面から少し浮かせて状態（図２１Ａ参照）に切り替えて動作補正を行うが、人４が力を補正している最中は、高剛性位置制御モードであり且つ接触面から浮いた状態なので、補正した力を加えて、どれくらい汚れが落ちるのかをリアルタイムに確認しながら補正することができない。そこで、制御方法切替部１６では、図１１のフローチャートのステップＳ３にて、低剛性位置制御モード若しくは高剛性位置制御モードのいずれかに切り替える場合に、補正前の力制御モードと補正中の制御モード（低剛性位置制御モード若しくは高剛性位置制御モード）とを交互に切り替えを行う（具体的には０．０２秒毎に切り替える）。力制御モード時には補正した力で力制御を行い、補正中の制御モード（低剛性位置制御モード若しくは高剛性位置制御モード）では、補正した力で補正することを交互に繰り返すことで、人４が補正した値で作業が正確にできているかを確認しながら動作補正部２０により補正することが可能となる。
【０２００】
なお、この例では拭き掃除作業を例に説明したが、図１４に示したように力制御モードで鍋底をこすりながらかき混ぜ動作をしている最中も、同様の方法で動作補正部２０により補正することができる。
【０２０１】
また、この例では、手首（ハンド３０）に力検出部５３を搭載した場合を例に説明しているが、図２７Ａのように、操作用の力センサ５３ａと力制御用の力センサ５３ｂとを搭載していた場合、又は、図２７Ｂのように各関節にトルクセンサ５３ｃ，５３ｄ，５３ｅを搭載していた場合なども、図３０Ａ又は図３１Ａのようにの力検出部特性データベース１８を力センサ５３ａ，５３ｂ，５３ｃ，５３ｄ，５３ｅの特性に合わせて用意することで、同様の方法で補正することができる。
【０２０２】
なお、人４が図２８の操作Ａと操作Ｂの境目、若しくは、操作Ｂと操作Ｃの境目など、複数の把持位置にまたがって人４が操作している場合は、把持位置検出部２３において、人４の手４ａがより多く把持している把持位置を検出しても良い。
【０２０３】
（第２実施形態）
本発明の第２実施形態における、ロボットアームの制御装置の基本的な構成は、第１実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
【０２０４】
第１実施形態の場合と同様に、図１６Ａ及び図１６Ｂに示すように、ロボットシステム１を使って拭き掃除作業をする場合に、図１８に示すような複数人４Ａ，４Ｂで１つのロボットアーム５を複数箇所把持して操作する場合、又は、一人の人４が１つのロボットアーム５の複数箇所を把持する場合を例に説明する。  図１９は、第２実施形態におけるロボットシステム１を構成する、制御対象であるロボットアーム５と、ロボットアーム５の制御装置７０との詳細構成を示す図である。ロボットアーム５と、周辺装置１４と、制御パラメータ管理部２１と、制御部２２と、制御装置７０と、動作情報データベース１７と、力検出部特性データベース１８と、動作指令部２７と、動作記憶部１５とは、第１実施形態と同様であるので、説明は省略する。第１実施形態と大きく異なる点は、力検出部５３により検出した複数の力の情報から、後述する力算出方法テーブル８１を使用して、動作補正に使用する力を１つ算出する力算出部２８を備えていることである。
【０２０５】
把持位置検出部２３は、人４がロボットアーム５を把持するとき、人４がロボットアーム５のどの部分を把持して操作しているかを検出し、複数人４Ａ，４Ｂが把持している場合又は一人の人４が両手などを使って複数箇所を把持している場合は、それぞれの把持位置を検出する。具体的には、カメラなどの画像撮像装置１９の画像データより、操作している人４，４Ａ，４Ｂの手の画像認識を行い、その手が、ロボットアーム５の前腕リンク３２か上腕リンク３３かハンド３０かのいずれを把持して操作しているかを把持位置検出部２３により検出する。
【０２０６】
制御方法切替部１６は、把持位置検出部２３で検出された把持位置と、力検出部特性データベース１８で記憶された情報とにより、人４が把持して力のパラメータを補正する際の制御方法を切り替える。
【０２０７】
把持位置が複数箇所検出された場合には、制御方法切替部１６ではそれぞれの把持位置での制御方法を第１実施形態と同様の方法で求める。例えば、前腕リンク３２とハンド３０の２箇所を一人の人４が把持してロボットアーム５を操作した場合に、図９Ａの力検出部特性データベース１８を使用して、ロボットアーム５の前腕リンク３２を人４が把持した場合は、図９Ｂの力検出部特性データベース１８より、「把持位置ＩＤ」は「２」となり、図９Ａの力検出部特性データベース１８により、「把持位置ＩＤ」が「２」の「検出の有無」は「０」で、「抗力の影響の可能性の有無」は「１」であることが、力検出部特性データベース１８から制御方法切替部１６で検出される。同様に、ハンド３０を人４が把持した場合は、図９Ｂの力検出部特性データベース１８より、「把持位置ＩＤ」は「４」となり、図９Ａの力検出部特性データベース１８により、「把持位置ＩＤ」が「４」の「検出の有無」は「１」で、「抗力の影響の可能性の有無」は「１」であることが、力検出部特性データベース１８から制御方法切替部１６で検出される。そして、制御方法切替部１６は、それぞれの把持位置での制御方法を求める。例えば、「把持位置ＩＤ」が「２」の場合（前腕」の場合）は、第１実施形態と同様に図１１のフローチャートを使って、「検出の有無」は「０」で、「抗力の影響の可能性の有無」は「１」であるので、低剛性位置制御モードとなる（図１１のステップＳ６参照）。把持位置ＩＤが「４」の場合（ハンド」の場合）は、第１実施形態と同様に図１１のフローチャートを使って、「検出の有無」は「１」で、「抗力の影響の可能性の有無」は「１」であるので、高剛性位置制御モードとなる（図１１のステップＳ５参照）。次に、求めた複数の制御モード（この例では、低剛性位置制御モードと高剛性位置制御モード）を制御方法切替部１６により交互に繰り返して切り替える。
【０２０８】
力検出部５３により、第１実施形態と同様の方法で、全ての把持位置での力を検出し、検出した結果が、制御パラメータ管理部２１を介して、動作補正部２０に入力される。
【０２０９】
図２０Ａは、力算出部２８に内蔵されているデータベース又はメモリ２８ａに記憶された力算出方法テーブル８１の例である。
【０２１０】
「算出方法」は、図１９の力算出部２８で、力検出部５３により検出された複数の力に関する情報（力情報）から、どのような方法で１つの力に関する情報（力情報）を算出するかを記述したものである。具体的には、複数の力情報の中から最大値を算出する場合には「最大」と記述し、複数の力情報の中から最小値を算出する場合には「最小」と記述し、複数の力情報の平均値を算出する場合には「平均」と記述し、複数の力情報を合算して算出する場合には「合算」と記述し、複数の力情報に重み係数を乗算した後に合算して算出する場合には「重み付け」と記述する。
【０２１１】
力算出部２８は、制御方法切替部１６で複数の制御方法を切り替えている際に、人４がロボットアーム５を複数の把持位置で把持し、それぞれの把持位置で力検出部５３により検出した力の情報から、力算出方法テーブル８１を使用して、動作補正に使用する力を１つ算出する。
【０２１２】
具体的には、力算出部２８は、力算出方法テーブル８１を参照し、例えば「フラグ」が「１」となっている「算出方法」に従って算出する。図２０Ａに示す力算出方法テーブル８１の場合では、「合算」が「１」となっているので、それぞれの把持位置での力検出部５３の出力値の全ての値を力算出部２８で合算して算出する。
【０２１３】
「フラグ」は、複数ある算出方法から、どの算出方法が有効かを示すフラグで、この例では、「合算」値を算出する方法が「１」なので、力算出部２８において「合算」値を算出する方法が有効であることを示している。よって、それぞれの把持位置で力検出部５３により検出した力の情報を、力算出部２８により、全て合算する。力算出部２８により合算した力の値を、動作補正部２０に出力する。
【０２１４】
なお、図２０Ａの「算出方法」が「重み付け」の場合には、図２０Ａのように、（「フラグ」，「係数ＩＤ」）として記述し、「フラグ」は、どの算出方法を使って算出するかを示すフラグであり、「係数ＩＤ」は、図２０Ｃに示す、係数ＩＤで示す重み付けの係数を示している。
【０２１５】
力算出部２８は、図２０Ａのように、「算出方法」が「重み付け」のときの係数ＩＤが「４」の場合は、図２０Ｃより、係数が（０．６，０．４）であることを予め取得しておく。この係数に基づいて、ロボットアーム５の２箇所の位置を人４が把持した場合には、力検出部５３により一番目に検出された力の値に０．６を力算出部２８で乗じ、力検出部５３により二番目に検出された力の値に０．４を力算出部２８で乗じ、それぞれ係数を乗じた値を力算出部２８で合算して算出する。もし、ロボットアーム５を３箇所で把持した場合には、図２０Ｃの「係数ＩＤ」の「３」を使うことで算出することができる。
【０２１６】
動作補正部２０では、第１実施形態と同様の方法で動作情報データベース１７の動作情報を補正する。
【０２１７】
以上により、複数の人４Ａ，４Ｂ又は一人の人４が両手を使ってロボットアーム５の複数箇所を把持した場合であっても、力検出部５３と力算出部２８とにより、力を正しく検出することができる。さらに、力算出部２８を設けることで、人４が高齢者又は子供である場合に、補正すべき力が不足している場合であっても、算出方法を「合算」とすることで、より大きな力を加えることが可能となる。また、子供と大人がそれぞれ把持している場合には、「算出方法」として「最大」を力算出部２８で選択することで、子供が加えた力よりも大人が加えた力を優先して設定することができる。また、人４が１人で両手を使って操作をしている場合に、「算出方法」として「最大」を力算出部２８で選択することで、力を強く加えることができる利き腕の力を、利き腕でない腕の力よりも優先して設定することができる。さらに、複数個所を把持している場合に、急激な力を加えて危険な状態になることを防ぐために、「算出方法」として「最小」若しくは「平均」若しくは「重み付け」を選択することで、より安全に操作をすることが可能となる。
【０２１８】
なお、この例では、「算出方法」を「合算」としたが、どの算出方法を選ぶかをデータ入力ＩＦ２６などで人４が入力しても良い。その場合には、データ入力ＩＦ２６で入力された「算出方法」のフラグに「１」を設定する。また、操作する人４の状態（例えば高齢者又は子供など）により、例えば図２０Ｂのように、ＩＤ１〜ＩＤ３を、適宜、切り替えて算出しても良い。この場合、データ入力ＩＦ２６を使用して、「高齢者」若しくは「子供」かどうかを識別するＩＤを入力するか、若しくは、年齢を入力し、６５歳以上であれば「高齢者」と判断し、１５歳以下であれば「子供」と力算出部２８で判断することにより、人が高齢者若しくは子供であることを検出することができる。
【０２１９】
（第３実施形態）
本発明の第３実施形態における、ロボットアームの制御装置の基本的な構成は、第１実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
【０２２０】
図２２Ａ〜図２２Ｄに示すように、複数のロボットアーム５Ａ，５Ｂが動作する場合を例に説明する。図２２Ａは、例えば、調理時にパン生地を丸めたり、パン生地を伸ばす等の複数のロボットアーム５Ａ，５Ｂが協調して物体４７に力を加えている作業である。また、図２２Ｂは、調理時にパン生地をこねたり、拭き掃除など複数のロボットアーム５Ａ，５Ｂで接触面に同時に力を加える作業である。このような作業中に、図２２Ｃ、図２２Ｄに示すように、人４が複数のロボットアーム５Ａ，５Ｂの片方のロボットアーム５Ａを操作して、ロボットアーム５Ａ，５Ｂの力のかけ具合を補正する場合を例に説明する。
【０２２１】
図２３は、第３実施形態におけるロボットシステム１を構成する、制御対象である第１のロボットアーム５Ａと第２のロボットアーム５Ｂ、第１のロボットアーム５Ａ及び第２のロボットアーム５Ｂの制御装置７０との詳細構成を示す図である。第１のロボットアーム５Ａ及び第２のロボットアーム５Ｂのそれぞれのロボットアームと、動作指令部２７と、周辺装置１４とは、第１実施形態と同様であるので、説明は省略する。
【０２２２】
図２４は、第３実施形態における動作情報データベース１７の一例である。図２４の「作業ＩＤ」は、複数のロボットアーム５Ａ，５Ｂで行う作業を識別するＩＤ番号である。「動作ＩＤ」は、その作業の中で複数のロボットアーム５Ａ，５Ｂの動作を識別する動作ＩＤ番号である。「ロボットＩＤ」は複数のロボットアーム５Ａ，５Ｂを識別するＩＤ番号であり、例えば、「１」は第１のロボットアーム５Ａであり、「２」は第２のロボットアーム５Ｂである。「位置姿勢」と、「力」と、「フラグ」と、「ハンド」と、「時間」と、「補正パラメータフラグ」とは、「ロボットＩＤ」で識別したロボットアーム５Ａ，５Ｂの動作に関する情報で、それぞれの説明は第１実施形態と同様であるので省略する。「進捗情報」はそれぞれのロボットアーム５Ａ，５Ｂの動作が動作中か否かを示す情報である。
【０２２３】
図２５Ａは、第３実施形態における力検出部特性データベース１８である。「ロボットＩＤ」は複数のロボットアーム５Ａ，５Ｂを識別するＩＤ番号である。「把持位置ＩＤ」と、「検出の有無」と、「抗力の影響の可能性の有無」とは、「ロボットＩＤ」で識別したそれぞれのロボットアーム５Ａ，５Ｂの力検出部の特性を表しており、それぞれの説明は第１実施形態と同様であるので省略する。
【０２２４】
動作記憶部１５は、後述する動作補正部２０により補正した動作情報をそれぞれのロボットアーム毎に「ロボットＩＤ」で識別して、動作情報データベース１７に記憶する。
【０２２５】
把持位置検出部２３は、人４がロボットアーム５Ａ若しくは５Ｂを把持するとき、人４が、ロボットアーム５Ａ若しくはロボットアーム５Ｂのどの部分を把持して操作しているかを検出する。具体的には、カメラなどの画像撮像装置１９の画像データより、操作している人４の手４ａの画像認識を把持位置検出部２３で行い、その手４ａが、ロボットアーム５Ａ及びロボットアーム５Ｂの前腕リンク３２か上腕リンク３３かハンド３０かのいずれを把持して操作しているかを把持位置検出部２３で検出する。
【０２２６】
制御パラメータ管理部２１は、動作補正部２０又は制御方法切替部１６の指示に基づいて、ロボットアーム５Ａ及びロボットアーム５Ｂの制御モードの切り替え及びそれぞれのロボットアーム５Ａ，５Ｂのインピーダンス計算部５１で出力する手先位置及び姿勢目標補正出力ｒｄ△の設定及び目標軌道生成部５５への動作情報の設定を行う。動作補正部２０又は制御方法切替部１６から、ロボットアーム５Ａ，５Ｂを識別する「ロボットＩＤ」と共に、動作情報又は制御方法の切り替えの指令を制御パラメータ管理部２１が受けて、制御パラメータ管理部２１から制御部２０に指令を出すが、それぞれのロボットアーム５Ａ，５Ｂへの指令の内容及び指令を受けた後の制御部２０の動作は第１実施形態と同様であるので、説明は省略する。
【０２２７】
制御方法切替部１６は、ロボットＩＤで識別されたそれぞれのロボットアーム毎に、把持位置検出部２３で検出された把持位置（どのロボットアーム５Ａ，５Ｂのどの位置か）と、力検出部特性データベース１８に記憶された情報とにより、人４がロボットアーム５Ａ，５Ｂを把持して力のパラメータを補正する際の制御方法を切り替える。
【０２２８】
具体的には、図２５Ａの力検出特性データベース１８において、把持位置検出部２３で検出されたロボットアーム５Ａ，５Ｂの識別ＩＤ（「ロボットＩＤ」）と「把持位置ＩＤ」（「把持位置ＩＤ」は第１実施形態と同様に、図２５Ｂより「把持位置」から「把持位置ＩＤ」を求める。）により、「検出の有無」と「抗力の影響の可能性の有無」とを参照し、第１実施形態と同様に、図１１のフローチャートにより、制御方法を決定する。
【０２２９】
力検出部５３により、第１実施形態と同様の方法で、全ての把持位置での力を検出し、制御パラメータ管理部２１を介して、動作補正部２０に入力される。
【０２３０】
力算出部２８は、制御方法切替部１６で、複数のロボットアーム５Ａ，５Ｂの把持位置で検出した力の情報から、力算出方法テーブル８１を使用して、それぞれのロボットアーム５Ａ，５Ｂの動作補正に使用する力を算出する。
【０２３１】
図２６Ａは、力算出方法テーブル８１の例である。
【０２３２】
「算出方法」は、力算出部２８で、力検出部５３により検出された複数のロボットアーム５Ａ，５Ｂの力に関する情報（力情報）から、それぞれのロボットアーム５Ａ，５Ｂの動作補正に使用する力に関する情報（力情報）をどのような方法で算出するかを記述したものである。具体的には、それぞれのロボットアーム５Ａ，５Ｂの複数の力情報の中から最大値を算出して、全てのロボットアーム５Ａ，５Ｂの補正値とする場合には「最大」と記述する。また、複数の力情報の中から最小値を算出して、全てのロボットアーム５Ａ，５Ｂの補正値とする場合には「最小」と記述する。また、複数の力情報の平均値を算出して、全てのロボットアーム５Ａ，５Ｂの補正値とする場合には「平均」と記述する。また、複数の力情報を合算して、全てのロボットアーム５Ａ，５Ｂの補正値とする場合には「合算」と記述する。また、複数の力情報に重み係数を乗算した後に合算して算出する場合には「重み付け」と記述する。
【０２３３】
具体的には、力算出部２８は、力算出方法テーブル８１を参照し、例えば「フラグ」が「１」となっている「算出方法」に従って算出する。図２６Ａに示す力算出方法テーブル８１の場合では、「合算」が「１」となっているので、それぞれのロボットアーム５Ａ，５Ｂの把持位置での力検出部５３の出力値の全ての値を力算出部２８で合算して算出する。
【０２３４】
「フラグ」は、複数ある算出方法から、どの算出方法が有効かを示すフラグで、この例では、「合算」値を算出する方法が「１」なので、力算出部２８において「合算」値を算出する方法が有効であることを示している。よって、それぞれの把持位置で力算出部２８により検出した力の情報を、力算出部２８により、全て合算する。力算出部２８により合算した力の値を、動作補正部２０に出力する。
【０２３５】
なお、図２６Ａの「算出方法」が「重み付け」の場合には、図２６Ａのように、（「フラグ」，「係数ＩＤ」）として記述し、「フラグ」は、どの算出方法を使って算出するかを示すフラグであり、「係数ＩＤ」は、図２６Ｃに示す。係数ＩＤで示す重み付けの係数を示している。
【０２３６】
力算出部２８は、図２６Ａのように「算出方法」が「重み付け」のときの係数ＩＤが「４」の場合は、図２６Ｃより、係数が（０．６，０．４）であることを予め取得しておくこの係数に基づいて、２つのロボットアーム５Ａ，５Ｂからの力の値について、一番目のロボットアーム５Ａで力検出部５３により検出された力の値に０．６を力算出部２８で乗じ、二番目のロボットアーム５Ｂで力検出部５３により検出された力の値に０．４を力算出部２８で乗じ、それぞれ係数を乗じた値を力算出部２８で合算して算出する。３つのロボットアーム５の場合には、図２６Ｃの「係数ＩＤ」の「３」を使うことで算出することができる。
【０２３７】
動作補正部２０は、力算出部２８で算出された力の補正値を使って、第１実施形態と同様に、動作情報データベース１７の動作情報を補正することで、人４が補正した値に動作を補正することが可能となる。
【０２３８】
以上により、人４が、複数のロボットアーム５Ａ，５Ｂを、１箇所以上把持した場合であっても、力検出部５３と力算出部２８とにより、力を正しく検出することができる。さらに、力算出部２８を設けることで、複数のロボットアーム５Ａ，５Ｂのうちの片方のロボットアーム５Ａ又は５Ｂを把持して操作するだけで、把持していないロボットアーム５Ｂ又は５Ａの動作を補正することが可能となる。さらに、人４が高齢者又は子供である場合に、補正すべき力が不足している場合であっても、算出方法を「合算」とすることで、より大きな力を加えることが可能となる。また、子供と大人がそれぞれ把持している場合には、「算出方法」として「最大」を力算出部２８で選択することで、子供が加えた力よりも大人が加えた力を優先して設定することができる。また、人４が１人で両手を使って操作をしている場合に、「算出方法」として「最大」を力算出部２８で選択することで、力を強く加えることができる利き腕の力を、利き腕でない腕の力よりも優先して設定することができる。さらに、複数個所を把持している場合に、急激な力を加えて危険な状態になることを防ぐために、「算出方法」として「最小」若しくは「平均」若しくは「重み付け」を選択することで、より安全に操作をすることが可能となる。
【０２３９】
なお、この例では、「算出方法」を「合算」としたが、どの算出方法を選ぶかをデータ入力ＩＦ２６などで人４が入力しても良い。その場合には、データ入力ＩＦ２６で入力された「算出方法」のフラグに「１」を設定する。また、操作する人４の状態（例えば高齢者又は子供など）により、例えば図２６Ｂのように、ＩＤ１〜ＩＤ３を、適宜、切り替えて算出しても良い。この場合、データ入力ＩＦ２６を使用して、「高齢者」若しくは「子供」かどうかを識別するＩＤを入力するか、若しくは、年齢を入力し、６５歳以上であれば「高齢者」と判断し、１５歳以下であれば「子供」と力算出部２８で判断することにより、人が高齢者若しくは子供であることを検出することができる。
【０２４０】
なお、前記第１〜第３実施形態では、ロボットアーム５を例に説明したが、本発明は、アームに限らず、車輪により動く移動ロボット、又は、２足歩行ロボット、多足歩行ロボットなどにも適用することができ、移動ロボットなどと人間との接触に関して同様の効果を発揮する。
【０２４１】
なお、前記第１〜第３実施形態においては、動作情報取得部の一例として動作情報データベース１７を説明しているが、動作情報取得部としては、データベースに限定されるものではなく、前記ロボットアームの前記動作に関する動作情報を取得する機能を有するものならば、サーバーなどの別の装置に記憶されているデータベースからネットワークンなどを使用して前記情報を取得可能な手段で構成するようにしてもよい。
【０２４２】
また、前記第１〜第３実施形態においては、特性情報取得部の一例として力検出部特性データベース１８を説明しているが、特性情報取得部としては、データベースに限定されるものではなく、前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持て前記ロボットアームによる前記作業を行うときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する機能を有するものならば、サーバーなどの別の装置に記憶されているデータベースからネットワークンなどを使用して前記情報を取得可能な手段で構成するようにしてもよい。
【０２４３】
さらに、前記様々な実施形態のうちの任意の実施形態を適宜組み合わせることにより、それぞれの有する効果を奏するようにすることができる。
【産業上の利用可能性】
【０２４４】
本発明は、家庭用ロボットなど人とロボットが協調して作業を行う際のロボットアームの動作の制御を行なうロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路として有用である。また、家庭用ロボットに限らず、産業用ロボット、又は、生産設備等における可動機構のロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路としても適用が可能である。
【０２４５】
本発明は、添付図面を参照しながら好ましい実施形態に関連して充分に記載されているが、この技術の熟練した人々にとっては種々の変形又は修正は明白である。そのような変形又は修正は、添付した請求の範囲による本発明の範囲から外れない限りにおいて、その中に含まれると理解されるべきである。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御装置であって、
前記ロボットアームの前記動作に関する動作情報を取得する動作情報取得部と、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を検出する把持位置検出部と、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する特性情報取得部と、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を切り替える制御方法切替部と、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する動作補正部とを備えて、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御装置。
【請求項２】
前記ロボットアームに外部から加えられた力を検出する力検出部をさらに備え、
前記特性情報取得部は、前記ロボットアームに前記外部から加えられた力を前記力検出部で検出する際に、前記特性情報のうちの前記人が把持した際の前記接触面からの抗力の影響の有無に関する情報を取得し、
前記動作補正部は、前記動作情報で前記ロボットアームの前記動作中に、前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作として、前記力検出部で検出された前記力に応じて、前記動作情報の力に関する情報を補正する請求項１に記載のロボットアームの制御装置。
【請求項３】
前記制御方法切替部は、
（Ｉ）前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩ）前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩＩ）前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法とのいずれか１つの制御方法に切り替え、
前記力検出部は、前記（Ｉ）の制御方法の場合には、前記ロボットアームが移動している最中の前記力を検出するか、若しくは、前記ロボットアームが移動後に前記接触面に前記ロボットアームが直接的に又は間接的に衝突して前記ロボットアームが移動を停止した状態で前記力を検出するかのいずれかの方法で検出し、前記（ＩＩ）の制御方法及び前記（ＩＩＩ）の制御方法の場合には、前記人が前記力を前記ロボットアームに加えた段階で前記力を検出する請求項２に記載のロボットアームの制御装置。
【請求項４】
前記制御方法切替部は、
（Ｉ）前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合で且つ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範囲内であるという情報を含む場合は、前記切り替え前の制御方法で前記ロボットアームの前記動作を制御するか、若しくは、前記人が前記ロボットアームに加えた力で移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
（ＩＩ）前記特性情報が、前記接触面からの抗力の影響が有るとの情報を含む場合でかつ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範
囲内であるという情報を含む場合は、前記人が前記ロボットアームに力を加えても前記ロボットアームが移動して接触面に直接的に又は間接的に接触しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
（ＩＩＩ）前記特性情報が、前記接触面からの抗力の影響が有るとの情報を含む場合でかつ前記人の前記把持位置が前記力検出部の検出可能範囲外であるという情報を含む場合は、前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法に切り替える請求項３に記載のロボットアームの制御装置。
【請求項５】
前記把持位置検出部で、前記把持位置を複数検出した場合には、それぞれの把持位置と前記力検出部の特性とに応じて、
前記制御方法切替部は、
（Ｉ）前記人が加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩ）前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
（ＩＩＩ）前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法と、
のいずれか１つの制御方法を順次切り替え、前記力検出部はそれぞれの制御方法で前記力を検出し、
それぞれの前記把持位置により前記力検出部で検出した複数の値に基づいて、前記人が前記ロボットアームに加えた力の値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した力の値で、前記動作情報データベースの前記動作情報を補正する請求項３に記載のロボットアームの制御装置。
【請求項６】
前記力算出部は、
（Ｉ）前記力検出部で検出した複数の値を合算して算出する方法と、
（ＩＩ）前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
（ＩＩＩ）前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
（ＩＶ）前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか１つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する請求項５に記載のロボットアームの制御装置。
【請求項７】
複数のロボットアームを備え、
前記把持位置検出部は、前記複数のロボットアームのうち、いずれのロボットアームを前記人が把持しているかどうかを検出し、
前記人が前記複数のロボットアームのうちの一方のロボットアームを把持している場合には、その一方のロボットアームに具備された前記力検出部で前記力を検出し、
さらに、前記力検出部で検出した値から、前記人が把持していない他方のロボットアームを補正する値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した値で、前記動作情報取得部で取得された前記動作情報を補正する請求項２又は３に記載のロボットアームの制御装置。
【請求項８】
前記力算出部は、
（Ｉ）前記力検出部で検出した複数の値を合算して算出する方法と、
（ＩＩ）前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
（ＩＩＩ）前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
（ＩＶ）前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか１つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された、全てのロボットアームの前記動作情報を補正する請求項７に記載のロボットアームの制御装置。
【請求項９】
前記制御方法切替部は、前記人が力を前記ロボットアームに加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替えた場合に、切り替え前の制御方法と前記切り替え後の制御方法を交互に切り替え、
前記力検出部は、前記切り替え後の制御方法に切り替えたときに、前記力を検出する請求項３に記載のロボットアームの制御装置。
【請求項１０】
ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御方法であって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するロボットアームの制御方法。
【請求項１１】
前記ロボットアームと、
前記ロボットアームの前記動作を制御する請求項１〜８のいずれか１つに記載のロボットアームの制御装置とを有するロボット。
【請求項１２】
ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御プログラムであって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出するステップと、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得するステップと、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替えるステップと、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の
力に関する情報を動作補正部で補正するステップと、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するステップとをコンピュータに実行させるためのロボットアームの制御プログラム。
【請求項１３】
ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームを制御する集積電子回路であって、
前記ロボットアームの前記動作に関する情報である動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するロボットアームの集積電子回路。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010079564.tif 000072
【図２】
2010079564.tif 000073
【図３】
2010079564.tif 000074
【図４Ａ】
2010079564.tif 000075
【図４Ｂ】
2010079564.tif 000076
【図４Ｃ】
2010079564.tif 000077
【図５】
2010079564.tif 000078
【図６】
2010079564.tif 000079
【図７】
2010079564.tif 000080
【図８】
2010079564.tif 000081
【図９Ａ】
2010079564.tif 000082
【図９Ｂ】
2010079564.tif 000083
【図１０】
2010079564.tif 000084
【図１１】
2010079564.tif 000085
【図１２Ａ】
2010079564.tif 000086
【図１２Ｂ】
2010079564.tif 000087
【図１２Ｃ】
2010079564.tif 000088
【図１３】
2010079564.tif 000089
【図１４】
2010079564.tif 000090
【図１５】
2010079564.tif 000091
【図１６Ａ】
2010079564.tif 000092
【図１６Ｂ】
2010079564.tif 000093
【図１７】
2010079564.tif 000094
【図１８】
2010079564.tif 000095
【図１９】
2010079564.tif 000096
【図２０Ａ】
2010079564.tif 000097
【図２０Ｂ】
2010079564.tif 000098
【図２０Ｃ】
2010079564.tif 000099
【図２１Ａ】
2010079564.tif 000100
【図２１Ｂ】
2010079564.tif 000101
【図２２Ａ】
2010079564.tif 000102
【図２２Ｂ】
2010079564.tif 000103
【図２２Ｃ】
2010079564.tif 000104
【図２２Ｄ】
2010079564.tif 000105
【図２３】
2010079564.tif 000106
【図２４】
2010079564.tif 000107
【図２５Ａ】
2010079564.tif 000108
【図２５Ｂ】
2010079564.tif 000109
【図２６Ａ】
2010079564.tif 000110
【図２６Ｂ】
2010079564.tif 000111
【図２６Ｃ】
2010079564.tif 000112
【図２７Ａ】
2010079564.tif 000113
【図２７Ｂ】
2010079564.tif 000114
【図２８】
2010079564.tif 000115
【図２９】
2010079564.tif 000116
【図３０Ａ】
2010079564.tif 000117
【図３０Ｂ】
2010079564.tif 000118
【図３１Ａ】
2010079564.tif 000119
【図３１Ｂ】
2010079564.tif 000120
【国際調査報告】
2010079564.tif 000121
2010079564.tif 000122