sunnypilot is a community fork of comma.ai's openpilot, an open-source driver assistance system (ADAS) designed for real-time operation on dedicated hardware (comma three/4, panda). The codebase implements the full autonomy stack: camera and radar perception, path planning, longitudinal/lateral control, driver monitoring, and localization via Kalman filters. It runs as a set of daemon processes orchestrated by a process manager, communicating through a shared-memory pub/sub messaging layer (msgq) with Cap'n Proto serialization. The system includes a full-featured Raylib-based UI with on-road HUD, settings panels, and an installer, plus cloud connectivity through Athena (remote commands, registration) and the fork-specific Sunnylink (settings backup/restore, telemetry). Beyond the core openpilot functionality, sunnypilot adds numerous extended features: Modular Assistive Driving System (MADS) for configurable steering modes, neural network lateral control (NNLC), map-based speed limit assist using OpenStreetMap data (mapd), intelligent cruise button management, dynamic experimental control, and a model manager that fetches and caches driving model bundles from a remote manifest. The fork maintains its own cereal schema extensions and custom UI layouts for both touch (mici) and big-screen (tizi) hardware variants. The repository includes extensive testing infrastructure: unit tests for most modules, process replay tests that compare outputs against reference logs, longitudinal/lateral maneuver simulations, and CAN bus analysis tools (cabana, replay). It also provides simulation bridges (MetaDrive, joystick) for closed-loop testing. The build system uses SCons for C++ components and uv for Python dependencies, with CI pipelines for model building, release drafting, and route uploads.
This repository is a comprehensive IoT device driver library for .NET nanoFramework. It provides bindings for hundreds of sensors, actuators, displays, and communication modules (e.g., BME280, SSD1306, NFC, Modbus, cellular modems, GPS). The architecture is a collection of independent driver projects, each with its own samples, tests, and documentation. Shared utility libraries (e.g., System.Device.Model, NumberHelper, SpanByte compatibility shims) support cross-cutting concerns. The codebase is actively maintained with frequent commits, but the sheer number of drivers (300+) leads to varying quality, some code duplication (e.g., SpanByte classes in multiple locations), and partially auto-generated code. Networking components like DHCP server, DNS server, and Home Assistant MQTT integration extend the library beyond raw sensor access. The primary use case is building embedded IoT applications on microcontrollers (ESP32, STM32) running nanoFramework.
This repository is a large collection of bare-metal firmware projects for STM32 microcontrollers (F0, F1, F3, G0, G4 families), authored by Edward V. Emelianov. It contains dozens of independent example and application projects covering USB CDC virtual serial ports, CAN bus gateways, sensor drivers (BMP280, MLX90640, DHT22, DS18B20, etc.), stepper motor control, servo control, LED displays, and more. The code is written in C with direct register access (no HAL) and uses a custom USB stack with ring-buffer-based I/O. Each project is self-contained with its own main.c, hardware initialization, and command parser, typically communicating over USB or UART with a simple text-based protocol. The architecture is monolithic per project: a main loop processes periodic tasks (ADC sampling, sensor reads, CAN message handling) and responds to commands received via USB or UART. Key entry points are the main.c files in each project directory. Data flows involve sensor acquisition (ADC, I2C, SPI), optional processing (median filtering, dew point calculation), and output via USB CDC, CAN, or UART. External dependencies are minimal: only an ARM GCC toolchain and the STM32 CMSIS-like headers provided in the inc/ folder. The repository also includes KiCad PCB designs and gerber files for many projects, indicating a full hardware+software development cycle. While the code is functional and covers a wide range of embedded use cases, it suffers from significant code duplication (ringbuffer.c, usb.c, strfunc.c are copy-pasted across many projects) and lacks a centralized library or build system. Deprecated folders and multiple versions of similar projects (e.g., chronometer_v2, chronometer_v3) add clutter. The repository is best viewed as a personal collection of working examples and prototypes rather than a polished framework. However, several components (ring buffer, string utilities, USB stack) are well-implemented and could be extracted for reuse in other STM32 projects.