# purdue-arc/arc-drone-delivery architecture

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

- Interactive diagram: https://gitdiagram.com/purdue-arc/arc-drone-delivery
- Repository: https://github.com/purdue-arc/arc-drone-delivery

## Overview

ARC Drone Delivery is a ROS 2/PX4 drone-delivery monorepo, with simulation and supporting planning and perception tools. A representative mission starts from an operator or mission request, uses navigation and mapping to transit, detects an AprilTag for precision landing, and sends flight commands to PX4. The tree and README support these product areas, but do not expose the full website, obstacle-avoidance, octree, or mission wiring. Edges therefore show only relationships stated in the README or sampled launch/source excerpts.

Main entry points: [`navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/mission_controller.cpp`](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/mission_controller.cpp) (Mission Controller), [`navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/launch/landing_pipeline.launch.py`](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/launch/landing_pipeline.launch.py) (Landing Pipeline), [`navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/apriltag_detector.cpp`](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/apriltag_detector.cpp) (AprilTag Detector), [`navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/landing_controller.cpp`](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/landing_controller.cpp) (Landing Controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mission["Mission And Landing"]
  node_pipeline["Landing Pipeline"]
  node_mission_ctl["Mission Controller"]
  node_landing_ctl["Landing Controller"]
  node_tag_detect["AprilTag Detector"]
  node_zed_stream["ZED Streamer"]
end

subgraph group_navigation["Navigation And Mapping"]
  node_nav2_bridge["Nav2 Path Bridge"]
  node_fast_lio["FAST-LIO Mapping<br/>[laserMapping.cpp]"]
  node_lio_bridge["LIO Odometry Bridge"]
  node_cloud_grid["Costmap To Cloud"]
  node_cloud_scan["Cloud To Scan<br/>[cloud_to_scan.cpp]"]
  node_flight_filter["Flight-Level Filter"]
  node_sim_launch["Navigation Launch"]
end

subgraph group_sensors["Sensors And Transforms"]
  node_livox_driver["Livox Driver"]
  node_tf_broadcasters["Odometry And TF"]
end

subgraph group_planning["Planning And Visualization"]
  node_path_algorithms["Path Algorithms<br/>[a_star.cpp]"]
  node_avoidance_viz["Avoidance Visualizer<br/>[gui.py]"]
end

node_operator(("Operator"))
node_px4["PX4 Flight Controller"]
node_camera(("Video Stream"))
node_lidar(("LiDAR Sensor"))

node_operator -->|"starts mission"| node_mission_ctl
node_pipeline -->|"launches"| node_tag_detect
node_pipeline -->|"launches"| node_mission_ctl
node_pipeline -->|"launches"| node_landing_ctl
node_camera -->|"sends video"| node_zed_stream
node_zed_stream -->|"decodes stream"| node_tag_detect
node_tag_detect -->|"publishes target pose"| node_mission_ctl
node_mission_ctl -->|"sends flight commands"| node_px4
node_landing_ctl -->|"publishes setpoints"| node_px4
node_livox_driver -->|"provides LiDAR data"| node_fast_lio
node_lidar -->|"sends scans"| node_livox_driver
node_fast_lio -->|"provides odometry"| node_lio_bridge
node_cloud_grid -->|"converts cloud"| node_cloud_scan
node_sim_launch -->|"launches"| node_tf_broadcasters

click node_pipeline "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/launch/landing_pipeline.launch.py"
click node_mission_ctl "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/mission_controller.cpp"
click node_landing_ctl "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/landing_controller.cpp"
click node_tag_detect "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/apriltag_detector.cpp"
click node_zed_stream "https://github.com/purdue-arc/arc-drone-delivery/blob/main/landing/zed_apriltag_streaming/src/zed_gst_pipeline.cpp"
click node_nav2_bridge "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/nav2_path_bridge.cpp"
click node_fast_lio "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/fast_lio/src/laserMapping.cpp"
click node_lio_bridge "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/lio_odom_bridge.cpp"
click node_cloud_grid "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/costmap_to_cloud.cpp"
click node_cloud_scan "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/cloud_to_scan.cpp"
click node_flight_filter "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/flight_level_filter.cpp"
click node_livox_driver "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/livox_ros_driver2/src/livox_ros_driver2.cpp"
click node_tf_broadcasters "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/drone_nav/src/odom_publisher_broadcaster.cpp"
click node_path_algorithms "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/Path_Planning/a_star.cpp"
click node_avoidance_viz "https://github.com/purdue-arc/arc-drone-delivery/blob/main/avoidance-viz/gui.py"
click node_sim_launch "https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/drone_nav/launch/navigation.launch.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_pipeline,node_mission_ctl,node_landing_ctl,node_tag_detect,node_zed_stream toneBlue
class node_nav2_bridge,node_fast_lio,node_lio_bridge,node_cloud_grid,node_cloud_scan,node_flight_filter,node_sim_launch toneAmber
class node_livox_driver,node_tf_broadcasters toneMint
class node_path_algorithms,node_avoidance_viz toneRose
class node_operator,node_px4,node_camera,node_lidar toneIndigo
```

## Components

### Mission And Landing

- [Landing Pipeline](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/launch/landing_pipeline.launch.py): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/launch/landing_pipeline.launch.py`
- [Mission Controller](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/mission_controller.cpp): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/mission_controller.cpp`
- [Landing Controller](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/landing_controller.cpp): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/landing_controller.cpp`
- [AprilTag Detector](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/apriltag_detector.cpp): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/apriltag_detector.cpp`
- [ZED Streamer](https://github.com/purdue-arc/arc-drone-delivery/blob/main/landing/zed_apriltag_streaming/src/zed_gst_pipeline.cpp): `landing/zed_apriltag_streaming/src/zed_gst_pipeline.cpp`

### Navigation And Mapping

- [Nav2 Path Bridge](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/nav2_path_bridge.cpp): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/nav2_path_bridge.cpp`
- [FAST-LIO Mapping](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/fast_lio/src/laserMapping.cpp): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/fast_lio/src/laserMapping.cpp`
- [LIO Odometry Bridge](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/lio_odom_bridge.cpp): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/lio_odom_bridge.cpp`
- [Costmap To Cloud](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/costmap_to_cloud.cpp): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/costmap_to_cloud.cpp`
- [Cloud To Scan](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/cloud_to_scan.cpp): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/cloud_to_scan.cpp`
- [Flight-Level Filter](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/flight_level_filter.cpp): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/vision_landing/src/flight_level_filter.cpp`
- [Navigation Launch](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/drone_nav/launch/navigation.launch.py): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/drone_nav/launch/navigation.launch.py`

### Sensors And Transforms

- [Livox Driver](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/livox_ros_driver2/src/livox_ros_driver2.cpp): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/livox_ros_driver2/src/livox_ros_driver2.cpp`
- [Odometry And TF](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/drone_nav/src/odom_publisher_broadcaster.cpp): `navigation-stack/DD_Nav_WS/dd_gazebo_ws/src/drone_nav/src/odom_publisher_broadcaster.cpp`

### Planning And Visualization

- [Path Algorithms](https://github.com/purdue-arc/arc-drone-delivery/blob/main/navigation-stack/DD_Nav_WS/Path_Planning/a_star.cpp): `navigation-stack/DD_Nav_WS/Path_Planning/a_star.cpp`
- [Avoidance Visualizer](https://github.com/purdue-arc/arc-drone-delivery/blob/main/avoidance-viz/gui.py): `avoidance-viz/gui.py`

### Other components

- **Operator**
- **PX4 Flight Controller**
- **Video Stream**
- **LiDAR Sensor**

## Connections

- Operator → Mission Controller: starts mission
- Landing Pipeline → AprilTag Detector: launches
- Landing Pipeline → Mission Controller: launches
- Landing Pipeline → Landing Controller: launches
- Video Stream → ZED Streamer: sends video
- ZED Streamer → AprilTag Detector: decodes stream
- AprilTag Detector → Mission Controller: publishes target pose
- Mission Controller → PX4 Flight Controller: sends flight commands
- Landing Controller → PX4 Flight Controller: publishes setpoints
- Livox Driver → FAST-LIO Mapping: provides LiDAR data
- LiDAR Sensor → Livox Driver: sends scans
- FAST-LIO Mapping → LIO Odometry Bridge: provides odometry
- Costmap To Cloud → Cloud To Scan: converts cloud
- Navigation Launch → Odometry And TF: launches
