

RoboForce
Тогда вы не зря зашли к нам, мы постараемся максимально подробно и быстро рассказать о нашем пути создания робота на 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
2ESP32-S3-WROOM-1-N8
SMD,25.5x18mm-40℃~+85℃ -98.2dBm 2.4GHz 20.5dBm 355mA 3V~3.6V 95mA Bluetooth5.0 ESP32-S3 Chip On-board PCB Antenna UART、SPI、I2C、I2S、USB SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesL298N
Multiwatt-15-25℃~+130℃ 2 2A 4.5V~7V Bipolar Driver Overcurrent Protection、Over temperature protection Yes Multiwatt-15 Stepper Motor Driver ROHSHGSEMIStepper Motor Driver
README
README.mdRoboForce
Всем привет! Давно хотели собрать своего робота? Не слышали про ROS? Не знаете с чего начать?
Тогда вы не зря зашли к нам, мы постараемся максимально подробно и быстро рассказать о нашем пути создания робота на ROS2 Jazzy и esp32,по этим материалам вы с легкостью сможете повторить этот проект.
Ну а если вы хотите с головой погрузится в мир увлекательной робототехники и разобраться во всех тонкостях, то проходите курс на stepik - https://stepik.org/course/221157/syllabus Все материалы, используемые в этой статье были взяты из этого курса и мы лишь делимся опытом создания робота и проблемами с которыми столкнулись мы.
Проблемы при сборки робота - это неотъемлемая часть процесса, поэтому мы постарались описать решение всех проблем с которыми мы сталкивались в процессе сборки и программирования робота.
Также много интересной, полезной и актуальной информации можете найти в нашем TG-канале https://t.me/RoboForc
Содержание:
II Модуль - Программировоние ESP32
III Модуль - Настройка и программирование верхнего уровня
I Модуль - Сборка робота
1. Подготовка материалов и инструментов
Необходимые инструменты:
- Лазерный резак – для резки фанеры
- Дрель и сверла (2–3мм) – для отверстий
- Набор отверток с разными насадками
- Паяльник (40 Вт) + припой (POS-60) – для электроники
- Мультиметр – проверка цепей
- Наждачка - для обработки краёв деталей после резки.
Материалы и комплектующие:
СТОИМОСТЬ КОМПОНЕНТОВ ДЛЯ СБОРКИ РОБОТА:
За относительно небольшой бюджет можно также собрать достаточно надежного и производительного робота. Суммируя все цены комплектующих из I модуля 1 пункта, мы получаем итоговую стоимость нашей модели - 22.600 рублей (на момент 06.04.2025).
2. Изготовление корпуса
Шаг 1: Резка деталей
Загрузите DXF-файлы в станок лазерной резки.
Основные детали:
- Основание (нижняя платформа)
- Средняя платформа
- Крышка (верхняя платформа)
- 2 опоры для OMNI колеса
- 5 стоек по 60 мм
- 4 стойки по 130 мм После резки обработайте края наждачкой, чтобы избежать заусенцев.
Шаг 2: 3D-печать
Загрузите stl-файлы в станок 3D-печати.
Основные детали:
- 2 колеса
- Стойки для моторчиков
Шаг 3: Сборка каркаса (первый слой)
- Установка мотор редукторов
На валы мотор-редукторов установите колёса с помощью муфт (2 шт) и винтов М3 (2 шт), закрепите их стопорными винтами.
Найдите на нижней платформе посадочные места под моторы.
Зафиксируйте каждый мотор винтами M3 х 50 мм (4 шт) и гаек М3 (4 шт) с помощью напечатанных стоек (обратите внимание на то, чтобы провода от энкодеров были выведены к центру платформы)
Убедитесь, что при вращении колёса не задевают за край платформы и установлены ровно.
Уделите внимание ровной установке колес, это обеспечит качественное движение без лишних корректировок.
- Установка OMNI колеса
Найдите на нижней платформе посадочные места под вырезанные опоры OMNI колеса.
Установите их с помощью винтов М3 х 20 (4 шт) и гаек М3 (4 шт)
Закрепите OMNI колесо винтами М3 (2 шт). Убедитесь, что при вращении колёсо не задевает за край платформы.
- Установка драйвера моторов
Найдите в центре нижней платформы посадочные места под драйвер
Установите драйвер с помощью винтов М3 (2шт) и гаек М3 (2шт)
Шаг 4: Сборка каркаса (средний слой)
- Пайка шилда для ESP
Шилд – плата с контактными площадками.
Установите на ESP штыревые гнезда, затем вставьте конструкцию в печатную плату (со стороны пайки)Установите штыревые штекеры в средних с конструкцией линиях на плате. Аккуратно переверните плату, поддерживая все компоненты.
Включите паяльник и дождитесь, пока инструмент разогреется до 300-350°C.
Нанесите припой на крайние контакты (используйте флюс для лучшего растекания припоя)
Необходимо спаять все крайние контакты попарно (контакт гнезда с контактом штекера)
Проведите аналогичную работу со всеми оставшимися контактами (ВАЖНО: два спаянных контакты не должны быть соединены с соседними.
После окончания пайки необходимо провести проверку: А. Визуальный осмотр:
- Нет ли перемычек между контактами (проверка на отсутствие короткого замыкания)
Все ли дорожки пропаяны (особенно у штыревых разъёмов).
Б. Тест мультиметром: - Прозвоните линии 5V и 3.3V на КЗ.
- Проверьте контакты GPIO на обрыв.
-
Установка шилда на платформу Найдите на средней платформе посадочное место для шилда Вставьте снизу в платформу винты М2 (4шт) и накрутите на них гайки М2 (4шт). Данная конструкция не позволит передать находящиеся под шилдом провода
Установите на винты собранный шилд и закрепите его сверху гайками М2 (4шт) -
Установка блока питания Найдите на средней платформе посадочное место для блока питания (средняя часть платформы) Закрепите блок с помощью винтов М3 (2 шт) и гаек М3 (2шт) (ВАЖНО: провода должны выходить в центральную часть платформы)
-
Монтаж: макетную и монтажную схему можно подробно изучить в папке Electronic scheme Электрическая схема:
Пайка проводов, преобразователей, RGB ленты, драйвера, энкодеров, микроконтроллера.
Залудите контакты перед пайкой, а затем работайте по тому же принципу, как и при пайке шилда
После окончания пайки необходимо провести проверку (визуальный осмотр и тест мультиметром) (ВАЖНО: проверьте, нет ли пережатых проводов)
Шаг 5: Соединение нижней и средней платформ
Соберите стойки из фанеры: 5 штук по 60 мм, 4 штуки по 130 мм (для этого понадобятся гайки М3 18 шт)
Соедините нижнюю и верхнюю платформы с помощью стоек по 60 мм, винтов М3 (10шт)
Шаг 6: Тестовый запуск
- Подключите питание.
- Проверьте работу моторов, питание и загрузку ESP.
- Проанализируйте, движится ли робот в заданном вами направлении или нет. ВАЖНО: есть вероятность, что робот поедет в обратную сторону, так как у него 2 шнура, которые можно перепутать местами. В таком случае необходимо поменять местами номера бортов в коде и загрузить его. Теперь робот поедет в заданном вами направлении.
- Измерьте количество тиков и запишите их в программу.
[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.
Также установим еще пару пакетов:
sudo apt install python3-pippip3 install setuptoolssudo apt install python3-colcon-common-extensions3. Настройка необходимых пакетов
После установки ros2 в домашнеq директории нужно создать папку где будут хранится все наши пакеты для ros2.
mkdir ros2_wscd ros2_wsmkdir srccd-colcon buildпосле создания нашего рабочего пространства создадим пакет, который будет считывать сообщения из топика /cmd_vel
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, а затем ввести команду:
ls -l /dev/serial/by-path/после необходимо скопировать путь и заменить его в коде. сохраняем файл. Делаем скрипт исполняемым:
chmod +x robot_controller_node.pyДалее находим и редактируем файл setup.py в этом пакете (нужно добавить 3-ю строчку):
entry_points={
'console_scripts': [
'robot_controller_node = robot_control.robot_controller_node:main',
],
},Затем пересоберем наш пакет и установим все зависимости:
cd ~/ros2_ws
colcon build
source install/setup.bashИ запускаем наш пакет:
ros2 run robot_control robot_controller_nodeПроверяем список топиков в другом терминале, должен появиться топик /cmd_vel
source /opt/ros/jazzy/setup.bash
ros2 topic listЕсли топик появился, то все прошло успешно и мы можем управлять нашим роботом с клавиатуры!
Для этого установим пакет:
sudo apt install ros-jazzy-teleop-twist-keyboardИ запускаем пакет:
ros2 run teleop_twist_keyboard teleop_twist_keyboardТеперь робот должен ехать! Поздравляю мы проделали большой путь и запустили робота!
Parts
3| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | - | Package_TO_SOT_THT:TO-220-3_Vertical | -1 |
| 1 | ESP32-S3-WROOM-1 | RF_Module:ESP32-S3-WROOM-1 | U1 |
| 1 | L298N | Package_TO_SOT_THT:TO-220-15_P2.54x2.54mm_StaggerOdd_Lead4.58mm_Vertical | U2 |
Similar boards
- 4 layers139.6 × 129.4 mm

- 2 layers209.9 × 135.9 mm

- 2 layers80 × 90.5 mm

- 2 layers76.1 × 85 mm

- 4 layers85 × 54 mm

PECDR
pedro-ibs/trekking
Desenvolvimento de um robô rádio-controlado/autônomo da moralidade “tracker”
68 parts9 - 2 layers66.3 × 34.3 mm

C64PSUv3
FabioNMI/C64PSU
A low-cost, lightweight and very reliable power supply for the Commodore 64
37 parts2 - 2 layers

- 2 layers127 × 117.5 mm

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.