델타봇은 XYZ 좌표를 Z축과 평행한 세개의 축(A,B,C 라고 지정)에 대한 좌표로 변환하여 구동이 되는 형식이다.
이 때 Z축의 좌표는 세개의 축(A,B,C)을 동일하게 이동하는 것과 같기 때문에 XY 좌표만 생각하면 된다.
XY 평면 상에 델타봇의 각 축과 로드를 나타내면 다음과 같다.
XY평면의 원점은 델타봇의 중심으로 설정한다.
델타봇의 B, C 축을 연결하는 선이 XY평면상에서 X축과 평행한 선으로 설정한다.
이 때, 델타봇의 각 축의 위치는 다음과 같이 XY 평면상의 좌표로 나타낼 수 있다.
여기서 , d는 원점에서 각 축까지의 거리이다.
계산을 간단히 하기 위해 이펙터의 크기와 로드 고정부품의 크기 등은 무시한다.
XY평면상의 임의의 점 P(x,y)의 좌표를 점에서 각 축까지의 거리로 변환을 해보자.
이다.
델타봇에서 각 로드는 각 축을 중심으로 로드엔드의 운동각(?)의 범위 내에서 축을 중심으로 회전을 하는 것으로 보면 된다.
따라서 델타봇의 각 축과 축의 중심에서 임의의 점을 잇는 선을 직교좌표로 하는 평면으로 가져오면 그림과 같다.
로드의 높이 H는 다음 식으로 구할 수 있다.
여기서 R은 로드의 길이이다.
로드의 길이는 정해져 있고 축의 중심에서 임의의 점까지의 거리는 위 식에서 구한 값이다.
따라서 A축에서 로드의 높이 Ha는 다음과 같다.
같은 방법으로 B, C축에서 로드의 높이를 구하면 다음과 같다.
따라서 xy 좌표로 제공되는 gcode로부터 각 축의 로드 높이를 계산해서 구동이 가능하다.
이렇게 계산된 각 축의 로드 높이에 Z좌표를 offset으로 적용하면 최종 구동 높이를 얻을 수 있다.
※ 혹시 잘못된 부분이나 이상한 점이 있으면 알려주셨으면 합니다.
이상하게 간단해서 이게 맞나 싶네요.
※ 이펙터나 로드 고정 부품의 크기를 고려하면 수식이 좀 더 복잡해 지겠죠.