3D Robotics
We’re thrilled to announce the release of DroneKit, an open platform for drone app development. DroneKit packages years of 3DR’s flight control R&D into a single robust and extensible platform which developers can use to create web-based drone apps, or even apps onboard the drones themselves. DroneKit works with any vehicle powered by the APM flight code.

Why now

We want to empower makers anywhere to create apps that fit their purposes. Imagine an agriculture app that surveys your land; a search & rescue app; a football practice app. Before DroneKit, if you wanted to create any of these single-purpose apps for a drone you’d have to reinvent the wheel, building all the flight control software from the ground up. DroneKit abstracts away the hard parts of writing flight control software, leaving you a clean, modern interface to code on.

A good analogy is the smartphone: In order to make a smartphone app, you don’t need to design and create a phone first. The hard part (the platform, in other words) is already done. With DroneKit, we’ve made the phone, so to speak. Now everyone has the creative freedom to build apps and new functions.

“Unlike other APIs for drones, there are no levels of access to DroneKit; it’s completely flexible and open,” noted Brandon Basso, 3DR’s VP of Software Engineering. “The platform works on laptops as well as mobile devices. Best of all, once an app is created, the app automatically works on any computing platform—the interface is always the same.”

Our role is to maintain DroneKit: we created the API; we’ll fix any issues with it; we assure it works with all APM vehicles; we add experimental features from our labs and from those contributed by the global community, and we make all updates available to anyone for free. And should you develop an app, just put it up on 3DR Services, “the app store for drones,” where you can price it how you want, and we won’t take anything off the top. DroneKit is a community garden for technology; we want anyone to be able to use it to cultivate and take their product to market.

What you can do with DroneKit:

With DroneKit, you can develop apps for three platforms: mobile apps (DroneKit Android); web-based apps (DroneKit Cloud); and onboard computer apps (DroneKit Python) [i.e., for a companion computer on the actual drone].

DroneKit allows you to:

  • Fly paths with waypoints
  • Fly in spline path with fine grain control over vehicle velocity and position
  • Have the drone follow a GPS target
  • Control the camera and gimbal with regions of interest points
  • Access full telemetry from the drone over 3DR Radio, Bluetooth, Wi-Fi, or over the internet
  • View playbacks and log analysis of any mission

Advantages of DroneKit:

  • Truly open; no “levels” of access that you get from other proprietary programs
  • Computer agnostic: Create an app for controlling drones on whatever computing platform you want, and the interface is always the same
  • Works on planes, copters and rovers
  • Works on laptop computers as well as mobile devices
  • Provides web-based access to vehicle data

DroneKit powers the most successful flight control programs in the world:

  • Tower (formerly Droidplanner), hands-down the best flight planning mobile app out there, was built on DroneKit for Android
  • Droneshare, the global social network for drone pilots, is built on DroneKit web services
  • Project Tango Indoor Navigation is built on Pixhawk, APM and Tower
  • IMSI/Design TurboSite aerial reporting app for construction


Online Access

To find out how to write your own application for UAVs, and to walk through some example apps from us, please visit http://dronekit.io

E-mail me when people leave their comments –

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

Join diydrones


  • Wiki Ninja

    Thanks :-) It is easy to miss instructions even if you're careful. Personally I think the default settings should just work out of the box. I'll think about this some more. 

  • Hi Hamish,

    Well... if I would have followed the instructions verbatim I would not have had any issues..

    So its really my bad.  Hence I dont think that a Troubleshooting section is needed.



  • Wiki Ninja

    Hi Marcel,

    You are most welcome! 

    As a rule paths in MAVProxy are relative to wherever you started it. The vehicles are started from the ardupilot/VehicleName directory, which is why the above path is correct. You should also be able to put in a full path (though I have found that in some case using ~ as a proxy for the home directory does not work on Mavproxy in linux. 

    I'm not sure the best way to help people avoid this issue. Do you think it would help if I added a "Troubleshooting" section to http://python.dronekit.io/examples/running_examples.html ?



  • Hi Hamish,

    That solved the issue :)

    My mistake however was that I assumed I´d have to provide the full file path instead of just typing this:

    param load ../Tools/autotest/copter_params.parm

    With the result that I got an error message whenever I tried loading the parameters. So eventually I just went with the default settings.

    :D The lesson is clear: I definately should not try to be smarter than the instructions!

    Many thanks!

    I really appreciate your help.

  • Wiki Ninja

    HI Marcel

    When I run simple_goto it looks the same, except the Altitude climbs to the target height.

    I have seen something similar when using the default vehicle parameters though. Can you please try loading the parameters in your simulated environment again (before the arming check):

      param load ../Tools/autotest/copter_params.parm



  • I got exactly the same result running the simple_goto example.

    The simulated vehicle in Mission Planner doesn´t move (groundspeed = 0.0), but changes the altitude correlating to the altitude data shown above.

    Any ideas on this?

    I appreciate the help :)

  • Ok. Maybe I was a little too hasty saying that everything 'works just fine' ...

    This is me trying to run the vehicle_state example:3702017588?profile=originalShouldn´t I get more information than just some weird altitude data?

  • Hi Hamish,

    Thanks for coming back to me!

    It works just fine with the latest example version.

    I should have checked it to be up to date. My bad.



  • Wiki Ninja

    Hi dronebohne,

    Yes, re-sync with the latest master codeline for the example and try again. The example no longer uses the channel_override because that is not the recommended approach for getting off the ground. Instead it uses takeoff command. You can see the source for that that in the example page for simple_goto (see also the new Taking off guide).

    Now the fact that if fails is still a potential problem. Do you have the same issue (after re-syncing) if you run the vehicle_state example (this uses channel override)?



  • As all of this sounds very promising I wanted to give it a try.

    But as soon as I start one of the examples (SimpleGoTo) I get the following error message.

    Any suggestions how to solve this? :)


This reply was deleted.