ROS in Simulink

Access ROS networks and messages using Simulink®

ROS Toolbox enables you to connect to ROS and ROS 2 in Simulink and send messages over the network. See Get Started with ROS in Simulink®.

You can also generate and deploy code to a target system. For an advanced example on creating a standalone ROS node, see Generate a Standalone ROS 2 Node from Simulink®.

To run, stop, or check the status of deployed ROS nodes available on a ROS device, use the MATLAB® functions listed. Create a connection to a ROS device using rosdevice.

Functions

expand all

rosdeviceConnect to remote ROS device
runNodeStart ROS node
stopNodeStop ROS node
runCoreStart ROS core
stopCoreStop ROS core
isNodeRunningDetermine if ROS node is running
isCoreRunningDetermine if ROS core is running

Blocks

expand all

Blank MessageCreate blank message using specified message type
Call ServiceCall service in ROS network
Current TimeRetrieve current ROS time or system time
Get ParameterGet values from ROS parameter server
PublishSend messages to ROS network
Read DataPlay back data from log file
Read ImageExtract image from ROS Image message
Read Point CloudExtract point cloud from ROS PointCloud2 message
Set ParameterSet values on ROS parameter server
SubscribeReceive messages from ROS network
Blank MessageCreate blank ROS 2 message using specified message type
PublishSend messages to ROS 2 network
SubscribeReceive messages from ROS 2 network

Topics

ROS Network

ROS Simulink Support and Limitations

The ROS Toolbox does not support the following ROS features in Simulink:

Get Started with ROS in Simulink®

This example shows how to use Simulink blocks for ROS to send and receive messages from a local ROS network.

Configure ROS Network Addresses

Configure ROS Network Addresses Dialog

Connect to a ROS-enabled Robot from Simulink®

You can use Simulink to connect to a ROS-enabled physical robot or to a ROS-enabled robot simulator such as Gazebo.

ROS Parameters in Simulink

Details for setting ROS parameters in Simulink.

Connect to ROS Device

Parameters for connecting to a ROS device.

ROS Simulink Interaction

Simulink and ROS Interaction Overview

ROS Messages

Work with ROS Messages in Simulink®

This example illustrates how to work with complex ROS messages in Simulink, such as messages with nested sub-messages and variable-length arrays.

Select ROS Topics, Messages, and Parameters

Dialog box descriptions for selection ROS topics and messages.

Manage Array Sizes for ROS Messages in Simulink

Description of dialog box for managing array sizes in Simulink ROS

ROS 2 Network

Get Started with ROS 2 in Simulink®

This example shows how to use Simulink blocks for ROS 2 to send and receive messages from a local ROS 2 network.

Publish and Subscribe to ROS 2 Messages in Simulink

This model shows how to publish and subscribe to a ROS 2 topic using Simulink®.

Connect to a ROS-enabled Robot from Simulink® over ROS 2

This example shows you how to configure a Simulink model to send and receive information from a separate ROS-based simulator such as Gazebo® over ROS 2.

Robot Applications

Generate a Standalone ROS Node from Simulink®

This example shows you how to generate and build a standalone ROS node from a Simulink model.

Generate a Standalone ROS 2 Node from Simulink®

This example shows you how to generate and build a standalone ROS 2 node from a Simulink® model.

Feedback Control of a ROS-enabled Robot over ROS 2

This example shows you how to use Simulink® to control a simulated robot running in a Gazebo® robot simulator over ROS 2 network.

Sign Following Robot with ROS in MATLAB

This example shows you how to use MATLAB® to control a simulated robot running on a separate ROS-based simulator over a ROS network.

Automated Parking Valet with ROS in MATLAB

This example shows how to distribute the Automated Parking Valet (Automated Driving Toolbox) application among various nodes in a ROS network.

Generate Code to Manually Deploy a ROS Node from Simulink

This example shows you how to generate C++ code from a Simulink model to deploy as a standalone ROS node.

Generate Code to Manually Deploy a ROS 2 Node from Simulink®

This example shows you how to generate C++ code from a Simulink® model to deploy as a standalone ROS 2 node.

Enable External Mode for ROS Toolbox Models

External mode enables Simulink on your host computer to communicate with a deployed model on your robotics hardware during runtime.

Enable ROS Time Model Stepping for Deployed ROS Nodes

You can enable a deployed ROS node to execute based on the time published on the /clock topic on a ROS network.

Tune Parameters and View Signals on Deployed Robot Models Using External Mode

External mode enables Simulink models on your host computer to communicate with a deployed model on your robot hardware during runtime.