Все материалы сюжета:

Хочешь попробовать себя в робототехнике, но не хочешь тратить деньги, ждать доставки компонентов и мучиться со сборкой? Тебе интересно протестировать код, не оглядываясь на ограничения железа? Эта статья позволит тебе начать работать сразу после прочтения, ведь речь пойдет о симуляции роботов.

Google купила Boston Dynamics. Это сообщение у меня вызвало некий шок. Boston Dynamics — одна из самых известных компаний, специализирующихся на робототехнике, и, если учесть, что Google покупает уже восьмую компанию на этом рынке, возникает правомерный вопрос: что же они задумали? Похоже, нас ждет интересное десятилетие!

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

 

Физический и графический движок

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

Графический движок — программа, основной задачей которой является визуализация (рендеринг) двухмерной или трехмерной компьютерной графики. Графический движок работает в режиме реального времени.

Физический движок позволяет создать виртуальное пространство, в которое можно добавить виртуальные статические и динамические объекты и указать законы взаимодействия тел и среды. Расчет взаимодействия тел выполняется самим движком. Вычисляя взаимодействие тел между собой и со средой, физический движок приближает физическую модель получаемой системы к реальной и передает уточненные геометрические данные графическому движку.

 

Достоинства и недостатки симуляторов

Достоинства:

  • низкая стоимость;
  • возможность в любой момент доработать модель;
  • возможность отдельно тестировать функциональные составляющие робота;
  • возможность одновременной симуляции нескольких типов роботов.

Недостатки:

  • даже самый совершенный физический движок не может симулировать все законы реального мира;
  • требовательность к ресурсам машины.
 

Microsoft Robotics Developer Studio

goo.gl/yJLnJ4

robotics

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

goo.gl/uKhx5t

robotino

Robotino — робот, созданный Festo Didactic для обучения робототехнике. Для программирования робота требуется программа Robotino® View. На сайте Festo доступен симулятор робота для Windows — Robotino® SIM (есть профессиональная и бесплатная версия, бесплатная — немного урезанная по функциональности).

Немного о роботе, который встроен в симулятор. В его состав входят три двигателя, которые позволяют перемещаться роботу по плоскости в любом направлении. Сенсорная система робота включает девять инфракрасных сенсоров расстояния, два цифровых оптических сенсора и камеру. Программировать робота можно с помощью C/C++, Java, .NET.

Вообще, способности бесплатного симулятора удручают. Но! Если хорошенько поискать в интернете, то можно найти версии данного симулятора, заточенные под разные задачи. Да будет тебе известно, что компания Festo Didactic выступает одним из спонсоров RoboCup. Поэтому здесь goo.gl/Wtle15 и здесь goo.gl/pHA2oL ты сможешь найти версии этого симулятора, использовавшиеся в соревнованиях.

 

Gazebo

gazebosim.org

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

www.anykode.com

anykode

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: гонки на роботах

goo.gl/kiRIk

coderally

Code Rally (разработка IBM) нельзя назвать полноценным симулятором роботов. Если быть точным, Code Rally — симулятор гонок машин (бесплатный и с открытым исходным кодом).

Цель программиста — написать алгоритм управления движения машины («роботом») по трассе (кругу) с учетом следующих правил игры:

  1. В процессе движения машина должна проходить через контрольные точки, за что ей начисляются очки.
  2. Перемещаясь по трассе, машина тратит топливо, а также может расстреливать другие машины пулями.
  3. Машине доступны координаты заправочных станций, кассет с пулями и контрольных точек; трасса ограничена стенами, за пределы которых машина не может выехать.
  4. Допускается управление скоростью машины.
  5. На трассе могут находиться заправочные станции и кассеты с пулями. При заправке топливом машина должна оставаться неподвижной. Машина может включать защиту, но в это время в удвоенном объеме тратится топливо.
  6. Очки начисляются за проезд через контрольную точку (за проезд через точки в установленном порядке начисляется больше очков), за попадание в машину противника (подбитая машина теряет топливо) и за топливо, оставшееся на момент окончания гонки.

Побеждает машина, набравшая максимальное количество очков.

Тестировать свой алгоритм управления машиной можно на сервере (на своем компьютере), посоревноваться с друзьями по сети или запустить приложение на облачном сервере IBM (ведется рейтинг игроков).

Разработка алгоритма управления машиной выполняется в Eclipse на Java. Так что, занимаясь симуляторами, можно не только развлечься, но и Java подтянуть. В симуляторе доступно шесть трасс различной степени сложности.

 

Algodoo: специализированный симулятор физики

www.algodoo.com

algoodo

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 игроков в каждой. Каждый игрок представлен автономной программой (агентом). Игра выполняется на двумерной плоскости (стадионе), который предоставляет сервер симуляции. Сервер знает все об игре: положение игроков, мяча и так далее. Игра основана на взаимодействии сервера и агентов. Игрок получает данные с его виртуальных сенсоров (визуального, акустического и физического) и должен на основе этих данных принять решение: удар по мячу, перемещение по полю или разворот.

Соревнования 2D-роботов
Соревнования 2D-роботов

Лига 3D-роботов. В лиге трехмерных роботов по сравнению с 2D возрастает сложность в связи с более высоким реализмом: добавляется еще одна размерность и усложняется физика игры. Цель игры в данной лиге — не разработать сложную стратегию, а организовать движение роботов: движение по полю, поворот, удар по мячу, вставание робота после падения (конечно же, это связано именно с «молодостью» данной лиги).

Соревнования 3D-роботов
Соревнования 3D-роботов

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

Симулятор футбола без проблем может запускаться под Windows, Linux и OS X.

Вообще, симуляторов роботов огромное количество. Если тебе не понравились те, о которых мы рассказали, можно посмотреть в сторону Webots (платный, доступна 30-дневная бесплатная версия) или V-REP (бесплатный для некоммерческого использования). Оба проекта регулярно обновляются.
 

WWW

  • Англоязычный кладезь информации о том, как собрать своего реального робота:www.societyofrobots.com
  • Конструкции роботов и их обсуждение: roboforum.ru
 

Заключение

Симулятор — практически идеальная среда, время отклика от компонентов робота приближается к нулю, они имеют безграничный ресурс работы. Поэтому после создания робота или алгоритма и тестирования их в симуляторе лучше всего попытаться воплотить их в реальном мире (если это необходимо). И кто знает, может быть, твои разработки составят конкуренцию роботам из Boston Dynamic или теперь уже Google? Но всегда помни, что симулятор — это только твой помощник. В реальности все может оказаться немного другим.

2 комментария

  1. Katrino4ka

    02.12.2015 at 13:03

    Спасибо за статью — познавательно!

Оставить мнение

Check Also

WWW: TLDR pages — замена справке man, показывающая только самое важное

Что ты делаешь каждый раз, когда набираешь команду man в Linux или Unix? Правильно: тяжело…