(57)【要約】【課題】経時的に変化する、ワークからロボットに掛かる外力を正確に推定する技術が求められている。【解決手段】ロボット制御装置５０は、ロボット１２がワークを取り上げる間に変動する環境によるワーク支持力の計測データを取得する支持力データ取得部５８と、ロボット１２に加わる外乱値を、ロボット１２の状態情報を用いて推定する外乱推定部６４と、外乱推定部６４が推定した外乱値、または、外乱推定部６４に入力される状態情報を、支持力データ取得部５８が取得した計測データを用いて補正する補正部６６とを備える。【選択図】図２
2018089744.tif 000002
【特許請求の範囲】
【請求項１】
環境に支持されたワークを取り上げるロボットを制御するロボット制御装置であって、
前記ロボットが前記ワークを取り上げる間に変動する前記環境によるワーク支持力の計測データを取得する支持力データ取得部と、
前記ロボットに加わる外乱値を、該ロボットの状態情報を用いて推定する外乱推定部と、
前記外乱推定部が推定した前記外乱値、または、前記外乱推定部に入力される前記状態情報を、前記支持力データ取得部が取得した前記計測データを用いて補正する補正部と、を備える、ロボット制御装置。
【請求項２】
前記補正部は、
前記ワークに作用する重力から前記計測データを減算して変動ワーク荷重を求め、
前記外乱値から前記変動ワーク荷重を減算することにより、該外乱値を補正する、請求項１に記載のロボット制御装置。
【請求項３】
前記外乱推定部は、前記ロボットに作用する力を計測可能な力センサの計測データを前記状態情報として用いて、前記外乱値を推定し、
前記補正部は、
前記力センサの前記計測データに含まれる、前記変動ワーク荷重に起因して前記ロボットに作用する前記力の成分を求め、
前記外乱値から前記成分を減算することにより、前記外乱値を補正する、請求項２に記載のロボット制御装置。
【請求項４】
前記補正部は、
前記ワークに作用する重力から前記計測データを減算して変動ワーク荷重を求め、
前記変動ワーク荷重に起因する状態変化に基づいて前記状態情報を補正し、
前記外乱推定部は、前記補正部が補正した前記状態情報を用いて、前記外乱値を推定する、請求項１に記載のロボット制御装置。
【請求項５】
前記ロボットは、前記ワークを把持可能なロボットハンドを有し、
前記補正部は、前記状態情報として前記ロボットハンドに作用する力を計測する力センサの計測データから前記変動ワーク荷重に起因する成分を減算することにより、前記状態情報を補正する、請求項４に記載のロボット制御装置。
【請求項６】
前記外乱推定部が推定した前記外乱値が予め定められた閾値を超えたときに、該外乱値に従って前記ロボットを動作させる指令を生成する追随指令部をさらに備える、請求項５に記載のロボット制御装置。
【請求項７】
前記補正部が補正した前記外乱値、または、前記補正部が補正した前記状態情報を用いて前記外乱推定部が推定した前記外乱値が、予め定められた閾値を超えたときに、前記ロボットを停止または退避させる指令を生成する動作指令部をさらに備える、請求項１〜６のいずれか１項に記載のロボット制御装置。
【請求項８】
環境に支持されたワークを取り上げるロボットに加わる外乱値を推定する方法であって、
前記ロボットが前記ワークを取り上げる間に変動する前記環境によるワーク支持力の計測データを取得することと、
前記ロボットに加わる外乱値を、該ロボットの状態情報を用いて推定することと、
推定した前記外乱値または前記状態情報を、取得した前記計測データを用いて補正することと、を備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットを制御するロボット制御装置、およびロボットに加わる外乱値を推定する方法に関する。
【背景技術】
【０００２】
ロボットに掛かる外力を推定する技術が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３５５７８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ロボットでワークを持ち上げるとき、ワークが治具の上面に接触している状態から、該ワークが該上面から離間した状態へ移る過程において、該ワークからロボットに掛かる外力は、経時的に変化することになる。このように、経時的に変化する、ワークからロボットに掛かる外力を正確に推定する技術が求められている。
【課題を解決するための手段】
【０００５】
本発明の一態様において、環境に支持されたワークを取り上げるロボットを制御するロボット制御装置は、ロボットがワークを取り上げる間に変動する環境によるワーク支持力の計測データを取得する支持力データ取得部と、ロボットに加わる外乱値を、ロボットの状態情報を用いて推定する外乱推定部とを備える。
【０００６】
このロボット制御装置は、外乱推定部が推定した外乱値、または、外乱推定部に入力される状態情報を、支持力データ取得部が取得した計測データを用いて補正する補正部を備える。
【０００７】
補正部は、ワークに作用する重力から計測データを減算して変動ワーク荷重を求め、外乱値から変動ワーク荷重を減算することにより、該外乱値を補正してもよい。
【０００８】
外乱推定部は、ロボットに作用する力を計測可能な力センサの計測データを状態情報として用いて、外乱値を推定してもよい。補正部は、力センサの計測データに含まれる、変動ワーク荷重に起因してロボットに作用する力の成分を求め、外乱値から成分を減算することにより、外乱値を補正してもよい。
【０００９】
補正部は、変動ワーク荷重に起因する状態変化に基づいて状態情報を補正してもよい。外乱推定部は、補正部が補正した状態情報を用いて、外乱値を推定してもよい。
【００１０】
ロボットは、ワークを把持可能なロボットハンドを有してもよい。補正部は、状態情報としてロボットハンドに作用する力を計測する力センサの計測データから変動ワーク荷重に起因する成分を減算することにより、状態情報を補正してもよい。
【００１１】
ロボット制御装置は、外乱推定部が推定した外乱値が予め定められた閾値を超えたときに、該外乱値に従ってロボットを動作させる指令を生成する追随指令部をさらに備えてもよい。
【００１２】
ロボット制御装置は、補正部が補正した外乱値、または、補正部が補正した状態情報を用いて外乱推定部が推定した外乱値が、予め定められた閾値を超えたときに、ロボットを停止または退避させる指令を生成する動作指令部をさらに備えてもよい。
【００１３】
本発明の他の態様において、環境に支持されたワークを取り上げるロボットに加わる外乱値を推定する方法は、ロボットがワークを取り上げる間に変動する環境によるワーク支持力の計測データを取得することと、ロボットに加わる外乱値を、ロボットの状態情報を用いて推定することと、推定した外乱値または状態情報を、取得した計測データを用いて補正することとを備える。
【図面の簡単な説明】
【００１４】
【図１】一実施形態に係るロボットシステムの図である。
【図２】図１に示すロボットシステムのブロック図である。
【図３】図１に示すロボットシステムの動作フローの一例を示すフローチャートである。
【図４】図１に示すロボットシステムの動作フローの他の例を示すフローチャートである。
【図５】他の実施形態に係るロボットシステムの図である。
【図６】図５に示すロボットシステムのブロック図である。
【図７】さらに他の実施形態に係るロボットシステムの図である。
【図８】図７に示すロボットシステムのブロック図である。
【図９】図７に示すロボットシステムの動作フローの一例を示すフローチャートである。
【図１０】さらに他の実施形態に係るロボットシステムの図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する種々の実施形態において、同様の要素には同じ符号を付し、詳細な説明を省略する。まず、図１および図２を参照して、一実施形態に係るロボットシステム１０について説明する。
【００１６】
ロボットシステム１０は、環境４０の上に載置されたワークＷを取り上げて搬送するためのシステムである。本実施形態においては、ワークＷは、可撓性の長尺なチューブ状部材である。
【００１７】
ロボットシステム１０は、ロボット１２、力センサ１４、およびロボット制御装置５０を備える。ロボット１２は、垂直多関節ロボットであって、ロボットベース１８、旋回胴２０、ロボットアーム２２、手首部２４、およびロボットハンド２６を有する。ロボットベース１８は、ワークセルの床Ａに固定されている。
【００１８】
旋回胴２０は、ロボットベース１８に鉛直軸周りに旋回可能に設けられている。ロボットアーム２２は、旋回胴２０に回動可能に取り付けられた上腕部２８と、該上腕部２８の先端に回動可能に取り付けられた前腕部３０とを有する。手首部２４は、前腕部３０の先端に設けられ、ロボットハンド２６を３軸周りに回動可能に支持している。
【００１９】
ロボットハンド２６は、手首部２４に連結されたハンドベース３２と、該ハンドベース３２に開閉可能に設けられた複数の指部３４と、該指部３４を駆動する指部駆動部（図示せず）とを有する。
【００２０】
指部駆動部は、例えばエアシリンダを有し、ロボット制御装置５０からの指令に応じて、指部３４を開閉させる。このように、ロボットハンド２６は、指部３４を開閉することによって、ワークＷを把持したり、解放したりすることができる。
【００２１】
ロボット１２は、複数のサーボモータ３８（図２）を有する。サーボモータ３８は、旋回胴２０、ロボットアーム２２、および手首部２４にそれぞれ内蔵され、ロボット制御装置５０からの指令に応じて、これら要素を回動軸周りに回動させる。
【００２２】
サーボモータ３８の各々は、トルクセンサまたはエンコーダ（図示せず）を有し、サーボモータ３８に掛かる負荷トルク、またはサーボモータ３８の回転速度等のフィードバック情報を、ロボット制御装置５０へ出力する。
【００２３】
力センサ１４は、ワークＷが載置される環境４０に設けられ、ワークＷから環境４０に掛かる荷重Ｌを計測する。本実施形態においては、力センサ１４は、例えば、歪ゲージまたは重量計等から構成され、鉛直下方へ作用する荷重を検出可能である。力センサ１４は、計測した荷重に関する計測データを、ロボット制御装置５０へ送信する。
【００２４】
ロボット制御装置５０は、ロボット１２の各構成要素を制御する。具体的には、図２に示すように、ロボット制御装置５０は、ＣＰＵ５２、システムメモリ５４、ワークメモリ５６、入力／出力インターフェース（Ｉ／Ｏインターフェース）５８、および駆動部６０を備える。
【００２５】
ＣＰＵ５２は、システムメモリ５４、ワークメモリ５６、およびＩ／Ｏインターフェース５８と、バス６２を介して通信可能に接続されており、これらの要素と通信しつつ、後述する各種プロセスを実行する。
【００２６】
システムメモリ５４は、電気的に消去・記録可能な不揮発性メモリであり、例えば、ＥＥＰＲＯＭ（登録商標）等から構成される。システムメモリ５４は、ＣＰＵ５２が各種プロセスを実行するのに要する定数、変数、設定値、プログラム等を、ロボットシステム１０の非動作時にも失われないように記録している。
【００２７】
ワークメモリ５６は、ＣＰＵ５２が各種プロセスを実行するのに要するデータを一時的に保管する。また、ワークメモリ５６には、システムメモリ５４に記録されている定数、変数、設定値、パラメータ、プログラム等が適宜展開され、ＣＰＵ５２は、ワークメモリ５６に展開されたデータを、各種プロセスを実行するために利用する。
【００２８】
Ｉ／Ｏインターフェース５８は、力センサ１４と通信可能に接続され、ＣＰＵ５２からの指令の下、力センサ１４から計測データを受信する。また、Ｉ／Ｏインターフェース５８は、各サーボモータ３８から発信されるフィードバック情報を受信する。また、Ｉ／Ｏインターフェース５８は、表示部、スピーカ、または上位コントローラ等の外部機器と通信可能に接続され、ＣＰＵ５２からの指令の下、これら外部機器と通信する。
【００２９】
Ｉ／Ｏインターフェース５８は、例えばイーサネットポートまたはＵＳＢポート等から構成され、力センサ１４、各サーボモータ３８、および外部機器と有線で通信してもよい。または、Ｉ／Ｏインターフェース５８は、例えばＷｉ−Ｆｉまたは無線ＬＡＮを介して、力センサ１４、各サーボモータ３８、および外部機器と無線で通信してもよい。
【００３０】
駆動部６０は、ＣＰＵ５２からの指令の下、ロボット１２に内蔵された各サーボモータ３８を駆動する。具体的には、駆動部６０は、例えばインバータまたはサーボアンプを有し、各サーボモータ３８へ指令（速度指令、トルク指令等）を送り、これらサーボモータ３８を駆動させる。
【００３１】
次に、図３を参照して、ロボットシステム１０の動作の一例について説明する。図３に示すフローは、ＣＰＵ５２が、オペレータ、上位コントローラ、またはロボットプログラム等から、ワークＷを搬送する搬送指令を受け付けたときに、開始する。
【００３２】
ステップＳ１において、ＣＰＵ５２は、ワーク搬送スキームを実行する。具体的には、ＣＰＵ５２は、ロボットプログラムに従って各サーボモータ３８への指令を生成し、駆動部６０を通して、サーボモータ３８へ送信する。こうして、ＣＰＵ５２は、ロボット１２を動作させて、ロボットハンド２６でワークＷの一端Ｂを把持して取り上げて、該ワークＷを搬送する一連の動作スキームを実行する。
【００３３】
ステップＳ２において、ＣＰＵ５２は、環境４０によってワークＷが支持される力（すなわち、ワーク支持力）を取得する。具体的には、ＣＰＵ５２は、力センサ１４に計測指令を送信する。力センサ１４は、ＣＰＵ５２から計測指令を受信すると、ワークＷから環境４０に作用する荷重Ｌを計測する。この荷重Ｌは、ワーク支持力に一致する。
【００３４】
ここで、ロボット１２が図１に示すワークＷの一端Ｂを取り上げて搬送する間に、ワークＷから環境４０に作用する荷重Ｌは、経時的に変動することになる。力センサ１４は、計測指令を受信した時点における荷重Ｌ（すなわち、ワーク支持力）を計測し、計測データをＩ／Ｏインターフェース５８へ送信する。
【００３５】
Ｉ／Ｏインターフェース５８は、力センサ１４からの計測データを取得し、ＣＰＵ５２は、Ｉ／Ｏインターフェース５８が取得した計測データを、ワークメモリ５６に記憶する。このように、本実施形態においては、Ｉ／Ｏインターフェース５８は、力センサ１４からワーク支持力の計測データを取得する支持力データ取得部として機能する。
【００３６】
ステップＳ３において、ＣＰＵ５２は、ロボット１２に加わる外乱値ＤＴ１を推定する。具体的には、Ｉ／Ｏインターフェース５８は、各サーボモータ３８から発信されるフィードバック情報を受信する。ＣＰＵ５２は、Ｉ／Ｏインターフェース５８が受信したフィードバック情報を、ロボット１２の状態情報として、ワークメモリ５６に記憶する。
【００３７】
ＣＰＵ５２は、取得したフィードバック情報と、ロボット１２の力学的パラメータ（ロボット１２の各構成要素の位置および姿勢、質量、質量中心、動作速度、慣性行列等）とに基づいて、ロボット１２に作用する全ての力の合力を算出する。
【００３８】
一方、ＣＰＵ５２は、ロボット１２の各構成要素の質量と、該ロボット１２に取り付けられた他の部材（例えば視覚センサ）の質量と、ロボット１２が動作することよって生じる慣性力とに起因してロボット１２に作用する力（本稿では「内力」として言及する）を算出する。この内力は、ロボット１２の力学的パラメータを、公知の運動方程式に代入することによって、算出できる。
【００３９】
ＣＰＵ５２は、各サーボモータ３８から受信したフィードバック情報から求めた合力から内力を減算することにより、ロボット１２に加わる外力を表す外乱値ＤＴ１を推定する。このように、本実施形態においては、ＣＰＵ５２は、ロボット１２に加わる外乱値ＤＴ１を推定する外乱推定部６４（図２）として機能する。
【００４０】
この外乱値ＤＴ１は、ワークＷの重力に起因して該ワークＷからロボットハンド２６に加わる力に対応するワーク外乱値ＤＷ１と、ロボット１２の周囲の物体（例えば、オペレータまたは障害物）が、ロボット１２（またはワークＷ）と接触することによって該物体からロボット１２に加わる力に対応する接触外乱値ＤＣ１とを含む。
【００４１】
ステップＳ４において、ＣＰＵ５２は、外乱値ＤＴ１を補正する。具体的には、ＣＰＵ５２は、ワークＷに作用する重力Ｇから、ステップＳ２で取得した計測データに含まれる荷重Ｌを減算し、変動ワーク荷重ＬＷ（＝Ｇ−Ｌ）を求める。この変動ワーク荷重ＬＷは、ステップＳ２の開始時点でワークＷからロボットハンド２６に掛かっているワーク外乱値ＤＷ１と見做すことができる。
【００４２】
次いで、ＣＰＵ５２は、ステップＳ３で推定した外乱値ＤＴ１を、該外乱値ＤＴ１から変動ワーク荷重ＬＷを減算するように補正して、補正外乱値Ｅ１（＝ＤＴ１−ＬＷ）を求める。この補正外乱値Ｅ１は、上述の接触外乱値ＤＣ１と見做すことができる。
【００４３】
このように、本実施形態においては、ＣＰＵ５２は、外乱値ＤＴ１を補正する補正部６６（図２）として機能する。
【００４４】
ステップＳ５において、ＣＰＵ５２は、補正外乱値Ｅ１が予め定められた閾値α以上（すなわち、｜Ｅ１｜≧α）であるか否かを判定する。この閾値αは、補正外乱値Ｅ１に対して予め定められ、システムメモリ５４に記憶される。
【００４５】
ＣＰＵ５２は、補正外乱値Ｅ１が閾値α以上である（すなわちＹＥＳ）と判定した場合、ステップＳ８へ進む。一方、ＣＰＵ５２は、補正外乱値Ｅ１が閾値αよりも小さい（すなわちＮＯ）と判定した場合、ステップＳ６へ進む。
【００４６】
ステップＳ６において、ＣＰＵ５２は、ステップＳ１で実行しているワーク搬送スキームが適切に完了したか否かを判定する。ＣＰＵ５２は、ワーク搬送スキームが適切に完了した（すなわちＹＥＳ）と判定した場合、ステップＳ７へ進む。一方、ＣＰＵ５２は、ワーク搬送スキームが完了していない（すなわちＮＯ）と判定した場合、ステップＳ２へ戻る。
【００４７】
ステップＳ７において、ＣＰＵ５２は、ロボット１２の動作を停止する。具体的には、ＣＰＵ５２は、各サーボモータ３８を停止する指令を生成し、各サーボモータ３８に送信する。これにより、ロボット１２は、停止する。ステップＳ７を実行した後、ＣＰＵ５２は、図３に示すフローを終了する。
【００４８】
一方、ステップＳ５でＹＥＳと判定した場合、ステップＳ８において、ＣＰＵ５２は、ロボット１２を停止する動作、またはロボット１２を退避させる動作を実行する。具体的には、ＣＰＵ５２は、各サーボモータ３８を停止する指令を生成し、駆動部６０を通して、各サーボモータ３８へ送信する。これにより、ロボット１２は、停止する。
【００４９】
または、ＣＰＵ５２は、補正外乱値Ｅ１の方向へロボット１２の構成要素（例えば、ロボットアーム２２またはロボットハンド２６）を移動させるための指令を、駆動部６０を通して、各サーボモータ３８へ送信する。これにより、周囲の物体とロボット１２との接触によって該ロボット１２に掛かる力の方向へ、ロボット１２の構成要素を退避させることができる。
【００５０】
このように、本実施形態においては、ロボット１２を停止または退避する指令を生成する動作指令部６８（図２）として機能する。
【００５１】
ステップＳ９において、ＣＰＵ５２は、警告を生成する。例えば、ＣＰＵ５２は、「ロボットが周囲の物体と接触しました」という警告を表す画像データまたは音声データを生成する。
【００５２】
そして、ＣＰＵ５２は、Ｉ／Ｏインターフェース５８を介して、生成した画像データまたは音声データを、表示部またはスピーカへ送信し、該表示部または該スピーカを通してオペレータに報知する。
【００５３】
ステップＳ９の後、ＣＰＵ５２は、図３に示すフローを終了する。ＣＰＵ５２は、ステップＳ５またはＳ６でＹＥＳと判定するまで、ステップＳ２〜Ｓ６を、例えば周期Ｔ（１秒）で、繰り返し実行する。
【００５４】
上述したように、本実施形態においては、ＣＰＵ５２は、力センサ１４が計測した荷重Ｌ（ワーク支持力）に基づいて、ワークＷの重力に起因して該ワークＷからロボットハンド２６に掛かる力に対応するワーク外乱値ＤＷ１（すなわち、変動ワーク荷重ＬＷ）を求めている。
【００５５】
そして、ＣＰＵ５２は、外乱値ＤＴ１からワーク外乱値ＤＷ１を除去するように補正し、接触外乱値ＤＣ１（すなわち、補正外乱値Ｅ１）を求めている。この構成によれば、ワークＷによる荷重Ｌ（ワーク外乱値ＤＷ）が経時的に変動する場合においても、接触外乱値ＤＣ１を高精度に推定することができる。したがって、ロボット１２の周囲の物体がロボット１２（またはワークＷ）と接触したことを、高精度に検出することができる。
【００５６】
ここで、例えば外部の物体またはオペレータからワークＷに外力が加えられたときに、該外力が、ワークＷを通してロボットハンド２６に伝達しない場合がある（例えば、オペレータが、ワークＷのうち、環境４０と接触している部分に外力を加えた場合等）。
【００５７】
このような外力（以下、「非伝達外力」として言及する）は、ロボット１２に加わる外乱値ＤＴ１には含まれない一方、力センサ１４によって検出される荷重Ｌに含まれることになる。
【００５８】
上述したように、本実施形態においては、ＣＰＵ５２は、上述のステップＳ４において、変動ワーク荷重ＬＷ（＝Ｇ−Ｌ）を求め、該変動ワーク荷重を用いて補正外乱値Ｅ１（＝ＤＴ１−ＬＷ）を求めている。
【００５９】
したがって、非伝達外力の成分は、補正外乱値Ｅ１に含まれることになるので、仮に、ステップＳ１でワークＷに非伝達外力が加えられたとしても、ステップＳ５を実行することによって、このような非伝達外力を結果的に検出することができる。このように、本実施形態によれば、ロボット１２に加わる接触外乱値ＤＣ１のみならず、非伝達外力も検出することができる。
【００６０】
次に、図４を参照して、ロボットシステム１０の動作の他の例について説明する。なお、図４に示すフローにおいて、図３に示すフローと同様のプロセスには同じステップ番号を付し、詳細な説明を省略する。
【００６１】
図４に示すフローを開始した後、ＣＰＵ５２は、図３に示すフローと同様に、ステップＳ１およびＳ２を順次実行する。
【００６２】
ステップＳ２の後、ステップＳ１１において、ＣＰＵ５２は、ロボット１２の状態情報を取得する。具体的には、ＣＰＵ５２は、Ｉ／Ｏインターフェース５８を介して、各サーボモータ３８からフィードバック情報を取得し、ロボット１２の状態情報として、ワークメモリ５６に記憶する。
【００６３】
ステップＳ１２において、ＣＰＵ５２は、状態情報を補正する。具体的には、ＣＰＵ５２は、上述の変動ワーク荷重ＬＷ（＝Ｇ−Ｌ）を算出する。次いで、ＣＰＵ５２は、変動ワーク荷重ＬＷに起因するロボット１２の状態変化に基づいて、状態情報を補正する。
【００６４】
ここで、ロボットハンド２６に変動ワーク荷重ＬＷ（すなわち、ワーク外乱値）が加えられると、ロボット１２の各構成要素（旋回胴２０、ロボットアーム２２、手首部２４、およびロボットハンド２６）の状態（各構成要素に係る負荷トルク、各構成要素の位置および姿勢）が変化する。
【００６５】
この状態変化によって、ロボット１２に内蔵されている各サーボモータ３８に外乱トルクが掛かり、また、各サーボモータ３８の回転速度が変化する。このような外乱トルクまたは回転速度の変化量は、変動ワーク荷重ＬＷから算出できる。
【００６６】
そこで、ＣＰＵ５２は、ステップＳ１１で取得したサーボモータ３８のフィードバック情報から、変動ワーク荷重ＬＷに起因する成分を除去するように、該フィードバック情報を補正する。
【００６７】
例えば、ＣＰＵ５２は、フィードバック情報に含まれる負荷トルクから、外乱トルクを減算し、または、フィードバック情報に含まれる回転速度から、変動ワーク荷重ＬＷに起因する回転速度の変化量を減算する。このように、ＣＰＵ５２は、ロボット１２の状態情報を補正する補正部６６（図１）として機能する。
【００６８】
ステップＳ１３において、ＣＰＵ５２は、外乱値Ｅ１を推定する。具体的には、ＣＰＵ５２は、ステップＳ１２で補正したフィードバック情報から、ロボット１２に作用する力の合力を算出する。
【００６９】
この合力は、ロボット１２に作用する内力と、周囲の物体がロボット１２（またはワークＷ）と接触することによって該物体からロボット１２に加わる力の合力であって、ワークＷの重力に起因して該ワークＷからロボット１２に加わる力を含んでいない。そして、ＣＰＵ５２は、算出した合力から内力を減算することにより、ロボット１２に加わる外乱値Ｅ１を推定する。
【００７０】
この外乱値Ｅ１は、ワーク外乱値ＤＷ１を含んでおらず、故に、接触外乱値ＤＣ１に一致する値となる。このように、本実施形態においては、ＣＰＵ５２は、ロボット１２に加わる外乱値Ｅ１を推定する外乱推定部６４（図２）として機能する。
【００７１】
ステップＳ１４において、ＣＰＵ５２は、ステップＳ１３で推定した外乱値Ｅ１が予め定められた閾値α以上（すなわち、｜Ｅ１｜≧α）であるか否かを判定する。この閾値αは、外乱値Ｅ１に対して予め定められ、システムメモリ５４に記憶される。
【００７２】
ＣＰＵ５２は、外乱値Ｅ１が閾値α以上である（すなわちＹＥＳ）と判定した場合、ステップＳ８へ進む。一方、ＣＰＵ５２は、外乱値Ｅ１が閾値αよりも小さい（すなわちＮＯ）と判定した場合、ステップＳ６へ進む。
【００７３】
ステップＳ１４の後、ＣＰＵ５２は、図３に示すフローと同様に、ステップＳ６およびＳ７、またはステップＳ８およびＳ９を順次実行する。
【００７４】
上述したように、本実施形態においては、ＣＰＵ５２は、サーボモータ３８のフィードバック情報を、ワーク外乱値ＤＷ１の成分を除去するように補正し、補正したフィードバック情報に基づいて、接触外乱値ＤＣ１に一致する外乱値Ｅ１を推定している。
【００７５】
この構成によれば、ワークＷによる荷重Ｌ（ワーク外乱値ＤＷ）が経時的に変動する場合においても、接触外乱値ＤＣ１を高精度に推定することができる。したがって、ロボット１２の周囲の物体がロボット１２（またはワークＷ）と接触したことを、高精度に検出することができる。また、ロボット１２に加わる接触外乱値ＤＣ１のみならず、上述の非伝達外力も検出することができる。
【００７６】
次に、図５および図６を参照して、他の実施形態に係るロボットシステム７０について説明する。ロボットシステム７０は、ロボット１２、第１の力センサ１４、第２の力センサ７２、およびロボット制御装置８０を備える。
【００７７】
第２の力センサ７２は、ロボットベース１８に設けられている。第２の力センサ７２は、例えば、複数の歪みゲージを有する６軸力覚センサから構成され、第２の力センサ７２に生じた歪みに応じた出力信号を、ロボット制御装置８０に送信する。
【００７８】
図６に示すように、ロボット制御装置８０は、ＣＰＵ８２、システムメモリ５４、ワークメモリ５６、Ｉ／Ｏインターフェース５８、および駆動部６０を備える。Ｉ／Ｏインターフェース５８は、第２の力センサ７２と通信可能に接続され、ＣＰＵ８２からの指令の下、第２の力センサ７２から出力信号を受信する。
【００７９】
次に、図３を参照して、ロボットシステム７０の動作の一例について説明する。ステップＳ１において、ＣＰＵ８２は、上述の実施形態と同様に、ワーク搬送スキームを実行する。
【００８０】
ステップＳ２において、ＣＰＵ８２は、上述の実施形態と同様に、ワーク支持力を取得する。具体的には、ＣＰＵ８２は、第１の力センサ１４に計測指令を送信する。第１の力センサ１４は、ＣＰＵ８２から計測指令を受信すると、ワークＷから環境４０に作用する荷重Ｌを計測する。この荷重Ｌは、ワーク支持力に一致する。
【００８１】
第１の力センサ１４は、計測指令を受信した時点における荷重Ｌ（すなわち、ワーク支持力）を計測し、計測データをＩ／Ｏインターフェース５８へ送信する。Ｉ／Ｏインターフェース５８は、支持力データ取得部として機能して、第１の力センサ１４からの計測データを取得する。ＣＰＵ８２は、Ｉ／Ｏインターフェース５８が取得した計測データを、ワークメモリ５６に記憶する。
【００８２】
ステップＳ３において、ＣＰＵ８２は、ロボット１２に加わる外乱値ＤＴ２を推定する。具体的には、ＣＰＵ８２は、第２の力センサ７２から、Ｉ／Ｏインターフェース５８を介して出力信号を受信する。
【００８３】
ＣＰＵ８２は、第２の力センサ７２から受信した出力信号をフィルタリングし、該出力信号からノイズ成分を除去する。例えば、ＣＰＵ８２は、第２の力センサ７２からの出力信号に、ローパスフィルタ、算術平均、重みづけ平均、ＦＩＲフィルタ、またはＩＩＲフィルタ等の公知の信号処理を行うことによって、該出力信号からノイズ成分を除去する。
【００８４】
一方、ＣＰＵ８２は、例えば図５中の直交座標系に示すように、第２の力センサ７２に対してセンサ座標系ＣＳ１を設定する。ＣＰＵ８２は、第２の力センサ７２から受信した出力信号から、センサ座標系ＣＳ１のｘ軸、ｙ軸、ｚ軸の方向の力ＦＴと、ｘ軸、ｙ軸、ｚ軸周りのモーメントＭＴとを、それぞれ算出する。
【００８５】
ＣＰＵ８２は、力ＦＴとモーメントＭＴとを用いて、ロボット１２（すなわち、ロボットベース１８、旋回胴２０、ロボットアーム２２、手首部２４、およびロボットハンド２６）に作用する全ての力の合力を、第２の力センサ７２に作用する力として検出する。
【００８６】
一方、ＣＰＵ８２は、第２の力センサ７２に作用する内力を算出する。この内力は、ロボット１２の各構成要素の質量、ロボット１２の姿勢、およびロボット１２の各構成要素の動作速度を、公知の運動方程式に代入することによって、算出できる。
【００８７】
そして、ＣＰＵ８２は、求めた合力から内力を減算することにより、ロボット１２の任意の部位（ロボットベース１８、旋回胴２０、ロボットアーム２２、手首部２４、およびロボットハンド２６）に加わる外力に起因して第２の力センサ７２に作用する力を表す外乱値ＤＴ２を推定する。
【００８８】
このように、本実施形態においては、ＣＰＵ８２は、第２の力センサ７２からの出力信号から得られる力ＦＴおよびモーメントＭＴを用いて、外乱値ＤＴ２を推定している。したがって、第２の力センサ７２からの出力信号、および該出力信号から得られる力ＦＴおよびモーメントＭＴは、ロボット１２の状態情報を構成する。
【００８９】
この外乱値ＤＴ２は、ワーク外乱値ＤＷ２および接触外乱値ＤＣ２を含む。ワーク外乱値ＤＷ２は、ロボットハンド２６に加わった変動ワーク荷重ＬＷが、手首部２４、ロボットアーム２２、旋回胴２０、およびロボットベース１８を伝搬して、第２の力センサ７２に作用する力に対応する。
【００９０】
また、接触外乱値ＤＣ２は、ロボット１２の周囲の物体がロボット１２（またはワークＷ）と接触することによって該物体からロボット１２に加わる力に起因して第２の力センサ７２に作用する力に対応する。このように、本実施形態においては、ＣＰＵ８２は、ロボット１２に加わる外乱値ＤＴ２を推定する外乱推定部８４（図２）として機能する。
【００９１】
ステップＳ４において、ＣＰＵ８２は、外乱値ＤＴ２を補正する。具体的には、ＣＰＵ８２は、上述の実施形態と同様に、変動ワーク荷重ＬＷ（＝Ｇ−Ｌ）を算出する。次いで、ＣＰＵ８２は、変動ワーク荷重ＬＷに、力変換行列Ｊを乗算することによって、ワーク外乱値ＤＷ２（＝Ｊ・ＬＷ）を算出する。
【００９２】
この力変換行列Ｊは、ロボットハンド２６に掛かる変動ワーク荷重ＬＷを、第２の力センサ７２に作用する力に変換するための行列（具体的には、ヤコビ行列）である。
【００９３】
次いで、ＣＰＵ８２は、ステップＳ３で推定した外乱値ＤＴ２から、算出したワーク外乱値ＤＷ２を減算するように、該外乱値ＤＴ２を補正して、補正外乱値Ｅ２（＝ＤＴ２−ＤＷ２＝ＤＴ２−Ｊ・ＬＷ）を求める。この補正外乱値Ｅ２は、接触外乱値ＤＣ２と見做すことができる。このように、本実施形態においては、ＣＰＵ８２は、外乱値ＤＴ２を補正する補正部８６（図２）として機能する。
【００９４】
ステップＳ５において、ＣＰＵ８２は、補正外乱値Ｅ２が予め定められた閾値β以上（すなわち、｜Ｅ２｜≧β）であるか否かを判定する。この閾値βは、補正外乱値Ｅ２に対して予め定められ、システムメモリ５４に記憶される。
【００９５】
ＣＰＵ８２は、補正外乱値Ｅ２が閾値β以上である（すなわちＹＥＳ）と判定した場合、ステップＳ８へ進む。一方、ＣＰＵ８２は、補正外乱値Ｅ２が閾値βよりも小さい（すなわちＮＯ）と判定した場合、ステップＳ６へ進む。
【００９６】
ステップＳ５の後、ＣＰＵ８２は、上述の実施形態と同様に、ステップＳ６およびＳ７、またはステップＳ８およびＳ９を順次実行する。このように、ＣＰＵ８２は、ステップＳ５またはＳ６でＹＥＳと判定するまで、ステップＳ２〜Ｓ６を、例えば周期Ｔ（１秒）で、繰り返し実行する。
【００９７】
上述したように、本実施形態においては、ＣＰＵ８２は、第１の力センサ１４が計測した荷重Ｌ（ワーク支持力）から変動ワーク荷重ＬＷを求め、該変動ワーク荷重ＬＷからワーク外乱値ＤＷ２を求めている。そして、ＣＰＵ８２は、外乱値ＤＴ２からワーク外乱値ＤＷ２を除去するように補正し、接触外乱値ＤＣ２に一致する補正外乱値Ｅ２を求めている。
【００９８】
この構成によれば、ワークＷによる荷重Ｌ（ワーク外乱値ＤＷ）が経時的に変動する場合においても、接触外乱値ＤＣ２を高精度に推定することができる。したがって、ロボット１２の周囲の物体がロボット１２（またはワークＷ）と接触したことを、高精度に検出することができる。また、ロボット１２に加わる接触外乱値ＤＣ２のみならず、上述の非伝達外力も検出することができる。
【００９９】
次に、図４を参照して、ロボットシステム７０の動作の他の例について説明する。図４に示すフローを開始した後、ＣＰＵ８２は、図３に示すフローと同様に、ステップＳ１およびＳ２を順次実行する。
【０１００】
ステップＳ２の後、ステップＳ１１において、ＣＰＵ８２は、ロボット１２の状態情報を取得する。一例として、ＣＰＵ８２は、Ｉ／Ｏインターフェース５８を介して、第２の力センサ７２から出力信号（歪みに応じた信号）を取得し、ロボット１２の状態情報としてワークメモリ５６に記憶する。
【０１０１】
他の例として、ＣＰＵ８２は、第２の力センサ７２からの出力信号に基づいて、センサ座標系ＣＳ１のｘ軸、ｙ軸、およびｚ軸の方向の力ＦＴと、ｘ軸、ｙ軸、およびｚ軸周りのモーメントＭＴとをそれぞれ算出し、ロボット１２の状態情報としてワークメモリ５６に記憶する。
【０１０２】
ステップＳ１２において、ＣＰＵ８２は、状態情報を補正する。具体的には、ＣＰＵ８２は、上述の変動ワーク荷重ＬＷ（＝Ｇ−Ｌ）を算出する。次いで、ＣＰＵ８２は、変動ワーク荷重ＬＷに起因するロボット１２の状態変化に基づいて、状態情報を補正する。
【０１０３】
ここで、ロボットハンド２６に変動ワーク荷重ＬＷが加えられると、ロボット１２の各構成要素（旋回胴２０、ロボットアーム２２、手首部２４、およびロボットハンド２６）の状態（各構成要素の位置および姿勢）は、変化することになる。
【０１０４】
そして、ロボットハンド２６に加えられた変動ワーク荷重ＬＷは、手首部２４、ロボットアーム２２、旋回胴２０およびロボットベース１８を伝搬して、第２の力センサ７２に作用する。
【０１０５】
その結果、第２の力センサ７２によって得られる状態情報（すなわち、第２の力センサ７２の出力信号、または、力ＦＴおよびモーメントＭＴ）に、変動ワーク荷重ＬＷの成分が含まれることになる。
【０１０６】
そこで、ＣＰＵ８２は、このステップＳ１２において、状態情報から変動ワーク荷重ＬＷの成分を除去するように、該状態情報を補正する。
【０１０７】
一例として、ＣＰＵ８２は、第２の力センサ７２から受信した出力信号から、変動ワーク荷重ＬＷの成分を減算して、信号補正値Ｈ１を求める。第２の力センサ７２からの出力信号に含まれる変動ワーク荷重ＬＷの成分は、変動ワーク荷重ＬＷと公知の理論式とから、求めることができる。
【０１０８】
他の例として、ＣＰＵ８２は、変動ワーク荷重ＬＷに起因してセンサ座標系Ｃｓ１のｘ軸、ｙ軸、およびｚ軸の方向に掛かる荷重起因力ＦＬと、ｘ軸、ｙ軸、およびｚ軸周りに掛かる荷重起因モーメントＭＬとを、それぞれ算出する。
【０１０９】
そして、ＣＰＵ８２は、状態情報としての力ＦＴおよびモーメントＭＴから、荷重起因力ＦＬおよび荷重起因モーメントＭＬをそれぞれ減算して、力補正値Ｈ２およびモーメント補正値Ｈ３を求める。
【０１１０】
このように、ＣＰＵ８２は、ロボット１２の状態情報（第２の力センサ７２の出力信号、または、力ＦＴおよびモーメントＭＴ）を補正する補正部８６（図６）として機能する。
【０１１１】
ステップＳ１３において、ＣＰＵ８２は、外乱値Ｅ２を推定する。具体的には、ＣＰＵ８２は、ステップＳ１２で取得した信号補正値Ｈ１、または、力補正値Ｈ２およびモーメント補正値Ｈ３を用いて、ロボット１２に作用する力の合力を、第２の力センサ７２に作用する力として検出する。
【０１１２】
この合力は、第２の力センサ７２に作用する内力と、周囲の物体とロボット１２（またはワークＷ）との接触に起因して第２の力センサ７２に作用する力の合力であって、ワークＷの重力に起因して第２の力センサ７２に作用する力を含んでいない。
【０１１３】
ＣＰＵ８２は、算出した合力から内力を減算することにより、第２の力センサ７２に作用する外乱値Ｅ２を推定する。この外乱値Ｅ２は、ワーク外乱値ＤＷ２を含んでおらず、故に、接触外乱値ＤＣ２と見做すことができる。
【０１１４】
ステップＳ１３の後、ＣＰＵ８２は、図３に示すフローと同様に、ステップＳ１４を実行し、次いで、ステップＳ６およびＳ７、またはステップＳ８およびＳ９を順次実行する。
【０１１５】
上述したように、本実施形態においては、ＣＰＵ８２は、ロボット１２の状態情報（第２の力センサ７２から出力信号、または、力ＦＴおよびモーメントＭＴ）を、ワーク外乱値ＤＷ２の成分を除去するように補正し、補正した状態情報に基づいて、接触外乱値ＤＣ２に一致する外乱値Ｅ２を推定している。
【０１１６】
この構成によれば、ワークＷによる荷重Ｌ（ワーク外乱値ＤＷ）が経時的に変動する場合においても、接触外乱値ＤＣ２を高精度に推定することができる。したがって、ロボット１２の周囲の物体がロボット１２（またはワークＷ）と接触したことを、高精度に検出することができる。また、ロボット１２に加わる接触外乱値ＤＣ２のみならず、上述の非伝達外力も検出することができる。
【０１１７】
次に、図７および図８を参照して、さらに他の実施形態に係るロボットシステム９０について説明する。ロボットシステム９０は、ロボット１２、第１の力センサ１４、第２の力センサ９２、およびロボット制御装置１００を備える。
【０１１８】
第２の力センサ９２は、ロボットハンド２６の指部３４に設けられている。第２の力センサ９２は、例えば、複数の歪みゲージを有する６軸力覚センサから構成され、指部３４に加えられた力を受けて、該力によって第２の力センサ９２に生じた歪みに応じた出力信号を、ロボット制御装置１００に送信する。
【０１１９】
ロボット制御装置１００は、ＣＰＵ１０２、システムメモリ５４、ワークメモリ５６、Ｉ／Ｏインターフェース５８、および駆動部６０を備える。Ｉ／Ｏインターフェース５８は、第２の力センサ９２と通信可能に接続され、ＣＰＵ１０２からの指令の下、第２の力センサ９２から出力信号を受信する。
【０１２０】
ＣＰＵ１０２は、例えば図７中の直交座標系に示すように、第２の力センサ９２に対してセンサ座標系ＣＳ２を設定する。このセンサ座標系ＣＳ２の位置（原点位置）および姿勢（ｘ軸、ｙ軸、ｚ軸の方向）は、ロボットハンド２６の位置および姿勢とともに変化することになる。したがって、ＣＰＵ１０２は、ステップＳ１の実行中にロボットハンド２６の位置および姿勢を変化させる毎に、センサ座標系ＣＳ２の位置および姿勢を更新する。
【０１２１】
ＣＰＵ１０２は、第２の力センサ９２からの出力信号に基づいて、センサ座標系ＣＳ２のｘ軸、ｙ軸、およびｚ軸の方向の力と、ｘ軸、ｙ軸、およびｚ軸周りのモーメントとを、それぞれ算出する。
【０１２２】
次に、図９を参照して、ロボットシステム９０の動作の一例について説明する。図９に示すフローを開始した後、ＣＰＵ１０２は、上述の実施形態と同様に、ステップＳ１およびＳ２を順次実行する。
【０１２３】
ステップＳ２の後、ステップＳ２１において、ＣＰＵ１０２は、ロボット１２の状態情報を取得する。一例として、ＣＰＵ１０２は、Ｉ／Ｏインターフェース５８を介して、第２の力センサ９２から出力信号を取得し、ロボット１２の状態情報として、ワークメモリ５６に記憶する。
【０１２４】
他の例として、ＣＰＵ１０２は、第２の力センサ９２からの出力信号に基づいて、センサ座標系ＣＳ２のｘ軸、ｙ軸、およびｚ軸の方向の力ＦＴ２と、ｘ軸、ｙ軸、およびｚ軸周りのモーメントＭＴ２とをそれぞれ算出し、ロボット１２の状態情報としてワークメモリ５６に記憶する。
【０１２５】
ステップＳ２２において、ＣＰＵ１０２は、状態情報を補正する。具体的には、ＣＰＵ１０２は、上述の変動ワーク荷重ＬＷ（＝Ｇ−Ｌ）を算出する。次いで、ＣＰＵ１０２は、変動ワーク荷重ＬＷに起因するロボット１２の状態変化に基づいて、状態情報を補正する。
【０１２６】
ここで、ロボットハンド２６に変動ワーク荷重ＬＷが加えられると、ロボットハンド２６の状態（例えば、指部３４の位置）が変化し、その結果、第２の力センサ９２によって得られる状態情報（すなわち、第２の力センサ９２の出力信号、または、力ＦＴ２およびモーメントＭＴ２）に、変動ワーク荷重ＬＷの成分が含まれることになる。
【０１２７】
そこで、ＣＰＵ１０２は、このステップＳ２２において、状態情報から変動ワーク荷重ＬＷの成分を除去するように、該状態情報を補正する。
【０１２８】
一例として、ＣＰＵ１０２は、第２の力センサ９２から受信した出力信号から、変動ワーク荷重ＬＷの成分を減算して、信号補正値Ｈ４を求める。第２の力センサ９２からの出力信号に含まれる変動ワーク荷重ＬＷの成分は、変動ワーク荷重ＬＷと公知の理論式とから、求めることができる。
【０１２９】
他の例として、ＣＰＵ１０２は、変動ワーク荷重ＬＷに起因してセンサ座標系Ｃｓ２のｘ軸、ｙ軸、およびｚ軸の方向に掛かる荷重起因力ＦＬ２と、ｘ軸、ｙ軸、およびｚ軸周りに掛かる荷重起因モーメントＭＬ２とを、それぞれ算出する。
【０１３０】
そして、ＣＰＵ１０２は、状態情報としての力ＦＴ２およびモーメントＭＴ２から、荷重起因力ＦＬ２および荷重起因モーメントＭＬ２をそれぞれ減算して、力補正値Ｈ５およびモーメント補正値Ｈ６を求める。
【０１３１】
例えば、図７に示すようにセンサ座標系Ｃｓ２のｚ軸プラス方向が鉛直下方に一致するように該センサ座標系Ｃｓ２が設定されている場合、ｚ軸方向の荷重起因力ＦＬ２は、変動ワーク荷重ＬＷに一致する。したがって、この場合、ｚ軸方向の力補正値Ｈ５は、ステップＳ２１で求めたｚ軸方向の力ＦＴ２から変動ワーク荷重ＬＷを減算した値となる。
【０１３２】
このように、ＣＰＵ１０２は、ロボット１２の状態情報（第２の力センサ９２の出力信号、または、力ＦＴ２およびモーメントＭＴ２）を補正する補正部１０６（図８）として機能する。
【０１３３】
ステップＳ２３において、ＣＰＵ１０２は、外乱値Ｅ３を推定する。具体的には、ＣＰＵ１０２は、ステップＳ１２で取得した信号補正値Ｈ４、または、力補正値Ｈ５およびモーメント補正値Ｈ６を用いて、第２の力センサ９２に作用する力（＝外乱値Ｅ３）を推定する。
【０１３４】
この外乱値Ｅ３は、ワークＷの重力に起因して第２の力センサ９２に作用するワーク外乱値を含んでおらず、周囲の物体（例えばオペレータ）とワークＷとの接触に起因して第２の力センサ９２に作用する接触外乱値と見做すことができる。このように、本実施形態においては、ＣＰＵ１０２は、外乱値Ｅ３を推定する外乱推定部１０４（図８）として機能する。
【０１３５】
ステップＳ２４において、ＣＰＵ１０２は、ステップＳ２３で推定した外乱値Ｅ３が予め定められた閾値γ以上（すなわち、｜Ｅ３｜≧γ）であるか否かを判定する。この閾値γは、外乱値Ｅ３に対して予め定められ、システムメモリ５４に記憶される。
【０１３６】
ＣＰＵ１０２は、外乱値Ｅ３が閾値γ以上である（すなわちＹＥＳ）と判定した場合、ステップＳ２５へ進む。一方、ＣＰＵ１０２は、外乱値Ｅ３が閾値γよりも小さい（すなわちＮＯ）と判定した場合、ステップＳ６へ進む。ステップＳ２４でＹＥＳと判定した後、ＣＰＵ１０２は、図３に示すフローと同様に、ステップＳ６およびＳ７を順次実行する。
【０１３７】
一方、ステップＳ２４でＹＥＳと判定した場合、ステップＳ２５において、ＣＰＵ１０２は、追従動作を実行する。ここで、オペレータが、ワークＷの部分Ｐ（図７）を掴んで、該部分Ｐを力ＦＷで引っ張った場合を想定する。この場合、直近のステップＳ２３で推定された外乱値Ｅ３は、力ＦＷに略一致することになる。
【０１３８】
本実施形態においては、ＣＰＵ１０２は、直近のステップＳ２３で推定した外乱値Ｅ３（すなわち、力ＦＷ）を構成する、センサ座標系ＣＳ２のｘ軸、ｙ軸、およびｚ軸の方向の力と、ｘ軸、ｙ軸、およびｚ軸周りのモーメントとに応じて、ロボット１２を動作させるための追従動作指令を生成する。
【０１３９】
そして、ＣＰＵ１０２は、生成した追従動作指令を各サーボモータ３８へ送信し、ロボットハンド２６を、外乱値Ｅ３の方向へ動作させる。その結果、ロボット１２は、オペレータがワークＷに加えた力Ｆｗに追随するように動作することになる。
【０１４０】
このように、本実施形態においては、ＣＰＵ１０２は、外乱値Ｅ３に従ってロボット１２を動作させる指令を生成する追随指令部１０８（図８）として機能する。ステップＳ２５を実行した後、ＣＰＵ１０２は、ステップＳ２４へ戻る。
【０１４１】
上述したように、本実施形態においては、ＣＰＵ１０２は、ロボット１２の状態情報（第２の力センサ９２から出力信号、または、力ＦＴ２およびモーメントＭＴ２）を、ワーク外乱値の成分を除去するように補正し、補正した状態情報に基づいて、接触外乱値に一致する外乱値Ｅ３を推定している。
【０１４２】
この構成によれば、ワークＷによる荷重Ｌ（ワーク外乱値ＤＷ）が経時的に変動する場合においても、接触外乱値を高精度に推定することができる。したがって、ロボット１２の周囲の物体がワークＷと接触したことを、高精度に検出することができる。
【０１４３】
また、本実施形態においては、ＣＰＵ１０２は、ステップＳ２４でＹＥＳと判定した場合に、ワークＷに加えられた外力に対応する外乱値Ｅ３に従って、追従動作を実行している。
【０１４４】
この構成によれば、オペレータは、例えばワークＷの部分Ｐを力ＦＷで引っ張ることによって、ロボット１２の構成要素（例えばロボットハンド２６）を、任意の方向に移動させることができる（いわゆる、ハンドガイド操作）。
【０１４５】
なお、上述の実施形態においては、力センサ（第１の力センサ）１４は、鉛直下方の力を検出する場合について述べた。しかしながら、力センサ１４は、複数の方向の力を検出可能であってもよい。
【０１４６】
このような実施形態について、図１０を参照して説明する。図１０に示すロボットシステム１０’は、上述のロボットシステム１０の変形例であって、力センサ１４’を備える点で、ロボットシステム１０と相違する。
【０１４７】
力センサ１４’は、例えば複数の歪みゲージを有する力覚センサから構成され、センサ座標系ＣＳ３のｘ軸、ｙ軸、およびｚ軸の方向の力を検出できる。本実施形態においては、センサ座標系ＣＳ３のｘ軸およびｙ軸が、水平面と平行であり、ｚ軸プラス方向が、鉛直下方と一致するように、センサ座標系ＣＳ３は、設定されている。
【０１４８】
ここで、ロボット１２がワークＷを把持して水平方向へ移動させた場合を想定する。この場合、ワークＷが環境４０上を引き摺られるように移動し、これにより、ワークＷから環境４０に作用する荷重Ｌは、重力方向の荷重成分Ｌｇと、水平方向の荷重成分Ｌｈを含むことになる。
【０１４９】
水平方向の荷重成分Ｌｈは、ワークＷの重力Ｇに依存する摩擦力に対応する力である。力センサ１４’は、荷重成分Ｌｇと荷重成分Ｌｈとを検出することができる。
【０１５０】
次に、図３を参照して、ロボットシステム１０’の動作について説明する。ロボットシステム１０’のＣＰＵ５２は、図３に示すフローを開始した後、上述の実施形態と同様に、ステップＳ１を実行する。
【０１５１】
ステップＳ２において、ＣＰＵ５２は、環境４０によってワークＷが支持される力（すなわち、ワーク支持力）を取得する。具体的には、ＣＰＵ５２は、力センサ１４’に計測指令を送信する。
【０１５２】
力センサ１４’は、ＣＰＵ５２から計測指令を受信すると、ワークＷから環境４０に作用する荷重Ｌの荷重成分ＬｇおよびＬｈを計測する。荷重成分ＬｇおよびＬｈを含む荷重Ｌは、上述のワーク支持力に一致する。
【０１５３】
力センサ１４’は、計測指令を受信した時点における荷重Ｌの荷重成分ＬｇおよびＬｈを計測し、計測データをＩ／Ｏインターフェース５８へ送信する。ＣＰＵ５２は、Ｉ／Ｏインターフェース５８を介して取得した計測データを、ワークメモリ５６に記憶する。
【０１５４】
ステップＳ３において、ＣＰＵ５２は、上述の実施形態と同様に、各サーボモータ３８からのフィードバック情報に基づいて、外乱値ＤＴ１を推定する。
【０１５５】
ステップＳ４において、ＣＰＵ５２は、ステップＳ３で推定した外乱値ＤＴ１を補正する。具体的には、ＣＰＵ５２は、ワークＷに作用する重力Ｇから、ステップＳ２で取得した荷重Ｌの荷重成分Ｌｇを減算し、変動ワーク荷重成分ＬＷｇ（＝Ｇ−Ｌｇ）を算出する。
【０１５６】
そして、ＣＰＵ５２は、算出した変動ワーク荷重成分ＬＷｇに、ステップＳ２で取得した荷重Ｌの荷重成分Ｌｈの方向を反転させた力成分Ｌｈ’（図１０）を加算して、変動ワーク荷重ＬＷ２（＝ＬＷｇ＋ＬＨ’）を算出する。
【０１５７】
この変動ワーク荷重ＬＷ２は、ステップＳ２の開始時点でワークＷの重力に起因して該ワークＷからロボットハンド２６に加えられる力に対応するワーク外乱値ＤＷ１’と見做すことができる。
【０１５８】
次いで、ＣＰＵ５２は、ステップＳ３で推定した外乱値ＤＴ１を、該外乱値ＤＴ１から変動ワーク荷重ＬＷ２を減算するように補正して、補正外乱値Ｅ４（＝ＤＴ１−ＬＷ２）を求める。この補正外乱値Ｅ４は、接触外乱値ＤＣ１と見做すことができる。
【０１５９】
ステップＳ５において、ＣＰＵ５２は、補正外乱値Ｅ４が予め定められた閾値δ以上（すなわち、Ｅ４≧δ）であるか否かを判定する。この閾値δは、補正外乱値Ｅ４に対して予め定められ、システムメモリ５４に記憶される。
【０１６０】
ＣＰＵ５２は、補正外乱値Ｅ４が閾値δ以上である（すなわちＹＥＳ）と判定した場合、ステップＳ８へ進む。一方、ＣＰＵ５２は、補正外乱値Ｅ４が閾値δよりも小さい（すなわちＮＯ）と判定した場合、ステップＳ６へ進む。
【０１６１】
ステップＳ５の後、ＣＰＵ５２は、上述の実施形態と同様に、ステップＳ６およびＳ７、またはステップＳ８およびＳ９を実行する。
【０１６２】
本実施形態によれば、接触外乱値ＤＣ１を、ワークＷが環境４０上の摺動することにより発生する摩擦力を加味して、より高精度に推定することができる。
【０１６３】
なお、力センサ１４’は、ロボットシステム７０または９０において、第１の力センサ１４の代替として適用することもできることは、当業者に自明である。この場合、ＣＰＵ５２、８２、１０２は、変動ワーク荷重ＬＷ２＝ＬＷｇ＋ＬＨ’として、図２または図３に示すフローを実行する。
【０１６４】
なお、サーボモータ３８からのフィードバック情報は、上述の負荷トルクまたは回転速度に限らず、外乱値が推定できる情報が得られる検出器の出力であれば、如何なる情報を用いてもよい。
【０１６５】
また、第２の力センサ７２（９２）が計測する力ＦＴ（ＦＴ２）およびモーメントＭＴ（ＭＴ２）から求められる、ロボット１２に掛かる力を、上述の状態情報として用いてもよい。
【０１６６】
また、ワークＷが載置される環境４０の上面は、水平に対して傾斜する傾斜面であってもよいし、または、鉛直方向に平行な鉛直面であってもよい。この場合において、力センサ１４、１４’は、例えば箱状に構成され、ワークＷから環境４０に掛かる荷重を測定してもよい。
【０１６７】
以上、発明の実施形態を通じて本発明を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。また、本発明の実施形態の中で説明されている特徴を組み合わせた形態も本発明の技術的範囲に含まれ得るが、これら特徴の組み合わせの全てが、発明の解決手段に必須であるとは限らない。さらに、上述の実施形態に、多様な変更または改良を加えることが可能であることも当業者に明らかである。
【０１６８】
また、特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、工程、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」、「次いで」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【０１６９】
１０，１０’，７０，９０    ロボットシステム
１２    ロボット
１４，１４’，７２，９２    力センサ
５０，８０，１００    ロボット制御装置
５２，８２，１０２    ＣＰＵ
【図１】
2018089744.tif 000003
【図２】
2018089744.tif 000004
【図３】
2018089744.tif 000005
【図４】
2018089744.tif 000006
【図５】
2018089744.tif 000007
【図６】
2018089744.tif 000008
【図７】
2018089744.tif 000009
【図８】
2018089744.tif 000010
【図９】
2018089744.tif 000011
【図１０】
2018089744.tif 000012