The goal of this project is to develop a robust control scheme that enables a quad-rotor to track desired trajectories despite the presence of external disturbances. To achieve this, we will use the Crazyflie 2.0 Micro Aerial Vehicle as a testing platform in a simulated environment using the Gazebo simulator and ROS middleware
In this part, the quadrotor needs to visit a sequence of waypoints in a specific order while maintaining zero velocity and acceleration at each waypoint. The waypoints are as follows:
- p0 = (0, 0, 0) to p1 = (0, 0, 1) in 5 seconds
- p1 = (0, 0, 1) to p2 = (1, 0, 1) in 15 seconds
- p2 = (1, 0, 1) to p3 = (1, 1, 1) in 15 seconds
- p3 = (1, 1, 1) to p4 = (0, 1, 1) in 15 seconds
- p4 = (0, 1, 1) to p5 = (0, 0, 1) in 15 seconds
Designed boundary layer-based sliding mode control laws to enable the quadrotor to track desired trajectories for z, ϕ, θ, and ψ coordinates in altitude and attitude control. Considered zero angular velocities/accelerations and the desired yaw angle ψ during the motion.
Implemented a ROS node in Python to evaluate the performance of the sliding mode control design on the Crazyflie 2.0 quadrotor in Gazebo. The script incorporated the trajectories generated in Part 1 and integrated the sliding mode control laws formulated in Part 2.
Saved the actual trajectory as a log.pkl file in the scripts directory when the program was shut down. Used the visualize.py script to visualize the trajectory by loading the saved log file
Actual Position Trajectory in 3D
simulation_video.mp4
Crazyflie 2.0 Simulation Video