Astra Perception

ADAS for unstructured road environments, split into a vision engine and a control ECU

Status
Research
Version
1.0
Platform
Desktop app
License
Not specified
01 · Problem

Lane-marking-based ADAS struggles on roads with faded markings, potholes and varied paving; Astra models the physical drivable surface instead of relying only on lines.

02 · Architecture

How it is put together.

Astra Perception is a PyQt6 ADAS application for unstructured roads that combines YOLOv8 Small detection with drivable-surface modelling and threat analysis. It is split into a Vision Engine that runs inference and a standalone Control ECU dashboard that receives perception packets over UDP and runs simulated Level 1 control with PID controllers. Native C++ extensions built with pybind11 provide controller and vision routines.

Application entrymain.pyVision Engineinference.pyControl ECUvehicle_control.pyControllerscontrollers.pyNative extensionssrc/perception packets (UDP)perception packets (UDP)Application entrymain.pyVision Engineinference.pyControl ECUvehicle_control.pyControllerscontrollers.pyNative extensionssrc/perception packets (UDP)perception packets (UDP)
FIG. 01Modules and data flows, from the repository layout and documentation.
  1. 1

    Application entry

    PyQt6 app with launch modes

    main.py
  2. 2

    Vision Engine

    YOLOv8 inference and perception

    inference.py
  3. 3

    Control ECU

    Vehicle logic, trajectory planning and simulated actuators

    vehicle_control.py
  4. 4

    Controllers

    PID controllers (Python and C++ astra_core extension)

    controllers.py
  5. 5

    Native extensions

    pybind11 modules astra_core (controllers) and astra_vision (vision core)

    src/
03 · Capabilities

Specification.

Object detection
Ultralytics YOLOv8 Small on CUDA FP16, with CPU fallback
Road surface
Multi-scale drivable-surface modelling; pothole and speed-bump detection via adaptive Gaussian filtering against the drivable mask
Tracking
Kalman-filtered centroid tracking; objects persist up to 3 frames when detection drops out
Threat logic
Cut-in detection and single most-critical-threat selection
Control simulation
Level 1 control simulation with PID steering and acceleration/braking
Architecture
Vision Engine and Control ECU as separate processes linked by UDP
Launch modes
Vision Engine, Control ECU, or Integrated Stack
Runs on
PyQt6 desktop application; README lists an NVIDIA CUDA 12 GPU as a prerequisite with CPU fallback
Stack
  • Python 3.12+
  • PyQt6
  • OpenCV
  • Ultralytics YOLOv8
  • PyTorch
  • ONNX Runtime
  • NumPy
  • pyttsx3
  • C++
  • pybind11