Drone firmware

From Rsewiki
(Difference between revisions)
Jump to: navigation, search
(Motor test firmware)
(Drone firmware)
Line 55: Line 55:
 
=== Drone firmware ===
 
=== Drone firmware ===
  
The drone flight controller (base) firmware is in the "drone_ctrl" directory.
+
The drone flight controller firmware is in the "drone_ctrl" directory.
  
 
To compile the source for a Teensy 3.5 or 3.6 the Teensiduino needs to be installed first.
 
To compile the source for a Teensy 3.5 or 3.6 the Teensiduino needs to be installed first.

Revision as of 09:29, 28 May 2021

Back to Drone control

Contents

Functional overview

Data-flow-block.png

Figure. Overall data flow for drone flight-controller. Most blocks also refer to tabs in the GUI (drone_gui).

Block-functions.png

Figure. The main software functions. Orange blocks are sensor and communication io. Green if the primary measurement and reference (set-point) data (Roll, Pitch, Yaw, Height and possibly lateral velocity. Pink blocks are other software functions. Gray is for configuration and calibration. Yellow blocks are PID control. Diagnosis is mostly battery voltage, but with the capability of measuring temperature and (with internal and external sensor) and current with external sensors.

The pose holds 4 values (roll, pitch, yaw and height). The roll, pitch and yaw control has cascaded controllers, angular velocity (measured by the gyro directly) and roll pitch and yaw position (as estimated by the Madgwick filter).

Calibration of the gyro and accelerometer is built in. Calibration of the magnetometer is using an external tool (saving the calibration result directly in the on-board flash for the Madgwick filter).

Block-control.png

Figure. The PID control blocks all have these functionalities. The yellow circles indicate logging interfaces.

Drone control firmware

There are two versions of the drone firmware, one for the motor test (mostly performance of a single motor) without the need of the prop-sheld and a full version to be used on the flying drone.

To get the source code - see section "software and files" below.

Arduino version

Arduino version 1.8.13 (specifically the interrupt based ADC library for Teensy) requires at least GCC version 10 to compile.

But changing a few 'constexpr' to 'inline' makes it compile on GCC version 9.3 and work - maybe with a slightly larger code.

Drone control firmware

The firmware is in the "drone_ctrl" directory.

To compile the source for a Teensy 3.5 or 3.6 the Teensiduino needs to be installed first.

Install Teensiduino, see https://www.pjrc.com/teensy/td_download.html . Start with installing the most recent supported version of Arduino, then overlay this by installing the Teensiduino.

Once installed the directory needs to be prepared for compilation.

Linux

make shortcut links to libraries and compiler. The shourtcut described below assumes you have installed arduino version 1.8.9 (and Teensiduino) in your home directory, change as appropriate:

cd drone_ctrl/motortest
ln -s ~/arduino-1.8.9/hardware/teensy/avr/libraries
ln -s ~/arduino-1.8.9/hardware/teensy/avr/cores/teensy3
ln -s ~/arduino-1.8.9/hardware/tools/
make
make upload

Drone firmware

The drone flight controller firmware is in the "drone_ctrl" directory.

To compile the source for a Teensy 3.5 or 3.6 the Teensiduino needs to be installed first.

Install Teensiduino, see https://www.pjrc.com/teensy/td_download.html . Start with installing the most recent supported version of Arduino, then overlay this by installing the Teensiduino.

Once installed the directory needs to be prepared for compilation.

Linux

make shortcut links to libraries and compiler. The shourtcut described below assumes you have installed arduino version 1.8.9 (and Teensiduino) in your home directory, change as appropriate:

cd drone_ctrl/drone_ctrl
ln -s ~/arduino-1.8.9/hardware/teensy/avr/libraries
ln -s ~/arduino-1.8.9/hardware/teensy/avr/cores/teensy3
ln -s ~/arduino-1.8.9/hardware/tools/
make
make upload
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox