Омни-робот для безопасного слежения за человеком: распознавание лиц на Ci20 + OpenCV
Компоненты и материалы
| Arduino Nano R3 (управление моторами) | ×1 |
| Creator Ci20 (MIPS, Linux, OpenCV) | ×1 |
| 2× L298N (дуальные драйверы, до 2А) | ×2 |
| 3× DC мотор-редуктор 12V 24 RPM (4 мм вал) | ×3 |
| Омни-колёса (3D-печать, ремикс Thingiverse) | ×3 |
| Веб-камера Microsoft LifeCam HD-3000 | ×1 |
| LiPo 3S 11.1V + пищалка низкого заряда | ×1 |
| DC-DC LM2596 (12V → 5V) | ×1 |
| Перемычки, пайка, 3D-печать корпуса | — |
Инструменты
- 3D-принтер
- Паяльник
Программное обеспечение
- OpenCV (на Ci20 под Linux)
О проекте
Робот-комплиментатор («Hunter Flatterer») для конкурса Hackster. Омни-колёса позволяют двигаться в любом направлении без поворота корпуса. Ci20 обрабатывает видео с камеры (OpenCV Haar Cascade), находит лицо, вычисляет смещение центра лица от центра кадра и посылает команды движения Arduino по Serial (USB).
Системная схема
- Питание: LiPo 3S → LM2596 (5V для Ci20, Arduino, логика) → L298N (12V на моторы).
- Ci20: OpenCV → детекция лица → расчёт векторов X, Y → Serial «F X Y» или «R time».
- Arduino Nano: парсит команды → кинематика 3 омни-колёс → PWM на 3 L298N.
Компенсация питания
LM2596 настроен на 5V. Проверка мультиметром под нагрузкой. LiPo Alarm пищит при падении напряжения ниже критического.
Подключение Arduino к L298N (×2 платы = 3 канала)
Следовать туториалу: Instructables L298N. Каждый мотор: 2 пина направления + 1 PWM (ENA/ENB). Всего 9 пинов Arduino.
3D-печатный корпус
- Основание (base) — крепление моторов, батареи, плат.
- Крышка (lid) — окно для Ci20, крепление камеры.
- Омни-колёса: ремикс Thingiverse с адаптером под 4-мм вал мотора.
- Сборка: эпоксидный клей / маскирующий скотч, болты M4 для моторов.
Настройка Ci20 + OpenCV
- Установить OpenCV по гайду (компиляция из исходников или пакеты).
- Скомпилировать FaceTracking:
g++ -I/usr/local/include/opencv -I/usr/local/include/opencv2 \
-L/usr/local/lib/ -g -o FaceTracking main.cpp \
-lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml \
-lopencv_video -lopencv_features2d -lopencv_calib3d \
-lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_stitching
Запуск: ./FaceTracking (камера должна быть в /dev/video0).
Алгоритм слежения (Ci20 C++ код)
- Захват кадра 480×240.
- Haar Cascade
haarcascade_frontalface_default.xml. - Если центр лица в средней трети кадра по X → команда
"F 50 50\n"(вперёд). - Иначе →
"0 0 \n"(стоп). - Serial порт
/dev/ttyUSB0, 9600 8N1.
Кинематика омни-колёс (Arduino)
Вектор (x, y) → полярные (magnitude, theta) → скорости трёх моторов (w1, w2, w3) по формулам для 120° расстановки. Нормировка до PWM 0–255. Команда «R ms» — вращение на месте заданное время.
Код Arduino (два файла: Main + MotorControl)
Main: парсинг Serial, автомат, вызов driveInDirection(x,y) или rotate(ms).
MotorControl: расчёт w1/w2/w3, ограничение ±150, маппинг в PWM, установка направления.
Челленджи для доработки
- Добавить динамик и звуковые файлы — воспроизводить комплименты при приближении.
- Если лицо не видно 1–2 мин → команда «R XX» (поиск по кругу).
Производственный процесс
- Продвинутое отслеживание теннисного мяча на Raspberry Pi с OpenCV
- Raspoulette: Прототип солнечной автономной системы двери курятника
- DIY робот в стиле Wall‑E на Raspberry Pi из коробки от CD
- Робот-будильник на колесах: умная мобильная система пробуждения на Raspberry Pi и Google Calendar
- Создание робота с компьютерным зрением и голосовым управлением на Windows 10 IoT Core
- ROS-робот: Управление навигацией из терминала на Raspberry Pi
- Simple Pi Robot — Сборка 2WD автономного ровера на Raspberry Pi
- Набор для создания робота с умной внутренней навигацией на базе Arduino
- Понимание линейных моторов: от электрической энергии к точному линейному движению
- Напитки-роботы: технологии, автоматизация и роль в напиточной индустрии