[Криптография, Программирование, *nix, Автомобильные гаджеты] Тесла верит своим Богам! Так она находит путь

Автор Сообщение
news_bot ®

Стаж: 6 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
20-Май-2021 12:32

Как устроена навигация в автомобилях Tesla. В чем трудности поиска пути по земли русской?C 2018 года все счастливые обладатели Tesla в России получили обновление Европейской навигации в которой России уже не было, официально это объясняется поддержанием баланса веса карт и удалением регионов, не входящих в зону официального обслуживания.Как же использовать большой экран Tesla на полную силу? Видеть маршрут, какой процент батареи останется? С какой скоростью ехать? Можно ли сделать даунгрейд на старые карты?Тесла использует для построения маршрутов Valhalla -это механизм маршрутизации с открытым исходным кодом и сопутствующие библиотеки для использования с данными OpenStreetMap.
Valhalla в Tesla и Тесла в ВальхаллеВальхалла - это не только пантеон германских Богов и "чертог мёртвых ", но и отличный движок для построения маршрутов с дополнительными инструментами и модульной структурой, API на основе C++, с возможностью перекрестной компиляции различных фрагментов. И да, все это open source https://github.com/valhalla/valhalla.Работает на Linux и Mac OS и частично на Windows.Valhalla состоит из нескольких библиотек, каждая из которых отвечает за свою функцию. Расположение различных функций по библиотекам выглядит следующим образом:Midgard - базовые географические и геометрические алгоритмы для использования в различных других проектах.Baldr - базовые структуры данных для доступа и кэширования данных маршрута.Sif - библиотека, используемая при расчете стоимости узлов графа. Это может быть использовано в качестве входных данных для Loki и Thor.Skadi - библиотека и сервис для доступа к данным о высоте. Это может быть использовано в качестве входных данных для Mjolnir или в качестве автономной службы.Mjolnir - Инструменты для превращения открытых данных в части графа Valhalla.Loki - библиотека, используемая для поиска участка графа и корреляции входных местоположений с объектом внутри участка. Эта коррелированная сущность (ребро или вершина) может использоваться в качестве входных данных для Thor.Meili - библиотека, используемая для сопоставления карт.Thor - библиотека, используемая для создания пути через иерархию участков графа. Этот путь и атрибуция вдоль пути могут быть использованы в качестве входных данных для Odin.Odin - библиотека, используемая для создания маневров в пути. Этот набор информации о направлениях может использоваться в качестве входных данных для Tyr.Tyr - сервис, используемый для обработки http-запросов для маршрута, связывающегося со всеми другими API valhalla. Tyr форматирует вывод из Odin.Установка Если у Вас Ubuntu 20.04 отличный гайд по установке. Здесь можно скачать карты, выбрав нужные регионы. Для ЦФО РФ
curl -O http://download.geofabrik.de/russia/central-fed-district-latest.osm.pbf
Рендерим карты
valhalla_build_tiles -c ./conf/valhalla.json central-fed-district-latest.osm.pbf
Запускаем
valhalla_service ~/valhalla/scripts/conf/valhalla.json 2
Давайте найдем маршрут на автомобиле из Москвы в Подольск
curl http://localhost:8002/route \
--data '{"locations":[
              {"lat":55.7522,"lon":37.6156},
              {"lat":55.4242,"lon":37.5547}
           ],
         "costing":"auto"
        }' | jq '.'
В ответ получаем JSON с узловыми токами маневров.Файл навигации в ТеслаЯ обратился https://teesla.ru/ и мне передали файл с европейской навигацией из Тесла. Весит файл около 8гб и на мое удивление содержит вовсе не карты, а уже проложенные пути.Карты Tesla подгружает из Google, как и данные о зарядках, часть ограничений скорости. Данные в файле навигации представляют собой скомпилированные графы пути.Примерjson { "trip": { "language": "en-US", "status": 0, "units": "miles", "status_message": "Found route between points", "legs": [ { "shape": "yx{xmA_lybd@oClBqWxRqWhRsFlEeKlHaChBiGbFqGtEkWxRyQbN", "summary": { "max_lon": 19.461329, "max_lat": 41.321014, "time": 28, "length": 0.178, "min_lat": 41.318813, "min_lon": 19.45956 }, "maneuvers": [ { "travel_mode": "drive", "begin_shape_index": 0, "length": 0.154, "time": 24, "type": 1, "end_shape_index": 9, "instruction": "Drive northwest on Rruga Stefan Kaçulini.", "verbal_pre_transition_instruction": "Drive northwest on Rruga Stefan Kaçulini for 2 tenths of a mile.", "travel_type": "car", "street_names": [ "Rruga Stefan Kaçulini" ] }, { "travel_type": "car", "travel_mode": "drive", "verbal_pre_transition_instruction": "Continue on Rruga Glaukia for 100 feet. Then You will arrive at your destination.", "verbal_transition_alert_instruction": "Continue on Rruga Glaukia.", "length": 0.024, "instruction": "Continue on Rruga Glaukia.", "end_shape_index": 10, "type": 8, "time": 4, "verbal_multi_cue": true, "street_names": [ "Rruga Glaukia" ], "begin_shape_index": 9 }, { "travel_type": "car", "travel_mode": "drive", "begin_shape_index": 10, "time": 0, "type": 4, "end_shape_index": 10, "instruction": "You have arrived at your destination.", "length": 0, "verbal_transition_alert_instruction": "You will arrive at your destination.", "verbal_pre_transition_instruction": "You have arrived at your destination." } ] } ], "summary": { "max_lon": 19.461329, "max_lat": 41.321014, "time": 28, "length": 0.178, "min_lat": 41.318813, "min_lon": 19.45956 }, "locations": [ { "original_index": 0, "lon": 19.461336, "lat": 41.318817, "type": "break" }, { "original_index": 1, "lon": 19.459599, "lat": 41.320999, "type": "break" } ] } }Для адресов используются данные из карт TomtomПример импорта в файле карт tesla из tomtommport_db:schema tomtom_eur_2019_03_007:eur_schema_0329export_db:schema tomtom_eur_2019_03_007:allagash_eur_schema_0329_02_05_2019_a665978_10482EU-2019.20-10482valhalla_allagash_eur_schema_0329_02_05_2019_a665978_10482_02_05_2019_a665978_10482.pbf-tiles-1ee14c0.tarimport a665978export a665978build 1ee14c0 VE-3.0.0 common pro/dad pro/dun pro/eng pro/frf pro/ged pro/iti high/non pro/spe pro/swsaddress-eur-tomtom_eur_2019_03_007-19.mt./valhalla/build-filesync.shcbe7391137bb Fri May 3 23:42:49 UTC 2019import_db:schema tomtom_eur_2019_03_007:eur_schema_0329export_db:schema tomtom_eur_2019_03_007:allagash_eur_schema_0329_02_05_2019_a665978_10482supplementФайл карт в файловой системе Squashfs (.sfs)
Последние 2кб очень странные, в них и вся соль. Файлы подписаны ключом. Шифрование AES.При загрузке карт в машину, Тесла проверяет подпись поэтому модифицированные карты не удалось загрузить. P.S.Можно ли подписать карты? Найти ключ и порядок S-box? Тесла на Тегра хранят файл навигации на отдельной карте памяти в MCU. Тесла на Intel хранят файл навигации на в основной eMMC. С картой памяти все просто, разбираем половину торпеды, вытаскиваем из MCU, заливаем дамп с картами и вставляем обратно, с eMMC не так все однозначно. Если карты просто залить на чип eMMC, апдейтер в автомобиле с живыми сертификатами загрузит обновление и заменит их.От cебя готов предоставить приз целый день аренды самой заряженной Tesla model 3 Performance за способ генерации и загрузки карт в Tesla model 3 с РФ. Пишите в личку.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_kriptografija (Криптография), #_programmirovanie (Программирование), #_*nix, #_avtomobilnye_gadzhety (Автомобильные гаджеты), #_tesla, #_navigatsija (навигация), #_valhalla, #_kriptografija (
Криптография
)
, #_programmirovanie (
Программирование
)
, #_*nix, #_avtomobilnye_gadzhety (
Автомобильные гаджеты
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 01-Май 16:39
Часовой пояс: UTC + 5