IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特許7392590ロボット制御システム、制御プログラムおよび制御方法
<>
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図1
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図2
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図3
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図4
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図5
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図6
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図7
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図8
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図9
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図10
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図11
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図12
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図13
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図14
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図15
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図16
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図17
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図18
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図19
  • 特許-ロボット制御システム、制御プログラムおよび制御方法 図20
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-28
(45)【発行日】2023-12-06
(54)【発明の名称】ロボット制御システム、制御プログラムおよび制御方法
(51)【国際特許分類】
   B25J 19/04 20060101AFI20231129BHJP
   B25J 13/08 20060101ALI20231129BHJP
【FI】
B25J19/04
B25J13/08 A
【請求項の数】 10
(21)【出願番号】P 2020109514
(22)【出願日】2020-06-25
(65)【公開番号】P2022006928
(43)【公開日】2022-01-13
【審査請求日】2023-03-02
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】大倉 嵩史
(72)【発明者】
【氏名】仲野 征彦
(72)【発明者】
【氏名】安田 圭
【審査官】松浦 陽
(56)【参考文献】
【文献】国際公開第2020/017426(WO,A1)
【文献】米国特許第6430472(US,B1)
【文献】特開2011-110628(JP,A)
【文献】特開2010-162630(JP,A)
【文献】特表2015-506850(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
(57)【特許請求の範囲】
【請求項1】
ロボット制御システムであって、
カメラおよび第1ワークを把持するためのハンドが装着されたロボットと、
前記ロボットの先端と前記カメラとの間に配置された変位発生機構と、
前記第1ワークを第2ワークへアプローチさせるように、前記ロボットに制御指令を与える第1制御部と、
前記ロボットが前記第1ワークを前記第2ワークにアプローチさせるときに前記カメラに生じる振動の大きさを算出する振動算出部と、
前記振動算出部により算出された振動を補償するように、前記変位発生機構に制御指令を与える第2制御部とを備える、ロボット制御システム。
【請求項2】
前記振動算出部は、前記ロボットの可動部の状態値に基づいて、前記カメラに生じる振動の大きさを算出する、請求項1に記載のロボット制御システム。
【請求項3】
前記振動算出部は、前記カメラにより撮像された画像に基づいて、前記カメラに生じる振動の大きさを算出する、請求項1に記載のロボット制御システム。
【請求項4】
前記振動算出部は、前記カメラにより撮像された画像に基づいて、前記第1ワークの移動速度を算出するとともに、算出された前記第1ワークの移動速度から前記第1ワークの本来の位置を算出する、請求項3に記載のロボット制御システム。
【請求項5】
前記振動算出部は、前記第1ワークの現在位置と、前記第1ワークの本来の位置とのずれである誤差ベクトルを算出する、請求項4に記載のロボット制御システム。
【請求項6】
前記ロボットは、垂直多関節ロボットであり、
前記変位発生機構は、直交機構を含む、請求項1~5のいずれか1項に記載のロボット制御システム。
【請求項7】
前記第1制御部、前記振動算出部および前記第2制御部は、予め定められた周期で同期して処理を実行する、請求項1~6のいずれか1項に記載のロボット制御システム。
【請求項8】
前記第1制御部は、前記変位発生機構に与えられた制御指令の影響を除外して、前記ロボットの現在位置を取得する、請求項1~7のいずれか1項に記載のロボット制御システム。
【請求項9】
カメラおよび第1ワークを把持するためのハンドが装着されたロボットと、前記ロボットの先端と前記カメラとの間に配置された変位発生機構とを備えるロボット制御システムのコンピュータで実行される制御プログラムであって、前記コンピュータに
前記第1ワークを第2ワークへアプローチさせるように、前記ロボットに制御指令を与えるステップと、
前記ロボットが前記第1ワークを前記第2ワークにアプローチさせるときに前記カメラに生じる振動の大きさを算出するステップと、
前記算出された振動を補償するように、前記変位発生機構に制御指令を与えるステップとを実行させる、制御プログラム。
【請求項10】
カメラおよび第1ワークを把持するためのハンドが装着されたロボットと、前記ロボットの先端と前記カメラとの間に配置された変位発生機構とを備えるロボット制御システムで実行される制御方法であって、
前記第1ワークを第2ワークへアプローチさせるように、前記ロボットに制御指令を与えるステップと、
前記ロボットが前記第1ワークを前記第2ワークにアプローチさせるときに前記カメラに生じる振動の大きさを算出するステップと、
前記算出された振動を補償するように、前記変位発生機構に制御指令を与えるステップとを備える、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、ロボット制御システム、制御プログラムおよび制御方法に関する。
【背景技術】
【0002】
FA(Factory Automation)分野においては、ロボットが様々なアプリケーションに用いられている。アプリケーションの一例として、視覚センサと組み合わせて、部品の組み立てや実装などに用いる例が知られている。
【0003】
例えば、特開2001-036295号公報(特許文献1)は、実装部品と実装基板との実像を撮像ユニットにて重ね合わせた上で、この撮像画像を視認しつつ両者の相対位置を調整する部品実装装置などを開示する。
【0004】
特開平10-224095号公報(特許文献2)は、高速動作させた電子部品実装装置で、振動の影響が大きくなっても、精度良くプリント基板に部品を実装することが可能な電子部品実装方法などを開示する。
【0005】
特開2002-076695号公報(特許文献3)は、複数部品間の相対位置を高精度で確保することができる電子部品実装方法などを開示する。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2001-036295号公報
【文献】特開平10-224095号公報
【文献】特開2002-076695号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1~3に開示される技術は、組み立てまたは実装において生じる部品の位置誤差を予め計測して修正する方法を採用する。このような手法によれば、静的に発生する位置誤差のみを修正できるにすぎず、様々な要因で発生し得る動的な位置誤差には対応できない。
【0008】
本技術は、より精度の高い位置決め制御が可能なロボット制御システムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本技術のある実施の形態に係るロボット制御システムは、カメラおよび第1ワークを把持するためのハンドが装着されたロボットと、ロボットの先端とカメラとの間に配置された変位発生機構と、第1ワークを第2ワークへアプローチさせるように、ロボットに制御指令を与える第1制御部と、ロボットが第1ワークを第2ワークにアプローチさせるときにカメラに生じる振動の大きさを算出する振動算出部と、振動算出部により算出された振動を補償するように、変位発生機構に制御指令を与える第2制御部とを含む。
【0010】
この構成によれば、第1ワークを移動させるロボットを高速で移動させた場合などに、ロボット先端に生じるカメラの振動の大きさを算出するとともに、算出されたカメラの振動の大きさに基づいて、それを補償するように、ロボットの先端とカメラとの間に配置された変位発生機構に制御指令を与える。このように、ロボットと変位発生機構とを組み合わせることで、より精度の高い位置決め制御を実現できる。
【0011】
振動算出部は、ロボットの可動部の状態値に基づいて、カメラに生じる振動の大きさを算出するようにしてもよい。この構成によれば、ロボットの可動部の状態値に基づいて、少ない計算量で振動の大きさを算出できる。
【0012】
振動算出部は、カメラにより撮像された画像に基づいて、カメラに生じる振動の大きさを算出するようにしてもよい。この構成によれば、カメラにより撮像された画像を利用することで、動的に発生する振動の大きさを算出できる。
【0013】
振動算出部は、カメラにより撮像された画像に基づいて、第1ワークの移動速度を算出するとともに、算出された第1ワークの移動速度から第1ワークの本来の位置を算出するようにしてもよい。この構成によれば、第1ワークの移動速度を算出することで、第1ワークの本来の位置をより適切に算出できる。
【0014】
振動算出部は、第1ワークの現在位置と、第1ワークの本来の位置とのずれである誤差ベクトルを算出するようにしてもよい。この構成によれば、誤差ベクトルを用いることで、振動の大きさおよび方向を推定できる。
【0015】
ロボットは、垂直多関節ロボットであってもよい。変位発生機構は、直交機構を含んでいてもよい。この構成によれば、第1ワークを様々な方向からアプローチさせることができるとともに、第2ロボットに対する制御を簡素化できる。
【0016】
第1制御部、振動算出部および第2制御部は、予め定められた周期で同期して処理を実行するようにしてもよい。この構成によれば、この構成によれば、ロボットおよび変位発生機構に対する制御指令の算出を同期して行えるので、ロボットと変位発生機構とを連係させた場合の制御精度を高めることができる。
【0017】
第1制御部は、変位発生機構に与えられた制御指令の影響を除外して、ロボットの現在位置を取得するようにしてもよい。この構成によれば、変位発生機構が発生する変位によってカメラにより撮像される画像がオフセットされるので、このオフセットの影響を排除できる。
【0018】
本技術の別の実施の形態によれば、カメラおよび第1ワークを把持するためのハンドが装着されたロボットと、ロボットの先端とカメラとの間に配置された変位発生機構とを備えるロボット制御システムのコンピュータで実行される制御プログラムが提供される。制御プログラムは、コンピュータに、第1ワークを第2ワークへアプローチさせるように、ロボットに制御指令を与えるステップと、ロボットが第1ワークを第2ワークにアプローチさせるときにカメラに生じる振動の大きさを算出するステップと、算出された振動を補償するように、変位発生機構に制御指令を与えるステップとを実行させる。
【0019】
本技術のさらに別の実施の形態によれば、カメラおよび第1ワークを把持するためのハンドが装着されたロボットと、ロボットの先端とカメラとの間に配置された変位発生機構とを備えるロボット制御システムで実行される制御方法が提供される。制御方法は、第1ワークを第2ワークへアプローチさせるように、ロボットに制御指令を与えるステップと、ロボットが第1ワークを第2ワークにアプローチさせるときにカメラに生じる振動の大きさを算出するステップと、算出された振動を補償するように、変位発生機構に制御指令を与えるステップと、第1ワークを第2ワークへアプローチさせるように、ロボットに制御指令を与えるステップとを含む。
【発明の効果】
【0020】
本技術によれば、より精度の高い位置決め制御が可能なロボット制御システムを実現できる。
【図面の簡単な説明】
【0021】
図1】本実施の形態に係るロボット制御システムの概略を示す模式図である。
図2】本実施の形態に係るロボット制御システムの全体構成を概略する模式図である。
図3】ロボットを用いた組み立てアプリケーションにおいて生じる課題を説明するための図である。
図4】ロボットを用いた組み立てアプリケーションにおいて生じる別の課題を説明するための図である。
図5】本実施の形態に係るロボット制御システムのシステム構成を概略する模式図である。
図6】本実施の形態に係るロボット制御システムを構成する制御装置のハードウェア構成例を示す模式図である。
図7】本実施の形態に係るロボット制御システムを構成するロボットコントローラのハードウェア構成例を示す模式図である。
図8】本実施の形態に係るロボット制御システムを構成するサーボコントローラのハードウェア構成例を示す模式図である。
図9】本実施の形態に係るロボット制御システムを構成する画像処理装置のハードウェア構成例を示す模式図である。
図10】本実施の形態に係るロボット制御システムを用いた組み立て処理を説明するための図である。
図11】本実施の形態に係るロボット制御システムを用いた組み立て処理を説明するための図である。
図12】本実施の形態に係るロボット制御システムを用いた組み立て処理を説明するための図である。
図13】本実施の形態に係るロボット制御システムにおいて定義された座標系の一例を示す図である。
図14】本実施の形態に係るロボット制御システムにおいてやり取りされる位置情報の一例を説明するための図である。
図15】本実施の形態に係るロボット制御システムに採用する変位発生機構の構成例を示す模式図である。
図16】本実施の形態に係るロボット制御システムにおけるカメラに発生する振動を低減する処理を説明するための図である。
図17】本実施の形態に係るロボット制御システムにおける組み立て処理の処理手順を示すフローチャートである。
図18】本実施の形態に係るロボット制御システムにおけるロボット先端に生じている振動の大きさを算出する処理を説明するための図である。
図19】本実施の形態に係るロボット制御システムにおける組み立て処理の別の処理手順を示すフローチャートである。
図20】本実施の形態に係るロボット制御システムの構成例のバリエーションの一部を示す図である。
【発明を実施するための形態】
【0022】
本技術の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0023】
<A.適用例>
まず、本技術が適用される場面の一例について説明する。図1は、本実施の形態に係るロボット制御システム1の概略を示す模式図である。
【0024】
図1を参照して、本実施の形態に係るロボット制御システム1は、カメラ400および第1ワーク50を把持するためのハンド210が装着されたロボット200を含む。ロボット200は、ハンド210により把持された第1ワーク50を第2ワーク60へアプローチさせる。第2ワーク60は、ワークテーブル80上に配置されていてもよい。
【0025】
ロボット制御システム1は、ロボット200の先端とカメラ400との間に配置された変位発生機構300を含む。変位発生機構300は、ロボット200の先端とカメラ400との間に変位を発生させる。
【0026】
ロボット制御システム1は、ロボット制御システム1を制御するための制御モジュール30を有している。なお、制御モジュール30については、どのような実装形態で実現してもよい。
【0027】
より具体的には、制御モジュール30は、第1制御モジュール32と、振動算出モジュール34と、第2制御モジュール36とを含む。
【0028】
第1制御モジュール32は、ロボット200の制御を担当する制御ロジックであり、第1ワーク50を第2ワーク60へアプローチさせるように、ロボット200に制御指令を与える。また、第1制御モジュール32は、ロボット200から状態値(例えば、各関節の位置を示すエンコーダ情報など)を取得する。
【0029】
振動算出モジュール34は、ロボット200が第1ワーク50を第2ワーク60にアプローチさせるときにカメラ400に生じる振動の大きさを算出する。
【0030】
第2制御モジュール36は、変位発生機構300の制御を担当する制御ロジックであり、変位発生機構300に制御指令を与えるとともに、変位発生機構300から状態値(例えば、各軸の位置を示すエンコーダ情報など)を取得する。特に、第2制御モジュール36は、振動算出モジュール34により算出された振動の大きさを補償するように、変位発生機構300に制御指令を与える。
【0031】
振動の大きさを算出する方法としては、例えば、ロボット200の可動部の状態値に基づく方法を採用してもよいし、カメラ400により撮像された画像に基づく方法を採用してもよい。
【0032】
このようなロボット200が第1ワーク50を搬送する過程において、ロボット200の先端に配置されているカメラ400に生じる振動の大きさを逐次算出するとともに、算出された振動の大きさに基づいて、変位発生機構300を制御することで、カメラ400により撮像される画像内のぶれを補償し、ロボット200の制御精度をより高めることができる。
【0033】
<B.全体構成例>
本実施の形態に係るロボット制御システム1の全体構成例について説明する。
【0034】
図2は、本実施の形態に係るロボット制御システム1の全体構成を概略する模式図である。図2には、一例として、2つの部品を組み立てるアプリケーションを示す。
【0035】
より具体的には、ロボット制御システム1は、第1ワーク50を把持して移動させるロボット200を含む。ロボット200の先端には、第1ワーク50を把持するためのハンド210およびカメラ400が装着されている。カメラ400により撮像された画像から得られる情報に基づいて、ロボット200は、第1ワーク50をワークテーブル80上に配置された第2ワーク60に組み付ける。
【0036】
第1ワーク50は、一対のピン54を有する電子部品52を含む。第2ワーク60は、基板62と、基板62上に配置された電子部品64とを含む。電子部品64には、一対のピン54に挿入される一対のホール66が設けられている。基板62上には、位置決め用のマーカ68が設けられている。位置決め用のマーカ68はカメラ400での撮像により光学的に認識される。
【0037】
ロボット200は、典型的には、垂直多関節ロボットが用いられる。垂直多関節ロボットが用いられた場合には、ロボット200は、複数のリンク202と、リンク202同士を連結する関節204とを含む。関節204は、軸と称されることもあり、サーボモータなどの駆動源によって駆動される。ロボット200の関節204は、図示しない駆動源と機械的に結合されるとともに、駆動源あるいは関節204に取り付けられたセンサ(典型的には、エンコーダ)によって、その相対位置または絶対位置が検出可能になっている。
【0038】
ロボット200としては、垂直多関節ロボットに限らず、水平多関節(スカラ)ロボット、パラレルリンクロボットなどの任意のロボットを用いることができる。
【0039】
ハンド210は、ロボット200の先端に直接接続される一方で、カメラ400は、変位発生機構300を介してロボット200の先端に接続される。変位発生機構300は、カメラ400に生じる振動を低減するための変位を発生させる。カメラ400に生じる振動を低減するものであれば、どのような機構を採用してもよい。図2には、変位発生機構300の一例として、互いに直交する複数の軸方向(例えば、X軸,Y軸,Z軸の3軸)にそれぞれ変位を発生させる直交機構を含む。
【0040】
より具体的には、変位発生機構300は、互いに直交する方向に位置を変更可能な可動軸312,314,316を含む。可動軸312,314,316の各々は、対応する軸方向に移動することで、機械的に接続されているハンド210を任意の3軸方向(X軸,Y軸,Z軸)に移動させることができる。
【0041】
変位発生機構300の可動軸312,314,316は、サーボモータ330(図5など参照)と機械的に結合されるとともに、サーボモータ330あるいは可動軸312,314,316に取り付けられたセンサ(典型的には、エンコーダ)によって、その相対位置または絶対位置が検出可能になっている。
【0042】
<C.課題および解決手段>
次に、ロボットを用いた組み立てアプリケーションにおいて生じるいくつかの課題について説明する。
【0043】
図3は、ロボットを用いた組み立てアプリケーションにおいて生じる課題を説明するための図である。図3を参照して、ロボット200を用いた組み立てアプリケーションにおいては、カメラ400を用いた画像認識により、対象の部品の現在位置を特定し、制御の精度を高める構成が採用されている。特に、ロボット200の先端(手先)にカメラ400を配置することで、ロボット200の制御精度をより高めることができる。
【0044】
例えば、電子部品52を含む第1ワーク50から延びる一対のピン54を第2ワーク60に設けられた一対のホール66に挿入するためには、水平方向あるいは斜め方向かのアプローチが必要になる。このように、部品の組み立てには、垂直方向だけではなく、水平方向および斜め方向を含む様々な方向にロボット200の先端を移動させる必要がある。このとき、ロボット200の先端と機械的に接続されたカメラ400についても、様々な方向に移動することになる。さらに、ロボット200を高速で移動させると、ロボット200自体にも振動が発生するとともに、カメラ400にも振動が発生し得る。そのため、カメラ400の視野範囲が安定せず、認識結果に誤差が生じ得るため、位置決め精度も低下する。すなわち、カメラ400に生じる振動の影響を受けて、部品の組み立てに係るタクトタイムを大幅に短縮することが制約される。
【0045】
図4は、ロボットを用いた組み立てアプリケーションにおいて生じる別の課題を説明するための図である。図4を参照して、ロボット200でワークを把持して移動させると、ロボット200の自重および把持しているワークの重さなどにより、リンク202にたわみが発生し、先端に装着されたハンド210およびカメラ400の位置も設計値からずれることになる。
【0046】
上述したような課題に対して、本実施の形態に係るロボット制御システム1においては、移動自由度が相対的に高いロボット200を採用するとともに、ロボット200の先端に配置されたカメラ400に対する振動の影響を低減するための変位発生機構300を追加的に配置する。このような構成を採用することで、ロボット200が高速に移動した場合であっても、カメラ400を用いた画像認識の精度を維持することができる。すなわち、例えば、垂直多関節ロボットなどのロボット200と高速高精度に位置決めできる変位発生機構300とを用いることで、ロボット200の先端(手先)の振動による画像のぶれを補償し、カメラ400の画像の乱れを抑制した高速高精度な組み立て作業を実現する。これによって、部品の組み立てに係るタクトタイムを短縮できる。
【0047】
<D.システム構成例>
次に、本実施の形態に係るロボット制御システム1のシステム構成例について説明する。
【0048】
図5は、本実施の形態に係るロボット制御システム1のシステム構成を概略する模式図である。図5を参照して、ロボット制御システム1は、制御装置100と、フィールドネットワーク10を介して制御装置100とネットワーク接続された、ロボットコントローラ250と、サーボコントローラ350と、画像処理装置450とを含む。
【0049】
制御装置100は、フィールドネットワーク10に接続されたデバイスとの間でデータをやり取りして、後述するような処理を実行する。制御装置100は、典型的には、PLC(プログラマブルロジックコントローラ)により実現されてもよい。
【0050】
ロボットコントローラ250は、ロボット200の制御を担当する。より具体的には、ロボットコントローラ250は、ロボット200との間のインターフェイスとして機能し、制御装置100からの指令に従って、ロボット200を駆動するための指令を出力するとともに、ロボット200の状態値を取得して制御装置100へ出力する。
【0051】
サーボコントローラ350は、変位発生機構300の軸を駆動するサーボモータ330の制御を担当する。より具体的には、サーボコントローラ350は、変位発生機構300との間のインターフェイスとして機能し、制御装置100からの指令に従って、変位発生機構300を構成する1つの軸を駆動するための指令を対応するサーボモータ330へ出力するとともに、変位発生機構300の対応するサーボモータ330の状態値を取得して制御装置100へ出力する。
【0052】
画像処理装置450は、カメラ400により撮像された画像に対して各種の画像認識処理を実行する。本実施の形態に係るロボット制御システム1においては、画像処理装置450は、例えば、マーカ68の探索処理などを行うことで、第2ワーク60の位置を検出する。
【0053】
フィールドネットワーク10には、産業用ネットワーク用のプロトコルである、EtherCAT(登録商標)やEtherNet/IPなどを用いることができる。プロトコルとしてEtherCATを採用した場合には、制御装置100とフィールドネットワーク10に接続されたデバイスとの間で、例えば、数百μ秒~数m秒の定周期でデータをやり取りできる。このような定周期でのデータのやり取りによって、ロボット制御システム1に含まれるロボット200および変位発生機構300を高速高精度に制御できる。
【0054】
制御装置100は、上位ネットワーク20を介して、表示装置600およびサーバ装置700に接続されてもよい。上位ネットワーク20には、産業用ネットワーク用のプロトコルであるやEtherNet/IPなどを用いることができる。
【0055】
制御装置100には、制御装置100で実行されるユーザプログラムのインストールや各種設定を行うためのサポート装置500が接続されてもよい。
【0056】
<E.ハードウェア構成例>
次に、図5に示すロボット制御システム1を構成する主要装置のハードウェア構成例について説明する。
【0057】
(e1:制御装置100)
図6は、本実施の形態に係るロボット制御システム1を構成する制御装置100のハードウェア構成例を示す模式図である。図6を参照して、制御装置100は、プロセッサ102と、メインメモリ104と、ストレージ110と、メモリカードインターフェイス112と、上位ネットワークコントローラ106と、フィールドネットワークコントローラ108と、ローカルバスコントローラ116と、USB(Universal Serial Bus)インターフェイスを提供するUSBコントローラ120とを含む。これらのコンポーネントは、プロセッサバス118を介して接続されている。
【0058】
プロセッサ102は、制御演算を実行する演算処理部に相当し、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。具体的には、プロセッサ102は、ストレージ110に格納されたプログラムを読み出して、メインメモリ104に展開して実行することで、制御対象に対する制御演算を実現する。
【0059】
メインメモリ104は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ110は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。
【0060】
ストレージ110には、基本的な機能を実現するためのシステムプログラム1102、および、制御対象に応じて作成されたIECプログラム1104およびアプリケーションプログラム1106などが格納される。
【0061】
IECプログラム1104は、本実施の形態に係るロボット制御システム1における組み立て処理を実現するために必要な命令群を含む。IECプログラム1104は、典型的には、シーケンス命令およびモーション命令を含み得る。IECプログラム1104は、国際電気標準会議(IEC:International Electrotechnical Commission)が定めるIEC61131-3で規定されるいずれかの言語で記述されてもよう。但し、IECプログラム1104は、IEC61131-3で規定される言語以外のメーカ独自言語で記述されるプログラムを含んでいてもよい。
【0062】
アプリケーションプログラム1106は、ロボット200および/または変位発生機構300の動作を制御するための命令を含む。アプリケーションプログラム1106は、所定のプログラミング言語(例えば、V+言語などのロボット制御用プログラミング言語やGコードなどのNC制御に係るプログラミング言語)で記述された命令を含んでいてもよい。
【0063】
図1に示される制御モジュール30(第1制御モジュール32、振動算出モジュール34および第2制御モジュール36)は、IECプログラム1104および/またはアプリケーションプログラム1106がプロセッサ102により実行されることで実現されてもよい。
【0064】
メモリカードインターフェイス112は、着脱可能な記憶媒体の一例であるメモリカード114を受け付ける。メモリカードインターフェイス112は、メモリカード114に対して任意のデータの読み書きが可能になっている。
【0065】
上位ネットワークコントローラ106は、上位ネットワーク20を介して、任意の情報処理装置(図5に示される表示装置600およびサーバ装置700など)との間でデータをやり取りする。
【0066】
フィールドネットワークコントローラ108は、フィールドネットワーク10を介して、それぞれのデバイスとの間でデータをやり取りする。図5に示すシステム構成例において、フィールドネットワークコントローラ108は、フィールドネットワーク10の通信マスタとして機能してもよい。
【0067】
ローカルバスコントローラ116は、ローカルバス122を介して、制御装置100に含まれる任意の機能ユニット130との間でデータをやり取りする。機能ユニット130は、例えば、アナログ信号の入力および/または出力を担当するアナログI/Oユニット、デジタル信号の入力および/または出力を担当するデジタルI/Oユニット、エンコーダなどからのパルスを受け付けるカウンタユニットなどからなる。
【0068】
USBコントローラ120は、USB接続を介して、任意の情報処理装置(サポート装置500など)との間でデータをやり取りする。
【0069】
(e2:ロボットコントローラ250)
図7は、本実施の形態に係るロボット制御システム1を構成するロボットコントローラ250のハードウェア構成例を示す模式図である。図7を参照して、ロボットコントローラ250は、
ロボットコントローラ250は、フィールドネットワークコントローラ252と、制御処理回路260とを含む。
【0070】
フィールドネットワークコントローラ252は、フィールドネットワーク10を介して、主として、制御装置100との間でデータをやり取りする。
【0071】
制御処理回路260は、ロボット200を駆動するために必要な演算処理を実行する。一例として、制御処理回路260は、プロセッサ262と、メインメモリ264と、ストレージ270と、インターフェイス回路268とを含む。
【0072】
プロセッサ262は、ロボット200を駆動するための制御演算を実行する。メインメモリ264は、例えば、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ270は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。
【0073】
ストレージ270には、ロボット200を駆動するための制御を実現するためのシステムプログラム272が格納される。システムプログラム272は、ロボット200の動作に係る制御演算を実行する命令、および、ロボット200との間のインターフェイスに係る命令を含む。
【0074】
インターフェイス回路268は、ロボット200との間でデータをやり取りする。
(e3:サーボコントローラ350)
図8は、本実施の形態に係るロボット制御システム1を構成するサーボコントローラ350のハードウェア構成例を示す模式図である。図8を参照して、サーボコントローラ350は、フィールドネットワークコントローラ352と、制御処理回路360と、ドライブ回路380とを含む。
【0075】
フィールドネットワークコントローラ352は、フィールドネットワーク10を介して、主として、制御装置100との間でデータをやり取りする。
【0076】
制御処理回路360は、変位発生機構300を駆動するサーボモータ330の制御に必要な演算処理を実行する。一例として、制御処理回路360は、プロセッサ362と、メインメモリ364と、ストレージ370とを含む。
【0077】
プロセッサ362は、変位発生機構300を駆動するサーボモータ330に係る制御演算を実行する。メインメモリ364は、例えば、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ370は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。
【0078】
ストレージ370には、サーボモータ330の駆動制御を実現するためのシステムプログラム372が格納される。システムプログラム372は、変位発生機構300の動作に係る制御演算を実行する命令、および、変位発生機構300との間のインターフェイスに係る命令を含む。
【0079】
ドライブ回路380は、コンバータ回路およびインバータ回路などを含み、制御処理回路360により算出された指令値に従って、指定された電圧・電流・位相の電力を生成して、サーボモータ330へ供給する。
【0080】
サーボモータ330は、変位発生機構300を構成するいずれかの軸と機械的に結合されている。サーボモータ330としては、変位発生機構300に応じた特性のモータを採用できる。サーボモータとの名称に限定されず、誘導型モータ、同期型モータ、永久磁石型モータ、リラクタンスモータのいずれを採用してもよいし、回転型だけではなく、リニアモータを採用してもよい。
【0081】
(e4:画像処理装置450)
図9は、本実施の形態に係るロボット制御システム1を構成する画像処理装置450のハードウェア構成例を示す模式図である。図9を参照して、画像処理装置450は、プロセッサ452と、メインメモリ454と、ストレージ460と、メモリカードインターフェイス462と、上位ネットワークコントローラ456と、フィールドネットワークコントローラ458と、USBコントローラ470と、カメラインターフェイス466とを含む。これらのコンポーネントは、プロセッサバス468を介して接続されている。
【0082】
プロセッサ452は、画像処理を実行する演算処理部に相当し、CPUやGPUなどで構成される。具体的には、プロセッサ452は、ストレージ460に格納されたプログラムを読み出して、メインメモリ454に展開して実行することで、任意の画像処理を実現する。
【0083】
メインメモリ454は、DRAMやSRAMなどの揮発性記憶装置などで構成される。ストレージ460は、例えば、SSDやHDDなどの不揮発性記憶装置などで構成される。ストレージ460には、基本的な機能を実現するためのシステムプログラム4602、および、制御対象に応じて作成された画像処理プログラム4604などが格納される。
【0084】
メモリカードインターフェイス462は、着脱可能な記憶媒体の一例であるメモリカード464を受け付ける。
【0085】
上位ネットワークコントローラ456は、上位ネットワークを介して、任意の情報処理装置との間でデータをやり取りする。フィールドネットワークコントローラ458は、フィールドネットワーク10を介してそれぞれのデバイスとの間でデータをやり取りする。
【0086】
USBコントローラ470は、USB接続を介して、任意の情報処理装置との間でデータをやり取りする。
【0087】
カメラインターフェイス466は、カメラ400が撮像した画像を取得するとともに、カメラ400に対して各種指令を与える。
【0088】
(e5:サポート装置500)
本実施の形態に係るロボット制御システム1を構成するサポート装置500は、一例として、汎用パソコンを用いて実現されてもよい。サポート装置500の基本的なハードウェア構成例は、周知であるので、ここでは詳細な説明は行わない。
【0089】
(e6:表示装置600)
本実施の形態に係るロボット制御システム1を構成する表示装置600は、一例として、汎用パソコンを用いて実現されてもよい。表示装置600の基本的なハードウェア構成例は、周知であるので、ここでは詳細な説明は行わない。
【0090】
(e7:サーバ装置700)
本実施の形態に係るロボット制御システム1を構成するサーバ装置700は、一例として汎用パソコンを用いて実現されてもよい。サーバ装置700の基本的なハードウェア構成例は、周知であるので、ここでは詳細な説明は行わない。
【0091】
(e8:その他の形態)
図6図9には、1または複数のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0092】
<F.処理概要>
次に、本実施の形態に係るロボット制御システム1を用いて2つの部品を組み立て処理の概要について説明する。
【0093】
図10図12は、本実施の形態に係るロボット制御システム1を用いた組み立て処理を説明するための図である。
【0094】
図10を参照して、まず、第2ワーク60が配置された位置を特定して、第1ワーク50と第2ワーク60との相対位置を決定する処理が行われる。より具体的には、カメラ400で第2ワーク60を撮像して、第2ワーク60の基板62上に設けられている位置決め用のマーカ68を認識することで、ワークテーブル80上に配置された第2ワーク60の位置が決定される。
【0095】
第2ワーク60の位置が決定されることで、第1ワーク50を第2ワーク60へアプローチさせるための軌道70を算出できる。すなわち、ロボット200で把持した第1ワーク50を第2ワーク60と組み合わせるための軌道70が算出される。そして、ロボット200および変位発生機構300を用いた組み立て処理が開始される。
【0096】
組み立て処理においては、ロボット200は、算出された軌道70に沿って移動する。ロボット200が軌道70に沿って移動する際に生じるカメラ400に生じる振動を変位発生機構300が低減する。カメラ400に生じる振動の大きさ(本来の位置からのずれの大きさ)は、後述するように、ロボット200から取得される状態値(例えば、エンコーダ情報など)を用いて算出(あるいは推定)してもよいし、カメラ400により撮像された画像から得られる情報を用いて算出(あるいは推定)してもよい。
【0097】
図11を参照して、ロボット200が第1ワーク50を把持して移動中には、カメラ400に生じる振動の大きさ(本来の位置からのずれの大きさ)が逐次算出されるとともに、算出された振動を補償するために、変位発生機構300の可動軸312,314,316が逐次駆動される。変位発生機構300の可動軸312,314,316が逐次駆動されることで、カメラ400に生じる振動を補償される。
【0098】
また、ロボット200を軌道70に沿って移動させる場合には、算出されるカメラ400に生じる振動の大きさ(本来の位置からのずれの大きさ)に対応する補正量(発生している振動とは反対方向のずれ)を反映して、演算処理が実行される。
【0099】
このように、ロボット200を相対的に高速に移動させることで生じるカメラ400の振動が低減されるように、変位発生機構300が順次駆動される。これによって、ロボット200を高精度な位置決め処理を実現できる。
【0100】
最終的には、図12に示すように、第1ワーク50の一対のピン54が第2ワーク60の一対のホール66に挿入されて、組み立て処理が完了する。
【0101】
<G.ロボット制御システムにおけるデータのやり取り>
本実施の形態に係るロボット制御システム1は、複数のデバイスが連携して処理を実現する。それぞれのデバイスが管理する位置の情報は、互いに独立した座標系で規定されることも多い。そのため、共通の基準座標系を用いて位置決め制御を実現してもよい。
【0102】
図13は、本実施の形態に係るロボット制御システム1において定義された座標系の一例を示す図である。図13を参照して、ロボット制御システム1全体の位置決め制御は、共通の基準座標系で実現される。
【0103】
ロボット200について、ロボット200の先端位置(ハンド210および変位発生機構300が機械的に接続されている位置)は、ロボット200の設置位置を基準に定義されたロボット座標系により規定される。ロボット200の先端に接続された変位発生機構300の位置は、ロボット200の先端位置を基準に定義されたハンド座標系により規定される。さらに、変位発生機構300を介してロボット200の先端に接続される。
【0104】
したがって、第1ワーク50の位置は、ロボット位置(ロボット座標系)により規定される。また、算出される第2ワーク60の位置は、ロボット位置(ロボット座標系)と、カメラ400により撮像される画像内を基準に定義されたカメラ座標系(あるいは、画像座標系)により規定される。
【0105】
上述したようなそれぞれの座標系で規定された位置を共通の基準座標系で規定された位置に変換した上で、相対位置の算出および位置決め制御などを行うようにしてもよい。
【0106】
図14は、本実施の形態に係るロボット制御システム1においてやり取りされる位置情報の一例を説明するための図である。図14を参照して、ロボットコントローラ250は、ロボット200から、(1)ロボット位置(ロボット座標系)を取得して、制御装置100へ周期的に送出する。
【0107】
サーボコントローラ350の各々は、対応するサーボモータ330の状態値を取得して、制御装置100へ周期的に送出する。変位発生機構300を構成するそれぞれのサーボモータ330の状態値の集合が(2)変位発生機構の位置(ハンド座標系)となる。
【0108】
画像処理装置450は、カメラ400により撮像された画像に基づく画像認識処理により、第2ワーク60が配置された位置を特定して、(3)第2ワーク60の位置(カメラ座標系)を制御装置100へ周期的に送出する。
【0109】
制御装置100は、ロボット配置の位置関係やキャリブレーションなどに基づいて予め取得された変換式を用いて、それぞれの位置を基準座標系の位置に変換した上で、位置決め制御に必要な処理を実行する。
【0110】
このように、図14に示す構成例を採用することで、必要な位置の情報は、共通の基準座標系を用いて制御装置100により統一的に管理および処理できる。そのため、制御性能を高めることができる。
【0111】
<H.変位発生機構300の構成例>
本実施の形態に係るロボット制御システム1に採用する変位発生機構300としては、3つの軸方向に移動可能な直交機構に限らず、1つの軸方向に移動可能な移動機構や2つの軸方向に移動可能な2軸の移動機構であってもよい。あるいは、より多くの軸方向に移動可能な直交ロボットを採用してもよい。さらに、変位発生機構300としては、1または複数の回転軸に沿って変位を発生させることができる機構を採用してもよい。
【0112】
図15は、本実施の形態に係るロボット制御システム1に採用する変位発生機構300の構成例を示す模式図である。図15を参照して、自由度を高めたい場合には、X軸に沿って移動する可動軸312と、Y軸に沿って移動する可動軸314と、Z軸に沿って移動する可動軸316とを含む構成を採用できる。さらに、可動軸316については、Z軸のまわり回転可能に構成してもよい。
【0113】
一方、特定の軸について精度を高めたい場合には、精度を高めたい軸のみが可動できる構成を採用してもよい。
【0114】
このように、変位発生機構300の構成は、使用用途に応じて決定すればよい。
<I.処理手順>
次に、本実施の形態に係るロボット制御システム1における処理手順について説明する。
【0115】
(i1:概要)
本実施の形態に係るロボット制御システム1は、第1ワーク50を把持したロボット200を移動させたときに、ロボット200の先端に配置されたカメラ400に発生する振動を低減する。
【0116】
図16は、本実施の形態に係るロボット制御システム1におけるカメラ400に発生する振動を低減する処理を説明するための図である。図16を参照して、ロボット200が移動するときに、ロボット200のリンクなどに生じるたわみやロボット200自体の振動などによって、ロボット200の先端が本来の位置からずれると、その位置ずれ(振動)の大きさに応じてカメラ400の位置を変更(補償)する。このような位置の補償を逐次実行することで、カメラ400に生じる振動を低減する。
【0117】
ロボット200先端の振動の大きさは、例えば、ロボット200から取得される状態値(例えば、エンコーダ情報など)を用いて算出(あるいは推定)してもよいし、カメラ400により撮像された画像から得られる情報を用いて算出(あるいは推定)してもよい。
【0118】
以下、それぞれの方法を用いて、ロボット200先端の振動の大きさを算出するとともに、算出された振動の大きさに基づいて、カメラ400の位置を変更(補償)することで、振動を低減する方法について説明する。
【0119】
(i2:状態値に基づく振動の大きさ算出および振動低減処理)
ロボット200および変位発生機構300から取得される状態値(例えば、エンコーダ情報など)を用いて振動低減処理を行う処理例について説明する。
【0120】
以下の処理例では、ロボット200の先端に生じている振動の大きさを算出して、それを振動の大きさと見なしてカメラ400の位置を逐次制御する実装例を示す。すなわち、制御装置100は、ロボット200の可動部の状態値に基づいて、カメラ400に生じる振動の大きさを算出する。
【0121】
図17は、本実施の形態に係るロボット制御システム1における組み立て処理の処理手順を示すフローチャートである。図17に示す各ステップは、典型的には、制御装置100のプロセッサ102がプログラムを実行することで実現される。図17に示される一連の処理は、予め定められた周期(制御周期)で繰り返し実行される。
【0122】
図17を参照して、制御装置100は、ワークテーブル80上に配置された第2ワーク60の位置を検出し(ステップS2)、第1ワーク50を第2ワーク60に挿入するための軌道70を算出する(ステップS4)。なお、第2ワーク60の位置は、カメラ400により撮像された画像に対してマーカ68の探索処理を行うことで検出されてもよい。あるいは、外部装置から制御装置100に入力されてもよいし、予め定められた初期位置をそのまま採用してもよい。第1ワーク50と第2ワーク60とが接近すると、カメラ400を用いた画像認識により、第2ワーク60の位置が検出される。
【0123】
そして、第1ワーク50が第2ワーク60に挿入されるまで、以下のステップS10~S22の処理が繰り返される。
【0124】
より具体的には、制御装置100は、ロボット200に指令を与えて、第1ワーク50を現周期の目標位置へ移動させる(ステップS10)。すなわち、制御装置100は、第1ワーク50を第2ワーク60へアプローチさせるように、ロボット200に制御指令を与える。
【0125】
そして、制御装置100は、ロボット200の各関節のエンコーダ情報、および、変位発生機構300の各軸のエンコーダ情報を取得する(ステップS12)。
【0126】
制御装置100は、カメラ400により撮像された画像に基づいて検出された第1ワーク50および第2ワーク60の位置を取得し(ステップS14)、第1ワーク50と第2ワーク60との組み付けが完了したか否かを判断する(ステップS16)。第1ワーク50と第2ワーク60との組み付けが完了していれば(ステップS16においてYES)、処理は終了する。
【0127】
第1ワーク50と第2ワーク60との組み付けが完了していなければ(ステップS16においてNO)、制御装置100は、ロボット200から取得したエンコーダ情報に基づいて、ロボット200先端の振動の大きさを算出する(ステップS18)。すなわち、制御装置100は、ロボット200が第1ワーク50を第2ワーク60にアプローチさせるときにカメラ400に生じる振動の大きさを算出する。
【0128】
先端の振動の大きさは、例えば、ロボット200の各関節のエンコーダ情報に基づいて算出される先端の位置、および/または、ロボット200の各リンクに生じるたわみとに基づいて算出される。ロボット200の各リンクに生じるたわみは、エンコーダ情報の時間的変化などに基づいて算出できる。
【0129】
そして、制御装置100は、算出されたロボット200先端の振動の大きさに対応する補正量(発生している振動とは反対方向のずれ)を変位発生機構300に与える(ステップS20)。すなわち、制御装置100は、算出された振動を補償するように、変位発生機構300に制御指令を与える。
【0130】
また、制御装置100は、カメラ400を用いた画像認識による検出結果を変位発生機構300に与えた補正量に応じて修正する(ステップS22)。すなわち、カメラ400とロボット200の先端との間の相対的な位置関係は、変位発生機構300に与えられた補正量に相当する分だけ変化することになる。この相対的な位置関係の変化によって、画像認識による検出結果も影響を受けるので、この影響を相殺する目的で、変位発生機構300に与えた補正量とは逆の成分が修正情報として与えられる。このように、制御装置100は、変位発生機構300に与えられた制御指令の影響を除外して、ロボット200の現在位置を取得する。
【0131】
そして、ステップS10以下の処理が繰り返される。
(i3:カメラ400に基づく振動算出および振動低減処理)
以下の処理例では、カメラ400により撮像された画像から得られる情報を用いて、ロボット200先端に生じている振動の大きさを算出し、それを振動の大きさと見なしてカメラ400の位置を逐次制御する実装例を示す。すなわち、制御装置100は、カメラ400により撮像された画像に基づいて、カメラ400に生じる振動の大きさを算出する。
【0132】
図18は、本実施の形態に係るロボット制御システム1におけるロボット200先端に生じている振動の大きさを算出する処理を説明するための図である。図18(a)~(c)には、カメラ400により撮像された画像の一例を示す。
【0133】
図18(a)には、時刻t=t1において撮像された画像の一例を示す。撮像された画像においては、第1ワーク50および第2ワーク60が被写体として存在している。画像処理装置450は、画像認識により、第1ワーク50および第2ワーク60の位置を検出しているとする。また、画像処理装置450は、第1ワーク50の移動速度についても検出しているとする。
【0134】
図18(b)には、カメラ400に振動が発生していない場合に、時刻t=t2において撮像された画像の一例を示す。撮像された画像において、第1ワーク50は、図18(a)において検出された移動速度に応じた距離だけ移動することになる。図18(b)に示される画像において、第1ワーク50が存在する位置が時刻t=t2における本来の位置に相当する。図18(b)に示される第1ワーク50の位置は、時刻t=t1における移動速度から算出することができる。
【0135】
図18(c)には、カメラ400に振動が発生している場合に、時刻t=t2において撮像された画像の一例を示す。撮像された画像において、第1ワーク50は、図18(b)に示される本来の位置からずれている。第1ワーク50の本来の位置からのずれが誤差ベクトルとして算出される。算出された誤差ベクトルに基づいて、ロボット200先端の振動の大きさが算出(推定)される。
【0136】
図18に示すように、制御装置100は、カメラ400により撮像された画像に基づいて、第1ワーク50の移動速度を算出するとともに、算出された第1ワーク50の移動速度から第1ワーク50の本来の位置を算出する。そして。制御装置100は、第1ワーク50の現在位置と、第1ワーク50の本来の位置とのずれである誤差ベクトルを算出する。
【0137】
このように、第1ワーク50を把持したロボット200を移動させたときに、ロボット200の先端に発生する振動は、カメラ400により撮像された画像から算出できる。そして、算出された振動は変位発生機構300を用いて補償される。
【0138】
図19は、本実施の形態に係るロボット制御システム1における組み立て処理の別の処理手順を示すフローチャートである。図19に示す各ステップは、典型的には、制御装置100のプロセッサ102がプログラムを実行することで実現される。図19に示される一連の処理は、予め定められた周期(制御周期)で繰り返し実行される。
【0139】
図19を参照して、制御装置100は、ワークテーブル80上に配置された第2ワーク60の位置を検出し(ステップS2)、第1ワーク50を第2ワーク60に挿入するための軌道70を算出する(ステップS4)。なお、第2ワーク60の位置は、カメラ400により撮像された画像に対してマーカ68の探索処理を行うことで検出されてもよい。あるいは、外部装置から制御装置100に入力されてもよいし、予め定められた初期位置をそのまま採用してもよい。第1ワーク50と第2ワーク60とが接近すると、カメラ400を用いた画像認識により、第2ワーク60の位置が検出される。
【0140】
そして、第1ワーク50が第2ワーク60に挿入されるまで、以下のステップS10~S22の処理が繰り返される。
【0141】
より具体的には、制御装置100は、ロボット200に指令を与えて、第1ワーク50を現周期の目標位置へ移動させる(ステップS10)。すなわち、制御装置100は、第1ワーク50を第2ワーク60へアプローチさせるように、ロボット200に制御指令を与える。
【0142】
そして、制御装置100は、ロボット200の各関節のエンコーダ情報、および、変位発生機構300の各軸のエンコーダ情報を取得する(ステップS12)。
【0143】
制御装置100は、カメラ400により撮像された画像に基づいて検出された第1ワーク50および第2ワーク60の位置を取得し(ステップS14)、第1ワーク50と第2ワーク60との組み付けが完了したか否かを判断する(ステップS16)。第1ワーク50と第2ワーク60との組み付けが完了していれば(ステップS16においてYES)、処理は終了する。
【0144】
第1ワーク50と第2ワーク60との組み付けが完了していなければ(ステップS16においてNO)、制御装置100は、カメラ400により撮像された画像に基づいて、第1ワーク50の本来の位置からのずれである誤差ベクトルを算出する(ステップS30)。すなわち、制御装置100は、ロボット200が第1ワーク50を第2ワーク60にアプローチさせるときにカメラ400に生じる振動の大きさを算出する。
【0145】
より具体的には、制御装置100は、周期毎に第1ワーク50の移動速度を算出しており、前周期に算出された第1ワーク50の移動速度に基づいて、第1ワーク50の本来の位置を算出する。
【0146】
そして、制御装置100は、算出された誤差ベクトルに対応する補正量(発生している振動とは反対方向のずれ)を変位発生機構300に与える(ステップS32)。すなわち、制御装置100は、算出された振動を補償するように、変位発生機構300に制御指令を与える。
【0147】
また、制御装置100は、カメラ400を用いた画像認識による検出結果を変位発生機構300に与えた補正量に応じて修正する(ステップS22)。すなわち、カメラ400とロボット200の先端との間の相対的な位置関係は、変位発生機構300に与えられた補正量に相当する分だけ変化することになる。この相対的な位置関係の変化によって、画像認識による検出結果も影響を受けるので、この影響を相殺する目的で、変位発生機構300に与えた補正量とは逆の成分が修正情報として与えられる。このように、制御装置100は、変位発生機構300に与えられた制御指令の影響を除外して、ロボット200の現在位置を取得する。
【0148】
そして、ステップS10以下の処理が繰り返される。
(i4:変形例および応用例)
処理例として、状態値に基づく振動の大きさ算出の処理例(図17)、および、カメラ400により撮像された画像から得られる情報に基づく振動の大きさ算出の処理例(図19)について説明したが、これらを適宜組み合わせてもよい。
【0149】
例えば、状態値に基づく振動の大きさ算出の処理例(図17)と、カメラ400により撮像された画像から得られる情報に基づく振動の大きさ算出の処理例(図19)とを組み合わせてもよい。具体的には、カメラ400の視野範囲に第1ワーク50が到達するまでは、状態値に基づく振動の大きさ算出の処理例(図17)を実行し、到着後は、カメラ400により撮像された画像から得られる情報に基づく振動の大きさ算出の処理例(図19)を実行するようにしてもよい。
【0150】
このように、第1ワーク50と第2ワーク60とを組み合わせる際の条件などに応じて、任意の処理を実装することができる。
【0151】
また、算出された振動の大きさが予め定められた条件を満たした場合(例えば、予め定められたしきい値を超える)に限って、振動低減処理を有効化するようにしてもよい。
【0152】
図17および図19に示すように、図1の制御モジュール30に含まれる、第1制御モジュール32と、振動算出モジュール34と、第2制御モジュール36は、予め定められた周期で同期して処理を実行することになる。
【0153】
<J.様々な構成例>
上述のロボット制御システム1においては、制御装置100が主として制御演算を実行する構成について例示したが、これに限らず、必要な機能を1または複数のデバイスに分散配置してもよい。
【0154】
図20は、本実施の形態に係るロボット制御システム1の構成例のバリエーションの一部を示す図である。図20には、ロボット制御システム1が有している基本的な5つの機能を「LD」、「RC」、「RA」、「MC」、「SA」という記号を用いて示している。
【0155】
「LD」は、上述の図17および図19に示すような組み立て処理に係る制御演算を実行する機能を含む。上述のロボット制御システム1において、「LD」は制御装置100が担当する。より具体的には、制御装置100のプロセッサ102が実行するIECプログラム1104は、「LD」を実現するために必要な命令を含む。「LD」は、図1の振動算出モジュール34に相当する機能を含む。
【0156】
「RC」は、ロボット200の動作に係る制御演算を実行する機能を含む。具体的には、ロボット200の動作に係る制御演算は、ロボット200の軌道の算出、および、ロボット200に含まれる各関節の各時間における目標角度の算出などを含む。「RC」は、制御装置100に格納されたアプリケーションプログラム1106、および、ロボットコントローラ250に格納されたシステムプログラム272により実現されてもよい。
【0157】
「RA」は、ロボット200との間のインターフェイスに係る機能を含む。具体的には、「RA」は、RC機能による算出結果を実際のロボット200の動作に必要な値(電圧など)に変換して出力する機能、および、ロボット200から得られたデータ(パルス値など)をRC機能に出力する機能を含む。「RA」は、ロボットコントローラ250に格納されたシステムプログラム272により実現されてもよい。
【0158】
「RC」および「RA」は、図1の第1制御モジュール32に相当する機能を含む。
「MC」は、変位発生機構300の動作に係る制御演算を実行する機能を含む。具体的には、変位発生機構300の動作に係る制御演算は、変位発生機構300の軌道の算出、および、変位発生機構300に含まれる各軸の各時間における目標角度あるいは目標速度の算出などを含む。「MC」は、制御装置100に格納されたアプリケーションプログラム1106、および、サーボコントローラ350に格納されたシステムプログラム372により実現されてもよい。
【0159】
「SA」は、変位発生機構300との間のインターフェイスに係る機能を含む。具体的には、「SA」は、MC機能による算出結果を実際の変位発生機構300の動作に必要な値(電圧など)に変換して出力する機能、および、変位発生機構300から得られたデータ(パルス値など)をMC機能に出力する機能を含む。「SA」は、サーボコントローラ350に格納されたシステムプログラム372により実現されてもよい。
【0160】
「MC」および「MA」は、図1の第2制御モジュール36に相当する機能を含む。
図20には、一例として、16種類の構成例を示す。例えば、構成例番号「1」は、上述のロボット制御システム1に相当する実装例であり、制御装置100が位置決め制御を担当するとともに、ロボット200の制御については、制御装置100およびロボットコントローラ250が担当し、変位発生機構300の制御については、制御装置100およびサーボコントローラ350が担当する。図20に示すように、同一の機能を複数のデバイスで分担することもある。
【0161】
構成例番号「2」は、制御装置100およびロボットコントローラ250が一体化した構成例を意味し、例えば、ロボットコントローラ250が制御装置100に取り込まれて、実装されてもよい。
【0162】
その他の構成例についても同様であり、制御装置100、ロボットコントローラ250およびサーボコントローラ350の全部または一部を統合して構成してもよい。
【0163】
なお、図20に示す実装例は一例であり、例えば、複数の制御装置を用いて実装してもよい。また、画像処理装置450についても、独立して構成してもよいし、制御装置100と一体化してもよい。
【0164】
上述したように、本実施の形態に係るロボット制御システム1は、必要な機能が任意の方法で実現できれば、どのような実装形態を採用してもよい。
【0165】
<K.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
ロボット制御システム(1)であって、
カメラ(400)および第1ワーク(50)を把持するためのハンド(210)が装着されたロボット(200)と、
前記ロボットの先端と前記カメラとの間に配置された変位発生機構(300)と、
前記第1ワークを第2ワークへアプローチさせるように、前記ロボットに制御指令を与える第1制御部(32;100)と、
前記ロボットが前記第1ワークを前記第2ワークにアプローチさせるときに前記カメラに生じる振動の大きさを算出する振動算出部(34;100)と、
前記振動算出部により算出された振動を補償するように、前記変位発生機構に制御指令を与える第2制御部(36;100)とを備える、ロボット制御システム。
[構成2]
前記振動算出部は、前記ロボットの可動部の状態値に基づいて、前記カメラに生じる振動の大きさを算出する、構成1に記載のロボット制御システム。
[構成3]
前記振動算出部は、前記カメラにより撮像された画像に基づいて、前記カメラに生じる振動の大きさを算出する、構成1に記載のロボット制御システム。
[構成4]
前記振動算出部は、前記カメラにより撮像された画像に基づいて、前記第1ワークの移動速度を算出するとともに、算出された前記第1ワークの移動速度から前記第1ワークの本来の位置を算出する、構成3に記載のロボット制御システム。
[構成5]
前記振動算出部は、前記第1ワークの現在位置と、前記第1ワークの本来の位置とのずれである誤差ベクトルを算出する、構成4に記載のロボット制御システム。
[構成6]
前記ロボットは、垂直多関節ロボットであり、
前記変位発生機構は、直交機構を含む、構成1~5のいずれか1項に記載のロボット制御システム。
[構成7]
前記第1制御部、前記振動算出部および前記第2制御部は、予め定められた周期で同期して処理を実行する、構成1~6のいずれか1項に記載のロボット制御システム。
[構成8]
前記第1制御部は、前記変位発生機構に与えられた制御指令の影響を除外して、前記ロボットの現在位置を取得する、構成1~7のいずれか1項に記載のロボット制御システム。
[構成9]
カメラ(400)および第1ワーク(50)を把持するためのハンド(210)が装着されたロボット(200)と、前記ロボットの先端と前記カメラとの間に配置された変位発生機構(300)とを備えるロボット制御システム(1)のコンピュータ(100)で実行される制御プログラム(1102,1104,1106)であって、前記コンピュータに
前記第1ワークを第2ワークへアプローチさせるように、前記ロボットに制御指令を与えるステップ(S10)と、
前記ロボットが前記第1ワークを前記第2ワークにアプローチさせるときに前記カメラに生じる振動の大きさを算出するステップ(S18;S30)と、
前記算出された振動を補償するように、前記変位発生機構に制御指令を与えるステップ(S22)とを実行させる、制御プログラム。
[構成10]
カメラ(400)および第1ワーク(50)を把持するためのハンド(210)が装着されたロボット(200)と、前記ロボットの先端と前記カメラとの間に配置された変位発生機構(300)とを備えるロボット制御システム(1)で実行される制御方法であって、
前記第1ワークを第2ワークへアプローチさせるように、前記ロボットに制御指令を与えるステップ(S10)と、
前記ロボットが前記第1ワークを前記第2ワークにアプローチさせるときに前記カメラに生じる振動の大きさを算出するステップ(S18;S30)と、
前記算出された振動を補償するように、前記変位発生機構に制御指令を与えるステップ(S22)とを備える、制御方法。
【0166】
<L.利点>
本実施の形態に係るロボット制御システム1においては、第1ワーク50を搬送するロボット200を高速で移動させた場合などに生じる先端の振動の大きさを逐次算出するとともに、算出される振動の大きさに基づいて、それを補償するように、ロボット200の先端とカメラ400との間に適切な変位を発生させるための制御指令を与える。このように、ロボット200と変位発生機構300とを組み合わせることで、部品を組み立てるアプリケーションにおいて、より精度の高い位置決め制御を実現できる。
【0167】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0168】
1 ロボット制御システム、10 フィールドネットワーク、20 上位ネットワーク、30 制御モジュール、32 第1制御モジュール、34 振動算出モジュール、36 第2制御モジュール、50 第1ワーク、52,64 電子部品、54 ピン、60 第2ワーク、62 基板、66 ホール、68 マーカ、70 軌道、80 ワークテーブル、100 制御装置、102,262,362,452 プロセッサ、104,264,364,454 メインメモリ、106,456 上位ネットワークコントローラ、108,252,352,458 フィールドネットワークコントローラ、110,270,370,460 ストレージ、112,462 メモリカードインターフェイス、114,464 メモリカード、116 ローカルバスコントローラ、118,468 プロセッサバス、120,470 USBコントローラ、122 ローカルバス、130 機能ユニット、200 ロボット、202 リンク、204 関節、210 ハンド、250 ロボットコントローラ、260,360 制御処理回路、268 インターフェイス回路、272,372,1102,4602 システムプログラム、300 変位発生機構、312,314,316 可動軸、330 サーボモータ、350 サーボコントローラ、380 ドライブ回路、400 カメラ、450 画像処理装置、466 カメラインターフェイス、500 サポート装置、600 表示装置、700 サーバ装置、1104 IECプログラム、1106 アプリケーションプログラム、4604 画像処理プログラム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20