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

Real-Time Constrained Trajectory Optimization for Quadrotors via Hierarchical RRT and MPC

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)

MetricPID (Baseline)MPC (Proposed)Gain
Tracking RMSE [m]0.42960.0417
Tracking MSE []0.18450.0017
Computation Time [ms]0.2710.17N/A
Smoothness Score0.00370.002824%

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
MPC tracking performance showing minimal deviation.
PID Tracking
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.