Blazing fast multirotor simulator with event camera support. Pythonic and real-time.
GRASP Laboratory, University of Pennsylvania
[π Paper] β’ [π BibTeX]
Quick Start: If you only need a fast CUDA event simulator, we've made it standalone. Learn how to use our optimized event simulator at grasp-lyrl/neurosim_cu_esim.
- Hardware-in-the-loop (HIL) support for real robot testing
- π Detailed documentation and tutorials
04/16/26: Added dynamic obstacles thrown at the agent.03/30/26: Reinforcement Learning (RL) support added.02/16/26: Neurosim paper released on arXiv (2602.15018).02/15/26: neurosim_cu_esim now standalone for faster event simulation.02/06/26: Initial release of Neurosim!
Neurosim enables real-time closed-loop control (src/neurosim/sims/asynchronous_simulator, src/neurosim/cortex/), online training of multi-modal perception models (applications/f3_training/), and event-based reinforcement learning with NeurosimRL (applications/rl/). Detailed docs to run each of them are coming soon!
Download the pretrained checkpoint folder from here and place them inside applications/rl/example_ckpt/hover_sb3_combined_experiment
Then (once you have Neurosim installed) you can rollout the trained policy with:
python applications/rl/run_policy.py \
--checkpoint applications/rl/example_ckpt/hover_sb3_combined_experiment/best_model.zip \
--rollout-config applications/rl/configs/hover_sb3_combined_rollout.yaml \
--episodes 10 \
--visualizeDocker provides a consistent environment with all dependencies pre-configured, including CUDA and ZMQ libraries. Two image variants are available:
ros(default): includes ROS2 Humble and ROS development toolingnoros: excludes ROS2 for a lighter image when ROS integration is not needed
- Docker with NVIDIA GPU support (nvidia-docker)
- NVIDIA drivers installed on host (nvcc 12.9+)
# Clone the repository
git clone https://github.com/grasp-lyrl/neurosim.git
cd neurosim
# Pull ROS-enabled image
docker pull richeek01/neurosim:ros
# OR Pull image without ROS2
docker pull richeek01/neurosim:noros
# Tag pulled images so existing run script works unchanged
docker tag richeek01/neurosim:ros neurosim:ros
docker tag richeek01/neurosim:noros neurosim:noros
docker tag richeek01/neurosim:latest neurosim:latest# Build ROS-enabled image (default, takes ~15-20 minutes)
bash docker/build.sh ros
# Build image without ROS2
bash docker/build.sh noros# Launch ROS-enabled container (default)
bash docker/run.sh ros
# Launch container without ROS2
bash docker/run.sh norosThis will:
- Mount the current directory to
/home/${USER}/neurosiminside the container - Enable GPU access with all CUDA capabilities
- Forward X11 display for GUI applications
- Set up shared networking and IPC
# Navigate to the workspace
cd neurosim
# neurosim environment should be activated by default. If not, run:
conda activate neurosim
# Download example scenes
python -m habitat_sim.utils.datasets_download --uids habitat_test_scenes --data-path data/
# Run the simulator
python test_sim.py --settings configs/skokloster-castle-settings.yaml --display --world_rate 750- OS: Ubuntu 22.04/24.04 (tested)
- Compiler: GCC 11.4.0+
- CMake: 3.14.0+
- CUDA: 12.2 / 12.4 / 12.6 / 12.9 / 13.0 (tested)
- Python: 3.10
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
libjpeg-dev libglm-dev libgl1-mesa-glx libegl1-mesa-dev \
mesa-utils xorg-dev freeglut3-dev# Create conda environment
conda create -n neurosim python=3.10 cmake=3.14.0 pip==25.1.1 -y
conda activate neurosim
# Install neurosim in editable mode
pip install -e . -vpython -m habitat_sim.utils.datasets_download --uids habitat_test_scenes --data-path data/python test_sim.py --settings configs/skokloster-castle-settings.yaml --display --world_rate 750If you use this code in your research, please cite:
@misc{das2026neurosim,
title={Neurosim: A Fast Simulator for Neuromorphic Robot Perception},
author={Richeek Das and Pratik Chaudhari},
year={2026},
eprint={2602.15018},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2602.15018},
}Please report any bugs or feature requests on GitHub issues. Pull requests are very welcome!
-
If compilation crashes due to high memory usage or CPU load, manually set
self.parallel=4insidesetup.pyof habitat-sim to limit parallel jobs. -
pip==25.3breaks installation due to changes in the build isolation process. Usepip==25.1.1as specified.
Apache 2.0 License - see the LICENSE file for details.
This project is enabled by the following amazing open-source projects: Habitat-Sim, ZeroMQ, RotorPy
Banner credits: @ongdexter, Gemini 3


