The behavioral modular robotic simulation framework.
“VisibleSim is a framework for creating behavioral simulators for distributed lattice-based modular robotic systems in a regular 3D environment. It supports modules in all kinds of lattices and with diverse motion capabilities, embedded sensors, and actuators.” —Dr. Benoit Piranda
Lattice: square (2D)
Neighbors: 4
Motion: slides along or turns around an edge
Display: RGB colors
Lattice: square (2D)
Neighbors: 4
Motion: slides along a vertical border
Display: RGB colors and upper side numbers
Lattice: hexagonal (2D)
Neighbors: 6
Motion: turns around a neighbor (pivot)
Display: RGB colors
Lattice: hexagonal (2D vertical)
Neighbors: 6
Motion: turns around a neighbor (pivot)
Display: RGB colors
Lattice: cubic (3D)
Neighbors: 6
Display: RGB colors
Sensor: tap
Lattice: cubic (3D)
Neighbors: 6
Motion: slides along or turns around an edge
Display: lights in color
Lattice: Face-Centered Cubic (3D)
Neighbors: 12
Motion: turns around a neighbor (pivot)
Display: RGB colors
Lattice: Face-Centered Cubic (3D)
Neighbors: 12
Motion: deforms around a neighbor (pivot)
Display: RGB colors
Visiblesim let the user import his own custom modular robot type.
Physics simulation is not the purpose of VisibleSim, instead it aims at providing the tools for studying the behavior of modular robots.
Each module in the system is assigned a unique identifier, and executes the same controller as all other modules, generating environmental events that are handled deterministically by VisibleSim's discrete-event scheduler.
In VisibleSim, each module executes the same distributed program, acting as the controller of the module, the BlockCode.
“BlockCodes are C++ programs that describe what actions should be carried out by the module upon initialization, and in response to various internal or external events (communication received, neighborhood updates, end of motion, timer, etc...).” — Pierre Thalamy
Such a function runs by each module upon startup, that initializes internal variables and usually sends a message to neighbor modules.
Runs a thread associated to the particular type of the processed event, that updates the internal state of the modules and carries out any necessary action.
Launches a process associated to the particular type of the received message, that updates internal variables and carries out any necessary action such as forwarding the message to neighbors.
VisibleSim is available online, requires no download and no installation, just sign up and try it.
Write your BlockCode in C++, JavaScript or Python. Build an initial XML config file.
Upload these two on the server and run the simulation.
Enjoy visualizing your code and interacting with it!
We are also making available for free an online tool for generating customizable application template files for any supported module types.
VisibleSim has been our dedicated programmable matter simulation tool for almost a decade. Over the years, it has been used to experiment and validate work on various modular robotic architectures and models, with many results appearing in published research. Watch them all in video!
VisibleSim is available as an open-source software under AGPLv3 license. You can get the latest stable version or clone it from our development stream.
An online tool for generating customizable application templates for any supported module types.
Feel free to contact us if you want to become part of the active community of developers for VisibleSim and its tools.