LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: eduardo_d em 06 de Julho de 2010, 18:32

Título: Arduino acelerómetros e giroscópios
Enviado por: eduardo_d em 06 de Julho de 2010, 18:32
Olá pessoal!
Um dos projectos que comecei a desenvolver ha ja algum tempo,  é algo que nos deixe navegar num jogo de first person shooters ou num cenário qq, não com rato, joystick ou teclado, mas sim de acordo com a rotação e inclinação da cabeça do jogador (basicamente isto é um headtracker). Claro que para mover nesse cenário será usado um teclado.
Para medir a inclinação da cabeça, i.e, olhar para o tecto e para o chão sei que o sensor a usar é um acelerómetro, e já vi como o ligar às portas analogicas do arduino e onter os valores de aceleração. Até já consegui fazer umas brincadeiras interessantes  ;)
No entanto, pesquisando sobre qual o sensor adequado para medir a rotação da cabeça, ou seja olhar para esquerda ou direita, parece-me que o que devo adquirir é um giroscópio. Estou certo?
Ok, partindo do princípio que sim, também já li por aí que não será ligar ao arduíno e começar logo a receber os dados... parece que tem mais umas complicações,do tipo o seu output ser pulsado   :-\
O que vos pedia era então que me dissesem se o giroscópio é o sensor certo (pq ainda é um sensor caro), e se já algum de vocês trabalhou com ele juntamente com o arduino, de maneira a poder antever já os problemas  :D

Abr

PS: sei que alguns de vocês me dirão que o comando da wii é uma das opções mais rapidas e fáceis para isto, mas eu gosto de meter as mãos na massa  ;D
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: senso em 06 de Julho de 2010, 18:42
E se quiseres que o teu headtracker seja visto pelo pc como um teclado olha aqui isto:
http://www.pjrc.com/teensy/usb_keyboard.html (http://www.pjrc.com/teensy/usb_keyboard.html)

E á mais sobre usar o teensy como um teclado ou um rato, é só procurares.
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: metRo_ em 06 de Julho de 2010, 19:44
O fato da saída ser "pulsada" não é uma característica dos giroscópios mas sim uma característica dos sensores. A saída de um sensor pode ser em tensão, corrente, digital. A digital pode ser sobre um um protocolo de comunicação ou então por pulsos.
Tens vários giroscópios na loja LR e todos com saída em tensão e por isso é só ligar ao Arduino.
O que pode complicar é que a saída de um giroscópio date a velocidade angular mas o que tu necessitas é a posição angular, daí ser necessário integrar o sinal.
Aqui está um exemplo do que digo: Gyro demonstration (http://www.youtube.com/watch?v=9aj15HLMH-Q#ws) Podes ver num dos mostradores o sinal do giroscópio e no outro o sinal integrado.
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: FET_Destroyer em 06 de Julho de 2010, 21:13
Boas eduardo_d
O asena tem razão em relação aos vários tipos de giroscópios, penso que os mais usados para robot normais são os da analog devices e tem saída desde protocolo, pwm e tensão analógica.
Para fazer o headtracking precisas não só de um giroscópio mas de um giroscopio + acelerometro, chamam lhe de IMU (Inertial measure unit). Por exemplo esses giroscópios da analog são baratos mas têm um drift, ou seja, imagina que o seu valor parado é de 2,5V, á medida que o tempo passa esse valor vai subindo um pouco, ou seja, podes interpretar que o giro se está a mexer mesmo ele estando parado, dai complementam um sensor com um acelerometro. O acelerometro indica-te a posição "para baixo", se o fundires com o giroscopio obtens um IMU, agora para uma cabeça isto deve ser feito para os 3 eixos, x,y,z mais os eixos de rotação, pitch,yaw, roll, penso que sejam 6 graus de liberdade para teres o controlo total de todos os lados.
Obtens muita informação na net em como fundir os dados dos sensores.

Cumps
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: metRo_ em 06 de Julho de 2010, 21:32
Um acelerómetro 3eixos e um giroscopio 1eixo é suficiente, normalmente usam-se 3+3 para cancelar ruido e obter um sinal correcto.
Para juntar os sinais usa-se um filtro de kalman, podes ver aqui alguns exemplos: http://www.youtube.com/results?search_query=kalman+filter&aq=f (http://www.youtube.com/results?search_query=kalman+filter&aq=f) das diferenças com e sem filtro.
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: FET_Destroyer em 06 de Julho de 2010, 22:48
Este video mostra bem a diferença da fusão dos dados Sensor Fusion using Kalman Filter (http://www.youtube.com/watch?v=Y3TzhXYF0Lg#)

metRo_ estás enganado. Com um giroscopio só consegues ter um eixo de rotação. Só sabia se estava a mexer a cabeça para cima ou baixo e nunca para os lados. Tens que ter um giroscópio por eixo, são 3 giroscopios e 3 aceleromeros, ou um acc de 3 eixos e um giro de 3 eixos caso contrario nunca consegues fazer headtracking.
Com um giroscopio de 1 eixo por exemplo, paralelo à orelha, só consegues ter obter dados se levantares ou desceres a cabeça.
Se a rodares para os lados o giroscopio não te vai detectar o movimento, e o acc serve para cancelar o drift do giro.
Cumps
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: metRo_ em 06 de Julho de 2010, 23:36
Olha que eu acho que não, pois estes acelerometros quando inclinados sofrem a força gravitica o que faz com que eles quando estão inclinados a tensão na saida não é 0 mas sim um valor correspondente ao angulo.
Olha este video em que so com um acelerometro tem quase tudo o que fazes com a cabeça excepto o yaw. http://en.wikipedia.org/wiki/Flight_dynamics (http://en.wikipedia.org/wiki/Flight_dynamics) troca o avião pela cabeça.
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: FET_Destroyer em 07 de Julho de 2010, 00:05
Eu acho que precisas de 3giros por eixo. O giro dá-te a vel.angular. Com um acc acho que não consegues saber que estar a "girar" sobre o eixo central dele, dai serem precisos 3giros e 3acc. Eu acho que esta correcto porque já pesquisei montes por causa de um robot que ando a fazer e preciso dum IMU e pelo que li, headtracking precisa de 3giros no minimo, os acc é so por causa dos drifts dos giros. No entanto corrijam se estiver a dizer coisas sem jeito.
Cumps
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: eduardo_d em 07 de Julho de 2010, 01:10
Pessoal! Obrigado por todas as respostas ;)
Em relação ao teensy eu ja comprei um ha algum tempo e montei-o com um acelerometro adxl355, de maneira a emlar o rato do pc  :) Funciona muito bem, o problema é que utilizando apenas o acelerómetro so consigo "olhar para cima e para baixo" .
Também consigo mover para a esquerda e direita mas tenho de por o acelerometro numa posição esquisita...

É por isso que preciso de juntar outro sensor...Pelas vossas respostas sempre se confirma que será um giroscópio, e também fiquei esclarecido quanto à existência de vários tipos (sendo assim escolherei um com saida em tensão analog). Realmente também ja encontrei varias placas ja com giroscópio e acelerómetro integradas. Fiquei apenas na dúvida qt ao nr de giroscopios e acelerómetros a usar...pela ideia com que fiquei de algumas coisas que ja vi pela net penso que apenas será preciso um acelerómetro e um giroscópio...mas talvez o FET_Destroyer tenha razão. Resta-me assim continuar a procurar :) Pelo menos com as vossas dicas já estou mais orientado! O acelerómetro ja tenho , falta me entao o giroscópio!

Abr e continuem a dar o "bitaite" que é mais q bem vindo! ;)

eduardo
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: senso em 07 de Julho de 2010, 01:53
Supostamente como estás a mexer a cabeça num mundo 3d precisas de pelo menos 3, um para cada eixo respectivamente, acho eu, que dessas coisas não percebo muito, são um bocadinho caros só para fazer umas brincadeiras
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: metRo_ em 09 de Julho de 2010, 00:28
Um acelerómetro de 3eixos mais um giroscópio de um eixo chega. O primeiro resultado de uma pesquisa e cá está o código que te dá os ângulos: http://rubenlaguna.com/wp/2008/11/03/arduino-tilt-sensor-using-mma7260q/ (http://rubenlaguna.com/wp/2008/11/03/arduino-tilt-sensor-using-mma7260q/) é só colcar no Arduino e testares.
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: FET_Destroyer em 09 de Julho de 2010, 01:01
Todas as IMU que eu vejo tem 6DOF logo deve ser por alguma razão.
http://www.analog.com/en/mems/imu/adis16385/products/product.html (http://www.analog.com/en/mems/imu/adis16385/products/product.html)
Talvez seja necessário saber a vel. angular de todos os eixos.
Se procurares por IMU sem ser integrados são montes deles de 6 eixos, acho que é o que te permite ter total controlo de movimentos.
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: TigPT em 09 de Julho de 2010, 10:01
Todos os carros que eu vejo são de 5 portas, por isso deve de ser preciso 5 portas para ser um carro a sério.

Mas será que um carro de 2 portas é menos carro? Ok não é tão bom mas serve para a aplicação?

Tudo o que existe no mercado é um bom produto. Quer seja pelo preço, qualidade, imagem, etc... Se não fosse um bom produto, já tinha sido descontinuado por fim de vida do mesmo. Temos é que saber o que precisamos. Muitas vezes nem se utiliza gyro.. basta um acelerómetro de 3 eixos.
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: FET_Destroyer em 09 de Julho de 2010, 12:35
Boas TigPT
Gostei do teu exemplo. LOL
Mas não, não basta. Com um acc de 3 eixos nunca consegues fazer headtracking.
Nunca consegues descobrir o eixo yaw com um acc de 3 eixos
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: metRo_ em 09 de Julho de 2010, 13:22
E eu disse o contrário?! Se ele quer o melhor que pode obter para fazer o headtracking então que compre uma dessas placas com tudo integrado que tem 6 graus de liberdade.
O que está aqui em questão no primeiro post é saber o que realmente necessita porque se um giroscópio é caro, um para cada eixo é 3x mais.
É necessário adaptar a nossa resposta ao nos perguntam.
Tal como tu dizes no teu ultimo post "Nunca consegues descobrir o eixo yaw com um acc de 3 eixos" logo a unica coisa que falta descobrir é um eixo e para isso basta um giroscópio e não 3, agora se queres ter tudo com a máxima precisão que consegues obter, aí sim, usas 3 acc + 3 giros, um para cada eixo. Agora isso não é necessário. Querem ver uma segway a funcionar inicialmente só com um accelerómetro e utilziando apens um eixo? http://www.youtube.com/user/FeupinhoNovato#p/a/u/2/295uV-KqUxs (http://www.youtube.com/user/FeupinhoNovato#p/a/u/2/295uV-KqUxs)
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: FET_Destroyer em 09 de Julho de 2010, 13:39
Quando disse que um acc de 3 eixos não chegava tava a falar para o tigPT
Pois já vi muitas segway só a usar um acc com 1 eixo mas tal como essa que mostras, não são nada estáveis. Eu nunca me punha a andar em cima duma coisa daquelas, além de que era provável que te espetasses mal pusesses um pé em cima daquilo.
Precisas dum giro para fundir com o acc e para tornar estável o angulo, caso contrario fica um sistema instável como o video que mostras-te.
Tá bem que aquilo é uma "segway" mas achas que está boa? As do youtube que usam 1eixo acc e um gyro acc são muito muito mais estáveis que essa. (algumas) Voltanto à questão do headtracking, se ele quiser um headtracking com imprecisão, então o que disses-te provavelmente chega, agr se quiser fazer uma coisa como deve ser não chega. Tipo, eu não vou fazer uma segway que se aguenta em pé, mas abana por todos os lados só para dizer que fiz. Quando a fizer quero que fique uma coisa como deve ser.
Cumps
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: FET_Destroyer em 09 de Julho de 2010, 14:01
Bem, fui procurar segways no youtube e encontrei esta coisa

Vegway, Part 3 (http://www.youtube.com/watch?v=C3OKWLcZru4#)

Muito muito má, não existe controlo nenhum naquilo, é so switch on switch off motor. lol
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: metRo_ em 09 de Julho de 2010, 14:30
Mas se fores veres os teus posts anteriores dizes que não e que não chegava um acc de 3 eixos mais um giro de um eixo. O que importa aqui é perceber o que chega para funcionar e o que é necessário para ficar com um funcionamento excelente.
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: FET_Destroyer em 09 de Julho de 2010, 14:52
Sim, eu disse isso inicialmente, mas dps mandas-te um link dum site que tem animações e por lá parece que é possível com um acc de 2 eixos e um gyro de 1eixo dos yaw, no entanto continuo a dizer que 1gyro e 1acc para cada eixo é o ideal.
Cumps
Título: Re: Arduino acelerómetros e giroscópios
Enviado por: TigPT em 09 de Julho de 2010, 15:08
Ok, já chega do que cada um disse... Qualquer coisa superior a 2 eixos de aceleração e 1 de rotação serve perfeitamente!