Металл2024 Реклама
Метобр2024 Реклама

Нейросеть ChatGPT может генерировать GCode

eng1nerd
Идет загрузка
Загрузка
19.07.2023
4129
9
Разное

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

16
Статья относится к принтерам:
Flying Bear Ghost 5

Другая интересная идея

Убедившись в том, что нейросети способны генерировать изображения на тему 3D-печати, я продолжил экспериментировать. Тем более, что в комментариях к предыдущей заметке прозвучала более полезная и интересная идея, а именно – научить нейросеть генерировать GCode для 3D-печати.

Это действительно может оказаться полезным в случае, если нужно написать нестандартный GCode для 3D-печати материала с заданной структурой, а привычные настройки программ для слайсинга не могут дать ожидаемый результат.

К сожалению, нейронная сеть Шедеврум (shedevrum.ai) от компании Яндекс (что в версии beta 0.1.4, что в текущей версии) пока не подходит для проверки этой идеи. Поэтому для очередного эксперимента было решено воспользоваться другой нейросетью – ChatGPT.

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

Это я и решил проверить.

Поехали

Перед нейросетью была поставлена задача сгенерировать GCode для 3D-печати простейшего слоя, состоящего из десяти одинаковых прямых линий длиной 10 мм, уложенных друг за другом с шагом 0.2 мм. параметр экструзии был задан произвольно.

Ниже представлены примеры генерации GCode в ChatGPT версии 3.5 и 4.0 по текстовым запросам (промтам). 

Оба тестовых запроса были составлены на английском языке одинаковым образом, за исключением некоторых мелочей. Например, второй запрос отличался от первого тем, что включал смещение начальной точки относительно начала системы координат. Другие же отличия связаны с многократным уточнением для нейросети правил написания отдельных команд GCode с целью их правильного прочтения слайсером.

Таблица - Сравнение результатов генерации простейшего GCode по текстовому запросу

Версия нейросетиТекстовый запрос (промт)Результат
ChatGPT-3.5

Write a txt file with gcode for Slic3r Slicer.

Printing is in relative coordinates using G91 in the beginning.

Layer thickness is equal to 0.3.

The layer consists of 10 lines printed next to each other along X axis, the length of each line is 10 mm, first line is printed along the positive direction of X axis.

Then, after spacing, we print the second line along negative direction of X axis.

Then spacing and etc.

The spacing along Y axis between these lines is equal to 0.2 mm.

Spacing is constant and does not increase.

Spacing commands after move for spacing should be written separately.

E values are equal to 3 for every move with extrusion along X axis.

No spacing along X axis.

G91

G21

G92 E0

G1 X10 E3 ; Move to the starting point of the first line, extruding 3mm

G92 E0 ; Reset extruder position

G1 Y0.2 ; Move up 0.2mm along the Y axis for spacing

G1 X-10 E3 ; Move to the starting point of the second line, extruding 3mm

G92 E0 ; Reset extruder position G1

Y0.2 ; Move up 0.2mm along the Y axis for spacing

G1 X10 E3 ; Move to the starting point of the third line, extruding 3mm

G92 E0 ; Reset extruder position

G1 Y0.2 ; Move up 0.2mm along the Y axis for spacing

G1 X-10 E3 ; Move to the starting point of the fourth line, extruding 3mm

G92 E0 ; Reset extruder position

G1 Y0.2 ; Move up 0.2mm along the Y axis for spacing

G1 X10 E3 ; Move to the starting point of the fifth line, extruding 3mm

G92 E0 ; Reset extruder position

G1 Y0.2 ; Move up 0.2mm along the Y axis for spacing

G1 X-10 E3 ; Move to the starting point of the sixth line, extruding 3mm

G92 E0 ; Reset extruder position

G1 Y0.2 ; Move up 0.2mm along the Y axis for spacing

G1 X10 E3 ; Move to the starting point of the seventh line, extruding 3mm

G92 E0 ; Reset extruder position

G1 Y0.2 ; Move up 0.2mm along the Y axis for spacing

G1 X-10 E3 ; Move to the starting point of the eighth line, extruding 3mm

G92 E0 ; Reset extruder position

G1 Y0.2 ; Move up 0.2mm along the Y axis for spacing

G1 X10 E3 ; Move to the starting point of the ninth line, extruding 3mm

G92 E0 ; Reset extruder position

G1 Y0.2 ; Move up 0.2mm along the Y axis for spacing

G1 X-10 E3 ; Move to the starting point of the tenth line, extruding 3mm

G92 E0 ; Reset extruder position

M104 S0 ; Turn off the extruder

G90 ; Switch to absolute coordinates

M106 S0 ; Turn off the fan

M104 S0 ; Turn off the extruder

M140 S0 ; Turn off the heated bed

M84 ; Disable motors

ChatGPT-4.0

Write a txt file with gcode for Slic3r Slicer.

Printing is in relative coordinates using G91 in the beginning.

Starting point is shifted at 10 mm along X axis.

Layer height is equal to 0.3.

The layer consists of 10 lines printed next to each other along X axis, the length of each line is 10 mm.

First line is printed along the positive direction of X axis.

Then, after spacing along Y, we print the second line along negative direction of X axis.

Then spacing along Y and etc.

The spacing along Y axis between these lines is equal to 0.2 mm.

Spacing is constant and does not increase.

Spacing commands after move for spacing should be written separately.

E values are equal to 3 for every move with extrusion along X axis.

No spacing along X axis.

Merge commands for extrude filament and printing lines along X axis.

Separate spacing commands along the Y-axis are included after each move in the X direction.

Apologies for the oversight earlier. Here is the corrected GCode file for Slic3r Slicer, which includes merged commands for extruding filament and printing lines along the X-axis, with separate spacing commands along the Y-axis:

G21

G91

G1 X10

G90

G92 E0

G92 E0

M104 S200

G91

G1 E3 X10

G92 E0

G1 Y0.2

G90

G91

G1 E3 X-10

G92 E0

G1 Y0.2

G90

G91

G1 E3 X10

G92 E0

G1 Y0.2

G90

G91

G1 E3 X-10

G92 E0

G1 Y0.2

G90

G91

G1 E3 X10

G92 E0

G1 Y0.2

G90

G91

G1 E3 X-10

G92 E0

G1 Y0.2

G90

G91

G1 E3 X10

G92 E0

G1 Y0.2

G90

G91

G1 E3 X-10

G92 E0

G1 Y0.2

G90

G91

G1 E3 X10

G92 E0

G1 Y0.2

G90

G91

G1 E3 X-10

G92 E0

G1 Y0.2

G90

M104 S0

M84

Сначала нейросеть генерировала отрезки со смещением вдоль оси OX.

Нейросеть ChatGPT может генерировать GCode

Однако после нескольких уточнений удалось добиться желаемого результата.

Ниже приведены результаты визуализации каждого набора сгенерированных команд GCode в слайсере Repitier-Host V2.3.1.

Нейросеть ChatGPT может генерировать GCode

Проверка результата генерации простейшего GCode нейросетью ChatGPT-3.5 в слайсере Repitier-Host V2.3.1.

Нейросеть ChatGPT может генерировать GCode

Проверка результата генерации простейшего GCode нейросетью ChatGPT-4.0 в слайсере Repitier-Host V2.3.1 

Можно видеть, что в обоих случаях нейросеть не выдала строчки GCode для настройки высоты (толщины) слоя. В остальном, слайсер хорошо распознает полученные команды.

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

П.Я.Т.Н.И.Ц.А.

Пятница не за горами, поэтому желаю всем участникам Сообщества хороших выходных!

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


Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

16
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама