Detecting and tagging weeds outside of garden boundry

Why is the weed detection algorithm marking weeds outside of the garden boundaries? Furthermore, the weeding tool cannot access these weeds and weeds close to the tracks (the head hits the garden side walls). Can the algorithm be tuned to not mark negative X and Y values and values higher than the defined garden boundry? Also, can I add another “safe for the machine” boundary so it does not crash into the sides of the garden?

Also, the limit of 1000 points is really difficult to deal with. My camera came defective. So without the Farmbot working to detect and remove weeds, I have thousands of weeds (i.e. thousands of points). Can the number of points be increased so I can use the weed tool?

We’ve made a note of this for a future release. Thanks for the feature request.

If I am understanding your question, I believe this would require you to just set the correct axis length / home position in the device settings page. You might also be able to adjust the belt endstops so that the motor does not go past a certain point. Please let me know if this is not what you meant. The software currently does not support “no travel zones” in the X/Y axis, though that is something we want to add to a future app release. We partially support no travel zones in the Z axis by way of the “SAFE HEIGHT” setting.

We could do this, but I don’t think this is a good idea. the 1,000 point limit is not an artificial limit or a limit imposed for business reasons. The limit was created based on testing we did a few years ago about what a “reasonable load” was for an Express device.

Once the spring rush dies down, we hope to do a big refactor of the FBOS code relating to plant limits. Hopefully, we can change things then, assuming that performance tuning will make the DB more performant on the FBOS side.

Since you mentioned in a different thread that you are a software developer, I can point you to some comments I left in the codebase in 2019 that explain our decision to cap points at 1000: Farmbot-Web-App/create.rb at staging · FarmBot/Farmbot-Web-App · GitHub

module Points
  class Create < Mutations::Command
    # WHY 1000?:
    #  * This limit is placed for _technical_
    #    reasons, not business reasons. If it were
    #    reasonable to have that many points, we
    #    would certainly allow it. Real world use
    #    has shown that devices cannot support this
    #    many points (CPU limits).
    #  * 2019 RPis + Frontend UI cannot reliably
    #    handle > 1000 points.
    #  * Bots with > 800 points are outliers. Most
    #    users simply don't have that many plants
    #  * An XL bot at 100% capacity and 1000
    #    evenly space plants = 5 inch point grid.
    #    Smaller bed = higher resolution.

On the Express, where the camera sticks out, this contacts the motor side rail (where Y=0). If I adjust the Y axis stop, then the Y origin will shift causing every plant will be off. Also, the multipurpose head hits the other rail at full travel. I suppose I could bring in the upper Y stop in a few centimeters.

So another question arises, if I write a Lua script, could I delete certain areas of weeds? This would solve a lot of issues immediately. Like deleting every weed with a X or Y value < 0, deleting detected weeds from a defined area, etc. If so, where do I find a reference to the functions and variables that I would need?


This is possible and requires a medium level of effort. I will answer this question for anyone who has similar needs, and then I will provide a simpler solution that does not require special programming.

Deleting things with Lua: You would essentially create a web app token and then use the Lua HTTP client to perform a delete request. You could store the token in the Lua ENV helper to make things easier, since tokens expire after ~40 days. Warning: Since the deletion happens in custom code, it will take a few seconds for FarmBot OS to be notified of the data changes in the API. This is especially important to keep in mind during network partitions.

Deletion of all weeds via the UI:

  • Go to the selection menu
  • Set the SELECTION TYPE to “weeds”
  • Click “SELECT ALL”
  • Click “DELETE”
  • Confirm deletion

Deletion of specific areas via groups:

  • Create a group where the X/Y coordinates create a box around the coordinates you want to delete.
  • Filter down to type “Weeds” only so that you don’t delete live plants.
  • Go to the selection menu. Instead of selecting all weeds click “MORE” and then select the custom group you made.
  • Continue with the steps in the previous section to batch delete all weeds.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.