Три года безуспешных попыток извлечь данные из боулинг-машины

Классический пинсеттер — это полностью механизированный агрегат, функционально напоминающий автомат заряжания в бронетехнике. При попадании шара в кегли срабатывает оптический датчик (к слову, реагирующий на любое перекрытие луча). Следом опускается измерительная рамка с отверстиями, положение которых верифицируется фотодиодами или механическими щупами.

Полученная телеметрия передается на серверный узел — «ветерана» Dell OptiPlex 3020 образца 2014 года. Мы продолжаем массово закупать эти надежные машины для нашей сети из 12 клубов Brooklyn Bowl.

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

В конечном итоге мы решили пойти путем реверс-инжиниринга модуля оцифровки сигналов, что фактически означает пересборку узла управления машиной. Это решение вряд ли можно назвать изящным или высокотехнологичным, однако оно демонстрирует стабильную работоспособность.

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

Так выглядит техническая зона позади дорожек:

Краткий видеообзор принципа работы пинсеттера:

Базовая архитектура процесса:

— Дорожка, покрытая специализированным маслом для скольжения шара.

— Зона установки кеглей в конце дорожки.

— Удар шаром приводит к падению или смещению кеглей.

— После того как шар проходит через оптический барьер, машина делает паузу, опускает измерительную рамку и определяет конфигурацию оставшихся кеглей.

— Выполняется попытка «добить» оставшиеся кегли.

— Рамка повторно сканирует площадку для финального подсчета.

— Специальный механизм сметает сбитые кегли, отправляя их в систему возврата.

— В тыльной части система автозагрузки поднимает кегли вверх, откуда они поступают в «обойму» пинсеттера.

— Рамка опускает кегли в нужные позиции для следующего раунда.

В машине постоянно циркулируют 23 кегли: пока одни стоят на дорожке, другие подготавливаются, а 3 дополнительные — это страховой резерв на случай штатных заминок. Это число не случайно — оно выведено эмпирически как оптимум для бесперебойной работы механизма.

Большинство боулинг-центров используют механику Brunswick, а Dell 3020 выступает в роли административного сервера управления (Front Desk).

Вот такой
Вот такой
Это экраны
Это экраны

Машина транслирует сигналы датчиков матрицы наружу по кабелю. Однако сама она не оцифровывает данные: этим занимается промежуточный блок NextGen, преобразующий сигналы в логические события игры.

Два десятилетия назад концепции вроде IoT или промышленного Ethernet не были распространены. Поэтому блоки NextGen связаны цепочкой через проприетарный последовательный интерфейс (токовая петля). Данные передаются в «сыром» hex-формате, документация отсутствует как класс. Сервер постоянно опрашивает узлы, обновляет состояние матча и выводит счет на мониторы.

Это приходит в сервер
Вот такие данные поступают на сервер

Основные препятствия:

— Закрытая экосистема: Производители вроде Brunswick и AMF изначально проектировали оборудование как «черный ящик», вынуждая покупать лицензии на любую интеграцию стороннего софта (мониторинг в баре, бонусные программы и т.д.).

— Технологический багаж: В основе лежат устаревшие базы данных FoxPro с постоянными блокировками записи и Sybase SQL Anywhere, требующая специфических драйверов ODBC, а учетные данные «зашиты» непосредственно в исполняемые файлы.

— Отсутствие событийной модели: Система не умеет передавать данные по запросу (push). Она постоянно спамит статусами, периодически корректируя предыдущие сообщения (например, сначала заявляя о падении 2 кеглей, а через мгновение — об их полном отсутствии). Синхронизация этих корректировок — настоящая головоломка.

Мы пробовали:

— Напрямую обращаться к БД сервера.

— Парсить сигналы NextGen.

— Внедрить компьютерное зрение для контроля дорожки.

— Пытались переписать логику работы NextGen.

Методы вроде OCR через HDMI-сплиттер, эмуляция принтера или сетевой сниффинг признаны малоэффективными. В итоге только отдельный аппаратный стенд для обработки «сырых» сигналов показал приемлемый результат. Вот первый и второй ролики с демонстрацией процесса.

Будем рады свежим идеям и профессиональным комментариям. Если вы знаете, как решить эту задачу изящнее, пишите в комментариях или на адрес rakhmeev@brooklynbowl.ru. Такое оборудование установлено в сотнях клубов страны, так что это потенциально масштабируемое решение для всей нашей сети.

 

Источник

Читайте также