Buenas dias,
...He visto en varios sitios que para poder calcular la orientación también es necesario el giroscopio, cosa que ya tengo clara, pero mi problema surge al calcular la posición.
¿Estas usando alguna librería en especial?
Según lo que he leido, es necesario calcular la aceleración lineal para poder calcular la posición integrando dos veces por el método del trapecio. No sé como hacerlo porque con el simple hecho de girar el imu, ya me pueden dar aceleraciones de -1g, cosa que sería mentira porque en ningún momento he movido mi imu, lo único que he hecho ha sido girarlo. He leido que con restar el valor de la gravedad, a las aceleraciones gravitacionales sería suficiente, pero si lo hago me sigue sin resolver el problema ya que al hacer simples giros me sigue marcando aceleraciones.
Mmmm si, no es tan directo, y ni siquiera me parece que puedas lograr un buen resultado.
Aun cuando fuera que en vez de un brazo tenes un punto infinitesimal (sin rotación solo traslación), usando doble integración el error va a crecer en forma cuadrática con el tiempo solo por el error del acelerómetro.
Pasando a un cuerpo real, el acelerómetro no distingue rotación de traslación. Para eso hay que usar alguna librería que combina acelerómetro + giróscopo para separar rotación y traslación.
Luego está también el vector de gravedad, filtro pasabajo para obtener orientación y filtro pasa-alto para obtener aceleración cinemática digamos (que acá estaría combinado rotación + traslación).
Para que os hagais a la idea, mi proyecto consiste en un brazo robótico el que gracias al imu tiene que sabe en todo momento en que posición exacta se encuentra.
Mi pregunta concreta sería, ¿ cómo calculo esas aceleraciones traslacionales de mi imu?¿Es necesario tener algún otro sensor para lograrlo, como un gps?¿Puedo hacerlo solo con el giroscopio,magnetómetro y acelerómetro?
Emmmm, es complicado sacar la posición usando un IMU, sirve cuando no hay otra alternativa posible, pero normalmente uno empezaría viendo trabajar con encoders de algún tipo.
El GPS te va a dar una posición con un error de hasta decenas de metros, ah.. sos de España, algunos metros entonces (ustedes allá tienen satélites AGPS para mejorar la exactitud), pero a menos que el brazo esté al aire libre y le baste manejarse con algún que otro metro de error (porque está sobre un carrito o algo así), no me imagino como pueda servir (seguramente que no para medir la posición de las articulaciones/segmentos).
Acá hay una página bien documentada
http://www.varesano.net/projects/hardware/FreeIMU
Pero a ver.... me parece que estamos pidiendo mucho más de lo necesario. Con saber bien los ángulos de cada segmento del brazo, ¿no debería alcanzar para conocer la posición del brazo? (se utilizan ángulos medidos + dimensiones y grados de libertad conocidos de antemano del brazo).
Con algo que tome las medidas del acelerómetro/giróscopo y te devuelva la orientación de cada segmento del robot, ¿no sería suficiente?.
Con esa información y aplicando cinemática directa podés conocer posición/orientación del brazo, a ver que busco algo en español.... por ejemplo esto:
http://www.esi2.us.es/~vivas/ayr2iaei/CIN_ROB.pdf