For hardware in the loop simulators, the strongest matches are robotlocomotion/drake (Drake is a powerful robotics simulation and trajectory optimization), apolloauto/apollo (Apollo is an autonomous driving stack and robotics middleware) and espressif/esp-idf (This framework provides low-level hardware abstraction and peripheral control). open-smartwatch/open-smartwatch-os and arduino/arduino round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Explore hand-picked open-source hardware-in-the-loop simulators, ranked by GitHub stars and activity, to find the best fit.
Drake is a robotics simulation framework and control system modeling tool used for designing, simulating, and verifying the dynamics of complex robotic systems. It functions as a multibody dynamics simulator and a mathematical optimization library, providing a suite of algorithms for trajectory optimization and the simulation of articulated robots. The framework is distinguished by its block-diagram system for composing dynamical subsystems and its ability to formulate and solve diverse mathematical programs, including linear, quadratic, and nonconvex nonlinear problems. It supports specializ
Drake is a powerful robotics simulation and trajectory optimization framework, but it is not a dedicated hardware-in-the-loop simulation tool for real-time controller testing against physical I/O.
Apollo is a comprehensive software stack designed for autonomous vehicle development, providing the necessary components for perception, planning, and control. It functions as a high-performance robotics middleware, utilizing a publish-subscribe data bus to facilitate low-latency communication between distributed modules and hardware sensors. The platform integrates data from cameras, lidar, and radar through a sensor fusion framework to generate a real-time environmental model for navigation. The system features a component-based runtime framework that manages task scheduling and resource al
Apollo is an autonomous driving stack and robotics middleware rather than a dedicated hardware-in-the-loop simulation platform for controller testing, despite listing related hardware tags.
The Espressif SoC Development Framework is a comprehensive toolset for developing, compiling, and flashing applications targeting Espressif system-on-chips. It serves as an embedded toolchain orchestrator and a hardware abstraction layer that simplifies the control of low-level peripherals, memory mapping, and chip-specific registers. The framework provides a dedicated IoT connectivity stack for implementing Wi-Fi, Bluetooth, Zigbee, and Ethernet communication on microcontrollers. It also includes an embedded real-time operating system integration layer to manage multitasking and scheduling o
This framework provides low-level hardware abstraction and peripheral control for microcontroller development, but it is an embedded SDK rather than a complete hardware-in-the-loop simulation platform for testing complex plant models.
Open-smartwatch-os is an operating system designed for resource-constrained wearable devices. It provides a development and testing environment that allows developers to build, validate, and debug firmware for smartwatches within a simulated desktop environment before deploying to physical hardware. The project distinguishes itself through a comprehensive suite of tools for hardware emulation and remote diagnostics. By utilizing a hardware abstraction layer and modular driver architecture, it decouples core system logic from specific physical components. This enables developers to run the ope
This repository is a firmware-in-the-loop operating system and emulator for wearable devices, which is a neighbouring domain rather than a full hardware-in-the-loop simulation platform for controllers.
Arduino is a physical computing platform and an open hardware standard used to build interactive electronic objects and standalone devices. It provides a C++ microcontroller IDE and an embedded systems framework for writing, compiling, and uploading code to microcontroller boards. The ecosystem facilitates embedded systems programming and interactive hardware prototyping, allowing for the creation of devices that respond to environmental changes or user input. It enables the development of physical computing projects by managing the connection and flashing of code to various hardware boards.
Arduino is a physical computing and microcontroller development platform rather than a hardware-in-the-loop simulation tool for testing complex controllers in real-time.
Chrono is a multi-physics simulation suite that functions as a multibody dynamics simulator, a finite element analysis tool, and a robotics simulation framework. It provides specialized solvers for fluid-solid interaction and distributed physics engines capable of synchronizing multiple agents across a network. The project features a dedicated pipeline for converting CAD assemblies into simulation-ready formats and integrates directly with robot operating systems to validate autonomous control logic and sensors. It differentiates itself through the use of WebAssembly for portable browser-base
Project Chrono is a powerful physics and robotics simulation engine, but it lacks the dedicated hardware-in-the-loop testing, real-time I/O interfaces, and plant-controller integration required for a complete HIL simulator.
NuttX is a POSIX-compliant real-time operating system designed for resource-constrained embedded environments. It functions as a scalable microcontroller OS that provides a Unix-like environment for managing hardware and running applications across architectures ranging from 8-bit to 64-bit. The system ensures high software portability by implementing a kernel that follows POSIX and ANSI standards. This allows developers to create portable embedded applications using standardized API calls across diverse hardware architectures. The project includes a modular kernel architecture and a hardwar
Apache NuttX is a real-time operating system for embedded controllers rather than a hardware-in-the-loop simulation platform or plant modeling environment.
SDL is a cross-platform development library that provides low-level access to audio, keyboard, mouse, joystick, and graphics hardware. It functions as a hardware abstraction layer, mapping diverse operating system interfaces into a unified set of functions to ensure consistent performance across different computing environments. The library serves as a foundation for multimedia and interactive application development by providing an integrated audio processing engine and a graphics rendering framework. It manages the complexities of hardware communication by normalizing raw input events and p
This project provides low-level multimedia and input hardware abstraction, but it is a game development and graphics library rather than a real-time hardware-in-the-loop simulation environment for embedded testing.
This project is flight control autopilot software designed as a real-time operating system for managing the flight dynamics and navigation of autonomous multicopters, fixed-wing aircraft, and rovers. It serves as a multi-vehicle autopilot framework that supports various aircraft configurations, including vertical takeoff and landing platforms across industrial environments. The system includes a MAVLink communication stack for exchanging telemetry and command data between unmanned vehicles and ground control stations. It also provides a software-in-the-loop flight simulator to test autopilot
This repository provides an autopilot firmware and simulation environment for aerial vehicles rather than a general-purpose hardware-in-the-loop simulation platform for testing external controllers.
Pinocchio is a multi-body dynamics engine and rigid body physics library designed for computing forward and inverse kinematics and dynamics for articulated rigid-body systems. It functions as a robot kinematics solver and model parser, enabling the analysis of complex robotic systems through kinematic and dynamic computations. The project distinguishes itself with specialized capabilities for constrained dynamics, including the calculation of contact impulses and centroidal momentum. It provides a parallel processing collision detection system for computing minimal distances between rigid bod
Pinocchio is a rigid body physics and kinematics library for robotics rather than a complete hardware-in-the-loop simulation platform with real-time I/O interfaces and plant testing capabilities.
miniaudio is a single-file C audio library used for audio playback, capture, and hardware interfacing across multiple operating systems. It functions as an audio hardware abstraction layer, an audio processing engine, an audio synthesis engine, and a codec and resampler. The project implements a node-graph based system for routing digital audio signals, mixing, and 3D spatialization. It also includes a programmatic generator for noise patterns and basic waveforms used for sound creation and signal testing. The library covers digital signal processing, including audio format conversion and sa
This repository is a single-file C audio library for playback and capture rather than a hardware-in-the-loop simulation framework for testing embedded controllers.
Contiki is an operating system designed for resource-constrained embedded devices and the Internet of Things. It provides a lightweight, event-driven kernel that enables multitasking and low-power wireless network connectivity on hardware with extremely limited memory and processing power. The system distinguishes itself through a stackless threading model that allows for a blocking-style programming interface while maintaining a minimal memory footprint. It supports dynamic module and firmware management, enabling the loading and linking of relocatable binary code at runtime to update applic
Contiki is an operating system for resource-constrained embedded devices rather than a simulation environment, making it a building block for embedded systems rather than a hardware-in-the-loop simulator.
OpenDBC is a CAN bus interface library and telemetry parser designed to read and write messages to a vehicle network. It functions as an automotive hardware abstraction layer that maps generic control signals to model-specific bus IDs across different vehicle brands, while acting as a control system that converts high-level steering and acceleration requests into raw binary packets for vehicle actuators. The project includes a vehicle network safety gateway that restricts or blocks specific control messages based on the system state to prevent unsafe maneuvers. It provides a standardized way
This project provides a CAN bus interface library and hardware abstraction layer for vehicle networks, but it is a communication tool rather than a complete real-time hardware-in-the-loop simulation environment.
AirSim is a high-fidelity simulation platform designed for the development and testing of autonomous vehicles. Built as a plugin for game engines, it provides a physics-based environment that models vehicle dynamics and sensor data, serving as a foundation for robotics research, computer vision training, and reinforcement learning. The platform distinguishes itself through its support for hardware-in-the-loop and software-in-the-loop testing, allowing developers to validate control logic and firmware against real-world signals or concurrent processes. It offers extensive programmatic control
AirSim is a high-fidelity simulation platform for autonomous vehicles that supports hardware-in-the-loop testing, but it functions primarily as a game-engine plugin for robotics and drone research rather than a dedicated plant simulation environment for industrial controllers.
Anbox is an Android container environment and runtime designed to execute Android applications on Linux desktops. It utilizes a container-based system to run the Android operating system without the overhead associated with traditional hardware virtualization. The system features a hardware abstraction layer that routes hardware access and sensor data through a host daemon to provide accelerated rendering. It integrates with the Linux desktop by mapping individual Android application layers to separate windows, allowing apps to function as distinct desktop applications. The project supports
Anbox is an Android container virtualization runtime for Linux desktops rather than a hardware-in-the-loop simulation framework for testing embedded or aerospace controllers.
This project is a comprehensive research platform designed for the end-to-end lifecycle of robotic learning. It provides a modular framework for training neural network policies—specifically through imitation and reinforcement learning—and deploying them onto physical robotic hardware. By offering a unified interface for hardware abstraction, the platform decouples high-level control logic from the specific sensors and actuators of diverse robotic systems. The framework distinguishes itself through a standardized approach to data and policy management. It utilizes a consistent schema for reco
This repository is a machine learning and robotics platform focused on training neural network policies rather than providing real-time hardware-in-the-loop plant simulation for testing controllers.
This project is a high-performance, lightweight C graphics library designed for creating interactive user interfaces on resource-constrained embedded hardware. It functions as a comprehensive framework that provides a widget toolkit, a rendering engine, and hardware-agnostic drivers to support the development of graphical displays on microcontrollers and embedded systems. The framework distinguishes itself through a flexible, object-oriented widget hierarchy and a declarative layout engine that supports responsive design patterns like flexbox and grid systems. It enables developers to synchro
This project is an embedded graphics library for rendering user interfaces rather than a real-time plant simulation tool for hardware-in-the-loop testing.
Openpilot is an open-source driver assistance system that integrates with vehicle control units to provide automated steering, acceleration, and braking. It functions as an automotive robotics middleware, utilizing a specialized runtime environment to process sensor data and execute real-time control commands that manage vehicle dynamics. The platform distinguishes itself through a hardware-agnostic interface that translates standardized driving commands into the proprietary protocols required by a wide range of vehicle makes and models. It employs neural-network-based path planning to predic
Openpilot is an autonomous driving and driver assistance system rather than a general-purpose hardware-in-the-loop simulation framework for testing controllers.
Embassy is an asynchronous framework for microcontrollers that provides a runtime for cooperative multitasking. It enables the execution of multiple concurrent tasks to maximize energy efficiency and CPU usage, utilizing an async executor that puts the processor to sleep when idle. The framework includes a comprehensive set of embedded components, featuring a hardware abstraction layer for peripherals like GPIO, SPI, I2C, and UART, alongside a TCP/IP network stack and a USB device stack. It also provides a Bluetooth Low Energy host stack for wireless communication and a bootloader framework t
Embassy is an asynchronous embedded framework for microcontrollers with a hardware abstraction layer, but it is an embedded runtime rather than a hardware-in-the-loop simulation platform for testing physical plant models.
TinyGo is a specialized compiler and development toolkit designed to bring the Go programming language to resource-constrained microcontrollers and WebAssembly environments. It provides a bare-metal runtime environment that enables high-level code execution without the need for a traditional operating system, utilizing an LLVM-based backend to generate efficient machine instructions. The project distinguishes itself through aggressive optimization techniques tailored for small hardware, including a static memory allocation strategy and whole-program dead code elimination that significantly re
This repository is a Go compiler and toolkit for microcontrollers rather than a hardware-in-the-loop simulation environment, making it a lower-level development tool rather than a full plant simulator.
mujoco_menagerie is a curated library of physical robot specifications and XML model definitions designed for standardized dynamics and contact simulation. It provides a collection of high-quality robot model files for humanoids, quadrupeds, and manipulators, alongside detailed kinematic and inertial parameters used to reproduce real-world robot behavior in virtual environments. The project serves as a repository of robotics simulation assets and MJCF model definitions optimized for accuracy. It includes standardized model libraries specifically for bipedal, quadrupedal, and humanoid hardware
This repository provides robot model files and physics definitions for simulation rather than a real-time hardware-in-the-loop simulation framework for testing embedded controllers.
PX4-Autopilot is a professional-grade flight control software stack designed for autonomous unmanned vehicles, including multicopters, fixed-wing aircraft, and vertical takeoff and landing platforms. It operates as a modular, real-time framework that decouples flight control logic from hardware drivers through a publish-subscribe middleware architecture. The system utilizes a deterministic microkernel runtime to execute time-critical flight control loops and sensor fusion tasks, ensuring stable navigation and vehicle operation. The platform distinguishes itself through a parameter-driven conf
PX4-Autopilot is a flight control software stack for autonomous vehicles rather than a general hardware-in-the-loop simulation platform, making it a target for testing rather than the HIL simulator itself.
NuttX is a POSIX-compliant real-time operating system designed for microcontrollers ranging from 8-bit to 64-bit architectures. It provides a deterministic execution environment with a real-time task scheduler and a POSIX embedded kernel to ensure portable code execution across diverse hardware targets. The project distinguishes itself through a comprehensive hardware abstraction layer that provides standardized drivers for I2C, SPI, CAN, and USB across various semiconductor chipsets. It also features an embedded networking stack supporting TCP, UDP, IPv4, and IPv6, alongside industrial proto
Apache NuttX is a real-time operating system for microcontrollers rather than a dedicated hardware-in-the-loop simulation environment, making it a lower-level building block for embedded targets rather than the testing suite requested.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| robotlocomotion/drake | 3.9K | C++ | other | |
| apolloauto/apollo | 26.7K | C++ | Apache-2.0 | |
| espressif/esp-idf | 18.3K | C | Apache-2.0 | |
| open-smartwatch/open-smartwatch-os | 1.1K | C | GPL-3.0 | |
| arduino/arduino | 14.6K | Java | NOASSERTION | |
| projectchrono/chrono | 2.7K | C++ | bsd-3-clause | |
| apache/incubator-nuttx | 3.9K | C | Apache-2.0 | |
| libsdl-org/sdl | 14.9K | C | zlib | |
| px4/firmware | 12K | C++ | BSD-3-Clause | |
| stack-of-tasks/pinocchio | 3.1K | C++ | bsd-2-clause |