Difference between revisions of "Autopilots"

From PaparazziUAV
Jump to navigation Jump to search
Line 42: Line 42:
{| border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="100%"
{| border="1" cellspacing="0" style="text-align:center" cellpadding="2%" width="100%"
|+'''Autopilot<sup>1</sup> Feature Matrix'''
|+'''Autopilot<sup>1</sup> Feature Matrix'''
| align="center" width="15%" style="background:#f0f0f0;"|'''Feature'''
| align="center" width="12%" style="background:#f0f0f0;"|'''Feature'''
| align="center" width="14%" style="background:#f0f0f0;"|'''[[Lisa/L|Lisa/L v1.1]]'''
| align="center" width="11%" style="background:#f0f0f0;"|'''[[Lisa/L|Lisa/L v1.1]]'''
| align="center" width="14%" style="background:#f0f0f0;"|'''[[Lisa/M_v20|Lisa/M v2.0]]'''
| align="center" width="11%" style="background:#f0f0f0;"|'''[[Lisa/M_v20|Lisa/M v2.0]]'''
| align="center" width="14%" style="background:#f0f0f0;"|'''[[Umarim_v10|Umarim v1.0]]'''
| align="center" width="11%" style="background:#f0f0f0;"|'''[[Umarim_v10|Umarim v1.0]]'''
| align="center" width="14%" style="background:#f0f0f0;"|'''[[Tiny/v2.11|Tiny v2.11]]'''
| align="center" width="11%" style="background:#f0f0f0;"|'''[[Umarim_Lite_v2|Umarim Lite v2]]'''
| align="center" width="14%" style="background:#f0f0f0;"|'''[[TWOG/v1.0|TWOG v1.0]]'''
| align="center" width="11%" style="background:#f0f0f0;"|'''[[NavGo_v3|NavGo v3]]'''
| align="center" width="11%" style="background:#f0f0f0;"|'''[[Tiny/v2.11|Tiny v2.11]]'''
| align="center" width="11%" style="background:#f0f0f0;"|'''[[TWOG/v1.0|TWOG v1.0]]'''
| align="center" style="background:#f0f0f0;"|'''[[YAPA/v2.0|YAPA v2.0]]'''
| align="center" style="background:#f0f0f0;"|'''[[YAPA/v2.0|YAPA v2.0]]'''
|-
|-
|style="background:#f0f0f0;"| || align="center" colspan="6"|'''MCU'''
|style="background:#f0f0f0;"| || align="center" colspan="8"|'''MCU'''
|-
|-
| style="background:#f0f0f0;"|'''Part'''||STM32F103RE||STM32F105RCT6||LPC2148||LPC2148||LPC2148||LPC2148
| style="background:#f0f0f0;"|'''Part'''||STM32F103RE||STM32F105RCT6||LPC2148||LPC2148||LPC2148||LPC2148||LPC2148||LPC2148
|-
|-
| style="background:#f0f0f0;"|'''Clock'''||72MHz||72MHz||60MHz||60MHz||60MHz||60MHz
| style="background:#f0f0f0;"|'''Clock'''||72MHz||72MHz||60MHz||60MHz||60MHz||60MHz||60MHz||60MHz
|-
|-
| style="background:#f0f0f0;"|'''Flash'''||512kB||256kB||512kB||512kB||512kB||512kB
| style="background:#f0f0f0;"|'''Flash'''||512kB||256kB||512kB||512kB||512kB||512kB||512kB||512kB
|-
|-
| style="background:#f0f0f0;"|'''RAM<sup>2</sup>'''||64kB||64kB||32kB & 8kB||32kB & 8kB||32kB & 8kB||32kB & 8kB
| style="background:#f0f0f0;"|'''RAM<sup>2</sup>'''||64kB||64kB||32kB & 8kB||32kB & 8kB||32kB & 8kB||32kB & 8kB||32kB & 8kB||32kB & 8kB
|-
|-
|style="background:#f0f0f0;"| || align="center" colspan="6"|'''Onboard Sensors<sup>3</sup>'''
|style="background:#f0f0f0;"| || align="center" colspan="8"|'''Onboard Sensors<sup>3</sup>'''
|-
|-
| style="background:#f0f0f0;"|'''MEMS IMU'''||no||aspirin||yes||no||no||no
| style="background:#f0f0f0;"|'''MEMS IMU'''||no||aspirin||yes||yes||yes||no||no||no
|-
|-
| style="background:#f0f0f0;"|'''Baro'''||yes||yes||yes||no||no||no
| style="background:#f0f0f0;"|'''Magnetometer'''|| || ||no||no||yes||no||no||no
|-
|-
| style="background:#f0f0f0;"|'''Diff Pressure'''||yes||no||no||no||no||no
| style="background:#f0f0f0;"|'''Barometer'''||yes||yes||yes||no||yes||no||no||no
|-
|-
| style="background:#f0f0f0;"|'''GPS'''||no||no||no||yes||no||no
| style="background:#f0f0f0;"|'''Diff Pressure'''||yes||no||no||no||no||no||no||no
|-
|-
|style="background:#f0f0f0;"| || align="center" colspan="6"|'''Input/Output<sup>4</sup>'''
| style="background:#f0f0f0;"|'''GPS'''||no||no||no||no||no||yes||no||no
|-
|-
| style="background:#f0f0f0;"|'''UART'''||3 & 1RX||2 & 2RX||2||1||2||2
|style="background:#f0f0f0;"| || align="center" colspan="8"|'''Input/Output<sup>4</sup>'''
|-
|-
| style="background:#f0f0f0;"|'''I2C'''||2||1 + 1<sup>5</sup>||2||1||1||1
| style="background:#f0f0f0;"|'''UART'''||3 & 1RX||2 & 2RX||2||2|| ||1||2||2
|-
|-
| style="background:#f0f0f0;"|'''SPI'''||2||1||1||1||1||1
| style="background:#f0f0f0;"|'''I2C'''||2||1 + 1<sup>5</sup>||2||2||2||1||1||1
|-
|-
| style="background:#f0f0f0;"|'''ADC'''||3 (12bit)||3 + 2 (12bit)<sup>5</sup>||0 + 4 (10bit)<sup>6</sup>||8 (10bit)||8 (10bit)||6 (10bit)
| style="background:#f0f0f0;"|'''SPI'''||2||1||1||1||1||1||1||1
|-
|-
| style="background:#f0f0f0;"|'''PWM'''||6||6 + 2<sup>5</sup>||6||8||8||10
| style="background:#f0f0f0;"|'''ADC'''||3 (12bit)||3 + 2 (12bit)<sup>5</sup>||0 + 4 (10bit)<sup>6</sup>|| || ||8 (10bit)||8 (10bit)||6 (10bit)
|-
|-
| style="background:#f0f0f0;"|'''PPM Output'''||no||no||1||1||1||no
| style="background:#f0f0f0;"|'''PWM'''||6||6 + 2<sup>5</sup>||6|| || ||8||8||10
|-
|-
| style="background:#f0f0f0;"|'''PPM Capture'''||1||0 + 1<sup>5</sup>||1||1||1||1
| style="background:#f0f0f0;"|'''PPM Output'''||no||no||1|| || ||1||1||no
|-
|-
| style="background:#f0f0f0;"|'''GPIO<sup>7</sup>'''||?||1||0 + 4<sup>6</sup>||2||2||1
| style="background:#f0f0f0;"|'''PPM Capture'''||1||0 + 1<sup>5</sup>||1||1||1||1||1||1
|-
|-
| style="background:#f0f0f0;"|'''Onboard LEDs'''||8||5||2||3||3||3
| style="background:#f0f0f0;"|'''GPIO<sup>7</sup>'''||?||1||0 + 4<sup>6</sup>|| || ||2||2||1
|-
|-
| style="background:#f0f0f0;"|'''USB Peripheral'''||Onboard USB JTAG + UART||bootloader||bootloader||bootloader||bootloader||bootloader
| style="background:#f0f0f0;"|'''Onboard LEDs'''||8||5||2||2||4||3||3||3
|-
|-
| style="background:#f0f0f0;"|'''CAN'''||1||1||no||no||no||no
| style="background:#f0f0f0;"|'''USB Peripheral'''||Onboard USB JTAG + UART||bootloader||bootloader||bootloader||bootloader||bootloader||bootloader||bootloader
|-
|-
| style="background:#f0f0f0;"|'''Other'''||Overo w/ I/O incl. USB Host||Aspirin footprint, JTAG header||||||||XBee connector, RS232 options
| style="background:#f0f0f0;"|'''CAN'''||1||1||no||no||no||no||no||no
|-
|-
|style="background:#f0f0f0;"| || align="center" colspan="6"|'''Power Management'''
| style="background:#f0f0f0;"|'''Other'''||Overo w/ I/O incl. USB Host||Aspirin footprint, JTAG header|| || || || || ||XBee connector, RS232 options
|-
|-
| style="background:#f0f0f0;"|'''Supply Input'''||6.1V - 18V||5V - 16V||5.5V - 17V||6.1V - 18V||6.1V - 18V||6.1V - 18V
|style="background:#f0f0f0;"| || align="center" colspan="8"|'''Power Management'''
|-
|-
| style="background:#f0f0f0;"|'''Supply Output'''||2.25@5V, 2.25A@3.3V, Other||500mA@3.3V, 250mA@5V||1A@3.3V, 1.5A@5V||1A@3.3V, 2.25A@5V||1A@3.3V, 2.25A@5V||2x 1A@3.3V, 2.25A@5V
| style="background:#f0f0f0;"|'''Supply Input'''||6.1V - 18V||5V - 16V||5.5V - 17V||5.5V - 17V||5.5V - 16V||6.1V - 18V||6.1V - 18V||6.1V - 18V
|-
|-
| style="background:#f0f0f0;"|'''Software Switch'''||2||no||no||1||1||1
| style="background:#f0f0f0;"|'''Supply Output'''||2.25@5V, 2.25A@3.3V, Other||500mA@3.3V, 250mA@5V||1A@3.3V, 1.5A@5V||1A@3.3V, 1.5A@5V||1A@3.3V, 1.5A@5V||1A@3.3V, 2.25A@5V||1A@3.3V, 2.25A@5V||2x 1A@3.3V, 2.25A@5V
|-
|-
|style="background:#f0f0f0;"| || align="center" colspan="6"|'''Mechanical'''
| style="background:#f0f0f0;"|'''Software Switch'''||2||no||no||no||no||1||1||1
|-
|-
| style="background:#f0f0f0;"|'''Size'''||~100mm x ~50mm||34mm x 60mm x 10mm||56mm x 25mm||70.8mm x 40mm||40.2mm x 30.5mm||80.0mm x 40.0mm?
|style="background:#f0f0f0;"| || align="center" colspan="8"|'''Mechanical'''
|-
|-
| style="background:#f0f0f0;"|'''Weight'''||?||9.9g - 10.8g||9g||24g||8g||23g w/ XBee?
| style="background:#f0f0f0;"|'''Size'''||~100mm x ~50mm||34mm x 60mm x 10mm||56mm x 25mm||53mm x 25mm||35mm x 35mm||70.8mm x 40mm||40.2mm x 30.5mm||80.0mm x 40.0mm?
|-
|-
| style="background:#f0f0f0;"|'''Connector Style'''||Picoblade||Picoblade & 0.1" Servo||Picoblade||Picoblade||Picoblade||0.1" Headers
| style="background:#f0f0f0;"|'''Weight'''||?||9.9g - 10.8g||9g||8g||?||24g||8g||23g w/ XBee?
|-
|-
| style="background:#f0f0f0;"|'''PCB Style'''||4-layer||4-layer||4-layer||2-layer||2-layer||2-layer
| style="background:#f0f0f0;"|'''Connector Style'''||Picoblade||Picoblade & 0.1" Servo||Picoblade||Picoblade||Picoblade||Picoblade||Picoblade||0.1" Headers
|-
|-
| style="background:#f0f0f0;"|'''Mounting Holes'''||4x M3||4x 2mm||4x 2mm||no||no||4x M3
| style="background:#f0f0f0;"|'''PCB Style'''||4-layer||4-layer||4-layer||4-layer||4-layer||2-layer||2-layer||2-layer
|-
|-
|style="background:#f0f0f0;"| || align="center" colspan="6"|'''Comments'''
| style="background:#f0f0f0;"|'''Mounting Holes'''||4x M3||4x 2mm||4x 2mm||4x 2mm||4x 2mm||no||no||4x M3
|-
|-
| style="background:#f0f0f0;"|'''Comments'''||IMU and Overo Mount Location, Many Features||||Smallest Dimensions, New even smaller "Lite" version coming soon||Onboard u-blox GPS, designed for easy DIY assembly (same as TWOG)||Basic, no onboard sensors (all external for expandability)||Specially designed to work with rs232 sensors such as XSens Mit-G/Crossbow NAV420/ig500/3DM-GX3/DMS-SGP02/MGL-sp-5. Onboard XBee connector
|style="background:#f0f0f0;"| || align="center" colspan="8"|'''Comments'''
|-
|-
| style="background:#f0f0f0;"|'''Typical Usage'''||Advanced payload and controls development using Gumstix; fixed-wing or rotorcraft||Small, general purpose w/ IMU; fixed-wing or rotorcraft||Small, general purpose w/ IMU; fixed-wing or rotorcraft||Small, general purpose w/ GPS; fixed-wing with external IR or IMU||Small, general purpose; fixed wing with all external sensors||0.1" headers means easier wiring, at the cost of weight
| style="background:#f0f0f0;"|'''Comments'''||IMU and Overo Mount Location, Many Features|| ||Small Dimensions, IMU, narrow fuselage form factor||Smallest Dimensions, IMU, basic version of Umarim||Small Dimensions, IMU, magnetometer & high sensitivity Barometer; designed for rotorcraft||Onboard u-blox GPS, designed for easy DIY assembly (same as TWOG)||Basic, no onboard sensors (all external for expandability)||Specially designed to work with rs232 sensors such as XSens Mit-G/Crossbow NAV420/ig500/3DM-GX3/DMS-SGP02/MGL-sp-5. Onboard XBee connector
|-
|-
| style="background:#f0f0f0;"|'''Date Introduced'''||Summer 2010||Winter 2012||Fall 2011||Fall 2007||Spring 2008||Spring 2011
| style="background:#f0f0f0;"|'''Typical Usage'''||Advanced payload and controls development using Gumstix; fixed-wing or rotorcraft||Small, general purpose w/ IMU; fixed-wing or rotorcraft||Small, general purpose w/ IMU; fixed-wing||Small, general purpose w/ IMU; fixed-wing||Small, general purpose w/ IMU; rotorcraft||Small, general purpose w/ GPS; fixed-wing with external IR or IMU||Small, general purpose; fixed wing with all external sensors||0.1" headers means easier wiring, at the cost of weight
|-
|-
| style="background:#f0f0f0;"|'''Previous Versions'''||[[Lisa/L]] v1.0||[[Lisa/M_v10|Lisa/M v1.0]]|| ||[[Tiny/v1.1|Tiny v1.1]],  [[Tiny/v0.99|Tiny v0.99]]|| ||[[YAPA/v1.0|YAPA v1.0]]
| style="background:#f0f0f0;"|'''Date Introduced'''||Summer 2010||Winter 2012||Fall 2011||Summer 2012||Summer 2012||Fall 2007||Spring 2008||Spring 2011
|-
| style="background:#f0f0f0;"|'''Previous Versions'''||[[Lisa/L]] v1.0||[[Lisa/M_v10|Lisa/M v1.0]]|| || || ||[[Tiny/v1.1|Tiny v1.1]],  [[Tiny/v0.99|Tiny v0.99]]|| ||[[YAPA/v1.0|YAPA v1.0]]
|}
|}



Revision as of 23:24, 13 July 2012


Favicon32.png Autopilots

Paparazzi Autopilots

Hardware support for Autopilot versions currently in use.
Tiny 1.1 autopilots on the "assembly line"
One of the great advantages of Paparazzi is support for multiple hardware designs. Historically, Paparazzi was based around ATMega MCUs, while current autopilots are designed around two primary processors:
  • STM32 series microcontrollers
  • LPC21xx series microcontrollers

There are active and current autopilots designs using both architectures. Not all autopilots have the same capabilities, peripherals or features, but each has advantages in different applications.

The STM32 architecture is relatively new and still has bugs to be worked out. This is more suited for developers who are comfortable with joining in and working out the issues. Currently, boards are designed around the STM32F1 series, but there is future upgrade path capabilities to the F2 and F4 series, giving way to feature rich processors with a variety of peripherals and speeds. Architecture-dependent firmware code is supported in part by libopencm3. The Lisa autopilots use the STM32.

The LPC21xx based boards use the LPC2148 and have been flying fixed wing and multi-rotors for many years. This architecture is more mature and stable but at the expense of speed and extra ports available on the newer STM32 series processors. The Tiny series, Booz, TWOG, YAPA and Umarim autopilots all use the LPC2148.

Some autopilots have also been designed for close integration with small single-board computers, particularly those based on OMAP processors such as the Gumstix Overo series. The Lisa/L and Classix boards are designed with this in mind, though other autopilots can be easily interfaced. Further information can be found here.

A basic feature comparison table is presented to help in the autopilot hardware selection process. Stable well tested and used LPC or more cutting edge STM32 that requires some debugging.

For information regarding architecture and firmware compatibility of various subsystems and modules, please see the appropriate Subsystems overview and Modules List pages.

NOTE: The accuracy of this table may not be 100% correct, the best resource is always hardware and software source files and individual autopilot pages.


Autopilot1 Feature Matrix
Feature Lisa/L v1.1 Lisa/M v2.0 Umarim v1.0 Umarim Lite v2 NavGo v3 Tiny v2.11 TWOG v1.0 YAPA v2.0
MCU
Part STM32F103RE STM32F105RCT6 LPC2148 LPC2148 LPC2148 LPC2148 LPC2148 LPC2148
Clock 72MHz 72MHz 60MHz 60MHz 60MHz 60MHz 60MHz 60MHz
Flash 512kB 256kB 512kB 512kB 512kB 512kB 512kB 512kB
RAM2 64kB 64kB 32kB & 8kB 32kB & 8kB 32kB & 8kB 32kB & 8kB 32kB & 8kB 32kB & 8kB
Onboard Sensors3
MEMS IMU no aspirin yes yes yes no no no
Magnetometer no no yes no no no
Barometer yes yes yes no yes no no no
Diff Pressure yes no no no no no no no
GPS no no no no no yes no no
Input/Output4
UART 3 & 1RX 2 & 2RX 2 2 1 2 2
I2C 2 1 + 15 2 2 2 1 1 1
SPI 2 1 1 1 1 1 1 1
ADC 3 (12bit) 3 + 2 (12bit)5 0 + 4 (10bit)6 8 (10bit) 8 (10bit) 6 (10bit)
PWM 6 6 + 25 6 8 8 10
PPM Output no no 1 1 1 no
PPM Capture 1 0 + 15 1 1 1 1 1 1
GPIO7 ? 1 0 + 46 2 2 1
Onboard LEDs 8 5 2 2 4 3 3 3
USB Peripheral Onboard USB JTAG + UART bootloader bootloader bootloader bootloader bootloader bootloader bootloader
CAN 1 1 no no no no no no
Other Overo w/ I/O incl. USB Host Aspirin footprint, JTAG header XBee connector, RS232 options
Power Management
Supply Input 6.1V - 18V 5V - 16V 5.5V - 17V 5.5V - 17V 5.5V - 16V 6.1V - 18V 6.1V - 18V 6.1V - 18V
Supply Output 2.25@5V, 2.25A@3.3V, Other 500mA@3.3V, 250mA@5V 1A@3.3V, 1.5A@5V 1A@3.3V, 1.5A@5V 1A@3.3V, 1.5A@5V 1A@3.3V, 2.25A@5V 1A@3.3V, 2.25A@5V 2x 1A@3.3V, 2.25A@5V
Software Switch 2 no no no no 1 1 1
Mechanical
Size ~100mm x ~50mm 34mm x 60mm x 10mm 56mm x 25mm 53mm x 25mm 35mm x 35mm 70.8mm x 40mm 40.2mm x 30.5mm 80.0mm x 40.0mm?
Weight ? 9.9g - 10.8g 9g 8g ? 24g 8g 23g w/ XBee?
Connector Style Picoblade Picoblade & 0.1" Servo Picoblade Picoblade Picoblade Picoblade Picoblade 0.1" Headers
PCB Style 4-layer 4-layer 4-layer 4-layer 4-layer 2-layer 2-layer 2-layer
Mounting Holes 4x M3 4x 2mm 4x 2mm 4x 2mm 4x 2mm no no 4x M3
Comments
Comments IMU and Overo Mount Location, Many Features Small Dimensions, IMU, narrow fuselage form factor Smallest Dimensions, IMU, basic version of Umarim Small Dimensions, IMU, magnetometer & high sensitivity Barometer; designed for rotorcraft Onboard u-blox GPS, designed for easy DIY assembly (same as TWOG) Basic, no onboard sensors (all external for expandability) Specially designed to work with rs232 sensors such as XSens Mit-G/Crossbow NAV420/ig500/3DM-GX3/DMS-SGP02/MGL-sp-5. Onboard XBee connector
Typical Usage Advanced payload and controls development using Gumstix; fixed-wing or rotorcraft Small, general purpose w/ IMU; fixed-wing or rotorcraft Small, general purpose w/ IMU; fixed-wing Small, general purpose w/ IMU; fixed-wing Small, general purpose w/ IMU; rotorcraft Small, general purpose w/ GPS; fixed-wing with external IR or IMU Small, general purpose; fixed wing with all external sensors 0.1" headers means easier wiring, at the cost of weight
Date Introduced Summer 2010 Winter 2012 Fall 2011 Summer 2012 Summer 2012 Fall 2007 Spring 2008 Spring 2011
Previous Versions Lisa/L v1.0 Lisa/M v1.0 Tiny v1.1, Tiny v0.99 YAPA v1.0

Notes:

1. Only the newest revisions of the more commonly used autopilots are listed

2. The extra 8kB of RAM on the LPC2148 shared with the USB DMA

3. The onboard sensors are almost always supplemented with external sensors. For example, TWOG can use an external IMU or IR sensors, and also needs an external GPS.

4. Input/Outputs listed are generally those easily accessible on regular autopilot connectors, customization/hacks can modify available I/O, for example free an extra I2C on Tiny and TWOG

5., 6. Some features use shared resources - denoted by X + Y where Y is shared - and cannot be used simultaneously

5. Lisa/M v2.0 shared resources include: one I2C is shared with 2 PWM outputs, two ADCs are shared with LEDs, one RX only UART is shared with the PPM capture

6. Umarim v1.0 shared resources include: 4 ADCs are shared with 4 GPIOs

7. Usually other unused pins can be used for additional GPIO with some code modifications


When will the Schematics, CAD files, Gerber files, BOM be released?

The hardware development and release process.

8 June 2011 13:25:47 Antoine Drouin wrote on the mailing list:

Schematics will be released ASAP, CAD files will come later. When ? I don't know.... Worst case would be when Joby Robotics releases a new version of the board, but I hope it will be sooner than that.

Lisa/L CAD files have been released (http://svn.savannah.nongnu.org/viewvc/paparazzi-hardware/trunk/lisa/v1.1/?root=paparazzi ) 3 month ago. (...)

I've started this project together with Pascal 8 years ago and since then I have dedicated my time to try and make it successful. I'm utterly convinced of the benefits of open source, but observing how Paparazzi grew over time, I came to the conclusion that hardware is a bit different than software... "gcc tiny.brd" is not going to make a board magically appear on your desktop.

I'll list here some of my arguments in favor of releasing CAD files after the board is mature.

  1. Unlike software, where an unskilled user can type make and get a piece of complex software to successfully build, assembling hardware requires tools and skills. Providing gerbers and BOM have lured a bunch of new users into believing otherwise and has created tons of frustration. I've myself fixed a number of badly assembled boards and I even recall that while helping debugging a board (so after assembly), discovering that the person had manufactured two layers PCBs instead of four layers. As the technology of the autopilot increases, this problem becomes more and more important.
  2. The success of the project depends on the availability of affordable hardware. The price of hardware is directly and exponentially dependent on the number of manufactured units. If ten persons manufacture 10 boards each, the cost will be much higher than if one person manufactures 100.
  3. Last and not least, the quality of assembly also depends very much on the number of manufactured units. Good quality can only be achieved through the use of automated placing and soldering, and those processes can only be used if the number of units reach a certain amount.