Cálculo de velocidade através do acelerômetro

1,865 views
Skip to first unread message

Gorio

unread,
Mar 19, 2015, 2:45:22 AM3/19/15
to androidbrasil-dev, sis_emb...@googlegroups.com

Bom dia,

Gostaria se saber se consigo calcular a velocidade utilizando o acelerômetro de um celular.

Infelizmente não posso utilizar o gps para isso, pois onde vou testar não pega sinal de gps ou antena de celular.

Obrigado

Atenciosamente

Gorio

Igor Borges Tavares

unread,
Mar 19, 2015, 6:59:44 AM3/19/15
to sis_emb...@googlegroups.com, androidbrasil-dev
Na teoria se você conseguir uma taxa de amostragem determinística seria apenas você remover a gravidade e integrar a aceleração resultante para ter a velocidade.
Entretanto você iria integrar o erro intrínseco do sensor junto, e com o tempo esse erro iria aumentar e tender ao infinito... :(

Tem acesso a giroscópio e magnetômetro? Existem alguns algoritmos que fazem a fusão de mais de um sensor desses de navegação inercial, e com isso conseguem fazer algumas mágicas...

Gorio

--
Você recebeu essa mensagem porque está inscrito no grupo "sis_embarcados" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para sis_embarcado...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para sis_emb...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/sis_embarcados.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Igor Borges Tavares
Skype: igorborgest
Mobile: (19) 98406-2544

Gorio

unread,
Mar 19, 2015, 7:40:36 AM3/19/15
to sis_emb...@googlegroups.com

Tenho acesso sim.

Poderia me dizer o de consigo esses algoritmos ou onde pesquisar sobre o assunto ?

Obrigado

Gorio

Magnus

unread,
Mar 19, 2015, 7:52:54 AM3/19/15
to sis_emb...@googlegroups.com
Gorio,

O processo se chama "dead reckoning" e alguns módulos GPS já fazem para você. Como disse o Igor, o erro vai crescendo com o tempo, então é importante que de tempos em tempos você consiga ter uma referência para fixar a posição novamente.

Magnus

Igor Borges Tavares

unread,
Mar 19, 2015, 8:52:26 AM3/19/15
to sis_emb...@googlegroups.com
Infelizmente eu não tenho nenhuma pasta nos meus favoritos com esse assunto para ti passar os links. :(

Mas um projeto muito bacana que eu lembro de ter visto foi o x-IMU.
Que além de integrar a aceleração uma vez para obter a velocidade, eles integram ela uma segunda vez para obter o espaço percorrido.
Claro que esse não é um processo simples, e eles usam vários algorítimos para isso.

Enfim, eu não sei falar sobre a precisão, mas graficamente parece que os resultados são satisfatórios. vou deixar os links aqui, assista o vídeo que é bem legal.

Felipe Neves

unread,
Mar 19, 2015, 11:46:36 AM3/19/15
to sis_emb...@googlegroups.com
Integra a velociddade com taxa de amostragem fixa como a turma ja disse.

Porém...

Passa os valores amostrados vindos do accel num filtro kalmann para melhorar a estimação, do valor, ajuda e muito com acumulação de erro durante o processo de integração, problema é a teoria:


Abs.

Felipe

Felipe Neves

unread,
Mar 19, 2015, 11:47:23 AM3/19/15
to sis_emb...@googlegroups.com
Ops, onde digo integra a velocidade, leia-se integra o dado vindo do acelerômetro.

Helio coragem

unread,
Mar 19, 2015, 5:49:49 PM3/19/15
to sis_emb...@googlegroups.com, androidb...@googlegroups.com
Olá Gorio,


Se a leitura da aceleração for realmente precisa, revendo a teoria de física (cinemática)



Função horária da velocidade: 

Função horária da posição em função do tempo: 

onde

O restante é cálculo.

Se a aceleração for zero, o veiculo está em velocidade constante, nem acelerando nem freando, 
portanto é necessário  ter também a leitura de velocidade, que pode ser calculada pelo deslocamento
(leitura do odometro) e o tempo.

Não sei se ajudou.

Abs

Helio

Gorio

unread,
Mar 19, 2015, 9:59:48 PM3/19/15
to sis_emb...@googlegroups.com
Eu agradeço por me fazer lembrar das aulas de física da faculdade, mas o meu caso não tem odômetro, irei utilizar um celular.

Pra ser mais preciso a ideia é medir a velocidade quando eu tiver dentro do metrô em SP, ou seja, dentro do metrô o GPS não funciona de forma precisa ao ponto de eu calcular a velocidade, portanto só me resta utilizar os demais sensores do aparelho como Giroscópio, Acelerômetro e Geomagnético.

A velocidade medida não precisa ser de alta precisão, apenas preciso saber se a velocidade atingida foi maior que 20 km/h

Obrigado a todos que responderam por enquanto.

Atenciosamente

Gorio
(www.gorio.eng.br)

 


--

Renato Souza Sanabria

unread,
Mar 19, 2015, 11:04:47 PM3/19/15
to sis_emb...@googlegroups.com
Você quer medir a velocidade do metrô por meio do acelerômetro do celular?

Se for isso, não é possível. Lembre-se que quando você está segurando um celular dentro do metrô ele passar a ficar em repouso em relação ao metrô, por causa da força que você aplica nele.

Dessa maneira, independente da aceleração do vagão, a aceleração medida pelo acelerômetro será apenas a gravidade, como se ele estivesse parado do lado de fora do metrô. O único modo de medir desse jeito seria se o celular estivesse em cima do piso do vagão e se esse piso fosse totalmente sem atrito.


Renato Sanabria

 
--
Renato Sanabria

Alain

unread,
Mar 20, 2015, 1:38:18 AM3/20/15
to sis_emb...@googlegroups.com

Não pela física que eu estudei!!!

Enviado através do AquaMail para Android
http://www.aqua-mail.com

José Ricardo Borba

unread,
Mar 20, 2015, 5:15:49 AM3/20/15
to sis_emb...@googlegroups.com
Hehehe. +1 Alain!
Acho que houve um "misconception" aqui....

Calibrar o ZERO de aceleracao e' f'acil. Depois, integra a aceleracao em intervalos de tempo e soma os valores para a velocidade (eliminando a componente gravitacional em Z). A aceleracao e' medida em m/s^2, isto e', a variacao em m/s a cada segundo (a variacao da velocidade a cada segundo). Entao, se souber o zero de aceleracao e o zero da velocidade, fica facil de somar/subtrair  ate chegar no valor da velocidade atual "instantanea" . Nunca implementei isso, mas parece um 'otimo exercicio de Fisica.

Grande abraco,

José Ricardo Borba

Alain

unread,
Mar 20, 2015, 6:23:28 AM3/20/15
to sis_emb...@googlegroups.com

O exercício de física parace interessante, MAS...
Na prática os sensores têm limitações, aí é que a coisa pega. Por exemplo se a resolução for baixa, não vai integrar pequenas variaçoes de aceleração  :(
Então na prática pode ficar limitado

Enviado através do AquaMail para Android
http://www.aqua-mail.com

Igor Borges Tavares

unread,
Mar 20, 2015, 7:00:43 AM3/20/15
to sis_emb...@googlegroups.com
Concordo com o que o Alain disse.

Me soa quase impossível determinar a velocidade do trem apenas com o celular, entretanto como o objetivo é só determinar se o trem está acima de 20km/h talvez de pra fazer alguma coisas sim.

Agora posso estar viajando, mas acho que no final das contas você só quer saber se o trem está ou não em movimento certo?
Se for isso mesmo, acho que seria uma abordagem mais fácil de implementar, tentar reconhecer o padrão de vibração do trem em movimento com o acelerômetro. Ou até mesmo pegar o padrão de aceleração e de desaceleração do trem na hora de sair e entrar em repouso.

Eduardo Gabriel

unread,
Mar 20, 2015, 7:10:22 AM3/20/15
to sis_emb...@googlegroups.com
Bom dia,

Todos os  ardupilot, flightpilot e outros pilot para drones tem software aberto e nas bibliotecas você vai encontrar como fundir os dados de um giroscópio com um acelerômetro. Envolve filtro de kalman e quaternation.

Problema 1. O seu aplicativo precisa ser iniciado quando o metrô ainda está parado.
Problema 2. Isso de fato acumula um erro danado que geralmente é zerado de tempo em tempo ou continuamente através dos dados do GPS.
Problema 3. Você precisa de um sistema de tempo real pois o tempo de integração entra na conta, não sei se dá pra fazer isso em Android e afins sem um uC externo pra mastigar isso.

Abraço, Eduardo Gabriel

Renato Souza Sanabria

unread,
Mar 20, 2015, 7:12:13 AM3/20/15
to sis_emb...@googlegroups.com
Realmente eu me enganei. Quanto ao filtro de kalman, soh faz sentido se voce tiver um bom modelo do seu sistema, que não é o caso. 

Porém, uma aproximacao que pode ser razoavel é considerar que a aceleracao é constante entre duas medidas, que é o que se usa nessas integracoes e adicionar ruido para modelar a incerteza neste modelo. Nesse caso o seu sistema seria algo do tipo:

[v a]'(k+1) = [1 dT; 0 1]*[v a]'(k) + [r1 r2]'
y(k) = [0  1]*[v a]'(k) + [r3]

v:velocidade
a:aceleracao
r1: ruido no calculo da velocidade
r2: ruido no calculo da aceleracao
r3: ruido na medida da aceleracao
y: saida do acelerometro
k: tempo

O grande segredo eh modelar esses ruidos (saber a variancia deles). O da medida voce pode estimar atraves da leitura do acelerometro parado (talvez venha no datasheet), pro [r1 r2] voce vai precisar de um pouco de arte :)


Renato Sanabria

Fernando Ginez da Silva

unread,
Mar 20, 2015, 7:13:10 AM3/20/15
to sis_embarcados
Acrescentando informações práticas ao comentário do Alain, além das limitações do sensor, como não existe acoplamento direto entre o sensor e o corpo do vagão, o próprio balanço do corpo do indivíduo que segura o celular ao sofrer aceleração com a partida e frenagem do trem, como também os inevitáveis esbarrões, irão inseminar acelerações indesejadas que resultam em um erro difícil de ser eliminado.

Estou certo?

_____________________________________________
Fernando Ginez da Silva

Alain Mouette

unread,
Mar 20, 2015, 7:50:18 AM3/20/15
to sis_emb...@googlegroups.com
E como você acrescenta o ruído? Monta o celular sobre um vibrador... não isso não seria randômico, então?

E tem que lembrar que se o Sensor é limitado em resolução, é porque ele é barato e não mede o que tem no meio, ou no mínimo, mede lixo...

Pelo que eu vi, estão começando a aparecer sensores com capacidade para fazer navegação inercial, mas não devem ser o que tem no celular :(


Alain Mouette
=== Projetos especiais: <http://lnkd.in/dEu8cNq> ===

Alain Mouette

unread,
Mar 20, 2015, 7:51:21 AM3/20/15
to sis_emb...@googlegroups.com
Não, o Sensor reporta a inclinada para frente assim como o retorno para a posição, tudo isso se o sensor for bom mesmo!


Alain Mouette
=== Projetos especiais: <http://lnkd.in/dEu8cNq> ===

Renato Souza Sanabria

unread,
Mar 20, 2015, 8:05:05 AM3/20/15
to sis_emb...@googlegroups.com
Quando digo adicionar ruido quero dizer "adicionar ao modelo matematico", acho que isso não é difícil de entender. 

Mais uma vez, ele serve justamente para descrever a incerteza no modelo utilizado , inclusive o proprio balanco do corpo do individuo como  o Fernando falou, que tambem precisa ser filtrado. 

Cleiton Bueno

unread,
Mar 20, 2015, 8:51:35 AM3/20/15
to sis_emb...@googlegroups.com, androidb...@googlegroups.com

Edgar Rondán Sanabria

unread,
Mar 20, 2015, 9:30:49 AM3/20/15
to sis_emb...@googlegroups.com, androidb...@googlegroups.com

Alain Mouette

unread,
Mar 20, 2015, 11:05:29 AM3/20/15
to sis_emb...@googlegroups.com
Inserir ruído não é um "Modelo matemático", é algo que tem que ser inserido no sinal antes de ser medido.

Não existe mágica, se um sinal é impreciso na sua origem, fazer um monte de contas em cima dele só pode piorar (devido aos erros acumulados de arredondamento...)

Não existe matemágica, isso é prestidigitação...


Alain Mouette
=== Projetos especiais: <http://lnkd.in/dEu8cNq> ===

Renato Souza Sanabria

unread,
Mar 20, 2015, 11:12:16 AM3/20/15
to sis_emb...@googlegroups.com

Realmente, o filtro de kalman eh algo inutil, apenas "matemagica" :)

O que funciona mesmo eh integrar sinal ruidoso...

Alain Mouette

unread,
Mar 20, 2015, 11:28:34 AM3/20/15
to sis_emb...@googlegroups.com
Acho que está faltando teoria básica nesta discussão...


Alain Mouette
=== Projetos especiais: <http://lnkd.in/dEu8cNq> ===

Helio coragem

unread,
Mar 20, 2015, 5:43:48 PM3/20/15
to sis_emb...@googlegroups.com
Olá Pessoal,

Nos anos 70, quando o metro começou a funcionar(1974), alguem do Metrô quis medir a aceleração 
e a frenagem do carro. Um pessoal da Física da USP levou um pendulo para dentro do metrô
e tentou calcular a aceleração. 
O principio era medir o angulo que o pendulo fazia com a vertical, cujo desvio seria causado pela 
aceleração ou frenagem do carro do metrô.
Como naquela época não existiam microcontroladores, nem sensores mais sofisticados, a medição  
do pendulo não obteve bons resultados.

@Gorio: Esta medição é para seu uso privado ou tem alguma coisa a ver com o pessoal do Metrô?

A meu ver, para simplificar o processo, poderia apenas contar o tempo que o acelerometro ficou 
em regime de aceleração até atingir 20 km/h. 
Veja que um carro que acelera de 0 a 100 km/h em 12 seg a aceleração é de 2,3 m/s2
Considerando que o carro do metro, com seus motores eletricos tenha uma aceleração semelhante,
para atingir 20 km/h ou  5.5 m/s levará apenas 2 segundos.
Portanto basta que a aceleração seja positiva durante 2 segundos e já se atingiu os 20 km/h.

Em realidade creio que o carro do metrô pode acelerar mais rápido que isto.

 Abs

Helio
...

Gorio

unread,
Mar 20, 2015, 8:12:41 PM3/20/15
to sis_emb...@googlegroups.com

Boa noite @Helio

A ideia é tentar criar um meio de saber onde o trem do metrô está de modo colaborativo. Dessa forma conseguirei incluir no app (iTransporte - www.itransporte.com.br ) que desenvolvi essa funcionalidade.

Se tivesse apoio do metrô as coisas seriam mais fáceis, portanto terei que tentar me virar sozinho.

Obrigado a todos que estão colaborando

Atenciosamente

Gorio

--

Rogério Poças

unread,
Mar 20, 2015, 8:53:55 PM3/20/15
to sis_emb...@googlegroups.com
Triangulação das antenas não ajuda?
Rogério Poças

Alain

unread,
Mar 20, 2015, 10:45:54 PM3/20/15
to sis_emb...@googlegroups.com

A aceleração de um carro do metrô é altamente controlada!
A derivada segunda da aceleração deve ser zero...
Essa equação é que dá a sensação de suavidade

Tem física no mumdo real !!!

Enviado através do AquaMail para Android
http://www.aqua-mail.com

--

Helio coragem

unread,
Mar 23, 2015, 1:26:46 PM3/23/15
to sis_emb...@googlegroups.com
Olá Gorio,

Eu não sei como estão conectadas as antenas de celular para funcionar dentro do metro, mas creio que seja possível
identificar as celulas por onde passa o trem e com isso a localização(???). 
Seria então somente uma questão de associar a celula com o local onde está passando o trem do metro.

Abs,
Reply all
Reply to author
Forward
0 new messages