ROS — (Robot Operating System) — это фреймворк для программирования роботов, предоставляющий функционал для распределённой работы. Первоначально, ROS был разработан в 2007 году под названием switchyard в Лаборатории Искусственного Интеллекта Стэнфордского Университета для проекта ().
В 2008 году развитие продолжается в , Калифорнийском научно-исследовательском стартапе/институте/инкубаторе робототехники, совместно с более чем двадцатью сотрудничающими институтами.
Что же такое ROS?
ROS — это мета-операционная система (с открытым исходным кодом) для роботов.
мета- — часть сложных слов, обозначающая обобщённость, обстрагированность, промежуточность.
ROS обеспечивает стандартные службы операционной системы:
аппаратную абстракцию,
низкоуровневый контроль устройств,
реализацию часто используемых функций,
передачу сообщений между процессами,
управление пакетами.
ROS, также предоставляет инструменты и библиотеки для получения, построения, написания и выполнения кода на нескольких компьютерах.
ROS имеет две основные «стороны»: * сторона операционной системы ros, *ros-pkg — набор поддерживаемых пользователями пакетов (организованных в наборы (Стеки)), которые реализуют различные функции робототехники: , планирование, восприятие, моделирование и др.
ROS основан на архитектуре графов, где обработка данных происходит в узлах, которые могут получать и передавать сообщения между собой.
В некотором смысле, ROS похож на «фреймворк для роботов», вроде:
,
,
,
,
,
,
.
При работе ROS, строится «граф» — сеть точка-точка (peer-to-peer network) из процессов, которые связываются друг с другом через инфраструктуру ROS.
ROS реализует несколько различных стилей общения:
синхронное (в стиле RPC) общение ,
асинхронные потоки данных через Темы (),
хранение данных на Сервере Параметров ().
ROS не является системой реального времени, хотя ROS возможно интегрировать с кодом реального времени.
Робот PR2 от Willow Garage, использует систему, называемую ,
которая транслирует сообщения 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.
Если же учитывать специфику, то ниже приводится письмо (участник проектов Player и ROS) в рассылке ros-users относительно различий между ROS и (включая интеграцию ):
Ответ, как обычно, зависит от многого. В частности, это зависит от того, что вы пытаетесь сделать. 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, прежде всего проверено на и Mac OS X, хотя ROS-сообщество вносит свой вклад в поддержку Fedora, Gentoo, Arch Linux и других платформ (считаются «экспериментальными»).
Портирование ROS на Microsoft Windows возможно, но ещё не полностью реализовано.
Лицензия
ROS выпускается в соответствии с условиями BSD-лицензии и c открытым исходным кодом. ROS бесплатен для использования, как в исследовательских, так и в коммерческих целях. Пакеты из ros-pkg распространяются на условиях различных открытых лицензий.
Поддерживаемые роботы
*
*
*
*
*
*
*
* Create
* Mindstorms NXT
*
* и многие
Далее:
Ссылки:
()
Morgan Quigley, Eric Berger, Andrew Y. Ng ""
Morgan Quigley, Brian Gerkey, Ken Conley, Josh Faust, Tully Foote, Jeremy Leibs, Eric Berger, Rob Wheeler, Andrew Ng ""
Комментарии (0)
RSS свернуть / развернутьТолько зарегистрированные и авторизованные пользователи могут оставлять комментарии.