This drone was built during a summer research internship with the IRoM Lab in partnership with another student. The goal was to build a larger drone based on the Crazyflie platform that would give the lab much more freedom to test custom controllers on a larger frame than it had in the past. We documented our project extensively for ease of use in the future. I designed and manufactured mounting adapters for a Raspberry Pi, the Crazyflie Bolt, and various other sensors. I also modified the controller's firmware to add custom data logging and functions to set particular flight setpoints. Crazyflie does not have documentation for recommended tuning starting points for various frames, unlike other flight controllers, so we had to tune the drone from scratch. It took us a while to achieve hovering, but we still need to work on the jitters it has during flight.
Custom Mounting
-
Mounting adapters designed in Fusion360
-
Adapters integrate with off-the-shelf f450 frame
-
Laser cut and 3D printed
-
Compact and sturdy mounting required for
-
Raspberry Pi
-
Crazyflie + Depth/optical flow sensor
-
Depth camera
-
-
Hardware survived 45+ hover tests, including many impacts
Firmware Modifications
-
Crazyflie firmware built in C using freeRTOS
-
Logging of custom variables for remote telemetry
-
Parameters for physical constants such as depth sensor offset
-
Alternate modes for controlling attitude rate setpoints
Flight Tuning
-
Cascaded PID controller for position, velocity, attitude, and rate
-
Wrote Python script to command hover and log telemetry
-
Plotted position, velocity, attitude, rate, and their respective setpoints
-
Tuned PID gains for each level of controller, beginning with rate, to achieve desired response
-
Found that aggressive tuning led to more reliable takeoffs but more jittery hovering, and the inverse