Средства моделирования роботов

Модельнометаллическая оболочка. Средства моделирования роботов

PDF версия
Поскольку одной из основных тем августовского номера Control Engineering являются программные средства моделирования систем управления, я решил быть в тренде и посвятить рубрику обзору инструментов компьютерного моделирования непосредственно для роботов. Создано таковых солидное множество, посему на полноту и глубину анализа претендовать не станем. Детально разбирать особенности каждой системы — задача неблагодарная. В конечном счете, каждый выбирает для себя одно-два наиболее удобных средства, что диктуется спецификой задачи, условиями использования, особенностями интерфейса, совместимостью со сторонними программными и аппаратными комплексами, наличием уникальных функций или просто привычками, поэтому мы охарактеризуем общую картину и рассмотрим некоторые интересные аспекты современных решений.
Сергей Колюбин, к. т. н., генеральный директор ООО «Икстурион»

Сергей Колюбин

Мысль, что моделирование при разработке какой бы то ни было технологии или продукта нужно, чтобы сберечь время и деньги, а заодно не подвергать само детище, людей и окружающую среду опасности, тривиальна. К робототехнике это применимо на 100%. Будь то уникальный исследовательский проект или, тем более, новый продукт для серийного производства, грамотное моделирование сокращает как технологические риски в процессе создания, так и вероятность выхода робота из строя при дальнейшей эксплуатации. Сложно переоценить полезность сред моделирования при обучении робототехнике. Сразу доверить студенту робота (зачастую недешевого), в котором есть и электрические провода под напряжением, и подвижные элементы, способные, например, насквозь пробить крышку стола, небезопасно и накладно. Выручает ПО для моделирования, хотя заменить в обучении опыт общения с «железом» все-таки нельзя. В программе можно сохраниться и перезагрузиться, как в компьютерной игре. А с покореженным металлом и дымящимся кремнием сложнее.

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

Matlab SimMechanics

Рис. 1. Matlab SimMechanics

В действительности цель моделирования зависит от стадии разработки. Это может быть и проверка гипотезы, и оптимизация конструкции, механического дизайна, и тестирование программного обеспечения, реализующего новые алгоритмы обработки сенсорной информации и управления поведением, и на более поздних этапах — отладка кода до его переноса на контроллер робота и офлайновое программирование, распространенное в промышленной робототехнике. Процесс разработки нелинейный, и хорошая среда моделирования позволяет безболезненно переключаться между стадиями и быстро оценить конечный результат, даже меняя что-то, заложенное в самом начале.

 

Робот — это, в конечном счете, мехатронная система, то есть принципы и средства моделирования зачастую общие, например, с подвеской автомобиля или системами механизации крыла самолета. С другой стороны, само определение роботов размылось настолько, что сюда попадают и стиральные машинки, и аппараты для автоматической дойки рогатого скота. Но есть нюансы. В частности, при моделировании заложенных в робота алгоритмов управления значение имеет не только воспроизведение его собственного состояния, но и особенности взаимодействия с окружением, т. е. сенсорное восприятие и реакции на него. Особенно это актуально при моделировании алгоритмов с обучением, автономных мобильных роботов и мультиагентных систем. А вот, например, для манипуляционных, шагающих и, в целом, многозвенных роботов самостоятельный интерес представляет моделирование собственной нетривиальной динамики, сложность которой существенно растет с увеличением числа степеней свободы. Кстати, наращивание количества степеней свободы упирается в серьезные вычислительные ограничения. Из собственного опыта: просчет модели антропоморфного робота из 29 звеньев может занять долгие часы даже на мощном сервере.

Программная среда 20-sim

Рис. 2. Программная среда 20-sim

В ообще, используемые программные среды можно разделить на «общего назначения», поддерживающие и моделирование различных роботов, такие как Matlab SimMechanics (рис. 1), 20-sim (рис. 2), Scilab/Scicos и другие многочисленные среды и пакеты, основанные на языке Modelica, а также «специализированные», которые разрабатывались специально под задачи робототехники, например Webots (рис. 3), V-REP (рис. 4), Gazebo и Rviz, интегрируемые с ROS (Robot Operating System), заслуживающей упоминания в рамках отдельной статьи, Microsoft Robotics Developer Studio (рис. 5) и др. Спецификация идет еще глубже, так как есть пакеты для роботов вообще (их большинство), а есть исключительно для мобильных, как Webots, или для промышленных манипуляторов. Среди подобного программного обеспечения имеется как весьма дорогостоящее, так и свободно распространяемое ПО с открытым программным кодом, причем весьма высокого качества, что характерно для международного робототехнического сообщества.

 

Можно еще провести классификацию на «универсальные» и «монобрендовые». В первом случае в среду встраиваются модели различных типов роботов, в том числе поддерживается построение оригинальных моделей с нуля, а инициаторами разработки, как правило, выступают независимые софтверные компании, университетские лаборатории либо коллективы энтузиастов. Во втором разработку ведут сами крупные производители непосредственно под продаваемое оборудование. В основном это компании из промышленной робототехники. К наиболее известным из таких сред относятся ABB Robot Studio (рис. 6), KUKA.SIM и ROBOGUIDE от FANUC, предлагающие довольно схожий функционал.

Webots

Рис. 3.  Webots

Оговорюсь, что я не затрагиваю специализированный CAD-инструментарий, который также активно используется в робототехнике при разработке аппаратной части, а рассматриваю ПО, которое позволяет увидеть робота в действии, то есть включает развитые «физический движок», встроенные средства анимации и API для про- граммирования алгоритмов управления и обработки данных.

 

К наиболее распространенным движкам в оболочках для моделирования роботов относятся свободно распространяемый ODE (Open Dynamics Engine) и PhysX, ныне принадлежащий компании NVIDIA и широко приме- няющийся и в игровой индустрии. К набирающим популярность движкам также относятся Bullet, Vortex, Simbody. Многие среды моделирования совмещают сразу несколько таких движков. Чаще всего при моделировании роботов учитывают динамику твердого тела, хотя есть и приложения, где требуется с высокой точностью аппроксимировать гидро- и аэродинамику. Что до языков программирования, то здесь самые популярные нынче С++, С, Python и Java, а также производные от них специализированные MATLAB и urbiscript. Мультиязычные API в совокупности с кроссплатформностью тоже уже стали стандартом для подобных сред. Некоторые из них, кроме того, предлагают интерфейс для интеграции с другими популярными инструментами моделирования и программирования роботов, например ROS и MATLAB.

V-REP

Рис. 4. V-REP

Что касается способов создания самих моделей, то остановимся на них поподробней. Во-первых, многие продвинутые среды предоставляют готовые «монобрендовые» для собственного оборудования и интегрируемых с ним компонентов (для промышленных манипуляторов это конвейеры, позиционеры, схваты, покрасочные пистолеты, сварочные головки и т. п.), а «универсальные» в борьбе за пользователя, как правило, имеют джентльменский набор из наиболее популярных исследовательских робототехнических платформ и типовых объектов окружающей среды (разные подстилающие поверхности, геометрические примитивы, стены, мебель и т. п.). Кроме того, многие среды поддерживают импорт из распространенных CAD-форматов, например DXF, STL, или посредством формата интерактивной трехмерной векторной графики VRML.

 

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

Если же модель робота все-таки потребуется создавать с нуля, разработчики ПО для моделирования стараются, по возможности, понизить «порог входа», предлагая средства высокоуровневого программирования, некоторые из которых освоить под силу и школьнику с набором базовых знаний. К таким относятся блочное графическое программирование, реализованное, например, в Matlab SimMechanics. В этом случае пользователь может строить модели, просто перетаскивая и соединяя между собой блоки, соответствующие элементарным составляющим робота, таким как вращательные и линейные звенья, шарниры, приводы, датчики и проч. Просто, быстро и наглядно, но за это приходится неизбежно идти на компромисс с гибкостью настроек и перспективами масштабирования — со временем на рабочем поле возникает паутина блоков и стрелок, распутать которую становится непросто.

Microsoft Robotics Developer Studio

Рис . 5. Microsoft Robotics Developer Studio

Альтернативный подход состоит в «символьном» программировании. Популярным средством для этого является унифицированный объектно-ориентированный язык Modelica, использующийся во многих средах моделирования. И этот способ, безусловно, несравненно проще и удобней задания уравнения движений «в лоб», но уже требует некоторых специальных знаний математики, механики и электроники, программирования и понимания синтаксиса языка, поэтому рассчитан на более подготовленную профессиональную аудиторию и более сложные системы. Модель задается в явном виде посредством алгебраических и дифференциальных уравнений, записываемых в непрерывном или дискретном времени.

 

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

Еще один вариант задания (в том числе графических) моделей роботов — это использование URDF- (Unified Robot Description Format) или SDF-моделей, по сути представляющих собой XML-файл, составленный по специальным правилам.

ABB Robot Studio

Рис. 6. ABB Robot Studio

Одной из основных характеристик среды моделирования, конечно, является точность аппроксимации реального робота, зависящая и от качества вычислений, и от эффектов, которые можно учесть: будет робот представлен исключительно как твердое тело, описанное уравнениями Ньютона или Эйлера-Лагранжа, или есть возможность включить дополнительно трение (статическое или динамическое), люфты и деформации (линейные или нелинейные) в механических узлах, переходные процессы в электромеханических и электронных компонентах, специфические модели искажений в системе технического зрения, шумов в сенсорах, запаздывания и помех в каналах связи и так далее. Как правило, в симуляторах есть функции расчета прямой и обратной динамики, задания параметров исполнительных приводов, детектирования столкновений. Из поддерживаемых сенсоров — энкодеры, гироскопы и акселерометры, датчики сил и моментов, ультразвуковые и инфракрасные датчики расстояния, камеры, включая стерео, лазерные сканеры (лидары), датчики структурированного света, магнетометры и GPS-приемники, — набор впечатляющий. Зачастую среды поддерживают инте- грацию с библиотеками планирования движения, такими как коммерческая Reflexxes Motion Library или открытая OMPL (Open Motion Planning Library) Лаборатории Кавраки, а также моделирование мультиагентных систем и даже движения робота в жидкости.

 

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

Полезные ссылки

http://matlab.ru/products/simmechanics
http://www.20sim.com/
http://www.scicos.org/index.html
https://www.modelica.org/
http://www.cyberbotics.com/overview
http://www.v-rep.eu/index.html
http://gazebosim.org/
http://www.ros.org/
http://msdn.microsoft.com/en-us/library/bb483024.aspx
http://new.abb.com/products/robotics/robotstudio
http://www.kuka-robotics.com/en/products/software/simulation/
http://robot.fanucamerica.com/products/vision-software/ROBOGUIDE-simulation-software.aspx
https://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%B7%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B4%D0%B2%D0%B8%D0%B6%D0%BE%D0%BA
http://ode-wiki.org/wiki/index.php?title=Main_Page
http://www.nvidia.ru/object/nvidia-physx-ru.html
http://bulletphysics.org/wordpress/
http://www.cm-labs.com/
https://simtk.org/home/simbody/
http://en.wikipedia.org/wiki/Urbiscript
https://ru.wikipedia.org/wiki/VRML
https://www.modelica.org/tools
http://wiki.ros.org/urdf
http://osrf-distributions.s3.amazonaws.com/sdformat/api/dev.html
http://www.reflexxes.com/
http://ompl.kavrakilab.org/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *