Embedded Motion Control 2018 Group 8
Group members
Name: | Student id: | |
Srinivasan Arcot Mohanarangan (S.A.M) | s.arcot.mohana.rangan@student.tue.nl | 1279785 |
Sim Bouwmans (S.) | s.bouwmans@student.tue.nl | 0892672 |
Yonis le Grand | y.s.l.grand@student.tue.nl | 1221543 |
Johan Baeten | j.baeten@student.tue.nl | 0767539 |
Michaël Heijnemans | m.c.j.heijnemans@student.tue.nl | 0714775 |
René van de Molengraft & Herman Bruyninckx | René + Herman | Tutor |
Initial Design
The initial design file can be downloaded by clicking on the following link:File:Initial Design Group8.pdf.
A brief description of our initial design is also given below in this section. PICO has to be designed to fullfill two different tasks, namely the Escape Room Competition (EC) and the Hospital Competition (HC). When either EC or HC is mentioned in the tekst below, it means that the corresponding design criteria is only needed for that competition. If EC or HC is not mentioned, the design criteria holds for both challenges.
Requirements
Functions
Components
Specifications
Interfaces
MORE ON TASK SKILL MOTION ETC????
Initial idea Escape Room Competition
Perception
Monitoring
Planning
Other
Initial idea Hospital Competition
World Model
Our strategy is to store the least information as possible as to not strain memory. There are two classes of objects which are stored in memory, nodes and vertices. Nodes are the x and y coordinates of end points of lines. Vertices are straight lines between nodes and are stored as a pair of the connecting node numbers. These objects have other attributes and methods which will be described here below.
Nodes
Nodes are categorized according to the following table. This categorization is represented as boolean attributes of the node objects.\\\\
Node type | Subtype | Definition |
Open Node | The unconfirmed end of a line | |
closed Node | Inward Corner | Confirmed intersection of two lines.The angle the node vector (which is always relative to PICO) and each of the intersecting lines is less than 90 degrees at moment of detection. |
Outward corner | Confirmed intersection of two lines.The angle the node vector (which is always relative to PICO) and at least one of the intersecting lines is more than 90 degrees at moment of detection. |
Vertex
As mentioned here above a vertex is stored in memory as a reference to the end nodes that define them. A vertex object does have some methods:
getParameters: - This gets the parameters a,b of the line in the form ax + by +c = 0. This can be done when vector operations are necessary
The parameters of the equation ax + by +c = 0. can easily be transformed to the vector representation: [math]\displaystyle{ $\lambda \cdot \begin{bmatrix} a \\1 \end{bmatrix}+ \begin{bmatrix}0\\b\end{bmatrix}$ }[/math]
Which is useful for angle checks and other vector operation.
Perception
Monitoring
Planning
Other
Escape Room Competition
For the Escape Room Competition, a simple algorithm was used as code. This was done so that the groupmembers without many C++ programming experience could get used to it while the more experienced programmers already worked on the perception code for the Hospital Competition. Therefore, the code used for the Escape Room Competition was a little bit different than the initial design because the aimed perception code was not fully debugged before the Escape Room Competition so that it could not be implemented in the written main code for the Escape Room Competition.
Perception
For the perception of the world for PICO, a simple space recognition code was used. In this code, the LRF data is split into three beam ranges. A left beam range, a front beam range and a right beam range. Around PICO, two circles are plotted. One is the ROBOT_SIZE circle which has a radius so that PICO is just encircled by the circle. The other circle is the MIN_DISTANCE_WALL circle which has a bigger radius than the ROBOT_SIZE circle. For each of the three laser beam ranges, the distance to an obstacle is checked for each beam, and the lowest distance which is larger than the radius of the ROBOT_SIZE circle is saved and checked if it is smaller than the radius of the MIN_DISTANCE_WALL circle. If that is true, the value TRUE is given to the corresponding laser beam range, else the value FALSE is given to that laser beam range. This scan is done with a frequency of FREQ, and by each scan, the previous values are deleted.
Monitoring
For the Escape Room Competition, PICO would only monitor its surroundings between the ROBOT_SIZE circle and the MIN_DISTANCE_WALL circle by giving a meaning to its sensor data (Left, Right, Front). The four meanings are:
- Nothing: All sensor data has the value FALSE
- Obstacle: At least one of the sensors has the value TRUE
- Wall: The Right sensor has value TRUE, while the Front sensor has value FALSE
- Corner: The Right and Front sensor has value TRUE
The monitored data is only stored for one moment and the old data is deleted and refreshed with each new dataset.
Planning
For the planning, a simple wall following algorithm is used. As design chose, the right wall is chosen as the wall to follow. As initial state it is assumed that PICO sees nothing. PICO will than check if there is actually nothing by searching at its position for an obstacle. If no obstacle is detected at its starting position, PICO will hypothesize that there is an obstacle in front of him and will drive forward until he has validated its hypothesis by seeing an obstacle. This hypothesis will always come true at a certain moment in time due to the restrictions on the world PICO is put into.
As soon as an obstacle is detected, PICO will assume that this obstacle is a wall and will rotate counter-clockwise until its monitoring says that this obstacle is a wall, so that only the right sensor gives the value TRUE. Due to the fact that the world only consists of walls and corners, and corners are build out of walls, this hypothesis will again always come true when rotating.