# ankkitcodes/autonomous-drone-navigation architecture

> Architecture diagram of the GitHub repository ankkitcodes/autonomous-drone-navigation, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ankkitcodes/autonomous-drone-navigation
- Repository: https://github.com/ankkitcodes/autonomous-drone-navigation

## Overview

The main implemented workflow captures camera frames, detects obstacles, chooses a movement command, updates a bounded simulated drone position, and displays the camera and simulation views. The ROS 2 package is a separate, partial integration: its camera node publishes images, while its status listener consumes a status topic; the sampled code does not connect ROS messages to the detection or navigation pipeline. Simulation and Gazebo are README capabilities, but a Gazebo implementation is not present in the tree.

Main entry points: [`src/camera.py`](https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/src/camera.py) (Camera Workflow), [`ros2/drone_navigation/drone_navigation/camera_node.py`](https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/ros2/drone_navigation/drone_navigation/camera_node.py) (ROS Camera Node), [`src/obstacle_detection.py`](https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/src/obstacle_detection.py) (Obstacle Detection), [`src/navigation.py`](https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/src/navigation.py) (Movement Decision)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_vision["Vision and Navigation"]
  node_camera_workflow["Camera Workflow<br/>[camera.py]"]
  node_obstacle_detection["Obstacle Detection"]
  node_navigation["Movement Decision<br/>[navigation.py]"]
end

subgraph group_sim["Drone Simulation"]
  node_drone_controller["Drone Controller"]
end

subgraph group_ros["ROS 2 Integration"]
  node_ros_camera_node["ROS Camera Node<br/>[camera_node.py]"]
  node_ros_status_listener["Status Listener<br/>[status_listener.py]"]
  node_ros_image_topic["Image Topic"]
  node_ros_status_topic["Status Topic"]
end

node_user(("Operator"))
node_opencv_camera(("Camera Device"))
node_visual_output(("Visual Displays"))
node_ros_consumer(("Status Publisher"))
node_yolo_model["YOLO Model"]

node_user -->|"starts"| node_camera_workflow
node_camera_workflow -->|"reads frames"| node_opencv_camera
node_camera_workflow -->|"detects obstacles"| node_obstacle_detection
node_obstacle_detection -->|"runs inference"| node_yolo_model
node_camera_workflow -->|"chooses movement"| node_navigation
node_camera_workflow -->|"moves drone"| node_drone_controller
node_camera_workflow -->|"displays views"| node_visual_output
node_ros_camera_node -->|"reads frames"| node_opencv_camera
node_ros_camera_node -->|"publishes images"| node_ros_image_topic
node_ros_consumer -.->|"publishes status"| node_ros_status_topic
node_ros_status_topic -.->|"delivers status"| node_ros_status_listener

click node_camera_workflow "https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/src/camera.py"
click node_obstacle_detection "https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/src/obstacle_detection.py"
click node_navigation "https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/src/navigation.py"
click node_drone_controller "https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/src/drone_controller.py"
click node_ros_camera_node "https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/ros2/drone_navigation/drone_navigation/camera_node.py"
click node_ros_status_listener "https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/ros2/drone_navigation/drone_navigation/status_listener.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_camera_workflow,node_obstacle_detection,node_navigation toneBlue
class node_drone_controller toneAmber
class node_ros_camera_node,node_ros_status_listener,node_ros_image_topic,node_ros_status_topic toneMint
class node_user,node_opencv_camera,node_visual_output,node_ros_consumer,node_yolo_model toneIndigo
```

## Components

### Vision and Navigation

- [Camera Workflow](https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/src/camera.py): `src/camera.py`
- [Obstacle Detection](https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/src/obstacle_detection.py): `src/obstacle_detection.py`
- [Movement Decision](https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/src/navigation.py): `src/navigation.py`

### Drone Simulation

- [Drone Controller](https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/src/drone_controller.py): `src/drone_controller.py`

### ROS 2 Integration

- [ROS Camera Node](https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/ros2/drone_navigation/drone_navigation/camera_node.py): `ros2/drone_navigation/drone_navigation/camera_node.py`
- [Status Listener](https://github.com/ankkitcodes/autonomous-drone-navigation/blob/main/ros2/drone_navigation/drone_navigation/status_listener.py): `ros2/drone_navigation/drone_navigation/status_listener.py`
- **Image Topic**
- **Status Topic**

### Other components

- **Operator**
- **Camera Device**
- **Visual Displays**
- **Status Publisher**
- **YOLO Model**

## Connections

- Operator → Camera Workflow: starts
- Camera Workflow → Camera Device: reads frames
- Camera Workflow → Obstacle Detection: detects obstacles
- Obstacle Detection → YOLO Model: runs inference
- Camera Workflow → Movement Decision: chooses movement
- Camera Workflow → Drone Controller: moves drone
- Camera Workflow → Visual Displays: displays views
- ROS Camera Node → Camera Device: reads frames
- ROS Camera Node → Image Topic: publishes images
- Status Publisher → Status Topic: publishes status
- Status Topic → Status Listener: delivers status
