Corrections DGPS sur Android
Je développe un projet qui est destiné à utiliser les capacités GPS D'un téléphone Android et d'une station à proximité pour calculer le positionnement à un degré beaucoup plus précis (cm), en utilisant la technologie RTK DGPS.
Jusqu'à présent, je n'ai pas été en mesure de voir quelqu'un dire qu'ils ont effectivement réussi à effectuer une tâche similaire (à part @GPSmaster, qui n'explique pas comment), et L'APK ne semble pas offrir d'informations de la puce GPS autres que l'emplacement et les mises à jour des messages NMEA. J'ai besoin d', si possible, pseudo-plages et phases porteuses.
Je me demandais si:
- Il serait possible de rechercher des crochets de niveau inférieur sur mon téléphone en utilisant du code natif, ou un autre snooping de niveau inférieur;
- Il serait possible d'envoyer des corrections RTCM à la puce GPS présente sur l'un de ces appareils;
Des idées?
7 réponses
Non, il n'est pas pratique d'obtenir un accès de niveau inférieur à L'appareil GPS par une application Android. Cela a plusieurs raisons:
L'application n'a aucun autre moyen d'accéder à L'appareil GPS que par le biais de L'API basée sur Java. Le code natif est interdit d'utiliser la plupart des appareils et a généralement besoin D'un wrapper Java pour tunnel à travers le bac à sable pour les appareils de capteurs Android. Cela constitue le concept de sécurité principal.
Si le code natif aurait accès à L'appareil GPS sur un niveau inférieur, il devrait faire face à plusieurs protocoles de fabricants différents maintenant non abstraits par L'API. Les meilleures chances sont d'avoir accès à des codes NMEA personnalisés, qui peuvent encore avoir des mises en garde dépendantes du périphérique.
Même si un accès de niveau inférieur serait possible, on perd la fusion intégrée d'autres sources de localisation comme le WLAN et le support de téléphone portable, qui sont vraisemblablement fusionnées en code natif sous L'API Java mais au-dessus du protocole NMEA.
Généralement parlant DGPS est une technique qui améliore la précision de la position réelle en annulant la plupart des effets atmosphériques sur le signal GPS. Dans une mesure GPS directe typique, il y a une erreur aléatoire dans les plages calculées pour les satellites en raison des effets atmosphériques. C'est pourquoi un récepteur GPS qui est laissé collecter des données dans un emplacement fixe semblera errer avec une ellipse d'erreur. Pour deux stations récepteurs dans la même zone les effets atmosphériques sont presque identiques et ils errent en parallèle dans leurs ellipses d'erreur de taille similaire et orientées. Si l'un des deux récepteurs est à un endroit connu, alors les différences dans leurs emplacements GPS apparents peuvent être prises et tracées à partir de l'emplacement réel de la station connue pour trouver l'emplacement réel de la station inconnue.
Retour à l'époque (vers 1992) où nous devions accomplir DGPS par "post-traitement" nous avions l'habitude de prendre les données NEMA brutes recueillies aux deux stations correspondent aux temps, calculer le vecteur de base et l'appliquer au point connu pour trouver le point inconnu. Je pense que les données NEMA que nous utilisions n'ont été enregistrées que dans les 10 secondes les plus proches.
Je soupçonne que les messages GPS NEMA [ http://developer.android.com/reference/android/location/GpsStatus.NmeaListener.html ] à partir d'une tablette à un point connu (avec une vue du ciel clair) pourrait probablement être envoyé sur une prise internet à un téléphone intelligent (également avec une vue du ciel clair), qui pourrait alors calculer la différence et atteindre un emplacement relatif sous-mètre sur une distance de quelques km, même si les temps de transit Internet supposés ont été ignorés. Cette technique fonctionnerait probablement encore même si la tablette et le téléphone intelligent appliquaient tous deux des ajustements DGPS de diffusion.
Avec l'andvent d'Android 7.1, les données brutes des puces GPS seront disponibles pour les développeurs. (http://gpsworld.com/google-to-provide-raw-gnss-measurements/)
Autres semblent avoir fait quelque chose de similaire à ce que vous souhaitez accomplir (http://gpsworld.com/innovation-precise-positioning-using-raw-gps-measurements-from-android-smartphones/)
Umm. Votre android a probablement une telle antenne GPS de merde que la réalisation de la précision cm est impossible. Peut-être que si vous faites la moyenne de la position pendant des jours.. habituellement, le support DGPS n'est pas publié et peu de chipsets le supportent. La dernière fois que J'ai vu DGPS implémenté, il s'agissait de pirater le firmware de la puce GPS réelle pour ajouter du support. Même obtenir A-GPS pour travailler sur un chipset aléatoire est incertain car ils pourraient ne pas soutenir une façon documentée d'alimenter les données d'assistance.
Vous pouvez utiliser les corrections DGPS en Europe via une application personnalisée pour la réception des signaux de correction SISnet des satellites d'augmentation EGNOS ( http://egnos-portal.gsa.europa.eu/news/egnos-gets-invite-your-smartphone-11 ). Il a cependant besoin d'un abonnement (qui n'est pas encore vraiment ouvert au public) à SISnet pour obtenir le nom d'utilisateur et le mot de passe pour la connexion à leurs serveurs. Il y a quelques-uns des SDK publiés que vous pouvez trouver utile. Rappelez-vous juste que vous êtes limité aux signaux C/A seulement (pseudoranges) et vous ne pouvez pas obtenir de données de phase (L1 / L2) à partir de ces puces bon marché à l'intérieur des smartphones.Vous auriez besoin d'un récepteur GNSS de précision tel que Trimble BD910 ( http://www.trimble.com/gnss-inertial/bd910.aspx?dtID=overview ) pour pouvoir accéder au signal de phase porteur L1 pour GPS & GLONASS. Il existe cependant des puces moins chères qui prennent en charge SBAS mais aucune n'est encore installée nativement dans les téléphones.
Il doit être lié à l'implémentation matérielle, plutôt qu'à l'implémentation logicielle.
Dans la réalité, le GPS est généralement accompagné D'une connexion Wi-Fi ou 3G pour aider à rechercher la position actuelle.
RTCM
correction peut être envoyé à votre téléphone android en utilisant NTRIP 'provider'
. Ensuite, vous devez l'appliquer à votre GPS raw dans votre android.