Interfacing MATLAB and ROS
By Yanliang Zhang (Ph.D.)
MathWorks Robotics Product and Marketing Manager
Yanliang.Zhang@mathworks.com
ICRA 2014, Hong Kong
6/5/2014
© 2014 The MathWorks, Inc.1
MATLAB/Simulink Robotics Portal:
www.mathworks.com/robotics
2
Why?
3
MATLAB/Simulink Integration with Robots
MATLAB/Simulink
MATLAB Non- Simulink Non-
target target Simulink Target ROS
API Lib
Any Robot
Running
ROS
4
What Is ROS?
Robot Operating System (ROS) is a BSD-licensed, non real-time,
software framework for robot development, providing operating
system-like functionalities like hardware abstraction, device drivers,
libraries, visualizers, message-passing, package management.
5
Existing Packages (Libraries):
There are many ready-to-use packages (using ROS integration
and messaging conventions) which contain vetted
implementation of common algorithms for each area of robotics:
Stereo vision Perception
SLAM Object Identification
Control Segmentation
Navigation Face recognition
Motion Planning Natural Language
Manipulation Gesture recognition
Grasping Motion tracking
Motion understanding Structure from motion (SFM)
Mobile robotics Egomotion
The possibility of reusing software without having to rewrite it
is one of the main drivers of ROS adoption within both
universities and commercial companies.
6
ROS on Robots
Click Here
7
ROS on Robots
Click Here
8
ROS Used in Teaching
Pretty much any university robotics lab these days is using ROS, and
many are also contributing code back to it, including top institutions.
Some of the top contributors:
• Stanford • WPI
• MIT • Cornell
• CMU • Georgia Tech
• Brown University • USC
• CCNY • Columbia University
• UT Austin/ART • Imperial College (London)
• SIUE • UT Austin
• Rice University • Washington University St
• Penn Louis
• TUM • University of Maryland
• Uni Freiburg • University of Colorado at
Boulder
9
How?
10
Download and Install MATLAB ROS I/O:
www.mathworks.com/ROS
11
A Simple Example (All Codes inside MATLAB)
Create (Connect to) a ROS Master
>> roscore = rosmatlab.roscore(11311);
Create a ROS node
>> node = rosmatlab.node('NODE', roscore.RosMasterUri);
Create a Publisher
>> publisher = rosmatlab.publisher('TOPIC', 'std_msgs/String', node);
Add a Subscriber
>> subscriber = rosmatlab.subscriber('TOPIC', 'std_msgs/String', 1,
node);
Bind Functions to Subscriber
>> subscriber.setOnNewMessageListeners({@function1, @function2});
12
A Simple Example (All Codes inside MATLAB)
Now you can use different MATLAB toolboxes
13
A Simple Example (All Codes inside MATLAB)
Create a new message for use by the publisher
>> msg = rosmatlab.message('std_msgs/String', node);
Set the data field of the std_msgs/String message
>> msg.setData(sprintf('Message created: %s', datestr(now)));
Publish the Message
>> publisher.publish(msg);
14
Demonstration:
Ball Tracking on Gazebo and Real
TurtleBot
15
Husky + ROS I/O Code Example
Step by Step instructions can be found on Clearpath’s BLOG:
http://www.clearpathrobotics.com/blog/ros-for-matlab/
Or Google: HUSKY MATLAB
16
Join us at IROS 2014, Chicago, Sept. 14–18, 2014
17