mvsim
A lightweight multivehicle simulation framework.
README
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 jlblanco@ual.es (University of Almeria) and collaborators
Please, refer to the MVSim SoftwareX paper (or the ArXiV preprint) 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):
Installation
See installation documentation 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 to see how to launch some of the demo worlds.
Demo videos
Build matrix status
Distro |
Build dev |
Build releases |
Stable version |
---|---|---|---|
ROS 1 Noetic (u20.04) |
|||
ROS 2 Humble (u22.04) |
|||
ROS 2 Jazzy @ u24.04 |
|||
ROS 2 Rolling (u24.04) |
EOL distro |
Stable version |
---|---|
ROS 1 Melodic (u18.04) |
|
ROS 2 Foxy (u20.04) |
|
ROS 2 Iron (u22.04) |
Docs
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.
Standalone:
mvsim launch mvsim_tutorial/demo_warehouse.world.xml
mvsim launch mvsim_tutorial/demo_2robots.world.xml
mvsim launch mvsim_tutorial/test_mesh.world.xml
ROS 1:
roslaunch mvsim demo_depth_camera.launch
ROS 2:
ros2 launch mvsim demo_warehouse.launch.py
ros2 launch mvsim demo_depth_camera.launch.py
Main 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).