Дисклеймер. Статья носит образовательный характер. Нам не платили за эту работу, и не заплатят, когда прочтут. Будем безмерно рады как советам так и критике в комментариях.
Вступление: Так получилось, что мы группа студентов и преподавателей, заинтересованных в создании имитационных виртуальных лабораторий, в которых студенты могут без особых углубленных знаний попробовать поуправлять квадрокоптером, конвейером или другими интересными моделями. Ведь не всегда есть возможность потренироваться на реальных физических лабораториях. Нужны: место (деньги), оборудование (деньги) и время (тоже деньги). Следовательно, придется смотреть в сторону виртуальных моделей. Мы искали удобную среду для создания таких моделей и вот до чего дошли (обозреваем ниже).
Немного истории: факультет электромеханики (ныне переименован в Мехатроники и Автоматизации) НГТУ создавался в 50-х, чтобы готовить специалистов по разработке и производству электродвигателей, электрогенераторов e.t.c. Позднее факультет оброс кафедрами смежных направлений а в конце 2020-х открыл направление Робототехники. Профиль ФГОС и 70% предметов оставили прежними. Как и педсостав. В результате получили выпускников которые: умеют подобрать двигатели для круглого квадрокоптера в вакууме (и не только подобрать, но и спроектировать с нуля или пересчитать/перемотать); умеют настроить регуляторы для этого пепелаца; знают как рассчитать мощность и КПД. А вот о том как программировать автопилот — только «имеют представление».
В принципе, такая заточка имеет право на жизнь, если разрабатывать не роботов — доставщиков, а промышленные роботизированные ячейки.
Релаксация на тему возможностей
По профилю нам положено хорошо знать механику и ТАУ — работать с манипуляторами, решать задачи динамики / кинематики и настраивать регуляторы. Данную работу хочется визуализировать. Получить наглядный результат чтобы посмотреть, что, да как будет работать. Вместо манипулятора, может быть летающий или наземный дрон, конвейер, насосный агрегат… Чем разнообразнее, тем лучше для понимания.
По факту, в распоряжении нашей кафедры есть всего‑лишь один робот‑манипулятор, как вы можете догадаться, за 4 часа лабораторной работы, 15 студентов просто не успевает разобраться и понять принцип его действия (или просто не хотят это делать), что печалит любого преподавателя.
Расширять парк оборудования сложно по озвученным во вступлении причинам. Да и зачем — мы же живем в век виртуальной реальности. Можно проводить обучение на виртуальных моделях. Желательно при таком роде обучения помогать студенту. Необходимо делать так чтобы было:
Наглядно (т. е. если делаем движущийся механизм, то видим механизм, а не кучу графиков)
-
Просто / Понятно (не все студенты по дефолту умеют в программирование. Невероятно, но факт!)
ИМХО, тут лучше бы иметь графический язык программирования. Как Scrach для детишек.
Претенденты
Рассмотрим ПО потенциально подходящее для решения задачи.
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](https://habrastorage.org/getpro/habr/upload_files/2b5/507/81c/2b550781c5376f629132f9d523e7c67d.png)
По итогу ниже приведена таблица со всеми нам известными программами, в ней очень емко обозримы плюсы и минусы, просто для наглядности.
Какие ПО подходят по хотелкам?
Программы |
Наглядный результат |
Простой код |
Практично |
Доступно |
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](https://habrastorage.org/getpro/habr/upload_files/32c/db0/177/32cdb0177e8ac52161dcce66e8601b73.png)
Интересно, что с точки зрения Simintech»а Coppelia выступает как внешнее устройство и может быть в будущем заменена реальным внешним устройством. В Принципе, по той же логике можно подключить и Matlab (к нему у CoppeliaSim есть готовое API) или любое другое ПО из списка. Для студентов постарше у нас даже есть план сделать подобный гибрид из Coppelia + CodeSys. Здесь начинают играть другие плюсы Simintech.
Интерактивные элементы. Запустив расчет можно управлять работой модели мышкой. Как в виртуальных приборах LabView. Это очень удобно — можно настраивать регуляторы и наблюдать результат наглядно.
Hardware‑in‑the‑Loop. В Simintech есть средства для подключения к микроконтроллерам. Так что программу управления для нарисованного робота, можно запускать на реальном контроллере.
Кодогенерация. Simintech может собрать dll библиотеку или код для arduino непосредственно из блоков модели.
Получается цикл поэтапной разработки: Сперва робот нарисован, а контроллер — симуляция. Затем робот реален, а контроллер все еще симуляция. Затем контроллер реален, но подключен через программу посредник. И наконец, код для контроллера сгенерирован и все части системы материальны.
Пока мы только начали разрабатывать модели по такой схеме. Вот пара первых пробных примеров. Получилось неплохо, но далеко от идеала.
![Управление и настройка ПИД регулятора для квадрокоптера Управление и настройка ПИД регулятора для квадрокоптера](https://habrastorage.org/getpro/habr/upload_files/0f9/acc/3e2/0f9acc3e2f544dcb10de069863af9dfd.png)
На этом рисунке — будущая лабораторная работа по преобразованию систем координат. Зеленый коптер слева можно двигать синими кнопками справа, а уравнения линейной алгебры описывающие преобразования координат компактно расположились справа от центра.
![Модель ракеты в Coppelia Модель ракеты в Coppelia](https://habrastorage.org/getpro/habr/upload_files/ac6/b27/654/ac6b27654d5c0ffd645d932c40a5d97d.png)
![Пример программы для управления и настройки ПИД ракеты в Simintech Пример программы для управления и настройки ПИД ракеты в Simintech](https://habrastorage.org/getpro/habr/upload_files/fb5/252/19b/fb525219bb6ea8b99e3b868f2c4391e9.png)
На этом виртуальном стенде можно поупражняться в настройках ПИД регулятора. Наглядно и весело.
Подытожим
Для того чтобы создать такие модели, которые хотим мы, приходится дружить между собой несколько программ которые изначально не были связаны, это дает ряд неудобств которые хотелось бы избежать. Рассмотренные программы просто не могут предоставить уже готовые оболочки для наших задач, приходится самим разбираться в API. Печально, но необходимо делать гибрид имени Мичурина. Поэтому в данной статье мы обозрели только некоторые из возможных программ для реализации идей, и ждем, что после прочтения, у людей появятся предложения по улучшению или кто‑то вовсе, заинтересуется разработкой собственных лабораторий которыми в будущем он поделиться и передаст нам драгоценный опыт.
P.S.
Если читатель посчитает нужным дополнить обзор, приглашаем в комментарии и на гит https://github.com/engi‑ner/simintech‑coppelia_labs , за полезным материалом, с большим количеством качественных примеров (со временем полезный материал будет расширяться и вы можете поучаствовать в этом!)
Комментарии (6)
le2
31.07.2024 13:15+3Злой, но дружественный и конструктивный комментарий дам следующий,
математика не наука, а язык науки. Научная работа без математики не научна и поэтому каждую работу пытаются набить формулами. Мерилом хорошей студенческой работы считается усталость. В моём вузе любили грузить расчетами многозвенных фильтров, в других вузах ценится ТАУ. Хотя и то и другое не имеет не технической, ни научной, ни финансовой ценности. Мой личный опыт показал что при практическом применении ТАУ не работает. Теория набита эмпирическими коэффициентами. Все эти полюса и критерий устойчивости Найквиста разваливается в климокамере и на практических испытаниях. Причем это не я дурак. Иностранная лаборатария поставщика компонентов пришла к тому же результату. При повышении частот эмпирические коэффициенты из 197х или из 199х годов обнуляются и остается только подбирать параметры. Ну то есть, как-то это все работает, но научной новизны нет и любой грамотный разработчик поднимет теорию при необходимости, если придется разрабатывать что-то экзотическое, например, сильно высковольтное или высоконагруженное.
критерий истинности в науке - формула должна быть красиво выписана на бумаге гусиным пером. Но сейчас рулят численные методы. Для многих задач математику отнесли в помойку, а результатов достигают разработчики без образования. Например, для современных нейросетей нет математики как подбирать гиперпараметры, а разработчики руководствуются вкусом, опытом и брутфорсом.
электроника - как соединить компоненты между собой - нет большой сложности. Это низкомаржинальный бизнес, который легко воруется. (конечно, электронщики в России это, по большей части печальное зрелище, но это другая история). Все деньги - внутри микросхем или внутри софта. То есть для вашей кафедры это печальные новости.
Матлаб был жив пока были живы DSP двойного назначения. Но американцы сами себе выстрелили в ногу с ограничениями поставок. Ну и время прошло. Сейчас задачи ЦОС даже западные вендоры решают на процессорах общего назначения. LabView - туда же. Всё это заменил Python.
Очевидно что Gazebo вы исключили потому что не владеете Linux. Linux это больно, но ценность Linux перевешивает затраты с освоением. А в текущей ситуации показывать студентам Виндовс это преступно. Хотя бы такой аргумент- в Долине мало используют Виндовс.
Вообще, промышленные роботы сейчас "коммодитифицированны" - стали низкомаржинальным бизнесом, именно поэтому их продали китайцам по всему Западу. То есть ни денег, ни науки там особо не может быть.
Судя по интервью и конференциям многие участники рынка неслабо влошились в это виртуальное моделирование, но в итоге отказались. Натурное испытание рулит. То есть изначальная идея что виртуальное моделирование вам поможет, может быть ущербной идеей.
Итого, на мой взгляд, студентам и всем было бы полезно:
брать то что берут "лидеры рынка" - Сбербанк, Яндекс и так далее, а это, как я понимаю, ROS + Gazebo. Хотя эти "лидеры рынки" в России, чаще всего, имеют сомнительные практические результаты.
из-за того что у вас кафедра не программистская и вы пытаетесь ехать на дохлой лошади ТАУ, то предлагаю сменить лошадь. Наука и практическая ценность должна например быть в гибких захватах. Например в материалах, которые меняют свою жесткость при пропускании через них тока. Это применяется, к примеру, в прототипах протезов. Второй драйвер развития может быть в сенсорах. На мой взгляд стоит сосредоточиться на чем-то малом. Какой-нибудь гибкий инновационный микроманипулятор с сенсорами и тоннами софта и математики. В идеале, конечно, поискать заинтересантов в промышленности. Если это будет компактным, то, вероятно, это будет и не очень дорогим для студентов. Но также понятно, что в текущей ситуации в мире должны быть востребованы элементы для протезов. Законченное изделие вы не сделаете, но какие-то инновационные элементы для того чтобы предложить промышленности возможно.
Gobla
31.07.2024 13:15-согласен
-согласен
-согласенстали низкомаржинальным бизнесом, именно поэтому их продали китайцам по всему Западу
Если колебаться за маржинальностью то можно за 10 лет побыть датасаентистом, промт-инженером / GPTлогом, крипто-инвестором, сыном тысячи онлайн-курсов и дворником.
Натурное испытание рулит
ИМХО разговор как раз о том, как изобразить лабораторию, если натурной лаборатории нет
-про инновации согласен, но чтобы делать инновации нужно хорошо изучить базу.
vagon333
31.07.2024 13:15+1Тоже покоробила фраза:
Вообще, промышленные роботы сейчас "коммодитифицированны" - стали низкомаржинальным бизнесом, именно поэтому их продали китайцам по всему Западу.
У Китая уровень автоматизации производства шустро растет (5 место в 2022, согласно World Robotics 2022).
Считать это низкодоходной фигней, на мой взгляд, легкомыслено.
Modeler
31.07.2024 13:15Почему в качестве программной среды не рассматривали Anylogic? Имеется бесплатная версия PLE.
mahakala
31.07.2024 13:15Что такое ТАУ? Если этого не знать, то большинство дальнейшего текста становится непонятно.
-
Деньги? Один день сво (лочей) сколько лицензий стоит?
tmxx
Модель квадрокоптера в ваккуме довольно проста - её еще Галилей исследовал