In robotics applications, many different coordinate systems can be used to define where robots, sensors, and other objects are located. In general, the location of an object in 3D space is defined by its position and orientation.
Robotics System Toolbox™ supports representations that are commonly used in robotics and allows you to convert between them. You can transform between coordinate systems when you apply these representations to 3D points. Axis-angle, Euler angles, homogeneous transformation matrix, quaternion, rotation matrix, and translation vector are some of the supported representations.
Robotics System Toolbox provides an interface between MATLAB® and Simulink and the Robot Operating System (ROS). With this interface, you can connect to a ROS network, work with standard and specialized ROS messages, exchange data with publishers and subscribers, call and provide services, access the ROS parameter server, import rosbag, and access the transformation tree from the ROS tf package.
You can bring data from sensors on any ROS-enabled robot or simulator into MATLAB for visualization, exploration, system identification, and calibration. You can also send commands to actuators to control the robot and explore its capabilities and limitations. For example, you can read data from a ROS-enabled range finder on a Husky™ robot to verify its measured range readings. You can read a sequence of images directly from a camera on a Baxter™ robot, and perform camera calibration to find the intrinsic and extrinsic parameters of the vision system with Computer Vision System Toolbox™. You can send velocity commands to the motors on a TurtleBot™ robot to explore its behavior on different surfaces.
Robotics System Toolbox provides algorithms including path planning, path following, and map representation for differential drive robots. You can integrate these algorithms with motor control, computer vision, and state machine components that you develop with other MathWorks tools as you design your robotics applications. You can then test and validate these algorithms directly in a ROS-enabled simulation environment such as Gazebo or V-REP.
The system toolbox lets you interact with simulation environments through ROS. For example, you can read model and simulation properties; add, build, and remove objects; apply forces and torques; and test robot autonomy directly from MATLAB. If you don’t have access to a robot simulator, the system toolbox provides a virtual machine (VM) image that you can use to test your algorithm. Download the virtual machine image with Ubuntu®, ROS, and Gazebo installed.
These Robotics System Toolbox™ algorithms support workflows related to articulated robots. You can define your robot model, which is made up rigid bodies as structural elements and joints for attachment and motion. This robot representation contains kinematic constraints and dynamics properties. You can perform inverse kinematics and dynamics calculations on this robot model. If you have a robot description as a URDF file, you can import rigid body tree model from URDF file or text.
Simulink support for ROS in Robotics System Toolbox enables you to create Simulink models that work with a ROS network for sending and receiving messages for a designated topic. You can test your algorithms with data from a live ROS network. Once you have a working algorithm or design specification in Simulink, you can generate C++ code for a standalone ROS node that can run on any Ubuntu system. The deployable ROS node is fully independent—it does not require MATLAB to run.
When you are ready to test your algorithms on a physical ROS-enabled robot, you can use the same algorithms developed and tested via simulation. With minimal code changes, you can connect to the physical robot instead of the simulator robot. While connected to a ROS-enabled robot, you can interactively modify and tune your algorithms in MATLAB and immediately see the results.
Because the same MATLAB code is used with both a robot simulator and a physical robot, instructors teaching robotics can introduce robotics concepts using a simulator; for example, a TurtleBot simulator in Gazebo before moving to a real robot. Students can test algorithms with the simulator on their own computers using any operating system they prefer. Later, students can test their algorithms on a physical TurtleBot robot with minimal code changes. This approach relieves resource constraints when there are only a few physical robots for a large number of students, since students can develop and debug algorithms on their own simulators.
When you want to verify and validate the performance of your algorithms, you can import ROS log files from your robot into MATLAB for offline analysis and visualization. The system toolbox enables you to import a rosbag and retrieve information about its contents. You can read a subset of the messages by time and topic in the bag file. You can extract data as a time series from one or multiple message properties in the bag file and use that time series for further processing.
With Robotics System Toolbox, you can access ROS functionality from Windows®, Mac OS X, and Ubuntu Linux systems. You can create a ROS master inside MATLAB or connect to an external master running on a ROS-enabled simulator or robot. To set up a robot simulator environment, you can use a ready-made virtual machine containing an Ubuntu OS with ROS and Gazebo installed.
You can connect to multiple ROS masters using the system toolbox to coordinate multiple robots. For example, you can connect to ROS masters on a Husky robot and a TurtleBot robot to coordinate outdoor and indoor object searching simultaneously. You can connect to multiple Baxter robots, each of which has a ROS master, to coordinate tasks.