2012-04-16 4 views
5

CNC 밀에 대한 드라이버를 구현 중이며 G 코드 아크 명령을 구현하는 데 문제가 있습니다.n 차원 아크 경로 계산

나는 중간 원 알고리즘의 여러 구현을 발견하지만,있는 그대로 정말 사용할 수 없습니다.

내가 발견 한 중간 지점의 원형 문제는 2D 경로이며 3D 경로를 통해 순차적 인 단계를 필요로하는 동시에 모든 8 진수를 동시에 그립니다. 시작점, 끝점 및 중심점 .

나는 부동 소수점 연산을 사용하여 nice multidimensional equivalent of Bresenham’s line drawing algo을 발견했다. 아크를 그릴 때 비슷한 일이 벌어 졌을까요?

나는 많은 생각과 실험을 사용하여 나의 의지로이 알 고를 구부릴 수 있지만, 아크 그리기는 미해결 된 문제가 아니며 전에 CNC 기계가 만들어 졌기 때문에 우아한 해결책이 이미 존재하는지 궁금하다. ? 똑똑하지 않은 2D 커터 DXF 파일을 처리하는 데 사용

+0

3D 공간에서 1D 곡선을 따라 경로를 찾거나 3D 공간에서 2D 곡면을 포함하는 경로를 찾으려고합니까? – Beta

답변

0

dxftools 파이썬 패키지 2D에서 선분으로 원호를 분할하는 기능을 갖는다. 이 코드를 사용하고 3D 좌표 변환을 사용하여 임의로 3D 공간에 배치 할 수 있습니다. 좌표 변형의 예는 내 py-stl 패키지에서 찾을 수 있습니다.

0

LinuxCNC에 위치 생성 단계에서 생성 분리된다. 위치 생성 루프에서 시스템은 현재 프리미티브 (선 또는 나선)를 따라 이미 이동 한 거리를 추적하고 간단한 공식을 사용하여 해당 프리미티브를 따라 거리 D 인 위치를 얻습니다. 일반적으로 이것은 밀리 초당 한 번 수행됩니다. 이 위치는 서보, 하드웨어 스텝 생성 또는 소프트웨어 스텝 생성 여부에 따라 다른 방법으로 사용할 수 있습니다.

소프트웨어 단계 생성 시스템에서 이전 명령 위치와 새 명령 위치 간의 차이가 각 축을 따라 결정되며 이는 직접 디지털 합성 방법 (DDS)을 사용하여 디지털 파형 생성기의 속도를 업데이트하는 데 사용됩니다). 그런 다음 더 높은 속도 (일반적으로 20-50μs마다)에서 DDS는 각 축에 대해 해당 단계가 생성되어야하는지 여부를 결정합니다.

이것은 당신이 묘사와 다른 디자인이지만,보다 유연한 하나입니다. 예를 들어 단계 생성에서 위치 생성을 분리하면 단계 생성을 수정하지 않고 위치 생성 코드의 혼합 알고리즘을 수정할 수 있습니다. PID와 같은 알고리즘을 사용하여 소프트웨어 스텝 생성을 하드웨어 스텝 생성 또는 서보 제어로 대체 할 수 있습니다.

귀하의 설계에서, 나선형 호를 롤랜드 (Roland)의 설명에 따라 선분으로 간단히 잘라내어 선만 이해하는 단계 생성 코드의 입력으로 사용할 수 있습니다. 어떤면에서 보면 커브 프리미티브가 시간에 따라가 아니라 거리에 따라 샘플링된다는 점을 제외하고는 LinuxCNC가하는 것과 크게 다르지 않습니다.