New Release! Onboard SDK 3.2.2 was released on 03/14. See release notes for more!
DJI's onboard SDK allows you to connect your own Onboard Embedded System (OES) to a supported DJI vehicle (Matrice 100 or Matrice 600) or flight controller (A3 or N3) using a common serial port (TTL UART). This setup opens up an exciting opportunity to integrate your own hardware with DJI's flying platforms. New applications and commercial uses for aerial robotics awaits and we can't wait to see what you build, so lets get started!
This SDK is for developers with:
The onboard SDK enables deep interaction between your OES and a DJI flight controller. Using the APIs you can, for example, use a sensor connected to your embedded system to control the trajectory of the vehicle, collect telemetry data in real-time, trigger a camera to take photos, or send data through the vehicle's downlink to a mobile device. Your OES must have a TTL UART port available for the onboard SDK to use.
We provide C/C++ source APIs to make sending and receiving data over the serial port easy and encourage you to use them in your applications. Alternatively, developers can use our protocol specification to write their own communication drivers.
Note that to accomplish the setup steps below, you will need to use the vehicle remote controller connected to a mobile device running the DJI Go app and your mobile device must have a connection to the internet.
If you are using one of our supported platforms, we provide detailed instructions in our Hardware Setup Guide.
A3 flight controller can be accessed on the M600 by pulling off the top-cover.
You can power your embedded system from your own battery or if you are using an M100/600, you can pull power from the vehicle bus. See your M100 or M600 manual for details.
Secure your embedded system to the vehicle near the center of mass. Ensure that the total vehicle weight is within the maximum takeoff weight specificed for your vehicle.
Choose one of these examples to begin using the onboard SDK in a particular software environment:
Note: Each new vehicle or flight controller to be used must be activated once to enable communication with your application.
We provide a Vagrantfile for an Ubuntu 16.04 desktop machine with all the dependencies and settings necessary to build the Onboard SDK and run the samples. To start the machine first install the following:
Next, in the same directory as the Vagrantfile in the Onboard SDK repository you previously cloned, just run
vagrant up. The
first time you do this it may take a while as the base image is downloaded and dependencies are installed. Please
see the Vagrant documentation for more details on how to work with Vagrant.
Please comply with local regulations during the development of your application. Please refer to http://flysafe.dji.com/ for more information. The operator must maintain sole responsibility for the safe operation of the vehicle, including maintaining the ability to take manual control of the vehicle at all times to maintain safety in the event of a malfunction of any aspect of the Onboard SDK modules.
Now that you are setup and communicating with a DJI flight control system, we would encourage you to explore our platform guides and reference documentation to help jumpstart your development. We would recommend reading our Architecture Guide next. The revamped Programming Guide is a good place to visit once you have some familiarity with the examples and want to know more about the internals.
Also, take a look at our revamped FAQ for some answers to common questions. After that, feel free to contact us with any issues.
Note: v3.2.2 of the Onboard SDK was released on 14 Mar 17 and fixes the M600/A3 VERT_POS movement control issue.