Project Robokut - Sensor Selection
Project Robokut - (1) Design Overview
Project Robokut - (2) Sensor Selection
Project Robokut - (3) Mechanics & Electronics
Project Robokut - (4) Programming (Coming Soon)
Project Robokut - (5) BOMaterials
When designing a custom robot, lawn mower or otherwise, one of the first issues a designer comes across is what sensors to use? Issues like how to detect and differentiate the area to be mowed are not as easy as they might seem. Although it takes a human almost no time to understand the various seen (and unseen) boundaries which may be used to describe an area, for a robot which can only use sensors, this task is more difficult. Knowing there is an obstacle in the way (rather than rolling over and potentially cutting it apart) requires sensors. The more a robot “knows” about its environment, the better it will be able to suit its intended purpose. Some of the more pertinent sensor options for a robot mower might include:
Bump / contact sensors: tactile / contact switches are useful on outdoor robots when non-contact distance sensors fail to give a proper signal. This might be the case for bushes, chairs or other similar obstacles.
Accelerometer: a three axis accelerometer can be used instead of a mercury tilt sensor to give an accurate reading of the robot’s angles on three axes. This might also be useful to know if the robot is picked up so that the cutting motor is stopped.
Encoders: Encoders are indispensable when it comes to having a wheeled robot move in a straight line, and also to gauge distance travelled.
Gyroscope: A MEMS gyro provides the robot’s angular rate of acceleration, which in this case is not needed
Magnetic Compass: This can be very useful in ensuring the robot moves in a straight line at a specific compass heading.
Tilt: The robot’s tilt is certainly important to its own and other’s safety feature and helps it know if it’s on a slope which it cannot climb or has been lifted / tilted by a human.
Water “rain”: Mowing when it’s raining is not ideal, so without a rain sensor, the user needs to ensure that it’s not raining when the mower is operating.
Current / voltage: current sensors connector to each of the propulsion motors can tell the robot if there is no resistance (i.e. the robot has been lifted) or if it has encountered an obstacle (i.e. a lot of resistance). A voltage sensor can be used to check the main battery to ensure it’s not depleted.
Encoders: Encoders are used to detect the rotation of each of the propulsion motors. Knowing the counts for each revolution as well as the circumference of each wheel, the robot can know if it is travelling in a straight line, the distance travelled and how much it has rotated.
Infrared (IR): Outdoors, there is a lot of infrared light from the sun, so using normal hobby-grade IR distance sensors is not ideal.
Ultrasonic: This sensor technology based on ultrasonic sound waves has proven to be quite reliable when used for non-contact distance sensing outdoors.
Moisture: The LawnBott Spyder LB1200 is different from other commercial lawn mowers in that it includes 6 moisture sensors: 3 in the front, and 3 in the back, which move through the grass. This allows it to differentiate between grass and non-moist surfaces like concrete and pavement.
... other: There are many additional sensors which may find use in a robot lawn mower and we encourage you to go over the advantages / disadvantages of each.
Not included in this list is how the robot might stay within a certain region which does not have evident ways to differentiate it from another region, most notably differentiating where one lawn ends and another one starts.
Magnetic Perimeter Wire
Installing magnetic wire around the perimeter of the lawn (and possibly around each obstruction) has the advantage of simplicity given that no additional electronics are needed, and the system requires no electricity. Magnetic wire would not interfere with other devices, though the properties would need to be tested and verified to work at a certain depth underground. The sensor could be a simple hall effect, though other sources of magnetic fields would need to be accounted for, and the sensor sufficiently strong to pick up underground magnetic cable.
Frequency-Based Perimeter Wire
Burying a cable which carries a frequency has been used extensively on commercial robot lawn mowers. The cable itself can be generic, though additional electronics are required in order to generate the frequency. Should there be a fault in the system, or should the generator be turned off, the robot would not detect the wire and potentially proceed beyond the boundaries.
For outdoor navigation, GPS is often the “go to” technology. However for lawn mowing, the accuracy of non-military GPS units is too great to be used effectively (at least on its own) for perimeter detection (around one meter). This can possibly be used to ensure the robot remains within an overall area, but would not seem to be the ideal choice as primary sensor.
Simply using bump sensors (for example a button) to remain within a defined area requires that objects be a certain height and the entire perimeter be outlined. In most real situations, edges of a lawn may not have a fence and therefore nothing to block the robot. This approach would likely work best where the lawn is fully enclosed by a fence and there are no objects (like a delicate plant) which would not produce a reading.
Although not widely used, moisture sensors can detect grass (and unfortunately other vegetation) in order to know when it has traveled onto a driveway or sidewalk. This approach requires that the area to be mowed has a perimeter which would give a different reading, and also means that the mower would not cross a walkway or driveway in order to mow what is on the opposite side.
2D / 3D Mapping & vision
These days 2D and 3D mapping can be used for almost any robotic application, but the complexity involved in programming is well beyond the scope of this project and as such won’t be considered. Should someone wish to pursue this, consider OpenCV (Open Computer Vision) which is also incorporated into ROS.
Keeping in mind that one of the objectives of the Robokut project is to be as inexpensive as possible, we need to select only the most essential of sensors. We chose the following:
Given the popularity of perimeter wire for both commercial robot lawn mowers and invisible fences for animals, the Robokut project will make use of buried perimeter wire which will carry a detectable sinusoidal frequency produced at a base station.
There are not many commercial perimeter wire systems intended for hobby use. The choice is then to try to repurpose an existing robotic mower perimeter wire system, repurpose an invisible dog fence, or engineer a new system. So what do we hope this can provide?
Detect a boundary which the robot will not venture across
Delimit “soft” areas like flower beds, vegetable gardens or sandy areas, as well as driveways, curbs etc. so the robot remains on the owner’s lawn.
Potentially used as a way to navigate to a base station (recharging).
We could not find any commercial perimeter wire kits for DIY, so we created one here:
Magnetic Compass + Accelerometer
These days IMUs, accelerometers, gyros and magnetic compasses are widely used in cell phones, so their prices are dropping drastically. Breakout boards (and chips) also often include a magnetic compass. At the time of this article, the LSM303D chip includes a compass and triple axis accelerometer. It does not include a triple axis gyro, which is not critical to this project, so it’s not actually an “IMU”. However, the compass can be used to provide absolute heading, and using a basic P.I.D. algorithm, we may not need expensive encoders. A breakout board with this chip can be under $8 USD. Should this chip not be available, look up tilt compensated magnetic compass. So what do we hope this sensor can provide?
Absolute orientation / compass direction
Absolute tilt (using the accelerometer) for inclines and if the robot is lifted (safety)
Contact sensing (impact leading to high deceleration)
Help if the robot is stuck (motors spin but there is no acceleration)
A current sensor connected to each of the drive motors might actually be used for several different purposes:
If the wheels are blocked (say, in contact with a wall), the current will go up. Combined with the accelerometer, this might be a novel way to detect physical obstacles.
If the robot is lifted, the current will drop significantly. Combined with the accelerometer, this might be a reliable safety feature.
Ideally with proper programming, the robot should not try to climb a steep hill only to fall over (based on the accelerometer reading). The combination of the accelerometer and current sensors will likely only work so well if the robot decelerates slowly. Much like the first robotic vacuums, a bit of trial and error might be needed on some terrain.
Although a separate voltage sensor might be a “nice to have” feature, a simple voltage divider, knowing the optimal voltage of the main battery, can be used with a microcontroller’s analog pin to continuously monitor the battery’s voltage and stop the robot when it gets too low.
For larger obstacles like an in-ground pool, the walls of a house, a fence etc., an ultrasonic sensor can be used reliably outdoors. This would prevent the robot from crashing into large objects. The price of ultrasonic sensors varies, but can be as low as just a few dollars. Ultrasonic sensors which are water resistant or waterproof are quite a bit higher.
The next article will go into the details of a custom perimeter wire generator and sensor.