Mobile Robot Control 2021 Group 4: Difference between revisions
TUe\20168550 (talk | contribs) |
TUe\20168550 (talk | contribs) |
||
Line 31: | Line 31: | ||
For the first method, line segmenting is implemented. This is done as follows: | For the first method, line segmenting is implemented. This is done as follows: | ||
1. First, a line is drawn between the start point with index 0 and the end point with index 999. | '''1.''' First, a line is drawn between the start point with index 0 and the end point with index 999. | ||
2. Then, for each LRF data point, the distance perpendicular to the line drawn in step 1 is determined and both index and distance of the point corresponding to the largest distance are saved. | '''2.''' Then, for each LRF data point, the distance perpendicular to the line drawn in step 1 is determined and both index and distance of the point corresponding to the largest distance are saved. | ||
3. If the distance lies above a certain threshold value, then the point found in step 2 does not lie on the line drawn between points 0 and 999. In that case, the process is repeated from step 1 again, however now the end point is changed to the index determined in step 2. If the distance lies below the threshold value, then there is a line detected between the start and end point stated in step 1. The process is then repeated with the end point of the current iteration now being the start point of the next iteration. | '''3.''' If the distance lies above a certain threshold value, then the point found in step 2 does not lie on the line drawn between points 0 and 999. In that case, the process is repeated from step 1 again, however now the end point is changed to the index determined in step 2. If the distance lies below the threshold value, then there is a line detected between the start and end point stated in step 1. The process is then repeated with the end point of the current iteration now being the start point of the next iteration. | ||
4. The steps above are repeated until the start point index is equal to 999, which means that all line segments have been found. | '''4.''' The steps above are repeated until the start point index is equal to 999, which means that all line segments have been found. |
Revision as of 14:54, 13 May 2021
Group Members
Luuk Verstegen - 1252488
Bob Bindels - 1246348
Stijn van den Broek - 1252011
Lars van Dooren - 1249169
Tjeerd Ickenroth - 1232296
Introduction
Design Document
A Design Document is created in order to elaborate the approach of the Escape Room challenge (also some Hospital challenge aspects). The document includes several topics such as the requirement, components, specifications, functions and interfaces. Download the file here: Design Document
Escape Room Challenge
The task of the escape room challenge is to find the corridor and exit the room through it. Since our group did not have much experience with C++ programming, it was decided to split up the work into a robust method (2 people) and a less robust method (3 people):
- Robust: the first method is based on line segments and corner detection. From the LRF data the angle indices corresponding to start- and endpoints of line segments can be found. From these indices and the corresponding distances the location of the corridor entrance can be determined. The robot should drive to this position and from there on align itself with the walls of the corridor and drive parallel to the walls until the finish is reached. Since not a lot from the Wiki example can be used here, it was expected that this method would take the most time to get it properly working.
- Less robust: the second method is based on the full example which has been placed on the Wiki. Here, wall detection, drive control and a finite state machine are already implemented and therefore it is relatively easy to adapt. The method for finding the corridor in this method is a relatively easy one: when a sudden distance jump is found between one LRF index and the next, then the corridor is found. To make sure that once the robot has found this sudden distance jump and drives towards the corridor, mostly changes in the finite state machine are required.
Robust method
For the first method, line segmenting is implemented. This is done as follows:
1. First, a line is drawn between the start point with index 0 and the end point with index 999.
2. Then, for each LRF data point, the distance perpendicular to the line drawn in step 1 is determined and both index and distance of the point corresponding to the largest distance are saved.
3. If the distance lies above a certain threshold value, then the point found in step 2 does not lie on the line drawn between points 0 and 999. In that case, the process is repeated from step 1 again, however now the end point is changed to the index determined in step 2. If the distance lies below the threshold value, then there is a line detected between the start and end point stated in step 1. The process is then repeated with the end point of the current iteration now being the start point of the next iteration.
4. The steps above are repeated until the start point index is equal to 999, which means that all line segments have been found.