(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-19
(45)【発行日】2024-02-28
(54)【発明の名称】ロボットプログラミング装置及びロボットプログラミング方法
(51)【国際特許分類】
B25J 9/22 20060101AFI20240220BHJP
G05B 19/42 20060101ALI20240220BHJP
G05B 19/409 20060101ALI20240220BHJP
【FI】
B25J9/22 A
G05B19/42 P
G05B19/409 C
(21)【出願番号】P 2019155623
(22)【出願日】2019-08-28
【審査請求日】2022-05-17
【前置審査】
(73)【特許権者】
【識別番号】390008235
【氏名又は名称】ファナック株式会社
(74)【代理人】
【識別番号】100106002
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100165157
【氏名又は名称】芝 哲央
(74)【代理人】
【識別番号】100160794
【氏名又は名称】星野 寛明
(72)【発明者】
【氏名】稲葉 豪
【審査官】松浦 陽
(56)【参考文献】
【文献】特開2001-353678(JP,A)
【文献】特開2019-126895(JP,A)
【文献】特許第6498366(JP,B1)
【文献】米国特許出願公開第2012/0317535(US,A1)
【文献】米国特許出願公開第2018/0154517(US,A1)
【文献】特開2014-144523(JP,A)
【文献】光永 法明 NORIAKI MITSUNAGA,タブレット端末で動作する,マイコン用ビジュアルプログラミング環境aiBlocksの開発 aiBlocks: A Visual Programming Environment on a Tablet PC to Write a Micro Controller's Program,情報処理学会 論文誌(トランザクション) 教育とコンピュータ(TCE) Vol.3 No.1 [online] ,日本,情報処理学会,2017年02月22日,第3巻 第1号,pp.53-63
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
G05B 19/18 - 19/416
G05B 19/42 - 19/46
(57)【特許請求の範囲】
【請求項1】
ロボットの操作単位毎に定義されるブロックである操作単位ブロックを用いてプログラミングするロボットプログラミング装置であって、
前記ロボットの動作を操作単位に基づいて定義し、前記操作単位に対応する操作単位ブロックの設定により前記ロボットを動作させるためのプログラミングを行うプログラミング領域と、設定された前記操作単位ブロックに関する設定を行う詳細設定領域と
、前記詳細設定領域を表示又は非表示に
切り替える設定表示切替領域と、を有するユーザインタフェースを表示部に表示する表示制御部を備え、
前記表示制御部は、
前記プログラミング領域の端縁に隣接させて表示した前記設定表示切替領域におけるユーザの入力操作に応じて前記詳細設定領域を表示又は非表示に切り替え
、前記詳細設定領域を非表示に切り替えた際には、前記表示部に、前記プログラミング領域と前記設定表示切替領域とを表示し、前記詳細設定領域を表示に切り替えた際には、前記表示部に、前記プログラミング領域と前記設定表示切替領域に加えて、前記設定表示切替領域の前記プログラミング領域とは反対側の端縁に隣接させて前記詳細設定領域を表示する
ロボットプログラミング装置。
【請求項2】
前記プログラミング領域に設定された前記操作単位ブロックと、前記詳細設定領域に設定された前記操作単位ブロックの設定内容と、に基づいて、前記ロボットを動作させる標準形式の動作プログラムを生成するプログラム生成部を、さらに備える請求項1に記載のロボットプログラミング装置。
【請求項3】
前記表示制御部は、いずれかの操作単位ブロックに関する設定内容を表示する指示を受け付け、前記指示により選択された操作単位ブロックに関する設定内容を前記詳細設定領域に表示する請求項1又は請求項2に記載のロボットプログラミング装置。
【請求項4】
表示部を有するコンピュータにより、ロボットの操作単位毎に定義されるブロックである操作単位ブロックを用いてプログラミングするロボットプログラミング方法であって、
プログラミング領域と、詳細設定領域と
、設定表示切替領域と、を有するユーザインタフェースを前記表示部に表示する表示ステップと、
前記プログラミング領域に、前記ロボットの動作を操作単位に基づいて定義し、前記操作単位に対応する操作単位ブロックを設定させる設定ステップと、
前記詳細設定領域に、前記プログラミング領域に設定された前記操作単位ブロックに関する設定を入力させる入力ステップと、を備え、
前記表示ステップは、
前記プログラミング領域の端縁に隣接させて表示した前記設定表示切替領域におけるユーザの入力操作に応じて前記詳細設定領域を表示又は非表示に切り替え
、前記詳細設定領域を非表示に切り替えた際には、前記表示部に、前記プログラミング領域と前記設定表示切替領域とを表示し、前記詳細設定領域を表示に切り替えた際には、前記表示部に、前記プログラミング領域と前記設定表示切替領域に加えて、前記設定表示切替領域の前記プログラミング領域とは反対側の端縁に隣接させて前記詳細設定領域を表示する
ロボットプログラミング方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロボットプログラミング装置及びロボットプログラミング方法に関する。
【背景技術】
【0002】
ロボットを動作させるためには、教示操作盤又はパーソナルコンピュータ等を用いて、テキスト形式のプログラミング言語で書かれたプログラムを予め生成する必要がある。しかしながら、プログラミング言語における各指令に対するロボットの動きを考慮しつつプログラムを作成する必要があり、プログラミングに不慣れなユーザにとって難しい場合がある。
そこで、ロボットの動作毎のプログラムをブロックにして、ロボットのプログラムを生成するという技術が知られている。例えば、特許文献1、2参照。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2000-155606号公報
【文献】特開2016-137542号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、テキスト形式のプログラムからブロックのプログラムに置き換える場合、
図1Aから
図2に示すように、ブロックの数が膨大になり、プログラムの可視性が悪くなることがある。
図1Aは、ロボットに実行させる動作例を示す図である。
図1Aでは、例えば、次の1から8の動作を実行する。1.ロボットをアプローチ位置「POSITION1」まで移動させる。2.ロボットをワーク位置「POSITION2」まで移動させる。3.ロボットのハンドを閉じる(ワーク10をつかむ)。4.ロボットを退避位置「POSITION3」まで移動させる。5.ロボットをアプローチ位置「POSITION4」まで移動させる。6.ロボットをワーク設置位置「POSITION5」まで移動させる。7.ロボットのハンドを開く(ワーク10を放す)。8.ロボットを退避位置「POSITION6」まで移動させる。
図1Aに示した一連の動作は、例えば、工作機械にワーク10をロード又はアンロードする場合の動作に相当する。
【0005】
図1Bは、
図1Aの動作をロボットに教示する従来のテキスト形式のプログラムの一例を示す図である。
図1Bの1行目から8行目それぞれのプログラムは、
図1Aの1-8の動作それぞれに対応する。すなわち、
図1Bのプログラムは、6個の動作文と2つのハンドの開閉命令から構成される。
【0006】
図2は、
図1Bのテキスト形式のプログラムからブロックのプログラムに置き換えた場合の一例を示す図である。
図2の1番目から8番目のブロックそれぞれは、
図1Bの1行目から8行目のプログラムそれぞれに対応する。すなわち、
図2の各ブロックは、
図1Bの各行のテキスト形式のプログラム命令(例えば、MOVE)が示す動作やプログラム命令のロジックの単位で定義されたものである。
【0007】
なお、1番目、2番目、4番目から5番目、及び8番目のプログラム命令に対応するブロックが示す「MOVE L」は、ロボットのハンドを直線補間で「POSITION1」等まで移動させるコードを示す。また、「FINE」は、位置決め完了を見て次のブロックに進むコードである。
また、
図2に示すように、「POSITION1」等の移動位置を示す設定が、設定用のブロックを接続することにより設定されている。なお、移動位置等の設定は、設定用のブロックに替えて、「100」等の移動速度や「FINE」等のようにブロック内に設定されてもよい。また、「100」等の移動速度を示す設定が、設定用のブロックを接続することにより設定されてもよい。
しかしながら、
図2に示すように、プログラム命令毎に定義されるブロックのプログラムは、ブロックの数、及びブロックに設定する項目が増えるに従い、プログラムの可視性が悪くなる。
【0008】
そこで、ブロックを用いたプログラミングにおいて、より簡単にわかりやすいロボットのプログラムを生成することが望まれている。
【課題を解決するための手段】
【0009】
本開示のロボットプログラミング装置の一態様は、ロボットの操作単位毎に定義されるブロックである操作単位ブロックを用いてプログラミングするロボットプログラミング装置であって、前記ロボットの動作を操作単位に基づいて定義し、前記操作単位に対応する操作単位ブロックの設定により前記ロボットを動作させるためのプログラミングを行うプログラミング領域と、設定された前記操作単位ブロックに関する設定を行う詳細設定領域と、を、表示部に表示する表示制御部を備える。
【0010】
本開示のロボットプログラミング方法の一態様は、表示部を有するコンピュータにより、ロボットの操作単位毎に定義されるブロックである操作単位ブロックを用いてプログラミングするロボットプログラミング方法であって、プログラミング領域と、詳細設定領域と、を、前記表示部に表示するステップと、前記プログラミング領域に、前記ロボットの動作を操作単位に基づいて定義し、前記操作単位に対応する操作単位ブロックを設定させるステップと、前記詳細設定領域に、前記プログラミング領域に設定された前記操作単位ブロックに関する設定を入力させるステップと、を備える。
【発明の効果】
【0011】
一態様によれば、ブロックを用いたプログラミングにおいて、より簡単にわかりやすいロボットのプログラムを生成することができる。
【図面の簡単な説明】
【0012】
【
図1A】ロボットに実行させる動作例を示す図である。
【
図1B】
図1Aの動作をロボットに教示する従来のテキスト形式のプログラムの一例を示す図である。
【
図2】
図1Bのテキスト形式のプログラムからブロックのプログラムに置き換えた場合の一例を示す図である。
【
図3】一実施形態に係るロボット制御システムの構成の一例を示す図である。
【
図4】
図3のロボットプログラミング装置の機能的構成例を示す機能ブロック図である。
【
図5】
図4の表示部に表示されるユーザインタフェースの一例を示す図である。
【
図6】詳細設定領域が非表示の場合のユーザインタフェースの一例を示す図である。
【
図7】
図4のロボットプログラミング装置の動作を説明するフローチャートである。
【
図8】ユーザインタフェースの一例を示す図である。
【発明を実施するための形態】
【0013】
以下、一実施形態について図面を用いて説明する。
<実施形態の構成>
図3は、本実施形態に係るロボット制御システムの構成の一例を示す図である。
図3に示すように、ロボット制御システムは、ロボットプログラミング装置100、ロボット制御装置20、及びロボット30を有する。
【0014】
ロボットプログラミング装置100と、ロボット制御装置20とは、LAN(Local Area Network)やインターネット等の所定のネットワーク40を介して相互に接続されていてもよい。また、ロボット制御装置20とロボット30は、有線又は無線を介して相互に通信可能に接続されてもよい。なお、ロボットプログラミング装置100、ロボット制御装置20及びロボット30は、かかる接続によって相互に通信を行うための図示しない通信部を備えている。
【0015】
ロボットプログラミング装置100は、例えば、パーソナルコンピュータやタブレット等の電子機器であり、ロボット制御装置20がロボット30の動作を制御するためのプログラムを生成する。ロボットプログラミング装置100は、ネットワーク40を介して、生成したプログラムをロボット制御装置20に出力する。或いは、通信可能に接続されていないオフラインの場合、ロボットプログラミング装置100は、例えば、プログラムを生成した後、生成したプログラムを記録媒体に記憶し、ロボット制御装置20は、当該記録媒体を介して生成されたプログラムを入力してもよい。また、後述するように、ロボット制御装置20がロボットプログラミング装置100を備えてもよい。
なお、ロボットプログラミング装置100が備える各機能ブロックの詳細については後述する。
【0016】
ロボット制御装置20は、ロボットプログラミング装置100により生成されたプログラムを解析して、ロボット30の動作を制御する制御装置(「ロボットコントローラ」とも呼ばれる)である。
【0017】
ロボット30は、ロボット制御装置20の制御に基づいて動作するロボットである。ロボット30は、ロボット制御装置20の制御に基づいてアームや、ハンド等のエンドエフェクタといった可動部を駆動する。ロボット30は、例えば、自動車や電子部品を生産する工場で使用される一般的な産業用ロボットにより実現することができる。
以上の構成によって、ロボットプログラミング装置100がロボット30を動作させるための動作プログラムを生成する。
【0018】
<ロボットプログラミング装置100が備える機能ブロック>
次に、ロボットプログラミング装置100が備える機能ブロックについて説明をする。
図4は、
図3のロボットプログラミング装置100の機能的構成例を示す機能ブロック図である。
図4に示すようにロボットプログラミング装置100は、入力部101、表示制御部102、表示部103、及びプログラム生成部104を含んで構成される。
【0019】
なお、ロボットプログラミング装置100は、
図4の機能ブロックの動作を実現するために、CPU(Central Processing Unit)等の図示しない演算処理装置を備える。また、ロボットプログラミング装置100は、各種の制御用プログラムを格納したROM(Read Only Memory)やHDD(Hard Disk Drive)等の図示しない補助記憶装置や、演算処理装置がプログラムを実行する上で一時的に必要とされるデータを格納するためのRAM(Random Access Memory)といった図示しない主記憶装置を備える。
【0020】
そして、ロボットプログラミング装置100において、演算処理装置が補助記憶装置からOSやアプリケーションソフトウェアを読み込み、読み込んだOSやアプリケーションソフトウェアを主記憶装置に展開させながら、これらのOSやアプリケーションソフトウェアに基づいた演算処理を行なう。この演算結果に基づいて、ロボットプログラミング装置100が各ハードウェアを制御する。これにより、
図4の機能ブロックによる処理は実現される。つまり、ロボットプログラミング装置100は、ハードウェアとソフトウェアが協働することにより実現することができる。
【0021】
入力部101は、例えば、キーボードやマウス、タッチパネルといった入力装置により実現され、後述する操作単位ブロックの入力、当該操作単位に関する設定項目の入力、及び各種の操作をユーザから受け付ける。
より具体的には、入力部101は、例えば、
図2に示したロボット30の命令(例えば、MOVE)が示す動作やプログラム命令のロジックの単位毎に定義されるブロックに替えて、「つかむ」や「はなす」等の操作単位で定義された操作単位ブロックの入力を受け付ける。そして、入力部101は、「つかむ」等の操作単位ブロックの入力を受け付けるとともに、
図1Bに示すように、ロボット30がつかむ対象のワーク10が配置されたワーク位置「POSITION2」等を示す教示(設定)の入力も受け付ける。このようにして入力されたプログラムは、プログラム生成部104に対して出力される。操作単位ブロックを用いたプログラミングについては、
図5で詳述する。
以下、特に断らない限り、操作単位ブロックを単に「操作単位」または「ブロック」ともいう。
【0022】
表示制御部102は、例えば、ユーザによる入力部101の入力操作に基づいて、プログラミングの開始指示を受けた場合、後述する操作単位ブロックの入力、当該操作単位に関する設定項目の入力、及び各種の操作をユーザから受け付けるためのユーザインタフェースを、表示部103に表示する。表示されるユーザインタフェースには、ロボット30を動作させるための操作単位ブロックの設定を行うプログラミング領域と、設定された操作単位ブロックに関する設定(教示)を行う詳細設定領域と、を有する。表示制御部102及びユーザインタフェースについて、
図5で詳述する。
【0023】
表示部103は、例えば、液晶ディスプレイ等により実現され、表示制御部102の指示に基づいて、当該ユーザインタフェースを表示する。
プログラム生成部104は、ユーザインタフェースのプログラミング領域に設定された操作単位ブロックと、詳細設定領域に設定された該ブロックの設定内容と、に基づいて、ロボット30を動作させるための動作プログラム、例えば、
図1Bに示した標準形式(テキスト形式)のプログラムを生成する。なお、プログラム生成部104の動作については後述する。
【0024】
その後、ロボットプログラミング装置100は、生成した動作プログラムをロボット制御装置20に送信する。ロボット制御装置20は、受信した動作プログラムに基づいてロボット30の動作を制御する。具体的には、ロボット制御装置20は、受信した動作プログラムに基づいてロボット30の動作を制御するための信号を生成し、生成した信号をロボット30に出力する。ロボット30は、この信号に応じてアームや、ハンド等のエンドエフェクタといった可動部を駆動する。これにより、ロボット30は、動作プログラムに沿って、所定の作業を所定の順序で行うことができる。
以上説明した各機能ブロックが協働することで、操作単位ブロックの設定及び当該操作単位に関する設定項目の設定により動作プログラムを生成し、ロボット制御装置20によるロボット30の動作を制御することが可能となる。
【0025】
<ユーザインタフェースについて>
次に、ユーザインタフェース及びユーザインタフェースを介した入力操作について説明する。
図5は、
図4の表示部103に表示されるユーザインタフェース300の一例を示す図である。
図5に示すように、ユーザインタフェース300は、一例としてプログラミング領域310、詳細設定領域320、及び設定表示切替領域330を有する。
【0026】
プログラミング領域310は、ライブラリ領域311と、ブロック教示領域312とを有するようにしてもよい。
ライブラリ領域311は、ユーザによる入力部101の入力操作に応じて、「変数」、「演算式」、「制御」、及び「分岐/繰り返し」等のライブラリ毎に、プログラミングに必要なブロックを表示する。例えば、「変数」が選択された場合、ライブラリ領域311は、ブロックの動作を設定する変数を入力するブロックの一覧を表示する。「演算式」が選択された場合、ライブラリ領域311は、四則演算等の演算処理を実行するブロックの一覧を表示する。「制御」が選択された場合、ライブラリ領域311は、ロボット30の動作が「つかむ」や「はなす」等の操作単位ブロックの一覧を表示する。「分岐/繰り返し」が選択された場合、ライブラリ領域311は、IF文やDO文等のブロックの一覧を表示する。
なお、ロボットプログラミング装置100は、「変数」や「制御」等のライブラリ毎にひな型のブロックのメタデータを、上述したROMやHDD等の図示しない補助記憶装置に予め記憶する。
【0027】
ブロック教示領域312は、ライブラリ領域311に表示されるブロックを用いて、プログラミングの入力を受け付ける領域である。また、ブロック教示領域312には、例えば、ブロック教示領域312に入力されたブロックを縮小表示する縮小ボタン313と、拡大表示する拡大ボタン314と、ブロック教示領域312に入力されたブロックを削除するごみ箱315が表示される。なお、これ以外のアイコンが設けられてもよい。また、
図5では、ブロック教示領域312に、
図1Bのプログラムに対応する操作単位ブロックが入力されている。
より具体的には、ユーザによる入力部101の入力操作により、例えば、「制御」のライブラリが選択され、「つかむ」操作に対応する操作単位ブロック400がドラッグされ、ブロック教示領域312にドロップされることによりブロック教示領域312に当該ブロックが設定される。そして、ユーザによる入力部101の入力操作により、「変数」のライブラリが選択され、位置に係るブロック410がドラッグされ、「つかむ」操作に対応する操作単位ブロック400に接続するようにブロック教示領域312にドロップされることにより「つかむ」操作のブロック400の設定がされる。
なお、「つかむ」操作のブロック400は、
図1Bの1行目から4行目のプログラム(
図2の1番目から4番目のブロック)を一塊にした操作単位のブロックである。また、ブロック410に設定された位置「1」は、例えば、ロボット30がつかむワーク10が配置されたワーク位置「POSITION2」を示す。
【0028】
次に、ユーザによる入力部101の入力操作により、「制御」のライブラリが選択され、「はなす」操作に対応する操作単位ブロック420がドラッグされ、ブロック教示領域312にドロップされることにより当該ブロックが設定される。そして、ユーザによる入力部101の入力操作により、「変数」のライブラリが選択され、位置に係るブロック430がドラッグされ、「はなす」操作のブロック420に接続するようにブロック教示領域312にドロップされることにより「はなす」操作のブロック420の設定がされる。
なお、「はなす」操作のブロック420は、
図1Bの5行目から8行目のプログラム(
図2の5番目から8番目のブロック)を一塊にした操作単位のブロックである。また、ブロック440に設定された位置「2」は、例えば、ロボット30がつかんだワーク10をはなすワーク設置位置「POSITION5」を示す。
【0029】
詳細設定領域320は、ブロック教示領域312に入力された操作単位ブロック400及びブロック420のうち、ユーザによる入力部101の入力操作に応じて選択された操作単位ブロックに関する設定をし、設定された設定内容を表示する領域である。
図5に示すように、例えば、「つかむ」操作に対応するブロック400が選択された場合、詳細設定領域320には、ハンド番号「1」、移動速度「1000mm/sec」、及びアプローチ速度「500mm/sec」の設定を行うためのインタフェースが表示される。
なお、詳細設定領域320での設定には、移動位置やアプローチ距離等が含まれてもよい。すなわち、ブロック410の位置「1」、及びブロック420の位置「2」の設定は、詳細設定領域320内に設定されてもよい。ただし、位置「1」等のように、操作単位のブロック400及び420と一緒に表示した方が、そのプログラムの動作を把握しやすい場合には、
図5に示すように、ブロック410及び430等を用いて設定されてもよい。
【0030】
設定表示切替領域330は、ユーザによる入力部101の入力操作に応じて詳細設定領域320を表示又は非表示に切り替える。
より具体的には、表示制御部102は、ユーザによる入力部101の入力操作により、設定表示切替領域330が上方向にスワイプ等される場合、詳細設定領域320を非表示にし、設定表示切替領域330が下方向にスワイプ等される場合、詳細設定領域320を表示する。これにより、ブロック教示領域312を広く表示することができる。
【0031】
図6は、詳細設定領域320が非表示の場合のユーザインタフェース300の一例を示す図である。
【0032】
図6に示すように、表示制御部102は、ユーザによる入力部101の入力操作により詳細設定領域320を非表示にすることで、プログラミング領域310と設定表示切替領域330のユーザインタフェース300を表示する。そして、表示制御部102は、例えば、詳細設定領域320が非表示の状態において、ユーザによる入力部101の入力操作により「つかむ」操作のブロック400が選択された場合、「つかむ」操作のブロック400において詳細設定があることを示すアイコン500を設定表示切替領域330に表示する。なお、選択されたブロックが詳細設定を必要としないブロックの場合、表示制御部102は、アイコン500を表示しない。
【0033】
これにより、ユーザは、選択した操作単位ブロック400に詳細設定があることを知ることができる。そして、ユーザによる入力部101の入力操作により、設定表示切替領域330が下方向にスワイプ等されることで、表示制御部102は、詳細設定領域320を表示する。これにより、ユーザは、操作単位ブロック400の設定内容を確認したり設定したりすることができる。
なお、表示制御部102は、選択された操作単位ブロックに詳細設定がある場合、アイコン500を設定表示切替領域330に表示させたが、これに限定されず、設定表示切替領域330の色を変化させてもよく、点滅動作させてもよい。
【0034】
このように、プログラミング領域310で「つかむ」や「はなす」等の操作単位で定義されたブロックでプログラミングし、詳細設定領域320で各操作単位ブロックの設定を行うことにより、より簡単にわかりやすいロボットのプログラムを生成することができ、プログラムの可視性も向上させることができる。
【0035】
<プログラム生成部104の生成処理>
次に、プログラム生成部104による動作プログラムの生成処理について説明する。
上述したように、プログラム生成部104は、ユーザインタフェース300のプログラミング領域310に入力された操作単位ブロックと、詳細設定領域320に設定された各操作単位ブロックの設定内容と、に基づいて、ロボット30の動作プログラムを生成する。
【0036】
より具体的には、プログラム生成部104は、標準形式(例えばテキスト形式)の動作プログラムを生成するにあたり、例えば、
図5に示した「つかむ」操作のブロック400と、詳細設定領域320に設定された当該ブロック400の設定内容に基づいて、ロボット30の「つかむ」操作に対応する操作単位ブロックに係る動作内容を解析する。すなわち、プログラム生成部104は、ブロック410に設定された位置「1」(
図1Bのワーク位置「POSITION2」)のワーク10を、ロボット30のハンド番号「1」のハンドでつかむために、詳細設定領域320に設定された移動速度やアプローチ速度等に基づいて、
図1Bのアプローチ位置「POSITION1」及び退避位置「POSITION3」を算出する。
【0037】
次に、プログラム生成部104は、「はなす」操作のブロック420と、詳細設定領域320に設定された当該ブロック420の設定内容に基づいて、ロボット30の「はなす」操作に対応する操作単位ブロックに係る動作内容を解析する。すなわち、プログラム生成部104は、ブロック430に設定された位置「2」(
図1Bのワーク設置位置「POSITION5」)で、ロボット30のハンド番号「1」のハンドを開いてワーク10をはなすために、詳細設定領域320に設定された移動速度やアプローチ速度等に基づいて、
図1Bのアプローチ位置「POSITION4」及び退避位置「POSITION6」を算出する。
【0038】
そして、プログラム生成部104は、解析結果に基づいて、操作単位ブロックを設定することで作成されたプログラムから、
図1Bに示すようなロボット30を動作させるための標準形式(テキスト形式)の動作プログラムを生成する。
このように、プログラム生成部104は、標準形式(テキスト形式)の動作プログラムを生成するにあたり、プログラミング領域310の操作単位ブロック、及び詳細設定領域320の当該ブロックの設定内容に基づいて、操作単位ブロック毎にロボット30を動作させるのに必要となるアプローチ位置等を算出する。これにより、プログラミングが不慣れなユーザでも、容易にロボットのプログラムを作成することができる。
【0039】
<ロボットプログラミング装置100の動作処理>
図7は、
図1のロボットプログラミング装置100の動作を説明するフローチャートである。
ステップS1において、表示制御部102は、ユーザによる入力部101の入力操作に基づいて、プログラミングの開始指示を受けると、ユーザインタフェース300を表示部103に表示する。
【0040】
ステップS2において、入力部101は、ユーザによる入力操作に基づいて、操作単位ブロックをプログラミング領域310に設定する。
【0041】
ステップS3において、入力部101は、ユーザによる入力操作に基づいて、ステップS2で入力された操作単位ブロックに関する設定項目を、詳細設定領域320に設定する。
【0042】
ステップS4において、プログラム生成部104は、プログラミング領域310に設定された操作単位ブロック、及び詳細設定領域320に設定された当該ブロックに関する設定内容と、に基づいて、ロボット30の動作内容を解析し、解析結果に基づいてロボット30の標準形式(テキスト形式)の動作プログラムを生成する。
【0043】
以上により、本実施形態に係るロボットプログラミング装置100は、プログラミング領域310で「つかむ」や「はなす」等の操作に対応する操作単位ブロックを用いたプログラミングを行い、詳細設定領域320で操作単位ブッロクの設定を行う。これにより、ロボットプログラミング装置100は、ロボット30の操作に対応した操作単位ブロックを用いたプログラミングにおいて、より簡単にわかりやすいロボットの動作プログラムを生成することができる。
また、操作単位ブロックを用いることにより、当該ロボット30の動作プログラムの可視性を向上させることができ、プログラムのメンテナンスを容易に行うことができる。
【0044】
また、ロボットプログラミング装置100は、操作単位ブロックに関する詳細設定を、プログラミング領域310とは異なる詳細設定領域320で行うとともに、設定内容を表示することにより、プログラムの可視性をより向上させることができる。
【0045】
また、ロボットプログラミング装置100は、ロボット30の動作プログラムを生成するにあたり、プログラミング領域310に設定された操作単位ブロック、及び詳細設定領域320に設定された当該ブロックの設定内容に基づいて、操作単位ブロック毎にロボット30を動作させるのに必要となるアプローチ位置等を算出する。これにより、プログラミングが不慣れなユーザでも、容易にロボット30の動作プログラムを作成することができる。
【0046】
以上、一実施形態について説明したが、ロボットプログラミング装置100は、上述の実施形態に限定されるものではなく、目的を達成できる範囲での変形、改良等が含まれる。
【0047】
例えば、上述の実施形態では、ロボットプログラミング装置100が、操作単位ブロックにより設定されたプログラムから、例えば標準形式(例えばテキスト形式)の動作プログラムを生成し、ロボット制御装置20に送信したが、これに限定されない。
ロボット制御装置20は、ロボットプログラミング装置100の全て又は一部の機能を有してもよい。例えば、ロボットプログラミング装置100が、操作単位ブロックにより設定されたプログラムをロボット制御装置20に送信し、ロボット制御装置20が、受信したプログラムから、例えば、標準形式(例えばテキスト形式)の動作プログラムを生成してもよい。また、ロボット制御装置20が、操作単位ブロックにより設定されたプログラムを直接解析してもよい。
【0048】
また例えば、上述の実施形態にでは、ユーザインタフェース300は、プログラミング領域310、詳細設定領域320、及び設定表示切替領域330を有したがこれに限定されない。
図8は、ユーザインタフェース300の一例を示す図である。
図8に示すように、表示制御部102は、例えば、ユーザインタフェース300としてプログラミング領域310のみを表示部103に表示する。そして、表示制御部102は、ユーザによる入力部101の入力操作により「つかむ」操作のブロック400が選択され、かつ詳細設定がある場合、「つかむ」操作のブロック400に設定された設定内容を、ダイアログボックス600で表示してもよい。これにより、プログラミング領域310を広く表示することができる。
【0049】
また例えば、上述の実施形態では、ロボットプログラミング装置100が、「つかむ」操作のブロック400や「はなす」操作のブロック420が入力された場合、位置「1」のブロック410や位置「2」のブロック430の設定の入力を受け付けたが、これに限定されない。例えば、
図1Aの場合において、ロボットプログラミング装置100は、位置「1」や位置「2」に替えて、ワーク10のワーク位置「POSITION2」及びワーク設置位置「POSITION5」に対する「高さ」等を設定してもよい。
【0050】
なお、一実施形態に係るロボットプログラミング装置100に含まれる各機能は、ハードウェア、ソフトウェア又はこれらの組み合わせによりそれぞれ実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【0051】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(Non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAMを含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は、無線通信路を介して、プログラムをコンピュータに供給できる。
【0052】
なお、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的或いは個別に実行される処理をも含むものである。
【0053】
以上を換言すると、本開示のロボットプログラミング装置、及びロボットプログラミング方法は、次のような構成を有する各種各様の実施形態を取ることができる。
【0054】
すなわち、本開示のロボットプログラミング装置100は、ロボット30の操作単位毎に定義されるブロックである操作単位ブロックを用いてプログラミングするロボットプログラミング装置であって、ロボット30の動作を操作単位に基づいて定義し、操作単位に対応する操作単位ブロックの設定によりロボット30を動作させるためのプログラミングを行うプログラミング領域310と、設定された操作単位ブロックに関する設定を行う詳細設定領域320と、を、表示部103に表示する表示制御部102を備える。
このロボットプログラミング装置100によれば、操作単位毎に定義されるブロックを用いたプログラミングをプログラミング領域310で行い、操作単位ブッロクに関する設定を詳細設定領域320で行うことにより、より簡単にわかりやすいロボットのプログラムを生成することができる。
【0055】
また、プログラミング領域310に設定された操作単位ブロックと、詳細設定領域320に設定された操作単位ブロックの設定内容と、に基づいて、ロボット30を動作させる標準形式(例えばテキスト形式)の動作プログラムを生成するプログラム生成部104を、さらに備えるようにしてもよい。
そうすることで、ロボットプログラミング装置100により生成された操作単位ブロックに基づくプログラムを、標準形式(例えばテキスト形式)の動作プログラムに変換することで任意のロボット制御装置で動作させることができる。
このロボットプログラミング装置100によれば、プログラミングが不慣れなユーザでも、容易にロボットの動作プログラムを作成することができる。
【0056】
また、表示制御部102は、いずれかの操作単位ブロックに関する設定内容を表示する指示を受け付け、指示により選択された操作単位ブロックに関する設定内容を詳細設定領域320に表示してもよい。
このロボットプログラミング装置100によれば、操作単位ブロックによるプログラムの可視性を向上させることができる。
【0057】
また、本開示のロボットプログラミング方法は、表示部103を有するコンピュータにより、ロボット30の操作単位毎に定義されるブロックである操作単位ブロックを用いてプログラミングするロボットプログラミング方法であって、プログラミング領域310と、詳細設定領域320と、を、表示部103に表示するステップと、プログラミング領域310に、ロボット30の動作を操作単位に基づいて定義し、操作単位に対応する操作単位ブロックを設定させるステップと、詳細設定領域320に、プログラミング領域310に設定された操作単位ブロックに関する設定を入力させるステップと、を備える。
このロボットプログラミング方法によれば、操作単位毎に定義されるブロックを用いたプログラミングをプログラミング領域310で行い、操作単位ブッロクに関する設定を詳細設定領域320で行うことにより、より簡単にわかりやすいロボットのプログラムを生成することができる。
【符号の説明】
【0058】
20 ロボット制御装置
30 ロボット
100 ロボットプログラミング装置
101 入力部
102 表示制御部
103 表示部
104 プログラム生成部