The Definitive C++20 Vision, Physics, and XR Framework.
Beautiful by default. Real-time ready. Modular. Eliminates structural nesting bloat.
Philosophy • Architecture • Installation • Quickstart • Contributing • Code of Conduct
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.
- 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).
Welcome, contributors! Follow these steps to clone and build Andross locally.
- Git
- CMake (v3.20+)
- C++20 Compatible Compiler (AppleClang 14+, GCC 11+, Clang 14+, MSVC 2022+)
- OpenCV (v4.5+) for hardware video pipelines
-
Clone the repository:
git clone https://github.com/arpanpathak/andross.git cd andross -
Configure the project:
cmake -B build -DCMAKE_BUILD_TYPE=Release
-
Build the SDK and Tests:
cmake --build build -j $(nproc) -
Run Unit Tests:
ctest --test-dir build --output-on-failure
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.
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+.
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.
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.
- Read our Contributing Guide to get started.
- Fork the repository, create a branch, and open a PR!
- If you find a bug or have an optimization suggestion, please open an Issue.
We are committed to fostering a welcoming, respectful, and harassment-free community. Please review our Code of Conduct before participating.
This project is licensed under the Apache 2.0 License. See the LICENSE file for more information.
Built with ❤️ for pragmatic C++ engineering.