Skip to content

Commit

Permalink
Nederdrone reintegration (#2723)
Browse files Browse the repository at this point in the history
* [ctrl] Add simple INDI scheduling module

* [conf] Cleanup Nederdrones

- Fix magnetometer orientation
- Remove unused defines
- Fix ailerons orientation

Co-authored-by: Ewoud Smeur <ewoud_smeur@msn.com>
  • Loading branch information
fvantienen and EwoudSmeur committed May 17, 2021
1 parent 8573593 commit 4b248e4
Show file tree
Hide file tree
Showing 8 changed files with 193 additions and 209 deletions.
118 changes: 14 additions & 104 deletions conf/airframes/tudelft/neddrone4.xml
Expand Up @@ -26,8 +26,7 @@
<define name="MS45XX_I2C_DEV" value="i2c4"/>
</module>

<!-- TODO: add this module -->
<!--module name="scheduling_indi_simple"/-->
<module name="scheduling_indi_simple"/>

<!-- Forward FuelCell data back to the GCS -->
<!--module name="generic_uart_sensor"/-->
Expand All @@ -50,7 +49,7 @@
<module name="radio_control" type="datalink"/>
<module name="fdm" type="jsbsim"/>

<!--module name="scheduling_indi_simple"/-->
<module name="scheduling_indi_simple"/>

<module name="logger_file">
<define name="FILE_LOGGER_PATH" value="/home/ewoud/Documents"/>
Expand All @@ -74,8 +73,6 @@
<module name="imu" type="mpu6000"/>
<module name="gps" type="ublox"/>
<module name="gps" type="ubx_ucenter"/>
<!--<module name="stabilization" type="int_quat"/>-->
<!--<module name="gain_scheduling"/>-->
<module name="stabilization" type="indi_simple"/>
<module name="stabilization" type="rate_indi"/>
<module name="ins" type="ekf2" />
Expand All @@ -92,13 +89,14 @@
<module name="mag_lis3mdl">
<define name="MODULE_LIS3MDL_UPDATE_AHRS" value="TRUE"/>
<configure name="MAG_LIS3MDL_I2C_DEV" value="I2C1"/>
<define name="LIS3MDL_CHAN_X_SIGN" value="-"/>
<define name="LIS3MDL_CHAN_Y_SIGN" value="-"/>
</module>
<!--module name="lidar" type="tfmini">
<configure name="TFMINI_PORT" value="UART4"/>
<configure name="USE_TFMINI_AGL" value="FALSE"/>
</module-->

<!--<module name="guidance" type="hybrid"/>-->
<module name="guidance" type="indi_hybrid">
<define name="GUIDANCE_INDI_RC_DEBUG" value="FALSE"/>
<define name="GUIDANCE_INDI_POS_GAIN" value="0.2"/>
Expand Down Expand Up @@ -206,11 +204,12 @@
</command_laws>

<section name="MISC">
<define name="WINDTUNNEL_TO_BODY_THETA" value="-90." unit="deg"/>
<define name="VoltageOfAdc(adc)" value="((3.3f/4096.0f) * 17.9024749557 * adc)"/><!-- TODO: verify/calibrate -->
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>

<!-- Basic navigation settings -->
<define name="NAV_CLIMB_VSPEED" value="3.5"/>
<define name="NAV_DESCEND_VSPEED" value="-0.5"/>
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
<define name="VoltageOfAdc(adc)" value="((3.3f/4096.0f) * 17.9024749557 * adc)"/>
<define name="ARRIVED_AT_WAYPOINT" value="50.0"/>

<!-- Avoid GPS loss behavior when having RC or datalink -->
Expand All @@ -219,15 +218,15 @@
</section>

<section name="FORWARD">
<!--The Quadshot uses a slightly different axis system for the setpoint, to make both hovering and flying forward intuitive-->
<!--The Nederdrone uses a slightly different axis system for the setpoint, to make both hovering and flying forward intuitive-->
<define name="USE_EARTH_BOUND_RC_SETPOINT" value="TRUE"/>
<!-- This is the pitch angle that the Quadshot will have in forward flight, where 0 degrees is hover-->
<!-- This is the pitch angle that the Nederdrone will have in forward flight, where 0 degrees is hover-->
<define name="TRANSITION_MAX_OFFSET" value="-80.0" unit="deg"/>
<!-- For RC coordinated turns, lower because the yawing was too slow -->
<define name="MAX_FWD_SPEED" value="20.0"/>
<!-- For hybrid guidance -->
<define name="MAX_AIRSPEED" value="20.0"/>

<!-- Enable airspeed measurements -->
<define name="USE_AIRSPEED" value="TRUE"/>
</section>

Expand All @@ -236,7 +235,6 @@
<define name="MPU_CHAN_X" value="1"/>
<define name="MPU_CHAN_Y" value="0"/>
<define name="MPU_CHAN_Z" value="2"/>

<define name="MPU_X_SIGN" value="1"/>
<define name="MPU_Y_SIGN" value="1"/>
<define name="MPU_Z_SIGN" value="-1"/>
Expand All @@ -249,11 +247,7 @@
<define name="ACCEL_Y_SENS" value="4.9016250738902425" integer="16"/>
<define name="ACCEL_Z_SENS" value="4.846689188075245" integer="16"/>

<!--define name= "MAG_X_CURRENT_COEF" value="-1.7139708082316483"/>
<define name= "MAG_Y_CURRENT_COEF" value="-0.7696784114750511"/>
<define name= "MAG_Z_CURRENT_COEF" value="1.1626106815908253"/-->

<!-- Calibrated at valkenburg 20-05-2020 -->
<!-- Calibrated at valkenburg 20-05-2020 (external magnetometer) -->
<define name="MAG_X_NEUTRAL" value="866"/>
<define name="MAG_Y_NEUTRAL" value="-1530"/>
<define name="MAG_Z_NEUTRAL" value="-3313"/>
Expand All @@ -267,89 +261,27 @@
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
</section>

<section name="AHRS" prefix="AHRS_">
<!-- values used if no GPS fix, on 3D fix is update by geo_mag module -->
<define name="H_X" value="0.3770441"/>
<define name="H_Y" value="0.0193986"/>
<define name="H_Z" value="0.9259921"/>
<define name="USE_GPS_HEADING" value="0"/>
</section>

<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
<!-- setpoints -->
<define name="SP_MAX_P" value="140" unit="deg/s"/>
<define name="SP_MAX_Q" value="140" unit="deg/s"/>
<define name="SP_MAX_R" value="140" unit="deg/s"/>
<define name="DEADBAND_P" value="20"/>
<define name="DEADBAND_Q" value="20"/>
<define name="DEADBAND_R" value="200"/>

<!-- feedback -->
<define name="GAIN_P" value="400"/>
<define name="GAIN_Q" value="400"/>
<define name="GAIN_R" value="350"/>

<define name="IGAIN_P" value="75"/>
<define name="IGAIN_Q" value="75"/>
<define name="IGAIN_R" value="50"/>
</section>

<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
<!-- setpoints -->
<define name="SP_MAX_PHI" value="60." unit="deg"/>
<define name="SP_MAX_THETA" value="80." unit="deg"/>
<define name="SP_MAX_R" value="90." unit="deg/s"/>
<define name="DEADBAND_R" value="200"/>
<define name="SP_PSI_DELTA_LIMIT" value="45" unit="deg"/>

<!-- reference -->
<define name="REF_OMEGA_P" value="400" unit="deg/s"/>
<define name="REF_ZETA_P" value="0.85"/>
<define name="REF_MAX_P" value="100." unit="deg/s"/>
<define name="REF_MAX_PDOT" value="RadOfDeg(3000.)"/>
<define name="REF_OMEGA_Q" value="400" unit="deg/s"/>
<define name="REF_ZETA_Q" value="0.85"/>
<define name="REF_MAX_Q" value="300." unit="deg/s"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(7000.)"/>
<define name="REF_OMEGA_R" value="300" unit="deg/s"/>
<define name="REF_ZETA_R" value="0.85"/>
<define name="REF_MAX_R" value="180." unit="deg/s"/>
<define name="REF_MAX_RDOT" value="RadOfDeg(1800.)"/>

<!-- feedback -->
<define name="PHI_PGAIN" value="800"/>
<define name="PHI_DGAIN" value="350"/>
<define name="PHI_IGAIN" value="40"/>
<define name="THETA_PGAIN" value="800"/>
<define name="THETA_DGAIN" value="350"/>
<define name="THETA_IGAIN" value="40"/>
<define name="PSI_PGAIN" value="1250"/>
<define name="PSI_DGAIN" value="320"/>
<define name="PSI_IGAIN" value="10"/>

<!-- feedforward -->
<define name="PHI_DDGAIN" value="0"/>
<define name="THETA_DDGAIN" value="0"/>
<define name="PSI_DDGAIN" value="0"/>
</section>

<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
<!-- control effectiveness -->
<!-- control effectiveness (hover) -->
<define name="G1_P" value="0.0030"/>
<define name="G1_Q" value="0.0035"/>
<define name="G1_R" value="0.0004"/>
<define name="G2_R" value="0.00015"/>

<!-- control effectiveness (forward) -->
<define name="FORWARD_G1_P" value="0.0020"/>
<define name="FORWARD_G1_Q" value="0.0077"/>
<define name="FORWARD_G1_R" value="0.004"/>

<!--P effectiveness if center props are switched off-->
<define name="FORWARD_G1_P_FEW_PROPS" value="0.0020"/>
<!--Part of yaw eff that comes from motors-->
<define name="MOT_YAW_EFF" value="0.00"/>
<define name="MOT_PITCH_EFF" value="0.003"/>

<!-- reference acceleration for attitude control -->
<define name="REF_ERR_P" value="30.0"/>
<define name="REF_ERR_Q" value="30.0"/>
Expand Down Expand Up @@ -380,28 +312,6 @@
<define name="ADAPTIVE_MU" value="0.0001"/>
</section>

<section name="GAIN_SETS">
<define name="NUMBER_OF_GAINSETS" value="2"/>
<define name="SCHEDULING_VARIABLE" value="guidance_hybrid_norm_ref_airspeed"/>
<define name="SCHEDULING_POINTS" value="{4, 10}"/>
<define name="SCHEDULING_VARIABLE_FRAC" value="8"/>

<define name="PHI_P" value="{800, 600}"/>
<define name="PHI_D" value="{350, 250}"/>
<define name="PHI_I" value="{40, 20}"/>
<define name="PHI_DD" value="{0, 0}"/>

<define name="THETA_P" value="{800, 400}"/>
<define name="THETA_D" value="{350, 150}"/>
<define name="THETA_I" value="{40, 100}"/>
<define name="THETA_DD" value="{0, 0}"/>

<define name="PSI_P" value="{1250, 1250}"/>
<define name="PSI_D" value="{320, 320}"/>
<define name="PSI_I" value="{10, 10}"/>
<define name="PSI_DD" value="{0, 0}"/>
</section>

<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
<define name="HOVER_KP" value="310"/>
<define name="HOVER_KD" value="130"/>
Expand Down

0 comments on commit 4b248e4

Please sign in to comment.