Наконец-то кто-то ясно объяснил операционную систему робота ROS.
Наконец-то кто-то ясно объяснил операционную систему робота ROS.

Введение:робот Это междисциплинарный предмет с множеством профессиональных знаний.,Обычно включает в себя датчики, драйверы, связь между несколькими машинами, механическую структуру, алгоритмы и т. д.,Для более эффективного проведения исследований и разработок роботов,Очень важно выбрать единую структуру разработки.,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 относятся следующие.

  • Официальный сайт: www.ros.org.
  • Исходный код: github.com.
  • Wiki:wiki.ros.org
  • Вопросы и ответы: Answers.ros.org

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.

  • папка исходного кодаместо各个功能包и Конфигурация Функциональный пакетCMakeКонфигурациядокументCMakeLists.txt。Объясните здесь,Так как исходный код в ROS компилируется с помощью инструмента catkin,Инструмент Catkin основан на технологии CMake.,Итак, мы увидим файл конфигурации CMake CMakeLists.txt в исходном файловом пространстве src и каждом пакете функций.,这个документ起到Конфигурациякомпилироватьроль。
  • папка сборкиместокомпилироватьCMakeиcatkinКэш, созданный во время пакета функций、Конфигурация、Промежуточные файлы и т.д.
  • папка разработкиместокомпилироватьхорошая исполняемая программа,Эти исполняемые программы можно запускать напрямую без установки. После того как исходный код пакета функций скомпилирован и протестирован,,可以将Этикомпилировать好的可执行документ直接导出и其他开发人员分享。

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

  1. CMakeLists.txt — это файл конфигурации пакета функций, который используется для компиляции конфигурации компиляции пакета функций Cmake.
  2. package.xml — это файл манифеста пакета функций. Он использует формат тега XML для обозначения различной связанной информации о пакете функций, такой как имя пакета, информация о разработчике, зависимости и т. д., в основном для установки и распространения. пакет функций проще.
  3. include/<pkg_name>да功能包头документ目录,Вы можете поместить функции, включенные в программу пакета функций.*.h头документ放在这里。includeПричина, по которой каталогу необходимо добавить путь первого уровня.<pkg_name>да为了更好地区分自己定义的头документи系统标准头документ,<pkg_name>用实际Функциональный пакет名称替代。不过这个документ夹不да必要项,Например, некоторые программы не имеют заголовочных файлов.
  4. msg、Три папки srv и action используются для хранения нестандартных тематических сообщений соответственно.、Служить消息идействие消息的定义документ。ROS支持用户自定义消息коммуникация过程中使用的消息类型。Эти自定义消息不да必要的,Например, программа использует только стандартные типы сообщений.
  5. В каталоге сценариев хранятся Bash, Python и другие файлы сценариев, и он не является обязательным.
  6. В каталоге запуска хранятся файлы запуска узла.,Файл *.launch используется для запуска одного или нескольких узлов.,Полезно в больших проектах с несколькими узлами.,являются необязательными элементами.
  7. В каталоге src хранится исходный код, соответствующий узлу пакета функций.,В пакете функций может быть несколько узловых программ для выполнения различных функций.,Каждый узел программы может запускаться независимо. В каталоге src хранится исходный код этих узловых программ.,Вы можете создавать папки и файлы по мере необходимости для организации исходного кода.,Исходный код может быть написан на C++, Python и т. д.

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)

boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.
boy illustration
Оригинальные улучшения YOLOv8: несколько новых улучшений | Сохранение исходной информации — алгоритм отделяемой по глубине свертки (MDSConv) |
boy illustration
Второй пилот облачной разработки | Быстро поиграйте со средствами разработки на базе искусственного интеллекта
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция с нулевым кодированием и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
Решенная Ошибка | Загрузка PyTorch медленная: TimeoutError: [Errno 110] При загрузке факела истекло время ожидания — Cat Head Tiger
boy illustration
Brother OCR, библиотека с открытым исходным кодом для Python, которая распознает коды проверки.
boy illustration
Новейшее подробное руководство по загрузке и использованию последней демонстрационной версии набора данных COCO.
boy illustration
Выпущен отчет о крупной модели финансовой отрасли за 2023 год | Полный текст включен в загрузку |
boy illustration
Обычные компьютеры также могут работать с большими моделями, и вы можете получить личного помощника с искусственным интеллектом за три шага | Руководство для начинающих по локальному развертыванию LLaMA-3
boy illustration
Одной статьи достаточно для анализа фактора транскрипции SCENIC на Python (4)
boy illustration
Бросая вызов ограничениям производительности небольших видеокарт, он научит вас запускать большие модели глубокого обучения с ограниченными ресурсами, а также предоставит полное руководство по оценке и эффективному использованию памяти графического процессора!
boy illustration
Команда Fudan NLP опубликовала 80-страничный обзор крупномасштабных модельных агентов, в котором в одной статье представлен обзор текущего состояния и будущего агентов ИИ.
boy illustration
[Эксклюзив] Вы должны знать о новой функции JetBrains 2024.1 «Полнострочное завершение кода», чтобы решить вашу путаницу!
boy illustration
Краткое изложение базовых знаний о регистрации изображений 1.0
boy illustration
Новейшее подробное руководство по установке и использованию библиотеки cv2 (OpenCV, opencv-python) в Python.
boy illustration
Легко создайте локальную базу знаний для крупных моделей на основе Ollama+AnythingLLM.
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание решения. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Одна статья поможет вам понять RAG (Retrival Enhanced Generation) | Введение в концепцию и теорию + практику работы с кодом (включая исходный код).
boy illustration
Эволюция архитектуры шлюза облачной разработки
boy illustration
Docker и Kubernetes [Разработка контейнерных приложений с помощью Python]