Nous utilisons un dispositif de suivi GPS monté dans des véhicules et affichons plus tard les mouvements dans notre application. Nous avons cependant un petit problème avec les véhicules lorsqu'ils ne se déplacent PAS.
Malgré son immobilité, l'appareil GPS enverra des informations à différentes positions, parfois il signalera même que le véhicule se déplace (de temps en temps, il signalera qu'un véhicule se déplace assez rapidement). Le résultat final est une représentation laide du mouvement dans notre application, et pire, des calculs incorrects en ce qui concerne la durée pendant laquelle le véhicule se déplaçait et restait immobile (nous avons également une analyse statistique en cours).
Je sais que le problème n'est pas nouveau: Google Navigation sur mon téléphone Android a également des problèmes lorsque je m'arrête à un carrefour de temps en temps, détectant que je conduis maintenant dans la direction opposée (alors qu'en fait, je suis immobile ).
Mais nous devons vraiment avoir une méthode pour dire que le véhicule ne bouge pas, surtout pendant de longues périodes.
Le problème est aggravé dans certains véhicules qui sont gardés sous des toits pour la nuit, ce qui fait que le GPS se déchaîne en raison d'un signal plus faible (qui est toujours assez fort pour obtenir une position cependant).
Nous pouvons détecter si le moteur du véhicule est allumé ou éteint, mais nous ne pouvons pas supposer qu'il ne bouge pas avec le moteur éteint (il y a eu des incidents où un véhicule endommagé a été remorqué ... et bien sûr il y a un cas de vol potentiel qui doit également être signalé).
Quelle est la meilleure façon d'aborder ce problème?
ÉDITER:
Pour ajouter plus d'informations:
L'appareil GPS a un accéléromètre, mais cela ne renvoie qu'une information binaire (se déplaçant / ne bouge pas) et il est soit trop sensible ou tout simplement ne fonctionne pas.
Nous avons accès à des choses comme le nombre de satellites ou la qualité, mais nous ne savons pas comment utiliser ces informations. D'où ma question. :)
Le problème n'est pas de détecter si un véhicule se déplace ou non en temps réel. Nous collectons les données, puis effectuons une analyse statistique et les affichons. Nous montrons la position actuelle du véhicule, mais cela a peu d'importance. Donc, fondamentalement, nous devons être en mesure de dire qu'un véhicule se déplaçait ou ne se déplaçait pas en consultant les données historiques.
la source
Réponses:
Les commentaires sous votre question soulèvent de bons points, en particulier sur l'interprétation de la qualité des données satellite (nombre de satellites, puissance du signal), et vous pouvez utiliser ces informations soit sur l'appareil mobile soit sur le serveur pour filtrer les "mauvaises" valeurs GPS. La question se résume à deux parties: 1) comment définissez-vous une lecture GPS parasite, et 2) comment définissez-vous un état stationnaire.
Commençons par quelques paramètres:
Il est difficile de calculer ces vitesses avec précision. Supposons que vous calculez la vitesse comme le / entre la lecture précédente (à t0) et la lecture actuelle (à t1). Si le delta temporel est grand et que l'unité fait le tour d'une courbe, la distance réelle parcourue sera supérieure à la distance calculée. De plus, si vous obtenez deux lectures parasites d'affilée et qu'elles sont suffisamment proches l'une de l'autre, vous pouvez obtenir des résultats imprévisibles.
Une fois que vous avez la vitesse, comparez-la simplement à vos paramètres pour voir si la lecture GPS est fausse ou si l'appareil est immobile.
Vous pouvez effectuer un filtrage plus sophistiqué avec des filtres Kalman , mais cela peut être beaucoup plus complexe.
la source
Nous avons réussi à modifier les données du capteur de mouvement.
En utilisant les données du capteur de mouvement, les données d'allumage et la vitesse rapportées par le tracker GPS, nous devrions être en mesure de dire quand un véhicule se déplace ou non avec une assez bonne précision.
Nous avons également jeté un coup d'œil au nombre de satellites, et cela ne semblait pas très bien. Alors que le nombre de satellites était plus faible pour un véhicule sous un toit, il était encore relativement élevé. 9-10 est la valeur habituelle pour un tel véhicule, tandis que sous un toit, il tombe à 7 (mais peut parfois recevoir un signal et monter également). Il va sans dire que le nombre de satellites s'est avéré moins qu'utile.
la source
Vous pouvez utiliser le nombre de sats utilisés pour prendre la dernière correction, pas ceux en vue. Par exemple. View = 11, Fix = 5 Et utilisez les valeurs Max DB du signal du sat le plus fort. Cela doit être supérieur à 30 dB pour obtenir un signal décent.
Les appareils que nous utilisons ont un concept de mouvement / non-mouvement, les capteurs sont: l'accélération, les vibrations, la tension d'entrée, le signal d'entrée (du contact clé), les données GPS. Pour signaler des positions telles que le démarrage / l'arrêt (il est basé sur un événement) et les événements de direction / distance, l'appareil doit être en mode de déplacement (il s'agit d'un compte à rebours, configurable).
Les capteurs peuvent être combinés. Aucun événement de direction / distance ni aucun chronomètre ne sont signalés pendant que le traceur décide de ne pas être en mode de déplacement. Lorsque les capteurs impliqués cessent de signaler, le chronomètre décompte jusqu'à zéro, puis un événement d'arrêt est généré + l'unité est mise en mode immobile. Jusqu'à la prochaine fois. De cette façon, vous pouvez séparer les valeurs d'accélération d'un moteur de démarrage pour le «mettre» en mode de déplacement, et un seuil inférieur séparé pour le «garder» en mode de déplacement car les deux sont des modèles d'accélération très distincts.
Les unités que nous utilisons indiqueront si un point a été pris avec des données sat saturées, je ne sais pas si votre matériel le fait. Nous avons soit un SV_Position ou un SV_KeepAlive ou SV_TimeAlive. Le Keepalive répétera la dernière valeur exacte car le GPS ne peut pas mettre à jour ses tableaux ni obtenir une correction précise du tout, même pas une mauvaise. Le TimeAlive est ce que vous verrez lorsque vous traversez un tunnel ou que quelqu'un s'est garé dans un garage.
Une façon de surveiller également, bien que ce soit une supposition éclairée en partie et cela dépend du type d'actifs que vous suivez, c'est la tension d'alimentation. par exemple. un appareil fonctionnant à 12h30 est une voiture dont le moteur ne tourne pas. Si vous en voyez un qui rapporte 14.2v, vous savez que l'alternateur tourne. Pour les véhicules 24 V, il existe un schéma similaire à repérer.
J'espère que cela vous donne quelques idées. Tout dépend un peu de la qualité du matériel. La source de vos données commence là-bas et tout le reste après, c'est aussi bon que ça. Mais je vous encourage fortement à utiliser les capacités des unités pour faire la distinction de qualité au lieu de tout faire côté serveur (avec le recul). Une fois que vous aurez aimé 3000 unités, vous aurez besoin d'un serveur costaud pour analyser en permanence toutes les données de suivi, alors vous vous rendrez compte qu'il ne s'agrandira pas.
la source
J'ai eu un problème similaire lors de l'utilisation d'un enregistreur GPS pour suivre un scooter. Ce que j'ai fait, c'est superposer la trace GPS sur une couche routière et supprimer manuellement les emplacements erronés dans ou près d'une intersection ou d'un feu de circulation. Je suis sûr qu'il existe des outils automatisés pour traiter cela, probablement des tampons autour des intersections, et calculer le temps minimum et maximum dans et hors de ce tampon.
la source
Le terme de l'art pour cela est l' araignée . Une approche courante consiste à simplement échantillonner uniquement lorsque le correctif est à 10 m du correctif précédent. Par exemple, les ordinateurs de poche Garmin enregistrent des correctifs en fonction de la distance tandis que les montres de fitness enregistrent des correctifs en fonction du temps . Les ordinateurs de poche n'ont pas beaucoup d'araignée, mais les montres le font.
la source