mbedRTOS quadcopter quadrotor RATE and ATTITUDE mode (default). Altitude Hold soon to come. pHysiX Coding 2014.

You are viewing an older revision! See the latest version

2 Flight Controller Software

Introduction

Quadcopter (X-Mode) using RTOS.

Insert picture of build

Control loop: PI-PI.

D Gain will not be used as data is noisy and caused instability shortly after liftoff.

Implementation

RTOS

4 main threads:

  • Thread1: Output telemetry.
    • Outputs: YPR, Gyro, Altitude, Voltage, RC Input, RC Command, PID output, ESC Power
    • Thread frequency: 50Hz.
  • Thread 2-Master: YPR sample, PI Master/Outer control loop. Attitude control.
    • Subfunction: Sample MPU6050 and calculate Yaw Pitch Roll angles from DMP quaternion.
      • Settings: 50Hz sampling rate (Attitude), 100Hz output FIFO buffer.
    • Settings: Input limits: -500.0, 500.0; Output limits: -200.0, 200.0; Output bias: 0.0, Automatic mode
    • Settings: KP: 0.5, TI: 1.0, TD = 0.0
    • Thread frequency: 200Hz
  • Thread 2-Slave: Gyro sample, PI Slave/Inner control loop. Rate control.
    • Settings: Input limits: -500.0, 500.0; Output limits: -200.0, 200.0; Output bias: 0.0, Automatic mode
    • Settings: KP: 7.0, TI:2.0, TD = 0.0
    • Thread frequency: 400Hz
  • Thread 3: RC & Bluetooth Command
    • Settings: Default quadcopter is unarmed
    • Thread frequency: 50Hz
  • Thread 4: Update ESC pulsewidth
    • Note: My ESCs can apparently handle refresh rates of up to 400Hz. This means that the ESC should handle a 400Hz PWM pulse. This is distinguished from how fast I update the actual pulsewidth/duty cycle of my pulse!!!
    • Settings: PWM frequency: 400Hz
    • Thread frequency: 400Hz.

AHRS Sampling

Thread frequency: 200Hz

MPU6050 Sampling rate: 100Hz

FIFO Buffer Output rate: 100Hz

To be completed

Gyro Sampling & PID calculations

Master PID Loop

Thread frequency: 200Hz Control: PI

To be completed

Slave PID Loop

Thread frequency: 400Hz Control: PI

To be completed

RC & Bluetooth Command

Thread frequency: 50Hz

To be completed

Update ESC

Thread frequency: 400Hz

Pulse period: 400HZ

Pulse update rate = Thread frequency = 400Hz

To be completed


All wikipages