Racing Lounge

Best practices and teamwork for student competitions

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

World Robot Summit 2018: MATLAB and Simulink Examples

Posted by Sebastian Castro,

In the previous post, I gave an overview of World Robot Summit (WRS) 2018 and how we were involved.

Today, we’re getting technical and diving into our booth demonstrations! If this is good news for you, then please keep reading.

Partnering with Robot Hardware Vendors is Key!

Previously, we mentioned all the interesting robots that the World Robot Challenge (WRC) participants were using, and listed several companies that helped make this happen.

However, robot hardware vendors weren’t only collaborating with participating teams. WRS also provided a setting for companies to work together, which we certainly appreciated. This allowed us to use our software, MATLAB and Simulink, to connect with robot hardware and show it to attendees at our booth. In turn, this blog post allowed us to show our examples to readers like you.

I wanted to highlight 3 of our demonstrations to explain this further.

Example 1: Face Tracking and Age Estimation with Toyota Human Support Robot (HSR)

We collaborated with Toyota and created the following example with their Human Support Robot (HSR). Since the HSR uses Robot Operating System (ROS), we were quickly able to get data from the robot’s sensors, communicate with the actuators, and make the robot speak. We had fun at our booth watching the HSR detect faces and say “hello” (well, “こんにちわ”) to people.

In a slightly later revision, which is what you see in the video below, my colleague decided to add a few more things:

  1. Changed the face detection algorithm from a feature-based approach to a deep learning approach using the famous YOLO neural network archiecture.
  2. Added another neural network that takes the face region detected above to guess a person’s age.
  3. Used Stateflow to build a finite-state machine that managed all these detections. For example, the robot asks you to come closer if your face is too far away, so the age detection results are better.

If you want to learn more about MATLAB, Simulink, and ROS, check out our blog post, which contains videos and example files.

Example 2: Pick-and-Place with ROBOTIS OpenManipulator

This shows our connection to the ROBOTIS OpenManipulator for pick-and-place with plastic sushi pieces. In the following video, we show a MATLAB app that can:

  1. Calibrate an external webcam using a marker
  2. Identify objects of interest by thresholding them against the black paper background
  3. Classify the type of sushi using machine learning techniques
  4. Find the sushi position in real-world coordinates using the camera calibration values
  5. Plan a smooth trajectory for the pick-and-place motion
  6. Calculate inverse kinematics to move the arm joints along the specified trajectory

To communicate with the DYNAMIXEL servo motors of the manipulator, we used the ability to directly call external C/C++ code from MATLAB. You can find this library on the File Exchange if you want to try it out.

To learn more about manipulator kinematics in MATLAB and Simulink, we also have a blog post for that!

Example 3: Remote Control with VEX EDR V5 Robot Brain

Finally, we get to our education demonstration using the VEX EDR v5 Robot Brain.

We programmed a Simulink model that receives gamepad input and converts it to motor commands that can move the robots’ wheels and arm. This shows the ability to generate standalone C code from Simulink models and directly deploy the code to hardware. VEX robots are one of many entries in our hardware support catalog.

To learn more about programming VEX robots with Simulink — you guessed it — we have another blog post!


I hope you enjoyed this two-part tour of our experience at WRS 2018.

Some final takeaways from these posts:

Add A Comment

Your email address will not be published. Required fields are marked *

Preview: hide