I want my robot to drive a certain path so that it passes every specific location only one time. For that reason I need some sort of ranging. The borders of the area should be known by the robot. If there is some sort of ranging the borders can be honored by it. How does the robot know about the borders? There will be a special administration-mode in which I will steer the robot by remote-control along the borders and it will record those positions.
So the requirements for location-tracking/ranging are:
- The resolution has to be close to 10cm.
- Power consumption has to be low.
- Most of measuring-work should be done by a circuit to relieve Rasperry Pi's CPU.
- Standalone-GPS resolution yields about 2.5-1m (depending on the number and kind of satelite-signals receiving). I was wondering about this since geometers use GPS to place landmarks up to a resolution of 1cm. Searching the web gave me the answer: They use differential GPS. D-GPS uses a second GPS-receiver at a reference-location. The raw-signals of both locations can be used to get more precision relative to each other. Geometers use public reference-stations which provide their raw-signal through a special internet-protocol. But those services are not free and building my own reference station is too complicated.
- GPS-receivers consume a lot of energy (at least 100mA at 3.3V - this is not very much, but less would be nice).
One possiblity is to use sonic. An example for a ready-to-use module is HC-SR04. But there are limits prohibiting sonic for local positioning:
- The signal has to be directional, but usually the direction of those reference-locations are unknown.
- The maximum range is 3m - the distances in my garden is bigger than 3m ;-)
- Objects between the reference-locations (f.e. children's toys) disturb the signal.
So what's left? Radio! But radio-signal cannot be used in the same way as sonic is used to measure distances. HC-SR04 is measuring the time-gap between sending and receiving the signal. This works because sonic is a slow signal. Radio works at the speed of light so a distance of 10cm is passed in the time of the 2,997,924,580th part of a second. This is too short to be measured.
So this is the idea:
I build reference-locations which receive radio signals sent by the mowing robot and return those signals immediatally. The robot will listen for the response. The mowing robot's signal can only be returned, if it is strong enough to reach the reference-location. So I increase the signal strength in a loop by a very small amount starting at zero. Once I get an answer I know the signal strength which is in any correlation to the real distance. If I do this for at least three reference-locations and I know about the correlation between the signal strength and the distance I am able to calculate the local position. So far so good.
To proof this, three things have to be done:
- Build the robot's sending-unit and a reference-location-unit.
- Test whether increasing signal-strength for measuring the distance is reliable/reproduceable.
- Learn about the correlation between signal-strength and distance.
Keine Kommentare:
Kommentar veröffentlichen