PULSE is a high-performance, GPU-accelerated urban traffic simulation framework. It enables detailed lane-level modeling of vehicles, with macro and microscopic views. It is integrated with a 3D visualization engine for interactive rendering and analysis.. The main simulation core is in CUDA
📁 PULSE/
│
├── main.cpp # Entry point for the visualization client
├── imgui.ini # UI state from last run
│
├── assets/ # All static resources
│ ├── audios/ # Reserved for future audio integration. added a sample file
│ ├── media/ # UI/media files (e.g., logos, splash screens). have Added a sample file
│ ├── models/ # Blender models used in rendering. Not using For now
│ ├── shaders/ # GLSL shader programs (OpenGL). All shaders are present here.
│ ├── textures/ # Texture maps for objects/roads. Not using for now.
│ └── vendors/ # Third-party files like ImGui
│
├── headers/ # Project header files
│ ├── CUDA_SimulationHeaders/ # IDM, lane, and traffic modeling (CUDA) will be here. Currenlty only `idm.hpp` is implemented
│ ├── ServerHeaders/ # server/client logic headers are present here
│ └── Visualisation_Headers/ # Rendering pipeline components (camera, redering, OSM). All the essential custom openGL header files are present here and store the logic/code corrosponding to there name
│
├── server/ # Networking and distributed simulation
│ ├── linux-server/src/ # Linux-side GPU server for simulation -> Implemented a stanAlone file which can be placed in server and run using the command: ` `
│ └── windows-client/src/ # Windows-side visualization client -> The function whihc are called to setup connections and send and recieve data from the client window
Other .cpp files are in the src directory
- First of all, it will download aall the
vcpkgpackages and build them sequentially. This can take a lot of time (about 30-45min) and internet resource(1GB). - Change the location of Shaders and osm file path in the
main.cppfile according to your device. - Use the
x64Architecture option in the VS22. - Use the windows 10 Toolkit. (although it can handle win7 also).
- C++17 or higher
- CUDA Toolkit 11.x or higher
- Visual Studio 2022 (for Windows dev)
- Assimp, GLFW3, GLAD, ImGui, stb_image, Boost/Asio, libosmium,
- Clone the repo:: Use the Visual Studio's Repo clone feature and clone this repo:
https://github.com/vaurkhorov/pulse - Open
simulation.slnin Visual Studio - Check the setup instruction above.
- Build and Run using
x64-Debugorx64-Releasemode
- Intelligent Driver Model (IDM)
- Road parsing from
.osmfiles
- client-server architecture
- Windows client sends visualization input
- Linux server runs CUDA simulation and sends back traffic state
- Built with OpenGL
- Draws roads, lanes, buildings from OSM
- ImGui-based interactive debugging UI
- Camera control, real-time rendering
- Make the new Map editor and optimize it.
- Macro view implementation.
- Increase the number of simulating vehicles.
- Add a setup screen at the application initialisation
We welcome contributions to make PULSE better!
- Follow C++17 conventions
- Use
camelCasefor variable names - Avoid pushing DLLs or build artifacts
- Document new features in
README.mdand code comments - Avoid pushing to main branch directly.