User Tools

Site Tools


workgroup:dronecodesdk:start

Dronecode SDK WG

Overview

The Dronecode SDK WG is tasked to develop a Drone Application Development SDK. This SDK should allow developers to create drone “applications” that can run on mobile devices (tablets, phones) and on-board companion computers, and that can also seamlessly integrate drones with cloud-based services. The SDK should ideally support Python, C++ and Android Developer APIs, including options like ROS, Cloud etc., and also integration with any simulation environment.

Currently we are evaluating existing developer APIs.

Some requirements include:

  • Robust, SDK solution for commercial deployments of PX4, and other compliant flight controllers
  • First Pass should include: Dronecode SDK with : basic onboard / basic mobile / basic cloud (RESTful) APIs implemented

Monthly WG Meetings Schedule

Bi-weekly meeting: Tuesday 8 AM PST.

Join the call: www.uberconference.com/lf-dronecode Dial in number: 415-891-1494 No PIN needed

Comparative Analysis of existing SDKs

Note: Essentially Mobile SDK is same as onBoard SDK with an additional wrapper layer and remote connection support

Mobile SDKs:

Type Features DJI Parrot FlytOS DroneKit
Flight High and Low Level Flight Control Yes Yes Yes Yes
Aircraft state through telemetry and sensor data Yes Yes Yes Yes
Obstacle Avoidance Yes No Yes No
Camera Camera and gimbal control Yes Yes Yes Yes
Live Video Feed Yes Yes Yes No
Remote access to media stored on Camera Yes Yes Yes Yes
Missions Define custom missions Yes Yes Yes Yes
Predefined Missions: Waypoint, HotPoint, FollowMe Yes No Yes Yes
Subsystems State information and control of Battery and Remote Control Yes Yes Yes Yes
VR Support No Yes No No
Cloud API Support No Yes Yes No

OnBoard SDK:

Type Features DJI Parrot FlytOS DroneKit AirLib
Flight High and Low Level Flight Control Yes NA Yes Yes Yes
Aircraft state through telemetry and sensor data Yes NA Yes Yes Yes
Obstacle Avoidance Yes NA Yes No Yes(minimal)
Camera Camera and gimbal control Yes NA Yes Yes No
Live Video Feed Yes NA Yes No No
Missions Define custom missions Yes NA No Yes No
Predefined Missions: Waypoint, HotPoint, FollowMe Yes NA Yes No No
Subsystems State information and control of Battery and RemoteControl Yes NA Yes Yes No
Cloud API Support No No No No No

SDK WG Bi-Weekly Meeting Minutes

SDK WG - June 20th

→ Comparative analysis of existing SDKs (listed above) was discussed in brief

→ Mark:

  • Licensing information to be added
  • API/Interfaces available as part parrot SDK could be considered as reference
  • Need to consider both Commercial and industrial applications/use cases

→ AirLib → SDK from Microsoft

  • MIT License
  • It has both CPP and Python Interfaces
  • Cross flight stack friendly and not only MAVLink tied (it has provided flexibility to add non mavlink protocols too)
  • Supports UDP, UART, TCP connection.
  • No support for Android and iOS
  • Supports only clang compiler
  • Mavlink library is ported to CPP. With this object oriented approach - makes easy to have pack/unpack function for each MAVlink message
  • Allows apps to configure drone connection parameters; so apps can choose which drone it wanna talk to.

→ DroneLink - > CPP Library provided by PX4 (Julian)

  • Only CPP support for now
  • BSD 3 License
  • Tightly coupled with PX4 and Mavlink like there are px4 custom modes support in source code.
  • Supports only UDP connection for now, TCP and Serial connection not implemented for now
  • REST Interface support - on going - to be shared
  • Wrapper for iOS and Android - To be implemented and shared (However, build infrastructure for Android and iOS is present)
  • Auto detects the tool chain on the current platform
  • Uses discovery model so that apps binds to a well-known port used by MAVROS (14540).(Author mentioned this as part of code that either this SDK or mavros can be used)

Quick Observations/Issues DroneLink:

  • Suggested Documentation changes related to App development - resolved by Julian.
  • Raised an issue regarding Example app build error - resolved by Julian.

Plan/Next Steps:

  • Offline discussion with other relevant stakeholders who could not attend the call (on Slack maybe) and capture the inputs/suggestions and update on WG Wiki
  • Julian to share his road map for DroneLink implementation
  • Progress/updates could be shared on wiki
  • To evaluate efforts on supporting Android and iOS on AirLib
  • To figure out on collecting inputs/suggestion by the application developers

Observations on Dronesmith SDK:

  • Dronesmith SDK is not opensource SDK
  • It is specific to Luci hardware, though they support MAVLink
  • Luci hardware is combination of Edison and STM32F427 Cortex which acts as Flight controller.
  • Luci runs a customized fork of PX4 Firmware to handle the flight control.
  • Dronesmith Engine is been provided as release binaries which runs on Edison board and host webserver.
  • Support for Cloud APIs and local REST APIs(Which onBoard apps can use) is been provided.

Observations from developers:

AirLib DroneLink Dronekit
Setup/Infrastructure Easy to setup. Just follow wiki instructions and the HelloDrone application will work. Minor changes had to be done to setup (fixed now) Easy setup
Ease of use Easy to use, as user needs to include RPC client and rest will happen in background. PythonClient provides RPC facilities without app's knowledge. Its free for Python apps! APIs are well categorized and easy to use Easy to use
Extensibility Easy to extend, could add mission planning feature easily Uses compile-time plugs. Need to get more understanding
Feature Delta
Language bindings Cpp/Python Cpp/Java/Objective-C Python/Java
Supported platforms Windows/inux Linux/Mac/Windows/iOS/Android Linux/Mac OS/Windows
Code Structure Excellent Simple and Good Good
Communication compatibility Cross-protocol (as of now MavLink, ways to extend to other protocols) MAVLink MAVLink
AutoPilot Compatibility All AutoPilots that support MAVLink PX4 All AutoPilots that support MAVLink. Most compatible with ArduPilot, less to others.
Cloud Support No No Partial (Store, Share and access vehicle and flight log info)
Features More Navigation APIs Comparatively less Good
Mission management No Yes Yes

Building AirLib SDK for Android

  1. Built RpcLib, AirLib and MavlinkCom individually. There were linker errors (-lpthread) while building apps.
  2. Now, using Android Ninja build system for the same - In progress.
  3. Android has slightly different implementation of pthreads. So, we may have to make changes in AirLib sdk source code for Android under a flag.
  4. Posted queries in GitHub::Airsim on SDK architecture which happens to be in their TODO list.
  5. Shared HelloDrone example source for both AirLib and DroneLink sdks in Slack #sdk group. Examples are tested on jMAVsim.

Current Status:

  • DroneLink is chosen as Dronecode SDK and is renamed as DroneCore with the necessary architectural changes to suit the purpose.
  • Brainstorming the Intuitive, On-demand and compelling applications for the user - Ongoing and WIP

App features Categories

  • Geo-fencing
  • Flight control
  • Mission planning
  • Networking
  • Photography / Video
  • VR/AR
  • Object Tracking
  • 2D/3D Mapping, etc.
  • Intuitive User interface

Drone application features (spread across above categories) available in iOS/Android:

  1. Providing detailed wind and weather information to help user decide if it’s safe to fly.
  2. Feed the app with parameters of your drone and indicate whether or not today is the day to fly. App should make sure whether the weather favours flying.
  3. Hourly forecast on a range of piloting info is provided, including wind speed and direction, wind chill and temperature, cloud cover, visibility and more are available for a week.
  4. Provides mapping with visible no-fly zones.
  5. Provides news feed from various drone websites.
  6. Lets user notify nearby airports that he is flying a drone.
  7. Should alert user on any unmanned aircraft flying nearby.
  8. Lets user plan the flight and do the survey autonomously.
  9. Lets user capture images at a specific time say sunrise or sunset or with different shades of light.
  10. User can view augmented reality projections of the sun and moon paths, pinpoint the time the sun or moon will be at a particular location in the sky, predict and plan for the golden hour, blue hour and every sunrise, sunset, moonrise and moonset and prepare night photography shots.
  11. Users get to know the drone Pilots nearby and socialize during fly.
  12. Should help user find who is flying in neighbourhood by letting them know of any user-submitted (other user) flying spots nearby, and the profiles of the people who fly there.
  13. Allows user to post a their profile and share any inspiring photos of popular spots with other fliers.
  14. Enable user to keep the frame fixed on a tracking object.
  15. Should keep an eye on local air traffic, warn user if any manned aircraft are flying nearby.
  16. Should allow user to blur object out of the point of interest area thereby promoting the object in focus.
  17. Should offer intuitive and powerful waypoint mission engine with seamless mission syncing across all personal devices of the user.
  18. Provide features like VR, panorama, Orbit, Follow Me modes.
  19. Provide fancy modes to user like mimic, intercept, etc. In mimic mode, when you tilt your device in any direction, the aircraft will mimic the tilting motion of the device to the directed pitch and roll. In Intercept mode, when you Point your device in any direction as if it were a laser pointer, the aircraft will intersect the imaginary laser created by your device.
  20. Provide you with real-time information about thousands of aircraft around the world to avoid close encounters. It lets user know before falling close to a manned/ unmanned aircraft.
  21. Provides advanced flight planning and autonomous control for your drone. Select a path of coordinates and watch your drone fly the route, have the app control camera exposure on the go.
  22. Capture enough data while the drone is flying, which is useful if user has a technical problem and want to know where the problem lies.
  23. Controlling the direction that the camera is pointing and controlling when video is recorded.
  24. Provide option to save pre-planned flights and reload them at any time, which is useful if user wants to take seasonal or construction videos.
  25. Provide 2D/3D mapping feature that automatically creates a flight path for your drone; then uploads the video and flight data to remote servers. User can then use these servers or your desktop PC to crunch through this data, turning the images and location of the drone into a 3D model of whatever user were flying over.
  26. Allow a second user to view the wireless video from the camera that's attached to the drone. The second user should also be able to control the camera, panning and tilting it around as the pilot controls the drone itself. In effect, that person should be able to work as the camera operator while the pilot keeps the drone flying.
  27. Reproducing the feel and experience of flying a drone. Should provide multiple viewpoints including the ground — plus a normal camera on the drone and a stabilized gimbal.
workgroup/dronecodesdk/start.txt · Last modified: 2017/12/19 15:34 by Anitha Suresh