mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-23 21:36:28 +08:00
Cleanup TUD (#2397)
* [airframes] silent warning and report test flown code * Remove airframes that are not called from any conf... * Report good flight AscTec CDW tested MavTec MavTec 5 BR flies * Remove non-used airframes that are in conf
This commit is contained in:
committed by
Gautier Hattenberger
parent
27c12a5dc6
commit
e7df04620b
@@ -1,227 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="bebop_indi">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="bebop"/>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="udp"/>
|
||||
</target>
|
||||
|
||||
<!--define name="USE_SONAR" value="TRUE"/-->
|
||||
|
||||
<!-- Subsystem section -->
|
||||
<module name="telemetry" type="transparent_udp"/>
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="bebop"/>
|
||||
<module name="imu" type="bebop"/>
|
||||
<module name="gps" type="furuno"/>
|
||||
<module name="stabilization" type="indi_simple"/>
|
||||
<module name="ahrs" type="float_mlkf"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<configure name="USE_MAGNETOMETER" value="TRUE"/>
|
||||
<define name="AHRS_USE_GPS_HEADING" value="FALSE"/>
|
||||
<configure name="SECONDARY_AHRS" value="int_cmpl_quat"/>
|
||||
</module>
|
||||
<module name="ins" type="extended"/>
|
||||
</firmware>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="geo_mag"/>
|
||||
<module name="air_data"/>
|
||||
<module name="send_imu_mag_current"/>
|
||||
<!--module name="logger_file">
|
||||
<define name="FILE_LOGGER_PATH" value="/data/ftp/internal_000"/>
|
||||
</module-->
|
||||
<module name="bebop_cam"/>
|
||||
|
||||
<module name="video_rtp_stream">
|
||||
<define name="VIEWVIDEO_CAMERA" value="bottom_camera"/>
|
||||
<define name="VIEWVIDEO_QUALITY_FACTOR" value="80"/>
|
||||
<define name="VIEWVIDEO_DOWNSIZE_FACTOR" value="1"/>
|
||||
</module>
|
||||
</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="6000"/>
|
||||
</commands>
|
||||
|
||||
<section name="gyro_scaling">
|
||||
<define name="BEBOP_GYRO_RANGE" value="MPU60X0_GYRO_RANGE_2000"/>
|
||||
<define name="IMU_GYRO_P_SENS" value="4.359"/>
|
||||
<define name="IMU_GYRO_Q_SENS" value="4.359"/>
|
||||
<define name="IMU_GYRO_R_SENS" value="4.359"/>
|
||||
<define name="IMU_GYRO_P_SENS_NUM" value="4359"/>
|
||||
<define name="IMU_GYRO_Q_SENS_NUM" value="4359"/>
|
||||
<define name="IMU_GYRO_R_SENS_NUM" value="4359"/>
|
||||
<define name="IMU_GYRO_P_SENS_DEN" value="1000"/>
|
||||
<define name="IMU_GYRO_Q_SENS_DEN" value="1000"/>
|
||||
<define name="IMU_GYRO_R_SENS_DEN" value="1000"/>
|
||||
</section>
|
||||
|
||||
<servos driver="Default">
|
||||
<servo name="TOP_RIGHT" no="0" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="TOP_LEFT" no="1" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="BOTTOM_LEFT" no="2" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="BOTTOM_RIGHT" no="3" min="3000" neutral="3000" max="12000"/>
|
||||
</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="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="TOP_LEFT" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="TOP_RIGHT" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="AIR_DATA" prefix="AIR_DATA_">
|
||||
<define name="CALC_AIRSPEED" value="FALSE"/>
|
||||
<define name="CALC_TAS_FACTOR" value="FALSE"/>
|
||||
<define name="CALC_AMSL_BARO" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<include href="conf/airframes/tudelft/calibrations/bebop8.xml"/>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<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_">
|
||||
<!-- values used if no GPS fix, on 3D fix is update by geo_mag module -->
|
||||
<!-- 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"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="SONAR_MAX_RANGE" value="2.2"/>
|
||||
<define name="SONAR_UPDATE_ON_AGL" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
|
||||
<section name="RC_SETPOINT" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoint limits for attitude stabilization rc flight -->
|
||||
<define name="SP_MAX_PHI" value="45" unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="45" unit="deg"/>
|
||||
<define name="SP_MAX_R" value="300" unit="deg/s"/>
|
||||
<define name="DEADBAND_A" value="0"/>
|
||||
<define name="DEADBAND_E" value="0"/>
|
||||
<define name="DEADBAND_R" value="50"/>
|
||||
</section>
|
||||
|
||||
<section name="ATTITUDE_REFERENCE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- attitude reference generation model -->
|
||||
<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="450" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.9"/>
|
||||
<define name="REF_MAX_R" value="600." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(8000.)"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1_P" value="0.0639"/>
|
||||
<define name="G1_Q" value="0.0361"/>
|
||||
<define name="G1_R" value="0.0022"/>
|
||||
<define name="G2_R" value="0.1450"/>
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="600.0"/>
|
||||
<define name="REF_ERR_Q" value="600.0"/>
|
||||
<define name="REF_ERR_R" value="600.0"/>
|
||||
<define name="REF_RATE_P" value="28.0"/>
|
||||
<define name="REF_RATE_Q" value="28.0"/>
|
||||
<define name="REF_RATE_R" value="28.0"/>
|
||||
|
||||
<!-- second order filter parameters -->
|
||||
<define name="FILT_CUTOFF" value="8.0"/>
|
||||
<define name="FILT_CUTOFF_R" value="8.0"/>
|
||||
|
||||
<!-- first order actuator dynamics -->
|
||||
<define name="ACT_DYN_P" value="0.1"/>
|
||||
<define name="ACT_DYN_Q" value="0.1"/>
|
||||
<define name="ACT_DYN_R" value="0.1"/>
|
||||
|
||||
<!-- Adaptive Learning Rate -->
|
||||
<define name="USE_ADAPTIVE" value="FALSE"/>
|
||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
||||
</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="20"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.655"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<!-- Good weather -->
|
||||
<define name="MAX_BANK" value="20" unit="deg"/>
|
||||
<define name="REF_MAX_SPEED" value="2" unit="m/s"/>
|
||||
<!-- Bad weather -->
|
||||
<!-- define name="MAX_BANK" value="32" unit="deg"/ -->
|
||||
<define name="PGAIN" value="15"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="30"/>
|
||||
</section>
|
||||
|
||||
<section name="NAVIGATION" prefix="NAV_">
|
||||
<define name="CLIMB_VSPEED" value="2.5"/>
|
||||
<define name="DESCEND_VSPEED" value="-1.0"/>
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
</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_FLIP"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_FLIP"/>
|
||||
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="8700"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="9.9" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="11.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="11.1" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
</airframe>
|
||||
@@ -75,7 +75,7 @@
|
||||
settings="settings/fixedwing_basic.xml"
|
||||
settings_modules="modules/nav_basic_fw.xml modules/guidance_full_pid_fw.xml modules/stabilization_adaptive_fw.xml modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/gps_ubx_ucenter.xml modules/gps.xml modules/ahrs_float_dcm.xml modules/imu_common.xml"
|
||||
gui_color="blue"
|
||||
release="dfba3220f5b3500611231d02fca8799f9f045cb8"
|
||||
release="3c20b30a61bf15a55fdf6d909c82615364e75751"
|
||||
/>
|
||||
<aircraft
|
||||
name="DreamCatcher"
|
||||
@@ -142,6 +142,6 @@
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="modules/ahrs_int_cmpl_quat.xml modules/guidance_hybrid.xml modules/stabilization_indi_simple.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml modules/gps_ubx_ucenter.xml"
|
||||
gui_color="blue"
|
||||
release="6b54e33a7f9b16446622ea8213bbdc0283ad829a"
|
||||
release="cdca4378a73ac8a9468fdc4ee9f4a966d6f90c16"
|
||||
/>
|
||||
</conf>
|
||||
|
||||
@@ -1,229 +0,0 @@
|
||||
<!-- this is a LadyBird quadrotor frame equiped with Lisa/S 1.0 -->
|
||||
<!-- The LadyBird frame comes with four brushed motors in an X configuration. -->
|
||||
|
||||
<!--
|
||||
The motor and rotor configuration is the following:
|
||||
|
||||
Front
|
||||
^
|
||||
|
|
||||
|
||||
Motor3(NW) Motor0(NE)
|
||||
CW CCW
|
||||
\ /
|
||||
,___,
|
||||
| |
|
||||
| |
|
||||
|___|
|
||||
/ \
|
||||
CCW CW
|
||||
Motor2(SW) Motor1(SE)
|
||||
|
||||
The Lisa/S is rotated by 13deg CCW against the frame.
|
||||
-->
|
||||
|
||||
<!--
|
||||
Applicable configuration:
|
||||
airframe="airframes/examples/ladybird_lisa_s.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/rotorcraft_basic.xml"
|
||||
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml"
|
||||
-->
|
||||
|
||||
<airframe name="quadrotor_lisa_s">
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="NE" no="0" min="0" neutral="50" max="1000"/>
|
||||
<servo name="SE" no="1" min="0" neutral="50" max="1000"/>
|
||||
<servo name="SW" no="2" min="0" neutral="50" max="1000"/>
|
||||
<servo name="NW" no="3" min="0" neutral="50" max="1000"/>
|
||||
</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>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="NE" value="motor_mixing.commands[0]"/>
|
||||
<set servo="SE" value="motor_mixing.commands[1]"/>
|
||||
<set servo="SW" value="motor_mixing.commands[2]"/>
|
||||
<set servo="NW" value="motor_mixing.commands[3]"/>
|
||||
</command_laws>
|
||||
|
||||
<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="256"/>
|
||||
<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>
|
||||
|
||||
<include href="conf/airframes/tudelft/calibrations/ladybird18.xml" />
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<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="-13." unit="deg"/>
|
||||
</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"/>
|
||||
|
||||
<define name="USE_THROTTLE_FOR_MOTOR_ARMING" value="TRUE"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="14000"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="2.8" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="3.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="3.2" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="4.1" unit="V"/>
|
||||
</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_PSI" value="45." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="SP_MAX_P" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
<define name="DEADBAND_A" value="250"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.85"/>
|
||||
<define name="REF_MAX_P" value="400." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>
|
||||
|
||||
<define name="REF_OMEGA_Q" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_Q" value="0.85"/>
|
||||
<define name="REF_MAX_Q" value="400." unit="deg/s"/>
|
||||
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
|
||||
|
||||
<define name="REF_OMEGA_R" value="500" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.85"/>
|
||||
<define name="REF_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(900.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="400"/>
|
||||
<define name="PHI_DGAIN" value="200"/>
|
||||
<define name="PHI_IGAIN" value="100"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="400"/>
|
||||
<define name="THETA_DGAIN" value="200"/>
|
||||
<define name="THETA_IGAIN" value="100"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="500"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="0"/>
|
||||
<define name="THETA_DDGAIN" value="0"/>
|
||||
<define name="PSI_DDGAIN" value=" 300"/>
|
||||
|
||||
<define name="PHI_AGAIN" value="0"/>
|
||||
<define name="THETA_AGAIN" value="0"/>
|
||||
<define name="PSI_AGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="276"/>
|
||||
<define name="HOVER_KD" value="455"/>
|
||||
<define name="HOVER_KI" value="100"/>
|
||||
<define name="GUIDANCE_V_NOMINAL_HOVER_THROTTLE" value="0.5"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<!-- Delft magnetic field -->
|
||||
<define name="H_X" value="0.39049610"/>
|
||||
<define name="H_Y" value="0.00278894"/>
|
||||
<define name="H_Z" value="0.92060036"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="PGAIN" value="90"/>
|
||||
<define name="DGAIN" value="50"/>
|
||||
<define name="IGAIN" value="24"/>
|
||||
</section>
|
||||
|
||||
<section name="NAVIGATION" prefix="NAV_">
|
||||
<define name="CLIMB_VSPEED" value="1.0" />
|
||||
<define name="DESCEND_VSPEED" value="-0.5" />
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="ne_motor, se_motor, sw_motor, nw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
</section>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="send_imu_mag_current"/>
|
||||
</modules>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_s_1.0">
|
||||
<module name="radio_control" type="datalink">
|
||||
<define name="USE_PERSISTENT_SETTINGS" value="TRUE"/>
|
||||
</module>
|
||||
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="radio_control" type="ppm"/>
|
||||
</target>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<!-- This airframe is using the servo PWM outputs directly to drive mosfets, which in turn directly drive brushed motors.
|
||||
With the following settings we will be driving the motors with a 36KHz signal that should be well above anyone's hearing range.
|
||||
If we went with the 500Hz that woul be the default we would be hearing a very annoying high pitched sound coming from the motors.
|
||||
-->
|
||||
<!-- Setting the PWM timer base frequency to 36MHz -->
|
||||
<define name="PWM_BASE_FREQ" value="36000000"/>
|
||||
<!-- Setting the PWM interval to 36KHz -->
|
||||
<define name="SERVO_HZ" value="36000"/>
|
||||
<define name="USE_SERVOS_1AND2"/>
|
||||
</module>
|
||||
|
||||
<!--<module name="telemetry" type="superbitrf"/>-->
|
||||
<!-- Comment the previous line and uncomment the following one if you need
|
||||
to use the debug serial interface for telemetry. -->
|
||||
<module name="telemetry" type="bluegiga"/>
|
||||
<module name="imu" type="lisa_s_v1.0">
|
||||
<define name="LISA_S_UPSIDE_DOWN"/> <!-- Upside down is a relative term. :) -->
|
||||
</module>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<configure name="USE_MAGNETOMETER" value="1"/>
|
||||
<define name="AHRS_USE_GPS_HEADING" value="0"/>
|
||||
</module>
|
||||
<module name="ins"/>
|
||||
</firmware>
|
||||
</airframe>
|
||||
@@ -349,7 +349,7 @@
|
||||
|
||||
<!-- <define name="RADIO_KILL_SWITCH" value="5"/>-->
|
||||
<!-- Put the mode on channel AUX1-->
|
||||
<define name="RADIO_MODE" value="5"/>
|
||||
<!--<define name="RADIO_MODE" value="5"/>-->
|
||||
<define name="RADIO_CAMERA" value="RADIO_EXTRA1"/>
|
||||
<!-- <configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/> -->
|
||||
</module>
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
settings="settings/rotorcraft_basic.xml settings/modules/config_asctec_v2.xml"
|
||||
settings_modules="modules/gps_ubx_ucenter.xml modules/imu_quality_assessment.xml modules/ahrs_int_cmpl_quat.xml modules/stabilization_int_euler.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="white"
|
||||
release="33e02c9f1e831cb30ba9dc442e055b6e28c72a52"
|
||||
/>
|
||||
<aircraft
|
||||
name="TriCopter"
|
||||
|
||||
@@ -1,251 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
<!--
|
||||
* Psi a slightly modified Parrot AR.Drone 2.0 (http://www.openuas.org/)
|
||||
+ uBlox LEA5H and Sarantel helix GPS antenna
|
||||
|
||||
NOTES:
|
||||
+ Original ballbearings replaced with real ball bearings for all axis
|
||||
+ Frontcamera movable by servo on debug port - optional
|
||||
+ Spektrum RX DSMX clone on debug port - optional
|
||||
+ Iridium 9603N - optional
|
||||
|
||||
-->
|
||||
|
||||
<airframe name="Psi">
|
||||
<!-- ************************* FIRMWARE ************************* -->
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="ardrone2">
|
||||
<define name="AUTOPILOT_DISABLE_AHRS_KILL"/>
|
||||
<!--<define name="USE_PERSISTENT_SETTINGS" value="TRUE"/>-->
|
||||
<define name="BAT_CHECKER_DELAY" value="50"/>
|
||||
<!-- amount of time it take for the bat to check -->
|
||||
<!-- to avoid bat low spike detection when strong up movement withch draws short sudden power-->
|
||||
<define name="CATASTROPHIC_BATTERY_KILL_DELAY" value="50"/><!-- in seconds-->
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target>
|
||||
|
||||
<define name="USE_SONAR" value="TRUE"/>
|
||||
|
||||
<!-- Subsystem section -->
|
||||
<module name="telemetry" type="transparent_udp"/>
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="ardrone2"/>
|
||||
<module name="imu" type="ardrone2"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="indi_simple"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<configure name="USE_MAGNETOMETER" value="TRUE"/>
|
||||
<define name="AHRS_USE_GPS_HEADING" value="FALSE"/>
|
||||
</module>
|
||||
<module name="ins" type="extended"/>
|
||||
</firmware>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="bat_voltage_ardrone2"/>
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="air_data"/>
|
||||
<module name="geo_mag"/>
|
||||
<!-- ************************* PHOTOGRAMMETRY ****************************** -->
|
||||
<!-- <module name="photogrammetry_calculator"/> -->
|
||||
<!--<module name="video_rtp_stream">
|
||||
<define name="VIEWVIDEO_QUALITY_FACTOR" value="75"/>
|
||||
<define name="VIEWVIDEO_FPS" value="4"/>
|
||||
<define name="VIEWVIDEO_SHOT_PATH" value="/data/video/usb0/myphotos"/>
|
||||
</module>-->
|
||||
<!--<module name="video_usb_logger"/>
|
||||
<define name="LOG_ON_USB" value="TRUE"/>
|
||||
<define name="VIDEO_USB_LOGGER_PATH" value="/data/video/usb0/myphotologs"/>
|
||||
</module>-->
|
||||
<!--<module name="find_joe"> -->
|
||||
</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="3000"/>
|
||||
</commands>
|
||||
|
||||
<!-- ************************ AUTO RC COMMANDS ***************************** -->
|
||||
<auto_rc_commands>
|
||||
<!-- To still be able to trigger cam in MODENAV-->
|
||||
<!-- <set command="SHOOT" value="@AUX1"/> -->
|
||||
</auto_rc_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"/>
|
||||
|
||||
<!-- Time cross layout (X), with order NW (CW), NE (CCW), SE (CW), SW (CCW) -->
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="TOP_LEFT" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="TOP_RIGHT" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</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"/>
|
||||
|
||||
<!-- YOUR Magneto calibration for YOUR airframe hardware -->
|
||||
<define name="MAG_X_NEUTRAL" value="45"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="39"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="37"/>
|
||||
<define name="MAG_X_SENS" value="14.0225722894" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="13.5140696034" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="15.0331344825" 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_">
|
||||
<!-- Local Magnetic field NL Testfield-->
|
||||
<!--
|
||||
<define name="H_X" value="0.382478"/>
|
||||
<define name="H_Y" value="0.00563406"/>
|
||||
<define name="H_Z" value="0.923948"/>
|
||||
-->
|
||||
<!-- Local Magnetic field DE Testfield -->
|
||||
<define name="H_X" value="0.403896"/>
|
||||
<define name="H_Y" value="0.012277"/>
|
||||
<define name="H_Z" value="0.914723"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="SONAR_MAX_RANGE" value="1.7"/>
|
||||
<define name="SONAR_UPDATE_ON_AGL" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
|
||||
<section name="RC_SETPOINT" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoint limits for attitude stabilization rc flight -->
|
||||
<define name="SP_MAX_PHI" value="40" unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="40" unit="deg"/>
|
||||
<define name="SP_MAX_R" value="130" unit="deg/s"/>
|
||||
<define name="DEADBAND_A" value="10"/>
|
||||
<define name="DEADBAND_E" value="10"/>
|
||||
<define name="DEADBAND_R" value="200"/>
|
||||
</section>
|
||||
|
||||
<section name="ATTITUDE_REFERENCE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- attitude reference generation model -->
|
||||
<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="450" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.9"/>
|
||||
<define name="REF_MAX_R" value="600." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(8000.)"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1_P" value="0.032"/>
|
||||
<define name="G1_Q" value="0.025"/>
|
||||
<define name="G1_R" value="0.0032"/>
|
||||
<define name="G2_R" value="0.16"/>
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="380.0"/>
|
||||
<define name="REF_ERR_Q" value="380.0"/>
|
||||
<define name="REF_ERR_R" value="250.0"/>
|
||||
<define name="REF_RATE_P" value="21.6"/>
|
||||
<define name="REF_RATE_Q" value="21.6"/>
|
||||
<define name="REF_RATE_R" value="21.0"/>
|
||||
|
||||
<!-- second order filter parameters -->
|
||||
<define name="FILT_CUTOFF" value="3.2"/>
|
||||
<define name="FILT_CUTOFF_R" value="3.2"/>
|
||||
|
||||
<!-- first order actuator dynamics -->
|
||||
<define name="ACT_DYN_P" value="0.06"/>
|
||||
<define name="ACT_DYN_Q" value="0.06"/>
|
||||
<define name="ACT_DYN_R" value="0.06"/>
|
||||
|
||||
<!-- Adaptive Learning Rate -->
|
||||
<define name="USE_ADAPTIVE" value="FALSE"/>
|
||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
||||
</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_">
|
||||
<define name="MAX_BANK" value="31" unit="deg"/>
|
||||
<define name="PGAIN" value="79"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="30"/>
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_ardrone2" type="string"/>
|
||||
<define name="JSBSIM_INIT" value="reset00" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_ardrone2.h" type="string"/>
|
||||
</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"/>
|
||||
<define name="USE_THROTTLE_FOR_MOTOR_ARMING" value="TRUE"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</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="10.2" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
|
||||
<!-- ************************ GCS SPECIFICS ******************************** -->
|
||||
<section name="GCS">
|
||||
<define name="SPEECH_NAME" value="Psi"/>
|
||||
</section>
|
||||
|
||||
|
||||
</airframe>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,164 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../../airframe.dtd">
|
||||
|
||||
<airframe name="ardrone2">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<!-- Main autopilot target -->
|
||||
<target name="ap" board="ardrone2">
|
||||
<define name="USE_INS_NAV_INIT"/>
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="200"/>
|
||||
|
||||
<configure name="HOST" value="192.168.2.$(AC_ID)"/>
|
||||
<configure name="ARDRONE2_START_PAPARAZZI" value="1"/>
|
||||
<configure name="ARDRONE2_WIFI_MODE" value="2"/>
|
||||
<configure name="ARDRONE2_SSID" value="tudelft_swarmhub"/>
|
||||
<configure name="ARDRONE2_IP_ADDRESS_BASE" value="192.168.2."/>
|
||||
<configure name="ARDRONE2_IP_ADDRESS_PROBE" value="$(AC_ID)"/>
|
||||
|
||||
</target>
|
||||
|
||||
<!-- Subsystem section -->
|
||||
<module name="telemetry" type="transparent_udp"/>
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="ardrone2"/>
|
||||
<module name="imu" type="ardrone2"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins" type="extended"/>
|
||||
</firmware>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="time_countdown"/>
|
||||
<module name="bat_voltage_ardrone2"/>
|
||||
</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="3000"/>
|
||||
</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_LEFT" no="3" min="0" neutral="1" max="500"/>
|
||||
<servo name="BOTTOM_RIGHT" no="2" 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), as documented in paparazzi -->
|
||||
<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_get_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_LEFT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[3]"/>
|
||||
</command_laws>
|
||||
|
||||
<include href="conf/airframes/tudelft/IMAV2013/calibrations/$AC_ID_calib.xml"/>
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<!-- Body to IMU is no difference -->
|
||||
<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, calculated for: 52°3'56", 4°31'24" -->
|
||||
<!-- http://wiki.paparazziuav.org/wiki/Subsystem/ahrs#Local_Magnetic_Field -->
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="H_X" value="0.513081"/>
|
||||
<define name="H_Y" value="-0.00242783"/>
|
||||
<define name="H_Z" value="0.858336"/>
|
||||
</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="600" 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="900" 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="900" 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="600" 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="592"/>
|
||||
<define name="PHI_DGAIN" value="303"/>
|
||||
<define name="PHI_IGAIN" value="0"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="606"/>
|
||||
<define name="THETA_DGAIN" value="303"/>
|
||||
<define name="THETA_IGAIN" value="0"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="529"/>
|
||||
<define name="PSI_DGAIN" value="353"/>
|
||||
<define name="PSI_IGAIN" value="0"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="0"/>
|
||||
<define name="THETA_DDGAIN" value="0"/>
|
||||
<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_">
|
||||
<define name="MAX_BANK" value="30" unit="deg"/>
|
||||
<define name="PGAIN" value="79"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="30"/>
|
||||
</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.1" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="9.35" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="9.45" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
</airframe>
|
||||
@@ -1,183 +0,0 @@
|
||||
<!-- this is a tiny MavRick fixedwing frame equiped with Lisa/S 0.1 -->
|
||||
<!-- Using Lisa/S V1.0 board file as it is software compatible. -->
|
||||
|
||||
<!--
|
||||
Applicable configuration:
|
||||
airframe="airframes/tudelft/IMAV2013/mavrick_lisa_s.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_fixedwing.xml"
|
||||
flight_plan="flight_plans/fixedwing_basic.xml"
|
||||
settings="settings/fixedwing_basic.xml"
|
||||
-->
|
||||
|
||||
<airframe name="MavRick_LisaS">
|
||||
|
||||
<firmware name="fixedwing">
|
||||
<define name="AGR_CLIMB" />
|
||||
<target name="ap" board="lisa_s_1.0"/>
|
||||
|
||||
<module name="radio_control" type="superbitrf_rc">
|
||||
<define name="RADIO_TRANSMITTER_ID" value="2008496626"/> <!-- TUDelft Dx6i: TX 4 -->
|
||||
<define name="RADIO_TRANSMITTER_CHAN" value="6"/>
|
||||
<define name="RADIO_TRANSMITTER_PROTOCOL" value="0x01"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_FLAP"/>
|
||||
</module>
|
||||
|
||||
<!-- Communication -->
|
||||
<module name="telemetry" type="superbitrf"/>
|
||||
|
||||
<!-- Actuators are automatically chosen according to board-->
|
||||
<module name="imu" type="lisa_s_v1.0"/>
|
||||
<module name="ahrs" type="float_dcm"/>
|
||||
<define name="LISA_S_UPSIDE_DOWN"/>
|
||||
<module name="control"/>
|
||||
<module name="navigation"/>
|
||||
<!-- Sensors -->
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="ins" type="alt_float"/>
|
||||
|
||||
<module name="actuators" type="dualpwm">
|
||||
<define name="DUAL_PWM_ON"/>
|
||||
</module>
|
||||
</firmware>
|
||||
|
||||
<modules>
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
</modules>
|
||||
|
||||
<!-- commands section -->
|
||||
<servos driver="Pwm">
|
||||
<servo name="MOTOR" no="2" min="1040" neutral="1040" max="2000"/>
|
||||
</servos>
|
||||
<servos driver="Dualpwm">
|
||||
<servo name="AILEVON_LEFT" no="0" min="1200" neutral="1500" max="1800"/>
|
||||
<servo name="AILEVON_RIGHT" no="1" min="1800" neutral="1500" max="1200"/>
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="THROTTLE" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<rc_commands>
|
||||
<set command="THROTTLE" value="@THROTTLE"/>
|
||||
<set command="ROLL" value="@ROLL"/>
|
||||
<set command="PITCH" value="@PITCH"/>
|
||||
</rc_commands>
|
||||
|
||||
<section name="MIXER">
|
||||
<define name="AILEVON_AILERON_RATE" value="0.75"/>
|
||||
<define name="AILEVON_ELEVATOR_RATE" value="0.75"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<let var="aileron" value="@ROLL * AILEVON_AILERON_RATE"/>
|
||||
<let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
|
||||
<set servo="MOTOR" value="@THROTTLE"/>
|
||||
<set servo="AILEVON_LEFT" value="$elevator + $aileron"/>
|
||||
<set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="AUTO1" prefix="AUTO1_">
|
||||
<define name="MAX_ROLL" value="0.85"/>
|
||||
<define name="MAX_PITCH" value="0.6"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<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"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="0"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="0"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="0"/>
|
||||
|
||||
<!-- From delft MAVLab -->
|
||||
<define name="MAG_X_NEUTRAL" value="847"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-415"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="-264"/>
|
||||
<define name="MAG_X_SENS" value="2.43585513661" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.71461295002" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.4639003008" integer="16"/>
|
||||
</section>
|
||||
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="ROLL_NEUTRAL_DEFAULT" value="0.048" unit="rad"/>
|
||||
<define name="PITCH_NEUTRAL_DEFAULT" value="0." unit="rad"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="10000."/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="3.2" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="3.3" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="3.4" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="3.7" unit="V"/>
|
||||
</section>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
|
||||
<define name="CARROT" value="5." unit="s"/>
|
||||
<define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
|
||||
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
|
||||
</section>
|
||||
|
||||
<section name="VERTICAL CONTROL" prefix="V_CTL_">
|
||||
<define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
|
||||
<!-- outer loop proportional gain -->
|
||||
<define name="ALTITUDE_PGAIN" value="0.03"/>
|
||||
<!-- outer loop saturation -->
|
||||
<define name="ALTITUDE_MAX_CLIMB" value="2."/>
|
||||
|
||||
<!-- auto throttle inner loop -->
|
||||
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.32"/>
|
||||
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
|
||||
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.65"/>
|
||||
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
|
||||
<define name="AUTO_THROTTLE_DASH_TRIM" value="-4000"/>
|
||||
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.15" unit="%/(m/s)"/>
|
||||
<define name="AUTO_THROTTLE_PGAIN" value="0.01"/>
|
||||
<define name="AUTO_THROTTLE_IGAIN" value="0.1"/>
|
||||
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>
|
||||
|
||||
<define name="THROTTLE_SLEW_LIMITER" value="2" unit="s"/>
|
||||
</section>
|
||||
|
||||
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
|
||||
<define name="COURSE_PGAIN" value="1.0"/>
|
||||
<define name="COURSE_DGAIN" value="0.3"/>
|
||||
|
||||
<define name="ROLL_MAX_SETPOINT" value="0.6" unit="rad"/>
|
||||
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="rad"/>
|
||||
<define name="PITCH_MIN_SETPOINT" value="-0.5" unit="rad"/>
|
||||
|
||||
<define name="PITCH_PGAIN" value="12000."/>
|
||||
<define name="PITCH_DGAIN" value="1.5"/>
|
||||
|
||||
<define name="ELEVATOR_OF_ROLL" value="1250"/>
|
||||
|
||||
<define name="ROLL_ATTITUDE_GAIN" value="7500"/>
|
||||
<define name="ROLL_RATE_GAIN" value="1500"/>
|
||||
</section>
|
||||
|
||||
<section name="AGGRESSIVE" prefix="AGR_">
|
||||
<define name="BLEND_START" value="20"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
|
||||
<define name="BLEND_END" value="10"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
|
||||
<define name="CLIMB_THROTTLE" value="1.00"/><!-- Gaz for Aggressive Climb -->
|
||||
<define name="CLIMB_PITCH" value="0.3"/><!-- Pitch for Aggressive Climb -->
|
||||
<define name="DESCENT_THROTTLE" value="0.1"/><!-- Gaz for Aggressive Decent -->
|
||||
<define name="DESCENT_PITCH" value="-0.25"/><!-- Pitch for Aggressive Decent -->
|
||||
<define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
|
||||
<define name="DESCENT_NAV_RATIO" value="1.0"/>
|
||||
</section>
|
||||
|
||||
<section name="FAILSAFE" prefix="FAILSAFE_">
|
||||
<define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
|
||||
<define name="DEFAULT_THROTTLE" value="0.3" unit="%"/>
|
||||
<define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
|
||||
<define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
|
||||
<define name="HOME_RADIUS" value="100" unit="m"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,207 +0,0 @@
|
||||
<!-- this is a quadrocopter frame equiped with Lisa/S 0.1 and generic china pwm motor controllers -->
|
||||
<!-- Using Lisa/S 1.0 board file as it is software compatible. -->
|
||||
|
||||
<!--
|
||||
Applicable configuration:
|
||||
airframe="airframes/examples/quadrotor_lisa_s.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/rotorcraft_basic.xml"
|
||||
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml"
|
||||
-->
|
||||
|
||||
<airframe name="quadrotor_lisa_s">
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="LEFT" no="4" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="FRONT" no="5" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="RIGHT" no="1" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="BACK" no="0" min="1000" neutral="1100" max="1900"/>
|
||||
</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="1000"/>
|
||||
</commands>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="FRONT" value="motor_mixing.commands[0]"/>
|
||||
<set servo="BACK" value="motor_mixing.commands[1]"/>
|
||||
<set servo="LEFT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="RIGHT" value="motor_mixing.commands[3]"/>
|
||||
</command_laws>
|
||||
|
||||
<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="256"/>
|
||||
<define name="ROLL_COEF" value="{ 0, 0, 256, -256 }"/>
|
||||
<define name="PITCH_COEF" value="{ 256, -256, 0, 0 }"/>
|
||||
<define name="YAW_COEF" value="{ -256, -256, 256, 256 }"/>
|
||||
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="BODY_TO_IMU_PHI" value="184." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="3." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="-90." unit="deg"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="0"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="0"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="0"/>
|
||||
|
||||
<!-- MAGNETO CALIBRATION DELFT -->
|
||||
<define name="MAG_X_NEUTRAL" value="302"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-69"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="100"/>
|
||||
<define name="MAG_X_SENS" value="4.12281780645" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="4.2491445745" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="4.44132606171" integer="16"/>
|
||||
|
||||
<!-- MAGNETO CURRENT CALIBRATION -->
|
||||
<define name= "MAG_X_CURRENT_COEF" value="0.0103422023767"/>
|
||||
<define name= "MAG_Y_CURRENT_COEF" value="0.0084568317783"/>
|
||||
<define name= "MAG_Z_CURRENT_COEF" value="-0.01935617335"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_ATTITUDE_DIRECT"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="14000"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="3.0" unit="V"/>
|
||||
</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_PSI" value="45." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="SP_MAX_P" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
<define name="DEADBAND_A" value="250"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.85"/>
|
||||
<define name="REF_MAX_P" value="400." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>
|
||||
|
||||
<define name="REF_OMEGA_Q" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_Q" value="0.85"/>
|
||||
<define name="REF_MAX_Q" value="400." unit="deg/s"/>
|
||||
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
|
||||
|
||||
<define name="REF_OMEGA_R" value="500" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.85"/>
|
||||
<define name="REF_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(900.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="399"/>
|
||||
<define name="PHI_DGAIN" value="183"/>
|
||||
<define name="PHI_IGAIN" value="474"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="399"/>
|
||||
<define name="THETA_DGAIN" value="162"/>
|
||||
<define name="THETA_IGAIN" value="474"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="500"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="0"/>
|
||||
<define name="THETA_DDGAIN" value="0"/>
|
||||
<define name="PSI_DDGAIN" value=" 300"/>
|
||||
|
||||
<define name="PHI_AGAIN" value="0"/>
|
||||
<define name="THETA_AGAIN" value="0"/>
|
||||
<define name="PSI_AGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="400"/>
|
||||
<define name="HOVER_KD" value="350"/>
|
||||
<define name="HOVER_KI" value="144"/>
|
||||
<define name="GUIDANCE_V_NOMINAL_HOVER_THROTTLE" value="0.9"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="H_X" value=" 0.47577"/>
|
||||
<define name="H_Y" value=" 0.11811"/>
|
||||
<define name="H_Z" value=" 0.87161"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="PGAIN" value="50"/>
|
||||
<define name="DGAIN" value="50"/>
|
||||
<define name="IGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="front_motor, back_motor, right_motor, left_motor" type="string[]"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
</section>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="send_imu_mag_current"/>
|
||||
</modules>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_s_1.0">
|
||||
<module name="radio_control" type="superbitrf_rc">
|
||||
<define name="RADIO_TRANSMITTER_ID" value="2008496626"/> <!-- 425044546 -->
|
||||
<define name="RADIO_TRANSMITTER_CHAN" value="6"/> <!-- 9 -->
|
||||
<define name="RADIO_TRANSMITTER_PROTOCOL" value="0x01"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_FLAP"/>
|
||||
</module>
|
||||
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="radio_control" type="ppm"/>
|
||||
</target>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="SERVO_HZ" value="400"/>
|
||||
<define name="USE_SERVOS_1AND2"/>
|
||||
</module>
|
||||
|
||||
<module name="telemetry" type="superbitrf"/>
|
||||
<module name="imu" type="lisa_s_v1.0"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins"/>
|
||||
</firmware>
|
||||
|
||||
|
||||
<firmware name="test_progs">
|
||||
<target name="test_sys_time_timer" board="lisa_s_1.0">
|
||||
<configure name="SYS_TIME_LED" value="none"/>
|
||||
</target>
|
||||
<target name="test_telemetry" board="lisa_s_1.0"/>
|
||||
<target name="test_baro_board" board="lisa_s_1.0"/>
|
||||
<target name="test_can" board="lisa_s_1.0"/>
|
||||
</firmware>
|
||||
</airframe>
|
||||
@@ -1,212 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="ardrone2_indi">
|
||||
<description>ARDrone2, Loopings
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="ardrone2">
|
||||
<define name="AUTOPILOT_DISABLE_AHRS_KILL"/>
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target>
|
||||
|
||||
<define name="USE_SONAR" value="FALSE"/>
|
||||
|
||||
<!-- Subsystem section -->
|
||||
<module name="telemetry" type="transparent_udp"/>
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="ardrone2"/>
|
||||
<module name="imu" type="ardrone2"/>
|
||||
<module name="gps" type="datalink"/>
|
||||
<module name="stabilization" type="indi_simple"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<configure name="USE_MAGNETOMETER" value="TRUE"/>
|
||||
<define name="AHRS_USE_GPS_HEADING" value="FALSE"/>
|
||||
</module>
|
||||
<module name="ins" type="extended"/>
|
||||
|
||||
<module name="bat_voltage_ardrone2"/>
|
||||
<module name="send_imu_mag_current"/>
|
||||
<module name="air_data"/>
|
||||
<module name="logger_file"/>
|
||||
</firmware>
|
||||
|
||||
<commands>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="3000"/>
|
||||
</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="MISC">
|
||||
<define name="STOP_ROLL_CMD_ANGLE" value="70.0"/>
|
||||
<define name="FIRST_THRUST_DURATION" value="0.5"/>
|
||||
<define name="FINAL_THRUST_LEVEL" value="8500"/>
|
||||
</section>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<define name="TRIM_ROLL" value="0"/>
|
||||
<define name="TRIM_PITCH" value="0"/>
|
||||
<define name="TRIM_YAW" value="0"/>
|
||||
|
||||
<!-- Time cross layout (X), with order NW (CW), NE (CCW), SE (CW), SW (CCW) -->
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="TOP_LEFT" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="TOP_RIGHT" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</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_">
|
||||
<!-- Delft -->
|
||||
<define name="H_X" value="0.3892503"/>
|
||||
<define name="H_Y" value="0.0017972"/>
|
||||
<define name="H_Z" value="0.9211303"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="SONAR_MAX_RANGE" value="2.2"/>
|
||||
<define name="SONAR_UPDATE_ON_AGL" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
|
||||
<section name="RC_SETPOINT" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoint limits for attitude stabilization rc flight -->
|
||||
<define name="SP_MAX_PHI" value="45" unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="45" unit="deg"/>
|
||||
<define name="SP_MAX_R" value="180" unit="deg/s"/>
|
||||
<define name="DEADBAND_A" value="0"/>
|
||||
<define name="DEADBAND_E" value="0"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
</section>
|
||||
|
||||
<section name="ATTITUDE_REFERENCE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- attitude reference generation model -->
|
||||
<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="450" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.9"/>
|
||||
<define name="REF_MAX_R" value="600." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(8000.)"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1_P" value="0.032"/>
|
||||
<define name="G1_Q" value="0.025"/>
|
||||
<define name="G1_R" value="0.0032"/>
|
||||
<define name="G2_R" value="0.16"/>
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="380.0"/>
|
||||
<define name="REF_ERR_Q" value="380.0"/>
|
||||
<define name="REF_ERR_R" value="250.0"/>
|
||||
<define name="REF_RATE_P" value="21.6"/>
|
||||
<define name="REF_RATE_Q" value="21.6"/>
|
||||
<define name="REF_RATE_R" value="21.0"/>
|
||||
|
||||
<!-- second order filter parameters -->
|
||||
<define name="FILT_CUTOFF" value="3.2"/>
|
||||
<define name="FILT_CUTOFF_R" value="3.2"/>
|
||||
|
||||
<!-- first order actuator dynamics -->
|
||||
<define name="ACT_DYN_P" value="0.06"/>
|
||||
<define name="ACT_DYN_Q" value="0.06"/>
|
||||
<define name="ACT_DYN_R" value="0.06"/>
|
||||
|
||||
<!-- Adaptive Learning Rate -->
|
||||
<define name="USE_ADAPTIVE" value="FALSE"/>
|
||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
||||
</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"/ -->
|
||||
<define name="PGAIN" value="79"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="30"/>
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_ardrone2" type="string"/>
|
||||
<define name="JSBSIM_INIT" value="reset00" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_ardrone2.h" type="string"/>
|
||||
</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_FLIP"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_FLIP"/>
|
||||
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</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>
|
||||
@@ -1,225 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="ardrone2_opticflow">
|
||||
<description>
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="ardrone2"/>
|
||||
|
||||
<!--target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target-->
|
||||
|
||||
<define name="USE_SONAR" value="TRUE"/>
|
||||
|
||||
<!-- Subsystem section -->
|
||||
<module name="telemetry" type="transparent_udp"/>
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="ardrone2"/>
|
||||
<module name="imu" type="ardrone2"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="indi_simple"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<configure name="USE_MAGNETOMETER" value="TRUE"/>
|
||||
<define name="AHRS_USE_GPS_HEADING" value="FALSE"/>
|
||||
</module>
|
||||
<module name="ins" type="extended"/>
|
||||
|
||||
<module name="bat_voltage_ardrone2"/>
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="send_imu_mag_current"/>
|
||||
<module name="logger_file"/>
|
||||
|
||||
<module name="video_thread"/>
|
||||
|
||||
<module name="pose_history"/>
|
||||
<module name="cv_opticflow">
|
||||
<define name="OPTICFLOW_CAMERA" value="bottom_camera"/>
|
||||
<!-- ARDrone2 FPS improvements -->
|
||||
<define name="OPTICFLOW_PYRAMID_LEVEL" value="0"/>
|
||||
<define name="OPTICFLOW_FEATURE_MANAGEMENT" value="1"/>
|
||||
</module>
|
||||
|
||||
<module name="video_capture">
|
||||
<define name="VIDEO_CAPTURE_CAMERA" value="bottom_camera"/>
|
||||
<define name="VIDEO_CAPTURE_PATH" value="/data/ftp/internal_000/images"/>
|
||||
</module>
|
||||
</firmware>
|
||||
|
||||
<commands>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="3000"/>
|
||||
</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"/>
|
||||
|
||||
<!-- Time cross layout (X), with order NW (CW), NE (CCW), SE (CW), SW (CCW) -->
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="TOP_LEFT" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="TOP_RIGHT" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="VISION" prefix="VISION_">
|
||||
<define name="HOVER" value="FALSE"/>
|
||||
<define name="PHI_PGAIN" value="1500"/>
|
||||
<define name="PHI_IGAIN" value="800"/>
|
||||
<define name="THETA_PGAIN" value="1500"/>
|
||||
<define name="THETA_IGAIN" value="800"/>
|
||||
<define name="DESIRED_VX" value="0"/>
|
||||
<define name="DESIRED_VY" value="0"/>
|
||||
</section>
|
||||
|
||||
<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_">
|
||||
<!-- Delft -->
|
||||
<define name="H_X" value="0.3892503"/>
|
||||
<define name="H_Y" value="0.0017972"/>
|
||||
<define name="H_Z" value="0.9211303"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="SONAR_MAX_RANGE" value="2.2"/>
|
||||
<define name="SONAR_UPDATE_ON_AGL" value="TRUE"/>
|
||||
</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="600" 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="450" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.9"/>
|
||||
<define name="REF_MAX_R" value="600." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(8000.)"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1_P" value="0.032"/>
|
||||
<define name="G1_Q" value="0.025"/>
|
||||
<define name="G1_R" value="0.0032"/>
|
||||
<define name="G2_R" value="0.16"/>
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="380.0"/>
|
||||
<define name="REF_ERR_Q" value="380.0"/>
|
||||
<define name="REF_ERR_R" value="250.0"/>
|
||||
<define name="REF_RATE_P" value="21.6"/>
|
||||
<define name="REF_RATE_Q" value="21.6"/>
|
||||
<define name="REF_RATE_R" value="21.0"/>
|
||||
|
||||
<!-- second order filter parameters -->
|
||||
<define name="FILT_CUTOFF" value="3.2"/>
|
||||
<define name="FILT_CUTOFF_R" value="3.2"/>
|
||||
|
||||
<!-- first order actuator dynamics -->
|
||||
<define name="ACT_DYN_P" value="0.06"/>
|
||||
<define name="ACT_DYN_Q" value="0.06"/>
|
||||
<define name="ACT_DYN_R" value="0.06"/>
|
||||
|
||||
<!-- Adaptive Learning Rate -->
|
||||
<define name="USE_ADAPTIVE" value="TRUE"/>
|
||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
||||
</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"/ -->
|
||||
<define name="PGAIN" value="79"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="30"/>
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_ardrone2" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_ardrone2.h" type="string"/>
|
||||
</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_MODULE"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_HOVER_Z_HOLD"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</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>
|
||||
@@ -1,204 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="ardrone2_opticflow">
|
||||
<description>ARDrone2, Stereocam
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="ardrone2"/>
|
||||
<define name="USE_SONAR" value="TRUE"/>
|
||||
|
||||
<!-- Subsystem section -->
|
||||
<module name="telemetry" type="transparent_udp"/>
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="ardrone2"/>
|
||||
<module name="imu" type="ardrone2"/>
|
||||
<module name="gps" type="datalink"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<configure name="USE_MAGNETOMETER" value="TRUE"/>
|
||||
<define name="AHRS_USE_GPS_HEADING" value="FALSE"/>
|
||||
</module>
|
||||
<module name="ins" type="extended"/>
|
||||
|
||||
|
||||
<module name="bat_voltage_ardrone2"/>
|
||||
<!--module name="cv_opticflow"/>
|
||||
<module name="opticflow_hover"/-->
|
||||
<module name="stereocam">
|
||||
<configure name="STEREO_UART" value="UART1"/>
|
||||
<configure name="STEREO_BAUD" value="B1000000"/>
|
||||
</module>
|
||||
</firmware>
|
||||
|
||||
<commands>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="3000"/>
|
||||
</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"/>
|
||||
|
||||
<!-- Time cross layout (X), with order NW (CW), NE (CCW), SE (CW), SW (CCW) -->
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="TOP_LEFT" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="TOP_RIGHT" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="VISION" prefix="VISION_">
|
||||
<define name="HOVER" value="FALSE"/>
|
||||
<define name="PHI_PGAIN" value="1500"/>
|
||||
<define name="PHI_IGAIN" value="800"/>
|
||||
<define name="THETA_PGAIN" value="1500"/>
|
||||
<define name="THETA_IGAIN" value="800"/>
|
||||
<define name="DESIRED_VX" value="0"/>
|
||||
<define name="DESIRED_VY" value="0"/>
|
||||
</section>
|
||||
|
||||
<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"/ -->
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="SONAR_MAX_RANGE" value="2.2"/>
|
||||
<define name="SONAR_UPDATE_ON_AGL" value="TRUE"/>
|
||||
</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="600" 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="200" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.9"/>
|
||||
<define name="REF_MAX_R" value="300." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(4000.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="850"/>
|
||||
<define name="PHI_DGAIN" value="425"/>
|
||||
<define name="PHI_IGAIN" value="0"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="850"/>
|
||||
<define name="THETA_DGAIN" value="425"/>
|
||||
<define name="THETA_IGAIN" value="0"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="1000"/>
|
||||
<define name="PSI_DGAIN" value="700"/>
|
||||
<define name="PSI_IGAIN" value="0"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="0"/>
|
||||
<define name="THETA_DDGAIN" value="0"/>
|
||||
<define name="PSI_DDGAIN" value="100"/>
|
||||
</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"/ -->
|
||||
<!-- Hover without RC input-->
|
||||
<define name="GUIDANCE_H_USE_REF" value="FALSE"/>
|
||||
<define name="PGAIN" value="79"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="30"/>
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_ardrone2" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_ardrone2.h" type="string"/>
|
||||
</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_MODULE"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_HOVER_Z_HOLD"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</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>
|
||||
@@ -1,211 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="bebop2_indi">
|
||||
<description>Bebop2, Outdoor, MavLink
|
||||
</description>
|
||||
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="bebop2"/>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="udp"/>
|
||||
</target>
|
||||
|
||||
<!-- Subsystem section -->
|
||||
<module name="telemetry" type="transparent_udp"/>
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="bebop"/>
|
||||
<module name="imu" type="bebop"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="indi_simple"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<configure name="USE_MAGNETOMETER" value="TRUE"/>
|
||||
<define name="AHRS_USE_GPS_HEADING" value="FALSE"/>
|
||||
</module>
|
||||
<module name="ins" type="extended"/>
|
||||
|
||||
|
||||
<module name="geo_mag"/>
|
||||
<module name="air_data"/>
|
||||
<module name="send_imu_mag_current"/>
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="logger_file">
|
||||
<define name="FILE_LOGGER_PATH" value="/data/ftp/internal_000"/>
|
||||
</module>
|
||||
<module name="mavlink">
|
||||
<define name="UDP1_PORT_OUT" value="5000"/>
|
||||
<define name="UDP1_PORT_IN" value="5000"/>
|
||||
<define name="UDP1_HOST" value="192.168.42.83"/> <!--for bebop 2 for bebop1 onther ip for the phone <define name="UDP1_HOST" value="192.168.42.2"/> -->
|
||||
<define name="MAVLINK_SYSID" value="1"/>
|
||||
<configure name="MAVLINK_PORT" value="UDP1"/>
|
||||
</module>
|
||||
</firmware>
|
||||
|
||||
<commands>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="6000"/>
|
||||
</commands>
|
||||
|
||||
<servos driver="Default">
|
||||
<servo name="TOP_LEFT" no="0" min="2500" neutral="2500" max="12000"/>
|
||||
<servo name="TOP_RIGHT" no="1" min="2500" neutral="2500" max="12000"/>
|
||||
<servo name="BOTTOM_RIGHT" no="2" min="2500" neutral="2500" max="12000"/>
|
||||
<servo name="BOTTOM_LEFT" no="3" min="2500" neutral="2500" max="12000"/>
|
||||
</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="REVERSE" value="TRUE"/>
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="TOP_LEFT" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="TOP_RIGHT" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="AIR_DATA" prefix="AIR_DATA_">
|
||||
<define name="CALC_AIRSPEED" value="FALSE"/>
|
||||
<define name="CALC_TAS_FACTOR" value="FALSE"/>
|
||||
<define name="CALC_AMSL_BARO" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<include href="conf/airframes/tudelft/calibrations/bebop2_$AC_ID.xml" />
|
||||
|
||||
<!-- local magnetic field -->
|
||||
<!-- http://wiki.paparazziuav.org/wiki/Subsystem/ahrs#Local_Magnetic_Field -->
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<!-- values used if no GPS fix, on 3D fix is update by geo_mag module -->
|
||||
<!-- Delft -->
|
||||
<define name="H_X" value="0.3892503"/>
|
||||
<define name="H_Y" value="0.0017972"/>
|
||||
<define name="H_Z" value="0.9211303"/>
|
||||
|
||||
<!-- For vibrating airfames -->
|
||||
<define name="GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="SONAR_MAX_RANGE" value="2.2"/>
|
||||
<define name="SONAR_UPDATE_ON_AGL" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="RC_SETPOINT" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoint limits for attitude stabilization rc flight -->
|
||||
<define name="SP_MAX_PHI" value="45" unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="45" unit="deg"/>
|
||||
<define name="SP_MAX_R" value="300" unit="deg/s"/>
|
||||
<define name="DEADBAND_A" value="0"/>
|
||||
<define name="DEADBAND_E" value="0"/>
|
||||
<define name="DEADBAND_R" value="50"/>
|
||||
</section>
|
||||
|
||||
<section name="ATTITUDE_REFERENCE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- attitude reference generation model -->
|
||||
<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="450" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.9"/>
|
||||
<define name="REF_MAX_R" value="600." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(8000.)"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1_P" value="0.05"/>
|
||||
<define name="G1_Q" value="0.025"/>
|
||||
<define name="G1_R" value="0.0022"/>
|
||||
<define name="G2_R" value="0.20"/>
|
||||
|
||||
<!-- For the bebop2 we need to filter the roll rate due to the dampers -->
|
||||
<define name="FILTER_ROLL_RATE" value="TRUE"/>
|
||||
<define name="FILTER_PITCH_RATE" value="FALSE"/>
|
||||
<define name="FILTER_YAW_RATE" value="FALSE"/>
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="170.0"/>
|
||||
<define name="REF_ERR_Q" value="600.0"/>
|
||||
<define name="REF_ERR_R" value="600.0"/>
|
||||
<define name="REF_RATE_P" value="14.3"/>
|
||||
<define name="REF_RATE_Q" value="28.0"/>
|
||||
<define name="REF_RATE_R" value="28.0"/>
|
||||
|
||||
<!-- second order filter parameters -->
|
||||
<define name="FILT_CUTOFF" value="3.2"/>
|
||||
<define name="FILT_CUTOFF_R" value="3.2"/>
|
||||
|
||||
<!-- first order actuator dynamics -->
|
||||
<define name="ACT_DYN_P" value="0.06"/>
|
||||
<define name="ACT_DYN_Q" value="0.06"/>
|
||||
<define name="ACT_DYN_R" value="0.06"/>
|
||||
|
||||
<!-- Adaptive Learning Rate -->
|
||||
<define name="USE_ADAPTIVE" value="FALSE"/>
|
||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="350"/>
|
||||
<define name="HOVER_KD" value="85"/>
|
||||
<define name="HOVER_KI" value="20"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.655"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<!-- Good weather -->
|
||||
<define name="MAX_BANK" value="20" unit="deg"/>
|
||||
<define name="REF_MAX_SPEED" value="2" unit="m/s"/>
|
||||
<!-- Bad weather -->
|
||||
<!-- define name="MAX_BANK" value="32" unit="deg"/ -->
|
||||
<define name="PGAIN" value="120"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="30"/>
|
||||
</section>
|
||||
|
||||
<section name="NAVIGATION" prefix="NAV_">
|
||||
<define name="CLIMB_VSPEED" value="4.5"/>
|
||||
<define name="DESCEND_VSPEED" value="-1.0"/>
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
</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"/>
|
||||
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="8700"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="9.9" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="11.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="11.1" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
</airframe>
|
||||
@@ -1,214 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="bebop">
|
||||
<description>Autonomous Race 2017 Bebop1
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="bebop"/>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="udp"/>
|
||||
</target>
|
||||
|
||||
<define name="USE_SONAR"/>
|
||||
|
||||
<!-- Subsystem section -->
|
||||
<module name="telemetry" type="transparent_udp"/>
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="bebop"/>
|
||||
<module name="imu" type="bebop"/>
|
||||
<module name="gps" type="datalink"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="float_mlkf"/>
|
||||
<module name="ins" type="extended"/>
|
||||
|
||||
|
||||
<module name="geo_mag"/>
|
||||
<module name="air_data"/>
|
||||
<module name="send_imu_mag_current"/>
|
||||
<!--module name="logger_file">
|
||||
<define name="FILE_LOGGER_PATH" value="/data/ftp/internal_000"/>
|
||||
</module-->
|
||||
|
||||
<module name="bebop_cam">
|
||||
</module>
|
||||
|
||||
<module name="pose_history"/>
|
||||
|
||||
<module name="cv_detect_contour">
|
||||
<define name="DETECT_CONTOUR_CAMERA" value="front_camera"/>
|
||||
</module>
|
||||
<module name="cv_opticflow">
|
||||
<define name="OPTICFLOW_METHOD" value="1"/>
|
||||
<define name="OPTICFLOW_CAMERA" value="bottom_camera"/>
|
||||
<define name="CAMERA_ROTATED_180" value="TRUE"/>
|
||||
</module>
|
||||
<module name="video_rtp_stream">
|
||||
<define name="VIEWVIDEO_CAMERA" value="bottom_camera"/>
|
||||
</module>
|
||||
</firmware>
|
||||
|
||||
<commands>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="6000"/>
|
||||
</commands>
|
||||
|
||||
<servos driver="Default">
|
||||
<servo name="TOP_LEFT" no="0" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="TOP_RIGHT" no="1" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="BOTTOM_RIGHT" no="2" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="BOTTOM_LEFT" no="3" min="3000" neutral="3000" max="12000"/>
|
||||
</servos>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<!-- Time cross layout (X), with order NW (CW), NE (CCW), SE (CW), SW (CCW) -->
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="TOP_LEFT" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="TOP_RIGHT" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="AIR_DATA" prefix="AIR_DATA_">
|
||||
<define name="CALC_AIRSPEED" value="FALSE"/>
|
||||
<define name="CALC_TAS_FACTOR" value="FALSE"/>
|
||||
<define name="CALC_AMSL_BARO" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<!-- Magneto calibration -->
|
||||
<define name="MAG_X_NEUTRAL" value="166"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="21"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="202"/>
|
||||
<define name="MAG_X_SENS" value="6.90518428178" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="7.14998083717" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="6.91930289812" 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_">
|
||||
<!-- values used if no GPS fix, on 3D fix is update by geo_mag module -->
|
||||
<!-- Delft -->
|
||||
<define name="H_X" value="0.3892503"/>
|
||||
<define name="H_Y" value="0.0017972"/>
|
||||
<define name="H_Z" value="0.9211303"/>
|
||||
|
||||
<!-- For vibrating airfames -->
|
||||
<define name="GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="SONAR_MAX_RANGE" value="2.2"/>
|
||||
<define name="SONAR_UPDATE_ON_AGL" value="TRUE"/>
|
||||
</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="300" unit="deg/s"/>
|
||||
<define name="DEADBAND_A" value="0"/>
|
||||
<define name="DEADBAND_E" value="0"/>
|
||||
<define name="DEADBAND_R" value="50"/>
|
||||
|
||||
<!-- 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="450" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.9"/>
|
||||
<define name="REF_MAX_R" value="600." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(8000.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="920"/>
|
||||
<define name="PHI_DGAIN" value="425"/>
|
||||
<define name="PHI_IGAIN" value="0"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="920"/>
|
||||
<define name="THETA_DGAIN" value="425"/>
|
||||
<define name="THETA_IGAIN" value="0"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="8000"/>
|
||||
<define name="PSI_DGAIN" value="700"/>
|
||||
<define name="PSI_IGAIN" value="0"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="0"/>
|
||||
<define name="THETA_DDGAIN" value="0"/>
|
||||
<define name="PSI_DDGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="550"/>
|
||||
<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="TRUE"/>
|
||||
</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"/ -->
|
||||
<define name="PGAIN" value="350"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="30"/>
|
||||
<define name="REF_MAX_SPEED" value="0.2"/>
|
||||
</section>
|
||||
|
||||
<section name="NAVIGATION" prefix="NAV_">
|
||||
<define name="CLIMB_VSPEED" value="2.5" />
|
||||
<define name="DESCEND_VSPEED" value="-1.0" />
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
</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_GUIDED"/>
|
||||
</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="10.6" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
</airframe>
|
||||
|
||||
@@ -1,214 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="bebop">
|
||||
<description>Bebop, Optitrack
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="bebop"/>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="udp"/>
|
||||
</target>
|
||||
|
||||
<!--define name="USE_SONAR" value="TRUE"/-->
|
||||
|
||||
<!-- Subsystem section -->
|
||||
<module name="telemetry" type="transparent_udp"/>
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="bebop"/>
|
||||
<module name="imu" type="bebop"/>
|
||||
<module name="gps" type="furuno"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="float_mlkf"/>
|
||||
<module name="ins" type="extended"/>
|
||||
|
||||
|
||||
<module name="geo_mag"/>
|
||||
<module name="air_data"/>
|
||||
<module name="send_imu_mag_current"/>
|
||||
<!--module name="logger_file">
|
||||
<define name="FILE_LOGGER_PATH" value="/data/ftp/internal_000"/>
|
||||
</module-->
|
||||
|
||||
<module name="bebop_cam"/>
|
||||
|
||||
<module name="video_capture">
|
||||
<define name="VIDEO_CAPTURE_CAMERA" value="front_camera"/>
|
||||
<define name="VIDEO_CAPTURE_PATH" value="/data/ftp/internal_000/images"/>
|
||||
</module>
|
||||
|
||||
<module name="video_rtp_stream">
|
||||
<define name="VIEWVIDEO_CAMERA" value="front_camera"/>
|
||||
<define name="VIEWVIDEO_DOWNSIZE_FACTOR" value="8"/>
|
||||
<define name="VIEWVIDEO_QUALITY_FACTOR" value="60"/>
|
||||
</module>
|
||||
|
||||
</firmware>
|
||||
|
||||
<commands>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="6000"/>
|
||||
</commands>
|
||||
|
||||
<servos driver="Default">
|
||||
<servo name="TOP_RIGHT" no="0" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="TOP_LEFT" no="1" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="BOTTOM_LEFT" no="2" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="BOTTOM_RIGHT" no="3" min="3000" neutral="3000" max="12000"/>
|
||||
</servos>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<!-- Time cross layout (X), with order NW (CW), NE (CCW), SE (CW), SW (CCW) -->
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="TOP_LEFT" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="TOP_RIGHT" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="BEBOP_FRONT_CAMERA" prefix="MT9F002_">
|
||||
<define name="OUTPUT_HEIGHT" value="640" />
|
||||
<define name="OUTPUT_WIDTH" value="640" />
|
||||
<define name="OFFSET_X" value="0.15" />
|
||||
<define name="TARGET_EXPOSURE" value="30" />
|
||||
<define name="ZOOM" value="1.25"/>
|
||||
</section>
|
||||
|
||||
<section name="AIR_DATA" prefix="AIR_DATA_">
|
||||
<define name="CALC_AIRSPEED" value="FALSE"/>
|
||||
<define name="CALC_TAS_FACTOR" value="FALSE"/>
|
||||
<define name="CALC_AMSL_BARO" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<!-- Magneto calibration -->
|
||||
<define name="MAG_X_NEUTRAL" value="18"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="157"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="49"/>
|
||||
<define name="MAG_X_SENS" value="10.5007722373" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="11.1147400462" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="11.6479371722" 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_">
|
||||
<!-- values used if no GPS fix, on 3D fix is update by geo_mag module -->
|
||||
<!-- Delft -->
|
||||
<define name="H_X" value="0.3892503"/>
|
||||
<define name="H_Y" value="0.0017972"/>
|
||||
<define name="H_Z" value="0.9211303"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="SONAR_MAX_RANGE" value="2.2"/>
|
||||
<define name="SONAR_UPDATE_ON_AGL" value="TRUE"/>
|
||||
</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="300" unit="deg/s"/>
|
||||
<define name="DEADBAND_A" value="0"/>
|
||||
<define name="DEADBAND_E" value="0"/>
|
||||
<define name="DEADBAND_R" value="50"/>
|
||||
|
||||
<!-- 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="450" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.9"/>
|
||||
<define name="REF_MAX_R" value="600." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(8000.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="920"/>
|
||||
<define name="PHI_DGAIN" value="425"/>
|
||||
<define name="PHI_IGAIN" value="0"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="920"/>
|
||||
<define name="THETA_DGAIN" value="425"/>
|
||||
<define name="THETA_IGAIN" value="0"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="8000"/>
|
||||
<define name="PSI_DGAIN" value="700"/>
|
||||
<define name="PSI_IGAIN" value="0"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="0"/>
|
||||
<define name="THETA_DDGAIN" value="0"/>
|
||||
<define name="PSI_DDGAIN" value="0"/>
|
||||
</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="TRUE"/>
|
||||
</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"/ -->
|
||||
<define name="PGAIN" value="79"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="30"/>
|
||||
</section>
|
||||
|
||||
<section name="NAVIGATION" prefix="NAV_">
|
||||
<define name="CLIMB_VSPEED" value="2.5" />
|
||||
<define name="DESCEND_VSPEED" value="-1.0" />
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
</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="10.6" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
</airframe>
|
||||
@@ -5,7 +5,9 @@
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="bebop"/>
|
||||
<target name="ap" board="bebop">
|
||||
<define name="STABILIZATION_INDI_G2_R" value="0.1450"/>
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
@@ -136,7 +138,6 @@
|
||||
<define name="G1_P" value="0.0639"/>
|
||||
<define name="G1_Q" value="0.0361"/>
|
||||
<define name="G1_R" value="0.0022"/>
|
||||
<define name="G2_R" value="0.1450"/>
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="600.0"/>
|
||||
|
||||
@@ -1,212 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="bebop_indi">
|
||||
<description>Bebop, INDI, No Vision
|
||||
</description>
|
||||
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="bebop"/>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="udp"/>
|
||||
</target>
|
||||
|
||||
<!-- Subsystem section -->
|
||||
<module name="telemetry" type="transparent_udp"/>
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="bebop"/>
|
||||
<module name="imu" type="bebop"/>
|
||||
<module name="gps" type="datalink"/>
|
||||
<module name="stabilization" type="indi_simple"/>
|
||||
<module name="stabilization" type="rate_indi"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<configure name="USE_MAGNETOMETER" value="FALSE"/>
|
||||
<define name="AHRS_USE_GPS_HEADING" value="TRUE"/>
|
||||
</module>
|
||||
<module name="ins" type="extended"/>
|
||||
<module name="guidance" type="indi"/>
|
||||
|
||||
|
||||
<module name="geo_mag"/>
|
||||
<module name="air_data"/>
|
||||
<module name="send_imu_mag_current"/>
|
||||
<module name="logger_file">
|
||||
<define name="FILE_LOGGER_PATH" value="/data/ftp/internal_000"/>
|
||||
</module>
|
||||
</firmware>
|
||||
|
||||
<commands>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="6000"/>
|
||||
</commands>
|
||||
|
||||
<servos driver="Default">
|
||||
<servo name="TOP_RIGHT" no="0" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="TOP_LEFT" no="1" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="BOTTOM_LEFT" no="2" min="3000" neutral="3000" max="12000"/>
|
||||
<servo name="BOTTOM_RIGHT" no="3" min="3000" neutral="3000" max="12000"/>
|
||||
</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="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="TOP_LEFT" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="TOP_RIGHT" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="AIR_DATA" prefix="AIR_DATA_">
|
||||
<define name="CALC_AIRSPEED" value="FALSE"/>
|
||||
<define name="CALC_TAS_FACTOR" value="FALSE"/>
|
||||
<define name="CALC_AMSL_BARO" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<include href="conf/airframes/tudelft/calibrations/bebop7.xml" />
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<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_">
|
||||
<!-- values used if no GPS fix, on 3D fix is update by geo_mag module -->
|
||||
<!-- Delft -->
|
||||
<define name="H_X" value="0.3892503"/>
|
||||
<define name="H_Y" value="0.0017972"/>
|
||||
<define name="H_Z" value="0.9211303"/>
|
||||
|
||||
<define name="HEADING_UPDATE_GPS_MIN_SPEED" value="0"/>
|
||||
<define name="GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="SONAR_MAX_RANGE" value="2.2"/>
|
||||
<define name="SONAR_UPDATE_ON_AGL" value="TRUE"/>
|
||||
|
||||
<!-- 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="RC_SETPOINT" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoint limits for attitude stabilization rc flight -->
|
||||
<define name="SP_MAX_PHI" value="45" unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="45" unit="deg"/>
|
||||
<define name="SP_MAX_R" value="120" unit="deg/s"/>
|
||||
<define name="DEADBAND_A" value="0"/>
|
||||
<define name="DEADBAND_E" value="0"/>
|
||||
<define name="DEADBAND_R" value="50"/>
|
||||
</section>
|
||||
|
||||
<section name="ATTITUDE_REFERENCE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- attitude reference generation model -->
|
||||
<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="450" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.9"/>
|
||||
<define name="REF_MAX_R" value="600." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(8000.)"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1_P" value="0.0639"/>
|
||||
<define name="G1_Q" value="0.0361"/>
|
||||
<define name="G1_R" value="0.0022"/>
|
||||
<define name="G2_R" value="0.1450"/>
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="600.0"/>
|
||||
<define name="REF_ERR_Q" value="600.0"/>
|
||||
<define name="REF_ERR_R" value="600.0"/>
|
||||
<define name="REF_RATE_P" value="28.0"/>
|
||||
<define name="REF_RATE_Q" value="28.0"/>
|
||||
<define name="REF_RATE_R" value="28.0"/>
|
||||
|
||||
<!--Maxium yaw rate, to avoid instability-->
|
||||
<define name="MAX_R" value="120.0" unit="deg/s"/>
|
||||
|
||||
<!-- second order filter parameters -->
|
||||
<define name="FILT_CUTOFF" value="8.0"/>
|
||||
<define name="FILT_CUTOFF_R" value="8.0"/>
|
||||
|
||||
<!-- first order actuator dynamics -->
|
||||
<define name="ACT_DYN_P" value="0.1"/>
|
||||
<define name="ACT_DYN_Q" value="0.1"/>
|
||||
<define name="ACT_DYN_R" value="0.1"/>
|
||||
|
||||
<!-- Adaptive Learning Rate -->
|
||||
<define name="USE_ADAPTIVE" value="FALSE"/>
|
||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
||||
</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="20"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.655"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<!-- Good weather -->
|
||||
<define name="MAX_BANK" value="20" unit="deg"/>
|
||||
<define name="REF_MAX_SPEED" value="2" unit="m/s"/>
|
||||
<!-- Bad weather -->
|
||||
<!-- define name="MAX_BANK" value="32" unit="deg"/ -->
|
||||
<define name="PGAIN" value="79"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="30"/>
|
||||
</section>
|
||||
|
||||
<section name="NAVIGATION" prefix="NAV_">
|
||||
<define name="CLIMB_VSPEED" value="2.5"/>
|
||||
<define name="DESCEND_VSPEED" value="-1.0"/>
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
</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"/>
|
||||
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="8700"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="9.9" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="11.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="11.1" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
</airframe>
|
||||
@@ -1,232 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!--
|
||||
/home/microuav/paparazzi/sw/tools/bluegiga_usb_dongle/bluegiga_usb_driver /dev/ttyACM2 00:07:80:2d:d6:d9 4242 4252
|
||||
-->
|
||||
|
||||
<airframe name="GeniusDD">
|
||||
<description>Genius, BlueGiga, INDI
|
||||
</description>
|
||||
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_s_1.0">
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
<module name="radio_control" type="datalink">
|
||||
<define name="USE_PERSISTENT_SETTINGS" value="TRUE"/>
|
||||
</module>
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
|
||||
</target>
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="TIM5_SERVO_HZ" value="300"/>
|
||||
<define name="SERVO_HZ" value="300"/>
|
||||
<define name="USE_SERVOS_1AND2"/>
|
||||
</module>
|
||||
|
||||
<configure name="USE_MAGNETOMETER" value="1"/>
|
||||
<module name="telemetry" type="bluegiga"/>
|
||||
<module name="imu" type="lisa_s_v1.0"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="heli_indi"/> <!-- int_quat / heli_indi -->
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins"/>
|
||||
<!-- <module name="rpm_sensor" type="eagletree"/>
|
||||
<module name="stabilization" type="heli_indi"/>
|
||||
<module name="rpm_sensor" type="eagletree"/>
|
||||
<module name="ahrs" type="int_cmpl_quat_notch"/>-->
|
||||
|
||||
|
||||
<!--<load name="geo_mag.xml"/>-->
|
||||
<load name="air_data.xml"/>
|
||||
<load name="gps_ubx_ucenter.xml"/>
|
||||
<load name="heli_swashplate_mixing.xml"/>
|
||||
<load name="heli_throttle_curve.xml"/>
|
||||
</firmware>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="THROTTLE" no="1" min="1890" neutral="1890" max="1430"/>
|
||||
<servo name="FRONT" no="5" min="1700" neutral="1300" max="1000"/>
|
||||
<servo name="RIGHTBACK" no="4" min="1850" neutral="1450" max="1150"/>
|
||||
<servo name="LEFTBACK" no="0" min="1900" neutral="1550" max="1200"/>
|
||||
<servo name="TAIL" no="2" min="0" neutral="0" max="3500"/>
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
<axis name="FMODE" failsafe_value="-9600"/>
|
||||
</commands>
|
||||
|
||||
<rc_commands>
|
||||
<set command="THRUST" value="@THROTTLE"/>
|
||||
<set command="ROLL" value="@ROLL"/>
|
||||
<set command="PITCH" value="@PITCH"/>
|
||||
<set command="YAW" value="@YAW"/>
|
||||
<set command="FMODE" value="-9600"/>
|
||||
</rc_commands>
|
||||
|
||||
<section name="MIXING" prefix="SW_MIXING_">
|
||||
<!-- front left (CW), front right (CCW), back right (CW), back left (CCW) -->
|
||||
<define name="TYPE" value="H120"/>
|
||||
<define name="TRIM_ROLL" value="0"/>
|
||||
<define name="TRIM_PITCH" value="0"/>
|
||||
<define name="TRIM_COLL" value="0"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="swashplate_mixing_run(values)"/>
|
||||
<set servo="THROTTLE" value="throttle_curve.throttle"/>
|
||||
<set servo="FRONT" value="swashplate_mixing.commands[SW_FRONT]"/>
|
||||
<set servo="RIGHTBACK" value="swashplate_mixing.commands[SW_RIGHTBACK]"/>
|
||||
<set servo="LEFTBACK" value="swashplate_mixing.commands[SW_LEFTBACK]"/>
|
||||
<set servo="TAIL" value="@YAW + throttle_curve.throttle*2800/7000"/>
|
||||
</command_laws>
|
||||
|
||||
<heli_curves>
|
||||
<curve throttle="0,4800,7200,8400,9600" collective="-5500,-3750,-1500,250,2000"/>
|
||||
<!-- <curve throttle="0,4800,7200,8400,9600" collective="-1000,750,2500,4250,6000"/>-->
|
||||
</heli_curves>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="NAV_CLIMB_VSPEED" value="2.5"/>
|
||||
<define name="NAV_DESCEND_VSPEED" value="-1.0"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="ACCEL_X_NEUTRAL" value="11"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="11"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-25"/>
|
||||
|
||||
<!-- replace this with your own calibration -->
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="127"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="7"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="-96"/>
|
||||
<define name="MAG_X_SENS" value="3.54947831816" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.86771086071" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="4.03381407698" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="90.0" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="15.0" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="90.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"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_P" unit="deg/s" value="280"/>
|
||||
<define name="SP_MAX_Q" unit="deg/s" value="280"/>
|
||||
<define name="SP_MAX_R" unit="deg/s" value="140"/>
|
||||
<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_HELI_INDI" prefix="STABILIZATION_ATTITUDE_HELI_INDI_">
|
||||
<define name="ROLL_P" value="12"/><!--20 3052 -->
|
||||
<define name="PITCH_P" value="8"/><!--20 3052 -->
|
||||
<define name="YAW_P" value="10"/>
|
||||
<define name="YAW_D" value="30"/>
|
||||
<define name="USE_FAST_DYN_FILTERS" value="1" />
|
||||
<define name="FAST_DYN_ROLL_BW" value="68" />
|
||||
<define name="FAST_DYN_PITCH_BW" value="17" />
|
||||
<define name="GINV_ROLL_TO_ROLL" value="12000" />
|
||||
<define name="GINV_PITCH_TO_PITCH" value="13000" />
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_PHI" value="65." unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="65." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="250." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="200"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.85"/>
|
||||
<define name="REF_MAX_P" value="300." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(7000.)"/>
|
||||
<define name="REF_OMEGA_Q" value="800" 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="500" 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="3003"/>
|
||||
<define name="PHI_DGAIN" value="333"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
<define name="THETA_PGAIN" value="2172"/>
|
||||
<define name="THETA_DGAIN" value="329"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
<define name="PSI_PGAIN" value="2074"/>
|
||||
<define name="PSI_DGAIN" value="1479"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value=" 200"/>
|
||||
<define name="THETA_DDGAIN" value=" 200"/>
|
||||
<define name="PSI_DDGAIN" value=" 200"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="150"/>
|
||||
<define name="HOVER_KD" value="80"/>
|
||||
<define name="HOVER_KI" value="20"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.5"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="MAX_BANK" value="35" unit="deg"/>
|
||||
<define name="USE_SPEED_REF" value="TRUE"/>
|
||||
<define name="PGAIN" value="50"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="AGAIN" value="70"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="MODE_AUTO1" value="AP_MODE_HOVER_Z_HOLD"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_HOVER_Z_HOLD"/>
|
||||
|
||||
<!--define name="USE_THROTTLE_FOR_MOTOR_ARMING" value="TRUE"/-->
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="14000"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="2.8" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="3.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="3.2" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="4.1" unit="V"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,219 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!--
|
||||
/home/microuav/paparazzi/sw/tools/bluegiga_usb_dongle/bluegiga_usb_driver /dev/ttyACM2 00:07:80:2d:d6:d9 4242 4252
|
||||
-->
|
||||
|
||||
<airframe name="GeniusDD">
|
||||
<description>BSlinger Genius Micro Helicopter with BlueGiga
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_s_1.0">
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
<module name="radio_control" type="datalink">
|
||||
<define name="USE_PERSISTENT_SETTINGS" value="TRUE"/>
|
||||
</module>
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
|
||||
</target>
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="TIM5_SERVO_HZ" value="2000"/>
|
||||
<define name="SERVO_HZ" value="300"/>
|
||||
<define name="USE_SERVOS_1AND2"/>
|
||||
</module>
|
||||
|
||||
<configure name="USE_MAGNETOMETER" value="1"/>
|
||||
<module name="telemetry" type="bluegiga"/>
|
||||
<module name="imu" type="lisa_s_v1.0"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins"/>
|
||||
<!--
|
||||
<module name="stabilization" type="heli_indi"/>
|
||||
<module name="rpm_sensor" type="eagletree"/>
|
||||
<module name="ahrs" type="int_cmpl_quat_notch"/>-->
|
||||
|
||||
|
||||
<!--<load name="geo_mag.xml"/>-->
|
||||
<load name="air_data.xml"/>
|
||||
<load name="gps_ubx_ucenter.xml"/>
|
||||
<load name="heli_swashplate_mixing.xml"/>
|
||||
<load name="heli_throttle_curve.xml"/>
|
||||
</firmware>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="THROTTLE" no="1" min="1890" neutral="1890" max="1430"/>
|
||||
<servo name="FRONT" no="5" min="1700" neutral="1300" max="1000"/>
|
||||
<servo name="RIGHTBACK" no="4" min="1850" neutral="1450" max="1150"/>
|
||||
<servo name="LEFTBACK" no="0" min="1900" neutral="1550" max="1200"/>
|
||||
<servo name="TAIL" no="2" min="0" neutral="0" max="3500"/>
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="FMODE" failsafe_value="-9600"/>
|
||||
</commands>
|
||||
|
||||
<rc_commands>
|
||||
<set command="THRUST" value="@THROTTLE"/>
|
||||
<set command="ROLL" value="@ROLL"/>
|
||||
<set command="PITCH" value="@PITCH"/>
|
||||
<set command="YAW" value="@YAW"/>
|
||||
<set command="FMODE" value="-9600"/>
|
||||
</rc_commands>
|
||||
|
||||
<section name="MIXING" prefix="SW_MIXING_">
|
||||
<!-- front left (CW), front right (CCW), back right (CW), back left (CCW) -->
|
||||
<define name="TYPE" value="H120"/>
|
||||
<define name="TRIM_ROLL" value="0"/>
|
||||
<define name="TRIM_PITCH" value="0"/>
|
||||
<define name="TRIM_COLL" value="0"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="swashplate_mixing_run(values)"/>
|
||||
<set servo="THROTTLE" value="throttle_curve.throttle"/>
|
||||
<set servo="FRONT" value="swashplate_mixing.commands[SW_FRONT]"/>
|
||||
<set servo="RIGHTBACK" value="swashplate_mixing.commands[SW_RIGHTBACK]"/>
|
||||
<set servo="LEFTBACK" value="swashplate_mixing.commands[SW_LEFTBACK]"/>
|
||||
<set servo="TAIL" value="@YAW + throttle_curve.throttle*2800/7000"/>
|
||||
</command_laws>
|
||||
|
||||
<heli_curves>
|
||||
<curve throttle="0,4800,7200,8400,9600" collective="-1000,750,2500,4250,6000"/>
|
||||
<!--<curve throttle="9600,7200,9600" collective="-7500,0,7500"/>-->
|
||||
</heli_curves>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="NAV_CLIMB_VSPEED" value="2.5"/>
|
||||
<define name="NAV_DESCEND_VSPEED" value="-1.0"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="ACCEL_X_NEUTRAL" value="11"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="11"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-25"/>
|
||||
|
||||
<!-- replace this with your own calibration -->
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="127"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="7"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="-96"/>
|
||||
<define name="MAG_X_SENS" value="3.54947831816" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.86771086071" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="4.03381407698" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="90.0" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="15.0" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="90.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"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_P" unit="deg/s" value="280"/>
|
||||
<define name="SP_MAX_Q" unit="deg/s" value="280"/>
|
||||
<define name="SP_MAX_R" unit="deg/s" value="140"/>
|
||||
<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="65." unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="65." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="250." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="200"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.85"/>
|
||||
<define name="REF_MAX_P" value="300." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(7000.)"/>
|
||||
<define name="REF_OMEGA_Q" value="800" 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="500" 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="3003"/>
|
||||
<define name="PHI_DGAIN" value="333"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
<define name="THETA_PGAIN" value="2172"/>
|
||||
<define name="THETA_DGAIN" value="329"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
<define name="PSI_PGAIN" value="2074"/>
|
||||
<define name="PSI_DGAIN" value="1479"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value=" 200"/>
|
||||
<define name="THETA_DDGAIN" value=" 200"/>
|
||||
<define name="PSI_DDGAIN" value=" 200"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="150"/>
|
||||
<define name="HOVER_KD" value="80"/>
|
||||
<define name="HOVER_KI" value="20"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.5"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="MAX_BANK" value="35" unit="deg"/>
|
||||
<define name="USE_SPEED_REF" value="TRUE"/>
|
||||
<define name="PGAIN" value="50"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="AGAIN" value="70"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="MODE_AUTO1" value="AP_MODE_HOVER_Z_HOLD"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_HOVER_DIRECT"/>
|
||||
|
||||
<define name="USE_THROTTLE_FOR_MOTOR_ARMING" value="TRUE"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="14000"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="2.8" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="3.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="3.2" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="4.1" unit="V"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,200 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="heli450">
|
||||
<description>450 sized helicopter without hiller bar.
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_m_2.0"/>
|
||||
|
||||
<module name="radio_control" type="spektrum">
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_AUX1"/>
|
||||
<define name="RADIO_MODE" value="RADIO_GEAR"/>
|
||||
</module>
|
||||
|
||||
<module name="actuators" type="pwm"/>
|
||||
<module name="telemetry" type="xbee_api"/>
|
||||
<module name="imu" type="aspirin_v2.2"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="stabilization" type="rate"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins" type="hff"/>
|
||||
|
||||
|
||||
<module name="geo_mag"/>
|
||||
<module name="air_data"/>
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="heli_swashplate_mixing"/>
|
||||
<module name="heli_throttle_curve"/>
|
||||
</firmware>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="THROTTLE" no="0" min="1000" neutral="1000" max="2000"/>
|
||||
<servo name="BACK" no="1" min="1050" neutral="1500" max="1950"/>
|
||||
<servo name="LEFTFRONT" no="2" min="1050" neutral="1500" max="1950"/>
|
||||
<servo name="RIGHTFRONT" no="3" min="1950" neutral="1500" max="1050"/>
|
||||
<servo name="TAIL" no="4" min="1850" neutral="1600" max="1350"/>
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="FMODE" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<rc_commands>
|
||||
<set command="THRUST" value="@THROTTLE"/>
|
||||
<set command="ROLL" value="@ROLL"/>
|
||||
<set command="PITCH" value="@PITCH"/>
|
||||
<set command="YAW" value="@YAW"/>
|
||||
<set command="FMODE" value="@AUX2"/>
|
||||
</rc_commands>
|
||||
|
||||
<section name="MIXING" prefix="SW_MIXING_">
|
||||
<!-- front left (CW), front right (CCW), back right (CW), back left (CCW) -->
|
||||
<define name="TYPE" value="HR120"/>
|
||||
<define name="TRIM_ROLL" value="0"/>
|
||||
<define name="TRIM_PITCH" value="0"/>
|
||||
<define name="TRIM_COLL" value="0"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="swashplate_mixing_run(values)"/>
|
||||
<set servo="THROTTLE" value="throttle_curve.throttle"/>
|
||||
<set servo="BACK" value="swashplate_mixing.commands[SW_BACK]"/>
|
||||
<set servo="LEFTFRONT" value="swashplate_mixing.commands[SW_LEFTFRONT]"/>
|
||||
<set servo="RIGHTFRONT" value="swashplate_mixing.commands[SW_RIGHTFRONT]"/>
|
||||
<set servo="TAIL" value="@YAW + throttle_curve.throttle*2800/7000"/>
|
||||
</command_laws>
|
||||
|
||||
<heli_curves>
|
||||
<curve throttle="0,4800,7200,8400,9600" collective="-1000,750,2500,4250,6000"/>
|
||||
<curve throttle="9600,7200,9600" collective="-7500,0,7500"/>
|
||||
</heli_curves>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="NAV_CLIMB_VSPEED" value="2.5"/>
|
||||
<define name="NAV_DESCEND_VSPEED" value="-1.0"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="ACCEL_X_NEUTRAL" value="11"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="11"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-25"/>
|
||||
|
||||
<!-- replace this with your own calibration -->
|
||||
<define name="MAG_X_NEUTRAL" value="14"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="116"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="119"/>
|
||||
<define name="MAG_X_SENS" value="5.09245681612" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="5.29702744632" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="5.65287938992" 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="-90." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<!--This airframe vibrates a lot, which causes accel measurements in excess of 1g continuously-->
|
||||
<define name="GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
|
||||
<!-- 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"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_P" unit="deg/s" value="280"/>
|
||||
<define name="SP_MAX_Q" unit="deg/s" value="280"/>
|
||||
<define name="SP_MAX_R" unit="deg/s" value="140"/>
|
||||
<define name="DEADBAND_P" value="20"/>
|
||||
<define name="DEADBAND_Q" value="20"/>
|
||||
<define name="DEADBAND_R" value="200"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="GAIN_P" value="800"/>
|
||||
<define name="GAIN_Q" value="800"/>
|
||||
<define name="GAIN_R" value="700"/>
|
||||
|
||||
<define name="IGAIN_P" value="240"/>
|
||||
<define name="IGAIN_Q" value="240"/>
|
||||
<define name="IGAIN_R" value="160"/>
|
||||
</section>
|
||||
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_PHI" value="65." unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="65." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="250." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="200"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.85"/>
|
||||
<define name="REF_MAX_P" value="300." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(7000.)"/>
|
||||
<define name="REF_OMEGA_Q" value="800" 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="500" 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="900"/>
|
||||
<define name="PHI_DGAIN" value="200"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
<define name="THETA_PGAIN" value="900"/>
|
||||
<define name="THETA_DGAIN" value="200"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
<define name="PSI_PGAIN" value="900"/>
|
||||
<define name="PSI_DGAIN" value="200"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value=" 200"/>
|
||||
<define name="THETA_DDGAIN" value=" 200"/>
|
||||
<define name="PSI_DDGAIN" value=" 200"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="150"/>
|
||||
<define name="HOVER_KD" value="80"/>
|
||||
<define name="HOVER_KI" value="20"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.5"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="MAX_BANK" value="35" unit="deg"/>
|
||||
<define name="USE_SPEED_REF" value="TRUE"/>
|
||||
<define name="PGAIN" value="50"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="AGAIN" value="70"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="MODE_MANUAL" value="AP_MODE_RC_DIRECT"/>
|
||||
<define name="MODE_AUTO1" value="AP_MODE_HOVER_Z_HOLD"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_NAV"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<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="10.1" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,219 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!--
|
||||
/home/microuav/paparazzi/sw/tools/bluegiga_usb_dongle/bluegiga_usb_driver /dev/ttyACM2 00:07:80:2d:d6:d9 4242 4252
|
||||
-->
|
||||
|
||||
<airframe name="GeniusDD">
|
||||
<description>Genius Helicopter with BlueGiga
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_s_1.0">
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
<module name="radio_control" type="datalink">
|
||||
<define name="USE_PERSISTENT_SETTINGS" value="TRUE"/>
|
||||
</module>
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
|
||||
</target>
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="TIM5_SERVO_HZ" value="2000"/>
|
||||
<define name="SERVO_HZ" value="300"/>
|
||||
<define name="USE_SERVOS_1AND2"/>
|
||||
</module>
|
||||
|
||||
<configure name="USE_MAGNETOMETER" value="0"/>
|
||||
<module name="telemetry" type="bluegiga"/>
|
||||
<module name="imu" type="lisa_s_v1.0"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins"/>
|
||||
<!--
|
||||
<module name="stabilization" type="heli_indi"/>
|
||||
<module name="rpm_sensor" type="eagletree"/>
|
||||
<module name="ahrs" type="int_cmpl_quat_notch"/>-->
|
||||
|
||||
|
||||
<!--<load name="geo_mag.xml"/>
|
||||
<load name="air_data.xml"/>-->
|
||||
<load name="gps_ubx_ucenter.xml"/>
|
||||
<load name="heli_swashplate_mixing.xml"/>
|
||||
<load name="heli_throttle_curve.xml"/>
|
||||
</firmware>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="THROTTLE" no="1" min="1890" neutral="1890" max="1430"/>
|
||||
<servo name="FRONT" no="5" min="1700" neutral="1300" max="1000"/>
|
||||
<servo name="RIGHTBACK" no="4" min="1850" neutral="1450" max="1150"/>
|
||||
<servo name="LEFTBACK" no="0" min="1900" neutral="1550" max="1200"/>
|
||||
<servo name="TAIL" no="2" min="0" neutral="0" max="500"/>
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="FMODE" failsafe_value="-9600"/>
|
||||
</commands>
|
||||
|
||||
<rc_commands>
|
||||
<set command="THRUST" value="@THROTTLE"/>
|
||||
<set command="ROLL" value="@ROLL"/>
|
||||
<set command="PITCH" value="@PITCH"/>
|
||||
<set command="YAW" value="@YAW"/>
|
||||
<set command="FMODE" value="-9600"/>
|
||||
</rc_commands>
|
||||
|
||||
<section name="MIXING" prefix="SW_MIXING_">
|
||||
<!-- front left (CW), front right (CCW), back right (CW), back left (CCW) -->
|
||||
<define name="TYPE" value="H120"/>
|
||||
<define name="TRIM_ROLL" value="0"/>
|
||||
<define name="TRIM_PITCH" value="0"/>
|
||||
<define name="TRIM_COLL" value="0"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="swashplate_mixing_run(values)"/>
|
||||
<set servo="THROTTLE" value="throttle_curve.throttle"/>
|
||||
<set servo="FRONT" value="swashplate_mixing.commands[SW_FRONT]"/>
|
||||
<set servo="RIGHTBACK" value="swashplate_mixing.commands[SW_RIGHTBACK]"/>
|
||||
<set servo="LEFTBACK" value="swashplate_mixing.commands[SW_LEFTBACK]"/>
|
||||
<set servo="TAIL" value="@YAW + throttle_curve.throttle*2800/7000"/>
|
||||
</command_laws>
|
||||
|
||||
<heli_curves>
|
||||
<curve throttle="0,4800,7200,8400,9600" collective="-1000,750,2500,4250,6000"/>
|
||||
<!--<curve throttle="9600,7200,9600" collective="-7500,0,7500"/>-->
|
||||
</heli_curves>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="NAV_CLIMB_VSPEED" value="2.5"/>
|
||||
<define name="NAV_DESCEND_VSPEED" value="-1.0"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="ACCEL_X_NEUTRAL" value="11"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="11"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-25"/>
|
||||
|
||||
<!-- replace this with your own calibration -->
|
||||
<define name="MAG_X_NEUTRAL" value="14"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="116"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="119"/>
|
||||
<define name="MAG_X_SENS" value="5.09245681612" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="5.29702744632" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="5.65287938992" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="-29.7117578244" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="77.1469910333" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="-30.00" 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"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_P" unit="deg/s" value="280"/>
|
||||
<define name="SP_MAX_Q" unit="deg/s" value="280"/>
|
||||
<define name="SP_MAX_R" unit="deg/s" value="140"/>
|
||||
<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="65." unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="65." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="250." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="200"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.85"/>
|
||||
<define name="REF_MAX_P" value="300." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(7000.)"/>
|
||||
<define name="REF_OMEGA_Q" value="800" 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="500" 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="3003"/>
|
||||
<define name="PHI_DGAIN" value="333"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
<define name="THETA_PGAIN" value="2172"/>
|
||||
<define name="THETA_DGAIN" value="329"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
<define name="PSI_PGAIN" value="2074"/>
|
||||
<define name="PSI_DGAIN" value="1479"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value=" 200"/>
|
||||
<define name="THETA_DDGAIN" value=" 200"/>
|
||||
<define name="PSI_DDGAIN" value=" 200"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="150"/>
|
||||
<define name="HOVER_KD" value="80"/>
|
||||
<define name="HOVER_KI" value="20"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.5"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="MAX_BANK" value="35" unit="deg"/>
|
||||
<define name="USE_SPEED_REF" value="TRUE"/>
|
||||
<define name="PGAIN" value="50"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="AGAIN" value="70"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="MODE_MANUAL" value="AP_MODE_RC_DIRECT"/>
|
||||
<define name="MODE_AUTO1" value="AP_MODE_HOVER_Z_HOLD"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_ATTITUDE_DIRECT "/>
|
||||
|
||||
<define name="USE_THROTTLE_FOR_MOTOR_ARMING" value="TRUE"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="14000"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="2.8" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="3.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="3.2" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="4.1" unit="V"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,290 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
|
||||
<!--
|
||||
The motor and rotor configuration is the following:
|
||||
|
||||
Front
|
||||
^
|
||||
|
|
||||
|
||||
Motor3(NW) Motor0(NE)
|
||||
CW CCW
|
||||
\ /
|
||||
,___,
|
||||
| |
|
||||
| |
|
||||
|___|
|
||||
/ \
|
||||
CCW CW
|
||||
Motor2(SW) Motor1(SE)
|
||||
|
||||
-->
|
||||
|
||||
<airframe name="quadrotor_lisa_mxs">
|
||||
<description>LadyBird quadrotor frame equiped with Lisa/MXS 1.0 with four brushed motors in an X configuration.
|
||||
+ stereoboard + wifi + indi
|
||||
</description>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="NE" no="0" min="0" neutral="50" max="1000"/>
|
||||
<servo name="SE" no="5" min="0" neutral="50" max="1000"/>
|
||||
<servo name="SW" no="4" min="0" neutral="50" max="1000"/>
|
||||
<servo name="NW" no="1" min="0" neutral="50" max="1000"/>
|
||||
</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>
|
||||
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
|
||||
<set servo="NE" value="motor_mixing.commands[0]"/>
|
||||
<set servo="SE" value="motor_mixing.commands[1]"/>
|
||||
<set servo="SW" value="motor_mixing.commands[2]"/>
|
||||
<set servo="NW" value="motor_mixing.commands[3]"/>
|
||||
</command_laws>
|
||||
|
||||
<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="256"/>
|
||||
<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>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="BODY_TO_IMU_PHI" value="-2.0" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="-0.0" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="135." unit="deg"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="0"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="0"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="0"/>
|
||||
|
||||
<!-- MAGNETO CALIBRATION DELFT -->
|
||||
<define name="MAG_X_NEUTRAL" value="286"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-72"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="97"/>
|
||||
<define name="MAG_X_SENS" value="3.94431833863" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="4.14629702271" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="4.54518768636" integer="16"/>
|
||||
|
||||
<!-- MAGNETO CURRENT CALIBRATION -->
|
||||
<define name="MAG_X_CURRENT_COEF" value="0.0103422023767"/>
|
||||
<define name="MAG_Y_CURRENT_COEF" value="0.0084568317783"/>
|
||||
<define name="MAG_Z_CURRENT_COEF" value="-0.01935617335"/>
|
||||
</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_HOVER_Z_HOLD"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_HOVER_DIRECT"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="14000"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="3.0" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="3.3" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="3.5" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="4.1" unit="V"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1_P" value="0.038174"/>
|
||||
<define name="G1_Q" value="0.063857"/>
|
||||
<define name="G1_R" value="0.002845"/>
|
||||
<define name="G2_R" value="0.128776"/>
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="170.0"/>
|
||||
<define name="REF_ERR_Q" value="170.0"/>
|
||||
<define name="REF_ERR_R" value="100.0"/>
|
||||
<define name="REF_RATE_P" value="17.0"/>
|
||||
<define name="REF_RATE_Q" value="17.0"/>
|
||||
<define name="REF_RATE_R" value="17.0"/>
|
||||
|
||||
<!-- second order filter parameters -->
|
||||
<define name="FILT_OMEGA" value="50.0"/>
|
||||
<define name="FILT_ZETA" value="0.55"/>
|
||||
<define name="FILT_OMEGA_R" value="50.0"/>
|
||||
<define name="FILT_ZETA_R" value="0.55"/>
|
||||
|
||||
<!-- first order actuator dynamics -->
|
||||
<define name="ACT_DYN_P" value="0.03"/>
|
||||
<define name="ACT_DYN_Q" value="0.03"/>
|
||||
<define name="ACT_DYN_R" value="0.03"/>
|
||||
|
||||
<!-- Adaptive Learning Rate -->
|
||||
<define name="USE_ADAPTIVE" value="FALSE"/>
|
||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
||||
</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_PSI" value="45." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="SP_MAX_P" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
<define name="DEADBAND_A" value="250"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.85"/>
|
||||
<define name="REF_MAX_P" value="400." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>
|
||||
|
||||
<define name="REF_OMEGA_Q" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_Q" value="0.85"/>
|
||||
<define name="REF_MAX_Q" value="400." unit="deg/s"/>
|
||||
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>
|
||||
|
||||
<define name="REF_OMEGA_R" value="500" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.85"/>
|
||||
<define name="REF_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(900.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="400"/>
|
||||
<define name="PHI_DGAIN" value="200"/>
|
||||
<define name="PHI_IGAIN" value="100"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="400"/>
|
||||
<define name="THETA_DGAIN" value="200"/>
|
||||
<define name="THETA_IGAIN" value="100"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="500"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="0"/>
|
||||
<define name="THETA_DDGAIN" value="0"/>
|
||||
<define name="PSI_DDGAIN" value=" 300"/>
|
||||
|
||||
<define name="PHI_AGAIN" value="0"/>
|
||||
<define name="THETA_AGAIN" value="0"/>
|
||||
<define name="PSI_AGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<!--define name="INT_GPS_ID" value="ABI_DISABLE"/-->
|
||||
<define name="USE_GPS_ALT" value="true"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="331"/>
|
||||
<define name="HOVER_KD" value="546"/>
|
||||
<define name="HOVER_KI" value="120"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.65"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="true"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="H_X" value=" 0.47577"/>
|
||||
<define name="H_Y" value=" 0.11811"/>
|
||||
<define name="H_Z" value=" 0.87161"/>
|
||||
|
||||
<define name="GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="PGAIN" value="80"/>
|
||||
<define name="DGAIN" value="260"/>
|
||||
<define name="IGAIN" value="0"/>
|
||||
<define name="MAX_BANK" value="RadOfDeg(15)"/>
|
||||
<define name="REF_MAX_SPEED" value="0.5"/>
|
||||
<define name="USE_SPEED_REF" value="TRUE"/>
|
||||
|
||||
</section>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="VoltageOfAdc(adc)" value="(adc)*0.00162f" />
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="ne_motor, se_motor, sw_motor, nw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_x_quad_ccw" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
</section>
|
||||
|
||||
<modules main_freq="512">
|
||||
<!--module name="gps" type="ubx_ucenter"/-->
|
||||
<module name="send_imu_mag_current"/>
|
||||
<module name="stereocam">
|
||||
<define name= "STEREO_BODY_TO_STEREO_PHI" value="90" unit="deg"/>
|
||||
<define name= "STEREO_BODY_TO_STEREO_THETA" value="0" unit="deg"/>
|
||||
<define name= "STEREO_BODY_TO_STEREO_PSI" value="-90" unit="deg"/>
|
||||
<configure name="STEREO_UART" value="UART2"/>
|
||||
<configure name="STEREO_BAUD" value="B115200"/>
|
||||
</module>
|
||||
</modules>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_mx_2.1">
|
||||
|
||||
<define name="REMAP_UART3" value="TRUE" />
|
||||
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<!--module name="radio_control" type="spektrum">
|
||||
<configure name="RADIO_CONTROL_SPEKTRUM_PRIMARY_PORT" value="UART5" />
|
||||
</module-->
|
||||
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
|
||||
<define name="USE_PERSISTENT_SETTINGS" value="TRUE"/>
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="radio_control" type="ppm"/>
|
||||
</target>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<!-- This airframe is using the servo PWM outputs directly to drive mosfets, which in turn directly drive brushed motors.
|
||||
With the following settings we will be driving the motors with a 36KHz signal that should be well above anyone's hearing range.
|
||||
If we went with the 500Hz that woul be the default we would be hearing a very annoying high pitched sound coming from the motors.
|
||||
-->
|
||||
<!-- Setting the PWM timer base frequency to 36MHz -->
|
||||
<define name="PWM_BASE_FREQ" value="36000000"/>
|
||||
<!-- Setting the PWM interval to 36KHz -->
|
||||
<define name="SERVO_HZ" value="36000"/>
|
||||
</module>
|
||||
|
||||
<module name="telemetry" type="transparent">
|
||||
<configure name="MODEM_PORT" value="UART1"/>
|
||||
<configure name="MODEM_BAUD" value="B115200"/>
|
||||
</module>
|
||||
|
||||
<module name="imu" type="lisa_mx_v2.1"/>
|
||||
|
||||
<module name="gps" type="optitrack">
|
||||
<!--configure name="GPS_PORT" value="UART2"/>
|
||||
<configure name="GPS_BAUD" value="B38400"/-->
|
||||
</module>
|
||||
|
||||
<!--module name="stabilization" type="int_quat"/-->
|
||||
<module name="stabilization" type="indi_simple"/>
|
||||
<module name="stabilization" type="rate_indi"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins"/>
|
||||
<configure name="USE_MAGNETOMETER" value="FALSE"/>
|
||||
<module name="air_data">
|
||||
<define name="AIR_DATA_CALC_AMSL_BARO" value="TRUE"/>
|
||||
</module>
|
||||
</firmware>
|
||||
</airframe>
|
||||
@@ -1,224 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="ardrone2_oa_avoid">
|
||||
<description>ardrone with stereocam follow-me
|
||||
</description>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="ardrone2">
|
||||
<configure name="USE_BARO_BOARD" value="TRUE"/>
|
||||
</target>
|
||||
|
||||
<define name="FAILSAFE_DESCENT_SPEED" value="0.5"/>
|
||||
<define name="USE_SONAR" value="FALSE"/>
|
||||
<define name="USE_GPS_ALT" value="1"/>
|
||||
|
||||
<configure name="USE_MAGNETOMETER" value="TRUE"/>
|
||||
|
||||
<!-- Subsystem section -->
|
||||
<module name="telemetry" type="transparent_udp"/>
|
||||
<module name="radio_control" type="datalink"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="ardrone2"/>
|
||||
<module name="imu" type="ardrone2"/>
|
||||
<module name="gps" type="datalink"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins" type="extended"/>
|
||||
|
||||
|
||||
<module name="bat_voltage_ardrone2"/>
|
||||
<module name="stereocam">
|
||||
<configure name="STEREO_UART" value="UART1"/>
|
||||
<configure name="STEREO_BAUD" value="B115200"/>
|
||||
</module>
|
||||
<module name="stereocam_follow_me"/>
|
||||
</firmware>
|
||||
|
||||
<commands>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="3000"/>
|
||||
</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"/>
|
||||
|
||||
<!-- Time cross layout (X), with order NW (CW), NE (CCW), SE (CW), SW (CCW) -->
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="TOP_LEFT" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="TOP_RIGHT" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BOTTOM_RIGHT" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BOTTOM_LEFT" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</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="-2.3" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="1.7" 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_">
|
||||
<!-- Delft -->
|
||||
<define name="H_X" value="0.3892503"/>
|
||||
<define name="H_Y" value="0.0017972"/>
|
||||
<define name="H_Z" value="0.9211303"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1_P" value="0.028551973"/>
|
||||
<define name="G1_Q" value="0.023775417"/>
|
||||
<define name="G1_R" value="0.00173069"/>
|
||||
<define name="G2_R" value="0.086460732"/>
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="380.0"/>
|
||||
<define name="REF_ERR_Q" value="380.0"/>
|
||||
<define name="REF_ERR_R" value="70.0"/>
|
||||
<define name="REF_RATE_P" value="21.6"/>
|
||||
<define name="REF_RATE_Q" value="21.6"/>
|
||||
<define name="REF_RATE_R" value="11.0"/>
|
||||
|
||||
<!-- second order filter parameters -->
|
||||
<define name="FILT_CUTOFF" value="3.2"/>
|
||||
<define name="FILT_CUTOFF_R" value="3.2"/>
|
||||
|
||||
<!-- first order actuator dynamics -->
|
||||
<define name="ACT_DYN_P" value="0.06"/>
|
||||
<define name="ACT_DYN_Q" value="0.06"/>
|
||||
<define name="ACT_DYN_R" value="0.06"/>
|
||||
|
||||
<!-- Adaptive Learning Rate -->
|
||||
<define name="USE_ADAPTIVE" value="FALSE"/>
|
||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
||||
</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="180" 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="450" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.9"/>
|
||||
<define name="REF_MAX_R" value="600." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(8000.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="850"/>
|
||||
<define name="PHI_DGAIN" value="425"/>
|
||||
<define name="PHI_IGAIN" value="0"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="850"/>
|
||||
<define name="THETA_DGAIN" value="425"/>
|
||||
<define name="THETA_IGAIN" value="0"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="1000"/>
|
||||
<define name="PSI_DGAIN" value="700"/>
|
||||
<define name="PSI_IGAIN" value="0"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="0"/>
|
||||
<define name="THETA_DDGAIN" value="0"/>
|
||||
<define name="PSI_DDGAIN" value="100"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="583"/>
|
||||
<define name="HOVER_KD" value="82"/>
|
||||
<define name="HOVER_KI" value="13"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.645"/>
|
||||
<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"/ -->
|
||||
|
||||
<define name="PGAIN" value="363"/>
|
||||
<define name="DGAIN" value="237"/>
|
||||
<define name="IGAIN" value="30"/>
|
||||
<define name="VGAIN" value="0"/>
|
||||
<define name="AGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_ardrone2" type="string"/>
|
||||
<define name="JSBSIM_INIT" value="reset00" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_ardrone2.h" type="string"/>
|
||||
</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_HOVER_Z_HOLD"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_NAV"/>
|
||||
<define name="ARRIVED_AT_WAYPOINT" value="0.15"/>
|
||||
<define name="AUTOPILOT_IN_FLIGHT_MIN_THRUST" value="1500"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</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.9" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="10.1" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
</airframe>
|
||||
@@ -1,291 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="SilverTwin">
|
||||
<description>
|
||||
Silverlit Twin
|
||||
Lisa/S v1.0 board (http://wiki.paparazziuav.org/wiki/Lisa/S)
|
||||
</description>
|
||||
|
||||
<firmware name="fixedwing"> <!-- -->
|
||||
<target name="ap" board="lisa_s_1.0">
|
||||
<define name="USE_PERSISTENT_SETTINGS" value="TRUE"/>
|
||||
|
||||
<module name="radio_control" type="superbitrf_rc">
|
||||
<!-- TUDelft Dx6i: TX 4 1974942194, TX 5 692352099, the superbitrf dongle : 2008496626 -->
|
||||
<!-- graupner (orange RX) : 3327503026, graupner (spektrum 9) : 4095452533 -->
|
||||
<!-- use 0x for the hex version -->
|
||||
<!-- 3411796053 -->
|
||||
<define name="RADIO_TRANSMITTER_ID" value="-883171243"/> <!-- TX2 : 0xCB5BE055 -883171243-->
|
||||
<define name="RADIO_TRANSMITTER_PROTOCOL" value="DSM_DSM2_1"/>
|
||||
<!--<define name="RADIO_TRANSMITTER_PROTOCOL" value="0x01"/>--> <!-- DSM_DSM2_1 -->
|
||||
<define name="RADIO_TRANSMITTER_CHAN" value="6"/>
|
||||
<define name="RADIO_MODE" value="RADIO_GEAR"/> <!-- RADIO_FLAP -->
|
||||
</module>
|
||||
|
||||
<define name="USE_PERSISTENT_SETTINGS" value="TRUE"/>
|
||||
|
||||
<!-- the periodic frequency is 60 by default in fixed wing, 512 in rotorcraft -->
|
||||
<!-- AHRS_PROPAGATE_FREQUENCY mus be < PERIODIC_FREQUENCY -->
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="120"/>
|
||||
<configure name="PERIODIC_FREQUENCY" value="120"/> <!-- 120 seams to be the max of the barometer -->
|
||||
|
||||
</target>
|
||||
<target name="sim" board="pc"/>
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="radio_control" type="ppm"/>
|
||||
</target>
|
||||
|
||||
<define name="LOITER_TRIM"/>
|
||||
<define name="STRONG_WIND"/>
|
||||
|
||||
<!--<define name="LISA_S_SIDEWAY"/>-->
|
||||
|
||||
<define name="USE_BAROMETER" value="TRUE"/>
|
||||
|
||||
<!-- Communication -->
|
||||
<!--<module name="telemetry" type="transparent">-->
|
||||
<!--<configure name="MODEM_BAUD" value="B57600"/>
|
||||
<configure name="MODEM_PORT" value="UART1"/>-->
|
||||
<!--</module>-->
|
||||
|
||||
<module name="telemetry" type="superbitrf"/>
|
||||
|
||||
|
||||
<!-- Sensors -->
|
||||
<module name="imu" type="lisa_s_v1.0"/> <!-- lisa_s_v1.0 -->
|
||||
<module name="gps" type="ublox">
|
||||
<configure name="GPS_PORT" value="UART3"/>
|
||||
<configure name="GPS_BAUD" value="B38400"/>
|
||||
</module>
|
||||
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="SERVO_HZ" value="8000"/>
|
||||
<define name="USE_SERVOS_1AND2"/>
|
||||
</module>
|
||||
|
||||
<!--<module name="ahrs" type="float_dcm"/>-->
|
||||
<!--<module name="ahrs" type="int_cmpl_quat"/>-->
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<configure name="USE_MAGNETOMETER" value="TRUE"/>
|
||||
<configure name="AHRS_USE_GPS_HEADING" value="FALSE"/>
|
||||
</module>
|
||||
|
||||
<!--<module name="stabilization" type="int_quat"/>-->
|
||||
|
||||
<module name="control"/>
|
||||
<module name="navigation"/>
|
||||
|
||||
<module name="ins" type="alt_float"/>
|
||||
|
||||
|
||||
<module name="baro_sim"/>
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="nav" type="line"/>
|
||||
<!--<module name="nav" type="catapult"/>-->
|
||||
<!--<module name="send_imu_mag_current"/>-->
|
||||
<!--<load name="geo_init"/>-->
|
||||
</firmware>
|
||||
|
||||
|
||||
<!--<section name="CATAPULT" prefix="NAV_CATAPULT_" >
|
||||
<define name="MOTOR_DELAY" value="0.1" unit="seconds"/>
|
||||
<define name="HEADING_DELAY" value="2.0" unit="seconds"/>
|
||||
<define name="ACCELERATION_THRESHOLD" value="0.2"/>
|
||||
<define name="INITIAL_PITCH" value="5" unit="deg"/>
|
||||
<define name="INITIAL_THROTTLE" value="1.0" />
|
||||
</section>-->
|
||||
|
||||
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="MOTORLEFT" no="3" min="0" neutral="0" max="125"/>
|
||||
<servo name="MOTORRIGHT" no="2" min="0" neutral="0" max="125"/>
|
||||
</servos>
|
||||
|
||||
|
||||
<commands>
|
||||
<axis name="THROTTLE" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="3000"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<rc_commands>
|
||||
<set command="THROTTLE" value="@THROTTLE"/>
|
||||
<set command="ROLL" value="@ROLL"/>
|
||||
<set command="PITCH" value="@PITCH"/>
|
||||
<set command="YAW" value="@YAW"/>
|
||||
</rc_commands>
|
||||
|
||||
<section name="MIXER">
|
||||
<define name="AILEVON_AILERON_RATE" value="0.75"/>
|
||||
<define name="AILEVON_ELEVATOR_RATE" value="0.75"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<set servo="MOTORLEFT" value="@THROTTLE + @PITCH * 0.3 + @ROLL"/>
|
||||
<set servo="MOTORRIGHT" value="@THROTTLE + @PITCH * 0.3 - @ROLL"/>
|
||||
</command_laws>
|
||||
|
||||
|
||||
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="front_motor, back_motor, right_motor, left_motor" type="string[]"/>
|
||||
<define name="JSBSIM_MODEL" value="simple_quad" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
|
||||
<!-- these gyro and accel calib values are the defaults for aspirin2.1/2.2 -->
|
||||
<define name="GYRO_X_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_Y_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_Z_NEUTRAL" value="0"/>
|
||||
|
||||
<define name="GYRO_X_SENS" value="4.359" integer="16"/>
|
||||
<define name="GYRO_Y_SENS" value="4.359" integer="16"/>
|
||||
<define name="GYRO_Z_SENS" value="4.359" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="0"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="0"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="0"/>
|
||||
|
||||
<define name="ACCEL_X_SENS" value="4.905" integer="16"/> <!-- 4.905/9.81 -->
|
||||
<define name="ACCEL_Y_SENS" value="4.905" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="4.905" integer="16"/>
|
||||
|
||||
<!-- delfly beta1 <define name="MAG_X_NEUTRAL" value="-349"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="130"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="355"/>
|
||||
<define name="MAG_X_SENS" value="3.66980420844" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.86694176583" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="4.02840414264" integer="16"/>-->
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="914"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="20"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="71"/>
|
||||
<define name="MAG_X_SENS" value="3.6433558115" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="4.0497072473" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="4.52432874264" integer="16"/>
|
||||
|
||||
<!--<define name="MAG_X_CURRENT_COEF" value="-0.0166153857964"/>
|
||||
<define name="MAG_Y_CURRENT_COEF" value="0.00153949503277"/>-
|
||||
<define name="MAG_Z_CURRENT_COEF" value="0.0295034374697"/>-->
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="-90." unit="deg"/> <!-- Roll -104 -->
|
||||
<define name="BODY_TO_IMU_THETA" value="-180." unit="deg"/> <!-- pitch : true value : 180; add 15° of pitching up : -165 -->
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/> <!-- Yaw -->
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<!-- Delft magnetic field karlito -->
|
||||
<define name="H_X" value="0.3946524"/> <!-- 0.3770441 -->
|
||||
<define name="H_Y" value="-0.0187289"/> <!-- 0.0193986 -->
|
||||
<define name="H_Z" value="0.9186396"/> <!-- 0.9259921 -->
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="ROLL_NEUTRAL_DEFAULT" value="0." unit="deg"/>
|
||||
<define name="PITCH_NEUTRAL_DEFAULT" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section name="VERTICAL CONTROL" prefix="V_CTL_">
|
||||
<define name="POWER_CTL_BAT_NOMINAL" value="4.2" unit="volt"/>
|
||||
<!-- outer loop proportional gain -->
|
||||
<define name="ALTITUDE_PGAIN" value="0.100"/>
|
||||
<!-- outer loop saturation -->
|
||||
<define name="ALTITUDE_MAX_CLIMB" value="2."/>
|
||||
|
||||
<!-- auto throttle inner loop -->
|
||||
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.9"/>
|
||||
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.7"/>
|
||||
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.99"/>
|
||||
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
|
||||
<define name="AUTO_THROTTLE_DASH_TRIM" value="-4000"/>
|
||||
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.15" unit="%/(m/s)"/>
|
||||
<define name="AUTO_THROTTLE_PGAIN" value="0.04"/>
|
||||
<define name="AUTO_THROTTLE_IGAIN" value="0.03"/>
|
||||
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.08"/>
|
||||
|
||||
<define name="THROTTLE_SLEW_LIMITER" value="0.06" unit="s"/>
|
||||
|
||||
<!--<define name="PITCH_LOITER_TRIM" value="RadOfDeg(50.)"/>
|
||||
<define name="PITCH_DASH_TRIM" value="RadOfDeg(-0.)"/>-->
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
|
||||
<define name="COURSE_PGAIN" value="1.2"/>
|
||||
<define name="COURSE_DGAIN" value="0.3"/>
|
||||
|
||||
<define name="ROLL_MAX_SETPOINT" value="35.8098622366" unit="deg"/>
|
||||
<define name="PITCH_MAX_SETPOINT" value="45" unit="deg"/>
|
||||
<define name="PITCH_MIN_SETPOINT" value="-25" unit="deg"/>
|
||||
|
||||
<define name="PITCH_PGAIN" value="0"/>
|
||||
<define name="PITCH_DGAIN" value="0"/>
|
||||
|
||||
<define name="ELEVATOR_OF_ROLL" value="800"/>
|
||||
|
||||
<define name="ROLL_SLEW" value="1000"/>
|
||||
|
||||
<define name="ROLL_ATTITUDE_GAIN" value="1000"/>
|
||||
<define name="ROLL_RATE_GAIN" value="10"/>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section name="FAILSAFE" prefix="FAILSAFE_">
|
||||
<define name="DELAY_WITHOUT_GPS" value="5" unit="s"/>
|
||||
<define name="DEFAULT_THROTTLE" value="0.0"/>
|
||||
<define name="DEFAULT_ROLL" value="5000"/>
|
||||
<define name="DEFAULT_PITCH" value="3000"/>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section name="AUTO1" prefix="AUTO1_">
|
||||
<define name="MAX_ROLL" value="90." unit="deg"/>
|
||||
<define name="MAX_PITCH" value="40." unit="deg"/>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="1500"/>
|
||||
<define name="BAT_CHECKER_DELAY" value="5"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="2.0" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="2.1" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="2.2" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="4.1" unit="V"/>
|
||||
<define name="VoltageOfAdc(adc)" value="(0.0052*adc)"/>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section name="MISC">
|
||||
<define name="NOMINAL_AIRSPEED" value="6." unit="m/s"/>
|
||||
<define name="MIN_AIRSPEED" value="3." unit="m/s"/>
|
||||
<define name="MAX_AIRSPEED" value="12." unit="m/s"/>
|
||||
<define name="CARROT" value="3." unit="s"/>
|
||||
<define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
|
||||
<define name="CONTROL_FREQUENCY" value="120" unit="Hz"/>
|
||||
<define name="DEFAULT_CIRCLE_RADIUS" value="10."/>
|
||||
|
||||
<define name="UNLOCKED_HOME_MODE" value="TRUE"/>
|
||||
<define name="RC_LOST_MODE" value="PPRZ_MODE_AUTO2"/>
|
||||
</section>
|
||||
|
||||
|
||||
</airframe>
|
||||
@@ -1,254 +0,0 @@
|
||||
|
||||
<!--
|
||||
Applicable configuration:
|
||||
airframe="airframes/TUDelft/walkera_genius_v2.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/rotorcraft_basic.xml"
|
||||
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_guidance.xml settings/control/stabilization_att_int.xml settings/control/stabilization_rate.xml"
|
||||
-->
|
||||
|
||||
<airframe name="walkera_genius_v2">
|
||||
<description>
|
||||
This is a Walkera Genius V2 frame equiped with Lisa/S 0.1 with brushless main rotor.
|
||||
Using Lisa/S V1.0 board file as it is software compatible.
|
||||
</description>
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_s_1.0">
|
||||
<!--define name="USE_KILL_SWITCH_FOR_MOTOR_ARMING" value="1"/-->
|
||||
<configure name="USE_MAGNETOMETER" value="0"/>
|
||||
<define name="AHRS_USE_GPS_HEADING" value="1"/>
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
|
||||
<module name="radio_control" type="ppm">
|
||||
<configure name="RADIO_CONTROL_PPM_PIN" value="SUPERBIT_RST"/>
|
||||
</module>
|
||||
|
||||
<!--configure name="USE_BARO_BOARD" value="0"/-->
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_FLAP"/>
|
||||
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="500"/>
|
||||
<define name="USE_PERSISTENT_SETTINGS" value="TRUE"/>
|
||||
</target>
|
||||
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="TIM5_SERVO_HZ" value="300"/>
|
||||
<define name="SERVO_HZ" value="300"/>
|
||||
<define name="USE_SERVOS_1AND2"/>
|
||||
</module>
|
||||
|
||||
<module name="telemetry" type="transparent">
|
||||
<configure name="MODEM_BAUD" value="B115200"/>
|
||||
<configure name="MODEM_PORT" value="UART1"/>
|
||||
</module>
|
||||
<module name="imu" type="lisa_s_v1.0">
|
||||
<define name="LISA_S_UPSIDE_DOWN"/> <!-- wtf hij zit gewoon rechtop maargoed -->
|
||||
</module>
|
||||
<module name="gps" type="optitrack"/>
|
||||
<module name="stabilization" type="heli_indi"/> <!-- int_quat / heli_indi -->
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins"/>
|
||||
</firmware>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="BODY_TO_IMU_PHI" value="1." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="4.0" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0.0" unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="3700"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="3.0" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="3.2" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="3.5" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="4.2" unit="V"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
||||
<define name="SP_MAX_P" value="360" unit="deg/s"/>
|
||||
<define name="SP_MAX_Q" value="360" unit="deg/s"/>
|
||||
<define name="SP_MAX_R" value="360" unit="deg/s"/>
|
||||
|
||||
<define name="GAIN_P" value="400"/>
|
||||
<define name="GAIN_Q" value="400"/>
|
||||
<define name="GAIN_R" value="350"/>
|
||||
</section>
|
||||
|
||||
<!-- This section contains gains for PID -->
|
||||
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoints -->
|
||||
<define name="STEADY_STATE_ROLL" value="4.5"/>
|
||||
<define name="STEADY_STATE_PITCH" value="0"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
<define name="DEADBAND_A" value="250"/>
|
||||
|
||||
<!-- reference-->
|
||||
<define name="REF_OMEGA_P" value="3000" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.85"/>
|
||||
<define name="REF_MAX_P" value="300." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(7000.)"/>
|
||||
|
||||
<define name="REF_OMEGA_Q" value="3000" 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="3000" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.85"/>
|
||||
<define name="REF_MAX_R" value="300." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(7000.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="3052"/>
|
||||
<define name="PHI_DGAIN" value="108"/>
|
||||
<define name="PHI_IGAIN" value="0"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="3052"/>
|
||||
<define name="THETA_DGAIN" value="108"/>
|
||||
<define name="THETA_IGAIN" value="0"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="944"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="0"/>
|
||||
<define name="THETA_DDGAIN" value="0"/>
|
||||
<define name="PSI_DDGAIN" value=" 300"/>
|
||||
|
||||
<define name="PHI_AGAIN" value="0"/>
|
||||
<define name="THETA_AGAIN" value="0"/>
|
||||
<define name="PSI_AGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="HEADING_UPDATE_GPS_MIN_SPEED" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="RPM_SENSOR" prefix="RPM_SENSOR_">
|
||||
<define name="PULSES_PER_ROTATION" value="6"/>
|
||||
</section>
|
||||
|
||||
<!-- magneto calibration -->
|
||||
<!--include href="conf/airframes/tudelft/calibrations/walkera_2016_03_16.xml"/-->
|
||||
|
||||
<heli_curves>
|
||||
<curve throttle="0,4800,7200,8400,9600" collective="-1500,-1500,0,3000,3000"/>
|
||||
</heli_curves>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="CIC_FRONT" no="0" min="1000" neutral="1400" max="1700"/>
|
||||
<servo name="CIC_RIGHT" no="5" min="1150" neutral="1450" max="1850"/>
|
||||
<servo name="CIC_LEFT" no="4" min="1000" neutral="1400" max="1700"/>
|
||||
<servo name="TAIL" no="1" min="0" neutral="0" max="3500"/>
|
||||
<servo name="GAS" no="2" min="1000" neutral="1000" max="1890"/>
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
<axis name="FMODE" failsafe_value="-9600"/>
|
||||
</commands>
|
||||
|
||||
<section name="MIXING" prefix="SW_MIXING_">
|
||||
<!-- front left (CW), front right (CCW), back right (CW), back left (CCW) -->
|
||||
<define name="TYPE" value="H120"/>
|
||||
<define name="TRIM_ROLL" value="0"/>
|
||||
<define name="TRIM_PITCH" value="0"/>
|
||||
<define name="TRIM_COLL" value="0"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<!-- fly with fixed rpm full throttle -->
|
||||
<let var="hoverstick" value=".1*MAX_PPRZ"/>
|
||||
<let var="halfway" value="(@THRUST >= ($hoverstick) ? 1 : 0)"/>
|
||||
|
||||
<call fun="swashplate_mixing_run(values)"/>
|
||||
<set servo="CIC_FRONT" value="-swashplate_mixing.commands[SW_FRONT]"/>
|
||||
<set servo="CIC_LEFT" value="-swashplate_mixing.commands[SW_LEFTBACK]"/>
|
||||
<set servo="CIC_RIGHT" value="swashplate_mixing.commands[SW_RIGHTBACK]"/>
|
||||
<set servo="TAIL" value="@YAW"/> <!-- +0.4*@THRUST met pid -->
|
||||
<set servo="GAS" value="$halfway * MAX_PPRZ"/>
|
||||
|
||||
|
||||
<!--set servo="CIC_LEFT" value="0"/>
|
||||
<set servo="CIC_RIGHT" value="0"/>
|
||||
<set servo="CIC_FRONT" value="0"/>
|
||||
<set servo="GAS" value="@THRUST"/>
|
||||
<set servo="TAIL" value="0"/-->
|
||||
|
||||
</command_laws>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="MODE_AUTO2" value="AP_MODE_NAV"/> <!--AP_MODE_ATTITUDE_DIRECT-->
|
||||
<define name="MODE_AUTO1" value="AP_MODE_HOVER_Z_HOLD"/> <!--AP_MODE_HELI_INDI_4DOF-->
|
||||
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/> <!--AP_MODE_ATTITUDE_Z_HOLD-->
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE_HELI_INDI" prefix="STABILIZATION_ATTITUDE_HELI_INDI_">
|
||||
<define name="ROLL_P" value="12"/><!--20 3052 -->
|
||||
<define name="PITCH_P" value="8"/><!--20 3052 -->
|
||||
<define name="YAW_P" value="10"/>
|
||||
<define name="YAW_D" value="30"/>
|
||||
<define name="USE_FAST_DYN_FILTERS" value="1" />
|
||||
<define name="FAST_DYN_ROLL_BW" value="68" />
|
||||
<define name="FAST_DYN_PITCH_BW" value="17" />
|
||||
</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="270." unit="deg/s"/>
|
||||
</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="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="364"/>
|
||||
<define name="HOVER_KD" value="362"/>
|
||||
<define name="HOVER_KI" value="0"/>
|
||||
<define name="GUIDANCE_V_NOMINAL_HOVER_THROTTLE" value="0.9"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="HEADING_UPDATE_GPS_MIN_SPEED" value="0"/>
|
||||
<define name="USE_RPM_SENSOR_NOTCH" value="0"/>
|
||||
<define name="NOTCH_FILTER_BANDWIDTH" value="10"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="PGAIN" value="165"/> <!-- 50/165 -->
|
||||
<define name="DGAIN" value="185"/> <!-- 50/185 -->
|
||||
<define name="IGAIN" value="31"/> <!-- 0/31 -->
|
||||
</section>
|
||||
|
||||
<modules main_freq="512">
|
||||
<load name="pwm_meas.xml"/>
|
||||
<load name="rpm_sensor.xml">
|
||||
<define name="RPM_PULSE_PER_RND" value="18"/>
|
||||
</load>
|
||||
<load name="send_imu_mag_current.xml"/>
|
||||
<load name="logger_sd_spi_direct.xml">
|
||||
<configure name="LOGGER_CONTROL_SWITCH" value="RADIO_AUX2"/>
|
||||
<configure name="LOGGER_LED" value="3"/>
|
||||
</load>
|
||||
<load name="heli_swashplate_mixing.xml"/>
|
||||
<load name="heli_throttle_curve.xml"/>
|
||||
<!--load name="roll_disturbance.xml"/-->
|
||||
<!-- DISABLED MODULES
|
||||
<load name="gps_ubx_ucenter.xml"/>
|
||||
<load name="adc_expansion_uart.xml"/>
|
||||
<load name="air_data.xml"/>
|
||||
<load name="sys_mon.xml"/>
|
||||
-->
|
||||
</modules>
|
||||
|
||||
</airframe>
|
||||
|
||||
@@ -1,331 +0,0 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "../flight_plan.dtd">
|
||||
<flight_plan alt="300" ground_alt="200" lat0="50.123456" lon0="7.123456" max_dist_from_home="11400" name="OpenUAS Versatile" qfu="270" security_height="70" home_mode_height="70">
|
||||
|
||||
<!-- Varous speed modes for use in flightplanvwith control=new
|
||||
V_CTL_SPEED_THROTTLE
|
||||
V_CTL_SPEED_AIRSPEED
|
||||
V_CTL_SPEED_GROUNDSPEED
|
||||
use v_ctl_auto_airspeed_setpoint in meters per second
|
||||
|
||||
Fix it for ETECS still
|
||||
-->
|
||||
<!-- ******************************** HEADERS ****************************** -->
|
||||
<header>
|
||||
|
||||
#ifndef FLIGHTPLAN_HEADER_DEFINES
|
||||
#define FLIGHTPLAN_HEADER_DEFINES
|
||||
|
||||
//Set Generic options
|
||||
#include "autopilot.h"
|
||||
//Enable AHRS Health test functions
|
||||
#include "subsystems/ahrs/ahrs_aligner.h"
|
||||
//Enable advanced electrical power functions
|
||||
#include "subsystems/electrical.h"
|
||||
//Enable datalink tests
|
||||
#include "subsystems/datalink/datalink.h"
|
||||
|
||||
// PHOTOGRAMMETRY settings
|
||||
#define PHOTOGRAMMETRY_OVERLAP 30 // 1-99 Procent
|
||||
#define PHOTOGRAMMETRY_SIDELAP 20 // 1-99 Procent
|
||||
#define PHOTOGRAMMETRY_RESOLUTION 50 // mm pixel projection size
|
||||
|
||||
// Incluse airframe.h To be able to use specific variables
|
||||
#include "generated/airframe.h"
|
||||
|
||||
// Completly replace with onboard recon copmpter interface
|
||||
#ifdef DC_AUTOSHOOT_PERIOD
|
||||
//TODO make shooting distance not periodic
|
||||
#define LINE_START_FUNCTION dc_autoshoot = DC_AUTOSHOOT_PERIODIC;
|
||||
#define LINE_STOP_FUNCTION dc_autoshoot = DC_AUTOSHOOT_STOP;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
</header>
|
||||
<waypoints>
|
||||
<waypoint name="HOME" x="0" y="0"/>
|
||||
<waypoint name="STDBY" x="20." y="80." height="70."/>
|
||||
<waypoint name="1" x="-20." y="114."/>
|
||||
<waypoint name="2" x="203." y="112."/>
|
||||
<waypoint name="MOB" x="-11." y="-21."/>
|
||||
<waypoint name="S1" x="-151." y="80."/>
|
||||
<waypoint name="S2" x="162." y="237."/>
|
||||
<waypoint name="AF" x="-21." y="66." alt="215."/>
|
||||
<waypoint name="TD" x="-127." y="0." alt="185."/>
|
||||
<waypoint name="CLIMB" x="53." y="146." height="70."/>
|
||||
|
||||
<!-- For a payload release. Need to connect external servo -->
|
||||
<waypoint name="WAIT" x="-70." y="-70." height="115."/>
|
||||
<waypoint name="BASELEG" x="56." y="367."/>
|
||||
<waypoint name="START" x="60." y="-120." height="65."/>
|
||||
<!-- Note that 80m is the release height, and if e.g. one is not allowed to go below 60 meters, one needs at least 5m GPS height fluctuation into account
|
||||
Also if we steeply move UP from START to RELEASE the release will be more accurate possibly -->
|
||||
<waypoint name="RELEASE" x="20." y="-45." height="80."/> <!-- along line start to release this is the end point -->
|
||||
<!-- Position where target would be located. -->
|
||||
<!-- Note that 0m is the target height and allowed -->
|
||||
<waypoint name="TARGET" x="200." y="200." height="0."/>
|
||||
<!-- Used for out of missionboundary tests -->
|
||||
<waypoint name="TESTTOOFAR" x="-48." y="537."/>
|
||||
<!-- Square -->
|
||||
<waypoint name="Q1" x="5.9" y="65.9"/>
|
||||
<waypoint name="Q2" x="67.5" y="301.1"/>
|
||||
<waypoint name="Q3" x="309.2" y="250.8"/>
|
||||
<waypoint name="Q4" x="245.3" y="18.6"/>
|
||||
<!-- bounding box -->
|
||||
<waypoint alt="515.0" name="_MB1" x="-345.9" y="82.7"/>
|
||||
<waypoint alt="515.0" name="_MB2" x="-118.2" y="101.9"/>
|
||||
<waypoint alt="515.0" name="_MB3" x="-20." y="553."/>
|
||||
<waypoint alt="515.0" name="_MB4" x="527.7" y="545.1"/>
|
||||
<waypoint alt="515.0" name="_MB5" x="840.7" y="433.7"/>
|
||||
<waypoint alt="515.0" name="_MB6" x="922.2" y="-123.0"/>
|
||||
<waypoint alt="515.0" name="_MB7" x="351.5" y="-43.5"/>
|
||||
<waypoint alt="515.0" name="_MB8" x="-312.3" y="-118.9"/>
|
||||
<!-- SearchArea -->
|
||||
<waypoint name="SA1" x="115.6" y="388.8"/>
|
||||
<waypoint name="SA2" x="268.4" y="426.8"/>
|
||||
<waypoint name="SA3" x="478.4" y="355.2"/>
|
||||
<waypoint name="SA4" x="392.0" y="63.0"/>
|
||||
<waypoint name="SA5" x="-20.9" y="44.6"/>
|
||||
</waypoints>
|
||||
<sectors>
|
||||
<!-- ***** -->
|
||||
<sector color="yellow" name="MissionBoundary" type="dynamic">
|
||||
<corner name="_MB1"/>
|
||||
<corner name="_MB2"/>
|
||||
<corner name="_MB3"/>
|
||||
<corner name="_MB4"/>
|
||||
<corner name="_MB5"/>
|
||||
<corner name="_MB6"/>
|
||||
<corner name="_MB7"/>
|
||||
<corner name="_MB8"/>
|
||||
</sector>
|
||||
<sector color="purple" name="SearchArea" type="dynamic">
|
||||
<corner name="SA1"/>
|
||||
<corner name="SA2"/>
|
||||
<corner name="SA3"/>
|
||||
<corner name="SA4"/>
|
||||
<corner name="SA5"/>
|
||||
</sector>
|
||||
<sector color="lightblue" name="Square" type="dynamic">
|
||||
<corner name="Q1"/>
|
||||
<corner name="Q2"/>
|
||||
<corner name="Q3"/>
|
||||
<corner name="Q4"/>
|
||||
</sector>
|
||||
</sectors>
|
||||
<variables>
|
||||
<variable var="roll_step" init="15." min="0." max="50." step="1.0"/>
|
||||
</variables>
|
||||
<exceptions>
|
||||
<exception cond="And((datalink_time) > 300, autopilot.launch > 0) " deroute="Standby"/>
|
||||
<exception cond="LOW_BAT_LEVEL > PowerVoltage()" deroute="Standby"/>
|
||||
<exception cond="Or(! InsideMissionBoundary(GetPosX(), GetPosY()), GetPosAlt() > GetAltRef() + 600) && !(nav_block == IndexOfBlock('Wait GPS')) && !(nav_block == IndexOfBlock('Geo init')) && !(nav_block == IndexOfBlock('Waiting for RC Transmitter')) && !(nav_block == IndexOfBlock('Takeoff')) && !(nav_block == IndexOfBlock('land')) && !(nav_block == IndexOfBlock('final')) && !(nav_block == IndexOfBlock('flare'))" deroute="Standby"/>
|
||||
</exceptions>
|
||||
<blocks>
|
||||
<block name="Wait GPS">
|
||||
<!-- if no valid fix or gps accuracy> 15m or no AHRS , it a no-go wait-->
|
||||
<while cond="!GpsFixValid()"/>
|
||||
<!-- Wiggle Wiggle when we have GPS , time to fly...-->
|
||||
<!--<set var="ap_state->commands[COMMAND_YAW]" value="-MAX_PPRZ"/>
|
||||
<while cond="LessThan(NavBlockTime(), 2)"/>
|
||||
<set var="ap_state->commands[COMMAND_YAW]" value="MAX_PPRZ"/>
|
||||
<while cond="LessThan(NavBlockTime(), 3)"/>
|
||||
<set var="ap_state->commands[COMMAND_YAW]" value="-MAX_PPRZ"/>-->
|
||||
</block>
|
||||
<block name="Geo init">
|
||||
<while cond="LessThan(NavBlockTime(), 10)"/>
|
||||
<call_once fun="NavSetGroundReferenceHere()"/>
|
||||
<!--call_once fun="NavSetAltitudeReferenceHere()"/-->
|
||||
<set var="air_data.calc_qnh_once" value="TRUE"/>
|
||||
</block>
|
||||
<block name="Waiting for RC Transmitter">
|
||||
<!-- <attitude roll="0" throttle="0" vmode="throttle"/>--> <!-- To disable wriggly Actuators in Auto2, and throttle to 0 just in case -->
|
||||
<!-- If you have an RC transmitter backup, one must have the TX at least switched on once. This check can be disabled if everything works 100% in Auto2 and you have no TX -->
|
||||
<while cond="RCLost()"/> <!-- To make sure we do not hop to AUTO2 and motor could starts running, at least switch on then maybe off if you want to -->
|
||||
</block>
|
||||
<block key="t" name="Takeoff" strip_button="Takeoff (wp CLIMB)" strip_icon="takeoff.png" group="Ops">
|
||||
<set var="v_ctl_speed_mode" value="V_CTL_SPEED_AIRSPEED" />
|
||||
<exception cond="GetPosAlt() > GetAltRef()+15" deroute="Standby"/>
|
||||
<while cond="1 > autopilot.launch"/> <!-- Setting of launch performed with takeoff_detect module disable -->
|
||||
<set var="autopilot.kill_throttle" value="0"/>
|
||||
<!--<set var="autopilot.launch" value="1"/>--><!--If takeoff_detect module not used enable launch here -->
|
||||
<set var="autopilot.flight_time" value="0"/>
|
||||
<set var="v_ctl_auto_airspeed_setpoint" value="RACE_AIRSPEED" />
|
||||
<!--<heading course="QFU" vmode="throttle" throttle="0.8" pitch="15" until="(GetPosAlt() > ground_alt+30)"/>--><!-- enable Magnetometer on ground-->
|
||||
<go wp="CLIMB" throttle="1.0" vmode="throttle" pitch="TAKEOFF_PITCH_ANGLE"/> <!-- better just first straight on (if there is not to much sidewind ;0)-->
|
||||
</block>
|
||||
<block key="s" name="Standby" strip_button="Standby" strip_icon="home.png" group="Ops">
|
||||
<set var="v_ctl_auto_throttle_cruise_throttle" value="V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" />
|
||||
<set var="v_ctl_auto_airspeed_setpoint" value="NOMINAL_AIRSPEED" />
|
||||
<set var="v_ctl_speed_mode" value="V_CTL_SPEED_AIRSPEED" />
|
||||
<circle radius="nav_radius" wp="STDBY"/>
|
||||
</block>
|
||||
<block key="i" name="SimpleSquareRoute">
|
||||
<go from="STDBY" hmode="route" wp="SA1"/>
|
||||
<for from="0" to="10" var="i">
|
||||
<go from="SA1" hmode="route" wp="SA2"/>
|
||||
<!-- dash -->
|
||||
<!--<set var="v_ctl_auto_throttle_cruise_throttle" value="V_CTL_AUTO_THROTTLE_MAX_CRUISE_THROTTLE"/>-->
|
||||
<go hmode="route" wp="SA3"/>
|
||||
<go hmode="route" wp="SA4"/>
|
||||
<!-- nominal again -->
|
||||
<!--<set var="v_ctl_auto_throttle_cruise_throttle" value="V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE"/>-->
|
||||
<go hmode="route" wp="SA5"/>
|
||||
</for>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
<block name="SearchForTarget" strip_button="Searchtarget" strip_icon="survey.png" group="Scan">
|
||||
<exception cond="block_time > 300" deroute="Standby"/> <!-- No patience, five minutes is enough for now... -->
|
||||
<call_once fun="nav_survey_polygon_setup(WP_SA1, 5, 45 , POLYSURVEY_DEFAULT_DISTANCE, 25, MIN_CIRCLE_RADIUS, GetAltRef()+40)"/>
|
||||
<call fun="nav_survey_polygon_run()"/>
|
||||
</block>
|
||||
<block name="Line 1-2" strip_button="Line (wp 1-2)" strip_icon="line.png" group="extra_pattern" group="Ops">
|
||||
<call_once fun="nav_line_setup()"/>
|
||||
<call fun="nav_line_run(WP_1, WP_2, nav_radius)"/>
|
||||
</block>
|
||||
<block key="F8" name="Figure 8 around wp 1" strip_button="Figure 8 (wp 1-2)" strip_icon="eight.png" group="Ops">
|
||||
<eight center="1" radius="nav_radius" turn_around="2"/>
|
||||
</block>
|
||||
<block name="Oval 1-2" strip_button="Oval (wp 1-2)" strip_icon="oval.png" group="Ops">
|
||||
<oval p1="1" p2="2" radius="nav_radius"/>
|
||||
</block>
|
||||
<block name="Race Oval 1-2 for 3 minutes">
|
||||
<go wp="1"/>
|
||||
<set var="v_ctl_auto_throttle_cruise_throttle" value="V_CTL_AUTO_THROTTLE_MAX_CRUISE_THROTTLE"/>
|
||||
<set var="v_ctl_auto_airspeed_setpoint" value="RACE_AIRSPEED"/>
|
||||
<oval p1="1" p2="2" radius="nav_radius*1.2" until="block_time > 180"/>
|
||||
<set var="v_ctl_auto_throttle_cruise_throttle" value="V_CTL_AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE"/>
|
||||
<set var="v_ctl_auto_airspeed_setpoint" value="NOMINAL_AIRSPEED"/>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
<block name="MOB" strip_button="Circle around here" strip_icon="mob.png" group="Scan">
|
||||
<call_once fun="NavSetWaypointHere(WP_MOB)"/>
|
||||
<circle radius="100" wp="MOB"/>
|
||||
</block>
|
||||
<block name="Auto pitch (circle wp 1)">
|
||||
<circle pitch="auto" radius="75" throttle="0.7" wp="1"/>
|
||||
</block>
|
||||
<block name="Climb 75% throttle">
|
||||
<circle pitch="10" radius="50+(GetPosAlt()-GetAltRef())/2" throttle="0.75" until="(LOW_BAT_LEVEL > PowerVoltage()) || (GetPosAlt() > GetAltRef()+ 600)" vmode="throttle" wp="1"/>
|
||||
</block>
|
||||
<block name="Climb 0m/s">
|
||||
<circle climb="0" radius="nav_radius" until="LOW_BAT_LEVEL > PowerVoltage()" vmode="climb" wp="1"/>
|
||||
</block>
|
||||
<block name="Climb 1m/s">
|
||||
<circle climb="1" pitch="5" radius="50+(GetPosAlt()-GetAltRef())/2" until="LOW_BAT_LEVEL > PowerVoltage()" vmode="climb" wp="1"/>
|
||||
</block>
|
||||
<block name="Climb nav_climb m/s">
|
||||
<circle climb="nav_climb" radius="nav_radius" until="(LOW_BAT_LEVEL > PowerVoltage()) || (GetPosAlt() > GetAltRef()+ 600)" vmode="climb" wp="1"/>
|
||||
</block>
|
||||
<block name="Circle 0% throttle">
|
||||
<circle pitch="fp_pitch" radius="nav_radius" throttle="0.0" until="GetAltRef()+50 > GetPosAlt()" vmode="throttle" wp="1"/>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
<block name="Oval 0% throttle">
|
||||
<oval p1="1" p2="2" pitch="fp_pitch" radius="nav_radius" throttle="0.0" until="GetAltRef()+50 > GetPosAlt()" vmode="throttle"/>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
<block name="Route 1-2">
|
||||
<go approaching_time="0" from="1" hmode="route" wp="2"/>
|
||||
</block>
|
||||
<block name="Stack wp 2">
|
||||
<circle radius="75" wp="2"/>
|
||||
</block>
|
||||
<block name="Route 2-1">
|
||||
<go approaching_time="0" from="2" hmode="route" wp="1"/>
|
||||
</block>
|
||||
<block name="Stack wp 1">
|
||||
<circle radius="75" wp="1"/>
|
||||
</block>
|
||||
<block name="Glide 1-2">
|
||||
<go from="1" hmode="route" vmode="glide" wp="2"/>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
<block name="Survey S1-S2" strip_button="Survey (wp S1-S2)" strip_icon="survey.png" group="Scan">
|
||||
<survey_rectangle grid="150" wp1="S1" wp2="S2"/>
|
||||
</block>
|
||||
<block key="r" name="Land Right AF-TD" strip_button="Land right (wp AF-TD)" strip_icon="land-right.png" group="Land">
|
||||
<set value="DEFAULT_CIRCLE_RADIUS" var="nav_radius"/>
|
||||
<deroute block="land"/>
|
||||
</block>
|
||||
<block key="l" name="Land Left AF-TD" strip_button="Land left (wp AF-TD)" strip_icon="land-left.png" group="Land">
|
||||
<set value="-DEFAULT_CIRCLE_RADIUS" var="nav_radius"/>
|
||||
<deroute block="land"/>
|
||||
</block>
|
||||
<block key="<control>l" name="land">
|
||||
<call_once fun="nav_compute_baseleg(WP_AF, WP_TD, WP_BASELEG, nav_radius)"/>
|
||||
<circle radius="nav_radius" until="NavCircleCount() > 0.5" wp="BASELEG"/>
|
||||
<set var="v_ctl_auto_throttle_cruise_throttle" value="V_CTL_AUTO_THROTTLE_MIN_CRUISE_THROTTLE" />
|
||||
<set var="v_ctl_auto_airspeed_setpoint" value="MINIMUM_AIRSPEED"/>
|
||||
<circle radius="nav_radius" until="NavQdrCloseTo(DegOfRad(baseleg_out_qdr)-(nav_radius/fabs(nav_radius))*10) && 10 > fabs(GetPosAlt() - WaypointAlt(WP_BASELEG))" wp="BASELEG"/>
|
||||
</block>
|
||||
<block name="final">
|
||||
<exception cond="GetAltRef() + 10 > GetPosAlt()" deroute="flare"/>
|
||||
<go from="AF" hmode="route" vmode="glide" wp="TD"/>
|
||||
</block>
|
||||
<block name="flare">
|
||||
<go approaching_time="0" from="AF" hmode="route" throttle="0.0" vmode="throttle" wp="TD"/>
|
||||
<attitude roll="0.0" throttle="0.0" until="FALSE" vmode="throttle"/>
|
||||
</block>
|
||||
|
||||
<!-- Extras -->
|
||||
<block name="Steps roll -10, +10">
|
||||
<while cond="TRUE">
|
||||
<attitude alt="GetPosAlt()" roll="10.0" until=" stage_time > 6" vmode="alt"/>
|
||||
<attitude alt="GetPosAlt()" roll="-10.0" until="stage_time > 6" vmode="alt"/>
|
||||
</while>
|
||||
</block>
|
||||
<block name="Steps roll -20, +20">
|
||||
<while cond="TRUE">
|
||||
<attitude alt="GetPosAlt()" roll="20.0" until=" stage_time > 3" vmode="alt"/>
|
||||
<attitude alt="GetPosAlt()" roll="-20.0" until="stage_time > 3" vmode="alt"/>
|
||||
</while>
|
||||
</block>
|
||||
<block name="Steps roll from var">
|
||||
<while cond="TRUE">
|
||||
<attitude alt="GetPosAlt()" roll="roll_step" until=" stage_time > 3" vmode="alt"/>
|
||||
<attitude alt="GetPosAlt()" roll="-roll_step" until="stage_time > 3" vmode="alt"/>
|
||||
</while>
|
||||
</block>
|
||||
<block name="Steps pitch -10, +10">
|
||||
<while cond="TRUE">
|
||||
<attitude alt="GetPosAlt()" pitch="10" roll="0.0" until=" stage_time > 2" vmode="alt"/>
|
||||
<attitude alt="GetPosAlt()" pitch="-10" roll="0.0" until=" stage_time > 2" vmode="alt"/>
|
||||
</while>
|
||||
</block>
|
||||
<block name="Heading 30">
|
||||
<heading alt="GetAltRef()+80" course="30" until="FALSE"/><!-- better test your missionboundary first ;)-->
|
||||
</block>
|
||||
<block name="For loop (circles wp 1)">
|
||||
<for from="0" to="3" var="i">
|
||||
<circle radius="DEFAULT_CIRCLE_RADIUS+ $i*10" wp="1" until="NavCircleCount() > 1"/>
|
||||
</for>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
<block name="Flower (wp 1-2)" strip_button="Flower" strip_icon="observe.png" group="Scan">
|
||||
<call_once fun="nav_flower_setup(WP_1, WP_2)"/>
|
||||
<call fun="nav_flower_run()"/>
|
||||
</block>
|
||||
<block name="Test datalink (go to wp 2)">
|
||||
<exception cond="datalink_time > 22" deroute="Standby"/>
|
||||
<go from="STDBY" hmode="route" wp="2"/>
|
||||
<go from="2" hmode="route" wp="STDBY"/>
|
||||
</block>
|
||||
<block name="Fly in Square">
|
||||
<exception cond="!InsideSquare(GetPosX(), GetPosY())" deroute="Come back wp 1"/>
|
||||
<attitude alt="GetAltRef()+75" roll="0" vmode="alt"/>
|
||||
</block>
|
||||
<block name="Come back wp 1">
|
||||
<exception cond="InsideSquare(GetPosX(), GetPosY())" deroute="Fly in Square"/>
|
||||
<go wp="1"/>
|
||||
<deroute block="Fly in Square"/>
|
||||
</block>
|
||||
<block name="Vertical Raster">
|
||||
<call_once fun="nav_vertical_raster_setup()"/>
|
||||
<call fun="nav_vertical_raster_run(WP_S1, WP_S2, nav_radius, 50)"/>
|
||||
</block>
|
||||
<block key="<Control>f" name="TestToFar">
|
||||
<go wp="TESTTOOFAR"/>
|
||||
</block>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
@@ -1,408 +0,0 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "../../flight_plan.dtd">
|
||||
<!--
|
||||
Australian UAV Outback Challenge of 2014.
|
||||
|
||||
* TU Delft University of Technology, L&R http://www.tudelft.nl
|
||||
* MAVLab - http://mavlab.info
|
||||
|
||||
-->
|
||||
|
||||
<procedure>
|
||||
<!-- ******************************** HEADERS ****************************** -->
|
||||
<header>
|
||||
#include "autopilot.h"
|
||||
#include "guidance/guidance_hybrid.h"
|
||||
#include "guidance/guidance_v.h"
|
||||
#include "guidance/guidance_h.h"
|
||||
#include "subsystems/electrical.h"
|
||||
#include "guidance/guidance_indi.h"
|
||||
#include "subsystems/navigation/waypoints.h"
|
||||
#include "subsystems/datalink/datalink.h"
|
||||
#include "modules/sensors/temp_adc.h"
|
||||
// States
|
||||
#define AircraftIsBooting() LessThan(nav_block,4)
|
||||
|
||||
</header>
|
||||
<!-- ******************************* WAYPOINTS ***************************** -->
|
||||
<waypoints>
|
||||
<waypoint name="CLIMB" x="100" y="300"/>
|
||||
<waypoint name="STDBY" x="30" y="30"/>
|
||||
<waypoint name="HOVER" x="268.5" y="27.1" height="60"/>
|
||||
<waypoint name="LANDSPOT" x="268.5" y="127.1" height="40"/>
|
||||
<waypoint name="LANDING" x="-4800.1" y="-9409.5" height="40"/>
|
||||
<waypoint name="JOE" x="268.5" y="127.1" height="40"/>
|
||||
</waypoints>
|
||||
|
||||
<!-- ******************************** SECTORS ****************************** -->
|
||||
|
||||
|
||||
<!-- ****************************** EXCEPTIONS ***************************** -->
|
||||
<exceptions>
|
||||
|
||||
<!-- Geofence -->
|
||||
<exception cond="(!InsideSafety(GetPosX(), GetPosY()) &&
|
||||
!(AircraftIsBooting()) &&
|
||||
!(nav_block == IndexOfBlock('Geo_init')) &&
|
||||
!(nav_block == IndexOfBlock('HoldingPoint')) &&
|
||||
!(nav_block == IndexOfBlock('failsafe')) &&
|
||||
!(nav_block == IndexOfBlock('SLAMDunk_init')) )" deroute="failsafe"/>
|
||||
|
||||
<!-- GPS loss -->
|
||||
<exception cond="(!GpsFixValid() &&
|
||||
!(IndexOfBlock('Takeoff') > nav_block) &&
|
||||
!(nav_block >= IndexOfBlock('landed')) &&
|
||||
!(nav_block == IndexOfBlock('GpsLoss')) &&
|
||||
!(nav_block == IndexOfBlock('Descent_noGPS')) &&
|
||||
!(nav_block == IndexOfBlock('Descent_slow_noGPS')) &&
|
||||
!(nav_block == IndexOfBlock('landing_moment_noGPS')) &&
|
||||
!(nav_block == IndexOfBlock('failsafe')) &&
|
||||
(autopilot_in_flight == true) )" deroute="GpsLoss"/>
|
||||
|
||||
<!-- Datalink loss -->
|
||||
<exception cond="(datalink_time > 60 &&
|
||||
!(datalink_time > 120) &&
|
||||
!(IndexOfBlock('Takeoff') > nav_block) &&
|
||||
!(nav_block >= IndexOfBlock('landed')) &&
|
||||
!(nav_block == IndexOfBlock('GpsLoss')) &&
|
||||
!(nav_block == IndexOfBlock('inert')) &&
|
||||
!(nav_block == IndexOfBlock('failsafe')) &&
|
||||
(autopilot_in_flight == true) )" deroute="DatalinkLoss"/>
|
||||
|
||||
<!-- Stall detect -->
|
||||
<exception cond="((outback_hybrid_mode == HB_FORWARD) &&
|
||||
(12.0 > stateGetAirspeed_f()) &&
|
||||
has_transitioned &&
|
||||
(autopilot_in_flight == true) &&
|
||||
!(nav_block == IndexOfBlock('Hover_here')) )" deroute="Hover_here"/>
|
||||
|
||||
</exceptions>
|
||||
|
||||
|
||||
|
||||
<!-- *********************************************************************** -->
|
||||
<!-- ********************** FLIGHTPLAN STARTINGPOINT *********************** -->
|
||||
<!-- *********************************************************************** -->
|
||||
|
||||
<!-- *********** Wait for GPS fix, 3D by default *********** -->
|
||||
<blocks>
|
||||
|
||||
<!-- Initialization (No Geofence check, No datalink check, No RPM check, No stall check) -->
|
||||
<block name="Wait_GPS">
|
||||
<set value="true" var="opa_controller_vision_power"/> <!-- Power on the Kalamos -->
|
||||
<call fun="NavKillThrottle()"/>
|
||||
<call fun="nav_throttle_curve_set(0)" loop="false"/>
|
||||
<while cond="!GpsFixValid()"/>
|
||||
</block>
|
||||
<block name="Geo_init">
|
||||
<while cond="LessThan(NavBlockTime(), 10)"/>
|
||||
<call fun="nav_throttle_curve_set(0)" loop="false"/>
|
||||
<call fun="NavSetAltitudeReferenceHere()"/>
|
||||
<call fun="nav_set_heading_current()" loop="false"/>
|
||||
</block>
|
||||
<block name="SLAMDunk_init">
|
||||
<manual pitch="0" roll="0" throttle="0" until="getKalamosReady()" vmode="throttle" yaw="0"/> <!-- Check if Kalamos is booted -->
|
||||
<call fun="enableKalamosAttCalib(true)" until="stage_time>15"/> <!-- Enable Kalamos calibration for 15 seconds -->
|
||||
<call fun="enableKalamosAttCalib(false)" loop="false"/> <!-- Disable Kalamos calibration -->
|
||||
<set value="false" var="opa_controller_vision_power"/> <!-- Poweroff the Kalamos -->
|
||||
</block>
|
||||
<block name="HoldingPoint">
|
||||
<call fun="NavKillThrottle()"/>
|
||||
<call fun="nav_throttle_curve_set(0)" loop="false"/>
|
||||
<call fun="set_wind_heading_to_current90()" loop="false"/> <!-- Set heading based on wind -->
|
||||
<manual pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle" yaw="0"/>
|
||||
</block>
|
||||
|
||||
<!-- Takeoff (No RPM check, No stall check) -->
|
||||
<block group="TO" name="Start_Engine" strip_button="Start_Engine">
|
||||
<call fun="nav_throttle_curve_set(0)" loop="false"/>
|
||||
<call fun="nav_heli_spinup_setup(3, 0.07)" loop="false"/>
|
||||
<call fun="NavResurrect()"/>
|
||||
<call fun="nav_heli_spinup_run()"/>
|
||||
<call fun="nav_throttle_curve_set(1)" loop="false"/>
|
||||
<manual pitch="0" roll="0" throttle="0" until="stage_time>6" vmode="throttle" yaw="0"/>
|
||||
</block>
|
||||
<block name="Hold_Attitude">
|
||||
<exception cond="1200 > throttle_curve.rpm_meas" deroute="Start_Engine"/>
|
||||
<call fun="nav_throttle_curve_set(1)" loop="false"/>
|
||||
<call fun="nav_set_heading_current()" loop="false"/>
|
||||
<manual pitch="0" roll="0" throttle="0" until="stage_time>1" vmode="throttle" yaw="0"/>
|
||||
</block>
|
||||
<block name="Takeoff" strip_button="Takeoff" strip_icon="takeoff.png">
|
||||
<exception cond="stateGetPositionEnu_f()->z > 4.0" deroute="Climb"/>
|
||||
<call fun="nav_throttle_curve_set(1)" loop="false"/>
|
||||
<attitude pitch="0" roll="0" throttle="0.83" until="stage_time>2" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Climb">
|
||||
<exception cond="stateGetPositionEnu_f()->z > 50.0" deroute="decide_there_or_back"/>
|
||||
<call fun="NavSetWaypointHere(WP_CLIMB)" loop="false"/>
|
||||
<call fun="nav_set_heading_current()" loop="false"/>
|
||||
<set value="RadOfDeg(35)" var="guidance_indi_max_bank"/>
|
||||
<call fun="GuidanceVSetRef(stateGetPositionNed_i()->z - POS_BFP_OF_REAL(5.0), -SPEED_BFP_OF_REAL(3.0), 0)"/>
|
||||
<stay precall="PrecallModeHover()" climb="nav_climb_vspeed" vmode="climb" wp="CLIMB" until="stateGetPositionEnu_f()->z > 20.0"/>
|
||||
<set value="GUIDANCE_H_MAX_BANK" var="guidance_indi_max_bank"/>
|
||||
<stay precall="PrecallModeHover()"climb="nav_climb_vspeed" vmode="climb" wp="CLIMB"/>
|
||||
</block>
|
||||
|
||||
<!-- Decide where the takeoff was used for -->
|
||||
<block name="decide_there_or_back">
|
||||
<exception cond="6 > last_wp_reached_in_route" deroute="line_p1_p2"/> <!-- Deroute back corridor to joe -->
|
||||
<exception cond="last_wp_reached_in_route > 5" deroute="line_p9_p8"/> <!-- Deroute back corridor to home -->
|
||||
<call fun="NavSetWaypointHere(WP_HOVER)" loop="false"/>
|
||||
<stay precall="PrecallModeHover()"wp="HOVER" until="stage_time > 1"/>
|
||||
</block>
|
||||
|
||||
<!-- Safety blocks -->
|
||||
<block name="Standby" strip_button="Standby" strip_icon="home.png">
|
||||
<set value="GUIDANCE_H_MAX_BANK" var="guidance_indi_max_bank"/>
|
||||
<stay precall="PrecallModeHover()"wp="STDBY"/>
|
||||
</block>
|
||||
<block name="Hover_here">
|
||||
<call fun="waypoint_set_alt(WP_HOVER,stateGetPositionEnu_f()->z)" loop="false"/>
|
||||
<call fun="NavSetWaypointHere(WP_HOVER)" loop="false"/>
|
||||
<stay precall="PrecallModeHover()"wp="HOVER"/>
|
||||
</block>
|
||||
|
||||
<!-- Flightpath to joe -->
|
||||
<block group="to_joe" name="line_p1_p2">
|
||||
<go precall="PrecallModeForward()" from="p1" hmode="route" wp="intermediate_wp"/>
|
||||
<go precall="PrecallModeForward()" from="p1" hmode="route" wp="p2"/>
|
||||
<set value="2" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p2_p3"/>
|
||||
</block>
|
||||
<block group="to_joe" name="line_p2_p3">
|
||||
<go precall="PrecallModeForward()" from="p2" hmode="route" wp="p3"/>
|
||||
<set value="3" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p3_p4"/>
|
||||
</block>
|
||||
<block group="to_joe" name="line_p3_p4">
|
||||
<go precall="PrecallModeForward()" from="p3" hmode="route" wp="p4"/>
|
||||
<set value="4" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p4_p5"/>
|
||||
</block>
|
||||
<block group="to_joe" name="line_p4_p5">
|
||||
<go precall="PrecallModeForward()" from="p4" hmode="route" wp="p5"/>
|
||||
<set value="5" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p5_p6"/>
|
||||
</block>
|
||||
<block group="to_joe" name="line_p5_p6">
|
||||
<go precall="PrecallModeForward()" from="p5" hmode="route" wp="p6"/>
|
||||
<set value="6" var="last_wp_reached_in_route"/>
|
||||
<set value="true" var="opa_controller_vision_power"/>
|
||||
<deroute block="line_p6_p7"/>
|
||||
</block>
|
||||
<block group="to_joe" name="line_p6_p7">
|
||||
<go precall="PrecallModeForward()" from="p6" hmode="route" wp="p7"/>
|
||||
<set value="7" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p7_p8"/>
|
||||
</block>
|
||||
<block group="to_joe" name="line_p7_p8">
|
||||
<go precall="PrecallModeForward()" from="p7" hmode="route" wp="p8"/>
|
||||
<set value="8" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p8_p9"/>
|
||||
</block>
|
||||
<block group="to_joe" name="line_p8_p9">
|
||||
<go precall="PrecallModeForward()" from="p8" hmode="route" wp="p9"/>
|
||||
<set value="9" var="last_wp_reached_in_route"/>
|
||||
<deroute block="search_joe"/>
|
||||
</block>
|
||||
|
||||
<!-- Flightpath from Joe -->
|
||||
<block group="return" name="line_p9_p8">
|
||||
<exception cond="9 > last_wp_reached_in_route" deroute="line_p8_p7"/>
|
||||
<go precall="PrecallModeForward()" from="p9" hmode="route" wp="p8"/>
|
||||
<set value="8" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p8_p7"/>
|
||||
</block>
|
||||
<block group="return" name="line_p8_p7">
|
||||
<exception cond="8 > last_wp_reached_in_route" deroute="line_p7_p6"/>
|
||||
<go precall="PrecallModeForward()" from="p8" hmode="route" wp="p7"/>
|
||||
<set value="7" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p7_p8"/>
|
||||
</block>
|
||||
<block group="return" name="line_p7_p6">
|
||||
<exception cond="7 > last_wp_reached_in_route" deroute="line_p6_p5"/>
|
||||
<go precall="PrecallModeForward()" from="p7" hmode="route" wp="p6"/>
|
||||
<set value="6" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p6_p5"/>
|
||||
</block>
|
||||
<block group="return" name="line_p6_p5">
|
||||
<exception cond="6 > last_wp_reached_in_route" deroute="line_p5_p4"/>
|
||||
<go precall="PrecallModeForward()" from="p6" hmode="route" wp="p5"/>
|
||||
<set value="5" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p5_p4"/>
|
||||
</block>
|
||||
<block group="return" name="line_p5_p4">
|
||||
<exception cond="5 > last_wp_reached_in_route" deroute="line_p4_p3"/>
|
||||
<go precall="PrecallModeForward()" from="p5" hmode="route" wp="p4"/>
|
||||
<set value="4" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p4_p3"/>
|
||||
</block>
|
||||
<block group="return" name="line_p4_p3">
|
||||
<exception cond="4 > last_wp_reached_in_route" deroute="line_p3_p2"/>
|
||||
<go precall="PrecallModeForward()" from="p4" hmode="route" wp="p3"/>
|
||||
<set value="3" var="last_wp_reached_in_route"/>
|
||||
<deroute block="line_p3_p2"/>
|
||||
</block>
|
||||
<block group="return" name="line_p3_p2">
|
||||
<exception cond="3 > last_wp_reached_in_route" deroute="line_p2_p1"/>
|
||||
<go precall="PrecallModeForward()" from="p3" hmode="route" wp="p2"/>
|
||||
<set value="2" var="last_wp_reached_in_route"/>
|
||||
<set value="true" var="opa_controller_vision_power"/>
|
||||
<deroute block="line_p2_p1"/>
|
||||
</block>
|
||||
<block group="return" name="line_p2_p1">
|
||||
<go precall="PrecallModeForward()" from="p2" hmode="route" wp="p1"/>
|
||||
<set value="1" var="last_wp_reached_in_route"/>
|
||||
<deroute block="Descent"/>
|
||||
</block>
|
||||
|
||||
<!-- Landing at base-->
|
||||
<block name="Descent">
|
||||
<exception cond="12.0 > stateGetPositionEnu_f()->z" deroute="Descent_slow"/>
|
||||
<call fun="NavSetWaypointHere(WP_TD)" loop="false"/>
|
||||
<call fun="enableKalamosDescent(true)" loop="false"/>
|
||||
<call fun="GuidanceVSetRef(stateGetPositionNed_i()->z, 0, 0)"/>
|
||||
<stay precall="PrecallModeHover()"climb="nav_descend_vspeed" vmode="climb" wp="TD"/>
|
||||
</block>
|
||||
<block name="Descent_slow">
|
||||
<exception cond="((0.6 + fabs(stateGetNedToBodyEulers_f()->phi)/2) > k2p_package.height ) && (k2p_package.height > 0.0) && getKalamosReady()" deroute="landing_moment"/>
|
||||
<exception cond="(fabs(stateGetNedToBodyEulers_f()->theta) > 0.6) && ( 2.5 > k2p_package.height) && (!(last_block==IndexOfBlock('Descent_pause')))" deroute="Descent_pause"/>
|
||||
<stay precall="PrecallModeHover()"climb="-0.5" vmode="climb" wp="TD"/>
|
||||
</block>
|
||||
<block name="Descent_pause">
|
||||
<exception cond="(0.3 > fabs(stateGetNedToBodyEulers_f()->theta) )" deroute="Descent_pause"/>
|
||||
<stay precall="PrecallModeHover()"climb="0.0" vmode="climb" wp="TD" until="stage_time>30"/>
|
||||
<deroute block="Descent_slow"/>
|
||||
</block>
|
||||
<block name="landing_moment">
|
||||
<call fun="nav_throttle_curve_set(1)" loop="false"/>
|
||||
<attitude pitch="0" roll="0" throttle="0.5" until="stage_time>2" vmode="throttle"/>
|
||||
<deroute block="landed"/>
|
||||
</block>
|
||||
|
||||
<!-- Landing without GPS -->
|
||||
<block name="Descent_noGPS">
|
||||
<set value="true" var="opa_controller_vision_power"/> <!-- Vision power when no gps auto landing -->
|
||||
<call fun="enableKalamosDescent(true)" loop="false"/>
|
||||
<exception cond="10.0 > stateGetPositionEnu_f()->z" deroute="Descent_slow_noGPS"/>
|
||||
<call fun="nav_set_heading_current()" loop="false"/>
|
||||
<call fun="NavSetWaypointHere(WP_TD)" loop="false"/>
|
||||
<call fun="GuidanceVSetRef(stateGetPositionNed_i()->z, 0, 0)"/>
|
||||
<attitude pitch="0" roll="0" climb="nav_descend_vspeed" vmode="climb"/>
|
||||
</block>
|
||||
<block name="Descent_slow_noGPS">
|
||||
<exception cond="((0.6 + fabs(stateGetNedToBodyEulers_f()->phi)/2) > k2p_package.height) && (k2p_package.height > 0.0) && getKalamosReady()" deroute="landing_moment"/>
|
||||
<attitude pitch="0" roll="0" climb="-0.5" vmode="climb"/>
|
||||
</block>
|
||||
<block name="landing_moment_noGPS">
|
||||
<call fun="nav_throttle_curve_set(1)" loop="false"/>
|
||||
<attitude pitch="0" roll="0" throttle="0.5" until="stage_time>2" vmode="throttle"/>
|
||||
<deroute block="landed"/>
|
||||
</block>
|
||||
<!-- Search for joe -->
|
||||
<block name="search_joe">
|
||||
<call fun="enableKalamosLandingspotSearch(false)" loop="false"/>
|
||||
<call fun="enableKalamosFindJoe(false)" loop="false"/>
|
||||
<call fun="enableKalamosDescent(false)" loop="false"/>
|
||||
<go precall="PrecallModeForward()" from="p9" hmode="route" wp="j1"/>
|
||||
<stay precall="PrecallModeHover()"wp="j1" until="stage_time>4"/>
|
||||
<call fun="enableKalamosFindJoe(true)" loop="false"/>
|
||||
<go precall="PrecallModeHover()" wp="j2" hmode="route" from="j1"/>
|
||||
<stay precall="PrecallModeHover()"wp="j2" until="stage_time>10"/>
|
||||
<call fun="enableKalamosFindJoe(false)" loop="false"/>
|
||||
<go precall="PrecallModeHover()" wp="LANDING"/>
|
||||
<stay precall="PrecallModeHover()"wp="LANDING" until="stage_time > 30"/>
|
||||
<deroute block="Do_vision_landing"/>
|
||||
</block>
|
||||
|
||||
<!-- Circle in case necessary, to be commanded by operator-->
|
||||
<block name="Circle_around">
|
||||
<go precall="PrecallModeForward()" from="j2" hmode="route" wp="j1"/>
|
||||
<go precall="PrecallModeForward()" from="j1" hmode="route" wp="j3"/>
|
||||
<go precall="PrecallModeForward()" from="j3" hmode="route" wp="j4"/>
|
||||
<go precall="PrecallModeForward()" from="j4" hmode="route" wp="j5"/>
|
||||
<go precall="PrecallModeForward()" from="j5" hmode="route" wp="j1"/>
|
||||
</block>
|
||||
|
||||
<!-- Vision based landing -->
|
||||
<block name="Do_vision_landing">
|
||||
<exception cond="6.0 > stateGetPositionEnu_f()->z" deroute="Descent_slow_remote"/>
|
||||
<call fun="enableKalamosFindJoe(false)" loop="false"/>
|
||||
<call fun="enableKalamosLandingspotSearch(false)" loop="false"/>
|
||||
<call fun="enableKalamosDescent(true)" loop="false"/>
|
||||
<stay precall="PrecallModeHover()"climb="land_cmd.z" vmode="climb" wp="LANDING"/>
|
||||
</block>
|
||||
<block name="Descent_slow_remote">
|
||||
<exception cond="((0.6 + fabs(stateGetNedToBodyEulers_f()->phi)/2) > k2p_package.height ) && (k2p_package.height > 0.0) && getKalamosReady()" deroute="landing_moment_remote"/>
|
||||
<exception cond="(fabs(stateGetNedToBodyEulers_f()->theta) > 0.6) && ( 2.5 > k2p_package.height) && (!(last_block==IndexOfBlock('Descent_pause_remote')))" deroute="Descent_pause_remote"/>
|
||||
<stay precall="PrecallModeHover()"climb="-0.5" vmode="climb" wp="LANDING"/>
|
||||
</block>
|
||||
<block name="Descent_pause_remote">
|
||||
<exception cond="(0.3 > fabs(stateGetNedToBodyEulers_f()->theta) )" deroute="Descent_slow_remote"/>
|
||||
<stay precall="PrecallModeHover()"climb="0.0" vmode="climb" wp="LANDING" until="stage_time>30"/>
|
||||
<deroute block="Descent_slow_remote"/>
|
||||
</block>
|
||||
<block name="landing_moment_remote">
|
||||
<call fun="nav_throttle_curve_set(1)" loop="false"/>
|
||||
<attitude pitch="0" roll="0" throttle="0.5" until="stage_time>2" vmode="throttle"/>
|
||||
<deroute block="landed"/>
|
||||
</block>
|
||||
<block name="landed">
|
||||
<call fun="NavKillThrottle()"/>
|
||||
<call fun="nav_throttle_curve_set(0)" loop="false"/>
|
||||
<set value="false" var="opa_controller_vision_power"/> <!-- Vision power off at remote landing -->
|
||||
<attitude pitch="0" roll="0" throttle="0" until="stage_time>5" vmode="throttle"/>
|
||||
</block>
|
||||
|
||||
<!-- Inert and wait minute -->
|
||||
<block name="inert">
|
||||
<call fun="NavKillThrottle()"/>
|
||||
<call fun="NavOpaDisarm(true)"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="stage_time>2" vmode="throttle"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="electrical.vsupply>220" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="wait_minute">
|
||||
<call fun="NavKillThrottle()"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="(stage_time>60) && GpsFixValid()" vmode="throttle"/>
|
||||
<deroute block="Start_Engine"/>
|
||||
</block>
|
||||
|
||||
<!-- Emergency modes -->
|
||||
<block name="GpsLoss">
|
||||
<!-- Less than 2 meters goto failsafe -->
|
||||
<exception cond="2.0 > stateGetPositionEnu_f()->z" deroute="landing_moment_noGPS"/>
|
||||
<!-- Deroute to hover here if below 20 meters and GPS fix becomes valid -->
|
||||
<exception cond="GpsFixValid() && (20.0 > stateGetPositionEnu_f()->z)" deroute="Hover_here"/>
|
||||
<!-- Goto descent without GPS after 20 seconds without GPS -->
|
||||
<exception cond="block_time>20" deroute="Descent_noGPS"/>
|
||||
<!-- Set throttle curve 1 (hover) and descend with vspeed -->
|
||||
<call fun="nav_throttle_curve_set(1)" loop="false"/>
|
||||
<attitude climb="nav_descend_vspeed" pitch="0" roll="0" until="GpsFixValid() && (stateGetPositionEnu_f()->z > 20.0)" vmode="climb"/>
|
||||
<!-- If GPS fix becomes valid and we are above 20 meters return to previous block -->
|
||||
<return reset_stage="1"/>
|
||||
</block>
|
||||
<block name="DatalinkLoss">
|
||||
<!-- If we have another 60 seconds datalink loss fly home through corridor -->
|
||||
<exception cond="block_time>120" deroute="line_p9_p8"/> <!-- fly back home -->
|
||||
<!-- If motor temperature becomes higher 100 degrees goto forwared and fly to home in corridor -->
|
||||
<exception cond="get_temp(1) > 100" deroute="line_p9_p8"/> <!-- fly back home -->
|
||||
<!-- Set Hover waypoint to current positions and set height -->
|
||||
<call fun="NavSetWaypointHere(WP_HOVER)" loop="false"/>
|
||||
<call fun="waypoint_set_alt(WP_HOVER,stateGetPositionEnu_f()->z + 20)" loop="false"/>
|
||||
<stay precall="PrecallModeHover()"wp="HOVER" until="60 > datalink_time"/>
|
||||
<!-- Return to previous block if datalink is OK -->
|
||||
<return reset_stage="1"/>
|
||||
<!-- if the function above did not work, keep in this block -->
|
||||
<stay precall="PrecallModeHover()"wp="HOVER"/>
|
||||
</block>
|
||||
<block name="failsafe">
|
||||
<!-- Ultimate KILL MODE -->
|
||||
<call fun="NavKillThrottle()"/>
|
||||
<call fun="NavSetFailsafe"/>
|
||||
<call fun="INTERMCU_SET_CMD_STATUS(INTERMCU_CMD_FAILSAFE)" loop="false"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
|
||||
</block>
|
||||
|
||||
</blocks>
|
||||
</procedure>
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "../../flight_plan.dtd">
|
||||
|
||||
<procedure>
|
||||
|
||||
<sectors>
|
||||
<sector name="MissionBoundary" color="yellow" type="dynamic">
|
||||
<corner name="_MB1"/>
|
||||
<corner name="_MB2"/>
|
||||
<corner name="_MB3"/>
|
||||
<corner name="_MB4"/>
|
||||
<corner name="_MB5"/>
|
||||
<corner name="_MB6"/>
|
||||
<corner name="_MB7"/>
|
||||
<corner name="_MB8"/>
|
||||
<corner name="_MB9"/>
|
||||
<corner name="_MB10"/>
|
||||
<corner name="_MB11"/>
|
||||
<corner name="_MB12"/>
|
||||
<corner name="_MB13"/>
|
||||
<corner name="_MB14"/>
|
||||
<corner name="_MB15"/>
|
||||
<corner name="_MB16"/>
|
||||
</sector>
|
||||
</sectors>
|
||||
|
||||
<!-- ****************************** EXCEPTIONS ***************************** -->
|
||||
<exceptions>
|
||||
<!-- RC-Loss -->
|
||||
<!-- Handled by FTD-Radio-Control -->
|
||||
|
||||
<!-- Datalink-Loss: -->
|
||||
<!-- Handled in Mission Navigation -->
|
||||
|
||||
<!-- GPS-Failure: -->
|
||||
<!-- Handled in Mission Navigation -->
|
||||
|
||||
<!-- Baro-Failure: -->
|
||||
<!-- Inform Operator, Fly lower, keep flying on GPS -->
|
||||
|
||||
<!-- Hard GeoFence -->
|
||||
<!-- TODO Maybe ADD aditional exception with 2 sec timer here just to be sure to avoid position GPS spikes or some other jitter issues -->
|
||||
<!--exception cond="((!InsideMissionBoundary(GetPosX(), GetPosY())) && gps_has_been_good()" deroute="GeoFence"/-->
|
||||
|
||||
<!-- Failure of Autopilot -->
|
||||
<!-- FTD will failsafe if no commands arrive during 100ms -->
|
||||
|
||||
<!-- Failure of Geofence detection processor -->
|
||||
<!-- FTD will failsafe if no heartbeat arrives from AP (with GPS) during 100ms -->
|
||||
|
||||
<!-- Soft Altitude GeoFence 2800ft MSL-->
|
||||
<!-- <exception cond="MoreThan(GetAmsl(), 2800) && gps_has_been_good()" deroute="AlmostHeightViolation" />-->
|
||||
|
||||
<!-- Hard Altitude GeoFence 3000ft MSL -->
|
||||
<!-- <exception cond="MoreThan(GetAmsl(), 3000) && gps_has_been_good()" deroute="HeightViolation" /-->
|
||||
|
||||
<!-- Case of loss of GPS AND loss of datalink -->
|
||||
<!-- exception cond="And(datalink_time > 10, !GpsFixValid())" deroute="DatalinkAndGpsFailure"/-->
|
||||
</exceptions>
|
||||
|
||||
<blocks>
|
||||
<!-- ******* Activate the irreversible Forced Crash Command to the Flight Termination Device ******** -->
|
||||
|
||||
<block name="GeoFence">
|
||||
<!--call fun="ForceCrash()"/-->
|
||||
<stay wp="STDBY"/>
|
||||
</block>
|
||||
|
||||
<block name="AlmostHeightViolation">
|
||||
<!--call fun="NavKillThrottle()"/-->
|
||||
<stay wp="STDBY"/>
|
||||
</block>
|
||||
|
||||
<block name="HeightViolation">
|
||||
<!--call fun="ForceCrash()"/-->
|
||||
<stay wp="STDBY"/>
|
||||
</block>
|
||||
|
||||
<block name="DatalinkAndGpsFailure">
|
||||
<!--call fun="ForceCrash()"/-->
|
||||
<stay wp="STDBY"/>
|
||||
</block>
|
||||
|
||||
<block name="ManualTerminateRequest" strip_button="FlightTermination" strip_icon="downdownend.png">
|
||||
<!--call fun="ForceCrash()"/-->
|
||||
<stay wp="STDBY"/>
|
||||
</block>
|
||||
|
||||
</blocks>
|
||||
</procedure>
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "../../flight_plan.dtd">
|
||||
|
||||
<flight_plan alt="423.8" ground_alt="343.8" home_mode_height="120" lat0="-27.273900" lon0="151.290039" max_dist_from_home="12038" name="OBC2016" qfu="170" security_height="10">
|
||||
<waypoints>
|
||||
<waypoint name="HOME" x="0" y="0"/>
|
||||
<waypoint lat="-27.274012" lon="151.290038" name="TD"/>
|
||||
<waypoint lat="-27.3581" lon="151.240624" name="REPORT_JOE"/>
|
||||
<waypoint lat="-27.358357" lon="151.239732" name="j1" height="40"/>
|
||||
<waypoint lat="-27.357885" lon="151.241427" name="j2" height="40"/>
|
||||
<waypoint lat="-27.360014" lon="151.240522" name="j3" height="40"/>
|
||||
<waypoint lat="-27.357827" lon="151.247775" name="j4" height="40"/>
|
||||
<waypoint lat="-27.356253" lon="151.246831" name="j5" height="40"/>
|
||||
<waypoint lat="-27.282360" lon="151.289117" name="intermediate_wp" height="50"/>
|
||||
<waypoint lat="-27.270220" lon="151.295874" name="_MB1"/>
|
||||
<waypoint lat="-27.279114" lon="151.294158" name="_MB2"/>
|
||||
<waypoint lat="-27.319091" lon="151.286441" name="_MB3"/>
|
||||
<waypoint lat="-27.317933" lon="151.278923" name="_MB4"/>
|
||||
<waypoint lat="-27.277956" lon="151.286643" name="_MB5"/>
|
||||
<waypoint lat="-27.277580" lon="151.284204" name="_MB6"/>
|
||||
<waypoint lat="-27.276210" lon="151.275317" name="_MB7"/>
|
||||
<waypoint lat="-27.325115" lon="151.257217" name="_MB8"/>
|
||||
<waypoint lat="-27.358508" lon="151.255387" name="_MB9"/>
|
||||
<waypoint lat="-27.361077" lon="151.246946" name="_MB10"/>
|
||||
<waypoint lat="-27.363744" lon="151.237290" name="_MB11"/>
|
||||
<waypoint lat="-27.355123" lon="151.234302" name="_MB12"/>
|
||||
<waypoint lat="-27.352455" lon="151.243958" name="_MB13"/>
|
||||
<waypoint lat="-27.350364" lon="151.250673" name="_MB14"/>
|
||||
<waypoint lat="-27.324265" lon="151.252104" name="_MB15"/>
|
||||
<waypoint lat="-27.266754" lon="151.273390" name="_MB16"/>
|
||||
<waypoint lat="-27.268686" lon="151.285921" name="_MB17"/>
|
||||
<waypoint lat="-27.273826" lon="151.290156" name="p1" height="60"/>
|
||||
<waypoint lat="-27.316738" lon="151.281871" name="p2" height="120"/>
|
||||
<waypoint lat="-27.317045" lon="151.283862" name="p3" height="120"/>
|
||||
<waypoint lat="-27.278580" lon="151.291288" name="p4" height="120"/>
|
||||
<waypoint lat="-27.273606" lon="151.290506" name="p5" height="120"/>
|
||||
<waypoint lat="-27.271136" lon="151.274482" name="p6" height="120"/>
|
||||
<waypoint lat="-27.324690" lon="151.254661" name="p7" height="120"/>
|
||||
<waypoint lat="-27.354436" lon="151.253030" name="p8" height="120"/>
|
||||
<waypoint lat="-27.358100" lon="151.240624" name="p9" height="50"/>
|
||||
</waypoints>
|
||||
<sectors>
|
||||
<sector color="red" name="Safety" type="dynamic">
|
||||
<corner name="_MB1"/>
|
||||
<corner name="_MB2"/>
|
||||
<corner name="_MB3"/>
|
||||
<corner name="_MB4"/>
|
||||
<corner name="_MB5"/>
|
||||
<corner name="_MB6"/>
|
||||
<corner name="_MB7"/>
|
||||
<corner name="_MB8"/>
|
||||
<corner name="_MB9"/>
|
||||
<corner name="_MB10"/>
|
||||
<corner name="_MB11"/>
|
||||
<corner name="_MB12"/>
|
||||
<corner name="_MB13"/>
|
||||
<corner name="_MB14"/>
|
||||
<corner name="_MB15"/>
|
||||
<corner name="_MB16"/>
|
||||
<corner name="_MB17"/>
|
||||
</sector>
|
||||
</sectors>
|
||||
<modules>
|
||||
<module name="nav" type="heli_spinup"/>
|
||||
</modules>
|
||||
<includes>
|
||||
<include name="Mission" procedure="include_obc2016_mission.xml"/>
|
||||
</includes>
|
||||
<blocks>
|
||||
<block name="Boot"/>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
@@ -1,31 +0,0 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "../flight_plan.dtd">
|
||||
|
||||
<flight_plan alt="2" ground_alt="0" lat0="43 33 50.83" lon0="1 28 52.61" max_dist_from_home="150" name="Rotorcraft Basic (Enac)" security_height="2">
|
||||
<header>
|
||||
#include "autopilot.h"
|
||||
</header>
|
||||
<waypoints>
|
||||
<waypoint name="HOME" x="0.0" y="0.0"/>
|
||||
<waypoint name="CLIMB" x="0.0" y="5.0"/>
|
||||
<waypoint name="STDBY" x="-2.0" y="-5.0"/>
|
||||
<waypoint name="p1" x="3.6" y="-13.9"/>
|
||||
<waypoint name="p2" x="27.5" y="-48.2"/>
|
||||
<waypoint name="p3" x="16.7" y="-19.6"/>
|
||||
<waypoint name="p4" x="13.7" y="-40.7"/>
|
||||
<waypoint name="CAM" x="-20" y="-50" height="2."/>
|
||||
<waypoint name="TD" x="5.6" y="-10.9"/>
|
||||
</waypoints>
|
||||
<blocks>
|
||||
<block name="Wait GPS">
|
||||
<call_once fun="NavKillThrottle()"/>
|
||||
<while cond="!GpsFixValid()"/>
|
||||
</block>
|
||||
<block name="Geo init">
|
||||
<while cond="LessThan(NavBlockTime(), 10)"/>
|
||||
<call_once fun="NavSetGroundReferenceHere()"/>
|
||||
</block>
|
||||
<block name="avoid">
|
||||
<attitude pitch="(ref_pitch)" roll="(ref_roll)" alt="2.5" vmode="alt" until="FALSE"/>
|
||||
</block>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
@@ -1,31 +0,0 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "../flight_plan.dtd">
|
||||
|
||||
<flight_plan alt="152" ground_alt="147" lat0="51.2788881" lon0="4.4135337" max_dist_from_home="150" name="Rotorcraft Survey Antwerpen" security_height="2">
|
||||
|
||||
<waypoints>
|
||||
<waypoint name="HOME" x="-8.9" y="21.1"/>
|
||||
<waypoint name="CLIMB" x="-11.9" y="20.1"/>
|
||||
<waypoint name="STDBY" x="-14.4" y="21.6"/>
|
||||
<waypoint name="p1" x="-3.2" y="17.7"/>
|
||||
<waypoint name="p2" x="-31.8" y="38.5"/>
|
||||
<waypoint name="p3" x="-26.6" y="14.0"/>
|
||||
<waypoint name="p4" x="-20.4" y="37.2"/>
|
||||
<waypoint name="CAM" x="-44.3" y="-9.5"/>
|
||||
<waypoint name="TD" x="-9.5" y="14.8"/>
|
||||
<waypoint name="S1" height="30" x="-57.6" y="32.8"/>
|
||||
<waypoint name="S2" height="30" x="17.3" y="19.4"/>
|
||||
<waypoint name="p1" x="-3.2" y="17.7"/>
|
||||
<waypoint name="p2" x="-31.8" y="38.5"/>
|
||||
<waypoint name="raceA" x="-3.2" y="17.7"/>
|
||||
<waypoint name="raceB" x="-31.8" y="38.5"/>
|
||||
</waypoints>
|
||||
|
||||
<includes>
|
||||
<include name="Mission" procedure="rotorcraft_survey_mission.xml"/>
|
||||
</includes>
|
||||
|
||||
<blocks>
|
||||
<block name="Dummy"/>
|
||||
</blocks>
|
||||
|
||||
</flight_plan>
|
||||
@@ -1,68 +0,0 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "../flight_plan.dtd">
|
||||
|
||||
<flight_plan alt="175" ground_alt="160" lat0="50.692111" lon0="5.820278" max_dist_from_home="150" name="Survey-Drop-Race" security_height="2">
|
||||
<waypoints>
|
||||
<waypoint name="HOME" x="29.1" y="12.0"/>
|
||||
<waypoint name="CLIMB" x="-32.4" y="-36.2"/>
|
||||
<waypoint name="STDBY" x="34.8" y="0.3"/>
|
||||
<waypoint name="raceA" x="14.5" y="-24.7"/>
|
||||
<waypoint name="raceB" x="52.8" y="-12.7"/>
|
||||
<waypoint name="WG" x="40.0" y="16.7"/>
|
||||
<waypoint name="WD" x="33.9" y="-10.8"/>
|
||||
<waypoint name="DROP" x="27.6" y="16.9"/>
|
||||
<waypoint name="RZ1" x="27.6" y="16.9"/>
|
||||
<waypoint name="RZ2" x="35.5" y="-15.4"/>
|
||||
<waypoint name="RZ3" x="42.6" y="-12.6"/>
|
||||
<waypoint name="FC" x="28.7" y="-18.8"/>
|
||||
<waypoint name="S1" x="-13.2" y="-1.7"/>
|
||||
<waypoint name="S2" x="54.0" y="27.6"/>
|
||||
<waypoint name="S3" x="87.9" y="-36.2"/>
|
||||
<waypoint name="S4" x="21.8" y="-69.6"/>
|
||||
<waypoint name="p1" x="10.9" y="-24.1"/>
|
||||
<waypoint name="p2" x="53.6" y="-9.7"/>
|
||||
<waypoint name="p3" x="55.3" y="-14.0"/>
|
||||
<waypoint name="p4" x="12.6" y="-27.8"/>
|
||||
<waypoint name="CAM" x="-31.6" y="-44.0"/>
|
||||
<waypoint name="CRUISE" x="-31.6" y="-39.9"/>
|
||||
<waypoint height="15" name="TD" x="32.4" y="7.0"/>
|
||||
<waypoint height="15" x="0" y="0" name="ETD"/>
|
||||
<waypoint name="_red1" x="94.0" y="133.0"/>
|
||||
<waypoint name="_red2" x="171.4" y="-26.2"/>
|
||||
<waypoint name="_red3" x="-32.5" y="-127.4"/>
|
||||
<waypoint name="_red4" x="-106.7" y="49.5"/>
|
||||
<waypoint name="_green1A" x="-56.1" y="58.5"/>
|
||||
<waypoint name="_green1B" x="-63.6" y="84.0"/>
|
||||
<waypoint name="_green1C" x="-38.6" y="91.2"/>
|
||||
<waypoint name="_green1D" x="-28.1" y="68.8"/>
|
||||
<waypoint name="_green2A" x="-23.9" y="-102.5"/>
|
||||
<waypoint name="_green2B" x="-77.1" y="30.9"/>
|
||||
<waypoint name="_green2C" x="86.6" y="101.4"/>
|
||||
<waypoint name="_green2D" x="146.0" y="-30.7"/>
|
||||
</waypoints>
|
||||
<sectors>
|
||||
<sector color="red" name="RED">
|
||||
<corner name="_red1"/>
|
||||
<corner name="_red2"/>
|
||||
<corner name="_red3"/>
|
||||
<corner name="_red4"/>
|
||||
</sector>
|
||||
<sector color="green" name="GREEN1">
|
||||
<corner name="_green1A"/>
|
||||
<corner name="_green1B"/>
|
||||
<corner name="_green1C"/>
|
||||
<corner name="_green1D"/>
|
||||
</sector>
|
||||
<sector color="green" name="GREEN2">
|
||||
<corner name="_green2A"/>
|
||||
<corner name="_green2B"/>
|
||||
<corner name="_green2C"/>
|
||||
<corner name="_green2D"/>
|
||||
</sector>
|
||||
</sectors>
|
||||
<includes>
|
||||
<include name="Mission" procedure="rotorcraft_survey_mission.xml"/>
|
||||
</includes>
|
||||
<blocks>
|
||||
<block name="Dummy"/>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
@@ -72,7 +72,7 @@
|
||||
</sector>
|
||||
</sectors>
|
||||
<includes>
|
||||
<include name="Mission" procedure="rotorcraft_survey_mission.xml"/>
|
||||
<include name="Mission" procedure="include_rotorcraft_survey_mission.xml"/>
|
||||
</includes>
|
||||
<blocks>
|
||||
<block name="Dummy"/>
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
</sector>
|
||||
</sectors>
|
||||
<includes>
|
||||
<include name="Mission" procedure="rotorcraft_survey_mission.xml"/>
|
||||
<include name="Mission" procedure="include_rotorcraft_survey_mission.xml"/>
|
||||
</includes>
|
||||
<blocks>
|
||||
<block name="Dummy"/>
|
||||
|
||||
@@ -1,198 +0,0 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "flight_plan.dtd">
|
||||
|
||||
<flight_plan alt="260" ground_alt="185" lat0="43.4622" lon0="1.2729" max_dist_from_home="1500" name="Versatile" qfu="270" security_height="25" home_mode_height="50" geofence_max_alt="300" geofence_sector="Airspace">
|
||||
<header>
|
||||
#include "subsystems/datalink/datalink.h"
|
||||
</header>
|
||||
<waypoints>
|
||||
<waypoint name="HOME" x="0" y="0"/>
|
||||
<waypoint name="STDBY" x="20" y="80"/>
|
||||
<waypoint name="1" x="44.8" y="102.2"/>
|
||||
<waypoint name="2" x="-63.5" y="122.9"/>
|
||||
<waypoint name="MOB" x="-11.5" y="-21.2"/>
|
||||
<waypoint name="S1" x="-151.6" y="80.4"/>
|
||||
<waypoint name="S2" x="180.1" y="214.9"/>
|
||||
<waypoint alt="215.0" name="AF" x="200" y="-10"/>
|
||||
<waypoint alt="185.0" name="TD" x="80.0" y="20.0"/>
|
||||
<waypoint name="BASELEG" x="26.9" y="-23.0"/>
|
||||
<waypoint name="_1" x="-100" y="0"/>
|
||||
<waypoint name="_2" x="-100" y="200"/>
|
||||
<waypoint name="_3" x="100" y="200"/>
|
||||
<waypoint name="_4" x="100" y="0"/>
|
||||
<waypoint name="_A1" x="500" y="500"/>
|
||||
<waypoint name="_A2" x="500" y="-500"/>
|
||||
<waypoint name="_A3" x="-500" y="-500"/>
|
||||
<waypoint name="_A4" x="-500" y="500"/>
|
||||
<waypoint name="CLIMB" x="-122.5" y="35.4"/>
|
||||
</waypoints>
|
||||
<sectors>
|
||||
<sector name="Square">
|
||||
<corner name="_1"/>
|
||||
<corner name="_2"/>
|
||||
<corner name="_3"/>
|
||||
<corner name="_4"/>
|
||||
</sector>
|
||||
<sector name="Airspace">
|
||||
<corner name="_A1"/>
|
||||
<corner name="_A2"/>
|
||||
<corner name="_A3"/>
|
||||
<corner name="_A4"/>
|
||||
</sector>
|
||||
</sectors>
|
||||
<variables>
|
||||
<variable var="roll_step" init="15." min="0." max="50." step="1.0"/>
|
||||
</variables>
|
||||
<exceptions/>
|
||||
<blocks>
|
||||
<block name="Wait GPS">
|
||||
<set value="1" var="autopilot.kill_throttle"/>
|
||||
<while cond="!GpsFixValid()"/>
|
||||
</block>
|
||||
<block name="Geo init">
|
||||
<while cond="LessThan(NavBlockTime(), 10)"/>
|
||||
<call_once fun="NavSetGroundReferenceHere()"/>
|
||||
<!--call_once fun="NavSetAltitudeReferenceHere()"/-->
|
||||
</block>
|
||||
<block name="Holding point">
|
||||
<set value="1" var="autopilot.kill_throttle"/>
|
||||
<attitude roll="0" throttle="0" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Takeoff" strip_icon="takeoff.png" strip_button="Takeoff (wp CLIMB)">
|
||||
<exception cond="GetPosAlt() > GetAltRef()+25" deroute="Standby"/>
|
||||
<set value="0" var="autopilot.kill_throttle"/>
|
||||
<go wp="CLIMB"/>
|
||||
</block>
|
||||
<block name="Standby" strip_button="Standby" strip_icon="home.png">
|
||||
<circle radius="nav_radius" wp="STDBY"/>
|
||||
</block>
|
||||
<block name="Line 1-2" strip_button="Line (wp 1-2)" strip_icon="line.png" group="extra_pattern">
|
||||
<call_once fun="nav_line_setup()"/>
|
||||
<call fun="nav_line_run(WP_1, WP_2, nav_radius)"/>
|
||||
</block>
|
||||
<block name="Figure 8 around wp 1" strip_button="Figure 8 (wp 1-2)" strip_icon="eight.png">
|
||||
<eight center="1" radius="nav_radius" turn_around="2"/>
|
||||
</block>
|
||||
<block name="Oval 1-2" strip_button="Oval (wp 1-2)" strip_icon="oval.png">
|
||||
<oval p1="1" p2="2" radius="nav_radius"/>
|
||||
</block>
|
||||
<block name="MOB" strip_button="Circle around here" strip_icon="mob.png">
|
||||
<call_once fun="NavSetWaypointHere(WP_MOB)"/>
|
||||
<circle radius="100" wp="MOB"/>
|
||||
</block>
|
||||
<block name="Auto pitch (circle wp 1)">
|
||||
<circle pitch="auto" radius="75" throttle="0.7" wp="1"/>
|
||||
</block>
|
||||
<block name="Climb 75% throttle">
|
||||
<circle pitch="10" radius="50+(GetPosAlt()-GetAltRef())/2" throttle="0.75" until="(10 > PowerVoltage()) || (GetPosAlt() > GetAltRef()+ 1350)" vmode="throttle" wp="1"/>
|
||||
</block>
|
||||
<block name="Climb 0m/s">
|
||||
<circle climb="0" radius="nav_radius" until="10 > PowerVoltage()" vmode="climb" wp="1"/>
|
||||
</block>
|
||||
<block name="Climb 1m/s">
|
||||
<circle climb="1" pitch="5" radius="50+(GetPosAlt()-GetAltRef())/2" until="10 > PowerVoltage()" vmode="climb" wp="1"/>
|
||||
</block>
|
||||
<block name="Climb nav_climb m/s">
|
||||
<circle climb="nav_climb" radius="nav_radius" until="(10 > PowerVoltage()) || (GetPosAlt() > GetAltRef()+ 1350)" vmode="climb" wp="1"/>
|
||||
</block>
|
||||
|
||||
<block name="Circle 0% throttle">
|
||||
<circle pitch="fp_pitch" radius="nav_radius" throttle="0.0" until="GetAltRef()+50 > GetPosAlt()" vmode="throttle" wp="1"/>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
|
||||
<block name="Oval 0% throttle">
|
||||
<oval p1="1" p2="2" pitch="fp_pitch" radius="nav_radius" throttle="0.0" until="GetAltRef()+50 > GetPosAlt()" vmode="throttle"/>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
|
||||
|
||||
<block name="Route 1-2">
|
||||
<go approaching_time="0" from="1" hmode="route" wp="2"/>
|
||||
</block>
|
||||
<block name="Stack wp 2">
|
||||
<circle radius="75" wp="2"/>
|
||||
</block>
|
||||
<block name="Route 2-1">
|
||||
<go approaching_time="0" from="2" hmode="route" wp="1"/>
|
||||
</block>
|
||||
<block name="Stack wp 1">
|
||||
<circle radius="75" wp="1"/>
|
||||
</block>
|
||||
<block name="Glide 1-2">
|
||||
<go from="1" hmode="route" vmode="glide" wp="2"/>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
<block name="Survey S1-S2" strip_button="Survey (wp S1-S2)" strip_icon="survey.png">
|
||||
<survey_rectangle grid="150" wp1="S1" wp2="S2"/>
|
||||
</block>
|
||||
<block name="Land Right AF-TD" strip_button="Land right (wp AF-TD)" strip_icon="land-right.png">
|
||||
<set value="DEFAULT_CIRCLE_RADIUS" var="nav_radius"/>
|
||||
<deroute block="land"/>
|
||||
</block>
|
||||
<block name="Land Left AF-TD" strip_button="Land left (wp AF-TD)" strip_icon="land-left.png">
|
||||
<set value="-DEFAULT_CIRCLE_RADIUS" var="nav_radius"/>
|
||||
<deroute block="land"/>
|
||||
</block>
|
||||
<block name="land">
|
||||
<call_once fun="nav_compute_baseleg(WP_AF, WP_TD, WP_BASELEG, nav_radius)"/>
|
||||
<circle radius="nav_radius" until="NavCircleCount() > 0.5" wp="BASELEG"/>
|
||||
<set value="V_CTL_AUTO_THROTTLE_MIN_CRUISE_THROTTLE" var="v_ctl_auto_throttle_cruise_throttle"/>
|
||||
<circle radius="nav_radius" until="NavQdrCloseTo(DegOfRad(baseleg_out_qdr)-(nav_radius/fabs(nav_radius))*10) && 10 > fabs(GetPosAlt() - WaypointAlt(WP_BASELEG))" wp="BASELEG"/>
|
||||
</block>
|
||||
<block name="final">
|
||||
<exception cond="GetAltRef() + 10 > GetPosAlt()" deroute="flare"/>
|
||||
<go from="AF" hmode="route" vmode="glide" wp="TD"/>
|
||||
</block>
|
||||
<block name="flare">
|
||||
<go approaching_time="0" from="AF" hmode="route" throttle="0.0" vmode="throttle" wp="TD"/>
|
||||
<attitude roll="0.0" throttle="0.0" until="FALSE" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Steps roll -10, +10">
|
||||
<while cond="TRUE">
|
||||
<attitude alt="250" roll="10.0" until=" stage_time > 6" vmode="alt"/>
|
||||
<attitude alt="250" roll="-10.0" until="stage_time > 6" vmode="alt"/>
|
||||
</while>
|
||||
</block>
|
||||
<block name="Steps roll -20, +20">
|
||||
<while cond="TRUE">
|
||||
<attitude alt="250" roll="20.0" until=" stage_time > 3" vmode="alt"/>
|
||||
<attitude alt="250" roll="-20.0" until="stage_time > 3" vmode="alt"/>
|
||||
</while>
|
||||
</block>
|
||||
<block name="Steps roll from var">
|
||||
<while cond="TRUE">
|
||||
<attitude alt="250" roll="roll_step" until=" stage_time > 3" vmode="alt"/>
|
||||
<attitude alt="250" roll="-roll_step" until="stage_time > 3" vmode="alt"/>
|
||||
</while>
|
||||
</block>
|
||||
<block name="Steps pitch -10, +10">
|
||||
<while cond="TRUE">
|
||||
<attitude alt="250" pitch="10" roll="0.0" until=" stage_time > 2" vmode="alt"/>
|
||||
<attitude alt="250" pitch="-10" roll="0.0" until=" stage_time > 2" vmode="alt"/>
|
||||
</while>
|
||||
</block>
|
||||
<block name="Heading 30">
|
||||
<heading alt="GetAltRef()+50" course="30" until="FALSE"/>
|
||||
</block>
|
||||
<block name="For loop (circles wp 1)">
|
||||
<for from="0" to="3" var="i">
|
||||
<circle radius="DEFAULT_CIRCLE_RADIUS+ $i*10" wp="1" until="NavCircleCount() > 1"/>
|
||||
</for>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
<block name="Test datalink (go to wp 2)">
|
||||
<exception cond="datalink_time > 22" deroute="Standby"/>
|
||||
<go from="STDBY" hmode="route" wp="2"/>
|
||||
<go from="2" hmode="route" wp="STDBY"/>
|
||||
</block>
|
||||
<block name="Fly in Square">
|
||||
<exception cond="! InsideSquare(GetPosX(), GetPosY())" deroute="Come back wp 1"/>
|
||||
<attitude alt="GetAltRef()+75" roll="0" vmode="alt"/>
|
||||
</block>
|
||||
<block name="Come back wp 1">
|
||||
<exception cond="InsideSquare(GetPosX(), GetPosY())" deroute="Fly in Square"/>
|
||||
<go wp="1"/>
|
||||
<deroute block="Fly in Square"/>
|
||||
</block>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
@@ -22,17 +22,6 @@
|
||||
settings_modules="modules/video_rtp_stream.xml modules/geo_mag.xml modules/air_data.xml modules/gps_ubx_ucenter.xml modules/ins_extended.xml modules/ahrs_int_cmpl_quat.xml modules/stabilization_int_quat.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="#ffffd633d633"
|
||||
/>
|
||||
<aircraft
|
||||
name="ARDrone2_flip"
|
||||
ac_id="14"
|
||||
airframe="airframes/tudelft/ardrone2_flip.xml"
|
||||
radio="radios/dummy.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/rotorcraft_basic.xml"
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="modules/air_data.xml modules/ins_extended.xml modules/ahrs_int_cmpl_quat.xml modules/stabilization_indi_simple.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="#ffffcd49cd49"
|
||||
/>
|
||||
<aircraft
|
||||
name="ARDrone2_indi"
|
||||
ac_id="13"
|
||||
@@ -66,17 +55,6 @@
|
||||
settings_modules="modules/ins_extended.xml modules/ahrs_int_cmpl_quat.xml modules/stabilization_indi_simple.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="#fffff996b847"
|
||||
/>
|
||||
<aircraft
|
||||
name="Ardrone2_182"
|
||||
ac_id="182"
|
||||
airframe="airframes/tudelft/IMAV2013/ardrone2.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/rotorcraft_basic.xml"
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="modules/time_countdown.xml modules/gps_ubx_ucenter.xml modules/ins_extended.xml modules/ahrs_int_cmpl_quat.xml modules/stabilization_int_quat.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="red"
|
||||
/>
|
||||
<aircraft
|
||||
name="BebopMavlink"
|
||||
ac_id="9"
|
||||
@@ -258,7 +236,7 @@
|
||||
settings="settings/rotorcraft_basic.xml settings/modules/config_asctec_v2.xml"
|
||||
settings_modules="modules/geo_mag.xml modules/nav_survey_poly_rotorcraft.xml modules/nav_survey_rectangle_rotorcraft.xml modules/gps_ubx_ucenter.xml modules/switch_servo.xml modules/ahrs_float_mlkf.xml modules/stabilization_int_quat.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="blue"
|
||||
release="46b814ea46496cfc3f6a874bb5013db1a350bfcf"
|
||||
release="33e02c9f1e831cb30ba9dc442e055b6e28c72a52"
|
||||
/>
|
||||
<aircraft
|
||||
name="MAVTec4_Bart"
|
||||
@@ -281,17 +259,7 @@
|
||||
settings="settings/rotorcraft_basic.xml settings/modules/config_asctec_v2.xml"
|
||||
settings_modules="modules/gps_ubx_ucenter.xml modules/switch_servo.xml [modules/air_data.xml] [modules/geo_mag.xml] modules/ahrs_int_cmpl_quat.xml modules/stabilization_indi_simple.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="#8c63ffff8e00"
|
||||
/>
|
||||
<aircraft
|
||||
name="MavRick_LisaS"
|
||||
ac_id="131"
|
||||
airframe="airframes/tudelft/IMAV2013/mavrick_lisa_s.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_fixedwing_imu.xml"
|
||||
flight_plan="flight_plans/basic.xml"
|
||||
settings="settings/fixedwing_basic.xml"
|
||||
settings_modules="modules/gps_ubx_ucenter.xml modules/gps.xml modules/nav_basic_fw.xml modules/guidance_basic_fw.xml modules/stabilization_attitude_fw.xml modules/ahrs_float_dcm.xml modules/imu_common.xml modules/radio_control_superbitrf_rc.xml"
|
||||
gui_color="white"
|
||||
release="33e02c9f1e831cb30ba9dc442e055b6e28c72a52"
|
||||
/>
|
||||
<aircraft
|
||||
name="MentorEnergy"
|
||||
@@ -317,17 +285,6 @@
|
||||
gui_color="blue"
|
||||
release="f739a81cfa2c633e33f31ab5f095d8f617276974"
|
||||
/>
|
||||
<aircraft
|
||||
name="Quadrotor_LisaS"
|
||||
ac_id="132"
|
||||
airframe="airframes/examples/quadrotor_lisa_s.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/rotorcraft_basic.xml"
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="modules/ahrs_int_cmpl_quat.xml modules/stabilization_int_quat.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml modules/radio_control_superbitrf_rc.xml modules/gps_ubx_ucenter.xml"
|
||||
gui_color="blue"
|
||||
/>
|
||||
<aircraft
|
||||
name="Robird"
|
||||
ac_id="68"
|
||||
@@ -440,17 +397,6 @@
|
||||
settings_modules="modules/gps_ubx_ucenter.xml modules/air_data.xml modules/geo_mag.xml modules/ins_extended.xml modules/ahrs_int_cmpl_quat.xml modules/stabilization_indi.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="#baa3d698b729"
|
||||
/>
|
||||
<aircraft
|
||||
name="bebop2_23"
|
||||
ac_id="23"
|
||||
airframe="airframes/tudelft/bebop2_indi_MAVlink.xml"
|
||||
radio="radios/dummy.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/rotorcraft_basic.xml"
|
||||
settings="settings/rotorcraft_basic.xml settings/estimation/ahrs_secondary.xml"
|
||||
settings_modules="modules/gps_ubx_ucenter.xml modules/air_data.xml modules/geo_mag.xml modules/ins_extended.xml modules/ahrs_int_cmpl_quat.xml modules/stabilization_indi_simple.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="#f6d5baaaffff"
|
||||
/>
|
||||
<aircraft
|
||||
name="bebop2_detect_gate_front"
|
||||
ac_id="218"
|
||||
@@ -529,17 +475,6 @@
|
||||
settings_modules="modules/digital_cam_video.xml modules/video_capture.xml modules/nav_survey_poly_rotorcraft.xml [modules/nav_survey_rectangle_rotorcraft.xml] modules/video_rtp_stream.xml modules/cv_blob_locator.xml modules/air_data.xml [modules/geo_mag.xml] modules/ins_extended.xml modules/ahrs_int_cmpl_quat.xml modules/ahrs_float_mlkf.xml modules/stabilization_indi_simple.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="#68f5eb116e0c"
|
||||
/>
|
||||
<aircraft
|
||||
name="frog_flip"
|
||||
ac_id="4"
|
||||
airframe="airframes/BR/bebop_indi_frog_flip.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/dummy.xml"
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="modules/video_rtp_stream.xml modules/air_data.xml modules/geo_mag.xml modules/ins_extended.xml modules/ahrs_int_cmpl_quat.xml modules/ahrs_float_mlkf.xml modules/stabilization_indi_simple.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="#b777d813cd0b"
|
||||
/>
|
||||
<aircraft
|
||||
name="mavshot"
|
||||
ac_id="5"
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="modules/video_rtp_stream.xml modules/cv_colorfilter.xml modules/air_data.xml modules/ins_extended.xml modules/ahrs_int_cmpl_quat.xml modules/stabilization_indi_simple.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="white"
|
||||
release="593ed974ecf1a78f2eb2b0168a6fa0c93fad8259"
|
||||
release="5e3b6247cc7e2770162bf215b8f427eac58fbdaf"
|
||||
/>
|
||||
</conf>
|
||||
|
||||
@@ -20,5 +20,6 @@
|
||||
settings="settings/rotorcraft_basic.xml settings/control/stabilization_att_int.xml"
|
||||
settings_modules="modules/logger_sd_spi_direct.xml modules/ahrs_int_cmpl_quat.xml modules/stabilization_int_euler.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="blue"
|
||||
release="bd49f8763f106f69dc87ad735c8bd6ff277a3f62"
|
||||
/>
|
||||
</conf>
|
||||
|
||||
Reference in New Issue
Block a user