CrazyFlie 2.0. Image by Bitcraze AB.
Images above show the simulation results. The green circle indicates the start, the red circle is the goal, the blue line is the path taken, and the black line is the desired trajectory.
The objective of this project was to develop a position controller and trajectory generator for a quadrotor, the CrazyFlie 2.0. The position controller and trajectory generator were developed in simulation before being evaluated on hardware using two experiments. The position controller implemented was a geometric nonlinear controller. The trajectory generator utilizes a graph search algorithm, either Dijkstra's algorithm or A*, to determine a path from start to goal. For the first experiment, waypoints were provided and the position of the trajectory was a cubic polynomial. For the second experiment, waypoints were determined using A* and the position of the trajectory was a quintic polynomial.
The first experiment consisted of having the quadrotor hover and follow a cube-shaped trajectory with known waypoints. The quadrotor was first placed in hover to analyze its stability and to tune the controller until the quadrotor was stable. Once the quadrotor was stable, it was given the cube shaped trajectory to follow. This tested the quadrotor’s stability when moving and the ability to track a simple trajectory with known waypoints.
A second experiment was performed to further evaluate the performance of our controller and trajectory generator. This second experiment involved navigating through a maze with three different start and endpoints. The maze environment examined the controller’s ability to handle aggressive maneuvers such as performing sharp turns, navigating narrow passages, and stopping at endpoints without overshoot.
Videos showing the simulation and hardware experiment results are located below.
Full Project Report Found Here.
Note: Experiments were performed with Brandon McBride and Vaibhav Arcot. Each person implemented their own position controller and trajectory generator in simulation before collaborating on the code for hardware experiments.