Введение:робот Это междисциплинарный предмет с множеством профессиональных знаний.,Обычно включает в себя датчики, драйверы, связь между несколькими машинами, механическую структуру, алгоритмы и т. д.,Для более эффективного проведения исследований и разработок роботов,Очень важно выбрать единую структуру разработки.,ROS(Robot Operating System, Robot Operating System) — один из популярных фреймворков.
Эта статья поможет вам понять и использовать ROS, освоить основные концепции ROS и заложить прочную основу для последующего обучения.
Автор: Чжан Ху
Источник: Big Data DT.
01 Введение в ROS
Многие новички, возможно, слышали об операционной системе роботов.,Меня напугало слово «операционная система». На самом деле, говоря проще,ROS — это распределенная коммуникационная среда, которая помогает программным процессам более удобно взаимодействовать.
Робот обычно состоит из нескольких частей.,Каждый компонент имеет свою программу управления.,Для реализации спортивных и аудиовизуальных функций робота. Итак, чтобы координировать эти компоненты в роботе,Или координируйте группу из нескольких роботов,Что делать? В это время необходимо разрешить разрозненным компонентам взаимодействовать друг с другом.,В кластере из нескольких роботов,Эти разбросанные части также разбросаны по разнымроботначальство。Решение этой проблемы распределенной связи — первоначальная цель ROS.
Поскольку все больше и больше людей участвуют в разработке ROS и вносят исходный код, в сообществе появилось большое количество сторонних инструментов и практических пакетов программного обеспечения с открытым исходным кодом, что делает ROS тем, чем он является сегодня.
Новичков часто смущает одна вещь: означает ли изучение ROS, что вы также умеете разрабатывать роботов? Конечно, нет. Строго говоря, ROS — это всего лишь набор коммуникационных фреймворков. Различные алгоритмы и приложения для роботов до сих пор разрабатываются с использованием распространенных языков программирования, таких как C++ и Python.
1. Тактико-технические характеристики РОС
Прежде чем формально изучать ROS, я сначала расскажу о некоторых функциях ROS, а именно о метаоперационной системе, механизме распределенной связи, слабосвязанной программной среде, богатой библиотеке функций с открытым исходным кодом и т. д., чтобы помочь вам достичь некоторого понимания.
ROS — это метаоперационная система в области робототехники. Другими словами, это не операционная система в истинном смысле этого слова. Планирование основных задач, компиляция, драйверы устройств и т. д. по-прежнему выполняются родной операционной системой Ubuntu Linux.
ROS на самом деле работает на Ubuntu Подоперационная система в Linux,Или программная платформа,Но он предоставляет функции, подобные операционной системе, такие как абстракция оборудования, вызов функций и управление процессами.,Также предусмотрено получение、компилировать、Кроссплатформенные функции и инструменты.
Основная идея ROS состоит в том, чтобы объединить программные функции робота в узлы, и узлы взаимодействуют, отправляя сообщения друг другу.Этиузел可以部署在同一台主机начальство,Также может быть развернут на разных хостах.,Его можно даже развернуть в Интернете. Мастер в механизме сетевой связи ROS отвечает за управление и планирование процесса связи между различными устройствами в сети.,Также предоставьте Конфигурация Глобальные параметры в сети Служить。
ROS — это слабосвязанная программная среда, которая использует механизм распределенной связи для обеспечения взаимодействия процессов между узлами. Программный код ROS организован слабосвязанным образом, с гибким процессом разработки и простым управлением и обслуживанием.
ROS имеет богатую библиотеку функций с открытым исходным кодом. ROS — это программное обеспечение с открытым исходным кодом, основанное на протоколе BSD (Berkeley Software Distribution), которое позволяет любому модифицировать, повторно использовать, распространять и использовать его в коммерческих продуктах и продуктах с закрытым исходным кодом. Используя ROS, вы можете быстро создать свой собственный прототип робота.
2. Версия дистрибутива ROS
Подобно дистрибутивам Linux, дистрибутивы ROS имеют ряд встроенных часто используемых пакетов функций, которые предназначены для упаковки и установки системы ROS в собственную систему. ROS изначально была разработана на основе системы Ubuntu. Название выпускной версии ROS также соответствует тем же правилам, что и Ubuntu, то есть имя версии состоит из двух английских слов с одинаковой первой буквой, и выбираются первые буквы версии. На рис. 1-1 в порядке возрастания алфавита показаны некоторые основные выпуски ROS.
▲Рисунок 1-1 Основные версии ROS
3. Как изучить РОС
Чтобы хорошо изучить и использовать ROS, вам понадобится много практики. Поэтому после быстрого понимания основных концепций и парадигм программирования ROS необходимо объединить большое количество реальных проектов, чтобы глубже понять ROS. Научившись правильно решать проблемы, вы сможете быстрее улучшить свои способности. К основным учебным ресурсам по ROS относятся следующие.
02 Архитектура системы ROS
После установки РОС,Многие друзья должны захотеть немедленно начать писать программы. Поскольку архитектура ROS относительно сложна,,Чтобы легко понять различные концепции, возникающие позже,,Давайте сначала обсудим системную архитектуру ROS.,Чтобы каждый мог иметь полное представление о различных концепциях ROS. Согласно официальному заявлению,можно отделить отВычислительный график、файловая системаиСообщество открытого исходного кодаперспектива понятьROSАрхитектура。
1. Понять архитектуру ROS с точки зрения вычислительных графов.
ROSБазовая единица исполняемой программы называетсяузел(node),узел взаимодействует через механизм сообщений,Это формирует сетевую диаграмму,также называется Вычислительный график, как показано на рисунке 1-3.
▲Рисунок 1-3. Структура графика расчета ROS.
Узлы — это исполняемые программы, часто называемые процессами. Каждая исполняемая программа, созданная в пакете функций ROS, становится узлом ROS после запуска и загрузки в системный процесс, например узел 1, узел 2, узел 3 и т. д. на рисунке 1-3.
узел общается, отправляя и получая сообщения,Механизм отправки и получения сообщений делится натема(topic)、Служить(service)идействие(action)три вида,Как показано на рисунке 1-3, узел2 и узел3, а также узел2 и узел5 используют тематическую связь.,узел2иузел4использовать Служитькоммуникация,узел1иузел2использоватьдействиекоммуникация。Вычислительный узел, тема, Служить и действие в графике должны иметь уникальные имена в качестве идентификаторов.
ROS использует узлы для разделения кода и функций, повышая отказоустойчивость и удобство обслуживания системы. Поэтому лучше, чтобы каждый узел выполнял определенную функцию, а не создавал один огромный, всеобъемлющий узел. Если вы используете C++ для записи узлов, вам необходимо использовать библиотеку roscpp, предоставляемую ROS; если вы используете Python для записи узлов, вам необходимо использовать библиотеку rospy, предоставляемую ROS;
Сообщения являются ключом к графу вычислений, включая механизм и тип сообщения. Существует три типа механизмов сообщений: тема, услуга и действие. Данные, передаваемые в каждом механизме сообщений, имеют определенный тип данных (т. е. типы сообщений можно разделить на типы сообщений темы, типы служебных сообщений и типы сообщений действий). Механизм сообщений и типы сообщений будут объяснены в разделе 1.5.
пакет(rosbag)даROS中专门用来保存и回放темафайл данных,Некоторые данные датчиков, которые сложно собрать, можно записать с помощью пакета,Затем воспроизведите его несколько раз, чтобы отладить производительность алгоритма.
Сервер параметров может предоставлять легко изменяемые параметры для узлов всей сети ROS. Параметры можно рассматривать как глобальные переменные в узле, которые можно изменять извне, включая статические и динамические параметры. Статические параметры обычно используются для установки режима работы узла при запуске узла; динамические параметры могут использоваться для динамической настройки узла или изменения рабочего состояния узла во время работы узла, например параметры ПИД-управления в узле управления двигателем.
Главный узел отвечает за планирование и управление процессом связи между различными узлами. Поэтому сначала должен быть запущен главный узел, и его можно запустить с помощью команды roscore.
2. Понять архитектуру ROS с точки зрения файловой системы.
Различные компоненты программы ROS следует размещать в разных папках. Эти папки организуют файлы в соответствии с различными функциями. Это структура файловой системы ROS, как показано на рисунке 1-4.
▲Рис. 1-4. Структура файловой системы ROS.
Рабочая область — это папка, содержащая пакеты функций, скомпилированные пакеты и скомпилированные исполняемые файлы. Пользователи могут создавать несколько рабочих областей в соответствии со своими потребностями и разрабатывать пакеты функций для различных целей в каждой рабочей области. На рис. 1-4 мы создали рабочую область с именем catkin_ws, содержащую три папки: src, build и devel.
Пакет функций — это базовая форма организации программного обеспечения в ROS. Он имеет минимальную структуру и минимальное содержимое для создания программы ROS. Он содержит исходный код узла ROS, сценарии, файлы конфигурации и т. д.
3. Понять архитектуру ROS с точки зрения сообщества открытого исходного кода.
ROS — это программное обеспечение с открытым исходным кодом. Каждое независимое онлайн-сообщество делится и вносит свой вклад в программное обеспечение и учебные пособия, образуя мощное сообщество ROS с открытым исходным кодом, как показано на рисунке 1-5.
▲Рис. 1-5. Структура сообщества открытого исходного кода ROS.
Разработка ROS опирается на открытое и совместно используемое программное обеспечение. Эти коды распространяются и выпускаются различными организациями, такими как обмен исходным кодом GitHub, выпуск хранилища программного обеспечения Ubuntu, сторонние библиотеки и т. д. Официальная вики ROS — это важное сообщество для обсуждения документов, где вы можете легко публиковать и изменять соответствующие страницы документов. На домашней странице ответов ROS имеется большое количество вопросов и ответов от разработчиков ROS, а дискуссии по различным проблемам, возникающим при разработке ROS, очень активны.
Об авторе: Чжан Ху,Генеральный директор Shenzhen Ruisi Zhixing Technology Co., Ltd. Работал в Шэньчжэньском интеллектуальном исследовательском институте.,Принимает исследовательские проекты по автономной навигации. За время своей работы он создал большое количество высококачественных статей в блогах и видеоуроков, посвященных навигации robotSLAM на Zhihu, CSDN, bilibili и других платформах под онлайн-названием «Брат Сяоху любит учиться».,Он глубоко полюбился большинству пользователей сети. Он очень заинтересован в исследованиях сильного искусственного интеллекта.,И мы стремимся к индустриализации роботов с передовым интеллектом.
Эта статья взята из книги «Навигация робота SLAM: основные технологии и практический бой» и публикуется с разрешения издателя. (ISBN: 9787111697428)