Difference between revisions of "User/AirborneCodeReorg"
Jump to navigation
Jump to search
Line 53: | Line 53: | ||
<define name="ALT_KALMAN" /> | <define name="ALT_KALMAN" /> | ||
</target> | </target> | ||
<subsystem name="radio_control" type="ppm"/> | <subsystem name="radio_control" type="ppm"/> | ||
<!-- Communication --> | <!-- Communication --> | ||
<subsystem name="telemetry" type="transparent"> | <subsystem name="telemetry" type="transparent"> | ||
<param name="MODEM_BAUD" value="9600"/> | <param name="MODEM_BAUD" value="9600"/> | ||
</subsystem> | </subsystem> | ||
<!-- Actuators --> | <!-- Actuators --> | ||
<subsystem name="actuators" type="4017"/> | <subsystem name="actuators" type="4017"/> | ||
<!-- Sensors --> | <!-- Sensors --> | ||
<subsystem name="gyro"/> | <subsystem name="gyro"/> | ||
Line 69: | Line 65: | ||
<subsystem name="gps" type="ublox_lea4p"/> | <subsystem name="gps" type="ublox_lea4p"/> | ||
<subsystem name="navigation"/> | <subsystem name="navigation"/> | ||
<modules> | <modules> | ||
</modules> | </modules> | ||
</firmware> | </firmware> | ||
But you can also add: | |||
<firmware name="setup"> | <firmware name="setup"> |
Revision as of 04:39, 20 August 2010
This page summarizes the changes needed to switch from the "raw makefile in airframes" to a new "xml only aiframes" syntax
Why
- Because of its growth, paparazzi needs significant reorganization. To make this possible without breaking airframe files, the 'subsystem' idea introduced in booz is now generalized to all airframes using a nicer looking XML structure.
- users are not required to understand Makefile's anymore in order to choose what to compile.
FixedWing
In Brief
The idea is to replace the <makefile> section with a <target> section
Typicaly, replace:
<makefile> CONFIG=\"tiny_2_1_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=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_UART1 -DGPS_LINK=Uart1 -DUART1_BAUD=B38400 ap.CFLAGS += -DGPS_CONFIGURE -DGPS_BAUD=38400 ap.srcs += gps_ubx.c gps.c latlong.c ap.CFLAGS += -DINFRARED ap.srcs += infrared.c estimator.c ap.CFLAGS += -DNAV -DAGR_CLIMB -DLOITER_TRIM -DALT_KALMAN -DWIND_INFO ap.srcs += nav.c fw_h_ctl.c fw_v_ctl.c ap.srcs += nav_line.c nav_survey_rectangle.c </makefile>
with
<firmware name="fixedwing"> <target name="sim" board="pc" > <define name="TRAFFIC_INFO" /> </target> <target name="ap" board="tiny_2.11"> <param name="FLASH_MODE" value="IAP" /> <define name="AGR_CLIMB" /> <define name="LOITER_TRIM" /> <define name="WIND_INFO" /> <define name="TRAFFIC_INFO" /> <define name="ALT_KALMAN" /> </target> <subsystem name="radio_control" type="ppm"/> <subsystem name="telemetry" type="transparent"> <param name="MODEM_BAUD" value="9600"/> </subsystem> <subsystem name="actuators" type="4017"/> <subsystem name="gyro"/> <subsystem name="attitude" type="infrared"/> <subsystem name="gps" type="ublox_lea4p"/> <subsystem name="navigation"/> <modules> </modules> </firmware>
But you can also add:
<firmware name="setup"> <target name="tunnel" board="tiny_2.11" /> <target name="setup_actuators" board="tiny_2.11" /> </firmware>
In details
Let's look in more detail how this is done
The first two lines of the makefile
CONFIG=\"tiny_2_1_1.h\" include $(PAPARAZZI_SRC)/conf/autopilot/tiny.makefile FLASH_MODE=IAP
correspond to this
<target name="fixed_wings" board="tiny_2.11"> <param name="FLASH_MODE" value="IAP"/>
The only field you might want to adapt depending on your configuration is the board one. The list of supported boards is
- "twog_1"
- "tiny_2.11"
- "tiny_2.1"
- "tiny_1.1"
- "tiny_0.99"
- "booz"
- "lisa_l_1.0"
The second line of the target section
<subsystem name="autopilot"/>
brings you most of the autopilot, ie
The third line defines what kind of radio control you'll be using. Fox now fixedwing doesn't have a choice and uses ppm
<subsystem name="radio_control" type="ppm"/>
replaces
ap.CFLAGS += -DRADIO_CONTROL ap.srcs += radio_control.c $(SRC_ARCH)/ppm_hw.c