(57)【要約】【目的】少なくとも２軸を同時に駆動して停止することなく連続的に移動するようにロボットを制御するロボット言語プログラムに従うロボットの動作軌跡を最も適したものにできるようにする。【構成】希望する第１の移動経路に対応するロボット言語プログラムに従う第１の試行軌跡データを求めて第１の移動経路とともに表示する。第１の試行軌跡が第１の移動経路から許容限界以上外れていた場合には修正経路を入力してロボット言語プログラムを修正し，修正したロボット言語プログラムに従う第２の試行軌跡を求めて，希望する第１の移動経路とともに表示する。【選択図】図18
2016218934.tif 000002
【特許請求の範囲】
【請求項１】
ロボットの第１の移動経路を表示装置の表示画面に表示する第１の経路表示制御手段，
前記第１の移動経路に対応するロボット言語プログラムに基づくロボットの第１の試行動作軌跡を表わすデータを生成してこのデータに基づいて第１の試行動作軌跡を，上記第１の移動経路とともに，表示画面に表示する第１の試行動作軌跡表示制御手段，
入力される修正経路を受付けるとともに該修正経路を表示画面に表示する第２の経路表示制御手段，
受付けた修正経路に基づいて前記ロボット言語プログラムを修正するプログラム修正手段，および
修正されたロボット言語プログラムに基づくロボットの第２の試行動作軌跡を表わすデータを生成してこのデータに基づいて第２の試行動作軌跡を，少なくとも前記第１の移動経路とともに，表示画面に表示する第２の試行動作軌跡表示制御手段，
を備えるロボット言語プログラムの修正装置。
【請求項２】
前記第２の試行動作軌跡表示制御手段は，さらに前記修正経路を表示する，請求項１に記載のロボット言語プログラムの修正装置。
【請求項３】
表示画面に表示される第１の移動経路に基づいて前記ロボット言語プログラムを作成するロボット言語プログラム作成手段を備える，請求項１または２に記載のロボット言語プログラムの修正装置。
【請求項４】
前記プログラム修正手段は前記ロボット言語プログラム作成手段に含まれる，請求項３に記載のロボット言語プログラムの修正装置。
【請求項５】
前記第１の移動経路および前記修正経路を入力する入力手段を備える，請求項１から４のいずれか一項に記載のロボット言語プログラムの修正装置。
【請求項６】
前記第１の試行動作軌跡表示制御手段は，前記第１の移動経路に対応するロボット言語プログラムに基づくロボットの第１の試行動作軌跡を表わすデータを生成する第１の試行動作手段を含む，請求項１に記載のロボット言語プログラムの修正装置。
【請求項７】
前記第２の試行動作軌跡表示制御手段は，修正されたロボット言語プログラムに基づくロボットの第２の試行動作軌跡を表わすデータを生成する第２の試行動作手段を含む，請求項１に記載のロボット言語プログラムの修正装置。
【請求項８】
ロボットの第１の移動経路を表示装置の表示画面に表示し，
前記第１の移動経路に対応するロボット言語プログラムに基づくロボットの第１の試行動作軌跡を表わすデータを生成してこのデータに基づいて第１の試行動作軌跡を，上記第１の移動経路とともに，表示画面に表示し，
入力される修正経路を受付けるとともに該修正経路を表示画面に表示し，
受付けた修正経路に基づいて前記ロボット言語プログラムを修正し，そして
修正されたロボット言語プログラムに基づくロボットの第２の試行動作軌跡を表わすデータを生成してこのデータに基づいて第２の試行動作軌跡を，少なくとも前記第１の移動経路とともに，表示画面に表示する，
ロボット言語プログラムの修正方法。
【請求項９】
ロボットの第１の移動経路を表示装置の表示画面に表示し，
前記第１の移動経路に対応するロボット言語プログラムに基づくロボットの第１の試行動作軌跡を表わすデータを生成してこのデータに基づいて第１の試行動作軌跡を，上記第１の移動経路とともに，表示画面に表示し，
入力される修正経路を受付けるとともに該修正経路を表示画面に表示し，
受付けた修正経路に基づいて前記ロボット言語プログラムを修正し，そして
修正されたロボット言語プログラムに基づくロボットの第２の試行動作軌跡を表わすデータを生成してこのデータに基づいて第２の試行動作軌跡を，少なくとも前記第１の移動経路とともに，表示画面に表示するようにコンピュータを制御する，
ロボット言語プログラムの修正のためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は，ロボット言語プログラムの修正装置，方法およびプログラムに関する。
【背景技術】
【０００２】
ロボットには直交型ロボット，多関節ロボットなどさまざまなタイプのものがある。これらのロボットに所望の動作を行なわせるためのプログラムは，一般にロボット言語によって表現される。ロボット言語はロボットの製造メーカによって開発されてきたので，似ている点もあるが，厳密にはメーカごとに異なることが多い。コントローラは，ロボット言語で書かれたプログラム（一連の命令）を解釈して，ロボットを直接に動かすアクチュエータ（回転モータ，リニアモータ等）の駆動回路（装置）に制御指令（位置指令，速度指令）を与える。駆動回路はこの制御指令に従って，一般的にはフィードバック制御によりアクチュエータを駆動する。このようにして，ロボット言語で表現された命令に従ってロボットが所望の動きを行うことになる。
【０００３】
駆動回路と命令にしたがうロボット動作の一例について以下に簡単に述べる。Ｘ軸方向とＹ軸方向に動く２軸直交ロボットを例にとる。
【０００４】
図19に駆動回路の例が示されている。この駆動回路はＸ軸モータ110 を駆動するＸ軸駆動回路とＹ軸モータ120 を駆動するＹ軸駆動回路とを含む。これらのＸ軸駆動回路とＹ軸駆動回路は同じ構成であるから，一方のＸ軸駆動回路について説明する。
【０００５】
Ｘ軸モータ110の回転量（回転角度位置）はエンコーダ116によって検出される。エンコーダ116の出力信号に基づいて，位置検出器117，速度検出器118 により，Ｘ軸モータの位置（角度位置）および速度がそれぞれ検出される。コントローラ（図示略）からＸ軸上の位置指令（Ｘ位置指令）が出力され，減算器111 において位置指令による位置と位置検出器117が検出した位置との偏差が算出され，位置制御器112に与えられる。位置制御器112 は入力する位置の差信号に基づいて速度指令を生成する。この速度指令による速度と速度検出器118が検出した速度との偏差が減算器113において算出され，速度制御器114 に与えられる。速度制御器114 は入力する速度の差信号に基づいて，電流指令または電圧指令を生成し電流／電圧制御器115に与えるので，この制御器115によってＸ軸モータ110 の回転が制御（モータの種類によって電流制御または電圧制御）される。
【０００６】
Ｙ軸駆動回路も同様に，減算器121，位置制御器122，減算器123，速度制御器124，電流／電圧制御器125，エンコーダ126，位置検出器127，速度検出器128によって構成される。
【０００７】
これらの駆動回路の一部はプログラムされたコンピュータによって実現されることもある。
【０００８】
この２軸直交ロボットを，図20に実線で示すように，まずＸ軸に沿って点（位置）Ｐ１からＰ２まで動かし，次にＹ軸に沿って位置Ｐ２からＰ３まで動かす（たとえばロボットの先端，またはロボットに把持された機器もしくは器具を移動させる）とする。この場合に，最も典型的な移動命令（これを第１の移動命令という。たとえば後述するMOVP命令など）にしたがうと，Ｘ軸モータ110とＹ軸モータ120は，図21に示すように速度制御される。図21は横軸を時間(t)，縦軸を速度(v)にとってある。まず，点Ｐ１から点Ｐ２に向って移動するようにＸ軸モータ110 を加速し，次に定速運転し，点Ｐに近づいたら減速して，点Ｐに停止させる。速度(v)は台形状に変化する（Ｙ軸モータ120は静止している）。その後，点Ｐ２からＹ軸モータ120 を加速し，一定速度に達したら定速運転に切換え，点Ｐ３に近づくと減速して点Ｐ３で停止させる。Ｘ軸モータ110は停止したままである。
【０００９】
上記のような動作は，点Ｐ２で瞬間的であるにせよ一旦停止するし，停止のために減速し，停止後加速するので，たとえば液体の供給，塗布，溶接，はんだ付け等の作業のためには必ずしも適切ではない。このような作業のためには，ロボットは点Ｐ２付近で多少減速，加速することはあっても，停止せずに連続的に移動を継続することが好ましい。
【００１０】
連続的に移動を継続する他の典型的な移動命令（これを第２の移動命令という。たとえば後述するPATH命令など）による制御は図22に示すように行なわれる。すなわち，ロボットが点Ｐ２に近づいたときに，Ｘ軸モータ110を減速させながら，Ｙ軸モータ120を始動して加速するように速度制御を行うものである。この制御ではロボット（上述のようにロボットの先端またはロボットに把持された機器もしくは器具）は点Ｐ２付近で停止することはないが，Ｘ軸モータ110が停止する前にＹ軸モータ120が動くので，ロボットの移動軌跡は図20に破線で示すように点Ｐ２を通らずに円弧を描く。あらかじめ予定した経路の一部である点Ｐ２を通らずに近廻りをしてしまうので，上述した液体の供給，塗布作業等においては必ずしも適切でない場合がある。
【００１１】
点Ｐ２の付近で液体の供給量や塗布量を制御したり，移動速度を調整したりするという方策もあるが，あらかじめ予定した経路にできるだけ近づけて移動させるように制御すること，そのために，より適切なロボット言語プログラムを作成（または生成）できるようにすることが望まれる。
【００１２】
なお，簡単のために２軸直交ロボットの例で説明したが，多軸直交ロボット，多関節ロボット等においても同様の問題は起こりうる。また，コントローラによっては，一つの移動命令で，設定されたモードに応じて，図21のように制御したり，図22のように制御したりするものもある。
【００１３】
液体の供給，塗布等の作業を行うロボットを制御するためのロボット言語プログラムの作成を移動経路図等の描画作業と並行して行うようにした装置が特許文献１に記載されている。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特許第５１８７９１１号公報
【００１５】
しかしながら特許文献１には，一旦作成したロボット言語プログラムにしたがってロボットを試行動作させ，その試行動作の軌跡に応じて，ロボット言語プログラムを修正し，ロボットの移動経路を予定した経路にできるだけ近づけるようにすることまでは記載されていない。
【発明の概要】
【００１６】
この発明は，少なくとも２軸を同時に駆動して停止することなく連続的に移動するようにロボットを制御するロボット言語プログラムに従う試行動作の軌跡に応じて，移動経路を調整できるようにした，ロボット言語用プログラムの修正装置，方法およびプログラムを提供するものである。
【００１７】
この発明によるロボット言語プログラムの修正装置は，ロボットの第１の移動経路を表示装置の表示画面に表示する第１の経路表示制御手段，前記第１の移動経路に対応するロボット言語プログラムに基づくロボットの第１の試行動作軌跡を表わすデータを生成してこのデータに基づいて第１の試行動作軌跡を，上記第１の移動経路とともに，表示画面に表示する第１の試行動作軌跡表示制御手段，入力される修正経路（第２の移動経路）を受付けるとともに該修正経路を表示画面に表示する第２の経路表示制御手段，受付けた修正経路に基づいて前記ロボット言語プログラムを修正するプログラム修正手段，および修正されたロボット言語プログラムに基づくロボットの第２の試行動作軌跡を表わすデータを生成してこのデータに基づいて第２の試行動作軌跡を，少なくとも前記第１の移動経路とともに，表示画面に表示する第２の試行動作軌跡表示制御手段を備えるものである。
【００１８】
一実施態様では，前記第１の試行動作軌跡表示制御手段は，前記第１の移動経路に対応するロボット言語プログラムに基づくロボットの第１の試行動作軌跡を表わすデータを生成する第１の試行動作手段を含む。また，前記第２の試行動作軌跡表示制御手段は，修正されたロボット言語プログラムに基づくロボットの第２の試行動作軌跡を表わすデータを生成する第２の試行動作手段を含む。
【００１９】
これらの第１，第２の試行動作手段は，必ずしも実際にロボットを駆動するものでなくてもよい。たとえば，ロボット言語プログラムを解釈してロボットの駆動回路に与えるべき制御指令（たとえば位置指令）を発生する制御プログラムまたは制御装置であってもよい。この場合に，発生する位置指令の表わす位置データが試行動作軌跡を表わすデータとなる。この場合に，遅延手段を含む程度の簡単なモデル，またはロボット駆動回路のモデル等に制御指令を与え，その応答（ロボットの位置データ）を取得し，この位置データを試行動作軌跡を表わすデータとしてもよい。もちろん，実際にコントローラを動作させたり，コントローラによりロボット駆動回路を駆動して，その応答（フィードバックされる位置データ）を取得してこの位置データを試行動作軌跡を表わすデータとしてもよい。
【００２０】
好ましい一実施態様では，表示画面に表示される第１の移動経路に基づいて前記ロボット言語プログラムを作成するロボット言語プログラム作成手段を備える。この場合に，前記プログラム修正手段を前記ロボット言語プログラム作成手段に含ませておくとよい。前記ロボット言語プログラム作成手段そのものが前記プログラム修正手段であってもよい。
【００２１】
望ましくは，前記第１の移動経路および前記修正経路（第２の移動経路）を入力する入力手段を備える。入力された移動経路に基づいて前記ロボット言語プログラム作成手段がロボット言語プログラムを作成または修正するとよい。
【００２２】
この発明によると，第１の移動経路に対応するロボット言語プログラムに従う第１の試行動作軌跡を表示画面に表示して，第１の試行動作軌跡が，所望の第１の移動経路に適切に沿っているかどうかを判断することができる。そして必要ならば修正経路の入力を受付けて，修正経路に基づいて先のロボット言語プログラムを修正し，この修正されたロボット言語プログラムに従う第２の試行動作軌跡を，第１の移動経路とともに表示している。したがって，修正後の第２の試行動作軌跡が，所望の第１の移動経路に適切に沿っているかどうかを確認して，経路の修正の適否，修正ロボット言語プログラムの適否を判断することができる。経路の修正は何回行ってもよく，最終的に，希望する第１の移動経路に最も良く適合する試行動作軌跡を描くロボット言語プログラムを得ることができる。好ましくは，上記に加えて，修正された経路も表示するとよい。この発明はロボット言語プログラム修正方法およびプログラムも提供している。
【図面の簡単な説明】
【００２３】
【図１】ロボット言語プログラム自動作成（修正）装置（システム）の機能的構成を示すブロック図である。
【図２】ロボット言語プログラム自動作成（修正）装置（システム）における全体的な動作を示すフローチャートである。
【図３】ロボット言語プログラム自動作成（修正）ルーチンを示すフローチャートである。
【図４】移動経路を表わすデータを手動で入力するためのユーザインターフェイス画面の初期画面を示す。
【図５】作業原点編集ウィンドウを示す。
【図６】第１番目の直線を入力したときの画面を示す。
【図７】13の直線，１つの円弧，１つの円による移動経路を入力したときの画面を示す。
【図８】作図された移動経路を拡大して示すものである。
【図９】ロボット言語プログラム作成処理に進む画面を示す。
【図１０】経路作図処理により作成した経路を表わすデータ（中間データ）の一例を示す。
【図１１】図10に示す移動経路データに基づいて，その移動経路に沿ってロボットを動かすＳＥＬプログラムの一例を示す。
【図１２】図11のＳＥＬプログラムに付随するポジションデータを示す。
【図１３】アーチモーションを説明するための図である。
【図１４】作図した経路と試行動作軌跡との表示画面を示す。
【図１５】図14の一部の拡大図である。
【図１６】修正後の作図データの中間データの例を示す。
【図１７】修正後のＳＥＬプログラムのポジションデータを示す。
【図１８】修正前の作図経路，修正後の作図経路および修正後の試行動作軌跡を示す。
【図１９】Ｘ軸とＹ軸を駆動する一般的なロボット駆動回路の一例を示すブロック図である。
【図２０】２軸直交ロボットの移動経路をＸＹ座標上で示す図である。
【図２１】図20に示す移動経路に沿ってＸ軸方向に移動し，点Ｐ２で一旦停止してから次にＹ軸方向に移動するときのＸ軸，Ｙ軸の速度線図を示す。
【図２２】図20に示す移動経路に沿って点Ｐ２で停止せずに連続的に移動するときのＸ軸，Ｙ軸の速度線図を示す。
【実施例】
【００２４】
(1) システム構成
図１はロボット言語プログラム自動作成（修正を含む）装置（システム）の機能的構成を示すものである。図19に一例を示すようなロボットの駆動回路30やロボット言語プログラムを解釈して駆動回路30に指令（位置指令など）を出力するコントローラ20が破線で示されている。駆動回路30にはモータ，エンコーダ等を含ませてもよい。
【００２５】
ロボット言語プログラム自動作成（修正）装置10は，プログラムされたコンピュータシステムによって実現される。コンピュータシステムには，たとえば，いわゆるＰＣ（パーソナルコンピュータ），ロボット用のティーチング装置等も含まれる。ロボット言語プログラム自動作成装置10は，機能的に分けると，コンピュータシステムの中枢である処理部11，入力部12，出力部13，表示部14および記憶部15から構成される。表示部14は，入力部12の入力機能および出力部13の出力機能の一部を兼ねるが，表示機能が特に重要なので，これらの各部12，13とは別に表示部14として明示されている。
【００２６】
入力部12は，キーボード，マウス等の通常の入力装置に加えて，ＵＳＢメモリ，ＣＤ−ＲＯＭ等に記憶されたデータを読込む媒体リーダ，有線，無線を問わず通信によりデータ（命令を含む）を受信する通信装置等を含む。出力部13は入力部12と一部を共通にする。すなわち，出力部13は各種データ等を記憶媒体に書込む媒体ライタ（媒体リーダと一部兼用可能），通信（送信）により出力する通信装置（入力部22の通信装置と兼用してもよい）を含む。さらに出力部13は，各種データや処理結果を印刷して出力するプリンタを備える。
【００２７】
表示部14は，入力部12のキーボード，マウス等と協働してロボットの移動経路や修正経路の入力と表示，メニュー画面，プルダウンリスト等の表示を通して各種設定，命令，データ等の入力，ロボットの試行動作の軌跡の表示等のユーザインターフェイスとしての各種入力，表示を行う。
【００２８】
記憶部15は，作成した，または入力されたロボット言語プログラム（以下，出願人の命名によるＳＥＬプログラムの用語を使用する），ＳＥＬプログラムに付随しその一部をなすポジションデータ，ロボット言語プログラム作成（修正）プログラム等の各種プログラムや，ユーザによって入力された経路データ（修正経路データを含む），試行動作によって得られる試行動作軌跡データ等の各種データ等を記憶するとともに，作業エリアとしても用いられる。記憶部15は，半導体メモリ，ハードディスク等により実現される。
【００２９】
処理部11は，主に，ロボット言語プログラム作成（修正）プログラムにしたがって処理を行い，第１の移動経路，修正経路の入力の受付処理（入力処理）（手段），第１の経路の表示制御処理（手段），ロボット言語プログラムの作成（修正）処理（手段），第１，第２の試行動作処理（手段），第１，第２の試行動作軌跡表示制御処理（手段）等を行う（または上記各手段として機能する）。これらの処理の過程で，処理部11は入力部12または表示部14から各種データ，命令等を受取り，出力部13，表示部14に各種データを出力（表示）し，記憶部15からのデータやプログラムの読取り，書込みを行う。
【００３０】
ロボットの移動経路や試行動作軌跡は，ロボットの特定の箇所（たとえばロボットの動作部の先端部）やロボットに把持された，または取付けられた機器，器具，部材等の特定点（箇所）の移動経路，移動軌跡を指す。
【００３１】
(2) 経路作図とロボット言語プログラムの作成
図２はロボット言語プログラム自動作成装置10における全体的な動作を示すフローチャートである。まずユーザは表示部14の表示画面上で自分の希望する（または目標とする）移動経路（第１の移動経路）を入力する。すなわち，装置10はユーザが経路を入力するためのユーザインターフェイスを表示画面上に提供し，ユーザが入力する経路を表わすデータを取込む（経路作図）（Ｓ11）。続いて装置10は，入力された移動経路データに基づいてロボット言語プログラム（ＳＥＬプログラム）を自動的に作成する（Ｓ12）。ロボット言語プログラム自動作成処理ルーチンが図３に示されている。
【００３２】
まず移動経路の入力からロボット言語プログラム作成までの処理（Ｓ11，Ｓ12，Ｓ21，Ｓ22）について説明する。
【００３３】
移動経路の入力には，手動入力モードと，ＤＸＦデータ取込みによる入力モードとがある。
【００３４】
最初に，移動経路を表わすデータを手動で入力する場合（手動入力モード）について図４から図７を参照して説明する。
【００３５】
図４において，表示部14の表示画面には，初期画面が表示される。この画面の半分以上の領域は所望の移動経路を作図するエリアであり，ます目（グリッド線）が薄く描かれ，かつ左側および上部に目盛が表わされている。横方向がＸ軸，縦方向がＹ軸であり，左下の隅が座標原点（０，０）（Ｐ10）である。この実施例では，目盛は 1.000（有効数字下３桁）刻みであり，ます目は10.000刻みである。現実のロボットの移動についての距離の単位は１mmでも（この実施例では目盛の 1.000が１mmに対応する），１cmでも，他の長さでもよい。
【００３６】
座標原点（０，０）（Ｐ10）の位置が入力部12のマウスで右クリックされると，作業メニューがポップアップされる。作業メニューには，ＤＸＦ図形取り込み，始点／終点入れ替え，図形削除，図形編集，参考図形リストへ取り込みがある。
【００３７】
この作業メニュー中の「図形編集」がクリックされると，図５に示すような作業原点編集ウィンドウが表示画面に現われる。このウィンドウでは，作業原点Ｐ11の座標が，入力部12のキーボード，マウス等を用いて入力される。この例では，Ｘ座標が 5.000（mm），Ｙ座標が6.000（mm），Ｚ座標が100.000（mm）である。Ｚ座標は上から下に向って正方向に設定される。Ｚ軸の最も高い位置がＺ座標の原点（Ｚ＝０）である。必要に応じて速度，加速度，減速度も入力される。速度は図21，図22に示す台形のグラフの上辺に当る等速運転時の速度である。加速度は台形のグラフの上り勾配，減速度は下り勾配に相当する。速度，加速度，減速度が入力されないときにはデフォルト値が用いられる。
【００３８】
図４または図６の画面に示されるように，移動経路の作図エリアの上には，描画図形（線）の要素の種類（タイプ）（またはアクションの種類）を示す４つのアイコンが配置されている。それらは点を示すアイコン（点の図形），直線（直線移動）を示すアイコン（斜めの直線の図形），円弧（円弧移動）を示すアイコン（半円の図形），円（円移動）を示すアイコン（円の図形）である。
【００３９】
ユーザによって１本目の直線描画のアイコンがクリックされ，さらに１本目の直線ＰＡ１の始点位置Ｐ12と終点位置Ｐ13が順次画面の作図エリア上でクリックされる。ここでは，始点位置Ｐ12（Ｘ，Ｙ座標）として（10，80）が，終点位置Ｐ13として（15，130 ）がクリックされたものとする。作図エリア上にはクリックされた始点と終点とを結ぶ直線ＰＡ１が表示される。先に入力された作業原点Ｐ11から始点Ｐ12までは破線の直線が描かれている。
【００４０】
さらに，始点Ｐ12のＺ座標を入力するために，描画された直線ＰＡ１をクリックして選択し，右クリックする。これによりポップアップされる作業メニュー中の図形編集をクリックして図５のようなウィンドウを呼び出し，Ｚの座標を 150と入力する。Ｚ座標は一旦入力された後は，Ｚ座標を指定して入力しない限り，先に入力されたＺ座標の値がそのまま用いられる。終点（15，130 ）（Ｐ13）についてはＺ座標が入力されないので，先のＺ座標が用いられる。
【００４１】
図６の表示画面の左側に示すように，既入力の「0001：作業原点移動」について作業原点の座標値と，「0002：直線移動」について始点と終点の座標値が表示される。終点のＺ座標は入力されないので，＊印が表示されている。
【００４２】
直線描画のアイコンを１本目の直線ＰＡ１についてクリックして直線描画の命令を既に入力済であるから，２本目以降の直線については，その始点Ｐ13と終点Ｐ14の位置を画面上でクリックするだけで，２本目の直線ＰＡ２であることと，それらのＸ，Ｙ座標を入力することができる。２本目の直線の始点位置（15，130 ）（これは１本目の直線の終点位置と同じ）（Ｐ13）と終点位置（25，130 ）（Ｐ14）が入力される。同様に３本目〜13本目の直線（ＰＡ３〜ＰＡ13）の始点と終点の位置座標（Ｘ，Ｙ座標のみ）が入力される。
【００４３】
13本目の直線ＰＡ13の終点（Ｐ25）に続いて円弧の移動経路を作図するとする。この場合には，円弧描画のアイコンがクリックされ，その後，円弧の始点位置（ 130，70）（Ｐ25），円弧の終点位置（130，100）（Ｐ26）および円弧の通過点位置（ 143，83）（Ｐ27）が画面上でその位置をカーソル（ポインティング・デバイス）等で指定してクリックすることにより入力され，これらの入力により円弧ＣＡ１の図形が定まる。
【００４４】
円弧ＣＡ１の終点Ｐ26に続けて，円ＣＡ２の移動経路を作図するとする。円描画のアイコンをクリックした後，円の始点位置（130，100）（円弧の終点位置でもある）（Ｐ26）が画面上でクリックされ，続いて円の通過点２位置（141，130）（Ｐ29），円の通過点１位置（120，118）（Ｐ28）が画面上で指示されてクリックされることにより，円ＣＡ２の経路についてのデータが入力される。円弧の指定は，円の中心位置座標，半径および始点または終点位置の座標により入力することもできる。また，円の指定は，たとえば中心位置座標と半径で入力することもできる。ロボット言語プログラムの構造に合致した図形（移動経路）の入力（定義）を行なうことが望ましいが，ロボット言語プログラムの命令で直接的に用いる座標を入力しなくても，移動経路の形と移動経路を一義的に定める主要な通過点，特徴点等が入力されればよい。
【００４５】
このようにして，ジグザグに描かれた13の直線（ＰＡ１〜ＰＡ13），それに続く１つの円弧ＣＡ１，さらにそれに連続する１つの円ＣＡ２による移動経路が図７に示すように入力され，定義されたことになる。図７の画面の左側には，図６の状態以降に入力された線種（移動経路の種類，タイプ）とそれを定める座標値が表示される。「0003：直線移動」，から「0014：直線移動」，「0015：円弧移動」，「0016：円移動」までである。これらの移動経路を定める座標値はプルダウンリストにより表示可能である。
【００４６】
移動経路の作図は，このようにユーザが手動で行うことが可能であるが，ＣＡＤデータ（ＤＸＦデータ）を用いて半自動で行うこともできる（ＤＸＦデータ取込みによる入力モード）。
【００４７】
ＤＸＦデータは既に作成されて記憶部15内に格納されているものとする。手動入力モードの場合と同じように，初期画面（図４）において，作図エリアの左下隅（０，０）の位置にある作業原点Ｐ10が右クリックされると，作業メニューがポップアップされるので，「図形編集」をクリックして，座標位置（５，６，100 ）（Ｐ11）を入力する（図５と同じ）。
【００４８】
メニューバーの「ファイル(F) 」をクリックし，続いて順次表示されるメニュー中の「ファイルを開く(O) 」，「ＤＸＦファイル(D) 」をクリックすると，ＤＸＦファイルが開かれ，その内容（ＤＸＦ図形）が移動経路作図エリアに表示される。このＤＸＦ図形は図７の移動経路作図エリアに表示されているのと同じようなものである。
【００４９】
ＤＸＦデータ取込みによる入力モードでは，表示部14の表示画面に表示されたＤＸＦ図形をその要素（直線，円弧，円など）ごとに確認または必要に応じて修正するものである。すなわち，ＤＸＦ図形がユーザの意図に沿って描かれているか，誤りはないか，ＳＥＬ言語プログラムの作成のために適切な表現（始点，終点，中間点など）となっているか等をチェックし，要すれば，修正する。
【００５０】
ユーザは，ＤＸＦ図形中の１本目の直線ＰＡ１をクリックして選択する。そして，１本目の直線が適切であれば，右クリックでポップアップされる作業メニュー中の「ＤＸＦ図形取込み」をクリックする。これにより，ＤＸＦ図形中の１本目の直線ＰＡ１を表わす図形データ（直線移動であること，始点Ｐ12，終点ＰＡ13の座標）が確定する。
【００５１】
Ｚ座標を入力するために，再び１本目の直線ＰＡ１をクリックして選択する。右クリックにより現われる作業メニュー中の「図形編集」をクリックし，Ｚ位置座標として 150を入力する。前述したように，以降Ｚ座標値を入力しない限り，同じＺ座標値が使用される。
【００５２】
２本目の直線ＰＡ２をクリックして選択し，２本目の直線が適切であれば，右クリックのポップアップメニューの「ＤＸＦ図形取込み」をクリックする。以降，すべての図形要素について同様に選択，「ＤＸＦ図形取込み」のクリックを繰り返す。修正したい図形要素があれば，手動入力モードの場合と同様に適切な図形要素と座標を入力して（位置のポインティングのみならず数値で入力することもできる）入力した図形要素データで先のＤＸＦデータの該当データを書き替えればよい。
【００５３】
以上で，経路作図の入力操作と対応するコンピュータ処理（図２，Ｓ11）が終了する。作図された経路は図８に拡大して分りやすく示されている（第１の経路表示制御手段）。
【００５４】
次に，ロボット言語（ＳＥＬ）プログラムの作成処理に進む（図２，Ｓ12）。図９に示すように，ユーザは，表示部14の表示画面上のメニューバーの「プロジェクト(P) 」をクリックして現われるメニュー中の「ＳＥＬプログラム生成(G) 」をクリックする。すると，処理部11は，自動的にＳＥＬプログラムとポジションデータを生成する。
【００５５】
図10は先に説明した経路作図処理で作成された経路を表わすデータ（中間データ）である。図11はこの経路データに沿ってロボットを移動させるように，該経路データに基づいて作成されたＳＥＬプログラム，図12はこのＳＥＬプログラムに付随する（ＳＥＬプログラムの一部を示す）ポジションデータである。
【００５６】
ＳＥＬプログラムの自動作成の説明に先だち，出願人が構築しかつ命名したＳＥＬプログラムのいくつかの命令およびポジションデータについてこの実施例の理解に必要な範囲で，図11および図12を参照して説明しておく。
【００５７】
ＳＥＬ言語の構造にしたがうと，「命令（Instruction ）」の１ステップは，「拡張条件部（AND・OR） 」，「入力条件部（入出力・フラグ）」，「命令・宣言部」および「出力部」から構成される。以下，「命令・宣言部」について説明する。
【００５８】
「命令・宣言部」は，命令・宣言（以下，単に「コマンド」という），操作１（以下，「オペランド１」という）および操作２（以下，「オペランド２」という）から構成される。
【００５９】
図11には，図10に示される中間データ（経路データ）にしたがって自動作成された（Ｓ12）ＳＥＬプログラムデータの一例が示されている。最も左側の番号（NO.１〜NO.47）は命令（Instruction）の番号（いわばステップNO.）であり，各番号ごとに１ステップ命令が記述されている。コマンドはCmndと略記され，オペランド１，オペランド２はそれぞれOperand1，Operand2に表記されている。さらに，必要なものについてコメント（Comment ）が記述されている。
【００６０】
NO.１のコマンド「BTOF 300」は，出力ポート・フラグ操作のうち，オペランド１の「300」で示された出力ポートのフラグをオフせよという命令である。この実施例は，ロボットの先端（Ｚ軸の先端）にノズルを取付け，このノズルにより液体（接着剤，インキ等）を上述した経路に沿って塗布する作業を行うものである。出力ポート300 はノズルによる液体の吐出のオン，オフを制御するポートである。したがって，コマンド「BTOF 300」は塗布指令オフ（OFF）の意味である。
【００６１】
NO.２ のコマンド「GRP」はグループ軸設定命令で，コマンド「GRP」に続くオペランド１の「111 」（３ビット列）で表わされる軸パターンのポジションデータ（図12に示すもので，詳しくは後述する）だけを有効にすることを意味する。軸パターンは，この実施例では，左から第３軸，第２軸，第１軸（以下，単に「３軸」，「２軸」，「１軸」という）の順であり，上述したＸ，Ｙ，Ｚ軸で表現すると，Ｚ，Ｙ，Ｘ軸の順である。「GRP 111」は，Ｚ，Ｙ，Ｘ軸（３，２，１軸）を有効にせよという命令である。
【００６２】
NO.３のコマンド「ACHZ」はアーチモーションＺ軸宣言で，アーチモーション（後述する）Ｚ方向の軸NO.を指定するものである。「ACHZ 3」は３軸がアーチモーションのＺ軸であることを宣言するものである。
【００６３】
NO.４，NO.５のコマンド「HOME」は，オペランド１の軸パターンで指定された軸について原点復帰を指令するものである。軸パターンのビット列は上述したように３，２，１軸の順であるから，NO.４の「HOME 100」は３軸（Ｚ軸）についての原点復帰指令，NO.５の「HOME 011」は，２軸と１軸（Ｙ，Ｘ軸）についての原点復帰指令である。
【００６４】
ここで原点復帰における「原点」は機械原点の意味であり，機械軸（モータ軸やねじ軸）の動作上の出発点となる位置である。概念的には，上述した座標原点Ｐ10（これは経路作図上の原点）や作業原点Ｐ11（これは塗布作業の原点，この実施例では塗布を開始する位置を示す）とは異なる（結果的に，または実際上，これらが同じ位置になってもよい）。
【００６５】
NO.７の「GRP 100」は３軸（Ｚ軸）を有効にすべきことを示す。NO.９の「GRP 11」は，正確には「GRP 011」の意味で（３軸について０を省略している），２軸，１軸（Ｙ，Ｘ軸）を有効にすべきことを示す。
【００６６】
NO.８の「MOVP」はＰＴＰポジションデータ指定移動を示すコマンドである。ＰＴＰはPoint To Pointの略である。NO.10のコマンド「MOVL」はポジションデータ指定移動を示す。
【００６７】
コマンドMOVLとMOVPはいずれも現在位置から目標位置まで移動して目標位置で停止する動作を意味するが，移動の仕方が異なる。簡単の為に２次元ＸＹ座標系で考える。現在位置を（ｘ1，ｙ1），目標位置を（ｘ2，ｙ2）とする。現在位置と目標位置とのＸ軸上の差（ｘ2−ｘ1）とＹ軸上の差（ｙ2−ｙ1）とが異なるものとする。たとえば（ｘ2−ｘ1）の方が（ｙ2−ｙ1）よりも大きいものとする。Ｘ軸移動はＸ軸モータで，Ｙ軸移動はＹ軸モータで駆動されるとする。
【００６８】
仮にＸ軸移動とＹ軸移動とが同じ速度で行なわれるとすると，Ｙ軸の方が先に目標座標位置ｙ2に到着し，その後にＸ軸上の目標位置ｘ2に着く。必ずしも同じ速度でなくてもよいが，いずれにしても，現在位置（Point）から出発して目標位置（Point）まで（To）到着すればよく，Ｘ軸，Ｙ軸が必ずしも同時に到着しなくてもよい移動をＰＴＰ移動という（別の用語を使うと，次に述べる「補間」なしの移動）。これがコマンドMOVPによる移動である。
【００６９】
Ｘ軸の移動による目標位置（ｘ2）への到着とＹ軸の移動による目標位置（ｙ2）への到着とが，必ず，同時になるように，Ｘ軸移動の速度（加減速度を含む）とＹ軸移動の速度（加減速度を含む）とを調整することを「補間」という。補間を伴って出発位置から目標位置まで移動することがMOVLコマンドによる移動である。
【００７０】
コマンドMOVP，MOVLのいずれにおいても目標位置はポジションデータで与えられる。ポジションデータは，図12に示すように，一群のＸ，Ｙ，Ｚ座標値，速度（Vel ），加速度（Acc）および減速度（Dcl）を含む。座標値は目標位置，始点，終点，その他の移動に関する位置を示す。速度は，たとえば図21，22に示す速度線図における一定速度の値，加速度は上り勾配，減速度は下り勾配を表わす。これら一群のデータには識別番号が付けられている。それは図12に示すNO.51，NO.52等で，これをポジションナンバー（ポジションNO.と略記する）という。
【００７１】
ＳＥＬプログラムにおいて，ポジションデータは，コマンドのオペランド１，２のいずれか一方または両方に，それを特定するポジションNO. を用いて設定される。ポジションNO. は，ポジションデータに比べれば，データ量がはるかに少ないので，ＳＥＬプログラム中にポジションNO. を記述することにより，ＳＥＬプログラムが簡潔になる。特に，１つのＳＥＬプログラムにおいて，同じポジションデータを複数回使用する場合に，図12に示すポジションデータテーブルを作成しておきさえすれば，同じポジションデータを複数回記述することなく，ポジションNO. を複数回記述すれば良いから，データ量の削減の効果は大きい。
【００７２】
NO.７のコマンド「GRP」とNO.８のコマンド「MOVP」は対をなす。NO.７のコマンド「GRP 100」によってＺ軸が有効とされ，有効とされたＺ軸について，NO.８のコマンド「MOVP 51」によって，ポジションNO.51のポジションデータ（Ｚ軸の座標値のみ）によって表わされるＺ軸の座標値（図12を参照すると，Ｚ座標0.000 ）までＰＴＰ移動せよと指令される。
【００７３】
NO.９のコマンド「GRP」とNO.10のコマンド「MOVL」も対をなす。NO.９のコマンド「GRP 11」によってＹ軸とＸ軸が有効とされ，NO.10のコマンド「MOVL 56」によって，ポジションNO.56 のポジションデータによって表わされる位置（Ｘ＝5.000，Ｙ＝6.000）に補間を伴う移動が行なわれ，その位置で停止する。続いて，NO.11の「GRP 100」によってＺ軸が有効とされ，NO.12の「MOVP 56」によってＺ＝100.00の位置にＺ軸のみ移動してその位置で停止する。最後にNO.13の「GRP 111」によって，Ｚ，Ｙ，Ｘ軸が有効とされる。ロボットは作業原点Ｐ11の位置にある。
【００７４】
NO.15のコマンド「ATRG」（アーチトリガ設定）およびNO.16のコマンド「ARCH」（アーチモーション）については，図13を参照して説明する。NO.３ の「ACHZ」によってＺ軸方向のアーチが設定されている。図13は主にＺ軸上の動きを表わすものである。
【００７５】
コマンド「ATRG」のオペランド１（ポジションNO.52 ）によって始点アーチトリガの位置（Ｚ軸上の位置）が，オペランド２（ポジションNO.53 ）によって終点アーチトリガの位置（Ｚ軸上の位置）が規定される。始点アーチトリガは，アーチモーションＺ軸以外の方向（この実施例ではＸ軸，Ｙ軸方向）への移動を開始する位置であり，終点アーチトリガはＺ軸以外の方向の移動を完了してから通過する位置である。
【００７６】
コマンド「ARCH」のオペランド１（ポジションNO.57 ）はアーチモーションの終点を規定し，オペランド２（ポジションNO.54 ）はアーチモーションで通過すべきＺ軸上の最上位点を示す。上記において，オペランド１，２はポジションNO. によって指定される位置である。
【００７７】
したがって，コマンド「ATRG 52 53」とコマンド「ARCH 57 54」によって，ロボットは，始点（この実施例では先に到達した作業原点Ｐ11）からＺ軸方向に上昇を開始し，始点アーチトリガのＺ位置に至ると，Ｘ，Ｙ軸方向への移動を開始し，アーチモーション最上位点（Ｚ軸上の位置）を通過し，Ｘ，Ｙ軸方向への移動を完了してから，終点アーチトリガ近傍を通過して下降を続け，終点（ポジションNO.57 の座標位置）に到達して停止する。これは，直線移動ＰＡ１の始点Ｐ12の位置である。すなわち，ロボットは，作業原点Ｐ11から始点Ｐ12までアーチモーションで移動することになる。
【００７８】
続いて，コマンド「BTON」により，オペランド１によって指定される出力ポートNO.300のフラグがオンされ，ノズルより流体が吐出される。液体の吐出の開始とともに次のコマンド「PATH」によりパス移動を行う。一般にコマンド「PATH」は，そのオペランド１で開始ポジションを，オペランド２で終了ポジションを指定するもので，この場合には，開始ポジションから終了ポジションまで連続移動するように指令する。オペランド１とオペランド２に同じポジションNO.を記述すると，「PATH」はそのポジションNO.の位置を通過する連続移動を行うように指令するものとなる。
【００７９】
NO.18のコマンド「PATH 58 58」により，先のポジションNO.57（始点Ｐ12）の位置からポジションNO.58 の位置（Ｐ13の位置）に移動し（Ｘ，Ｙ軸方向のみの移動）（経路ＰＡ１），ここで停止することなく，さらにNO.20 のコマンド「PATH 59 59」により，ポジションNO.58（点Ｐ13）の位置を通過して連続的にポジションNO.59の位置（点Ｐ14に対応）に向い（経路ＰＡ２），さらにNO.22のコマンド「PATH 60 60」によりポジションNO.59（Ｐ14）の位置を連続的に通過してポジションNO.60 の位置（点Ｐ15相当）に向って（経路ＰＡ３）この位置を通過していくことになる。このようにして連続するコマンドPATHにより，上述したジグザグの経路に沿って連続的に移動しながら液体の吐出，すなわち塗布が行なわれていく。この間にＺ軸上の位置は変化しない。
【００８０】
そして，直線の経路ＰＡ13に沿う移動が終了すると，コマンド「ARC2」による円弧移動に連続的に（停止することなく）移る。コマンド「ARC2」ではオペランド１に通過ポジションのポジションNO.が，オペランド２に終了ポジションのポジションNO.が記述される。したがって，コマンド「ARC2 71,72」により，経路Ｐ13の終点Ｐ25から停止することなく円弧移動を開始し，ポジションNO.71 で指定される位置Ｐ27（Ｘ，Ｙ座標のみ）を通り，ポジションNO.72で指定される位置Ｐ26に至る（円弧ＣＡ１）。
【００８１】
続いて，コマンド「CIR2」により円移動に連続的に移る。コマンド「CIR2」はオペランド１，２に通過ポジションのポジションNO. を記述するもので，この順序で通過し，起点に戻って停止する円運動を指令するものである。オペランド１，２のポジションNO. を入れ替えれば逆廻りとなる。コマンド「CIR2 73,74」により，円弧運動の終了位置Ｐ26を起点としてポジションNO.73，74 （Ｐ28，Ｐ29）で特定される位置（Ｘ，Ｙ座標のみ）を通る円を描く移動を行い，起点Ｐ26に戻って停止する。この後，コマンドBTOFにより出力ポートNO.300のフラグがオフされ，液体の吐出が終る。すなわち，塗布作業が終了する。
【００８２】
経路作図処理（Ｓ11）により得られる中間データは図10に示すように，アクション（移動，図形または要素の種類）とその始点，終点，通過点などにより構成される。作成されるＳＥＬプログラムの命令は，図11，図12に示すように，コマンドとオペランドを含み，オペランドには主にポジションデータのポジションNO. が記述される。これらを対比して分るように，ＳＥＬプログラムの作成処理は，移動経路を示すアクションにコマンドを対応させ，オペランドのポジションデータ（ポジションNO. ）に移動経路の始点，終点，通過点などの位置データを対応させることにより処理部11により自動的に行なわれる。
【００８３】
移動経路を示すアクション（図形の種類）とＳＥＬプログラムのコマンドとを対応させたコマンドの表をあらかじめ作成して記憶部15に格納しておくとよい。上の説明から分るように，移動経路を示すアクションが直線移動の場合には，これに対応するＳＥＬプログラムのコマンドはMOVP，MOVL，PATH等である。MOVP，MOVLは移動後停止する動作を指示するコマンドであるが，PATHはオペランドで示された点を停止せずに通過していくことを示す。ロボットの単なる移動の場合にはコマンドMOVP，MOVL等がふさわしく，液体の塗布作業等にはコマンドPATHがふさわしい。作図において，ロボットの移動は破線で描画し，塗布作業移動は実線で描画しておけばこれらの区別は可能である。
【００８４】
ＳＥＬプログラムのオペランドに記述する位置データ（ポジションデータ）は，コマンドに依拠する。たとえばMOVP，MOVLの場合には目標位置（移動の終点）であり，PATHの場合には通過点（移動の終点）であり，ARC2の場合には通過点と終点であり，CIR2の場合には２つの通過点である。経路作図処理では，ＳＥＬ言語のオペランドが要求する点を指定しておくことが好ましい。もっとも，言語によって，たとえば円移動の場合，円の中心と半径を指定するものがあった場合には，経路作図処理で特定された３つ以上の点に基づいて円の中心と半径を演算によって求めればよい。
【００８５】
ＳＥＬ言語に基づいて説明したが，多種多様なロボット言語が存在するので，そのロボット言語が要求する構造にあわせて，作図処理で得られた経路データをコマンドとオペランド（より一般的には，命令とデータ）に変換すればよい。場合によっては，一つの経路に２つ以上のコマンドが対応することもあるし，２つ以上の経路を１つのコマンドで表現することもできる。
【００８６】
いずれにしても，ロボット言語プログラムの自動作成処理（図２，Ｓ12）においては，経路作図処理で得られたアクションをロボット言語プログラムの命令（コマンド）に変換し（上述のように１対１とは限らない）（図３，Ｓ21），経路作図処理により得られた座標データをロボット言語プログラムのオペランド（データ）に変換（置換または演算）する（図３，Ｓ22）ことにより実現される。なお，図11に示すＳＥＬプログラムのNO.１〜NO.13のように，機械原点復帰動作，作業原点移動などの当然に必要なルーチンについては，あらかじめその部分のＳＥＬプログラムを作成しておくようにしてもよい。
【００８７】
(3) 試行動作と経路およびロボット言語プログラムの修正
ＳＥＬプログラム（ロボット言語プログラム）の作成が終了すると，必要ならば，ロボットが作成したＳＥＬプログラムにしたがって，意図した通りに（作図した経路の通りに）動くかどうかの試行が行なわれる（図２，Ｓ13でYES ，Ｓ14）（第１の試行動作手段）。たとえば表示部14の表示画面を初期メニュー画面に戻し，試行を選択すればよい。
【００８８】
試行にはさまざまな実行形態がある。その一は，記憶部15に，作成したＳＥＬプログラムを解釈してロボットの駆動回路を制御する指令を発生する制御プログラム（コントローラ20が持つものと同じような制御プログラム）をあらかじめ格納しておき，処理部11にこの制御プログラムにしたがう動作を行なわせるものである。この場合に，制御プログラムが作成する位置指令をそのまま取込んで，試行結果データ（試行動作軌跡）とすることができるし，発生した位置指令値を若干の遅延させてフィードバックさせたり，速度指令まで発生させてフィードバックさせたりしてもよい。
【００８９】
第二は，あらかじめロボットのモデルを作成しておき（記憶部15に記憶しておき），このモデルに作成した位置指令を与え，モデルからフィードバックさせる位置データを試行結果データ（試行動作軌跡）とするものである（コンピュータシミュレーション）。
【００９０】
第三は，図１に破線で示すように，コントローラ20を実際に接続して，コントローラに，作成したＳＥＬプログラムを与え，そのＳＥＬプログラムの実行に伴って生じる試行結果データを得ることである。この場合に，コントローラ20に駆動回路30を接続し，駆動回路30からフィードバックされる位置データ（図19の位置検出器117，127から出力される位置データ）を試行結果データ（試行動作軌跡）とすることもできるし，駆動回路30を接続せずに，コントローラ20内において，模擬的に試行させてその結果を得るようにしてもよい（コントローラ20が発生する位置指令を（そのまま，または遅延させて）試行結果データとしてもよいし，コントローラ20内にモデルを設けておいて，このモデルが出力する位置データを試行結果データとしてもよい。
【００９１】
図14は図11，図12に示すＳＥＬプログラムにしたがって試行（第１の試行）した結果を示すものであり，表示部14の表示画面に表示されている。先に作図した経路が実線で示され，試行による動作軌跡が破線で示されている。図15には図14の一部が拡大して示されている（第１の試行動作軌跡表示制御手段）。
【００９２】
特に図15を参照して，直線移動経路ＰＡ１，ＰＡ２，ＰＡ３等はＳＥＬプログラムのコマンドPATHにより実現されており，各点Ｐ13，Ｐ14等で停止することなく連続的に通過するように（多少減速することはあっても）制御される。すなわち，図22を参照して説明したように，直線経路ＰＡ１から直線経路ＰＡ２に向うときには，直線ＰＡ１の終点Ｐ13に到達する前にＸ軸方向の移動速度が速くなり（直線ＰＡ１）に沿って動いているときには，Ｘ軸方向の移動速度は遅く，Ｙ軸方向の移動が支配的である），Ｙ軸方向の移動によって終点Ｐ13に達する前に弧を描いて次の通過点Ｐ14の方に向ってしまう。同じように，点Ｐ14に達する前にＹ軸方向（負方向）の速度が速くなり，点Ｐ14に達する前に直線ＰＡ３に沿う方向に向ってしまう。
【００９３】
このように，あらかじめ定めた理想とする塗布経路ＰＡ１，ＰＡ２，ＰＡ３よりもやや内側に寄った近廻りの経路Ｑ１（破線で示す）を辿ってしまう。
【００９４】
上述のように，試行動作軌跡が作図経路から許容範囲を超えて外れているときには，ＳＥＬプログラムを修正しなければならない（図２，Ｓ15でYES ）。ＳＥＬプログラムの修正のために，経路作図をやり直すことになる（Ｓ11）。
【００９５】
たとえば，図18に示すように，直線ＰＡ１の終点Ｐ13を少し先の位置Ｐ133 （Ｙ座標値を大きくする）に修正し，直線ＰＡ３の始点も位置Ｐ133 に対応してそのＹ座標値を大きくして位置Ｐ144に定める。直線ＰＡ２はなくなり，新たに点Ｐ133を始点，点Ｐ144 を終点とする直線ＰＡ22の経路ができ上る。
【００９６】
経路の修正は，先に作成した経路図（図７，図８）において，点Ｐ13をＰ133 の位置へドラッグし，点Ｐ14をＰ144 の位置へドラッグすればよい（修正経路入力手段）。すると，図18に示す新たな直線ＰＡ22が表示部14に表示される（第２の経路表示制御手段）。もちろん，点Ｐ13とＰ133との間，点Ｐ144とＰ14との間も直線でつながれて表示される。ジグザグの経路中の他の部分も同じように修正される。このようにして修正された新たな作図データの中間データが図16に示されている。
【００９７】
この後，再びプロジェクト(P)，ＳＥＬプログラム生成(G)をクリックすることにより（図９参照），修正された作図データの中間データ（図16）に基づいてＳＥＬプログラムが自動的に作成される（図２，Ｓ12）（プログラム修正手段）。作成されたＳＥＬプログラムは図11に示すものと同じであるが，ポジションデータに修正した経路の座標データが反映されている。修正されたポジションデータの例が図17に示されている。
【００９８】
このようにして，修正されたＳＥＬプログラムにしたがって再び試行動作が行なわれ（図２，Ｓ13でYES ，Ｓ14）（第２の試行動作手段），その試行動作結果の軌跡（第２の試行動作軌跡）を示すデータが作成され，図18に破線Ｑ２で示すように表示部14の表示画面に表示される（第２の試行動作軌跡表示手段）。この表示画面には，修正後の経路（ＰＡ１，ＰＡ22，ＰＡ３）に加えて，修正前の経路（第１の移動経路）ＰＡ２も表示されている（細い破線で示す）。ユーザは，修正後の試行軌跡Ｑ２と修正前の理想的な経路ＰＡ２とを対比して，修正後の試行軌跡が最初予定した経路ＰＡ２に近似して満足のいくものかどうか確認することができる。必要であれば，再々度，経路を修正してＳＥＬプログラムの生成（修正）を繰返せばよい。満足できるＳＥＬプログラムが完成したときには，それを出力する（図２，Ｓ16）。記憶部15に記憶してもよいし，コントローラ20にインストールしてもよいし，記録媒体に記録してもよいし，通信で他の装置に送信してもよい。
【符号の説明】
【００９９】
10  ロボット言語プログラム自動作成（修正）装置（システム）
11  処理部
12  入力部
13  出力部
14  表示部
15  記憶部
20  コントローラ
30  駆動回路
Ｐ12，Ｐ13，Ｐ14，Ｐ25，Ｐ26，Ｐ27，Ｐ28，Ｐ29，‥  点
ＰＡ１，ＰＡ２，ＰＡ３  直線
ＣＡ１  円弧
ＣＡ２  円
Ｐ133，Ｐ144  修正後の点
ＰＡ22  修正後の直線
Ｑ１，Ｑ２  試行動作軌跡
【図１】
2016218934.tif 000003
【図２】
2016218934.tif 000004
【図３】
2016218934.tif 000005
【図８】
2016218934.tif 000006
【図１０】
2016218934.tif 000007
【図１１】
2016218934.tif 000008
【図１２】
2016218934.tif 000009
【図１３】
2016218934.tif 000010
【図１４】
2016218934.tif 000011
【図１５】
2016218934.tif 000012
【図１８】
2016218934.tif 000013
【図１９】
2016218934.tif 000014
【図２０】
2016218934.tif 000015
【図２１】
2016218934.tif 000016
【図２２】
2016218934.tif 000017
【図４】
2016218934.tif 000018
【図５】
2016218934.tif 000019
【図６】
2016218934.tif 000020
【図７】
2016218934.tif 000021
【図９】
2016218934.tif 000022
【図１６】
2016218934.tif 000023
【図１７】
2016218934.tif 000024