This repository contains teaching materials for an introductory workshop about the Robotic Operating System (ROS), which is organized as a dissemination activity for the TETRA project 'Ad Usum Navigantium' at the Catholic university of Leuven, Belgium.
ROS is an open-source, meta-operating system used in robotics research and industry. It combines the efforts of developers around the world, so that others have to spend less time ’reinventing the wheel’. It provides functionality like hardware abstraction,localization, navigation, visualization and much more in a communication infrastructure that is easy to scale. The learning curve for ROS can be quite steep, with existing tutorials often going too much in depth too soon.
In this one-day workshop, we address some of the main topics needed for getting started with the robotic operating system. Following this workshop, you should have a solid grasp of the core concepts of ROS. You'll be able to make your own packages, and learn how to use software developed by others. However, this will not be a programming workshop. The code for the example programs will be provided in appendix for further reading. The focus of this workshop is more on interacting with the different parts of ROS.
- Introduction: a general introduction to what ROS is, what it can('t) be used for and how it compares to other similar tools.
- Hello world example: following the general introduction, we will dive right into how to develop software ROS by means of a minimal working (or 'Hello world') example.
- Simulation: you don't always need a robot to develop the initial version of your programs. By using the Gazebo physics simulator, it becomes possible to simulate one or more robots in a simulated environment. This chapter helps you get started with Gazebo and Unified Robot Description Format (or URDF ) files.
- Hands on with the Turtlebot 3: of course working with ROS is the most fun when you can run your programs on an actual robot. In this final part of the workshop you will gain some practical experience with the Turtlebot 3. Which is a low-cost, open source robot platform.
Most of the information you'll need will be in the tutorials themselves. However, we highly recommend having a basic knowledge of Linux and terminal commands beforehand. You can learn more about Linux on our wiki. Basic knowledge of the Python programming language is optional, but can be useful if you want to fully understand the source code of the ROS nodes.
The tutorials can be viewed statically online. This means that you won't be able change or execute any of the code. The explanations are still present, however, so you could use this format to quickly consult the materials later.
The tutorials can be viewed directly on github itself by selecting the relevant document in the tutorials folder. Certain features like the table of contents or math rendering don't work properly, but it is the quickest way to access the tutorials.
nbviewer provides an Jupyter Notebook server that renders notebooks stored at github (or elsewhere). The rendering is done in real time when you load the book. Functionality is slightly better than github, but it is still a only a static (i.e. non-interative) render of the notebooks. You can access the tutorials via this link.
The tutorials are meant to be interactive, the best way to achieve this is to download the files, install jupyter and start a notebook server (the first two steps are already taken care of if you are following the workshop in person). This will allow you to run the code cells, change values and then run them again with these changed values. Initial setup is admittedly a bit cumbersome, this is a trade-off for the increased interactivity.
-
To download the files:
-
To install jupyter, take a look at the software installation page on the wiki.
-
To start a notebook server, simply execute
jupyter notebook
in a terminal. A new tab will now open in your browser. Navigate to the tutorial you want to read (located in the 'tutorials' subdirectory) and start learning ROS! The tutorials are contain both code and text. You can recognize code blocks by their grey outline:To execute the code contained in these blocks you can either:
1. Click on the cell such that a cursor appears inside it, and subsequently press Ctrl+Enter 2. Use the 'run cell' button in the notebook toolbar at the top of the window: ![](tutorials/images/notebook_toolbar.png)
To stop the execution of a certain cell, use the 'interrupt kernel' button next to the 'run cell' button in the toolbar. One caveat is that each jupyter notebook can only run 1 terminal command at a time. When executing and debugging ROS programs, you will often find yourself requiring more than one terminal. You can always open additional terminals, either in a new window with Ctrl+Alt+T, or in the same window as a new tab with Ctrl+Shift+T. Alternatively, if you want to keep everything in the same browser window, you can also open a terminal from jupyter by selecting new -> terminal from the notebook server tab (not the tab with the tutorial, rather the first one that opens in the browser when executing
jupyter notebook
)
Want to learn even more ? Below you will find some additional rescources:
- A great book to get you started is A gentle introduction to ROS by Jason M. O'Kane. This book is freely available and a good choice if you are completely new to ROS. It uses the C++ programming language, but don't worry if you don't know the language when starting the book.
- The ros wiki contains a plethora of information on various topics. The tf and URDF tutorials could be particularly interesting.
- To learn more about Gazebo, consider taking a look at the considerable list of Gazebo tutorials.
The code and tutorials in this repository were developped by:
- Peter Aerts
- Robin Amsters
- Ali Bin Junaid
- Samrat Roy