Искусственный интеллект в CAM-системах, для решения задач автоматизации процессов создания управляющих программ

Хорошо изучив хабр – встретил много интересных решений, построенных на нейронных сетях.
Также нашел редкие топики по тематикам САПР, а именно CAD/CAM системам, что навело на мысль: «а почему бы не написать о своих разработках и мыслях сюда?». Ведь здесь приличное количество специалистов, программистов и просто толковых людей. А в научных и профессиональных кругах на моем местном уровне — обсудить тонкости по данной тематике практически нереально. По-крайней мере поиски разработчиков подобного ПО с целью общения у меня не увенчались успехом и они по сей день не прекращаются.

image

Уже несколько лет, я занимаюсь изучением систем искусственного интеллекта (ИИ), а основная рабочая деятельность плотно связывает меня с CAD/CAM-системами и оборудованием с ЧПУ (числовым программным управлением).

И однажды настигла врасплох мысль? А почему бы не совместить одно с другим? Т.е. почему бы не интегрировать ИИ в САПР? Около года ушло на сбор по-крупицам информации о достижениях буржуев в данной области. И оказалась весьма забавная картина – ИИ ими используется, но для весьма ограниченных задач и целей. В большинстве своем, решаются задачи классификации и распознавания объектов (например, типовых элементов в твердотельной модели детали). А как же область софта, в котором пишут управляющие программы? Ведь этот процесс насыщен большим количеством ручной работы.

Вот тут и началось углубленное изучение основных представителей CAD/CAM-систем по тематике максимального упрощения и автоматизации процессов написания программ. Имеется и по сей день пополняемый, опыт работы в различных пакетах. Также было много полезного общения на выставках, конференциях, даже непосредственно на территории зарубежных компаний. К чем все это привело? А привело это к одному – я решил начать разрабатывать свой алгоритм. Понятно, что уровень моих программных разработки никогда не дотянет до уровня кода серьезной компании с великим штатом программистом, однако же начать с проведения теоретических исследований мне никто не мешал. А много думать головой – это оказывается даже полезно!

Идея своего алгоритма, из простых мыслей — медленно начинала перерастать во что-то осязаемое и вполне ощутимо реальное. Начато было с малого – с решения вопроса автоматизации описания механической обработки типовых элементов. Для краткой справки: типовые элементы – это отверстия, карманы и пазы в моделях и самих деталях (показано на рисунке)

image

Было придумано незамысловатое название будущего алгоритма: «i-feature». Скажу сразу – это никакой не стартап, и не коммерческий проект. Это попросту дело души и научного интереса. Вот сделанное мной лого проекта:

image

Далее были проведены первые испытания алгоритма (правда пока лишь теоретические). Но об этом позже. В чем же суть моей разработки? Покажу на примере обработки обычного отверстия, которое получают элементарным сверлением.

image

Отверстие, как и любой типовой элемент, обладает своими параметрами. Собственно вот они:

Lотв – глубина отверстия;
Dотв – его диаметр;
Mдет – обрабатываемый материал;

Также еще присутствует инструмент – сверло, обладающее также параметрами:

Lсверла – длина режущей части (т.е. насколько глубоко им можно просверлить);
Dсверла –диаметр сверла;
Mдет – обрабатываемый материал;

Вроде бы все логично. И что здесь можно оптимизировать, скажете вы? Вот тут-то и начинается самое интересное! Рассмотрим пример: мы обрабатываем деталь из титана, и нам необходимо просверлить отверстие диаметром 8 мм на глубину 45 мм. Кто сталкивался в живую с таким – знает, что сверлится тяжело и необходимо дробить глубину сверления на части. Причем либо с инкрементом, либо с жесткой величиной шага прохождения сверлом короткого расстояния в отверстии. Отсюда и возникает еще один параметр, относящийся уже к стратегии обработки:

Nпроходов – количество «тычков» сверлом, необходимое для достижения требуемой глубины.

«Тычки» необходимы для двух вещей: отвода стружки из отверстия и дополнительного охлаждения сверла. Все достаточно для того, чтобы инструмент попросту не сломался, а также быстрее не износился.

Резюмируя описание условий обработки — абсолютно верным будет задействовать два её важных параметра – скорости резания и подачи.

Итак! В общем итоге мы имеем 9 параметров, которыми можно описать механическую обработку элементарного отверстия. И что с ними сделать? Как получить автоматизацию в перспективе?

Как раз тут и вступает в работу разработанный алгоритм «i-feature». Его схема работы показана на рисунке:

image

Все предельно просто: в качестве параметров, используемых в линейной структуре – диаметр отверстия и его глубина, коррелирующая с диаметром сверла и длиной его режущей части. А в качестве параметров для интеллектуальной структуры, используются материалы сверла, детали и глубина отверстия совместно с режимами обработки и количеством проходов.

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

А вот что с интеллектуальной структурой и ее параметрами? Представим, что подобных (именно подобных, а не аналогичных) отверстий в детали много, и все необходимо обработать исходя из условий материала сверла или детали. В таком случае — скажут опытные инженеры: «нам на помощь придут заранее созданные шаблоны, которые есть и давно внедрены во все современные САПР!» Ведь с шаблонами все просто – задал заранее все параметры и копипастишь их по мере необходимости. Со стороны шаблоны кажутся вроде прекрасным решением, но есть одно но!

Что делать, если кардинально меняется глубина отверстия или обрабатываемый материал? Заново создавать шаблон? Или описывать все ручками в отсутствии заготовленного шаблона?

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

А чтобы не ограничивать себя — было принято решение сделать его не просто полностью автоматическим, но и разумным, интеллектуальным! Таким, чтобы система могла сама иметь представление о том, КАК необходимо обработать подсунутый ей пользователем элемент в детали!

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

Сеть для обработки нашего отверстия была таковой:

image

Количество входов — 3. Количество выходов — 3. Количество скрытых слоев было выбрано исходя из формулы 2n-1, где n – количество входов.

Для обучения сети были подготовлены обучающие выборки, в которых представлены примеры обработки различных материалов с разными глубинами и режимами резания. Пока сеть была создана, обучалась и моделировалась в Matlab`e 7 (спасибо им за хорошие нейро-решения) и показала отличный результат по минимальной величине ошибки и результатам прогнозирования.

Сейчас в теоретическом виде разработан алгоритм пробной интеграции "i-feature" в САПР Unigraphics NX. Там данная разработка будет работать в паре с неплохим модулем по распознаванию типовых элементов в детали (FBM`ом вроде зовется).

Также имеются построенные сети для остальных видов типовых элементов (пазов и карманов). По ним аналогично расписаны все параметры для линейной и интеллектуальной структур.

Работа кипит! (в зависимости от величины моего свободного времени и настроения)

Останавливаться на достигнутом желания нет.

Основная цель работ – в ближайшем будущем, полностью заменить понятие шаблона в CAM-системах и уйти на тотальную автоматизацию и упрощение работы пользователей в данного рода системах.

В следующих постах начну описывать процессы интеграции в существующую CAM. А также о новых исследованиях в этой области.

Буду рад замечаниям и комментариям.

Спасибо за внимание!
Поделиться публикацией

Комментарии 18

    +6
    По моему личному мнению такая система должна встраиваться в CAD/САМ систему в качестве подсистемы выбора режима резания. Примеры со скоростями резания, подачи и т.п. кстати не очень удачные: на многие материалы, обрабатываемые диметры найдутся уже подобранные оптимальные режимы резания. На похожие материалы и близкие диаметры можно использовать те же режимы резания или интерполировать.
    Интересно было бы в качестве входных параметров добавить обрабатываемый материал, а в качестве выходных — материал режущего инструмента. Вот тогда в проектах, где используются сложнообрабатываемые материалы и данных о них в справочниках мало, и невозможно сразу определить твердосплавным или металлокерамическим или быстрорежущим инструментам обрабатывать.
    Ещё бы в качестве выходных данных геометрические параметры инструмента (для того же сверла — угол при вершине и т.д.).
      +1
      Отвечу по-порядку:

      С режимами резания — согласен, но здесь они идут как фактор комплексности. т.е. глобальная задача — накопление опыта конкретного пользователя (или целого предприятия), с целью возможности его масштабирования.

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

      Насчет геом параметров — уже продумано. я просто не стал описывать этот момент в статье. По всем элементам есть полный набор параметров и можно подбирать инструмент исходя из параметров. К слову есть даже идеи по созданию небольшого «умного» создателя инструмента, построенного на той же нейросети. Например, надо сверло приближенное по своим параметрам к каталожному (какого-либо производителя) — создается сеть, обучается на туче примеров и далее с помощью нее работает ф-ия создания сверла. Пользователю лишь остается нажать ОК или внести корректировку в предложенную конфу (а это гораздо лучше чем вбивать руками каждый инструмент)
      +1
      А «мощность» и «усилие» как-то в модели учитываются?
        +1
        Смотря для чего они нужны? В целом все современные системы ЧПУ автоматически снимают и учитывают показатели нагрузки и усилия на шпинделе.
        Но ничего не мешает ввести эти параметры, насколько я знаю — там корреляция физики и математики.
          +1
          Для точности и адаптивности моделирования — т.е. это обеспечение «обратной связи».
          Эти параметры имеют важное значение и соответствие их заданным параметрам снимаемым со станка должно быть обязательным и без них модель не будет адекватной.
            0
            Вопросы адаптивности систем не рассматривался. Ведь САПР — это программное обеспечение, а оно зачастую может даже и не видеть живой станок.
            Однако ваши мысли мной уже давно продуманы-то есть внедрить разработку можно не только в Софт, но и на стойку системы чпу. А там уже и параметры явлений в процессе обработки можно снимать и учитывать. К примеру стойки станком Мазак обладают такими отдаленно поХожими Функциями, однако средства по созданию на самих стойках программ-ограниченны. Я общался с Понцем, который в отделе разработки софта для стойки-они далековаты в плане интеллектуализации именно процессов написания программ. Хотя железо стойки умеет многое.
        +2
        Очень интересная тема! Хотелось бы знать, какое будущее проекта ожидает? будет ли он опенсурсным или вы планируете поддерживать разработку самостоятельно?
          +1
          Спасибо. Ну самостоятельно силенок точно не хватит. И проект будет сусолиться так долго, что попросту какая-либо крупная компания внедрит что-то подобное в свою очередную версию системы.

          Пока я вижу проект в виде подпрограммы (модуля, плагина — как удобнее называть) к CAM-системам. Это вполне реально, т.к. много систем обладают открытыми API и возможность интеграции своего кода.

          А вот насчет опенсурсности — хорошая идея, я задумался;)
            +2
            Если решитесь его открыть, я бы с удовольствием присоединился и помог чем смог. И пожалуйста, пишите все новости о проекте сюда, с нетерпением жду продолжения.
              0
              Огромное спасибо! Буду писать этапы выполнения. Если не трудно — напишите чем владеете в личку.
          +1
          Реальное и полезное дело. Успеха вам и внедрения наработок на практике.
            0
            Спасибо. Насчет практики думаю как же это лучше реализовать. Можно сделать модуль для существующих нескольких систем, можно попробовать построить новую систему, но второе — не особо конкуренто-способно. т.к. нужны ресурсы для реализации.
            +2
            Применять нейронные сети везде где только можно не факт что есть наилучшее решение _конкретной_ задачи. Возможно ваша задача не _прогнозирования_, а _оптимизации_. А поэтому и порыть можно в несколько иные направления: графы (наикратчайший путь от отверстия к отверстию с учетом их _стоимости_), динамическое программирование и т.д…

            Куда интереснее не придумать _очередной_ алгоритм для задачи, а показать и доказать что он — единственно верный или значительно превосходит другие.
              0
              Соинтеграция различных математических решений возможно, но я начал с мелкого — с элементарной автоматизации. Задача пока — не сократить траектории перемещения (как умеет делать тот же VeriCut), а уменьшить количество действий и кликов юзера. И чтобы юзеры с минимальной квалификацией могли использовать все возможности сложных систем.
              +1
              САПРовцы на Хабре есть ;-)

              Юниграфикс довольно дорогая платформа.
              Как насчет Солидворкс или Инвентор?

              С нетерпение буду следить за развитием проекта.
              Обращайтесь, может и помочь нужно?
                0
                Это замечательно, что есть — попробуем создать хороший и интересный уголок для общения и возможно даже реализации проектов совместно! Просто лезть на форум сапр2000 — неинтересно. Тут атмосфера более приятная.

                Ёжик (UG) достаточно удобен в плане написания подпрограмм через открытые библиотеки, а также в нем — очень сильный CAM. В солиде есть так называемый солидкам, но он общепризнанно слабоват. Насчет инвертора — честно не думал.

                Насчет помощи — пульну в личку сообщение.
                0
                Обучающими данными является библиотека шаблонов? А каков примерно объем библиотеки — сколько штук шаблонов там имеется? И еще чисто технический вопрос — Мдет это какой-то модуль твердости (вещественное число) или что?
                  0
                  Нет, не библиотека. От шаблонов надо уходить — это моя основная задача. Они, конечно, сильны в плане применяемости, но нет универсальности. Все время надо перевыбирать плоскости, объекты итд, а автоматических решений толковых я ни у кого пока не видел.

                  Данные для обучения — туча параметров, относящихся к механической обработке. Этими параметрами юзаемся для взаимодействия с классами, которые доступны через API выбранной САПР. Причем никто не мешает расширить наборы данных или использовать несколько параллельных сетей в работе.

                  Мдет — это материал детали. При обучении использовалась пока упрощенная таблица основных материалов, используемых в промышленности. Можно естественно ее расширить, но это уже тонкости и мелочи.

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

                Самое читаемое