Agribotix's GoPro Adventure
The Agribotix precision agriculture team has been using modified Canon S100s this growing season for almost all our UAV-based imaging. While there are a lot of good things to say about the S100 (low cost, high resolution, pretty good optics come to mind), in general they have been the greatest source of difficulty in the field for Agribotix. Here are our main gripes:
- With the Event38 red-notch filter installed, the manual focus no longer works. Autofocus on the S100 operates using a contrast detection algorithm, which just isn’t reliable for canopied-over “green-on-green” crops.
- As is well documented on the official Canon website, the S100 is prone to a lens error when it gets hot (not that this ever happens when we are flying corn fields in Illinois in July…). Sometimes the camera recovers when it cools but we’ve had to send a bunch back to Canon for $160 repairs. Canon refuses to fix this self-admitted design flaw.
- A retracting lens is just plain a bad idea for UAV use, especially in agriculture – both from a lens vibration standpoint and fragility.
- Weight. At 190g we’re carrying around a lot of stuff we don’t need.
- CHDK just isn’t ready for prime time. The “H” (i.e. hacker) aspect of it is all too apparent.
So what we need is not a full function camera like the S100 but a bone-simple rugged unit. Our ideal camera would have only a fixed focus, fixed focal length lens, a sensor (5 Mpixels or greater), the glue to make it work together — and nothing else. It finally dawned on us that the GoPro is pretty darn close to ideal.

The showstopper for the out-of-the-box GoPro is the silly fisheye lens. I wrote a post a few months back about the Ribcage mod to the GoPro, which seemed like a good idea. But it’s pretty expensive and is a major project to install. However I recently discovered that GoPro uses a standard S-mount (aka M12) lens and that it’s removable. So there’s no reason to use the Ribcage unless you want to use C-mount or larger lenses.

Thus, we’ve started down the adventure of making GoPros work for our precision agriculture UAVs. The first step is to get the lens out – and it’s not quite as easy as I made it sound above. GoPro puts a bit of glue on the M12 threads so it’s a white-knuckle affair to unscrew the lens. Check out some useful YouTube videos on this process before you make the plunge: RageCams, Peau Productions, Ifti’s Tech Corner. But in the case of the Hero3+ Silver that I modified, the lens came out much easier than is shown in the videos.
I found a wide selection of M12 lenses at Peau Productions. The ones they call “NightVision” do not have the IR-blocking filter installed, so that’s what you’ll need if you want an NDVI setup. I first bought a 2.97mm focal length lens, which is amazingly wide angle but has no apparent fisheye. However, Photoscan Pro is having a hard time stitching the images from it cleanly. The image below is a zoomed section of what is, in reality, a straight road. I have a 4.14mm lens on order from Peau that I hope will address the problem. Or it could be that the calibration parameters from the Agisoft Lens program will solve the issues of the 2.97mm. All my testing with lens calibration targets shows that the Peau Productions lenses are as good as the S100.

The final step is to get the Event38 filter installed in the GoPro camera. And we have to credit dumb luck for this working out. It takes some work to open up the GoPro to get access to the sensor element (the teardown guide in the Ribcage documentation will help with this step). It’s little harder than getting to the sensor in the S100, but not by a lot. The dumb luck is that the 8mm x 10mm Event38 filter fits perfectly into the GoPro lens holder as you can see in the photo. A bit of CA glue in the corners tacks it down securely.

So, that’s about all it takes to turn a GoPro into a kickass NDVI drone camera. In summary, here are the good things about the GoPro:
- Small and light (46g without the battery)
- Tough
- Fixed focus
- High resolution (10 Mpixel for the Hero3+ Silver)
And what’s not to like:
- I can get S100s on eBay for around $180, but the Hero3+ Silver plus the Peau Productions lens is more than double that. We’re working on a low-cost source for cameras – stay tuned.
- The S100 has a GPS, which syncs the camera clock exactly to the flight controller clock. Without the syncing we need to take a picture of the ground station screen with the GoPro and manually sync the photo EXIF metadata. The syncing is required for geotagging the photos, and the manual step is a PITA. We are working up a solution that; if it works out I’ll write a post on it soon.
Go ahead and Connect with Agribotix if you’re interested in learning more about UAVs for precision agriculture, NDVI and other vegetation index image processing, or just want to ping us about fun projects like this one.
you might try a $80 Mobius action cam. Video is great, and its only 39g. Photo mode is 2304 x 1536
This guy has already NDVI’ed one, but still needs correct filter: http://publiclab.org/notes/cfastie/04-26-2014/mobius-ndvi
Still thinking about how to how to inject GPS data from the APM into the jpg meta fields.
john kiloohm.com
John, Thanks for the heads-up on the Mobius. We need a minimum of 5 Mpixel resolution for our image mosaicking software to work but that camera would certainly do the trick if high resolution isn’t needed. Reading the docs I could find on the Mobius it wasn’t clear to me if it has a setting to take .jpegs. It looked like all the modes were for video. One final question: I didn’t see how Public Labs removed the IR-blocking filter from the Mobius. The Canons are unusual in that the IR-block filter comes out so easily. Most other cameras I’ve worked with have the filter permanently built into the lens.
How could you set custom white balance to the modified Gopro?
Or you will use dual camera system for processing NDVI image?
Rick, You are right, the GoPro doesn’t have any custom white balance options. When we were using the S100s we originally set up a custom white balance using a blue background (I think this idea originated at Public Labs, but I’m not sure). Then we moved away from that and went to the "Cloudy" setting as suggested by Jeff Taylor of Event38. When it comes right down to it, we don’t see much difference in our ground truthing no matter what white balance setting we choose. Time will tell, but we anticipate that the auto white balance (or whatever the GoPro uses) will be fine.
You don’t need change the lens of Gopro anymore. The new version of Photoscan supports Fisheye image like Gopro original iamge sets.
Now I do hope to see your NDVI image generated from your Gopro with the specific filter.
Rick
Rick, Thanks for the heads up! I hadn’t updated to the latest Photoscan version but, clearly, I should be doing so. We’ll put up a post when we find out how it works. We’ll still need to change the lens to get rid of the IR-cut filter because it is permanently built into the GoPro lens (unlike the way Canon does it). But being able to mosaic RGB with a stock lens will be a huge help.
Would this modified GoPro work?
Have you had a look at the infrablu GoPro from IRpro – here is a link http://www.ir-pro.com/mini-camera-lenses/irpro-hybrid-ndvi-infrablu22-lens-for-gopro-hero3-black
From what I can see it should work – agreed?
Chris,
Thanks for the heads up on the lens from IRpro. It looks like it would do the job, although at a slightly higher cost than the Peau Productions lens and an Event38 filter. IRpro doesn’t provide any spectral response data for their red-cut filter so it’s hard to make a technical comparison between the two approaches.
Tom
Tom
Thank you for the information. Please send a link to the Peau Productions lens that you intend to use now. I saw in your original post that you said that you were using the 2.97mm – but that it caused problems with the image alignment – and that you have ordered a 4.14. I could however not find a 4.14 mm night-vision lens for the GoPro 3+ black on the Peau Productions site. I looked at this page: http://peauproductions.com/store/index.php?mainpage=index&cPath=124126163127
Chris
Chris,
Peau Productions doesn’t list a "night vision" (i.e. no IR-block filter) lens on their web site. We’ve had good luck with the normal 4.14mm lens so far but we haven’t set it up for NDVI yet (I’ll be putting up another blog post on the latest GoPro developments when I get a moment). I’ve been in contact with some supplies through Alibaba that can provide any lens we want but haven’t placed and order. I also need to contact Nolan at Peau to see if they can get that lens without the IR-cut filter.
Tom
Thanks for this great info! I don’t understand which lense you ended up using.
Was it the 2.97mm or the 4.14mm? Were you able to solve the stitching problem with either?
I’ve been contacting IRPro support and they were very helpful regarding how to change the lense. However, they were not able to provide me with the spectral response, which I believe is something basic if you wish to do NDVI analysis.
Keep these posts coming!
Gabriel
Gabriel,
The 2.97mm lens didn’t have any obvious distortion, but Agisoft Photoscan Pro couldn’t handle the images. We’ve used the 4.14mm lenses with and without the IR-cut filter and had good luck with them. One camera manufacturer told me earlier this week that keeping the FOV even lower is better for image stitching. They use a 30 degree FOV, but that would require a lot more flight distance for the same coverage area.
Event38 publishes the spectral response of their red-notch filter and it is amazingly sharp. For $60 I guess we should expect that. On the other hand, the stuff used by the Public Labs Infragram project is dirt cheap, although the band edges are a lot sloppier. http://store.publiclab.org/products/infragram-diy-filter-pack.
It’s impossible to say a priori which filter is better. The only way to do it is through ground truthing of you images. And I suspect it will vary from crop to crop. We get excellent results for corn with the Event38 filter setup. So if you’ve got a lot of time and inclination to experiment, I’d say try a bunch of stuff (and let us know how it works out!). For us, we can afford the Event38 filter so we’ll probably stick with it.
Best,
Tom
Hi Tom.
How do you expect to compare two NDVI images from different days? Are you planning on using a white/blue pattern for calibration?
GoPro Hero 3+ Silver edition doesn’t bring the option to take pictures in RAW format, and it doesn’t allow you to do white balance adjusting, which I believe it will be a problem when trying to get accurate data for comparisson.
What do you think?
Best,
Gabriel
Gabriel,
Currently all our customers want a relative vegetation index across the field, rather than a calibrated absolute map. Thus we don’t do any in-field calibration of the cameras. If we have requests from our customers to do temporal studies of their crops then we’ll need to use in-field calibration panels, but all this increases the cost of the service. In the US, the farming margins are pretty low so we need to be cognizant of delivering a high value product for a reasonable cost.
We use the "Cloudy" white balance setting on our S100s on the recommendation of Event38. At this point it seems that the white balance issue is still an open one for NIR-modified cameras. Can you give us any insight?
Best,
Tom
Hi Tom,
I am very new to this, but I am very interested in this topic. We will be adquiring both the IRPro and the Event38 solutions to modify out GoPro and we will also buy a GoPro Hero 3+ Black edition or GoPro 4, since either allow you to save in RAW format..
I’ll keep you posted if I find something interesting.
Best,
Gabriel
Thanks for this info,
Im working on how to collect NVDI images of broadacre crops here in Australia.
Your info is a much more affordable option that may fit to our existing gear so that we can validate things with our drones.
We hope once we have validated it with growers we will be in a position to step up to the next level as you have:)
Keep the posts coming, they keep little people like me inspired!
Ben
I just ran across this post and it might be just the excuse I need to migrate from my Phantom 3 advanced to the 3DR Solo! I’ve been looking hard at the switch, but hadn’t found the additional value for the additional expense. With the Solo accessing camera control remotely, and this ability to modify the GoPro, I think you’ve hit my mark!
So I’m clear… all I need for this conversion is:
–GoPro Hero3+ (might as well go with the +)
–Event38 Filter
–Peau Productions 2.97 mm Filter (should I go with the 4.14mm filter?)
At the current time, I’m not mapping or stitching photos for maps (I say, currently) I’m looking more at overviews and stills.
Again, Thank you! happy to have found this blog!
I recommend using the Yi xiaomi they are 16 megapixel may be the same or better than go pro.
http://www.amazon.com/Xiaomi-XYACWW-Action-Camera-Wi-Fi/dp/B0148TNDXY