Експерти відтворили мінікарту з Need for Speed Underground 2 за допомогою 20-доларової мікросхеми

Більшість ностальгічних спогадів про відеоігри залишаються на екрані. Енді Валентайн, який займається розробкою автомобільних технологій під YouTube-каналом Garage Tinkering, вирішив, що цього недостатньо, і витратив близько місяця на те, щоб перетворити міні-карту з гри Need for Speed Underground 2 на справжній GPS-дисплей для свого Nissan 350Z. Результат працює на мікроконтролері, вартість якого приблизно дорівнює вартості повного бака бензину, і робить те, чого, здається, ще не досягав жоден аматорський проєкт: навігацію в реальному часі, стилізовану під вуличні перегони 2004 року, відтворену на обладнанні, яке ніколи не було призначене для таких завдань.

Використаний чіп – ESP32-P4, у парі з 3,4-дюймовим дисплеєм Waveshare з роздільною здатністю 800×800 пікселів. Ця комбінація є найпотужнішою в сімействі ESP32. І це важливо, оскільки все, що намагався створити Валентайн, вимагало виведення цього обладнання за межі його можливостей. Він розглядає міні-карту як частину більшого проєкту цифрової панелі для 350Z, повністю стилізованої під естетику Underground 2 з її неоном та HUD-інтерфейсом. Тому логічно було створити навігаційний дисплей у тому ж візуальному стилі, що й навколишні датчики.

Міні-карта Need for Speed Underground 2, реалізована на реальному GPS-пристрої
Відображення міні-карти Need for Speed Underground 2 на реальному GPS-пристрої.

Чому 20-доларовому чіпу знадобилося 236 ГБ картографічних даних

Основна проблема полягає в тому, що мікроконтролер не може відображати живу карту так, як це робить телефон або вбудована навігаційна система автомобіля. Для такої роботи з графікою в реальному часі бракує потужності, тому Валентайну довелося імітувати це, попередньо відрендеривши всю карту і подаючи чіпу лише невеликі фрагменти під час руху автомобіля. Він використав QGIS, програму для роботи з геопросторовими даними, щоб створити покриття для більш ніж половини дорожньої мережі Великої Британії на 16-му рівні масштабування, витягуючи дані про дороги та рельєф з Ordnance Survey, а також інформацію про цікаві місця, такі як аеропорти, морські порти, парковки та заправні станції, з Департаменту транспорту Великої Британії.

Заправні станції виявилися проблемою, оскільки жоден окремий британський набір даних не відстежує їх належним чином. Валентайн вирішив цю проблему, видобувши повний набір даних країни з OpenStreetMap за допомогою Python-скрипта, який шукав місця з тегом “amenity=fuel”, перетворюючи кожну знайдену точку на придатні для використання координати, незалежно від того, чи було це окремою точкою, чи окресленням будівлі.

Після підготовки вихідних даних QGIS розділила всю карту приблизно на 2,5 мільйона окремих плиток, і обсяги даних справді вражають. Обробка вихідних даних у плитки зайняла близько 35 годин. Переформатування всього в тип файлу, який ESP32 міг би читати, зайняло ще 18 годин. Копіювання готової бібліотеки обсягом 236 ГБ на SD-карту зайняло додаткові 22 години, що означає, що сама карта створювалася кілька днів, перш ніж почалося написання коду навігації.

Як змусити карту рухатися, не перевантажуючи чіп

Зберігання даних було лише половиною справи. ESP32 не може одночасно утримувати всі плитки в пам’яті, тому Валентайн побудував систему для динамічного завантаження нових плиток залежно від напрямку руху, оскільки на завантаження кожної плитки з SD-карти витрачається близько десятої частки секунди. Завантаження всього одразу було неможливим для такого скромного обладнання.

“Якщо ми не можемо зробити це на цьому, то, відверто кажучи, це неможливо зробити на SP32”, – сказав він.

Його перша робоча версія обертала всю карту відповідно до напрямку, в якому рухався автомобіль, точно відтворюючи міні-карту в грі Underground 2. Це також призвело до сильних збоїв у роботі дисплея, оскільки обертання великої сітки плиток у реальному часі було занадто складним для чіпа. Рішенням стало зміна логіки: тепер карта залишається орієнтованою на північ, використовуючи GPS-модуль NEO-6M для позиціонування, тоді як іконка автомобіля, що обертається, показує напрямок руху. Це невелика відмінність від вигляду оригінальної гри, але це дозволило повернути плавність, яка була необхідна проєкту, і все це працює на C++ коді, побудованому навколо графічної бібліотеки LVGL.

Тестування в реальних умовах пройшло, чесно кажучи, якнайкраще: Валентайн був точно визначений на парковці при першому запуску, пристрій точно відстежував його рух по кільцевій розв’язці та крутому повороту, а також успішно позначив найближчу заправну станцію, коли він проїжджав повз неї. Збірка ще не повністю встановлена в 350Z, і Валентайн планує найближчими тижнями інтегрувати її разом з іншою частиною своєї панелі, натхненної Underground 2, з 3D-друкованими корпусами та кастомними платами.

Що робить це справді цікавим, так це не просто новизна виходу ігрового HUD в реальний світ. Це нагадування про те, скільки невикористаних можливостей приховано в дешевому вбудованому обладнанні, коли хтось відмовляється прийняти твердження “чіп не може це обробити”.

Нікому не потрібна міні-карта з Need for Speed, щоб вчасно дістатися на роботу, але це максимально крутий мод, якщо ви виросли за кермом Fairlady зеленого та фіолетового кольорів.

Детальний вигляд реалізованої міні-карти
Детальний вигляд реалізованої міні-карти Need for Speed Underground 2.

Source: www.motorbiscuit.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *