Операционная система ros: Что такое ROS · Введение в ROS

Что такое ROS · Введение в ROS

Robot Operating System (ROS)

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

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

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

Платформы (фреймворки) в робототехнике

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

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

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

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

Наиболее активные платформы

MSRDS10Microsoft Robotics Developer Studio, Microsoft — U.S.
ERSP11Evolution Robotics Software Platform, Evolution Robotics — Europe
ROSRobot Operating System, Open Robotics12 — U.S.
OpenRTMNational Institute of Adv. Industrial Science and Technology (AIST) — Japan
OROCOSEurope
OPRoSETRI, KIST, KITECH, Kangwon National University — South Korea

Почему стоит начать с ROS

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

Следует особо отметить, что сообщество ROS чрезвычайно активно. Когда вы сталкиваетесь с проблемой, найти решение и получить помощь становиться проще, не только от разработчика ROS (компании Open Robotics), но и от других энтузиастов и профессионалов.

Что дает готовая платформа

  1. Повторное использование программных модулей. Разработанный программный модуль, легко запускается и переиспользуется в любом другом приложении. Вопросы установки зависимостей и других библиотек хорошо проработан и автоматизирован.
  2. Готовый протокол коммуникации Основная проблема комплексных робототехнических систем, это решение задач коммуникации в рамках одного приложения. Для решения этих задач ROS содержит все необходимые утилиты. Любой программных модуль может быть представлен как отдельный процесс, взаимодействующий с другими процессами по сетевому протоколу. Такой подход позволяет создавать независимые и простые в повторном использовании программные модули, которые возможно запустить/остановить/модифицировать на любом устройстве.
  3. Развитость средств разработки и отладки ROS предоставляет готовые инструменты для отладки, инструмент 2D-визуализации (rqt), и инструмент 3D-визуализации (RViz), инстумент 3D симуляции (Gazebo).
  4. Активное и открытое сообщество Сообщества разработчиков робототехники из академического мира и промышленности, были относительно закрытыми до последнего времени. Но сейчас мы видим активное, и главное открытое сотрудничество всех участников. В центре этого изменения — программная платформа с открытым исходным кодом. В случае ROS существует более 5000 пакетов, которые были разработаны и выложены в общий доступ. Описание этих пакетов, инструкций и другой полезной информации — превышает 18 000 Wiki страниц.
  5. Собственная экосистема Вокруг ROS сформирована собственная экосистема (по аналогии с платформами Android и Apple). В ней существуют разработчики аппаратных платформ, разработчики программных модулей, энтузиасты и компании производители промышленного оборудования, единое место распространения и хранения готовых модулей, тысячи станиц документации. Все участники взаимодействуют и работают в рамках единой платформы.

Что такое ROS

Аббревиатура ОС, обычно обозначает Операционная Система общего назначения (linux, windows, iOS). Можно ли при этом называть ROS операционной системой для роботов? Это не совсем верно. Более точно описать ROS можно определением мета-операционная система.

Мета-операционная система не похожа на обычную операционная систему, такие как Windows, Linux и Android. ROS работает «поверх» существующей операционной системы. Для работы ROS необходима базовая операционная система Linux (например дистрибутив Ubuntu). После завершения установки ROS на OC Linux можно использовать функции, предоставляемые обычной операционной системой. В дополнение к основным функциям, предоставляемым Linux, ROS обеспечивает дополнительный функционал, необходимый для роботов. Например: работа с библиотеками, передача / прием данных для разных устройств, планирование и обработка ошибок. Этот тип программного обеспечения также называется промежуточным программным обеспечением (middleware ) или программным фреймворком.

Основы работы с Robotic Operating System / Хабр

Введение


    Доброго всем времени суток!

    Осваивая в очередной раз просторы Хабра, заметил, что здесь практически нет информации о Robotic Operating System (далее просто ROS). Поспешу исправить эту оплошность и популяризовать замечательный продукт.


    Что же это такое? ROS представляет собой надстройку над ОС, которая позволяет легко и просто разрабатывать системы управления роботами. Что это означает и как с этим потом жить — и призвана рассказать серия топиков.

    По сути, ROS — это набор из различных широко (и неочень) известных библиотек, таких как:

  • OpenCV — библиотека, содержащая алгоритмы компьютерного зрения и обработки изображений;
  • PCL- библиотека для работы с облаками 3D-точек;
  • Ogre — объектно-ориентированный графический движок с открытым исходным кодом;
  • Orocos — библиотека для управления роботами (например, расчет кинематики).


    Также в ROS входят драйвера для различных манипуляторов и сенсоров (включая MS Kinect). Но что же отличает ROS от простой сборки библиотек? Основополагающим преимуществом является клиент-серверная архитектура ROS — разработчики реализовали механизм пересылки сообщений между различными объектами, возможность построения распределенных систем, предоставление brige’ей к языкам С++ и Python.

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

  1. Установка, основные концепции
  2. Создаем свой пакет, знакомимся с сообщениями, простая программа
  3. Сервисы и параметры

Развертывание


    Сегодня ROS стабильно устанавливается и работает только на Ubuntu версии от 10 и выше, на примере Natty все тонкости этого процесса и рассмотрим.

    Итак, шаг первый — настройка репозиториев. Нам нужно разблокировать «restricted,» «universe,» and «multiverse» компоненты, для этого в файле /etc/apt/sources.list необходимо раскомментировать следующие строчки:

deb-src http://security.ubuntu.com/ubuntu natty-security main restricted
deb http://security.ubuntu.com/ubuntu natty-security universe
deb-src http://security.ubuntu.com/ubuntu natty-security universe
deb http://security.ubuntu.com/ubuntu natty-security multiverse
deb-src http://security.ubuntu.com/ubuntu natty-security multiverse


    Затем надо добавить репозиторий для установки и обновлений:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu natty main" > /etc/apt/sources.list.d/ros-latest.list'


    Следующий этап — установка цифровой подписи. Здесь все тоже достаточно тривиально:

wget http://packages.ros.org/ros.key -O - | sudo apt-key add -


    После этого обновимся:

sudo apt-get update


    и попробуем установить сам метапакет ROS. Существует 4 установочных пакета, различающихся объемом предоставляемых модулей. Я воспользуюсь наиболее полным:

sudo apt-get install ros-electric-desktop-full


    После того, как процесс скачивания и развертывания всяких штуковин закончиться, в директории /opt вы должны увидеть папку ros.

    Последний шаг — обновление переменных окружения:

source /opt/ros/electric/setup.bash


    С этого момента ROS к

бою

работе готов. Чтобы убедиться в успешности установки, откройте два терминала, в одном напишите:

roscore


    Это запустит master-процесс, с которого ROS, собственно, и начинает работу.

    В другом напишите

rosrun turtlesim turtlesim_node


    И не забудьте сначала в каждом терминале проиниализировать переменные окружения!

source /opt/ros/electric/setup. bash

    Если перед вами появилась симпатичная черепашка, то значит все нормально. Не закрывайте это окно, оно еще нам пригодится. Чтобы было не так скучно, откройте новый терминал и введите следующее:

rosrun turtlesim turtle_teleop_key


Из этого терминала теперь можно поуправлять рептилией.

    Процесс установки на других ОС не намного сложнее, но, к сожалению, гораздо менее стабильный (на Fedora 15, например, мне завести так и не удалось). Можно только порекомендовать писать баг-репорты, публиковать патчи и будем всем счастье.

Основные понятия


    Начнем с рассмотрения базовых концепций файловой системы (ФС) ROS.

    Пакетом (package) называется наименьшая единица ФС. Представляет собой директорию, содержащую в себе какие-либо данные, библиотеки, исполняемые и конфигурационные файлы и т.д. и т.п., логически объединенные в какой-то полезный модуль. Цель такого структурирования совершенно прозрачна — повышение юзабилити и возможности повторного использования.

    Структура пакета выглядит следующим образом:

  • bin/: скомпилированные бинарники
  • include/package_name: заголовочные файлы для C++ (обязательно должны описываться в manifest.xml!)
  • msg/: типы сообщений
  • src/package_name/: исходный код на С++ и скрипты на Python’е, экспортируемые в другие пакеты
  • srv/: типы сервисов, предоставляемых пакетом
  • scripts/: скрипты на Python’е
  • CMakeLists.txt: CMake файл для сборки пакета
  • manifest.xml: манифест пакета
  • mainpage.dox: Doxygen-документация


    В свою очередь, пакеты объединяются в стэки. На картинке вы можете увидеть пример такой структуры.


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

rospack find [pack_name] — выдает полный путь до директории с пакетом

crady@cradyLap:~$ rospack find rviz
/opt/ros/electric/stacks/visualization/rviz

rosstack find [pack_name] — тоже самое, но уже для стэка

crady@cradyLap:~$ rosstack find navigation
/opt/ros/electric/stacks/navigation


    Это, так сказать, статика. Динамика в ROS описывается узлами(node) и шинами(topic).
Узел — это запущенный процесс, который умеет общаться с другими процессами.
Шина — именованный канал, соединяющая различные узлы.

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

    Откройте третий терминал и введите команду

rxgraph


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

rostopic echo /turtle1/command_velocity


    Подвигайте черепаху и увидете, как в шине /turtle1/command_velocity появляются команды.

Заключение


    На этом, пожалуй, на сегодня все. Впереди еще сервисы, параметры, детальные объяснения сообщений и шин, а сейчас же самое время наградить одолевших основы ROS бутылочкой холодного-того-самого. )

    Полезные ссылки:

  1. www.ros.org/wiki — штаб-квартира пользователей и разрабочиков
  2. answers.ros.org/questions — коллективный разум поможет вам с любыми проблемами (но, все же, не выходящими за пределы ROS)

ROS/введение — ROS Wiki

Пожалуйста, смотрите EditingTheWiki для получения рекомендаций по организации нашей вики и советов по созданию новых страниц.

Пакет ROS или стек

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

Если вы создаете дополнительную документацию для пакета или стека, не стесняйтесь структурировать ее по своему усмотрению, но, пожалуйста, держите ее в пределах пространства имен вашего пакета (например, «ros.org/wiki/my_package/more_details») Создать новую пустую страницу

Учебные пособия

Для систематизации учебных пособий в каждой стопке и пакете есть ссылка на учебные пособия в нижней части страницы. Если вы попали сюда по этой ссылке, начните список руководств с этим шаблоном:

  • TutorialIndexTemplate

После того, как вы сохраните эту страницу, на ней будет кнопка «Создать руководство», которую вы можете использовать для создания новых страниц руководств. который будет автоматически проиндексирован и его будет легче найти пользователям. Также на странице WriteTutorials описано, как написать учебник.

Устранение неполадок

, если вы начинаете страницу устранения неполадок для стека или пакета, у которого в настоящее время нет одного:

  • Устранение неполадок. новая пустая страница

    Или выберите шаблон страницы для создания уже отформатированной страницы:

    Перед созданием страницы проверьте, не существует ли уже подобная страница. Вот несколько существующих страниц с похожими названиями:

    • CategoryTemplate
    • ChangelistTemplate
    • ContestCSHeaderTemplate
    • ContestEntryCSHeaderTemplate
    • ContestEntryTemplate
    • 9 0023 ContestIndexTemplate

    • ContestTemplate
    • CreateTutorialTemplate
    • GithubPackageTemplate
    • HelpTemplate
    • HomepageGroupsTemplate
    • HomepagePrivatePage Template
    • HomepageReadPageTemplate
    • HomepageReadWritePageTemplate
    • HomepageTemplate
    • PackageAPIReviewTemplate
    • PackageCodeReviewTemplate
    • PackageDocReviewTemplate
    • PackageReviewIndexTemplate
    • PackageTemplate
    • 9002 3 ProjectGroupsTemplate

    • ProjectTemplate
    • PublicationTemplate
    • RoadmapTemplate
    • RobotOverviewTemplate
    • ScottHassan/TestTemplate
    • SlideShowHandOutTemplate 90 026
    • Шаблон слайд-шоу
    • Шаблон слайдов
    • StackAPIReviewTemplate
    • StackCodeReviewTemplate
    • StackDocReviewTemplate
    • StackReviewIndexTemplate
    • StackRoadmapTemplate
    • StackTemplate
    • 90 023 SyncJobTemplate

    • TroubleshootingTemplate
    • TutorialCSHeaderTemplate
    • TutorialIndexTemplate
    • TutorialTemplate
    • es/TutorialCSHeaderTemplate
    • 9002 3 из/TutorialCSHeaderTemplate

    • platform_group/Template
    • rviz/DisplayTemplate
    • ROS/Introduction
    • ar/ROS/Introduction
    • cn/ROS/Introduction
    • de/ROS/Introduction
    • es/ROS/Introduccion
    • ja/ROS/ Введение
    • ko/ROS/Введение
    • ros_introspection
    • th/ROS/Introduction
    • vn/ROS/Introduction

    ROS/учебники — ROS Wiki

    Пожалуйста, смотрите EditingTheWiki для получения рекомендаций по организации нашей вики и советов по созданию новых страниц.

    Пакет ROS или стек

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

    Если вы создаете дополнительную документацию для пакета или стека, не стесняйтесь структурировать ее по своему усмотрению, но, пожалуйста, держите ее в пределах пространства имен вашего пакета (например, «ros.org/wiki/my_package/more_details») Создать новую пустую страницу

    Учебные пособия

    Для систематизации учебных пособий в каждой стопке и пакете есть ссылка на учебные пособия в нижней части страницы. Если вы попали сюда по этой ссылке, начните список руководств с этим шаблоном:

    • TutorialIndexTemplate

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