Мы часто думаем, что автоматизация — это когда человек уходит из процесса |
||
|
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ Атаки на ИИ Внедрение ИИИИ теория Компьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Промпты. Генеративные запросы Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2026-08-14 11:24 Мы часто думаем, что автоматизация — это когда человек уходит из процесса. Но на практике иногда всё наоборот: человек остаётся, а его опыт и руки становятся главным источником знаний для робота. Именно такую задачу мы поставили перед собой в НИИ Крокодил — небольшой команде внутри завода штампов и пресс-форм ИЖ?РЭСТ. Мы пришли на завод из IT и теперь разбираемся, как соединить опыт людей из цеха с тем, что умеем сами. Недавно у нас появилась идея автоматизировать часть процесса полировки. В теории всё выглядело просто: взять хаптик, связать его с промышленным роботом и научить сотрудников завода работать с этой связкой. Для проверки гипотезы мы обратились к специалистам Университета Иннополис. Они предоставили оборудование и помогли разобраться с платформой, а наша команда написала программный мост на C++ и начала проверять, сможет ли робот повторять движения человека. Сначала всё шло хорошо: робот довольно быстро научился двигаться вслед за хаптиком. А вот с реальной полировкой оказалось сложнее. Полировка металлических деталей выглядит не самой сложной производственной операцией: берёшь инструмент и ведёшь его по поверхности. На практике всё тяжелее. Инструмент постоянно вибрирует, и эта вибрация передаётся в руки и суставы. Работать так приходится не несколько минут, а часами. При этом человек не может всё время двигаться с одной скоростью и одинаково прижимать инструмент к детали. Полностью убрать полировщика из процесса нельзя: робот всё?таки машина и не понимает всех нюансов обработки. Поэтому мы решили оставить принятие решений человеку, а повторяющуюся работу передать роботу. Полировщик один раз показывает нужное движение, система записывает траекторию, а потом робот повторяет её самостоятельно. Для управления мы выбрали хаптик — устройство, движения которого можно считывать в пространстве и передавать промышленному роботу. Готового решения у нас не было. Во время одной из первых поездок в Казань мы искали команды, занимающиеся промышленной робототехникой. Так познакомились со специалистами Университета Иннополис — российского вуза, специализирующегося на образовании и разработках в ИТ, ИИ и робототехнике. В лаборатории нам показали роботизированный манипулятор и хаптик 3D Systems Touch. Оказалось, в Центре развития промышленной робототехники уже работали с похожими задачами, поэтому решили проверить нашу идею на их платформе. Для эксперимента Университет Иннополис предоставил оборудование и помог разобраться с его базовой архитектурой и управлением. В проекте появились промышленный робот SIASUN SR25A-20/1.80, контроллер RH06A, хаптик 3D Systems Touch и RobotSDK. Дальше началась наша часть работы: нужно было связать устройства в одну систему, написать программный мост и научить промышленного робота повторять движение небольшого настольного хаптика. Как нам тогда казалось, оставалось совсем немного. В итоге получилась такая цепочка: 3D Systems Touch ? компьютер с нашим программным мостом ? контроллер RH06A ? робот SIASUN SR25A. Хаптик подключается к компьютеру по USB, его положение и кнопки мы читаем через OpenHaptics. На компьютере работает консольный мост touch_to_siasun_min.exe. Он получает данные от Touch, пересчитывает их в координаты робота и передаёт команды контроллеру. С контроллером программа общается через SIASUN RobotSDK по UDP, порт 9999. RH06A уже управляет сервоприводами самого робота. Движение идёт не через графический интерфейс штатного пульта: наша программа напрямую вызывает API RobotSDK, открывает UDP?сессию с контроллером и отправляет команды движения. Вот упрощённый пример пути, который использует наш мост: программа инициализирует RobotSDK, соединяется с контроллером, получает текущую позу рабочего инструмента и меняет координату по оси Z на 20 миллиметров. Затем команда Movl_P2P_RPY отправляет робота в новую точку линейным движением. В настоящем мосте всё происходит непрерывно: вместо одного изменения координаты программа постоянно получает новое положение хаптика и строит из этих данных поток команд. Основную часть написали на C++, дополнительно сделали Python?обёртку. Над первой версией работали Дима, Паша и Женя. MVP, с которым уже можно было передавать и повторять движения, собрали примерно за месяц. Правда, написать pose.pz += 20 оказалось гораздо легче, чем сделать нормальное управление рукой. У Touch и промышленного робота разные рабочие зоны: стилус хаптика можно переместить на несколько сантиметров, а радиус досягаемости SIASUN SR25A составляет около 1,8 метра. Кроме того, у них разные начала координат, направления осей и масштабы движения. Поэтому нельзя просто взять координату Touch и отправить её роботу. Пришлось определить, какая точка хаптика соответствует текущему положению робота, сопоставить направления осей и подобрать масштаб. Отдельно нужно было решить, что делать у границы рабочей зоны Touch, какие движения считать обычным дрожанием руки и с какой скоростью разрешить двигаться промышленному манипулятору. Сам робот при этом возвращает нам обратную связь. Мы получаем декартову позу инструмента: px, py, pz — положение в миллиметрах; rx, ry, rz — ориентация кисти в градусах. Также читаем углы всех шести суставов J1–J6 и состояния контроллера: выполняется ли основная программа, находится ли робот на траектории, есть ли предупреждение или авария. За счёт этого мост понимает не только куда мы хотим отправить робота, но и где он находится сейчас. Красивого интерфейса у нас пока нет. Сейчас управление выглядит примерно так: [STREAM] #4301 (372.252, -323.739, 7.235) d=1.83225 mm speed=200 rc=0 OnPath=1. В этой строке видно, в какую точку движется робот, каким получился шаг, с какой скоростью отправлена команда и принял ли её контроллер. rc=0 означает, что вызов RobotSDK прошёл без ошибки, а OnPath=1 — что робот находится на траектории. Иногда в логе появляется запись [QUEUE] skip (stream): within deadzone. Это значит, что хаптик сдвинулся совсем немного и мы решили не отправлять роботу новую команду. Даже когда человек старается держать стилус неподвижно, координаты всё равно слегка меняются. Если передавать роботу каждое такое движение, очередь быстро заполнится почти одинаковыми точками. На траекторию они практически не повлияют, а задержку увеличат. Поэтому мы добавили мёртвую зону: пока смещение остаётся меньше заданного значения, новая команда контроллеру не отправляется. Есть и режим переякорения. Рабочая зона у настольного Touch небольшая, а у промышленного робота — заметно больше. В какой?то момент стилус упирается в край, хотя манипулятору ещё есть куда двигаться. Тогда человек включает условное «сцепление», возвращает стилус в удобное положение и продолжает работу. Робот это обратное движение не повторяет. Примерно так же мы переставляем мышь на столе, когда не хватает места, чтобы довести курсор до нужной точки. Только вместо курсора здесь промышленный манипулятор, поэтому к границам рабочей зоны мы относимся чуть внимательнее. Когда мы впервые заставили SIASUN следовать за Touch, появилась ещё одна проблема. Человек может очень быстро передвинуть стилус. Роботу для выполнения той же команды нужно повернуть несколько осей и физически переместить тяжёлый манипулятор. Если точки приходят быстрее, чем робот успевает их проходить, они начинают складываться в очередь. Человек уже остановил руку, а робот всё ещё честно воспроизводит команды, которые получил несколько секунд назад. Чем активнее двигать хаптиком, тем сильнее может увеличиваться задержка. Часть проблемы решает мёртвая зона: мы не отправляем микросдвиги. Но просто выбрасывать больше точек тоже нельзя. Если оставить их слишком много, робот будет отставать. Если отфильтровать — траектория станет грубой и рваной. Нужно было одновременно не засорять поток лишними координатами, сохранять форму движения человека, учитывать реальную скорость робота, не позволять очереди бесконечно расти и не выводить манипулятор за рабочую область. В этот момент наш мост перестал быть просто проводом между двумя устройствами. Он превратился в слой управления, который должен примирить маленький быстрый хаптик и большую медленную промышленную руку. Пока робот в основном повторяет движения в пространстве. Для полноценной работы с металлом этого мало. Можно идеально воспроизвести траекторию и получить плохую полировку: например, неправильно выставить инструмент, выбрать слишком высокую скорость или не выдержать нужный прижим. Робот при этом ничего не заподозрит. Он очень точно выполнит плохую команду. Сейчас для него изготавливают новый полировочный инструмент. После этого начнутся тесты уже не в воздухе, а на реальных деталях. Предстоит выяснить, как инструмент касается поверхности, какое усилие получается в разных точках, насколько точно повторяется проход, что происходит при отклонениях геометрии и как меняется качество после нескольких повторов. Поэтому говорить, что робот уже полноценно полирует детали на заводе, пока рано. Сейчас у нас есть работающий MVP управления: хаптик передаёт движение, мост преобразует координаты, контроллер принимает команды, а робот повторяет траекторию. Следующий этап — доказать, что эта траектория полезна не только на экране консоли, но и при контакте с настоящим металлом. По сути, мы разрабатываем не отдельную программу «для полировки», а способ записывать движение человека и передавать его промышленному роботу. Полировка — первая задача, с которой всё началось. Но тот же принцип потенциально подходит и для других операций. Например, можно показать роботу траекторию сварки, движение инструмента вдоль сложного контура или путь по участку нестандартной детали. Конечно, нельзя просто снять полировальную машинку, поставить сварочную горелку и сказать: «Теперь вари». Для каждой операции понадобятся свои параметры, инструмент, ограничения и техника безопасности. Но программный мост и сама логика управления могут остаться теми же. Получить промышленного робота и научить его двигаться — ещё не значит автоматизировать операцию. Сейчас мы решили только первую часть задачи. Полировщика мы из процесса не убираем. Наоборот, хотим сохранить его опыт: человек показывает, как нужно вести инструмент, а робот забирает на себя повторяющиеся проходы и часть физической нагрузки. Пока всё это выглядит как консоль, хаптик на столе и большая промышленная рука, которая пытается за ним успеть. Следующий этап — поставить инструмент и познакомить её с металлом. Скорее всего, с первого раза идеально не получится. Но в прошлый раз мы начинали с того, что робот просто двигался вслед за рукой. Теперь он уже понимает наши команды, фильтрует лишние движения и умеет повторять маршрут. Для начала неплохо. Как вы считаете, стоит ли дальше развивать такой подход — запись движений человека и перенос их на робота — или для промышленных задач надёжнее сразу использовать полностью автоматические комплексы с отдельным программированием? Телеграм: t.me/ainewsline Источник: vk.com Комментарии: |
|