SlideShare a Scribd company logo
1 of 42
Download to read offline
Лекция 1. Общие сведения о курсе
«Аппаратные и программные средства СУ роботами».
Введение в ROS
Кабанов А.А.
Структура дисциплины
Курс
Семестр
Общий
объем,
ЗЕ
(ч)
Контактная работа, ч
Самостоятельная
работа,
ч
РГЗ,
контрольная
работа
курсовая
работа
Зачет
(семестр)
Экзамен
(семестр)
Лекции
Практические
занятия
Лабораторные
занятия
Очная форма обучения
1 1
6
(216)
18 36 0 126 + 36 – – - 1
1 2
4
(144)
18 36 0 90 - - 2 -
Структура дисциплины
Лекция
(4 часа)
Практическое
занятие
(8 часов)
Лекции
(16 часов)
Практические
занятия
(28 часов, 6
индивидуаль-
ных заданий)
Лекция
(2 часа)
Практические
занятия
(8 часов)
Лекции
(12 часов)
Практические
занятия
(26 часов)
Тема 1.1 Тема 1.2 Тема 2.1 Тема 2.2
Экзамен
Зачет
Структура дисциплины
Рассматриваемые темы в рамках изучения курса
Тема 1.1
• Общие сведения о ROS
• ROS архитектура и философия
• Файловая система ROS.
• Мастер, узлы и темы в ROS
• Консольные команды
Тема 1.2
• Рабочее пространство Catkin и система
сборки
• Структура пакета ROS
• Подписчики и издатели ROS
• Действия и сервисы ROS
• Сервер параметров ROS и время
• Launch-файлы
Тема 2.1
• Использование средств ROSToolbox
пакета Matlab
• Работа с основными сообщениями ROS
• Издатели и подписчики в ROSToolbox.
• Преобразования и системное время
ROS
• Работа с bak-файлами
• Действия и сервисы
• ROS и Simulink.
Тема 2.2
• Устройство и организация
микрокомпьютера RaspberryPI
• Операционная система.
• Сопряжение с ROS
Накопительная рейтинговая оценка
Максимальное количество рейтинговых баллов по дисциплине за семестр
составляет 100 баллов, из них:
• посещаемость – 20 баллов;
• текущий контроль (3 лабораторные работы) – 30 баллов;
• самостоятельная работа (выполнение практических заданий на занятии) –
20 баллов;
• дополнительные баллы (экзамен либо выполнение индивидуального
творческого задания) – 30 баллов.
Поощряется командная работа, но каждый студент должен показывать
результаты самостоятельно на ПК и оценивается индивидуально
Задания проверяются по мере готовности. Рекомендуемый срок сдачи
задания до либо в день выдачи следующего задания, в противном случае
оценка снижается.
Структура лекции Темы 1.1
• Общие сведения о Robot Operating System (ROS)
• ROS архитектура и философия
• Файловая система ROS
• ROS мастер, узлы и темы
• Консольные команды
Что такое ROS?
ROS (Robot Operating System) - это мета-операционная система с открытым
исходным кодом для разрабатываемых приложений робототехники. Он
предоставляет услуги, которые вы ожидаете от операционной системы, включая
аппаратную абстракцию, низкоуровневое управление устройствами, реализацию
часто используемых функций, обмен сообщениями между процессами и
управление пакетами. ROS также предоставляет инструменты и библиотеки для
получения, сборки, написания и запуска кода на нескольких компьютерах.
История ROS?
▪ Первоначально разработанный в 2007 году в
Стэнфордской лаборатории искусственного
интеллекта
▪ ROS 1.0 – 2010 год, Стэнфорд
▪ С 2013 года под управлением OSRF
▪ ROS Kinetik (LTS) – 2016
▪ ROS Lunar – 2017
▪ ROS Melodic Morenia - 2018
▪ Сегодня используется многими
университетами и компаниями
▪ Де-факто стандарт для программирования
роботов
Что такое ROS?
▪ Управление процессом
▪ Межпроцессное
взаимодействие
▪ Драйверы устройств
ROS = Robot Operating System
▪ Организация
пакетов
▪ Распространение
программного
обеспечения
▪ Документация
▪ Учебники и
документация
▪ Моделирование
▪ Визуализация
▪ Графический
пользовательский
интерфейс
▪ Регистрация данных
▪ Контроль
▪ Планирование
▪ Восприятие
▪ Картирование
▪ Манипулирование
Источник
-
http://ros.org/
Что такое ROS?
Платформы (фреймворки) в робототехнике
Программная платформа для роботов включает в себя набор инструментов, которые
используются для разработки ПО роботов.
Аппаратные платформы, включают в себя готовые исследовательские и образовательные
устройства (TurtleBot, TurtleBro). А также готовые промышленные системы.
MSRDS12 Microsoft Robotics Developer Studio, Microsoft - U.S.
ERSP11 Evolution Robotics Software Platform, Evolution Robotics - Europe
ROS Robot Operating System, Open Robotics12 - U.S.
OpenRTM National Institute of Adv. Industrial Science and Technology (AIST) - Japan
OROCOS Europe
OPRoS ETRI, KIST, KITECH, Kangwon National University - South Korea
Наиболее активные платформы
Почему стоит начать с ROS
Преимущества
• Популярность
• Open source
• Кроссплатформенность
• Многопоточность
• Поддержка модульного тестирования
Недостатки:
• Высокий порог входа
• Кроссплатформенность
• Отсутствие поддержки Windows, OS X (есть в ROS 2)
Объекты программирования
Нео
turtlebot
PR2
ROS - это не ...
• ROS не является языком программирования. На самом деле программы ROS
обычно пишутся на C ++. Клиентские библиотеки также доступны для Python,
Java, Lisp и нескольких других языков.
• ROS - это не только библиотека. Хотя ROS включает в себя клиентские
библиотеки, он также включает в себя (помимо прочего) центральный сервер,
набор инструментов командной строки, набор графических инструментов и
систему сборки.
• ROS не является интегрированной средой разработки. Хотя ROS не предписан
на какую-либо конкретную среду разработки, он может использоваться с
большинством популярных IDE. Также вполне естественно использовать ROS из
текстового редактора и командной строки без какой-либо IDE.
ROS Философия
▪ Одноранговая связь (Peer to peer)
Отдельные программы взаимодействуют через определенный API (сообщения ROS,
сервисы и т. Д.).
▪ Распределенная работа
Программы могут запускаться на нескольких компьютерах и обмениваться данными по
сети.
▪ Многоязычность
Модули ROS могут быть написаны на любом языке, для которого существует клиентская
библиотека (C ++, Python, MATLAB, Java и т. Д.).
▪ Малый «вес»
Автономные библиотеки обернуты тонким слоем ROS.
▪ Бесплатный и с открытым исходным кодом
Большинство программного обеспечения ROS с открытым исходным кодом и бесплатное
использование.
ROS Философия
ROS имеет три уровня концепций:
• уровень файловой системы
• уровень графа вычислений
• уровень сообщества.
Помимо трех уровней концепций, ROS также определяет два типа имен
• имена ресурсов пакета
• имена ресурсов графа.
Уровень файловой системы ROS
Понятия уровня файловой системы в основном охватывают ресурсы ROS, с которыми вы
сталкиваетесь на диске, например:
Пакеты: Пакеты - это основная единица для организации программного обеспечения в
ROS.
Метапакеты: метапакеты - это специализированные пакеты, которые служат только для
представления группы связанных других пакетов
Манифесты пакетов: манифесты (package.xml) предоставляют метаданные о пакете,
включая его имя, версию, описание, информацию о лицензии, зависимости и другую
метаинформацию, такую ​​как экспортированные пакеты. Манифест пакета package.xml
определен в REP-0127.
Репозитории: набор пакетов, которые используют общую систему VCS.
Типы сообщений (msg): описания сообщений, хранящиеся в my_package / msg /
MyMessageType.msg, определяют структуры данных для сообщений, отправляемых в ROS.
Типы служб (srv): описания служб, хранящиеся в my_package / srv / MyServiceType.srv,
определяют структуры данных запроса и ответа для служб в ROS.
Уровень файловой системы ROS
Уровень графа вычислений ROS
Граф вычислений - это одноранговая сеть процессов ROS, совместно обрабатывающих
данные.
Узлы: узлы - это процессы, выполняющие вычисления.
Мастер: Мастер ROS обеспечивает регистрацию имени и поиск в остальной части графа
вычислений.
Сервер параметров: Сервер параметров позволяет хранить данные с помощью ключа в
центральном месте.
Сообщения: узлы общаются друг с другом, передавая сообщения. Сообщение - это просто
структура данных, состоящая из типизированных полей.
Темы: сообщения маршрутизируются через транспортную систему с семантикой
публикации / подписки. Узел отправляет сообщение, публикуя его в заданной теме.
Сервисы: модель публикации / подписки - очень гибкая парадигма коммуникации, но ее
односторонний транспорт «многие ко многим» не подходит для взаимодействий типа
«запрос / ответ», которые часто требуются в распределенной системе.
Пакеты: Пакеты - это формат для сохранения и воспроизведения данных сообщений ROS.
Базовые понятия ROS. Взаимодействие
узлов.
Более подробно на
http://wiki.ros.org/rosnode
Базовые понятия ROS. Тема и узел.
В робототехнике нам часто приходится взаимодействовать с реальным миром. Одним
из типов устройств, которые мы можем использовать для получения информации об
окружающей среде, является датчик (сенсор): мы можем определить требуемую
характеристику некоторого параметра из окружающей среды и преобразовать его в
данные.
Являются ли датчики примером узла ROS или темой ROS?
Уровень сообщества ROS
Концепции уровня сообщества ROS - это ресурсы ROS, которые позволяют отдельным
сообществам обмениваться программным обеспечением и знаниями. Эти ресурсы
включают:
Дистрибутивы: Дистрибутивы ROS - это наборы стека с поддержкой версий, которые
вы можете установить.
Репозитории: ROS полагается на объединенную сеть репозиториев кода, где различные
учреждения могут разрабатывать и выпускать свои собственные программные
компоненты для роботов.
Wiki ROS: Wiki сообщества ROS является основным форумом для документирования
информации о ROS.
Система сообщений об ошибках
Списки рассылки: список рассылки ros-users является основным каналом связи с
новыми обновлениями ROS, а также форумом, где можно задавать вопросы о
программном обеспечении ROS.
ROS Имена
Имена ресурсов графа предоставляют иерархическую структуру именования, которая
используется для всех ресурсов в графе вычислений ROS, таких как узлы, параметры,
темы и службы.
несколько примеров имен:
• / (the global namespace)
• /foo
• /stanford/robot/name
• /wg/node1
Имена ресурсов графа - важный механизм в ROS для обеспечения инкапсуляции.
Каждый ресурс определяется в пространстве имен, которое он может использовать
совместно со многими другими ресурсами.
Ресурсы могут создавать ресурсы в своем пространстве имен, и они могут получать
доступ к ресурсам внутри или выше своего собственного пространства имен.
Связи могут быть выполнены между ресурсами в разных пространствах имен, но
обычно это делается с помощью кода интеграции над обоими пространствами имен.
Эта инкапсуляция изолирует различные части системы от случайного захвата ресурса с
неправильным именем или глобального перехвата имен.
ROS Имена
Имена разрешаются относительно, поэтому ресурсам не нужно знать, в каком
пространстве имен они находятся.
Это упрощает программирование, поскольку узлы, которые работают вместе, могут
быть записаны так, как если бы они все находились в пространстве имен верхнего
уровня.
Когда эти узлы интегрированы в более крупную систему, они могут быть помещены в
пространство имен, которое определяет их набор кода.
Инструменты (например, визуализация графика), а также параметры (например,
demo_name), которые должны быть видимы для всего графа, могут быть созданы
узлами верхнего уровня.
Например, можно взять демонстрацию Stanford и демонстрацию Willow Garage и
объединить их в новую демонстрацию с подграфами stanford и wg. Если бы в обеих
демонстрациях был узел с именем «камера», они не конфликтовали бы.
ROS Имена
Допустимое имя имеет следующие характеристики:
• Первый символ - это альфа-символ ([a-z | A-Z]), тильда (~) или косая черта (/).
• Последующие символы могут быть буквенно-цифровыми ([0-9 | a-z | A-Z]),
подчеркиванием (_) или косой чертой (/).
Исключение: базовые имена (описанные ниже) не могут содержать в себе косую черту
(/) или тильды (~).
В ROS существует четыре типа имен ресурсов графа: базовые, относительные,
глобальные и частные, которые имеют следующий синтаксис:
• base
• relative/name
• /global/name
• ~private/name
По умолчанию разрешение выполняется относительно пространства имен узла.
Например, узел /wg/node1 имеет пространство имен /wg, поэтому имя node2 будет
преобразовано в /wg/node2.
ROS Имена
Имена без каких-либо квалификаторов пространства имен являются базовыми
именами. Базовые имена на самом деле являются подклассом относительных имен и
имеют те же правила разрешения. Базовые имена наиболее часто используются для
инициализации имени узла.
Имена, начинающиеся с «/», являются глобальными - они считаются полностью
разрешенными. По возможности следует избегать использования глобальных имен,
поскольку они ограничивают переносимость кода.
Имена, начинающиеся с "~", являются личными. Они преобразуют имя узла в
пространство имен. Например, node1 в пространстве имен / wg / имеет частное
пространство имен / wg / node1. Частные имена полезны для передачи параметров
определенному узлу через сервер параметров.
Вот несколько примеров разрешения имен:
ROS Имена
Имена ресурсов пакетов используются в ROS с концепциями уровня файловой системы,
чтобы упростить процесс обращения к файлам и типам данных на диске. Имена
ресурсов пакета очень просты: они представляют собой просто имя пакета, в котором
находится ресурс, плюс имя ресурса. Например, имя «std_msgs / String» относится к
типу сообщения «String» в пакете «std_msgs».
Некоторые файлы, связанные с ROS, на которые можно ссылаться с использованием
имен ресурсов пакета, включают:
• Типы сообщений (msg)
• Типы сервисов (SRV)
• Типы узлов
Имена ресурсов пакета очень похожи на пути к файлам, за исключением того, что они
намного короче.
Допустимое имя имеет следующие характеристики:
• Первый символ - это альфа-символ ([a-z | A-Z])
• Последующие символы могут быть буквенно-цифровыми ([0-9 | a-z | A-Z]),
подчеркиваниями (_) или косой чертой (/).
• Имеет не более одной косой черты ('/').
ROS Концепции более высокого уровня
Существует несколько стеков, таких как common, common_msgs и geometry, которые
предоставляют эти высокоуровневые концепции для использования с ROS.
Координатные системы / преобразования
Пакет tf предоставляет распределенную структуру на основе ROS для расчета позиций
нескольких систем координат во времени.
Действия / Задачи
Пакет actionlib определяет общий тематический интерфейс для вытесняемых задач в
ROS.
Онтология сообщений
Определено несколько классов сообщений, включая:
actionlib_msgs: сообщения для представления действий.
diagnostic_msgs: сообщения для отправки диагностических данных.
geometry_msgs: сообщения для представления общих геометрических примитивов.
nav_msgs: сообщения для навигации.
sensor_msgs: сообщения для представления данных датчика.
ROS Концепции более высокого уровня
Плагины
pluginlib предоставляет библиотеку для динамической загрузки библиотек в коде C ++.
Фильтры
Пакет фильтров предоставляет библиотеку C ++ для обработки данных с
использованием последовательности фильтров.
Модель робота
Пакет urdf определяет формат XML для представления модели робота и предоставляет
синтаксический анализатор C ++.
Клиентская библиотека ROS
Клиентская библиотека ROS - это набор кода, который упрощает работу программиста
ROS.
Основные клиентские библиотеки
roscpp: roscpp - это клиентская библиотека C ++ для ROS
rospy: rospy - это чистая клиентская библиотека Python для ROS
roslisp: roslisp - это клиентская библиотека для LISP, которая в настоящее время
используется для разработки библиотек планирования
Экспериментальные клиентские библиотеки
roseus: roseus - это клиентская библиотека для языка EusLisp.
rosgo: чистая реализация на Go
rosjava: rosjava - это реализация ROS на чистой Java с поддержкой Android.
rosnodejs: rosnodejs - это собственная клиентская библиотека ROS Javascript для Node.js
RobotOS.jl - это собственный пакет Julia, который обертывает rospy.
rosR: rosR - это расширение ROS для языка статистического программирования R
rosruby: поддержка ruby
Интерфейс ROS-MATLAB: библиотека функций для подключения к ROS из MATLAB® .
Интерфейс ROS-Simulink: набор блоков Simulink® для подключения к ROS и
развертывания узлов ROS из Simulink® .
Базовые понятия ROS. Мастер (Master)
Мастер имеет регистрационные API, которые позволяют узлам регистрироваться
в качестве издателей, подписчиков и поставщиков услуг. Мастер имеет URI и
хранится в переменной среды ROS_MASTER_URI. Этот URI соответствует host: port
сервера XML-RPC, на котором он работает. По умолчанию мастер будет привязан
к порту 11311.
Мастер выполняет роль сервера имен для возможности подключения между
собой различных нод. Команда roscore запускает сервер мастера, и после этого к
нему могут подключиться и зарегистрироваться ноды ROS. Связь между нодами
(обмен сообщениями), невозможна без запущенного мастера.
При запуске ROS roscore, мастер будет запущен по адресу URI, установленным в
переменной окружения ROS_MASTER_URI. По умолчанию адрес использует IP-
адрес локального ПК и номер порта 11311
Запустить сервер мастера с помощью команды
Более подробно на
http://wiki.ros.org/Master
Базовые понятия ROS. Узел (Node).
Понятие узла, относится к наименьшей
"рабочей" единицы используемой в ROS.
Можно провести аналогию с одной
исполняемой программой. ROS рекомендует
создать один узел для каждой задачи, что
позволить легче использовать его в других
проектах.
При запуске узел регистрирует информацию о
себе на мастере (название узла, типы
обрабатываемых сообщений).
Зарегистрированный узел может
взаимодействовать с другими узлами (получать
и отправлять запросы).
Более подробно на
http://wiki.ros.org/Master
Базовые понятия ROS. Узел (Node).
Узел ROS имеет несколько API:
• Подчиненный API - это XMLRPC API, который
выполняет две роли: получение обратных
вызовов от мастера и согласование
соединений с другими узлами.
• Тематическая реализация транспортного
протокола. Узлы устанавливают
тематические связи друг с другом, используя
согласованный протокол. Самый общий
протокол - TCPROS, который использует
постоянные соединения сокетов TCP / IP с
отслеживанием состояния.
• API командной строки. Каждый узел должен
поддерживать аргументы переназначения
командной строки, которые позволяют
настраивать имена внутри узла во время Более подробно на
http://wiki.ros.org/Master
Базовые понятия ROS. Тема.
Тема (Topic), модель Издатель и Подписчик
Тема (Topic), это один из видов обмена сообщениями.
Узел издателя (publisher) сначала регистрирует свою тему на мастере, а затем начинает
публикацию сообщений в эту тему (топик). Узлы подписчиков, которые хотят получать
информацию из этой темы (типика) при помощи мастера получают адрес этой темы и
далее получают сообщения из нее.
Издатель (Publisher)
Издателем называется процесс, который рассылает сообщения в рамках созданного
топика для других узлов. Один узел может содержать несколько издателей,
публикующих данные в разные топики.
Подписчик (Subscriber)
Подписчиком (Subscriber) называется процесс, который получает сообщения из
определенной темы (Topic). Подписчик (Subscriber) регистрируется на Мастере (Master),
указывая какие темы Подписчик хочет получать. После этого Издатель (Publisher)
начинает отправлять сообщения подписчику. Связь с темой для подписчика является
асинхронной (издатель публикует сообщения в не зависимости от статуса
подписчиков).
Базовые понятия ROS. Тема.
Модель работы в режиме Topic, подразумевает использование одного типа сообщения
как для Издателя (Publisher) и подписчика (Subscriber).
Модель Topic являются однонаправленной и подразумевает непрерывную отправку
или получение сообщений. Такой способ коммуникации подходит для датчиков,
которым требуются периодическая передача данных. Несколько подписчиков могут
получать сообщения от одного издателя и наоборот (возможна работа несколько
издателей).
Базовые понятия ROS. Тема и узел.
Узлы и темы вместе образуют основу любого приложения ROS. Важно знать, как они
работают вместе!
Сколько узлов могут публиковать сообщения в одной теме?
Создание собственных приложений
ROS. Подписчики и издатели.
Является ли следующее утверждение Истинным или Ложным:
Тема ROS может быть опубликована без инициализации узла ROS.
Базовые понятия ROS. Сообщение.
Сообщение (Message)
Узлы отправляют и принимают данные
между собой, согласно заданного
формата. Эти данные называют
Сообщения, а описание Типом
Сообщения.
Сообщения могут быть простых типов
(integer, float, boolean) так и могут
состоять из сложных структур,
содержать вложенных сообщения и
массивы сообщений).
Более подробно на
http://wiki.ros.org/Messages
Базовые понятия ROS. Сообщение.
Более подробно на
http://wiki.ros.org/Messages
Структура данных, определяющая тип
темы:
▪ Состоит из вложенной структуры целых
чисел, чисел с плавающей точкой,
логических значений, строк и массивов
объектов
▪ Определена в * .msg файлах
Посмотреть тип темы
Опубликовать сообщение в теме
Базовые понятия ROS
Более подробно на
http://wiki.ros.org/Messages
Например для сообщение с координатами объекта (XYZ) есть существующий тип
сообщения geometry_msgs/Point.msg который описывается:
Базовые понятия ROS. Более подробно
о сообщениях.
Сообщение представляет собой структуры данных, которая используется при обмене данных
между узлами.
Топики (Topic), службы (Services) и Действия (Actions) используют сообщения для взаимодействия
между собой. Сообщения могут включать в себя как базовые типы (целое число, число с
плавающей точкой, логические и тд), так и массивы сообщений.
Помимо этого, сообщения могут инкапсулировать в себе другие существующие типы сообщений и
специальные заголовки.
Сообщения описываются в файлах .msg как пары значений: тип поля и имя поля.
fieldtype fieldname
fieldtype1 fieldname1
Для реального примера, сообщение может выглядеть так:
int32 x
int32 y
Базовые понятия ROS.
Базовые типы ROS
В таблице ниже описаны базовые типы ROS и их представление в языках С++ и Python
в ROS для C++ для Python
bool uint8_t bool
int8 int8_t int
uint8 uint8_t int
int16 int16_t int
uint16 uint16_t int
int32 int32_t int
uint32 uint32_t int
int64 int64_t long
uint64 uint64_t long
float32 float float
float64 double float
string std::string str
time ros::Time rospy.Time
duration ros::Duration rospy.Duration
Наследование типов сообщений
Сообщения могу содержать не только базовые
типы, но и использовать заново уже созданные
типы сообщений. Например сообщение типа
geometry_msgs/Pose описывается
конфигурацией
Point position
Quaternion orientation
где Point и Quaternion это существующие типы
сообщений.
Полезные ссылки
ROS Wiki
▪ http://wiki.ros.org/
Установка
▪ http://wiki.ros.org/ROS/Installation
Учебные материалы
▪ http://wiki.ros.org/ROS/Tutorials
Доступные пакеты
▪ http://www.ros.org/browse/
Шпаргалки (Cheat Sheet) ROS
▪ https://www.clearpathrobotics.com/ros-robot-operating-system-cheat-sheet/
▪ https://kapeli.com/cheat_sheets/ROS.docset/Contents/Resources/Documents/index
ROS Best Practices
▪ https://github.com/leggedrobotics/ros_best_practices/wiki
ROS Package Template
▪ https://github.com/leggedrobotics/ros_best_practices/tree/master/ros_package_template

More Related Content

Similar to Л1 Введение в ROS.pdf

10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoftKewpaN
 
программное обеспечение пк
программное обеспечение пкпрограммное обеспечение пк
программное обеспечение пкpochtalion
 
Урок 5. Операционная система Windows
Урок 5. Операционная система WindowsУрок 5. Операционная система Windows
Урок 5. Операционная система WindowsANSevrukova
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаSQALab
 
Orxan9r2 klassifikasiya programmnoqo_obespeceniya
Orxan9r2 klassifikasiya programmnoqo_obespeceniyaOrxan9r2 klassifikasiya programmnoqo_obespeceniya
Orxan9r2 klassifikasiya programmnoqo_obespeceniyaorxan9r2
 
Занятие № 5. Общие сведения MS-DOS . Основные модули ОС. Основные команды MS-DOS
Занятие № 5. Общие сведения MS-DOS . Основные модули ОС. Основные команды MS-DOSЗанятие № 5. Общие сведения MS-DOS . Основные модули ОС. Основные команды MS-DOS
Занятие № 5. Общие сведения MS-DOS . Основные модули ОС. Основные команды MS-DOSAibek9
 
Second Demo Solaris Zones
Second Demo Solaris ZonesSecond Demo Solaris Zones
Second Demo Solaris ZonesChudack
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingTatiana Volkova
 
Семантические информационные модели и ISO 15926
Семантические информационные модели и ISO 15926Семантические информационные модели и ISO 15926
Семантические информационные модели и ISO 15926Anatoly Levenchuk
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел КрынецкийJSC “Arcadia Inc”
 
А.Левенчук -- системноинженерное мышление
А.Левенчук -- системноинженерное мышлениеА.Левенчук -- системноинженерное мышление
А.Левенчук -- системноинженерное мышлениеAnatoly Levenchuk
 
Программное обеспечение, его классификация. Понятие операционных систем
Программное обеспечение, его классификация. Понятие операционных системПрограммное обеспечение, его классификация. Понятие операционных систем
Программное обеспечение, его классификация. Понятие операционных системkurbanovafaina
 
Programming Concepts
Programming ConceptsProgramming Concepts
Programming ConceptsMister_Lee
 

Similar to Л1 Введение в ROS.pdf (20)

2IDE~1.PPT
2IDE~1.PPT2IDE~1.PPT
2IDE~1.PPT
 
Software
SoftwareSoftware
Software
 
10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft10 компонентные и офисные приложения на платформе microsoft
10 компонентные и офисные приложения на платформе microsoft
 
ос урок1
ос урок1ос урок1
ос урок1
 
программное обеспечение пк
программное обеспечение пкпрограммное обеспечение пк
программное обеспечение пк
 
Урок 5. Операционная система Windows
Урок 5. Операционная система WindowsУрок 5. Операционная система Windows
Урок 5. Операционная система Windows
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
 
лекция 1
лекция 1лекция 1
лекция 1
 
Orxan9r2 klassifikasiya programmnoqo_obespeceniya
Orxan9r2 klassifikasiya programmnoqo_obespeceniyaOrxan9r2 klassifikasiya programmnoqo_obespeceniya
Orxan9r2 klassifikasiya programmnoqo_obespeceniya
 
Занятие № 5. Общие сведения MS-DOS . Основные модули ОС. Основные команды MS-DOS
Занятие № 5. Общие сведения MS-DOS . Основные модули ОС. Основные команды MS-DOSЗанятие № 5. Общие сведения MS-DOS . Основные модули ОС. Основные команды MS-DOS
Занятие № 5. Общие сведения MS-DOS . Основные модули ОС. Основные команды MS-DOS
 
Second Demo Solaris Zones
Second Demo Solaris ZonesSecond Demo Solaris Zones
Second Demo Solaris Zones
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в Processing
 
Deep storm presentation
Deep storm presentationDeep storm presentation
Deep storm presentation
 
Семантические информационные модели и ISO 15926
Семантические информационные модели и ISO 15926Семантические информационные модели и ISO 15926
Семантические информационные модели и ISO 15926
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
 
А.Левенчук -- системноинженерное мышление
А.Левенчук -- системноинженерное мышлениеА.Левенчук -- системноинженерное мышление
А.Левенчук -- системноинженерное мышление
 
Progopedia - OSDN
Progopedia - OSDNProgopedia - OSDN
Progopedia - OSDN
 
Программное обеспечение, его классификация. Понятие операционных систем
Программное обеспечение, его классификация. Понятие операционных системПрограммное обеспечение, его классификация. Понятие операционных систем
Программное обеспечение, его классификация. Понятие операционных систем
 
Programming Concepts
Programming ConceptsProgramming Concepts
Programming Concepts
 

Л1 Введение в ROS.pdf

  • 1. Лекция 1. Общие сведения о курсе «Аппаратные и программные средства СУ роботами». Введение в ROS Кабанов А.А.
  • 2. Структура дисциплины Курс Семестр Общий объем, ЗЕ (ч) Контактная работа, ч Самостоятельная работа, ч РГЗ, контрольная работа курсовая работа Зачет (семестр) Экзамен (семестр) Лекции Практические занятия Лабораторные занятия Очная форма обучения 1 1 6 (216) 18 36 0 126 + 36 – – - 1 1 2 4 (144) 18 36 0 90 - - 2 -
  • 3. Структура дисциплины Лекция (4 часа) Практическое занятие (8 часов) Лекции (16 часов) Практические занятия (28 часов, 6 индивидуаль- ных заданий) Лекция (2 часа) Практические занятия (8 часов) Лекции (12 часов) Практические занятия (26 часов) Тема 1.1 Тема 1.2 Тема 2.1 Тема 2.2 Экзамен Зачет
  • 4. Структура дисциплины Рассматриваемые темы в рамках изучения курса Тема 1.1 • Общие сведения о ROS • ROS архитектура и философия • Файловая система ROS. • Мастер, узлы и темы в ROS • Консольные команды Тема 1.2 • Рабочее пространство Catkin и система сборки • Структура пакета ROS • Подписчики и издатели ROS • Действия и сервисы ROS • Сервер параметров ROS и время • Launch-файлы Тема 2.1 • Использование средств ROSToolbox пакета Matlab • Работа с основными сообщениями ROS • Издатели и подписчики в ROSToolbox. • Преобразования и системное время ROS • Работа с bak-файлами • Действия и сервисы • ROS и Simulink. Тема 2.2 • Устройство и организация микрокомпьютера RaspberryPI • Операционная система. • Сопряжение с ROS
  • 5. Накопительная рейтинговая оценка Максимальное количество рейтинговых баллов по дисциплине за семестр составляет 100 баллов, из них: • посещаемость – 20 баллов; • текущий контроль (3 лабораторные работы) – 30 баллов; • самостоятельная работа (выполнение практических заданий на занятии) – 20 баллов; • дополнительные баллы (экзамен либо выполнение индивидуального творческого задания) – 30 баллов. Поощряется командная работа, но каждый студент должен показывать результаты самостоятельно на ПК и оценивается индивидуально Задания проверяются по мере готовности. Рекомендуемый срок сдачи задания до либо в день выдачи следующего задания, в противном случае оценка снижается.
  • 6. Структура лекции Темы 1.1 • Общие сведения о Robot Operating System (ROS) • ROS архитектура и философия • Файловая система ROS • ROS мастер, узлы и темы • Консольные команды
  • 7. Что такое ROS? ROS (Robot Operating System) - это мета-операционная система с открытым исходным кодом для разрабатываемых приложений робототехники. Он предоставляет услуги, которые вы ожидаете от операционной системы, включая аппаратную абстракцию, низкоуровневое управление устройствами, реализацию часто используемых функций, обмен сообщениями между процессами и управление пакетами. ROS также предоставляет инструменты и библиотеки для получения, сборки, написания и запуска кода на нескольких компьютерах.
  • 8. История ROS? ▪ Первоначально разработанный в 2007 году в Стэнфордской лаборатории искусственного интеллекта ▪ ROS 1.0 – 2010 год, Стэнфорд ▪ С 2013 года под управлением OSRF ▪ ROS Kinetik (LTS) – 2016 ▪ ROS Lunar – 2017 ▪ ROS Melodic Morenia - 2018 ▪ Сегодня используется многими университетами и компаниями ▪ Де-факто стандарт для программирования роботов
  • 9. Что такое ROS? ▪ Управление процессом ▪ Межпроцессное взаимодействие ▪ Драйверы устройств ROS = Robot Operating System ▪ Организация пакетов ▪ Распространение программного обеспечения ▪ Документация ▪ Учебники и документация ▪ Моделирование ▪ Визуализация ▪ Графический пользовательский интерфейс ▪ Регистрация данных ▪ Контроль ▪ Планирование ▪ Восприятие ▪ Картирование ▪ Манипулирование Источник - http://ros.org/
  • 10. Что такое ROS? Платформы (фреймворки) в робототехнике Программная платформа для роботов включает в себя набор инструментов, которые используются для разработки ПО роботов. Аппаратные платформы, включают в себя готовые исследовательские и образовательные устройства (TurtleBot, TurtleBro). А также готовые промышленные системы. MSRDS12 Microsoft Robotics Developer Studio, Microsoft - U.S. ERSP11 Evolution Robotics Software Platform, Evolution Robotics - Europe ROS Robot Operating System, Open Robotics12 - U.S. OpenRTM National Institute of Adv. Industrial Science and Technology (AIST) - Japan OROCOS Europe OPRoS ETRI, KIST, KITECH, Kangwon National University - South Korea Наиболее активные платформы
  • 11. Почему стоит начать с ROS Преимущества • Популярность • Open source • Кроссплатформенность • Многопоточность • Поддержка модульного тестирования Недостатки: • Высокий порог входа • Кроссплатформенность • Отсутствие поддержки Windows, OS X (есть в ROS 2)
  • 13. ROS - это не ... • ROS не является языком программирования. На самом деле программы ROS обычно пишутся на C ++. Клиентские библиотеки также доступны для Python, Java, Lisp и нескольких других языков. • ROS - это не только библиотека. Хотя ROS включает в себя клиентские библиотеки, он также включает в себя (помимо прочего) центральный сервер, набор инструментов командной строки, набор графических инструментов и систему сборки. • ROS не является интегрированной средой разработки. Хотя ROS не предписан на какую-либо конкретную среду разработки, он может использоваться с большинством популярных IDE. Также вполне естественно использовать ROS из текстового редактора и командной строки без какой-либо IDE.
  • 14. ROS Философия ▪ Одноранговая связь (Peer to peer) Отдельные программы взаимодействуют через определенный API (сообщения ROS, сервисы и т. Д.). ▪ Распределенная работа Программы могут запускаться на нескольких компьютерах и обмениваться данными по сети. ▪ Многоязычность Модули ROS могут быть написаны на любом языке, для которого существует клиентская библиотека (C ++, Python, MATLAB, Java и т. Д.). ▪ Малый «вес» Автономные библиотеки обернуты тонким слоем ROS. ▪ Бесплатный и с открытым исходным кодом Большинство программного обеспечения ROS с открытым исходным кодом и бесплатное использование.
  • 15. ROS Философия ROS имеет три уровня концепций: • уровень файловой системы • уровень графа вычислений • уровень сообщества. Помимо трех уровней концепций, ROS также определяет два типа имен • имена ресурсов пакета • имена ресурсов графа.
  • 16. Уровень файловой системы ROS Понятия уровня файловой системы в основном охватывают ресурсы ROS, с которыми вы сталкиваетесь на диске, например: Пакеты: Пакеты - это основная единица для организации программного обеспечения в ROS. Метапакеты: метапакеты - это специализированные пакеты, которые служат только для представления группы связанных других пакетов Манифесты пакетов: манифесты (package.xml) предоставляют метаданные о пакете, включая его имя, версию, описание, информацию о лицензии, зависимости и другую метаинформацию, такую ​​как экспортированные пакеты. Манифест пакета package.xml определен в REP-0127. Репозитории: набор пакетов, которые используют общую систему VCS. Типы сообщений (msg): описания сообщений, хранящиеся в my_package / msg / MyMessageType.msg, определяют структуры данных для сообщений, отправляемых в ROS. Типы служб (srv): описания служб, хранящиеся в my_package / srv / MyServiceType.srv, определяют структуры данных запроса и ответа для служб в ROS.
  • 18. Уровень графа вычислений ROS Граф вычислений - это одноранговая сеть процессов ROS, совместно обрабатывающих данные. Узлы: узлы - это процессы, выполняющие вычисления. Мастер: Мастер ROS обеспечивает регистрацию имени и поиск в остальной части графа вычислений. Сервер параметров: Сервер параметров позволяет хранить данные с помощью ключа в центральном месте. Сообщения: узлы общаются друг с другом, передавая сообщения. Сообщение - это просто структура данных, состоящая из типизированных полей. Темы: сообщения маршрутизируются через транспортную систему с семантикой публикации / подписки. Узел отправляет сообщение, публикуя его в заданной теме. Сервисы: модель публикации / подписки - очень гибкая парадигма коммуникации, но ее односторонний транспорт «многие ко многим» не подходит для взаимодействий типа «запрос / ответ», которые часто требуются в распределенной системе. Пакеты: Пакеты - это формат для сохранения и воспроизведения данных сообщений ROS.
  • 19. Базовые понятия ROS. Взаимодействие узлов. Более подробно на http://wiki.ros.org/rosnode
  • 20. Базовые понятия ROS. Тема и узел. В робототехнике нам часто приходится взаимодействовать с реальным миром. Одним из типов устройств, которые мы можем использовать для получения информации об окружающей среде, является датчик (сенсор): мы можем определить требуемую характеристику некоторого параметра из окружающей среды и преобразовать его в данные. Являются ли датчики примером узла ROS или темой ROS?
  • 21. Уровень сообщества ROS Концепции уровня сообщества ROS - это ресурсы ROS, которые позволяют отдельным сообществам обмениваться программным обеспечением и знаниями. Эти ресурсы включают: Дистрибутивы: Дистрибутивы ROS - это наборы стека с поддержкой версий, которые вы можете установить. Репозитории: ROS полагается на объединенную сеть репозиториев кода, где различные учреждения могут разрабатывать и выпускать свои собственные программные компоненты для роботов. Wiki ROS: Wiki сообщества ROS является основным форумом для документирования информации о ROS. Система сообщений об ошибках Списки рассылки: список рассылки ros-users является основным каналом связи с новыми обновлениями ROS, а также форумом, где можно задавать вопросы о программном обеспечении ROS.
  • 22. ROS Имена Имена ресурсов графа предоставляют иерархическую структуру именования, которая используется для всех ресурсов в графе вычислений ROS, таких как узлы, параметры, темы и службы. несколько примеров имен: • / (the global namespace) • /foo • /stanford/robot/name • /wg/node1 Имена ресурсов графа - важный механизм в ROS для обеспечения инкапсуляции. Каждый ресурс определяется в пространстве имен, которое он может использовать совместно со многими другими ресурсами. Ресурсы могут создавать ресурсы в своем пространстве имен, и они могут получать доступ к ресурсам внутри или выше своего собственного пространства имен. Связи могут быть выполнены между ресурсами в разных пространствах имен, но обычно это делается с помощью кода интеграции над обоими пространствами имен. Эта инкапсуляция изолирует различные части системы от случайного захвата ресурса с неправильным именем или глобального перехвата имен.
  • 23. ROS Имена Имена разрешаются относительно, поэтому ресурсам не нужно знать, в каком пространстве имен они находятся. Это упрощает программирование, поскольку узлы, которые работают вместе, могут быть записаны так, как если бы они все находились в пространстве имен верхнего уровня. Когда эти узлы интегрированы в более крупную систему, они могут быть помещены в пространство имен, которое определяет их набор кода. Инструменты (например, визуализация графика), а также параметры (например, demo_name), которые должны быть видимы для всего графа, могут быть созданы узлами верхнего уровня. Например, можно взять демонстрацию Stanford и демонстрацию Willow Garage и объединить их в новую демонстрацию с подграфами stanford и wg. Если бы в обеих демонстрациях был узел с именем «камера», они не конфликтовали бы.
  • 24. ROS Имена Допустимое имя имеет следующие характеристики: • Первый символ - это альфа-символ ([a-z | A-Z]), тильда (~) или косая черта (/). • Последующие символы могут быть буквенно-цифровыми ([0-9 | a-z | A-Z]), подчеркиванием (_) или косой чертой (/). Исключение: базовые имена (описанные ниже) не могут содержать в себе косую черту (/) или тильды (~). В ROS существует четыре типа имен ресурсов графа: базовые, относительные, глобальные и частные, которые имеют следующий синтаксис: • base • relative/name • /global/name • ~private/name По умолчанию разрешение выполняется относительно пространства имен узла. Например, узел /wg/node1 имеет пространство имен /wg, поэтому имя node2 будет преобразовано в /wg/node2.
  • 25. ROS Имена Имена без каких-либо квалификаторов пространства имен являются базовыми именами. Базовые имена на самом деле являются подклассом относительных имен и имеют те же правила разрешения. Базовые имена наиболее часто используются для инициализации имени узла. Имена, начинающиеся с «/», являются глобальными - они считаются полностью разрешенными. По возможности следует избегать использования глобальных имен, поскольку они ограничивают переносимость кода. Имена, начинающиеся с "~", являются личными. Они преобразуют имя узла в пространство имен. Например, node1 в пространстве имен / wg / имеет частное пространство имен / wg / node1. Частные имена полезны для передачи параметров определенному узлу через сервер параметров. Вот несколько примеров разрешения имен:
  • 26. ROS Имена Имена ресурсов пакетов используются в ROS с концепциями уровня файловой системы, чтобы упростить процесс обращения к файлам и типам данных на диске. Имена ресурсов пакета очень просты: они представляют собой просто имя пакета, в котором находится ресурс, плюс имя ресурса. Например, имя «std_msgs / String» относится к типу сообщения «String» в пакете «std_msgs». Некоторые файлы, связанные с ROS, на которые можно ссылаться с использованием имен ресурсов пакета, включают: • Типы сообщений (msg) • Типы сервисов (SRV) • Типы узлов Имена ресурсов пакета очень похожи на пути к файлам, за исключением того, что они намного короче. Допустимое имя имеет следующие характеристики: • Первый символ - это альфа-символ ([a-z | A-Z]) • Последующие символы могут быть буквенно-цифровыми ([0-9 | a-z | A-Z]), подчеркиваниями (_) или косой чертой (/). • Имеет не более одной косой черты ('/').
  • 27. ROS Концепции более высокого уровня Существует несколько стеков, таких как common, common_msgs и geometry, которые предоставляют эти высокоуровневые концепции для использования с ROS. Координатные системы / преобразования Пакет tf предоставляет распределенную структуру на основе ROS для расчета позиций нескольких систем координат во времени. Действия / Задачи Пакет actionlib определяет общий тематический интерфейс для вытесняемых задач в ROS. Онтология сообщений Определено несколько классов сообщений, включая: actionlib_msgs: сообщения для представления действий. diagnostic_msgs: сообщения для отправки диагностических данных. geometry_msgs: сообщения для представления общих геометрических примитивов. nav_msgs: сообщения для навигации. sensor_msgs: сообщения для представления данных датчика.
  • 28. ROS Концепции более высокого уровня Плагины pluginlib предоставляет библиотеку для динамической загрузки библиотек в коде C ++. Фильтры Пакет фильтров предоставляет библиотеку C ++ для обработки данных с использованием последовательности фильтров. Модель робота Пакет urdf определяет формат XML для представления модели робота и предоставляет синтаксический анализатор C ++.
  • 29. Клиентская библиотека ROS Клиентская библиотека ROS - это набор кода, который упрощает работу программиста ROS. Основные клиентские библиотеки roscpp: roscpp - это клиентская библиотека C ++ для ROS rospy: rospy - это чистая клиентская библиотека Python для ROS roslisp: roslisp - это клиентская библиотека для LISP, которая в настоящее время используется для разработки библиотек планирования Экспериментальные клиентские библиотеки roseus: roseus - это клиентская библиотека для языка EusLisp. rosgo: чистая реализация на Go rosjava: rosjava - это реализация ROS на чистой Java с поддержкой Android. rosnodejs: rosnodejs - это собственная клиентская библиотека ROS Javascript для Node.js RobotOS.jl - это собственный пакет Julia, который обертывает rospy. rosR: rosR - это расширение ROS для языка статистического программирования R rosruby: поддержка ruby Интерфейс ROS-MATLAB: библиотека функций для подключения к ROS из MATLAB® . Интерфейс ROS-Simulink: набор блоков Simulink® для подключения к ROS и развертывания узлов ROS из Simulink® .
  • 30. Базовые понятия ROS. Мастер (Master) Мастер имеет регистрационные API, которые позволяют узлам регистрироваться в качестве издателей, подписчиков и поставщиков услуг. Мастер имеет URI и хранится в переменной среды ROS_MASTER_URI. Этот URI соответствует host: port сервера XML-RPC, на котором он работает. По умолчанию мастер будет привязан к порту 11311. Мастер выполняет роль сервера имен для возможности подключения между собой различных нод. Команда roscore запускает сервер мастера, и после этого к нему могут подключиться и зарегистрироваться ноды ROS. Связь между нодами (обмен сообщениями), невозможна без запущенного мастера. При запуске ROS roscore, мастер будет запущен по адресу URI, установленным в переменной окружения ROS_MASTER_URI. По умолчанию адрес использует IP- адрес локального ПК и номер порта 11311 Запустить сервер мастера с помощью команды Более подробно на http://wiki.ros.org/Master
  • 31. Базовые понятия ROS. Узел (Node). Понятие узла, относится к наименьшей "рабочей" единицы используемой в ROS. Можно провести аналогию с одной исполняемой программой. ROS рекомендует создать один узел для каждой задачи, что позволить легче использовать его в других проектах. При запуске узел регистрирует информацию о себе на мастере (название узла, типы обрабатываемых сообщений). Зарегистрированный узел может взаимодействовать с другими узлами (получать и отправлять запросы). Более подробно на http://wiki.ros.org/Master
  • 32. Базовые понятия ROS. Узел (Node). Узел ROS имеет несколько API: • Подчиненный API - это XMLRPC API, который выполняет две роли: получение обратных вызовов от мастера и согласование соединений с другими узлами. • Тематическая реализация транспортного протокола. Узлы устанавливают тематические связи друг с другом, используя согласованный протокол. Самый общий протокол - TCPROS, который использует постоянные соединения сокетов TCP / IP с отслеживанием состояния. • API командной строки. Каждый узел должен поддерживать аргументы переназначения командной строки, которые позволяют настраивать имена внутри узла во время Более подробно на http://wiki.ros.org/Master
  • 33. Базовые понятия ROS. Тема. Тема (Topic), модель Издатель и Подписчик Тема (Topic), это один из видов обмена сообщениями. Узел издателя (publisher) сначала регистрирует свою тему на мастере, а затем начинает публикацию сообщений в эту тему (топик). Узлы подписчиков, которые хотят получать информацию из этой темы (типика) при помощи мастера получают адрес этой темы и далее получают сообщения из нее. Издатель (Publisher) Издателем называется процесс, который рассылает сообщения в рамках созданного топика для других узлов. Один узел может содержать несколько издателей, публикующих данные в разные топики. Подписчик (Subscriber) Подписчиком (Subscriber) называется процесс, который получает сообщения из определенной темы (Topic). Подписчик (Subscriber) регистрируется на Мастере (Master), указывая какие темы Подписчик хочет получать. После этого Издатель (Publisher) начинает отправлять сообщения подписчику. Связь с темой для подписчика является асинхронной (издатель публикует сообщения в не зависимости от статуса подписчиков).
  • 34. Базовые понятия ROS. Тема. Модель работы в режиме Topic, подразумевает использование одного типа сообщения как для Издателя (Publisher) и подписчика (Subscriber). Модель Topic являются однонаправленной и подразумевает непрерывную отправку или получение сообщений. Такой способ коммуникации подходит для датчиков, которым требуются периодическая передача данных. Несколько подписчиков могут получать сообщения от одного издателя и наоборот (возможна работа несколько издателей).
  • 35. Базовые понятия ROS. Тема и узел. Узлы и темы вместе образуют основу любого приложения ROS. Важно знать, как они работают вместе! Сколько узлов могут публиковать сообщения в одной теме?
  • 36. Создание собственных приложений ROS. Подписчики и издатели. Является ли следующее утверждение Истинным или Ложным: Тема ROS может быть опубликована без инициализации узла ROS.
  • 37. Базовые понятия ROS. Сообщение. Сообщение (Message) Узлы отправляют и принимают данные между собой, согласно заданного формата. Эти данные называют Сообщения, а описание Типом Сообщения. Сообщения могут быть простых типов (integer, float, boolean) так и могут состоять из сложных структур, содержать вложенных сообщения и массивы сообщений). Более подробно на http://wiki.ros.org/Messages
  • 38. Базовые понятия ROS. Сообщение. Более подробно на http://wiki.ros.org/Messages Структура данных, определяющая тип темы: ▪ Состоит из вложенной структуры целых чисел, чисел с плавающей точкой, логических значений, строк и массивов объектов ▪ Определена в * .msg файлах Посмотреть тип темы Опубликовать сообщение в теме
  • 39. Базовые понятия ROS Более подробно на http://wiki.ros.org/Messages Например для сообщение с координатами объекта (XYZ) есть существующий тип сообщения geometry_msgs/Point.msg который описывается:
  • 40. Базовые понятия ROS. Более подробно о сообщениях. Сообщение представляет собой структуры данных, которая используется при обмене данных между узлами. Топики (Topic), службы (Services) и Действия (Actions) используют сообщения для взаимодействия между собой. Сообщения могут включать в себя как базовые типы (целое число, число с плавающей точкой, логические и тд), так и массивы сообщений. Помимо этого, сообщения могут инкапсулировать в себе другие существующие типы сообщений и специальные заголовки. Сообщения описываются в файлах .msg как пары значений: тип поля и имя поля. fieldtype fieldname fieldtype1 fieldname1 Для реального примера, сообщение может выглядеть так: int32 x int32 y
  • 41. Базовые понятия ROS. Базовые типы ROS В таблице ниже описаны базовые типы ROS и их представление в языках С++ и Python в ROS для C++ для Python bool uint8_t bool int8 int8_t int uint8 uint8_t int int16 int16_t int uint16 uint16_t int int32 int32_t int uint32 uint32_t int int64 int64_t long uint64 uint64_t long float32 float float float64 double float string std::string str time ros::Time rospy.Time duration ros::Duration rospy.Duration Наследование типов сообщений Сообщения могу содержать не только базовые типы, но и использовать заново уже созданные типы сообщений. Например сообщение типа geometry_msgs/Pose описывается конфигурацией Point position Quaternion orientation где Point и Quaternion это существующие типы сообщений.
  • 42. Полезные ссылки ROS Wiki ▪ http://wiki.ros.org/ Установка ▪ http://wiki.ros.org/ROS/Installation Учебные материалы ▪ http://wiki.ros.org/ROS/Tutorials Доступные пакеты ▪ http://www.ros.org/browse/ Шпаргалки (Cheat Sheet) ROS ▪ https://www.clearpathrobotics.com/ros-robot-operating-system-cheat-sheet/ ▪ https://kapeli.com/cheat_sheets/ROS.docset/Contents/Resources/Documents/index ROS Best Practices ▪ https://github.com/leggedrobotics/ros_best_practices/wiki ROS Package Template ▪ https://github.com/leggedrobotics/ros_best_practices/tree/master/ros_package_template