JP2022131374A - ロボット制御システム、ロボットコントローラ、及びロボット制御方法 - Google Patents

ロボット制御システム、ロボットコントローラ、及びロボット制御方法 Download PDF

Info

Publication number
JP2022131374A
JP2022131374A JP2021030295A JP2021030295A JP2022131374A JP 2022131374 A JP2022131374 A JP 2022131374A JP 2021030295 A JP2021030295 A JP 2021030295A JP 2021030295 A JP2021030295 A JP 2021030295A JP 2022131374 A JP2022131374 A JP 2022131374A
Authority
JP
Japan
Prior art keywords
robot
controller
trajectory
unit
processing
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.)
Pending
Application number
JP2021030295A
Other languages
English (en)
Inventor
貴宏 前田
Takahiro Maeda
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.)
Yaskawa Electric Corp
Original Assignee
Yaskawa Electric 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 Yaskawa Electric Corp filed Critical Yaskawa Electric Corp
Priority to JP2021030295A priority Critical patent/JP2022131374A/ja
Priority to EP22157705.9A priority patent/EP4049808A1/en
Priority to US17/679,156 priority patent/US20220274253A1/en
Publication of JP2022131374A publication Critical patent/JP2022131374A/ja
Pending legal-status Critical Current

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/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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1628Programme controls characterised by the control loop
    • B25J9/1651Programme controls characterised by the control loop acceleration, rate 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/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/161Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/41Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by interpolation, e.g. the computation of intermediate points between programmed end points to define the path to be followed and the rate of travel along that path
    • 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/34Director, elements to supervisory
    • G05B2219/34095Look ahead segment calculation
    • 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/39371Host and robot controller
    • 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/40Robotics, robotics mapping to robotics vision
    • G05B2219/40516Replanning

Abstract

【課題】ロボット制御における処理速度を向上させる。【解決手段】ロボット制御システム(1)は、ロボット(30)を制御可能なロボットコントローラ(20)と、ロボットコントローラと通信可能な上位コントローラ(10)と、を有する。上位コントローラ(10)は、制御プログラムを実行する実行部(101)と、ロボットコントローラに対し、制御プログラムの実行結果に応じた命令を送信する送信部(102)と、を有する。ロボットコントローラ(20)は、上位コントローラ(10)から、命令を受信する受信部(201)と、命令に応じた事前処理を実行する事前実行部(203)と、を有する。【選択図】図6

Description

本開示は、ロボット制御システム、ロボットコントローラ、及びロボット制御方法に関する。
特許文献1には、作業者がロボットに対して目標位置を教示する場合に、制御プログラムの先読みによって特定された分岐先における目標位置までのロボットの予想軌跡を計算し、作業者のヘッドマウントディスプレイに、予想軌跡を示す画像と、ロボットを撮影した画像と、を重ねて表示させる表示システムが記載されている。
特開2018-051653号公報
本開示が解決しようとする課題は、例えば、ロボット制御における処理速度を向上させることである。
本開示の一側面に係るロボット制御システムは、ロボットを制御可能なロボットコントローラと、前記ロボットコントローラと通信可能な上位コントローラと、を有するロボット制御システムであって、前記上位コントローラは、制御プログラムを実行する実行部と、前記ロボットコントローラに対し、前記制御プログラムの実行結果に応じた命令を送信する送信部と、を有し、前記ロボットコントローラは、前記上位コントローラから、前記命令を受信する受信部と、前記命令に応じた事前処理を実行する事前実行部と、を有する。
本開示によれば、例えば、ロボット制御における処理速度が向上する。
ロボット制御システムの全体構成の一例を示す図である。 ロボット制御方法の一例を示す図である。 ロボット制御方法の一例を示す図である。 第1実施形態におけるロボット制御の一例を示す図である。 第1実施形態におけるロボット制御の一例を示す図である。 第1実施形態のロボット制御システムで実現される機能の一例を示す機能ブロック図である。 第1実施形態のロボット制御システムで実行される処理の一例を示す図である。 第2実施形態の機能ブロック図である。 第2実施形態におけるツリー構造データの一例を示す図である。 第3実施形態におけるロボットプログラムの一例を示す図である。 第3実施形態の機能ブロック図である。 変形例の機能ブロック図である。 変形例(3)における処理の一例を示す図である。 変形例(3)における処理の一例を示す図である。
[1.第1実施形態]
以降、本開示に係るロボット制御システムの第1実施形態の一例を説明する。
[1-1.ロボット制御システムの全体構成]
図1は、ロボット制御システムの全体構成の一例を示す図である。図1に示すように、ロボット制御システム1は、上位コントローラ10と、ロボットコントローラ20と、を含む。上位コントローラ10とロボットコントローラ20とは、フィールドネットワーク(産業用ネットワーク)等の任意のネットワークにより接続される。
上位コントローラ10は、ロボットコントローラ20と通信可能な装置である。上位コントローラ10は、複数のロボットコントローラ20と通信してもよいし、モータコントローラ又はサーボアンプ等の他の装置と通信してもよい。例えば、上位コントローラ10は、PLC(Programmable Logic Controller)である。上位コントローラ10は、産業用PC、パーソナルコンピュータ、又はサーバコンピュータといった他の装置であってもよい。
上位コントローラ10は、CPU11、記憶部12、及び通信部13を含む。CPU11は、少なくとも1つのプロセッサを含む。CPU11は、circuitryの一種である。記憶部12は、揮発性メモリと、不揮発性メモリと、の少なくとも一方を含む。通信部13は、有線通信用の通信インタフェースと、無線通信用の通信インタフェースと、の少なくとも一方を含む。
ロボットコントローラ20は、ロボット30を制御可能な装置である。ロボットコントローラ20は、CPU21、記憶部22、及び通信部23を含む。CPU21、記憶部22、及び通信部23の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様であってよい。ロボット30は、種々のタイプであってよく、例えば、ワークに対する加工、材料の計測、又は製品の検査を行う。
なお、記憶部12,22の各々に記憶されるプログラム及びデータは、ネットワークを介して供給されてもよい。また、各装置のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、メモリカードスロット)や外部機器と接続するための入出力部(例えば、USB端子)が含まれてもよい。この場合、情報記憶媒体に記憶されたプログラム及びデータが、読取部又は入出力部を介して供給されてもよい。他にも例えば、FPGA又はASICと呼ばれる回路が含まれてもよいし、トルクセンサ、モータエンコーダ、モーションセンサ、又はビジョンセンサ等の任意のセンサが接続されていてもよい。
[1-2.ロボット制御システムの概要]
上位コントローラ10は、制御プログラムに基づいて、ロボットコントローラ20に対し、ロボット30を制御するための命令を送信する。制御プログラムには、ロボットコントローラ20に送信される命令の順序が定義されている。第1実施形態では、制御プログラムがラダー言語で作成される場合を説明するが、制御プログラムは、ロボット言語又はC言語といった任意の言語で作成可能である。
ロボットコントローラ20は、上位コントローラ10から受信した命令に基づいて、ロボット30を制御する。第1実施形態では、この命令の一例として、ロボット30を所定の位置に動作させるための移動命令を説明する。移動命令は、ロボット30の目標位置を含む。目標位置は、ロボット30の移動先の位置である。目標位置は、ユーザが予め教示した位置である。目標位置は、ビジョンセンサ又はカメラが取得した情報に基づいて計算されてもよい。目標位置は、ロボット30に設定される座標系の座標によって示される。この座標系は、任意の座標系であってよく、例えば、ユーザが定義してもよい。移動命令は、複数の目標位置を含んでもよい。移動命令は、ロボット30の移動速度等の他の情報を含んでもよい。
ロボットコントローラ20は、上位コントローラ10から移動命令を受信すると、移動命令に含まれる目標位置までの軌跡を計算する。この軌跡の計算には、ある程度の時間を要することが多い。更に、上位コントローラ10からロボットコントローラ20に対する移動命令の送信にもある程度の時間を要する。このため、従来のロボット制御方法でロボット30を制御したとすると、ロボット30の速度が低下することがあった。
図2及び図3は、ロボット制御方法の一例を示す図である。上位コントローラ10が記憶する制御プログラムには、図2に示すようなロボット30の目標位置の順序が定義されている。図2の例では、ロボット30の初期位置を位置P0とする。初期位置は、一連の動作を開始する前のロボット30の位置である。ロボット30は、位置P0から移動を開始し、位置P1,P2,P3の順序で移動する。
ロボット30が位置P1に到着するまでに、所定の信号がオンからオフになると、ロボット30は、位置P1に到着した後に位置P20,P21の順序で移動する。信号ではなく、ある特定の値を保持するレジスタの値が利用されてもよい。信号がオンであれば、図2における1ライン目の「MOVL P1」の右側の「Signal」のA接点の論理は真になる。このため、「MOVL P2」から「MOVL P3」のファンクションブロックが実行される。2ライン目の「Signal」はB接点(否定の論理)で参照されているので、信号がオンであれば偽になり、その右側の「MOVL P20」と「MOVL P21」は実行されない。
一方、動作中に、ロボット30の軌跡を変更する必要のある条件が成立し、図示しないプログラムによって、又は、外部のセンサの信号の状態変化によって、信号がオンからオフに変化すると、図2における1ライン目の「Signal」のA接点は偽になり、「MOVL P2」と「MOVL P3」は実行されなくなる。同時に、2ライン目の「Signal」のB接点は真になるので、「MOVL P20」と「MOVL P21」が実行される。なお、実行されるとは、これらのファンクションブロックの内部ロジックによって、ひとまずコマンドの送信が行われるといった意味である。
上位コントローラ10は、制御プログラムを実行すると、ロボットコントローラ20に対し、位置P1への移動命令を送信する。ロボットコントローラ20は、この移動命令を受信すると、位置P1までの軌跡を計算してキューQに格納する。キューQは、ロボットコントローラ20の記憶部22内の記憶領域である。キューQには、ロボットコントローラ20によるロボット30の制御内容に関する情報が順番に格納される。ロボットコントローラ20は、キューQの情報を順番に読み出して、ロボット30を制御する。なお、キューQには、ロボット30の速度等の他の情報も格納可能である。キューQに格納される情報は、状況に応じて更新される。
図3では、キューQの情報が変化する様子を、符号「Q」の末尾に小文字のアルファベットを付して区別する。図3は、ロボット30の速度の時系列的な変化も示す。これらの点は、後述する図5も同様である。ロボットコントローラ20は、位置P1までの軌跡がキューQに格納されると、この軌跡上を移動するように、ロボット30を加速させながら位置P1に向けて移動させる(図3のキューQaの状態)。
上位コントローラ10は、ロボット30が位置P1に到着する前に、ロボットコントローラ20に対し、位置P2への移動命令を送信する。例えば、ロボットコントローラ20は、この移動命令を受信すると、位置P2までの軌跡を計算してキューQに追加する(図3のキューQbの状態)。この時点では、ロボット30が位置P1に到達していないので、位置P2までの軌跡は、位置P1までの軌跡の後に格納される。
ロボット30が位置P1に到達する前に信号がオンからオフに変化すると、ロボット30を位置P20に移動させる必要があるので、計算済みの軌跡が破棄される(図3のキューQcの状態)。計算済みの軌跡が破棄されると、ロボットコントローラ20は、ロボット30を停止させるために、ロボット30の減速を開始させる。なお、ロボット30が位置P1まで移動した後に位置P20に移動する場合を説明するので、位置P1までの軌跡は、ロボット30が位置P1に到達した後に破棄されてもよい。
上位コントローラ10は、ロボットコントローラ20に対し、位置P20への移動命令の送信を開始する(図3のキューQdの状態)。ロボットコントローラ20は、この移動命令を受信し終わると、位置P20までの軌跡の計算を開始する。この移動命令の受信中及びこの軌跡の計算中は、ロボット30が減速し続ける。
ロボットコントローラ20は、位置P20までの軌跡の計算が完了するとキューQに追加する(図3のキューQeの状態)。ロボットコントローラ20は、この軌跡上を移動するように、ロボット30に位置P20への移動を開始させる。この間に、上位コントローラ10は、ロボットコントローラ20に対し、位置P21への移動命令を送信してもよい。この場合、位置P21までの軌跡が計算されて、位置P20までの軌跡の後に格納される。
ロボット30は、位置P20までの軌跡がキューQに格納されると、定速で位置P20に向けた移動を開始する。ロボット30が所定の速度未満になっていれば、ロボットコントローラ20は、ロボット30を再び加速させる必要がある。このように、従来のロボット制御では、信号がオンからオフになった後の移動命令の受信及び軌跡の計算に時間がかかるので、ロボット30が減速する可能性がある。
そこで、第1実施形態の上位コントローラ10は、位置P2への移動命令を送信する前に、位置P20までの軌跡と、位置P21までの軌跡と、の各々を計算するための計算命令を、ロボットコントローラ20に送信する。計算命令により計算された軌跡は、信号がオンからオフになるまでは使用されない。これにより、信号がオンからオフになった場合に、すぐにロボット30に位置P20への移動を開始させるようにしている。
図4及び図5は、第1実施形態におけるロボット制御の一例を示す図である。図4に示すように、制御プログラムには、位置P1への移動命令の後に、位置P20までの軌跡の計算命令と、位置P21までの軌跡の計算命令と、が送信されるようになっている。その後に、位置P2への移動命令と、位置P3への移動命令と、が送信される。図4の例では、計算命令を「Sub Target Send」と記載する。移動命令を「MOVL」と記載する。
ロボットコントローラ20は、第1キューQ1と、第2キューQ2と、を含む。第1キューQ1には、位置P1~位置P3の各々までの軌跡が格納される。第2キューQ2には、位置P20,P21の各々までの軌跡が格納される。第2キューQ2は、事前計算された軌跡用のキュー、又は、信号がオンからオフになった場合用のキューということができる。何らかの異常が発生したことに応じて信号がオンからオフになる場合には、第1キューQ1は、正常系又は通常系のキューということができ、第2キューQ2は、異常系又は予備系のキューということもできる。
例えば、上位コントローラ10は、制御プログラムを実行すると、ロボットコントローラ20に対し、位置P1への移動命令を送信する。ロボットコントローラ20は、この命令を受信すると、位置P1までの軌跡を計算して第1キューQ1に格納する。ロボットコントローラ20は、位置P1までの軌跡が第1キューQ1に格納されると、この軌跡上を移動するように、ロボット30を加速させながら位置P1に向けて移動させる。
上位コントローラ10は、ロボット30が位置P1に到着する前に、ロボットコントローラ20に対し、位置P20までの軌跡の計算命令を送信する。ロボットコントローラ20は、この計算命令を受信すると、位置P20までの軌跡を事前計算して第2キューQ2に格納する(図5の第1キューQ1a,第2キューQ2aの状態)。この時点では、ロボット30は、加速しながら位置P1に向けて移動しているものとする。
上位コントローラ10は、ロボットコントローラ20に対し、位置P21までの軌跡の計算命令を送信する。例えば、ロボットコントローラ20は、この計算命令を受信すると、位置P21までの軌跡を計算して第2キューQ2に格納する(図5の第1キューQ1b,第2キューQ2bの状態)。この時点では、ロボット30は、定速で位置P1に向けて移動しているものとする。
上位コントローラ10は、ロボットコントローラ20に対し、位置P2への移動命令を送信する。ロボットコントローラ20は、この命令を受信すると位置P2までの軌跡を計算して第1キューQ1に格納する(図5の第1キューQ1c,第2キューQ2cの状態)。この時点では、ロボット30は、定速で位置P1に向けて移動しているものとする。
この状態で信号がオンからオフになると、ロボット30を位置P20に移動させる必要があるので、上位コントローラ10は、ロボットコントローラ20に対し、位置P20への移動命令を送信する。ただし、位置P20までの軌跡は計算済みなので、この移動命令には、位置P20の座標が含まれなくてもよい。
ロボットコントローラ20は、信号がオンからオフになり、位置P20への移動命令を受信すると、第1キューQ1の内容を破棄し、第1キューQ1に基づいて制御される状態から、第2キューQ2に基づいて制御される状態に切り替える(図5の第1キューQ1d,第2キューQ2dの状態)。位置P20への軌跡は計算済みなので、ロボット30は、すぐに位置P20への移動を開始できる。信号がオンからオフにならなかった場合には、第2キューQ2の内容が破棄されてもよい。
以上のように、第1実施形態のロボット制御システム1は、信号がオンからオフになった場合にロボット30が移動すべき目標位置までの軌跡を、事前にロボットコントローラ20に計算させる。これにより、実際に信号がオンからオフになった場合に、ロボット30がすぐに移動を開始できる。このため、ロボット30の減速を防止し、ロボット制御における処理速度が向上する。以降、第1実施形態のロボット制御システム1の詳細を説明する。
[1-3.第1実施形態で実現される機能]
図6は、第1実施形態のロボット制御システム1で実現される機能の一例を示す機能ブロック図である。
[1-3-1.上位コントローラで実現される機能]
上位コントローラ10は、データ記憶部100、実行部101、及び送信部102を含む。データ記憶部100は、記憶部12を主として実現される。実行部101及び送信部102の各々は、CPU11を主として実現される。
[データ記憶部]
データ記憶部100は、ロボットコントローラ20を制御するために必要なデータを記憶する。例えば、データ記憶部100は、ロボットコントローラ20の制御手順が定義された制御プログラムCと、制御プログラムCにより参照される変数と、を記憶する。制御プログラムCと変数のセットは、複数存在してもよい。
制御プログラムCは、複数の命令の各々を所定の順序で送信するためのコードを含む。第1実施形態では、ネットワーク上で送信される情報を命令と記載し、プログラムに含まれる情報をコードと記載する。コードは、ユーザが目で見て理解できる形のコードに限られず、機械語に変換されたコードも含む意味である。例えば、コンパイル等の変換が必要な制御プログラムCであれば、機械語に変換された記号列がコードに相当する。インタープリタ形式の制御プログラムCであれば、ユーザが入力した「MOVL」等の記号列がコードに相当する。なお、記号列に含まれる記号は、文字だけでなく、数字等の他の記号も含む意味である。
第1実施形態では、制御プログラムCは、条件分岐を有する。条件分岐は、所定の条件が満たされたか否かによって、その後の処理内容が変わることである。条件分岐は、任意の表現が可能であり、例えば、ラダー言語であれば接点又は比較命令で表現されてもよいし、他の言語であればIF文又はSWITCH文で表現されてもよい。条件分岐は、複数の分岐先を有する。分岐先ごとに、その分岐先の処理を示すコード群が存在する。
図4の例であれば、信号がオンからオフになることは、条件分岐における条件に相当する。例えば、ユーザは、ラダー言語で制御プログラムCを作成する際に、接点又は比較命令を利用して、信号がオンからオフになることを条件分岐として表現する。ユーザは、その後の第1の分岐先として、位置P2への移動命令及び位置P3への移動命令の各々のコードを記述し、第2の分岐先として、位置P20の移動命令及び位置P21への移動命令の各々のコードを記述する。図4を参照して説明したように、ユーザは、位置P1への移動命令の後に、位置P20までの軌跡の計算命令と、位置P21までの軌跡の計算命令と、の各々のコードを記述する。
なお、条件分岐は、信号がオンからオフになることに限られず、任意の条件であってよい。例えば、条件分岐の条件は、信号がオフからオンになること、所定のイベントが発生すること、アラームが発生すること、内部計算の値が所定の値になること、又はセンサにより所定の状況が検出されることであってもよい。入力信号、アラーム、内部計算、又はセンサにより検出される状況は、上位コントローラ10及びロボットコントローラ20の少なくとも一方におけるものであってもよいし、その他の周辺装置のものであってもよい。
また、制御プログラムCは、条件分岐を有しなくてもよい。例えば、制御プログラムCは、IF文又はSWITCH文のような条件分岐を有さずに、JUMP文又はGOTO文を有し、あるコードから特定のラベルへ実行を移動させてもよい。JUMP文又はGOTO文よりも先へ移動させることもできるし、JUMP文又はGOTO文よりも前に移動させることもできる。また例えば、制御プログラムCは、条件分岐やJUMP文を有さずに、最初から最後まで一方向的に実行されるものであってもよい。
[実行部]
実行部101は、制御プログラムCを実行する。実行部101は、制御プログラムCに基づいて、あるコードを参照すると、任意のタイミングで次のコードを参照する。実行部101は、あるコードを参照した後に、すぐに次のコードを参照してもよいし、ある程度の時間をあけてから次のコードを参照してもよい。ある程度の時間をあける場合には、あるコードが参照されてから一定時間が経過した後に次のコードが参照されてもよいし、ロボットコントローラ20から何らかの応答を受信した場合に次のコードが参照されてもよい。実行部101が実行するコードの範囲は、任意の範囲であってよく、可能な限りの先のコードが実行されてもよいし、実行されるコードに上限数が設けられてもよい。実行部101は、制御プログラムCのうち、ロボットコントローラ20に実行させている動作に対応する部分よりも先のコードを実行可能である。
第1実施形態の実行部101は、第1実行部101Aと、第2実行部101Bと、を含む。
第1実行部101Aは、制御プログラムCの特定のコードを実行する。例えば、第1実行部101Aは、制御プログラムCにおける特定のコードの有無を判定する。特定のコードは、事前処理の対象となるコードである。第1実施形態では、特定のコードの一例として、軌跡の事前計算をさせるためのコードを説明する。図4の例であれば、第1実行部101Aは、制御プログラムCに「Sub Target Send」を含むコードがあるか否かを判定する。
なお、特定のコードは、任意のコードであってよく、第1実施形態の例に限られない。例えば、特定のコードは、上位コントローラ10及びロボットコントローラ20の少なくとも一方の計算量が基準以上になるコードであってもよい。また例えば、特定のコードは、上位コントローラ10とロボットコントローラ20との間の通信量が基準以上になるコードであってもよい。また例えば、特定のコードは、条件分岐を示すコードであってもよい。また例えば、特定のコードは、信号の変化を検知するコードであってもよい。
第2実行部101Bは、条件分岐を有する制御プログラムCを実行する。条件分岐のコードは、先述した特定のコードの一例である。第2実行部101Bは、条件分岐の分岐先に応じたコードを実行する。図4の例であれば、第2実行部101Bは、条件分岐の分岐先における「MOVL P20」のコードと、「MOVL P21」のコードと、の事前準備をするために、「Sub Target Send P20」のコードと、「Sub Target Send P21」のコードと、を実行する。分岐先が3つ以上存在する場合も同様に、第2実行部101Bは、分岐先のコードの事前準備としてのコードを実行する。
[送信部]
送信部102は、ロボットコントローラ20に対し、実行部101による制御プログラムCの実行結果に応じた命令を送信する。送信部102は、制御プログラムのコードに応じた命令を送信する。例えば、送信部102は、軌跡を事前計算させるためのコードが実行された場合には、そのコードに応じた計算命令を送信する。また例えば、送信部102は、ロボット30を所定の位置に移動させるためのコードが実行された場合には、そのコードに応じた移動命令を送信する。実行されたコードが上位コントローラ10の内部処理のコードである場合には、特に命令が送信されなくてよい。
第1実施形態の送信部102は、第1送信部102A、第2送信部102B、第3送信部102C、及び第4送信部102Dを含む。
第1送信部102Aは、ロボットコントローラ20に対し、第1実行部101Aにより実行された特定のコードに応じた特定の命令を送信する。特定の命令は、上位コントローラ10が特定のコードを実行した場合に、ロボットコントローラ20に送信される命令である。特定のコードに特定の命令そのものが含まれている場合には、第1送信部102Aは、特定のコードに含まれる特定の命令を送信すればよい。特定のコードから特定の命令を生成する必要があれば、第1送信部102Aは、特定のコードに基づいて特定の命令を生成して送信すればよい。
第2送信部102Bは、ロボットコントローラ20に対し、制御プログラムCの条件分岐の分岐先に応じた分岐先命令を送信する。分岐先命令は、分岐先の事前準備のための命令である。図4の例であれば、信号がオンからオフになった場合のロボット30の軌跡を事前計算させるための「Sub Target Send P20」及び「Sub Target Send P21」が分岐先命令に相当する。分岐先命令は、第1実施形態の例に限られない。図4のように「MOVL P1」の後に「Sub Target Send」を記述しない場合には、信号がオンからオフになった後に実行される「MOVL P20」と「MOVL P21」のうちの一部に応じた命令(目標位置を送信するだけの命令)が分岐先命令に相当してもよい。
第3送信部102Cは、ロボットコントローラ20に対し、ロボット30の目標位置までの軌跡を計算させるための計算命令を送信する。図4の例であれば、「Sub Target Send P20」及び「Sub Target Send P21」が計算命令に相当する。計算命令は、軌跡の事前計算であることを識別可能な命令であればよく、他の記号列によって表現される命令であってもよい。
第4送信部102Dは、ロボットコントローラに対し、制御プログラムCの実行結果に応じて、ロボットの第1目標位置までの第1軌跡を計算させるための第1計算命令と、ロボットが第1目標位置とは異なる第2目標位置まで移動する場合の第2軌跡を計算させるための第2計算命令と、を送信する。例えば、第1目標位置及び第2目標位置の各々は、上位コントローラ10からの命令に含まれている。第2軌跡は、第1軌跡とは異なる軌跡であればよい。第1計算命令及び第2計算命令の各々は、軌跡の計算だけを実行させるための命令であってもよいし、軌跡の計算をしてその軌跡上を移動させるための命令であってもよい。このため、第1計算命令及び第2計算命令の各々は、図4を参照して説明した移動命令と計算命令の何れであってもよい。
図4の例であれば、位置P2,P3は、第1目標位置の一例であり、位置P2,P3までの軌跡は、第1軌跡の一例である。位置P20,P21は、第2目標位置の一例であり、位置P20,P21までの軌跡は、第2軌跡の一例である。「MOVL P2」及び「MOVL P3」は、第1計算命令の一例であり、「Sub Target Send P20」及び「Sub Target Send P21」は、第2計算命令の一例である。
[1-3-2.ロボットコントローラで実現される機能]
ロボットコントローラ20では、データ記憶部200、受信部201、基準位置取得部202、事前実行部203、格納部204、処理部205、及び破棄部206が実現される。データ記憶部200は、記憶部22を主として実現される。受信部201、基準位置取得部202、事前実行部203、格納部204、処理部205、及び破棄部206の各々は、CPU21を主として実現される。
[データ記憶部]
データ記憶部200は、ロボット30を制御するために必要なデータを記憶する。例えば、データ記憶部200は、上位コントローラ10から受信した命令を解釈して実行するためファームウェアFと、変数と、を記憶する。ファームウェアFは、上位コントローラ10から命令を受信した場合に実行すべき処理内容を示す。即ち、ファームウェアFには、上位コントローラ10からの命令と、自身が実行すべき処理と、の関係が定義されている。データ記憶部200は、軌跡の計算に必要なプログラム等も記憶する。
[受信部]
受信部201は、上位コントローラ10から、種々の命令を受信する。受信部201は、制御プログラムの実行結果に応じた命令を受信する。受信部201は、ある命令の事前準備のための命令だけではなく、事前準備ではない命令を受信してもよい。命令の受信は、同期通信又は非同期通信の何れが利用されてもよいし、定周期通信又は非定周期通信の何れが利用されてもよい。
第1実施形態の受信部201は、第1受信部201A、第2受信部201B、第3受信部201C、及び第4受信部201Dを含む。
第1受信部201Aは、上位コントローラ10から、第1送信部102Aにより送信された特定の命令を受信する。第2受信部201Bは、上位コントローラ10から、第2送信部102Bにより送信された分岐先命令を受信する。第3受信部201Cは、上位コントローラ10から、第3送信部102Cにより送信された計算命令を受信する。第4受信部201Dは、上位コントローラから、第4送信部102Dにより送信された第1計算命令と第2計算命令とを受信する。これらの個々の命令の詳細は、先述した通りである。
[基準位置取得部]
基準位置取得部202は、ロボット30が移動する軌跡の基準位置を取得する。基準位置は、軌跡を計算する際の基準となる位置である。例えば、基準位置は、軌跡の起点(始点)となる位置である。何らかの条件が満たされた場合の位置から軌跡を計算したり複数の軌跡をつないだりする場合には、基準位置は、起点の少し後の位置であってもよい。基準位置は、上位コントローラ10からの命令に含まれていてもよいし、モーションセンサ等により検出されたロボット30の現在位置であってもよい。基準位置は、データ記憶部200に記憶されていてもよいし、第1キューQ1又は第2キューQ2に格納されていてもよい。
図4の例であれば、位置P1までの軌跡の基準位置は、位置P0である。位置P2までの軌跡の基準位置は、位置P1である。位置P3までの軌跡の基準位置は、位置P2である。位置P20までの軌跡の基準位置は、位置P1である。位置P21までの軌跡の基準位置は、位置P20である。第1実施形態では、これらの基準位置は、移動命令又は計算命令に含まれるものとする。
例えば、基準位置取得部202は、第1軌跡に応じたロボット30の第1基準位置と、第2軌跡に応じたロボット30の第2基準位置と、を取得する。図4の例であれば、位置P2までの軌跡は、第1軌跡に相当するので、基準位置取得部202は、この軌跡の第1基準位置として位置P1を取得する。位置P20までの軌跡は、第2軌跡に相当するので、基準位置取得部202は、この軌跡の第2基準位置として位置P1を取得する。
なお、第1基準位置と第2基準位置は、異なっていてもよい。例えば、位置P3までの軌跡も第1軌跡に相当するので、基準位置取得部202は、この軌跡の第1基準位置として位置P2を取得する。位置P21までの軌跡も第2軌跡に相当するので、基準位置取得部202は、この軌跡の第2基準位置として位置P20を取得する。これらの基準位置は、ユーザが操作機(いわゆるプログラミングペンダント)から指定してもよい。
[事前実行部]
事前実行部203は、受信部201により受信された命令に応じた事前処理を実行する。事前処理とは、ある処理のための準備に相当する処理である。例えば、事前処理は、ある処理で利用する情報を事前に生成する処理、ある処理に必要な計算の一部又は全部を事前に実行する処理、ある処理に必要な周辺装置を事前にスタンバイさせる処理、ある処理に必要なプログラムやパラメータを事前に読み出す処理、又はある処理に必要な物理量を事前に計測する処理である。第1実施形態では、軌跡を事前に計算することが事前処理に相当する。
第1実施形態の事前実行部203は、第1事前実行部203A、第2事前実行部203B、第3事前実行部203C、第4事前実行部203D、及び第5事前実行部203Eを含む。
第1事前実行部203Aは、第1受信部201Aにより受信された特定の命令に応じた事前処理を実行する。特定の命令を受信した場合に実行すべき事前処理は、ファームウェアFに定義されている。第1事前実行部203Aは、受信した特定の命令に応じた事前処理を特定し、その事前処理を実行する。図4の例であれば、第1事前実行部203Aは、特定の命令である「Sub Target Send P20」及び「Sub Target Send P21」が受信された場合に、これらの命令に含まれる目標位置までの軌跡を計算する。
第2事前実行部203Bは、第2受信部201Bにより受信された分岐先命令に応じた事前処理を実行する。分岐先命令を受信した場合に実行すべき事前処理は、ファームウェアFに定義されている。第2事前実行部203Bは、受信した分岐先命令に応じた事前処理を特定し、その事前処理を実行する。図4の例であれば、第2事前実行部203Bは、分岐先命令である「Sub Target Send P20」及び「Sub Target Send P21」の各々に応じた軌跡の事前計算を実行する。
第3事前実行部203Cは、第3受信部201Cにより受信された計算命令に応じた軌跡の事前計算を実行する。計算命令を受信した場合に実行すべき事前計算(利用する軌跡計算のアルゴリズム等)は、ファームウェアFに定義されている。第1事前実行部203Aは、受信した計算命令に応じた事前計算を特定し、その事前計算を実行する。図4の例であれば、第3事前実行部203Cは、計算命令である「Sub Target Send P20」及び「Sub Target Send P21」の各々に応じた軌跡の事前計算を実行する。
第4事前実行部203Dは、第4受信部201Dにより受信された第1計算命令に応じた第1軌跡の事前計算と、第4受信部201Dにより受信された第2計算命令に応じた第2軌跡の事前計算と、を実行する。図4の例であれば、第4事前実行部203Dは、第1計算命令である「MOVL P2」及び「MOVL P3」の各々に応じた第1軌跡の事前計算を実行する。第4事前実行部203Dは、第2計算命令である「Sub Target Send P20」及び「Sub Target Send P21」の各々に応じた第2軌跡の事前計算を実行する。
第5事前実行部203Eは、第1基準位置から第1目標位置までの第1軌跡の事前計算と、第2基準位置から第2目標位置までの第2軌跡の事前計算と、を実行する。図4の例であれば、第5事前実行部203Eは、第1目標位置を含む「MOVL P2」及び「MOVL P3」の各々に応じた第1軌跡の事前計算を実行する。第5事前実行部203Eは、第2目標位置を含む「Sub Target Send P20」及び「Sub Target Send P21」の各々に応じた第2軌跡の事前計算を実行する。
[格納部]
格納部204は、複数の記憶領域のうち、上位コントローラ10から受信した命令に応じた記憶領域に、事前処理の実行結果を格納する。第1実施形態では、第1キューQ1及び第2キューQ2の各々は、記憶領域の一例である。記憶領域は、メモリ内の所定の領域であればよく、キュー以外の名前で呼ばれてもよい。例えば、記憶領域は、ある番地から所定番地後までの番地のレジスタ帯域であってもよい。
第1実施形態では、格納部204は、信号がオンからオフにならなかった場合の第1軌跡の事前計算の計算結果を、第1キューQ1に格納し、信号がオンからオフになった場合の第2軌跡の事前計算の計算結果を、第2キューQ2に格納する。第1キューQ1又は第2キューQ2の何れに計算結果を格納すべきかについては、任意の方法によって判定可能であり、例えば、ファームウェアFに定義されていてもよい。
例えば、命令の種類と、第1キューQ1又は第2キューQ2の何れに計算結果を格納すべきかと、の関係が予め定められていてもよい。格納部204は、移動命令である「MOVL」の場合には、第1キューQ1に計算結果を格納する。格納部204は、計算命令である「Sub Target Send」の場合には、第2キューQ2に計算結果を格納する。ただし、第2キューQ2に格納された軌跡における目標位置への「MOVL」の移動命令が受信された場合には、第2キューQ2に格納された軌跡は、計算済みなので、この軌跡に基づく移動制御が実行される。
[処理部]
処理部205は、上位コントローラ10から受信した命令に基づいて、その命令に応じた処理を実行する。処理部205が実行する処理は、事前実行部203が実行する事前処理とは異なる処理である。処理部205は、事前処理を要する処理を実行することもあるし、特に事前処理を要しない処理を実行することもある。
例えば、処理部205は、上位コントローラ10から受信した命令に応じた記憶領域に格納された事前処理の実行結果に基づいて、上位コントローラ10から受信した命令に応じた処理を実行する。この命令は、事前処理を要する処理の実行を指示する命令である。図4の例であれば、「MOVL P20」及び「MOVL P21」は、事前処理を要する処理に相当する。
なお、処理部205は、事前処理を要しない命令(図4の例であれば「MOVL P1」)については、特に事前処理を利用せずに、その命令に応じた処理を実行する。「MOVL P2」及び「MOVL P3」は、事前処理を要しない命令であるが、「MOVL P1」を実行中なのであれば、位置P2までの軌跡の計算と、位置P3までの軌跡の計算と、が事前処理として実行される。この事前処理は、事前実行部203によって実行されてもよいし、処理部205により実行されてもよい。
処理部205は、上位コントローラ10から受信した命令に基づいて、事前処理を要する処理を実行するか否かを判定する。処理部205は、事前処理を要する処理を実行すると判定された場合に、事前処理の実行結果に基づいて、その処理を実行する。図4の例であれば、処理部205は、「MOVL P20」及び「MOVL P21」の各々を受信した場合に、事前計算された軌跡上を移動するように、ロボット30を制御する処理を利用する処理に相当する。事前処理を要する処理であるか否かは、ファームウェアFに定義されているものとする。
[破棄部]
破棄部206は、事前処理を要する命令とは異なる命令が実行される場合に、事前処理の実行結果を破棄する。この異なる命令は、事前処理を要しない命令である。図4の例であれば、ロボットコントローラ20が「MOVL P2」又は「MOVL P3」の命令を受信した場合、位置P20及び位置P21までの軌跡は必要なくなるので、破棄部206は、これらの命令を受信した場合に、第2キューQ2に保持された軌跡の計算結果を破棄する。破棄とは、記憶領域から消去することを意味してもよいし、その記憶領域にデータを残したまま上書き可能な状態にすることを意味してもよい。事前処理の実行結果が格納された記憶領域を他の目的で使用可能な状態にすることが破棄に相当すればよい。
[1-4.第1実施形態で実行される処理]
図7は、第1実施形態のロボット制御システム1で実行される処理の一例を示す図である。CPU11が記憶部12に記憶された制御プログラムCを実行し、かつ、CPU21が記憶部12に記憶されたファームウェアFを実行することによって、図7の処理が実行される。図7の処理は、図6の機能ブロックにより実行される処理の一例である。なお、ロボットコントローラ20は、ロボット30を初期位置に回帰させており、ロボット30は、位置P0にいるものとする。
図7に示すように、上位コントローラ10は、制御プログラムCに基づいて、ロボットコントローラ20に対し、最初の命令を送信する(S100)。最初の命令は、制御プログラムCに記述されたコードのうち、ロボットコントローラ20に何らかの命令を送信する必要がある最初のコードである。図4及び図5の例であれば、S100において、上位コントローラ10は、ロボットコントローラ20に対し、最初の命令として「MOVE P1」の移動命令を送信する。
ロボットコントローラ20は、最初の命令を受信し(S101)、受信した命令に基づいて、ロボット30を制御する(S102)。図4及び図5の例であれば、S101において、ロボットコントローラ20は、「MOVE P1」の命令を受信する。S102において、ロボットコントローラ20は、位置P1までの軌跡を計算して第1キューQ1に格納し、この軌跡上を移動するように、ロボット30を移動させる。
上位コントローラ10は、ロボットコントローラ20が現在の命令を実行している間、制御プログラムCを実行し(S103)、ロボットコントローラ20に対し、制御プログラムCの実行結果に応じた命令を送信する(S104)。図4及び図5の例であれば、S103において、上位コントローラ10は、「Sub Target Send P20」のコードを実行する。S104において、上位コントローラ10は、このコードに応じた「Sub Target Send P20」の計算命令を送信する。
ロボットコントローラ20は、制御プログラムの実行結果に応じた命令を受信すると(S105)、この命令に応じた事前処理を実行する(S106)。図4及び図5の例であれば、S105において、ロボットコントローラ20は、「Sub Target Send P20」の計算命令を受信すると、S106において、位置P20までの軌跡を事前計算し、第2キューQ2に格納する。
ロボットコントローラ20は、現在の命令が完了したか否かを判定する(S107)。現在の命令が完了したと判定されない場合(S107;N)、S102の処理に戻り、ロボットコントローラ20は、現在の命令に基づいて、ロボット30の制御を継続する。その後、次の命令が送信された場合には、S105の処理が実行される。次の命令が送信されなかった場合には、S105及びS106の処理は実行されず、現在の命令が完了するまで、ロボット30の制御が継続される。
S107において、現在の命令が完了したと判定された場合(S107;Y)、ロボットコントローラ20は、第1キューQ1を更新する(S108)。ロボットコントローラ20は、更新された第1キューQ1に基づいて、次の命令に応じた動作をするように、ロボット30を制御する(S109)。その後、次の命令が送信された場合には、S105の処理が実行される。次の命令が送信されなかった場合には、S105及びS106の処理は実行されず、現在の命令が完了するまで、ロボット30の制御が継続される。
上位コントローラ10は、信号がオフになったか否かを判定する(S110)。信号がオフになったと判定された場合(S110;Y)、上位コントローラ10は、ロボットコントローラ20に対し、信号がオフになったことを識別可能な命令を送信する(S111)。図4及び図5の例であれば、「MOVE P20」の移動命令と、「MOVE P21」の移動命令と、の各々は、信号がオフになったことを識別可能なので、S112において、上位コントローラ10は、これらの移動命令を次々と送信する。
ロボットコントローラ20は、信号がオフになったことを識別可能な命令を受信すると(S112)、第1キューQ1を破棄する(S113)。図4及び図5の例であれば、ロボットコントローラ20は、第1キューQ1に格納された計算済みの軌跡を破棄する。ロボットコントローラ20は、第2キューQ2に基づいて、信号がオフになった場合の命令が実行されるように、ロボット30を制御し(S114)、本処理は終了する。図4及び図5の例であれば、ロボットコントローラ20は、位置P20に移動してから位置P21に移動するように、ロボット30を制御する。
S110において、信号がオフになったと判定されない場合(S110;N)、上位コントローラ10は、所定の終了条件が満たされたか否かを判定する(S115)。終了条件が満たされたと判定されない場合(S115;N)、S102の処理に戻り、第1キューQ1に基づく制御が継続される。一方、終了条件が満たされたと判定された場合(S115;Y)、本処理は終了する。図4及び図5の例であれば、最後の命令である「MOVE P3」の移動命令まで送信されているので、この移動命令が実行されて、本処理は終了する。なお、第2キューQ2の内容は、「MOVE P2」が実行される時点で破棄される。
第1実施形態のロボット制御システム1によれば、ロボットコントローラ20が、上位コントローラ10による制御プログラムCの実行結果に応じた命令を受信し、その命令に応じた事前処理を実行することによって、その命令を実際に実行する時に、その命令に応じた処理を一から実行する場合に比べて実行すべき処理が減るので、ロボット制御における処理速度が向上する。例えば、ある命令が実際に実行されることが決定されてから、その命令に応じた処理を実行するまでに時間を要すると、次の軌跡の計算を終えていないため、現在の軌跡の目標位置へ向かって、いったんロボット30を減速させてから再び加速させなければならないことがあるが、事前処理によってこの時間が短縮してロボット30を減速させずに済むようになる。その結果、ラインやセルにおける生産効率が向上し、ロボット制御における電力消費を抑えることもできる。
また、ロボット制御システム1は、ロボットコントローラ20が、上位コントローラ10により実行された特定のコードに応じた特定の命令を受信し、その特定の命令に応じた事前処理を実行することによって、特定のコードが存在する場合の処理速度が向上する。
また、ロボット制御システム1は、ロボットコントローラ20が、制御プログラムCの条件分岐の分岐先に応じた分岐先命令を受信し、その分岐先命令に応じた事前処理を実行することによって、分岐先命令を実際に実行する場合の処理速度が向上する。
また、ロボット制御システム1は、ロボットコントローラ20が、ロボット30の目標位置までの軌跡の事前計算を実行することによって、その目標位置までロボット30を迅速に移動させることができる。例えば、ある目標位置にロボット30を移動させることが決定されてから軌跡を計算すると、軌跡の計算に時間がかかり、ロボット30が減速することがあるが、事前計算した軌跡を利用することにより、ロボット30を減速させずに済むようになる。その結果、ラインやセルにおける生産効率が向上し、ロボット制御における電力消費を抑えることもできる。
また、ロボット制御システム1は、ロボットコントローラ20が、第1計算命令に応じた第1軌跡の事前計算と、第2計算命令に応じた第2軌跡の事前計算と、を実行することによって、第1目標位置又は第2目標位置までロボット30を迅速に移動させることができる。例えば、第1目標位置又は第2目標位置に移動することが決定されてから第1軌跡又は第2軌跡を計算すると、軌跡の計算に時間がかかり、ロボット30が減速することがあるが、事前計算した第1軌跡又は第2軌跡を利用することにより、ロボット30を減速させずに済むようになる。その結果、ラインやセルにおける生産効率が向上し、ロボット制御における電力消費を抑えることもできる。
また、ロボット制御システム1は、第1計算命令に応じた第1基準位置から第1目標位置までの第1軌跡の事前計算と、第2計算命令に応じた第2基準位置から第2目標位置までの第2軌跡の事前計算と、を実行することによって、第1基準位置から第1目標位置又は第2基準位置から第2目標位置までロボット30を迅速に移動させることができる。ロボット30を減速させずに済むようになり、ラインやセルにおける生産効率も向上し、ロボット制御における電力消費を抑えることもできる。
また、ロボット制御システム1は、事前処理を実行した命令とは異なる命令が実行される場合には、その事前処理の実行結果は不要になるので、その事前処理の実行結果を破棄することによって、ロボットコントローラ20のメモリを有効活用できる。
また、ロボット制御システム1は、命令に応じた記憶領域に格納された事前処理の結果に基づいて、命令に応じた処理を実行することによって、命令に応じて記憶領域を使い分けることができ、ロボット制御システム1における処理速度が向上する。
[2.第2実施形態]
次に、第2実施形態を説明する。第1実施形態では、第1キューQ1と第2キューQ2を用意することによって、制御プログラムCに応じた事前処理を実現する場合を説明した。第2実施形態では、キューではなくツリー構造データTによって、制御プログラムCに応じた事前処理を実現する場合を説明する。以降説明する第2実施形態では、第1実施形態と同様の構成については説明を省略する。
図8は、第2実施形態の機能ブロック図である。図8に示すように、第2実施形態のロボットコントローラ20は、保持部207を含む。保持部207は、CPU21を主として実現される。保持部207は、上位コントローラ10から受信した命令に関連付けて、事前処理の実行結果を保持する。第2実施形態では、命令と事前処理の実行結果との関連付けの一例として、ツリー構造データTを説明する。ツリー構造データTは、データ記憶部200に記憶される。
図9は、第2実施形態におけるツリー構造データTの一例を示す図である。図9に示すように、第2実施形態では、位置P1の後に分岐が発生する場合を説明する。図9の例では、位置P1の後に、ロボット30が位置P2~P5の各々に移動するルートと、ロボット30が位置P6,P7に移動するルートと、が存在する。これらのルートが分かれる位置は、予め定められているので、静的な分岐ということができる。一方、何らかの突発的な事象の発生によってロボット30の移動先が変更されることは、動的な分岐ということができる。
第2実施形態では、条件分岐の条件の一例として、ロボット30が位置P1に到着した時点における所定の入力信号を説明する。この入力信号は、ロボット30の軌跡を決定するための信号である。例えば、入力信号は、ワークの位置を示す信号、周辺装置の状態を示す信号、又は他のロボットの位置を示す信号である。ロボット30が位置P1に到着した場合に、所定の入力信号がオフであれば位置P2に進み、入力信号がオンであれば位置P6に進む。
図9の例では、位置P2~P7の各々までの軌跡の事前計算が全て完了しているものとする。ツリー構造データTには、位置P2~P5の各々への移動命令又は計算命令と、位置P2~P5の各々への軌跡と、が関連付けられている。同様に、ツリー構造データTには、位置P6,P7の各々への移動命令又は計算命令と、位置P6,P7の各々への軌跡と、が関連付けられている。ツリー構造データTには、位置P1において分岐が発生することを識別可能な情報も含まれている。
処理部205は、上位コントローラ10から受信した命令に関連付けられて保持された事前処理の実行結果に基づいて、この命令に応じた処理を実行する。例えば、処理部205は、上位コントローラ10から、位置P2に分岐する旨の命令を受信した場合には、ツリー構造データTに保持された位置P2までの軌跡上を移動するように、ロボット30を制御する。この場合、図9に示すように、位置P6,P7までの軌跡は破棄されてよい。
処理部205は、上位コントローラ10から、位置P6に分岐する旨の命令を受信した場合には、ツリー構造データTに保持された位置P6までの軌跡上を移動するように、ロボット30を制御する。この場合、図9に示すように、位置P2~P5の各々までの軌跡は破棄されてよい。第2実施形態においても、図7と同様のフローが実行されるが、キューを利用せずに、ツリー構造データTが利用される点で異なる。他の点については、第1実施形態と同様である。
第2実施形態によれば、命令に関連付けられて保持された事前処理の結果に基づいて、命令に応じた処理を実行することによって、実行すべき命令の管理を効率的に行い、ロボット制御システム1における処理速度が向上する。
[3.第3実施形態]
次に、第3実施形態を説明する。第1実施形態及び第2実施形態では、上位コントローラ10がロボットコントローラ20を制御する場合を例に挙げた。ロボット制御システム1は、上位コントローラ10が存在しなくてもよい。ロボットコントローラ20は、上位コントローラ10からの命令を受信せずに、ロボット制御の処理手順が定義されたロボットプログラムRに基づいて、ロボット30を制御してもよい。ロボットプログラムRは、ロボット30を制御するためのコードを含む。ロボットプログラムRは、任意の言語によって作成可能であり、例えば、ロボット言語又はC言語によって作成可能である。以降説明する第3実施形態では、第1実施形態及び第2実施形態と同様の構成については説明を省略する。
図10は、第3実施形態におけるロボットプログラムRの一例を示す図である。第3実施形態では、第2実施形態と同様の処理がツリー構造によって実現される場合を例に挙げるが、第1実施形態で説明したキューが利用されてもよい。第3実施形態は、上位コントローラ10からの命令を必要とするか、ロボットコントローラ20単体の処理で完結するか、に関して第1実施形態及び第2実施形態と異なり、基本的な仕組みは同様である。
図10に示すように、ロボットコントローラ20は、ロボットプログラムRを先読みし、軌跡の計算が発生するたびに、ツリー構造データTを更新する。先読みとは、未処理のコードの一部を先に参照することである。例えば、実行中のコードよりも先のコードを参照することは、先読みに相当する。ロボットコントローラ20があるコードを実行している間に、次以降のコードを参照することは、先読みに相当する。例えば、分岐先のコードを先読みすることは、条件分岐の先読みに相当する。図10では、ツリー構造データTの情報が変化する様子を、符号「T」の末尾に小文字のアルファベットを付して区別する。
図10の例であれば、ロボットコントローラ20は、最初のコードである「MOVL P1」を実行し、位置P1までの軌跡を計算し、ツリー構造データTを更新する(ツリー構造データTaの状態)。ロボットコントローラ20は、次のコードである「JUMP *X IF IN#(1)=ON」を先読みする。このコードは、所定の入力信号がオンの場合に「*X」の位置にジャンプする命令である。このコードは、ロボット30が位置P1に移動した場合に実行される。
この時点では、まだ先読みの段階なので、ロボットコントローラ20は、「*X」にジャンプしない場合の「MOVL P2」と、「*X」にジャンプする場合の「MOVL P6」と、の各々を先読みする。ロボットコントローラ20は、位置P2までの軌跡と、位置P6までの軌跡と、を事前計算し、ツリー構造データTを更新する(ツリー構造データTbの状態)。
ロボットコントローラ20は、「*X」にジャンプしない場合の「MOVL P3」と、「*X」にジャンプする場合の「MOVL P7」と、の各々を先読みする。ロボットコントローラ20は、位置P3までの軌跡と、位置P7までの軌跡と、を事前計算し、ツリー構造データTを更新する(ツリー構造データTcの状態)。「*X」にジャンプした場合のコードは、それ以上存在しないので、位置P7までの軌跡以降は計算されない。
ロボットコントローラ20は、「*X」にジャンプしない場合の「MOVL P4」と「MOVE P5」の各々を先読みし、位置P4,P5の各々までの軌跡を次々と事前計算し、ツリー構造データTを更新する(ツリー構造データTd,Teの状態)。ロボットコントローラ20は、「*X」にジャンプしない場合の「MOVL P4」と「MOVE P5」の各々を先読みして、位置P5以降の軌跡を計算してもよい。ロボットコントローラ20は、ロボット30が位置P1に到達した場合の入力信号を参照し、位置P1の後のルートを決定する。その後の処理は、第2実施形態と同様であり、一方のルートに移行する場合には、他方のルートの計算結果は破棄されてもよい。なお、ロボットコントローラ20は、「*X」にジャンプしない場合には、位置P4,P5の各々までの軌跡を計算した後に、位置P6,P7の各々までの軌跡も必要になる。位置P5から位置P6までの軌跡は計算する必要があるが、位置P6から位置P7までの軌跡は、既に計算済みの軌跡を利用可能なので、再計算しないようにしてもよい。
図11は、第3実施形態の機能ブロック図である。図11に示すように、第3実施形態のロボットコントローラ20は、データ記憶部200、特定部208、事前実行部209、保持部210、及び処理部211を含む。特定部208、事前実行部209、保持部210、及び処理部211の各々は、CPU21を主として実現される。なお、事前実行部209、保持部210、及び処理部211は、第2実施形態とは処理内容が一部異なるので、第3実施形態では、別の符号を付して区別する。
特定部208は、実行対象となるコードを特定する。実行対象となるコードは、第1実施形態で説明した特定の命令を実行するためのコードと同様のコードである。先読みの対象となるコードは、実行対象となるコードの一例である。例えば、図10の例であれば、IF文は、特定のコードに相当する。特定のコードは、任意のコードであってよく、第3実施形態の例に限られない。例えば、特定のコードは、軌跡の計算が発生するコードであってもよい。
また例えば、特定のコードは、ロボットコントローラ20の計算量が基準以上になるコードであってもよい。また例えば、特定のコードは、条件分岐を示すコードであってもよい。また例えば、特定のコードは、所定の事象の発生を検知するコードであってもよい。特定のコードを識別する情報は、ロボットプログラムR内に定義されていてもよいし、他の部分に定義されていてもよい。他にも例えば、ユーザが操作機(いわゆるプログラミングペンダント)から指定してもよい。
事前実行部209は、ロボットプログラムRに、特定部208により特定されたコードがあるか否かを先読みする。事前実行部209は、ロボットプログラムRのうち、特定のコードがあるか否かを判定する。図10の例であれば、特定部208は、ロボットプログラムR内にIF文があるか否かを判定する。ロボットプログラムRの先読みは、インタープリタによって実現されてもよいし、C言語等で利用されるAPIを利用した方法等の任意の方法によって実現されるようにすればよい。
事前実行部209は、先読みの実行結果に基づいて、特定部208により特定されたコードに応じた事前処理を実行する。例えば、事前実行部209は、先読みされたコードに基づいて、目標位置までの軌跡の事前計算をする。保持部210は、事前計算結果をツリー構造データTに保持する。処理部211は、事前計算された軌跡に基づいて、ロボット30を制御する。
複数の分岐先が存在する場合には、事前実行部209は、複数の分岐先の各々の事前処理を実行し、保持部210は、分岐先ごとに、事前処理の実行結果をツリー構造データTに保持する。処理部211は、条件分岐の条件に基づいて、どの分岐先に進むかを決定し、その分岐先の事前処理に基づいて、ロボット30を制御する。不要になった分岐先の事前処理は、任意のタイミングで破棄される。
第3実施形態のロボット制御システム1によれば、ロボットコントローラ20が、ロボットプログラムRにおける実行対象となるコードを特定し、特定されたコードに応じた事前処理を実行することによって、そのコードを実際に実行する時に、そのコードに応じた処理を一から実行する場合に比べて実行すべき処理が減るので、ロボット制御における処理速度が向上する。例えば、あるコードが実際に実行されることが決定されてから、そのコードに応じた処理を実行するまでに時間を要すると、次の軌跡の計算を終えていないため、現在の軌跡の目標位置へ向かって、いったんロボット30を減速させてから再び加速させなければならないことがあるが、事前処理によってこの時間が短縮してロボット30を減速させずに済むようになる。その結果、ラインやセルにおける生産効率が向上し、ロボット制御における電力消費を抑えることもできる。
[4.変形例]
なお、本開示は、以上に説明した実施の形態に限定されるものではない。本開示の趣旨を逸脱しない範囲で、適宜変更可能である。
図12は、変形例の機能ブロック図である。以降説明する変形例では、第1実施形態及び第2実施形態のように、上位コントローラ10が存在する場合を例に挙げて説明する。図12に示すように、ロボットコントローラ20は、第5送信部102E、第6送信部102F、第7送信部102G、第5受信部201E、第6受信部201F、第7受信部201G、第6事前実行部203F、第7事前実行部203G、第8事前実行部203H、第1処理部205A、第2処理部205B、計算部212、及び移動制御部213を含む。なお、第3処理部205Cは、第1実施形態の処理部205と同様の機能を有する。第4処理部205Dは、第2実施形態の処理部205と同様の機能を有する。
(1)例えば、ロボット30の軌跡が分岐する場合に、その分岐位置に関する分岐位置情報がロボットコントローラ20に送信されてもよい。変形例(1)の上位コントローラ10は、第5送信部102Eを含む。第5送信部102Eは、ロボットコントローラ20に対し、ロボット30の軌跡が第1軌跡又は第2軌跡の何れかに分岐する分岐位置に関する分岐位置情報を送信する。第1実施形態又は第2実施形態のようにロボット30を移動させる場合には、位置P1が分岐位置に相当する。
変形例(1)のロボットコントローラ20は、第5受信部201と、第6事前実行部203Fと、を含む。第5受信部201は、上位コントローラ10から、分岐位置情報を受信する。分岐位置情報は、移動命令又は計算命令に含まれていてもよいし、命令とは別に送信されてもよい。分岐位置情報は、分岐位置を示す座標を含む。分岐位置は、制御プログラムCに定義されているものとするが、ユーザにより指定されてもよいし、その場で動的に決定されてもよい。
第6事前実行部203Fは、分岐位置情報に基づいて、第1軌跡の事前計算と、第2軌跡の事前計算と、を実行する。第6事前実行部203Fは、分岐位置から分岐して第1軌跡上をロボット30が移動するように、第1軌跡の事前計算を実行する。第6事前実行部203Fは、分岐位置から分岐して第2軌跡上をロボット30が移動するように、第2軌跡の事前計算を実行する。分岐位置は、第1実施形態の基準位置に相当する。基準位置の一例である分岐位置に基づいて軌跡を計算する方法は、第1実施形態で説明した通りである。
変形例(1)によれば、ロボット30が第1軌跡又は第2軌跡の何れかに分岐する分岐位置に関する分岐位置情報に基づいて、第1軌跡の事前計算と、第2軌跡の事前計算と、を実行することによって、ロボットコントローラ20側で分岐位置の計算をする必要がなくなる。
(2)また例えば、第1実施形態では、上位コントローラ10により所定の事象が発生したことが検知される場合を説明したが、事象の検知は、ロボットコントローラ20により実行されてもよい。この場合、上位コントローラ10は、所定の事象が発生する制御プログラムC内の位置(即ち、事象が発生しうるタイミング)を、ロボットコントローラ20に通知してもよい。
変形例(2)の上位コントローラ10は、第6送信部102Fを含む。第6送信部102Fは、ロボットコントローラ20に対し、制御プログラムCにおける特定のコードの位置に関するコード位置情報を送信する。図4の例であれば、ロボット30が位置P1に到着するまでの間に事象が発生するので、コード位置情報は、「MOVL P1」の実行完了を示す。コード位置情報は、他のコードの位置であってもよく、例えば、IF文の位置であってもよい。また例えば、複数のIF文が存在した場合には、特定のIF文だけが実行されるように、特定のIF文の位置がコード位置情報として示されてもよい。コード位置情報は、軌跡の事前計算の計算命令に含まれてもよいし、この計算命令とは別の命令に含まれてもよい。
変形例(2)のロボットコントローラ20は、第5受信部201Eと、第1処理部205Aと、を含む。第5受信部201Eは、上位コントローラ10から、コード位置情報を受信する。第1処理部205Aは、コード位置情報と、事前処理の実行結果と、に基づいて、特定のコードに応じた処理を実行する。第1処理部205Aは、コード位置情報に基づいて、事前処理の実行結果を利用した処理を実行するか否かを判定する。図4の例であれば、第1処理部205Aは、ロボット30が位置P1に到着するまでの間に、所定の事象を検知したか否かを判定する。第1処理部205Aは、ロボット30が位置P1に到着するまでの間に、所定の事象を検知したと判定した場合には、事前計算した軌跡に基づいて、ロボット30を位置P20に移動させる。その後の処理は、第1実施形態で説明した通りである。
変形例(2)によれば、ロボットコントローラ20が、上位コントローラ10から受信したコード位置情報と、事前処理の実行結果と、に基づいて、特定のコードに応じた処理を実行することによって、特定のコードに応じた処理をより迅速に実行できる。例えば、ロボットコントローラ20側で条件分岐の条件を判定することもでき、上位コントローラ10の処理負荷を軽減できる。ロボットコントローラ20側で条件分岐の条件を判定する場合には、上位コントローラ10から判定結果を受信する必要がなくなるので、より迅速にロボット30を制御できる。
(3)また例えば、ロボットコントローラ20は、ロボット30が第1目標位置に移動している間に所定の事象が発生した場合に、当該事象が発生した位置から第2目標位置まで移動するための軌跡を計算する計算部212を含んでもよい。この事象は、第1実施形態で説明したような信号のオン/オフであってもよいし、異常の発生であってもよい。事象の発生は、上位コントローラ10又はロボットコントローラ20により検知されるようにすればよい。
図13は、変形例(3)における処理の一例を示す図である。図13では、第2実施形態のようにツリー構造データTを例に挙げて軌跡が計算される様子を説明する。図13は、ロボット30が位置P2から位置P3に移動している最中に、所定の事象が発生し、位置P20,P21を経由して位置P0に戻る場合を示す。この場合、計算部212は、事象発生後に、位置P20までの軌跡、位置P21までの軌跡、及び位置P0までの軌跡を計算する。なお、位置P20,P21は、制御プログラムCに定義されているものとする。位置P0は、初期位置の位置であり、ロボットコントローラ20が予め把握しているものとする。
上位コントローラ10は、所定の事象が発生した後に、位置P20への移動命令と、位置P21への移動命令と、をロボットコントローラ20に送信する。なお、位置P20,P21は、所定の事象が発生する前に、別途設けられたキュー等に送信済みであるものとするが、所定の事象が発生した後に送信される移動命令に、位置P20,P21が含まれていてもよい。ロボットコントローラ20の計算部212は、これらの移動命令に基づいて、軌跡を計算すればよい。計算部212は、位置P0の軌跡として、初期位置に回帰する場合の軌跡を計算すればよい。これらの軌跡は、所定の事象が発生した場合に、その場で計算される。なお、計算部212は、所定の事象が発生する前に、位置P20から位置P21までの軌跡と、位置P21から位置P0までの軌跡と、を予め計算しておいてもよい。この場合、計算部212は、所定の事象が発生した後に、その位置から位置P20までの軌跡だけを計算すれば済むようになる。
図14は、変形例(3)における処理の一例を示す図である。図14では、第1実施形態のように第1キューQ1と第2キューQ2が用いられる場合を例に挙げる。図14は、ロボット30が位置P1から位置P2に移動している最中に、第1実施形態で説明した信号がオンからオフになり、その時点の位置(位置P1と位置P2の間の位置)から位置P20に移動する場合を示す。この場合、ロボット30が位置P1にはいないので、位置P1から位置P20までの軌跡は使用できないが、位置P20から位置P21までの軌跡は流用できる。計算部212は、ロボット30の現在位置を取得し、現在位置から位置P20までの新しい軌跡を計算する。位置P20から位置P21までの軌跡は、再計算せずに計算済みのものが利用される。計算部212が軌跡を計算した後のロボット30の制御は、第1実施形態及び第2実施形態と同様である。
変形例(3)によれば、ロボット30が第1目標位置に移動している間に所定の事象が発生した場合に、当該事象が発生した位置から第2目標位置まで移動するための軌跡を計算することによって、所定の事象が発生したとしても、第2目標位置にロボット30を移動させ、発生した事象に迅速に対応できる。
(4)また例えば、変形例(2)では、コード位置情報が送信される場合を説明したが、制御プログラムCにおけるコード位置ではなく、条件分岐のタイミングがロボットコントローラ20に送信されてもよい。例えば、生産計画の変更等が発生することは、条件分岐に相当するので、生産計画が変更されたタイミング又は生産計画が今後変更されるタイミングがロボットコントローラ20に送信されてもよい。
変形例(4)の上位コントローラ10は、第1実行部101Aと、第7送信部102Gと、を含む。第1実行部101Aは、第1実施形態で説明した通りである。第7送信部102Gは、ロボットコントローラ20に対し、条件分岐のタイミングに関するタイミング情報を送信する。タイミング情報は、条件分岐が発生するタイミングである。条件分岐のタイミングは、制御プログラムCに定義されていてもよいし、外的な要因に基づいて動的に決定されてもよい。例えば、タイミング情報は、既に条件分岐のタイミングが訪れたか否か、又は、いつ条件分岐が訪れるかを識別可能な情報である。
変形例(4)のロボットコントローラ20は、第6受信部201Fと、第2処理部205Bと、を含む。第6受信部201Fは、上位コントローラ10から、タイミング情報を受信する。第2処理部205Bは、タイミング情報と、事前処理の実行結果と、に基づいて、分岐先に応じた処理を実行する。第2処理部205Bは、タイミング情報に基づいて、条件分岐の条件が満たされたか否かを判定する。この条件は、タイミング情報に含まれていてもよい。第2処理部205Bは、条件分岐のタイミングが訪れたか否かを判定する。第2処理部は、条件分岐のタイミングが訪れたと判定した場合に、事前処理の実行結果を利用した処理を実行する。事前処理の実行結果を利用した処理は、第1実施形態及び第2実施形態で説明した通りである。
変形例(4)によれば、ロボットコントローラ20が、上位コントローラ10から受信したタイミング情報と、事前処理の実行結果と、に基づいて、分岐先に応じた処理を実行することによって、分岐先に進んだ場合の処理をより迅速に実行できる。
(5)また例えば、ロボットコントローラ20は、ロボット30が所定の目標位置に到達する前に、事前処理の実行結果に基づいて、ロボット30に減速を開始させ、かつ、次の目標位置への移動を開始させる移動制御部213を含んでもよい。図4及び図5の例では、所定の事象が発生した場合に、ロボット30が減速せずに定速で位置P20への移動を開始するが、移動制御部213は、ある程度ロボット30を減速させてから、次の目標位置である位置P20への移動を開始させてもよい。例えば、移動制御部213は、現状のロボット30の速度が位置P20への移動で指定された速度を超えている場合には、当該指定された速度まで減速させ、位置P20への移動を開始させてもよい。
変形例(5)によれば、ロボット30が所定の目標位置に到達する前に、事前処理に基づいて、ロボット30に減速を開始させ、かつ、次の目標位置への移動を開始させることによって、ロボット30を次の目標位置に迅速に到達させることができる。
(6)また例えば、ロボットコントローラ20は、第7事前実行部203Gは、上位コントローラ10からの命令に応じて、ロボット30の周辺装置の制御に関する事前処理を実行する第7事前実行部203Gを含んでもよい。周辺装置は、ロボット制御に関する装置であればよく、例えば、I/O機器、センサ、加工機、計測装置、検査装置、又はロボット30以外の他のロボットであってもよい。この事前処理は、周辺装置のスタンバイであってもよいし、周辺装置に何らかの計算をさせることであってもよい。第7事前実行部203Gが実行する事前処理は、その後のロボット30制御に必要な準備に相当する処理であればよい。
変形例(6)によれば、ロボットコントローラ20が、命令に基づいて、ロボット30の周辺装置の制御に関する事前処理を実行することによって、周辺装置の処理速度が向上する。
(7)また例えば、ロボットコントローラ20は、第8事前実行部203Hを含む。第8事前実行部203Hは、上位コントローラ10からの命令に、事前処理を実行させることを識別可能な識別情報が含まれている場合に、事前処理を実行する第8事前実行部203Hを含んでもよい。第1実施形態で説明した「Sub Target Send」はこの命令の一例である。第1実施形態で説明したように、事前処理が必要であることは、何らかの記号列によって識別されるようにすればよく、他の記号列で識別されてもよい。第8事前実行部203Hは、受信した命令に識別情報が含まれていなければ、事前処理を要する命令ではないと判定する。第8事前実行部203Hは、受信した命令に識別情報が含まれていれば、事前処理を要する命令であると判定する。事前処理の詳細は、第1実施形態及び第2実施形態で説明した通りである。
変形例(7)によれば、ロボットコントローラ20が、命令に識別情報が含まれている場合に、事前処理を実行することによって、事前処理であることを把握できる。
(8)また例えば、上記変形例を組み合わせてもよいし、上記変形例を第3実施形態に適用してもよい。
また例えば、上記説明した各機能は、ロボット制御システム1における任意の装置で実現されるようにすればよい。例えば、上位コントローラ10に含まれるものとして説明した機能がロボットコントローラ20により実現されてもよい。また例えば、ロボットコントローラ20に含まれるものとして説明した機能が上位コントローラ10により実現されてもよい。また例えば、上位コントローラ10とロボットコントローラ20との間で機能が分担されてもよい。
1 ロボット制御システム、10 上位コントローラ、20 ロボットコントローラ、30 ロボット、11,21 CPU、12,22 記憶部、13,23 通信部、C 制御プログラム、Q キュー、F ファームウェア、R ロボットプログラム、T ツリー構造データ、100 データ記憶部、101 実行部、101A 第1実行部、101B 第2実行部、102 送信部、102A 第1送信部、102B 第2送信部、102C 第3送信部、102D 第4送信部、102E 第5送信部、102F 第6送信部、102G 第7送信部、200 データ記憶部、201 受信部、201A 第1受信部、201B 第2受信部、201C 第3受信部、201D 第4受信部、201E 第5受信部、201F 第6受信部、201G 第7受信部、202 基準位置取得部、203 事前実行部、203A 第1事前実行部、203B 第2事前実行部、203C 第3事前実行部、203D 第4事前実行部、203E 第5事前実行部、203F 第6事前実行部、203G 第7事前実行部、203H 第8事前実行部、204 格納部、205 処理部、205A 第1処理部、205B 第2処理部、205C 第3処理部、205D 第4処理部、206 破棄部、207 保持部、208 特定部、209 事前実行部、210 保持部、211 処理部、212 計算部、213 移動制御部。

Claims (18)

  1. ロボットを制御可能なロボットコントローラと、前記ロボットコントローラと通信可能な上位コントローラと、を有するロボット制御システムであって、
    前記上位コントローラは、
    制御プログラムを実行する実行部と、
    前記ロボットコントローラに対し、前記制御プログラムの実行結果に応じた命令を送信する送信部と、
    を有し、
    前記ロボットコントローラは、
    前記上位コントローラから、前記命令を受信する受信部と、
    前記命令に応じた事前処理を実行する事前実行部と、
    を有するロボット制御システム。
  2. 前記上位コントローラは、
    前記制御プログラムの特定のコードを実行する第1実行部と、
    前記ロボットコントローラに対し、前記特定のコードに応じた特定の命令を送信する第1送信部と、
    を有し、
    前記ロボットコントローラは、
    前記上位コントローラから、前記特定の命令を受信する第1受信部と、
    前記特定の命令に応じた事前処理を実行する第1事前実行部と、
    を有する請求項1に記載のロボット制御システム。
  3. 前記上位コントローラは、
    条件分岐を有する前記制御プログラムを実行する第2実行部と、
    前記ロボットコントローラに対し、前記条件分岐の分岐先に応じた分岐先命令を送信する第2送信部と、
    を有し、
    前記ロボットコントローラは、
    前記上位コントローラから、前記分岐先命令を受信する第2受信部と、
    前記分岐先命令に応じた事前処理を実行する第2事前実行部と、
    を有する請求項1又は2に記載のロボット制御システム。
  4. 前記上位コントローラは、前記ロボットコントローラに対し、前記ロボットの目標位置までの軌跡を計算させるための計算命令を送信する第3送信部を有し、
    前記ロボットコントローラは、
    前記上位コントローラから、前記計算命令を受信する第3受信部と、
    前記計算命令に応じた前記軌跡の事前計算を実行する第3事前実行部と、
    を有する請求項1~3の何れかに記載のロボット制御システム。
  5. 前記上位コントローラは、前記ロボットコントローラに対し、前記制御プログラムの実行結果に応じて、前記ロボットの第1目標位置までの第1軌跡を計算させるための第1計算命令と、前記ロボットが前記第1目標位置とは異なる第2目標位置まで移動する場合の第2軌跡を計算させるための第2計算命令と、を送信する第4送信部を有し、
    前記ロボットコントローラは、
    前記上位コントローラから、前記第1計算命令と前記第2計算命令とを受信する第4受信部と、
    前記第1計算命令に応じた前記第1軌跡の事前計算と、前記第2計算命令に応じた前記第2軌跡の事前計算と、を実行する第4事前実行部と、
    を有する請求項1~4の何れかに記載のロボット制御システム。
  6. 前記ロボットコントローラは、
    前記第1軌跡に応じた前記ロボットの第1基準位置と、前記第2軌跡に応じた前記ロボットの第2基準位置と、を取得する基準位置取得部と、
    前記第1基準位置から前記第1目標位置までの前記第1軌跡の事前計算と、前記第2基準位置から前記第2目標位置までの前記第2軌跡の事前計算と、を実行する第5事前実行部と、
    を有する請求項5に記載のロボット制御システム。
  7. 前記上位コントローラは、前記ロボットコントローラに対し、前記ロボットの軌跡が前記第1軌跡又は前記第2軌跡の何れかに分岐する分岐位置に関する分岐位置情報を送信する第5送信部を有し、
    前記ロボットコントローラは、
    前記上位コントローラから、前記分岐位置情報を受信する第5受信部と、
    前記分岐位置情報に基づいて、前記第1軌跡の事前計算と、前記第2軌跡の事前計算と、を実行する第6事前実行部と、
    を有する請求項5又は6に記載のロボット制御システム。
  8. 前記上位コントローラは、前記ロボットコントローラに対し、前記制御プログラムにおける特定のコードの位置に関するコード位置情報を送信する第6送信部と、
    を有し、
    前記ロボットコントローラは、
    前記上位コントローラから、前記コード位置情報を受信する第6受信部と、
    前記コード位置情報と、前記事前処理の実行結果と、に基づいて、前記特定のコードに応じた処理を実行する第1処理部と、
    を有する請求項1~7の何れかに記載のロボット制御システム。
  9. 前記ロボットコントローラは、前記ロボットが第1目標位置に移動している間に所定の事象が発生した場合に、当該事象が発生した位置から第2目標位置まで移動するための軌跡を計算する計算部を有する、
    請求項1~8の何れかに記載のロボット制御システム。
  10. 前記上位コントローラは、
    条件分岐を有する前記制御プログラムを実行する第2実行部と、
    前記ロボットコントローラに対し、前記条件分岐のタイミングに関するタイミング情報を送信する第7送信部と、
    を有し、
    前記ロボットコントローラは、
    前記上位コントローラから、前記タイミング情報を受信する第7受信部と、
    前記タイミング情報と、前記事前処理の実行結果と、に基づいて、前記条件分岐の分岐先に応じた処理を実行する第2処理部と、
    請求項1~9の何れかに記載のロボット制御システム。
  11. 前記ロボットコントローラは、前記命令とは異なる命令が実行される場合に、前記事前処理の実行結果を破棄する破棄部を有する、
    請求項1~10の何れかに記載のロボット制御システム。
  12. 前記ロボットコントローラは、前記ロボットが所定の目標位置に到達する前に、前記事前処理の実行結果に基づいて、前記ロボットに減速を開始させ、かつ、次の目標位置への移動を開始させる移動制御部を有する、
    請求項1~11の何れかに記載のロボット制御システム。
  13. 前記ロボットコントローラは、前記命令に応じて、前記ロボットの周辺装置の制御に関する事前処理を実行する第7事前実行部を有する、
    請求項1~12の何れかに記載のロボット制御システム。
  14. 前記命令は、前記事前処理を実行させることを識別可能な識別情報を含み、
    前記ロボットコントローラは、前記命令に前記識別情報が含まれている場合に、前記事前処理を実行する第8事前実行部を有する、
    請求項1~13の何れかに記載のロボット制御システム。
  15. 前記ロボットコントローラは、
    複数の記憶領域のうち、前記命令に応じた記憶領域に、前記事前処理の実行結果を格納する格納部と、
    前記命令に応じた記憶領域に格納された前記事前処理の実行結果に基づいて、前記命令に応じた処理を実行する第3処理部と、
    を有する請求項1~14の何れかに記載のロボット制御システム。
  16. 前記ロボットコントローラは、
    前記命令に関連付けて、前記事前処理の実行結果を保持する保持部と、
    前記命令に関連付けられて保持された前記事前処理の実行結果に基づいて、前記命令に応じた処理を実行する第4処理部と、
    を有する請求項1~15の何れかに記載のロボット制御システム。
  17. ロボットを制御可能なロボットコントローラであって、
    実行対象となるコードを特定する特定部と、
    ロボットプログラムにおける前記特定されたコードに応じた事前処理を実行する事前実行部と、
    を有するロボットコントローラ。
  18. ロボットを制御可能なロボットコントローラと、前記ロボットコントローラと通信可能な上位コントローラと、の各々によるロボット制御方法であって、
    制御プログラムを実行し、
    前記ロボットコントローラに対し、前記制御プログラムの実行結果に応じた命令を送信し、
    前記上位コントローラから、前記命令を受信し、
    前記命令に応じた事前処理を実行する、
    ロボット制御方法。
JP2021030295A 2021-02-26 2021-02-26 ロボット制御システム、ロボットコントローラ、及びロボット制御方法 Pending JP2022131374A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2021030295A JP2022131374A (ja) 2021-02-26 2021-02-26 ロボット制御システム、ロボットコントローラ、及びロボット制御方法
EP22157705.9A EP4049808A1 (en) 2021-02-26 2022-02-21 Robot control system, robot controller, and robot control method
US17/679,156 US20220274253A1 (en) 2021-02-26 2022-02-24 Robot control system, robot controller, and robot control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021030295A JP2022131374A (ja) 2021-02-26 2021-02-26 ロボット制御システム、ロボットコントローラ、及びロボット制御方法

Publications (1)

Publication Number Publication Date
JP2022131374A true JP2022131374A (ja) 2022-09-07

Family

ID=80446107

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021030295A Pending JP2022131374A (ja) 2021-02-26 2021-02-26 ロボット制御システム、ロボットコントローラ、及びロボット制御方法

Country Status (3)

Country Link
US (1) US20220274253A1 (ja)
EP (1) EP4049808A1 (ja)
JP (1) JP2022131374A (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6801333B2 (ja) 2016-09-27 2020-12-16 株式会社デンソーウェーブ ロボット用の表示システム
EP3480671A1 (de) * 2017-11-02 2019-05-08 Siemens Aktiengesellschaft Verfahren zum betrieb einer numerisch gesteuerten produktionsanlage sowie produktionsanlage dazu

Also Published As

Publication number Publication date
EP4049808A1 (en) 2022-08-31
US20220274253A1 (en) 2022-09-01

Similar Documents

Publication Publication Date Title
US10766139B2 (en) Method for avoiding collisions between two robots
TWI699700B (zh) 編譯方法、編譯器及相關計算機程式
CN103203753B (zh) 用于识别和处理异常情况的机器人和方法
US10775772B2 (en) Method and a system for controlling a velocity of a conveyance path
CN108595371B (zh) 用于向量运算的数据读取、写入及读写调度器及保留站
EP3624997B1 (en) Method and control system for controlling movement sequences of a robot
US20060112394A1 (en) Computer system
KR20210002069A (ko) 엔드 디바이스, 엔드 디바이스를 제어하기 위한 에지 서버 및 클라우드 서버를 포함하는 3자간 통신 시스템, 및 그의 동작 방법
CN113561171B (zh) 具有动态运动调整机制的机器人系统及其操作方法
JP2022131374A (ja) ロボット制御システム、ロボットコントローラ、及びロボット制御方法
CN108983735B (zh) 移动机器人调度装置与方法
CN108228326A (zh) 批量任务处理方法和分布式系统
CN112969558A (zh) 机器人的预测控制方法及相关控制系统
CN113954104A (zh) 并联机器人的多线程控制器
CN109891338A (zh) 拍摄仪器协同装置、拍摄仪器协同程序、协同支持系统及控制系统
CN116197919B (zh) 机器人控制系统及控制方法
CN111381555B (zh) 一种多轴运动控制方法及多轴运动设备
US10289087B2 (en) Motion controller
CN116069485A (zh) 用于处理任务的方法、装置、电子设备和介质
CN107077119B (zh) 数控装置
TWI515520B (zh) Industrial robotic system and its control device
CN115715405A (zh) 手部姿态估计方法、移动设备、头戴式显示器及系统
CN111699078A (zh) 机器人的运行
US20230288904A1 (en) Numerical control device having function of changing set parameter for controlling control object at certain timing, and method for changing set parameter therefor
US20210080927A1 (en) Numerical control system with buffering of position setpoint values

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231115