IR-SIM-X: C++ Accelerated IR-SIM
A C++-accelerated fork of IR-SIM — faster LiDAR, collision detection, and kinematics via AVX2 SIMD and pybind11
Overview
irsim-x is a C++-accelerated fork of IR-SIM, an open-source, Python-based lightweight robot simulator for navigation, control, and reinforcement learning. The core simulation loop (LiDAR raycasting, collision detection, kinematics stepping, and A* planning) has been ported to C++ via pybind11, with AVX2 SIMD acceleration for LiDAR and batch multi-environment simulation.
The original Python-only paths have been removed — C++ is the only execution path. Compared to the original IR-SIM, IR-SIM-X achieves 5–50× faster LiDAR raycasting, 8× faster end-to-end step on sparse environments, and supports batch SIMD simulation across up to 1024 parallel environments.
Key Features
- C++ LiDAR — AVX2 SIMD circle/rect raycast + spatial hash grid for polygon/linestring, 5–50× faster
- C++ Collision Detection — SAT (Separating Axis Theorem) with ear-clip triangulation for concave polygons
- C++ Kinematics — diff, omni, omni_angular, ackermann steering
- C++ SimWorld — unified step, collision, dynamic obstacle (circle/rect/polygon/linestring) management
- Batch SIMD — up to 1024 environments with cross-environment SIMD LiDAR and kinematics
- FMCW LiDAR — C++ accelerated per-beam radial velocity computation
- YAML-driven — same simple configuration as IR-SIM, no code changes needed for existing scenarios
Installation
Requires Python >= 3.10 and a C++17 compiler (for building the extension)
pip install irsim-x
# With keyboard control and extras
pip install irsim-x[all]
From source
git clone https://github.com/Ethereal1024/ir-simX.git
cd ir-simX
pip install -e .
Quick Start
A minimal example — a differential-drive robot navigates toward a goal:
import irsim
env = irsim.make('robot_world.yaml')
for i in range(300):
env.step()
env.render()
if env.done():
break
env.end()
YAML Configuration (robot_world.yaml):
world:
height: 10
width: 10
step_time: 0.1
robot:
kinematics: {name: 'diff'}
shape: {name: 'circle', radius: 0.2}
state: [1, 1, 0]
goal: [9, 9, 0]
behavior: {name: 'dash'}
For more examples, see the usage directory.
Support
| Category | Features |
|---|---|
| Kinematics | Differential Drive · Omnidirectional · Omnidirectional with Angular · Ackermann Steering |
| Sensors | 2D LiDAR · 2D FMCW LiDAR · FOV Detector |
| Geometries | Circle · Rectangle · Polygon · LineString · Binary Grid Map |
| Behaviors | dash · RVO (Reciprocal Velocity Obstacle) · ORCA (Optimal Reciprocal Collision Avoidance) · SFM (Social Force Model) |
Performance
| Scenario | Beams | Time | FPS | Path |
|---|---|---|---|---|
| NeuPAN corridor (mixed) | 100 | 0.866 ms | 1,154 | Grid DDA |
| 10 polygons | 1200 | 299 µs | 3,345 | Grid DDA |
| Circle (AVX2) | 1200 | 31.5 µs | 31,709 | AVX2 SIMD |
| Maze 251 segs (Grid) | 1200 | 189 µs | 5,291 | Grid DDA |
Projects Using IR-SIM
Academic Publications
- [RAL & ICRA 2023] rl-rvo-nav — Reinforcement learning-based RVO behavior for multi-robot navigation.
- [RAL & IROS 2023] RDA_planner — Accelerated collision-free motion planner for cluttered environments.
- [T-RO 2025] NeuPAN — Direct point robot navigation with end-to-end model-based learning.
Community Projects
- DRL-robot-navigation-IR-SIM — Deep reinforcement learning for robot navigation.
- AutoNavRL — Autonomous navigation using reinforcement learning.
- IRSIM-3DGS-Bridge — A closed-loop bridge from 3D Gaussian Splatting scenes to IR-SIM planning/following.
Citation
IR-SIM-X is a C++-accelerated fork of IR-SIM. If you find it useful, please consider citing the original IR-SIM paper:
@article{han2026ir,
title={IR-SIM: A Lightweight Skill-Native Simulator for Navigation, Learning, and Benchmarking},
author={Han, Ruihua and Wang, Shuai and Li, Chengyang and Gao, Rui and Wang, Xinyi and Liu, Zhe and Li, Guoliang and Lu, Yupu and Hao, Qi and Pan, Jia and Zhao, Hengshuang},
journal={arXiv preprint arXiv:2606.08729},
year={2026}
}
License
irsim-x is released under the MIT License. The original IR-SIM is also MIT-licensed — see the original repository for details.
Metadata
Release files for irsim-x 1.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| irsim_x-1.1.4.tar.gz | 850.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| irsim_x-1.1.4-cp313-cp313-manylinux_2_34_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.34+ x86-64 | Details |
Total release size: 2.4 MB
Release files / irsim_x-1.1.4.tar.gz
| Download URL | irsim_x-1.1.4.tar.gz |
|---|---|
| Size | 850.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c15e6d679e7f94dd7b21b35489aa5ff06069d71351541f328640b351ef2f8696
|
|
BLAKE2b-256 checksum How to use checksums |
0a151eb0ae51fb742b3ac9e10b42b4bf0cd57c37765b0797c62f83612a4dc8f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / irsim_x-1.1.4-cp313-cp313-manylinux_2_34_x86_64.whl
| Download URL | irsim_x-1.1.4-cp313-cp313-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.13 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
30e4379c855c6f0473f74502f849caac8ba219548465c8eeea986ab5c715cc73
|
|
BLAKE2b-256 checksum How to use checksums |
d5402c65ed67c6bba2282f70b588ffaf21436b51a30f1ccb41e5cde80003ecf1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Security for irsim-x 1.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.