Программирование роботов Unitree: с чего начать

Программирование роботов Unitree: с чего начать
10.09.2026
7 мин.
238

Содержание

  • Ключевые тезисы
  • Что такое ROS 2 и зачем он нужен для программирования роботов
  • Архитектура ROS 2: как устроена операционная система для роботов
  • Установка и настройка ROS 2: первые шаги
  • Программирование роботов на ROS 2: пишем первый узел
  • Инструменты разработчика ROS 2: RViz, Gazebo и отладка
  • Программирование интеллектуальных роботов: SLAM, навигация и компьютерное зрение
  • Реальные роботы на ROS 2: платформы и примеры проектов
  • С чего начать: практический маршрут для проекта Unitree
  • Заключение
  • Часто задаваемые вопросы

Программирование роботов — это настройка поведения машины через код, алгоритмы, датчики, команды движения и проверку реакции в реальной среде. Начать с роботов Unitree лучше не с попытки сразу написать сложную автономную систему, а с выбора платформы, установки ROS 2, запуска простого узла и постепенного перехода к навигации, компьютерному зрению и управлению движением. Для первого знакомства подойдут гуманоидные платформы Unitree G1 и Unitree H1 / H1-2, а для мобильных сценариев — Unitree Go2, Unitree Go2-W или промышленные четвероногие решения Unitree B2 и Unitree B2-W.


Если нужна общая навигация по линейке, удобнее начать с каталога роботов Unitree. Для образовательных задач полезно посмотреть раздел «Роботы Unitree в образовании», а для задач сбора данных и обучения моделей — платформу Unitree G1-D. В этой статье разберем основные языки программирования роботов, виды программирования роботов, программы для программирования, архитектуру ROS 2 и базовый маршрут разработки — от первого узла до автономного поведения.


Ключевые тезисы


  • ROS 2 — базовый слой, который связывает сенсоры, контроллеры, алгоритмы и исполнительные механизмы робота;

  • Python удобен для быстрого прототипирования, а C++ чаще выбирают для производительных модулей и задач с низкой задержкой;

  • движение робота программируется не одной командой, а цепочкой: сенсорные данные, планирование, команда скорости, обратная связь и безопасность;

  • в реальном проекте лучше начинать с симуляции, а затем переносить проверенный алгоритм на физическую платформу;

  • для проектов Unitree важно заранее выбрать сценарий: обучение, мобильная навигация, промышленная инспекция, управление роботом-собакой или гуманоидная робототехника.


Что такое ROS 2 и зачем он нужен для программирования роботов


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


Главная идея ROS 2 — разделить сложного робота на независимые модули. Один модуль читает данные с сенсора, второй строит карту, третий рассчитывает маршрут, четвертый управляет приводами. Такой подход снижает сложность и позволяет проверять каждый компонент отдельно.


Термин ROS расшифровывается как Robot Operating System. Это экосистема для разработки роботов: команды терминала, библиотеки, стандарты сообщений, инструменты отладки и симуляции.


От ROS 1 к ROS 2: эволюция операционной системы роботов


ROS 1 долго был стандартом для исследований, но его архитектура хуже подходила для распределенных, безопасных и промышленных систем. В ROS 1 был центральный мастер-узел rosmaster: если он становился недоступен, нарушалась работа всей системы. ROS 2 ушел от такой модели и сделал обнаружение узлов распределенным.


В 2026 году выбирать ROS 2 для нового проекта разумнее, потому что ROS 1 Noetic завершил жизненный цикл в мае 2025 года. Это не значит, что старые роботы сразу перестают работать, но для новых разработок, безопасности и поддержки актуальнее ROS 2.


Характеристика

ROS 1

ROS 2

Коммуникация

через центральный rosmaster

через распределенное обнаружение и DDS

Надежность

хорошо для лабораторий и прототипов

лучше подходит для сетевых и промышленных систем

Безопасность

базовая модель, меньше встроенных механизмов

есть архитектура безопасности и сегментация сети

Real-time

ограниченная поддержка задач реального времени

лучше подготовлен для систем с жесткими требованиями к задержке

Статус

Noetic завершил поддержку

активно развивается и используется в новых проектах


Ключевые преимущества ROS 2 перед предшественником


  • DDS — Data Distribution Service, то есть стандарт обмена данными между распределенными программами. Для разработчика это означает более гибкую связь между узлами робота.

  • QoS — Quality of Service, или правила качества доставки сообщений. Например, для команды торможения важна надежность, а для видеопотока иногда важнее скорость.

  • Кроссплатформенность — возможность работать не только на Linux, но и в проектах с Windows или macOS.

  • Поддержка micro-ROS — запуск узлов, подобных ROS, на микроконтроллерах, где мало памяти и энергии.

  • Распределенная архитектура — несколько компьютеров, сенсоров и контроллеров могут быть частью одного графа робота.

  • Удобная отладка — команды ros2 node list, ros2 topic list и ros2 topic echo помогают быстро понять, что происходит в системе.


Лицензия ROS 2: открытый исходный код и BSD


ROS 2 распространяется как открытая технология. Лицензия BSD означает, что разработчик может использовать компоненты ROS 2 в коммерческом проекте без обязательного раскрытия всего собственного кода. Простыми словами, компания может строить продукт на базе ROS 2 и при этом сохранять свои прикладные разработки закрытыми.


Для бизнеса это важно: можно быстрее собрать прототип, использовать готовые драйверы и инструменты, а затем развивать собственную логику под конкретного робота или задачу.


Архитектура ROS 2: как устроена операционная система для роботов


Архитектура ROS 2 строится как вычислительный граф. Узел, или node, — это отдельная программа. Топик, или topic, — канал сообщений. Издатель публикует данные в топик, подписчик получает их из топика. Например, лидар публикует сканы в /scan, а навигационный модуль использует эти данные для построения карты.


Такой подход особенно удобен для мобильных платформ. Например, на робособаке может быть отдельный узел для данных лидара, отдельный узел для камеры, отдельный узел для команды скорости и отдельный интерфейс для оператора. Если сенсор меняется, не нужно переписывать всю систему.


Узлы, топики, издатели и подписчики


  • geometry_msgs/Twist — сообщение для линейной и угловой скорости, часто используется для команды движения;

  • sensor_msgs/LaserScan — данные лазерного сканера, полезные для навигации и SLAM;

  • sensor_msgs/Image — изображение с камеры для компьютерного зрения;

  • rcl_interfaces/ParameterEvent — сообщение об изменении параметров узла.


Сервисы и экшны: синхронная и асинхронная коммуникация


Сервис — это короткий запрос и ответ. Например, оператор просит узел выполнить калибровку датчика и получает результат. Экшн, или action, нужен для долгой задачи: робот едет к цели, периодически сообщает прогресс и в конце возвращает результат.


Механизм

Когда использовать

Пример

Топик

для постоянного потока данных

камера публикует изображение, навигация читает карту

Сервис

для короткого запроса и ответа

запросить статус батареи или запустить калибровку

Экшн

для длительной задачи с обратной связью

отправить робота в точку и получать прогресс движения


DDS и QoS: как настроить обмен данными


DDS — это транспортный слой под ROS 2. Его можно представить как службу доставки сообщений между узлами. Политики QoS задают правила этой доставки: хранить ли историю, ждать ли подтверждения, сколько сообщений держать в очереди и что делать при потере пакета.


В простом проекте настройки по умолчанию часто достаточны. В промышленной среде или при работе по Wi-Fi их приходится подбирать: для аварийной команды лучше надежность, для видеопотока — скорость и низкая задержка.

  1. reliability — надежность доставки: важно для команд управления и критических событий;

  2. durability — сохранение данных для новых подписчиков: полезно для параметров и состояния;

  3. history — глубина очереди сообщений: помогает не терять данные при кратких задержках;

  4. deadline — контроль ожидаемого интервала между сообщениями: полезно для диагностики связи.

Установка и настройка ROS 2: первые шаги


Для старта обычно используют Ubuntu Linux LTS. LTS означает Long Term Support — версию с долгой поддержкой. Для новых проектов актуальна ветка Jazzy под Ubuntu 24.04, а Humble остается рабочим выбором для проектов на Ubuntu 22.04 и существующих зависимостей.


Главная ошибка новичка — поставить ROS 2, но не подключить окружение командой source. Тогда терминал не видит пакеты и команды. Поэтому настройку стоит проверять сразу после установки.


При выборе дистрибутива ROS 2 нужно учитывать: 

  1. версию Ubuntu, на которой будет работать проект;

  2. поддержку нужных драйверов и библиотек;

  3. совместимость с симулятором, камерой, лидаром и контроллерами;

  4. срок поддержки дистрибутива;

  5. командную экспертизу: проще выбирать версию, которую уже знает команда.

Пошаговая установка ROS 2 на Ubuntu Linux


Ниже — логика установки в учебном виде. Конкретные команды нужно сверять с выбранной версией ROS 2 и Ubuntu.

  1. проверить версию Ubuntu и locale;

  2. добавить репозиторий ROS 2;

  3. обновить список пакетов и установить desktop-пакет ROS 2;

  4. добавить source setup.bash в .bashrc;

  5. запустить demo_nodes_cpp talker и listener для проверки обмена сообщениями.

source /opt/ros/humble/setup.bash

ros2 run demo_nodes_cpp talker

ros2 run demo_nodes_py listener


Программирование роботов на ROS 2: пишем первый узел


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


Методы программирования роботов можно разделить на несколько уровней: работа с низкоуровневыми командами, создание узлов, настройка сообщений, программирование движения, подключение сенсоров, симуляция и тестирование на физической платформе. В реальном проекте эти варианты обычно комбинируются.


Создание рабочего пространства и пакета ROS 2


robot_ws/

src/

my\_first\_package/


build/

install/

log/


Директория src хранит исходный код. build нужен для сборки, install — для готовых пакетов, log — для журналов. Для новичка это удобно: можно удалить build и log, пересобрать проект и быстро понять, где возникла ошибка.


Первый узел на Python: издатель и подписчик


Python подходит, когда нужно быстро проверить идею. Например, создать узел, который раз в секунду отправляет текстовое сообщение или команду скорости. Это хороший старт перед работой с реальным роботом.


import rclpy

from rclpy.node import Node

from std_msgs.msg import String

class DemoPublisher(Node):

def \_\_init\_\_(self):


    super().\_\_init\_\_('demo\_publisher')


    self.publisher = self.create\_publisher(String, 'demo\_topic', 10)


    self.timer = self.create\_timer(1.0, self.send\_message)


def send\_message(self):


    msg = String()


    msg.data = 'Робот готов к работе'


    self.publisher.publish(msg)


rclpy.init()

node = DemoPublisher()

rclpy.spin(node)


Первый узел на C++: когда он нужен


C++ сложнее на старте, но он полезен там, где важна производительность: обработка сенсорных данных, управление моторами, расчет траекторий, работа с большим количеством сообщений. Простое правило: Python — для прототипа, C++ — для узлов, от которых зависит скорость реакции.


Языки программирования роботов не ограничиваются Python и C++. В проектах встречаются MATLAB, JavaScript для интерфейсов, C для микроконтроллеров, но в ROS 2 именно Python и C++ остаются базовой парой.


Лаунч-файлы: запуск сложных систем одной командой


Launch-файл — это сценарий запуска. Простыми словами, он позволяет одной командой поднять несколько узлов: драйвер лидара, навигацию, визуализацию и пользовательский модуль. Это снижает риск забыть важный компонент.

from launch import LaunchDescription

from launch_ros.actions import Node

def generate_launch_description():

return LaunchDescription([


    Node(package='my\_package', executable='demo\_publisher'),


    Node(package='my\_package', executable='demo\_listener')


])


micro-ROS: программирование микроконтроллеров с ROS 2


micro-ROS нужен, когда часть логики должна работать на маленьком контроллере: например, ESP32, STM32 или Arduino-совместимой плате. Микроконтроллер может отвечать за моторы или простые датчики, а основной компьютер — за навигацию и планирование.


Инструменты разработчика ROS 2: RViz, Gazebo и отладка


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


RViz — визуализатор данных робота. Gazebo — симулятор физической среды. rqt — набор графических инструментов для проверки параметров и графиков. ros2 bag — запись сообщений, чтобы позже воспроизвести поведение и найти ошибку.


Визуализация данных с RViz


RViz показывает модель робота, карту, облако точек, путь навигации и координатные оси. Для проекта с лидаром Unitree L2 визуализация особенно полезна: можно увидеть, как робот воспринимает пространство и строит карту.


Если проект связан с построением карт, полезно отдельно изучить 4D LiDAR L2 как сенсорную основу для SLAM и навигации.


Симуляция роботов в Gazebo


Gazebo помогает тестировать алгоритмы без риска повредить физическое оборудование. В симуляции можно проверить движение робота, работу датчиков, реакцию на препятствия и базовую навигацию. После этого код переносится на реальную платформу и дорабатывается уже с учетом физики: трения, задержек, ошибок сенсоров и ограничений приводов.


MATLAB и ROS 2: интеграция с внешними инструментами


MATLAB — коммерческая инженерная среда для расчетов, моделирования и анализа данных. Если лицензии нет, многие задачи можно решать связкой ROS 2, Python, NumPy и SciPy. Для учебных проектов этого часто достаточно.


Программирование интеллектуальных роботов: SLAM, навигация и компьютерное зрение


Интеллектуальное поведение появляется не из одного алгоритма, а из связки модулей. Робот должен видеть среду, понимать свое положение, строить карту, принимать решение и отправлять команду приводам. Поэтому алгоритмы в робототехнике всегда проверяют в контексте всей системы.


Для платформ Unitree это особенно важно: робособака или гуманоид работают в физическом мире, где есть уклоны, препятствия, люди, задержки связи и непредсказуемые ситуации.


Автономная навигация и построение карт (SLAM)


SLAM расшифровывается как Simultaneous Localization and Mapping. Простыми словами, робот одновременно строит карту и понимает, где он находится на этой карте. Это нужно для движения по незнакомой среде, обхода препятствий и повторяемых маршрутов.


В ROS 2 для навигации часто используют стек Nav2. Он объединяет карту, планировщик маршрута, локальный контроллер и поведение при ошибках. Для мобильных задач можно рассматривать Unitree Go2, Go2-W, B2 и B2-W в зависимости от нагрузки, среды и требований к проходимости.


Компьютерное зрение в ROS 2


Компьютерное зрение — это обработка изображения камерой и алгоритмами. Робот может находить объект, оценивать расстояние, проверять зону перед собой или распознавать маркеры. В ROS 2 типовая цепочка выглядит так: камера публикует изображение, узел обработки получает кадр, алгоритм выделяет объект и публикует результат в отдельный топик.


Работа с моторами, энкодерами и регулятором PID в ROS 2


Регулятор PID — простой и важный алгоритм управления. Он сравнивает желаемое значение с фактическим и корректирует команду. Например, если колесо вращается медленнее, чем нужно, регулятор увеличивает управляющее воздействие. UART — это простой последовательный канал связи между микроконтроллером и компьютером.


Реальные роботы на ROS 2: платформы и примеры проектов


Для изучения ROS 2 без большого бюджета часто используют учебные платформы и симуляторы. Если задача связана с коммерческой демонстрацией, НИОКР или прикладным сценарием, полезно смотреть на реальные платформы. В линейке Unitree для разных задач подходят G1, H1 / H1-2, Go2, Go2-W, B2, B2-W и G1-D.


Платформа

Когда рассматривать

Что отрабатывать

Unitree G1

компактные гуманоидные сценарии, образование, демонстрации

баланс, ходьбу, манипуляции, базовое взаимодействие

Unitree H1 / H1-2

полноразмерные гуманоидные проекты и НИОКР

сложную локомоцию, работу в среде человека

Unitree Go2

мобильные эксперименты и управление роботом-собакой

навигацию, обход препятствий, сбор данных

Unitree B2 / B2-W

промышленные и полевые сценарии

маршруты, инспекцию, перенос нагрузки, автономное движение

Unitree G1-D

сбор данных, обучение моделей и манипуляции

политику управления, захват объектов, тестирование датасетов


Создание собственного учебного робота на ROS 2


Для учебного проекта достаточно простой базы: мини-компьютер, микроконтроллер, моторы с энкодерами, IMU, лидар или камера. Но для задач B2B лучше сразу оценивать готовую платформу, потому что промышленный робот требует не только кода, но и надежной механики, питания, датчиков, безопасности и сервисной поддержки.


Для ручного управления и тестирования сценариев также можно использовать пульт Unitree R3, если он совместим с выбранной конфигурацией робота.


С чего начать: практический маршрут для проекта Unitree

  1. определить задачу: обучение, навигация, инспекция, демонстрация, манипуляции или промышленный сценарий;

  2. выбрать платформу: гуманоид, робособака, колесно-ножная модель или обучающая станция;

  3. установить ROS 2 и проверить базовые команды терминала;

  4. создать первый пакет и простой узел publisher-subscriber;

  5. подключить симуляцию или тестовые данные сенсоров;

  6. проверить алгоритм в безопасной среде;

  7. перенести логику на физическую платформу и настроить ограничения безопасности;

  8. записывать данные, анализировать ошибки и постепенно усложнять сценарий.

Заключение


Программирование роботов Unitree лучше начинать с понятной задачи и базовой архитектуры ROS 2. Сначала достаточно установить среду, понять узлы и топики, запустить простой обмен сообщениями и проверить симуляцию. Затем можно переходить к датчикам, SLAM, компьютерному зрению, настройке движения и работе с реальной платформой. Такой путь снижает риск ошибок и помогает быстрее перейти от учебного примера к рабочему робототехническому сценарию.


Часто задаваемые вопросы


Какой язык программирования использовать в ROS 2 — Python или C++?

Для старта удобнее Python: он проще и быстрее для прототипов. C++ лучше подходит для высоконагруженных узлов, управления в реальном времени и обработки больших потоков данных.


Нужен ли физический робот для изучения ROS 2?

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


Можно ли использовать ROS 2 на Windows?

Да, ROS 2 поддерживает разные операционные системы. Но для большинства учебных и рабочих сценариев проще начинать с Ubuntu LTS, потому что под нее больше инструкций, пакетов и примеров.


Чем ROS 2 отличается от ROS 1?

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


Где найти поддержку и сообщество по ROS 2?

Начать можно с официальной документации ROS 2, примеров пакетов и тематических сообществ. Для проектов на Unitree дополнительно важно смотреть документацию конкретной модели и ограничения выбранной конфигурации.



Заказать звонок