TURF

Turf Upkeep and Robotic Fieldcare (TURF) is my senior design project for my graduating semester. It is an Ultra WideBand based robot that can autonomously mow lawns. TURF will fill a gap in the robot mower market where there are no low-cost systems. Autonomous lawn mowers usually utilize LiDAR or Vision based systems which are costly. The obvious alternative is to use GNSS, but satellite-based navigation cannot provide the precession needed for mowing neat lines.


Ultra WideBand is a Bluetooth technology that allows us to send a packet between two devices and measure the round-trip time. We can do a bit of math to figure out the distance between the two devices with a precision of about 10cm. 

TURF takes advantage of this by using three fixed “anchor” devices as references to the moving mower. We can compute the distance from each anchor to the robot and perform a trilateration algorithm to figure out where the robot is. 

In my senior design group, I handled the hardware design and selection, and firmware for the robot. My group members handled the design of our motor driver board, and a mobile app for configuring the variables used by the robot firmware, their work will not be placed here but will be available on a public GitHub repo which I will add once the project is complete. My code is not final at this time but will be added soon. For now, here are renders and schematics of the PCBs I designed.

This is the main system board. It contains an ESP-32 WROVER module, and a DecaWave DWM1000 UWB module. The board includes headers for connecting to the robot’s motors, power supplies, and an ultrasonic range finder allowing the robot to halt If an object is in its path. This board is used on the robot itself, as well as for the anchors. While on a large scale, costs could potentially be reduced by using a more basic MCU, given the time constraint of one semester, and the need for only a single protype, I chose to use the same design for the anchors and robot.

This is just a basic switching power supply that steps down our battery voltage to a suitable 3.3V for the board.