Coder Social home page Coder Social logo

clemenselflein / openmower Goto Github PK

View Code? Open in Web Editor NEW
4.3K 225.0 238.0 77.05 MB

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

License: Other

C++ 45.99% Shell 0.72% C 53.05% Gnuplot 0.24%
raspberry-pi arduino robot robotics gps ros rtk path-finding robomow lawn-mower

openmower's People

Contributors

apehaenger avatar clemenselflein avatar ene9ba avatar kevinmce avatar olliewalsh avatar peppe21 avatar perryc avatar rfvermut 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

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

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.

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

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.

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.

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!

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'!

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.

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

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

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.

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.

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.

rain sensor always powered

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

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.

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

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

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

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.

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

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.

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)

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.

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.