Controller: Difference between revisions
m Describing original Firmware Control Architecture |
Added overview of original Firmware PID's |
||
| Line 16: | Line 16: | ||
=== Original PID Controllers (Angular Rotation) === | === Original PID Controllers (Angular Rotation) === | ||
On the Crazyflie Firmware there are 5 PID controllers as seen here: | |||
[[Image:FirmwareOnlyPIDArchitecture.png|500px]] | |||
The Pitch and Roll angular position PID's receive constant setpoints from some outside source (gamepad controller or automated controller). The outputs of those angular position controllers is then fed into the angular rate controllers as shown. This final output is then fed into the Motor Command block which converts the angular rate setpoints into motor commands. | |||
Revision as of 20:50, 12 July 2016
The Crazyflie platform is completely customizable when it comes to the control design. As long as the controller can be written in C or C++, we can implement it in the Platform. This applies to both the controllers run on the PC Client and the controllers run on the Firmware of the Crazyflie. Originally the only controllers in the Platform were Firmware PID's that controlled the angular position and rates of the Crazyflie for hand flight. The original controller layout can be seen in Figure 1.
Below you will find documentation on the different types of Controllers that have been applied to the platform, organized by their location in the Platform.
PC Client
PID Controllers (Position and Yaw)
The first controller implemented on the Client was a PID controller used to stabilize the Crazyflie's position in X, Y, and Z.
Firmware
Original PID Controllers (Angular Rotation)
On the Crazyflie Firmware there are 5 PID controllers as seen here:
The Pitch and Roll angular position PID's receive constant setpoints from some outside source (gamepad controller or automated controller). The outputs of those angular position controllers is then fed into the angular rate controllers as shown. This final output is then fed into the Motor Command block which converts the angular rate setpoints into motor commands.