Skip to the content
2 layersRoboForce, the printed circuit board in 3D

Тогда вы не зря зашли к нам, мы постараемся максимально подробно и быстро рассказать о нашем пути создания робота на ROS2 Jazzy и esp32,по этим материалам вы с легкостью сможете повторить этот проект.

Copper layers
2
Thickness
1.6 mm
Parts
3
Nets
48
Pads
80
Tracks, vias
33, 0
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
5 Apr 2025
Updated
12 Apr 2025

Overview

RoboForce is an open-source printed circuit board by Khuzhin06, from the Khuzhin06/RoboForce repository on GitHub. It is a 2-layer board with 3 parts on 48 nets, routed with 33 tracks and 0 vias.

It is built around the ESP32-S3-WROOM-1-N8 and L298N. It belongs with the ESP32 boards of this library.

Main components

2

README

README.md

RoboForce

Всем привет! Давно хотели собрать своего робота? Не слышали про ROS? Не знаете с чего начать?

Тогда вы не зря зашли к нам, мы постараемся максимально подробно и быстро рассказать о нашем пути создания робота на ROS2 Jazzy и esp32,по этим материалам вы с легкостью сможете повторить этот проект.

Ну а если вы хотите с головой погрузится в мир увлекательной робототехники и разобраться во всех тонкостях, то проходите курс на stepik - https://stepik.org/course/221157/syllabus Все материалы, используемые в этой статье были взяты из этого курса и мы лишь делимся опытом создания робота и проблемами с которыми столкнулись мы.

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

Также много интересной, полезной и актуальной информации можете найти в нашем TG-канале https://t.me/RoboForc

Содержание:

I модуль - Сборка робота

II Модуль - Программировоние ESP32

III Модуль - Настройка и программирование верхнего уровня

I Модуль - Сборка робота

1. Подготовка материалов и инструментов

Необходимые инструменты:

  • Лазерный резак – для резки фанеры
  • Дрель и сверла (2–3мм) – для отверстий
  • Набор отверток с разными насадками
  • Паяльник (40 Вт) + припой (POS-60) – для электроники
  • Мультиметр – проверка цепей
  • Наждачка - для обработки краёв деталей после резки.

Материалы и комплектующие:

КомпонентОписаниеКол-воСсылкаСтоимость
ФанераТолщина 6 мм, 600х6001 листhttps://www.ozon.ru/product/fanera-9-mm-sort-3-3-600h600-mm-1869700011/?at=PjtJzQPQXcWjXyvmIxmY3MwS95o8Lzcq71D1mFPGRX8v&from_sku=1901529745&oos_search=false370
Винты М3 (+ гайки М3)30шт х 20мм, 4шт х 30мм, 4шт х 50мм38https://aliexpress.ru/item/1005005552471765.html?sku_id=12000033513521183&spm=a2g2w.productlist.search_results.15.7c287835NR6JBS160
Винты М2.5 (+ гайки М2.5)2шт х 10мм2https://aliexpress.ru/item/1005005552471765.html?sku_id=12000033513521145&spm=a2g2w.productlist.search_results.15.7c287835NR6JBS150
Винты М2 (+ гайки М2)4 шт х 10мм4https://aliexpress.ru/item/1005005552471765.html?sku_id=12000033513521113&spm=a2g2w.productlist.search_results.15.7c287835NR6JBS120
МуфтыНеобходимы для закрепления колес на валах моторов2https://aliexpress.ru/item/1005004333022107.html?sku_id=12000028792464891&srcSns=sns_More&businessType=ProductDetail&spreadType=socialShare&tt=MG&utm_medium=sharing420
OMNI-колесоПозволяет двигаться роботу в любом направлении ьез поворота основных колес1https://aliexpress.ru/item/1005008405743640.html?sku_id=12000045061747881&spm=a2g2w.productlist.search_results.11.5e415abdiln3SR1540
Микрокомпьютер Raspberry pi 5 8gb«Верхний уровень». Обрабатывает информацию, поступающую с ESP (“нижнего уровня»). Поддержка новейших интерфейсов. Отлично подходит к задачам компьютерного зрения, обработки данных с лидаров.1https://sl.aliexpress.ru/p?key=0vxkGbg10000
Микроконтроллер ESP32-WROOM-32«Нижний уровень». Собирает информацию с датчиков, энкодеров и отправляет на «верхний уровень». Подходит для сетевого проекта из-за встроенных Wi-Fi и Bluetooth, высокой производительности и большого объёма памяти.1https://sl.aliexpress.ru/p?key=7oxkGZr300
Моторы JGA25-370 77 RPM 12 BНеобходимы для передвижения робота. Используем 12В для упрощения питания.2https://aliexpress.ru/item/1005007793208347.html?sku_id=12000042220805718&spm=a2g2x.productlist.search_results.1.2ccd33e3p7kOox1200
Драйвер моторов L298NНеобходим для управления моторов.1https://aliexpress.ru/item/1005007125159518.html?sku_id=12000042919988210&srcSns=sns_More&businessType=ProductDetail&spreadType=socialShare&tt=MG&utm_medium=sharing150
Понижающие DC-DC преобразователи Readytosky FPV RC UBEC 5V 5AОбеспечивает стабильное питание для микроконтроллера, микрокомпьютера, датчиков и драйверов. Имеет удобный форм-фактор и изолированный корпус.2https://aliexpress.ru/item/33019505937.html?sku_id=67198302173&srcSns=sns_More&businessType=ProductDetail&spreadType=socialShare&tt=MG&utm_medium=sharing530
Литиевые батареи JOUYM 18650, 2000 мАчОбеспечивает питание робота. Обладают высокой плотностью энергии при относительно небольшом размере. Можно последовательно соединять несколько штук, добиваясь нужного напряжения.3https://sl.aliexpress.ru/p?key=ajxkGkw460
Держатель для батарейКорпус для уставноки литейных батареек1https://aliexpress.ru/item/1005005586103501.html?sku_id=12000033652145033&spm=a2g2w.productlist.search_results.2.476f1d1frrOOTL140
Лидар SLAMTEC RPLIDAR C1«Глаза» робота, который смотрит на окружение, вычисляет расстояние на 360 градусов вокруг, определяет препятствия впереди1https://sl.aliexpress.ru/p?key=fmxkGwR6740
Штыревые штекеры и гнездаСлужат для удобства работы с микроконтроллером, его легкой замены - провода припаиваются не к самому МК, а к штекерам.2х2https://aliexpress.ru/item/1005004954771161.html?spm=a2g2x.detail.rcmdprod.7.6d172dc9ZId1M8&mixer_rcmd_bucket_id=UnknownMixerAbId&pdp_trigger_item_id=0_1005005576560025&ru_algo_pv_id=f712b2-61b690-22faee-72e977-1743876000&scenario=aerSimilarItemPdpRcmd&sku_id=12000031142220245&traffic_source=recommendation&type_rcmd=core200
Комплект разъемовНужны для соединения электронной схемы без пайки.1https://aliexpress.ru/item/1005007622670523.html?sku_id=12000041540582736&spm=a2g2w.productlist.search_results.10.2e79633bJ9Bw1E120

СТОИМОСТЬ КОМПОНЕНТОВ ДЛЯ СБОРКИ РОБОТА:

За относительно небольшой бюджет можно также собрать достаточно надежного и производительного робота. Суммируя все цены комплектующих из I модуля 1 пункта, мы получаем итоговую стоимость нашей модели - 22.600 рублей (на момент 06.04.2025).

2. Изготовление корпуса

Шаг 1: Резка деталей

Загрузите DXF-файлы в станок лазерной резки.
Основные детали:

  • Основание (нижняя платформа)
  • Средняя платформа
  • Крышка (верхняя платформа)
  • 2 опоры для OMNI колеса
  • 5 стоек по 60 мм
  • 4 стойки по 130 мм После резки обработайте края наждачкой, чтобы избежать заусенцев.

Шаг 2: 3D-печать

Загрузите stl-файлы в станок 3D-печати.
Основные детали:

  • 2 колеса
  • Стойки для моторчиков image image

Шаг 3: Сборка каркаса (первый слой)

  1. Установка мотор редукторов На валы мотор-редукторов установите колёса с помощью муфт (2 шт) и винтов М3 (2 шт), закрепите их стопорными винтами. image

Найдите на нижней платформе посадочные места под моторы. Зафиксируйте каждый мотор винтами M3 х 50 мм (4 шт) и гаек М3 (4 шт) с помощью напечатанных стоек (обратите внимание на то, чтобы провода от энкодеров были выведены к центру платформы) Убедитесь, что при вращении колёса не задевают за край платформы и установлены ровно. Уделите внимание ровной установке колес, это обеспечит качественное движение без лишних корректировок. image image

  1. Установка OMNI колеса Найдите на нижней платформе посадочные места под вырезанные опоры OMNI колеса. Установите их с помощью винтов М3 х 20 (4 шт) и гаек М3 (4 шт) image image

Закрепите OMNI колесо винтами М3 (2 шт). Убедитесь, что при вращении колёсо не задевает за край платформы.

  1. Установка драйвера моторов Найдите в центре нижней платформы посадочные места под драйвер Установите драйвер с помощью винтов М3 (2шт) и гаек М3 (2шт) image

Шаг 4: Сборка каркаса (средний слой)

  1. Пайка шилда для ESP Шилд – плата с контактными площадками.
    Установите на ESP штыревые гнезда, затем вставьте конструкцию в печатную плату (со стороны пайки) image Установите штыревые штекеры в средних с конструкцией линиях на плате. Аккуратно переверните плату, поддерживая все компоненты. image

Включите паяльник и дождитесь, пока инструмент разогреется до 300-350°C. Нанесите припой на крайние контакты (используйте флюс для лучшего растекания припоя) Необходимо спаять все крайние контакты попарно (контакт гнезда с контактом штекера) Проведите аналогичную работу со всеми оставшимися контактами (ВАЖНО: два спаянных контакты не должны быть соединены с соседними. image

После окончания пайки необходимо провести проверку: А. Визуальный осмотр:

  • Нет ли перемычек между контактами (проверка на отсутствие короткого замыкания) Все ли дорожки пропаяны (особенно у штыревых разъёмов).
    Б. Тест мультиметром:
  • Прозвоните линии 5V и 3.3V на КЗ.
  • Проверьте контакты GPIO на обрыв.
  1. Установка шилда на платформу Найдите на средней платформе посадочное место для шилда Вставьте снизу в платформу винты М2 (4шт) и накрутите на них гайки М2 (4шт). Данная конструкция не позволит передать находящиеся под шилдом провода
    Установите на винты собранный шилд и закрепите его сверху гайками М2 (4шт) image

  2. Установка блока питания Найдите на средней платформе посадочное место для блока питания (средняя часть платформы) Закрепите блок с помощью винтов М3 (2 шт) и гаек М3 (2шт) (ВАЖНО: провода должны выходить в центральную часть платформы) image

  3. Монтаж: макетную и монтажную схему можно подробно изучить в папке Electronic scheme Электрическая схема: image

Пайка проводов, преобразователей, RGB ленты, драйвера, энкодеров, микроконтроллера. Залудите контакты перед пайкой, а затем работайте по тому же принципу, как и при пайке шилда
После окончания пайки необходимо провести проверку (визуальный осмотр и тест мультиметром) (ВАЖНО: проверьте, нет ли пережатых проводов) image image

Шаг 5: Соединение нижней и средней платформ

Соберите стойки из фанеры: 5 штук по 60 мм, 4 штуки по 130 мм (для этого понадобятся гайки М3 18 шт) Соедините нижнюю и верхнюю платформы с помощью стоек по 60 мм, винтов М3 (10шт) image image image image image

Шаг 6: Тестовый запуск

  • Подключите питание.
  • Проверьте работу моторов, питание и загрузку ESP.
  • Проанализируйте, движится ли робот в заданном вами направлении или нет. ВАЖНО: есть вероятность, что робот поедет в обратную сторону, так как у него 2 шнура, которые можно перепутать местами. В таком случае необходимо поменять местами номера бортов в коде и загрузить его. Теперь робот поедет в заданном вами направлении.
  • Измерьте количество тиков и запишите их в программу. image image [Image blocked: Uploading image.png…]

II Модуль - Программирование ESP32

После того как вся аппаратная часть собрана, можно переходить и к программной. Все действия лучше делать на ноутбуке - так как это будет быстрее и надежней, хотя в теории можете и сделать все тоже самое на raspberry. Начнем с программирования "нижнего уровня", тоесть esp32. Программировать будем через arduino IDE (если она еще у вас не установлена, то можете скачать с официального сайта https://www.arduino.cc/en/software ). Чтоб можно было прошивать нашe платe добавим ее в список доступных для прошивки. Нужно зайти в файл->настройки и в поле "Дополнительные менеджеры плат" вставляем ссылку: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json и нажимаем "ОК". После заходим в инструменты->плата->менеджер плат тут в строке поиска вводим esp32, выбираем соответсвующий вариант снизу и нажимаем на кнопку установить. После всех этих процедур для прошивки станут доступны платы семейства ESP32. Чтоб выбрать нужную плату заходим в инструменты->esp32 и выбираем нужную плату (мы использовали "ESP32 dev Module"). Также необходимо подключить саму плату к компьютеру и выбрать порт к которому она подключена заходим опять в инструменты->порт и выбираем нужный порт. Помимо этого необходимо установить библиотеку для адресной светодиодной ленты. Для этого заходим в скетч->подключить библиотеку->Управлять библиотеками в поле поиска вводим "neopixel" и выбираем Adafruit neopixel и нажимаем установить.

1. Настройка моторов

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

-проверить направление вращения моторов -проверить подключение энкодеров

Скачиваем или копируем код для esp32 из папки low_level "test_move_esp32", открфываем этот код в arduino ide и нажимаем в правом верхнем углу "загрузить".

После полной загрузки кода колеса робота должны вращаться вперед, если это не так, то следует поменять в коде местами номера пинов, к которым подключён драйвер моторов левой или право стороны. Для определения вращения энкодеров открываем в arduino IDE serial port и следим за значениями: оба значения на левом и правом моторах должны возрастать, если это не так, то меняем местами пины энкодера в программе.

2. Загрузка основной программы на ESP32.

Для этого шага нам необходимо скопировать все параметры из прдыдущего кода, а также измерить диаметр колеса и расстояние между центрами колёс. Все эти параметры вашего робота необходимо внести в скетч main_esp32.ino, который находится в папке low-level. Этот код вы также скачиваете (или копируете) и открываете в Arduino IDE для дальнейшей прошивки. После внесения всех изменений в вашу программу по аналогии с 1 шагом загружаем программу на микроконтроллер.

III Модуль - Настройка и программирование верхнего уровня

До запуска робота остался последний и самый ответственный шаг. Настройка микрокомпьютера - наших "мозгов" робота. В нашем проекте эту роль выполняла raspberry pi 5 8gb, поэтому советуем все повторять на таком же железе для предотвращения проблем. Безусловно, подойдет и другое железо, по типу repka pi, orange pi, banana pi и подобных "фруктов". Но наиболее популярной и поддерживаемой всетаки остается "малинка".

1. Установка ubuntu

По сути raspberry pi является аналогом вашего ноутбука или настольного компьютера, но куда меньших размеров и, скорее всего, хуже по вычислительным мощностям. Но тем не менее нам нужно поставить на наш микрокомпьютер операционную систему - наиболее подходящая ubuntu 24.04. !!! при сборке нашего робота мы сначала поставили 24.10 - по принципу: больше - лучше, но тут,увы, так не работает. И чтобы у вас без проблем все встало как нужно необходимо использовать именно ubuntu 24.04 LTS!!! Скачать ее можно с официального сайта - она абсолютно бесплатная. После загрузки образа диска необходимо его записать на sd карту, которая будет стоять в малинке. Мы использовали на 64гб. Или же можно сразу скачать Raspberry PI Imager(https://www.raspberrypi.com/software/) и там уже в интерфейсе выбрать нужную операционную систему и ваш носитель.

2. Установка ROS2

После установки и базовых настроек операционной системы можно установить и сам ros2 jazzy (в нашем проекте используется десктопная версия ros-jazzy-desktop), лучше всего брать команды для установки с официального сайта (https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html), так как они могут меняться.

Если установить не получается пробуем еще раз, внимательно копируем все и вставляем в терминал. Если совсем не помогает, то можно попытаться погуглить ошибку, которую вам выдает терминал или же переустановить заново операционку на флешку и убедится что это точно ubuntu 24.04 LTS.

Также установим еще пару пакетов:

text
sudo apt install python3-pip
text
pip3 install setuptools
text
sudo apt install python3-colcon-common-extensions

3. Настройка необходимых пакетов

После установки ros2 в домашнеq директории нужно создать папку где будут хранится все наши пакеты для ros2.

text
mkdir ros2_ws
text
cd ros2_ws
text
mkdir src
text
cd-
text
colcon build

после создания нашего рабочего пространства создадим пакет, который будет считывать сообщения из топика /cmd_vel

text
cd ~/ros2_ws/src
ros2 pkg create robot_control --build-type ament_python --dependencies rclpy geometry_msgs
cd robot_control/robot_control

создаем файл robot_controller_node.py и копируем в него код из одноименного файла папки high_level. Предварительно также нужно подключить прошитую esp32 к одному из портов raspberry pi, а затем ввести команду:

text
ls -l /dev/serial/by-path/

после необходимо скопировать путь и заменить его в коде. сохраняем файл. Делаем скрипт исполняемым:

text
chmod +x robot_controller_node.py

Далее находим и редактируем файл setup.py в этом пакете (нужно добавить 3-ю строчку):

text
entry_points={
    'console_scripts': [
        'robot_controller_node = robot_control.robot_controller_node:main',
    ],
},

Затем пересоберем наш пакет и установим все зависимости:

text
cd ~/ros2_ws
colcon build
source install/setup.bash

И запускаем наш пакет:

text
ros2 run robot_control robot_controller_node

Проверяем список топиков в другом терминале, должен появиться топик /cmd_vel

text
source /opt/ros/jazzy/setup.bash
ros2 topic list

Если топик появился, то все прошло успешно и мы можем управлять нашим роботом с клавиатуры!

Для этого установим пакет:

text
sudo apt install ros-jazzy-teleop-twist-keyboard

И запускаем пакет:

text
ros2 run teleop_twist_keyboard teleop_twist_keyboard

Теперь робот должен ехать! Поздравляю мы проделали большой путь и запустили робота!

Parts

3
QtyValueFootprintReferences
1-Package_TO_SOT_THT:TO-220-3_Vertical-1
1ESP32-S3-WROOM-1RF_Module:ESP32-S3-WROOM-1U1
1L298NPackage_TO_SOT_THT:TO-220-15_P2.54x2.54mm_StaggerOdd_Lead4.58mm_VerticalU2

Similar boards

  • 4 layers139.6 × 129.4 mmScience v2, the printed circuit board in 3D

    Science v2

    Sagnik-Tech/jubilant-succotash

    Design of a Science PCB

    266 parts1
  • 2 layers209.9 × 135.9 mmMerged, the printed circuit board in 3D

    Merged

    Samorales-03/The_Cart_Buddy

    Senior design project

    110 partsMIT
  • 2 layers80 × 90.5 mmLine Follower, the printed circuit board in 3D

    Line Follower

    Zaworek03/Line-Follower

    67 parts
  • 2 layers76.1 × 85 mmFlypi, the printed circuit board in 3D

    Flypi

    amchagas/Flypi

    This is the repository for the flypi project

    45 parts88GPL-2.0
  • 4 layers85 × 54 mmPECDR, the printed circuit board in 3D

    PECDR

    pedro-ibs/trekking

    Desenvolvimento de um robô rádio-controlado/autônomo da moralidade “tracker”

    68 parts9
  • 2 layers66.3 × 34.3 mmC64PSUv3, the printed circuit board in 3D

    C64PSUv3

    FabioNMI/C64PSU

    A low-cost, lightweight and very reliable power supply for the Commodore 64

    37 parts2
  • 2 layersRP2040 minimal, the printed circuit board in 3D

    RP2040 minimal

    ltherreraro/Wally

    Recolector de basura espacios cerrados usando esp32

    58 parts2
  • 2 layers127 × 117.5 mmDiy ert, the printed circuit board in 3D

    Diy ert

    CainPatel/diy-ert

    A $150 four-electrode earth resistivity meter (Wenner array): Arduino, AD620, ADS1115. Documented failure-first as an engineering log.

    44 parts1MIT

Questions

What parts does the RoboForce use?

3 parts, built around the ESP32-S3-WROOM-1-N8 and L298N. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the RoboForce KiCad files?

From the Khuzhin06/RoboForce repository on GitHub, at the commit this page was made from: the board is electronic scheme/PCB (печатные платы)/roboforce.kicad_pcb and its schematic electronic scheme/PCB (печатные платы)/roboforce.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the RoboForce design in my own project?

Its repository states no licence, so its author keeps all rights: ask Khuzhin06 before reusing the design.