paparazzi-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Paparazzi-devel] Can't get XBee's to work with PPRZ


From: Maik Höpfel
Subject: Re: [Paparazzi-devel] Can't get XBee's to work with PPRZ
Date: Wed, 19 Aug 2009 10:39:35 +0200

Hello David and dear Paparazzi community,

I hate to say it, but setting the coordinator mode didn't make a
difference. I also reconfirmed that serial really is not working by
resetting the modems to default settings. They can talk to each other,
but not between the TWOG and my computer. FTDI to TWOG still works. I
also tried a baud rate of 57600 (set it in the modems and Paparazzi
center, of course). And again, worked with FTDI, but not with the
modems.

I also tried sending binary files between the modems yesterday, via
echo and cat. That worked to some extent, the files were never quite
the right file size. I'm guessing there's some packet loss or it
interprets some byte sequences as AT commands.

Hope you can help,

Maik


2009/8/19 David Carlson <address@hidden>:
> Maik,
>
> The only thing I can think of is that you need to set one of the XBee units
> to coordinator (usually the ground modem).  This can be done in XCTU or just
> on a serial port by issuing: "+++<enter>", it will say "OK".  Then type
> "ATCE 1<enter>" and "ATWR<enter>".  The only other thing is to make sure
> they are on the same PAN.  This can be queried with  "ATID<enter>" and set
> with "ATID 1234<enter>" or whatever PAN ID you want.
>
> If that doesn't work for you, let me know and we can dig deeper.
>
> Buzz
>
>
> Maik Höpfel wrote:
>>
>> Good evening,
>> I've spent all day trying to get my two XBee Pro 2.4 GHz modules to
>> work with Paparazzi, but failed :( They're the ones CheBuzz sells, so
>> one with a SparkFun USB board, the other one with the LadyAda breakout
>> board.
>>
>> I flashed the newest firmware on them & have them on defaults (9600
>> baud and everything), just a custom network ID. I can send messages
>> back and forth between them, from the same computer or two different
>> ones. One modem is connected with a FTDI cable, obviously.
>>
>> I have the newest Paparazzi version from the repos, and am using the
>> MJ5 A/C with funjet1.xml as aircraft config. I adapted the funjet1.xml
>> to serial communication as described in
>> http://paparazzi.enac.fr/wiki/Airframe_Configuration. That means I
>> changed the DATALINK section and replaced the appropriate makefile
>> part. I changed the baud rate to 9600 bauds and could connect to the
>> TWOG with my SparkFun FTDI cable (the one I used for the modem as
>> well). GCS was working well, I could move waypoints and it seems to
>> have uploaded them.
>> Then I hooked up the modem. I'm pretty sure I did it right, because I
>> used the same cable between TWOG to modem as I did for TWOG to FTDI
>> breakout board. The green LED blinks, so it all seems well. The other
>> modem even flashes the RX led, and I do get a few scrambled characters
>> every now and then when I listen in to the serial communication. But
>> the GCS does not react, it just stays grey. When I write on the serial
>> line, the receiving modem lights up the RSS light, which it also does
>> when it's receiving something.
>>
>> I then commented out the "XBEE INIT" part in the funjet1.xml config,
>> guessing that that might mess up things. I also toyed with the
>> XBEE_NO_INIT flag, but to no avail. No reaction from the GCS.
>>
>> I then figured I might try the MaxStream API mode. So I reverted the
>> funjet1.xml to its original state and tried connecting. But again, I
>> did not get a reaction from the GCS. Am I right in assuming that PPRZ
>> changes the settings on both XBees to API mode? The XBEE_INIT string
>> seems to suggest that, as well as that the ground modem was in API
>> mode after I started a Flight @ MaxBee ... session. I'm not sure that
>> I tried every possible combination there, but it seems to be that API
>> mode is not the recommended way to go anyhow if I'm getting started.
>>
>> So I'm completely at loss, and am hoping I'm missing something
>> obvious. I'm very new to Paparazzi, so that could absolutely be the
>> case.
>>
>> I powered the TWOG both from a 5V supply (which is not ideal, I know -
>> but so convenient) and a 3S LiPo battery. I also checked for error
>> messages, but there were none. When there's no reaction from the GCS,
>> the data logs for that session are empty as well. And of course I
>> reflashed the TWOG in between my different tries.
>>
>> - Maik
>>
>> I'm appending the two configs used:
>>
>> ===================== My try with serial communication
>> <!DOCTYPE airframe SYSTEM "airframe.dtd">
>>
>> <!-- Funjet Multiplex (http://www.multiplex-rc.de/)
>>     Tiny 2.1 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)
>>     Radiotronix modem
>>     Digital camera
>> -->
>>
>> <airframe name="Funjet 1 Tiny 2.1">
>>
>>  <modules>
>>    <load name="poles.xml"/>
>>  </modules>
>>
>> <!-- commands section -->
>>  <servos>
>>    <servo name="MOTOR"         no="0" min="1000" neutral="1000"
>> max="2000"/>
>>    <servo name="AILEVON_LEFT"  no="2" min="1130" neutral="1575"
>> max="1880"/>
>>    <servo name="AILEVON_RIGHT" no="6" min="1980" neutral="1465"
>> max="1170"/>
>>  </servos>
>>
>>  <commands>
>>    <axis name="THROTTLE" failsafe_value="0"/>
>>    <axis name="ROLL"     failsafe_value="0"/>
>>    <axis name="PITCH"    failsafe_value="0"/>
>>    <axis name="HATCH"    failsafe_value="0"/>
>>  </commands>
>>
>>  <rc_commands>
>>    <set command="THROTTLE" value="@THROTTLE"/>
>>    <set command="ROLL"     value="@ROLL"/>
>>    <set command="PITCH"    value="@PITCH"/>
>>  </rc_commands>
>>
>>  <section name="MIXER">
>>    <define name="AILEVON_AILERON_RATE" value="0.75"/>
>>    <define name="AILEVON_ELEVATOR_RATE" value="0.75"/>
>>  </section>
>>
>>  <command_laws>
>>    <let var="aileron"  value="@ROLL  * AILEVON_AILERON_RATE"/>
>>    <let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
>>    <set servo="MOTOR"           value="@THROTTLE"/>
>>    <set servo="AILEVON_LEFT"  value="$elevator + $aileron"/>
>>    <set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
>>  </command_laws>
>>
>>  <section name="AUTO1" prefix="AUTO1_">
>>    <define name="MAX_ROLL" value="0.85"/>
>>    <define name="MAX_PITCH" value="0.6"/>
>>  </section>
>>
>>  <section name="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"/>
>>
>>    <define name="GYRO_ROLL" value="ADC_3"/>
>>    <define name="GYRO_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="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="IR2_SIGN" value="-1"/>
>>    <define name="TOP_SIGN" value="-1"/>
>>
>>    <define name="ROLL_NEUTRAL_DEFAULT" value="-3.6" unit="deg"/>
>>    <define name="PITCH_NEUTRAL_DEFAULT" value="17" unit="deg"/>
>>
>>    <define name="CORRECTION_UP" value="1."/>
>>    <define name="CORRECTION_DOWN" value="1."/>
>>    <define name="CORRECTION_LEFT" value="1."/>
>>    <define name="CORRECTION_RIGHT" value="1."/>
>>  </section>
>>
>>  <section name="GYRO" prefix="GYRO_">
>>    <define name="ADC_ROLL_NEUTRAL" value="520"/>
>>    <define name="ADC_TEMP_NEUTRAL" value="476"/>
>>    <define name="ADC_TEMP_SLOPE" value="0"/>
>>    <define name="DYNAMIC_RANGE" value="300" unit="deg/s"/>
>>    <define name="ADXRS300_RESISTOR_BRIDGE" value="(3.3/(3.3+1.8))"/>
>>    <define name="ADXRS300_SENSITIVITY" value="5" unit="mV/(deg/s)"/>
>>    <define name="ROLL_SCALE"
>>
>> value="3.3*1000./1024./(GYRO_ADXRS300_SENSITIVITY*GYRO_ADXRS300_RESISTOR_BRIDGE)"
>> unit="deg/s/adc_unit"/>
>>    <define name="ROLL_DIRECTION" value="-1."/>
>>  </section>
>>
>>  <section name="BAT">
>>    <define name="MILLIAMP_AT_FULL_THROTTLE" value="2000"/>
>>
>>    <define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
>>  </section>
>>
>>  <section name="MISC">
>>    <define name="MINIMUM_AIRSPEED" value="12." unit="m/s"/>
>>    <define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
>>    <define name="MAXIMUM_AIRSPEED" value="25." 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="TRUE"/>
>>
>>    <define name="TRIGGER_DELAY" value="1."/>
>>    <define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
>>    <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.04"/>
>>    <!-- outer loop saturation -->
>>    <define name="ALTITUDE_MAX_CLIMB" value="2."/>
>>
>>    <!-- auto throttle inner loop -->
>>    <define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.35"/>
>>    <define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
>>    <define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.80"/>
>>    <define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
>>    <define name="AUTO_THROTTLE_DASH_TRIM" value="-1000"/>
>>    <define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.1"
>> unit="%/(m/s)"/>
>>    <define name="AUTO_THROTTLE_PGAIN" value="-0.02"/>
>>    <define name="AUTO_THROTTLE_IGAIN" value="0.1"/>
>>    <define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.1"/>
>>
>>    <!-- auto pitch inner loop -->
>>    <define name="AUTO_PITCH_PGAIN" value="-0.05"/>
>>    <define name="AUTO_PITCH_IGAIN" value="0.075"/>
>>    <define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
>>    <define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
>>
>>   <define name="THROTTLE_SLEW" value="0.5"/>
>>
>>  </section>
>>
>>  <section name="HORIZONTAL CONTROL" prefix="H_CTL_">
>>    <define name="COURSE_PGAIN" value="-0.8"/>
>>
>>    <define name="ROLL_MAX_SETPOINT" value="0.7" unit="radians"/>
>>    <define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
>>    <define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
>>
>>    <define name="PITCH_PGAIN" value="-10000."/>
>>    <define name="PITCH_DGAIN" value="1.5"/>
>>
>>    <define name="ELEVATOR_OF_ROLL" value="2500"/>
>>
>>    <define name="ROLL_ATTITUDE_GAIN" value="-7500"/>
>>    <define name="ROLL_RATE_GAIN" value="-1500"/>
>>
>>    <define name="ROLL_KFF" value="-500"/>
>>    <define name="ROLL_IGAIN" value="-500"/>
>>    <define name="PITCH_IGAIN" value="-500"/>
>>  </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="20"/><!-- Altitude Error to
>> Initiate Aggressive Climb CANNOT BE ZERO!!-->
>>    <define name="BLEND_END" value="10"/><!-- Altitude Error to Blend
>> Aggressive to Regular Climb Modes  CANNOT BE ZERO!!-->
>>    <define name="CLIMB_THROTTLE" value="0.6"/><!-- Gaz for Aggressive
>> Climb -->
>>    <define name="CLIMB_PITCH" value="0.20"/><!-- Pitch for Aggressive
>> Climb -->
>>    <define name="DESCENT_THROTTLE" value="0.1"/><!-- Gaz for
>> Aggressive Decent -->
>>    <define name="DESCENT_PITCH" value="-0.15"/><!-- 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="GYRO_GAINS">
>>    <define name="GYRO_MAX_RATE" value="200."/>
>>    <define name="ROLLRATESUM_NB_SAMPLES" value="64"/>
>>    <define name="ALT_ROLL__PGAIN" value="1.0"/>
>>    <define name="ROLL_RATE_PGAIN" value="1000.0"/>
>>    <define name="ROLL_RATE_IGAIN" value="0.0"/>
>>    <define name="ROLL_RATE_DGAIN" value="0.0"/>
>>  </section>
>>
>>  <section name="FAILSAFE" prefix="FAILSAFE_">
>>        <define name="DELAY_WITHOUT_GPS" value="1" 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="PPRZ"/>
>>    <define name="DEVICE_ADDRESS" value="...."/>
>>  </section>
>>
>>
>>  <section name="Digital camera telecommand">
>>    <!-- IOs are seen as LEDs -->
>>
>>    <define name="LED_6_BANK" value="0"/>
>>    <define name="LED_6_PIN" value="2"/> <!-- I2C SCL -->
>>
>>    <!-- ADC 5 -->
>>    <define name="LED_7_BANK" value="0"/>
>>    <define name="LED_7_PIN" value="3"/> <!-- I2C SDA -->
>>
>>    <define name="DC_SHUTTER_LED" value="6"/> <!-- Grey wire -->
>>    <define name="DC_ZOOM_LED" value="7"/>
>>  </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
>>
>> # Serial modem
>> 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
>>
>>
>> #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 -DUSE_ADC_3
>> ap.srcs += $(SRC_ARCH)/adc_hw.c
>>
>> ap.CFLAGS += -DGPS -DUBX -DUSE_UART0 -DGPS_LINK=Uart0 -DUART0_BAUD=B38400
>> # -DGPS_LED=2
>> ap.srcs += gps_ubx.c gps.c latlong.c
>>
>> ap.CFLAGS += -DINFRARED -DALT_KALMAN
>> ap.srcs += infrared.c estimator.c
>>
>> ap.CFLAGS += -DNAV -DAGR_CLIMB -DLOITER_TRIM
>> ap.srcs += nav.c fw_h_ctl_a.c fw_v_ctl.c
>>
>>
>> ap.CFLAGS += -DGYRO -DADXRS150
>> ap.srcs += gyro.c nav_line.c
>> ap.srcs += nav_survey_rectangle.c
>> # chemotaxis.c anemotaxis.c discsurvey.c
>>
>> ########## Barometer (SPI)
>> #ap.CFLAGS += -DUSE_SPI -DSPI_MASTER -DUSE_SPI_SLAVE0 -DUSE_BARO_MS5534A
>> #ap.srcs += spi.c $(SRC_ARCH)/spi_hw.c $(SRC_ARCH)/baro_MS5534A.c
>>
>> ########## Chemo sensor (I2C)
>> #ap.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
>> #ap.CFLAGS += -DUSE_I2C -DUSE_I2C0
>>
>> # Digital camera
>> # Shutter: I2C SCL
>> # Zoom: I2C SDA
>> ap.CFLAGS += -DDIGITAL_CAM
>> ap.srcs += dc.c
>>
>> ap.CFLAGS += -DUSE_MODULES
>> sim.CFLAGS += -DUSE_MODULES
>>
>> # Config for SITL simulation
>> #include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
>> sim.ARCHDIR = $(ARCHI)
>> sim.ARCH = sitl
>> sim.TARGET = autopilot
>> sim.TARGETDIR = autopilot
>> sim.CFLAGS += -DSITL -DAP -DFBW -DRADIO_CONTROL -DINTER_MCU -DDOWNLINK
>> -DDOWNLINK_TRANSPORT=IvyTransport -DINFRARED -DNAV -DLED -DWIND_INFO
>> sim.srcs = latlong.c radio_control.c downlink.c commands.c gps.c
>> inter_mcu.c infrared.c fw_h_ctl_a.c fw_v_ctl.c nav.c estimator.c
>> sys_time.c main_fbw.c main_ap.c datalink.c $(SRC_ARCH)/ppm_hw.c
>> $(SRC_ARCH)/sim_gps.c $(SRC_ARCH)/sim_ir.c $(SRC_ARCH)/sim_ap.c
>> $(SRC_ARCH)/ivy_transport.c $(SRC_ARCH)/sim_adc_generic.c
>> $(SRC_ARCH)/led_hw.c
>>
>> sim.CFLAGS += -DBOARD_CONFIG=\"tiny.h\" -DAGR_CLIMB -DLOITER_TRIM
>> -DALT_KALMAN
>>
>> sim.srcs += nav_line.c nav_survey_rectangle.c
>> # -DENOSE
>> #sim.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
>> #sim.CFLAGS += -DUSE_I2C -DUSE_I2C0
>> # chemotaxis.c anemotaxis.c discsurvey.c $(SRC_ARCH)/sim_enose.c
>> chemo_detect.c
>>
>> sim.CFLAGS += -DDIGITAL_CAM -DPOWER_SWITCH_LED=4
>> sim.srcs += dc.c
>>
>>
>>
>> # a test program to setup actuators
>> setup_actuators.ARCHDIR = $(ARCHI)
>> setup_actuators.ARCH = arm7tdmi
>> setup_actuators.TARGET = setup_actuators
>> setup_actuators.TARGETDIR = setup_actuators
>>
>> setup_actuators.CFLAGS += -DFBW -DBOARD_CONFIG=\"tiny.h\" -DLED
>> -DTIME_LED=1 -DACTUATORS=\"servos_4015_hw.h\" -DSERVOS_4015
>> -DUSE_UART1 -DUART1_BAUD=B9600 -DDATALINK=PPRZ -DPPRZ_UART=Uart1
>> setup_actuators.srcs += sys_time.c $(SRC_ARCH)/sys_time_hw.c
>> $(SRC_ARCH)/armVIC.c pprz_transport.c setup_actuators.c
>> $(SRC_ARCH)/uart_hw.c $(SRC_ARCH)/servos_4015_hw.c main.c
>>
>>  </makefile>
>> </airframe>
>>
>> ===================== My try with MaxStream API mode
>> <!DOCTYPE airframe SYSTEM "airframe.dtd">
>>
>> <!-- Funjet Multiplex (http://www.multiplex-rc.de/)
>>     Tiny 2.1 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)
>>     Radiotronix modem
>>     Digital camera
>> -->
>>
>> <airframe name="Funjet 1 Tiny 2.1">
>>
>>  <modules>
>>    <load name="poles.xml"/>
>>  </modules>
>>
>> <!-- commands section -->
>>  <servos>
>>    <servo name="MOTOR"         no="0" min="1000" neutral="1000"
>> max="2000"/>
>>    <servo name="AILEVON_LEFT"  no="2" min="1130" neutral="1575"
>> max="1880"/>
>>    <servo name="AILEVON_RIGHT" no="6" min="1980" neutral="1465"
>> max="1170"/>
>>  </servos>
>>
>>  <commands>
>>    <axis name="THROTTLE" failsafe_value="0"/>
>>    <axis name="ROLL"     failsafe_value="0"/>
>>    <axis name="PITCH"    failsafe_value="0"/>
>>    <axis name="HATCH"    failsafe_value="0"/>
>>  </commands>
>>
>>  <rc_commands>
>>    <set command="THROTTLE" value="@THROTTLE"/>
>>    <set command="ROLL"     value="@ROLL"/>
>>    <set command="PITCH"    value="@PITCH"/>
>>  </rc_commands>
>>
>>  <section name="MIXER">
>>    <define name="AILEVON_AILERON_RATE" value="0.75"/>
>>    <define name="AILEVON_ELEVATOR_RATE" value="0.75"/>
>>  </section>
>>
>>  <command_laws>
>>    <let var="aileron"  value="@ROLL  * AILEVON_AILERON_RATE"/>
>>    <let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
>>    <set servo="MOTOR"           value="@THROTTLE"/>
>>    <set servo="AILEVON_LEFT"  value="$elevator + $aileron"/>
>>    <set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
>>  </command_laws>
>>
>>  <section name="AUTO1" prefix="AUTO1_">
>>    <define name="MAX_ROLL" value="0.85"/>
>>    <define name="MAX_PITCH" value="0.6"/>
>>  </section>
>>
>>  <section name="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"/>
>>
>>    <define name="GYRO_ROLL" value="ADC_3"/>
>>    <define name="GYRO_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="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="IR2_SIGN" value="-1"/>
>>    <define name="TOP_SIGN" value="-1"/>
>>
>>    <define name="ROLL_NEUTRAL_DEFAULT" value="-3.6" unit="deg"/>
>>    <define name="PITCH_NEUTRAL_DEFAULT" value="17" unit="deg"/>
>>
>>    <define name="CORRECTION_UP" value="1."/>
>>    <define name="CORRECTION_DOWN" value="1."/>
>>    <define name="CORRECTION_LEFT" value="1."/>
>>    <define name="CORRECTION_RIGHT" value="1."/>
>>  </section>
>>
>>  <section name="GYRO" prefix="GYRO_">
>>    <define name="ADC_ROLL_NEUTRAL" value="520"/>
>>    <define name="ADC_TEMP_NEUTRAL" value="476"/>
>>    <define name="ADC_TEMP_SLOPE" value="0"/>
>>    <define name="DYNAMIC_RANGE" value="300" unit="deg/s"/>
>>    <define name="ADXRS300_RESISTOR_BRIDGE" value="(3.3/(3.3+1.8))"/>
>>    <define name="ADXRS300_SENSITIVITY" value="5" unit="mV/(deg/s)"/>
>>    <define name="ROLL_SCALE"
>>
>> value="3.3*1000./1024./(GYRO_ADXRS300_SENSITIVITY*GYRO_ADXRS300_RESISTOR_BRIDGE)"
>> unit="deg/s/adc_unit"/>
>>    <define name="ROLL_DIRECTION" value="-1."/>
>>  </section>
>>
>>  <section name="BAT">
>>    <define name="MILLIAMP_AT_FULL_THROTTLE" value="2000"/>
>>
>>    <define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
>>  </section>
>>
>>  <section name="MISC">
>>    <define name="MINIMUM_AIRSPEED" value="12." unit="m/s"/>
>>    <define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
>>    <define name="MAXIMUM_AIRSPEED" value="25." 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="TRUE"/>
>>
>>    <define name="TRIGGER_DELAY" value="1."/>
>>    <define name="DEFAULT_CIRCLE_RADIUS" value="80."/>
>>    <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.04"/>
>>    <!-- outer loop saturation -->
>>    <define name="ALTITUDE_MAX_CLIMB" value="2."/>
>>
>>    <!-- auto throttle inner loop -->
>>    <define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.35"/>
>>    <define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
>>    <define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.80"/>
>>    <define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
>>    <define name="AUTO_THROTTLE_DASH_TRIM" value="-1000"/>
>>    <define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.1"
>> unit="%/(m/s)"/>
>>    <define name="AUTO_THROTTLE_PGAIN" value="-0.02"/>
>>    <define name="AUTO_THROTTLE_IGAIN" value="0.1"/>
>>    <define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.1"/>
>>
>>    <!-- auto pitch inner loop -->
>>    <define name="AUTO_PITCH_PGAIN" value="-0.05"/>
>>    <define name="AUTO_PITCH_IGAIN" value="0.075"/>
>>    <define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
>>    <define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>
>>
>>   <define name="THROTTLE_SLEW" value="0.5"/>
>>
>>  </section>
>>
>>  <section name="HORIZONTAL CONTROL" prefix="H_CTL_">
>>    <define name="COURSE_PGAIN" value="-0.8"/>
>>
>>    <define name="ROLL_MAX_SETPOINT" value="0.7" unit="radians"/>
>>    <define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
>>    <define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>
>>
>>    <define name="PITCH_PGAIN" value="-10000."/>
>>    <define name="PITCH_DGAIN" value="1.5"/>
>>
>>    <define name="ELEVATOR_OF_ROLL" value="2500"/>
>>
>>    <define name="ROLL_ATTITUDE_GAIN" value="-7500"/>
>>    <define name="ROLL_RATE_GAIN" value="-1500"/>
>>
>>    <define name="ROLL_KFF" value="-500"/>
>>    <define name="ROLL_IGAIN" value="-500"/>
>>    <define name="PITCH_IGAIN" value="-500"/>
>>  </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="20"/><!-- Altitude Error to
>> Initiate Aggressive Climb CANNOT BE ZERO!!-->
>>    <define name="BLEND_END" value="10"/><!-- Altitude Error to Blend
>> Aggressive to Regular Climb Modes  CANNOT BE ZERO!!-->
>>    <define name="CLIMB_THROTTLE" value="0.6"/><!-- Gaz for Aggressive
>> Climb -->
>>    <define name="CLIMB_PITCH" value="0.20"/><!-- Pitch for Aggressive
>> Climb -->
>>    <define name="DESCENT_THROTTLE" value="0.1"/><!-- Gaz for
>> Aggressive Decent -->
>>    <define name="DESCENT_PITCH" value="-0.15"/><!-- 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="GYRO_GAINS">
>>    <define name="GYRO_MAX_RATE" value="200."/>
>>    <define name="ROLLRATESUM_NB_SAMPLES" value="64"/>
>>    <define name="ALT_ROLL__PGAIN" value="1.0"/>
>>    <define name="ROLL_RATE_PGAIN" value="1000.0"/>
>>    <define name="ROLL_RATE_IGAIN" value="0.0"/>
>>    <define name="ROLL_RATE_DGAIN" value="0.0"/>
>>  </section>
>>
>>  <section name="FAILSAFE" prefix="FAILSAFE_">
>>        <define name="DELAY_WITHOUT_GPS" value="1" 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="Digital camera telecommand">
>>    <!-- IOs are seen as LEDs -->
>>
>>    <define name="LED_6_BANK" value="0"/>
>>    <define name="LED_6_PIN" value="2"/> <!-- I2C SCL -->
>>
>>    <!-- ADC 5 -->
>>    <define name="LED_7_BANK" value="0"/>
>>    <define name="LED_7_PIN" value="3"/> <!-- I2C SDA -->
>>
>>    <define name="DC_SHUTTER_LED" value="6"/> <!-- Grey wire -->
>>    <define name="DC_ZOOM_LED" value="7"/>
>>  </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=B9600
>> 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 -DUSE_ADC_3
>> ap.srcs += $(SRC_ARCH)/adc_hw.c
>>
>> ap.CFLAGS += -DGPS -DUBX -DUSE_UART0 -DGPS_LINK=Uart0 -DUART0_BAUD=B38400
>> # -DGPS_LED=2
>> ap.srcs += gps_ubx.c gps.c latlong.c
>>
>> ap.CFLAGS += -DINFRARED -DALT_KALMAN
>> ap.srcs += infrared.c estimator.c
>>
>> ap.CFLAGS += -DNAV -DAGR_CLIMB -DLOITER_TRIM
>> ap.srcs += nav.c fw_h_ctl_a.c fw_v_ctl.c
>>
>>
>> ap.CFLAGS += -DGYRO -DADXRS150
>> ap.srcs += gyro.c nav_line.c
>> ap.srcs += nav_survey_rectangle.c
>> # chemotaxis.c anemotaxis.c discsurvey.c
>>
>> ########## Barometer (SPI)
>> #ap.CFLAGS += -DUSE_SPI -DSPI_MASTER -DUSE_SPI_SLAVE0 -DUSE_BARO_MS5534A
>> #ap.srcs += spi.c $(SRC_ARCH)/spi_hw.c $(SRC_ARCH)/baro_MS5534A.c
>>
>> ########## Chemo sensor (I2C)
>> #ap.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
>> #ap.CFLAGS += -DUSE_I2C -DUSE_I2C0
>>
>> # Digital camera
>> # Shutter: I2C SCL
>> # Zoom: I2C SDA
>> ap.CFLAGS += -DDIGITAL_CAM
>> ap.srcs += dc.c
>>
>> ap.CFLAGS += -DUSE_MODULES
>> sim.CFLAGS += -DUSE_MODULES
>>
>> # Config for SITL simulation
>> #include $(PAPARAZZI_SRC)/conf/autopilot/sitl.makefile
>> sim.ARCHDIR = $(ARCHI)
>> sim.ARCH = sitl
>> sim.TARGET = autopilot
>> sim.TARGETDIR = autopilot
>> sim.CFLAGS += -DSITL -DAP -DFBW -DRADIO_CONTROL -DINTER_MCU -DDOWNLINK
>> -DDOWNLINK_TRANSPORT=IvyTransport -DINFRARED -DNAV -DLED -DWIND_INFO
>> sim.srcs = latlong.c radio_control.c downlink.c commands.c gps.c
>> inter_mcu.c infrared.c fw_h_ctl_a.c fw_v_ctl.c nav.c estimator.c
>> sys_time.c main_fbw.c main_ap.c datalink.c $(SRC_ARCH)/ppm_hw.c
>> $(SRC_ARCH)/sim_gps.c $(SRC_ARCH)/sim_ir.c $(SRC_ARCH)/sim_ap.c
>> $(SRC_ARCH)/ivy_transport.c $(SRC_ARCH)/sim_adc_generic.c
>> $(SRC_ARCH)/led_hw.c
>>
>> sim.CFLAGS += -DBOARD_CONFIG=\"tiny.h\" -DAGR_CLIMB -DLOITER_TRIM
>> -DALT_KALMAN
>>
>> sim.srcs += nav_line.c nav_survey_rectangle.c
>> # -DENOSE
>> #sim.srcs += i2c.c $(SRC_ARCH)/i2c_hw.c
>> #sim.CFLAGS += -DUSE_I2C -DUSE_I2C0
>> # chemotaxis.c anemotaxis.c discsurvey.c $(SRC_ARCH)/sim_enose.c
>> chemo_detect.c
>>
>> sim.CFLAGS += -DDIGITAL_CAM -DPOWER_SWITCH_LED=4
>> sim.srcs += dc.c
>>
>>
>>
>> # a test program to setup actuators
>> setup_actuators.ARCHDIR = $(ARCHI)
>> setup_actuators.ARCH = arm7tdmi
>> setup_actuators.TARGET = setup_actuators
>> setup_actuators.TARGETDIR = setup_actuators
>>
>> setup_actuators.CFLAGS += -DFBW -DBOARD_CONFIG=\"tiny.h\" -DLED
>> -DTIME_LED=1 -DACTUATORS=\"servos_4015_hw.h\" -DSERVOS_4015
>> -DUSE_UART1 -DUART1_BAUD=B9600 -DDATALINK=PPRZ -DPPRZ_UART=Uart1
>> setup_actuators.srcs += sys_time.c $(SRC_ARCH)/sys_time_hw.c
>> $(SRC_ARCH)/armVIC.c pprz_transport.c setup_actuators.c
>> $(SRC_ARCH)/uart_hw.c $(SRC_ARCH)/servos_4015_hw.c main.c
>>
>>  </makefile>
>> </airframe>
>>
>>
>> _______________________________________________
>> Paparazzi-devel mailing list
>> address@hidden
>> http://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>>
>
>
>
> _______________________________________________
> Paparazzi-devel mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/paparazzi-devel
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]