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.
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:
git clone https://github.com/RobinAmsters/ROS_workshop
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:
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:
The code and tutorials in this repository were developped by: