本発明は、ロボットの動作を生成、教示するためのロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路に関する。
近年、介護ロボット又は家事支援ロボットなどの家庭用ロボットが盛んに開発されるようになってきた。家庭ロボットは産業用ロボットと異なり、家庭の素人が操作するため、簡単に動作を教示できる必要がある。さらに、ロボットが作業する際の動作環境も、家庭に応じて様々であるため、家庭環境に柔軟に対応する必要がある。
ロボット装置の教示方法の一例として、ロボットの手首などに力センサを装着し、力センサの先に装着されたハンドルを教示者が直接把持して、ロボットを教示点に誘導し、ロボットの位置の教示を行っている(特許文献1を参照)。
しかしながら、特許文献1においては、全ての教示点を教示者が教示する必要があるため、教示に時間がかかり、非常に面倒であった。さらに、産業用分野にて、教示した動きの一部を修正する場合に、ティーチングペンダントと呼ばれる遠隔装置により、プログラミングにより修正するか、若しくは、全ての動作を一から教示しなければならず、効率が悪かった。
特に、家庭用ロボットでは、できるだけ教示する時間を短くする必要がある。さらに、ティーチングペンダンドなどの遠隔装置でのプログラミングの併用は、操作ステップが増大し、プログラミング言語の習得が必要となり、家庭の素人には困難である。
また、家庭環境は時々刻々と変化しており、全ての環境変動を教示時に予測しておくことは難しく、また、多くのセンサーを搭載して検出できたとしても、検出精度が100%ではない場合は、誤作動を起こす場合がある。
また、産業ロボットでは、ロボットの動作を教示する教示作業とロボットが実際に作業する本作業とは明確に分けて行っているが、家庭用ロボットでは、家庭の素人が操作するために、教示作業と本作業を分けて操作するのは難しく、面倒であった(特許文献1参照)。
そこで、動作中のロボットに対して、人が状況の認識を行い、その都度、それをロボットに伝達することで、教示を意識させずに操作ができ、また、教示時に予期していない環境の変動が起こった場合にでも、その都度、人が教示することでロボットを動作させることが可能となる。
例えば、拭き掃除作業は、汚れのある面に対して、ある力をかけて汚れを擦る作業である。ロボットにより拭き掃除作業を実行している最中に、人が汚れのひどい箇所を確認し、人がロボットを直接把持して強めに拭き掃除をするよう、力のかけ具合を指示すると、ロボットは強めに拭き掃除作業をするよう動作を制御して作業を行う。
拭き掃除作業は、ある力をかけて汚れを擦る作業であるので、ロボットは、位置を目標値にして制御するよりは、力を目標値にして制御する方が、精度良く作業を行うことが可能である。このような作業では、力を目標値にして作業を行っているため、例えば人がロボットを直接把持して強めに拭き掃除をするように力のかけ具合を指示した場合、人が加えた力が人からの力なのか、あるいは接触面(汚れ面)からの抗力などの外乱なのかの区別がつかないという課題がある。
更に、人が加えた力を検出するために、ロボットアームに力センサなどを搭載した場合、産業用ロボットでは、ロボットのどこを把持して教示するかは、ロボットアームに具備された持ち手(ハンドル部分)など予め決まっており、そのハンドル部分に力センサなどを搭載して、人が加えた力を計測している。しかしながら、図18に示すように家庭内においては、(a)持ち手部分に障害物99などがあり、持ち手以外を人が把持して操作する場合、(b)複数の人が同時に操作する場合、(c)人が両手を使って複数箇所を把持してしまう場合などには、人が加えた力を正しく検出することができない。
本発明の目的は、このような課題に対して、予測できない環境の変動があっても、作業者が簡単に短時間でロボットの教示を行うことが可能なロボット制御を実現できる、ロボットアームの制御装置及び制御方法、ロボット、ロボットアームの制御プログラム、並びに、集積電子回路を提供する。
前記の目的を達成するために、本発明は以下のように構成する。
本発明の第1態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御装置であって、
前記ロボットアームの前記動作に関する動作情報を取得する動作情報取得部と、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を検出する把持位置検出部と、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する特性情報取得部と、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を切り替える制御方法切替部と、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する動作補正部とを備えて、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御装置を提供する。
本発明の第10態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御方法であって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御方法を提供する。
本発明の第12態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御プログラムであって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出するステップと、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得するステップと、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替えるステップと、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正するステップと、前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するステップとをコンピュータに実行させるためのロボットアームの制御プログラムを提供する。
本発明の第13態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームを制御する集積電子回路であって、
前記ロボットアームの前記動作に関する情報である動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの集積電子回路を提供する。
以上述べたように、本発明のロボットアームの制御装置及びロボットによれば、動作情報取得部と、把持位置検出部と、特性情報取得部と、制御方法切替部と、動作補正部とを有することにより、人がロボットアームのどの部分を把持しても、動作情報で記述されたロボットの動作を、簡単に動作を補正することができるロボット制御が可能となる。すなわち、人のロボットアームの把持位置と力の検出の有無の情報及び抗力の影響の有無に関する情報とを含む特性情報に基づき前記ロボットアームの制御方法を切り替えるとともに、動作情報に基づいてのロボットアーム動作中に、把持位置と特性情報とに応じて制御方法切替部で制御方法を切り替えた後、人の操作に応じて動作情報の力に関する情報を動作補正部で補正することができる。
また、本発明のロボットアームの制御方法、ロボットアームの制御プログラム、及び、集積電子回路によれば、ロボットアームの動作中に、人のロボットアームの把持位置と力の検出の有無の情報及び抗力の影響の有無に関する情報とを含む特性情報に基づきロボットアームの制御方法を制御方法切替部で切り替えた後、人がロボットアームのどの部分を把持しても、人の操作に応じて動作情報の力に関する情報を動作補正部で補正することができるロボット制御が可能となる。
本発明のこれらと他の目的と特徴は、添付された図面についての好ましい実施形態に関連した次の記述から明らかになる。この図面においては、
図1は、本発明の第1実施形態におけるロボット制御装置の構成の概要を示す図であり、
図2は、本発明の前記第1実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図であり、
図3は、本発明の前記第1実施形態における前記制御装置の制御部の構成を示すブロック図であり、
図4Aは、本発明の前記第1実施形態における前記制御装置における前記ロボットアームの座標系に関する図であり、
図4Bは、本発明の前記第1実施形態における前記制御装置における前記ロボットアームの座標系に関する図であり、
図4Cは、本発明の前記第1実施形態における前記制御装置における前記ロボットアームの座標系に関する図であり、
図5は、前記第1実施形態における前記ロボット制御装置の動作情報データベースの動作情報の一覧表を説明する図であり、
図6は、前記第1実施形態における前記ロボット制御装置の動作情報データベースのフラグの情報を説明する図であり、
図7は、前記第1実施形態における前記ロボット制御装置の動作情報データベースの補正パラメータフラグに関する情報を説明する図であり、
図8は、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図9Aは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
図9Bは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
図10は、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図11は、本発明の前記第1実施形態における前記ロボット制御装置の制御方法切替部の動作ステップを表すフローチャートであり、
図12Aは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図12Bは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図12Cは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図13は、本発明の前記第1実施形態における前記ロボット制御装置の動作状態を示す図であり、
図14は、本発明の前記第1実施形態における前記ロボット制御装置の動作状態を示す図であり、
図15は、本発明の前記第1実施形態における前記ロボット制御装置の制御部の動作ステップを表すフローチャートであり、
図16Aは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図16Bは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図17は、本発明の前記第1実施形態における前記ロボット制御装置の動作補正部と動作指令部と動作記憶部と制御方法切替部と把持位置検出部と制御パラメータ管理部との動作ステップを表すフローチャートであり、
図18は、本発明の第2実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図19は、本発明の前記第2実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図であり、
図20Aは、本発明の前記第2実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
図20Bは、本発明の前記第2実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
図20Cは、本発明の前記第2実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
図21Aは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図21Bは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図22Aは、本発明の第3実施形態におけるロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図22Bは、本発明の前記第3実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図22Cは、本発明の前記第3実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図22Dは、本発明の前記第3実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図であり、
図23は、本発明の前記第3実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図であり、
図24は、本発明の前記第3実施形態における前記ロボット制御装置の動作情報データベースの動作情報の一覧表を説明する図であり、
図25Aは、本発明の前記第3実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
図25Bは、本発明の前記第3実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
図26Aは、本発明の前記第3実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
図26Bは、本発明の前記第3実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
図26Cは、本発明の前記第3実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図であり、
図27Aは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部の1つの構成例を説明する図であり、
図27Bは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部の別の構成例を説明する図であり、
図28は、本発明の前記第1実施形態における前記ロボット制御装置においてロボットアームに対する人のロボットアームの操作状態を示す図であり、
図29は、本発明の前記第1実施形態における人のロボットアームの操作状態を示す図であり、
図30Aは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
図30Bは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
図31Aは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図であり、
図31Bは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
以下に、本発明にかかる実施の形態を図面に基づいて詳細に説明する。
以下、図面を参照して本発明における実施形態を詳細に説明する前に、本発明の種々の態様について説明する。
本発明の第1態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御装置であって、
前記ロボットアームの前記動作に関する動作情報を取得する動作情報取得部と、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を検出する把持位置検出部と、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する特性情報取得部と、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を切り替える制御方法切替部と、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する動作補正部とを備えて、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御装置を提供する。
本発明の第2態様によれば、前記ロボットアームに外部から加えられた力を検出する力検出部をさらに備え、
前記特性情報取得部は、前記ロボットアームに前記外部から加えられた力を前記力検出部で検出する際に、前記特性情報のうちの前記人が把持した際の前記接触面からの抗力の影響の有無に関する情報を取得し、
前記動作補正部は、前記動作情報で前記ロボットアームの前記動作中に、前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作として、前記力検出部で検出された前記力に応じて、前記動作情報の力に関する情報を補正することを特徴とする第1の態様に記載のロボットアームの制御装置を提供する。
本発明の第3態様によれば、前記制御方法切替部は、
(I)前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
(II)前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
(III)前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法とのいずれか1つの制御方法に切り替え、
前記力検出部は、前記(I)の制御方法の場合には、前記ロボットアームが移動している最中の前記力を検出するか、若しくは、前記ロボットアームが移動後に前記接触面に前記ロボットアームが直接的に又は間接的に衝突して前記ロボットアームが移動を停止した状態で前記力を検出するかのいずれかの方法で検出し、前記(II)の制御方法及び前記(III)の制御方法の場合には、前記人が前記力を前記ロボットアームに加えた段階で前記力を検出することを特徴とする第2の態様に記載のロボットアームの制御装置を提供する。
本発明の第4態様によれば、前記制御方法切替部は、
(I)前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合で且つ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範囲内であるという情報を含む場合は、前記切り替え前の制御方法で前記ロボットアームの前記動作を制御するか、若しくは、前記人が前記ロボットアームに加えた力で移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
(II)前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合でかつ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範囲内であるという情報を含む場合は、前記人が前記ロボットアームに力を加えても前記ロボットアームが移動して接触面に直接的に又は間接的に接触しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
(III)前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合でかつ前記人の前記把持位置が前記力検出部の検出可能範囲外であるという情報を含む場合は、前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法に切り替えることを特徴とする第3の態様に記載のロボットアームの制御装置を提供する。
本発明の第5態様によれば、前記把持位置検出部で、前記把持位置を複数検出した場合には、それぞれの把持位置と前記力検出部の特性とに応じて、
前記制御方法切替部は、
(I)前記人が加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
(II)前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
(III)前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法と、
のいずれか1つの制御方法を順次切り替え、前記力検出部はそれぞれの制御方法で前記力を検出し、
それぞれの前記把持位置により前記力検出部で検出した複数の値に基づいて、前記人が前記ロボットアームに加えた力の値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した力の値で、前記動作情報データベースの前記動作情報を補正することを特徴とする第3の態様に記載のロボットアームの制御装置を提供する。
本発明の第6態様によれば、前記力算出部は、
(I)前記力検出部で検出した複数の値を合算して算出する方法と、
(II)前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
(III)前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
(IV)前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか1つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正することを特徴とする第5の態様に記載のロボットアームの制御装置を提供する。
本発明の第7態様によれば、複数のロボットアームを備え、
前記把持位置検出部は、前記複数のロボットアームのうち、いずれのロボットアームを前記人が把持しているかどうかを検出し、
前記人が前記複数のロボットアームのうちの一方のロボットアームを把持している場合には、その一方のロボットアームに具備された前記力検出部で前記力を検出し、
さらに、前記力検出部で検出した値から、前記人が把持していない他方のロボットアームを補正する値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した値で、前記動作情報取得部で取得された前記動作情報を補正することを特徴とする第2又は3の態様に記載のロボットアームの制御装置を提供する。
本発明の第8態様によれば、前記力算出部は、
(I)前記力検出部で検出した複数の値を合算して算出する方法と、
(II)前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
(III)前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
(IV)前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか1つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された、全てのロボットアームの前記動作情報を補正することを特徴とする第7の態様に記載のロボットアームの制御装置を提供する。
本発明の第9態様によれば、前記制御方法切替部は、前記人が力を前記ロボットアームに加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替えた場合に、切り替え前の制御方法と前記切り替え後の制御方法を交互に切り替え、
前記力検出部は、前記切り替え後の制御方法に切り替えたときに、前記力を検出することを特徴とする第3の態様に記載のロボットアームの制御装置を提供する。
本発明の第10態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御方法であって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御方法を提供する。
本発明の第11態様によれば、前記ロボットアームと、
前記ロボットアームの前記動作を制御する第1〜8のいずれか1つの態様に記載のロボットアームの制御装置とを有することを特徴とするロボットを提供する。
本発明の第12態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御プログラムであって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出するステップと、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得するステップと、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替えるステップと、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正するステップと、前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するステップとをコンピュータに実行させるためのロボットアームの制御プログラムを提供する。
本発明の第13態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームを制御する集積電子回路であって、
前記ロボットアームの前記動作に関する情報である動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの集積電子回路を提供する。
以下、本発明の実施の形態について図面を用いて詳細に説明する。
(第1実施形態)
まず、本発明の第1実施形態におけるロボットアームの制御装置を備えるロボットシステム1の構成について説明する。図1及び図2は、本発明の第1実施形態におけるロボットアーム5及びその制御装置70を備えるロボットシステム1の概要を示す図である。
図1に示すように、ロボットシステム1のロボットアーム5は、例えば家庭内のキッチン又はテーブルなどの作業台7の壁面7aに設置される。ロボットアーム5の基端5aが壁面7aに固定されたレール8に対して移動可能な状態で支持され、ロボットアーム5がレール8上に沿って横方向(例えば水平方向)に、人4の力により、移動可能としている。
ロボットシステム1は、例えばロボットアーム5を使用してキッチンの汚れ91をふき取る作業又は鍋底をかき混ぜる作業などの家庭内においてロボットアーム5と人4とが協働して行う作業を行う。図1は、一例として、拭き掃除作業を行うロボットシステム1による作業の操作手順の一例を示す。
まず、人4がロボットアーム5を直接把持し、人4がロボットアーム5に力を加える。そして、人4からロボットアーム5に加えられた力により、ロボットアーム5がレール8に沿って移動し、IHクッキングヒーター又はガスコンロなどの調理装置6の付近までロボットアーム5が誘導される。
次に、人4が、ロボットアーム5の先端のハンド30に、拭き掃除作業のための掃除用具の一例としてのスポンジ46を取り付ける。
次に、調理装置6の側面などに配置されているロボットシステム1の操作盤13のボタン13aを人4が押すなどして、人4が、データ入力IF26を使用することにより、ロボットアーム5に動作開始指令を入力すると、ロボットアーム5が作動し、予め選択された作業(ここでは拭き掃除作業)を開始させる。
ロボットアーム5がハンド30で把持した掃除用具46による調理装置6の拭き掃除を実施しているときに、拭き掃除を実施している場所とは異なる場所でかつ人4が汚れのひどい部分91aを見つけて、人4の手4aでロボットアーム5を直接把持してロボットアーム5に力を加えてその部分91aまでロボットアーム5を移動させ(図29の場合は矢印(1)の方向)る。そして、さらに、汚れのひどい部分91aで、補正したい方向(図29の場合は矢印(2)の方向)に人4の手4aでロボットアーム5に力を加えることで、ロボットアーム5に対して動作を補正させるための補正指令を入力して、ロボットアーム5の動作を、強めに拭き掃除作業をするように補正する(図29参照)。
レール8は、作業台7の壁面7aに配置したが、壁面の無いアイランドキッチンの場合は、天井面又はアイランドキッチンの天板側面など作業をするのに適した場所に設置することができる。
さらに、操作盤13は、調理装置6の側面に固定したが、操作盤13に代えて、遠隔操作が可能なリモコンでも良い。
図2はロボットシステム1を構成する、制御対象であるロボットアーム5と、ロボットアーム5の制御装置70との詳細構成を示す図である。ロボットアーム5の制御装置70は、図2に示すように、把持位置検出部23と、ロボットアーム5の動作を生成する動作生成装置12と、制御装置本体部11と、周辺装置14とを備えている。
−ロボットアーム−
この第1実施形態のロボットアーム5は、一例として6自由度の多リンクマニピュレータで構成される多関節ロボットアームとする。ロボットアーム5は、ハンド30と、ハンド30が取り付けられている手首部31を先端32aに有する前腕リンク32と、前腕リンク32の基端32bに回転可能に先端33aが連結される上腕リンク33と、上腕リンク33の基端33bが回転可能に連結支持される台部34とを備えている。台部34は、移動可能なレール8に連結されているが、一定位置に固定されていても良い。手首部31は、第4関節部38と、第5関節部39と、第6関節部40との3つの回転軸を有しており、前腕リンク32に対するハンド30の相対的な姿勢(向き)を変化できる。すなわち、図2において、第4関節部38は、手首部31に対するハンド30の横軸(ψ)周りの相対的な姿勢を変化できる。第5関節部39は、手首部31に対するハンド30の、第4関節部38の横軸とは直交する縦軸(Φ)周りの相対的な姿勢を変化させることができる。第6関節部40は、手首部31に対するハンド30の、第4関節部38の横軸(ψ)及び第5関節部39の縦軸(Φ)とそれぞれ直交する横軸(θ)周りの相対的な姿勢を変化できる。前腕リンク32の他端は、上腕リンク33の先端に対して第3関節部37周りに、すなわち、第4関節部38の横軸と平行な横軸周りに回転可能とする。上腕リンク33の他端は、台部34に対して第2関節部36周りに、すなわち、第4関節部38の横軸と平行な横軸周りに回転可能とする。さらに、台部34の上側可動部34aは、台部34の下側固定部34bに対して第1関節部35周りに、すなわち、第5関節部39の縦軸と平行な縦軸周りに回転可能としている。
この結果、ロボットアーム5は、合計6個の軸周りに回転可能として前記6自由度の多リンクマニピュレータを構成している。
各軸の回転部分を構成する各関節部には、モータ43のような回転駆動装置と、モータ43の回転軸の回転位相角(すなわち関節角)を検出するエンコーダ44とを備えている。この第1実施形態のモータ43は、ロボットアーム5の各関節部の内部に配設されている。モータ43は、各関節部を構成する2つのリンク部材のうちの一方のリンク部材に備えられる後述するモータドライバ25により駆動制御される。各関節部の一つのリンク部材の関節部に備えられたモータ43の回転軸が、他のリンク部材に連結されて、前記回転軸を正逆回転させることにより、前記他のリンク部材を前記一つのリンク部材に対して各軸周りに回転可能とする。
41は台部34の下側固定部34bに対して相対的な位置関係が固定された絶対座標系であり、42はハンド30に対して相対的な位置関係が固定された手先座標系である。絶対座標系41から見た手先座標系42の原点位置Oe(x,y,z)をロボットアーム5の手先位置(ハンド30の位置)とし、絶対座標系41から見た手先座標系42の姿勢をロール角とピッチ角とヨー角で表現した(φ,θ,ψ)をロボットアーム5の手先姿勢とし、手先位置及び姿勢ベクトルをベクトルr=[x,y,z,φ,θ,ψ]Tと定義する。
この第1実施形態では、絶対座標系35のZ軸を回転軸として、座標系を角度φだけ回転させた座標系を考え(図4A参照)、このときの座標軸を[X',Y',Z]とする。次に、この座標系を、Y'を回転軸として角度θだけ回転させ(図4B参照)、このときの座標軸を[X'',Y',Z'']とする。最後に、この座標系を、X''を回転軸として角度ψだけ回転させ(図4C参照)、このときの座標系の姿勢をロール角度φ、ピッチ角度θ、ヨー角度ψとし、このときの姿勢ベクトルは(φ,θ,ψ)となる。姿勢(φ,θ,ψ)の座標系が原点位置を手先座標系42の原点位置Oe(x,y,z)に平行移動した座標系と、手先座標系42が一致する場合、手先座標系の姿勢ベクトルは(φ,θ,ψ)であるとする。
ロボットアーム5の手先位置及び姿勢を制御する場合には、手先位置及び姿勢ベクトルrを後述する目標軌道生成部55で生成された手先位置及び姿勢目標ベクトルrdに追従させることになる。
力センサなどの力検出部53は、人4などからロボットアーム5に加わる力を検出する。具体的には、力検出部53に加わる3方向(x,y,z方向)と姿勢方向(φ,θ,ψ方向)の6軸の方向別に力を検出する。
なお、力検出部53の1つの構成例として、図27Aに示すように、操作用の力センサ53aと後述する力制御用の力センサ53bを搭載していた場合は、それぞれの力センサ53a,53bに加わる力を力検出部53として検出する。
また、力検出部53の別の構成例として、図27Bに示すように、各関節部にトルクセンサ53c,53d,53eを搭載していた場合、力検出部53には、モータドライバ25の電流センサで計測されたロボットアーム5の各関節部を駆動するモータ43を流れる電流値i=[i1,i2,i3,i4,i5,i6]Tが入出力IF24を介して取り込まれて力検出部53として力を検出する。また、各エンコーダ44で計測された関節角の現在値qが入出力IF24を介して取り込まれるとともに、後述する近似逆運動学計算部57からの関節角度誤差補償出力uqeが取り込まれる。力検出部53は、オブザーバーとして機能し、以上の電流値iと、関節角の現在値qと、関節角度誤差補償出力uqeとより、ロボットアーム5に加わる外力により各関節部に発生するトルクτextを算出する。そして、Fext=Jv(q)−Tτext−[0,0,mg]Tによりロボットアーム5の手先における等価手先外力Fextに換算して、この等価手先外力Fextをインピーダンス計算部51に出力する。ここで、Jv(q)は、
を満たすヤコビ行列である。ただし、v=[vx,vy,vz,ωx,ωy,ωz]Tであり、(vx,vy,vz)は手先座標系42におけるロボットアーム5の手先の並進速度、(ωx,ωy,ωz)が手先座標系42におけるロボットアーム5の手先の角速度となる。また、mはハンド30で把持している把持物体の重さであり、gは重力加速度である。把持物体の重さmの値は、その物体を把持する前に、人4が入出力IF24を介して力検出部53に入力することができる。また、ロボットアーム5のハンド30により物体の把持を実際に行い、そのときの力検出部53の等価手先外力Fextの推定結果より把持物体の重さmの値を算出することも可能である。
後述するロボットアーム5の動作を制御するため、動作生成装置12と、制御装置本体部11と、周辺装置14とのそれぞれの動作が実行されることにより、ロボットアーム5の各関節部の、後述するエンコーダ44より出力される各関節角度情報が、入出力IF24のカウンタボードを通じて制御装置本体部11に取り込まれ、取り込まれた各関節角度情報に基づき制御装置本体部11によって各関節部の回転動作での制御指令値が算出される。算出された各制御指令値は、入出力IF24のD/Aボードを通じて、ロボットアーム5の各関節部を駆動制御するためのモータドライバ25に与えられ、モータドライバ25から送られた各制御指令値に従って、ロボットアーム5の各関節部のモータ43が駆動される。また、モータドライバ25により駆動制御されるハンド駆動装置の一例としてハンド駆動用のモータ62と、ハンド駆動用のモータ62の回転軸の回転位相角を検出するエンコーダ61とを、さらに、ハンド30に備えて、エンコーダ61で検出された回転角度情報が、入出力IF24のカウンタボードを通じて制御装置本体部11に取り込まれ、取り込まれた回転角度情報を基に、制御装置本体部11の制御部22のハンド制御部54(図3に図示)によってハンド30の開閉動作での制御指令値が算出される。算出された制御指令値は、入出力IF24のD/Aボードを通じて、ハンド30の開閉駆動も行うモータドライバ25に与えられ、モータドライバ25から送られた各制御指令値に従って、モータ62の回転を駆動制御して、ハンド駆動用のモータ62の回転軸を正逆回転させることにより、ハンド30を開閉させる。
制御装置本体部11及び動作生成装置12及び周辺装置14及び把持位置検出部23は、一例として、それぞれ一般的なパーソナルコンピュータにより構成される。
−把持位置検出部−
23は把持位置検出部であり、人4がロボットアーム5を把持するとき、人4がロボットアーム5のどの部分(どの位置)を把持して操作しているかを検出する(人4のロボットアーム5の把持位置を検出する)。具体的には、カメラなどの画像撮像装置19の画像データより、操作している人4の手4aの画像認識を把持位置検出部23で行い、その手4aが、ロボットアーム5の前腕リンク32か上腕リンク33かハンド30のいずれを把持して操作しているかを把持位置検出部23で検出する。
(動作生成装置12)
動作生成装置12は、動作情報取得部の一例として機能する動作情報データベース17と、特性情報取得部の一例として機能する力検出部特性データベース18と、動作指令部27と、動作補正部20と、動作記憶部15と、制御方法切替部16とを有するように構成される。動作補正部20と制御パラメータ管理部21との間では、ロボットアーム5の手先位置及び姿勢の情報と、人4の加えられた力の情報と、動作指令などが入出力される。制御パラメータ管理部21により、ロボットアーム5の手先位置及び姿勢と人4からロボットアーム5に加えられた力の情報などが動作記憶部15に出力される。なお、動作生成装置12における各制御モード(i)位置制御モード、(ii)インピーダンス制御モード、(iii)力制御モード)の詳細については、制御装置本体部11の制御パラメータ管理部21にて後述する。
−動作情報データベース−
動作情報データベース17は、動作指令部27との間で動作情報が入出力されるとともに、動作補正部20との間で動作情報が入出力され、動作記憶部15により種々の動作情報が入力され記憶される。
次に、動作情報データベース17の詳細について説明する。
動作情報データベース17は、例えば、図5に示したロボットアーム5の動作に関する情報(動作情報)が動作記憶部15により記憶される。動作情報の具体データ例として、以下に示す。
(1)作業を識別する作業ID番号(図5の「作業ID」の欄参照)。
(2)作業の中の個々の動作を識別する動作ID番号(図5の「動作ID」の欄参照)。
(3)動作におけるロボットアーム5の手先位置及び姿勢に関する情報(図5の「位置姿勢」の欄参照)。
(4)ロボットアーム5が作業をする際に対象となる物体に加える力に関する情報(図5の「力」の欄参照)。
(5)ロボットアーム5の手先位置、姿勢、及び力のパラメータのうちのいずれの情報が有効か否かを示すフラグに関する情報(図5の「フラグ」の欄参照)。
(6)ハンド30が開閉しているか否かのハンド開閉状態を表す情報(図5の「ハンド」の欄参照)。
(7)各動作が作用する時間に関する情報(図5の「時間」の欄参照)。
(8)動作補正部20による動作情報データベース17の動作情報を補正する際の補正すべきパラメータの種別に関する情報(図5の「補正パラメータフラグ」の欄参照)。
(9)ロボットアーム5の動作が実行中か否かを示す進捗情報(図5の「進捗情報」の欄参照)。
ここで、作業IDは、作業に関する情報を識別するために用いられる符号であり、動作IDは、動作に関する情報を識別するために用いられる符号である。
図5の動作情報データベース17の「位置姿勢」、すなわち、ロボットアーム5の手先位置及び姿勢に関する情報は、前述したロボットアーム5の手先位置及び姿勢を表し、原点位置Oeの座標及び姿勢から、(x,y,z,φ,θ,ψ)と表す。
力に関する情報は、ロボットアーム5が作業をする際に対象となる物体に加える力に関する情報を示し、力のx、y、z、φ、θ、ψ方向の成分を(fx,fy,fz,fφ,fθ,fψ)と表す。例えば、fz=5[N]である場合は、z軸方向に5[N]の力を加えて、作業することを表す。具体的には、IHクッキングヒータ6などの天板を拭き掃除作業する際に、天板の表面に力を加えて擦る場合などに使用する。
図5の動作情報データベースの「フラグ」に関する情報は、各「動作ID」が示す動作情報に基づくロボットアーム5の手先位置及び姿勢及び力のうちのいずれの情報が有効かを示す値である。具体的には、図6で示した32ビットの数値で表す。図6において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値が有効の場合は「1」とし、手先位置及び姿勢及び力のそれぞれの値が無効の場合は「0」とする。例えば、0ビット目において、ロボットアーム5の手先位置のx座標の値が有効の場合は「1」とし、無効の場合は「0」とする。また、1ビット目において、ロボットアーム5の手先位置のy座標の値が有効の場合は「1」とし、無効の場合は「0」とする。また、2ビット目において、ロボットアーム5の手先位置のz座標の値が有効の場合は「1」とし、無効の場合は「0」とする。以後、順次、3,4,5ビット目は姿勢のφ、θ、ψの有効性を表す(すなわち、有効の場合は「1」とし、無効の場合は「0」とする。)。さらに、6ビット目〜11ビット目においては、力のそれぞれの成分が有効か無効かを示す(すなわち、有効の場合は「1」とし、無効の場合は「0」とする。)。また、フラグに関する情報は、将来の拡張用に多め(32ビット)に用意しているため、この例では12ビット目から31ビット目は使用しないので、「0」を入れておくが、12ビットのみ格納できる変数としても良い。図6では、0ビット目から1ビット目、及び3ビット目から5ビット目、及び8ビット目が「1」となっているので、動作情報の手先位置及び姿勢情報としてx、y、φ、θ、ψ情報と力情報としてfzのみが有効であることを示している。この結果、動作情報のうち、2ビット目、6〜7ビット目、及び9〜11ビット目が「0」となっているので、z、fx、fy、fφ、fθ、fψの値にどういう値が記憶されていても無効であるとする。
図5の動作情報データベース17のハンド30が開閉しているか否かの情報である「ハンド」に関する情報は、ロボットアーム5の動作中のハンド30の開閉の有無を表すフラグとし、ハンド30が開いている場合は「0」と記載し、閉じている場合は「1」と記載する。
図5の動作情報データベース17の「時間」に関する情報は、ロボットアーム5の各動作を実行するための時間であり、この「動作ID」に記憶された動作を、ここでの「時間」に関する情報として記憶された時間をかけて行うことを表す。すなわち、絶対時刻ではなく、前の動作からの相対時間を表す。すなわち、「動作ID」が示す「位置及び姿勢」に、ロボットアーム5のハンド30が移動するまでの時間又は「動作ID」が示す「力」になるまでの時間を表す。
図5の動作情報データベース17の「補正パラメータフラグ」に関する情報は、後述する動作補正部20で、どのパラメータを補正するかを表す情報である。具体的には、図7に示した32ビットの数値で表す。図7において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値の補正が可能な場合は「1」とし、手先位置及び姿勢及び力のそれぞれの値の補正が不可能な場合は「0」とする。例えば、0ビット目においては、手先位置のx座標の値の補正が可能な場合は「1」とし、手先位置のx座標の値の補正が不可能な場合は「0」とする。また、1ビット目においては、手先位置のy座標の値の補正が可能な場合は「1」とし、手先位置のy座標の値の補正が不可能な場合は「0」とする。また、2ビット目においては、手先位置のz座標の値の補正が可能な場合は「1」とし、手先位置のz座標の値の補正が不可能な場合は「0」とする。以後、順次、3,4,5ビット目は、姿勢のφ、θ、ψの補正可能性を表す(すなわち、補正が可能な場合は「1」とし、補正が不可能な場合は「0」とする。)。さらに、6ビット目〜11ビット目においては、力のそれぞれの成分の補正可能性を示す(すなわち、補正可能の場合は「1」とし、補正不可能の場合は「0」とする。)。また、フラグに関する情報は、将来の拡張用に多め(32ビット)に用意しているため、この例では、12ビット目から31ビット目は使用しないので、「0」を入れておくが、12ビットのみ格納できる変数としても良い。
図5の動作情報データベース17の「進捗情報」に関する情報は、現在実行中の動作であるかどうかを示す情報であり、実行中の動作である場合は「1」とし、実行中の動作でない場合は「0」として、動作記憶部15により動作情報データベース17に記憶する。具体的には、動作指令部27によって、作業が開始されると、その作業の各動作のうち、現在動作(実行)中の動作については「1」を動作記憶部15により記憶し、現在動作(実行)していない動作については「0」を動作記憶部15により記憶する。
-動作指令部-
動作指令部27には、人4がデータ入力IF26により指定された「作業ID」の作業の動作開始の指令が入力される。動作指令部27は、指定された「作業ID」の作業の動作開始の指令を受けて、指定された「作業ID」の作業の動作を開始させる。具体的には、動作情報指令部27により「動作ID」の「進捗情報」に「1」を設定し、動作記憶部15により動作情報データベース17に記憶する。その他の「動作ID」の「進捗情報」については「0」を動作指令部27に設定し、動作記憶部15により動作情報データベース17に記憶する。動作指令部27により指令された作業IDの作業の全ての動作は、「動作ID」の番号の小さいものから、順番に実行され、一番最後の動作まで実行されると、その「作業ID」の先頭の「動作ID」の動作に戻り、一連の動作を繰り返し実行する。
動作情報データベース17のロボットアーム5の手先の位置姿勢及び時間の情報は、例えば図8に示すようにロボットアーム5を人4が把持して、後述するインピーダンス制御モードにて、ロボットアーム5を移動させて、ある一定時間毎(例えば0.2msec毎)にロボットアーム5の手先位置及び姿勢の情報を取得し、時間と共に、動作記憶部15により動作情報データベース17に記憶して作成する。さらに、動作情報データベース17の力の情報は、データ入力IF26で加えたい力の値を入力して作成する。なお、図8において、3は調理器具の一例としての鍋、9はハンド30で把持されて鍋3をかき混ぜるための調理用具の一例としてのレードルである。
−力検出部特性データベース−
力検出部特性データベース18は、力検出部53(図3に図示)の特性を表す情報(特性情報)が記憶されており、図9Aに一例を示す。特性情報は、一例として、人4のロボットアーム5の把持位置に関する情報(図9Aの「把持位置ID」の欄参照)と、人4がロボットアーム5を把持した位置で力の検出ができるかどうかに関する情報(図9Aの「検出の有無」の欄参照)と、力検出の際に、接触面からの抗力の影響を受ける可能性があるかどうかに関する情報(図9Aの「抗力の影響の可能性の有無」の欄参照)とで構成される。
図9Aの「把持位置ID」に関する情報は、力検出部特性データベース18に記憶されている図9Bのテーブルにより、人4がロボットアーム5のどの部分を把持しているかの情報を示す。それぞれの「把持位置ID」に関する情報は、図9Bに示すテーブルにより決定する。具体的には、図2の上腕リンク33を把持している場合(図28の操作A)には、図9Bにより、「上腕」は「把持位置ID」が「1」となる。また、前腕リンク32を把持している場合(図28の操作B)には、図9Bにより、「前腕」は「把持位置ID」が「2」」となることが、力検出部特性データベース18から制御方法切替部16で検出される。同様に、手首部31を把持している場合には、図9Bにより、「手首」は「把持位置ID」が「3」となる。同様に、ハンド30を把持している場合(図28の操作C)には、図9Bにより、「ハンド」は「把持位置ID」が「4」となることが、力検出部特性データベース18から制御方法切替部16で検出される。
図9Aの「検出の有無」に関する情報は、それぞれの「把持位置ID」で示す把持位置を人4が把持して人4が把持位置で力を加えた場合に、力検出部53で検出可能である場合は「1」を設定し、力検出部53で検出不可能である場合は「0」を設定する。
図9Aの「抗力の影響の可能性の有無」に関する情報は、ロボットアーム5が所定の作業を行うとき例えばロボットアーム5がハンド30で直接的に接触面に接触した際又はロボットアーム5がハンド30で把持した物体などを介して間接的に接触面に接触した際に、力検出部53が接触面から抗力の影響を受ける可能性があるかどうかの情報である。具体的には、図10のようにロボットアーム5が、物体、例えば拭き掃除用具の一例としてのスポンジ46を把持して、IHクッキングヒータ又はガスコンロなどの調理装置6に力を加えて拭き掃除をしていると仮定する。この拭き掃除の最中に、人4がロボットアーム5を把持して力を加えた際の力を検出する場合に、力検出部53が接触面からの抗力の影響を受けて、力検出部53で正しく力を検出できない場合は、抗力の影響を受けるとし、「1」を設定する。逆に、力検出部53が接触面からの抗力の影響を受けずに、人4からの力を正しく検出できる場合は、「0」を設定する。
具体的な例としては、図10に示す例のように、手首部31にのみ力検出部53を設定しかつ、スポンジ46をハンド30で把持して拭き掃除をしている場合に、スポンジ46を介してハンド30が調理装置6に直接的に又は間接的に接触して調理装置6の天板から抗力の影響を受けると仮定する。このとき、さらに、人4の手4aでハンド30又は手首部31を把持した場合には、力検出部53で力検出が可能である。これに対して、人4の手4aでハンド30又は手首部31以外の部分を把持した場合でかつ力検出部53で力検出ができない。このような場合には、力検出部特性データベース18は図9Aのようになる。すなわち、設置した力検出部53は、抗力の影響を受ける可能性があるため、図9Aの「抗力の影響の可能性の有無」に関する情報は、把持位置に関わらず、全て「1」となる。さらに、力検出部53は、ハンド30又は手首部31で把持した場合には力検出が可能であるため、手首部31を示す「把持位置ID」が「3」の場合と、ハンド30を示す「把持位置ID」が「4」の場合の「検出の有無」は、それぞれ、「1」なる。同様に、上腕リンク33又は前腕リンク32を把持した場合には、人4が加えた力を直接検出できないために、上腕リンク33を示す「把持位置ID」が「1」の場合と前腕リンク32を示す「把持位置ID」が「2」の場合との「検出の有無」は、それぞれ、「0」となる。
図27Aのように、前腕リンク32においてる操作用の力センサ53aと力制御用の力センサ53bを搭載していた場合の力検出部特性データベース18は、図30Aとなる。図27Aに示すように、人4が前腕リンク32を操作した際に、人4からの力を図27Aの操作用の力センサ53aで直接検出することができることから、「把持位置ID」が「2」の場合(図30Bにより「前腕」を示す場合)の「検出の有無」は「1」となる。さらに、操作用の力センサ53aが調理装置6に直接的に又は間接的に接触しても抗力の影響を受けないとすると、「把持位置ID」が「2」の「抗力の影響の可能性の有無」は「0」となる。それ以外の把持位置については、図10の例と同様となるため、説明は省略する。
さらに、図27Bのように、ロボットアーム5の各関節部にトルクセンサ53c,53d,53eを搭載している場合には、ロボットアーム5のどの部分を把持して操作しても、人4が加えた力を検出できることから、図31A及び図31Bに示すように、全ての把持位置において、「検出の有無」が「1」となる。また、図27Bのトルクセンサ53c,53d,53eが、接触面からの抗力の影響を受けるようなセンサである場合には、全ての把持位置において、「抗力の影響の可能性の有無」は「1」となる。
以上のように、力検出部特性データベース18を力センサなどの力検出部53の特性に合わせて用意することで、後述する制御方法切替部16で制御方法を切り替えることが可能となる。
−動作補正部−
動作補正部20は、動作情報データベース17の位置と姿勢と力と時間との情報にて、(i)位置制御モード、(ii)インピーダンス制御モード、(iii)力制御モードと、それらを方向別に組み合わせた制御モードのうち、いずれかのモードでのロボットアーム5の動作中に、データ入力IF26から動作指令部27を介して動作補正部20で動作補正開始の指令を受ける。すると、動作補正部20は、制御方法切替部16により制御方法を切り替えた後、動作補正情報データベース18の動作補正情報に基づいて、人4がロボットアーム5に力を加えることで動作情報データベース17のロボットアーム5の動作情報を補正する機能を有している。なお、(i)、(ii)、(iii)のそれぞれの制御モードの詳細については、制御パラメータ管理部21の動作と共に後述する。
以下、動作補正部20の機能について説明する。
人4が、データ入力IF26により、動作情報データベース17の作業の中の「作業ID」に関する作業の中からロボットアーム5に実行させたい作業を選択して、選択情報を動作指令部27に入力して指定する。指定された作業について、動作指令部27は、動作補正部20に作業選択の指示を行う。動作補正部20は、動作情報データベース17の中から選択された「作業ID」の作業の動作情報(具体的には、位置の情報と姿勢の情報と時間の情報と力の情報)を、フラグに従って、制御モードを設定して動作するように、制御パラメータ管理部21へ指令を出す。
具体的には、図5の「作業ID」が「1」の作業が選択された場合は、「作業ID」が「1」でかつ「動作ID」が「1」の動作の場合には、「フラグ」が0、1、3、4、5ビット目が「1」なので、ロボットアーム5の手先位置のx、y、φ、θ、ψが有効ということを示している。よって、x、y、φ、θ、ψについては位置制御モードで動作させ、z軸については「フラグ」の8ビット目が「1」なので、力制御モードで動作するように、動作補正部20から制御パラメータ管理部21へ指令を出す。
以上により、図16Aに示すように、ロボットアーム5はIHクッキングヒータ6などの天板を拭き掃除作業を開始する。
IHクッキングヒータ6などの天板を拭き掃除動作をしているときに、人4が、IHクッキングヒータ6などの天板上の、拭き掃除動作をしている場所とは別の場所が汚れていること見つけ、かつ、ロボットアーム5に別の場所での拭き掃除動作をさせたいため、人4が、データ入力IF26にロボットアーム5を別の場所に移動させるように、データ入力IF26により補正開始の命令を動作指令部27に入力したとする。このとき、動作指令部27は、データ入力IF26からの補正開始の指令を受けて、動作補正部20に補正開始を出力する。
動作補正部20は、データ入力IF26からの補正開始の指令を受けて、動作情報データベース17の補正パラメータフラグにしたがって、制御モードを設定して動作するように、制御パラメータ管理部21へ指令を出す。具体的には、図5の「作業ID」が「1」の作業が動作中(進捗情報が「1」の動作)の「動作ID」の補正パラメータフラグが、図5では、8ビット目のみ「1」でその他は「0」なので、ロボットアーム5の動作のうち、z軸の力成分のみ補正が可能ということを表す。力成分を補正する場合には、その力成分を人4の加えた力で補正ができるように、力ハイブリッドインピーダンス制御モードの設定を行い、z軸方向の制御方法の切り替えの指令を動作補正部20から制御方法切替部16へ出力する。
人4がロボットアーム5を把持するとき、人4がロボットアーム5についてどこの部分を把持しているかを把持位置検出部23で検出し、検出結果を把持位置検出部23から制御方法切替部16へ入力する。すると、制御方法切替部16で制御方法を把持位置に応じて切り替えて、その制御方法で動作するように、制御方法切替部16が制御パラメータ管理部21へ指令を出す。
人4は、図16Bに示すように、汚れ91の付近を強めに力をかけて掃除するために、ロボットアーム5を人4が把持して、汚れのある部分91aに向かって人4からロボットアーム5に力を加える。加えた力の情報は、制御部22の力検出部53で検出し、制御パラメータ管理部21を介して、動作補正部20に入力される。動作補正部20では、現在動作中の「作業ID」の情報と「動作ID」の動作情報のうち、力制御で動作しているz軸の力成分の値を、入力された力成分の値に修正して補正する。
動作補正部20により、人4がロボットアーム5に加えた力で、ロボットアーム5の動作を補正し、ロボットアーム5のIHクッキングヒータ6を擦る力を強めて拭き掃除作業を行う。
以上により、動作補正部20は、動作情報データベース17の動作情報で動作している状態で、人4がロボットアーム5に力を加えることで、動作情報を補正することができるようになる。さらに、制御方法切替部16により、人4がロボットアーム5のどの部分を把持しても、人4が加えた力を正しく検出することができるようになる。
−制御方法切替部−
制御方法切替部16は、
(i)位置制御モードと、
(ii)インピーダンス制御モードと、
(iii)力制御モードと、
(iv)それらを方向別に組み合わせた制御モードと
のうち、いずれかのモードで動作中に動作補正部20からの指令を受けると、把持位置検出部23で検出された把持位置と力検出部特性データベース18に記憶された情報とに基づいて、人4がロボットアーム5を把持して力のパラメータを補正する際の制御方法を切り替える。なお、本発明では、一例として、制御方法を切り替えするか否かを制御方法切替部16で判断するとき、切り替え前(切り替えるか否かの判断前)の制御方法でロボットアーム5の動作を制御する制御方法に切り替える(結果的には、制御方法を変更しない)ときも、「制御方法に切り替える」と称する。
例えば、図10のように、手首部31に、力検出部53の一例としての力センサを配置した場合に、ロボットアーム5が(iii)の力制御モードで動作している最中に、(iv)の制御モードの一例としての力ハイブリッドインピーダンス制御モードで動作するよう指令を受けた場合の制御方法の切り替えについて、図11のフローチャートに示す。
まず、動作補正部20から(iv)の力ハイブリッドインピーダンス制御モードによる制御を行うように制御方法切替部16が指令を受けると、制御方法切替部16は、把持位置検出部23でロボットアーム5における人4の把持位置を検出して、検出した結果の情報を制御方法切替部16に入力する(ステップS1)。
次に、把持位置検出部23により検出された把持位置の力検出部53の抗力の有無に関する特性を、力検出部特性データベース18を使って、制御方法切替部16により検出する(ステップS2)。例えば、人4が前腕リンク32を把持している場合は、図9Bの力検出部特性データベース18の「前腕」を表す「把持位置ID」は「2」であることから、図9Aによれば、「把持位置ID」が「2」の場合の「抗力の影響の可能性の有無」は「1」であると、制御方法切替部16により検出する。同様に、人4がハンド30を把持している場合は、図9Bの[ハンド]を表す「把持位置ID」は「4」であることから、図9Aの「把持位置ID」が「4」の場合の、「抗力の影響の可能性の有無」は「1」であると、制御方法切替部16により検出する。これらの場合は、「抗力の影響の可能性の有無」は「1」である(抗力の影響が有る)ので、ステップS2ではYesとなり、ステップS3に進む。もし、「抗力の影響の可能性の有無」は「0」である(抗力の影響を受けない)ならば、ステップS2ではNoとなり、ステップS4に進む。
次に、ステップS3及びステップS4において、それぞれ、把持位置検出部23により検出された把持位置の力検出部53の検出の有無に関する特性を、力検出部特性データベース18を使って、制御方法切替部16により検出する(ステップS3、ステップS4)。このステップS3及びステップS4において、「検出の有無」は「1」である場合(力検出部53で検出可能である場合)ならば、ステップS3及びステップS4において、それぞれYesとなり、ステップS5又はS7に進む。もし、「検出の有無」は「0」である場合(力検出部53で検出可能である場合)ならば、ステップS3及びステップS4において、それぞれNoとなり、ステップS6又はS8に進む。例えば、ステップS3及びステップS4において、人4が前腕リンク32を把持している場合は、図9Bの力検出部特性データベース18の「前腕」の「把持位置ID」は「2」であることから、図9Aの「把持位置ID」が「2」の場合の「検出の有無」が「0」であると、制御方法切替部16により検出する(すなわち、前腕では力検出部53で検出不可能である、と検出する)。同様に、人4がハンド30を把持している場合は、図9Bの[ハンド]の「把持位置ID」は「4」となり、図9Aの「把持位置ID」が「4」の場合の「検出の有無」が「1」であると、制御方法切替部16により検出する(すなわち、ハンド30では力検出部53で検出可能である、と検出する)。
ステップS5では、後述する高剛性位置制御モード(人4の力でロボットアーム5が移動できない制御方法)に制御方法切替部16により切り替える。すなわち、ステップS2で「抗力の影響の可能性の有無」が「1」であり(すなわち、抗力の影響を受ける場合で)、且つステップS3で「検出の有無」が「1」である場合(例えば、ハンド30を把持して、抗力の影響を受けるとともに、力検出部53で検出可能である場合)は、ステップS5で、ロボットアーム5が接触面に直接的に又は間接的に接触しない位置で、後述する高剛性位置制御モード(人4の力でロボットアーム5が移動できない制御方法)に制御方法切替部16により切り替える。なお、図21Aを基に後述するように、接触面で拭き掃除などの作業をしているロボットアーム5の現在の手先位置を取得し、その手先位置から高さhだけ接触面から離した位置を設定することで、直接的に又は間接的に接触面に接触していない状態を設定することができる。また、「接触面に接触しない位置」でない位置の場合には、人がロボットアーム5を把持した時点で、「接触面に接触しない位置」まで切り替え動作を実行する。
このように、ロボットアーム5が接触面に直接的に又は間接的に接触しないようにすることで、接触面からの抗力の影響を無くし、さらに高剛性位置制御モードにすることで、ロボットアーム5が容易に移動して接触面に直接的に又は間接的に接触してしまうことを防ぐことができる。
一方、ステップS6では、人4の力でロボットアーム5が移動できる制御方法である低剛性位置制御モードに制御方法切替部16により切り替える。すなわち、ステップS2で「抗力の影響の可能性の有無」が「1」であり、且つステップS3で「検出の有無」が「0」である場合(例えば、前腕リンク32を把持して、抗力の影響を受けるとともに、力検出部53で検出不可能である場合)は、ステップS6で、人4の力でロボットアーム5が移動できる制御方法である低剛性位置制御モードに切り替える。人4は、接触面に対してロボットアーム5を介して加えたい力をロボットアーム5にかけるために、人4は、ロボットアーム5を把持して接触面に接近する方向にロボットアーム5を押す。低剛性位置制御モードであるため、人4の加えた力でロボットアーム5が容易に移動でき、ロボットアーム5を接触面に直接的に又は間接的に接触させることができる。「検出の有無」が「0」であるため、人4がロボットアーム5に加えた力を力検出部53で直接検出することはできないが、ロボットアーム5における接触面からの抗力が人4の加えた力と等しいことから、接触面からの抗力を力検出部53で検出することで、人4の加えた力を力検出部53で検出することができる。なお、接触面の摩擦の影響などにより、人4がロボットアーム5に加えた力が微小である場合に、人4がロボットアーム5に加えた力か、摩擦の影響による誤検出か、の区別がつかない場合には、力検出部53で検出された力が、ある閾値以上(例えば0.5(N))の場合のみ、有効とすることも可能である。
さらに、ステップS7では、制御方法切替部16による制御方法の切り替えをしない。すなわち、ステップS2で「抗力の影響の可能性の有無」が「0」であり、且つステップS4で「検出の有無」が「1」である場合(図27Aのように力センサ53a,53bを配置し、前腕リンク32を把持した場合:図30A参照)は、制御方法の切り替えをしない。すなわち、ロボットアーム5が人4の加えた力で移動したとしても、接触面からの抗力の影響はなく、さらに、「検出の有無」が「1」であるので、人4の加えた力を力検出部53で直接検出することができるため、(iv)の力ハイブリッドインピーダンス制御モードに切り替える前の力制御モードのままで制御するよう設定を行う(言い換えれば、S2及びS4の切り替え判断を行なう前(切り替える判断の前)の制御モードのままで制御するよう設定を行う、又は、力制御モードに切り替えるよう設定を行う)。なお、ここで、制御方法切替部16による制御方法の切り替えを行わないとしたが、位置制御モードに切り替えても、力を正しく検出することができるため、制御方法の切り替えを行わない代わりに、位置制御モードに制御方法切替部16により切り替えるようにしてもよい。
また、ステップS8では、接触面からの抗力の検出が不可能であるために、人4が加えた力を検出することはできず、ステップS9に進む。ステップS9では、人4に対して警告を表示するなど、検出ができなかった事を人4に通知する。すなわち、ステップS2で「抗力の影響の可能性の有無」が「0」であり、且つステップS4で「検出の有無」が「0」である場合は、接触面からの抗力の検出が不可能であるために、ステップ8で、人4が加えた力を検出することはできないと、制御方法切替部16により判断する。したがって、ステップS9において、人4に対して警告を表示するなど、検出ができなかった事を人4に制御方法切替部16により通知する。
−動作記憶部−
動作記憶部15は、動作補正部20により補正した動作情報を動作情報データベース17に記憶する。さらに、動作記憶部15には、制御パラメータ管理部21からロボットアーム5の手先位置(ハンド30の位置)及び姿勢と人4がロボットアーム5にかけた力の情報が入力され、動作記憶部15で記憶する。
(制御装置本体部11)
制御装置本体部11は、制御パラメータ管理部21と、制御部22とを有するように構成される。制御部22と制御パラメータ管理部21との間では、ロボットアーム5の手先位置又は力の情報などが入出力される。
−制御パラメータ管理部−
次に、制御パラメータ管理部21の詳細について説明する。
制御パラメータ管理部21は、動作補正部20又は制御方法切替部16の指示に基づいて、ロボットアーム5の位置制御モードと、インピーダンス制御モードと、ハイブリッドインピーダンス制御モードと、(iv)の力ハイブリッドインピーダンス制御モードと、高剛性位置制御モードと、低剛性位置制御モードとの6つのモードの間で制御モードを切り替える設定を行う。また、制御パラメータ管理部21は、インピーダンス制御モード時及び力ハイブリッドインピーダンス制御モード時の機械インピーダンス設定値の設定を行う。また、制御パラメータ管理部21は、後述するインピーダンス計算部51で出力する手先位置及び姿勢目標補正出力rd△の設定及び目標軌道生成部55への動作情報の設定を行う。制御パラメータ管理部21は、動作補正部20又は制御方法切替部16の指示に基づいて、設定された制御モードに従ってロボットアーム5が動作するように、制御部22へ指令を出して、制御部22の制御の下にロボットアーム5を動作させる。さらに、制御パラメータ管理部21は、制御部22からロボットアーム5の手先位置又は力の情報などを動作補正部20へ通知を行う。
(i)位置制御モード
位置制御モードは、後述する目標軌道生成部55の手先位置と姿勢目標ベクトル指令とに基づいてロボットアーム5が作動するモードであり、人4がロボットアーム5に力を加えてもロボットアーム5は移動しないようにロボットアーム5の動作を制御する制御方法のモードである。具体的には、かき混ぜ作業又は拭き掃除作業などの作業時におけるロボットアーム5の移動を伴って動作するモードが位置制御モードである。
(ii)インピーダンス制御モード
インピーダンス制御モードは、力検出部53で検出され、かつ人4などからロボットアーム5に加わる力に応じて、ロボットアーム5が作動するようにロボットアーム5の動作を制御する制御方法のモードである。例えば、図8に示すように、人4がロボットアーム5を直接持って、作業場所(図8では鍋3の位置)までロボットアーム5を誘導する場合に動作するモードがインピーダンス制御モードである。
(iii)力制御モード
力制御モードは、動作補正部20から制御パラメータ管理部21へ設定された力で対象物をロボットアーム5で押し付けながら動作するようにロボットアーム5の動作を制御する制御方法の制御モードである。例えば、図13のように、IHクッキングヒータ6などの天板を拭き掃除作業する際に、天板の表面に力を加えて擦るような拭き掃除作業の場合、又は、図14のように、鍋3の底に力を加えて擦るようなかき混ぜ作業の場合などの、力を加えて制御する方向に使用する制御モードが力制御モードである。
(iv)ハイブリッドインピーダンス制御モード
ハイブリッドインピーダンス制御モードは、ロボットアーム5が位置制御モードで動作しているときに、ロボットアーム5に加わる力が力検出部53により検出され、かつ力検出部53で検出された力に応じて、ロボットアーム5が作動するようにロボットアーム5の動作を制御する制御方法のモードである。具体的には、ロボットアーム5が、図12Aに示すように、ロボットアーム5が位置制御モードによるかき混ぜ業を行っているときに、人4が鍋3の中の底側の部分をかき混ぜることができるようにロボットアーム5の動作を補正したい場合に、制御パラメータ管理部21は、ハイブリッドインピーダンス制御モードに切り替える指令を制御部22へ出力する。その結果、図12Bに示すように、人4がロボットアーム5を把持しながら、ハイブリッドインピーダンス制御モードにより下方向に力をかけることで(図12Bの下向きの矢印参照)、水平方向を位置制御モードでかき混ぜながら、図12Cの下向きの矢印及び下側の回転方向の矢印で示すように、垂直方向すなわち鍋底をかき混ぜる動作に補正することができるようになる。このような制御方法がハイブリッドインピーダンス制御モードである。
(v)力ハイブリッドインピーダンス制御モード
力ハイブリッドインピーダンス制御モードは、ロボットアーム5が力制御モードで動作しているときに、人4からロボットアーム5に加わる力に応じて、ロボットアーム5が作動するようにロボットアーム5の動作を制御する制御方法のモードである。具体的には、図16AのようにIHクッキングヒータ6などの天板を拭き掃除作業をしているときに、図16Bのように汚れがひどい部分91aを人4が見つけて、ロボットアーム5を把持して汚れがひどい部分91aまでロボットアーム5を移動させて、ロボットアーム5が天板に加える力を補正する際に使用するモードである。なお、力ハイブリッドインピーダンス制御モードの具体的な制御モードは、制御方法切替部16により切り替えられたモードが力ハイブリッドインピーダンス制御モードである。
以上の制御モードは、6軸の方向別にそれぞれ別個に設定することができる。
例えば、図16Aの拭き掃除作業は、6軸の方向別に、ハイブリッドインピーダンス制御モードか、インピーダンス制御モードか、位置制御モードかを制御方法切替部16により切り替え、さらに、制御方法切替部16により指定した力を作用させて動作する力制御モードで動作させる制御モードである。なお、力制御モードが設定された方向にインピーダンス制御モードを設定することはできない(力制御モードとインピーダンス制御モードは排他的な関係)。
例えば、図16AのようにIHクッキングヒータ6などの天板を拭き掃除作業する際に、掃除面に平行に円状に動作しながら、掃除面に垂直下向きに指定した力をかけて、拭き掃除をする場合には、具体的には、(x,y,z,φ,θ,ψ)の6軸それぞれに以下の制御モードを設定する。すなわち、(x,y)成分がハイブリッドインピーダンス制御モード、(φ,θ,ψ)成分がインピーダンス制御モードで、z軸成分が力制御モードである。z軸成分の力の補正を行う場合には、力ハイブリッドインピーダンス制御モードに切り替える。
このように掃除面と水平な方向はハイブリッドインピーダンス制御モードとすることで、位置制御モードで動作している最中に、人4などからロボットアーム5に加わる力に応じて、ロボットアーム5を移動させることができる。さらに、(φ,θ,ψ)成分をインピーダンス制御モードとすることで、停止している状態で人4などからロボットアーム5に加わる力に応じて、ロボットアーム5の姿勢を変更することができるようになる。また、z軸成分を力制御モードに設定することで、指定された力で押し付けながら動作することができるようになる。さらに、力ハイブリッドインピーダンス制御モードにすることで、人4が加えた力で拭き掃除をするよう、ロボットアーム5の動作を補正することができる。なお、(x,y,z,φ,θ,ψ)の6軸のうち、z軸成分が力制御モードで、その他の軸は位置制御モードで動作させても良い。その場合は、衝突など不用意な力がロボットアーム5に加わっても、位置制御成分を誤って移動させることはない。
高剛性位置制御モードは、ロボットアーム5の動作中の位置制御モードをさらに高剛性にした制御モードである。具体的には、後述する位置誤差補償部56でのゲインを大きくすることで実現し、人4が力を加えても、ロボットアーム5を容易に移動させることができない。そのため、接触面に直接的に又は間接的に接触していない状態で、高剛性位置制御モードに切り替えることで、接触面からの抗力の影響を受けないため、人4がかけた力を正しく検出することができる。さらに、接触面で拭き掃除などの作業をしているロボットアーム5の現在の手先位置を取得し、その手先位置から高さhだけ接触面から離した位置を設定することで、直接的に又は間接的に接触面に接触していない状態を設定することができる(図21Aに図示)。
低剛性位置制御モードは、ロボットアーム5の動作中の位置制御モードをさらに低剛性にした制御モードである。具体的には、後述する位置誤差補償部56でのゲインを小さくすることで実現し、人4が力を加えた場合に、ロボットアーム5を容易に移動させることができる。そのため、人4が把持した位置で力検出部53で力が検出できない場合には、人4がロボットアーム5を直接的に又は間接的に接触面に接触する(接触面に衝突する)まで移動させて接触位置で停止させ、その接触面からの抗力を力検出部53で検出することで、人4がかけた力を正しく検出することができる。
これらの制御モードは、ロボットアーム5の動作の際に、ロボットアーム5の方向及び姿勢別にそれぞれ適切な制御モードを設定して動作させる。
さらに、人4が、ハイブリッドインピーダンス制御モード又はインピーダンス制御モードでロボットアーム5が動作中に、補正するパラメータに応じて、機械インピーダンスパラメータ又はインピーダンス計算部51で出力する手先位置及び姿勢目標補正出力rd△の設定を変更する。
機械インピーダンス設定値の設定パラメータとしては、慣性Mと粘性Dと剛性Kとがある。機械インピーダンス設定値の各パラメータの設定は、補正値を使って、以下の評価式に基づいて行う。
前記式(3)〜(5)中のKM、KD、KKはそれぞれゲインであり、それぞれある定数値である。
制御パラメータ管理部21は、前記式(3)〜(5)に基づき計算した機械インピーダンスパラメータの慣性Mと粘性Dと剛性Kとを制御部22へ出力する。
前記式(3)〜(5)により、例えば、図12Bのように、人4がロボットアーム5のハンド30で把持されたレードル9を使用して鍋3の中の上側の部分をかき混ぜている動作に対して、鍋3の中の底側の部分をかき混ぜるようロボットアーム5の動作を補正させたい場合に、ロボットアーム5のz軸以外の位置成分及び姿勢成分が簡単に動くと、ロボットアーム5の動作の補正作業がやりにくくなる。そこで、制御パラメータ管理部21により、ロボットアーム5のz軸以外の位置成分及び姿勢成分についてのみ、上述の補正値を高く(具体的には、例えば、上述の補正値の約10倍に)設定することで、ロボットアーム5の粘性D及び剛性Kが大きくなるように設定されることになり、ロボットアーム5の動きに抵抗感又は硬さが生じ、ロボットアーム5が動きにくくなる。
又は、別の方法として、インピーダンス計算部51から出力される手先位置及び姿勢目標補正出力rd△の各成分のうち、z軸以外の値を全て0にする方法がある。これによって、z軸以外は、人4の力で移動できなくなるため、誤操作を防ぐことができる。
さらに、上述したように、制御パラメータ管理部21から、動作記憶部15と動作補正部20とに、ロボットアーム5の手先位置及び姿勢と、人4の加えた力の情報とを通知する必要がある。そのため、制御部22から制御パラメータ管理部21にロボットアーム5の手先位置及び力の情報を受けると、制御パラメータ管理部21は、動作記憶部15と動作補正部20とへ通知を行う。また、動作補正部20から制御パラメータ管理部21に入力された、位置及び姿勢と時間となどの動作情報を、制御パラメータ管理部21から制御部22へ通知する。
−制御部−
次に、制御部22の詳細について、図3により説明する。制御部22は、目標軌道生成部55と、ハンド制御部54と、力検出部53と、インピーダンス計算部51と、位置制御系59(位置誤差補償部56と、近似逆運動学計算部57と、順運動学計算部58とを有する。)と、位置誤差計算部80とを有するように構成されている。力検出部53は、図3では制御部22の一部として図示しているが、制御部22とは別の構成としてもよい。
ロボットアーム5からは、それぞれの関節軸のエンコーダ44により計測された関節角の現在値(関節角度ベクトル)ベクトルq=[q1,q2,q3,q4,q5,q6]Tが出力され、入出力IF24により制御部22に取り込まれる。ただし、q1,q2,q3,q4,q5,q6は、それぞれ、第1関節部35、第2関節部36、第3関節部37、第4関節部38、第5関節部39、第6関節部40の関節角度である。
目標軌道生成部55は、位置制御モードで、又は力制御モードで、又は方向別に位置制御モード若しくは力制御モードで、ロボットアーム5を動作するように、動作補正部20で生成されかつ制御パラメータ管理部21を介して目標軌道生成部55に入力された動作情報から、目標とする手先位置及び姿勢目標ベクトルrdと目標とする手先(ハンド30)にかかる力ベクトルfdとを目標軌道生成部55により生成する。
具体的には、動作補正部20から制御パラメータ管理部21を介して、動作情報が目標軌道生成部55に入力されると、目標とするロボットアーム5の動作を実現するための手先位置及び姿勢目標ベクトルrdと目標とする手先にかかる力ベクトルfdとそれぞれの方向別にどのパラメータが有効かを示すフラグとが、目標軌道生成部55から位置誤差計算部80に出力される。目標とするロボットアーム5の動作は、目的とする作業に応じて動作補正部20からそれぞれの時間(t=0、t=t1、t=t2、・・・)でのポイント毎の位置及び姿勢(rd0、rd1、rd2、・・・)と力(fd0、fd1、fd2、・・・)とが与えられており、目標軌道生成部55は、多項式補間を使用し、各ポイント間の軌道及び力を補間し、手先位置及び姿勢目標ベクトルrdと目標力ベクトルfdとを生成する。
インピーダンス制御モード時には、インピーダンス制御モードに切り替え時のロボットアーム5の手先位置を、目標とする手先位置及び姿勢目標ベクトルrdとして出力する。さらに、動作情報データベース17の動作情報のハンド30の開閉フラグにより、後述するハンド制御部54へ、ハンド30の開閉指令を出す。
54はハンド制御部であり、目標軌道生成部55から入力した開閉フラグにより、ハンド30を開閉するよう、入出力IF24を介してロボットアーム5へ指令を出す。
53は力検出部であり、人4等とロボットアーム5の接触によってロボットアーム5に加わる外力Fextを検出する。ただし、手先に重量mの物体を把持して作業している場合は、検出したFextからmgをあらかじめ減じておく。ここで、gは重力加速度である。把持物体の質量mの値は、物体を把持する前に人4がデータ入力IF26により力検出部53に入力することができる。
インピーダンス計算部51は、ロボットアーム5に機械インピーダンス設定値への前記ロボットアーム5の機械インピーダンスの値の制御を実現する機能を果たす部分であり、制御パラメータ管理部21から位置制御モードに切り替えられた際には0を出力する。
一方、インピーダンス制御モード及びハイブリッドインピーダンス制御モードに切り替えられた際には、制御パラメータ管理部21で設定されたインピーダンスパラメータである慣性Mと粘性Dと剛性Kと、関節角の現在値qと、力検出部53が検出した外力Fextとより、ロボットアーム5に機械インピーダンス設定値への前記ロボットアーム5の機械インピーダンスの値の制御を実現するための手先位置及び姿勢目標補正出力rdΔを以下の式(6)によりインピーダンス計算部51で計算し、計算して求められた手先位置及び姿勢目標補正出力rdΔを位置誤差計算部80に出力する。
さらに、制御パラメータ管理部21で力制御モードに切り替えられた際には、「フラグ」で指定された力成分が存在する場合には、制御パラメータ管理部21で設定されたインピーダンスパラメータである慣性Mと粘性Dと剛性Kと、関節角の現在値qと、力検出部53が検出した外力Fextと、目標軌道生成部55から出力されるfdとより、ロボットアーム5に機械インピーダンス設定値への前記ロボットアーム5の機械インピーダンスの値の制御を実現するための手先位置及び姿勢目標補正出力rdΔを以下の式(10)によりインピーダンス計算部51で計算して、計算して求められた手先位置及び姿勢目標補正出力rdΔを位置誤差計算部80に出力する。
手先位置及び姿勢目標補正出力rdΔは、目標軌道生成部55の出力する手先位置及び姿勢目標ベクトルrdに位置誤差計算部80で加算され、手先位置及び姿勢補正目標ベクトルrdmが生成される。ただし、ハイブリッドインピーダンス制御モード時に、補正パラメータに応じて、ロボットアーム5の動作を拘束する場合に、例えばz軸のみロボットアーム5が動くようにするには、手先位置及び姿勢目標補正出力rdΔのz成分以外を0にインピーダンス計算部51で設定する。
ただし、M,D,Kは式(7)、式(8)、式(9)により算出する。
58はロボットアーム5からのそれぞれの関節軸のエンコーダ44により計測された関節角の現在値qである関節角度ベクトルqが、入出力IF24を介して入力される順運動学計算部である。順運動学計算部58は、ロボットアーム5の関節角度ベクトルqから、手先位置及び姿勢ベクトルrへの変換の幾何学的計算を順運動学計算部58で行う。順運動学計算部58で計算された手先位置及び姿勢ベクトルrは、位置誤差計算部80及びインピーダンス計算部51及び目標軌道生成部55に出力される。
56は位置誤差補償部であり、ロボットアーム5において計測される関節角度ベクトルqより順運動学計算部58により計算される手先位置及び姿勢ベクトルrと、手先位置及び姿勢補正目標ベクトルrdmとの誤差reが位置誤差計算部80で求められたのち、その誤差reが位置誤差補償部56に入力され、位置誤差補償部56から、位置誤差補償出力ureが近似逆運動学計算部57に向けて出力される。
さらに、高剛性位置制御モードが設定された際に、定数の対角行列である比例、微分、積分の3つのゲインをあらかじめ設定された値に大きく設定する(通常の位置制御モードと比較して大きな値を設定する。具体的には、通常の位置制御モード時の2倍程度の値に設定する。ここで、高剛性とは、通常の位置制御と比較して、剛性が高くなることを意味する。値を通常の位置制御モード時の2倍程度にすると、剛性を約2倍まで高くすることができる。このようにすることで、高剛性の位置制御を実現することができる。なお、前記ゲインを各成分毎に値を変えることで、例えば、z軸方向のみ高剛性で、その他の方向は通常の位置制御で動作するよう制御することができる。
また、低剛性位置制御モードが設定された際に、定数の対角行列である比例、微分、積分の3つのゲインをあらかじめ設定された値に小さく設定する。すなわち、通常の位置制御モードと比較して、小さな値を設定する。具体的には、通常の位置制御モード時の半分程度の値に設定する。ここで、低剛性とは、通常の位置制御と比較して、剛性が低くなることを意味する。値を通常の位置制御モード時の半分程度にすると、剛性を約半分まで低くすることができる。このようにすることで、低剛性の位置制御を実現することができる。なお、前記ゲインを各成分毎に値を変えることで、例えば、z軸方向のみ低剛性で、その他の方向は通常の位置制御で動作するよう制御することができる。
近似逆運動学計算部57では、位置誤差補償部56により入力される位置誤差補償出力ureとロボットアーム5において計測される関節角度ベクトルqとに基づき、近似式uout=Jr(q)−1uinにより、逆運動学の近似計算を行う。ただし、Jr(q)は、
の関係を満たすヤコビ行列、uinは近似逆運動学計算部57への入力、uoutは近似逆運動学計算部57からの出力であり、入力uinを関節角度誤差qeとすれば、qe=Jr(q))−1reのように手先位置及び姿勢誤差reから関節角度誤差qeへの変換式となる。したがって、位置誤差補償部56から位置誤差補償出力ureが近似逆運動学計算部57に入力されると、近似逆運動学計算部57からの出力として、関節角度誤差qeを補償するための関節角度誤差補償出力uqeが近似逆運動学計算部57から入出力IF24を介してロボットアーム5のモータドライバ25に向けて出力される。
関節角度誤差補償出力uqeは、入出力IF24のD/Aボードを介してロボットアーム5のモータドライバ25に電圧指令値として与えられ、各モータ43により各関節軸が正逆回転駆動されロボットアーム5が動作する。
以上のように構成される制御部22に関して、ロボットアーム5のインピーダンス制御動作の原理について説明する。
インピーダンス制御動作(ハイブリッドインピーダンス制御も同様)の基本は、位置誤差補償部56による手先位置及び姿勢誤差reのフィードバック制御(位置制御)であり、図3の点線で囲まれた部分が位置制御系59になっている。位置誤差補償部56として、例えば、PID補償器を使用すれば、手先位置及び姿勢誤差reが0に収束するように位置制御系59による制御が働き、目標とするロボットアーム5のインピーダンス制御動作を実現することができる。
制御パラメータ管理部21でインピーダンス制御モード若しくはハイブリッドインピーダンス制御モード若しくは力ハイブリッドインピーダンス制御モードに切り替えられた場合には、前記説明した位置制御系59に対し、インピーダンス計算部51により手先位置及び姿勢目標補正出力rdΔが位置誤差計算部80で加算され、手先位置及び姿勢の目標値の補正が行われる。このために、前記した位置制御系59は、手先位置及び姿勢の目標値が本来の値より微妙にずれることになり、結果的に、前記ロボットアーム5の機械インピーダンスの値を前記適切に設定された設定値に制御する動作が実現され、位置制御系59の位置制御動作を補正することができる。手先位置及び姿勢目標補正出力rdΔはインピーダンス制御モード若しくはハイブリッドインピーダンス制御モードの場合は式(6)により算出され、力ハイブリッドインピーダンス制御モードの場合は式(10)による算出されるため、前記ロボットアーム5の慣性Mと粘性Dと剛性Kとの機械インピーダンスの値を前記適切に設定された設定値に制御する動作が実現される。
(周辺装置14)
周辺装置14は、データ入力IF(インターフェース)26と入出力IF(インターフェース)24とモータドライバ25と表示部2とを有するように構成される。制御部22から入出力IF24には制御信号などの制御情報が出力される。動作補正部20から、動作情報データベース17で記憶された補正パラメータなどの補正情報及び動作IDに該当する映像若しくは写真若しくはテキストが表示部2へ出力されて、動作情報で記述されたロボットアーム5の動作の映像若しくは写真若しくはテキストを表示部2で表示する。
入出力IF24は、パーソナルコンピュータのPCIバスなどの拡張スロットに接続された、例えばD/AボードとA/Dボードとカウンタボードとなどを有するように構成されている。入出力IF24は、ロボットアーム5の各関節部の、後述するエンコーダ44より出力される各関節角度情報及びハンド30のエンコーダ61より出力される角度情報が入力されて制御部22に入力する。一方、入出力IF24には、制御部22から制御信号などの制御情報が入力されるとともに、モータドライバ25に制御指令値などの制御情報を出力する。モータドライバ25は、ロボットアーム5の各関節部の、後述するモータ43及びハンド30のモータ62へ制御指令値などの制御情報を出力する。
データ入力IF(インターフェース)26は、人4がキーボード又はマウス又はマイクなどの入力装置を使用して、後述する動作情報を入力したり変更したりするためのインターフェースである。また、データ入力IF26は、図1の操作盤13のボタン13aなどの入力装置を使用して、人4から動作指令部27に対して制御動作開始及び終了、動作の補正開始及び終了の指令を受けるようにしてもよい。ボタン13aとしては、例えばトグルスイッチとして1つのボタンで制御動作開始及び制御動作終了をそれぞれ入力可能としてもよいし、制御動作開始ボタンと制御動作終了ボタンと別々に設けてもよい。
表示部2は、例えばロボットアーム5又は作業台7の側面に設置されたディスプレイ装置であり、動作情報などを表示する。
以上の原理に基づく制御プログラムの実際の動作ステップについて、図15のフローチャートに基づいて説明する。
ロボットアーム5の関節部それぞれのエンコーダ44により計測された関節角度データ(関節変数ベクトル又は関節角度ベクトルq)が、エンコーダ44から、入出力IF24を介して、制御装置本体部11の制御部22に取り込まれる(ステップS101)。
次いで、制御部22に取り込まれた関節角度データ(関節変数ベクトル又は関節角度ベクトルq)に基づいて、逆運動学計算部57にてロボットアーム5の運動学計算に必要なヤコビ行列Jr等の計算を行う (ステップS102)。
次いで、順運動学計算部58にて、ロボットアーム5のそれぞれのエンコーダ44からの関節角度データ(関節変数ベクトル又は関節角度ベクトルq)から、ロボットアーム5の現在の手先位置及び姿勢ベクトルrを計算して、位置誤差計算部80と目標軌道生成部55とインピーダンス計算部51とに出力する(ステップS103)。
次いで、動作補正部20から制御パラメータ管理部21を介して送信された動作情報に基づき、目標軌道計算部55は、ロボットアーム5の手先位置及び姿勢目標ベクトルrdと目標力ベクトルfdとを計算し、インピーダンス制御モード時は、ロボットアーム5の手先位置を、目標とする手先位置及び姿勢目標ベクトルrdとして位置誤差計算部80に出力する(ステップS104)。
次いで、力検出部53は、モータ43の駆動電流値iと、関節角度データ(関節変数ベクトル又は関節角度ベクトルq)と、関節角度誤差補償出力uqeとから、ロボットアーム5の手先における等価手先外力Fextを計算してインピーダンス計算部51に出力する(ステップS105)。
次いで、ステップS106では、制御パラメータ管理部21において、後述する動作補正部20により補正有りと指示され且つ補正パラメータで6軸のうち力成分を補正する場合であって、かつ、制御方法切替部16で低剛性位置制御モードに切り替えられた場合は、力成分が設定された成分は低剛性位置制御モードに制御モードを切り替えられる。その後、ステップS107へ進む。
また、ステップS106では、制御パラメータ管理部21において、後述する動作補正部20により補正有りと指示され且つ補正パラメータで6軸のうち力成分を補正する場合であって、かつ、制御方法切替部16で高剛性位置制御モードに切り替えられた場合は、力成分が設定された成分は高剛性位置制御モードに制御モードを切り替えられる。その後、ステップS108へ進む。
また、ステップS106では、制御パラメータ管理部21において、6軸のうち位置成分を補正する場合は、変更したい位置成分をインピーダンス制御モードに制御方法切替部16で変更する。その後、ステップS110へ進む。
また、ステップS106では、制御パラメータ管理部21において、補正なしの場合には、ステップS109へ進み、位置制御モードを設定する。
また、ステップS106では、制御パラメータ管理部21において、後述する動作補正部20により補正有りと指示され且つ補正パラメータで6軸のうち力成分を補正する場合であって、かつ、制御方法切替部16で切り替えなしと設定された場合は、切り替え前の制御方法(力制御モード)に切り替える。その後、ステップS110へ進む。
ステップS107(インピーダンス計算部51での処理)では、制御パラメータ管理部21において、低剛性位置制御モードが設定された場合には、インピーダンス計算部51で、手先位置及び姿勢目標補正出力rdΔを0ベクトルとする。その後、ステップS111に進む。
ステップS108(インピーダンス計算部51での処理)では、制御パラメータ管理部21において、高剛性位置制御モードが設定された場合には、インピーダンス計算部51で、手先位置及び姿勢目標補正出力rdΔを0ベクトルとする。その後、ステップS112に進む。
ステップS109(インピーダンス計算部51での処理)では、制御パラメータ管理部21において、位置制御モードが設定された場合には、インピーダンス計算部51で、手先位置及び姿勢目標補正出力rdΔを0ベクトルとする。その後、ステップS113に進む。
ステップS110では、制御パラメータ管理部21において、インピーダンス制御モード若しくは力制御モードが設定された場合には、インピーダンス計算部51では、制御パラメータ管理部21において設定された機械インピーダンスパラメータの慣性Mと粘性Dと剛性Kと、関節角度データ(関節角度ベクトルq)と、力検出部53により計算されたロボットアーム5に加わる等価手先外力Fextとから、手先位置及び姿勢目標補正出力rdΔが、インピーダンス計算部51により計算される。さらに、補正パラメータに基づいて、手先位置及び姿勢目標補正出力rdΔのいずれか成分の値を0に設定する。
ステップS113では、位置誤差補償部56では、手先位置及び姿勢目標ベクトルrdと手先位置及び姿勢目標補正出力rdΔとの和である手先位置及び姿勢補正目標ベクトルrdmと、現在の手先位置及び姿勢ベクトルrとの差である手先位置及び姿勢の誤差reが計算される。位置誤差補償部56の具体例としては、PID補償器が考えられる。定数の対角行列である比例、微分、積分の3つのゲインを適切に調整することにより、位置誤差が0に収束するように位置誤差補償部56の制御が働く。その後、ステップS114に進む。
ステップS111では、位置誤差補償部56の定数の対角行列である比例、微分、積分の3つのゲインを適切に調整することにより、位置誤差が0に収束するように位置誤差補償部56の制御が働く。そのゲインを、ある値まで小さくすることで、低剛性の位置制御を実現する。その後、ステップS114に進む。
ステップS112では、位置誤差補償部56の定数の対角行列である比例、微分、積分の3つのゲインを適切に調整することにより、位置誤差が0に収束するように位置誤差補償部56の制御が働く。そのゲインを、ある値まで大きくすることで、高剛性の位置制御を実現する。その後、ステップS114に進む。
ステップS114では、近似逆運動学計算部57では、ステップS102で計算したヤコビ行列Jrの逆行列を位置誤差補償出力ureに近似逆運動学計算部57で乗算することにより、位置誤差補償出力ureを、手先位置及び姿勢の誤差に関する値から関節角度の誤差に関する値である関節角度誤差補償出力uqeに、近似逆運動学計算部57により変換する。
次いで、ステップS115では、関節角度誤差補償出力uqeが、近似逆運動学計算部57から入出力IF24を通じ、モータドライバ25に与えられる。モータドライバ25は、関節角度誤差補償出力uqeに基づき、関節部のそれぞれのモータ43を流れる電流量を変化させる。この電流量の変化により、ロボットアーム5のそれぞれの関節部の回転運動が発生して、ロボットアーム5が動作を行なう。
以上のステップS101〜ステップS115が制御の計算ループとして繰り返し実行されることにより、ロボットアーム5の動作の制御、すなわち、ロボットアーム5の機械インピーダンスの値を前記適切に設定された設定値に制御する動作を実現することができる。
以上の動作補正部20とデータ入力IF26と動作記憶部15と動作情報データベース17と把持位置検出部23と制御方法切替部16と制御パラメータ管理部21との動作ステップについて、図17のフローチャートに基づいて説明する。
人4は、データ入力IF26により、動作情報データベース17の作業の中からロボットアーム5に実行させたい作業を選択した選択指令、すなわち、選択された(指定された)「作業ID」の選択指令を動作指令部27に入力する(ステップS50)。
次いで、動作指令部27に入力された選択指令に基づいて、動作補正部20は、動作情報データベース17に記憶されかつ選択された(指定された)「作業ID」に関する動作情報の「フラグ」に従って制御モードを設定する(ステップS51)。
次いで、人4がデータ入力IF26を使用して選択した作業についての動作開始の指令を動作指令部27に入力すると、その動作開始指令を動作指令部27が受けて、動作補正部20を介して、制御パラメータ管理部21へ、設定した制御モードで動作するよう指令を出す(ステップS52)。制御パラメータ管理部21は、設定した制御モードでロボットアーム5が動作するように、制御部22へ指令を出して、制御部22の制御の下にロボットアーム5を動作させる。
次いで、ロボットアーム5での動作中に、人4がデータ入力IF26を使用して、補正開始の指令の入力を動作指令部27に行う(ステップS53)。動作指令部27が補正開始の指令を受け取ると、動作補正部20に動作補正開始の指令を入力する。すると、動作補正部20は、「動作パラメータフラグ」が力制御モードの場合は、制御方法切替部16に制御方法を切り替えるよう指令を出す。制御方法切替部16は、把持位置検出部23により検出した把持位置(ステップS54)と力検出部特性データベース18に記憶された情報により、制御方法を決定して、決定した制御方法で動作するように、制御パラメータ管理部21へ指令を出す(ステップS55)。
次いで、人4がロボットアーム5を把持して、補正したい方向に力をロボットアーム5にかけることで、動作補正部20が動作情報を補正する。具体的には、人4が補正を行った力の情報を力検出部53で検出し(ステップS56)、力検出部53で検出した結果の情報を、制御パラメータ管理部21を介して、動作補正部20に入力する。動作補正部20では、現在動作中の「作業ID」及び「動作ID」の動作情報のうち、力制御で動作しているz軸の力成分の値を、入力された力成分の値に修正して補正する(ステップS57)。
次いで、動作補正部20で補正された動作情報は、動作記憶部15により、動作情報データベース17に記憶される(ステップ58)。
以上の図15の動作ステップS101〜ステップS115及び図17のステップS50〜ステップS58により、動作情報に基づいてロボットアーム5の動作中に、人4がロボットアーム5のどの部分(いずれの位置)を直接把持しても、人4が加えた力を力検出部53で正しく検出し、力検出部53で検出した力情報で動作情報を動作補正部20により補正することができる。
なお、この例では、力制御モードで拭き掃除作業をしている最中に、人4がロボットアーム5に強めに力をかけて拭き掃除作業の力のかけ具合を補正するために、制御方法切替部16で制御方法を切り替えて、ロボットアーム5の拭き掃除作業の動作補正を行う場合について説明している。例えば、制御方法を高剛性位置制御モードに切り替え、さらに接触面からの抗力の影響を無くすために、接触面から少し浮かせて状態(図21A参照)に切り替えて動作補正を行うが、人4が力を補正している最中は、高剛性位置制御モードであり且つ接触面から浮いた状態なので、補正した力を加えて、どれくらい汚れが落ちるのかをリアルタイムに確認しながら補正することができない。そこで、制御方法切替部16では、図11のフローチャートのステップS3にて、低剛性位置制御モード若しくは高剛性位置制御モードのいずれかに切り替える場合に、補正前の力制御モードと補正中の制御モード(低剛性位置制御モード若しくは高剛性位置制御モード)とを交互に切り替えを行う(具体的には0.02秒毎に切り替える)。力制御モード時には補正した力で力制御を行い、補正中の制御モード(低剛性位置制御モード若しくは高剛性位置制御モード)では、補正した力で補正することを交互に繰り返すことで、人4が補正した値で作業が正確にできているかを確認しながら動作補正部20により補正することが可能となる。
なお、この例では拭き掃除作業を例に説明したが、図14に示したように力制御モードで鍋底をこすりながらかき混ぜ動作をしている最中も、同様の方法で動作補正部20により補正することができる。
また、この例では、手首(ハンド30)に力検出部53を搭載した場合を例に説明しているが、図27Aのように、操作用の力センサ53aと力制御用の力センサ53bとを搭載していた場合、又は、図27Bのように各関節にトルクセンサ53c,53d,53eを搭載していた場合なども、図30A又は図31Aのようにの力検出部特性データベース18を力センサ53a,53b,53c,53d,53eの特性に合わせて用意することで、同様の方法で補正することができる。
なお、人4が図28の操作Aと操作Bの境目、若しくは、操作Bと操作Cの境目など、複数の把持位置にまたがって人4が操作している場合は、把持位置検出部23において、人4の手4aがより多く把持している把持位置を検出しても良い。
(第2実施形態)
本発明の第2実施形態における、ロボットアームの制御装置の基本的な構成は、第1実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
第1実施形態の場合と同様に、図16A及び図16Bに示すように、ロボットシステム1を使って拭き掃除作業をする場合に、図18に示すような複数人4A,4Bで1つのロボットアーム5を複数箇所把持して操作する場合、又は、一人の人4が1つのロボットアーム5の複数箇所を把持する場合を例に説明する。 図19は、第2実施形態におけるロボットシステム1を構成する、制御対象であるロボットアーム5と、ロボットアーム5の制御装置70との詳細構成を示す図である。ロボットアーム5と、周辺装置14と、制御パラメータ管理部21と、制御部22と、制御装置70と、動作情報データベース17と、力検出部特性データベース18と、動作指令部27と、動作記憶部15とは、第1実施形態と同様であるので、説明は省略する。第1実施形態と大きく異なる点は、力検出部53により検出した複数の力の情報から、後述する力算出方法テーブル81を使用して、動作補正に使用する力を1つ算出する力算出部28を備えていることである。
把持位置検出部23は、人4がロボットアーム5を把持するとき、人4がロボットアーム5のどの部分を把持して操作しているかを検出し、複数人4A,4Bが把持している場合又は一人の人4が両手などを使って複数箇所を把持している場合は、それぞれの把持位置を検出する。具体的には、カメラなどの画像撮像装置19の画像データより、操作している人4,4A,4Bの手の画像認識を行い、その手が、ロボットアーム5の前腕リンク32か上腕リンク33かハンド30かのいずれを把持して操作しているかを把持位置検出部23により検出する。
制御方法切替部16は、把持位置検出部23で検出された把持位置と、力検出部特性データベース18で記憶された情報とにより、人4が把持して力のパラメータを補正する際の制御方法を切り替える。
把持位置が複数箇所検出された場合には、制御方法切替部16ではそれぞれの把持位置での制御方法を第1実施形態と同様の方法で求める。例えば、前腕リンク32とハンド30の2箇所を一人の人4が把持してロボットアーム5を操作した場合に、図9Aの力検出部特性データベース18を使用して、ロボットアーム5の前腕リンク32を人4が把持した場合は、図9Bの力検出部特性データベース18より、「把持位置ID」は「2」となり、図9Aの力検出部特性データベース18により、「把持位置ID」が「2」の「検出の有無」は「0」で、「抗力の影響の可能性の有無」は「1」であることが、力検出部特性データベース18から制御方法切替部16で検出される。同様に、ハンド30を人4が把持した場合は、図9Bの力検出部特性データベース18より、「把持位置ID」は「4」となり、図9Aの力検出部特性データベース18により、「把持位置ID」が「4」の「検出の有無」は「1」で、「抗力の影響の可能性の有無」は「1」であることが、力検出部特性データベース18から制御方法切替部16で検出される。そして、制御方法切替部16は、それぞれの把持位置での制御方法を求める。例えば、「把持位置ID」が「2」の場合(前腕」の場合)は、第1実施形態と同様に図11のフローチャートを使って、「検出の有無」は「0」で、「抗力の影響の可能性の有無」は「1」であるので、低剛性位置制御モードとなる(図11のステップS6参照)。把持位置IDが「4」の場合(ハンド」の場合)は、第1実施形態と同様に図11のフローチャートを使って、「検出の有無」は「1」で、「抗力の影響の可能性の有無」は「1」であるので、高剛性位置制御モードとなる(図11のステップS5参照)。次に、求めた複数の制御モード(この例では、低剛性位置制御モードと高剛性位置制御モード)を制御方法切替部16により交互に繰り返して切り替える。
力検出部53により、第1実施形態と同様の方法で、全ての把持位置での力を検出し、検出した結果が、制御パラメータ管理部21を介して、動作補正部20に入力される。
図20Aは、力算出部28に内蔵されているデータベース又はメモリ28aに記憶された力算出方法テーブル81の例である。
「算出方法」は、図19の力算出部28で、力検出部53により検出された複数の力に関する情報(力情報)から、どのような方法で1つの力に関する情報(力情報)を算出するかを記述したものである。具体的には、複数の力情報の中から最大値を算出する場合には「最大」と記述し、複数の力情報の中から最小値を算出する場合には「最小」と記述し、複数の力情報の平均値を算出する場合には「平均」と記述し、複数の力情報を合算して算出する場合には「合算」と記述し、複数の力情報に重み係数を乗算した後に合算して算出する場合には「重み付け」と記述する。
力算出部28は、制御方法切替部16で複数の制御方法を切り替えている際に、人4がロボットアーム5を複数の把持位置で把持し、それぞれの把持位置で力検出部53により検出した力の情報から、力算出方法テーブル81を使用して、動作補正に使用する力を1つ算出する。
具体的には、力算出部28は、力算出方法テーブル81を参照し、例えば「フラグ」が「1」となっている「算出方法」に従って算出する。図20Aに示す力算出方法テーブル81の場合では、「合算」が「1」となっているので、それぞれの把持位置での力検出部53の出力値の全ての値を力算出部28で合算して算出する。
「フラグ」は、複数ある算出方法から、どの算出方法が有効かを示すフラグで、この例では、「合算」値を算出する方法が「1」なので、力算出部28において「合算」値を算出する方法が有効であることを示している。よって、それぞれの把持位置で力検出部53により検出した力の情報を、力算出部28により、全て合算する。力算出部28により合算した力の値を、動作補正部20に出力する。
なお、図20Aの「算出方法」が「重み付け」の場合には、図20Aのように、(「フラグ」,「係数ID」)として記述し、「フラグ」は、どの算出方法を使って算出するかを示すフラグであり、「係数ID」は、図20Cに示す、係数IDで示す重み付けの係数を示している。
力算出部28は、図20Aのように、「算出方法」が「重み付け」のときの係数IDが「4」の場合は、図20Cより、係数が(0.6,0.4)であることを予め取得しておく。この係数に基づいて、ロボットアーム5の2箇所の位置を人4が把持した場合には、力検出部53により一番目に検出された力の値に0.6を力算出部28で乗じ、力検出部53により二番目に検出された力の値に0.4を力算出部28で乗じ、それぞれ係数を乗じた値を力算出部28で合算して算出する。もし、ロボットアーム5を3箇所で把持した場合には、図20Cの「係数ID」の「3」を使うことで算出することができる。
動作補正部20では、第1実施形態と同様の方法で動作情報データベース17の動作情報を補正する。
以上により、複数の人4A,4B又は一人の人4が両手を使ってロボットアーム5の複数箇所を把持した場合であっても、力検出部53と力算出部28とにより、力を正しく検出することができる。さらに、力算出部28を設けることで、人4が高齢者又は子供である場合に、補正すべき力が不足している場合であっても、算出方法を「合算」とすることで、より大きな力を加えることが可能となる。また、子供と大人がそれぞれ把持している場合には、「算出方法」として「最大」を力算出部28で選択することで、子供が加えた力よりも大人が加えた力を優先して設定することができる。また、人4が1人で両手を使って操作をしている場合に、「算出方法」として「最大」を力算出部28で選択することで、力を強く加えることができる利き腕の力を、利き腕でない腕の力よりも優先して設定することができる。さらに、複数個所を把持している場合に、急激な力を加えて危険な状態になることを防ぐために、「算出方法」として「最小」若しくは「平均」若しくは「重み付け」を選択することで、より安全に操作をすることが可能となる。
なお、この例では、「算出方法」を「合算」としたが、どの算出方法を選ぶかをデータ入力IF26などで人4が入力しても良い。その場合には、データ入力IF26で入力された「算出方法」のフラグに「1」を設定する。また、操作する人4の状態(例えば高齢者又は子供など)により、例えば図20Bのように、ID1〜ID3を、適宜、切り替えて算出しても良い。この場合、データ入力IF26を使用して、「高齢者」若しくは「子供」かどうかを識別するIDを入力するか、若しくは、年齢を入力し、65歳以上であれば「高齢者」と判断し、15歳以下であれば「子供」と力算出部28で判断することにより、人が高齢者若しくは子供であることを検出することができる。
(第3実施形態)
本発明の第3実施形態における、ロボットアームの制御装置の基本的な構成は、第1実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
図22A〜図22Dに示すように、複数のロボットアーム5A,5Bが動作する場合を例に説明する。図22Aは、例えば、調理時にパン生地を丸めたり、パン生地を伸ばす等の複数のロボットアーム5A,5Bが協調して物体47に力を加えている作業である。また、図22Bは、調理時にパン生地をこねたり、拭き掃除など複数のロボットアーム5A,5Bで接触面に同時に力を加える作業である。このような作業中に、図22C、図22Dに示すように、人4が複数のロボットアーム5A,5Bの片方のロボットアーム5Aを操作して、ロボットアーム5A,5Bの力のかけ具合を補正する場合を例に説明する。
図23は、第3実施形態におけるロボットシステム1を構成する、制御対象である第1のロボットアーム5Aと第2のロボットアーム5B、第1のロボットアーム5A及び第2のロボットアーム5Bの制御装置70との詳細構成を示す図である。第1のロボットアーム5A及び第2のロボットアーム5Bのそれぞれのロボットアームと、動作指令部27と、周辺装置14とは、第1実施形態と同様であるので、説明は省略する。
図24は、第3実施形態における動作情報データベース17の一例である。図24の「作業ID」は、複数のロボットアーム5A,5Bで行う作業を識別するID番号である。「動作ID」は、その作業の中で複数のロボットアーム5A,5Bの動作を識別する動作ID番号である。「ロボットID」は複数のロボットアーム5A,5Bを識別するID番号であり、例えば、「1」は第1のロボットアーム5Aであり、「2」は第2のロボットアーム5Bである。「位置姿勢」と、「力」と、「フラグ」と、「ハンド」と、「時間」と、「補正パラメータフラグ」とは、「ロボットID」で識別したロボットアーム5A,5Bの動作に関する情報で、それぞれの説明は第1実施形態と同様であるので省略する。「進捗情報」はそれぞれのロボットアーム5A,5Bの動作が動作中か否かを示す情報である。
図25Aは、第3実施形態における力検出部特性データベース18である。「ロボットID」は複数のロボットアーム5A,5Bを識別するID番号である。「把持位置ID」と、「検出の有無」と、「抗力の影響の可能性の有無」とは、「ロボットID」で識別したそれぞれのロボットアーム5A,5Bの力検出部の特性を表しており、それぞれの説明は第1実施形態と同様であるので省略する。
動作記憶部15は、後述する動作補正部20により補正した動作情報をそれぞれのロボットアーム毎に「ロボットID」で識別して、動作情報データベース17に記憶する。
把持位置検出部23は、人4がロボットアーム5A若しくは5Bを把持するとき、人4が、ロボットアーム5A若しくはロボットアーム5Bのどの部分を把持して操作しているかを検出する。具体的には、カメラなどの画像撮像装置19の画像データより、操作している人4の手4aの画像認識を把持位置検出部23で行い、その手4aが、ロボットアーム5A及びロボットアーム5Bの前腕リンク32か上腕リンク33かハンド30かのいずれを把持して操作しているかを把持位置検出部23で検出する。
制御パラメータ管理部21は、動作補正部20又は制御方法切替部16の指示に基づいて、ロボットアーム5A及びロボットアーム5Bの制御モードの切り替え及びそれぞれのロボットアーム5A,5Bのインピーダンス計算部51で出力する手先位置及び姿勢目標補正出力rd△の設定及び目標軌道生成部55への動作情報の設定を行う。動作補正部20又は制御方法切替部16から、ロボットアーム5A,5Bを識別する「ロボットID」と共に、動作情報又は制御方法の切り替えの指令を制御パラメータ管理部21が受けて、制御パラメータ管理部21から制御部20に指令を出すが、それぞれのロボットアーム5A,5Bへの指令の内容及び指令を受けた後の制御部20の動作は第1実施形態と同様であるので、説明は省略する。
制御方法切替部16は、ロボットIDで識別されたそれぞれのロボットアーム毎に、把持位置検出部23で検出された把持位置(どのロボットアーム5A,5Bのどの位置か)と、力検出部特性データベース18に記憶された情報とにより、人4がロボットアーム5A,5Bを把持して力のパラメータを補正する際の制御方法を切り替える。
具体的には、図25Aの力検出特性データベース18において、把持位置検出部23で検出されたロボットアーム5A,5Bの識別ID(「ロボットID」)と「把持位置ID」(「把持位置ID」は第1実施形態と同様に、図25Bより「把持位置」から「把持位置ID」を求める。)により、「検出の有無」と「抗力の影響の可能性の有無」とを参照し、第1実施形態と同様に、図11のフローチャートにより、制御方法を決定する。
力検出部53により、第1実施形態と同様の方法で、全ての把持位置での力を検出し、制御パラメータ管理部21を介して、動作補正部20に入力される。
力算出部28は、制御方法切替部16で、複数のロボットアーム5A,5Bの把持位置で検出した力の情報から、力算出方法テーブル81を使用して、それぞれのロボットアーム5A,5Bの動作補正に使用する力を算出する。
図26Aは、力算出方法テーブル81の例である。
「算出方法」は、力算出部28で、力検出部53により検出された複数のロボットアーム5A,5Bの力に関する情報(力情報)から、それぞれのロボットアーム5A,5Bの動作補正に使用する力に関する情報(力情報)をどのような方法で算出するかを記述したものである。具体的には、それぞれのロボットアーム5A,5Bの複数の力情報の中から最大値を算出して、全てのロボットアーム5A,5Bの補正値とする場合には「最大」と記述する。また、複数の力情報の中から最小値を算出して、全てのロボットアーム5A,5Bの補正値とする場合には「最小」と記述する。また、複数の力情報の平均値を算出して、全てのロボットアーム5A,5Bの補正値とする場合には「平均」と記述する。また、複数の力情報を合算して、全てのロボットアーム5A,5Bの補正値とする場合には「合算」と記述する。また、複数の力情報に重み係数を乗算した後に合算して算出する場合には「重み付け」と記述する。
具体的には、力算出部28は、力算出方法テーブル81を参照し、例えば「フラグ」が「1」となっている「算出方法」に従って算出する。図26Aに示す力算出方法テーブル81の場合では、「合算」が「1」となっているので、それぞれのロボットアーム5A,5Bの把持位置での力検出部53の出力値の全ての値を力算出部28で合算して算出する。
「フラグ」は、複数ある算出方法から、どの算出方法が有効かを示すフラグで、この例では、「合算」値を算出する方法が「1」なので、力算出部28において「合算」値を算出する方法が有効であることを示している。よって、それぞれの把持位置で力算出部28により検出した力の情報を、力算出部28により、全て合算する。力算出部28により合算した力の値を、動作補正部20に出力する。
なお、図26Aの「算出方法」が「重み付け」の場合には、図26Aのように、(「フラグ」,「係数ID」)として記述し、「フラグ」は、どの算出方法を使って算出するかを示すフラグであり、「係数ID」は、図26Cに示す。係数IDで示す重み付けの係数を示している。
力算出部28は、図26Aのように「算出方法」が「重み付け」のときの係数IDが「4」の場合は、図26Cより、係数が(0.6,0.4)であることを予め取得しておくこの係数に基づいて、2つのロボットアーム5A,5Bからの力の値について、一番目のロボットアーム5Aで力検出部53により検出された力の値に0.6を力算出部28で乗じ、二番目のロボットアーム5Bで力検出部53により検出された力の値に0.4を力算出部28で乗じ、それぞれ係数を乗じた値を力算出部28で合算して算出する。3つのロボットアーム5の場合には、図26Cの「係数ID」の「3」を使うことで算出することができる。
動作補正部20は、力算出部28で算出された力の補正値を使って、第1実施形態と同様に、動作情報データベース17の動作情報を補正することで、人4が補正した値に動作を補正することが可能となる。
以上により、人4が、複数のロボットアーム5A,5Bを、1箇所以上把持した場合であっても、力検出部53と力算出部28とにより、力を正しく検出することができる。さらに、力算出部28を設けることで、複数のロボットアーム5A,5Bのうちの片方のロボットアーム5A又は5Bを把持して操作するだけで、把持していないロボットアーム5B又は5Aの動作を補正することが可能となる。さらに、人4が高齢者又は子供である場合に、補正すべき力が不足している場合であっても、算出方法を「合算」とすることで、より大きな力を加えることが可能となる。また、子供と大人がそれぞれ把持している場合には、「算出方法」として「最大」を力算出部28で選択することで、子供が加えた力よりも大人が加えた力を優先して設定することができる。また、人4が1人で両手を使って操作をしている場合に、「算出方法」として「最大」を力算出部28で選択することで、力を強く加えることができる利き腕の力を、利き腕でない腕の力よりも優先して設定することができる。さらに、複数個所を把持している場合に、急激な力を加えて危険な状態になることを防ぐために、「算出方法」として「最小」若しくは「平均」若しくは「重み付け」を選択することで、より安全に操作をすることが可能となる。
なお、この例では、「算出方法」を「合算」としたが、どの算出方法を選ぶかをデータ入力IF26などで人4が入力しても良い。その場合には、データ入力IF26で入力された「算出方法」のフラグに「1」を設定する。また、操作する人4の状態(例えば高齢者又は子供など)により、例えば図26Bのように、ID1〜ID3を、適宜、切り替えて算出しても良い。この場合、データ入力IF26を使用して、「高齢者」若しくは「子供」かどうかを識別するIDを入力するか、若しくは、年齢を入力し、65歳以上であれば「高齢者」と判断し、15歳以下であれば「子供」と力算出部28で判断することにより、人が高齢者若しくは子供であることを検出することができる。
なお、前記第1〜第3実施形態では、ロボットアーム5を例に説明したが、本発明は、アームに限らず、車輪により動く移動ロボット、又は、2足歩行ロボット、多足歩行ロボットなどにも適用することができ、移動ロボットなどと人間との接触に関して同様の効果を発揮する。
なお、前記第1〜第3実施形態においては、動作情報取得部の一例として動作情報データベース17を説明しているが、動作情報取得部としては、データベースに限定されるものではなく、前記ロボットアームの前記動作に関する動作情報を取得する機能を有するものならば、サーバーなどの別の装置に記憶されているデータベースからネットワークンなどを使用して前記情報を取得可能な手段で構成するようにしてもよい。
また、前記第1〜第3実施形態においては、特性情報取得部の一例として力検出部特性データベース18を説明しているが、特性情報取得部としては、データベースに限定されるものではなく、前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持て前記ロボットアームによる前記作業を行うときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する機能を有するものならば、サーバーなどの別の装置に記憶されているデータベースからネットワークンなどを使用して前記情報を取得可能な手段で構成するようにしてもよい。
さらに、前記様々な実施形態のうちの任意の実施形態を適宜組み合わせることにより、それぞれの有する効果を奏するようにすることができる。
本発明は、家庭用ロボットなど人とロボットが協調して作業を行う際のロボットアームの動作の制御を行なうロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路として有用である。また、家庭用ロボットに限らず、産業用ロボット、又は、生産設備等における可動機構のロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路としても適用が可能である。
本発明は、添付図面を参照しながら好ましい実施形態に関連して充分に記載されているが、この技術の熟練した人々にとっては種々の変形又は修正は明白である。そのような変形又は修正は、添付した請求の範囲による本発明の範囲から外れない限りにおいて、その中に含まれると理解されるべきである。
本発明は、ロボットの動作を生成、教示するためのロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路に関する。
近年、介護ロボット又は家事支援ロボットなどの家庭用ロボットが盛んに開発されるようになってきた。家庭ロボットは産業用ロボットと異なり、家庭の素人が操作するため、簡単に動作を教示できる必要がある。さらに、ロボットが作業する際の動作環境も、家庭に応じて様々であるため、家庭環境に柔軟に対応する必要がある。
ロボット装置の教示方法の一例として、ロボットの手首などに力センサを装着し、力センサの先に装着されたハンドルを教示者が直接把持して、ロボットを教示点に誘導し、ロボットの位置の教示を行っている(特許文献1を参照)。
しかしながら、特許文献1においては、全ての教示点を教示者が教示する必要があるため、教示に時間がかかり、非常に面倒であった。さらに、産業用分野にて、教示した動きの一部を修正する場合に、ティーチングペンダントと呼ばれる遠隔装置により、プログラミングにより修正するか、若しくは、全ての動作を一から教示しなければならず、効率が悪かった。
特に、家庭用ロボットでは、できるだけ教示する時間を短くする必要がある。さらに、ティーチングペンダンドなどの遠隔装置でのプログラミングの併用は、操作ステップが増大し、プログラミング言語の習得が必要となり、家庭の素人には困難である。
また、家庭環境は時々刻々と変化しており、全ての環境変動を教示時に予測しておくことは難しく、また、多くのセンサーを搭載して検出できたとしても、検出精度が100%ではない場合は、誤作動を起こす場合がある。
また、産業ロボットでは、ロボットの動作を教示する教示作業とロボットが実際に作業する本作業とは明確に分けて行っているが、家庭用ロボットでは、家庭の素人が操作するために、教示作業と本作業を分けて操作するのは難しく、面倒であった(特許文献1参照)。
そこで、動作中のロボットに対して、人が状況の認識を行い、その都度、それをロボットに伝達することで、教示を意識させずに操作ができ、また、教示時に予期していない環境の変動が起こった場合にでも、その都度、人が教示することでロボットを動作させることが可能となる。
例えば、拭き掃除作業は、汚れのある面に対して、ある力をかけて汚れを擦る作業である。ロボットにより拭き掃除作業を実行している最中に、人が汚れのひどい箇所を確認し、人がロボットを直接把持して強めに拭き掃除をするよう、力のかけ具合を指示すると、ロボットは強めに拭き掃除作業をするよう動作を制御して作業を行う。
拭き掃除作業は、ある力をかけて汚れを擦る作業であるので、ロボットは、位置を目標値にして制御するよりは、力を目標値にして制御する方が、精度良く作業を行うことが可能である。このような作業では、力を目標値にして作業を行っているため、例えば人がロボットを直接把持して強めに拭き掃除をするように力のかけ具合を指示した場合、人が加えた力が人からの力なのか、あるいは接触面(汚れ面)からの抗力などの外乱なのかの区別がつかないという課題がある。
更に、人が加えた力を検出するために、ロボットアームに力センサなどを搭載した場合、産業用ロボットでは、ロボットのどこを把持して教示するかは、ロボットアームに具備された持ち手(ハンドル部分)など予め決まっており、そのハンドル部分に力センサなどを搭載して、人が加えた力を計測している。しかしながら、図18に示すように家庭内においては、(a)持ち手部分に障害物99などがあり、持ち手以外を人が把持して操作する場合、(b)複数の人が同時に操作する場合、(c)人が両手を使って複数箇所を把持してしまう場合などには、人が加えた力を正しく検出することができない。
本発明の目的は、このような課題に対して、予測できない環境の変動があっても、作業者が簡単に短時間でロボットの教示を行うことが可能なロボット制御を実現できる、ロボットアームの制御装置及び制御方法、ロボット、ロボットアームの制御プログラム、並びに、集積電子回路を提供する。
前記の目的を達成するために、本発明は以下のように構成する。
本発明の第1態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御装置であって、
前記ロボットアームの前記動作に関する動作情報を取得する動作情報取得部と、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を検出する把持位置検出部と、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する特性情報取得部と、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を切り替える制御方法切替部と、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する動作補正部とを備えて、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御装置を提供する。
本発明の第10態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御方法であって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御方法を提供する。
本発明の第12態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御プログラムであって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出するステップと、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得するステップと、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替えるステップと、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正するステップと、前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するステップとをコンピュータに実行させるためのロボットアームの制御プログラムを提供する。
本発明の第13態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームを制御する集積電子回路であって、
前記ロボットアームの前記動作に関する情報である動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの集積電子回路を提供する。
以上述べたように、本発明のロボットアームの制御装置及びロボットによれば、動作情報取得部と、把持位置検出部と、特性情報取得部と、制御方法切替部と、動作補正部とを有することにより、人がロボットアームのどの部分を把持しても、動作情報で記述されたロボットの動作を、簡単に動作を補正することができるロボット制御が可能となる。すなわち、人のロボットアームの把持位置と力の検出の有無の情報及び抗力の影響の有無に関する情報とを含む特性情報に基づき前記ロボットアームの制御方法を切り替えるとともに、動作情報に基づいてのロボットアーム動作中に、把持位置と特性情報とに応じて制御方法切替部で制御方法を切り替えた後、人の操作に応じて動作情報の力に関する情報を動作補正部で補正することができる。
また、本発明のロボットアームの制御方法、ロボットアームの制御プログラム、及び、集積電子回路によれば、ロボットアームの動作中に、人のロボットアームの把持位置と力の検出の有無の情報及び抗力の影響の有無に関する情報とを含む特性情報に基づきロボットアームの制御方法を制御方法切替部で切り替えた後、人がロボットアームのどの部分を把持しても、人の操作に応じて動作情報の力に関する情報を動作補正部で補正することができるロボット制御が可能となる。
本発明のこれらと他の目的と特徴は、添付された図面についての好ましい実施形態に関連した次の記述から明らかになる。
図1は、本発明の第1実施形態におけるロボット制御装置の構成の概要を示す図である。
図2は、本発明の前記第1実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図である。
図3は、本発明の前記第1実施形態における前記制御装置の制御部の構成を示すブロック図である。
図4Aは、本発明の前記第1実施形態における前記制御装置における前記ロボットアームの座標系に関する図である。
図4Bは、本発明の前記第1実施形態における前記制御装置における前記ロボットアームの座標系に関する図である。
図4Cは、本発明の前記第1実施形態における前記制御装置における前記ロボットアームの座標系に関する図である。
図5は、前記第1実施形態における前記ロボット制御装置の動作情報データベースの動作情報の一覧表を説明する図である。
図6は、前記第1実施形態における前記ロボット制御装置の動作情報データベースのフラグの情報を説明する図である。
図7は、前記第1実施形態における前記ロボット制御装置の動作情報データベースの補正パラメータフラグに関する情報を説明する図である。
図8は、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図9Aは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
図9Bは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
図10は、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図11は、本発明の前記第1実施形態における前記ロボット制御装置の制御方法切替部の動作ステップを表すフローチャートである。
図12Aは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図12Bは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図12Cは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図13は、本発明の前記第1実施形態における前記ロボット制御装置の動作状態を示す図である。
図14は、本発明の前記第1実施形態における前記ロボット制御装置の動作状態を示す図である。
図15は、本発明の前記第1実施形態における前記ロボット制御装置の制御部の動作ステップを表すフローチャートである。
図16Aは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図16Bは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図17は、本発明の前記第1実施形態における前記ロボット制御装置の動作補正部と動作指令部と動作記憶部と制御方法切替部と把持位置検出部と制御パラメータ管理部との動作ステップを表すフローチャートである。
図18は、本発明の第2実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図19は、本発明の前記第2実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図である。
図20Aは、本発明の前記第2実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
図20Bは、本発明の前記第2実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
図20Cは、本発明の前記第2実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
図21Aは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図21Bは、本発明の前記第1実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図22Aは、本発明の第3実施形態におけるロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図22Bは、本発明の前記第3実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図22Cは、本発明の前記第3実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図22Dは、本発明の前記第3実施形態における前記ロボット制御装置の動作及び人のロボットアームの操作状態を示す図である。
図23は、本発明の前記第3実施形態におけるロボットシステムを構成する前記制御装置と制御対象であるロボットアームの詳細構成を示す図である。
図24は、本発明の前記第3実施形態における前記ロボット制御装置の動作情報データベースの動作情報の一覧表を説明する図である。
図25Aは、本発明の前記第3実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
図25Bは、本発明の前記第3実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
図26Aは、本発明の前記第3実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
図26Bは、本発明の前記第3実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
図26Cは、本発明の前記第3実施形態における前記ロボット制御装置の力算出部で使用する力算出方法テーブルの一覧表を説明する図である。
図27Aは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部の1つの構成例を説明する図である。
図27Bは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部の別の構成例を説明する図である。
図28は、本発明の前記第1実施形態における前記ロボット制御装置においてロボットアームに対する人のロボットアームの操作状態を示す図である。
図29は、本発明の前記第1実施形態における人のロボットアームの操作状態を示す図である。
図30Aは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
図30Bは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
図31Aは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
図31Bは、本発明の前記第1実施形態における前記ロボット制御装置の力検出部特性データベースの一覧表を説明する図である。
以下に、本発明にかかる実施の形態を図面に基づいて詳細に説明する。
以下、図面を参照して本発明における実施形態を詳細に説明する前に、本発明の種々の態様について説明する。
本発明の第1態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御装置であって、
前記ロボットアームの前記動作に関する動作情報を取得する動作情報取得部と、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を検出する把持位置検出部と、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する特性情報取得部と、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を切り替える制御方法切替部と、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正する動作補正部とを備えて、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御装置を提供する。
本発明の第2態様によれば、前記ロボットアームに外部から加えられた力を検出する力検出部をさらに備え、
前記特性情報取得部は、前記ロボットアームに前記外部から加えられた力を前記力検出部で検出する際に、前記特性情報のうちの前記人が把持した際の前記接触面からの抗力の影響の有無に関する情報を取得し、
前記動作補正部は、前記動作情報で前記ロボットアームの前記動作中に、前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作として、前記力検出部で検出された前記力に応じて、前記動作情報の力に関する情報を補正することを特徴とする第1の態様に記載のロボットアームの制御装置を提供する。
本発明の第3態様によれば、前記制御方法切替部は、
(I)前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
(II)前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
(III)前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法とのいずれか1つの制御方法に切り替え、
前記力検出部は、前記(I)の制御方法の場合には、前記ロボットアームが移動している最中の前記力を検出するか、若しくは、前記ロボットアームが移動後に前記接触面に前記ロボットアームが直接的に又は間接的に衝突して前記ロボットアームが移動を停止した状態で前記力を検出するかのいずれかの方法で検出し、前記(II)の制御方法及び前記(III)の制御方法の場合には、前記人が前記力を前記ロボットアームに加えた段階で前記力を検出することを特徴とする第2の態様に記載のロボットアームの制御装置を提供する。
本発明の第4態様によれば、前記制御方法切替部は、
(I)前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合で且つ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範囲内であるという情報を含む場合は、前記切り替え前の制御方法で前記ロボットアームの前記動作を制御するか、若しくは、前記人が前記ロボットアームに加えた力で移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
(II)前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合でかつ前記人の前記把持位置で前記ロボットアームに加わる力が前記力検出部の検出可能範囲内であるという情報を含む場合は、前記人が前記ロボットアームに力を加えても前記ロボットアームが移動して接触面に直接的に又は間接的に接触しないように前記ロボットアームの前記動作を制御する制御方法に切り替え、
(III)前記特性情報が、前記接触面からの抗力の影響が無いとの情報を含む場合でかつ前記人の前記把持位置が前記力検出部の検出可能範囲外であるという情報を含む場合は、前記人が前記ロボットアームに加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法に切り替えることを特徴とする第3の態様に記載のロボットアームの制御装置を提供する。
本発明の第5態様によれば、前記把持位置検出部で、前記把持位置を複数検出した場合には、それぞれの把持位置と前記力検出部の特性とに応じて、
前記制御方法切替部は、
(I)前記人が加えた力で前記ロボットアームが移動するように前記ロボットアームの前記動作を制御する制御方法と、
(II)前記人が前記ロボットアームに力を加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法と、
(III)前記切り替え前の制御方法で前記ロボットアームの前記動作を制御する制御方法と、
のいずれか1つの制御方法を順次切り替え、前記力検出部はそれぞれの制御方法で前記力を検出し、
それぞれの前記把持位置により前記力検出部で検出した複数の値に基づいて、前記人が前記ロボットアームに加えた力の値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した力の値で、前記動作情報データベースの前記動作情報を補正することを特徴とする第3の態様に記載のロボットアームの制御装置を提供する。
本発明の第6態様によれば、前記力算出部は、
(I)前記力検出部で検出した複数の値を合算して算出する方法と、
(II)前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
(III)前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
(IV)前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか1つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された前記動作情報の力に関する情報を補正することを特徴とする第5の態様に記載のロボットアームの制御装置を提供する。
本発明の第7態様によれば、複数のロボットアームを備え、
前記把持位置検出部は、前記複数のロボットアームのうち、いずれのロボットアームを前記人が把持しているかどうかを検出し、
前記人が前記複数のロボットアームのうちの一方のロボットアームを把持している場合には、その一方のロボットアームに具備された前記力検出部で前記力を検出し、
さらに、前記力検出部で検出した値から、前記人が把持していない他方のロボットアームを補正する値を算出する力算出部を備え、
前記動作補正部は、前記力算出部で算出した値で、前記動作情報取得部で取得された前記動作情報を補正することを特徴とする第2又は3の態様に記載のロボットアームの制御装置を提供する。
本発明の第8態様によれば、前記力算出部は、
(I)前記力検出部で検出した複数の値を合算して算出する方法と、
(II)前記力検出部で検出した前記複数の値のうちの最小値を算出する方法と、
(III)前記力検出部で検出した前記複数の値のうちの最大値を算出する方法と、
(IV)前記力検出部で検出した前記複数の値をそれぞれ重み係数を乗じて合算して算出する方法と、
のいずれか1つの算出方法で、前記人が前記ロボットアームに加えた力の値を算出し、
前記動作補正部は、前記力算出部で算出した値に基づいて、前記動作情報取得部で取得された、全てのロボットアームの前記動作情報を補正することを特徴とする第7の態様に記載のロボットアームの制御装置を提供する。
本発明の第9態様によれば、前記制御方法切替部は、前記人が力を前記ロボットアームに加えても前記ロボットアームが移動しないように前記ロボットアームの前記動作を制御する制御方法に切り替えた場合に、切り替え前の制御方法と前記切り替え後の制御方法を交互に切り替え、
前記力検出部は、前記切り替え後の制御方法に切り替えたときに、前記力を検出することを特徴とする第3の態様に記載のロボットアームの制御装置を提供する。
本発明の第10態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御方法であって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの制御方法を提供する。
本発明の第11態様によれば、前記ロボットアームと、
前記ロボットアームの前記動作を制御する第1〜8のいずれか1つの態様に記載のロボットアームの制御装置とを有することを特徴とするロボットを提供する。
本発明の第12態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームの制御プログラムであって、
前記ロボットアームの前記動作に関する動作情報を動作情報取得部で取得するステップと、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出するステップと、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得するステップと、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替えるステップと、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で前記制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正するステップと、前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御するステップとをコンピュータに実行させるためのロボットアームの制御プログラムを提供する。
本発明の第13態様によれば、ロボットアームの動作を制御して前記ロボットアームによる作業を行うロボットアームを制御する集積電子回路であって、
前記ロボットアームの前記動作に関する情報である動作情報を動作情報取得部で取得し、
人が前記ロボットアームを把持したときの前記人の前記ロボットアームの把持位置を把持位置検出部で検出し、
前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持して前記ロボットアームを操作するときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を特性情報取得部で取得し、
前記把持位置検出部で検出された前記把持位置と、前記特性情報取得部で取得された前記特性情報とに応じて前記ロボットアームの制御方法を制御方法切替部で切り替え、
前記動作情報取得部で取得された前記動作情報に基づいての前記ロボットアームの前記動作中に、前記把持位置と前記特性情報とに応じて前記制御方法切替部で制御方法を切り替えた後、前記人の操作に応じて、前記動作情報取得部で取得された前記動作情報の力に関する情報を動作補正部で補正し、
前記動作補正部により補正された前記動作情報に基づいて、前記ロボットアームの前記動作を制御することを特徴とするロボットアームの集積電子回路を提供する。
以下、本発明の実施の形態について図面を用いて詳細に説明する。
(第1実施形態)
まず、本発明の第1実施形態におけるロボットアームの制御装置を備えるロボットシステム1の構成について説明する。図1及び図2は、本発明の第1実施形態におけるロボットアーム5及びその制御装置70を備えるロボットシステム1の概要を示す図である。
図1に示すように、ロボットシステム1のロボットアーム5は、例えば家庭内のキッチン又はテーブルなどの作業台7の壁面7aに設置される。ロボットアーム5の基端5aが壁面7aに固定されたレール8に対して移動可能な状態で支持され、ロボットアーム5がレール8上に沿って横方向(例えば水平方向)に、人4の力により、移動可能としている。
ロボットシステム1は、例えばロボットアーム5を使用してキッチンの汚れ91をふき取る作業又は鍋底をかき混ぜる作業などの家庭内においてロボットアーム5と人4とが協働して行う作業を行う。図1は、一例として、拭き掃除作業を行うロボットシステム1による作業の操作手順の一例を示す。
まず、人4がロボットアーム5を直接把持し、人4がロボットアーム5に力を加える。そして、人4からロボットアーム5に加えられた力により、ロボットアーム5がレール8に沿って移動し、IHクッキングヒーター又はガスコンロなどの調理装置6の付近までロボットアーム5が誘導される。
次に、人4が、ロボットアーム5の先端のハンド30に、拭き掃除作業のための掃除用具の一例としてのスポンジ46を取り付ける。
次に、調理装置6の側面などに配置されているロボットシステム1の操作盤13のボタン13aを人4が押すなどして、人4が、データ入力IF26を使用することにより、ロボットアーム5に動作開始指令を入力すると、ロボットアーム5が作動し、予め選択された作業(ここでは拭き掃除作業)を開始させる。
ロボットアーム5がハンド30で把持した掃除用具46による調理装置6の拭き掃除を実施しているときに、拭き掃除を実施している場所とは異なる場所でかつ人4が汚れのひどい部分91aを見つけて、人4の手4aでロボットアーム5を直接把持してロボットアーム5に力を加えてその部分91aまでロボットアーム5を移動させ(図29の場合は矢印(1)の方向)る。そして、さらに、汚れのひどい部分91aで、補正したい方向(図29の場合は矢印(2)の方向)に人4の手4aでロボットアーム5に力を加えることで、ロボットアーム5に対して動作を補正させるための補正指令を入力して、ロボットアーム5の動作を、強めに拭き掃除作業をするように補正する(図29参照)。
レール8は、作業台7の壁面7aに配置したが、壁面の無いアイランドキッチンの場合は、天井面又はアイランドキッチンの天板側面など作業をするのに適した場所に設置することができる。
さらに、操作盤13は、調理装置6の側面に固定したが、操作盤13に代えて、遠隔操作が可能なリモコンでも良い。
図2はロボットシステム1を構成する、制御対象であるロボットアーム5と、ロボットアーム5の制御装置70との詳細構成を示す図である。ロボットアーム5の制御装置70は、図2に示すように、把持位置検出部23と、ロボットアーム5の動作を生成する動作生成装置12と、制御装置本体部11と、周辺装置14とを備えている。
−ロボットアーム−
この第1実施形態のロボットアーム5は、一例として6自由度の多リンクマニピュレータで構成される多関節ロボットアームとする。ロボットアーム5は、ハンド30と、ハンド30が取り付けられている手首部31を先端32aに有する前腕リンク32と、前腕リンク32の基端32bに回転可能に先端33aが連結される上腕リンク33と、上腕リンク33の基端33bが回転可能に連結支持される台部34とを備えている。台部34は、移動可能なレール8に連結されているが、一定位置に固定されていても良い。手首部31は、第4関節部38と、第5関節部39と、第6関節部40との3つの回転軸を有しており、前腕リンク32に対するハンド30の相対的な姿勢(向き)を変化できる。すなわち、図2において、第4関節部38は、手首部31に対するハンド30の横軸(ψ)周りの相対的な姿勢を変化できる。第5関節部39は、手首部31に対するハンド30の、第4関節部38の横軸とは直交する縦軸(Φ)周りの相対的な姿勢を変化させることができる。第6関節部40は、手首部31に対するハンド30の、第4関節部38の横軸(ψ)及び第5関節部39の縦軸(Φ)とそれぞれ直交する横軸(θ)周りの相対的な姿勢を変化できる。前腕リンク32の他端は、上腕リンク33の先端に対して第3関節部37周りに、すなわち、第4関節部38の横軸と平行な横軸周りに回転可能とする。上腕リンク33の他端は、台部34に対して第2関節部36周りに、すなわち、第4関節部38の横軸と平行な横軸周りに回転可能とする。さらに、台部34の上側可動部34aは、台部34の下側固定部34bに対して第1関節部35周りに、すなわち、第5関節部39の縦軸と平行な縦軸周りに回転可能としている。
この結果、ロボットアーム5は、合計6個の軸周りに回転可能として前記6自由度の多リンクマニピュレータを構成している。
各軸の回転部分を構成する各関節部には、モータ43のような回転駆動装置と、モータ43の回転軸の回転位相角(すなわち関節角)を検出するエンコーダ44とを備えている。この第1実施形態のモータ43は、ロボットアーム5の各関節部の内部に配設されている。モータ43は、各関節部を構成する2つのリンク部材のうちの一方のリンク部材に備えられる後述するモータドライバ25により駆動制御される。各関節部の一つのリンク部材の関節部に備えられたモータ43の回転軸が、他のリンク部材に連結されて、前記回転軸を正逆回転させることにより、前記他のリンク部材を前記一つのリンク部材に対して各軸周りに回転可能とする。
41は台部34の下側固定部34bに対して相対的な位置関係が固定された絶対座標系であり、42はハンド30に対して相対的な位置関係が固定された手先座標系である。絶対座標系41から見た手先座標系42の原点位置Oe(x,y,z)をロボットアーム5の手先位置(ハンド30の位置)とし、絶対座標系41から見た手先座標系42の姿勢をロール角とピッチ角とヨー角で表現した(φ,θ,ψ)をロボットアーム5の手先姿勢とし、手先位置及び姿勢ベクトルをベクトルr=[x,y,z,φ,θ,ψ]Tと定義する。
この第1実施形態では、絶対座標系35のZ軸を回転軸として、座標系を角度φだけ回転させた座標系を考え(図4A参照)、このときの座標軸を[X',Y',Z]とする。次に、この座標系を、Y'を回転軸として角度θだけ回転させ(図4B参照)、このときの座標軸を[X'',Y',Z'']とする。最後に、この座標系を、X''を回転軸として角度ψだけ回転させ(図4C参照)、このときの座標系の姿勢をロール角度φ、ピッチ角度θ、ヨー角度ψとし、このときの姿勢ベクトルは(φ,θ,ψ)となる。姿勢(φ,θ,ψ)の座標系が原点位置を手先座標系42の原点位置Oe(x,y,z)に平行移動した座標系と、手先座標系42が一致する場合、手先座標系の姿勢ベクトルは(φ,θ,ψ)であるとする。
ロボットアーム5の手先位置及び姿勢を制御する場合には、手先位置及び姿勢ベクトルrを後述する目標軌道生成部55で生成された手先位置及び姿勢目標ベクトルrdに追従させることになる。
力センサなどの力検出部53は、人4などからロボットアーム5に加わる力を検出する。具体的には、力検出部53に加わる3方向(x,y,z方向)と姿勢方向(φ,θ,ψ方向)の6軸の方向別に力を検出する。
なお、力検出部53の1つの構成例として、図27Aに示すように、操作用の力センサ53aと後述する力制御用の力センサ53bを搭載していた場合は、それぞれの力センサ53a,53bに加わる力を力検出部53として検出する。
また、力検出部53の別の構成例として、図27Bに示すように、各関節部にトルクセンサ53c,53d,53eを搭載していた場合、力検出部53には、モータドライバ25の電流センサで計測されたロボットアーム5の各関節部を駆動するモータ43を流れる電流値i=[i1,i2,i3,i4,i5,i6]Tが入出力IF24を介して取り込まれて力検出部53として力を検出する。また、各エンコーダ44で計測された関節角の現在値qが入出力IF24を介して取り込まれるとともに、後述する近似逆運動学計算部57からの関節角度誤差補償出力uqeが取り込まれる。力検出部53は、オブザーバーとして機能し、以上の電流値iと、関節角の現在値qと、関節角度誤差補償出力uqeとより、ロボットアーム5に加わる外力により各関節部に発生するトルクτextを算出する。そして、Fext=Jv(q)−Tτext−[0,0,mg]Tによりロボットアーム5の手先における等価手先外力Fextに換算して、この等価手先外力Fextをインピーダンス計算部51に出力する。ここで、Jv(q)は、
を満たすヤコビ行列である。ただし、v=[vx,vy,vz,ωx,ωy,ωz]Tであり、(vx,vy,vz)は手先座標系42におけるロボットアーム5の手先の並進速度、(ωx,ωy,ωz)が手先座標系42におけるロボットアーム5の手先の角速度となる。また、mはハンド30で把持している把持物体の重さであり、gは重力加速度である。把持物体の重さmの値は、その物体を把持する前に、人4が入出力IF24を介して力検出部53に入力することができる。また、ロボットアーム5のハンド30により物体の把持を実際に行い、そのときの力検出部53の等価手先外力Fextの推定結果より把持物体の重さmの値を算出することも可能である。
後述するロボットアーム5の動作を制御するため、動作生成装置12と、制御装置本体部11と、周辺装置14とのそれぞれの動作が実行されることにより、ロボットアーム5の各関節部の、後述するエンコーダ44より出力される各関節角度情報が、入出力IF24のカウンタボードを通じて制御装置本体部11に取り込まれ、取り込まれた各関節角度情報に基づき制御装置本体部11によって各関節部の回転動作での制御指令値が算出される。算出された各制御指令値は、入出力IF24のD/Aボードを通じて、ロボットアーム5の各関節部を駆動制御するためのモータドライバ25に与えられ、モータドライバ25から送られた各制御指令値に従って、ロボットアーム5の各関節部のモータ43が駆動される。また、モータドライバ25により駆動制御されるハンド駆動装置の一例としてハンド駆動用のモータ62と、ハンド駆動用のモータ62の回転軸の回転位相角を検出するエンコーダ61とを、さらに、ハンド30に備えて、エンコーダ61で検出された回転角度情報が、入出力IF24のカウンタボードを通じて制御装置本体部11に取り込まれ、取り込まれた回転角度情報を基に、制御装置本体部11の制御部22のハンド制御部54(図3に図示)によってハンド30の開閉動作での制御指令値が算出される。算出された制御指令値は、入出力IF24のD/Aボードを通じて、ハンド30の開閉駆動も行うモータドライバ25に与えられ、モータドライバ25から送られた各制御指令値に従って、モータ62の回転を駆動制御して、ハンド駆動用のモータ62の回転軸を正逆回転させることにより、ハンド30を開閉させる。
制御装置本体部11及び動作生成装置12及び周辺装置14及び把持位置検出部23は、一例として、それぞれ一般的なパーソナルコンピュータにより構成される。
−把持位置検出部−
23は把持位置検出部であり、人4がロボットアーム5を把持するとき、人4がロボットアーム5のどの部分(どの位置)を把持して操作しているかを検出する(人4のロボットアーム5の把持位置を検出する)。具体的には、カメラなどの画像撮像装置19の画像データより、操作している人4の手4aの画像認識を把持位置検出部23で行い、その手4aが、ロボットアーム5の前腕リンク32か上腕リンク33かハンド30のいずれを把持して操作しているかを把持位置検出部23で検出する。
(動作生成装置12)
動作生成装置12は、動作情報取得部の一例として機能する動作情報データベース17と、特性情報取得部の一例として機能する力検出部特性データベース18と、動作指令部27と、動作補正部20と、動作記憶部15と、制御方法切替部16とを有するように構成される。動作補正部20と制御パラメータ管理部21との間では、ロボットアーム5の手先位置及び姿勢の情報と、人4の加えられた力の情報と、動作指令などが入出力される。制御パラメータ管理部21により、ロボットアーム5の手先位置及び姿勢と人4からロボットアーム5に加えられた力の情報などが動作記憶部15に出力される。なお、動作生成装置12における各制御モード(i)位置制御モード、(ii)インピーダンス制御モード、(iii)力制御モード)の詳細については、制御装置本体部11の制御パラメータ管理部21にて後述する。
−動作情報データベース−
動作情報データベース17は、動作指令部27との間で動作情報が入出力されるとともに、動作補正部20との間で動作情報が入出力され、動作記憶部15により種々の動作情報が入力され記憶される。
次に、動作情報データベース17の詳細について説明する。
動作情報データベース17は、例えば、図5に示したロボットアーム5の動作に関する情報(動作情報)が動作記憶部15により記憶される。動作情報の具体データ例として、以下に示す。
(1)作業を識別する作業ID番号(図5の「作業ID」の欄参照)。
(2)作業の中の個々の動作を識別する動作ID番号(図5の「動作ID」の欄参照)。
(3)動作におけるロボットアーム5の手先位置及び姿勢に関する情報(図5の「位置姿勢」の欄参照)。
(4)ロボットアーム5が作業をする際に対象となる物体に加える力に関する情報(図5の「力」の欄参照)。
(5)ロボットアーム5の手先位置、姿勢、及び力のパラメータのうちのいずれの情報が有効か否かを示すフラグに関する情報(図5の「フラグ」の欄参照)。
(6)ハンド30が開閉しているか否かのハンド開閉状態を表す情報(図5の「ハンド」の欄参照)。
(7)各動作が作用する時間に関する情報(図5の「時間」の欄参照)。
(8)動作補正部20による動作情報データベース17の動作情報を補正する際の補正すべきパラメータの種別に関する情報(図5の「補正パラメータフラグ」の欄参照)。
(9)ロボットアーム5の動作が実行中か否かを示す進捗情報(図5の「進捗情報」の欄参照)。
ここで、作業IDは、作業に関する情報を識別するために用いられる符号であり、動作IDは、動作に関する情報を識別するために用いられる符号である。
図5の動作情報データベース17の「位置姿勢」、すなわち、ロボットアーム5の手先位置及び姿勢に関する情報は、前述したロボットアーム5の手先位置及び姿勢を表し、原点位置Oeの座標及び姿勢から、(x,y,z,φ,θ,ψ)と表す。
力に関する情報は、ロボットアーム5が作業をする際に対象となる物体に加える力に関する情報を示し、力のx、y、z、φ、θ、ψ方向の成分を(fx,fy,fz,fφ,fθ,fψ)と表す。例えば、fz=5[N]である場合は、z軸方向に5[N]の力を加えて、作業することを表す。具体的には、IHクッキングヒータ6などの天板を拭き掃除作業する際に、天板の表面に力を加えて擦る場合などに使用する。
図5の動作情報データベースの「フラグ」に関する情報は、各「動作ID」が示す動作情報に基づくロボットアーム5の手先位置及び姿勢及び力のうちのいずれの情報が有効かを示す値である。具体的には、図6で示した32ビットの数値で表す。図6において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値が有効の場合は「1」とし、手先位置及び姿勢及び力のそれぞれの値が無効の場合は「0」とする。例えば、0ビット目において、ロボットアーム5の手先位置のx座標の値が有効の場合は「1」とし、無効の場合は「0」とする。また、1ビット目において、ロボットアーム5の手先位置のy座標の値が有効の場合は「1」とし、無効の場合は「0」とする。また、2ビット目において、ロボットアーム5の手先位置のz座標の値が有効の場合は「1」とし、無効の場合は「0」とする。以後、順次、3,4,5ビット目は姿勢のφ、θ、ψの有効性を表す(すなわち、有効の場合は「1」とし、無効の場合は「0」とする。)。さらに、6ビット目〜11ビット目においては、力のそれぞれの成分が有効か無効かを示す(すなわち、有効の場合は「1」とし、無効の場合は「0」とする。)。また、フラグに関する情報は、将来の拡張用に多め(32ビット)に用意しているため、この例では12ビット目から31ビット目は使用しないので、「0」を入れておくが、12ビットのみ格納できる変数としても良い。図6では、0ビット目から1ビット目、及び3ビット目から5ビット目、及び8ビット目が「1」となっているので、動作情報の手先位置及び姿勢情報としてx、y、φ、θ、ψ情報と力情報としてfzのみが有効であることを示している。この結果、動作情報のうち、2ビット目、6〜7ビット目、及び9〜11ビット目が「0」となっているので、z、fx、fy、fφ、fθ、fψの値にどういう値が記憶されていても無効であるとする。
図5の動作情報データベース17のハンド30が開閉しているか否かの情報である「ハンド」に関する情報は、ロボットアーム5の動作中のハンド30の開閉の有無を表すフラグとし、ハンド30が開いている場合は「0」と記載し、閉じている場合は「1」と記載する。
図5の動作情報データベース17の「時間」に関する情報は、ロボットアーム5の各動作を実行するための時間であり、この「動作ID」に記憶された動作を、ここでの「時間」に関する情報として記憶された時間をかけて行うことを表す。すなわち、絶対時刻ではなく、前の動作からの相対時間を表す。すなわち、「動作ID」が示す「位置及び姿勢」に、ロボットアーム5のハンド30が移動するまでの時間又は「動作ID」が示す「力」になるまでの時間を表す。
図5の動作情報データベース17の「補正パラメータフラグ」に関する情報は、後述する動作補正部20で、どのパラメータを補正するかを表す情報である。具体的には、図7に示した32ビットの数値で表す。図7において、それぞれのビットで、手先位置及び姿勢及び力のそれぞれの値の補正が可能な場合は「1」とし、手先位置及び姿勢及び力のそれぞれの値の補正が不可能な場合は「0」とする。例えば、0ビット目においては、手先位置のx座標の値の補正が可能な場合は「1」とし、手先位置のx座標の値の補正が不可能な場合は「0」とする。また、1ビット目においては、手先位置のy座標の値の補正が可能な場合は「1」とし、手先位置のy座標の値の補正が不可能な場合は「0」とする。また、2ビット目においては、手先位置のz座標の値の補正が可能な場合は「1」とし、手先位置のz座標の値の補正が不可能な場合は「0」とする。以後、順次、3,4,5ビット目は、姿勢のφ、θ、ψの補正可能性を表す(すなわち、補正が可能な場合は「1」とし、補正が不可能な場合は「0」とする。)。さらに、6ビット目〜11ビット目においては、力のそれぞれの成分の補正可能性を示す(すなわち、補正可能の場合は「1」とし、補正不可能の場合は「0」とする。)。また、フラグに関する情報は、将来の拡張用に多め(32ビット)に用意しているため、この例では、12ビット目から31ビット目は使用しないので、「0」を入れておくが、12ビットのみ格納できる変数としても良い。
図5の動作情報データベース17の「進捗情報」に関する情報は、現在実行中の動作であるかどうかを示す情報であり、実行中の動作である場合は「1」とし、実行中の動作でない場合は「0」として、動作記憶部15により動作情報データベース17に記憶する。具体的には、動作指令部27によって、作業が開始されると、その作業の各動作のうち、現在動作(実行)中の動作については「1」を動作記憶部15により記憶し、現在動作(実行)していない動作については「0」を動作記憶部15により記憶する。
-動作指令部-
動作指令部27には、人4がデータ入力IF26により指定された「作業ID」の作業の動作開始の指令が入力される。動作指令部27は、指定された「作業ID」の作業の動作開始の指令を受けて、指定された「作業ID」の作業の動作を開始させる。具体的には、動作情報指令部27により「動作ID」の「進捗情報」に「1」を設定し、動作記憶部15により動作情報データベース17に記憶する。その他の「動作ID」の「進捗情報」については「0」を動作指令部27に設定し、動作記憶部15により動作情報データベース17に記憶する。動作指令部27により指令された作業IDの作業の全ての動作は、「動作ID」の番号の小さいものから、順番に実行され、一番最後の動作まで実行されると、その「作業ID」の先頭の「動作ID」の動作に戻り、一連の動作を繰り返し実行する。
動作情報データベース17のロボットアーム5の手先の位置姿勢及び時間の情報は、例えば図8に示すようにロボットアーム5を人4が把持して、後述するインピーダンス制御モードにて、ロボットアーム5を移動させて、ある一定時間毎(例えば0.2msec毎)にロボットアーム5の手先位置及び姿勢の情報を取得し、時間と共に、動作記憶部15により動作情報データベース17に記憶して作成する。さらに、動作情報データベース17の力の情報は、データ入力IF26で加えたい力の値を入力して作成する。なお、図8において、3は調理器具の一例としての鍋、9はハンド30で把持されて鍋3をかき混ぜるための調理用具の一例としてのレードルである。
−力検出部特性データベース−
力検出部特性データベース18は、力検出部53(図3に図示)の特性を表す情報(特性情報)が記憶されており、図9Aに一例を示す。特性情報は、一例として、人4のロボットアーム5の把持位置に関する情報(図9Aの「把持位置ID」の欄参照)と、人4がロボットアーム5を把持した位置で力の検出ができるかどうかに関する情報(図9Aの「検出の有無」の欄参照)と、力検出の際に、接触面からの抗力の影響を受ける可能性があるかどうかに関する情報(図9Aの「抗力の影響の可能性の有無」の欄参照)とで構成される。
図9Aの「把持位置ID」に関する情報は、力検出部特性データベース18に記憶されている図9Bのテーブルにより、人4がロボットアーム5のどの部分を把持しているかの情報を示す。それぞれの「把持位置ID」に関する情報は、図9Bに示すテーブルにより決定する。具体的には、図2の上腕リンク33を把持している場合(図28の操作A)には、図9Bにより、「上腕」は「把持位置ID」が「1」となる。また、前腕リンク32を把持している場合(図28の操作B)には、図9Bにより、「前腕」は「把持位置ID」が「2」」となることが、力検出部特性データベース18から制御方法切替部16で検出される。同様に、手首部31を把持している場合には、図9Bにより、「手首」は「把持位置ID」が「3」となる。同様に、ハンド30を把持している場合(図28の操作C)には、図9Bにより、「ハンド」は「把持位置ID」が「4」となることが、力検出部特性データベース18から制御方法切替部16で検出される。
図9Aの「検出の有無」に関する情報は、それぞれの「把持位置ID」で示す把持位置を人4が把持して人4が把持位置で力を加えた場合に、力検出部53で検出可能である場合は「1」を設定し、力検出部53で検出不可能である場合は「0」を設定する。
図9Aの「抗力の影響の可能性の有無」に関する情報は、ロボットアーム5が所定の作業を行うとき例えばロボットアーム5がハンド30で直接的に接触面に接触した際又はロボットアーム5がハンド30で把持した物体などを介して間接的に接触面に接触した際に、力検出部53が接触面から抗力の影響を受ける可能性があるかどうかの情報である。具体的には、図10のようにロボットアーム5が、物体、例えば拭き掃除用具の一例としてのスポンジ46を把持して、IHクッキングヒータ又はガスコンロなどの調理装置6に力を加えて拭き掃除をしていると仮定する。この拭き掃除の最中に、人4がロボットアーム5を把持して力を加えた際の力を検出する場合に、力検出部53が接触面からの抗力の影響を受けて、力検出部53で正しく力を検出できない場合は、抗力の影響を受けるとし、「1」を設定する。逆に、力検出部53が接触面からの抗力の影響を受けずに、人4からの力を正しく検出できる場合は、「0」を設定する。
具体的な例としては、図10に示す例のように、手首部31にのみ力検出部53を設定しかつ、スポンジ46をハンド30で把持して拭き掃除をしている場合に、スポンジ46を介してハンド30が調理装置6に直接的に又は間接的に接触して調理装置6の天板から抗力の影響を受けると仮定する。このとき、さらに、人4の手4aでハンド30又は手首部31を把持した場合には、力検出部53で力検出が可能である。これに対して、人4の手4aでハンド30又は手首部31以外の部分を把持した場合でかつ力検出部53で力検出ができない。このような場合には、力検出部特性データベース18は図9Aのようになる。すなわち、設置した力検出部53は、抗力の影響を受ける可能性があるため、図9Aの「抗力の影響の可能性の有無」に関する情報は、把持位置に関わらず、全て「1」となる。さらに、力検出部53は、ハンド30又は手首部31で把持した場合には力検出が可能であるため、手首部31を示す「把持位置ID」が「3」の場合と、ハンド30を示す「把持位置ID」が「4」の場合の「検出の有無」は、それぞれ、「1」なる。同様に、上腕リンク33又は前腕リンク32を把持した場合には、人4が加えた力を直接検出できないために、上腕リンク33を示す「把持位置ID」が「1」の場合と前腕リンク32を示す「把持位置ID」が「2」の場合との「検出の有無」は、それぞれ、「0」となる。
図27Aのように、前腕リンク32においてる操作用の力センサ53aと力制御用の力センサ53bを搭載していた場合の力検出部特性データベース18は、図30Aとなる。図27Aに示すように、人4が前腕リンク32を操作した際に、人4からの力を図27Aの操作用の力センサ53aで直接検出することができることから、「把持位置ID」が「2」の場合(図30Bにより「前腕」を示す場合)の「検出の有無」は「1」となる。さらに、操作用の力センサ53aが調理装置6に直接的に又は間接的に接触しても抗力の影響を受けないとすると、「把持位置ID」が「2」の「抗力の影響の可能性の有無」は「0」となる。それ以外の把持位置については、図10の例と同様となるため、説明は省略する。
さらに、図27Bのように、ロボットアーム5の各関節部にトルクセンサ53c,53d,53eを搭載している場合には、ロボットアーム5のどの部分を把持して操作しても、人4が加えた力を検出できることから、図31A及び図31Bに示すように、全ての把持位置において、「検出の有無」が「1」となる。また、図27Bのトルクセンサ53c,53d,53eが、接触面からの抗力の影響を受けるようなセンサである場合には、全ての把持位置において、「抗力の影響の可能性の有無」は「1」となる。
以上のように、力検出部特性データベース18を力センサなどの力検出部53の特性に合わせて用意することで、後述する制御方法切替部16で制御方法を切り替えることが可能となる。
−動作補正部−
動作補正部20は、動作情報データベース17の位置と姿勢と力と時間との情報にて、(i)位置制御モード、(ii)インピーダンス制御モード、(iii)力制御モードと、それらを方向別に組み合わせた制御モードのうち、いずれかのモードでのロボットアーム5の動作中に、データ入力IF26から動作指令部27を介して動作補正部20で動作補正開始の指令を受ける。すると、動作補正部20は、制御方法切替部16により制御方法を切り替えた後、動作補正情報データベース18の動作補正情報に基づいて、人4がロボットアーム5に力を加えることで動作情報データベース17のロボットアーム5の動作情報を補正する機能を有している。なお、(i)、(ii)、(iii)のそれぞれの制御モードの詳細については、制御パラメータ管理部21の動作と共に後述する。
以下、動作補正部20の機能について説明する。
人4が、データ入力IF26により、動作情報データベース17の作業の中の「作業ID」に関する作業の中からロボットアーム5に実行させたい作業を選択して、選択情報を動作指令部27に入力して指定する。指定された作業について、動作指令部27は、動作補正部20に作業選択の指示を行う。動作補正部20は、動作情報データベース17の中から選択された「作業ID」の作業の動作情報(具体的には、位置の情報と姿勢の情報と時間の情報と力の情報)を、フラグに従って、制御モードを設定して動作するように、制御パラメータ管理部21へ指令を出す。
具体的には、図5の「作業ID」が「1」の作業が選択された場合は、「作業ID」が「1」でかつ「動作ID」が「1」の動作の場合には、「フラグ」が0、1、3、4、5ビット目が「1」なので、ロボットアーム5の手先位置のx、y、φ、θ、ψが有効ということを示している。よって、x、y、φ、θ、ψについては位置制御モードで動作させ、z軸については「フラグ」の8ビット目が「1」なので、力制御モードで動作するように、動作補正部20から制御パラメータ管理部21へ指令を出す。
以上により、図16Aに示すように、ロボットアーム5はIHクッキングヒータ6などの天板を拭き掃除作業を開始する。
IHクッキングヒータ6などの天板を拭き掃除動作をしているときに、人4が、IHクッキングヒータ6などの天板上の、拭き掃除動作をしている場所とは別の場所が汚れていること見つけ、かつ、ロボットアーム5に別の場所での拭き掃除動作をさせたいため、人4が、データ入力IF26にロボットアーム5を別の場所に移動させるように、データ入力IF26により補正開始の命令を動作指令部27に入力したとする。このとき、動作指令部27は、データ入力IF26からの補正開始の指令を受けて、動作補正部20に補正開始を出力する。
動作補正部20は、データ入力IF26からの補正開始の指令を受けて、動作情報データベース17の補正パラメータフラグにしたがって、制御モードを設定して動作するように、制御パラメータ管理部21へ指令を出す。具体的には、図5の「作業ID」が「1」の作業が動作中(進捗情報が「1」の動作)の「動作ID」の補正パラメータフラグが、図5では、8ビット目のみ「1」でその他は「0」なので、ロボットアーム5の動作のうち、z軸の力成分のみ補正が可能ということを表す。力成分を補正する場合には、その力成分を人4の加えた力で補正ができるように、力ハイブリッドインピーダンス制御モードの設定を行い、z軸方向の制御方法の切り替えの指令を動作補正部20から制御方法切替部16へ出力する。
人4がロボットアーム5を把持するとき、人4がロボットアーム5についてどこの部分を把持しているかを把持位置検出部23で検出し、検出結果を把持位置検出部23から制御方法切替部16へ入力する。すると、制御方法切替部16で制御方法を把持位置に応じて切り替えて、その制御方法で動作するように、制御方法切替部16が制御パラメータ管理部21へ指令を出す。
人4は、図16Bに示すように、汚れ91の付近を強めに力をかけて掃除するために、ロボットアーム5を人4が把持して、汚れのある部分91aに向かって人4からロボットアーム5に力を加える。加えた力の情報は、制御部22の力検出部53で検出し、制御パラメータ管理部21を介して、動作補正部20に入力される。動作補正部20では、現在動作中の「作業ID」の情報と「動作ID」の動作情報のうち、力制御で動作しているz軸の力成分の値を、入力された力成分の値に修正して補正する。
動作補正部20により、人4がロボットアーム5に加えた力で、ロボットアーム5の動作を補正し、ロボットアーム5のIHクッキングヒータ6を擦る力を強めて拭き掃除作業を行う。
以上により、動作補正部20は、動作情報データベース17の動作情報で動作している状態で、人4がロボットアーム5に力を加えることで、動作情報を補正することができるようになる。さらに、制御方法切替部16により、人4がロボットアーム5のどの部分を把持しても、人4が加えた力を正しく検出することができるようになる。
−制御方法切替部−
制御方法切替部16は、
(i)位置制御モードと、
(ii)インピーダンス制御モードと、
(iii)力制御モードと、
(iv)それらを方向別に組み合わせた制御モードと
のうち、いずれかのモードで動作中に動作補正部20からの指令を受けると、把持位置検出部23で検出された把持位置と力検出部特性データベース18に記憶された情報とに基づいて、人4がロボットアーム5を把持して力のパラメータを補正する際の制御方法を切り替える。なお、本発明では、一例として、制御方法を切り替えするか否かを制御方法切替部16で判断するとき、切り替え前(切り替えるか否かの判断前)の制御方法でロボットアーム5の動作を制御する制御方法に切り替える(結果的には、制御方法を変更しない)ときも、「制御方法に切り替える」と称する。
例えば、図10のように、手首部31に、力検出部53の一例としての力センサを配置した場合に、ロボットアーム5が(iii)の力制御モードで動作している最中に、(iv)の制御モードの一例としての力ハイブリッドインピーダンス制御モードで動作するよう指令を受けた場合の制御方法の切り替えについて、図11のフローチャートに示す。
まず、動作補正部20から(iv)の力ハイブリッドインピーダンス制御モードによる制御を行うように制御方法切替部16が指令を受けると、制御方法切替部16は、把持位置検出部23でロボットアーム5における人4の把持位置を検出して、検出した結果の情報を制御方法切替部16に入力する(ステップS1)。
次に、把持位置検出部23により検出された把持位置の力検出部53の抗力の有無に関する特性を、力検出部特性データベース18を使って、制御方法切替部16により検出する(ステップS2)。例えば、人4が前腕リンク32を把持している場合は、図9Bの力検出部特性データベース18の「前腕」を表す「把持位置ID」は「2」であることから、図9Aによれば、「把持位置ID」が「2」の場合の「抗力の影響の可能性の有無」は「1」であると、制御方法切替部16により検出する。同様に、人4がハンド30を把持している場合は、図9Bの[ハンド]を表す「把持位置ID」は「4」であることから、図9Aの「把持位置ID」が「4」の場合の、「抗力の影響の可能性の有無」は「1」であると、制御方法切替部16により検出する。これらの場合は、「抗力の影響の可能性の有無」は「1」である(抗力の影響が有る)ので、ステップS2ではYesとなり、ステップS3に進む。もし、「抗力の影響の可能性の有無」は「0」である(抗力の影響を受けない)ならば、ステップS2ではNoとなり、ステップS4に進む。
次に、ステップS3及びステップS4において、それぞれ、把持位置検出部23により検出された把持位置の力検出部53の検出の有無に関する特性を、力検出部特性データベース18を使って、制御方法切替部16により検出する(ステップS3、ステップS4)。このステップS3及びステップS4において、「検出の有無」は「1」である場合(力検出部53で検出可能である場合)ならば、ステップS3及びステップS4において、それぞれYesとなり、ステップS5又はS7に進む。もし、「検出の有無」は「0」である場合(力検出部53で検出可能である場合)ならば、ステップS3及びステップS4において、それぞれNoとなり、ステップS6又はS8に進む。例えば、ステップS3及びステップS4において、人4が前腕リンク32を把持している場合は、図9Bの力検出部特性データベース18の「前腕」の「把持位置ID」は「2」であることから、図9Aの「把持位置ID」が「2」の場合の「検出の有無」が「0」であると、制御方法切替部16により検出する(すなわち、前腕では力検出部53で検出不可能である、と検出する)。同様に、人4がハンド30を把持している場合は、図9Bの[ハンド]の「把持位置ID」は「4」となり、図9Aの「把持位置ID」が「4」の場合の「検出の有無」が「1」であると、制御方法切替部16により検出する(すなわち、ハンド30では力検出部53で検出可能である、と検出する)。
ステップS5では、後述する高剛性位置制御モード(人4の力でロボットアーム5が移動できない制御方法)に制御方法切替部16により切り替える。すなわち、ステップS2で「抗力の影響の可能性の有無」が「1」であり(すなわち、抗力の影響を受ける場合で)、且つステップS3で「検出の有無」が「1」である場合(例えば、ハンド30を把持して、抗力の影響を受けるとともに、力検出部53で検出可能である場合)は、ステップS5で、ロボットアーム5が接触面に直接的に又は間接的に接触しない位置で、後述する高剛性位置制御モード(人4の力でロボットアーム5が移動できない制御方法)に制御方法切替部16により切り替える。なお、図21Aを基に後述するように、接触面で拭き掃除などの作業をしているロボットアーム5の現在の手先位置を取得し、その手先位置から高さhだけ接触面から離した位置を設定することで、直接的に又は間接的に接触面に接触していない状態を設定することができる。また、「接触面に接触しない位置」でない位置の場合には、人がロボットアーム5を把持した時点で、「接触面に接触しない位置」まで切り替え動作を実行する。
このように、ロボットアーム5が接触面に直接的に又は間接的に接触しないようにすることで、接触面からの抗力の影響を無くし、さらに高剛性位置制御モードにすることで、ロボットアーム5が容易に移動して接触面に直接的に又は間接的に接触してしまうことを防ぐことができる。
一方、ステップS6では、人4の力でロボットアーム5が移動できる制御方法である低剛性位置制御モードに制御方法切替部16により切り替える。すなわち、ステップS2で「抗力の影響の可能性の有無」が「1」であり、且つステップS3で「検出の有無」が「0」である場合(例えば、前腕リンク32を把持して、抗力の影響を受けるとともに、力検出部53で検出不可能である場合)は、ステップS6で、人4の力でロボットアーム5が移動できる制御方法である低剛性位置制御モードに切り替える。人4は、接触面に対してロボットアーム5を介して加えたい力をロボットアーム5にかけるために、人4は、ロボットアーム5を把持して接触面に接近する方向にロボットアーム5を押す。低剛性位置制御モードであるため、人4の加えた力でロボットアーム5が容易に移動でき、ロボットアーム5を接触面に直接的に又は間接的に接触させることができる。「検出の有無」が「0」であるため、人4がロボットアーム5に加えた力を力検出部53で直接検出することはできないが、ロボットアーム5における接触面からの抗力が人4の加えた力と等しいことから、接触面からの抗力を力検出部53で検出することで、人4の加えた力を力検出部53で検出することができる。なお、接触面の摩擦の影響などにより、人4がロボットアーム5に加えた力が微小である場合に、人4がロボットアーム5に加えた力か、摩擦の影響による誤検出か、の区別がつかない場合には、力検出部53で検出された力が、ある閾値以上(例えば0.5(N))の場合のみ、有効とすることも可能である。
さらに、ステップS7では、制御方法切替部16による制御方法の切り替えをしない。すなわち、ステップS2で「抗力の影響の可能性の有無」が「0」であり、且つステップS4で「検出の有無」が「1」である場合(図27Aのように力センサ53a,53bを配置し、前腕リンク32を把持した場合:図30A参照)は、制御方法の切り替えをしない。すなわち、ロボットアーム5が人4の加えた力で移動したとしても、接触面からの抗力の影響はなく、さらに、「検出の有無」が「1」であるので、人4の加えた力を力検出部53で直接検出することができるため、(iv)の力ハイブリッドインピーダンス制御モードに切り替える前の力制御モードのままで制御するよう設定を行う(言い換えれば、S2及びS4の切り替え判断を行なう前(切り替える判断の前)の制御モードのままで制御するよう設定を行う、又は、力制御モードに切り替えるよう設定を行う)。なお、ここで、制御方法切替部16による制御方法の切り替えを行わないとしたが、位置制御モードに切り替えても、力を正しく検出することができるため、制御方法の切り替えを行わない代わりに、位置制御モードに制御方法切替部16により切り替えるようにしてもよい。
また、ステップS8では、接触面からの抗力の検出が不可能であるために、人4が加えた力を検出することはできず、ステップS9に進む。ステップS9では、人4に対して警告を表示するなど、検出ができなかった事を人4に通知する。すなわち、ステップS2で「抗力の影響の可能性の有無」が「0」であり、且つステップS4で「検出の有無」が「0」である場合は、接触面からの抗力の検出が不可能であるために、ステップ8で、人4が加えた力を検出することはできないと、制御方法切替部16により判断する。したがって、ステップS9において、人4に対して警告を表示するなど、検出ができなかった事を人4に制御方法切替部16により通知する。
−動作記憶部−
動作記憶部15は、動作補正部20により補正した動作情報を動作情報データベース17に記憶する。さらに、動作記憶部15には、制御パラメータ管理部21からロボットアーム5の手先位置(ハンド30の位置)及び姿勢と人4がロボットアーム5にかけた力の情報が入力され、動作記憶部15で記憶する。
(制御装置本体部11)
制御装置本体部11は、制御パラメータ管理部21と、制御部22とを有するように構成される。制御部22と制御パラメータ管理部21との間では、ロボットアーム5の手先位置又は力の情報などが入出力される。
−制御パラメータ管理部−
次に、制御パラメータ管理部21の詳細について説明する。
制御パラメータ管理部21は、動作補正部20又は制御方法切替部16の指示に基づいて、ロボットアーム5の位置制御モードと、インピーダンス制御モードと、ハイブリッドインピーダンス制御モードと、(iv)の力ハイブリッドインピーダンス制御モードと、高剛性位置制御モードと、低剛性位置制御モードとの6つのモードの間で制御モードを切り替える設定を行う。また、制御パラメータ管理部21は、インピーダンス制御モード時及び力ハイブリッドインピーダンス制御モード時の機械インピーダンス設定値の設定を行う。また、制御パラメータ管理部21は、後述するインピーダンス計算部51で出力する手先位置及び姿勢目標補正出力rd△の設定及び目標軌道生成部55への動作情報の設定を行う。制御パラメータ管理部21は、動作補正部20又は制御方法切替部16の指示に基づいて、設定された制御モードに従ってロボットアーム5が動作するように、制御部22へ指令を出して、制御部22の制御の下にロボットアーム5を動作させる。さらに、制御パラメータ管理部21は、制御部22からロボットアーム5の手先位置又は力の情報などを動作補正部20へ通知を行う。
(i)位置制御モード
位置制御モードは、後述する目標軌道生成部55の手先位置と姿勢目標ベクトル指令とに基づいてロボットアーム5が作動するモードであり、人4がロボットアーム5に力を加えてもロボットアーム5は移動しないようにロボットアーム5の動作を制御する制御方法のモードである。具体的には、かき混ぜ作業又は拭き掃除作業などの作業時におけるロボットアーム5の移動を伴って動作するモードが位置制御モードである。
(ii)インピーダンス制御モード
インピーダンス制御モードは、力検出部53で検出され、かつ人4などからロボットアーム5に加わる力に応じて、ロボットアーム5が作動するようにロボットアーム5の動作を制御する制御方法のモードである。例えば、図8に示すように、人4がロボットアーム5を直接持って、作業場所(図8では鍋3の位置)までロボットアーム5を誘導する場合に動作するモードがインピーダンス制御モードである。
(iii)力制御モード
力制御モードは、動作補正部20から制御パラメータ管理部21へ設定された力で対象物をロボットアーム5で押し付けながら動作するようにロボットアーム5の動作を制御する制御方法の制御モードである。例えば、図13のように、IHクッキングヒータ6などの天板を拭き掃除作業する際に、天板の表面に力を加えて擦るような拭き掃除作業の場合、又は、図14のように、鍋3の底に力を加えて擦るようなかき混ぜ作業の場合などの、力を加えて制御する方向に使用する制御モードが力制御モードである。
(iv)ハイブリッドインピーダンス制御モード
ハイブリッドインピーダンス制御モードは、ロボットアーム5が位置制御モードで動作しているときに、ロボットアーム5に加わる力が力検出部53により検出され、かつ力検出部53で検出された力に応じて、ロボットアーム5が作動するようにロボットアーム5の動作を制御する制御方法のモードである。具体的には、ロボットアーム5が、図12Aに示すように、ロボットアーム5が位置制御モードによるかき混ぜ業を行っているときに、人4が鍋3の中の底側の部分をかき混ぜることができるようにロボットアーム5の動作を補正したい場合に、制御パラメータ管理部21は、ハイブリッドインピーダンス制御モードに切り替える指令を制御部22へ出力する。その結果、図12Bに示すように、人4がロボットアーム5を把持しながら、ハイブリッドインピーダンス制御モードにより下方向に力をかけることで(図12Bの下向きの矢印参照)、水平方向を位置制御モードでかき混ぜながら、図12Cの下向きの矢印及び下側の回転方向の矢印で示すように、垂直方向すなわち鍋底をかき混ぜる動作に補正することができるようになる。このような制御方法がハイブリッドインピーダンス制御モードである。
(v)力ハイブリッドインピーダンス制御モード
力ハイブリッドインピーダンス制御モードは、ロボットアーム5が力制御モードで動作しているときに、人4からロボットアーム5に加わる力に応じて、ロボットアーム5が作動するようにロボットアーム5の動作を制御する制御方法のモードである。具体的には、図16AのようにIHクッキングヒータ6などの天板を拭き掃除作業をしているときに、図16Bのように汚れがひどい部分91aを人4が見つけて、ロボットアーム5を把持して汚れがひどい部分91aまでロボットアーム5を移動させて、ロボットアーム5が天板に加える力を補正する際に使用するモードである。なお、力ハイブリッドインピーダンス制御モードの具体的な制御モードは、制御方法切替部16により切り替えられたモードが力ハイブリッドインピーダンス制御モードである。
以上の制御モードは、6軸の方向別にそれぞれ別個に設定することができる。
例えば、図16Aの拭き掃除作業は、6軸の方向別に、ハイブリッドインピーダンス制御モードか、インピーダンス制御モードか、位置制御モードかを制御方法切替部16により切り替え、さらに、制御方法切替部16により指定した力を作用させて動作する力制御モードで動作させる制御モードである。なお、力制御モードが設定された方向にインピーダンス制御モードを設定することはできない(力制御モードとインピーダンス制御モードは排他的な関係)。
例えば、図16AのようにIHクッキングヒータ6などの天板を拭き掃除作業する際に、掃除面に平行に円状に動作しながら、掃除面に垂直下向きに指定した力をかけて、拭き掃除をする場合には、具体的には、(x,y,z,φ,θ,ψ)の6軸それぞれに以下の制御モードを設定する。すなわち、(x,y)成分がハイブリッドインピーダンス制御モード、(φ,θ,ψ)成分がインピーダンス制御モードで、z軸成分が力制御モードである。z軸成分の力の補正を行う場合には、力ハイブリッドインピーダンス制御モードに切り替える。
このように掃除面と水平な方向はハイブリッドインピーダンス制御モードとすることで、位置制御モードで動作している最中に、人4などからロボットアーム5に加わる力に応じて、ロボットアーム5を移動させることができる。さらに、(φ,θ,ψ)成分をインピーダンス制御モードとすることで、停止している状態で人4などからロボットアーム5に加わる力に応じて、ロボットアーム5の姿勢を変更することができるようになる。また、z軸成分を力制御モードに設定することで、指定された力で押し付けながら動作することができるようになる。さらに、力ハイブリッドインピーダンス制御モードにすることで、人4が加えた力で拭き掃除をするよう、ロボットアーム5の動作を補正することができる。なお、(x,y,z,φ,θ,ψ)の6軸のうち、z軸成分が力制御モードで、その他の軸は位置制御モードで動作させても良い。その場合は、衝突など不用意な力がロボットアーム5に加わっても、位置制御成分を誤って移動させることはない。
高剛性位置制御モードは、ロボットアーム5の動作中の位置制御モードをさらに高剛性にした制御モードである。具体的には、後述する位置誤差補償部56でのゲインを大きくすることで実現し、人4が力を加えても、ロボットアーム5を容易に移動させることができない。そのため、接触面に直接的に又は間接的に接触していない状態で、高剛性位置制御モードに切り替えることで、接触面からの抗力の影響を受けないため、人4がかけた力を正しく検出することができる。さらに、接触面で拭き掃除などの作業をしているロボットアーム5の現在の手先位置を取得し、その手先位置から高さhだけ接触面から離した位置を設定することで、直接的に又は間接的に接触面に接触していない状態を設定することができる(図21Aに図示)。
低剛性位置制御モードは、ロボットアーム5の動作中の位置制御モードをさらに低剛性にした制御モードである。具体的には、後述する位置誤差補償部56でのゲインを小さくすることで実現し、人4が力を加えた場合に、ロボットアーム5を容易に移動させることができる。そのため、人4が把持した位置で力検出部53で力が検出できない場合には、人4がロボットアーム5を直接的に又は間接的に接触面に接触する(接触面に衝突する)まで移動させて接触位置で停止させ、その接触面からの抗力を力検出部53で検出することで、人4がかけた力を正しく検出することができる。
これらの制御モードは、ロボットアーム5の動作の際に、ロボットアーム5の方向及び姿勢別にそれぞれ適切な制御モードを設定して動作させる。
さらに、人4が、ハイブリッドインピーダンス制御モード又はインピーダンス制御モードでロボットアーム5が動作中に、補正するパラメータに応じて、機械インピーダンスパラメータ又はインピーダンス計算部51で出力する手先位置及び姿勢目標補正出力rd△の設定を変更する。
機械インピーダンス設定値の設定パラメータとしては、慣性Mと粘性Dと剛性Kとがある。機械インピーダンス設定値の各パラメータの設定は、補正値を使って、以下の評価式に基づいて行う。
前記式(3)〜(5)中のKM、KD、KKはそれぞれゲインであり、それぞれある定数値である。
制御パラメータ管理部21は、前記式(3)〜(5)に基づき計算した機械インピーダンスパラメータの慣性Mと粘性Dと剛性Kとを制御部22へ出力する。
前記式(3)〜(5)により、例えば、図12Bのように、人4がロボットアーム5のハンド30で把持されたレードル9を使用して鍋3の中の上側の部分をかき混ぜている動作に対して、鍋3の中の底側の部分をかき混ぜるようロボットアーム5の動作を補正させたい場合に、ロボットアーム5のz軸以外の位置成分及び姿勢成分が簡単に動くと、ロボットアーム5の動作の補正作業がやりにくくなる。そこで、制御パラメータ管理部21により、ロボットアーム5のz軸以外の位置成分及び姿勢成分についてのみ、上述の補正値を高く(具体的には、例えば、上述の補正値の約10倍に)設定することで、ロボットアーム5の粘性D及び剛性Kが大きくなるように設定されることになり、ロボットアーム5の動きに抵抗感又は硬さが生じ、ロボットアーム5が動きにくくなる。
又は、別の方法として、インピーダンス計算部51から出力される手先位置及び姿勢目標補正出力rd△の各成分のうち、z軸以外の値を全て0にする方法がある。これによって、z軸以外は、人4の力で移動できなくなるため、誤操作を防ぐことができる。
さらに、上述したように、制御パラメータ管理部21から、動作記憶部15と動作補正部20とに、ロボットアーム5の手先位置及び姿勢と、人4の加えた力の情報とを通知する必要がある。そのため、制御部22から制御パラメータ管理部21にロボットアーム5の手先位置及び力の情報を受けると、制御パラメータ管理部21は、動作記憶部15と動作補正部20とへ通知を行う。また、動作補正部20から制御パラメータ管理部21に入力された、位置及び姿勢と時間となどの動作情報を、制御パラメータ管理部21から制御部22へ通知する。
−制御部−
次に、制御部22の詳細について、図3により説明する。制御部22は、目標軌道生成部55と、ハンド制御部54と、力検出部53と、インピーダンス計算部51と、位置制御系59(位置誤差補償部56と、近似逆運動学計算部57と、順運動学計算部58とを有する。)と、位置誤差計算部80とを有するように構成されている。力検出部53は、図3では制御部22の一部として図示しているが、制御部22とは別の構成としてもよい。
ロボットアーム5からは、それぞれの関節軸のエンコーダ44により計測された関節角の現在値(関節角度ベクトル)ベクトルq=[q1,q2,q3,q4,q5,q6]Tが出力され、入出力IF24により制御部22に取り込まれる。ただし、q1,q2,q3,q4,q5,q6は、それぞれ、第1関節部35、第2関節部36、第3関節部37、第4関節部38、第5関節部39、第6関節部40の関節角度である。
目標軌道生成部55は、位置制御モードで、又は力制御モードで、又は方向別に位置制御モード若しくは力制御モードで、ロボットアーム5を動作するように、動作補正部20で生成されかつ制御パラメータ管理部21を介して目標軌道生成部55に入力された動作情報から、目標とする手先位置及び姿勢目標ベクトルrdと目標とする手先(ハンド30)にかかる力ベクトルfdとを目標軌道生成部55により生成する。
具体的には、動作補正部20から制御パラメータ管理部21を介して、動作情報が目標軌道生成部55に入力されると、目標とするロボットアーム5の動作を実現するための手先位置及び姿勢目標ベクトルrdと目標とする手先にかかる力ベクトルfdとそれぞれの方向別にどのパラメータが有効かを示すフラグとが、目標軌道生成部55から位置誤差計算部80に出力される。目標とするロボットアーム5の動作は、目的とする作業に応じて動作補正部20からそれぞれの時間(t=0、t=t1、t=t2、・・・)でのポイント毎の位置及び姿勢(rd0、rd1、rd2、・・・)と力(fd0、fd1、fd2、・・・)とが与えられており、目標軌道生成部55は、多項式補間を使用し、各ポイント間の軌道及び力を補間し、手先位置及び姿勢目標ベクトルrdと目標力ベクトルfdとを生成する。
インピーダンス制御モード時には、インピーダンス制御モードに切り替え時のロボットアーム5の手先位置を、目標とする手先位置及び姿勢目標ベクトルrdとして出力する。さらに、動作情報データベース17の動作情報のハンド30の開閉フラグにより、後述するハンド制御部54へ、ハンド30の開閉指令を出す。
54はハンド制御部であり、目標軌道生成部55から入力した開閉フラグにより、ハンド30を開閉するよう、入出力IF24を介してロボットアーム5へ指令を出す。
53は力検出部であり、人4等とロボットアーム5の接触によってロボットアーム5に加わる外力Fextを検出する。ただし、手先に重量mの物体を把持して作業している場合は、検出したFextからmgをあらかじめ減じておく。ここで、gは重力加速度である。把持物体の質量mの値は、物体を把持する前に人4がデータ入力IF26により力検出部53に入力することができる。
インピーダンス計算部51は、ロボットアーム5に機械インピーダンス設定値への前記ロボットアーム5の機械インピーダンスの値の制御を実現する機能を果たす部分であり、制御パラメータ管理部21から位置制御モードに切り替えられた際には0を出力する。
一方、インピーダンス制御モード及びハイブリッドインピーダンス制御モードに切り替えられた際には、制御パラメータ管理部21で設定されたインピーダンスパラメータである慣性Mと粘性Dと剛性Kと、関節角の現在値qと、力検出部53が検出した外力Fextとより、ロボットアーム5に機械インピーダンス設定値への前記ロボットアーム5の機械インピーダンスの値の制御を実現するための手先位置及び姿勢目標補正出力rdΔを以下の式(6)によりインピーダンス計算部51で計算し、計算して求められた手先位置及び姿勢目標補正出力rdΔを位置誤差計算部80に出力する。
さらに、制御パラメータ管理部21で力制御モードに切り替えられた際には、「フラグ」で指定された力成分が存在する場合には、制御パラメータ管理部21で設定されたインピーダンスパラメータである慣性Mと粘性Dと剛性Kと、関節角の現在値qと、力検出部53が検出した外力Fextと、目標軌道生成部55から出力されるfdとより、ロボットアーム5に機械インピーダンス設定値への前記ロボットアーム5の機械インピーダンスの値の制御を実現するための手先位置及び姿勢目標補正出力rdΔを以下の式(10)によりインピーダンス計算部51で計算して、計算して求められた手先位置及び姿勢目標補正出力rdΔを位置誤差計算部80に出力する。
手先位置及び姿勢目標補正出力rdΔは、目標軌道生成部55の出力する手先位置及び姿勢目標ベクトルrdに位置誤差計算部80で加算され、手先位置及び姿勢補正目標ベクトルrdmが生成される。ただし、ハイブリッドインピーダンス制御モード時に、補正パラメータに応じて、ロボットアーム5の動作を拘束する場合に、例えばz軸のみロボットアーム5が動くようにするには、手先位置及び姿勢目標補正出力rdΔのz成分以外を0にインピーダンス計算部51で設定する。
ただし、M,D,Kは式(7)、式(8)、式(9)により算出する。
58はロボットアーム5からのそれぞれの関節軸のエンコーダ44により計測された関節角の現在値qである関節角度ベクトルqが、入出力IF24を介して入力される順運動学計算部である。順運動学計算部58は、ロボットアーム5の関節角度ベクトルqから、手先位置及び姿勢ベクトルrへの変換の幾何学的計算を順運動学計算部58で行う。順運動学計算部58で計算された手先位置及び姿勢ベクトルrは、位置誤差計算部80及びインピーダンス計算部51及び目標軌道生成部55に出力される。
56は位置誤差補償部であり、ロボットアーム5において計測される関節角度ベクトルqより順運動学計算部58により計算される手先位置及び姿勢ベクトルrと、手先位置及び姿勢補正目標ベクトルrdmとの誤差reが位置誤差計算部80で求められたのち、その誤差reが位置誤差補償部56に入力され、位置誤差補償部56から、位置誤差補償出力ureが近似逆運動学計算部57に向けて出力される。
さらに、高剛性位置制御モードが設定された際に、定数の対角行列である比例、微分、積分の3つのゲインをあらかじめ設定された値に大きく設定する(通常の位置制御モードと比較して大きな値を設定する。具体的には、通常の位置制御モード時の2倍程度の値に設定する。ここで、高剛性とは、通常の位置制御と比較して、剛性が高くなることを意味する。値を通常の位置制御モード時の2倍程度にすると、剛性を約2倍まで高くすることができる。このようにすることで、高剛性の位置制御を実現することができる。なお、前記ゲインを各成分毎に値を変えることで、例えば、z軸方向のみ高剛性で、その他の方向は通常の位置制御で動作するよう制御することができる。
また、低剛性位置制御モードが設定された際に、定数の対角行列である比例、微分、積分の3つのゲインをあらかじめ設定された値に小さく設定する。すなわち、通常の位置制御モードと比較して、小さな値を設定する。具体的には、通常の位置制御モード時の半分程度の値に設定する。ここで、低剛性とは、通常の位置制御と比較して、剛性が低くなることを意味する。値を通常の位置制御モード時の半分程度にすると、剛性を約半分まで低くすることができる。このようにすることで、低剛性の位置制御を実現することができる。なお、前記ゲインを各成分毎に値を変えることで、例えば、z軸方向のみ低剛性で、その他の方向は通常の位置制御で動作するよう制御することができる。
近似逆運動学計算部57では、位置誤差補償部56により入力される位置誤差補償出力ureとロボットアーム5において計測される関節角度ベクトルqとに基づき、近似式uout=Jr(q)−1uinにより、逆運動学の近似計算を行う。ただし、Jr(q)は、
の関係を満たすヤコビ行列、uinは近似逆運動学計算部57への入力、uoutは近似逆運動学計算部57からの出力であり、入力uinを関節角度誤差qeとすれば、qe=Jr(q))−1reのように手先位置及び姿勢誤差reから関節角度誤差qeへの変換式となる。したがって、位置誤差補償部56から位置誤差補償出力ureが近似逆運動学計算部57に入力されると、近似逆運動学計算部57からの出力として、関節角度誤差qeを補償するための関節角度誤差補償出力uqeが近似逆運動学計算部57から入出力IF24を介してロボットアーム5のモータドライバ25に向けて出力される。
関節角度誤差補償出力uqeは、入出力IF24のD/Aボードを介してロボットアーム5のモータドライバ25に電圧指令値として与えられ、各モータ43により各関節軸が正逆回転駆動されロボットアーム5が動作する。
以上のように構成される制御部22に関して、ロボットアーム5のインピーダンス制御動作の原理について説明する。
インピーダンス制御動作(ハイブリッドインピーダンス制御も同様)の基本は、位置誤差補償部56による手先位置及び姿勢誤差reのフィードバック制御(位置制御)であり、図3の点線で囲まれた部分が位置制御系59になっている。位置誤差補償部56として、例えば、PID補償器を使用すれば、手先位置及び姿勢誤差reが0に収束するように位置制御系59による制御が働き、目標とするロボットアーム5のインピーダンス制御動作を実現することができる。
制御パラメータ管理部21でインピーダンス制御モード若しくはハイブリッドインピーダンス制御モード若しくは力ハイブリッドインピーダンス制御モードに切り替えられた場合には、前記説明した位置制御系59に対し、インピーダンス計算部51により手先位置及び姿勢目標補正出力rdΔが位置誤差計算部80で加算され、手先位置及び姿勢の目標値の補正が行われる。このために、前記した位置制御系59は、手先位置及び姿勢の目標値が本来の値より微妙にずれることになり、結果的に、前記ロボットアーム5の機械インピーダンスの値を前記適切に設定された設定値に制御する動作が実現され、位置制御系59の位置制御動作を補正することができる。手先位置及び姿勢目標補正出力rdΔはインピーダンス制御モード若しくはハイブリッドインピーダンス制御モードの場合は式(6)により算出され、力ハイブリッドインピーダンス制御モードの場合は式(10)による算出されるため、前記ロボットアーム5の慣性Mと粘性Dと剛性Kとの機械インピーダンスの値を前記適切に設定された設定値に制御する動作が実現される。
(周辺装置14)
周辺装置14は、データ入力IF(インターフェース)26と入出力IF(インターフェース)24とモータドライバ25と表示部2とを有するように構成される。制御部22から入出力IF24には制御信号などの制御情報が出力される。動作補正部20から、動作情報データベース17で記憶された補正パラメータなどの補正情報及び動作IDに該当する映像若しくは写真若しくはテキストが表示部2へ出力されて、動作情報で記述されたロボットアーム5の動作の映像若しくは写真若しくはテキストを表示部2で表示する。
入出力IF24は、パーソナルコンピュータのPCIバスなどの拡張スロットに接続された、例えばD/AボードとA/Dボードとカウンタボードとなどを有するように構成されている。入出力IF24は、ロボットアーム5の各関節部の、後述するエンコーダ44より出力される各関節角度情報及びハンド30のエンコーダ61より出力される角度情報が入力されて制御部22に入力する。一方、入出力IF24には、制御部22から制御信号などの制御情報が入力されるとともに、モータドライバ25に制御指令値などの制御情報を出力する。モータドライバ25は、ロボットアーム5の各関節部の、後述するモータ43及びハンド30のモータ62へ制御指令値などの制御情報を出力する。
データ入力IF(インターフェース)26は、人4がキーボード又はマウス又はマイクなどの入力装置を使用して、後述する動作情報を入力したり変更したりするためのインターフェースである。また、データ入力IF26は、図1の操作盤13のボタン13aなどの入力装置を使用して、人4から動作指令部27に対して制御動作開始及び終了、動作の補正開始及び終了の指令を受けるようにしてもよい。ボタン13aとしては、例えばトグルスイッチとして1つのボタンで制御動作開始及び制御動作終了をそれぞれ入力可能としてもよいし、制御動作開始ボタンと制御動作終了ボタンと別々に設けてもよい。
表示部2は、例えばロボットアーム5又は作業台7の側面に設置されたディスプレイ装置であり、動作情報などを表示する。
以上の原理に基づく制御プログラムの実際の動作ステップについて、図15のフローチャートに基づいて説明する。
ロボットアーム5の関節部それぞれのエンコーダ44により計測された関節角度データ(関節変数ベクトル又は関節角度ベクトルq)が、エンコーダ44から、入出力IF24を介して、制御装置本体部11の制御部22に取り込まれる(ステップS101)。
次いで、制御部22に取り込まれた関節角度データ(関節変数ベクトル又は関節角度ベクトルq)に基づいて、逆運動学計算部57にてロボットアーム5の運動学計算に必要なヤコビ行列Jr等の計算を行う (ステップS102)。
次いで、順運動学計算部58にて、ロボットアーム5のそれぞれのエンコーダ44からの関節角度データ(関節変数ベクトル又は関節角度ベクトルq)から、ロボットアーム5の現在の手先位置及び姿勢ベクトルrを計算して、位置誤差計算部80と目標軌道生成部55とインピーダンス計算部51とに出力する(ステップS103)。
次いで、動作補正部20から制御パラメータ管理部21を介して送信された動作情報に基づき、目標軌道計算部55は、ロボットアーム5の手先位置及び姿勢目標ベクトルrdと目標力ベクトルfdとを計算し、インピーダンス制御モード時は、ロボットアーム5の手先位置を、目標とする手先位置及び姿勢目標ベクトルrdとして位置誤差計算部80に出力する(ステップS104)。
次いで、力検出部53は、モータ43の駆動電流値iと、関節角度データ(関節変数ベクトル又は関節角度ベクトルq)と、関節角度誤差補償出力uqeとから、ロボットアーム5の手先における等価手先外力Fextを計算してインピーダンス計算部51に出力する(ステップS105)。
次いで、ステップS106では、制御パラメータ管理部21において、後述する動作補正部20により補正有りと指示され且つ補正パラメータで6軸のうち力成分を補正する場合であって、かつ、制御方法切替部16で低剛性位置制御モードに切り替えられた場合は、力成分が設定された成分は低剛性位置制御モードに制御モードを切り替えられる。その後、ステップS107へ進む。
また、ステップS106では、制御パラメータ管理部21において、後述する動作補正部20により補正有りと指示され且つ補正パラメータで6軸のうち力成分を補正する場合であって、かつ、制御方法切替部16で高剛性位置制御モードに切り替えられた場合は、力成分が設定された成分は高剛性位置制御モードに制御モードを切り替えられる。その後、ステップS108へ進む。
また、ステップS106では、制御パラメータ管理部21において、6軸のうち位置成分を補正する場合は、変更したい位置成分をインピーダンス制御モードに制御方法切替部16で変更する。その後、ステップS110へ進む。
また、ステップS106では、制御パラメータ管理部21において、補正なしの場合には、ステップS109へ進み、位置制御モードを設定する。
また、ステップS106では、制御パラメータ管理部21において、後述する動作補正部20により補正有りと指示され且つ補正パラメータで6軸のうち力成分を補正する場合であって、かつ、制御方法切替部16で切り替えなしと設定された場合は、切り替え前の制御方法(力制御モード)に切り替える。その後、ステップS110へ進む。
ステップS107(インピーダンス計算部51での処理)では、制御パラメータ管理部21において、低剛性位置制御モードが設定された場合には、インピーダンス計算部51で、手先位置及び姿勢目標補正出力rdΔを0ベクトルとする。その後、ステップS111に進む。
ステップS108(インピーダンス計算部51での処理)では、制御パラメータ管理部21において、高剛性位置制御モードが設定された場合には、インピーダンス計算部51で、手先位置及び姿勢目標補正出力rdΔを0ベクトルとする。その後、ステップS112に進む。
ステップS109(インピーダンス計算部51での処理)では、制御パラメータ管理部21において、位置制御モードが設定された場合には、インピーダンス計算部51で、手先位置及び姿勢目標補正出力rdΔを0ベクトルとする。その後、ステップS113に進む。
ステップS110では、制御パラメータ管理部21において、インピーダンス制御モード若しくは力制御モードが設定された場合には、インピーダンス計算部51では、制御パラメータ管理部21において設定された機械インピーダンスパラメータの慣性Mと粘性Dと剛性Kと、関節角度データ(関節角度ベクトルq)と、力検出部53により計算されたロボットアーム5に加わる等価手先外力Fextとから、手先位置及び姿勢目標補正出力rdΔが、インピーダンス計算部51により計算される。さらに、補正パラメータに基づいて、手先位置及び姿勢目標補正出力rdΔのいずれか成分の値を0に設定する。
ステップS113では、位置誤差補償部56では、手先位置及び姿勢目標ベクトルrdと手先位置及び姿勢目標補正出力rdΔとの和である手先位置及び姿勢補正目標ベクトルrdmと、現在の手先位置及び姿勢ベクトルrとの差である手先位置及び姿勢の誤差reが計算される。位置誤差補償部56の具体例としては、PID補償器が考えられる。定数の対角行列である比例、微分、積分の3つのゲインを適切に調整することにより、位置誤差が0に収束するように位置誤差補償部56の制御が働く。その後、ステップS114に進む。
ステップS111では、位置誤差補償部56の定数の対角行列である比例、微分、積分の3つのゲインを適切に調整することにより、位置誤差が0に収束するように位置誤差補償部56の制御が働く。そのゲインを、ある値まで小さくすることで、低剛性の位置制御を実現する。その後、ステップS114に進む。
ステップS112では、位置誤差補償部56の定数の対角行列である比例、微分、積分の3つのゲインを適切に調整することにより、位置誤差が0に収束するように位置誤差補償部56の制御が働く。そのゲインを、ある値まで大きくすることで、高剛性の位置制御を実現する。その後、ステップS114に進む。
ステップS114では、近似逆運動学計算部57では、ステップS102で計算したヤコビ行列Jrの逆行列を位置誤差補償出力ureに近似逆運動学計算部57で乗算することにより、位置誤差補償出力ureを、手先位置及び姿勢の誤差に関する値から関節角度の誤差に関する値である関節角度誤差補償出力uqeに、近似逆運動学計算部57により変換する。
次いで、ステップS115では、関節角度誤差補償出力uqeが、近似逆運動学計算部57から入出力IF24を通じ、モータドライバ25に与えられる。モータドライバ25は、関節角度誤差補償出力uqeに基づき、関節部のそれぞれのモータ43を流れる電流量を変化させる。この電流量の変化により、ロボットアーム5のそれぞれの関節部の回転運動が発生して、ロボットアーム5が動作を行なう。
以上のステップS101〜ステップS115が制御の計算ループとして繰り返し実行されることにより、ロボットアーム5の動作の制御、すなわち、ロボットアーム5の機械インピーダンスの値を前記適切に設定された設定値に制御する動作を実現することができる。
以上の動作補正部20とデータ入力IF26と動作記憶部15と動作情報データベース17と把持位置検出部23と制御方法切替部16と制御パラメータ管理部21との動作ステップについて、図17のフローチャートに基づいて説明する。
人4は、データ入力IF26により、動作情報データベース17の作業の中からロボットアーム5に実行させたい作業を選択した選択指令、すなわち、選択された(指定された)「作業ID」の選択指令を動作指令部27に入力する(ステップS50)。
次いで、動作指令部27に入力された選択指令に基づいて、動作補正部20は、動作情報データベース17に記憶されかつ選択された(指定された)「作業ID」に関する動作情報の「フラグ」に従って制御モードを設定する(ステップS51)。
次いで、人4がデータ入力IF26を使用して選択した作業についての動作開始の指令を動作指令部27に入力すると、その動作開始指令を動作指令部27が受けて、動作補正部20を介して、制御パラメータ管理部21へ、設定した制御モードで動作するよう指令を出す(ステップS52)。制御パラメータ管理部21は、設定した制御モードでロボットアーム5が動作するように、制御部22へ指令を出して、制御部22の制御の下にロボットアーム5を動作させる。
次いで、ロボットアーム5での動作中に、人4がデータ入力IF26を使用して、補正開始の指令の入力を動作指令部27に行う(ステップS53)。動作指令部27が補正開始の指令を受け取ると、動作補正部20に動作補正開始の指令を入力する。すると、動作補正部20は、「動作パラメータフラグ」が力制御モードの場合は、制御方法切替部16に制御方法を切り替えるよう指令を出す。制御方法切替部16は、把持位置検出部23により検出した把持位置(ステップS54)と力検出部特性データベース18に記憶された情報により、制御方法を決定して、決定した制御方法で動作するように、制御パラメータ管理部21へ指令を出す(ステップS55)。
次いで、人4がロボットアーム5を把持して、補正したい方向に力をロボットアーム5にかけることで、動作補正部20が動作情報を補正する。具体的には、人4が補正を行った力の情報を力検出部53で検出し(ステップS56)、力検出部53で検出した結果の情報を、制御パラメータ管理部21を介して、動作補正部20に入力する。動作補正部20では、現在動作中の「作業ID」及び「動作ID」の動作情報のうち、力制御で動作しているz軸の力成分の値を、入力された力成分の値に修正して補正する(ステップS57)。
次いで、動作補正部20で補正された動作情報は、動作記憶部15により、動作情報データベース17に記憶される(ステップ58)。
以上の図15の動作ステップS101〜ステップS115及び図17のステップS50〜ステップS58により、動作情報に基づいてロボットアーム5の動作中に、人4がロボットアーム5のどの部分(いずれの位置)を直接把持しても、人4が加えた力を力検出部53で正しく検出し、力検出部53で検出した力情報で動作情報を動作補正部20により補正することができる。
なお、この例では、力制御モードで拭き掃除作業をしている最中に、人4がロボットアーム5に強めに力をかけて拭き掃除作業の力のかけ具合を補正するために、制御方法切替部16で制御方法を切り替えて、ロボットアーム5の拭き掃除作業の動作補正を行う場合について説明している。例えば、制御方法を高剛性位置制御モードに切り替え、さらに接触面からの抗力の影響を無くすために、接触面から少し浮かせて状態(図21A参照)に切り替えて動作補正を行うが、人4が力を補正している最中は、高剛性位置制御モードであり且つ接触面から浮いた状態なので、補正した力を加えて、どれくらい汚れが落ちるのかをリアルタイムに確認しながら補正することができない。そこで、制御方法切替部16では、図11のフローチャートのステップS3にて、低剛性位置制御モード若しくは高剛性位置制御モードのいずれかに切り替える場合に、補正前の力制御モードと補正中の制御モード(低剛性位置制御モード若しくは高剛性位置制御モード)とを交互に切り替えを行う(具体的には0.02秒毎に切り替える)。力制御モード時には補正した力で力制御を行い、補正中の制御モード(低剛性位置制御モード若しくは高剛性位置制御モード)では、補正した力で補正することを交互に繰り返すことで、人4が補正した値で作業が正確にできているかを確認しながら動作補正部20により補正することが可能となる。
なお、この例では拭き掃除作業を例に説明したが、図14に示したように力制御モードで鍋底をこすりながらかき混ぜ動作をしている最中も、同様の方法で動作補正部20により補正することができる。
また、この例では、手首(ハンド30)に力検出部53を搭載した場合を例に説明しているが、図27Aのように、操作用の力センサ53aと力制御用の力センサ53bとを搭載していた場合、又は、図27Bのように各関節にトルクセンサ53c,53d,53eを搭載していた場合なども、図30A又は図31Aのようにの力検出部特性データベース18を力センサ53a,53b,53c,53d,53eの特性に合わせて用意することで、同様の方法で補正することができる。
なお、人4が図28の操作Aと操作Bの境目、若しくは、操作Bと操作Cの境目など、複数の把持位置にまたがって人4が操作している場合は、把持位置検出部23において、人4の手4aがより多く把持している把持位置を検出しても良い。
(第2実施形態)
本発明の第2実施形態における、ロボットアームの制御装置の基本的な構成は、第1実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
第1実施形態の場合と同様に、図16A及び図16Bに示すように、ロボットシステム1を使って拭き掃除作業をする場合に、図18に示すような複数人4A,4Bで1つのロボットアーム5を複数箇所把持して操作する場合、又は、一人の人4が1つのロボットアーム5の複数箇所を把持する場合を例に説明する。 図19は、第2実施形態におけるロボットシステム1を構成する、制御対象であるロボットアーム5と、ロボットアーム5の制御装置70との詳細構成を示す図である。ロボットアーム5と、周辺装置14と、制御パラメータ管理部21と、制御部22と、制御装置70と、動作情報データベース17と、力検出部特性データベース18と、動作指令部27と、動作記憶部15とは、第1実施形態と同様であるので、説明は省略する。第1実施形態と大きく異なる点は、力検出部53により検出した複数の力の情報から、後述する力算出方法テーブル81を使用して、動作補正に使用する力を1つ算出する力算出部28を備えていることである。
把持位置検出部23は、人4がロボットアーム5を把持するとき、人4がロボットアーム5のどの部分を把持して操作しているかを検出し、複数人4A,4Bが把持している場合又は一人の人4が両手などを使って複数箇所を把持している場合は、それぞれの把持位置を検出する。具体的には、カメラなどの画像撮像装置19の画像データより、操作している人4,4A,4Bの手の画像認識を行い、その手が、ロボットアーム5の前腕リンク32か上腕リンク33かハンド30かのいずれを把持して操作しているかを把持位置検出部23により検出する。
制御方法切替部16は、把持位置検出部23で検出された把持位置と、力検出部特性データベース18で記憶された情報とにより、人4が把持して力のパラメータを補正する際の制御方法を切り替える。
把持位置が複数箇所検出された場合には、制御方法切替部16ではそれぞれの把持位置での制御方法を第1実施形態と同様の方法で求める。例えば、前腕リンク32とハンド30の2箇所を一人の人4が把持してロボットアーム5を操作した場合に、図9Aの力検出部特性データベース18を使用して、ロボットアーム5の前腕リンク32を人4が把持した場合は、図9Bの力検出部特性データベース18より、「把持位置ID」は「2」となり、図9Aの力検出部特性データベース18により、「把持位置ID」が「2」の「検出の有無」は「0」で、「抗力の影響の可能性の有無」は「1」であることが、力検出部特性データベース18から制御方法切替部16で検出される。同様に、ハンド30を人4が把持した場合は、図9Bの力検出部特性データベース18より、「把持位置ID」は「4」となり、図9Aの力検出部特性データベース18により、「把持位置ID」が「4」の「検出の有無」は「1」で、「抗力の影響の可能性の有無」は「1」であることが、力検出部特性データベース18から制御方法切替部16で検出される。そして、制御方法切替部16は、それぞれの把持位置での制御方法を求める。例えば、「把持位置ID」が「2」の場合(前腕」の場合)は、第1実施形態と同様に図11のフローチャートを使って、「検出の有無」は「0」で、「抗力の影響の可能性の有無」は「1」であるので、低剛性位置制御モードとなる(図11のステップS6参照)。把持位置IDが「4」の場合(ハンド」の場合)は、第1実施形態と同様に図11のフローチャートを使って、「検出の有無」は「1」で、「抗力の影響の可能性の有無」は「1」であるので、高剛性位置制御モードとなる(図11のステップS5参照)。次に、求めた複数の制御モード(この例では、低剛性位置制御モードと高剛性位置制御モード)を制御方法切替部16により交互に繰り返して切り替える。
力検出部53により、第1実施形態と同様の方法で、全ての把持位置での力を検出し、検出した結果が、制御パラメータ管理部21を介して、動作補正部20に入力される。
図20Aは、力算出部28に内蔵されているデータベース又はメモリ28aに記憶された力算出方法テーブル81の例である。
「算出方法」は、図19の力算出部28で、力検出部53により検出された複数の力に関する情報(力情報)から、どのような方法で1つの力に関する情報(力情報)を算出するかを記述したものである。具体的には、複数の力情報の中から最大値を算出する場合には「最大」と記述し、複数の力情報の中から最小値を算出する場合には「最小」と記述し、複数の力情報の平均値を算出する場合には「平均」と記述し、複数の力情報を合算して算出する場合には「合算」と記述し、複数の力情報に重み係数を乗算した後に合算して算出する場合には「重み付け」と記述する。
力算出部28は、制御方法切替部16で複数の制御方法を切り替えている際に、人4がロボットアーム5を複数の把持位置で把持し、それぞれの把持位置で力検出部53により検出した力の情報から、力算出方法テーブル81を使用して、動作補正に使用する力を1つ算出する。
具体的には、力算出部28は、力算出方法テーブル81を参照し、例えば「フラグ」が「1」となっている「算出方法」に従って算出する。図20Aに示す力算出方法テーブル81の場合では、「合算」が「1」となっているので、それぞれの把持位置での力検出部53の出力値の全ての値を力算出部28で合算して算出する。
「フラグ」は、複数ある算出方法から、どの算出方法が有効かを示すフラグで、この例では、「合算」値を算出する方法が「1」なので、力算出部28において「合算」値を算出する方法が有効であることを示している。よって、それぞれの把持位置で力検出部53により検出した力の情報を、力算出部28により、全て合算する。力算出部28により合算した力の値を、動作補正部20に出力する。
なお、図20Aの「算出方法」が「重み付け」の場合には、図20Aのように、(「フラグ」,「係数ID」)として記述し、「フラグ」は、どの算出方法を使って算出するかを示すフラグであり、「係数ID」は、図20Cに示す、係数IDで示す重み付けの係数を示している。
力算出部28は、図20Aのように、「算出方法」が「重み付け」のときの係数IDが「4」の場合は、図20Cより、係数が(0.6,0.4)であることを予め取得しておく。この係数に基づいて、ロボットアーム5の2箇所の位置を人4が把持した場合には、力検出部53により一番目に検出された力の値に0.6を力算出部28で乗じ、力検出部53により二番目に検出された力の値に0.4を力算出部28で乗じ、それぞれ係数を乗じた値を力算出部28で合算して算出する。もし、ロボットアーム5を3箇所で把持した場合には、図20Cの「係数ID」の「3」を使うことで算出することができる。
動作補正部20では、第1実施形態と同様の方法で動作情報データベース17の動作情報を補正する。
以上により、複数の人4A,4B又は一人の人4が両手を使ってロボットアーム5の複数箇所を把持した場合であっても、力検出部53と力算出部28とにより、力を正しく検出することができる。さらに、力算出部28を設けることで、人4が高齢者又は子供である場合に、補正すべき力が不足している場合であっても、算出方法を「合算」とすることで、より大きな力を加えることが可能となる。また、子供と大人がそれぞれ把持している場合には、「算出方法」として「最大」を力算出部28で選択することで、子供が加えた力よりも大人が加えた力を優先して設定することができる。また、人4が1人で両手を使って操作をしている場合に、「算出方法」として「最大」を力算出部28で選択することで、力を強く加えることができる利き腕の力を、利き腕でない腕の力よりも優先して設定することができる。さらに、複数個所を把持している場合に、急激な力を加えて危険な状態になることを防ぐために、「算出方法」として「最小」若しくは「平均」若しくは「重み付け」を選択することで、より安全に操作をすることが可能となる。
なお、この例では、「算出方法」を「合算」としたが、どの算出方法を選ぶかをデータ入力IF26などで人4が入力しても良い。その場合には、データ入力IF26で入力された「算出方法」のフラグに「1」を設定する。また、操作する人4の状態(例えば高齢者又は子供など)により、例えば図20Bのように、ID1〜ID3を、適宜、切り替えて算出しても良い。この場合、データ入力IF26を使用して、「高齢者」若しくは「子供」かどうかを識別するIDを入力するか、若しくは、年齢を入力し、65歳以上であれば「高齢者」と判断し、15歳以下であれば「子供」と力算出部28で判断することにより、人が高齢者若しくは子供であることを検出することができる。
(第3実施形態)
本発明の第3実施形態における、ロボットアームの制御装置の基本的な構成は、第1実施形態の場合と同様であるので、共通部分の説明は省略し、異なる部分についてのみ以下、詳細に説明する。
図22A〜図22Dに示すように、複数のロボットアーム5A,5Bが動作する場合を例に説明する。図22Aは、例えば、調理時にパン生地を丸めたり、パン生地を伸ばす等の複数のロボットアーム5A,5Bが協調して物体47に力を加えている作業である。また、図22Bは、調理時にパン生地をこねたり、拭き掃除など複数のロボットアーム5A,5Bで接触面に同時に力を加える作業である。このような作業中に、図22C、図22Dに示すように、人4が複数のロボットアーム5A,5Bの片方のロボットアーム5Aを操作して、ロボットアーム5A,5Bの力のかけ具合を補正する場合を例に説明する。
図23は、第3実施形態におけるロボットシステム1を構成する、制御対象である第1のロボットアーム5Aと第2のロボットアーム5B、第1のロボットアーム5A及び第2のロボットアーム5Bの制御装置70との詳細構成を示す図である。第1のロボットアーム5A及び第2のロボットアーム5Bのそれぞれのロボットアームと、動作指令部27と、周辺装置14とは、第1実施形態と同様であるので、説明は省略する。
図24は、第3実施形態における動作情報データベース17の一例である。図24の「作業ID」は、複数のロボットアーム5A,5Bで行う作業を識別するID番号である。「動作ID」は、その作業の中で複数のロボットアーム5A,5Bの動作を識別する動作ID番号である。「ロボットID」は複数のロボットアーム5A,5Bを識別するID番号であり、例えば、「1」は第1のロボットアーム5Aであり、「2」は第2のロボットアーム5Bである。「位置姿勢」と、「力」と、「フラグ」と、「ハンド」と、「時間」と、「補正パラメータフラグ」とは、「ロボットID」で識別したロボットアーム5A,5Bの動作に関する情報で、それぞれの説明は第1実施形態と同様であるので省略する。「進捗情報」はそれぞれのロボットアーム5A,5Bの動作が動作中か否かを示す情報である。
図25Aは、第3実施形態における力検出部特性データベース18である。「ロボットID」は複数のロボットアーム5A,5Bを識別するID番号である。「把持位置ID」と、「検出の有無」と、「抗力の影響の可能性の有無」とは、「ロボットID」で識別したそれぞれのロボットアーム5A,5Bの力検出部の特性を表しており、それぞれの説明は第1実施形態と同様であるので省略する。
動作記憶部15は、後述する動作補正部20により補正した動作情報をそれぞれのロボットアーム毎に「ロボットID」で識別して、動作情報データベース17に記憶する。
把持位置検出部23は、人4がロボットアーム5A若しくは5Bを把持するとき、人4が、ロボットアーム5A若しくはロボットアーム5Bのどの部分を把持して操作しているかを検出する。具体的には、カメラなどの画像撮像装置19の画像データより、操作している人4の手4aの画像認識を把持位置検出部23で行い、その手4aが、ロボットアーム5A及びロボットアーム5Bの前腕リンク32か上腕リンク33かハンド30かのいずれを把持して操作しているかを把持位置検出部23で検出する。
制御パラメータ管理部21は、動作補正部20又は制御方法切替部16の指示に基づいて、ロボットアーム5A及びロボットアーム5Bの制御モードの切り替え及びそれぞれのロボットアーム5A,5Bのインピーダンス計算部51で出力する手先位置及び姿勢目標補正出力rd△の設定及び目標軌道生成部55への動作情報の設定を行う。動作補正部20又は制御方法切替部16から、ロボットアーム5A,5Bを識別する「ロボットID」と共に、動作情報又は制御方法の切り替えの指令を制御パラメータ管理部21が受けて、制御パラメータ管理部21から制御部20に指令を出すが、それぞれのロボットアーム5A,5Bへの指令の内容及び指令を受けた後の制御部20の動作は第1実施形態と同様であるので、説明は省略する。
制御方法切替部16は、ロボットIDで識別されたそれぞれのロボットアーム毎に、把持位置検出部23で検出された把持位置(どのロボットアーム5A,5Bのどの位置か)と、力検出部特性データベース18に記憶された情報とにより、人4がロボットアーム5A,5Bを把持して力のパラメータを補正する際の制御方法を切り替える。
具体的には、図25Aの力検出特性データベース18において、把持位置検出部23で検出されたロボットアーム5A,5Bの識別ID(「ロボットID」)と「把持位置ID」(「把持位置ID」は第1実施形態と同様に、図25Bより「把持位置」から「把持位置ID」を求める。)により、「検出の有無」と「抗力の影響の可能性の有無」とを参照し、第1実施形態と同様に、図11のフローチャートにより、制御方法を決定する。
力検出部53により、第1実施形態と同様の方法で、全ての把持位置での力を検出し、制御パラメータ管理部21を介して、動作補正部20に入力される。
力算出部28は、制御方法切替部16で、複数のロボットアーム5A,5Bの把持位置で検出した力の情報から、力算出方法テーブル81を使用して、それぞれのロボットアーム5A,5Bの動作補正に使用する力を算出する。
図26Aは、力算出方法テーブル81の例である。
「算出方法」は、力算出部28で、力検出部53により検出された複数のロボットアーム5A,5Bの力に関する情報(力情報)から、それぞれのロボットアーム5A,5Bの動作補正に使用する力に関する情報(力情報)をどのような方法で算出するかを記述したものである。具体的には、それぞれのロボットアーム5A,5Bの複数の力情報の中から最大値を算出して、全てのロボットアーム5A,5Bの補正値とする場合には「最大」と記述する。また、複数の力情報の中から最小値を算出して、全てのロボットアーム5A,5Bの補正値とする場合には「最小」と記述する。また、複数の力情報の平均値を算出して、全てのロボットアーム5A,5Bの補正値とする場合には「平均」と記述する。また、複数の力情報を合算して、全てのロボットアーム5A,5Bの補正値とする場合には「合算」と記述する。また、複数の力情報に重み係数を乗算した後に合算して算出する場合には「重み付け」と記述する。
具体的には、力算出部28は、力算出方法テーブル81を参照し、例えば「フラグ」が「1」となっている「算出方法」に従って算出する。図26Aに示す力算出方法テーブル81の場合では、「合算」が「1」となっているので、それぞれのロボットアーム5A,5Bの把持位置での力検出部53の出力値の全ての値を力算出部28で合算して算出する。
「フラグ」は、複数ある算出方法から、どの算出方法が有効かを示すフラグで、この例では、「合算」値を算出する方法が「1」なので、力算出部28において「合算」値を算出する方法が有効であることを示している。よって、それぞれの把持位置で力算出部28により検出した力の情報を、力算出部28により、全て合算する。力算出部28により合算した力の値を、動作補正部20に出力する。
なお、図26Aの「算出方法」が「重み付け」の場合には、図26Aのように、(「フラグ」,「係数ID」)として記述し、「フラグ」は、どの算出方法を使って算出するかを示すフラグであり、「係数ID」は、図26Cに示す。係数IDで示す重み付けの係数を示している。
力算出部28は、図26Aのように「算出方法」が「重み付け」のときの係数IDが「4」の場合は、図26Cより、係数が(0.6,0.4)であることを予め取得しておくこの係数に基づいて、2つのロボットアーム5A,5Bからの力の値について、一番目のロボットアーム5Aで力検出部53により検出された力の値に0.6を力算出部28で乗じ、二番目のロボットアーム5Bで力検出部53により検出された力の値に0.4を力算出部28で乗じ、それぞれ係数を乗じた値を力算出部28で合算して算出する。3つのロボットアーム5の場合には、図26Cの「係数ID」の「3」を使うことで算出することができる。
動作補正部20は、力算出部28で算出された力の補正値を使って、第1実施形態と同様に、動作情報データベース17の動作情報を補正することで、人4が補正した値に動作を補正することが可能となる。
以上により、人4が、複数のロボットアーム5A,5Bを、1箇所以上把持した場合であっても、力検出部53と力算出部28とにより、力を正しく検出することができる。さらに、力算出部28を設けることで、複数のロボットアーム5A,5Bのうちの片方のロボットアーム5A又は5Bを把持して操作するだけで、把持していないロボットアーム5B又は5Aの動作を補正することが可能となる。さらに、人4が高齢者又は子供である場合に、補正すべき力が不足している場合であっても、算出方法を「合算」とすることで、より大きな力を加えることが可能となる。また、子供と大人がそれぞれ把持している場合には、「算出方法」として「最大」を力算出部28で選択することで、子供が加えた力よりも大人が加えた力を優先して設定することができる。また、人4が1人で両手を使って操作をしている場合に、「算出方法」として「最大」を力算出部28で選択することで、力を強く加えることができる利き腕の力を、利き腕でない腕の力よりも優先して設定することができる。さらに、複数個所を把持している場合に、急激な力を加えて危険な状態になることを防ぐために、「算出方法」として「最小」若しくは「平均」若しくは「重み付け」を選択することで、より安全に操作をすることが可能となる。
なお、この例では、「算出方法」を「合算」としたが、どの算出方法を選ぶかをデータ入力IF26などで人4が入力しても良い。その場合には、データ入力IF26で入力された「算出方法」のフラグに「1」を設定する。また、操作する人4の状態(例えば高齢者又は子供など)により、例えば図26Bのように、ID1〜ID3を、適宜、切り替えて算出しても良い。この場合、データ入力IF26を使用して、「高齢者」若しくは「子供」かどうかを識別するIDを入力するか、若しくは、年齢を入力し、65歳以上であれば「高齢者」と判断し、15歳以下であれば「子供」と力算出部28で判断することにより、人が高齢者若しくは子供であることを検出することができる。
なお、前記第1〜第3実施形態では、ロボットアーム5を例に説明したが、本発明は、アームに限らず、車輪により動く移動ロボット、又は、2足歩行ロボット、多足歩行ロボットなどにも適用することができ、移動ロボットなどと人間との接触に関して同様の効果を発揮する。
なお、前記第1〜第3実施形態においては、動作情報取得部の一例として動作情報データベース17を説明しているが、動作情報取得部としては、データベースに限定されるものではなく、前記ロボットアームの前記動作に関する動作情報を取得する機能を有するものならば、サーバーなどの別の装置に記憶されているデータベースからネットワークンなどを使用して前記情報を取得可能な手段で構成するようにしてもよい。
また、前記第1〜第3実施形態においては、特性情報取得部の一例として力検出部特性データベース18を説明しているが、特性情報取得部としては、データベースに限定されるものではなく、前記把持位置検出部で検出された前記把持位置で前記人が把持した際の力の検出の有無に関する情報と、前記把持位置で前記人が把持て前記ロボットアームによる前記作業を行うときに接触面からの抗力の影響の有無に関する情報とを有する特性情報を取得する機能を有するものならば、サーバーなどの別の装置に記憶されているデータベースからネットワークンなどを使用して前記情報を取得可能な手段で構成するようにしてもよい。
さらに、前記様々な実施形態のうちの任意の実施形態を適宜組み合わせることにより、それぞれの有する効果を奏するようにすることができる。
本発明は、家庭用ロボットなど人とロボットが協調して作業を行う際のロボットアームの動作の制御を行なうロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路として有用である。また、家庭用ロボットに限らず、産業用ロボット、又は、生産設備等における可動機構のロボットアームの制御装置及び制御方法、ロボットアームの制御装置を有するロボット、ロボットアームの制御プログラム、並びに、集積電子回路としても適用が可能である。
本発明は、添付図面を参照しながら好ましい実施形態に関連して充分に記載されているが、この技術の熟練した人々にとっては種々の変形又は修正は明白である。そのような変形又は修正は、添付した請求の範囲による本発明の範囲から外れない限りにおいて、その中に含まれると理解されるべきである。