Top Banner
QUADCOPTER FLIGHT CONTROLLER building & programming a from scratch
43

Quadcopter Talk (Abstractions)

Jan 07, 2017

Download

Technology

Ryan Boland
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Quadcopter Talk (Abstractions)

QUADCOPTER FLIGHT CONTROLLER

building & programming a

from scratch

Page 2: Quadcopter Talk (Abstractions)

I’m Ryan Boland

Web Developer@ Tanooki Labs

@bolandrm (github, twitter)

Page 3: Quadcopter Talk (Abstractions)
Page 4: Quadcopter Talk (Abstractions)

1. Components

2. Quadcopter Physics

3. The Flight Loop

Page 5: Quadcopter Talk (Abstractions)

FRAME

Page 6: Quadcopter Talk (Abstractions)

Electronic Speed Controllers (ESCs) & Motors

Page 7: Quadcopter Talk (Abstractions)

Lithium Polymer (LiPo) Battery

Page 8: Quadcopter Talk (Abstractions)

Remote Control Transmitter & Receiver

Page 9: Quadcopter Talk (Abstractions)

Flight ControllerMicroprocessor & Inertial measurement Unit (IMU)

Page 10: Quadcopter Talk (Abstractions)

My Project - Custom Flight Controller

Arduino Mega 2560 & Prototyping Shield

8-bit AVR 16 MHz clock

256K Flash 8K Ram

Arduino Nano Clone 8-bit AVR

16 MHz clock 32K Flash 2K Ram

Teensy 3.1 32-bit ARM

96 MHz clock 256K Flash 64K Ram

$5$55 $20

Page 11: Quadcopter Talk (Abstractions)

Custom PCB

Page 12: Quadcopter Talk (Abstractions)

Inertial Measurement Unit

MPU6050 - 3 axis gyroscope, 3 axis accelerometer HMC5883L - 3 axis magnetometer BMP180 - Barometer

GY-87 $8

Page 13: Quadcopter Talk (Abstractions)

Flight

Page 14: Quadcopter Talk (Abstractions)

Configuration: + vs X

Page 15: Quadcopter Talk (Abstractions)

Orientation

x axis <-> roll y axis <-> pitch z axis <-> yaw

Page 16: Quadcopter Talk (Abstractions)

Maneuvering

Page 17: Quadcopter Talk (Abstractions)

StabilizationRate mode - gyroscopes onlyRemote control determines the rate at which the quadcopter is rotating on any given axis. Also known as Acro or Manual.

Attitude mode - accelerometers & gyros Remote control determines the desired angle of the quadcopter. Also known as self-level or auto-level.

Page 18: Quadcopter Talk (Abstractions)

Wait for data ready interrupt

Read & filter gyroscope data

Read remote control data (user input)

Use PID (proportional, integral, derivative) algorithm to compute required adjustment for each axis

Map adjustment for each axis to motors (Mixer)

Safety checks

Output to motors

Flight Loop (1000 Hz)

Page 19: Quadcopter Talk (Abstractions)

Wait for data ready interrupt

Read & filter gyroscope data

Read remote control data (user input)

Use PID (proportional, integral, derivative) algorithm to compute required adjustment for each axis

Map adjustment for each axis to motors (Mixer)

Safety checks

Output to motors

Flight Loop (1000 Hz)

Page 20: Quadcopter Talk (Abstractions)

Wait for data ready interrupt

Read & filter gyroscope data

Read remote control data (user input)

Use PID (proportional, integral, derivative) algorithm to compute required adjustment for each axis

Map adjustment for each axis to motors (Mixer)

Safety checks

Output to motors

Flight Loop (1000 Hz)

Page 21: Quadcopter Talk (Abstractions)

Gyroscope dataActual rotational rate in °/sec

Remote control dataPilot’s desired rotation rate in °/sec

ErrorDifference between actual and desired rotational rate e = gyro_rate - rc_rate

Page 22: Quadcopter Talk (Abstractions)

Wait for data ready interrupt

Read & filter gyroscope data

Read remote control data (user input)

Use PID (proportional, integral, derivative) algorithm to compute required adjustment for each axis

Map adjustment for each axis to motors (Mixer)

Safety checks

Output to motors

Flight Loop (1000 Hz)

Page 23: Quadcopter Talk (Abstractions)

3 errors to correct

Page 24: Quadcopter Talk (Abstractions)

PID Controllers (proportional, integral, derivative)

For each axis (yaw, pitch, roll):

PID for dummies:http://www.csimn.com/CSI_pages/PIDforDummies.html

Page 25: Quadcopter Talk (Abstractions)

PID Controllers (proportional, integral, derivative)

PID for dummies:http://www.csimn.com/CSI_pages/PIDforDummies.html

Motor Output

Rotational rate (from gyro)

errore(t)

PilotRCinput

3 constants - Kp, Ki, Kd

Page 26: Quadcopter Talk (Abstractions)

PID Controllers (proportional, integral, derivative)

PID for dummies:http://www.csimn.com/CSI_pages/PIDforDummies.html

Motor Output

Rotational rate (from gyro)

errore(t)

Pilot RC input

3 constants - Kp, Ki, Kd

Page 27: Quadcopter Talk (Abstractions)

PID Controllers (proportional, integral, derivative)

PID for dummies:http://www.csimn.com/CSI_pages/PIDforDummies.html

Motor Output

Rotational rate (from gyro)

error e(t)

PilotRCinput

3 constants - Kp, Ki, Kd

Page 28: Quadcopter Talk (Abstractions)

PID Controllers (proportional, integral, derivative)

PID for dummies:http://www.csimn.com/CSI_pages/PIDforDummies.html

Motor Output

Rotational rate (from gyro)

errore(t)

PilotRCinput

3 constants - Kp, Ki, Kd

Page 29: Quadcopter Talk (Abstractions)

PID Controllers (proportional, integral, derivative)

PID for dummies:http://www.csimn.com/CSI_pages/PIDforDummies.html

Motor Output

Rotational rate (from gyro)

errore(t)

PilotRCinput

3 constants - Kp, Ki, Kd

Page 30: Quadcopter Talk (Abstractions)

PID Controllers (proportional, integral, derivative)

PID for dummies:http://www.csimn.com/CSI_pages/PIDforDummies.html

Motor Output

Rotational rate (from gyro)

errore(t)

PilotRCinput

3 constants - Kp, Ki, Kd

Page 31: Quadcopter Talk (Abstractions)

PID Controllers (proportional, integral, derivative)

PID for dummies:http://www.csimn.com/CSI_pages/PIDforDummies.html

Motor Output

Rotational rate (from gyro)

errore(t)

PilotRCinput

3 constants - Kp, Ki, Kd

Page 32: Quadcopter Talk (Abstractions)

Wait for data ready interrupt

Read & filter gyroscope data

Read remote control data (user input)

Use PID (proportional, integral, derivative) algorithm to compute required adjustment for each axis

Map adjustment for each axis to motors (Mixer)

Safety checks

Output to motors

Flight Loop (1000 Hz)

Page 33: Quadcopter Talk (Abstractions)

Maneuvering

Page 34: Quadcopter Talk (Abstractions)

Flight Controller Code

motor1 = rc_throttle - roll_adjust - pitch_adjust - yaw_adjust;

motor2 = rc_throttle + roll_adjust + pitch_adjust - yaw_adjust;

motor3 = rc_throttle - roll_adjust + pitch_adjust + yaw_adjust;

motor4 = rc_throttle + roll_adjust - pitch_adjust + yaw_adjust;

correcting roll, pitch, yaw

Page 35: Quadcopter Talk (Abstractions)

Flight Controller Code

motor1 = rc_throttle - roll_adjust - pitch_adjust - yaw_adjust;

motor2 = rc_throttle + roll_adjust + pitch_adjust - yaw_adjust;

motor3 = rc_throttle - roll_adjust + pitch_adjust + yaw_adjust;

motor4 = rc_throttle + roll_adjust - pitch_adjust + yaw_adjust;

correcting roll, pitch, yaw

Page 36: Quadcopter Talk (Abstractions)

Flight Controller Code

motor1 = rc_throttle - roll_adjust - pitch_adjust - yaw_adjust;

motor2 = rc_throttle + roll_adjust + pitch_adjust - yaw_adjust;

motor3 = rc_throttle - roll_adjust + pitch_adjust + yaw_adjust;

motor4 = rc_throttle + roll_adjust - pitch_adjust + yaw_adjust;

correcting roll, pitch, yaw

Page 37: Quadcopter Talk (Abstractions)

Flight Controller Code

motor1 = rc_throttle - roll_adjust - pitch_adjust - yaw_adjust;

motor2 = rc_throttle + roll_adjust + pitch_adjust - yaw_adjust;

motor3 = rc_throttle - roll_adjust + pitch_adjust + yaw_adjust;

motor4 = rc_throttle + roll_adjust - pitch_adjust + yaw_adjust;

correcting roll, pitch, yaw

Page 38: Quadcopter Talk (Abstractions)

Wait for data ready interrupt

Read & filter gyroscope data

Read remote control data (user input)

Use PID (proportional, integral, derivative) algorithm to compute required adjustment for each axis

Map adjustment for each axis to motors (Mixer)

Safety checks

Output to motors

Flight Loop (1000 Hz)

Page 39: Quadcopter Talk (Abstractions)

Safety & Handling Failure

Stale IMU values

Stale remote control values

Angles too high?

Motor outputs too high? (indoor safe mode)

Watchdog

Page 40: Quadcopter Talk (Abstractions)

Wait for data ready interrupt

Read & filter gyroscope data

Read remote control data (user input)

Use PID (proportional, integral, derivative) algorithm to compute required adjustment for each axis

Map adjustment for each axis to motors (Mixer)

Safety checks

Output to motors

Flight Loop (1000 Hz)

Page 41: Quadcopter Talk (Abstractions)

Wait for data ready interrupt

Read & filter gyroscope data

Read remote control data (user input)

Use PID (proportional, integral, derivative) algorithm to compute required adjustment for each axis

Map adjustment for each axis to motors (Mixer)

Safety checks

Output to motors

Flight Loop (1000 Hz)

Page 42: Quadcopter Talk (Abstractions)

Some Takeaways

Be Safe

Start small (mini quad or balancing robot?)

Break things down into subcomponents

Page 43: Quadcopter Talk (Abstractions)

Thanks!

@bolandrm