Найти в Дзене
Stepan.Burmistrov

🤖 Как ноды в ROS2 заставляют робота ехать

🤖 Как ноды в ROS2 заставляют робота ехать В прошлых постах мы разобрали: 🟦 что такое ноды 🟩 что такое топики 🌀 и что по топику /cmd_vel роботу можно отдавать команды движения Теперь давайте соберём всё это в реальную логику роботу, который едет по чёрной линии. 👁 Нода компьютерного зрения: находит линию и решает, куда ехать: 📸 получает изображение с USB-камеры 🎨 обрабатывает кадр (BGR/HSV) ➕ ищет чёрную или белую линию 📍 вычисляет ошибку — насколько линия смещена от центра 🧠 по формуле omega = -k * error рассчитывает направление поворота 🚀 публикует скорость в топик: 👉 `/cmd_vel` То есть нода не крутит моторы сама — она только «говорит», куда ехать. 🕹 Нода robot_controller: превращает Twist в движение Эта нода подписывается на `/cmd_vel, получает сообщения Twist` и: ⚙️ переводит линейную и угловую скорость в PWM/скорости моторов 📡 отправляет команды в микроконтроллер 🚗 заставляет робот реально поехать Получается связка: camera_node → /cmd_vel → robot_controlle

🤖 Как ноды в ROS2 заставляют робота ехать

В прошлых постах мы разобрали:

🟦 что такое ноды

🟩 что такое топики

🌀 и что по топику /cmd_vel роботу можно отдавать команды движения

Теперь давайте соберём всё это в реальную логику роботу, который едет по чёрной линии.

👁 Нода компьютерного зрения: находит линию и решает, куда ехать:

📸 получает изображение с USB-камеры

🎨 обрабатывает кадр (BGR/HSV)

➕ ищет чёрную или белую линию

📍 вычисляет ошибку — насколько линия смещена от центра

🧠 по формуле omega = -k * error рассчитывает направление поворота

🚀 публикует скорость в топик:

👉 `/cmd_vel`

То есть нода не крутит моторы сама — она только «говорит», куда ехать.

🕹 Нода robot_controller: превращает Twist в движение

Эта нода подписывается на `/cmd_vel, получает сообщения Twist` и:

⚙️ переводит линейную и угловую скорость в PWM/скорости моторов

📡 отправляет команды в микроконтроллер

🚗 заставляет робот реально поехать

Получается связка:

camera_node → /cmd_vel → robot_controller → моторы

Это и есть философия ROS2: каждая нода делает свою маленькую задачу, а вместе — формируют поведение робота.

🧠 А теперь — практика!

В уроке курса по ROS2 мы собираем полноценную систему:

🔌 подключаем USB-камеру к роботу

🏗 пробрасываем её в ROS2 (/camera/image_raw)

🧠 создаём отдельный пакет line_follower

🎓 Подробный урок здесь:

https://stepik.org/lesson/1616297/step/1?unit=1638167

Чтобы глубже изучить компьютерное зрение — скидка 30% на мой курс:

https://stepik.org/a/109816/pay?promo=88789683ff20a8df