Git Product home page Git Product logo

openmower's Introduction

I am available for hire

Hello! With a background in software engineering, embedded programming, hardware design, and robotics, I'm on the lookout for new challenges. If you're in search of someone with my skills, let's team up and create something amazing! https://x-tech.online/




OpenMower - The DIY Smart Mowing Robot for Everyone



Join the Discord server for OpenMower discussion:



Warning

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!

Important

This project is active!

This is the hardware repository, so it might seem that the project is inactive, since hardware is pretty stable by now. Most of the development work is done on the ROS code here: https://github.com/ClemensElflein/open_mower_ros


About the Project

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.

Open Mower App

Open Mower App 1

Open Mower App 2

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

By now we have a stable revision of the mainboard as well as two motor controllers to go with it. The xESC mini and the xESC 2040. I'm currently using the xESC mini for my builds and it works very well. The problem with this controller is, its parts are currently hard to source. That's why we created the xESC 2040 based on the RP2040 chip. This is the low-cost variant and its support is currently experimental.

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
    • Discharge current for more accurate battery charge estimation
  • ROS Hardware Interface

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

Getting Started

If you want to read how to get started building a robot for yourself, check the OpenMower Website. There you can find information on which parts to buy, how to install the software and so on. If you find anything missing, please join the Discord server and ask there. Also there's the OpenMower Wiki which is written by the community. It has some additional guides and information.

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 (SUMEC 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 lots 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, you can check, if it was already disassembled in the list below. If it's not there, it would be nice of you to check, if it contains the same mainboard as ours and add your robot to the list with some some pictures / model numbers.

List of Compatible Mowers

By now, some guys have disassembled their mowers and it doesn't look as good as I initially hoped. The GForce boards are basically just used by YardForce and some rebranded versions for the EU market. My exact hardware was only found in the mower I'm using (YardForce Classic 500) and in recently manufactured SA650 ECOs. The SA650 has a different chassis and we don't have a way of mounting the GPS antenna yet. Therefore at the moment, the only compatible mower is mine (the YardForce Classic 500).

If you want to have a look at the disassembled mowers, check the Google Docs here

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.

openmower's People

Contributors

apehaenger avatar clemenselflein avatar docgalaxyblock avatar ene9ba avatar kevinmce avatar olliewalsh avatar peppe21 avatar perryc avatar rfvermut avatar rovo89 avatar vermut avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openmower's Issues

rain sensor always powered

rain sensor always powered? IIUC on most mowers just power it and measure resistance every few minutes to reduce corrosion

Add issues for development

Since there are some open tasks todo (e.g. build an app) I would be super happy about a roadmap/some "good starting point" tickets.

Maybe a Roadmap is a good starting point, from there we could create some tickets/tasks and some kind of structure (tags)

WORX Landroid M WR140

Naturally I tried to dig deeper and actually found evidence that the mainboard is manufactured by some chinese company (SUMTEC Hardware).

This part of the readme got me curious to checkout the board in my WORX Landroid M WR140.

It looks like it's a completely different board; however, I figured since I took the pictures, I mine as well post them in case this mower can somehow be supported. If that is the case, I'm definitely interested in getting off Worx horrible software, it is quite unimpressive.

PXL_20220409_153342547
PXL_20220409_153349160
PXL_20220409_153406487
PXL_20220409_153411795
PXL_20220409_153605631
PXL_20220409_172703437
PXL_20220409_182220776
PXL_20220409_182235377
PXL_20220409_182459327
PXL_20220409_183008382
PXL_20220409_183618978
PXL_20220409_183917893
PXL_20220409_190940609
PXL_20220409_184458987
PXL_20220409_184503052
PXL_20220409_184713152
PXL_20220409_185141976
PXL_20220409_185147627
PXL_20220409_185205689
PXL_20220409_185211200
PXL_20220409_185235826
PXL_20220409_185258440
PXL_20220409_190402496
PXL_20220409_190402496~2
PXL_20220409_190644818 MP

Option to mow in a randomized pattern?

Is it possible to have the mower to cut the grass in a randomized pattern and only use the perimeter as a "limit" for which it should stay within?

Having the mower cut on the same lines over and over again will create track's in the lawn. There is a reason to why husqvarna has spent a lot of time developing how the robot should find its way back to the charger, where it actually varies its distance to the perimeter cable to avoid creating track's.

Husqvarna has now released a gps rtk version of its automower (which is very expensive) and I think that stiga will release one soon as well. As far as I know, this still cut in a randomized pattern, while using gps for the perimeter limits.

Very good project though!

Model 500B (via Aldi Discounter) uses _two_ lift hall sensors per wheel / different connectors

Other stuff of the set was matching nicely. But Yardforce now uses a dual sensor at this model's wheels, it seems.
They are using a 4pin connector per wheel with about the same mechanical size as the old 3pin connector (higher density).
Both are Y-connected to one 8pin connector which even means there are different original UI boards when looking for spare parts, now.

They printed the connector pinout to the PCB at the wheel. If the connector locking-nose is directed downwards and
you're looking from cable to connector, the pinout is VCC-GND-HA1-HA2.

To be able to adjust LIFT_EMERGENCY_MILLIS

It would be great if the parameter LIFT_EMERGENCY_MILLIS (hard coded), could be changed using the UART communication, as the default value of 100 is really low for bumpy grass. As the value is hard coded, the only way to change is to recompile and upload the new firmware in the RPI Pico, not easy for making adjustments.

Test for and fix overvoltage conditions

when the mower is fully charged and the mowing motor breaks, the induced voltage spike might be too high.

  • we need to verify that this is happening
  • if it is happening, we need to protect against it

US/North American source for compatible base hardware?

As noted in the README, the existing platform is the Yard Force Classic 500 which comes from a Chinese OEM SUMEC Hardware and Tools which itself is a subsidiary of SINOMACH. Their "Brand" page lists G-Force, Yard Force, and PowerG. PowerG looks to be battery powered hand tools, which leaves the G-Force and Yard Force side of things.

Yard Force USA

The Canadian and US links from the SUMEC page bring you to YardForceUSA.com. They have a Robot Mower product page with two products listed, the RVX4E and RVX4. I can find no mention of these devices being made available for sale anywhere. I've emailed the US distributor and will update if I get an answer back. I eventually found an online shop for Yard Force tools in the US but no robot mowers are listed.

The international page for Yard Force lists different models than the NA page, and that includes a model SA500ECO which bears a passing resemblance to the Classic 500 (as well as being suspiciously similarly named). Amazon in the UK shows this model as no longer available and it appears to be an older 2018 device which they possibly are no longer making.

G-Force

This line is harder to pin down. The product page shows a handful of models, but I cannot find any listings for these mowers on sale anywhere. Product videos I've found are from 2015, so this might be an older line of devices.


If anyone else has any ideas as how to obtain a suitable mower deck in the US, post here and we can all get to hackin'!

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.

Perimeters

One issue that you may run into is that typically front lawns have neighboring lawns that you would want to designate a perimeter/border on. That being said being able to do this from the phone (i.e. AR) rather than wires would be preferred.

Is there a way to adjust blade height?

Actually this is more of a question or a feature request.
So is there a way to adjust blade height?
In my yard there are places that I would like blade to be lower and places where it should not be as low or it might hit something
Also this would be a great feature combined with other feature requests, while having different patterns in place one could make all kinds of nice patterns like on a football fields.
Pic for reference

Gardena Mower Compatibility

Hi fellow robot mower owners,

I was wondering if anyone has tried converting a Gardena mower with this project.

Some Gardena mowers have a slot for a smart module, and I am wondering if that could be a way into controlling it without replacing hardware.

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.

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.

Voltage drop during charging and charger improvements

The documentation recommend to set to 29.2v the voltage of the docking station.

When charging, the current is going through:

  • D3 and D2 diodes
  • R51 shunt
  • Q6 mosfet

The total voltage drop is around 0.7v, meaning that the battery can only get 28.5v (so it can't be fully charged).
Also, in the low level code, the charging is enabled until the battery reach 29v (that is impossible), so the battery is in float charging, something not optimal for Li-ion batteries.

Most of the voltage drop are in D3, D2 and Q6. The shunt value can be increased to improve its precision, for example with a value of 0.01R or 0.02R (the voltage will still be negligible).

A better way to manage the charging could be increasing the docking station voltage, then detecting when the charging current is under 50mA, disabling the charging until the battery voltage drop like 0.5v.

How to start to build the mower?

Hi.
I'm very interested in the project but It Is not clear how to start the hardware part. Which parts to buy, if It Is mandatory to have a dedicated PCB produced ecc

Improving the ADC

The low level code, running on RPI Pico, is reading 3 analog values:

  • Battery voltage
  • Power voltage
  • Battery charging current

The ADC seems to be noisy, using a moving average on 10 samples should improve the stability of the measures.

Also, I would be great if ratio can be configured (using UART commands) so calibration can be done for these 3 values (right now, the ratio are fixed in code, and I can observe a noticeable difference in voltage reading, this is especially important for monitoring the battery voltage).

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.

Work with bad WiFi coverage ?

Hi,

Thanls for hard work. Mower work, and Vermut kit permit a fast mounting scenario :)
Is there a way to provide a working mode with a low / bad wifi garden coverage ?
Indeed, in some place, WiFi coverage is ok, but in many another, coverage is pretty bad / nonworking.
Can we imagine a "best effort" mode with no rtk correction ? (RTK correction should be re-done when mower re-enter into wifi covered zone)

Regards

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.

WT901 overflow issue

If the magnetic offset of the WT901 is too large, the values will overflow or clip. This way the orientation in the open mower software will be nonsense.
The solution is to move the WT901's offset register in such a way that the values are in a sensible area. We should probably detect the overflow somehow and move the offsets accordingly.

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

Build availability?

Hi, due to safety concerns and time, is there anybody who can do this mod for me? Pay you for your time. Thanks

Remove copper below CC/CV module on Dock PCB

Since the red PCB for the dock does not feature standoffs anymore, we should remove the copper below the CC/CV module.

If people screw the module so hard that they damage the silkscreen, there might be shorts.

Classic 500B - UI-Board should match better if LEDs are shifted by about 1.27mm

This is a mechanical tolerance issue only.

The rounded outline of the PCB is about 0.5mm too near to the cover of the rain sensor in wheel-to-wheel axis.
I had to use a Dremel to remove some plastics (~1mm) from that side of the rain sensor cover.

This is probably connected to another minor issue:
I didn't put the rubber to the board and mount it but found it much easier to put the rubber in place at the cover
and place the PCB to its position from top.
Maybe this is caused by a shift between the fixing holes and the grit of the LEDs, which are shifted ~1.27mm at my mechanics, too. The holes are big enough to tolerate this with some stress to the LEDs, but one can see the holes not matching perfectly before putting in the screws.

For my mechanics, the LEDs should be moved towards the side of the rain sensor drain in wheel to wheel axis to
solve both issues. For the current PCB it might be useful to tilt the LEDs a bit. At an updated PCB - to keep it universal -, a further area at the rounded area should be removed.

Last main board pinout

Hello, i just ordered last mainboard, and i plan to install it in my old l200e robot mower (3 brushless motor) and i need the pinout of the last openmower mainboard to install it. Also i need to tune the esc with vesc software so in need to know where to connect the usb to set the vesc software ( are the vesc foc included foc capable or only bdlc?)
Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.