Sebastian Castro is back to talk about his top 2 professional interests: robotics and education.
The RoboCup@Home Education Challenge is a robotics education experience based on, and built into, the worldwide RoboCup competition. This initiative is headed by Prof. Jeffrey Tan from Nankai University, who has been involved in RoboCup for many years.
This part-workshop, part-competition is targeted to get a younger, less-experienced audience a taste of what it takes to program an autonomous service robot. The goal is to get people excited and qualified to tackle the challenges in the RoboCup@Home major league of the competition.
RoboCup@Home Education challenge has been around since 2015, but MathWorks first became involved in 2017. In a previous blog post, we wrote about our first teaching experience at the RoboCup Asia Pacific Open 2017 in Bangkok, Thailand.
Now that 2018 is halfway through, I am happy to share how our collaboration has continued and evolved.
What’s New in 2018?
So far in 2018, there have been 3 RoboCup@Home Education challenges.
- Early May: RoboCup Japan Open 2018 — Ogaki, Japan
- Late May: European RoboCupJunior Championship 2018 — Montesilvano, Italy
- Mid June: RoboCup 2018 — Montreal, Canada
The RoboCup 2018 event was the biggest of the three, and the one we personally attended this year. We had 9 teams representing 7 countries and 4 continents, which is always a fantastic experience.
Since we’re scaling up the frequency of these workshops, we’ve made the content open-source and available on the RoboCup@Home Education Web site.
RoboCup@Home Education in Canada — Courtesy of Prof. Jeffrey Tan
ROS Supports Many Robots
As you see in the photo above, we use the TurtleBot 2 as our development platform because it’s relatively easy to set up and has been around for quite some time now. This robot uses the Robot Operating System (ROS), which is a prolific software framework in RoboCup (and robotics in general).
Prof. Luca Iocchi from Sapienza University of Rome is one of the main collaborators of RoboCup@Home and RoboCup@Home Education, and a driving force behind the Italy event this year. One of Prof. Iocchi’s projects is MARRtino — an open-source, low-cost robotic platform that also relies on ROS.
One of the great things about ROS is its communications framework, which lets you switch robot platforms (real or simulated) with little effort. By changing the names of the ROS topics and writing a simple MATLAB script that lets users select their robot, Prof. Tan and Prof. Iocchi were able to hold the workshop in Italy with both TurtleBot 2 and MARRtino. In the future, this material could be extended to other popular educational platforms like the TurtleBot 3 from ROBOTIS.
Prof. Iocchi summarized the role of MATLAB in teaching newcomers about ROS: “It is possible to provide high-level functions that hide the complexity of ROS to young students.”
RoboCup@Home Education in Italy, featuring TurtleBot and MARRtino — Courtesy of Prof. Luca Iocchi
Not MATLAB *or* Open-Source — MATLAB *and* Open-Source!
As we became involved with RoboCup@Home Education, Prof. Tan was gracious enough to let us present anything on MathWorks tools so long as it was relevant to the challenge. Whatever we did not, or could not, cover would be addressed with open-source ROS packages.
… so, how does this work? Quite well, actually!
ROS is all about distributed functionality. ROS based solutions commonly use several programming languages, or client libraries, to tackle different parts of a problem. Recall that MATLAB and Simulink have an interface to ROS through Robotics System Toolbox. If you want to know more, we have a blog post about this. So, we shouldn’t think of MATLAB and Simulink as alternatives to ROS, but rather as options for implementing and integrating ROS components.
It is important to reiterate that it’s not “MATLAB or open-source”, but rather “MATLAB and open-source”, that we use to solve the challenges. That said, teams had the freedom to choose their tools and produced vastly different solutions. We have already benefited from the students’ ability to find creative solutions to improve our workshop materials, and hope to continue doing this!
Here is how MATLAB vs. open-source breaks down in our currently proposed solution.
- MATLAB: System integration, decision-making, computer vision, navigation, speech parsing, manipulation algorithms
- Open-source: Mapping, speech recognition and synthesis, low-level drivers to mobile base and manipulator
To communicate between MATLAB and other software components, we also had several choices:
- Use ROS to publish/subscribe messages between MATLAB and other ROS nodes
- Run system commands from MATLAB to start/kill external ROS nodes
- Call Python code from MATLAB to perform speech recognition without ROS, or to integrate with existing algorithms developed in Python (which some teams had)
Lecture at RoboCup 2018 — Courtesy of Prof. Jeffrey Tan
Computer Vision Updates
The last topic I want to bring up is computer vision. This is where we had the biggest technical update with MATLAB since the Thailand event in 2017. I had started simple with some color thresholding and basic location + depth tracking, but there was a big disconnect between that and the fact that service robots need to interact with — and therefore detect — humans. Unfortunately for vision algorithm designers, humans are not giant blobs of a solid and consistent color.
This is where we had to bring in some more advanced solutions that worked pretty well for the challenge.
- Pretrained face and person detectors from Computer Vision System Toolbox
- Deep learning (namely, Convolutional Neural Networks) to classify images
We combined these solutions by using a built-in face detector to identify regions of interest (ROIs) in images captured by the robot, and then using a publicly available neural network to classify the gender of each face. To do the latter, I took advantage of the ability to import Caffe models into MATLAB.
Side note 2: My teammate Connell D’Souza took this a step further by taking an age detection neural network and deploying it to an NVIDIA Jetson TX2 using GPU Coder. You can find a preview of this on our Facebook group, but expect to see more on this in the future!
Of course, vision is just an example of what MathWorks can bring to the table. As Prof. Tan put it, “The potential to leverage advanced techniques (toolboxes) in MATLAB is a big plus point, not only for beginners but also experienced ROS users.”
Testing out the face and gender detection solution [From Sebastian’s Twitter]
We already have a couple ideas for expanding the usage of MathWorks tools:
- Graphical programming using Simulink and Stateflow, which would be especially useful for system integration and decision-making
- Bringing the full navigation solution into MATLAB — SLAM for map generation and Monte Carlo localization are available!
- Using automatic code generation to deploy standalone C/C++ ROS nodes
[Left] Volunteer judges from MathWorks, ROBOTIS, and RoboCup looking at Team Skuba JR (Thailand)’s Deep Learning capabilities
[Right] RoboCup@Home Education 2018 Organizing Committee — Professors Jeffrey Tan, Yoshinobu Hagiwara, M.Q. Azhar, and Kanjanapan Sukvichai
Courtesy of Prof. Jeffrey Tan
To carry the theme from the previous blog post — Spot the MathWorks logos!
Courtesy of Prof. Jeffrey Tan and Prof. Kanjanapan Sukvichai