Retake Embedded Motion Control 2018: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
 
(34 intermediate revisions by 7 users not shown)
Line 12: Line 12:
= 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 is given further below - for a time span of 2 minutes. The Person Of Interest (POI) will walk a pre-defined route, and on important points we will put down so-called 'target strips' which the POI will cross. 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.
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 furthermore move in such a manner that (in most cases) two legs are visible.  
* 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 should be around 5.  
* 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.5 meter; this will guarantee that PICO crosses the target strips.  
* 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:  
** 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.]]
[[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. Clearing any subsequent levels will naturally allow you to pass this course with a better grade.
To pass this course, we ask you to at least clear level 1, i.e., the easiest task.


'''Level 1'''
'''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 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.  
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.]]
[[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.]]


Line 36: Line 38:


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.
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 =  
= Deliverables and deadline =  
Line 43: Line 47:
* The wikipage corresponding to your assignment
* The wikipage corresponding to your assignment
* The code that you have written
* 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
|}


The deadline for all the deliverables is the 17th of august (the friday of the retake exam week in august).
<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).
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. 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.

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

Wednesday 18-7-2018
Date Time Person
18-7-2018 8:45 - 10:40
18-7-2018 10:45 - 12:40
Thursday 19-7-2018
Date Time Person
19-7-2018 8:45 - 10:40
19-7-2018 10:45 - 12:40
Friday 20-7-2018
Date Time Person
20-7-2018 8:45 - 10:40
20-7-2018 10:45 - 12:40 Rokesh


Week 30

Thursday 26-7-2018
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
Friday 27-7-2018
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

Wednesday 1-8-2018
Date Time Person
1-8-2018 8:45 - 10:40
1-8-2018 10:45 - 12:40 Daniel
Thursday 2-8-2018
Date Time Person
2-8-2018 8:45 - 10:40
2-8-2018 10:45 - 12:40 Rokesh
Friday 3-8-2018
Date Time Person
3-8-2018 8:45 - 10:40
3-8-2018 10:45 - 12:40 Group1 - Tim


Week 32

Wednesday 8-8-2018
Date Time Person
8-8-2018 8:45 - 10:40
8-8-2018 10:45 - 12:40 Daniel
Thursday 9-8-2018
Date Time Person
9-8-2018 8:45 - 10:40
9-8-2018 10:45 - 12:40
Friday 10-8-2018
Date Time Person
10-8-2018 8:45 - 10:40
10-8-2018 10:45 - 12:40 Group1 - Tim


Week 33

Monday 13-8-2018
Date Time Person
13-8-2018 8:45 - 10:40
13-8-2018 10:45 - 12:40
Tuesday 14-8-2018
Date Time Person
14-8-2018 9:45 - 11:40 Daniel
14-8-2018 11:45 - 13:40
Wednesday 15-8-2018
Date Time Person
15-8-2018 9:45 - 11:40
15-8-2018 11:45 - 13:40
Thursday 16-8-2018
Date Time Person
16-8-2018 9:45 - 11:40 Daniel
16-8-2018 11:45 - 13:40
Friday 17-8-2018
Date Time Person
17-8-2018 8:45 - 10:40
17-8-2018 10:45 - 12:40 Group1 - Tim