(57)【要約】【課題】ロボットに作用する外力の情報をより有効に活用することができるロボットシステムを提供する。【解決手段】ロボットシステム１は、ワークを把持して搬送する多関節ロボット１０と、多関節ロボット１０に作用する外力を検出する外力センサ２０と、外力センサ２０の検出値に基づいて多関節ロボット１０と物体との接触を検知する接触検知部１１６と、外力センサ２０の検出値に基づいてワークの重量を検出する重量検出部１１７と、を備える。【選択図】図１
2020097069.tif 000002
【特許請求の範囲】
【請求項１】
ワークを把持して搬送する多関節ロボットと、
前記多関節ロボットに作用する外力を検出する外力センサと、
前記外力センサの検出値に基づいて前記多関節ロボットと物体との接触を検知する接触検知部と、
前記外力センサの検出値に基づいて前記ワークの重量を検出する重量検出部と、を備えるロボットシステム。
【請求項２】
前記多関節ロボットが前記ワークを把持していることを検知する把持検知部と、
前記把持検知部による検知結果に基づいて、前記接触検知部による接触の検知と前記重量検出部による重量の検出とのいずれかを選択する処理選択部と、を更に備える請求項１記載のロボットシステム。
【請求項３】
前記多関節ロボットの動作に基づいて前記多関節ロボットが把持している前記ワークの浮上を検知する浮上検知部を更に備え、
前記処理選択部は、前記浮上検知部による検知結果に更に基づいて前記接触検知部による接触の検知と前記重量検出部による重量の検出とのいずれかを選択する、請求項２記載のロボットシステム。
【請求項４】
前記多関節ロボットの周囲に物体が存在するか否かを検出する物体センサを更に備え、
前記処理選択部は、前記物体センサの検出結果に更に基づいて前記接触検知部による接触の検知と前記重量検出部による重量の検出とのいずれかを選択する、請求項２又は３記載のロボットシステム。
【請求項５】
前記外力センサの検出値に基づいて、前記多関節ロボットのうち前記ワークを把持する部分に作用する外力を算出する外力算出部を更に備え、
前記処理選択部は、前記外力算出部により算出される前記外力の方向に更に基づいて前記接触検知部による接触の検知と前記重量検出部による重量の検出とのいずれかを選択する、請求項２〜４のいずれか一項記載のロボットシステム。
【請求項６】
外力センサは、多関節ロボットの少なくとも一つの関節に作用するトルクを検出するトルクセンサを含む、請求項１〜５のいずれか一項記載のロボットシステム。
【請求項７】
前記多関節ロボットのモデルに基づいて、前記多関節ロボットの動作に伴う慣性力を算出する慣性力算出部と、
前記多関節ロボットのうち前記ワークを把持する部分の重量に前記重量検出部による検出結果を加算して前記モデルを補正するモデル補正部と、を更に備え、
前記接触検知部は、前記モデル補正部により補正された前記モデルに基づき前記慣性力算出部が算出した慣性力と、前記外力センサの検出値とに基づいて前記多関節ロボットと物体との接触を検知する、請求項１〜６のいずれか一項記載のロボットシステム。
【請求項８】
前記重量検出部による重量の検出結果に基づいて、前記ワークの仕分け作業を前記多関節ロボットに実行させる仕分制御部を更に備える、請求項１〜７のいずれか一項記載のロボットシステム。
【請求項９】
前記重量検出部による重量の検出結果に基づいて前記ワークの異常を検知するワーク異常検知部を更に備える、請求項１〜８のいずれか一項記載のロボットシステム。
【請求項１０】
ワークを把持して搬送する多関節ロボットに作用する外力の検出値に基づいて多関節ロボットと物体との接触を検知することと、
外力の検出値に基づいてワークの重量を検出することと、を含むロボットの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ロボットシステム及びロボットの制御方法に関する。
【背景技術】
【０００２】
特許文献１には、サーボモータにより駆動されるロボットアームと、サーボモータと回転位置からロボットアームに作用する外乱を推定する外乱推定オブザーバとを備えるロボットシステムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２５３１３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、ロボットに作用する外力の情報をより有効に活用することができるロボットシステムを提供する。
【課題を解決するための手段】
【０００５】
本開示の一側面に係るロボットシステムは、ワークを把持して搬送する多関節ロボットと、前記多関節ロボットに作用する外力を検出する外力センサと、前記外力センサの検出値に基づいて前記多関節ロボットと物体との接触を検知する接触検知部と、前記外力センサの検出値に基づいて前記ワークの重量を検出する重量検出部と、を備える。
【０００６】
本開示の他の側面に係るロボットの制御方法は、ワークを把持して搬送する多関節ロボットに作用する外力の検出値に基づいて多関節ロボットと物体との接触を検知することと、外力の検出値に基づいてワークの重量を検出することと、を含む。
【発明の効果】
【０００７】
本開示によれば、ロボットに作用する外力の情報をより有効に活用することができるロボットシステムを提供することができる。
【図面の簡単な説明】
【０００８】
【図１】ロボットシステムの全体構成を示す模式図である。
【図２】コントローラの機能的な構成を例示するブロック図である。
【図３】コントローラのハードウェア構成を例示するブロック図である。
【図４】仕分制御手順を例示するフローチャートである。
【図５】外力対応処理手順を例示するフローチャートである。
【図６】外力対応処理手順を例示するフローチャートである。
【図７】ステータス更新手順を例示するフローチャートである。
【発明を実施するための形態】
【０００９】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【００１０】
〔ロボットシステム〕
図１に示すロボットシステム１は、ロボットと作業者との協働を前提とする人協働型のシステムである。ロボットシステム１は、多関節ロボット１０と、外力センサ２０と、物体センサ３０と、コントローラ１００とを備える。
【００１１】
多関節ロボット１０は、ワークを把持して搬送する。多関節ロボット１０は、例えば６軸の垂直多関節ロボットであり、基部１１と、先端部１２と、ハンド１３と、多関節アーム４０とを有する。基部１１は、多関節ロボット１０用の作業エリアにおいて、例えば床面（設置面）に設置されている。多関節アーム４０は、基部１１及び先端部１２を接続する。
【００１２】
多関節アーム４０は複数の関節を有し、当該複数の関節の角度を変更することで基部１１に対する先端部１２の位置及び姿勢を調節する。例えば多関節アーム４０は、旋回部４１と、下アーム４２と、上アーム４３と、手首部４６と、アクチュエータ６１，６２，６３，６４，６５，６６と、角度センサ７１，７２，７３，７４，７５，７６とを有する。旋回部４１は、鉛直な軸線Ａｘ１まわりに旋回可能となるように、基部１１の上部に設けられている。すなわち多関節アーム４０は、軸線Ａｘ１まわりに旋回部４１を旋回可能とする関節５１を有する。
【００１３】
下アーム４２は、軸線Ａｘ１に交差（例えば直交）する軸線Ａｘ２まわりに揺動可能となるように旋回部４１に接続されている。すなわち多関節アーム４０は、軸線Ａｘ２まわりに下アーム４２を揺動可能とする関節５２を有する。なお、ここでの交差とは、所謂立体交差のように、互いにねじれの関係にある場合も含む。以下においても同様である。
【００１４】
上アーム４３は、軸線Ａｘ１に交差する軸線Ａｘ３まわりに揺動可能となるように、下アーム４２の端部に接続されている。すなわち多関節アーム４０は、軸線Ａｘ３まわりに上アーム４３を揺動可能とする関節５３を有する。軸線Ａｘ３は軸線Ａｘ２に平行であってもよい。
【００１５】
上アーム４３の先端部は、上アーム４３の中心に沿う軸線Ａｘ４まわりに旋回可能となっている。すなわち多関節アーム４０は、軸線Ａｘ４まわりに上アーム４３の先端部を旋回可能とする関節５４を有する。換言すると、上アーム４３の先端部側４５は、基端部側４４に対して旋回可能である。
【００１６】
手首部４６は、軸線Ａｘ４に交差（例えば直交）する軸線Ａｘ５まわりに揺動可能となるように上アーム４３の先端部に接続されている。すなわち多関節アーム４０は、軸線Ａｘ５まわりに手首部４６を揺動可能とする関節５５を有する。
【００１７】
先端部１２は、手首部４６の中心に沿う軸線Ａｘ６まわりに旋回可能となるように、手首部４６の先端部に接続されている。すなわち多関節アーム４０は、軸線Ａｘ６まわりに先端部１２を旋回可能とする関節５６を有する。
【００１８】
アクチュエータ６１，６２，６３，６４，６５，６６は、例えば電動モータを動力源とし、多関節アーム４０の複数の可動部をそれぞれ駆動する。例えばアクチュエータ６１は、軸線Ａｘ１まわりに旋回部４１を旋回させ、アクチュエータ６２は軸線Ａｘ２まわりに下アーム４２を揺動させ、アクチュエータ６３は軸線Ａｘ３まわりに上アーム４３を揺動させ、アクチュエータ６４は軸線Ａｘ４まわりに上アーム４３の先端部を旋回させ、アクチュエータ６５は軸線Ａｘ５まわりに手首部４６を揺動させ、アクチュエータ６６は軸線Ａｘ６まわりに先端部１２を旋回させる。すなわちアクチュエータ６１〜６６は、関節５１〜５６をそれぞれ駆動する。アクチュエータ６１〜６６の駆動力を増大させる減速機、又はベルト、ギア等の動力伝達機構がアクチュエータ６１〜６６と関節５１〜５６との間にそれぞれ配置されていてもよい。この場合、アクチュエータ６１〜６６の駆動力は、当該減速機又は動力伝達機構を介して、関節５１〜５６を駆動する。角度センサ７１，７２，７３，７４，７５，７６は、例えばロータリーエンコーダ又はレゾルバ等であり、関節５１，５２，５３，５４，５５，５６の動作角度をそれぞれ検出する。角度センサ７１〜７６がそれぞれアクチュエータ６１〜６６に配置されている場合には、角度センサ７１〜７６の検出値から、各関節の動力伝達機構の総合減速比を考慮して、関節５１〜５６の動作角度を算出する。
【００１９】
ハンド１３は、先端部１２に装着されており、ワークを把持する。例えばハンド１３は、複数の指部１４と、アクチュエータ１５とを有する。アクチュエータ１５は、例えば電動モータを動力源とし、複数の指部１４を互いに近付ける又は遠ざける。以下、複数の指部１４を互いに近付けることを「ハンド１３を閉じる」といい、複数の指部１４を互いに遠ざけることを「ハンド１３を開く」という。
【００２０】
なお、上述した多関節ロボット１０の構成はあくまで一例である。多関節ロボット１０は、基部１１に対する先端部１２の位置及び姿勢を調節し得る限りいかに構成されていてもよい。例えば多関節ロボット１０は、上記６軸の垂直多関節ロボットに冗長軸を追加した７軸のロボットであってもよい。また、多関節ロボット１０は所謂スカラー型のロボットであってもよい。
【００２１】
外力センサ２０は、多関節ロボット１０に作用する外力を検出する。例えば外力センサ２０は、多関節ロボット１０の少なくとも一つの関節に作用するトルクを検出するトルクセンサを含む。例えば外力センサ２０は、多関節ロボット１０の関節５１，５２，５３，５４，５５，５６に作用するトルクをそれぞれ検出するトルクセンサ２１，２２，２３，２４，２５，２６を含む。トルクセンサ２１，２２，２３，２４，２５，２６は、例えばひずみゲージ式等のトルクセンサである。
【００２２】
物体センサ３０は、多関節ロボット１０の周囲に設けられ、多関節ロボット１０の周囲に物体が存在するか否かを検出する。物体は、人の体を含む。物体センサ３０の具体例としては、赤外線センサ、レーザスキャナ、超音波センサ、カメラ、及びマットスイッチ等のエリアセンサが挙げられる。物体センサ３０は、多関節ロボット１０に設けられた接触センサであってもよい。また、物体センサ３０は、上述のエリアセンサと接触センサとの両方を含んでいてもよい。この場合、多関節ロボット１０への物体の接触検知によっても当該物体の存在が検知される。
【００２３】
コントローラ１００は、予め設定された動作パターンに従って多関節ロボット１０を動作させる。コントローラ１００は、多関節ロボット１０の制御に際し、多関節ロボット１０に作用する外力の検出値に基づいて多関節ロボット１０と物体との接触を検知することと、外力の検出値に基づいてワークの重量を検出することとを実行するように構成されている。
【００２４】
図２に示すように、例えばコントローラ１００は、機能上の構成（以下、「機能モジュール」という。）として、モデル保持部１１１と、仕分制御部１１２と、慣性力算出部１１３と、慣性力除外部１１４と、外力算出部１１５と、接触検知部１１６と、重量検出部１１７と、モデル補正部１１８と、退避制御部１１９とを有する。モデル保持部１１１は、多関節ロボット１０のモデル情報を記憶する。モデル情報の具体例としては、多関節ロボット１０の構造を複数のリンクと複数の関節とで表した場合の各リンクの長さ情報と、各リンク及び各関節の重心位置、重量情報等が挙げられる。
【００２５】
仕分制御部１１２は、ワークの重量に基づいて、ワークの仕分け作業を多関節ロボット１０に実行させる。例えば仕分制御部１１２は、ワークの重量と、複数の重量クラスごとに予め定められた複数の搬送先とに基づいてワークの搬送先を決定し、決定した搬送先にワークを搬送するように多関節ロボット１０を制御する。
【００２６】
慣性力算出部１１３は、多関節ロボット１０のモデルに基づいて、多関節ロボット１０の動作に伴う慣性力を算出する。例えば慣性力算出部１１３は、角度センサ７１，７２，７３，７４，７５，７６と、モデル保持部１１１が記憶するモデル情報とに基づく動力学演算により、関節５１，５２，５３，５４，５５，５６に作用する慣性トルク（慣性力に起因して生じるトルク）を算出する。
【００２７】
慣性力除外部１１４は、外力センサ２０による検出値から慣性力を除外して外力を算出する。外力とは、多関節ロボット１０の外から多関節ロボット１０に作用する力である。例えば慣性力除外部１１４は、トルクセンサ２１，２２，２３，２４，２５，２６が検出するトルクから、慣性力算出部１１３が算出した慣性トルクを減算して関節５１，５２，５３，５４，５５，５６に作用する外力トルク（外力に起因して生じるトルク）を算出する。
【００２８】
外力算出部１１５は、外力センサ２０の検出値に基づいて、ハンド１３（多関節ロボット１０のうちワークを把持する部分）に作用する外力を算出する。以下、ハンド１３に作用する外力を「ハンド外力」という。例えば外力算出部１１５は、関節５１，５２，５３，５４，５５，５６の外力トルクの発生要因がハンド外力のみであるという仮定に基づいて、関節５１，５２，５３，５４，５５，５６の外力トルクに対応するハンド外力を算出する。なお、ハンド１３の複数の指部１４がワークを把持する力は、ハンド１３における内力に相当するのでハンド外力に含まれない。
【００２９】
接触検知部１１６は、外力センサ２０の検出値に基づいて多関節ロボット１０と物体との接触を検知する。例えば接触検知部１１６は、関節５１，５２，５３，５４，５５，５６の少なくともいずれかの外力トルクが所定の接触閾値を超えている場合に、多関節ロボット１０と物体との接触を検知する。ここでの接触の検知とは、例えば、外力緩和のために多関節ロボット１０に退避動作を行わせることを必要とする接触（例えば多関節ロボット１０の動作中における物体との衝突）の検知を意味する。
【００３０】
重量検出部１１７は、外力センサ２０の検出値に基づいてワークの重量を検出する。例えば重量検出部１１７は、関節５１，５２，５３，５４，５５，５６の外力トルクに基づいてワークの重量を検出する。例えば重量検出部１１７は、外力算出部１１５が算出するハンド外力がワークの重力に相当するという仮定に基づいてワークの重量を検出する。
【００３１】
モデル補正部１１８は、ハンド１３の重量に重量検出部１１７による検出結果を加算して、モデル保持部１１１が記憶する多関節ロボット１０のモデルを補正する。退避制御部１１９は、物体との接触に起因する外力の増加を抑制するように多関節ロボット１０を制御する。例えば退避制御部１１９は、多関節ロボット１０の動作を停止させる。退避制御部１１９は、多関節ロボット１０のうち外力が作用する部分を外力の方向に移動させるように多関節ロボット１０を制御してもよい。例えば退避制御部１１９は、外力トルクに従って関節５１，５２，５３，５４，５５，５６を動作させるように多関節ロボット１０を制御してもよい。
【００３２】
コントローラ１００は、重量の検出結果に基づいて多関節ロボット１０の動作を変更するように構成されていてもよい。例えば仕分制御部１１２は、重量検出部１１７によるワークの重量の検出結果に基づいて、ワークの仕分け作業を多関節ロボット１０に実行させる。例えば仕分制御部１１２は、重量検出部１１７によるワークの重量の検出結果と、複数の重量クラスごとに予め定められた複数の搬送先とに基づいてワークの搬送先を変更する。
【００３３】
コントローラ１００は、重量の検出結果に基づいてワークの異常を検出するように構成されていてもよい。例えばコントローラ１００は、ワーク異常検知部１２１を更に有する。ワーク異常検知部１２１は、重量検出部１１７によるワークの重量の検出結果に基づいてワークの異常を検知する。例えばワーク異常検知部１２１は、ワークの設計上の重量と、重量検出部１１７によるワークの重量の検出結果との差が所定の検知閾値を超えている場合にワークの異常を検知する。
【００３４】
コントローラ１００は、ハンド１３がワークを把持しているか否かに基づいて、接触の検知と重量の検出とのいずれかを選択するように構成されていてもよい。コントローラ１００は、ハンド１３が把持しているワークが浮上しているか否かに更に基づいて接触の検知と重量の検出とのいずれかを選択するように構成されていてもよい。コントローラ１００は、物体センサ３０の検出結果に更に基づいて接触の検知と重量の検出とのいずれかを選択するように構成されていてもよい。コントローラ１００は、ハンド１３に作用する外力の方向に更に基づいて接触の検知と重量の検出とのいずれかを選択するように構成されていてもよい。
【００３５】
例えばコントローラ１００は、機能モジュールとして、ステータス保持部１２２と、把持検知部１２３と、浮上検知部１２４と、搬送完了検知部１２５と、解放検知部１２６と、ステータス更新部１２７と、処理選択部１２８とを更に有する。ステータス保持部１２２は、多関節ロボット１０の動作のステータス情報を記憶する。例えばステータス保持部１２２は、多関節ロボット１０の動作が、予め設定された複数のステータスのいずれであるかを記憶する。複数のステータスは、ハンド１３がワークを把持していない「解放」と、ハンド１３が把持するワークを多関節ロボット１０が浮上させている「浮上」と、ワークが搬送先に到達している「搬送完了」とを含む。
【００３６】
把持検知部１２３は、例えば仕分制御部１１２による動作指令に基づいて、ハンド１３がワークを把持したことを検知する。例えば把持検知部１２３は、ハンド１３を閉じる動作指令が仕分制御部１１２により出力されたことに基づいてハンド１３がワークを把持したことを検知する。浮上検知部１２４は、ハンド１３が把持しているワークの浮上を多関節ロボット１０の動作に基づいて検知する。ここでの浮上は、設置面より上方に位置するワークがハンド１３のみによって支持されている状態を意味する。例えば浮上検知部１２４は、角度センサ７１，７２，７３，７４，７５，７６による検出値とモデル保持部１１１が記憶するモデルとに基づく順運動学演算によりハンド１３の上昇及びワークの浮上を検知する。
【００３７】
なお、人協働型のシステムにおいては、設置面より上方において人と多関節ロボット１０との間でワークの受け渡しが行われる場合もあり得る。この場合、浮上検知部１２４は、設置面より上方においてハンド１３がワークを把持したことと、ハンド１３に作用する下向きの外力の増加とに基づいてワークの浮上を検知することが可能である。
【００３８】
搬送完了検知部１２５は、多関節ロボット１０によるワークの搬送完了を検知する。例えば搬送完了検知部１２５は、角度センサ７１，７２，７３，７４，７５，７６による検出値とモデル保持部１１１が記憶するモデルとに基づく順運動学演算によりワークが搬送先に到達したことを検知する。
【００３９】
解放検知部１２６は、例えば仕分制御部１１２による動作指令に基づいて、ハンド１３がワークを解放したことを検知する。例えば解放検知部１２６は、ハンド１３を開く動作指令が仕分制御部１１２により出力されたことに基づいてハンド１３がワークを解放したことを検知する。
【００４０】
ステータス更新部１２７は、把持検知部１２３、浮上検知部１２４、搬送完了検知部１２５及び解放検知部１２６による検知結果に基づいて、ステータス保持部１２２が記憶するステータスを更新する。例えばステータス更新部１２７は、ハンド１３によるワークの把持を把持検知部１２３が検知した場合に、ステータスを「解放」から「把持」に変更する。また、ステータス更新部１２７は、ワークの浮上を浮上検知部１２４が検知した場合に、ステータスを「把持」から「浮上」に変更する。また、ステータス更新部１２７は、搬送先へのワークの到達を搬送完了検知部１２５が検知した場合に、ステータスを「浮上」から「搬送完了」に変更する。また、ステータス更新部１２７は、ワークの解放を解放検知部１２６が検知した場合に、ステータスを「搬送完了」から「解放」に変更する。
【００４１】
処理選択部１２８は、把持検知部１２３による検知結果に基づいて、接触検知部１１６による接触の検知と重量検出部１１７による重量の検出とのいずれかを選択する。処理選択部１２８は、浮上検知部１２４による検知結果に更に基づいて接触検知部１１６による接触の検知と重量検出部１１７による重量の検出とのいずれかを選択してもよい。処理選択部１２８は、物体センサ３０の検出結果に更に基づいて接触検知部１１６による接触の検知と重量検出部１１７による重量の検出とのいずれかを選択してもよい。処理選択部１２８は、外力算出部１１５により算出されるハンド外力の方向に更に基づいて接触検知部１１６による接触の検知と重量検出部１１７による重量の検出とのいずれかを選択してもよい。
【００４２】
例えば処理選択部１２８は、ステータス保持部１２２が記憶するステータスと、物体センサ３０の検出結果とに基づいて、接触検知部１１６による接触の検知と重量検出部１１７による重量の検出とのいずれかを選択してもよい。なお、ここでの選択は、接触の検知と重量の検出とのいずれか一方を実行させて他方を実行させないことと、接触の検知と重量の検出との両方を実行させていずれか一方の結果を選択することとの両方を含む。
【００４３】
図３に示すように、コントローラ１００は、回路１９０を備える。回路１９０は、少なくとも一つのプロセッサ１９１と、メモリ１９２と、ストレージ１９３と、入出力ポート１９４と、ドライバ１９５とを含む。ストレージ１９３は、コンピュータによって読み取り可能な不揮発型の記憶媒体（例えばフラッシュメモリ）である。ストレージ１９３は、予め設定された動作パターンに従って多関節ロボット１０を動作させることと、多関節ロボット１０に作用する外力の検出値に基づいて多関節ロボット１０と物体との接触を検知することと、外力の検出値に基づいてワークの重量を検出することとをコントローラ１００に実行させるためのプログラムを記憶している。例えばストレージ１９３は、コントローラ１００により上述した各機能モジュールを構成するためのプログラムを記憶している。
【００４４】
メモリ１９２は、ストレージ１９３からロードしたプログラム及びプロセッサ１９１による演算結果等を一時的に記憶する。プロセッサ１９１は、メモリ１９２と協働して上記プログラムを実行することで、コントローラ１００の各機能モジュールを構成する。入出力ポート１９４は、プロセッサ１９１からの指令に応じてトルクセンサ２１〜２６、物体センサ３０及び角度センサ７１〜７６からの信号を取得する。ドライバ１９５は、プロセッサ１９１からの指令に応じてアクチュエータ６１〜６６に駆動電力を出力する。コントローラ１００は、必ずしもプログラムにより各構成が構成されるものに限られない。コントローラ１００の少なくとも一部の機能モジュール、例えば通信を制御する機能モジュールが、専用の論理回路又はこれを集積したＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により構成されていてもよい。
【００４５】
〔制御手順〕
続いて、ロボットの制御方法の一例として、コントローラ１００が実行する制御手順を説明する。この制御手順は、予め設定された動作パターンに従って多関節ロボット１０を動作させることと、多関節ロボット１０に作用する外力の検出値に基づいて多関節ロボット１０と物体との接触を検知することと、外力の検出値に基づいてワークの重量を検出することとを含む。
【００４６】
例えばコントローラ１００は、動作パターンに基づく目標位置に多関節ロボット１０を追従させることを所定の制御周期で繰り返す。例えば図４に示すように、コントローラ１００は、まずステップＳ０１，Ｓ０２を実行する。ステップＳ０１では、仕分制御部１１２が、予め設定された動作パターンに基づいて、最初の目標位置を設定する。目標位置は、例えば関節５１，５２，５３，５４，５５，５６の目標動作角度を含む。ステップＳ０２では、ステータス更新部１２７が、ステータス保持部１２２のステータスを「解放」に変更する。
【００４７】
次に、コントローラ１００はステップＳ０３，Ｓ０４を実行する。ステップＳ０３では、仕分制御部１１２が、目標位置と、多関節ロボット１０の位置との偏差を算出する。例えば、仕分制御部１１２は、関節５１，５２，５３，５４，５５，５６の目標動作角度と、角度センサ７１，７２，７３，７４，７５，７６による検出値との偏差を算出する。ステップＳ０４では、仕分制御部１１２が、多関節ロボット１０を目標位置に追従させる。例えば、仕分制御部１１２は、関節５１，５２，５３，５４，５５，５６の動作角度を目標動作角度に追従させる。より具体的に、例えば仕分制御部１１２は、ステップＳ０３で算出した偏差に比例演算、比例・積分演算、又は比例・積分・微分演算を施して得られる動作指令に基づいてアクチュエータ６１，６２，６３，６４，６５，６６を動作させる。
【００４８】
次に、コントローラ１００はステップＳ０５を実行する。ステップＳ０５では、慣性力算出部１１３が、多関節ロボット１０のモデルに基づいて、多関節ロボット１０の動作に伴う慣性力を算出し、慣性力除外部１１４が、外力センサ２０による検出値から慣性力を除外して外力を算出する。また、ステップＳ０５では、処理選択部１２８が、慣性力除外部１１４による算出結果（例えば上記外力トルク）に基づいて、多関節ロボット１０に作用する外力があるかを確認する。例えば処理選択部１２８は、慣性力除外部１１４により算出結果が所定の検出閾値を超えている場合に、多関節ロボット１０に作用する外力があると判定してもよい。
【００４９】
ステップＳ０５において多関節ロボット１０に作用する外力があると判定した場合、コントローラ１００はステップＳ０６を実行する。ステップＳ０６は、外力に応じて接触の検知又はワークの重量の検出等を実行することを含む。ステップＳ０６の具体的内容については後述する。
【００５０】
次に、コントローラ１００はステップＳ０７を実行する。ステップＳ０５において多関節ロボット１０に作用する外力がないと判定した場合、コントローラ１００はステップＳ０６を実行することなくステップＳ０７を実行する。ステップＳ０７では、仕分制御部１１２が、動作パターンで規定された全ての動作が完了したか否かを確認する。
【００５１】
ステップＳ０７において全ての動作が完了していないと判定した場合、コントローラはステップＳ０８，Ｓ０９，Ｓ１１を実行する。ステップＳ０８では、仕分制御部１１２が動作パターンに基づいて次の目標位置を設定する。ステップＳ０９では、ステータス更新部１２７は、把持検知部１２３、浮上検知部１２４、搬送完了検知部１２５及び解放検知部１２６による検知結果に基づいて、ステータス保持部１２２が記憶するステータスを更新する。ステップＳ０９の具体的内容については後述する。ステップＳ１１では、仕分制御部１１２が制御周期の経過を待機する。
【００５２】
その後、コントローラ１００は処理をステップＳ０３に戻す。以後、動作パターンで規定された全ての動作が完了するまでは、必要に応じ外力対応処理を実行しながら、多関節ロボット１０の制御が制御周期で繰り返される。ステップＳ０７において全ての動作が完了していると判定した場合、コントローラ１００は多関節ロボット１０の制御を完了する。
【００５３】
図５及び図６は、ステップＳ０６の外力対応処理手順を例示するフローチャートである。図５に示すように、コントローラ１００は、まずステップＳ２１を実行する。ステップＳ２１では、処理選択部１２８が、ステータス保持部１２２が記憶するステータスが「浮上」であるか否かを確認する。
【００５４】
ステップＳ２１においてステータスが「浮上」であると判定した場合、コントローラ１００はステップＳ２２，Ｓ２３を実行する。ステップＳ２２では、外力算出部１１５が外力センサ２０の検出値に基づいてハンド外力を算出する。ステップＳ２３では、処理選択部１２８が、物体センサ３０による検出結果に基づいて、多関節ロボット１０の周辺に物体が存在しないかを確認する。
【００５５】
ステップＳ２３において多関節ロボット１０の周辺に物体が存在しないと判定した場合、コントローラ１００はステップＳ２４，Ｓ２５，Ｓ２６，Ｓ２７を実行する。ステップＳ２４では、重量検出部１１７が、外力算出部１１５が算出したハンド外力をワークの重量として検出する。ステップＳ２５では、モデル補正部１１８が、ハンド１３の重量に重量検出部１１７による検出結果を加算して、モデル保持部１１１が記憶する多関節ロボット１０のモデルを補正する。ステップＳ２６では、ワーク異常検知部１２１が、重量検出部１１７によるワークの重量の検出結果に基づいてワークの異常の有無を確認する。ワークの異常を検知した場合、ワーク異常検知部１２１はワークの異常をモニタ等に表示する。ステップＳ２７では、仕分制御部１１２が、重量検出部１１７による検出結果と、複数の重量クラスごとに予め定められた複数の搬送先とに基づいてワークの搬送先を決定する。これにより、ワークの仕分けが実行されることとなる。
【００５６】
ステップＳ２３において多関節ロボット１０の周辺に物体が存在すると判定した場合、コントローラはステップＳ２８を実行する。ステップＳ２８では、処理選択部１２８が、ハンド外力が鉛直下向きであるかを確認する。例えば処理選択部１２８は、ハンド外力が下向きであり、ハンド外力の水平方向成分が実質的にゼロであるかを確認する。実質的にゼロであるとは、誤差として無視可能な値であることを意味する。以下においても同様である。
【００５７】
ステップＳ２８においてハンド外力が鉛直下向きであると判定した場合、コントローラ１００は上記ステップＳ２４，Ｓ２５，Ｓ２６，Ｓ２７を実行する。ステップＳ２８においてハンド外力が鉛直下向きでないと判定した場合、コントローラ１００はステップＳ３１，Ｓ３２を実行する。ステップＳ３１では、接触検知部１１６が、多関節ロボット１０と物体との接触を検知する。ステップＳ３２では、退避制御部１１９が、物体との接触に起因する外力の増加を抑制するように多関節ロボット１０を制御する。
【００５８】
ステップＳ２１においてステータスが「浮上」でないと判定した場合、図６に示すようにコントローラ１００はステップＳ４１を実行する。ステップＳ４１では、ステータス保持部１２２が記憶するステータスが「搬送完了」であるか否かを処理選択部１２８が確認する。
【００５９】
ステップＳ４１においてステータスが「搬送完了」であると判定した場合、コントローラ１００はステップＳ４２，Ｓ４３を実行する。ステップＳ４２では、外力算出部１１５が外力センサ２０の検出値に基づいてハンド外力を算出する。ステップＳ４３では、処理選択部１２８が、物体センサ３０による検出結果に基づいて、多関節ロボット１０の周辺に物体が存在しないかを確認する。
【００６０】
ステップＳ４３において多関節ロボット１０の周辺に物体が存在しないと判定した場合、コントローラ１００はステップＳ４４を実行する。ステップＳ４４では、仕分制御部１１２が搬送先へのワークの載置を検知する。
【００６１】
ステップＳ４３において多関節ロボット１０の周辺に物体が存在すると判定した場合、コントローラ１００はステップＳ４５を実行する。ステップＳ４５では、処理選択部１２８が、ハンド外力が鉛直上向きであるかを確認する。例えば処理選択部１２８は、ハンド外力が上向きであり、ハンド外力の水平方向成分が実質的にゼロであるかを確認する。ステップＳ４５においてハンド外力が鉛直上向きであると判定した場合、コントローラ１００は上記ステップＳ４４を実行する。
【００６２】
ステップＳ４１においてステータスが「搬送完了」でないと判定した場合、及びステップＳ４５においてハンド外力が鉛直上向きでないと判定した場合、コントローラ１００はステップＳ４６，Ｓ４７を実行する。ステップＳ４６では、接触検知部１１６が多関節ロボット１０と物体との接触を検知する。ステップＳ４７では、退避制御部１１９が、物体との接触に起因する外力の増加を抑制するように多関節ロボット１０を制御する。以上で外力対応処理手順が完了する。
【００６３】
図７は、ステップＳ０９のステータス更新手順を例示するフローチャートである。図７に示すように、コントローラ１００は、まずステップＳ５１を実行する。ステップＳ５１では、ステータス保持部１２２が記憶するステータスが「解放」であるか否かをステータス更新部１２７が確認する。
【００６４】
ステップＳ５１においてステータスが「解放」であると判定した場合、コントローラ１００はステップＳ５２を実行する。ステップＳ５２では、ハンド１３がワークを把持したか否かを把持検知部１２３が検知する。ステップＳ５２においてハンド１３がワークを把持したと判定した場合、コントローラ１００はステップＳ５３を実行する。ステップＳ５３では、ステータス保持部１２２が記憶するステータスをステータス更新部１２７が「解放」から「把持」に変更する。ステップＳ５２においてハンド１３がワークを把持していないと判定した場合、コントローラ１００はステップＳ５３を実行しない。
【００６５】
ステップＳ５１においてステータスが「解放」でないと判定した場合、コントローラ１００はステップＳ５４を実行する。ステップＳ５４では、ステータス保持部１２２が記憶するステータスが「把持」であるか否かをステータス更新部１２７が確認する。
【００６６】
ステップＳ５４においてステータスが「把持」であると判定した場合、コントローラ１００はステップＳ５５を実行する。ステップＳ５５では、ハンド１３が把持しているワークが浮上しているか否かを浮上検知部１２４が検知する。ステップＳ５５においてワークが浮上していると判定した場合、コントローラ１００はステップＳ５６を実行する。ステップＳ５６では、ステータス保持部１２２が記憶するステータスをステータス更新部１２７が「把持」から「浮上」に変更する。ステップＳ５５においてワークが浮上していないと判定した場合、コントローラ１００はステップＳ５６を実行しない。
【００６７】
ステップＳ５４においてステータスが「把持」でないと判定した場合、コントローラ１００はステップＳ５７を実行する。ステップＳ５７では、ステータス保持部１２２が記憶するステータスが「浮上」であるか否かをステータス更新部１２７が確認する。
【００６８】
ステップＳ５７においてステータスが「浮上」であると判定した場合、コントローラ１００はステップＳ５８を実行する。ステップＳ５８では、ワークが搬送先に到達したか否かを搬送完了検知部１２５が検知する。ステップＳ５８においてワークが搬送先に到達したと判定した場合、コントローラ１００はステップＳ５９を実行する。ステップＳ５９では、ステータス保持部１２２が記憶するステータスをステータス更新部１２７が「浮上」から「搬送完了」に変更する。ステップＳ５８においてワークが搬送先に到達していないと判定した場合、コントローラ１００はステップＳ５９を実行しない。
【００６９】
ステップＳ５７においてステータスが「浮上」でないと判定した場合、コントローラ１００はステップＳ６１を実行する。ステップＳ６１では、ハンド１３がワークを解放したか否かを解放検知部１２６が検知する。ステップＳ６１においてハンド１３がワークを解放したと判定した場合、コントローラ１００はステップＳ６２，Ｓ６３を実行する。ステップＳ６２では、ステータス保持部１２２が記憶するステータスをステータス更新部１２７が「搬送完了」から「解放」に変更する。ステップＳ６３では、モデル保持部１１１が記憶する多関節ロボット１０のモデルをモデル補正部１１８が補正前に戻す。すなわちモデル補正部１１８は、ハンド１３の重量からワークの重量を減算する。ステップＳ６１においてハンド１３がワークを解放していないと判定した場合、コントローラ１００はステップＳ６２，Ｓ６３を実行しない。以上でステータス更新手順が完了する。
【００７０】
〔本実施形態の効果〕
以上に説明したように、ロボットシステム１は、ワークを把持して搬送する多関節ロボット１０と、多関節ロボット１０に作用する外力を検出する外力センサ２０と、外力センサ２０の検出値に基づいて多関節ロボット１０と物体との接触を検知する接触検知部１１６と、外力センサ２０の検出値に基づいてワークの重量を検出する重量検出部１１７と、を備える。
【００７１】
このロボットシステム１によれば、外力情報を、多関節ロボット１０と周辺物体との接触の検知と、ワークの重量の検出とに活用することができる。従って、多関節ロボット１０に作用する外力の情報をより有効に活用することができる。
【００７２】
ロボットシステム１は、多関節ロボット１０がワークを把持していることを検知する把持検知部１２３と、把持検知部１２３による検知結果に基づいて、接触検知部１１６による接触の検知と重量検出部１１７による重量の検出とのいずれかを選択する処理選択部１２８と、を更に備えていてもよい。
【００７３】
多関節ロボット１０がワークを把持していない場合、多関節ロボット１０に作用する外力がワークの重量に起因している可能性は低い。これに比べ、多関節ロボット１０がワークを把持している場合、多関節ロボット１０に作用する外力がワークの重量に起因している可能性は高い。すなわち、多関節ロボット１０がワークを把持しているか否かは、多関節ロボット１０に作用する外力がワークの重量に起因する確率に影響する。このため、把持検知部１２３による検出結果に基づくことで、接触検知部１１６による接触の検知と、重量検出部１１７による重量の検出とを高い信頼性で選択することができる。従って、多関節ロボット１０に作用する外力の情報を更に有効に活用することができる。
【００７４】
ロボットシステム１は、多関節ロボット１０の動作に基づいて多関節ロボット１０が把持しているワークの浮上を検知する浮上検知部１２４を更に備え、処理選択部１２８は、浮上検知部１２４による検知結果に更に基づいて接触検知部１１６による接触の検知と重量検出部１１７による重量の検出とのいずれかを選択してもよい。
【００７５】
多関節ロボット１０が把持しているワークを浮上させている場合、多関節ロボット１０に作用する外力がワークの重量に起因している可能性はより高い。すなわち、多関節ロボット１０がワークを浮上させているか否かは、多関節ロボット１０に作用する外力がワークの重量に起因する確率に更に影響する。このため、浮上検知部１２４による検出結果に更に基づくことで、接触検知部１１６による接触の検知と、重量検出部１１７による重量の検出とをより高い信頼性で選択することができる。従って、多関節ロボット１０に作用する外力の情報を更に有効に活用することができる。
【００７６】
ロボットシステム１は、多関節ロボット１０の周囲に物体が存在するか否かを検出する物体センサ３０を更に備え、処理選択部１２８は、物体センサ３０の検出結果に更に基づいて接触検知部１１６による接触の検知と重量検出部１１７による重量の検出とのいずれかを選択してもよい。
【００７７】
多関節ロボット１０の周囲に物体が存在しない場合、多関節ロボット１０に作用する外力が物体との接触に起因している可能性は低い。これに比べ、多関節ロボット１０の周囲に物体が存在する場合、多関節ロボット１０に作用する外力が物体との接触に起因する可能性は高い。すなわち、多関節ロボット１０の周囲に物体が存在するか否かは、多関節ロボット１０に作用する外力が物体との接触に起因する確率に影響する。このため、物体センサ３０による検出結果に更に基づくことで、接触検知部１１６による接触の検知と、重量検出部１１７による重量の検出とをより高い信頼性で選択することができる。従って、多関節ロボット１０に作用する外力の情報を更に有効に活用することができる。
【００７８】
ロボットシステム１は、外力センサ２０の検出値に基づいて、多関節ロボット１０のうちワークを把持する部分に作用する外力を算出する外力算出部１１５を更に備え、処理選択部１２８は、外力算出部１１５により算出される外力の方向に更に基づいて接触検知部１１６による接触の検知と重量検出部１１７による重量の検出とのいずれかを選択してもよい。
【００７９】
多関節ロボット１０のうちワークを把持する部分（以下、「把持部」という。）に作用する外力において、鉛直下方に向かう成分の割合が高くなるにつれて、多関節ロボット１０に作用する外力がワークの重量に起因している可能性が高くなる。すなわち、把持部に作用する外力の向きは、多関節ロボット１０に作用する外力がワークの重量に起因する確率に影響する。このため、外力算出部１１５により算出される力の方向に更に基づくことで、接触検知部１１６による接触の検知と、重量検出部１１７による重量の検出とをより高い信頼性で選択することができる。従って、多関節ロボット１０に作用する外力の情報を更に有効に活用することができる。
【００８０】
外力センサ２０は、多関節ロボット１０の少なくとも一つの関節５１〜５６に作用するトルクを検出するトルクセンサ２１〜２６を含んでいてもよい。
【００８１】
ロボットシステム１は、多関節ロボット１０のモデルに基づいて、多関節ロボット１０の動作に伴う慣性力を算出する慣性力算出部１１３と、多関節ロボット１０のうちワークを把持する部分の重量に重量検出部１１７による検出結果を加算してモデルを補正するモデル補正部１１８と、を更に備え、接触検知部１１６は、モデル補正部１１８により補正されたモデルに基づき慣性力算出部１１３が算出した慣性力と、外力センサ２０の検出値とに基づいて多関節ロボット１０と物体との接触を検知してもよい。この場合、把持部の重量に重量検出部１１７による検出結果を加算してモデルを補正することで、慣性力算出部１１３が算出する慣性力の精度が高まる。これにより、慣性力に起因する成分を高い精度で外力から取り除くことができる。このため、外力に基づく接触検知の精度を更に向上させることができる。従って、多関節ロボット１０に作用する外力の情報を更に有効に活用することができる。
【００８２】
ロボットシステム１は、重量検出部１１７による重量の検出結果に基づいて、ワークの仕分け作業を多関節ロボット１０に実行させる仕分制御部１１２を更に備えていてもよい。この場合、重量検出部１１７による検出結果を更に有効に活用することができる。
【００８３】
ロボットシステム１は、重量検出部１１７による重量の検出結果に基づいてワークの異常を検知するワーク異常検知部１２１を更に備えていてもよい。この場合、重量検出部１１７による検出結果を更に有効に活用することができる。
【００８４】
以上、実施形態について説明したが、本発明は必ずしも上述した形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変形が可能である。例えば、トルクセンサ２１，２２，２３，２４，２５，２６のいずれかを省略してもよい。例えば外力センサ２０は、トルクセンサ２１，２２，２３を含み、トルクセンサ２４，２５，２６を含んでいなくてもよい。また、外力センサ２０は、トルクセンサ２１，２２，２３，２５を含み、トルクセンサ２４，２６を含んでいなくてもよい。
【符号の説明】
【００８５】
１…ロボットシステム、１０…多関節ロボット、２０…外力センサ、２１，２２，２３，２４，２５，２６…トルクセンサ、３０…物体センサ、５１，５２，５３，５４，５５，５６…関節、１１２…仕分制御部、１１３…慣性力算出部、１１５…外力算出部、１１６…接触検知部、１１７…重量検出部、１１８…モデル補正部、１２１…ワーク異常検知部、１２３…把持検知部、１２４…浮上検知部、１２８…処理選択部。
【図１】
2020097069.tif 000003
【図２】
2020097069.tif 000004
【図３】
2020097069.tif 000005
【図４】
2020097069.tif 000006
【図５】
2020097069.tif 000007
【図６】
2020097069.tif 000008
【図７】
2020097069.tif 000009