mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-09 22:49:53 +08:00
1b345804b4
* [generator] add support for matrix and struct in airframe update ENAC airframe and code for indi G1 matrix and IMU calib * update calibration tool output
354 lines
14 KiB
XML
354 lines
14 KiB
XML
<!DOCTYPE airframe SYSTEM "../../airframe.dtd">
|
|
|
|
<airframe name="FALCON_V1">
|
|
|
|
<description>
|
|
Falcon Airframe H-Configuration (no flaps)
|
|
Tawaki v1.0 Chibios
|
|
Xbee API
|
|
Ublox F9P
|
|
SBUS Futaba
|
|
</description>
|
|
|
|
<firmware name="rotorcraft">
|
|
<configure name="PERIODIC_FREQUENCY" value="500"/>
|
|
|
|
<target name="ap" board="tawaki_1.1">
|
|
<module name="radio_control" type="sbus">
|
|
<!-- Put the mode on channel AUX1-->
|
|
<define name="RADIO_KILL_SWITCH" value="RADIO_GAIN1"/>
|
|
</module>
|
|
<!--Switch advanced INDI scheduling functions on or off-->
|
|
<define name="INDI_FUNCTIONS_RC_CHANNEL" value="6"/>
|
|
</target>
|
|
|
|
<target name="nps" board="pc">
|
|
<module name="fdm" type="jsbsim"/>
|
|
<module name="radio_control" type="datalink"/>
|
|
<!--Switch advanced INDI scheduling functions on or off-->
|
|
<!--Take the mode channel for simulation-->
|
|
<define name="INDI_FUNCTIONS_RC_CHANNEL" value="4"/>
|
|
|
|
</target>
|
|
|
|
<module name="eff_scheduling_generic"/>
|
|
|
|
<module name="current_sensor">
|
|
<configure name="ADC_CURRENT_SENSOR" value="ADC_1"/>
|
|
</module>
|
|
|
|
<module name="sys_mon"/>
|
|
|
|
<module name="telemetry" type="xbee_api"/>
|
|
|
|
<module name="flight_recorder"/>
|
|
<!--module name="logger" type="control_effectiveness">
|
|
<define name="LOGGER_CONTROL_EFFECTIVENESS_COMMANDS" value="FALSE"/>
|
|
<define name="LOGGER_CONTROL_EFFECTIVENESS_ACTUATORS" value="TRUE"/>
|
|
<define name="LOGGER_CONTROL_EFFECTIVENESS_POS" value="TRUE"/>
|
|
<define name="LOGGER_CONTROL_EFFECTIVENESS_SPEED" value="TRUE"/>
|
|
<define name="LOGGER_CONTROL_EFFECTIVENESS_AIRSPEED" value="TRUE"/>
|
|
</module-->
|
|
|
|
<module name="actuators" type="dshot">
|
|
<!-- <define name="DSHOT_SPEED" value="300"/> -->
|
|
<!--define name="DSHOT_TIM4_TELEMETRY_NUM" value="DSHOT_TLM_RX"/>
|
|
<define name="STM32_SERIAL_USE_UART4" value="TRUE"/-->
|
|
</module>
|
|
|
|
<module name="airspeed" type="sdp3x">
|
|
<define name="SDP3X_i2C_DEV" value="i2c2"/>
|
|
<define name="SDP3X_PRESSURE_SCALE" value="8.0"/>
|
|
<define name="SDP3X_PRESSURE_OFFSET" value="0.0"/>
|
|
<define name="USE_AIRSPEED_SDP3X" value="TRUE"/>
|
|
</module>
|
|
|
|
<module name="board" type="tawaki">
|
|
<configure name="BOARD_TAWAKI_ROTATED" value="TRUE"/>
|
|
<define name="IMU_MPU_CHAN_X" value="2"/>
|
|
<define name="IMU_MPU_CHAN_Z" value="0"/>
|
|
<define name="IMU_MPU_Z_SIGN" value="-1"/>
|
|
<!--Set the frequency to 2000 hz with 256 Hz internal low pass-->
|
|
<define name="IMU_MPU_LOWPASS_FILTER" value="MPU60X0_DLPF_256HZ"/>
|
|
<define name="IMU_MPU_SMPLRT_DIV" value="3"/>
|
|
<define name="IMU_MPU_ACCEL_LOWPASS_FILTER" value="MPU60X0_DLPF_ACC_218HZ"/>
|
|
<define name="LIS3MDL_CHAN_X" value="2" />
|
|
<define name="LIS3MDL_CHAN_Z" value="0" />
|
|
<define name="LIS3MDL_CHAN_Y_SIGN" value="-" />
|
|
</module>
|
|
|
|
<module name="air_data"/>
|
|
<module name="gps" type="ublox">
|
|
<configure name="GPS_BAUD" value="B115200"/>
|
|
<configure name="UBX_GPS_PORT" value="UART7"/>
|
|
<define name="GPS_FIX_TIMEOUT" value="0.5"/>
|
|
</module>
|
|
|
|
<module name="ins" type="ekf2"/>
|
|
|
|
<module name="stabilization" type="indi"/>
|
|
<module name="guidance" type="indi_hybrid_tailsitter"/>
|
|
<module name="nav" type="hybrid"/>
|
|
|
|
<module name="tag_tracking">
|
|
<configure name="JEVOIS_UART" value="UART3" description="UART on which Jevois camera is connected"/>
|
|
</module>
|
|
|
|
</firmware>
|
|
|
|
<servos driver="DShot">
|
|
<servo name="UR" no="3" min="0" neutral="100" max="2000"/>
|
|
<servo name="BR" no="4" min="0" neutral="100" max="2000"/>
|
|
<servo name="BL" no="1" min="0" neutral="100" max="2000"/>
|
|
<servo name="UL" no="2" min="0" neutral="100" max="2000"/>
|
|
</servos>
|
|
|
|
<commands>
|
|
<axis name="PITCH" failsafe_value="0"/>
|
|
<axis name="ROLL" failsafe_value="0"/>
|
|
<axis name="YAW" failsafe_value="0"/>
|
|
<axis name="THRUST" failsafe_value="0"/>
|
|
</commands>
|
|
|
|
<command_laws>
|
|
<set servo="UR" value="autopilot.motors_on ? actuators_pprz[0] : -MAX_PPRZ"/>
|
|
<set servo="BR" value="autopilot.motors_on ? actuators_pprz[1] : -MAX_PPRZ"/>
|
|
<set servo="BL" value="autopilot.motors_on ? actuators_pprz[2] : -MAX_PPRZ"/>
|
|
<set servo="UL" value="autopilot.motors_on ? actuators_pprz[3] : -MAX_PPRZ"/>
|
|
</command_laws>
|
|
|
|
<section name="IMU" prefix="IMU_">
|
|
<!-- IMU calibration, make sure to calibrate the IMU properly before flight, see the wiki for more info-->
|
|
|
|
<!-- <define name="MAG_X_CURRENT_COEF" value="0."/>
|
|
<define name="MAG_Y_CURRENT_COEF" value="0."/>
|
|
<define name="MAG_Z_CURRENT_COEF" value="0."/> -->
|
|
|
|
|
|
<!--define name= "MAG_X_CURRENT_COEF" value="-0.511272562535"/>
|
|
<define name= "MAG_Y_CURRENT_COEF" value="0.244268225323"/>
|
|
<define name= "MAG_Z_CURRENT_COEF" value="1.59518542807"/-->
|
|
<define name="MAG_X_NEUTRAL" value="-1057"/>
|
|
<define name="MAG_Y_NEUTRAL" value="-5436"/>
|
|
<define name="MAG_Z_NEUTRAL" value="-7865"/>
|
|
<define name="MAG_X_SENS" value="0.6407900424399927" integer="16"/>
|
|
<define name="MAG_Y_SENS" value="0.6504650411481829" integer="16"/>
|
|
<define name="MAG_Z_SENS" value="0.6138129561725305" integer="16"/>
|
|
|
|
<define name="ACCEL_X_SIGN" value="1"/>
|
|
<define name="ACCEL_Y_SIGN" value="1"/>
|
|
<define name="ACCEL_Z_SIGN" value="1"/>
|
|
|
|
<define name="GYRO_P_SIGN" value="1"/>
|
|
<define name="GYRO_Q_SIGN" value="1"/>
|
|
<define name="GYRO_R_SIGN" value="1"/>
|
|
|
|
<define name="ACCEL_X_NEUTRAL" value="70"/>
|
|
<define name="ACCEL_Y_NEUTRAL" value="5"/>
|
|
<define name="ACCEL_Z_NEUTRAL" value="48"/>
|
|
<define name="ACCEL_X_SENS" value="2.459511813085781" integer="16"/>
|
|
<define name="ACCEL_Y_SENS" value="2.404502491913208" integer="16"/>
|
|
<define name="ACCEL_Z_SENS" value="2.4486570636573215" integer="16"/>
|
|
|
|
<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>
|
|
|
|
<section name="AUTOPILOT">
|
|
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
|
|
<define name="MODE_AUTO1" value="AP_MODE_FORWARD"/>
|
|
<!-- <define name="MODE_AUTO1" value="AP_MODE_HOVER_Z_HOLD"/> -->
|
|
<define name="MODE_AUTO2" value="AP_MODE_NAV"/>
|
|
<define name="MODE_STARTUP" value="AP_MODE_NAV"/>
|
|
</section>
|
|
|
|
<section name="BAT">
|
|
<define name="MilliAmpereOfAdc(_adc)" value="_adc*100."/>
|
|
<define name="CATASTROPHIC_BAT_LEVEL" value="12.4" unit="V"/>
|
|
<define name="CRITIC_BAT_LEVEL" value="13.8" unit="V"/>
|
|
<define name="LOW_BAT_LEVEL" value="14.5" unit="V"/>
|
|
<define name="MAX_BAT_LEVEL" value="17.0" unit="V"/>
|
|
<define name="BAT_NB_CELLS" value="4"/>
|
|
</section>
|
|
|
|
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
|
<!-- setpoints -->
|
|
<define name="SP_MAX_PHI" value="60." unit="deg"/>
|
|
<define name="SP_MAX_THETA" value="60." unit="deg"/>
|
|
<define name="SP_MAX_R" value="90." unit="deg/s"/>
|
|
<define name="DEADBAND_R" value="250"/>
|
|
<define name="DEADBAND_A" value="250"/>
|
|
<define name="SP_PSI_DELTA_LIMIT" value="90" unit="deg"/>
|
|
</section>
|
|
|
|
<section name="EFF_SCHEDULING" prefix="FWD_">
|
|
<!-- control effectiveness, scaled by INDI_G_SCALING (1000)-->
|
|
<define name="G1" type="matrix">
|
|
<field value="{ -9.0, -9.0, 9.0, 9.0}"/>
|
|
<field value="{ -9.0, 9.0, 9.0, -9.0}"/>
|
|
<field value="{ -7.0, 7.0, -7.0, 7.0}"/>
|
|
<field value="{ -0.6, -0.6, -0.6, -0.6}"/>
|
|
</define>
|
|
|
|
<!--<define name="G1_ROLL" value="{ -10.0, -10.0, 10.0, 10.0}"/>
|
|
<define name="G1_PITCH" value="{ -10.0, 10.0, 10.0, -10.0}"/>
|
|
<define name="G1_YAW" value="{ -1.5, 1.5, -1.5, 1.5}"/>
|
|
<define name="G1_THRUST" value="{ -0.6, -0.6, -0.6, -0.6}"/>-->
|
|
</section>
|
|
|
|
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
|
<!-- UR BR BL UL-->
|
|
<!-- control effectiveness, scaled by INDI_G_SCALING (1000)-->
|
|
<define name="G1" type="matrix">
|
|
<field value="{ -20.0, -20.0, 20.0, 20.0}"/>
|
|
<field value="{ -19.5, 19.5, 19.5, -19.5}"/>
|
|
<field value="{ -7.0, 7.0, -7.0, 7.0}"/>
|
|
<field value="{ -0.85, -0.85, -0.85, -0.85}"/>
|
|
</define>
|
|
|
|
<!-- Big Wings -->
|
|
<!-- <define name="G1_ROLL" value="{ -4.0, -4.0, 4.0, 4.0}"/>
|
|
<define name="G1_PITCH" value="{ -16.5, 16.5, 16.5, -16.5}"/>
|
|
<define name="G1_YAW" value="{ -1.0, 1.0, -1.0, 1.0}"/>
|
|
<define name="G1_THRUST" value="{ -0.6, -0.6, -0.6, -0.6}"/> -->
|
|
|
|
|
|
<!--<define name="G1_ROLL" value="{ -15.0, -15.0, 15.0, 15.0}"/>
|
|
<define name="G1_PITCH" value="{ -15.0, 15.0, 15.0, -15.0}"/>
|
|
<define name="G1_YAW" value="{ -2.5, 2.5, -2.5, 2.5}"/>
|
|
<define name="G1_THRUST" value="{ -1.0, -1.0, -1.0, -1.0}"/>-->
|
|
<!--Counter torque effect of spinning up a rotor-->
|
|
<define name="G2" value="{0, 0, 0, 0}"/>
|
|
|
|
<!-- reference acceleration for attitude control -->
|
|
<define name="REF_ERR_P" value="100"/>
|
|
<define name="REF_ERR_Q" value="80"/>
|
|
<define name="REF_ERR_R" value="70"/>
|
|
<define name="REF_RATE_P" value="20."/>
|
|
<define name="REF_RATE_Q" value="18.0"/>
|
|
<define name="REF_RATE_R" value="11.0"/>
|
|
|
|
<!-- old falcon numbers : define name="REF_ERR_P" value="100"/>
|
|
<define name="REF_ERR_Q" value="63"/>
|
|
<define name="REF_ERR_R" value="50"/>
|
|
<define name="REF_RATE_P" value="20."/>
|
|
<define name="REF_RATE_Q" value="10.0"/>
|
|
<define name="REF_RATE_R" value="5.0"/-->
|
|
|
|
<!--<define name="REF_ERR_P" value="90.0"/>
|
|
<define name="REF_ERR_Q" value="130.0"/>
|
|
<define name="REF_ERR_R" value="130.0"/>
|
|
<define name="REF_RATE_P" value="8.0"/>
|
|
<define name="REF_RATE_Q" value="10.0"/>
|
|
<define name="REF_RATE_R" value="10.0"/> -->
|
|
|
|
<!--Maxium yaw rate, to avoid instability-->
|
|
<define name="MAX_R" value="60.0" unit="deg/s"/>
|
|
|
|
<define name="ESTIMATION_FILT_CUTOFF" value="4.0"/>
|
|
<define name="FILT_CUTOFF" value="5.0"/>
|
|
|
|
<!-- first order actuator dynamics -->
|
|
<define name="ACT_FREQ" value="{12.66, 12.66, 12.66, 12.66}"/>
|
|
<define name="ACT_RATE_LIMIT" value="{9600, 9600, 9600, 9600}"/>
|
|
<define name="ACT_IS_SERVO" value="{0, 0, 0, 0}"/>
|
|
|
|
<!-- Adaptive Learning Rate -->
|
|
<define name="USE_ADAPTIVE" value="FALSE"/>
|
|
<define name="ADAPTIVE_MU" value="0.0001"/>
|
|
</section>
|
|
|
|
<section name="GUIDANCE_INDI">
|
|
<define name="GUIDANCE_INDI_RC_DEBUG" value="FALSE"/>
|
|
<define name="GUIDANCE_INDI_POS_GAIN" value="0.2"/>
|
|
<define name="GUIDANCE_INDI_SPEED_GAIN" value="1.0"/>
|
|
<define name="GUIDANCE_INDI_POS_GAINZ" value="1.6"/>
|
|
<define name="GUIDANCE_INDI_SPEED_GAINZ" value="2.0"/>
|
|
<define name="GUIDANCE_INDI_PITCH_LIFT_EFF" value="0.12"/>
|
|
<define name="GUIDANCE_INDI_PITCH_EFF_SCALING" value="1.0"/>
|
|
<define name="GUIDANCE_H_REF_MAX_SPEED" value="16.0"/> <!--not used-->
|
|
<define name="GUIDANCE_INDI_MIN_THROTTLE" value="2000"/>
|
|
<define name="GUIDANCE_INDI_MIN_THROTTLE_FWD" value="1000"/>
|
|
<define name="GUIDANCE_INDI_MIN_PITCH" value="-120."/>
|
|
<define name="GUIDANCE_INDI_MAX_PITCH" value="25."/>
|
|
<define name="GUIDANCE_INDI_MAX_AIRSPEED" value="16.0"/>
|
|
<define name="GUIDANCE_HEADING_IS_FREE" value="FALSE"/> <!--heading can not be set by navigation -->
|
|
<define name="GUIDANCE_INDI_HEADING_BANK_GAIN" value="9.0"/>
|
|
<define name="GUIDANCE_INDI_PITCH_OFFSET_GAIN" value="0.0"/>
|
|
<define name="GUIDANCE_INDI_FILTER_CUTOFF" value="1.5"/>
|
|
<define name="GUIDANCE_INDI_LINE_GAIN" value="0.7"/>
|
|
<!--Flap effectiveness on lift-->
|
|
<define name="FE_LIFT_A_PITCH" value="0.00018"/>
|
|
<define name="FE_LIFT_B_PITCH" value="0.00072"/>
|
|
<define name="FE_LIFT_A_AS" value="0.0008"/>
|
|
<define name="FE_LIFT_B_AS" value="0.00009"/>
|
|
</section>
|
|
|
|
<!-- Gains for vertical navigation -->
|
|
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
|
<define name="HOVER_KP" value="174"/>
|
|
<define name="HOVER_KD" value="92"/>
|
|
<define name="HOVER_KI" value="72"/>
|
|
<define name="NOMINAL_HOVER_THROTTLE" value="0.4"/>
|
|
<define name="ADAPT_THROTTLE_ENABLED" value="FALSE"/>
|
|
</section>
|
|
|
|
<section name="NAV">
|
|
<define name="NAV_CLIMB_VSPEED" value="1.5"/>
|
|
<define name="NAV_DESCEND_VSPEED" value="-0.8"/>
|
|
</section>
|
|
|
|
<section name="AHRS" prefix="AHRS_">
|
|
<define name="GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
|
</section>
|
|
|
|
<include href="conf/mag/germany_aachen.xml"/>
|
|
|
|
<!-- Gains for horizontal navigation-->
|
|
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
|
<define name="MAX_BANK" value="50" unit="deg"/>
|
|
<define name="PGAIN" value="100"/> <!-- 100 for CYFOAM-->
|
|
<define name="DGAIN" value="100"/> <!-- 100 for CYFOAM-->
|
|
<define name="IGAIN" value="10"/> <!-- 0 for CYFOAM-->
|
|
</section>
|
|
|
|
<section name="MISC">
|
|
<!--The Quadshot uses (when TRUE) 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-->
|
|
<define name="TRANSITION_MAX_OFFSET" value="-80.0" unit="deg"/>
|
|
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
|
<define name="COORDINATED_TURN_AIRSPEED" value="18.0"/>
|
|
|
|
<define name="BARO_PERIODIC_FREQUENCY" value="50"/>
|
|
<define name="USE_AIRSPEED" value="TRUE"/>
|
|
|
|
<define name="FWD_SIDESLIP_GAIN" value="0.20"/> <!-- most flight done with 0.3 -->
|
|
|
|
<define name="EFF_SCHED_USE_FUNCTION" value="TRUE"/>
|
|
|
|
<define name="ARRIVED_AT_WAYPOINT" value="4.0"/> <!-- For outdoor -->
|
|
<define name="DEFAULT_CIRCLE_RADIUS" value="60"/> <!-- For outdoor -->
|
|
<define name="CARROT" value="5.0"/>
|
|
</section>
|
|
|
|
<section name="TAG_TRACKING" prefix="TAG_TRACKING_">
|
|
<define name="BODY_TO_CAM_PSI" value="0."/>
|
|
</section>
|
|
|
|
|
|
<section name="SIMULATOR" prefix="NPS_">
|
|
<define name="ACTUATOR_NAMES" value="UR,BR,BL,UL" type="string[]"/>
|
|
<define name="JSBSIM_MODEL" value="falcon" type="string"/>
|
|
<define name="NO_MOTOR_MIXING" value="TRUE"/>
|
|
</section>
|
|
|
|
<section name="GCS">
|
|
<define name="ALT_SHIFT_PLUS_PLUS" value="3"/>
|
|
<define name="ALT_SHIFT_PLUS" value="1"/>
|
|
<define name="ALT_SHIFT_MINUS" value="-1"/>
|
|
</section>
|
|
|
|
</airframe>
|