(57)【要約】【課題】曲線の形状を決める要素の数を、曲線生成の試行回数が少なく、その変動も小さくなるように決めることにより、従来よりも短い時間で所望の曲線を得る手段を提供する。【解決手段】点列取得部２０はＮＣ指令解読部１０に対し、必要とする点列データを要求して取得し、曲線生成部３０へ渡す。曲線生成部３０は部分点列から部分曲線を生成する。部分曲線の生成は、曲線の自由度をある初期値に設定してパラメトリック曲線を生成し、生成された曲線が条件を満たすか否かを判定して、条件を満たさない場合は自由度を増やして曲線を再生成するという手順を繰り返す。条件を満たす曲線が得られたところで部分曲線の生成が終了する。曲線自由度更新部４０は、曲線生成の試行の各回において、生成する部分曲線の自由度を曲線生成部３０へ渡す。【選択図】図２
2016206800.tif 000002
【特許請求の範囲】
【請求項１】
点列で指令された工具経路から曲線を生成する工具経路の曲線化方法であって、
前記曲線の形状を決める変数の数である曲線の自由度の初期値を与えると共に、２回目以降に生成する曲線の自由度を決める自由度決定ステップと、
前記決められた自由度の曲線を生成する曲線生成ステップと、
前記生成された曲線が条件を満たす曲線であるか否かを判定する判定ステップと、
を備え、
前記判定ステップにより、前記生成された曲線が条件を満たさないと判定された場合は、前記自由度決定ステップにおいて前記自由度を増やし（但し、自由度を１つずつ増加するのは含まない）、前記曲線生成ステップにより曲線を再生成し、前記再生成された曲線が条件を満たすまで繰り返すことを特徴とする工具経路の曲線化方法。
【請求項２】
前記自由度の増やし方は、設定によって変更できることを特徴とする請求項１に記載の工具経路の曲線化方法。
【請求項３】
前記自由度の増やし方は、自動的に調整できることを特徴とする請求項１に記載の工具経路の曲線化方法。
【請求項４】
点列で指令された工具経路から曲線を生成する工具経路の曲線化装置であって、
前記曲線の形状を決める変数の数である曲線の自由度の初期値を与えると共に、２回目以降に生成する曲線の自由度を決める自由度決定手段と、
前記決められた自由度の曲線を生成する曲線生成手段と、
前記生成された曲線が条件を満たす曲線であるか否かを判定する判定手段と、
を備え、
前記判定手段により、前記生成された曲線が条件を満たさないと判定された場合は、前記自由度決定手段において前記自由度を増やし（但し、自由度を１つずつ増加するのは含まない）、前記曲線生成手段により曲線を再生成し、前記再生成された曲線が条件を満たすまで繰り返すことを特徴とする工具経路の曲線化装置。
【請求項５】
前記自由度の増やし方を設定する手段を備えていることを特徴とする請求項４に記載の工具経路の曲線化装置。
【請求項６】
前記自由度の増やし方を自動的に調整する手段を備えていることを特徴とする請求項４に記載の工具経路の曲線化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、点列で与えられた工具経路を曲線化する方法および曲線化装置に関する。
【背景技術】
【０００２】
数値制御装置において、なめらかな加工面を得ることと加工時間の短縮を目的として、点列で与えられた工具経路を曲線へ変換する手法が用いられる（特許文献１〜５参照）。曲線生成においてよく使われる手法は、点列の個々の点（指令点）との距離が所定のトレランス以下になるように曲線を生成するもので、点列の各点の近傍を通る曲線を求める方法（非特許文献１、２参照）に基づいて、試行を繰り返して所望の曲線を得ている。
【０００３】
すなわち、曲線をＢスプライン曲線などのパラメトリック曲線とし、その形状を決める変数であるノットと制御点の数を与えて曲線を生成し、要求を満たす曲線でなければノットと制御点を増やして曲線を再生成するという手順を繰り返すことにより、最終的に所望の曲線を得るというやり方である。
【０００４】
曲線生成では、点列を部分点列に分割し、部分点列を曲線化して部分曲線を生成するという操作を繰り返す。個々の部分曲線はパラメトリック曲線で表わす。パラメトリック曲線として３次のＢスプライン曲線を採用すると、部分曲線は、ｕを曲線のパラメータ、Ｎｉ，３を３次のＢスプライン基底関数、Ｐｉ（Ｐに矢印付き）を制御点として、数１式に表される。
【０００５】
【数１】
2016206800.tif 000003
【０００６】
曲線が満たすべき条件には、幾つかの考え方があるが、部分点列の各点が曲線から所定の距離（トレランス）以内にあるとするものが多い。すなわち、Ｑｉ（矢印付き）は部分点列の点（ｉ＝０，・・・，Ｎ）、εはトレランスとして、数２式を条件とする。
【０００７】
【数２】
2016206800.tif 000004
【０００８】
試行的な曲線生成方法では、ノットの数と制御点の数の初期値を小さな値に設定し、数３式が最小になるように、制御点｛Ｐｉ（Ｐに矢印）｝を求める。
【０００９】
【数３】
2016206800.tif 000005
【００１０】
求めた制御点を用いて数２式を評価し、満足されない時は、ノットの数と制御点の数を一つ増やして制御点を求め直すという処理を、数２式が満たされるまで繰り返す。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１３−１７１３７６号公報
【特許文献２】特開２００７−２９３４７８号公報
【特許文献３】特開２００６−３０９６４５号公報
【特許文献４】特開２００５−１８２４３７号公報
【特許文献５】特開２００４−０７８５１６号公報
【非特許文献】
【００１２】
【非特許文献１】Les Piegl, Wayne Tiler, The NURBS Book, Springer-Verlag,pp405-453
【非特許文献２】I.J.Schoenberg, Spline functions and the problem of graduation, Proceedings of the National Academy of Sciences of the U.S.A., 52 (1964)
【発明の概要】
【発明が解決しようとする課題】
【００１３】
従来の試行的な方法では、ノットと制御点の初期値を小さな値に設定し、一つずつ増やして行くという方式が採用されている。これは、部分点列の点の数が少ない場合や点の並びに規則性がある時に少ない数のノットと制御点で曲線が生成できることを考慮した結果であるが、通常、このような綺麗な点列は少なく、所望の曲線が得られるまでの試行回数は、小さな値からある程度大きな値までバラつくことが多い。
【００１４】
ノットと制御点の数が大きくなると、曲線生成に要する時間が増えるので、小さな初期値から出発して一つずつ増やす従来の方法では、曲線を得るまでの時間が長くなる。この結果、数値制御工作機械では、機械を駆動するための指令を生成するのに要する時間が長くなり、加工速度を上げられないという問題が生じる。また、点列によって曲線が決まるまでの試行回数のバラツキが大きく、実加工速度の変動が大きくなるという問題もある。
【００１５】
そこで、本発明の目的は、かかる曲線生成上の問題を解決するために、曲線の形状を決める要素の数を、曲線生成の試行回数が少なく、その変動も小さくなるように決めることにより、従来よりも短い時間で所望の曲線を得る方法および装置を提供することにある。
【課題を解決するための手段】
【００１６】
本発明は、点列で指令された工具経路から曲線を生成する工具経路の曲線化方法であって、前記曲線の形状を決める変数の数である曲線の自由度の初期値を与えると共に、２回目以降に生成する曲線の自由度を決める自由度決定ステップと、前記決められた自由度の曲線を生成する曲線生成ステップと、前記生成された曲線が条件を満たす曲線であるか否かを判定する判定ステップと、を備え、前記判定ステップにより、前記生成された曲線が条件を満たさないと判定された場合は、前記自由度決定ステップにおいて前記自由度を増やし（但し、自由度を１つずつ増加するのは含まない）、前記曲線生成ステップにより曲線を再生成し、前記再生成された曲線が条件を満たすまで繰り返すことを特徴とする。これにより、点列で与えられた加工経路を曲線化する時に、従来よりも短い時間で所望の曲線を得ることが可能になる。
【００１７】
また、本発明は、前記自由度の増やし方を、設定によって変更できるようにしたことを特徴とする。これにより、加工プログラムに合わせて、曲線を得る時間を短縮することが可能になる。
【００１８】
また、本発明は、前記自由度の増やし方を、自動的に調整できるようにしたことを特徴とする。これにより、加工プログラムに合わせて曲線を得る時間を短縮するための詳しい手順を知らなくても、曲線生成の効率を上げることが可能になる。  
本発明は、さらに、上述した特徴を有する工具経路の曲線化方法を搭載した曲線化装置であることを特徴とする。
【発明の効果】
【００１９】
本発明により、曲線の形状を決める要素の数を、曲線生成の試行回数が少なく、その変動も小さくなるように決めることにより、従来よりも短い時間で所望の曲線を得る方法および装置を提供できる。
【図面の簡単な説明】
【００２０】
【図１】部分曲線の自由度の分布を示す図である。
【図２】工具経路の曲線化装置の構成を示す図である。
【図３】部分曲線生成のフローを示す図である。
【図４】自由度の増やし方を自動で調整するフローを示す図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態を図面と共に説明する。
本発明は、点列で与えられた工具経路を曲線化する方法であって、曲線の形状を決める変数の数である曲線の自由度を非一様に増やすことにより、短い時間で所望の曲線を生成する方法およびその方法を用いる曲線化装置に関する。
【００２２】
従来の試行的な方法では、ノットと制御点の初期値を小さな値に設定し、一つずつ増やして行くという方式が採用されている。これは、部分点列の点の数が少ない場合や点の並びに規則性がある時に少ない数のノットと制御点で曲線が生成できることを考慮した結果であるが、通常、このような綺麗な点列は少なく、所望の曲線が得られるまでの試行回数は、小さな値からある程度大きな値までバラつくことが多い。
【００２３】
ノットと制御点の数が大きくなると、曲線生成に要する時間が増えるので、小さな初期値から出発して一つずつ増やす従来の方法では、曲線を得るまでの時間が長くなる。この結果、数値制御工作機械では、機械を駆動するための指令を生成するのに要する時間が長くなり、加工速度を上げられないという問題が生じる。また、点列によって曲線が決まるまでの試行回数のバラツキが大きく、実加工速度の変動が大きくなるという問題もある。
【００２４】
本発明の目的は、かかる曲線生成上の問題を解決するために、曲線の形状を決める要素の数を、曲線生成の試行回数が少なく、その変動も小さくなるように決めることにより、従来よりも短い時間で所望の曲線を得る手段を提供することにある。
【００２５】
以下では、パラメトリック曲線を３次のＢスプライン曲線として、制御点の数の増やし方を工夫することにより、従来よりも短い時間で曲線を生成できることを示すが、ここで述べる方法は、パラメトリック曲線の種類や曲線が満たすべき条件によらず、試行的な曲線生成方法であれば適用できる。
【００２６】
曲線生成では、制御点の幾つかは境界条件で決まる。境界条件の指定の仕方は様々であるが、曲線が点列の端点を通ること、および、端点での１階微分を指定すると、制御点の中の４つは決まる。残りの制御点は、曲線の形状を調整するために自由に動かすことができるので、その数を曲線の自由度と呼ぶ。  
従来の曲線生成方法では、自由度の初期値を０とし、一つずつ増やしていた。  
このやり方で、自由度をｎまで増加させた時に所望の曲線が得られたとする。この時の曲線が決まるまでの試行回数はｎであるが（初回の自由度０の曲線生成は除く）を、自由度を０→ｎ１→・・・→ｎｍ（ｎ≦ｎｍ）と跳びとびに増やす（跳び石法と呼ぶ）と、より少ないｍ回で曲線が得られる。曲線が決まるまでの自由度は部分曲線ごとに異なるが、自由度の増やし方は共通にして跳び石法を適用すると、どの部分曲線についても、試行回数を従来よりも少なく出来る。
【００２７】
一つの点列について、部分曲線の自由度は図１のような分布を示すので、曲線が決まるまでの演算時間は、
自由度の増やし方：０→ｎ１→ｎ２→ｎ３→・・・
ｍ   ：従来の方法による自由度ｉの最大値
t(i) ：自由度ｉの曲線を生成するのに要する時間
f(i) ：自由度ｉの部分曲線の数
Ｔ：従来の方法による演算時間
Ｔ（バー）：跳び石法による演算時間
とすると、数４式、数５式で表される。
【００２８】
【数４】
2016206800.tif 000006
【００２９】
【数５】
2016206800.tif 000007
【００３０】
ここでは、両者（数４式と数５式）の比較を容易にするため、跳び石法においても、自由度０から始めているが、初期値を他の値にしてもよい。  
Ｔ（バー）の値は、自由度の増やし方と分布f(i)によって変わるが、少ない試行回数で求まる曲線が多い（ｉの小さいところに分布が集中している）場合を除き、一般に、Ｔ（バー）＜Ｔとなる自由度の増やし方を決めることができる。  
簡単なケースとして、２回目以降は自由度を一つずつ増やすとすると、数４式と数５式はそれぞれ数６式と数７式と表せる。
【００３１】
【数６】
2016206800.tif 000008
【００３２】
【数７】
2016206800.tif 000009
【００３３】
であり、t(j)は正値を取るから、数７式の右辺の第２項以降の各項は数７式の対応する項よりも大きい。したがって、数８式であれば、
【００３４】
【数８】
2016206800.tif 000010
【００３５】
Ｔ（バー）＜Ｔである。
【００３６】
自由度が大きいほど曲線を生成するのに多くの時間を要するので、t(j)はｊの単調増加関数であり、数９式を満たすＪが存在する。
【００３７】
【数９】
2016206800.tif 000011
【００３８】
【数１０】
2016206800.tif 000012
【００３９】
数１０式の右辺の第１項は負、第２項は正である。
両者の和の正負は分布f(i)によるが、分布がｉの小さいところに集中している場合を除いて、ｎ１を適当に選ぶことによりこれを正の値にすることができるので、Ｔ（バー）＜Ｔが成り立つ。
【００４０】
分布がｉの小さいところに集中している場合は、跳び石法によって演算時間は削減されず、逆に増えることもある。しかし、この場合は、少ない試行回数で部分曲線が決まること、および、曲線の自由度が小さいので処理時間自体も小さい値であることにより、この時間増加は問題ではない。したがって、一般に、曲線の自由度を跳びとびに増やすという手法は、曲線生成に要する時間の削減に有効である。
【００４１】
自由度の増やし方は、予め決めた設定値を記憶しておき、それを読み出して使う。部分曲線の生成に要する時間を最小にする自由度の増やし方は、一般に、部分点列ごとに異なるが、平均的によい結果を与えるものを採用する。
【００４２】
この設定値を決める第一の方法は、実験によって決めるものである。まず、自由度を一つずつ増やす従来の方法でいくつかのサンプル加工プログラムを実行して自由度の分布データと曲線生成に要する時間を採取し、次に、分布データに基づいて自由度の増やし方を複数用意し、曲線生成に要するそれぞれの時間を採取する。最も、短い時間を与える増やし方を採用する。
【００４３】
設定値を決める第二の方法は、適切な増やし方を自動的に求めるものである。第一の方法で決めた設定値は標準的な加工プログラムで決めたもので、実際に使う加工プログラムを用いてこれを調整するものである。まず、f(i)は、実際に使う加工プログラムから適当なサンプルを選んで、従来の方法で実行して求める。次に、第一の方法による設定値（これは予め与えられている）を初期値として、最初の数回の値、例えば１回目の値ｎ１，２回目の値ｎ２，３回目の値ｎ２を初期値のまわりで少し変化させて曲線生成時間のデータをとり、最も短い時間を与える増やし方を採用する。曲線生成時間は、数５式により求める。t(i)は加工プログラムには依存しないので、予め測定した値を用いればよい。
【００４４】
図２は本発明の一実施形態を示すブロック図である。工具経路曲線化装置１は、ＮＣ指令解読部１０、点列取得部２０、曲線生成部３０、曲線自由度更新部４０、曲線出力部５０を含む。
【００４５】
ＮＣ指令解読部１０は数値制御装置に搭載されるＮＣ指令解読部と同じもので、ＮＣ指令２（加工プログラム）を解読し、工具経路を構成する点列の点列データを取り出す。点列データは工具経路上の点の位置を表わすデータで、５軸加工の場合は位置に加えて工具の向きを表わすデータも含む。
【００４６】
点列取得部２０はＮＣ指令解読部１０に対し、必要とする点列データを要求して取得する。所定の数Ｎの点のデータを取得することを基本とし、取得された点列（部分点列）を曲線生成部３０へ渡す。
【００４７】
曲線生成部３０は部分点列から部分曲線を生成する。部分曲線は部分点列の始点と終点を通り、その他の点の近傍を通るパラメトリック曲線である。部分曲線の生成は、曲線の自由度をある初期値に設定してパラメトリック曲線を生成し、生成された曲線が条件を満たすか否かを判定して、条件を満たさない場合は自由度を増やして曲線を再生成するという手順を繰り返す。条件を満たす曲線が得られたところで部分曲線の生成が終了する。曲線自由度更新部４０は、曲線生成の試行の各回において、生成する部分曲線の自由度を曲線生成部３０へ渡す。
【００４８】
本発明の目的は、部分曲線が確定するまでの演算時間を削減することにあり、部分点列の取り出し方、部分曲線が満たすべき条件、パラメトリック曲線の種類などによらず、適用できるものである。そこで、これらについてはその詳細を述べることは省略して、従来の方法、すなわち、パラメトリック曲線を３次のＢスプライン曲線、曲線が満たすべき条件を「部分点列の各点が曲線からある距離以内にあること」とする。曲線の自由度を更新する方法を図３のフローチャートに従って説明する。
【００４９】
ステップＳＡ１００：  ノットの数と制御点の数を初期値に設定する。３次Ｂスプライン曲線を使用し、自由度の初期値を０とするので、ノットの数を８、また、制御点の数を４とする。試行回数カウンタを０に設定する。  
ステップＳＡ１０１：  与えられた自由度の部分曲線を生成する。  
ステップＳＡ１０２：  部分点列の各点について、生成した部分曲線との距離ｄが予め設定したトレランスε以下であるか否かを判定する。全ての点についてｄ≦εであれば、部分曲線が求まったので処理を終了する。そうでなければ、ステップＳＡ１０３へ進む。  
ステップＳＡ１０３；  試行回数カウンタの値を１増やし、曲線自由度更新部から試行回数に対応したノットの数と制御点の数を取得して、ステップＳＡ１０１へ戻る。
【００５０】
次に、本発明の特徴である自由度の増やし方を自動で決める方法の手順を、図４のフローチャートに従って説明する。
ステップＳＢ１００：  自由度の増やし方を決めるために用いる加工プログラムを選択する。複数の加工プログラムを選択してもよい。
ステップＳＢ１０１：  選択された加工プログラムの各々について、以下の２つの処理を行い、得られたデータを記憶する。
１）  自由度を一つずつ増やすやり方で曲線を生成し、自由度ｉの部分曲線の数の分布ｆ(i)を求める。
２）  予め設定されている自由度の増やし方（基準値）で曲線を生成し、各加工プログラムで曲線生成に要する時間Ｔｋ（ｋはプログラムを識別するインデックス）を、ｆ(i)と予め求めてあるｔ(i)を用いて数５式より求める。１回目〜３回目の試行の自由度の修正値の識別子ｊを１に設定してステップＳＢ１０２へ進む。
【００５１】
ステップＳＢ１０２：  自由度をｊで指定された値にして曲線を生成し、各加工プログラムで曲線生成に要する時間Ｔtjkを数５式より求める。
ステップＳＢ１０３：  自由度の修正値のすべての組み合わせをテストしたか否かを判定する。修正する自由度を、基準値、基準値±ずれ量の３通りに振る場合は、１回目〜３回目の試行の自由度を修正するので全部で９通りの組み合わせがあるが、そのうちの一つは基準値の組み合わせなので、調べるべきケースは８通りである。
テストが終了していれば、ステップＳＢ１０５へ、終了していない場合は、ステップＳＢ１０４へ進む。
ステップＳＢ１０４：  ｊを１増やして、ステップＳＢ１０２へ戻る。
ステップＳＢ１０５：  自由度の修正値の各組み合わせについて、生成時間の改善率Ｒj,kを数１１式により求める。
【００５２】
【数１１】
2016206800.tif 000013
【００５３】
各加工プログラムに対する改善率の和を数１２式により求める。
【００５４】
【数１２】
2016206800.tif 000014
【００５５】
その最大値を与える修正値の組み合わせに、基準値を変更する。
例えば、ｉ回目の試行の自由度の基準値をｎｉ，  修正値をｎｉ±ｄｉ  （Ｉ  ＝  １，２，３）とした時、ｎ１+ｄ1，ｄ2，ｎ３-ｄ３の組が最大値を与える場合は、
ｎ１→ｎ１+ｄ１、ｎ３→ｎ３−ｄ３に置き換え、それ以外は基準値のままとする。
【００５６】
上記の説明では自由度を変更する対象を最初の３回の試行とし、自由度の変更を２通りとしたが、自由度を変更する範囲や変更値の選び方は、これに限るものではなく、様々のやり方が可能である。また、最適な自由度の与え方は、部分点列の点数によって異なる。点数ごとに異なる与え方を記憶しておく代わりに、ある点数に対する値だけを保持し、点数が異なる時はその値に点数の比を乗じて用いることにしてもよい。
【符号の説明】
【００５７】
１  工具経路曲線化装置
２  ＮＣ指令
１０  ＮＣ指令解読部
２０  点列取得部
３０  曲線生成部
４０  曲線自由度更新部
５０  曲線出力部
【図１】
2016206800.tif 000015
【図２】
2016206800.tif 000016
【図３】
2016206800.tif 000017
【図４】
2016206800.tif 000018