Skip to content

MRPT/mvsim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,397 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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).
mvsim_demo_warehouse.mp4

screenshot-demo

mvsim-tractor-trailer.mp4

Features

Vehicle dynamics

Model Description
differential 2-wheel or 4-wheel differential drive (e.g. TurtleBot, Jackal)
ackermann Car-like Ackermann steering with kinematic or dynamic control
ackermann_drivetrain Ackermann + realistic mechanical differentials (open / Torsen, 2WD / 4WD)
Articulated Trailer-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

Sensor Notes
3D LiDARs Velodyne VLP-16, Ouster OS1, Hesai Helios-32 (26°/31°/70° FOV)
2D LiDAR Generic + RPLidar A2; optional GPU-based 3D ray-tracing
RGB camera Pinhole model, configurable intrinsics
RGBD camera Depth + color (RealSense / Xtion-style), publishes pointcloud, depth image
IMU White noise + bias random-walk (Forster 2016 model)
GNSS / GPS Requires 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

ROS 2 (recommended)

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

Distro Dev build Binary releases Version
Humble (u22.04) amd64 arm64
Jazzy (u24.04) amd64 arm64
Kilted (u24.04) amd64 arm64
Rolling (u24.04) amd64 arm64
EOL distros
Distro Last 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.

About

Vehicle and mobile robotics simulator. C++ & Python API. Use it as a standalone application or via ROS 1 or ROS 2

Topics

Resources

License

Stars

Watchers

Forks

Contributors