(Not sure if this is a support 'help me' or an ideas 'wouldn't it be nice if we could' post, leaning support as it's not really a Collect function)
I've been dithering around how to more easily get distance measurements and also reduce keying errors (@Dalerhoda) and was wondering if someone else has gone further down this path already and identified the dead ends or workable solutions.
I have two use cases currently
On a new/existing photo, or a preexisting drawing, add a measurement annotation(s) and populate its/their label(s) with the measurement(s), ideally directly with the value from a laser rangefinder / distance measurer (LDM) and not by keying in, then in the form use 'choose image' to select this image and use in the ODK form, already annotated (also works around existing annotation resolution limitations if resolution > device resolution is required).
In a form where a distance / area / volume values are required, the decimal widget could be manually keyed in with the value after measuring on LDM, but ideally the form launches an external app and that returns the value to the widget.
Identified manual method
There are plenty of LDMs that can measure direct length/area/volume as well as indirect (pythagorean method) height, these can easily be used to measure the item of interest then key in the value.
Many of these also have BTLE to be controlled by an app and transmit those values to the app to use in annotation and some are able to then be selected via Choose Image/File.
Existing connected devices & apps
I have tested a Bosch LDM and their own app (MeasureON) which will allow you to drop an annotation arrow with measurement to a plan/photo pulled directly from the LDM or recent values, however the image/PDF when exported can only be 'shared' to certain apps, or (for now) dredged up using the Files app that can reach into the Android FS after sharing. There's no way to export and save or make the exports visible to the device.
The Leica Disto app will also allow you to annotate a plan/photo with values retrieved over BTLE, and these exported images are available on device (and thus in a 'choose image' widget). This solves the creation of an annotated image/plan to then 'choose image' or 'choose file'.
There are also some non brand affiliated apps that work with many brands of LDM eg ImageMeter, that provide similar functionality and aren't tied to any specific brand, however they are paid apps if you don't want watermarked exports.
Ideal solution
I'm not currently aware of any apps that can be used with the external intent (or if it could be used with the above apps), and my dream would be one that can be called to return an image (annotated JPG) / a file (annotated PDF) / a measurement (decimal) or series of values into a field list (length/width/height/units of measure etc).
Existing work?
@Florian_May did you ever do anything with this? @seewhy you use a Leica LDM? @mathieubossaert do you use LDMs for tree height etc? Does anyone else have experience in this area or also have a need to do this?
We are working on making it possible to specify which application to use to capture an image. If any of those applications respond to the ACTION_IMAGE_CAPTURE intent, they could be used to get an image back. I don't know how likely that is, but it might be worth looking into.
If there's an app you like that's almost there, I think it's worth contacting the developers, even if it's a big company like Bosch. It may be very little effort for them to enable this whole new interaction that they'd be happy to support (e.g. by exporting to the Downloads directory, by responding to ACTION_IMAGE_CAPTURE, by implementing the ODK-specific spec for returning values).
I have actually reached out to Bosch to even make the image available to the device / gallery, they 'are considering it'
I have a Leica on the way and once I've tested both some more with their and 3rd party apps I'll see if any of the developers are willing to implement the intents.
Both Bosch and Leica appear to use the device own default camera app, as it behaves similarly to take picture in Collect.
Sadly there was no bandwidth available to tinker with the rangefinder. Would have been useful for animal spotting (Western Ringtail Possum sitting in trees, getting a height above ground and absolute coordinates from observer coordinates, rangefinder point on animal, rangefinder point at ground level below animal).
A related wish list item is a PIT tag scanner, which would be useful both for turtle monitoring and @Stuart's donkey sanctuary.
From testing Bosch (GML100-25C) & Leica (Disto D2) (not Dewalt or Stabila or others) with their own apps and ImageMeter, a few notes for others
Using non direct length functions (area, volume, indirect height), the Leica transmits each component but only displays the calculated result/units on device along with the components, vs the Bosch displays the components and result but transmits the calculated result/units - this complicates app intent if doing more than a single distance capture.
"indoor" units don't have a bright enough laser to see outdoors in daylight, but if the unit has a camera with reticule you can place it on the target and be sure you have the correct position.
I'll get some field testing with these soon to gather simple distance measurements to be keyed in, but leave the rest on the back burner.
I have various use cases that I've thought about that could also use RFID type scanning! Nothing pressing though.
We've looked at the PetScanner scanners because they're offering cabled (= reliable) and affordable enough units but found that the scanner isn't powerful enough to detect a PIT tag in a turtle neck. The applicator needle is about 5 cm long and the tag can wander. Our approximation is to scan a tag with your forearm covering it.
So on the scanner front we're still looking for a scanner that's cheap, powerful and has a well documented API.
@ahblake Any updates on this with regards to getting any of this data into ODK Collect?
@mathieubossaert Have you found any way to easily measure tree height using any sort of external app? I’m hoping that an app/software solution that doesn’t require external hardware could be used.
Ideally I’d like to measure tree height as well as crown/canopy circumference/diameter. The trees I’m measuring are all small/medium sized and would have a maximum diameter of 10-15m and a height of less than 5m.
I never made any progress, but it's definitely solvable.
I tried leica and bosch LDMs, and they both connected to their own apps to activate the measurement and read that value and also to a third party app that could read from many different LDMs.
They all pair over BT, but there is some funny behaviour with what's returned when you get out of straight linear (i.e. two or three point Pythagorean height which you would probably need for tree height). Measuring and then copy paste is possible, but you may as well measure without the app and key in the value as shown on the screen...
I contacted leica with some questions and suggestions but didn't get anywhere.
Have a look at imagemeter, maybe this could be extended to return intents to Collect (its a freemium app)
As part of my projects, we developed an odk form for monitoring tree-related micohabitats (https://www.wsl.ch/en/publications/field-guide-to-tree-related-microhabitats/), involving height and diameter measurements, but we used a classic forester's compass and a nikon forestry rangefinder for the measurements.
Under Odk, the phone's tilt sensors could theoretically be used for tree height combined with tree distance following formula in relascop manual. It what's Moti do !