Настало время рассмотреть существующие программные решения для разработки, управления и программирования роботов.
ROS
http://www.ros.org
ROS (Robot Operating System) – это программное обеспечение с открытым исходным кодом (лицензия BSD – т.е. возможно использовать и модифицировать программу под свои задачи, в т.ч. в коммерческих целях).
ROS – это результат работы исследовательской лаборатория Willow Garage в сотрудничестве с университетом Стэнфорда. Проект ROS реализует системный уровень управления роботом, а на его основе развиваются прикладные пакеты: библиотека машинного зрения OpenCV, система планирования действий, сервер управления Player и другие технологии, используемые в десятках научных и прикладных проектов по всему миру.
Главная задача ROS – это возможность повторного использования кода в робототехнических исследованиях и разработках.
ROS интегрирует в себе различные драйверы, алгоритмы и популярные открытые робототехнические библиотеки.
ROS предоставляет функционал своеобразной Операционной Системы Робота: аппаратная абстракция, низкоуровневый контроль оборудования, реализация частоиспользуемого функционала, передача сообщений между процессами, управление пакетами.
ROS не является системой реального времени, хотя и может использовать системы реального времени (например, OROCOS Real-time Toolkit).
ROS – это распределённая система процессов (узлов). Эти процессы могут быть сгруппированы в Пакеты и Стеки, которые можно легко распространять.
ROS легко интегрируется с программными другими фреймворками (на данный момент интегрирован с OpenRAVE, OROCOS и Player).
ROS старается не зависеть от языка программирования – на данный момент уже реализованы версии на C++ и Python (есть экспериментальные библиотеки на LISP, Octave Java, Lua).
ROS имеет встроенный пакет для тестирования – rostest, что облегчает тестирование приложений.
ROS поддерживает возможность масштабирования.
ROS имеет две основных “стороны”: сторона операционной системы ROS и ros-pkg — пользовательские пакеты (организованные в наборы, называемые стеком), которые и реализуют весь функционал – локализация, картографирование, планирование, восприятие, моделирование и т.д.
В настоящее время ROS работает только под UNIX-подобными системами. Основная разработка ведётся под Ubuntu Linux.
В ноябре прошлого года, платформе ROS исполнилось 3 года!
На текущий момент, последняя версия — ROS «C Turtle» (август 2010-го).
Поддерживаемые роботы:
Lego NXT
STAIR 1 — Stanford University
Aldebaran Nao
i-Sobot
Kawada HPR2-V
TUM-Rosie
Marvin
HERB
Penn Quadrotors
Robotino
Meka Robots
Skybotix CoaX Helicopter:
Самый известный робот, работающий под управлением ROS – это, естественно, робот PR2 от Willow Garage.
Список доступных пакетов для ROS
Читать подробнее:
ROS — Robot Operating System
Что же такое ROS?
Microsoft Robotics Developer Studio
http://www.microsoft.com/robotics/
Microsoft Robotics Developer Studio (Microsoft RDS, MRDS) — Windows-ориентированная среда разработки приложений для роботизированных платформ.
Первая версия Robotics Studio вышла в 2006 году, а в настоящее время доступна версия
Microsoft Robotics Developer Studio 2008 R3.
В Robotics Studio имеются инструменты визуального программирования, а также трехмерная виртуальная среда для физической симуляции работы роботов — PhysX.
Составляющие Robotics Studio:
* Runtime environment — окружение, в котором выполняется приложение для роботов, происходит отслеживание и взаимодействие с другими приложениями для роботов. В основе основе Runtime environment лежит CLR 2.0, что дает возможность писать приложения, используя любые языки программирования платформы Microsoft .NET.
Runtime environment состоит из двух элементов:
CCR (Concurrency and Coordination Runtime, библиотека параллельных вычислений и координации) — библиотека для работы с параллельными и асинхронными потоками данных.
DSS (Decentralized Software Services, децентрализованные программные сервисы) –
средство создания распределенных приложений на основе сервисов (для работы и взаимодействия используется протокол Decentralized System Services Protocol (DSSP), который базируется на протоколе SOAP — для обмена произвольными сообщениями используется формат XML).
* VPL (Visual Programming Language) — язык визуального программирования для написания приложений для роботов (диаграммы VPL сохраняются в виде XML-схем)
* Simulation environment — симулятор — окружение для выполнения приложения для роботов в симулируемых условиях (однако, модель физики в Microsoft Robotics Studio, для наглядности, достаточно упрощена и этот симулятор не подойдет там, где нужны точные расчеты.).
В Robotics Studio, приложение — это композиция слабосвязанных параллельно выполняющихся компонентов. При этом — все компоненты в Robotics Studio — это независимо исполняемые сервисы, т.е., например, для разработчика программы не существует физического мотора, а есть сервис с интерфейсом, к которому нужно обратиться, чтобы работать с мотором из написанной программы.
Пакет RDS позволяет разрабатывать программы для различных аппаратных платформ.
Поддерживаемые роботы:
Pioneer 3Dx
Lego Mindstorms NXT
iRobot Create
Aldebaran Nao
Parallax Boe-Bot
Segway RMP
RoombaDevTools
Parallax Boe-Bot
CoroWare CoroBot
Lynxmotion Lynx 6 Robotic Arm
На текущий момент, пакет Microsoft Robotics Developer Studio 2008 R3 (RDS) распространяется бесплатно и свободно доступен для всех желающих. Единственная проблема в том, что никто не может быть уверен, что перетянув на себя часть разработчиков роботов Microsoft снова не захочет получать деньги за свой продукт.
Серьёзный минус RDS – это зависимость от Windows и закрытые исходники.
Кроме того, необходимо отметить, что Robotics Developer Studio не имеет встроенных систем ИИ – систем компьютерного зрения, навигации и машинного обучения. А используемый протокол SOAP, для взаимодействия распределенных сервисов, всё же не предназначен для приложений работающих в режиме реального времени.
URBI
http://www.urbiforge.com
Про систему URBI от французской компании Gostai, мы здесь уже подробно писали.
URBI — это кроссплатформенная открытая программная платформа на C++, используемая для разработки приложений для робототехники и сложных систем.
URBI основывается на распределенной компонентной архитектуре UObject.
Она также включает urbiScript — параллельный и событийный скриптовый язык.
архитектура URBI
URBI реализует свой слой абстракции, отделяя управляющую программу на urbiScript от взаимодействия с ОС и т.д. с помощью прослойки из UObject-драйверов.
Т.е. чтобы подружить своего робота с URBI нужно создать промежуточные UObject-драйвера для своего оборудования.
Большой плюс URBI — это кроссплатформенность системы – она работает под Windows, Linux, и Mac OS.
URBI имеет набор графических утилит разработки — Gostai Studio и Gostai Lab. Своего симулятора у URBI нет, но можно использовать Webots.
Начиная со второй версии Urbi может взаимодействовать с ROS от компании Willow Garage.
И что немаловажно — Gostai открыла исходный код URBI SDK под лицензией GNU AGPL v3.
Система хорошо документирована и поддерживает самые популярные модели роботов:
* Segway
* Aibo ERS7/ERS2xx (Urbi 1.x only)
* iRobot Create
* Lego Mindstorms NXT
* HRP-2 (restricted release to members of JRL)
* Nao от Aldebaran
* Robotis Bioloid
* Mobile Robots Pioneer
Написание модулей UObject вполне посильная задача, что и было сделано – был написан модуль Urbiduino для взаимодействия URBI и контроллера Arduino (через последовательное соединение по протоколу Firmata)
OROCOS
OROCOS (Open Robot Control Software project) — открытое программное обеспечение для управления роботами.
Проект OROCOS поддерживает следующие направления четырёх C++ библиотек:
1. The Real-Time Toolkit,
2. The Kinematics and Dynamics Library,
3. The Bayesian Filtering Library
4. The Orocos Component Library.
Так как OROCOS — это просто набор библиотек, то как следствие у OROCOS отсутствуют новомодные графические инструменты разработки и собственный симулятор.
* The Orocos Real-Time Toolkit (RTT) не существует сам по себе, но обеспечивает инфраструктуру и функциональность других приложений. Данная библиотекя акцентируется на приложениях реального времени, позволяющих интерактивно управлять модулями системы.
* The Orocos Components Library (OCL) предоставляет готовые к использованию компоненты управления, а также компоненты для управления и доступа к аппаратным средствам.
* The Orocos Kinematics and Dynamics Library (KDL) является частью программ, разработанных на C++ ,которая, в свою очередь, позволяет позволяет вычислять кинематику в реальном времени
* Библиотека Orocos Bayesian Filtering Library (BFL) обеспечивает независимую структуру (framework) для Dynamic Bayesian Networks, то есть, рекурсивную обработку информации в соответствии с алгоритмами оценки, применяемых в Bayes’ rule , такие как (Extended) Kalman Filters, Particle Filters (Sequential Monte methods).
Не так давно проект OROCOS стал доступен в виде стека под ROS
orocos_toolchain_ros
Плюсы: бесплатный + open source + Real-Time.
Player, Stage, Gazebo
http://playerstage.sourceforge.net
Проект Player (ранее проект Player/Stage или проект Player/Stage/Gazebo) представляет собой проект по созданию свободного программного обеспечения для исследования робототехники и сенсорных систем.
Проект состоит из 3 основных компонентов: сервера Player и платформ для симуляции роботов – Stage (двумерный симулятор) и Gazebo (трёхмерный симулятор).
Вероятно, Player — наиболее часто используемый интерфейс в робототехнических исследованиях. Большинство ведущих журналов о робототехнике, регулярно публикуют статьи о применении Player (Stage и Gazebo) для управления и моделирования робототехнических экспериментов (в академических, правительственных и индустриальных лабораториях).
Player, обеспечивает сетевой интерфейс для различных роботов и сенсорного оборудования. Клиент-серверная модель Player-а позволяет программам управления робота быть написанными на любом языке программирования и работать на любом компьютере, подключённого к сети вместе с роботом.
Компоненты проекта работают на POSIX-совместимых операционных системах, включая Linux, Mac OS X, Solaris и BSD; планируется портирование на Microsoft Windows.
Проект был основан в 2000 году Brian Gerkey, Richard Vaughan и Andrew Howard в Университете Южной Калифорнии в Лос-Анджелесе и широко используется в робототехниких исследованиях и обучении.
Программное обеспечение распространяется под лицензией GNU General Public License с документацией под GNU Free Documentation License.
Особенности проекта:
* независимость от робототехнической платформы,
* поддержка нескольких языков программирования, включая C, C++, Java, Tcl и Python,
* минимальной и гибкий дизайн,
* поддержка нескольких устройств в одном интерфейсе,
* конфигурации сервера «на лету».
Player работает путём создания нескольких уровней абстракции. Он скрывает низкоуровневые аппаратно-зависимые реализации за набором установленных «интерфейсов».
Высоко-уровневый контроль(логика) взаимодействует только с этими интерфейсами, что
означает, что программа управления может не учитывать что скрывается, за этими интерфейсами.
Компания Willow Garage использует проект Player для разработки программного стека для робота PR2. Все три компонента проекта — Player, Stage и Gazebo были адаптированы для использования внутри ROS с целью полной интеграции обеих платформ.
Skilligent
http://skilligent.com
Основной продукт — Robot Learning and Behavior Control System
, в состав которого входят:
* Система машинного зрения — Robot Vision System ( распознавание и отслеживание объектов, описание которых содержатся в специальной базе данных )
* Система навигации — Visual Localization System (определения ориентации в помещениях после обучающей сессии)
* элементы отказоустойчивой системы управления — Fault-Tolerant Control Framework ( — это JAUS-совместимая система управления для координации совместной работы всех модулей).
Философия продукта состоит в создании полностью обучаемой системы управления. После установки программного обеспечения в робота, пользователь начинает взаимодействовать с роботом, обучая его новым моделям поведения, использовать новые стимулы для обучения робота. Идея состоит в демонстрации необходимой последовательности действий (робот должен распознать жесты тренера и составить себе шаги выполнения задачи).
Итерационный процесс обучения робота продолжается до тех пор, пока робот не сможет делать свою работу самостоятельно.
ERSP от Evolution Robotics
http://www.evolution.com/products/ersp/
ERSP от компании Evolution Robotics — это среда для разработки ПО роботов. Она состоит из трех основных частей:
* ViPR (Visual Pattern Recognition) модуль визуального распознавания,
* vSLAM — модуль ориентирования – на основе данных от одной камеры и оптических энкодеров, позволяет осуществлять локализацию и построение карты местности с точностью до 10 см.
* ERSA — операционная система робота – предоставляет всю инфраструктуру и функционал для управления всеми аппаратными и программными компонентами робота
Система компьютерного зрения и система SLAM основана на алгоритме SIFT.
Для платформы ERSP существует программа для визуального программирования на основе различных “поведенческих” блоков. Кроме того, в ERSP возможна разработка программ на скриптовом языке программирования – Питоне (Python).
ERSP – кросс-платформенная разработка и поддерживает следующие платформы:
32-bit(64-bit) Debian 4.0
32-bit(64-bit) Fedora Core 8
32-bit Windows XP
Данный софт распространяется вместе с универсальным шасси для ноутбуков — ER-1 🙂
В ERSP нет среды моделирования, а так же не поддерживается распределённая архитектура.
К сожалению, система ERSP выглядит заброшенной, т.к. новых релизов давно не появлялось.
Другие системы:
iRobot AWARE 2.0
http://www.irobot.com/gi/developers/Aware/
iRobot’s AWARE 2.0 – это программное обеспечение роботов, разрабатываемое компанией iRobot
какой-то конкретной информации об этой коммерческой разработке нет. Это архитектура, с которой должны быть совместимы все решения сторонних разработчиков для роботов iRobot
LabVIEW Robotics
http://www.ni.com/labview/
LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench) — это кроссплатформенная графическая среда разработки и платформа для выполнения программ, созданных на графическом языке программирования “G” фирмы National Instruments.
В основе LabVIEW лежит парадигма потоков данных.
По проводам(Wire) передаются данные от одних элементов другим. Вся эта концепция называется Data Flow. Суть Блок Диаграммы — это узлы (ноды), выходы одних узлов присоединены ко входам других узлов. Узел начнёт выполнение только тогда, когда прибудут все необходимые для работы данные.
Одна из главных особенностей визуального программирования — код действительно может быть наглядным и красивым! С другой стороны, он может запросто превратиться в лапшу…
LabVIEW используется в системах сбора и обработки данных, а также для управления техническими объектами и технологическими процессами.
LabVIEW поддерживает огромный спектр оборудования различных производителей и имеет в своём составе многочисленные библиотеки компонентов, в том числе, для управления роботами и системами машинного зрения.
Продукт — LabVIEW Robotics
http://www.ni.com/robotics/
и LabVIEW Robotics Starter Kit
Именно на LabView основана среда программирования Lego NXT, но и обычная LabView с модулем LabVIEW LEGO MINDSTORMS NXT Module так же позволяет взаимодействовать со всеми сенсорами робота LEGO Mindstorm NXT.
OpenRAVE — Open Robotics Automation Virtual Environment – трёхмерный симулятор
http://openrave.programmingvision.com
Pyro (Python Robotics) – инструментарий, для управления роботом, написанный на Python-е
http://pyrorobotics.com
YARP (Yet Another Robot Platform) – фреймворк с открытым исходным кодом, написанный на C++ и предназначенный для работы с оборудованием робота.
http://eris.liralab.it/yarp/
CLARAty – программная платформа, созданная в NASA и затем распространяемая в виде open source-проекта. Реализует массу интересных алгоритмов
http://claraty.jpl.nasa.gov/man/overview/index.php
Итоги
Рассмотрев существующие решения ПО для роботов, можно сделать следующие обобщения:
— робософт работает в виде в промежуточного слоя между обычной ОС и программами/скриптами управления роботом
— робософт имеет модульную структуру, которая работает поверх базовой прослойки (фреймворка)
— робософт имеет распределённую клиент-серверную структуру
“стандартный” робософт – это:
* фреймворк, обеспечивающий типовые операции, слой абстракции от оборудования, межпотоковое взаимодействие и т.д.
* дополнительные модули, реализующие различные роботехнические алгоритмы (компьютерное зрение, SLAM, машинное обучение, кинематика)
* симулятор (симулятор является важной частью программного обеспечения для разработки роботов — он позволит отлаживать алгоритмы в виртуальной среде, без покупки дорогостоящего оборудования.)
* оболочка для визуального программирования и управления роботом (наглядное и доступное предметно-ориентированное программирование, представление состояния робота в виде иерархического конечного автомата и т.п.)
Из перечисленных систем, я бы выделил для более подробного знакомства – ROS и URBI.
А так как URBI уже более-менее здесь описана, значит настала пора поближе познакомиться с ROS!
Ссылки
Updated review of robotics software platforms
http://www.ros.org
http://www.willowgarage.com/pages/software/overview
Список доступных пакетов для ROS
http://www.microsoft.com/robotics/
http://ru.wikipedia.org/wiki/Microsoft_Robotics_Developer_Studio
RDS — Tutorials and Samples
Microsoft Robotics Studio – робототехника для всех
русскоязычное сообщество MRDS
http://www.urbiforge.com
http://playerstage.sourceforge.net
http://en.wikipedia.org/wiki/Robotics_simulator
Инструментарии роботостроения с открытым исходным кодом
Автор: Vladimir (noonv), 2010-2011
Эксклюзивно для robocraft.ru
копирование на другие ресурсы и публикация
без разрешения автора запрещены.
0 комментариев на «“Робософт — обзор существующих решений”»
pyrorobotics.org ссылка не рабочая, надо pyrorobotics.com
Спасибо! Пофиксил.