Let's upgrade cheap off-the-shelf robotic mowers to modern, smart RTK GPS based lawn mowing robots!

OpenMower

OpenMower the DIY smart robot mowerLicense: CC BY-NC-SA 4.0 Discord

Join the Discord server for OpenMower discussion: HERE

About the Project

⚠️ DISCLAIMER:

IF YOU ARE NOT 100% SURE WHAT YOU ARE DOING, PLEASE DON'T TRY THIS AT HOME! ASK IN DISCORD, IF YOU HAVE ANY QUESTIONS!

Project Intro Video

If you want to see a quick overview, you can check out this video:

Let's be honest: The current generation of robotic lawn mowers sucks. Basically all of these bots drive in a random direction until they hit the border of the lawn, rotate for a randomized duration and repeat. I think we can do better!

Therefore, we have disassembled the cheapest off-the-shelf robotic mower we could find (YardForce Classic 500) and were surprised that the hardware itself is actually quite decent:

  • Geared sensored brushless motors for the wheels
  • A sensored brushless motor for the mower motor itself
  • The whole construction seems robust, waterproof and all in all thought through
  • All components are connected using standard connectors, therefore upgrading the hardware is easily possible.

The bottom line is: The bot itself is surprisingly high quality and doesn't need to be changed at all. We just need some better software in there.

Project Goals

Here is a quick overview of this project's goals:

✔️ Autonomous Lawn Mowing: Obviously, the device should be able to mow the lawn automatically.

✔️ Good Safety: The device must be safe, e.g. emergency stop if lifted or crashed.

✔️ No Perimeter Wire Needed: We want to be flexible and support multiple mowing areas.

✔️ Low Cost: It should be cheaper than a mid range off-the-shelf product

✔️ Open: I want to share knowledge and enable others to build an OpenMower as well.

✔️ Nice to Look At: You should not be ashamed to have an OpenMower mowing your lawn.

✔️ Avoid Obstacles: The mower should detect obstacles and avoid them during mowing.

✔️ Rain Detection: The device should be able to detect bad weather conditions and pause mowing until they improve.

Current State

The basic mowing function finally works! As you can see in the video, map teaching and mowing work as expected. It even returns to the docking station automatically as soon as the battery gets low and continues once it's recharged.

At this point I can recommend that brave tech savvy users can build one for themselves! Since it's quite an expensive and complex project, please don't be shy and ask if you have any questions. I'm glad to help 🙂

Hardware

The first mainboard PCB is almost done. It currently looks like this:

Current State of the Robot

Hardware To-Do:

  • Low Level Firmware Implementation
    • Voltage / Current Sense
    • Emergency Stop Button tracking
    • IMU Communication
    • Rain Sensor
    • Charging State
    • Sound Module
    • UI Board Communication
    • Low Power Mode
  • ROS Hardware Interface
  • Hardware Redesign (bugs / enhancements):
    • Digial Emergency Stop Signal from Pico to xESC
    • Sound Module Pinout needs to be adapted to DFPlayer
    • XT60 Power Connector needs to be connected to main power instead of charging input

Software

The basic software is basically done; Our prototype works as intended (but is not able to avoid obstacles yet).

The software for the robot can be found in a separate repository: https://github.com/ClemensElflein/open_mower_ros

Software To-Do:

  • Mowing State Machine (Docking / Mowing, ...)
  • Path Planning
  • Obstacle Avoidance
  • App / Visualization

How You Can Help

You can help by starting an OpenMower build of your own. This helps to validate the concept and helps to create useful documentation for new users.

Additionally, you can help by starring 🌟 and watching 👀 this repository, since it will help with visibility. You can also subscribe to my YouTube channel.

Compatible Robotic Mowers

While disassembling the bot, I wondered about its mainboard: Instead of "YardForce" it read "GForce". After checking the internet for "GForce" robots, I found that that very similar looking robotic mowers are sold under the Herkules brand. Naturally I tried to dig deeper and actually found evidence that the mainboard is manufactured by some chinese company (SUMTEC Hardware).

GForce Robot Mower Mainboard

It is therefore quite safe to assume that many robot mowers are basically the same device in a different case. This would be a huge win for the community, since this would mean that by making one of those robots smarter, we could upgrade A LOT OF ROBOTS!

Therefore it might be a good idea to start a list of compatible devices. So if you have a cheap robotic lawn mower, it would be nice of you to check, if it contains the same mainboard as ours and send me some pictures / model numbers.

More Infos

This page only contains the basic overview of the project. To follow my current development state, check out my Blog.

Patents, Local Laws, Liability

Before building a robot based on the designs published here, please make sure that you are allowed to do so in your specific regions. There may be patents and / or laws prohibiting you of doing so.

The code/schematics/PCB files are distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

This basically means: I'm just documenting a project of mine here for free and I don't have the time and resources to check that devices built using this information will be safe to use, legal to use or even work as intended. You will need technical know-how to use this project and I'm not liable for any damages your devices do to anyone or anything.

License

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Feel free to use the design in your private/educational projects, but don't try to sell the design or products based on it without getting my consent first. The idea here is to share knowledge, not to enable others to simply sell my work. Thank you for understanding.

Owner
Clemens Elflein
Entrepreneur, Loves Software Engineering, Hardware Design, Robots and Open Source.
Clemens Elflein
Comments
  • OpenMower is not Open Source

    OpenMower is not Open Source

    The common definition of open source is that the source code and other digital artifacts can be used for commercial purposes. The non-commercial licensing makes this project not open source. A list of resources discussing the definition of "Open Source" is given below. The Open Source Initiative (OSI) has a list of approved licenses. The Creative Commons licenses that are libre/free/open are CC0, CC-BY and CC-BY-SA.

    Please consider removing the non-commercial clause in the license to make this project open source.

    If you decide to keep the non-commercial licensing, please consider renaming the project to something other than "OpenMower" as the term "Open" holds connotations of it being open source and causes confusion. Additionally, if you decide to keep the non-commercial license, please remove the "open source" project goal in the README.md file.

    For projects that aren't libre/free/open source but still wish to make their source available, a good compromise I've found is to indicate that the project has "source available" rather than specifying it is "open source".


    Open Source Initiative

    The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

    Wikipedia's entry on Open Source

    Licenses which only permit non-commercial redistribution or modification of the source code for personal use only are generally not considered as open-source licenses.

  • Alternative to custom PCB

    Alternative to custom PCB

    Is there a possibility to remove the custom PCB and use "standard components" e.g. pi cluster ?

    This would enable more people in development.

  • Versioning / Branches / Releases

    Versioning / Branches / Releases

    At this point it would be nice to think about release + versioning, since it's not optimal right now.

    Current State Currently, I'm just pushing updates and we're using the latest development state. This is fine for now, because I try to only push things that are working, but in the future it might be nice to have a "stable" release.

    Goal Since the OpenMower is basically two components, the hardware and the software, it would be nice to have a versioning system which shows which hardware version works with which software version.

    Also it would also be nice to provide a packaged bundle of hardware (BOM, Gerbers,...) and software (precompiled image).

    Progress Vermut on my Discord is working on streamlining the KiCAD releases and jakub is working on streamlining software releases.

    Currently the idea for hardware is to have a GitHub action which checks DRC, packs gerbers, generates iBOM, etc. This solves the problem of people just wanting to get Gerbers + BOM to order the PCBs without getting into KiCAD. This also prevents me from forgetting to generate the artifacts.

    For the software the idea is to have a GitHub action to pack a docker image. This allows people to quickly get the software, they won't need to compile + it's easy to upgrade.

    This issue is meant for discussion about where to go from here basically.

  • Enable Low Level Emergency Deactivation (Button)

    Enable Low Level Emergency Deactivation (Button)

    Problem Statement: Since the Mainboard of the Robotic Mower has been substituted the emergency Stop button functionality is assumed not to be working. This part is one of the most important safety measures beside the Gyroscope based deactivation of the mower, I propose to integrate a low-level emergency switch which deactivates the Motors.

    Expected Behavior:

    • If Emergency Button is pressed the Robot stops mowing instantly and requires manual reset
    • The low Level Controller (PiCO or similar) requires an reinitialization routine from Raspberry in order to restart operation
    • Saving the location and time of event on storage

    Proposed approaches:

    • Hardware based Kill-switch cutting the motor driver voltages
    • Software based ISR listening on the Emergency Button Pin and actively deactivates motors
  • Cutting grass in different pathways

    Cutting grass in different pathways

    More of a feature idea but when cutting grass you wouldn't want it to cut the grass the same way every time. So cutting it at 4 different angles (horizontal, vertical and diagonals) would be a good idea. That way you avoid ruts ref ref2

    dunno how you would implement this but if I have time later in the year I look into it from your code.

    btw nice work @ClemensElflein . Maybe from this we can implement this as a snow remover (just an idea on top of this way out of left field...). would be cool if you could add another motor to horizontal attaching a snowblower scraper and the flat motor as a fan blower with a controlled vent that could store the snow in a certain area.

  • Avoid filesystem corruption

    Avoid filesystem corruption

    I would very much like to build the mower and help with development, but for me to build it, it needs to be foolproof long-term, as I will be moving out soon, and I don't think my parents have any interest in reinstalling the operating system on their lawn mower.

    Raspberry Pis have a history of corrupting the file system on their SD cards, so I'd like to know if there are any mitigations for this, and if not, advocate for their implementation.

The PNT Integrity Library provides users a method to verify the integrity of the received GPS data and ranging signals, thereby improving resiliency against potential GPS signal loss.

PNT Integrity Library The PNT Integrity Library provides users a method to verify the integrity of the received GPS data and ranging signals, thereby

Apr 28, 2022
GPS parser which read raw GPS messages, selects only the valid ones and sends them to CAN bus

EagleTRT GPS System for Fenice GPS parser which read raw GPS messages, selects only the valid ones and sends them to CAN bus Compiling GPS Logger gps_

Nov 11, 2021
AI-powered Smart Robotic Process Automation 🤖
AI-powered Smart Robotic Process Automation 🤖

Automagica The Automagica project began in 2018 with a focus on creating open source software to ensure that Robotic Process Automation technologies w

Jun 20, 2022
Custom BLE firmware for Hanshow E-Paper Shelf Labels / Price Tags
Custom BLE firmware for Hanshow E-Paper Shelf Labels / Price Tags

ATC_TLSR_Paper Custom BLE firmware for Hanshow E-Paper Shelf Labels / Price Tags using the TLSR8359 ARM SOC You can support my work via PayPal: https:

Jun 18, 2022
This is an upgrade to the initial TerminalOS source, supporting real hardware other than just QEMU, using GRUB as a bootloader instead of the crappy one i wrote

Terminal OS Author: Maheswaran Date: 20th Nov 2021 PROGRESS Multiboot compilance achieved VGA driver from complete with print_hex, print_dec, printf f

Nov 28, 2021
Broadcom PatchRAM DFU (Device Firmware Upgrade) utility for macOS.

patchram Broadcom PatchRAM DFU (Device Firmware Upgrade) utility for macOS. Based on original dfu-tool & dfu-programmer for Linux and BrcmPatchRAM for

Jun 12, 2022
A simple tool used to upgrade things quicker in the online game Rust.
A simple tool used to upgrade things quicker in the online game Rust.

ex0 Rust Tool ??️ What is this? ⚡ This is a simple script with multiple tools such as a code enterer and a auto upgrade feature! ??️ Features ⚡ Any se

Jan 1, 2022
Calido - Open Smart Thermostat and Smart Home Controller. Built on a Thingy:91 (nRF9160).
Calido - Open Smart Thermostat and Smart Home Controller. Built on a Thingy:91 (nRF9160).

Calido - Open Smart Thermostat and Smart Home Controller based on a Nordic Semiconductor Thingy:91 Project can be found here (Electromaker.io). A Make

May 11, 2022
2D/3D Registration and system integration for image-based navigation of orthopedic robotic applications, inculding femoroplasty, osteonecrosis, etc.

Registration and System Integration Software for Orthopedic Surgical Robotic System This repository contains software programs for image-based registr

Jun 11, 2022
This package contains the common algorithms in robotic arm, and I have developed it based on universal robot. It will be continuously updateing.
This package contains the common algorithms in robotic arm, and I have developed it based on universal robot. It will be continuously updateing.

Robotic_Arm_Algorithms It contains the common algorithms in robotic arm, and will be recording the development as soon as I have completed the any one

Jun 14, 2022
Arduino based bicycle movement sensor and GPS tracker
Arduino based bicycle movement sensor and GPS tracker

Bike Tracker Background There are actually plenty of bicycle trackers around, so why make your own? Well, so that it works the way you want it… And it

May 7, 2022
ModuLiDAR is an all-in-one open-source software for autonomous UGVs and industrial robots.
ModuLiDAR is an all-in-one open-source software for autonomous UGVs and industrial robots.

ModuLiDAR is an all-in-one open-source software for autonomous UGVs and industrial robots. the target industries that ModuLiDAR is working on are farming industry, mining industry, warehouses industry, and construction industry.

Jun 16, 2022
Otto-SetupAssist provides an Arduino sketch which assist you to build Otto robots.

Otto-SetupAssist Otto-SetupAssist provides an Arduino sketch which assist you to build Otto robots. This sketch provides two features: Move servos to

Oct 20, 2021
Autonomous recorder for vex robots using the PROS API

VEX Robot Recorder Description This is a demo project for the "Recorder" class that allows the user to record and play back past recorded autonomouses

Jun 14, 2022
Local Navigation Planner for Legged Robots

ANYmal Rough Terrain Planner Sampling based path planning for ANYmal, based on 2.5D height maps. More detailed instructions still to come. The paper d

Jun 16, 2022
Wolf_descriptions - WoLF: Whole-body Locomotion Framework for quadruped robots

WoLF: Whole-body Locomotion Framework for quadruped robots This repo contains a collection of different robots and sensors used in WoLF. Setup See the

Feb 5, 2022
Collection of quadrupedal robots configured to work in CHAMP development framework

zoo This repository contains configuration packages of various quadrupedal robots generated by CHAMP's setup assistant. Installation You need to have

Jun 24, 2022
WoLF: Whole-body Locomotion Framework for quadruped robots

WoLF: Whole-body Locomotion Framework for quadruped robots This package contains the navigation stack to be used with WoLF. Mantainers: Federico Rollo

May 17, 2022
QtVerbalExpressions - This Qt lib is based off of the C++ VerbalExpressions library. [MIT]

QtVerbalExpressions Qt Regular Expressions made easy This Qt lib is based off of the C++ VerbalExpressions library by whackashoe. Testing if we have a

May 12, 2022