Справка по математическому программированию для станка для рисования - PullRequest
3 голосов
/ 10 мая 2009

Я художник, занимающийся созданием различных видов машин с компьютерным управлением. Я начал создавать прототипы XY-машины для рисования на основе Gimble и понял, что математика мне не по карману. Я достаточно приличный программист, но не силен в математике. 3D математика.

Чтобы понять, что мне нужно сделать, было бы полезно взглянуть на буровую установку:

Ранний прототип:

http://roypardi.com/gimble/IMG_2803.JPG

http://roypardi.com/gimble/IMG_2805.JPG

http://roypardi.com/gimble/IMG_2806.JPG

http://roypardi.com/gimble/gimbleSmall.MOV (небольшое видео)

http://roypardi.com/gimble/gimbleLarge.mov (увеличенное видео)

Два внутренних кольца представляют оси X / Y и управляются шаговыми двигателями. Я хочу иметь возможность использовать как растровые изображения, так и векторные данные (gcode). Поэтому мне нужно иметь возможность обратиться к точке в двухмерном пространстве на бумаге / из моих данных и дать подсказке понять, в какой ориентации она должна находиться, чтобы добраться туда (т. Е. На сколько шагать каждый двигатель).

Я искал 2D> 3D-проекцию, углы Эйлера и т. Д., Но я не в себе. Любые указатели, толчки в правильном направлении или фрагменты кода приветствуются. Я могу понять большинство языков программирования.

Ответы [ 3 ]

1 голос
/ 10 мая 2009

Очень хорошая машина, которую вы сделали, я надеюсь, что это сработает для вас. Я считаю, что это правильно.

На мой взгляд, получить один угол очень просто, но другой немного сложнее визуализировать, поскольку мы наклонили ось, на которую он поворачивается.

Я собираюсь избегать использования tan, так как при программировании это может привести к делению на 0, что может расстраивать. Также Z будет высотой начала координат над бумагой.

YAxis = арксин (X / sqrt (X² + Z²))

XAxis = arcsin (Y / sqrt (Y² + X² + Z²))

или мы могли бы использовать

XAxis = arcsin (Y / sqrt (Y² + Z²))

YAxis = арксин (X / sqrt (X² + Y² + Z²))

Кроме того, я бы очень хотел посмотреть видео этого заговора, если оно работает.

Edit: Подумав об этом, я считаю, что будет работать только одно решение, это зависит от того, на какую ось влияет другая. YAxis в середине или Xaxis?

0 голосов
/ 10 мая 2009

Возможно, я неправильно понимаю, но я не верю, что кардан будет делать то, что вы хотите. Подвес может указывать в любом трехмерном направлении, но он не может перемещаться в произвольные точки в трехмерном пространстве. Если плоскость бумаги пересекает объем, пройденный ручкой, удерживаемой в карданном подвесе, ручка может нарисовать круг, но не более того. Даже рисование круга не является надежной вещью, поскольку в этом случае бумага также будет пересекать объем, охватываемый кольцами карданного подвеса; если попытаться сориентировать ручку, кольцо попадет на бумагу.

Я думаю, что вам нужен плоттер , а не карданный подвес.

0 голосов
/ 10 мая 2009

Я думаю, что это проблема простого http://en.wikipedia.org/wiki/Trigonometry

Скажем, расстояние от центра ваших колец до ближайшей точки на бумаге (которую я назову точкой 'O' для 'Origin') - это расстояние X.

Возьмите другую точку P прямо к северу от O, расстояние от которой равно Y.

Чтобы нарисовать эту точку, вам нужен угол α, чтобы tan (alpha) = Y / X, то есть вы можете рассчитать альфа, используя формулу "arctan (Y / X)" [arctan иногда также называют atan]. Arctan - это тригонометрическая функция, которую, я думаю, вы, вероятно, найдете определенной в API математической библиотеки общего назначения.

Выше приведен простейший случай.

Единственный другой случай, о котором я могу вспомнить, это когда точка P не находится на севере. Вместо того, чтобы быть на севере, скажем, что его расстояние составляет Y1 к северу и Y2 к востоку. Решение состоит из двух углов (один угол для каждого из двух колец), один из которых "arctan (Y1 / X)", а другой - "arctan (Y2 / X)".

...