[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [5962] Add fmi ac.
From: |
Martin Mueller |
Subject: |
[paparazzi-commits] [5962] Add fmi ac. |
Date: |
Mon, 27 Sep 2010 21:23:53 +0000 |
Revision: 5962
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=5962
Author: mmm
Date: 2010-09-27 21:23:52 +0000 (Mon, 27 Sep 2010)
Log Message:
-----------
Add fmi ac.
Modified Paths:
--------------
paparazzi3/branches/campaign2010/conf/airframes/funjetfmi1.xml
paparazzi3/branches/campaign2010/conf/airframes/logger_sd.xml
paparazzi3/branches/campaign2010/conf/flight_plans/grosslobke_demo.xml
paparazzi3/branches/campaign2010/conf/messages.xml
paparazzi3/branches/campaign2010/conf/settings/tuning.xml
paparazzi3/branches/campaign2010/conf/telemetry/default.xml
paparazzi3/branches/campaign2010/sw/airborne/ap_downlink.h
paparazzi3/branches/campaign2010/sw/airborne/baro_scp_i2c.c
paparazzi3/branches/campaign2010/sw/airborne/baro_scp_i2c.h
paparazzi3/branches/campaign2010/sw/airborne/main_ap.c
paparazzi3/branches/campaign2010/sw/ground_segment/tmtc/link.ml
paparazzi3/branches/campaign2010/sw/in_progress/ir_usb_i2c/i2c_usb.c
paparazzi3/branches/campaign2010/sw/logalizer/ctrlstick.c
Added Paths:
-----------
paparazzi3/branches/campaign2010/conf/airframes/funjetfmi2.xml
paparazzi3/branches/campaign2010/conf/airframes/funjetfmi3.xml
paparazzi3/branches/campaign2010/conf/radios/mc24r.xml
paparazzi3/branches/campaign2010/conf/radios/t6ex.xml
paparazzi3/branches/campaign2010/sw/airborne/airspeed_ets_o.c
paparazzi3/branches/campaign2010/sw/airborne/airspeed_ets_o.h
paparazzi3/branches/campaign2010/sw/airborne/ir_mlx.c
paparazzi3/branches/campaign2010/sw/airborne/ir_mlx.h
Modified: paparazzi3/branches/campaign2010/conf/airframes/funjetfmi1.xml
===================================================================
--- paparazzi3/branches/campaign2010/conf/airframes/funjetfmi1.xml
2010-09-27 20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/conf/airframes/funjetfmi1.xml
2010-09-27 21:23:52 UTC (rev 5962)
@@ -5,11 +5,11 @@
PerkinElmer TPS334 IR Sensors
Tilted infrared sensor
(http://paparazzi.enac.fr/wiki/index.php/Image:Tiny_v2_1_Funjet.jpg)
XBee modem
- Payload: Sensirion humidity/temp, VTI pressure/temp
- K66, LEA 4P
+ Payload: Sensirion humidity/temp, VTI pressure/temp, ETS airspeed
+ LEA 4P
-->
-<airframe name="Funjet FMI 1 K66">
+<airframe name="Funjet FMI 1">
<!-- commands section -->
<servos>
@@ -180,6 +180,26 @@
<define name="YAW_RESPONSE_FACTOR" value="0.5"/>
</section>
+ <section name="MICROMAG">
+
+ <define name="MM_SS_PIN" value="20"/>
+ <define name="MM_SS_IODIR" value="IO0DIR"/>
+ <define name="MM_SS_IOSET" value="IO0SET"/>
+ <define name="MM_SS_IOCLR" value="IO0CLR"/>
+
+ <define name="MM_RESET_PIN" value="29"/>
+ <define name="MM_RESET_IODIR" value="IO0DIR"/>
+ <define name="MM_RESET_IOSET" value="IO0SET"/>
+ <define name="MM_RESET_IOCLR" value="IO0CLR"/>
+
+ <define name="MM_DRDY_PINSEL" value="PINSEL1"/>
+ <define name="MM_DRDY_PINSEL_BIT" value="0"/>
+ <define name="MM_DRDY_PINSEL_VAL" value="1"/>
+ <define name="MM_DRDY_EINT" value="0"/>
+ <define name="MM_DRDY_VIC_IT" value="VIC_EINT0"/>
+
+ </section>
+
<makefile>
CONFIG = \"tiny_2_1.h\"
@@ -226,22 +246,31 @@
ap.srcs += nav_survey_rectangle.c
ap.srcs += humid_sht.c
-ap.CFLAGS += -DUSE_HUMID_SHT -DDAT_PIN=3 -DSCK_PIN=2
+ap.CFLAGS += -DUSE_HUMID_SHT -DDAT_PIN=30 -DSCK_PIN=4
-ap.srcs += baro_scp.c
+ap.CFLAGS += -DUSE_I2C0
+ap.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
+
+ap.CFLAGS += -DUSE_AIRSPEED_ETS
+ap.srcs += airspeed_ets_o.c
+
+ap.CFLAGS += -DUSE_IR_MLX
+ap.srcs += ir_mlx.c
+
ap.CFLAGS += -DUSE_BARO_SCP
+ap.srcs += baro_scp_i2c.c
-ap.srcs += joystick.c
-ap.CFLAGS += -DUSE_JOYSTICK
+#ap.CFLAGS += -DUSE_MAG_HMC
+#ap.srcs += mag_hmc5843.c
+ap.CFLAGS += -DMICROMAG_DRDY_VIC_SLOT=12 -DSSP_VIC_SLOT=11 -DUSE_MICROMAG_FW
+ap.srcs += micromag_fw.c $(SRC_ARCH)/micromag_fw_hw.c
+
# Config for SITL simulation
include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
sim.CFLAGS += -DBOARD_CONFIG=\"tiny.h\" -DAGR_CLIMB -DLOITER_TRIM -DALT_KALMAN
sim.srcs += nav_line.c nav_survey_rectangle.c
-sim.srcs += joystick.c
-sim.CFLAGS += -DUSE_JOYSTICK
-
</makefile>
</airframe>
Added: paparazzi3/branches/campaign2010/conf/airframes/funjetfmi2.xml
===================================================================
--- paparazzi3/branches/campaign2010/conf/airframes/funjetfmi2.xml
(rev 0)
+++ paparazzi3/branches/campaign2010/conf/airframes/funjetfmi2.xml
2010-09-27 21:23:52 UTC (rev 5962)
@@ -0,0 +1,272 @@
+<!DOCTYPE airframe SYSTEM "airframe.dtd">
+
+<!-- Funjet Multiplex (http://www.multiplex-rc.de/), Jeti ECO 25
+ Tiny 2.11 board (http://paparazzi.enac.fr/wiki/index.php/Tiny_v2)
+ Tilted infrared sensor
(http://paparazzi.enac.fr/wiki/index.php/Image:Tiny_v2_1_Funjet.jpg)
+ XBee modem
+ Payload: Sensirion humidity/temp, VTI pressure/temp, ETS airspeed
+ LEA 5H
+-->
+
+<airframe name="Funjet FMI 2">
+
+<!-- commands section -->
+ <servos>
+ <servo name="MOTOR" no="0" min="1000" neutral="1000" max="2000"/>
+ <servo name="AILEVON_LEFT" no="2" min="1900" neutral="1500" max="1100"/>
+ <servo name="AILEVON_RIGHT" no="6" min="1100" neutral="1500" max="1900"/>
+ </servos>
+
+ <commands>
+ <axis name="THROTTLE" failsafe_value="0"/>
+ <axis name="ROLL" failsafe_value="0"/>
+ <axis name="PITCH" failsafe_value="0"/>
+ </commands>
+
+ <rc_commands>
+ <set command="THROTTLE" value="@THROTTLE"/>
+ <set command="ROLL" value="@ROLL"/>
+ <set command="PITCH" value="@PITCH"/>
+ </rc_commands>
+
+ <section name="MIXER">
+ <define name="AILEVON_AILERON_RATE" value="0.45"/>
+ <define name="AILEVON_ELEVATOR_RATE" value="0.8"/>
+ </section>
+
+ <command_laws>
+ <let var="aileron" value="@ROLL * AILEVON_AILERON_RATE"/>
+ <let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
+ <set servo="MOTOR" value="@THROTTLE"/>
+ <set servo="AILEVON_LEFT" value="$elevator + $aileron"/>
+ <set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
+ </command_laws>
+
+ <section name="AUTO1" prefix="AUTO1_">
+ <define name="MAX_ROLL" value="0.85"/>
+ <define name="MAX_PITCH" value="0.6"/>
+ </section>
+
+ <section name="adc" prefix="ADC_CHANNEL_">
+ <define name="IR1" value="ADC_1"/>
+ <define name="IR2" value="ADC_2"/>
+ <define name="IR_TOP" value="ADC_0"/>
+ <define name="IR_NB_SAMPLES" value="16"/>
+ </section>
+
+ <section name="INFRARED" prefix="IR_">
+ <define name="ADC_IR1_NEUTRAL" value="512"/>
+ <define name="ADC_IR2_NEUTRAL" value="512"/>
+ <define name="ADC_TOP_NEUTRAL" value="512"/>
+
+ <define name="CORRECTION_UP" value="1."/>
+ <define name="CORRECTION_DOWN" value="1."/>
+ <define name="CORRECTION_LEFT" value="1."/>
+ <define name="CORRECTION_RIGHT" value="1."/>
+
+ <define name="LATERAL_CORRECTION" value="1"/>
+ <define name="LONGITUDINAL_CORRECTION" value="1"/>
+ <define name="VERTICAL_CORRECTION" value="1.5"/>
+
+ <define name="HORIZ_SENSOR_TILTED" value="1"/>
+ <define name="IR1_SIGN" value="-1"/>
+ <define name="IR2_SIGN" value="-1"/>
+ <define name="TOP_SIGN" value="1"/>
+
+ <define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="deg"/>
+ <define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="deg"/>
+ </section>
+
+ <section name="BAT">
+ <define name="MILLIAMP_AT_FULL_THROTTLE" value="10000."/>
+ <define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
+ <!-- 0.0247311828 -->
+ <!-- 0.02432905 -->
+ <define name="VoltageOfAdc(adc)" value="(0.02454*adc)"/>
+ </section>
+
+ <section name="MISC">
+ <define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
+ <define name="CARROT" value="5." unit="s"/>
+ <define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
+ <define name="CONTROL_RATE" value="60" unit="Hz"/>
+<!-- <define name="XBEE_INIT" value="\"ATPL2\rATRN1\rATTT80\r\""/> -->
+<!-- <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
+ <define name="ALT_KALMAN_ENABLED" value="FALSE"/>
+
+ <define name="TRIGGER_DELAY" value="1."/>
+ <define name="DEFAULT_CIRCLE_RADIUS" value="120."/>
+ <define name="MIN_CIRCLE_RADIUS" value="50."/>
+ </section>
+
+ <section name="VERTICAL CONTROL" prefix="V_CTL_">
+
+ <define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
+ <!-- outer loop proportional gain -->
+ <define name="ALTITUDE_PGAIN" value="-0.06"/> <!-- -0.024 -->
+ <!-- outer loop saturation -->
+ <define name="ALTITUDE_MAX_CLIMB" value="2."/>
+
+ <!-- auto throttle inner loop -->
+ <define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.45"/>
+ <define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.35"/>
+ <define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.85"/>
+ <define name="AUTO_THROTTLE_LOITER_TRIM" value="1000"/>
+ <define name="AUTO_THROTTLE_DASH_TRIM" value="-1200"/>
+ <define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.2"
unit="%/(m/s)"/>
+ <define name="AUTO_THROTTLE_PGAIN" value="-0.023"/> <!-- -0.012 -->
+ <define name="AUTO_THROTTLE_IGAIN" value="0.01"/>
+ <define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>
+
+ <!-- auto pitch inner loop -->
+ <define name="AUTO_PITCH_PGAIN" value="-0.06"/> <!-- -0.03 -->
+ <define name="AUTO_PITCH_IGAIN" value="0.0"/>
+ <define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
+ <define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
+
+ <define name="THROTTLE_SLEW" value="0.1"/>
+
+ </section>
+
+ <section name="HORIZONTAL CONTROL" prefix="H_CTL_">
+ <define name="COURSE_PGAIN" value="-0.9"/>
+ <define name="ROLL_MAX_SETPOINT" value="0.70" unit="radians"/> <!-- 0.5 -->
+ <define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
+ <define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
+
+ <define name="ROLL_PGAIN" value="6600."/>
+ <define name="AILERON_OF_THROTTLE" value="0.0"/>
+ <define name="PITCH_PGAIN" value="-5500."/>
+ <define name="PITCH_DGAIN" value="0.4"/>
+
+ <define name="ELEVATOR_OF_ROLL" value="2400"/>
+
+ <!--define name="ROLL_ATTITUDE_GAIN" value="-7500"/>
+ <define name="ROLL_RATE_GAIN" value="-1500"/-->
+
+ </section>
+
+ <section name="NAV">
+ <define name="NAV_PITCH" value="0."/>
+ <define name="NAV_GLIDE_PITCH_TRIM" value="0"/>
+ </section>
+
+ <section name="AGGRESSIVE" prefix="AGR_">
+ <define name="BLEND_START" value="50"/><!-- Altitude Error to Initiate
Aggressive Climb CANNOT BE ZERO!!-->
+ <define name="BLEND_END" value="15"/><!-- Altitude Error to Blend
Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
+ <define name="CLIMB_THROTTLE" value="0.9"/><!-- Gaz for Aggressive Climb
-->
+ <define name="CLIMB_PITCH" value="0.35"/><!-- Pitch for Aggressive Climb
-->
+ <define name="DESCENT_THROTTLE" value="0.05"/><!-- Gaz for Aggressive
Decent -->
+ <define name="DESCENT_PITCH" value="-0.35"/><!-- Pitch for Aggressive
Decent -->
+ <define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for
Altitude Error Equal to Start Altitude -->
+ <define name="DESCENT_NAV_RATIO" value="1.0"/>
+ </section>
+
+ <section name="FAILSAFE" prefix="FAILSAFE_">
+ <define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
+ <define name="DEFAULT_THROTTLE" value="0.3" unit="%"/>
+ <define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
+ <define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
+ <define name="HOME_RADIUS" value="100" unit="m"/>
+</section>
+
+ <section name="DATALINK" prefix="DATALINK_">
+ <define name="DEVICE_TYPE" value="XBEE"/>
+ <define name="DEVICE_ADDRESS" value="...."/>
+ </section>
+
+ <section name="SIMU">
+ <define name="YAW_RESPONSE_FACTOR" value="0.5"/>
+ </section>
+
+ <section name="MICROMAG">
+
+ <define name="MM_SS_PIN" value="20"/>
+ <define name="MM_SS_IODIR" value="IO0DIR"/>
+ <define name="MM_SS_IOSET" value="IO0SET"/>
+ <define name="MM_SS_IOCLR" value="IO0CLR"/>
+
+ <define name="MM_RESET_PIN" value="29"/>
+ <define name="MM_RESET_IODIR" value="IO0DIR"/>
+ <define name="MM_RESET_IOSET" value="IO0SET"/>
+ <define name="MM_RESET_IOCLR" value="IO0CLR"/>
+
+ <define name="MM_DRDY_PINSEL" value="PINSEL1"/>
+ <define name="MM_DRDY_PINSEL_BIT" value="0"/>
+ <define name="MM_DRDY_PINSEL_VAL" value="1"/>
+ <define name="MM_DRDY_EINT" value="0"/>
+ <define name="MM_DRDY_VIC_IT" value="VIC_EINT0"/>
+
+ </section>
+
+ <makefile>
+CONFIG = \"tiny_2_1.h\"
+
+include $(PAPARAZZI_SRC)/conf/autopilot/tiny.makefile
+
+FLASH_MODE=IAP
+
+ap.CFLAGS += -DFBW -DAP -DBOARD_CONFIG=$(CONFIG) -DLED -DTIME_LED=1
+ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c main_fbw.c
main_ap.c main.c
+
+ap.srcs += commands.c
+
+ap.CFLAGS += -DACTUATORS=\"servos_4017_hw.h\" -DSERVOS_4017
+ap.srcs += $(SRC_ARCH)/servos_4017_hw.c actuators.c
+
+ap.CFLAGS += -DRADIO_CONTROL
+ap.srcs += radio_control.c $(SRC_ARCH)/ppm_hw.c
+
+ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=XBeeTransport
-DXBEE_UART=Uart1 -DDATALINK=XBEE -DUART1_BAUD=B57600
+ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c xbee.c
+
+#TRANSPARENT
+#ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=PprzTransport
-DDOWNLINK_FBW_DEVICE=Uart1 -DDOWNLINK_AP_DEVICE=Uart1 -DPPRZ_UART=Uart1
-DDATALINK=PPRZ -DUART1_BAUD=B9600
+#ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c pprz_transport.c
+
+
+ap.CFLAGS += -DINTER_MCU
+ap.srcs += inter_mcu.c
+
+ap.CFLAGS += -DADC -DUSE_ADC_0 -DUSE_ADC_1 -DUSE_ADC_2
+ap.srcs += $(SRC_ARCH)/adc_hw.c
+
+ap.CFLAGS += -DGPS -DUBX -DUSE_UART0 -DGPS_LINK=Uart0 -DUART0_BAUD=B38400
-DGPS_USE_LATLONG
+# -DGPS_LED=2
+ap.srcs += gps_ubx.c gps.c latlong.c
+
+ap.CFLAGS += -DINFRARED -DALT_KALMAN -DWIND_INFO -DWIND_INFO_RET
+ap.srcs += infrared.c estimator.c
+
+ap.CFLAGS += -DNAV -DAGR_CLIMB -DLOITER_TRIM
+ap.srcs += nav.c fw_h_ctl.c fw_v_ctl.c
+
+ap.srcs += nav_line.c
+ap.srcs += nav_survey_rectangle.c
+
+ap.srcs += humid_sht.c
+ap.CFLAGS += -DUSE_HUMID_SHT -DDAT_PIN=30 -DSCK_PIN=4
+
+ap.CFLAGS += -DUSE_I2C0
+ap.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
+
+ap.CFLAGS += -DUSE_AIRSPEED_ETS
+ap.srcs += airspeed_ets_o.c
+
+ap.CFLAGS += -DUSE_IR_MLX
+ap.srcs += ir_mlx.c
+
+ap.CFLAGS += -DUSE_BARO_SCP
+ap.srcs += baro_scp_i2c.c
+
+ap.CFLAGS += -DMICROMAG_DRDY_VIC_SLOT=12 -DSSP_VIC_SLOT=11 -DUSE_MICROMAG_FW
+ap.srcs += micromag_fw.c $(SRC_ARCH)/micromag_fw_hw.c
+
+# Config for SITL simulation
+include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
+sim.CFLAGS += -DBOARD_CONFIG=\"tiny.h\" -DAGR_CLIMB -DLOITER_TRIM -DALT_KALMAN
+sim.srcs += nav_line.c nav_survey_rectangle.c
+
+
+ </makefile>
+</airframe>
Added: paparazzi3/branches/campaign2010/conf/airframes/funjetfmi3.xml
===================================================================
--- paparazzi3/branches/campaign2010/conf/airframes/funjetfmi3.xml
(rev 0)
+++ paparazzi3/branches/campaign2010/conf/airframes/funjetfmi3.xml
2010-09-27 21:23:52 UTC (rev 5962)
@@ -0,0 +1,272 @@
+<!DOCTYPE airframe SYSTEM "airframe.dtd">
+
+<!-- Funjet Multiplex (http://www.multiplex-rc.de/), Jeti ECO 25
+ Tiny 2.11 board (http://paparazzi.enac.fr/wiki/index.php/Tiny_v2)
+ Tilted infrared sensor
(http://paparazzi.enac.fr/wiki/index.php/Image:Tiny_v2_1_Funjet.jpg)
+ XBee modem
+ Payload: Sensirion humidity/temp, VTI pressure/temp, ETS airspeed
+ LEA 5H
+-->
+
+<airframe name="Funjet FMI 3">
+
+<!-- commands section -->
+ <servos>
+ <servo name="MOTOR" no="0" min="1000" neutral="1000" max="2000"/>
+ <servo name="AILEVON_LEFT" no="2" min="1900" neutral="1515" max="1100"/>
+ <servo name="AILEVON_RIGHT" no="6" min="1100" neutral="1502" max="1900"/>
+ </servos>
+
+ <commands>
+ <axis name="THROTTLE" failsafe_value="0"/>
+ <axis name="ROLL" failsafe_value="0"/>
+ <axis name="PITCH" failsafe_value="0"/>
+ </commands>
+
+ <rc_commands>
+ <set command="THROTTLE" value="@THROTTLE"/>
+ <set command="ROLL" value="@ROLL"/>
+ <set command="PITCH" value="@PITCH"/>
+ </rc_commands>
+
+ <section name="MIXER">
+ <define name="AILEVON_AILERON_RATE" value="0.45"/>
+ <define name="AILEVON_ELEVATOR_RATE" value="0.8"/>
+ </section>
+
+ <command_laws>
+ <let var="aileron" value="@ROLL * AILEVON_AILERON_RATE"/>
+ <let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
+ <set servo="MOTOR" value="@THROTTLE"/>
+ <set servo="AILEVON_LEFT" value="$elevator + $aileron"/>
+ <set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
+ </command_laws>
+
+ <section name="AUTO1" prefix="AUTO1_">
+ <define name="MAX_ROLL" value="0.85"/>
+ <define name="MAX_PITCH" value="0.6"/>
+ </section>
+
+ <section name="adc" prefix="ADC_CHANNEL_">
+ <define name="IR1" value="ADC_1"/>
+ <define name="IR2" value="ADC_2"/>
+ <define name="IR_TOP" value="ADC_0"/>
+ <define name="IR_NB_SAMPLES" value="16"/>
+ </section>
+
+ <section name="INFRARED" prefix="IR_">
+ <define name="ADC_IR1_NEUTRAL" value="512"/>
+ <define name="ADC_IR2_NEUTRAL" value="512"/>
+ <define name="ADC_TOP_NEUTRAL" value="512"/>
+
+ <define name="CORRECTION_UP" value="1."/>
+ <define name="CORRECTION_DOWN" value="1."/>
+ <define name="CORRECTION_LEFT" value="1."/>
+ <define name="CORRECTION_RIGHT" value="1."/>
+
+ <define name="LATERAL_CORRECTION" value="1"/>
+ <define name="LONGITUDINAL_CORRECTION" value="1"/>
+ <define name="VERTICAL_CORRECTION" value="1.5"/>
+
+ <define name="HORIZ_SENSOR_TILTED" value="1"/>
+ <define name="IR1_SIGN" value="-1"/>
+ <define name="IR2_SIGN" value="-1"/>
+ <define name="TOP_SIGN" value="1"/>
+
+ <define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="deg"/>
+ <define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="deg"/>
+ </section>
+
+ <section name="BAT">
+ <define name="MILLIAMP_AT_FULL_THROTTLE" value="10000."/>
+ <define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
+ <!-- 0.0247311828 -->
+ <!-- 0.02432905 -->
+ <define name="VoltageOfAdc(adc)" value="(0.02454*adc)"/>
+ </section>
+
+ <section name="MISC">
+ <define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
+ <define name="CARROT" value="5." unit="s"/>
+ <define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
+ <define name="CONTROL_RATE" value="60" unit="Hz"/>
+<!-- <define name="XBEE_INIT" value="\"ATPL2\rATRN1\rATTT80\r\""/> -->
+<!-- <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
+ <define name="ALT_KALMAN_ENABLED" value="FALSE"/>
+
+ <define name="TRIGGER_DELAY" value="1."/>
+ <define name="DEFAULT_CIRCLE_RADIUS" value="120."/>
+ <define name="MIN_CIRCLE_RADIUS" value="50."/>
+ </section>
+
+ <section name="VERTICAL CONTROL" prefix="V_CTL_">
+
+ <define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
+ <!-- outer loop proportional gain -->
+ <define name="ALTITUDE_PGAIN" value="-0.06"/> <!-- -0.024 -->
+ <!-- outer loop saturation -->
+ <define name="ALTITUDE_MAX_CLIMB" value="2."/>
+
+ <!-- auto throttle inner loop -->
+ <define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.45"/>
+ <define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.35"/>
+ <define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.85"/>
+ <define name="AUTO_THROTTLE_LOITER_TRIM" value="1000"/>
+ <define name="AUTO_THROTTLE_DASH_TRIM" value="-1200"/>
+ <define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.2"
unit="%/(m/s)"/>
+ <define name="AUTO_THROTTLE_PGAIN" value="-0.023"/> <!-- -0.012 -->
+ <define name="AUTO_THROTTLE_IGAIN" value="0.01"/>
+ <define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>
+
+ <!-- auto pitch inner loop -->
+ <define name="AUTO_PITCH_PGAIN" value="-0.06"/> <!-- -0.03 -->
+ <define name="AUTO_PITCH_IGAIN" value="0.0"/>
+ <define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
+ <define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
+
+ <define name="THROTTLE_SLEW" value="0.1"/>
+
+ </section>
+
+ <section name="HORIZONTAL CONTROL" prefix="H_CTL_">
+ <define name="COURSE_PGAIN" value="-0.9"/>
+ <define name="ROLL_MAX_SETPOINT" value="0.70" unit="radians"/> <!-- 0.5 -->
+ <define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
+ <define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
+
+ <define name="ROLL_PGAIN" value="6600."/>
+ <define name="AILERON_OF_THROTTLE" value="0.0"/>
+ <define name="PITCH_PGAIN" value="-5500."/>
+ <define name="PITCH_DGAIN" value="0.4"/>
+
+ <define name="ELEVATOR_OF_ROLL" value="2400"/>
+
+ <!--define name="ROLL_ATTITUDE_GAIN" value="-7500"/>
+ <define name="ROLL_RATE_GAIN" value="-1500"/-->
+
+ </section>
+
+ <section name="NAV">
+ <define name="NAV_PITCH" value="0."/>
+ <define name="NAV_GLIDE_PITCH_TRIM" value="0"/>
+ </section>
+
+ <section name="AGGRESSIVE" prefix="AGR_">
+ <define name="BLEND_START" value="50"/><!-- Altitude Error to Initiate
Aggressive Climb CANNOT BE ZERO!!-->
+ <define name="BLEND_END" value="15"/><!-- Altitude Error to Blend
Aggressive to Regular Climb Modes CANNOT BE ZERO!!-->
+ <define name="CLIMB_THROTTLE" value="0.9"/><!-- Gaz for Aggressive Climb
-->
+ <define name="CLIMB_PITCH" value="0.35"/><!-- Pitch for Aggressive Climb
-->
+ <define name="DESCENT_THROTTLE" value="0.05"/><!-- Gaz for Aggressive
Decent -->
+ <define name="DESCENT_PITCH" value="-0.35"/><!-- Pitch for Aggressive
Decent -->
+ <define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for
Altitude Error Equal to Start Altitude -->
+ <define name="DESCENT_NAV_RATIO" value="1.0"/>
+ </section>
+
+ <section name="FAILSAFE" prefix="FAILSAFE_">
+ <define name="DELAY_WITHOUT_GPS" value="2" unit="s"/>
+ <define name="DEFAULT_THROTTLE" value="0.3" unit="%"/>
+ <define name="DEFAULT_ROLL" value="0.3" unit="rad"/>
+ <define name="DEFAULT_PITCH" value="0.5" unit="rad"/>
+ <define name="HOME_RADIUS" value="100" unit="m"/>
+</section>
+
+ <section name="DATALINK" prefix="DATALINK_">
+ <define name="DEVICE_TYPE" value="XBEE"/>
+ <define name="DEVICE_ADDRESS" value="...."/>
+ </section>
+
+ <section name="SIMU">
+ <define name="YAW_RESPONSE_FACTOR" value="0.5"/>
+ </section>
+
+ <section name="MICROMAG">
+
+ <define name="MM_SS_PIN" value="20"/>
+ <define name="MM_SS_IODIR" value="IO0DIR"/>
+ <define name="MM_SS_IOSET" value="IO0SET"/>
+ <define name="MM_SS_IOCLR" value="IO0CLR"/>
+
+ <define name="MM_RESET_PIN" value="29"/>
+ <define name="MM_RESET_IODIR" value="IO0DIR"/>
+ <define name="MM_RESET_IOSET" value="IO0SET"/>
+ <define name="MM_RESET_IOCLR" value="IO0CLR"/>
+
+ <define name="MM_DRDY_PINSEL" value="PINSEL1"/>
+ <define name="MM_DRDY_PINSEL_BIT" value="0"/>
+ <define name="MM_DRDY_PINSEL_VAL" value="1"/>
+ <define name="MM_DRDY_EINT" value="0"/>
+ <define name="MM_DRDY_VIC_IT" value="VIC_EINT0"/>
+
+ </section>
+
+ <makefile>
+CONFIG = \"tiny_2_1.h\"
+
+include $(PAPARAZZI_SRC)/conf/autopilot/tiny.makefile
+
+FLASH_MODE=IAP
+
+ap.CFLAGS += -DFBW -DAP -DBOARD_CONFIG=$(CONFIG) -DLED -DTIME_LED=1
+ap.srcs = sys_time.c $(SRC_ARCH)/sys_time_hw.c $(SRC_ARCH)/armVIC.c main_fbw.c
main_ap.c main.c
+
+ap.srcs += commands.c
+
+ap.CFLAGS += -DACTUATORS=\"servos_4017_hw.h\" -DSERVOS_4017
+ap.srcs += $(SRC_ARCH)/servos_4017_hw.c actuators.c
+
+ap.CFLAGS += -DRADIO_CONTROL
+ap.srcs += radio_control.c $(SRC_ARCH)/ppm_hw.c
+
+ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=XBeeTransport
-DXBEE_UART=Uart1 -DDATALINK=XBEE -DUART1_BAUD=B57600
+ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c xbee.c
+
+#TRANSPARENT
+#ap.CFLAGS += -DDOWNLINK -DUSE_UART1 -DDOWNLINK_TRANSPORT=PprzTransport
-DDOWNLINK_FBW_DEVICE=Uart1 -DDOWNLINK_AP_DEVICE=Uart1 -DPPRZ_UART=Uart1
-DDATALINK=PPRZ -DUART1_BAUD=B9600
+#ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c pprz_transport.c
+
+
+ap.CFLAGS += -DINTER_MCU
+ap.srcs += inter_mcu.c
+
+ap.CFLAGS += -DADC -DUSE_ADC_0 -DUSE_ADC_1 -DUSE_ADC_2
+ap.srcs += $(SRC_ARCH)/adc_hw.c
+
+ap.CFLAGS += -DGPS -DUBX -DUSE_UART0 -DGPS_LINK=Uart0 -DUART0_BAUD=B38400
-DGPS_USE_LATLONG
+# -DGPS_LED=2
+ap.srcs += gps_ubx.c gps.c latlong.c
+
+ap.CFLAGS += -DINFRARED -DALT_KALMAN -DWIND_INFO -DWIND_INFO_RET
+ap.srcs += infrared.c estimator.c
+
+ap.CFLAGS += -DNAV -DAGR_CLIMB -DLOITER_TRIM
+ap.srcs += nav.c fw_h_ctl.c fw_v_ctl.c
+
+ap.srcs += nav_line.c
+ap.srcs += nav_survey_rectangle.c
+
+ap.srcs += humid_sht.c
+ap.CFLAGS += -DUSE_HUMID_SHT -DDAT_PIN=30 -DSCK_PIN=4
+
+ap.CFLAGS += -DUSE_I2C0
+ap.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
+
+ap.CFLAGS += -DUSE_AIRSPEED_ETS
+ap.srcs += airspeed_ets_o.c
+
+ap.CFLAGS += -DUSE_IR_MLX
+ap.srcs += ir_mlx.c
+
+ap.CFLAGS += -DUSE_BARO_SCP
+ap.srcs += baro_scp_i2c.c
+
+ap.CFLAGS += -DMICROMAG_DRDY_VIC_SLOT=12 -DSSP_VIC_SLOT=11 -DUSE_MICROMAG_FW
+ap.srcs += micromag_fw.c $(SRC_ARCH)/micromag_fw_hw.c
+
+# Config for SITL simulation
+include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
+sim.CFLAGS += -DBOARD_CONFIG=\"tiny.h\" -DAGR_CLIMB -DLOITER_TRIM -DALT_KALMAN
+sim.srcs += nav_line.c nav_survey_rectangle.c
+
+
+ </makefile>
+</airframe>
Modified: paparazzi3/branches/campaign2010/conf/airframes/logger_sd.xml
===================================================================
--- paparazzi3/branches/campaign2010/conf/airframes/logger_sd.xml
2010-09-27 20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/conf/airframes/logger_sd.xml
2010-09-27 21:23:52 UTC (rev 5962)
@@ -51,8 +51,8 @@
#ap.CFLAGS += -DLOG_PPRZ
#set the speed
-ap.CFLAGS += -DUSE_UART0 -DUART0_BAUD=B9600 -DUSE_UART0_RX_ONLY
-ap.CFLAGS += -DUSE_UART1 -DUART1_BAUD=B9600 -DUSE_UART1_RX_ONLY
+ap.CFLAGS += -DUSE_UART0 -DUART0_BAUD=B57600 -DUSE_UART0_RX_ONLY
+ap.CFLAGS += -DUSE_UART1 -DUART1_BAUD=B57600 -DUSE_UART1_RX_ONLY
ap.srcs += $(SRC_ARCH)/uart_hw.c
#set SPI interface for SD card (0 or 1)
Modified: paparazzi3/branches/campaign2010/conf/flight_plans/grosslobke_demo.xml
===================================================================
--- paparazzi3/branches/campaign2010/conf/flight_plans/grosslobke_demo.xml
2010-09-27 20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/conf/flight_plans/grosslobke_demo.xml
2010-09-27 21:23:52 UTC (rev 5962)
@@ -1,6 +1,7 @@
<!DOCTYPE flight_plan SYSTEM "flight_plan.dtd">
-<flight_plan alt="170" ground_alt="68" lat0="52.26483" lon0="9.99394"
max_dist_from_home="1500" name="Gross Lobke Demo" qfu="270"
security_height="60">
+<flight_plan ALT="130" GROUND_ALT="68" LAT0="52.26483" LON0="9.99394"
MAX_DIST_FROM_HOME="1500" NAME="Gross Lobke, Demo" QFU="270"
SECURITY_HEIGHT="60">
+
<header>
#include "bomb.h"
#include "nav_line.h"
@@ -10,13 +11,14 @@
<waypoint name="HOME" x="15.0" y="5.0"/>
<waypoint name="1" x="-180." y="35."/>
<waypoint name="2" x="156.8" y="22.3"/>
- <waypoint name="CR" x="0.0" y="160.0"/>
+ <waypoint name="CR" x="51.2" y="150.1"/>
<waypoint name="S1" x="-200" y="-200"/>
<waypoint name="S2" x="300" y="400"/>
- <waypoint alt="140.0" name="START" x="-180" y="-0.0"/>
+ <waypoint alt="150.0" name="START" x="-2.2" y="191.7"/>
<waypoint alt="68.0" name="TARGET" x="-56.9" y="7.8"/>
- <waypoint alt="68.0" name="TD" x="-2.3" y="18.2"/>
- <waypoint alt="120.0" name="AF" x="170.0" y="45.0"/>
+ <waypoint alt="68.0" name="TD" x="-45.6" y="9.1"/>
+ <waypoint alt="150.0" name="AF" x="309.7" y="38.4"/>
+ <waypoint alt="120.0" name="AFC" x="126.3" y="26.0"/>
<waypoint alt="120.0" name="BASELEG" x="40." y="-130."/>
<waypoint alt="120.0" name="_BASELEG" x="40." y="-130."/>
<waypoint alt="120.0" name="RELEASE" x="40." y="-110."/>
@@ -24,15 +26,27 @@
</waypoints>
<blocks>
<block name="start">
- <attitude pitch="20" roll="0" throttle="0.8"
until="(estimator_flight_time > 3)" vmode="throttle"/>
+ <attitude pitch="20" roll="0" throttle="0.99"
until="(estimator_flight_time > 3)" vmode="throttle"/>
<go wp="START"/>
+ <deroute block="Land Right AF-TD"/>
</block>
<block name="wait" strip_button="wait">
<circle radius="nav_radius" wp="CR"/>
</block>
+ <block name="climb">
+ <circle pitch="50" radius="nav_radius" throttle="0.99"
until="(estimator_z > ground_alt+300)" vmode="throttle" wp="CR"/>
+ <deroute block="wait"/>
+ </block>
<block name="survey">
<survey_rectangle grid="150" wp1="S1" wp2="S2"/>
</block>
+ <block name="profile_up land" strip_button="Profile Up Land"
strip_icon="up_profile.png">
+ <circle radius="nav_radius" wp="1"/>
+ </block>
+ <block name="profile_down land" strip_button="Profile Down Land"
strip_icon="down_profile.png">
+ <circle pitch="RadOfDeg(-10)" radius="nav_radius" throttle="0"
until="(ground_alt+100 > estimator_z)" vmode="throttle" wp="1"/>
+ <deroute block="wait"/>
+ </block>
<block name="Line 1-2" strip_button="Line (wp 1-2)" strip_icon="line.png">
<call fun="nav_line_init()"/>
<call fun="nav_line(WP_1, WP_2, nav_radius)"/>
@@ -79,45 +93,16 @@
<circle radius="nav_radius" until="NavCircleCount() > 0.5"
wp="_BASELEG"/>
<circle radius="nav_radius"
until="NavQdrCloseTo(DegOfRad(baseleg_out_qdr)-10) && 20 > fabs(estimator_z -
WaypointAlt(WP__BASELEG))" wp="_BASELEG"/>
</block>
+ <block name="gerade">
+ <go from="AF" hmode="route" wp="AFC"/>
+ </block>
<block name="final">
<exception cond="ground_alt + 10 > estimator_z" deroute="flare"/>
- <go from="AF" hmode="route" vmode="glide" wp="TD"/>
+ <go from="AFC" hmode="route" vmode="glide" wp="TD"/>
</block>
<block name="flare">
<go approaching_time="0" from="AF" hmode="route" throttle="0.0"
vmode="throttle" wp="TD"/>
- <attitude roll="0.0" throttle="0.0" until="FALSE" vmode="throttle"/>
+ <attitude pitch="20.0" roll="0.0" throttle="0.0" until="FALSE"
vmode="throttle"/>
</block>
-
- <!--block name="Bomb Right">
- <set value="DEFAULT_CIRCLE_RADIUS" var="nav_radius"/>
- <deroute block="bomb"/>
- </block>
- <block name="bomb" strip_button="Bomb">
- <set value="BombComputeApproach(WP_TARGET, WP_START, nav_radius)"
var="unit"/>
- <circle radius="nav_radius"
until="NavQdrCloseTo(DegOfRad(bomb_start_qdr)-10)" wp="BASELEG"/>
- </block>
- <block name="align">
- <exception cond="BombUpdateRelease(WP_TARGET)" deroute="wait"/>
- <go approaching_time="bomb_trigger_delay" from="START" hmode="route"
wp="RELEASE"/>
- </block>
- <block name="shoot">
- <set value="BombShoot()" var="unit"/>
- <go from="RELEASE" hmode="route" wp="CLIMB"/>
- <set value="BombCloseHatch()" var="unit"/>
- <deroute block="wait"/>
- </block>
- <block name="close">
- <set value="BombCloseHatch()" var="unit"/>
- <deroute block="wait"/>
- </block-->
-
- <!--block NAME="roll" strip_button="Roll">
- <set value="TRUE" var="h_ctl_disabled"/>
- <set value="(-0.75*MAX_PPRZ)" var="h_ctl_aileron_setpoint"/>
- <while cond="3.> stage_time && (estimator_phi > 0 || -M_PI_2 >
estimator_phi)"/>
- <set value="FALSE" var="h_ctl_disabled"/>
- <return/>
- </block-->
-
</blocks>
</flight_plan>
Modified: paparazzi3/branches/campaign2010/conf/messages.xml
===================================================================
--- paparazzi3/branches/campaign2010/conf/messages.xml 2010-09-27 20:34:50 UTC
(rev 5961)
+++ paparazzi3/branches/campaign2010/conf/messages.xml 2010-09-27 21:23:52 UTC
(rev 5962)
@@ -376,6 +376,11 @@
<field name="msg" type="uint8[]"/>
</message>
+ <message name="AIRSPEED_ETS" id="57">
+ <field name="adc" type="uint16"/>
+ <field name="airspeed" type="uint16" unit="cm/s" alt_unit="m/s"
alt_unit_coef="0.01"></field>
+ </message>
+
<message name="H_CTL_A" id="60">
<field name="roll_sum_err" type="float"/>
<field name="ref_roll_angle" type="float" unit="rad" alt_unit="deg"
alt_unit_coef="57.3"/>
@@ -527,6 +532,13 @@
<field name="throttle" type="uint16"/>
</message>
+ <message name="MLX_STATUS" id="96">
+ <field name="itemp_case" type="uint16"/>
+ <field name="temp_case" type="int32" unit="100x_deg_celsius"/>
+ <field name="itemp_obj" type="uint16"/>
+ <field name="temp_obj" type="int32" unit="100x_deg_celsius"/>
+ </message>
+
<message name="PPM" id="100">
<field name="ppm_rate" type="uint8"></field>
<field name="values" type="uint16[]" unit="ticks"/>
Added: paparazzi3/branches/campaign2010/conf/radios/mc24r.xml
===================================================================
--- paparazzi3/branches/campaign2010/conf/radios/mc24r.xml
(rev 0)
+++ paparazzi3/branches/campaign2010/conf/radios/mc24r.xml 2010-09-27
21:23:52 UTC (rev 5962)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<!-- Graupner/JR MC24 with robbe R6107SP -->
+<!-- $Id: mc24.xml 3610 2009-07-02 16:35:18Z poine $
+--
+-- (c) 2003 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
+-- min, max and sync are expressed in micro-seconds
+-->
+
+<!--
+-- Attributes of channel tag :
+-- ctl: name of the command on the transmitter - only for displaying
+-- no: order in the PPM frame
+-- 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="mc24r" data_min="800" data_max="2200" sync_min="5000"
sync_max="25000" pulse_type="POSITIVE">
+ <channel ctl="C" function="ROLL" min="1096" neutral="1500" max="1900"
average="0"/>
+ <channel ctl="B" function="PITCH" min="1900" neutral="1500" max="1096"
average="0"/>
+ <channel ctl="D" function="THROTTLE" min="1096" neutral="1096" max="1900"
average="0"/>
+ <channel ctl="A" function="YAW" min="1096" neutral="1500" max="1900"
average="0"/>
+ <channel ctl="H" function="MODE" min="966" neutral="1500" max="2025"
average="1"/>
+ <channel ctl="E" function="GAIN1" min="1096" neutral="1500" max="1900"
average="1"/>
+ <channel ctl="F" function="CALIB" min="1096" neutral="1500" max="1900"
average="0"/>
+</radio>
+
Added: paparazzi3/branches/campaign2010/conf/radios/t6ex.xml
===================================================================
--- paparazzi3/branches/campaign2010/conf/radios/t6ex.xml
(rev 0)
+++ paparazzi3/branches/campaign2010/conf/radios/t6ex.xml 2010-09-27
21:23:52 UTC (rev 5962)
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<!-- Futaba T6EX with robbe R6107SP, mode @ yaw -->
+<!-- $Id: t6ex.xml 3610 2009-07-02 16:35:18Z poine $
+--
+-- (c) 2003 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
+-- min, max and sync are expressed in micro-seconds
+-->
+
+<!--
+-- Attributes of channel tag :
+-- ctl: name of the command on the transmitter - only for displaying
+-- no: order in the PPM frame
+-- 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="T6EX_2.4" data_min="800" data_max="2200" sync_min="5000"
sync_max="25000" pulse_type="POSITIVE">
+ <channel ctl="A" function="ROLL" min="1900" neutral="1500" max="1096"
average="0"/>
+ <channel ctl="B" function="PITCH" min="1096" neutral="1500" max="1900"
average="0"/>
+ <channel ctl="C" function="THROTTLE" min="1900" neutral="1900" max="1096"
average="0"/>
+ <channel ctl="D" function="MODE" min="1096" neutral="1500" max="1900"
average="1"/>
+ <channel ctl="E" function="GAIN1" min="1096" neutral="1500" max="1900"
average="1"/>
+ <channel ctl="F" function="CALIB" min="1096" neutral="1500" max="1900"
average="0"/>
+ <channel ctl="G" function="YAW" min="1096" neutral="1500" max="1900"
average="0"/>
+</radio>
+
Modified: paparazzi3/branches/campaign2010/conf/settings/tuning.xml
===================================================================
--- paparazzi3/branches/campaign2010/conf/settings/tuning.xml 2010-09-27
20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/conf/settings/tuning.xml 2010-09-27
21:23:52 UTC (rev 5962)
@@ -50,7 +50,7 @@
<dl_setting MAX="25000" MIN="000" STEP="250" VAR="h_ctl_roll_pgain"
shortname="roll_pgain" module="fw_h_ctl"/>
<dl_setting MAX="1" MIN="0" STEP="0.05" VAR="h_ctl_roll_max_setpoint"
shortname="max_roll" param="H_CTL_ROLL_MAX_SETPOINT"/>
<dl_setting MAX="000" MIN="-25000" STEP="250" VAR="h_ctl_pitch_pgain"
shortname="pitch_pgain" param="H_CTL_PITCH_PGAIN"/>
- <dl_setting MAX="0" MIN="-50000" STEP="10" VAR="h_ctl_pitch_dgain"
shortname="pitch_dgain" param="H_CTL_PITCH_DGAIN"/>
+ <dl_setting MAX="20" MIN="0" STEP="0.1" VAR="h_ctl_pitch_dgain"
shortname="pitch_dgain" param="H_CTL_PITCH_DGAIN"/>
<dl_setting MAX="5000" MIN="0" STEP="100" VAR="h_ctl_elevator_of_roll"
shortname="elevator_of_roll" param="H_CTL_ELEVATOR_OF_ROLL"/>
<dl_setting MAX="5000" MIN="0" STEP="100"
VAR="h_ctl_aileron_of_throttle" shortname="aileron_of_throttle"/>
Modified: paparazzi3/branches/campaign2010/conf/telemetry/default.xml
===================================================================
--- paparazzi3/branches/campaign2010/conf/telemetry/default.xml 2010-09-27
20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/conf/telemetry/default.xml 2010-09-27
21:23:52 UTC (rev 5962)
@@ -25,6 +25,7 @@
<message name="GYRO_RATES" period="1.1"/>
<message name="SURVEY" period="2.1"/>
<message name="GPS_SOL" period="2.0"/>
+ <message name="IMU_ACCEL_RAW" period=".1"/>
</mode>
<mode name="minimal">
<message name="ALIVE" period="5"/>
Added: paparazzi3/branches/campaign2010/sw/airborne/airspeed_ets_o.c
===================================================================
--- paparazzi3/branches/campaign2010/sw/airborne/airspeed_ets_o.c
(rev 0)
+++ paparazzi3/branches/campaign2010/sw/airborne/airspeed_ets_o.c
2010-09-27 21:23:52 UTC (rev 5962)
@@ -0,0 +1,196 @@
+/*
+ * Driver for the EagleTree Systems Airspeed Sensor
+ * Has only been tested with V3 of the sensor hardware
+ *
+ * Notes:
+ * Connect directly to TWOG/Tiny I2C port. Multiple sensors can be chained
together.
+ * Sensor should be in the proprietary mode (default) and not in 3rd party
mode.
+ * See conf/airframes/easystar2.xml for a configuration example.
+ *
+ * Sensor module wire assignments:
+ * Red wire: 5V
+ * White wire: Ground
+ * Yellow wire: SDA
+ * Brown wire: SCL
+ *
+ * Copyright (C) 2009 Vassilis Varveropoulos
+ *
+ * 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.
+ *
+ */
+
+#include "airspeed_ets_o.h"
+#include "i2c.h"
+#include "nav.h"
+#include <math.h>
+
+
+#include "interrupt_hw.h"
+#include "init_hw.h"
+#include "adc.h"
+#include "fw_h_ctl.h"
+#include "fw_v_ctl.h"
+#include "gps.h"
+#include "infrared.h"
+#include "gyro.h"
+#include "ap_downlink.h"
+#include "nav.h"
+#include "autopilot.h"
+#include "estimator.h"
+#include "settings.h"
+#include "cam.h"
+#include "link_mcu.h"
+#include "sys_time.h"
+#include "flight_plan.h"
+#include "datalink.h"
+#include "xbee.h"
+#include "gpio.h"
+#include "light.h"
+
+
+
+#ifdef SITL
+#include "gps.h"
+#endif
+
+#define AIRSPEED_ETS_ADDR 0xEA
+#define AIRSPEED_ETS_REG 0x07
+#ifndef AIRSPEED_ETS_SCALE
+#define AIRSPEED_ETS_SCALE 1.8
+#endif
+#ifndef AIRSPEED_ETS_OFFSET
+#define AIRSPEED_ETS_OFFSET 0
+#endif
+#define AIRSPEED_ETS_OFFSET_MAX 1750
+#define AIRSPEED_ETS_OFFSET_MIN 1450
+#define AIRSPEED_ETS_OFFSET_NBSAMPLES_INIT 40
+#define AIRSPEED_ETS_OFFSET_NBSAMPLES_AVRG 60
+#define AIRSPEED_ETS_NBSAMPLES_AVRG 10
+
+// Global variables
+uint16_t airspeed_ets_raw;
+uint16_t airspeed_ets_offset;
+bool_t airspeed_ets_valid;
+float airspeed_ets_f;
+uint16_t airspeed_ets_uint;
+int airspeed_ets_buffer_idx;
+float airspeed_ets_buffer[AIRSPEED_ETS_NBSAMPLES_AVRG];
+
+// Local variables
+volatile bool_t airspeed_ets_i2c_done;
+bool_t airspeed_ets_offset_init;
+uint32_t airspeed_ets_offset_tmp;
+uint16_t airspeed_ets_cnt;
+
+int airspeed_ets_available( void ) {
+ int temp = airspeed_ets_valid;
+ airspeed_ets_valid = FALSE;
+ return temp;
+}
+
+void airspeed_ets_init( void ) {
+ int n;
+ airspeed_ets_raw = 0;
+ airspeed_ets_f = 0.0;
+ airspeed_ets_uint = 0;
+ airspeed_ets_offset = 0;
+ airspeed_ets_offset_tmp = 0;
+ airspeed_ets_i2c_done = FALSE;
+ airspeed_ets_valid = TRUE;
+ airspeed_ets_offset_init = FALSE;
+ airspeed_ets_cnt = AIRSPEED_ETS_OFFSET_NBSAMPLES_INIT +
AIRSPEED_ETS_OFFSET_NBSAMPLES_AVRG;
+ i2c0_buf[0] = 0;
+ i2c0_buf[1] = 0;
+ airspeed_ets_buffer_idx = 0;
+ for (n=0; n < AIRSPEED_ETS_NBSAMPLES_AVRG; ++n)
+ airspeed_ets_buffer[n] = 0.0;
+}
+
+void airspeed_ets_periodic( void ) {
+ // Initiate next read
+ i2c0_buf[0] = 0;
+ i2c0_buf[1] = 0;
+ airspeed_ets_i2c_done = FALSE;
+ i2c0_receive(AIRSPEED_ETS_ADDR, 2, &airspeed_ets_i2c_done);
+//LED_TOGGLE(3);
+}
+
+void airspeed_ets_event( void ) {
+ int n;
+ float airspeed_tmp = 0.0;
+
+ // Read raw value
+ if(airspeed_ets_i2c_done ==TRUE) {
+ airspeed_ets_i2c_done = FALSE;
+// if (i2c0_status == I2C_IDLE) {
+ // Get raw airspeed from buffer
+ airspeed_ets_raw = ((uint16_t)(i2c0_buf[1]) << 8) |
(uint16_t)(i2c0_buf[0]);
+ // Check if this is valid airspeed
+ if (airspeed_ets_raw == 0)
+ airspeed_ets_valid = FALSE;
+ else
+ airspeed_ets_valid = TRUE;
+ }
+ else
+ {
+ airspeed_ets_valid = FALSE;
+ }
+ // Continue only if a new airspeed value was received
+ if (airspeed_ets_valid == TRUE) {
+ // Calculate offset average if not done already
+ if (!airspeed_ets_offset_init) {
+ --airspeed_ets_cnt;
+ // Check if averaging completed
+ if (airspeed_ets_cnt == 0) {
+ // Calculate average
+ airspeed_ets_offset = (uint16_t)(airspeed_ets_offset_tmp /
AIRSPEED_ETS_OFFSET_NBSAMPLES_AVRG);
+ // Limit offset
+ if (airspeed_ets_offset < AIRSPEED_ETS_OFFSET_MIN)
+ airspeed_ets_offset = AIRSPEED_ETS_OFFSET_MIN;
+ if (airspeed_ets_offset > AIRSPEED_ETS_OFFSET_MAX)
+ airspeed_ets_offset = AIRSPEED_ETS_OFFSET_MAX;
+ airspeed_ets_offset_init = TRUE;
+ }
+ // Check if averaging needs to continue
+ else if (airspeed_ets_cnt <= AIRSPEED_ETS_OFFSET_NBSAMPLES_AVRG)
+ airspeed_ets_offset_tmp += airspeed_ets_raw;
+ }
+ // Convert raw to m/s
+ if (airspeed_ets_offset_init && airspeed_ets_raw > airspeed_ets_offset)
+ airspeed_tmp = AIRSPEED_ETS_SCALE * sqrt(
(float)(airspeed_ets_raw-airspeed_ets_offset) ) - AIRSPEED_ETS_OFFSET;
+ else
+ airspeed_tmp = 0.0;
+ // Airspeed should always be positive
+ if (airspeed_tmp < 0.0)
+ airspeed_tmp = 0.0;
+ // Moving average
+ airspeed_ets_buffer[airspeed_ets_buffer_idx++] = airspeed_tmp;
+ if (airspeed_ets_buffer_idx >= AIRSPEED_ETS_NBSAMPLES_AVRG)
+ airspeed_ets_buffer_idx = 0;
+ airspeed_ets_f = 0.0;
+ for (n = 0; n < AIRSPEED_ETS_NBSAMPLES_AVRG; ++n)
+ airspeed_ets_f += airspeed_ets_buffer[n];
+ airspeed_ets_f = airspeed_ets_f / (float)AIRSPEED_ETS_NBSAMPLES_AVRG;
+ airspeed_ets_uint = airspeed_ets_f * 100.0;
+ DOWNLINK_SEND_AIRSPEED_ETS(DefaultChannel, &airspeed_ets_raw,
&airspeed_ets_uint);
+//LED_TOGGLE(2);
+ } else {
+ airspeed_ets_f = 0.0;
+ }
+}
+
Added: paparazzi3/branches/campaign2010/sw/airborne/airspeed_ets_o.h
===================================================================
--- paparazzi3/branches/campaign2010/sw/airborne/airspeed_ets_o.h
(rev 0)
+++ paparazzi3/branches/campaign2010/sw/airborne/airspeed_ets_o.h
2010-09-27 21:23:52 UTC (rev 5962)
@@ -0,0 +1,19 @@
+/*
+ * Driver for the EagleTree Systems Airspeed Sensor
+ */
+
+#ifndef AIRSPEED_ETS_H
+#define AIRSPEED_ETS_H
+
+#include "std.h"
+
+extern void airspeed_ets_periodic( void );
+extern void airspeed_ets_event( void );
+extern void airspeed_ets_init( void );
+extern int airspeed_ets_available( void );
+extern uint16_t airspeed_ets_raw;
+extern uint16_t airspeed_ets_offset;
+extern bool_t airspeed_ets_valid;
+extern float airspeed_ets;
+
+#endif // AIRSPEED_ETS_H
Modified: paparazzi3/branches/campaign2010/sw/airborne/ap_downlink.h
===================================================================
--- paparazzi3/branches/campaign2010/sw/airborne/ap_downlink.h 2010-09-27
20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/sw/airborne/ap_downlink.h 2010-09-27
21:23:52 UTC (rev 5962)
@@ -170,11 +170,17 @@
#define PERIODIC_SEND_BARO_MS5534A(_chan) {}
#endif
-#ifdef USE_BARO_SCP
-#include "baro_scp.h"
-#define PERIODIC_SEND_SCP_STATUS(_chan) DOWNLINK_SEND_SCP_STATUS(_chan,
&baro_scp_pressure, &baro_scp_temperature)
+//#ifdef USE_BARO_SCP
+//#include "baro_scp.h"
+//#define PERIODIC_SEND_SCP_STATUS(_chan) DOWNLINK_SEND_SCP_STATUS(_chan,
&baro_scp_pressure, &baro_scp_temperature)
+//#else
+#define PERIODIC_SEND_SCP_STATUS(_chan) {}
+//#endif
+
+#ifdef USE_ACCEL_MEMSIC
+#define PERIODIC_SEND_IMU_ACCEL_RAW(_chan) DOWNLINK_SEND_IMU_ACCEL_RAW(_chan,
&maccel[0], &maccel[1], &maccel[2])
#else
-#define PERIODIC_SEND_SCP_STATUS(_chan) {}
+#define PERIODIC_SEND_IMU_ACCEL_RAW(_chan) {}
#endif
#ifdef USE_AIRSPEED
Modified: paparazzi3/branches/campaign2010/sw/airborne/baro_scp_i2c.c
===================================================================
--- paparazzi3/branches/campaign2010/sw/airborne/baro_scp_i2c.c 2010-09-27
20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/sw/airborne/baro_scp_i2c.c 2010-09-27
21:23:52 UTC (rev 5962)
@@ -33,14 +33,14 @@
void baro_scp_init( void ) {
baro_scp_status = BARO_SCP_UNINIT;
baro_scp_i2c_done = FALSE;
+ baro_scp_available = FALSE;
}
void baro_scp_periodic( void ) {
if (baro_scp_status == BARO_SCP_UNINIT && cpu_time_sec > 1) {
baro_scp_start_high_res_measurement();
- baro_scp_status = BARO_SCP_IDLE;
- } else if (baro_scp_i2c_done) {
- if (baro_scp_status == BARO_SCP_IDLE) {
+ baro_scp_status = BARO_SCP_IDLE;
+ } else if (baro_scp_status == BARO_SCP_IDLE) {
/* initial measurement */
@@ -49,19 +49,10 @@
baro_scp_status = BARO_SCP_RD_TEMP;
baro_scp_i2c_done = FALSE;
i2c0_transceive(SCP1000_SLAVE_ADDR, 1, 2, &baro_scp_i2c_done);
-//LED_ON(2);
}
else if (baro_scp_status == BARO_SCP_RD_TEMP) {
- /* read two byte temperature */
- baro_scp_temperature = i2c0_buf[0] << 8;
- baro_scp_temperature |= i2c0_buf[1];
- if (baro_scp_temperature & 0x2000) {
- baro_scp_temperature |= 0xC000;
- }
- baro_scp_temperature *= 5;
-
/* start one byte msb pressure */
i2c0_buf[0] = 0x7F;
baro_scp_status = BARO_SCP_RD_PRESS_0;
@@ -71,9 +62,6 @@
else if (baro_scp_status == BARO_SCP_RD_PRESS_0) {
- /* read one byte pressure */
- baro_scp_pressure = i2c0_buf[0] << 16;
-
/* start two byte lsb pressure */
i2c0_buf[0] = 0x80;
baro_scp_status = BARO_SCP_RD_PRESS_1;
@@ -83,18 +71,48 @@
else if (baro_scp_status == BARO_SCP_RD_PRESS_1) {
+ /* start two byte temperature */
+ i2c0_buf[0] = 0x81;
+ baro_scp_status = BARO_SCP_RD_TEMP;
+ baro_scp_i2c_done = FALSE;
+ i2c0_transceive(SCP1000_SLAVE_ADDR, 1, 2, &baro_scp_i2c_done);
+ }
+}
+
+void baro_scp_event( void ) {
+ if (baro_scp_i2c_done == TRUE) {
+ baro_scp_i2c_done = FALSE;
+ if (baro_scp_status == BARO_SCP_IDLE) {
+ }
+
+ else if (baro_scp_status == BARO_SCP_RD_TEMP) {
+
+ /* read two byte temperature */
+ baro_scp_temperature = i2c0_buf[0] << 8;
+ baro_scp_temperature |= i2c0_buf[1];
+ if (baro_scp_temperature & 0x2000) {
+ baro_scp_temperature |= 0xC000;
+ }
+ baro_scp_temperature *= 5;
+ }
+
+ else if (baro_scp_status == BARO_SCP_RD_PRESS_0) {
+
+ /* read one byte pressure */
+ baro_scp_pressure = i2c0_buf[0] << 16;
+ }
+
+ else if (baro_scp_status == BARO_SCP_RD_PRESS_1) {
+
/* read two byte pressure */
baro_scp_pressure |= i2c0_buf[0] << 8;
baro_scp_pressure |= i2c0_buf[1];
baro_scp_pressure *= 25;
baro_scp_available = TRUE;
-//LED_TOGGLE(2);
+LED_TOGGLE(3);
- /* start two byte temperature */
- i2c0_buf[0] = 0x81;
- baro_scp_status = BARO_SCP_RD_TEMP;
- baro_scp_i2c_done = FALSE;
- i2c0_transceive(SCP1000_SLAVE_ADDR, 1, 2, &baro_scp_i2c_done);
+//if ((i2c0_buf[0] == 0) && (i2c0_buf[1] == 0)) LED_TOGGLE(2);
+
}
}
}
Modified: paparazzi3/branches/campaign2010/sw/airborne/baro_scp_i2c.h
===================================================================
--- paparazzi3/branches/campaign2010/sw/airborne/baro_scp_i2c.h 2010-09-27
20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/sw/airborne/baro_scp_i2c.h 2010-09-27
21:23:52 UTC (rev 5962)
@@ -17,5 +17,6 @@
void baro_scp_init(void);
void baro_scp_periodic(void);
+void baro_scp_event(void);
#endif
Added: paparazzi3/branches/campaign2010/sw/airborne/ir_mlx.c
===================================================================
--- paparazzi3/branches/campaign2010/sw/airborne/ir_mlx.c
(rev 0)
+++ paparazzi3/branches/campaign2010/sw/airborne/ir_mlx.c 2010-09-27
21:23:52 UTC (rev 5962)
@@ -0,0 +1,93 @@
+
+/** \file ir_mlx.c
+ * \brief Melexis 90614 I2C
+ *
+ * This reads the values for temperatures from the Melexis 90614 IR sensor
through I2C.
+ */
+
+
+#include "ir_mlx.h"
+
+#include "sys_time.h"
+#include "i2c.h"
+#include "led.h"
+#include "ap_downlink.h"
+#include "settings.h"
+#include "cam.h"
+#include "link_mcu.h"
+#include "sys_time.h"
+#include "flight_plan.h"
+#include "datalink.h"
+#include "xbee.h"
+#include "gpio.h"
+#include "light.h"
+
+#include <string.h>
+
+uint8_t ir_mlx_status;
+uint16_t ir_mlx_itemp_case;
+int32_t ir_mlx_temp_case;
+uint16_t ir_mlx_itemp_obj;
+int32_t ir_mlx_temp_obj;
+bool_t ir_mlx_available;
+volatile bool_t ir_mlx_i2c_done;
+
+#define MLX90614_ADDR 0x06
+#define MLX90614_TA 0x06
+#define MLX90614_TOBJ 0x07
+
+
+// printf("Ta = %2.2f°C (0x%04X)\n", (tp*0.02)-273.15, tp);
+// printf("Tobj1 = %2.2f°C (0x%04X)\n", (tp*0.02)-273.15, tp);
+
+
+void ir_mlx_init( void ) {
+ ir_mlx_status = IR_MLX_UNINIT;
+ ir_mlx_i2c_done = FALSE;
+ ir_mlx_available = FALSE;
+}
+
+void ir_mlx_periodic( void ) {
+ if (ir_mlx_status == IR_MLX_UNINIT && cpu_time_sec > 1) {
+ ir_mlx_status = IR_MLX_RD_CASE_TEMP;
+ }
+
+ else if (ir_mlx_status == IR_MLX_RD_CASE_TEMP) {
+
+ /* start two byte obj temperature */
+ i2c0_buf[0] = MLX90614_TOBJ;
+ ir_mlx_status = IR_MLX_RD_OBJ_TEMP;
+ i2c0_transceive(MLX90614_ADDR, 1, 2, &ir_mlx_i2c_done);
+ }
+
+ else if (ir_mlx_status == IR_MLX_RD_OBJ_TEMP) {
+
+ /* start two byte case temperature */
+ i2c0_buf[0] = MLX90614_TA;
+ ir_mlx_status = IR_MLX_RD_CASE_TEMP;
+ i2c0_transceive(MLX90614_ADDR, 1, 2, &ir_mlx_i2c_done);
+ }
+}
+
+void ir_mlx_event( void ) {
+ if (ir_mlx_i2c_done == TRUE) {
+ ir_mlx_i2c_done = FALSE;
+ if (ir_mlx_status == IR_MLX_RD_CASE_TEMP) {
+
+ /* read two byte case temperature */
+ ir_mlx_itemp_case = i2c0_buf[1] << 8;
+ ir_mlx_itemp_case |= i2c0_buf[0];
+ ir_mlx_temp_case = ir_mlx_itemp_case*2 - 27315;
+ }
+
+ else if (ir_mlx_status == IR_MLX_RD_OBJ_TEMP) {
+
+ /* read two byte case temperature */
+ ir_mlx_itemp_obj = i2c0_buf[1] << 8;
+ ir_mlx_itemp_obj |= i2c0_buf[0];
+ ir_mlx_temp_obj = ir_mlx_itemp_obj*2 - 27315;
+ ir_mlx_available = TRUE;
+ }
+ }
+}
+
Added: paparazzi3/branches/campaign2010/sw/airborne/ir_mlx.h
===================================================================
--- paparazzi3/branches/campaign2010/sw/airborne/ir_mlx.h
(rev 0)
+++ paparazzi3/branches/campaign2010/sw/airborne/ir_mlx.h 2010-09-27
21:23:52 UTC (rev 5962)
@@ -0,0 +1,23 @@
+#ifndef IR_MLX_H
+#define IR_MLX_H
+
+#include "std.h"
+
+#define IR_MLX_UNINIT 0
+#define IR_MLX_IDLE 1
+#define IR_MLX_RD_CASE_TEMP 2
+#define IR_MLX_RD_OBJ_TEMP 3
+
+extern uint8_t ir_mlx_status;
+extern uint16_t ir_mlx_itemp_case;
+extern int32_t ir_mlx_temp_case;
+extern uint16_t ir_mlx_itemp_obj;
+extern int32_t ir_mlx_temp_obj;
+extern bool_t ir_mlx_available;
+extern volatile bool_t ir_mlx_i2c_done;
+
+void ir_mlx_init(void);
+void ir_mlx_periodic(void);
+void ir_mlx_event(void);
+
+#endif
Modified: paparazzi3/branches/campaign2010/sw/airborne/main_ap.c
===================================================================
--- paparazzi3/branches/campaign2010/sw/airborne/main_ap.c 2010-09-27
20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/sw/airborne/main_ap.c 2010-09-27
21:23:52 UTC (rev 5962)
@@ -114,6 +114,18 @@
#include "max11040.h"
#endif
+#ifdef USE_AIRSPEED_ETS
+#include "airspeed_ets_o.h"
+#endif
+
+#ifdef USE_IR_MLX
+#include "ir_mlx.h"
+#endif
+
+#ifdef USE_MAG_HMC
+#include "mag_hmc5843.h"
+#endif
+
#ifdef TRAFFIC_INFO
#include "traffic_info.h"
#endif
@@ -122,6 +134,14 @@
#include "tcas.h"
#endif
+#ifdef ADC
+#ifdef USE_ACCEL_MEMSIC
+struct adc_buf xaccel_adc_buf;
+struct adc_buf yaccel_adc_buf;
+uint16_t maccel[3] = {512};
+#endif
+#endif
+
#ifdef USE_USB_SERIAL
#include "usb_serial.h"
#endif
@@ -130,10 +150,6 @@
#include "micromag_fw.h"
#endif
-#ifdef USE_AIRSPEED_ETS
-#include "airspeed_ets.h"
-#endif // USE_AIRSPEED_ETS
-
#ifdef USE_BARO_ETS
#include "baro_ets.h"
#endif // USE_BARO_ETS
@@ -333,6 +349,19 @@
if (pprz_mode == PPRZ_MODE_AUTO2 && fbw_state->channels[RADIO_THROTTLE] >
THROTTLE_THRESHOLD_TAKEOFF) {
launch = TRUE;
}
+//LED_TOGGLE(3);
+#ifdef USE_ACCEL_MEMSIC
+ if ((pprz_mode == PPRZ_MODE_AUTO2) && (maccel[1] < 510) && (maccel[1] >
300)) {
+ launch = TRUE;
+ estimator_flight_time = 1;
+ LED_ON(2);
+ }
+ if ((pprz_mode == PPRZ_MODE_AUTO2) && (maccel[1] < 700) && (maccel[1] >
522)) {
+ launch = TRUE;
+ estimator_flight_time = 1;
+ LED_ON(2);
+ }
+#endif
}
#endif
}
@@ -419,6 +448,13 @@
v_ctl_throttle_setpoint = 0;
}
energy += ((float)current) / 3600.0f * 0.25f; // mAh = mA * dt (4Hz
-> hours)
+
+#ifdef ADC
+#ifdef USE_ACCEL_MEMSIC
+ maccel[0] = (((xaccel_adc_buf.sum/xaccel_adc_buf.av_nb_sample)));
+ maccel[1] = (((yaccel_adc_buf.sum/yaccel_adc_buf.av_nb_sample)));
+#endif
+#endif
}
@@ -579,6 +615,12 @@
break;
#endif
+#ifdef USE_AIRSPEED_ETS
+ case 7:
+ airspeed_ets_periodic();
+ break;
+#endif
+
#ifdef USE_HUMID_SHT
case 8:
humid_sht_periodic();
@@ -592,20 +634,28 @@
#ifdef USE_BARO_SCP
case 9:
baro_scp_periodic();
- if (baro_scp_available == TRUE) {
- DOWNLINK_SEND_SCP_STATUS(DefaultChannel, &baro_scp_pressure,
&baro_scp_temperature);
- baro_scp_available = FALSE;
- }
break;
#endif
+#ifdef USE_IR_MLX
+ case 11:
+ ir_mlx_periodic();
+ break;
+#endif
+
#ifdef TCAS
- case 14:
+ case 12:
/** tcas altitude control loop at 4Hz just before navigation task */
tcas_periodic_task_4Hz();
break;
#endif
+#ifdef USE_MAG_HMC
+ case 14:
+ hmc5843_periodic();
+ break;
+#endif
+
/* default: */
}
@@ -631,9 +681,6 @@
// I2C0 scheduler
switch (_20Hz) {
case 0:
-#ifdef USE_AIRSPEED_ETS
- airspeed_ets_periodic(); // process airspeed
-#endif // USE_AIRSPEED_ETS
#ifdef USE_BARO_ETS
baro_ets_read(); // initiate next i2c read
#endif // USE_BARO_ETS
@@ -642,9 +689,6 @@
#ifdef USE_BARO_ETS
baro_ets_periodic(); // process altitude
#endif // USE_BARO_ETS
-#ifdef USE_AIRSPEED_ETS
- airspeed_ets_read(); // initiate next i2c read
-#endif // USE_AIRSPEED_ETS
break;
case 2:
break;
@@ -743,10 +787,6 @@
i2c1_init();
#endif
-#ifdef USE_AIRSPEED_ETS
- airspeed_ets_init();
-#endif
-
#ifdef USE_BARO_ETS
baro_ets_init();
#endif
@@ -776,6 +816,23 @@
baro_scp_init();
#endif
+#ifdef USE_AIRSPEED_ETS
+ airspeed_ets_init();
+#endif
+
+#ifdef USE_IR_MLX
+ ir_mlx_init();
+#endif
+
+#ifdef USE_MAG_HMC
+ hmc5843_init();
+#endif
+
+#ifdef USE_ACCEL_MEMSIC
+ adc_buf_channel(ADC_CHANNEL_ACC_X, &xaccel_adc_buf, 2);
+ adc_buf_channel(ADC_CHANNEL_ACC_Y, &yaccel_adc_buf, 2);
+#endif
+
/************* Links initialization ***************/
#if defined USE_SPI
spi_init();
@@ -1016,6 +1073,42 @@
}
#endif
+#ifdef USE_AIRSPEED_ETS
+ airspeed_ets_event();
+#endif
+
+#ifdef USE_BARO_SCP
+ baro_scp_event();
+ if (baro_scp_available == TRUE) {
+ DOWNLINK_SEND_SCP_STATUS(DefaultChannel, &baro_scp_pressure,
&baro_scp_temperature);
+ baro_scp_available = FALSE;
+if (baro_scp_pressure == 393216) LED_TOGGLE(2);
+ }
+#endif
+
+#ifdef USE_IR_MLX
+ ir_mlx_event();
+ if (ir_mlx_available == TRUE) {
+ ir_mlx_available = FALSE;
+ DOWNLINK_SEND_MLX_STATUS(DefaultChannel,
+ &ir_mlx_itemp_case,
+ &ir_mlx_temp_case,
+ &ir_mlx_itemp_obj,
+ &ir_mlx_temp_obj);
+ }
+#endif
+
+#ifdef USE_MAG_HMC
+ hmc5843_event();
+ if (hmc5843_available == TRUE) {
+ hmc5843_available = FALSE;
+ DOWNLINK_SEND_IMU_MAG_RAW(DefaultChannel,
+ &hmc5843_mag_x,
+ &hmc5843_mag_y,
+ &hmc5843_mag_z );
+ }
+#endif
+
if (inter_mcu_received_fbw) {
/* receive radio control task from fbw */
inter_mcu_received_fbw = FALSE;
Modified: paparazzi3/branches/campaign2010/sw/ground_segment/tmtc/link.ml
===================================================================
--- paparazzi3/branches/campaign2010/sw/ground_segment/tmtc/link.ml
2010-09-27 20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/sw/ground_segment/tmtc/link.ml
2010-09-27 21:23:52 UTC (rev 5962)
@@ -508,10 +508,6 @@
ignore (Glib.Io.add_watch [`HUP] hangup (GMain.Io.channel_of_descr fd));
ignore (Glib.Io.add_watch [`IN] read_fd (GMain.Io.channel_of_descr fd));
- if !uplink then begin
- message_uplink device
- end;
-
(** Init and Periodic tasks *)
begin
ignore (Glib.Timeout.add status_msg_period (fun () -> send_status_msg
(); true));
@@ -527,6 +523,9 @@
| _ -> ()
end;
+ if !uplink then begin
+ message_uplink device
+ end;
(* Main Loop *)
let loop = Glib.Main.create true in
Modified: paparazzi3/branches/campaign2010/sw/in_progress/ir_usb_i2c/i2c_usb.c
===================================================================
--- paparazzi3/branches/campaign2010/sw/in_progress/ir_usb_i2c/i2c_usb.c
2010-09-27 20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/sw/in_progress/ir_usb_i2c/i2c_usb.c
2010-09-27 21:23:52 UTC (rev 5962)
@@ -15,7 +15,7 @@
/* mlx90614 chip address (default address) */
#define MLX90614_ADDR 0x00
-#define MLX90614_ADDR_1 0x02
+#define MLX90614_ADDR_1 0x00
#define MLX90614_ADDR_2 0x05
#define LOOPS 100
@@ -391,9 +391,9 @@
/* it to 10us doesn't do anything at all since this already is the default */
i2c_tiny_usb_set(CMD_SET_DELAY, 10);
- i=i;
+ i=0;
-#if 0
+#if 1
/* -------- begin of mlx90614 client processing --------- */
printf("Probing for MLX90614 ... ");
@@ -425,8 +425,11 @@
printf("i2c addr = 0x%04X\n", tp);
/* write new i2c address, always set bit0 ! */
-// i2c_mlx_write_cmd_and_word(MLX90614_ADDR, 0x2E, 1);
-// usleep(1000000);
+ i2c_mlx_write_cmd_and_word(MLX90614_ADDR, 0x2E, 0);
+ usleep(100000);
+ /* write new i2c address, always set bit0 ! */
+ i2c_mlx_write_cmd_and_word(MLX90614_ADDR, 0x2E, 0x3);
+ usleep(100000);
tp = i2c_mlx_read_word_with_cmd(MLX90614_ADDR, 0x2E);
printf("i2c addr = 0x%04X\n", tp);
@@ -443,6 +446,7 @@
/* -------- end of mlx90614 client processing --------- */
#endif
+#if 0
/* -------- begin of mlx90614 multi client processing --------- */
/* try to access mlx90614 at address MLX90614_ADDR_1 */
@@ -466,12 +470,12 @@
fprintf(stderr, "USB error: %s\n", usb_strerror());
goto quit;
}
-
+#if 0
if(i2c_tiny_usb_get_status() != STATUS_ADDRESS_ACK) {
printf("no device at address 0x%02x\n", MLX90614_ADDR_2);
goto quit;
}
-
+#endif
{
int tp1, tp2;
@@ -480,16 +484,18 @@
while(1) {
tp1 = i2c_mlx_read_word_with_cmd(MLX90614_ADDR_1, 0x07);
if (tp1 == -1) goto quit;
- tp2 = i2c_mlx_read_word_with_cmd(MLX90614_ADDR_2, 0x07);
+// tp2 = i2c_mlx_read_word_with_cmd(MLX90614_ADDR_2, 0x07);
if (tp2 == -1) goto quit;
if ((tp2 == -2) || (tp2 == -2))
printf("##########\n");
else
- printf("%2.2f°C\n", ((tp1*0.02)-273.15) - ((tp2*0.02)-273.15));
+ printf("%2.2f°C\n", ((tp1*0.02)-273.15));
+// printf("%2.2f°C\n", ((tp1*0.02)-273.15) - ((tp2*0.02)-273.15));
// usleep(20000);
}
}
/* -------- end of mlx90614 client processing --------- */
+#endif
quit:
#ifndef WIN
Modified: paparazzi3/branches/campaign2010/sw/logalizer/ctrlstick.c
===================================================================
--- paparazzi3/branches/campaign2010/sw/logalizer/ctrlstick.c 2010-09-27
20:34:50 UTC (rev 5961)
+++ paparazzi3/branches/campaign2010/sw/logalizer/ctrlstick.c 2010-09-27
21:23:52 UTC (rev 5962)
@@ -21,7 +21,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#define DBG 1
+//#define DBG 1
#include <stdio.h>
#include <stdlib.h>
@@ -44,7 +44,11 @@
#define Bound(_x, _min, _max) { if (_x > _max) _x = _max; else if (_x < _min)
_x = _min; }
+#ifdef DBG
+#define TIMEOUT_PERIOD 200
+#else
#define TIMEOUT_PERIOD 20
+#endif
#define MB_ID 1
@@ -61,14 +65,35 @@
#endif
#if 1
+// Jamara RC Flight Simulator 06 5120/06 5121
+#define AXIS_YAW ABS_X
+#define AXIS_ROLL ABS_RZ
+#define AXIS_THROTTLE ABS_Z
+#define AXIS_PITCH ABS_Y
+
+#define THROTTLE_MIN (75)
+#define THROTTLE_NEUTRAL (0)
+#define THROTTLE_MAX (-77)
+#define ROLL_MIN (99)
+#define ROLL_NEUTRAL (0)
+#define ROLL_MAX (-114)
+#define PITCH_MIN (-113)
+#define PITCH_NEUTRAL (-11)
+#define PITCH_MAX (93)
+#define YAW_MIN (87)
+#define YAW_NEUTRAL (-12)
+#define YAW_MAX (-101)
+#endif
+
+#if 0
// e-sky 0905A simulator fms
//#define AXIS_YAW ABS_X
//#define AXIS_ROLL ABS_Z
//#define AXIS_THROTTLE ABS_RY
//#define AXIS_PITCH ABS_Y
#define AXIS_YAW ABS_RY
-#define AXIS_ROLL ABS_Y
-#define AXIS_THROTTLE ABS_X
+#define AXIS_ROLL ABS_X
+#define AXIS_THROTTLE ABS_Y
#define AXIS_PITCH ABS_Z
#define THROTTLE_MIN (-90)
@@ -107,7 +132,7 @@
/* Global variables about the initialized device */
int device_handle;
-int axis_code[AXIS_COUNT] = {AXIS_ROLL, AXIS_PITCH, AXIS_THROTTLE, AXIS_YAW};
+int axis_code[AXIS_COUNT] = {AXIS_THROTTLE, AXIS_PITCH, AXIS_ROLL, AXIS_YAW};
int axis_min[AXIS_COUNT], axis_max[AXIS_COUNT];
int position[AXIS_COUNT] = {0, 0, 0};
struct ff_effect effect;
@@ -293,6 +318,21 @@
struct input_event event;
static struct timeval time_now;
+ static struct timeval time_bef;
+ static struct timeval time_aft;
+
+ static int cp;
+
+gettimeofday(&time_aft, 0);
+
+if (cp++ > 50)
+{
+cp=0;
+printf("%d\n", time_aft.tv_usec - time_bef.tv_usec);
+}
+
+gettimeofday(&time_bef, 0);
+
/* Get events */
do {
res = read(device_handle,&event,sizeof(event));
@@ -319,16 +359,32 @@
{
dbgprintf(stdout, "pos %d %d %d %d\n", position[0], position[1],
position[2], position[3]);
- if (position[3] > 125) mode = 2;
+ if (position[3] > 119) mode = 2;
else if (position[3] < -125) mode = 1;
else mode = 0;
throttle = ((position[0] - THROTTLE_NEUTRAL -THROTTLE_MIN) * 63) /
(THROTTLE_MAX-THROTTLE_MIN);
Bound(throttle, 0, 63)
roll = position[2] - ROLL_NEUTRAL;
- Bound(roll, -128, 127)
- pitch = position[1] - PITCH_NEUTRAL;
- Bound(pitch, -128, 127)
+ if (roll > 0)
+ {
+ roll = (roll * 127) / (ROLL_MIN+ROLL_NEUTRAL);
+ }
+ else
+ {
+ roll = (roll * 127) / (-ROLL_MAX-ROLL_NEUTRAL);
+ }
+ Bound(roll, -127, 127)
+ pitch = -position[1] + PITCH_NEUTRAL;
+ if (pitch > 0)
+ {
+ pitch = (pitch * 127) / (-PITCH_MIN+PITCH_NEUTRAL);
+ }
+ else
+ {
+ pitch = (pitch * 127) / (PITCH_MAX-PITCH_NEUTRAL);
+ }
+ Bound(pitch, -127, 127)
throttle_mode = (throttle << 2) | mode;
@@ -341,6 +397,7 @@
}
}
+
return 1;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [5962] Add fmi ac.,
Martin Mueller <=