Control Systems Technology Group - User contributions [en]
http://cstwiki.wtb.tue.nl/index.php?title=Special:Contributions/20194019
From Control Systems Technology GroupenMediaWiki 1.15.3Sun, 22 May 2022 02:15:43 GMTMobile Robot Control 2021 Group 6
http://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2021_Group_6
<p>20194019: /* Entrance Detection */</p>
<hr />
<div>== Group Members ==<br />
<br />
Stefan van der Palen - 1501054 <br/><br />
<br />
Paul Munns - 1522795 <br/><br />
<br />
Saray Bakker - 1002248 <br/><br />
<br />
Liang Oei - 1522779 <br/><br />
<br />
Boudewijn Kempers - 1398164 <br/><br />
<br />
Walter MacAulay - 1632817 <br/><br />
<br />
== Design Document ==<br />
<br />
The Design Document: [[media:MRC_Design_Document_Group6.pdf]]<br />
<br />
= Escape Room Competition =<br />
<br />
For the Escape room competition two version were build, a smarter robot and a back-up version were the robot follows the wall. For both cases a 20 Hz execution rate is used.<br />
<br />
The general structure of the smarter robot is given below. First, an initial scan is performed to find the entrance of the hallway. If an entrance is found, PICO will receive a point where it can move towards via the states 'Move entrance rotation' and 'Move entrance forward'. How the exit is determined is explained in the section 'Line segments and entrance detection'. If no entrance is detected, PICO will perform a partial rotation of 30 degrees and start scanning again for an exit. When no entrance is found after performing a full scan of the room, it is likely that the entrance is not visible from the current position of the robot. In the state 'No entrance - move to free space', PICO will move forward towards a new spot and try to locate the entrance at the new position. <br />
<br />
If an entrance is detected, PICO will rotate until it faces the entrance and move forward. Since it should be taken into account that PICO might indicate an exit where there is none, an evaluation is performed after a few steps. If the entrance is still in front of the robot, PICO keeps moving forward. If the entrance is not directly in front of PICO due to drift, a rotation is performed before moving forward again. It could be possible that a false exit was detected before or PICO has drifted too much to still find the exit. Then a new full room scan is performed. <br />
<br />
PICO should avoid running into obstacles including static and dynamic objects. Therefore a function is designed that maintains a certain distance from all obstacles which is called 'bubbleRobot'. When PICO is too close to an obstacle, it will stop and move in the opposite direction. To avoid running into the obstacle again, the movement away from the obstacle is more than the distance to leave the bubble. When the robot has moved away from the obstacle, it will reevaluate its position. <br />
<br />
[[File:chart_escape_room.PNG]]<br />
<br />
<br />
==Line Segmentation==<br />
Line detection from data points is a fundamental task in many fields of science and engineering. In the case of the mobile robot, line detection algorithm is the underlying cornerstone for feature extraction, such as wall, corner and entrance detection. <br />
<br />
PICO acquires its data points via the laser range finder (LRF). The LRF outputs in one sweep 1000 data points, consisting of the distances (<math>r</math>) corresponding to particular angles (<math>\theta</math>), as shown in Figure 1. The first data point is at -2 rad and the last data point is at +2 rad. Invalid data points above 10 m and below 0.01 m are filtered out. The data points are then converted from polar coordinates to cartesian coordinates using the following geometric relations:<br />
<br />
x = <math>r</math> cos(-2 + <math>\Delta \theta</math>)<br />
<br />
and<br />
<br />
y = <math>r</math> sin(-2 + <math>\Delta \theta</math>)<br />
<br />
<math>=</math><br />
<br />
The line segmentation algorithm is based on the iterative end-point fit (IEPF) algorithm. The algorithm works as follows:<br />
<br />
1. A line is first drawn from the first data point (i_begin) to the last data point (i_end). This corresponds to -2 rad and +2 rad respectively when all data is valid, i.e. not filtered out.<br />
<br />
2. The perpendicular distances from the line are calculated for each data point between i_begin and i_end.<br />
<br />
3. The line is split at the point with the largest perpendicular distance from the line if it is above a certain threshold. <br />
<br />
4. If it is below the threshold, a line is found and the segment is stored. The algorithm goes back to point 2, but sets i_begin equal to one index further from the end of the last segment found. <br />
<br />
5. The algorithm repeats until all data points are considered, i.e. i_begin is now at i_end.<br />
<br />
This is also called the split-and-merge algorithm, but merging is not done.<br />
<br />
<br />
[[File:Pico_coordinates.png|300 px|thumb|right|Figure 1: The coordinate system used with the angular limits of the LRF.]]<br />
<br />
==Entrance Detection==<br />
<br />
<br />
Laser data can be quite noisy, which can result in a false detection of the entrance when just using one scan as input. Therefore a few scans after each other are performed. The median of the estimated angle and distance towards the entrance is used to plan the motion.<br />
<br />
The entrance detection algorithm uses the slopes of the walls to detect the entrance. Firstly the walls are detected via line segmentation of which the slopes can be calculated. For each segment (wall), the slope is compared to the slope of wall that follows next and also the slope of the wall that follows the next wall. So in total 3 segments are used for the algorithm. The following are compared;<br />
- The slopes are compared to each other if they are parallel/perpendicular in a certain bound. These bounds are introduced since the walls can be not perfectly parallel or perpedicular. These bounds also determine the robustness of the algorithm. <br />
- If the end-point of a segment is in a certain bound of the begin-point of the next segment. If these points differ a lot, this most likely will be an entrance and an entrance point is calculated. <br />
<br />
If there are more segments located, it will iterate through each segment and compares its slope with the following 2 segments. If there are 2 segments located, the algorithm will check if the system is parallel. If so, the system detects it as a hallway. Based on if a hallway is detected or an interance, a entrance point is calculated between the lines.<br />
<br />
[[File:Ezgif.com-gif-maker.gif]]<br />
<br />
= Hospital Competition =<br />
<br />
= Meeting Schedule =<br />
<br />
{| class="TablePager" style="width: 90%; min-width: 240px; margin-left: 2em; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Chairman'''<br />
! scope="col" | '''Secretary'''<br />
! scope="col" | '''Summary'''<br />
|-<br />
| 26-4-2021 || - || - || Introduction meeting<br />
|-<br />
| 28-4-2021 || Boudewijn Kempers || Paul Munns || First tutor meeting, dividing tasks for Design document<br />
|-<br />
| 3-5-2021 || Boudewijn Kempers || Paul Munns || Divide coding tasks: Perception (Liang and Paul), Path planning (Saray and Stefan), Initial/Main (Boudewijn and Walter)<br />
|-<br />
| 10-5-2021 || Paul Munns || Stefan van der Palen || Show functionality of wall following robot (dumb robot), show status smart robot which uses perception to find the entrance. <br />
|-<br />
| 17-5-2021 || Stefan van der Palen || Walter MacAulay || ..<br />
|-<br />
| 26-5-2021 || Walter MacAulay || Saray Bakker || ..<br />
|-<br />
| 31-5-2021 || Saray Bakker || Boudewijn Kempers || ..<br />
|-<br />
| 7-6-2021 || Boudewijn Kempers || Paul Munns || ..<br />
|-<br />
|}</div>Thu, 20 May 2021 11:27:52 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=Talk:Mobile_Robot_Control_2021_Group_6File:Ezgif.com-gif-maker.gif
http://cstwiki.wtb.tue.nl/index.php?title=File:Ezgif.com-gif-maker.gif
<p>20194019: </p>
<hr />
<div></div>Thu, 20 May 2021 11:27:26 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=File_talk:Ezgif.com-gif-maker.gifMobile Robot Control 2021 Group 6
http://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2021_Group_6
<p>20194019: /* Entrance Detection */</p>
<hr />
<div>== Group Members ==<br />
<br />
Stefan van der Palen - 1501054 <br/><br />
<br />
Paul Munns - 1522795 <br/><br />
<br />
Saray Bakker - 1002248 <br/><br />
<br />
Liang Oei - 1522779 <br/><br />
<br />
Boudewijn Kempers - 1398164 <br/><br />
<br />
Walter MacAulay - 1632817 <br/><br />
<br />
== Design Document ==<br />
<br />
The Design Document: [[media:MRC_Design_Document_Group6.pdf]]<br />
<br />
= Escape Room Competition =<br />
<br />
For the Escape room competition two version were build, a smarter robot and a back-up version were the robot follows the wall. For both cases a 20 Hz execution rate is used.<br />
<br />
The general structure of the smarter robot is given below. First, an initial scan is performed to find the entrance of the hallway. If an entrance is found, PICO will receive a point where it can move towards via the states 'Move entrance rotation' and 'Move entrance forward'. How the exit is determined is explained in the section 'Line segments and entrance detection'. If no entrance is detected, PICO will perform a partial rotation of 30 degrees and start scanning again for an exit. When no entrance is found after performing a full scan of the room, it is likely that the entrance is not visible from the current position of the robot. In the state 'No entrance - move to free space', PICO will move forward towards a new spot and try to locate the entrance at the new position. <br />
<br />
If an entrance is detected, PICO will rotate until it faces the entrance and move forward. Since it should be taken into account that PICO might indicate an exit where there is none, an evaluation is performed after a few steps. If the entrance is still in front of the robot, PICO keeps moving forward. If the entrance is not directly in front of PICO due to drift, a rotation is performed before moving forward again. It could be possible that a false exit was detected before or PICO has drifted too much to still find the exit. Then a new full room scan is performed. <br />
<br />
PICO should avoid running into obstacles including static and dynamic objects. Therefore a function is designed that maintains a certain distance from all obstacles which is called 'bubbleRobot'. When PICO is too close to an obstacle, it will stop and move in the opposite direction. To avoid running into the obstacle again, the movement away from the obstacle is more than the distance to leave the bubble. When the robot has moved away from the obstacle, it will reevaluate its position. <br />
<br />
[[File:chart_escape_room.PNG]]<br />
<br />
<br />
==Line Segmentation==<br />
Line detection from data points is a fundamental task in many fields of science and engineering. In the case of the mobile robot, line detection algorithm is the underlying cornerstone for feature extraction, such as wall, corner and entrance detection. <br />
<br />
PICO acquires its data points via the laser range finder (LRF). The LRF outputs in one sweep 1000 data points, consisting of the distances (<math>r</math>) corresponding to particular angles (<math>\theta</math>), as shown in Figure 1. The first data point is at -2 rad and the last data point is at +2 rad. Invalid data points above 10 m and below 0.01 m are filtered out. The data points are then converted from polar coordinates to cartesian coordinates using the following geometric relations:<br />
<br />
x = <math>r</math> cos(-2 + <math>\Delta \theta</math>)<br />
<br />
and<br />
<br />
y = <math>r</math> sin(-2 + <math>\Delta \theta</math>)<br />
<br />
<math>=</math><br />
<br />
The line segmentation algorithm is based on the iterative end-point fit (IEPF) algorithm. The algorithm works as follows:<br />
<br />
1. A line is first drawn from the first data point (i_begin) to the last data point (i_end). This corresponds to -2 rad and +2 rad respectively when all data is valid, i.e. not filtered out.<br />
<br />
2. The perpendicular distances from the line are calculated for each data point between i_begin and i_end.<br />
<br />
3. The line is split at the point with the largest perpendicular distance from the line if it is above a certain threshold. <br />
<br />
4. If it is below the threshold, a line is found and the segment is stored. The algorithm goes back to point 2, but sets i_begin equal to one index further from the end of the last segment found. <br />
<br />
This is also called the split-and-merge algorithm, but merging is not done.<br />
<br />
<br />
[[File:Pico_coordinates.png|300 px|thumb|right|Figure 1: The coordinate system used with the angular limits of the LRF.]]<br />
<br />
==Entrance Detection==<br />
<br />
<br />
Laser data can be quite noisy, which can result in a false detection of the entrance when just using one scan as input. Therefore a few scans after each other are performed. The median of the estimated angle and distance towards the entrance is used to plan the motion.<br />
<br />
The entrance detection algorithm uses the slopes of the walls to detect the entrance. Firstly the walls are detected via line segmentation of which the slopes can be calculated. For each segment (wall), the slope is compared to the slope of wall that follows next and also the slope of the wall that follows the next wall. So in total 3 segments are used for the algorithm. The following are compared;<br />
- The slopes are compared to each other if they are parallel/perpendicular in a certain bound. These bounds are introduced since the walls can be not perfectly parallel or perpedicular. These bounds also determine the robustness of the algorithm. <br />
- If the end-point of a segment is in a certain bound of the begin-point of the next segment. If these points differ a lot, this most likely will be an entrance and an entrance point is calculated. <br />
<br />
If there are more segments located, it will iterate through each segment and compares its slope with the following 2 segments. If there are 2 segments located, the algorithm will check if the system is parallel. If so, the system detects it as a hallway. Based on if a hallway is detected or an interance, a entrance point is calculated between the lines.<br />
<br />
A picture: [[File:Final 60a642b090fb0d0053beef86 136379.gif]]<br />
<br />
= Hospital Competition =<br />
<br />
= Meeting Schedule =<br />
<br />
{| class="TablePager" style="width: 90%; min-width: 240px; margin-left: 2em; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Chairman'''<br />
! scope="col" | '''Secretary'''<br />
! scope="col" | '''Summary'''<br />
|-<br />
| 26-4-2021 || - || - || Introduction meeting<br />
|-<br />
| 28-4-2021 || Boudewijn Kempers || Paul Munns || First tutor meeting, dividing tasks for Design document<br />
|-<br />
| 3-5-2021 || Boudewijn Kempers || Paul Munns || Divide coding tasks: Perception (Liang and Paul), Path planning (Saray and Stefan), Initial/Main (Boudewijn and Walter)<br />
|-<br />
| 10-5-2021 || Paul Munns || Stefan van der Palen || Show functionality of wall following robot (dumb robot), show status smart robot which uses perception to find the entrance. <br />
|-<br />
| 17-5-2021 || Stefan van der Palen || Walter MacAulay || ..<br />
|-<br />
| 26-5-2021 || Walter MacAulay || Saray Bakker || ..<br />
|-<br />
| 31-5-2021 || Saray Bakker || Boudewijn Kempers || ..<br />
|-<br />
| 7-6-2021 || Boudewijn Kempers || Paul Munns || ..<br />
|-<br />
|}</div>Thu, 20 May 2021 11:25:40 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=Talk:Mobile_Robot_Control_2021_Group_6Mobile Robot Control 2021 Group 6
http://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2021_Group_6
<p>20194019: /* Entrance Detection */</p>
<hr />
<div>== Group Members ==<br />
<br />
Stefan van der Palen - 1501054 <br/><br />
<br />
Paul Munns - 1522795 <br/><br />
<br />
Saray Bakker - 1002248 <br/><br />
<br />
Liang Oei - 1522779 <br/><br />
<br />
Boudewijn Kempers - 1398164 <br/><br />
<br />
Walter MacAulay - 1632817 <br/><br />
<br />
== Design Document ==<br />
<br />
The Design Document: [[media:MRC_Design_Document_Group6.pdf]]<br />
<br />
= Escape Room Competition =<br />
<br />
For the Escape room competition two version were build, a smarter robot and a back-up version were the robot follows the wall. For both cases a 20 Hz execution rate is used.<br />
<br />
The general structure of the smarter robot is given below. First, an initial scan is performed to find the entrance of the hallway. If an entrance is found, PICO will receive a point where it can move towards via the states 'Move entrance rotation' and 'Move entrance forward'. How the exit is determined is explained in the section 'Line segments and entrance detection'. If no entrance is detected, PICO will perform a partial rotation of 30 degrees and start scanning again for an exit. When no entrance is found after performing a full scan of the room, it is likely that the entrance is not visible from the current position of the robot. In the state 'No entrance - move to free space', PICO will move forward towards a new spot and try to locate the entrance at the new position. <br />
<br />
If an entrance is detected, PICO will rotate until it faces the entrance and move forward. Since it should be taken into account that PICO might indicate an exit where there is none, an evaluation is performed after a few steps. If the entrance is still in front of the robot, PICO keeps moving forward. If the entrance is not directly in front of PICO due to drift, a rotation is performed before moving forward again. It could be possible that a false exit was detected before or PICO has drifted too much to still find the exit. Then a new full room scan is performed. <br />
<br />
PICO should avoid running into obstacles including static and dynamic objects. Therefore a function is designed that maintains a certain distance from all obstacles which is called 'bubbleRobot'. When PICO is too close to an obstacle, it will stop and move in the opposite direction. To avoid running into the obstacle again, the movement away from the obstacle is more than the distance to leave the bubble. When the robot has moved away from the obstacle, it will reevaluate its position. <br />
<br />
[[File:chart_escape_room.PNG]]<br />
<br />
<br />
==Line Segmentation==<br />
Line detection from data points is a fundamental task in many fields of science and engineering. In the case of the mobile robot, line detection algorithm is the underlying cornerstone for feature extraction, such as wall, corner and entrance detection. <br />
<br />
PICO acquires its data points via the laser range finder (LRF). The LRF outputs in one sweep 1000 data points, consisting of the distances (<math>r</math>) corresponding to particular angles (<math>\theta</math>), as shown in Figure 1. The first data point is at -2 rad and the last data point is at +2 rad. Invalid data points above 10 m and below 0.01 m are filtered out. The data points are then converted from polar coordinates to cartesian coordinates using the following geometric relations:<br />
<br />
x = <math>r</math> cos(-2 + <math>\Delta \theta</math>)<br />
<br />
and<br />
<br />
y = <math>r</math> sin(-2 + <math>\Delta \theta</math>)<br />
<br />
<math>=</math><br />
<br />
The line segmentation algorithm is based on the iterative end-point fit (IEPF) algorithm. The algorithm works as follows:<br />
<br />
1. A line is first drawn from the first data point (i_begin) to the last data point (i_end). This corresponds to -2 rad and +2 rad respectively when all data is valid, i.e. not filtered out.<br />
<br />
2. The perpendicular distances from the line are calculated for each data point between i_begin and i_end.<br />
<br />
3. The line is split at the point with the largest perpendicular distance from the line if it is above a certain threshold. <br />
<br />
4. If it is below the threshold, a line is found and the segment is stored. The algorithm goes back to point 2, but sets i_begin equal to one index further from the end of the last segment found. <br />
<br />
This is also called the split-and-merge algorithm, but merging is not done.<br />
<br />
<br />
[[File:Pico_coordinates.png|300 px|thumb|right|Figure 1: The coordinate system used with the angular limits of the LRF.]]<br />
<br />
==Entrance Detection==<br />
<br />
<br />
Laser data can be quite noisy, which can result in a false detection of the entrance when just using one scan as input. Therefore a few scans after each other are performed. The median of the estimated angle and distance towards the entrance is used to plan the motion.<br />
<br />
The entrance detection algorithm uses the slopes of the walls to detect the entrance. Firstly the walls are detected via line segmentation of which the slopes can be calculated. For each segment (wall), the slope is compared to the slope of wall that follows next and also the slope of the wall that follows the next wall. So in total 3 segments are used for the algorithm. The following are compared;<br />
- The slopes are compared to each other if they are parallel/perpendicular in a certain bound. These bounds are introduced since the walls can be not perfectly parallel or perpedicular. These bounds also determine the robustness of the algorithm. <br />
- If the end-point of a segment is in a certain bound of the begin-point of the next segment. If these points differ a lot, this most likely will be an entrance and an entrance point is calculated. <br />
<br />
If there are more segments located, it will iterate through each segment and compares its slope with the following 2 segments. If there are 2 segments located, the algorithm will check if the system is parallel. If so, the system detects it as a hallway. Based on if a hallway is detected or an interance, a entrance point is calculated between the lines.<br />
<br />
A picture: [[File:Final 60a642b090fb0d0053beef86 136379.gif|1000 px|]]<br />
<br />
= Hospital Competition =<br />
<br />
= Meeting Schedule =<br />
<br />
{| class="TablePager" style="width: 90%; min-width: 240px; margin-left: 2em; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Chairman'''<br />
! scope="col" | '''Secretary'''<br />
! scope="col" | '''Summary'''<br />
|-<br />
| 26-4-2021 || - || - || Introduction meeting<br />
|-<br />
| 28-4-2021 || Boudewijn Kempers || Paul Munns || First tutor meeting, dividing tasks for Design document<br />
|-<br />
| 3-5-2021 || Boudewijn Kempers || Paul Munns || Divide coding tasks: Perception (Liang and Paul), Path planning (Saray and Stefan), Initial/Main (Boudewijn and Walter)<br />
|-<br />
| 10-5-2021 || Paul Munns || Stefan van der Palen || Show functionality of wall following robot (dumb robot), show status smart robot which uses perception to find the entrance. <br />
|-<br />
| 17-5-2021 || Stefan van der Palen || Walter MacAulay || ..<br />
|-<br />
| 26-5-2021 || Walter MacAulay || Saray Bakker || ..<br />
|-<br />
| 31-5-2021 || Saray Bakker || Boudewijn Kempers || ..<br />
|-<br />
| 7-6-2021 || Boudewijn Kempers || Paul Munns || ..<br />
|-<br />
|}</div>Thu, 20 May 2021 11:25:32 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=Talk:Mobile_Robot_Control_2021_Group_6Mobile Robot Control 2021 Group 6
http://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2021_Group_6
<p>20194019: /* Entrance Detection */</p>
<hr />
<div>== Group Members ==<br />
<br />
Stefan van der Palen - 1501054 <br/><br />
<br />
Paul Munns - 1522795 <br/><br />
<br />
Saray Bakker - 1002248 <br/><br />
<br />
Liang Oei - 1522779 <br/><br />
<br />
Boudewijn Kempers - 1398164 <br/><br />
<br />
Walter MacAulay - 1632817 <br/><br />
<br />
== Design Document ==<br />
<br />
The Design Document: [[media:MRC_Design_Document_Group6.pdf]]<br />
<br />
= Escape Room Competition =<br />
<br />
For the Escape room competition two version were build, a smarter robot and a back-up version were the robot follows the wall. For both cases a 20 Hz execution rate is used.<br />
<br />
The general structure of the smarter robot is given below. First, an initial scan is performed to find the entrance of the hallway. If an entrance is found, PICO will receive a point where it can move towards via the states 'Move entrance rotation' and 'Move entrance forward'. How the exit is determined is explained in the section 'Line segments and entrance detection'. If no entrance is detected, PICO will perform a partial rotation of 30 degrees and start scanning again for an exit. When no entrance is found after performing a full scan of the room, it is likely that the entrance is not visible from the current position of the robot. In the state 'No entrance - move to free space', PICO will move forward towards a new spot and try to locate the entrance at the new position. <br />
<br />
If an entrance is detected, PICO will rotate until it faces the entrance and move forward. Since it should be taken into account that PICO might indicate an exit where there is none, an evaluation is performed after a few steps. If the entrance is still in front of the robot, PICO keeps moving forward. If the entrance is not directly in front of PICO due to drift, a rotation is performed before moving forward again. It could be possible that a false exit was detected before or PICO has drifted too much to still find the exit. Then a new full room scan is performed. <br />
<br />
PICO should avoid running into obstacles including static and dynamic objects. Therefore a function is designed that maintains a certain distance from all obstacles which is called 'bubbleRobot'. When PICO is too close to an obstacle, it will stop and move in the opposite direction. To avoid running into the obstacle again, the movement away from the obstacle is more than the distance to leave the bubble. When the robot has moved away from the obstacle, it will reevaluate its position. <br />
<br />
[[File:chart_escape_room.PNG]]<br />
<br />
<br />
==Line Segmentation==<br />
Line detection from data points is a fundamental task in many fields of science and engineering. In the case of the mobile robot, line detection algorithm is the underlying cornerstone for feature extraction, such as wall, corner and entrance detection. <br />
<br />
PICO acquires its data points via the laser range finder (LRF). The LRF outputs in one sweep 1000 data points, consisting of the distances (<math>r</math>) corresponding to particular angles (<math>\theta</math>), as shown in Figure 1. The first data point is at -2 rad and the last data point is at +2 rad. Invalid data points above 10 m and below 0.01 m are filtered out. The data points are then converted from polar coordinates to cartesian coordinates using the following geometric relations:<br />
<br />
x = <math>r</math> cos(-2 + <math>\Delta \theta</math>)<br />
<br />
and<br />
<br />
y = <math>r</math> sin(-2 + <math>\Delta \theta</math>)<br />
<br />
<math>=</math><br />
<br />
The line segmentation algorithm is based on the iterative end-point fit (IEPF) algorithm. The algorithm works as follows:<br />
<br />
1. A line is first drawn from the first data point (i_begin) to the last data point (i_end). This corresponds to -2 rad and +2 rad respectively when all data is valid, i.e. not filtered out.<br />
<br />
2. The perpendicular distances from the line are calculated for each data point between i_begin and i_end.<br />
<br />
3. The line is split at the point with the largest perpendicular distance from the line if it is above a certain threshold. <br />
<br />
4. If it is below the threshold, a line is found and the segment is stored. The algorithm goes back to point 2, but sets i_begin equal to one index further from the end of the last segment found. <br />
<br />
This is also called the split-and-merge algorithm, but merging is not done.<br />
<br />
<br />
[[File:Pico_coordinates.png|300 px|thumb|right|Figure 1: The coordinate system used with the angular limits of the LRF.]]<br />
<br />
==Entrance Detection==<br />
<br />
<br />
Laser data can be quite noisy, which can result in a false detection of the entrance when just using one scan as input. Therefore a few scans after each other are performed. The median of the estimated angle and distance towards the entrance is used to plan the motion.<br />
<br />
The entrance detection algorithm uses the slopes of the walls to detect the entrance. Firstly the walls are detected via line segmentation of which the slopes can be calculated. For each segment (wall), the slope is compared to the slope of wall that follows next and also the slope of the wall that follows the next wall. So in total 3 segments are used for the algorithm. The following are compared;<br />
- The slopes are compared to each other if they are parallel/perpendicular in a certain bound. These bounds are introduced since the walls can be not perfectly parallel or perpedicular. These bounds also determine the robustness of the algorithm. <br />
- If the end-point of a segment is in a certain bound of the begin-point of the next segment. If these points differ a lot, this most likely will be an entrance and an entrance point is calculated. <br />
<br />
If there are more segments located, it will iterate through each segment and compares its slope with the following 2 segments. If there are 2 segments located, the algorithm will check if the system is parallel. If so, the system detects it as a hallway. Based on if a hallway is detected or an interance, a entrance point is calculated between the lines.<br />
<br />
A picture: [[File:Final 60a642b090fb0d0053beef86 136379.gif|600 px|]]<br />
<br />
= Hospital Competition =<br />
<br />
= Meeting Schedule =<br />
<br />
{| class="TablePager" style="width: 90%; min-width: 240px; margin-left: 2em; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Chairman'''<br />
! scope="col" | '''Secretary'''<br />
! scope="col" | '''Summary'''<br />
|-<br />
| 26-4-2021 || - || - || Introduction meeting<br />
|-<br />
| 28-4-2021 || Boudewijn Kempers || Paul Munns || First tutor meeting, dividing tasks for Design document<br />
|-<br />
| 3-5-2021 || Boudewijn Kempers || Paul Munns || Divide coding tasks: Perception (Liang and Paul), Path planning (Saray and Stefan), Initial/Main (Boudewijn and Walter)<br />
|-<br />
| 10-5-2021 || Paul Munns || Stefan van der Palen || Show functionality of wall following robot (dumb robot), show status smart robot which uses perception to find the entrance. <br />
|-<br />
| 17-5-2021 || Stefan van der Palen || Walter MacAulay || ..<br />
|-<br />
| 26-5-2021 || Walter MacAulay || Saray Bakker || ..<br />
|-<br />
| 31-5-2021 || Saray Bakker || Boudewijn Kempers || ..<br />
|-<br />
| 7-6-2021 || Boudewijn Kempers || Paul Munns || ..<br />
|-<br />
|}</div>Thu, 20 May 2021 11:25:19 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=Talk:Mobile_Robot_Control_2021_Group_6Mobile Robot Control 2021 Group 6
http://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2021_Group_6
<p>20194019: /* Entrance Detection */</p>
<hr />
<div>== Group Members ==<br />
<br />
Stefan van der Palen - 1501054 <br/><br />
<br />
Paul Munns - 1522795 <br/><br />
<br />
Saray Bakker - 1002248 <br/><br />
<br />
Liang Oei - 1522779 <br/><br />
<br />
Boudewijn Kempers - 1398164 <br/><br />
<br />
Walter MacAulay - 1632817 <br/><br />
<br />
== Design Document ==<br />
<br />
The Design Document: [[media:MRC_Design_Document_Group6.pdf]]<br />
<br />
= Escape Room Competition =<br />
<br />
For the Escape room competition two version were build, a smarter robot and a back-up version were the robot follows the wall. For both cases a 20 Hz execution rate is used.<br />
<br />
The general structure of the smarter robot is given below. First, an initial scan is performed to find the entrance of the hallway. If an entrance is found, PICO will receive a point where it can move towards via the states 'Move entrance rotation' and 'Move entrance forward'. How the exit is determined is explained in the section 'Line segments and entrance detection'. If no entrance is detected, PICO will perform a partial rotation of 30 degrees and start scanning again for an exit. When no entrance is found after performing a full scan of the room, it is likely that the entrance is not visible from the current position of the robot. In the state 'No entrance - move to free space', PICO will move forward towards a new spot and try to locate the entrance at the new position. <br />
<br />
If an entrance is detected, PICO will rotate until it faces the entrance and move forward. Since it should be taken into account that PICO might indicate an exit where there is none, an evaluation is performed after a few steps. If the entrance is still in front of the robot, PICO keeps moving forward. If the entrance is not directly in front of PICO due to drift, a rotation is performed before moving forward again. It could be possible that a false exit was detected before or PICO has drifted too much to still find the exit. Then a new full room scan is performed. <br />
<br />
PICO should avoid running into obstacles including static and dynamic objects. Therefore a function is designed that maintains a certain distance from all obstacles which is called 'bubbleRobot'. When PICO is too close to an obstacle, it will stop and move in the opposite direction. To avoid running into the obstacle again, the movement away from the obstacle is more than the distance to leave the bubble. When the robot has moved away from the obstacle, it will reevaluate its position. <br />
<br />
[[File:chart_escape_room.PNG]]<br />
<br />
<br />
==Line Segmentation==<br />
Line detection from data points is a fundamental task in many fields of science and engineering. In the case of the mobile robot, line detection algorithm is the underlying cornerstone for feature extraction, such as wall, corner and entrance detection. <br />
<br />
PICO acquires its data points via the laser range finder (LRF). The LRF outputs in one sweep 1000 data points, consisting of the distances (<math>r</math>) corresponding to particular angles (<math>\theta</math>), as shown in Figure 1. The first data point is at -2 rad and the last data point is at +2 rad. Invalid data points above 10 m and below 0.01 m are filtered out. The data points are then converted from polar coordinates to cartesian coordinates using the following geometric relations:<br />
<br />
x = <math>r</math> cos(-2 + <math>\Delta \theta</math>)<br />
<br />
and<br />
<br />
y = <math>r</math> sin(-2 + <math>\Delta \theta</math>)<br />
<br />
<math>=</math><br />
<br />
The line segmentation algorithm is based on the iterative end-point fit (IEPF) algorithm. The algorithm works as follows:<br />
<br />
1. A line is first drawn from the first data point (i_begin) to the last data point (i_end). This corresponds to -2 rad and +2 rad respectively when all data is valid, i.e. not filtered out.<br />
<br />
2. The perpendicular distances from the line are calculated for each data point between i_begin and i_end.<br />
<br />
3. The line is split at the point with the largest perpendicular distance from the line if it is above a certain threshold. <br />
<br />
4. If it is below the threshold, a line is found and the segment is stored. The algorithm goes back to point 2, but sets i_begin equal to one index further from the end of the last segment found. <br />
<br />
This is also called the split-and-merge algorithm, but merging is not done.<br />
<br />
<br />
[[File:Pico_coordinates.png|300 px|thumb|right|Figure 1: The coordinate system used with the angular limits of the LRF.]]<br />
<br />
==Entrance Detection==<br />
<br />
<br />
Laser data can be quite noisy, which can result in a false detection of the entrance when just using one scan as input. Therefore a few scans after each other are performed. The median of the estimated angle and distance towards the entrance is used to plan the motion.<br />
<br />
The entrance detection algorithm uses the slopes of the walls to detect the entrance. Firstly the walls are detected via line segmentation of which the slopes can be calculated. For each segment (wall), the slope is compared to the slope of wall that follows next and also the slope of the wall that follows the next wall. So in total 3 segments are used for the algorithm. The following are compared;<br />
- The slopes are compared to each other if they are parallel/perpendicular in a certain bound. These bounds are introduced since the walls can be not perfectly parallel or perpedicular. These bounds also determine the robustness of the algorithm. <br />
- If the end-point of a segment is in a certain bound of the begin-point of the next segment. If these points differ a lot, this most likely will be an entrance and an entrance point is calculated. <br />
<br />
If there are more segments located, it will iterate through each segment and compares its slope with the following 2 segments. If there are 2 segments located, the algorithm will check if the system is parallel. If so, the system detects it as a hallway. Based on if a hallway is detected or an interance, a entrance point is calculated between the lines.<br />
<br />
A picture: [[File:Final 60a642b090fb0d0053beef86 136379.gif|200 px|]]<br />
<br />
= Hospital Competition =<br />
<br />
= Meeting Schedule =<br />
<br />
{| class="TablePager" style="width: 90%; min-width: 240px; margin-left: 2em; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Chairman'''<br />
! scope="col" | '''Secretary'''<br />
! scope="col" | '''Summary'''<br />
|-<br />
| 26-4-2021 || - || - || Introduction meeting<br />
|-<br />
| 28-4-2021 || Boudewijn Kempers || Paul Munns || First tutor meeting, dividing tasks for Design document<br />
|-<br />
| 3-5-2021 || Boudewijn Kempers || Paul Munns || Divide coding tasks: Perception (Liang and Paul), Path planning (Saray and Stefan), Initial/Main (Boudewijn and Walter)<br />
|-<br />
| 10-5-2021 || Paul Munns || Stefan van der Palen || Show functionality of wall following robot (dumb robot), show status smart robot which uses perception to find the entrance. <br />
|-<br />
| 17-5-2021 || Stefan van der Palen || Walter MacAulay || ..<br />
|-<br />
| 26-5-2021 || Walter MacAulay || Saray Bakker || ..<br />
|-<br />
| 31-5-2021 || Saray Bakker || Boudewijn Kempers || ..<br />
|-<br />
| 7-6-2021 || Boudewijn Kempers || Paul Munns || ..<br />
|-<br />
|}</div>Thu, 20 May 2021 11:25:11 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=Talk:Mobile_Robot_Control_2021_Group_6Mobile Robot Control 2021 Group 6
http://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2021_Group_6
<p>20194019: /* Entrance Detection */</p>
<hr />
<div>== Group Members ==<br />
<br />
Stefan van der Palen - 1501054 <br/><br />
<br />
Paul Munns - 1522795 <br/><br />
<br />
Saray Bakker - 1002248 <br/><br />
<br />
Liang Oei - 1522779 <br/><br />
<br />
Boudewijn Kempers - 1398164 <br/><br />
<br />
Walter MacAulay - 1632817 <br/><br />
<br />
== Design Document ==<br />
<br />
The Design Document: [[media:MRC_Design_Document_Group6.pdf]]<br />
<br />
= Escape Room Competition =<br />
<br />
For the Escape room competition two version were build, a smarter robot and a back-up version were the robot follows the wall. For both cases a 20 Hz execution rate is used.<br />
<br />
The general structure of the smarter robot is given below. First, an initial scan is performed to find the entrance of the hallway. If an entrance is found, PICO will receive a point where it can move towards via the states 'Move entrance rotation' and 'Move entrance forward'. How the exit is determined is explained in the section 'Line segments and entrance detection'. If no entrance is detected, PICO will perform a partial rotation of 30 degrees and start scanning again for an exit. When no entrance is found after performing a full scan of the room, it is likely that the entrance is not visible from the current position of the robot. In the state 'No entrance - move to free space', PICO will move forward towards a new spot and try to locate the entrance at the new position. <br />
<br />
If an entrance is detected, PICO will rotate until it faces the entrance and move forward. Since it should be taken into account that PICO might indicate an exit where there is none, an evaluation is performed after a few steps. If the entrance is still in front of the robot, PICO keeps moving forward. If the entrance is not directly in front of PICO due to drift, a rotation is performed before moving forward again. It could be possible that a false exit was detected before or PICO has drifted too much to still find the exit. Then a new full room scan is performed. <br />
<br />
PICO should avoid running into obstacles including static and dynamic objects. Therefore a function is designed that maintains a certain distance from all obstacles which is called 'bubbleRobot'. When PICO is too close to an obstacle, it will stop and move in the opposite direction. To avoid running into the obstacle again, the movement away from the obstacle is more than the distance to leave the bubble. When the robot has moved away from the obstacle, it will reevaluate its position. <br />
<br />
[[File:chart_escape_room.PNG]]<br />
<br />
<br />
==Line Segmentation==<br />
Line detection from data points is a fundamental task in many fields of science and engineering. In the case of the mobile robot, line detection algorithm is the underlying cornerstone for feature extraction, such as wall, corner and entrance detection. <br />
<br />
PICO acquires its data points via the laser range finder (LRF). The LRF outputs in one sweep 1000 data points, consisting of the distances (<math>r</math>) corresponding to particular angles (<math>\theta</math>), as shown in Figure 1. The first data point is at -2 rad and the last data point is at +2 rad. Invalid data points above 10 m and below 0.01 m are filtered out. The data points are then converted from polar coordinates to cartesian coordinates using the following geometric relations:<br />
<br />
x = <math>r</math> cos(-2 + <math>\Delta \theta</math>)<br />
<br />
and<br />
<br />
y = <math>r</math> sin(-2 + <math>\Delta \theta</math>)<br />
<br />
<math>=</math><br />
<br />
The line segmentation algorithm is based on the iterative end-point fit (IEPF) algorithm. The algorithm works as follows:<br />
<br />
1. A line is first drawn from the first data point (i_begin) to the last data point (i_end). This corresponds to -2 rad and +2 rad respectively when all data is valid, i.e. not filtered out.<br />
<br />
2. The perpendicular distances from the line are calculated for each data point between i_begin and i_end.<br />
<br />
3. The line is split at the point with the largest perpendicular distance from the line if it is above a certain threshold. <br />
<br />
4. If it is below the threshold, a line is found and the segment is stored. The algorithm goes back to point 2, but sets i_begin equal to one index further from the end of the last segment found. <br />
<br />
This is also called the split-and-merge algorithm, but merging is not done.<br />
<br />
<br />
[[File:Pico_coordinates.png|300 px|thumb|right|Figure 1: The coordinate system used with the angular limits of the LRF.]]<br />
<br />
==Entrance Detection==<br />
<br />
<br />
Laser data can be quite noisy, which can result in a false detection of the entrance when just using one scan as input. Therefore a few scans after each other are performed. The median of the estimated angle and distance towards the entrance is used to plan the motion.<br />
<br />
The entrance detection algorithm uses the slopes of the walls to detect the entrance. Firstly the walls are detected via line segmentation of which the slopes can be calculated. For each segment (wall), the slope is compared to the slope of wall that follows next and also the slope of the wall that follows the next wall. So in total 3 segments are used for the algorithm. The following are compared;<br />
- The slopes are compared to each other if they are parallel/perpendicular in a certain bound. These bounds are introduced since the walls can be not perfectly parallel or perpedicular. These bounds also determine the robustness of the algorithm. <br />
- If the end-point of a segment is in a certain bound of the begin-point of the next segment. If these points differ a lot, this most likely will be an entrance and an entrance point is calculated. <br />
<br />
If there are more segments located, it will iterate through each segment and compares its slope with the following 2 segments. If there are 2 segments located, the algorithm will check if the system is parallel. If so, the system detects it as a hallway. Based on if a hallway is detected or an interance, a entrance point is calculated between the lines.<br />
<br />
A picture: [[File:Final 60a642b090fb0d0053beef86 136379.gif]] |200 px|<br />
<br />
= Hospital Competition =<br />
<br />
= Meeting Schedule =<br />
<br />
{| class="TablePager" style="width: 90%; min-width: 240px; margin-left: 2em; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Chairman'''<br />
! scope="col" | '''Secretary'''<br />
! scope="col" | '''Summary'''<br />
|-<br />
| 26-4-2021 || - || - || Introduction meeting<br />
|-<br />
| 28-4-2021 || Boudewijn Kempers || Paul Munns || First tutor meeting, dividing tasks for Design document<br />
|-<br />
| 3-5-2021 || Boudewijn Kempers || Paul Munns || Divide coding tasks: Perception (Liang and Paul), Path planning (Saray and Stefan), Initial/Main (Boudewijn and Walter)<br />
|-<br />
| 10-5-2021 || Paul Munns || Stefan van der Palen || Show functionality of wall following robot (dumb robot), show status smart robot which uses perception to find the entrance. <br />
|-<br />
| 17-5-2021 || Stefan van der Palen || Walter MacAulay || ..<br />
|-<br />
| 26-5-2021 || Walter MacAulay || Saray Bakker || ..<br />
|-<br />
| 31-5-2021 || Saray Bakker || Boudewijn Kempers || ..<br />
|-<br />
| 7-6-2021 || Boudewijn Kempers || Paul Munns || ..<br />
|-<br />
|}</div>Thu, 20 May 2021 11:24:53 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=Talk:Mobile_Robot_Control_2021_Group_6Mobile Robot Control 2021 Group 6
http://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2021_Group_6
<p>20194019: /* Entrance Detection */</p>
<hr />
<div>== Group Members ==<br />
<br />
Stefan van der Palen - 1501054 <br/><br />
<br />
Paul Munns - 1522795 <br/><br />
<br />
Saray Bakker - 1002248 <br/><br />
<br />
Liang Oei - 1522779 <br/><br />
<br />
Boudewijn Kempers - 1398164 <br/><br />
<br />
Walter MacAulay - 1632817 <br/><br />
<br />
== Design Document ==<br />
<br />
The Design Document: [[media:MRC_Design_Document_Group6.pdf]]<br />
<br />
= Escape Room Competition =<br />
<br />
For the Escape room competition two version were build, a smarter robot and a back-up version were the robot follows the wall. For both cases a 20 Hz execution rate is used.<br />
<br />
The general structure of the smarter robot is given below. First, an initial scan is performed to find the entrance of the hallway. If an entrance is found, PICO will receive a point where it can move towards via the states 'Move entrance rotation' and 'Move entrance forward'. How the exit is determined is explained in the section 'Line segments and entrance detection'. If no entrance is detected, PICO will perform a partial rotation of 30 degrees and start scanning again for an exit. When no entrance is found after performing a full scan of the room, it is likely that the entrance is not visible from the current position of the robot. In the state 'No entrance - move to free space', PICO will move forward towards a new spot and try to locate the entrance at the new position. <br />
<br />
If an entrance is detected, PICO will rotate until it faces the entrance and move forward. Since it should be taken into account that PICO might indicate an exit where there is none, an evaluation is performed after a few steps. If the entrance is still in front of the robot, PICO keeps moving forward. If the entrance is not directly in front of PICO due to drift, a rotation is performed before moving forward again. It could be possible that a false exit was detected before or PICO has drifted too much to still find the exit. Then a new full room scan is performed. <br />
<br />
PICO should avoid running into obstacles including static and dynamic objects. Therefore a function is designed that maintains a certain distance from all obstacles which is called 'bubbleRobot'. When PICO is too close to an obstacle, it will stop and move in the opposite direction. To avoid running into the obstacle again, the movement away from the obstacle is more than the distance to leave the bubble. When the robot has moved away from the obstacle, it will reevaluate its position. <br />
<br />
[[File:chart_escape_room.PNG]]<br />
<br />
<br />
==Line Segmentation==<br />
Line detection from data points is a fundamental task in many fields of science and engineering. In the case of the mobile robot, line detection algorithm is the underlying cornerstone for feature extraction, such as wall, corner and entrance detection. <br />
<br />
PICO acquires its data points via the laser range finder (LRF). The LRF outputs in one sweep 1000 data points, consisting of the distances (<math>r</math>) corresponding to particular angles (<math>\theta</math>), as shown in Figure 1. The first data point is at -2 rad and the last data point is at +2 rad. Invalid data points above 10 m and below 0.01 m are filtered out. The data points are then converted from polar coordinates to cartesian coordinates using the following geometric relations:<br />
<br />
x = <math>r</math> cos(-2 + <math>\Delta \theta</math>)<br />
<br />
and<br />
<br />
y = <math>r</math> sin(-2 + <math>\Delta \theta</math>)<br />
<br />
<math>=</math><br />
<br />
The line segmentation algorithm is based on the iterative end-point fit (IEPF) algorithm. The algorithm works as follows:<br />
<br />
1. A line is first drawn from the first data point (i_begin) to the last data point (i_end). This corresponds to -2 rad and +2 rad respectively when all data is valid, i.e. not filtered out.<br />
<br />
2. The perpendicular distances from the line are calculated for each data point between i_begin and i_end.<br />
<br />
3. The line is split at the point with the largest perpendicular distance from the line if it is above a certain threshold. <br />
<br />
4. If it is below the threshold, a line is found and the segment is stored. The algorithm goes back to point 2, but sets i_begin equal to one index further from the end of the last segment found. <br />
<br />
This is also called the split-and-merge algorithm, but merging is not done.<br />
<br />
<br />
[[File:Pico_coordinates.png|300 px|thumb|right|Figure 1: The coordinate system used with the angular limits of the LRF.]]<br />
<br />
==Entrance Detection==<br />
<br />
<br />
Laser data can be quite noisy, which can result in a false detection of the entrance when just using one scan as input. Therefore a few scans after each other are performed. The median of the estimated angle and distance towards the entrance is used to plan the motion.<br />
<br />
The entrance detection algorithm uses the slopes of the walls to detect the entrance. Firstly the walls are detected via line segmentation of which the slopes can be calculated. For each segment (wall), the slope is compared to the slope of wall that follows next and also the slope of the wall that follows the next wall. So in total 3 segments are used for the algorithm. The following are compared;<br />
- The slopes are compared to each other if they are parallel/perpendicular in a certain bound. These bounds are introduced since the walls can be not perfectly parallel or perpedicular. These bounds also determine the robustness of the algorithm. <br />
- If the end-point of a segment is in a certain bound of the begin-point of the next segment. If these points differ a lot, this most likely will be an entrance and an entrance point is calculated. <br />
<br />
If there are more segments located, it will iterate through each segment and compares its slope with the following 2 segments. If there are 2 segments located, the algorithm will check if the system is parallel. If so, the system detects it as a hallway. Based on if a hallway is detected or an interance, a entrance point is calculated between the lines.<br />
<br />
A picture: [[File:Final 60a642b090fb0d0053beef86 136379.gif] |200 px|]<br />
<br />
= Hospital Competition =<br />
<br />
= Meeting Schedule =<br />
<br />
{| class="TablePager" style="width: 90%; min-width: 240px; margin-left: 2em; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Chairman'''<br />
! scope="col" | '''Secretary'''<br />
! scope="col" | '''Summary'''<br />
|-<br />
| 26-4-2021 || - || - || Introduction meeting<br />
|-<br />
| 28-4-2021 || Boudewijn Kempers || Paul Munns || First tutor meeting, dividing tasks for Design document<br />
|-<br />
| 3-5-2021 || Boudewijn Kempers || Paul Munns || Divide coding tasks: Perception (Liang and Paul), Path planning (Saray and Stefan), Initial/Main (Boudewijn and Walter)<br />
|-<br />
| 10-5-2021 || Paul Munns || Stefan van der Palen || Show functionality of wall following robot (dumb robot), show status smart robot which uses perception to find the entrance. <br />
|-<br />
| 17-5-2021 || Stefan van der Palen || Walter MacAulay || ..<br />
|-<br />
| 26-5-2021 || Walter MacAulay || Saray Bakker || ..<br />
|-<br />
| 31-5-2021 || Saray Bakker || Boudewijn Kempers || ..<br />
|-<br />
| 7-6-2021 || Boudewijn Kempers || Paul Munns || ..<br />
|-<br />
|}</div>Thu, 20 May 2021 11:24:42 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=Talk:Mobile_Robot_Control_2021_Group_6Mobile Robot Control 2021 Group 6
http://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2021_Group_6
<p>20194019: /* Entrance Detection */</p>
<hr />
<div>== Group Members ==<br />
<br />
Stefan van der Palen - 1501054 <br/><br />
<br />
Paul Munns - 1522795 <br/><br />
<br />
Saray Bakker - 1002248 <br/><br />
<br />
Liang Oei - 1522779 <br/><br />
<br />
Boudewijn Kempers - 1398164 <br/><br />
<br />
Walter MacAulay - 1632817 <br/><br />
<br />
== Design Document ==<br />
<br />
The Design Document: [[media:MRC_Design_Document_Group6.pdf]]<br />
<br />
= Escape Room Competition =<br />
<br />
For the Escape room competition two version were build, a smarter robot and a back-up version were the robot follows the wall. For both cases a 20 Hz execution rate is used.<br />
<br />
The general structure of the smarter robot is given below. First, an initial scan is performed to find the entrance of the hallway. If an entrance is found, PICO will receive a point where it can move towards via the states 'Move entrance rotation' and 'Move entrance forward'. How the exit is determined is explained in the section 'Line segments and entrance detection'. If no entrance is detected, PICO will perform a partial rotation of 30 degrees and start scanning again for an exit. When no entrance is found after performing a full scan of the room, it is likely that the entrance is not visible from the current position of the robot. In the state 'No entrance - move to free space', PICO will move forward towards a new spot and try to locate the entrance at the new position. <br />
<br />
If an entrance is detected, PICO will rotate until it faces the entrance and move forward. Since it should be taken into account that PICO might indicate an exit where there is none, an evaluation is performed after a few steps. If the entrance is still in front of the robot, PICO keeps moving forward. If the entrance is not directly in front of PICO due to drift, a rotation is performed before moving forward again. It could be possible that a false exit was detected before or PICO has drifted too much to still find the exit. Then a new full room scan is performed. <br />
<br />
PICO should avoid running into obstacles including static and dynamic objects. Therefore a function is designed that maintains a certain distance from all obstacles which is called 'bubbleRobot'. When PICO is too close to an obstacle, it will stop and move in the opposite direction. To avoid running into the obstacle again, the movement away from the obstacle is more than the distance to leave the bubble. When the robot has moved away from the obstacle, it will reevaluate its position. <br />
<br />
[[File:chart_escape_room.PNG]]<br />
<br />
<br />
==Line Segmentation==<br />
Line detection from data points is a fundamental task in many fields of science and engineering. In the case of the mobile robot, line detection algorithm is the underlying cornerstone for feature extraction, such as wall, corner and entrance detection. <br />
<br />
PICO acquires its data points via the laser range finder (LRF). The LRF outputs in one sweep 1000 data points, consisting of the distances (<math>r</math>) corresponding to particular angles (<math>\theta</math>), as shown in Figure 1. The first data point is at -2 rad and the last data point is at +2 rad. Invalid data points above 10 m and below 0.01 m are filtered out. The data points are then converted from polar coordinates to cartesian coordinates using the following geometric relations:<br />
<br />
x = <math>r</math> cos(-2 + <math>\Delta \theta</math>)<br />
<br />
and<br />
<br />
y = <math>r</math> sin(-2 + <math>\Delta \theta</math>)<br />
<br />
<math>=</math><br />
<br />
The line segmentation algorithm is based on the iterative end-point fit (IEPF) algorithm. The algorithm works as follows:<br />
<br />
1. A line is first drawn from the first data point (i_begin) to the last data point (i_end). This corresponds to -2 rad and +2 rad respectively when all data is valid, i.e. not filtered out.<br />
<br />
2. The perpendicular distances from the line are calculated for each data point between i_begin and i_end.<br />
<br />
3. The line is split at the point with the largest perpendicular distance from the line if it is above a certain threshold. <br />
<br />
4. If it is below the threshold, a line is found and the segment is stored. The algorithm goes back to point 2, but sets i_begin equal to one index further from the end of the last segment found. <br />
<br />
This is also called the split-and-merge algorithm, but merging is not done.<br />
<br />
<br />
[[File:Pico_coordinates.png|300 px|thumb|right|Figure 1: The coordinate system used with the angular limits of the LRF.]]<br />
<br />
==Entrance Detection==<br />
<br />
<br />
Laser data can be quite noisy, which can result in a false detection of the entrance when just using one scan as input. Therefore a few scans after each other are performed. The median of the estimated angle and distance towards the entrance is used to plan the motion.<br />
<br />
The entrance detection algorithm uses the slopes of the walls to detect the entrance. Firstly the walls are detected via line segmentation of which the slopes can be calculated. For each segment (wall), the slope is compared to the slope of wall that follows next and also the slope of the wall that follows the next wall. So in total 3 segments are used for the algorithm. The following are compared;<br />
- The slopes are compared to each other if they are parallel/perpendicular in a certain bound. These bounds are introduced since the walls can be not perfectly parallel or perpedicular. These bounds also determine the robustness of the algorithm. <br />
- If the end-point of a segment is in a certain bound of the begin-point of the next segment. If these points differ a lot, this most likely will be an entrance and an entrance point is calculated. <br />
<br />
If there are more segments located, it will iterate through each segment and compares its slope with the following 2 segments. If there are 2 segments located, the algorithm will check if the system is parallel. If so, the system detects it as a hallway. Based on if a hallway is detected or an interance, a entrance point is calculated between the lines.<br />
<br />
A picture: [[File:Final 60a642b090fb0d0053beef86 136379.gif]]<br />
<br />
= Hospital Competition =<br />
<br />
= Meeting Schedule =<br />
<br />
{| class="TablePager" style="width: 90%; min-width: 240px; margin-left: 2em; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Chairman'''<br />
! scope="col" | '''Secretary'''<br />
! scope="col" | '''Summary'''<br />
|-<br />
| 26-4-2021 || - || - || Introduction meeting<br />
|-<br />
| 28-4-2021 || Boudewijn Kempers || Paul Munns || First tutor meeting, dividing tasks for Design document<br />
|-<br />
| 3-5-2021 || Boudewijn Kempers || Paul Munns || Divide coding tasks: Perception (Liang and Paul), Path planning (Saray and Stefan), Initial/Main (Boudewijn and Walter)<br />
|-<br />
| 10-5-2021 || Paul Munns || Stefan van der Palen || Show functionality of wall following robot (dumb robot), show status smart robot which uses perception to find the entrance. <br />
|-<br />
| 17-5-2021 || Stefan van der Palen || Walter MacAulay || ..<br />
|-<br />
| 26-5-2021 || Walter MacAulay || Saray Bakker || ..<br />
|-<br />
| 31-5-2021 || Saray Bakker || Boudewijn Kempers || ..<br />
|-<br />
| 7-6-2021 || Boudewijn Kempers || Paul Munns || ..<br />
|-<br />
|}</div>Thu, 20 May 2021 11:24:06 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=Talk:Mobile_Robot_Control_2021_Group_6Mobile Robot Control 2021 Group 6
http://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2021_Group_6
<p>20194019: /* Entrance Detection */</p>
<hr />
<div>== Group Members ==<br />
<br />
Stefan van der Palen - 1501054 <br/><br />
<br />
Paul Munns - 1522795 <br/><br />
<br />
Saray Bakker - 1002248 <br/><br />
<br />
Liang Oei - 1522779 <br/><br />
<br />
Boudewijn Kempers - 1398164 <br/><br />
<br />
Walter MacAulay - 1632817 <br/><br />
<br />
== Design Document ==<br />
<br />
The Design Document: [[media:MRC_Design_Document_Group6.pdf]]<br />
<br />
= Escape Room Competition =<br />
<br />
For the Escape room competition two version were build, a smarter robot and a back-up version were the robot follows the wall. For both cases a 20 Hz execution rate is used.<br />
<br />
The general structure of the smarter robot is given below. First, an initial scan is performed to find the entrance of the hallway. If an entrance is found, PICO will receive a point where it can move towards via the states 'Move entrance rotation' and 'Move entrance forward'. How the exit is determined is explained in the section 'Line segments and entrance detection'. If no entrance is detected, PICO will perform a partial rotation of 30 degrees and start scanning again for an exit. When no entrance is found after performing a full scan of the room, it is likely that the entrance is not visible from the current position of the robot. In the state 'No entrance - move to free space', PICO will move forward towards a new spot and try to locate the entrance at the new position. <br />
<br />
If an entrance is detected, PICO will rotate until it faces the entrance and move forward. Since it should be taken into account that PICO might indicate an exit where there is none, an evaluation is performed after a few steps. If the entrance is still in front of the robot, PICO keeps moving forward. If the entrance is not directly in front of PICO due to drift, a rotation is performed before moving forward again. It could be possible that a false exit was detected before or PICO has drifted too much to still find the exit. Then a new full room scan is performed. <br />
<br />
PICO should avoid running into obstacles including static and dynamic objects. Therefore a function is designed that maintains a certain distance from all obstacles which is called 'bubbleRobot'. When PICO is too close to an obstacle, it will stop and move in the opposite direction. To avoid running into the obstacle again, the movement away from the obstacle is more than the distance to leave the bubble. When the robot has moved away from the obstacle, it will reevaluate its position. <br />
<br />
[[File:chart_escape_room.PNG]]<br />
<br />
<br />
==Line Segmentation==<br />
Line detection from data points is a fundamental task in many fields of science and engineering. In the case of the mobile robot, line detection algorithm is the underlying cornerstone for feature extraction, such as wall, corner and entrance detection. <br />
<br />
PICO acquires its data points via the laser range finder (LRF). The LRF outputs in one sweep 1000 data points, consisting of the distances (<math>r</math>) corresponding to particular angles (<math>\theta</math>), as shown in Figure 1. The first data point is at -2 rad and the last data point is at +2 rad. Invalid data points above 10 m and below 0.01 m are filtered out. The data points are then converted from polar coordinates to cartesian coordinates using the following geometric relations:<br />
<br />
x = <math>r</math> cos(-2 + <math>\Delta \theta</math>)<br />
<br />
and<br />
<br />
y = <math>r</math> sin(-2 + <math>\Delta \theta</math>)<br />
<br />
<math>=</math><br />
<br />
The line segmentation algorithm is based on the iterative end-point fit (IEPF) algorithm. The algorithm works as follows:<br />
<br />
1. A line is first drawn from the first data point (i_begin) to the last data point (i_end). This corresponds to -2 rad and +2 rad respectively when all data is valid, i.e. not filtered out.<br />
<br />
2. The perpendicular distances from the line are calculated for each data point between i_begin and i_end.<br />
<br />
3. The line is split at the point with the largest perpendicular distance from the line if it is above a certain threshold. <br />
<br />
4. If it is below the threshold, a line is found and the segment is stored. The algorithm goes back to point 2, but sets i_begin equal to one index further from the end of the last segment found. <br />
<br />
This is also called the split-and-merge algorithm, but merging is not done.<br />
<br />
<br />
[[File:Pico_coordinates.png|300 px|thumb|right|Figure 1: The coordinate system used with the angular limits of the LRF.]]<br />
<br />
==Entrance Detection==<br />
<br />
<br />
Laser data can be quite noisy, which can result in a false detection of the entrance when just using one scan as input. Therefore a few scans after each other are performed. The median of the estimated angle and distance towards the entrance is used to plan the motion.<br />
<br />
The entrance detection algorithm uses the slopes of the walls to detect the entrance. Firstly the walls are detected via line segmentation of which the slopes can be calculated. For each segment (wall), the slope is compared to the slope of wall that follows next and also the slope of the wall that follows the next wall. So in total 3 segments are used for the algorithm. The following are compared;<br />
- The slopes are compared to each other if they are parallel/perpendicular in a certain bound. These bounds are introduced since the walls can be not perfectly parallel or perpedicular. These bounds also determine the robustness of the algorithm. <br />
- If the end-point of a segment is in a certain bound of the begin-point of the next segment. If these points differ a lot, this most likely will be an entrance and an entrance point is calculated. <br />
<br />
If there are more segments located, it will iterate through each segment and compares its slope with the following 2 segments. If there are 2 segments located, the algorithm will check if the system is parallel. If so, the system detects it as a hallway. Based on if a hallway is detected or an interance, a entrance point is calculated between the lines.<br />
<br />
A picture: [[Final 60a642b090fb0d0053beef86 136379.gif]]<br />
<br />
= Hospital Competition =<br />
<br />
= Meeting Schedule =<br />
<br />
{| class="TablePager" style="width: 90%; min-width: 240px; margin-left: 2em; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Chairman'''<br />
! scope="col" | '''Secretary'''<br />
! scope="col" | '''Summary'''<br />
|-<br />
| 26-4-2021 || - || - || Introduction meeting<br />
|-<br />
| 28-4-2021 || Boudewijn Kempers || Paul Munns || First tutor meeting, dividing tasks for Design document<br />
|-<br />
| 3-5-2021 || Boudewijn Kempers || Paul Munns || Divide coding tasks: Perception (Liang and Paul), Path planning (Saray and Stefan), Initial/Main (Boudewijn and Walter)<br />
|-<br />
| 10-5-2021 || Paul Munns || Stefan van der Palen || Show functionality of wall following robot (dumb robot), show status smart robot which uses perception to find the entrance. <br />
|-<br />
| 17-5-2021 || Stefan van der Palen || Walter MacAulay || ..<br />
|-<br />
| 26-5-2021 || Walter MacAulay || Saray Bakker || ..<br />
|-<br />
| 31-5-2021 || Saray Bakker || Boudewijn Kempers || ..<br />
|-<br />
| 7-6-2021 || Boudewijn Kempers || Paul Munns || ..<br />
|-<br />
|}</div>Thu, 20 May 2021 11:22:25 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=Talk:Mobile_Robot_Control_2021_Group_6File:Final 60a642b090fb0d0053beef86 136379.gif
http://cstwiki.wtb.tue.nl/index.php?title=File:Final_60a642b090fb0d0053beef86_136379.gif
<p>20194019: </p>
<hr />
<div></div>Thu, 20 May 2021 11:20:21 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=File_talk:Final_60a642b090fb0d0053beef86_136379.gifMobile Robot Control 2021 Group 6
http://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2021_Group_6
<p>20194019: /* Entrance Detection */</p>
<hr />
<div>== Group Members ==<br />
<br />
Stefan van der Palen - 1501054 <br/><br />
<br />
Paul Munns - 1522795 <br/><br />
<br />
Saray Bakker - 1002248 <br/><br />
<br />
Liang Oei - 1522779 <br/><br />
<br />
Boudewijn Kempers - 1398164 <br/><br />
<br />
Walter MacAulay - 1632817 <br/><br />
<br />
== Design Document ==<br />
<br />
The Design Document: [[media:MRC_Design_Document_Group6.pdf]]<br />
<br />
= Escape Room Competition =<br />
<br />
For the Escape room competition two version were build, a smarter robot and a back-up version were the robot follows the wall. For both cases a 20 Hz execution rate is used.<br />
<br />
The general structure of the smarter robot is given below. First, an initial scan is performed to find the entrance of the hallway. If an entrance is found, PICO will receive a point where it can move towards via the states 'Move entrance rotation' and 'Move entrance forward'. How the exit is determined is explained in the section 'Line segments and entrance detection'. If no entrance is detected, PICO will perform a partial rotation of 30 degrees and start scanning again for an exit. When no entrance is found after performing a full scan of the room, it is likely that the entrance is not visible from the current position of the robot. In the state 'No entrance - move to free space', PICO will move forward towards a new spot and try to locate the entrance at the new position. <br />
<br />
If an entrance is detected, PICO will rotate until it faces the entrance and move forward. Since it should be taken into account that PICO might indicate an exit where there is none, an evaluation is performed after a few steps. If the entrance is still in front of the robot, PICO keeps moving forward. If the entrance is not directly in front of PICO due to drift, a rotation is performed before moving forward again. It could be possible that a false exit was detected before or PICO has drifted too much to still find the exit. Then a new full room scan is performed. <br />
<br />
PICO should avoid running into obstacles including static and dynamic objects. Therefore a function is designed that maintains a certain distance from all obstacles which is called 'bubbleRobot'. When PICO is too close to an obstacle, it will stop and move in the opposite direction. To avoid running into the obstacle again, the movement away from the obstacle is more than the distance to leave the bubble. When the robot has moved away from the obstacle, it will reevaluate its position. <br />
<br />
[[File:chart_escape_room.PNG]]<br />
<br />
<br />
==Line Segmentation==<br />
Line detection from data points is a fundamental task in many fields of science and engineering. In the case of the mobile robot, line detection algorithm is the underlying cornerstone for feature extraction, such as wall, corner and entrance detection. <br />
<br />
PICO acquires its data points via the laser range finder (LRF). The LRF outputs in one sweep 1000 data points, consisting of the distances (<math>r</math>) corresponding to particular angles (<math>\theta</math>), as shown in Figure 1. The first data point is at -2 rad and the last data point is at +2 rad. Invalid data points above 10 m and below 0.01 m are filtered out. The data points are then converted from polar coordinates to cartesian coordinates using the following geometric relations:<br />
<br />
x = <math>r</math> cos(-2 + <math>\Delta \theta</math>)<br />
<br />
and<br />
<br />
y = <math>r</math> sin(-2 + <math>\Delta \theta</math>)<br />
<br />
<math>=</math><br />
<br />
The line segmentation algorithm is based on the iterative end-point fit (IEPF) algorithm. The algorithm works as follows:<br />
<br />
1. A line is first drawn from the first data point (i_begin) to the last data point (i_end). This corresponds to -2 rad and +2 rad respectively when all data is valid, i.e. not filtered out.<br />
<br />
2. The perpendicular distances from the line are calculated for each data point between i_begin and i_end.<br />
<br />
3. The line is split at the point with the largest perpendicular distance from the line if it is above a certain threshold. <br />
<br />
4. If it is below the threshold, a line is found and the segment is stored. The algorithm goes back to point 2, but sets i_begin equal to one index further from the end of the last segment found. <br />
<br />
This is also called the split-and-merge algorithm, but merging is not done.<br />
<br />
<br />
[[File:Pico_coordinates.png|300 px|thumb|right|Figure 1: The coordinate system used with the angular limits of the LRF.]]<br />
<br />
==Entrance Detection==<br />
<br />
<br />
Laser data can be quite noisy, which can result in a false detection of the entrance when just using one scan as input. Therefore a few scans after each other are performed. The median of the estimated angle and distance towards the entrance is used to plan the motion.<br />
<br />
The entrance detection algorithm uses the slopes of the walls to detect the entrance. Firstly the walls are detected via line segmentation of which the slopes can be calculated. For each segment (wall), the slope is compared to the slope of wall that follows next and also the slope of the wall that follows the next wall. So in total 3 segments are used for the algorithm. The following are compared;<br />
- The slopes are compared to each other if they are parallel/perpendicular in a certain bound. These bounds are introduced since the walls can be not perfectly parallel or perpedicular. These bounds also determine the robustness of the algorithm. <br />
- If the end-point of a segment is in a certain bound of the begin-point of the next segment. If these points differ a lot, this most likely will be an entrance and an entrance point is calculated. <br />
<br />
If there are more segments located, it will iterate through each segment and compares its slope with the following 2 segments. If there are 2 segments located, the algorithm will check if the system is parallel. If so, the system detects it as a hallway. Based on if a hallway is detected or an interance, a entrance point is calculated between the lines.<br />
<br />
= Hospital Competition =<br />
<br />
= Meeting Schedule =<br />
<br />
{| class="TablePager" style="width: 90%; min-width: 240px; margin-left: 2em; color: black;"<br />
|-<br />
! scope="col" | '''Date'''<br />
! scope="col" | '''Chairman'''<br />
! scope="col" | '''Secretary'''<br />
! scope="col" | '''Summary'''<br />
|-<br />
| 26-4-2021 || - || - || Introduction meeting<br />
|-<br />
| 28-4-2021 || Boudewijn Kempers || Paul Munns || First tutor meeting, dividing tasks for Design document<br />
|-<br />
| 3-5-2021 || Boudewijn Kempers || Paul Munns || Divide coding tasks: Perception (Liang and Paul), Path planning (Saray and Stefan), Initial/Main (Boudewijn and Walter)<br />
|-<br />
| 10-5-2021 || Paul Munns || Stefan van der Palen || Show functionality of wall following robot (dumb robot), show status smart robot which uses perception to find the entrance. <br />
|-<br />
| 17-5-2021 || Stefan van der Palen || Walter MacAulay || ..<br />
|-<br />
| 26-5-2021 || Walter MacAulay || Saray Bakker || ..<br />
|-<br />
| 31-5-2021 || Saray Bakker || Boudewijn Kempers || ..<br />
|-<br />
| 7-6-2021 || Boudewijn Kempers || Paul Munns || ..<br />
|-<br />
|}</div>Thu, 20 May 2021 11:13:00 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=Talk:Mobile_Robot_Control_2021_Group_6Mobile Robot Control 2021 Group 6
http://cstwiki.wtb.tue.nl/index.php?title=Mobile_Robot_Control_2021_Group_6
<p>20194019: </p>
<hr />
<div>Stefan van der Palen 1501054<br />
<br />
Paul Munns 1522795</div>Wed, 21 Apr 2021 15:16:31 GMT20194019http://cstwiki.wtb.tue.nl/index.php?title=Talk:Mobile_Robot_Control_2021_Group_6