Based on my thesis project
from the year 2000.
The pool cleaner navigation system (pool cleaner robot) is developed on the B400-pool cleaner made by Weda
The original model works with a simple strategy, which works well in rectangular pools. The machine moves backwards and forwards, changing direction every time its bumper is depressed. By making one of the bumpers angled by adjustment screws, one can make the pool cleaner move sideways and slowly cover the entire pool.
With the pool cleaner navigation system added, one should be able to use it in almost any kind of irregular shaped pools.
To set up the system, a notebook is connected to the computer box.
One then moves the pool cleaner around islands and occlusions in the pool from the computer screen. One lets the pool cleaner scan and match local maps to each other to build a large map of the entire pool.
When the map is large enough, one begins setting out the cleaning path. There are some commands that helps the installer to speed up this process, which otherwise could take a long time if the pool is large.
Explanations of symbols
Typical film image
Path, with the Current path segment higlighted.
Current scanned map and the Measured pose. These have the same color because they are tightly coupled together. If for example there is a erratic match, one can look at the red poolcleaner relative to the red map, and get an idea of where the poolcleaner really is.
A priori pose estimate. (Guessed pose based on odometry (wheel rotation and steering) from the last A posteriori pose estimate).
A posteriori pose estimate. That is sort of a mixture of the "A priori"-pose and the "measured pose".
Covered area (estimated from the "A posteriori"-pose estimates)
Break angle. The line originates from the breaking track, The angle represents how much the poolcleaner should steer and the length represents how far it is expected to move before next scan is ready.
Bumped end (marked with thicker line)
Often the starting pose deliberately has a large error to show robustness of the system.
The pool at Weda (summer 2002)
There is a plateau in the pool with one side sloping. When the test takes place there is also another pool cleaner in the pool, on the lower right hand side in the picture. That's why the path covers an area that is smaller than what seems possible at first glance.
Test along the long side
Path along the long-side
Test along the short side
The result after following the path along the short side. The starting pose has deliberately a large error to show that the pool cleaner must not be moved to the exact point where the path starts. The poolcleaner is scanning while moving, so it needs space enough to allow scans to complete, that's why one can't continue this test in the left side of the pool
: The match is almost totally upside down.
If one looks at the red map / poolcleaner one can see what the poolcleaner "sees" and realize where the poolcleaner really is.
One way to address this problem is too prevent matches that deviate more than +/-90 degrees.
The adventure pool at Fyrishov (summer 2002)
Only a part of the pool is mapped, and then small testruns are run in a way that one would likely let the pool cleaner run when cleaning the pool.
Test 1 failed totally, I think it was a loose cable or something.
This test is aborted because the bumpers don't work correctly. The bumper shall signal that one corner is depressed rather than both corners are depressed. In this test run, when the poolcleaner comes up against the wall at an angle, the poolcleaner doesn't stop at first touch, but instead continues to push until both corners touches the wall.
The start pose has deliberately a large error to show robustness.
- Image 100 and 101: One can see that the poolcleaner is trying to steer, but nothing seems to happen, this is probably because of water skidding which I notice on other occasions too.
- Image 129: The sonar angle becomes faulty which made the poolcleaner turned very much to the left. One can see in image 131, 133 and 135 that it is the front bumper that is engaged. Then in image 130, 132 and 134 the poolcleaner changes direction because it thinks it is beyond the current path segment.
The problem with the sonar angle getting faulty is because of several problems. See more in the section about the test at Sandsborg, (below).
It looks as if the pool-cleaner has gone right through the wall. The reason is that one needs to readjust the velocity parameter of the software, which is too high.
If one looks on the individual images one can see that the 'red' poolcleaner is always behind the 'cyan' ones as the poolcleaner approaches a wall.
This problem is the same in all the Fyrishov test.
At the end of this test (approx image 47 and onwards) the pool cleaner starts to go in an S-shape around the predetermined path, the reason I think is that the floating-cable, at one point touched the rotating sonar puck and made the stepper-motor angle faulty. The result is that the measured pose angle is faulty at every pose-update. In other words the pool-cleaner aims too much on one side when it is going forward and too much to the other side when it is going backwards, and therefore the S-shape.
Sandsborgsbadet (Jan 2003)
To get a wider range of tested pools the system was tested in this pool.
Dealing with the problem with the stepper motor getting a faulty angle
With a homing sensor added to the sonar unit and with the sonar puck more centrally placed on the axis of the stepper motor, the problem with missing steps should be fixed. Since after Sandsborg there is also a cage that is supposed to protect the sonar further.
To avoid entanglement with a water hose lying in the pool, the lower side to the right is skipped.
A rectangular pool has two symmetry axes, which means that a local scan can match the reference map in two ways, the correct one and one that is turned 180 degrees. To avoid faulty matches in this test, only matches that are within +-90 degrees of the a priori guessed pose is used.
Last minute fix to deal with false echos
This test was done with a different (newer) kind of b400-poolcleaner. It had its water exhaust aimed upwards from the sides of the poolcleaner, (instead of straight outwards as the old b400) This resulted in false echoes coming from the turbulence of the water exhaust. To handle this I had to adjust the sensitivity of the sonar at the range where the turbulence occurred. Unfortunately this led to a lot of missed echoes whenever the poolcleaner is close to a wall, see below.
: Matching the wrong corner.
Viewing the red poolcleaner relative to the red map one can see that the poolclener is pretty much on course. However, the poolcleaner makes its steering based on the cyan (turquoise) pose and it makes a sharp left
turn which of course makes it go right into the wall.
One can see in image 20 that the front bumper is depressed as it bumps the wall. The plotted pose of image 20 is obviously wrong, in reality it stands with the nose into the wall at angle of about 45 degrees. Once the bump has occurred, the poolcleaner begins to follow the next path segment (backing) downwards again.
: Basically the same problem as on image 19: Matching the wrong corner, again makes a sharp turn and bumps the short end wall (490).
: The bumper is depressed, which means that the poolcleaner moves on to the next path segment (moving forward)
: This match is bad because there are no echoes from the short end wall. This in turn is because the last minute fix wasn't good enough.
: Same as 495
: Same as 495
: Same as 495
On image 495, 497, 498 and 499 the poolcleaner is right next to the wall, (red poolcleaner in relation to the red map) the problem is that the wall is simply not seen.
Conclusions of the tests
- The bumpers work well as wall sensors in a way that this system needs them to work. The bumper can be adjusted to work in two different ways, either to signal that both corners are depressed, as on original B400, or to signal when only one corner is depressed, as the control system needs it to work.
- A second remark is a minor one, the speed of the machine should be more carefully measured, possibly the speed should be recalibrated for different pool cleaners.
- At Fyrishov and Weda the sonar unit were too sensitive when the floating cable touched it. As for now there is a homing sensor which recalibrates the stepper motor once every scan. There is also a cage, which protects the sonar puck from the cable, and also the sonar puck has been more centrally mounted on the motor axis to reduce inertia.
- There is a problem with a fault match in Sandsborgsbadet where one corner in the scan is matched to wrong corner in the map. One way to solve this is to neglect matches that leads to too big angular deviation from the a priori guessed pose angle.