Es posible que desee buscar filtros Kalman extendidos. http: //robotics.stackexchange.co…
La matriz de rotación [matemática] R [/ matemática] transforma los vectores de un cuadro a otro (una base o marco inercial y el marco fijo o del dispositivo). Si tiene una medición vectorial en cada cuadro (campo magnético en este caso) que le da dos ecuaciones independientes en la siguiente forma:
[matemáticas] R b _ {\ text {cuerpo}} = b_ {base} [/ matemáticas]
donde [math] b _ {\ text {body}} [/ math] es la medición del magnetómetro, [math] b _ {\ text {base}} [/ math] es el campo magnético en el sistema de coordenadas de la base. Esto es constante y necesita ser medido (tal vez por el dispositivo tan pronto como se enciende).
- Soy un estudiante de primer año entrante que está inmensamente interesado en buscar CS y EE en Stanford. ¿Qué tan difícil / desafiante es doblar en las dos asignaturas?
- Gadgets & Technologies: ¿Puede justificarse la compra de un nuevo dispositivo que tenga una versión anterior totalmente funcional con menos funciones?
- ¿Qué sucede si proporciona un amplificador operacional de suministro doble (+/- Vs), por ejemplo, TI OPA 656 con un solo suministro (Vs y GND)?
- ¿Cuáles son los mejores libros o recursos para aprender MATLAB para estudiantes de ingeniería eléctrica?
- ¿Cuál es la velocidad de propagación del campo magnético?
Lo anterior es un sistema de tres ecuaciones pero solo dos son independientes. Tiene tres variables independientes para resolver ya que [math] R [/ math] tiene nueve elementos, de los cuales 3 son independientes. (Quiero señalar que la orientación generalmente no se expresa como una matriz de rotación en la implementación de software por esta razón. Los ángulos de Quaternions o Euler se usan más comúnmente. Recomiendo quaternions ya que no te meterán en problemas con las singularidades, ver Gimbal bloquear.)
Por lo tanto, la medición del campo magnético no es información suficiente para resolver [math] R [/ math].
El acelerómetro da la aceleración del dispositivo. Suponiendo que está unido a un cuerpo rígido que tiene un punto, [math] p [/ math], que es fijo, la aceleración del dispositivo viene dada por:
[matemáticas] a _ {\ text {dispositivo}} = \ omega \ times \ left (\ omega \ times r_ {dp} \ right) + \ dot {\ omega} \ times r_ {dp} [/ math]
donde [math] a _ {\ text {device}} [/ math] es la medida del acelerómetro, [math] \ omega [/ math] es el vector de velocidad angular, [math] r_ {dp} [/ math] es la posición del dispositivo relativo a [math] p [/ math], expresado en el sistema de coordenadas del cuerpo.
Puede usar esta ecuación para resolver [math] \ omega [/ math] de [math] a _ {\ text {device}} [/ math].
Ahora tienes la velocidad angular. Si conoce la orientación inicial y la velocidad angular, puede resolver esta ecuación diferencial para [math] R [/ math] (o el equivalente en cualquier representación que use):
[matemáticas] \ dot {R} = R \ Omega [/ matemáticas]
donde [math] \ Omega [/ math] es la forma de matriz simétrica oblicua del vector [math] \ omega [/ math] que se usa para calcular productos cruzados (ver Producto cruzado). Simplemente integrando el lado derecho le daría la solución que está buscando, pero el problema es que hay una deriva , es decir, los errores se acumulan con el tiempo. Entonces, la primera ecuación que usa la medición del magnetómetro se usa para eliminar parte del error.
Esto se conoce como fusión de datos del sensor, y los filtros de Kalman son un método común para hacer esto.