Skip to content

Repository files navigation

Andross Logo

🏎️ Andross

The Definitive C++20 Vision, Physics, and XR Framework.
Beautiful by default. Real-time ready. Modular. Eliminates structural nesting bloat.

PhilosophyArchitectureInstallationQuickstartContributingCode of Conduct

C++ Standard CMake Code Coverage License PRs Welcome

Andross is a radically pragmatic, real-time SDK built entirely in idiomatic C++. Designed for high availability and deterministic physics, it provides clean, fluent C++ interfaces and ultra-fast data pipelines for autonomous driving simulation, teleoperation, and XR.


📖 Table of Contents


🧠 Philosophy

  • Zero config bloat – everything is configured through C++ APIs, not external files.
  • Beautiful by default – clean headers, RAII, strong types, no leaks.
  • Real-time ready – lock-free where it matters, custom allocators, deterministic physics.
  • Modular – use only what you need (video, physics, roadnet, render, network).

🛠️ How to Clone & Build

Welcome, contributors! Follow these steps to clone and build Andross locally.

Prerequisites

  • Git
  • CMake (v3.20+)
  • C++20 Compatible Compiler (AppleClang 14+, GCC 11+, Clang 14+, MSVC 2022+)
  • OpenCV (v4.5+) for hardware video pipelines

Local Build Instructions

  1. Clone the repository:

    git clone https://github.com/arpanpathak/andross.git
    cd andross
  2. Configure the project:

    cmake -B build -DCMAKE_BUILD_TYPE=Release
  3. Build the SDK and Tests:

    cmake --build build -j $(nproc)
  4. Run Unit Tests:

    ctest --test-dir build --output-on-failure

🏛️ Architecture & Modules

Andross is partitioned into distinct subsystems that can operate independently or orchestrate seamlessly out-of-the-box.

  • andross::video: Abstracted camera captures, frames with timestamping, and fast UDP/RTP streaming via zero-copy hardware encoding (NVENC/VAAPI).
  • andross::physics: A custom 2D deterministic rigid-body engine computing restitutive collisions and kinematic states.
  • andross::roadnet: Topology for Catmull-Rom lane splines and capacity-tracked "don't block the box" logic for intersection bottlenecks.
  • andross::render: GPU-accelerated compositing to overlay simulated environments cleanly onto raw video inputs.
  • andross::network: Lock-free binary messaging UDP servers for streaming out telemetry and handling remote commands.
  • andross::core: Orchestrator that ties everything together with a simple loop.

📦 Installation

To use Andross in your CMake project, add it via add_subdirectory or FetchContent:

# CMakeLists.txt
add_subdirectory(andross)
target_link_libraries(your_target PRIVATE andross)

Requires minimum C++20 support (GCC 11+, Clang 14+, MSVC 2022+). Required dependencies include OpenCV 4.5+ and GStreamer 1.18+.


🚀 Quick Start

Notice how clean and terse the orchestration flow is.

#include "andross/core/Application.hpp"
#include "andross/video/Camera.hpp"
#include "andross/physics/World.hpp"

int main() {
    // 1. Definition Phase (Initialization)
    andross::core::Application app;
    
    // 2. Wire Sub-components 
    // Uses fluent, RAII-enforced interfaces
    // app.use_video(andross::video::Camera::open(0));
    // app.use_physics(std::make_unique<andross::physics::World>());
    // app.use_roadnet(std::make_unique<andross::roadnet::RoadNetwork>());

    // 3. Execution (Fixed-timestep simulation loop)
    app.run();
    
    return 0;
}

Detailed run-throughs can be found in the examples directory.


🤝 Contributing

We welcome contributions of all shapes and sizes! Andross is a growing project and actively looking for help expanding its hardware encoder support and XR head-pose integration.

  1. Read our Contributing Guide to get started.
  2. Fork the repository, create a branch, and open a PR!
  3. If you find a bug or have an optimization suggestion, please open an Issue.

💬 Code of Conduct

We are committed to fostering a welcoming, respectful, and harassment-free community. Please review our Code of Conduct before participating.


📜 License

This project is licensed under the Apache 2.0 License. See the LICENSE file for more information.

Built with ❤️ for pragmatic C++ engineering.

About

Andross** is a gorgeous C++20/23 SDK engineered for low-latency Vision, Physics, and AR/VR integration without the configuration file cruft. It enforces strict pragmatism, ensuring high availability, deterministic execution, and deterministic memory limits via smart allocators and C++17/20 optimizations.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages