Привет, друзья! 👋
Пришла пора поговорить об основных концепциях ROS2.
В прошлой статье мы описали процесс установки ROS2 на платформу Raspberry Pi — https://dzen.ru/a/aCrunarCZmsVePWi
Наш Телеграмм канал, где мы описываем прогресс нашего проекта — https://t.me/it_s_working.
Репозиторий ROS2 — https://github.com/ros2.
Введение
ROS — не так сложен как может показаться. Давайте разберёмся вместе!
Вы наверняка слышали, что ROS (Robot Operating System) — это «must-have» для создания умных роботов. Но когда начинаешь погружаться, возникает ощущение, что тебя забросали терминами: ноды, топики, DDS, бэги… Словно ROS специально хочет запутать новичка!
Спойлер: Это не так. ROS — просто набор инструментов для удобной сборки роботов, как конструктор LEGO для взрослых. Проблема в том, что его концепции часто объясняют скучно и абстрактно. Давайте попробуем исправить это!
Этой статьёй мы начинаем серию, в течение которой разложим ROS по полочкам — без воды, зато с живыми аналогиями и понятными примерами. К концу этого цикла статей мы сможем:
- чётко понимать как взаимодействуют части ROS-системы;
- выбирать правильные инструменты для своих задач;
- исследовать ROS без словаря.
Готовы? Поехали!
ROS — это не ОС, а «клей» для робота
Забудьте про традиционные операционные системы. ROS — это мета-операционка, которая связывает воедино:
- «мозги» робота (алгоритмы навигации, компьютерное зрение);
- «чувства» (данные с камер, лидаров, сенсоров);
- «тело» (моторы, манипуляторы).
Его главная суперсила — гибкость. Требуется поменять датчик или алгоритм? Не нужно переписывать весь код — ROS позволяет заменять «детали» на лету.
Создатели ROS выделяют следующие основные цели платформы:
- ROS разработан так, чтобы быть максимально «тонким» — так что код, написанный для ROS, можно использовать с другими фреймворками программного обеспечения роботов.
- Независимые от ROS библиотеки: предпочтительная модель разработки — писать независимые от ROS специфики программные библиотеки с чистыми функциональными интерфейсами.
- Независимость в выборе языка программирования: работу с ROS легко проводить на любом современном языке программирования, таком как Python, C++.
- Простота тестирования: ROS имеет встроенный фреймворк модульного/интеграционного тестирования под названием rostest.
- Масштабирование: ROS отлично подходит для крупномасштабных робототехнических систем и больших распределённых команд разработки.
В настоящее время ROS работает только на платформах на базе Unix. Программное обеспечение для ROS в первую очередь тестируется на системах Ubuntu и Mac OS X, в тоже время сообщество ведет активную работу для обеспечения поддержки Fedora, Gentoo, Arch Linux и других Linux платформ.
Портирование ROS на Microsoft Windows возможно, однако данный формат использования пока не рекомендуется.
Два основных уровня ROS
Представьте, что мы строим «умный» дом. ROS — это одновременно строительная бригада, инструменты и коммуникации. Вот как это работает:
1. Файловая система (Filesystem Level)
«Склад стройматериалов и чертежи»
- Здесь хранится всё, что нужно для стройки:
- программные пакеты — как коробки с кирпичами, проводами и трубами (готовые модули);
- launch-файлы — как чертежи и инструкции для рабочих.
- Важно: всё лежит на своих местах, иначе стройка превратится в хаос.
2. Вычислительный граф (Computation Graph Level)
«Электрика, водопровод и прочее»
- Это «инженерные системы» дома:
- Ноды (Nodes) — электрики, сантехники, монтажники. Каждый делает свою работу:
Пример: Один рабочий включает свет (нода камеры), другой проверяет температуру (нода датчиков). - Топики (Topics) — трубы и провода. По ним «текут» данные:
Пример: Труба «/video» передает видео от камеры к алгоритму распознавания. - Сервисы (Services) — рация для точечных запросов: «Ванна готова?» → «Да, можно заливать воду!».
- Parameter Server — диспетчерская с настройками: «Температура в доме — 23°C».
О чем ещё будем говорить в цикле?
Каждая следующая статья — это ключ к одному «сейфу» ROS. Разберём:
- Файловая система — как ROS хранит свои строительные блоки
- Nodes — почему они как сотрудники офиса, а не одиночки-герои;
- Topics vs Services — когда «крикнуть», а когда вежливо попросить;
- Bags — как записать «прошлое» робота и зачем это нужно;
- DDS — почему это почтальон, который никогда не теряет письма.
...и другие концепции — без скучных определений, зато с примерами.
Заключение: зачем это всё?
ROS — не магия, а логичная система. Понимая его уровни и концепции, мы:
- перестанем просто копировать код из tutorials, не понимая как он работает;
- научимся лучше понимать и чинить проекты;
- сможем проектировать архитектуру робота более осознанно.
В следующей статье разберём файловую систему ROS — где хранятся все секретные ингредиенты робота.
__________________________________________________________________________________________
P.S. Есть вопросы или темы, которые хотите обсудить? Обязательно напишите в комментарии — вместе сделаем наш цикл статей ещё полезнее и увлекательнее! 🚀
Подписывайтесь на наш Телеграмм канал, где мы публикуем как сами применяем полученные знания на реальном примере — популярно делимся нашими результатами, вместе будет интереснее https://t.me/it_s_working!