top of page
Поиск
  • Фото автораpates00n

Робот-художник и G-code.

Как создать G-code из вашей картинки. Как перевести G-code в файл с координатами для робота-художника.

Об этом и пойдёт здесь речь.

Когда я задался целью найти способ перевода картинки в координаты для робота-художника, главной моей задачей было сделать этот способ максимально простым. Этот способ должен быть доступен начинающим любителям робототехники, и не должен был требовать от них умения программировать на текстовых языках (Python, C, Java и т.д.) .

Поэтому главная идея моего первого способа заключается в том, что в программе Scratch картинка дублируется линиями, координаты которых записываются в массив данных, который потом экспортируется в текстовый файл. Об этом способе я подробно рассказал на своём канале:

Сейчас я хочу предложить второй способ, в котором я постарался сохранить простоту и доступность. Его идея заключается в том, что уже давно существуют языки описания графических изображений в текстовом формате, такие как SVG (от англ. ScalableVectorGraphics —масштабируемая векторная графика) и G-code.

И всё, что нам нужно - это перевести картинку в формат какого-то из этих языков (а именно G-code) и максимально просто перевести полученный файл в файл координат для нашего робота.

Чтобы перевести картинку в файл G-code, вам потребуется установленная на вашем компьютере программа Inkscape, которую можно скачать с сайта https://inkscape.org.


Далее я дам немного теории, которая даётся для справки. Если вам это неинтересно, пропустите этот материал и сразу переходите к инструкции создания файла.



Что представляет из себя G-code? Ниже дан кусок этого кода:

G00 Z5.000000

G00 X399.312280 Y97.305660


G01 Z-0.125000 F100.0(Penetrate)

G02 X389.872027 Y98.128378 Z-0.125000 I-0.694930 J46.598366 F400.000000

G02 X380.056942 Y100.466354 Z-0.125000 I21.011035 J109.978072

G02 X377.020989 Y101.631920 Z-0.125000 I5.113780 J17.856536

G02 X411.384926 Y98.006384 Z-0.125000 I-0.946950 J-4.632367

G02 X411.371789 Y97.495327 Z-0.125000 I-0.151788 J-0.251796

G02 X408.009260 Y96.349940 Z-0.125000 I-5.168096 J9.663644

G03 X403.660354 Y96.827600 Z-0.125000 I-2216.130742 J-20179.077351

G02 X399.312280 Y97.305660 Z-0.125000 I1086.808706 J9910.138939

G01 X399.312280 Y97.305660 Z-0.125000

G00 Z5.000000


Как видите каждая строка содержит:

  1. Команду, которая начинается с буквы G и двузначного кода команды. Здесь мы командуем пером нашего робота. Команда 00 - поднять перо. Команды 01,02,03 - опустить перо и двигаться к следующей точке с опущенным пером. Чем отличаются эти три команды - нам безразлично.

  2. Координаты X, Y - это как раз то, что нам нужно. Координата Z нам, естественно, не нужна.

  3. И далее (буквы I, J, F) - описание дуг и кривых, которыми соединяются эти точки. Нам эта информация тоже не нужна, так как точки расположены на очень близком расстоянии, которого для нашей точности вполне достаточно. И соединять эти, и так близкие точки, ещё и дугами - для нас это избыточная точность, которая к тому же сильно усложнит программу нашего робота.

То есть нас интересует только код команды и координаты X и Y, остальное мы просто игнорируем.


Это и выполняет программа на языке Scratch, которую я выложил в открытый доступ на сайте https://scratch.mit.edu.

Я не буду объяснять ход выполнения этой программы, вы и сами это сможете сделать, если вас это интересует. Расскажу только что она делает.

Сперва в список G-list экспортируется наш G-code файл. Программа построчно анализирует этот файл, извлекает из этих строк код команды, координаты X и Y и записывает эти координаты и команды подъёма пера в список pict_coord, попутно прорисовывая точки с этими координатами в поле сцены.



Инструкция по созданию файла с координатами для робота.

В данном видеоролике показаны последовательность действий, которая перечислена ниже:


1. В программе Inkscape изменить размер листа (под размер сцены Scratch 480x360).


2. Импортировать картинку, которую вы хотите нарисовать роботом:


3. Выделить изображение (стрелкой)

и векторизовать растр (Контур -> Векторизовать растр):

После этого вы получите две картинки: растровую и векторную, которые наложены друг на друга. Если вы выделите какую-нибудь картинку и сдвинете её, вы увидите второе изображение. Векторную можно отличить от растровой двойным кликом по ней - она примет вид точек, растровая же не изменится.


4. Удалить растровую картинку и оставить векторную:


5. Повернуть векторное изображение и растянуть его на весь лист:


6. Если полученное векторное изображение содержит на ваш взгляд слишком много точек, его можно упростить: Контур -> Упростить


7. Запустить расширение G-кодирование (выделив предварительно картинку):


8. Задать каталог, в котором будет сохраняться результат:


9. Обязательно вернуться на первую вкладку и оттуда запустить преобразование:


10. В результате получится такая картина:


11. В заданном в п.8 каталоге должен появиться результат G-кодирования:


12. Зайти на сайт https://scratch.mit.edu.

Ввести в строку поиска название проекта gcode_pict и зайти внутрь проекта

(либо по прямой ссылке https://scratch.mit.edu/projects/409420394/editor/)


13. Импортировать полученный файл G-code в список G-list:

14. Запустить программу на исполнение (нажав зелёный флажок). Чтобы ускорить выполнение программы, выберите режим "Турбо".

В результате будет прорисована картинка и создан список, в котором и будут записаны требуемые координаты выбранного рисунка.


15. Экспортируйте список pict_coord - в папке "Загрузки" появится файл pict_coord.txt.


Переименуйте его в pict_coord.rtf. Загрузите его в блок EV3 и запустите на нём программу, робот нарисует картинку.

Эти шаги неоднократно были подробно рассмотрены в роликах на моём канале .

На фото ниже показаны два рисунка. На левом файл координат создан вручную первым способом, на правом- данным способом с использованием G-code. Оба нарисованы роботом на тележке.




685 просмотров0 комментариев

Недавние посты

Смотреть все

Comments


bottom of page