Робототехнический комплекс для отработки пультовой аппаратуры
О проекте коротко
Цель проекта – разработка робототехнического комплекса для отработки пультовой аппаратуры систем управления изделиями ракетно-космической техники в соответствии с техническим заданием. В результате работы создан робототехнический комплекс (РТК). В его состав входит робот-манипулятор, программное обеспечение (ПО) для запуска РТК и программное обеспечение для управления РТК. По итогам работы проведены испытания разработанного РТК и подписан акт о внедрении РТК в опытную эксплуатацию на комплексах отработки аппаратуры и программ.
Во время выполнения работы использовались инструменты: система ROS (Robot Operating System) версии Melodic, фреймворк MoveIt для расчета движений робота и визуализации траекторий движений, библиотека для расчета обратной кинематики OMPL (Open Motion Planning Library), фреймворки Micronaut и Angular для пользовательского интерфейса, база данных MySQL для хранения информации. На роботе используются шаговые двигатели NEMA17 с редуктором 1:5,18. Они подключены к плате расширения RAMPS 1.4, которая установлена на Arduino Mega. Для работы с двигателями применяются драйверы A4988. Для управления рабочим органом (поворот, разжимание схвата) предназначены сервоприводы TowerPro MG90S.
Программирование велось на языках: C++, Groovy, TypeScript.
Год реализации проекта: 2021.
О проекте подробно
Важный этап контроля качества разработки систем управления ракетно-космической техники – проведение мероприятий по отработке продукции с целью выявления ошибок в программном обеспечении и аппаратуре на ранних стадиях создания. Чем раньше в жизненном цикле будут обнаружены просчеты, тем дешевле обойдется их исправление и тем проще и быстрее эти неисправности можно будет устранить.
Рабочий процесс устроен так. Инженер группы отработки вручную запускает режим (т.е. запускает программу, которая при обращении к ней выдает сигнал как будто нажатие нужной кнопки произошло), вносит в процесс имитации неисправности (т.е. будто бы нужная кнопка не сработала или сработала неправильно) и контролирует поведение ПО на отрицательных ветвях (т.е. если есть отказ в какой-то части оборудования, то должен сработать альтернативный маршрут).
Основная часть рутинных операций оператора автоматизирована. Однако комплекс отработки аппаратуры и программ проверяет только программную часть. А устройства ввода, с которыми напрямую должен взаимодействовать оператор, не задействованы – то есть процесс отработки не завершен.
Для полной автоматизации процесса отработки необходимо разработать робототехнический комплекс, который будет воспроизводить работу оператора: выполнять действия человека (нажатие кнопок на механической и сенсорной клавиатуре, поворот ключа) по заранее прописанным сценариям.
Задачи, которые были решены с внедрением РТК в повседневную работу:
- высвобождение трудовых ресурсов для решения более приоритетных задач;
- отработка оборудования во внерабочее время;
- сокращение количества ошибок в отработке по причине человеческого фактора;
- увеличение количества проведенных испытаний и своевременное закрытие заказов на отработку.

Результат проекта
Разработанный РТК состоит из трех частей:
- механической конструкции робота-манипулятора;
- ПЭВМ для запуска окружения, которое необходимо для работы с РТК;
- ПО для управления роботом.
Основные требования и их анализ
Основные требования в области проблем можно представить в виде списка:
- пользователь должен иметь возможность запустить робота;
- пользователь должен иметь возможность указать координаты клавиш для нажатия роботом;
- пользователь должен иметь возможность задать параметры задержки после выполнения нажатия роботом на клавишу;
- пользователь должен иметь возможность остановить робота в любой момент;
- пользователь должен иметь возможность просматривать историю движений робота;
- пользователь должен иметь возможность сохранять координаты положений робота для формирования файлов запуска;
- пользователь должен иметь возможность задавать настройки робота;
- пользователь должен иметь возможность просматривать историю запусков робота;
- пользователь должен иметь возможность просматривать статистику по успешным и неудачным запускам;
- пользователь должен иметь возможность запускать робота из начального положения;
- пользователь должен иметь возможность оставить робота работать во внерабочее время;
- пользователь должен иметь возможность не указывать задержки между нажатиями.
Основные требования в области решений:
- система должна предоставлять возможность запускать робота из пользовательского интерфейса и из командной строки;
- система должна запускать робота по переданным координатам;
- система должна предоставлять возможность формировать файл запуска;
- система должна предусматривать останов по кнопке;
- система должна предоставлять возможность сохранения пользовательских настроек;
- система по нажатию кнопки пользователем должна запомнить координаты и дать возможность пользователю сохранить результат;
- система должна записывать полную историю запусков робота;
- после выполнения серии команд робот должен принимать исходное положение;
- система должна предоставлять пользователю возможность отрабатывать позиции в режиме 24/7;
- система должна производить нажатие клавиш со скоростью, соответствующей скорости профессионального оператора (250-400 символов в минуту при использовании метода десятипальцевой печати, т.е. 25-40 символов в минуту для робота).
Перечень подсистем, их назначение и основные характеристики:
- подсистема робота; назначение подсистемы – выполнение операций в соответствии с отправленными пользователем командами.
- подсистема создания окружения; назначение подсистемы – обеспечение среды, в которой будет работать робот.
- подсистема визуализации; назначение подсистемы – визуализировать работу робота, создать симуляцию реального мира.
- подсистема взаимодействия; назначение подсистемы – создание среды для взаимодействия с роботом.
- подсистема логирования; назначение подсистемы – запись истории взаимодействия с роботом.
- подсистема тестирования; назначение подсистемы – проверка отдельных узлов на работоспособность и соответствие требованиям.
Для реализации аппаратной части планируется использовать плату Arduino, шаговые двигатели и/или сервоприводы. Окружение будет развернуто на стационарном компьютере или микрокомпьютере. Каркас робота-манипулятора предполагается сделать самостоятельно на основе выложенной в свободный доступ CAD-модели (модели, созданной с помощью систем автоматизированного проектирования, таких как SolidWorks, Fusion 360). Если во время поиска подходящей модели станет понятно, что целесообразнее будет купить готовую конструкцию, то будет выбран этот вариант.
Программное обеспечение, которое предполагается создать для робота, будет разделено на 3 части:
- ПО, которое будет управлять всей системой и в котором будут проводиться все сложные вычисления (будет написано на C++ под ROS);
- ПО, которое будет взаимодействовать с ROS и управлять двигателями (скетч под Arduino);
- ПО для пользовательского интерфейса (серверная часть будет написана на Micronaut и клиентская – на Angular).
Главные задачи, которые стоят перед системой:
- управлением движением робота в трех плоскостях (x, y, z);
- останов робота во время выполнения сценария;
- возврат робота в исходную позицию;
- возможность выдержать паузу после нажатия на кнопку (размер паузы для каждого нажатия может быть свой);
- управление роботом в удобном виде через пользовательский интерфейс.
MVP для данного программного продукта должно включать функции запуска робота с возможностью указать координаты движения и задержки после выполнения операций. С таким минимальным набором функций программный продукт является законченным и жизнеспособным.
Реализация остальных требований к функционалу программы – например, возможность просматривать историю движений робота – представляет собой расширение MVP и ее можно отнести ко второй стадии доработки программного продукта.
Перед началом разработки нового продукта был проведен анализ существующих технологий, которые, на первый взгляд, подходили для решения задачи и соответствовали требованиям.
Рассмотрены разные варианты, а именно:
- Готовые роботы. Представленные в продаже промышленные робототехнические комплексы необходимо программировать под задачу предприятия, подходящих программ нет;
- Механические авто-кликеры, которые используют геймеры. Они не подходят, т.к. не могут двигаться по произвольным координатам и имеют ограниченный радиус действия;
- ЧПУ-станок. Робот – это тот же ЧПУ-станок (станок с числовым программным управлением). Для работы с ним как с ЧПУ-станком нужно загрузить прошивку на плату (например, GRBL или Marlin) и тогда можно использовать программы-отправители G-кода (ChiliPeppr, Universal Gcode Sender, GRBL Candle). Функционала этих программ хватило бы, чтобы направить рабочий инструмент робота по заданным координатам. Но это только часть задачи. При такой реализации не будет либо будет проблематично реализовать:
• возможности выставлять произвольную задержку между нажатиями;
• возможности управлять несколькими роботами (рабочими инструментами), чтобы одновременно нажимать на 2 клавиши;
• возможности запрограммировать поворот ключа;
• возможности работать в ограниченном пространстве (вариант пульт управления поместить внутрь станка не подходит, пульт должен быть на столе, либо пульт может быть вмонтирован в другое оборудование);
• возможности расширения функционала программы (например, подключить библиотеки машинного обучения или обработать сигналы с датчиков).
Сравнение разных вариантов решения задачи приведено в таблице 1.
Таблица 1 – Обзор возможных вариантов решения задачи
|
Решение |
Преимущества |
Недостатки |
Итого |
|
Купить готового робота и его запрограммировать под задачу |
– Не нужно создавать своего робота – Есть готовые решения для программирования |
– Высокая цена – Долгий срок согласований и покупки – Нельзя модифицировать конструкцию |
Не подходит из-за высокой цены и длительных сроков покупки |
|
Создать робота и запрограммировать через G-код |
– Можно быстро реализовать – ПО есть в свободном доступе (в частности, есть скетч под исходную модель робота) |
– ПО сильно привязывается к конструкции робота – ПО не масштабируется – Решить получилось бы только основную задачу (перемещение по координатам) |
Подходит частично, т.к. конструкция робота может потом меняться, могут добавляться датчики и пр. Также нужно было предусмотреть в системе последующее использование библиотек машинного обучения |
|
Купить китайскую модель робота и запрограммировать |
– Доступная цена – Не нужно искать и дорабатывать CAD-модель |
– Если нет модели робота в CAD, сложно потом модифицировать конструкцию (без CAD-модели не сделать симуляцию) |
Не подходит, т.к. робот впоследствии может быть модифицирован |
|
Доработать модель CAD, создать своего робота и запрограммировать |
– Можно модифицировать конструкцию робота – Можно поменять двигатели и электронику – Можно запрограммировать под любые задачи |
– Нужно понимание, как доработать CAD-модель – Потребуется дополнительное время на создание физического робота – Нужно найти подходящую модель, которую можно использовать за основу, иначе проектирование конструкции может занять длительное время |
Этот вариант больше всего подходит, т.к. робота можно запрограммировать под задачи предприятия и потом модифицировать конструкцию с минимальным вмешательством в разработанное ПО |
Проведенный анализ показывает, что на рынке нет систем, которые бы полностью удовлетворяли потребности. В связи с этим появляется необходимость в разработке робототехнического комплекса под те требования.
Обоснование архитектуры системы
После поиска возможных решений стало понятно, что робот-манипулятор – именно та конструкция, которая необходима для решения поставленной задачи, особенно если учесть, что в будущем планируется реализовать одновременное нажатие нескольких кнопок (для этого можно объединить нескольких роботов в одну группу).

Схема расположения робота
РТК будет установлен на поверхности компьютерного стола, зафиксирован крепежом, чтобы исключить смещение робота во время выполнения работы. Пульт управления будет расположен в зоне досягаемости стрелы робота.
Поскольку нужно было сделать опытный образец, который впоследствии будет модифицирован и доработан, то был выбран вариант создания робота на основе выложенной в свободный доступ CAD-модели. По этой же причине важно было подобрать комплектующие и электронику по минимально возможной цене.
Далее необходимо было определить, какие двигатели будут использоваться – шаговые или сервоприводы. А также важно было понять, из чего изготавливать саму конструкцию робота.
Самый простой вариант манипулятора – создать каркас из фанеры и подключить сервоприводы. Это было проще всего сделать, однако такая конструкция была бы недостаточно прочной. Кроме того, один из критериев выбора – возможность изготовить детали из металла. А еще для робота из примера использовались сервоприводы, которые не укладывались в бюджет. Поэтому такой вариант не подошел.
Пришлось отказаться и от готовых моделей роботов, которые находятся в свободном доступе. Например, OpenManipulator. Причина – высокая стоимость изготовления из-за использования фирменных двигателей.

Манипулятор с параллельным механизмом
Также стало понятно, что сервоприводы не подходят, по крайней мере в качестве основных двигателей, т.к. они стоят в разы дороже шаговых электродвигателей. А на базе недорогих сервомоторов нельзя сделать робота, который смог бы решить поставленную задачу.
Таким образом, методом исключения за основу была взята модель манипулятора на основе разомкнутой кинематической цепи с параллельным механизмом на шаговых двигателях. Она удовлетворяла критериям:
- много информации в свободном доступе;
- можно изготовить самостоятельно;
- можно подобрать недорогую электронику и двигатели.
Преимущества такой конструкции:
- отпадает необходимость управления углом наклона рабочего органа, т.к. при изменении углов поворота звеньев схват всегда сохраняет параллельное положение;
- двигатели, управляющие звеньями руки, расположены на одном уровне у основания робота и не утяжеляют стрелу, поэтому можно подобрать любые по весу электроприводы без необходимости как-то менять или уравновешивать конструкцию.

Обобщенная структурная схема РТК
Приведенная ниже архитектура построена на основе принципов работы выбранных средств разработки ПО, поэтому важно перечислить их в этой главе. Для программирования робота используется:
- Arduino Mega;
- программная часть управления роботом написала под ROS, для расчета кинематики в ROS используется фреймворк MoveIt;
- визуализации модели сделана в rViz, симулировать поведение робота можно в Gazebo;
- пользовательский интерфейс представляет собой веб-приложение, его разработка выполнена на фреймворке Micronaut для серверной части и на фреймворке Angular – для клиентской.
- Для управления механической конструкцией робота необходимо создать программное обеспечение.
ПО для РТК состоит из нескольких приложений:
- приложений для формирования файлов запуска робота;
- приложений для запуска робота.
- процессе отработки участвуют:
- инженер-аналитик (создает команды и формирует файл запуска для робота);
- инженер отработчик (взаимодействует с роботом).
Инженер анализа готовит фотографию, рисунок или чертеж пульта упраления. Открывает на своем ПК пользовательский интерфейс в браузере, загружает изображение. При необходимости он редактирует загруженное изображение (меняет его размер по ширине) и располагает на схеме рабочей зоны робота. После завершения редактирования инженер анализа кликает по фото и отмечает координаты, до которых нужно дотянуться роботу. Затем из этих координат необходимо сформировать файл запуска с указанием параметров задержки между нажатиями клавиш.
Инженер-отработчик перед началом работы должен убедиться в правильном расположении робота и пульта управления. Также он должен проверить наличие и корректность файла запуска, который ему подготовил инженер-аналитик. Запуск робота производится из пользовательского интерфейса, из командной строки или по кнопке на роботе.

Архитектура системы формирования файлов запуска
Программа рассчитывает координаты новой позы робота и траекторию движения на основе конфигурации из URDF-файла (это специальный формат файла). Конфигурация робота составляется один раз на основе модели из SolidWorks и меняется только при изменении исходной модели.

Архитектура системы запуска робота
Всю систему можно разбить на 6 больших блоков в соответствии со списком подсистем:
- подсистема создания окружения;
- подсистема робота;
- подсистема симуляции;
- подсистема взаимодействия;
- подсистема логирования;
- подсистема тестирования.
Подсистема создания окружения запускает Docker-контейнер с Ubuntu 18.04 и ROS Melodic со всеми необходимыми зависимостями для работы ROS. Окружение можно запустить на любой машине под операционной системой Linux.
Подсистема робота – центральное звено всей системы. Внутри этой подсистемы выполняется загрузка модели робота, расчет движений, передача управления на плату Arduino, расчет количества шагов для запуска двигателей. Подсистема робота соединяется с подсистемой симуляции посредством стандартного ROS API, с подсистемой взаимодействия (пользовательским интерфейсом) через Rosbridge protocol, с системой логирования – через ROS API.

Диаграмма блоков
Подсистема симуляции обеспечивает визуальное отображение модели, планирования траектории движений, симуляцию работы робота в реальном мире. С подсистемой робота связывается через стандартный ROS API.
Подсистема взаимодействия (пользовательский интерфейс) связывается с подсистемой робота через вебсокеты, а с подсистемой логирования – через контроллер. В этой подсистеме формируются файлы запуска и задается/проверяется состояние робота.
Подсистема логирования записывает историю работы из других подсистем (подсистемы робота, подсистемы взаимодействия и подсистемы тестирования). С подсистемой взаимодействия связывается через контроллер. С подсистемами робота и подсистемой тестирования – через shell script.
Используется пять сред выполнения:
- UserWebInterface – сервер пользовательского интерфейса (состоит из двух приложений – серверной части на Micronaut и клиентской части на Angular, – и базы данных);
- RobotServer – сервер робота (состоит из сервера ROS, фреймворка для расчета движений манипулятора MoveIt, симулятора Gazebo и визуализатора модели rViz);
- MobileApplication – мобильное приложение для тестирования сенсорной клавиатуры (отдельное приложение, которое никак не взаимодействует с другими частями системы, и позволяет поверить правильность отработки сенсорной клавиатуры);
- Robot – робот-манипулятор с тремя шаговыми двигателями NEMA-17 и двумя сервоприводами.
- Таким образом, архитектура РТК состоит из 3-х крупных частей: физического робота-манипулятора, ПО для управления роботом, ПО для пользовательского интерфейса. Для создания каждой из них используются свои средства разработки.
Для управления роботом был выбран фреймворк ROS версии Melodic (одна из последних стабильных версий). Разработка велась под операционной системой Ubuntu 18.04.
Поскольку работа с ROS требует установки большого количества пакетов, то было принято решение собирать окружение в Docker-контейнере. В Docker`е была также развернула и Ubuntu 18.04. В качестве языка программирования использовался C++. Язык выбран из соображений единообразия, т.к. программирование под Arduino ведется на нем же.
Другие преимущества ROS для решения поставленной задачи:
- много готовых инструментов и библиотек, в частности наличие фреймворков и библиотек для решения задачи расчета обратной кинематики (в проекте используется OMPL);
- многопоточность;
- поддержка визуального тестирования;
- простая смена модели робота без необходимости вносить существенные изменения в код программы;
- прямая связь с Arduino, не нужно писать оболочку для взаимодействия ROS и Arduino;
- возможность подключения разных датчиков и модулей (камеры, датчиков касания, температуры и пр.) в симуляторе и на реальном роботе;
- возможность добавить несколько моделей робота в одно ПО и запрограммировать одновременное нажатие кнопок;
- возможность использовать симулятор для проверки алгоритмов работы.
ROS основан на архитектуре графов. Вершины – это ноды (узлы, nodes), ребра – это топики (темы, topics). Также есть сервисы.
В качестве контроллера для управления двигателями робота используется Arduino. Плата Arduino подключена как узел ROS.
Для взаимодействия с пользовательским интерфейсом используется rosbridge. Протокол rosbridge – это спецификация для отправки команд на основе JSON в ROS.
Выбор ПО для разработки пользовательского интерфейса
Пользовательский интерфейс реализован как веб-приложение и представляет трехзвенную клиент-серверную архитектуру. Используется архитектурный стиль REST (клиент и сервер могут быть выполнены независимо друг от друга, изменения в коде сервера не влияет на работу клиента и наоборот). Это способствует высокой надежности, производительности, расширяемости, управляемости, простому обновлению и возможности повторного использования компонентов приложения.
Для реализации пользовательского интерфейса выбраны инструменты:
- Angular для фронтенда (язык – TypeScript);
- Micronaut для бекенда (язык – Groovy);
- база данных MySQL.
- Предпосылки выбора фреймворков Angular и Micronaut для реализации UI (пользовательского интерфейса):
- высокая скорость разработки;
- наличие готовых библиотек с дизайном (в проекте используется Material Design);
- простое создание микросервисов;
- более быстрый пуск сервера и меньшее потребление памяти во время выполнения, т.к. внедрение зависимостей происходит на этапе компиляции;
- быстрая реализация конечных точек (endpoints) для связи клиента и сервера.
Выбор модели робота-манипулятора
В качестве решения выбрана конструкция робота-манипулятора. Главные предпосылки выбора:
- решение всех поставленных задач;
- наличие CAD-моделей, от которых можно отталкиваться, в свободном доступе;
- возможность изготовить самостоятельно.

Кинематическая схема робота-манипулятора
Робот расположен на платформе, которую можно прикрутить к столу, чтобы зафиксировать конструкцию. Нижний шаговый двигатель вращает всего робота. Для легкого скольжения установлен подшипник. Два других шаговых двигателя управляют звеньями стрелы манипулятора.

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

Робот в положении максимального вылета
Выбор двигателей
Для управления роботом используются 2 типа двигателей:
- шаговые (для перемещения основных звеньев робота-манипулятора);
- сервоприводы (для вращения рабочего органа).
Шаговый двигатель
Предпосылки выбора шагового двигателя (далее ШД) в качестве основного двигателя:
- стоимость по сравнению с сервоприводами, которые соответствовали показателю крутящего момента, в разы ниже;
- соответствие выполняемой задаче;
- небольшие габариты;
- можно найти в продаже.
Для программирования ШД необходимо было разобраться, как он устроен и как работает.

Фотография двигателя NEMA-17
ШД стандартизированы Национальной ассоциацией производителей электрооборудования (National electrical manufacturers association – NEMA) по посадочным размерам и размеру фланца.
Для робота был выбран гибридный биполярный шаговый двигатель NEMA-17 с размером фланца 42х42 мм. Этот тип двигателей может создавать крутящий момент до 6 кгс*см (0,6 Н*м). Двигатель имеет 2 фазы, поэтому полное количество полюсов – 200, а шаг – 1,8 градусов. Редуктор позволяет понизить обороты двигателя и повысить крутящий момент.
Таблица 2 – Характеристики двигателя NEMA 7HS15-1684S-PG5
|
Характеристика |
Значение |
|
Номер детали производителя |
17HS15-1684S-PG5 |
|
Тип двигателя |
Биполярный шаговый |
|
Угол шага (без коробки передач) |
1,8 ° |
|
Крутящий момент |
40 Н*см (0,4 Н*м) |
|
Крутящий момент покоя |
2,2 Н*см (0,022 Н*м) |
|
Номинальный ток/фаза |
1,68 А |
|
Фазовое сопротивление |
1,65 Ом |
|
Рекомендуемое напряжение |
12-24 В |
|
Индуктивность |
3.2mH ± 20%(1 кГц) |
|
Тип коробки передач |
Планетарный |
|
Передаточное отношение |
5 + 2/11 |
|
Эффективность |
90% |
|
Люфт без нагрузки |
<= 1 ° |
Сервопривод
Сервопривод отвечает за вращение рабочего органа. Он устанавливается на самый конец стрелы робота-манипулятора, поэтому важный критерий выбора – минимальная масса. Из этих соображений выбран сервопривод – TowerPro MG90S.
Предпосылки выбора:
- масса 14 г и минимальные габариты;
- низкая цена;
- подходит для управления рабочим органом.
Таблица 3 – Характеристики сервопривода TowerPro MG90S
|
Характеристика |
Значение |
|
Тип контроллера |
Аналоговый |
|
Напряжение питания |
4.8 - 6 В |
|
Крутящий момент |
5 В - 2 кг/см |
|
Время поворота на 60° |
5 В - 0.09 сек |
|
Сплав шестерней |
Латунь, алюминиевый сплав |
|
Подшипники выходного вала |
1 шт. |
|
Длина кабеля |
26 см |
|
Размеры |
23 х 12 х 29 мм |
|
Масса |
14 г |
Драйвер шагового двигателя
Для управления шаговым двигателем необходим драйвер. Для NEMA 17 методом исключения был выбран драйвер A4988.
Предпосылки выбора:
- совместимость с платой расширения RAMPS 1.4;
- может выдавать большую силу тока по сравнению с аналогом DRV8825;
- стоит дешевле, чем другие драйверы (TMC2209).
Номинал резисторов на купленных драйверах A4988 – R100.
Выбор платы управления
В качестве платы управления была выбрана плата Arduino Mega2560. Ее характеристики приведены в таблице 4.
Предпосылки выбора Arduino в качестве контроллера:
- доступность;
- совместимость с ROS;
- наличие в продаже плат-расширений (шилдов) для подключения шаговых двигателей;
- наличие библиотек для управления шаговыми двигателями;
- наличие датчиков и электроники.

Фотография Arduino Mega2560
Большинство устройств, которые можно было бы рассмотреть в качестве аналогов Arduino (например, Particle Photon, ESP8266), имеют ограниченный функционал. Единственной достойной внимания альтернативой Arduino является Teensy, потому что эта система программирования микроконтроллеров совместима с ROS и под нее есть библиотеки для работы с шаговыми двигателями. Однако для нее нет готовой платы расширения для подключения моторов. И поэтому нужно было бы проектировать и изготавливать шилд самим, что увеличило бы сроки разработки системы. Кроме того, для программирования Teensy используется Arduino IDE, то есть принципиальной разницы в подходе к разработке ПО и загрузке кода в процессор, нет. Поэтому логичнее всего было использовать Arduino.
Из всех вариантов Arduino больше всего подходил вариант Mega2560 по причине, что для него есть готовые платы расширения, которых бы хватило для подключения всех двигателей, кнопок и электроники (нужно предусмотреть наличие пинов под микрофон, камеру, гироскоп, акселерометр и другие датчики обработки сигналов внешнего мира и контроля положения робота). Кроме того, надо учесть, что подобранные двигатели NEMA17 подключаются к источнику питания 12-24В.
Таблица 4 – Характеристики ArduinoMega2560
|
Характеристика |
Значение |
|
Микроконтроллер |
ATmega2560 |
|
Рабочее напряжение |
5В |
|
Входное напряжение (рекомендуемое) |
7-12В |
|
Входное напряжение (предельное) |
6-20В |
|
Цифровые Входы/Выходы |
54 (14 из которых могут работать также как выходы ШИМ) |
|
Аналоговые входы |
16 |
|
Постоянный ток через вход/выход |
40 mA |
|
Постоянный ток для вывода 3.3 В |
50 mA |
|
Флеш-память |
256 KB (из которых 8 КB используются для загрузчика) |
|
ОЗУ |
8 KB |
|
Энергонезависимая память |
4 KB |
|
Тактовая частота |
16 MHz |
Выбор платы расширения (shield)
Для управления шаговыми двигателями необходима плата-расширение. На нее подается питание от 12В, необходимое для работы ШД, и к ней подключаются все ШД. Arduino рассчитана только на 5В и подключать к ней ШД не рекомендуется (даже те, которым достаточно этого тока).
Вариантов плат-расширений, которые совместимы с Arduino Mega или даже могут использоваться вместо нее, много:
- Megatronics 2.0;
- Printrboard;
- RUMBA;
- Teensylu;
- Azteeg X3 и т.д.

Фотография платы RAMPS 1.4
Выбор был по критериям:
- низкая по сравнению с аналогами цена;
- много информации в открытом доступе;
- есть пины, для подключения всего необходимого;
- модульная конструкция для быстрой замены испорченных деталей (на случай, если что-то пойдет не так и какие-то элементы выйдут из строя).
Лучше всего критериям выбора удовлетворила плата расширения RAMPS 1.4.
Таблица 5 – Характеристики RAMPS 1.4
|
Характеристика |
Значение |
|
Поддерживаемый контроллер |
Arduino MEGA 2560 R3 |
|
Поддерживаемые ЖКИ |
12864 LCD/2004 LCD |
|
Поддерживаемые драйверы ШД |
A4988, DRV8825, TMC2100 |
|
Силовой транзистор нагревателя хотэндов |
STP55NF06L |
|
Сопротивление открытого канала силового транзистора хотэндов |
0.018 Ом |
|
Силовой транзистор нагревателя стола |
STP55NF06L |
|
Сопротивление открытого канала силового транзистора стола |
0.018 Ом |
Плата RAMPS подключена к источнику питания, который рассчитан на 30В.
Обоснование интерфейса пользователя
В ходе сбора требований к будущей системе были определены требования ключевого и вспомогательного персонажа к пользовательскому интерфейсу:
- проведение испытаний физического пульта управления;
- исключение человеческого фактора при отработке аппаратуры;
- программа должна точно нажимать по кнопкам;
- после проведения режима программа должна возвращаться в исходное состояние (до начала следующего режима);
- программа должна запускаться под Linux;
- формирование карты нажатий на пульт управления с помощью графического интерфейса;
- возможность задавать настройки робота в удобном виде;
- программа должна формировать диагностическую информацию (писать логи);
- пользовательский интерфейс должен запускаться под Windows.


Интерфейс
На основе сформулированных требований можно выделить следующие основные элементы, которые будут отражены в прототипе интерфейса пользователя:
- окно для добавления команды в библиотеку;
- список команд;
- список файлов запуска;
- окно для добавления файла запуска;
- кнопка для запуска робота;
- выгрузка логов;
- форма для редактирования настроек робота.
Описание модели робота
Точка отсчета координат определяется пересечением zi и xi. Система координат рабочего инструмента выбирается таким образом, что координата z направлена в сторону действия схвата. Z0 ставится в направлении вращения исходной (начальной) системы координат.

Системы координат робота-манипулятора
Таблица 6 – Параметры Денавита-Хартенберга
|
Звено, i |
ai |
alphai |
di |
thetai |
|
1 |
0 |
π/2 |
d1 |
theta1 |
|
2 |
a2 |
0 |
0 |
theta2 |
|
3 |
a3 |
0 |
0 |
theta2 |
|
4 |
0 |
π/2 |
0 |
theta4 + π/2 |
|
5 |
0 |
0 |
d5 |
theta5 |
Рассчитанные системы координат модели робота перенесены в модель в Solidworks`е. После этого сформирован URDF-файл с описанием модели.

Модель робота в rViz
Описание разработанного ПО
Проект имеет следующую структуру:
- data – данные по умолчанию (файлы с описанием команд и последовательностью их выполнения, которые берутся только если ссылки на другие файлы не переданы);
- docs – пользовательский интерфейс;
- scripts – скрипты для выполнения разных функций;
- src – исходные файлы ROS.
В корне проекта находятся следующие файлы:
- Dockerfile – для сборки docker-контейнера;
- version – номер и дата версии ПО;
- README.md – описание проекта и краткая инструкция к нему.
Клиентская часть выполнена с помощью фреймворка Angular. При создании приложения использовали следующие сторонние библиотеки:
- RxJS;
- Roslib.
Для проектирования приложения используется паттерн MVVM. Язык программирования – Typescript.
Для взаимодействия Angular и ROS применяется библиотека RoslibJS. Она использует WebSockets для подключения к rosbridge и обеспечивает публикацию, подписку, сервисные вызовы, синтаксический анализ URDF и другие важные функции ROS.
Архитектура приложения Angular реализует паттерн MVVM: Model-View-ViewModel (Модель-Представление-Модель представления). Паттерн поддерживает двустороннюю привязку данных между View и ViewModel, что позволяет автоматически подписывать ViewModel на изменения.

Общая схема ПО
Заключение
В результате работы над проектом был создан робототехнический комплекс для отработки пультовой аппаратуры систем управления изделиями ракетно-космической техники, состоящий из робота-манипулятора, программного обеспечения (ПО) для управления роботом и ПЭВМ для запуска ПО.
Были решены следующие задачи:
- составлено техническое задание на разработку РТК;
- выполнен обзор вариантов решений для реализации поставленной задачи и найдена CAD-модель для изготовления каркаса робота;
- выбраны детали для создания робота (двигатели, электроника);
- протестированы двигатели;
- запрограммирована модель робота;
- запрограммирован физический робот;
- развернуто окружение для работы робота;
- написан веб-интерфейс для управления роботом;
- собран и запрограммирован прототип панели управления роботом.
РТК выдан на комплекс отработки аппаратуры и программ, где после установки на штатную позицию были проведены испытания по отработке пульта управления. По результатам испытаний подписан акт внедрения РТК в опытную эксплуатацию.