embedded

Учебник ROS для начинающих

28 уроков · 8 разделов · бесплатно, без регистрации

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. 1 Введение в ROS

    1. Что такое ROS и зачем он нужен

      Что такое ROS (Robot Operating System): не ОС, а фреймворк и middleware для роботов. Зачем нужен, как переиспользуют код, почему это стандарт индустрии и науки.

    2. ROS 1 против ROS 2: почему выбирают ROS 2

      Сравнение ROS 1 и ROS 2: master-узел против DDS, почему ROS 2 годится для продакшна, реального времени и нескольких роботов. Что выбрать новичку.

    3. Установка ROS 2: дистрибутивы и Ubuntu

      Как установить ROS 2: дистрибутивы (Humble, Jazzy), привязка к версиям Ubuntu, установка через apt, настройка окружения source и проверка работоспособности.

  2. 2 Архитектура и концепции ROS 2

    1. Узлы и граф вычислений

      Узлы (nodes) — кирпичики системы ROS 2. Что такое граф вычислений, как узлы общаются, как смотреть список узлов через ros2 node list и info.

    2. Библиотеки клиента: rclpy и rclcpp

      Клиентские библиотеки ROS 2: rclpy для Python и rclcpp для C++. Что такое rcl, как создаётся узел, init и spin, почему код узла — language-text.

    3. Понятный робот: модель мобильной платформы

      Сквозной пример курса: мобильная колёсная платформа с дифференциальным приводом. Из каких узлов состоит, какие топики использует, схема системы.

  3. 3 Топики, сообщения и первые узлы

    1. Топики и модель publish/subscribe

      Топики ROS 2 как именованные каналы данных. Модель publish/subscribe: издатели и подписчики, многие-ко-многим, осмотр через ros2 topic list и echo.

    2. Сообщения и типы msg

      Типы сообщений ROS 2 (.msg): структура данных топика. Стандартные пакеты std_msgs, geometry_msgs, sensor_msgs. Просмотр через ros2 interface show.

    3. Первый узел-издатель на rclpy

      Пишем узел-издатель ROS 2 на Python: create_publisher, таймер, publish. Полный код издателя cmd_vel и пояснение каждой строки.

    4. Узел-подписчик и обработка данных

      Пишем узел-подписчик ROS 2 на Python: create_subscription, колбэк обработки сообщений. Подписываемся на /scan и реагируем на близкое препятствие.

  4. 4 Сервисы, действия и параметры

    1. Сервисы: запрос и ответ

      Сервисы ROS 2: модель request/response для разовых команд. Файлы .srv, отличие от топиков, клиент и сервер, ros2 service call.

    2. Действия (actions): длительные задачи

      Действия ROS 2: для длительных задач с обратной связью и отменой. Структура .action (goal, result, feedback), пример движения к цели, ros2 action.

    3. Параметры узлов

      Параметры узлов ROS 2: настройка без правки кода. Объявление declare_parameter, чтение, изменение через ros2 param set, загрузка из YAML.

    4. Инструменты интроспекции и rqt

      Инструменты осмотра ROS 2: ros2 topic/node/service/param, rqt_graph для визуализации графа узлов, rqt-плагины. Отладка распределённой системы.

  5. 5 Система сборки, пакеты и запуск

    1. Пакеты и workspace

      Пакеты ROS 2 как единица организации кода. Рабочее пространство (workspace), структура src, package.xml и setup.py, изоляция и переиспользование.

    2. Сборка с colcon

      Система сборки ROS 2: colcon. Команда colcon build, обработка зависимостей между пакетами, флаги, как source'ить результат, частые проблемы сборки.

    3. Launch-файлы: запуск множества узлов

      Launch-файлы ROS 2: запуск десятков узлов одной командой. Структура launch на Python, передача параметров, namespace, ros2 launch.

  6. 6 Описание, координаты, визуализация и симуляция

    1. Системы координат и TF2

      TF2 в ROS 2: преобразования между системами координат робота. Дерево TF, кадры base_link, laser, map, odom. Зачем нужны и как связаны.

    2. URDF: описание робота

      URDF в ROS 2: XML-описание робота. Звенья (link) и сочленения (joint), геометрия и оси, для чего нужно: TF, RViz, симуляция Gazebo.

    3. RViz: визуализация данных робота

      RViz в ROS 2: 3D-визуализация данных робота. Дисплеи для модели, лидара, карты, TF, траекторий. Как настраивать, fixed frame, отладка через RViz.

    4. Симуляция в Gazebo

      Симулятор Gazebo для ROS 2: виртуальный робот в виртуальном мире. Зачем симуляция, физика, плагины датчиков, тестирование без железа, sim-to-real.

  7. 7 Сенсоры, навигация и движение

    1. Сенсоры в ROS: лидар, камера, IMU, одометрия

      Сенсоры в ROS 2: лидар (LaserScan), камера (Image), IMU, одометрия (Odometry). Типы сообщений, частоты, системы координат, расчёт одометрии на Python.

    2. Навигация Nav2: карта, локализация, путь

      Стек навигации Nav2 в ROS 2: SLAM (построение карты), локализация AMCL, планирование пути, обход препятствий. Обзор архитектуры автономной навигации.

    3. Управление движением: cmd_vel и PID

      Управление движением робота: команда cmd_vel (Twist), дифференциальный привод, перевод скоростей в обороты колёс, PID-регулятор на Python с выводом.

    4. Запись и воспроизведение: ros2 bag

      ros2 bag в ROS 2: запись топиков в файл и воспроизведение. Отладка по записям, тестирование алгоритмов на реальных данных без робота, анализ инцидентов.

  8. 8 Реальное железо, архитектура и экосистема

    1. Манипуляторы и MoveIt

      Манипуляторы в ROS 2 и фреймворк MoveIt: планирование движения руки, прямая и обратная кинематика, избегание столкновений, обзор для роборук.

    2. Связь с железом и micro-ROS

      ROS 2 и реальное железо: драйверы устройств, мост к микроконтроллерам, micro-ROS на ESP32. Как полноценный ROS-узел живёт прямо на МК. Связь с MicroPython.

    3. Архитектура робота, отладка и экосистема

      Типичная архитектура робота восприятие-планирование-действие, отладка распределённой системы ROS 2, сообщество и экосистема, применения и куда расти дальше.