# theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming architecture

> Architecture diagram of the GitHub repository theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming
- Repository: https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming

## Overview

This repository is a UAV obstacle-avoidance project spanning onboard RealSense-based perception and PX4 control, plus a Gazebo/PX4 simulation workflow. The documented onboard flow detects obstacles, uses them as constraints in nonlinear path planning, and sends trajectory setpoints to PX4; simulation also supports direct trajectory tracking and a simplified obstacle-avoidance mode. Sampled source confirms point-cloud publishing, offboard control, and frame transforms. Some subsystem connections are documented but their full implementation was not sampled, so those links are marked as documented rather than inferred from imports.

Main entry points: [`Onboard Codes/obstacle_avoidance_ws/autonomous_obstacle_avoidance.py`](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/obstacle_avoidance_ws/autonomous_obstacle_avoidance.py) (Obstacle Avoidance Planner), [`Simulation Codes/run_baylands_total-1.sh`](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Simulation%20Codes/run_baylands_total-1.sh) (PX4 Gazebo Simulation), [`Onboard Codes/ros_pointcloud_publisher.py`](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/ros_pointcloud_publisher.py) (Point-cloud Processing), [`Onboard Codes/obstacle_avoidance_ws/obstacle_avoidance.py`](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/obstacle_avoidance_ws/obstacle_avoidance.py) (Nonlinear Avoidance)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_perception["Onboard Perception"]
  node_cloud["Point-cloud Processing"]
  node_depth["Depth Estimation<br/>[depth_etimation.py]"]
end

subgraph group_planning["Path Planning"]
  node_obstacle["Obstacle Avoidance Planner"]
  node_optimizer["Nonlinear Avoidance"]
  node_tracker["Trajectory Tracker"]
end

subgraph group_control["PX4 Control"]
  node_controller["PX4 Offboard Control"]
  node_px4com["PX4 ROS Examples"]
  node_transforms["Frame Transforms"]
end

subgraph group_simulation["Simulation"]
  node_simavoid["Simulation Avoidance"]
  node_simtracker["Simulation Tracker"]
  node_simvehicle["PX4 Gazebo Simulation"]
  node_assignment["Waypoint Demo<br/>[assignment1.py]"]
end

node_camera(("RealSense D435i"))
node_vehicle(("PX4 Flight Stack"))
node_operator(("Pilot / QGroundControl"))

node_camera -->|"supplies point cloud"| node_cloud
node_cloud -.->|"publishes obstacle data"| node_obstacle
node_depth -.->|"provides depth estimates"| node_obstacle
node_obstacle -.->|"plans around obstacles"| node_optimizer
node_obstacle -.->|"publishes setpoints"| node_vehicle
node_optimizer -.->|"publishes setpoints"| node_vehicle
node_tracker -.->|"publishes setpoints"| node_vehicle
node_controller -->|"sends commands"| node_vehicle
node_vehicle -->|"state feedback"| node_controller
node_px4com -.->|"bridges PX4 messages"| node_vehicle
node_transforms -.->|"transforms frames"| node_px4com
node_operator -.->|"starts simulation"| node_simvehicle
node_operator -.->|"runs avoidance"| node_simavoid
node_operator -.->|"runs tracker"| node_simtracker
node_simavoid -.->|"sends setpoints"| node_simvehicle
node_simtracker -.->|"sends setpoints"| node_simvehicle
node_assignment -.->|"publishes waypoints"| node_vehicle

click node_cloud "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/ros_pointcloud_publisher.py"
click node_depth "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/obstacle_avoidance_ws/depth_etimation.py"
click node_obstacle "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/obstacle_avoidance_ws/autonomous_obstacle_avoidance.py"
click node_optimizer "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/obstacle_avoidance_ws/obstacle_avoidance.py"
click node_tracker "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/trajectory_controller.py"
click node_controller "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/trajectory_controller.py"
click node_px4com "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/ros2_ws/src/px4_ros_com/src/examples/offboard/offboard_control.cpp"
click node_transforms "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/ros2_ws/src/px4_ros_com/src/lib/frame_transforms.cpp"
click node_simavoid "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Simulation%20Codes/final_project_ws/src/obstacle_avoidance/scripts/obstacle_avoidance.py"
click node_simtracker "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Simulation%20Codes/final_project_ws/src/obstacle_avoidance/scripts/trajectory_tracker.py"
click node_simvehicle "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Simulation%20Codes/run_baylands_total-1.sh"
click node_assignment "https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Simulation%20Codes/assignment1/src/assignment1/src/assignment1.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cloud,node_depth toneBlue
class node_obstacle,node_optimizer,node_tracker toneAmber
class node_controller,node_px4com,node_transforms toneMint
class node_simavoid,node_simtracker,node_simvehicle,node_assignment toneRose
class node_camera,node_vehicle,node_operator toneIndigo
```

## Components

### Onboard Perception

- [Point-cloud Processing](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/ros_pointcloud_publisher.py): `Onboard Codes/ros_pointcloud_publisher.py`
- [Depth Estimation](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/obstacle_avoidance_ws/depth_etimation.py): `Onboard Codes/obstacle_avoidance_ws/depth_etimation.py`

### Path Planning

- [Obstacle Avoidance Planner](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/obstacle_avoidance_ws/autonomous_obstacle_avoidance.py): `Onboard Codes/obstacle_avoidance_ws/autonomous_obstacle_avoidance.py`
- [Nonlinear Avoidance](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/obstacle_avoidance_ws/obstacle_avoidance.py): `Onboard Codes/obstacle_avoidance_ws/obstacle_avoidance.py`
- [Trajectory Tracker](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/trajectory_controller.py): `Onboard Codes/trajectory_controller.py`

### PX4 Control

- [PX4 Offboard Control](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/trajectory_controller.py): `Onboard Codes/trajectory_controller.py`
- [PX4 ROS Examples](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/ros2_ws/src/px4_ros_com/src/examples/offboard/offboard_control.cpp): `Onboard Codes/ros2_ws/src/px4_ros_com/src/examples/offboard/offboard_control.cpp`
- [Frame Transforms](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Onboard%20Codes/ros2_ws/src/px4_ros_com/src/lib/frame_transforms.cpp): `Onboard Codes/ros2_ws/src/px4_ros_com/src/lib/frame_transforms.cpp`

### Simulation

- [Simulation Avoidance](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Simulation%20Codes/final_project_ws/src/obstacle_avoidance/scripts/obstacle_avoidance.py): `Simulation Codes/final_project_ws/src/obstacle_avoidance/scripts/obstacle_avoidance.py`
- [Simulation Tracker](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Simulation%20Codes/final_project_ws/src/obstacle_avoidance/scripts/trajectory_tracker.py): `Simulation Codes/final_project_ws/src/obstacle_avoidance/scripts/trajectory_tracker.py`
- [PX4 Gazebo Simulation](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Simulation%20Codes/run_baylands_total-1.sh): `Simulation Codes/run_baylands_total-1.sh`
- [Waypoint Demo](https://github.com/theunknowninfinite/real-time-uav-obstacle-avoidance-using-nonlinear-programming/blob/main/Simulation%20Codes/assignment1/src/assignment1/src/assignment1.py): `Simulation Codes/assignment1/src/assignment1/src/assignment1.py`

### Other components

- **RealSense D435i**
- **PX4 Flight Stack**
- **Pilot / QGroundControl**

## Connections

- RealSense D435i → Point-cloud Processing: supplies point cloud
- Point-cloud Processing → Obstacle Avoidance Planner: publishes obstacle data
- Depth Estimation → Obstacle Avoidance Planner: provides depth estimates
- Obstacle Avoidance Planner → Nonlinear Avoidance: plans around obstacles
- Obstacle Avoidance Planner → PX4 Flight Stack: publishes setpoints
- Nonlinear Avoidance → PX4 Flight Stack: publishes setpoints
- Trajectory Tracker → PX4 Flight Stack: publishes setpoints
- PX4 Offboard Control → PX4 Flight Stack: sends commands
- PX4 Flight Stack → PX4 Offboard Control: state feedback
- PX4 ROS Examples → PX4 Flight Stack: bridges PX4 messages
- Frame Transforms → PX4 ROS Examples: transforms frames
- Pilot / QGroundControl → PX4 Gazebo Simulation: starts simulation
- Pilot / QGroundControl → Simulation Avoidance: runs avoidance
- Pilot / QGroundControl → Simulation Tracker: runs tracker
- Simulation Avoidance → PX4 Gazebo Simulation: sends setpoints
- Simulation Tracker → PX4 Gazebo Simulation: sends setpoints
- Waypoint Demo → PX4 Flight Stack: publishes waypoints
