Mobile Robot Control 2023
'Hero the Toyota HSR'
This course is about software design and how to apply this in the context of autonomous robots. The accompanying assignment is about applying this knowledge to a real-life robotics task.
Course Schedule and Lecture Slides
Lectures will typically take place on the Wednesdays between 15:30-17:15 in Gemini-South 3.A10. Guided selfstudy will take place on the Fridays between 10:45-12:30 in the same room. The course schedule is as follows:
|Wednesday April 26||Lecture: Introduction to mobile robot control||exercises week 1|
|Wednesday May 3||Lecture: Navigation 101||Navigation Assignment 1|
|Wednesday May 10||Lecture: Navigation 102||Navigation Assignment 2|
|Friday May 12||Guided selfstudy|
|Wednesday May 17||Lecture: Localization 101||Exercises Localization 101|
|Wednesday May 24||Lecture: Localization 102||Exercises Localization 102|
|Friday May 26||Guided selfstudy|
|Wednesday May 31||Lecture: System architecture|
|Friday June 2||Lecture: Best practices for C++ and Git|
|Wednesday June 7||Presentation of designs by the groups|
|Wednesday June 14||Guest lectures: "Safe navigation in a hospital environment" and "Autonomous parking of trucks"|
|Friday June 30||Final Challenge|
|Friday July 7||Deadline: Wiki Pages + Peer review|
To get started, you can follow the installation instructions found in the exercises for week 1. You can already do this before the first lecture.
Here we will collect the Frequently Asked Questions. Please check this page before contacting the student assistants or the tutors! If you find any issues or questions you had to deal with, please add them as well so your colleagues don't run into the same problems.
The figure on the right shows a 2D representation of a possible Restaurant setup, as an example. The objective is for Hero to "deliver" orders from the kitchen to a few tables. Which tables must be reached and in what order will be defined by the judges just before the challenge starts. The restaurant will contain a number of unknown static and dynamic objects (boxes, human actors walking)
Hero will be equipped with a basket in which he will carry the orders. The delivery of an order is defined as follows
- Drive up to the table.
- Position in front of the table, facing towards the table.
- Give a clear sound signal, signalling Hero has arrived at table A (io.speak("I arrived at table four")).
- Repeat until all the tables are visited in the correct order
- All walls in the restaurant will be approximately straight. No weird curving walls.
- The doors inside the restaurant will be (time-invariant) openings in the walls of about 0.5-1m that may be closed or open.
- There may be multiple routes to a given goal.
- A number of dynamic objects will be present in the form of human actors. Additionally, a number of static objects will be placed throughout the restaurant (see green blocks in figure on the right). The position does not have to be parallel to the walls.
- Hero will start in the start area, defined by a rectangle of approximately 1 by 1 meters. The orientation of Hero is arbitrary (i.e., not known to your software).
- The list of tables to be visited will be provided right before the challenge starts as a list of integers (0 identifies the first table in the array).
- After starting the software, Hero has to drive to the first table to deliver the order.
- If Hero found the correct table and signalled his arrival, he has to drive to the next tables to deliver the orders.
- The task is completed after Hero visited all tables on the list.
- Bonus points are given to the groups that can detect the static and dynamic objects and present them in the world model. How this is presented is left to the groups.
- Within the restaurant start area, we will make sure that some visible features (i.e. lines, corners) remain visible.
- An actual map of the restaurant will be provided to the teams one week before the final challenge, this will encompass a vector map (an example is provided at the bottom of this section).
- The list of tables to visit has to be supplied to the executable when starting the challenge, in the following format (for tables in the order: 2 -> 4 -> 3):
./hero_do_your_thing 2 4 3
- Do not touch the walls or objects! Slightly touching is allowed, however, bumping (i.e., driving head-on into a wall) is not allowed! If Hero hits the wall, we decide whether it counts as bumping.
- Every team has two trials (= max one restart). A trial ends if:
- Hero bumps into: the wall, a static or a dynamic object.
- Hero has not moved or has not made sensible movements (as judged by the tutors) for 30 seconds
- The total time limit of 10 minutes per group is reached
- The group requests a restart (on the first trial)
- restart means:
- Hero restarts at the defined start position
- The trail time (= the time graded) is reset, but
- the total time keeps running
- Maximum speed (is limited in Hero): 0.5 m/s translational, 1.2 rad/s rotational.
- There will be no second attempt if first attempt was successful
- Every situation that might occur, that is not covered in this document will be evaluated on the spot. If this happens, the judges have the final word.
- Make sure your software is easy to set-up, i.e:
- Your software can be updated with one easy command, e.g. 'git pull'
- Your software can be compiled using 'cmake' and 'make'
- It is allowed to use multiple executables.
- If your set-up deviates from this method, let your tutor know 1 week before the challenge!
- The software of all groups will be updated on the robot before the challenge starts
- This way, teams starting the challenge have as much time as teams that do the challenge at the end, compiling in between trials is not allowed.
Example map format and code
- We provide a simple example of a room with two tables and the code to read the map into your own C++ code.
- For this simple example, a simulator map is also provided. (Note: a simulator map will not be provided for the final challenge).
- We used the 20cm thickness blocks for your convenience
- Remember to add unknown objects to your simulator and test environments and/or create other challenging maps and test scenarios!
You can find an example map (JSON) and the code to get you started here: File:Mrc map format 2021.zip
Map For The Final Challenge
The map for the final challenge will be published here in the week leading up to the final challenge. Clutter will be added (both static and moving) on the day of the challenge, adhering to the rules specified under "Restaurant Challenge".
Exercise Group Wiki Pages
These are the groups in which you will be doing exercises during the first half of the course. Make sure to write your answers to the exercises on your wiki page and feel free to include as many videos and pictures of driving robots as you want.
Group 01 - visit gitlab - visit wiki
Group 02 - visit gitlab - visit wiki - (not yet claimed)
Group 03 - visit gitlab - visit wiki
Group 04 - visit gitlab - visit wiki
Group 05 - visit gitlab - visit wiki
Group 06 - visit gitlab - visit wiki
Group 07 - visit gitlab - visit wiki
Group 08 - visit gitlab - visit wiki
Group 09 - visit gitlab - visit wiki
Group 10 - visit gitlab - visit wiki
Group 11 - visit gitlab - visit wiki
Group 12 - visit gitlab - visit wiki
Group 13 - visit gitlab - visit wiki
Group 14 - visit gitlab - visit wiki - (not yet claimed)
Group 15 - visit gitlab - visit wiki
Group 16 - visit gitlab - visit wiki
Group Wiki Pages
During the second half of the course, we will ask you to form groups of 6 and you will design your own robotic system with these groups under the guidance of a tutor.
|Group name||GitLab page||Wiki page||Tutor|
|Wall-E||visit GitLab||visit wiki||Cesar Martinez Lopez|
|HAL-9000||visit GitLab||visit wiki||Jordy Senden & Rene van de Molengraft|
|R2-D2||visit GitLab||visit wiki||Rudolf Huisman & Aron Aertssen|
|Rosey||visit GitLab||visit wiki||Ruben Beumer|
|The Iron Giant||visit GitLab||visit wiki||Koen de Vos & Gijs van Rhijn|
|Ultron||visit GitLab||visit wiki||Peter van Dooren|
- Testing takes place on the RoboCup field in Impuls.
- Three robots will be available for testing, you will share the field with three groups
- Be sure you have your software on git before coming to the test session so that you only have to git clone/git pull to get your code on the robot!
- Please charge the robot whenever possible so there is no down time due to empty batteries.
To submit for a timeslot you have to be logged in. Through the 'edit'-button for Practical sessions, you can select a timeslot by typing 'Group <groupnumber>' behind the desired timeslot.
- You may only reserve 2 test slots per week
- Submissions are last checked the day before at 22:00.
For week 2 each group can choose 2 time slots. Choose wisely.
|9:45 - 10:40||free||free|
|10:45 - 11:40||free||free|
|11:45 - 12:40||free||9|
|13:30 - 14:25||10||9|
|14:30 - 15:25||8||10|
|15:30 - 16:25||8||4|
|16:30 - 17:25||free||4|
|9:45 - 10:40||5||11|
|10:45 - 11:40||1||11|
|11:45 - 12:40||1||5|
|13:30 - 14:25||15||6|
|14:30 - 15:25||15||6|
|15:30 - 16:25||16||7|
|16:30 - 17:25||16||7|
For week 3 each group can choose 2 time slots. Choose wisely.
|9:45 - 10:40||6||free|
|10:45 - 11:40||6||free|
|11:45 - 12:40||free||free|
|13:30 - 14:25||3||10|
|14:30 - 15:25||3||10|
|15:30 - 16:25||7||4|
|16:30 - 17:25||free||4|
|9:45 - 10:40||11||5|
|10:45 - 11:40||1||15|
|11:45 - 12:40||1||15|
|13:30 - 14:25||13||16|
|14:30 - 15:25||13||16|
|15:30 - 16:25||7||5|
|16:30 - 17:25||11||8|
For week 4 each group can choose 1 time slot.. Luckily we have three robots as of this week. Choose wisely.
|9:45 - 10:40||free||1||15|
|10:45 - 11:40||9||free||free|
|11:45 - 12:40||free||free||10|
|13:30 - 14:25||free||free||free|
|14:30 - 15:25||3||8||6|
|15:30 - 16:25||15||4||11|
|16:30 - 17:25||16||5||7|
For week 5 each group can choose 2 time slots.
|9:45 - 10:40||free||15||free|
|10:45 - 11:40||3||9||free|
|11:45 - 12:40||3||free||free|
|13:30 - 14:25||16||free||6|
|14:30 - 15:25||16||1||6|
|15:30 - 16:25||08||5||7|
|16:30 - 17:25||08||5||7|
|13:30 - 14:25||4||13||free|
|14:30 - 15:25||4||13||free|
|15:30 - 16:25||11||10||free|
|16:30 - 17:25||11||10||free|
For week 6 each group can choose 2 time slots.
|9:45 - 10:40||free||free||free|
|10:45 - 11:40||1||13||11|
|11:45 - 12:40||1||13||11|
|13:30 - 14:25||15||16||6|
|14:30 - 15:25||15||16||6|
|15:30 - 16:25||08||5||7|
|16:30 - 17:25||08||5||7|
|13:30 - 14:25||4||free||free|
|14:30 - 15:25||4||free||free|
|15:30 - 16:25||free||free||free|
|16:30 - 17:25||free||free||free|
This year's staff consists of the following TU/e employees:
Peter van Dooren
Koen de Vos
Gijs van Rhijn
Rene van de Molengraft