Виртуальная лаборатория робототехники или Как мы выбирали подходящее ПО

Дисклеймер. Статья носит образовательный характер. Нам не платили за эту работу, и не заплатят, когда прочтут. Будем безмерно рады как советам так и критике в комментариях.

Вступление: Так получилось, что мы группа студентов и преподавателей, заинтересованных в создании имитационных виртуальных лабораторий, в которых студенты могут без особых углубленных знаний попробовать поуправлять квадрокоптером, конвейером или другими интересными моделями. Ведь не всегда есть возможность потренироваться на реальных физических лабораториях. Нужны: место (деньги), оборудование (деньги) и время (тоже деньги). Следовательно, придется смотреть в сторону виртуальных моделей. Мы искали удобную среду для создания таких моделей и вот до чего дошли (обозреваем ниже).

Немного истории: факультет электромеханики (ныне переименован в Мехатроники и Автоматизации) НГТУ создавался в 50-х, чтобы готовить специалистов по разработке и производству электродвигателей, электрогенераторов e.t.c. Позднее факультет оброс кафедрами смежных направлений, а в конце 2020-х открыл направление Робототехники. Профиль ФГОС и 70% предметов оставили прежними. Как и педсостав. В результате получили выпускников которые: умеют подобрать двигатели для круглого квадрокоптера в вакууме (и не только подобрать, но и спроектировать с нуля или пересчитать/перемотать); умеют настроить регуляторы для этого пепелаца; знают как рассчитать мощность и КПД. А вот о том как программировать автопилот — только «имеют представление».

В принципе, такая заточка имеет право на жизнь, если разрабатывать не роботов — доставщиков, а промышленные роботизированные ячейки.

Релаксация на тему возможностей

По профилю нам положено хорошо знать механику и ТАУ — работать с манипуляторами, решать задачи динамики / кинематики и настраивать регуляторы. Данную работу хочется визуализировать. Получить наглядный результат чтобы посмотреть, что, да как будет работать. Вместо манипулятора, может быть летающий или наземный дрон, конвейер, насосный агрегат… Чем разнообразнее, тем лучше для понимания.

По факту, в распоряжении нашей кафедры есть всего‑лишь один робот‑манипулятор, как вы можете догадаться, за 4 часа лабораторной работы, 15 студентов просто не успевает разобраться и понять принцип его действия (или просто не хотят это делать), что печалит любого преподавателя.

Расширять парк оборудования сложно по озвученным во вступлении причинам. Да и зачем — мы же живем в век виртуальной реальности. Можно проводить обучение на виртуальных моделях. Желательно при таком роде обучения помогать студенту. Необходимо делать так чтобы было:

  • Наглядно (т. е. если делаем движущийся механизм, то видим механизм, а не кучу графиков)

  • Просто / Понятно (не все студенты по дефолту умеют в программирование. Невероятно, но факт!)

Претенденты

Рассмотрим ПО потенциально подходящее для решения задачи.

Matlab. Мощный математический пакет. Практически промышленный стандарт для разработчиков систем управления. Есть сообщество разработчиков. Есть куча модулей. Есть сборка мат‑модели из готовых кубиков.

НО! Во‑первых: Визуализировать результаты можно только графиками, причем с кривым архаичным интерфейсом. А если график можно понять неверно, студент поймет его неверно.

Во‑вторых: Сложности территориального характера.

В‑третьих: Не дешевая лицензия. У ВУЗа она имеется, а у будущего работодателя ее может не быть.

LabView. Графический язык программирования + система компонентов для сборки «виртуальных приборов» + интеграция с приборами и датчиками National Instrument. Устроив лабораторные на этой базе можно параллельно заложить у студентов фундамент будущей реальной работы.

НО! Все тоже самое что и с MatLab — дорогая иностранная лицензия, слабые возможности визуализации. Дополнительно — привязка к конкретному бренду.

Simintech. это популярная программная платформа для моделирования и симуляции технологических процессов, которая используется в различных отраслях промышленности. По большей части это Российский аналог Matlab. По своей сути, все хорошие возможности он перенял у своего заграничного собрата. Но также есть и минусы.

Из плюсов: Можно отметить что это бесплатный продукт для использования студентами, насчет коммерческого использования наверное возникнут вопросы по стоимости (Не знаю! Не пробовали!)

Если вы уже работали с Matlab то вам будет легко освоиться в новой среде, (но это не точно!).

Что по минусам: Так как это относительно молодая программа, то большая часть функционала еще развивается и появляются вопросы по мере использования, но в скором будущем (мы думаем), этот Гештальт будет закрыт.

Gazebo. Виртуальный симулятор роботов. Опенсорсный,  линуксовый продукт. Интересно и уже по взрослому, некоторые частные компании работают именно с этой оболочкой, но тут много сложностей.

Во‑первых: Не всем захочется, да и кто‑то просто не умеет ставить другую ОС на уже имеющуюся, конечно можно и MacOS, но опять же все упирается в деньги.

Во‑вторых: Gazebo требует от вас хороших знаний в программировании и помимо знаний программирования, вам нужно еще и отлично разбираться например в Ubuntu, если вы поставили ее.

Таким образом, если первые три претендента были слабы в области визуализации, то этот и следующий — не справляются с пожеланиями о простоте кода. Если для освоения инструмента требуется отдельное обучение — это плохой инструмент.

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

Из плюсов: поддержка Windows, API для MatLab, Octave, Python. Библиотека готовых моделей и примеров. Разумеется есть минусы:

Во‑первых: Прописывать логику нужно на Lya (можно и на Python, если отдельно его поставить и настроить) в примитивном, неудобном редакторе. Или управлять моделью через API.

Во‑вторых: Физика симулируется с большими допущениями. (Зато в реальном времени даже на несвежем вузовском железе)

Codesys. аппаратно независимый комплекс для прикладного программирования ПЛК и встраиваемых контроллеров. Основным его компонентом является среда программирования на языках стандарта МЭК 61 131–3. Комплекс работает на компьютере. Программы компилируются в машинный код и загружаются в контроллер.

Из плюсов: CODESYS позволяет программировать различные типы контроллеров от разных производителей в единой среде, используя единый язык программирования. Это упрощает разработку и поддержку проектов, особенно для систем с разными компонентами.

Минусы: CODESYS может быть сложной в использовании для новичков, особенно при разработке сложных систем.

Стоимость: это коммерческий продукт, что может быть недоступно для некоторых пользователей.

Лицензирование: требует лицензии для использования, что может быть дорогостоящим для больших проектов.

В наш список CodeSys попал как пример ПО обучение в котором реально может подготовить к настоящей работе. Но в нем нет визуализатора.

EasyPLC. Является отличным примером того к чему можно стремиться, готовая программа для моделирования собственного производства.

НО! Во‑первых: В наших реалиях мы не можем позволить себе купить лицензию на данный продукт, учитывая что мы бедные студенты.

Во‑вторых: Она просто не будет поддерживаться на территории РФ

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

Пример отображения интерфейса и возможностей EasyPLC

Пример отображения интерфейса и возможностей EasyPLC

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

Какие ПО подходят по хотелкам?

Программы

Наглядный результат

Простой код

Практично

Доступно

MatLab

нет

Иногда да

Да

нет

LabViev

нет

Скорее да

Да

нет

Python

Совсем нет

Да, но нет

Да

да

Simintech

Тоже нет

Все сложно

Да?

да

CoppeliaSim

да

нет

Да?

да

Gazebo

да

нет

Да

Да, но…

codesys

нет

специфично

да

да

EasyPLC

да

См. выше

да

нет

Получается, что за одним платным исключением универсального средства нет (поправьте в комментариях если знаете такое). По этому мы решили сделать связку из двух программ, взяв все самое нужное.

Наш выбор по созданию имитационной лаборатории пал на две программы CoppeliaSim и Simintech. Работает это так: в Simintech есть готовые блоки для связи с внешними устройствами по TCP и UDP. В CoppeliaSim можно запускать пользовательские скрипты на Lua или Python. В скрипте можно создать клиент и сервер UDP. Так программы получают возможность общаться через 127.0.0.1

CoppeliaSim обеспечивает картинку, моделирует физику и дает обратную связь. Simintech позволяет собрать систему управления из графических блоков и управлять нарисованным роботом.

Пример управления манипулятором в программе Coppelia при помощи Simintech

Пример управления манипулятором в программе Coppelia при помощи Simintech

Интересно, что с точки зрения Simintech«а Coppelia выступает как внешнее устройство и может быть в будущем заменена реальным внешним устройством. В Принципе, по той же логике можно подключить и Matlab (к нему у CoppeliaSim есть готовое API) или любое другое ПО из списка. Для студентов постарше у нас даже есть план сделать подобный гибрид из Coppelia + CodeSys. Здесь начинают играть другие плюсы Simintech.

  1. Интерактивные элементы. Запустив расчет можно управлять работой модели мышкой. Как в виртуальных приборах LabView. Это очень удобно — можно настраивать регуляторы и наблюдать результат наглядно.

  2. Hardware‑in‑the‑Loop. В Simintech есть средства для подключения к микроконтроллерам. Так что программу управления для нарисованного робота, можно запускать на реальном контроллере.

  3. Кодогенерация. Simintech может собрать dll библиотеку или код для arduino непосредственно из блоков модели.

Получается цикл поэтапной разработки: Сперва робот нарисован, а контроллер — симуляция. Затем робот реален, а контроллер все еще симуляция. Затем контроллер реален, но подключен через программу посредник. И наконец, код для контроллера сгенерирован и все части системы материальны.

Пока мы только начали разрабатывать модели по такой схеме. Вот пара первых пробных примеров. Получилось неплохо, но далеко от идеала.

Управление и настройка ПИД регулятора для квадрокоптера

Управление и настройка ПИД регулятора для квадрокоптера

На этом рисунке — будущая лабораторная работа по преобразованию систем координат. Зеленый коптер слева можно двигать синими кнопками справа, а уравнения линейной алгебры описывающие преобразования координат компактно расположились справа от центра.

Модель ракеты в Coppelia

Модель ракеты в Coppelia

Пример программы для управления и настройки ПИД ракеты в Simintech

Пример программы для управления и настройки ПИД ракеты в Simintech

На этом виртуальном стенде можно поупражняться в настройках ПИД регулятора. Наглядно и весело.

Подытожим

Для того чтобы создать такие модели, которые хотим мы, приходится дружить между собой несколько программ которые изначально не были связаны, это дает ряд неудобств которые хотелось бы избежать. Рассмотренные программы просто не могут предоставить уже готовые оболочки для наших задач, приходится самим разбираться в API. Печально, но необходимо делать гибрид имени Мичурина. Поэтому в данной статье мы обозрели только некоторые из возможных программ для реализации идей, и ждем, что после прочтения, у людей появятся предложения по улучшению или кто‑то вовсе, заинтересуется разработкой собственных лабораторий которыми в будущем он поделиться и передаст нам драгоценный опыт.

P.S.

Если читатель посчитает нужным дополнить обзор, приглашаем в комментарии и на гит https://github.com/engi‑ner/simintech‑coppelia_labs, за полезным материалом, с большим количеством качественных примеров (со временем полезный материал будет расширяться и вы можете поучаствовать в этом!)

© Habrahabr.ru