Яндекс.Метрика

    Песочница

    Искусственный интеллект в 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. А также о новых исследованиях в этой области.

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

    Спасибо за внимание!