Программирование роботов

Когда говорят о программировании роботов, многие сразу представляют строки кода на экране. Это, конечно, основа, но лишь вершина айсберга. На деле, самая сложная часть — это заставить алгоритмы корректно взаимодействовать с непредсказуемой материальной реальностью. Я много раз видел, как отлаженная в симуляторе программа даёт сбой на реальном объекте из-за банального люфта в креплении или отражения света от оцинкованной поверхности. Вот об этих нюансах, которые не прочитаешь в учебниках, и хочется порассуждать.

От модели к металлу: где кроются подводные камни

Возьмём, к примеру, задачу, с которой мы сталкивались в проектах для ООО Хэнань Юнгуан Электротехнические Технологии. Компания, как известно, занимается не только программированием роботов для монтажа, но и полным циклом — от производства металлоконструкций до их антикоррозийной обработки. Так вот, при программировании робота-манипулятора для сборки ферм казалось бы всё просто: берём 3D-модель, рассчитываем траектории, загружаем в контроллер. Но модель не учитывает, что реальная балка после горячего цинкования на их оборудовании имеет микроскопические наплывы цинка в местах сварки. Для глаза — ерунда, а для захвата — изменение центра масс и геометрии. Робот, запрограммированный на идеальную геометрию, начинал ?дрожать? в конечной точке, пытаясь загнать болт в отверстие с миллиметровым отклонением.

Пришлось вносить в алгоритм поправку не на чисто геометрические параметры, а на технологический процесс. Мы начали закладывать в программу не номинальный размер детали, а размер с допуском, характерным именно для оцинкованных изделий. Это потребовало тесной работы с технологами производства, чтобы получить реальные данные, а не голые чертежи. Без понимания полного цикла, который описан на их сайте hnyongguang.ru, где указано и цинкование, и выпуск крепежа, программист обречён на бесконечные доработки ?в поле?.

Ещё один момент — среда. Цех с готовыми металлоконструкциями — это не лаборатория. В воздухе может быть пыль, возможны вибрации от другого оборудования. Датчики робота, особенно оптические, могут вести себя нестабильно. Приходится писать более ?грубые? и устойчивые алгоритмы поиска и позиционирования, которые меньше полагаются на идеальные условия. Иногда проще и надёжнее использовать механическое центрирование детали, чем пытаться отсканировать её контур с микронной точностью в неидеальных условиях.

Программные комплексы: связующее звено между роботом и задачей

Собственно программирование роботов часто упирается в необходимость создания более крупного программного комплекса. Робот — это всего лишь исполнительное звено. Ему нужна система управления заданиями, интеграция с CAD-системами для загрузки моделей, интерфейс для оператора. В контексте ООО Хэнань Юнгуан, которая разрабатывает специализированные программные комплексы, это особенно актуально.

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

Здесь возникла классическая проблема: конфликт между оптимальностью с точки зрения механики (кратчайший путь) и технологической последовательностью. Например, при сборке некоторых узлов болты нужно затягивать в определённой очерёдности, чтобы не перекосить фланец. Пришлось в алгоритм маршрутизации вводить технологические ограничения, что сильно усложнило логику. Готовое решение, которое в итоге получилось, — это как раз тот самый специализированный комплекс, который учитывает и механику, и материаловедение (прочность соединения), и логистику процесса.

Интерфейс для оператора тоже стал нетривиальной задачей. Инженеру нужно не просто нажать ?старт?, а видеть прогресс, иметь возможность остановить процесс на конкретном болте для проверки, вносить корректировки в усилие затяжки для разных групп соединений. Мы сделали несколько итераций, пока не пришли к достаточно интуитивному, но при этом не перегруженному интерфейсу, который отображал 3D-модель конструкции с цветовой индикацией статуса по каждому крепёжному элементу.

Интеллектуальные роботы: что скрывается за этим термином?

В описании деятельности ООО Хэнань Юнгуан Электротехнические Технологии фигурирует создание интеллектуальных роботов для монтажа. В промышленном контексте ?интеллектуальность? — это не про самосознание, а про автономность принятия решений в ограниченном пространстве задач. Для монтажника-робота это, например, способность адаптироваться к небольшим отклонениям в позиции детали.

Одна из наших попыток реализовать такую адаптивность закончилась, скажем так, ценным уроком. Мы решили использовать систему технического зрения для коррекции позиции захвата в реальном времени. Казалось бы, классика. Но когда робот с тяжёлой балкой в захвате начал делать резкие корректирующие движения на основе видеопотока, это привело к опасным колебаниям всей конструкции. Выяснилось, что алгоритм обработки изображения работал с частотой 30 Гц, а система управления сервоприводами — с частотой 1 кГц. Возникли фазовые задержки и обратная связь пошла вразнос.

Пришлось серьёзно перерабатывать архитектуру. Мы снизили частоту опроса камеры и ввели прогнозирующий фильтр (типа Калмана), который сглаживал данные и предсказывал движение на несколько миллисекунд вперёд, исходя из динамики самого робота. Интеллект в данном случае свелся к умной фильтрации шумных данных и предсказательной модели, а не к сложному компьютерному зрению. Иногда простота и надёжность важнее сложных алгоритмов.

Ещё один аспект интеллектуальности — безопасность и взаимодействие с человеком. В том же цеху могут работать люди. Программируя робота, мы закладывали не только рабочую зону, но и динамические зоны безопасности, скорость движения которых зависела от приближения человека (считывалось по датчикам LiDAR). Это тоже код, но продиктованный уже не технологией монтажа, а требованиями безопасности. И его отладка была, пожалуй, самой нервной — моделировать вторжение человека в рабочую зону на реальном оборудовании страшновато.

Интеграция: когда железо и софт должны стать единым целым

Самое сложное в программировании роботов для таких комплексных производств, как у Хэнань Юнгуан, — это даже не написание кода для самого робота, а его интеграция в существующий технологический ландшафт. Робот по монтажу конструкций не существует в вакууме. Ему нужны детали, которые подаются с линии цинкования, болты определённого типа и прочности, которые тоже, возможно, делает эта же компания.

Был эпизод, когда мы потратили кучу времени на отладку точности позиционирования, а проблема оказалась в системе подачи метизов. Болты из новой партии имели чуть другую высоту головки из-за изменения параметров штампа на производстве крепежа. Робот, запрограммированный на старый стандарт, недозатягивал соединение. Пришлось налаживать обмен данными между MES-системой производства крепежа и управляющей программой робота, чтобы та автоматически корректировала глубину опускания гайковёрта в зависимости от партии болтов.

Это и есть та самая экосистема, которую компания декларирует: металлоконструкция, покрытие, крепёж, софт, робот. Программист в таких условиях должен мыслить не в терминах осей и координат, а в терминах сквозных технологических процессов. Иначе получится островная автоматизация, которая создаёт больше проблем, чем решает.

Интеграция с оборудованием для цинкования — отдельная история. После обработки деталь горячая и её геометрические параметры могут плавать. Нужно было встроить в алгоритм ожидание остывания до технологической температуры или, опять же, вводить поправку на тепловое расширение. Без прямого диалога с инженерами из цеха цинкования мы бы об этом просто не подумали, потому что в ТЗ обычно пишут ?смонтировать деталь?, а не ?смонтировать деталь, учитывая её температуру и состояние поверхности?.

Взгляд вперёд: практические выводы, а не футурология

Исходя из опыта, главный вывод по программированию роботов для промышленного монтажа — это необходимость глубокого погружения в смежные области. Недостаточно быть хорошим специалистом по ROS или KUKA. Нужно хотя бы на базовом уровне понимать металловедение, чтобы знать, как поведёт себя деталь под нагрузкой, основы технологии сборки, принципы коррозионной защиты (зачем нужно то самое цинкование, которое делает Хэнань Юнгуан).

Будущее, на мой взгляд, лежит не в усложнении алгоритмов ИИ для роботов, а в улучшении цифровых двойников и симуляторов, которые будут точнее учитывать физические свойства материалов и реалии производства. Симуляция, в которой можно заложить параметры реальной оцинкованной поверхности с её шероховатостью, сэкономит месяцы отладки на объекте.

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

Соответствующая продукция

Соответствующая продукция

Самые продаваемые продукты

Самые продаваемые продукты
Главная
Продукция
О Нас
Контакты

Пожалуйста, оставьте нам сообщение