Pages Menu
Categories Menu

Posted by on Mar 11, 2016

Why we’re making DronePan open-source

Why we’re making DronePan open-source

In the process of developing DronePan app over the past year we’ve learned a lot. For those of you that aren’t familiar: DronePan is a free iOS app that automates the process of shooting spherical panorama imagery from most DJI aircraft as well as 3DR Solo.  After long hard thought in early 2015 we decided to launch DronePan as the first free drone app. Fast forward to today and DronePan has been installed on approximately 6,000 tablets equating to roughly $10-12 million worth of DJI drones. Support for Solo was introduced recently and represents much fewer users. For now.


Initially the minimum viable product simply rotated the gimbal of the Inspire 1. This was a good starting place because it didn’t require flight mode adjustments. In later iterations we added the ability to rotate the aircraft which enabled two things:

  1. an additional +30 degree row on Inspire 1, allowing for more sky
  2. support for the Phantom series

Dronepan-completeAlthough DronePan was and continues to be “the first” in many ways – it is not a proprietary app around which a commercially viable business could be built. As DJI trickled out more and more native panorama discussion (albeit in the context of Osmo), we’ve grown hesitant to go hard on DronePan. To get higher in the food chain, we considered building out cloud stitching and panorama hosting (something like so that as a Phantom pilot you would have a integrated end-to-end panorama service. Building this functionality would require real investment and we were still wary the process may end up on DJI’s roadmap at some point.

To test demand for future improvements, the first few thousand DronePan users were polled and data indicated cloud stitching was relatively low on the wish-list. Contrary to what we expected, users aren’t that interested in automated stitching (presumably because it would inhibit their control over post processing). We discovered that more importantly we need to develop support for the X5. To do so we introduced a user-defined yaw variable, allowing the user to choose from a few preset yaw amounts. This directly impacts the total number of shots in a single pano as well as the overlap.

We’ve also had the responsibility of identifying and working around the early SDK bugs. The most significant of which occasionally results in the gimbal tilt or aircraft yaw not performing the exact commands in the timeline given by DronePan. This translates to random duplicates and / or holes in the overall sphere. The “disobey bug,” as we’ve come to call it, occurs randomly and it has proved challenging to replicate. The DronePan team has tried a litany of patches and workarounds, but the frustrating pano holes continue to happen. Fortunately DJI’s SDK team has been very responsive and supportive throughout our dev efforts, and we expect the bug will be addressed soon.


DronePan belongs in the hands of all droners. Development of the app and the community has been overwhelmingly educational and fun. From the beginning the user-base has maintained a refreshingly positive tone, and users often help each other in this wild learning experience of which we’re all contributing. It will be fun to see the global drone community unite and contribute to a more powerful panorama experience. The DroneKit based version of DronePan is now open on GitHub, and today we opened the iOS version.