mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-20 11:28:58 +08:00
[cleaning] removing some old stuff (#2696)
* [cleaning] removing some old stuff - infrared sensors and related ahrs - mkk and asctec actuators - old carto modules - fix bebop actuators for NPS - clean airframe and conf * [conf] add back asctec_v2 actuators that is still being used
This commit is contained in:
committed by
GitHub
parent
4c1785d00b
commit
addc8d051c
@@ -11,15 +11,4 @@
|
||||
gui_color="white"
|
||||
release="33e02c9f1e831cb30ba9dc442e055b6e28c72a52"
|
||||
/>
|
||||
<aircraft
|
||||
name="TriCopter"
|
||||
ac_id="1"
|
||||
airframe="airframes/CDW/cdw_tricopter.xml"
|
||||
radio="radios/R6107SP_7ch.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/rotorcraft_basic.xml"
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="modules/ahrs_int_cmpl_euler.xml modules/configure_actuators_mkk_v2.xml modules/gps.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_quality_assessment.xml modules/nav_basic_rotorcraft.xml modules/stabilization_int_euler.xml"
|
||||
gui_color="blue"
|
||||
/>
|
||||
</conf>
|
||||
|
||||
@@ -1,201 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!--
|
||||
|
||||
Tricopter Frame, MKK2 BLDC x3 + Servo x1, Lisa-m-2.
|
||||
|
||||
http://www.robbe.de/roxxy-bl-outrunner-2827-34.html
|
||||
|
||||
Technische Daten
|
||||
|
||||
Abmessungen: Ø 28 x 29 mm
|
||||
Freie Wellenlänge: 12.5 mm
|
||||
Laststrom (5min/120°C): 9 A
|
||||
Umdrehung / Volt: 760 Umin/V
|
||||
Max.Wirkungsgrad: 76 %
|
||||
Laststrom max. (60 Sek.): 10 A
|
||||
Zellenzahl: 6-10 NC/NiMH
|
||||
Leistung: 110 W
|
||||
Wellendurchmesser: 3.17 mm
|
||||
Spannung: 12.6 Volt
|
||||
LiPo/LiIo-Zellen: 3
|
||||
|
||||
-->
|
||||
|
||||
<airframe name="CDW_TriCopter">
|
||||
<!-- ************************* FIRMWARE ************************* -->
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_m_2.0">
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_FLAPS"/>
|
||||
<define name="USE_KILL_SWITCH_FOR_MOTOR_ARMING" value="1"/>
|
||||
<define name="USE_ATTITUDE_REF" value="1" />
|
||||
<define name="AHRS_PROPAGATE_LOW_PASS_RATES" value="1" />
|
||||
</target>
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="xbee_api"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="mkk_v2"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="USE_PWM0"/>
|
||||
</module>
|
||||
<module name="imu" type="aspirin_v2.1"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_euler"/>
|
||||
<module name="ahrs" type="int_cmpl_euler"/>
|
||||
<module name="ins" type="hff"/>
|
||||
|
||||
<module name="configure_actuators_mkk_v2"/>
|
||||
<module name="imu_quality_assessment"/>
|
||||
|
||||
</firmware>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_RC_CLIMB"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_ATTITUDE_Z_HOLD"/>
|
||||
</section>
|
||||
|
||||
|
||||
<!-- ************************* ACTUATORS ************************* -->
|
||||
|
||||
<section name="ACTUATORS_MKK_V2" prefix="ACTUATORS_MKK_V2_">
|
||||
<define name="NB" value="3"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x56, 0x54 }"/>
|
||||
<define name="I2C_DEV" value="i2c1"/>
|
||||
</section>
|
||||
|
||||
<servos driver="Mkk_v2">
|
||||
<servo name="FRONTRIGHT" no="0" min="0" neutral="30" max="2047"/>
|
||||
<servo name="FRONTLEFT" no="1" min="0" neutral="30" max="2047"/>
|
||||
<servo name="BACK" no="2" min="0" neutral="30" max="2047"/>
|
||||
</servos>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="TAIL" no="0" min="1000" neutral="1500" max="2000"/>
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="YAW" failsafe_value="0"/>
|
||||
<axis name="THRUST" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<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="3"/>
|
||||
<define name="SCALE" value="2048"/>
|
||||
<define name="ROLL_COEF" value="{ 2048, -2048, 0}"/>
|
||||
<define name="PITCH_COEF" value="{ 1024, 1024, -2048}"/>
|
||||
<define name="YAW_COEF" value="{ 0, 0, 0}"/>
|
||||
<define name="THRUST_COEF" value="{ 2048, 2048, 2048}"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="FRONTRIGHT" value="motor_mixing.commands[0]"/>
|
||||
<set servo="FRONTLEFT" value="motor_mixing.commands[1]"/>
|
||||
<set servo="BACK" value="motor_mixing.commands[2]"/>
|
||||
<set servo="TAIL" value="@YAW"/>
|
||||
</command_laws>
|
||||
|
||||
<!-- ************************* SENSORS ************************* -->
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="MAG_X_NEUTRAL" value="-152"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-51"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="10"/>
|
||||
<define name="MAG_X_SENS" value="4.04042714046" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.95350991963" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.83055079257" 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>
|
||||
|
||||
<!-- 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="AHRS" >
|
||||
<define name="ACCEL_OMEGA" value="0.0063" />
|
||||
<define name="MAG_OMEGA" value="0.004" />
|
||||
</section -->
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
<!-- ************************* GAINS ************************* -->
|
||||
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_PHI" value="55." unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="55." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="360." 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.9"/>
|
||||
<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.9"/>
|
||||
<define name="REF_MAX_Q" value="300." unit="deg/s"/>
|
||||
<define name="REF_MAX_QDOT" value="RadOfDeg(7000.)"/>
|
||||
<define name="REF_OMEGA_R" value="1200" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.85"/>
|
||||
<define name="REF_MAX_R" value="600." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(7000.)"/>
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="400"/>
|
||||
<define name="PHI_DGAIN" value="410"/>
|
||||
<define name="PHI_IGAIN" value="0"/>
|
||||
<define name="THETA_PGAIN" value="400"/>
|
||||
<define name="THETA_DGAIN" value="410"/>
|
||||
<define name="THETA_IGAIN" value="114"/>
|
||||
<define name="PSI_PGAIN" value="900"/>
|
||||
<define name="PSI_DGAIN" value="1328"/>
|
||||
<define name="PSI_IGAIN" value="0"/>
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value=" 100"/>
|
||||
<define name="THETA_DDGAIN" value=" 100"/>
|
||||
<define name="PSI_DDGAIN" value=" 300"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="500"/>
|
||||
<define name="HOVER_KD" value="200"/>
|
||||
<define name="HOVER_KI" value="100"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<!-- ************************* MISC ************************* -->
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
|
||||
</section>
|
||||
|
||||
<section name="FMS">
|
||||
|
||||
</section>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="XBEE_INIT" value="ATID3332\r" type="string"/>
|
||||
<define name="FACE_REINJ_1" value="1024"/>
|
||||
<define name="VoltageOfAdc(adc)" value="(0.00528*adc)"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -32,17 +32,6 @@
|
||||
settings_modules="modules/stabilization_int_quat.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml modules/gps_ubx_ucenter.xml modules/gps.xml modules/imu_common.xml"
|
||||
gui_color="yellow"
|
||||
/>
|
||||
<aircraft
|
||||
name="BLACK_CAT"
|
||||
ac_id="2"
|
||||
airframe="airframes/ENAC/fixed-wing/twinjet2.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/light.xml modules/nav_basic_fw.xml modules/gps.xml modules/ahrs_float_dcm.xml modules/imu_common.xml modules/guidance_basic_fw.xml modules/stabilization_adaptive_fw.xml"
|
||||
gui_color="white"
|
||||
/>
|
||||
<aircraft
|
||||
name="CHIMERA"
|
||||
ac_id="23"
|
||||
|
||||
@@ -43,17 +43,6 @@
|
||||
settings_modules="modules/air_data.xml modules/geo_mag.xml modules/gps_ubx_ucenter.xml modules/ahrs_int_cmpl_quat.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"
|
||||
/>
|
||||
<aircraft
|
||||
name="fraser"
|
||||
ac_id="11"
|
||||
airframe="airframes/FLIXR/flixr_fraser_lisa_m_rotorcraft.xml"
|
||||
radio="radios/TGY9x_jeti.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/rotorcraft_basic.xml"
|
||||
settings="settings/rotorcraft_basic.xml settings/control/stabilization_att_int.xml"
|
||||
settings_modules="modules/gps_ubx_ucenter.xml modules/ins_extended.xml modules/ahrs_int_cmpl_quat.xml modules/imu_common.xml modules/gps.xml modules/stabilization_int_quat.xml modules/nav_basic_rotorcraft.xml modules/guidance_rotorcraft.xml"
|
||||
gui_color="blue"
|
||||
/>
|
||||
<aircraft
|
||||
name="px4"
|
||||
ac_id="36"
|
||||
|
||||
@@ -1,214 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a quadrotor frame equiped with Lisa/M and MKK motor controllers -->
|
||||
|
||||
<airframe name="fraser">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_m_1.0">
|
||||
<define name="ACTUATORS_START_DELAY" value="3"/>
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="spektrum">
|
||||
<define name="RADIO_MODE" value="RADIO_AUX1"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
|
||||
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
|
||||
</module>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="mkk"/>
|
||||
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="imu" type="aspirin_v1.5"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="30"/>
|
||||
</module>
|
||||
<module name="ins_extended"/>
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="sys_mon"/>
|
||||
|
||||
<!--define name="KILL_ON_GROUND_DETECT" value="TRUE"/-->
|
||||
</firmware>
|
||||
|
||||
<firmware name="setup">
|
||||
<target name="tunnel" board="lisa_m_1.0"/>
|
||||
</firmware>
|
||||
|
||||
<firmware name="test_progs">
|
||||
<target name="test_sys_time_timer" board="lisa_m_1.0"/>
|
||||
<target name="test_sys_time_usleep" board="lisa_m_1.0"/>
|
||||
<target name="test_telemetry" board="lisa_m_1.0"/>
|
||||
<target name="test_esc_mkk_simple" board="lisa_m_1.0"/>
|
||||
<target name="test_uart" board="lisa_m_1.0">
|
||||
<define name="USE_UART1"/>
|
||||
<define name="UART1_BAUD" value="B57600"/>
|
||||
<define name="USE_UART2"/>
|
||||
<define name="UART2_BAUD" value="B57600"/>
|
||||
</target>
|
||||
<target name="test_baro_board" board="lisa_m_1.0"/>
|
||||
<target name="test_adc" board="lisa_m_1.0"/>
|
||||
<target name="test_imu" board="lisa_m_1.0">
|
||||
<module name="imu" type="aspirin_v1.5"/>
|
||||
</target>
|
||||
</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="0"/>
|
||||
</commands>
|
||||
|
||||
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<define name="NB" value="4"/>
|
||||
<!-- FRONT, BACK, RIGHT, LEFT -->
|
||||
<define name="ADDR" value="{ 0x54, 0x52, 0x56, 0x58 }"/>
|
||||
</section>
|
||||
|
||||
<servos driver="Mkk">
|
||||
<servo name="FRONT" no="0" min="0" neutral="2" max="200"/>
|
||||
<servo name="BACK" no="1" min="0" neutral="2" max="200"/>
|
||||
<servo name="RIGHT" no="2" min="0" neutral="2" max="200"/>
|
||||
<servo name="LEFT" no="3" min="0" neutral="2" max="200"/>
|
||||
</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="MAX_SATURATION_OFFSET" value="2000"/>
|
||||
<define name="NB_MOTOR" value="4"/>
|
||||
<define name="SCALE" value="256"/>
|
||||
<!-- front/back turning CCW, left/right CW -->
|
||||
<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>
|
||||
|
||||
<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="RIGHT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="LEFT" value="motor_mixing.commands[3]"/>
|
||||
</command_laws>
|
||||
|
||||
<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"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="22"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-314"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="13"/>
|
||||
<define name="MAG_X_SENS" value="3.68160078446" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.6093630842" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.48306842466" 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="-45." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="H_X" value="0.3770441"/>
|
||||
<define name="H_Y" value="0.0193986"/>
|
||||
<define name="H_Z" value="0.9259921"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_PHI" value="60." unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="60." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_A" value="0"/>
|
||||
<define name="DEADBAND_E" value="0"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="400" 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="400" 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="250" 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="1000"/>
|
||||
<define name="PHI_DGAIN" value="400"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1000"/>
|
||||
<define name="THETA_DGAIN" value="400"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="500"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="300"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="120"/>
|
||||
<define name="HOVER_KD" value="100"/>
|
||||
<define name="HOVER_KI" value="20"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.38"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="APPROX_FORCE_BY_THRUST" value="TRUE"/>
|
||||
<define name="USE_REF" value="TRUE"/>
|
||||
<define name="MAX_BANK" value="30" unit="deg"/>
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<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="JSBSIM_MODEL" value="simple_quad_ccw" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
||||
<define name="JS_AXIS_MODE" value="4"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<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="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,179 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a custom hexa Lisa/L#3 and mikrokopter controllers -->
|
||||
<airframe name="booz2_a6">
|
||||
|
||||
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<define name="NB" value="6"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58, 0x5A, 0X5C }"/>
|
||||
</section>
|
||||
|
||||
<servos driver="Mkk">
|
||||
<servo name="BACK_RIGHT" no="0" min="0" neutral="2" max="210"/>
|
||||
<servo name="BACK_LEFT" no="1" min="0" neutral="2" max="210"/>
|
||||
<servo name="CENTER_RIGHT" no="2" min="0" neutral="2" max="210"/>
|
||||
<servo name="CENTER_LEFT" no="3" min="0" neutral="2" max="210"/>
|
||||
<servo name="FRONT_RIGHT" no="4" min="0" neutral="2" max="210"/>
|
||||
<servo name="FRONT_LEFT" no="5" min="0" neutral="2" max="210"/>
|
||||
</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>
|
||||
|
||||
<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="6"/>
|
||||
<define name="SCALE" value="256"/>
|
||||
<define name="ROLL_COEF" value="{ -69, 69, -256, 256, -186, 186 }"/>
|
||||
<define name="PITCH_COEF" value="{ -256, -256, 0, 0, 256, 256 }"/>
|
||||
<define name="YAW_COEF" value="{ -153, 153, 256, -256, -115, 115 }"/>
|
||||
<define name="THRUST_COEF" value="{ 256, 256, 256, 256, 256, 256 }"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="BACK_RIGHT" value="motor_mixing.commands[0]"/>
|
||||
<set servo="BACK_LEFT" value="motor_mixing.commands[1]"/>
|
||||
<set servo="CENTER_RIGHT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="CENTER_LEFT" value="motor_mixing.commands[3]"/>
|
||||
<set servo="FRONT_RIGHT" value="motor_mixing.commands[4]"/>
|
||||
<set servo="FRONT_LEFT" value="motor_mixing.commands[5]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
|
||||
<define name="GYRO_P_NEUTRAL" value="31948"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="31834"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="32687"/>
|
||||
|
||||
<define name="GYRO_P_SENS" value=" 1.101357422" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value=" 1.122670898" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value=" 1.104890137" integer="16"/>
|
||||
|
||||
|
||||
<define name="ACCEL_X_SENS" value=" 2.58273701242" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value=" 2.54076215332" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value=" 2.57633620646" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="32857"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="32429"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="32593"/>
|
||||
|
||||
<define name="MAG_X_SENS" value=" 5.32718104135" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value=" 4.87857821202" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value=" 3.11986612709" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="-43"/>
|
||||
<define name="MAG_Y_NEUTRAL" value=" 49"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="-66"/>
|
||||
|
||||
<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="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="CATASTROPHIC_BAT_LEVEL" value="9.3" 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_R" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="400" 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="400" 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="250" 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="400"/>
|
||||
<define name="PHI_DGAIN" value="300"/>
|
||||
<define name="PHI_IGAIN" value="100"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="400"/>
|
||||
<define name="THETA_DGAIN" value="300"/>
|
||||
<define name="THETA_IGAIN" value="100"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="380"/>
|
||||
<define name="PSI_DGAIN" value="320"/>
|
||||
<define name="PSI_IGAIN" value="75"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value=" 300"/>
|
||||
<define name="THETA_DDGAIN" value=" 300"/>
|
||||
<define name="PSI_DDGAIN" value=" 300"/>
|
||||
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="500"/>
|
||||
<define name="HOVER_KD" value="200"/>
|
||||
<define name="HOVER_KI" value="100"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.4"/>
|
||||
</section>
|
||||
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_l_1.0">
|
||||
<!-- <define name="ACTUATORS_START_DELAY" value="1"/> -->
|
||||
<module name="radio_control" type="spektrum"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="mkk"/>
|
||||
</target>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<!-- <module name="imu" type="b2_v1.1"/> -->
|
||||
<module name="imu" type="aspirin_v1.0"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_euler"/>
|
||||
<module name="ahrs" type="int_cmpl_euler"/>
|
||||
<module name="ins"/>
|
||||
</firmware>
|
||||
|
||||
|
||||
|
||||
<firmware name="test_progs">
|
||||
<target name="test_telemetry" board="lisa_l_1.0"/>
|
||||
<target name="test_baro_board" board="lisa_l_1.0"/>
|
||||
<target name="test_adc" board="lisa_l_1.0"/>
|
||||
</firmware>
|
||||
|
||||
</airframe>
|
||||
@@ -1,212 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="Quadrotor KroozSD Mkk">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="krooz_sd">
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="radio_control" type="ppm"/>
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="imu" type="krooz_sd"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_euler"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins" type="hff"/>
|
||||
<module name="actuators" type="mkk">
|
||||
<define name="I2C1_CLOCK_SPEED" value="42000"/>
|
||||
</module>
|
||||
<module name="motor_mixing"/>
|
||||
|
||||
<define name="NO_RC_THRUST_LIMIT"/>
|
||||
<define name="FAILSAFE_GROUND_DETECT" value="1"/>
|
||||
<define name="THRESHOLD_GROUND_DETECT" value="12."/>
|
||||
<define name="USE_GPS_ACC4R" value="1"/>
|
||||
<define name="HFF_R_POS_MIN" value="2.5"/>
|
||||
<define name="HFF_R_SPEED_MIN" value="2."/>
|
||||
<define name="VF_FLOAT_MEAS_NOISE" value="2."/>
|
||||
<define name="USE_ADC_2" value="1"/>
|
||||
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="geo_mag"/>
|
||||
<module name="osd_max7456"/>
|
||||
<module name="hott_telemetry"/>
|
||||
</firmware>
|
||||
|
||||
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<define name="NB" value="4"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
|
||||
</section>
|
||||
|
||||
<servos driver="Mkk">
|
||||
<servo name="FRONT" no="0" min="0" neutral="3" max="210"/>
|
||||
<servo name="BACK" no="1" min="0" neutral="3" max="210"/>
|
||||
<servo name="RIGHT" no="2" min="0" neutral="3" max="210"/>
|
||||
<servo name="LEFT" no="3" min="0" neutral="3" max="210"/>
|
||||
</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"/>
|
||||
</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="RIGHT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="LEFT" 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, -MOTOR_MIXING_SCALE, MOTOR_MIXING_SCALE }"/>
|
||||
<define name="PITCH_COEF" value="{ MOTOR_MIXING_SCALE, -MOTOR_MIXING_SCALE, 0, 0 }"/>
|
||||
<define name="YAW_COEF" value="{ -MOTOR_MIXING_SCALE, -MOTOR_MIXING_SCALE, MOTOR_MIXING_SCALE, MOTOR_MIXING_SCALE }"/>
|
||||
<define name="THRUST_COEF" value="{ MOTOR_MIXING_SCALE, MOTOR_MIXING_SCALE, MOTOR_MIXING_SCALE, MOTOR_MIXING_SCALE }"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
|
||||
<!-- replace this with your own calibration -->
|
||||
<define name="GYRO_P_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_P_SENS" value="0.5454" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value="0.5454" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value="0.5454" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="-48"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="86"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-479"/>
|
||||
<define name="ACCEL_X_SENS" value="0.6131" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="0.6131" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="0.6131" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="74"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-118"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="104"/>
|
||||
<define name="MAG_X_SENS" value="3.44419577366" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.40350478221" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.77559859867" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="GRAVITY_HEURISTIC_FACTOR" value="30"/>
|
||||
<define name="H_X" value="0.3586845"/>
|
||||
<define name="H_Y" value="0.0168651"/>
|
||||
<define name="H_Z" value="0.933303"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</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="50." 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="225" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.87"/>
|
||||
<define name="REF_MAX_P" value="180." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(400.)"/>
|
||||
|
||||
<define name="REF_OMEGA_Q" value="225" unit="deg/s"/>
|
||||
<define name="REF_ZETA_Q" value="0.87"/>
|
||||
<define name="REF_MAX_Q" value="180." unit="deg/s"/>
|
||||
<define name="REF_MAX_QDOT" value="RadOfDeg(400.)"/>
|
||||
|
||||
<define name="REF_OMEGA_R" value="150" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.85"/>
|
||||
<define name="REF_MAX_R" value="70." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(360.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="1700"/>
|
||||
<define name="PHI_DGAIN" value="500"/>
|
||||
<define name="PHI_IGAIN" value="250"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1700"/>
|
||||
<define name="THETA_DGAIN" value="500"/>
|
||||
<define name="THETA_IGAIN" value="250"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="4000"/>
|
||||
<define name="PSI_DGAIN" value="1500"/>
|
||||
<define name="PSI_IGAIN" value="300"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="5000"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="REF_MIN_ZDD" value="-0.2*9.81"/> <!-- max descent acceleration in m/s2 -->
|
||||
<define name="REF_MAX_ZDD" value="0.2*9.81"/> <!-- max climb acceleration in m/s2 -->
|
||||
<define name="REF_MIN_ZD" value="-3."/> <!-- max descent speed in m/s -->
|
||||
<define name="REF_MAX_ZD" value="3."/> <!-- max climb speed in m/s -->
|
||||
<define name="ADAPT_NOISE_FACTOR" value="0.7"/>
|
||||
<define name="HOVER_KP" value="130"/>
|
||||
<define name="HOVER_KD" value="150"/>
|
||||
<define name="HOVER_KI" value="10"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="USE_REF" value="1"/>
|
||||
<define name="USE_SPEED_REF" value="1"/> <!-- using RC to control horizontal setpoint -->
|
||||
<define name="MAX_BANK" value="27" unit="deg"/>
|
||||
<define name="REF_MAX_ACCEL" value="7."/> <!-- max reference horizontal acceleration in m/s2 -->
|
||||
<define name="REF_MAX_SPEED" value="2."/> <!-- max reference horizontal speed in m/s -->
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="120"/>
|
||||
<define name="IGAIN" value="10"/>
|
||||
<define name="AGAIN" value="10"/>
|
||||
</section>
|
||||
|
||||
<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="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_NAV"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CRITIC_BAT_LEVEL" value="14.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="14.2" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="16.8" unit="V"/>
|
||||
<!--uncomment next two lines together with a corresponding USE_ADC_2 define on the top of this file to use a current sensor
|
||||
(more about is here http://wiki.paparazziuav.org/wiki/Sensors/Current) -->
|
||||
<!--
|
||||
<define name="ADC_CHANNEL_CURRENT" value="ADC_2"/>
|
||||
<define name="MilliAmpereOfAdc(adc)" value="Max(0,(3100 - adc)*20)"/>
|
||||
-->
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,217 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a quadrotor frame in X-configuration equiped with
|
||||
* Autopilot: Navstik http://wiki.paparazziuav.org/wiki/Navstik
|
||||
* IMU: Navstik http://wiki.paparazziuav.org/wiki/Navstik
|
||||
* Actuators: Asctec V2 http://wiki.paparazziuav.org/wiki/Subsystem/actuators#Asctec_v2
|
||||
* GPS: Ublox http://wiki.paparazziuav.org/wiki/Subsystem/gps
|
||||
* RC: one Spektrum sat http://wiki.paparazziuav.org/wiki/Subsystem/radio_control#Spektrum
|
||||
-->
|
||||
|
||||
<airframe name="Quadrotor Navstik">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="navstik_1.0">
|
||||
<configure name="ACTUATORS_ASCTEC_V2_I2C_DEV" value="i2c3"/>
|
||||
<define name="ACTUATORS_START_DELAY" value="1"/>
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="spektrum">
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
|
||||
<define name="RADIO_MODE" value="RADIO_AUX1"/>
|
||||
</module>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="asctec_v2"/>
|
||||
<module name="telemetry" type="xbee_api"/>
|
||||
<module name="imu" type="navstik"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="indi_simple"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins" type="hff"/>
|
||||
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<!--module name="airspeed_ms45xx_i2c">
|
||||
<configure name="MS45XX_I2C_DEV" value="i2c3"/>
|
||||
</module>
|
||||
<module name="direct_memory_logger"/-->
|
||||
</firmware>
|
||||
|
||||
<firmware name="test_progs">
|
||||
<configure name="MODEM_PORT" value="UART1"/>
|
||||
|
||||
<target name="test_sys_time_timer" board="navstik_1.0"/>
|
||||
<target name="test_telemetry" board="navstik_1.0"/>
|
||||
<target name="test_actuators_pwm_sin" board="navstik_1.0"/>
|
||||
</firmware>
|
||||
|
||||
<servos driver="Asctec_v2">
|
||||
<servo name="FRONT" no="0" min="0" neutral="3" max="200"/>
|
||||
<servo name="BACK" no="1" min="0" neutral="3" max="200"/>
|
||||
<servo name="LEFT" no="2" min="0" neutral="3" max="200"/>
|
||||
<servo name="RIGHT" no="3" min="0" neutral="3" max="200"/>
|
||||
</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"/>
|
||||
</commands>
|
||||
|
||||
<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"/>
|
||||
<!-- order (and rotation direction) : NE (CW), SE (CCW), SW (CW), NW (CCW) -->
|
||||
<define name="ROLL_COEF" value="{ -256, -256, 256, 256 }"/>
|
||||
<define name="PITCH_COEF" value="{ 256, -256, -256, 256 }"/>
|
||||
<define name="YAW_COEF" value="{ -256, 256, -256, 256 }"/>
|
||||
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_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="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="-179"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-21"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="79"/>
|
||||
<define name="MAG_X_SENS" value="4.17334785618" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.98885954135" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="4.40442339014" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<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_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1_P" value="0.150"/>
|
||||
<define name="G1_Q" value="0.150"/>
|
||||
<define name="G1_R" value="0.005119"/>
|
||||
<define name="G2_R" value="0.2166"/>
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="900.0"/>
|
||||
<define name="REF_ERR_Q" value="900.0"/>
|
||||
<define name="REF_ERR_R" value="500.0"/>
|
||||
<define name="REF_RATE_P" value="38.0"/>
|
||||
<define name="REF_RATE_Q" value="38.0"/>
|
||||
<define name="REF_RATE_R" value="25.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.2"/>
|
||||
<define name="ACT_DYN_Q" value="0.2"/>
|
||||
<define name="ACT_DYN_R" value="0.2"/>
|
||||
|
||||
<!-- 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="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" 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="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="75"/>
|
||||
<define name="THETA_DDGAIN" value="75"/>
|
||||
<define name="PSI_DDGAIN" value="75"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="MIN_ERR_Z" value="POS_BFP_OF_REAL(-10.)"/>
|
||||
<define name="MAX_ERR_Z" value="POS_BFP_OF_REAL( 10.)"/>
|
||||
<define name="MIN_ERR_ZD" value="SPEED_BFP_OF_REAL(-10.)"/>
|
||||
<define name="MAX_ERR_ZD" value="SPEED_BFP_OF_REAL( 10.)"/>
|
||||
<define name="MAX_SUM_ERR" value="2000000"/>
|
||||
<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="20" 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="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" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
</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="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="9.6" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="10.1" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a quadrotor frame equiped with Lisa/M and MKK motor controllers -->
|
||||
<!-- this is a quadrotor frame equiped with Lisa/M -->
|
||||
|
||||
<airframe name="setup_apogee">
|
||||
|
||||
|
||||
@@ -28,8 +28,6 @@
|
||||
<target name="test_actuators_pwm_sin" board="elle0_1.2">
|
||||
<define name="USE_SERVOS_7AND8"/>
|
||||
</target>
|
||||
<target name="test_esc_mkk_simple" board="elle0_1.2"/>
|
||||
<target name="test_esc_asctecv1_simple" board="elle0_1.2"/>
|
||||
<target name="test_baro_board" board="elle0_1.2">
|
||||
<configure name="BARO_LED" value="2"/>
|
||||
</target>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a quadrotor frame equiped with Lisa/M and MKK motor controllers -->
|
||||
<!-- this is a quadrotor frame equiped with Lisa/M -->
|
||||
|
||||
<airframe name="setup_lisam2">
|
||||
|
||||
@@ -29,8 +29,6 @@
|
||||
<target name="test_actuators_pwm_sin" board="lisa_m_2.0">
|
||||
<define name="USE_SERVOS_7AND8"/>
|
||||
</target>
|
||||
<target name="test_esc_mkk_simple" board="lisa_m_2.0"/>
|
||||
<target name="test_esc_asctecv1_simple" board="lisa_m_2.0"/>
|
||||
<target name="test_baro_board" board="lisa_m_2.0">
|
||||
<configure name="BARO_LED" value="5"/>
|
||||
<!-- baro board options for Lisa/M 2.0: BARO_BOARD_BMP085, BARO_MS5611_I2C, BARO_MS5611_SPI (default) -->
|
||||
|
||||
@@ -1,195 +0,0 @@
|
||||
<!--
|
||||
This airframe is connected to the build server and is used for hardware testing.
|
||||
The hardware configuration is
|
||||
Powered via a plug 12V pack
|
||||
Lisa/L v1.1 board
|
||||
XBee connected to UART2 configured at 38400
|
||||
Aspirin v1.5
|
||||
GPS connected to UART1 (Since this is inside in a metal box it won't ever get a solution)
|
||||
-->
|
||||
<airframe name="TestConfig">
|
||||
<firmware name="fixedwing">
|
||||
<target name="sim" board="pc"/>
|
||||
<target name="ap" board="lisa_l_1.1">
|
||||
<configure name="PERIODIC_FREQUENCY" value="120"/>
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="xbee_api">
|
||||
<configure name="MODEM_BAUD" value="B38400"/>
|
||||
</module>
|
||||
<module name="control"/>
|
||||
<module name="imu" type="aspirin_v1.5"/>
|
||||
<module name="gps" type="ublox">
|
||||
<configure name="GPS_BAUD" value="B57600"/>
|
||||
</module>
|
||||
<module name="ahrs" type="float_dcm"/>
|
||||
<module name="navigation"/>
|
||||
<module name="ins" type="alt_float"/>
|
||||
</firmware>
|
||||
|
||||
<servos>
|
||||
<servo name="MOTOR" no="0" min="1000" neutral="1000" max="2000"/>
|
||||
<servo name="AILEVON_LEFT" no="1" min="1900" neutral="1534" max="1100"/>
|
||||
<servo name="AILEVON_RIGHT" no="2" min="1100" neutral="1468" max="1900"/>
|
||||
</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.45"/>
|
||||
<define name="AILEVON_ELEVATOR_RATE" value="0.8"/>
|
||||
</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="50" unit="deg"/>
|
||||
<define name="MAX_PITCH" value="35" unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="LOW_BAT_LEVEL" value="10.5" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="10" unit="V"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="9.1" unit="V"/>
|
||||
</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>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="NOMINAL_AIRSPEED" value="13." unit="m/s"/>
|
||||
<define name="CARROT" value="5." unit="s"/>
|
||||
<define name="CONTROL_FREQUENCY" value="60" unit="Hz"/>
|
||||
<define name="XBEE_INIT" value="ATPL2\rATRN5\rATTT80\r" type="string"/>
|
||||
<!-- <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
|
||||
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
|
||||
</section>
|
||||
|
||||
<!-- Local magnetic field -->
|
||||
<section name="AHRS" prefix="AHRS_" >
|
||||
<define name="H_X" value="0.51562740288882" />
|
||||
<define name="H_Y" value="-0.05707735220832" />
|
||||
<define name="H_Z" value="0.85490967783446" />
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<!-- Calibration Neutral -->
|
||||
<define name="GYRO_P_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="0"/>
|
||||
|
||||
<!-- SENS = 14.375 LSB/(deg/sec) * 57.6 deg/rad = 828 LSB/rad/sec / 12bit FRAC: 4096 / 828 -->
|
||||
<define name="GYRO_P_SENS" value="4.947" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value="4.947" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value="4.947" integer="16"/>
|
||||
|
||||
<define name="GYRO_P_Q" value="0."/>
|
||||
<define name="GYRO_P_R" value="0"/>
|
||||
<define name="GYRO_Q_P" value="0."/>
|
||||
<define name="GYRO_Q_R" value="0."/>
|
||||
<define name="GYRO_R_P" value="0."/>
|
||||
<define name="GYRO_R_Q" value="0."/>
|
||||
|
||||
<define name="GYRO_P_SIGN" value="1"/>
|
||||
<define name="GYRO_Q_SIGN" value="1"/>
|
||||
<define name="GYRO_R_SIGN" value="1"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="-14"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="0"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="0"/>
|
||||
|
||||
<!-- SENS = 256 LSB/g @ 2.5V [X&Y: 265 LSB/g @ 3.3V] / 9.81 ms2/g = 26.095 LSB/ms2 / 10bit FRAC: 1024 / 26.095 for z and 1024 / 27.01 for X&Y -->
|
||||
<define name="ACCEL_X_SENS" value="37.9" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="37.9" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="39.24" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_SIGN" value="1"/>
|
||||
<define name="ACCEL_Y_SIGN" value="1"/>
|
||||
<define name="ACCEL_Z_SIGN" value="1"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="0"/>
|
||||
|
||||
<define name="MAG_X_SENS" value="1" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="1" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="1" integer="16"/>
|
||||
|
||||
<define name="MAG_X_SIGN" value="1"/>
|
||||
<define name="MAG_Y_SIGN" value="1"/>
|
||||
<define name="MAG_Z_SIGN" value="1"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="90.0" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0"/>
|
||||
</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="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.20000004768"/>
|
||||
<define name="COURSE_DGAIN" value="0.3"/>
|
||||
<define name="COURSE_PRE_BANK_CORRECTION" value="0.2"/>
|
||||
|
||||
<define name="ROLL_MAX_SETPOINT" value="0.75" 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="1000."/>
|
||||
|
||||
<define name="ROLL_SLEW" value="1."/>
|
||||
|
||||
<define name="ROLL_ATTITUDE_GAIN" value="7500"/>
|
||||
<define name="ROLL_RATE_GAIN" value="0."/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,202 +0,0 @@
|
||||
<!--
|
||||
This airframe is connected to the build server and is used for hardware testing.
|
||||
The hardware configuration is
|
||||
Powered via a plug 12V pack
|
||||
Lisa/L v1.1 board
|
||||
XBee connected to UART2 configured at 38400 (Configured for XBee API
|
||||
Booz2 v1.2
|
||||
-->
|
||||
<airframe name="TestConfig">
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_l_1.1">
|
||||
<!--define name="NO_RC_THRUST_LIMIT"/-->
|
||||
<module name="radio_control" type="spektrum"/>
|
||||
<define name="RADIO_MODE" value="RADIO_AUX1"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
|
||||
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="radio_control" type="ppm"/>
|
||||
</target>
|
||||
|
||||
<module name="telemetry" type="xbee_api">
|
||||
<configure name="MODEM_BAUD" value="B38400"/>
|
||||
</module>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="mkk"/>
|
||||
<module name="imu" type="aspirin_v1.5"/>
|
||||
<module name="gps" type="ublox">
|
||||
<configure name="GPS_BAUD" value="B57600"/>
|
||||
</module>
|
||||
<module name="stabilization" type="int_euler"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins"/>
|
||||
</firmware>
|
||||
|
||||
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<define name="NB" value="4"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
|
||||
</section>
|
||||
|
||||
<servos driver="Mkk">
|
||||
<servo name="FRONT" no="0" min="0" neutral="2" max="210"/>
|
||||
<servo name="BACK" no="1" min="0" neutral="2" max="210"/>
|
||||
<servo name="RIGHT" no="2" min="0" neutral="2" max="210"/>
|
||||
<servo name="LEFT" no="3" min="0" neutral="2" max="210"/>
|
||||
</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>
|
||||
|
||||
<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>
|
||||
|
||||
<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="RIGHT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="LEFT" value="motor_mixing.commands[3]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="GYRO_P_NEUTRAL" value="32581"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="32008"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="33207"/>
|
||||
<define name="GYRO_P_SENS" value=".903" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value=".905" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value=".893" integer="16"/>
|
||||
<define name="GYRO_PQ_SENS" value="0.0" integer="16"/>
|
||||
<define name="GYRO_PR_SENS" value="0.0" integer="16"/>
|
||||
<define name="GYRO_QR_SENS" value="0.0" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="25950"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="26351"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="25696"/>
|
||||
<define name="ACCEL_X_SENS" value="1.86342150011" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="1.88378993899" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="1.86557913201" integer="16"/>
|
||||
<define name="ACCEL_XY_SENS" value="0.0" integer="16"/>
|
||||
<define name="ACCEL_XZ_SENS" value="0.0" integer="16"/>
|
||||
<define name="ACCEL_YZ_SENS" value="0.0" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="0"/>
|
||||
<define name="MAG_X_SENS" value="1." integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="1." integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="1." integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_Z_HOLD"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_HOVER_Z_HOLD"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="16.8" unit="V" />
|
||||
<define name="CRITIC_BAT_LEVEL" value="13.0" unit="V" />
|
||||
<define name="LOW_BAT_LEVEL" value="14.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_R" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.9"/>
|
||||
<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.9"/>
|
||||
<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.9"/>
|
||||
<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="AHRS" prefix="AHRS_">
|
||||
<define name="H_X" value=" 0.3723657"/>
|
||||
<define name="H_Y" value=" 0.1515225"/>
|
||||
<define name="H_Z" value="-0.9156335"/>
|
||||
</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="0"/>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="FACE_REINJ_1" value="1024"/>
|
||||
</section>
|
||||
|
||||
<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>
|
||||
|
||||
</airframe>
|
||||
@@ -1,194 +0,0 @@
|
||||
<!--
|
||||
This airframe is connected to the build server and is used for hardware testing.
|
||||
The hardware configuration is
|
||||
Powered via a plug 12V pack
|
||||
Lisa/L v1.1 board
|
||||
XBee connected to UART2 configured at 38400
|
||||
Booz2 v1.2
|
||||
GPS connected to UART1 (Since this is inside in a metal box it won't ever get a solution)
|
||||
-->
|
||||
<airframe name="TestConfig">
|
||||
<firmware name="fixedwing">
|
||||
<target name="sim" board="pc"/>
|
||||
<target name="ap" board="lisa_l_1.1">
|
||||
<configure name="PERIODIC_FREQUENCY" value="120"/>
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="xbee_api">
|
||||
<configure name="MODEM_BAUD" value="B38400"/>
|
||||
</module>
|
||||
<module name="control"/>
|
||||
<module name="imu" type="b2_v1.2"/>
|
||||
<module name="gps" type="ublox">
|
||||
<configure name="GPS_BAUD" value="B57600"/>
|
||||
</module>
|
||||
<module name="ahrs" type="float_dcm"/>
|
||||
<module name="ins" type="alt_float"/>
|
||||
<module name="navigation"/>
|
||||
</firmware>
|
||||
|
||||
<servos>
|
||||
<servo name="MOTOR" no="0" min="1000" neutral="1000" max="2000"/>
|
||||
<servo name="AILEVON_LEFT" no="1" min="1900" neutral="1534" max="1100"/>
|
||||
<servo name="AILEVON_RIGHT" no="2" min="1100" neutral="1468" max="1900"/>
|
||||
</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.45"/>
|
||||
<define name="AILEVON_ELEVATOR_RATE" value="0.8"/>
|
||||
</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="50" unit="deg"/>
|
||||
<define name="MAX_PITCH" value="35" unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="LOW_BAT_LEVEL" value="10.5" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="10" unit="V"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="9.1" unit="V"/>
|
||||
</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>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="NOMINAL_AIRSPEED" value="13." unit="m/s"/>
|
||||
<define name="CARROT" value="5." unit="s"/>
|
||||
<define name="XBEE_INIT" value="ATPL2\rATRN5\rATTT80\r" type="string"/>
|
||||
<!-- <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
|
||||
<define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
|
||||
</section>
|
||||
|
||||
<!-- Local magnetic field -->
|
||||
<section name="AHRS" prefix="AHRS_" >
|
||||
<define name="H_X" value="0.51562740288882" />
|
||||
<define name="H_Y" value="-0.05707735220832" />
|
||||
<define name="H_Z" value="0.85490967783446" />
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<!-- Calibration Neutral -->
|
||||
<define name="GYRO_P_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="0"/>
|
||||
|
||||
<!-- SENS = 14.375 LSB/(deg/sec) * 57.6 deg/rad = 828 LSB/rad/sec / 12bit FRAC: 4096 / 828 -->
|
||||
<define name="GYRO_P_SENS" value="4.947" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value="4.947" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value="4.947" integer="16"/>
|
||||
|
||||
<define name="GYRO_P_Q" value="0."/>
|
||||
<define name="GYRO_P_R" value="0"/>
|
||||
<define name="GYRO_Q_P" value="0."/>
|
||||
<define name="GYRO_Q_R" value="0."/>
|
||||
<define name="GYRO_R_P" value="0."/>
|
||||
<define name="GYRO_R_Q" value="0."/>
|
||||
|
||||
<define name="GYRO_P_SIGN" value="1"/>
|
||||
<define name="GYRO_Q_SIGN" value="1"/>
|
||||
<define name="GYRO_R_SIGN" value="1"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="-14"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="0"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="0"/>
|
||||
|
||||
<!-- SENS = 256 LSB/g @ 2.5V [X&Y: 265 LSB/g @ 3.3V] / 9.81 ms2/g = 26.095 LSB/ms2 / 10bit FRAC: 1024 / 26.095 for z and 1024 / 27.01 for X&Y -->
|
||||
<define name="ACCEL_X_SENS" value="37.9" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="37.9" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="39.24" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_SIGN" value="1"/>
|
||||
<define name="ACCEL_Y_SIGN" value="1"/>
|
||||
<define name="ACCEL_Z_SIGN" value="1"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="0"/>
|
||||
|
||||
<define name="MAG_X_SENS" value="1" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="1" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="1" integer="16"/>
|
||||
|
||||
<define name="MAG_X_SIGN" value="1"/>
|
||||
<define name="MAG_Y_SIGN" value="1"/>
|
||||
<define name="MAG_Z_SIGN" value="1"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="90.0" unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0"/>
|
||||
</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="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.20000004768"/>
|
||||
<define name="COURSE_DGAIN" value="0.3"/>
|
||||
<define name="COURSE_PRE_BANK_CORRECTION" value="0.2"/>
|
||||
|
||||
<define name="ROLL_MAX_SETPOINT" value="0.75" 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="1000."/>
|
||||
|
||||
<define name="ROLL_SLEW" value="1."/>
|
||||
|
||||
<define name="ROLL_ATTITUDE_GAIN" value="7500"/>
|
||||
<define name="ROLL_RATE_GAIN" value="0."/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,227 +0,0 @@
|
||||
<!--
|
||||
This airframe is connected to the build server and is used for hardware testing.
|
||||
The hardware configuration is
|
||||
Powered via a plug 12V pack
|
||||
Lisa/L v1.1 board
|
||||
XBee connected to UART2 configured at 38400
|
||||
Booz2 v1.2
|
||||
GPS connected to UART1 (Since this is inside in a metal box it won't ever get a solution)
|
||||
-->
|
||||
<airframe name="TestConfig">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_l_1.1">
|
||||
<!--define name="NO_RC_THRUST_LIMIT"/-->
|
||||
<module name="radio_control" type="spektrum"/>
|
||||
<define name="RADIO_MODE" value="RADIO_AUX1"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
|
||||
<configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>
|
||||
</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="mkk"/>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="imu" type="b2_v1.2"/>
|
||||
<module name="gps" type="ublox">
|
||||
<configure name="GPS_BAUD" value="B57600"/>
|
||||
</module>
|
||||
<module name="stabilization" type="int_euler"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins"/>
|
||||
<define name="PRINT_CONFIG"/>
|
||||
</firmware>
|
||||
|
||||
<firmware name="test_progs">
|
||||
<target name="test_baro_board" board="lisa_l_1.1"/>
|
||||
<target name="test_adc" board="lisa_l_1.1"/>
|
||||
</firmware>
|
||||
|
||||
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<define name="NB" value="4"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
|
||||
</section>
|
||||
|
||||
<servos driver="Mkk">
|
||||
<servo name="FRONT" no="0" min="0" neutral="2" max="210"/>
|
||||
<servo name="BACK" no="1" min="0" neutral="2" max="210"/>
|
||||
<servo name="RIGHT" no="2" min="0" neutral="2" max="210"/>
|
||||
<servo name="LEFT" no="3" min="0" neutral="2" max="210"/>
|
||||
</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>
|
||||
|
||||
<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>
|
||||
|
||||
<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="RIGHT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="LEFT" value="motor_mixing.commands[3]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="GYRO_P_NEUTRAL" value="32581"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="32008"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="33207"/>
|
||||
<define name="GYRO_P_SENS" value=".903" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value=".905" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value=".893" integer="16"/>
|
||||
<define name="GYRO_PQ_SENS" value="0.0" integer="16"/>
|
||||
<define name="GYRO_PR_SENS" value="0.0" integer="16"/>
|
||||
<define name="GYRO_QR_SENS" value="0.0" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="25950"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="26351"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="25696"/>
|
||||
<define name="ACCEL_X_SENS" value="1.86342150011" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="1.88378993899" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="1.86557913201" integer="16"/>
|
||||
<define name="ACCEL_XY_SENS" value="0.0" integer="16"/>
|
||||
<define name="ACCEL_XZ_SENS" value="0.0" integer="16"/>
|
||||
<define name="ACCEL_YZ_SENS" value="0.0" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="0"/>
|
||||
<define name="MAG_X_SENS" value="1." integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="1." integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="1." integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_Z_HOLD"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_HOVER_Z_HOLD"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="16.8" unit="V" />
|
||||
<define name="CRITIC_BAT_LEVEL" value="13.0" unit="V" />
|
||||
<define name="LOW_BAT_LEVEL" value="14.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_R" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="800" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.9"/>
|
||||
<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.9"/>
|
||||
<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.9"/>
|
||||
<define name="REF_MAX_R" value="180." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(1800.)"/>
|
||||
|
||||
<!--
|
||||
<define name="PHI_PGAIN" value="-2000"/>
|
||||
<define name="PHI_DGAIN" value="-400"/>
|
||||
<define name="PHI_IGAIN" value="-200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="-2000"/>
|
||||
<define name="THETA_DGAIN" value="-400"/>
|
||||
<define name="THETA_IGAIN" value="-200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="-2000"/>
|
||||
<define name="PSI_DGAIN" value="-400"/>
|
||||
<define name="PSI_IGAIN" value="-10"/>
|
||||
|
||||
|
||||
<define name="PHI_DDGAIN" value=" 300"/>
|
||||
<define name="THETA_DDGAIN" value=" 300"/>
|
||||
<define name="PSI_DDGAIN" value=" 300"/>
|
||||
-->
|
||||
|
||||
<!-- 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="AHRS" prefix="AHRS_">
|
||||
<define name="H_X" value=" 0.3723657"/>
|
||||
<define name="H_Y" value=" 0.1515225"/>
|
||||
<define name="H_Z" value="-0.9156335"/>
|
||||
</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="0"/>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="FACE_REINJ_1" value="1024"/>
|
||||
</section>
|
||||
|
||||
<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>
|
||||
|
||||
</airframe>
|
||||
@@ -1,289 +0,0 @@
|
||||
|
||||
<airframe name="quadshot aspirin 2.1 spektrum">
|
||||
<description>Quadshot vehicle equiped with Asctec motor controllers.
|
||||
</description>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<!-- <servo name="A1" no="0" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="A2" no="1" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="B1" no="2" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="B2" no="3" min="1000" neutral="1100" max="2000"/>-->
|
||||
<servo name="ELEVON_LEFT" no="4" min="1000" neutral="1500" max="2000"/>
|
||||
<servo name="ELEVON_RIGHT" no="5" min="1000" neutral="1500" max="2000"/>
|
||||
</servos>
|
||||
|
||||
<servos driver="Asctec_v2_new">
|
||||
<servo name="FRONT" no="0" min="0" neutral="3" max="200"/>
|
||||
<servo name="BACK" no="1" min="0" neutral="3" max="200"/>
|
||||
<servo name="LEFT" no="2" min="0" neutral="3" max="200"/>
|
||||
<servo name="RIGHT" no="3" min="0" neutral="3" max="200"/>
|
||||
</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="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]"/>
|
||||
|
||||
<!-- Mode dependent actuator laws for the elevons. The elevons act different in rc attitude flight mode-->
|
||||
<!-- First the correct feedback is stored in variables -->
|
||||
<let var="aileron_feedback_left" value="-@YAW"/>
|
||||
<let var="aileron_feedback_right" value="-@YAW"/>
|
||||
|
||||
<let var="elevator_feedback_left" value="+@PITCH"/>
|
||||
<let var="elevator_feedback_right" value="-@PITCH"/>
|
||||
|
||||
<!-- Here the gains are defined for the two feedback cases, hover and forward-->
|
||||
<let var="hover_left" value="3*$aileron_feedback_left"/>
|
||||
<let var="hover_right" value="3*$aileron_feedback_right"/>
|
||||
|
||||
<let var="forward_left" value="1*$aileron_feedback_left+4*$elevator_feedback_left"/>
|
||||
<let var="forward_right" value="1*$aileron_feedback_right+4*$elevator_feedback_right"/>
|
||||
|
||||
<!-- This statement tells the autopilot to use the hover feedback if in mode attitude direct and to use the forward feedback in all other cases-->
|
||||
<set servo="ELEVON_LEFT" value="AP_MODE == AP_MODE_ATTITUDE_DIRECT ? $hover_left : $forward_left" />
|
||||
<set servo="ELEVON_RIGHT" value="AP_MODE == AP_MODE_ATTITUDE_DIRECT ? $hover_right : $forward_right" />
|
||||
</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="PITCH_COEF" value="{ -256, -256, 256, 256 }"/>
|
||||
<define name="ROLL_COEF" value="{ 256, -256, 256, -256 }"/>
|
||||
<define name="YAW_COEF" value="{ 256, -256, -128, 128 }"/>
|
||||
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
|
||||
</section>
|
||||
|
||||
<!-- If you got a caliberation XML document from your IMU supplier, import this in the IMU section -->
|
||||
|
||||
<!-- Note that is better to have *no* caliberation file at all, than a one with incorrect caliberation values.
|
||||
The default factory values are most of the time perfectly acceptable, so by default we will not use the caliberation file -->
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<!-- Use default driver values for gyro -->
|
||||
|
||||
<!-- IMU calibration, make sure to calibrate the IMU properly before flight, see the wiki for more info-->
|
||||
<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.86487566223" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="4.89957269597" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="4.82616398266" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="0"/>
|
||||
<define name="MAG_X_SENS" value="4.19385009207" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="4.32306399648" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="4.63243801309" integer="16"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="90." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="MODE_AUTO1" value="AP_MODE_FORWARD"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_RATE_DIRECT"/>
|
||||
|
||||
<!-- <define name="USE_THROTTLE_FOR_MOTOR_ARMING" value="TRUE"/> -->
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="MIN_BAT_LEVEL" value="10.9" units="V"/>
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="10.3" unit="V"/>
|
||||
</section>
|
||||
|
||||
|
||||
<!-- These gains are used when the gain scheduling module is enabled (by loading it in the modules section)-->
|
||||
<section name ="GAIN_SETS">
|
||||
<define name="NUMBER_OF_GAINSETS" value="2"/>
|
||||
<define name="SCHEDULING_VARIABLE" value="(radio.values[COMMAND_THRUST]+ transition_status"/>
|
||||
<define name="SCHEDULING_POINTS" value="{1000, 6000}"/>
|
||||
<define name="SCHEDULING_VARIABLE_FRAC" value="0"/>
|
||||
|
||||
<define name="PHI_P" value="{230, 230}"/>
|
||||
<define name="PHI_D" value="{170, 170}"/>
|
||||
<define name="PHI_I" value="{30, 30}"/>
|
||||
<define name="PHI_DD" value="{0, 0}"/>
|
||||
|
||||
<define name="THETA_P" value="{200, 300}"/>
|
||||
<define name="THETA_D" value="{100, 50}"/>
|
||||
<define name="THETA_I" value="{40, 40}"/>
|
||||
<define name="THETA_DD" value="{0, 0}"/>
|
||||
|
||||
<define name="PSI_P" value="{300, 300}"/>
|
||||
<define name="PSI_D" value="{150, 150}"/>
|
||||
<define name="PSI_I" value="{0, 0}"/>
|
||||
<define name="PSI_DD" value="{0, 0}"/>
|
||||
</section>
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
||||
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_PHI" value="60." unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="60." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
<define name="DEADBAND_A" value="250"/>
|
||||
<define name="SP_PSI_DELTA_LIMIT" value="90" unit="deg"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="1500" 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="1500" 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="1500" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.9"/>
|
||||
<define name="REF_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(900.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="170"/>
|
||||
<define name="PHI_DGAIN" value="120"/>
|
||||
<define name="PHI_IGAIN" value="30"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="150"/>
|
||||
<define name="THETA_DGAIN" value="70"/>
|
||||
<define name="THETA_IGAIN" value="40"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="300"/>
|
||||
<define name="PSI_DGAIN" value="150"/>
|
||||
<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="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
||||
<!-- control effectiveness -->
|
||||
<define name="G1_P" value="0.012"/>
|
||||
<define name="G1_Q" value="0.04"/>
|
||||
<define name="G1_R" value="0.004"/>
|
||||
<define name="G2_R" value="0.0"/>
|
||||
|
||||
<!-- reference acceleration for attitude control -->
|
||||
<define name="REF_ERR_P" value="70.0"/>
|
||||
<define name="REF_ERR_Q" value="45.0"/>
|
||||
<define name="REF_ERR_R" value="70.0"/>
|
||||
<define name="REF_RATE_P" value="9.0"/>
|
||||
<define name="REF_RATE_Q" value="16.0"/>
|
||||
<define name="REF_RATE_R" value="12.0"/>
|
||||
|
||||
<!-- second order filter parameters -->
|
||||
<define name="FILT_CUTOFF" value="8.0"/>
|
||||
<define name="FILT_CUTOFF_R" value="3.2"/>
|
||||
|
||||
<!-- first order actuator dynamics -->
|
||||
<define name="ACT_DYN_P" value="0.15"/>
|
||||
<define name="ACT_DYN_Q" value="0.15"/>
|
||||
<define name="ACT_DYN_R" value="0.15"/>
|
||||
|
||||
<!-- Adaptive Learning Rate -->
|
||||
<define name="USE_ADAPTIVE" value="FALSE"/>
|
||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
||||
</section>
|
||||
|
||||
|
||||
<!-- Gains for vertical navigation -->
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="200"/>
|
||||
<define name="HOVER_KD" value="175"/>
|
||||
<define name="HOVER_KI" value="72"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value ="0.4"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="FALSE"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="GRAVITY_HEURISTIC_FACTOR" value="0"/>
|
||||
<define name="H_X" value=" 0.47577"/>
|
||||
<define name="H_Y" value=" 0.11811"/>
|
||||
<define name="H_Z" value=" 0.87161"/>
|
||||
</section>
|
||||
|
||||
<!-- Gains for horizontal navigation-->
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="MISC">
|
||||
<!-- <define name="REF_QUAT_INFINITESIMAL_STEP" value="TRUE"/> -->
|
||||
<!--The Quadshot uses a slightly different axis system for the setpoint, to make both hovering and flying forward intuitive-->
|
||||
<define name="USE_EARTH_BOUND_RC_SETPOINT" value="TRUE"/>
|
||||
<!-- This is the pitch angle that the Quadshot will have in forward flight, where 0 degrees is hover-->
|
||||
<define name="TRANSITION_MAX_OFFSET" value="-80.0" unit="deg"/>
|
||||
<define name="NO_RC_THRUST_LIMIT" value="TRUE"/>
|
||||
</section>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_m_2.0">
|
||||
<module name="radio_control" type="spektrum">
|
||||
<!-- Put the mode on channel AUX1-->
|
||||
<define name="RADIO_KILL_SWITCH" value="5"/>
|
||||
<!-- <configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/> -->
|
||||
</module>
|
||||
|
||||
<configure name="FLASH_MODE" value="SWD"/>
|
||||
|
||||
<!-- on aspirin 2.1 the ms5611 baro is not connected via SPI, use BMP085 on Lisa/M board instead -->
|
||||
<!-- <configure name="LISA_M_BARO" value="BARO_BOARD_BMP085"/> -->
|
||||
<!-- If using aspirin 2.2, make sure to uncomment the following barometer configuration: -->
|
||||
<configure name="LISA_M_BARO" value="BARO_MS5611_SPI"/>
|
||||
</target>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="SERVO_HZ" value="400"/>
|
||||
</module>
|
||||
<module name="actuators" type="asctec_v2_new"/>
|
||||
|
||||
<module name="telemetry" type="xbee_api"/>
|
||||
<!-- <module name="telemetry" type="transparent"/> -->
|
||||
<module name="imu" type="aspirin_v2.2"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="indi_simple"/>
|
||||
<module name="stabilization" type="rate_indi"/>
|
||||
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<configure name="USE_MAGNETOMETER" value="TRUE"/>
|
||||
<!--define name="AHRS_GRAVITY_UPDATE_COORDINATED_TURN" value="TRUE"/-->
|
||||
</module>
|
||||
|
||||
<module name="ins"/>
|
||||
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
|
||||
<!-- The the led_safety_status module will make the Quadshot LEDs blink in certain patterns when there are safety violations-->
|
||||
<module name="led_safety_status">
|
||||
<define name="USE_LED_BODY" value="1"/>
|
||||
<define name="SAFETY_WARNING_LED" value="BODY"/>
|
||||
</module>
|
||||
|
||||
<!-- Load this module to use multiple gain sets, which have to be specified in the gain sets section -->
|
||||
<!--module name="gain_scheduling"/-->
|
||||
</firmware>
|
||||
</airframe>
|
||||
@@ -1,44 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- BeagleBoneBlack test airframe -->
|
||||
|
||||
<airframe name="test_bbb">
|
||||
|
||||
<firmware name="test_progs">
|
||||
<target name="test_uart_echo" board="beagle_bone_black">
|
||||
<define name="USE_UART4"/>
|
||||
<define name="UART4_BAUD" value="B9600"/>
|
||||
<configure name="PERIODIC_FREQUENCY" value="5"/>
|
||||
</target>
|
||||
<target name="test_uart_send" board="beagle_bone_black">
|
||||
<define name="USE_UART2"/>
|
||||
<define name="UART2_BAUD" value="B9600"/>
|
||||
<configure name="PERIODIC_FREQUENCY" value="10"/>
|
||||
</target>
|
||||
<target name="test_uart_recv" board="beagle_bone_black">
|
||||
<define name="USE_UART4"/>
|
||||
<define name="UART4_BAUD" value="B9600"/>
|
||||
<configure name="PERIODIC_FREQUENCY" value="10"/>
|
||||
</target>
|
||||
|
||||
<target name="test_settings" board="beagle_bone_black"/>
|
||||
<target name="test_telemetry" board="beagle_bone_black"/>
|
||||
<target name="test_imu" board="beagle_bone_black">
|
||||
<module name="imu" type="mpu60x0_i2c">
|
||||
<configure name="IMU_MPU60X0_I2C_DEV" value="i2c1"/>
|
||||
</module>
|
||||
<configure name="PERIODIC_FREQUENCY" value="60"/>
|
||||
</target>
|
||||
|
||||
<!-- use UDP telemetry via usb-gadget with netmask 255.255.255.252 -->
|
||||
<configure name="MODEM_DEV" value="UDP0"/>
|
||||
<configure name="MODEM_HOST" value="192.168.7.3"/>
|
||||
|
||||
<configure name="DEBUG_INFO" value="yes"/>
|
||||
<configure name="OPT" value="0"/>
|
||||
<!-- upload to USER@HOST -->
|
||||
<configure name="HOST" value="192.168.7.2"/>
|
||||
<configure name="USER" value="ubuntu"/>
|
||||
</firmware>
|
||||
|
||||
</airframe>
|
||||
@@ -1,58 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a demo file for the OpenPilot CC3D board:
|
||||
* Autopilot: OpenPilot CC3D https://www.openpilot.org/product/coptercontrol/
|
||||
* Actuators: two standard servos http://wiki.paparazziuav.org/wiki/Subsystem/actuators#PWM
|
||||
-->
|
||||
|
||||
<airframe name="DemoCC3D">
|
||||
|
||||
<firmware name="demo">
|
||||
<target name="demo_ahrs_actuators" board="cc3d">
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="actuators" type="pwm"/>
|
||||
<module name="imu" type="mpu6000"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<configure name="USE_MAGNETOMETER" value="FALSE"/>
|
||||
</target>
|
||||
<!--define name="USE_PERSISTENT_SETTINGS" value="TRUE"/-->
|
||||
<configure name="AHRS_ALIGNER_LED" value="1"/>
|
||||
</firmware>
|
||||
|
||||
<firmware name="test_progs">
|
||||
<target name="test_sys_time_timer" board="cc3d"/>
|
||||
<target name="test_sys_time_usleep" board="cc3d"/>
|
||||
<target name="test_telemetry" board="cc3d"/>
|
||||
<target name="test_imu" board="cc3d">
|
||||
<module name="imu" type="mpu6000"/>
|
||||
</target>
|
||||
<target name="test_ahrs" board="cc3d">
|
||||
<module name="imu" type="mpu6000"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<configure name="USE_MAGNETOMETER" value="FALSE"/>
|
||||
</target>
|
||||
<target name="test_actuators_pwm" board="cc3d"/>
|
||||
</firmware>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="ROLL" no="0" min="1000" neutral="1500" max="2000"/>
|
||||
<servo name="PITCH" no="1" min="1000" neutral="1500" max="2000"/>
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<axis name="PITCH" failsafe_value="0"/>
|
||||
</commands>
|
||||
|
||||
<command_laws>
|
||||
<set servo="ROLL" value="-@ROLL"/>
|
||||
<set servo="PITCH" value="-@PITCH"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="BODY_TO_IMU_PHI" value="180." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="-90." unit="deg"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,189 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a test file for the Abusemark Naze32 rev5 board:
|
||||
* Autopilot: Abusemark Naze32 https://code.google.com/p/afrodevices/wiki/AfroFlight32
|
||||
* Actuators: PWM motor controllers http://wiki.paparazziuav.org/wiki/Subsystem/actuators#PWM
|
||||
* RC: PPM input http://wiki.paparazziuav.org/wiki/Subsystem/radio_control#PPM
|
||||
|
||||
hex copter configuration (USE_SERVOS_5AND6) moves the PPM input from "1" to "6" on RC input
|
||||
pwm motor connectors are in "standard mode" M1-M6 on the servo headers
|
||||
-->
|
||||
|
||||
<airframe name="Hexcopter Naze32">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<!-- configure PPM input to PA7 instead of PA0 to have all 6 servos -->
|
||||
<configure name="RADIO_CONTROL_PPM_PIN" value="PA7"/>
|
||||
<define name="PPRZ_TRIG_INT_COMPR_FLASH"/>
|
||||
<define name="PPRZ_TRIG_INT_COMPR_HIGHEST"/>
|
||||
<target name="ap" board="naze32_rev5">
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="SERVO_HZ" value="400"/>
|
||||
</module>
|
||||
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="imu" type="mpu60x0_i2c">
|
||||
<configure name="IMU_MPU60X0_I2C_DEV" value="i2c2"/>
|
||||
<configure name="USE_MAGNETOMETER" value="FALSE"/>
|
||||
</module>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="30"/>
|
||||
</module>
|
||||
<module name="ins"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
</firmware>
|
||||
|
||||
<firmware name="test_progs">
|
||||
<target name="test_sys_time_timer" board="naze32_rev5"/>
|
||||
<target name="test_sys_time_usleep" board="naze32_rev5"/>
|
||||
<target name="test_telemetry" board="naze32_rev5"/>
|
||||
<target name="test_math_trig_lut" board="naze32_rev5"/>
|
||||
<target name="test_imu" board="naze32_rev5">
|
||||
<module name="imu" type="mpu6000"/>
|
||||
</target>
|
||||
<target name="test_ahrs" board="naze32_rev5">
|
||||
<module name="imu" type="mpu6000"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<configure name="USE_MAGNETOMETER" value="FALSE"/>
|
||||
</target>
|
||||
</firmware>
|
||||
|
||||
<modules>
|
||||
<module name="mag" type="hmc58xx">
|
||||
<define name="MODULE_HMC58XX_UPDATE_AHRS"/>
|
||||
<configure name="MAG_HMC58XX_I2C_DEV" value="i2c2"/>
|
||||
</module>
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
</modules>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<!-- Naze32 Hexa-X standard -->
|
||||
<servo name="BACK_RIGHT" no="0" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="FRONT_RIGHT" no="1" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="BACK_LEFT" no="2" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="FRONT_LEFT" no="3" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="CENTER_RIGHT" no="4" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="CENTER_LEFT" no="5" min="1000" neutral="1100" max="1900"/>
|
||||
</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"/>
|
||||
</commands>
|
||||
|
||||
<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="6"/>
|
||||
<define name="SCALE" value="256"/>
|
||||
<!-- https://github.com/gearwolf-OP/Mini-Hexacopter >
|
||||
< Naze32 Hexa-X standard BR_CC FR_CC BL_C FL_C CR_C CL_CC -->
|
||||
<define name="ROLL_COEF" value="{ 106, 150, -106, -150, 256, -256}"/>
|
||||
<define name="PITCH_COEF" value="{-256, 256, -256, 256, 0, 0}"/>
|
||||
<define name="YAW_COEF" value="{ 199, 192, -199, -192, -256, 256}"/>
|
||||
<define name="THRUST_COEF" value="{ 256, 256, 256, 256, 256, 256}"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="BACK_RIGHT" value="motor_mixing.commands[0]"/>
|
||||
<set servo="FRONT_RIGHT" value="motor_mixing.commands[1]"/>
|
||||
<set servo="BACK_LEFT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="FRONT_LEFT" value="motor_mixing.commands[3]"/>
|
||||
<set servo="CENTER_RIGHT" value="motor_mixing.commands[4]"/>
|
||||
<set servo="CENTER_LEFT" value="motor_mixing.commands[5]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="BODY_TO_IMU_PHI" value="180." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section name="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="90." 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="400" 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="400" 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="250" 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="1000"/>
|
||||
<define name="PHI_DGAIN" value="400"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1000"/>
|
||||
<define name="THETA_DGAIN" value="400"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="500"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="300"/>
|
||||
</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="20" 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_RATE_DIRECT"/>
|
||||
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_DIRECT"/>
|
||||
<define name="MODE_AUTO2" value="AP_MODE_HOVER_Z_HOLD"/>
|
||||
</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"/>
|
||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="30000"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,212 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="Hexarotor KroozSD Big Rotorcraft Edition Mkk">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="krooz_sd"/>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="mkk">
|
||||
<define name="I2C_TRANSACTION_QUEUE_LEN" value="10"/>
|
||||
<define name="I2C1_CLOCK_SPEED" value="42000"/>
|
||||
</module>
|
||||
<module name="stabilization" type="int_euler"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="imu" type="krooz_sd_memsic"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins" type="hff"/>
|
||||
|
||||
<define name="NO_RC_THRUST_LIMIT"/>
|
||||
<define name="FAILSAFE_GROUND_DETECT" value="1"/>
|
||||
<define name="THRESHOLD_GROUND_DETECT" value="12."/>
|
||||
<define name="USE_GPS_ACC4R" value="1"/>
|
||||
<define name="HFF_R_POS_MIN" value="2.5"/>
|
||||
<define name="HFF_R_SPEED_MIN" value="2."/>
|
||||
<define name="VF_FLOAT_MEAS_NOISE" value="2."/>
|
||||
<define name="USE_ADC_2" value="1"/>
|
||||
</firmware>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="geo_mag"/>
|
||||
<module name="osd_max7456"/>
|
||||
<module name="hott_telemetry"/>
|
||||
</modules>
|
||||
|
||||
<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"/>
|
||||
</commands>
|
||||
|
||||
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<define name="NB" value="6"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 , 0x5A , 0x5C }"/>
|
||||
</section>
|
||||
|
||||
<servos driver="Mkk">
|
||||
<servo name="FF" no="0" min="0" neutral="3" max="210"/>
|
||||
<servo name="FR" no="1" min="0" neutral="3" max="210"/>
|
||||
<servo name="DR" no="2" min="0" neutral="3" max="210"/>
|
||||
<servo name="DD" no="3" min="0" neutral="3" max="210"/>
|
||||
<servo name="DL" no="4" min="0" neutral="3" max="210"/>
|
||||
<servo name="FL" no="5" min="0" neutral="3" max="210"/>
|
||||
</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="6"/>
|
||||
<define name="SCALE" value="256"/>
|
||||
<define name="ROLL_COEF" value="{ 0, -256, -256, 0, 256, 256 }"/>
|
||||
<define name="PITCH_COEF" value="{ 256, 128, -128, -256, -128, 128 }"/>
|
||||
<define name="YAW_COEF" value="{ -256, 249, -249, 256, -249, 249 }"/>
|
||||
<define name="THRUST_COEF" value="{ 256, 256, 256, 256, 256, 256 }"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="FF" value="motor_mixing.commands[0]"/>
|
||||
<set servo="FR" value="motor_mixing.commands[1]"/>
|
||||
<set servo="DR" value="motor_mixing.commands[2]"/>
|
||||
<set servo="DD" value="motor_mixing.commands[3]"/>
|
||||
<set servo="DL" value="motor_mixing.commands[4]"/>
|
||||
<set servo="FL" value="motor_mixing.commands[5]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
|
||||
<!-- replace this with your own calibration -->
|
||||
<define name="GYRO_P_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_P_SENS" value="0.5454" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value="0.5454" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value="0.5454" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="32641"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="32392"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="32483"/>
|
||||
<define name="ACCEL_X_SENS" value="0.909261974155" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="0.913497864536" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="0.927158126989" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="-282"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-78"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="109"/>
|
||||
<define name="MAG_X_SENS" value="3.33430456557" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.53180739126" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.68297143457" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="GRAVITY_HEURISTIC_FACTOR" value="30"/>
|
||||
<define name="H_X" value="0.3586845"/>
|
||||
<define name="H_Y" value="0.0168651"/>
|
||||
<define name="H_Z" value="0.933303"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</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="50." 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="225" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.85"/>
|
||||
<define name="REF_MAX_P" value="180." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(400.)"/>
|
||||
|
||||
<define name="REF_OMEGA_Q" value="225" unit="deg/s"/>
|
||||
<define name="REF_ZETA_Q" value="0.85"/>
|
||||
<define name="REF_MAX_Q" value="180." unit="deg/s"/>
|
||||
<define name="REF_MAX_QDOT" value="RadOfDeg(400.)"/>
|
||||
|
||||
<define name="REF_OMEGA_R" value="200" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.85"/>
|
||||
<define name="REF_MAX_R" value="70." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(360.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="1500"/>
|
||||
<define name="PHI_DGAIN" value="600"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1500"/>
|
||||
<define name="THETA_DGAIN" value="600"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="4000"/>
|
||||
<define name="PSI_DGAIN" value="1500"/>
|
||||
<define name="PSI_IGAIN" value="300"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="2000"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="REF_MIN_ZDD" value="-0.2*9.81"/> <!-- max descent acceleration in m/s2 -->
|
||||
<define name="REF_MAX_ZDD" value="0.2*9.81"/> <!-- max climb acceleration in m/s2 -->
|
||||
<define name="REF_MIN_ZD" value="-3."/> <!-- max descent speed in m/s -->
|
||||
<define name="REF_MAX_ZD" value="3."/> <!-- max climb speed in m/s -->
|
||||
<define name="ADAPT_NOISE_FACTOR" value="0.7"/>
|
||||
<define name="HOVER_KP" value="130"/>
|
||||
<define name="HOVER_KD" value="150"/>
|
||||
<define name="HOVER_KI" value="10"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="USE_REF" value="1"/>
|
||||
<define name="USE_SPEED_REF" value="1"/> <!-- using RC to control horizontal setpoint -->
|
||||
<define name="MAX_BANK" value="27" unit="deg"/>
|
||||
<define name="REF_MAX_ACCEL" value="7."/> <!-- max reference horizontal acceleration in m/s2 -->
|
||||
<define name="REF_MAX_SPEED" value="2."/> <!-- max reference horizontal speed in m/s -->
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="120"/>
|
||||
<define name="IGAIN" value="10"/>
|
||||
<define name="AGAIN" value="10"/>
|
||||
</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>
|
||||
|
||||
<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_NAV"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CRITIC_BAT_LEVEL" value="14.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="14.3" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="16.8" unit="V"/>
|
||||
<!--uncomment next two lines together with a corresponding USE_ADC_2 define on the top of this file to use a current sensor
|
||||
(more about is here http://wiki.paparazziuav.org/wiki/Sensors/Current) -->
|
||||
<!--
|
||||
<define name="ADC_CHANNEL_CURRENT" value="ADC_2"/>
|
||||
<define name="MilliAmpereOfAdc(adc)" value="Max(0,(3100 - adc)*20)"/>
|
||||
-->
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,189 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="KroozSD fixedwing example">
|
||||
|
||||
<modules>
|
||||
</modules>
|
||||
|
||||
<firmware name="fixedwing">
|
||||
<target name="ap" board="krooz_sd"/>
|
||||
<target name="sim" board="pc"/>
|
||||
|
||||
<define name="LOITER_TRIM"/>
|
||||
<define name="AGR_CLIMB"/>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="imu" type="krooz_sd">
|
||||
<define name="KROOZ_GYRO_RANGE" value="MPU60X0_GYRO_RANGE_500"/>
|
||||
</module>
|
||||
<module name="ahrs" type="float_dcm">
|
||||
<module name="ins" type="alt_float"/>
|
||||
<module name="control"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="navigation"/>
|
||||
<module name="actuators" type="pwm"/>
|
||||
|
||||
<configure name="PERIODIC_FREQUENCY" value="120"/>
|
||||
<configure name="AHRS_PROPAGATE_FREQUENCY" value="120"/>
|
||||
<configure name="AHRS_CORRECT_FREQUENCY" value="120"/>
|
||||
</firmware>
|
||||
|
||||
<!-- commands section -->
|
||||
<servos driver="Pwm">
|
||||
<servo name="MOTOR" no="4" min="1100" neutral="1100" max="1900"/>
|
||||
<servo name="ELEVATOR" no="3" min="1200" neutral="1430" max="1800"/>
|
||||
<servo name="RUDDER" no="1" min="1200" neutral="1619" max="2000"/>
|
||||
<servo name="AILERON_RIGHT" no="0" max="1800" neutral="1521" min="1200"/>
|
||||
<servo name="AILERON_LEFT" no="2" max="1800" neutral="1480" min="1200"/>
|
||||
</servos>
|
||||
|
||||
<commands>
|
||||
<axis name="THROTTLE" failsafe_value="0"/>
|
||||
<axis name="ROLL" failsafe_value="0"/>
|
||||
<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="AILERON_DIFF" value="0.3"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<set servo="MOTOR" value="@THROTTLE"/>
|
||||
<set servo="ELEVATOR" value="@PITCH"/>
|
||||
<let var="roll" value="@ROLL"/>
|
||||
<set servo="AILERON_LEFT" value="($roll < 0 ? 1 : AILERON_DIFF) * $roll"/>
|
||||
<set servo="AILERON_RIGHT" value="($roll < 0 ? AILERON_DIFF : 1) * $roll"/>
|
||||
<set servo="RUDDER" value="@YAW"/>
|
||||
</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_">
|
||||
<!-- replace this with your own calibration -->
|
||||
<define name="GYRO_P_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_P_SENS" value="1.0908" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value="1.0908" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value="1.0908" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="-48"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="86"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-479"/>
|
||||
<define name="ACCEL_X_SENS" value="0.6131" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="0.6131" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="0.6131" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="-282"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-78"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="109"/>
|
||||
<define name="MAG_X_SENS" value="3.33430456557" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.53180739126" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.68297143457" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
<define name="ROLL_NEUTRAL_DEFAULT" value="0." unit="rad"/>
|
||||
<define name="PITCH_NEUTRAL_DEFAULT" value="0." unit="rad"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
|
||||
<define name="MilliAmpereOfAdc(_adc)" value="(_adc-156)*18.2"/>
|
||||
</section>
|
||||
|
||||
<section name="MISC">
|
||||
<define name="MINIMUM_AIRSPEED" value="10." unit="m/s"/>
|
||||
<define name="NOMINAL_AIRSPEED" value="12." unit="m/s"/>
|
||||
<define name="MAXIMUM_AIRSPEED" value="19." 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."/>
|
||||
<define name="UNLOCKED_HOME_MODE" value="TRUE"/>
|
||||
</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.06"/>
|
||||
<!-- outer loop saturation -->
|
||||
<define name="ALTITUDE_MAX_CLIMB" value="3."/>
|
||||
|
||||
<!-- auto throttle inner loop -->
|
||||
<define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.5"/>
|
||||
<define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
|
||||
<define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.85"/>
|
||||
<define name="AUTO_THROTTLE_LOITER_TRIM" value="1000"/>
|
||||
<define name="AUTO_THROTTLE_DASH_TRIM" value="-1200"/>
|
||||
<define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.116999998689" unit="%/(m/s)"/>
|
||||
<define name="AUTO_THROTTLE_PGAIN" value="0.0109999999404"/>
|
||||
<define name="AUTO_THROTTLE_IGAIN" value="0.119000002742"/>
|
||||
<define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.082999996841"/>
|
||||
|
||||
<!-- auto pitch inner loop -->
|
||||
<!--define name="AUTO_PITCH_PGAIN" value="-0.06"/>
|
||||
<define name="AUTO_PITCH_IGAIN" value="0.0"/>
|
||||
<define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
|
||||
<define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/-->
|
||||
|
||||
<define name="THROTTLE_SLEW" value="0.1"/>
|
||||
</section>
|
||||
|
||||
|
||||
<section name="HORIZONTAL CONTROL" prefix="H_CTL_">
|
||||
<define name="COURSE_PGAIN" value="0.878000020981"/>
|
||||
<define name="ROLL_MAX_SETPOINT" value="0.60" unit="radians"/>
|
||||
<define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
|
||||
<define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
|
||||
|
||||
<define name="ROLL_ATTITUDE_GAIN" value="11359.2226562"/>
|
||||
<define name="ROLL_RATE_GAIN" value="2000."/>
|
||||
|
||||
<define name="PITCH_PGAIN" value="9587.37890625"/>
|
||||
<define name="PITCH_DGAIN" value="0.4"/>
|
||||
|
||||
<define name="AILERON_OF_THROTTLE" value="0.0"/>
|
||||
<define name="ELEVATOR_OF_ROLL" value="1500"/>
|
||||
</section>
|
||||
|
||||
<section name="NAV">
|
||||
<define name="NAV_GLIDE_PITCH_TRIM" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="AGGRESSIVE" prefix="AGR_">
|
||||
<define name="BLEND_START" value="50"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
|
||||
<define name="BLEND_END" value="15"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
|
||||
<define name="CLIMB_THROTTLE" value="0.9"/><!-- Gaz for Aggressive Climb -->
|
||||
<define name="CLIMB_PITCH" value="0.35"/><!-- Pitch for Aggressive Climb -->
|
||||
<define name="DESCENT_THROTTLE" value="0.05"/><!-- Gaz for Aggressive Decent -->
|
||||
<define name="DESCENT_PITCH" value="-0.35"/><!-- 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.17" unit="rad"/>
|
||||
<define name="DEFAULT_PITCH" value="0.08" unit="rad"/>
|
||||
<define name="HOME_RADIUS" value="100" unit="m"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,212 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="Hexarotor KroozSD Mkk">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="krooz_sd"/>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="mkk">
|
||||
<define name="I2C_TRANSACTION_QUEUE_LEN" value="10"/>
|
||||
<define name="I2C1_CLOCK_SPEED" value="42000"/>
|
||||
</module>
|
||||
<module name="stabilization" type="int_euler"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="imu" type="krooz_sd"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins" type="hff"/>
|
||||
|
||||
<define name="NO_RC_THRUST_LIMIT"/>
|
||||
<define name="FAILSAFE_GROUND_DETECT" value="1"/>
|
||||
<define name="THRESHOLD_GROUND_DETECT" value="12."/>
|
||||
<define name="USE_GPS_ACC4R" value="1"/>
|
||||
<define name="HFF_R_POS_MIN" value="2.5"/>
|
||||
<define name="HFF_R_SPEED_MIN" value="2."/>
|
||||
<define name="VF_FLOAT_MEAS_NOISE" value="2."/>
|
||||
<define name="USE_ADC_2" value="1"/>
|
||||
</firmware>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="geo_mag"/>
|
||||
<module name="osd_max7456"/>
|
||||
<module name="hott_telemetry"/>
|
||||
</modules>
|
||||
|
||||
<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"/>
|
||||
</commands>
|
||||
|
||||
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<define name="NB" value="6"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 , 0x5A , 0x5C }"/>
|
||||
</section>
|
||||
|
||||
<servos driver="Mkk">
|
||||
<servo name="FF" no="0" min="0" neutral="3" max="210"/>
|
||||
<servo name="FR" no="1" min="0" neutral="3" max="210"/>
|
||||
<servo name="DR" no="2" min="0" neutral="3" max="210"/>
|
||||
<servo name="DD" no="3" min="0" neutral="3" max="210"/>
|
||||
<servo name="DL" no="4" min="0" neutral="3" max="210"/>
|
||||
<servo name="FL" no="5" min="0" neutral="3" max="210"/>
|
||||
</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="6"/>
|
||||
<define name="SCALE" value="256"/>
|
||||
<define name="ROLL_COEF" value="{ 0, -256, -256, 0, 256, 256 }"/>
|
||||
<define name="PITCH_COEF" value="{ 256, 128, -128, -256, -128, 128 }"/>
|
||||
<define name="YAW_COEF" value="{ -256, 249, -249, 256, -249, 249 }"/>
|
||||
<define name="THRUST_COEF" value="{ 256, 256, 256, 256, 256, 256 }"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="FF" value="motor_mixing.commands[0]"/>
|
||||
<set servo="FR" value="motor_mixing.commands[1]"/>
|
||||
<set servo="DR" value="motor_mixing.commands[2]"/>
|
||||
<set servo="DD" value="motor_mixing.commands[3]"/>
|
||||
<set servo="DL" value="motor_mixing.commands[4]"/>
|
||||
<set servo="FL" value="motor_mixing.commands[5]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
|
||||
<!-- replace this with your own calibration -->
|
||||
<define name="GYRO_P_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_P_SENS" value="0.5454" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value="0.5454" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value="0.5454" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="-48"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="86"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-479"/>
|
||||
<define name="ACCEL_X_SENS" value="0.6131" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="0.6131" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="0.6131" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="-282"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-78"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="109"/>
|
||||
<define name="MAG_X_SENS" value="3.33430456557" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.53180739126" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.68297143457" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="GRAVITY_HEURISTIC_FACTOR" value="30"/>
|
||||
<define name="H_X" value="0.3586845"/>
|
||||
<define name="H_Y" value="0.0168651"/>
|
||||
<define name="H_Z" value="0.933303"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</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="50." 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="225" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.85"/>
|
||||
<define name="REF_MAX_P" value="180." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(400.)"/>
|
||||
|
||||
<define name="REF_OMEGA_Q" value="225" unit="deg/s"/>
|
||||
<define name="REF_ZETA_Q" value="0.85"/>
|
||||
<define name="REF_MAX_Q" value="180." unit="deg/s"/>
|
||||
<define name="REF_MAX_QDOT" value="RadOfDeg(400.)"/>
|
||||
|
||||
<define name="REF_OMEGA_R" value="200" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.85"/>
|
||||
<define name="REF_MAX_R" value="70." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(360.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="1500"/>
|
||||
<define name="PHI_DGAIN" value="600"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1500"/>
|
||||
<define name="THETA_DGAIN" value="600"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="4000"/>
|
||||
<define name="PSI_DGAIN" value="1500"/>
|
||||
<define name="PSI_IGAIN" value="300"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="2000"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="REF_MIN_ZDD" value="-0.2*9.81"/> <!-- max descent acceleration in m/s2 -->
|
||||
<define name="REF_MAX_ZDD" value="0.2*9.81"/> <!-- max climb acceleration in m/s2 -->
|
||||
<define name="REF_MIN_ZD" value="-3."/> <!-- max descent speed in m/s -->
|
||||
<define name="REF_MAX_ZD" value="3."/> <!-- max climb speed in m/s -->
|
||||
<define name="ADAPT_NOISE_FACTOR" value="0.7"/>
|
||||
<define name="HOVER_KP" value="130"/>
|
||||
<define name="HOVER_KD" value="150"/>
|
||||
<define name="HOVER_KI" value="10"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="USE_REF" value="1"/>
|
||||
<define name="USE_SPEED_REF" value="1"/> <!-- using RC to control horizontal setpoint -->
|
||||
<define name="MAX_BANK" value="27" unit="deg"/>
|
||||
<define name="REF_MAX_ACCEL" value="7."/> <!-- max reference horizontal acceleration in m/s2 -->
|
||||
<define name="REF_MAX_SPEED" value="2."/> <!-- max reference horizontal speed in m/s -->
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="120"/>
|
||||
<define name="IGAIN" value="10"/>
|
||||
<define name="AGAIN" value="10"/>
|
||||
</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>
|
||||
|
||||
<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_NAV"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CRITIC_BAT_LEVEL" value="14.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="14.3" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="16.8" unit="V"/>
|
||||
<!--uncomment next two lines together with a corresponding USE_ADC_2 define on the top of this file to use a current sensor
|
||||
(more about is here http://wiki.paparazziuav.org/wiki/Sensors/Current) -->
|
||||
<!--
|
||||
<define name="ADC_CHANNEL_CURRENT" value="ADC_2"/>
|
||||
<define name="MilliAmpereOfAdc(adc)" value="Max(0,(3100 - adc)*20)"/>
|
||||
-->
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,217 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="Oktorotor KroozSD Mkk">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="krooz_sd"/>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="mkk">
|
||||
<define name="I2C_TRANSACTION_QUEUE_LEN" value="10"/>
|
||||
<define name="I2C1_CLOCK_SPEED" value="42000"/>
|
||||
</module>
|
||||
<module name="stabilization" type="int_euler"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="imu" type="krooz_sd"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins" type="hff"/>
|
||||
|
||||
<define name="NO_RC_THRUST_LIMIT"/>
|
||||
<define name="FAILSAFE_GROUND_DETECT" value="1"/>
|
||||
<define name="THRESHOLD_GROUND_DETECT" value="12."/>
|
||||
<define name="USE_GPS_ACC4R" value="1"/>
|
||||
<define name="HFF_R_POS_MIN" value="2.5"/>
|
||||
<define name="HFF_R_SPEED_MIN" value="2."/>
|
||||
<define name="VF_FLOAT_MEAS_NOISE" value="2."/>
|
||||
<define name="USE_ADC_2" value="1"/>
|
||||
</firmware>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="geo_mag"/>
|
||||
<module name="osd_max7456"/>
|
||||
<module name="hott_telemetry"/>
|
||||
</modules>
|
||||
|
||||
<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"/>
|
||||
</commands>
|
||||
|
||||
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<define name="NB" value="8"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 , 0x5A, 0x5C, 0x5E, 0x60}"/>
|
||||
</section>
|
||||
|
||||
<servos driver="Mkk">
|
||||
<servo name="FF" no="0" min="0" neutral="3" max="210"/>
|
||||
<servo name="FR" no="1" min="0" neutral="3" max="210"/>
|
||||
<servo name="RR" no="2" min="0" neutral="3" max="210"/>
|
||||
<servo name="DR" no="3" min="0" neutral="3" max="210"/>
|
||||
<servo name="DD" no="4" min="0" neutral="3" max="210"/>
|
||||
<servo name="DL" no="5" min="0" neutral="3" max="210"/>
|
||||
<servo name="LL" no="6" min="0" neutral="3" max="210"/>
|
||||
<servo name="FL" no="7" min="0" neutral="3" max="210"/>
|
||||
</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="MAX_SATURATION_OFFSET" value="2000"/>
|
||||
<define name="NB_MOTOR" value="8"/>
|
||||
<define name="SCALE" value="256"/>
|
||||
<define name="ROLL_COEF" value="{ 108, -108, -256, -256, -108, 108, 256, 256}"/>
|
||||
<define name="PITCH_COEF" value="{ 256, 256, 108, -108, -256, -256, -108, 108}"/>
|
||||
<define name="YAW_COEF" value="{ -256, 256, -256, 256, -256, 256, -256, 256}"/>
|
||||
<define name="THRUST_COEF" value="{ 256, 256, 256, 256, 256, 256, 256, 256}"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="FF" value="motor_mixing.commands[0]"/>
|
||||
<set servo="FR" value="motor_mixing.commands[1]"/>
|
||||
<set servo="RR" value="motor_mixing.commands[2]"/>
|
||||
<set servo="DR" value="motor_mixing.commands[3]"/>
|
||||
<set servo="DD" value="motor_mixing.commands[4]"/>
|
||||
<set servo="DL" value="motor_mixing.commands[5]"/>
|
||||
<set servo="LL" value="motor_mixing.commands[6]"/>
|
||||
<set servo="FL" value="motor_mixing.commands[7]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
|
||||
<!-- replace this with your own calibration -->
|
||||
<define name="GYRO_P_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_P_SENS" value="0.5454" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value="0.5454" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value="0.5454" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="-48"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="86"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-479"/>
|
||||
<define name="ACCEL_X_SENS" value="0.6131" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="0.6131" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="0.6131" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="-282"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-78"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="109"/>
|
||||
<define name="MAG_X_SENS" value="3.33430456557" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.53180739126" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.68297143457" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="GRAVITY_HEURISTIC_FACTOR" value="30"/>
|
||||
<define name="H_X" value="0.3586845"/>
|
||||
<define name="H_Y" value="0.0168651"/>
|
||||
<define name="H_Z" value="0.933303"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</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="90." 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="225" unit="deg/s"/>
|
||||
<define name="REF_ZETA_P" value="0.85"/>
|
||||
<define name="REF_MAX_P" value="180." unit="deg/s"/>
|
||||
<define name="REF_MAX_PDOT" value="RadOfDeg(400.)"/>
|
||||
|
||||
<define name="REF_OMEGA_Q" value="225" unit="deg/s"/>
|
||||
<define name="REF_ZETA_Q" value="0.85"/>
|
||||
<define name="REF_MAX_Q" value="180." unit="deg/s"/>
|
||||
<define name="REF_MAX_QDOT" value="RadOfDeg(400.)"/>
|
||||
|
||||
<define name="REF_OMEGA_R" value="200" unit="deg/s"/>
|
||||
<define name="REF_ZETA_R" value="0.85"/>
|
||||
<define name="REF_MAX_R" value="70." unit="deg/s"/>
|
||||
<define name="REF_MAX_RDOT" value="RadOfDeg(360.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="1500"/>
|
||||
<define name="PHI_DGAIN" value="600"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1500"/>
|
||||
<define name="THETA_DGAIN" value="600"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="4000"/>
|
||||
<define name="PSI_DGAIN" value="1500"/>
|
||||
<define name="PSI_IGAIN" value="300"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="2000"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="REF_MIN_ZDD" value="-0.2*9.81"/> <!-- max descent acceleration in m/s2 -->
|
||||
<define name="REF_MAX_ZDD" value="0.2*9.81"/> <!-- max climb acceleration in m/s2 -->
|
||||
<define name="REF_MIN_ZD" value="-3."/> <!-- max descent speed in m/s -->
|
||||
<define name="REF_MAX_ZD" value="3."/> <!-- max climb speed in m/s -->
|
||||
<define name="ADAPT_NOISE_FACTOR" value="0.7"/>
|
||||
<define name="HOVER_KP" value="130"/>
|
||||
<define name="HOVER_KD" value="150"/>
|
||||
<define name="HOVER_KI" value="10"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="USE_REF" value="1"/>
|
||||
<define name="USE_SPEED_REF" value="1"/> <!-- using RC to control horizontal setpoint -->
|
||||
<define name="MAX_BANK" value="27" unit="deg"/>
|
||||
<define name="REF_MAX_ACCEL" value="7."/> <!-- max reference horizontal acceleration in m/s2 -->
|
||||
<define name="REF_MAX_SPEED" value="2."/> <!-- max reference horizontal speed in m/s -->
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="120"/>
|
||||
<define name="IGAIN" value="10"/>
|
||||
<define name="AGAIN" value="10"/>
|
||||
</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>
|
||||
|
||||
<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_NAV"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CRITIC_BAT_LEVEL" value="13.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="13.2" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="16.8" unit="V"/>
|
||||
<!--uncomment next two lines together with a corresponding USE_ADC_2 define on the top of this file to use a current sensor
|
||||
(more about is here http://wiki.paparazziuav.org/wiki/Sensors/Current) -->
|
||||
<!--
|
||||
<define name="ADC_CHANNEL_CURRENT" value="ADC_2"/>
|
||||
<define name="MilliAmpereOfAdc(adc)" value="Max(0,(3100 - adc)*20)"/>
|
||||
-->
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,201 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<airframe name="Quadrotor KroozSD Pwm">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="krooz_sd">
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="radio_control" type="ppm"/>
|
||||
</target>
|
||||
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="SERVO_HZ" value="400"/>
|
||||
</module>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="imu" type="krooz_sd"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_euler"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins" type="hff"/>
|
||||
<module name="motor_mixing"/>
|
||||
|
||||
<define name="NO_RC_THRUST_LIMIT"/>
|
||||
<define name="USE_RC_FP_BLOCK_SWITCHING"/>
|
||||
<define name="USE_ATTITUDE_REF" value="0"/>
|
||||
</firmware>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="geo_mag"/>
|
||||
<module name="osd_max7456"/>
|
||||
<module name="hott_telemetry"/>
|
||||
</modules>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="FRONT" no="0" min="1000" neutral="1190" max="1900"/>
|
||||
<servo name="BACK" no="1" min="1000" neutral="1190" max="1900"/>
|
||||
<servo name="RIGHT" no="2" min="1000" neutral="1190" max="1900"/>
|
||||
<servo name="LEFT" no="3" min="1000" neutral="1190" max="1900"/>
|
||||
</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"/>
|
||||
</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="RIGHT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="LEFT" 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="512"/>
|
||||
<define name="ROLL_COEF" value="{ 0, MOTOR_MIXING_SCALE, 0, -MOTOR_MIXING_SCALE }"/>
|
||||
<define name="PITCH_COEF" value="{ MOTOR_MIXING_SCALE, 0, -MOTOR_MIXING_SCALE, 0 }"/>
|
||||
<define name="YAW_COEF" value="{ -MOTOR_MIXING_SCALE, MOTOR_MIXING_SCALE, -MOTOR_MIXING_SCALE, MOTOR_MIXING_SCALE }"/>
|
||||
<define name="THRUST_COEF" value="{ MOTOR_MIXING_SCALE, MOTOR_MIXING_SCALE, MOTOR_MIXING_SCALE, MOTOR_MIXING_SCALE }"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
|
||||
<!-- replace this with your own calibration -->
|
||||
<define name="GYRO_P_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="0"/>
|
||||
<define name="GYRO_P_SENS" value="0.5454" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value="0.5454" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value="0.5454" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="-48"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="86"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="-479"/>
|
||||
<define name="ACCEL_X_SENS" value="0.6131" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="0.6131" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="0.6131" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="-282"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-78"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="109"/>
|
||||
<define name="MAG_X_SENS" value="3.33430456557" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.53180739126" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.68297143457" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="PROPAGATE_LOW_PASS_RATES" value="1"/>
|
||||
<define name="GRAVITY_HEURISTIC_FACTOR" value="30"/>
|
||||
<define name="H_X" value="0.365258"/>
|
||||
<define name="H_Y" value="0.015505"/>
|
||||
<define name="H_Z" value="0.930777"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</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="90." 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="400" 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="400" 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="250" 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(180.)"/>
|
||||
|
||||
<!-- feedback -->
|
||||
<define name="PHI_PGAIN" value="850"/>
|
||||
<define name="PHI_DGAIN" value="400"/>
|
||||
<define name="PHI_IGAIN" value="100"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="850"/>
|
||||
<define name="THETA_DGAIN" value="400"/>
|
||||
<define name="THETA_IGAIN" value="100"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="4000"/>
|
||||
<define name="PSI_DGAIN" value="1500"/>
|
||||
<define name="PSI_IGAIN" value="300"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="1000"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="REF_MIN_ZDD" value="-0.2*9.81"/> <!-- max descent acceleration -->
|
||||
<define name="REF_MAX_ZDD" value="0.2*9.81"/> <!-- max climb acceleration -->
|
||||
<define name="REF_MIN_ZD" value="-3."/> <!-- max descent speed -->
|
||||
<define name="REF_MAX_ZD" value="3."/> <!-- max climb speed -->
|
||||
<define name="HOVER_KP" value="120"/>
|
||||
<define name="HOVER_KD" value="80"/>
|
||||
<define name="HOVER_KI" value="20"/>
|
||||
<define name="RC_DESCENT_COEF" value ="200"/>
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="USE_REF" value="1"/>
|
||||
<define name="USE_SPEED_REF" value="1"/> <!-- using RC to control horizontal setpoint -->
|
||||
<define name="MAX_BANK" value="27" unit="deg"/>
|
||||
<define name="REF_MAX_ACCEL" value="7."/> <!-- max reference horizontal acceleration in m/s2 -->
|
||||
<define name="REF_MAX_SPEED" value="2."/> <!-- max reference horizontal speed in m/s -->
|
||||
<define name="RC_SPEED_DEAD_BAND" value="200000"/>
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="120"/>
|
||||
<define name="IGAIN" value="10"/>
|
||||
<define name="AGAIN" value="10"/>
|
||||
</section>
|
||||
|
||||
<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="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_NAV"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CRITIC_BAT_LEVEL" value="14.0" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="14.2" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="16.8" unit="V"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,192 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is an asctec frame equiped with Lisa/L#3 and asctec V2 controllers -->
|
||||
|
||||
<airframe name="lisa_asctec">
|
||||
|
||||
<servos driver="Asctec_v2">
|
||||
<servo name="FRONT" no="0" min="0" neutral="3" max="200"/>
|
||||
<servo name="BACK" no="1" min="0" neutral="3" max="200"/>
|
||||
<servo name="LEFT" no="2" min="0" neutral="3" max="200"/>
|
||||
<servo name="RIGHT" no="3" min="0" neutral="3" max="200"/>
|
||||
</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>
|
||||
|
||||
<!-- for the sim -->
|
||||
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<define name="NB" value="4"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
|
||||
</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"/>
|
||||
<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>
|
||||
|
||||
<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="RIGHT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="LEFT" value="motor_mixing.commands[3]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="GYRO_P_NEUTRAL" value="32276"/>
|
||||
<define name="GYRO_Q_NEUTRAL" value="33987"/>
|
||||
<define name="GYRO_R_NEUTRAL" value="32801"/>
|
||||
<define name="GYRO_P_SENS" value="0.92466" integer="16"/>
|
||||
<define name="GYRO_Q_SENS" value="0.93226" integer="16"/>
|
||||
<define name="GYRO_R_SENS" value="0.92943" integer="16"/>
|
||||
<define name="GYRO_PQ_SENS" value="0.0" integer="16"/>
|
||||
<define name="GYRO_PR_SENS" value="0.0" integer="16"/>
|
||||
<define name="GYRO_QR_SENS" value="0.0" integer="16"/>
|
||||
|
||||
<define name="ACCEL_X_NEUTRAL" value="25875"/>
|
||||
<define name="ACCEL_Y_NEUTRAL" value="26273"/>
|
||||
<define name="ACCEL_Z_NEUTRAL" value="26152"/>
|
||||
<define name="ACCEL_X_SENS" value="1.8788156268" integer="16"/>
|
||||
<define name="ACCEL_Y_SENS" value="1.88941543145" integer="16"/>
|
||||
<define name="ACCEL_Z_SENS" value="1.90349115464" integer="16"/>
|
||||
<define name="ACCEL_XY_SENS" value="0.0" integer="16"/>
|
||||
<define name="ACCEL_XZ_SENS" value="0.0" integer="16"/>
|
||||
<define name="ACCEL_YZ_SENS" value="0.0" integer="16"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="0"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="0"/>
|
||||
<define name="MAG_X_SENS" value="1." integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="1." integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="1." 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="45." unit="deg"/>
|
||||
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<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_HOVER_Z_HOLD"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" 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_R" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="400" 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="400" 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="250" 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="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
||||
<define name="HOVER_KP" value="500"/>
|
||||
<define name="HOVER_KD" value="200"/>
|
||||
<define name="HOVER_KI" value="100"/>
|
||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.4"/>
|
||||
<define name="ADAPT_THROTTLE_ENABLED" value="FALSE"/>
|
||||
</section>
|
||||
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="IGAIN" value="0"/>
|
||||
</section>
|
||||
|
||||
<section name="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>
|
||||
|
||||
<modules main_freq="512">
|
||||
</modules>
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_l_1.1">
|
||||
<!-- <define name="ACTUATORS_START_DELAY" value="1"/> -->
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="asctec_v2"/>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<define name="USE_I2C_ACTUATORS_REBOOT_HACK"/>
|
||||
</target>
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="mkk"/>
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="spektrum">
|
||||
<define name="RADIO_MODE" value="RADIO_AUX2"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
|
||||
<define name="RADIO_CONTROL_SPEKTRUM_SIGNS" value="\{1,1,-1,1,-1,-1,-1,1,1,1,1,1\}"/>
|
||||
</module>
|
||||
|
||||
<module name="imu" type="b2_v1.1"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_euler"/>
|
||||
<module name="ahrs" type="int_cmpl_euler"/>
|
||||
<module name="ins"/>
|
||||
</firmware>
|
||||
|
||||
</airframe>
|
||||
@@ -1,189 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a quadrotor frame with the OpenPilot CC3D board:
|
||||
* Autopilot: OpenPilot CC3D https://www.openpilot.org/product/coptercontrol/
|
||||
-->
|
||||
|
||||
<airframe name="QuadCC3D">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="cc3d">
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="spektrum">
|
||||
<define name="RADIO_MODE" value="RADIO_AUX1"/>
|
||||
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
|
||||
</module>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="SERVO_HZ" value="400"/>
|
||||
</module>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="imu" type="mpu6000"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="30"/>
|
||||
</module>
|
||||
<module name="ins"/>
|
||||
|
||||
<!-- CC3D board does not have a mag -->
|
||||
<configure name="USE_MAGNETOMETER" value="FALSE"/>
|
||||
<!-- compress trig tables so it fits in board -->
|
||||
<define name="PPRZ_TRIG_INT_COMPR_FLASH"/>
|
||||
<define name="PPRZ_TRIG_INT_COMPR_LOW"/>
|
||||
</firmware>
|
||||
|
||||
<firmware name="test_progs">
|
||||
<target name="test_sys_time_timer" board="cc3d"/>
|
||||
<target name="test_sys_time_usleep" board="cc3d"/>
|
||||
<target name="test_telemetry" board="cc3d"/>
|
||||
<target name="test_imu" board="cc3d">
|
||||
<module name="imu" type="mpu6000"/>
|
||||
</target>
|
||||
<target name="test_ahrs" board="cc3d">
|
||||
<module name="imu" type="mpu6000"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<configure name="USE_MAGNETOMETER" value="FALSE"/>
|
||||
</target>
|
||||
<target name="test_actuators_pwm" board="cc3d"/>
|
||||
</firmware>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="FL" no="0" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="FR" no="1" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="BR" no="2" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="BL" no="3" min="1000" neutral="1100" max="2000"/>
|
||||
</servos>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<!-- front left (CW), front right (CCW), back right (CW), back left (CCW) -->
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<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="FL" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="FR" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BR" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BL" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="MAG_X_NEUTRAL" value="22"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-314"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="13"/>
|
||||
<define name="MAG_X_SENS" value="3.68160078446" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.6093630842" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.48306842466" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="180." 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_">
|
||||
<define name="H_X" value="0.3770441"/>
|
||||
<define name="H_Y" value="0.0193986"/>
|
||||
<define name="H_Z" value="0.9259921"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_PHI" value="60." unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="60." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_A" value="0"/>
|
||||
<define name="DEADBAND_E" value="0"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="400" 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="400" 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="250" 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="1000"/>
|
||||
<define name="PHI_DGAIN" value="400"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1000"/>
|
||||
<define name="THETA_DGAIN" value="400"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="500"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="300"/>
|
||||
</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="APPROX_FORCE_BY_THRUST" value="TRUE"/>
|
||||
<define name="MAX_BANK" value="30" 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="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"/>
|
||||
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
||||
<define name="JS_AXIS_MODE" value="4"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<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="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,220 +0,0 @@
|
||||
<!-- this is a CJMCU quadrotor, it comes with four brushed motors in an X configuration. -->
|
||||
|
||||
<!--
|
||||
The motor and rotor configuration is the following:
|
||||
|
||||
Front
|
||||
^
|
||||
|
|
||||
|
||||
Motor0(NW) Motor1(NE)
|
||||
CW CCW
|
||||
\ /
|
||||
,___,
|
||||
| |
|
||||
| |
|
||||
|___|
|
||||
/ \
|
||||
CCW CW
|
||||
Motor3(SW) Motor2(SE)
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
Applicable configuration:
|
||||
airframe="airframes/examples/cjmcu.xml"
|
||||
radio="radios/mc24q.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="cjmcu">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<define name="PPRZ_TRIG_INT_COMPR_FLASH"/>
|
||||
<define name="PPRZ_TRIG_INT_COMPR_HIGHEST"/>
|
||||
<target name="ap" board="cjmcu">
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<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="transparent"/>
|
||||
<module name="imu" type="mpu60x0_i2c">
|
||||
<configure name="IMU_MPU60X0_I2C_DEV" value="i2c1"/>
|
||||
<configure name="USE_MAGNETOMETER" value="FALSE"/>
|
||||
</module>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins"/>
|
||||
</firmware>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="send_imu_mag_current"/>
|
||||
</modules>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="NW" no="0" min="0" neutral="50" max="1000"/>
|
||||
<servo name="NE" no="1" min="0" neutral="50" max="1000"/>
|
||||
<servo name="SE" no="2" min="0" neutral="50" max="1000"/>
|
||||
<servo name="SW" 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="NW" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="NE" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="SE" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="SW" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<!-- front left (CW), front right (CCW), back right (CW), back left (CCW) -->
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="BODY_TO_IMU_PHI" value="180." 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"/>
|
||||
|
||||
<!-- 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_NAV"/>
|
||||
</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" 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"/>
|
||||
</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="39"/>
|
||||
<define name="DGAIN" value="50"/>
|
||||
<define name="IGAIN" value="19"/>
|
||||
</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>
|
||||
|
||||
</airframe>
|
||||
@@ -1,203 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a quadrotor frame with the Flip32 10DOF board (naze32 rev4 clone):
|
||||
* Autopilot: Abusemark Naze32 https://code.google.com/p/afrodevices/wiki/AfroFlight32
|
||||
* Actuators: PWM motor controllers http://wiki.paparazziuav.org/wiki/Subsystem/actuators#PWM
|
||||
-->
|
||||
|
||||
<airframe name="QuadFlip32">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="naze32_rev4">
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="SERVO_HZ" value="400"/>
|
||||
</module>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="imu" type="mpu60x0_i2c"/>
|
||||
<configure name="IMU_MPU60X0_I2C_DEV" value="i2c2"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="30"/>
|
||||
</module>
|
||||
<module name="ins"/>
|
||||
|
||||
<!-- compress trig tables so it fits in board -->
|
||||
<define name="PPRZ_TRIG_INT_COMPR_FLASH"/>
|
||||
<define name="PPRZ_TRIG_INT_COMPR_LOW"/>
|
||||
</firmware>
|
||||
|
||||
<firmware name="setup">
|
||||
<target name="tunnel" board="naze32_rev4"/>
|
||||
</firmware>
|
||||
|
||||
<firmware name="test_progs">
|
||||
<target name="test_sys_time_timer" board="naze32_rev4"/>
|
||||
<target name="test_sys_time_usleep" board="naze32_rev4"/>
|
||||
<target name="test_telemetry" board="naze32_rev4"/>
|
||||
<target name="test_imu" board="naze32_rev4">
|
||||
<module name="imu" type="mpu60x0_i2c"/>
|
||||
<configure name="IMU_MPU60X0_I2C_DEV" value="i2c2"/>
|
||||
</target>
|
||||
<target name="test_ahrs" board="naze32_rev4">
|
||||
<module name="imu" type="mpu60x0_i2c"/>
|
||||
<configure name="IMU_MPU60X0_I2C_DEV" value="i2c2"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<configure name="USE_MAGNETOMETER" value="FALSE"/>
|
||||
</target>
|
||||
<target name="test_actuators_pwm" board="naze32_rev4"/>
|
||||
</firmware>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="mag" type="hmc58xx">
|
||||
<define name="MODULE_HMC58XX_UPDATE_AHRS"/>
|
||||
<configure name="MAG_HMC58XX_I2C_DEV" value="i2c2"/>
|
||||
</module>
|
||||
<!-- with gcc 4.9 it fits in ROM with air_data, but not with 4.8 -->
|
||||
<!--module name="air_data"/-->
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
</modules>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="FL" no="0" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="FR" no="1" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="BR" no="2" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="BL" no="3" min="1000" neutral="1100" max="2000"/>
|
||||
</servos>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<!-- front left (CW), front right (CCW), back right (CW), back left (CCW) -->
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<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="FL" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="FR" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BR" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BL" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="MAG_X_NEUTRAL" value="22"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-314"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="13"/>
|
||||
<define name="MAG_X_SENS" value="3.68160078446" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.6093630842" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.48306842466" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="180." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="H_X" value="0.3770441"/>
|
||||
<define name="H_Y" value="0.0193986"/>
|
||||
<define name="H_Z" value="0.9259921"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_PHI" value="60." unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="60." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_A" value="0"/>
|
||||
<define name="DEADBAND_E" value="0"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="400" 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="400" 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="250" 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="1000"/>
|
||||
<define name="PHI_DGAIN" value="400"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1000"/>
|
||||
<define name="THETA_DGAIN" value="400"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="500"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="300"/>
|
||||
</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="APPROX_FORCE_BY_THRUST" value="TRUE"/>
|
||||
<define name="MAX_BANK" value="30" 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="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"/>
|
||||
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
||||
<define name="JS_AXIS_MODE" value="4"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<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="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,195 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a quadrotor frame with the OpenPilot Revo Nano board:
|
||||
* Autopilot: OpenPilot Revo Nano https://librepilot.atlassian.net/wiki/display/LPDOC/OpenPilot+Revolution+Nano
|
||||
* Actuators: PWM motor controllers http://wiki.paparazziuav.org/wiki/Subsystem/actuators#PWM
|
||||
-->
|
||||
|
||||
<airframe name="QuadRevoNano">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="openpilot_revo_nano">
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="SERVO_HZ" value="400"/>
|
||||
</module>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="imu" type="openpilot_revo_nano"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="30"/>
|
||||
<configure name="AHRS_ALIGNER_LED" value="2"/>
|
||||
</module>
|
||||
<module name="ins"/>
|
||||
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="air_data"/>
|
||||
</firmware>
|
||||
|
||||
<firmware name="setup">
|
||||
<target name="tunnel" board="openpilot_revo_nano"/>
|
||||
</firmware>
|
||||
|
||||
<firmware name="test_progs">
|
||||
<target name="test_sys_time_timer" board="openpilot_revo_nano">
|
||||
<define name="LED_BLUE" value="1"/>
|
||||
<define name="LED_RED" value="2"/>
|
||||
</target>
|
||||
<target name="test_sys_time_usleep" board="openpilot_revo_nano">
|
||||
<define name="LED_BLUE" value="1"/>
|
||||
<define name="LED_RED" value="2"/>
|
||||
</target>
|
||||
<target name="test_telemetry" board="openpilot_revo_nano"/>
|
||||
<target name="test_imu" board="openpilot_revo_nano">
|
||||
<module name="imu" type="openpilot_revo_nano"/>
|
||||
</target>
|
||||
<target name="test_ahrs" board="openpilot_revo_nano">
|
||||
<module name="imu" type="openpilot_revo_nano"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
</target>
|
||||
<target name="test_actuators_pwm" board="openpilot_revo_nano"/>
|
||||
</firmware>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="FL" no="0" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="FR" no="1" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="BR" no="2" min="1000" neutral="1100" max="2000"/>
|
||||
<servo name="BL" no="3" min="1000" neutral="1100" max="2000"/>
|
||||
</servos>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<!-- front left (CW), front right (CCW), back right (CW), back left (CCW) -->
|
||||
<define name="TYPE" value="QUAD_X"/>
|
||||
</section>
|
||||
|
||||
<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="FL" value="motor_mixing.commands[MOTOR_FRONT_LEFT]"/>
|
||||
<set servo="FR" value="motor_mixing.commands[MOTOR_FRONT_RIGHT]"/>
|
||||
<set servo="BR" value="motor_mixing.commands[MOTOR_BACK_RIGHT]"/>
|
||||
<set servo="BL" value="motor_mixing.commands[MOTOR_BACK_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<section name="IMU" prefix="IMU_">
|
||||
<define name="MAG_X_NEUTRAL" value="344"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-114"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="-221"/>
|
||||
<define name="MAG_X_SENS" value="7.13840383063" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="7.07298310496" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="6.23392912181" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="180." 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_">
|
||||
<define name="H_X" value="0.3770441"/>
|
||||
<define name="H_Y" value="0.0193986"/>
|
||||
<define name="H_Z" value="0.9259921"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
|
||||
<!-- setpoints -->
|
||||
<define name="SP_MAX_PHI" value="60." unit="deg"/>
|
||||
<define name="SP_MAX_THETA" value="60." unit="deg"/>
|
||||
<define name="SP_MAX_R" value="90." unit="deg/s"/>
|
||||
<define name="DEADBAND_A" value="0"/>
|
||||
<define name="DEADBAND_E" value="0"/>
|
||||
<define name="DEADBAND_R" value="250"/>
|
||||
|
||||
<!-- reference -->
|
||||
<define name="REF_OMEGA_P" value="400" 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="400" 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="250" 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="1000"/>
|
||||
<define name="PHI_DGAIN" value="400"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1000"/>
|
||||
<define name="THETA_DGAIN" value="400"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="500"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="300"/>
|
||||
</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="APPROX_FORCE_BY_THRUST" value="TRUE"/>
|
||||
<define name="MAX_BANK" value="30" 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="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"/>
|
||||
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
||||
<define name="JS_AXIS_MODE" value="4"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<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="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,179 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a quadrotor frame equiped with
|
||||
* Autopilot: Lisa/M 1.0 http://wiki.paparazziuav.org/wiki/Lisa/M_v10
|
||||
* IMU: Aspirin 1.5 http://wiki.paparazziuav.org/wiki/AspirinIMU
|
||||
* Actuators: MKK motor controllers http://wiki.paparazziuav.org/wiki/Subsystem/actuators#MKK
|
||||
* GPS: Ublox http://wiki.paparazziuav.org/wiki/Subsystem/gps
|
||||
* RC: any PPM system http://wiki.paparazziuav.org/wiki/Subsystem/radio_control#PPM
|
||||
-->
|
||||
|
||||
<airframe name="Quadrotor LisaM_1.0 mkk">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_m_1.0">
|
||||
<define name="ACTUATORS_START_DELAY" value="3"/>
|
||||
</target>
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="mkk"/>
|
||||
<module name="imu" type="aspirin_v1.5"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat"/>
|
||||
<module name="ins"/>
|
||||
</firmware>
|
||||
|
||||
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<define name="NB" value="4"/>
|
||||
<!-- FRONT, BACK, RIGHT, LEFT -->
|
||||
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
|
||||
</section>
|
||||
|
||||
<servos driver="Mkk">
|
||||
<servo name="FRONT" no="0" min="0" neutral="2" max="200"/>
|
||||
<servo name="BACK" no="1" min="0" neutral="2" max="200"/>
|
||||
<servo name="RIGHT" no="2" min="0" neutral="2" max="200"/>
|
||||
<servo name="LEFT" no="3" min="0" neutral="2" max="200"/>
|
||||
</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"/>
|
||||
</commands>
|
||||
|
||||
<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"/>
|
||||
<!-- front/back turning CW, left/right CCW -->
|
||||
<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>
|
||||
|
||||
<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="RIGHT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="LEFT" value="motor_mixing.commands[3]"/>
|
||||
</command_laws>
|
||||
|
||||
<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"/>
|
||||
|
||||
<define name="MAG_X_NEUTRAL" value="-152"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-51"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="10"/>
|
||||
<define name="MAG_X_SENS" value="4.04042714046" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.95350991963" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="3.83055079257" 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="-45." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="H_X" value="0.3770441"/>
|
||||
<define name="H_Y" value="0.0193986"/>
|
||||
<define name="H_Z" value="0.9259921"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</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="90." 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="400" 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="400" 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="250" 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="1000"/>
|
||||
<define name="PHI_DGAIN" value="400"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1000"/>
|
||||
<define name="THETA_DGAIN" value="400"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="500"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="300"/>
|
||||
</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="20" unit="deg"/>
|
||||
<define name="PGAIN" value="100"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<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="JSBSIM_MODEL" value="simple_quad" type="string"/>
|
||||
<define name="SENSORS_PARAMS" value="nps_sensors_params_default.h" type="string"/>
|
||||
</section>
|
||||
|
||||
<section name="AUTOPILOT">
|
||||
<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_HOVER_Z_HOLD"/>
|
||||
</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="9.7" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,189 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
|
||||
<airframe name="Quadrotor with floating point unit">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="lisa_m_2.0">
|
||||
<configure name="USE_MAGNETOMETER" value="1"/>
|
||||
</target>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="SERVO_HZ" value="400"/>
|
||||
<define name="USE_SERVOS_7AND8"/>
|
||||
</module>
|
||||
|
||||
<module name="telemetry" type="transparent">
|
||||
<configure name="MODEM_PORT" value="UART1"/>
|
||||
</module>
|
||||
<module name="imu" type="aspirin_v2.1"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="float_quat"/>
|
||||
<module name="ahrs" type="float_mlkf"/>
|
||||
<module name="ins"/>
|
||||
</firmware>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="sys_mon"/>
|
||||
</modules>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="FRONT" no="0" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="BACK" no="1" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="RIGHT" no="2" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="LEFT" no="3" min="1000" neutral="1100" max="1900"/>
|
||||
</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"/>
|
||||
</commands>
|
||||
|
||||
<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"/>
|
||||
<!-- front/back turning CW, right/left CCW -->
|
||||
<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>
|
||||
|
||||
<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="RIGHT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="LEFT" value="motor_mixing.commands[3]"/>
|
||||
</command_laws>
|
||||
|
||||
<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="-179"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-21"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="79"/>
|
||||
<define name="MAG_X_SENS" value="4.17334785618" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.98885954135" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="4.40442339014" integer="16"/>
|
||||
<define name="MAG_X_SIGN" value="1"/>
|
||||
<define name="MAG_Y_SIGN" value="1"/>
|
||||
<define name="MAG_Z_SIGN" value="1"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="H_X" value="0.3770441"/>
|
||||
<define name="H_Y" value="0.0193986"/>
|
||||
<define name="H_Z" value="0.9259921"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</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="90." 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="{RadOfDeg(400)}"/>
|
||||
<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="{RadOfDeg(400)}"/>
|
||||
<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="{RadOfDeg(250)}"/>
|
||||
<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="{1000}"/>
|
||||
<define name="PHI_DGAIN" value="{1000}"/>
|
||||
<define name="PHI_IGAIN" value="{200}"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="{1000}"/>
|
||||
<define name="THETA_DGAIN" value="{1000}"/>
|
||||
<define name="THETA_IGAIN" value="{200}"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="{500}"/>
|
||||
<define name="PSI_DGAIN" value="{500}"/>
|
||||
<define name="PSI_IGAIN" value="{10}"/>
|
||||
|
||||
<!-- feedback angular acceleration error -->
|
||||
<define name="PHI_DGAIN_D" value="{100}"/>
|
||||
<define name="THETA_DGAIN_D" value="{100}"/>
|
||||
<define name="PSI_DGAIN_D" value="{100}"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="{300}"/>
|
||||
<define name="THETA_DDGAIN" value="{300}"/>
|
||||
<define name="PSI_DDGAIN" value="{300}"/>
|
||||
</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="20" unit="deg"/>
|
||||
<define name="PGAIN" value="50"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="AGAIN" value="70"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
</section>
|
||||
|
||||
<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"/>
|
||||
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
||||
<define name="JS_AXIS_MODE" value="4"/>
|
||||
</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_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="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">
|
||||
|
||||
<!-- this is a quadrotor frame equiped with
|
||||
* Autopilot: Pixhawk Lite 2 https://pixhawk.ethz.ch/px4/modules/px4fmu
|
||||
* IMU: MPU6000 + HMC5883 https://pixhawk.ethz.ch/px4/modules/px4fmu
|
||||
* Actuators: PWM motor controllers http://wiki.paparazziuav.org/wiki/Subsystem/actuators#PWM_Supervision
|
||||
* GPS: Ublox http://wiki.paparazziuav.org/wiki/Subsystem/gps
|
||||
* RC: PPM http://wiki.paparazziuav.org/wiki/Subsystem/radio_control#PPM
|
||||
-->
|
||||
|
||||
<airframe name="Quadrotor Pixhawk Lite">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="px4fmu_2.4"/>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="SERVO_HZ" value="400"/>
|
||||
</module>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="imu" type="mpu6000">
|
||||
<configure name="IMU_MPU_SPI_DEV" value="spi1"/>
|
||||
<configure name="IMU_MPU_SPI_SLAVE_IDX" value="SPI_SLAVE2"/>
|
||||
</module>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<define name="AHRS_GRAVITY_UPDATE_NORM_HEURISTIC" value="TRUE"/>
|
||||
</module>
|
||||
<module name="ins"/>
|
||||
</firmware>
|
||||
|
||||
<firmware name="test_progs">
|
||||
<target name="test_sys_time_timer" board="px4fmu_2.4">
|
||||
<configure name="SYS_TIME_LED" value="none"/>
|
||||
<configure name="LED_DEFINES" value="-DLED_RED=1"/>
|
||||
</target>
|
||||
<target name="test_sys_time_usleep" board="px4fmu_2.4">
|
||||
<configure name="SYS_TIME_LED" value="none"/>
|
||||
<configure name="LED_DEFINES" value="-DLED_GREEN=1"/>
|
||||
</target>
|
||||
<target name="test_telemetry" board="px4fmu_2.4">
|
||||
<configure name="SYS_TIME_LED" value="none"/>
|
||||
<!--configure name="MODEM_PORT" value="UART3"/-->
|
||||
<define name="UART_TX_LED" value="1"/>
|
||||
<!--configure name="MODEM_BAUD" value="B9600"/-->
|
||||
</target>
|
||||
<target name="test_imu" board="px4fmu_2.4">
|
||||
<module name="imu" type="mpu6000">
|
||||
<configure name="IMU_MPU_SPI_DEV" value="spi1"/>
|
||||
<configure name="IMU_MPU_SPI_SLAVE_IDX" value="SPI_SLAVE2"/>
|
||||
</module>
|
||||
<!--module name="imu" type="px4fmu_v2.4"/-->
|
||||
<configure name="PERIODIC_FREQUENCY" value="60"/>
|
||||
</target>
|
||||
<target name="test_actuators_pwm" board="px4fmu_2.4">
|
||||
<define name="SERVO_HZ" value="400"/>
|
||||
</target>
|
||||
<target name="test_actuators_pwm_sin" board="px4fmu_2.4">
|
||||
</target>
|
||||
<target name="test_baro_board" board="px4fmu_2.4">
|
||||
<configure name="BARO_LED" value="5"/>
|
||||
</target>
|
||||
<target name="test_adc" board="px4fmu_2.4"/>
|
||||
<target name="test_uart" board="px4fmu_2.4">
|
||||
<define name="USE_UART2"/>
|
||||
<define name="UART2_BAUD" value="B57600"/>
|
||||
<define name="USE_UART3"/>
|
||||
<define name="UART3_BAUD" value="B57600"/>
|
||||
</target>
|
||||
</firmware>
|
||||
|
||||
<modules>
|
||||
<module name="sys_mon"/>
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
<module name="air_data"/>
|
||||
</modules>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="FRONT" no="0" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="BACK" no="1" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="RIGHT" no="2" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="LEFT" no="3" min="1000" neutral="1100" max="1900"/>
|
||||
</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"/>
|
||||
</commands>
|
||||
|
||||
<section name="MIXING" prefix="MOTOR_MIXING_">
|
||||
<!-- front (CW), right (CCW), back (CW), left (CCW) -->
|
||||
<define name="TYPE" value="QUAD_PLUS"/>
|
||||
</section>
|
||||
|
||||
<command_laws>
|
||||
<call fun="motor_mixing_run(autopilot_get_motors_on(),FALSE,values)"/>
|
||||
<set servo="FRONT" value="motor_mixing.commands[MOTOR_FRONT]"/>
|
||||
<set servo="RIGHT" value="motor_mixing.commands[MOTOR_RIGHT]"/>
|
||||
<set servo="BACK" value="motor_mixing.commands[MOTOR_BACK]"/>
|
||||
<set servo="LEFT" value="motor_mixing.commands[MOTOR_LEFT]"/>
|
||||
</command_laws>
|
||||
|
||||
<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="-179"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-21"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="79"/>
|
||||
<define name="MAG_X_SENS" value="4.17334785618" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.98885954135" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="4.40442339014" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="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"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</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="90." 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="400" 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="400" 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="250" 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="1000"/>
|
||||
<define name="PHI_DGAIN" value="400"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1000"/>
|
||||
<define name="THETA_DGAIN" value="400"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="500"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="300"/>
|
||||
</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="20" 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="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="front_motor, right_motor, back_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"/>
|
||||
<!-- mode switch on joystick channel 5 (axis numbering starting at zero) -->
|
||||
<define name="JS_AXIS_MODE" value="4"/>
|
||||
</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_NAV"/>
|
||||
</section>
|
||||
|
||||
<section name="BAT">
|
||||
<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
|
||||
<define name="CRITIC_BAT_LEVEL" value="9.6" unit="V"/>
|
||||
<define name="LOW_BAT_LEVEL" value="10.1" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -1,184 +0,0 @@
|
||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
||||
|
||||
<!-- this is a quadrotor frame equiped with
|
||||
* Autopilot: PX4FMU 1.7 https://pixhawk.ethz.ch/px4/modules/px4fmu
|
||||
* IMU: MPU6000 + HMC5883 http://wiki.paparazziuav.org/wiki/AspirinIMU
|
||||
* Actuators: PWM motor controllers http://wiki.paparazziuav.org/wiki/Subsystem/actuators#PWM_Supervision
|
||||
* GPS: Ublox http://wiki.paparazziuav.org/wiki/Subsystem/gps
|
||||
* RC: PPM http://wiki.paparazziuav.org/wiki/Subsystem/radio_control#PPM
|
||||
-->
|
||||
|
||||
<airframe name="Quadrotor PX4FMU 1.7">
|
||||
|
||||
<firmware name="rotorcraft">
|
||||
<target name="ap" board="px4fmu_1.7"/>
|
||||
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="jsbsim"/>
|
||||
</target>
|
||||
|
||||
<module name="motor_mixing"/>
|
||||
<module name="actuators" type="pwm">
|
||||
<define name="SERVO_HZ" value="400"/>
|
||||
</module>
|
||||
|
||||
<module name="radio_control" type="ppm"/>
|
||||
<module name="telemetry" type="transparent"/>
|
||||
<module name="imu" type="px4fmu_v1.7"/>
|
||||
<module name="gps" type="ublox"/>
|
||||
<module name="stabilization" type="int_quat"/>
|
||||
<module name="ahrs" type="int_cmpl_quat">
|
||||
<define name="AHRS_GRAVITY_UPDATE_NORM_HEURISTIC" value="TRUE"/>
|
||||
</module>
|
||||
<module name="ins"/>
|
||||
</firmware>
|
||||
|
||||
<modules main_freq="512">
|
||||
<module name="sys_mon"/>
|
||||
<module name="gps" type="ubx_ucenter"/>
|
||||
</modules>
|
||||
|
||||
<servos driver="Pwm">
|
||||
<servo name="FRONT" no="0" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="BACK" no="1" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="RIGHT" no="2" min="1000" neutral="1100" max="1900"/>
|
||||
<servo name="LEFT" no="3" min="1000" neutral="1100" max="1900"/>
|
||||
</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"/>
|
||||
</commands>
|
||||
|
||||
<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"/>
|
||||
<!-- front/back turning CW, right/left CCW -->
|
||||
<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>
|
||||
|
||||
<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="RIGHT" value="motor_mixing.commands[2]"/>
|
||||
<set servo="LEFT" value="motor_mixing.commands[3]"/>
|
||||
</command_laws>
|
||||
|
||||
<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="-179"/>
|
||||
<define name="MAG_Y_NEUTRAL" value="-21"/>
|
||||
<define name="MAG_Z_NEUTRAL" value="79"/>
|
||||
<define name="MAG_X_SENS" value="4.17334785618" integer="16"/>
|
||||
<define name="MAG_Y_SENS" value="3.98885954135" integer="16"/>
|
||||
<define name="MAG_Z_SENS" value="4.40442339014" integer="16"/>
|
||||
|
||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
||||
</section>
|
||||
|
||||
<section name="AHRS" prefix="AHRS_">
|
||||
<define name="H_X" value="0.3770441"/>
|
||||
<define name="H_Y" value="0.0193986"/>
|
||||
<define name="H_Z" value="0.9259921"/>
|
||||
</section>
|
||||
|
||||
<section name="INS" prefix="INS_">
|
||||
</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="90." 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="400" 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="400" 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="250" 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="1000"/>
|
||||
<define name="PHI_DGAIN" value="400"/>
|
||||
<define name="PHI_IGAIN" value="200"/>
|
||||
|
||||
<define name="THETA_PGAIN" value="1000"/>
|
||||
<define name="THETA_DGAIN" value="400"/>
|
||||
<define name="THETA_IGAIN" value="200"/>
|
||||
|
||||
<define name="PSI_PGAIN" value="500"/>
|
||||
<define name="PSI_DGAIN" value="300"/>
|
||||
<define name="PSI_IGAIN" value="10"/>
|
||||
|
||||
<!-- feedforward -->
|
||||
<define name="PHI_DDGAIN" value="300"/>
|
||||
<define name="THETA_DDGAIN" value="300"/>
|
||||
<define name="PSI_DDGAIN" value="300"/>
|
||||
</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"/>
|
||||
<!-- NOMINAL_HOVER_THROTTLE sets a fixed value instead of the adaptive estimation -->
|
||||
<!--define name="NOMINAL_HOVER_THROTTLE" value="0.5"/-->
|
||||
</section>
|
||||
|
||||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_">
|
||||
<define name="MAX_BANK" value="20" unit="deg"/>
|
||||
<define name="PGAIN" value="50"/>
|
||||
<define name="DGAIN" value="100"/>
|
||||
<define name="AGAIN" value="70"/>
|
||||
<define name="IGAIN" value="20"/>
|
||||
</section>
|
||||
|
||||
<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="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_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="9.7" unit="V"/>
|
||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
||||
</section>
|
||||
|
||||
</airframe>
|
||||
@@ -21,17 +21,6 @@
|
||||
settings_modules="modules/gps_ubx_ucenter.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="white"
|
||||
/>
|
||||
<aircraft
|
||||
name="Hexa_LisaL"
|
||||
ac_id="5"
|
||||
airframe="airframes/examples/h_hex.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/dummy.xml"
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="modules/ahrs_int_cmpl_euler.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"
|
||||
/>
|
||||
<aircraft
|
||||
name="LadyLisa"
|
||||
ac_id="6"
|
||||
@@ -142,17 +131,6 @@
|
||||
settings_modules="modules/cv_opticflow.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="blue"
|
||||
/>
|
||||
<aircraft
|
||||
name="krooz_quad"
|
||||
ac_id="34"
|
||||
airframe="airframes/examples/krooz_sd_quad_mkk.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/geo_mag.xml modules/gps_ubx_ucenter.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"
|
||||
/>
|
||||
<aircraft
|
||||
name="quadshot"
|
||||
ac_id="37"
|
||||
|
||||
@@ -54,17 +54,6 @@
|
||||
settings_modules="modules/bebop_cam.xml modules/cv_opticflow.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="blue"
|
||||
/>
|
||||
<aircraft
|
||||
name="krooz_quad"
|
||||
ac_id="34"
|
||||
airframe="airframes/examples/krooz_sd_quad_mkk.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/geo_mag.xml modules/gps_ubx_ucenter.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"
|
||||
/>
|
||||
<aircraft
|
||||
name="quad_mavlink"
|
||||
ac_id="36"
|
||||
|
||||
@@ -32,17 +32,6 @@
|
||||
settings_modules="modules/ahrs_float_dcm.xml modules/imu_common.xml modules/nav_basic_fw.xml modules/guidance_basic_fw.xml modules/stabilization_attitude_fw.xml modules/gps_ubx_ucenter.xml modules/gps.xml modules/air_data.xml modules/nav_catapult.xml modules/digital_cam.xml modules/light.xml"
|
||||
gui_color="blue"
|
||||
/>
|
||||
<aircraft
|
||||
name="Hexa_LisaL"
|
||||
ac_id="5"
|
||||
airframe="airframes/examples/h_hex.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/dummy.xml"
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="modules/ahrs_int_cmpl_euler.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"
|
||||
/>
|
||||
<aircraft
|
||||
name="JP"
|
||||
ac_id="6"
|
||||
@@ -76,50 +65,6 @@
|
||||
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/gps_ubx_ucenter.xml"
|
||||
gui_color="white"
|
||||
/>
|
||||
<aircraft
|
||||
name="LisaLv11_Aspirinv15_FW"
|
||||
ac_id="9"
|
||||
airframe="airframes/testhardware/LisaL_v1.1_aspirin_v1.5_fw.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_fixedwing.xml"
|
||||
flight_plan="flight_plans/dummy.xml"
|
||||
settings="settings/fixedwing_basic.xml"
|
||||
settings_modules="modules/nav_basic_fw.xml modules/ahrs_float_dcm.xml modules/gps.xml modules/imu_common.xml modules/guidance_basic_fw.xml modules/stabilization_attitude_fw.xml"
|
||||
gui_color="blue"
|
||||
/>
|
||||
<aircraft
|
||||
name="LisaLv11_Aspirinv15_RC"
|
||||
ac_id="10"
|
||||
airframe="airframes/testhardware/LisaL_v1.1_aspirin_v1.5_rc.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/dummy.xml"
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="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"
|
||||
/>
|
||||
<aircraft
|
||||
name="LisaLv11_Booz2v12_FW"
|
||||
ac_id="11"
|
||||
airframe="airframes/testhardware/LisaL_v1.1_b2_v1.2_fw.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_fixedwing.xml"
|
||||
flight_plan="flight_plans/dummy.xml"
|
||||
settings="settings/fixedwing_basic.xml"
|
||||
settings_modules="modules/nav_basic_fw.xml modules/ahrs_float_dcm.xml modules/gps.xml modules/imu_common.xml modules/guidance_basic_fw.xml modules/stabilization_attitude_fw.xml"
|
||||
gui_color="blue"
|
||||
/>
|
||||
<aircraft
|
||||
name="LisaLv11_Booz2v12_RC"
|
||||
ac_id="12"
|
||||
airframe="airframes/testhardware/LisaL_v1.1_b2_v1.2_rc.xml"
|
||||
radio="radios/cockpitSX.xml"
|
||||
telemetry="telemetry/default_rotorcraft.xml"
|
||||
flight_plan="flight_plans/dummy.xml"
|
||||
settings="settings/rotorcraft_basic.xml"
|
||||
settings_modules="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"
|
||||
/>
|
||||
<aircraft
|
||||
name="MentorEnergy"
|
||||
ac_id="13"
|
||||
|
||||
@@ -213,7 +213,7 @@ sim.srcs += $(SRC_ARCH)/sim_gps.c $(SRC_ARCH)/sim_adc_generic.c
|
||||
sim.srcs += $(SRC_ARCH)/subsystems/actuators/actuators_pwm_arch.c
|
||||
|
||||
# hack: always compile some of the sim functions, so ocaml sim does not complain about no-existing functions
|
||||
sim.srcs += $(SRC_ARCH)/sim_ahrs.c $(SRC_ARCH)/sim_ir.c
|
||||
sim.srcs += $(SRC_ARCH)/sim_ahrs.c $(SRC_ARCH)/sim_airspeed.c
|
||||
|
||||
######################################################################
|
||||
##
|
||||
|
||||
@@ -352,31 +352,6 @@ test_actuators_pwm_sin.srcs += test/test_actuators_pwm_sin.c
|
||||
test_actuators_pwm_sin.srcs += $(SRC_ARCH)/subsystems/actuators/actuators_pwm_arch.c $(SRC_ARCH)/subsystems/actuators/actuators_shared_arch.c
|
||||
|
||||
|
||||
#
|
||||
# simple test of mikrokopter motor controllers
|
||||
#
|
||||
test_esc_mkk_simple.ARCHDIR = $(ARCH)
|
||||
test_esc_mkk_simple.CFLAGS += $(COMMON_TEST_CFLAGS)
|
||||
test_esc_mkk_simple.srcs += $(COMMON_TEST_SRCS)
|
||||
|
||||
test_esc_mkk_simple.srcs += test/test_esc_mkk_simple.c
|
||||
test_esc_mkk_simple.srcs += mcu_periph/i2c.c $(SRC_ARCH)/mcu_periph/i2c_arch.c
|
||||
test_esc_mkk_simple.CFLAGS += -DUSE_I2C2
|
||||
test_esc_mkk_simple.CFLAGS += -DACTUATORS_MKK_DEV=i2c2
|
||||
|
||||
|
||||
#
|
||||
# simple test of asctec v1 motor controllers
|
||||
#
|
||||
test_esc_asctecv1_simple.ARCHDIR = $(ARCH)
|
||||
test_esc_asctecv1_simple.CFLAGS += $(COMMON_TEST_CFLAGS)
|
||||
test_esc_asctecv1_simple.srcs += $(COMMON_TEST_SRCS)
|
||||
|
||||
test_esc_asctecv1_simple.srcs += test/test_esc_asctecv1_simple.c
|
||||
test_esc_asctecv1_simple.srcs += mcu_periph/i2c.c $(SRC_ARCH)/mcu_periph/i2c_arch.c
|
||||
test_esc_asctecv1_simple.CFLAGS += -DUSE_I2C1
|
||||
|
||||
|
||||
#
|
||||
# Test manual : a simple test with rc and servos
|
||||
# add the desired actuators and radio_control subsystem to this target
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
Actuators Driver for ARDrone2
|
||||
</description>
|
||||
</doc>
|
||||
<autoload name="actuators" type="nps"/>
|
||||
<header>
|
||||
<file name="actuators.h" dir="boards/ardrone"/>
|
||||
</header>
|
||||
@@ -16,9 +17,5 @@
|
||||
<configure name="SRC_BOARD" value="boards/ardrone"/>
|
||||
</test>
|
||||
</makefile>
|
||||
<makefile target="nps">
|
||||
<define name="ACTUATORS"/>
|
||||
<file_arch name="actuators_pwm_arch.c" dir="subsystems/actuators"/>
|
||||
</makefile>
|
||||
</module>
|
||||
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="actuators_asctec" dir="actuators" task="actuators">
|
||||
<doc>
|
||||
<description>
|
||||
Actuators Driver for Asctec V1 ESC
|
||||
|
||||
required xml configuration:
|
||||
- servo section with driver="Asctec"
|
||||
- command_laws section to map motor_mixing commands to servos
|
||||
</description>
|
||||
<configure name="ACTUATORS_ASCTEC_I2C_DEV" value="i2cX" description="I2C port (default i2c1)"/>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="actuators_asctec.h" dir="subsystems/actuators"/>
|
||||
</header>
|
||||
<makefile target="!sim|nps">
|
||||
<configure name="ACTUATORS_ASCTEC_I2C_DEV" default="i2c1" case="upper|lower"/>
|
||||
<configure name="ACTUATORS_ASCTEC_I2C_SCL_TIME" default="150"/>
|
||||
<define name="ACTUATORS"/>
|
||||
<define name="ACTUATORS_ASCTEC_I2C_DEV" value="$(ACTUATORS_ASCTEC_I2C_DEV_LOWER)"/>
|
||||
<define name="USE_$(ACTUATORS_ASCTEC_I2C_DEV_UPPER)"/>
|
||||
<file name="actuators_asctec.c" dir="subsystems/actuators"/>
|
||||
<test>
|
||||
<define name="USE_I2C1"/>
|
||||
<define name="ACTUATORS_ASCTEC_I2C_DEV" value="i2c1"/>
|
||||
</test>
|
||||
</makefile>
|
||||
<makefile target="nps">
|
||||
<define name="USE_I2C0"/>
|
||||
<define name="ACTUATORS_ASCTEC_I2C_DEV" value="i2c0"/>
|
||||
<file name="actuators_asctec.c" dir="subsystems/actuators"/>
|
||||
</makefile>
|
||||
</module>
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="actuators_asctec_v2_new" dir="actuators" task="actuators">
|
||||
<doc>
|
||||
<description>
|
||||
New Actuators Driver for Asctec V2 ESC
|
||||
|
||||
required xml configuration:
|
||||
- servo section with driver="Asctec_v2_new"
|
||||
- command_laws section to map motor_mixing commands to servos
|
||||
</description>
|
||||
<configure name="ACTUATORS_ASCTEC_V2_I2C_DEV" value="i2cX" description="I2C port (default i2c1)"/>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="actuators_asctec_v2_new.h" dir="subsystems/actuators"/>
|
||||
</header>
|
||||
<makefile target="!sim|nps">
|
||||
<configure name="ACTUATORS_ASCTEC_V2_I2C_DEV" default="i2c1" case="upper|lower"/>
|
||||
<configure name="ACTUATORS_ASCTEC_V2_I2C_SCL_TIME" default="150"/>
|
||||
<define name="ACTUATORS"/>
|
||||
<define name="ACTUATORS_ASCTEC_V2_I2C_DEV" value="$(ACTUATORS_ASCTEC_V2_I2C_DEV_LOWER)"/>
|
||||
<define name="USE_$(ACTUATORS_ASCTEC_V2_I2C_DEV_UPPER)"/>
|
||||
<file name="actuators_asctec_v2_new.c" dir="subsystems/actuators"/>
|
||||
<test>
|
||||
<define name="SERVO_FRONT" value="0"/>
|
||||
<define name="SERVO_BACK" value="1"/>
|
||||
<define name="SERVO_LEFT" value="2"/>
|
||||
<define name="SERVO_RIGHT" value="3"/>
|
||||
<define name="USE_I2C1"/>
|
||||
<define name="ACTUATORS_ASCTEC_V2_I2C_DEV" value="i2c1"/>
|
||||
</test>
|
||||
</makefile>
|
||||
<makefile target="nps">
|
||||
<define name="USE_I2C0"/>
|
||||
<define name="ACTUATORS_ASCTEC_V2_I2C_DEV" value="i2c0"/>
|
||||
<file name="actuators_asctec_v2_new.c" dir="subsystems/actuators"/>
|
||||
</makefile>
|
||||
</module>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
</description>
|
||||
<configure name="BEBOP_ACTUATORS_I2C_DEV" value="i2cX" description="I2C port (default i2c1)"/>
|
||||
</doc>
|
||||
<autoload name="actuators" type="nps"/>
|
||||
<header>
|
||||
<file name="actuators.h" dir="boards/bebop"/>
|
||||
</header>
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="actuators_mkk" dir="actuators" task="actuators">
|
||||
<doc>
|
||||
<description>
|
||||
Actuators Driver for Mikrokopter V1 ESC
|
||||
|
||||
required xml configuration:
|
||||
- configuration section (number of motors and addresses)
|
||||
- servo section with driver="Mkk"
|
||||
- command_laws section to map motor_mixing commands to servos (max command = 255)
|
||||
</description>
|
||||
<configure name="ACTUATORS_MKK_I2C_DEV" value="i2cX" description="I2C port (default i2c1)"/>
|
||||
<define name="I2C_TRANSACTION_QUEUE_LEN" value="8" description="I2C queue length, default is 8, increase to 10 or more for 8 motors"/>
|
||||
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
|
||||
<define name="NB" value="4" description="number of motors"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }" description="array of I2C addresses"/>
|
||||
</section>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="actuators_mkk.h" dir="subsystems/actuators"/>
|
||||
</header>
|
||||
<makefile target="ap">
|
||||
<configure name="ACTUATORS_MKK_I2C_DEV" default="i2c1" case="upper|lower"/>
|
||||
<configure name="ACTUATORS_MKK_I2C_SCL_TIME" default="150"/>
|
||||
<define name="ACTUATORS"/>
|
||||
<define name="ACTUATORS_MKK_I2C_DEV" value="$(ACTUATORS_MKK_I2C_DEV_LOWER)"/>
|
||||
<define name="USE_$(ACTUATORS_MKK_I2C_DEV_UPPER)"/>
|
||||
<file name="actuators_mkk.c" dir="subsystems/actuators"/>
|
||||
<test>
|
||||
<define name="ACTUATORS_MKK_NB" value="4"/>
|
||||
<define name="ACTUATORS_MKK_ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
|
||||
<define name="USE_I2C0"/>
|
||||
<define name="ACTUATORS_MKK_I2C_DEV" value="i2c0"/>
|
||||
</test>
|
||||
</makefile>
|
||||
<makefile target="nps">
|
||||
<define name="USE_I2C0"/>
|
||||
<define name="ACTUATORS_MKK_I2C_DEV" value="i2c0"/>
|
||||
<file name="actuators_mkk.c" dir="subsystems/actuators"/>
|
||||
<test>
|
||||
<define name="ACTUATORS_MKK_NB" value="4"/>
|
||||
<define name="ACTUATORS_MKK_ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
|
||||
<define name="USE_I2C0"/>
|
||||
<define name="ACTUATORS_MKK_I2C_DEV" value="i2c0"/>
|
||||
</test>
|
||||
</makefile>
|
||||
</module>
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="actuators_mkk_v2" dir="actuators" task="actuators">
|
||||
<doc>
|
||||
<description>
|
||||
Actuators Driver for Mikrokopter V2 ESC
|
||||
|
||||
required xml configuration:
|
||||
- configuration section (number of motors and addresses)
|
||||
- servo section with driver="Mkk_v2"
|
||||
- command_laws section to map motor_mixing commands to servos (max command = 255)
|
||||
</description>
|
||||
<configure name="ACTUATORS_MKK_V2_I2C_DEV" value="i2cX" description="I2C port (default i2c1)"/>
|
||||
<define name="I2C_TRANSACTION_QUEUE_LEN" value="8" description="I2C queue length, default is 8, increase to 10 or more for 8 motors"/>
|
||||
<section name="ACTUATORS_MKK_V2" prefix="ACTUATORS_MKK_V2_">
|
||||
<define name="NB" value="4" description="number of motors"/>
|
||||
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }" description="array of I2C addresses"/>
|
||||
</section>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="actuators_mkk_v2.h" dir="subsystems/actuators"/>
|
||||
</header>
|
||||
<makefile target="ap">
|
||||
<configure name="ACTUATORS_MKK_V2_I2C_DEV" default="i2c1" case="upper|lower"/>
|
||||
<configure name="ACTUATORS_MKK_V2_I2C_SCL_TIME" default="150"/>
|
||||
<define name="ACTUATORS"/>
|
||||
<define name="ACTUATORS_MKK_V2_I2C_DEV" value="$(ACTUATORS_MKK_V2_I2C_DEV_LOWER)"/>
|
||||
<define name="USE_$(ACTUATORS_MKK_V2_I2C_DEV_UPPER)"/>
|
||||
<file name="actuators_mkk_v2.c" dir="subsystems/actuators"/>
|
||||
<test>
|
||||
<define name="ACTUATORS_MKK_V2_NB" value="4"/>
|
||||
<define name="ACTUATORS_MKK_V2_ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
|
||||
<define name="USE_I2C0"/>
|
||||
<define name="ACTUATORS_MKK_V2_I2C_DEV" value="i2c0"/>
|
||||
</test>
|
||||
</makefile>
|
||||
<makefile target="nps">
|
||||
<define name="USE_I2C0"/>
|
||||
<define name="ACTUATORS_MKK_V2_I2C_DEV" value="i2c0"/>
|
||||
<file name="actuators_mkk_v2.c" dir="subsystems/actuators"/>
|
||||
<test>
|
||||
<define name="ACTUATORS_MKK_V2_NB" value="4"/>
|
||||
<define name="ACTUATORS_MKK_V2_ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
|
||||
<define name="USE_I2C0"/>
|
||||
<define name="ACTUATORS_MKK_V2_I2C_DEV" value="i2c0"/>
|
||||
</test>
|
||||
</makefile>
|
||||
</module>
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="actuators_nps" dir="actuators" task="actuators">
|
||||
<doc>
|
||||
<description>
|
||||
Actuators for NPS (dummy pwm)
|
||||
</description>
|
||||
</doc>
|
||||
<makefile target="nps">
|
||||
<define name="ACTUATORS"/>
|
||||
<file_arch name="actuators_pwm_arch.c" dir="subsystems/actuators"/>
|
||||
</makefile>
|
||||
</module>
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="ahrs_infrared" dir="ahrs">
|
||||
<doc>
|
||||
<description>
|
||||
AHRS infrared.
|
||||
Attitude estimation using infrared sensors detecting the horizon.
|
||||
For fixedwings only:
|
||||
- GPS course is used as heading.
|
||||
- ADC channels can be used for gyros.
|
||||
</description>
|
||||
</doc>
|
||||
<dep>
|
||||
<depends>infrared_adc</depends>
|
||||
</dep>
|
||||
<header>
|
||||
<file name="ahrs_infrared.h"/>
|
||||
</header>
|
||||
<init fun="ahrs_infrared_init()"/>
|
||||
<periodic fun="ahrs_infrared_periodic()" freq="60"/>
|
||||
<makefile>
|
||||
<file name="ahrs_infrared.c"/>
|
||||
<test>
|
||||
<define name="IR_HORIZ_SENSOR_ALIGNED"/>
|
||||
</test>
|
||||
</makefile>
|
||||
</module>
|
||||
@@ -1,68 +0,0 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="ahrs_int_cmpl_euler" dir="ahrs">
|
||||
<doc>
|
||||
<description>
|
||||
AHRS using complementary filter in fixed point.
|
||||
Propagation is done in euler angles representation.
|
||||
Not recommended for fixedwings, as this filter doesn't compensate for centrifugal force when flying turns.
|
||||
Magnetometer is always only used for heading (yaw).
|
||||
Does not handle the accel and mag updates correctly if BODY_TO_IMU is used for more than just adjustment by a few degrees.
|
||||
In general, rather use int_cmpl_quat
|
||||
</description>
|
||||
<configure name="USE_MAGNETOMETER" value="TRUE" description="set to FALSE to disable magnetometer"/>
|
||||
<configure name="AHRS_ALIGNER_LED" value="1" description="LED number to indicate AHRS alignment, none to disable (default is board dependent)"/>
|
||||
<define name="AHRS_MAG_OFFSET" value="0.0" description="offset in radians to subtract from the heading calculated by the magnetometer"/>
|
||||
<define name="USE_NOISE_FILTER" description="apply a simple filter on the rate and accel inputs"/>
|
||||
<define name="USE_NOISE_CUT" description="cut rate input at 1 rad/s and accel input at 20m/s2"/>
|
||||
<define name="AHRS_ICE_IMU_ID" value="ABI_BROADCAST" description="ABI sender id of IMU to use"/>
|
||||
<define name="AHRS_ICE_MAG_ID" value="ABI_BROADCAST" description="ABI sender id of magnetometer to use"/>
|
||||
</doc>
|
||||
|
||||
<settings>
|
||||
<dl_settings>
|
||||
<dl_settings NAME="Filter">
|
||||
<dl_setting var="ahrs_ice.reinj_1" min="512" step="512" max="262144" module="subsystems/ahrs/ahrs_int_cmpl_euler" shortname="reinj_1" type="int32" persistent="true"/>
|
||||
</dl_settings>
|
||||
</dl_settings>
|
||||
</settings>
|
||||
|
||||
<autoload name="ahrs_sim"/>
|
||||
<header>
|
||||
<file name="ahrs.h" dir="subsystems"/>
|
||||
</header>
|
||||
|
||||
<makefile target="!sim|fbw">
|
||||
<configure name="USE_MAGNETOMETER" default="1"/>
|
||||
|
||||
<define name="USE_MAGNETOMETER" cond="ifeq (,$(findstring $(USE_MAGNETOMETER),0 FALSE))"/>
|
||||
<define name="AHRS_ALIGNER_LED" value="$(AHRS_ALIGNER_LED)" cond="ifneq ($(AHRS_ALIGNER_LED),none)"/>
|
||||
<define name="USE_AHRS"/>
|
||||
<define name="USE_AHRS_ALIGNER"/>
|
||||
|
||||
<file name="ahrs.c" dir="subsystems"/>
|
||||
<file name="ahrs_aligner.c" dir="subsystems/ahrs"/>
|
||||
<file name="ahrs_int_cmpl_euler.c" dir="subsystems/ahrs"/>
|
||||
<file name="ahrs_int_cmpl_euler_wrapper.c" dir="subsystems/ahrs"/>
|
||||
<test>
|
||||
<define name="PRIMARY_AHRS" value="ahrs_ice"/>
|
||||
<define name="AHRS_TYPE_H" value="subsystems/ahrs/ahrs_int_cmpl_euler_wrapper.h" type="string"/>
|
||||
</test>
|
||||
<raw>
|
||||
ifdef SECONDARY_AHRS
|
||||
ifneq (,$(findstring $(SECONDARY_AHRS), ice int_cmpl_euler))
|
||||
# this is the secondary AHRS
|
||||
$(TARGET).CFLAGS += -DAHRS_SECONDARY_TYPE_H=\"subsystems/ahrs/ahrs_int_cmpl_euler_wrapper.h\"
|
||||
$(TARGET).CFLAGS += -DSECONDARY_AHRS=ahrs_ice
|
||||
else
|
||||
# this is the primary AHRS
|
||||
$(TARGET).CFLAGS += -DAHRS_TYPE_H=\"subsystems/ahrs/ahrs_int_cmpl_euler_wrapper.h\"
|
||||
$(TARGET).CFLAGS += -DPRIMARY_AHRS=ahrs_ice
|
||||
endif
|
||||
else
|
||||
# plain old single AHRS usage
|
||||
$(TARGET).CFLAGS += -DAHRS_TYPE_H=\"subsystems/ahrs/ahrs_int_cmpl_euler_wrapper.h\"
|
||||
endif
|
||||
</raw>
|
||||
</makefile>
|
||||
</module>
|
||||
@@ -1,16 +0,0 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="cartography">
|
||||
<doc>
|
||||
<description>Cartography sweeping pattern for navigation</description>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="cartography.h"/>
|
||||
</header>
|
||||
<init fun="init_carto()"/>
|
||||
<periodic fun="periodic_downlink_carto()" freq="2." autorun="FALSE"/>
|
||||
<makefile>
|
||||
<file name="cartography.c"/>
|
||||
</makefile>
|
||||
</module>
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="configure_actuators_mkk_v2" dir="config">
|
||||
<doc>
|
||||
<description>Configure Mikrokopter MKK v2.0 BLDC motor controllers (requires subsystem actuators_mkk_v2)</description>
|
||||
</doc>
|
||||
<settings>
|
||||
<dl_settings>
|
||||
<dl_settings NAME="mkk">
|
||||
<dl_setting var="config_mkk_v2.addr" min="0" step="1" max="3" module="modules/config/config_mkk_v2" shortname="Get" values="0x52|0x54|0x56|0x58" handler="GetConfig"/>
|
||||
<dl_setting var="config_mkk_v2.nb_err" min="0" step="1" max="3000" shortname="err" />
|
||||
<dl_setting var="config_mkk_v2_eeprom.revision" min="0" step="1" max="255" shortname="ee.rev" />
|
||||
<dl_setting var="config_mkk_v2_eeprom.SetMask" min="0" step="1" max="255" module="modules/config/config_mkk_v2" shortname="ee.reset" handler="ResetDefault" />
|
||||
<dl_setting var="config_mkk_v2_eeprom.PwmScaling" min="0" step="1" max="255" module="modules/config/config_mkk_v2" shortname="ee.pwm" handler="SetPwmScaling" />
|
||||
<dl_setting var="config_mkk_v2_eeprom.CurrentLimit" min="0" step="1" max="255" module="modules/config/config_mkk_v2" shortname="ee.amp.lim" handler="SetCurrentLimit" />
|
||||
<dl_setting var="config_mkk_v2_eeprom.TempLimit" min="0" step="1" max="255" module="modules/config/config_mkk_v2" shortname="ee.tmp.lim" handler="SetTempLimit" />
|
||||
<dl_setting var="config_mkk_v2_eeprom.CurrentScaling" min="0" step="1" max="255" module="modules/config/config_mkk_v2" shortname="ee.amp.scl" handler="SetCurrentScaling" />
|
||||
<dl_setting var="config_mkk_v2_eeprom.BitConfig" min="4" step="1" max="5" module="modules/config/config_mkk_v2" shortname="ee.bit.msk" values="Normal|Reversed" handler="SetBitConfig" />
|
||||
<dl_setting var="config_mkk_v2_eeprom.crc" min="0" step="1" max="255" shortname="ee.crc" />
|
||||
</dl_settings>
|
||||
</dl_settings>
|
||||
</settings>
|
||||
<header>
|
||||
<file name="config_mkk_v2.h"/>
|
||||
</header>
|
||||
<init fun="config_mkk_v2_init()"/>
|
||||
<periodic fun="config_mkk_v2_periodic_read_status()" period="0.1" autorun="TRUE"/>
|
||||
<periodic fun="config_mkk_v2_periodic_telemetry()" period="1" autorun="TRUE"/>
|
||||
<makefile>
|
||||
<file name="config_mkk_v2.c"/>
|
||||
</makefile>
|
||||
</module>
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
<!DOCTYPE module SYSTEM "module.dtd">
|
||||
|
||||
<module name="infrared_adc" dir="sensors">
|
||||
<doc>
|
||||
<description>Infrared sensor using ADC</description>
|
||||
<configure name="ADC_IR1" value="ADC_1" description="ADC for IR horizontal channel 1"/>
|
||||
<configure name="ADC_IR2" value="ADC_2" description="ADC for IR horizontal channel 2"/>
|
||||
<configure name="ADC_IR_TOP" value="ADC_0" description="ADC for IR vertical channel"/>
|
||||
<configure name="ADC_IR_NB_SAMPLES" value="16" description="number of samples"/>
|
||||
</doc>
|
||||
<settings>
|
||||
<dl_settings>
|
||||
<dl_settings NAME="ir">
|
||||
<dl_setting MAX="15" MIN="-15" STEP="0.5" VAR="infrared.roll_neutral" shortname="roll_neutral" param="IR_ROLL_NEUTRAL_DEFAULT" alt_unit="deg"/>
|
||||
<dl_setting MAX="15" MIN="-15" STEP="0.5" VAR="infrared.pitch_neutral" shortname="pitch_neutral" param="IR_PITCH_NEUTRAL_DEFAULT" alt_unit="deg"/>
|
||||
|
||||
<dl_setting MAX="1.5" MIN="0." STEP="0.1" VAR="infrared.lateral_correction" shortname="360_lat_corr" module="subsystems/sensors/infrared" param="IR_LATERAL_CORRECTION"/>
|
||||
<dl_setting MAX="1.5" MIN="0." STEP="0.1" VAR="infrared.longitudinal_correction" shortname="360_log_corr" param="IR_LONGITUDINAL_CORRECTION"/>
|
||||
<dl_setting MAX="1.5" MIN="0.5" STEP="0.1" VAR="infrared.vertical_correction" shortname="360_vert_corr" param="IR_VERTICAL_CORRECTION"/>
|
||||
|
||||
<dl_setting MAX="1.5" MIN="0.5" STEP="0.1" VAR="infrared.correction_left" shortname="corr_left" param="IR_CORRECTION_LEFT"/>
|
||||
<dl_setting MAX="1.5" MIN="0.5" STEP="0.1" VAR="infrared.correction_right" shortname="corr_right" param="IR_CORRECTION_RIGHT"/>
|
||||
<dl_setting MAX="1.5" MIN="0.5" STEP="0.1" VAR="infrared.correction_up" shortname="corr_up" param="IR_CORRECTION_UP"/>
|
||||
<dl_setting MAX="1.5" MIN="0.5" STEP="0.1" VAR="infrared.correction_down" shortname="corr_down" param="IR_CORRECTION_DOWN"/>
|
||||
|
||||
</dl_settings>
|
||||
</dl_settings>
|
||||
</settings>
|
||||
<header>
|
||||
<file name="infrared_adc.h"/>
|
||||
</header>
|
||||
<init fun="infrared_adc_init()"/>
|
||||
<periodic fun="infrared_adc_update()" freq="60."/>
|
||||
<makefile target="ap|sim">
|
||||
<define name="USE_INFRARED"/>
|
||||
<file name="infrared.c" dir="subsystems/sensors"/>
|
||||
<file name="infrared_adc.c" dir="subsystems/sensors"/>
|
||||
</makefile>
|
||||
<makefile target="ap">
|
||||
<raw>
|
||||
ADC_IR_TOP ?= ADC_0
|
||||
ADC_IR1 ?= ADC_1
|
||||
ADC_IR2 ?= ADC_2
|
||||
ADC_IR_NB_SAMPLES ?= 16
|
||||
|
||||
ap.CFLAGS += -DADC_CHANNEL_IR1=$(ADC_IR1) -DUSE_$(ADC_IR1)
|
||||
ap.CFLAGS += -DADC_CHANNEL_IR2=$(ADC_IR2) -DUSE_$(ADC_IR2)
|
||||
ap.CFLAGS += -DADC_CHANNEL_IR_TOP=$(ADC_IR_TOP) -DUSE_$(ADC_IR_TOP)
|
||||
|
||||
ap.CFLAGS += -DADC_CHANNEL_IR_NB_SAMPLES=$(ADC_IR_NB_SAMPLES)
|
||||
</raw>
|
||||
</makefile>
|
||||
</module>
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user