Mobile Robot Control 2024 Robocop
Group members:
Name | student ID |
---|---|
Matijs van Kempen | 2060256 |
Luc Manders | 1729225 |
Marc Quelle | 2044749 |
Marijn Ruiter | 1489496 |
Luke Alkemade | 1581643 |
Arif Ashworth | 1544632 |
Abhidnya Kadu | 1859234 |
Exercise 1
Method 1 - Arif
In this method the LaserData struct is used to track the measured distances from the walls to the robot. To make the robot drive forward the sendBaseReference command is used, and the robot moves in the x direction at a speed of 0.2. Once it reaches the wall in front of it and the range values drop to below 0.2, motion is halted and a message is printed to the screen before exiting the program.
Some experimentation was done to test different speeds and thresholds for the stopping range values. When the speed was higher than the stopping range value the robot would actually crash into the wall first before stopping, and if it was lower then the robot would stop slightly farther away from the wall. However, this only seemed to be the case when the stopping value was very low (e.g. 0.1), but increasing it to 0.2, for example, allowed the speed to be increased to 0.4 without any crashing.
Exercise 2
Method 1 - Arif
The previously described method was tested on the two provided maps with input speeds of (0.3, 0, +-0.3) and a stopping value of 0.2. With both maps the robot successfully came to a stop before crashing, although it struggled when driving into a corner and stopped much closer to the wall than it did in previous tests.
Practical Exercises 1
Dynamic Window Approach
The approach
Questions
1. What are the advantages and disadvantages of your solutions?
2. What are possible scenarios which can result in failures (crashes, movements in the wrong direction, ...) for each implementation? For example, set the target position in an obstacle and let the robot try to get to the target; what happens? Try to think of more examples yourself!
3. How would you prevent these scenarios from happening?
4. For the final challenge, you will have to link local and global navigation. The global planner will provide a list of (x, y) (or (x, y, θ)) positions to visit. How could these two algorithms be combined? (Implementing this will be part of next week's assignment.)