SQuAT Plan is a Python-based framework for agile trajectory planning of quadrotors navigating through complex environments. It integrates nonlinear optimization (via GEKKO), obstacle avoidance, and both 3D and ROS-based visualizations.
squat-plan/
├── run.py # Unified entry point
├── pyproject.toml # Modern build system config
├── src/
│ └── squatplan/
│ ├── __init__.py
│ ├── main.py # Core simulation runner
│ ├── trajopt.py # Trajectory optimization logic
│ ├── plotter.py # Matplotlib-based plotting
│ ├── quaternion.py # Quaternion math utils
│ ├── forester.py # Obstacle generation
│ └── sphere_example_rviz.py # ROS RViz marker publishing
├── squat.rviz # RViz display config
├── LICENSE
├── README.md
└── presentation.pdf # MAE 271D presentation
- Trajectory optimization using GEKKO with full or simplified dynamics
- Obstacle avoidance using geometric constraints
- Quaternion-based orientation modeling
- 3D visualizations via Matplotlib and RViz
- Synthetic forest generation for randomized path planning scenarios
Clone the repo and install in editable mode:
git clone https://github.com/aaronjohnsabu1999/squat-plan.git
cd squat-plan
python3 -m venv .venv
source venv/bin/activate
pip install -e .[dev]Install ROS dependencies if on Linux or a WSL:
sudo apt install ros-${ROS_DISTRO}-rospy \
ros-${ROS_DISTRO}-geometry-msgs \
ros-${ROS_DISTRO}-visualization-msgspython run.pyTo launch RViz in parallel:
roscore
# Then in another terminal:
python src/squatplan/sphere_example_rviz.py- Trajectory and state evolution plots (position, velocity, quaternion, thrust, moments)
- 3D environment with spherical/cylindrical obstacles and path trajectory
Developed as a final project for MAE 271D — Control and Trajectory Planning for Autonomous Aerial Systems at UCLA.
Contributors:
- Aaron John Sabu
- Ryan Nemiroff
- Brett T. Lopez (Instructor)
Contact: {aaronjs, ryguyn, btlopez}@ucla.edu
MIT License © 2025
University of California, Los Angeles