programa final
VerticalEstimator/VerticalEstimator.cpp
- Committer:
- yurindes
- Date:
- 2018-11-30
- Branch:
- yuri
- Revision:
- 8:1ad52489f6f3
- Parent:
- 6:7a447d4ae677
File content as of revision 8:1ad52489f6f3:
#include "mbed.h" #include "VerticalEstimator.h" //#include <math.h> #include "Library.h" // Class constructor VerticalEstimator::VerticalEstimator():range (PB_7 , PB_6 ) { } // Initialize class void VerticalEstimator::init () { VL53L0X range (PB_7 , PB_6 ); range.init() ; z = 0.0f;//leitura da distancia vertical para função predict zm = 0.0f;//definido uma leitura para distancia vertical zml = 0.0f;//definindo uma segunda leitura para calcular a velocidade vertical z_est = 0.0f; w = 0.0f;//definido a velocidade vertical para função predict wm = 0.0f; w_est = 0.0f; } // Predict vertical position and velocity from model void VerticalEstimator::predict () { range.read(); z = range.d; z = z + w*dt_ver_pre;//velocidade prevista, como a leitura é feita com 500Hz 0.002f sao os 2ms equivalentes } // Correct vertical position and velocity with measurement void VerticalEstimator::correct ( float phi , float theta )//phi e theta são os angulos de euler estimados { zm = range.d; zm = zm*cos(phi)*cos(theta);//zm é a distancia medida e phi e theta sao os angulos de Euler para correcao da medida wait(dt_ver_cor); zml = range.d; zm = zml*cos(phi)*cos(theta);//d é a distancia medida e phi e theta sao os angulos de Euler para correcao da medida wm = (zm-zml)/dt_ver_cor; z_est = (1-p_verti)*z + p_verti*zm; w_est = (1-p_verti)*w + p_verti*wm; }