mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-25 14:35:51 +08:00
49d5c2b222
most people want it to start at flightplan location anyway... If someone wants to explicitly set the initial conditions, they can add whatever xml file they want...
238 lines
8.6 KiB
XML
238 lines
8.6 KiB
XML
<!DOCTYPE airframe SYSTEM "airframe.dtd">
|
|
|
|
<airframe name="ardrone2_raw">
|
|
|
|
<firmware name="rotorcraft">
|
|
<target name="ap" board="ardrone2_raw">
|
|
<define name="FAILSAFE_DESCENT_SPEED" value="0.5"/>
|
|
<configure name="USE_MAGNETOMETER" value="0"/>
|
|
|
|
<subsystem name="telemetry" type="transparent_udp"/>
|
|
<subsystem name="radio_control" type="datalink"/>
|
|
</target>
|
|
|
|
<target name="nps" board="pc">
|
|
<subsystem name="fdm" type="jsbsim"/>
|
|
<subsystem name="radio_control" type="ppm"/>
|
|
</target>
|
|
|
|
<!-- Subsystem section -->
|
|
<subsystem name="motor_mixing"/>
|
|
<subsystem name="actuators" type="ardrone2"/>
|
|
<subsystem name="imu" type="ardrone2"/>
|
|
<subsystem name="gps" type="datalink"/>
|
|
<subsystem name="stabilization" type="int_quat"/>
|
|
<subsystem name="ahrs" type="int_cmpl_quat"/>
|
|
<subsystem name="ins" type="extended"/>
|
|
</firmware>
|
|
|
|
<modules main_freq="512">
|
|
<load name="send_imu_mag_current.xml"/>
|
|
<load name="follow.xml">
|
|
<define name="FOLLOW_AC_ID" value="101"/>
|
|
<define name="FOLLOW_WAYPOINT_ID" value="WP_p1"/>
|
|
<define name="FOLLOW_OFFSET_Z" value="2.0"/>
|
|
</load>
|
|
</modules>
|
|
|
|
<commands>
|
|
<axis name="PITCH" failsafe_value="0"/>
|
|
<axis name="ROLL" failsafe_value="0"/>
|
|
<axis name="YAW" failsafe_value="0"/>
|
|
<axis name="THRUST" failsafe_value="5760"/>
|
|
</commands>
|
|
|
|
<servos driver="Default">
|
|
<servo name="TOP_LEFT" no="0" min="0" neutral="1" max="500"/>
|
|
<servo name="TOP_RIGHT" no="1" min="0" neutral="1" max="500"/>
|
|
<servo name="BOTTOM_RIGHT" no="2" min="0" neutral="1" max="500"/>
|
|
<servo name="BOTTOM_LEFT" no="3" min="0" neutral="1" max="500"/>
|
|
</servos>
|
|
|
|
<section name="MIXING" prefix="MOTOR_MIXING_">
|
|
<define name="TRIM_ROLL" value="0"/>
|
|
<define name="TRIM_PITCH" value="0"/>
|
|
<define name="TRIM_YAW" value="0"/>
|
|
<define name="NB_MOTOR" value="4"/>
|
|
<define name="SCALE" value="255"/>
|
|
|
|
<!-- Time cross layout (X), with order NW (CW), NE (CCW), SE (CW), SW (CCW) -->
|
|
<define name="ROLL_COEF" value="{ 256, -256, -256, 256 }"/>
|
|
<define name="PITCH_COEF" value="{ 256, 256, -256, -256 }"/>
|
|
<define name="YAW_COEF" value="{ -256, 256, -256, 256 }"/>
|
|
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
|
|
</section>
|
|
|
|
<command_laws>
|
|
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
|
|
<set servo="TOP_LEFT" value="motor_mixing.commands[0]"/>
|
|
<set servo="TOP_RIGHT" value="motor_mixing.commands[1]"/>
|
|
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[2]"/>
|
|
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[3]"/>
|
|
</command_laws>
|
|
|
|
<section name="IMU" prefix="IMU_">
|
|
<!-- Accelero -->
|
|
<define name="ACCEL_X_NEUTRAL" value="2048"/>
|
|
<define name="ACCEL_Y_NEUTRAL" value="2048"/>
|
|
<define name="ACCEL_Z_NEUTRAL" value="2048"/>
|
|
|
|
<!-- Magneto calibration -->
|
|
<define name="MAG_X_NEUTRAL" value="0"/>
|
|
<define name="MAG_Y_NEUTRAL" value="0"/>
|
|
<define name="MAG_Z_NEUTRAL" value="-180"/>
|
|
<define name="MAG_X_SENS" value="16." integer="16"/>
|
|
<define name="MAG_Y_SENS" value="16." integer="16"/>
|
|
<define name="MAG_Z_SENS" value="16." integer="16"/>
|
|
|
|
<!-- Magneto current calibration -->
|
|
<define name="MAG_X_CURRENT_COEF" value="0.0"/>
|
|
<define name="MAG_Y_CURRENT_COEF" value="0.0"/>
|
|
<define name="MAG_Z_CURRENT_COEF" value="0.0"/>
|
|
|
|
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
|
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
|
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
|
</section>
|
|
|
|
<!-- local magnetic field -->
|
|
<!-- http://wiki.paparazziuav.org/wiki/Subsystem/ahrs#Local_Magnetic_Field -->
|
|
<section name="AHRS" prefix="AHRS_">
|
|
<!-- Toulouse -->
|
|
<define name="H_X" value="0.513081"/>
|
|
<define name="H_Y" value="-0.00242783"/>
|
|
<define name="H_Z" value="0.858336"/>
|
|
<!-- Delft -->
|
|
<!--define name="H_X" value="0.3892503"/>
|
|
<define name="H_Y" value="0.0017972"/>
|
|
<define name="H_Z" value="0.9211303"/ -->
|
|
|
|
<!-- Use GPS heading instead of magneto -->
|
|
<define name="USE_GPS_HEADING" value="1"/>
|
|
</section>
|
|
|
|
<section name="INS" prefix="INS_">
|
|
<!-- Use GPS altitude measurments and set the R gain -->
|
|
<define name="USE_GPS_ALT" value="1"/>
|
|
<define name="VFF_R_GPS" value="0.01"/>
|
|
</section>
|
|
|
|
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
|
<!-- setpoints -->
|
|
<define name="SP_MAX_P" value="10000"/>
|
|
<define name="SP_MAX_Q" value="10000"/>
|
|
<define name="SP_MAX_R" value="10000"/>
|
|
<define name="DEADBAND_P" value="20"/>
|
|
<define name="DEADBAND_Q" value="20"/>
|
|
<define name="DEADBAND_R" value="200"/>
|
|
<define name="REF_TAU" value="4"/>
|
|
|
|
<!-- 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"/>
|
|
|
|
<!-- feedforward -->
|
|
<define name="DDGAIN_P" value="300"/>
|
|
<define name="DDGAIN_Q" value="300"/>
|
|
<define name="DDGAIN_R" value="300"/>
|
|
</section>
|
|
|
|
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
|
<!-- setpoints -->
|
|
<define name="SP_MAX_PHI" value="45" unit="deg"/>
|
|
<define name="SP_MAX_THETA" value="45" unit="deg"/>
|
|
<define name="SP_MAX_R" value="200" unit="deg/s"/>
|
|
<define name="DEADBAND_A" value="0"/>
|
|
<define name="DEADBAND_E" value="0"/>
|
|
<define name="DEADBAND_R" value="250"/>
|
|
|
|
<!-- reference -->
|
|
<define name="REF_OMEGA_P" value="450" unit="deg/s"/>
|
|
<define name="REF_ZETA_P" value="0.9"/>
|
|
<define name="REF_MAX_P" value="600." unit="deg/s"/>
|
|
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>
|
|
|
|
<define name="REF_OMEGA_Q" value="450" unit="deg/s"/>
|
|
<define name="REF_ZETA_Q" value="0.9"/>
|
|
<define name="REF_MAX_Q" value="600." unit="deg/s"/>
|
|
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
|
|
|
|
<define name="REF_OMEGA_R" value="300" unit="deg/s"/>
|
|
<define name="REF_ZETA_R" value="0.9"/>
|
|
<define name="REF_MAX_R" value="400." unit="deg/s"/>
|
|
<define name="REF_MAX_RDOT" value="RadOfDeg(4000.)"/>
|
|
|
|
<!-- feedback -->
|
|
<define name="PHI_PGAIN" value="1218"/>
|
|
<define name="PHI_DGAIN" value="303"/>
|
|
<define name="PHI_IGAIN" value="120"/>
|
|
|
|
<define name="THETA_PGAIN" value="1218"/>
|
|
<define name="THETA_DGAIN" value="303"/>
|
|
<define name="THETA_IGAIN" value="120"/>
|
|
|
|
<define name="PSI_PGAIN" value="529"/>
|
|
<define name="PSI_DGAIN" value="353"/>
|
|
<define name="PSI_IGAIN" value="10"/>
|
|
|
|
<!-- feedforward -->
|
|
<define name="PHI_DDGAIN" value="150"/>
|
|
<define name="THETA_DDGAIN" value="150"/>
|
|
<define name="PSI_DDGAIN" value="52"/>
|
|
</section>
|
|
|
|
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
|
<define name="HOVER_KP" value="283"/>
|
|
<define name="HOVER_KD" value="82"/>
|
|
<define name="HOVER_KI" value="13"/>
|
|
<define name="NOMINAL_HOVER_THROTTLE" value="0.655"/>
|
|
<define name="ADAPT_THROTTLE_ENABLED" value="FALSE"/>
|
|
</section>
|
|
|
|
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
|
<!-- Good weather -->
|
|
<define name="MAX_BANK" value="20" unit="deg"/>
|
|
<!-- Bad weather -->
|
|
<!-- define name="MAX_BANK" value="32" unit="deg"/ -->
|
|
|
|
<!-- reference model -->
|
|
<define name="REF_OMEGA" value="RadOfDeg(67.)"/>
|
|
<define name="REF_ZETA" value="0.85"/>
|
|
<define name="REF_MAX_ACCEL" value="5.66"/>
|
|
<define name="REF_MAX_SPEED" value="3"/>
|
|
|
|
<!-- gains -->
|
|
<define name="PGAIN" value="116"/>
|
|
<define name="DGAIN" value="60"/>
|
|
<define name="IGAIN" value="30"/>
|
|
<define name="VGAIN" value="0"/>
|
|
<define name="AGAIN" value="62"/>
|
|
</section>
|
|
|
|
<section name="SIMULATOR" prefix="NPS_">
|
|
<define name="ACTUATOR_NAMES" value="{"nw_motor", "ne_motor", "se_motor", "sw_motor"}"/>
|
|
<define name="JSBSIM_MODEL" value=""simple_ardrone2""/>
|
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_ardrone2.h""/>
|
|
</section>
|
|
|
|
<section name="AUTOPILOT">
|
|
<define name="MODE_STARTUP" value="AP_MODE_NAV"/>
|
|
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
|
|
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_Z_HOLD"/>
|
|
<define name="MODE_AUTO2" value="AP_MODE_NAV"/>
|
|
</section>
|
|
|
|
<section name="BAT">
|
|
<define name="MILLIAMP_AT_FULL_THROTTLE" value="8700"/>
|
|
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
|
|
<define name="CRITIC_BAT_LEVEL" value="9.6" unit="V"/>
|
|
<define name="LOW_BAT_LEVEL" value="9.7" unit="V"/>
|
|
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
|
</section>
|
|
</airframe>
|