Using ArduCopter 3.2 Missions for Aerial Panoramas

The latest version of ArduCopter (3.2 -rc11 and above) has several new and improved mission commands  and features that make the automated capture of spherical panoramas fairly straightforward. These include a “Command-Yaw” relative command, the Do-Jump command, and an increase in the maximum number of Mission commands (waypoints) for Pixhawk users to 718. It is now possible to create a mission to capture a 10 column by 5 row mosaic panorama with as little as 30 commands using the “Do-Jump” command.  If you want to take advantage of the of the increasing overlap in the images as the camera approaches the nadir (fewer images per row), you won’t be able to use the “Do-Jump” command and will have to manually code for each row of photos – but now you won’t bump up against the previous limit for the number of commands in a Mission for any reasonably sized panorama.


The video shows the testing of the Command-Yaw command along with a demo of using it for a panorama. I’ve attached a copy of the Mission file I use for a 5 row, 10 column panorama.  The basic flow for the Mission script is to position the frame in a specific yaw direction (e.g., North or East), rotate the gimbal up to row 1, then take a photo. The script then rotates the gimbal to row 2 and takes another picture. After it completes row 5 it yaws CW by 36 degrees and takes another row of pictures. It continues this until all 10 columns are captured. The servo values for the gimbal angles and the amount of yaw for each column are dependent upon the field of view of your camera. 5 rows by 10 columns works well for a Canon SD900. 4 rows by 8 columns works well for a NEX 5N with the 16mm pancake lens and gives about the same resolution panorama. A completed panorama can be seen at the link below.


The view from above Paradise, California (


I’m interested in hearing how others are using their copters to do aerial panoramas.

Original Mission


I’ve been doing some further experimenting after being disappointed in not being able to capture a full size equirectangular jpg panorama (30,000 x 15,000 pixels) with my previous SD900 camera settings and original mission plan. I’ve found that a zoom setting of 2 gives a FOV of each image of about 40 degrees horizontal and 30 degrees vertical would give enough resolution to produce a 30,000 x 15,000 pixels panorama using a 6 row by 14 columns. Unfortunately, a rectangular matrix this large to capture the panorama would require too many pictures (84) and require too much flight time.  The alternative to a matrix panorama is one where each row has a different number of images based on its pitch angle. As the pitch angle nears the zenith or nadir, fewer columns are needed in each row. After some tests with my tripod mounted panorama head I came up with the following mission parameters for the panorama:

Row #  Pitch Angle   # Of Columns  Angle Between Images

1            +20                  13                     28

2               0                   14                     26

3             -21                  13                     28   

4             -43                  11                     33

5             -62                    8                     45

6             -85                    2                   180

Using this mission the number of photos is reduced to 61 and the time to completion is well within my maximum mission time of 13 minutes (it takes 9 minutes for the photos plus the time to fly to the correct position and then land safely afterwards).

If you are using PTGui or Autopano to build the panorama, the initial layout of the photos is easier if you use a PapyWizard XML file with the camera angles. I’ve attached both the mission and PapyWizard xml files to this post for anyone who wants to try it. There are a few things you need to know about the mission file if you decide you want to use it:

First, you will need to compute the elevation servo settings for your specific gimbal. I taped a printout of a setting circle on the gimbal and put a pointer on the camera then tried various pitch values via a short mission file (on the bench with the props removed) until I found what was needed.

Second, the mission file contains a hybrid of Do-Jump commands for the first three rows and multiple repetitions of similar code for rows 4 through 6. This is because Arducopter 3.2 only allows a maximum of three Do-Jump commands in a mission. That is due to change in 3.3 for PixHawk users but we aren’t there yet.

Third, if a Do-Jump command is preceded by a Condition-Yaw command, there must be a waypoint in between them that provides enough of a delay that the Command-Yaw has time to complete before the flight controller hits the Do-Jump command. If it is not, the Do-Jump command gets skipped. For my frame this is about 3-4 seconds for short rotations, longer for large rotations, yours may be different.

Lastly, you will need to provide enough time for the camera to take an image before moving to the next image. In my case, I need 4 seconds for the images to be captured. I use a small CHDK script (Zoom2.bas) to set the zoom and take two photos (in case one is blurry). It takes about two seconds from the time the shutter command is sent  for the script to take the first photo, then almost another two seconds for the second photo to be taken. So there’s a Waypoint command after each Do-Digicam command with a 4 second wait and zero Lat, Lon, and Alt.

You’ll notice that the area between the zenith and about 35 degrees elevation is not covered in the mission. You’ll need to make a separate sky panorama using a pano head to capture the top portion and then blend it with the bottom portion. But, if you’ve gotten this far you already know how to do that.

A test of the mission and methods used above can be found at:


Mission with Zoom set to 2 and 61 images


Papywizard XML file




E-mail me when people leave their comments –

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

Join diydrones


  • $Emile,

    One thing I've found out is that Canon cameras with optical image stabilization (S90, S100, S110, S120, SX260, etc.) have problems with lens element vibration when hung under a copter. I've had good success with the older Canon SD900 and NEX 5N with shutter speeds at 1/1000 and higher. I take two photos at each position, 80% of the time both photos are good but 20% of the time only one of the photos is without blur.

  • $Phill

    I used a Merlin/Orion telescope head through a Bluetooth/Rs232 to a laptop running Papywizard. Then through PTGUI to create the image. All great fun... Doing it with my Hex put a new twist in the process. Look forward to trying this feature out...

  • $Emile

    I've been doing ground based panos for a couple of years and just recently got in to aerial panos. Like you, I've been using either the SkyWatcher astro mount with DSLR, 300mm lens and Papywizard for gigapixel landscape panos or the Gigapan Epic 100 and Canon S100 for spherical panos. Unfortunately, due to bad behavior on the part of some, they no longer allow drones in the national parks in the USA. But that still leaves a lot of scenic locations in state parks and national forest land. And there's always the option of using a tripod and pano head inside the parks.

  • $Phill

    After the tripod and compass i modified a motorized telescope mount to perform the shots automatically. With a 50mm on a DSLR you ended up with one huge picture.

  • OK, the waypoints are all zero Lat, Lon, and Alt. The only reason you need the waypoints is to make the Command-Yaw and Do-Servo commands work.

  • Ok i can see them now. I was expecting waypoint on the map, but all i could see was your Home pos. When i open the list at the bottom of the screen, i can see them all :) Tnx!

  • $Emile,

    Very nice. I chose to use a narrower field of view and more exposures so that people can zoom in on the images to see more detail. Since there was no way to line up 50 exposures accurately by eye I chose to go the automated mission route.

  • $Tommy, I just did the same thing and it loaded fine. When you download the .txt file you should be able to read it with a text editor to verify it. The first three lines should look like this:

    QGC WPL 110
    0 1 0 16 0 0 0 0 39.774139 -121.632248 526.000000 1
    1 0 3 16 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 1

  • One thing I forgot to mention is that WP_YAW_BEHAVIOR needs to be set to zero for the flight controller to maintain the correct yaw angle. If you use the default of "1", the desired yaw angle will be set to the current yaw angle every time one of the waypoint commands is executed. 

  • Phill

    I have been doing it also for some time, all manual during s loiter hold but basically the same process.

    3701863515?profile=originalI use a Gopro and only need 2 photos at 90deg yaw increments. I like turning them into these Little Worlds but the photos can be unfolded several ways. A long way from a protractor and a tripod...


This reply was deleted.