ROS 2
Кратко
ROS 2 (Robot Operating System 2) — стандартный фреймворк современной робототехники. Вопреки названию это не операционная система, а «промежуточный слой» (middleware) поверх Linux и других ОС: набор библиотек, инструментов и соглашений, позволяющий собирать программную часть робота из независимых модулей. На ROS 2 построено большинство исследовательских и всё больше промышленных роботов.
Для чего используется
- Интеграция: камера, лидар, IMU, моторы и алгоритмы от разных разработчиков соединяются в одну систему стандартными интерфейсами.
- Готовые компоненты: навигация (Nav2), манипуляторы (MoveIt), SLAM-пакеты, драйверы сотен устройств — не нужно писать всё с нуля.
- Инструменты: визуализация RViz, запись и воспроизведение данных (bag-файлы), симуляция Gazebo.
- БПЛА: бортовой компьютер с ROS 2 берёт на себя зрение и планирование, командуя автопилоту PX4 или ArduPilot.
Как работает
Программа робота в ROS 2 — это множество узлов (nodes), небольших независимых процессов. Узлы обмениваются данными по трём шаблонам:
- топики — потоковая публикация/подписка: узел-драйвер камеры публикует изображения, узлы зрения подписываются; отправитель не знает получателей;
- сервисы — запрос/ответ: «дай текущую карту»;
- действия (actions) — длительные задачи с обратной связью и отменой: «доехать до точки».
Сообщения типизированы (sensor_msgs/Image, geometry_msgs/Twist…), поэтому узлы разных авторов совместимы. Транспортом служит DDS — промышленный стандарт распределённого обмена: узлы находят друг друга сами, без центрального сервера (ключевое отличие от ROS 1 с его единой точкой отказа — master-процессом). ROS 2 также принёс поддержку систем реального времени и штатную работу нескольких роботов в одной сети.
Код пишется на Python или C++, собирается в пакеты — единицы распространения с описанием зависимостей. Экосистема пакетов и есть главная ценность ROS: чужой SLAM или планировщик подключается к вашему роботу конфигурацией, а не переписыванием.
Основные компоненты
- ядро: библиотеки rclcpp/rclpy, система сообщений, DDS-транспорт;
- инструменты: командная утилита ros2, RViz (3D-визуализация), rosbag (запись данных), launch-система;
- ключевые стеки: Nav2 (навигация), MoveIt (манипуляторы), tf2 (системы координат);
- симуляция Gazebo; сборка colcon.
Примеры
- Колёсный робот: драйверы + SLAM-пакет + Nav2 — автономная навигация в здании из готовых компонентов.
- БПЛА с бортовым компьютером: узлы зрения на ROS 2 командуют PX4.
- Запись полёта в bag-файл и отладка алгоритма на записанных данных без повторных полётов.
Связанные темы
Источники
- ROS 2 Documentation — концепции (узлы, топики, сервисы, действия), DDS, инструменты, пакеты.