ROS (Robot Operating System) — Операционная система для роботов. Операционная система ros


Robot Operating System / Робософт / RoboCraft. Роботы? Это просто!

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):

Ответ, как обычно, зависит от многого. В частности, это зависит от того, что вы пытаетесь сделать. 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.orgwww.willowgarage.comROS 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)

robocraft.ru

Википедия — свободная энциклопедия

Избранная статья

Первое сражение при реке Булл-Ран (англ. First Battle of Bull Run), также Первое сражение при Манассасе) — первое крупное сухопутное сражение Гражданской войны в США. Состоялось 21 июля 1861 года возле Манассаса (штат Виргиния). Федеральная армия под командованием генерала Ирвина Макдауэлла атаковала армию Конфедерации под командованием генералов Джонстона и Борегара, но была остановлена, а затем обращена в бегство. Федеральная армия ставила своей целью захват важного транспортного узла — Манассаса, а армия Борегара заняла оборону на рубеже небольшой реки Булл-Ран. 21 июля Макдауэлл отправил три дивизии в обход левого фланга противника; им удалось атаковать и отбросить несколько бригад конфедератов. Через несколько часов Макдауэлл отправил вперёд две артиллерийские батареи и несколько пехотных полков, но южане встретили их на холме Генри и отбили все атаки. Федеральная армия потеряла в этих боях 11 орудий, и, надеясь их отбить, командование посылало в бой полк за полком, пока не были израсходованы все резервы. Между тем на поле боя подошли свежие бригады армии Юга и заставили отступить последний резерв северян — бригаду Ховарда. Отступление Ховарда инициировало общий отход всей федеральной армии, который превратился в беспорядочное бегство. Южане смогли выделить для преследования всего несколько полков, поэтому им не удалось нанести противнику существенного урона.

Хорошая статья

«Хлеб» (укр. «Хліб») — одна из наиболее известных картин украинской советской художницы Татьяны Яблонской, созданная в 1949 году, за которую ей в 1950 году была присуждена Сталинская премия II степени. Картина также была награждена бронзовой медалью Всемирной выставки 1958 года в Брюсселе, она экспонировалась на многих крупных международных выставках.

В работе над полотном художница использовала наброски, сделанные летом 1948 года в одном из наиболее благополучных колхозов Советской Украины — колхозе имени В. И. Ленина Чемеровецкого района Каменец-Подольской области, в котором в то время было одиннадцать Героев Социалистического Труда. Яблонская была восхищена масштабами сельскохозяйственных работ и людьми, которые там трудились. Советские искусствоведы отмечали, что Яблонская изобразила на своей картине «новых людей», которые могут существовать только в социалистическом государстве. Это настоящие хозяева своей жизни, которые по-новому воспринимают свою жизнь и деятельность. Произведение было задумано и создано художницей как «обобщённый образ радостной, свободной творческой работы». По мнению французского искусствоведа Марка Дюпети, эта картина стала для своего времени программным произведением и образцом украинской реалистической живописи XX столетия.

Изображение дня

Рассвет в деревне Бёрнсте в окрестностях Дюльмена, Северный Рейн-Вестфалия

wikipedia.green

Википедия — свободная энциклопедия

Избранная статья

Экспедиция Джексона — Хармсворта (англ. The Jackson-Harmsworth Expedition) 1894—1897 годов на Землю Франца-Иосифа — британская арктическая экспедиция под началом Фредерика Джорджа Джексона, финансировавшаяся газетным магнатом Альфредом Хармсвортом и поддержанная Королевским географическим обществом.

После исследований Пайера в 1874—1875 годах учёный мир был в убеждении, что Земля Франца-Иосифа — это южные отроги крупного полярного архипелага, простирающегося, возможно, до Северного полюса. Предполагалось, что это удобный и относительно краткий путь для достижения полюса. Джексон отказался от размещения исследовательского отряда на корабле и основал стационарную базу на мысе Флора, откуда совершались санные и шлюпочные походы. В результате деятельности экспедиции выяснилось, что архипелаг невелик и не простирается к северу далее 82° с. ш. Джексон был убеждён в полезности применения пони как тягловой силы в полярных экспедициях, результатом стало использование лошадей в британских экспедициях в Арктику и Антарктику в течение последующих двух десятилетий. В то же время достижения Джексона были в значительной степени перечёркнуты успехом экспедиции Нансена, лидер которой вместе с Я. Йохансеном вышел к зимовью Джексона летом 1896 года.

Хорошая статья

Бахаэддин Умур-бей Айдыноглу (тур. Umur Bey Aydınoğlu ; 1309—1348) — второй эмир (бей) эмирата (бейлика) Айдын на побережье Эгейского моря. Сын основателя бейлика, Мехмеда-бея Айдыноглу. Европейцы называли Умура [O]marbassanus (Марбашан — Умур-паша). Умур был известен своими морскими пиратскими экспедициями. Он был верным другом и союзником византийского императора Иоанна Кантакузина и оказывал ему помощь в военных кампаниях, особенно во время византийской гражданской войны 1341—1347 годов. Умур помог Кантакузину в войне против Момчила.

При Умуре эмират Айдын обладал флотом из 350 кораблей и армией из &&&&&&&&&&070000.&&&&&070 000 человек. Пиратская деятельность и нападения Умура на христианские суда привели к объявлению против него в 1343 году крестовых походов папой Климентом VI. В 1348 году флот Умура был уничтожен союзным флотом Венеции, рыцарей Родоса и Кипра. Умур был убит стрелой в 1348 году, когда пытался вернуть захваченную в 1334 году госпитальерами Смирну.

Изображение дня

Toyota Land Cruiser на залитом водой солончаке Уюни

wiki.sc

Операционная система для роботов ROS, 10 популярных роботов

Операционная система для роботов ROS (Robot Operating System). 10 популярных роботов на основе ROS на протяжении многих лет. ROS представляет собой набор программных инструментов и библиотек, используемых программистами-роботами для разработки приложений.

Рост сообщества с открытым исходным кодом был довольно поразительным. Вот выдержка из блога дня рождения ROS:

«В эту дату в 2007 году первая сделка была совершена в проекте ROS на SourceForge. С тех пор ROS выросла с первого публичного обязательства до более чем 200 000 сборов, сделанных более чем 2800 человек со всего Мира. Эти взносы составили более 4,5 млн. Значимых строк кода, которые, следуя стандартным оценкам по оценке развития, займут 169 разработчиков в полном объеме 8,5 лет».

Разумеется, ROS будет продолжать разрабатывать и помогать создавать новые роботы и приложения. Но мы думали, что было хорошо взглянув на 10 незабываемых роботов, которые используют ROS. Есть куча замечательных роботов, которые не составляли наш список, поэтому, пожалуйста, поделитесь своими мыслями с нами в комментариях.

Робот искусственного интеллекта STanford (STAIR)

STAIR технически не использовал ROS, но STAIR был там, где все началось в 2006 году. Исследовательская платформа для мобильных манипуляций Стэнфордского университета была построена на предшественнике ROS. STAIR был разработан, чтобы ориентироваться в домашней и офисной среде, подбирать и взаимодействовать с объектами и инструментами, а также интеллектуально взаимодействовать с людьми в этих средах и помогать им.

В STAIR 1 была представлена Neuronics Katana Arm, основа Segway и массив, в который входили пользовательский лазерный сканер, лазерный дальномер Hokuyo, Axis PTZ и другие. По словам его создателей, STAIR был построен с использованием «методов из всех областей ИИ, включая машинное обучение, видение, навигация, манипуляции, планирование, рассуждение и речевую / естественную обработку языка. Это в отличие от 30-летней тенденции работы над фрагментированными подполями AI и станет средством для исследования исследований в отношении истинного интегрированного ИИ».

Персональный робот 2 (PR2)

PR2 - это платформа для исследований и разработок робототехники, созданная Willow Garage. PR2, который был сначала продан в учреждения в 2010 году за 400 000 долларов США, состоял из всенаправленного подхода, оснащенного двумя 7-DOF оружием с грузом 1,8 килограмма. PR2 также имел два бортовых сервера, LIDAR, блок измерения инерции и другие устройства.

Там есть куча видеороликов PR2, но ниже - один из наших фаворитов. «PR2 не будет толкать вас в пул-залах в ближайшее время», - отметили в 2010 году в команде, но это было довольно долгое достижение.

Rethink Robotics Baxter

Введенный в 2012 году совместный робот Baxter стал первым коммерческим роботом, который использовал ROS. И с тех пор это максимизация эффективности и снижение издержек как на производственных, так и на производственных объектах. Вот весело видео с 2013 года о кофе-баре Baxter с Keurig.

Robonaut 2

Возможно, самый крутой из всех роботов на основе ROS, Robonaut 2 (R2) был разработан в партнерстве между NASA и General Motors, разработанным для того, чтобы увидеть, как манипулирующие роботы ведут себя в космосе. R2 был вдохновением для робота NASA Valkyrie, который также называется R5.

Savioke Relay

Стив Кузенс, основатель и главный исполнительный директор Savioke, был одним из крупнейших сторонников движения робототехники с открытым исходным кодом. До основания Savioke, Cousins был президентом и генеральным директором Willow Garage, наблюдая за ROS, PR2 и TurtleBot. Поэтому неудивительно, что автономный робот-ретранслятор Savioke Relay построен на ROS.

Основанная в 2013 году, Savioke изначально выкатила Relay в элитных отелях, доставляющих товары гостям, но недавно она начала свой путь в роскошные жилые комплексы, логистические и производственные фирмы и больницы. Savioke также недавно объявила, что начинает пилот с курортами Walt Disney World.

Fetch робот

Компания RBR50 Fetch Robotics также имеет тесные связи с ROS. Мелони Мудрый (CEO), Майкл Фергюсон (CTO), Дэвид Робсон (начальник штаба) и другие, все проводили время в Willow Garage, работающем в ROS. Поэтому, опять же, не удивительно, что Fetch основал свои роботы на ROS. Вот видеоролик Fetch-роботов, работающих в DHL-партнере Wärtsilä.

TurtleBot

TurtleBot - это недорогой набор персональных роботов, в котором используется ROS. TurtleBot был создан в Willow Garage от Wise и Tully Foote в ноябре 2010 года. С TurtleBot вы сможете построить робота, который может двигаться вокруг вашего дома, видеть в 3D и иметь достаточную мощность для создания захватывающих приложений. TurtleBot 3 был представлен ранее в 2017 году.

Atlas, DRC Version

Из 23 команд, которые участвовали в финале DARPA Robotics Challenge в 2015 году, 18 использовали ROS, чтобы помочь запустить своих роботов.

Автономный автомобиль Marvin

Были и другие автономные автомобили, которые управляли ROS, но Marvin из Техасского университета в Остине был первым. Измененный 1999 Isuzu VehiCross соревновался в 2007 DARPA Urban Challenge, но это была одна из пяти команд, которые не завершили гонку. Однако он смог выполнить многие из трудных задач, включая слияние, разворот, пересечение и парковку.

Clearpath Robotics Grizzly

Введенный в 2013 году, Grizzly разработан для исследований в области сельского хозяйства, горнодобывающей и оборонной робототехники. Grizzly - это роботизированная платформа размера ATV, построенная так, чтобы работать как трактор с точностью промышленного робота. Он может вытащить плуг, нести массовую полезную нагрузку 600 кг. и установить широкий ассортимент стандартных аксессуаров для служебных автомобилей.

Вот видео 2015 года Grizzly, буксирующего самолет.

robroy.ru

ROS (Robot Operating System) — Операционная система для роботов

— Расскажите о себе.— Я менеджер ROS Platform в Open Source Foundation Robotics (OSRF). В OSRF я продолжил работу, начатую в Willow Garage. Там основное внимание уделял разработке ROS, созданию основных инструментов и библиотек, а также помогал развивать сообщество ROS. Я также сосоздатель робота TurtleBot.

— Расскажите о Robot Operating System и как вы начали работу над ней.— ROS — это гибкий фреймворк для написания софта для роботов. Это набор инструментов и библиотек, направленный на упрощение задачи создания сложного поведения робота на целом ряде роботизированных платформ.

ROS была разработана в 2007 году в Стэнфордском университете в рамках проекта STAIR. В 2008 система продолжила свой рост в Willow Garage. В 2013 году Open Source Foundation Robotics (OSRF) вышел из Willow Garage и взял на себя руководство ROS.

— Почему эта операционная система лишь для роботов?— У сообщества робототехников никогда не было open source платформы. Можно сказать, что до появления ROS, робототехники не говорили на одном языке. Представьте себе мир без технологии стека LAMP, и вы почувствуете, какая ситуация была в мире робототехники.

Роботам нужна собственная операционная система из-за их технической сложности. Возьмите самую сложную в мире систему аппаратных средств, наделите ее глазами, ушами, органами чувств, передвижением, манипуляциями. Каждая из этих функций требует добавление большего числа датчиков, данных.

— Почему для Robot Operating System решили использовать Ubuntu, а не Debian или Fedora?— Ubuntu была выбрана из-за популярности и простоты использования. Мы поддерживаем и Debian и Fedora сборку в данный момент. Члены сообщества имеют прототипы сборки debs для Debian и rpms для Fedora.

— Как вы видите развитие Robot Operating System в ближайшем будущем?— В прошлом году наблюдалось увеличение коммерческих развертываний ROS. Для проекта, который стартовал в академических кругах, действительно впечатляет. ROS используется в коммерческих, промышленных, сервисных и потребительских роботах. Система даже установлена на Робонавте-2 (Robonaut2), который находится на борту Международной космической станции.

— Расскажите о ваших основных компонентах и инструментах, что они дают разработчикам робототов?— ROS делится на четыре основные части: plumbing, инструменты, возможности и экосистема. В ядре находится межпроцессорное промежуточное программное обеспечение. Плюс ко всему этому инструменты, упрощающие жизнь разработчика.

Например, для нашего сообщества очень ценны инструменты — 3D визуализатор, logging application и playback application. Эти инструменты позволяют разработчикам сосредоточиться на системе, которую они создают.

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

Одна из возможностей, поддерживаемая в OSRF — это симулятор Gazebo, который обеспечивает 3D-моделирование одного или нескольких роботов с реалистичной физикой и рендерингом. Он может быть использован для регрессионного тестирования. И финальная часть — экосистема, созданная нашим всемирным сообществом пользователей. В рамках этого огромного сообществе люди работают над похожими вещами. ROS дает возможность совместной работы, как с теми, кто рядом, так и людьми в любой точке земного шара.

— Откуда поступает основная поддержка?— Наша основная поддержка исходит из микса грантов, пожертвований и контрактов. У нас есть несколько грантов от организаций, таких как NASA, NSF, и армии. Мы работаем по контрактам с государственными организациями и коммерческими компаниями, такими как DARPA, Qualcomm и Google. Это позволяет разрабатывать новые возможности для наших платформ.

— Насколько важно сообщество в Robot Operating System и что вы делаете для его развития?— Сообщество, стоящие за ROS — это одна из ее отличительных особенностей. Сообщество дает возможность совместной работы, помогает друг другу. Небольшая команда в OSRF поддерживает ядро, но что более важно, мы поддерживать инфраструктуру сообщества.

У нас есть сайты, например answers.ros.org, где сообщество отвечает на тысячи вопросов. Есть члены сообщества по всему миру, выпускающие пакеты. Часть из них — сотрудники робототехнических корпораций, другие занимаются этим как хобби, есть студенты. Сообщество ROS — это место, где каждый может принять участие.

— Как лицензируется ваш код?— Новая BSD по умолчанию. Новые проекты идут под Apache 2.0.

— Долгосрочные цели для Robot Operating System?— Наша долгосрочная цель для ROS — это предоставление основных возможностей для каждого, кто создает робота или роботизированные системы. Следующий крупный проект — это разработка ROS 2.0.

— С ростом интереса к STEM-образованию, вы видите более активное участие ROS в высших и средних учебных заведениях?— ROS имеет успешный опыт реализации в системе высшего образования. Медленно и постепенно, ROS начинает двигаться к младшим классам. TurtleBot, недорогая платформа для разработки на базе ROS, обычно используется в средних школах. Gazebo, программное обеспечение симуляции робота, в скором времени попадет в руки участников FIRST Robotics и RoboCup.

Источник: opensource.com, 16 апреля 2015, CC BY-SA 4.0

Перевод выполнен abv24.com

abv24.com

Обзор свободного фреймворка ROS - операционной системы для роботов

ROS (Robotics Operation System) is an open-source framework designed to ease developing software for robots. Report covers it's main advantages, use cases, existing shortcomings and future development roadmap.

Введение

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

Для решения этих проблем был предложен фреймворк ROS (Robotics Operation System).

Фреймворк ROS как операционная система

Фреймворк ROS — это набор утилит, библиотек, соглашений, который упрощает разработку сложного программного обеспечения для различных робототехнических платформ. ROS работает поверх классической операционной системы, обеспечивая службы мета-операционной системы робота: аппаратную абстракцию различных устройств робота, низкоуровневый контроль этих устройств, реализацию часто используемых функций и задач, передачу сообщений между процессами, и управление пакетами. Можно сказать, что ROS управляет взаимодействием вычислительных устройств с реальным миром.

Как и другие ОС, ROS состоит из двух частей: непосредственно ядра фреймворка ros, и ros-pkg, набора поддерживаемых сообществом пакетов, которые реализуют различные функции робототехники: позиционирование, планирование, восприятие, моделирование и др.

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

Ключевые архитектурные особенности ROS

Основными концепциями ROS являются узлы, сообщения, темы, сервисы. Архитектурно все вычислительные задачи выполняются в узлах ROS, которые обмениваются между собой информацией посредством сообщений. Эти сообщения узлами публикуются в темах, которые разделяют эти сообщения на группы интересов. Когда некоторому узлу необходимо получать сообщения с определенными данными, этот узел подписывается на определенную тему. Для реализации синхронной передачи сообщений, которая необходима в определенных случаях, ROS определяет сервисы — механизм, который работает по принципу вопрос-ответ.

Основные способы применения ROS.

Как фреймворк ROS подразумевает наличие методологии его применения для решения задач робототехники . Рассмотрим его основные сценарии применения.

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

Логирование и воспроизведение данных. ROS обеспечивает логирование и воспроизведение записанных результатов. Механизм реализован через единый канал rosout.

Обмен разработками и повторное использование кода. Также ROS реализует свой собственный пакетный менеджер, который предоставляет пользователю возможность использовать уже отлаженные и готовые алгоритмы, искать уже реализованные идеи, удобно хранить их и использовать в своих проектах. Для этого существуют утилиты rospack, rosbash, которые реализуют функциональность пакетного менеджера unix операционных систем для быстрой навигации и работы с пакетами ROS. Кроме того, такой подход позволяет эффективно организовать совместную разработку и перенос стороннего ПО в пакеты ROS.

Тестирование и отладка. Для тестирования и отладки в ROS имеются специальные утилиты rviz, rxplot. Первая позволяет динамически отображать граф связей запущенных узлов, публикуемые темы, сервисы. Вторая утилита предоставляет инструмент для анализа передаваемых сообщений, отображения временных данных, показаний датчиков и т.д.

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

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

Недостатки и проблемы ROS

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

Вторым недостатком считается отсутствие поддержки ОС Windows, так как многие исследователи и разработчики по-прежнему продолжают использовать эту ОС. Однако над этим недостатком также ведется работа сообществом и есть предварительные результаты.

Развитие ROS

ROS продолжает активно развиваться во многих направлениях, что обусловлено философией коллективной разработки. Активно добавляются новое аппаратное обеспечение, сделаны драйвера для множества популярных устройств: роботов-пылесосов iRobot, Microsoft Kinect, Arduino, Raspberry Pi, Leaf Maple и многих других. Сейчас одним из популярных направлений является портирование основных инструментов ROS на ARM, чтобы у разработчиков появилась возможность запускать узлы на самых разных устройствах. Также расширяется выбор инструментов разработки: C++, Python, Matlab.

Выводы

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

Автору также представляется, что фреймворк ROS в будущем, благодаря своим достоинствам, может превратиться из мета-операционной системы роботов в операционную систему «умных вещей», которая объединит в себе роботов, умные дома, бытовую технику и т. д. Все возможности для этого в ней уже заложены.

Использованная литература

lvee.org

Что же такое ROS? / Робософт / RoboCraft. Роботы? Это просто!

Перед самым новым годом, я выложил перевод последнего урока из серии руководств ROS начального уровня. Честно говоря, при начальном знакомстве с ROS (и даже после прохождения всех этих начальных уроков) было вообще ничего не понятно, и только по прошествии времени, стала вырисовываться картинка это замечательной системы. Похоже, здесь играет роль та кривая обучения, про которую писал Brian Gerkey в своём письме, в котором сравнивал ROS и Player.

вариант кривой обучения для игры Dwarf Fortress:

Разработчики ROS позиционируют свою систему, как операционную систему для роботов (Robot Operating System) и не зря. Дело в том, что ситуации в робототехнике напоминает историю развития ПК: для разных роботов — разные несовместимые системы.

Обычно, при разработке робота вам приходится реализовывать: — свою архитектуру – свой протокол обмена сообщениями – свою систему логирования – свою систему перехода в разные системы координат – свой драйвер джойстика/пульта управления – свою логику навигации – свою систему технического зрения

И даже, если вы сможете использовать различные готовые библиотеки для этих задач, то всё равно перед вами встанет серьёзная проблема — объединить их в единую систему робота.

Вспомним экосистему ПК, состоящую из стандартных слоёв:* железо (материнская плата, процессор, жёсткий диск и т.д.)* операционная система (скрывает от пользователя работу с железом ПК, предоставляет API для программ)* библиотеки и приложения пользователя

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

Однако, было бы странно — не использовать возможности существующих операционных систем, поэтому ROS работает под уже готовой OC (Ubuntu Linux), в которой реализует свой дополнительный слой абстрации — для управления роботами.

Таким образом, для программ взаимодействия и управления роботом, ROS играет роль «операционной системы», предоставляя программам управления свои интерфейсы, библиотеки и готовые приложения.

Для ROS, уже реализованы драйвера, позволяющие единым образом работать со многими устройствами: — джойстиками — GPS — камерами — контроллерами — лазерными дальномерами и т.п.

Так же, ROS уже содержит вспомогательные библиотеки и приложения для роботов: — преобразование систем координат — утилиты для визуализации данных — систему для отладки (логирования) — SLAM — стек навигации — распознавание объектов — планирование движения манипулятора и многое другое.

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

Главный принцип ROS: «не изобретать велосипед» («don't reinvent the wheel»)!

Сами разработчики ROS так же следуют этому принципу, стараясь использовать готовые открытые библиотеки и инструменты:

boost, OGRE, Player, OpenCV… СMake, Python, gcc, wxWidgets…

игровой движок OGRE используется в визуализаторе rviz (в настоящее время на wxWidgets, но планируется перенос под Qt)

Исследователи со всего мира уже многие годы программируют роботов. Целью ROS является объединение готовых решений и наработок в единую среду, где любой желающий может использовать эти решения и делиться своими.

Именно поэтому, многие роботы уже работают под управлением ROS:

Возможно, проще всего, воспринимать ROS, как клей для самых разных модулей. Можно провести параллель с миром UNIX: не писать одну большую программу, а реализовать несколько маленьких, которые могут сообща решить поставленную задачу. Именно так работают Узлы в ROS. Но если в UNIX программы взаимодействуют друг с другом через каналы (pipe), то в ROS, программы (Узлы) взаимодействуют друг с другом через Темы. В UNIX они пересылают друг-другу данные вывода, а в ROS — Сообщения. Таким образом, можно брать разные программы и получать быстрый результат — просто объединяя их между собой, как кубики LEGO. То же самое и в ROS. Только, вместо обычных компьютерных утилит, выступают программы для роботов. Например, вместо программы поиска файлов — программа (Узел) для поиска местоположения. Вместо программы поиска нужной строки — программа (Узел) для поиска объекта на изображении с камер. Вместо команды перемещения файла — программа для управления манипулятором.

Комбинируя готовые Узлы ROS и, по необходимости, дописывая собственные, можно существенно сократить время разработки и позволить себе сконцентрироваться только на тех задачах, которые действительно нужно решить. Например, захотим мы запрограммировать робота принесть нам с кухни яблоко. Если делать всё самому, то можно потратить много времени, чтобы реализовать необходимый функционал. Изучить требуемую теорию (SLAM и т.п.) и реализовать: определение роботом своего текущего положения, навигацию, объезд препятствий, обнаружение объектов, работа с манипулятором и т.д. Если же использовать ROS, то можно, например, взять готовый стек навигации, настроить его для работы на своём роботе и сконцентрироваться только на тех задачах, которые пока в ROS не реализованы. Таким образом, можно сэкономить многие сотни часов, которые будут потрачены на изобретение велосипеда и сконцентрироваться на чём-то действительно новом и интересном. Разумеется, придётся потратить время на изучение ROS и нюансов его использования, но это время намного меньше чем то, которое потребуется на решение любой из вышеприведённых задач (особенно — с нуля).

А ещё можно сравнить ROS с… Arduino! ROS делает для роботов тоже самое, что делает обычная ОС для компьютера — скрывает от пользователя/программиста «железо», предоставляя для этого свои функции. Но ведь, точно так же Arduino, скрывает от пользователя/программиста железо микроконтроллера, предоставляя готовый и удобный фреймворк для программирования. Плюс расширение возможностей с помощью готовых библиотек или написания собственных. Причём, при желании, можно не использовать Arduino-вскую обёртку, а залезть на более низкий уровень. То же самое позволяет сделать и ROS. Как ардуино позволяет любому почти сразу же начать программировать микроконтроллеры, так и ROS позволяет прикоснуться к робототехнике не только высоколобым учёным, но и простым любителям.Вывод: Arduino дало возможность совершить качественный и количественный скачёк в развитии различных систем автоматизации (например, в роли контроллера 3D-принтеров RepRap), а ROS даёт аналогичную возможность развития систем робототехнических!

А уж о взаимном дополнении Arduino и ROS и говорить нечего — действительно гремучая смесь :)

Прелесть и гибкость единого интерфейса ROS, для оборудования робота можно оценить на следующем замечательном примере. "Poor Man's Lidar" — PML — «лазерный дальномер бедных» Навигационный стек ROS, требует для своей работы выполнения определённых условий: робот должен предоставлять одометрию и иметь датчик, возвращающий дистанцию (лазерный дальномер) или облако точек (Kinect или стерео-камера). Кажется, что выполнение последнего условия потребует больших финансов, но нюанс в том, что в ROS, программе навигации для работы, фактически, требуются данные (Сообщения), формата лазерного дальномера (sensor_msgs/LaserScan) или облака точек(sensor_msgs/PointCloud). Получается, что мы можем использовать какой-нибудь другой сенсор, для которого можем реализовать драйвер, возвращающий данные в нужном формате. Например, заменим лазерный дальномер на "лазерный дальномер бедных" (PML) — возьмём относительно недорогой Sharp-овский ИК-дальномер и закрепим его на качалке сервомашинки. Теперь, вращая сервомашинкой из стороны в сторону мы можем получать грубую оценку дальностей в секторе. Остаётся написать драйвер, который будет считывать значения с нашего дальномера и Публиковать Сообщения типа sensor_msgs/LaserScan — тем самым реализуется «поддельный лазерный дальномер». ROS будет успешно считывать данные через наш драйвер, а мы сможем использовать готовый навигационный стек ROS! Красота! Разумеется, подобной сенсор не идёт ни в какое сравнение с обычными лазерными дальномерами, но он более доступен, а если появятся средства на приобретение обычного дальномера, то нам не придётся ничего существенно менять в программе! Только заменить сенсор (и драйвер) и всё!

Кстати, на этом же принципе, в Turtlebot-е используется Kinect. В стеке Turtlebot-а есть пакет pointcloud_to_laserscan, который преобразует облако точек, получаемое от сенсора Kinect в данные лазерного сканера (Fake Laser), что позволяет использовать готовые алгоритмы SLAM (gmapping).
Сообщество
Но ROS — это не только платформа, но и обширное сообщество. Исследователи из различных университетов по всему миру успешно используют ROS для решения задач робототехники и ИИ. Постоянно появляются новые стеки и пакеты, а если возникает вопрос — к сообществу всегда можно обратиться за помощью.

продолжение следует...

Ссылки:www.ros.orgROS IntroductionКонцепции ROSНачальные руководства (на русском)http://answers.ros.orgPi Robot Meets ROSPi Robot + ROS

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

Автор: Vladimir (noonv), 2011-2012

Эксклюзивно для www.robocraft.ru копирование на другие ресурсы и публикация без разрешения автора запрещены.

robocraft.ru