JPH0764619A - ロボットプログラム作成支援システム - Google Patents

ロボットプログラム作成支援システム

Info

Publication number
JPH0764619A
JPH0764619A JP23592393A JP23592393A JPH0764619A JP H0764619 A JPH0764619 A JP H0764619A JP 23592393 A JP23592393 A JP 23592393A JP 23592393 A JP23592393 A JP 23592393A JP H0764619 A JPH0764619 A JP H0764619A
Authority
JP
Japan
Prior art keywords
work
robot
program
job
data
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.)
Granted
Application number
JP23592393A
Other languages
English (en)
Other versions
JP2875941B2 (ja
Inventor
Chikahiro Tanaka
慎浩 田中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nidec Instruments Corp
Original Assignee
Sankyo Seiki Manufacturing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sankyo Seiki Manufacturing Co Ltd filed Critical Sankyo Seiki Manufacturing Co Ltd
Priority to JP23592393A priority Critical patent/JP2875941B2/ja
Publication of JPH0764619A publication Critical patent/JPH0764619A/ja
Application granted granted Critical
Publication of JP2875941B2 publication Critical patent/JP2875941B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Numerical Control (AREA)
  • Manipulator (AREA)

Abstract

(57)【要約】 【目的】 簡単にロボット作業用のプログラムを作成で
きるようにする。 【構成】 ロボットプログラム作成支援システムは、ロ
ボットの動作を一連の作業をする作業シーケンスと前記
作業シーケンス間の移動との二つに分解して標準化し各
作業等に必要な作業データ303を穴埋め的に入力可能
に構成された作業シート画面を表示装置の画面上に表示
する手段302と、前記作業シート画面上に穴埋め的に
必要な事項を入力することにより作業名別の固有データ
を形成する手段302と、各基準作業シーケンス毎に設
けたひな型プログラムサブルーチン306と、前記固有
データ、ひな型プログラムサブルーチンを基にロボット
を制御するオブジェクトプログラム307を作成する手
段305とを備えたことを特徴とする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はロボットプログラム作成
支援システムに関する。更に詳述すると、本発明は、ロ
ボットを制御するためのプログラムを簡単に作成できる
ロボットプログラム作成支援システムに関するものであ
る。
【0002】
【従来の技術】この種の産業用ロボットは、単独で使用
するのではなく、システムに組み込まれて使用されるの
が一般的となってきた。これにより、個々のロボットの
動作だけではなく、周辺装置とのインターフェースのた
めのプログラムが占める割合が大きくなり、プログラム
が複雑化、高度化、大規模化してきている。
【0003】このようなロボットにおいて、ロボット動
作用のプログラムを作成する上で一番回避したい点は、
ロボット動作に関するプログラムの部分のミスである。
すなわち、ロボット動作部分のプログラム作成上にミス
があると、ロボットのアーム等が周辺装置等に衝突し、
装置を破壊してしまうことがあるからである。
【0004】そこで、自由な記述が可能なロボット言語
を提供して上記不都合を解消することが考えられた。
【0005】
【発明が解決しようとする課題】このように自由な記述
が可能なロボット言語を提供して処理を行う場合、一般
のコンピュータ言語との違いがないため、次のような問
題点が発生した。 (1)ロボットの動作命令がプログラム中に散りばめら
れてプログラムが多くなってきたこと。 (2)ロボット動作に関係しないと思われるプログラム
の変更がロボット動作命令に影響し、装置を破壊してし
まう場合がある。 (3)プログラムの作成者以外の人が当該プログラムの
メンテナンスをできなくなる。
【0006】そこで、本発明は、簡単にロボット作業用
のプログラムを作成できるロボットプログラム作成支援
システムを提供することを目的とする。
【0007】
【課題を解決するための手段】かかる目的を達成するた
めに、本発明のロボットプログラム作成支援システム
は、ロボットの動作を一連の作業をする作業シーケンス
と前記作業シーケンス間の移動との二つに分解して標準
化し各作業等に必要な作業データを穴埋め的に入力可能
に構成された作業シート画面を表示装置の画面上に表示
する手段と、前記作業シート画面上に穴埋め的に必要な
事項を入力することにより作業名別の固有データを形成
する手段と、各基準作業シーケンス毎に設けたひな型プ
ログラムサブルーチンと、前記固有データ、ひな型プロ
グラムサブルーチンを基にロボットを制御するオブジェ
クトプログラムを作成する手段とを備えるようにしてい
る。
【0008】
【作用】したがって、ロボットの動作の分解したものか
ら、基本的な作業用の入力項目を確定した基本作業シー
トを作成するとともに、基本作業シートに入力されたデ
ータから各作業における固有データを作成し、この基本
作業シートを表示装置に表示し、必要な内容をキーボー
ド等の入力装置から入力した後、当該基本作業シートに
記入された値から前記プログラムにより各作業のプログ
ラムに変更する。
【0009】
【実施例】以下、本発明の構成を図面に示す実施例に基
づいて詳細に説明する。
【0010】まず、本発明の基礎的事項を図9に示すロ
ボットプログラムの分析結果に基づいて説明する。
【0011】図9に示すように、ロボットプログラム1
00は、大きく分けてロボットの制御プログラム101
と、データ処理102とに分解することができる。更
に、ロボットの制御プログラム101は、作業点での一
連の作業プログラム103と、作業点間の移動プログラ
ム104に分けることができる。
【0012】図10にロボットの作業の種類を示す。図
10(a)はピックアンドプレース作業であり、2点間
を交互に移動する動作である。図10(b)はパレッタ
イズ作業であり、2点間を交互に移動と、作業点がパレ
ットである。図10(c)は挿入、圧入等の組立作業で
あり、2点間を交互に移動と、作業点の動作が複雑なも
のである。図10(d)はねじ締め・はんだつけ作業等
であり、供給点に移動せずに、作業点が移ること、作業
平面からの退避作業がはいったものである。図10
(e)はシーリング作業であり、供給点に移動せず、作
業点が移るものであること、作業平面内での1動作シー
ケンスであること。
【0013】図11にはツールの種類と作業の関係を示
す。図11(a)はシングルチャックの関係を示してお
り、シングルソレノイド、ダブルソレノイドを一回だけ
励磁する。図11(b)はダブルチャックの関係を示し
ており、各供給点、作業点ともチャックを2回おこなっ
ている。
【0014】なお、図示しないが、ベンド軸をもつもの
(作業平面によって異なる)。ターレットヘッド、AH
C(ATC)等がある。
【0015】図12に、Z軸の役割とZ軸で定義される
動作点について示す。
【0016】スカラ型ロボットは、作業平面をXY平面
に持つことが一般的である。4つの軸に与えられる役目
は、次のように考えることができる。 (1)X軸、Y軸は平面内での位置を規定する。 (2)S軸は、ワークの向きを規定する。 (3)Z軸は、作業点の移動のための付加軸であり、作
業空間内での位置を規定している。
【0017】Z軸を作業点へのエントリ動作、作業点か
らの退避動作のための付加軸とした場合、Z軸の動作経
路上に定義される点は、次の示すものがある。すなわ
ち、上昇端201、Z軸保障点202、低速動作開始点
203、作業点204、高速動作開始点205、Z軸保
障点206がある。上昇端201は、水平移動時の高さ
である。Z軸保障点202、Z軸保障点206は、ジャ
ンプ動作でZ軸の直線動作を保障したいとき、エントリ
時にインターロック解除待ちを行う点、退避時は作業終
了信号を他の装置に出力する点、ダブルチャック等でフ
レームを切り換える点である。低速動作開始点203
は、省略時の作業点である。高速動作開始点205は、
省略時の作業点である。
【0018】このようにロボットの制御プログラム10
1は、図9〜図12に示すように、基本作業を組み合わ
せたものであることが判る。
【0019】そこで、本発明の実施例は、これら動作の
分解したものから、基本的な作業用の入力項目を確定し
た基本作業シートを作成するとともに、基本作業シート
に入力されたデータから各作業におけるプログラムに変
換するプログラムを作成し、この基本作業シートを表示
装置に表示し、必要な内容をキーボード等の入力装置か
ら入力した後、当該基本作業シートに記入された値から
前記プログラムにより各作業のプログラムに変更するよ
うにしたものである。
【0020】次に、上記ロボットプログラム作成支援シ
ステムの実施例が適用されるロボットシステムの説明を
する。
【0021】図1に、本発明のロボットプログラム作成
支援システムの実施例が適用されたロボットシステムを
示す。
【0022】図1において、符号1はスカラ形ロボット
であり、スカラ形ロボット1は、主に、ベース2、第1
アーム3、第2アーム4、第1モータ5、第1減速機5
A、第2モータ6、第2減速機6A、第3モータ7、第
4モータ8、第3減速機8Aを備えている。また、前記
ベース2には第1アーム3が回動可能に固定されてお
り、この第1アーム3の先端には第2アーム4が回動可
能に固定されている。前記ベース2には、第1モータ5
及び第4モータ8が固定されている。第1モータ5は、
減速機5Aを介して第1アーム3を回転させるようにな
っている。第4モータ8は、プリー9a,9bに掛け渡
されたベルト10aと、プリー9c,9dに掛け渡され
たベルト10bとにより、スプラインシャフト先端把持
部11aを所望角度だけ回転させられるようになってい
る。前記第2モータ6は第1アーム3に固定されてお
り、第2モータ6で第2アーム4を回転できるようにな
っている。第2モータ6の先端内部には第3モータ7が
内蔵固定されており、第3モータ7はプリー12a,1
2bに掛け渡されたベルト13によりボールネジ14を
回転させることにより、スプラインシャフト11bを図
示上下動できるようになっている。また、第1モータ
5、第2モータ6、第3モータ7、及び第4モータ8に
は、エンコーダ15、16、17及び18がそれぞれ設
けられており、各エンコーダ15、16、17及び18
は各モータ5、6、7及び8の回転数を検出できるよう
になっている。これらエンコーダ15、16は、第1ア
ーム3及び第2アーム4の角度を検出するセンサとして
使用される。もちろん、エンコーダ17はスプラインシ
ャフト先端把持部11aの上下動の距離を、エンコーダ
18はスプラインシャフト先端把持部11aの角度を測
定するセンサとして使用される。
【0023】このロボット1はロボット制御装置20に
電気的に接続されており、ロボット制御装置20の制御
下に、各モータ5、6、7及び8を回転させ、かつ各エ
ンコーダ15、16、17及び18からの検出信号で各
モータ5、6、7及び8の回転を駆動制御するととも
に、第2アーム4の先端位置を推定できるようになって
いる。
【0024】このロボット制御装置20は、各種の演算
処理や各種の制御を実行する演算処理装置(CPU)2
1と、バス22と、メモリー23と、サーボモータコン
トロールインターフェース24a,24b,24c,2
4dと、検出回路25a,25b,25c,25dと、
表示装置26と、入力装置27とを備えている。CPU
21には、バス22を介してメモリー23と、サーボモ
ータコントロールインターフェース24a,24b,2
4c,24dとが接続されるとともに、検出回路25
a,25b,25c,25dが接続されている。同様
に、CPU21には、バス22を介して表示装置26
と、入力装置27とが接続されている。
【0025】サーボモータコントロールインターフェー
ス24a,24b,24c及び24dは、図示しない
が、各モータ5,6,7及び8に電気的にそれぞれ接続
されており、各モータ5,6,7及び8の回転をCPU
21の指令に基づいて回転駆動制御できる。検出回路2
5a,25b,25c及び25dは、全て同一回路構成
となっている。検出回路25は、エンコーダ15からの
検出信号SA,SBを取り込み、これを検波して検波信
号Sa,Sbの内の一つを出力できる位相検出回路と、
位相検出回路からの検波信号Sa,Sbの内の一つを差
引計数する可逆カウンタと、この可逆カウンタの計数値
をCPU21に読み込ませるスリーステートバッファ
と、位置認識信号SCが入力されたときに前記位置認識
信号SCの微分信号Scを形成する微分回路と、この微
分信号Scが入力されたときに、その入力時点の可逆カ
ウンタの計数値をセットするレジスタと、このレジスタ
のセット値をCPU21に読み込ませるスリーステート
バッファと、微分信号Scが入力されるとセットされC
PU21によりリセットされる判定信号保持部とから構
成されている。
【0026】また、ロボット制御装置20のメモリー2
3には、ロボットプログラム100が記憶されるととも
に、ロボットプログラム作成支援システムを実現するプ
ログラムが記憶されている。
【0027】このように構成された実施例の動作を図1
を基に、図2〜図8を参照して説明する。
【0028】まず、本実施例では、図2に示すように、
ロボットプログラム作成支援システムは、通常のエディ
タプログラムの一部として組み込まれている。エディタ
プログラム301の編集機能を表示装置26に表示し、
入力装置27により「作業定義」を選択すると(ステッ
プ401)、図3のように各作業別に用意されている作
業シーケンス501〜511の一覧が表示装置26に表
示される。前記表示されている作業シーケンス501〜
511の中から、例えばピックアンドプレース作業シー
ケンス501を選択したとする。すると、このシーケン
ス501が作業シーケンス入力支援ソフト302に渡さ
れるとともに、表示装置26には図4に示すような枠付
のシート601が表示される(図2のステップ40
2)。
【0029】そして、作業シーケンス入力支援ソフト3
02と入力装置27の操作により、図4に示すような枠
付のシート601の枠内にデータを入力し(シートの穴
埋めを行い)、作業名を登録して入力装置27から終了
コマンドを入れる(図2のステップ403)。これによ
り、作業名別の固有のデータ303が形成される(ステ
ップ404)。この作業名別の固有のデータ303は、
メモリー23の所定エリアに図8に示すような記憶デー
タ601として記憶されている。記憶データ601は、
「作業パラメータ定義名」、「作業名格納エリア」、
「上位位置項目データ」、……、「動作確認信号デー
タ」、…からなる。このようにメモリー23の所定のエ
リアに格納された記憶データ601は、作業固有データ
生成ソフト602により、作業名別の固有データ603
となる(図6及び図8参照)。
【0030】また、通常のプログラム上で作業シーケン
スは、サブルーチンの形で呼び出すことになる。つま
り、一般のエディタ301でのプログラムは、「CAL
L 作業シーケンス名(作業名);」という記述を含む
ソースプログラム304を作成する(ステップ40
5)。このソースプログラム304は、図7に示すよう
に、作業固有データを示す部分611と、作業シーケン
ス名を示す部分612とからなる。
【0031】全てのプログラムが終了すると、以下の三
つのプログラムをリンクしてコンパイルして、オブジェ
クトプログラム307を作成する(ステップ406)。
すなわち、ロボット言語コンパイラ305は、ソースプ
ログラム304と、固有データ303と、ひな型プログ
ラムサブルーチン306とをリンクして、オブジェクト
プログラム307を作成している。なお、このひな型プ
ログラムサブルーチン306の一部306’は、図5に
示すようになっており、ピックアンドプレースに関する
ものである。このひな型プログラムサブルーチン306
の一部306’は、図5に示すように、所定のプログラ
ムが記載されている。また、サブルーチン306の一部
306’内には、サブルーチンに渡すパラメータの定義
部分307が設けられている。また、入力された作業名
別の固有データは、サブルーチンへのパラメータとして
用意されることになる。このひな型プログラムサブルー
チン306の一部306’は、作業シーケンス毎に定義
されているパラメータを用いて記述されている部分30
8を有している。
【0032】このようにして作成されたオブジェクトプ
ログラム307は、メモリー23に記憶される。CPU
21は、前記オブジェクトプログラム307を基にロボ
ットのモータ15,16、17を制御する。これによ
り、ロボットは所定の動作をさせることができる。
【0033】このように本実施例では、ロボットの各作
業について基本的作業に分解し、各作業について基本的
な作業用の入力項目を確定した基本作業シートを作成す
るとともに、基本作業シートに入力されたデータから各
作業におけるプログラムに変換するプログラムを作成
し、この基本作業シートを表示装置に表示し、必要な内
容をキーボード等の入力装置から入力した後、当該基本
作業シートに記入された値から前記プログラムにより各
作業のプログラムに作成するようにしたものであるか
ら、初心者にも簡単にロボット動作のプログラムが可能
になり、かつ熟練者のノウハウを生かすことができ、プ
ログラムの作成ミスが防止できることになる。
【0034】
【発明の効果】以上の説明より明らかなように、本発明
では、ロボットの動きを基本的な作業に分解し、当該作
業のデータを穴埋め形式にて入力できるようにしたの
で、次のような効果を有する。 (1)初心者にも簡単にロボット動作のプログラム作成
が可能になる。 (2)プムグラムに熟練者のノウハウを生かすことがで
きる。 (3)プログラム作成ミスを防止できる。 (4)ロボット動作プログラムと他のプログラムとが分
離されるため、プログラムが分かりやすくなる。 (5)ロボット動作の不具合箇所の修正が、作業シーケ
ンス内での修正でするから、プログラム作成者でなくて
も簡単に行うことができる。
【図面の簡単な説明】
【図1】本発明のロボットプログラム作成支援システム
の実施例が適用されたロボットシステムを示すブロック
図である。
【図2】図1の実施例の全体的動作の流れを説明した説
明図である。
【図3】作業シーケンス別のデータと支援ソフトとの関
係を示す説明図である。
【図4】作業シートの一例を示す説明図である。
【図5】ひな型プログラムの一部を示す説明図である。
【図6】作業別名固有データを示す説明図である。
【図7】ソースプログラムの一部を示す説明図である。
【図8】作業データから固有データを得る流れの説明図
である。
【図9】プログラムの内容の分解状態を示す図である。
【図10】基本的作業の例を示す説明図である。
【図11】ツールの種類と作業の関係を示す説明図であ
る。
【図12】Z軸の役割等を説明するための図である。
【符号の説明】
1 ロボット 20 ロボット制御装置 21 CPU 22 バス 23 メモリー 24a,24b,24c,24d サーボモータコント
ロールインターフェース 25a,25b,25c,25d 検出回路 26 表示装置 27 入力装置

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ロボットの動作を一連の作業をする作業
    シーケンスと前記作業シーケンス間の移動との二つに分
    解して標準化し各作業等に必要な作業データを穴埋め的
    に入力可能に構成された作業シート画面を表示装置の画
    面上に表示する手段と、前記作業シート画面上に穴埋め
    的に必要な事項を入力することにより作業名別の固有デ
    ータを形成する手段と、各基準作業シーケンス毎に設け
    たひな型プログラムサブルーチンと、前記固有データ、
    ひな型プログラムサブルーチンを基にロボットを制御す
    るオブジェクトプログラムを作成する手段とを備えたこ
    とを特徴とするロボットプログラム作成支援システム。
JP23592393A 1993-08-30 1993-08-30 ロボットプログラム作成支援システム Expired - Fee Related JP2875941B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23592393A JP2875941B2 (ja) 1993-08-30 1993-08-30 ロボットプログラム作成支援システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23592393A JP2875941B2 (ja) 1993-08-30 1993-08-30 ロボットプログラム作成支援システム

Publications (2)

Publication Number Publication Date
JPH0764619A true JPH0764619A (ja) 1995-03-10
JP2875941B2 JP2875941B2 (ja) 1999-03-31

Family

ID=16993248

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23592393A Expired - Fee Related JP2875941B2 (ja) 1993-08-30 1993-08-30 ロボットプログラム作成支援システム

Country Status (1)

Country Link
JP (1) JP2875941B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002016091A1 (fr) * 2000-08-25 2002-02-28 Janome Sewing Machine Co., Ltd. Robot
JP2007188537A (ja) * 2000-08-25 2007-07-26 Janome Sewing Mach Co Ltd ロボット
JP2007188538A (ja) * 2000-08-25 2007-07-26 Janome Sewing Mach Co Ltd ロボットにおけるコンピュータ読み取り可能な記録媒体及びコンピュータ読み取り可能な記録媒体を備えたロボット
JP2007193846A (ja) * 2000-08-25 2007-08-02 Janome Sewing Mach Co Ltd ロボットの動作設定方法
DE102015214045A1 (de) 2015-01-27 2016-07-28 Janome Sewing Machine Co., Ltd. Robot
CN105983970A (zh) * 2014-10-14 2016-10-05 蛇目缝纫机工业株式会社 机器人

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002016091A1 (fr) * 2000-08-25 2002-02-28 Janome Sewing Machine Co., Ltd. Robot
JP2007188537A (ja) * 2000-08-25 2007-07-26 Janome Sewing Mach Co Ltd ロボット
JP2007188538A (ja) * 2000-08-25 2007-07-26 Janome Sewing Mach Co Ltd ロボットにおけるコンピュータ読み取り可能な記録媒体及びコンピュータ読み取り可能な記録媒体を備えたロボット
JP2007193846A (ja) * 2000-08-25 2007-08-02 Janome Sewing Mach Co Ltd ロボットの動作設定方法
JP4667416B2 (ja) * 2000-08-25 2011-04-13 蛇の目ミシン工業株式会社 ロボットにおけるコンピュータ読み取り可能な記録媒体及びコンピュータ読み取り可能な記録媒体を備えたロボット
JP4667417B2 (ja) * 2000-08-25 2011-04-13 蛇の目ミシン工業株式会社 ロボットの動作設定方法
JP4667415B2 (ja) * 2000-08-25 2011-04-13 蛇の目ミシン工業株式会社 ロボット
CN105983970A (zh) * 2014-10-14 2016-10-05 蛇目缝纫机工业株式会社 机器人
US9718186B2 (en) 2014-10-14 2017-08-01 Janome Sewing Machine Co., Ltd. Robot
DE102015214045A1 (de) 2015-01-27 2016-07-28 Janome Sewing Machine Co., Ltd. Robot
DE102015214045B4 (de) * 2015-01-27 2016-12-15 Janome Sewing Machine Co., Ltd. Robot
US10618169B2 (en) 2015-01-27 2020-04-14 Janome Sewing Machine Co., Ltd. Robot

Also Published As

Publication number Publication date
JP2875941B2 (ja) 1999-03-31

Similar Documents

Publication Publication Date Title
US5511147A (en) Graphical interface for robot
JP4441409B2 (ja) ロボットシミュレーション装置、および、シミュレーションプログラム
JP2011096276A (ja) 工作機械の制御方法、および、それに対する装置
JP4311349B2 (ja) 数値制御システム
JP4023978B2 (ja) 工作機械シミュレーション装置
JPH0764619A (ja) ロボットプログラム作成支援システム
US20090125139A1 (en) Numerical controller for storing operating history during path table operation
JP2762788B2 (ja) 移動体の動作表示装置及びその表示方法
US20230405819A1 (en) A robot controller with integrated logic functionality
JP3066646B2 (ja) 動作シミュレーションシステム
US20190235473A1 (en) Machining simulation display apparatus and machining simulation display method
JPH04114208A (ja) Ncプログラムのアニメ描画方法
JP2001306150A (ja) 軸制御モータの動作態様を設定する動作設定テーブル及びその動作設定テーブルにより軸制御モータを制御する制御ボード。
JP2628914B2 (ja) 加工シミュレーション方式
JPH02100109A (ja) 数値制御装置のcrt表示方法
US11577381B2 (en) Teaching apparatus, robot system, and teaching program
US20030093165A1 (en) Programming method for creating a control program of an industrial machine
US11231699B2 (en) Program analysis device
WO2023112342A1 (ja) 教示装置、制御装置、及び機械システム
JPH0991022A (ja) ロボット制御装置
JP3636711B2 (ja) 電気機器の制御システム
JP2020175473A (ja) 動作計画装置及び動作計画方法
JPH07104712B2 (ja) ロボットアームの手動制御方法
JPH08161025A (ja) 教示装置
JPH0926810A (ja) 数値制御装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees