Linux - the future for drones Lucas De Marchi, Intel ELCE 2015 Who - - PowerPoint PPT Presentation

linux the future for drones
SMART_READER_LITE
LIVE PREVIEW

Linux - the future for drones Lucas De Marchi, Intel ELCE 2015 Who - - PowerPoint PPT Presentation

Linux - the future for drones Lucas De Marchi, Intel ELCE 2015 Who am I Software developer Contributed to several open source projects throughout the Linux stack Recently joined projects under the Dronecode Linux maintainer for


slide-1
SLIDE 1

Linux - the future for drones

Lucas De Marchi, Intel ELCE 2015

slide-2
SLIDE 2

▪ Software developer ▪ Contributed to several open source projects throughout the Linux stack ▪ Recently joined projects under the Dronecode ▪ Linux maintainer for Ardupilot

Who am I

slide-3
SLIDE 3

▪ Dronecode ▪ Hardware evolution ▪ Software evolution ▪ Handling the complexity and scaling ▪ Future

Agenda

slide-4
SLIDE 4

Dronecode

slide-5
SLIDE 5

“If you want to go quickly go alone, if you want to go far go together”

slide-6
SLIDE 6

▪ 40+ members ▪ Composed of several projects, including 2 flight stacks ▪ Contributions to each of them increasing

Dronecode

slide-7
SLIDE 7

Ardupilot

Dronecode

slide-8
SLIDE 8

Hardware evolution

slide-9
SLIDE 9

Ardupilot

Hardware evolution

Pixhawk2 2015

slide-10
SLIDE 10

Hardware evolution

Ardupilot - Linux Boards

It all started with a single board, with a specific set of sensors in a daughter board: BeagleBone Black + PXF cape

slide-11
SLIDE 11

▪ PXF 2014 ▪ ErleBoard 2014 ▪ BBBMini 2015

Hardware evolution

Ardupilot - Linux Boards

▪ Navio/Navio+ 2014 ▪ Raspilot 2015 ▪ ErleBrain2* 2015 ▪ VR Brain 5 LX* 2015 Expansion boards for BeagleBone Black Expansion boards for Raspberry Pi

* Not merged yet

slide-12
SLIDE 12

Hardware evolution

Ardupilot - Linux Boards

▪ Bebop ▪ Own HW and Linux stack ▪ MinnowBoard Max* ▪ Drone Lure with sensors

* Not merged yet

slide-13
SLIDE 13
slide-14
SLIDE 14

Overview how a drone works

slide-15
SLIDE 15

Hardware/software evolution

101 - How a drone actually works (simplified)

Flight stack Accelerometer Gyroscope Barometer Magnetometer GPS

...

RC GCS APP Motor Motor Motor Motor

...

ESC

I2C / SPI UART UART / TCP / UDP PWM / I2C / CAN UART / . . .

slide-16
SLIDE 16

Hardware/software evolution

101 - How a drone actually works (simplified)

Flight stack Accelerometer Gyroscope Barometer Magnetometer GPS

...

RC GCS APP Motor Motor Motor Motor

...

ESC

I2C / SPI UART UART / TCP / UDP

Input Output

PWM / I2C / CAN UART / . . .

slide-17
SLIDE 17

Hardware/software evolution

101 - How a drone actually works (simplified)

Flight stack Accelerometer Gyroscope Barometer Magnetometer GPS

...

RC GCS APP Motor Motor Motor Motor

...

ESC

I2C / SPI UART UART / TCP / UDP PWM / I2C / CAN

Input Output Filter EFK PID Controllers ...

slide-18
SLIDE 18

Software evolution

slide-19
SLIDE 19

Software evolution

Sensors

▪ From few samples per second to thousands ▪ Redundancy ▪ More complex sensors

▪ Lidar ▪ Optical Flow ▪ Depth cameras ▪ Computer vision

slide-20
SLIDE 20

Software evolution

“Low-level” flight stack

▪ Increasing accuracy (hence complexity) of control algorithms

▪ E.g. the move to EKF for AHRS

slide-21
SLIDE 21

▪ Photography ▪ Agriculture ▪ Survey / Mapping ▪ Inspection ▪ Deliveries ▪ Search and rescue

Software evolution

Usages - pushing the complexity

slide-22
SLIDE 22

Software evolution

Outcome

▪ Drones becoming smarter ▪ Intelligence inside vs outside ▪ Increased CPU and memory requirements ▪ Need to scale for more hardware platforms

slide-23
SLIDE 23

Handling the complexity and scaling

slide-24
SLIDE 24

Handling the complexity and scaling

Boards in Ardupilot

▪ APM1 and APM2 are deprecated

▪ Not enough RAM, flash and CPU anymore

slide-25
SLIDE 25

Handling the complexity and scaling

Sensors in Ardupilot

▪ Support for more sensors, different manufacturers ▪ Linux boards becoming first class citizens

▪ PX4-only features moving to common code ▪ Linux-only features starting to appear (existing infrastructure in Linux)

slide-26
SLIDE 26

Handling the complexity and scaling

When microcontrollers are not enough anymore

▪ Companion computer

▪ Move complex tasks to a separate Linux board ▪ Move flight stack to a separate microcontroller

▪ Single board Linux solution

▪ Both flight stack and other tasks on same board

slide-27
SLIDE 27

Handling the complexity and scaling

When microcontrollers are not enough anymore

▪ Companion computer

▪ Move complex tasks to a separate Linux board ▪ Move flight stack to a separate microcontroller

▪ Single board Linux solution

▪ Both flight stack and other tasks on same board

This is the solution taken for the Linux boards currently supported in Ardupilot

slide-28
SLIDE 28

Handling the complexity and scaling

Single board Linux solution

▪ Realtime ▪ Offload specific part(s) of the stack

▪ To separate microcontroller (even inside the SoC) ▪ To dedicated off-the-shelf hardware

slide-29
SLIDE 29

Handling the complexity and scaling

Single board Linux solution

  • 1. Move single-digit µs precision off the CPU: PWM
  • utput, RC decoding (PPM, SBUS, DSMX), tone

generator, etc.

  • 2. Follow guidelines for RT tasks in Linux
  • 3. Have the necessary buses exposed
  • 4. Cheers your new Linux-based flight stack
slide-30
SLIDE 30

Future

slide-31
SLIDE 31

Future

Scaling for new boards

▪ Support for new boards (LIVE “DEMO”) ▪ Make adding new boards easier and scalable

▪ Runtime detection / configuration

▪ Different platforms ▪ Increased complexity

slide-32
SLIDE 32

Future

Scaling for new sensors

Flight stack Accelerometer Gyroscope Barometer Magnetometer GPS

...

RC GCS APP

I2C / SPI UART UART / TCP / UDP

Input Filter EFK PID Controllers ...

slide-33
SLIDE 33

Future

Scaling for new sensors

Flight stack (Ardupilot)

Accelerometer Gyroscope Barometer Magnetometer GPS Filters EKF PID Controllers

slide-34
SLIDE 34

Future

Scaling for new sensors

Accelerometer Gyroscope Barometer Magnetometer GPS

Flight stack (Ardupilot)

Filters EKF PID Controllers I2C_CHARDEV SPIDEV TTY Bus abstraction Hardware Sensor drivers Linux kernel Userspace

slide-35
SLIDE 35

Future

Scaling for new sensors

Accelerometer Gyroscope Barometer Magnetometer GPS

Flight stack (Ardupilot)

Filters EKF PID Controllers IIO TTY Sensor abstraction Hardware Sensor HAL Linux kernel Userspace Sensor drivers Sensor drivers

slide-36
SLIDE 36

Future

Scaling for new sensors

Pros: ▪ Several drivers already available ▪ Share testing with other platforms (Linux desktop, Android) ▪ Reduce complexity on the flight stack ▪ Reduce overhead to communicate with sensor: flight stack access data stream

Use kernel drivers (IIO subsystem)

Cons: ▪ Can't share driver with other platforms (PX4 middleware / Nuttx) ▪ Harder to prototype new drivers ▪ Currently used sensors don't have kernel drivers or don't have the right interfaces

Middle ground: support both for separate buses

slide-37
SLIDE 37

▪ Linux boards to foster use of new algorithms ▪ New sensors ▪ Smarter autonomous drones

Future

aka dreams

slide-38
SLIDE 38

▪ Drones growing in application and capabilities ▪ Linux provides scaling at HW and SW levels ▪ Sharing parts with other projects improves code quality and testability

Wrap-up

slide-39
SLIDE 39

Q&A

Links: Dronecode: http://www.dronecode.org Ardupilot: http://ardupilot.com/ Contact: lucas.demarchi@intel.com Slides: conference site drones-discuss mailing list http://diydrones.com Gitter Skype IRC Mumble