Teaching Robotics Remotely (Part 1)

I’ve been working as a teacher in MEE for just over a year now. I started this job having very little prior experience of teaching, nor did I have a great deal of experience in the subject that I would be teaching either: Robotics! Needless to say, I’ve learnt a lot this last year.

In addition to this, two thirds of my time in this job has now been spent developing methods to deliver practical robotics experiences remotely. Despite the challenges, I believe that we’ve come up with some really interesting and engaging ways to provide students with practical robotics experiences, and I’d like to share some of these with you over the course of a few blog posts.

The Importance of Practical Robotics Teaching

Robotics is one of the most rapidly growing industries and it’s therefore essential that we provide our students with skills in robot programming in order to prepare them for modern day industry. Fundamentally though, programming a robot to perform even a seemingly simple task is difficult, and involves a lot of trial and error, it’s therefore an engineering subject that needs to be taught in a practical and interactive way.  That's why the University has invested a lot recently in cutting edge robot hardware to enable this.

Our Turtlebot3 Waffles running ROS (more on this in a future post!)

Traditionally, a lot of practical robotics teaching here at the University of Sheffield has involved students working in teams and competing against one-another to program (and sometimes build) a real robot that can complete certain tasks in a fun competition. This not only exposes them to robot programming, but is also a great way to help students develop more transferable skills such as team working, problem solving and creativity. We were keen to maintain all this in a remote environment and therefore looked at what we could do in simulation in the absence of a real robot arena.

A Robotics Simulator

Robotics Simulators are already very well established, and are essential tools for professional roboticists: allowing them to develop and prove out a robotic behaviour or application cheaply and quickly, without needing to have the actual robot itself to hand (or even in existence!) As a result, there are a range of options available out there, but we were conscious of finding something that would be accessible for all students, whilst also being relatively easy to get to grips with, so that students didn’t feel too daunted by the software and could get going quickly with the robotics programming tasks at hand.

We opted for Webots, a cross-platform, free and open-source robot simulator which even I managed to get to grips with in a matter of hours! The user interface is simple and easy to use, and there is a great set of documentation available on the Cyberbotics website, including a series of excellent tutorials designed for beginners, which are very helpful, and which we encouraged our students to work through as pre-lab exercises.

Even though Webots works on all major operating systems, it does need reasonably capable hardware, and not all of our students had access to a computer with these capabilities. Thankfully, our IT Services team were also working hard when lockdown struck and quickly rolled out a University Remote Desktop Service to support student computing requirements. Using this, we were able to give students access to powerful university computers with Webots pre-installed, so that they could all access the software, provided they had an internet connection.

A Team Robotics Challenge

We used this to deliver our second year Computer Science Robotics course. Assigning students into groups of 3 or 4, we set them a challenge to develop a robot to solve a "Navigation, Search and Approach" challenge. The teams had to design their robots, from scratch, selecting appropriate geometries, design features and incorporating the necessary sensors and actuators to allow the robot to succeed.  Some of the more creative designs are shown below:

Teams then programmed their robots using Python: one of a number of programming languages that are supported by the software.

Students had 6 weeks in total to work on this, and had to develop their robots to complete the task in 2 minutes or less! After this, the students submitted their robots (as Webots PROTO files) and controllers (python .py files) to us, which we then used to run the submissions in a final challenge arena. We provided the students with some example arenas beforehand, which they could use as testing grounds to develop their robotic behaviours, but the configuration of the final arena wasn’t revealed until after the submission deadline, so their robots had to be programmed robustly to be able to cope with a completely unknown environment.

We received some brilliant submissions, and put together a “best bits” video compilation from the final competition to illustrate all their hard work:

Open-Sourcing This Approach

I’ve since developed another slightly shorter and simpler robotics lab course along similar lines to this, but this time designed for first year EEE students. The material for this is available online as a GitHub wiki, and the corresponding repo contains all the Webots simulations and example code to support this. Please feel free to have a look at it here!

Check back soon for more...

Coming up in future post in this series:

  • Building robot arms at home (our "Take Home Kit" approach for Mechatronics teaching)
  • Teaching ROS (The Robot Operating System)