Mobile Robot Control 2023: Difference between revisions
Tag: 2017 source edit |
(adjust dates for 2024) Tag: 2017 source edit |
||
(189 intermediate revisions by 41 users not shown) | |||
Line 11: | Line 11: | ||
=Course Schedule and Lecture Slides= | =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: | |||
{| class="wikitable" style="margin-left: 5em;" cellspacing="0" cellpadding="5" border="1" align="center" | |||
!Date | |||
{| style="margin-left: 5em;" cellspacing="0" cellpadding="5" border="1" align="center" | ! | ||
! | |||
|- | |- | ||
|Wednesday April | |Wednesday April 24 | ||
| width="325" |Lecture: Introduction to mobile robot control | | width="325" |Lecture: Introduction to mobile robot control | ||
|[[:File:Installation_instructions_and_exercises1.pdf|exercises week 1]] | |[[:File:Installation_instructions_and_exercises1.pdf|exercises week 1]] | ||
[[:File:Tooling exercises practical.pdf| practical exercises week 1]] | [[:File:Tooling exercises practical.pdf|practical exercises week 1]] | ||
[[:File:MRC Lecture Introduction v04.ppt|Lecture slides]] | |||
|- | |||
|Friday April 26 | |||
|Lecture: Best practices for C++ and Git | |||
Guided selfstudy | |||
| | |||
|- | |||
|Wednesday May 1 | |||
|Lecture: Local Navigation | |||
|[[:File:MRC Navigation Assignment 1.pdf|Navigation Assignment 1]] | |||
[https://gitlab.tue.nl/mobile-robot-control/mrc-navigation-assignment-1/-/tree/main Visit GitLab]<br />[[:File:MRC 2023 Navigation Part 1.pdf|Lecture slides]] | |||
|- | |- | ||
| | |Friday May 3 | ||
| | |Guided selfstudy | ||
| | | | ||
|- | |- | ||
|Wednesday May | |Wednesday May 8 | ||
|Lecture: Navigation | |Lecture: Global Navigation | ||
|[[:File:MRC Navigation Assignment 2.pdf|Navigation Assignment 2]] | |||
[[:File:MRC 2023 Navigation Part 2.pdf|Lecture slides]] | |||
|- | |||
|Friday May 15 | |||
|Ascension day | |||
| | | | ||
|- | |- | ||
| | |Wednesday May 15 | ||
|Guided selfstudy | |Guided selfstudy | ||
| | | | ||
|- | |- | ||
| | |Friday May 17 | ||
|Lecture: Localization | |Lecture: Localization | ||
|[[:File:Localisation_assignment_1.pdf|Exercises Localization 101]] | |[[:File:Localisation_assignment_1.pdf|Exercises Localization 101]] | ||
[[:File:Lecture_Localisation1.pdf|Lecture slides]] | |||
|- | |- | ||
|Wednesday May | |Wednesday May 22 | ||
| | |Guided selfstudy | ||
| | | | ||
|- | |- | ||
|Friday May | |Friday May 24 | ||
|Guided selfstudy | |Guided selfstudy | ||
| | | | ||
|- | |- | ||
|Wednesday May | |Wednesday May 29 | ||
|Lecture: System architecture | |Lecture: System architecture | ||
|[[:File:EMC_Lecture_system_architecture.pdf|Lecture slides]] | |||
|- | |||
|Friday May 31 | |||
|Help sessions | |||
| | | | ||
|- | |- | ||
|Friday | |Friday May 31 | ||
| | |Deadline intermediate peer reviews | ||
| | | | ||
|- | |- | ||
|Wednesday June | |Wednesday June 5 | ||
|Presentation of designs by the ''groups'' | |Presentation of designs by the ''groups'' | ||
| | |||
|- | |||
|Friday June 7 | |||
|Help sessions | |||
| | |||
|- | |||
|Friday June 7 | |||
|Deadline exercises | |||
| | | | ||
|- | |- | ||
|Wednesday June 14 | |Wednesday June 14 | ||
|Guest lectures: "Safe navigation in a hospital environment" and "Autonomous parking of trucks" | |Guest lectures: "Safe navigation in a hospital environment" and "Autonomous parking of trucks" | ||
|[[:File:Towards_context_aware_navigation.pdf|Context-aware navigation slides]] | |||
[[:File:DAF_slides.pdf|DAF Lecture slides]] | |||
|- | |||
|Friday June 16 | |||
|Help sessions | |||
| | | | ||
|- | |- | ||
|Friday June | |Friday June 21 | ||
|'''Final Challenge''' | |'''Final Challenge''' | ||
| | |||
|- | |||
|Friday June 28 | |||
|deadline wiki + final peer review | |||
| | | | ||
|- | |- | ||
|<span style="color:red">Friday July 7</span> | |<span style="color:red">Friday July 7</span> | ||
|<span style="color:red">'''Deadline: Wiki Pages + Peer review'''</span> | |<span style="color:red">'''Deadline: Wiki Pages + Peer review'''</span> | ||
| | |||
|- | |- | ||
|} | |} | ||
Line 82: | Line 124: | ||
The map for the final challenge will be published here in the week leading up to 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" | Clutter will be added (both static and moving) on the day of the challenge, adhering to the rules specified under "Restaurant Challenge". | ||
An overview of the map for the final challenge is shown below. | |||
[[File:RestaurantChallengeMapOverview.png]] | |||
The PNG of this map that can be used in your software/simulator is provided here: [[:File:RestaurantChallengeMap.png]]. | |||
<div class="mw-collapsible mw-collapsed" style="max-width:700px; overflow:auto;"> | |||
The corresponding data that you could use in a JSON-file is provided here (click 'Expand'): | |||
<div class="mw-collapsible-content"> | |||
<pre> | |||
{ | |||
"tables":[ | |||
[ | |||
[3, 4], | |||
[4, 16], | |||
[16, 15], | |||
[15, 3]], | |||
[ | |||
[5, 6], | |||
[6, 22], | |||
[22, 21], | |||
[21, 5]], | |||
[ | |||
[19, 20], | |||
[20, 38], | |||
[38, 37], | |||
[37, 19]], | |||
[ | |||
[45, 39], | |||
[39, 40], | |||
[40, 46], | |||
[46, 45]], | |||
[ | |||
[41, 42], | |||
[42, 48], | |||
[48, 47], | |||
[47, 41]] | |||
], | |||
"walls":[ | |||
[0, 1], | |||
[1, 10], | |||
[10, 2], | |||
[2, 0], | |||
[10, 29], | |||
[29, 28], | |||
[28, 9], | |||
[9, 10], | |||
[24, 26], | |||
[26, 28], | |||
[28, 27], | |||
[27, 24], | |||
[23, 24], | |||
[24, 51], | |||
[51, 50], | |||
[50, 23], | |||
[43, 48], | |||
[48, 50], | |||
[50, 49], | |||
[49, 43], | |||
[2, 3], | |||
[3, 44], | |||
[44, 43], | |||
[43, 2], | |||
[7, 8], | |||
[8, 12], | |||
[12, 11], | |||
[11, 7], | |||
[30, 31], | |||
[31, 35], | |||
[35, 34], | |||
[34, 30], | |||
[17, 18], | |||
[18, 34], | |||
[34, 33], | |||
[33, 17] | |||
], | |||
"doors":[ | |||
[ | |||
[31, 32], | |||
[32, 36], | |||
[36, 35], | |||
[35, 31]] | |||
], | |||
"start_area":[ | |||
[ | |||
[13, 14], | |||
[14, 26], | |||
[26, 25], | |||
[25, 13]] | |||
], | |||
"points":[ | |||
{"x": 0.0, "y": 4.5, "_comment": 0 }, | |||
{"x": 7.0, "y": 4.5, "_comment": 1 }, | |||
{"x": 0.0, "y": 4.3, "_comment": 2 }, | |||
{"x": 0.2, "y": 4.3, "_comment": 3 }, | |||
{"x": 1.6, "y": 4.3, "_comment": 4 }, | |||
{"x": 3.5, "y": 4.3, "_comment": 5 }, | |||
{"x": 4.2, "y": 4.3, "_comment": 6 }, | |||
{"x": 4.9, "y": 4.3, "_comment": 7 }, | |||
{"x": 5.4, "y": 4.3, "_comment": 8 }, | |||
{"x": 6.8, "y": 4.3, "_comment": 9 }, | |||
{"x": 7.0, "y": 4.3, "_comment": 10 }, | |||
{"x": 4.9, "y": 3.8, "_comment": 11 }, | |||
{"x": 5.4, "y": 3.8, "_comment": 12 }, | |||
{"x": 5.8, "y": 3.7, "_comment": 13 }, | |||
{"x": 6.8, "y": 3.7, "_comment": 14 }, | |||
{"x": 0.2, "y": 3.6, "_comment": 15 }, | |||
{"x": 1.6, "y": 3.6, "_comment": 16 }, | |||
{"x": 2.4, "y": 3.1, "_comment": 17 }, | |||
{"x": 2.6, "y": 3.1, "_comment": 18 }, | |||
{"x": 0.5, "y": 2.9, "_comment": 19 }, | |||
{"x": 1.2, "y": 2.9, "_comment": 20 }, | |||
{"x": 3.5, "y": 2.9, "_comment": 21 }, | |||
{"x": 4.2, "y": 2.9, "_comment": 22 }, | |||
{"x": 5.2, "y": 2.7, "_comment": 23 }, | |||
{"x": 5.4, "y": 2.7, "_comment": 24 }, | |||
{"x": 5.8, "y": 2.7, "_comment": 25 }, | |||
{"x": 6.8, "y": 2.7, "_comment": 26 }, | |||
{"x": 5.4, "y": 2.5, "_comment": 27 }, | |||
{"x": 6.8, "y": 2.5, "_comment": 28 }, | |||
{"x": 7.0, "y": 2.5, "_comment": 29 }, | |||
{"x": 2.6, "y": 1.9, "_comment": 30 }, | |||
{"x": 4.2, "y": 1.9, "_comment": 31 }, | |||
{"x": 5.2, "y": 1.9, "_comment": 32 }, | |||
{"x": 2.4, "y": 1.7, "_comment": 33 }, | |||
{"x": 2.6, "y": 1.7, "_comment": 34 }, | |||
{"x": 4.2, "y": 1.7, "_comment": 35 }, | |||
{"x": 5.2, "y": 1.7, "_comment": 36 }, | |||
{"x": 0.5, "y": 1.5, "_comment": 37 }, | |||
{"x": 1.2, "y": 1.5, "_comment": 38 }, | |||
{"x": 1.6, "y": 0.9, "_comment": 39 }, | |||
{"x": 3.0, "y": 0.9, "_comment": 40 }, | |||
{"x": 3.8, "y": 0.9, "_comment": 41 }, | |||
{"x": 5.2, "y": 0.9, "_comment": 42 }, | |||
{"x": 0.0, "y": 0.2, "_comment": 43 }, | |||
{"x": 0.2, "y": 0.2, "_comment": 44 }, | |||
{"x": 1.6, "y": 0.2, "_comment": 45 }, | |||
{"x": 3.0, "y": 0.2, "_comment": 46 }, | |||
{"x": 3.8, "y": 0.2, "_comment": 47 }, | |||
{"x": 5.2, "y": 0.2, "_comment": 48 }, | |||
{"x": 0.0, "y": 0.0, "_comment": 49 }, | |||
{"x": 5.2, "y": 0.0, "_comment": 50 }, | |||
{"x": 5.4, "y": 0.0, "_comment": 51 } | |||
] | |||
} | |||
</pre> | |||
</div> | |||
</div> | |||
You can use the following settings (resolution etc.) in your YAML-file: | |||
<pre> | |||
image: RestaurantChallengeMap.png #include the (relative) path to where you put the PNG-file | |||
resolution: 0.0125 | |||
origin: [0.0, 0.0, 0.0] | |||
occupied_thresh: 0.9 | |||
free_thresh: 0.1 | |||
negate: 0 | |||
</pre> | |||
=Exercise Group Wiki Pages= | =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. | 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 | Group 01 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-01 visit gitlab] - [[Mobile Robot Control 2023 Group 1 | visit wiki]] | ||
Group | Group 02 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-02 visit gitlab] - [[Mobile Robot Control 2023 Group 2 | visit wiki]] - (not yet claimed) | ||
Group | Group 03 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-03 visit gitlab] - [[Mobile Robot Control 2023 Group 3 | visit wiki]] | ||
Group | Group 04 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-04 visit gitlab] - [[Mobile Robot Control 2023 Group 4 | visit wiki]] | ||
Group | Group 05 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-05 visit gitlab] - [[Mobile Robot Control 2023 Group 5 | visit wiki]] | ||
Group | Group 06 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-06 visit gitlab] - [[Mobile Robot Control 2023 Group 6 | visit wiki]] | ||
Group | Group 07 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-07 visit gitlab] - [[Mobile Robot Control 2023 Group 7 | visit wiki]] | ||
Group | Group 08 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-08 visit gitlab] - [[Mobile Robot Control 2023 Group 8 | visit wiki]] | ||
Group | Group 09 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-09 visit gitlab] - [[Mobile Robot Control 2023 Group 9 | visit wiki]] | ||
Group 10 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-10 visit gitlab] - [[Mobile Robot Control 2023 Group 10 | visit wiki]] | Group 10 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-10 visit gitlab] - [[Mobile Robot Control 2023 Group 10 | visit wiki]] | ||
Line 113: | Line 320: | ||
Group 13 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-13 visit gitlab] - [[Mobile Robot Control 2023 Group 13 | visit wiki]] | Group 13 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-13 visit gitlab] - [[Mobile Robot Control 2023 Group 13 | visit wiki]] | ||
Group 14 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-14 visit gitlab] - [[Mobile Robot Control 2023 Group 14 | visit wiki]] | Group 14 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-14 visit gitlab] - [[Mobile Robot Control 2023 Group 14 | visit wiki]] - (not yet claimed) | ||
Group 15 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-15 visit gitlab] - [[Mobile Robot Control 2023 Group 15 | visit wiki]] | Group 15 - [https://gitlab.tue.nl/mobile-robot-control/2023/exercises-group-15 visit gitlab] - [[Mobile Robot Control 2023 Group 15 | visit wiki]] | ||
Line 121: | Line 328: | ||
=Group Wiki Pages= | =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. | |||
{| class="wikitable" | |||
!Group name | |||
!GitLab page | |||
!Wiki page | |||
!Tutor | |||
|- | |||
|Wall-E | |||
|[https://gitlab.tue.nl/mobile-robot-control/2023/wall-e visit GitLab] | |||
|[[Mobile Robot Control 2023 Wall-E |visit wiki]] | |||
|César López Martínez | |||
|- | |||
|HAL-9000 | |||
|[https://gitlab.tue.nl/mobile-robot-control/2023/HAL-9000 visit GitLab] | |||
|[[Mobile Robot Control 2023 HAL-9000 |visit wiki]] | |||
|Jordy Senden & René van de Molengraft | |||
|- | |||
|R2-D2 | |||
|[https://gitlab.tue.nl/mobile-robot-control/2023/R2-D2 visit GitLab] | |||
|[[Mobile Robot Control 2023 R2-D2 |visit wiki]] | |||
|Rudolf Huisman & Aron Aertssen | |||
|- | |||
|Rosey | |||
|[https://gitlab.tue.nl/mobile-robot-control/2023/Rosey visit GitLab] | |||
|[[Mobile Robot Control 2023 Rosey |visit wiki]] | |||
|Ruben Beumer | |||
|- | |||
|The Iron Giant | |||
|[https://gitlab.tue.nl/mobile-robot-control/2023/The-Iron-Giant visit GitLab] | |||
|[[Mobile Robot Control 2023 The Iron Giant |visit wiki]] | |||
|Koen de Vos & Gijs van Rhijn | |||
|- | |||
|Ultron | |||
|[https://gitlab.tue.nl/mobile-robot-control/2023/Ultron visit GitLab] | |||
|[[Mobile Robot Control 2023 Ultron |visit wiki]] | |||
|Peter van Dooren | |||
|} | |||
With your wiki page you will convey your approach and your lessons-learned to ‘the outside world’; the tutors and the next generation of MRC students. There are two ways to do this: 1) readable code with comments and 2) a detailed description of your system on the wiki. | |||
There is no strict layout for the wiki, but we do impose a maximum length of 10.000 words! | |||
We give some guidelines and topics that we will be looking for, but encourage you to be creative: what separates your group from the others? | |||
At the end of the course the tutors will look at: | |||
'''Structure of the wiki page''' | |||
*Is there an introduction/conclusion? | |||
*Is there a logical ordering storywise? | |||
*Interpretability/readability: proper grammar, use of figures etc. | |||
'''Strategy description Restaurant challenge''' | |||
*Is the behaviour described logical and is the description complete | |||
*Reasoning of the used algorithms? Were the algorithms sufficient or too simplistic? | |||
*Detailed description of the algorithms | |||
'''Software Architecture Restaurant challenge''' | |||
*Logical interaction between software components | |||
*Are the components implemented correctly | |||
'''Robustness Restaurant challenge''' | |||
*How was the performance verified | |||
*What kind of tests were performed to check robustness | |||
*Comments on robustness | |||
'''Evaluation Restaurant challenge''' | |||
*Reflection on performance | |||
*Conclusions about what could have gone better | |||
=Peer review= | |||
At the end of the project we would like each group to hand in a peer review. This should reflect how each group member contributed to the final project. We expect each group member to contribute equally in the technical aspects of the project. | |||
Please consider your peers contributions in the form of: | |||
*Technical expertise | |||
*System design | |||
*Implementation in software | |||
*Documentation of the project | |||
*Comminication during the project | |||
Each of these is of roughly equal importance. | |||
We would like to ask the group to come up with a grade for each member ranging from -1.0 to +1.0 where the sum of all grades is 0.0. Your final grade will be calculated as group_grade + peer_review_grade. | |||
=Practical sessions= | =Practical sessions= | ||
Line 149: | Line 428: | ||
*Submissions are last checked the day before at 22:00. | *Submissions are last checked the day before at 22:00. | ||
==Week 2== | ===Week 2=== | ||
'''For week 2 each group can choose 2 time slots'''. Choose wisely. | '''For week 2 each group can choose 2 time slots'''. Choose wisely. | ||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | {| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | ||
|+'''Week 2 Tuesday May 2''' | |+'''Week 2 Tuesday May 2''' | ||
|- | |- | ||
! scope="col" |'''Time''' | ! scope="col" |'''Time''' | ||
! scope="col" |'''Group''' | ! colspan="2" scope="col" |'''Group''' | ||
|- | |- | ||
|9:45 - 10:40||free||free | |9:45 - 10:40||free||free | ||
|- | |- | ||
|10:45 - 11: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 | |||
|} | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 2 Thursday May 4''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="2" scope="col" |'''Group''' | |||
|- | |||
|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 | |||
|} | |||
<div style="clear:both"></div> | |||
<br /> | |||
===Week 3=== | |||
'''For week 3 each group can choose 2 time slots'''. Choose wisely. | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 3 Tuesday May 9''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="2" scope="col" |'''Group''' | |||
|- | |||
|9:45 - 10:40||6||free | |||
|- | |||
|10:45 - 11:40||6||free | |||
|- | |- | ||
|11:45 - 12:40||free||free | |11:45 - 12:40||free||free | ||
|- | |- | ||
|13:30 - 14:25||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 | |||
|} | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 3 Thursday May 11''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="2" scope="col" |'''Group''' | |||
|- | |||
|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 | |||
|} | |||
<div style="clear:both"></div> | |||
<br /> | |||
===Week 4=== | |||
'''For week 4 each group can choose 1 time slot.'''. Luckily we have three robots as of this week. Choose wisely. | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Tuesday May 16''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="3" scope="col" |'''Group''' | |||
|- | |||
|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 | |||
|} | |||
<div style="clear:both"></div> | |||
<br> | |||
===Week 5=== | |||
'''For week 5 each group can choose 2 time slots.''' | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Tuesday May 23''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="3" scope="col" |'''Group''' | |||
|- | |||
|9:45 - 10:40||free||15||free | |||
|- | |||
|10:45 - 11:40||3||9||free | |||
|- | |||
|11:45 - 12:40||3||free||free | |||
|} | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Thursday May 25''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="3" scope="col" |'''Group''' | |||
|- | |||
|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 | |||
|} | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Friday May 26''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="3" scope="col" |'''Group''' | |||
|- | |||
|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 | |||
|} | |||
<div style="clear:both"></div> | |||
<br /> | |||
===Week 6=== | |||
'''For week 6 each group can choose 2 time slots'''. | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 6 Thursday June 1''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="3" scope="col" |'''Group''' | |||
|- | |||
|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 | |||
|} | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 6 Friday June 2''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="3" scope="col" |'''Group''' | |||
|- | |||
|13:30 - 14:25||4||free | |||
|free | |||
|- | |- | ||
|14:30 - 15:25||free | |14:30 - 15:25||4||free | ||
|free | |||
|- | |- | ||
|15:30 - 16:25||free||free | |15:30 - 16:25||free||free | ||
|free | |||
|- | |- | ||
|16:30 - 17:25||free||free | |16:30 - 17:25||free||free | ||
|free | |||
|} | |} | ||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | <div style="clear:both"> | ||
|+'''Week | ===Week 7=== | ||
'''For week 7 each group can choose 2 time slots'''. From this week on slots are reserved by project group rather than by exercise groups. | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 7 Tuesday June 6''' | |||
|- | |- | ||
! scope="col" |'''Time''' | ! scope="col" |'''Time''' | ||
! scope="col" |'''Group''' | ! colspan="2" scope="col" |'''Group''' | ||
|- | |- | ||
|9:45 - 10:40||free||free | |9:45 - 10:40||free||free | ||
Line 195: | Line 673: | ||
|- | |- | ||
|16:30 - 17:25||free||free | |16:30 - 17:25||free||free | ||
|} | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 7 Thursday June 8''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="2" scope="col" |'''Group''' | |||
|- | |||
|9:45 - 10:40||free||free | |||
|- | |||
|10:45 - 11:40||Wall-E||free | |||
|- | |||
|11:45 - 12:40||n.a.||n.a. | |||
|- | |||
|13:30 - 14:25||HAL-9000||R2D2 | |||
|- | |||
|14:30 - 15:25||HAL-9000||R2D2 | |||
|- | |||
|15:30 - 16:25||Ultron||Rosey | |||
|- | |||
|16:30 - 17:25||Ultron||Rosey | |||
|} | |||
<div style="clear:both"> | |||
===Week 8=== | |||
'''For week 8 each group can choose 3 time slots with a maximum of 2 on one day'''. Slots are to be reserved by project groups rather than by exercise groups. | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 8 Tuesday June 13''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="2" scope="col" |'''Group''' | |||
|- | |||
|9:45 - 10:40||free||free | |||
|- | |||
|10:45 - 11:40||free||free | |||
|- | |||
|11:45 - 12:40||free||free | |||
|- | |||
|13:30 - 14:25||Wall-E||R2D2 (Q's only) | |||
|- | |||
|14:30 - 15:25||free||free | |||
|- | |||
|15:30 - 16:25||Iron Giant||free | |||
|- | |||
|16:30 - 17:25||Rosey||free | |||
|} | |||
{| class="wikitable TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 8 Thursday June 15''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="2" scope="col" |'''Group''' | |||
|- | |||
|9:45 - 10:40||free||Rosey | |||
|- | |||
|10:45 - 11:40||Wall-E||Rosey | |||
|- | |||
|11:45 - 12:40||Wall-E||free | |||
|- | |||
|13:30 - 14:25||Iron Giant||HAL-9000 | |||
|- | |||
|14:30 - 15:25||Iron Giant||HAL-9000 | |||
|- | |||
|15:30 - 16:25||Ultron||R2D2 | |||
|- | |||
|16:30 - 17:25||Ultron||free | |||
|} | |||
<div style="clear:both"></div></div> | |||
===Week 9=== | |||
'''For week 9 each group can choose 3 time slots with a maximum of 2 on one day'''. Slots are to be reserved by project groups rather than by exercise groups. | |||
{| class="wikitable TablePager" style="width: 240px; min-width: 250px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 9 Tuesday June 20''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="2" scope="col" |'''Group''' | |||
|- | |||
|9:45 - 10:40||R2D2||free | |||
|- | |||
|10:45 - 11:40||R2D2||Rosey | |||
|- | |||
|11:45 - 12:40||free||Rosey | |||
|- | |||
|13:30 - 14:25||free||HAL-9000 | |||
|- | |||
|14:30 - 15:25||free||free | |||
|- | |||
|15:30 - 16:25||Iron giant||free | |||
|- | |||
|16:30 - 17:25||Iron giant||Wall-E | |||
|} | |||
{| class="wikitable TablePager" style="width: 240px; min-width: 250px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 9 Thursday June 22''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="2" scope="col" |'''Group''' | |||
|- | |||
|9:45 - 10:40||R2D2||free | |||
|- | |||
|10:45 - 11:40||Wall-E||HAL-9000 | |||
|- | |||
|11:45 - 12:40||Wall-E||HAL-9000 | |||
|- | |||
|13:30 - 14:25||Rosey||Iron giant | |||
|- | |||
|14:30 - 15:25||free||free | |||
|- | |||
|15:30 - 16:25||Ultron||free | |||
|- | |||
|16:30 - 17:25||Ultron||free | |||
|} | |} | ||
<div style="clear:both"></div> | <div style="clear:both"></div> | ||
===Week 10=== | |||
'''For week 10 each group can choose 2 time slots'''. Slots are to be reserved by project groups rather than by exercise groups. | |||
{| class="wikitable TablePager" style="width: 240px; min-width: 250px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 10 Tuesday June 27''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="2" scope="col" |'''Group''' | |||
|- | |||
|8:45 - 10:40||Iron giant||free | |||
|- | |||
|10:45 - 12:40||free||R2D2 | |||
|- | |||
|Break | |||
|n.a. | |||
|n.a. | |||
|- | |||
|13:30 - 15:25||Wall-E||free | |||
|- | |||
|15:30 - 17:25||Rosey||free | |||
|} | |||
{| class="wikitable TablePager" style="width: 240px; min-width: 250px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 10 Wednesday June 28''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="2" scope="col" |'''Group''' | |||
|- | |||
|8:45 - 10:40||free||free | |||
|- | |||
|10:45 - 12:40||HAL-9000||free | |||
|- | |||
|Break | |||
|n.a. | |||
|n.a. | |||
|- | |||
|13:30 - 15:25||free||ultron | |||
|- | |||
|15:30 - 17:25||R2D2||free | |||
|} | |||
{| class="wikitable TablePager" style="width: 240px; min-width: 250px; margin-left: 2em; float:left; color: black;" | |||
|+'''Week 10 Thursday June 29''' | |||
|- | |||
! scope="col" |'''Time''' | |||
! colspan="2" scope="col" |'''Group''' | |||
|- | |||
|8:45 - 10:40||Iron giant||free | |||
|- | |||
|10:45 - 12:40||Rosey||free | |||
|- | |||
|Break | |||
|n.a. | |||
|n.a. | |||
|- | |||
|13:30 - 15:25||HAL-9000||free | |||
|- | |||
|15:30 - 17:25||Wall-E||Ultron | |||
|} | |||
<div style="clear:both"></div></div> | |||
<br> | <br> | ||
=Contact Details= | =Contact Details= | ||
{{:Embedded_Motion_Control_2023/Contact_Details}} | {{:Embedded_Motion_Control_2023/Contact_Details}} |
Latest revision as of 10:47, 9 April 2024
'Hero the Toyota HSR'
Introduction
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:
Date | ||
---|---|---|
Wednesday April 24 | Lecture: Introduction to mobile robot control | exercises week 1 |
Friday April 26 | Lecture: Best practices for C++ and Git
Guided selfstudy |
|
Wednesday May 1 | Lecture: Local Navigation | Navigation Assignment 1 |
Friday May 3 | Guided selfstudy | |
Wednesday May 8 | Lecture: Global Navigation | Navigation Assignment 2 |
Friday May 15 | Ascension day | |
Wednesday May 15 | Guided selfstudy | |
Friday May 17 | Lecture: Localization | Exercises Localization 101 |
Wednesday May 22 | Guided selfstudy | |
Friday May 24 | Guided selfstudy | |
Wednesday May 29 | Lecture: System architecture | Lecture slides |
Friday May 31 | Help sessions | |
Friday May 31 | Deadline intermediate peer reviews | |
Wednesday June 5 | Presentation of designs by the groups | |
Friday June 7 | Help sessions | |
Friday June 7 | Deadline exercises | |
Wednesday June 14 | Guest lectures: "Safe navigation in a hospital environment" and "Autonomous parking of trucks" | Context-aware navigation slides |
Friday June 16 | Help sessions | |
Friday June 21 | Final Challenge | |
Friday June 28 | deadline wiki + final peer review | |
Friday July 7 | Deadline: Wiki Pages + Peer review |
Getting Started
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.
Restaurant Competition
Challenge Description
The figure on the right shows a 2D representation of a possible Restaurant setup, as an example. The objective is for Jackal 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)
The delivery of an order is defined as follows
- Drive up to the table.
- Position near the table, facing towards the table. The robot should be close enough for a customer to comfortably take their order from the tray. The exact part of the table that the robot stands next to does not matter.
- Give a clear sound signal, signalling Jackal has arrived at table A (io.speak("I arrived at table four")).
- Repeat until all the tables are visited in the correct order (your robot does not need to return to the starting point)
Environment Specifications
- All walls in the restaurant will be approximately straight. No weird curving walls.
- The tables can be regarded to be solid objects that will show up as rectangles in the LiDAR measurements (So you won't have to detect the table's legs).
- The doors inside the restaurant will be openings in the walls of about 0.5-1m that may be closed or open. Doors can be opened by standing in front of one and having the robot ask for it to be opened.
- 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 (including possible chairs next to the tables!). The position does not have to be parallel to the walls.
- Chairs are Not guaranteed to show up as squares in your LiDAR measurements (you might only see the legs!).
- These extra objects will not be present on the map that you're provided ahead of time.
Challenge Conditions
- Jackal will start in the start area, defined by a rectangle of approximately 1 by 1 meters. The orientation of Jackal 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, Jackal has to drive to the first table to deliver the order.
- If Jackal 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 Jackal 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 and a gridmap (an example is provided at the bottom of this section).
- Any outside sensing systems, such as the Opti-track, that might have been available during testing will not be available during the final challenge.
Challenge Rules
- 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):
./Jackal_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 Jackal hits the wall, we decide whether it counts as bumping.
- Every team has two trials (= max one restart). A trial ends if:
- Jackal bumps into: the wall, a static or a dynamic object.
- Jackal 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:
- Jackal 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 Jackal): 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.
Robot Software
- 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 the morning 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
An example map (PNG) for the restaurant challenge with more tables is provided here: File:ExampleRestaurantMap.png.
The corresponding data that you could use in a JSON-file is provided here (click 'Expand'):
{ "tables":[ [ [29, 35], [35, 34], [34, 28], [28, 29]], [ [45, 47], [47, 46], [46, 44], [44, 45]], [ [33, 32], [32, 21], [21, 22], [22, 33]], [ [48, 49], [49, 59], [59, 58], [58, 48]], [ [26, 24], [24, 25], [25, 27], [27, 26]], [ [42, 36], [36, 37], [37, 43], [43, 42]], [ [50, 51], [51, 62], [62, 61], [61, 50]] ], "walls":[ [0, 1], [1, 8], [8, 2], [2, 0], [2, 3], [3, 55], [55, 54], [54, 2], [7, 8], [8, 64], [64, 63], [63, 7], [54, 56], [56, 66], [66, 65], [65, 54], [57, 60], [60, 68], [68, 67], [67, 57], [61, 64], [64, 70], [70, 69], [69, 61], [13, 14], [14, 19], [19, 18], [18, 13], [15, 16], [16, 23], [23, 20], [20, 15], [11, 12], [12, 31], [31, 30], [30, 11], [6, 10], [10, 17], [17, 9], [9, 6], [38, 40], [40, 41], [41, 39], [39, 38] ], "doors":[ [ [4, 5], [5, 12], [12, 11], [11, 4]], [ [30, 31], [31, 39], [39, 38], [38, 30]] ], "start_area":[ [ [52, 53], [53, 67], [67, 66], [66, 52]] ], "points":[ {"x": 0.0, "y": 5.0, "_comment": 0 }, {"x": 6.0, "y": 5.0, "_comment": 1 }, {"x": 0.0, "y": 4.8, "_comment": 2 }, {"x": 0.2, "y": 4.8, "_comment": 3 }, {"x": 3.7, "y": 4.8, "_comment": 4 }, {"x": 3.9, "y": 4.8, "_comment": 5 }, {"x": 5.1, "y": 4.8, "_comment": 6 }, {"x": 5.8, "y": 4.8, "_comment": 7 }, {"x": 6.0, "y": 4.8, "_comment": 8 }, {"x": 4.8, "y": 4.5, "_comment": 9 }, {"x": 5.8, "y": 4.1, "_comment": 10 }, {"x": 3.7, "y": 4.0, "_comment": 11 }, {"x": 3.9, "y": 4.0, "_comment": 12 }, {"x": 0.2, "y": 3.8, "_comment": 13 }, {"x": 1.5, "y": 3.8, "_comment": 14 }, {"x": 2.3, "y": 3.8, "_comment": 15 }, {"x": 3.7, "y": 3.8, "_comment": 16 }, {"x": 5.5, "y": 3.8, "_comment": 17 }, {"x": 0.2, "y": 3.6, "_comment": 18 }, {"x": 1.5, "y": 3.6, "_comment": 19 }, {"x": 2.3, "y": 3.6, "_comment": 20 }, {"x": 2.4, "y": 3.6, "_comment": 21 }, {"x": 2.9, "y": 3.6, "_comment": 22 }, {"x": 3.7, "y": 3.6, "_comment": 23 }, {"x": 4.8, "y": 3.6, "_comment": 24 }, {"x": 5.8, "y": 3.6, "_comment": 25 }, {"x": 4.8, "y": 3.1, "_comment": 26 }, {"x": 5.8, "y": 3.1, "_comment": 27 }, {"x": 0.2, "y": 3.0, "_comment": 28 }, {"x": 1.2, "y": 3.0, "_comment": 29 }, {"x": 3.7, "y": 3.0, "_comment": 30 }, {"x": 3.9, "y": 3.0, "_comment": 31 }, {"x": 2.4, "y": 2.6, "_comment": 32 }, {"x": 2.9, "y": 2.6, "_comment": 33 }, {"x": 0.2, "y": 2.5, "_comment": 34 }, {"x": 1.2, "y": 2.5, "_comment": 35 }, {"x": 4.8, "y": 2.3, "_comment": 36 }, {"x": 5.8, "y": 2.3, "_comment": 37 }, {"x": 3.7, "y": 2.2, "_comment": 38 }, {"x": 3.9, "y": 2.2, "_comment": 39 }, {"x": 3.7, "y": 1.8, "_comment": 40 }, {"x": 3.9, "y": 1.8, "_comment": 41 }, {"x": 4.8, "y": 1.8, "_comment": 42 }, {"x": 5.8, "y": 1.8, "_comment": 43 }, {"x": 0.2, "y": 1.7, "_comment": 44 }, {"x": 1.2, "y": 1.7, "_comment": 45 }, {"x": 0.2, "y": 1.2, "_comment": 46 }, {"x": 1.2, "y": 1.2, "_comment": 47 }, {"x": 2.4, "y": 1.2, "_comment": 48 }, {"x": 2.9, "y": 1.2, "_comment": 49 }, {"x": 4.6, "y": 1.2, "_comment": 50 }, {"x": 5.1, "y": 1.2, "_comment": 51 }, {"x": 1.2, "y": 1.0, "_comment": 52 }, {"x": 2.2, "y": 1.0, "_comment": 53 }, {"x": 0.0, "y": 0.2, "_comment": 54 }, {"x": 0.2, "y": 0.2, "_comment": 55 }, {"x": 1.2, "y": 0.2, "_comment": 56 }, {"x": 2.2, "y": 0.2, "_comment": 57 }, {"x": 2.4, "y": 0.2, "_comment": 58 }, {"x": 2.9, "y": 0.2, "_comment": 59 }, {"x": 3.6, "y": 0.2, "_comment": 60 }, {"x": 4.6, "y": 0.2, "_comment": 61 }, {"x": 5.1, "y": 0.2, "_comment": 62 }, {"x": 5.8, "y": 0.2, "_comment": 63 }, {"x": 6.0, "y": 0.2, "_comment": 64 }, {"x": 0.0, "y": 0.0, "_comment": 65 }, {"x": 1.2, "y": 0.0, "_comment": 66 }, {"x": 2.2, "y": 0.0, "_comment": 67 }, {"x": 3.6, "y": 0.0, "_comment": 68 }, {"x": 4.6, "y": 0.0, "_comment": 69 }, {"x": 6.0, "y": 0.0, "_comment": 70 } ] }
You can use the following settings (resolution etc.) in your YAML-file:
image: ExampleRestaurantMap.png #include the (relative) path to where you put the PNG-file resolution: 0.0125 origin: [0.0, 0.0, 0.0] occupied_thresh: 0.9 free_thresh: 0.1 negate: 0
A distorted version of this map, with slightly displaced walls and tables and some added obstacles, is provided here: File:ExampleRestaurantMapDistorted.png.
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".
An overview of the map for the final challenge is shown below.
The PNG of this map that can be used in your software/simulator is provided here: File:RestaurantChallengeMap.png.
The corresponding data that you could use in a JSON-file is provided here (click 'Expand'):
{ "tables":[ [ [3, 4], [4, 16], [16, 15], [15, 3]], [ [5, 6], [6, 22], [22, 21], [21, 5]], [ [19, 20], [20, 38], [38, 37], [37, 19]], [ [45, 39], [39, 40], [40, 46], [46, 45]], [ [41, 42], [42, 48], [48, 47], [47, 41]] ], "walls":[ [0, 1], [1, 10], [10, 2], [2, 0], [10, 29], [29, 28], [28, 9], [9, 10], [24, 26], [26, 28], [28, 27], [27, 24], [23, 24], [24, 51], [51, 50], [50, 23], [43, 48], [48, 50], [50, 49], [49, 43], [2, 3], [3, 44], [44, 43], [43, 2], [7, 8], [8, 12], [12, 11], [11, 7], [30, 31], [31, 35], [35, 34], [34, 30], [17, 18], [18, 34], [34, 33], [33, 17] ], "doors":[ [ [31, 32], [32, 36], [36, 35], [35, 31]] ], "start_area":[ [ [13, 14], [14, 26], [26, 25], [25, 13]] ], "points":[ {"x": 0.0, "y": 4.5, "_comment": 0 }, {"x": 7.0, "y": 4.5, "_comment": 1 }, {"x": 0.0, "y": 4.3, "_comment": 2 }, {"x": 0.2, "y": 4.3, "_comment": 3 }, {"x": 1.6, "y": 4.3, "_comment": 4 }, {"x": 3.5, "y": 4.3, "_comment": 5 }, {"x": 4.2, "y": 4.3, "_comment": 6 }, {"x": 4.9, "y": 4.3, "_comment": 7 }, {"x": 5.4, "y": 4.3, "_comment": 8 }, {"x": 6.8, "y": 4.3, "_comment": 9 }, {"x": 7.0, "y": 4.3, "_comment": 10 }, {"x": 4.9, "y": 3.8, "_comment": 11 }, {"x": 5.4, "y": 3.8, "_comment": 12 }, {"x": 5.8, "y": 3.7, "_comment": 13 }, {"x": 6.8, "y": 3.7, "_comment": 14 }, {"x": 0.2, "y": 3.6, "_comment": 15 }, {"x": 1.6, "y": 3.6, "_comment": 16 }, {"x": 2.4, "y": 3.1, "_comment": 17 }, {"x": 2.6, "y": 3.1, "_comment": 18 }, {"x": 0.5, "y": 2.9, "_comment": 19 }, {"x": 1.2, "y": 2.9, "_comment": 20 }, {"x": 3.5, "y": 2.9, "_comment": 21 }, {"x": 4.2, "y": 2.9, "_comment": 22 }, {"x": 5.2, "y": 2.7, "_comment": 23 }, {"x": 5.4, "y": 2.7, "_comment": 24 }, {"x": 5.8, "y": 2.7, "_comment": 25 }, {"x": 6.8, "y": 2.7, "_comment": 26 }, {"x": 5.4, "y": 2.5, "_comment": 27 }, {"x": 6.8, "y": 2.5, "_comment": 28 }, {"x": 7.0, "y": 2.5, "_comment": 29 }, {"x": 2.6, "y": 1.9, "_comment": 30 }, {"x": 4.2, "y": 1.9, "_comment": 31 }, {"x": 5.2, "y": 1.9, "_comment": 32 }, {"x": 2.4, "y": 1.7, "_comment": 33 }, {"x": 2.6, "y": 1.7, "_comment": 34 }, {"x": 4.2, "y": 1.7, "_comment": 35 }, {"x": 5.2, "y": 1.7, "_comment": 36 }, {"x": 0.5, "y": 1.5, "_comment": 37 }, {"x": 1.2, "y": 1.5, "_comment": 38 }, {"x": 1.6, "y": 0.9, "_comment": 39 }, {"x": 3.0, "y": 0.9, "_comment": 40 }, {"x": 3.8, "y": 0.9, "_comment": 41 }, {"x": 5.2, "y": 0.9, "_comment": 42 }, {"x": 0.0, "y": 0.2, "_comment": 43 }, {"x": 0.2, "y": 0.2, "_comment": 44 }, {"x": 1.6, "y": 0.2, "_comment": 45 }, {"x": 3.0, "y": 0.2, "_comment": 46 }, {"x": 3.8, "y": 0.2, "_comment": 47 }, {"x": 5.2, "y": 0.2, "_comment": 48 }, {"x": 0.0, "y": 0.0, "_comment": 49 }, {"x": 5.2, "y": 0.0, "_comment": 50 }, {"x": 5.4, "y": 0.0, "_comment": 51 } ] }
You can use the following settings (resolution etc.) in your YAML-file:
image: RestaurantChallengeMap.png #include the (relative) path to where you put the PNG-file resolution: 0.0125 origin: [0.0, 0.0, 0.0] occupied_thresh: 0.9 free_thresh: 0.1 negate: 0
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 | César López Martínez |
HAL-9000 | visit GitLab | visit wiki | Jordy Senden & René 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 |
With your wiki page you will convey your approach and your lessons-learned to ‘the outside world’; the tutors and the next generation of MRC students. There are two ways to do this: 1) readable code with comments and 2) a detailed description of your system on the wiki.
There is no strict layout for the wiki, but we do impose a maximum length of 10.000 words!
We give some guidelines and topics that we will be looking for, but encourage you to be creative: what separates your group from the others?
At the end of the course the tutors will look at:
Structure of the wiki page
- Is there an introduction/conclusion?
- Is there a logical ordering storywise?
- Interpretability/readability: proper grammar, use of figures etc.
Strategy description Restaurant challenge
- Is the behaviour described logical and is the description complete
- Reasoning of the used algorithms? Were the algorithms sufficient or too simplistic?
- Detailed description of the algorithms
Software Architecture Restaurant challenge
- Logical interaction between software components
- Are the components implemented correctly
Robustness Restaurant challenge
- How was the performance verified
- What kind of tests were performed to check robustness
- Comments on robustness
Evaluation Restaurant challenge
- Reflection on performance
- Conclusions about what could have gone better
Peer review
At the end of the project we would like each group to hand in a peer review. This should reflect how each group member contributed to the final project. We expect each group member to contribute equally in the technical aspects of the project.
Please consider your peers contributions in the form of:
- Technical expertise
- System design
- Implementation in software
- Documentation of the project
- Comminication during the project
Each of these is of roughly equal importance.
We would like to ask the group to come up with a grade for each member ranging from -1.0 to +1.0 where the sum of all grades is 0.0. Your final grade will be calculated as group_grade + peer_review_grade.
Practical sessions
- 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.
Week 2
For week 2 each group can choose 2 time slots. Choose wisely.
Time | Group | |
---|---|---|
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 |
Time | Group | |
---|---|---|
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 |
Week 3
For week 3 each group can choose 2 time slots. Choose wisely.
Time | Group | |
---|---|---|
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 |
Time | Group | |
---|---|---|
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 |
Week 4
For week 4 each group can choose 1 time slot.. Luckily we have three robots as of this week. Choose wisely.
Time | Group | ||
---|---|---|---|
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 |
Week 5
For week 5 each group can choose 2 time slots.
Time | Group | ||
---|---|---|---|
9:45 - 10:40 | free | 15 | free |
10:45 - 11:40 | 3 | 9 | free |
11:45 - 12:40 | 3 | free | free |
Time | Group | ||
---|---|---|---|
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 |
Time | Group | ||
---|---|---|---|
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 |
Week 6
For week 6 each group can choose 2 time slots.
Time | Group | ||
---|---|---|---|
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 |
Time | Group | ||
---|---|---|---|
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 |
Week 7
For week 7 each group can choose 2 time slots. From this week on slots are reserved by project group rather than by exercise groups.
Time | Group | |
---|---|---|
9:45 - 10:40 | free | free |
10:45 - 11:40 | free | free |
11:45 - 12:40 | free | free |
13:30 - 14:25 | free | free |
14:30 - 15:25 | free | free |
15:30 - 16:25 | free | free |
16:30 - 17:25 | free | free |
Time | Group | |
---|---|---|
9:45 - 10:40 | free | free |
10:45 - 11:40 | Wall-E | free |
11:45 - 12:40 | n.a. | n.a. |
13:30 - 14:25 | HAL-9000 | R2D2 |
14:30 - 15:25 | HAL-9000 | R2D2 |
15:30 - 16:25 | Ultron | Rosey |
16:30 - 17:25 | Ultron | Rosey |
Week 8
For week 8 each group can choose 3 time slots with a maximum of 2 on one day. Slots are to be reserved by project groups rather than by exercise groups.
Time | Group | |
---|---|---|
9:45 - 10:40 | free | free |
10:45 - 11:40 | free | free |
11:45 - 12:40 | free | free |
13:30 - 14:25 | Wall-E | R2D2 (Q's only) |
14:30 - 15:25 | free | free |
15:30 - 16:25 | Iron Giant | free |
16:30 - 17:25 | Rosey | free |
Time | Group | |
---|---|---|
9:45 - 10:40 | free | Rosey |
10:45 - 11:40 | Wall-E | Rosey |
11:45 - 12:40 | Wall-E | free |
13:30 - 14:25 | Iron Giant | HAL-9000 |
14:30 - 15:25 | Iron Giant | HAL-9000 |
15:30 - 16:25 | Ultron | R2D2 |
16:30 - 17:25 | Ultron | free |
Week 9
For week 9 each group can choose 3 time slots with a maximum of 2 on one day. Slots are to be reserved by project groups rather than by exercise groups.
Time | Group | |
---|---|---|
9:45 - 10:40 | R2D2 | free |
10:45 - 11:40 | R2D2 | Rosey |
11:45 - 12:40 | free | Rosey |
13:30 - 14:25 | free | HAL-9000 |
14:30 - 15:25 | free | free |
15:30 - 16:25 | Iron giant | free |
16:30 - 17:25 | Iron giant | Wall-E |
Time | Group | |
---|---|---|
9:45 - 10:40 | R2D2 | free |
10:45 - 11:40 | Wall-E | HAL-9000 |
11:45 - 12:40 | Wall-E | HAL-9000 |
13:30 - 14:25 | Rosey | Iron giant |
14:30 - 15:25 | free | free |
15:30 - 16:25 | Ultron | free |
16:30 - 17:25 | Ultron | free |
Week 10
For week 10 each group can choose 2 time slots. Slots are to be reserved by project groups rather than by exercise groups.
Time | Group | |
---|---|---|
8:45 - 10:40 | Iron giant | free |
10:45 - 12:40 | free | R2D2 |
Break | n.a. | n.a. |
13:30 - 15:25 | Wall-E | free |
15:30 - 17:25 | Rosey | free |
Time | Group | |
---|---|---|
8:45 - 10:40 | free | free |
10:45 - 12:40 | HAL-9000 | free |
Break | n.a. | n.a. |
13:30 - 15:25 | free | ultron |
15:30 - 17:25 | R2D2 | free |
Time | Group | |
---|---|---|
8:45 - 10:40 | Iron giant | free |
10:45 - 12:40 | Rosey | free |
Break | n.a. | n.a. |
13:30 - 15:25 | HAL-9000 | free |
15:30 - 17:25 | Wall-E | Ultron |
Contact Details
This year's staff consists of the following TU/e employees:
Peter van Dooren
Koen de Vos
Ruben Beumer
Busra Sen
Elise Verhees
Gijs van Rhijn
Aron Aertssen
Jordy Senden
César López Martínez
René van de Molengraft
Rudolf Huisman
Elena Torta