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

From Control Systems Technology Group
Jump to navigation Jump to search
No edit summary
 
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= Archive =
ksajdfkjdsakjfkjakjfdkajkfjadkfdjfkajdakjffdsakjfakjadsf
This page is part of the [http://cstwiki.wtb.tue.nl/index.php?title=Embedded_Motion_Control_2015_Group_3 EMC03 CST-wiki].
kajdfkjdakdakjf
kdasjfjdakfajkaj
akjsdfffffffffdddddddddddddddddddddddddddddddddddddddddddd


ksajdfkjdsakjfkjakjfdkajkfjadkfdjfkajdakjffdsakjfakjadsf
kajdfkjdakdakjf
kdasjfjdakfajkaj
akjsdfffffffffdddddddddddddddddddddddddddddddddddddddddddd
ksajdfkjdsakjfkjakjfdkajkfjadkfdjfkajdakjffdsakjfakjadsf
kajdfkjdakdakjf
kdasjfjdakfajkaj
akjsdfffffffffdddddddddddddddddddddddddddddddddddddddddddd


== Old idea of dealing with doors ==
{|style="margin: 0 auto;"|right|thumb
If no exit is found under the assumption that there are no doors, the robot starts checking for doors. See Figure 1 for different possible situations of where the doors are located. At first it assumes that there can only be doors at dead ends (1). If still no solution is found the robot also checks for doors at corners (2), followed by intersections (3) and finally on every outside wall of the currently mapped maze. In order to detect these doors the robot stands in front of the potential door for a certain time and checks with its sensors whether the distance to the nearest wall changes.
| [[File:Originaldata.png|250px|thumb|right|Calibration: Difference between odometry and LRF data]]
 
| [[File:StaticLRF.png|250px|thumb|right|alt=Static LRF|Calibration: Static LRF]]
[[File:Corridorlayout.png|400px|thumb|center]]
|}
 
== Old uncertainties ==
Certain aspects of the design are not yet clear due to uncertainties in the specifications of the robot and/ or the maze challenge.
Depending on the difference between the end of the maze and the inside of the maze, the robot may be enabled to detect it has completed the challenge. If however the outside of the maze is simply an open space similar to a place inside the maze, the robot might not be able to distinguish the difference. In this case the robot would have to be stopped manually.
 
The exact specifications of the robot are still unknown and without testing the precise accuracy and range of the sensors, the resolution of the map and the safe wall distance are unknown.
 
In order to make the robot complete the challenge faster control over the speed of the robot could be used. This way it could move faster in area’s it has already mapped. This is only possible if the robot has the capability of moving at different speeds.
 
== Old drive method - to drive through corridors ==
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. Based on that, it checks what the correct 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 local robot driving coordinates. It should be noted that the Drive class is not responsible for deciding whether it's driving in a corridor, so this particular algorithm is not robust for corners, intersections etc.
 
Taking a corner is done by looking at the two corner points of the side exit. Then, it tries to orient the robot to bisect the angle between those corner points, while maintaining forward speed. This way, a corner will be taken. The main vulnerability here is taking the corner too narrow, so a distance from the wall will be kept.
 
== Simple method ==
The first approach is the most simple one, that is why it is called the simple method. 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. Briefly, it exist of two independent sub-methods.
 
# Collision avoidance: This is a function that is used to drive straight 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. This method works well for straight corridors. However, it will not work for driving around corners.
# Path planning for driving around corners: 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.
 
[[File:turningpath.png|400px|thumb|center|Not the right figure yet]]

Latest revision as of 12:12, 26 June 2015

ksajdfkjdsakjfkjakjfdkajkfjadkfdjfkajdakjffdsakjfakjadsf kajdfkjdakdakjf kdasjfjdakfajkaj akjsdfffffffffdddddddddddddddddddddddddddddddddddddddddddd

ksajdfkjdsakjfkjakjfdkajkfjadkfdjfkajdakjffdsakjfakjadsf kajdfkjdakdakjf kdasjfjdakfajkaj akjsdfffffffffdddddddddddddddddddddddddddddddddddddddddddd ksajdfkjdsakjfkjakjfdkajkfjadkfdjfkajdakjffdsakjfakjadsf kajdfkjdakdakjf kdasjfjdakfajkaj akjsdfffffffffdddddddddddddddddddddddddddddddddddddddddddd

Calibration: Difference between odometry and LRF data
Static LRF
Calibration: Static LRF