mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-31 20:38:27 +08:00
Fix Python tools - file name consistency - compile master without warnings - airframe fix (#3388)
This commit is contained in:
committed by
GitHub
parent
fa1eeeb98f
commit
d7c50a262b
@@ -41,6 +41,8 @@
|
|||||||
<!-- Log in high speed (Remove for outdoor flights) -->
|
<!-- Log in high speed (Remove for outdoor flights) -->
|
||||||
<!-- <define name="IMU_LOG_HIGHSPEED" value="TRUE"/> -->
|
<!-- <define name="IMU_LOG_HIGHSPEED" value="TRUE"/> -->
|
||||||
<define name="I2C2_CLOCK_SPEED" value="100000"/>
|
<define name="I2C2_CLOCK_SPEED" value="100000"/>
|
||||||
|
|
||||||
|
<define name="INS_EXT_VISION_ROTATION" value="TRUE"/><!--AP only-->
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="nps" board="pc">
|
<target name="nps" board="pc">
|
||||||
@@ -243,7 +245,6 @@
|
|||||||
<define name="FWD_SIDESLIP_GAIN" value="0.25"/> <!-- cyfoam 0.32-->
|
<define name="FWD_SIDESLIP_GAIN" value="0.25"/> <!-- cyfoam 0.32-->
|
||||||
<!-- <define name="THRESHOLD_GROUND_DETECT" value="40"/> -->
|
<!-- <define name="THRESHOLD_GROUND_DETECT" value="40"/> -->
|
||||||
<define name="ROTWING_STATE_USE_ROTATION_REF_MODEL" value="TRUE"/>
|
<define name="ROTWING_STATE_USE_ROTATION_REF_MODEL" value="TRUE"/>
|
||||||
<define name="INS_EXT_VISION_ROTATION" value="TRUE"/>
|
|
||||||
</section>
|
</section>
|
||||||
<section name="GROUND_DETECT">
|
<section name="GROUND_DETECT">
|
||||||
<define name="THRESHOLD_GROUND_DETECT" value="40"/>
|
<define name="THRESHOLD_GROUND_DETECT" value="40"/>
|
||||||
|
|||||||
@@ -1,212 +0,0 @@
|
|||||||
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
|
|
||||||
|
|
||||||
<airframe name="bebop_one_indi_ekf2">
|
|
||||||
<description> bebop with a oneloop ANDI and backup INDI controller and EKF2
|
|
||||||
</description>
|
|
||||||
|
|
||||||
<firmware name="rotorcraft">
|
|
||||||
<autopilot name="rotorcraft_oneloop_with_backup.xml"/>
|
|
||||||
<target name="ap" board="bebop">
|
|
||||||
<define name="RADIO_TH_HOLD" value="0"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="nps" board="pc">
|
|
||||||
<module name="fdm" type="jsbsim"/>
|
|
||||||
<module name="udp"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<module name="telemetry" type="transparent_udp"/>
|
|
||||||
<module name="radio_control" type="datalink"/>
|
|
||||||
<module name="actuators" type="bebop"/>
|
|
||||||
<module name="imu" type="bebop"/>
|
|
||||||
|
|
||||||
<module name="gps" type="furuno"/>
|
|
||||||
<!-- <module name="gps" type="datalink"/> -->
|
|
||||||
|
|
||||||
<module name="oneloop" type="andi">
|
|
||||||
<configure name="ANDI_NUM_ACT" value="4"/>
|
|
||||||
<configure name="ANDI_NUM_VIRTUAL_ACT" value="2"/>
|
|
||||||
<configure name="ANDI_OUTPUTS" value="6"/>
|
|
||||||
</module>
|
|
||||||
|
|
||||||
<module name="stabilization" type="indi" >
|
|
||||||
<configure name="INDI_NUM_ACT" value="4"/>
|
|
||||||
</module>
|
|
||||||
|
|
||||||
<!-- <module name="ins" type="ekf2">
|
|
||||||
<define name="INS_EKF2_OPTITRACK" value="true"/>
|
|
||||||
</module> -->
|
|
||||||
<module name="ins" type="ekf2"/>
|
|
||||||
<module name="nav_hybrid"/>
|
|
||||||
|
|
||||||
<module name="guidance" type="indi">
|
|
||||||
<define name="GUIDANCE_INDI_SPECIFIC_FORCE_GAIN" value="-500.0"/>
|
|
||||||
<define name="GUIDANCE_INDI_THRUST_DYNAMICS_FREQ" value="53.9"/>
|
|
||||||
<define name="GUIDANCE_INDI_RC_DEBUG" value="FALSE"/>
|
|
||||||
</module>
|
|
||||||
|
|
||||||
<module name="geo_mag"/>
|
|
||||||
<module name="air_data"/>
|
|
||||||
|
|
||||||
<module name="wls">
|
|
||||||
<define name="WLS_N_U_MAX" value = "6"/>
|
|
||||||
<define name="WLS_N_V_MAX" value = "6"/>
|
|
||||||
</module>
|
|
||||||
|
|
||||||
<module name="logger_file">
|
|
||||||
<define name="FILE_LOGGER_PATH" value="/data/ftp/internal_000/"/>
|
|
||||||
</module>
|
|
||||||
</firmware>
|
|
||||||
|
|
||||||
<commands>
|
|
||||||
<axis name="PITCH" failsafe_value="0"/>
|
|
||||||
<axis name="ROLL" failsafe_value="0"/>
|
|
||||||
<axis name="YAW" failsafe_value="0"/>
|
|
||||||
<axis name="THRUST" failsafe_value="4000"/>
|
|
||||||
</commands>
|
|
||||||
|
|
||||||
<servos driver="Default">
|
|
||||||
<servo name="TOP_LEFT" no="0" min="3000" neutral="3000" max="12000"/>
|
|
||||||
<servo name="TOP_RIGHT" no="1" min="3000" neutral="3000" max="12000"/>
|
|
||||||
<servo name="BOTTOM_RIGHT" no="2" min="3000" neutral="3000" max="12000"/>
|
|
||||||
<servo name="BOTTOM_LEFT" no="3" min="3000" neutral="3000" max="12000"/>
|
|
||||||
</servos>
|
|
||||||
|
|
||||||
<command_laws>
|
|
||||||
<let VAR="th_hold" value="!autopilot_get_motors_on()"/>
|
|
||||||
<set value="($th_hold? -9600 : actuators_pprz[0])" SERVO="TOP_LEFT"/>
|
|
||||||
<set value="($th_hold? -9600 : actuators_pprz[1])" SERVO="TOP_RIGHT"/>
|
|
||||||
<set value="($th_hold? -9600 : actuators_pprz[2])" SERVO="BOTTOM_RIGHT"/>
|
|
||||||
<set value="($th_hold? -9600 : actuators_pprz[3])" SERVO="BOTTOM_LEFT"/>
|
|
||||||
</command_laws>
|
|
||||||
|
|
||||||
<section name="MISC">
|
|
||||||
<define name="AUTOPILOT_IN_FLIGHT_MIN_THRUST" value = "300"/>
|
|
||||||
<define name="THRESHOLD_GROUND_DETECT" value = "40"/>
|
|
||||||
<define name="AUTOPILOT_ARMING_DELAY" value = "2"/>
|
|
||||||
<define name="GUIDANCE_INDI_MAX_AIRSPEED" value = "5.0f"/> <!--remove once hybrid nav is made not dependent on guidance indi hybrid-->
|
|
||||||
<define name="GUIDANCE_INDI_NAV_SPEED_MARGIN" value = "0.0"/> <!--remove once hybrid nav is made not dependent on guidance indi hybrid-->
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section name="AIR_DATA" prefix="AIR_DATA_">
|
|
||||||
<define name="CALC_AIRSPEED" value="FALSE"/>
|
|
||||||
<define name="CALC_TAS_FACTOR" value="FALSE"/>
|
|
||||||
<define name="CALC_AMSL_BARO" value="TRUE"/>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section name="IMU" prefix="IMU_">
|
|
||||||
<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
|
|
||||||
<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
|
|
||||||
<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>
|
|
||||||
<define name="ACCEL_CALIB" value="{{.abi_id=1, .calibrated={.neutral=true, .scale=true},.neutral={171,25,-326}, .scale={{22001,54059,59579},{8998,22092,24933}}}}"/>
|
|
||||||
<define name="IMU_MAG_CALIB" value="{{.abi_id=1, .calibrated={.neutral=true, .scale=true},.neutral={-9,8,121}, .scale={{1143,47395,48383},{152,5978,5811}}}}"/>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section name="INS" prefix="INS_">
|
|
||||||
<define name="SONAR_MAX_RANGE" value="2.2"/>
|
|
||||||
</section>
|
|
||||||
<section name="RC_SETPOINT" prefix="STABILIZATION_ATTITUDE_">
|
|
||||||
<define name="SP_MAX_PHI" value="45" unit="deg"/>
|
|
||||||
<define name="SP_MAX_THETA" value="45" unit="deg"/>
|
|
||||||
<define name="SP_MAX_R" value="400" unit="deg/s"/>
|
|
||||||
<define name="DEADBAND_A" value="0"/>
|
|
||||||
<define name="DEADBAND_E" value="0"/>
|
|
||||||
<define name="DEADBAND_R" value="50"/>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section name="STABILIZATION_ATTITUDE_INDI" prefix="STABILIZATION_INDI_">
|
|
||||||
<define name="G1_ROLL" value="{20 , -20, -20 , 20 }"/>
|
|
||||||
<define name="G1_PITCH" value="{14 , 14, -14 , -14 }"/>
|
|
||||||
<define name="G1_YAW" value="{-1, 1, -1, 1}"/>
|
|
||||||
<define name="G1_THRUST" value="{-.4, -.4, -.4, -.4}"/>
|
|
||||||
<define name="G2" value="{-61.2093, 65.3670, -65.7419, 65.4516}"/>
|
|
||||||
<define name="REF_ERR_P" value="600.0"/>
|
|
||||||
<define name="REF_ERR_Q" value="600.0"/>
|
|
||||||
<define name="REF_ERR_R" value="600.0"/>
|
|
||||||
<define name="REF_RATE_P" value="28.0"/>
|
|
||||||
<define name="REF_RATE_Q" value="28.0"/>
|
|
||||||
<define name="REF_RATE_R" value="28.0"/>
|
|
||||||
<define name="ESTIMATION_FILT_CUTOFF" value="4.0"/>
|
|
||||||
<define name="FILT_CUTOFF" value="5.0"/>
|
|
||||||
<define name="ACT_FREQ" value="{53.9, 53.9, 53.9, 53.9}"/>
|
|
||||||
<define name="USE_ADAPTIVE" value="TRUE"/>
|
|
||||||
<define name="ADAPTIVE_MU" value="0.0001"/>
|
|
||||||
<define name="WLS_PRIORITIES" value="{1000, 1000, 1, 100}"/>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_">
|
|
||||||
<define name="HOVER_KP" value="283"/>
|
|
||||||
<define name="HOVER_KD" value="82"/>
|
|
||||||
<define name="HOVER_KI" value="20"/>
|
|
||||||
<define name="NOMINAL_HOVER_THROTTLE" value="0.655"/>
|
|
||||||
<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="REF_MAX_SPEED" value="2" unit="m/s"/>
|
|
||||||
<define name="PGAIN" value="79"/>
|
|
||||||
<define name="DGAIN" value="100"/>
|
|
||||||
<define name="IGAIN" value="30"/>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section PREFIX="ONELOOP_ANDI_" name="ONELOOP_ANDI">
|
|
||||||
<define name = "G1_ROLL" value = "{20.0f , -20.0f, -20.0f, 20.0f , 0.0f, 0.0f }"/>
|
|
||||||
<define name = "G1_PITCH" value = "{10.0f , 10.0f , -10.0f, -10.0f, 0.0f, 0.0f }"/>
|
|
||||||
<define name = "G1_YAW" value = "{-1.0f , 1.0f , -1.0f , 1.0f , 0.0f, 0.0f }"/>
|
|
||||||
<define name = "G1_THRUST" value = "{-.4f , -.4f , -.4f , -.4f , 0.0f, 0.0f }"/>
|
|
||||||
<define name = "G1_ZERO" value = "{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }"/>
|
|
||||||
<define name = "G2" value = "{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}"/>
|
|
||||||
<define name = "MAX_R" value = "120.0" unit="deg/s"/>
|
|
||||||
<define name = "FILT_CUTOFF" value = "1.0" />
|
|
||||||
<define name = "FILT_CUTOFF_ACC" value = "1.0" />
|
|
||||||
<define name = "FILT_CUTOFF_VEL" value = "10.0"/>
|
|
||||||
<define name = "FILT_CUTOFF_POS" value = "10.0"/>
|
|
||||||
<define name = "ESTIMATION_FILT_CUTOFF" value = "3.2" />
|
|
||||||
<define name = "FILT_CUTOFF_P" value = "5.0" />
|
|
||||||
<define name = "FILT_CUTOFF_Q" value = "5.0" />
|
|
||||||
<define name = "FILT_CUTOFF_R" value = "5.0" />
|
|
||||||
<define name = "FILT_CUTOFF_RDOT" value = "0.5" />
|
|
||||||
<define name = "FILTER_YAW_RATE" value = "TRUE"/>
|
|
||||||
<define name = "ACT_DYN" value = "{50.0f, 50.0f, 50.0f, 50.0f, 0.0f,0.0f}" />
|
|
||||||
<define name = "ACT_IS_SERVO" value = "{0, 0, 0, 0, 0, 0}" />
|
|
||||||
<define name = "ACT_MAX" value = "{9600.0f, 9600.0f, 9600.0f, 9600.0f, M_PI_4, M_PI_4}"/>
|
|
||||||
<define name = "ACT_MIN" value = "{0.0f , 0.0f, 0.0f, 0.0f, -M_PI_4, -M_PI_4}"/>
|
|
||||||
<define name = "ACT_MAX_NORM" value = "{1.0f , 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}"/>
|
|
||||||
<define name = "ACT_MIN_NORM" value = "{0.0f , 0.0f, 0.0f, 0.0f, -1.0f, -1.0f}"/>
|
|
||||||
<define name = "DEBUG_MODE" value = "FALSE"/>
|
|
||||||
<define name = "AC_HAS_PUSHER" value = "FALSE"/>
|
|
||||||
<define name = "WV" value = "{1.0f, 1.0f, 1.0f, 1000.0f, 1000.0f, 100.0f}"/>
|
|
||||||
<define name = "WU" value = "{3.0f, 3.0f, 3.0f, 3.0f, 2.0f, 2.0f}"/>
|
|
||||||
<define name = "U_PREF" value = "{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}"/>
|
|
||||||
<define name = "MAX_AIRSPEED" value = "5.0f"/>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section name="NAVIGATION" prefix="NAV_">
|
|
||||||
<define name="CLIMB_VSPEED" value="2.5"/>
|
|
||||||
<define name="DESCEND_VSPEED" value="-1.0"/>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section name="SIMULATOR" prefix="NPS_">
|
|
||||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
|
||||||
<define name="JSBSIM_MODEL" value="bebop" type="string"/>
|
|
||||||
<define name="COMMANDS_NB" value="4"/>
|
|
||||||
<define name="NO_MOTOR_MIXING" value="TRUE"/>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section name="AUTOPILOT">
|
|
||||||
<define name="MODE_STARTUP" value="AP_MODE_ATTITUDE_DIRECT"/>
|
|
||||||
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
|
|
||||||
<define name="MODE_AUTO1" value="AP_MODE_MODULE"/>
|
|
||||||
<define name="MODE_AUTO2" value="AP_MODE_NAV"/>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section name="BAT">
|
|
||||||
<define name="MILLIAMP_AT_FULL_THROTTLE" value="8700"/>
|
|
||||||
<define name="CATASTROPHIC_BAT_LEVEL" value="9.9" unit="V"/>
|
|
||||||
<define name="CRITIC_BAT_LEVEL" value="11.0" unit="V"/>
|
|
||||||
<define name="LOW_BAT_LEVEL" value="11.1" unit="V"/>
|
|
||||||
<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</airframe>
|
|
||||||
@@ -129,6 +129,9 @@
|
|||||||
<configure value="TRUE" name="UAVCAN_USE_CAN1"/>
|
<configure value="TRUE" name="UAVCAN_USE_CAN1"/>
|
||||||
<configure value="TRUE" name="UAVCAN_USE_CAN2"/>
|
<configure value="TRUE" name="UAVCAN_USE_CAN2"/>
|
||||||
<define value="FALSE" name="UAVCAN_ACTUATORS_USE_CURRENT"/>
|
<define value="FALSE" name="UAVCAN_ACTUATORS_USE_CURRENT"/>
|
||||||
|
<!-- Don't oversaturate the UAVCAN bus -->
|
||||||
|
<define name="ACTUATORS_UAVCAN_RAW_DIV" value="2"/> <!-- ESC's at half the PERIODIC_FREQ -->
|
||||||
|
<define name="ACTUATORS_UAVCAN_CMD_DIV" value="4"/> <!-- Servo's at 1/4 the PERIODIC_FREQ -->
|
||||||
</module>
|
</module>
|
||||||
<!-- Rotation mechanism actuator on UART -->
|
<!-- Rotation mechanism actuator on UART -->
|
||||||
<module name="actuators" type="faulhaber"/>
|
<module name="actuators" type="faulhaber"/>
|
||||||
|
|||||||
@@ -129,6 +129,9 @@
|
|||||||
<configure value="TRUE" name="UAVCAN_USE_CAN1"/>
|
<configure value="TRUE" name="UAVCAN_USE_CAN1"/>
|
||||||
<configure value="TRUE" name="UAVCAN_USE_CAN2"/>
|
<configure value="TRUE" name="UAVCAN_USE_CAN2"/>
|
||||||
<define value="FALSE" name="UAVCAN_ACTUATORS_USE_CURRENT"/>
|
<define value="FALSE" name="UAVCAN_ACTUATORS_USE_CURRENT"/>
|
||||||
|
<!-- Don't oversaturate the UAVCAN bus -->
|
||||||
|
<define name="ACTUATORS_UAVCAN_RAW_DIV" value="2"/> <!-- ESC's at half the PERIODIC_FREQ -->
|
||||||
|
<define name="ACTUATORS_UAVCAN_CMD_DIV" value="4"/> <!-- Servo's at 1/4 the PERIODIC_FREQ -->
|
||||||
</module>
|
</module>
|
||||||
<!-- Rotation mechanism actuator on UART -->
|
<!-- Rotation mechanism actuator on UART -->
|
||||||
<module name="actuators" type="faulhaber"/>
|
<module name="actuators" type="faulhaber"/>
|
||||||
|
|||||||
@@ -45,8 +45,6 @@
|
|||||||
<define name="NAV_HYBRID_MAX_AIRSPEED" value="22"/>
|
<define name="NAV_HYBRID_MAX_AIRSPEED" value="22"/>
|
||||||
<define name="NAV_HYBRID_MAX_DECELERATION" value="0.8"/>
|
<define name="NAV_HYBRID_MAX_DECELERATION" value="0.8"/>
|
||||||
<define name="DEFAULT_CIRCLE_RADIUS" value="100.0"/>
|
<define name="DEFAULT_CIRCLE_RADIUS" value="100.0"/>
|
||||||
<define name="INS_EKF2_GPS_YAW_OFFSET" value="0"/>
|
|
||||||
<define name="INS_EKF2_GPS_ANTENNA_DISTANCE" value="1.02"/>
|
|
||||||
|
|
||||||
<!-- Ground detect -->
|
<!-- Ground detect -->
|
||||||
<define name="USE_GROUND_DETECT_INDI_THRUST" value="TRUE"/>
|
<define name="USE_GROUND_DETECT_INDI_THRUST" value="TRUE"/>
|
||||||
@@ -261,6 +259,21 @@
|
|||||||
<define name="JS_AXIS_MODE" value="4"/>
|
<define name="JS_AXIS_MODE" value="4"/>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<!--EKF Settings-->
|
||||||
|
<section name="EKF2" prefix="INS_EKF2_">
|
||||||
|
<define name="GPS_YAW_OFFSET" value="0"/>
|
||||||
|
<define name="GPS_ANTENNA_DISTANCE" value="1.02"/>
|
||||||
|
|
||||||
|
<define name="IMU_POS_X" value="0.321"/>
|
||||||
|
<define name="IMU_POS_Y" value="0.0"/>
|
||||||
|
<define name="IMU_POS_Z" value="0.0"/>
|
||||||
|
|
||||||
|
<!-- The main GPS is mounted 0.55m behind of c.g.-->
|
||||||
|
<define name="GPS_POS_X" value="-0.55"/>
|
||||||
|
<define name="GPS_POS_Y" value="0.0"/>
|
||||||
|
<define name="GPS_POS_Z" value="0.0"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
<!--Airspeed estimation using EKF-->
|
<!--Airspeed estimation using EKF-->
|
||||||
<section name="EKF_AW">
|
<section name="EKF_AW">
|
||||||
<define name="EKF_AW_P0_V_BODY" value="1.E-2f" description="Initial covariance body velocity"/>
|
<define name="EKF_AW_P0_V_BODY" value="1.E-2f" description="Initial covariance body velocity"/>
|
||||||
|
|||||||
@@ -49,6 +49,8 @@
|
|||||||
<!-- Log in high speed (Remove for outdoor flights) -->
|
<!-- Log in high speed (Remove for outdoor flights) -->
|
||||||
<!-- <define name="IMU_LOG_HIGHSPEED" value="TRUE"/> -->
|
<!-- <define name="IMU_LOG_HIGHSPEED" value="TRUE"/> -->
|
||||||
<define name="I2C2_CLOCK_SPEED" value="100000"/>
|
<define name="I2C2_CLOCK_SPEED" value="100000"/>
|
||||||
|
|
||||||
|
<define name="INS_EXT_VISION_ROTATION" value="TRUE"/><!--AP only-->
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="nps" board="pc">
|
<target name="nps" board="pc">
|
||||||
@@ -96,7 +98,6 @@
|
|||||||
<module name="imu" type="cube"/>
|
<module name="imu" type="cube"/>
|
||||||
<module name="ins" type="ekf2">
|
<module name="ins" type="ekf2">
|
||||||
<define name="INS_EKF2_OPTITRACK" value="TRUE"/>
|
<define name="INS_EKF2_OPTITRACK" value="TRUE"/>
|
||||||
<define name="INS_EXT_VISION_ROTATION" value="TRUE"/>
|
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<!-- Actuators on dual CAN bus -->
|
<!-- Actuators on dual CAN bus -->
|
||||||
|
|||||||
+8
-8
@@ -55,14 +55,14 @@
|
|||||||
gui_color="blue"
|
gui_color="blue"
|
||||||
/>
|
/>
|
||||||
<aircraft
|
<aircraft
|
||||||
name="ardrone2_gazebo"
|
name="RotatingWingV3F"
|
||||||
ac_id="44"
|
ac_id="10"
|
||||||
airframe="airframes/examples/ardrone2_gazebo.xml"
|
airframe="airframes/tudelft/rotwing_v3f.xml"
|
||||||
radio="radios/dummy.xml"
|
radio="radios/crossfire_sbus.xml"
|
||||||
telemetry="telemetry/default_rotorcraft.xml"
|
telemetry="telemetry/highspeed_rotorcraft.xml"
|
||||||
flight_plan="flight_plans/rotorcraft_optitrack.xml"
|
flight_plan="flight_plans/tudelft/rotwing_troia.xml"
|
||||||
settings="settings/rotorcraft_basic.xml settings/nps.xml"
|
settings="settings/rotorcraft_basic.xml"
|
||||||
settings_modules="modules/ahrs_int_cmpl_quat.xml modules/air_data.xml modules/cv_colorfilter.xml modules/cv_opticflow.xml modules/electrical.xml modules/geo_mag.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_pid_rotorcraft.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/ins_extended.xml modules/nav_rotorcraft.xml modules/stabilization_int_quat.xml modules/video_rtp_stream.xml"
|
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
||||||
gui_color="red"
|
gui_color="red"
|
||||||
/>
|
/>
|
||||||
<aircraft
|
<aircraft
|
||||||
|
|||||||
@@ -544,7 +544,7 @@
|
|||||||
airframe="airframes/tudelft/rotwing_v3b.xml"
|
airframe="airframes/tudelft/rotwing_v3b.xml"
|
||||||
radio="radios/crossfire_sbus.xml"
|
radio="radios/crossfire_sbus.xml"
|
||||||
telemetry="telemetry/highspeed_rotorcraft.xml"
|
telemetry="telemetry/highspeed_rotorcraft.xml"
|
||||||
flight_plan="flight_plans/tudelft/rotating_wing_EHVB.xml"
|
flight_plan="flight_plans/tudelft/rotwing_EHVB.xml"
|
||||||
settings="settings/rotorcraft_basic.xml"
|
settings="settings/rotorcraft_basic.xml"
|
||||||
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/lidar_tfmini.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/lidar_tfmini.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
||||||
gui_color="red"
|
gui_color="red"
|
||||||
@@ -555,7 +555,7 @@
|
|||||||
airframe="airframes/tudelft/rotwing_v3d.xml"
|
airframe="airframes/tudelft/rotwing_v3d.xml"
|
||||||
radio="radios/crossfire_sbus.xml"
|
radio="radios/crossfire_sbus.xml"
|
||||||
telemetry="telemetry/highspeed_rotorcraft.xml"
|
telemetry="telemetry/highspeed_rotorcraft.xml"
|
||||||
flight_plan="flight_plans/tudelft/rotating_wing_EHVB.xml"
|
flight_plan="flight_plans/tudelft/rotwing_EHVB.xml"
|
||||||
settings="settings/rotorcraft_basic.xml"
|
settings="settings/rotorcraft_basic.xml"
|
||||||
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
||||||
gui_color="red"
|
gui_color="red"
|
||||||
@@ -566,53 +566,20 @@
|
|||||||
airframe="airframes/tudelft/rotwing_v3e.xml"
|
airframe="airframes/tudelft/rotwing_v3e.xml"
|
||||||
radio="radios/crossfire_sbus.xml"
|
radio="radios/crossfire_sbus.xml"
|
||||||
telemetry="telemetry/highspeed_rotorcraft.xml"
|
telemetry="telemetry/highspeed_rotorcraft.xml"
|
||||||
flight_plan="flight_plans/tudelft/rotating_wing_EHVB.xml"
|
flight_plan="flight_plans/tudelft/rotwing_EHVB.xml"
|
||||||
settings="settings/rotorcraft_basic.xml"
|
settings="settings/rotorcraft_basic.xml"
|
||||||
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
||||||
gui_color="red"
|
gui_color="red"
|
||||||
/>
|
/>
|
||||||
<aircraft
|
|
||||||
name="Bebop_DePonti"
|
|
||||||
ac_id="36"
|
|
||||||
airframe="airframes/tudelft/bebop_one_indi_generated_ekf2.xml"
|
|
||||||
radio="radios/dummy.xml"
|
|
||||||
telemetry="telemetry/highspeed_rotorcraft.xml"
|
|
||||||
flight_plan="flight_plans/tudelft/oneloop_cyberzoo.xml"
|
|
||||||
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_speed.xml"
|
|
||||||
settings_modules="modules/air_data.xml modules/electrical.xml modules/geo_mag.xml modules/gps.xml modules/guidance_indi.xml modules/guidance_pid_rotorcraft.xml [modules/guidance_rotorcraft.xml] modules/imu_common.xml modules/ins_ekf2.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/oneloop_andi.xml modules/stabilization_indi.xml"
|
|
||||||
gui_color="#ffffcccaccca"
|
|
||||||
/>
|
|
||||||
<aircraft
|
|
||||||
name="RW3C_DePonti"
|
|
||||||
ac_id="95"
|
|
||||||
airframe="airframes/tudelft/rotwing_v3c_oneloop_optitrack_ext_pose.xml"
|
|
||||||
radio="radios/crossfire_sbus.xml"
|
|
||||||
telemetry="telemetry/highspeed_rotorcraft.xml"
|
|
||||||
flight_plan="flight_plans/tudelft/oneloop_cyberzoo.xml"
|
|
||||||
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_speed.xml"
|
|
||||||
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/eff_scheduling_rotwing_V2.xml modules/electrical.xml modules/gps.xml modules/guidance_pid_rotorcraft.xml [modules/guidance_rotorcraft.xml] modules/imu_common.xml modules/imu_heater.xml modules/lidar_tfmini.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/oneloop_andi.xml modules/rotwing_state_V2.xml"
|
|
||||||
gui_color="#ffffcccaccca"
|
|
||||||
/>
|
|
||||||
<aircraft
|
|
||||||
name="RW3C_DePonti_Simulation"
|
|
||||||
ac_id="198"
|
|
||||||
airframe="airframes/tudelft/rotwing_v3c_oneloop_simulation.xml"
|
|
||||||
radio="radios/dummy.xml"
|
|
||||||
telemetry="telemetry/highspeed_rotorcraft.xml"
|
|
||||||
flight_plan="flight_plans/tudelft/oneloop_valkenburg.xml"
|
|
||||||
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_speed.xml"
|
|
||||||
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/eff_scheduling_rotwing_V2.xml modules/electrical.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_pid_rotorcraft.xml [modules/guidance_rotorcraft.xml] modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/oneloop_andi.xml modules/rotwing_state_V2.xml"
|
|
||||||
gui_color="#ffffcccaccca"
|
|
||||||
/>
|
|
||||||
<aircraft
|
<aircraft
|
||||||
name="RotatingWingV3F"
|
name="RotatingWingV3F"
|
||||||
ac_id="10"
|
ac_id="10"
|
||||||
airframe="airframes/tudelft/rotwing_v3f.xml"
|
airframe="airframes/tudelft/rotwing_v3f.xml"
|
||||||
radio="radios/crossfire_sbus.xml"
|
radio="radios/crossfire_sbus.xml"
|
||||||
telemetry="telemetry/highspeed_rotorcraft.xml"
|
telemetry="telemetry/highspeed_rotorcraft.xml"
|
||||||
flight_plan="flight_plans/tudelft/rotating_wing_troia.xml"
|
flight_plan="flight_plans/tudelft/rotwing_troia.xml"
|
||||||
settings="settings/rotorcraft_basic.xml"
|
settings="settings/rotorcraft_basic.xml"
|
||||||
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
||||||
gui_color="red"
|
gui_color="red"
|
||||||
/>
|
/>
|
||||||
<aircraft
|
<aircraft
|
||||||
@@ -621,7 +588,7 @@
|
|||||||
airframe="airframes/tudelft/rotwing_v3g.xml"
|
airframe="airframes/tudelft/rotwing_v3g.xml"
|
||||||
radio="radios/crossfire_sbus.xml"
|
radio="radios/crossfire_sbus.xml"
|
||||||
telemetry="telemetry/highspeed_rotorcraft.xml"
|
telemetry="telemetry/highspeed_rotorcraft.xml"
|
||||||
flight_plan="flight_plans/tudelft/rotating_wing_EHR8.xml"
|
flight_plan="flight_plans/tudelft/rotwing_EHR8.xml"
|
||||||
settings="settings/rotorcraft_basic.xml"
|
settings="settings/rotorcraft_basic.xml"
|
||||||
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
||||||
gui_color="red"
|
gui_color="red"
|
||||||
@@ -632,7 +599,7 @@
|
|||||||
airframe="airframes/tudelft/rotwing_v3h.xml"
|
airframe="airframes/tudelft/rotwing_v3h.xml"
|
||||||
radio="radios/crossfire_sbus.xml"
|
radio="radios/crossfire_sbus.xml"
|
||||||
telemetry="telemetry/highspeed_rotorcraft.xml"
|
telemetry="telemetry/highspeed_rotorcraft.xml"
|
||||||
flight_plan="flight_plans/tudelft/rotating_wing_EHVB.xml"
|
flight_plan="flight_plans/tudelft/rotwing_EHVB.xml"
|
||||||
settings="settings/rotorcraft_basic.xml"
|
settings="settings/rotorcraft_basic.xml"
|
||||||
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/ekf_aw.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/parachute.xml modules/pfc_actuators.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
||||||
gui_color="red"
|
gui_color="red"
|
||||||
@@ -659,13 +626,35 @@
|
|||||||
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/eff_scheduling_rotwing_V2.xml modules/electrical.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_pid_rotorcraft.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/lidar_tfmini.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/oneloop_andi.xml modules/rotwing_state_V2.xml"
|
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/eff_scheduling_rotwing_V2.xml modules/electrical.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_pid_rotorcraft.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/lidar_tfmini.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/oneloop_andi.xml modules/rotwing_state_V2.xml"
|
||||||
gui_color="red"
|
gui_color="red"
|
||||||
/>
|
/>
|
||||||
|
<aircraft
|
||||||
|
name="RW3C_DePonti"
|
||||||
|
ac_id="95"
|
||||||
|
airframe="airframes/tudelft/rotwing_v3c_oneloop_optitrack_ext_pose.xml"
|
||||||
|
radio="radios/crossfire_sbus.xml"
|
||||||
|
telemetry="telemetry/highspeed_rotorcraft.xml"
|
||||||
|
flight_plan="flight_plans/tudelft/oneloop_cyberzoo.xml"
|
||||||
|
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_speed.xml"
|
||||||
|
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/eff_scheduling_rotwing_V2.xml modules/electrical.xml modules/gps.xml modules/guidance_pid_rotorcraft.xml [modules/guidance_rotorcraft.xml] modules/imu_common.xml modules/imu_heater.xml modules/lidar_tfmini.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/oneloop_andi.xml modules/rotwing_state_V2.xml"
|
||||||
|
gui_color="#ffffcccaccca"
|
||||||
|
/>
|
||||||
|
<aircraft
|
||||||
|
name="RW3C_DePonti_Simulation"
|
||||||
|
ac_id="198"
|
||||||
|
airframe="airframes/tudelft/rotwing_v3c_oneloop_simulation.xml"
|
||||||
|
radio="radios/dummy.xml"
|
||||||
|
telemetry="telemetry/highspeed_rotorcraft.xml"
|
||||||
|
flight_plan="flight_plans/tudelft/oneloop_valkenburg.xml"
|
||||||
|
settings="settings/rotorcraft_basic.xml settings/control/rotorcraft_speed.xml"
|
||||||
|
settings_modules="modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/eff_scheduling_rotwing_V2.xml modules/electrical.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_pid_rotorcraft.xml [modules/guidance_rotorcraft.xml] modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/oneloop_andi.xml modules/rotwing_state_V2.xml"
|
||||||
|
gui_color="#ffffcccaccca"
|
||||||
|
/>
|
||||||
<aircraft
|
<aircraft
|
||||||
name="Rotwing5"
|
name="Rotwing5"
|
||||||
ac_id="35"
|
ac_id="35"
|
||||||
airframe="airframes/tudelft/rotwing5.xml"
|
airframe="airframes/tudelft/rotwing5.xml"
|
||||||
radio="radios/crossfire_sbus.xml"
|
radio="radios/crossfire_sbus.xml"
|
||||||
telemetry="telemetry/highspeed_rotorcraft.xml"
|
telemetry="telemetry/highspeed_rotorcraft.xml"
|
||||||
flight_plan="flight_plans/tudelft/rotating_wing_troia.xml"
|
flight_plan="flight_plans/tudelft/rotwing_troia.xml"
|
||||||
settings="settings/rotorcraft_basic.xml"
|
settings="settings/rotorcraft_basic.xml"
|
||||||
settings_modules="modules/actuators_faulhaber.xml modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/electrical.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
settings_modules="modules/actuators_faulhaber.xml modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/electrical.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
||||||
gui_color="red"
|
gui_color="red"
|
||||||
@@ -676,7 +665,7 @@
|
|||||||
airframe="airframes/tudelft/rotwing6.xml"
|
airframe="airframes/tudelft/rotwing6.xml"
|
||||||
radio="radios/crossfire_sbus.xml"
|
radio="radios/crossfire_sbus.xml"
|
||||||
telemetry="telemetry/highspeed_rotorcraft.xml"
|
telemetry="telemetry/highspeed_rotorcraft.xml"
|
||||||
flight_plan="flight_plans/tudelft/rotating_wing_EHVB.xml"
|
flight_plan="flight_plans/tudelft/rotwing_EHVB.xml"
|
||||||
settings="settings/rotorcraft_basic.xml"
|
settings="settings/rotorcraft_basic.xml"
|
||||||
settings_modules="modules/actuators_faulhaber.xml modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
settings_modules="modules/actuators_faulhaber.xml modules/air_data.xml modules/airspeed_ms45xx_i2c.xml modules/airspeed_uavcan.xml modules/approach_moving_target.xml modules/eff_scheduling_rotwing.xml modules/electrical.xml modules/follow_me.xml modules/gps.xml modules/gps_ublox.xml modules/guidance_indi_hybrid.xml modules/guidance_rotorcraft.xml modules/imu_common.xml modules/imu_heater.xml modules/ins_ekf2.xml modules/logger_sd_chibios.xml modules/nav_hybrid.xml modules/nav_rotorcraft.xml modules/preflight_checks.xml modules/rotwing_state.xml modules/stabilization_indi.xml modules/sys_id_auto_doublets.xml modules/sys_id_doublet.xml modules/target_pos.xml"
|
||||||
gui_color="red"
|
gui_color="red"
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ float guidance_indi_pitch_pref_deg = 0;
|
|||||||
|
|
||||||
/*Airspeed threshold where making a turn is "worth it"*/
|
/*Airspeed threshold where making a turn is "worth it"*/
|
||||||
#ifndef TURN_AIRSPEED_TH
|
#ifndef TURN_AIRSPEED_TH
|
||||||
#define TURN_AIRSPEED_TH 13 .0
|
#define TURN_AIRSPEED_TH 13.0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*Boolean to force the heading to a static value (only use for specific experiments)*/
|
/*Boolean to force the heading to a static value (only use for specific experiments)*/
|
||||||
@@ -297,7 +297,6 @@ struct FloatVect3 indi_vel_sp = {0.0, 0.0, 0.0};
|
|||||||
float time_of_vel_sp = 0.0;
|
float time_of_vel_sp = 0.0;
|
||||||
|
|
||||||
void guidance_indi_propagate_filters(void);
|
void guidance_indi_propagate_filters(void);
|
||||||
void guidance_indi_set_min_max_airspeed(float min_airspeed, float max_airspeed);
|
|
||||||
|
|
||||||
#if PERIODIC_TELEMETRY
|
#if PERIODIC_TELEMETRY
|
||||||
#include "modules/datalink/telemetry.h"
|
#include "modules/datalink/telemetry.h"
|
||||||
@@ -737,10 +736,12 @@ static struct FloatVect3 compute_accel_from_speed_sp(void)
|
|||||||
float_vect3_bound_in_2d(&accel_sp, accelbound);
|
float_vect3_bound_in_2d(&accel_sp, accelbound);
|
||||||
BoundAbs(accel_sp.z, 3.0);
|
BoundAbs(accel_sp.z, 3.0);
|
||||||
|
|
||||||
|
#ifdef ROTWING_FW_MIN_AIRSPEED
|
||||||
if (!rotwing_state_pusher_motor_running() && !rotwing_state_hover_motors_running()) {
|
if (!rotwing_state_pusher_motor_running() && !rotwing_state_hover_motors_running()) {
|
||||||
accel_sp.z = gih_params.stall_protect_gain * (gi_airspeed_sp - airspeed);
|
accel_sp.z = gih_params.stall_protect_gain * (gi_airspeed_sp - airspeed);
|
||||||
BoundAbs(accel_sp.z, 5.0);
|
BoundAbs(accel_sp.z, 5.0);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return accel_sp;
|
return accel_sp;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,7 +100,6 @@ extern float gi_unbounded_airspeed_sp;
|
|||||||
|
|
||||||
extern float guidance_indi_thrust_z_eff;
|
extern float guidance_indi_thrust_z_eff;
|
||||||
|
|
||||||
extern struct guidance_indi_hybrid_params gih_params;
|
|
||||||
extern float guidance_indi_specific_force_gain;
|
extern float guidance_indi_specific_force_gain;
|
||||||
extern bool take_heading_control;
|
extern bool take_heading_control;
|
||||||
extern float guidance_indi_max_bank;
|
extern float guidance_indi_max_bank;
|
||||||
|
|||||||
@@ -35,16 +35,6 @@
|
|||||||
#define UAVCAN_ACTUATORS_USE_CURRENT TRUE
|
#define UAVCAN_ACTUATORS_USE_CURRENT TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* By default run UAVCAN_RAW message at periodic frequency */
|
|
||||||
#ifndef ACTUATORS_UAVCAN_RAW_DIV
|
|
||||||
#define ACTUATORS_UAVCAN_RAW_DIV 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* By default run UAVCAN_CMD message at periodic frequency */
|
|
||||||
#ifndef ACTUATORS_UAVCAN_CMD_DIV
|
|
||||||
#define ACTUATORS_UAVCAN_CMD_DIV 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* uavcan ESC status telemetry structure */
|
/* uavcan ESC status telemetry structure */
|
||||||
struct actuators_uavcan_telem_t {
|
struct actuators_uavcan_telem_t {
|
||||||
bool set;
|
bool set;
|
||||||
|
|||||||
@@ -182,15 +182,20 @@ inline void rotwing_state_free_processor(void);
|
|||||||
#include "modules/datalink/telemetry.h"
|
#include "modules/datalink/telemetry.h"
|
||||||
static void send_rotating_wing_state(struct transport_tx *trans, struct link_device *dev)
|
static void send_rotating_wing_state(struct transport_tx *trans, struct link_device *dev)
|
||||||
{
|
{
|
||||||
uint16_t adc_dummy = 0;
|
uint16_t dummy = 0;
|
||||||
|
float nav_airspeed = stateGetAirspeed_f();;
|
||||||
|
float min_airspeed = 0;
|
||||||
|
float max_airspeed = rotwing_state_max_fw_speed;
|
||||||
|
|
||||||
pprz_msg_send_ROTATING_WING_STATE(trans, dev, AC_ID,
|
pprz_msg_send_ROTATING_WING_STATE(trans, dev, AC_ID,
|
||||||
&rotwing_state.current_state,
|
&rotwing_state.current_state,
|
||||||
&rotwing_state.desired_state,
|
&rotwing_state.desired_state,
|
||||||
|
&dummy,
|
||||||
&rotwing_state_skewing.wing_angle_deg,
|
&rotwing_state_skewing.wing_angle_deg,
|
||||||
&rotwing_state_skewing.wing_angle_deg_sp,
|
&rotwing_state_skewing.wing_angle_deg_sp,
|
||||||
&adc_dummy,
|
&nav_airspeed,
|
||||||
&rotwing_state_skewing.servo_pprz_cmd);
|
&min_airspeed,
|
||||||
|
&max_airspeed);
|
||||||
}
|
}
|
||||||
#endif // PERIODIC_TELEMETRY
|
#endif // PERIODIC_TELEMETRY
|
||||||
|
|
||||||
|
|||||||
+1
-1
Submodule sw/ext/pprzlink updated: ab37c43cac...b8c9f78d6b
@@ -77,14 +77,14 @@ class EscMessage(object):
|
|||||||
def get_temp(self):
|
def get_temp(self):
|
||||||
#if self.temperature < -200:
|
#if self.temperature < -200:
|
||||||
# return "xxx"
|
# return "xxx"
|
||||||
return str(round(self.temperature ,1)) + "C"
|
return str(round(self.temperature ,0)) + "C"
|
||||||
def get_temp_perc(self):
|
def get_temp_perc(self):
|
||||||
return self.temperature / 120.0
|
return self.temperature / 120.0
|
||||||
|
|
||||||
def get_temp_dev(self):
|
def get_temp_dev(self):
|
||||||
#if self.temperature_dev < -200:
|
#if self.temperature_dev < -200:
|
||||||
# return "xxx"
|
# return "xxx"
|
||||||
return str(round(self.temperature_dev, 1)) + "C"
|
return str(round(self.temperature_dev, 0)) + "C"
|
||||||
def get_temp_dev_perc(self):
|
def get_temp_dev_perc(self):
|
||||||
return self.temperature_dev / 120.0
|
return self.temperature_dev / 120.0
|
||||||
|
|
||||||
@@ -106,7 +106,7 @@ class EscMessage(object):
|
|||||||
|
|
||||||
class INDIMessage(object):
|
class INDIMessage(object):
|
||||||
def __init__(self, msg):
|
def __init__(self, msg):
|
||||||
self.u = np.array(msg['u'], dtype=np.float)
|
self.u = np.array(msg['u'], dtype=float)
|
||||||
|
|
||||||
def get_u(self, id):
|
def get_u(self, id):
|
||||||
return str(round(self.u[id], 0)) + " PPRZ"
|
return str(round(self.u[id], 0)) + " PPRZ"
|
||||||
@@ -123,6 +123,205 @@ class INDIMessage(object):
|
|||||||
else:
|
else:
|
||||||
return 0.5
|
return 0.5
|
||||||
|
|
||||||
|
class RWStatusMessage(object):
|
||||||
|
def __init__(self, msg):
|
||||||
|
self.state = int(msg['state'])
|
||||||
|
self.nav_state = int(msg['state'])
|
||||||
|
self.status = int(msg['status'])
|
||||||
|
self.meas_skew_angle = float(msg['meas_skew_angle'])
|
||||||
|
self.sp_skew_angle = float(msg['sp_skew_angle'])
|
||||||
|
self.nav_airspeed = float(msg['nav_airspeed'])
|
||||||
|
self.min_airspeed = float(msg['min_airspeed'])
|
||||||
|
self.max_airspeed = float(msg['max_airspeed'])
|
||||||
|
|
||||||
|
# Unpack the status bitfields
|
||||||
|
if self.status & (0x1 << 0):
|
||||||
|
self.skew_angle_valid = True
|
||||||
|
else:
|
||||||
|
self.skew_angle_valid = False
|
||||||
|
if self.status & (0x1 << 1):
|
||||||
|
self.hover_motors_enabled = True
|
||||||
|
else:
|
||||||
|
self.hover_motors_enabled = False
|
||||||
|
if self.status & (0x1 << 2):
|
||||||
|
self.hover_motors_idle = True
|
||||||
|
else:
|
||||||
|
self.hover_motors_idle = False
|
||||||
|
if self.status & (0x1 << 3):
|
||||||
|
self.hover_motors_running = True
|
||||||
|
else:
|
||||||
|
self.hover_motors_running = False
|
||||||
|
if self.status & (0x1 << 4):
|
||||||
|
self.pusher_motor_running = True
|
||||||
|
else:
|
||||||
|
self.pusher_motor_running = False
|
||||||
|
if self.status & (0x1 << 5):
|
||||||
|
self.skew_forced = True
|
||||||
|
else:
|
||||||
|
self.skew_forced = False
|
||||||
|
|
||||||
|
def get_state(self):
|
||||||
|
states = ['FORCE_HOVER', 'REQ_HOVER', 'FORCE_FW', 'REQ_FW', 'FREE']
|
||||||
|
return states[self.state]
|
||||||
|
|
||||||
|
def get_nav_state(self):
|
||||||
|
states = ['FORCE_HOVER', 'REQ_HOVER', 'FORCE_FW', 'REQ_FW', 'FREE']
|
||||||
|
return states[self.nav_state]
|
||||||
|
|
||||||
|
class AIRDATAMessage(object):
|
||||||
|
def __init__(self, msg):
|
||||||
|
self.airspeed = float(msg['airspeed'])
|
||||||
|
self.tas = float(msg['tas'])
|
||||||
|
|
||||||
|
class IMUHEATERMessage(object):
|
||||||
|
def __init__(self, msg):
|
||||||
|
self.meas_temp = msg['meas_temp']
|
||||||
|
|
||||||
|
# <message name="POWER_DEVICE" id="19">
|
||||||
|
# <field name="node_id" type="uint8"/>
|
||||||
|
# <field name="circuit" type="uint8"/>
|
||||||
|
# <field name="current" type="float"/>
|
||||||
|
# <field name="voltage" type="float"/>
|
||||||
|
# </message>
|
||||||
|
|
||||||
|
|
||||||
|
class PowerList(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.power = {}
|
||||||
|
|
||||||
|
|
||||||
|
class POWERDEVICEMessage(object):
|
||||||
|
def __init__(self, msg):
|
||||||
|
self.node_id = int(msg['node_id'])
|
||||||
|
self.circuit = int(msg['circuit'])
|
||||||
|
self.current = float(msg['current'])
|
||||||
|
self.voltage = float(msg['voltage'])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class FUELCELLMessage(object):
|
||||||
|
def __init__(self, msg):
|
||||||
|
self.pressure = msg['pressure']
|
||||||
|
self.press_reg = float(msg['press_reg'])
|
||||||
|
self.volt_bat = float(msg['volt_bat'])
|
||||||
|
self.power_out = float(msg['power_out'])
|
||||||
|
self.power_cell = float(msg['power_cell'])
|
||||||
|
self.power_batt = float(msg['power_batt'])
|
||||||
|
self.state = int(msg['state'])
|
||||||
|
self.error = int(msg['error'])
|
||||||
|
self.suberror = int(msg['suberror'])
|
||||||
|
states = ['FCPM off', 'Starting', 'Running', 'Stopping', 'Go to sleep']
|
||||||
|
self.state_str = '?'
|
||||||
|
if self.state < len(states):
|
||||||
|
self.state_str = states[self.state]
|
||||||
|
if self.error == 0:
|
||||||
|
self.error_str = 'No error'
|
||||||
|
elif self.error == 1:
|
||||||
|
self.error_str = 'Minor internal'
|
||||||
|
elif self.error == 4:
|
||||||
|
self.error_str = 'Reconditioning needed'
|
||||||
|
elif self.error == 6:
|
||||||
|
self.error_str = 'Auto recondition active'
|
||||||
|
elif self.error == 7:
|
||||||
|
self.error_str = 'Reconditioning active'
|
||||||
|
elif self.error == 8:
|
||||||
|
self.error_str = 'Recovery mode active'
|
||||||
|
elif self.error == 12:
|
||||||
|
self.error_str = 'Tank pressure low'
|
||||||
|
elif self.error == 14:
|
||||||
|
self.error_str = 'Battery voltage low'
|
||||||
|
elif self.error == 20:
|
||||||
|
self.error_str = 'Reduced power'
|
||||||
|
elif self.error == 25:
|
||||||
|
self.error_str = 'SPM lost'
|
||||||
|
elif self.error == 30:
|
||||||
|
self.error_str = 'Tank empty'
|
||||||
|
elif self.error == 32:
|
||||||
|
self.error_str = 'Start denied'
|
||||||
|
elif self.error == 34:
|
||||||
|
self.error_str = 'FC off - recovery required'
|
||||||
|
elif self.error == 36:
|
||||||
|
self.error_str = 'FC off - system error'
|
||||||
|
elif self.error == 40:
|
||||||
|
self.error_str = 'Battery critical'
|
||||||
|
else:
|
||||||
|
self.error_str = 'Unknown error'
|
||||||
|
|
||||||
|
if self.suberror == 0:
|
||||||
|
self.suberror_str = 'No context'
|
||||||
|
elif self.suberror == 1:
|
||||||
|
self.suberror_str = 'SPM1'
|
||||||
|
elif self.suberror == 2:
|
||||||
|
self.suberror_str = 'SPM2'
|
||||||
|
elif self.suberror == 3:
|
||||||
|
self.suberror_str = 'SPM1 AND SPM2'
|
||||||
|
elif self.suberror == 4:
|
||||||
|
self.suberror_str = 'ALL SPM LOST'
|
||||||
|
elif self.suberror == 5:
|
||||||
|
self.suberror_str = 'Inlet pressure low'
|
||||||
|
elif self.suberror == 6:
|
||||||
|
self.suberror_str = 'Inlet pressure high'
|
||||||
|
elif self.suberror == 7:
|
||||||
|
self.suberror_str = 'Tank pressure low'
|
||||||
|
elif self.suberror == 8:
|
||||||
|
self.suberror_str = 'Tank pressure high'
|
||||||
|
elif self.suberror == 9:
|
||||||
|
self.suberror_str = 'Stack voltage low'
|
||||||
|
elif self.suberror == 10:
|
||||||
|
self.suberror_str = 'Internal tests (INT ERR)'
|
||||||
|
elif self.suberror == 11:
|
||||||
|
self.suberror_str = 'Stack temperature high (STK HT)'
|
||||||
|
elif self.suberror == 12:
|
||||||
|
self.suberror_str = 'Stack temperature low (STK LT)'
|
||||||
|
elif self.suberror == 13:
|
||||||
|
self.suberror_str = 'Reconditioning active'
|
||||||
|
elif self.suberror == 14:
|
||||||
|
self.suberror_str = 'Reconditioning complete'
|
||||||
|
elif self.suberror == 15:
|
||||||
|
self.suberror_str = 'Thermal management'
|
||||||
|
elif self.suberror == 16:
|
||||||
|
self.suberror_str = 'Start faults'
|
||||||
|
elif self.suberror == 17:
|
||||||
|
self.suberror_str = 'LPI missing'
|
||||||
|
elif self.suberror == 254:
|
||||||
|
self.suberror_str = 'Complete flight - contact support'
|
||||||
|
elif self.suberror == 255:
|
||||||
|
self.suberror_str = 'Stop using unit - contact support'
|
||||||
|
else:
|
||||||
|
self.suberror_str = 'Unknown suberror'
|
||||||
|
|
||||||
|
class PowerList(object):
|
||||||
|
def __init__(self):
|
||||||
|
self.power = []
|
||||||
|
|
||||||
|
def fill_from_power_msg(self, power):
|
||||||
|
added = False
|
||||||
|
for i in range(len(self.power)):
|
||||||
|
if self.power[i].node_id == power.node_id and self.power[i].circuit == power.circuit:
|
||||||
|
self.power[i] = power
|
||||||
|
added = True
|
||||||
|
break
|
||||||
|
if not added:
|
||||||
|
self.power.append(power)
|
||||||
|
|
||||||
|
def get_frontbat(self):
|
||||||
|
for i in range(len(self.power)):
|
||||||
|
if self.power[i].node_id == 14 and self.power[i].circuit == 0:
|
||||||
|
return self.power[i]
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_backbat(self):
|
||||||
|
for i in range(len(self.power)):
|
||||||
|
if self.power[i].node_id == 6 and self.power[i].circuit == 0:
|
||||||
|
return self.power[i]
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_backmot(self):
|
||||||
|
for i in range(len(self.power)):
|
||||||
|
if self.power[i].node_id == 6 and self.power[i].circuit == 1:
|
||||||
|
return self.power[i]
|
||||||
|
return None
|
||||||
|
|
||||||
class MotorList(object):
|
class MotorList(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.mot = []
|
self.mot = []
|
||||||
@@ -154,6 +353,27 @@ class RotWingFrame(wx.Frame):
|
|||||||
if msg.name == "STAB_ATTITUDE":
|
if msg.name == "STAB_ATTITUDE":
|
||||||
self.indi = INDIMessage(msg)
|
self.indi = INDIMessage(msg)
|
||||||
wx.CallAfter(self.update)
|
wx.CallAfter(self.update)
|
||||||
|
|
||||||
|
if msg.name =="ROTATING_WING_STATE":
|
||||||
|
self.rw_status = RWStatusMessage(msg)
|
||||||
|
wx.CallAfter(self.update)
|
||||||
|
|
||||||
|
if msg.name == "AIR_DATA":
|
||||||
|
self.air_data = AIRDATAMessage(msg)
|
||||||
|
wx.CallAfter(self.update)
|
||||||
|
|
||||||
|
if msg.name == "IMU_HEATER":
|
||||||
|
self.imu_heater = IMUHEATERMessage(msg)
|
||||||
|
wx.CallAfter(self.update)
|
||||||
|
|
||||||
|
if msg.name == "FUELCELL":
|
||||||
|
self.fuelcell = FUELCELLMessage(msg)
|
||||||
|
wx.CallAfter(self.update)
|
||||||
|
|
||||||
|
if msg.name == "POWER_DEVICE":
|
||||||
|
self.powermessage = POWERDEVICEMessage(msg)
|
||||||
|
self.powers.fill_from_power_msg(self.powermessage)
|
||||||
|
wx.CallAfter(self.update)
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
self.Refresh()
|
self.Refresh()
|
||||||
@@ -228,8 +448,107 @@ class RotWingFrame(wx.Frame):
|
|||||||
# Back Wing
|
# Back Wing
|
||||||
dc.DrawRectangle(int(0.25*w), int(0.65*h),int(0.5*w), int(0.1*h))
|
dc.DrawRectangle(int(0.25*w), int(0.65*h),int(0.5*w), int(0.1*h))
|
||||||
|
|
||||||
# Motors
|
# Draw rotwing status
|
||||||
self.stat = int(0.10*w)
|
self.stat = int(0.10*w)
|
||||||
|
if hasattr(self, 'rw_status'):
|
||||||
|
line = int(20.0 / 800.0 * h)
|
||||||
|
dc.SetBrush(wx.Brush(wx.Colour(200,200,100)))
|
||||||
|
dc.DrawRectangle(int(5), int(5),int(0.29*w), int(0.20*h))
|
||||||
|
dc.DrawText("State: " + self.rw_status.get_state() + " [NAV: " + self.rw_status.get_nav_state() +"]", 10, int(0.5*line))
|
||||||
|
if self.rw_status.skew_angle_valid:
|
||||||
|
if abs(self.rw_status.meas_skew_angle - self.rw_status.sp_skew_angle) < 10:
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
else:
|
||||||
|
dc.SetTextForeground(wx.Colour(139, 64, 0))
|
||||||
|
dc.DrawText("Rotation: " + str(round(self.rw_status.meas_skew_angle, 1)) + " (SP: " + str(round(self.rw_status.sp_skew_angle, 1)) + ")", 10, int(1.5*line))
|
||||||
|
else:
|
||||||
|
dc.SetTextForeground(wx.Colour(255, 0, 0))
|
||||||
|
dc.DrawText("Rotation: " + str(round(self.rw_status.meas_skew_angle, 1)) + " (SP: " + str(round(self.rw_status.sp_skew_angle, 1)) + ")", 10, int(1.5*line))
|
||||||
|
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
dc.DrawText("Hover motors: ", 10, int(2.5*line))
|
||||||
|
lbw = dc.GetTextExtent("Hover Motors: ").width
|
||||||
|
if self.rw_status.hover_motors_running:
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
dc.DrawText("running ", 10 + lbw, int(2.5*line))
|
||||||
|
lbw += dc.GetTextExtent("running ").width
|
||||||
|
else:
|
||||||
|
dc.SetTextForeground(wx.Colour(255, 0, 0))
|
||||||
|
dc.DrawText("stopped ", 10 + lbw, int(2.5*line))
|
||||||
|
lbw += dc.GetTextExtent("stopped ").width
|
||||||
|
|
||||||
|
if self.rw_status.hover_motors_idle:
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
dc.DrawText("idle ", 10 + lbw, int(2.5*line))
|
||||||
|
lbw += dc.GetTextExtent("idle ").width
|
||||||
|
|
||||||
|
if self.rw_status.hover_motors_enabled:
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
dc.DrawText("(Enabled)", 10 + lbw, int(2.5*line))
|
||||||
|
else:
|
||||||
|
dc.SetTextForeground(wx.Colour(255, 0, 0))
|
||||||
|
dc.DrawText("(Disabled)", 10 + lbw, int(2.5*line))
|
||||||
|
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
dc.DrawText("Pusher motor: ", 10, int(3.5*line))
|
||||||
|
lbw = dc.GetTextExtent("Pusher motor: ").width
|
||||||
|
if self.rw_status.pusher_motor_running:
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
dc.DrawText("running", 10 + lbw, int(3.5*line))
|
||||||
|
else:
|
||||||
|
dc.SetTextForeground(wx.Colour(255, 0, 0))
|
||||||
|
dc.DrawText("stopped", 10 + lbw, int(3.5*line))
|
||||||
|
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
dc.DrawText("Nav airspeed: " + str(round(self.rw_status.nav_airspeed,1 )) + " [min: " + str(round(self.rw_status.min_airspeed,1 )) + ", max:" + str(round(self.rw_status.max_airspeed,1 )) + "]", 10, int(4.5*line))
|
||||||
|
if hasattr(self, 'air_data'):
|
||||||
|
dc.DrawText("Meas airspeed: " + str(round(self.air_data.airspeed,1 )) + " (TAS: " + str(round(self.air_data.tas,1 )) + ")", 10, int(5.5*line))
|
||||||
|
#self.StatusBox(dc, 5, 5, 0, 0, self.rw_status.get_state(), 1, 1)
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
dc.DrawText("Force Skew: ", 10, int(6.5*line))
|
||||||
|
lbw = dc.GetTextExtent("Force Skew: ").width
|
||||||
|
if self.rw_status.skew_forced:
|
||||||
|
dc.SetTextForeground(wx.Colour(255, 0, 0))
|
||||||
|
dc.DrawText("(Enabled)", 10 + lbw, int(6.5*line))
|
||||||
|
else:
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
dc.DrawText("(Disabled)", 10 + lbw, int(6.5*line))
|
||||||
|
|
||||||
|
if hasattr(self, 'imu_heater'):
|
||||||
|
imu_temp = float(self.imu_heater.meas_temp)
|
||||||
|
if imu_temp < 65.0:
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
dc.DrawText("Meas IMU temp: " + str(round(imu_temp, 0)), 10, int(7.5*line))
|
||||||
|
elif imu_temp < 85.0:
|
||||||
|
dc.SetTextForeground(wx.Colour(139, 64, 0))
|
||||||
|
dc.DrawText("Meas IMU temp: " + str(round(imu_temp, 0)), 10, int(7.5*line))
|
||||||
|
else:
|
||||||
|
dc.SetTextForeground(wx.Colour(255, 0, 0))
|
||||||
|
dc.DrawText("Meas IMU temp: " + str(round(imu_temp, 0)), 10, int(7.5*line))
|
||||||
|
|
||||||
|
if self.powers.get_backbat() != None:
|
||||||
|
dc.DrawText("Back Bat: " + str(round(self.powers.get_backbat().current*self.powers.get_backbat().voltage, 1)) + "W (" + str(round(self.powers.get_backbat().voltage, 1)) + "V, " + str(round(self.powers.get_backbat().current, 1)) + "A)", 10, int(8.5*line))
|
||||||
|
if self.powers.get_frontbat() != None:
|
||||||
|
dc.DrawText("Front Bat: " + str(round(self.powers.get_frontbat().current*self.powers.get_frontbat().voltage, 1)) + "W (" + str(round(self.powers.get_frontbat().voltage, 1)) + "V, " + str(round(self.powers.get_frontbat().current, 1)) + "A)", 10, int(9.5*line))
|
||||||
|
if self.powers.get_backmot() != None:
|
||||||
|
dc.DrawText("Back Mot: " + str(round(self.powers.get_backmot().current*self.powers.get_backmot().voltage, 1)) + "W (" + str(round(self.powers.get_backmot().voltage, 1)) + "V, " + str(round(self.powers.get_backmot().current, 1)) + "A)", 10, int(10.5*line))
|
||||||
|
|
||||||
|
if hasattr(self, 'fuelcell'):
|
||||||
|
dc.SetBrush(wx.Brush(wx.Colour(200,200,200)))
|
||||||
|
line = int(20.0 / 800.0 * h)
|
||||||
|
dc.SetTextForeground(wx.Colour(0, 0, 0))
|
||||||
|
dc.DrawRoundedRectangle(int(0.7*w), int(5),int(0.29*w), int(0.18*h), int(0.05*h))
|
||||||
|
dc.DrawText("FuelCell state: ["+str(self.fuelcell.state)+"] " + self.fuelcell.state_str, int(0.75*w+5), int(0.5*line))
|
||||||
|
dc.DrawText("Cylinder press: " + str(self.fuelcell.pressure) + "% Reg="+str(self.fuelcell.press_reg)+"Bar", int(0.75*w+5), int(1.5*line))
|
||||||
|
dc.DrawText("Output: " + str(self.fuelcell.power_out) + " Watt", int(0.75*w+5), int(2.5*line))
|
||||||
|
dc.DrawText("SPM: " + str(self.fuelcell.power_cell) + " Watt, p=" + str(round(float(self.fuelcell.pressure)*3.630,1)) + " Bar", int(0.75*w+5), int(3.5*line))
|
||||||
|
dc.DrawText("Battery: " + str(self.fuelcell.power_batt) + " Watt, " + str(self.fuelcell.volt_bat) + " Volt", int(0.75*w+5), int(4.5*line))
|
||||||
|
dc.DrawText("Error: ["+str(self.fuelcell.error)+"] " + self.fuelcell.error_str, int(0.75*w+5), int(5.5*line))
|
||||||
|
dc.DrawText("Sub-error: ["+str(self.fuelcell.suberror)+"] " + self.fuelcell.suberror_str, int(0.75*w+5), int(6.5*line))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Motors
|
||||||
w1 = 0.03
|
w1 = 0.03
|
||||||
w2 = 0.18
|
w2 = 0.18
|
||||||
w3 = 0.31
|
w3 = 0.31
|
||||||
@@ -238,10 +557,10 @@ class RotWingFrame(wx.Frame):
|
|||||||
mw = 0.1
|
mw = 0.1
|
||||||
mh = 0.2
|
mh = 0.2
|
||||||
|
|
||||||
mm = [(0.5-0.5*mw-0.05,w1), (0.5+dw-0.05+0.1,w2), (0.5-0.5*mw-0.05,w3), (0.5-dw-mw-0.05-0.1,w2), # hover CAN1: front right back left
|
mm = [(0.5-0.5*mw-0.05,w1), (0.5+dw+0.05+0.1,w2), (0.5-0.5*mw-0.05,w3), (0.5-dw-mw+0.05-0.1,w2), # hover CAN1: front right back left
|
||||||
(0.5-0.5*mw-0.05,w4), # pusher CAN1
|
(0.5-0.5*mw-0.05,w4), # pusher CAN1
|
||||||
(0.5-dw-mw-0.05,w4+0.05), (0.5+dw-0.05,w4+0.05), # tail CAN1
|
(0.5-dw-mw-0.05,w4+0.05), (0.5+dw-0.05,w4+0.05), # tail CAN1
|
||||||
(0.5-0.5*mw+0.05,w1), (0.5+dw+0.05+0.1,w2), (0.5-0.5*mw+0.05,w3), (0.5-dw-mw+0.05-0.1,w2), # hover CAN2
|
(0.5-0.5*mw+0.05,w1), (0.5+dw-0.05+0.1,w2), (0.5-0.5*mw+0.05,w3), (0.5-dw-mw-0.05-0.1,w2), # hover CAN2
|
||||||
(0.5-0.5*mw+0.05,w4), # pusher CAN2
|
(0.5-0.5*mw+0.05,w4), # pusher CAN2
|
||||||
(0.5-dw-mw+0.05,w4+0.05), (0.5+dw+0.05,w4+0.05), # Tail CAN2
|
(0.5-dw-mw+0.05,w4+0.05), (0.5+dw+0.05,w4+0.05), # Tail CAN2
|
||||||
(0.0, 0.75), (0.1, 0.75), (0.2, 0.75), (0.3, 0.75), (0.4, 0.75), # extra
|
(0.0, 0.75), (0.1, 0.75), (0.2, 0.75), (0.3, 0.75), (0.4, 0.75), # extra
|
||||||
@@ -318,6 +637,7 @@ class RotWingFrame(wx.Frame):
|
|||||||
#self.SetIcon(ico)
|
#self.SetIcon(ico)
|
||||||
|
|
||||||
self.motors = MotorList()
|
self.motors = MotorList()
|
||||||
|
self.powers = PowerList()
|
||||||
|
|
||||||
self.interface = IvyMessagesInterface("rotwingframe")
|
self.interface = IvyMessagesInterface("rotwingframe")
|
||||||
self.interface.subscribe(self.message_recv)
|
self.interface.subscribe(self.message_recv)
|
||||||
|
|||||||
Reference in New Issue
Block a user