Страница 1 из 13

Graffiti-cnc Треугольная система координат

Добавлено: 23 сен 2010, 05:14
DMexico
Пост на тему граффити CNC, основанного на треугольной системе координат.
http://www.youtube.com/watch?v=Y4cjjC-ZiBA

Технически простая идея. Правда?

Вся сложность в конверторе, который будет брать попарно X и Y из G кода, перерабатывать их для треугольной системы координат в G1 и G2 и вставлять на место прежних X и Y.

Такая обманка должна будет получиться.

EMC2 "будет думать", (если б он мог думать с чем работает), что работает с прямоугольной системой координат, но наша "механика" будет отрабатывать по гипотенузам!

Правильно мыслю?

Вот чертежик и формулы возврата гипотенуз из X и Y

Изображение

Туда, в плагин, еще базу B (расстояние между опорными точками) нужно привязать.

Хочу спросить совета у авторитета по плагинам G-кода - Root'a.
Можно ли его "вписать" в Ваш плагин, чтобы напрямую обрабатывать рисунок и получать на выходе G-code с треугольными координатами?
Или стоит писать отдельно и обрабатывать G-code, генерируемый Вашим плагином?

Re: Треугольная система координат

Добавлено: 23 сен 2010, 09:22
Nick
Конечно можно, причем очень просто, даже можно сделать расчет с точки зрения физики.
Только не получится вставить G02 и G03, т.к. ЕМС будет думать, что у него система координат прямоугольная, а не треугольная.

Чуть по позже вывешу расчеты.

ЗЫ тоже видел эту видяшку, идея просто замечательная!

Re: Треугольная система координат

Добавлено: 23 сен 2010, 13:33
DMexico
Забыл уточнить. :lamp_flash:
Вместо второй гипотенузы, в код нужно возвращать не ее саму, а разницу между базой B и G2.
Величина эта у нас получается, как бы, "инверсная".
Допустим, что начало координат в левой верхней точке. X и Y в этой точке = 0,0.
Треугольные координаты тоже получатся 0,0.
Чувствуете несостыковочку? Порвет нашу "механику"! :lol:
Так что возвращенные треугольные координаты должны быть равны G1, B - G2.
Тогда в начале координат треугольные координаты станут равны 0, B
Логично?

Re: Треугольная система координат

Добавлено: 23 сен 2010, 14:05
DMexico
root писал(а):Конечно можно, причем очень просто, даже можно сделать расчет с точки зрения физики.
Только не получится вставить G02 и G03, т.к. ЕМС будет думать, что у него система координат прямоугольная, а не треугольная.

Чуть по позже вывешу расчеты.

ЗЫ тоже видел эту видяшку, идея просто замечательная!
Еще не знаю за что отвечают G02 и G03 :roll: но думаю что разделить рабочие и холостые хода - нужно.
Что уважаемый Root имел в виду под "расчетом с точки зрения физики"? :wtf:

Re: Треугольная система координат

Добавлено: 23 сен 2010, 14:58
Nick
Сегодня куча дел не успеваю никак написать нормальный пост.

На счет физики - на видео видно как провисает один из тросов - неплохо было бы это учесть. Также нужно учесть возможные колебания при движении и остановках.

G01 - это прямолинейная интерполяция на языке Gкода. G02 и G03 - круговые, арки окружностей. Одним из достоинств Gcodetools была возможность экспорта и использованием круговой интерполяции. На рисунке наглядно показана разница между использованием круговой и прямолинейной интерполяции (это скрин от одной из первых версий Gcodetools).
inkscape_plugin_ex.png (10275 просмотров) <a class='original' href='./download/file.php?id=711&sid=1cb848bbe9f4f82eee9a3702abd55f52&mode=view' target=_blank>Загрузить оригинал (76.33 КБ)</a>
Ближе к концу рабочего дня напишу как я вижу использование треугольной системы координат.

Re: Треугольная система координат

Добавлено: 23 сен 2010, 15:53
DMexico
Да, кривые будут ломаными, но при таком соотношении толщина линии/размер изображения это будет мало заметно.
Правый трос в 0,0 натягивается по максимуму. Присмотритесь к началу рабочего цикла.
По поводу раскачивания.
Возможен двойной гироскоп (по часовой и обратно) в виде пары кулеров без лопастей?...
или успокоитель колебаний (подобный тем, которые устанавливают в высотных опорах мостов).
Скорость рабочего хода должна быть без разгона/торможения.
Холостой ход может быть быстрее рабочего и с разгоном/торможением.
Мне кажется, эти ребята много чего не доработали. Или видео старое.
Почему тяжелые тросы, а не прочная леска? Спокойнее себя ведут? А как же разница в диаметре мотка на шкиве?
Почему нет успокоителя колебаний?
Почему двигатели со шкивами закреплены на стене, а не стоят в одном компактном месте, раздавая усилия через блоки?
Много вопросов... да?

Re: Треугольная система координат

Добавлено: 23 сен 2010, 16:15
Nick
1. Прогибание троса.
Т.к. на видео есть только две точки опоры то нет возможности обеспечить натяжение троса. Трос натягивается только весом баллончика и весом троса. Из-за этого будут появляться искажения на рисунке. Также будет ограничена скорость перемещения из-за неизбежных колебаний.
Мое предложение добавить третью точку опоры.
Основные моменты:
  • Верхние два троса должны быть закреплены в точке сопла баллончика.
  • Нижний трос должен быть закреплен на нижней части баллончика.
  • Необходимо добавить эластичный элемент, за счет которого будут уничтожаться погрешности аппроксимации (о них напишу позже).
0105 gcode tools graphity .png (10275 просмотров) <a class='original' href='./download/file.php?id=712&sid=1cb848bbe9f4f82eee9a3702abd55f52&mode=view' target=_blank>Загрузить оригинал (56.92 КБ)</a>
2. Расчет движения.
Основные положения:
Т.к. появилась третья точка опоры то управлять будем в трехмерной координатной системе.
Есть два варианта изменять HAL или генерировать специальный Gкод.
Второй имхо проще, но не так изящен.
Итак простой путь
Нам нужно заменить сиситему координат XYZ на R1,R2,R3 где R1,R2,R3 - радиус векторы из опорных точек.
1. Преобразование координат:
Тут все просто:
0107 gcode tools graffiti.png
0107 gcode tools graffiti.png (2.94 КБ) 10275 просмотров
2. Интерполяция:
Т.к. координаты выражаются через корень, то это не аффинное преобразование. (Аффинное преобразование переводит любую прямую в прямую). Здесь это не так. Соответственно мы не сможем нарисовать отрезок из точки (0,0) в точку (10,10) одной командой. Придется его разбивать на маленькие кусочки и рисовать их один за другим. Это повлечет увеличение длины Gcode но не так страшно.
Еще одна неприятность связанна с равномерной скоростью перемещения, опять же исходя из того, что преобразование не аффинное придется для каждого маленького отрезочка задавать скорость перемещения (Feed).

Примерно так.


ЗЫ Вместо двигателя на третьей точке опоры можно поставить пружину, которая будет обеспечивать натяг тросов. Или просто подвесить груз через блок.

Re: Треугольная система координат

Добавлено: 23 сен 2010, 16:19
Nick
Чем больше вопросов сейчас тем меньше проблем потом :).

Лучше брать не леску, а плетеный рыболовный шнур - это я как рыболов говорю :). Он не тянется и гораздо тоньше.

По поводу закрепления двигателей как таковой нет особой разницы крепить на стенку двигатель или блок.
Скорость рабочего хода должна быть без разгона/торможения.
В каком смысле?

Re: Треугольная система координат

Добавлено: 23 сен 2010, 16:57
DMexico
root писал(а):Чем больше вопросов сейчас тем меньше проблем потом :).

Лучше брать не леску, а плетеный рыболовный шнур - это я как рыболов говорю :). Он не тянется и гораздо тоньше.

По поводу закрепления двигателей как таковой нет особой разницы крепить на стенку двигатель или блок.
Скорость рабочего хода должна быть без разгона/торможения.
В каком смысле?
Скорость рабочего хода должна быть постоянной, иначе наплывы будут в начале и конце хода.
Рыболовам, за плетеный шнур - респект!
Есть разница в том что крепить на стенку. Прочитаете следующий пост и поймете почему.

Re: Треугольная система координат

Добавлено: 23 сен 2010, 17:14
DMexico
Я не хотел бы усложнять механику. Почему? Вот почему.
Живу я в 16-ти этажном доме. На одной торцевой стене - очень дорогая реклама Opel. Другая же стена абсолютно свободна. Дом на перекрестке. Адрес дома дробный.
Первое (полезное) что, я нарисую - всего лишь названия улиц со стрелками направлений и номер дома. Причем во всю ширину (не высоту) стены.
Укреплю на крыше два блока по краям торцевой стены и сделаю свое дело. Там же мелким шрифтом и ссылку на сайт "адресоподписчиков" нарисую.
И будет видна эта контрастная надпись за 2 километра. Трасса у нас окружная, международная. Многим поможет сориентироваться.
И вот как я буду работать с третьим вектором на высоте 40 метров?
Вот для более точных и быстрых "домашних" картин - можно поработать над оттяжкой с грузом и блоком.
Но это уменьшит размеры картины по вертикали вдвое. Груз должен куда-то опускаться, запас вертикали нужен.
Двигатели крепить на стене, на высоте 40 метров тоже не с руки. :stepper: :roll:
Гораздо проще вывесить 2 блока и раздать на них этот шнур рыболовный из центра верхней горизонтали крыши. Там же по "краю-центру" крыши: ноутбук, подвод питания (или емкие аккумуляторы), и вся механика с электроникой. :controller: :stepper:
Логичны для такого применения мои доводы? ;)

Re: Треугольная система координат

Добавлено: 23 сен 2010, 22:36
Nick
Со зданием имхо третья координата будет еще нужнее. Т.к. на свежем воздухе будет еще одна помеха - ветер. Плюс при большей длине тросов маятник будет раскачиваться дольше.

Третью координату можно пропустить через блок на земле и поднять опять наверх это же решит проблему уменьшения рабочей области. Но это Вам решать. В принципе, программа от разного количества осей не измениться.

Есть еще одно ограничение на просмотре траектории в EMC2 будет показываться всякая белиберда вместо нормальной картинки.
Также не рекомендую рисовать близко в верхней грани.

Еще нужно будет придумать исполнительное устройство на баллончике, которое будет нажимать на кнопку и как его подключать к контроллеру. Тянуть провод накладно - это дополнительные искажения на рисунке. Как вариант можно использовать радио передатчик. Самое простое взять радио передатчик от радиоуправляемой модельки, а на баллончик поставить сервомашинку.

В принципе мне почти все понятно, завтра приступлю к написанию программы.

Остался вопрос предпросмотра. Могу сделать опцию рисовать картинку...

Re: Треугольная система координат

Добавлено: 24 сен 2010, 07:08
DMexico
Поэкспериментируем с большей длиной тросов. При ветре, понятно, никто не будет работать.
Третья координата, уменьшает площадь рисунка до треугольника, который образуется когда гипотенузы становится на одну прямую с оттяжкой.
Белиберда будет появляться от множества отрезков которые образуют кривые?
О радио управлении думал, но пока остановился на тоненьком проводе, питающем реле.
Это будет отдельный плагин или еще одна закладка в G-code tools?

Re: Треугольная система координат

Добавлено: 24 сен 2010, 08:40
Nick
Просто отдельная закладка. Т.к. будут использоваться уже написанные функции.

Белиберда будет из-за того, что EMC будет думать, что он работает с прямоугольной системой координат.

Re: Треугольная система координат

Добавлено: 24 сен 2010, 11:19
DMexico
Может тогда над HAL поработать стоит? Познакомить его с треугольной системой, формулами перевода координат... Он способен на это вообще? Есть руководство по нему отдельно от диска?
Надо же все-таки контролировать ход выполнения рисунка. Остановы для смены цвета баллончика, многослойность... С крыши же не видно что именно вырисовывается и когда наконец это чудовище нарисуется... :lol:

Re: Треугольная система координат

Добавлено: 24 сен 2010, 11:48
Nick
Смена цвета уже предусмотрена - разные цвета в разных слоях и между слоями вставляется произвольный код.
По поводу когда нарисуется - будет видно сколько каракуль осталось нарисовать :). Тем более не во всех интерфейсах для EMC есть live plot. Из этого я делаю вывод, что он не обязателен.

С HAL ИМХО не получится. ЕМС буде рассчитывать скорость и ускорение и подавать на HAL команды, а там нелинейное преобразование, которое будет менять и скорость и ускорение со страшной силой.

Скоро напишу плагинчик, там будет видно.

Re: Треугольная система координат

Добавлено: 24 сен 2010, 12:04
Nick
Вот еще одно допущение:
Если мы рисуем прямую из точки А в точку Б, то получим не совсем прямую траекторию:
Необходимая точность будет достигаться дополнительным разбиением отрезков.

Re: Треугольная система координат

Добавлено: 24 сен 2010, 12:15
DMexico
Это выяснилось с помощью эмулятора? Преобразует координаты из систему в систему и рисует? :o
Я попробую смоделировать весь процесс. Рисовать сначала по прямоугольным координатам, а сверху другим цветом то же самое, но по треугольным. :geek:

Re: Треугольная система координат

Добавлено: 24 сен 2010, 12:42
Nick
Это я взял конкретные числа и нарисовал параметрическую кривую используя inkscape.

Вот так выглядит параметрическая функция описывающая траекторию:
0112 gcodetools grattiti.png
0112 gcodetools grattiti.png (7.59 КБ) 10264 просмотра
А теперь представьте насколько непросто сделать расчет длинны дуги такой кривой. А точнее найти значение t для заданной длины дуги да еще и в реальном времени и около 100 000 раз в секунду. Поэтому EMC не поддерживает треугольную систему координат.

Re: Треугольная система координат

Добавлено: 24 сен 2010, 13:04
DMexico
Согласен. Лучше переложить эти труды на Inkscape. Пусть он заранее вычисляет траекторию.

Re: Треугольная система координат

Добавлено: 24 сен 2010, 16:56
Nick

Gcodetools Ревизия 158

Первый вариант расширения Graffiti готов.
Как он работает:
1. Создаем опорные точки.
Точки создаются из вкладки Orientation и называются grafiti reference points.
При нажатии apply появляется вот такая точка:
0114 gcodetools grafitti reference point.png
0114 gcodetools grafitti reference point.png (1.52 КБ) 10264 просмотра
Стрелка обозначает положение точки, буква обозначает название оси для этой точки (название двигателя).
Нам нужно как минимум две таких точки. При создании второй точки она автоматически сдвинется на 100рх и поменяет название оси. Оси будут подставляться в таком порядке: X,Y,Z,A. Если нужно, то можно задать больше двух опорных точек, и размещать точки можно как угодно, хот все сверху, хоть все снизу. Но вы должны понимать, что баллончик не поднимется выше верхней точки ;).

2. Экспортируем в Gcode.
Открываем вкладку Graffiti. Ставим необходимое число в max segment length и нажимаем Apply. (Не забудьте прописать правильные пути для записи файла.)
Все готово.

Только как это тестировать :lol:. В EMC будет лабуда показываться...
Нужно будет написать программку для тестирования...

ЗЫ Вот готовый Gcode для надписи ""Gcodetools" с максимальной длиной сегмента 1мм:
gcodetools_graffiti.ngc
(45.54 КБ) 1109 скачиваний
А вот скриншот после экспорта в Gкод (показано разбиение на сегменты):
Снимок-Новый документ 1 — Inkscape-1.png (10264 просмотра) <a class='original' href='./download/file.php?id=718&sid=1cb848bbe9f4f82eee9a3702abd55f52&mode=view' target=_blank>Загрузить оригинал (135.06 КБ)</a>