(57)【特許請求の範囲】
【請求項１】
テーブルに取付けられた加工物に対して加工を行う少なくとも直線軸２軸を含む複数の駆動軸によって構成される工作機械を制御する数値制御装置において、
複数個の指令点により形成される指令点列による指令経路および前記加工物と工具との相対送り速度指令を読み取る指令読み取り手段と、
前記指令読み取り手段によって前記指令点列を指令方向から抽出しても指令方向と逆方向から抽出しても同じ経路となるように指令方向に依らない判定基準で前記指令点列から部分点列を抽出して前記指令点列を分割する部分点列抽出手段と、
前記部分点列の各指令点からの距離が予め設定されたトレランス以内でありかつ指令方向に依らない直線作成方法または曲線作成方法およびトレランス判定によって前記部分点列から指令方向に作成しても指令方向と逆方向に作成しても同じ直線または曲線に近似して圧縮した経路を作成する点列圧縮手段と、
工具が前記点列圧縮手段により圧縮した経路を、指令された前記相対送り速度で移動するよう補間周期ごとに各軸位置を求める補間手段と、
前記補間手段により求められた各軸位置へ移動するように各軸モータを駆動する手段を有する数値制御装置。
【請求項２】
前記指令点列から前記部分点列を抽出して分割する際の分割基準長を設定する分割基準長設定手段を有し、前記部分点列抽出手段における分割の判定は、指令点間の長さが前記分割基準長以内かどうかにより判定する請求項１に記載の数値制御装置。
【請求項３】
前記指令点列から前記部分点列を抽出して分割する際の分割基準角度を設定する分割基準角度設定手段を有し、
前記部分点列抽出手段における分割の判定は、指令点間を結ぶ直線のなす角が、前記分割基準角度以内かどうかにより判定する請求項１に記載の数値制御装置。
【請求項４】
前記点列圧縮手段における圧縮した経路は、部分点列の内いくつかの点を直線で繋ぐ経路とする請求項１〜３のいずれか一つに記載の数値制御装置。
【請求項５】
前記点列圧縮手段における圧縮した経路は、部分点列の内いくつかの点を通過する曲線経路とする請求項１〜３のいずれか一つに記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも直線２軸を含む複数の駆動軸を有する工作機械に対して加工プログラムから得られる指令点列にもとづいて加工用の経路を作成し前記経路を補間し、補間した位置に前記駆動軸を駆動することによって加工を行う数値制御装置に関する。
【背景技術】
【０００２】
特許文献１には、点列として指令された経路を、直線経路により近似し、その直線経路に沿って加工を行う技術が開示されている。
【０００３】
特許文献２には、点列として指令された経路を、指令点からのずれが設定された閾値（トレランス）以内となるなるべく少ない本数の曲線で近似し、その曲線に沿うようにサーボモータを駆動し加工を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３４５９１５５号公報
【特許文献２】特開２０１３−１７１３７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
広範囲にわたる多数の指令点列を、その指令点列からの距離が許容閾値（トレランス）以内となる直線または曲線で近似する技術を指令点列の圧縮と呼ぶ。多数の指令点を1本の曲線で表すことで、広範囲の指令点列に対応した曲線が作成でき、指令点列間の間隔が微小であっても、数値制御装置の加工曲線を作成し補間する能力の不足による減速を軽減できる。
【０００６】
特許文献１、２に記載された方法は、圧縮方法が方向依存性を持つ、つまり点列に対しどちらから圧縮するかで圧縮結果が相違するため、同一の指令を逆向きに指令したとき同一の圧縮結果となる保証がなく、このため往復経路による加工において経路段差が生じるという問題がある。
【０００７】
そこで本発明の目的は、上記従来技術で述べた指令点列圧縮において、同一の指令点列を順向き、逆向きのどちらで与えたとしても、前記指令点列を逐次的に読み込みつつ同一の指令点列圧縮結果を得ることが可能な、指令経路圧縮機能を有する数値制御装置を提供することである。
【課題を解決するための手段】
【０００８】
本願の請求項１に係る発明は、テーブルに取付けられた加工物に対して加工を行う少なくとも直線軸２軸を含む複数の駆動軸によって構成される工作機械を制御する数値制御装置において、複数個の指令点により形成される指令点列による指令経路および前記加工物と工具との相対送り速度指令を読み取る指令読み取り手段と、前記指令読み取り手段によって前記指令点列を指令方向から抽出しても指令方向と逆方向から抽出しても同じ経路となるように指令方向に依らない判定基準で前記指令点列から部分点列を抽出して前記指令点列を分割する部分点列抽出手段と、前記部分点列の各指令点からの距離が予め設定されたトレランス以内でありかつ指令方向に依らない直線作成方法または曲線作成方法およびトレランス判定によって前記部分点列から指令方向に作成しても指令方向と逆方向に作成しても同じ直線または曲線に近似して圧縮した経路を作成する点列圧縮手段と、工具が前記点列圧縮手段により圧縮した経路を、指令された前記相対送り速度で移動するよう補間周期ごとに各軸位置を求める補間手段と、前記補間手段により求められた各軸位置へ移動するように各軸モータを駆動する手段を有する数値制御装置である。
請求項２に係る発明は、前記指令点列から前記部分点列を抽出して分割する際の分割基準長を設定する分割基準長設定手段を有し、前記部分点列抽出手段における分割の判定は、指令点間の長さが前記分割基準長以内かどうかにより判定する請求項１に記載の数値制御装置である。
【０００９】
請求項３に係る発明は、前記指令点列から前記部分点列を抽出して分割する際の分割基準角度を設定する分割基準角度設定手段を有し、前記部分点列抽出手段における分割の判定は、指令点間を結ぶ直線のなす角が、前記分割基準角度以内かどうかにより判定する請求項１に記載の数値制御装置である。
【００１０】
請求項４に係る発明は、前記点列圧縮手段における圧縮した経路は、部分点列の内いくつかの点を直線で繋ぐ経路とする請求項１〜３のいずれか一つに記載の数値制御装置である。  
請求項５に係る発明は、前記点列圧縮手段における圧縮した経路は、部分点列の内いくつかの点を通過する曲線経路とする請求項１〜３のいずれか一つに記載の数値制御装置である。
【発明の効果】
【００１１】
本発明により、指令点列圧縮において、同一の指令点列を順向き、逆向きのどちらで与えたとしても、前記指令点列を逐次的に読み込みつつ同一の指令点列圧縮結果を得ることが可能な、指令経路圧縮機能を有する数値制御装置を提供できる。
【図面の簡単な説明】
【００１２】
【図１】P0が始点、Pn(n≧1)が終点である指令点列{P0,P1, ・・・Pn}入力された指令点列を示す図である。
【図２】Pm-1からPmのベクトルをvm、vm-1とvmのなす角をamと表すことを示す図である。
【図３】QcからQdへのベクトルをVc,dと表すことを示す図である。
【図４】図１で示されたP0,P1,・・・,Pnの経路が圧縮の結果、n以下の数の直線で表現されることを示す図である。
【図５】図１で示されたP0,P1,・・・,Pnの経路が圧縮の結果、いくつかの指令点を通る曲線で表現されることを示す図である。
【図６】本発明の実施形態を説明する機能ブロック図である。
【図７】実施形態１の部分点列抽出手段における処理を示すフローチャートである。
【図８】実施形態１の点列圧縮手段における処理を示すフローチャートである。
【図９】実施形態２の点列圧縮手段における処理を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を図面と共に説明する。  
＜実施形態１＞
入力された指令点列を、指令点列の圧縮により近似直線で表現する例を説明する。図１のようにP0が始点、Pn(n≧1)が終点である指令点列{P0,P1, ・・・Pn} がNCプログラムとして指令される例を考える。
【００１４】
指令点列{P0,P1, ・・・Pn} を指令読み取り手段により指令方向から抽出し、部分点列抽出手段において部分点列に分割し、点列圧縮手段へと渡す。点列圧縮手段では部分点列抽出手段により分割された部分点列を直線で近似する。部分点列抽出手段と点列圧縮手段とを以下に説明する。
【００１５】
[部分点列抽出手段]
部分点列抽出手段では、指令点列{P0,P1,・・・,Pn}を逐次的に読み込んで部分点列を抽出し、点列圧縮手段に渡す。その手順を以下で説明する。指令点列読み込みループ内では、P0から順に逐次的に指令点を読み込んでいき（先読み）、指令点間の距離および角度の条件によって停止されるまで先読みを繰り返す。先読みが停止された場合、読み込んだ点列を部分点列として点列圧縮手段へと渡し、まだ指令点が残っていれば、残った指令点列を入力として部分点列抽出手段を繰り返す。指令点列読み込みループ内で読み込む指令点をPm(0≦m≦n)とする。
【００１６】
図２のようにPm-1からPmのベクトルをvmとし、vm-1とvmのなす角をamとすると、両者は数１式、数２式で表される。
【００１７】
【数１】
0005850963.tif 000002
【００１８】
【数２】
0005850963.tif 000003
【００１９】
（Ａ−１）m=0の場合
P0が読み込まれる。
m=1として先読みを継続する。
（Ａ−２）m=1の場合
P1を読み込み、すでに読み込まれているP0とP1からv1を数３式により計算する。
【００２０】
【数３】
0005850963.tif 000004
【００２１】
v1の長さが、分割基準長設定手段によって予め設定されている分割基準長vmax以下であれば先読みを継続する。すなわち、数４式であれば先読みを継続し、そうでなければ先読みを停止する。
【００２２】
【数４】
0005850963.tif 000005
【００２３】
先読みを停止した場合、{P0,P1}を部分点列として抽出し、点列圧縮手段へと渡す。n≠1であれば、残った指令点列{P1,・・・,Pn}を{P'0, ・・・,P'n-1}として再度部分点列抽出手段を実行する。
（Ａ−３）  m≧2の場合
Pmを読み込み、既に読み込まれているPm-1とPmからvmを数５式により計算する。
【００２４】
【数５】
0005850963.tif 000006
【００２５】
また、既に計算されているvm-1とvmからamを計算する。
【００２６】
【数６】
0005850963.tif 000007
【００２７】
vmの長さがvmax以下であり、かつ、cos(am)が分割基準角度の余弦cosmax以上であれば、先読みを継続する。分割基準角度は分割基準角度設定手段により予め設定されている。
すなわち
【００２８】
【数７】
0005850963.tif 000008
【００２９】
【数８】
0005850963.tif 000009
であれば、先読みを継続し、そうでなければ先読みを停止する。
【００３０】
数７式または数８式により先読みを停止した場合、{P0,・・・,Pm-1}を部分点列として抽出し、点列圧縮手段へと渡し、残った指令点列{Pm-1,・・・,Pn}を入力点列{P'0, ・・・,P'n-m+1}として部分点列抽出手段を初めから実行する。
m=nであれば、{P0,・・・,Pn}を部分点列として抽出し、部分点列抽出手段を終了する。
【００３１】
ここで、指令点列{P0,P1,・・・,Pn}がこの順に指令されても、逆から{Pn,Pn-1,・・・,P0}の順に指令されても数４式、数７式および数８式は同じ判断となる。
【００３２】
なお、ここでは分割基準長と分割基準角度によって部分点列を抽出したが、指令方向に依らない判定基準であれば、他の判定基準を用いてもよい。例えば隣り合う３つの指令点を頂点とする三角形の面積を判定基準としてもよいし、前記三角形の外接円の曲率を判定基準としてもよい。
【００３３】
[点列圧縮手段]
部分点列抽出手段より入力されたs+1個の部分点列{Q0,Q1, ・・・,Qs}（s≧1）を圧縮する。ここで圧縮とは、部分点列に対して、部分点列の点数より少ない数の曲線または直線で近似することである。これらの部分点列は部分点列抽出手段によりQ0からQsまで全て読み込まれており、逐次的に読み込む必要はない。ここでは圧縮結果は直線とする。圧縮結果は媒介変数tの関数である経路Path(t)として補間手段へ渡す。tは0から1を変化する。tを用いて表現した、点Qcから点Qdまで直線で結ぶ経路をLine[c,d](t)は数９式で表される。
【００３４】
【数９】
0005850963.tif 000010
【００３５】
（Ｂ−１）  s=1の場合
数１０式で表されるQ0からQ1を直線で結んだ経路を圧縮結果として補間手段へ渡す。
【００３６】
【数１０】
0005850963.tif 000011
【００３７】
（Ｂ−２）  s>1の場合
図３に示すように部分点Qc，Qdとする。QcからQdへのベクトルをVc,dと表す。ベクトルVc,dは数１１式により表される。
【００３８】
【数１１】
0005850963.tif 000012
【００３９】
また、Vc,d方向の単位ベクトルをEc,dと表す。単位ベクトルEc,dは数１２式により表される。
【００４０】
【数１２】
0005850963.tif 000013
【００４１】
ここで、部分点列の両端以外の点をQq(0<q<s)とする。
V0,qとV0,sのなす角の正弦sinθは数１３式により表される。
【００４２】
【数１３】
0005850963.tif 000014
【００４３】
Q0からQsを直線で結んだ経路Line[0,s](t)とQq(0<q<s)との距離Lqは数１４式により表される。
【００４４】
【数１４】
0005850963.tif 000015
【００４５】
各距離Lqと予め設定されたトレランスTを比較し、数１５式を満たすqが存在するか否かを判別する。
【００４６】
【数１５】
0005850963.tif 000016
【００４７】
数１５式を満たすqが存在しない場合、Path(t)=Line[0,s](t)を圧縮結果として補間手段へ渡す。
数１５式を満たすqが存在する場合、各qのうちLqが最大となるqを抽出し、このq前後で部分点列を分割する。すなわち、q=wのときLqが最大になるとした場合、入力された部分点列(P0,P1, ・・・Ps) は(P0,・・・Pw) と(Pw, ・・・Ps) の2つの部分点列に分割する。全ての分割された部分点列を入力として点列圧縮手段を再帰的に実行する。
【００４８】
ここで、入力された部分点列{Q0,Q1, ・・・,Qs}はこの順で入力されても、逆から{Qs,Qs-1, ・・・,Q0}の順に入力されても、直線作成方法（数９式）およびトレランス判定（数１５式）は同じ結果となる。
【００４９】
[圧縮結果]
以上の手段（部分点列抽出手段および点列圧縮手段）により、図１で示されたP0,P1,・・・,Pnの経路は図４のようにn以下の数の直線で表現される。図１中の黒点は、圧縮された直線経路の端点を表し、白点はそれ以外の指令点を表している。最終的な経路は黒点を繋ぐ直線経路となり、白点はその直線経路からトレランスT以内離れた点となる。これにより元の指令経路をトレランス以内に守りつつ補間による負荷を軽減し、また、微小なコーナによる不要な減速を回避でき、高速な加工が期待できる。
【００５０】
今回、指令点列(P0,P1, ・・・,Pn) の順に入力した例を示した。本手法では指令点列を逆から(Pn,Pn-1, ・・・,P0) の順に入力しても、得られる経路は図４と同一のものとなる。これは、部分点列抽出手段の分割点判定（数４式）（数７式）（数８式）と点列圧縮手段の直線作成方法（数９式）およびトレランス判定（数１５式）が全て、指令点の指令方向に依らない手法となっているためである。これにより往復加工パスの往路と復路のように隣接した曲線の間に形状の類似性が求められる時に、経路間の段差を少なくすることが期待される。
【００５１】
＜実施形態２＞
実施形態１では入力された指令点列を指令点列の圧縮により近似直線で表現する例を説明した。実施形態２では入力された指令点列を指令点列の圧縮により近似曲線で表現する例を説明する。
【００５２】
実施形態１と同様に、P0が始点、Pn(n≧1)が終点である指令点列{P0,P1, ・・・Pn} がNCプログラムとして指令される例を考える。指令点列{P0,P1, ・・・Pn} を指令読み取り手段により指令方向から抽出し、部分点列抽出手段において部分点列に分割し、点列圧縮手段へと渡す。点列圧縮手段では部分点列抽出手段により分割された部分点列を曲線で近似する。部分点列抽出手段は実施形態１と同様のため省略する。以下で実施形態２の点列圧縮手段の詳細を示す。
【００５３】
[点列圧縮手段]
部分点列抽出手段より入力されたs+1個の部分点列{Q0,Q1, ・・・,Qs}（s≧1）を圧縮する。これらの部分点列は部分点列抽出手段によりQ0からQsまで全て読み込まれており、逐次的に読み込む必要はない。ここでは圧縮結果は3次のBスプライン曲線による曲線経路とするが、NURBS曲線や円弧曲線など他の形式の曲線を用いてもよい。圧縮結果は媒介変数tの関数である経路Path(t)として補間手段へ渡す。tは0から1を変化する。
【００５４】
部分点列{Q0,Q1, ・・・,Qs}のうち、点Q0を始点、点Qsを終点とし、i個の点Qe1,・・・,Qeiを通過するBスプライン曲線による曲線経路をBSpline[0,e1,e2,・・・,ei,s](t)とする。ここで1≦i≦s-1である。曲線経路は数１６式により表される。
【００５５】
【数１６】
0005850963.tif 000017
【００５６】
ここでNj,3(t)はBスプライン曲線の基底関数であり、RjはBスプライン曲線の制御点である。このBスプライン曲線は、始点Q0、終点Qsにおける接線方向ベクトルがそれぞれ数１７式、数１８式となるように作成する。
【００５７】
【数１７】
0005850963.tif 000018
【００５８】
【数１８】
0005850963.tif 000019
【００５９】
このように作成したBスプライン曲線は数１９式によって表され、始点Q0、終点Qs、通過点Qe1,・・・,Qeiを逆から入力しても同一の曲線経路となる。
【００６０】
【数１９】
0005850963.tif 000020
【００６１】
このようなBスプライン曲線を作成する手法は周知の技術であるため省略する。
（Ｃ−１）  s=1の場合
数２０式で表されるQ0からQ1をBスプライン曲線で結んだ経路を圧縮結果として補間手段へ渡す。
【００６２】
【数２０】
0005850963.tif 000021
【００６３】
（Ｃ−２）  s>1の場合
数２１式で表されるQ0からQsをBスプライン曲線で結んだ経路を初期曲線として作成する。つまり上述の通過点Qe1, …, Qei はないとしてBスプライン曲線を作成する。
【００６４】
【数２１】
0005850963.tif 000022
【００６５】
部分点列(Q0,Q1, ・・・,Qs)のうち、Q0とQs以外の全ての点Qe(1≦e≦s-1)と、Path(t)との距離をLeとする。すなわち、距離Leを数２２式により表す。
【００６６】
【数２２】
0005850963.tif 000023
【００６７】
ここでDistは、曲線と点との距離を与える関数であり、解析的もしくは近似的な手法により計算する。Distの詳細については周知技術であるため省略する。各Leと予め設定されたトレランスTを数２３式により比較し、各LeがトレランスTを超えるかを判定する。
【００６８】
【数２３】
0005850963.tif 000024
【００６９】
数２３式を満たすeが存在しない場合、Path(t)を圧縮結果として補間手段へ渡す。
数２３式を満たすeが存在する場合、各eのうちLeが最大となるeを抽出し、このeをemaxとする。これらのemaxに対応する点Qemaxを通過する点に追加し、Bスプライン曲線を作り直す。すなわち、作り直したBスプライン曲線は数２４式により表される。
【００７０】
【数２４】
0005850963.tif 000025
【００７１】
この新しいPath(t)に対して数２２式によりLeを再計算し、数２３式を判定する。数２３式を満たすeが存在しない場合、Path(t)を圧縮結果として補間手段へ渡す。数２３式を満たすeが存在する場合、各eのうちLeが最大となるeを抽出し、このeをemax2とし、点Qemax2を追加する点に追加し、Bスプライン曲線を作り直す。すなわち、作り直したBスプライン曲線は数２５式により表される。
【００７２】
【数２５】
0005850963.tif 000026
【００７３】
これを繰り返し、数２３式を満たすeが存在しなくなるまで通過する点を追加し、Path(t)を圧縮結果として補間手段へ渡す。ここで、入力された部分点列{Q0,Q1, ・・・,Qs}はこの順で入力されても、逆から{Qs,Qs-1, ・・・,Q0}の順に入力されても、Bスプライン作成方法（数１６式）（数１７式）（数１８式）およびトレランス判定（数２３式）は同じ結果となる。
【００７４】
また、ここではBスプライン曲線における始点Q0、終点Qsにおける接線方向ベクトルを３（Ｑ１−Ｑ０）、３（Ｑｓ−Ｑｓ−１）としたが、Q0に対する1つ前の点Q-1とQsに対する１つ先の点Qs+1を読み込むことによって、３（Ｑ１−Ｑ−１）／２、３（Ｑｓ＋１−Ｑｓ−１）／２を接線方向ベクトルとしてもよいし、Q-1,Q0,Q1を通る円にQ0で接する方向、Qs-1,Qs,Qs+1 を通る円にQsで接する方向を接線方向ベクトルとしてもよい。
【００７５】
[圧縮結果]
以上の手段により、図１で示されたP0,P1,・・・,Pnの経路は図５のようにいくつかの指令点を通る曲線で表現される。図５中の黒点は、通過する指令点を表し、白点はそれ以外の指令点を表している。
【００７６】
最終的な経路は黒点を繋ぐなめらかな曲線経路となり、白点はその直線経路からトレランスT以内離れた点となる。実施形態１と同様に指令点列を逆から{Pn,Pn-1, ・・・,P0} の順に入力しても、得られる経路は図５と同一のものとなる。
【００７７】
これにより実施形態２においても実施形態１と同様に、これにより元の指令経路をトレランス以内に守りつつ補間による負荷を軽減することができ、また、往復加工パスの往路と復路のように隣接した曲線の間に形状の類似性が求められる時に、経路間の段差を少なくすることができる。さらに実施形態２では３次のBスプライン曲線により圧縮されるため、広範囲にわたる指令点を少数の2次微分連続な曲線で表現され、滑らかな加工面が得られる。
【００７８】
（機能ブロック図）
図６は、本発明の実施形態を説明する機能ブロック図である。一般に数値制御装置において指令読み取り手段１０は加工プログラムを解析し実行形式に変換する。補間手段１４は実行形式に基づいて補間処理を行い各軸への移動指令を出力し、各軸移動指令に基づき各軸サーボ（Ｘ軸サーボ１５Ｘ，Ｙ軸サーボ１５Ｙ，Ｚ軸サーボ１５Ｚ）を駆動制御する。
【００７９】
本発明は指令読み取り手段１０に属する部分点列抽出手段１１と、指令読み取り手段１０に属する点列圧縮手段１２を有する。部分点列抽出手段１１は逐次的に読み取った指令点列を、その形状から分割点を判定することで経路の指令方向に依らず同一の結果となるように分割し、点列圧縮手段１２へと出力する。点列圧縮手段１２は補間手段１４の負荷を軽減するために、入力された部分点列からなる経路を、方向に依らない手法により曲線または直線で近似し、補間手段１４へと出力する。点列圧縮手段１２は予め設定されたトレランス１３を参照する。
【００８０】
（フローチャート）
実施形態１の部分点列抽出手段のフローチャートを図７に示す。
［ステップｓａ０１］ｍを初期値（＝０）とする。  
［ステップｓａ０２］指令点Ｐｍのデータを読み込む。  
［ステップｓａ０３］ｍの値によって場合分けを行う。ｍ＝０の場合にはステップｓａ０４へ移行する。ｍ＝１の場合にはステップｓａ１２へ移行する。ｍ≧２の場合にはステップｓａ０５へ移行する。
【００８１】
［ステップｓａ０４］ｍに１を加算した値をｍとし、ステップｓａ０２に戻る。  
［ステップｓａ０５］ｖｍとａｍを計算する。  
［ステップｓａ０６］ｖｍの絶対値はｖｍａｘ以下であるか否かを判断し、以下である場合（ＹＥＳ）にはステップｓａ０７へ移行し、以下ではない場合（ＮＯ）にはステップｓａ１０へ移行する。
【００８２】
［ステップｓａ０７］ｃｏｓ（ａｍ）はｃｏｓｍａｘ以上であるか否か判断し、以上である場合（ＹＥＳ）にはステップｓａ０８へ移行し、以上ではない場合（ＮＯ）にはステップｓａ１０へ移行する。  
［ステップｓａ０８］ｍとｎは等しいか否か判断し、等しい場合（ＹＥＳ）にはステップｓａ０９へ移行し、等しくない場合（ＮＯ）にはステップｓａ０４へ戻る。
【００８３】
［ステップｓａ０９］指令点列｛Ｐ０，・・・，Ｐｎ｝を点列圧縮手段へ渡し、部分点列抽出手段の処理を終了する。  
［ステップｓａ１０］部分点列｛Ｐ０，・・・，Ｐｍ−１｝を点列圧縮手段へ渡す。  
［ステップｓａ１１］部分点列｛Ｐｍ−１，・・・，Ｐｎ｝を部分点列抽出手段の入力とする。つまり、ステップｓａ０１に戻り、部分点列抽出手段を再実行する。
【００８４】
［ステップｓａ１２］ｍとｎとは等しいか否か判断し、等しい場合（ＹＥＳ）にはステップｓａ１３へ移行し、等しくない場合（ＮＯ）にはステップｓａ１４へ移行する。  
［ステップｓａ１３］｛Ｐ０，Ｐ１｝を点列圧縮手段へ渡し、処理を終了する。
【００８５】
［ステップｓａ１４］ｖｍを計算する。  
［ステップｓａ１５］ｖｍの絶対値はｖｍａｘ以下であるか否か判断し、以下である場合（ＹＥＳ）にはステップｓａ１６へ移行し、以下でない場合（ＮＯ）にはステップｓａ１７へ移行する。
【００８６】
［ステップｓａ１７］｛Ｐ０，Ｐ１｝を点列圧縮手段へ渡す。  
［ステップｓａ１８］指令点列｛Ｐ０，・・・，Ｐｎ｝を部分点列抽出手段の入力とする。つまり、ステップｓａ０１に戻り、部分点列抽出手段を再実行する。
【００８７】
実施形態１の点列圧縮手段のフローチャートを図８に示す。  
［ステップｓｂ０１］Ｐａｔｈ（ｔ）を、Ｐ０とＰｓを結ぶ線分とする。  
［ステップｓｂ０２］Ｑ０，Ｑｓ以外の点ＱｅについてＬｅを計算する。  
［ステップｓｂ０３］Ｌｅ＞Ｔとなるｅが存在するか否か判断し、存在する場合（ＹＥＳ）にはステップｓｂ０４へ移行し、存在しない場合（ＮＯ）にはステップｓｂ０６へ移行する。
【００８８】
［ステップｓｂ０４］Ｌｅが最大となる点の前後で入力点列を分割する。  
［ステップｓｂ０５］分割された点列をそれぞれ入力として点列圧縮手段を再実行し、
ステップｓｂ０１へ戻る。  
［ステップｓｂ０６］Ｐａｔｈ（ｔ）を補間手段へ渡し、点列圧縮手段の処理を終了する。
【００８９】
実施形態２の点列圧縮手段のフローチャートを図９に示す。  
［ステップｓｃ０１］通過点は“なし”とする。  
［ステップｓｃ０２］Ｐａｔｈ（ｔ）を、通過点を通るＢｓｐｌｉｎｅ曲線とする。  
［ステップｓｃ０３］Ｑ０，Ｑｓ以外の点ＱｅについてＬｅを計算する。  
［ステップｓｃ０４］ＬｅがＴより大きいｅが存在するか否か判断し、存在する場合（ＹＥＳ）にはステップｓｃ０５へ移行し、存在しない場合（ＮＯ）にはステップｓｃ０６へ移行する。  
［ステップｓｃ０５］Ｌｅが最大となる点を全て通過点へ追加し、ステップｓｃ０２へ戻る。  
［ステップｓｃ０６］Ｐａｔｈ（ｔ）を補間手段へ渡し、点列圧縮手段の処理を終了する。
【符号の説明】
【００９０】
１０  指令読み取り手段
１１  部分点列抽出手段
１２  点列圧縮手段
１３  トレランス
１４  補間手段
１５Ｘ  Ｘ軸サーボ
１５Ｙ  Ｙ軸サーボ
１５Ｚ  Ｚ軸サーボ
【図１】
0005850963.tif 000027
【図２】
0005850963.tif 000028
【図３】
0005850963.tif 000029
【図４】
0005850963.tif 000030
【図５】
0005850963.tif 000031
【図６】
0005850963.tif 000032
【図７】
0005850963.tif 000033
【図８】
0005850963.tif 000034
【図９】
0005850963.tif 000035