Embedded Motion Control 2019: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
No edit summary
 
(114 intermediate revisions by 34 users not shown)
Line 8: Line 8:
= Introduction =
= 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.
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 =
= Course Schedule and Lecture Slides =
<span style="color:#ff0000"> '''Important Note:''' </span> the deadline for the Wiki-pages has been postponed to June 20th, 23.59h, please consult the announcement on Canvas for more information.
Lectures will be given on Wednesdays from 15.30h-17.30h in Traverse van Trierzaal, except the Lecture on Wednesday may 22nd, which will be given in GEM-Z 0.05. <span style="color:red">The special lectures at May 10th and June 7th will take place at GEM-Z 0.05!</span> The preliminary course schedule is as follows:
 
Lectures will be given on Wednesdays from 15.45h-17.45h from in Luna 1.050. The lecture of <span style="color:#ff0000"> '''May 4''' </span> will be given from 10.45h-12.45h in Auditorium 11. The preliminary course schedule is as follows:


{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 3em;"
{| border="1" cellpadding="5" cellspacing="0" align="center" style="margin-left: 5em;"
|-
|-
| April 25
| April 24
| colspan="2" | No lecture (see Canvas!)
| width="325" | Introduction by ''René van de Molengraft''
| width="325" | [[Media:EMC_tooling_infrastructure_2019.pdf | Tooling and Infrastructure by ''Bob Hendrikx'' ]]
|-
|-
| May 2
| May 1
| width="325" | Introduction by ''René van de Molengraft''  
| width="325" | [[Media:20190501-EMC-DoDont.pdf | Do’s and Don’ts in the design of a robotic software architecture" ]]by ''Herman Bruyninckx''
| width="325" | [[Media:EMC2018_ToolingInfrastructure_Handout2.pdf | Tooling and Infrastructure by ''Wouter Kuijpers'' ]]
| width="325" |  
|-
|-
| <span style="color:#ff0000"> '''May 4''' </span>
| May 8
| width="325" | [[Media:201804-EMC-MotionStackArchitecture.pdf | Best Practices in System Design for Robot Control]] by ''Herman Bruyninckx''
| colspan="2" | First presentation of the design by ''the groups''. 6-minute presentation, about the group's initial design. Afterwards 4 minutes for questions.
| width="325" | Architecture by ''Herman Bruyninckx''
|-
|-
| May 9
| <span style="color:red">May 10</span>
| colspan="2" | No lecture
| width="325" | [https://en.wikipedia.org/wiki/Scrum_(software_development) SCRUM] & Gitlab by ''Puck Mulders'' and ''Bob Hendrikx'' [[Media:Gitlab_emc_2019.pdf |Gitlab]]  [[Media:Agile_emc_2019.pdf |Agile]]
| width="325" |  
|-
|-
| May 16
| May 15
| colspan="2" | First presentation of the design by ''the groups''. 6-minute presentation, about the group's initial design. Afterwards 4 minutes for questions.
|-
| May 23
| width="325" | '''Escape Room Competition'''
| width="325" | '''Escape Room Competition'''
| width="325" | Worldmodeling by ''Herman Bruyninckx''
| width="325" | Reflection Session
|-
|-
| May 30
| May 22
| colspan="2" |  
| colspan="2" |  
* Worldmodeling for Experts by ''Wouter Houtman''  
* Worldmodeling for Experts by ''Wouter Houtman''  
* [[Media:EMC2018_WM_IoT.pdf | Worldmodeling for Real Experts by ''Marzieh Dolatabadi'' ]]
* Worldmodeling for Real Experts by ''Marzieh Dolatabadi''
* Worldmodeling in practice by ''Bob Hendrikx''
* Worldmodeling in practice by ''Hao Liang Chen''
|-
|-
| June 6
| June 5
| colspan="2" | Presentation of final design by the ''groups''.
| colspan="2" | Presentation of final design by the ''groups''.
|-
|-
| June 13
| <span style="color:red">June 7</span>
| colspan="2" | '''Final Competition''' [[Media:Map_hospital.png | (Hospital map for simulator)]]
| colspan="2" | Company Presentations
|-
|-
| <span style="color:#ff0000"> '''June 20''' </span>
| June 12
| colspan="2" | '''Deadline Wiki Pages'''
| colspan="2" | '''Final Competition'''
|-
| <span style="color:red">June 21</span>
| colspan="2" | <span style="color:red">'''Deadline: Wiki Pages''' </span>
|-
|-
|}
|}
= Getting Started =
To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. <!--Please note:
* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.
* Of course, things may still go wrong. If so, do not hesitate to contact us.
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.
-->
= FAQ =
[[Embedded_Motion_Control_2018/FAQ | Here]] you can find a collection of 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.


= Design Document =  
= Design Document =  
Line 61: Line 74:
* Specifications
* Specifications
* Interfaces.
* Interfaces.
You should upload this design document to your group's Wiki-page as this is a vital document in the design process. Make sure the document has been uploaded on May 11th, 17.00h. In case of questions about the document, consult your tutor.
You should upload this design document to your group's Wiki-page as this is a vital document in the design process. Make sure the document has been uploaded on May 6th, 17.00h. In case of questions about the document, consult your tutor.


= Escape Room Competition =
= Escape Room Competition =
{{:Embedded_Motion_Control/Escape_Room_Competition_2018}}
{{:Embedded_Motion_Control/Escape_Room_Competition_2018}}


= Hospital Competition =
= Hospital Competition =
{{:Embedded_Motion_Control/Hospital_Room_Competition_2018}}
{{:Embedded_Motion_Control/Hospital_Room_Competition_2019}}


-->
= Getting Started =


To get started, please do the tutorials on the [[Embedded Motion Control/Tutorials | Tutorial Page]]. <!--Please note:
= Map For The Final Challenge =
{{:Embedded_Motion_Control_map_2019}}


* '''Do all tutorials, and all steps. Missing one step may cause a different behavior or incorrect working system later'''. If something is not working as expected, make sure you correctly did all previous steps.
* Of course, things may still go wrong. If so, do not hesitate to contact us.
* See [[Embedded_Motion_Control/Using_Pico | Using Pico]] for a quick overview of how to use Pico.
-->
= FAQ =
[[Embedded_Motion_Control_2018/FAQ | Here]] you can find a collection of 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.


=Group Wiki Pages=
=Group Wiki Pages=


Group 1 - [[Embedded Motion Control 2019 Group 1 | visit wiki ]] - '''Tutor''': Wouter Kuipers
Group 1 - [[Embedded Motion Control 2019 Group 1 | visit wiki ]] - '''Tutor''': Wouter Kuijpers


Group 2 - [[Embedded Motion Control 2019 Group 2 | visit wiki ]] - '''Tutor''': Wouter Houtman (Jordy senden in first week)
Group 2 - [[Embedded Motion Control 2019 Group 2 | visit wiki ]] - '''Tutor''': Wouter Houtman (Jordy senden in first week)
Line 95: Line 100:
Group 5 - [[Embedded Motion Control 2019 Group 5 | visit wiki ]] - '''Tutor''': Hao Liang Chen
Group 5 - [[Embedded Motion Control 2019 Group 5 | visit wiki ]] - '''Tutor''': Hao Liang Chen


Group 6 - [[Embedded Motion Control 2019 Group 6 | visit wiki ]] - '''Tutor''': Marzieh Dolatabadi
<del>Group 6 - [[Embedded Motion Control 2019 Group 6 | visit wiki ]] - '''Tutor''': Marzieh Dolatabadi</del>


Group 7 - [[Embedded Motion Control 2019 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven
Group 7 - [[Embedded Motion Control 2019 Group 7 | visit wiki ]] - '''Tutor''': Yanick Douven
Line 101: Line 106:
Group 8 - [[Embedded Motion Control 2019 Group 8| visit wiki ]] - '''Tutor''': Rene & Herman
Group 8 - [[Embedded Motion Control 2019 Group 8| visit wiki ]] - '''Tutor''': Rene & Herman


Group 9 - [[Embedded Motion Control 2019 Group 9| visit wiki ]] - '''Tutor''': Bob Hendrikx
Group 9 - [[Embedded Motion Control 2019 Group 9| visit wiki ]] - '''Tutor''': Marzieh Dolatabadi


=Pico test schedule=
-  Testing takes place on the RoboCup field in Gemini-North.


=Pico test schedule=
- 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!
- 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!


Line 114: Line 120:
==Week 19==
==Week 19==
'''For week 19 each group can choose 2 time slots'''. Choose wisely.
'''For week 19 each group can choose 2 time slots'''. Choose wisely.
'''Remark:''' Group 7 was allowed an extra time slot on Friday as they were not able to use their time slot on Thursday due to technical issues with pico.


{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
Line 122: Line 130:
! scope="col" | '''Group'''
! scope="col" | '''Group'''
|-
|-
| 7-5-2019 || 10:45 - 11:40 ||  
| 7-5-2019 || 10:45 - 11:40 || 3
|-
|-
| 7-5-2019 || 11:45 - 12:40 ||  
| 7-5-2019 || 11:45 - 12:40 || 3
|-
|-
| 7-5-2019 || 13:30 - 14:25 ||  
| 7-5-2019 || 13:30 - 14:25 ||
|-
|-
| 7-5-2019 || 14:30 - 15:25 ||
| 7-5-2019 || 14:30 - 15:25 || 8
|-
|-
| 7-5-2019 || 15:30 - 16:25 ||  
| 7-5-2019 || 15:30 - 16:25 || 7
|-
|-
| 7-5-2019 || 16:30 - 17:25 ||  
| 7-5-2019 || 16:30 - 17:25 || 2
|}
|}


Line 142: Line 150:
! scope="col" | '''Group'''
! scope="col" | '''Group'''
|-
|-
| 8-5-2019 || 10:45 - 11:40 ||  
| 8-5-2019 || 10:45 - 11:40 || 4
|-
|-
| 8-5-2019 || 11:45 - 12:40 ||  
| 8-5-2019 || 11:45 - 12:40 || 4
|-
|-
| 8-5-2019 || 13:30 - 14:25 ||  
| 8-5-2019 || 13:30 - 14:25 || 8
|-
|-
| 8-5-2019 || 14:30 - 15:25 ||
| 8-5-2019 || 14:30 - 15:25 || 9
|-
|-
| 8-5-2019 || 15:30 - 16:25 ||  
| 8-5-2019 || 15:30 - 16:25 ||  
Line 162: Line 170:
! scope="col" | '''Group'''
! scope="col" | '''Group'''
|-
|-
| 9-5-2019 || 8:45 - 9:40 ||  
| 9-5-2019 || 08:45 - 09:40 || 5
|-
|-
| 9-5-2019 || 9:45 - 10:40 ||  
| 9-5-2019 || 09:45 - 10:40 || 5
|-
|-
| 9-5-2019 || 10:45 - 11:40 ||  
| 9-5-2019 || 10:45 - 11:40 || 7
|-
|-
| 9-5-2019 || 11:45 - 12:40 ||  
| 9-5-2019 || 11:45 - 12:40 || 9
|-
|-
| 9-5-2019 || 13:30 - 14:25 ||  
| 9-5-2019 || 13:30 - 14:25 || 2
|-
|-
| 9-5-2019 || 14:30 - 15:25 ||
| 9-5-2019 || 14:30 - 15:25 ||
|-
|-
| 9-5-2019 || 15:30 - 16:25 ||  
| 9-5-2019 || 15:30 - 16:25 || 1
|-
|-
| 9-5-2019 || 16:30 - 17:25 ||  
| 9-5-2019 || 16:30 - 17:25 || 1
|}
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 19 Friday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 9-5-2019 || 12:00 - 12:55 || 7
|}
|}


Line 184: Line 202:
==Week 20==
==Week 20==
'''For week 20 each group can choose 1 time slot on Monday/Tuesday and 1 time slot on Thursday/Friday'''. Choose wisely.
'''For week 20 each group can choose 1 time slot on Monday/Tuesday and 1 time slot on Thursday/Friday'''. Choose wisely.


{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
Line 192: Line 211:
! scope="col" | '''Group'''
! scope="col" | '''Group'''
|-
|-
| 13-5-2019 || 10:45 - 11:40 ||  
| 13-5-2019 || 10:45 - 11:40 || 4
|-
|-
| 13-5-2019 || 11:45 - 12:40 ||  
| 13-5-2019 || 11:45 - 12:40 || 5
|}
|}


Line 204: Line 223:
! scope="col" | '''Group'''
! scope="col" | '''Group'''
|-
|-
| 14-5-2019 || 8:45 - 9:40 ||  
| 14-5-2019 || 10:45 - 11:40 || 3
|-
| 14-5-2019 || 11:45 - 12:40 || 7
|-
| 14-5-2019 || 13:30 - 14:25 || 8
|-
| 14-5-2019 || 14:30 - 15:25 || 2
|-
| 14-5-2019 || 15:30 - 16:25 || 9
|-
| 14-5-2019 || 16:30 - 17:25 || 1
|}
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 20 Thursday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 16-5-2019 || 08:45 - 09:40 || 9
|-
| 16-5-2019 || 09:45 - 10:40 ||
|-
| 16-5-2019 || 10:45 - 11:40 || 7
|-
| 16-5-2019 || 11:45 - 12:40 ||
|-
| 16-5-2019 || 13:30 - 14:25 || 5
|-
| 16-5-2019 || 14:30 - 15:25 || 3
|-
| 16-5-2019 || 15:30 - 16:25 || 1
|-
| 16-5-2019 || 16:30 - 17:25 || 4
|}
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 20 Friday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
|-
| 14-5-2019 || 9:45 - 10:40 ||  
| 17-5-2019 || 10:45 - 11:40 || 2
|-
|-
| 14-5-2019 || 10:45 - 11:40 ||  
| 17-5-2019 || 11:45 - 12:40 || 8
|}
 
<div style="clear:both"></div>
<br>
 
==Week 21==
'''For week 21 each group can choose 2 time slots'''. Choose wisely.
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 21 Tuesday'''
|-
|-
| 14-5-2019 || 11:45 - 12:40 ||  
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
|-
| 14-5-2019 || 13:30 - 14:25 ||  
| 21-5-2019 || 13:30 - 14:25 ||
|-
|-
| 14-5-2019 || 14:30 - 15:25 ||
| 21-5-2019 || 14:30 - 15:25 ||
|-
|-
| 14-5-2019 || 15:30 - 16:25 ||  
| 21-5-2019 || 15:30 - 16:25 ||
|-
|-
| 14-5-2019 || 16:30 - 17:25 ||  
| 21-5-2019 || 16:30 - 17:25 ||
|}
|}


{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 20 Thursday'''
|+ '''Week 21 Wednesday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 22-5-2019 || 09:45 - 10:40 ||
|-
| 22-5-2019 || 10:45 - 11:40 || 5
|-
| 22-5-2019 || 11:45 - 12:40 ||
|-
| 22-5-2019 || 13:30 - 14:25 || 7
|-
| 22-5-2019 || 14:30 - 15:25 || 8
|}
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 21 Thursday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 23-5-2019 || 08:45 - 09:40 || 9
|-
| 23-5-2019 || 09:45 - 10:40 || 3
|-
| 23-5-2019 || 10:45 - 11:40 || 3
|-
| 23-5-2019 || 11:45 - 12:40 || 7
|-
| 23-5-2019 || 13:30 - 14:25 || 5
|-
| 23-5-2019 || 14:30 - 15:25 ||
|}
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 21 Friday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 24-5-2019 || 08:45 - 09:40 ||
|-
| 24-5-2019 || 09:45 - 10:40 || 1
|-
| 24-5-2019 || 10:45 - 11:40 || 2
|-
| 24-5-2019 || 11:45 - 12:40 ||
|}
 
<div style="clear:both"></div>
<br>
 
==Week 22 + 23==
Since week 22 is shorter due to ascension day, it will not be possible for every group to test twice that week. Therefore extra slots are provided in week 23. '''Each team may choose 4 timeslots over these two weeks. Teams are allowed maximum 2 timeslots in week 22. To prevent planning issues, teams are advised to test at least for 1 timeslot in week 22.'''. Choose wisely.
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 22 Monday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 27-5-2019 || 13:30 - 14:25 ||
|-
| 27-5-2019 || 14:30 - 15:25 || 5
|-
| 27-5-2019 || 15:30 - 16:25 ||
|-
| 27-5-2019 || 16:30 - 17:25 ||
|}
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 22 Tuesday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 28-5-2019 || 13:30 - 14:25 || 7
|-
| 28-5-2019 || 14:30 - 15:25 || 9
|-
| 28-5-2019 || 15:30 - 16:25 ||
|-
| 28-5-2019 || 16:30 - 17:25 || 7
|}
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 22 Wednesday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 29-5-2019 || 08:45 - 09:40 ||
|-
| 29-5-2019 || 09:45 - 10:40 || 4
|-
| 29-5-2019 || 10:45 - 11:40 ||
|-
| 29-5-2019 || 11:45 - 12:40 || 3
|-
| 29-5-2019 || 13:30 - 14:25 || 9
|-
| 29-5-2019 || 14:30 - 15:25 ||
|}
 
<div style="clear:both"></div>
<br>
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 23 Monday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 3-6-2019 || 13:30 - 14:25 || 4
|-
| 3-6-2019 || 14:30 - 15:25 || 1
|-
| 3-6-2019 || 15:30 - 16:25 || 1
|-
| 3-6-2019 || 16:30 - 17:25 || 5
|}
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 23 Tuesday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 4-6-2019 || 13:30 - 14:25 || 7
|-
| 4-6-2019 || 14:30 - 15:25 ||
|-
| 4-6-2019 || 15:30 - 16:25 || 9
|-
| 4-6-2019 || 16:30 - 17:25 || 2
|}
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 23 Wednesday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 5-6-2019 || 08:45 - 09:40 || 5
|-
| 5-6-2019 || 09:45 - 10:40 ||
|-
| 5-6-2019 || 10:45 - 11:40 || 4
|-
| 5-6-2019 || 11:45 - 12:40 || 4
|-
| 5-6-2019 || 13:30 - 14:25 || 8
|-
| 5-6-2019 || 14:30 - 15:25 || 3
|}
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 23 Thursday'''
|-
! scope="col" | '''Date'''
! scope="col" | '''Time'''
! scope="col" | '''Group'''
|-
| 6-6-2019 || 08:45 - 09:40 ||
|-
| 6-6-2019 || 09:45 - 10:40 ||
|-
| 6-6-2019 || 10:45 - 11:40 || 7
|-
| 6-6-2019 || 11:45 - 12:40 || 2
|-
| 6-6-2019 || 13:30 - 14:25 || 3
|-
| 6-6-2019 || 14:30 - 15:25 || 3
|-
| 6-6-2019 || 15:30 - 16:25 || 8
|-
| 6-6-2019 || 16:30 - 17:25 || 9
|}
 
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 23 Friday'''
|-
|-
! scope="col" | '''Date'''
! scope="col" | '''Date'''
Line 228: Line 492:
! scope="col" | '''Group'''
! scope="col" | '''Group'''
|-
|-
| 16-5-2019 || 8:45 - 9:40 ||  
| 7-6-2019 || 08:45 - 09:40 || 2
|-
|-
| 16-5-2019 || 9:45 - 10:40 ||  
| 7-6-2019 || 09:45 - 10:40 || 5
|-
|-
| 16-5-2019 || 10:45 - 11:40 ||  
| 7-6-2019 || 10:45 - 11:40 || 1
|-
|-
| 16-5-2019 || 11:45 - 12:40 ||  
| 7-6-2019 || 11:45 - 12:40 || 8
|}
|}
<div style="clear:both"></div>
<br>
==Week 24==
This is it! The week of the final challenge. '''Each team may choose 1 timeslot on Tuesday'''. Choose wisely and prepare this test well, as it is your last chance to test your code before the moment of truth.


{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;"
|+ '''Week 20 Friday'''
|+ '''Week 24 Tuesday'''
|-
|-
! scope="col" | '''Date'''
! scope="col" | '''Date'''
Line 244: Line 515:
! scope="col" | '''Group'''
! scope="col" | '''Group'''
|-
|-
| 17-5-2019 || 10:45 - 11:40 ||  
| 11-6-2019 || 08:45 - 09:40 || 4
|-
| 11-6-2019 || 09:45 - 10:40 || 3
|-
| 11-6-2019 || 10:45 - 11:40 || 8
|-
|-
| 17-5-2019 || 11:45 - 12:40 ||  
| 11-6-2019 || 11:45 - 12:40 || 5
|-
|-
| 17-5-2019 || 13:30 - 14:25 ||  
| 11-6-2019 || 13:30 - 14:25 || 2
|-
|-
| 17-5-2019 || 14:30 - 15:25 ||
| 11-6-2019 || 14:30 - 15:25 || 7
|-
|-
| 17-5-2019 || 15:30 - 16:25 ||  
| 11-6-2019 || 15:30 - 16:25 || 9
|-
|-
| 17-5-2019 || 16:30 - 17:25 ||  
| 11-6-2019 || 16:30 - 17:25 || 1
|}
|}



Latest revision as of 13:02, 11 June 2019

'PICO in the Hospital'

Gostai-Jazz-500x500.jpg

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 be given on Wednesdays from 15.30h-17.30h in Traverse van Trierzaal, except the Lecture on Wednesday may 22nd, which will be given in GEM-Z 0.05. The special lectures at May 10th and June 7th will take place at GEM-Z 0.05! The preliminary course schedule is as follows:

April 24 Introduction by René van de Molengraft Tooling and Infrastructure by Bob Hendrikx
May 1 Do’s and Don’ts in the design of a robotic software architecture" by Herman Bruyninckx
May 8 First presentation of the design by the groups. 6-minute presentation, about the group's initial design. Afterwards 4 minutes for questions.
May 10 SCRUM & Gitlab by Puck Mulders and Bob Hendrikx Gitlab Agile
May 15 Escape Room Competition Reflection Session
May 22
  • Worldmodeling for Experts by Wouter Houtman
  • Worldmodeling for Real Experts by Marzieh Dolatabadi
  • Worldmodeling in practice by Hao Liang Chen
June 5 Presentation of final design by the groups.
June 7 Company Presentations
June 12 Final Competition
June 21 Deadline: Wiki Pages

Getting Started

To get started, please do the tutorials on the Tutorial Page.

FAQ

Here you can find a collection of 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.


Design Document

Hand-in a 3-page A4-sized design document as pdf (<1Mb) that pictures/describes the initial design idea with:

  • Requirements,
  • Functions,
  • Components,
  • Specifications
  • Interfaces.

You should upload this design document to your group's Wiki-page as this is a vital document in the design process. Make sure the document has been uploaded on May 6th, 17.00h. In case of questions about the document, consult your tutor.

Escape Room Competition

Scheme of a possible Escape Room, with measurements, but not up to scale!

Challenge Specifications

  • You have finished the assignment if PICO did not bump into walls and the entire rear wheel is across the finish line.
  • Do not touch the walls! Slightly touching is allowed, however, bumping (i.e., driving head-on into a wall) is not allowed! If PICO hits the wall, we decide whether it counts as bumping.
  • Every team has two trials (= max one restart). A trial ends if:
    • PICO bumps into the wall
    • PICO has not moved or has not made sensible movements (as judged by the tutors) for 30 seconds
    • The total time limit of 5 minutes per group is reached
    • The group requests a restart (on the first trial)
  • restart means:
    • PICO 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 PICO): 0.5 m/s translational, 1.2 rad/s rotational.
  • There will be no second attempt if first attempt was successful

On the right you can find one example of a Escape Room Challenge.

Environment Specifications

  • The shape of the room is rectangular, the dimensions will not be given before the start of the challenge.
  • PICO starts at a random position in the room (but equal for all groups), PICO does not necessarily face the exit, nor a straight wall.
  • The orientation of the corridor will be perpendiculair to the wall.
  • The wall (on the far end) of the corridor will be open
  • The walls might not be perfectly straight, the corners might not be perfectly perpendicular, the walls of the corridor might not be perfectly parallel. The width of the corridor will be reasonable (somewhere between 0.5 and 1.5 meters).
  • At the exit, the finish line is located more than 3 m into the corridor. The walls that can be used to align PICO will be a little bit longer.

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'
    • To start your software, only one executable has to be called
    • 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



Hospital Competition

Overview of a possible Hospital setup, not up to scale!

Challenge Description

The figure on the right shows a 2D representation of a possible Hospital setup, as an example. The map shows several rooms and a hallway. In each room there are cabinets (represented by a rectangular block). The objective is for PICO to "deliver" medicines from one cabinet to another (the order of which defined by the judges just before the challenge starts). The hospital will contain a number of unknown static and dynamic objects (boxes, human actors walking)

Since PICO does not have the capability to grab and carry medicines, the "delivery" task cannot be performed physically. Instead, the "delivery" is defined by the following steps:

  • Drive up to the first cabinet.
  • Position in front of the cabinet, facing towards the cabinet.
  • Give a clear sound signal, signalling PICO has arrived at cabinet A (io.speak("I arrived at cabinet four")).
  • Drive to the next cabinet.
  • Position in front of the cabinet, facing towards the cabinet.
  • Repeat until all the cabinets are visited in the correct order


Setup Specifications

  • The hallway will be approximately 1.5 meters wide and does not have to be straight.
  • All walls in the hospital will be approximately straight. The walls will be made of the 20cm thick blocks that are frequently used during test sessions.
  • All corners in the hospital will be approximately right.
  • The doors inside the hospital will be (time-invariant) openings in the walls of about 0.5-1m that may be closed or open.
  • It is possible that a room has more than one door.
  • A cabinet is represented by a rectangular block.
  • The front of the cabinet is defined as the first linesegment in the line array that represents a cabinet.
  • A region will be marked in front of the cabinets. This is the region in which PICO must stand (definition: middle-point of PICO in rectangle) when "taking" or "delivering" the medicine. This region will be a square with sides equal to the length of the front of the cabinet.
  • A random amount of dynamic objects will be present in the form of human actors. Additionally, an random amount of rectangular static objects will be placed throughout the hospital (see green blocks in figure on the right). The position does not have to be parallel to the walls.
  • UPDATE2020! Since this year the challenge will be held completely in a simulated environment, the role of dynamic objects will not be performed by human actors. Instead, there will be objects in the hospital that are moving around in the hospital. These objects will try to not bump into PICO on purpose. The velocity of these object will be in the range of normal human walking velocity.


Challenge Conditions

  • PICO will start in the start area, defined by a rectangle of approximately 1 by 1 meters. The orientation of PICO is arbitrary (i.e., not known to your software).
  • The list of cabinets to be visited will be provided right before the challenge starts as a list of integers (0 identifies the first cabinet in the array).
  • After starting the software, PICO has to drive to the first cabinet to "pick up" the medicine.
  • If PICO found the correct cabinet and signalled his "arrival", he has to drive to the next cabinets to "drop off" the medicines.
  • The task is completed after PICO visited all cabinets 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 hospital start area, we will make sure that some visible features (i.e. lines, corners) remain visible (but we will not make it easy).
  • An actual map of the hospital 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). Note: we will only provide the vector map for the final challenge: no simulator map, no .png-image (as presented here on the right).


Challenge Rules

  • The list of cabinets to visit has to be supplied to the executable when starting the challenge, in the following format (for cabinets in the order: 2 -> 4 -> 3,):
./pico_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 PICO hits the wall, we decide whether it counts as bumping.
  • Every team has two trials (= max one restart). A trial ends if:
    • PICO bumps into: the wall, a static or a dynamic object.
    • PICO 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:
    • PICO 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 PICO): 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.


Visualization

  • Your code should save a snapshot of the laserdata in your group folder when in front of each cabinet (e.g., using OpenCV).


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 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.
  • If you use a separate catkin workspace
    • Make sure this workspace is compiled during the final testing hour
    • Building separate catkin workspaces during the final challenge is not allowed
    • The safest way to make sure your code works is by avoiding catking workspaces and including everything in your CMakeLists.txt


Example map format and code

  • We provide a simple example of a room with two cabinets 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 JSON file for the map for the final challenge can be found here: FINALMAP.zip
  • You are free to annotate / change this map to suit your software design
  • The final maze dimensions will match the map as well as possible (but will not be perfect, because not all blocks are perfectly straight etc.)
  • The start area is shown in the image below
  • Clutter will be added on the day of the challenge



Group Wiki Pages

Group 1 - visit wiki - Tutor: Wouter Kuijpers

Group 2 - visit wiki - Tutor: Wouter Houtman (Jordy senden in first week)

Group 3 - visit wiki - Tutor: Jordy Senden

Group 4 - visit wiki - Tutor: Bob Hendrikx

Group 5 - visit wiki - Tutor: Hao Liang Chen

Group 6 - visit wiki - Tutor: Marzieh Dolatabadi

Group 7 - visit wiki - Tutor: Yanick Douven

Group 8 - visit wiki - Tutor: Rene & Herman

Group 9 - visit wiki - Tutor: Marzieh Dolatabadi

Pico test schedule

- Testing takes place on the RoboCup field in Gemini-North.

- 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 Pico test schedule, you can select a timeslot by typing 'Group <groupnumber>' behind the desired timeslot. - Submissions are last checked the day before at 22:00.

Week 19

For week 19 each group can choose 2 time slots. Choose wisely.

Remark: Group 7 was allowed an extra time slot on Friday as they were not able to use their time slot on Thursday due to technical issues with pico.

Week 19 Tuesday
Date Time Group
7-5-2019 10:45 - 11:40 3
7-5-2019 11:45 - 12:40 3
7-5-2019 13:30 - 14:25
7-5-2019 14:30 - 15:25 8
7-5-2019 15:30 - 16:25 7
7-5-2019 16:30 - 17:25 2
Week 19 Wednesday
Date Time Group
8-5-2019 10:45 - 11:40 4
8-5-2019 11:45 - 12:40 4
8-5-2019 13:30 - 14:25 8
8-5-2019 14:30 - 15:25 9
8-5-2019 15:30 - 16:25
8-5-2019 16:30 - 17:25
Week 19 Thursday
Date Time Group
9-5-2019 08:45 - 09:40 5
9-5-2019 09:45 - 10:40 5
9-5-2019 10:45 - 11:40 7
9-5-2019 11:45 - 12:40 9
9-5-2019 13:30 - 14:25 2
9-5-2019 14:30 - 15:25
9-5-2019 15:30 - 16:25 1
9-5-2019 16:30 - 17:25 1
Week 19 Friday
Date Time Group
9-5-2019 12:00 - 12:55 7


Week 20

For week 20 each group can choose 1 time slot on Monday/Tuesday and 1 time slot on Thursday/Friday. Choose wisely.


Week 20 Monday
Date Time Group
13-5-2019 10:45 - 11:40 4
13-5-2019 11:45 - 12:40 5
Week 20 Tuesday
Date Time Group
14-5-2019 10:45 - 11:40 3
14-5-2019 11:45 - 12:40 7
14-5-2019 13:30 - 14:25 8
14-5-2019 14:30 - 15:25 2
14-5-2019 15:30 - 16:25 9
14-5-2019 16:30 - 17:25 1
Week 20 Thursday
Date Time Group
16-5-2019 08:45 - 09:40 9
16-5-2019 09:45 - 10:40
16-5-2019 10:45 - 11:40 7
16-5-2019 11:45 - 12:40
16-5-2019 13:30 - 14:25 5
16-5-2019 14:30 - 15:25 3
16-5-2019 15:30 - 16:25 1
16-5-2019 16:30 - 17:25 4
Week 20 Friday
Date Time Group
17-5-2019 10:45 - 11:40 2
17-5-2019 11:45 - 12:40 8


Week 21

For week 21 each group can choose 2 time slots. Choose wisely.

Week 21 Tuesday
Date Time Group
21-5-2019 13:30 - 14:25
21-5-2019 14:30 - 15:25
21-5-2019 15:30 - 16:25
21-5-2019 16:30 - 17:25
Week 21 Wednesday
Date Time Group
22-5-2019 09:45 - 10:40
22-5-2019 10:45 - 11:40 5
22-5-2019 11:45 - 12:40
22-5-2019 13:30 - 14:25 7
22-5-2019 14:30 - 15:25 8
Week 21 Thursday
Date Time Group
23-5-2019 08:45 - 09:40 9
23-5-2019 09:45 - 10:40 3
23-5-2019 10:45 - 11:40 3
23-5-2019 11:45 - 12:40 7
23-5-2019 13:30 - 14:25 5
23-5-2019 14:30 - 15:25
Week 21 Friday
Date Time Group
24-5-2019 08:45 - 09:40
24-5-2019 09:45 - 10:40 1
24-5-2019 10:45 - 11:40 2
24-5-2019 11:45 - 12:40


Week 22 + 23

Since week 22 is shorter due to ascension day, it will not be possible for every group to test twice that week. Therefore extra slots are provided in week 23. Each team may choose 4 timeslots over these two weeks. Teams are allowed maximum 2 timeslots in week 22. To prevent planning issues, teams are advised to test at least for 1 timeslot in week 22.. Choose wisely.

Week 22 Monday
Date Time Group
27-5-2019 13:30 - 14:25
27-5-2019 14:30 - 15:25 5
27-5-2019 15:30 - 16:25
27-5-2019 16:30 - 17:25
Week 22 Tuesday
Date Time Group
28-5-2019 13:30 - 14:25 7
28-5-2019 14:30 - 15:25 9
28-5-2019 15:30 - 16:25
28-5-2019 16:30 - 17:25 7
Week 22 Wednesday
Date Time Group
29-5-2019 08:45 - 09:40
29-5-2019 09:45 - 10:40 4
29-5-2019 10:45 - 11:40
29-5-2019 11:45 - 12:40 3
29-5-2019 13:30 - 14:25 9
29-5-2019 14:30 - 15:25


Week 23 Monday
Date Time Group
3-6-2019 13:30 - 14:25 4
3-6-2019 14:30 - 15:25 1
3-6-2019 15:30 - 16:25 1
3-6-2019 16:30 - 17:25 5
Week 23 Tuesday
Date Time Group
4-6-2019 13:30 - 14:25 7
4-6-2019 14:30 - 15:25
4-6-2019 15:30 - 16:25 9
4-6-2019 16:30 - 17:25 2
Week 23 Wednesday
Date Time Group
5-6-2019 08:45 - 09:40 5
5-6-2019 09:45 - 10:40
5-6-2019 10:45 - 11:40 4
5-6-2019 11:45 - 12:40 4
5-6-2019 13:30 - 14:25 8
5-6-2019 14:30 - 15:25 3
Week 23 Thursday
Date Time Group
6-6-2019 08:45 - 09:40
6-6-2019 09:45 - 10:40
6-6-2019 10:45 - 11:40 7
6-6-2019 11:45 - 12:40 2
6-6-2019 13:30 - 14:25 3
6-6-2019 14:30 - 15:25 3
6-6-2019 15:30 - 16:25 8
6-6-2019 16:30 - 17:25 9
Week 23 Friday
Date Time Group
7-6-2019 08:45 - 09:40 2
7-6-2019 09:45 - 10:40 5
7-6-2019 10:45 - 11:40 1
7-6-2019 11:45 - 12:40 8


Week 24

This is it! The week of the final challenge. Each team may choose 1 timeslot on Tuesday. Choose wisely and prepare this test well, as it is your last chance to test your code before the moment of truth.


Week 24 Tuesday
Date Time Group
11-6-2019 08:45 - 09:40 4
11-6-2019 09:45 - 10:40 3
11-6-2019 10:45 - 11:40 8
11-6-2019 11:45 - 12:40 5
11-6-2019 13:30 - 14:25 2
11-6-2019 14:30 - 15:25 7
11-6-2019 15:30 - 16:25 9
11-6-2019 16:30 - 17:25 1


Contact Details

Tutors

Bob Hendrikx - r dot w dot m dot hendrikx at tue dot nl

Hao Liang Chen - h dot l dot chen at tue dot nl

Jordy Senden - j dot p dot f dot senden at tue dot nl

Peter Dooren - p dot v dot dooren at tue dot nl

Manuel Muñoz Sánchez - m dot munoz dot sanchez at tue dot nl

César López - C dot A dot Lopez dot Martinez at tue dot nl