Détecter le «manque de mouvement» sur un appareil GPS

21

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.

Shaamaan
la source
7
si vous avez un accéléromètre intégré à votre traceur, vous pouvez exploiter les données de l'accéléromètre pour détecter si le véhicule bouge vraiment et vous pouvez désactiver le suivi GPS s'il ne bouge pas.
geogeek
2
Votre appareil GPS enregistre-t-il la qualité du signal, le nombre de satellites, ce genre de données? De plus, il semble que vous «afficherez plus tard les mouvements ...» alors pourriez-vous confirmer que ce n'est pas un problème de détection en temps réel , plutôt quelque chose que vous filtrerez plus tard pendant le traitement?
Simbamangu
J'ai édité ma question pour donner plus d'informations. En bref: l'accéléromètre agit comme un fou, nous avons accès au nombre de satellites ou aux informations de qualité, mais nous ne savons pas comment les utiliser, et oui, ce n'est PAS un problème de détection en temps réel.
Shaamaan
2
Vous trouverez quelques recommandations utiles sur le site de statistiques concernant la détection des valeurs aberrantes et le lissage .
whuber
1
Geofence - lorsqu'un véhicule se trouve dans une zone (c.-à-d. Garage, puis n'enregistrez pas la position) - androidzoom.com/android_applications/geofencing
Mapperz

Réponses:

5

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:

  • stationary_speed = si l'unité mobile va plus lentement que cela, alors elle est stationnaire
  • too_fast = si l'unité mobile va plus vite que cela, alors elle a donné une fausse lecture GPS

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.

katahdin
la source
L'appareil GPS renvoie un certain nombre de données avec chaque paquet envoyé, y compris la position et la vitesse actuelle. Nous avons déjà un système en place où, si la vitesse est inférieure à une certaine valeur, nous supposons que le véhicule ne bouge pas, cependant il y a des cas où un véhicule enverra des données avec des vitesses supérieures à ce seuil, bien qu'il soit immobile (note: ceux les vitesses ne sont pas si bonnes que nous pourrions ajouter une limite supérieure). Je ne sais pas si le calcul de la vitesse basé uniquement sur les positions (plutôt que sur la lecture GPS) est une bonne idée.
Shaamaan
2

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.

Shaamaan
la source
Les informations sont toujours utiles pour déterminer les données erronées. Je fais beaucoup de filtrage «correct» sur cette base. 9 est toujours élevé, êtes-vous sûr que la puce ne répète pas la dernière bonne valeur connue, ils ont cette fonctionnalité à bord et elle est activée la plupart du temps.
Glenn Plas
Le principal problème concerne les véhicules qui sont entreposés dans un hangar quelconque pour la nuit. Je ne pense pas que cela répète la dernière position connue, car les véhicules disparaîtront complètement s'ils entrent / sont stockés dans des garages en béton (ou quoi que ce soit de plus solide). La chute des satellites est un indicateur, mais elle semble subtile et il s'est avéré beaucoup plus facile de modifier et d'utiliser les données du capteur de mouvement.
Shaamaan
Pas sur les 3000+ véhicules que je surveille, vous avez besoin du nombre de sats utilisés pour prendre la correction, pas ceux en vue. Ceux-ci peuvent rester élevés lorsque vous avez un toit qui laisse toujours passer un signal. Mais le correctif est un bon indicateur, avec les valeurs de gain Db.
Glenn Plas
Je peux parfaitement dire quels sont ceux qui sont à l'intérieur / à l'extérieur d'un garage quelconque. Je ne souffre pas non plus du problème de l'araignée car l'état de mouvement / non-mouvement le piège. Je suis d'accord que les capteurs vous donnent beaucoup plus pour continuer.
Glenn Plas
1
Il est tout à fait possible que mon collègue ait configuré le nombre de satellites visibles par erreur, plutôt que le nombre utilisé pour un correctif (tout ce que j'ai vu était une feuille Excel avec des données avec des titres de colonnes remplis manuellement). : P Dans tous les cas, comme je l'ai écrit, le capteur de mouvement réglé était notre moyen de sortir de ce problème.
Shaamaan
2

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.

Glenn Plas
la source
1
Je dois commenter l'idée de collecter des tensions. C'est excellent! Nous avons pas mal de problèmes avec certains véhicules et nous ne savons pas pourquoi. Nous soupçonnons actuellement que cela pourrait être dû à des compétences médiocres de la part du technicien qui a monté les dispositifs de suivi, ce qui entraîne des problèmes de tension, bien qu'il puisse également s'agir de sabotage (oui, sabotage; nous surveillons les niveaux de carburant et les pilotes n'aime pas ça). Si nous pouvons enregistrer la tension sur les appareils de suivi, cela devrait aider énormément. :) Un énorme coup de pouce! (J'en donnerais plus d'un, mais malheureusement, je ne peux pas ...)
Shaamaan
Cela fonctionne pour tous les véhicules qui n'ont pas de régulateur de tension entre votre traceur. Vérifiez ce lien dans le programme de configuration de KCS, c'est l'unité dont je parle, lancez-le et voyez ce que vous pouvez faire concernant la détection de mouvement, vous serez surpris. Téléchargez celui-ci , qui est le dernier logiciel des unités revision9. L'idée de tension est la leur. Vous y verrez de bons défauts par défaut (camion / voiture / moteur)
Glenn Plas
Le nombre de sats est un mauvais indicateur, vous voulez vraiment que le nombre de sats utilisé pour prendre le dernier correctif (c'est la valeur que vous regardez, ce n'est pas un indicateur de situation actuelle), bien que le nombre de sats vous permettra de déterminer des points absolument mauvais, cela ne vous aidera pas dans la zone grise, par exemple les échantillons de qualité médiocre. Vous devez combiner différents capteurs. Le calcul de la vitesse fait essentiellement la même chose que votre puce GPS, et cette qualité dépend également du nombre d'échantillons que vous prenez (les routes ne sont pas droites partout) et de leur précision. Problème d'oeufs de poule
Glenn Plas
0

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.

HDunn
la source
1
Étant donné que les véhicules sont problématiques lorsqu'ils ne se déplacent pas sur les parkings ou les garages, cela n'est pas du tout utile. :(
Shaamaan
0

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.

Sarge
la source
Le terme pour cela est Erreur
multivoie