Робот-не-пылесос с ножом или как мы делали смарт-ножницы на колесах
R2 в боевом положении
Эта история началась в октябре 2019 года. К нам пришел владелец крупного производства натяжных потолков и сказал: «Хочу максимально оптимизировать производство, избежать ошибок, вызванных человеческим фактором, повысить производительность и точность, не теряя качества готовой продукции». Подумав и оценив свои силы, мы решили попробовать создать робота-раскройщика. Мы — это тимлид, 3 программиста, инженер-конструктор и безопасник (все вместе мы развивали школу робототехники и искусственного интеллекта aiRoboLab).
Забегая вперед, скажем, что поставленная задача была выполнена! Мы самостоятельно разработали инструмент, который позволяет с высокой точностью перемещаться по поверхности и резать материал, по которому он перемещается. В нашем случае материалом стали полотна для натяжных потолков.
Первым этапом работы стало знакомство с производством натяжных потолков. Оказалось, что разновидностей раскройных столов несколько — это как обычные прямоугольные, так и прямоугольные «Г-образные» и «П-образные» столы. В конечном счете, мы добились того, что робот умеет передвигаться по любому произвольному многоугольнику.
Затем, мы стали думать над внешним видом и внутрянкой робота. Было решено использовать трехколесную модель всенаправленного движения, которая в свою очередь отразилась на каркасе и внешнем виде робота. Основным рабочим инструментом стал дисковый нож, закрепленный по центру. Во время первичной эксплуатации робот мог захватить кусок полотна и тащить его за собой. Эта проблема была решена перфорацией ножа. Использование перфорированного ножа, позволяет разделять полотно после окончания реза роботом, до этого момента полотно остаётся неподвижным.
Следующей инженерной задачей, которую пришлось решить в процессе стали колёса. Доступные колёса с резиновыми валиками нас не устроили, так как из-за давления робота, который весит 9 кг, оставались чёрные следы от резины на белом полотне потолка. Поэтому мы приняли решение создать свои колёса с нуля. Робот имеет OMNI-колёса (всенаправленные), валики которых сделаны из полиуретана. Основа колес — диски из лёгкого и прочного дюралюминия, изготовленные с помощью ЧПУ-станков. Каждое колесо снабжено тремя рядами валиков, осуществляющих большое сцепление с поверхностью: в любой момент времени каждое из трех колес имеет сразу две точки опоры.
Для правильной работы необходимо надежное соединение всех модулей робота. Подобное соединение может обеспечить только специально разработанная плата. На плате распаян микроконтроллер STM, управляющий моторами колес, ножевым механизмом и другими периферийными устройствами. Мозгом робота является одноплатный компьютер «Raspberry Pi».
В основе программного обеспечения лежит операционная система Ubuntu и фрэймворк ROS (Robot Operating System). Для решения поставленных задач были написаны глобальный и локальный планировщики, а для кроссплатформенного использования создан веб-интерфейс. Глобальный планировщик — часть программы, которая строит для робота идеальный маршрут из точки А в точку Б, локальный же планировщик принимает решения о том, какие команды отдавать колесам: в каком направлении двигаться или поворачиваться, чтобы следовать намеченному маршруту.
После создания файла в специальной потолочной программе, например, EasyCeiling, мы загружаем файл в формате g-code в веб интерфейс робота или загружаем его напрямую из производственной базы данных. Данные о раскрое полотна содержатся в файле в виде списка точек с двумерными декартовыми координатами.
Следующим этапом стала разработка веб-интерфейса. Веб-интерфейс позволяет управлять маршрутами относительно рабочей поверхности: перетаскивать, магнитить, крутить и др. Также мы добавили редактор маршрута, при помощи которого можно отредактировать маршрут раскроя для оптимизации времени, а еще разложить сразу несколько потолочных вырезов на одном полотне. Робот должен знать и понимать, где находится рабочая область, и каким образом под него застелено полотно. Решением этих вопросов при помощи веб-интерфейса занимается оператор, который располагает раскроечный маршрут с учетом рабочей области информации о том, каким образом было застелено полотно.
Вся наша небольшая команда уже привыкла использовать темную тему, поэтому и изначальный интерфейс управления был разработан в темных тонах. Но рабочие на производстве нашу инновацию не оценили и под предлогом того, что «все плохо видно» и «сделайте нам светленькое как в потолочной программе» попросили добавить еще и светлую тему. Честно сказать, с этим мы особенно не торопились, пока просьбы переделать, к нашему всеобщему удивлению, не стали слишком частыми. Мы сделали светлую тему, установили ее по умолчанию, рассказали, как переключаться с одной на другую и, придя через несколько дней на производство, увидели, что на всех компьютерах снова установлена тёмная тема. Оказалось, что рабочие переключили тему на темную, так как на ней всё же лучше видны необходимые элементы и линии. Но, если вы наш потенциальный покупатель, то знайте — темы две и обе работают!
Вернёмся к особенностям работы с натяжными потолками. В раскроях полотен для потолков важно отсутствие острых углов, каждый угол должен быть скруглен дугой радиусом всего 5 мм! Кроме того, потолки бывают разными, и полотна требуют раскроя разных форм: прямоугольники, квадраты, различные окружности и др. Эта задача была решена с помощью планировщиков. Глобальный планировщик преобразует маршрут движения, созданный из последовательности точек для раскроя, в маршрут, где между каждым углом есть скругление — дуга. Локальный планировщик, используя ПИД-регулятор, даёт команду роботу проехать как можно ближе к запланированному маршруту. ПИД-регулятор корректирует направление движения робота в зависимости от отклонения от расчетной точки.
Как мы уже писали ранее для того, чтобы резать правильно, робот должен понимать где находится рабочая область и где находится он сам. Поэтому ещё одним ключевым пунктом разработки стал выбор системы навигации. Система навигации устанавливается в потолок над рабочим столом. Для натяжных потолков не обязательно делать раскрой с точностью до десятых долей миллиметра, но при этом в некоторых маленьких раскроях, отклонение в сантиметр может привести к браку. Сперва мы решили использовать систему с дешёвым 2D лидаром («Rplidar A1 и A3»), однако, мы постоянно балансировали на грани необходимой точности позиционирования.
Робота «гоняли» в небольшом квадратном загоне, но хотелось больше точности, поэтому мы попробовали «разогнать» лидар, путем увеличения частоты вращения. Эффект был. Затем решили использовать более старшую модель лидара — A3, и оказалось что точности этого лидара достаточно. Но как оказалось — нам показалось. Все это работало только в квадратном загоне. Когда дело дошло до тестирования на производстве, для того чтобы лидар мог опираться на какую-то заранее известную карту, мы установили специальные щитки. Однако наша карта увеличилась с 2,5×2,5 м до 3×9 м и точность позиционирования упала в разы. Раскрой получился настолько кривой, что, наверное, неопытный раскройщик под градусом разрезал бы ровнее. К сожалению, на эту систему навигации мы потратили почти год времени, после чего перешли на использование навигации с инфракрасной камерой и инфракрасными маркерами. Точность позиционирования этого решения при правильной расстановке маркеров достигает 1–2 миллиметров, что для задач раскроя натяжного потолка более чем достаточно.
Робот помогает ускорить процесс работы на производстве и быстро выполнять сложные задания. Наибольшего преимущества перед человеком, робот достигает при выполнении сложных спецраскроев, кроме того, робот может кроить сразу множества потолков на одном полотне. На подобный раскрой робот потратит в среднем от 3 до 7 минут. Двум людям на выполнение такого же задания потребуется несколько десятков минут.
Помимо проблем программных и инженерных мы столкнулись еще и с проблемами социальными. Появление высоких технологий зачастую вызывает у сотрудников опасения поломок сложного оборудования и страх увольнения. Но, спустя некоторое время, сотрудники оценили по достоинству новое технологическое внедрение. Теперь им не приходится в прямом смысле ползать по столу, чтобы раскроить полотно, кроме того, увеличилась заработная плата. так как увеличились объемы производства. Прирост суммарной площади готовых потолков составил 38%. Количество брака, вызванного человеческим фактором стремится к нулю. Появилась возможность работы менеджера, для оптимизации раскроя и экономии плёнки, в интерфейсе робота одновременно в момент выкройки.
В текущих реалиях мы столкнулись, пожалуй, с самой большой проблемой — продажей робота на рынке. Тут мы наступили на двое грабель сразу. Первые грабли — потолочные производства, оказались, по большей, части еще только в начале пути цифровизации: далеко не все готовы к сразу к роботизации процессов, особенно если чертежи потолков еще строятся на бумаге. Вторые грабли — ранний выход к рынку с предложениями, когда робот еще был сырым, что настроило скептически тех, кто дозрел до роботизации. И та и другая проблема решаемы и мы работаем над этим. В ближайшем будущем мы планируем найти для нашего робота другие сферы деятельности. Возможно именно вы подскажете нам, в каком еще сценарии можно было бы использовать нашу разработку.