1. Прогибание троса.
Т.к. на видео есть только две точки опоры то нет возможности обеспечить натяжение троса. Трос натягивается только весом баллончика и весом троса. Из-за этого будут появляться искажения на рисунке. Также будет ограничена скорость перемещения из-за неизбежных колебаний.
Мое предложение добавить третью точку опоры.
Основные моменты:
- Верхние два троса должны быть закреплены в точке сопла баллончика.
- Нижний трос должен быть закреплен на нижней части баллончика.
- Необходимо добавить эластичный элемент, за счет которого будут уничтожаться погрешности аппроксимации (о них напишу позже).
2. Расчет движения.
Основные положения:
Т.к. появилась третья точка опоры то управлять будем в трехмерной координатной системе.
Есть два варианта изменять HAL или генерировать специальный Gкод.
Второй имхо проще, но не так изящен.
Итак простой путь
Нам нужно заменить сиситему координат XYZ на R1,R2,R3 где R1,R2,R3 - радиус векторы из опорных точек.
1. Преобразование координат:
Тут все просто:

- 0107 gcode tools graffiti.png (2.94 КБ) 10013 просмотров
2. Интерполяция:
Т.к. координаты выражаются через корень, то это не аффинное преобразование. (Аффинное преобразование переводит любую прямую в прямую). Здесь это не так. Соответственно мы не сможем нарисовать отрезок из точки (0,0) в точку (10,10) одной командой. Придется его разбивать на маленькие кусочки и рисовать их один за другим. Это повлечет увеличение длины Gcode но не так страшно.
Еще одна неприятность связанна с равномерной скоростью перемещения, опять же исходя из того, что преобразование не аффинное придется для каждого маленького отрезочка задавать скорость перемещения (Feed).
Примерно так.
ЗЫ Вместо двигателя на третьей точке опоры можно поставить пружину, которая будет обеспечивать натяг тросов. Или просто подвесить груз через блок.