View Full Version : [Question(s)] What sensors needed for outdoor robot?

10-06-2010, 10:54 PM
I am in the process of building what I hope will be a mostly-autonomous wheeled robot lawnmower. Maybe some of you have seen the one that was in "Make" a while back - the LawnBot 400 (www.rediculouslygoodlooking.com (http://www.rediculouslygoodlooking.com)). I showed that to my wife and she said "build me one!"... so here we go. I live in the country and have a *big* yard... I currently use a tractor and 5-foot mower deck for the majority of the yard, trimming and such later.... so having something that could take care of such a repetitive task, in a constrained area, would be a great help.

I have built a prototype for software development using Vex chassis parts and some nice 12V gear motors from a car A/C flapper box; I have a PIC controller board built and PWM and an OSMC-style H-Bridge working pretty well; I have programmed a capture routine for controlling it by RC... so now I need to get to where it can mostly drive itself around the yard.

I have a couple of mini-ITX mobos and have no problem dedicating one to this project; I am strongly leaning towards using RoboRealm w/ one or more cameras, along with an RFID reader w/ tags on trees, fence and house corners, etc., and a MEMS compass. Encoders on the wheels to go straight, etc., of course.

I have been reading and searching online, but I have not found any info on what combination of sensor systems is really effective. I have GPS receivers I could incorporate, but really don't think it's needed - I don't need to navigate anywhere, just keep track of where it is and where it needs to go.

Any suggestions?

10-06-2010, 11:22 PM
Underground track wires. Look into how forklifts stay locked to a path in large warehouses. This would the most effective way of tracking and routing the mower. This does get expensive.

10-06-2010, 11:27 PM
Would I need to run a wire every (mower deck width - clean cut margin), or just around the perimeter, do you think? I think this would be just a "line follower" type of thing, huh? I'd *rather* not do it this way, but see that it could be an option. Thanks!

10-06-2010, 11:35 PM
I have thought about this in the past and every time the best idea to me is to use reflectors and a laser. The bot finds the reflector than heads towards it. Since your using a laser you can calculate the distance to the reflector. Then using wheels with encoders make sure you head towards it in a straight line.

You write you software to make a pattern based on the reflectors you have scattered thru your property.

10-06-2010, 11:57 PM
I thought about reflectors also. I was thinking color recognition, or shape, or a combination, using vision software. Since I have a fence on two sides of the yard it would be pretty easy to hang reflectors there. The driveway could probably be located by color (gray crushed rock)... IR and/or Ultrasonic would take care of the shop buildings, gas tanks and playhouse, but probably not the trampoline legs or garden fence. But I could use reflectors on those, also, I guess.

Thanks again. Does anyone know of any websites that address this issue? Google has not been good to me...

10-09-2010, 10:13 AM

10-10-2010, 01:48 AM
I'm sorry for being an ass, but does knowing where something is and where it needs to go not require navigating?

I will now try to be helpful with an excessively long post, but it would be best to do your own research to verify any of the below.
-Most commercially available automatic robotic lawnmowers I have seen are tiny little battery powered units that require the buried cable along all borders with the robot mostly just wandering within this defined area.
-On the use of a GPS receiver, it can only give position to ~2.5-10 meters horizontally so it may not be too helpful me thinks.
-Wheel encoders work best when the surface of contact is uniform (flat) and there is no slippage of the wheels, so potentially slick fresh cut grass would require good tires and tread.
-The compass would probably be most helpful for keeping the mower pointed in a straight line (tilt-compensation would be necessary if dealing with uneven surfaces/hills, and can be performed either internally or with an external accelerometer), but there would still be problems if the bot slides sideways downhill while driving along a slope.
-Using basic IR LED/photodiode sensors to accurately detect distance can be a crap shoot. When the calculated distance from an object is a function of the amount of IR light reflected back, the system is only really accurate when all objects are of a consistent material/color (A reflective/white object would reflect more light at a given distance than a dark object at the same distance). No idea if it would actually work, but it might be possible to increase accuracy by augmenting the distance function with the use of some sort of color sensor to determine the color of the object in question.
-Ultrasonic range sensors can be a bit more consistent than IR, but still depend on the material properties of the object (if the object does not reflect many sound waves back, the calculated distance will be off) as well as environmental conditions (windy versus calm).
-Laser rangefinding can get very expensive. Cheapest commercial scanning laser rangefinder I have found would be ripping one out of a Neato Robotics XV-11 (~$400), otherwise it's atleast ~$1100+. A non-scanning rangefinder (Bosch DLR series) can be sub $100, but do not seem to have any data output interface other than the LCD and require button presses to take measurements (lots of hacking to make it useful).
-Simple contact switches made from flexible rods connected to switches to form a ring around the bot would be an absolutely necessary safety precaution if the bot is very large/dangerous and intended to be completely autonomous.

-On using cameras:
My experiences with the CMUCam2 and the Bioloid wireless camera leave me inclined never to suggest trusting color tracking exclusively (especially when the robot has large spinning blades) unless you can guarantee consistent lighting and/or an adequately noise tolerant computer vision library. Tracking and maintaining a fixed distance from a yellow post-it note in front of a supposedly black background too intensely lit by horribly yellow incandescent lights can be terribly annoying even with YCrCb color space (can help with compensating for varying lighting intensity).

So, speaking purely hypothetically as I have yet to build anything this complex, if I were to build a robomower:
-Safety contact switches around the cutting deck, preferably the entire bot, that will kill the motor and brake (not break) the blade.
-Sonar sensors evenly distributed around the circumference of the bot (~6-8 and maybe on panning servos to give better coverage) for obstacle tracking/avoidance.
-Tilt-compensated compass and wheel encoders for basic navigation (start from a known position and follow a heading for a set distance, use new heading and follow again, etc. [Dead reckoning])
-GPS may be useful in improving the compass based dead reckoning if the area to be cut is sufficiently large (can improve the accuracy of GPS by using fixed ground stations [Differential GPS]).
-If I could afford it, maybe add a scanning laser rangefinder to map the area (perhaps instead of or simply in addition to the ultrasonic sensors). Maybe even try building my own lidar (or even a radar system) just to see if I could.

-If I decided to give it vision capabilities, I would probably go with a cheap color CMOS camera equipped with an LED ring light with both IR and white LEDs (not sure such a system exists, but I would build it from scratch just for fun/experience/because). The IR LEDs would be used with reflective markers to identify the borders of smaller targets and those less easily distinguishable with color tracking like fences, shrubberies, or forests inhabited by Knights Who Say Ni. The white LEDs would be used with PWM to ensure adequate (but not excessive) and consistent lighting in various environmental lighting conditions to help in identifying what is green grass and what is gray gravel.
My hope would be that the IR LEDs are powerful enough, and the reflectors efficient enough, that the CMOS sensor would be saturated (or close to it) when viewing the reflectors with IR LEDs active. The reflective areas would appear as very bright white objects (on what would likely appear to be a gray-scale image due to the differences in IR attenuation from the color filters on the CMOS sensor pixels). The tags/markers would preferably be uniquely identifiable patterns of reflective substance on a dark background to aid in localizing/orienting the robot and to prevent any incidental white/reflective objects providing false positive matches. If there were too much noise to identify the markers (lots of brightly colored objects around the marker), adding an IR longpass optical filter to block any shorter wavelengths should fix it (would need to mount the filter on a servo or use it with a second B&W CMOS camera).

Given the largely irregular surface (read big hill and lots of animal holes) surrounding my house, I would probably go with a 4+ legged (3+ DOF per leg) mower with an articulated cutting head (literal?) containing a reciprocating blade similar to hedge trimmers. Probably add an omni-camera on top of the body for the motion/obstacle detection, compass+GPS for navigation, and mechanical depth sensors (short rod on a switch?) in the feet to ensure the bot doesn't stick its foot in a hole and some in the head to keep the cutter from cutting too close to the ground. Not only would I need to worry less about it posing a danger to anything, but it would probably be too creepy for anyone to want to steal it (could always make it start the machine rebellion if it gets taken off the premises). Maybe even add an umbrella on its back to keep it out of the intense sun and rain.

10-12-2010, 08:29 PM
After finding a long thread on the main board regarding this very subject, I have just about decided to go with two cameras on pan/tilt heads, using RoboRealm to track some fixed objects around the yard, and calculate position from the relative angles to each, combined with direction readings from a compass and some other sensors.

I really like the idea of an RFID reader with tags on the various trees and other obstacles around the place, also, and will further investigate that option as well. My yard, and farm in general, is flat enough to not worry about hillside/angle issues with the compass.

Of course, I don't know *how* to do all that yet, but I've got the winter to figure out a starting point, at least.

Thanks for the input!

10-13-2010, 01:05 AM
Then what you probably want to look at is Monte Carlo Localization/Particle Filters, they are the current state of the art solution to the Localization problem you're describing. If the perceptions from your camera are any good (and that's a huge if :) ) that could work pretty well.

Speaking of perceptions with the camera system, the ar_pose package for ROS and the stuff building on it are probably worth checking out: