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:

Options

  • 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.

Boundary Detection

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.

GPS

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.

Adafruit Ultimate GPS Breakout - 66 Channel MTK3339Venus GPS with SMA ConnectorSIM808 GPS Module

Bump sensors

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.

SPDT Roller Lever Micro Switch (2pk)Momentary Button - Panel Mount (Black)Vex Bumper Switch

Moisture sensors

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.

Hokuyo URG-04LX-UG01 Scanning Laser RangefinderRPLIDAR A2 360° Laser ScannerSweep V1 360° Laser Scanner

Selection

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:

Perimeter Wire

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:

https://www.robotshop.com/blog/en/diy-perimeter-wire-generator-sensor-21302 

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)


LSM303D 3-Axis Accelerometer and CompassTilt Compensated Magnetic Compass (CMPS11)HMC5883L-BB 3 Axis Magnetometer / Compass

Current Sensors

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.

Pololu ±5A ACS714 Current SensorElectronic Brick ±5A ACS712 Current SensorACS712 Low Current Sensor Breakout

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.

Voltage Sensor

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.

Grove Voltage Divider ModulePhidgets Voltage DividerVoltage Sensor Module

Ultrasonic Sensor(s)

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.


HC-SR04 Ultrasonic Range FinderMaxbotix I2CXL-MaxSonar-EZ4 High Performance SonarMaxbotix XL-MaxSonar-WRCA1 Weather Resistant Ultrasonic Range Finder


The next article will go into the details of a custom perimeter wire generator and sensor.


This is a companion discussion topic for the original entry at https://community.robotshop.com/robots/show/project-robokut-sensor-selection

I’m keen to read part 3 of Robokut.

Earlier this year I built a robot lawn mower (now disassembled) for a small area at home with some success. For robot design I used  two drive wheels and rear castor. My sensors were Lidar lite V2 for wall following, 4 sharp IR distance sensors for object detection and a tilt compensated compass. Here are a couple of notes about my project that might help. 

Sensing the current and/or rpm of the motor used to cut the grass is very important, I found a tuff of grass would stall the motor if I had the height set too low. Dust and grass particles build up on your sensors over time. Moisture from the cut grass contaminates the cutting blades, I used carpet knife blades. And… just when I thought my code was perfect the robot would wander off in some abstract direction. 

Using a perimeter wire is on my todo list so I’m keen to follow the next Robokut instalment.

Part 3 should be out this week

Happy to see others are keen to make their own robotic lawnmower. There will be a little bit of restructuring of the posts in that part 3 which talks about the perimeter wire will actually be on the RobotShop Blog: https://www.robotshop.com/blog/en/

The next post here will be the mechanics / electronics and I’ll update this post to link to the blog post about the perimeter wire. We’ve worked hard to ensure it’s complete (understanding every aspect of how / why the perimeter wire design works so yuo can reproduce it effectively) and look forward to your feedback. 

Perimeter Wire Article

Voila (DIY perimeter wire): https://www.robotshop.com/blog/en/diy-perimeter-wire-generator-sensor-21302

Sensing the current and/or rpm of the motor used to cut the grass is very important,

Encoders for the rpm, and a separate current sensor for each of the two drive motors.

I found a tuff of grass would stall the motor if I had the height set too low.

Correct. Moving on tall grass and going up an incline is significantly harder than on flat tile :wink:

Dust and grass particles build up on your sensors over time.

Although we have not tested the mower for extended periods, having as few sensors which required openings in the robot was part of the design, hence encoders, current sensors, an IMU and perimeter wire. The ultrasonic sensors were the only ones “exposed”.

Moisture from the cut grass contaminates the cutting blades, I used carpet knife blades.

Can imagine. We tried to avoid sharpened metal largely for safety reasons since this is a DIY project and things can/will go wrong.

And… just when I thought my code was perfect the robot would wander off in some abstract direction. 

As with all custom robots, we certainly experienced some weird behavior with the code, and still do given all the functionality we’re trying to add. This robot certainly has its limitations and much of it comes down to code optimization. The next article (code) is not yet ready for that reason.