CADのスケッチオフセットの精度と歯形曲線

経緯

このブログでは、「CADでラックから歯車創成図を書いて3Dモデル化する(2)」で、CADのオフセットを使うと歯元隅肉曲線が書けることに気づき、以降の記事ではインボリュート歯車の歯元隅肉曲線の算出に使用してきました。
具体的には、ラックの歯先丸み中心の軌跡をCADまたは計算で求めて、その曲線を、ラック歯先丸み半径分オフセットさせると歯元隅肉曲線が得られます。
原理として包絡線と一致するのは当然なので、疑いを持っていなかったのですが、実は精度が期待していたレベルと違いました。その検討をおこなったので結果を公開します。

問題点

発端

冒頭の通り歯元隅肉曲線を求める際に、CADのオフセットを使用しています。ところが、オフセットで求めた形状と、厳密計算で求めた形状がわずかに違っていることに気が付きました。ずれの大きさは10μm弱です。インボリュートから歯元隅肉曲線に移るデリケートな部分で10μmも厚さが変わったら、正常なかみ合いが維持できなくなります。そこで、この誤差の原因はなにかを探ることにしました。
下図は、実際の形状と、誤差を拡大表示した「誤差曲線」を示しています。

図1.設計形状とCAD作図形状が一致しない

オフセットを使った作図

「正確なインボリュートと歯元隅肉曲線の歯車作図方法」では、下図❶のトロコイド曲線をまず図学的に求めます。次に❶の曲線から❷のオフセット曲線を作図します。この曲線はインボリュート曲線と接線が一致した時点で、インボリュート曲線に切り替わります。今回、この大事なところがずれました。(オフセット0.38)

図2.歯元隅肉曲線はトロコイドのオフセット

CADのオフセットの正しさ

オフセット曲線は、円群の包絡線でもありますから、トロコイド曲線に中心を持つφ0.76の多数の円群を作成して、CADで求めたオフセット曲線に接するかどうか確認しました。結果は図3に示すように、一部は隙間が空き、一部はラップしています。つまりCADのオフセット曲線は、正しく0.38のオフセットではないことになります。図示していませんが、円群の中心はトロコイド曲線です。

図3.オフセットの正しさ検証

定量評価

評価形状

今回の対象はトロコイド曲線のループ部ですが、より一般性を持たせるため、形状を近似した楕円で、誤差をみていくことにします。図4に示すように、歯数20、モジュール1のトロコイド曲線のループ部は、長径0.87短径0.33の楕円がほぼ一致するので、これをメインにしますが、サイズ違いや楕円比違いについても、ある程度みていきます。

図4.楕円で評価

誤差の解析方法

誤差解析のために、3つのツールを作成しました。

  1. 正確なオフセット曲線作成
  2. 2本の曲線間の法線方向誤差を計測して、拡大表示
  3. 結果をきれいにSVG出力

これらのツールは、基本構造と曲線からの情報取得などに、kantoku(id:kandennti)様のスクリプト
3D曲線と遊ぶ1 - C#ATIA
を利用させていただきました。このスクリプトは前にも「CADで歯の危険断面と...」記事で使っていて、何かと重宝しております。公開ありがとうございました。

楕円(0.87x0.33)オフセット0.38

図5は、楕円(0.87x0.33)オフセット0.38の正確なオフセット曲線に対する、CADオフセット曲線の誤差曲線です。最大で9.44μmあります。ねらい0.38ですから0.0094/0.38*100=2.5%の誤差です。

図5.楕円(0.87x0.33)

楕円比の影響

予想としては、楕円が扁平になるほど誤差が増加すると思い、楕円の高さ0.87は同一で、幅0.33の1/2,1,2,3倍の楕円で比較しました。結果、誤差は思ったほど変わりません。誤差形状は、Rの変化が大きいと誤差曲線が高次の変形、正円に近いと8次の変形が見られました。幅0.99品は、全周が正確なオフセットより小さくなっています。

図6.楕円比の影響

サイズの影響

0.87x0.33は小さすぎるかもしれないので、10倍、100倍サイズでも見ておきます。
結果は、モデルサイズが変わっても、誤差の絶対値は変わりません。

図7.サイズの影響

このあと、さらに10000倍である楕円(8700x3300)オフセット3800を見ましたが、同レベルの誤差でした(max8.54,min-4.91μm)。

曲線の特徴

CADのオフセット曲線は、クリックすると「制御点スプライン」と画面右下に表示されます。このスプラインは「NURBS」だそうです。スケッチパレットにある「曲率コーム」を表示すると、曲率分布が不連続になっています。これは何本ものNURBSが「曲率連続」でなく、「接線連続」でつながっていて、その接続点が、実形状の通過点になっているのでしょうか。だとすれば、通過点のあいだに制御点があって曲線をコントロールしているはずですが、その精度が±10μmであるような印象です。

なお曲率コームは、図8.右側図に示すように、自作解析ツールでも以下のAPIで再現できます。(ほとんどkandennti様のコードです。下段2行を追加)

        crv = sel.entity
        geo = crv.worldGeometry
        eva = geo.evaluator
        #パラメータp位置での曲率ベクトルとその大きさ取得
        vec, curvature = eva.getCurvature(p)   
       # 曲率の大きさを表すベクトルにスケーリングし、向きを逆に設定
        crvScl = -1000
        vec.scaleBy(curvature/crvScl)                  

誤差分布と曲率コームを合わせてみると、同一の現象を別の表現で表しているように見えます。

図8.オフセット曲線は「制御点スプライン」

ソリッドモデルの誤差

最初に楕円(0.87x0.33)+オフセット0.38を見ます。作り方は以下の2通りで、2Dでオフセットするか3Dでオフセットするかの違いです。
❶2D楕円→2Dオフセット→押し出しで3D化
❷2D楕円→押し出し3D化→面オフセット
その結果が図9.ですが、❷の作り方では形状が破綻しました。オフセット距離0.0692までは形状を維持していますが、オフセットとは異なる形です。6時12時の元の楕円からの長さと、3時9時方向の長さが違っています。
オフセット0.0732以上では形状が破綻して、ときどき変な線が見えることがあります。

図9.楕円(0.87x0.33)+オフセット0.38

次に楕円(8.7x3.3)+オフセット3.8です。
ここでは次の3種類の作り方でソリッドを用意し、曲率コームと❶に対する誤差曲線を見ました。「計算オフセット」は先述の自作ツールによるもので、「2Dオフセット」がCADのスケッチオフセットです。
❶2D楕円→計算オフセット→押し出しで3D化
❷2D楕円→2Dオフセット→押し出しで3D化
❸2D楕円→押し出し3D化→面オフセット

その結果が図10.ですが、

  • 曲率コーム形状が異なり、❷と❸は別の曲線である
  • ❸は大きなふくらみあり
図10.楕円(8.7x3.3)+オフセット3.8


計算オフセット曲線❶に対する誤差曲線を抜き出したのが、次の図です。❸モデルは、3か所で大きなふくらみ(最大43μm)があります。

図11.ソリッドモデルの誤差曲線

参考

図12に、理論形状での曲率コーム図を示します。この図のオフセット曲線は、「計算オフセット」と言っていたもので、理論計算で1周の座標を求め、「通過点スプライン」で接続しました。CADは、「制御点スプライン」に比べて、曲線の形状にはわずかしか関与しないので、狙い通りの滑らかな曲率コームとなっています。

図12.理論形状での曲率コーム

対策案

形状誤差はサイズにかかわらず一定なので、該当部分の尺度を拡大して作って縮小すれば、誤差だけが縮小できると考えられます。

尺度100:1で作図後、現尺に戻す

結果はねらい通り、誤差だけが1/100のmax=0.08μm,min=-0.08μmとなりました。図13左の従来スケールの誤差曲線では凹凸が見えないので、スケールを100倍したのが右図です。
曲率コームは、大きな段差や局部的なふくらみはなくなり、図12の理論形状にだいぶ近づきました。

図13.尺度100:1

1μm以下の精度までは要求しないので、尺度10:1が妥当なところではないかと思います。

尺度10:1で歯車に適用

歯車の場合は、10倍のモジュールで作図してから、元のモジュールまで縮尺しました。
結果は下図に示すように、ほぼ一致しており、これならいけそうです。

図14.歯車に適用

最後

従来から当方で公開している歯車ソフト、アドインは、厳密な包絡線計算をしているので、このような問題はありません。今回の問題が該当するのはブログで紹介した、CADだけで正確な歯形を描こうとするときの話です。

なお、2Dの円、円弧、直線、3Dの円筒、径方向に分割した円筒、平面は、オフセットしても、精度は維持されるようです(「制御点スプライン」にならないためと推定)。
以上です。