Содержание статьи
Все материалы сюжета:
- Собираем роботов-самоходов на Arduino
- Робот для видеонаблюдения на Raspberry Pi
- Тестируем робота без самого робота
Хочешь попробовать себя в робототехнике, но не хочешь тратить деньги, ждать доставки компонентов и мучиться со сборкой? Тебе интересно протестировать код, не оглядываясь на ограничения железа? Эта статья позволит тебе начать работать сразу после прочтения, ведь речь пойдет о симуляции роботов.
Google купила Boston Dynamics. Это сообщение у меня вызвало некий шок. Boston Dynamics — одна из самых известных компаний, специализирующихся на робототехнике, и, если учесть, что Google покупает уже восьмую компанию на этом рынке, возникает правомерный вопрос: что же они задумали? Похоже, нас ждет интересное десятилетие!
Однако не будем слишком долго ломать над этим голову, а лучше займемся делом. Развитие программного обеспечения сейчас позволяет практически каждому взять и создать своего робота. Робота не реального, а его программную модель, то есть выполнить симуляцию робота. Учитывая, что почти все ПО в моем обзоре распространяется бесплатно, это даст тебе огромную экономию по деньгам и времени.
Физический и графический движок
Каждый симулятор включает физический и графический движок. От их возможностей зависит сложность модели робота, которую можно реализовать в симуляторе.
Графический движок — программа, основной задачей которой является визуализация (рендеринг) двухмерной или трехмерной компьютерной графики. Графический движок работает в режиме реального времени.
Физический движок позволяет создать виртуальное пространство, в которое можно добавить виртуальные статические и динамические объекты и указать законы взаимодействия тел и среды. Расчет взаимодействия тел выполняется самим движком. Вычисляя взаимодействие тел между собой и со средой, физический движок приближает физическую модель получаемой системы к реальной и передает уточненные геометрические данные графическому движку.
Достоинства и недостатки симуляторов
Достоинства:
- низкая стоимость;
- возможность в любой момент доработать модель;
- возможность отдельно тестировать функциональные составляющие робота;
- возможность одновременной симуляции нескольких типов роботов.
Недостатки:
- даже самый совершенный физический движок не может симулировать все законы реального мира;
- требовательность к ресурсам машины.
Microsoft Robotics Developer Studio
Microsoft Robotics — это пакет программ, который может использоваться для управления различными роботами и включает в себя полноценный симулятор. В состав Robotics входят следующие компоненты:
- библиотека Concurrent and Coordination Runtime (CCR) — предназначена для организации обработки данных с помощью параллельно и асинхронно выполняющихся методов. Взаимодействие между такими методами организуется на основе сообщений. Рассылка сообщений основана на использовании портов;
- Decentralized Software Services (DSS) — среда, которая позволяет запускать алгоритмы обработки данных на разных ЭВМ, организовывать асинхронное взаимодействие процессов управления различными подсистемами робота;
- Visual Simulation Environment (VSE) — среда визуализации, которая позволяет экспериментировать с моделями роботов, тестировать алгоритмы управления роботами;
- Visual Programming Language (VPL) — язык, предназначенный для разработки программ управления роботами. Программа на таком языке представляется в виде последовательности блоков, которые выполняют обработку данных, и связей между ними.
За симулятор физики в Robotics отвечает Ageia Physx. Очень печально, но в симуляторе отсутствует трение между создаваемыми объектами, хотя моделируется трение между отдельным объектом и платформой, на которой он размещается.
Создать сцену в симуляторе и запрограммировать робота можно на VPL или C#. Естественно, что на C# сцену сделать сложнее, но зато и код получится более эффективный. Возможности Robotics позволяют смоделировать футбол роботов, железную дорогу, манипулятор, добавить на сцену нескольких роботов. Доступные из коробки сенсоры: GPS, лазерный дальномер, инфракрасный дальномер, компас, сенсор цвета, сенсор яркости, веб-камера.
Подробнее о работе с этой средой ты можешь прочитать в номерах 01’13 («Стань робототехником!») и 03’13 («Робот-шпион — это просто!»).
Robotino
Robotino — робот, созданный Festo Didactic для обучения робототехнике. Для программирования робота требуется программа Robotino® View. На сайте Festo доступен симулятор робота для Windows — Robotino® SIM (есть профессиональная и бесплатная версия, бесплатная — немного урезанная по функциональности).
Немного о роботе, который встроен в симулятор. В его состав входят три двигателя, которые позволяют перемещаться роботу по плоскости в любом направлении. Сенсорная система робота включает девять инфракрасных сенсоров расстояния, два цифровых оптических сенсора и камеру. Программировать робота можно с помощью C/C++, Java, .NET.
Вообще, способности бесплатного симулятора удручают. Но! Если хорошенько поискать в интернете, то можно найти версии данного симулятора, заточенные под разные задачи. Да будет тебе известно, что компания Festo Didactic выступает одним из спонсоров RoboCup. Поэтому здесь goo.gl/Wtle15 и здесь goo.gl/pHA2oL ты сможешь найти версии этого симулятора, использовавшиеся в соревнованиях.
Gazebo
Gazebo — мощный симулятор роботов, разработанный для операционной системы Linux. Абсолютно бесплатен для использования. Gazebo может симулировать нескольких роботов с сенсорами в окружении различных объектов. Также тут доступен редактор, который позволяет создавать 3D-сцены без программирования. Моделируемые сенсоры: лазерный дальномер, камера, кинект-сенсор, устройство для чтения RFID-меток и бамперы. Из коробки в симуляторе имеются модели следующих роботов: PR2, Pioneer2 DX, iRobot Create, TurtleBot, а также манипуляторы и захваты. К симулятору для создания качественной графики можно подключить OGRE (графический движок с открытым исходным кодом). В Gazebo встроена возможность чтения файлов в формате Collada, что позволяет добавлять в симулятор объекты, спроектированные в одном из редакторов 3D-моделей.
Gazebo используется в качестве симулятора в DARPA Robotics Challenge (DRC). В рамках DRC разработано приложение CloudSim для запуска Gazebo на платформе облачных вычислений Amazon.
AnyKode Marilou Robotics Studio
AnyKode Marilou Robotics Studio — среда разработки и симулирования мобильных роботов, гуманоидов и манипуляторов с учетом физических законов реального мира. Для объектов можно указать следующие физические параметры: массу, упругость, свойства материала, вращающие моменты, а также некоторые другие.
Marilou позволяет подключать к роботу различные виртуальные устройства: компас, акселерометры, двигатели и сервомоторы, бампер, сенсоры расстояния (ультразвуковой и инфракрасный), GPS и другие устройства.
В редакторе объектов Marilou доступны статические и динамические объекты, которые можно размещать в симулируемом мире (поддерживается одновременная симуляция нескольких роботов). Сложные объекты в Marilou строятся из более простых (используется иерархический подход к представлению объекта), что позволяет повторно использовать части объектов. В симуляторе доступны несколько источников света: точечный, прожектор, внешний и направленный.
В Marilou есть MODA (Marilou Open Devices Access) — SDK для работы с роботами и их компонентами в симуляторе. После синхронизации с часами симулятора алгоритмы управления роботом могут запускаться на другом компьютере сети. В зависимости от выбранного языка MODA предоставляет библиотеки (.lib или .a) или .NET-сборки (.dll) для доступа к симулятору по сети. Программирование алгоритмов управления роботов возможно с помощью языков C/C++, C++ CLI, C#, J#, VB#.
Для коммерческого использования симулятор платный, для образовательных целей — бесплатный (запрашивать лицензию нужно каждые три месяца).
В ноябре 2013 года вышел новый движок симулятора для Marilou — Exec V5. Бета-версия движка может работать на Windows, Ubuntu и Mint. Новый движок многопоточный, кросс-платформенный и использует OpenGL 2.1.
Code Rally: гонки на роботах
Code Rally (разработка IBM) нельзя назвать полноценным симулятором роботов. Если быть точным, Code Rally — симулятор гонок машин (бесплатный и с открытым исходным кодом).
Цель программиста — написать алгоритм управления движения машины («роботом») по трассе (кругу) с учетом следующих правил игры:
- В процессе движения машина должна проходить через контрольные точки, за что ей начисляются очки.
- Перемещаясь по трассе, машина тратит топливо, а также может расстреливать другие машины пулями.
- Машине доступны координаты заправочных станций, кассет с пулями и контрольных точек; трасса ограничена стенами, за пределы которых машина не может выехать.
- Допускается управление скоростью машины.
- На трассе могут находиться заправочные станции и кассеты с пулями. При заправке топливом машина должна оставаться неподвижной. Машина может включать защиту, но в это время в удвоенном объеме тратится топливо.
- Очки начисляются за проезд через контрольную точку (за проезд через точки в установленном порядке начисляется больше очков), за попадание в машину противника (подбитая машина теряет топливо) и за топливо, оставшееся на момент окончания гонки.
Побеждает машина, набравшая максимальное количество очков.
Тестировать свой алгоритм управления машиной можно на сервере (на своем компьютере), посоревноваться с друзьями по сети или запустить приложение на облачном сервере IBM (ведется рейтинг игроков).
Разработка алгоритма управления машиной выполняется в Eclipse на Java. Так что, занимаясь симуляторами, можно не только развлечься, но и Java подтянуть. В симуляторе доступно шесть трасс различной степени сложности.
Algodoo: специализированный симулятор физики
Algodoo — физический 2D-симулятор. Объекты, которые создаются в этом симуляторе, сразу начинают подчиняться законам физики. Конечно, полноценного робота в трехмерном пространстве ты в этой программе не сделаешь, зато сможешь проверить возможность работы любого механизма. В программе можно моделировать воду, пружины, оптические устройства, ракетные двигатели, оружие, автомобили.
Может показаться, что данный симулятор неполноценен в том смысле, что позволяет проектировать и исследовать только «плоских» роботов. Однако ты можешь сначала спроектировать 2D-робота, а потом создать в реале его трехмерную версию. Пример показан здесь (2:07): goo.gl/wzQ7q4. В Algodoo встроен скриптовый язык программирования Thyme, который добавляет большую свободу действий в симуляторе. В Thyme доступны переменные, условный оператор, массивы, обработка событий, происходящих в песочнице (среде моделирования).
История Algodoo началась с игры Phun, которую разработал швед Эмиль Эрнерфельдт (это была его магистерская работа). Поддерживаемые ОС: Windows, OS X, iOS. На сайте доступна библиотека AlgoBox, в которой есть куча обучающих материалов и примеров разработки. Также посмотри algophun.3dn.ru и vk.com/algodoo.
RoboCup Soccer Simulation League: симулятор футбола роботов
wiki.robocup.org/wiki/Soccer_Simulation_League
Соревнования роботов по футболу — еще одна из областей, в которых используются симуляторы. Для этого можно взять любой из описанных универсальных пакетов симуляции, но лучше воспользоваться специализированным. Это даст тебе возможность посоревноваться с другими любителями футбола роботов. Соревнования виртуальных роботов проводятся ежегодно с 1993 года в двух лигах: соревнования 2D-роботов и соревнования 3D-роботов. Информацию ищи на www.robocup.org.
В программное обеспечение симулятора футбола входит несколько компонентов:
- сервер симуляции (simulation server) — основной компонент симулятора, запускает сам процесс симуляции; клиенты взаимодействуют с сервером по протоколу UDP, отправляя команды и получая сенсорную информацию;
- монитор симуляции (simulation monitor) — используется для наблюдения за процессом симуляции (после подключения к серверу) или для просмотра записанной игры (после подключения к плееру лога симуляции);
- плеер лога симуляции (simulation log player) — используется для проигрывания игры, записанной сервером симулятора; плеер используется для управлением проигрыванием лога, а монитор отображает симуляцию.
Лига 2D-роботов. В лиге двумерных роботов соревнуются две команды по 11 игроков в каждой. Каждый игрок представлен автономной программой (агентом). Игра выполняется на двумерной плоскости (стадионе), который предоставляет сервер симуляции. Сервер знает все об игре: положение игроков, мяча и так далее. Игра основана на взаимодействии сервера и агентов. Игрок получает данные с его виртуальных сенсоров (визуального, акустического и физического) и должен на основе этих данных принять решение: удар по мячу, перемещение по полю или разворот.
Лига 3D-роботов. В лиге трехмерных роботов по сравнению с 2D возрастает сложность в связи с более высоким реализмом: добавляется еще одна размерность и усложняется физика игры. Цель игры в данной лиге — не разработать сложную стратегию, а организовать движение роботов: движение по полю, поворот, удар по мячу, вставание робота после падения (конечно же, это связано именно с «молодостью» данной лиги).
Также существует еще большое количество программ для моделирования промышленных роботов, которые я не рассматривал, так как они по большей части специализированные.
Симулятор футбола без проблем может запускаться под Windows, Linux и OS X.
WWW
- Англоязычный кладезь информации о том, как собрать своего реального робота:www.societyofrobots.com
- Конструкции роботов и их обсуждение: roboforum.ru
Заключение
Симулятор — практически идеальная среда, время отклика от компонентов робота приближается к нулю, они имеют безграничный ресурс работы. Поэтому после создания робота или алгоритма и тестирования их в симуляторе лучше всего попытаться воплотить их в реальном мире (если это необходимо). И кто знает, может быть, твои разработки составят конкуренцию роботам из Boston Dynamic или теперь уже Google? Но всегда помни, что симулятор — это только твой помощник. В реальности все может оказаться немного другим.