(58)【調査した分野】(Int.Cl.,DB名)
前記作業プログラム生成部は、前記作業工程ごとに該作業工程の内容を示す工程作業プログラムを生成し、前記生成された各工程作業プログラムに基づいて前記作業プログラムを生成する、ことを特徴とする請求項1又は2に記載のロボット制御装置。
ロボットが担う作業に含まれる作業工程に応じた設定画面を表示部に表示させるとともに、前記ロボットが前記作業を行う際の作業条件を管理者に入力させるための設定画面を前記表示部に表示させる表示制御部と、
管理者により入力された前記作業条件が予め設定された閾値を満たすか否かを判定する判定部と、
前記設定画面において管理者により入力された設定情報及び前記作業条件に基づいて、前記作業の内容を示す作業プログラムを生成する作業プログラム生成部と、
を含み、
前記表示制御部は、前記入力された作業条件が前記閾値を満たさない場合、前記作業条件の再入力を促すメッセージを前記表示部に表示させる、
ことを特徴とするロボット制御装置。
ロボットが担う作業の内容を示す作業プログラムを生成するためのテンプレートを該作業の情報に関連付けて記憶する記憶部から、管理者により選択された作業に対応する前記テンプレートを取得し、
前記作業に含まれる作業工程に応じた設定画面を順に表示部に表示させとともに、前記ロボットが前記作業を行う際の作業条件を管理者に入力させるための設定画面を前記表示部に表示させ、
管理者により入力された前記作業条件が予め設定された閾値を満たすか否かを判定し、
前記入力された作業条件が前記閾値を満たさない場合、前記作業条件の再入力を促すメッセージを前記表示部に表示させ、
前記取得された前記テンプレートと、前記設定画面において管理者により入力された設定情報及び前記作業条件とに基づいて、該作業の内容を示す前記作業プログラムを生成する、
ことを特徴とするロボット制御方法。
ロボットが担う作業に含まれる作業工程に応じた設定画面を表示部に表示させとともに、前記ロボットが前記作業を行う際の作業条件を管理者に入力させるための設定画面を前記表示部に表示させ、
管理者により入力された前記作業条件が予め設定された閾値を満たすか否かを判定し、
前記入力された作業条件が前記閾値を満たさない場合、前記作業条件の再入力を促すメッセージを前記表示部に表示させ、
前記設定画面において管理者により入力された設定情報及び前記作業条件に基づいて、前記作業の内容を示す作業プログラムを生成する、
ことを特徴とするロボット制御方法。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について図面に基づき詳細に説明する。
【0010】
図1は、本発明の実施形態に係るロボット制御装置の構成図である。ロボット制御装置1は、1台又は複数台のロボット(例えば、産業用多関節ロボット)の動作を支援・管理する。ロボット制御装置1とロボットとは、ネットワークを介して通信することができる。
図1では、1台のロボット制御装置1と3台のロボット30A,30B,30Cとが、ネットワークを介して通信可能に接続されている。なお、1台のロボット制御装置1に4台以上のロボット30が接続されていてもよい。また、1台のロボット制御装置1に1台のロボット30が接続された1つのロボットシステムが複数設けられていてもよい。
【0011】
本実施形態に係るロボット制御装置1は、ロボット30の導入前やロボット30の配置換えの前、すなわちロボット制御装置1とロボット30とがオフライン環境にある初期設定段階において、ロボット30の動作を制御するための動作制御プログラムを生成するものである。動作制御プログラムは、ロボット30が担う作業の内容を示す作業プログラムに、ロボット30の設置位置及び姿勢の情報を含む動作経路(動作パス)情報が関連付けられたものである。ロボット30は、動作制御プログラムに基づき所期の動作を実行する。ロボット制御装置1は、動作制御プログラムを生成するための機能として、ロボット30が担う作業に係る作業プログラムを生成するためのタスクプランニングを実行するタスクプランナとしての機能と、ロボット30の動作経路を生成するためのパスプランニングを実行するパスプランナとしての機能とを有している。
【0012】
図1に示すように、ロボット制御装置1は、ハードディスクや半導体メモリなどの記憶部102と、CPUを中心に構成された制御部104と、ロボット30A,30B,30Cと通信するためのネットワークアダプタなどの通信部106と、タスクプランニング及びパスプランニングを実行する際に管理者に対して各種設定画面(操作画面)を表示する表示部107と、を有している。なお、タスクプランニング及びパスプランニングは、ロボット制御装置1にロボット30A,30B,30Cが接続される前の初期設定段階において実行されるものであるため、
図1では便宜上、ロボット制御装置1に接続されるべきロボット30A,30B,30Cを、仮想的に示している。以下では、タスクプランニング及びパスプランニングそれぞれを実行するロボット制御装置1の構成について説明する。また以下では、主に、1台のロボット制御装置1と、これに接続されるべき1台のロボット30Aとを例に挙げる。
【0013】
[タスクプランニング]
図2は、タスクプランニングを実行するための要素を含むロボット制御装置1の構成図である。同図に示すように、制御部104は、操作受付部11、作業取得部12、作業工程取得部13、部品情報取得部14、工具情報取得部15、パラメータ取得部16、ロボット情報取得部17、作業プログラム生成部18、及び表示制御部19を含んでいる。これらは、CPUを中心として構成された制御部104においてプログラムが実行されることにより実現される機能である。記憶部102には、記憶領域として、作業データ領域5a、テンプレートデータ領域5b、CADデータ領域5c、スキルデータ領域5d、ロボットデータ領域5e、作業プログラム領域5fが設けられている。
【0014】
ロボット制御装置1の各要素の機能について説明する。
【0015】
表示制御部19は、管理者(オペレータ)の指示(操作)を受け付けるための各種設定画面を表示部107に表示させ、操作受付部11は、管理者の指示を受け付ける。管理者は、タスクプランニングの設定画面において、例えばロボット制御装置1に接続されたキーボードやマウス等の操作部(不図示)を使用して指示を行う。
【0016】
ロボット制御装置1は、管理者の指示内容に基づいて、ロボット30Aが担う作業の内容を示す作業プログラムを生成する。ここで、作業(ジョブ)は、複数の作業工程(サブジョブ)を含む。例えば、作業(ジョブ)としての「モータケーシング部品の組み付け」には、押し当て作業(工程1:サブジョブ1)、ピック作業(工程2:サブジョブ2)、及び挿入作業(工程3:サブジョブ3)の3つの作業工程(サブジョブ)が含まれる。ロボット30Aは、上記一連の作業工程を含む作業に対応する作業プログラムに基づき動作を行う。
【0017】
作業取得部12は、管理者が所望の作業を選択すると、その選択結果を取得する。選択対象の作業は作業データ領域5aに予め登録されており、管理者は、設定画面(設定画面0x)において複数の作業から、作業プログラムの作成をするべき作業を選択する。作業データ領域5aには、
図3に示すように、例えば作業A、作業B、作業C等の作業名と、各作業に含まれる作業工程とが関連付けて記録された作業テーブルが記憶されている。例えば作業Aには、工程1(サブジョブ1)、工程2(サブジョブ2)、及び工程3(サブジョブ3)の3つの作業工程(サブジョブ)が関連付けられている。また作業取得部12は、管理者により選択された作業に関連付けられた作業工程の情報も取得する。
【0018】
作業工程取得部13は、管理者が選択した作業に含まれる作業工程のうち管理者が設定画面(設定画面1x)において所望の作業工程を選択すると、その選択結果を取得するとともに、テンプレートデータ領域5bから、選択された作業工程に対応するサブジョブプログラム(工程作業プログラム)のテンプレートを取得する。テンプレートには、プログラムのスタイルや定型句などが保存されている。テンプレートデータ領域5bには、作業に含まれる作業工程に対応するサブジョブプログラムのテンプレートが記憶されている。作業工程が複数存在する場合は、作業工程毎にサブジョブプログラムのテンプレートが関連付けられている。例えば、
図4に示すように、作業Aに対して、工程1(サブジョブ1)、工程2(サブジョブ2)、及び工程3(サブジョブ3)の3つの作業工程(サブジョブ)のプログラムのテンプレートが記憶されている。
【0019】
部品情報取得部14は、管理者が選択した作業に対応する部品(作業対象物)の情報や、管理者が設定画面(設定画面2x)において選択した部品の情報を、CADデータ領域5cから取得する。CADデータ領域5cには、
図5に示すように、作業、作業工程、及び部品情報が関連付けて記録されたCADデータテーブルが記憶されている。部品情報には、部品名、部品の識別情報(部品ID)、部品の3次元モデルデータが含まれる。また部品情報取得部14は、管理者が設定画面(設定画面2x)において選択した作業台の情報を、CADデータ領域5cから取得する。各部品情報には、座標系(部品座標系)が関連付けられ、作業台の情報には、座標系(作業座標系)が関連付けられている。
【0020】
工具情報取得部15は、管理者が選択した作業に対応する工具の情報や、管理者が設定画面(設定画面2x)において選択した工具の情報を、CADデータ領域5cから取得する。CADデータ領域5cのCADデータテーブルにはさらに、
図5に示すように、工具情報が関連付けて記録されている。工具情報には、工具名、工具の識別情報(工具ID)、工具の3次元モデルデータが含まれる。また、各工具情報には、座標系(工具座標系)が関連付けられている。
【0021】
パラメータ取得部16は、管理者が設定画面(設定画面3x)において設定した作業パラメータ(作業条件)を取得する。また、パラメータ取得部16は、スキルデータ領域5dを参照して、管理者が設定した作業パラメータが、作業工程に適切な値(予め設定された規定パラメータ(閾値))を満たすか否かを判定する。すなわち、パラメータ取得部16は判定部としての機能も有する。スキルデータ領域5dには、
図6に示すように、作業、作業工程、及び規定パラメータが関連付けて記録された作業パラメータテーブルが記憶されている。作業パラメータは、例えば部品間の距離、位置、押し当て力、把持力などである。
【0022】
ロボット情報取得部17は、管理者が設定画面(設定画面4x)において選択したロボットの情報を、ロボットデータ領域5eから取得する。ロボットデータ領域5eには、
図7に示すように、作業及びロボット情報が関連付けて記録されたロボット情報テーブルが記憶されている。ロボット情報には、ロボット名、ロボットの識別情報(ロボットID)、ロボットの外形状を示す3次元モデルデータが含まれる。また各ロボット情報には、座標系(ロボット座標系)が関連付けられている。
【0023】
作業プログラム生成部18は、作業工程取得部13により取得されたサブジョブプログラムのテンプレートに、部品情報取得部14により取得された部品情報、工具情報取得部15により取得された工具情報、パラメータ取得部16により取得された作業パラメータ、及び、ロボット情報取得部17により取得されたロボット情報を組み込み、サブジョブプログラムを生成する。また、作業プログラム生成部18は、生成したサブジョブプログラムに基づき、作業に対応する作業プログラムを生成する。作業プログラム生成部18は、生成した作業プログラムをサブジョブプログラムに関連付けて作業プログラム領域5fに記憶する。
【0024】
また、ロボット制御装置1では、表示制御部19が、上記各要素の処理に応じた設定画面(上記設定画面0x〜4xを含む)を表示部107に表示させる。各設定画面の具体例は後述する。タスクプランニングにおける設定画面には、例えば
図8に示すように、部品欄、工具欄、半製品欄、環境モデル欄、作業工程欄、作業シーケンス欄が含まれる。
【0025】
表示制御部19は、各設定画面を表示させるための要素として、
図9に示すように、設定画面表示部19a、部品欄設定部19b、工具欄設定部19c、環境モデル欄設定部19d、パラメータ設定部19e、半製品欄設定部19f、作業工程欄設定部19g、作業シーケンス欄設定部19hを含んでいる。また、記憶部102には、記憶領域としてさらに、設定画面データ領域5g、部品データ領域5hが設けられている。なお、
図9では、
図2に示した制御部104に設けられる各要素は省略している。
【0026】
管理者が選択した作業が作業取得部12により取得されると、設定画面表示部19aは、設定画面データ領域5gから、管理者が選択した作業に対応する設定画面を取得し、部品欄設定部19bは、部品情報取得部14により取得された部品の3次元モデルデータをCADデータ領域5c(
図5参照)から取得して設定画面の部品欄に設定(登録)し、工具欄設定部19cは、工具情報取得部15により取得された工具の3次元モデルデータをCADデータ領域5cから取得して設定画面の工具欄に設定(登録)し、環境モデル欄設定部19dは、部品情報取得部14により取得された部品及び作業取得部12により取得された作業により製造される製品の3次元モデルデータをCADデータ領域5cから取得して設定画面の環境モデル欄に設定(登録)する。各欄に設定された3次元モデルデータは設定画面に画像として表示される。また部品欄設定部19bは、部品欄に設定した各部品の3次元モデルデータを部品データ領域5hに記憶する。
【0027】
半製品欄設定部19fは、部品データ領域5hを参照して、各作業工程が実行された段階(途中の製造状態(半製品))の3次元モデルデータを取得し、設定画面の半製品欄に設定(登録)する。設定画面の半製品欄には、半製品の画像が表示される。
【0028】
作業工程欄設定部19gは、設定画面上で管理者により選択された選択対象物(部品、工具等の3次元モデルデータ)を、設定画面の作業工程欄に設定(登録)する。作業工程欄に設定する方法は、例えば部品欄に設定(表示)された部品画像を管理者がマウスポインタでドラッグし、作業工程欄にドロップする方法であってもよいし、作業工程欄に複数の部品名を一覧表示させて、管理者がマウスポインタで所望の部品名をクリックする方法であってもよい。設定画面の作業工程欄には、設定された部品、工具等の画像が表示される。
【0029】
作業シーケンス欄設定部19hは、各作業工程に対応する工程名を作業シーケンス欄に設定(登録)する。各工程名には、サブジョブプログラムが関連付けられており、工程名を選択(クリック)すると、対応するサブジョブプログラムの内容が設定画面に表示される。
【0030】
ここで、ロボット制御装置1における作業プログラムの生成方法(タスクプランニング)について、具体例を挙げて説明する。ここでは、「モータケーシング部品の組み付け」の作業(以下、作業Aと称す。)に対応する作業プログラムの生成方法を例に挙げる。また、作業Aには、押し当て作業(工程1)、ピック作業(工程2)、及び挿入作業(工程3)の3つの作業工程が含まれるものとする。
【0031】
図10及び
図11は、ロボット制御装置1の動作を示す図である。同図では、管理者の操作フローと、管理者の操作に基づくロボット制御装置1の動作フローと、表示部107の表示フローとを並行して示している。なお、表示部107の表示処理は、ロボット制御装置1における表示制御部19の表示命令に従って行われる。
【0032】
まず、タスクプランニングの処理が開始されると、表示部107に初期設定画面が表示される(S101)。初期設定画面には、例えば
図12に示すように、管理者に作業を選択させるための画面(設定画面0x)が表示される。管理者は、
図12の初期設定画面において、作業として「作業A」を選択して決定ボタンを押下する(S102)。作業取得部12が管理者による選択結果(作業A)を取得すると、部品情報取得部14は、CADデータ領域5c(
図5参照)から作業Aに対応する部品PF1,PF2,PF3の3次元モデルデータを取得し、工具情報取得部15は、CADデータ領域5cから作業Aに対応する工具T1の3次元モデルデータを取得する(S103)。
【0033】
次に、設定画面表示部19aは、設定画面データ領域5gから作業Aに対応する設定画面(
図8参照)を取得し、部品欄設定部19bは、上記取得された部品PF1,PF2,PF3の3次元モデルデータを設定画面の部品欄に設定し、工具欄設定部19cは、上記取得された工具T1の3次元モデルデータを設定画面の工具欄に設定し、環境モデル欄設定部19dは、部品PF1,PF2,PF3、作業台WS1、及び完成品の3次元モデルデータを設定画面の環境モデル欄に設定する。また、作業工程欄設定部19gは、作業Aに含まれる工程1〜工程3の情報を設定画面の作業工程欄に設定し、作業シーケンス欄設定部19hは、設定画面の作業シーケンス欄に工程0を設定する。これにより表示部107には、各設定部により各表示欄が設定された設定画面1xが表示される(S104)。
図13には、設定画面1xの一例を示している。
【0034】
次に、設定画面1xにおいて、管理者が作業Aに含まれる「工程1」を選択する(S105)。例えば、管理者はマウスを使用して設定画面上の「工程1」をクリックする。管理者により「工程1」が選択されると、作業工程取得部13は、テンプレートデータ領域5b(
図4参照)から、「工程1」に対応するサブジョブ1プログラムのテンプレートを取得し(S106)、作業工程欄設定部19gは、部品、工具及び作業台を設定するための設定欄を作業工程欄に表示させる(S107)。
図14には、上記設定欄を含む設定画面2xの一例を示している。
【0035】
次に、設定画面2xにおいて、管理者が部品PF1、工具T1及び作業台WS1を選択する(S108)。例えば、管理者は、マウスを使用して設定画面2xの部品欄に設定されている部品PF1をドラッグして作業工程欄にドロップし、工具欄に設定されている工具T1をドラッグして作業工程欄にドロップし、環境モデル欄に設定されている作業台WS1をドラッグして作業工程欄にドロップする。これにより、作業工程欄設定部19gは、部品PF1、作業台WS1及び工具T1を作業工程欄に設定し、設定画面2xが
図15に示すように更新される(S109)。また部品情報取得部14は、管理者により選択された部品PF1及び作業台WS1の情報をCADデータ領域5cから取得し、工具情報取得部15は、管理者により選択された工具T1の情報をCADデータ領域5cから取得する(S110)。なお、部品PF1、作業台WS1及び工具T1の情報には、各座標系が関連付けられている。
【0036】
次に、作業工程欄設定部19gは、作業パラメータを設定するための設定欄を作業工程欄に表示させる(S111)。
図16には、上記設定欄を含む設定画面3xの一例を示している。
【0037】
次に、設定画面3xにおいて、管理者が作業パラメータを設定(入力)する(S112)。例えば、管理者は、作業台WS1と部品PF1との距離(接近高さ)D(mm)=30と、押し当て反力F(N)=5を設定する。これにより設定画面3xは、
図17に示すように更新される(S113)。
【0038】
管理者により作業パラメータが設定されると、パラメータ取得部16は、作業パラメータが予め設定された規定パラメータ(閾値)を満たすか否かを判定する(S114)。作業パラメータが閾値を満たさない場合、表示制御部19は、作業パラメータの再入力を促すメッセージを表示部107に表示させる(S115)。
【0039】
作業パラメータが閾値を満たす場合、作業工程欄設定部19gは、ロボットを選択するための設定欄を作業工程欄に表示させる(S116)。
図18には、上記設定欄を含む設定画面4xの一例を示している。
【0040】
次に、設定画面4xにおいて、管理者がロボット30Aを選択する(S117)。ロボット情報取得部17は、管理者により選択されたロボット30Aの情報を、ロボットデータ領域5e(
図7参照)から取得する(S118)。ロボット30Aの情報には、ロボット座標系が関連付けられている。
【0041】
次に、管理者が、設定画面4xに含まれる設定完了ボタンを押下すると(S119)、作業プログラム生成部18は、サブジョブ1プログラムのテンプレートに、部品PF1、工具T1、作業台WS1、作業パラメータ(D=30、F=5)、ロボット30Aの各情報を組み込み、サブジョブ1プログラム(
図22参照)を生成する(S120)。また、半製品欄設定部19fは、作業台WS1に部品PF1を押し当てた状態(半製品:工程1の完成品)を設定画面の半製品欄に設定し、作業シーケンス欄設定部19hは、サブジョブ1プログラムが関連付けられた「工程1」を作業シーケンス欄に設定する(S121)。
図19には、上記設定された設定画面5xの一例を示している。作業シーケンス欄の「工程1」をクリックすると、サブジョブ1プログラム(
図22参照)の内容が表示される。
【0042】
次に、管理者がタスクプランニングの続行指示を行う(例えば設定画面5xの「次工程へ」をクリックする)と(S122)、表示部107には、再び、各設定部により各欄が設定された設定画面1xが表示される(S123)。管理者は、設定画面1x(
図13参照)において作業Aに含まれる「工程2」を選択する(S123)。以降、上述したS106〜S120と同様の処理が行われ、「工程2」に対応するサブジョブ2プログラム(
図22参照)が生成される。
図20には、工程2における設定画面5xの一例を示している。さらに、作業Aに含まれる「工程3」に対しても同様の処理が行われ、これにより「工程3」に対応するサブジョブ3プログラム(
図22参照)が生成される。
図21には、工程3における設定画面5xの一例を示している。
【0043】
最後に、管理者がタスクプランニングの完了指示を行う(例えば設定画面5xの「完了」をクリックする)と(S125)、作業プログラム生成部18は、作業Aに含まれる工程1〜3に対応するサブジョブ1プログラム、サブジョブ2プログラム及びサブジョブ3プログラムに基づき、作業Aに対応する作業プログラムを生成する(S126)。
図22には、サブジョブ1プログラム、サブジョブ2プログラム及びサブジョブ3プログラムと、これらサブジョブプログラムにより生成される、作業Aに対応する作業プログラムの例を示している。作業プログラム生成部18は、作業Aに対応する作業プログラムを、サブジョブ1プログラム、サブジョブ2プログラム及びサブジョブ3プログラムに関連付けて、作業プログラム領域5fに記憶する。
【0044】
本実施形態に係るロボット制御装置1のタスクプランニングによれば、ロボットが担う作業の内容を示す作業プログラムを容易に作成することができるとともに、管理者は作業プログラムの生成過程(状況)を把握(視認)することができる。また、上記タスクプランニングにより生成された作業プログラムは、作業内容を記述したものでありロボット及び作業台の位置情報を含まないため、例えばロボットの種類や位置が変更された場合にも利用することができる。
【0045】
[パスプランニング]
上記のタスクプランニングの処理が終了すると、続いて、管理者は、ロボット制御装置1に、ロボット30Aの設置位置及び姿勢の情報を含む軌道(動作経路)を生成するためのパスプランニングの処理を実行させる。以下、パスプランニングの処理について説明する。なお、説明の便宜上、上記タスクプランニングを実行するための要素と同一の機能を有する要素には同一の符号を付し、その説明を省略する。
【0046】
制御部104は、パスプランニングを実行するための要素として、
図23に示すように、プログラム取得部21、位置取得部22、動作判定部23、経路生成部24、位置調整部25、動作制御プログラム生成部26、尤度算出部27を含んでいる。これらは、CPUを中心として構成された制御部104においてプログラムが実行されることにより実現される機能である。また記憶部102には、記憶領域として、位置データ領域5i、動作制御プログラム領域5jが設けられている。
【0047】
また表示制御部19は、上記タスクプランニングと同様、管理者の指示を受け付けるための各種設定画面を表示部107に表示させ、操作受付部11は、管理者の指示を受け付ける。管理者は、パスプランニングの設定画面において、例えばロボット制御装置1に接続されたキーボードやマウス等の操作部を使用して指示を行う。
【0048】
ロボット制御装置1は、管理者の指示内容に基づいて、ロボット30が作業プログラムに係る作業を実行するためのロボット30の動作経路を生成する。ここでは、ロボット30Aに関する、上記作業A、作業Aに含まれる工程1、工程2、工程3を例に挙げる。
【0049】
ロボット制御装置1の各要素の機能について説明する。
【0050】
作業プログラム領域5fには、作業Aに対応する作業プログラムが、サブジョブ1プログラム、サブジョブ2サブプログラム及びサブジョブ3プログラムに関連付けて記憶されている。上記タスクプランニングで生成された作業プログラムに係る各サブジョブプログラム(
図22参照)の位置・座標情報を表す記述(例えば、Coord、P1、P2)は不定であり、パスプランニングの処理により決定される。なお、「Coord」は、例えば(x、y、z)の座標情報を表し、Coord1の座標系ファイル1がサブジョブ1プログラムに関連付けられ、Coord2の座標系ファイル2がサブジョブ2プログラムに関連付けられ、Coord3の座標系ファイル3がサブジョブ3プログラムに関連付けられて作業プログラム領域5fに記憶されている。
【0051】
位置データ領域5iには、部品、工具、作業台、ロボットの各座標系が記憶される。例えば、部品PF1,PF2,PF3、工具T1、作業台WS1、ロボット30Aの各座標系が記憶されている。また、位置データ領域5iには、ロボットの設置位置に対する、部品、工具、及び作業台の設計上の相対位置(位置測定データ)が記憶される。これにより、例えば部品PF1,PF2,PF3、工具T1、作業台WS1、ロボット30Aの位置関係(座標位置)が特定される。なお、ロボット30A,30B,30Cは人手で任意にロボット設置位置に配置されるので、それらロボット30A,30B,30Cに対する各作業台の実際の相対位置は、設計上のそれとは異なり得る。部品、工具、及び作業台38の設計上の相対位置は、各ロボット設置位置に関連づけて記憶されている。このように、位置データ領域5iには、各ロボットの座標位置が、各ロボット識別情報に関連付けて記憶されている。
【0052】
動作制御プログラム領域5jには、上記タスクプランニングより生成された作業プログラムに、パスプランニングにより生成された動作経路が関連付けられた動作制御プログラムが記憶される。
【0053】
プログラム取得部21は、作業プログラム領域5fから、パスプランニングの処理対象となる作業プログラムを取得する。ここでは、作業Aに対応する作業プログラムを取得する。この作業プログラムには、サブジョブ1プログラム、サブジョブ2プログラム及びサブジョブ3プログラムと、座標系ファイル1,2,3とがそれぞれ関連付けられている。プログラム取得部21は、例えば、管理者がパスプランニングを開始する指示を行ったときに、上記作業プログラムを取得する。
【0054】
位置取得部22は、位置データ領域5iから、部品、工具、作業台、ロボットの位置(座標系)を取得する。ここでは、部品PF1,PF2,PF3、工具T1、作業台WS1、ロボット30Aの位置(座標系)を取得する。
【0055】
動作判定部23は、位置取得部22により取得された位置情報に基づいて、各工程における動作において、動作の開始点及び到達点が可動範囲内(所定範囲内)にあるか否かを判定する。なお可動範囲は、位置取得部22により取得された位置情報に基づいて算出される。また、動作判定部23は、位置取得部22により取得された位置情報に基づいて、各工程における動作において、ロボット30Aが他のロボット30B,30Cや周辺の物体等の被干渉物に干渉するか否かを判定する。すなわち、動作判定部23は、動作範囲チェック及び干渉チェックを行う。動作判定部23は、動作範囲チェックにおいて動作の開始点及び到達点が可動範囲内にある場合は正常と判定し、干渉チェックにおいてロボットが被干渉物に干渉しない場合は正常と判定し、これら以外は異常と判定する。動作範囲チェック及び干渉チェックは、CADデータ領域5cに記憶される3次元モデルデータを用いて、ロボット30の作業空間における動きを仮想空間内でシミュレーションして行うことができる。
【0056】
経路生成部24は、動作判定部23による判定結果に基づいて、製造工程順における前後の工程間のロボットの動作経路を生成する。例えば、経路生成部24は、工程0と工程1の間のロボット30Aの動作経路0−1を生成し、工程1と工程2の間のロボット30Aの動作経路1−2を生成し、工程2と工程3の間のロボット30Aの動作経路2−3を生成する。また経路生成部24は、生成した各動作経路情報を作業プログラム領域5fに記憶する。
【0057】
位置調整部25は、動作判定部23による判定結果が異常の場合に、作業台とロボットとの位置関係を仮想空間内で調整する。
【0058】
動作制御プログラム生成部26は、経路生成部24により生成された動作経路を、上記タスクプランニングより生成された作業プログラムに関連付けて動作制御プログラムを生成する。動作制御プログラム生成部26は、生成した動作制御プログラムを動作制御プログラム領域5jに記憶する。
【0059】
また、表示制御部19は、上記タスクプランニングと同様、上記各要素の処理に応じた設定画面を表示部107に表示させる。各設定画面の具体例は後述する。パスプランニングにおける設定画面には、例えば
図24に示すように、作業シーケンス欄、動作経路生成ログ欄、環境モデル欄が含まれる。表示制御部19は、各設定画面を表示させるための要素として、
図25に示すように、作業シーケンス欄設定部19i、ログ欄設定部19j、環境モデル欄設定部19kを含んでいる。
【0060】
設定画面表示部19aは、設定画面データ領域5gから、管理者が選択した作業に対応する設定画面を取得して、表示部107に表示させる。
【0061】
作業シーケンス欄設定部19iは、管理者が選択した作業が作業取得部12により取得されると、作業プログラム領域5fを参照して、該作業に対応する作業シーケンス(作業プログラムに関連付けられたサブジョブプログラムを含む工程)(
図22参照)を作業シーケンス欄に設定(登録)する。
【0062】
ログ欄設定部19jは、作業シーケンス欄に設定された各工程の作業シーケンスのうち管理者が選択した工程に関する動作経路の生成過程のログを動作経路生成ログ欄に表示する。このログ表示により、管理者は動作経路の生成過程(状況)を把握することができる。
【0063】
環境モデル欄設定部19kは、位置取得部22により取得された部品、工具、作業台、ロボットの位置情報と、CADデータ領域5cに記憶されている各3次元モデルデータに基づいて、3次元モデルの画像を環境モデル欄に表示する。また、環境モデル欄設定部19kは、動作判定部23による判定結果に基づいて、部品、工具、作業台、ロボットの位置関係を表示する。
【0064】
ここで、ロボット制御装置1における動作経路の生成方法(パスプランニング)について、具体例を挙げて説明する。ここでは、上記タスクプランニングにより生成された作業Aに対応する動作経路の生成方法を例に挙げる。
【0065】
図26及び
図27は、ロボット制御装置1の動作を示す図である。同図では、管理者の操作フローと、管理者の操作に基づくロボット制御装置1の動作フローと、表示部107の表示フローとを並行して示している。なお、表示部107の表示処理は、ロボット制御装置1における表示制御部19の表示命令に従って実行される。
【0066】
まず、パスプランニングの処理が開始されると、表示部107に初期設定画面が表示される(S201)。初期設定画面には、例えば
図28に示すように、管理者に作業を選択させるための画面(設定画面0y)が表示される。管理者は、初期設定画面において、作業として「作業A」を選択して決定ボタンを押下する(S202)。作業取得部12が管理者による選択結果(作業A)を取得すると、プログラム取得部21は、作業プログラム領域5fから作業Aの作業プログラムを取得する(S203)。
【0067】
次に、設定画面表示部19aは、設定画面データ領域5gから作業Aに対応する設定画面(
図24参照)を取得し、作業シーケンス欄設定部19iは、作業Aの作業プログラムの作業シーケンスを設定画面の作業シーケンス欄に設定し、環境モデル欄設定部19kは、CADデータ領域5cに記憶されている各3次元モデルデータに基づいて、3次元モデルを環境モデル欄に設定する。これにより表示部107には、各設定部により各欄が設定された設定画面1yが表示される(S204)。
図29には、設定画面1yの一例を示している。
【0068】
次に、設定画面1yにおいて、管理者が作業シーケンス欄の「工程1」を選択する(S205)。例えば、管理者はマウスを使用して設定画面上の「工程1」をクリックする。管理者により「工程1」が選択されると、プログラム取得部21は、作業プログラム領域5fから工程1のサブジョブ1プログラムを取得し(S206)、位置取得部22は、位置データ領域5iから、部品、工具、作業台、ロボット30Aの位置(座標系)を取得する(S207)。
【0069】
次に、動作判定部23は、プログラム取得部21により取得されたサブジョブ1プログラムと、位置取得部22により取得された位置情報とに基づいて、動作範囲チェック及び干渉チェックを行う(S208)。両チェックで正常の場合、経路生成部24は、工程0と工程1の間のロボット30Aの動作経路0−1を生成し、生成した動作経路0−1をサブジョブ1プログラム(
図22参照)に関連付けて作業プログラム領域5fに記憶する(S209)。ログ欄設定部19jは、動作経路0−1の生成過程のログをログ設定欄に表示させる(S210)。
図30は、ログが表示された設定画面2yの一例を示している。
【0070】
なお動作範囲チェック及び干渉チェックの少なくとも何れかで異常の場合は、位置調整部25が、ロボット30Aの位置を仮想空間内で調整し(S211)、その後S208に戻る。
【0071】
上記のようにして生成された動作経路0−1により、サブジョブ1プログラムの位置・座標情報(Coord、P1、P2)が決定される。
【0072】
次に、管理者が作業シーケンス欄の「工程2」を選択すると(S212)、プログラム取得部21は、作業プログラム領域5fから工程2のサブジョブ2プログラムを取得し(S213)、位置取得部22は、位置データ領域5iから、部品、工具、作業台、ロボット30Aの位置(座標系)を取得する(S214)。
【0073】
次に、動作判定部23は、プログラム取得部21により取得されたサブジョブ2プログラムと、位置取得部22により取得された位置情報とに基づいて、動作範囲チェック及び干渉チェックを行う(S215)。ここでは動作範囲チェックで異常となった場合を詳細に説明する。位置調整部25は、ロボット30Aの位置を仮想空間内で調整する(S216)。例えば、工程2におけるロボット30Aの到達点がX座標上で−αmmであった場合は、ロボット30Aのベース位置をX座標上で+αmmに調整する。位置調整後、S215に戻り、再度、動作範囲チェック及び干渉チェックを行う。再チェックでは、工程2に対する位置調整を行うと、以前の工程1の動作位置が変動し、可動範囲内から外れたり、被干渉物に干渉したりする可能性があるため、以前の工程1についても再度動作範囲チェック及び干渉チェックを行う。
【0074】
経路生成部24は、上記位置調整が終了すると、工程1と工程2の間のロボット30Aの動作経路1−2を生成し、生成した動作経路1−2をサブジョブ2プログラム(
図22参照)に関連付けて作業プログラム領域5fに記憶する(S217)。ログ欄設定部19jは、動作経路1−2の生成過程のログをログ設定欄に表示させる(S218)。
図31は、ログが表示された設定画面3yの一例を示している。なお、環境モデル欄設定部19kは、動作範囲チェック及び干渉チェックにより検出された異常個所を環境モデル欄に表示させてもよい。
図32は、ロボット30Aの動作範囲が可動範囲内から外れた場合を示している。なお異常個所を特定し易くするために、マークを付してもよいし色付けしてもよい。
図33は、ロボット30Aが、他の物体に干渉した場合を示している。
【0075】
上記のようにして生成された動作経路1−2により、サブジョブ2プログラムの位置・座標情報(Coord、P1、P2)が決定される。同様に、工程3に関して生成された動作経路2−3がサブジョブ3プログラム(
図22参照)に関連付けて作業プログラム領域5fに記憶される。そして、動作経路2−3によりサブジョブ3プログラムの位置・座標情報(Coord、P1、P2)が決定される。
【0076】
工程3に関する動作経路2−3が生成されると、動作制御プログラム生成部26は、動作経路0−1、動作経路1−2、及び動作経路2−3がそれぞれ関連付けられた、サブジョブ1プログラム、サブジョブ2プログラム及びサブジョブ3プログラムに基づき、作業Aに対応する動作制御プログラムを生成する(S219)。
図34には動作制御プログラムの一例を示している。動作制御プログラム生成部26は、生成した作業Aに対応する動作制御プログラムを動作制御プログラム領域5jに記憶する。
【0077】
ロボット30Aは、ロボット制御装置1で生成された動作制御プログラムに基づき、作業Aに応じた動作を実行する。
【0078】
本実施形態に係るロボット制御装置1のパスプランニングによれば、動作経路を容易に作成することができるとともに、管理者は動作経路の生成過程(状況)を把握(視認)することができる。
【0079】
ここで、制御部104は、さらに尤度算出部27(
図23参照)を含んでいてもよい。尤度算出部27は、位置取得部22により取得された位置情報に基づいて、誤差尤度σを算出する。誤差尤度σは、ロボット30を設置した際にロボット30と作業台との位置関係の誤差の許容値に相当し、キャリブレーションにおける作業座標系の判定指標となる。キャリブレーションでは、ロボット30A,30B,30Cの設置位置に対する作業台の実際の相対位置が計測される。具体的には、キャリブレーションでは、ロボット30Aを設置した後、位置測定データ(ロボット30Aに対する作業台の設計上の相対位置)により示される相対位置にロボット30Aのアーム先端を移動させ、さらにアーム先端に設けられたカメラや接触センサの出力を頼りに、作業台の特徴箇所にアーム先端を一致させる。また、この際のアームの各関節の状態に基づいて、作業台の特徴箇所の相対位置を演算する。これが作業台の実際の(設計上のものとは必ずしも一致しない)相対位置となる。上記キャリブレーションおいて、例えばロボット30と作業台との位置関係の誤差が誤差尤度σを超える場合は、再度上記パスプランニングを実行してもよい。このようにキャリブレーションにおいて誤差尤度σを用いることにより、作業座標系を作成する作業効率を高めることができる。
【0080】
[ロボットシステムの具体例]
ここで、本実施形態に係るロボット制御装置1を含むロボットシステムの具体例を以下に示す。
【0081】
図35は、ロボットシステム10の具体的な全体構成図である。同図に示すロボットシステム10は、例えば自動車などの輸送機械、テレビ受像機などの電気機器の製造現場に設置されるものである。この製造現場には、ベルトコンベアやローラコンベアなどの搬送装置36が設置されており、該搬送装置36により、ロボットの作業スペースである作業台38に載置された未完成の自動車やテレビ受像機などの作業対象物34が一方向に搬送されている。搬送装置36の側には産業用多関節ロボット30A,30B,30Cが、上流側から下流側に向かって順に離間して配置されており、これらのロボット30A,30B,30Cはそれぞれ、部品の取り付けなどの事前に定められた作業を作業対象物34に対して施す。
【0082】
ロボット30A,30B,30Cには、それらを制御するコンピュータであるロボットコントローラ20A,20B,20Cがそれぞれ接続されており、ロボットコントローラ20A,20B,20Cには、それぞれネットワーク装置18A,18B,18Cが接続されている。ネットワーク装置18A,18B,18Cは、いずれもロボットネットワーク40に接続されている。このロボットネットワーク40には、ロボットコントローラ20A,20B,20Cの動作を支援・管理するロボット管理コンピュータ100も接続されており、ロボットコントローラ20A,20B,20Cは、それぞれネットワーク装置18A,18B,18C及びロボットネットワーク40を介して、ロボット管理コンピュータ100と通信することができる。ここで、ネットワーク装置18A,18B,18C及びロボット管理コンピュータ100は、ロボットネットワーク40におけるアドレスその他のネットワーク識別子をそれぞれ記憶しており、ネットワーク識別子を用いて送信元及び送信先を互いに特定している。上記ロボット管理コンピュータ100は、本実施形態に係るロボット制御装置1とすることができる。
【0083】
搬送装置36は、作業台38をロボット30A,30B,30Cの設置位置の側にて停止させ、ロボット30A,30B,30Cによる作業が終了すると、それぞれの作業台38を下流側のロボットの設置位置の側まで移動させる。なお、ロボット30A,30B,30Cにより作業が終了した旨は、それぞれロボットコントローラ20A,20B,20Cから搬送装置36に通知されてよい。
【0084】
搬送装置36を挟んでロボット30A,30B,30Cの設置位置の反対側には、作業対象物IDリーダ32A,32B,32Cがそれぞれ配置されている。作業対象物34又はそれが載置される作業台38には、作業対象物34のID(識別情報)が、例えば1次元又は2次元バーコードなどの機械読み取りが可能な形態で付加されている。作業対象物34のIDは、例えば作業対象物34の最終的な又は暫定的なシリアル番号やロット番号であってよい。バーコードリーダーなどの作業対象物IDリーダ32A,32B,32Cは、作業対象物34又は作業台38に付加されたIDを読み取り、それを、生産管理ネットワーク42を介して生産管理コンピュータ200に通知する。すなわち、作業対象物IDリーダ32A,32B,32C及び生産管理コンピュータ200は生産管理ネットワーク42に接続されている。さらに、上述のロボット管理コンピュータ100(ロボット制御装置1)も生産管理ネットワーク42に接続されており、ロボット管理コンピュータ100と生産管理コンピュータ200とは通信可能となっている。
【0085】
また、ロボットシステム10では、例えばロボット30Aの導入時やロボット30Aの配置換えの時に、ロボット30Aを所期の設置位置に配置し、ロボットコントローラ20Aをネットワーク装置18Aに接続すると、ロボット管理コンピュータ100(ロボット制御装置1)がロボットコントローラ20Aで実行すべき動作制御プログラム(
図34参照)を該ロボットコントローラ20Aに送信する。ロボットコントローラ20Aは、ロボット制御装置1から送信される動作制御プログラムを実行する。動作制御プログラムは、ロボット30Aのアーム先端に備えられたカメラや接触センサの出力、或いはタイマの出力に従って、どのような動きをロボット30Aのアーム各所に備えられたアクチュエータにさせるかが記述されている。この動作制御プログラムを実行することにより、ロボットコントローラ20Aから制御命令がロボット30Aに順次送信され、これによりロボット30Aの動作(例えば上記作業Aの動作)が制御される。これによりロボットコントローラ20Aはロボット30Aに所期の動作を確実に行わせることができる。ロボット30B,30Cについても同様である。産業用多関節ロボット30A,30B,30Cは動作制御プログラムの変更により、様々な作業を担うことができるため、ロボット30A,30B,30Cは、ある日は、製造現場のある場所である作業を行い、別の日は製造現場の別の場所で別の作業を行う、という使い方が可能である。本実施形態によれば、ロボット30A,30B,30Cの設置位置に応じて適切な動作制御プログラムをロボットコントローラ20A,20B,20Cに供給できるので、こうした使い方を促進できる。
【0086】
なお、ロボットコントローラ20A,20B,20Cのそれぞれが、本実施形態に係るロボット制御装置1であってもよい。