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:
Christophe De Wagter
2019-02-27 14:53:09 +01:00
committed by Gautier Hattenberger
parent 27c12a5dc6
commit e7df04620b
40 changed files with 13 additions and 6527 deletions
-227
View File
@@ -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>
+2 -2
View File
@@ -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>
+1
View File
@@ -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"
-251
View File
@@ -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>
-212
View File
@@ -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>
-214
View File
@@ -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>
+3 -2
View File
@@ -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"/>
-212
View File
@@ -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>
-232
View File
@@ -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>
-219
View File
@@ -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>
-200
View File
@@ -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>
-219
View File
@@ -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>
-224
View File
@@ -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>
-291
View File
@@ -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"/>
-198
View File
@@ -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>
+2 -67
View File
@@ -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"
+1 -1
View File
@@ -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>
+1
View File
@@ -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>