This project presents a hierarchical motion planning framework for quadrotor navigation in dynamic indoor environments. By combining a global planner with a local Model Predictive Controller (MPC), the system generates feasible, collision-free trajectories in real-time. As such, the research topic is
Read the full report
Watch Video
s
Quadrotor navigating the simulated indoor corridor, successfully avoiding both static tables and dynamic obstacles.
Read more about the project below, or download the full report. Also check out the code for this project on our github repository.
The navigation stack is split into two layers to balance global strategy with local reactivity.
-
Global Planner Computes a collision-free path from start to goal at the mission onset.
-
Local Planner (MPC + PID) Generates feasible trajectories updated continuously to handle robot dynamics and avoid dynamic obstacles. A low-level PID controller stabilizes high-speed angular dynamics using body torques.
Global Planner
The global planner is responsible for computing a collision-free path from the initial drone position to the designated goal. This module is executed once at the beginning of the trajectory to establish the reference framework. While two methods were initially explored - Probabilistic Roadmaps (PRM) with search and Rapidly-exploring Random Trees (RRT) - the final implementation utilizes RRT due to its superior computational speed in 3D environments.
Because raw RRT paths are inherently jagged due to their randomized nature, a post-processing step is required. The system utilizes Piecewise Cubic Hermite Interpolating Polynomial (PCHIP) to smooth the path. This strategy is preferred over traditional splines as it maintains the average shape of the path while completely preventing overshoot in significantly jagged regions.
Example comparison between paths generated with the implemented strategies
Local Planner
The local planner is responsible for following the global trajectory while dynamically avoiding obstacles by separating slow translational dynamics from fast rotational dynamics. It utilizes a discrete state-space model where the drone’s roll and pitch angles are treated as direct control inputs for translation, assuming the heading remains aligned with the global frame.
Obstacles are modeled using separating hyperplanes defined by a normal vector and a boundary scalar. These are implemented as soft constraints using slack variables to prevent solver infeasibility in cluttered environments, ensuring the drone maintains a safety margin without crashing the optimization.
By utilizing the OSQP solver, the computational complexity scales linearly with the prediction horizon, , rather than cubically. To further reduce overhead, parametrized programming is used to initialize the MPC problem once at the start rather than at every iteration.
The MPC outputs desired thrust and attitude angles, which are then processed by a high-frequency PID Attitude Controller to generate the necessary body torques.
Performance Results
The framework achieved a 10-fold improvement in tracking precision compared to a standard PID baseline.
PID vs. MPC Comparison (Figure-8 Trajectory)
| Metric | PID (Baseline) | MPC (Proposed) | Gain |
|---|---|---|---|
| Tracking RMSE [m] | 0.4296 | 0.0417 | |
| Tracking MSE [] | 0.1845 | 0.0017 | |
| Computation Time [ms] | 0.27 | 10.17 | N/A |
| Smoothness Score | 0.0037 | 0.0028 | 24% |
With a control frequency of 48 Hz (20.8 ms budget), the MPC maintains an average solve time of 7.48 ms, leaving a significant safety margin for onboard processing.
MPC tracking performance showing minimal deviation.
PID tracking performance showing significant corner-cutting.
Project carried out as a group for the course Planning & Decision Making as part of MSc Robotics at the Delft Univeristy of Technology. Developed by Gonçalo Fernández-Nespral Vaz, Carlota Alvear Llorente, María Sanz Piña, and Tomás Leggeat Bargueño.