mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-31 03:57:45 +08:00
[boards] Porting KroozSD
This commit is contained in:
committed by
Felix Ruess
parent
3e689f0ce6
commit
b79972b7a8
+5
-2
@@ -160,12 +160,12 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
LDFLAGS += -Wl,-Map=$(OBJDIR)/$(TARGET).map,--cref,--gc-sections
|
LDFLAGS += -Wl,-Map=$(OBJDIR)/$(TARGET).map,--cref,--gc-sections
|
||||||
LDLIBS += -lc -lm -lgcc
|
|
||||||
ifneq ($(ARCH_L), )
|
ifneq ($(ARCH_L), )
|
||||||
LDLIBS += -lopencm3_stm32$(ARCH_L)
|
LDLIBS += -lopencm3_stm32$(ARCH_L)
|
||||||
else
|
else
|
||||||
LDLIBS += -lopencm3_stm32f1
|
LDLIBS += -lopencm3_stm32f1
|
||||||
endif
|
endif
|
||||||
|
LDLIBS += -lc -lm -lgcc
|
||||||
|
|
||||||
CPFLAGS = -j .isr_vector -j .text -j .data
|
CPFLAGS = -j .isr_vector -j .text -j .data
|
||||||
CPFLAGS_BIN = -Obinary
|
CPFLAGS_BIN = -Obinary
|
||||||
@@ -234,11 +234,14 @@ ifeq ($(FLASH_MODE),DFU)
|
|||||||
ifdef DFU_ADDR
|
ifdef DFU_ADDR
|
||||||
DFU_ADDR_CMD = --addr=$(DFU_ADDR)
|
DFU_ADDR_CMD = --addr=$(DFU_ADDR)
|
||||||
endif
|
endif
|
||||||
|
ifdef DFU_PRODUCT
|
||||||
|
DFU_PRODUCT_CMD = --product=$(DFU_PRODUCT)
|
||||||
|
endif
|
||||||
#
|
#
|
||||||
# DFU flash mode
|
# DFU flash mode
|
||||||
upload: $(OBJDIR)/$(TARGET).bin
|
upload: $(OBJDIR)/$(TARGET).bin
|
||||||
@echo "Using stm32 mem dfu loader"
|
@echo "Using stm32 mem dfu loader"
|
||||||
$(PYTHON) $(PAPARAZZI_SRC)/sw/tools/dfu/stm32_mem.py $(DFU_ADDR_CMD) $^
|
$(PYTHON) $(PAPARAZZI_SRC)/sw/tools/dfu/stm32_mem.py $(DFU_PRODUCT_CMD) $(DFU_ADDR_CMD) $^
|
||||||
|
|
||||||
#
|
#
|
||||||
# serial flash mode
|
# serial flash mode
|
||||||
|
|||||||
+249
@@ -0,0 +1,249 @@
|
|||||||
|
<!DOCTYPE airframe SYSTEM "../../airframe.dtd">
|
||||||
|
|
||||||
|
<airframe name="Hexarotor KroozSD Mkk">
|
||||||
|
|
||||||
|
<firmware name="rotorcraft">
|
||||||
|
<target name="ap" board="krooz_sd"/>
|
||||||
|
|
||||||
|
<target name="nps" board="pc">
|
||||||
|
<subsystem name="fdm" type="jsbsim"/>
|
||||||
|
<subsystem name="radio_control" type="ppm"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<subsystem name="radio_control" type="ppm"/>
|
||||||
|
<subsystem name="telemetry" type="transparent"/>
|
||||||
|
<subsystem name="motor_mixing"/>
|
||||||
|
<subsystem name="actuators" type="mkk">
|
||||||
|
<define name="I2C_TRANSACTION_QUEUE_LEN" value="10"/>
|
||||||
|
<define name="I2C1_CLOCK_SPEED" value="42000"/>
|
||||||
|
</subsystem>
|
||||||
|
<subsystem name="stabilization" type="euler"/>
|
||||||
|
<subsystem name="gps" type="ublox"/>
|
||||||
|
<subsystem name="imu" type="krooz_sd"/>
|
||||||
|
<subsystem name="ahrs" type="int_cmpl_quat"/>
|
||||||
|
<subsystem name="ins" type="hff"/>
|
||||||
|
|
||||||
|
<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">
|
||||||
|
<!--<load name="gps_ubx_ucenter.xml"/>
|
||||||
|
<load name="geo_mag.xml"/>
|
||||||
|
<load name="sys_mon.xml"/>-->
|
||||||
|
</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="TRIM_A" value="0"/>
|
||||||
|
<define name="TRIM_E" value="0"/>
|
||||||
|
<define name="TRIM_R" 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_motors_on,FALSE,values)"/>
|
||||||
|
<set servo="FF" value="motor_mixing.commands[SERVO_FF]"/>
|
||||||
|
<set servo="FR" value="motor_mixing.commands[SERVO_FR]"/>
|
||||||
|
<set servo="DR" value="motor_mixing.commands[SERVO_DR]"/>
|
||||||
|
<set servo="DD" value="motor_mixing.commands[SERVO_DD]"/>
|
||||||
|
<set servo="DL" value="motor_mixing.commands[SERVO_DL]"/>
|
||||||
|
<set servo="FL" value="motor_mixing.commands[SERVO_FL]"/>
|
||||||
|
</command_laws>
|
||||||
|
|
||||||
|
<section name="VERSION" prefix="VERSION_">
|
||||||
|
<define name="MAJOR" value="1"/>
|
||||||
|
<define name="MINOR" value="2"/>
|
||||||
|
</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=" 4.41" integer="16"/>
|
||||||
|
<define name="GYRO_Q_SENS" value=" 4.41" integer="16"/>
|
||||||
|
<define name="GYRO_R_SENS" value=" 4.41" integer="16"/>
|
||||||
|
|
||||||
|
<define name="ACCEL_X_NEUTRAL" value="-24"/>
|
||||||
|
<define name="ACCEL_Y_NEUTRAL" value="122"/>
|
||||||
|
<define name="ACCEL_Z_NEUTRAL" value="-130"/>
|
||||||
|
<define name="ACCEL_X_SENS" value="4.90555515454" integer="16"/>
|
||||||
|
<define name="ACCEL_Y_SENS" value="4.90893349017" integer="16"/>
|
||||||
|
<define name="ACCEL_Z_SENS" value="4.75238978393" integer="16"/>
|
||||||
|
|
||||||
|
<define name="MAG_X_NEUTRAL" value="-136"/>
|
||||||
|
<define name="MAG_Y_NEUTRAL" value="-103"/>
|
||||||
|
<define name="MAG_Z_NEUTRAL" value="6"/>
|
||||||
|
<define name="MAG_X_SENS" value="3.18492472198" integer="16"/>
|
||||||
|
<define name="MAG_Y_SENS" value="3.42471474617" integer="16"/>
|
||||||
|
<define name="MAG_Z_SENS" value="3.42088446936" 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_UPDATE_NORM_HEURISTIC" value="1"/>
|
||||||
|
<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_">
|
||||||
|
<define name="BARO_SENS" value="20." integer="16"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
||||||
|
<!-- setpoints -->
|
||||||
|
<define name="SP_MAX_P" value="10000"/>
|
||||||
|
<define name="SP_MAX_Q" value="10000"/>
|
||||||
|
<define name="SP_MAX_R" value="10000"/>
|
||||||
|
<define name="DEADBAND_P" value="20"/>
|
||||||
|
<define name="DEADBAND_Q" value="20"/>
|
||||||
|
<define name="DEADBAND_R" value="200"/>
|
||||||
|
<define name="REF_TAU" value="4"/>
|
||||||
|
|
||||||
|
<!-- feedback -->
|
||||||
|
<define name="GAIN_P" value="400"/>
|
||||||
|
<define name="GAIN_Q" value="400"/>
|
||||||
|
<define name="GAIN_R" value="350"/>
|
||||||
|
|
||||||
|
<define name="IGAIN_P" value="75"/>
|
||||||
|
<define name="IGAIN_Q" value="75"/>
|
||||||
|
<define name="IGAIN_R" value="50"/>
|
||||||
|
|
||||||
|
<!-- feedforward -->
|
||||||
|
<define name="DDGAIN_P" value="300"/>
|
||||||
|
<define name="DDGAIN_Q" value="300"/>
|
||||||
|
<define name="DDGAIN_R" value="300"/>
|
||||||
|
</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="800" unit="deg/s"/>
|
||||||
|
<define name="REF_ZETA_P" value="0.85"/>
|
||||||
|
<define name="REF_MAX_P" value="100." unit="deg/s"/>
|
||||||
|
<define name="REF_MAX_PDOT" value="RadOfDeg(2000.)"/>
|
||||||
|
|
||||||
|
<define name="REF_OMEGA_Q" value="800" unit="deg/s"/>
|
||||||
|
<define name="REF_ZETA_Q" value="0.85"/>
|
||||||
|
<define name="REF_MAX_Q" value="100." unit="deg/s"/>
|
||||||
|
<define name="REF_MAX_QDOT" value="RadOfDeg(2000.)"/>
|
||||||
|
|
||||||
|
<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(180.)"/>
|
||||||
|
|
||||||
|
<!-- feedback -->
|
||||||
|
<define name="PHI_PGAIN" value="1000"/>
|
||||||
|
<define name="PHI_DGAIN" value="350"/>
|
||||||
|
<define name="PHI_IGAIN" value="250"/>
|
||||||
|
|
||||||
|
<define name="THETA_PGAIN" value="1000"/>
|
||||||
|
<define name="THETA_DGAIN" value="350"/>
|
||||||
|
<define name="THETA_IGAIN" value="250"/>
|
||||||
|
|
||||||
|
<define name="PSI_PGAIN" value="4000"/>
|
||||||
|
<define name="PSI_DGAIN" value="1000"/>
|
||||||
|
<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="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="TILT_COEFF" value="0.35"/>
|
||||||
|
<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_CLIMB_COEF" value ="500"/>
|
||||||
|
<define name="RC_DESCENT_COEF" value ="200"/>
|
||||||
|
<define name="RC_CLIMB_DEAD_BAND" value ="160000"/>
|
||||||
|
</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="20" 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"}"/>
|
||||||
|
<define name="INITIAL_CONDITITONS" value=""reset00""/>
|
||||||
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
|
</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"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</airframe>
|
||||||
+252
@@ -0,0 +1,252 @@
|
|||||||
|
<!DOCTYPE airframe SYSTEM "../../airframe.dtd">
|
||||||
|
|
||||||
|
<airframe name="Oktorotor KroozSD Mkk">
|
||||||
|
|
||||||
|
<firmware name="rotorcraft">
|
||||||
|
<target name="ap" board="krooz_sd"/>
|
||||||
|
|
||||||
|
<target name="nps" board="pc">
|
||||||
|
<subsystem name="fdm" type="jsbsim"/>
|
||||||
|
<subsystem name="radio_control" type="ppm"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<subsystem name="radio_control" type="ppm"/>
|
||||||
|
<subsystem name="telemetry" type="transparent"/>
|
||||||
|
<subsystem name="motor_mixing"/>
|
||||||
|
<subsystem name="actuators" type="mkk">
|
||||||
|
<define name="I2C_TRANSACTION_QUEUE_LEN" value="10"/>
|
||||||
|
<define name="I2C1_CLOCK_SPEED" value="42000"/>
|
||||||
|
</subsystem>
|
||||||
|
<subsystem name="stabilization" type="euler"/>
|
||||||
|
<subsystem name="gps" type="ublox"/>
|
||||||
|
<subsystem name="imu" type="krooz_sd"/>
|
||||||
|
<subsystem name="ahrs" type="int_cmpl_quat"/>
|
||||||
|
<subsystem name="ins" type="hff"/>
|
||||||
|
|
||||||
|
<define name="NO_RC_THRUST_LIMIT"/>
|
||||||
|
<define name="USE_RC_FP_BLOCK_SWITCHING"/>
|
||||||
|
<define name="USE_ATTITUDE_REF" value="0"/>
|
||||||
|
<define name="KILL_ON_GROUND_DETECT" value="TRUE"/>
|
||||||
|
</firmware>
|
||||||
|
|
||||||
|
<modules main_freq="512">
|
||||||
|
<!--<load name="gps_ubx_ucenter.xml"/>
|
||||||
|
<load name="sys_mon.xml"/>
|
||||||
|
<load name="geo_mag.xml"/>-->
|
||||||
|
</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_motors_on,FALSE,values)"/>
|
||||||
|
<set servo="FF" value="motor_mixing.commands[SERVO_FF]"/>
|
||||||
|
<set servo="FR" value="motor_mixing.commands[SERVO_FR]"/>
|
||||||
|
<set servo="RR" value="motor_mixing.commands[SERVO_RR]"/>
|
||||||
|
<set servo="DR" value="motor_mixing.commands[SERVO_DR]"/>
|
||||||
|
<set servo="DD" value="motor_mixing.commands[SERVO_DD]"/>
|
||||||
|
<set servo="DL" value="motor_mixing.commands[SERVO_DL]"/>
|
||||||
|
<set servo="LL" value="motor_mixing.commands[SERVO_LL]"/>
|
||||||
|
<set servo="FL" value="motor_mixing.commands[SERVO_FL]"/>
|
||||||
|
</command_laws>
|
||||||
|
|
||||||
|
<section name="VERSION" prefix="VERSION_">
|
||||||
|
<define name="MAJOR" value="1"/>
|
||||||
|
<define name="MINOR" value="2"/>
|
||||||
|
</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=" 4.41" integer="16"/>
|
||||||
|
<define name="GYRO_Q_SENS" value=" 4.41" integer="16"/>
|
||||||
|
<define name="GYRO_R_SENS" value=" 4.41" integer="16"/>
|
||||||
|
|
||||||
|
<define name="ACCEL_X_NEUTRAL" value="-15"/>
|
||||||
|
<define name="ACCEL_Y_NEUTRAL" value="75"/>
|
||||||
|
<define name="ACCEL_Z_NEUTRAL" value="-110"/>
|
||||||
|
<define name="ACCEL_X_SENS" value="4.91713002301" integer="16"/>
|
||||||
|
<define name="ACCEL_Y_SENS" value="4.90474978531" integer="16"/>
|
||||||
|
<define name="ACCEL_Z_SENS" value="4.69090792281" integer="16"/>
|
||||||
|
|
||||||
|
<define name="MAG_X_NEUTRAL" value="-20"/>
|
||||||
|
<define name="MAG_Y_NEUTRAL" value="5"/>
|
||||||
|
<define name="MAG_Z_NEUTRAL" value="67"/>
|
||||||
|
<define name="MAG_X_SENS" value="3.66584881345" integer="16"/>
|
||||||
|
<define name="MAG_Y_SENS" value="3.71365620466" integer="16"/>
|
||||||
|
<define name="MAG_Z_SENS" value="3.93483279876" 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_UPDATE_NORM_HEURISTIC" value="1"/>
|
||||||
|
<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_">
|
||||||
|
<define name="BARO_SENS" value="20." integer="16"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
||||||
|
<!-- setpoints -->
|
||||||
|
<define name="SP_MAX_P" value="10000"/>
|
||||||
|
<define name="SP_MAX_Q" value="10000"/>
|
||||||
|
<define name="SP_MAX_R" value="10000"/>
|
||||||
|
<define name="DEADBAND_P" value="20"/>
|
||||||
|
<define name="DEADBAND_Q" value="20"/>
|
||||||
|
<define name="DEADBAND_R" value="200"/>
|
||||||
|
<define name="REF_TAU" value="4"/>
|
||||||
|
|
||||||
|
<!-- feedback -->
|
||||||
|
<define name="GAIN_P" value="400"/>
|
||||||
|
<define name="GAIN_Q" value="400"/>
|
||||||
|
<define name="GAIN_R" value="350"/>
|
||||||
|
|
||||||
|
<define name="IGAIN_P" value="75"/>
|
||||||
|
<define name="IGAIN_Q" value="75"/>
|
||||||
|
<define name="IGAIN_R" value="50"/>
|
||||||
|
|
||||||
|
<!-- feedforward -->
|
||||||
|
<define name="DDGAIN_P" value="300"/>
|
||||||
|
<define name="DDGAIN_Q" value="300"/>
|
||||||
|
<define name="DDGAIN_R" value="300"/>
|
||||||
|
</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="800" unit="deg/s"/>
|
||||||
|
<define name="REF_ZETA_P" value="0.85"/>
|
||||||
|
<define name="REF_MAX_P" value="100." unit="deg/s"/>
|
||||||
|
<define name="REF_MAX_PDOT" value="RadOfDeg(2000.)"/>
|
||||||
|
|
||||||
|
<define name="REF_OMEGA_Q" value="800" unit="deg/s"/>
|
||||||
|
<define name="REF_ZETA_Q" value="0.85"/>
|
||||||
|
<define name="REF_MAX_Q" value="100." unit="deg/s"/>
|
||||||
|
<define name="REF_MAX_QDOT" value="RadOfDeg(2000.)"/>
|
||||||
|
|
||||||
|
<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(180.)"/>
|
||||||
|
|
||||||
|
<!-- feedback -->
|
||||||
|
<define name="PHI_PGAIN" value="1000"/>
|
||||||
|
<define name="PHI_DGAIN" value="350"/>
|
||||||
|
<define name="PHI_IGAIN" value="250"/>
|
||||||
|
|
||||||
|
<define name="THETA_PGAIN" value="1000"/>
|
||||||
|
<define name="THETA_DGAIN" value="350"/>
|
||||||
|
<define name="THETA_IGAIN" value="250"/>
|
||||||
|
|
||||||
|
<define name="PSI_PGAIN" value="4000"/>
|
||||||
|
<define name="PSI_DGAIN" value="1000"/>
|
||||||
|
<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="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="TILT_COEFF" value="0.35"/>
|
||||||
|
<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_CLIMB_COEF" value ="500"/>
|
||||||
|
<define name="RC_DESCENT_COEF" value ="200"/>
|
||||||
|
<define name="RC_CLIMB_DEAD_BAND" value ="160000"/>
|
||||||
|
</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="20" unit="deg"/>
|
||||||
|
<define name="REF_MAX_ACCEL" value="1.2"/> <!-- 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="180"/>
|
||||||
|
<define name="IGAIN" value="3"/>
|
||||||
|
<define name="AGAIN" value="20"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section name="SIMULATOR" prefix="NPS_">
|
||||||
|
<define name="ACTUATOR_NAMES" value="{"front_motor", "back_motor", "right_motor", "left_motor"}"/>
|
||||||
|
<define name="INITIAL_CONDITITONS" value=""reset00""/>
|
||||||
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
|
</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"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</airframe>
|
||||||
+241
@@ -0,0 +1,241 @@
|
|||||||
|
<!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">
|
||||||
|
<subsystem name="fdm" type="jsbsim"/>
|
||||||
|
<subsystem name="radio_control" type="ppm"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<subsystem name="radio_control" type="ppm"/>
|
||||||
|
<subsystem name="telemetry" type="transparent"/>
|
||||||
|
<subsystem name="imu" type="krooz_sd"/>
|
||||||
|
<subsystem name="gps" type="ublox"/>
|
||||||
|
<subsystem name="stabilization" type="euler"/>
|
||||||
|
<subsystem name="ahrs" type="int_cmpl_quat"/>
|
||||||
|
<subsystem name="ins" type="hff"/>
|
||||||
|
<subsystem name="actuators" type="mkk">
|
||||||
|
<define name="I2C1_CLOCK_SPEED" value="42000"/>
|
||||||
|
</subsystem>
|
||||||
|
<subsystem 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">
|
||||||
|
<!--<load name="gps_ubx_ucenter.xml"/>
|
||||||
|
<load name="sys_mon.xml"/>
|
||||||
|
<load name="geo_mag.xml"/>-->
|
||||||
|
</modules>
|
||||||
|
|
||||||
|
<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_motors_on,FALSE,values)"/>
|
||||||
|
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
|
||||||
|
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
|
||||||
|
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
|
||||||
|
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
|
||||||
|
</command_laws>
|
||||||
|
|
||||||
|
<section name="VERSION" prefix="VERSION_">
|
||||||
|
<define name="MAJOR" value="1"/>
|
||||||
|
<define name="MINOR" value="2"/>
|
||||||
|
</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, -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=" 4.41" integer="16"/>
|
||||||
|
<define name="GYRO_Q_SENS" value=" 4.41" integer="16"/>
|
||||||
|
<define name="GYRO_R_SENS" value=" 4.41" 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="4.86549375955" integer="16"/>
|
||||||
|
<define name="ACCEL_Y_SENS" value="4.89290708897" integer="16"/>
|
||||||
|
<define name="ACCEL_Z_SENS" value="4.83749812474" 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_UPDATE_NORM_HEURISTIC" value="1"/>
|
||||||
|
<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_">
|
||||||
|
<define name="BARO_SENS" value="20." integer="16"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
||||||
|
<!-- setpoints -->
|
||||||
|
<define name="SP_MAX_P" value="10000"/>
|
||||||
|
<define name="SP_MAX_Q" value="10000"/>
|
||||||
|
<define name="SP_MAX_R" value="10000"/>
|
||||||
|
<define name="DEADBAND_P" value="20"/>
|
||||||
|
<define name="DEADBAND_Q" value="20"/>
|
||||||
|
<define name="DEADBAND_R" value="200"/>
|
||||||
|
<define name="REF_TAU" value="4"/>
|
||||||
|
|
||||||
|
<!-- feedback -->
|
||||||
|
<define name="GAIN_P" value="400"/>
|
||||||
|
<define name="GAIN_Q" value="400"/>
|
||||||
|
<define name="GAIN_R" value="350"/>
|
||||||
|
|
||||||
|
<define name="IGAIN_P" value="75"/>
|
||||||
|
<define name="IGAIN_Q" value="75"/>
|
||||||
|
<define name="IGAIN_R" value="50"/>
|
||||||
|
|
||||||
|
<!-- feedforward -->
|
||||||
|
<define name="DDGAIN_P" value="300"/>
|
||||||
|
<define name="DDGAIN_Q" value="300"/>
|
||||||
|
<define name="DDGAIN_R" value="300"/>
|
||||||
|
</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="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="180." unit="deg/s"/>
|
||||||
|
<define name="REF_MAX_RDOT" value="RadOfDeg(1800.)"/>
|
||||||
|
|
||||||
|
<!-- feedback -->
|
||||||
|
<define name="PHI_PGAIN" value="1000"/>
|
||||||
|
<define name="PHI_DGAIN" value="250"/>
|
||||||
|
<define name="PHI_IGAIN" value="250"/>
|
||||||
|
|
||||||
|
<define name="THETA_PGAIN" value="1000"/>
|
||||||
|
<define name="THETA_DGAIN" value="250"/>
|
||||||
|
<define name="THETA_IGAIN" value="250"/>
|
||||||
|
|
||||||
|
<define name="PSI_PGAIN" value="4000"/>
|
||||||
|
<define name="PSI_DGAIN" value="1000"/>
|
||||||
|
<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="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="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_CLIMB_COEF" value ="500"/>
|
||||||
|
<define name="RC_DESCENT_COEF" value ="200"/>
|
||||||
|
<define name="RC_CLIMB_DEAD_BAND" value ="160000"/>
|
||||||
|
</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="20" 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"}"/>
|
||||||
|
<define name="INITIAL_CONDITITONS" value=""reset00""/>
|
||||||
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
|
</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"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</airframe>
|
||||||
+236
@@ -0,0 +1,236 @@
|
|||||||
|
<!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">
|
||||||
|
<subsystem name="fdm" type="jsbsim"/>
|
||||||
|
<subsystem name="radio_control" type="ppm"/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<subsystem name="actuators" type="pwm">
|
||||||
|
<define name="SERVO_HZ" value="400"/>
|
||||||
|
</subsystem>
|
||||||
|
|
||||||
|
<subsystem name="radio_control" type="ppm"/>
|
||||||
|
<subsystem name="telemetry" type="transparent"/>
|
||||||
|
<subsystem name="imu" type="krooz_sd"/>
|
||||||
|
<subsystem name="gps" type="ublox"/>
|
||||||
|
<subsystem name="stabilization" type="euler"/>
|
||||||
|
<subsystem name="ahrs" type="int_cmpl_quat"/>
|
||||||
|
<subsystem name="ins" type="hff"/>
|
||||||
|
<subsystem 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">
|
||||||
|
<!--<load name="gps_ubx_ucenter.xml"/>
|
||||||
|
<load name="geo_mag.xml"/>-->
|
||||||
|
</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_motors_on,FALSE,values)"/>
|
||||||
|
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
|
||||||
|
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
|
||||||
|
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
|
||||||
|
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
|
||||||
|
</command_laws>
|
||||||
|
|
||||||
|
<section name="VERSION" prefix="VERSION_">
|
||||||
|
<define name="MAJOR" value="1"/>
|
||||||
|
<define name="MINOR" value="2"/>
|
||||||
|
</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="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=" 4.41" integer="16"/>
|
||||||
|
<define name="GYRO_Q_SENS" value=" 4.41" integer="16"/>
|
||||||
|
<define name="GYRO_R_SENS" value=" 4.41" integer="16"/>
|
||||||
|
|
||||||
|
<define name="ACCEL_X_NEUTRAL" value="-17"/>
|
||||||
|
<define name="ACCEL_Y_NEUTRAL" value="137"/>
|
||||||
|
<define name="ACCEL_Z_NEUTRAL" value="-112"/>
|
||||||
|
<define name="ACCEL_X_SENS" value="4.90163520863" integer="16"/>
|
||||||
|
<define name="ACCEL_Y_SENS" value="4.92641947248" integer="16"/>
|
||||||
|
<define name="ACCEL_Z_SENS" value="4.75672568963" integer="16"/>
|
||||||
|
|
||||||
|
<define name="MAG_X_NEUTRAL" value="-183"/>
|
||||||
|
<define name="MAG_Y_NEUTRAL" value="-106"/>
|
||||||
|
<define name="MAG_Z_NEUTRAL" value="-75"/>
|
||||||
|
<define name="MAG_X_SENS" value="3.22557142458" integer="16"/>
|
||||||
|
<define name="MAG_Y_SENS" value="3.52708642214" integer="16"/>
|
||||||
|
<define name="MAG_Z_SENS" value="3.54627027156" 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="PROPAGATE_LOW_PASS_RATES" value="1"/>
|
||||||
|
<define name="GRAVITY_UPDATE_NORM_HEURISTIC" value="1"/>
|
||||||
|
<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_">
|
||||||
|
<define name="BARO_SENS" value="20." integer="16"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_">
|
||||||
|
<!-- setpoints -->
|
||||||
|
<define name="SP_MAX_P" value="10000"/>
|
||||||
|
<define name="SP_MAX_Q" value="10000"/>
|
||||||
|
<define name="SP_MAX_R" value="10000"/>
|
||||||
|
<define name="DEADBAND_P" value="20"/>
|
||||||
|
<define name="DEADBAND_Q" value="20"/>
|
||||||
|
<define name="DEADBAND_R" value="200"/>
|
||||||
|
<define name="REF_TAU" value="4"/>
|
||||||
|
|
||||||
|
<!-- feedback -->
|
||||||
|
<define name="GAIN_P" value="400"/>
|
||||||
|
<define name="GAIN_Q" value="400"/>
|
||||||
|
<define name="GAIN_R" value="350"/>
|
||||||
|
|
||||||
|
<define name="IGAIN_P" value="75"/>
|
||||||
|
<define name="IGAIN_Q" value="75"/>
|
||||||
|
<define name="IGAIN_R" value="50"/>
|
||||||
|
|
||||||
|
<!-- feedforward -->
|
||||||
|
<define name="DDGAIN_P" value="300"/>
|
||||||
|
<define name="DDGAIN_Q" value="300"/>
|
||||||
|
<define name="DDGAIN_R" value="300"/>
|
||||||
|
</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="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="180." unit="deg/s"/>
|
||||||
|
<define name="REF_MAX_RDOT" value="RadOfDeg(1800.)"/>
|
||||||
|
|
||||||
|
<!-- feedback -->
|
||||||
|
<define name="PHI_PGAIN" value="600"/>
|
||||||
|
<define name="PHI_DGAIN" value="350"/>
|
||||||
|
<define name="PHI_IGAIN" value="150"/>
|
||||||
|
|
||||||
|
<define name="THETA_PGAIN" value="600"/>
|
||||||
|
<define name="THETA_DGAIN" value="350"/>
|
||||||
|
<define name="THETA_IGAIN" value="150"/>
|
||||||
|
|
||||||
|
<define name="PSI_PGAIN" value="3500"/>
|
||||||
|
<define name="PSI_DGAIN" value="1000"/>
|
||||||
|
<define name="PSI_IGAIN" value="100"/>
|
||||||
|
|
||||||
|
<!-- 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="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="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_CLIMB_COEF" value ="500"/>
|
||||||
|
<define name="RC_DESCENT_COEF" value ="200"/>
|
||||||
|
<define name="RC_CLIMB_DEAD_BAND" value ="160000"/>
|
||||||
|
</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="20" 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"}"/>
|
||||||
|
<define name="INITIAL_CONDITITONS" value=""reset00""/>
|
||||||
|
<define name="SENSORS_PARAMS" value=""nps_sensors_params_default.h""/>
|
||||||
|
</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,67 +0,0 @@
|
|||||||
# Hey Emacs, this is a -*- makefile -*-
|
|
||||||
#
|
|
||||||
# krooz_1.0.makefile
|
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
|
||||||
|
|
||||||
BOARD=krooz
|
|
||||||
BOARD_VERSION=1.0
|
|
||||||
BOARD_CFG=\"boards/$(BOARD)_$(BOARD_VERSION).h\"
|
|
||||||
|
|
||||||
ARCH=stm32
|
|
||||||
ARCH_L=f4
|
|
||||||
ARCH_DIR=stm32
|
|
||||||
SRC_ARCH=arch/$(ARCH_DIR)
|
|
||||||
$(TARGET).ARCHDIR = $(ARCH)
|
|
||||||
$(TARGET).LDSCRIPT=$(SRC_ARCH)/krooz.ld
|
|
||||||
|
|
||||||
HARD_FLOAT=yes
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
# default flash mode is via usb dfu bootloader
|
|
||||||
FLASH_MODE ?= DFU
|
|
||||||
|
|
||||||
|
|
||||||
ifndef NO_LUFTBOOT
|
|
||||||
$(TARGET).LDFLAGS+=-Wl,-Ttext=0x8004000
|
|
||||||
endif
|
|
||||||
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# some default values shared between different firmwares
|
|
||||||
#
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# default LED configuration
|
|
||||||
#
|
|
||||||
RADIO_CONTROL_LED ?= none
|
|
||||||
BARO_LED ?= none
|
|
||||||
AHRS_ALIGNER_LED ?= 2
|
|
||||||
GPS_LED ?= none
|
|
||||||
SYS_TIME_LED ?= 1
|
|
||||||
|
|
||||||
#
|
|
||||||
# default uart configuration
|
|
||||||
#
|
|
||||||
RADIO_CONTROL_SPEKTRUM_PRIMARY_PORT ?= UART1
|
|
||||||
RADIO_CONTROL_SPEKTRUM_SECONDARY_PORT ?= UART2
|
|
||||||
|
|
||||||
MODEM_PORT ?= UART5
|
|
||||||
MODEM_BAUD ?= B57600
|
|
||||||
|
|
||||||
GPS_PORT ?= UART3
|
|
||||||
GPS_BAUD ?= B38400
|
|
||||||
|
|
||||||
#
|
|
||||||
# default actuator configuration
|
|
||||||
#
|
|
||||||
# you can use different actuators by adding a configure option to your firmware section
|
|
||||||
# e.g. <configure name="ACTUATORS" value="actuators_ppm/>
|
|
||||||
# and by setting the correct "driver" attribute in servo section
|
|
||||||
# e.g. <servo driver="Ppm">
|
|
||||||
#
|
|
||||||
ACTUATORS ?= actuators_pwm
|
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# Hey Emacs, this is a -*- makefile -*-
|
||||||
|
#
|
||||||
|
# krooz_sd.makefile
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
BOARD=krooz
|
||||||
|
BOARD_VERSION=sd
|
||||||
|
BOARD_CFG=\"boards/$(BOARD)_$(BOARD_VERSION).h\"
|
||||||
|
|
||||||
|
ARCH=stm32
|
||||||
|
ARCH_L=f4
|
||||||
|
HARD_FLOAT=yes
|
||||||
|
ARCH_DIR=stm32
|
||||||
|
SRC_ARCH=arch/$(ARCH_DIR)
|
||||||
|
$(TARGET).ARCHDIR = $(ARCH)
|
||||||
|
# not needed?
|
||||||
|
$(TARGET).OOCD_INTERFACE=flossjtag
|
||||||
|
#$(TARGET).OOCD_INTERFACE=jtagkey-tiny
|
||||||
|
$(TARGET).LDSCRIPT=$(SRC_ARCH)/krooz.ld
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
ifndef FLASH_MODE
|
||||||
|
FLASH_MODE = DFU
|
||||||
|
#FLASH_MODE = JTAG
|
||||||
|
#FLASH_MODE = SERIAL
|
||||||
|
endif
|
||||||
|
|
||||||
|
DFU_ADDR = 0x8004000
|
||||||
|
DFU_PRODUCT = any
|
||||||
|
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# some default values shared between different firmwares
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# default LED configuration
|
||||||
|
#
|
||||||
|
RADIO_CONTROL_LED ?= none
|
||||||
|
BARO_LED ?= none
|
||||||
|
AHRS_ALIGNER_LED ?= 2
|
||||||
|
GPS_LED ?= none
|
||||||
|
SYS_TIME_LED ?= 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# default uart configuration
|
||||||
|
#
|
||||||
|
RADIO_CONTROL_SPEKTRUM_PRIMARY_PORT ?= UART1
|
||||||
|
|
||||||
|
MODEM_PORT ?= UART5
|
||||||
|
MODEM_BAUD ?= B57600
|
||||||
|
|
||||||
|
GPS_PORT ?= UART3
|
||||||
|
GPS_BAUD ?= B38400
|
||||||
Executable
+100
@@ -0,0 +1,100 @@
|
|||||||
|
<!DOCTYPE flight_plan SYSTEM "flight_plan.dtd">
|
||||||
|
|
||||||
|
<flight_plan alt="35" ground_alt="0" lat0="54.117477" lon0="12.184862" max_dist_from_home="100" name="Krooz Test" security_height="10">
|
||||||
|
<header>
|
||||||
|
#include "autopilot.h"
|
||||||
|
#include "../../subsystems/electrical.h"
|
||||||
|
</header>
|
||||||
|
<waypoints>
|
||||||
|
<waypoint name="HOME" x="0.0" y="0.0"/>
|
||||||
|
<waypoint name="CLIMB" x="0.0" y="5.0"/>
|
||||||
|
<waypoint name="STDBY" x="-2.0" y="-5.0"/>
|
||||||
|
<waypoint name="CAM" x="-20" y="-50" height="11."/>
|
||||||
|
<waypoint name="TD" x="5.6" y="-10.9"/>
|
||||||
|
<waypoint name="LAND" x="5.6" y="-10.9"/>
|
||||||
|
<waypoint name="1" x="3.6" y="-13.9"/>
|
||||||
|
<waypoint name="2" x="27.5" y="-48.2"/>
|
||||||
|
<waypoint name="3" x="16.7" y="-19.6"/>
|
||||||
|
<waypoint name="4" x="13.7" y="-40.7"/>
|
||||||
|
</waypoints>
|
||||||
|
<exceptions>
|
||||||
|
<exception cond="!autopilot_in_flight && !autopilot_motors_on" deroute="Holding point"/>
|
||||||
|
</exceptions>
|
||||||
|
<blocks>
|
||||||
|
<block name="Wait GPS">
|
||||||
|
<call fun="NavKillThrottle()"/>
|
||||||
|
<while cond="!GpsFixValid()"/>
|
||||||
|
</block>
|
||||||
|
<block name="Geo init">
|
||||||
|
<while cond="LessThan(NavBlockTime(), 10)"/>
|
||||||
|
<call fun="NavSetGroundReferenceHere()"/>
|
||||||
|
</block>
|
||||||
|
<block name="Holding point">
|
||||||
|
<exception cond="autopilot_motors_on" deroute="Start Engine"/>
|
||||||
|
<call fun="NavKillThrottle()"/>
|
||||||
|
<attitude pitch="0" roll="0" throttle="0" vmode="throttle" until="FALSE"/>
|
||||||
|
</block>
|
||||||
|
<block name="Start Engine">
|
||||||
|
<exception cond="!RcCommand(RC_MODE_CHANGE) && autopilot_in_flight" deroute="Takeoff"/>
|
||||||
|
<exception cond="RcCommand(RC_MODE_CHANGE) && autopilot_in_flight" deroute="Standby"/>
|
||||||
|
<call fun="NavResurrect()"/>
|
||||||
|
<call fun="NavSetWaypointHere(WP_CLIMB)"/>
|
||||||
|
<call fun="NavSetWaypointHere(WP_TD)"/>
|
||||||
|
<call fun="NavSetWaypointHere(WP_STDBY)"/>
|
||||||
|
<attitude pitch="0" roll="0" throttle="0" vmode="throttle" until="FALSE"/>
|
||||||
|
</block>
|
||||||
|
<block name="Takeoff" strip_button="Takeoff" strip_icon="takeoff.png">
|
||||||
|
<!--<call fun="NavStopDetectGround()"/>-->
|
||||||
|
<exception cond="stateGetPositionEnu_f()->z > 2.0" deroute="Standby"/>
|
||||||
|
<stay vmode="climb" climb="1.0" wp="CLIMB"/>
|
||||||
|
</block>
|
||||||
|
<block name="Come Home">
|
||||||
|
<call fun="NavSetWpCurAlt(WP_STDBY)"/>
|
||||||
|
</block>
|
||||||
|
<block name="Standby" strip_button="Standby" strip_icon="home.png">
|
||||||
|
<exception cond="!autopilot_motors_on" deroute="Holding point"/>
|
||||||
|
<exception cond="LowBatLevel()" deroute="Land"/>
|
||||||
|
<exception cond="RcCommand(RC_ROUTE)" deroute="Route"/>
|
||||||
|
<exception cond="RcCommand(RC_CIRCLE)" deroute="Circle"/>
|
||||||
|
<exception cond="RcCommand(RC_LAND)" deroute="Land"/>
|
||||||
|
<exception cond="RcCommand(RC_MODE_CHANGE) && autopilot_motors_on && !autopilot_in_flight" deroute="Start Engine"/>
|
||||||
|
<exception cond="RcCommand(RC_MODE_CHANGE) && autopilot_motors_on && autopilot_in_flight" deroute="Come Home"/>
|
||||||
|
<stay wp="STDBY"/>
|
||||||
|
</block>
|
||||||
|
<block name="Route">
|
||||||
|
<exception cond="LowBatLevel()" deroute="Land"/>
|
||||||
|
<exception cond="RcCommand(RC_LAND)" deroute="Land"/>
|
||||||
|
<exception cond="RcCommand(RC_HOME)" deroute="Come Home"/>
|
||||||
|
<exception cond="!autopilot_motors_on" deroute="Holding point"/>
|
||||||
|
<exception cond="RcCommand(RC_MODE_CHANGE) && autopilot_motors_on && !autopilot_in_flight" deroute="Start Engine"/>
|
||||||
|
<!--<call fun="NavStopDetectGround()"/>-->
|
||||||
|
<go wp="1"/>
|
||||||
|
<go from="1" hmode="route" wp="2"/>
|
||||||
|
<go from="2" hmode="route" wp="3"/>
|
||||||
|
<go from="3" hmode="route" wp="4"/>
|
||||||
|
<go from="4" hmode="route" wp="1"/>
|
||||||
|
<deroute block="Land"/>
|
||||||
|
</block>
|
||||||
|
<block name="Circle">
|
||||||
|
<exception cond="LowBatLevel()" deroute="Land"/>
|
||||||
|
<exception cond="RcCommand(RC_LAND)" deroute="Land"/>
|
||||||
|
<exception cond="RcCommand(RC_HOME)" deroute="Come Home"/>
|
||||||
|
<exception cond="!autopilot_motors_on" deroute="Holding point"/>
|
||||||
|
<exception cond="RcCommand(RC_MODE_CHANGE) && autopilot_motors_on && !autopilot_in_flight" deroute="Start Engine"/><!-- -->
|
||||||
|
<circle radius="nav_radius" wp="CAM"/>
|
||||||
|
</block>
|
||||||
|
<block name="Land here" strip_button="Land Here" strip_icon="land-right.png">
|
||||||
|
<call fun="NavSetWaypointHere(WP_TD)"/>
|
||||||
|
</block>
|
||||||
|
<block name="Land">
|
||||||
|
<call fun="NavSetWpCurAlt(WP_TD)"/>
|
||||||
|
<go wp="TD"/>
|
||||||
|
</block>
|
||||||
|
<block name="Flare">
|
||||||
|
<exception cond="RcCommand(RC_MODE_CHANGE) && autopilot_motors_on" deroute="Land here"/>
|
||||||
|
<exception cond="NavDetectGround()" deroute="Holding point"/>
|
||||||
|
<call fun="NavStartDetectGround()"/>
|
||||||
|
<stay climb="-0.8" vmode="climb" wp="TD"/>
|
||||||
|
</block>
|
||||||
|
</blocks>
|
||||||
|
</flight_plan>
|
||||||
Executable
+57
@@ -0,0 +1,57 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- $Id: cockpitSX.xml 3610 2009-07-02 16:35:18Z poine $
|
||||||
|
--
|
||||||
|
-- (c) 2006 Pascal Brisset, Antoine Drouin
|
||||||
|
--
|
||||||
|
-- This file is part of paparazzi.
|
||||||
|
--
|
||||||
|
-- paparazzi is free software; you can redistribute it and/or modify
|
||||||
|
-- it under the terms of the GNU General Public License as published by
|
||||||
|
-- the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
-- any later version.
|
||||||
|
--
|
||||||
|
-- paparazzi is distributed in the hope that it will be useful,
|
||||||
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
-- GNU General Public License for more details.
|
||||||
|
--
|
||||||
|
-- You should have received a copy of the GNU General Public License
|
||||||
|
-- along with paparazzi; see the file COPYING. If not, write to
|
||||||
|
-- the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||||
|
-- Boston, MA 02111-1307, USA.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
-- Attributes of root (Radio) tag :
|
||||||
|
-- name: name of RC
|
||||||
|
-- data_min: min width of a pulse to be considered as a data pulse
|
||||||
|
-- data_max: max width of a pulse to be considered as a data pulse
|
||||||
|
-- sync_min: min width of a pulse to be considered as a synchro pulse
|
||||||
|
-- sync_max: max width of a pulse to be considered as a synchro pulse
|
||||||
|
-- pulse_type: POSITIVE ( Futaba and others) | NEGATIVE (JR)
|
||||||
|
-- min, max and sync are expressed in micro-seconds
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
-- order in section = order in the PPM frame
|
||||||
|
-- Attributes of channel tag :
|
||||||
|
-- ctl: name of the command on the transmitter - only for displaying
|
||||||
|
-- function: logical command
|
||||||
|
-- averaged: channel filtered through several frames (for discrete commands)
|
||||||
|
-- min: minimum pulse length (micro-seconds)
|
||||||
|
-- max: maximum pulse length (micro-seconds)
|
||||||
|
-- neutral: neutral pulse length (micro-seconds)
|
||||||
|
-- Note: a command may be reversed by exchanging min and max values
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!DOCTYPE radio SYSTEM "radio.dtd">
|
||||||
|
<radio name="mx-16" data_min="967" data_max="2033" sync_min ="5000" sync_max ="15000" pulse_type="NEGATIVE">
|
||||||
|
<channel ctl="MOTOR" function="THROTTLE" min="1100" neutral="1100" max="1900" average="0"/>
|
||||||
|
<channel ctl="QUERRUDER" function="ROLL" min="1900" neutral="1500" max="1100" average="0"/>
|
||||||
|
<channel ctl="HOEHENRUDER" function="PITCH" min="1900" neutral="1500" max="1100" average="0"/>
|
||||||
|
<channel ctl="SEITENRUDER" function="YAW" min="1900" neutral="1500" max="1100" average="0"/>
|
||||||
|
<channel ctl="ROCKER" function="MODE" min="1100" neutral="1500" max="1900" average="1"/>
|
||||||
|
<channel ctl="SHOTS" function="SHOTS" min="1100" neutral="1100" max="1900" average="1"/>
|
||||||
|
<channel ctl="PHOTO_VIDEO" function="PH_VD" min="1100" neutral="1500" max="1900" average="1"/>
|
||||||
|
<channel ctl="CAMERA" function="CAM" min="1100" neutral="1500" max="1900" average="1"/>
|
||||||
|
</radio>
|
||||||
@@ -78,40 +78,41 @@
|
|||||||
#define ActuatorsDefaultInit() ActuatorsPwmInit()
|
#define ActuatorsDefaultInit() ActuatorsPwmInit()
|
||||||
#define ActuatorsDefaultCommit() ActuatorsPwmCommit()
|
#define ActuatorsDefaultCommit() ActuatorsPwmCommit()
|
||||||
|
|
||||||
//#define DefaultVoltageOfAdc(adc) (0.006185*adc)
|
|
||||||
#define DefaultVoltageOfAdc(adc) (0.008874*adc)
|
#define DefaultVoltageOfAdc(adc) (0.008874*adc)
|
||||||
|
|
||||||
|
/* UART */
|
||||||
|
#define UART1_GPIO_AF GPIO_AF7
|
||||||
|
#define UART1_GPIO_PORT_RX GPIOA
|
||||||
|
#define UART1_GPIO_RX GPIO10
|
||||||
|
#define UART1_GPIO_PORT_TX GPIOA
|
||||||
|
#define UART1_GPIO_TX GPIO9
|
||||||
|
|
||||||
|
#define UART3_GPIO_AF GPIO_AF7
|
||||||
|
#define UART3_GPIO_PORT_RX GPIOC
|
||||||
|
#define UART3_GPIO_RX GPIO11
|
||||||
|
#define UART3_GPIO_PORT_TX GPIOC
|
||||||
|
#define UART3_GPIO_TX GPIO10
|
||||||
|
|
||||||
|
#define UART5_GPIO_AF GPIO_AF8
|
||||||
|
#define UART5_GPIO_PORT_RX GPIOD
|
||||||
|
#define UART5_GPIO_RX GPIO2
|
||||||
|
#define UART5_GPIO_PORT_TX GPIOC
|
||||||
|
#define UART5_GPIO_TX GPIO12
|
||||||
|
|
||||||
/* Onboard ADCs */
|
/* Onboard ADCs */
|
||||||
#define USE_AD_TIM4 1
|
#define USE_AD_TIM1 1
|
||||||
/*
|
|
||||||
ADC1 PC3/ADC13
|
|
||||||
ADC2 PC0/ADC10
|
|
||||||
ADC3 PC1/ADC11
|
|
||||||
ADC4 PC5/ADC15
|
|
||||||
ADC6 PC2/ADC12
|
|
||||||
BATT PC4/ADC14
|
|
||||||
*/
|
|
||||||
#define BOARD_ADC_CHANNEL_1 12
|
#define BOARD_ADC_CHANNEL_1 12
|
||||||
#define BOARD_ADC_CHANNEL_2 10
|
#define BOARD_ADC_CHANNEL_2 10
|
||||||
#define BOARD_ADC_CHANNEL_3 11
|
#define BOARD_ADC_CHANNEL_3 11
|
||||||
#define BOARD_ADC_CHANNEL_4 13 //15
|
#define BOARD_ADC_CHANNEL_4 13
|
||||||
#define BOARD_ADC_CHANNEL_5 14
|
#define BOARD_ADC_CHANNEL_5 14
|
||||||
// we can only use ADC1,2,3; the last channel is for bat monitoring
|
#define BOARD_ADC_CHANNEL_6 15
|
||||||
#define BOARD_ADC_CHANNEL_6 15 //13
|
|
||||||
|
|
||||||
/* provide defines that can be used to access the ADC_x in the code or airframe file
|
/* provide defines that can be used to access the ADC_x in the code or airframe file
|
||||||
* these directly map to the index number of the 4 adc channels defined above
|
* these directly map to the index number of the 4 adc channels defined above
|
||||||
* 4th (index 3) is used for bat monitoring by default
|
* 4th (index 3) is used for bat monitoring by default
|
||||||
*/
|
*/
|
||||||
#define ADC_1 0
|
|
||||||
#define ADC_2 1
|
|
||||||
#define ADC_3 2
|
|
||||||
#define ADC_4 3
|
|
||||||
#define ADC_5 4
|
|
||||||
#define ADC_6 5
|
|
||||||
|
|
||||||
/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
|
/* allow to define ADC_CHANNEL_VSUPPLY in the airframe file*/
|
||||||
#ifndef ADC_CHANNEL_VSUPPLY
|
#ifndef ADC_CHANNEL_VSUPPLY
|
||||||
#define ADC_CHANNEL_VSUPPLY ADC_4
|
#define ADC_CHANNEL_VSUPPLY ADC_4
|
||||||
@@ -129,8 +130,8 @@
|
|||||||
#define ADC_1 ADC1_C1
|
#define ADC_1 ADC1_C1
|
||||||
#ifdef USE_ADC_1
|
#ifdef USE_ADC_1
|
||||||
#ifndef ADC_1_GPIO_CLOCK_PORT
|
#ifndef ADC_1_GPIO_CLOCK_PORT
|
||||||
#define ADC_1_GPIO_CLOCK_PORT RCC_AHB1ENR_IOPBEN
|
#define ADC_1_GPIO_CLOCK_PORT RCC_AHB1ENR_IOPCEN
|
||||||
#define ADC_1_INIT() gpio_mode_setup(GPIOB, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO0)
|
#define ADC_1_INIT() gpio_mode_setup(GPIOC, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO2)
|
||||||
#endif
|
#endif
|
||||||
#define USE_AD1_1 1
|
#define USE_AD1_1 1
|
||||||
#else
|
#else
|
||||||
@@ -141,8 +142,8 @@
|
|||||||
#define ADC_2 ADC1_C2
|
#define ADC_2 ADC1_C2
|
||||||
#ifdef USE_ADC_2
|
#ifdef USE_ADC_2
|
||||||
#ifndef ADC_2_GPIO_CLOCK_PORT
|
#ifndef ADC_2_GPIO_CLOCK_PORT
|
||||||
#define ADC_2_GPIO_CLOCK_PORT RCC_AHB1ENR_IOPBEN
|
#define ADC_2_GPIO_CLOCK_PORT RCC_AHB1ENR_IOPCEN
|
||||||
#define ADC_2_INIT() gpio_mode_setup(GPIOB, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO1)
|
#define ADC_2_INIT() gpio_mode_setup(GPIOC, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO0)
|
||||||
#endif
|
#endif
|
||||||
#define USE_AD1_2 1
|
#define USE_AD1_2 1
|
||||||
#else
|
#else
|
||||||
@@ -154,7 +155,7 @@
|
|||||||
#ifdef USE_ADC_3
|
#ifdef USE_ADC_3
|
||||||
#ifndef ADC_3_GPIO_CLOCK_PORT
|
#ifndef ADC_3_GPIO_CLOCK_PORT
|
||||||
#define ADC_3_GPIO_CLOCK_PORT RCC_AHB1ENR_IOPCEN
|
#define ADC_3_GPIO_CLOCK_PORT RCC_AHB1ENR_IOPCEN
|
||||||
#define ADC_3_INIT() gpio_mode_setup(GPIOC, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO4)
|
#define ADC_3_INIT() gpio_mode_setup(GPIOC, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO1)
|
||||||
#endif
|
#endif
|
||||||
#define USE_AD1_3 1
|
#define USE_AD1_3 1
|
||||||
#else
|
#else
|
||||||
@@ -165,8 +166,8 @@
|
|||||||
#define ADC_4 ADC1_C4
|
#define ADC_4 ADC1_C4
|
||||||
//#ifdef USE_ADC_4
|
//#ifdef USE_ADC_4
|
||||||
#ifndef ADC_4_GPIO_CLOCK_PORT
|
#ifndef ADC_4_GPIO_CLOCK_PORT
|
||||||
#define ADC_4_GPIO_CLOCK_PORT RCC_AHB1ENR_IOPAEN
|
#define ADC_4_GPIO_CLOCK_PORT RCC_AHB1ENR_IOPCEN
|
||||||
#define ADC_4_INIT() gpio_mode_setup(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO4)
|
#define ADC_4_INIT() gpio_mode_setup(GPIOC, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO3)
|
||||||
#endif
|
#endif
|
||||||
#define USE_AD1_4 1
|
#define USE_AD1_4 1
|
||||||
//#else
|
//#else
|
||||||
@@ -174,6 +175,8 @@
|
|||||||
//#define ADC_4_INIT() {}
|
//#define ADC_4_INIT() {}
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
#define ADC_GPIO_CLOCK_PORT (ADC_1_GPIO_CLOCK_PORT | ADC_2_GPIO_CLOCK_PORT | ADC_3_GPIO_CLOCK_PORT | ADC_4_GPIO_CLOCK_PORT)
|
||||||
|
|
||||||
#ifdef USE_AD1
|
#ifdef USE_AD1
|
||||||
#define ADC1_GPIO_INIT(gpio) { \
|
#define ADC1_GPIO_INIT(gpio) { \
|
||||||
ADC_1_INIT(); \
|
ADC_1_INIT(); \
|
||||||
@@ -183,15 +186,17 @@
|
|||||||
}
|
}
|
||||||
#endif // USE_AD1
|
#endif // USE_AD1
|
||||||
|
|
||||||
#define BOARD_HAS_BARO 1
|
|
||||||
|
|
||||||
|
|
||||||
/* I2C mapping */
|
/* I2C mapping */
|
||||||
#define GPIO_I2C1_SCL GPIO8
|
#define GPIO_I2C1_SCL GPIO8
|
||||||
#define GPIO_I2C1_SDA GPIO7
|
#define GPIO_I2C1_SDA GPIO9
|
||||||
#define GPIO_I2C2_SCL GPIO10
|
#define GPIO_I2C2_SCL GPIO10
|
||||||
#define GPIO_I2C2_SDA GPIO11
|
#define GPIO_I2C2_SDA GPIO11
|
||||||
|
#define GPIO_I2C3_SCL GPIO8 //PA8
|
||||||
|
#define GPIO_I2C3_SDA GPIO9 //PC9
|
||||||
|
|
||||||
|
/* Activate onboard baro */
|
||||||
|
#define BOARD_HAS_BARO 1
|
||||||
|
|
||||||
/* PWM */
|
/* PWM */
|
||||||
#define PWM_USE_TIM2 1
|
#define PWM_USE_TIM2 1
|
||||||
@@ -209,7 +214,9 @@
|
|||||||
#define USE_PWM7 1
|
#define USE_PWM7 1
|
||||||
#define USE_PWM8 1
|
#define USE_PWM8 1
|
||||||
#define USE_PWM9 1
|
#define USE_PWM9 1
|
||||||
#define USE_PWM10 1
|
//#define USE_PWM10 1
|
||||||
|
|
||||||
|
#define ACTUATORS_PWM_NB 10
|
||||||
|
|
||||||
// PWM_SERVO_x is the index of the servo in the actuators_pwm_values array
|
// PWM_SERVO_x is the index of the servo in the actuators_pwm_values array
|
||||||
#if USE_PWM0
|
#if USE_PWM0
|
||||||
@@ -360,20 +367,19 @@
|
|||||||
#define PWM_TIM4_CHAN_MASK (PWM_SERVO_4_OC_BIT|PWM_SERVO_5_OC_BIT)
|
#define PWM_TIM4_CHAN_MASK (PWM_SERVO_4_OC_BIT|PWM_SERVO_5_OC_BIT)
|
||||||
#define PWM_TIM5_CHAN_MASK (PWM_SERVO_6_OC_BIT|PWM_SERVO_7_OC_BIT|PWM_SERVO_8_OC_BIT|PWM_SERVO_9_OC_BIT)
|
#define PWM_TIM5_CHAN_MASK (PWM_SERVO_6_OC_BIT|PWM_SERVO_7_OC_BIT|PWM_SERVO_8_OC_BIT|PWM_SERVO_9_OC_BIT)
|
||||||
|
|
||||||
|
|
||||||
/* PPM */
|
/* PPM */
|
||||||
|
|
||||||
#define USE_PPM_TIM1 1
|
#define USE_PPM_TIM2 1
|
||||||
|
|
||||||
#define PPM_CHANNEL TIM_IC1
|
#define PPM_CHANNEL TIM_IC2
|
||||||
#define PPM_TIMER_INPUT TIM_IC_IN_TI1
|
#define PPM_TIMER_INPUT TIM_IC_IN_TI1
|
||||||
#define PPM_IRQ NVIC_TIM1_CC_IRQ
|
#define PPM_IRQ NVIC_TIM2_IRQ
|
||||||
#define PPM_IRQ2 NVIC_TIM1_UP_TIM10_IRQ
|
//#define PPM_IRQ2 NVIC_TIM2_UP_TIM10_IRQ
|
||||||
#define PPM_IRQ_FLAGS TIM_DIER_CC1IE
|
#define PPM_IRQ_FLAGS TIM_DIER_CC2IE
|
||||||
#define PPM_IRQ_CCIF TIM_SR_CC1IF
|
#define PPM_IRQ_CCIF TIM_SR_CC2IF
|
||||||
#define PPM_GPIO_PERIPHERAL RCC_AHB1ENR_IOPAEN
|
#define PPM_GPIO_PERIPHERAL RCC_AHB1ENR_IOPBEN
|
||||||
#define PPM_GPIO_PORT GPIOA
|
#define PPM_GPIO_PORT GPIOB
|
||||||
#define PPM_GPIO_PIN GPIO8
|
#define PPM_GPIO_PIN GPIO3
|
||||||
#define PPM_GPIO_AF GPIO_AF1
|
#define PPM_GPIO_AF GPIO_AF1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Reference in New Issue
Block a user