Interfacing MATLAB and ROS
By Yanliang Zhang (Ph.D.)
MathWorks Robotics Product and Marketing Manager
[email protected]ICRA 2014, Hong Kong
6/5/2014
2014 The MathWorks, Inc.1
MATLAB/Simulink Robotics Portal:
www.mathworks.com/robotics
Why?
MATLAB/Simulink Integration with Robots
MATLAB/Simulink
MATLAB Nontarget
API
Simulink Nontarget
Lib
Simulink Target
ROS
Any Robot
Running
ROS
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.
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
SLAM
Control
Navigation
Motion Planning
Manipulation
Grasping
Motion understanding
Mobile robotics
Perception
Object Identification
Segmentation
Face recognition
Natural Language
Gesture recognition
Motion tracking
Structure from motion (SFM)
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
ROS on Robots
Click Here
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
MIT
CMU
Brown University
CCNY
UT Austin/ART
SIUE
Rice University
Penn
TUM
Uni Freiburg
WPI
Cornell
Georgia Tech
USC
Columbia University
Imperial College (London)
UT Austin
Washington University St
Louis
University of Maryland
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 Clearpaths BLOG:
http://www.clearpathrobotics.com/blog/ros-for-matlab/
Or Google: HUSKY MATLAB
16
Join us at IROS 2014, Chicago, Sept. 1418, 2014
17