Retake Embedded Motion Control 2018: Difference between revisions
(41 intermediate revisions by 7 users not shown) | |||
Line 6: | Line 6: | ||
= Context = | = Context = | ||
</div> | </div> | ||
An increase of robotic deployment is nowadays observed; one could think about care robots for elderly care, AGV's for industrial application, or even a simple vacuum robot in a typical household. Repositioning these robots often occurs manually as, e.g., one picks them up or controls them (via a joystick) to a given position. This, however, may not always be desired as you may for example want the robot to carry something with you (maybe a table). | An increase of robotic deployment is nowadays observed; one could think about care robots for elderly care, AGV's for industrial application, or even a simple vacuum robot in a typical household. Repositioning these robots often occurs manually as, e.g., one picks them up or controls them (via a joystick) to a given position. This, however, may not always be desired as you may for example want the robot to carry something with you (maybe a table). In this context the taak for Embedded Motion Control 2018 retake is to design a person following algorithm to solve this problem. | ||
<div align="center"> | <div align="center"> | ||
= Task description = | = Task description = | ||
</div> | </div> | ||
The <span style="color:#ff0000"> '''main objective''' </span> of this assignment is to follow a person in a cluttered environment - more details about the environment | The <span style="color:#ff0000"> '''main objective''' </span> of this assignment is to follow a person in a cluttered environment - more details about the environment is given further below - for a time span of 2 minutes. The Person Of Interest (POI) will walk a pre-defined route (unknown to the robot), and on important points we will put down so-called 'target strips' which the POI will cross close to the center. To test whether PICO is indeed able to follow the POI correctly, PICO should also cross these target strips. A brief overview of the setup is shown on Figure 1. | ||
Some specifications of interest: | Some specifications of interest: | ||
* The POI will start initially close to PICO at standstill. After PICO starts following him, the POI will move with a velocity greater than 0 meter per second, but no more than 0.5 meter per second. | * The POI will start initially close to PICO (detectable by LRF) at standstill. After PICO starts following him, the POI will move with a velocity greater than 0 meter per second, but no more than 0.5 meter per second. The POI will furthermore move in such a manner that (in most cases) two legs are visible. | ||
* The target strips can be regarded as markers on the floor which PICO | * The target strips can be regarded as markers on the floor which PICO can't recognize. These target strips have a width of 1 meter, and the POI will pass through the middle of these target strips. The number of target strips is around 5. | ||
* We recommend that PICO follows the POI at a distance of approximately 0. | * We recommend that PICO follows the POI at a distance of approximately 0.4 meter; this will guarantee that PICO crosses the target strips. | ||
* A failure is stated when the following observations are made: 1. PICO is unable to cross 80% of the target strips 2. PICO bumps into the POI. If a failure is determined, then you can retry once (thus a total of 2 takes). | * A failure is stated when the following observations are made: | ||
[[File:Path.png|center|thumb|400px|Figure 1: A | ** 1. PICO is unable to cross 80% of the target strips | ||
** 2. PICO bumps into the POI. If a failure is determined, then you can retry once (thus a total of 2 takes). | |||
[[File:Path.png|center|thumb|400px|Figure 1: A sketch of the setup. The pre-defined path is indicated by the dashed lines, the target strips by the black lines perpendicular to the pre-defined path, the POI that follows the pre-defined path in blue, and PICO in red.]] | |||
Regarding the cluttered environment, three 'levels' are designed ranging from easiest to hardest. | Regarding the cluttered environment, three 'levels' are designed ranging from easiest to hardest. | ||
To pass this course, we ask you to at least clear level 1, i.e., the easiest task. | To pass this course, we ask you to at least clear level 1, i.e., the easiest task. | ||
'''Level 1''' | |||
In this first level we have other actors present in the area of interest. These actors will similarly as the POI start at standstill. After PICO has found his POI, i.e., the person closest to him, and has started his following-algorithm, all other actors will also walk around. The only restriction that the actors have is that they can never occlude the POI, i.e., they can not walk in between PICO and the POI. Figure 2 depicts a situation which can not occur. | |||
[[File:Cannot.png|center|thumb|400px|Figure 2: A situation which can not occur for Level 1. In red we see PICO, blue the POI, and in darkgreen the actor.]] | |||
'''Level 2''' | |||
In this second level we have only static obstacles present. The difficult part w.r.t. the previous level is that a path will be defined such that occlusion will be present, i.e., the legs of the POI will dissapear behind a static object and hence complicate the following-algorithm. When such an occlusion occurs, PICO is allowed to shout 'stop' to find the POI again. Note that this is limited to a time interval of 15 seconds, after which the POI will move again. When PICO has found the POI, it should likewise say 'go' to allow the POI to walk further. | |||
'''Level 3''' | |||
In this level, both static objects and actors are present. All the difficulties of the previous levels are included with furthermore no restrictions on the actors to prevent situations as depicted on Figure 2. | |||
Note that the clearing a level with an increased difficulty level will yield a higher grade for the demo, how this is combined with the other grades to form the final grade can be read in the next section. | |||
= Deliverables and deadline = | |||
You will be graded on the following deliverables: | |||
* The demo of PICO fulfilling one of the required levels (make an appointment with us for the demo!) | |||
* The wikipage corresponding to your assignment | |||
* The code that you have written | |||
* Your approach to the assignment, what did you learn in the assignment of EMC? | |||
The deadline for all the deliverables is the 17th of august (the friday of the retake exam week in august). Note that we can start grading sooner as well, contact your tutor for this. | |||
=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! | |||
- 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. | |||
'''NOTE: You can select only ONE two-hour timeslot per week.''' | |||
==Week 29== | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Wednesday 18-7-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 18-7-2018 || 8:45 - 10:40 || | |||
|- | |||
| 18-7-2018 || 10:45 - 12:40 || | |||
|} | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Thursday 19-7-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 19-7-2018 || 8:45 - 10:40 || | |||
|- | |||
| 19-7-2018 || 10:45 - 12:40 || | |||
|} | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Friday 20-7-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 20-7-2018 || 8:45 - 10:40 || | |||
|- | |||
| 20-7-2018 || 10:45 - 12:40 || Rokesh | |||
|} | |||
<div style="clear:both"></div> | |||
<br> | |||
==Week 30== | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Thursday 26-7-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 26-7-2018 || 8:45 - 10:40 || | |||
|- | |||
| 26-7-2018 || 10:45 - 12:40 || Rokesh | |||
|- | |||
| 26-7-2018 || 12:45 - 14:40 || | |||
|} | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Friday 27-7-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 27-7-2018 || 8:45 - 10:40 || | |||
|- | |||
| 27-7-2018 || 10:45 - 12:40 || Group1 - Tim | |||
|- | |||
| 27-7-2018 || 12:45 - 14:40 || Daniel | |||
|} | |||
<div style="clear:both"></div> | |||
<br> | |||
==Week 31== | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Wednesday 1-8-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 1-8-2018 || 8:45 - 10:40 || | |||
|- | |||
| 1-8-2018 || 10:45 - 12:40 || Daniel | |||
|} | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Thursday 2-8-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 2-8-2018 || 8:45 - 10:40 || | |||
|- | |||
| 2-8-2018 || 10:45 - 12:40 || Rokesh | |||
|} | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Friday 3-8-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 3-8-2018 || 8:45 - 10:40 || | |||
|- | |||
| 3-8-2018 || 10:45 - 12:40 || Group1 - Tim | |||
|} | |||
<div style="clear:both"></div> | |||
<br> | |||
==Week 32== | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Wednesday 8-8-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 8-8-2018 || 8:45 - 10:40 || | |||
|- | |||
| 8-8-2018 || 10:45 - 12:40 || Daniel | |||
|} | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Thursday 9-8-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 9-8-2018 || 8:45 - 10:40 || | |||
|- | |||
| 9-8-2018 || 10:45 - 12:40 || | |||
|} | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Friday 10-8-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 10-8-2018 || 8:45 - 10:40 || | |||
|- | |||
| 10-8-2018 || 10:45 - 12:40 || Group1 - Tim | |||
|} | |||
<div style="clear:both"></div> | |||
<br> | |||
==Week 33== | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Monday 13-8-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 13-8-2018 || 8:45 - 10:40 || | |||
|- | |||
| 13-8-2018 || 10:45 - 12:40 || | |||
|} | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Tuesday 14-8-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 14-8-2018 || 9:45 - 11:40 || Daniel | |||
|- | |||
| 14-8-2018 || 11:45 - 13:40 || | |||
|} | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Wednesday 15-8-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 15-8-2018 || 9:45 - 11:40 || | |||
|- | |||
| 15-8-2018 || 11:45 - 13:40 || | |||
|} | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Thursday 16-8-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 16-8-2018 || 9:45 - 11:40 || Daniel | |||
|- | |||
| 16-8-2018 || 11:45 - 13:40 || | |||
|} | |||
{| class="TablePager" style="width: 230px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Friday 17-8-2018 ''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Person''' | |||
|- | |||
| 17-8-2018 || 8:45 - 10:40 || | |||
|- | |||
| 17-8-2018 || 10:45 - 12:40 || Group1 - Tim | |||
|} | |||
<div style="clear:both"></div> | |||
<br> |
Latest revision as of 10:43, 13 August 2018
Follow Me!
Context
An increase of robotic deployment is nowadays observed; one could think about care robots for elderly care, AGV's for industrial application, or even a simple vacuum robot in a typical household. Repositioning these robots often occurs manually as, e.g., one picks them up or controls them (via a joystick) to a given position. This, however, may not always be desired as you may for example want the robot to carry something with you (maybe a table). In this context the taak for Embedded Motion Control 2018 retake is to design a person following algorithm to solve this problem.
Task description
The main objective of this assignment is to follow a person in a cluttered environment - more details about the environment is given further below - for a time span of 2 minutes. The Person Of Interest (POI) will walk a pre-defined route (unknown to the robot), and on important points we will put down so-called 'target strips' which the POI will cross close to the center. To test whether PICO is indeed able to follow the POI correctly, PICO should also cross these target strips. A brief overview of the setup is shown on Figure 1.
Some specifications of interest:
- The POI will start initially close to PICO (detectable by LRF) at standstill. After PICO starts following him, the POI will move with a velocity greater than 0 meter per second, but no more than 0.5 meter per second. The POI will furthermore move in such a manner that (in most cases) two legs are visible.
- The target strips can be regarded as markers on the floor which PICO can't recognize. These target strips have a width of 1 meter, and the POI will pass through the middle of these target strips. The number of target strips is around 5.
- We recommend that PICO follows the POI at a distance of approximately 0.4 meter; this will guarantee that PICO crosses the target strips.
- A failure is stated when the following observations are made:
- 1. PICO is unable to cross 80% of the target strips
- 2. PICO bumps into the POI. If a failure is determined, then you can retry once (thus a total of 2 takes).
Regarding the cluttered environment, three 'levels' are designed ranging from easiest to hardest. To pass this course, we ask you to at least clear level 1, i.e., the easiest task.
Level 1
In this first level we have other actors present in the area of interest. These actors will similarly as the POI start at standstill. After PICO has found his POI, i.e., the person closest to him, and has started his following-algorithm, all other actors will also walk around. The only restriction that the actors have is that they can never occlude the POI, i.e., they can not walk in between PICO and the POI. Figure 2 depicts a situation which can not occur.
Level 2
In this second level we have only static obstacles present. The difficult part w.r.t. the previous level is that a path will be defined such that occlusion will be present, i.e., the legs of the POI will dissapear behind a static object and hence complicate the following-algorithm. When such an occlusion occurs, PICO is allowed to shout 'stop' to find the POI again. Note that this is limited to a time interval of 15 seconds, after which the POI will move again. When PICO has found the POI, it should likewise say 'go' to allow the POI to walk further.
Level 3
In this level, both static objects and actors are present. All the difficulties of the previous levels are included with furthermore no restrictions on the actors to prevent situations as depicted on Figure 2.
Note that the clearing a level with an increased difficulty level will yield a higher grade for the demo, how this is combined with the other grades to form the final grade can be read in the next section.
Deliverables and deadline
You will be graded on the following deliverables:
- The demo of PICO fulfilling one of the required levels (make an appointment with us for the demo!)
- The wikipage corresponding to your assignment
- The code that you have written
- Your approach to the assignment, what did you learn in the assignment of EMC?
The deadline for all the deliverables is the 17th of august (the friday of the retake exam week in august). Note that we can start grading sooner as well, contact your tutor for this.
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!
- 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.
NOTE: You can select only ONE two-hour timeslot per week.
Week 29
Date | Time | Person |
---|---|---|
18-7-2018 | 8:45 - 10:40 | |
18-7-2018 | 10:45 - 12:40 |
Date | Time | Person |
---|---|---|
19-7-2018 | 8:45 - 10:40 | |
19-7-2018 | 10:45 - 12:40 |
Date | Time | Person |
---|---|---|
20-7-2018 | 8:45 - 10:40 | |
20-7-2018 | 10:45 - 12:40 | Rokesh |
Week 30
Date | Time | Person |
---|---|---|
26-7-2018 | 8:45 - 10:40 | |
26-7-2018 | 10:45 - 12:40 | Rokesh |
26-7-2018 | 12:45 - 14:40 |
Date | Time | Person |
---|---|---|
27-7-2018 | 8:45 - 10:40 | |
27-7-2018 | 10:45 - 12:40 | Group1 - Tim |
27-7-2018 | 12:45 - 14:40 | Daniel |
Week 31
Date | Time | Person |
---|---|---|
1-8-2018 | 8:45 - 10:40 | |
1-8-2018 | 10:45 - 12:40 | Daniel |
Date | Time | Person |
---|---|---|
2-8-2018 | 8:45 - 10:40 | |
2-8-2018 | 10:45 - 12:40 | Rokesh |
Date | Time | Person |
---|---|---|
3-8-2018 | 8:45 - 10:40 | |
3-8-2018 | 10:45 - 12:40 | Group1 - Tim |
Week 32
Date | Time | Person |
---|---|---|
8-8-2018 | 8:45 - 10:40 | |
8-8-2018 | 10:45 - 12:40 | Daniel |
Date | Time | Person |
---|---|---|
9-8-2018 | 8:45 - 10:40 | |
9-8-2018 | 10:45 - 12:40 |
Date | Time | Person |
---|---|---|
10-8-2018 | 8:45 - 10:40 | |
10-8-2018 | 10:45 - 12:40 | Group1 - Tim |
Week 33
Date | Time | Person |
---|---|---|
13-8-2018 | 8:45 - 10:40 | |
13-8-2018 | 10:45 - 12:40 |
Date | Time | Person |
---|---|---|
14-8-2018 | 9:45 - 11:40 | Daniel |
14-8-2018 | 11:45 - 13:40 |
Date | Time | Person |
---|---|---|
15-8-2018 | 9:45 - 11:40 | |
15-8-2018 | 11:45 - 13:40 |
Date | Time | Person |
---|---|---|
16-8-2018 | 9:45 - 11:40 | Daniel |
16-8-2018 | 11:45 - 13:40 |
Date | Time | Person |
---|---|---|
17-8-2018 | 8:45 - 10:40 | |
17-8-2018 | 10:45 - 12:40 | Group1 - Tim |