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: David Carlson
Subject: Re: [Paparazzi-devel] Can't get XBee's to work with PPRZ
Date: Wed, 19 Aug 2009 09:19:06 +0300
User-agent: Thunderbird 2.0.0.22 (X11/20090608)

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





reply via email to

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