Embedded Motion Control 2015 Group 3/Drive: Difference between revisions
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
This page is part of the [http://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015_Group_3 EMC03 CST-wiki]. | This page is part of the [http://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015_Group_3 EMC03 CST-wiki]. | ||
== | == Potential field == | ||
== Collision avoidance == | |||
This is a function that is used to drive through corridors without touching the walls. The function measures the nearest wall and identifies whether it is on its left or right side. There is set a margin in order to avoid a collision. This margin determines when PICO has to adjust its direction. When for instance, a wall on the left is closer than the margin, PICO has to move to the right. | |||
== | == Old drive methods == | ||
The | Before, we had decided that we were going to use potential field driving, we had two other options. These two options use the same method for driving through straight corridors but use a different approach to taking corners. We called the first one the 'simple method'. Basically, this method is developted as a back-up plan. The second approach uses path planning to drive around corners. | ||
=== Drive through straight corridors === | |||
With this idea going straight in a corridor is done by checking the closest points at the left-hand and right-hand side of the corridor. Since this will be where the wall is perpendicular to the robot, it checks what the right angle for driving should be (difference between left and right angle). Then, it calculates the deviation from the centerline of the corridor, and based on a desired forward speed, it calculates a movement vector. Finally, it translates this vector to the robot driving coordinates. It should be noted that the Drive class is not responsible for deciding whether it is driving in a corridor, so this particular algorithm is not robust for corners, intersections etc. In the next subsections the old methods to handle corners are discussed. | |||
=== Simple method === | |||
The first approach is the most simple one; this also means that is not the most fancy one. However, it is still important to have this working because we can always use this method when the other methods fail. In addition, we have learned a lot from it and used is as base for the other methods. | |||
In brief, the simple method contains 3 steps: | In brief, the simple method contains 3 steps: | ||
Line 18: | Line 24: | ||
== Path planning for turning == | == Path planning for turning == | ||
The path planning is the second method that we worked on. | The path planning is the second method that we worked on. Path planning can be used when PICO approaches an intersection. Assume that PICO has to go left on a T-juntion; then only collision avoidance will not be sufficient anymore. So, for instance 0.2 meter before the corner the ideal path to drive around the corner is calculated. This means that Vx, Vy, Va and the time (for turning) have to be determined on that particular moment. Then basically, | ||
* Driving straight stops; | * Driving straight stops; | ||
* Turning with the determined Vx, Vy and Va for the associated time to drive around the corner; | * Turning with the determined Vx, Vy and Va for the associated time to drive around the corner; |
Revision as of 11:18, 23 June 2015
Drive
This page is part of the EMC03 CST-wiki.
Potential field
Collision avoidance
This is a function that is used to drive through corridors without touching the walls. The function measures the nearest wall and identifies whether it is on its left or right side. There is set a margin in order to avoid a collision. This margin determines when PICO has to adjust its direction. When for instance, a wall on the left is closer than the margin, PICO has to move to the right.
Old drive methods
Before, we had decided that we were going to use potential field driving, we had two other options. These two options use the same method for driving through straight corridors but use a different approach to taking corners. We called the first one the 'simple method'. Basically, this method is developted as a back-up plan. The second approach uses path planning to drive around corners.
Drive through straight corridors
With this idea going straight in a corridor is done by checking the closest points at the left-hand and right-hand side of the corridor. Since this will be where the wall is perpendicular to the robot, it checks what the right angle for driving should be (difference between left and right angle). Then, it calculates the deviation from the centerline of the corridor, and based on a desired forward speed, it calculates a movement vector. Finally, it translates this vector to the robot driving coordinates. It should be noted that the Drive class is not responsible for deciding whether it is driving in a corridor, so this particular algorithm is not robust for corners, intersections etc. In the next subsections the old methods to handle corners are discussed.
Simple method
The first approach is the most simple one; this also means that is not the most fancy one. However, it is still important to have this working because we can always use this method when the other methods fail. In addition, we have learned a lot from it and used is as base for the other methods.
In brief, the simple method contains 3 steps:
- Drive to corridor without collision.
- Detect opening (left of right) and stop in front of it.
- Turn 90 degrees and start driving again.
This method is a robust way to pass the corridor challenge. Although, it would not be the fastest way.
Path planning for turning
The path planning is the second method that we worked on. Path planning can be used when PICO approaches an intersection. Assume that PICO has to go left on a T-juntion; then only collision avoidance will not be sufficient anymore. So, for instance 0.2 meter before the corner the ideal path to drive around the corner is calculated. This means that Vx, Vy, Va and the time (for turning) have to be determined on that particular moment. Then basically,
- Driving straight stops;
- Turning with the determined Vx, Vy and Va for the associated time to drive around the corner;
- Driving straight again.
In practice, this method turned out to be very hard. Because it is difficult to determine the right values for the variables.