MultiVehicle Simulator (MVSim)

March 17, 2026 · View on GitHub

MVSim logo

MultiVehicle Simulator (MVSim)

Lightweight, realistic 2.5D dynamics simulator for mobile robots and multi-agent research

CI Linux Check clang-format Documentation License

Documentation · Installation · Demo worlds · Cite


Overview

MVSim simulates wheeled robots and vehicles with realistic physics, sensors, and multi-agent support. It is designed to be fast enough for large-scale experiments while remaining accurate enough for dynamics and sensor research.

Key properties:

  • Fully configured via XML world files — no code changes needed for most experiments.
  • Works standalone, as a ROS 2 node, or embedded in a C++ / Python application.
  • Headless mode for CI pipelines and Docker containers.
  • Multi-vehicle worlds with mutual sensing (robots see each other in LiDAR).

https://github.com/user-attachments/assets/766db164-2d16-44f4-acbf-2f15b73c1ab3

screenshot-demo

https://github.com/user-attachments/assets/93c95aeb-71e9-4c35-b1dc-ba895c79daf7


Features

Vehicle dynamics

ModelDescription
differential2-wheel or 4-wheel differential drive (e.g. TurtleBot, Jackal)
ackermannCar-like Ackermann steering with kinematic or dynamic control
ackermann_drivetrainAckermann + realistic mechanical differentials (open / Torsen, 2WD / 4WD)
ArticulatedTrailer-style articulated vehicles

Controllers available: raw torque, twist PID, ideal twist.

Friction models: default Coulomb, Ward-Iagnemma (off-road), ellipse (slip angle + slip ratio).

Sensors

SensorNotes
3D LiDARsVelodyne VLP-16, Ouster OS1, Hesai Helios-32 (26°/31°/70° FOV)
2D LiDARGeneric + RPLidar A2; optional GPU-based 3D ray-tracing
RGB cameraPinhole model, configurable intrinsics
RGBD cameraDepth + color (RealSense / Xtion-style), publishes pointcloud, depth image
IMUWhite noise + bias random-walk (Forster 2016 model)
GNSS / GPSRequires georeferenced world; configurable noise

World elements

  • Occupancy grid maps (image or MRPT binary)
  • Elevation meshes (terrain with height)
  • Textured 3D blocks and custom meshes (.dae, .obj)
  • Friction zones (spatially-varying mu, rolling resistance)
  • Multi-storey environments
  • Lighting configuration
  • Remote resource caching

Interfaces

  • ROS 2 — full topic / TF / parameter interface (see mvsim_node docs)
  • ZMQ / Protobuf — language-agnostic pub/sub for custom clients
  • Python — direct API access
  • C++ library — embed the simulator in your application

Installation

sudo apt install ros-$ROS_DISTRO-mvsim

Then follow the first-steps guide.

Build from source

git clone https://github.com/MRPT/mvsim.git --recursive

See full installation instructions for cmake and colcon build options.


Quick start

Standalone:

mvsim launch mvsim_tutorial/demo_warehouse.world.xml
mvsim launch mvsim_tutorial/demo_2robots.world.xml
mvsim launch mvsim_tutorial/demo_greenhouse.world.xml

ROS 2:

ros2 launch mvsim demo_warehouse.launch.py
ros2 launch mvsim demo_depth_camera.launch.py

Move the robot with w/a/s/d (keyboard) or any standard cmd_vel publisher. In multi-robot worlds, press 1, 2, … to select the active robot.

See all demo worlds for the full list, including outdoor, road circuits, multi-storey, logistics center, articulated vehicles, and more.


ROS 2 build status

DistroDev buildBinary releasesVersion
Humble (u22.04)amd64 arm64
Jazzy (u24.04)amd64 arm64
Kilted (u24.04)amd64 arm64
Rolling (u24.04)amd64 arm64
EOL distros
DistroLast stable version
ROS 1 Noetic (u20.04)
ROS 2 Iron (u22.04)

ROSCon talk

Spanish talk with English slides and subtitles (slides):

MvSim ROSCon talk


Citation

If you use MVSim in your research, please cite:

@article{blanco2023mvsim,
  title   = {MultiVehicle Simulator (MVSim): Lightweight dynamics simulator for multiagents and mobile robotics research},
  journal = {SoftwareX},
  volume  = {23},
  pages   = {101443},
  year    = {2023},
  doi     = {10.1016/j.softx.2023.101443},
  url     = {https://www.sciencedirect.com/science/article/pii/S2352711023001395},
  author  = {José-Luis Blanco-Claraco and Borys Tymchenko and Francisco José Mañas-Alvarez and Fernando Cañadas-Aránega and Ángel López-Gázquez and José Carlos Moreno}
}

License

3-clause BSD License. Copyright (C) 2014-2026 Jose Luis Blanco (University of Almeria) and contributors.