Учебник ROS для начинающих
ROS (Robot Operating System) — это не операционная система, а фреймворк и middleware, на котором строят современных роботов: от учебных мобильных платформ до промышленных манипуляторов и беспилотников. Курс глубоко разбирает ROS 2: как устроен граф вычислений, как узлы общаются через топики, сервисы и действия, как описать робота в URDF, увидеть его в RViz, протестировать в Gazebo и связать с реальным железом через micro-ROS.
Учебник рассчитан на тех, кто уже знаком с Python и основами электроники (Arduino, Raspberry Pi, MicroPython). Мы пройдём путь от первого узла-издателя до полноценной архитектуры робота «восприятие → планирование → действие», разберём систему координат TF2, навигацию Nav2 и отладку распределённой системы. Примеры опираются на понятный образ — небольшую колёсную мобильную платформу с лидаром и дифференциальным приводом.
Курс «ROS: робототехника» состоит из 8 разделов и 28 уроков: Введение в ROS, Архитектура и концепции ROS 2, Топики, сообщения и первые узлы, Сервисы, действия и параметры, Система сборки, пакеты и запуск, Описание, координаты, визуализация и симуляция, Сенсоры, навигация и движение и Реальное железо, архитектура и экосистема. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение в ROS
- Что такое ROS и зачем он нужен
Что такое ROS (Robot Operating System): не ОС, а фреймворк и middleware для роботов. Зачем нужен, как переиспользуют код, почему это стандарт индустрии и науки.
- ROS 1 против ROS 2: почему выбирают ROS 2
Сравнение ROS 1 и ROS 2: master-узел против DDS, почему ROS 2 годится для продакшна, реального времени и нескольких роботов. Что выбрать новичку.
- Установка ROS 2: дистрибутивы и Ubuntu
Как установить ROS 2: дистрибутивы (Humble, Jazzy), привязка к версиям Ubuntu, установка через apt, настройка окружения source и проверка работоспособности.
- Что такое ROS и зачем он нужен
2 Архитектура и концепции ROS 2
- Узлы и граф вычислений
Узлы (nodes) — кирпичики системы ROS 2. Что такое граф вычислений, как узлы общаются, как смотреть список узлов через ros2 node list и info.
- Библиотеки клиента: rclpy и rclcpp
Клиентские библиотеки ROS 2: rclpy для Python и rclcpp для C++. Что такое rcl, как создаётся узел, init и spin, почему код узла — language-text.
- Понятный робот: модель мобильной платформы
Сквозной пример курса: мобильная колёсная платформа с дифференциальным приводом. Из каких узлов состоит, какие топики использует, схема системы.
- Узлы и граф вычислений
3 Топики, сообщения и первые узлы
- Топики и модель publish/subscribe
Топики ROS 2 как именованные каналы данных. Модель publish/subscribe: издатели и подписчики, многие-ко-многим, осмотр через ros2 topic list и echo.
- Сообщения и типы msg
Типы сообщений ROS 2 (.msg): структура данных топика. Стандартные пакеты std_msgs, geometry_msgs, sensor_msgs. Просмотр через ros2 interface show.
- Первый узел-издатель на rclpy
Пишем узел-издатель ROS 2 на Python: create_publisher, таймер, publish. Полный код издателя cmd_vel и пояснение каждой строки.
- Узел-подписчик и обработка данных
Пишем узел-подписчик ROS 2 на Python: create_subscription, колбэк обработки сообщений. Подписываемся на /scan и реагируем на близкое препятствие.
- Топики и модель publish/subscribe
4 Сервисы, действия и параметры
- Сервисы: запрос и ответ
Сервисы ROS 2: модель request/response для разовых команд. Файлы .srv, отличие от топиков, клиент и сервер, ros2 service call.
- Действия (actions): длительные задачи
Действия ROS 2: для длительных задач с обратной связью и отменой. Структура .action (goal, result, feedback), пример движения к цели, ros2 action.
- Параметры узлов
Параметры узлов ROS 2: настройка без правки кода. Объявление declare_parameter, чтение, изменение через ros2 param set, загрузка из YAML.
- Инструменты интроспекции и rqt
Инструменты осмотра ROS 2: ros2 topic/node/service/param, rqt_graph для визуализации графа узлов, rqt-плагины. Отладка распределённой системы.
- Сервисы: запрос и ответ
5 Система сборки, пакеты и запуск
- Пакеты и workspace
Пакеты ROS 2 как единица организации кода. Рабочее пространство (workspace), структура src, package.xml и setup.py, изоляция и переиспользование.
- Сборка с colcon
Система сборки ROS 2: colcon. Команда colcon build, обработка зависимостей между пакетами, флаги, как source'ить результат, частые проблемы сборки.
- Launch-файлы: запуск множества узлов
Launch-файлы ROS 2: запуск десятков узлов одной командой. Структура launch на Python, передача параметров, namespace, ros2 launch.
- Пакеты и workspace
6 Описание, координаты, визуализация и симуляция
- Системы координат и TF2
TF2 в ROS 2: преобразования между системами координат робота. Дерево TF, кадры base_link, laser, map, odom. Зачем нужны и как связаны.
- URDF: описание робота
URDF в ROS 2: XML-описание робота. Звенья (link) и сочленения (joint), геометрия и оси, для чего нужно: TF, RViz, симуляция Gazebo.
- RViz: визуализация данных робота
RViz в ROS 2: 3D-визуализация данных робота. Дисплеи для модели, лидара, карты, TF, траекторий. Как настраивать, fixed frame, отладка через RViz.
- Симуляция в Gazebo
Симулятор Gazebo для ROS 2: виртуальный робот в виртуальном мире. Зачем симуляция, физика, плагины датчиков, тестирование без железа, sim-to-real.
- Системы координат и TF2
7 Сенсоры, навигация и движение
- Сенсоры в ROS: лидар, камера, IMU, одометрия
Сенсоры в ROS 2: лидар (LaserScan), камера (Image), IMU, одометрия (Odometry). Типы сообщений, частоты, системы координат, расчёт одометрии на Python.
- Навигация Nav2: карта, локализация, путь
Стек навигации Nav2 в ROS 2: SLAM (построение карты), локализация AMCL, планирование пути, обход препятствий. Обзор архитектуры автономной навигации.
- Управление движением: cmd_vel и PID
Управление движением робота: команда cmd_vel (Twist), дифференциальный привод, перевод скоростей в обороты колёс, PID-регулятор на Python с выводом.
- Запись и воспроизведение: ros2 bag
ros2 bag в ROS 2: запись топиков в файл и воспроизведение. Отладка по записям, тестирование алгоритмов на реальных данных без робота, анализ инцидентов.
- Сенсоры в ROS: лидар, камера, IMU, одометрия
8 Реальное железо, архитектура и экосистема
- Манипуляторы и MoveIt
Манипуляторы в ROS 2 и фреймворк MoveIt: планирование движения руки, прямая и обратная кинематика, избегание столкновений, обзор для роборук.
- Связь с железом и micro-ROS
ROS 2 и реальное железо: драйверы устройств, мост к микроконтроллерам, micro-ROS на ESP32. Как полноценный ROS-узел живёт прямо на МК. Связь с MicroPython.
- Архитектура робота, отладка и экосистема
Типичная архитектура робота восприятие-планирование-действие, отладка распределённой системы ROS 2, сообщество и экосистема, применения и куда расти дальше.
- Манипуляторы и MoveIt