Skip to content
tom-howard edited this page Aug 1, 2022 · 19 revisions

Welcome

Welcome to the University of Sheffield Practical ROS Course!

This Wiki contains the material for a six-week practical lab course designed (primarily) for the University of Sheffield COM2009/3009 Robotics module. If you are a Computer Science Student taking the COM2009/3009 course then "Hello!" These labs will be led by Tom Howard (the author) and I look forward to meeting you. If you are here as part of another University of Sheffield course, or just to learn about ROS independently, then that's great too... "Welcome!" This material is split into a series of week-by-week exercises, designed to be completed in simulation over six two-hour lab sessions.

You can navigate this Wiki via the contents page to the right, where you will find links to the week-by-week lab content listed under the Course Schedule heading. There are also links at the bottom of each page to direct you to the next page (or the previous one, if you want to go back).

Through this Wiki you will learn how to use ROS (the Robot Operating System) to program robots. You will learn how to do this in simulation first, but everything you will learn is directly applicable to real robots too, and so there is also a further section of this Wiki dedicated to applying your new-found ROS knowledge to the real TurtleBot3 Waffle Robots that we have here in The Diamond.

The Simulation Environment

As discussed above, you will work with ROS in simulation over this six-week lab course and we have created a custom ROS Simulation Environment designed specifically for this course. This is available on all University Computers in The Diamond, as well as some remote-access machines available via the University Remote Desktop Service too. Please make sure that you have a look at the Getting Started page for more information on how to access this.

Introducing the Robots

Throughout this course you will work with a simulation of the TurtleBot3 Waffle made by Robotis. This is the 3rd Generation Robot in the TurtleBot family, which has been the reference hardware platform for ROS since 2010. This family of robots exists to provide accessible and relatively low-cost hardware and open-source software on a robot platform, to encourage people to learn robotics and ROS and make it as easy as possible to do so.

At the University of Sheffield we have a number of TurtleBot3 Waffle Robots specifically for teaching this course:

As such, this lab course has been developed with this robot in mind, so that the things that you learn and develop in simulation will be directly transferable to the real robot hardware later on.

The robots that we have are in fact slightly different to the standard TurtleBot3 WafflePi model that you can buy directly from Robotis. We have made a few adjustments, as shown in the image below:

The robots have the following core hardware elements:

  • Independent left and right wheel motors (DYNAMIXEL XM430’s) to drive the robot using a differential drive configuration.
  • An OpenCR Micro-Controller Board to power and control the wheel motors, distribute power to other hardware elements and provide an interface for additional sensors.
  • An UP Squared Single-Board Computer (SBC) with an Intel Processor and 32GB of on-board eMMC storage. This board acts as the "brain" of the robot.

In addition to this, the robots are equipped with the following sensors:

  • A Light Detection and Ranging (or LiDAR) sensor, which spins continuously when the robot is in operation. This uses light in the form of laser pulses to allow the robot to measure the distance to surrounding objects, providing it with a 360° view of its environment.
  • An Intel RealSense D435 Camera with left and right imaging sensors, allowing depth sensing as well as standard image capture.
  • A 9-Axis Inertial Measurement Unit (or IMU) on-board the OpenCR Micro Controller board, which uses an accelerometer, gyroscope and magnetometer to measure the robot's specific force, acceleration and orientation.
  • Encoders in each of the DYNAMIXEL wheel motors, allowing measurement of speed and rotation count for each of the wheels.

Not bad eh?! You will meet these robots in person later in the course!

Useful Resources

The Free ROS Programming eBook

Robotis (the developers of the TurtleBot3 Waffle robots) have written a book on programming robots with ROS. This is available as a free eBook, which you can download here and we recommend that you do so! This is a great resource which provides a detailed introduction to what ROS is and how it works, as well as a comprehensive "Beginners Guide" to ROS programming. The other great thing about this is that it is tailored to the TurtleBot3 Robot specifically, providing examples of how to use a range of TurtleBot3 packages along with a detailed description of how they work.

We recommend that you have a look at this book to learn more about the concepts that you are exploring in this practical course.

Other Resources

In addition to the book mentioned above, this course material has been informed by a range of other (mostly free and open-access) resources too. We recommend you check out some of these as well, if you would like to dig a little deeper:

Changelog

Iteration Academic Year Details
2 2021-22 Updated for a new release of the WSL-ROS Environment: now running Ubuntu 20.04 and ROS Noetic. All code templates now updated for Python 3, including nice things like f-strings for all string formatting. Week 3 Exercise 4 (Autonomous Navigation) has been revised to use command-line calls to the /move_base_simple action server to make the robot move to navigation goals (rather than using the GUI tools in RViz), in the hope that this will make it easier to see how the same thing could be achieved programmatically instead. Removed an exercise in Week 5 to make it shorter (because it was a bit of a long one originally), but introduced a couple of optional ones instead for those who wish to delve further.
1 2020-21 Initial release of this Wiki! Based on our brand new WSL-ROS environment running Ubuntu 18.04 and ROS Melodic.

Navigating This Wiki:
[Next] Getting Started →