Drone SDK Showdown
Godfrey Nolan
AGENDA
 DJI
 Parrot
 Autel
 Pixhawk
2
DJI AGENDA
 Pre-Req’s
 Hello, World!
 SDK Ecosystem
 Next Steps
 Deploying
 Lessons Learned
3
PRE-REQ’S
Register for DJI
Developer account
Need an App Key
from Developer
account
Mavic, Phantom,
Spark etc.
Android Studio or
XCode
4
5
HELLO, WORLD - ANDROID
6
HELLO, WORLD - ANDROID
 Git clone https://github.com/dji-sdk/Mobile-SDK-Android
 Open Sample Code directory in Android Studio
 Change the App Key in the AndroidManifest.xml
 Change the build.gradle file
 Connect phone to Spark WiFi (or other drone)
 Push APK to phone
7
HELLO, WORLD - ANDROID
8
HELLO, WORLD - ANDROID
9
HELLO, WORLD - ANDROID
10
HELLO, WORLD - ANDROID
11
HELLO, WORLD - ANDROID
Turn on the Spark Drone
1. Connect Mobile Device to the WiFi
network created by the product.
2. Run Sample App on Mobile Device.
Phantom 4 etc.
1. Turn on the Remote Controller.
2. Turn on the Aircraft and wait until the
Remote Controller has connected with
the Aircraft.
3. Connect iOS/Android Mobile Device
to the Remote Controller using
a Lightning (iOS) or USB (Android)
cable.
4. Run Sample App on the Mobile
Device.
12
HELLO, WORLD - ANDROID
13
HELLO, WORLD
ANDROID
14
15
DEFINE THE ECOSYSTEM
16
DEFINE THE ECOSYSTEM
17
DEFINE THE ECOSYSTEM
18
TESTING
19
TESTING
20
TESTING
21
DEPLOYING
22
LESSONS LEARNED
23
NEXT STEPS
https://developer.dji.com
https://github.com/dji-sdk/Mobile-SDK-Android
https://github.com/dji-sdk/Mobile-SDK-iOS
https://github.com/dji-sdk/Windows-SDK
https://sdk-forum.dji.net/hc/en-us
https://sdk-forum.dji.net/hc/en-us/community/topics
PARROT AGENDA
 Pre-Req’s
 Hello, World!
 SDK Ecosystem
 Next Steps
 Deploying
24
PARROT PRE-REQ’S
Anafi 4k, Anafi Ai Android Studio or
XCode
25
26
HELLO, WORLD - ANDROID
 Git clone https://github.com/Parrot-Developers/groundsdk-
android-samples
 Open Hello Drone directory in Android Studio on Mac
 Connect phone to Anafi 4k
 Push APK to phone
27
HELLO, WORLD ANDROID
28
HELLO, WORLD ANDROID
https://github.com/riis/parrot
29
DEFINE THE ECOSYSTEM
30
DEFINE THE ECOSYSTEM
31
DEFINE THE ECOSYSTEM
32
NEXT STEPS
https://developer.parrot.com/
https://github.com/Parrot-Developers
https://github.com/Parrot-Developers/groundsdk-android
https://forum.developer.parrot.com/
https://github.com/riis/parrot
AUTEL AGENDA
 Pre-Req’s
 Hello, World!
 SDK Ecosystem
 Next Steps
 Deploying
 Lessons Learned
33
PRE-REQ’S
Register for Autel
Developer account
Need an App Key
from Developer
account
Evo, Evo II Android Studio or
XCode
34
35
HELLO, WORLD - ANDROID
https://pro.autelrobotics.com/
36
https://github.com/AutelSDK/Android_SdkSample
37
HELLO, WORLD 2 - ANDROID
https://github.com/riis/AutelDemo
38
DEFINE THE ECOSYSTEM
39
NEXT STEPS
https://pro.autelrobotics.com/
https://github.com/AutelSDK/Android_SdkSample
https://github.com/riis/AutelDemo
PIXHAWK AGENDA
 Pre-Req’s
 Hello, World!
 SDK Ecosystem
 Next Steps
 Deploying
 Lessons Learned
40
PRE-REQ’S
Pixhawk Android Studio or
Xcode w/QT
41
PRE-REQ’S
Pixhawk Android Studio or
Xcode w/QT
42
PRE-REQ’S
43
44
HELLO, WORLD - ANDROID
https://riis.com/blog/hide-settings-in-qgroundcontrol-based-on-user-access-type/
45
HELLO, WORLD - ANDROID
https://riis.com/blog/hide-settings-in-qgroundcontrol-based-on-user-access-type/
46
DEFINE THE ECOSYSTEM
47
NEXT STEPS
https://www.nxp.com/design/designs/nxp-hovergames-drone-kit-including-rddrone-fmuk66-and-peripherals:KIT-HGDRONEK66
https://github.com/mavlink/qgroundcontrol
https://riis.com/blog/hide-settings-in-qgroundcontrol-based-on-user-access-type/
https://github.com/riis/qgccomponenthiding
https://www.hovergames.com
https://px4.io
https://ardupilot.org/
48
NEXT MONTH
https://github.com/riisinterns/Creating-a-Camera-Applica

Drone sdk showdown

Editor's Notes

  • #3 SLOW! No skydio as they don’t have an SDK
  • #4 You can write DJI SDK code in Objective-C, Swift for the iOS SDK and Java and Kotlin for the Android SDK There’s also a Windows SDK which is in C#
  • #5 DJI developer account now only has one tier, used to be a Basic and Pro, now it’s just free basic account Easiest way to get started is to use a DJI Mini, which is $299 or the DJI Mini 2 which is $449 DO NOT BUY A MAVIC 3, the SDK doesn’t support it yet. Probably won’t support it for 6 months or so
  • #6 Need an App Key from Developer account The key goes into the AndroidManifest.xml file Sorry I’m more of an Android dev than an iOS one,
  • #9 These settings obfuscate the code using a tool called Proguard. It’s common practice to do this for apk’s that get released to the app store. it’s unusual to see this for a debug build and not a release build. Hello World wouldn’t build with these settings so I turned them off
  • #13 I’m doing this for Android but it’s a similar experience for iOS.
  • #14 The sample app is actually pretty comprehensive and has a ton of functionality if you want to browse through it
  • #15 I just enabled the virtual stick App looks really simple as it doesn’t use the UX SDK
  • #16 There are lots of DJI SDK’s so it’s worth taking a time to go over the different types Mobile SDK – which we’re looking at and the UX SDK which allows you to have DJI like icons in your app Windows SDK is for desktop Windows apps, still in beta I believe. There are also other SDKs such as the payload SDK which allows you to create sensors to M210’s or M600’s and have an API that you can talk to The onboard SDK is for an onboard computer such as a Manifold or any small Linux computer and then do edge computing, e.g we could have used this to do the AI for counting sheep
  • #17 As mobile app developers we’re really only interested in the UX and Mobile SDK Be warned too they are a large bundle together close to 100MB which may push you over the max size in Android.
  • #18 The mobile SDK gives you access to the following functionality of the drone
  • #19 One of the best way’s to test your drone is to use the DJI Assistant which you can download from dji.com One of the tabs on the Assistant is the Simulator where you can connect your computer to the drone that’s ready to fly And then fly the app in the simulator – makes it much easier to test
  • #20 This is not to be confused with the other DJI Flight simulator which is used to teach you how to fly a drone.
  • #21 iOS also has a Bridge app which allows you to debug over wifi.
  • #22 Talk about MFI if you’re on iOS Talk about size of the SDK’s if you’re on Android
  • #23 Don’t wait till the last minute to get your app key. Couple times we wanted to deploy something and couldn’t get the key. A few months back iOS developers were SOL as Apple stopped granting MFI’s for DJI apps, looks like that’s been resolved
  • #24 If you have a problem, opening an issue on their github repo seems to be the best way to get an answer or you could ask a question on the community forum
  • #25 The Parrot Anafi Ground SDK is a good alternative to the DJI Mobile SDK Has a lot of similar functionality but for controlling Parrot Anafi’s instead of DJI drones.
  • #26 We don’t need to any API keys, we basically need to download and install Android Studio (or Xcode) and create a new Kotlin project (Basic Activity) The SDK we’re using is called Ground SDK The environment setup only lists Linux or MacOS, so Windows users are SOL
  • #27 There are several examples Camera, HelloDrone, ReadFrameMetadataV3 (OpenGL) and ThermalVideoStreamEnabled
  • #28 Also the Parrot Anafi Ground SDK is a good alternative to the DJI Mobile SDK Has a lot of similar functionality but for controlling Parrot Anafi’s instead of DJI drones.
  • #29 When we first started we felt that Parrot’s Hello World app was a bit hard to figure out, more of a Hello World 2.0 So we did a very simple app that simply flies the drones using these virtual sticks in iOS, feel free to give it a whirl.
  • #30 There are 4 Parrot Drones. The Original Anafi and Anafi Thermal which are getting more and more difficult to get. They’re no longer available on Bestbuy or Amazon. But you can get second hand ones on ebay. These are another good cheap drone to learn how to do mobile apps for drones. Anafi USA is a modified Anafi for First Responders and the military and is one of what are called Blue UAS drones. The Anafi Ai is the new top of the range $4k drone.
  • #31 Embed your code on the drone with Air SDK Create mobile apps with Ground SDK Customize open-source GCS with OpenFlight (iOS) Use state-of-the-art drone simulation tool with Sphinx Develop python scripts with Olympe Process video and metadata with PDrAW Air SDK is for the new Anafi AI, we’ll cover that in a future talk Ground SDK is a Ground Control Station (GCS) framework for mobile devices. It allows  developers to create a mobile application, controlling the drone directly from the mobile device. All the aircraft features (control, video, settings) are accessible through an easy-to-use and fully documented API. Open-source ground control station For the first time, we are open-sourcing our ground control station application. OpenFlight is the open-source core of our famous FreeFlight 7 application. As a developer, you can focus on adding your features and immediately get a professional-looking result in your app. Parrot Sphinx is a state-of-the-art drone simulation tool for Parrot drones. Parrot Sphinx relies on cutting-edge and industry-standard components (Gazebo and Unreal Engine) for photorealistic render and accurate simulation. PDrAW is an advanced video viewer for Parrot drones media. The viewer supportsstreamed (RTSP) and recorded (MP4) videos. PDrAW also handles the embedded video metadata. Those are publicly accessible and documented, allowing advanced processing of aerial videos. Use Python to control drones Olympe is a Ground Control Station (GCS) python framework. It allows developers to interact with the simulation environment Sphinx. Olympe can also control physical drones from a remote computer, using the controller radio.
  • #32 Here’s a cool video of the Parrot Sphinx
  • #33 If you have a problem, opening an issue on the developer forum is probably the best idea
  • #36 Need an App Key from Developer account Go to https://www.autelrobotics.com/ -> SDK or go right to https://pro.autelrobotics.com/ Register and create a login If you don’t hear back you can just use one in the sample app But you’re going to need to do this if you want to create your own app
  • #37 Download the code from https://github.com/AutelSDK/Android_SdkSample You don’t need to get an API key to run the sample app
  • #38 Need an App Key from Developer account Go to https://www.autelrobotics.com/ -> SDK or go right to https://pro.autelrobotics.com/ Register and create a login If you don’t hear back you can just use one in the sample app But you’re going to need to do this if you want to create your own app
  • #39 Until recently there was only the Evo and the Evo II. Now there’s a whole suite. The Nano is $799, the EVO II is about $1795 Personally I’ve only used the EVO II
  • #40 If you have a problem, opening an issue on the developer forum is probably the best idea
  • #43 https://www.nxp.com/design/designs/nxp-hovergames-drone-kit-including-rddrone-fmuk66-and-peripherals:KIT-HGDRONEK66
  • #44 There are definitely other kits that you can put together but we’ve used the Hovergames one a few times and it works very well
  • #45 All the Android apps we’ve looked at are some type of Ground Control System or GCS. The NXP and Pixhawk drones come with their own GCS which is called QGroundControl This is based on the QT or Kute platform. Good news is it will run on Windows, Linux, Android and iOS. Bad news is you have to edit XML files called QML to change it You may also have to edit the C++ if you need to make changes to the firmware. Here’s a how-to guide we wrote with code samples on configuring and building your own custom QGroundControl application. We change the UI based on a passcode that we supply to unlock different levels of access.
  • #46 Heres the online video of hiding the parameters from the basic users
  • #48 Hovergames has some excellent vides on how to put everything together
  • #49 There are about half a dozen examples on developer.dji.com showing how to use the camera, waypoints and NFZ apps. The examples are in Objective-C and Java, we’ve converted them to Swift and Kotlin, I’ll be showing those next month Then each month after that I’ll do a deep dive to Parrot, Autel and Pixhawk Then move on to other items such as object detection, livestreaming, etc. Always open to other suggestions.