dorkhub

mvsim

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

MRPT
C++40861 forksBSD-3-Clauseupdated 2 weeks ago
visit the demogit clone https://github.com/MRPT/mvsim.gitMRPT/mvsim
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 Build dev Build releases Stable version
ROS 2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Lyrical (u26.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u26.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL distro Stable version
ROS 1 Melodic (u18.04) Version
ROS 1 Noetic (u20.04) Version
ROS 2 Foxy (u20.04) Version
ROS 2 Iron (u22.04) Version

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.

more like this

SimGAN

Pytorch Implementation of SimGAN: Hybrid Simulator Identification for Domain Adaptation via Adversarial Reinforcement L…

Python50

search

search projects, people, and tags