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 (http://www.360cities.net/image/the-view-from-above-paradise-california)

  

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

Original Mission

Panorama-Mission-10-Col-5-Row-Start-East-Relative.txt

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: http://www.360cities.net/image/over-bille-park-in-paradise-california

 

Mission with Zoom set to 2 and 61 images

SD900%20_Zoom_2_Pano_61_Images_99_Commands.txt

Papywizard XML file

papywizard_SD900_Zoom2_6Row.xml

CHDK File

Zoom2.bas

Views: 3174

Comment by Oscar Avellaneda-Cruz on October 30, 2014 at 3:04am

Phill this is incredible. I had no idea this kind of
functionality was baked into the code. Thanks
for sharing that.

I'm relatively new to mapping with a drone, but I work
as a commercial photographer. I have a quasi creative/gis
interest in generating maps of this kind more so for
device/web rather than print.

I recently ran into a poster of the map at the link above
it gave me a greater context for the Chugach mountain range
that surrounds my home base in Anchorage. I'm not sure what
your interest or application in maps are but thought that might be
of interest to you.

The annoying thing about the map at the link above is that it is a
misleading in that it the panorama view of the Chugach mountains
is dead east, but the placement of the panorama above the map is north.



Comment by Tommy Larsen on October 30, 2014 at 3:39am

Hi

Very nice photo. I downloaded your .txt file and loaded in MP 1.3.10, but i don't get any waypoints...

Comment by Emile L. on October 30, 2014 at 5:22am

Phill

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

I 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...

Emile

Comment by Phill Simpson on October 30, 2014 at 7:06am

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. 

Comment by Phill Simpson on October 30, 2014 at 7:13am

$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

Comment by Phill Simpson on October 30, 2014 at 7:16am

$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.

Comment by Tommy Larsen on October 30, 2014 at 7:20am

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!

Comment by Phill Simpson on October 30, 2014 at 7:25am

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.

Comment by Emile L. on October 30, 2014 at 9:20am

$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.

Comment by Phill Simpson on October 30, 2014 at 9:29am

$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.

Comment

You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service