Robotics Simulation Labs
Here you will find a set of tutorials to practice robotics concepts with Webots Open-Source Robot Simulator and Python.
This page is available at: https://felipenmartins.github.io/Robotics-Simulation-Labs/

Objectives
I teach an introductory-level course on Robotics for electrical engineering students, focusing on wheeled mobile robots. These Robotics Simulation Labs were created to replace the practical activities of that course during the restrictions related to the COVID-19 pandemic. Initially, there were only 4 labs, but gradually more labs were added to cover more topics. Now I use the simulation labs to complement the theory and practical activities of the course.
How to use
The Robotics Simulation Labs are presented as a series of tutorials, including references to the official Webots tutorials, when relevant. The Labs are intended to be followed in sequence, starting from the first one.
Templates and solutions are presented for some labs, always in Python. They are compatible with the global coordinate system adopted as default by Webots since version R2022a. If you use an older version of Webots, please see this note.
If you make use of the content in this page, please cite [1].
Content
The content of each lab is listed below:
- Lab 1 - Installation and configuration of Webots and Python
- Lab 2 - Line-following Behavior with State Machine
- Lab 3 - Vision-based Line-following Behavior
- Lab 4 - Odometry-based Localization
- Lab 5 - Go-to-goal Behavior with PID
- Lab 6 - Trajectory Tracking Controller
- Lab 7 - Combine Behaviors to Complete a Mission
- Lab 8 - Hardware-in-the-Loop Simulation
- Lab 9 - Path planning with Dijkstra
- BONUS - Robot Soccer Challenge
Accompanying Jupyter Notebooks
Brief explanations of some concepts, including how to implement them in Python, are available as Jupyter Notebooks. These notebooks are useful for understanding the fundamentals because they allow step-by-step execution of the implemented functions without the need of running Webots.
The available notebooks are:
- Implementation of simple robot behaviors for mobile robot control (related to Lab 2)
- Selecting Behaviors with Finite-State Machines (also related to Lab 2)
- Digital Image Processing - fundamentals and basic functions (related to Lab 3)
- Odometry-based Localization for the differential-drive robot (related to Lab 4)
- Mobile Robot Control with PID for a go-to-goal moving controller (related to Lab 5)
- Dijkstra’s Algorithm for Robotic Path Planning (related to Lab 9)
Simple Robot Simulator
If you are looking for a simpler simulator, try SimRobSim, which is a simple robot simulator built using Pygame. It simulates a differential-drive robot that uses Dijkstra’s algorithm to define waypoints, and implements a path-following algorithm using PID.
Reference
If you make use of the Robotics Simulation Labs, please cite [1]:
[1] Lima, José, Felipe N. Martins, and Paulo Costa. “Teaching Practical Robotics During the COVID-19 Pandemic: A Case Study on Regular and Hardware-in-the-Loop Simulations.” Iberian Robotics Conference. Cham: Springer International Publishing, 2022. Available at: https://link.springer.com/chapter/10.1007/978-3-031-21065-5_44
License
This project is licensed under the terms of the MIT license.