Suite

Preuve d'une partie de la formule Haversine?


J'essaie d'étudier comment trouver la distance entre deux points si leurs latitudes et longitudes sont données.

J'ai une question sur la preuve d'une partie de la formule haversine donnée au Math Forum. Il dit que la longueur de corde AD, deux points à la même latitude, lat1, sur une sphère de rayon 1, est

2*sin(dlon/2)*cos(lat1)

mais je ne pouvais pas comprendre comment ils l'avaient obtenu. Pourriez-vous m'aider?


Le rayon, r, du petit cercle joignant tous les points à la latitude, est

r = R cos

où R est le rayon de la sphère. Cela simplifie à

r = cos

si nous supposons une "sphère unitaire" (R = 1) pour plus de commodité.

--------------------- A/D | r / | / | / | / |a / |x / |i / |s / | /R | / | / | / | / | / | / (vue "de côté") | / | / | / |/ φ rayon équatorial --------------------------------------------- ---

La longueur de corde d'une ligne droite, AD, joignant deux points sur la même latitude est

AD = 2 r sin dλ/2

où dλ est la différence de longitude de A et D. Ainsi

AD = 2 R cos sin dλ/2

ou alors

AD = 2 cos φ sin dλ/2

si R = 1

A-----------------D  | /  | /  | /  | /r  | /  dλ /  /  / (vue "de haut")

Discussion : Formule Haversine/Alt

Le formule haversine est une équation importante en navigation, donnant les distances entre deux points sur une sphère à partir de leurs longitudes et latitudes. C'est un cas particulier d'une formule plus générale en trigonométrie sphérique, la loi des fouines, reliant les côtés et les angles de "triangles" sphériques. Ces noms découlent du fait qu'ils sont habituellement écrits en fonction de la fonction haversine, définie par :

Pour deux points sur une sphère (de rayon R) avec les latitudes φ1 et2, séparation en latitude Δφ = φ12, et la séparation en longitude , la distance entre les deux points (le long d'un grand cercle de la sphère, comme d'habitude pour la géométrie sphérique) est lié à leurs emplacements par la formule :

Laisser h désigne haversin(/R), donné ci-dessus. On peut alors résoudre pour soit en appliquant simplement l'inverse de haversine (si disponible) ou en utilisant la fonction arcsine (sinus inverse) :

La formule de haversine pourrait bien sûr être exprimée entièrement en termes de fonctions trigonométriques plus courantes telles que sinus et cosinus. Mais à l'époque d'avant la calculatrice numérique, l'utilisation de tableaux imprimés détaillés pour l'inversion de haversine/haversine inverse et son logarithme (pour faciliter les multiplications) a épargné aux navigateurs les sinus quadratiques, le calcul des racines carrées, etc., un processus à la fois ardu et susceptible de exacerber les petites erreurs (voir aussi versine).

Le reste de cette section devrait être introduit par une discussion sur les raisons pour lesquelles, même avec des ordinateurs, les hérissons restent populaires. Comme je ne comprends pas vraiment bien moi-même, j'espère que quelqu'un d'autre l'écrira. La section pourrait comprendre entre autres les extraits suivants que j'ai collectés à partir de l'article original :

Comme décrit ci-dessous, une formule similaire peut également être écrite en termes de cosinus (parfois appelé le loi des cosinus, à ne pas confondre avec la loi des cosinus pour la géométrie plane) au lieu de haversin, mais souffre de problèmes de précision numérique pour le cas courant des petites distances/angles, ce qui le rend impropre à une utilisation sérieuse.

Les formules pourraient également être écrites en fonction de la fonction versine (deux fois la haversine). Historiquement, le haversine avait peut-être un léger avantage en ce que son maximum est un, de sorte que les tables logarithmiques de ses valeurs pouvaient se terminer à zéro. De nos jours, la forme haversine est également pratique en ce sens qu'elle n'a pas de coefficient devant la fonction sin 2.)

Bien qu'elle évite de nombreux problèmes associés à d'autres systèmes, la formule haversine a ses propres faiblesses. Il faut veiller à ce que h ne dépasse pas 1 en raison d'une erreur en virgule flottante ( n'est réel que pour h de 0 à 1). Mais h ne s'approche que de 1 pour antipodes points (ceux sur les côtés diamétralement opposés de la sphère) - dans cette région, des erreurs numériques relativement importantes ont tendance à se produire dans la formule lorsqu'une précision finie est utilisée. Parce que est alors grand (approchant πR, la moitié de la circonférence) une petite erreur n'est souvent pas une préoccupation majeure dans ce cas inhabituel. (La formule ci-dessus est parfois écrite en termes de fonction arctangente, mais cela souffre de problèmes numériques similaires près de h = 1.)

Il convient de noter que chacune de ces formules ne peut être qu'une approximation lorsqu'elle est appliquée à la Terre, car la planète n'est pas une sphère parfaite : son rayon R varie de 6356,78 km aux pôles à 6378,14 km à l'équateur. Il y a de petites corrections, typiquement de l'ordre de 0,1% (en supposant que la moyenne géométrique R = 6367,45 km est utilisé partout), à cause de cette légère ellipticité de la planète.

Étant donné une sphère unité, un "triangle" sur la surface de la sphère est défini par les grands cercles reliant trois points vous, v, et w sur la sphère. Si les longueurs de ces trois côtés sont une (de vous à v), b (de vous à w), et c (de v à w), et l'angle du coin opposé c est C, alors la loi de haversines énonce :

Triangle sphérique résolu par

Comme il s'agit d'une sphère unité, les longueurs une, b, et c sont simplement égaux aux angles (en radians) sous-tendus par ces côtés depuis le centre de la sphère (pour une sphère non unitaire, ce sont les distances divisées par le rayon).

Afin d'obtenir la formule de Haversine de la section précédente de cette loi, on considère simplement le cas particulier où vous est le pôle nord, tandis que v et w sont les deux points dont la séparation est à déterminer. Dans ce cas, une et b sont π/2 - φ1,2 (c'est-à-dire 90° − latitude), C est la séparation en longitude , et c est le désiré /R. En notant que sin(π/2 - φ) = cos(φ), la formule de haversine suit immédiatement.

Une preuve de la loi des haversines peut être construite comme suit. Laisser vous, v, et w désignent les vecteurs unitaires du centre de la sphère à ces coins du triangle. Ensuite, les longueurs (angles) des côtés sont données par :

Pour obtenir l'angle C, nous avons besoin des vecteurs tangents tune et tb à vous le long des directions des côtés une et b, respectivement. Par exemple, le vecteur tangent tune est le vecteur unitaire perpendiculaire à vous dans le vous-v plan, dont la direction est donnée par la composante de v perpendiculaire à vous. Ça signifie:

où pour le dénominateur nous avons utilisé l'identité pythagoricienne sin 2 (une) = 1 − cos 2 (une). De la même manière,

Ensuite, l'angle C est donné par:

qui conduit au (sphérique) loi des cosinus, aussi appelé le règle du cosinus pour les côtés:

Comme mentionné ci-dessus, cette formule est une façon mal conditionnée de résoudre pour c dans le cas des petits triangles. Au lieu de cela, nous substituons l'identité que cos(θ) = 1 − 2 haversin(&theta), et utilisons également l'identité d'addition cos(uneb) = cos(une) cos(b) + péché(une) péché(b), pour obtenir la loi des haversines, ci-dessus.


Calcul de distance entre deux points géographiques (recette Python) par Bartek Górny

Implémentation de la formule Haversine pour calculer la distance entre les points d'une sphère. Compte tenu des coordonnées géographiques, renvoie la distance en kilomètres.

Renvoie une distance orthodromique, en supposant que la Terre est une sphère exacte. Non recommandé pour la planification de voyage) Peut être utile, par ex. pour recalculer les données GPS.

7 commentaires

Merci pour la belle recette. Je viens de rechercher de telles routines pour calculer la distance à partir des fichiers .kmz de Google Maps, et j'ai utilisé vos routines dans ma recette : http://code.activestate.com/recipes/576782/

comme est un mot-clé et ne peut pas être utilisé dans recalculer_coordonnées() liste des paramètres.

Merci pour l'avertissement - cela a fonctionné pour moi car j'utilise toujours Python 2.5.

(la méthode habituelle consiste à utiliser un trait de soulignement de fin (as_) car un trait de soulignement de début (_as) signifie "privé")

"c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))" peut être simplifié en "c = 2 * math.asin(math.sqrt(a))"

Désolé les gars, je suis un débutant en python mais pas en programmation en général. Je connais presque toutes les expressions de base et progresse bien.

D'accord du haut. J'ai conçu un ballon météo avec un système de suivi GPS à part entière, mais j'ai trouvé un petit défaut dans les mathématiques de l'antenne omnidirectionnelle. Ma solution consiste à utiliser une antenne Yagi mais cela soulève un autre problème. Comment allez-vous le viser ? Ma deuxième solution utilise un viseur robotique pour le viser.

Étant donné que je suis tellement désireux de le faire moi-même et que je n'ai pas non plus le budget pour acheter un système comme celui-ci. Donc avec un peu de plaisir. faire moi-même.

Jusqu'ici tout va bien. Tout s'est déroulé comme prévu jusqu'à présent. les mathématiques, la conception, le budget et une partie de la programmation mathématique python également.

J'ai fait une équation simple pour faire l'objectif vertical: Début

Longitude = input ("Entrez la longitude de l'antenne GPS : ")

Alatitude = input ("Entrez la latitude de l'antenne GPS : ")

Blongitude = input("Entrez la longitude du Ballon GPS : ")

Blatitude = input("Entrez la latitude du ballon GPS : ")

aone = Blatitude - Alatitude

os = Blongitude - Longitude

cône = aone * 2 + os * 2 / 2

Baltitude = input("Entrez la hauteur du ballon GPS : ")

Aaltitude = input ("Entrez la hauteur de l'antenne GPS : ")

distance = cône * 2 + Baltitude * 2 / 2

Caltitude = Baltitude - Aaltitude

print "Le degré d'angle vertical est :"

print "La distance entre le Ballon GPS et l'Antenne GPS est :"

print "Les degrés de l'angle horizontal sont :"print ddone Finir

Remarque : le résultat final et les données saisies seront automatisés

Il ne me restait plus qu'à trouver ou faire une équation pour trier la latitude et la longitude pour trouver la distance à utiliser dans la première équation et le relèvement pour viser l'antenne du robot.

Mais je ne peux pas simplement comprendre cette équation ici. Curieusement, je me suis trompé sur l'entrée de données, le type d'entrée (je devrais le savoir maintenant) et l'équation réelle moi-même.

Je viens d'avoir 15 ans (déc) alors excusez les erreurs que je fais ou mon manque de compréhension mais j'ai fait des recherches mais je ne peux pas comprendre complètement.

Quelqu'un pourrait-il m'expliquer ce code plus en détail et comment l'implémenter dans ma conception?


Abstrait

Le système d'identification automatique (AIS) est utilisé pour identifier les navires dans la navigation maritime. Actuellement, il est utilisé à diverses fins commerciales. Cependant, l'abondance et le manque de qualité des données AIS rendent difficile la valorisation de leur valeur. Par conséquent, il est important de comprendre à la fois les limites des données AIS et les opportunités pour maximiser leur valeur, mais celles-ci n'ont pas été clairement énoncées dans la littérature existante. Cette étude vise à aider les chercheurs et les praticiens à comprendre les données AIS en identifiant à la fois les promesses et les dangers des données AIS. Nous identifions les différentes applications et limites des données AIS dans la littérature et nous nous appuyons sur elles dans une étude séquentielle à conception mixte. Nous identifions d'abord les promesses et les périls qui existent dans la littérature. Nous analysons ensuite quantitativement les données AIS du port d'Amsterdam pour détecter le bruit et trouver les dangers que les chercheurs et les praticiens pourraient rencontrer. Nos résultats intègrent des conclusions quantitatives avec des informations qualitatives obtenues en interrogeant des experts du domaine. Cette étude étend la littérature en considérant les multiples limitations des données AIS dans différents domaines en même temps. Nos résultats montrent que la quantité de bruit dans les données AIS dépend de facteurs tels que l'équipement utilisé, les facteurs externes, les humains, le trafic dense, etc. La contribution de notre article consiste à combiner et à dresser une liste complète des promesses et des dangers de données AIS. Par conséquent, cette étude aide les chercheurs et les praticiens à (i) identifier les sources de bruit, (ii) réduire le bruit dans les données AIS et (iii) l'utiliser pour le bénéfice de leurs recherches ou l'optimisation de leurs opérations.


Preuve d'une partie de la formule Haversine? - Systèmes d'information géographique

Assez évident en effet : Lat/long ne sont pas des coordonnées sur un plan, mais sur une sphère. En bref, plus vous vous rapprochez des pôles, plus la distance entre deux points sur le même est courte. Je veux dire la longitude.

Si ma mémoire est bonne, ils veulent la formule Haversine pour une assez bonne approximation à travers le monde. J'ai passé trop de temps à travailler avec les API de carte :-(

. et d'ailleurs, dans quoi sont les unités ? Si lat/long sont en degrés, alors . tant pis.

Nous avons eu un cas intéressant d'incapacité totale à comprendre le domaine problématique ici une fois, où nous avons dû implémenter un convertisseur de devises. Le taux de change spécifique que vous deviez utiliser dépendait de l'achat ou de la vente de la devise. Mais le clown qui l'a mis en œuvre pensait que le facteur de conversion (de l'euro au dollar par exemple) pour vendre par ex. l'Euro était l'inverse du facteur de conversion (du même, par exemple Euros en Dollars) pour acheter les Euros. M'a regardé complètement vide lorsque je l'ai interrogé et lui a demandé pourquoi il n'avait pas recherché les spécifications avant de commencer le travail.

d'accord, c'est un whoopsy mathématique (compréhensible), mais pas vraiment un code majeur wtf et il était apparemment assez facile de traquer le bogue et de le corriger

Le principal problème est que le développeur n'a pas pris 5 minutes pour rechercher comment implémenter (ou simplement trouver un exemple fonctionnel) de la formule Haversine pour la distance entre les latLngs.

Un autre vote pour TRWTF étant: ne pas connaître les havresines.

À l'époque où je faisais du développement Web, j'ai dû implémenter la refonte de certaines pages qui pouvaient calculer la distance entre l'emplacement du visiteur (si autorisé) et une succursale spécifiée par la latitude et la longitude. Heureusement pour moi, j'étais censé ré-implémenter la fonctionnalité existante sur le nouveau design brillant, et non implémenter une fonctionnalité qui fonctionne correctement.

Je n'ai jamais vraiment pensé si nous faisions cela ou non. Il s'avère que nous le faisons correctement, étant donné que quiconque souhaite réellement s'y rendre partira du Royaume-Uni et presque certainement à quelques kilomètres, la différence n'est probablement pas très significative. Surtout pas par rapport à la différence entre notre calcul à vol d'oiseau et la distance réelle par route dont le client potentiel se souciera.

Wow. Comme d'autres l'ont mentionné, le vrai WTF n'utilise pas une forme d'algorithme basé sur des ellipsoïdes. Les équations de Pythag de la Terre plate vont être très fausses dans de nombreuses circonstances. Haversine est une fine approximation de la réalité pour des choses qui n'ont pas besoin d'un degré énorme de précision. Si cette application indique simplement aux utilisateurs à quelle distance ils se trouvent d'une station météorologique, haversine sera assez bon (vous serez à des dizaines de mètres de la réalité dans la plupart des cas). Si vous avez besoin de plus de précision, il existe des algorithmes (toujours) plus complexes qui prennent en compte la vraie (r) nature non sphéroïdale de la terre.

@ray10k Vous pourriez vouloir pour dire la longitude, mais si vous le faites, vous vous tromperez.

Deux points distants de cinq degrés (de latitude) sur la même longitude (par exemple 3°03′30″E) seront (sous réserve que la Terre n'est pas vraiment un vrai ellipsoïde) à la même distance. Vous devriez dire "même latitude", car les lignes de latitude ont le même nombre de degrés de longitude, mais progressivement moins milles en allant vers le nord.

@CarrieVS Au Royaume-Uni, l'erreur de magnitude de la composante est/ouest en utilisant Pythag au lieu de Haversine (etc.) dépasse 40 %. (C'est-à-dire que la distance calculée est supérieure de plus de 40 % à la distance réelle, dans le sens strictement est/ouest.)

Addenda 2016-12-06 08:17: C'est-à-dire que les points sur la même longitude - séparés par 5 degrés de latitude - seront à la même distance les uns des autres, peu importe où ils se trouvent.

Oui, j'ai regardé après et j'ai effectivement mélangé la longitude et la latitude.

C'est plus grand que je ne l'avais deviné, mais nos distances étaient très souvent plus courtes que la distance sur route d'au moins cette proportion. En fait, une surestimation de 40 % aurait probablement amélioré la précision au moins aussi souvent qu'autrement.

et pas une seule mention de la distance du grand cercle (orthodromique. )

Effet Dunning-Kruger, je pense. Celui qui a jamais écrit la solution de Pythagore n'était pas simplement ignorant de la façon de calculer les distances sur une Terre ronde, ils ignoraient leur propre ignorance. Peut-être que la leçon à retenir est que vous devriez toujours en savoir plus sur le domaine problématique, même si tu penses le savoir.

@Steve_The_Cynic et @CarrieVS , si vos coordonnées sont la latitude et la longitude, alors calculer naïvement la distance pythagoricienne entre eux sera une grande surestimation. Si toutefois ce sont des coordonnées du British National Grid, la distance pythagoricienne sera assez précise. À condition que les coordonnées d'entrée soient exactes - prendre une latitude et une longitude GPS et les convertir naïvement en grille nationale entraînera une erreur de dizaines de mètres car le GPS et la grille nationale utilisent des formes différentes pour la Terre, ce qui implique des coordonnées lat-long différentes pour le même point.

Oui, les projections cartographiques sont un terrier de lapin.

Pas de nom, mais c'est celui que vous obtenez avec la formule haversine.

harvesine ? L = R * arcos(sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon1 - lon2))

En tant que personne qui travaille avec le GPS et des choses similaires tous les jours, je peux vous dire que si vous entendez le terme "Geoid Ondulation" au travail, vous êtes sur le point de passer une très mauvaise journée.

Cependant, je ne considère pas vraiment cela comme un vrai WTF. Le programmeur pensait avoir vu le problème et n'en savait pas grand-chose. la terre, ou la physique, ou la cartographie, ou la géométrie.

Honnêtement, je pouvais voir BEAUCOUP de gens faire la même erreur, et en fait je suis presque sûr que les gens autour de mon travail l'ont fait dans le passé. Nous avons tous passé une si grande partie de notre enfance à travailler dans de jolis systèmes de coordonnées plats qu'il est vraiment ennuyeux de se rendre compte que l'univers ne fonctionne pas si souvent de cette façon.

"Cependant, je ne considère pas vraiment cela comme un vrai WTF."

C'est un vrai WTF. ce n'est tout simplement pas un programmation WTF.

Si je ne vois pas certaines fonctions Trig dans le calcul, je suppose que ce n'est pas correct.

https://upload.wikimedia.org/wikipedia/commons/thumb/8/80/Bearing_and_azimuth_along_the_geodesic.png/220px-Bearing_and_azimuth_along_the_geodesic.png Ou pourquoi certains vivent encore sur une Terre plate. -)

Le problème était le manque d'exigences spécifiques. Si vous ne savez pas comment fonctionne la conversion de devises, il est tout à fait raisonnable de supposer qu'elle fonctionne comme n'importe quelle autre conversion.

Voici mon truc, cependant - ce serait trivial à attraper dans les tests. Le fait que cela figurait dans le code et qu'il était utilisé implique qu'il n'a jamais été réellement testé.

Calculer des distances précises sur une surface ellipsoïde est assez difficile : https://en.wikipedia.org/wiki/Geodesics_on_an_ellipsoid

Il y a quelques années, j'ai essayé de convertir les coordonnées lan/lat en coordonnées x/y/z-cartésiennes et inversement. Je n'ai pas réussi à trouver une solution non itérative. Quoi qu'il en soit, l'approximation géométrique a convergé rapidement et semblait stable.

Le principal problème est que les valeurs lan/lat désignent l'angle normal de la surface, plutôt qu'un angle mesuré à partir d'un plan de coupe.

Selon la précision que vous devez atteindre, la formule haversine est définitivement hors de discussion. Celui-ci devrait donner de meilleurs résultats : https://en.wikipedia.org/wiki/Vincenty%27s_formulae

Néanmoins : le code montré dans l'article ne fait que blesser la zone de mon cerveau qui doit gérer les mathématiques de base.

C'est vrai, ce serait certainement facile à attraper dans les tests, si vous disposez d'une suite de tests solide de quelque nature que ce soit. Et cela serait probablement détecté par tout autre ingénieur qui l'aurait examiné. Cependant, si personne ne regardait de près et que personne ne testait des cas terriblement proches des pôles (tout le monde était probablement en Amérique du Nord de toute façon)

J'accepterai que TRWTF est que personne n'a examiné le code d'assez près pour l'attraper avant qu'il ne soit mis en production, ou que quelqu'un ait suffisamment fait confiance à cette personne pour qu'elle implémente une partie centrale/importante d'un système sans qu'elle sache du tout ce qu'elle faisaient.

Une sorte de "fun-fact" concernant les implications pratiques des ellipsoïdes par rapport aux sphéroïdes : https://en.wikipedia.org/wiki/Qibla#North_American_interpretations

Fin du premier paragraphe : (tout le monde était probablement dans NA de toute façon) alors cela produirait probablement des résultats au moins assez proches des résultats réels. Tant que vous restez sur un continent (ce n'est pas l'Asie), vous n'obtiendrez pas de résultats à plus de quelques kilomètres de distance, et si vous ne considérez que la distance jusqu'au système NWS le plus proche, quelques kilomètres plus ne fait probablement pas une énorme différence.

Pourquoi est-ce mal parce que ce n'est que ça : mal. Je ne sais rien sur le calcul correct de cette distance, mais la formule présentée n'affiche des détails que sur une seule extrémité de la ligne à 2 points, ce qui ne peut tout simplement pas suffire pour calculer cette distance. Le résultat de cette formule n'a probablement aucun sens.

Peut-être qu'il travaillait pour CityWide Bank : http://www.nbc.com/saturday-night-live/video/first-citiwide-bank-change-ii/n9703

"Comment gagnons-nous de l'argent ? Simple. Volume."

Cette formule fonctionne si toutes les valeurs sont locales, mais si vous regardez dans le monde entier, il y a BEAUCOUP de problèmes. Le plus important que je puisse voir est que les valeurs lat/long peuvent être négatives, mais cela les traite toutes comme positives, de sorte que les points situés des côtés opposés de la planète seraient calculés les uns à côté des autres.

"n'importe quel nombre au carré est positif, donc vous n'avez pas besoin d'abs()" .. Oh, ouais ? Et si la latitude était une valeur complexe ? Quoi alors, hein ?

Mettez cela dans la même catégorie que les calculs de temps. Ce n'est pas facile ! Les choses deviennent encore plus complexes lorsque vous souhaitez calculer des lignes d'intersection à la surface de la terre. Deux lignes droites peuvent même se croiser DEUX FOIS si vous les avez au bon endroit. Un programme sur lequel j'ai travaillé (Navigation en avion) ​​avait besoin de savoir si quelque chose se croisait ou non. Mon premier test utilisait des carrés simples basés sur Lon & Lat. J'ai pensé que si cela se recoupait (le cas courant était que ce n'était pas le cas), je prendrais la grande route et calculerais le véritable endroit en utilisant toutes sortes de coordonnées sphériques et similaires. Sinon, sautez-le. J'ai supposé que les lignes ne se croisaient pas deux fois, ce qui était pour la plupart correct dans les cas auxquels je m'apprêtais.

Les plus gros problèmes surviennent lorsque vous passez des coordonnées géocentriques (mesurant à partir du centre de la terre) à/depuis les coordonnées géodésiques (vers le bas des "points" vers le centre de la terre et aplatissez les objets sphéroïdes). Cela devient très déroutant lorsque vous passez d'un endroit à un autre et que les choses changent. Le GPS n'est pas merveilleux.

Même un groupe de physiciens du CERN s'est trompé. Vous vous souvenez des déclarations excitées au sujet des neutrinos voyageant plus vite que la lumière ? Rapidement rétracté après qu'un lycéen ait souligné que les neutrinos ont tendance à creuser dans la terre au lieu de prendre les routes de surface. :-)

Remarque - Ne dites pas "Amérique du Nord" lorsque vous voulez dire "USA". En supposant que les 48 inférieurs soient plats par rapport à une surface sphéroïde, cela ne vous donnera peut-être pas la déviation nécessaire, mais lorsque vous vous dirigez vers le nord, cela compte vraiment. Parce qu'au Canada, cela varie assez considérablement. Peut-être pas grand-chose quand on se contente de longer le 49e parallèle, mais une fois qu'on s'est dirigé vers le nord sur quelques centaines de kilomètres l'erreur devient grande (et bien, étant donné que le territoire s'étend jusqu'au pôle Nord. ).

C'est probablement aussi un gros problème en Alaska.

Euh, ce n'est même pas correct, les degrés ne se convertissent pas en miles de cette façon, et vous êtes sur une sphère, pas un avion. Un degré de latitude est un nombre constant de miles, mais un degré de longitude est de 25 000/360 seulement à l'équateur. Vous devez utiliser une formule un peu plus sophistiquée pour faire des distances réelles sur une sphère et convertir des degrés en distance.

D'après ce dont je me souviens, le neutrino super-luminal était en fait une connexion de fibre optique défectueuse entraînant un signal dégradé. Rien à voir avec les distances géographiques.

@Smartass Le calcul utilise la différence de latitude (latdiff) et la différence de longitude (londiff). Les deux points de terminaison sont donc utilisés.

@Herby Sur une sphère, deux "lignes droites" se coupent toujours deux fois (si vous les continuez assez longtemps). C'est parce que l'analogue d'une ligne droite (chemin le plus court) sur une sphère est un grand cercle (cercle avec le même centre et le même rayon que la sphère), et deux d'entre eux se coupent à des points antipodaux.

J'ai travaillé avec un logiciel sévèrement WTFy (cela vaut un article à part entière, quand je peux suffisamment réprimer les souvenirs) qui a été écrit par une société de logiciels au Canada, et a fait beaucoup d'hypothèses basées sur ces latitudes méridionales. Partout au Royaume-Uni, tout était vraiment étrangement écrasé. En Écosse, la distorsion était si importante que les cartes étaient tracées de manière trapézoïdale et ressemblaient à des cartes de navigation par satellite "head up".

Est-ce que londiff s'enroule à +/-180 degrés ? Sinon, la ligne de date internationale sera beaucoup plus amusante que les pôles.

La ligne de date internationale ne suit pas strictement le méridien 180°. Il y a des détours dans le détroit de Béring (donc la ligne passe entre la Sibérie et l'Alaska), vers l'est autour des Kiribati (pour éviter que l'IDL traverse le pays) et vers l'est autour de certaines îles appartenant à la Nouvelle-Zélande (même raison). Le problème avec l'emballage se produirait à travers le méridien, quel que soit l'endroit où se trouve l'IDL (heureusement, il n'y a pas beaucoup de terrain autour). Aussi, si londiff est à plus de 180°, il faut le remplacer par 360° - londiff pour éviter de faire le tour.

Au niveau de la vente en gros, les taux de conversion à terme et inverse sont si proches que, à de nombreuses fins, les clients peuvent utiliser et utilisent effectivement l'inverse du taux d'achat et 34 en tant que taux de vente ou l'inverse du taux #34sell" rate comme taux "buy", ou le taux "mid" comme taux d'achat ou de vente.

J'ai fourni des logiciels de trésorerie pendant plusieurs années, et bien que notre logiciel prenne en charge les taux d'achat, de vente et moyens, pratiquement tous nos clients n'ont utilisé qu'un seul taux.

(Tous les clients utilisent toujours l'inverse du taux de transaction pour certains rapports et projections, mais c'est une exigence différente)

(tout le monde était probablement en Amérique du Nord de toute façon)

Non-sequitur. Certaines parties de l'Amérique du Nord sont aussi loin au nord que le Royaume-Uni, qui a déjà été mentionné comme ayant une différence de 40% par rapport à un calcul de la Terre plate. Certaines parties de l'Amérique du Nord sont encore plus au nord, faisant du programmeur une cible appropriée pour une blague polonaise.

Les choses deviennent encore plus complexes lorsque vous souhaitez calculer des lignes d'intersection à la surface de la terre.

Il me semble qu'une ligne devrait croiser la surface de la terre deux fois, ou peut-être plus selon la façon dont elle traverse les montagnes et les vallées.

Le plaisir arrive avec la Nouvelle-Zélande ou Taïwan qui se déplacent assez rapidement sur les plaques tectoniques pour faire la différence lorsque vous calculez la distance qui les sépare d'une année à l'autre.

De mémoire de logiciel de navigation pour les levés pétroliers, leurs références cartographiques contiennent également une variable temporelle.

il suffirait de donner mauvaise réputation à la livraison par drone GPS car il dépose les colis dans la piscine du voisin plutôt que dans l'allée avant.

Pour le Royaume-Uni ou tout autre pays de taille similaire, vous pouvez obtenir des résultats dans une partie sur mille en convertissant de lat/long à Universal Transverse Mercator (ou la projection Ordnance Survey GB pour le Royaume-Uni), en obtenant les résultats en mètres projetés, puis en utilisant Pythagore là-dessus. C'est effectivement l'équivalent de mesurer avec une règle sur une carte topographique.

Eh bien, cette conversion ne donne pas un poids égal à la latitude et à la longitude (à moins que vous ne soyez près de l'équateur).

Lorsque je travaillais pour un entrepreneur de la défense aux États-Unis, j'ai eu une fois cette dispute avec mon patron pendant plusieurs jours. Elle insistait sur le fait que sa formule était juste. Je n'ai jamais réussi à la convaincre, mais elle a finalement cédé et m'a laissé utiliser ma propre formule pour calculer la distance. Pire encore, nous testions la validité d'un système de défense antimissile et cette formule était utilisée pour tester la taille et la forme de l'ellipse d'erreur (c'est-à-dire la zone dans laquelle il y avait xx % de chance que le missile frappe). Ils utilisent la formule euclidienne pour les tests depuis plus de 3 ans. :(

En tant que personne atteinte du syndrome d'Asperger, c'est l'une des choses qui m'énervent le plus chez les neurotypiques : leur insistance pour que les règles sociales (rang, protocole, etc.) l'emportent sur les règles des mathématiques.

Robert, c'est tout à fait politiquement incorrect : tu n'as pas du tout saisi le concept de démocratie. Si la majorité décide que 2+2=5, alors 2+2=5. Point final.


Robot GPS autonome alimenté par Android

Les smartphones sont aujourd'hui devenus extrêmement puissants avec des processeurs multicœurs, des capacités de stockage importantes et des fonctionnalités très riches. Android peut donc être utilisé comme une plate-forme économique et facile pour être le cerveau du contrôle de l'appareil robotique. Le but de ces systèmes est de fournir de puissantes plates-formes de calcul Android couplées à une architecture matérielle de robot plus simple. Les systèmes existants utilisent des modules Bluetooth ou Wifi pour contrôler à distance le robot. Le projet proposé porte sur la fabrication d'un appareil robotique GPS autonome avec évitement d'obstacles à l'aide d'un smartphone Android.

3.3 Estimation du coût et du temps du projet

3.5 Matrice d'attribution des tâches et des responsabilités

4.1 Diagramme d'architecture logicielle

4.2 Style architectural et justification

4.3 Document de spécification des exigences logicielles

5.2 Langages de programmation utilisés pour la mise en œuvre

Liste des tableaux

3.5 Matrice d'affectation et de responsabilité

6.4 Scénarios de test unitaires et de système intégré

Liste des figures

3.7 Tableau chronologique du projet

4.1 Diagramme d'architecture logicielle

4.4.1.1 Application de miroir de téléphone

4.4.1.4 Activité de suivi GPS en temps réel

4.4.1.5 Activité de détection Canny Edge

5.1.4 Gradient d'intensité de l'image

5.1.5 Suppression non maximale

Chapitre 1 Introduction

1.1 Contexte

Android alimente des centaines de millions d'appareils mobiles dans plus de 190 pays à travers le monde. De grandes capacités de stockage, des fonctions plus riches et des vitesses de traitement plus rapides sont quelques-unes des fonctionnalités fournies par le smartphone Android, cela aussi presque à moindre coût. La communication entre les smartphones Android est désormais devenue beaucoup plus facile, tout cela grâce à l'environnement de développement Android qui offre une option plus simple aux ingénieurs logiciels, en utilisant Java et en n'ayant pas besoin d'apprendre de nouveaux langages de programmation. Les appareils Android offrent également un moyen simple de gérer les composants matériels. Dans un intérêt pour la robotique, Android fournit des interfaces de communication pour Bluetooth, Wi-Fi, USB et GPS. En tant que développeurs de logiciels, nous sommes intéressés par le développement d'applications via le développement basé sur des tests. Ce projet proposait de développer un robot GPS autonome utilisant Android. Ce robot autonome peut être utilisé pour de nombreuses applications telles que le robot de livraison, le bot de surveillance, etc. Un système de livraison pour livrer en toute sécurité des colis en 30 minutes à l'aide de drones est en cours de développement par Amazon qui sera bientôt fourni aux clients d'ici avril 2017. Ce n'est pas concerne uniquement la rentabilité de la livraison des produits, mais conduit également à une livraison plus rapide des produits aux clients. La surveillance également connue sous le nom d'observation fermée peut être mise en œuvre dans des zones reculées où il y a un besoin de sécurité. Il s'agit d'une observation attentive d'une entité particulière sans mettre personne sur le risque. Ce projet est conceptualisé sur des idées similaires.

1.2 Définition du problème

Les systèmes existants utilisent des modules GPS, IR et Bluetooth séparés connectés à la carte Arduino. Cependant, de tels systèmes posent certains problèmes. La gamme du module Bluetooth, la faible précision du module GPS séparé, les multiples capteurs IR, la capacité de traitement inférieure d'Arduino et, surtout, le coût séparé de tous ensemble est très élevé. Une autre méthode qui fonctionne sur des lignes similaires consiste à utiliser le module Wifi ESP8266 au lieu de Bluetooth. Cela peut augmenter la plage de contrôle, mais le robot n'est pas autonome. En outre, l'ajout de ce module entraîne une consommation d'énergie élevée, tandis que l'appareil Android peut lui-même servir de source d'alimentation pour le

Notre système propose de contrôler un robot avec des appareils mobiles Android en utilisant le GPS et le Wi-Fi. Les coordonnées GPS transmises au robot et au robot/véhicule suivent sa trajectoire. Le wifi sera utilisé pour un contrôle rapproché. Le système implique 2 appareils Android et ils communiquent entre eux à l'aide de la communication directe Wifi. Le robot aura la détection d'obstacles et suivra son propre chemin en fonction des coordonnées GPS qui lui sont transmises. Les commandes seront données au robot à l'aide de la carte Arduino. Il y aura une communication smartphone-Arduino à l'aide d'un câble USB OTG.

Le projet présente un mécanisme de contrôle d'un robot avec des appareils mobiles Android utilisant le GPS et le Wi-Fi. À l'aide du système de positionnement global (GPS), les coordonnées peuvent être transmises au robot, c'est-à-dire que les positions de départ et d'arrivée peuvent être données en tant qu'instruction au dispositif du robot. Le Wi-Fi sera utilisé pour envoyer des commandes au robot, en cas de contrôle rapproché. Grâce au GPS, le robot peut également mesurer la distance parcourue. Le système global se compose de 2 téléphones mobiles basés sur le système d'exploitation Android et d'un robot. Nous pouvons créer une application qui peut fonctionner sous le système d'exploitation Android et contrôler un robot mobile avec un appareil Android fixé dessus. Les deux appareils Android communiquent entre eux via Wi-Fi direct. Wi-Fi Direct vous permet de connecter deux appareils sans fil sans point d'accès. Il est similaire au Bluetooth avec une portée et des performances beaucoup plus étendues. Le robot mobile doit être capable de se déplacer aussi bien dans un environnement interne qu'externe sans collision avec des obstacles. D'autres types de mouvements sont identifiés à l'aide d'une technique de clustering agglomératif. Le téléphone intelligent Android fixé sur le drone communique avec l'Arduino à l'aide d'un câble USB OTG.

1.4 Organisation du rapport

Les chapitres suivants ont été inclus dans le rapport :

  1. Introduction : Le chapitre justifie et met en évidence le problème posé, définit le sujet et explique l'objectif ainsi que la portée du travail présenté.
  1. Revue de la littérature : Une évaluation critique des travaux antérieurs publiés sur le sujet d'intérêt a été présentée. Diverses caractéristiques requises dans le projet étudié à partir de divers articles publiés précédemment.

    Plan de gestion de projet : La section décrit comment le processus de développement du projet a été planifié et géré.

  1. Analyse de faisabilité : L'analyse de faisabilité du projet en termes de coût, de technicité, d'aspects logiciels et matériels.
  1. Estimation du coût et du temps du projet : le coût du matériel requis et des autres utilitaires décidés et une estimation du temps alloué pour la mise en œuvre des fonctionnalités.
  1. Plan de ressources : un examen général des ressources nécessaires et un plan pour leur utilisation présenté dans le sujet.
  1. Attribution des tâches et des responsabilités : un sujet consiste en un tableau qui décrit comment les tâches et les responsabilités ont été attribuées à chaque membre du groupe.
  1. Analyse et conception du projet : cette section donne un aperçu de la phase de conception de l'application.
  1. Style architectural et justification : Le sujet présente une justification du style architectural utilisé et des modules inclus dans le schéma d'architecture.
  1. Document de spécification des exigences logicielles : le document contenant les exigences fonctionnelles et non fonctionnelles, les exigences en matière de ressources, les exigences matérielles et logicielles, etc. a été joint ici. Divers diagrammes de cas d'utilisation tels que le diagramme de classe, le diagramme de cas d'utilisation, le diagramme d'état, les DFD ont été expliqués ici.
  1. Document de conception logicielle : contient la conception de l'interface utilisateur et le diagramme des composants expliquant la conception logicielle du projet.

    Mise en œuvre du projet : Cette section donne une idée de la façon dont l'application a été développée et exécutée.

  1. Approche / Algorithme principal : une description de l'algorithme de détection des nids de poule et de l'algorithme de détection d'obstacles donnés dans cette rubrique.
  1. Langages de programmation utilisés pour la mise en œuvre : Une liste de langages de programmation utilisés à diverses fins a été présentée dans cette rubrique.
  1. Outils utilisés : Une liste des divers outils et composants matériels utilisés lors de la mise en œuvre du projet présenté ici.

6. Intégration et tests : Une fois l'application développée, elle doit être testée pour détecter les erreurs et les bogues. Cette section décrit les tests approchés suivis pendant le processus de test.

6.1 Approche de test : La méthodologie utilisée pour tester chaque module est décrite dans cette section.

6.2 Plan d'essai : Cela donne une idée de la procédure de test effectuée et des tâches impliquées dans ce projet.

6.3 Scénarios de test unitaires : Les résultats de divers modules sur les tests individuels ont été discutés.

6.4 Scénarios de test du système intégré : La sortie de l'ensemble du système dans son ensemble avec le fonctionnement de tous les modules a été discutée.

7. Conclusion et travaux futurs : Fournir les fonctionnalités futures possibles et les travaux qui peuvent être mis en œuvre sur le système existant.

  1. Références : Cette section fournit des références à tous les sites Web, livres et revues, articles référencés pendant les phases d'analyse, de planification et de mise en œuvre du projet.

Chapitre 2 : Revue de la littérature

Génération de chemin basée sur la localisation GPS :

L'article discute de l'utilisation de la formule Haversine- Bearing pour guider le robot une fois que nous obtenons l'ensemble de latitude et de longitude à couvrir dans le chemin. Haversine Formula calcule la distance géographique sur terre. En utilisant deux valeurs de latitude-longitude, nous pouvons facilement calculer la distance sphérique entre les points par la formule Haversine. La formule Haversine est utilisée pour diviser le chemin en lignes droites.

Le relèvement peut être défini comme une direction ou un angle, entre la ligne nord-sud de la terre ou le méridien et la ligne reliant la cible et le point de référence. Le cap est un angle ou une direction dans laquelle vous naviguez actuellement.La valeur de relèvement est l'angle à partir de la valeur de cap que nous devons prendre pour aligner le robot dans la bonne direction aligner la trajectoire du point A au point B. Elle est mesurée à partir de la direction nord.

Détection et évitement des obstacles :

L'article traite de l'utilisation de l'algorithme de détection Canny Edge pour détecter les obstacles/objets. L'algorithme Canny Edge, développé par J.F. Canny, est l'un des algorithmes de détection de contour les plus populaires. Il implique un traitement d'image en temps réel avec des étapes comme la réduction du bruit, le calcul du gradient d'intensité de l'image, la suppression non maximale et l'hystérésis.

Le résultat de toutes ces étapes est soumis à des opérations de remplissage latéral, de coque lisse et d'érosion pour obtenir un point cible vers lequel le robot doit se déplacer en évitant tous les objets/obstacles entre les deux. L'utilisation de capteurs à ultrasons est également conseillée car les algorithmes de vision par ordinateur utilisant la caméra des smartphones ne pourront pas détecter les obstacles transparents.

Suivi GPS 24 heures sur 24 dans le système d'exploitation Android :

Le document traite de la nécessité d'un suivi GPS en temps réel de l'appareil Android pour de nombreuses raisons telles que la sécurité et le contrôle des activités de l'utilisateur dans une certaine zone. Le suivi en temps réel est possible grâce à l'utilisation d'une classe de superposition et d'un ensemble de points géographiques. L'utilisation du suivi GPS sera utile dans ce projet en cas de panne du robot où l'utilisateur/contrôleur sera informé de l'emplacement actuel du robot par SMS.

L'application mentionnée dans le document sera toujours en cours d'exécution en arrière-plan une fois démarrée. Il est construit sur SMS, de sorte qu'une fois l'application installée sur le mobile, toutes les activités liées aux SMS sont par défaut effectuées par l'application. L'utilisateur sera averti par l'emplacement actuel de l'appareil avec un horodatage associé.

Chapitre 3 : Plan de gestion de projet

3.1 Analyse de faisabilité

Le système proposé se compose de deux smartphones, d'un pilote de moteur L293D connecté à Arduino et d'un châssis qui fait office de châssis de base. La fréquence des moteurs requise pour le mouvement est de 60 tr/min, ce qui nécessite environ 18 V de batterie qui, après amplification par L293D, est utilisée par les moteurs pour effectuer le mouvement. Arduino et le châssis sont facilement disponibles sur le marché à des tarifs abordables, ce qui rend le système économiquement et techniquement réalisable.

Dans le monde d'aujourd'hui, tout le monde est supposé avoir un smartphone. Par conséquent, du point de vue de l'utilisateur, le coût du projet est presque nul (étant donné qu'ils ont un smartphone). Du point de vue des développeurs, le coût du projet est d'environ 1000 roupies (sans tenir compte du coût du smartphone placé sur la voiture robotique). Ces facteurs rendent le projet économiquement réalisable.

Les systèmes existants utilisent des modules GPS, IR et Bluetooth séparés connectés à la carte Arduino. Cependant, de tels systèmes posent certains problèmes. La gamme du module Bluetooth, la faible précision du module GPS séparé, les multiples capteurs IR, la capacité de traitement inférieure d'Arduino et, surtout, le coût séparé de tous ensemble est très élevé. Une autre méthode qui fonctionne sur des lignes similaires consiste à utiliser le module Wifi ESP8266 au lieu de Bluetooth. Cela peut augmenter la plage de contrôle, mais le robot n'est pas autonome. De plus, l'ajout de ce module entraîne une consommation d'énergie élevée, tandis que l'appareil Android peut lui-même servir de source d'alimentation pour l'Arduino.

L'ensemble du projet est implémenté dans Arduino Uno et Android. Les deux sont open source et donc de nombreuses mises à jour et améliorations peuvent être apportées, ce qui le rend optimal et beaucoup plus réalisable en termes de logiciel.

Notre système peut être facilement fabriqué à l'aide d'un téléphone Android et est économiquement réalisable, afin que les utilisateurs puissent installer l'application requise pour contrôler le robot. Ce système peut être utilisé à des fins éducatives, et il peut également être transformé en un robot de livraison, comme celui d'Amazon ou même un robot de sauvetage en cas de catastrophe naturelle.

3.2 Modèle de cycle de vie

Première itération :

Analyse et conception : Diverses méthodes utilisées dans les systèmes existants sont étudiées et la meilleure option ou méthode est choisie.

Implémentation : La génération de chemins à l'aide de marqueurs est implémentée dans Android à l'aide d'Android Studio et des API Google.

Test : La génération de chemin est testée.

Deuxième itération :

Analyse et conception : Une étude pour l'amélioration de la génération de chemin et de la communication entre le smartphone et l'Arduino est prévue.

Implémentation : L'implémentation de la communication entre le smartphone et l'Arduino est implémentée.

Test : la communication entre Arduino et l'appareil Android est testée.

Troisième itération :

Analyse & Conception : Etude de la détection d'obstacles à l'aide de l'algorithme Canny Edge impliquant la vision par ordinateur. Ajout de capteurs en tant que modification également étudié.

Implémentation : Implémentation de la détection d'obstacles.

Test : La mise en œuvre de la détection d'obstacles est testée.

Quatrième itération :

Analyse et conception : un contrôle rapproché du robot à l'aide d'un smartphone Android est prévu.

Implémentation : Implémentation du contrôle rapproché à l'aide d'Android Studio et du SDK Arduino avec l'utilisation de boutons.

Tests : tester si la mise en œuvre du contrôle rapproché a réussi ou non.

Cinquième itération :

Analyse et conception : planifiez la navigation GPS et l'évitement des obstacles.

Implémentation : L'implémentation de la navigation GPS et de l'évitement d'obstacles se fait à l'aide des bibliothèques OpenCV et du SDK Arduino.

Test : test de la navigation GPS et de l'évitement d'obstacles.

3.3 Estimation du coût et du temps du projet

Détails Coût par pièce Coût (en roupies)
Châssis pour Bot 75 1*75= 75
Kit Arduino 400 1*400= 400
roues 20 4*20= 80
Moteurs à courant continu 65 2*65= 130
Coût total 865

Le tableau suivant indique le temps nécessaire pour terminer le projet :

Les ressources suivantes sont requises et utilisées :

Ressources humaines

Nom de la tâche Date de début Date de fin Statut
Analyse des systèmes existants 03/07/16 11/07/16 Terminé
Détermination des ressources 12/07/16 19/07/16 Terminé
Conception du projet 20/07/16 24/07/16 Terminé
Implémentation de la génération de chemin 25/07/16 31/07/16 Terminé
Mise en place de la communication entre Arduino et smartphone Android 05/08/16 18/09/16 Terminé
Mise en place de la mise en miroir du téléphone 19/09/16 20/10/16 Terminé
Implémentation de la détection Canny Edge. Ajout de capteurs étudiés. 20/10/16 28/11/16 Terminé
Mise en œuvre du contrôle rapproché 04/12/16 02/01/17 Terminé
Test de contrôle rapproché 05/01/17 09/01/17 Terminé
Mise en œuvre de la navigation GPS 15/01/17 24/02/17 Partiellement complété
Mise en œuvre de l'évitement d'obstacles 20/01/17 25/02/17 Partiellement complété
L'intégration 26/02/17 02/03/17 Partiellement complété
Essai 05/03/17 15/03/17 Terminé

Chapitre 4 : Analyse et conception de projet

4.1 Diagramme d'architecture logicielle

4.2 Style architectural et justification

L'architecture utilisée est de style superposé. Trois couches sont utilisées, Android avec utilisateur, smartphone Android sur voiture robotique et l'Arduino. Il existe différentes fonctions dans Android. Sur la base de la sélection des fonctions, un appel de procédure approprié est effectué.

Première couche, c'est-à-dire un smartphone basé sur Android dans la main de l'utilisateur qui est utilisé pour alimenter l'emplacement de destination et envoyer les coordonnées au smartphone résidant sur la voiture robotique.

La deuxième couche est un smartphone basé sur Android installé sur le robot. Cette couche est la couche la plus importante car elle communique avec la carte Arduino pour effectuer des mouvements. En outre, il effectue l'opération d'application de la formule Haversine- Bearing qui divise le chemin en plusieurs chemins en ligne droite, puis suit la direction de destination. La détection d'obstacles à l'aide de l'algorithme Canny Edge est également effectuée par cette couche.

La troisième couche est constituée d'Arduino qui collecte les signaux du smartphone sur le robot pour effectuer des mouvements. Ces signaux sont envoyés au pilote de moteur L293D qui amplifie le courant en conséquence et fait tourner les moteurs.

4.3 Document de spécification des exigences logicielles

Introduction:

4.3.1 Présentation du produit :

Le produit/système proposé est un robot ayant un smartphone placé sur une voiture robotique qui communique avec la carte Arduino qui à son tour assiste L293D pour contrôler la rotation des moteurs et ainsi naviguer. Les coordonnées de destination sont envoyées par l'utilisateur du smartphone dans sa main au smartphone sur le robot à l'aide de la mise en miroir du téléphone.

Le smartphone de l'utilisateur sera installé avec une application de mise en miroir du téléphone à l'aide de laquelle l'utilisateur pourra refléter l'écran de l'appareil Android installé sur le robot et pourra fournir les coordonnées de destination, afficher le flux de la caméra.

Ces coordonnées de destination seront traitées par le smartphone, un chemin sera généré. Afin de naviguer vers la destination, des commandes seront données par le smartphone à Arduino qui instruira ensuite le conducteur du moteur en conséquence. Le robot effectuera également un évitement d'obstacles s'il y a des objets/obstacles sur son chemin.

Exigences d'interface externe :

4.3.2 Exigences relatives à l'interface utilisateur :

Étant donné que le projet proposé implique deux smartphones Android, il existe donc deux interfaces utilisateur - une pour l'application utilisateur et l'autre pour le smartphone installé sur le robot. L'application utilisateur est une application de mise en miroir de téléphone et a juste besoin de se connecter au smartphone qui est installé sur le robot.

Le smartphone du robot dispose d'une application « OnRobot », qui sera reflétée à l'utilisateur, à l'aide de laquelle l'utilisateur peut soumettre les coordonnées GPS. L'utilisateur peut également contrôler de près le robot à l'aide des boutons de commande fléchés fournis dans l'interface utilisateur. L'interface utilisateur dispose également d'une option de génération de chemin à l'aide de Google Maps qui fournit une représentation visuelle sophistiquée.

4.3.3 Exigences d'interface matérielle

La configuration matérielle requise pour le projet comprend les éléments suivants :

  • Châssis et roues : Agit comme une base pour le robot. Quatre roues sont fixées à ce châssis. Deux roues sont attachées aux moteurs à courant continu.
  • Arduino Uno : La carte microcontrôleur Arduino UNO agit comme le cerveau du robot. Arduino communique et agit comme un pont entre l'appareil Android et le pilote du moteur.
  • Pilote de moteur L293D : Le pilote de moteur L293D est responsable du contrôle du mouvement du moteur à courant continu et est contrôlé par les signaux Arduino. Les commandes de mouvements sont transmises à la carte Arduino via un smartphone qui, en coordination avec le conducteur du moteur, effectue le mouvement.
  • Batteries Li-ion : Ceux-ci sont nécessaires comme alimentation pour les moteurs L293D et DC. Le montant total de la puissance requise est de 15V. Cependant, pour Arduino, l'appareil Android agit comme source d'alimentation.

Configuration requise pour l'interface logicielle :

4.3.4 Caractéristiques du produit logiciel

Le logiciel est divisé en plusieurs parties qui sont les suivantes :

L'utilisateur/contrôleur peut utiliser cette application à des fins de surveillance, par exemple, dans le cas de robots de recherche utilisés lors de catastrophes telles que les tremblements de terre. Par conséquent, dans notre projet, une mise en miroir basée sur client-serveur est implémentée. L'utilisateur peut refléter l'écran de l'appareil Android installé sur le robot et pourra fournir les coordonnées de destination, afficher le flux de la caméra.

La formule Haversine- Bearing est utilisée pour guider le robot une fois que nous obtenons l'ensemble de latitude et de longitude à couvrir dans le chemin.

Formule Haversine- Haversine Formula calcule la distance géographique sur terre. En utilisant deux valeurs de latitude-longitude, nous pouvons facilement calculer la distance sphérique entre les points par la formule Haversine. La formule Haversine est utilisée pour diviser le chemin en lignes droites.

Formule de roulement- Le relèvement peut être défini comme une direction ou un angle, entre la ligne nord-sud de la terre ou le méridien et la ligne reliant la cible et le point de référence. Alors que le cap est un angle ou une direction dans laquelle vous naviguez actuellement. La valeur de relèvement est l'angle à partir de la valeur de cap que nous devons prendre pour aligner le robot dans la bonne direction aligner le chemin du point A au point B. Il est mesuré à partir du nord direction.

L'algorithme Canny Edge, développé par J.F. Canny, est l'un des algorithmes de détection de contour les plus populaires. Il implique un traitement d'image en temps réel avec des étapes comme la réduction du bruit, le calcul du gradient d'intensité de l'image, la suppression non maximale et l'hystérésis. Le résultat de toutes ces étapes est soumis à des opérations de remplissage latéral, de coque lisse et d'érosion pour obtenir un point cible vers lequel le robot doit se déplacer en évitant tous les objets/obstacles entre les deux. L'utilisation de capteurs à ultrasons est également conseillée car les algorithmes de vision par ordinateur utilisant la caméra des smartphones ne pourront pas détecter les obstacles transparents. La détection de bord Canny est implémentée dans Android à l'aide de la bibliothèque OpenCV (Open-source Computer Vision). OpenCV met tout ce qui précède en une seule fonction

Attributs du système logiciel

4.3.5 Fiabilité

Le système est fiable car la communication entre les smartphones se fait via la mise en miroir du téléphone, ce qui implique que seuls les appareils peuvent être connectés au robot qui ont l'adresse IP du smartphone sur le robot.

4.3.6 Disponibilité

Le logiciel est disponible selon les besoins et fournit des informations correctes à la personne. Aucune base de données n'est requise.

4.3.7 Portabilité

Le système proposé est portable car il s'agit d'une petite voiture robotisée construite sur un châssis d'environ 25 centimètres de long. Toutes les mises à jour requises du matériel ou des logiciels peuvent être effectuées facilement.

4.3.8 Performances

La performance globale a réussi la plupart des cas de test. Un seul utilisateur peut opérer à la fois. Il n'y a pas de pression de charge de travail maximale à moins que les exigences minimales de RAM et de mémoire ne soient pas remplies.

4.3.9 Diagrammes UML :

II. Diagramme de flux de données pour la détection d'obstacles et la génération de chemin :

4.4 Document de conception du logiciel

4.4.1 Conception de l'interface utilisateur

Il existe deux applications basées sur Android utilisées dans ce projet, l'une est l'application de mise en miroir du téléphone qui est basée sur le Wifi et l'autre est l'application OnRobot pour la communication avec la carte Arduino.

  • Application de miroir de téléphone : Le côté serveur crée un point d'accès wifi pendant que l'utilisateur se connecte au serveur en entrant l'adresse IP du serveur.

    Application OnRobot : L'application OnRobot s'exécute sur l'appareil Android installé sur le robot. En utilisant l'application de mise en miroir du téléphone, la latitude et la longitude de destination sont saisies et soumises. Pour un contrôle rapproché, les boutons fléchés sont fournis. Le bouton de capture est utilisé pour la surveillance en temps réel. Le bouton de piste permet à l'utilisateur de marquer sa destination à l'aide de marqueurs sur la carte.

  • Activité de génération de chemin GPS : En cliquant sur la carte, des marqueurs apparaissent qui indiquent le point de départ et de destination, et le chemin correspondant est généré. Un nouveau marqueur de destination peut être directement défini sur la carte.

    Activité de suivi GPS en temps réel : Cette activité permet de suivre l'emplacement en temps réel du robot ainsi que l'horodatage. La latitude, la longitude et l'horodatage sont stockés dans un fichier. Il garde une trace si le robot n'est pas stationnaire pendant plus que le temps seuil. S'il est supérieur au temps seuil, le contrôleur est notifié de la localisation du robot par SMS.


10 fonctions secrètes de déclenchement que vos professeurs de mathématiques ne vous ont jamais apprises

Lundi, l'Onion a rapporté que " les professeurs de mathématiques de la Nation introduisent 27 nouvelles fonctions de déclenchement ". C'est une lecture amusante. Le gamsin, le negtan et le cosvnx de l'article sur l'oignon sont fictifs, mais la pièce a un noyau de vérité : il y a 10 fonctions de déclenchement secrètes dont vous n'avez jamais entendu parler, et elles ont des noms charmants comme "haversine" et "exsecant."

Un diagramme avec un cercle unitaire et plus de fonctions trigonométriques que vous ne pouvez en utiliser. (Il est bien connu que vous pouvez secouer un bâton avec un maximum de 8 fonctions de déclenchement.) Le sinus, le cosinus et la tangente familiers sont respectivement en rouge, bleu et bronzage. Le versin est en vert à côté du cosinus, et l'exsecant est en rose à droite du versin. L'excosécant et le coverine sont également dans l'image. Non illustré : vercosine, covercosine et haver-anything. Image : Limaner et Steven G. Johnson, via Wikimedia Commons.

Que vous souhaitiez torturer des étudiants avec eux ou les laisser tomber dans une conversation pour vous faire paraître érudit et/ou insupportable, voici les définitions de toutes les "fonctions de trig perdues" que j'ai trouvées dans ma recherche exhaustive de textes historiques originaux dont Wikipedia m'a parlé.

Versin : versin(&theta)=1-cos(&theta)
Vercosine : vercosine(&theta)=1+cos(&theta)
Coversine : coversin(&theta)=1-sin(&theta)
Covercosine : covercosine(&theta)=1+sin(&theta)
Haversine : haversin(&theta)=versin(&theta)/2
Havercosine : havercosine(&theta)=vercosine(&theta)/2
Hacoversine : hacoversin(&theta)=coversin(&theta)/2
Hacovercosine : hacovercosin(&theta)=covercosin(&theta)/2
Exsecant : exsec(&theta)=sec(&theta)-1
Excosécant : excsc(&theta)=csc(&theta)-1

Je dois avouer que j'ai été un peu déçu en les regardant. Ce ne sont que de simples combinaisons de chers vieux sinus et cosinus. Pourquoi ont-ils même eu des noms ?! À partir d'un moment et d'un endroit où je peux m'asseoir sur mon canapé et trouver le sinus de n'importe quel angle correct à 100 décimales presque instantanément à l'aide d'une calculatrice en ligne, le versin est inutile. Mais ces fonctions apparemment superflues comblaient des besoins dans un monde pré-calculateur.

Numberphile a récemment publié une vidéo sur les tables de journalisation, qui explique comment les gens utilisaient des logarithmes pour multiplier de grands nombres dans les jours sombres de la pré-calculatrice. Tout d'abord, un rappel sur les logarithmes. Le journal des équationsbx=y signifie que b y =x. Par exemple, 10 2 = 100 donc log10100=2. Un fait pratique à propos des logarithmes est que le journalb(c×d)=journalbc+logbré. En d'autres termes, les logarithmes transforment la multiplication en addition. Si vous vouliez multiplier deux nombres ensemble à l'aide d'une table de journal, vous devriez rechercher le logarithme des deux nombres, puis additionner les logarithmes. Ensuite, vous utiliseriez votre table de journal pour découvrir quel nombre avait ce logarithme, et c'était votre réponse. Cela semble fastidieux maintenant, mais effectuer une multiplication à la main nécessite beaucoup plus d'opérations que l'addition. Lorsque chaque opération prend un temps non négligeable (et est sujette à une quantité d'erreurs non négligeable), une procédure qui vous permet de convertir la multiplication en addition est un réel gain de temps et peut aider à augmenter la précision.

Les fonctions secrètes de trig, comme les logarithmes, facilitaient les calculs. La versine et la haversine étaient les plus utilisées. Près de l'angle &theta=0, cos(&theta) est très proche de 1. Si vous faisiez un calcul contenant 1-cos(&theta), votre calcul pourrait être ruiné si votre table de cosinus n'avait pas assez de chiffres significatifs . Pour illustrer, le cosinus de 5 degrés est 0,996194698 et le cosinus de 1 degré est 0,999847695. La différence cos(1°)-cos(5°) est de 0,003652997. Si vous aviez trois chiffres significatifs dans votre table de cosinus, vous n'obtiendriez qu'un seul chiffre significatif de précision dans votre réponse, en raison des zéros non significatifs dans la différence. Et une table avec seulement trois chiffres significatifs de précision ne serait pas en mesure de faire la distinction entre les angles de 0 degré et 1 degré. Dans de nombreux cas, cela n'aurait pas d'importance, mais cela pourrait être un problème si les erreurs s'accumulaient au cours d'un calcul.

Les fonctions bonus trig ont également l'avantage de ne jamais être négatives. Le versine est compris entre 0 et 2, donc si vous utilisez des tables de journal pour multiplier par un versine, vous n'avez pas à vous soucier du fait que le logarithme n'est pas défini pour les nombres négatifs. (Il n'est pas défini pour 0 non plus, mais c'est un cas facile à traiter.) Un autre avantage de la versine et de la haversine est qu'elles peuvent vous empêcher d'avoir à régler quelque chose. Un peu de magie trigonométrique (a.k.a.mémorisation de l'une des listes interminables de formules de trig que vous avez apprises au lycée) montre que 1-cos(&theta)=2sin 2 (&theta/2). Donc, le haversine est juste sin 2 (&theta/2). De même, l'havercosine est cos 2 (&theta/2). Si vous avez un calcul impliquant le carré du sinus ou du cosinus, vous pouvez utiliser une table de haversin ou havercosinus et ne pas avoir à mettre au carré ou à prendre des racines carrées.

Un diagramme montrant le sinus, le cosinus et le versin d'un angle. Image : Qef et Steven G. Johnson, via Wikimedia Commons.

La versine est une fonction trigonométrique assez évidente à définir et semble avoir été utilisée dès 400 CE en Inde. Mais la havresine a peut-être été plus importante dans l'histoire plus récente, lorsqu'elle était utilisée dans la navigation. La formule de Haversine est un moyen très précis de calculer les distances entre deux points à la surface d'une sphère en utilisant la latitude et la longitude des deux points. La formule de haversine est une reformulation de la loi sphérique des cosinus, mais la formulation en termes de haversin est plus utile pour les petits angles et distances. (D'un autre côté, la formule de haversine ne fait pas un très bon travail avec des angles proches de 90 degrés, mais la loi sphérique des cosinus les gère bien.) La formule de haversine pourrait donner des résultats précis sans nécessiter les opérations coûteuses en calcul de carrés et racines carrées. Pas plus tard qu'en 1984, le magazine d'astronomie amateur Sky & Telescope chantait les louanges de la formule haversine, qui n'est pas seulement utile pour la navigation terrestre mais aussi pour les calculs célestes. Pour en savoir plus sur la formule de Haversine et le calcul des distances sur une sphère, consultez cette copie archivée d'une page du bureau de recensement ou cet article Ask Dr. Math.

Je n'ai pas beaucoup d'informations sur l'historique des autres fonctions de trig sur la liste. Tous pourraient rendre les calculs plus précis près de certains angles, mais je ne sais pas lesquels étaient couramment utilisés et lesquels étaient nommés* de manière analogue à d'autres fonctions mais rarement réellement utilisés. Je suis curieux à ce sujet, si quelqu'un en sait plus sur le sujet.

Lorsque l'oignon imite la vraie vie, c'est généralement tragique. Mais dans le cas des fonctions secrètes de déclenchement, le noyau de vérité dans l'oignon ne m'a pas rendu triste. Nous avons maintenant beaucoup de chance de pouvoir multiplier, carré et prendre des racines carrées si facilement, et nos calculatrices peuvent stocker des informations précises sur les sinus, les cosinus et les tangentes des angles, mais avant de pouvoir le faire, nous avons trouvé un travail -autour sous la forme d'un nombre ridicule de fonctions de trig. Il est facile d'oublier que les personnes qui les ont définis n'étaient pas des professeurs de mathématiques sadiques qui veulent que les gens mémorisent des fonctions étranges sans raison. Ces fonctions ont en fait rendu les calculs plus rapides et moins sujets aux erreurs. Maintenant que les ordinateurs sont si puissants, la havresine a pris le pas sur la disquette. Mais je pense que nous pouvons tous convenir que cela devrait revenir, ne serait-ce que pour la blague "géniale" que j'ai inventée alors que je m'endormais la nuit dernière : Haversine ? Je ne sais même pas heu !

* J'aimerais faire une petite digression dans le monde des préfixes mathématiques ici, mais ce n'est peut-être pas pour tout le monde. Tu as été prévenu.

Dans le tableau des fonctions secrètes de trig, "ha" signifie clairement que la moitié de la valeur de haversine est la moitié de la valeur de versine, par exemple. "Co" signifie prendre la même fonction mais avec l'angle complémentaire. (Les angles complémentaires font 90 degrés. Dans un triangle rectangle, les deux angles non droits sont complémentaires.) Par exemple, le cosinus d'un angle est également le sinus de l'angle complémentaire. De même, la couverture est la versine de l'angle complémentaire, comme vous pouvez le voir en bleu clair au-dessus de l'un des sinus rouges dans le diagramme en haut du poteau.

La seule fonction de déclenchement bonus qui me perturbe un peu est la vercosine. Si le "co" dans cette définition signifiait l'angle complémentaire, alors le vercosine serait le même que le Coversine, ce qui n'est pas le cas. Au lieu de cela, le vercosinus est le versin de l'angle supplémentaire (les angles supplémentaires totalisent 180 degrés), pas le complémentaire. En plus des définitions comme 1-cos(&theta) et 1+cos(&theta), la versine et la vercosine peuvent être définies comme versin(&theta)=2sin 2 (&theta/2) et vercos(&theta)=2cos 2 (&theta /2). Dans le cas de versine, je pense que la définition impliquant cos(&theta) est plus ancienne que la définition impliquant le sinus au carré. Je suppose que vercosine était un terme ultérieur, une analogie de la définition du carré du sinus de la versine utilisant le cosinus à la place. Si vous êtes un passionné d'histoire de la trigonométrie et que vous avez plus d'informations, faites-le moi savoir ! Dans tous les cas, le tableau des fonctions de trig bonus super-secrètes est un exercice amusant pour comprendre ce que signifient les préfixes.

Les opinions exprimées sont celles des auteurs et ne sont pas nécessairement celles de Scientific American.


Nous reconnaissons le soutien de la Fondation allemande pour la recherche (DFG) et du Fonds de publication en libre accès de la Charité–Universitätsmedizin Berlin.

1. Powers WJ, Rabinstein AA, Ackerson T, Adeoye OM, Bambakidis NC, Becker K, et al. Lignes directrices 2018 pour la prise en charge précoce des patients ayant subi un AVC ischémique aigu : une ligne directrice pour les professionnels de la santé de l'American Heart Association/American Stroke Association. Caresser. (2018) 49:e46�. doi: 10.1161/STR.0000000000000158

2. Emberson J, Lees KR, Lyden P, Blackwell L, Albers G, Bluhmki E, et al. Effet du délai de traitement, de l'âge et de la gravité de l'AVC sur les effets de la thrombolyse intraveineuse avec altéplase pour l'AVC ischémique aigu : une méta-analyse des données de patients individuels provenant d'essais randomisés. Lancette. (2014) 384:1929�. doi: 10.1016/S0140-6736(14)60584-5

3. Meretoja A, Keshtkaran M, Saver JL, Tatlisumak T, Parsons MW, Kaste M, et al. Thrombolyse d'AVC : gagnez une minute, gagnez un jour. Caresser. (2014) 45:1053𠄸. doi: 10.1161/STROKEAHA.113.002910

4. Kunz A, Nolte CH, Erdur H, Fiebach JB, Geisler F, Rozanski M, et al. Effets de la thrombolyse intraveineuse ultra-précoce sur les résultats de l'AVC ischémique : le groupe STEMO (Stroke Emergency Mobile). Circulation. (2017) 135:1765𠄷. doi: 10.1161/CIRCULATIONAHA.117.027693

5. Saver JL, Goyal M, van der Lugt A, Menon BK, Majoie CB, Dippel DW, et al. Délai de traitement par thrombectomie endovasculaire et résultats de l'AVC ischémique : une méta-analyse. JAMA. (2016) 316:1279�. doi: 10.1001/jama.2016.13647

6. Mulder M, Jansen IGH, Goldhoorn RB, Venema E, Chalos V, Compagne KCJ, et al. Délai jusqu'au traitement endovasculaire et résultat de l'AVC ischémique aigu : résultats du registre propre à l'IRM. Circulation. (2018) 138:232�. doi: 10.1161/CIRCULATIONAHA.117.032600

7. Meretoja A, Keshtkaran M, Tatlisumak T, Donnan GA, Churilov L. Thérapie endovasculaire pour l'AVC ischémique : économisez une minute par semaine. Neurologie. (2017) 88:2123𠄷. doi: 10.1212/WNL.0000000000003981

8. Kim DH, Nah HW, Park HS, Choi JH, Kang MJ, Huh JT, et al. Impact de l'intervention préhospitalière sur le délai de traitement thrombolytique dans un centre d'AVC avec un programme de code d'AVC systématisé. J Stroke Cerebrovasc Dis. (2016) 25:1665�. doi: 10.1016/j.jstrokecerebrovasdis.2016.02.011

9. Ebinger M, Winter B, Wendt M, Weber JE, Waldschmidt C, Rozanski M, et al. Effet de l'utilisation de la thrombolyse en ambulance sur le délai de thrombolyse dans l'AVC ischémique aigu : un essai clinique randomisé. JAMA. (2014) 311:1622�. doi: 10.1001/jama.2014.2850

10. Muller-Nordhorn J, Wegscheider K, Nolte CH, Jungehulsing GJ, Rossnagel K, Reich A, et al. Intervention basée sur la population pour réduire les délais préhospitaliers chez les patients présentant des événements cérébrovasculaires. Stagiaire Arch Med. (2009) 169:1484�. doi: 10.1001/archinternmed.2009.232

11. Meretoja A, Strbian D, Mustanoja S, Tatlisumak T, Lindsberg PJ, Kaste M. Réduction du délai d'hospitalisation à 20 minutes dans la thrombolyse d'AVC. Neurologie. (2012) 79:306�. doi: 10.1212/WNL.0b013e31825d6011

12. Nolte CH, Malzahn U, Kuhnle Y, Ploner CJ, Muller-Nordhorn J, Mockel M. Amélioration du temps d'accès à l'imagerie chez les patients ayant subi un AVC aigu grâce à la mise en œuvre d'une alarme tous points. J Stroke Cerebrovasc Dis. (2013) 22:149�. doi: 10.1016/j.jstrokecerebrovasdis.2011.07.004

13. Caplan LR. Centres d'AVC primaires vs centres d'AVC complets dotés de capacités d'intervention : quel est le meilleur pour un patient suspecté d'AVC ? JAMA Neurol. (2017) 74:504𠄶. doi: 10.1001/jamaneurol.2017.0006

14. Smith EE, Kent DM, Bulsara KR, Leung LY, Lichtman JH, Reeves MJ, et al. Précision des instruments de prédiction pour le diagnostic de l'occlusion des gros vaisseaux chez les personnes suspectées d'AVC : une revue systématique des lignes directrices 2018 pour la prise en charge précoce des patients ayant subi un AVC ischémique aigu. Caresser. (2018) 49:e111�. doi: 10.1161/STR.0000000000000160

15. Schlemm L, Ebinger M, Nolte CH, Endres M. Impact des échelles de triage préhospitalier pour détecter l'occlusion des gros vaisseaux sur l'utilisation des ressources et le délai de traitement. Caresser. (2018) 49:439�. doi: 10.1161/STROKEAHA.117.019431

16. Holodinsky JK, Williamson TS, Kamal N, Mayank D, Hill MD, Goyal M. Drip and ship versus direct to complete stroke center : modélisation de probabilité conditionnelle. Caresser. (2017) 48:233𠄸. doi: 10.1161/STROKEAHA.116.014306

17. Katz BS, Adeoye O, Sucharew H, Broderick JP, McMullan J, Khatri P, et al. Impact estimé du triage des patients victimes d'un AVC par les services médicaux d'urgence sur les centres d'AVC complets : une étude basée sur la population urbaine. Caresser. (2017) 48: 2164�. doi: 10.1161/STROKEAHA.116.015971

18. MATLAB et Statistics Toolbox Release 2013a. Natick, MA : The MathWorks, Inc. (2013).

19. Milne MS, Holodinsky JK, Hill MD, Nygren A, Qiu C, Goyal M, et al. Navire goutte à goutte versus vaisseau mère pour le traitement endovasculaire : modéliser les meilleures options de transport pour des résultats optimaux. Caresser. (2017) 48:791𠄴. doi: 10.1161/STROKEAHA.116.015321

20. Schlemm E, Ebinger M, Nolte CH, Endres M, Schlemm L. Destination de transport optimale pour les patients ayant subi un AVC ischémique avec un statut vasculaire inconnu : utilisation des scores de triage préhospitalier. Caresser. (2017) 48:2184�. doi: 10.1161/STROKEAHA.117.017281

21. McTaggart RA, Moldovan K, Oliver LA, Dibiasio EL, Baird GL, Hemendinger ML, et al. Le temps de porte-à-porte dans les centres d'AVC primaires peut prédire les résultats pour les patients d'occlusion de gros vaisseaux émergents. Caresser. (2018) 49:2969�. doi: 10.1161/STROKEAHA.118.021936

22. Ng FC, Low E, Andrew E, Smith K, Campbell BCV, Hand PJ, et al. Déconstruction du flux de travail de transfert interhospitalier dans l'occlusion des gros vaisseaux : données du monde réel à l'ère de la thrombectomie. Caresser. (2017) 48:1976𠄹. doi: 10.1161/STROKEAHA.117.017235

Mots clés : triage préhospitalier, analyse décisionnelle, AVC ischémique, thrombolyse, thrombectomie mécanique, recherche sur les services de santé, modélisation géospatiale, modélisation mathématique (médicale)

Citation : Schlemm L, Schlemm E, Nolte CH et Endres M (2019) Triage pré-hospitalier des patients atteints d'AVC ischémique aigu - Importance de considérer plus de deux options de transport. De face. Neurol. 10:437. doi: 10.3389/fneur.2019.00437

Reçu : 24 janvier 2019 Accepté : 10 avril 2019
Publié: 26 avril 2019.

Nawaf Yassi, Université de Melbourne, Australie
Hamed Asadi, Florey Institute of Neuroscience and Mental Health, Australie

Copyright © 2019 Schlemm, Schlemm, Nolte et Endres. Il s'agit d'un article en libre accès distribué sous les termes de la Creative Commons Attribution License (CC BY). L'utilisation, la distribution ou la reproduction dans d'autres forums est autorisée, à condition que le ou les auteurs originaux et le ou les titulaires des droits d'auteur soient crédités et que la publication originale dans cette revue soit citée, conformément à la pratique académique acceptée. Aucune utilisation, distribution ou reproduction non conforme à ces conditions n'est autorisée.


Véhicules IoT semi-automatisés

Résumé Les pays en développement sont confrontés au problème des routes encombrées et encombrées en raison de la mise en œuvre inefficace des règles de circulation. Il y a un manque de sensibilisation sur les règles au commutateur. De plus, les conducteurs ont également tendance à ignorer souvent les règles. Un système de circulation intelligent qui peut automatiquement mettre en œuvre les règles de circulation et de sécurité routière pour les voitures basées sur l'IOT est proposé dans cet article. Le système proposé identifie d'abord toutes les règles de sécurité routière à mettre en œuvre dans l'emplacement actuel, suivi d'une alerte au conducteur. En cas de non-réponse du conducteur dans la manière de suivre la règle, une imposition automatisée de règles est effectuée. La reconnaissance des règles se fait en détectant l'emplacement actuel par GPS et en recherchant dans le système de gestion du trafic virtuel toutes les règles qui sont applicables dans cette région et qui sont prédéfinies. Après avoir connu toutes les règles à suivre, le conducteur est alerté sur les règles. Après quoi, les signaux de contrôle sont envoyés au système de contrôle pour orienter le fonctionnement selon les règles de la circulation, automatisant ainsi la réponse directement par les véhicules.

Mots-clésSystème de transport intelligent, Services Web, Limite de vitesse, Règles de sécurité routière, IoT, Algorithme Haversine, MySQL, Service cloud, Système de positionnement global (GPS), Raspberry Pi.

Des règles de trac et de sécurité routière ont été élaborées pour promouvoir la sécurité et l'ecacité du trac. Il y a un manque de connaissance des règles chez le commutateur. En outre,

Les conducteurs ont également tendance à ignorer souvent les règles. De plus, il est particulièrement difficile pour les nouveaux conducteurs circulant sur des routes inconnues de suivre les règles. C'est l'une des principales causes d'accidents. Par conséquent, il est nécessaire de développer un

système qui assiste le conducteur sur le trac ou les règles de sécurité routière lors de la conduite et pour automatiser la réponse de l'automobile sur l'ignorance des conducteurs pour suivre les règles. La principale préoccupation du système trac sense est d'assurer la sécurité routière pour éviter les accidents dus à la négligence des conducteurs entraînant des pertes de vies. Ainsi, un système de traçage intelligent qui est

proposé est avantageux en raison de ses caractéristiques et capacités uniques de l'Internet des objets (IoT).

Le problème que ce projet entend résoudre est de surmonter tous les tracas causés soit par le manque de sensibilisation du conducteur vis-à-vis des règles de sécurité routière, soit par leur négligence délibérée à leur égard. L'énoncé du problème est de proposer un système de trac intelligent qui identifie d'abord les règles de trac à partir de l'emplacement actuel du véhicule pour alerter le conducteur sur les règles de sécurité routière et sur l'ignorance des conducteurs à suivre les règles, pour automatiser la réponse de l'automobile.

Jessen Joseph Leo utilise la technologie GPS pour trouver l'emplacement du véhicule par rapport au virage en épingle à cheveux pour décider de la priorité dans laquelle les véhicules doivent se déplacer[1], mais ce système ne fait aucun effort pour résoudre les problèmes de congestion du trac dans d'autres domaines . Un modèle de Benoit Vanholme fournit des alertes consultatives en temps réel au conducteur à l'approche de points d'intérêt cartographiés tels que les zones à vitesse limitée, les intersections et les ralentisseurs. Ici, la détermination des conducteurs s'approchant des POI est effectuée à l'aide de l'algorithme K-Nearest Neighborithm dans [2], mais l'algorithme K- plus proche voisin nécessite de calculer un paramètre K qui est difficile. Les règles de sécurité légales pour le véhicule autonome telles que le maintien de la distance, l'adaptation intelligente de la vitesse et le changement de voie sont mises en œuvre à l'aide de caméras et de radars dans [3]. Une application basée sur Android collecte les données d'un véhicule telles que la latitude, la longitude, la vitesse et les données d'accéléromètre et les envoie à son serveur de brouillard le plus proche pour traitement. Des algorithmes ont été développés pour localiser les anomalies routières et les zones sujettes aux accidents. Le résultat de ceci est montré dans la carte Google du smartphone des conducteurs dans [4]. Le concept de technologie basée sur l'IoT et le Cloud est utilisé dans les services de parking dans [5], mais cela ne fait que déterminer si la zone donnée est un parking ou non et aucune autre règle n'est prise en compte. Dans [6], la technologie RFID est utilisée pour guider les véhicules d'urgence avec un trajet d'encombrement réduit. La voiture basée sur l'IoT de SaliqAfaque est contrôlée à distance via Internet par un navigateur Web. La caméra RPi capture la vidéo en direct et RPi transmet cette vidéo pour un traitement en direct sur le navigateur Web dans [7], mais seul le mouvement vers l'avant de

la voiture est prise en charge et la vision dans l'obscurité (c'est-à-dire la nuit) à l'aide de la caméra RPi est difficile. Dans [8], les véhicules automatisés communiquent avec d'autres véhicules automatisés en utilisant le système ALOHA pur. Dans [9], le véhicule est intégré au GPS, aux capteurs d'accéléromètre, à la puce du véhicule du capteur de collision et au module sim pour la communication. Les informations collectées à l'aide de ces capteurs sont mises à jour dans le cloud à des intervalles définis. Dans [10], le système conçu utilise le modèle d'accélération GMM/GMR dans la section d'entrée de courbe et la section de sortie de courbe et l'algorithme de suivi de vitesse dans la courbe médiane. La méthode GMM/GMR prend en compte le comportement de conduite automatique local basé sur des informations de séries chronologiques. Des capteurs de clignement des yeux et des capteurs de contrôleur de vitesse sont utilisés pour le mécanisme de contrôle de vitesse dans [11], mais la détection n'est pas précoce et les capteurs de clignement ne sont pas très précis, ce qui peut entraîner un accident. Dans [12], le système fournit des priorités aux véhicules dans les virages et contrôle la vitesse en fonction du type de virage et de la quantité de virage à prendre. L'emplacement du véhicule est mis en correspondance avec les cartes pour déterminer si le véhicule s'approche du virage. Dans [13], une application mobile est développée qui est connectée au cloud conçue pour que l'utilisateur connaisse la disponibilité des places de stationnement, mais présente une ambiguïté dans le cloud computing lorsque de nombreux utilisateurs utilisent l'application à la fois. Le système qui analyse les données de conduite en courbe des conducteurs et considère la construction de routes par JianmingXie peut être utilisé pour la gestion de l'état des routes [14]. Dans [15], une voiture intelligente est structurée avec un moteur à courant continu pour la conduite du conducteur et un moteur de direction pour le contrôle des virages, qui peut fonctionner le long d'une ligne noire à grande vitesse. Une stratégie de contrôle pour le virage de la voiture intelligente est basée sur le visuel de la route, à travers l'image de la route, la voiture intelligente peut suivre le long de la route et la vitesse de course est ajustée en fonction de la forme de la route. Ici, la stratégie de contrôle basée sur la forme de la route est établie principalement en fonction du traitement de l'image qui n'est pas toujours efficace. L'authentification de la réservation valide est incorporée au bénéfice d'un utilisateur valide. Ce système est mis en œuvre à l'aide de capteurs IR à faible coût, de Raspberry-Pi modèle 3b pour la collecte de données en temps réel et d'une application mobile E-Parking.

Les principaux objectifs de ce projet sont de développer un système d'assistance à la conduite en temps réel qui assiste les conducteurs en les informant des règles à suivre et en cas de non réponse du conducteur, le système déclenche la réponse. Le système peut remplir les fonctions suivantes :

Contrôlez la vitesse du véhicule conformément à la limitation de vitesse en utilisant un motoréducteur à courant continu dans la zone de limitation de vitesse.

Avertissez le conducteur en cas de briseur de vitesse devant vous.

désactiver le système de klaxon du véhicule en cas d'absence de zone de klaxon.

Avertir le conducteur en cas d'absence de parking.

Informez le conducteur des autres règles de signalisation à venir, telles que la zone scolaire, les sens uniques, les courbures gauche/droite profondes, etc.

Le modèle proposé se concentre sur les éléments des véhicules automatisés, qui consistent à automatiser le véhicule en fonction des règles et règlements de la circulation lorsque le véhicule s'approche d'un point où les règles sont définies. Cela définit comment le flux des processus dans le fonctionnement du modèle est conçu à partir des entrées de l'utilisateur jusqu'à tous les calculs dans l'appareil local dus au stockage dans la base de données présente dans le serveur hébergé dans le cloud et à la réponse du système à l'utilisateur. Le modèle comprend 2 modules, à savoir le site des décideurs et le site des automobilistes.

C'est l'interface pour les décideurs politiques (rule makers) qui sera la partie du département de la sécurité routière pour formuler et déployer l'ensemble des règles correspondant aux emplacements géographiques. Une interface graphique est conçue pour que le département de la sécurité routière puisse saisir et mettre à jour les règles de sécurité routière par les décideurs. Le code de la route est enregistré en fonction de son emplacement géographique, c'est-à-dire son point de latitude et de longitude, le type de règle, la distance à laquelle la règle doit être mise en œuvre par rapport aux coordonnées initiales. Ces données sont utilisées pour créer une base de données des règles de sécurité routière d'un emplacement géographique particulier à l'aide de MySQL. La base de données MySQL des règles de sécurité routière est téléchargée sur le serveur dans le cloud qui forme le système de gestion Virtual Trac. Le décideur est authentifié avec des identifiants de connexion pour accéder au système de gestion du trafic virtuel. Le décideur dispose de privilèges pour certaines fonctions telles que l'ajout de nouvelles règles avec de nouvelles coordonnées, la définition de nouvelles règles aux coordonnées déjà présentes, la définition de nouvelles coordonnées pour les règles déjà présentes et la suppression des règles existantes.

L'organigramme représenté dans la figure 1 fournit le travail détaillé du côté des décideurs. L'interface utilisateur graphique fournit à l'unité de gestion de trac autorisée, un accès à une page Web pour exécuter les privilèges mentionnés ci-dessus.

Dans la figure 2, le processus de construction du site des décideurs et de l'utilisateur et de la manière dont les règles sont stockées dans la base de données est expliqué. .L'acteur peut être un être humain ou un autre système externe.

Figure 1 : Organigramme pour le site des décideurs du modèle

L'analyse des cas d'utilisation est une technique d'analyse des exigences importante et précieuse qui a été largement utilisée dans l'ingénierie logicielle moderne. L'acteur ou l'administrateur (responsable de la politique) se connecte à la page Web où il peut saisir les détails des règles dans le cloud. Ces valeurs saisies sont stockées dans le cloud et récupérées chaque fois que cela est nécessaire. Les valeurs stockées sont les valeurs de vitesse limitée, les détails de la zone de mode de stationnement, les détails de la zone de bosse, les zones sans klaxon à un endroit particulier. Seul le décideur authentifié a le contrôle sur l'emplacement des limitations de vitesse, les zones sans klaxon, les zones de stationnement et sur la saisie des données de l'emplacement dans la base de données.

Figure 2 : Cas d'utilisation du modèle

Ce module est présent du côté de l'utilisateur, offrant aux utilisateurs la possibilité de basculer entre les deux modes de fonctionnement, à savoir le mode de conduite et le mode de stationnement. Un écran tactile est fourni au conducteur du véhicule pour basculer entre les deux modes. L'organigramme représenté dans la gure 3 fournit le fonctionnement détaillé sur le site d'Automobilists.

Lorsque le conducteur passe en mode conduite, le module GPS détecte l'emplacement en direct du véhicule et les coordonnées de l'emplacement en direct sont envoyées dynamiquement au Raspberry Pi. Raspberry Pi est le processeur du modèle sur lequel le programme d'accès au cloud s'exécute pour accéder au système de gestion de trac virtuel pour toutes les règles de trac applicables dans cette zone qui sont prédéfinies.

En utilisant l'algorithme de distance HAVERSINE, une colonne supplémentaire est créée dans le tableau qui contient la distance entre les coordonnées actuelles du véhicule et les coordonnées de la règle correspondante dans le système de gestion de trace virtuelle. L'implémentation de l'algorithme de distance Haversine est expliquée plus loin dans ce chapitre. Les cinq règles les plus proches sont extraites du cloud et traitées. Après avoir connu la règle la plus proche à suivre, le conducteur est alerté de la règle par un discours ou/et un texte sur l'écran tactile. De plus, le contrôle

les signaux sont envoyés au Raspberry Pi, qui à son tour envoie des signaux de contrôle aux lecteurs d'interface pour automatiser la règle la plus proche sur le véhicule le long des lignes de règles de trac.

Figure 3 : Organigramme pour le site des automobilistes du modèle

Lorsque le conducteur souhaite garer le véhicule, il doit passer en mode stationnement à l'aide de l'écran tactile fourni. Les coordonnées de localisation en direct du véhicule détectées par le module GPS sont comparées aux coordonnées de la zone de stationnement prédéfinies dans le système de gestion de traçage virtuel par Raspberry Pi pour indiquer si l'emplacement de la voiture est dans la zone de stationnement ou non.

La formule de Haversine est utilisée pour trouver la distance orthodromique (longueur de l'arc) entre deux points d'intérêt sur une sphère dont les valeurs de longitudes et de latitudes sont connues. Soit l'angle central entre deux points d'intérêt sur une sphère. Il est donné par,

où, d est la distance entre les deux points de la sphère et

ris le rayon de la sphère, c'est-à-dire la Terre. La formule haversine hav() est donnée par :

() = (2 1) + cos(1) cos(2) (2 1) où 1, 2 sont respectivement la latitude du point 1 et la latitude du point 2 et 1, 2 sont la longitude du point 1 et la longitude du point 2 respectivement. La fonction de haversine d'un angle est donnée par :

Pour obtenir la distance d, l'arc de haversine (inverse de haversin) est

appliqué à l'angle central.

= 2 arcsin((2 1) + cos(1) cos(2) (2 1) )

Ainsi, la valeur requise de d est obtenue en utilisant la formule de Haversine.

Un diagramme de flux de données (DFD), c'est-à-dire une représentation graphique du flux de données dans les processus impliqués dans les aspects de modélisation du site des décideurs, est illustré dans la figure 4.

Figure 4 : Diagramme de flux de données pour le modèle

Figure 5 : Diagramme de séquence pour le modèle

Le diagramme de séquence est représenté dans la gure 5, il montre la séquence des tâches qui doivent se produire dès la connexion à l'enregistrement et à l'ajout, la modification ou la suppression des règles.

Cette section explique comment le modèle et le flux de processus conçus sont réellement mis en œuvre. Cela montre l'interface graphique réelle conçue à la fois du côté des décideurs et des automobilistes (affichée sur l'écran tactile) et la manière dont la partie logicielle et matérielle est intégrée et mise en œuvre. La mise en œuvre comporte également 2 parties :

C'est l'interface pour les décideurs qui seront la direction de la sécurité routière pour formuler et déployer l'ensemble des règles correspondant aux implantations géographiques.

Une application Web est conçue pour le département de la sécurité routière afin que les décideurs politiques saisissent et mettent à jour les règles de sécurité routière. L'application Web est conçue à l'aide du framework ASP.NET de l'outil Visual Studio.

La figure 6 montre la page d'index de l'application. La page d'index est chargée avec le contenu statique nécessaire comme le type de panneaux et sur le projet, comme le montre la figure 7.

Figure 6 : Page d'accueil du site Policy Maker

Figure 7 : À propos de la page du projet

Figure 8 : Page de connexion du site Policy Maker pour autoriser uniquement les utilisateurs authentiques à modifier les politiques

En appuyant sur le bouton de connexion de la page d'index, la page de connexion s'affiche comme le montre la figure 8. En entrant des informations de connexion valides dans les zones de texte appropriées et en appuyant sur le bouton de soumission, les décideurs sont authentifiés, ce qui les dirige vers la page d'administration. La page maître d'administration contient les pages suivantes

La figure 9 montre la page Latitude & Longitude pour ajouter des règles à des coordonnées données. Les coordonnées de latitude et de longitude doivent être saisies et le type de règle à ce point doit être choisi parmi les différentes règles en utilisant le menu déroulant sous catégorie. Aussi, la valeur pour cette règle (disons 40 km/h

pour la limitation de vitesse) doit être spécifié en conséquence. Le bouton Soumettre insère les détails de la règle entrés dans la table de la base de données.

Figure 9 : GUI sur le site Policy Maker pour ajouter des règles à toutes les coordonnées

Figure 10 : Détail des règles à toutes les coordonnées

La figure 10 montre la page Afficher lat&lon conçue pour afficher le contenu de la table de la base de données avec des options de modification et de suppression pour chaque entrée. Le bouton Modifier redirige vers la page Latitude et longitude où des modifications peuvent être apportées. Le bouton Mettre à jour met à jour la table de base de données pour cette entrée correspondante.

Dans ce module, le matériel ressemble au véhicule dont la réponse au respect des règles de trac est contrôlée. Le prototype du modèle proposé se compose de Raspberry pi qui agit comme un contrôleur, un module GPS pour obtenir la localisation en direct du véhicule, un écran tactile qui imite l'affichage d'infodivertissement disponible dans les véhicules en temps réel comme dans la figure 11 et la figure 12.

Une interface utilisateur est fournie au conducteur du véhicule sur un écran tactile pour que l'utilisateur bascule entre le mode de conduite et le mode de stationnement, qui affiche également les coordonnées de localisation en direct, la règle qui est actuellement appliquée sur le véhicule, l'adresse de localisation en direct et la distance totale parcourue depuis le début du modèle. L'interface graphique contient également une zone de texte dans laquelle l'emplacement en direct, c'est-à-dire les valeurs de latitude et de longitude sont fournis. L'écran tactile qui avait été utilisé dans le prototype est un écran tactile HDMI 7 pouces compatible Raspberry Pi.

Le modèle Raspberry Pi 3 est utilisé dans le prototype qui contrôle la réponse du modèle et traite également les règles extraites de la base de données. Il traite également la latitude et la longitude obtenues à partir du module GPS.

Un code Java est exécuté en continu dans Raspberry Pi qui présente les caractéristiques suivantes. Le code se compose d'un script de conception d'interface graphique, d'une déclaration de broche GPIO Raspberry Pi, de services Web (pour accéder à la base de données), de fonctions pour déclencher des signaux de contrôle vers les lecteurs de sortie.

Un constructeur est exécuté dès que l'objet de la classe est créé. Dans le constructeur, les zones de texte de l'interface graphique sont remplies avec l'emplacement en direct reçu par le module GPS. De plus, le commutateur de klaxon et le bouton d'arrêt sont activés.

Il y a deux threads qui s'exécutent en arrière-plan pour mettre à jour en permanence l'emplacement et afficher les règles dans l'interface graphique. Ces threads sont activés lorsque le bouton de démarrage de l'interface graphique est activé.

Lorsque le bouton de démarrage est activé, le moteur (ressemblance à la roue du véhicule) commence à tourner à une vitesse initialement spécifiée (40 km/h comme utilisé le prototype) et le premier fil c'est-à-dire pour mettre à jour l'emplacement est créé en continu et est démarré qui exécute une fonction qui a une boucle infinie pour obtenir la position GPS du véhicule et l'affiche dans l'interface graphique et ces coordonnées sont géocodées à l'envers pour obtenir l'adresse actuelle qui est également affichée dans l'interface graphique. Et aussi, récupère les règles pour cet emplacement en utilisant les services Web. Toutes les règles récupérées sont à une distance de 10 km (dans le prototype) de l'emplacement actuel.

Figure 11 : Configuration complète du prototype

Figure 12 : Composants de la configuration du prototype

Toutes les règles obtenues sont stockées dans une liste de tableaux. La plus proche de ces règles se trouve à l'aide de la formule Haversine et la règle qui est à une distance moins les 20 mètres est appliquée sur le véhicule. L'autre thread qui est exécuté pour afficher la règle qui est adoptée sur le véhicule dans l'interface graphique. La règle à

être appliqué est traité et découvert si la règle est la limitation de vitesse, pas de klaxon ou une zone de stationnement interdit.

Si la catégorie de règle est la limitation de vitesse, la vitesse à laquelle le véhicule doit changer est réduite d'un facteur 10. Les valeurs mises à l'échelle de la vitesse vont de 1 à 10. En conséquence, le signal PWM est envoyé au conducteur du moteur qui conduit le moteur à la vitesse spécifiée. Le changement de vitesse est progressif. Et aussi, le message par exemple, Il y a une limite de vitesse de 40 km/h dans cette zone est affiché dans l'interface graphique.

Si la catégorie de règle est le stationnement, un message Vous êtes actuellement dans la zone de stationnement s'affiche dans l'interface graphique. Et vérifie si l'interrupteur fourni pour passer en zone de stationnement est activé. Si elle est activée et que la catégorie de règle est stationnement, la LED verte s'allume indiquant que le véhicule est dans la zone de stationnement et vice-versa.

Si la catégorie de règle n'est pas d'avertisseur sonore, l'avertisseur sonore (ressemblant à l'avertisseur sonore du véhicule) est désactivé, c'est-à-dire que même lorsque le bouton d'avertisseur sonore de l'interface graphique est cliqué, l'avertisseur sonore est désactivé. Et aussi, le message Ceci est strictement une zone sans klaxon s'affiche dans l'interface graphique. Le prototype matériel contient également une alimentation pour alimenter le R-pi et le pilote de moteur.

Le modèle proposé a été conçu et mis en œuvre et a été testé pour tous les cas de test. Un véhicule miniature a été développé pour effectuer l'analyse. Un ensemble de règles a été déployé dans la base de données pour différents emplacements et a été testé pour les règles définies ci-dessus à savoir limitation de vitesse, pas de klaxon et stationnement.

Les résultats obtenus étaient à peu près comme prévu et étaient optimaux. L'accès à la règle depuis le serveur et le temps de traitement du changement de règle ont pris au total environ 5 secondes avec une connexion Internet solide.

Dans les régions où aucune limite de vitesse n'est prévue, la vitesse du moteur (véhicule) change en fonction de l'entrée du conducteur. On a vu que le moteur tournait à pleine vitesse dans ces régions lorsque l'utilisateur augmentait la vitesse. Dans l'affichage, aucune règle n'était affichée car ces régions particulières n'avaient pas de règles définies. Dans les régions où la limite de vitesse est définie, la vitesse du moteur n'a augmenté/diminué que jusqu'au régime spécifique correspondant à la vitesse particulière. Bien que l'utilisateur ait essayé d'augmenter la vitesse au-delà de la limite donnée, la vitesse du moteur n'a pas augmenté. Le contrôle de la vitesse dans les régions définies avec limitation de vitesse a été testé.

Dans les zones qui ne sont pas définies comme zone de stationnement, si nous essayons de nous garer (c'est-à-dire si le conducteur essaie de passer du mode conduite au mode stationnement), la LED verte ne s'est pas allumée indiquant à l'utilisateur qu'il ne peut pas se garer dans cette zone. Dans les zones où il est défini comme zone de stationnement, l'utilisateur peut passer avec succès du mode de conduite au mode de stationnement et la LED s'allumera indiquant que l'automobiliste peut se garer dans cette zone.

Figure 13 : Capture d'écran de l'écran tactile

Lorsque le test a été effectué et exécuté, l'interface graphique de l'écran tactile a montré la latitude, la longitude de l'emplacement actuel du véhicule en mouvement, la distance parcourue par le véhicule, l'adresse de cet emplacement et également la règle extraite du nuage et exécutée comme dans le représenté sur la figure 13.

Ce système présente une surveillance de la sécurité routière en temps réel pour résoudre les problèmes causés par le non-respect des règles. Le système proposé fournit une nouvelle façon de contrôler les règles de trac et une étape vers des véhicules autonomes qui suivent les règles de circulation. Le service administratif du trac (Trac Rules Department of Government) peut utiliser ce système de surveillance de la sécurité routière en temps réel pour détecter les situations dangereuses sur la route et ainsi réagir en imposant des actions immédiates. Les données stockées dans la base de données présente dans le cloud sont toutes vérifiées et validées. L'automatisation des règles de circulation sur un véhicule empêchera ainsi le conducteur d'enfreindre les règles de circulation. Le système permet également de limiter la vitesse du véhicule en réduisant ainsi les risques d'accidents.

Dans l'ensemble de l'IOT, avec notre système, Trac Sense jouera un rôle important dans le système de surveillance de la sécurité routière dans des scénarios en temps réel. En incluant de nombreuses autres fonctionnalités telles que les feux de circulation, la communication entre véhicules, etc., un véhicule avancé peut être conçu.

Contrôle du mouvement des véhicules et prévention des accidents sur piste vallonnée, par Jessen Joseph Leo, R.Monisha, B.T.Tharani Sri Sakthi et A. John Clement Sunder, Conférence internationale sur l'électronique et le système de communication JCECS -2014

Conduite hautement automatisée sur les autoroutes basée sur la sécurité juridique par Benoit Vanholme, Dominique Gruyer, membre, IEEE, Benoit Lusetti, S´ebastien Glaser, et Sa¨d Mammar, membre principal, IEEE , Transactions IEEE sur les systèmes de transport intelligents, vol. 14, non. 1er mars 2013

Cooperative Driving of Automated Vehicles with Inter-vehicle Communications par Takeshi Sakaguchi, Atsuya Uno, Shin kato et Sadayunki Tsugawa, IEEE Intelligent Vehicles Symposium 2000 Dearborn (MI), États-Unis 3-5 octobre 2000

Algorithmes de contrôle de véhicule pour la conduite coopérative avec des véhicules automatisés et des communications entre véhicules par Shin Kato, Sadayuki Tsugawa, membre, IEEE, Kiyohito Tokuda, membre, IEEE, Takeshi Matsui et Haruki Fujii, Transactions IEEE sur les systèmes de transport intelligents, vol. 3, non. 3, septembre 2002

Modèle consultatif en temps réel pour les conducteurs : systèmes de transport intelligents par James OBUHUMA, Henry OKOYO et Sylvester MCOYOWO,

IIMC International Information Management Corporation, 2018 ISBN : 978-1-905824-60-1

Smart Vehicles with Everything, par R.Srinivasan, A.Sharmili, Dr.S.Saravanan et D.Jayaprakas, 2016 2e Conférence internationale sur l'informatique et l'informatique contemporaines (IC3I)

Système de sécurité routière basé sur l'IoT Dasari Vishal , H. Saliq Afaque , Harsh Bhardawaj et T. K. Ramesh par le Département d'ingénierie électronique et de communication Amrita University, Bengaluru à la Conférence internationale 2017 sur les techniques électriques, électroniques, de communication, informatiques et d'optimisation (ICEECCOT)

Conception d'un véhicule autonome basé sur Iot à l'aide de Computer Vision, par Mohammad Rubaiyat Tanvir Hossaim, Md. Asif Shahjalal et Nowroz Farhan Nur, Conférence internationale sur l'ingénierie électrique, informatique et des communications (ECCE), 16-18 février 2017, Coxs Bazar, Bangladesh

Conduite sûre à l'aide du système de capteurs IoT par A. Jesudoss, Muthuram .B.O et Lourdson Emmanuel .A , School of Computing Sathyabama Institute of Science and Technology at International Journal of Pure and Applied Mathematics , dans Volume 118 No. 20 2018, 3745-3750.

Une approche du système de stationnement et de réservation de voitures basé sur l'IoT sur le cloud par Vaibhav Hans, Parminder Singh Sethi et Jatin Kinra, Centre of information Technology University of Petroleum and Energy Studies Dehradun, Inde lors de la Conférence internationale 2015 sur l'informatique verte et l'Internet des objets (ICGCIoT)

Titus, Joby et S Sanjana, V et B, Saranya et Manikandan, Pravin et professeur, assistant. (2017) à la surveillance automatique des routes pour mettre en œuvre la règle de traçabilité des véhicules. Journal international de la recherche scientifique. 4. 87-90.

Contrôleur intégré pour la détection d'obstacles à l'avant du véhicule et le système d'alerte de sécurité de la cabine par V.Ramya, B.Palaniappan et K.Karthick, au International Journal of Computer Science and Information Technology, vol.4, n°2, avril 2012. [2 ] V. Ramya, B. Palani

Applications de conduite intelligente et sûre basées sur l'IoT, par le Dr Thyagaraju G S, HMT Gadiyar et U B Sujit.

Un modèle de conduite de courbe personnalisé pour véhicule intelligent, par Jianming Xie, Jianwei Gong, Shaobin Wu, Guangming Xiong et Chao Lu à la conférence IEEE 2017

Conception de la stratégie de contrôle pour le traçage automatique des voitures intelligentes avec visuel par Hui Zhang et Yongxin Liu, Collège d'ingénierie de l'information électronique, Université de Mongolie intérieure, Hohhot, 010021, Chine à la 26e Conférence chinoise de contrôle et de décision (CCDC) de 2014.

Parking intelligent activé par capteur basé sur l'IoT pour le système avancé d'aide à la conduite par Mahendra B M, Dr Savita Sonoli et Nagaraj Bhat, RV College of Engineering.

Surveillance et signalement des violations des règles Trac à l'aide d'un microcontrôleur via un système de communication sans fil par Hossain, Mohammmad Bhuiya, Mu et Ahamed, Jamal Uddin et Bhuiyan, Tanvir et Bhowmik, Suman. (2018).


Preuve d'une partie de la formule Haversine? - Systèmes d'information géographique

Vers une navigation céleste automatisée avec Deep Learning

Il s'agit de notre projet issu du cours d'apprentissage en profondeur dans le cloud et à la périphérie que nous avons suivi dans le cadre du programme de maîtrise en sciences de l'information et des données de l'UC Berkeley School of Information. Nous avons examiné la faisabilité d'une navigation céleste automatisée grâce à l'apprentissage en profondeur en entraînant un réseau neuronal hybride profond et convolutif sur des images synthétiques du ciel couplées à une représentation de l'heure à laquelle les images ont été prises. Nous avons implémenté la formule Haversine en tant que fonction de perte personnalisée pour le modèle. Nous avons généré, prétraité et entraîné des images synthétiques dans le cloud et effectué des inférences sur un Jetson TX2.

Compétences démontrées : Régression profonde pour la vision par ordinateur | Implémentation de fonctions de perte personnalisées | L'API fonctionnelle TensorFlow | Formation dans le cloud | Générer des données synthétiques | Inférence à la périphérie | Conteneurisation des composants

Langages et frameworks: Python | TensorFlow | Keras | ktrain | Frapper | Docker

Continuez à lire le livre blanc

1.1 A Très Bref aperçu de la navigation maritime

La navigation, avec le matelotage et l'évitement des collisions, est l'une des compétences fondamentales du navigateur. Les méthodes célestes étaient autrefois la pierre angulaire de la navigation maritime et aéronautique, mais elles ont été presque entièrement supplantées par des moyens électroniques, d'abord par des systèmes terrestres comme OMEGA [1] et LORAN [2], puis par des systèmes satellitaires comme le GPS [3 ], puis par des systèmes mixtes comme le GPS différentiel (DGPS) [4]. Malheureusement, la navigation électronique est fragile à la fois aux pressions budgétaires et aux actes de malveillance [5][6]. Il est cependant difficile d'acquérir et de maintenir des compétences en navigation céleste, et un navigateur qualifié n'est toujours capable de fixer la position d'un navire que quelques fois par jour, si le temps le permet [7].

Dans la pratique actuelle, la navigation céleste marine nécessite :

  • Une vue dégagée sur l'horizon. Le navigateur mesure les angles d'élévation avec un sextant en utilisant l'horizon comme ligne de base.
  • Une vue claire des corps célestes. Deux corps sont nécessaires pour fixer la position du navire, mais trois sont généralement utilisés dans la pratique. Des observations répétées du soleil peuvent être combinées pour fournir ce que l'on appelle un correctif en cours d'exécution de la position d'un navire.
  • Une horloge précise. Sans horloge, un navigateur ne peut calculer que la latitude du navire.
  • UNE Dead Reckoning parcelle sur laquelle le navigateur estime la route du navire.
  • Pour le calcul manuel, un certain nombre de volumes contenant des tableaux publiés.

Un système de navigation inertielle-céleste hybride automatisé pour aéronef, appelé astro-inertiel navigation, existe à bord d'avions militaires et de systèmes de missiles haut de gamme. Ces systèmes s'appuient sur des catalogues d'étoiles et une estimation de position développée grâce à l'intégration de données d'accéléromètre [8].

1.2 Intention de ce projet

Nous voulons explorer la possibilité d'appliquer l'apprentissage en profondeur à la tâche d'automatiser la navigation céleste. Nous sommes entrés dans ce projet en voulant répondre aux questions suivantes :

  • Pouvons-nous démontrer la possibilité d'une solution viable à la navigation céleste marine en la présentant comme un problème de régression profonde ?
  • Quelle est la quantité minimale d'informations dont nous avons besoin pour fournir un tel système ? En particulier, pouvons-nous construire un système qui suggère, s'il n'y parvient pas, une solution viable qui ne prend pas en entrée une position estimée, telle qu'elle est calculée dans un système astro-inertiel ou telle qu'estimée par les navigateurs à l'estime ?

Nous prévoyons que les navigateurs utilisent notre système comme solution de secours pour d'autres formes de navigation, principalement pour la navigation en haute mer à l'extérieur des cinq milles marins des dangers affrétés. Un navigateur partirait en voyage avec un ensemble de modèles adaptés à la trajectoire du navire de la même manière qu'un navigateur charge aujourd'hui les cartes pertinentes soit à partir d'un stockage amovible, soit sur Internet avant de partir en voyage. Le système ne prend rien de plus que l'image renvoyée par la caméra installée sur le périphérique et l'heure d'une horloge précise en entrée. Dans sa mise en œuvre finale, il renverra à la fois une sortie de position brute et une sortie NMEA standard adaptée à l'intégration avec un progiciel de cartographie électronique. Un navigateur avec accès Internet en mer peut charger des modèles supplémentaires à partir du cloud si nécessaire pour tenir compte des ajustements du voyage prévu.

Nous avons fait un certain nombre d'hypothèses d'ingénierie pour rendre le problème traitable en tant que projet à terme.

  • Nous simulons des images qui seraient prises en mer avec des images de synthèse. Nous espérons éventuellement procéder à un test opérationnel du système. Nous supposons donc que la caméra installée sur le système opérationnel peut reproduire la résolution et la qualité globale de nos images synthétiques.
  • Nous supposons que le navire fictif sur lequel le système serait installé est équipé d'un gyrocompas à trois axes pour permettre la capture d'images à un azimut et une élévation fixes. Les exigences du système de stabilisation peuvent être déduites en perturbant les images synthétiques pour simuler l'erreur de stabilisation.

Notre système se compose d'un composant cloud et d'un composant edge. Un générateur d'images crée des lots d'images synthétiques, les nomme à l'aide d'un schéma descriptif qui permet une indexation facile par emplacement et heure, et stocke les modèles dans des compartiments de stockage d'objets indexés par emplacement et heure. L'entraîneur de modèles tire de ces compartiments pour créer des modèles spécifiques à une zone géographique délimitée à un moment donné avec certaines limites de temps. Ces modèles sont stockés dans le stockage d'objets. L'appareil de bord, dans ce cas un Jetson TX2, capture une image du ciel et l'heure à laquelle l'image a été prise. Le moteur d'inférence effectue une passe avant du modèle, renvoyant l'emplacement prévu du navire sous forme de sortie brute.

Notre modèle est un CNN relativement simple réglé pour fournir des prévisions raisonnablement précises sur une zone géographique pertinente pour la navigation sur une période courte mais pertinente. Nous ne prétendons pas que cette architecture est un candidat idéal pour une version de production de ce projet. Nous voulons simplement démontrer la faisabilité.

Notre objectif était d'explorer des architectures capables d'apprendre la position d'un navire à partir d'une image arbitraire du ciel avec l'azimut et l'élévation fixes et le temps connu. Nous avons exploré à la fois les DNN et les CNN, mais nous avons opté pour ces derniers car les CNN peuvent coder des prédictions utilisables plus efficacement par rapport aux réseaux denses et profonds.

Il existe plusieurs manières de s'attaquer à ce problème. La détection d'objets pourrait, par exemple, être utilisée pour trouver l'emplacement de certains corps célestes connus dans une image. Nous avons choisi de présenter notre recherche comme un problème de régression profonde. La littérature suggère que les réseaux de neurones convolutifs ont été appliqués aux problèmes de détection de la position de la tête [9]. C'est un problème similaire au nôtre dans le sens où nous essayons de trouver une correspondance entre les translations et rotations des éléments du ciel et la position de l'observateur à un instant donné. Notre problème est cependant différent en ce que le ciel ne se déplace pas et ne tourne pas comme un tout unitaire. La trajectoire de la lune et des planètes, par exemple, n'est pas fixe par rapport à celle des étoiles. Cependant, les étoiles se déplacent ensemble sur ce que l'on appelle de manière simpliste le sphère céleste [10].

Notre réseau a deux entrées. L'entrée d'image ingère des images du ciel l'heure d'entrée ingère l'heure UTC à laquelle l'image a été prise. Les images sont exécutées à travers une série de couches convolutives et de mise en commun maximale. Les résultats sont concaténés avec le temps normalisé et le vecteur résultant est soumis à une régularisation d'abandon, une couche cachée dense et la tête de régression. La tête se compose de deux neurones, un chacun pour la latitude normalisée et la longitude normalisée. La latitude et la longitude sont normalisées sur la zone de test avec la latitude de la cartographie la plus au sud à 0 et la latitude de la cartographie la plus au nord à 1. La longitude est cartographiée de la même manière. La couche de sortie utilise l'activation sigmoïde pour délimiter la sortie dans le domaine spatial sur ([0,1], [0,1]) .

3.2 Implémentation d'une fonction de perte de Haversine

Nous voulons que notre fonction de perte minimise l'erreur de navigation renvoyée par le modèle. Nous avons initialement utilisé l'erreur quadratique moyenne sur la latitude et la longitude comme fonction de perte, mais nous avons constaté que la convergence était lente et que le modèle ne parvenait souvent pas à converger vers des valeurs raisonnables. Il existe bien entendu une relation non linéaire entre la latitude et la longitude. Alors qu'un degré de latitude est systématiquement de 60 milles nautiques n'importe où sur le globe, les lignes de longitude convergent aux pôles et divergent à l'équateur. L'utilisation de l'erreur quadratique moyenne donne alors des résultats incohérents en termes d'erreur de distance du modèle. Pour corriger cela, nous avons implémenté une nouvelle fonction de perte dans TensorFlow basée sur la formule de Haversine qui donne la distance orthodromique entre deux points définis par la latitude et la longitude [11].

La fonction haversine est donnée ci-dessous. La valeur des intérêts, , est la distance entre deux points définis par des paires latitude longitude [φ1, λ1] et [φ2, λ2]. La valeur r est le rayon de la Terre et définit les unités. Nous avons choisi notre r pour fournir une sortie en milles marins.

La fonction haversine est strictement positive et est continûment différentiable dans tous les domaines d'intérêt. La minimisation de la perte de Haversine minimise l'erreur entre les emplacements prédits et réels, et le gradient négatif de la fonction donne la direction de la descente la plus raide en termes de latitude et de longitude prédites.

Nous devons nous appuyer sur des images synthétiques pour entraîner le modèle car nous ne pouvons pas autrement capturer les futures configurations du ciel. Nous avons adapté le programme d'astronomie open source Stellarium pour une utilisation dans le cloud comme générateur d'images. Dans cette section, nous détaillerons notre méthode d'adaptation de Stellarium et fournirons des détails pour exécuter le générateur d'images dans le cloud avec des images stockées dans un compartiment S3.

Stellarium génère des images du ciel de haute qualité pour des positions géographiques arbitraires, des heures, des azimuts (le cap de la caméra virtuelle en degrés réels), des altitudes (l'élévation angulaire de la caméra virtuelle), le champ de vision de la caméra et les élévations de l'observateur [12 ]. La fonctionnalité de Stellarium est destinée aux praticiens et aux amateurs, elle est en développement continu depuis 2006. En plus de rendre des corps célestes, Stellarium peut rendre des satellites, des pluies de météores et d'autres événements astronomiques. Le programme utilise un système de langage de script basé sur JavaScript pour automatiser les séquences d'observations.

4.2 Mise en conteneur de Stellarium

Stellarium est conçu pour fonctionner sur un ordinateur de bureau. Notre conteneur Docker permet au programme d'être exécuté sur un serveur headless dans le cloud. Le fonctionnement de base du conteneur est décrit dans la figure ci-dessous. Un script python lit l'entrée d'un fichier YAML et génère et génère un script SSC qui automatise la génération d'images. Stellarium s'exécute à l'aide d'un fichier de configuration personnalisé qui empêche l'exécution de certains modules. Stellarium exécute le script SSC. Les fichiers image sont enregistrés soit dans un stockage local sur l'hôte, soit sur un point de montage S3 auquel le conteneur accède sur le système hôte. À partir de là, les images peuvent être prétraitées à l'aide du conteneur Docker décrit dans la section 5.1 ci-dessous.

Nous avons construit un conteneur Docker pour faciliter la formation dans le cloud. Le conteneur est construit sur le conteneur de base TensorFlow [13] et facilite le déploiement d'instances pour permettre l'entraînement simultané de modèles représentant différentes régions spatio-temporelles. Notre modèle est écrit en TensorFlow et nécessite deux entrées : une image et une valeur à virgule flottante identifiant l'heure à laquelle l'image a été générée.

Nous fournissons un conteneur Docker pour gérer la tâche de prétraitement des images dans des tableaux Numpy prêts à être utilisés dans la formation. Le conteneur convertit les images en tableaux Numpy avec des dimensions (None, 224, 224, 1) avec un script qui s'appuie fortement sur OpenCV [14]. Les images sont lues à partir d'un seul répertoire. Les images sont réduites à la résolution cible et sont empilées dans un seul tableau Numpy. L'heure et la position réelle sont analysées à partir des noms de fichiers d'entrée qui suivent le format <lat>+<long>+<YYYY>-<MM>-<DD>T<hh>:<mm>:<ss>.png . Les groupes date/heure sont convertis en numpy.datetime64 et sont normalisés sur [0,1] en fonction des limites temporelles de l'ensemble d'apprentissage. Les latitudes et les longitudes sont normalisées sur [0,1] en fonction de l'étendue maximale de la zone géographique considérée et formées en un tableau avec des dimensions (Aucun, 2) .

Les données sont divisées en ensembles d'apprentissage et de validation sur la base d'une répartition fournie par l'utilisateur et d'une affectation aléatoire.

Nous utilisons le package ktrain pour entraîner les modèles [15]. L'objet tensorflow.keras.model est enveloppé dans un objet ktrain.learner pour simplifier l'entraînement et accéder aux rappels intégrés de ktrain. Nous nous entraînons à l'aide de la fonction ktrain.learner.autofit avec un taux d'apprentissage initial maximal de 2-4. La fonction d'apprentissage applique la politique de taux d'apprentissage triangulaire avec réduction du taux d'apprentissage maximum lorsqu'un plateau est rencontré sur la perte de validation introduite par Smith [16].

Le conteneur enregistre les modèles au format .h5 dans un répertoire spécifié par l'utilisateur qui correspond à l'hôte. De cette façon, le modèle peut être enregistré localement ou dans un stockage d'objets.

Nous avons établi un espace expérimental de 36°N à 40°N, de 074°W à 078°W, et du 2020-05-25T22:00:00 UTC au 2020-05-26T02:00:00 UTC. Nous avons formé le modèle à l'aide de 6 788 images réduites à un seul canal 224 x 224. Nous avons validé sur 715 images réduites de la même manière en couleur et en résolution. Les images de base étaient de différents rapports d'aspect. La routine d'apprentissage utilise une taille de lot de 32. La figure ci-dessous détaille l'application de la politique de taux d'apprentissage triangulaire.

La perte d'entraînement a convergé à environ 5,5 milles marins et la perte de validation a convergé à un peu plus de 6,5 milles marins après 52 époques, comme indiqué ci-dessous.

5.3 Performance sur un transit de navire fictif

On considère une période de quatre heures dans la zone d'essai définie ci-dessus. Un navire fictif suit une trajectoire de 208° vrai, c'est-à-dire par rapport au nord géographique, à une vitesse de 12 milles marins à l'heure ou nœuds. Un mille marin est légèrement plus long qu'un mille terrestre. Le navire utilise notre système pour fixer sa position toutes les heures à partir de 22h00 UTC. Le graphique ci-dessous est superposé avec les positions réelles du navire en bleu et les positions prévues en rouge.

Notre modèle est entraîné à l'aide d'une grille spatio-temporelle basée sur notre intuition que le modèle apprend une interpolation et devrait donc être entraîné sur des données espacées à intervalles réguliers. L'interpolation spatiale était généralement assez bonne. L'interpolation temporelle était plus difficile, probablement en raison de notre décision de limiter la densité temporelle à des intervalles de 20 minutes pendant l'entraînement. Les navigateurs effectuent généralement des corrections à intervalles réguliers sur l'heure, la demi-heure, le quart d'heure, etc. et notre intervalle de correction pour l'exemple ci-dessus s'aligne sur les heures entraînées sur la grille temporelle. Nous laissons l'amélioration de l'interpolation temporelle comme domaine d'étude ultérieure.

6.1 Le conteneur de caméras et le courtier

L'implémentation Edge se compose de trois conteneurs Docker sur un Jetson connecté via le protocole MQTT. Le conteneur de caméra "crée" une image (dans ce cas de manière synthétique) et la transmet via le courtier MQTT au conteneur d'inférence basé sur TensorFlow. Puisque nous utilisons des images synthétiques, notre implémentation actuelle du conteneur de caméra prend une image d'un répertoire d'images et la transmet pour inférence. Le conteneur de la caméra affiche les images au fur et à mesure qu'elles sont chargées pour faciliter le dépannage.

Le conteneur de la caméra effectue une grande partie du prétraitement de l'image (principalement en réduisant toute image à 224x224 et en la convertissant en noir et blanc). Nous le faisons au niveau de la caméra pour réduire la taille des messages transitant par le protocole MQTT, fiabilisant ainsi le réseau de messages.

Le courtier MQTT se situe entre le conteneur de caméra et le conteneur d'inférence et agit comme un pont pour transmettre les images (et le nom de fichier qui contient la vérité terrain et est utilisé pour évaluer la précision de la prédiction).

Le conteneur d'inférence exécute le modèle TensorFlow qui a été formé dans le cloud. Nous avons constaté que le transfert de modèles utilisant l'ancien format .h5 était plus fiable que les méthodes Keras plus actuelles. À la réception d'une image, le conteneur prétraite davantage l'image, transmet l'image traitée en avant via le réseau et affiche la sortie sous forme de texte. Nous fournissons également une mesure de précision (en utilisant la vérité terrain qui est intégrée dans les noms de fichiers transmis).

La capture d'écran ci-dessous montre l'appareil Edge au travail. En bas à droite, vous avez le conteneur de la caméra. En bas à gauche, vous avez l'image de test qu'elle a générée (après prétraitement). En haut à gauche se trouve le courtier qui fournit la communication au moteur d'inférence. Et en haut à droite se trouve le conteneur d'inférence avec les lectures de deux requêtes de prédiction différentes qui lui sont envoyées par le conteneur de la caméra.

Cette section présente un exemple détaillé de génération de données synthétiques, d'entraînement d'un modèle dans le cloud, de transfert de ce modèle vers un magasin d'objets, d'extraction du modèle vers l'appareil périphérique, de capture d'une image localement et d'inférence basée sur cette image.

Nous commençons par provisionner un serveur virtuel sur un fournisseur de cloud. Plutôt que de stocker dans un stockage d'objets, nous stockerons les images localement pour entraîner le modèle sur le même serveur virtuel. Nous créons un répertoire local pour contenir les images. Nous clonons ensuite le repo et le cd dans le répertoire image_generator.

Dans ce cas, nous utiliserons le fichier ssc_gen.yml tel qu'il apparaît dans le référentiel. Nous voulons construire un total de 20 000 images. Pour accélérer le processus, nous utiliserons 10 travailleurs.

Débarrassez-vous des travailleurs désormais inutiles.

Modifiez le fichier ssc_gen.yml pour changer le répertoire cible en /data/image_test et créez 1 000 images de test.

7.2 Prétraitement des images

Nous prétraiterons les fichiers images en place en vue de la formation. Pour ce faire, accédez au répertoire du préprocesseur et créez le fichier docker.

Nous allons créer un nouveau répertoire pour stocker nos tableaux Numpy traités.

Modifiez le fichier preprocessor.yml si nécessaire, lancez un conteneur et prétraitez les images.

Une fois le prétraitement terminé et que vous avez vérifié que les fichiers .npy sont là où vous vous attendez, détruisez le conteneur.

Créez un répertoire pour héberger les modèles.

Faites tourner le conteneur et entraînez un modèle.

Vous devriez maintenant voir votre modèle entraîné dans les données/modèles sur la machine hôte.

7.4 Mise en file d'attente du périphérique Edge pour les images et les prédictions

[1] J. Kasper et C. Hutchinson, "Le système de navigation Omega--An Overview", dans Magazine de la société de communication de l'IEEE, vol. 16, non. 3, pp. 23-35, mai 1978, doi : 10.1109/MCOM.1978.1089729.

[2] W. J. Thrall, « Loran-C, an Overview », dans Proc. 13e année. Réunion de planification précise du temps., p. 449, 1976. et Réunion d'applications et de planification d'intervalle de temps., NASA Conf. Éd. 2220, p. 121, 1981

[3] G. Beutler, W. Gurtner, M. Rothacher, U. Wild et E. Frei, "Relative Static Positioning with the Global Positioning System: Basic Technical Considerations," dans Système de positionnement global : un aperçu., Association Internationale de Géodésie Symposium 102, ch. 1, 1990.

[4] E. G. Blackwell, "Vue d'ensemble des méthodes GPS différentielles" dans La navigation, 32 : 114-125, 1985. doi:10.1002/j.2161-4296.1985.tb00895.x

[5] Centre de navigation des garde-côtes des États-Unis, « Avis spécial concernant la fermeture de LORAN », https://www.navcen.uscg.gov/?pageName=loranMain.

[7] M. Garvin, "L'avenir de la navigation céleste et du navigateur militaire océanique," OTS Master's Level Projects & Papers. 41, 2010.

[8] R. Whitman, "Navigation astro-inertielle pour les applications de croisière." Northrop Corporation, 1980.

[9] S. Lathuiliere, P. Mesejo, X. Alameda-Pineda et R. Horaud, "Une analyse complète de la régression profonde", arXiv:1803.08450v2, 2019.

[10] AGENCE NATIONALE DE RENSEIGNEMENT GÉOSPATIAL, Pub n° 9, American Practical Navigator : une quintessence de la navigation, 2017.

[11] C. N. Alam, K. Manaf, A. R. Atmadja et D. K. Aurum, "Implémentation de la formule haversine pour compter les visiteurs de l'événement dans le rayon basée sur l'application Android," 2016 4ème Conférence Internationale sur la Cyber ​​et la Gestion des Services Informatiques, Bandung, 2016, p. 1-6, doi : 10.1109/CITSM.2016.7577575.

[12] M. Gates, G. Zotti et A. Wolf, Guide de l'utilisateur de Stellarium, 2016. doi: 10.13140/RG.2.2.32203.59688

[14] G. Bradski, G., "La bibliothèque OpenCV" Journal des outils logiciels du Dr Dobb, 2000.

[15] A. Maiya, « ktrain : une bibliothèque à faible code pour l'apprentissage automatique augmenté », arXiv : 2004.10703, 2020.

[16] L. Smith, « Taux d'apprentissage cyclique pour les réseaux de neurones de formation », arXiv : 1506.01186v6, 2017.


Voir la vidéo: How to calculate Distance between two city or 2 points lat, lon based on Haversine Formula (Octobre 2021).