Give your gizmo the gift of sight
I am currently working on an autonomous rover and am try to figure out a way to track how far the rover has moved. we were going to use encoders from the wheels but these are inaccurate due to slipping. Anyways i was looking at using an optical flow sensor to track this but i was curious how accurate they would be in an open field of grass? also which lens would be best?
Thanks for your time.
One problem that I see with using optical flow to determine accurately the distance traveled is that not all the grass that you are watching is the same distance from the vehicle. For a given distance traveled, grass up close will show a large flow magnitude compared to grass at a greater distance.
Viewing the scene in 3D with two cameras simultaneously could provide enough info to determine the distance to any particular blade of grass that can be readily discerned in both views but now you are talking about some big-time computing to work that out.
Are there likely to be any fixed landmarks in the environment through which your vehicle will be moving? Could your vehicle take bearings from such landmarks from time to time to correct any accumulated positioning errors. Between such bearing-taking cycles, image flow and wheel rotation monitoring could provide an estimate of position relative to the last good position based on taking bearings. The potential for error in the estimate continues to grow until the system stops and takes a new set of bearings on landmarks.
All this is just my opinion but such problems are not beyond being solved, difficult as they might be sometimes.
Hmm that's a good point. I don't think we will be able to get the bearing from landmarks since the terrain will be similarly to that of a golf course and could be really hilly(we don't actually know where the location is that is part of the challenge) . also we already have a stereo vision system setup for object/obstacle detection and I don't think our computer could handle a second one. Thanks for the help.
Maybe you could radiate the environment with some sort of detectable "field" from which your vehicle could get info. For example, provide some sort of RF or acoustic signals across the environment for the vehicle to pick up.
For example, suppose you provide an RF transmitter and two or more loudspeakers at different locations (or other transducers, maybe even ultrasonic?) that send beeps at some kind of timing relationship relative to a transmitted RF pulse. The vehicle could receive the RF and acoustic signals, measure the time of travel of the sound, and determine its absolute position pretty well relative to the acoustic equipment.
Also, you might get somewhere with differential GPS. Comparing received GPS coordinates in the vehicle with GPS coordinates at a fixed location (such as the starting location via an RF link) should do the trick. I have heard that can be pretty accurate. Check it out.
Good luck with your competition.
Here is a new suggestion. You actually could use image flow to determine the distance traveled. Instead of aiming the camera off to the side of the vehicle where you are viewing objects such as grass at many different distances from the vehicle, mount the camera on the vehicle and aim it downward at the ground directly beneath the vehicle. Then you really do know pretty well the distance to the objects being photographed. Although other means could be used as well, measuring rotational image flow on such imagery could also help provide feedback about changes in direction.
Mounting the camera as high as practical on the vehicle might minimize the slight differences in image flow values resulting from the tops of the blades of grass and those resulting from the soil level a few inches farther down.