OpenStreetMap

luziferius's Diary

Recent diary entries

Ausgangslage

Unser Kenwood-Autoradio im Wohnmobil mit integrierter Navigation (Kenwood DNX450TR, Doppel-DIN-Format) hat das letzte Kartenupdate 2020 erhalten. Die Karten sind nun schon über 3 Jahre alt und zeigen häufig veraltete Geschwindigkeitsbegrenzungen, und es fehlen auch mal Umgehungsstraßen, Kreisverkehre, etc. Kurz, ein Update steht an.

Die Navigationsfunktion im Gerät ist von Garmin, welches als OEM-Partner von Kenwood die Navigationssoftware bereitstellt. Allerdings ist auf der Garmin-Webseite für OEM-Geräte das DNX450TR nicht mehr gelistet. Es gibt also anscheinend keine Kartenupdates vom Hersteller mehr.

Wir wollen auch während der Fahrt nicht vom Mobilfunknetz abhängig sein, entsprechend sind online-Navigationslösungen (Google Maps, etc) keine Alternative. Zusätzlich hat das Gerät keine gute Smartphone-Integration, daher funktioniert die Nutzung von Offline-Navigation auf dem Android-Telefon nicht zusammen mit dem DAB-Radio. Man kann zwar die Sprachausgabe des Telefons auf dem Autoradio ausgeben, hat dann aber kein Radio. Bei Ausgabe über den Telefonlautsprecher regelt natürlich das Radio nicht ab. Also auch keine zufriedenstellende Lösung.

Das teure Radio entsorgen (~ 1000€ Neupreis, wegen des LKW-Modus in der Navigationssoftware (TR = “truck” im Modellnamen)) und durch z.B. ein Gerät auf Android-Basis ersetzen ist ebenfalls nicht zufriedenstellend.

OpenStreetMap für das Kenwood/Garmin Navi?

Es gibt einige Anbieter von Garmin-kompatiblen Kartensätzen, die Liste aus dem OSM Wiki ist gut gefüllt: https://wiki.openstreetmap.org/wiki/OSM_Map_On_Garmin/Download

Aber

Die meisten der gelisteten Quellen sind optimiert für Hiking, MBT, Ski, Radfahren, Wandern, etc. Rendering ist optimiert für Garmin Handhelds mit Displays, die nur 16/64 Farben darstellen können, etc… Manche haben keine Indexsuche, entsprechend keine Adresseingabe, die aber für eine Autonavigation zwingend funktionieren muss. Die meisten angebotenen Karten haben schlicht einen eher inkompatiblen Hauptfokus.

Die Jagd nach einem geeigneten Kartensatz

Anforderungen sind

  1. Muss überhaupt mit dem Kenwood-Radio funktionieren. Es war zu Beginn nicht klar, ob die Garmin-Software nur von Kenwood signierte/verschlüsselte Kartendaten lesen kann, oder ob sie mit beliebigen Karten im Garmin-Format funktioniert.
  2. Navigierbar, Beachtung von Gewichts-/Breiten-/Höhenbeschränkungen
  3. Funktionierende Adresssuche
  4. Kein Hochkontrast-Stil für Displays mit 160x320x4bit. Diese sehen auf dem Radiobildschirm extrem überladen und unübersichtlich aus.
  5. Keine Höhenlinien. Die überfrachten die Anzeige der eh schon dichten Karten weiter
  6. Nach Möglichkeit keine Anzeige von Dingen, die für die PKW/LKW-Navigation unwichtig sind. Keine Anzeige von individuellen Bäumen, die in manchen Innenstädten erfasst sind. Keine Fuß- und Radwege, Treppen. Anzeige diverser landuse-Tags ist auch nicht unbedingt nötig.
  7. Übersichtliche Anzeige von Autobahnen und Bundesstraßen auf niedrigen Zoomstufen

Der beste Treffer bislang sind die Karten von freizeitkarte-osm.de. Das Rendering ist angenehm dezent, im Stile des offiziellen OSM Tileset. Keine Gebäudeumrisse in knalligem Signalrot, Felder in Grellgelb, etc. Spoiler: Es ist allerdings schon fast zu dezent. Insbesondere im niedrigen Zoombereich werden von der Navigationssoftware keine Straßen angezeigt. Somit kann man bei der Routenübersicht nach Adresseingabe nicht sinnvoll aus den vom Navi generierten Alternativrouten wählen. Man sieht schlicht die Straßen nicht.

OSM-Karten auf das Navi übertragen

Ein erster Versuch, die Navi eine aus OSM-Daten erstellte Karte laden zu lassen schlug fehl. Einfach die Karten als Datei /Garmin/gmapsupp.img auf der SD-Karte abzulegen führte nicht zum Erfolg.

Ein zweiter Ansatz führte zum gewünschten Ergebnis: Die Micro-SD vom Gerät initialisieren lassen (In der Navigationssoftware das Kartenupdate im Einstellungsmenü auswählen), und dann mittels der Software Garmin Express mit der OEM-Karte befüllen lassen. Danach die von Garmin-Express erstellte Kartendatei /Garmin/gmapsupp.img durch eine OSM-Karte ersetzen. Die Navigationsoftware lud die OSM-Karte anstatt der Originalkarte.

Ein erster Erfolg. Das Gerät ist in der Lage, mit offenen Tools erstellte Garmin-Karten zu laden und zu verwenden. Es gibt keine Signaturprüfung, die nur vom OEM zugelassene Karten erlaubt.

Analyse der OEM-Karte

Die OEM-Karte (Im Gerät unter “myMaps” angezeigt als “OEM CN Europe NTU 2020 ALL North” und “OEM CN Europe NTU 2020 ALL South”) liegt in 2 Teilen vor, Nordeuropa unter /Garmin/gmapsupp.img, und Südeuropa unter /Garmin/Map/gmapsupp.img. Diese Zuordnung wurde mit Hilfe des gimginfo-Tools gefunden, welche die genannten Namen in den Dateiheadern gefunden hat.

Garmin-Express legt zusätzlich noch eine Reihe anderer Dateien ab, wie z.B. die Spurassistenz-Bilder. All diese Informationen werden in der XML-Datei /Garmin/GarminDevice.xml abgelegt:

Hier ein Auszug. Interessanterweise wird Nordeuropa als Typ “PreProgrammedMaps” registriert, Südeuropa weiter unten in der Datei als “SupplementalMaps”. Außerdem spezifiziert die Datei 2 Dateien des Typs “PreProgrammedMaps”: “gmapsupp”, und “gmapsup1”, allerdings schreibt Garmin Express nur gmapsupp.img.

  <MassStorageMode>
    <DataType>
      <Name>PreProgrammedMaps</Name>
      <File>
        <Specification>
          <Identifier>IMG</Identifier>
        </Specification>
        <Location>
          <Path>Garmin</Path>
          <BaseName>gmapsupp</BaseName>
          <FileExtension>img</FileExtension>
          <Extensions>
            <dtlx:DataTypeLocationExtension>
              <dtlx:ExternalPath>Garmin/</dtlx:ExternalPath>
            </dtlx:DataTypeLocationExtension>
          </Extensions>
        </Location>
        <TransferDirection>InputOutput</TransferDirection>
      </File>
    </DataType>

Diese XML-Datei ist recht gut lesbar und erweiterbar. Man kann im DataType PreProgrammedMaps weitere Dateien hinzufügen, indem man einfach weitere <File>-Blöcke hinzufügt.

Weitere Karten beziehen und registrieren

Ich habe mir Karten für 14 Länder in Mittel- und Westeuropa in der Version vom Dezember 2023 von freizeitkarte-osm.de geladen, und diese in 4 Pakete nahe 4GiB (dem FAT32-Dateigrößenlimit) gepackt.

Zur Berechnung der Packung in möglichst wenige Dateien unter 4GiB diente das Python-Paket binpacking. Das eigentliche Kombinieren der Einzelkarten anhand der berechneten Packung übernahm dann die CLI-Version von GMapTool

Damit ergaben sich 4 Dateien, benannt gmapsup1.img, gmapsup2.img, gmapsup3.img, und gmapsup4.img.

Diese in der /Garmin/GarminDevice.xml, in der Sektion PreProgrammedMaps abgelegt und auf die Micro-SD kopiert. Ausschnitt:

      <File>
        <Specification>
          <Identifier>IMG</Identifier>
        </Specification>
        <Location>
          <Path>Garmin</Path>
          <BaseName>gmapsup2</BaseName>
          <FileExtension>img</FileExtension>
          <Extensions>
            <dtlx:DataTypeLocationExtension>
              <dtlx:ExternalPath>Garmin/</dtlx:ExternalPath>
            </dtlx:DataTypeLocationExtension>
          </Extensions>
        </Location>
        <TransferDirection>InputOutput</TransferDirection>
      </File>
      <File>
        <Specification>
          <Identifier>IMG</Identifier>
        </Specification>
        <Location>
          <Path>Garmin</Path>
          <BaseName>gmapsup3</BaseName>
          <FileExtension>img</FileExtension>
          <Extensions>
            <dtlx:DataTypeLocationExtension>
              <dtlx:ExternalPath>Garmin/</dtlx:ExternalPath>
            </dtlx:DataTypeLocationExtension>
          </Extensions>
        </Location>
        <TransferDirection>InputOutput</TransferDirection>
      </File>

Karte einsetzen

Nach dem Ablegen der Kartendateien auf der Micro-SD, und erweitern der GarminDevice.xml um die 4 neuen Kartendateien werden die OSM-Karten nach dem Einsetzen der Micro-SD vom Navigationssystem erkannt und benutzt. Man kann nun im Menü myMaps zwischen der Originalkarte und den OpenStreetMap-Karten wechseln.

Kartenauswahl

Das Resultat soweit

Kartendarstellung auf regulären Zoom-Stufen soweit akzeptabel. Könnte klarer sein, aber erst einmal nicht schlecht:
Kartendarstellung

Auf Übersichtskarten gibt es keine Übersicht:
Es sollte ein Straßennetz erkennbar sein

Ausblick/Nötige Verbesserungen

Das Standard-Rendering der Freizeitkarte-Karten ist nicht für reine Autonavigation optimiert. Es besteht Verbesserungsbedarf:

  • Auf niedrigen Zoomstufen werden keine Straßen angezeigt. Man kann sich also am Bildschirm keine visuelle Übersicht über das Autobahn-/Bundesstraßennetz verschaffen.
  • Auf hohen Zoomstufen werden unnötige Details angezeigt, wie z.B. Rad- und Fußwege

Als nächsten Schritt dann herausfinden, wie man den Stil anpassen kann. Der Stil soll wohl in TYP-Dateien festgelegt sein. Also schauen, wie man den Stil aus den Karten extrahiert, anpasst, und einfügt.