Embedded Motion Control 2015: Difference between revisions
(63 intermediate revisions by 24 users not shown) | |||
Line 31: | Line 31: | ||
|- | |- | ||
| May 20 | | May 20 | ||
| Composition Pattern part II by ''Herman Bruyninckx'' | | [[Media:20150520-EMC-TUE-architecture-nup.pdf | Composition Pattern part II by ''Herman Bruyninckx'']] | ||
|- | |- | ||
| May 27 | | May 27 | ||
Line 37: | Line 37: | ||
|- | |- | ||
| June 3 | | June 3 | ||
| colspan="2" | Communication patterns | | colspan="2" | [[Media:20150603-EMC-TUE-communication-nup.pdf | Communication patterns by ''Herman Bruyninckx'']] | ||
|- | |- | ||
| June 10 | | June 10 | ||
Line 47: | Line 47: | ||
|} | |} | ||
= Assignment = | |||
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close. | |||
= Corridor Competition = | |||
{{:Embedded_Motion_Control/Corridor_competition_2015}} | |||
= | = Maze Competition = | ||
{{:Embedded_Motion_Control/Maze_competition_2015}} | |||
= Getting Started = | = Getting Started = | ||
Line 85: | Line 89: | ||
Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven | Group 10 - [[Embedded Motion Control 2015 Group 10 | visit wiki ]] - '''Tutor''': Yanick Douven | ||
Group 11 - [[Embedded Motion Control 2015 Group 11 | visit wiki ]] - '''Tutor''': Luis Ferreira | |||
= Pico test schedule = | = Pico test schedule = | ||
A timetable for the first two weeks of the second stage tests is now available. Each group is allowed one time slot per week. A timetable for the three weeks after that will become available soon. | |||
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. | |||
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Week 21''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Group''' | |||
|- | |||
| 21-05-2015 || 12:45 - 13:45 ||Groep 5 | |||
|- | |||
| 21-05-2015 || 13:45 - 14:45 || | |||
|- | |||
| 21-05-2015 || 14:45 - 15:45 || | |||
|- | |||
| 21-05-2015 || 15:45 - 16:45 ||Group 11 | |||
|- | |||
| 22-05-2015 || 8:45 - 9:45 ||Group 8 | |||
|- | |||
| 22-05-2015 || 9:45 - 10:45 ||Group 6 | |||
|- | |||
| 22-05-2015 || 10:45 - 11:45 ||Group 7 | |||
|- | |||
| 22-05-2015 || 12:45 - 13:45 ||Group 4 | |||
|- | |||
| 22-05-2015 || 13:45 - 14:45 ||Group 10 | |||
|- | |||
| 22-05-2015 || 14:45 - 15:45 ||Group 3 | |||
|- | |||
| 22-05-2015 || 15:45 - 16:45 ||Group 2 | |||
|- | |||
|} | |||
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Week 22''' | |||
|- | |||
! scope="col" | '''Date''' | |||
! scope="col" | '''Time''' | |||
! scope="col" | '''Group''' | |||
|- | |||
| 28-05-2015 || 8:45 - 9:45 || Group 1 | |||
|- | |||
| 28-05-2015 || 9:45 - 10:45 || Group 7 | |||
|- | |||
| 28-05-2015 || 10:45 - 11:45 || Group 4 | |||
|- | |||
| 28-05-2015 || 12:45 - 13:45 || Groep 5 | |||
|- | |||
| 28-05-2015 || 13:45 - 14:45 || Group 9 | |||
|- | |||
| 28-05-2015 || 14:45 - 15:45 || Group 10 | |||
|- | |||
| 28-05-2015 || 15:45 - 16:45 || Group 8 | |||
|- | |||
| 29-05-2015 || 8:45 - 9:45 || Group 11 | |||
|- | |||
| 29-05-2015 || 9:45 - 10:45 || Group 6 | |||
|- | |||
| 29-05-2015 || 10:45 - 11:45 || Group 2 | |||
|- | |||
| 29-05-2015 || 11:45 - 12:45 || Group 3 | |||
|- | |||
|} | |||
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: | {| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;" | ||
|+ '''Week | |+ '''Week 23''' | ||
|- | |- | ||
! scope="col" | '''Date''' | ! scope="col" | '''Date''' | ||
Line 99: | Line 168: | ||
! scope="col" | '''Group''' | ! scope="col" | '''Group''' | ||
|- | |- | ||
| 06 | | 04-06-2015 || 8:45 - 9:45 || | ||
|- | |- | ||
| 06 | | 04-06-2015 || 9:45 - 10:45 || Group 11 | ||
|- | |- | ||
| 06 | | 04-06-2015 || 10:45 - 11:45 || Group 4 | ||
|- | |- | ||
| | | 04-06-2015 || 12:45 - 13:45 || Group 5 | ||
|- | |- | ||
| | | 04-06-2015 || 13:45 - 14:45 || Group 7 | ||
|- | |- | ||
| | | 04-06-2015 || 14:45 - 15:45 || Group 6 | ||
|- | |- | ||
| | | 04-06-2015 || 15:45 - 16:45 || | ||
|- | |- | ||
| | | 05-06-2015 || 8:45 - 9:45 || Group 8 | ||
|- | |- | ||
| | | 05-06-2015 || 9:45 - 10:45 || Group 3 | ||
|- | |- | ||
| | | 05-06-2015 || 10:45 - 11:45 || Group 2 | ||
|- | |- | ||
| | | 05-06-2015 || 11:45 - 12:45 || Group 9 | ||
|- | |- | ||
|} | |} | ||
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: | {| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;" | ||
|+ '''Week | |+ '''Week 24''' | ||
|- | |- | ||
! scope="col" | '''Date''' | ! scope="col" | '''Date''' | ||
Line 130: | Line 199: | ||
! scope="col" | '''Group''' | ! scope="col" | '''Group''' | ||
|- | |- | ||
| 11- | | 11-06-2015 || 8:45 - 9:45 || Group 2 | ||
|- | |- | ||
| 11- | | 11-06-2015 || 9:45 - 10:45 || Group 11 | ||
|- | |- | ||
| 11- | | 11-06-2015 || 10:45 - 11:45 || | ||
|- | |- | ||
| 11- | | 11-06-2015 || 12:45 - 13:45 || Group 5 | ||
|- | |- | ||
| 11- | | 11-06-2015 || 13:45 - 14:45 || Group 7 | ||
|- | |- | ||
| 11- | | 11-06-2015 || 14:45 - 15:45 || Group 4 | ||
|- | |- | ||
| 12- | | 12-06-2015 || 8:45 - 9:45 || Group 8 | ||
|- | |- | ||
| 12- | | 12-06-2015 || 9:45 - 10:45 || Group 3 | ||
|- | |- | ||
| 12- | | 12-06-2015 || 10:45 - 11:45 || | ||
|- | |- | ||
| 12- | | 12-06-2015 || 11:45 - 12:45 || Group 9 | ||
|- | |- | ||
| | |} | ||
{| class="TablePager" style="width: 240px; min-width: 240px; margin-left: 2em; float:left; color: black;" | |||
|+ '''Week 24''' | |||
|- | |- | ||
| 12- | ! scope="col" | '''Date''' | ||
! scope="col" | '''Time''' | |||
! scope="col" | '''Group''' | |||
|- | |||
| 15-06-2015 || 8:45 - 9:45 || Group 11 | |||
|- | |||
| 15-06-2015 || 9:45 - 10:45 || Group 4 | |||
|- | |||
| 15-06-2015 || 10:45 - 11:45 || Group 5 | |||
|- | |||
| 15-06-2015 || 12:45 - 13:45 || Group 1 | |||
|- | |||
| 15-06-2015 || 13:45 - 14:45 || Group 6 | |||
|- | |||
| 16-06-2015 || 8:45 - 9:45 || Group 2 | |||
|- | |||
| 16-06-2015 || 9:45 - 10:45 || Group 8 | |||
|- | |- | ||
| | | 16-06-2015 || 13:45 - 14:45 || Group 9 | ||
|- | |||
| 16-06-2015 || 14:45 - 15:45 || Group 3 | |||
|- | |||
| 16-06-2015 || 15:45 - 16:45 || Group 7 | |||
|- | |||
| 16-06-2015 || 16:45 - 17:45 || Group 6 | |||
|- | |- | ||
|} | |} | ||
<div style="clear:both"></div> | <div style="clear:both"></div> | ||
<!-- | |||
In order to test your software on the real robot, each group has a number of available time slots. During the second stage test sessions, two robots will be available: Pico and Taco. Taco is a slightly different robot, but if your software works well on Taco, it will also work on Pico. The difference is that Taco's base is non-holonomic. This means that you cannot give it a velocity command in the y-direction (sideways), only in x and theta. So if your software relies on giving velocity commands in y-direction, you might just want to choose for testing on Pico (or change your software); if you only give x and theta commands, you can also test on Taco, doubling the available time slots! | |||
--> | |||
= Group Final Presentations = | = Group Final Presentations = |
Latest revision as of 10:09, 12 June 2015
Guide towards the assignment
'A-MAZE-ING PICO'
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 8.45 - 10.30 in Gem-Z 3A-12. The course schedule is as follows:
April 22 | Introduction | |
April 29 | Composition pattern part I by Herman Bruyninckx | Tooling and Infrastructure by Sjoerd van den Dries |
May 6 | First presentation of the design by groups: 6-minute presentation about the group's design in the context of the task-skill-motion system architecture and the composition pattern. | |
May 13 | Corridor competition | |
May 20 | Composition Pattern part II by Herman Bruyninckx | |
May 27 | Second presentation of the design by groups | |
June 3 | Communication patterns by Herman Bruyninckx | |
June 10 | Presentation of final design by groups | |
June 17 | Final competition |
Assignment
Design and implement a robotic software system that will let robots Pico/Taco solve a maze in the robotics lab. The maze can contain doors that automatically open and close.
Corridor Competition
An intermediate review will be held on May 13th, 8.45h at the RoboCup soccer field. During this challenge, called the corridor competition the students have to let the robot drive through a corridor and then take the first exit. The precise location of this exit will not be given in advance. Some facts:
- Set-up
- 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 us know as soon as possible!
- 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
- Make sure your software is easy to set-up, i.e:
- The corridor:
- The exit can be either left or right
- It is not known beforehand how far the exit is located from the start (somewhere between 1 and 10 meters)
- The opposing end wall (on the far end) will be open
- The walls are approximately parallel to each other
- Note: the walls might not be perfectly straight
- The distance between the walls is not known in advance, but will be reasonable (somewhere between 0.5 and 1.5 meters).
- The distance between the walls will be fairly constant throughout the corridor, 'fairly' meaning that we build the corridor by hand, and the distance may change a little along the corridor.
- At the exit, the finish line is located approximately 30 cm from the side of the corridor (Notice: approximately, so don't just drive forward for 30 cm!). The walls that can be used to align PICO will be a little bit longer.
- Start, goal and limits:
- PICO will start with its laser range finder between the walls
- PICO will be approximately facing the end of the corridor. (Notice: approximately, so don't just drive forward for n seconds!)
- You have finished the assignment if PICO did not drive into walls, took the correct turn and the entire rear wheel is across the finish line.
- Maximum speed (is limited in PICO): 0.5 m/s translational, 1.2 rad/s rotational. By the way, that's pretty fast (compared to last year's 0.2 m/s), so be careful! You don't have to drive that fast!
- Scoring:
- Try not to touch the wall! Slightly touching is OK, 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. If PICO bumps into the wall, that trial ends immediately.
- 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 beginning of the corridor
- CORRIDOR time (= time used for scoring) is reset, BUT
- TOTAL time keeps running
- Every team has a total of 5 minutes
- There will be no second attempt if first attempt was successful
Next you can see an example of a corridor:
Maze Competition
The final competition will be held on June 17, 8.45h at the RoboCup soccer field. The goal of this competition is to let PICO autonomously drive through a maze and find the exit. Some facts:
- Where and when:
- Wed June 17, 8.45h - 10.30h
- Location: RoboCup Soccer field, GEM-N
- Set-up
- 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 us know as soon as possible!
- Make sure your software is easy to set-up, i.e:
- Maze characteristics:
- Exact location of the exit is unknown, but it will be on the boundaries of the maze (which means: PICO has to drive out of the maze).
- Walls are approximately axis-aligned, meaning all angles are 90 degrees. Approximately means: built by hand, so slight differences may occur.
- Open spaces may occur
- There may be loops in the maze, which means that some walls may not be connected to other walls.
- Start, goal and limits:
- PICO will start inside the maze.
- PICO will not start in a door area (see below for definition). So, for example, the door will not be directly behind PICO's starting location
- You have finished the assignment if PICO did not drive into walls, found the exit and the whole robot is across the finish line.
- Maximum speed (is limited in PICO): 0.5 m/s translational, 1.2 rad/s rotational. By the way, that's pretty fast (compared to last year's 0.2 m/s), so be careful! You don't have to drive that fast!
- Doors:
- There is exactly 1 door in the maze
- The door will be situated at a dead end, a dead end being defined as a piece of wall with minimum length 0.5 and maximum length 1.5 with side-walls of at least 0.3 meter length. (Picture explaining this will follow shortly)
- There might be multiple dead ends in the maze, one of which is a door
- You need to pass the door to solve the maze, i.e., if you cannot open the door, the maze is unsolvable
- The door will open if and only if the following conditions are met:
- PICO is located within 1.3m distance from the door (i.e., no part of PICO is located outside the 1.3m range). The 1.3m in front of the door is called the door area.
- PICO is not driving, i.e., the commanded velocity is 0 (both translational and rotational)
- PICO asks to open the door. This will become available from the io-layer, e.g.,:
io.requestOpenDoor()
- If these conditions are met:
- The door will start sliding open within 2 seconds from PICO's request
- The door will slide open to the left or to the right
- The door slides open at approximately constant velocity
- The door is fully open within 5 seconds from PICO's request
- Once the door is open, it will stay open
- Scoring:
- You have 2 attempts (= maximum one restart)
- restart means:
- PICO restarts at beginning of maze
- MAZE time (= time used for scoring) is reset, BUT
- TOTAL time keeps running
- You have a total of 7 minutes for both attempts
- Hit wall = that attempt fails
- PICO standing still for 30 seconds = that attempt fails
- There will be no second attempt if first attempt was successful
Next you can see an examples of an open space and a door and examples:
Getting Started
To get started, please do the tutorials on the 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 Using Pico for a quick overview of how to use Pico.
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 1 - visit wiki - Tutor: Luis Ferreira
Group 2 - visit wiki - Tutor: Luis Ferreira
Group 3 - visit wiki - Tutor: Sjoerd van den Dries
Group 4 - visit wiki - Tutor: Sjoerd van den Dries
Group 5 - visit wiki - Tutor: Yanick Douven
Group 6 - visit wiki - Tutor: René van de Molengraft
Group 7 - visit wiki - Tutor: Yanick Douven
Group 8 - visit wiki - Tutor: René van de Molengraft
Group 9 - visit wiki - Tutor: René van de Molengraft
Group 10 - visit wiki - Tutor: Yanick Douven
Group 11 - visit wiki - Tutor: Luis Ferreira
Pico test schedule
A timetable for the first two weeks of the second stage tests is now available. Each group is allowed one time slot per week. A timetable for the three weeks after that will become available soon.
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.
Date | Time | Group |
---|---|---|
21-05-2015 | 12:45 - 13:45 | Groep 5 |
21-05-2015 | 13:45 - 14:45 | |
21-05-2015 | 14:45 - 15:45 | |
21-05-2015 | 15:45 - 16:45 | Group 11 |
22-05-2015 | 8:45 - 9:45 | Group 8 |
22-05-2015 | 9:45 - 10:45 | Group 6 |
22-05-2015 | 10:45 - 11:45 | Group 7 |
22-05-2015 | 12:45 - 13:45 | Group 4 |
22-05-2015 | 13:45 - 14:45 | Group 10 |
22-05-2015 | 14:45 - 15:45 | Group 3 |
22-05-2015 | 15:45 - 16:45 | Group 2 |
Date | Time | Group |
---|---|---|
28-05-2015 | 8:45 - 9:45 | Group 1 |
28-05-2015 | 9:45 - 10:45 | Group 7 |
28-05-2015 | 10:45 - 11:45 | Group 4 |
28-05-2015 | 12:45 - 13:45 | Groep 5 |
28-05-2015 | 13:45 - 14:45 | Group 9 |
28-05-2015 | 14:45 - 15:45 | Group 10 |
28-05-2015 | 15:45 - 16:45 | Group 8 |
29-05-2015 | 8:45 - 9:45 | Group 11 |
29-05-2015 | 9:45 - 10:45 | Group 6 |
29-05-2015 | 10:45 - 11:45 | Group 2 |
29-05-2015 | 11:45 - 12:45 | Group 3 |
Date | Time | Group |
---|---|---|
04-06-2015 | 8:45 - 9:45 | |
04-06-2015 | 9:45 - 10:45 | Group 11 |
04-06-2015 | 10:45 - 11:45 | Group 4 |
04-06-2015 | 12:45 - 13:45 | Group 5 |
04-06-2015 | 13:45 - 14:45 | Group 7 |
04-06-2015 | 14:45 - 15:45 | Group 6 |
04-06-2015 | 15:45 - 16:45 | |
05-06-2015 | 8:45 - 9:45 | Group 8 |
05-06-2015 | 9:45 - 10:45 | Group 3 |
05-06-2015 | 10:45 - 11:45 | Group 2 |
05-06-2015 | 11:45 - 12:45 | Group 9 |
Date | Time | Group |
---|---|---|
11-06-2015 | 8:45 - 9:45 | Group 2 |
11-06-2015 | 9:45 - 10:45 | Group 11 |
11-06-2015 | 10:45 - 11:45 | |
11-06-2015 | 12:45 - 13:45 | Group 5 |
11-06-2015 | 13:45 - 14:45 | Group 7 |
11-06-2015 | 14:45 - 15:45 | Group 4 |
12-06-2015 | 8:45 - 9:45 | Group 8 |
12-06-2015 | 9:45 - 10:45 | Group 3 |
12-06-2015 | 10:45 - 11:45 | |
12-06-2015 | 11:45 - 12:45 | Group 9 |
Date | Time | Group |
---|---|---|
15-06-2015 | 8:45 - 9:45 | Group 11 |
15-06-2015 | 9:45 - 10:45 | Group 4 |
15-06-2015 | 10:45 - 11:45 | Group 5 |
15-06-2015 | 12:45 - 13:45 | Group 1 |
15-06-2015 | 13:45 - 14:45 | Group 6 |
16-06-2015 | 8:45 - 9:45 | Group 2 |
16-06-2015 | 9:45 - 10:45 | Group 8 |
16-06-2015 | 13:45 - 14:45 | Group 9 |
16-06-2015 | 14:45 - 15:45 | Group 3 |
16-06-2015 | 15:45 - 16:45 | Group 7 |
16-06-2015 | 16:45 - 17:45 | Group 6 |
Group Final Presentations
To be added...
Contact Details
In case of questions related to working with the real PICO robot, please contact Yanick. For questions regarding the simulator or Git, please contact Sjoerd.
Tutors
Sjoerd van den Dries - S dot v dot d dot Dries at tue dot nl
Luis Ferreira - L dot F dot Bento dot Ferreira at tue dot nl
Yanick Douven - y dot g dot m dot douven at tue dot nl
...