(57)【要約】【課題】力検出部から出力される出力値に基づく制御によってロボットに作業を精度よく行わせることができるロボットシステムを提供すること。【解決手段】リセット処理が、力検出部をリセットする第１処理と、第１期間において、力検出部から出力された出力値のピーク値が第１閾値以上であるか否かを判定し、判定結果を更新する第２処理と、当該ピーク値が第１閾値以上であることを判定結果が示す場合、第１処理を実行する第３処理と、当該ピーク値が第１閾値以上ではないことを判定結果が示し、且つ、力検出部がリセットされたタイミングから第２期間が経過していない場合、第２処理を実行する第４処理と、当該ピーク値が第１閾値以上ではないことを判定結果が示し、且つ、当該タイミングから第２期間が経過した場合、第３期間における当該出力値の平均値を第１オフセット値として算出する第５処理と、を含む、ロボットシステム。【選択図】図３
2020028926.tif 000002
【特許請求の範囲】
【請求項１】
ロボットと、
前記ロボットに加えられた外力を検出する力検出部と、
前記力検出部のリセット処理を行うリセット処理部と、
前記リセット処理部による前記リセット処理に応じた補正を行う補正部と、
を備え、
前記リセット処理は、
前記力検出部をリセットする第１処理と、
予め決められた第１期間において、前記力検出部から出力された出力値のピーク値が予め決められた第１閾値以上であるか否かを判定し、判定結果を更新する第２処理と、
前記ピーク値が前記第１閾値以上であることを前記判定結果が示す場合、前記第１処理を実行する第３処理と、
前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記第１処理によって前記力検出部がリセットされたタイミングから予め決められた第２期間が経過していない場合、前記第２処理を実行する第４処理と、
前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記タイミングから前記第２期間が経過した場合、予め決められた第３期間における前記出力値の平均値を第１オフセット値として算出する第５処理と、
を含み、
前記補正部は、前記リセット処理部によって前記第５処理が実行された場合、前記リセット処理の後に、前記第１オフセット値を前記出力値から加算又は減算する補正を行う、
ロボットシステム。
【請求項２】
前記第１期間と前記第３期間とは重なる、
請求項１に記載のロボットシステム。
【請求項３】
前記リセット処理は、
前記ピーク値が前記第１閾値よりも小さい第２閾値未満であるか否かを判定する第６処理と、
前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記第６処理において前記ピーク値が前記第２閾値未満であると判定された場合、前記第３期間よりも短い第４期間における前記出力値の平均値を第２オフセット値として算出する第７処理と、
を含み、
前記補正部は、前記リセット処理部によって前記第７処理が実行された場合、前記リセット処理の後に、前記第２オフセット値を前記出力値から加算又は減算する補正を行う、
請求項１又は２に記載のロボットシステム。
【請求項４】
アームと、
前記アームに加えられた外力を検出する力検出部と、
前記力検出部のリセット処理を行うリセット処理部と、
前記リセット処理部による前記リセット処理に応じた補正を行う補正部と、
を備え、
前記リセット処理は、
前記力検出部をリセットする第１処理と、
予め決められた第１期間において、前記力検出部から出力された出力値のピーク値が予め決められた第１閾値以上であるか否かを判定し、判定結果を更新する第２処理と、
前記ピーク値が前記第１閾値以上であることを前記判定結果が示す場合、前記第１処理を実行する第３処理と、
前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記第１処理によって前記力検出部がリセットされたタイミングから予め決められた第２期間が経過していない場合、前記第２処理を実行する第４処理と、
前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記タイミングから前記第２期間が経過した場合、予め決められた第３期間における前記出力値の平均値を第１オフセット値として算出する第５処理と、
を含み、
前記補正部は、前記リセット処理部によって前記第５処理が実行された場合、前記リセット処理の後に、前記第１オフセット値を前記出力値から加算又は減算する補正を行う、
ロボット。
【請求項５】
ロボットを制御する制御方法であって、
前記ロボットに加えられた外力を検出する力検出部のリセット処理を行うリセット処理ステップと、
前記リセット処理ステップによる前記リセット処理に応じた補正を行う補正ステップと、
を含み、
前記リセット処理は、
前記力検出部をリセットする第１処理と、
予め決められた第１期間において、前記力検出部から出力された出力値のピーク値が予め決められた第１閾値以上であるか否かを判定し、判定結果を更新する第２処理と、
前記ピーク値が前記第１閾値以上であることを前記判定結果が示す場合、前記第１処理を実行する第３処理と、
前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記第１処理によって前記力検出部がリセットされたタイミングから予め決められた第２期間が経過していない場合、前記第２処理を実行する第４処理と、
前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記タイミングから前記第２期間が経過した場合、予め決められた第３期間における前記出力値の平均値を第１オフセット値として算出する第５処理と、
を含み、
前記補正ステップは、前記リセット処理ステップによって前記第５処理が実行された場合、前記リセット処理の後に、前記第１オフセット値を前記出力値から加算又は減算する補正を行う、
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ロボットシステム、ロボット、及び制御方法に関する。
【背景技術】
【０００２】
力制御によってロボットに作業を行わせる技術についての研究、開発が行われている。
【０００３】
これに関し、アームと、外部から加わる力を検出する力検出部を有し、アームの先端部に設置された力覚センサーと、力覚センサーの力検出部への負荷が無負荷となる状態を保護状態とし、保護状態である場合の力覚センサーの検出結果に基づいて、力覚センサーにおいて検出される力の基準点を設定するゼロ点調整を実行する調整部とを備えるロボット装置が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−０８７３１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このようなロボット装置は、当該ロボット装置の外部から加えられる検出対象ではない力が力覚センサーに加わる環境では、ゼロ点調整を精度よく実行することができない場合があった。
【課題を解決するための手段】
【０００６】
上記課題を解決するために本発明の一態様は、ロボットと、前記ロボットに加えられた外力を検出する力検出部と、前記力検出部のリセット処理を行うリセット処理部と、前記リセット処理部による前記リセット処理に応じた補正を行う補正部と、を備え、前記リセット処理は、前記力検出部をリセットする第１処理と、予め決められた第１期間において、前記力検出部から出力された出力値のピーク値が予め決められた第１閾値以上であるか否かを判定し、判定結果を更新する第２処理と、前記ピーク値が前記第１閾値以上であることを前記判定結果が示す場合、前記第１処理を実行する第３処理と、前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記第１処理によって前記力検出部がリセットされたタイミングから予め決められた第２期間が経過していない場合、前記第２処理を実行する第４処理と、前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記タイミングから前記第２期間が経過した場合、予め決められた第３期間における前記出力値の平均値を第１オフセット値として算出する第５処理と、を含み、前記補正部は、前記リセット処理部によって前記第５処理が実行された場合、前記リセット処理の後に、前記第１オフセット値を前記出力値から加算又は減算する補正を行う、ロボットシステムである。
【０００７】
また、本発明の他の態様は、アームと、前記アームに加えられた外力を検出する力検出部と、前記力検出部のリセット処理を行うリセット処理部と、前記リセット処理部による前記リセット処理に応じた補正を行う補正部と、を備え、前記リセット処理は、前記力検出部をリセットする第１処理と、予め決められた第１期間において、前記力検出部から出力された出力値のピーク値が予め決められた第１閾値以上であるか否かを判定し、判定結果を更新する第２処理と、前記ピーク値が前記第１閾値以上であることを前記判定結果が示す場合、前記第１処理を実行する第３処理と、前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記第１処理によって前記力検出部がリセットされたタイミングから予め決められた第２期間が経過していない場合、前記第２処理を実行する第４処理と、前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記タイミングから前記第２期間が経過した場合、予め決められた第３期間における前記出力値の平均値を第１オフセット値として算出する第５処理と、を含み、前記補正部は、前記リセット処理部によって前記第５処理が実行された場合、前記リセット処理の後に、前記第１オフセット値を前記出力値から加算又は減算する補正を行う、ロボットである。
【０００８】
また、本発明の他の態様は、ロボットを制御する制御方法であって、前記ロボットに加えられた外力を検出する力検出部のリセット処理を行うリセット処理ステップと、前記リセット処理ステップによる前記リセット処理に応じた補正を行う補正ステップと、を含み、前記リセット処理は、前記力検出部をリセットする第１処理と、予め決められた第１期間において、前記力検出部から出力された出力値のピーク値が予め決められた第１閾値以上であるか否かを判定し、判定結果を更新する第２処理と、前記ピーク値が前記第１閾値以上であることを前記判定結果が示す場合、前記第１処理を実行する第３処理と、前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記第１処理によって前記力検出部がリセットされたタイミングから予め決められた第２期間が経過していない場合、前記第２処理を実行する第４処理と、前記ピーク値が前記第１閾値以上ではないことを前記判定結果が示し、且つ、前記タイミングから前記第２期間が経過した場合、予め決められた第３期間における前記出力値の平均値を第１オフセット値として算出する第５処理と、を含み、前記補正ステップは、前記リセット処理ステップによって前記第５処理が実行された場合、前記リセット処理の後に、前記第１オフセット値を前記出力値から加算又は減算する補正を行う、制御方法である。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係るロボットシステム１の構成の一例を示す図である。
【図２】ロボット制御装置３０のハードウェア構成の一例を示す図である。
【図３】ロボット制御装置３０の機能構成の一例を示す図である。
【図４】ロボット制御装置３０が行うリセット処理の流れの一例を示す図である。
【図５】ロボット制御装置３０が力制御によってロボット２０を動作させる処理の流れの一例を示す図である。
【図６】実施形態の変形例に係るロボットシステム１の構成の一例を示す図である。
【発明を実施するための形態】
【００１０】
＜実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。なお、以下では、説明の便宜上、ある処理が複数回実行された場合において、複数回実行された当該処理のうち現在から最も近い過去に実行された当該処理のことを、直前に実行された当該処理と称して説明する。
【００１１】
＜ロボットシステムの概要＞
まず、実施形態に係るロボットシステムの概要について説明する。
【００１２】
実施形態に係るロボットシステムは、ロボットと、ロボットに加えられた外力を検出する力検出部と、力検出部のリセット処理を行うリセット処理部と、リセット処理部によるリセット処理に応じた補正を行う補正部と、を備える。リセット処理は、第１処理と、第２処理と、第３処理と、第４処理と、第５処理と、を含む。第１処理は、力検出部をリセットする処理である。第２処理は、予め決められた第１期間において、力検出部から出力された出力値のピーク値が予め決められた第１閾値以上であるか否かを判定し、判定結果を更新する処理である。第３処理は、ピーク値が第１閾値以上であることを当該判定結果が示す場合、第１処理を実行する処理である。第４処理は、ピーク値が第１閾値以上ではないことを当該判定結果が示し、且つ、第１処理によって力検出部がリセットされたタイミングから予め決められた第２期間が経過していない場合、第２処理を実行する処理である。第５処理は、ピーク値が第１閾値以上ではないことを当該判定結果が示し、且つ、当該タイミングから第２期間が経過した場合、予め決められた第３期間における当該出力値の平均値を第１オフセット値として算出する処理である。また、補正部は、リセット処理部によって第５処理が実行された場合、リセット処理の後に、第１オフセット値を当該出力値から加算又は減算する補正を行う。これにより、ロボットシステムは、ロボットの外部から力検出部に振動が加わる環境下であっても、力検出部から出力される出力値に基づく制御によってロボットに作業を精度よく行わせることができる。
【００１３】
以下では、実施形態に係るロボットシステムの構成と、ロボットシステムが行うリセット処理とのそれぞれについて詳しく説明する。なお、以下では、説明の便宜上、ある期間内におけるある値の最小値と当該値の最大値との差分を、当該期間内における当該値のピーク値と称して説明する。
【００１４】
＜ロボットシステムの構成＞
まず、ロボットシステム１の構成について説明する。
図１は、実施形態に係るロボットシステム１の構成の一例を示す図である。ロボットシステム１は、前述のロボットシステムの一例である。ロボットシステム１は、ロボット２０と、ロボット制御装置３０を備える。なお、ロボットシステム１は、ロボット２０とロボット制御装置３０に加えて、他の装置を備える構成であってもよい。当該他の装置には、カメラ等の撮像部を備えた撮像装置、撮像装置を制御する画像処理装置、ロボット制御装置３０を制御する情報処理装置、ロボット制御装置３０にロボット２０の動作を教示する教示装置等が含まれる。
【００１５】
ロボット２０は、前述のロボットの一例である。アームＡと、アームＡを支持する基台Ｂを備える単腕ロボットである。なお、ロボット２０は、単腕ロボットに代えて、複腕ロボットであってもよい。ここで、複腕ロボットのうち、２本の腕を備えるロボットは、双腕ロボットとも称される。すなわち、ロボット２０は、２本の腕を備える双腕ロボットであってもよく、３本以上の腕を備える複腕ロボットであってもよい。また、ロボット２０は、他のロボットであってもよい。当該他のロボットには、スカラロボット（水平多関節ロボット）、直交座標ロボット、円筒型ロボット等が含まれる。
【００１６】
アームＡは、エンドエフェクターＥと、マニピュレーターＭと、力検出部ＦＳを備える。なお、アームＡは、エンドエフェクターＥを備えない構成であってもよい。
【００１７】
エンドエフェクターＥは、物体を保持するエンドエフェクターである。この一例において、エンドエフェクターＥは、指部を備え、当該指部によって物体を挟んで持つことにより物体を保持する。ここで、本実施形態では、保持するとは、物体の状態を持ち上げることが可能な状態にすることを意味する。なお、エンドエフェクターＥは、当該指部によって物体を保持するエンドエフェクターに代えて、空気の吸引、磁力、他の治具等によって物体を持ち上げることにより物体を保持する構成であってもよい。また、エンドエフェクターＥは、物体を保持するエンドエフェクターに代えて、物体を保持しないエンドエフェクターであってもよい。物体を保持しないエンドエフェクターには、例えば、グリース、接着剤等の吐出物を吐出するディスペンサーが設けられたエンドエフェクター、電動ドライバー等のツールが設けられたエンドエフェクター等が含まれる。
【００１８】
マニピュレーターＭは、６軸垂直多関節型のマニピュレーターである。すなわち、アームＡは、６軸垂直多関節型のアームである。なお、マニピュレーターＭは、５軸以下の垂直多関節型のマニピュレーターであってもよく、７軸以上の垂直多関節型のマニピュレーターであってもよい。
【００１９】
力検出部ＦＳは、前述の力検出部の一例である。力検出部ＦＳは、エンドエフェクターＥとマニピュレーターＭの間に設けられる。力検出部ＦＳは、例えば、水晶を含む力検出素子を４つ備える。そして、力検出部ＦＳは、４つの水晶のそれぞれに加わる剪断力に基づいて、ロボット２０の図示しないハンドに作用した外力を検出する。これにより、ロボット２０は、水晶を含まない力検出素子を４つ備えた力センサーと比べて、力検出部ＦＳから出力される出力値が、温度等の環境因子の変化、経年劣化等に応じて変動してしまうことを抑制することができる。
【００２０】
ここで、ロボット２０のハンドは、エンドエフェクターＥ、又はエンドエフェクターＥにより保持された物体のことである。すなわち、力検出部ＦＳは、エンドエフェクターＥに作用した外力、又はエンドエフェクターＥにより保持された物体に作用した外力を検出する。換言すると、力検出部ＦＳは、アームＡに加えられた外力を検出する。
【００２１】
ロボット２０のハンドに作用する外力には、当該ハンドを並進させる並進力が含まれる。
当該並進力には、第１並進力と、第２並進力と、第３並進力との３種類の並進力が含まれている。第１並進力は、図１に示した力検出座標系ＦＣにおけるＸ軸の方向に作用する並進力のことである。力検出座標系ＦＣは、力検出部ＦＳに対応付けられ、ロボット２０の動きに応じて力検出部ＦＳとともに動く三次元直交座標系のことである。図１では、図を簡略化するため、力検出部ＦＳから離れた位置に力検出座標系ＦＣを示している。第２並進力は、力検出座標系ＦＣにおけるＹ軸の方向に作用する並進力のことである。第３並進力は、力検出座標系ＦＣにおけるＺ軸の方向に作用する並進力のことである。
【００２２】
また、ロボット２０のハンドに作用する外力には、当該ハンドを回転させる回転モーメント（トルク）が含まれる。当該回転モーメントには、第１回転モーメントと、第２回転モーメントと、第３回転モーメントとの３種類の回転モーメントが含まれている。第１回転モーメントは、力検出座標系ＦＣにおけるＸ軸の周りに作用する回転モーメントのことである。第２回転モーメントは、力検出座標系ＦＣにおけるＹ軸の周りに作用する回転モーメントのことである。第３回転モーメントは、力検出座標系ＦＣにおけるＺ軸の周りに作用する回転モーメントのことである。
【００２３】
力検出部ＦＳは、このような３種類の並進力と３種類の回転モーメントとのそれぞれを、ロボット２０のハンドに作用する外力として検出する。力検出部ＦＳは、検出した３種類の並進力のそれぞれに応じた出力値と、検出した３種類の回転モーメントのそれぞれに応じた出力値との６種類の出力値のそれぞれを示す情報を外力情報としてロボット制御装置３０に出力する。
【００２４】
以下では、説明の便宜上、力検出部ＦＳから出力されるこれら６種類の出力値を、単に６種類の出力値と称して説明する。６種類の出力値のうちの一部又は全部は、力検出部から出力される出力値の一例である。なお、力検出部ＦＳは、６種類の出力値のうちの一部の種類の出力値を出力する構成であってもよい。この場合、力検出部ＦＳは、第１並進力、第２並進力、第３並進力、第１回転モーメント、第２回転モーメント、第３回転モーメントのうちの一部を外力として検出する。
【００２５】
外力情報は、ロボット制御装置３０によるロボット２０の力制御に用いられる。力制御は、力検出部ＦＳから出力された出力値に基づく制御、すなわち、力検出部ＦＳからロボット制御装置３０に出力された外力情報に基づく制御のことである。例えば、力制御は、インピーダンス制御等のコンプライアントモーション制御のことである。
【００２６】
なお、力検出部ＦＳは、水晶を含む力検出素子を３つ以下備える構成であってもよく、水晶を含む力検出素子を５つ以上備える構成であってもよい。また、力検出部ＦＳは、水晶を含む４つの力検出素子のうちの一部又は全部に代えて、水晶を含まない力検出素子を備える構成であってもよい。
【００２７】
ロボット制御装置３０は、予め記憶された動作プログラムに基づいて、ロボット２０に予め決められた作業を行わせる。この際、ロボット制御装置３０は、例えば、力検出部ＦＳから外力情報を取得し、取得した外力情報に基づく力制御によってロボット２０を制御する。ロボット制御装置３０がロボット２０に当該作業を行わせる制御方法については、既知の方法であってもよく、これから開発される方法であってもよい。
【００２８】
また、ロボット制御装置３０は、力検出部ＦＳのリセット処理を行う。リセット処理は、力検出部ＦＳから出力される出力値のゼロ点調整を行う処理のことである。リセット処理は、例えば、以下において説明する第１処理〜第４処理を含む処理である。なお、リセット処理は、第１処理〜第４処理に加えて、他の処理が含まれる構成であってもよい。
【００２９】
第１処理は、力検出部ＦＳをリセットする処理である。なお、第１処理には、力検出部ＦＳをリセットする処理に加えて、他の処理が含まれる構成であってもよい。
【００３０】
第２処理は、タイミングＴから予め決められた第１期間が経過するまでの第１期間内において、第１期間よりも短い第１待機期間が経過する毎に実行される処理である。ここで、タイミングＴは、直前に実行された第１処理によって力検出部ＦＳがリセットされたタイミングを示す。また、第２処理は、タイミングＴから現在までの期間Ｐ１内において力検出部ＦＳから出力された出力値のピーク値ＰＫが、予め決められた第１閾値ＳＨ１以上であるか否かを判定し、判定する毎に判定結果を更新する処理である。すなわち、第２処理によって更新された判定結果は、ピーク値ＰＫが第１閾値ＳＨ１以上であること、又は、ピーク値ＰＫが第１閾値ＳＨ１以上ではないこと、のうちのいずれかを示す。ここで、当該現在は、当該第２処理が実行されたタイミング、又は当該第２処理が行われている間のうちの当該タイミングよりも後のタイミングを示す。ピーク値ＰＫと第１閾値ＳＨ１とのそれぞれについては、後述する。なお、第２処理には、このような処理に加えて、他の処理が含まれる構成であってもよい。
【００３１】
以下では、一例として、第１期間が３００ミリ秒間である場合について説明する。なお、第１期間は、３００ミリ秒間より短い期間であってもよく、３００ミリ秒間より長い期間であってもよい。
【００３２】
また、以下では、一例として、第１待機期間が１０ミリ秒間である場合について説明する。なお、第１待機期間は、１０ミリ秒間より短い期間であってもよく、第１期間より短い期間であれば１０ミリ秒間より長い期間であってもよい。
【００３３】
第３処理は、直前に実行された第２処理によって更新された判定結果が、前述の第１期間内においてピーク値ＰＫが第１閾値ＳＨ１以上であることを示す場合、第１処理を実行する処理である。換言すると、第３処理は、第１期間内においてピーク値ＰＫが第１閾値ＳＨ１以上であると第２処理によって判定された場合、第１処理を実行する処理である。更に換言すると、第３処理は、タイミングＴから第１期間が経過するまでの間において、ピーク値ＰＫが第１閾値ＳＨ１以上であると第２処理によって判定された場合、タイミングＴから第１期間が経過する前に第２処理を終了させ、第１処理を再度実行する処理である。ここで、本実施形態では、第１期間内は、タイミングＴから第１期間が経過するまでの間の範囲内のことを意味する。なお、第３処理には、このような処理に加えて、他の処理が含まれる構成であってもよい。
【００３４】
第４処理は、ピーク値ＰＫが第１閾値ＳＨ１以上ではないことを判定結果が示し、且つ、予め決められた第２期間が経過していない場合、第２処理を再度実行する処理である。当該判定結果は、直前に実行された第２処理によって更新された判定結果のことである。ここで、第２期間は、第１期間以下の期間である。以下では、一例として、第２期間が、第１期間と同じ期間である場合について説明する。なお、第４処理には、このような処理に加えて、他の処理が含まれる構成であってもよい。
【００３５】
第５処理は、ピーク値ＰＫが第１閾値ＳＨ１以上ではないこと判定結果がを示し、且つ、第２期間が経過した場合、予め決められた第３期間内において力検出部ＦＳから出力された出力値の平均値をオフセット値として算出する処理である。当該判定結果は、直前に実行された第２処理によって更新された判定結果のことである。また、本実施形態では、第３期間内は、タイミングＴから第３期間が経過するまでの間の範囲内のことを意味する。以下では、一例として、第３期間が、第１期間と同じ期間である場合について説明する。なお、第３期間の一部は、第１期間と重なる構成であってもよい。また、第３期間は、第１期間と重ならない期間のうち、第１期間よりも後の期間であってもよい。
【００３６】
また、第５処理は、換言すると、第２期間内においてピーク値ＰＫが第１閾値ＳＨ１以上であると第２処理によって判定されなかった場合、第３期間内において力検出部ＦＳから出力された出力値の平均値をオフセット値として算出する処理である。本実施形態では、第２期間内は、タイミングＴから第２期間が経過するまでの間の範囲内のことを意味する。
【００３７】
また、第５処理は、更に換言すると、タイミングＴから第２期間が経過するまでの間において、ピーク値ＰＫが第１閾値ＳＨ１以上であると第２処理によって判定されることが１回もなかった場合、第３期間内において力検出部ＦＳから出力された出力値の平均値をオフセット値として算出する処理である。なお、第５処理には、このような処理に加えて、他の処理が含まれる構成であってもよい。
【００３８】
また、ロボット制御装置３０は、力検出部ＦＳのリセット処理を行った後、リセット処理に応じた補正を行う。具体的には、ロボット制御装置３０は、第４処理によって算出されたオフセット値を、第１期間よりも後の期間において力検出部ＦＳから出力された出力値から加算又は減算する補正を行う。これにより、ロボット制御装置３０は、ロボット２０の外部から力検出部ＦＳに振動が加わる環境下であっても、力検出部ＦＳから出力される出力値に基づく制御によってロボット２０に作業を精度よく行わせることができる。
【００３９】
＜ロボット制御装置のハードウェア構成＞
以下、図２を参照し、ロボット制御装置３０のハードウェア構成について説明する。図２は、ロボット制御装置３０のハードウェア構成の一例を示す図である。
【００４０】
ロボット制御装置３０は、例えば、プロセッサー３１と、メモリー３２と、通信部３４を備える。これらの構成要素は、バスを介して相互に通信可能に接続されている。また、ロボット制御装置３０は、通信部３４を介してロボット２０と通信を行う。
【００４１】
プロセッサー３１は、例えば、ＣＰＵ（Central  Processing  Unit）である。なお、プロセッサー３１は、ＣＰＵに代えて、ＦＰＧＡ（Field-Programmable  Gate  Array）等の他のプロセッサーであってもよい。プロセッサー３１は、メモリー３２に格納された各種のプログラムを実行する。
【００４２】
メモリー３２は、例えば、ＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  Read−Only  Memory）、ＲＯＭ（Read−Only  Memory）、ＲＡＭ（Random  Access  Memory）等を含む。なお、メモリー３２は、ロボット制御装置３０に内蔵されるものに代えて、ＵＳＢ（Universal  Serial  Bus）等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。メモリー３２は、ロボット制御装置３０が処理する各種の情報、各種の画像、各種のプログラム等を格納する。
【００４３】
通信部３４は、例えば、ＵＳＢ等のデジタル入出力ポートやイーサネット（登録商標）ポート等を含んで構成される。
【００４４】
なお、ロボット制御装置３０は、キーボード、マウス、タッチパッド等の入力装置を備える構成であってもよい。また、ロボット制御装置３０は、液晶ディスプレイパネル、有機ＥＬ（ElectroLuminescence）ディスプレイパネル等を備えた表示装置を備える構成であってもよい。
【００４５】
＜ロボット制御装置の機能構成＞
以下、図３を参照し、ロボット制御装置３０の機能構成について説明する。図３は、ロボット制御装置３０の機能構成の一例を示す図である。
【００４６】
ロボット制御装置３０は、メモリー３２と、通信部３４と、制御部３６を備える。
【００４７】
制御部３６は、ロボット制御装置３０の全体を制御する。制御部３６は、第１取得部３６１と、第２取得部３６２と、軌道算出部３６３と、力検出制御部３６４と、エンドエフェクター制御部３６５と、マニピュレーター制御部３６６を備える。制御部３６が備えるこれらの機能部は、例えば、プロセッサー３１が、メモリー３２に記憶された各種の指令を実行することにより実現される。また、当該機能部のうちの一部又は全部は、ＬＳＩ（Large  Scale  Integration）、ＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェア機能部であってもよい。
【００４８】
第１取得部３６１は、力検出部ＦＳから外力情報を取得する。
【００４９】
第２取得部３６２は、マニピュレーターＭが備える各モーターそれぞれについて、モーターに備えられたエンコーダーからモーターの回動角を示す回動角情報を取得する。
【００５０】
軌道算出部３６３は、メモリー３２に予め記憶された動作プログラムと、第２取得部３６２が取得した回動角情報とに基づいて、ロボット２０が動く軌道を算出する。本実施形態において、ロボット２０の動きは、ロボット２０とともに動く仮想的な点の動きによって表される。以下では、説明の便宜上、当該点を制御点と称して説明する。制御点は、例えば、ＴＣＰ（Tool  Center  Point）である。なお、制御点は、ＴＣＰに代えて、ロボット２０とともに動く他の仮想的な点であってもよい。また、軌道算出部３６３が当該軌道を算出する方法は、既知の方法であってもよく、これから開発される方法であってもよい。
【００５１】
力検出制御部３６４は、力検出部ＦＳを制御する。力検出制御部３６４は、リセット処理部３６４Ａと、補正部３６４Ｂを備える。
【００５２】
リセット処理部３６４Ａは、前述のリセット処理を行う。
【００５３】
補正部３６４Ｂは、リセット処理部３６４Ａによるリセット処理に応じて、力検出部ＦＳから出力される出力値の補正を行う。
【００５４】
エンドエフェクター制御部３６５は、エンドエフェクターＥを制御する。なお、エンドエフェクター制御部３６５は、ロボット制御装置３０が備える構成に代えて、ロボット制御装置３０と別体の情報処理装置に備えられる構成であってもよい。この場合、ロボットシステム１は、当該情報処理装置を備える。
【００５５】
マニピュレーター制御部３６６は、軌道算出部３６３が算出した軌道に基づいて、制御点が当該軌道に沿って動くようにマニピュレーターＭを制御する。また、マニピュレーター制御部３６６は、補正部３６４Ｂによって補正された出力値に基づく力制御によってマニピュレーターＭを制御する。
【００５６】
＜ロボット制御装置が行うリセット処理＞
以下、図４を参照し、ロボット制御装置３０が行うリセット処理について説明する。図４は、ロボット制御装置３０が行うリセット処理の流れの一例を示す図である。ロボット制御装置３０は、例えば、メモリー３２に予め記憶された動作プログラムに基づいて、図４に示したフローチャートの処理を実行する。なお、ロボット制御装置３０は、ロボット制御装置３０に接続された他の情報処理装置を介して、ユーザーから受け付けた操作に応じて当該処理を実行する構成であってもよく、他の方法によって当該処理を実行する構成であってもよい。
【００５７】
リセット処理部３６４Ａは、リセット回数の初期化を行う（ステップＳ１１０）。リセット回数は、図４に示したフローチャートの処理が実行されてから終了されるまでの間において、力検出部ＦＳのリセットが行われた回数のことである。ステップＳ１１０において、リセット処理部３６４Ａは、リセット回数を格納する変数Ｘをメモリー３２の記憶領域内に生成する。そして、リセット処理部３６４Ａは、生成した変数Ｘに対して０を格納する処理を、リセット回数の初期化として行う。
【００５８】
次に、リセット処理部３６４Ａは、リセット処理を開始する（ステップＳ１２０）。具体的には、リセット処理部３６４Ａは、ステップＳ１２０において、前述の第１処理を行う。すなわち、リセット処理部３６４Ａは、ステップＳ１２０において、力検出部ＦＳをリセットする。そして、リセット処理部３６４Ａは、ステップＳ１１０において初期化した変数Ｘに格納されている値に１を加算した値を、変数Ｘへ格納し直す。すなわち、リセット処理部３６４Ａは、ステップＳ１２０において、変数Ｘに格納された値を更新する。また、リセット処理部３６４Ａは、ステップＳ１２０において、計時処理と、取得処理と、平均値算出処理と、ピーク値算出処理とのそれぞれを開始する。
【００５９】
計時処理は、第１処理が実行される毎に実行される処理である。すなわち、計時処理は、本実施形態では、ステップＳ１２０の処理が実行される毎に実行される処理である。また、計時処理は、前述のタイミングＴからの経過時間を計時する処理である。なお、計時処理には、このような処理に加えて、他の処理が含まれる構成であってもよい。
【００６０】
取得処理は、予め決められたサンプリング周期が経過する毎に実行される処理である。また、取得処理は、第１取得部３６１に外力情報を力検出部ＦＳから取得させる処理である。第１取得部３６１は、取得処理によって外力情報を取得する毎に、取得した外力情報と、計時処理によって計時された経過時間を示す経過時間情報とを対応づけてメモリー３２に記憶させる。なお、取得処理には、このような処理に加えて、他の処理が含まれる構成であってもよい。
【００６１】
平均値算出処理は、例えば、計時処理によって経過時間が計時される毎に実行される処理である。また、平均値算出処理は、前述の期間Ｐ１内においてメモリー３２に記憶された複数の外力情報に基づいて実行される処理である。すなわち、平均値算出処理は、タイミングＴから、直前に経過時間が計時されたタイミングまでの期間Ｐ１内においてメモリー３２に記憶された複数の外力情報に基づいて実行される処理である。また、平均値算出処理は、期間Ｐ１内において力検出部ＦＳから出力された出力値の平均値を算出する処理である。ここで、本実施形態では、力検出部ＦＳは、前述した通り、６種類の出力値を出力する。このため、平均値算出処理は、本実施形態では、６種類の出力値それぞれについて、期間Ｐ１内における出力値の平均値を算出する処理である。
【００６２】
具体的には、平均値算出処理は、本実施形態では、第１並進力に応じた出力値の当該期間内における平均値と、第２並進力に応じた出力値の当該期間内における平均値と、第３並進力に応じた出力値の当該期間内における平均値と、第１回転モーメントに応じた出力値の当該期間内における平均値と、第２回転モーメントに応じた出力値の当該期間内における平均値と、第３回転モーメントに応じた出力値の当該期間内における平均値との６種類の平均値を算出する処理である。
【００６３】
なお、平均値算出処理には、このような処理に加えて、他の処理が含まれる構成であってもよい。また、平均値算出処理は、計時処理によって経過時間が計時される毎に実行される処理に代えて、他のタイミングにおいて周期的又は非周期的に実行される処理であってもよい。また、平均値算出処理は、６種類の平均値のうちの一部の種類の平均値を算出する処理であってもよい。また、平均値算出処理は、６種類の出力値それぞれについて、出力値に基づく他の値を当該出力値の平均値として算出する処理であってもよい。当該他の値は、当該出力値の二乗和の平方根、当該出力値の分散等のことである。
【００６４】
ピーク値算出処理は、例えば、計時処理によって経過時間が計時される毎に実行される処理である。また、ピーク値算出処理は、期間Ｐ１内においてメモリー３２に記憶された複数の外力情報に基づいて実行される処理である。すなわち、ピーク値算出処理は、タイミングＴから、直前に経過時間が計時されたタイミングまでの期間Ｐ１内においてメモリー３２に記憶された複数の外力情報に基づいて実行される処理である。また、ピーク値算出処理は、期間Ｐ１内におけるピーク値ＰＫを算出する処理である。ここで、本実施形態では、力検出部ＦＳは、前述した通り、６種類の出力値を出力する。このため、本実施形態では、ピーク値ＰＫには、第１ピーク値と、第２ピーク値と、第３ピーク値と、第４ピーク値と、第５ピーク値と、第６ピーク値との６種類のピーク値が含まれている。第１ピーク値は、第１並進力に応じた出力値の期間Ｐ１内におけるピーク値である。第２ピーク値は、第２並進力に応じた出力値の期間Ｐ１内におけるピーク値である。第３ピーク値は、第３並進力に応じた出力値の期間Ｐ１内におけるピーク値である。第４ピーク値は、第１回転モーメントに応じた出力値の期間Ｐ１内におけるピーク値である。第５ピーク値は、第２回転モーメントに応じた出力値の期間Ｐ１内におけるピーク値である。第６ピーク値は、第３回転モーメントに応じた出力値の期間Ｐ１内におけるピーク値である。すなわち、ピーク値算出処理は、本実施形態では、このような６種類のピーク値のそれぞれをピーク値ＰＫとして算出する処理である。なお、ピーク値算出処理は、６種類のピーク値のうちの一部の種類のピーク値を算出する処理であってもよい。この場合、ピーク値ＰＫには、当該一部の種類のピーク値が含まれる。
【００６５】
なお、ピーク値算出処理には、このような処理に加えて、他の処理が含まれる構成であってもよい。また、ピーク値算出処理は、計時処理によって経過時間が計時される毎に実行される処理に代えて、他のタイミングにおいて周期的又は非周期的に実行される処理であってもよい。また、ピーク値算出処理は、６種類の出力値のうちの一部の種類の出力値それぞれについて、出力値のピーク値を算出する処理であってもよい。また、ピーク値算出処理は、６種類の出力値それぞれについて、出力値に基づく他の値をピーク値として算出する処理であってもよい。当該他の値は、当該出力値の最大値、当該出力値の最小値、当該出力値の分散等のことである。
【００６６】
ステップＳ１２０の処理が行われた後、リセット処理部３６４Ａは、タイミングＴから第１待機期間が経過するまで待機する（ステップＳ１３０）。
【００６７】
タイミングＴから第１待機期間が経過したと判定した場合（ステップＳ１３０−ＹＥＳ）、リセット処理部３６４Ａは、力検出部ＦＳの状態がエラー状態であるか否か判定する（ステップＳ１４０）。
【００６８】
力検出部ＦＳの状態がエラー状態であると判定した場合（ステップＳ１４０−ＹＥＳ）、リセット処理部３６４Ａは、所定期間のリセット回数倍待機する（ステップＳ１９０）。具体的には、リセット処理部３６４Ａは、当該場合、メモリー３２に記憶された変数Ｘに格納された値をメモリー３２から読み出す。当該値は、すなわち、リセット回数である。リセット処理部３６４Ａは、読み出したリセット回数に対して所定期間を乗じた期間、ステップＳ１９０において待機する。所定期間は、例えば、２０ミリ秒間である。また、ステップＳ１９０においてリセット処理部３６４Ａが所定期間に対して乗じる値は、リセット回数に代えて、他の値であってもよい。また、リセット処理部３６４Ａは、ステップＳ１９０において所定期間待機する構成であってもよい。なお、所定期間は、２０ミリ秒間よりも短い期間であってもよく、２０ミリ秒間よりも長い期間であってもよい。
【００６９】
ステップＳ１９０の処理が行われた後、リセット処理部３６４Ａは、メモリー３２に記憶された変数Ｘを参照し、変数Ｘに格納されたリセット回数が所定回数未満であるか否かを判定する（ステップＳ２００）。所定回数は、例えば、１５回である。なお、所定回数は、１５回より少ない回数であってもよく１５回より多い回数であってもよい。
【００７０】
変数Ｘに格納されたリセット回数が所定回数未満であると判定した場合（ステップＳ２００−ＹＥＳ）、リセット処理部３６４Ａは、ステップＳ１２０に遷移し、リセット処理を開始し直す。一方、変数Ｘに格納されたリセット回数が１５回以上であると判定した場合（ステップＳ２００−ＮＯ）、リセット処理部３６４Ａは、エラー処理を行う（ステップＳ２１０）。エラー処理は、例えば、リセット処理を正常に終了させることに失敗したことを示す情報を出力する処理である。なお、エラー処理は、リセット処理を正常に終了させることに失敗したことに応じて行われる他の処理であってもよい。エラー処理を行った後、リセット処理部３６４Ａは、処理を終了する。
【００７１】
一方、力検出部ＦＳの状態がエラー状態ではないと判定した場合（ステップＳ１４０−ＮＯ）、リセット処理部３６４Ａは、直前のピーク値算出処理によって算出されたピーク値ＰＫが第１閾値ＳＨ１以上であるか否かを判定する（ステップＳ１５０）。ここで、ステップＳ１５０の処理について説明する。
【００７２】
前述した通り、本実施形態では、ピーク値ＰＫには、６種類のピーク値が含まれている。このため、以下では、一例として、第１閾値ＳＨ１が６種類の閾値を含んでいる場合について説明する。第１閾値ＳＨ１に含まれる６種類の閾値には、前述した第１ピーク値〜第６ピーク値それぞれについての閾値が含まれている。この場合、リセット処理部３６４Ａは、ステップＳ１５０において、６種類の判定を行う。
【００７３】
ステップＳ１５０において行う６種類の判定には、第１ピーク値についての判定と、第２ピーク値についての判定と、第３ピーク値についての判定と、第４ピーク値についての判定と、第５ピーク値についての判定と、第６ピーク値についての判定とが含まれている。
【００７４】
ステップＳ１５０において行う第１ピーク値についての判定は、直前のピーク値算出処理によって算出されたピーク値ＰＫに含まれる６種類のピーク値のうちの第１ピーク値が、第１閾値ＳＨ１に含まれる６種類の閾値のうちの第１ピーク値についての閾値以上であるか否かを判定する判定である。ステップＳ１５０において行う第１ピーク値についての判定は、当該第１ピーク値が当該閾値以上であると判定した場合、例えば、当該判定についての第１フラグを０にする。一方、ステップＳ１５０において行う第１ピーク値についての判定は、当該第１ピーク値が当該閾値未満であると判定した場合、例えば、当該判定についての第１フラグを１にする。
【００７５】
ステップＳ１５０において行う第２ピーク値についての判定の説明は、上記の第１ピーク値についての判定の説明において、第１ピーク値を第２ピーク値と読み替えた説明と同様であるため、説明を省略する。ステップＳ１５０において行う第３ピーク値〜第６ピーク値それぞれについての判定の説明についても、ステップＳ１５０において行う第２ピーク値についての判定の説明と同様であるため、説明を省略する。
【００７６】
リセット処理部３６４Ａは、ステップＳ１５０において、例えば、第１ピーク値〜第６ピーク値それぞれについての判定において第１フラグが０となった判定が１つ以上ある場合、直前のピーク値算出処理によって算出されたピーク値ＰＫが第１閾値ＳＨ１以上であると判定する。一方、リセット処理部３６４Ａは、ステップＳ１５０において、例えば、第１ピーク値〜第６ピーク値それぞれについての判定において第１フラグが０となった判定が０である場合、直前のピーク値算出処理によって算出されたピーク値ＰＫが第１閾値ＳＨ１未満であると判定する。なお、リセット処理部３６４Ａは、ステップＳ１５０において、第１ピーク値〜第６ピーク値それぞれについての判定における第１フラグに応じた他の方法によって、直前のピーク値算出処理によって算出されたピーク値ＰＫが第１閾値ＳＨ１以上であるか否かを判定する構成であってもよい。
【００７７】
リセット処理部３６４Ａは、直前に実行されたピーク値算出処理によって算出されたピーク値ＰＫが第１閾値ＳＨ１以上であると判定した場合（ステップＳ１５０−ＹＥＳ）、ステップＳ１９０に遷移し、所定期間のリセット回数倍待機する。一方、リセット処理部３６４Ａは、直前のピーク値算出処理によって算出されたピーク値ＰＫが第１閾値ＳＨ１未満であると判定した場合（ステップＳ１５０−ＮＯ）、ステップＳ１６０に遷移する。このように、ステップＳ１５０の処理は、前述の第２処理の一例である。また、ステップＳ１５０−ＹＥＳからステップＳ１９０、ステップＳ２００、ステップＳ１２０へと順に実行される処理は、前述の第３処理の一例である。また、ステップＳ１５０−ＮＯからステップＳ１６０−ＮＯ、ステップＳ１７０−ＮＯ、ステップＳ１３０−ＹＥＳ、ステップＳ１４０−ＮＯ、ステップＳ１５０へと順に実行される処理は、前述の第４処理の一例である。
【００７８】
ここで、第１閾値ＳＨ１に含まれている６種類の閾値の具体例について説明する。
【００７９】
第１閾値ＳＨ１に含まれている閾値のうち第１ピーク値についての閾値は、例えば、５［Ｎ］である。なお、当該第１ピーク値についての閾値は、５［Ｎ］より小さい値であってもよく、５［Ｎ］より大きい値であってもよい。
【００８０】
第１閾値ＳＨ１に含まれている閾値のうち第２ピーク値についての閾値は、例えば、５［Ｎ］である。なお、当該第２ピーク値についての閾値は、５［Ｎ］より小さい値であってもよく、５［Ｎ］より大きい値であってもよい。また、当該第２ピーク値についての閾値は、第１閾値ＳＨ１に含まれている閾値のうち第１ピーク値についての閾値と異なる値であってもよい。
【００８１】
第１閾値ＳＨ１に含まれている閾値のうち第３ピーク値について予め決められた第１閾値は、例えば、５［Ｎ］である。なお、当該第３ピーク値についての閾値は、５［Ｎ］より小さい値であってもよく、５［Ｎ］より大きい値であってもよい。また、当該第３ピーク値についての閾値は、第１閾値ＳＨ１に含まれている閾値のうち第１ピーク値についての閾値と、第１閾値ＳＨ１に含まれている閾値のうち第２ピーク値についての閾値とのうちいずれか一方又は両方と異なる値であってもよい。
【００８２】
第１閾値ＳＨ１に含まれている閾値のうち第４ピーク値についての閾値は、例えば、５０［Ｎ・ｍｍ］である。なお、当該第４ピーク値についての閾値は、５０［Ｎ・ｍｍ］より小さい値であってもよく、５０［Ｎ・ｍｍ］より大きい値であってもよい。
【００８３】
第１閾値ＳＨ１に含まれている閾値のうち第５ピーク値についての閾値は、例えば、５０［Ｎ・ｍｍ］である。なお、当該第５ピーク値についての閾値は、５０［Ｎ・ｍｍ］より小さい値であってもよく、５０［Ｎ・ｍｍ］より大きい値であってもよい。また、当該第５ピーク値についての閾値は、第１閾値ＳＨ１に含まれている閾値のうち第４ピーク値についての閾値と異なる値であってもよい。
【００８４】
第１閾値ＳＨ１に含まれている閾値のうち第６ピーク値についての閾値は、例えば、５０［Ｎ・ｍｍ］である。なお、当該第６ピーク値についての閾値は、５０［Ｎ・ｍｍ］より小さい値であってもよく、５０［Ｎ・ｍｍ］より大きい値であってもよい。また、当該第６ピーク値についての閾値は、第１閾値ＳＨ１に含まれている閾値のうち第４ピーク値についての閾値と、第１閾値ＳＨ１に含まれている閾値のうち第５ピーク値についての閾値とのうちいずれか一方又は両方と異なる値であってもよい。
【００８５】
第１閾値ＳＨ１に含まれている６種類の閾値それぞれの大きさは、例えば、ロボット２０の外部から力検出部ＦＳに加わる振動の大きさに応じて決められる。なお、当該６種類の閾値それぞれの大きさは、これに代えて、他の方法によって決められる構成であってもよい。
【００８６】
ステップＳ１６０において、リセット処理部３６４Ａは、タイミングＴから第４期間が経過し、且つ、直前に実行されたピーク値算出処理によって算出されたピーク値ＰＫが、予め決められた第２閾値ＳＨ２未満であるか否かを判定する（ステップＳ１６０）。第４期間は、第１期間よりも短い期間であり、且つ、第１待機期間よりも長い期間である。第４期間は、例えば、１００ミリ秒間である。また、第２閾値ＳＨ２は、第１閾値ＳＨ１よりも小さい閾値のことである。ここで、前述した通り、本実施形態では、ピーク値ＰＫには、６種類のピーク値が含まれている。このため、以下では、一例として、第２閾値ＳＨ２が６種類の閾値を含んでいる場合について説明する。第２閾値ＳＨ２に含まれる６種類の閾値には、前述した第１ピーク値〜第６ピーク値それぞれについての閾値が含まれている。この場合、リセット処理部３６４Ａは、ステップＳ１６０において、６種類の判定を行う。
【００８７】
ステップＳ１６０において行う６種類の判定には、第１ピーク値についての判定と、第２ピーク値についての判定と、第３ピーク値についての判定と、第４ピーク値についての判定と、第５ピーク値についての判定と、第６ピーク値についての判定とが含まれている。
【００８８】
ステップＳ１６０において行う第１ピーク値についての判定は、直前のピーク値算出処理によって算出されたピーク値ＰＫに含まれる６種類のピーク値のうちの第１ピーク値が、第２閾値ＳＨ２に含まれる６種類の閾値のうちの第１ピーク値についての閾値以上であるか否かを判定する判定である。ステップＳ１６０において行う第１ピーク値についての判定は、当該第１ピーク値が当該閾値以上であると判定した場合、例えば、当該判定についての第２フラグを０にする。一方、ステップＳ１６０において行う第１ピーク値についての判定は、当該第１ピーク値が当該閾値未満であると判定した場合、例えば、当該判定についての第２フラグを１にする。
【００８９】
ステップＳ１６０において行う第２ピーク値についての判定の説明は、上記の第１ピーク値についての判定の説明において、第１ピーク値を第２ピーク値と読み替えた説明と同様であるため、説明を省略する。ステップＳ１６０において行う第３ピーク値〜第６ピーク値それぞれについての判定の説明についても、ステップＳ１６０において行う第２ピーク値についての判定の説明と同様であるため、説明を省略する。
【００９０】
リセット処理部３６４Ａは、ステップＳ１６０において、例えば、第１ピーク値〜第６ピーク値それぞれについての判定において第２フラグが０となった判定が１つ以上ある場合、直前のピーク値算出処理によって算出されたピーク値ＰＫが第２閾値ＳＨ２以上であると判定する。一方、リセット処理部３６４Ａは、ステップＳ１６０において、例えば、第１ピーク値〜第６ピーク値それぞれについての判定において第２フラグが０となった判定が０である場合、直前のピーク値算出処理によって算出されたピーク値ＰＫが第２閾値ＳＨ２以上ではないと判定する。なお、リセット処理部３６４Ａは、ステップＳ１６０において、第１ピーク値〜第６ピーク値それぞれについての判定における第２フラグに応じた他の方法によって、直前のピーク値算出処理によって算出されたピーク値ＰＫが第２閾値ＳＨ２以上であるか否かを判定する構成であってもよい。
【００９１】
ここで、第２閾値ＳＨ２に含まれている６種類の閾値の具体例について説明する。
【００９２】
第２閾値ＳＨ２に含まれている閾値のうち第１ピーク値についての閾値は、例えば、０．２５［Ｎ］である。なお、当該第１ピーク値についての閾値は、０．２５［Ｎ］より小さい値であってもよく、０．２５［Ｎ］より大きい値であってもよい。
【００９３】
第２閾値ＳＨ２に含まれている閾値のうち第２ピーク値についての閾値は、例えば、０．２５［Ｎ］である。なお、当該第２ピーク値についての閾値は、０．２５［Ｎ］より小さい値であってもよく、０．２５［Ｎ］より大きい値であってもよい。また、当該第２ピーク値についての閾値は、第２閾値ＳＨ２に含まれている閾値のうち第１ピーク値についての閾値と異なる値であってもよい。
【００９４】
第２閾値ＳＨ２に含まれている閾値のうち第３ピーク値について予め決められた第２閾値は、例えば、０．２５［Ｎ］である。なお、当該第３ピーク値について予め決められた第２閾値は、０．２５［Ｎ］より小さい値であってもよく、０．２５［Ｎ］より大きい値であってもよい。また、当該第３ピーク値について予め決められた第２閾値は、第２閾値ＳＨ２に含まれている閾値のうち第１ピーク値についての閾値と、第２閾値ＳＨ２に含まれている閾値のうち第２ピーク値についての閾値とのうちいずれか一方又は両方と異なる値であってもよい。
【００９５】
第２閾値ＳＨ２に含まれている閾値のうち第４ピーク値についての閾値は、例えば、１５［Ｎ・ｍｍ］である。なお、第２閾値ＳＨ２に含まれている閾値のうち第４ピーク値についての閾値は、１５［Ｎ・ｍｍ］より小さい値であってもよく、１５［Ｎ・ｍｍ］より大きい値であってもよい。
【００９６】
第２閾値ＳＨ２に含まれている閾値のうち第５ピーク値についての閾値は、例えば、１５［Ｎ・ｍｍ］である。なお、第２閾値ＳＨ２に含まれている閾値のうち第５ピーク値についての閾値は、１５［Ｎ・ｍｍ］より小さい値であってもよく、１５［Ｎ・ｍｍ］より大きい値であってもよい。また、第２閾値ＳＨ２に含まれている閾値のうち第５ピーク値についての閾値は、第２閾値ＳＨ２に含まれている閾値のうち第４ピーク値についての閾値と異なる値であってもよい。
【００９７】
第２閾値ＳＨ２に含まれている閾値のうち第６ピーク値についての閾値は、例えば、１５［Ｎ・ｍｍ］である。なお、第２閾値ＳＨ２に含まれている閾値のうち第６ピーク値についての閾値は、１５［Ｎ・ｍｍ］より小さい値であってもよく、１５［Ｎ・ｍｍ］より大きい値であってもよい。また、第２閾値ＳＨ２に含まれている閾値のうち第６ピーク値についての閾値は、第２閾値ＳＨ２に含まれている閾値のうち第４ピーク値についての閾値と、第２閾値ＳＨ２に含まれている閾値のうち第５ピーク値についての閾値とのうちいずれか一方又は両方と異なる値であってもよい。
【００９８】
第２閾値ＳＨ２に含まれている６種類の閾値それぞれの大きさは、例えば、力検出部ＦＳの感度、エンドエフェクターＥの重量等に応じて決められる。なお、当該６種類の閾値それぞれの大きさは、これに代えて、他の方法によって決められる構成であってもよい。
【００９９】
リセット処理部３６４Ａは、タイミングＴから第４期間が経過し、且つ、直前のピーク値算出処理によって算出されたピーク値ＰＫが第２閾値ＳＨ２未満であると判定した場合（ステップＳ１６０−ＹＥＳ）、平均値算出処理を終了させる（ステップＳ１８０）。また、リセット処理部３６４Ａは、当該場合、計時処理、ピーク値算出処理のそれぞれを終了させる。そして、リセット処理部３６４Ａは、直前に実行された平均値算出処理によって算出された６種類の平均値のそれぞれに基づいて、６種類の出力値それぞれに応じたオフセット値を特定する。より具体的には、リセット処理部３６４Ａは、６種類の出力値のそれぞれについて、出力値の平均値を当該出力値に応じたオフセット値として特定する。
【０１００】
例えば、リセット処理部３６４Ａは、直前に実行された平均値算出処理によって算出された６種類の平均値のうち第１並進力に応じた出力値の平均値を、当該出力値に応じたオフセット値として特定する。
【０１０１】
また、例えば、リセット処理部３６４Ａは、直前に実行された平均値算出処理によって算出された６種類の平均値のうち第２並進力に応じた出力値の平均値を、当該出力値に応じたオフセット値として特定する。
【０１０２】
また、例えば、リセット処理部３６４Ａは、直前に実行された平均値算出処理によって算出された６種類の平均値のうち第３並進力に応じた出力値の平均値を、当該出力値に応じたオフセット値として特定する。
【０１０３】
また、例えば、リセット処理部３６４Ａは、直前に実行された平均値算出処理によって算出された６種類の平均値のうち第１回転モーメントに応じた出力値の平均値を、当該出力値に応じたオフセット値として特定する。
【０１０４】
また、例えば、リセット処理部３６４Ａは、直前に実行された平均値算出処理によって算出された６種類の平均値のうち第２回転モーメントに応じた出力値の平均値を、当該出力値に応じたオフセット値として特定する。
【０１０５】
また、例えば、リセット処理部３６４Ａは、直前に実行された平均値算出処理によって算出された６種類の平均値のうち第３回転モーメントに応じた出力値の平均値を、当該出力値に応じたオフセット値として特定する。
【０１０６】
リセット処理部３６４Ａは、このように６種類のオフセット値を特定した後、特定した６種類のオフセット値のそれぞれをメモリー３２に記憶させ、処理を終了する。
【０１０７】
一方、リセット処理部３６４Ａは、タイミングＴから第４期間が経過していない、又は、直前のピーク値算出処理によって算出されたピーク値ＰＫが第２閾値ＳＨ２以上であると判定した場合（ステップＳ１６０−ＮＯ）、タイミングＴから前述の第１期間が経過したか否かを判定する（ステップＳ１７０）。
【０１０８】
リセット処理部３６４Ａは、タイミングＴから第１期間が経過していないと判定した場合（ステップＳ１７０−ＮＯ）、ステップＳ１３０に遷移し、タイミングＴから第１待機期間が経過したか否かを再び判定する。一方、リセット処理部３６４Ａは、タイミングＴから第１期間が経過したと判定した場合（ステップＳ１７０−ＹＥＳ）、ステップＳ１８０に遷移し、平均値算出処理を終了させる。また、リセット処理部３６４Ａは、当該場合、計時処理、ピーク値算出処理のそれぞれを終了させる。そして、リセット処理部３６４Ａは、直前に実行された平均値算出処理によって算出された６種類の平均値のそれぞれに基づいて、６種類の出力値それぞれに応じたオフセット値を特定する。ステップＳ１８０の処理が行われた後、リセット処理部３６４Ａは、処理を終了する。
【０１０９】
このように、ステップ１５０−ＮＯからステップＳ１６０−ＮＯ、ステップＳ１７０−ＹＥＳ、ステップＳ１８０へと順に実行される処理は、前述の第５処理の一例である。また、ステップＳ１６０の処理は、第６処理の一例である。また、ステップＳ１５０−ＮＯからステップＳ１６０−ＹＥＳ、ステップＳ１８０へと順に実行される処理は、第７処理の一例である。
【０１１０】
以上のように、ロボット制御装置３０は、図４に示したフローチャートの処理によって、リセット処理、及びリセット処理のリトライを実行することができる。これにより、ロボット制御装置３０は、異常値を各オフセット値として特定すること、力検出部ＦＳの状態がエラー状態であることによってロボット２０の動作を停止させてしまうこと等を抑制することができる。また、これにより、ロボット制御装置３０は、ロボット２０の状態が、ロボット２０の外部から力検出部ＦＳに振動が加わらない状態にする動作を、ロボット２０に行わせる必要がない。当該動作には、移動、待機等が含まれる。その結果、ロボット制御装置３０は、当該動作によってロボット２０に作業を行わせる効率が低下してしまうことを抑制することができる。また、ロボット制御装置３０は、当該作業に要する時間を短縮することができる。
【０１１１】
また、ロボット制御装置３０は、図４に示したフローチャートの処理によってリセット処理を行うため、力検出部ＦＳがリセットされたタイミングにおいて力検出部ＦＳから出力された出力値をオフセット値として特定せず、当該出力値の平均値をオフセット値として特定している。これにより、力検出部ＦＳに加わる振動の振幅の大きさにかかわらず、適切なオフセット値を特定することができる。
【０１１２】
また、図４に示したフローチャートの処理では、異常値となりうる出力値が力検出部ＦＳから出力されている場合、又は力検出部ＦＳの状態がエラー状態である場合であっても、繰り返しステップＳ１３０〜ステップＳ１７０の各判定処理が繰り返し実行される。このため、ロボット制御装置３０では、ユーザーは、これらの場合においてリセット処理を繰り返すようなコードを動作プログラムに書き込む手間が軽減される。
【０１１３】
ここで、上記において説明した処理のうちステップＳ１５０、ステップＳ１９０、ステップＳ２００、ステップＳ１２０の順に実行される処理は、タイミングＴから現在までの期間Ｐ１内において力検出部ＦＳから出力された出力値のピーク値ＰＫが、オフセット値を算出することに適している値になるまで待機する処理である。このため、当該処理が実行される回数が多いほど、当該ピーク値ＰＫがオフセット値を算出することに適していないと考えられる。例えば、当該回数が多いほど、ロボット２０の外部から力検出部ＦＳに対して振幅が大きな振動又は減衰しづらい振動が加えられている可能性が高い。このため、ステップＳ１９０において、リセット処理部３６４Ａは、ステップＳ１９０の処理が実行される毎に、待機期間を長くしている。これにより、ロボット制御装置３０は、当該ピーク値ＰＫがオフセット値を算出することに適している値になるまで、より確実に待機することができる。しかし、当該回数が多いほど、ロボット２０に行わせる作業効率を低下させてしまう。そこで、リセット処理部３６４Ａは、ステップＳ２００の処理によって、リセット回数が所定回数以上に達した場合、ステップＳ２１０においてエラー処理を行う。これにより、ロボット制御装置３０は、リセット処理を繰り返す回数の増大によってロボット２０に行わせる作業効率が低下してしまうことを抑制することができる。
【０１１４】
また、上記において説明した処理のうちステップＳ１６０、ステップＳ１８０の順に実行される処理は、第１期間が経過する前のタイミングにおいて力検出部ＦＳに加わっている振動が十分に減衰した場合、第１期間が経過することを待たずにオフセット値を算出する処理である。これにより、ロボット制御装置３０は、オフセット値を算出することに要する時間を短縮することができる。その結果、ロボット制御装置３０は、リセット処理による作業効率の低下を抑制することができる。
【０１１５】
また、上記において説明した処理のうちステップＳ１６０の処理は、タイミングＴから現在までの期間Ｐ１内において力検出部ＦＳから出力された出力値のピーク値ＰＫを用いているため、ピーク値ＰＫが無視できるほど小さいにもかかわらず、当該出力値の最大値が無視できないほど大きい又は当該出力値の最小値が無視できないほど小さい場合がある。このような問題を抑制するため、当該処理には、当該最大値と当該最小値とのうちいずれか一方又は両方について、予め決められた閾値以上であるか否かを判定する処理が含まれていてもよい。
【０１１６】
また、上記において説明したステップＳ１６０の処理において、タイミングＴから第４期間が経過しており、且つ、直前のピーク値算出処理によって算出されたピーク値ＰＫが第２閾値ＳＨ２未満であると判定された場合、リセット処理部３６４Ａは、ステップＳ１８０において、各オフセット値を０にする構成であってもよい。これは、当該場合、ステップＳ１８０において、各オフセット値が０に近い値として特定されることが多いためである。
【０１１７】
また、図４に示したフローチャートの処理は、例えば、ロボット制御装置３０がロボット２０に力制御を行わせる前のタイミングに実行される。ここで、ロボット制御装置３０は、当該処理を実行する際のロボット２０の姿勢と、ロボット２０に力制御を行わせる際のロボット２０の姿勢とが一致していない場合、当該処理とともに重力補償を行う。これにより、ロボット制御装置３０は、当該場合であっても、力検出部ＦＳから出力される出力値に基づく力制御によってロボット２０に作業を精度よく行わせることができる。
【０１１８】
また、図４に示したフローチャートの処理は、例えば、予め決められた周期が経過する毎に実行される。これにより、ロボット制御装置３０は、力検出部ＦＳから出力される出力値が温度によってドリフトすることによって生じる誤差、計算によって積算された誤差等によってロボット２０に行わせる作業の精度が低下してしまうことを抑制することができる。なお、当該周期は、例えば、数分程度であるが、これに限られるわけではない。
【０１１９】
またロボット制御装置３０は、図４に示したフローチャートの処理を、６種類の出力値のそれぞれについて、並列に実行する構成であってもよい。
【０１２０】
＜ロボット制御装置が力制御によってロボットを動作させる処理＞
以下、図５を参照し、ロボット制御装置３０が力制御によってロボット２０を動作させる処理について説明する。図５は、ロボット制御装置３０が力制御によってロボット２０を動作させる処理の流れの一例を示す図である。なお、ロボット制御装置３０は、例えば、メモリー３２に予め記憶された動作プログラムに基づいて、図５に示したフローチャートの処理を実行する。なお、ロボット制御装置３０は、ロボット制御装置３０に接続された他の情報処理装置を介して、ユーザーから受け付けた操作に応じて当該処理を実行する構成であってもよく、他の方法によって当該処理を実行する構成であってもよい。
【０１２１】
第１取得部３６１は、力検出部ＦＳから外力情報を取得する（ステップＳ３１０）。
【０１２２】
次に、補正部３６４Ｂは、図４に示したフローチャートの処理によってメモリー３２に予め記憶された６種類のオフセット値のそれぞれを読み出す（ステップＳ３２０）。ここで、ステップＳ３２０において補正部３６４Ｂがメモリー３２から読み出すオフセット値は、図４に示したフローチャートの処理のうちステップＳ１６０、ステップＳ１８０の順に実行される処理と、図４に示したフローチャートの処理のうちステップＳ１６０、ステップＳ１７０，ステップＳ１８０の順に実行される処理とのうち直前に実行された処理においてメモリー３２に記憶されたオフセット値である。
【０１２３】
次に、補正部３６４Ｂは、ステップＳ３２０においてメモリー３２から読み出した６種類のオフセット値に基づいて、ステップＳ３１０において第１取得部３６１が取得した外力情報が示す６種類の出力値を補正する（ステップＳ３３０）。具体的には、補正部３６４Ｂは、当該６種類の出力値のそれぞれについて、当該６種類のオフセット値のうち出力値に応じたオフセット値を、当該出力値に加算又は減算することによって当該出力値を補正する。ここで、補正部３６４Ｂがオフセット値によって当該出力値を補正する方法は、これに限られず、他の方法であってもよい。すなわち、補正部３６４Ｂがオフセット値によって当該出力値を補正する方法は、既知の方法であってもよく、これから開発される方法であってもよい。なお、補正部３６４Ｂは、当該６種類の出力値のそれぞれについて、当該６種類のオフセット値のうち出力値に応じたオフセット値に基づく他の方法によって当該出力値を補正する構成であってもよい。
【０１２４】
次に、マニピュレーター制御部３６６は、ステップＳ３３０において補正部３６４Ｂが補正した６つの出力値に基づく力制御によってマニピュレーターＭを動作させる（ステップＳ３４０）。
【０１２５】
次に、マニピュレーター制御部３６６は、力制御によるマニピュレーターＭの動作を終了させるか否かを判定する（ステップＳ３５０）。マニピュレーター制御部３６６は、本実施形態では、動作プログラムに基づいて、力制御によるマニピュレーターＭの動作を終了させるか否かを判定する。力制御によるマニピュレーターＭの動作を終了させないとマニピュレーター制御部３６６が判定した場合（ステップＳ３５０−ＮＯ）、第１取得部３６１は、ステップＳ３１０に遷移し、力検出部ＦＳから外力情報を再び取得する。一方、マニピュレーター制御部３６６は、力制御によるマニピュレーターＭの動作を終了させると判定した場合（ステップＳ３５０−ＹＥＳ）、処理を終了する。
【０１２６】
なお、上記において説明したピーク値ＰＫには、６種類のピーク値の一部が含まれる構成であってもよい。
【０１２７】
＜実施形態の変形例＞
以下、図６を参照し、実施形態の変形例について説明する。図６は、実施形態の変形例に係るロボットシステム１の構成の一例を示す図である。実施形態の変形例に係るロボットシステム１では、ロボット２０は、図１に示したように、ロボット制御装置３０を内蔵している。すなわち、当該ロボットシステム１は、ロボット制御装置３０を内蔵したロボット２０を備える。
【０１２８】
これにより、ロボットシステム１は、ロボット制御装置３０がロボット２０に内蔵されている場合であっても、力検出部から出力される出力値に基づく制御によってロボットに作業を精度よく行わせることができる。
【０１２９】
以上のように、実施形態に係るロボットシステム（実施形態では、ロボットシステム１）は、ロボット（実施形態では、ロボット２０）と、ロボットに加えられた外力を検出する力検出（実施形態では、力検出部ＦＳ）部と、力検出部のリセット処理を行うリセット処理部（実施形態では、リセット処理部３６４Ａ）と、リセット処理部によるリセット処理に応じた補正を行う補正部（実施形態では、補正部３６４Ｂ）と、を備え、リセット処理は、力検出部をリセットする第１処理と、予め決められた第１期間において、力検出部から出力された出力値のピーク値（実施形態では、ピーク値ＰＫ）が予め決められた第１閾値（実施形態では、第１閾値ＳＨ１）以上であるか否かを判定し、判定結果を更新する第２処理と、当該ピーク値が第１閾値以上であることを当該判定結果が示す場合、第１処理を実行する第３処理と、当該ピーク値が第１閾値以上ではないことを当該判定結果が示し、且つ、第１処理によって力検出部がリセットされたタイミングから予め決められた第２期間が経過していない場合、第２処理を実行する第４処理と、当該ピーク値が第１閾値以上ではないことを当該判定結果が示し、且つ、当該タイミングから第２期間が経過した場合、予め決められた第３期間における当該出力値の平均値を第１オフセット値として算出する第５処理と、を含み、補正部は、リセット処理部によって第５処理が実行された場合、リセット処理の後に、第１オフセット値を当該出力値から加算又は減算する補正を行う。
【０１３０】
また、ロボットシステムでは、第１期間と第３期間とは重なる、構成が用いられてもよい。
【０１３１】
また、ロボットシステムでは、リセット処理は、力検出部から出力された出力値のピーク値が第１閾値よりも小さい第２閾値未満であるか否かを判定する第６処理と、当該ピーク値が第１閾値以上ではないことを、第２処理によって更新された判定結果が示し、且つ、第６処理において当該ピーク値が第２閾値未満であると判定された場合、第３期間よりも短い第４期間における当該出力値の平均値を第２オフセット値として算出する第７処理と、を含み、補正部は、リセット処理部によって第７処理が実行された場合、リセット処理の後に、第２オフセット値を当該出力値から加算又は減算する補正を行う、構成が用いられてもよい。
【０１３２】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
【０１３３】
また、以上に説明した装置における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。当該装置は、例えば、ロボット制御装置３０等である。なお、ここでいう「コンピューターシステム」とは、ＯＳ（Operating  System）や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ（Compact  Disk）−ＲＯＭ等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１３４】
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル、差分プログラム等であってもよい。
【符号の説明】
【０１３５】
１…ロボットシステム、２０…ロボット、３０…ロボット制御装置、３１…プロセッサー、３２…メモリー、３４…通信部、３６…制御部、３６１…第１取得部、３６２…第２取得部、３６３…軌道算出部、３６４…力検出制御部、３６４Ａ…リセット処理部、３６４Ｂ…補正部、３６５…エンドエフェクター制御部、３６６…マニピュレーター制御部、Ａ…アーム、Ｂ…基台、Ｅ…エンドエフェクター、ＦＣ…力検出座標系、ＦＳ…力検出部、Ｍ…マニピュレーター、Ｐ１…期間、ＰＫ…ピーク値、ＳＨ１…第１閾値、ＳＨ２…第２閾値、Ｔ…タイミング、Ｘ…変数
【図１】
2020028926.tif 000003
【図２】
2020028926.tif 000004
【図３】
2020028926.tif 000005
【図４】
2020028926.tif 000006
【図５】
2020028926.tif 000007
【図６】
2020028926.tif 000008