Embedded Motion Control 2015 Group 3/Scan: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
Line 16: Line 16:
=== Collision avoidance ===
=== Collision avoidance ===


The first level of saftey is provided by the potential field algoritm. Its resultant vector will always point towards the direction with the most room and therefore it is sufficient as first layer. However, avoidance collision is one of the top priorities since if Pico bumps into the wall the attempt of solving the maze is over. Another safety layer has been implemented to prevent the robot hitting walls or corners. The distance to the wals is continuosly measured and compared to a set safety margin. If the distance of multiple coextensive beams is smaller than this fixed parameter the robot will move in the oppositie direction.
The first level of saftey is provided by the potential field algoritm. Its resultant vector will always point towards the direction with the most room and therefore it is sufficient as first layer. However, avoidance collision is one of the top priorities since if Pico bumps into the wall the attempt of solving the maze is over. Another safety layer has been implemented to prevent the robot hitting walls or corners. The distance to the wals is continuosly measured and compared to a set safety margin. If the distance of multiple coextensive beams is smaller than this fixed parameter the robot will move in the opposite direction.


[[File:collision.gif|400px|thumb|center|Figure 1) PICO detecting doors, top images showing how pico detects doors/dead ends in front. The middle images show PICO detecting a door/dead ends on the right side. Bottom images showing PICO detecting incoming doors/dead ends]]
[[File:collision.gif|400px|thumb|center|Figure 1) Pico using collision avoidance]]


=== Detection intersections ===
=== Detection intersections ===

Revision as of 12:55, 23 June 2015

Scan

This page is part of the EMC03 CST-wiki.

In order to solve the maze, the robot needs to be able to drive autonomously. One type of data that is available is the laser range finder data. The PICO robot has a 270 degrees view, with approximately thousand beams.

Potential field

By splitting up the received laser data from the LRF in x and y, and summing them up results in a large vector containing the appropiate angle for PICO to follow. In other words, PICO moves always to the point with the most room. Note, the actual magnitude of this resultant vector is of no importance, since the Drive block has is own conditions for velocity.

In straight corridors potential field will let PICO drive in the middle in a robust manner. In the case that PICO approaches a T-junction or intersection a decision must be made by the decision maker

Since, there are more than one options at intersections. There has to be an extra element to send the robot in the appropriate direction. This is done, by blocking the other directions with virtual walls. In principle an extra layer has been added with the modified laser range finder data that PICO sees. From there on the potential field will do its work and PICO will drive in its desired direction.

The potential field function will perceive this virtual walls as real walls. Therefore, PICO will avoid these 'walls' and drive into the desired corridor. The 'decision maker' in combination with the 'mapping algorithm' will decide were to place the virtual walls.

Collision avoidance

The first level of saftey is provided by the potential field algoritm. Its resultant vector will always point towards the direction with the most room and therefore it is sufficient as first layer. However, avoidance collision is one of the top priorities since if Pico bumps into the wall the attempt of solving the maze is over. Another safety layer has been implemented to prevent the robot hitting walls or corners. The distance to the wals is continuosly measured and compared to a set safety margin. If the distance of multiple coextensive beams is smaller than this fixed parameter the robot will move in the opposite direction.

Figure 1) Pico using collision avoidance

Detection intersections

At this stage the basic skill of driving with the potential field based on LRF data is complete. Next, the different type of junctions and intersections must be recognized in order to solve the maze. Not only is recognition necassary for driving through the maze, it is also a important part of mapping the maze, see Mapping.

Since the maze is axis alligned there are three possibilites:

  1. Crossroad
  2. T-junction
  3. Open space

The first two cases are detected by taking n+10 and n-10 and looking if they differ more than 30 centimer, in that case there is a corridor. By using this simple but very effective method left and right corridors can be distinguished. Next, detecting if there is a corridor in front. This is done by adding up multiple beams in the front and diving them by the number of beams. If this differs more than a set value with the middle one, there is a corridor.

Open space

When 80% of the LRF data is larger than 1 meter PICO knows it is in a open space and therefore it starts wall hugging in order to find the exit. Pico will stop this procedure if the corridor is equal or smaller than 1.5 meter, which is the maximum size of a corridor.

Constructing virtual walls

Constructing virtual walls is an essential part of driving PICO around the maze. First individual virtual walls were constructed therefore blocking potential corridors, which lead PICO into the desired direction. At a later stage this idea was slightly modified by computing a wall on a radius; therefore, PICO will move more smoothly through a corner.


Crossroad

Consider an crossroad shown in the picture below, the left plot shows what pico sees when approaching this kind of junction. There are three maxima, which represent the possible directions PICO can go to. By slightly modifying the data the actual vision as seen in the simulator can be constructed, shown in (b). In Figure 1 two minima are shown that represent the far corners between the three maxima. These provide pico with reference points from where the virtual walls are constructed. Dependent on the direction of the desired turn the corner is used as a reference point for computing the radius where the virtual walls are set.

Figure 1) The LRF data from PICO, (a) showing the data pico retrieves in this case 3 maxima and 2 minima, (b) showing the slightly modified data to show the actual corridorsIn blue the original LRF data and in red the adjusted wall making LRF data. On the left the data PICO sees and on the right the modified data to recognize the corridors better as a human
T-junction

Now a T-junction is further examined, Figure 2 (a) shows what pico sees in this case. The figure shows two maxima with in between a minima. These two maxima are used as bounds for finding the minima. When the robot turn it is hard to keep a reference point and therefore this is a good method of finding the reference point, which is a minima in this case, to construct the virtual walls.

Figure 2) The LRF data from PICO, (a) showing the data pico retrieves in this case 2 maxima and 1 minima, (b) showing the slightly modified data to show the actual corridorsIn blue the original LRF data and in red the adjusted wall making LRF data. On the left the data PICO sees and on the right the modified data to recognize the corridors better as a human

In the case of a T-junction the situation is slightly different, in this case using the above method the minima will not represent a corner. However locating this minima is usefull, dependent on the kind of turn, 100+n[minimum] or 100-n[minimum], a radius is computed which will represent the virtual wall.

Door Detection

Figure 3) PICO detecting doors, top images showing how pico detects doors/dead ends in front. The middle images show PICO detecting a door/dead ends on the right side. Bottom images showing PICO detecting incoming doors/dead ends