<実施形態>
以下、本発明の実施形態について、図面を参照して説明する。
<ロボットシステムの構成>
まず、ロボットシステム1の構成について説明する。
図1は、実施形態に係るロボットシステム1の構成の一例を示す図である。ロボットシステム1は、ロボット20と、制御装置30を備える。また、制御装置30は、ロボット制御装置40と、情報処理装置50を備える。なお、ロボットシステム1は、撮像部、撮像部を制御する画像処理装置等を備える構成であってもよい。また、制御装置30は、ロボット制御装置40と情報処理装置50とに加えて、他の装置を備える構成であってもよい。また、ロボット制御装置40と情報処理装置50は、1台の制御装置30として一体に構成されてもよい。
ロボット20は、アームAと、アームAを支持する基台Bを備える単腕ロボットである。なお、ロボット20は、単腕ロボットに代えて、複腕ロボットであってもよい。ここで、複腕ロボットのうち、2本の腕を備えるロボットは、双腕ロボットとも称される。すなわち、ロボット20は、2本の腕を備える双腕ロボットであってもよく、3本以上の腕を備える複腕ロボットであってもよい。また、ロボット20は、スカラロボット(水平多関節ロボット)、直交座標ロボット、円筒型ロボット等の他のロボットであってもよい。
アームAは、エンドエフェクターEと、マニピュレーターMと、力検出部FSを備える。なお、アームAは、エンドエフェクターEを備えない構成であってもよい。また、アームAは、力検出部FSを備えない構成であってもよい。
エンドエフェクターEは、ユーザーがロボット20に行わせる作業に応じた形状のエンドエフェクターである。図1に示した例では、エンドエフェクターEは、指部を備え、当該指部によって物体を挟んで持つことにより物体を保持するエンドエフェクターである。なお、エンドエフェクターEは、当該エンドエフェクターに代えて、例えば、先端に円柱形状の部分を有し、当該部分によってボタン等を押下する作業に用いられるエンドエフェクター、接着剤等の吐出物を吐出するディスペンサーを備え、対象物に吐出物を塗布する作業に用いられるエンドエフェクター等の他のエンドエフェクターであってもよい。
マニピュレーターMは、6軸垂直多関節型のマニピュレーターである。すなわち、アームAは、6軸垂直多関節型のアームである。なお、マニピュレーターMは、5軸以下の垂直多関節型のマニピュレーターであってもよく、7軸以上の垂直多関節型のマニピュレーターであってもよい。
力検出部FSは、力検出部FSに作用する並進力と回転モーメントとのいずれか一方又は両方を、力検出部FSに作用する外力として検出する。力検出部FSは、例えば、力センサー(力覚センサー)である。なお、力検出部FSは、力センサーに代えて、トルクセンサー等の力検出部FSに作用する外力を検出する他のセンサーであってもよい。
力検出部FSは、この一例において、エンドエフェクターEとマニピュレーターMの間に備えられている。すなわち、力検出部FSは、当該間に設けられることにより、力検出部FSに作用する外力を、ロボット20の図示しないハンドに作用した外力として検出する。当該ハンドは、エンドエフェクターE、又はエンドエフェクターEにより保持された物体のことである。力検出部FSは、当該ハンドに作用した外力を検出し、検出した外力を示す外力情報をロボット制御装置40に出力する。力検出部FSから出力される外力情報は、ロボット制御装置40によるロボット20の力制御に用いられる。当該力制御は、コンプライアントモーション制御のことである。以下では、一例として、当該力制御が、コンプライアントモーション制御のうちのインピーダンス制御である場合について説明する。
ロボット制御装置40は、ロボット20を制御する。この際、ロボット制御装置40は、情報処理装置50を介してユーザーから受け付けた操作に基づいて、ロボット20のアームAとともに動く仮想的な点である制御点Tを、アームAの予め決められた位置に設定する。制御点Tは、例えば、アームAについてのTCP(Tool Center Point)である。また、アームAの予め決められた位置は、例えば、エンドエフェクターEの中心軸上の位置のうちユーザーが所望する位置である。エンドエフェクターEの中心軸は、後述するマニピュレーターMが有する6つの関節のうち基台Bから最も遠くに設けられている関節の回動軸と一致する軸のことである。なお、制御点Tは、当該TCPに代えて、アームAとともに動く他の仮想的な点であってもよい。また、当該予め決められた位置は、当該中心軸上の位置に代えて、アームAに応じた他の位置であってもよい。
ロボット制御装置40は、例えば、ロボット制御装置40が備えるメモリーに予め記憶された動作プログラムに基づいて、力検出部FSから外力情報を取得し、取得した外力情報に基づくインピーダンス制御によってアームAを動作させる。なお、図1では、ロボット制御装置40が備えるメモリーは、図が煩雑になるのを防ぐため省略している。
また、ロボット制御装置40は、例えば、動作プログラムに基づいて、連続経路制御によってアームAを動作させる。より具体的には、連続経路制御では、ロボット制御装置40は、動作プログラムに基づいて、次に制御点Tを一致させる教示点を特定する。教示点は、制御点Tを一致させる目標となる仮想的な点のことである。ここで、ロボット20がある教示点に制御点Tを一致させた場合、制御点Tの位置は、当該教示点の位置と一致する。また、当該場合、制御点Tの姿勢は、当該教示点の姿勢と一致する。以下では、制御点Tが現在一致している教示点を第1教示点と称し、次に制御点Tを一致させる教示点を第2教示点と称して説明する。
第2教示点を特定する際、ロボット制御装置40は、動作プログラムにより指定された制御点Tの動かし方に関する情報を特定する。制御点Tの動かし方に関する情報は、制御点Tの等速運動時における制御点Tの速度及び角速度のいずれか一方又は両方を示す情報、制御点Tを加速させる際の加速度及び角加速度のいずれか一方又は両方を示す情報、制御点Tを減速させる際の加速度(すなわち、減速度)及び角加速度(すなわち、角減速度)のいずれか一方又は両方を示す情報、制御点Tに並進運動を行わせることを示す情報、制御点Tに回転運動を行わせることを示す情報等の一部又は全部が含まれる情報のことである。すなわち、動作プログラムでは、動作プログラムとして記載された複数の命令によって、制御点Tの動かし方に関する情報が指定される。
ロボット制御装置40は、特定した第2教示点と、特定した制御点Tの動かし方に関する情報とに基づいて、制御点Tを第1教示点から第2教示点へ動かす経路である制御点経路を算出する。ここで、制御点経路上の各点は、経過時間に対応する点であり、経過時間毎の制御点Tの位置及び姿勢を示す。ロボット制御装置40は、算出した制御点経路に沿って制御点Tが動くように、アームAを制御する。ロボット制御装置40は、このように連続経路制御によってアームAを動作させることにより、ロボット20に予め決められた作業を行わせることができる。なお、前述の動作プログラムは、予め決められた命令の一例である。また、連続経路制御は、CP(Continuous Path)制御とも称される。連続経路制御による制御点経路の算出方法については、既知の方法であってもよく、これから開発される方法であってもよいため、これ以上の詳細な説明を省略する。
また、ロボット制御装置40は、動作プログラムに基づいて、前述のインピーダンス制御と連続経路制御との組み合わせによってアームAを動作させる。
また、ロボット制御装置40は、動作プログラムに基づいて、力検出部FSから取得した外力情報と、連続経路制御との組み合わせによってアームAを動作させる。例えば、ロボット制御装置40は、動作プログラムに基づいて、連続経路制御によってアームAを動作させ始める。そして、ロボット制御装置40は、力検出部FSから取得した外力情報が示す外力のうち予め決められた方向に作用する並進力と回転モーメントとのいずれか一方又は両方が予め決められた停止条件を満たすまで、連続経路制御によるアームAの動作を継続させる。ロボット制御装置40は、停止条件が満たされた場合、当該動作を停止させる。停止条件は、例えば、予め決められた閾値を超えることであるが、これに限られるわけではない。
ここで、例えば、制御点経路に含まれる区間のうちの加速区間と減速区間とのいずれかにおいて、ロボット20がディスペンサーによって対象物に吐出物を塗布する作業を行った場合、制御点Tの速度が一定ではないため、対象物に塗布される吐出物の量が対象物上の位置によって異なってしまうことがある。その結果、ロボット20は、対象物に吐出物を塗布する作業の品質を向上させることできない場合がある。すなわち、ロボット20は、当該作業の精度を向上させることができない場合がある。なお、加速区間は、制御点経路に含まれる区間のうち、制御点Tが加速運動を行う区間のことである。加速運動は、制御点Tが行う運動のうち、制御点Tの速度及び角速度のいずれか一方又は両方が時間の経過とともに大きくなる運動のことである。減速区間は、制御点経路に含まれる区間のうち、制御点Tが減速運動を行う区間のことである。減速運動は、制御点Tの速度及び角速度のいずれか一方又は両方が時間の経過とともに小さくなる運動のことである。
また、例えば、制御点経路に含まれる区間のうちの加速区間と減速区間とのいずれかにおいて、ボタンの押下を行うことによってボタンの品質を検査する作業をロボット20が行った場合、制御点Tの速度が一定ではないため、ボタンからエンドエフェクターEに対して作用する力の時間的な変化が、当該作業を行う毎に変化してしまうことがある。図2は、ボタンの品質を検査する作業においてボタンからエンドエフェクターEに対して作用する力と経過時間との関係の一例を示す図である。また、図2に示したグラフは、当該加速区間においてボタンの品質を検査する作業をロボット20が行った場合におけるグラフの一例である。図2に示したグラフの横軸は、経過時間を示す。図2に示したグラフの縦軸は、ロボット20がボタンを押下する方向に沿ってエンドエフェクターEに作用した力を示す。図2に示したピークP1は、ロボット20が検査する対象となるボタンの作動力を示す。ロボット20が当該加速区間において当該作業を行った場合、当該作業を行う毎にピークP1の位置が変化してしまうことがある。すなわち、ロボット20は、検査する対象となるボタンの作動力を精度よく検査することができなくなり、不良品の選別を行うことができなくなってしまうことがある。何故なら、このピークP1の位置の変化は、ボタンが不良品であった場合にも起こり得る現象だからである。このため、ロボット20が当該加速区間において当該作業を行った場合、ロボット20は、当該作業を精度よく行うことができなくなってしまうことがある。
図3は、ボタンの品質を検査する作業においてボタンからエンドエフェクターEに対して作用する力とエンドエフェクターEの位置の変化との関係の一例を示す図である。当該位置の変化は、ロボット20がボタンを押下する方向に沿ったエンドエフェクターEの位置の変化のことである。そして、図3に示したグラフは、制御点経路に含まれる区間のうちの加速区間においてボタンの品質を検査する作業をロボット20が行った場合におけるグラフの一例である。図3に示したグラフの横軸は、経過時間を示す。図3に示したグラフの縦軸は、当該方向に沿ってエンドエフェクターEに作用した力を示す。図3に示したピークP2は、検査する対象となるボタンの作動力を示す。ロボット20が当該加速区間において当該作業を行った場合、図2に示したピークP1の場合と同様に、当該作業を行う毎にピークP2の位置が変化してしまうことがある。すなわち、ロボット20は、検査する対象となるボタンの作動力を精度よく検査することができなくなり、不良品の選別を行うことができなくなってしまうことがある。何故なら、このピークP2の位置の変化は、ボタンが不良品であった場合にも起こり得る現象だからである。このため、ロボット20が当該加速区間において当該作業を行った場合、ロボット20は、当該作業を精度よく行うことができなくなってしまうことがある。
このように、制御点Tが加速運動又は減速運動を行っている場合において、すなわち、制御点Tの速度が一定ではない場合において、ロボット20が予め決められた作業を行うと、ロボット20は、当該作業を精度よく行えないことがある。
そこで、ロボット制御装置40は、動作プログラムに基づいて、連続経路制御によって制御点Tを第1教示点から第2教示点へ動かす経路である制御点経路に含まれる区間のうち、制御点Tが等速運動を行う区間である等速区間の始点と終点とのいずれか一方又は両方を算出する。本実施形態において、制御点Tの等速運動は、制御点Tの運動のうち制御点Tの速度及び角速度の両方が時間の経過とともに変化しない運動のことである。ここで、制御点Tは、加速区間、減速区間、等速区間のそれぞれにおいて、並進運動と、回転運動と、並進運動と回転運動とを合わせた複合運動とのいずれかを行う。制御点Tが行う並進運動は、制御点Tの姿勢を変化させずに制御点Tの位置を変化させる運動のことである。また、制御点Tが行う回転運動は、制御点Tの位置を変化させずに制御点Tの姿勢を変化させる運動のことである。制御点Tが行う複合運動は、制御点Tの位置及び姿勢を変化させる運動のことである。なお、制御点Tが行う複合運動は、並進運動と回転運動とのうち並進運動が優先される運動であってもよく、並進運動と回転運動とのうち回転運動が優先される運動であってもよい。以下では、説明を簡略化するため、制御点Tの運動が複合運動である場合の説明を省略する。
より具体的には、ロボット制御装置40は、動作プログラムに基づいて、制御点経路における等速区間の始点として、制御点Tの運動における加速が終わる位置及び姿勢を算出する。また、ロボット制御装置40は、動作プログラムに基づいて、制御点経路における等速区間の終点として、制御点Tの運動における減速が始まる位置及び姿勢を算出する。すなわち、ロボット制御装置40は、動作プログラムに基づいて、制御点経路において、制御点Tの運動における加速が終わる位置及び姿勢と、制御点Tの運動における減速が始まる位置及び姿勢とのいずれか一方又は両方を算出する。これにより、ロボット制御装置40では、制御点経路における等速区間を動作プログラムによって精度よく指定することができる。その結果、ロボット制御装置40は、ロボット20に各種の検査を精度よく行わせることができ、例えば、不良品を生産してしまうことを抑制することができる。また、ロボット制御装置40は、例えば、ロボット20が作業を行う作業領域を仮想的に再現した仮想空間を表示させるとともに、当該仮想空間内に制御点経路における等速区間を表示することができる。その結果、ロボット制御装置40は、加速区間又は減速区間においてロボット20に作業を行わせてしまうことを抑制することができ、ロボット20に行わせる作業の精度、効率のいずれか一方又は両方を向上させることができる。
なお、ロボット制御装置40は、制御点Tに並進運動を行わせる場合、動作プログラムに基づいて、制御点経路において、制御点Tの運動における加速が終わる位置と、制御点Tの運動における減速が始まる位置とのいずれか一方又は両方を算出する構成であってもよい。これは、当該場合、制御点Tの姿勢が変化しないためである。また、ロボット制御装置40は、制御点Tに回転運動を行わせる場合、動作プログラムに基づいて、連続経路制御によって制御点Tを第1教示点から第2教示点へ動かす経路において、制御点Tの運動における加速が終わる姿勢と、制御点Tの運動における減速が始まる姿勢とのいずれか一方又は両方を算出する構成であってもよい。これは、当該場合、制御点Tの位置が変化しないためである。
なお、ロボット制御装置40は、上記において説明した連続経路制御、力制御に加えて、連続位置決め制御等の他の制御によってもアームAを動作させる。しかし、本実施形態では、当該他の制御については、説明を省略する。
また、ロボット制御装置40は、情報処理装置50を介してユーザーから各種の操作を受け付け、受け付けた操作に応じた処理を行う。例えば、ロボット制御装置40は、当該操作に応じた情報を情報処理装置50に出力する。また、ロボット制御装置40は、当該操作に応じて、情報処理装置50に各種の画像を表示させる。また、ロボット制御装置40は、当該操作に応じてアームAを動作させる。
また、ロボット制御装置40は、情報処理装置50から各種の情報を取得する。ロボット制御装置40は、取得した情報に応じた処理を行う。例えば、ロボット制御装置40は、情報処理装置50から前述の動作プログラムを取得する。ロボット制御装置40は、取得した動作プログラムを、ロボット制御装置40が備えるメモリーに記憶させる。
情報処理装置50は、例えば、ノートPC(Personal Computer)、タブレットPC等の情報処理装置、ティーチングペンダント等の教示装置である。なお、情報処理装置50は、デスクトップPC、ワークステーション、多機能携帯電話端末(スマートフォン)、携帯電話端末、PDA(Personal Digital Assistant)等の他の情報処理装置であってもよい。
情報処理装置50は、ユーザーから各種の操作を受け付ける。情報処理装置50は、受け付けた操作に応じた処理を行う。例えば、情報処理装置50は、当該操作に応じた情報をロボット制御装置40に出力する。また、情報処理装置50は、当該操作に基づいて動作プログラムを生成し、生成した動作プログラムをロボット制御装置40に出力する。また、情報処理装置50は、当該操作に基づいてロボット制御装置40を制御し、ロボット制御装置40を介してアームAを動作させる。
また、情報処理装置50は、ロボット制御装置40から各種の情報を取得する。情報処理装置50は、取得した情報に応じた処理を行う。例えば、情報処理装置50は、ロボット制御装置40から取得した情報に応じた画像を表示させる。
<ロボット制御装置のハードウェア構成>
以下、図4を参照し、ロボット制御装置40のハードウェア構成について説明する。図4は、ロボット制御装置40のハードウェア構成の一例を示す図である。
ロボット制御装置40は、例えば、第1プロセッサー41と、第1メモリー42と、第1通信部44を備える。これらの構成要素は、バスを介して相互に通信可能に接続されている。また、ロボット制御装置40は、第1通信部44を介してロボット20、情報処理装置50のそれぞれと通信を行う。
第1プロセッサー41は、例えば、CPU(Central Processing Unit)である。なお、第1プロセッサー41は、CPUに代えて、FPGA(Field-Programmable Gate Array)等の他のプロセッサーであってもよい。第1プロセッサー41は、第1メモリー42に格納された各種のプログラムを実行する。
第1メモリー42は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、ROM(Read-Only Memory)、RAM(Random Access Memory)等を含む。なお、第1メモリー42は、ロボット制御装置40に内蔵されるものに代えて、USB(Universal Serial Bus)等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。第1メモリー42は、ロボット制御装置40が処理する各種の情報、各種の画像、動作プログラム等を格納する。
第1通信部44は、例えば、USB等のデジタル入出力ポートやイーサネット(登録商標)ポート等を含んで構成される。
なお、ロボット制御装置40は、キーボードやマウス、タッチパッド等の入力装置を備える構成であってもよい。また、ロボット制御装置40は、液晶ディスプレイパネル、有機EL(ElectroLuminescence)ディスプレイパネル等を備えた表示装置を備える構成であってもよい。
<情報処理装置のハードウェア構成>
以下、図5を参照し、情報処理装置50のハードウェア構成について説明する。図5は、情報処理装置50のハードウェア構成の一例を示す図である。
情報処理装置50は、例えば、第2プロセッサー51と、第2メモリー52と、入力受付部53と、第2通信部54と、表示部55を備える。これらの構成要素は、バスを介して相互に通信可能に接続されている。また、情報処理装置50は、第2通信部54を介してロボット制御装置40と通信を行う。
第2プロセッサー51は、例えば、CPUである。なお、第2プロセッサー51は、CPUに代えて、FPGA等の他のプロセッサーであってもよい。第2プロセッサー51は、第2メモリー52に格納された各種のプログラムを実行する。
第2メモリー52は、例えば、HDDやSSD、EEPROM、ROM、RAM等を含む。なお、第2メモリー52は、情報処理装置50に内蔵されるものに代えて、USB等のデジタル入出力ポート等によって接続された外付け型の記憶装置であってもよい。第2メモリー52は、情報処理装置50が処理する各種の情報、各種の画像等を格納する。
入力受付部53は、例えば、キーボードやマウス、タッチパッド等の入力装置である。なお、入力受付部53は、表示部55と一体に構成されたタッチパネル等の他の入力装置であってもよい。
第2通信部54は、例えば、USB等のデジタル入出力ポートやイーサネット(登録商標)ポート等を含んで構成される。
表示部55は、例えば、液晶ディスプレイパネル、有機ELディスプレイパネル等を備えた表示装置である。
<ロボット制御装置の機能構成>
以下、図6を参照し、ロボット制御装置40の機能構成について説明する。図6は、ロボット制御装置40の機能構成の一例を示す図である。
ロボット制御装置40は、第1メモリー42と、第1通信部44と、制御部46を備える。
制御部46は、ロボット制御装置40の全体を制御する。制御部46は、取得部461と、命令読込部463と、経路算出部465と、ロボット制御部467と、表示制御部469を備える。制御部46が備えるこれらの機能部は、例えば、第1プロセッサー41が、第1メモリー42に記憶された各種の指令を実行することにより実現される。また、当該機能部のうちの一部又は全部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
取得部461は、力検出部FSが検出した外力を示す外力情報を力検出部FSから取得する。
命令読込部463は、第1メモリー32に記憶された動作プログラムを読み出す。命令読込部463は、例えば、読み出した動作プログラムに含まれる命令を、上から順に1行ずつ読み込む。
経路算出部465は、命令読込部463が読み込んだ命令が経路算出部465により実行される命令である場合、当該命令に応じた処理を行う。例えば、経路算出部465は、当該命令に応じて、前述の制御点経路を算出する。
ロボット制御部467は、命令読込部463が読み込んだ命令がロボット制御部467により実行される命令である場合、当該命令に応じた処理を行う。例えば、ロボット制御部467は、当該命令に応じて、取得部461が取得した外力情報に基づいてロボット20を制御する。また、ロボット制御部467は、当該命令に応じて、経路算出部465が算出した制御点経路に沿って制御点Tが動くようにロボット20を制御する。
表示制御部469は、情報処理装置50を介してユーザーから受け付けた操作に基づいて、各種の画像を生成する。表示制御部469は、生成した画像を示す情報を情報処理装置50に出力し、情報処理装置50の表示部55に当該画像を表示させる。
<動作プログラムと動作プログラムに応じてロボット制御装置が行う処理>
以下、図7~図12を参照し、動作プログラムと、動作プログラムに応じたロボット制御装置40が行う処理とのそれぞれについて説明する。なお、図7~図12に示した動作プログラムにおけるプログラム言語は、一例に過ぎず、ロボット制御装置40にコンパイル可能なプログラム言語であれば如何なるプログラム言語であってもよい。
前述した通り、ロボット制御装置40は、この一例において、動作プログラムに基づいて、制御点Tの並進運動又は回転運動において、加速終了位置姿勢と減速開始位置姿勢とのいずれか一方又は両方を算出する。加速終了位置姿勢は、制御点経路において、制御点Tの加速が終わる位置及び姿勢のことである。減速開始位置姿勢は、制御点経路において、制御点Tの減速が始まる位置及び姿勢のことである。例えば、ロボット制御装置40は、図7に示した動作プログラムに含まれる命令を読み込み、制御点Tの並進運動における加速終了位置姿勢を算出する。
図7は、情報処理装置50の表示部55に表示された動作プログラム編集画像の一部の第1例を示す図である。動作プログラム編集画像は、情報処理装置50の表示部55に表示される画像のうち、情報処理装置50を介してユーザーが動作プログラムの生成、修正、削除等(すなわち、編集)を行う画像である。図7に示した動作プログラム編集画像には、動作プログラムに含まれる命令のうち、制御点Tの並進運動における加速終了位置姿勢を算出する命令、及び当該命令に関連する各種の命令等が示されている。
図7に示した「Motor on」は、動作プログラムに含まれる命令のうち、マニピュレーターMが備える6つのモーターのそれぞれの電源をオンにする命令である。命令読込部463が当該命令を読み込んだ場合、ロボット制御部467は、当該電源をオンにする。
また、図7に示した「Power High」は、ロボット制御装置40の動作モードを、マニピュレーターMが備える6つのモーターそれぞれを高パワーで駆動させるモードに切り替える命令である。命令読込部463が当該命令を読み込んだ場合、ロボット制御部467は、当該動作モードを、当該モードに切り替える。
また、図7に示した「SpeedS 20」は、制御点Tの等速運動時における制御点Tの速度を、20[mm/s]に設定する命令である。命令読込部463が当該命令を読み込んだ場合、ロボット制御部467は、制御点Tの等速運動時における制御点Tの速度を20[mm/s]に設定する。例えば、ロボット制御部467は、当該場合、制御点Tの速度を示す情報として20[mm/s]を示す情報を第1メモリー42に記憶させることにより、制御点Tの等速運動時における制御点Tの速度を20[mm/s]に設定する。
また、図7に示した「AccelS 800,500」は、制御点Tの並進運動時の加速区間における制御点Tの加速度を800[mm/s2]に設定するとともに、制御点Tの並進運動時の減速区間における制御点Tの加速度(すなわち、減速度)を500[mm/s2]に設定する命令である。命令読込部463が当該命令を読み込んだ場合、ロボット制御部467は、制御点Tの並進運動時の加速区間における制御点Tの加速度を800[mm/s2]に設定し、制御点Tの並進運動時の減速区間における制御点Tの加速度を500[mm/s2]に設定する。例えば、ロボット制御部467は、当該場合、制御点Tの並進運動時の加速区間における制御点Tの加速度を示す情報として800[mm/s2]を示す情報を第1メモリー42に記憶させることにより、当該加速度を800[mm/s2]に設定する。また、ロボット制御部467は、当該場合、制御点Tの並進運動時の減速区間における制御点Tの加速度を示す情報として500[mm/s2]を示す情報を第1メモリー42に記憶させることにより、当該加速度を500[mm/s2]に設定する。
また、図7に示した「ConstSpdPos」は、4つの引数を渡すことによって、制御点Tの並進運動における加速終了位置姿勢と、制御点Tの並進運動における減速開始位置姿勢と、制御点Tの回転運動における加速終了位置姿勢と、制御点Tの回転運動における減速開始位置姿勢とのいずれかを返り値として返す関数である。当該4つの引数には、第2教示点の位置及び姿勢を指定する第11引数、制御点Tの動きを指定する第12引数、加速終了位置姿勢と減速開始位置姿勢とのいずれか一方を返り値として指定する第13引数、並進運動と回転運動とのいずれか一方を制御点Tの運動として指定する第14引数のそれぞれが含まれている。
ここで、図7に示した例では、「ConstSpdPos」には、「P1」によって第2教示点の位置及び姿勢が第11引数として渡されている。すなわち、「P1」は、第2教示点の位置及び姿勢が格納された変数である。また、当該例では、「ConstSpdPos」には、「Move」によって制御点Tの動きが第12引数として渡されている。すなわち、「Move」は、制御点Tの動きを示す変数である。また、当該例では、「ConstSpdPos」には、「Acceleration」によって加速終了位置姿勢が第13引数として渡されている。すなわち、「Acceleration」は、加速終了位置姿勢を示す変数である。また、当該例では、「ConstSpdPos」には、「Translational」によって並進運動が第14引数として渡されている。すなわち、「Translational」は、並進運動を示す変数である。
従って、図7に示した「ConstSpdPos(P1,Move,Acceleration,Translational)」は、第1教示点から「P1」によって指定された第2教示点まで制御点Tを並進運動によって動かした場合における加速終了位置姿勢を、返り値として返す。
そして、図7に示した「P10」は、「ConstSpdPos(P1,Move,Acceleration,Translational)」が返した返り値を格納する変数である。すなわち、図5に示した「P10=ConstSpdPos(P1,Move,Acceleration,Translational)」は、第1教示点から「P1」によって指定された第2教示点まで制御点Tを並進運動によって動かした場合における加速終了位置姿勢を「P10」に格納する命令である。命令読込部463が当該命令を読み込んだ場合、経路算出部465は、マニピュレーターMが備える6つのモーターそれぞれのエンコーダーから、マニピュレーターMが備える各関節の回動角を示す情報を取得する。経路算出部465は、取得した情報が示す回動角に基づく順運動学によって制御点Tの現在の位置及び姿勢、すなわち、第1教示点の位置及び姿勢を算出する。経路算出部465は、算出した第1教示点の位置及び姿勢と、「P1」によって指定される第2教示点の位置及び姿勢と、制御点Tの等速運動時における制御点Tの速度と、制御点Tの並進運動時の加速区間における制御点Tの加速度と、制御点Tの並進運動時の減速区間における制御点Tの加速度とに基づいて、制御点Tの並進運動における加速終了位置姿勢を算出する。経路算出部465は、算出した加速終了位置姿勢を、「P10」に格納する。
なお、例えば、上記において説明した「ConstSpdPos(P1,Move,Acceleration,Translational)」の「Acceleration」を「Deceleration」に変更した「ConstSpdPos(P1,Move,Deceleration,Translational)」は、第1教示点から「P1」によって指定された第2教示点まで制御点Tを並進運動によって動かした場合における減速開始位置姿勢を、返り値として返す。
また、例えば、上記において説明した「ConstSpdPos(P1,Move,Acceleration,Translational)」の「Translational」を「Rotational」に変更した「ConstSpdPos(P1,Move,Acceleration,Rotational)」は、第1教示点から「P1」によって指定された第2教示点まで制御点Tを回転運動によって動かした場合における加速終了位置姿勢を、返り値として返す。
また、例えば、上記において説明した「ConstSpdPos(P1,Move,Acceleration,Translational)」の「Acceleration」を「Deceleration」に変更するとともに、「Translational」を「Rotational」に変更した「ConstSpdPos(P1,Move,Deceleration,Rotational)」は、第1教示点から「P1」によって指定された第2教示点まで制御点Tを回転運動によって動かした場合における減速開始位置姿勢を、返り値として返す。
このように、ロボット制御装置40は、動作プログラムに基づいて、制御点Tの並進運動又は回転運動において、加速終了位置姿勢と減速開始位置姿勢とのいずれか一方又は両方を算出することができる。
また、ロボット制御装置40は、動作プログラムに含まれる命令のうち図7に示した命令によって「P10」に格納した位置及び姿勢を用いたロボット20の制御を行うことができる。例えば、ロボット制御装置40は、動作プログラムに含まれる命令のうち図8に示した命令に基づいて、当該位置及び当該姿勢を用いたロボット20の制御を行う。
図8は、情報処理装置50の表示部55に表示された動作プログラム編集画像の一部の第2例を示す図である。図8に示した動作プログラム編集画像には、動作プログラムに含まれる命令のうち、第1教示点の位置から加速終了位置までの距離が、第1教示点の位置から作業開始位置までの距離よりも長いか否かを判定する命令と、当該命令に関連する各種の命令等とが示されている。加速終了位置は、制御点経路における加速区間が終了する位置、すなわち、制御点経路において制御点Tの加速が終わる位置のことである。作業開始位置は、制御点経路における制御点Tの位置のうち、ロボット20が予め決められた作業を開始する位置のことである。
図8に示した「Dist」は、2つの引数を渡すことによって、2点間の距離を返り値として返す関数である。当該2つの引数には、当該2点のうちの一方の位置及び姿勢を指定する第21引数と、当該2点のうちの他方の位置及び姿勢を指定する第22引数のそれぞれが含まれている。
ここで、図8に示した例では、1行目の「Dist」には、「P1」によって第2教示点の位置及び姿勢が第21引数として渡されている。また、当該例では、「Dist」には、「P10」によって加速終了位置姿勢が第22引数として渡されている。
従って、図8に示した「Dist(P1,P10)」は、「P1」によって指定された第2教示点の位置と、「P10」によって指定された位置であって制御点Tを並進運動によって動かした場合における加速終了位置との間の距離を返り値として返す。
すなわち、図8に示した「Print Dist(P1,P10)」は、「P1」によって指定された第2教示点の位置と、「P10」によって指定された位置であって制御点Tを並進運動によって動かした場合における加速終了位置との間の距離を表示させる命令である。命令読込部463が当該命令を読み込んだ場合、経路算出部465は、「P1」が示す第2教示点の位置及び姿勢のうちの当該位置と、「P10」が示す当該加速終了位置姿勢のうちの加速終了位置との間の距離を算出する。そして、表示制御部469は、経路算出部465が算出した当該距離を情報処理装置50の表示部55に表示させる。
また、図8に示した「Dist(Here,P10)」は、「Here」によって指定された制御点Tの現在の位置と、「P10」によって指定さえた位置であって制御点Tを並進運動によって動かした場合における加速終了位置との間の距離を返り値として返す。
また、P(StartDispensing)は、前述の作業開始位置を示す変数である。ここで、図8に示した例では、ロボット20が行う予め決められた作業は、ディスペンサーによって対象物に吐出物を塗布する作業である。従って、図8に示した「Dist(Here,P(StartDispensing)」は、「Here」によって指定された制御点Tの現在の位置と、「P(StartDispensing)」によって指定さえた作業開始位置との間の距離を返り値として返す。
すなわち、図8に示したIf文は、制御点Tの現在の位置から加速終了位置までの第1距離が、制御点Tの現在の位置から作業開始位置までの第2距離よりも長い場合、「Exceeding distance:」とともに第1距離と第2距離との差分を表示してエラーを返し、第1距離が第2距離よりも短い場合、「Move P1」を実行する命令である。命令読込部463が当該命令を読み込んだ場合、経路算出部465は、第1距離と第2距離とのそれぞれを算出する。経路算出部465は、算出した第1距離が、算出した第2距離よりも長いと判定した場合、すなわち、前述の加速区間内の一部においてロボット20が作業を行ってしまう場合、第1距離と第2距離との差分を算出する。そして、表示制御部469は、経路算出部465が算出した当該差分を、「Exceeding distance:」とともに情報処理装置50の表示部55に表示させる。一方、算出した第1距離が、算出した第2距離よりも長いと経路算出部465が判定した場合、すなわち、加速区間内においてロボット20が作業を行わない場合、ロボット制御部467は、「Move P1」を実行する。ここで、「Move P1」は、「P1」によって指定された第2教示点への制御点Tの並進運動を開始させる命令である。すなわち、当該場合、ロボット制御部467は、アームAを動作させて当該並進運動を開始させる。これにより、ロボット制御装置40は、加速区間内においてロボット20が予め決められた作業を行ってしまうことを抑制し、その結果、ロボット20に当該作業を精度よく行わせることができる。
このようにして、ロボット制御装置40は、動作プログラムに含まれる命令のうち図7に示した命令によって「P10」に格納した位置及び姿勢を用いたロボット20の制御を行うことができる。
また、ロボット制御装置40は、例えば、動作プログラムに含まれる命令のうち図7に示した命令によって、制御点Tの回転運動における加速終了位置姿勢と減速開始位置姿勢との両方を算出することができる。
図9は、情報処理装置50の表示部55に表示された動作プログラム編集画像の一部の第3例を示す図である。図9に示した動作プログラム編集画像には、動作プログラムに含まれる命令のうち、制御点Tの回転運動における加速終了位置姿勢と減速開始位置姿勢との両方を算出する命令、及び当該命令に関連する各種の命令等が示されている。
また、図9に示した「SpeedR 60」は、制御点Tの等速運動時における制御点Tの角速度を、60[deg/s]に設定する命令である。命令読込部463が当該命令を読み込んだ場合、ロボット制御部467は、制御点Tの等速運動時における制御点Tの角速度を60[deg/s]に設定する。例えば、ロボット制御部467は、当該場合、制御点Tの角速度を示す情報として60[deg/s]を示す情報を第1メモリー42に記憶させることにより、制御点Tの等速運動時における制御点Tの角速度を60[deg/s]に設定する。
また、図9に示した「AccelR 600,600」は、制御点Tの回転運動時の加速区間における制御点Tの角加速度を600[deg/s2]に設定するとともに、制御点Tの回転運動時の減速区間における制御点Tの角加速度(すなわち、角減速度)を600[deg/s2]に設定する命令である。命令読込部463が当該命令を読み込んだ場合、ロボット制御部467は、制御点Tの回転運動時の加速区間における制御点Tの角加速度を600[deg/s2]に設定し、制御点Tの回転運動時の減速区間における制御点Tの角加速度を600[deg/s2]に設定する。例えば、ロボット制御部467は、当該場合、制御点Tの回転運動時の加速区間における制御点Tの角加速度を示す情報として600[deg/s2]を示す情報を第1メモリー42に記憶させることにより、当該角加速度を600[deg/s2]に設定する。また、ロボット制御部467は、当該場合、制御点Tの回転運動時の減速区間における制御点Tの角加速度を示す情報として600[deg/s2]を示す情報を第1メモリー42に記憶させることにより、当該角加速度を600[deg/s2]に設定する。
また、図9に示した「P10=ConstSpdPos(P1,Move,Acceleration,Rotational)」は、第1教示点から「P1」によって指定された第2教示点まで制御点Tを回転運動によって動かした場合における加速終了位置姿勢を前述の「P10」に格納する命令である。命令読込部463が当該命令を読み込んだ場合、経路算出部465は、マニピュレーターMが備える6つのモーターそれぞれのエンコーダーから、マニピュレーターMが備える各関節の回動角を示す情報を取得する。経路算出部465は、取得した情報が示す回動角に基づく順運動学によって制御点Tの現在の位置及び姿勢、すなわち、第1教示点の位置及び姿勢を算出する。経路算出部465は、算出した第1教示点の位置及び姿勢と、「P1」によって指定される第2教示点の位置及び姿勢と、制御点Tの等速運動時における制御点Tの角速度と、制御点Tの回転運動時の加速区間における制御点Tの角加速度と、制御点Tの回転運動時の減速区間における制御点Tの角加速度とに基づいて、制御点Tの回転運動における加速終了位置姿勢を算出する。経路算出部465は、算出した加速終了位置姿勢を、「P10」に格納する。
また、図9に示した「P11=ConstSpdPos(P1,Move,Deceleration,Rotational)」は、第1教示点から「P1」によって指定された第2教示点まで制御点Tを回転運動によって動かした場合における減速開始位置姿勢を、「P11」という変数に格納する命令である。命令読込部463が当該命令を読み込んだ場合、経路算出部465は、マニピュレーターMが備える6つのモーターそれぞれのエンコーダーから、マニピュレーターMが備える各関節の回動角を示す情報を取得する。経路算出部465は、取得した情報が示す回動角に基づく順運動学によって制御点Tの現在の位置及び姿勢、すなわち、第1教示点の位置及び姿勢を算出する。経路算出部465は、算出した第1教示点の位置及び姿勢と、「P1」によって指定される第2教示点の位置及び姿勢と、制御点Tの等速運動時における制御点Tの角速度と、制御点Tの回転運動時の加速区間における制御点Tの角加速度と、制御点Tの回転運動時の減速区間における制御点Tの角加速度とに基づいて、制御点Tの回転運動における減速開始位置姿勢を算出する。経路算出部465は、算出した減速開始位置姿勢を、「P11」に格納する。
このように、ロボット制御装置40は、動作プログラムに基づいて、制御点Tの回転運動における加速終了位置姿勢と減速開始位置姿勢との両方を算出することができる。
また、ロボット制御装置40は、動作プログラムに含まれる命令のうち図10に示した命令によって図9に示した「P10」及び「P11」に格納した位置及び姿勢を用いたロボット20の制御を行うことができる。例えば、ロボット制御装置40は、動作プログラムに含まれる命令のうち図10に示した命令に基づいて、図9に示した「P10」及び「P11」に格納した位置及び姿勢を用いたロボット20の制御を行う。
図10は、情報処理装置50の表示部55に表示された動作プログラム編集画像の一部の第4例を示す図である。図10に示した動作プログラム編集画像には、動作プログラムに含まれる命令のうち、制御点Tの位置及び姿勢が「P10」が示す位置及び姿勢である場合における第6関節の回動角と、制御点Tの位置及び姿勢が「P11」が示す位置及び姿勢である場合における第6関節の回動角との差分が360[deg]よりも小さいか否かを判定する命令と、当該命令に関連する各種の命令等とが示されている。ここで、第6関節は、マニピュレーターMが有する6つの関節のうち基台Bから最も遠くに設けられている関節のことである。また、第6関節は、マニピュレーターMにエンドエフェクターEが取り付けられている場合において、エンドエフェクターEを回動させる関節のことである。また、以下では、説明の便宜上、当該差分を、算出対象差分と称して説明する。
図10に示した「JAngle(P10,6)」は、制御点Tの位置及び姿勢が「P10」が示す位置及び姿勢である場合における第6関節の回動角を返り値として返す関数である。
また、図10に示した「JAngle(P11,6)」は、制御点Tの位置及び姿勢が「P11」が示す位置及び姿勢である場合における第6関節の回動角を返り値として返す関数である。
すなわち、図10に示した「Print JAngle(P10,6)-JAngle(P11,6)」は、前述の算出対象差分を表示する命令である。命令読込部463が当該命令を読み込んだ場合、経路算出部465は、制御点Tの位置及び姿勢が「P10」が示す位置及び姿勢である場合におけるマニピュレーターMの第6関節の回動角を逆運動学に基づいて算出するとともに、制御点Tの位置及び姿勢が「P11」が示す位置及び姿勢である場合におけるマニピュレーターMの第6関節の回動角を逆運動学に基づいて算出する。経路算出部465は、算出した2つの回動角に基づいて算出対象差分として算出する。そして、表示制御部469は、経路算出部465が算出した算出対象差分を情報処理装置50の表示部55に表示させる。
また、図10に示したIf文は、算出対象差分が360[deg]よりも小さい場合、「Check AccelR and starting Point」を表示してエラーを返し、算出対象差分が360[deg]よりも大きい場合、「Move P1 ROT」を実行する命令である。例えば、ロータリースイッチを360[deg]回動させてロータリースイッチの品質を検査する作業をロボット20が精度よく行う場合、ロボット20は、等速区間において作業を行う必要があるため、加速区間、等速区間、減速区間のそれぞれを合わせて360[deg]よりも大きい回動角となる回動を第6関節に行わせる必要がある。例えば、制御点Tの回転運動時の等速区間における制御点Tの回動角が360[deg]であり、制御点Tの等速運動時における角速度が60[deg/s]であり、制御点Tの回転運動時の加速区間における制御点Tの角加速度が600[deg/s2]であり、制御点Tの回転運動時の減速区間における制御点Tの角加速度が600[deg/s2]である場合、制御点Tの回転運動時の加速区間及び減速区間それぞれでの回動角は、3[deg]となる。この場合、ロボット20は、加速区間、等速区間、減速区間のそれぞれを合わせて366[deg]の回動を第6関節に行わせる必要がある。このような場合において、ロボット制御装置40は、当該命令によってロボット20を制御する。命令読込部463が当該命令を読み込んだ場合、経路算出部465は、算出対象差分を算出する。算出した算出対象差分が360[deg]よりも小さいと経路算出部465が判定した場合、表示制御部469は、「Check AccelR and starting Point」を情報処理装置50の表示部55に表示し、エラーを返す。一方、算出した算出対象差分が360[deg]よりも大きいと経路算出部465が判定した場合、すなわち、ロボット制御部467は、「Move P1 ROT」を実行する。ここで、「Move P1 ROT」は、「P1」によって指定された第2教示点への制御点Tの回転運動を開始させる命令である。すなわち、当該場合、ロボット制御部467は、アームAを動作させて当該回転運動を開始させる。これにより、ロボット制御装置40は、加速区間内においてロボット20が予め決められた作業を行ってしまうことを抑制し、その結果、ロボット20に当該作業を精度よく行わせることができる。
このようにして、ロボット制御装置40は、動作プログラムに含まれる命令のうち図10に示した命令によって図9に示した「P10」及び「P11」に格納した位置及び姿勢を用いたロボット20の制御を行うことができる。
また、ロボット制御装置40は、動作プログラムに含まれる命令のうち図9、図10に示した命令とともに図11に示した命令を実行することによって、例えば、モーターのコギングトルクを測定する作業をロボット20に精度よく行わせることができる。
図11は、情報処理装置50の表示部55に表示された動作プログラム編集画像の一部の第5例を示す図である。図11に示した動作プログラム編集画像には、動作プログラムに含まれる命令のうち、インピーダンス制御によって制御点Tの運動を制御する際、制御点Tの位置及び姿勢を示す制御点座標系におけるX軸に沿った並進運動、制御点座標系におけるY軸に沿った並進運動、制御点座標系におけるZ軸に沿った並進運動、当該X軸周りの回転運動、当該Y軸周りの回転運動、当該Z軸周りの回転運動のうちのいずれをインピーダンス制御によって制御するかを指定する命令と、当該命令に関連する各種の命令等とが示されている。このようなインピーダンス制御は、例えば、モーターのコギングトルクを測定する作業、ロータリーノブの品質を検査する作業、ボトルの蓋を開閉させる作業等のように、回転させる対象となる物体の回転軸がぶれてしまうような作業において好適に用いられる。
図11に示した「PSet FC1.Enabled,True,True,True,False,False,False」は、インピーダンス制御によって制御点Tの運動を制御する際において、制御点Tの位置及び姿勢を示す制御点座標系におけるX軸に沿った並進運動、制御点座標系におけるY軸に沿った並進運動、制御点座標系におけるZ軸に沿った並進運動のそれぞれをインピーダンス制御によって制御することと、当該X軸周りの回転運動、当該Y軸周りの回転運動、当該Z軸周りの回転運動のそれぞれをインピーダンス制御によって制御しないこととのそれぞれを示す情報を「FC1」という変数に対応付ける命令である。命令読込部463が当該命令を読み込んだ場合、ロボット制御部467は、インピーダンス制御によって制御点Tの運動を制御する際において、当該X軸に沿った並進運動、当該Y軸に沿った並進運動、当該Z軸に沿った並進運動のそれぞれをインピーダンス制御によって制御することと、当該X軸周りの回転運動、当該Y軸周りの回転運動、当該Z軸周りの回転運動のそれぞれをインピーダンス制御によって制御しないこととのそれぞれを示す情報を「FC1」という変数に対応付ける。
また、図11に示した「Move P1 FC1 ROT」は、「P1」によって指定された第2教示点への制御点Tの回転運動を開始させるとともに、「FC1」に対応付けられた情報に基づくインピーダンス制御によって制御点Tの運動を制御する命令である。命令読込部463が当該命令を読み込んだ場合、ロボット制御部467は、「P1」によって指定された第2教示点への制御点Tの回転運動を開始させるとともに、「FC1」に対応付けられた情報に基づくインピーダンス制御によって制御点Tの運動を制御する。これにより、ロボット制御装置40は、例えば、前述のモーターのコギングトルクを測定する作業において、等速区間においてモーターの回動軸を360[deg]回動させながら、当該回動軸のブレによって制御点Tが当該回動軸から受ける並進力をゼロにするように制御点Tを動かすことができる。その結果、ロボット制御装置40は、当該作業をロボット20に精度よく行わせることができる。
また、ロボット制御装置40は、動作プログラムに含まれる命令のうち図12に示した命令を実行することによって、制御点Tの並進運動において、制御点Tが等速運動を行い始めたタイミングでロボット20に作業を開始させることができる。ここで、図12では、一例として、ロボット20が行う作業が、ディスペンサーを備えたエンドエフェクターEによって対象物に吐出物を塗布する作業である場合について説明する。
図12は、情報処理装置50の表示部55に表示された動作プログラム編集画像の一部の第6例を示す図である。図12に示した動作プログラム編集画像には、動作プログラムに含まれる命令のうち、制御点Tの並進運動において、制御点Tが等速運動を行い始めたタイミングでロボット20に作業を開始させる命令と、当該命令に関連する各種の命令等とが示されている。
図12に示した「ConstSpdDparam(P1,Move,Acceleration,Translational)」は、制御点Tの並進運動において、制御点Tが等速運動を行い始めたタイミングを返り値として返す関数である。当該タイミングは、例えば、第1教示点から「P1」によって指定された第2教示点まで制御点Tが並進運動によって到達するまでに要する時間に対する、第1教示点から加速終了位置に制御点Tが並進運動によって到達するまでに要する時間の割合によって表される。なお、当該タイミングは、第1教示点から加速終了位置に制御点Tが並進運動によって到達するまでに要する時間に基づく他の値によって表される構成であってもよい。当該4つの引数には、第2教示点の位置及び姿勢を指定する第31引数、制御点Tの動きを指定する第32引数、加速終了位置姿勢と減速開始位置姿勢とのいずれか一方を返り値として指定する第33引数、並進運動と回転運動とのいずれか一方を制御点Tの運動として指定する第34引数のそれぞれが含まれている。
ここで、図12に示した例では、「ConstSpdDparam」には、「P1」によって第2教示点の位置及び姿勢が第31引数として渡されている。また、当該例では、「ConstSpdDparam」には、「Move」によって制御点Tの動きが第32引数として渡されている。また、当該例では、「ConstSpdDparam」には、「Acceleration」によって加速終了位置姿勢が第33引数として渡されている。また、当該例では、「ConstSpdDparam」には、「Translational」によって並進運動が第34引数として渡されている。
そして、図12に示した「rDparameter」は、「ConstSpdDparam(P1,Move,Acceleration,Translational)」が返した返り値を格納する変数である。すなわち、図12に示した「rDparameter=ConstSpdDparam(P1,Move,Acceleration,Translational)」は、制御点Tの並進運動において、制御点Tが等速運動を行い始めたタイミングを示す情報を「rDparameter」に格納する命令である。命令読込部463が当該命令を読み込んだ場合、経路算出部465は、第1教示点から「P1」によって指定された第2教示点まで制御点Tが並進運動によって到達するまでに要する時間を算出する。また、当該場合、経路算出部465は、第1教示点から加速終了位置に制御点Tが並進運動によって到達するまでに要する時間を算出する。そして、経路算出部465は、第1教示点から「P1」によって指定された第2教示点まで制御点Tが並進運動によって到達するまでに要する時間に対する、第1教示点から加速終了位置に制御点Tが並進運動によって到達するまでに要する時間の割合を算出する。そして、経路算出部465は、算出し割合を、前述のタイミングとして「rDparameter」に格納する。
また、図12に示した「Move P1!D(rDparameter);On DispenseStart!」は、制御点Tが等速運動を行い始めたタイミングにおいて、エンドエフェクターEが備えるディスペンサーに吐出物の吐出を開始させる命令である。ロボット20が行う作業が、ディスペンサーを備えたエンドエフェクターEによって対象物に吐出物を塗布する作業である場合、ロボット20は、ディスペンサーを制御する装置を備える。そして、ロボット制御部467は、ディスペンサーに吐出物の吐出を開始させる要求を当該装置に出力する。命令読込部463が当該命令を読み込んだ場合、ロボット制御部467は、第1教示点から「P1」によって指定された第2教示点に制御点Tを並進させる際、制御点Tが等速運動を行い始めたタイミングにおいて、ディスペンサーに吐出物の吐出を開始させる要求を当該装置に出力する。すなわち、ロボット制御装置40は、制御点Tが等速運動を行い始めた位置とともに、制御点Tが等速運動を行い始めた時間によってロボット20を制御することができる。なお、ロボット制御装置40は、制御点Tが等速運動を行い始めた位置を用いずに、制御点Tが等速運動を行い始めた時間によってロボット20を制御してもよい。例えば、ロボット制御装置40は、ディスペンサーに吐出物の吐出を開始させる要求を当該装置に出力してから実際にディスペンサーが吐出物の吐出を開始するまでの間のタイムラグに基づいて、ディスペンサーに吐出物の吐出を開始させる要求を当該装置に出力するタイミングを早める制御を行う構成であってもよい。
なお、例えば、上記において説明した「ConstSpdDparam(P1,Move,Acceleration,Translational)」の「Acceleration」を「Deceleration」に変更した「ConstSpdDparam(P1,Move,Deceleration,Translational)」は、制御点Tの並進運動において、制御点Tが等速運動を行い終えるタイミングを返り値として返す関数である。
また、例えば、上記において説明した「ConstSpdDparam(P1,Move,Acceleration,Translational)」の「Translational」を「Rotational」に変更した「ConstSpdDparam(P1,Move,Acceleration,Rotational)」は、制御点Tの回転運動において、制御点Tが等速運動を行い始めたタイミングを返り値として返す関数である。
また、例えば、上記において説明した「ConstSpdDparam(P1,Move,Acceleration,Translational)」の「Acceleration」を「Deceleration」に変更するとともに、「Translational」を「Rotational」に変更した「ConstSpdDparam(P1,Move,Deceleration,Rotational)」は、制御点Tの回転運動において、制御点Tが等速運動を行い終えるタイミングを、返り値として返す。
<ロボット制御装置が情報処理装置の表示部に等速区間を表示する処理>
以下、図13を参照し、ロボット制御装置40が情報処理装置50の表示部55に等速区間を表示する処理について説明する。この処理により、ロボット制御装置40は、情報処理装置50によるロボット制御装置40へのロボット20の動作の教示において、等速区間を視覚的にユーザーに提供することができる。その結果、ロボット制御装置40は、当該教示によって教示された情報に基づいて、ロボット20に精度の高い作業を行わせることができる。
図13は、ロボット制御装置40が情報処理装置50の表示部55に等速区間を表示する処理の流れの一例を示す図である。
命令読込部463は、第1メモリー42に予め記憶された動作プログラムを第1メモリー42から読み出す(ステップS110)。
次に、命令読込部463は、ステップS110において第1メモリー42から読み出した動作プログラムを読み込む。そして、命令読込部463が読み込んだ動作プログラムに基づいて、経路算出部465は、制御点経路を算出する(ステップS120)。
次に、経路算出部465は、命令読込部463が読み込んだ動作プログラムに基づいて、ステップS120において算出した制御点経路において、加速終了位置姿勢と、減速開始位置姿勢とを算出する。経路算出部465は、算出した加速終了位置姿勢及び減速開始位置姿勢に基づいて、当該制御点経路における等速区間を特定する(ステップS130)。
次に、表示制御部469は、命令読込部463が読み込んだ動作プログラムに基づいて、経路表示画像を生成する(ステップS140)。経路表示画像は、経路算出部465が算出した制御点経路を表示する画像である。経路表示画像には、ロボット20が作業を行う作業領域を仮想的に再現した仮想空間が表示される領域が含まれている。また、当該仮想空間内には、ロボット20が作業を行う対象物を仮想的に再現した物体等が配置されている。当該対象物は、例えば、ロボット20が押下するボタン、ロボット20が回動させるロータリースイッチ、ロボット20がディスペンサーによって吐出物を塗布する物体等のことである。なお、当該仮想空間内には、ロボット20を仮想的に再現した仮想ロボットが配置されてもよく、当該仮想ロボットが配置されなくてもよい。また、当該仮想空間内における位置は、ロボット20のロボット座標系における位置と対応付けられている。
次に、表示制御部469は、ステップS130において経路算出部465が特定した等速区間を、ステップS140において生成した経路表示画像に重畳する(ステップS150)。なお、表示制御部469は、ステップS120において算出した制御点経路を、当該経路表示画像に重畳する構成であってもよく、当該経路表示画像に重畳しない構成であってもよい。
ここで、図14は、ステップS150において表示制御部469が等速区間を示す画像の一例を示す図である。図14に示した画像PT1は、経路表示画像に含まれる領域のうちロボット20が作業を行う作業領域を仮想的に再現した仮想空間が表示される領域の一例である。なお、図14では、一例として、ロボット20が行う作業が、前述のボタンの品質を検査する作業である場合について説明する。
画像PT1に表示された仮想空間内に配置されたボタンBTは、ロボット20により検査される対象となるボタンを仮想的に再現した仮想ボタンである。また、画像PT1に表示された仮想空間内に配置されたロボットVRは、ロボット20を仮想的に再現した仮想ロボットである。また、画像PT1に表示された仮想空間内に配置されたエンドエフェクターVEは、エンドエフェクターEを仮想的に再現した仮想エンドエフェクターである。また、画像PT1に表示された仮想空間内に配置された点TP1は、第1教示点を示す。また、画像PT1に表示された仮想空間内に配置された点TP2は、第2教示点を示す。そして、線CVPは、画像PT1に表示された仮想空間内に配置された等速区間を示す画像の一例である。
なお、画像PT1において、ユーザーは、情報処理装置50を介してロボット制御装置40を操作することにより、仮想空間内を見る視線方向を変化させることができる。また、画像PT1において、ユーザーは、情報処理装置50を介してロボット制御装置40を操作することにより、仮想空間内を見る際の視点の位置を変化させることができる。これにより、ユーザーは、所望の位置から所望の方向に向かって見た場合の仮想空間内を経路表示画像内に表示させることができる。
また、図15は、ステップS150において表示制御部469が等速区間を示す画像の他の例を示す図である。図15に示した画像PT2は、経路表示画像に含まれる領域のうちロボット20が作業を行う作業領域を仮想的に再現した仮想空間が表示される領域の他の例である。なお、図15では、一例として、ロボット20が行う作業が、ディスペンサーによって対象物に吐出物を塗布する作業である場合について説明する。
画像PT2に表示された仮想空間内に配置された物体VOは、ディスペンサーによって吐出物が塗布される対象物を仮想的に再現した仮想対象物である。また、画像PT2に表示された仮想空間内に配置されたエンドエフェクターVE2は、ディスペンサーを備えたエンドエフェクターEを仮想的に再現した仮想エンドエフェクターである。また、画像PT2表示された仮想空間内に配置された点TP3は、第1教示点を示す。そして、線CVP2は、画像PT2表示された仮想空間内に配置された等速区間を示す画像の一例である。
なお、画像PT2において、ユーザーは、情報処理装置50を介してロボット制御装置40を操作することにより、仮想空間内を見る視線方向を変化させることができる。また、画像PT2において、ユーザーは、情報処理装置50を介してロボット制御装置40を操作することにより、仮想空間内を見る際の視点の位置を変化させることができる。これにより、ユーザーは、所望の位置から所望の方向に向かって見た場合の仮想空間内を経路表示画像内に表示させることができる。
図14及び図15に示したような仮想空間内を表示する経路表示画像によって等速区間を視覚的に確認することにより、ユーザーは、制御点経路においてロボット20に作業を行わせたい所望の区間が等速区間となっているか否かを容易に短時間でチェックすることができる。その結果、ユーザーは、情報処理装置50を介してロボット制御装置40に対して精度の高い教示を行うことができる。
図13に戻る。ステップS150の処理が行われた後、表示制御部469は、ステップS150において等速区間を示す画像を重畳した経路表示画像を示す経路表示画像情報を生成する(ステップS160)。
次に、表示制御部469は、ステップS160において生成した経路表示画像情報を情報処理装置50に出力し、情報処理装置50の表示部55に、ステップS150において等速区間を示す画像を重畳した経路表示画像を表示させ(ステップS170)、処理を終了する。
ここで、図16を参照し、経路表示画像に基づいてユーザーがロボット制御装置40に教示した動作における制御点Tの速度の変化の具体例について説明する。図16は、経路表示画像に基づいてユーザーが教示した動作における制御点Tの速度の変化の具体例を示す図である。なお、図16では、説明を簡略化するため、制御点Tが第1教示点から第2教示点まで直線的に移動する間における制御点Tの速度の変化の一例を示している。図16に示したグラフの縦軸は、制御点Tの速度を示す。また、当該グラフの横軸は、制御点Tが移動する直線上における制御点Tの位置を示す。
図16に示した例では、ロボット制御装置40は、第1教示点の位置の一例である位置XP1から第2教示点の位置の一例である位置XP6まで制御点Tを移動させる間において、ロボット20に作業を行わせている。ここで、位置XP2は、当該例における加速終了位置を示す。また、位置XP5は、当該例における減速開始位置を示す。そして、位置XP3は、ロボット制御装置40がロボット20に作業を開始させた位置の一例を示す。また、位置XP4は、ロボット制御装置40がロボット20に作業を終了させた位置の一例を示す。
すなわち、図16に示した例では、ロボット制御装置40は、制御点Tが等速区間の始点である加速終了位置に到達したタイミングにおいてロボット20に作業を開始させず、加速終了位置よりも予め決められた距離だけ第2教示点側の位置に制御点Tが到達したタイミングにおいてロボット20に作業を開始させている。これにより、ロボット制御装置40は、ロボット20に作業を開始させるタイミングにおいて制御点Tの速度が誤差等によって変化してしまうことを、より確実に抑制することができる。また、当該例では、ロボット制御装置40は、制御点Tが等速区間の終点である減速開始位置に到達したタイミングにおいてロボット20に作業を終了させず、減速開始位置よりも予め決められた距離だけ第1教示点側の位置に制御点Tが到達したタイミングにおいてロボット20に作業を終了させている。これにより、ロボット制御装置40は、ロボット20に作業を終了させるタイミングにおいて制御点Tの速度が誤差等によって変化してしまうことを、より確実に抑制することができる。
なお、図16に示した例は、一例に過ぎず、ロボット制御装置40は、加速終了位置に制御点Tが到達したタイミングにおいてロボット20に作業を開始させる構成であってもよい。また、ロボット制御装置40は、減速開始位置に制御点Tが到達したタイミングにおいてロボット20に作業を終了させる構成であってもよい。
なお、上記において説明したロボット制御装置40が備える機能のうちの一部又は全部は、情報処理装置50に備えられている構成であってもよくロボット制御装置40と情報処理装置50との両方に備えられている構成であってもよい。
以上のように、制御装置(この一例において、制御装置30)は、ロボットアームに設けられたエンドエフェクター(この一例において、エンドエフェクターE)によって対象物に所定の作業を行うロボット(この一例において、ロボット20)を制御する制御装置であって、教示された、エンドエフェクターの所定の部位(この一例において、エンドエフェクターEの中心軸上の位置)が通過する第1位置(この一例において、第1教示点の位置)と、教示された、対象物に当該作業を始める第2位置と、第1位置と第2位置との間に位置し、対象物に対するエンドエフェクターの速度が一定となる第3位置(上記において説明した例では、例えば、線CVPの始点の位置)と、を含む第1画像(この一例において、経路表示画像)を表示させる表示信号を出力する表示制御部(この一例において、表示制御部469)、を備える。これにより、制御装置は、ロボットに行わせる作業の精度、効率のうちのいずれか一方又は両方を向上させることができる。
また、制御装置では、表示制御部は、第1画像に対象物の第2画像(この一例において、仮想対象物)を重畳させる、構成が用いられてもよい。
また、制御装置では、表示制御部は、第1位置から第3位置を経由して描かれる線(この一例において、等速区間を示す画像)を、第1画像に重畳させる、構成が用いられてもよい。
また、制御装置は、連続経路制御におけるロボットの制御点(この一例において、制御点T)の経路(この一例において、制御点経路)を算出する経路算出部(この一例において、経路算出部465)を備え、経路算出部は、予め決められた命令(この一例において、動作プログラム)に基づいて、連続経路制御によって制御点を第1教示点から第2教示点へ動かす経路において、制御点の並進運動における加速が終わる位置(この一例において、加速終了位置)と、制御点の並進運動における減速が始まる位置(減速開始位置)とのいずれか一方又は両方を算出する。これにより、制御装置は、ロボットに行わせる作業の精度、効率のうちのいずれか一方又は両方を向上させることができる。
また、制御装置では、経路算出部は、前記制御点の並進運動における加速が終わる位置又は時間(この一例において、制御点Tが等速運動を行い始めたタイミング)と、制御点の並進運動における減速が始まる位置又は時間(この一例において、制御点Tが等速運動を行い終えたタイミング)とのいずれか一方又は両方を算出する、構成が用いられてもよい。
また、制御装置では、経路算出部は、予め決められた命令に基づいて、連続経路制御によって制御点を第1教示点から第2教示点へ動かす経路において、制御点の回転運動における加速が終わる姿勢と、制御点の回転運動における減速が始まる姿勢とのいずれか一方又は両方を算出する、構成が用いられてもよい。
また、制御装置では、経路算出部は、制御点の回転運動における加速が終わる姿勢又は時間と、制御点の回転運動における減速が始まる姿勢又は時間とのいずれか一方又は両方を算出する、構成が用いられてもよい。
また、制御装置では、経路算出部が算出した経路を表示する経路表示画像を生成し、経路算出部が算出した経路に含まれる区間のうち制御点が等速で動く等速区間を経路表示画像に重畳する表示制御部を備える、構成が用いられてもよい。
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない限り、変更、置換、削除等されてもよい。
また、以上に説明した装置における任意の構成部の機能を実現するためのプログラムを、コンピューター読み取り可能な記録媒体に記録し、そのプログラムをコンピューターシステムに読み込ませて実行するようにしてもよい。当該装置は、例えば、制御装置30、ロボット制御装置40、情報処理装置50等である。なお、ここでいう「コンピューターシステム」とは、OS(Operating System)や周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD(Compact Disk)-ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリー(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピューターシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピューターシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記のプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、上記のプログラムは、前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル、差分プログラム等であってもよい。