JP6538751B2 - プログラミング装置及びロボット制御方法 - Google Patents

プログラミング装置及びロボット制御方法 Download PDF

Info

Publication number
JP6538751B2
JP6538751B2 JP2017098861A JP2017098861A JP6538751B2 JP 6538751 B2 JP6538751 B2 JP 6538751B2 JP 2017098861 A JP2017098861 A JP 2017098861A JP 2017098861 A JP2017098861 A JP 2017098861A JP 6538751 B2 JP6538751 B2 JP 6538751B2
Authority
JP
Japan
Prior art keywords
robot
program
point
movement destination
destination point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017098861A
Other languages
English (en)
Other versions
JP2018192569A (ja
Inventor
伴 一訓
一訓 伴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
FANUC Corp
Original Assignee
FANUC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by FANUC Corp filed Critical FANUC Corp
Priority to JP2017098861A priority Critical patent/JP6538751B2/ja
Priority to US15/948,046 priority patent/US10647003B2/en
Publication of JP2018192569A publication Critical patent/JP2018192569A/ja
Application granted granted Critical
Publication of JP6538751B2 publication Critical patent/JP6538751B2/ja
Priority to US16/689,554 priority patent/US11364636B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • B25J9/1697Vision controlled systems
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • B25J19/021Optical sensing devices
    • B25J19/023Optical sensing devices including video camera means
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1612Programme controls characterised by the hand, wrist, grip control
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39484Locate, reach and grasp, visual guided grasping
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39527Workpiece detector, sensor mounted in, near hand, gripper

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Orthopedic Medicine & Surgery (AREA)
  • Manipulator (AREA)
  • Numerical Control (AREA)

Description

本発明は、産業用ロボット等のロボットを制御するための、プログラミング装置及びロボット制御方法に関する。
従来、ロボットに対する教示のために、ティーチング・プレイバックと呼ばれる方法が広く用いられている。
ティーチング・プレイバックでは、ユーザが教示操作盤を用いた操作によりロボットを動かすことによって、ロボットに対して所定の動作を教示する。あるいは、ユーザがロボットを直接押したり引いたりして動かすことによって、ロボットに対して所定の動作を教示する。
ロボットは、これらの教示に基づいて、所定の動作を行うための動作プログラムを生成する。そして、この動作プログラムを用いることにより、ロボットは、教示終了後も所定の動作を正確に繰り返すことができる。
しかし、複数のロボットそれぞれに対して、このようなロボットの実機を用いたティーチング・プレイバックを行うことはユーザにとって負担となる。そこで、コンピュータ上で仮想空間を生成し、この仮想空間で仮想的にロボットを動作させることによって動作プログラムを作成する技術が利用されている。このような技術は例えば特許文献1に開示されており、オフラインプログラミングシステム(以下、適宜「OPS」と呼ぶ。)等の名称で呼ばれる。
OPSを利用することにより、ロボットの実機を用いたティーチング・プレイバックを行うことなく、動作プログラムを生成することが可能となる。
特開2009−119589号公報
しかしながら、OPSにより生成された動作プログラムを用いて実際にロボットを動作させた場合、ロボットの寸法誤差や組立誤差、あるいはロボットと周辺環境の相対位置が想定していたものと異なる等の理由で、ロボットが想定通りに作業を遂行できないことが多い。そのため、結局はユーザがロボットの実機を用いたティーチング・プレイバックを行い、OPSにより生成された動作プログラムを調整するという作業が必要となっていた。
このように、ロボットの立ち上げ時に行われる、教示作業やプログラミングは容易ではなく、ユーザにとって煩雑なものであった。
そこで本発明は、従来に比して、より簡便にロボットの立ち上げ作業を行うことが可能な、プログラミング装置及びロボット制御方法を提供することを目的とする。
(1) 本発明のプログラミング装置(例えば、後述のプログラミング装置10)は、複数の移動先ポイントを経由する所定の動作をロボット(例えば、後述のロボット20)に実行させるためのプログラムを生成するプログラム生成部(例えば、後述のプログラム生成部13)と、前記プログラムに基づいた制御により、前記ロボットに前記所定の動作を実行させるロボット制御部(例えば、後述のロボット制御部14)と、前記移動先ポイントの位置と所定の相対関係がある位置に配置された参照点を撮像した撮像画像を取得する画像取得部(例えば、後述の画像取得部16)と、前記撮像画像及び前記所定の相対関係に基づいて、前記プログラムに含まれる前記移動先ポイントの情報を補正する移動先ポイント補正部(例えば、後述の移動先ポイント補正部15)と、を備え、前記ロボット制御部は、前記補正後の移動先ポイントの情報に基づいて、前記ロボットを制御する。
(2) 上記(1)に記載のプログラミング装置を、前記プログラム生成部は、前記参照点の位置と前記所定の相関関係とを組にした情報に基づいて特定される移動先ポイントを、前記移動先ポイントの候補として複数記憶しており、前記プログラム生成時に、前記移動先ポイントの候補から何れかの移動先ポイントを選択し、選択した前記移動先ポイントを経由する所定の動作をロボットに実行させるためのプログラムを生成するようにしてもよい。
(3) 上記(1)又は(2)に記載のプログラミング装置を、前記プログラム生成部は、前記移動先ポイント間を前記ロボットが移動すると前記ロボットと他の物品とが干渉する場合に、前記干渉が発生しない経路にて前記ロボットが移動するように、前記移動先ポイント間の移動時に経由する中継ポイントを挿入して前記プログラムを生成するようにしてもよい。
(4) 上記(3)に記載のプログラミング装置を、前記移動先ポイント補正部は、前記中継ポイントについての情報は補正しないようにしてもよい。
(5) 上記(1)から(4)の何れかに記載のプログラミング装置を、前記移動先ポイント補正部は、前記ロボットが前記所定の動作実行中に、これから前記ロボットが移動する移動先ポイントについての情報を補正するようにしてもよい。
(6) 上記(1)から(5)の何れかに記載のプログラミング装置を、前記参照点が複数存在すると共に、前記参照点のそれぞれには各参照点を識別するための画像情報が含まれており、前記画像取得部は、前記各参照点を識別するための画像情報も撮像し、前記移動先ポイント補正部は、前記各参照点を識別するための画像情報に基づいて参照点を識別し、前記撮像画像及び前記所定の相対関係に基づいて、前記プログラムに含まれる前記識別した参照点に対応する前記移動先ポイントの情報を補正するようにしてもよい。
(7) 上記(1)から(6)の何れかに記載のプログラミング装置を、異なる状況下で前記ロボットが動作する場合に、前記プログラム生成部は、前記生成したプログラムを前記異なる状況それぞれに対応する数だけ複製し、前記移動先ポイント補正部は、前記異なる状況それぞれに対応して前記複製されたプログラムそれぞれを補正することにより、前記異なる状況それぞれに対応する複数の補正後のプログラムを生成するようにしてもよい。
(8) 本発明のロボット制御方法は、コンピュータ(例えば、後述のプログラミング装置10)が行うロボット制御方法であって、複数の移動先ポイントを経由する所定の動作をロボット(例えば、後述のロボット20)に実行させるためのプログラムを生成するプログラム生成ステップと、前記プログラムに基づいた制御により、前記ロボットに前記所定の動作を実行させるロボット制御ステップと、前記移動先ポイントの位置と所定の相対関係がある位置に配置された参照点を撮像した撮像画像を取得する画像取得ステップと、前記撮像画像及び前記所定の相対関係に基づいて、前記プログラムに含まれる前記移動先ポイントの情報を補正する移動先ポイント補正ステップと、を前記コンピュータが行い、前記ロボット制御ステップにおいて、前記補正後の移動先ポイントの情報に基づいて、前記ロボットを制御する。
本発明によれば、従来に比して、より簡便にロボットの立ち上げ作業を行うことが可能となる。
本発明の実施形態の基本的構成を示す機能ブロック図である。 本発明の実施形態における動作プログラムの生成について説明するための模式図(1/2)である。 本発明の実施形態における動作プログラムの生成について説明するための模式図(2/2)である。 本発明の実施形態における動作プログラムを生成するために入力される、作業手順書の内容に応じたフローチャートである。 本発明の実施形態における動作プログラムの補正について説明するための模式図(1/5)である。 本発明の実施形態における動作プログラムの補正について説明するための模式図(2/5)である。 本発明の実施形態における動作プログラムの補正について説明するための模式図(3/5)である。 本発明の実施形態における動作プログラムの補正について説明するための模式図(4/5)である。 本発明の実施形態における動作プログラムの補正について説明するための模式図(5/5)である。 本発明の実施形態の基本的動作を示す構成を示すフローチャートである。 本発明の実施形態における参照点Refの一例を示す模式図である。 本発明の実施形態における参照点Refの他の例を示す模式図である。 本発明の実施形態の適用例を示す模式図である。
次に、本発明の実施形態について図面を参照して詳細に説明する。
<実施形態の構成>
まず、図1を参照して、本実施形態であるロボット制御システム1全体の構成について説明する。図1に示すようにロボット制御システム1は、プログラミング装置10、ロボット20及びカメラ30を備える。
プログラミング装置10とロボット20は相互に通信可能に接続されている。また、プログラミング装置10とカメラ30も相互に通信可能に接続されている。これらの接続は、信号線を介した有線接続であってもよく、無線接続であってもよい。また、例えば、LAN(Local Area Network)やインターネット等のネットワークを介した接続であってもよい。なお、プログラミング装置10、ロボット20及びカメラ30は、かかる接続によって相互に通信を行うための通信部(図示を省略する。)を備えている。
プログラミング装置10は、ロボット20の動作を制御するための装置である。プログラミング装置10はロボット20の動作を制御するための種々の機能ブロックを備えている。なお、プログラミング装置10が備える各機能ブロックの詳細については後述する。プログラミング装置10は、一般的なプログラミング装置(「ロボットコントローラ」とも呼ばれる。)に、本実施形態特有の機能を追加することにより実現することができる。
ロボット20は、プログラミング装置10の制御に基づいて動作するロボットである。ロボット20は、プログラミング装置10の制御に基づいてアームやエンドエフェクタといった可動部を駆動するための駆動制御部21を備える。ロボット20は、例えば、自動車や電子部品を生産する工場で使用される一般的な産業用ロボットにより実現することができる。
カメラ30は、ロボット20周辺を撮像するカメラである。カメラ30は、撮像を行うための撮像部31を備えている。カメラ30はCCD(Charge-Coupled Device)カメラやCMOS(Complementary Metal Oxide Semiconductor)カメラ等の一般的なカメラにより実現することができる。
本実施形態では、以上の構成によって、プログラミング装置10がロボット20を制御するための動作プログラムを生成する。つまり、本実施形態では、ユーザによるティーチング・プレイバックを行うことなく、動作プログラムを生成することが可能となる。
また、本実施形態では、プログラミング装置10が生成した動作プログラムによりロボット20の動作を制御する。この際に、カメラ30から取得したロボット20周辺の画像に基づいて、ロボットの動作プログラムに含まれる教示点の位置情報を補正する。これにより、本実施形態では、ユーザによるティーチング・プレイバックを行うことなく、ロボット20の動作の精度を高めることが可能となる。
このように本実施形態によれば、ユーザによるティーチング・プレイバックを要することなくロボット20の立ち上げ作業を行うことができる。つまり、本実施形態は、従来に比して、より簡便にロボットの立ち上げ作業を行うことができる、という効果を奏する。
<プログラミング装置10が備える機能ブロック>
次に、プログラミング装置10が備える機能ブロックについて説明をする。図1に示すようにプログラミング装置10は、入力部11、出力部12、プログラム生成部13、ロボット制御部14、移動先ポイント補正部15及び画像取得部16を含んで構成される。
入力部11は、ユーザからの各種の操作を受け付けたり、ユーザからの作業手順書の内容の入力を受け付けたりする部分である。ここで、作業手順書の内容とはロボット20が行うべき複数の所定の作業の内容と、この複数の所定の作業を行う順序とを示すものである。
作業手順書の内容の入力形式は特に限定されない。例えば、プログラミング言語に沿った形式で作業手順書の内容が入力されてもよいが、ユーザが容易に理解できる形式で作業手順書の内容が入力されるとよい。例えば後述するようにフローチャートの形式で入力されるようにするとよい。
入力された作業手順書の内容は、プログラム生成部13に対して出力される。入力部11は、例えば、キーボードやマウス、タッチパネルといった入力装置により実現される。
出力部12は、ユーザが各種の操作を行ったり、ユーザが作業手順書の内容を入力したりするためのユーザインタフェースを出力する部分である。出力部12は、他にも、ロボットの駆動状況を示す情報等の、ユーザインタフェース以外の他の情報を出力してもよい。出力部12は、例えば、液晶ディスプレイ等の表示装置により実現される。
プログラム生成部13は、オフラインプログラミングを行うことにより、ロボット20を動作させるための動作プログラムを生成する部分である。
プログラム生成部13は、ユーザが作業手順書の内容を入力するためのユーザインタフェースを出力部12から出力する。
そして、プログラム生成部13は、ユーザインタフェースを参照したユーザから入力部11が受け付けた作業手順書の内容に基づいて、動作プログラムを生成する。生成した動作プログラムはロボット制御部14に対して出力される。
動作プログラムの生成は、例えば、「特開平9−167007号公報」に開示の技術等を利用することにより行うことができる。
ただし、プログラム生成部13は、このような一般的な技術とは一部異なった方法にて動作プログラムを生成する。
具体的には、プログラム生成部13は、動作プログラムの生成に先立って、ロボット20の動作において経由するポイントの候補を多数作成しておく。
また、プログラム生成部13は、作業手順書の内容に基づいて、ロボット20が実際に経由する教示点(以下、適宜「ポイント」と呼ぶ。)を決定する際に比較的精度の要求されるポイントと、比較的精度の要求されないポイントの2つに大別する。
そして、前者の比較的精度の要求されるにポイントについては予め作成しておいたポイントの候補から取捨選択して繋ぎ合わせる。また、後者の比較的精度の要求されないポイントについては、予め作成したポイントの候補から選択するのではなく、適切と思われるポイントを任意に決定し、中継ポイントとして挿入する。
これにより、比較的精度の要求される移動先ポイントについては、その要求精度を満たすことができる。また、そうでないポイントについては移動先ポイントの間を滑らかに繋ぐポイントを任意に選択することができる。
なお、プログラム生成部13による動作プログラムの生成の詳細な内容については、図2〜図4を参照して後述する。
ロボット制御部14は、プログラム生成部13から入力された動作プログラムに基づいてロボット20の動作を制御する部分である。具体的には、ロボット制御部14は、動作プログラムに基づいてロボット20の動作を制御するための信号を生成し、生成した信号をロボット20が備える駆動制御部21に対して出力する。駆動制御部21は、この信号に応じてアームやエンドエフェクタといった可動部を駆動するための制御を行う。これにより、ロボット20は作業手順書の内容に沿って、所定の作業を、所定の順序で行うことができる。
画像取得部16は、上記のようにして作業手順書の内容に沿った動作を行うロボット20周辺を撮像した撮像画像をカメラ30から取得する。なお、上述したように、撮像はカメラ30が備える撮像部31により行われる。画像取得部16は、取得した撮像画像を移動先ポイント補正部15に対して出力する。
移動先ポイント補正部15は、カメラ30から取得したロボット20周辺の撮像画像に基づいて、ロボットの動作プログラムに含まれる経由すべきポイントの中でも、比較的精度の要求されるポイントについての位置情報を補正する。そして補正後の位置情報をロボット制御部14に対して出力する。ロボット制御部14は動作プログラムを補正後の位置情報に基づいて補正し、補正後の動作プログラムによりロボット20の動作を制御する。
なお、移動先ポイント補正部15による位置情報の補正の詳細な内容は、図5〜図9を参照して後述する。
以上説明した各機能ブロックが協働することにより、動作プログラムを生成すると共に、ユーザによる動作プログラムの調整を要さずに、精度高くロボット20の動作を制御することが可能となる。
次に、プログラミング装置10が備えるこれらの機能ブロックの実現方法について説明をする。プログラミング装置10は、CPU(Central Processing Unit)等の演算処理装置を備える。また、プログラミング装置10は、各種の制御用プログラムを格納したROM(Read Only Memory)やHDD(Hard Disk Drive)等の補助記憶装置や、演算処理装置がプログラムを実行する上で一時的に必要とされるデータを格納するためのRAM(Random Access Memory)といった主記憶装置を備える。
そして、プログラミング装置10において、演算処理装置が補助記憶装置からOSやアプリケーションソフトウェアを読み込み、読み込んだOSやアプリケーションソフトウェアを主記憶装置に展開させながら、これらのOSやアプリケーションソフトウェアに基づいた演算処理を行なう。また、この演算結果に基づいて、プログラミング装置10が備える各ハードウェアを制御する。これにより、上述した機能ブロックによる処理は実現される。つまり、プログラミング装置10は、ハードウェアとソフトウェアが協働することにより実現することができる。
<動作プログラムの生成>
次に、プログラム生成部13による動作プログラムの生成の詳細について説明をする。まず、動作プログラムの作成の前提となるロボット20の動作について説明する。ロボット20が動作をして何らかの作業を行うということは、ロボット20がその周辺の物品に対して接触/非接触を問わず何らかの作用を及ぼすこと、と捉えることができる。
その作用とは、掴む(例えば、物品の把持)、開放する(例えば、保持した物品を何処かに置く)、挟持する(スポット溶接のように2枚の板を挟む等)、回転させる(例えば、ねじを締めることや、物品同士を嵌め合せたりする等)、相対移動をする(例えば、切削具やレーザ光で物品を切断することや、物品同士を溶接する等)等を含む。
この作用を及ぼす瞬間、作用を及ぼす対象となる物品に対して、ロボット20のエンドエフェクタを所定の相対位置に位置決めする動作を行う必要がある。この所定の相対位置に位置決めする動作について、図2に示す模式化した例を参照して説明する。
図2に示すように、本例では、ロボット20の周辺に、2つの独立した物品Aと物品Bが存在する。また、物品Aの上には物品Cが置かれている。そして、ロボット20は、図中に破線で示すような軌跡で移動しながら、物品Aの上に置かれている物品Cを把持して持ち上げ、持ち上げた物品CをBの凹部に組み付ける。この図2の例は模式化されてはいるが、ロボット20によって行われる何らかの作用は、この図2の例を拡張したりバリエーションを持たせたりしたものと言える。
このような動作を行うために、ロボット20は、ベース部22、第1関節部23、第1アーム24、第2関節部25、第2アーム26及びグリッパ27を備えている。本例におけるロボット20は、ベース部22に取り付けられた第1アーム24や第2アーム26と、これらのアームを動かすための関節部である第1関節部23や第2関節部25を含む多関節ロボットとして構成される。
ロボット20は、ベース部22を鉛直方向の軸を中心に回転させたり、第1関節部23や第2関節部25によって、第1アーム24や第2アーム26を移動させたり、回転させたりすることにより、第2アーム26の手首部に取り付けられたエンドエフェクタであるグリッパ27の位置および姿勢を自由に変化させることができる。
これにより、ロボット20は、グリッパ27により把持されたワーク(例えば、物品C)を所望の位置および姿勢に配置することができる。
この場合の、ベース部22、第1関節部23、第2関節部25及びグリッパ27等の駆動は、図1に示す駆動制御部21による制御により実現される。なお、ロボット20のような多関節ロボットの構造や制御については、当業者によく知られているので、これ以上の詳細な説明は省略する。
このような構成を一例とするロボット20を駆動させて、図2を参照して説明した動きを実現する場合、ロボット20のグリッパ27が経由するポイントは、例えば、図3に示すポイントP〜ポイントPになる。ここで、本実施形態は、これらのポイントを大きく2種類に分ける。
1つは物品Aや物品Bに対して、相対的に位置が定まっているもので、比較的高精度が要求されるものである。以下では、このようなポイントを「移動先ポイント」と呼ぶ。本例であれば、ポイントP、ポイントP、ポイントPが移動先ポイントに相当する。
もう1つはポイントP、ポイントP、ポイントP等に到達するために通過するポイントであって、ロボット20の各部が周囲と干渉しなければよい程度の低い位置精度で構わないポイントである。以下では、このようなポイントを「中継ポイント」と呼ぶ。なお、この中継ポイントは、一般に、エアカットポイント等の名称で呼ばれることもある。本例であれば、ポイントP、ポイントP、ポイントP、ポイントP、ポイントPが中継ポイントに相当する。
本実施形態では、ユーザが、入力部11を利用して作業手順書の内容に対応する作業手順をフローチャートの形式で入力する。通常、作業手順の内容はロボット20が物品に対して比較的高精度な位置決めを伴って何らかの作用を及ぼす時の、その作用の詳細の列挙となる。例えば、図3の作業手順をフローチャートの形式で表す場合、図4に示すフローチャートのようになる。
ここで図4における、ステップA11は、物品A上の物品Cの置いてある位置へ移動しグリッパを閉じる、という作業手順となる。これはロボット20の動作としては、グリッパ27をポイントPに移動し、グリッパ27を閉じるということである。
また、ステップA12は、物品B上の物品C組付け開始位置へ移動、という作業手順となる。これはロボット20の動作としては、グリッパ27を閉じたままグリッパ27をポイントPに移動するということである。
ステップA13は、物品B上の物品Cを挿入位置へ移動しグリッパ27を開放する、という作業手順となる。これはロボット20の動作としては、グリッパ27をポイントPに移動し、グリッパ27を開放するということである。
これに対して、通常は、特別な必要がない限りはポイントP2、ポイントP3、ポイントP5、ポイントP6に対応する記述は省略される。
そして、本実施形態では、予め物品Aに対してのポイントPの位置を定義し、物品Bに対してのポイントP、ポイントPの位置を定義する。また、それらと共に各ポイントにおける物品Aあるいは物品Bに対するグリッパ27の姿勢を定義して記憶しておく。
他にも例えば、ポイントPよりも高い位置にあるポイントP10や、ポイントP10よりも更に高い位置あるポイントP11の物品Bに対しての位置について定義して、それらと共に各ポイントにおける物品Bに対するグリッパ27の姿勢を定義して記憶しておく。
このようなポイントや姿勢の定義を多数準備して記憶しておくことで、それらが動作プログラムを構成する要素、すなわち、移動先ポイントとなる。
そして、例えば図4のようなフローチャートの形式で作業手順書が指定された場合に、各ステップに対応する定義済みのポイントを抽出する。
例えば、物品Cの大きさ等に基づいて、ポイントP、ポイントP10、ポイントP11の何れかを選択して、ステップA12に対応する定義済みのポイントとして抽出する。例えば、物品Cが大きいため、ポイントPに物品Cを移動すると、物品Cと物品Bが接触してしまうような場合には、ポイントPではなく、ポイントP10やポイントP11を選択する。本例では、ポイントPをステップA12に対応する定義済みのポイントとして抽出する。
そして、抽出した各ステップに対応する定義済みのポイントを繋げれば、必要最小限の動作プログラムが生成されることになる。
ここで、記憶しておくのは、物品Aや物品Bに対する相対的なポイントP、ポイントP、ポイントP等の位置やグリッパ27の姿勢の情報である。ロボット20に対する物品Aや物品Bの配置を変更した場合には、これに応じてロボット20に対するポイントP、ポイントP、ポイントP等の実際の位置姿勢の数値は変化するが、前記記憶される物品Aや物品Bに対する相対的なポイントP、ポイントP、ポイントP等の位置やグリッパ27の姿勢の情報が変わることはない。
具体的には、上記の移動先ポイントは、下記の[表1]に示すような組み合わせで記憶される。
Figure 0006538751
なお、上記のように移動先ポイントの羅列だけでは、実際に機能する動作プログラムとはならない。そこで、移動先ポイントの間を滑らかに繋ぐような、中継ポイントとして、ポイントP2、ポイントP3、ポイントP5及びポイントP6を適宜挿入する。中継ポイントは、移動の過程においてロボット20の各部が周囲と干渉して衝突しないように選択される。このような中継ポイントの挿入は、例えば、「特開2015−160277号公報」に開示の技術等を利用することにより実現できる。
以上説明したように、本実施形態によれば、プログラム生成部13によるオフラインプログラミングによって、作業手順の各ステップに対応する比較的精度を必要とする移動先ポイントが連ねる形で選択されると共に、移動先ポイント間の中継ポイントは適宜挿入される。これにより、ユーザからフローチャート等の形式で入力された作業手順を実行するための動作プログラムを自動生成することが可能となる。
また、移動先ポイントは複数用意されており、中継ポイントは任意に選択することが可能なことから、様々な作業手順に汎用的に適用して、動作プログラムを生成することが可能となる。
<動作プログラムの補正>
次に、移動先ポイント補正部15により行われる動作プログラムの補正の詳細について説明をする。以下では、物品Bと相対関係がある、ポイントP及びポイントPについての補正を例にとって説明する。
物品Bに物品Cを組み付けるという作業を行うためには、図5に示すような組み付け開始点のポイントPと、物品Cを挿入し終えた下端としてのポイントPの2つが移動先ポイントとして予め定義され、記憶される。2つのポイントの位置は、物品Bに対する相対位置が一定であり、物品Bと一緒に付いて動くような関係にある。従ってロボット20に対して物品Bがどこに存在するかを知ることによって、実際のポイントP、ポイントPという移動先を確定することができる。
そして、本実施形態では「ロボット20に対して物品Bがどこに存在するかを知る」ために視覚センサとしてカメラ30を利用する。
具体的には、図6に示すように、物品Bのような相対的な移動先ポイントが定義される物品に、カメラ30で捉えることが出来るような参照点Refを事前に配置する。例えば、参照点Refとして、物品Bの上にカメラ30が捉えることが出来るような視覚マークシールを貼り付ける。また、プログラム生成部13において動作プログラムを生成するのに用いる仮想空間における物品Bの同じ場所にも参照点Refを定義する。
そして図7に示すように、ロボット20における第2アーム26先の端部等の適当な箇所にカメラ30を固定設置し、このカメラ30で撮像した撮像画像を元に参照点Refとカメラ30の相対関係が所定の状態になるようにロボット20を制御する。
参照点Refとカメラ30との相対関係が所定の状態になるということは、結果的に参照点Refと、ロボット20のグリッパ27の相対関係もある一定値になるということを意味する。このような処理は、例えば「特許第5850962号明細書」に開示の技術を利用することにより実現できる。
物品Bに対して図8に示すように参照点Refが定義されると、例えば参照点RefとポイントPの相対関係(図中のC)が既知となる。従って、上記の[表1]に既出の移動先ポイントを列挙した、下記の[表2]を作成することができる。
Figure 0006538751
なお、図7に示したように、参照点とカメラの相対関係が所定の状態になる方法を用いる場合、現場の実際のシステムにおいて最初に1回だけ、この「参照点Refとカメラ30の相対関係が所定の状態」についてのデータを取得するために一種のキャリブレーション作業を行う必要がある。
このキャリブレーション作業について、以下説明する。図9は、上記の「参照点Refとカメラ30の相対関係が所定の状態」が実現された状態を示す図である。ここで、図9に図示する、U、T及びSはそれぞれ以下を意味する。
U:ロボット20(の基準位置)に対するグリッパ27の位置姿勢情報
(これは一般的に、ロボットコントローラと呼ばれるものにおいてロボット先端部の現在位置を表すデータとして随時取得可能である)
T:グリッパ27とカメラ30の相対関係情報 (未知数)
S:カメラ30と参照点Refの相対関係情報 (未知数)
なお、これまでに登場したポイントP〜ポイントP、C〜C、S、T、及びU等は、以下の4×4で表す同次変換行列で表される位置姿勢情報に相当する。
Figure 0006538751
キャリブレーション時の具体的な動作としては、まず図9の状態において、Uの値を取得する。次に図6に示すポイントP(又はポイントP)に実際にロボット20を位置決めして、その時のロボット20の基準位置に対するグリッパ27の位置姿勢情報を取得する。つまり、ポイントPの値を取得する。こうして取得された情報は、次の数式を満たす。なお、Inv(X)は同次変換行列Xの逆行列を意味する。
・Inv(C)=U・T・S
この数式から未知数T・Sが求められる。これをQと表す。
T・S=Inv(U)・P・Inv(C)≡Q
以後、任意の移動先ポイント(任意の物品Xに対して定義された移動先ポイント、ここではそれをCと表記する)にロボット20を移動させたい場合は、先ずカメラ30を用いてその物品上の参照点(=RefX)に対して図7のような状態を作り出し、その時のグリッパ27の位置姿勢Uを取得する。
すると次の関係式
・Inv(C)=U・T・S=U・Q
が成り立つことから
=U・Q・C
を導くことができる。
そして、この導いた式に基づいて、動作プログラムの位置情報を補正することによりロボット20をPに移動させれば、現場の実際のロボット20は望ましい位置に移動する。
以上説明したように、本実施形態によれば、実際にロボット20が設置されている現場で、事前に上述のようなキャリブレーション作業を済ませておくことにより、第2アーム26の先端部に固定されたカメラ30で周辺物品の参照点Refが自動計測され、これに基づいてロボット制御部14が補正を行うことから、作業手順書に対応したロボット20の動作が実現される。
<本実施形態の動作>
次に、本実施形態の動作について図10のフローチャートを参照して説明をする。
ステップS11において、入力部11がユーザから作業手順書の内容の入力を受け付ける。
ステップS12において、プログラム生成部13がステップS11にて受け付けた作業手順書に基づいて動作プログラムを生成する。具体的な生成方法は、<動作プログラムの生成>との項目にて上述した通りである。
ステップS13において、ロボット制御部14がステップS12にて生成された動作プログラムに基づいて制御用の信号を生成する。そして、ロボット制御部14が生成した制御用の信号を駆動制御部21に対して出力する。駆動制御部21は、この制御用の信号に基づいてロボット20の可動部を駆動する。これにより、ロボット20は、動作プログラムに応じた動作を開始する。
ステップS14において、ロボット制御部14は何らかのポイント(教示点)への移動を行う際に、グリッパ27が何れかの移動先ポイントの近傍に移動したか否かを判定する。移動先ポイントの近傍に移動していない場合には、ステップS14においてNoと判定され、処理はステップS15に進む。そして、ステップS15において、グリッパ27は所定の中継ポイントに移動する。
ステップS16において、ロボット制御部14は、動作プログラムに含まれる全ての作業手順が終了したか否かを判定する。
未だ全ての作業手順が終了していない場合は、ステップS16においてNoと判定され、処理はステップS14に戻る。そして、ステップS14から処理が繰り返される。
一方で、全ての作業手順が終了した場合は、ステップS16においてYesと判定され、処理は終了する。
グリッパ27が何れかの移動先ポイントの近傍に移動した場合、ステップS14においてYesと判定され、処理はステップS17に進む。
ステップS17において、移動先ポイント補正部15は、画像取得部16を介して撮像部31が撮像した、移動先ポイントの近傍の撮像画像を取得する。
ステップS18において、移動先ポイント補正部15がステップS17において取得した撮像画像に基づいて、参照点Refとカメラの相対関係が所定の状態になったか否かを判定する。
参照点Refとカメラの相対関係が所定の状態になっていない場合は、ステップS18においてNoと判定され、ステップS19にてロボットを駆動してカメラの位置を調整した上で、処理はステップS17に戻る。そして、ステップS18の判定が再度行われる。
参照点Refとカメラの相対関係が所定の状態になった場合は、ステップS18においてYesと判定され、処理はステップS20に進む。
ステップS20において、移動先ポイント補正部15は、ステップS18においてYesと判定された時点のグリッパ27の位置姿勢情報(前記U)と、参照点Refに対して定義された移動先ポイントの情報(前記C)と、上述のキャリブレーションによって予め求めた相対関係の情報(前記Q)とに基づいて動作プログラムに含まれる位置情報について補正を行う。具体的な補正方法は、<動作プログラムの補正>との項目にて上述した通りである。これにより、グリッパ27は正確に移動先ポイントに移動することができる。
ステップS16において、ロボット制御部14は、動作プログラムに含まれる全ての作業手順が終了したか否かを判定する。
未だ全ての作業手順が終了していない場合は、ステップS16においてNoと判定され、処理はステップS14に戻る。そして、ステップS14から処理が繰り返される。
一方で、全ての作業手順が終了した場合は、ステップS16においてYesと判定され、処理は終了する。
以後は、この処理により補正された動作プログラムを利用してプログラミング装置10がロボット20を制御することにより、作業手順書に応じた所定の作業手順をロボット20に繰り返し行わせることが可能となる。
以上説明した本実施形態によれば、ユーザは作業手順書の内容を入力するのみで動作プログラムを生成することが可能となる。また、その後は、ロボット制御部14が自動的に補正を行うことから、ロボット20の動作プログラムが高い精度で稼働するようになる。
つまり、ユーザがティーチング・プレイバックにより動作プログラムを調整する手間を省くことができる。
また、本実施形態によれば、中継ポイントについては、移動先ポイント補正部15による参照点Refに対応する視覚マークを利用した補正処理を要さない。そのため、移動先ポイント及び中継ポイントの全てのポイントについて視覚マークを設置する場合と比べて、視覚マークを設置する数を減らすことができる。つまり、ユーザによる視覚マークの設置の手間も省くことができる。
このように、本実施形態では、オフラインプログラムから始まる一連の工程に対して人手の介入が非常に少なくて済む。すなわち、本実施形態によれば、従来に比して、より簡便にロボットの立ち上げ作業を行うことが可能となる。
なお、上記のロボット制御システムに含まれる各装置のそれぞれは、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。また、上記のロボット制御システムに含まれる各装置のそれぞれが協働することにより行なわれるロボット制御方法も、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
例えば、プログラミング装置10の機能の一部をパーソナルコンピュータ等で実現するようにしてもよい。つまり、ロボットコントローラとパーソナルコンピュータとでプログラミング装置10を実現するようにしてもよい。
また、例えば、以下の<変形例>のような変形を加えるようにしてもよい。
<変形例>
上述した実施形態では、<動作プログラムの補正>との項目で、図6〜図9を参照して説明したように、物品Aや物品Bの上に、カメラ30で捉えることが出来るような参照点Refを事前に配置していた。例えば、参照点Refとして、物品Aや物品Bの上にカメラ30が捉えることが出来るような視覚マークをそれぞれシール等として貼り付けていた。
また、これら参照点Refと、これらに対応するデータとを表2に示すように対応付けて記憶しておき、このデータを利用して動作プログラムの補正を行っていた。
ここで、物品Aに対応する参照点(以下「参照点Ref」とする。)と、物品Bに対応する参照点(以下「参照点RefB」とする。)がある程度離れた位置にあるような場合には、動作プログラムに基づいて動作するロボット20に設置されたカメラ30は、参照点Refを撮像した後に移動して、更に参照点RefBを撮像する。そのため、移動先ポイント補正部15は、先に撮像された参照点を参照点Refであると認識して補正を行った後に、次に撮像された参照点を参照点RefBであると認識して補正を行うことができる。
しかしながら、参照点Refと参照点RefBが近傍に設置されているような場合や、カメラ30から同方向に設置されている場合には、例えば、参照点Refと参照点RefBが同時に撮像されることがある。このように、参照点Refと参照点RefBが同時に撮像されたような場合、移動先ポイント補正部15は、2つの参照点Refを区別することができない。
そこで、本変形例では、参照点Refと参照点RefBに対応する視覚マークそれぞれに、参照点Refと参照点RefBを識別するための追加情報を加える。この点について図11A及び図11Bを参照して説明する。
まず、図11Aには、参照点Refを示す視覚マークの例であって、上記のような追加情報を加えていない視覚マークの例を示す。移動先ポイント補正部15は、図11Aの例のような視覚マークを撮像データから取得し、これにより、参照点Refの位置を特定することができる。
一方で、図11Bには、参照点Refを示す視覚マークの例であって、上記のような追加情報を加えた視覚マークの例を示す。本例では、追加情報として、文字等の論理情報を表す2次元コードを視覚マークに加えている。移動先ポイント補正部15は、図11Bの例のような視覚マークを撮像データから取得し、これにより、参照点Refの位置を特定するのみならず、二次元コードを解析することによって文字等の論理情報を取得することができる。そして、この論理情報を、例えば、参照点Refと参照点RefBを識別するための識別情報として利用する。この場合、表2に相当するデータに、この識別情報と各参照点Refの関係も対応付けて含ませておき記憶しておく。
これにより、移動先ポイント補正部15は、現在カメラ30で撮像された参照点Refの
視覚マークシールの像が、何れの物品に対応する参照点Refであるのかを識別することができる。つまり、本変形例によれば、カメラ30で捉えている物品が何であるかを確実に特定することができる、という効果を奏する。
なお、本変形例を更に変形して、論理情報を、二次元コード以外の態様で追加するようにしてもよい。また、論理情報に、表2における移動先ポイント情報等を含ませておき、これを移動先ポイント補正部15が取得するようにしてもよい。
<本実施形態の適用例>
次に、図12を参照して、本実施形態の適用例について説明をする。図12には、ロボット20と、ステーション50a〜ステーション50fと、走行軸40とを図示する。ステーション50a〜ステーション50fには、複数の物品(例えば、ステーション50aであれば物品a1〜物品a5)が配置されている。
そして、ロボット20は、走行軸40に沿って移動することにより、各ステーション50の各物品まで移動することができ、各ステーション50において所定の作業を行う。このような状況下において、ロボット20が、同様の物品が配置された複数のステーション50のそれぞれにおいて、同様の作業を行う場合がある。
このような場合に、各ステーション50それぞれの作業について、それぞれの作業に対応した動作プログラムを生成することが考えられる。しかしながら、各ステーション50では、同様の作業を行うのであるから、同様の動作プログラムをいくつも生成することは無駄である。そこで、一度だけユーザから作業手順書の内容の入力を受け付ける。そして、この入力に基づいて動作プログラムを生成し、この動作プログラムをひな形としてコピーし、各ステーション50の作業に用いることが考えられる。
しかしながら、ステーション50a〜50fの構成は基本的に同じではあるが、各ステーションにおいて、各物品を高精度に同一配置にするのは現実的に困難である。そのため、厳密に言えばロボット20に対する各物品の相対位置は同一ではない。従って、同一のロボット動作プログラムをそのまま各ステーション50に適用することはできない。
そこで各ステーション50のそれぞれにおいて、カメラ30による参照点Refの計測と、参照点Refとカメラの相対関係が所定の状態になるようなロボット20の制御を行う。これにより、各ステーション50それぞれにおいて、動作プログラムの移動位置を補正することができ、最終的に各ステーション50に適した別々の動作プログラムが完成することになる。
ここで、上述したように、動作プログラムをひな形としてコピーするという方法を利用すれば、ユーザが動作プログラムを作成するために作業手順書の内容を入力する回数は一度だけでよい。つまり、ステーション50の数が多数あるからといってユーザの手間は増えることはないので、効率的にロボットシステムの立ち上げができることが可能となる。
また、他にもロボット20の周辺に配置される物品の位置が頻繁に変わるような状況であっても、物品の位置が変わる都度、カメラ30による参照点Refの計測と、参照点Refとカメラの相対関係が所定の状態になるようなロボット20の制御を行うことにより、一度作成した動作プログラムを繰り返し利用することが可能となる。
<本実施形態の他の技術との比較>
次に、本実施形態の特徴について、一般的な教示方法との比較を行いながら説明する。
ロボットに何らかの意図を持った作業を教え込む操作・作業を(ロボットの)教示と呼ぶ。ここで教示を行う方法としては、例えば以下の(1)〜(3)のような複数の方法がある。
(1) 最も原始的なものは、ロボットをジョグ操作しながらのティーチング・プレイバックである。
ロボットの基本的な機能として、教示操作盤を使ってマニュアル操作によって所定の関節軸を正負方向に移動させたり、仮想的な直交座標系空間内でロボットのエンドエフェクタをX+/−方向、Y+/−方向、Z+/−方向に移動させたり、あるいは所定のルールでエンドエフェクタの姿勢を変更したりするジョグ操作と呼ばれるものがある。これを使って、ロボットが置かれた現場で、ロボットを適当に移動させて移動先位置を記憶させ、移動と記憶を繰り返す。一連のロボット動作とその記憶が終わった後、先程記憶させた内容を再生する。
(2) 他の方法として、ロボットをハンドガイド(ハンドガイダンス)操作しながらのティーチング・プレイバックがある。
教示操作盤を使ったジョグ操作の代わりに、ロボットのエンドエフェクタやロボット本体をオペレータが直接押したり引いたりして移動させる。エンドエフェクタ近傍やロボットの関節軸などに力センサやトルクセンサなどが組み込まれていて、ロボットが受ける外力を検出して、あたかもオペレータがロボットを誘導しているかのようにロボットを移動制御する。このような方法でロボットを移動させた上で移動先位置を記憶させる。これも一種のティーチング・プレイバックである。
(3) 更に他の方法として、オフラインプログラミングがある。
コンピュータの上で一種のシミュレーションシステムを構築し、そこにロボットが使われる環境を仮想的に再現した仮想空間と、そのロボットに対応する仮想ロボットを定義・設定し、このシミュレーションシステム上でロボットの動作プログラムを作成していく。
上述した(1)や(2)の方法は、実際の現場で実ロボットを使用してロボットの動作プログラムを作成していくのだが、オフラインプログラミングはそれら(実物)を使わずに動作プログラムの作成が可能である。そのため、実物が無い段階からロボットの動作プログラムの作成ができることや、仮想空間の内容(ロボットや周辺機器の種類や設置場所など)を比較的容易に変更できることにより、プログラミングの試行錯誤がしやすいという長所がある。これに対して(1)や(2)の方法は、そういった試行錯誤が比較的困難である。
このように、オフラインプログラムには優位性があるが、オフラインプログラミングで作成されたロボットの動作プログラムは、実際の現場の実際のロボットにそのまま適用できるわけではなく、通常何らかの調整作業が必要になるのが短所と言える。
この「何らかの調整作業」が必要になる主な理由は次の(い)及び(ろ)の2つである。
(い) コンピュータ上のシミュレーションシステムの上で動作するロボットは、動作指令通りに正確に動作する。具体的には、ロボットの座標系で(X,Y,Z)=(500.0,−50.0,150.0)に移動するように動作指令を与えれば、エンドエフェクタの所定の箇所が正しくその位置に到達する。
一方、実際のロボットは、その機構部を構成する部品の寸法誤差、組立誤差、ロボットを動作させる制御上の位置決め誤差、重力の影響による機構部品の歪みなど様々な要因が重なり合って、誤差を含んだ位置に到達する。
(ろ) ロボットは通常、エンドエフェクタで把持している物品Aを作業台の上に位置決めされている物品Bに組み付けるといったように、周辺装置や周辺物に作用を及ぼす(周辺装置等と称することにする)。ここではロボットと周辺装置等の相対位置関係に留意する必要がある。コンピュータ上の仮想空間内でのこれらの相対位置関係通りに現場のロボットや周辺機器等を正確に配置するのは容易ではなく、例えば数十mm程度の誤差を伴うことは往々にしてある。
こうした誤差に対処して、最終的にロボットを適切な位置に到達させるようにするのが上述した「何らかの調整作業」である。これは比較的大変な作業であり、オフラインプログラミングの普及の足枷になっているとも考えられる。この調整作業を行う方法としては、以下の(a)〜(d)のような方法が考えられる。
(a) 最も単純な方法としては、オフラインプログラミングによって作成されたロボット動作プログラムを、実ロボットにて低速度で再生しながら、教示点毎にロボットの到達位置を確認し、それが適切でない場合は上記の(1)や(2)と同じ方法でロボットの到達位置を微調整して、教示位置のデータを更新するというものが挙げられる。
動作プログラムが何も無い状態から教示作業を開始する上記の(1)や(2)の方法に比べれば、作業全体の手間は削減できるかもしれないが、教示点の数が多ければ微調整の手間も膨大になる。また微調整前の教示点の内容次第ではロボットが周辺装置等に衝突する可能性もある。例えば、スポット溶接ガンの先端が車体パネルにめり込む等の可能性がある。
(b) 上記の(い)や(ろ)といった要因で発生する誤差量を事前に同定して、それらを補償するという方法が挙げられる。
先ず(い)の誤差に対しては、ロボットにエンドエフェクタを装着した状態で様々な動きをさせたところを、外部に設置した3次元測定器で計測する。この方法でロボットへの動作指令と3次元測定器で計測された実際のロボット到達位置の組み合わせを多数取得し、これら多数のデータを数学的に解析して機構部の誤差量や重力による歪み量を補正するための幾何学計算式を導出する。これに基づいてロボットの動作制御に所定の補正を加えることで、ロボットの絶対位置決め精度を向上させる。なお、この方法は必ずしも実際の現場で行う必要はなく、別の場所でロボット単体に対して事前に行っておくことが可能である。
他方(ろ)の誤差に対しては、現場にロボットと周辺装置等を配置した後で、外部に設置した3次元測定器でロボット機構部上の複数の所定点と周辺装置等の上の複数の所定点の3次元位置をそれぞれ計測し、これらからロボットと周辺装置等の相対位置関係を導出する。この相対関係の情報をコンピュータ上のシミュレーション装置へフィードバックして、仮想空間内のロボットと周辺装置等の配置を変更(すなわち現場の配置に合わせる)し、その上でロボットの動作プログラムを再生成して、それを現場のロボットに適用する。
上記(い)及び(ろ)に対応する2つの方法を組み合わせることで誤差を抑えた状態でロボット動作プログラムを実行することができるようになる。しかしながら、これを達成するために必要とされる知識や技能のレベルは高く、また手間も相当掛かると言わざるをえない。
(c) 上記(b)の方法を、(い)の誤差を低減させる前半と(ろ)の誤差を低減させる後半に分けて考えた場合、現場に3次元測定器等の機材を持ち込んで作業をする必要があることや、現場は往々にして様々な物が混在しており空間的な制約が大きいことから、後半の方が手間の面で大変である。
そこで後半部のみを簡略化することが考えられる。具体的には、「特許第3733364号明細書」に開示の技術を利用する。この技術は既存のロボットシステムを別の場所に移設する時の手間を削減する方法であるが応用することが可能である。
具体的には、「移設前のロボットシステム=仮想空間内のロボットシステム」であるとして、仮想空間内の周辺装置等の所定箇所に少なくとも3箇所の基準マークを定義して、仮想ロボットに対するこれら基準マークの位置を事前に求めておき、「移設後のロボットシステム=実際の現場のロボットシステム」であるとして、仮想空間内で定義した基準マークの位置に相当する実際の周辺装置等の上の位置に実際の基準マークを設け、これを実際のロボットとカメラで計測するようにすればよい。
この方法は、1つの剛体の上に多数の教示点が存在しているようなケースにおいて、調整作業の手間を削減する効果が大きい。例えば、車体部品に対するスポット溶接などが典型的な例となる。
逆に、複数の周辺装置等が別個にロボットの周辺に配置されるようなケースでは、それぞれで少なくとも3箇所の基準マークを設けて計測作業を行わなければならず、手間の削減効果が低下する。さらに各周辺装置上の教示点数が少ないケースになると削減効果はさらに低下する。例えば周辺装置等が10個あり、それぞれで教示点が1点ずつしかないようなケースだと、合計10点の教示点の自動調整のために基準マークを3×10=30箇所に設けて、それらをカメラで計測しなければならなくなるので、返って手間が増大してしまうことになる。
(d)「特開平7−325611号公報」に開示の技術を利用することも考えられる。この技術では、スポット溶接の打点毎にエンドエフェクタ先端に装着したカメラでマークを計測し、ロボットの位置を調整した上で教示位置のデータを更新する。上記(a)においてマニュアル操作で教示点の修正をしている部分を、カメラを利用して自動化したものと捉えることができる。カメラを使うことでスポット溶接打点とカメラの間にある程度の距離が確保され、上記(a)に内在する衝突の危険性は低下する。また、オペレータの手作業の手間は削減されるが、全ての打点をカメラで調整するため調整のための総時間は短くはない。
以上様々な技術について説明した。ここで上述したように、オフラインプログラミングによって作成された動作プログラムにおけるロボットの教示点は、現場の実際のロボットでは教示点の調整作業が必要になる。
そのために、上述した(a)〜(d)のような方法で調整作業を行う。ここで、通常、調整作業はロボットシステムの立ち上げ時に1回だけ行って、後は完成したロボット動作プログラムをただ再生するのみである。つまり、ロボットと周辺装置等の配置が一旦決められれば、以後これは変化しないのが大前提である。また毎回入れ替わる作業対象ワークも正確に位置決めされる必要がある。これらが満たされているような生産設備であれば、(a)〜(d)の方法にそれぞれ長所や短所はあるものの、皆一定の有用性を発揮すると考えられる。特に自動車の車体製造ラインのような大量生産型の生産設備では、(c)や(d)の方法などが手間の削減に有用であると考えられる。
しかし世の中にはこれとは異なる構成の生産設備も存在し、これらの技術が有効に機能しないものもある。例えば、ロボットと周辺装置等の相対関係が毎回変わるような事情がある場合は、(a)、(b)、(d)の方法に頼ろうとすると、毎回調整作業を行わなければならず役に立たない。
一方、(c)の方法であれば対応できる可能性がある。例えば、ロボットが車体パネルに対してスポット溶接するような生産設備の場合は、車体パネルの位置が毎回変わるような事情があったとしても、車体パネルの位置に連動する少なくとも3箇所の視覚マークをカメラで計測するようにできれば、毎回の変化に対応しうると言える。
しかし上述したように、物品の数が多数あって、かつそれらの位置が毎回変わるような事情がある場合には、(c)の方法であっても対応が難しい。
特に、図12を参照して説明したような記載の構成では、(a)〜(d)の方法での対応が難しい。
その理由であるが、仮に上記の(c)に示される調整作業の方法を行うと、各物品a1、a2、・・・・、f5の全て(30個)でそれぞれ少なくとも3箇所の視覚マークを設けてカメラによる計測を行わなければならず効率が悪いからである。特に、各物品での教示点の数が少ない場合には、なおさら非効率となる。
しかしながら、図12を参照して上述したように、本願発明に示したような実施形態であれば、各物品それぞれにおいて、1箇所の視覚マークに対するカメラによる計測で済むので効率的である。
そのため、本実施形態によれば、図12に示すようなロボットシステムが対象である場合にも、非常に効率的に、かつ少ない手間でシステムの立ち上げを行うことができる、という効果を奏する。
10 プログラミング装置
11 入力部
12 出力部
13 プログラム生成部
14 ロボット制御部
15 移動先ポイント補正部
16 画像取得部
20 ロボット
21 駆動制御部
22 ベース部
23 第1関節部
24 第1アーム
25 第2関節部
26 第2アーム
27 グリッパ
30 カメラ
31 撮像部
40 走行軸
50 ステーション

Claims (8)

  1. 複数の移動先ポイントを経由する所定の動作をロボットに実行させるためのプログラムを生成するプログラム生成部と、
    前記プログラムに基づいた制御により、前記ロボットに前記所定の動作を実行させるロボット制御部と、
    前記移動先ポイントの位置と所定の相対関係がある位置に配置された参照点を撮像した撮像画像を取得する画像取得部と、
    前記撮像画像及び前記所定の相対関係に基づいて、前記プログラムに含まれる前記移動先ポイントの情報を補正する移動先ポイント補正部と、を備え、
    前記プログラム生成部は、前記参照点の位置と前記所定の相対関係とを組にした情報に基づいて特定される移動先ポイントを、前記移動先ポイントの候補として複数記憶しており、
    前記プログラム生成部は、前記プログラム生成時に、前記移動先ポイントの候補から何れかの移動先ポイントを選択し、選択した前記移動先ポイントを経由する所定の動作をロボットに実行させるためのプログラムを生成し、
    前記ロボット制御部は、前記補正後の移動先ポイントの情報に基づいて、前記ロボットを制御するプログラミング装置。
  2. 複数の移動先ポイントを経由する所定の動作をロボットに実行させるためのプログラムを生成するプログラム生成部と、
    前記プログラムに基づいた制御により、前記ロボットに前記所定の動作を実行させるロボット制御部と、
    前記移動先ポイントの位置と所定の相対関係がある位置に配置された参照点を撮像した撮像画像を取得する画像取得部と、
    前記撮像画像及び前記所定の相対関係に基づいて、前記プログラムに含まれる前記移動先ポイントの情報を補正する移動先ポイント補正部と、を備え、
    前記ロボット制御部は、前記補正後の移動先ポイントの情報に基づいて、前記ロボットを制御し、
    異なる状況下で前記ロボットが動作する場合に、
    前記プログラム生成部は、前記生成したプログラムを前記異なる状況それぞれに対応する数だけ複製し、
    前記移動先ポイント補正部は、前記異なる状況それぞれに対応して前記複製されたプログラムそれぞれを補正することにより、前記異なる状況それぞれに対応する複数の補正後のプログラムを生成するプログラミング装置。
  3. 前記プログラム生成部は、前記移動先ポイント間を前記ロボットが移動すると前記ロボットと他の物品とが干渉する場合に、前記干渉が発生しない経路にて前記ロボットが移動するように、前記移動先ポイント間の移動時に経由する中継ポイントを挿入して前記プログラムを生成する請求項1又は2に記載のプログラミング装置。
  4. 前記移動先ポイント補正部は、前記中継ポイントについての情報は補正しない請求項3に記載のプログラミング装置。
  5. 前記移動先ポイント補正部は、前記ロボットが前記所定の動作実行中に、これから前記ロボットが移動する移動先ポイントについての情報を補正する請求項1から4までの何れか1項に記載のプログラミング装置。
  6. 前記参照点が複数存在すると共に、前記参照点のそれぞれには各参照点を識別するための画像情報が含まれており、
    前記画像取得部は、前記各参照点を識別するための画像情報も撮像し、
    前記移動先ポイント補正部は、前記各参照点を識別するための画像情報に基づいて参照点を識別し、前記撮像画像及び前記所定の相対関係に基づいて、前記プログラムに含まれる前記識別した参照点に対応する前記移動先ポイントの情報を補正する請求項1から5までの何れか1項に記載のプログラミング装置。
  7. コンピュータが行うロボット制御方法であって、
    複数の移動先ポイントを経由する所定の動作をロボットに実行させるためのプログラムを生成するプログラム生成ステップと、
    前記プログラムに基づいた制御により、前記ロボットに前記所定の動作を実行させるロボット制御ステップと、
    前記移動先ポイントの位置と所定の相対関係がある位置に配置された参照点を撮像した撮像画像を取得する画像取得ステップと、
    前記撮像画像及び前記所定の相対関係に基づいて、前記プログラムに含まれる前記移動先ポイントの情報を補正する移動先ポイント補正ステップと、を前記コンピュータが行い、
    前記プログラム生成ステップにおいて、前記参照点の位置と前記所定の相対関係とを組にした情報に基づいて特定される移動先ポイントを、前記移動先ポイントの候補として複数記憶しており、
    前記プログラム生成ステップにおいて、前記プログラム生成時に、前記移動先ポイントの候補から何れかの移動先ポイントを選択し、選択した前記移動先ポイントを経由する所定の動作をロボットに実行させるためのプログラムを生成し、
    前記ロボット制御ステップにおいて、前記補正後の移動先ポイントの情報に基づいて、前記ロボットを制御するロボット制御方法。
  8. コンピュータが行うロボット制御方法であって、
    複数の移動先ポイントを経由する所定の動作をロボットに実行させるためのプログラムを生成するプログラム生成ステップと、
    前記プログラムに基づいた制御により、前記ロボットに前記所定の動作を実行させるロボット制御ステップと、
    前記移動先ポイントの位置と所定の相対関係がある位置に配置された参照点を撮像した撮像画像を取得する画像取得ステップと、
    前記撮像画像及び前記所定の相対関係に基づいて、前記プログラムに含まれる前記移動先ポイントの情報を補正する移動先ポイント補正ステップと、を前記コンピュータが行い、
    前記ロボット制御ステップにおいて、前記補正後の移動先ポイントの情報に基づいて、前記ロボットを制御し、
    異なる状況下で前記ロボットが動作する場合に、
    前記プログラム生成ステップにおいて、前記生成したプログラムを前記異なる状況それぞれに対応する数だけ複製し、
    前記移動先ポイント補正ステップにおいて、前記異なる状況それぞれに対応して前記複製されたプログラムそれぞれを補正することにより、前記異なる状況それぞれに対応する複数の補正後のプログラムを生成するロボット制御方法。
JP2017098861A 2017-05-18 2017-05-18 プログラミング装置及びロボット制御方法 Active JP6538751B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017098861A JP6538751B2 (ja) 2017-05-18 2017-05-18 プログラミング装置及びロボット制御方法
US15/948,046 US10647003B2 (en) 2017-05-18 2018-04-09 Programming device and robot control method
US16/689,554 US11364636B2 (en) 2017-05-18 2019-11-20 Programming device and robot control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017098861A JP6538751B2 (ja) 2017-05-18 2017-05-18 プログラミング装置及びロボット制御方法

Publications (2)

Publication Number Publication Date
JP2018192569A JP2018192569A (ja) 2018-12-06
JP6538751B2 true JP6538751B2 (ja) 2019-07-03

Family

ID=64269918

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017098861A Active JP6538751B2 (ja) 2017-05-18 2017-05-18 プログラミング装置及びロボット制御方法

Country Status (2)

Country Link
US (2) US10647003B2 (ja)
JP (1) JP6538751B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11241795B2 (en) * 2018-09-21 2022-02-08 Beijing Jingdong Shangke Information Technology Co., Ltd. Soft package, robot system for processing the same, and method thereof
JP7293713B2 (ja) * 2019-02-25 2023-06-20 京セラドキュメントソリューションズ株式会社 把持機構及び組立装置
JP6898374B2 (ja) * 2019-03-25 2021-07-07 ファナック株式会社 ロボット装置の動作を調整する動作調整装置およびロボット装置の動作を調整する動作調整方法
JP2021003794A (ja) * 2019-06-27 2021-01-14 ファナック株式会社 ツールの作業位置のずれ量を取得する装置、及び方法
CN112659115B (zh) * 2019-10-15 2022-12-09 深圳市大族机器人有限公司 工业机器人控制方法、装置、设备及存储介质
JP7415447B2 (ja) * 2019-10-31 2024-01-17 セイコーエプソン株式会社 ロボットシステム
KR102258103B1 (ko) * 2020-08-03 2021-05-31 주식회사 듀얼아이엔씨 제어 프로그램 자동 생성 방법 및 상기 방법을 수행하는 컴퓨팅 장치
TW202239546A (zh) 2020-12-10 2022-10-16 日商發那科股份有限公司 圖像處理系統及圖像處理方法
KR102409623B1 (ko) * 2021-07-16 2022-06-22 주식회사 듀얼아이엔씨 대상 시스템에 대한 모델링 방법 및 컴퓨팅 장치
CN114147727B (zh) * 2022-02-07 2022-05-20 杭州灵西机器人智能科技有限公司 一种机器人位姿校正的方法、装置和系统
WO2023181206A1 (ja) * 2022-03-23 2023-09-28 ファナック株式会社 ロボットプログラミングシステム及びロボット制御装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3665353B2 (ja) * 1993-09-14 2005-06-29 ファナック株式会社 ロボットの教示位置データの3次元位置補正量取得方法及びロボットシステム
JP2005138223A (ja) * 2003-11-06 2005-06-02 Fanuc Ltd ロボット用位置データ修正装置
JP2006048244A (ja) * 2004-08-02 2006-02-16 Fanuc Ltd 加工プログラム作成装置
JP2009119589A (ja) 2007-11-19 2009-06-04 Yaskawa Electric Corp ロボットシミュレータ
JP5061965B2 (ja) * 2008-03-05 2012-10-31 株式会社Ihi ロボット生産システム
JP6129058B2 (ja) * 2013-11-13 2017-05-17 三菱電機株式会社 教示点補正装置および教示点補正方法
JP5860081B2 (ja) * 2014-02-27 2016-02-16 ファナック株式会社 ロボットの動作経路を生成するロボットシミュレーション装置
JP6249292B2 (ja) * 2014-05-07 2017-12-20 カワダロボティクス株式会社 作業システム
JP6415190B2 (ja) * 2014-09-03 2018-10-31 キヤノン株式会社 ロボット装置、ロボット制御プログラム、記録媒体、およびロボット装置の制御方法
WO2016151668A1 (ja) * 2015-03-20 2016-09-29 富士機械製造株式会社 ティーチング装置及び制御情報の生成方法
EP3328181B1 (en) * 2015-07-24 2020-11-04 FUJI Corporation Component mounting machine and component mounting system
JP6812095B2 (ja) * 2015-10-22 2021-01-13 キヤノン株式会社 制御方法、プログラム、記録媒体、ロボット装置、及び物品の製造方法
JP6396516B2 (ja) * 2017-01-12 2018-09-26 ファナック株式会社 視覚センサのキャリブレーション装置、方法及びプログラム
JP6572262B2 (ja) * 2017-06-06 2019-09-04 ファナック株式会社 教示位置修正装置および教示位置修正方法
JP6549644B2 (ja) * 2017-06-27 2019-07-24 ファナック株式会社 機械学習装置、ロボット制御システム及び機械学習方法
JP2019025572A (ja) * 2017-07-28 2019-02-21 セイコーエプソン株式会社 ロボットの制御装置、ロボット、ロボットシステム、並びに、ロボットの異常を確認する方法
JP7130927B2 (ja) * 2017-08-31 2022-09-06 セイコーエプソン株式会社 制御装置およびロボットシステム
JP6849631B2 (ja) * 2018-04-23 2021-03-24 ファナック株式会社 作業ロボットシステムおよび作業ロボット
US11597100B2 (en) * 2018-05-30 2023-03-07 Fuji Corporation Component mounting system

Also Published As

Publication number Publication date
US20200086495A1 (en) 2020-03-19
US10647003B2 (en) 2020-05-12
US20180333859A1 (en) 2018-11-22
JP2018192569A (ja) 2018-12-06
US11364636B2 (en) 2022-06-21

Similar Documents

Publication Publication Date Title
JP6538751B2 (ja) プログラミング装置及びロボット制御方法
Pan et al. Recent progress on programming methods for industrial robots
JP3733364B2 (ja) 教示位置修正方法
CN108994876B (zh) 示教位置修正装置和示教位置修正方法
JP6429473B2 (ja) ロボットシステム、ロボットシステムの校正方法、プログラム、およびコンピュータ読み取り可能な記録媒体
JP6812095B2 (ja) 制御方法、プログラム、記録媒体、ロボット装置、及び物品の製造方法
JP4271232B2 (ja) ロボットのオフラインプログラミングを実行するための装置、方法、プログラム及び記録媒体
JP3665353B2 (ja) ロボットの教示位置データの3次元位置補正量取得方法及びロボットシステム
JP4265088B2 (ja) ロボット装置及びその制御方法
EP1215017A2 (en) Robot teaching apparatus
WO2018043525A1 (ja) ロボットシステム、ロボットシステム制御装置、およびロボットシステム制御方法
EP3542969A1 (en) Working-position correcting method and working robot
JP2015150636A (ja) ビジュアルフィードバックを利用したロボットシステム
JPH08377B2 (ja) ロボット不正確度修正方法
JP2019018272A (ja) モーション生成方法、モーション生成装置、システム及びコンピュータプログラム
JP2015089575A (ja) ロボット、制御装置、ロボットシステム及び制御方法
JP7359633B2 (ja) ロボットシステム
EP3593957A1 (en) Motion teaching apparatus, robot system, and motion teaching method
JP2008207262A (ja) マニピュレータシステム
JP2007115011A (ja) 産業用ロボットの制御方法
JP2012091304A (ja) ティーチングデータ作成方法およびティーチングデータ作成装置
US11897142B2 (en) Method and device for creating a robot control program
EP4177015A1 (en) Robot teaching system
CN116728397A (zh) 机器人系统、机器人控制方法和计算机可读存储介质
JP7366264B2 (ja) ロボット教示方法及びロボット作業方法

Legal Events

Date Code Title Description
A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180829

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20181015

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190315

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190606

R150 Certificate of patent or registration of utility model

Ref document number: 6538751

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150