openpilot is a full-stack autonomous driver assistance system that runs on embedded Linux hardware (comma four/three) and controls 300+ car models. It is a safety-critical, real-time system written primarily in Python and C/C++, with a custom messaging layer (cereal/msgq) and a Cap'n Proto-based schema for all inter-process communication. The architecture is a collection of independent processes (controlsd, plannerd, radard, modeld, locationd, calibrationd, dmonitoringd, etc.) communicating via a pub/sub message queue, managed by a central process manager. The system ingests CAN bus data, camera streams (road, wide-road, driver), IMU/GPS sensor data, and runs neural network models (ONNX/tinygrad) for perception and planning. The codebase demonstrates strong engineering discipline: a comprehensive process replay regression testing framework that replays logged routes through individual processes and compares outputs bit-for-bit; a safety model implemented in the panda firmware (separate submodule) with ISO 26262 guidelines; real-time scheduling and CPU affinity management across processes; and a sophisticated build system using SCons with Cython compilation. The UI is built on raylib (with a Qt-based Cabana tool for CAN analysis), and there's a MetaDrive simulator bridge for development. Key architectural patterns include: a generic car interface abstraction (opendbc) that allows supporting 300+ car models through fingerprinting and parameter configuration; a model-driven control pipeline where neural network outputs (desired curvature, lead vehicle trajectories) feed into lateral controllers (PID, torque-based, curvature-based, angle-based) and longitudinal MPC planners; an EKF-based sensor fusion system (locationd) combining GPS, IMU, and vehicle odometry; and a driver monitoring system using a separate neural network for distraction detection. The system uses a parameter store (params) backed by a filesystem for persistent configuration. The repository includes extensive tooling: replay infrastructure for regression testing, PlotJuggler/Cabana integration for data visualization, automated car porting tools with fuzzy fingerprinting, release automation with stripped builds, and a comprehensive CI/CD pipeline with GitHub Actions. The codebase is actively maintained with daily commits, a structured release process (release-mici/release-tizi branches), and active community contribution through Discord and GitHub issues.
Apollo is a comprehensive autonomous driving platform developed by Baidu, providing a full software stack for self-driving vehicles. The repository contains a modular architecture built on Cyber RT, a high-performance runtime framework optimized for autonomous driving scenarios with low latency and high throughput. Key modules include perception (camera, LiDAR, radar, sensor fusion), planning (scenario-based with multiple planners), control (PID, LQR, MPC controllers), localization (RTK, NDT, MSF), prediction, routing, and V2X communication. The system integrates with hardware through extensive driver support for various sensors (Velodyne, Hesai, Continental radar, Mobileye, etc.) and vehicle platforms (Lincoln, Lexus, Geely, etc.). Dreamview provides a web-based visualization and monitoring interface. The codebase demonstrates strong engineering practices with clear module boundaries, extensive configuration management, comprehensive testing infrastructure, and support for both x86_64 and ARM64 (Orin) platforms. Recent versions introduce package management for easier deployment, Dreamview Plus for enhanced developer experience, and cloud-based model training services (Apollo Fuel).
This repository contains the original Apollo Guidance Computer (AGC) source code for the Apollo 11 mission, split into Comanche055 (Command Module) and Luminary099 (Lunar Module). The code is written in AGC assembly language and is a historical artifact, not runnable software: it requires the yaYUL assembler and a Virtual AGC emulator to execute. It implements real-time guidance, navigation, control, telemetry, and system routines, with extensive inline documentation including call stacks, input/output specs, and alarm codes.