A successful APM aerial survey mission

On January 9 my partner, Gus Calderon and I, completed a successful aerial survey mission that covered abut 900 Meters by 650 Meters.  The results was a very high resolution picture of the area.

The aircraft:  Graupner Kadett


Motor:          Extreem Flight 2814T/820

Prop:            APC 13 x 6.5

ESC:            Hacker X-55

BEC:            Castle Creations 10 Amp

Servos:         4 ea.  Hitec HS65MG

GPS:            MediaTek

Telem:          XBee 

Battery:         Turnigy 3300 mAh nano-tech 25-50c

Autopilot:      APM1 Version 2.27 (Loaded via Mission Planner)

GCS:             Mission Planner Version 1.1.17

                     Mission Planner's 'Draw Polygon' and 'Grid' were used to generate the waypoint file. 

Camera:        Canon SD1100is with CHDK control (via relay through the camera's USB port)

Shutter:         1/1000 sec.

Aperture:        f/2.8

Focal Length: 6.2 mm

ISO:              320 

Stitch software:   ICE  (Microsoft Image Composite Editor)  PTGui was also used but it requires a lot of manual intervention.  It can give better picture placement than ICE.

Some stats:

The plane flew at 100M AGL, 10M/sec ground speed.

The flight lasted 17 min. and used 65% of the battery capacity.

There were 13 passes, 25 Meters apart.  The camera was turned on at takeoff an took a picture every 2 sec. for about 24 exposures per row.  556 exposures total.

The really good results:

APM did a very good job of controlling the aircraft.  (Look at the .kml flight path.)

The Kadett performed flawlessly.  Great payload capacity, strong, spacious structure, good endurance, has a short turn radius, and it is a very pretty airplane.

Resolution of the pictures is so good that the placement of irrigation valve covers (1.5 foot square or less) could be identified.

The not so good (but fixable) results:

The spacing of the rows was too close, we got too many pictures.  A lot of hand picking of the images was required to render the final stitched picture.

The camera took pictures every 2 seconds (set by the internal capability of the camera).  That was too many.  A bit too much overlap.  We used every other row for the stitch.  That was 7 rows of 24 pix or 168 images.

The big problem:

The APM directed the Kadett very well.  The Mission Planner provided a very easy way generate the waypoint file.  The XBees kept us informed about critical aspects of the flight.  Log files were generated and saved.  Thanks to all members of the development team. A job very well done.


There is little or no payload management capability with the current APM/Mission Planner system.

I have managed to turn the relay on and off in the past but it doesn't work with APM V2.27. (I submitted issue 479)  


In March, I submitted issue 292   'Add a command TRIGGER'

To trigger a camera shutter or any other event driven payload (water drop, parachute, etc.) please add a TRIGGER command.
It should have these characteristics:

Use either the relay or a servo
Configurable active state (relay on or off to trigger - servo on pulse width and off pulse width)
If servo - assignable channel
Assign time the trigger event is active (in ms.)
Choose if trigger is to be repeatable
Choose and set the repeat interval (every x seconds or every y meters)

The TRIGGER event should be logged for both the onboard log file and the GCS stream
The TRIGGER event should be able to be fired from the GCS

In October there was this reply:

Comment 4 by project member amilcar....@gmail.com, Oct 11, 2011
Part of it has now been implemented in the "APM_Camera" git branch:
-Use either the relay or a servo
-Configurable active state (relay on or off to trigger - servo on pulse width and off pulse width)
-Assignable servo channel
-Assign time the trigger event is active (in ms.) (via define only)
-The TRIGGER event should be able to be fired from the GCS

What is not implemented yet:
-Choose if trigger is to be repeatable
-Choose and set the repeat interval (every x seconds or every y meters)
-The TRIGGER event should be logged for both the onboard log file and the GCS stream

Please note:

APM_Camera is not in the git directory and is not in the latest arduino sketch file set.


The existing DO_RELAY and DO_SERVO commands do not work if instantiated through the Mission Planner. 


Even with no APM control of the camera we were able the get these results.


The waypoint file generated by the Mission Planner


The flight path as captured via the Mission Planner .tlog and converted to .klm


The survey picture stitched with ICE.

Again,  a big thanks to the development team. 



Stagecoach Pix 50M_stitch small.jpg

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

Join diydrones

Email me when people reply –


  • Very well done. I am also building up a mapping UAV using the Ardupilot Mega. I have used some more expensive AP stuff in the past, and am really enjoying the capabilities of this AP for aerial mapping purposes... so far.


    I have been searching the forum for successful mapping configurations and you appear to have done an excellent job!!


    Some triggering elements would be very great additions. along with automating the camera trigger GPS location in the grid calculations. I might be missing something, but this seems like a natural addition to the Mission planning tool. That way you could plan camera shots per GPS waypoint vs camera triggering every X seconds.


    Again, well done and Cheers!



  • Hi all,

    I am also looking for the best way to send trigger commands to my camera (and configure and aim it). 

    I noticed that the MAVLink commands for camera control and mount control are actually implemented in the mission planner. I am however unable to find/identify whether (and if so; how) this works (sending cam / mount commands from the mission planner). Would filling in the parameters in these commands arrive in the Ardu code?

    Can anyone (Michael Oborne? :)) explain more about this?

    Thanks a lot!

  • awesome i like the idea of the trigger function i hope they do that soon

  • very cool! i would love to implement the trigger control for the camera, right now we are using CHDK w/ interval scripts. your idea is much better. awesome flight platform! i've found with a large enough image overlap and enough computing power you can build mosaics automated

  • nice presentation.. marvelous job done

  • Irvin:

    Thanks for posting such a helpful article. I am truly amazed at your results. Since I already own AutoPano Giga, I think I will give it a try for stitching instead of purchasing PTGui

    I have some questions.

    1. Can you recommend any other suitable aircraft or is the Graupner Kadett the best available? The $600 price seemed a bit high, but, since it is ARF and Graupner's great reputation, that may not be so bad. I found an construction article and it appears to be very easy to get it into the air.

    2. Are you mounting your camera facing straight down from the belly of the aircraft? I am waiting for my APM2 to complete my quadracopter but it looks like I may have to order another one to build a survey aircraft.

    3. Do you think it is possible to mount a large sensor camera like a 5D2 or 7D on this aircraft?

  • Thank you for sharing your information and insights!


    What was your goal or objective in this aerial survey, just a simple mosaic or did you have a specific purpose in mind?

    At that altitude, you should have some good parallax and I imagine you could make some impressive stereo images out of those.  Did you plan on georectifying the images for more detailed surveying?


    Thanks again for sharing, I'm always interested to see the reasons other people use aerial photography.

  • Congratulations for the mission Irvin !

    Same problem here, we haven't been able to use the the DO_SET_SERVO command with ArduPlane 2.28.

    Here is the post : http://diydrones.com/forum/topics/do-set-servo-command-on-arduplane...

  • nice job, I also I have some problems after several months of work, I could not use the command (DO_REPEAT_SERVO)  to activate the camera automatically, I'm doing it manually via RC .    https://www.youtube.com/watch?v=iITNOluOS4c&context=C3cd1bc8ADOE...3692350937?profile=original

  • All of what you have said is not implemented is implemented and so is what Amilcar said.
    The camera code I created a year ago which had all the trigger you want has grown, morph and become more refined than I could have hoped for thanks to other members of the dev team. The camera code will be pushed out as some as final testing has been completed.
    Please be patient.
    If you wish to do the trigger calls as you suggested feel free to look at my previous code incarnations to find easy methods. Also the code is in the APM git it's just not the main one. Excellent results with your plane.
This reply was deleted.


Chris Anderson liked Zara Mae Pickering's profile
May 21
Azjeg liked Azjeg's profile
Apr 27
Benewake LiDAR liked Benewake LiDAR's profile
Apr 12
Gremsy liked Gremsy's profile
Mar 12