mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-09 22:49:53 +08:00
332 lines
14 KiB
XML
332 lines
14 KiB
XML
<!--Mini-Cyclone EPP Airframe
|
|
Chimera AP
|
|
Xbee API
|
|
Ublox M8T
|
|
SBUS Futaba -->
|
|
|
|
<airframe name="foam cylone">
|
|
|
|
<servos driver="Pwm">
|
|
<servo name="ELEVON_LEFT" no="0" min="1000" neutral="1500" max="2000"/> <!--neutral 1526-->
|
|
<servo name="ELEVON_RIGHT" no="1" min="1000" neutral="1500" max="2000"/> <!--neutral 1515-->
|
|
<servo name="RM" no="2" min="1000" neutral="1100" max="2000"/>
|
|
<servo name="LM" no="3" min="1000" neutral="1100" max="2000"/>
|
|
<!--<servo name="SERVO_TEST" no="4" min="1000" neutral="1500" 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="ELEVON_LEFT" value="autopilot.motors_on ? actuators_pprz[0] : 0"/>
|
|
<set servo="ELEVON_RIGHT" value="autopilot.motors_on ? actuators_pprz[1] : 0"/>
|
|
<set servo="RM" value="autopilot.motors_on ? actuators_pprz[2] : -MAX_PPRZ"/>
|
|
<set servo="LM" value="autopilot.motors_on ? actuators_pprz[3] : -MAX_PPRZ"/>
|
|
<!--<set servo="RM" value="autopilot_motors_on ? -MAX_PPRZ : -MAX_PPRZ"/>-->
|
|
<!--<set servo="LM" value="autopilot_motors_on ? -MAX_PPRZ : -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_NEUTRAL" value="-37"/>-->
|
|
<!--<define name="MAG_Y_NEUTRAL" value="299"/>-->
|
|
<!--<define name="MAG_Z_NEUTRAL" value="197"/>-->
|
|
<!--<define name="MAG_X_SENS" value="7.25691459037" integer="16"/>-->
|
|
<!--<define name="MAG_Y_SENS" value="7.7018409319" integer="16"/>-->
|
|
<!--<define name="MAG_Z_SENS" value="8.16601148911" integer="16"/>-->
|
|
|
|
|
|
<!--Mag of gps-->
|
|
<define name="MAG_X_NEUTRAL" value="21"/>
|
|
<define name="MAG_Y_NEUTRAL" value="-206"/>
|
|
<define name="MAG_Z_NEUTRAL" value="104"/>
|
|
<define name="MAG_X_SENS" value="3.58153558634" integer="16"/>
|
|
<define name="MAG_Y_SENS" value="3.58800117886" integer="16"/>
|
|
<define name="MAG_Z_SENS" value="3.57182532939" integer="16"/>
|
|
|
|
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
|
<define name="BODY_TO_IMU_THETA" value="94." 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_AUTO2" value="AP_MODE_NAV"/>
|
|
<define name="MODE_STARTUP" value="AP_MODE_NAV"/>
|
|
</section>
|
|
|
|
<section name="BAT">
|
|
<define name="LOW_BAT_LEVEL" value="13.9" units="V"/>
|
|
<define name="CATASTROPHIC_BAT_LEVEL" value="13.2" unit="V"/>
|
|
<define name="MAX_BAT_LEVEL" value="14.8" units="V"/>
|
|
</section>
|
|
|
|
<section name="ctrl_eff_scheduling" prefix="FWD_">
|
|
<!-- control effectiveness, scaled by INDI_G_SCALING (1000)-->
|
|
<define name="G1_ROLL" value="{ 0, 0, -13.0, 13.0}"/>
|
|
<define name="G1_PITCH" value="{-12.0, 12.0, 0, 0}"/>
|
|
<define name="G1_YAW" value="{-20.0, -20.0, 0.0, 0.0}"/>
|
|
<define name="G1_THRUST" value="{ 0, 0, -0.9, -0.9}"/>
|
|
</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="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
|
<!-- control effectiveness, scaled by INDI_G_SCALING (1000)-->
|
|
<define name="G1_ROLL" value="{ 0, 0, -13.3, 13.3}"/>
|
|
<define name="G1_PITCH" value="{-2.1, 2.1, 0, 0}"/>
|
|
<define name="G1_YAW" value="{-2.0, -2.0, 0.0, 0.0}"/>
|
|
<define name="G1_THRUST" value="{ 0, 0, -1.1, -1.1}"/>
|
|
<!--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="107.0"/>
|
|
<define name="REF_ERR_Q" value="200.0"/>
|
|
<define name="REF_ERR_R" value="200.0"/>
|
|
<define name="REF_RATE_P" value="14.0"/>
|
|
<define name="REF_RATE_Q" value="15.0"/>
|
|
<define name="REF_RATE_R" value="15.0"/>
|
|
|
|
<!--Maxium yaw rate, to avoid instability-->
|
|
<define name="MAX_R" value="100.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="{53., 53., 23., 23.}"/>
|
|
<define name="ACT_RATE_LIMIT" value="{170, 170, 9600, 9600}"/>
|
|
<define name="ACT_IS_SERVO" value="{1, 1, 0, 0}"/>
|
|
|
|
<!-- Adaptive Learning Rate -->
|
|
<define name="USE_ADAPTIVE" value="FALSE"/>
|
|
<define name="ADAPTIVE_MU" value="0.0001"/>
|
|
</section>
|
|
|
|
<!-- Gains for vertical navigation -->
|
|
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
|
<define name="HOVER_KP" value="200"/>
|
|
<define name="HOVER_KD" value="175"/>
|
|
<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="H_X" value="0.5138"/>-->
|
|
<!--<define name="H_Y" value="0.00019"/>-->
|
|
<!--<define name="H_Z" value="0.8578"/>-->
|
|
<!--<define name="GRAVITY_HEURISTIC_FACTOR" value="0"/>-->
|
|
<!--</section>-->
|
|
|
|
<section name="INS" prefix="INS_">
|
|
<!-- Delft -->
|
|
<define name="H_X" value="0.3928"/>
|
|
<define name="H_Y" value="-0.0140"/>
|
|
<define name="H_Z" value="0.9195"/>
|
|
</section>
|
|
|
|
<!-- Gains for horizontal navigation-->
|
|
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
|
<define name="PGAIN" value="100"/>
|
|
<define name="DGAIN" value="100"/>
|
|
<define name="IGAIN" value="0"/>
|
|
</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="-75.0" unit="deg"/>
|
|
<define name="COORDINATED_TURN_AIRSPEED" value="18.0"/>
|
|
|
|
<define name="BARO_PERIODIC_FREQUENCY" value="50"/>
|
|
<define name="GUIDANCE_H_MAX_BANK" value="60" unit="deg"/>
|
|
|
|
<define name="FWD_SIDESLIP_GAIN" value="0.32"/>
|
|
|
|
<define name="EFF_SCHED_USE_FUNCTION" value="TRUE"/>
|
|
|
|
<define name="ARRIVED_AT_WAYPOINT" value="50.0"/>
|
|
<define name="USE_AIRSPEED" value="TRUE"/>
|
|
</section>
|
|
|
|
<section name="SIMULATOR" prefix="NPS_">
|
|
<define name="ACTUATOR_NAMES" value="ele_left, ele_right, mot_right, mot_left" type="string[]"/>
|
|
<define name="JSBSIM_MODEL" value="cyclone" type="string"/>
|
|
<define name="NO_MOTOR_MIXING" value="TRUE"/>
|
|
</section>
|
|
|
|
<firmware name="rotorcraft">
|
|
<target name="ap" board="chimera_1.0">
|
|
<configure name="PERIODIC_FREQUENCY" value="500"/>
|
|
<module name="radio_control" type="sbus">
|
|
<!--[> Put the mode on channel AUX1<]-->
|
|
<define name="RADIO_KILL_SWITCH" value="5"/>
|
|
</module>
|
|
|
|
<module name="eff_scheduling_cyfoam">
|
|
<define name="SQUARED_ROLL_EFF" value="0.0018"/>
|
|
<define name="PITCH_EFF_AT_60" value="4.0"/>
|
|
<define name="YAW_EFF_AT_60" value="8.0"/>
|
|
<!--function of the form: A + B*airspeed^2-->
|
|
<define name="CE_PITCH_A" value="4.5"/>
|
|
<define name="CE_PITCH_B" value="0.01"/>
|
|
<define name="CE_YAW_A" value="5.631"/>
|
|
<define name="CE_YAW_B" value="0.0515"/>
|
|
</module>
|
|
|
|
<!--Switch advanced INDI scheduling functions on or off-->
|
|
<define name="INDI_FUNCTIONS_RC_CHANNEL" value="6"/>
|
|
|
|
<!-- Use the external mag (not in NPS target as then it needs to listen to all) -->
|
|
<define name="INS_FINV_MAG_ID" value="MAG_HMC58XX_SENDER_ID"/>
|
|
<define name="INS_EKF2_MAG_ID" value="MAG_HMC58XX_SENDER_ID"/>
|
|
<define name="AHRS_ICQ_MAG_ID" value="MAG_HMC58XX_SENDER_ID"/>
|
|
</target>
|
|
|
|
<target name="nps" board="pc">
|
|
<module name="fdm" type="jsbsim"/>
|
|
<module name="udp"/>
|
|
<module name="radio_control" type="datalink"/>
|
|
<module name="logger_file">
|
|
<define name="LOGGER_FILE_PATH" value="/home/ewoud/Documents"/>
|
|
</module>
|
|
|
|
<!--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="gps" type="ubx_ucenter"/>-->
|
|
<module name="tlsf"/>
|
|
<module name="pprzlog">
|
|
<define name="SDLOG_START_DELAY" value="10"/>
|
|
</module>
|
|
<module name="logger" type="sd_chibios"/>
|
|
<!--<module name="flight_recorder"/>-->
|
|
<!--<module name="logger_spi_link"/>-->
|
|
|
|
<!--Use an airspeed sensor and get the measured airspeed in the messages-->
|
|
<module name="airspeed" type="ms45xx_i2c">
|
|
<configure name="MS45XX_I2C_DEV" value="i2c1"/>
|
|
<define name="MS45XX_PRESSURE_SCALE" value="1.546"/> <!-- 2.4 / 1.6327 * 1.0521 -->
|
|
</module>
|
|
|
|
<module name="pwm_meas">
|
|
<define name="USE_PWM_INPUT1" value="PWM_PULSE_TYPE_ACTIVE_LOW"/>
|
|
<define name="USE_PWM_INPUT2" value="PWM_PULSE_TYPE_ACTIVE_LOW"/>
|
|
</module>
|
|
|
|
<module name="actuators" type="pwm">
|
|
<define name="SERVO_HZ" value="400"/>
|
|
<!--define name="USE_SERVOS_7AND8"/-->
|
|
</module>
|
|
|
|
<module name="mag" type="hmc58xx">
|
|
<configure name="MAG_HMC58XX_I2C_DEV" value="i2c2"/>
|
|
<define name="MODULE_HMC58XX_UPDATE_AHRS"/>
|
|
|
|
<define name="HMC58XX_CHAN_X" value="1"/>
|
|
<define name="HMC58XX_CHAN_Y" value="0"/>
|
|
<define name="HMC58XX_CHAN_Z" value="2"/>
|
|
|
|
<define name="HMC58XX_CHAN_X_SIGN" value="-"/>
|
|
<define name="HMC58XX_CHAN_Y_SIGN" value="+"/>
|
|
<define name="HMC58XX_CHAN_Z_SIGN" value="+"/>
|
|
|
|
<!--run the chimera mag once every 64 seconds to avoid message spam-->
|
|
<define name="MPU9250_MAG_PRESCALER" value="32768"/>
|
|
|
|
<define name="HMC58XX_MAG_TO_IMU_PHI" value="RadOfDeg\(6.5\)"/>
|
|
<define name="HMC58XX_MAG_TO_IMU_THETA" value="RadOfDeg\(28.5\)"/>
|
|
<define name="HMC58XX_MAG_TO_IMU_PSI" value="RadOfDeg\(181.0\)"/>
|
|
|
|
<!-- Current calibration -->
|
|
<define name="MILLIAMP_AT_IDLE_THROTTLE" value="1000"/>
|
|
<define name="MILLIAMP_AT_FULL_THROTTLE" value="30000"/>
|
|
<define name="CURRENT_ESTIMATION_NONLINEARITY" value="1.5"/>
|
|
</module>
|
|
|
|
<module name="sys_mon"/>
|
|
|
|
<module name="telemetry" type="xbee_api"/>
|
|
<module name="imu" type="chimera">
|
|
<define name="IMU_MPU9250_GYRO_RANGE" value="MPU9250_GYRO_RANGE_2000" />
|
|
<define name="IMU_MPU9250_ACCEL_RANGE" value="MPU9250_ACCEL_RANGE_16G" />
|
|
</module>
|
|
|
|
<!--<module name="servo_tester"/>-->
|
|
|
|
<module name="air_data">
|
|
<define name="USE_AIRSPEED_AIR_DATA" value="FALSE"/>
|
|
</module>
|
|
<module name="gps" type="ublox">
|
|
<configure name="GPS_BAUD" value="B115200"/>
|
|
</module>
|
|
<module name="stabilization" type="indi">
|
|
<define name="INDI_THRUST_ON_PITCH_EFF" value="23.0"/>
|
|
<define name="WLS_N_U_MAX" value="4" />
|
|
<define name="WLS_N_V_MAX" value="4" />
|
|
</module>
|
|
<module name="guidance" type="indi_hybrid_tailsitter">
|
|
<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="0.5"/>
|
|
<define name="GUIDANCE_INDI_SPEED_GAINZ" value="1.8"/>
|
|
<define name="GUIDANCE_INDI_LIFTD_ASQ" value="0.20"/>
|
|
<define name="GUIDANCE_INDI_PITCH_EFF_SCALING" value="1.0"/>
|
|
<define name="GUIDANCE_H_REF_MAX_SPEED" value="18.0"/> <!--not used-->
|
|
<define name="GUIDANCE_INDI_MIN_THROTTLE" value="3000"/>
|
|
<define name="GUIDANCE_INDI_MIN_THROTTLE_FWD" value="1500"/>
|
|
<define name="GUIDANCE_INDI_MAX_AIRSPEED" value="16.0"/>
|
|
<define name="GUIDANCE_INDI_HEADING_BANK_GAIN" value="15.0"/>
|
|
<define name="GUIDANCE_INDI_SPECIFIC_FORCE_GAIN" value="-500.0"/>
|
|
<define name="GUIDANCE_INDI_THRUST_DYNAMICS_FREQ" value="23.6"/>
|
|
<!--<define name="KNIFE_EDGE_TEST" value="TRUE"/>-->
|
|
<!--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"/>
|
|
</module>
|
|
<module name="nav" type="hybrid">
|
|
<define name="GUIDANCE_H_USE_REF" value="FALSE"/>
|
|
</module>
|
|
|
|
<!--<module name="ahrs" type="int_cmpl_quat">-->
|
|
<!--<configure name="USE_MAGNETOMETER" value="TRUE"/>-->
|
|
<!--<define name="AHRS_ICQ_MAG_ID" value="MAG_HMC58XX_SENDER_ID"/>-->
|
|
<!--<define name="AHRS_GRAVITY_UPDATE_COORDINATED_TURN" value="TRUE"/>-->
|
|
<!--<define name="AHRS_GPS_SPEED_IN_NEGATIVE_Z_DIRECTION" value="TRUE"/>-->
|
|
<!--</module>-->
|
|
|
|
<!--module name="ins"/-->
|
|
<module name="ins" type="ekf2"/>
|
|
<!--module name="ins" type="float_invariant">
|
|
<define name="INS_PROPAGATE_FREQUENCY" value="500"/>
|
|
</module-->
|
|
|
|
</firmware>
|
|
</airframe>
|