JP2019150888A - ロボット、制御方法およびプログラム - Google Patents
ロボット、制御方法およびプログラム Download PDFInfo
- Publication number
- JP2019150888A JP2019150888A JP2018035380A JP2018035380A JP2019150888A JP 2019150888 A JP2019150888 A JP 2019150888A JP 2018035380 A JP2018035380 A JP 2018035380A JP 2018035380 A JP2018035380 A JP 2018035380A JP 2019150888 A JP2019150888 A JP 2019150888A
- Authority
- JP
- Japan
- Prior art keywords
- point
- repeat
- repetition
- loop
- control unit
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 230000008569 process Effects 0.000 claims description 64
- 230000003252 repetitive effect Effects 0.000 abstract description 11
- 230000000977 initiatory effect Effects 0.000 abstract 5
- 238000012545 processing Methods 0.000 description 35
- 239000013256 coordination polymer Substances 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000000449 premovement Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J13/00—Controls for manipulators
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/18—Numerical 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/4093—Numerical 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 part programming, e.g. entry of geometrical information as taken from a technical drawing, combining this with machining and material information to obtain control information, named part programme, for the NC machine
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/42—Recording and playback systems, i.e. in which the programme is recorded from a cycle of operations, e.g. the cycle of operations being manually controlled, after which this record is played back on the same machine
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Geometry (AREA)
- Human Computer Interaction (AREA)
- Manufacturing & Machinery (AREA)
- Numerical Control (AREA)
- Manipulator (AREA)
Abstract
【課題】命令やつなぎ情報を用いることなく、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスを用意し、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスによって、繰り返し動作を実現させる。【解決手段】ポイントデータ列は、繰り返しの開始の性質を持つ組込ポイント種別である繰り返し開始点と、繰り返し終了の性質を持つ組込ポイント種別である繰り返し終了点と、組込ポイント種別を継承元として定義されたポイント種別からなるポイントデータと、を含み、制御部は、繰り返し開始点を継承した定義から作られたポイントデータにおいて運転の繰り返しを開始し、繰り返し終了点を継承した定義から作られたポイントデータにおいて運転の繰り返しを終了することにより、運転を繰り返す制御を行う。【選択図】図2
Description
本発明は、ロボット、制御方法およびプログラムに関する。
ポイントオブジェクトを主体とした産業用ロボットのティーチングシステムが知られている。この種のポイントオブジェクト指向型ティーチングシステムPOOTS(プーツ;Point Object Oriented Teaching System)では、カプセル化や継承の特性を持ったクラスであるポイント種別を定義することができ、フログラムはこのクラスのインスタンスであるポイントの並びからなる(例えば、特許文献1、2参照)。
なお、ここで、「クラス」とは、ポイントデータの定義であり、「ポイントデータ」とは、座標と運転条件を含んだデータであり、「継承」とは、基底クラスの性質を引き継ぐことをいい、「組込クラス」とは、開発時に予め定義されたクラスをいう。また、「ポイントデータ列」とは、「ポイントデータ」が、例えば、時系列的に並んだデータ群をいい、「インスタンス」とは、ポイント種別より作成された実際のポイントデータをいう。なお、ここで、「ポイント種別」とは、ポイントデータの定義を基に作成されたポイントデータの雛形をいう。
なお、ここで、「クラス」とは、ポイントデータの定義であり、「ポイントデータ」とは、座標と運転条件を含んだデータであり、「継承」とは、基底クラスの性質を引き継ぐことをいい、「組込クラス」とは、開発時に予め定義されたクラスをいう。また、「ポイントデータ列」とは、「ポイントデータ」が、例えば、時系列的に並んだデータ群をいい、「インスタンス」とは、ポイント種別より作成された実際のポイントデータをいう。なお、ここで、「ポイント種別」とは、ポイントデータの定義を基に作成されたポイントデータの雛形をいう。
産業用ロボットの作業の一つに、ピックアップアンドプレイス作業がある。例えば、1点から部品を取って(ピックアップ)、それをパレットに配置していく(プレイス)作業である。このピックアップアンドプレイスの作業では、本質的に、ピックアップ点とプレイス点を行ったり来たりして繰り返し作業を行う。
パレットに部品をプレイスしていく、あるいはパレットから部品をピックアップするといった場合、パレットを設定し、これをポイントに対して属性として付加することにより、繰り返す毎に位置をずらしていくといったことが行われている。この場合、位置をずらしていくために、特に命令を設定する必要は無い。
ここで、「パレット」とは、同じ場所、あるいは等間隔にポイントデータを配置したものをいう。また、パレットにより、開始点、終了点が確定し、「先頭戻り」、「折り返し」を指定することによって、ロボットの移動経路も決定されるパレットの特徴を「パレット属性」という。
ここで、「パレット」とは、同じ場所、あるいは等間隔にポイントデータを配置したものをいう。また、パレットにより、開始点、終了点が確定し、「先頭戻り」、「折り返し」を指定することによって、ロボットの移動経路も決定されるパレットの特徴を「パレット属性」という。
しかし、一方で、部品をピックアップして、この部品をプレイスした後に、部品をピックアップする点に「戻る」ためには、ポイントをジャンプする命令を設定する必要がある。また、特許文献3では、次の実行ポイントを示すための、つながりデータといったものをポイントあるいは、ポイントとポイントとの間に持たせることにより、命令無しで「戻り」を実現する方法を提案している。
この特許文献3に記載の方法は、命令を使わずに済むという点において有効であるが、一方で、ポイント毎に明示的に「戻り」を示す方法であるため、場合によっては、煩雑になる。より具体的には、パレットの機能には、「戻り」の条件が示されているが、ポイント種別やパレットそれぞれの特徴を理解した上で、ポイントティーチングを行う必要があるため、ティーチングの内容によっては、その作業は煩雑なものとなる。
この特許文献3に記載の方法は、命令を使わずに済むという点において有効であるが、一方で、ポイント毎に明示的に「戻り」を示す方法であるため、場合によっては、煩雑になる。より具体的には、パレットの機能には、「戻り」の条件が示されているが、ポイント種別やパレットそれぞれの特徴を理解した上で、ポイントティーチングを行う必要があるため、ティーチングの内容によっては、その作業は煩雑なものとなる。
ポイントオブジェクト指向型ティーチングシステムでは、基本的に、ポイント列の実行はポイント列の並び順で行われる。そのため、ピックアップアンドプレイス作業を行う場合には、単純な場合でも、ポイントだけでは設定できず、命令やつなぎ情報といったものが必要となってしまう。
また、ポイントオブジェクト指向型ティーチングシステムでは、原則として「命令」は、ポイント種別定義を作成する場合に利用するものであり、ユーザが、命令を書く必要が無い、というのが特徴であるが、ピックアップアンドプレイスの作業では、この原則が覆され、特徴が活かされていないという問題がある。
また、部品の多パレットから多パレットへの載せ替えはともかく、1つのパレットから1つのパレット、1つのパレットから多パレット、あるいは多パレットから1つのパレットへの載せ替え(ピックアップアンドプレイス)では、命令やつなぎ情報を使わなくても良い様にしたいという要求もあった。
そこで、本発明は、上述の課題に鑑みてなされたものであり、命令やつなぎ情報を用いることなく、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスを用意し、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスによって、繰り返し動作を実現させるロボット、制御方法およびプログラムを提供することを目的とする。
形態1;本発明の1またはそれ以上の実施形態は、本体と、制御部と、を備え、前記制御部が、作業ツールの運転条件を含むポイント種別の定義に基づくポイントデータを含むポイントデータ列に基づいて作業を実行するロボットであって、前記ポイント種別は、繰り返しの開始の性質を持つ組込ポイント種別である繰り返し開始点と、繰り返し終了の性質を持つ組込ポイント種別である繰り返し終了点と、前記繰り返し開始点又は前記繰り返し終了点を継承元として定義されたポイント種別と、を含み、前記制御部が、前記繰り返し開始点又は該繰り返し開始点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを開始し、前記繰り返し終了点又は該繰り返し終了点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを終了することにより、前記作業ツールの運転を繰り返す制御を行うことを特徴とするロボットを提案している。
形態2;本発明の1またはそれ以上の実施形態は、前記繰り返し開始点又は該繰り返し開始点を承継元として定義されたポイント種別のいずれかに基づくポイントデータのポイントを繰り返し開始ポイントとし、前記繰り返し終了点又は該繰り返し終了点を承継元として定義されたポイント種別のいずれかに基づくポイントデータのポイントを繰り返し終了ポイントとし、前記制御部は、1の前記繰り返し開始ポイントに複数の前記繰り返し終了ポイントを対応させ、あるいは、複数の前記繰り返し開始ポイントに1の前記繰り返し終了ポイントを対応させることを特徴とするロボットを提案している。
形態3;本発明の1またはそれ以上の実施形態は、前記制御部は、前記1の繰り返し開始ポイントと、対応する前記複数の前記繰り返し終了ポイントのうち、1の繰り返し終了ポイントと、において、前記運転を繰り返す、あるいは、前記1の繰り返し終了ポイントと、対応する前記複数の繰り返し開始ポイントのうち、1の繰り返し開始ポイントと、において、前記運転を繰り返す制御を行うロボットを提案している。
形態4;本発明の1またはそれ以上の実施形態は、前記制御部は、前記1の繰り返し開始ポイントと、対応する前記複数の繰り返し終了ポイントと、において、順に、前記運転を繰り返す、あるいは、前記1の繰り返し終了ポイントと対応する前記複数の繰り返し開始ポイントと、において、順に、前記運転を繰り返すロボットを提案している。
形態5;本発明の1またはそれ以上の実施形態は、前記制御部は、前記運転の繰り返しが予め設定された回数に達した場合、予め設定された該運転の繰り返しを終了する終了条件が成立した場合、あるいは、該運転の繰り返しを終了する終了命令が実行された場合に、該運転の繰り返しを終了することを特徴とするロボットを提案している。
形態6;本発明の1またはそれ以上の実施形態は、前記制御部は、前記運転の繰り返しが終了した後に、他の運転の繰り返しを行うロボットを提案している。
形態7;本発明の1またはそれ以上の実施形態は、本体と、制御部と、を備え、前記制御部が、作業ツールの運転条件を含むポイント種別の定義に基づくポイントデータを含むポイントデータ列に基づいて作業を実行するロボットにおける制御方法であって、前記ポイント種別は、繰り返しの開始の性質を持つ組込ポイント種別である繰り返し開始点と、繰り返し終了の性質を持つ組込ポイント種別である繰り返し終了点と、前記繰り返し開始点又は前記繰り返し終了点を継承元として定義されたポイント種別と、を含み、前記制御部が、前記繰り返し開始点又は該繰り返し開始点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを開始する第1の工程と、前記制御部が、前記繰り返し終了点又は該繰り返し終了点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを終了する第2の工程と、を備え、前記制御部が、前記第1の工程と第2の工程とを実行することにより、前記作業ツールの運転を繰り返す制御を行うことを特徴とする制御方法を提案している。
形態8;本発明の1またはそれ以上の実施形態は、本体と、制御部と、を備え、前記制御部が、作業ツールの運転条件を含むポイント種別の定義に基づくポイントデータを含むポイントデータ列に基づいて作業を実行するロボットにおける制御方法をコンピュータに実行させるためのプログラムであって、前記ポイント種別は、繰り返しの開始の性質を持つ組込ポイント種別である繰り返し開始点と、繰り返し終了の性質を持つ組込ポイント種別である繰り返し終了点と、前記繰り返し開始点又は前記繰り返し終了点を継承元として定義されたポイント種別と、を含み、前記制御部が、前記繰り返し開始点又は該繰り返し開始点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを開始する第1の工程と、前記制御部が、前記繰り返し終了点又は該繰り返し終了点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを終了する第2の工程と、を備え、前記制御部が、前記第1の工程と第2の工程とを実行することにより、前記作業ツールの運転を繰り返す制御を行うことを特徴とするプログラムを提案している。
本発明の1またはそれ以上の実施形態によれば、命令やつなぎ情報を用いることなく、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスを用意し、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスによって、繰り返し動作を実現させることができるという効果がある。
<実施形態>
以下、本発明の実施形態について、図1から図13を用いて説明する。
以下、本発明の実施形態について、図1から図13を用いて説明する。
<ロボットの構成>
図1を用いて、本実施形態に係るロボットの構成について説明する。
図1を用いて、本実施形態に係るロボットの構成について説明する。
図1に示すように、ロボット1は、主として、制御部(コントローラ)10と、本体20とから構成されている。本体20は、後述する作業ツールを横方向であるX方向に稼働するXスライダー30と、X方向への稼働部に載置され、作業ツールを奥行き方向であるY方向に稼働するYスライダー40と、Y方向への稼働部に載置され、作業ツールを垂直方向であるZ方向に稼働するZスライダー50とを含んで構成されている。
また、Zスライダー50のZ方向への稼働部には、作業ツールが取り付けられている。そして、各スライダーは、図示しないモータにより駆動され、制御部(コントローラ)10からの指令に基づいて、それぞれのモータを稼働させることにより、作業ツールをX方向、Y方向、Z方向に移動させ、作業ツールを所定のポイントに移動させる。
<制御部の電気的構成>
図2〜図4を用いて、本実施形態に係る制御部10の電気的構成について説明する。
図2〜図4を用いて、本実施形態に係る制御部10の電気的構成について説明する。
図2に示すように、本実施形態に係る制御部10は、中央演算処理装置(CPU)11と、制御プログラム記憶部12と、表示部13と、操作部14と、一時記憶部15と、ポイント種別定義記憶部16と、ポイント列記憶部17と、モータ駆動制御部21A〜21Cと、モータ22A〜22Cと、信号入出力部23とを含んで構成されている。
マイクロコンピュータを主体に構成される中央演算処理装置(CPU)11は、ロボット1全体の制御を行う。中央演算処理装置(CPU)11は、制御プログラム記憶部12に記憶されている制御プログラムに従って、入力操作、表示、記憶、モータ駆動、信号入出力の処理を実行する。また、これらの制御動作のために、一時記憶部15が用いられる。
本実施形態において、中央演算処理装置(CPU)11は、主として、モータ駆動制御部21A〜21Cに指令信号を出力し、モータ22A〜22Cを駆動して、各種の動作を実行させる。モータ駆動制御部21A〜21Cとモータ22A〜22Cとは、必要とする任意の数だけ設けられ、モータ22A〜22Cには、モータ22A〜22Cの動力により、作業及び動作を実行する図示しない作業ツールが接続されている。
また、中央演算処理装置(CPU)11は、信号入出力部23に指令信号を出力し、外部からの信号を入力し、外部への信号出力を実行させる。そして、外部から入力した信号をロボット1の制御に反映させ、外部への信号に基づいて外部機器の制御を行う。
また、中央演算処理装置(CPU)11は、信号入出力部23に指令信号を出力し、外部からの信号を入力し、外部への信号出力を実行させる。そして、外部から入力した信号をロボット1の制御に反映させ、外部への信号に基づいて外部機器の制御を行う。
操作部14は、キーボード等の入力装置、ティーチングのためのハード的、ソフト的機構等であり、ロボット1のプログラムやデータの入力を行う。また、表示部13は、LCD表示装置等であり、設定値の表示や操作部14による入力状態を表示する。
一時記憶部15は、RAM等の書き換え可能なメモリであり、中央演算処理装置(CPU)11が制御指令を出力する際に、必要な情報を一時的に記憶する。
ポイント種別定義記憶部16は、図4に示すように、ポイント種別名、及びそこで実行する作業命令列により定義されるポイント種別定義データテーブル60を記憶する。ポイント種別定義データ(本実施形態では、クラス定義に相当する)としては、ポイント種別を一意に区別するためのポイント種別ID61(本実施形態では、IDを構成する文字列がクラス名に相当する)、継承元ポイント種別が何であるかを示す基底種別ID62、所有者以外では内容を参照できないよう制限を設けるための所有者情報や保護モード63(この保護モードを「カプセル化」という)、指定の位置に移動する前に実行する作業命令列を指定する移動前作業64、指定の位置に移動する途中で実行する作業命令列を指定する移動中作業65、指定の位置に移動してから実行する作業命令列を指定する移動後作業66、CP駆動中作業67といったものを含む。
なお、移動前作業64、移動中作業65、移動後作業66、CP駆動中作業67等は、特定の場面で呼び出される(実行される)命令列、すなわち、メソッドとなる。
また、従来の組込ポイント種別(クラス)としては、PTP駆動点、PTP回避点又はPTP経由点、CP開始点、CP連続通過点、CP停止通過点、CP円弧補助点、CP終了点等を例示することができる。これらは、開発時に予め定義されたクラスである。
ユーザは、既存のポイント種別の機能を発展させて、独自のポイント種別を定義することができるが、上記の例示は、そのベースとなるポイント種別をいう。
なお、移動前作業64、移動中作業65、移動後作業66、CP駆動中作業67等は、特定の場面で呼び出される(実行される)命令列、すなわち、メソッドとなる。
また、従来の組込ポイント種別(クラス)としては、PTP駆動点、PTP回避点又はPTP経由点、CP開始点、CP連続通過点、CP停止通過点、CP円弧補助点、CP終了点等を例示することができる。これらは、開発時に予め定義されたクラスである。
ユーザは、既存のポイント種別の機能を発展させて、独自のポイント種別を定義することができるが、上記の例示は、そのベースとなるポイント種別をいう。
図3は、従来と本実施形態とにおける「ポイント種別」、「ポイントデータ」との関係を対比している。
図3において、二重線で分けた上側が「ポイント種別」、下側が「ポイントデータ」を示している。ここで、「ポイントデータ」は、ポイント種別のインスタンス、つまり、座標と運転条件を含んだデータである。
なお、ポイント種別は、ポイントデータの雛形をいう。また、図3の左側は、従来の関係を示し、右側は、本実施形態における関係を示している。
図3において、二重線で分けた上側が「ポイント種別」、下側が「ポイントデータ」を示している。ここで、「ポイントデータ」は、ポイント種別のインスタンス、つまり、座標と運転条件を含んだデータである。
なお、ポイント種別は、ポイントデータの雛形をいう。また、図3の左側は、従来の関係を示し、右側は、本実施形態における関係を示している。
図3の上側のポイント種別は2つに分けられる。このうち、「組込ポイント種別」は、予めシステムに組み込まれた(システムが供給する)ポイント種別であり、「ポイント種別定義」は、組込ポイント種別あるいは定義されているポイント種別を継承元種別として指定して、ポイント種別を定義したものであって、定義したポイント種別をいう。
本実施形態では、組込ポイント種別である「繰り返し開始点」、「繰り返し終了点」及び「PTP駆動点」という継承元種別を用いて、ピックアップ点に「繰り返し開始点」及び「PTP駆動点」のポイント種別を継承させ、ポイント種別を定義し、プレイス点に「繰り返し終了点」及び「PTP駆動点」のポイント種別を継承させ、ポイント種別を定義している。
なお、ポイント種別定義を作るうえで、継承元種別を指定する必要があるが、これは組込ポイント種別に基づく定義であっても、他の定義(ポイント種別定義)であっても良い。
また、ポイントデータを作る上では(使う側では)、組込みなのか、定義されたものなのかの区別は無い。駆動のしかたの性質のみを組み込んだものが一般的であり、駆動のみにフォーカスするのであれば、組込ポイント種別から作成したポイントデータであっても良い。
また、ポイントデータを作る上では(使う側では)、組込みなのか、定義されたものなのかの区別は無い。駆動のしかたの性質のみを組み込んだものが一般的であり、駆動のみにフォーカスするのであれば、組込ポイント種別から作成したポイントデータであっても良い。
図4に、ポイント種別定義記憶部16に記憶するポイント種別定義データの一例を示す。図4では、「ポイント種別ID」として「Screw Tighting」、「基底種別」として「PTPPoint」、「所有者」として「Janome Buitln」、「保護モード」として「保護」等が定義されている。
ポイント列記憶部17は、作業ツールを移動させるポイントと、そのポイントにおいて実行するポイント種別とを対応付けたポイント列を記憶する。ポイント種別は、予め記憶されたポイント列に関連づけられたポイント種別名、ポイント種別定義へのアドレス、または、ポイント種別コードを持つ。
<PTP駆動点に対してループ開始、ループ終了の性質を持った組み込みクラス>
PTP駆動点に対してループ開始、ループ終了の性質を持った組み込みクラスについて、以下、説明する。なお、CP駆動に関しての説明は省略するが、以下と同様に考えることができる。
PTP駆動点に対してループ開始、ループ終了の性質を持った組み込みクラスについて、以下、説明する。なお、CP駆動に関しての説明は省略するが、以下と同様に考えることができる。
まず、PTPループ開始、PTPループ終了といった組込ポイント種別(クラス)を用意する。ロボットの運転制御では、PTPループ終了ポイントの処理を終了した時、次のポイントとして、そのループ終了ポイントと対になるループ開始のポイントに制御を移す。こうした制御を行うことにより、繰り返しループを実行することができる。
繰り返しを抜けるには、
(1)繰り返し回数を予め指定しておいて、この回数繰り返したら抜ける。
(2)ループを抜ける条件(例えば、論理式等)を予め設定しておいて、この条件が成立したら抜ける。
(3)ループを抜ける命令(Point Loop Brake)の実行によってループから強制的に抜ける。
といった方法がある。ワークを載せるパレットの属性をポイントに付加することにより、繰り返し毎に位置をずらしながら動作を繰り返し、パレットオーバー(パレットの最後まで行き、これを超えた状態)の条件でループを抜けるといったことも可能である。これは、予め回数が決まっているという意味では、(1)のバリエーションと考えることができる。
(1)繰り返し回数を予め指定しておいて、この回数繰り返したら抜ける。
(2)ループを抜ける条件(例えば、論理式等)を予め設定しておいて、この条件が成立したら抜ける。
(3)ループを抜ける命令(Point Loop Brake)の実行によってループから強制的に抜ける。
といった方法がある。ワークを載せるパレットの属性をポイントに付加することにより、繰り返し毎に位置をずらしながら動作を繰り返し、パレットオーバー(パレットの最後まで行き、これを超えた状態)の条件でループを抜けるといったことも可能である。これは、予め回数が決まっているという意味では、(1)のバリエーションと考えることができる。
<ループ開始、ループ終了の性質をもったポイント列>
1対1の場合には、ループ開始ポイントとループ終了ポイントとは、それぞれ1つで一対となる。1対Nの場合は、ループ開始ポイントは1つで、それに対するループ終了ポイントが複数(N)ある。また、N対1の場合は、ループ開始ポイントは、複数(N)であり、それに対するループ終了ポイントは1つである。なお、N対Nは許さないものとする。この様にすると、ループ開始、ループ終了の特性をもったポイントの並びの解釈、すなわち、開始と終了との対が一意に決まる。
ここで、N対Nを許さないのは、「N対N」の場合、ロボットの動作(軌跡)を決定する条件が飛躍的に増えるために、簡単なティーチングにより、ロボットを制御できるというメリットが活かせないためである。
1対1の場合には、ループ開始ポイントとループ終了ポイントとは、それぞれ1つで一対となる。1対Nの場合は、ループ開始ポイントは1つで、それに対するループ終了ポイントが複数(N)ある。また、N対1の場合は、ループ開始ポイントは、複数(N)であり、それに対するループ終了ポイントは1つである。なお、N対Nは許さないものとする。この様にすると、ループ開始、ループ終了の特性をもったポイントの並びの解釈、すなわち、開始と終了との対が一意に決まる。
ここで、N対Nを許さないのは、「N対N」の場合、ロボットの動作(軌跡)を決定する条件が飛躍的に増えるために、簡単なティーチングにより、ロボットを制御できるというメリットが活かせないためである。
一方で、このルールに従わない並びも作り出すことができる。例えば、ループ開始ポイントが無いのにループ終了ポイントがある、あるいはループ開始ポイントのみで対応するループ終了ポイントが無いといったものが該当する。この様な場合には、
(1)エラーとして実行処理を中止する。
(2)無効なポイントと解釈してそのポイントを実行しない。
(3)ループ開始、終了といった性質をもつポイントがないものとして実行する。
といった処理とする方法が考えられる。
(1)エラーとして実行処理を中止する。
(2)無効なポイントと解釈してそのポイントを実行しない。
(3)ループ開始、終了といった性質をもつポイントがないものとして実行する。
といった処理とする方法が考えられる。
<ポイント列の具体例>
ポイント列の具体例を図5に示す。図5では、ポイント列が14個のポイントからなっている。ポイント1は、開始が無く、終了があるため、ルール違反である。ポイント2からポイント5までは、1つのループ(ループA)を構成している。このループは開始ポイントが1つで終了ポイントが3つある1対N(N=3)の例である。ポイント6からポイント8までは、1つのループ(ループB)を構成している。このループは、開始ポイントが2つで、終了ポイントが1つあるN対1(N=2)の例である。
ポイント列の具体例を図5に示す。図5では、ポイント列が14個のポイントからなっている。ポイント1は、開始が無く、終了があるため、ルール違反である。ポイント2からポイント5までは、1つのループ(ループA)を構成している。このループは開始ポイントが1つで終了ポイントが3つある1対N(N=3)の例である。ポイント6からポイント8までは、1つのループ(ループB)を構成している。このループは、開始ポイントが2つで、終了ポイントが1つあるN対1(N=2)の例である。
図5のループAは、ループ開始ポイントが1点で、ループ終了ポイントが3点ある1対N(N=3)のループである。
ここで、「1対N」の処理とは、ひとつのパレットから、別のパレットへの配置変えを行うことにより、ワークの分別を行う処理であり、例えば、大きいパレットにある大量のワークを配布先ごとのパレットに小分けにしていく場合等の処理を例示できる。
ここで、「1対N」の処理とは、ひとつのパレットから、別のパレットへの配置変えを行うことにより、ワークの分別を行う処理であり、例えば、大きいパレットにある大量のワークを配布先ごとのパレットに小分けにしていく場合等の処理を例示できる。
この実行順について、以下、説明する。
実行順には(1)交互と(2)個別の2通りがある。ここで、「1対N」の処理における「交互」とは、1つのパレット上にある異なるワークを、N個のパレット上にひとつずつ配置していく処理のことであり、パレット毎に均等な分量でワークを配置することができる。
また、「個別」とは、パレット上にあるワークを、一定量に分けて配置する処理のことであり、例えば、30個のワークを配置したパレットAから、15個のワークを配置できるパレットB、10個のワークを配置できるパレットC、5個のワークを配置できるパレットDへ配置する場合等、パレットB、C、Dと順々にパレットを満杯にしていくことができる。
実行順には(1)交互と(2)個別の2通りがある。ここで、「1対N」の処理における「交互」とは、1つのパレット上にある異なるワークを、N個のパレット上にひとつずつ配置していく処理のことであり、パレット毎に均等な分量でワークを配置することができる。
また、「個別」とは、パレット上にあるワークを、一定量に分けて配置する処理のことであり、例えば、30個のワークを配置したパレットAから、15個のワークを配置できるパレットB、10個のワークを配置できるパレットC、5個のワークを配置できるパレットDへ配置する場合等、パレットB、C、Dと順々にパレットを満杯にしていくことができる。
交互では、ループ終了の点を交互に実行する。具体的には、ポイント2(開始)→ポイント3(終了)→ポイント2(開始)→ポイント4(終了)→ポイント2(開始)→ポイント5(終了)の順に実行する。
個別の場合は、一旦、1つのループを繰り返し、これを抜けて、次の開始ループ、終了ループの実行となる。具体的には、ポイント2(開始)→ポイント3(終了)→ポイント2(開始)→ポイント3(終了)の繰り返しを抜けて、次には、ポイント2(開始)→ポイント4(終了)→ポイント2(開始)→ポイント4(終了)を繰り返し、この繰り返しを抜けて、次には、ポイント2(開始)→ポイント5(終了)→ポイント2(開始)→ポイント5(終了)を実行するといった処理順となる。
なお、図6は、交互の例を、図7は、個別の例を示す。図6、図7において、箱の中の括弧に入った数字は実行順につけた番号である。
なお、図6は、交互の例を、図7は、個別の例を示す。図6、図7において、箱の中の括弧に入った数字は実行順につけた番号である。
図5におけるループBは、ループ開始ポイントが2点に対して、ループ終了ポイントが1点であるN対1(N=2)のループである。
ここで、「N対1」の処理とは、分別されたパレットから、ひとつのパレットへの集積することでワークの集約を行う処理であり、例えば、多種の部品の載ったパレットから、組み立てに必要な部品をひとつのパレットへ集約する場合等を例示できる。また、「1対1」の処理とは、単純な移動処理であり、例えば、2つのベルトコンベア間での部品の移動等を例示できる。
ここで、「N対1」の処理とは、分別されたパレットから、ひとつのパレットへの集積することでワークの集約を行う処理であり、例えば、多種の部品の載ったパレットから、組み立てに必要な部品をひとつのパレットへ集約する場合等を例示できる。また、「1対1」の処理とは、単純な移動処理であり、例えば、2つのベルトコンベア間での部品の移動等を例示できる。
この実行順について説明する。
実行順には、(1)交互と(2)個別の2通りがある。ここで、「N対1」の処理における「交互」とは、N個のパレット上にある異なるワークを、ひとつのパレット上に集約して配置していく処理のことであり、例えば、パレットAにはシャリがあり、パレットBにネタがある場合、交互にピックアップし、パレットCに配置することで、パレットCには、シャリとネタが配置されるようになる。
また、「個別」とは、N個のパレット上にある異なるワークを、ひとつのパレット上に集約して配置していく処理のことであり、例えば、15個のワークを配置したパレットA、10個のワークを配置したパレットB、5個のワークを配置したパレットCのそれぞれから、順番にワークをピックアップして、パレットDへ配置する場合等、パレットA、B、C上のワークをパレットD上に集約することができる。
実行順には、(1)交互と(2)個別の2通りがある。ここで、「N対1」の処理における「交互」とは、N個のパレット上にある異なるワークを、ひとつのパレット上に集約して配置していく処理のことであり、例えば、パレットAにはシャリがあり、パレットBにネタがある場合、交互にピックアップし、パレットCに配置することで、パレットCには、シャリとネタが配置されるようになる。
また、「個別」とは、N個のパレット上にある異なるワークを、ひとつのパレット上に集約して配置していく処理のことであり、例えば、15個のワークを配置したパレットA、10個のワークを配置したパレットB、5個のワークを配置したパレットCのそれぞれから、順番にワークをピックアップして、パレットDへ配置する場合等、パレットA、B、C上のワークをパレットD上に集約することができる。
交互では、ループ開始の点を交互に実行する。すなわち、図5に示すように、ポイント6(開始)→ポイント8(終了)→ポイント7(開始)→ポイント8(終了)→ポイント6(開始)→ポイント8(終了)の順に実行する。
個別の場合は、一旦、1つのループを繰り返し、これを抜けて、次の開始、終了ループの実行となる。具体的には、ポイント6(開始)→ポイント8(終了)→ポイント6(開始)→ポイント8(終了)のループを実行し、この繰り返しを抜けて、次に、ポイント7(開始)→ポイント8(終了)→ポイント7(開始)→ポイント8(終了)といった処理順となる。
<ループ処理>
図8を用いて、本実施形態に係るロボット1のループの処理について説明する。
なお、実際のプログラム実行では、命令や、つなぎ情報といったものにより実行順序は変化するが、図8では、そういった要素を除いて示している。また、このループ制御は、優先度が一番低く、命令や、つなぎ情報が優先される。言い換えれば、命令や、つなぎ情報の指示が無い場合の制御、実行順序を示したものである。
図8を用いて、本実施形態に係るロボット1のループの処理について説明する。
なお、実際のプログラム実行では、命令や、つなぎ情報といったものにより実行順序は変化するが、図8では、そういった要素を除いて示している。また、このループ制御は、優先度が一番低く、命令や、つなぎ情報が優先される。言い換えれば、命令や、つなぎ情報の指示が無い場合の制御、実行順序を示したものである。
また、この制御では、開始ポンイト番号配列(Start Point)と終了ポイント配列(End Point)といった2つの配列を用意し、ここに、ポイント番号を格納していく。
また、添え字の変数として、Isは、開始ポイント配列のインデックス、Ieは、終了ポイント配列のインデックスとして使用する。
また、添え字の変数として、Isは、開始ポイント配列のインデックス、Ieは、終了ポイント配列のインデックスとして使用する。
ループ処理(ステップS40)において、PNは、ポイント番号を持つ変数であり、ここに、開始するポイント番号が入っているものとする。そして、処理は、この番号から始める。
まず、PNで示されたポイントが、ループ終了のポイントであるか否かを判断する(ステップS41)。
PNで示されたポイントが、ループ終了のポイントであると判断した場合(ステップS41の「YES」)には、ループ開始ポイントがなく、ループ終了ポイントが出きているため、開始の無いエラーと判定する(ステップS42)。
PNで示されたポイントが、ループ終了のポイントであると判断した場合(ステップS41の「YES」)には、ループ開始ポイントがなく、ループ終了ポイントが出きているため、開始の無いエラーと判定する(ステップS42)。
一方で、PNで示されたポイントが、ループ終了のポイントでないと判断した(ステップS41の「NO」)場合、すなわち、先頭がループ開始ポイントである場合には、開始ポイント配列の1(Is)番目に、現在のポイント番号PNを格納する(ステップS43)。
次に、ポンイト番号PNを1つ増やして、次の点へ移る(ステップS44)。
そして、次のポイントがあるか否かを判断する(ステップS45)。
判断の結果、次のポイントがないと判断した場合(ステップS45の「NO」)には、ループ開始のポイントはあるが、終了ループのポイントがないため、終了の無いエラーとして処理する(ステップS46)。
そして、次のポイントがあるか否かを判断する(ステップS45)。
判断の結果、次のポイントがないと判断した場合(ステップS45の「NO」)には、ループ開始のポイントはあるが、終了ループのポイントがないため、終了の無いエラーとして処理する(ステップS46)。
一方で、次のポイントがあると判断した場合(ステップS45の「YES」)には、そのポイントがループ開始のポイントであるか否かを判断する(ステップS47)。
判断の結果、次のポイントがループ開始のポイントであると判断した場合(ステップS47の「YES」)には、ループ開始のポイントが複数続く、つまり、N対1の繰り返しループであると判断する。
判断の結果、次のポイントがループ開始のポイントであると判断した場合(ステップS47の「YES」)には、ループ開始のポイントが複数続く、つまり、N対1の繰り返しループであると判断する。
N対1の繰り返しループであると判断した場合には、ステップS43におけるポイントの格納に続いて、開始ポイント番号配列のIs番目にPNを格納する(ステップS48)。
以下、ポイント番号を増やしながら(ステップS49)、次のポイントがあるか否かを判断する(ステップS50)。
判断の結果、次のポイントがないと判断した場合(ステップS50の「NO」)には、ループ開始のポイントはあるが、終了ループのポイントがないため、終了の無いエラーとして処理する(ステップS51)。
判断の結果、次のポイントがないと判断した場合(ステップS50の「NO」)には、ループ開始のポイントはあるが、終了ループのポイントがないため、終了の無いエラーとして処理する(ステップS51)。
また、次のポイントがあると判断し(ステップS50の「YES」)、そのポイントがループ開始のポイントである場合(ステップS52の「YES」)には、処理をステップS48に戻し、開始ポイント番号配列に格納を繰り返す。
また、そのポイントがループ開始のポイントではない場合(ステップS52の「NO」)には、終了ポイント番号配列の先頭にPNを登録する(ステップS53)。
なお、この場合、実際には配列と言っているが先頭の要素しか使われない。
そして、ステップS53の処理が終了すると、N対1ループ処理に遷移する。なお、N対1ループ処理の詳細については、後述する。
また、そのポイントがループ開始のポイントではない場合(ステップS52の「NO」)には、終了ポイント番号配列の先頭にPNを登録する(ステップS53)。
なお、この場合、実際には配列と言っているが先頭の要素しか使われない。
そして、ステップS53の処理が終了すると、N対1ループ処理に遷移する。なお、N対1ループ処理の詳細については、後述する。
ステップS47において、次のポイントがループ開始のポイントではないと判断した場合(ステップS47の「NO」)には、終了ポイント番号配列の先頭にポイント番号を格納する。
そして、ポンイト番号PNを1つ増やして、次の点へ移る(ステップS56)。
さらに、次のポイントがあるか否かを判断する(ステップS57)。
判断の結果、次のポイントがないと判断した場合(ステップS57の「NO」)には、ここで、ループが終わっているため、ループ開始のポイント1点とループ終了のポイント1点の2点の繰り返しループとなるため、1対1ループ処理に遷移する(ステップS59)。なお、1対1ループ処理の詳細については、後述する。
そして、ポンイト番号PNを1つ増やして、次の点へ移る(ステップS56)。
さらに、次のポイントがあるか否かを判断する(ステップS57)。
判断の結果、次のポイントがないと判断した場合(ステップS57の「NO」)には、ここで、ループが終わっているため、ループ開始のポイント1点とループ終了のポイント1点の2点の繰り返しループとなるため、1対1ループ処理に遷移する(ステップS59)。なお、1対1ループ処理の詳細については、後述する。
ステップS57において、次のポイントがあると判断し(ステップS57の「YES」)、そのポイントがループ開始のポイントである場合(ステップS58の「YES」)には、ここで、ループが終わっているため、ループ開始のポイント1点とループ終了のポイント1点の2点の繰り返しループとなるため、1対1ループ処理に遷移する(ステップS59)。
ステップS58において、そのポイントがループ開始のポイントではないと判断した場合(ステップS58の「NO」)には、終了ポイント番号配列の先頭にPNを登録する(ステップS60)。
そして、ポンイト番号PNを1つ増やして、次の点へ移る(ステップS61)。さらに、次のポイントがあるか否かを判断する(ステップS62)。
判断の結果、次のポイントがないと判断した場合(ステップS62の「NO」)には、1対Nループ処理に遷移する(ステップS64)。なお、1対Nループ処理の詳細については、後述する。
そして、ポンイト番号PNを1つ増やして、次の点へ移る(ステップS61)。さらに、次のポイントがあるか否かを判断する(ステップS62)。
判断の結果、次のポイントがないと判断した場合(ステップS62の「NO」)には、1対Nループ処理に遷移する(ステップS64)。なお、1対Nループ処理の詳細については、後述する。
一方で、次のポイントがあると判断し(ステップS62の「YES」)、そのポイントがループ開始のポイントである場合(ステップS63の「YES」)には、1対Nループ処理に遷移する(ステップS64)。
また、次のポイントがあると判断し(ステップS62の「YES」)、そのポイントがループ開始のポイントではないと判断した場合(ステップS63の「NO」)には、処理をステップS60に戻し、次の点がなくなる、あるいは、ループ開始のポイントとなるまで、処理を繰り返す。
また、次のポイントがあると判断し(ステップS62の「YES」)、そのポイントがループ開始のポイントではないと判断した場合(ステップS63の「NO」)には、処理をステップS60に戻し、次の点がなくなる、あるいは、ループ開始のポイントとなるまで、処理を繰り返す。
<1対1のループ処理>
図9を用いて、1対1のループ処理について説明する。
図9を用いて、1対1のループ処理について説明する。
1対1のループ処理(ステップS70)では、開始ポイントの実行(ステップS71)と終了ポイントの実行(ステップS72)を行った後、繰り返しを抜けるかどうか判断する(ステップS73)。
繰り返しを抜けない、つまり、繰り返しを続ける場合には(ステップS73の「NO」)、処理をステップS71に戻す。
繰り返しを抜けない、つまり、繰り返しを続ける場合には(ステップS73の「NO」)、処理をステップS71に戻す。
一方で、繰り返しを抜ける場合には(ステップS73の「YES」)、ステップS74に移行する。ここで、繰り返しを抜けるかどうかの判断は、以下の通りである。
(1)繰り返し回数を予め指定しておいて、その回数繰り返したら抜ける。
(2)ループを抜ける条件(例えば、論理式等)を予め設定しておいて、この条件が成立したら抜ける。
(3)ループを抜ける命令(Point LoopBrake)の実行によってループから強制的に抜ける、といった方法がある。
(1)繰り返し回数を予め指定しておいて、その回数繰り返したら抜ける。
(2)ループを抜ける条件(例えば、論理式等)を予め設定しておいて、この条件が成立したら抜ける。
(3)ループを抜ける命令(Point LoopBrake)の実行によってループから強制的に抜ける、といった方法がある。
<1対Nのループ処理>
図10を用いて、1対Nのループ処理について説明する。なお、図10では、終了ポイントの数をNとし、これをカウントする変数としてIを使用する。
図10を用いて、1対Nのループ処理について説明する。なお、図10では、終了ポイントの数をNとし、これをカウントする変数としてIを使用する。
1対Nのループでは、繰り返しの種類として、「交互」と「個別」とがある。これをまず判別する(ステップS81)。
以下では、まず、「交互」の場合のフローを説明する。
1対Nのループ処理では、終了ポイントがN個あるため、これをカウントする変数Iを用意し、初期値として、1を代入する(ステップS82)。
次に、1つだけある開始ポイントを実行する(ステップS83)。
次いで、I番目の終了ポイントを実行する(ステップS84)。さらに、次の番目へとカウンタIを進める(ステップS85)。
1対Nのループ処理では、終了ポイントがN個あるため、これをカウントする変数Iを用意し、初期値として、1を代入する(ステップS82)。
次に、1つだけある開始ポイントを実行する(ステップS83)。
次いで、I番目の終了ポイントを実行する(ステップS84)。さらに、次の番目へとカウンタIを進める(ステップS85)。
繰り返しが終了かどうか、すなわち、I>Nであるか否かをカウンタIの値に従って判断する(ステップS86)。
ここで、I<Nであると判断した場合には(ステップS86の「NO」)、処理をステップS83に戻す。一方で、I>Nであると判断した場合には(ステップS86の「YES」)、繰り返しを抜けるか否かを判断(ステップS87)する。
ここで、I<Nであると判断した場合には(ステップS86の「NO」)、処理をステップS83に戻す。一方で、I>Nであると判断した場合には(ステップS86の「YES」)、繰り返しを抜けるか否かを判断(ステップS87)する。
このとき、繰り返しを抜けない場合(ステップS87の「NO」)には、ステップS82に処理を戻す。
一方で、繰り返しを抜ける場合には(ステップS87の「YES」)、処理をステップS88に遷移させる。
なお、ステップS87において、繰り返しを抜けるかどうかの判断は、
(1)繰り返し回数を予め指定しておいて。この回数繰り返したら抜ける。
(2)ループを抜ける条件(例えば、論理式等)を予め設定しておいてこの条件が成立したら抜ける。
(3)ループを抜ける命令(Point LoopBrake)の実行によってループから強制的に抜ける、といった方法がある。
一方で、繰り返しを抜ける場合には(ステップS87の「YES」)、処理をステップS88に遷移させる。
なお、ステップS87において、繰り返しを抜けるかどうかの判断は、
(1)繰り返し回数を予め指定しておいて。この回数繰り返したら抜ける。
(2)ループを抜ける条件(例えば、論理式等)を予め設定しておいてこの条件が成立したら抜ける。
(3)ループを抜ける命令(Point LoopBrake)の実行によってループから強制的に抜ける、といった方法がある。
以下、「個別」の場合のフローを説明する。
「個別」の場合も、同様に、カウント変数Iを用意し、初期値として、1を代入する(ステップS90)。
次に、1つだけある開始ポイントを実行する(ステップS91)。さらに、I番目の終了ポイントを実行する(ステップS92)。
「個別」の場合も、同様に、カウント変数Iを用意し、初期値として、1を代入する(ステップS90)。
次に、1つだけある開始ポイントを実行する(ステップS91)。さらに、I番目の終了ポイントを実行する(ステップS92)。
次に、繰り返しを抜けるかどうかを判断する(ステップS93)。繰り返しを抜けないのであれば(ステップS93の「NO」)、処理をステップS91に戻す。
そして、以降、開始ポイントとI番目の終了ポイントを繰り返す。
一方で、繰り返しを抜けるのであれば(ステップS93の「YES」)、カウンタIを1だけ増やし(ステップS94)、繰り返しが終了かどうか、すなわち、I>Nであるか否かをカウンタIの値に従って判断する(ステップS95)。
ここで、I<Nであると判断した場合には(ステップS95の「NO」)、処理をステップS91に戻す。
また、I>Nであると判断した場合(ステップS95の「YES」)には、ステップS88に遷移する。
そして、以降、開始ポイントとI番目の終了ポイントを繰り返す。
一方で、繰り返しを抜けるのであれば(ステップS93の「YES」)、カウンタIを1だけ増やし(ステップS94)、繰り返しが終了かどうか、すなわち、I>Nであるか否かをカウンタIの値に従って判断する(ステップS95)。
ここで、I<Nであると判断した場合には(ステップS95の「NO」)、処理をステップS91に戻す。
また、I>Nであると判断した場合(ステップS95の「YES」)には、ステップS88に遷移する。
<N対1のループ処理>
図11、図12を用いて、N対1のループ処理について説明する。
N対1のループ処理は、1対Nのループ処理と同様に、「交互」と「個別」を判別した後、2重の繰り返し処理を行う。
1対Nのループ処理と異なるのは、開始ポイントが複数あり、終了ポイントが1つである点である。
また、N対1のループ処理においては、繰り返しの種類として、「交互」を選択した上で、ピックアップ点とプレイス点とをパレットとした場合に、「重複プレイス」という配置方法を別途設ける点に特徴がある。
図11、図12を用いて、N対1のループ処理について説明する。
N対1のループ処理は、1対Nのループ処理と同様に、「交互」と「個別」を判別した後、2重の繰り返し処理を行う。
1対Nのループ処理と異なるのは、開始ポイントが複数あり、終了ポイントが1つである点である。
また、N対1のループ処理においては、繰り返しの種類として、「交互」を選択した上で、ピックアップ点とプレイス点とをパレットとした場合に、「重複プレイス」という配置方法を別途設ける点に特徴がある。
以下では、まず、「交互」の場合のフローを説明する。
N対1のループ処理では、開始ポイントがN個あるため、これをカウントする変数I、スタートポイントの部品数をカウントする変数n、エンドポイントの部品数をカウントする変数mを用意し、初期値として、1を代入する(ステップS98)。
次に、N個ある開始ポイントのうち、1つの開始ポイントを実行する(ステップS99)。
このとき、スタートポイントの部品数カウンタnの値を進め(ステップS100)、次の番目に移行する(ステップS101)。
N対1のループ処理では、開始ポイントがN個あるため、これをカウントする変数I、スタートポイントの部品数をカウントする変数n、エンドポイントの部品数をカウントする変数mを用意し、初期値として、1を代入する(ステップS98)。
次に、N個ある開始ポイントのうち、1つの開始ポイントを実行する(ステップS99)。
このとき、スタートポイントの部品数カウンタnの値を進め(ステップS100)、次の番目に移行する(ステップS101)。
次いで、1つだけある終了ポイントを実行する(ステップS102)。
ここでは、N対1ループにおいて、繰り返しの種類として「交互」を選択したうえで、ピックアップ点、プレイス点をパレットとした場合の「重複プレイス」という配置方法を別途、設ける。
ここでは、N対1ループにおいて、繰り返しの種類として「交互」を選択したうえで、ピックアップ点、プレイス点をパレットとした場合の「重複プレイス」という配置方法を別途、設ける。
そして、プレイス点のパレットに配置できる部品数カウンタをmとした場合、「重複プレイス」を実施しないとき(ステップS103の「Yes」)には、I>Nの判定(ステップS105)の前に、部品数カウンタmを進める(ステップS104)。
一方で、「重複プレイス」を実施する場合(ステップS103の「No」)には、I>Nの判定(ステップS105)の後、I>Nである場合(ステップS105の「Yes」)に限り、部品数カウンタmを進める(ステップS107)。
なお、ピックアップ点の部品数カウンタnは、ピックアップのタイミングで進めるものとする(ステップS100)。
なお、ピックアップ点の部品数カウンタnは、ピックアップのタイミングで進めるものとする(ステップS100)。
以下、「個別」の場合のフローを説明する。
「個別」の場合も、同様に、カウント変数Iを用意し、初期値として、1を代入する(ステップS110)。
次に、N個ある開始ポイントのうち、1つの開始ポイントを実行する(ステップS111)。
さらに、1つだけある終了ポイントを実行する(ステップS112)。
「個別」の場合も、同様に、カウント変数Iを用意し、初期値として、1を代入する(ステップS110)。
次に、N個ある開始ポイントのうち、1つの開始ポイントを実行する(ステップS111)。
さらに、1つだけある終了ポイントを実行する(ステップS112)。
次に、繰り返しを抜けるかどうかを判断する(ステップS113)。
繰り返しを抜けないのであれば(ステップS113の「NO」)、処理をステップS111に戻す。
そして、以降、開始ポイントと終了ポイントとを繰り返す。
一方で、繰り返しを抜けるのであれば(ステップS113の「YES」)、カウンタIを1だけ増やし(ステップS114)、繰り返しが終了かどうか、すなわち、I>Nであるか否かをカウンタIの値に従って判断する(ステップS115)。
ここで、I<Nであると判断した場合には(ステップS115の「NO」)、処理をステップS111に戻す。
また、I>Nであると判断した場合(ステップS115の「YES」)には、ステップS109に遷移する。
繰り返しを抜けないのであれば(ステップS113の「NO」)、処理をステップS111に戻す。
そして、以降、開始ポイントと終了ポイントとを繰り返す。
一方で、繰り返しを抜けるのであれば(ステップS113の「YES」)、カウンタIを1だけ増やし(ステップS114)、繰り返しが終了かどうか、すなわち、I>Nであるか否かをカウンタIの値に従って判断する(ステップS115)。
ここで、I<Nであると判断した場合には(ステップS115の「NO」)、処理をステップS111に戻す。
また、I>Nであると判断した場合(ステップS115の「YES」)には、ステップS109に遷移する。
<処理の変形例>
上記では、ポイントが、開始ポイントあるいは終了ポイントかのいずれかであるとして説明したが、実際には、開始ポイントでも終了ポイントでもない、ポイント種別のものもある。この例を図13に示す。
上記では、ポイントが、開始ポイントあるいは終了ポイントかのいずれかであるとして説明したが、実際には、開始ポイントでも終了ポイントでもない、ポイント種別のものもある。この例を図13に示す。
この例では、ループの開始ポイントでも終了ポイントでもない、その他のポイント種別を、その後にあるループ開始ポイントあるいは、ループ終了ポイントとの組として、一緒に扱うようにしている。
図13に示すように、ポイント2、ポイント3は、ループ開始ポイントでもループ終了ポイントでもない、その他のポイント種別とする。
図13に示すように、ポイント2、ポイント3は、ループ開始ポイントでもループ終了ポイントでもない、その他のポイント種別とする。
ループAは、ループ開始ポイントが1ポイント、ループ終了ポイントが3ポイントある、1:3の繰り返しとなっている。
この時、ポイント2、ポイント3のその他のポイントは、ポイント4のループ終了ポイントと組になっていると考える。
同様にポイント5はポイント6と組になっていると考える。
この時、ポイント2、ポイント3のその他のポイントは、ポイント4のループ終了ポイントと組になっていると考える。
同様にポイント5はポイント6と組になっていると考える。
ループAの繰り返しが個別であれば、ポイント1→ポイント2→ポイント3→ポイント4→ポイント1→ポイント2・・・・、ポイント1→ポイント5→ポイント6→ポイント1・・・・、ポイント1→ポイント7→ポイント1→ポイント7・・・・といったような繰り返し処理となる。
また、上記説明では、ループ開始ポイント、ループ終了ポイントの性質をもった組込クラスとして説明したが、既存の組込クラスにループ開始ポイント、あるいはループ終了ポイントの性質を属性として後から設定することでも同じ効果が得られる。
クラスの属性(性質)として、これを付けることも考えられるし(この場合、そのクラスから作成したインスタンスポイントは全てこの性質を持つ)、あるいはポイントの属性(インスタンスの持つ属性)として、これを実現するといった方法も考えられる。
なお、「組込クラス」とは、開発時に予め定義されたクラスをいい、「派生クラス」とは、組込クラスから、性質を継承して生成されたクラスをいう。また、「継承」とは、性質が基底クラスから引き継がれることをいう。
クラスの属性(性質)として、これを付けることも考えられるし(この場合、そのクラスから作成したインスタンスポイントは全てこの性質を持つ)、あるいはポイントの属性(インスタンスの持つ属性)として、これを実現するといった方法も考えられる。
なお、「組込クラス」とは、開発時に予め定義されたクラスをいい、「派生クラス」とは、組込クラスから、性質を継承して生成されたクラスをいう。また、「継承」とは、性質が基底クラスから引き継がれることをいう。
後者の場合、ポイント毎に設定をすることになるが、次のポイントを直接指定する、つなぎ情報を使った方法と比較すると、ループ開始ポイントあるいは、ループ終了ポイントといったものは、ポイント列の構成により、「対」が規定され、処理先が決まってくるといった点で、異なったものと考えられる。
以上、説明したように、本実施形態に係るロボットによれば、従来のポイント種別定義、そのインスタンスであるポイント列の作成、及び実行に加えて、繰り返しのためにループ開始ポイントの性質を持った組込クラス、ループ終了ポイントの性質をもった組込クラスを用意し、これを継承する手段を用意する。
そして、ループ開始ポイント、ループ終了ポイントの性質を持った組込クラス、及びその派生クラスのポイントに対しては、ループ終了ポイントからループ開始ポイントに戻る様な繰り返しの制御を行う。
そのため、命令やつなぎ情報を用いることなく、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスを用意し、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスによって、繰り返し動作を実現させることができる。
そして、ループ開始ポイント、ループ終了ポイントの性質を持った組込クラス、及びその派生クラスのポイントに対しては、ループ終了ポイントからループ開始ポイントに戻る様な繰り返しの制御を行う。
そのため、命令やつなぎ情報を用いることなく、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスを用意し、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスによって、繰り返し動作を実現させることができる。
また、本実施形態に係るロボットによれば、直接、ループ開始ポイントの性質を持った「ピックアップ点」と、ループ終了ポイントの性質をもった「プレイス点」とを用意し、これらのポイントインスタンスや、これらを継承したクラスのインスタンスに対して、ループ制御を行う。
そのため、命令やつなぎ情報を用いることなく、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスを用意し、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスによって、繰り返し動作を実現させることができる。
そのため、命令やつなぎ情報を用いることなく、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスを用意し、ポイント種別の組込クラスにループ開始あるいはループ終了の性質をもったクラスによって、繰り返し動作を実現させることができる。
さらに、本実施形態に係るロボットによれば、命令やつなぎ情報を用いることなく、繰り返し動作を実現させる。
すなわち、「命令」を含んだクラスを予め用意し、ユーザはそれを用いてポイントティーチングを実施することにより、ユーザを「命令」の記述等の煩雑な作業から解放することができる。
すなわち、「命令」を含んだクラスを予め用意し、ユーザはそれを用いてポイントティーチングを実施することにより、ユーザを「命令」の記述等の煩雑な作業から解放することができる。
なお、ロボットの処理をコンピュータシステムあるいはコンピュータが読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをロボットに読み込ませ、実行することによって本発明のロボットを実現することができる。ここでいうコンピュータシステムあるいはコンピュータとは、OSや周辺装置等のハードウェアを含む。
また、「コンピュータシステムあるいはコンピュータ」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムあるいはコンピュータから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムあるいはコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムあるいはコンピュータにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
1;ロボット
10;制御部
11;中央演算処理装置(CPU)
12;制御プログラム記憶部
13;表示部
14;操作部
15;一時記憶部
16;ポイント種別定義記憶部
17;ポイント列記憶部
20;本体
21A〜21C;モータ駆動制御部
22A〜22C;モータ
23;信号入出力部
30;Xスライダー
40;Yスライダー
50;Zスライダー
10;制御部
11;中央演算処理装置(CPU)
12;制御プログラム記憶部
13;表示部
14;操作部
15;一時記憶部
16;ポイント種別定義記憶部
17;ポイント列記憶部
20;本体
21A〜21C;モータ駆動制御部
22A〜22C;モータ
23;信号入出力部
30;Xスライダー
40;Yスライダー
50;Zスライダー
Claims (8)
- 本体と、制御部と、を備え、前記制御部が、作業ツールの運転条件を含むポイント種別の定義に基づくポイントデータを含むポイントデータ列に基づいて作業を実行するロボットであって、
前記ポイント種別は、繰り返しの開始の性質を持つ組込ポイント種別である繰り返し開始点と、繰り返し終了の性質を持つ組込ポイント種別である繰り返し終了点と、前記繰り返し開始点又は前記繰り返し終了点を継承元として定義されたポイント種別と、を含み、
前記制御部が、前記繰り返し開始点又は該繰り返し開始点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを開始し、前記繰り返し終了点又は該繰り返し終了点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを終了することにより、前記作業ツールの運転を繰り返す制御を行うことを特徴とするロボット。 - 前記繰り返し開始点又は該繰り返し開始点を承継元として定義されたポイント種別のいずれかに基づくポイントデータのポイントを繰り返し開始ポイントとし、前記繰り返し終了点又は該繰り返し終了点を承継元として定義されたポイント種別のいずれかに基づくポイントデータのポイントを繰り返し終了ポイントとし、
前記制御部は、1の前記繰り返し開始ポイントに複数の前記繰り返し終了ポイントを対応させ、あるいは、複数の前記繰り返し開始ポイントに1の前記繰り返し終了ポイントを対応させることを特徴とする請求項1に記載のロボット。 - 前記制御部は、前記1の繰り返し開始ポイントと、該1の繰り返し開始ポイントに対応する前記複数の前記繰り返し終了ポイントのうち、1の繰り返し終了ポイントと、において、前記運転を繰り返す、あるいは、前記1の繰り返し終了ポイントと、該1の繰り返し終了ポイントに対応する前記複数の繰り返し開始ポイントのうち、1の繰り返し開始ポイントと、において、前記運転を繰り返すことを特徴とする請求項2に記載のロボット。
- 前記制御部は、前記1の繰り返し開始ポイントと、該1の繰り返し開始ポイントに対応する前記複数の繰り返し終了ポイントと、において、順に、前記運転を繰り返す、あるいは、前記1の繰り返し終了ポイントと対応する前記複数の繰り返し開始ポイントと、において、順に、前記運転を繰り返すことを特徴とした請求項2に記載のロボット。
- 前記制御部は、前記運転の繰り返しが予め設定された回数に達した場合、予め設定された該運転の繰り返しを終了する終了条件が成立した場合、あるいは、該運転の繰り返しを終了する終了命令が実行された場合に、該運転の繰り返しを終了することを特徴とする請求項1から請求項4のいずれか1項に記載のロボット。
- 前記制御部は、前記運転の繰り返しが終了した後に、他の運転の繰り返しを行うことを特徴とする請求項5に記載のロボット。
- 本体と、制御部と、を備え、前記制御部が、作業ツールの運転条件を含むポイント種別の定義に基づくポイントデータを含むポイントデータ列に基づいて作業を実行するロボットにおける制御方法であって、
前記ポイント種別は、繰り返しの開始の性質を持つ組込ポイント種別である繰り返し開始点と、繰り返し終了の性質を持つ組込ポイント種別である繰り返し終了点と、前記繰り返し開始点又は前記繰り返し終了点を継承元として定義されたポイント種別と、を含み、
前記制御部が、前記繰り返し開始点又は該繰り返し開始点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを開始する第1の工程と、
前記制御部が、前記繰り返し終了点又は該繰り返し終了点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを終了する第2の工程と、
を備え、
前記制御部が、前記第1の工程と第2の工程とを実行することにより、前記作業ツールの運転を繰り返す制御を行うことを特徴とする制御方法。 - 本体と、制御部と、を備え、前記制御部が、作業ツールの運転条件を含むポイント種別の定義に基づくポイントデータを含むポイントデータ列に基づいて作業を実行するロボットにおける制御方法をコンピュータに実行させるためのプログラムであって、
前記ポイント種別は、繰り返しの開始の性質を持つ組込ポイント種別である繰り返し開始点と、繰り返し終了の性質を持つ組込ポイント種別である繰り返し終了点と、前記繰り返し開始点又は前記繰り返し終了点を継承元として定義されたポイント種別と、を含み、
前記制御部が、前記繰り返し開始点又は該繰り返し開始点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを開始する第1の工程と、
前記制御部が、前記繰り返し終了点又は該繰り返し終了点を承継元として定義されたポイント種別のいずれかに基づくポイントデータに基づいて前記作業ツールの運転の繰り返しを終了する第2の工程と、
を備え、
前記制御部が、前記第1の工程と第2の工程とを実行することにより、前記作業ツールの運転を繰り返す制御を行うことを特徴とするプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018035380A JP2019150888A (ja) | 2018-02-28 | 2018-02-28 | ロボット、制御方法およびプログラム |
PCT/JP2019/006327 WO2019167757A1 (ja) | 2018-02-28 | 2019-02-20 | ロボット、制御方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018035380A JP2019150888A (ja) | 2018-02-28 | 2018-02-28 | ロボット、制御方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019150888A true JP2019150888A (ja) | 2019-09-12 |
Family
ID=67806211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018035380A Pending JP2019150888A (ja) | 2018-02-28 | 2018-02-28 | ロボット、制御方法およびプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2019150888A (ja) |
WO (1) | WO2019167757A1 (ja) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS52137581A (en) * | 1976-05-12 | 1977-11-17 | Kawasaki Heavy Ind Ltd | Controlling device for position locating for programming |
JPS62292349A (ja) * | 1986-06-12 | 1987-12-19 | Hitachi Seiko Ltd | 異種加工プログラムによる連続加工制御装置 |
JP4667415B2 (ja) * | 2000-08-25 | 2011-04-13 | 蛇の目ミシン工業株式会社 | ロボット |
JP2003050610A (ja) * | 2000-08-25 | 2003-02-21 | Janome Sewing Mach Co Ltd | ロボット |
JP6585393B2 (ja) * | 2015-06-15 | 2019-10-02 | 蛇の目ミシン工業株式会社 | ロボット |
-
2018
- 2018-02-28 JP JP2018035380A patent/JP2019150888A/ja active Pending
-
2019
- 2019-02-20 WO PCT/JP2019/006327 patent/WO2019167757A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2019167757A1 (ja) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11986962B2 (en) | Method for extending end user programming of an industrial robot with third party contributions | |
JP6695170B2 (ja) | ロボットの動作を改善する方法 | |
KR102012073B1 (ko) | 스킬 기반 로봇 프로그래밍 장치 및 방법 | |
CN106737676B (zh) | 一种基于脚本可二次开发的工业机器人编程系统 | |
KR101860200B1 (ko) | 카메라를 이용한 장치 또는 물체의 선택 | |
CN108527367A (zh) | 一种多机器人协同作业任务的描述方法 | |
EP3624997B1 (en) | Method and control system for controlling movement sequences of a robot | |
JP2004185228A (ja) | 生産セル | |
EP4040293A1 (en) | Controlling an apparatus, e.g., a robot, with a behavior tree | |
WO2019167757A1 (ja) | ロボット、制御方法およびプログラム | |
JP7259860B2 (ja) | ロボットの経路決定装置、ロボットの経路決定方法、プログラム | |
JPH08106380A (ja) | プログラム作成装置及び方法並びにプログラムを取り扱う制御装置 | |
CN111890336B (zh) | 一种机器人多目标点示教方法、系统 | |
CN115936414B (zh) | 一种基于装配工艺与轨迹自规划的微器件柔性装配方法 | |
Čapkovič | Modelling, analysing and control of interactions among agents in MAS | |
EP3671380A1 (en) | Method for dynamic adaptation of a workflow of an automatic system | |
Hsu et al. | Fully automated robotic assembly cell: scheduling and simulation | |
CN113778416A (zh) | 基于图形化编程的机械臂搬运脚本生成方法和装置 | |
EP3653346A1 (en) | Method and system for automated user interface generation and dynamic update | |
Niemann | Development of a reconfigurable assembly system with enhanced control capabilities and virtual commissioning | |
Mohammed et al. | An approach for modeling grasping configuration using ontology-based taxonomy | |
Clerici | Automated generation of robot planning tasks observing human actions in virtual reality | |
JPH06131021A (ja) | 複数ロボットの制御方法 | |
JP7328473B1 (ja) | 制御装置、産業機械のシステム、実行履歴データ表示方法、及びプログラム | |
US20230234226A1 (en) | Method for Controlling the Operation of a Machine |