Measure Soil Height Alpha

Hi all,

Today we’re making an exciting new feature available as a public alpha: the ability to measure the height of the soil using just FarmBot’s camera and some fancy stereo photography magic :sparkles:

We’re hoping to gain feedback from those of you willing to try it out in this early stage :slightly_smiling_face: Some information that would be useful:

  • What are the overall results you’re seeing? (Accurate? Biased in one direction? Lots of outliers? etc)
  • How was your overall experience with calibration and scanning? (Confusing? Easy enough? Time consuming? etc)
  • Please describe or share a photo of the environment you are working with (type of soil/mulch, lighting, plants, etc)
  • Did the process ever fail? If so, please describe the circumstances.

To get started, check out this new page on the software documentation hub:

And for a deep dive into the inner workings, see the developer docs here, and source code here.

We look forward to your feedback!


This seems like a good and V useful solution to what has been, for me anyway, a bit of a bugbear. I am just waiting for the camera cable to arrive from you, so that I can set up a permanent camera, then I’ll provide feedback.


It would be nice if the Soil Height option in the Z axis column of Move commands was calculated on the fly, based on surrounding soil height measurements. This is of course assuming the soil is fairly flat with no random heaps or pits, but I think this is true in most cases.

I’ve posted a suggestion in GitHub for using barycentric coordinates to calculate the soil height based on the closest 3 soil height measurements.

Find the `z` of the soil height
based on the UTM's `x` and `y` position
using barycentric coordinates.

                 b  ← -515 mm
               / |
              /  |
             / + |  ← -507.92 mm (rounded)
            /    |
-498 mm →  d‾‾‾‾‾c  ← -505 mm

Yes this was the plan @mdingena. We may make some slight tweaks to it for CPU / simplicity sake but that’s generally the idea we are going for.

1 Like

Great idea to measure height of the soil or of the plants!

If this feature proofs valuable for the users, you might consider to evaluate the camera technology. For example ToF (Time-of-flight) requires just one camera compared to stero vision or at least one camera that does not need to be moved to calculate height. This results in less complexity and the technical need for calibration vanishes. Looking down from just a single point is beneficial whenever there is a lot leafage in the way. Stereo vision always requires two camera positions.

ToF ranging sensors are widely available, e.g. simple ranging sensors available at hardware stores. In addition ToF measures height in the pitch black because it does not need visible light as illumination of the scene, just a few infrared LEDs or VCSEL. This fits nice with irrigation during nights in order reduce water consumption caused by evaporation through sunlight.

Best wishes from good old Europe :slight_smile:

1 Like

This was actually on our list of possible solutions. Even though the webcam might not offer the same resolution as a ToF or LiDar, it does have advantages:

  • Problems can be fixed with an OS update (not possible if we need to engineer a custom PCB for a ToF sensor)
  • Everyone can benefit from this feature, even folks running older v1.2 devices.

Have a great day!


I love that the good people at FarmBot don’t always choose the best tool for the job, they choose the tool that they have the best support for. Sure, a webcam needs scene illumination to be useful, but it’s so versatile and yet easy to support. :+1: