Sto solo pensando ad alta voce e non ho ancora giocato con un'API di accelerometro Android, quindi abbi pazienza.
Prima di tutto, tradizionalmente, per ottenere la navigazione dagli accelerometri avresti bisogno di un accelerometro a 6 assi. Sono necessarie accelerazioni in X, Y e Z, ma anche rotazioni Xr, Yr e Zr. Senza i dati di rotazione, non hai dati sufficienti per stabilire un vettore a meno che non presumi che il dispositivo non cambi mai il suo atteggiamento, il che sarebbe piuttosto limitante. Nessuno legge comunque il TOS.
Oh, e sai che l'INS va alla deriva con la rotazione della Terra, giusto? Quindi c'è anche quello. Un'ora dopo e misteriosamente stai salendo su un pendio di 15 ° nello spazio. Questo presuppone che tu abbia un INS in grado di mantenere la posizione così a lungo, cosa che un telefono non può ancora fare.
Un modo migliore per utilizzare gli accelerometri, anche con un accelerometro a 3 assi, per la navigazione sarebbe collegarsi al GPS per calibrare l'INS quando possibile. Dove il GPS non è all'altezza, l'INS si complimenta piacevolmente. Il GPS può improvvisamente spararti a 3 isolati di distanza perché ti sei avvicinato troppo a un albero. L'INS non è eccezionale, ma almeno sa che non sei stato colpito da una meteora.
Quello che potresti fare è registrare i dati dell'accelerometro del telefono e molti altri. Come settimane che valgono. Confrontalo con dati GPS buoni (intendo davvero buoni) e usa il datamining per stabilire la correlazione delle tendenze tra i dati dell'accelerometro e i dati GPS noti. (Suggerimento: ti consigliamo di controllare l'almanacco GPS per giorni con una buona geometria e molti satelliti. Alcuni giorni potresti avere solo 4 satelliti e non è abbastanza) Quello che potresti essere in grado di fare è scoprirlo quando una persona sta camminando con il telefono in tasca, i dati dell'accelerometro registrano uno schema molto specifico. Sulla base del datamining, stabilisci un profilo per quel dispositivo, con quell'utente, e quale tipo di velocità rappresenta quel modello quando aveva dati GPS per accompagnarlo. Dovresti essere in grado di rilevare svolte, salire le scale, sederti (calibrazione a 0 velocità tempo! ) e varie altre attività. Il modo in cui viene tenuto il telefono dovrebbe essere trattato come input di dati completamente separati. Sento odore di una rete neurale usata per fare il data mining. Qualcosa di cieco a ciò che significano gli input, in altre parole. L'algoritmo cercherà solo le tendenze nei modelli e non presterà realmente attenzione alle misurazioni effettive dell'INS. Tutto quello che saprebbe èhistorically, when this pattern occurs, the device is traveling and 2.72 m/s X, 0.17m/s Y, 0.01m/s Z, so the device must be doing that now.
E di conseguenza sposterebbe il pezzo in avanti. È importante che sia completamente cieco, perché il semplice fatto di mettere un telefono in tasca potrebbe essere orientato in uno dei 4 diversi orientamenti e 8 se cambi tasca. E ci sono anche molti modi per tenere il telefono. Stiamo parlando di molti dati qui.
Ovviamente avrai ancora molta deriva, ma penso che avresti più fortuna in questo modo perché il dispositivo saprà quando smetti di camminare e la deriva posizionale non sarà perpetua. Sa che stai fermo in base ai dati storici. I sistemi INS tradizionali non hanno questa caratteristica. La deriva si perpetua in tutte le misurazioni future e si compone in modo esponenziale. Una precisione empia, o avere una navigazione secondaria da controllare a intervalli regolari, è assolutamente vitale con l'INS tradizionale.
Ogni dispositivo e ogni persona dovrebbe avere il proprio profilo. Sono molti dati e molti calcoli. Ognuno cammina a velocità diverse, con passaggi diversi, e mette i propri telefoni in tasche diverse, ecc. Sicuramente per implementare questo nel mondo reale sarebbe necessario gestire il numero di scricchiolii lato server.
Se hai utilizzato il GPS per la linea di base iniziale, parte del problema è che il GPS tende ad avere le proprie migrazioni nel tempo, ma sono errori non perpetui. Posiziona un ricevitore in una posizione e registra i dati. Se non ci sono correzioni WAAS, puoi facilmente ottenere correzioni di posizione che vanno alla deriva in direzioni casuali a 100 piedi intorno a te. Con WAAS, forse fino a 6 piedi. Potresti effettivamente avere più fortuna con un sistema RTK sub-metro su uno zaino per abbattere almeno l'algoritmo dell'ANN.
Avrai ancora una deriva angolare con l'INS usando il mio metodo. Questo è un problema. Ma se sei andato così lontano per costruire una ANN per versare più di settimane di dati GPS e INS tra n utenti, e in realtà hai funzionato fino a questo punto, ovviamente non ti dispiace per i big data finora. Continua su questa strada e utilizza più dati per risolvere la deriva angolare: le persone sono creature abitudinarie. Facciamo più o meno le stesse cose come camminare sui marciapiedi, attraverso le porte, su per le scale e non facciamo cose folli come attraversare autostrade, muri o balconi.
Quindi diciamo che stai prendendo una pagina dal Grande Fratello e inizi a memorizzare i dati su dove stanno andando le persone. Puoi iniziare a mappare dove ci si aspetta che le persone camminino. È una scommessa abbastanza sicura che se l'utente inizia a salire le scale, si trova alla stessa base delle scale su cui è salita la persona prima di lei. Dopo 1000 iterazioni e alcuni aggiustamenti dei minimi quadrati, il database sa praticamente dove si trovano quelle scale con grande precisione. Ora puoi correggere la deriva angolare e la posizione mentre la persona inizia a camminare. Quando colpisce quelle scale, o abbassa il corridoio o percorre un marciapiede, qualsiasi spostamento può essere corretto. Il database conterrebbe settori ponderati in base alla probabilità che una persona ci cammini o che l'utente abbia camminato lì in passato. I database spaziali sono ottimizzati per questo utilizzodivide and conquer
per allocare solo i settori significativi. Sarebbe un po 'come quei progetti del MIT in cui il robot equipaggiato con il laser inizia con un'immagine nera e dipinge il labirinto nella memoria prendendo ogni svolta, illuminando dove sono tutti i muri.
Le aree ad alto traffico otterrebbero pesi maggiori e le aree in cui nessuno è mai stato pesato 0. Le aree a traffico elevato hanno una risoluzione maggiore. In sostanza, ti ritroveresti con una mappa di ovunque sia stato qualcuno e la userai come modello di previsione.
Non sarei sorpreso se tu potessi determinare quale posto ha preso una persona in un teatro usando questo metodo. Dato un numero sufficiente di utenti che vanno a teatro e una risoluzione sufficiente, avresti i dati che mappano ogni riga del cinema e la larghezza di ciascuna riga. Più persone visitano un luogo, maggiore è la fedeltà con cui potresti prevedere che quella persona si trova.
Inoltre, ti consiglio vivamente di ottenere un abbonamento (gratuito) alla rivista GPS World se sei interessato alla ricerca attuale su questo genere di cose. Ogni mese ne vado matto.