Mapping with Ardupilot

I've been playing with ArduPlane for quite a while and have finally got to the point where I can make it do something useful. I've been inspired by others on this site to use it for aerial photography to make 3D maps and the like.


I have an ST Models Discovery as the airframe (awesome platform for Arduplane by the way) and have made my own camera mount out of plywood for the bottom. It has one servo for roll stabilisation using CHAN 8 on the autopilot to keep the camera pointing down. It's basic but works pretty well (see pics)



Last weekend I flew over a small island on the river near my house. I managed to get 155 photos in around 10 mins and produce quite a reasonable 3d surface using hypr3d. I gotta say that these guys rock with great personal service and it's all free! They did struggle a bit with that many photos, but you can see the result below


3D Rotatable version

I'm not in the same league as some of the other makers of aerial maps on this site, and have no idea of the accuracy of this map, but was pretty happy with the early results and would like to work on this more to get better results.


my setup is

Airframe - ST Models Discovery Trainer with stock motor and 30A ESC

Arduplane 2.24 with Magnetometer, airspeed kit and xbee - a few lines of code added to output roll stabilisation

Home made camera mount with roll stabiliser

Canon IXUS 50 camera 5MP (this is a very light P&S camera) running CHDK

Spektrum DX 7 2.4GHz tx/rx

2200 mAh 3s motor battery + 1000 mAh 2s battery to power all other electronics via a UBEC (the stock BEC is too small)


I used Mark Willis's aerial coverage spreadsheet to calculate the waypoints before launch and it seemed to produce a good result.You can see the waypoint in the following screenshot








E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Jo - most still images taken from videos will suffer from compression artifacts and can also be quite blurry when taken from a moving plane as the shutter speeds are slower than a still camera.

    You don't notice when it is played as a video, but looking at individual frames you will see these issues. As pointed out by Cliff, they will be much lower resolution than an image from a still camera (even a cheap one). I have tried using frame grabbing software and a video file, but the results were not that good.


    @Luiz - sorry for the slow response, I will try to get you my params, I have been very busy at work over the last few weeks. My params are similar to the stock setup. I think I changed the X-track gain to around 180 and also changed the roll P to 0.8, but it's been a while so will need to confirm those numbers.

  • I'm not a gopro user, but most video imagery I am familiar with does not have the resolution or quality that still frames acquire, so you might have a significant penalty in resolution. Even HD at 1920x1080 is only 2 megapixels. Also, you may have difficulty georegistering video converted to frames, as you will lose any timing information that you would have with a framing camera in order to match up to a gpx file.

  • Dear Jame and everybody,

      Rather than using still camera, can we use video camera such as Gopro to shoot continuous video and convert it to image later by video-to-image converter software? Then we can choose overlapped image for [Hypr3D]

    Please advise  thank you


  • looks great James, listen I am using the Apprentice for my project and was wondering what would be a good configuration file for my airframe, your plane looks very much like mine is there anyway you can send me your configuration file so I can try? Thanks

  • @Arturo - by psmv2 you mean photosynth? I did try using that service. It was by far the fastest way to do it, but the point cloud I got back was very noisy. Even in the smooth grassed areas in the middle, the points jumped around a lot. The hypr3D point cloud was much better in that respect. It was around the same number of points, also.

  • Hi James,

    thank You for the description.

    I also had problems with using channel 5 and 6 for the camera trigger servo. Channel 7 works.

    Maybe it has to do with the flap functionality on 5 and 6?


  • Nice work man, i have a question, can you obtain the same results with bundler and psmv2? because i have the software installed in a costum pc and i only probe it with small dataset  and i dont have access to large dataset like you.

    You have some experiance with bundle and psmv2?


  • @Frank - when the Camera branch is merged into the trunk I assume Camera Stabilisation will work out of the box. Until then, it is pretty easy to get it to work for a single axis like I did. Just add the following line of code to the end of fast_loop() function of ArduPilotMega.pde


    APM_RC.OutputCh(7, 1500 + ((dcm.roll_sensor/100) * -5));
    Here, 7 is the chanel (it is zero based so 7 means channel 8).
    The rest of the function sends a value to the servo to move. The negative is needed to reverse the roll from what the plane is experiencing so the camera points down.
    The value 5 is just to scale the output. Play around with this number to suit the servo you have. Somewhere between 1 and 10 should work ok.
    This will give you roll stabilisation all the time, even in Manual mode.
    I have found that if use channel 5 or 6 I get weird and sometimes violent twitching of the camera servo at random intervals. It's not related to XBee or any other servo twitching cause I have encountered before, but channel 8 doesn't seem to have the problem.
    @Tormod - my picture above gave me around 400k points in the high res point cloud. If you look at the 3D image even in the web browser you can see issues in the shadows of trees near the road. Some kind of probability score tagged to each point would be useful to estimate its error, but currently this service doesn't provide that. I guess Hypr3D hasn't pitched itself at the DEM market, so this could be added later if they want to go down that path.
    I don't have access to any high end GIS software like PCI geomatics so haven't created a grid from the point cloud. We do have CAD type meshing tools here at work and I get a reasonable result from them. Next step is to figure out how to scale and georeference it!
  • Tom, I may be wrong when comparing the method used in Hypr3D for image matching with the DEM generating methods I'm used to (I'm probably outdated :) )...  Correlation/score is a quality measure in means of the correlation per pixel in the resulting DEM/point cloud.


    From PCI Geomatics:


    Q: What is the score channel?

    A) The Score channel is an auxiliary channel that is created for storing a scaled correlation score for each pixel in the DEM. This gives you a good start when you look at DEM editing in order to identify areas of possible errors where the overall correlation scores were not successful. Don't forget: if there are holes in the DEM where the correlation failed, they are often filled or interpolated in the DEM extraction process. Just because the pixels have values does not mean that they were successfully correlated on the ground. Use the score channel to get the true impression of where the data was extracted successfully.

  • Tormod,

    What do you mean by "score/correlation" channels?  I'm not familiar with those terms in the context of 3D modeling.

    -Tom (

    澳洲幸运10APP下载丨专注于彩票的安全购彩平台,澳洲幸运10APP下载丨专注于彩票的安全购彩平台【网址 XG333.COM-XP】业界最高赔率1.999,定位9.99]澳洲幸运10APP下载丨专注于彩票的安全购彩平台网站经验和技巧。百胜彩票整合算法,33彩票怎么样才能赢到钱,粤海彩票怎È
This reply was deleted.