I'm trying to make a lightweight method of outdoor road following for a small ground robot. In nearly all road detection work that I've seen, they all assume that the robot is already on the road, which allows for techniques like finding the vanishing point or sampling pixels near the bottom of the camera frame. However in my application, the robot can be a few meters away from the road and needs to first find the road. As the robot computation runs on an Android phone, I'm hoping to avoid heavy computer vision techniques, but also be robust to variable outdoor lighting conditions. Obviously there is a trade-off, but I'm willing to sacrifice some accuracy for speed and ease of computation. Any ideas on how to achieve this?
-
$\begingroup$ 1) Why not move in a spiral path to find the road? 2) why and how did the robot get out of the road? Maybe relaxing speed requirements can help avoid the problem altogether. $\endgroup$– Gürkan ÇetinJan 21, 2017 at 10:11
-
$\begingroup$ I'm working in a large outdoor park with long intersecting paths. The robot navigates to the destination, evaluating whether it is better to take the road or take a shortcut through grass, so it's constantly having to switch in and out of road following mode. $\endgroup$– fitanyJan 22, 2017 at 12:56
-
$\begingroup$ ok. So the robot cuts corners from time to time. I think an option to consider could be to drive straight or with a spiral till getting back at the road. Can be simpler than seeing the road from 3 meters away. Is the camera resolution enough to see the road at 3 meters ? (Angle, field of view, resolution, fps). If the Processing capacity is not plenty, you could work on hi resolution captures (each second? Or 2hz maybe). $\endgroup$– Gürkan ÇetinJan 22, 2017 at 15:57
-
$\begingroup$ Yes, the resolution is that of a high-end Android smartphone camera and can see the road even from 10 meters away. I do like the spiral idea and have tried variations of it, but I still have no method of knowing when to stop the spiral behavior. When the robot reaches the road, it is often very perpendicular to the road and needs to know when to stop and turn a full 90 degrees. $\endgroup$– fitanyJan 23, 2017 at 7:09
-
$\begingroup$ Another idea, just to speculate: Is the on road sensor data somewhat different than the off-road data? In some vehicles accelerometer data is used to notice being on road. This is not a conclusive method but may help give a second decision point. $\endgroup$– Gürkan ÇetinJan 24, 2017 at 11:24
1 Answer
You may be interested in what is called "terrain classification" - not detecting the road itself, but classifying different regions of an image taken by the camera as grass, gravel, road, etc. This will help you to find the road, where you can apply more efficient methods of road following.
A paper "High Resolution Visual Terrain Classification for Outdoor Robots" by Yasir Niaz, Khan Philippe Komma and Andreas Zell, that discusses approach based on SURF features can be found here: http://www.cogsys.cs.uni-tuebingen.de/publikationen/2011/khan2011iccvworkshop.pdf
A list of some other papers on the subject: http://www2.ift.ulaval.ca/~pgiguere/terrainID.html (note that last modification is from 2014, so there may be some new research worth investigating).
-
$\begingroup$ Thanks for the suggestion and links. I can definitely try out this approach. $\endgroup$– fitanyJan 23, 2017 at 7:00