... | ... | @@ -172,4 +172,76 @@ Fig. 21 - Finish position of the robot after 90 degree turn. |
|
|
|
|
|
In [4] it is described that "With proper adjustment of these parameters, errors in distance traveled and angle of rotation can be held to 2% or perhaps less". See if this can be achieved.
|
|
|
|
|
|
Our values and test drives reveals an error of less than…. (50.8 cm / 50 cm * 100 ) - 100 = 1.8 % error |
|
|
\ No newline at end of file |
|
|
Our values and test drives reveals an error of less than…. (50.8 cm / 50 cm * 100 ) - 100 = 1.8 % error.
|
|
|
|
|
|
## Square experiment with increased distance
|
|
|
With this experiment we aim to expose erros by increasing the robots travel distance. By doing this we should be able to make minor adjustments to the wheelDiameter and get a more accurate calibration.
|
|
|
|
|
|
To obtain an increased travel distance we made the following changes to the for-loop in PilotSquare.java:
|
|
|
```
|
|
|
pilot.travel(50); //instead of 25
|
|
|
```
|
|
|
##### Fig. 22 - Codesnippet of the for-loop in the PilotSquare.java
|
|
|
|
|
|
## Results
|
|
|
The experiments showed the robot stopping within 3 mm of the line after driving in a square with side = 50 cm.
|
|
|
|
|
|
The robot travelled a total distance of 200 cm. The pose values show that the robot have travelled 0.4 cm too far. This reveals an error of (200.4/200*100)-100 = 0.205 % which is very low and acceptable.
|
|
|
|
|
|
![Skærmbillede 2015-06-01 kl. 10.40.37](http://gitlab.au.dk/uploads/group-22/lego/ed32d850c4/Sk%C3%A6rmbillede_2015-06-01_kl._10.40.37.png)
|
|
|
##### Fig. 23 - Screendump of the robot screen after run.
|
|
|
|
|
|
## Position tracking by means of particle filters
|
|
|
To estimate the influence of non-systematic errors on the position of the vehicle obtained by odometry we will use the method of Monte Carlo localization or particle filter localization, [9]: "The algorithm uses a particle filter to represent the distribution of likely states, with each particle representing a possible state, i.e. a hypothesis of where the robot is". We will use use the algorithm in the special case where only the movements of the vehicle will be modelled in the motion update step of the algorithm, [9] and all particles are initially set to the known starting position. An example of the resulting particle set after each move of a non-sensing vehicle can be seen in Fig. 24. The details of the stochastic motion model used in Fig. 24 can be found in [9].
|
|
|
|
|
|
![Skærmbillede 2015-06-01 kl. 10.42.53](http://gitlab.au.dk/uploads/group-22/lego/51f222e026/Sk%C3%A6rmbillede_2015-06-01_kl._10.42.53.png)
|
|
|
##### Fig. 24: The distribution of likely positions for a non-sensing vehicle after moving for several steps.
|
|
|
|
|
|
## Task
|
|
|
Investigate if the model of non-systematic random odometry errors also model the errors of the base vehicle driving a sequence of travel and rotation steps.
|
|
|
|
|
|
## Plan
|
|
|
By repeating a square-driving sequence we will measure the extent of the randomly distributed errors around the intended stopping position. A total of 4 experiments will be conducted in which we will change the distanceNoiseFactor in order to investigate the impact. The same will be done for the angleNoiseFactor. To eliminate inconsistencies the robot was not placed on the ground during the tests. Instead the robot was placed without the wheels touching the ground.
|
|
|
|
|
|
### Changing the distance noise
|
|
|
![Skærmbillede 2015-06-01 kl. 10.44.54](http://gitlab.au.dk/uploads/group-22/lego/6fb5274750/Sk%C3%A6rmbillede_2015-06-01_kl._10.44.54.png)
|
|
|
##### Fig. 25: The four experiments with changing the distance noise.
|
|
|
|
|
|
The four experiments show that when the noise factor is increased the spread increases as well. Each point represents a possible outcome position of the robot after driving the square. However the noise value may be fine tuned according to the robot’s accuracy as our previous experiments revealed that the robot was able to travel a square with 50 cm sides within mm’s of accuracy. With this in mind a distance noise factor above 0.2 may be inappropriate.
|
|
|
|
|
|
### Changing the angular noise
|
|
|
![Skærmbillede 2015-06-01 kl. 10.46.12](http://gitlab.au.dk/uploads/group-22/lego/600af11772/Sk%C3%A6rmbillede_2015-06-01_kl._10.46.12.png)
|
|
|
##### Fig. 26: The four experiments with changing the angular noise
|
|
|
|
|
|
This experiments reveals similar results to the experiment with distance noise above. It shows that once the noise factor increases the spread will increase equally. What is worth noting is that the angle noise factor is significantly higher than the distance noise factor. This is due to the fact that if the robot only has to drive forward, it will have less trouble staying on track. Whenever the robot turns more factors comes into play eg. accuracy in turning angles, friction when turning and so on resulting in a larger spread in points. However an angle noise factor of 32 seems way too much compared to how the robot acts on a track. As mentioned earlier the robot can complete a square route with high accuracy which makes an angle noise factor of less than 4 more appropriate.
|
|
|
|
|
|
### Sub Task
|
|
|
Look into the motion model used in [2] to get inspiration for experimenting with the model used in applyMove.
|
|
|
|
|
|
The motion model from [2] uses theta to calculate the heading of the robot at its starting position. In our applyMove model from Particle.java we don’t use the theta parameter. This means we don’t get any noise on the angle of the robot when it is driving in a straight line. This can be seen in the figure below (see fig. 28). Only when turning we get noise on the heading of the robot and thus the particles spread out as seen in the previous table (see fig. 26).
|
|
|
|
|
|
```
|
|
|
|
|
|
float ym = (move.getDistanceTraveled()*((float)Math.sin(Math.toRadians(pose.getHeading()))));
|
|
|
float xm = (move.getDistanceTraveled()*((float)Math.cos(Math.toRadians(pose.getHeading()))));
|
|
|
|
|
|
```
|
|
|
##### Fig. 27 - Codesnippet from where?
|
|
|
|
|
|
![Skærmbillede 2015-06-01 kl. 10.50.47](http://gitlab.au.dk/uploads/group-22/lego/8c7ecb627b/Sk%C3%A6rmbillede_2015-06-01_kl._10.50.47.png)
|
|
|
##### Fig. 28 - As long the robot drives straight, the points will stay on the line with no angle.
|
|
|
|
|
|
### Particle filter experiments conclusion
|
|
|
Our two experiments revealed that once the noise factors increase the spread of particles will increase equally. When comparing these results to how our robot acts when travelling in a square we can conclude that a noise factor above the default values of distanceNoise=0.2 and angleNoise=4 is inappropriate as once values like wheelDiameter and trackWidth are adjusted properly the robot will drive and turn with high accuracy. We can also conclude that the angular noise should be larger than the distance noise as the robot is influenced by more factors once it turns than if it drives straight.
|
|
|
|
|
|
## Position tracking while avoiding objects
|
|
|
### Task
|
|
|
How can you track the position of the vehicle moving in a fixed route by means of travel and rotate steps while the vehicle avoids objects in front of it ? Mount an ultrasonic sensor in front of the vehicle to detect objects.
|
|
|
|
|
|
### Plan
|
|
|
To make a robot that travels along a fixed route using dead reckoning [3], while simultaneously being able to detect and avoid objects of a certain size on its path.
|
|
|
The logic behind the task is to imagine a public space in which the robot has to navigate a predefined route. In such situation the robot should be able to detect and avoid people on its path and navigate to a fixed point without crashing into people.
|
|
|
|
|
|
[1] - http://legolab.cs.au.dk/DigitalControl.dir/NXT/Lesson10.dir/paper58.pdf
|
|
|
[2] - http://commons.wikimedia.org/wiki/File:Particle2dmotion.svg
|
|
|
[3] - http://en.wikipedia.org/wiki/Dead_reckoning |
|
|
\ No newline at end of file |