[modules] EKF Airspeed and Wind (#3078)

* [modules] EKF Airspeed and Wind

* Test EKF_AW

* Also compile for non-rot-wing

* fix RPM in EKF_AW

* rpm fix

* Remove double debug messages

* follow master spacing

* Fix code style

* rotwing_controller renamed
This commit is contained in:
Christophe De Wagter
2023-10-19 16:34:48 +02:00
committed by GitHub
parent 2db514a43e
commit 1229e0489a
6 changed files with 2548 additions and 1 deletions
+59 -1
View File
@@ -68,7 +68,7 @@
<module name="fdm" type="jsbsim"/>
<module name="logger_file">
<define name="FILE_LOGGER_PATH" value="/home/ewoud/Documents"/>
<define name="FILE_LOGGER_PATH" value="~/"/>
</module>
<!--Not dealing with these in the simulation-->
@@ -163,6 +163,64 @@
</module>
<module name="motor_mixing"/>
<!--Airspeed estimation using EKF-->
<module name="ekf_aw">
<define name="EKF_AW_P0_V_BODY" value="1.E-2f" description="Initial covariance body velocity"/>
<define name="EKF_AW_P0_MU" value="1.E-5f" description="Initial covariance wind"/>
<define name="EKF_AW_P0_OFFSET" value="1.E-10f" description="Initial covariance offset"/>
<define name="EKF_AW_Q_ACCEL" value="1.0E-4f" description="Accel process noise"/>
<define name="EKF_AW_Q_GYRO" value="1.0E-9f" description="Gyro process noise"/>
<define name="EKF_AW_Q_MU" value="1.0E-6f" description="Wind process noise"/>
<define name="EKF_AW_Q_OFFSET" value="1.0E-8f" description="Offset process noise"/>
<define name="EKF_AW_R_V_GND" value="1.E-5f" description="GPS Velocity measurement noise"/>
<define name="EKF_AW_R_ACCEL_FILT_X" value="1.E-5f" description="Filtered x accel measurement noise"/>
<define name="EKF_AW_R_ACCEL_FILT_Y" value="1.E-5f" description="Filtered y accel measurement noise"/>
<define name="EKF_AW_R_ACCEL_FILT_Z" value="1.E-5f" description="Filtered z accel measurement noise"/>
<define name="EKF_AW_R_V_PITOT" value="1.E-7f" description="Pitot Tube Velocity measurement noise"/>
<define name="EKF_AW_AZ_SCHED_GAIN" value="2" />
<define name="EKF_AW_AZ_SCHED_START_DEG" value="60" />
<define name="EKF_AW_AZ_SCHED_END_DEG" value="70" />
<define name="EKF_AW_AX_SCHED_GAIN" value="0" />
<define name="EKF_AW_AX_SCHED_START_DEG" value="45" />
<define name="EKF_AW_AX_SCHED_END_DEG" value="60" />
<define name="EKF_AW_QUICK_CONVERGENCE" value="true" />
<define name="EKF_AW_QUICK_CONVERGENCE_TIME" value="15" />
<define name="EKF_AW_WING_INSTALLED" value="true" description="Use wing contribution"/>
<define name="EKF_AW_USE_MODEL_BASED_X" value="true" description="Use model based to augment filter"/>
<define name="EKF_AW_USE_MODEL_BASED_Y" value="true" description="Use model based to augment filter"/>
<define name="EKF_AW_USE_MODEL_BASED_Z" value="true" description="Use model based to augment filter"/>
<define name="EKF_AW_VEHICLE_MASS" value="6.5" description="Mass of the vehicle"/>
<define name="EKF_AW_K2_FX_FUSELAGE" value="-4E-2f" description="K*u*u"/>
<define name="EKF_AW_K3_FX_HOVER" value="-3E-1f" description="K*u"/>
<define name="EKF_AW_K1_FX_WING" value="-3.21432e-02f" description="Fx2 = (k1*(1+k5*skew)+(k2*alpha+k3*alpha^2))*(sin(skew)^2+k4)*V^2"/>
<define name="EKF_AW_K2_FX_WING" value="1.67195e-01f" description="Fx2 = (k1*(1+k5*skew)+(k2*alpha+k3*alpha^2))*(sin(skew)^2+k4)*V^2"/>
<define name="EKF_AW_K3_FX_WING" value="5.9441e-01f" description="Fx2 = (k1*(1+k5*skew)+(k2*alpha+k3*alpha^2))*(sin(skew)^2+k4)*V^2"/>
<define name="EKF_AW_K4_FX_WING" value="3.9839e-03f" description="Fx2 = (k1*(1+k5*skew)+(k2*alpha+k3*alpha^2))*(sin(skew)^2+k4)*V^2"/>
<define name="EKF_AW_K5_FX_WING" value="3.5321e-03f" description="Fx2 = (k1*(1+k5*skew)+(k2*alpha+k3*alpha^2))*(sin(skew)^2+k4)*V^2"/>
<define name="EKF_AW_K_FY_V" value="-3.2E-1f" description="Fy beta coefficient"/>
<define name="EKF_AW_K1_FY_WING" value="0.0f" description="Fy = K1*cos(skew)*sin(skew)*u^2"/>
<define name="EKF_AW_K1_FZ_WING" value="-1.0008e-01f" description="Fz1 = ((k1+k2*alpha+k3*alpha^2)*(sin(skew)^2+k4)*V^2"/>
<define name="EKF_AW_K2_FZ_WING" value="-8.6965e-01f" description="Fz1 = ((k1+k2*alpha+k3*alpha^2)*(sin(skew)^2+k4)*V^2"/>
<define name="EKF_AW_K3_FZ_WING" value="1.45783e-01f" description="Fz1 = ((k1+k2*alpha+k3*alpha^2)*(sin(skew)^2+k4)*V^2"/>
<define name="EKF_AW_K4_FZ_WING" value="2.185395e-01f" description="Fz1 = ((k1+k2*alpha+k3*alpha^2)*(sin(skew)^2+k4)*V^2"/>
<define name="EKF_AW_TELEMETRY_DEBUG" value="false" description="debug mode to send timing info through telemetry"/>
</module>
</firmware>
<!-- CAN BUS 1 (Front Wing) -->