Communicate and Simulate using ROS Documentation
This documentation shows how to use ROS in MATLAB and Simulink to communicate with hardware and simulate in Gazebo
Robot Operating System (ROS) is a communication interface that enables different parts of a robot system to discover, send, and receive data. MATLAB® and Simulink support for ROS is a library of functions that allows you to exchange data with ROS-enabled sensors, physical robots, or robot simulators (i.e. Gazebo).
ROS Connectivity is provided by the Robotics System Toolbox. There are many tutorials and examples in the Robotics System Toolbox's documentation which show how to use MATLAB and Simulink to communicate with ROS based robotic systems and simulators.
Use the "Getting Started with MATLAB and Simulink" module to learn how to deploy and schedule robotics algorithms. Instead of using basic communication methods like udp, tcpip, and serial, we can use ROS publishing and subscribing to communicate with ROS hardware and simulators.
To get started with MATLAB and Simulink ROS, take a look at the following documentation:
This documentation will show some of the examples and functionality available through MATLAB and Simulink ROS.
Publishing and Subscribing with MATLAB
To communicate in MATLAB, the commands are rospublisher, send, rossubscriber and receive. Instead of using receive to get data, you can also specify a function to be called when a new message is received. This allows other MATLAB code to execute while the subscriber is waiting for new messages.
The following example shows how to use MATLAB ROS publishers and subscribers to receive and send data:
Publishing and Subscribing with Simulink To communicate in Simulink, use the Publish and Subscribe blocks.
The primary method of deployment of Robotics Algorithms is to simulate or run the algorithms directly in MATLAB or Simulink. Executable deployment as shown in the Deploying Executable to the Desktop Documentation does not work when using ROS functionality. However, Simulink does provide the ability to generate C++ code for a standalone ROS node from a Simulink model. The generated C++ code can be transferred and run in a Linux ROS environment, and built and run independent of Simulink.
Deployment in MATLAB
To deploy MATLAB ROS algorithms, simply run MATLAB code directly from the MATLAB IDE in simulation as shown in the Getting Started with MATLAB and Simulink module.
Deployment in Simulink
There are two options for deployment with Simulink ROS algorithms.
In MATLAB and Simulink, you can develop robotic algorithms and then simulate the algorithms in Gazebo. In order to switch between deployment and the simulation, the user only has to change the IP Address used to communicate with the real hardware to the IP Addresses used by the hardware in the simulation.
The available functionality is as follows:
- Send data to and from Gazebo using ROS publishers and subscribers:
- Read Model and Simulation Properties from Gazebo
- Adding, Building and Removing Objects from Gazebo
Send data to and from Gazebo using ROS publishers and subscribers
This example shows how to communicate with a Turtlebot in the Gazebo Simulator:
Read Model and Simulation Properties from Gazebo
This example shows how to read simulation properties from Gazebo, such as the physics settings.
Adding, Building and Removing Objects from Gazebo
Obstacles, robots and other objects can be added and removed from the the Gazebo Simulation Environment using MATLAB Commands. This is useful to add obstacles, robots and other objects to the simulation environment.
For instance, to add a sphere to a Gazebo Model, use the addLink and spawnModel commands: