(57)【特許請求の範囲】
【請求項１】
物体を運搬するロボットを制御するロボット制御装置であって、
前記物体を把持しているときに該物体から前記ロボットに加わる力を取得する力取得部と、
前記ロボットが前記物体の運搬動作を開始する前に前記力取得部が取得した第１の前記力の重力方向の力成分と、該力成分に対して予め定められた第１の閾値とを比較する比較部と、
前記第１の力の前記重力方向の力成分が前記第１の閾値よりも大きいときに、前記ロボットを停止させた状態に維持する停止指令部と、
前記第１の力の前記重力方向の力成分が前記第１の閾値以下となったときに、前記物体を運搬するための前記ロボットへの動作指令を生成し、該動作指令を該ロボットへ送信して前記運搬動作を開始する動作指令部と、を備え、
前記比較部は、前記運搬動作の開始後に前記ロボットが前記物体を運搬しているときに前記力取得部が取得した第２の前記力の前記重力方向の力成分と前記第１の閾値とを比較し、
前記停止指令部は、前記第２の力の前記重力方向の力成分が前記第１の閾値よりも大きいときに、前記ロボットによる前記運搬動作を停止する、ロボット制御装置。
【請求項２】
前記第１の力の前記重力方向の力成分が前記第１の閾値よりも大きいときに報知信号を生成する信号生成部をさらに備える、請求項１に記載のロボット制御装置。
【請求項３】
物体を運搬するロボットを制御するロボット制御装置であって、
前記物体を把持しているときに該物体から前記ロボットに加わる力を取得する力取得部と、
前記ロボットが前記物体を運搬しているときに、前記力取得部が取得した前記力の重力方向の力成分と、該力成分に対して予め定められた第１の閾値とを比較する比較部と、
前記力成分が前記第１の閾値よりも大きいときに、前記ロボットを停止する停止指令部と、
前記力成分が前記第１の閾値以下であるときに、前記物体を運搬するための前記ロボットへの動作指令を生成し、該動作指令を該ロボットへ送信する動作指令部と、を備え、
前記動作指令部は、前記力成分が、前記第１の閾値よりも小さい第２の閾値以下であるときは、前記物体を前記重力方向とは反対の方向に運搬するための前記動作指令を生成する、ロボット制御装置。
【請求項４】
物体を運搬するロボットを制御するロボット制御装置であって、
前記物体を把持しているときに該物体から前記ロボットに加わる力を取得する力取得部と、
前記ロボットが前記物体を運搬しているときに、前記力取得部が取得した前記力の重力方向の力成分と、該力成分に対して予め定められた第１の閾値とを比較する比較部と、
前記力成分が前記第１の閾値よりも大きいときに、前記ロボットを停止する停止指令部と、
前記力成分が前記第１の閾値以下であるときに、前記物体を運搬するための前記ロボットへの動作指令を生成し、該動作指令を該ロボットへ送信する動作指令部と、を備え、
前記動作指令部は、前記力成分が前記第１の閾値以下、且つ、該第１の閾値よりも小さい第２の閾値以上であるときは、前記物体を前記重力方向に運搬するための前記動作指令を生成する、ロボット制御装置。
【請求項５】
物体を運搬するロボットを制御するロボット制御装置であって、
前記物体を把持しているときに該物体から前記ロボットに加わる力を取得する力取得部と、
前記ロボットが前記物体を運搬しているときに、前記力取得部が取得した前記力の重力方向の力成分と、該力成分に対して予め定められた第１の閾値とを比較する比較部と、
前記力成分が前記第１の閾値よりも大きいときに、前記ロボットを停止する停止指令部と、
前記力成分が前記第１の閾値以下であるときに、前記物体を運搬するための前記ロボットへの動作指令を生成し、該動作指令を該ロボットへ送信する動作指令部と、を備え、
前記停止指令部は、前記力成分が前記第１の閾値よりも小さい第２の閾値よりも小さいときに、前記ロボットを停止する、ロボット制御装置。
【請求項６】
物体を運搬するロボットを制御するロボット制御装置であって、
前記物体を把持しているときに該物体から前記ロボットに加わる力を取得する力取得部と、
前記ロボットが前記物体を運搬しているときに、前記力取得部が取得した前記力の重力方向の力成分と、該力成分に対して予め定められた第１の閾値とを比較する比較部と、
前記力成分が前記第１の閾値よりも大きいときに、前記ロボットを停止する停止指令部と、
前記力成分が前記第１の閾値以下であるときに、前記物体を運搬するための前記ロボットへの動作指令を生成し、該動作指令を該ロボットへ送信する動作指令部と、を備え、
前記動作指令部は、前記力取得部が取得した前記力の、前記重力方向と交差する方向の力成分に応じて、前記物体を前記交差する方向へ運搬するための前記動作指令を生成する、ロボット制御装置。
【請求項７】
前記停止指令部は、前記力取得部が取得した前記力の水平方向の力成分が、該水平方向の力成分に対して予め設定された閾値よりも大きいときに、前記ロボットを停止する、請求項６に記載のロボット制御装置。
【請求項８】
ロボットと、
前記ロボットを制御する、請求項１〜７のいずれか１項に記載のロボット制御装置と、を備え、
前記ロボットは、該ロボットが物体を持ち上げているときに該物体から該ロボットに加わる力を検出して前記力取得部へ送信する力検出部を有する、ロボットシステム。
【請求項９】
物体を運搬するロボットを制御する方法であって、
前記ロボットが前記物体を把持しているときに該物体から該ロボットに加わる力を取得し、
前記ロボットが前記物体の運搬動作を開始する前に取得した第１の前記力の重力方向の力成分と、該力成分に対して予め定められた閾値とを比較し、
前記第１の力の前記重力方向の力成分が前記閾値よりも大きいときに、前記ロボットを停止させた状態に維持し、
前記第１の力の前記重力方向の力成分が前記第１の閾値以下となったときに、前記物体を運搬するための前記ロボットへの動作指令を生成し、該動作指令を該ロボットへ送信して前記運搬動作を開始し、
前記運搬動作の開始後に前記ロボットが前記物体を運搬しているときに取得した第２の前記力の重力方向の力成分と前記閾値とを比較し、
前記第２の力の前記重力方向の力成分が前記閾値よりも大きいときに、前記ロボットによる前記運搬動作を停止する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、人と協働して物体を運搬するロボットを制御するロボット制御装置、ロボットシステム、およびその方法に関する。
【背景技術】
【０００２】
人とロボットとが協働して物体を運搬するロボットシステムが知られている（例えば、特許文献１〜３）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−１７６８７２号公報
【特許文献２】特開２０００−３４３４７０号公報
【特許文献３】特許第４４４５０３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般的に、ロボットによって運搬できる物体の許容重量が、ロボット毎に定められている。本技術分野において、ロボットの許容重量を超過させずに、様々な種類の物体を運搬可能とする技術が求められている。
【課題を解決するための手段】
【０００５】
本発明の一態様において、人と協働して物体を運搬するロボットを制御するロボット制御装置は、物体を持ち上げているときに該物体からロボットに加わる力を取得する力取得部と、力取得部が取得した力の重力方向の力成分と、該力成分に対して予め定められた第１の閾値とを比較する比較部と、力成分が第１の閾値よりも大きいときに、ロボットを停止する停止指令部とを備える。
【０００６】
ロボット制御装置は、力成分が第１の閾値以下であるときに、物体を運搬するためのロボットへの動作指令を生成し、該動作指令を該ロボットへ送信する動作指令部をさらに備えてもよい。
【０００７】
動作指令部は、力成分が、第１の閾値よりも小さい第２の閾値以下であるときは、物体を重力方向とは反対の方向に運搬するための動作指令を生成してもよい。
【０００８】
動作指令部は、力成分が第１の閾値以下、且つ、該第１の閾値よりも小さい第２の閾値以上であるときは、物体を重力方向に運搬するための動作指令を生成してもよい。
【０００９】
停止指令部は、力成分が第１の閾値よりも小さい第２の閾値よりも小さいときに、ロボットを停止してもよい。動作指令部は、力取得部が取得した力の、重力方向と交差する方向の力成分に応じて、物体を交差する方向へ運搬するための動作指令を生成してもよい。
【００１０】
停止指令部は、力取得部が取得した力の水平方向の力成分が、該水平方向の力成分に対して予め設定された閾値よりも大きいときに、ロボットを停止してもよい。
【００１１】
本発明の他の態様において、ロボットシステムは、ロボットと、ロボットを制御するロボット制御装置とを備える。ロボットは、該ロボットが物体を持ち上げているときに該物体から該ロボットに加わる力を検出する力検出部を有する。
【００１２】
本発明のさらに他の態様において、人と協働して物体を運搬するロボットを制御する方法は、ロボットが物体を持ち上げているときに該物体から該ロボットに加わる力を検出することと、検出した力の重力方向の力成分と、該力成分に対して予め定められた閾値とを比較することと、力成分が閾値よりも大きいときに、ロボットを停止することとを備える。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態に係るロボットシステムの図である。
【図２】図１に示すロボットシステムのブロック図である。
【図３】図１に示すロボットシステムの動作フローの一例を示すフローチャートである。
【図４】ロボットと作業員とが協働してワークを保持している状態を示す図である。
【図５】力取得部が取得した力の重力方向の力成分の時間変化特性の例を表すグラフである。
【図６】使用者がワークから手を離した場合の、重力方向の力成分の時間変化特性の例を表すグラフである。
【図７】ロボットと作業員とが協働してワークを運搬しているときに、ワークに障害物が衝突した状態を示す図である。
【図８】図７に示すようにワークの下方から障害物が衝突した場合の、重力方向の力成分の時間変化特性の例を表すグラフである。
【図９】ロボットと作業員とが協働してワークを運搬しているときに、ワークに障害物が衝突した状態を示す図である。
【図１０】図９に示すようにワークの側方から障害物が衝突した場合の、水平方向の力成分の時間変化特性の例を表すグラフである。
【図１１】図１に示すロボットシステムの動作フローの他の例を示すブロック図である。
【図１２】図１１中のステップＳ２１にてＹＥＳと判定された場合における、重力方向の力成分の時間変化特性の例を示す。
【図１３】図１１中のステップＳ２３にてＹＥＳと判定された場合における、重力方向の力成分の時間変化特性の例を示す。
【図１４】図１１中のステップＳ２５にてＹＥＳと判定された場合における、水平方向の力成分の時間変化特性の例を示す。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。まず、図１および図２を参照して、本発明の一実施形態に係るロボットシステム１０について説明する。ロボットシステム１０は、物体としてのワークＷを、作業員Ａと協働して運搬する。
【００１５】
ロボットシステム１０は、ロボット１２と、該ロボット１２を制御するロボット制御装置５０とを備える。ロボット１２は、例えば垂直多関節ロボットであって、ロボットベース１４、旋回胴１６、ロボットアーム１８、ロボットハンド２０、および力検出部２２を備える。
【００１６】
ロボットベース１４は、ワークセルの床の上に固定されている。旋回胴１６は、ロボットベース１４に鉛直軸周りに旋回可能に取り付けられている。ロボットアーム１８は、旋回胴１６に回転可能に取り付けられた後腕部２４と、該後腕部２４の先端に回転可能に取り付けられた前腕部２６とを有する。
【００１７】
ロボットハンド２０は、手首部２８を介して、前腕部２６の先端に取り付けられている。ロボットハンド２０は、開閉可能な複数の指部３０を有し、ワークＷを把持し、解放することができる。
【００１８】
力検出部２２は、手首部２８に設置されている。本実施形態においては、力検出部２２は、６軸力覚センサを有し、例えば、図１中のｘ軸、ｙ軸、およびｚ軸の方向の荷重と、ｘ軸、ｙ軸、およびｚ軸の周りのモーメントとを検出することができる。力検出部２２は、検出した力（すなわち、荷重およびモーメント）に係るデータを、ロボット制御装置５０へ送信する。
【００１９】
図２に示すように、ロボット１２は、複数のサーボモータ３２を有する。サーボモータ３２は、旋回胴１６、ロボットアーム１８、手首部２８、およびロボットハンド２０に内蔵され、ロボット制御装置５０からの指令に応じて、これらの要素を動作させる。
【００２０】
ロボット制御装置５０は、ＣＰＵ（中央演算処理装置）５２、記憶部５４、および力取得部５６を備える。記憶部５４および力取得部５６は、バスを介して、ＣＰＵ５２に接続されている。
【００２１】
記憶部５４は、例えばＥＥＰＲＯＭ（登録商標）等のような、電気的に消去・記録可能な不揮発性メモリ、または、例えばＤＲＡＭ、ＳＲＡＭ等のような、高速で読み書きのできるランダムアクセスメモリによって構成される。記憶部５４は、ロボット１２を動作させるのに必要な定数、変数、およびロボットプログラム等を記録する。
【００２２】
力取得部５６は、Ａ／Ｄ変換器等を含み、力検出部２２から送信される力に係るデータを、受け付ける。ＣＰＵ５２は、力取得部５６が取得した力に係るデータを、記憶部５４へ記憶する。
【００２３】
本実施形態においては、ＣＰＵ５２は、比較部５８、停止指令部６０、および動作指令部６２の機能を担う。なお、比較部５８、停止指令部６０、および動作指令部６２の機能については、後述する。
【００２４】
次に、図３〜図１０を参照して、ロボットシステム１０の動作フローの一実施形態について、説明する。図３に示すフローは、ＣＰＵ５２が、使用者、上位コントローラ、またはプログラム等から、ワークＷを運搬する指令を受け付けたときに、開始する。
【００２５】
ステップＳ１において、ＣＰＵ５２は、ロボット１２に加わる力の検出を開始する。具体的には、ＣＰＵ５２は、力検出部２２に力検出指令を送る。力検出部２２は、力検出指令を受信すると、該力検出部２２が設置されている部位に作用する力（すなわち、ｘ軸、ｙ軸、およびｚ軸の方向の荷重と、ｘ軸、ｙ軸、およびｚ軸の周りのモーメント）を、周期τ（例えば１秒）で検出する。
【００２６】
力検出部２２は、検出した力に係るデータを、ロボット制御装置５０へ送信する。力取得部５６は、力検出部２２から、力に係るデータを周期τで受信する。ＣＰＵ５２は、力取得部５６が取得した力に係るデータを、記憶部５４へ順次記憶する。
【００２７】
ステップＳ２において、ＣＰＵ５２は、ロボット１２を動作させて、ワークＷを持ち上げる。具体的には、ＣＰＵ５２は、ロボット１２に内蔵されたサーボモータ３２へ指令を送り、予め定められた場所Ｂ（図１）に設置されたワークＷを把持し、該ワークＷを持ち上げる。
【００２８】
本実施形態に係るロボット１２は、様々な重量を有する種々のワークＷを、人と協働して運搬する。ここで、ロボット１２においては、運搬できる物体の許容重量が定められている。仮に、この許容重量を超過するワークＷを運搬すると、ロボット１２が故障する虞が増大する。
【００２９】
そこで、本実施形態に係るロボットシステム１０は、ステップＳ２にてワークＷを持ち上げたときに、許容重量を超過した負荷がロボット１２に加えられているか否かを判定する。
【００３０】
ステップＳ３において、ＣＰＵ５２は、ステップＳ２にてワークＷを持ち上げているときに該ワークＷからロボットに加わる力Ｆの重力方向の力成分Ｆｇが、予め定められた閾値αよりも大きいか否かを判定する。
【００３１】
具体的には、ＣＰＵ５２は、直近に力取得部５６が取得した力に係るデータから、ワークＷからロボットハンド２０に加わる力Ｆのうち、重力方向に作用する力成分Ｆｇを算出する。
【００３２】
この力成分Ｆｇは、ロボットハンド２０がワークＷを持ち上げたときに、該ワークＷの重量に起因してロボットハンド２０に掛かる力であって、例えば、重力方向の荷重、または水平軸周りのモーメントを含む。
【００３３】
ＣＰＵ５２は、算出した力成分Ｆｇと、該力成分Ｆｇに対して予め設定された閾値α（第１の閾値）とを比較する。ＣＰＵ５２は、力成分Ｆｇが閾値αよりも大きい場合、ＹＥＳと判定し、ステップＳ４へ進む。一方、ＣＰＵ５２は、力成分Ｆｇが閾値α以下である場合、ＮＯと判定し、ステップＳ６へ進む。
【００３４】
このように、本実施形態においては、ＣＰＵ５２は、力成分Ｆｇと閾値αとを比較する比較部５８として機能する。なお、閾値αは、許容重量に相関して定められ（例えば、α＝許容重量×重力加速度）、記憶部５４に予め記憶される。
【００３５】
ステップＳ４において、ＣＰＵ５２は、ワークＷの重量が、ロボット１２の許容重量を超過している旨を、使用者に報知する。一例として、ＣＰＵ５２は、「許容重量を超過しています。ワークＷの運搬を補助して下さい」との画像信号または音声信号を生成する。そして、ＣＰＵ５２は、ロボット制御装置５０に接続された表示部またはスピーカ（図示せず）を介して、使用者に画像または音声を出力する。
【００３６】
使用者は、ステップＳ４によりロボット１２の許容重量を超過している旨を認識した場合、図４に示すように、ワークＷを下方から手で支える。そうすると、ロボットハンド２０に掛かる力成分Ｆｇは、図５に示すように、急激に低下することになる。
【００３７】
本実施形態においては、ＣＰＵ５２は、後述のステップＳ５において、図５に示すような力成分Ｆｇの低下を検知し、該力成分Ｆｇの低下を検知したときに、後述のステップＳ６において、ロボット１２によるワークＷの運搬動作を開始する。
【００３８】
ステップＳ５において、ＣＰＵ５２は、力成分Ｆｇが閾値α以下であるか否かを判定する。具体的には、ＣＰＵ５２は、直近に力取得部５６が取得した力に係るデータから、力成分Ｆｇを算出する。
【００３９】
ＣＰＵ５２は、力成分Ｆｇが閾値α以下である場合、ＹＥＳと判定し、ステップＳ６へ進む。一方、ＣＰＵ５２は、成分Ｆｇが閾値αよりも大きい場合、ＮＯと判定し、ステップＳ４へ戻り、ワークＷの運搬を補助する必要がある旨を、使用者に再度報知する。
【００４０】
このようにして、ＣＰＵ５２は、作業者ＡがワークＷを支えることによって力成分Ｆｇが図５に示すように低下したことを、検知することができる。
【００４１】
ステップＳ６において、ＣＰＵ５２は、ロボット１２を動作させて、ワークＷを人と協働して移動する。本実施形態においては、ＣＰＵ５２は、記憶部５４に記憶されたロボットプログラムに従って、ワークＷを運搬するためのロボット１２への動作指令を生成する。
【００４２】
そして、ＣＰＵ５２は、生成した該動作指令を、ロボット１２に内蔵されたサーボモータ３２へ送信する。これにより、ロボット１２は、ロボットプログラムに従って動作し、ワークＷを、場所Ｂから予め定められた目的場所まで、人と協働して運搬する。
【００４３】
このように、本実施形態においては、ＣＰＵ５２は、力成分Ｆｇが閾値α以下であるときに、ロボット１２への動作指令を生成して送信する動作指令部６２として機能する。
【００４４】
なお、上記のロボットプログラムは、ワークＷを場所Ｂから目的場所まで移動させるためのロボット１２の動作経路を該ロボット１２に教示すること等によって、構築され得る。
【００４５】
ステップＳ６にて、ロボット１２が作業者Ａと協働でワークＷを運搬しているときに、作業員Ａが不意にワークＷから手を離してしまう場合がある。この場合、図６に示すように、力成分Ｆｇは急激に上昇し、閾値αを再度超過することになる。そこで、実施形態においては、ＣＰＵ５２は、ステップＳ６の実行中に、以下のステップＳ７において、力成分Ｆｇが閾値αを超えたか否かを監視する。
【００４６】
ステップＳ７において、ＣＰＵ５２は、直近に取得した力Ｆの力成分Ｆｇが閾値αよりも大きいか否かを判定する。具体的には、ＣＰＵ５２は、直近に力取得部５６が取得した力Ｆの力成分Ｆｇを算出する。
【００４７】
そして、ＣＰＵ５２は、比較部５８として機能して、算出した力成分Ｆｇと閾値αとを比較する。ＣＰＵ５２は、力成分Ｆｇが閾値αよりも大きい場合、ＹＥＳと判定し、ステップＳ８へ進む。一方、ＣＰＵ５２は、成分Ｆｇが閾値α以下である場合、ＮＯと判定し、ステップＳ９へ進む。
【００４８】
ステップＳ７にてＹＥＳと判定した場合、ステップＳ８において、ＣＰＵ５２は、ロボット１２の動作を停止する。具体的には、ＣＰＵ５２は、ロボット１２に内蔵されたサーボモータ３２を停止する指令を生成し、該サーボモータ３２へ送信する。これにより、ロボット１２の動作が停止される。
【００４９】
このように、本実施形態においては、ＣＰＵ５２は、力成分Ｆｇが閾値αよりも大きいときに、ロボット１２を停止する停止指令部６０として機能する。ステップＳ８を実行した後、ＣＰＵ５２は、ステップＳ４へ戻り、ワークＷの運搬を補助する必要がある旨を、使用者に再度報知する。
【００５０】
ステップＳ７にてＮＯと判定した場合、ステップＳ９において、ＣＰＵ５２は、直近に取得した力Ｆの力成分Ｆｇが閾値βよりも小さいか、または、直近に取得した力Ｆの水平方向の成分Ｆｈが閾値γよりも大きいか否かを判定する。
【００５１】
このステップＳ９について、図７〜図１０を参照して、以下に説明する。ステップＳ６にてロボット１２が作業員ＡとワークＷを運搬しているときに、図７に示すように、ワークＷの下方から障害物Ｃが衝突する可能性がある。
【００５２】
この場合、作業員Ａの身体（例えば指）が、障害物ＣとワークＷ（またはロボット１２）との間に挟まれて、作業員Ａが怪我をする虞がある。図７に示すようにワークＷの下方から障害物Ｃが衝突した場合、図８に示すように、力成分Ｆｇは、急激に低下することになる。
【００５３】
また、ステップＳ６にてロボット１２が作業員ＡとワークＷを運搬しているときに、図９に示すように、ワークＷの側方から障害物Ｄが衝突する可能性がある。この場合も、作業員Ａの身体が、障害物ＤとワークＷ（またはロボット１２）との間に挟まれて、作業員Ａが怪我をする虞がある。
【００５４】
図９に示すようにワークＷの側方から障害物Ｄが衝突した場合、ワークＷからロボットに加わる力Ｆの水平方向の力成分Ｆｈは、図１０に示すように、急激に上昇することになる。
【００５５】
そこで、本実施形態においては、ＣＰＵ５２は、図８に示すような力成分Ｆｇの低下、および、図１０に示すような力成分Ｆｈの上昇を監視すべく、ステップＳ９において、力成分Ｆｇが閾値βよりも小さいか、または、力Ｆの水平方向の成分Ｆｈが閾値γよりも大きいか否かを判定する。
【００５６】
具体的には、ＣＰＵ５２は、直近に力取得部５６が取得した力の力成分Ｆｇを算出する。そして、ＣＰＵ５２は、算出した力成分Ｆｇが閾値βよりも小さいか否かを判定する。この閾値βは、上記の閾値αよりも小さい値（すなわち、α＞β）として使用者によって予め定められ、記憶部５４に記憶される。
【００５７】
一方、ＣＰＵ５２は、直近に力取得部５６が取得した力に係るデータから、力Ｆの水平方向の力成分Ｆｈを算出する。そして、ＣＰＵ５２は、算出した力成分Ｆｈが閾値γよりも大きいか否かを判定する。この閾値γは、使用者によって予め定められ、記憶部５４に記憶される。
【００５８】
ＣＰＵ５２は、力成分Ｆｇが閾値βよりも小さい（すなわち、Ｆｇ＜β）、または、力成分Ｆｈが閾値γよりも大きい（すなわち、Ｆｈ＞γ）場合、ＹＥＳと判定し、ステップＳ１０へ進む。
【００５９】
一方、ＣＰＵ５２は、力成分Ｆｇが閾値β以上（すなわち、Ｆｇ≧β）、且つ、力成分Ｆｈが閾値γ以下（すなわち、Ｆｈ≦γ）である場合、ＮＯと判定し、ステップＳ１１へ進む。
【００６０】
ステップＳ９にてＹＥＳと判定した場合、ステップＳ１０において、ＣＰＵ５２は、上述のステップＳ８と同様に、ロボット１２の動作を停止し、図３に示すフローを終了する。
【００６１】
一方、ステップＳ９にてＮＯと判定した場合、ステップＳ１１において、ＣＰＵ５２は、ワークＷを目的場所まで移動させたか否かを判定する。例えば、ＣＰＵ５２は、各サーボモータ３２に設けられたエンコーダ（図示せず）からの信号に基づいて、各サーボモータ３２を、ロボットプログラムに規定されている回転数だけ適切に回転させたか否かを判定する。
【００６２】
ＣＰＵ５２は、ワークＷを目的場所まで移動させた（すなわちＹＥＳ）と判定した場合、ステップＳ１２へ進む。一方、ＣＰＵ５２は、ワークＷを目的場所まで移動させていない（すなわちＮＯ）と判定した場合、ステップＳ７へ戻る。
【００６３】
ステップＳ１２において、ＣＰＵ５２は、ロボットハンド２０に内蔵されているサーボモータ３２に指令を送り、指部３０を開いて、把持していたワークＷを解放する。こうして、ワークＷは、ロボット１２と作業員Ａとの協働によって、場所Ｂから目的場所へ運搬されることになる。
【００６４】
ステップＳ１３において、ＣＰＵ５２は、使用者から指定された全てのワークＷの運搬作業が完了したか否かを判定する。ＣＰＵ５２は、全てのワークＷの運搬作業が完了した（すなわちＹＥＳ）と判定した場合、図３に示すフローを終了する。一方、ＣＰＵ５２は、運搬すべきワークＷが残存している（すなわちＮＯ）と判定した場合、ステップＳ２へ戻り、次のワークＷの運搬作業を実行する。
【００６５】
上述のように、本実施形態においては、ＣＰＵ５２は、ステップＳ６の実行中に、ワークＷからロボット１２に加わる力成分Ｆｇを監視し、ロボット１２の許容重量の超過を検知したとき（ステップＳ７にてＹＥＳ）に、ロボットの動作を停止する。この構成によれば、許容重量を超過する負荷がロボットに掛かるのを防ぎつつ、様々な重量を有する、種々のワークＷを運搬することができる。
【００６６】
また、本実施形態によれば、閾値αの値を、許容重量に相当する値以下となる範囲で適宜設定することによって、ロボット１２と作業員Ａとの間の重量の分担割合を適宜調整できる。これにより、より広範な種類のワークＷの運搬作業に柔軟に対応することができる。
【００６７】
また、本実施形態によれば、図１に示すようなブロック形状のワークＷのみならず、細長い形状等、様々な形状のワークＷの運搬に対応することができる。
【００６８】
また、本実施形態においては、ステップＳ６の実行中に、力成分ＦｇおよびＦｈを監視することによって、ワークＷの運搬中に障害物Ｃ、Ｄが衝突したことを検知し（ステップＳ９）、障害物Ｃ、Ｄの衝突を検知したときに、即、ロボット１２を停止する。この構成によれば、ワークＷの運搬中に作業員Ａが障害物Ｃ、Ｄによって怪我をすることを、確実に防止することができる。
【００６９】
また、本実施形態においては、ＣＰＵ５２は、ロボット１２がワークＷを持ち上げた（ステップＳ２）後、許容重量を超過した負荷がロボット１２に掛かっていることを検知したとき（ステップＳ３にてＹＥＳ）、使用者にその旨を報知している。この構成によれば、使用者は、ロボット１２によるワークＷの運搬作業を補助する必要性があることを、自動的且つ直感的に認識することができる。
【００７０】
また、ステップＳ３にてＹＥＳと判定した場合、ＣＰＵ５２は、作業者ＡがワークＷを支えたことを検知する（ステップＳ５にてＹＥＳ）までは、ロボット１２によるワークＷの搬送動作を開始することがない。この構成によれば、許容重量を超過した負荷がロボット１２に掛かるのを確実に防止できる。
【００７１】
次に、図１１〜図１４を参照して、ロボットシステム１０の動作フローの他の実施形態について説明する。なお、図１１に示すフローにおいて、上述した図３に示すフローと同様のステップには同じステップ番号を付し、詳細な説明を省略する。
【００７２】
本実施形態においては、ＣＰＵ５２は、作業員ＡがワークＷを支えたことを検知した場合（すなわち、ステップＳ５にてＹＥＳ）、作業員ＡがワークＷに対して加えた力の方向へワークＷを運搬するように、ロボット１２を制御する。
【００７３】
具体的には、ＣＰＵ５２は、ステップＳ５にてＹＥＳと判定した場合、以下のステップＳ２１およびＳ２５を並行して実行する。
【００７４】
ステップＳ２１において、ＣＰＵ５２は、直近に取得した力Ｆの力成分Ｆｇが、予め定められた閾値δ以上であるか否かを判定する。この閾値δは、上記の閾値αよりも小さい値（すなわち、α＞δ）として使用者によって予め定められ、記憶部５４に記憶される。
【００７５】
ＣＰＵ５２は、力成分Ｆｇが閾値δ以上である場合、ＹＥＳと判定し、ステップＳ２２へ進む。一方、ＣＰＵ５２は、成分Ｆｇが閾値δよりも小さい場合、ＮＯと判定し、ステップＳ２３へ進む。
【００７６】
ここで、ステップＳ２１にてＹＥＳと判定された場合における、成分Ｆｇの時間変化特性の例を、図１２に示す。この例においては、作業員Ａは、時点ｔ１にて、ワークＷを下方から支える動作を行い、これにより、成分Ｆｇが減少している。
【００７７】
その後に、作業員Ａは、時点ｔ２にて、ワークＷを支える手を重力方向に僅かに下降させ、ワークＷを下方から支える力を弱めている。その結果、成分Ｆｇは、時点ｔ２から急激に上昇し、閾値δと閾値αとの間の値となっている。
【００７８】
ＣＰＵ５２は、このような作業員ＡによるワークＷの下降動作（すなわち、成分Ｆｇの上昇）を検知し、この動作に追随するように、ステップＳ２２において、ロボット１２によってワークＷを重力方向へ移動させる。
【００７９】
ステップＳ２２において、ＣＰＵ５２は、ロボット１２を動作させて、ワークＷを重力方向へ移動する。具体的には、ＣＰＵ５２は、ワークＷを重力方向に運搬するための動作指令を生成する。
【００８０】
そして、ＣＰＵ５２は、生成した該動作指令を、ロボット１２に内蔵されたサーボモータ３２へ送信する。これにより、ロボット１２は、作業員ＡがワークＷを下降させる動作に追随するように、ワークＷを重力方向へ移動させる。
【００８１】
一方、ステップＳ２１にてＮＯと判定した場合、ステップＳ２３において、ＣＰＵ５２は、直近に取得した力Ｆの力成分Ｆｇが、上記の閾値βと閾値εとの間（すなわち、ε≧Ｆｇ≧β）であるか否かを判定する。この閾値εは、閾値αよりも小さく、且つ、閾値βよりも大きい値（すなわち、α＞ε＞β）として使用者によって予め定められ、記憶部５４に記憶される。
【００８２】
ＣＰＵ５２は、力成分Ｆｇが閾値βと閾値εとの間である場合、ＹＥＳと判定し、ステップＳ２４へ進む。一方、ＣＰＵ５２は、成分Ｆｇが、閾値βと閾値εとの間にない（すなわち、Ｆｇ＞ε、またはβ＞Ｆｇ）場合、ＮＯと判定し、ステップＳ７へ進む。
【００８３】
ここで、ステップＳ２３にてＹＥＳと判定された場合における、成分Ｆｇの時間変化特性の例を、図１３に示す。この例においては、作業員Ａは、時点ｔ１にて、ワークＷを下方から支える動作を行い、これにより、成分Ｆｇが減少している。
【００８４】
その後に、作業員Ａは、時点ｔ３にて、下方からワークＷを支えながら、該ワークＷを、重力方向とは反対の鉛直上方へ所定の力で持ち上げる動作を行っている。これより、力検出部２２によって検出される力Ｆの重力方向の成分Ｆｇは、時点ｔ３から急激に低下し、閾値βと閾値εとの間の値となっている。
【００８５】
ＣＰＵ５２は、このような作業員ＡによるワークＷの持ち上げ動作（すなわち、成分Ｆｇの低下）を検知し、この動作に追随するように、ステップＳ２４において、ロボット１２によってワークＷを鉛直上方へ移動させる。
【００８６】
ステップＳ２４において、ＣＰＵ５２は、ロボット１２を動作させて、ワークＷを鉛直上方へ移動する。具体的には、ＣＰＵ５２は、ワークＷを鉛直上方へ移動させるための動作指令を生成する。
【００８７】
そして、ＣＰＵ５２は、生成した該動作指令を、ロボット１２に内蔵されたサーボモータ３２へ送信する。これにより、ロボット１２は、作業員ＡによるワークＷの持ち上げ動作に追随するように、ワークＷを鉛直上方へ移動させる。
【００８８】
一方、ステップＳ２５において、ＣＰＵ５２は、直近に取得した力Ｆの水平方向の成分Ｆｈが閾値ζ以上であるか否かを判定する。具体的には、ＣＰＵ５２は、直近に取得した力Ｆから水平方向の力成分Ｆｈを算出し、算出した該力成分Ｆｈが閾値ζ以上であるか否かを判定する。この閾値ζは、使用者によって予め定められ、記憶部５４に記憶される。
【００８９】
ＣＰＵ５２は、力成分Ｆｈが閾値ζ以上である場合、ＹＥＳと判定し、ステップＳ２６へ進む。一方、ＣＰＵ５２は、成分Ｆｈが閾値ζよりも小さい場合、ＮＯと判定し、ステップＳ７へ進む。
【００９０】
ここで、ステップＳ２５にてＹＥＳと判定された場合の、成分Ｆｈの時間変化特性の例を、図１４に示す。この例においては、作業員Ａは、時点ｔ４にて、ワークＷを支えながら該ワークＷを重力方向と交差する方向（例えば、水平方向）へ押す動作を行い、これにより、成分Ｆｈが急激に上昇している。
【００９１】
本実施形態においては、ＣＰＵ５２は、このような作業員Ａの動作（すなわち、成分Ｆｈの上昇）を検知し、この動作に追随するように、ステップＳ２６において、ロボット１２によってワークＷを水平方向へ移動させる。
【００９２】
ステップＳ２６において、ＣＰＵ５２は、ロボット１２を動作させて、ワークＷを水平方向へ移動する。具体的には、ＣＰＵ５２は、ステップＳ２５にて算出した力成分Ｆｈの方向へワークＷを移動させるための動作指令を生成する。
【００９３】
そして、ＣＰＵ５２は、生成した該動作指令を、ロボット１２に内蔵されたサーボモータ３２へ送信する。これにより、ロボット１２は、作業員ＡがワークＷを押す動作に追随するように、該ワークＷを力成分Ｆｈの方向へ移動させる。
【００９４】
上述したように、ＣＰＵ５２は、ステップＳ２１〜Ｓ２４と、ステップＳ２５〜２６とを、並行して実行する。仮に、ステップＳ２２とＳ２６とを同時に実行した場合、ＣＰＵ５２は、重力方向への動作指令と、力成分Ｆｈの方向への動作指令とを生成し、サーボモータ３２へ送信することになる。
【００９５】
そうすると、ワークＷを重力方向へ移動させる動作と、力成分Ｆｈの方向へ移動させる動作とが合成され、ロボット１２は、作業員ＡがワークＷへ与えた力の方向へ、該ワークＷを移動させることができる。
【００９６】
本実施形態においては、ＣＰＵ５２は、力成分Ｆｇが閾値α以下であるときに、力取得部５６が取得した力Ｆの大きさおよび方向に基づいて、ワークＷを運搬するための動作指令を生成し、該動作指令を該ロボット１２へ送信する。
【００９７】
この構成によれば、許容重量を超過した負荷がロボット１２に掛かるのを防ぎつつ、作業員Ａは、ワークＷを所望の方向へ、ロボット１２と協働で運搬することができる。これにより、ワークＷの運搬作業を円滑に実行することができる。
【００９８】
なお、ＣＰＵ５２は、上述のステップＳ２６において、力成分Ｆｈの大きさに応じて、ロボット１２によってワークＷを運搬する速度を制御してもよい。例えば、ＣＰＵ５２は、力成分Ｆｈの大きさに比例する速度でワークＷを移動させるように、ロボット１２への動作指令を生成してもよい。
【００９９】
また、上述のステップＳ２１、Ｓ２３、Ｓ２５において、ＣＰＵ５２は、時間に対する力成分Ｆｇ、Ｆｈの変化の度合（例えば、傾き＝δＦ／δｔ）を算出し、算出した変化の度合と、該変化の度合に対して設定された閾値とを比較してもよい。
【０１００】
例えば、ＣＰＵ５２は、図１２に示すような、時点ｔ２での力成分Ｆｇの傾きの増大を検知したときに、ステップＳ２２を実行してもよい。また、ＣＰＵ５２は、図１３に示すような、時点ｔ３での力成分Ｆｇの傾きの低下を検知したときに、ステップＳ２４を実行してもよい。
【０１０１】
また、図１１に示すフローにおいて、図３に示すステップＳ９およびＳ１０のような、緊急停止スキームを導入することも可能である。この場合において、ＣＰＵ５２は、時間に対する力成分Ｆｇ、Ｆｈの変化の度合が、予め定められた閾値を超えた場合、すなわち、力成分Ｆｇ、Ｆｈが、異常に増加または減少した場合に、ロボット１２を停止させてもよい。
【０１０２】
また、力検出部２２は、手首部２８に限らず、旋回胴１６、ロボットアーム１８、またはロボットハンド２０等、ロボット１２の如何なる部位に設置されてもよい。
【０１０３】
以上、発明の実施形態を通じて本発明を説明したが、上述の実施形態は、特許請求の範囲に係る発明を限定するものではない。また、本発明の実施形態の中で説明されている特徴を組み合わせた形態も本発明の技術的範囲に含まれ得るが、これら特徴の組み合わせの全てが、発明の解決手段に必須であるとは限らない。さらに、上述の実施形態に、多様な変更または改良を加えることが可能であることも当業者に明らかである。
【０１０４】
また、特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、工程、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」、「次いで」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【０１０５】
１０    ロボットシステム
１２    ロボット
２２    力検出部
５０    ロボット制御装置
５２    ＣＰＵ
【図１】
0006577326.tif 000002
【図２】
0006577326.tif 000003
【図３】
0006577326.tif 000004
【図４】
0006577326.tif 000005
【図５】
0006577326.tif 000006
【図６】
0006577326.tif 000007
【図７】
0006577326.tif 000008
【図８】
0006577326.tif 000009
【図９】
0006577326.tif 000010
【図１０】
0006577326.tif 000011
【図１１】
0006577326.tif 000012
【図１２】
0006577326.tif 000013
【図１３】
0006577326.tif 000014
【図１４】
0006577326.tif 000015