Zonkod logo Zonkod
←
Technologie

Simple en surface. Profond en dessous.

Zonkod est conçu pour être simple, rapide et universel. Mais il y a beaucoup de technologie derrière cela. Allons-y !

Zonkod technology overview

La Terre divisée en exactement 10 000 surfaces d'une précision similaire: une idée approximative du fonctionnement de Zonkod.

L'inspiration

An old GPS device on a car dashboard at sunset
Quinze minutes, sans succès. Le problème était bien réel.

Il y a quelques années, lors d'un voyage, j'ai tenté d'entrer les coordonnées géographiques d'un restaurant dans le système de navigation d'une voiture haut de gamme. Malgré mon diplôme d'ingénieur et mon doctorat, j'ai peiné pendant quinze minutes sans y parvenir.

À ce moment-là, j’ai compris qu’il y avait un vrai problème non résolu. Heureusement, j’ai quand même réussi à dîner ce soir-là ;)

La première idée : un numéro de téléphone géographique

A rotary dial whose digits beam down to a place on Earth
Composez un numéro de lieu, comme on compose un numéro de téléphone.

Voilà LA solution : un numéro de téléphone géographique : facile à composer, universel, maîtrisé par tous sur Terre.

Sauf qu'il est extrêmement difficile de diviser une sphère en exactement 100 000 000 000 000 surfaces identiques. En fait, c'est impossible.

La deuxième idée : la précision plutôt que la perfection

A caliper measuring a small globe, pin at the measured point
La Terre, mesurée comme une pièce de machine.

Puis vint la deuxième grande idée : oublier les surfaces identiques et se concentrer sur ce qui compte vraiment : la précision.

Prenons un emplacement quelconque. Encodons sa position dans un nombre, puis décodons ce nombre pour obtenir un nouvel emplacement. La seule chose qui compte, c’est que ces deux emplacements ne soient pas trop éloignés. La précision du système entier est la distance maximale entre eux dans le pire des cas. C’est la seule chose importante !

Il devait également être simple et reconnaissable au premier coup d'œil, d'où la précision unique et le ZK: initial.

Ni trigonométrie. Ni virgule flottante. Jamais.

A glowing integer grid with the ZK pin on an exact intersection
Exact par construction : la goupille s'arrête sur un croisement à nombre entier.

Une autre contrainte réside dans la facilité d'encodage et de décodage, ainsi que dans la reproductibilité totale. Chaque système (du minuscule dispositif IoT embarqué au téléphone mobile, en passant par l'ordinateur de bureau ou l'ordinateur central) doit fournir systématiquement le même résultat.

Cependant, la précision des ordinateurs est limitée. Pour les calculs scientifiques et techniques, ils utilisent des nombres à virgule flottante. Ces derniers sont également indispensables pour la trigonométrie et d'autres fonctions complexes. Malheureusement, il existe de nombreux systèmes, langages et bibliothèques différents, présentant chacun de subtiles différences. De plus, les systèmes à virgule flottante sont soit lents, soit coûteux, soit les deux.

Donc : pas de trigonométrie, pas de virgule flottante, uniquement de l'arithmétique entière, car c'est la seule et unique solution déterministe.

Une seule norme. Pas de VHS contre Betamax.

La conception d'un tel système a été longue, mais elle a finalement abouti. Le résultat, disponible aujourd'hui, est Zonkod. Un brevet est en cours de dépôt pour cette technologie. L'un de ses principaux objectifs est d'établir une norme en garantissant l'existence d'un seul ZK:, mettant ainsi fin aux conflits de formats.

Une précision quasi parfaite

On peut calculer la meilleure précision théorique possible pour une longueur de nombre donnée. Pour 14 chiffres, elle est de 1,5969 m. Le codage Zonkod est quasi parfait : sa précision est de 1,5988 m, soit 99,9 % de l’optimum. Partout. C’est important car cela maximise l’utilité de chaque chiffre.

1.5988 m
précision réelle
1.5969 m
optimum théorique
99.9%
de l’optimum

Vérifié sur toutes les plateformes

Devices from phone to retro computer sharing the same ZK pin
Le même résultat sur chaque machine, jusqu'au dernier chiffre.

Zonkod a été implémenté dans de nombreux langages différents, notamment C, JavaScript, WASM, FORTRAN et Python. Ils donnent tous exactement les mêmes résultats, jusqu’au dernier chiffre.

Il a même été porté en COBOL, un langage conçu en 1959 pour la comptabilité d'entreprise, qui n'a jamais été destiné à gérer des calculs géodésiques. Et pourtant, il fonctionne. Si Zonkod fonctionne en COBOL, il fonctionne partout.

Minuscule, rapide, partout

Arduino Nano running Zonkod
Un petit Arduino Nano exécutant Zonkod

La vitesse et la compacité sont également importantes.

Sur un Arduino Nano (8 bits ATmega328P, 16 MHz), un programme complet d'encodage + décodage bare-metal (y compris les E/S et un PRNG) prend 11 956 octets de ROM et 192 octets de RAM.

Il effectue un aller-retour complet en 1,48 ms en moyenne. Sur un téléphone mobile ou un ordinateur de bureau, on descend à la nanoseconde.

Au final

Zonkod transforme un problème géométrique difficile en une simple opération entière. Le résultat est un code de localisation assez compact pour un microcontrôleur 8 bits, assez rapide pour fonctionner partout, assez précis pour un usage quotidien, et identique sur tous les appareils de la Terre. Un nombre, une norme, un ZK:.