NURBS補間についての考察


 CNC装置の世界でNURBS補間という言葉が聞かれるようになってから 5年ほど経ましたが、一見普及してそうで、あまり実用で使わているケースを 聞かない。といいながら興味深々で誰もが注目している加工技術。と色々な見方の できるNURBS補間ですが、今回TRYCUT2000での対応を機に、この 混沌とした技術の実際のところを色々な視点でまとめて見ました。
※NURBSとは、
英語 :None Uniform Rational B-Spline
日本語:ノンユニフォーム有理式B−スプライン


<曲線研究者・数学者にとってのNURBS>
 ひとつの表現系で、点(1階)・直線(2階)・円弧(3階)・ ベジェ曲線(n階)・スプライン(n階)など、全てを包含できてしまう という、大変スッキリしていて美しい表現。特に円弧形状が曲線形式に包含できる ことが魅力となっている。

<CAD開発におけるNURBS>
 全ての要素をNURBSで表現すれば、交点や交線計算処理が1種類で済むから 大変楽にCADが開発できる。これはNURBSが脚光を浴びた第1の理由と言える。 しかし、レスポンスを追求するには そうもいかない。表現系の美しさの反面、どんな形式の要素でも、まずは混ぜ合わせ 関数を作るといった処理が入るため確実に遅くなる。それなら元々どんな形状で あったかの情報フラグを持たせるという工夫(現行IGESなど)が考えられるが、 もしこのフラグを活かすということになると、それはすなわち交点計算が内部的には 全ての要素ごとに場合分けされるということであるから、そもそもNURBSに包含 させておく意味がなくなる。ほとんどのシステムでは、このようなジレンマから NURBSを採用はしていても、全ての要素をこの形式では保持していないのが 現状である。
 またいくらNURBSをサポートしていると言っても、自由曲線が有理式(ウェイ トが1以外のものがある)で定義されるような機能は、ほとんど見当たらない。なぜ ならウェイト操作自体は形状位置の正確な制御には向かないからである。ほとんどが 単なるスプラインとしてデータが定義される。
 これらの現状を直視すると冗長な表現系という結論になってしまう。

<CADを売る立場でのNURBS>
 他の多くのシステムがNURBSを採用しているので、データ交換を行う 上でもNURBS構造であれば安心。またNURBSのデータ構造を持って いると印象もいい。

<CADユーザーにとってのNURBS>
 形状の内部表現がどうであるかは、どうでもよいが、なんとなく データ構造がNURBSであれば表現力があるので良い感じがする。 ただ、いくら多彩な表現ができるとは言っても、実際のところ直線は2点で、 円弧は円弧形式で、円柱は円柱形式でデータを持っていて欲しい。その方 が数値による評価が行いやすいしデータも軽くて済みそう。

<CL出力にとってのNURBS補間>
 オフセット量ゼロが前提の加工(ペンシルカッター、ワイヤーカット) で、かつ曲線沿いや面内線沿いにパスを出力するような場合は、NURBSその もので出力できるだけでなく、大変なデータ圧縮にもつながるので、大きな恩恵を うける。(そういう意味ではプロッターのフォーマットがNURBS補間に対応されて いるべき。)
 ただし機械の制御性の問題から、階数が2〜4に制限(制御装置の仕様を要参照) を持つ場合があり、 例えばCATIAのような多項式(最大15次)のデータなど必ずしも、そのまま出力 可能というわけでもない。また、ある任意断面をとったり工具径があると、 それぞれ断面形状やオフセット 位置が、数学的にはNURBSで表現できないことから、近似してデータを作るか、 あらかじめ干渉位置の点群を作っておきスプライン補間や円弧補間 などを行って最終的にNURBSに変換する。実際のところCADデータもNC データもNURBSだから、そのまま出力できることがメリットだというケースは、 かなり限定される。

<NC出力にとってのNURBS補間>
 ノットやウェイトを変換するのに桁数に注意が必要。 例えば、90度の円弧をNURBSで表現するときに、真ん中の制御点のウェイト に
ルート2分の1(無理数)=0.70710681186547524400844362104849...
を与えると完全に一致するというのは、この世界では有名な話ですが、 これを座標値と同様、707 や 0.707 のような与え方をしてしまうと危険。いく ら千分の1の精度で指定しても、ウェイトは混ぜ合わせ時に利用するパラ メータであり、半径が大きくなると何十倍、何百倍もの誤差が生まれてしまう。
 データの長さに関しては、点群をある許容誤差内でNURBS補間して、うまく 間引くことができればデータ圧縮につながるが、不用意にNURBSを利用しても逆に データが増えてしまうこともある。例えば円弧をNURBSで 表現したりすると、少なくともノット値が6つ(6行)必要になるので、G02,G03(1行)をNURBSに置き換えてもデータは増えるだけ。

<CAMを売る立場でのNURBS補間>
 NURBS補間で加工したいというユーザーがちらほら出てきている。NURBS 補間は売りにもなる。

<CAMユーザーにとってのNURBS補間>
 難解なデータ構造。たとえ式を理解していても、直線や円弧補間のように、直感で 把握できる形式ではないので、手動で編集はできない。
データ構造は、以下の4種類のデータから構成される

  • 階数(次数+1)
  • 制御点(ノットの与え方により一部通過点になる場合があるが、基本的に 通過点ではない)
  • ウェイト
  • ノット
     この中で最も直感的に解かりやすいのは制御点であるが基本的に通過点では ない。また制御点の1点目と最後の点も、基本的に始終点というわけではない。 (始終点が数値として与えられないと、完全な連続性の保障が 行なえないことから、多くの制御装置は、1点目と最後の点は始終点に一致する ことが前提になっている。数学屋さんから見た場合、これをNURBSと呼べるか 否かは疑問。)

    <シミュレータ開発にとってのNURBS補間>
     補間部分の座標値を得るために、あらかじめノット値より混ぜ合わ せ関数を計算するという回り道があるのでちょっと面倒。しかし、 NURBSで出力さえしてもらえれば、ひとつのアルゴリズムで直線・ 円弧・ベジェ曲線・スプラインなどの経路が得られるので、こんな楽な ことはない。全てこれで出してくれれば良いのにと思ってしまう。

    <シミュレータを売る立場でのNURBS補間>
     CAMシステムとNC工作機械がNURBS補間対応になってきているのに、 その間のシミュレータが対応できていないのもおかしい。テストで使ってみたいという 話もよくある。NURBS補間を対応すると注目してくれる人もいる。

    <CNC開発にとってのNURBS補間>
     内部的に座標値を計算している部分は、シミュレータ同様、ほぼ等 価なアルゴリズムを用意することになるが、どんなデータが与えられても 忠実に高精度で機械を動作させるという部分はかなりハイレベルな技術が要求される。 なぜならNURBSという表現系は、階数やノット、ウェイトの与え方 によって、折れ線にもなるし真円にもなる。一方G02やG03 の精度を高める(ブレの補正)だけでも莫大な研究が重ねられてきた 経緯がある。

    <NC工作機械を売る立場でのNURBS補間>
     NURBSというキーワードは外せない。 データが圧縮できるし、仕上げ面が綺麗であるわけだから確実に売りになる。

    <加工屋さんにとってのNURBS補間>
     全体の滑らかさという観点では、G01モードで細かく点群が羅列される ものより綺麗に仕上がる。差別化のためにも対応したい。


    <まとめ>
     NURBS補間は、冗長で解かりにくいデータ構造ではあっても、確実にメリット のある場合もあります。ただ現実的には、通過点群を最適化してなめらかに補間して くれるようなNC装置もあり、NURBS補間同等の仕上りが実現できている例が あります。例えば、オークマ(OSP)さんのようにHi−NC(NURBS補間も 含む)という機能の中でそのような機能が既に実現できていますし、FANUCでも NURBS補間よりずっと前から通過点を指定するスプライン補間が対応され ています。今後はこのあたりの技術ももう少し脚光を浴びてゆくべきではないかと思い ます。


    トップページへ