• Stars
    star
    263
  • Rank 155,624 (Top 4 %)
  • Language
    C++
  • License
    BSD 3-Clause "New...
  • Created over 10 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

mvsim Documentation Status CI Linux CI Check clang-format

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-2023 Jose Luis Blanco [email protected] (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}
}

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

screenshot-demo

MvSim intro

Build matrix status

Distro Build dev Build releases Stable version
ROS 1 Noetic (u20.04) Build Status Build Status Version
ROS 2 Humble (u22.04) Build Status Build Status Version
ROS 2 Iron (u22.04) Build Status Build Status Version
ROS 2 Rolling (u22.04) Build Status Build Status Version
EOL distro Stable version
ROS 1 Melodic (u18.04) Version
ROS 2 Foxy (u20.04) Version

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

More Repositories

1

mrpt

⚡ The Mobile Robot Programming Toolkit (MRPT)
C++
1,922
star
2

srba

[Prefer the newer MOLAorg/mola project] C++ framework for relative SLAM: Sparser Relative Bundle Adjustment (SRBA)
C++
73
star
3

mrpt_path_planning

Self-driving (autonomous navigation) algorithms for 2D robots/vehicles based on mrpt-nav
C++
14
star
4

pbmap

Plane-based Mapping SLAM library ("Fast place recognition with plane-based maps", ICRA 2013)
C++
11
star
5

GSoC2016-discussions

See README for instructions
7
star
6

mrpt_vrep_bridge

Interface the Mobile Robot Programming Toolkit (MRPT) with the V-REP robotics simulator
CMake
6
star
7

gtsam2mrpt_serial

GTSAM <-> mrpt-serialization bridge
C++
5
star
8

mrpt-web

RPC server and client libraries (websocket) for MRPT
C++
5
star
9

mrpt-web-frontend

A web frontend for the mrpt c++ library
JavaScript
4
star
10

nanoflann-benchmark

Benchmarking tests, scripts and results for the nanoflann KD-tree library
C++
4
star
11

rfcs

RFCs for changes to MRPT
3
star
12

webapp-demos

C++
2
star
13

GSoC2018-discussions

2
star
14

python_mrpt_ros

pymrpt wrapper repository for ROS builds
CMake
2
star
15

mrpt.github.io

MRPT website on Github (Official: http://www.mrpt.org/ )
HTML
1
star
16

mvsim-models

3D models for use in the MVSIM simulator. See index on the project web.
HTML
1
star
17

matrix2txt-examples

MRPT C++ examples: convert forth and back from binary matrix serialization and TXT files
C++
1
star
18

mrpt-web-js

JavaScript
1
star
19

mrpt-windows-binaries

Windows installable binaries
1
star
20

mrpt_ros

Fine-grained ROS packages for MRPT libraries and apps
CMake
1
star
21

autocalib-sensor-extrinsics

1
star
22

GSoC2017-discussions

See README
1
star