Overview
I would like to present our project that we’ve been working on for the past year. It's a control app called DroneControl, developed using official DJI SDK together with their new UX SDK. It basically enables you as a drone operator to start a livestream session to anyone in the World and even let them take control of the drone. The viewer doesn’t need any third party app, as it works via any modern Web browser. While it works best for single viewers, it does support multiple viewers though bandwidth/CPU limitations apply in those cases. Current state of the app is BETA (Android only), which means that there might be some bugs. See below sections on how to join the BETA program if interested.
For more information on the overall application and service see the official page.
Ultra low latency live streaming and remote control
As mentioned above, the main functionality of the app is to livestream video with ultra low latency (below 1s) and let your viewers take control of the drone flight or gimbal camera. As the viewer simply accesses it via Web App (e.g. live channel), there is no requirement from the viewer to download another app. When the viewer joins the live stream via weblink, by default it will only see video, while remote flight and gimbal control will be disabled. Those can be controlled via a separate config page, where the main drone operator can enable/disable remote control for each viewer separately. There is also a safety mechanism put in place, where the drone owner just needs to move physical joysticks to immediately take back control of the drone (more on that security feature below).Security feature - immediately cut drone control from the viewer
We felt that some users would be uneasy relinquishing control of the drone to someone that is perhaps thousands of kilometers away laying on their couch, therefore have come up with the following solution. As the feature page for controlling drone control is accessible via additional tap, we’ve decided to implement a gesture where the drone owner can take back control of the drone immediately without any hassle of looking up in the app. It’s done by slightly moving any of the physical joysticks. It’s most useful when the owner feels the viewer is doing something dangerous (i.e. in the path of hitting something) and therefore needs to react in a split second.Remote control from viewer
Drone owners can either enable remote flight control or gimbal camera control. When flight control is enabled, viewer can control the drone by either:- Moving virtual joysticks by touch control
- Moving virtual joysticks with mouse
- If the viewer has an Xbox/PS controller connected to the PC, then virtual joysticks disappear and the viewer can then control it via Xbox/PS controller joysticks.
- There is also a control sensitivity slider option, where the owner can control how fast the drone can fly for the viewer.
Same applies for gimbal camera control, except that virtual joystick is not present until the user touches/clicks anywhere on the screen.
Beta program (Android only)
If you are interested in trying this app and therefore providing some feedback (which we would be very grateful), you’ll need to register for the BETA release here. Though currently we only have an Android app available. As this is a controlled BETA release, you will receive an email from us with links to download the app via official Google Play Store. Currently we’ve limited BETA release subscribers size to 100 people. As an early tester, you’ll have 200minutes of streaming assigned. This limitation exists due to server costs that still get incurred even though using WebRTC stack (more on technology stack below for those interested).Supported drones
Almost all DJI drones except the ones that have not yet been officially supported in the SDK, which are:- DJI Mavic Mini 2
- DJI Mavic Air 2S
There might be some video quality issues when streaming when using DJI Mavic 2 (Zoom/Pro) due to unique lenses and special handling required in the software to get the video feed. Also for best experience we recommend using higher range smartphone processors due to high CPU usage when processing video stream.