Basic question about sequences and defining plants

I am not sure if this is the best way to start, but here is how I am setting up our Farm(Bot):


  1. I am using the Web UI exclusively - no FarmWare (yet)
  2. This is all in reference to the SW - I will note the non-SW related tasks as needed

How I have programmed FB so far:

  1. Plan the plot
    a) Picked the crops (Carrots, Kale, Cauliflower, Beets, Lettuce, Broccoli, Green Onions, Cilantro, Bell Peppers, Habanero Peppers)
    b) Created (using Farm Designer) the actual layout - Placed the crops (in rows)
  2. In the Sequences tab, I created a bunch of “Move To” Sequences
    a) One for every plant
    b) Name and structure is: “Move To Row #01 Carrot #01” - This creates a X & Y on the 2D grid, and I left Z at “0”
  3. Now that I have each plant defined, I use this as my atomic for all the rest of my routines (Water, Seed, etc.)

So, my question is this:
Before I get too deep into the sequences, is there a better way to call out and define each plant, or is this the basic format most FarmBotians follow?

Thanks for any input and ideas.

Just to add more detail to how our garden grows…

Using my plant atomics, I created a series of sequences to water. Because I want the FarmBot to water and move as efficiently as possible, and because we may, over time, want one row of crops watered at a different frequency, I created two “sub-sequences” for each row that instruct FB to go in a set direction for each row and a “Light Water” sequence.
“Light Water”:
“Turn Water On”
“Wait 2000 ms”
“Turn Water Off”

Direction #1 (“Water Onions Row #01 Onion #01 To #42”):
“Move To Row #01 Onion #01”, “Light Water”, Move To Row #01, Onion #02”, “Light Water”…

Direction #2 (“Water Onions Row #01 Onion #42 To #01”)
“Move To Row #01 Onion #42”, “Light Water”, “Move To Row #01 Onion #41”, “Light Water”…


Direction #1 (“Water Carrots Row #02 Carrot #01 To #42”):
“Move To Row #02 Carrot #01”, “Light Water”, “Move To Row #02, Carrot #02”, “Light Water”…

Direction #2 (“Water Carrots Row #02 Carrot #42 To #01”):
“Move To Row #02 Carrot #42”, “Light Water”, “Move To Row #02 Carrot #41”, “Light Water”…

Now I can create a sequence that uses these sub-sequences based on the ending position of the last row:

Main Water Sequence #01:
“Turn On Lights” (FB is at a school - This lets the kids know it is about to start)
“Find Home” (Set everything to 0, 0, 0)
“Get Watering Nozzle”
“Water Onions Row #01 Onions #01 To #42
“Water Carrot Row #02 Carrot #42 To #01
… (do all rows)
“Find Home” (reset to 0, 0, 0 so next step has good registration)
“Return Watering Nozzle”
“Turn Off Lights”

Next, I created Farm Events that call these mega-sequences each day (or every other or 2x a day or whatever)
Over time, if we decide we want row one watered every other day, I would then only need to remove that row from a sequence, replace any rows after it with the other direction for those rows, save it as a new sequence and then replace that event in the Farm Designer.

Ok, if you got this far and I have not confused you (or myself), here are the questions:
1). Is this a common method folks use? (or similar)
2). Can anyone show a more efficient way to do the same? This method produces a lot of sequences for us. We have 15 rows and 310 crops - do the math and you (we) end up with many, many sequences.

Welcome thoughts, feedback, ideas, criticism (be nice) or any other commentary…

Also, a bit of an aside:
While sharing raw dedicated nested specific sequences might just great noise, finding a way to share methods, flows, structure composition and logic would be, imho, VERY useful.
If only we had a common framework (thinking flow chart like) that we all could use…

Thanks for sharing your methods Tony. I have used a similar method before, though I find it unwieldy when the number of plants exceeds ~30. A lot of this will be solved with our implementation of variables though in the meantime here is another method I’ve used that you could consider:

If you your plants are in rows, evenly spaced, and you are taking care of them all in the same way (for example a row of evenly spaced Onions all planted at the same time) then consider this method:

Water Row 1 (42 Onions)

Find Home
Move To: First Onion
Execute Sequence: Water 7 Onions
^ Repeat 5 more times for 42 Onions total
Find Home

Water 7 Onions

Execute Sequence: Water 1 Onion
^ Repeat 6 more times to for 7 Onions total

Water 1 Onion

Execute Sequence: Dose water
Move Relative: The distance to the next Onion

Dose water

Control Peripheral: Turn on water
Wait: 2000ms
Control Peripheral Turn off water

One weird side effect of this is method is that at the end of the “Water Row 1 (42 Onions)” sequence, the FarmBot will Move Relative one final time (to a place with no Onion) before returning to home. That usually isn’t a big deal though if you have the Stop at Max setting enabled.

Awesome! (and Thank you Rory & FarmBot!)

Here is the first challenge! (for me)
All my plants have coordinates matching the following:
X = The X-axis coordinate of the plant
Y = The Y-axis coordinate of the plant
Z = “0” The default that a plant is created at when placed on the map.

Now, I created a bunch of sequences to move to the plants, and then to water the plants.
The FB gets the Watering tool, travels to the first plant (its x,y & z coordinates), waters, them moves to the next.
Now, lets say I want to water plant “A” from a Z-axis position of “0”. All is good!
But, if I want to water from any other position, I have to set an offset, for that plant.
And, If i want to water the next plant at that same height, the FB will either raise the Z, travel to plant “B”, and then lower Z, or I have to explicitoy set the “Move To” for each plant.
Lots of Z movement or edits…

So, it seems to me that I can either go and edit all my plants (300+) to have a Z that is maybe in the middle, or edit each “Move To” in each sequence to eliminate the Z moving, except when I want it to.

Does anyone have any other thoughts or ideas?

hello @Intelbotfarmer, you need to use the Offset in the move to command , to establish your Z coordinates to watering.