Как создать 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
Как видите каждая строка содержит:
Команду, которая начинается с буквы G и двузначного кода команды. Здесь мы командуем пером нашего робота. Команда 00 - поднять перо. Команды 01,02,03 - опустить перо и двигаться к следующей точке с опущенным пером. Чем отличаются эти три команды - нам безразлично.
Координаты X, Y - это как раз то, что нам нужно. Координата Z нам, естественно, не нужна.
И далее (буквы 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. Оба нарисованы роботом на тележке.
Комментарии