Pull to refresh
41
1

Senior Rendering Programmer

Send message

Лазерный тир, версия 3.0 на ESP32

Level of difficultyEasy
Reading time1 min
Reach and readers16K

Много-много лет назад делал я простенький лазерный тир с raspberry и камерой.

Технологии с тех пор сильно шагнули вперёд, и захотелось сделать новую, максимально дешёвую версию. В качестве основы взял ESP32 с камерой OV2640 — стоит около 5 евро на AliExpress. Серьёзно переживал за производительность, но её у этого малыша оказалось более чем достаточно. В нём два ядра: одно полностью отдано под обработку изображения, второе — под веб-сервер.

Идея следующая: 60 раз в секунду делаем снимок и ищем на нём пятно от лазера. Параллельно крутится веб-страничка, где на canvas рисуются мишень, попадания и очки. Поскольку полноценный OpenCV на ESP32 не запустить, всё сделано максимально просто. Камера выдаёт чёрно-белые JPEG-кадры, которые я распаковываю в пиксели и ищу те, что превышают порог яркости. Да, камера умеет работать и с RAW-форматами, но там есть нюанс — частота кадров в таком режиме ограничена примерно 15 FPS. А вот распаковывать JPEG «на лету» для ESP32 оказалось посильной задачей, и благодаря этому удалось выжать почти 60 FPS при разрешении 240×240. Для надёжности детектирования у камеры дополнительно задаётся смещение экспозиции.

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

Читать далее

Маленькие трюки DirectX и HLSL

Reading time9 min
Reach and readers22K
Привет, Хабр! Решил написать статью-заметку о небольших трюках, которые использую в своем скромном движке. Это скорее заметка самому-себе, и матёрые программисты лишь усмехнутся, но, думаю, новичкам она может пригодится.
Читать дальше →

Тир на Raspberry, версия 2.0

Reading time2 min
Reach and readers19K

Статья о дальнейшем улучшении прошлой версии тира geektimes.ru/post/255350
Пользоваться тиром дома быстро наскучило, поэтому, на радость коллегам, он был установлен на работе. Однако после непродолжительной эксплуатации был выявлен ряд недостатков:
  • «игрушечность» и непрактичность пистолета
  • необходимость кропотливой калибровки
  • пропуски выстрелов
  • перспективные искажения камеры и вследствие — значительные погрешности
  • система подсчета очков без округления

Все это было исправлено в новой версии.
Читать дальше →

Опыт домашнего марсоходостроения

Reading time6 min
Reach and readers25K

Привет Хабр! Я работаю RnD-художником в минском центре разработки Wargaming. А в свободное время даю волю своей инженерной фантазии. В этой статье я хочу поделиться своим опытом домашнего марсоходостроения.
Читать дальше →

Домашний тир на Raspberry

Reading time4 min
Reach and readers125K
Привет Хабр.
Люблю стрелковое оружие и стрельбу. Однако в домашних условий это плохое хобби. Нет, ну можно конечно купить травмат и изрешетить квартиру, но, думаю, домашние этого не оценят. Не желая мирится с этим, решил реализовать свой, в меру безопасный домашний тир. Если заинтересовал — добро пожаловать под кат.


Читать дальше →

Слежение за статистикой в WoT c помощью Arduino

Reading time7 min
Reach and readers52K


Привет, Хабр. Вспоминая свою инженерную молодость, захотелось снова поковыряться с железками. Возвращаться к PIC'акм и программингу на асме было откровенно лень (травматические детские воспоминания о ручной работе без сторонних библиотек с шиной i2c и HD44780), по этому полез в интернет и узнал о существовании платформы Arduino.

Беглый взгляд показал, что это как раз то, что мне нужно для удовлетворения ностальгических позывов. Неделю назад был приобретен набор. Мигать светодиодом бывшему инженегру электронщику с пятилетним стажем как-то не комильфо, по этому и родилась идея замерителя статистики в танках (каюсь, грешен...). Это мой своеобразный «Hello, Habr!» и «Hello, World!».
Читать дальше →

Information

Rating
1,663-rd
Location
Вильнюс, Литва, Литва
Registered
Activity