https://github.com/aaronjs99/squat-plan
SQuAT Plan: Smooth Quadrotor Agile Trajectory Planning
https://github.com/aaronjs99/squat-plan
kinematics model-predictive-control motion-planning optimal-control python robot-simulation robotics trajectory-planning
Last synced: about 1 month ago
JSON representation
SQuAT Plan: Smooth Quadrotor Agile Trajectory Planning
- Host: GitHub
- URL: https://github.com/aaronjs99/squat-plan
- Owner: aaronjs99
- License: mit
- Created: 2022-10-20T21:39:33.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-07-16T00:16:37.000Z (11 months ago)
- Last Synced: 2025-09-08T22:25:26.063Z (9 months ago)
- Topics: kinematics, model-predictive-control, motion-planning, optimal-control, python, robot-simulation, robotics, trajectory-planning
- Language: Python
- Homepage:
- Size: 1.39 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SQuAT Plan: Smooth Quadrotor Agile Trajectory Planning




**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.
## Project Structure
```
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
```
## Features
- **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
## Getting Started
### Dependencies
Clone the repo and install in editable mode:
```bash
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:
```bash
sudo apt install ros-${ROS_DISTRO}-rospy \
ros-${ROS_DISTRO}-geometry-msgs \
ros-${ROS_DISTRO}-visualization-msgs
```
### Run Simulation
```bash
python run.py
```
To launch RViz in parallel:
```bash
roscore
# Then in another terminal:
python src/squatplan/sphere_example_rviz.py
```
## Output Example
- **Trajectory** and **state evolution** plots (position, velocity, quaternion, thrust, moments)
- **3D environment** with spherical/cylindrical obstacles and path trajectory
## Project Context
> 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`
## License
MIT License © 2025
University of California, Los Angeles