2012-04-16 13 views
5

私はCNCミル用のドライバを実装していますが、Gコードアークコマンドの実装に問題があります。n次元アークパスを計算する

私は中点サークルアルゴリズムのいくつかの実装を見つけましたが、実際にそのまま使用することはできません。

私が見つけたように中点サークルの問題は、それが2Dであり、3Dパスを通る逐次ステップを必要とする一方で、すべてのオクタントを同時に描画することです。開始点、終了点、 。

浮動小数点演算を使用してnice multidimensional equivalent of Bresenham’s line drawing algoが見つかりました。弧を描くのにも同様のことがあるでしょうか?

多くの思考や実験を使って私の意志にこのアルゴを曲げることができるかもしれませんが、円弧を描くことは未解決の問題ではなく、以前にCNCマシンが作られていたので、 ?

+0

3D空間で1D曲線に沿ったパス、または3D空間で2D曲面をカバーするパスを検索しようとしていますか? – Beta

答えて

0

私のdxftoolsあまりスマートでない2DカッターのDXFファイルを処理するために使用されるpythonパッケージには、円弧を2Dの線分に分割する機能があります。このコードを使用して3D座標変換を使用して、これを任意に3D空間に配置することができます。座標変換の例は、私のpy-stlパッケージにあります。

0

LinuxCNCでは、位置生成がステップ生成から分離されています。位置生成ループでは、システムは、現在のプリミティブ(線またはらせん)に沿って既に移動した距離を追跡し、そのプリミティブに沿って距離Dである位置を得るために簡単な公式を使用する。 (通常、これは1ミリ秒に1回実行されます)。この位置は、サーボ、ハードウェアステップ生成、ソフトウェアステップ生成のいずれを使用しているかによって、さまざまな方法で使用できます。

ソフトウェアステップ生成システムでは、古い指令位置と新しい指令位置の差が各軸に沿って決定され、これは直接デジタル合成法(DDS )。次に、より高いレート(通常20〜50μsごと)で、DDSは、その時点でステップを生成する必要があるかどうかを各軸に対して決定します。

これは説明しているデザインとは異なるデザインですが、より柔軟なデザインです。たとえば、位置生成とステップ生成を分離することで、位置生成コードのブレンディングアルゴリズムをステップ生成を修正せずに修正することができます。ソフトウェアステップ生成をハードウェアステップ生成やPIDなどのアルゴリズムによるサーボ制御に置き換えることができます。

あなたの設計では、ヘリカル・アークをRolandの記述に従ってライン・セグメントにダイシングし、ラインのみを理解するステップ生成コードの入力としてこれらを使用することで、上記の方法を近似することができます。ある意味では、カーブプリミティブが時間の代わりに距離に従ってサンプリングされることを除けば、これはLinuxCNCとはあまり違いはありません。

関連する問題