ROS — Robot Operating System



ROS — (Robot Operating System) Операционная система для роботов — это фреймворк для программирования роботов, предоставляющий функционал для распределённой работы. Первоначально, ROS был разработан в 2007 году под названием switchyard в Лаборатории Искусственного Интеллекта Стэнфордского Университета для проекта (STAIR).
В 2008 году развитие продолжается в Willow Garage, Калифорнийском научно-исследовательском стартапе/институте/инкубаторе робототехники, совместно с более чем двадцатью сотрудничающими институтами.

Что же такое ROS?


ROS — это мета-операционная система (с открытым исходным кодом) для роботов.

мета- — часть сложных слов, обозначающая обобщённость, обстрагированность, промежуточность.

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

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

ROS имеет две основные «стороны»:
* сторона операционной системы ros,
* ros-pkg — набор поддерживаемых пользователями пакетов (организованных в наборы (Стеки)), которые реализуют различные функции робототехники: SLAM, планирование, восприятие, моделирование и др.

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

В некотором смысле, ROS похож на «фреймворк для роботов», вроде:
Player,
YARP,
Orocos,
CARMEN,
Orca,
MOOS,
Microsoft Robotics Studio.

При работе ROS, строится «граф» — сеть точка-точка (peer-to-peer network) из процессов, которые связываются друг с другом через инфраструктуру ROS.

ROS реализует несколько различных стилей общения:
синхронное (в стиле RPC) общение сервисов,
асинхронные потоки данных через Темы (Topic),
хранение данных на Сервере Параметров (Parameter Server).

ROS не является системой реального времени, хотя ROS возможно интегрировать с кодом реального времени.
Робот PR2 от Willow Garage, использует систему, называемую pr2_etherCAT,
которая транслирует сообщения ROS в и из realtime-процесса. Также, ROS имеет полную интеграцию с Orocos Real-time Toolkit.

Цели ROS

Зачастую, может возникнуть вопрос: «Чем ROS отличается от X?», где X — какая-нибудь другая программная платформа для роботов.
Это сложный вопрос, так как перед ROS не ставилась цель быть платформой с большим количеством функций.
Основной задачей ROS является поддержка повторного использования кода в робототехнических исследованиях и разработке.
ROS представляет собой распределенную сеть процессов (Узлов — Nodes), что позволяет разрабатывать их индивидуально.
Эти процессы могут быть сгруппированы в Пакеты и Стеки (Packages and Stacks), которые можно легко распространять.
Также, ROS поддерживает федеративные системы репозиториев кода.
Такой дизайн, от уровня файловой системы на уровень сообществ, позволяет возможность независимо принимать решения о разработке и реализации, но все они могут быть объединены вместе, средствами инфраструктуры ROS.

Существует ещё несколько других целей в рамках ROS:

* Тонкий: ROS должен быть как можно тоньше — чтобы код, написанный для ROS мог быть использован и в других программных системах.
Следствием этого является то, что ROS легко интегрируется с другими системами программного обеспечения роботов: ROS уже интегрирован с OpenRAVE, Orocos и Player.
* Библиотеки: предпочтительной моделью развития является написание библиотек с чистым функциональным интерфейсом.
* Независимость от языка: структуру ROS легко реализовать на любом современном языке программирования. ROS уже реализован на: Python, C++, Lisp и экспериментальные библиотеки на Java и Lua.
* Простое тестирование: ROS имеет встроенный фреймворк для тестирования — rostest, что позволяет легко тестировать приложения.
* Масштабирование: ROS подходит для больших систем выполнения и для большого процесса разработки.

Таким образом, на вопрос: «Чем ROS отличается от X?» — трудно ответить на каждый Х. Но, если вы решите использовать X, вы всё же сможете использовать многие из библиотек, распространяемых вместе с ROS.
Если же учитывать специфику, то ниже приводится письмо Brian Gerkey (участник проектов Player и ROS) в рассылке ros-users относительно различий между ROS и Player (включая интеграцию OpenCV):

Brian P. Gerkey
Ответ, как обычно, зависит от многого. В частности, это зависит от того, что вы пытаетесь сделать. Player отлично подходит для простых мобильных платформ. Он был разработан, чтобы обеспечить легкий доступ к датчикам и двигателям роботов Pioneer, оборудованных лазерным дальномером.

С другой стороны, ROS, разрабатывается для комплекса мобильных платформ; с манипуляторами и самыми различными датчиками. По сравнению с Player, ROS легче использовать в распределенной вычислительной среде, и я бы сказал, что высокоуровневая сторона более развита в ROS, чем в Player. В то время, как Player предлагает больше драйверов оборудования, ROS предлагает больше реализаций алгоритмов.

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

Что касается вашего конкретного вопроса относительно интеграции OpenCV, я думаю, что вы найдете больше ROS-кода, чем Player-кода, который использует OpenCV интересными способами. В будущем, вы должны ожидать увидеть даже больше, так как существует значительное перекрытие между командами-разработчиками ROS и OpenCV.

Должен отметить, что ROS использует много кода из проекта Player. Есть узлы ROS, в которых используется код из драйверов Player, и оба Stage и Gazebo хорошо поддерживается и широко используется в ROS-сообществе.

Операционные системы

В настоящее время, ROS работает только на Unix-платформах. Программное обеспечение для ROS, прежде всего проверено на Ubuntu и Mac OS X, хотя ROS-сообщество вносит свой вклад в поддержку Fedora, Gentoo, Arch Linux и других платформ Linux (считаются «экспериментальными»).

Портирование ROS на Microsoft Windows возможно, но ещё не полностью реализовано.

Лицензия

ROS выпускается в соответствии с условиями BSD-лицензии и c открытым исходным кодом. ROS бесплатен для использования, как в исследовательских, так и в коммерческих целях. Пакеты из ros-pkg распространяются на условиях различных открытых лицензий.

Поддерживаемые роботы

* PR2
* TurtleBot
* PR1
* HERB
* STAIR I и II
* Nao
* Husky A200
* iRobot Create
* Lego Mindstorms NXT
* Robotino
* и многие другие

Далее: Что же такое ROS?

Ссылки
www.ros.org
www.willowgarage.com
ROS Introduction
Концепции ROS
Начальные руководства (на русском)
Morgan Quigley, Eric Berger, Andrew Y. Ng «STAIR: Hardware and Software Architecture»
Morgan Quigley, Brian Gerkey, Ken Conley, Josh Faust, Tully Foote, Jeremy Leibs, Eric Berger, Rob Wheeler, Andrew Ng «ROS: an open-source Robot Operating System»

По теме
Робософт — обзор существующих решений
Дистрибутивы ROS
Установка ROS (Electric)


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

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение