por msamsoniuk » 28 Jan 2008 23:50
se eh acelerometro, mede aceleracao, entao p/ obter velocidade e posicao vc tem q integrar 2x. como provavelmente vc vai ler os valores do acelerometro periodicamente, digamos, a 1KHz, vc poderia usar a seguinte tecnica:
float ax=0,vx=0,sx=0,dt=0.001; // dt = 1/1KHz
interrupcao_timer_1khz:
ax = le_acelerometro_eixo_x();
vx += ax*dt;
sx += vx*dt;
return;
isso supondo q a funcao retorna o valor do acelerometro em m/s², entao vc tem uma consistencia dimensional q permite ir integrando discretamente a velocidade e o deslocamento (isso calculado apenas p/ uma direcao, no caso eixo x). a cada interacao, vc adiciona nas somatorias uma nova amostra, eh uma tecnica usada em simuladores e deve funcionar bem.
em casos mais realistas, vc vai ter 3 acelerometros pegando os 3 eixos, porem isso dah um resultado parcial, pq nao contempla a rotacao dos eixos. para compensar a rotacao vc teria dae q ter acelerometros em 3 extremos do veiculo, de modo a detectar as rotacoes em torno do eixo, efetivamente criando tambem um giroscopio de 3 eixos.