https://github.com/mrpt/mvsim
Vehicle and mobile robotics simulator. C++ & Python API. Use it as a standalone application or via ROS 1 or ROS 2
https://github.com/mrpt/mvsim
gazebo mrpt robotics robots ros ros-node ros2 sensors simulation vehicle-dynamics
Last synced: 17 days ago
JSON representation
Vehicle and mobile robotics simulator. C++ & Python API. Use it as a standalone application or via ROS 1 or ROS 2
- Host: GitHub
- URL: https://github.com/mrpt/mvsim
- Owner: MRPT
- License: bsd-3-clause
- Created: 2014-08-10T00:24:05.000Z (almost 11 years ago)
- Default Branch: develop
- Last Pushed: 2025-05-12T21:10:31.000Z (21 days ago)
- Last Synced: 2025-05-12T22:24:53.368Z (21 days ago)
- Topics: gazebo, mrpt, robotics, robots, ros, ros-node, ros2, sensors, simulation, vehicle-dynamics
- Language: C++
- Homepage: https://mvsimulator.readthedocs.io/
- Size: 9.68 MB
- Stars: 323
- Watchers: 9
- Forks: 48
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.rst
- License: LICENSE
- Citation: CITATION.cff
Awesome Lists containing this project
README
[](https://circleci.com/gh/MRPT/mvsim) [](https://mvsimulator.readthedocs.io/en/latest/?badge=latest)
[](https://github.com/MRPT/mvsim/actions/workflows/build-linux.yml)
[](https://github.com/MRPT/mvsim/actions/workflows/check-clang-format.yml)MultiVehicle simulator (MVSim)
======================================
Lightweight, realistic dynamical simulator for 2D ("2.5D") vehicles and robots.
It is tailored to analysis of vehicle dynamics, wheel-ground contact forces and accurate simulation of typical robot sensors (e.g. 2D and 3D lidars).This package includes C++ libraries, standalone applications, and ROS 1 and ROS 2 nodes.
License: 3-clause BSD License
Copyright (C) 2014-2024 Jose Luis Blanco (University of Almeria) and collaboratorsPlease, refer to [the MVSim SoftwareX paper](https://www.sciencedirect.com/science/article/pii/S2352711023001395) (or the [ArXiV preprint](https://arxiv.org/abs/2302.11033))
for a gentle introduction to the project architecture.
If you want to cite MVSim in your work, please use:@article{blanco2023mvsim,
title = {MultiVehicle Simulator (MVSim): Lightweight dynamics simulator for multiagents and mobile robotics research},
journal = {SoftwareX},
volume = {23},
pages = {101443},
year = {2023},
issn = {2352-7110},
doi = {https://doi.org/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}
}ROSCon talk
------------------
Spanish talk with English slides and subtitles ([slides here](https://docs.google.com/presentation/d/1jX8t1r82vp8MIQP5u1t9bVTtG0XgmjDTtLI7z3Yamzc/edit?usp=sharing)):[](https://www.youtube.com/watch?v=WNBqH6SWlRQ)
Installation
--------------------See [installation documentation](https://mvsimulator.readthedocs.io/en/latest/install.html) for all the details and options.
The easiest way to install if you already have ROS 1 or ROS 2 is:
sudo apt install ros-$ROS_DISTRO-mvsim
Then jump to [next steps](https://mvsimulator.readthedocs.io/en/latest/first-steps.html) to see how to launch some of the demo worlds.
Demo videos
--------------------
[](https://www.youtube.com/watch?v=xMUMjEG8xlk)
Build matrix status
--------------------| Distro | Build dev | Build releases | Stable version |
| --- | --- | --- | --- |
| ROS 1 Noetic (u20.04) | [](https://build.ros.org/job/Ndev__mvsim__ubuntu_focal_amd64/) | amd64 [](https://build.ros.org/job/Nbin_uF64__mvsim__ubuntu_focal_amd64__binary/)
arm64 [](https://build.ros.org/job/Nbin_ufv8_uFv8__mvsim__ubuntu_focal_arm64__binary/)
armhf [](https://build.ros.org/job/Nbin_ufhf_uFhf__mvsim__ubuntu_focal_armhf__binary/) | [](https://index.ros.org/search/?term=mvsim) |
| ROS 2 Humble (u22.04) | [](https://build.ros2.org/job/Hdev__mvsim__ubuntu_jammy_amd64/) | amd64 [](https://build.ros2.org/job/Hbin_uJ64__mvsim__ubuntu_jammy_amd64__binary/)
arm64 [](https://build.ros2.org/job/Hbin_ujv8_uJv8__mvsim__ubuntu_jammy_arm64__binary/) | [](https://index.ros.org/search/?term=mvsim) |
| ROS 2 Jazzy @ u24.04 | [](https://build.ros2.org/job/Jdev__mvsim__ubuntu_noble_amd64/) | amd64 [](https://build.ros2.org/job/Jbin_uN64__mvsim__ubuntu_noble_amd64__binary/)
arm64 [](https://build.ros2.org/job/Jbin_unv8_uNv8__mvsim__ubuntu_noble_arm64__binary/) | [](https://index.ros.org/search/?term=mvsim) |
| ROS 2 Rolling (u24.04) | [](https://build.ros2.org/job/Rdev__mvsim__ubuntu_noble_amd64/) | amd64 [](https://build.ros2.org/job/Rbin_uN64__mvsim__ubuntu_noble_amd64__binary/)
arm64 [](https://build.ros2.org/job/Rbin_unv8_uNv8__mvsim__ubuntu_noble_arm64__binary/) | [](https://index.ros.org/search/?term=mvsim) || EOL distro | Stable version |
| --- | --- |
| ROS 1 Melodic (u18.04) | [](https://index.ros.org/search/?term=mvsim) |
| ROS 2 Foxy (u20.04) | [](https://index.ros.org/search/?term=mvsim) |
| ROS 2 Iron (u22.04) | [](https://index.ros.org/search/?term=mvsim) |Docs
----------
* [Main documentation site](https://mvsimulator.readthedocs.io/en/latest/)If you clone this repository, remember to checkout the git submodules too:
git clone https://github.com/MRPT/mvsim.git --recursive
Launch demos
--------------See more on first steps [here](https://mvsimulator.readthedocs.io/en/latest/first-steps.html).
Standalone:
mvsim launch mvsim_tutorial/demo_warehouse.world.xml
mvsim launch mvsim_tutorial/demo_2robots.world.xml
mvsim launch mvsim_tutorial/test_mesh.world.xmlROS 1:
roslaunch mvsim demo_depth_camera.launch
ROS 2:
ros2 launch mvsim demo_warehouse.launch.py
ros2 launch mvsim demo_depth_camera.launch.pyMain features
--------------
* Lightweight in memory, CPU and library requirements.
* Fully configurable via `.xml` "world" files.
* Headless mode, suitable for dockerized environments.
* World maps:
* Occupancy gridmaps: input as images or MRPT binary maps (from icp-slam, rbpf-slam, etc.)
* Elevation meshes.
* Vehicle models:
* Differential driven (2 & 4 wheel drive).
* Ackermann steering (kinematic & dynamic steering, different mechanical drive models).
* Ackermann steering with mechanical differentials of full grade.
* Sensors:
* 2D and 3D Lidars: Robots see each other, their own bodies, etc.
* RGB cameras
* Depth cameras
* Interface to vehicles: Custom Python interface, or ROS. Choose among:
* Raw access to forces and motor torques.
* Twist commands (using internal controllers).