Op het gevaar af te ontaarden in een wellesnietes discussie, de handleiding geeft duidelijk aan dat hij de hoek kan bepalen tussen de zwaartekrachtsvector en zijn eigen as. Hij kan dus verder geen hoeken meten (Zoals ik al zei, daarvoor heb je gyro's nodig).
Dus kun je de looprichting maar op één manier bepalen, en dat uitgaande van de veronderstelling dat de x-as altijd wijst in de looprichting. De wandelaar moet het apparaat vasthouden alsof hij vast verbonden is met zijn lichaam (dus niet t.o.v. de aarde want dat is niet uitvoerbaar, hoewel het erg fijn zou zijn voor de berekening).
Je moet nu aannemen, dat zolang de snelheid in looprichting geen nul geworden is, deze alleen wordt bepaald door de versnelling in x-richting. De versnelling in y-richting mag niet worden opgevat als een stap opzij, maar als het inzetten van een bocht. De gemeten y-versnelling is dus - (de centripetale versnelling). Pas als de snelheid beneden een bepaalde waarde is gekomen, zeg 1 m/s, mag een y-versnelling worden opgevat als een stap opzij. De snelheid wordt nu geacht te liggen in y-richting, en in het verhaal van boven wisselen x en y van rol.
Misschien mag je ook aannemen dat opzij stappen zodanig langzaam gaat, dat de beweging in die richting beperkt blijft tot losse stappen. Dat merk je dan aan een cyclische versnelling in y-richting (stap, stop, stap, stop), met een herhalingstijd van ongeveer een seconde. In dat geval behandel je de beide bewegingen dus geheel anders.
Nu zie ik, dat je nog steeds geen idee hebt hoe je de versnelling in x-richting gebruikt om de afgelegde afstand te bepalen. Ik noem even dt de bemonsteringstijd (.475 ms). Dat betekent dat je tussen twee tijdstippen op een afstand van dt geen informatie hebt over de beweging. De gemakkelijkste berekening is nu, dat je de snelheid in x-richting (v) voortdurend aanpast aan de gemeten versnelling, dus
\(v_n_i_e_u_w=v_o_u_d+ a.dt\)
De in die tijd afgelegde afstand is
\(x_n_i_e_u_w=x_o_u_d+ v_o_u_d.dt\)
Dit houdt je op alle meetmomenten vol, net zolang tot xnieuw 30 m is, of als de snelheid onder de grenswaarde (zie boven) komt. In dat laatste geval wacht je af tot er een nieuwe versnelling wordt gemeten en begint het proces opnieuw.
Ik weet dat er enorm veel vereenvoudigingen zitten in dit verhaal. Uitgaande van de apparatuur die tot je beschikking staat is dit volgens mij het maximaal haalbare. Je kan de algortime verfijnen met een filter, dat de gemeten versnellingen afvlakt. Maar een kortere rekentijd, zoals je 1ms, heeft geen zin, omdat je dan gewoon 100 keer dezelfde berekening uitvoert met dezelfde versnelling. Bovendien geven zulke rekentrucs een schijnzekerheid, omdat de onzekerheid over de bewegingen van het apparaat (verdraaiingen) veel groter is.
Je kan gaan rekenen in z-richting, zodat lopen op een helling kan worden verrekend. Dat lijkt aantrekkelijk, maar volgens mij zijn de optredende verticale versnellingen bij lopen zo groot, dat je daar een geleidelijke stijging niet uit kan filteren.
Ik heb vrijwel de hele oplossing gegeven voor mijn grove vereenvoudiging van de werkelijkheid. Ik ga er van uit dat dit niet de hele oplossing is voor jullie probleem (de groep van TS, niet de overige gebruikers). Misschien kunnen jullie er desondanks iets mee. Succes,