DronePro on Android

 

A new DJI and 3DR drone controller with GoPro and UVC video preview support, and full joystick control.

 

Supports the following drones:

3DR Solo, IRIS, Y6 and IRIS+.

DJI Phantom Vision 2+ and Phantom 3 Professional.

 

With full ground control via waypoints; joystick control via gamepads and on-screen; Co-Pilot mode via ARDrone Combat.

Plus a VR Cardboard mode for 3D VR headsets or AR goggles.

 

Join the DronePro Beta on Google+

There is now a DronePro Beta on Google+.

 

 

 

 

DronePro Video

There is now a video which introduces DronePro.

 

 

Download DronePro

 

Available on Google Play Store

 

qrcode

 

 

This software uses code of FFmpeg licensed under the LGPLv2.1

 

This software uses the unmodified JAR of Apache Commons Net licensed under the Apache License, Version 2.0.

 

This software uses the JAR of mapsforge-map-0.3.0-SNAPSHOT-jar-with-dependencies.jar licensed under the GNU LESSER GENERAL PUBLIC LICENSE.

 

This software uses the LibUVC, libUSB and libJPEG libraries from UVCCamera licensed under the Apache License, Version 2.0.

 

Application Permissions and Privacy

This application does not keep or send to any servers in the control of the application developer any data which can identify the user.

However the DJI SDK, used to control any of the supported DJI drones, has its own set of permissions that it requires in order to work.

The full list of permissions that the DJI SDK requires to work are detailed on this DJI GitHub page.

Google requires any application that uses the READ_PHONE_STATE permission should explain its use and for this application it is required to use the DJI SDK.

Any users wishing more detail on why this permission is necessary should contract DJI directly, as all their applications also require it.

 

Main Flight screen showing on screen controls

 

Video Recording

The record button is top left. If recording is under way, the centre turns transparent. Video is recorded to the /sdcard/DronePro/video. If you are connected to a GoPro, it will control its recording and optionally local recording. For UVC capture, it is local only.

 

Settings Menu

Pressing the on-screen menu button:

 

 

Change Settings

Displays the settings screen, allowing configuration changes.

 

Flight Settings

Displays the Flight Mode with gimbal position and RC override (for Android joystick rather than radio control).

 

Manage Profiles

Profiles allow switching between different groups of settings. For example you can quickly switch between RC mode and local joystick mode.

 

Show Drone Location

Turn on the split screen map showing the drone location.

 

Refresh Licenses

Refresh the current license and also download a MapsForge map.

 

Launch CoPilot

Launches the CoPilot connection.

 

Backup / Restore

Allows the current app settings to be backed up to / restored from SD card.

 

Flight Settings Dialog

The Flight Settings dialog shows the current flight mode, gimbal position and RC override state.

Use the Flight Mode drop-down to select a different mode.

Adjust the gimbal position with the slider.

RC override uses the local joystick when selected. When not checked the pitch, roll, throttle, yaw and gimbal are all driven from your RC remote control.

 

 

Manage Profiles Dialog

The Manage Profiles dialog shows a list of the preference profiles you have created, allowing you to create or remove profiles.

Profiles allow you to create a set of preferences and then switch between them quickly.

For example, you can create a RC override profile for flying with a local gamepad or a RC profile for groundstation mode for flying with an RC controller. These can then be swapped quickly with a single press.

It is up to you how you want to use a group of preference settings.

 

 

 

Preferences

The main preferences allows you to configure DronePro via various sub menus.

The sub-menus are Licensing and Mapping, Joystick Settings, Video Settings,

Flight Settings, User Interface and Feedback, CoPilot, Gamepad Mapping,

Autonomous MAV and Debugging.

 

 

 

Licensing and Mapping

Licensing and Mapping allows you to refresh your DronePro license and to download an offline MapsForge map.

 

Licensing and Mapping:

 

 

Joystick Settings

Joystick Settings allow you to choose the settings for the cyclic and collective joystick.

 

 

Choose cyclic control mode

Pressing this shows a list box with the various ways of controlling the Drone pitch and roll (cyclic control).

 

Screen press tilt control

In this mode, you use the tilt of your phone to control pitch and roll by touching and holding anywhere on the screen.

You can also control the drone by holding on the collective joystick, then tilt controls pitch and roll and the collective joystick controls height and yaw.

 

Button press tilt control

In this mode, a small button is shown where the cyclic joystic would be displayed. Pressing and holding this is the only way of activating the tilt control for pitch and roll.

 

Toggle tilt control

In this mode, a small button is shown where the cyclic joystic would be displayed. Pressing this toggles between tilt control mode and hovering. In tilt control mode you no longer have to keep touching the screen while tilting your phone to control pitch and roll. Toggling out of tilt mode is the only way to get the Drone to go into a hands-off hover.

If you have Text to Speech enabled, a voice prompt is given stating when tilt control is active or disabled.

 

On-screen cyclic joystick

In this mode, an on-screen cyclic joystick is shown which can be used to control pitch and roll like a helicopter cyclic joystick. The cyclic joystick controls the drone pitch (via up/down) and roll (via left/right).

The tilt control of the drone is disabled.

 

Gamepad controls only

In this mode, neither the on-screen cyclic or collective joysticks are shown. Use this mode only if you are controlling the drone from a USB/BlueTooth gamepad.

 

 

Show collective joystick on left

When checked, shows the on-screen collective joystick on the left rather than the right. The collective joystick controls the drone height (via up/down) and yaw (via left/right).

If the Use cyclic joystick is also checked, then the cyclic joystcick will be shown on the right rather than the left.

 

Use larger on-screen joystick

When checked, the on-screen joystick will be larger. This is useful on devices with larger screens.

 

Use joystick touch centering

When checked, the on-screen joystick can be touched anywhere and this is taken to be the centre of the joystick. You can run out of range in this mode, if you hit the edge of the screen, so lift off and try touching closer to the joystick centre.

 

Maximum tilt angle for full pitch input

Adjusts the angle you have to tilt for full pitch input.

 

Maximum tilt angle for full roll input

Adjusts the angle you have to tilt for full roll input.

 

Cyclic Joystick deadzone

Adjusts the amount you have to move the cyclic joystick before the drone starts pitching or rolling.

 

Cyclic Joystick sensitivity

Adjusts the how quickly the drone responds to the cyclic joystick movements.

 

Joystick Settings continued:

 

 

Climb Joystick deadzone

Adjusts the amount you have to move the climb joystick axis before the drone starts changing altitude.

 

Climb Joystick sensitivity

Adjusts the how quickly the drone responds to the climb joystick axis movements.

 

Yaw Joystick deadzone

Adjusts the amount you have to move the yaw joystick axis before the drone starts rotating.

 

Yaw Joystick sensitivity

Adjusts the how quickly the drone responds to the yaw joystick axis movements.

 

Joystick Motion

Joystick Motion shows the current gamepad motion for cyclic and collective, or cyclic tilt when pressing on the screen.

Use this to show quickly adjust deadzones and sensitivities.

 

 

 

Video Settings

Video Stream

Shows the Video stream selection allowing to switch between GoPro video preview and an UVC video capture.

 

GoPro Settings

Shows the GoPro Settings.

 

 

 

Video Stream

 

GoPro Video

When connected to the GoPro wifi, a video preview stream is shown.

 

USB Video

When a USB UVC capture dongle is plugged in, a preview of the video stream from the drone FPV camera is shown.

 

 

 

 

GoPro Settings

Do not connect to GoPro WiFi

When checked, no wifi connection will be made to the GoPro and the video preview will be turned off with only the full screen map planner shown.

 

Auto-connect to GoPro WiFi

When checked, a dialog will appear to allow you to choose your GoPro WIFI SSID and the GoPro SSID entry will be enabled to allow it to be edited.

This SSID will be connected to automatically at app start-up or when switching back from the Licensing and Mapping download.

 

GoPro SSID

When 'Auto-connect to GoPro WiFi' is checked, press this to modify the WiFi SSID of the GoPro. The SSID should be surrounded by quotes (").

 

GoPro Password

Use this to set the password you have configured in the GoPro. This is required to capture stills and record video.

 

 

 

 

Flight Settings

 

Flight Mode

Shows the Flight Mode selection allowing to switch between the different flight modes.

 

Gimbal movement speed

When using a gamepad button to control the gimbal up/down, this adjusts the rate at which the gimbal moves.

 

 

 

Flight Modes

The default flight mode selection:

 

 

 

User Interface and Feedback

User Interface and Feedback allows you to choose the UI settings which are shown on-screen or via audio or vibration feedback.

 

 

Colours and Scaling

The various colours and scaling options.

 

Video and Recording

The video and recording options.

 

UI Options

The main UI options.

 

HUD Options

The HUD options.

 

Colours and Scaling

 

Transparency

Controls how opaque the controls are over the video.

 

Text Scale

Controls the size of the on-screen text.

 

Icon Scale

Controls the size of the on-screen icons.

 

Joystick Thumb Scale

Controls the size of the on-screen joystick central thumb button.

 

Joystick Scale

Controls the size of the on-screen joystick background. Changing this size will mean you also need to change sensitivities and deadzones

 

Adjust on-screen colour

Adjusts the colour hue of the on-screen joysticks and buttons. In the Pro edition this adjusts all icon colours not just the joysticks.

 

Adjust on-screen colour saturation (Pro only)

Adjusts the colour saturation of the on-screen controls.

 

Video and Recording

 

Record Bitrate

This slider controls the recorded video bitrate quality. Only for local overlay recordings.

Increasing the bitrate will give better quality video but with a larger file size.

 

Set video recording mode

Press this to select from a list of different video recording modes

 

GoPro recording

If a GoPro is connected, then recording will take place on this.

 

Local recording

Local recording will be at 640x360 for GoPro or 640x480 for USB UVC capture dongles.

 

Overlay drone information when recording

When checked, and local recording is active, this overlays extra drone information on the recording.

 

Start recording at take-off

Video recording will automatically start at take-off and stop on landing.

 

Overlay recording options

 

This includes height, heading, horizontal velocities,

battery level, wifi strength and quality.

N.B. This is only done for local recordings.

 

UI Options

Use haptic feedback

When checked, touching the screen will give a haptic vibration, if this is enabled in system settings.

Drone error conditions will produce a morse code SOS vibration pattern.

 

Use audio feedback

When checked, touching the screen will give an audio click, if this is enabled in system settings.

 

Use text to speech feedback

When checked, touching the buttons or error conditions will be spoken.

If text to speech is not installed then you should be prompted to install, but speech will not be heard until the ARDrone app is restarted.

 

Use imperial (ft)

When checked, speeds will be in ft/s, distances in yards and heights in ft.

 

Export Layout

When pressed, the current UI layout will be exported to /sdcard/ARDroneFlight/layout/ARDroneLayout.XML.

Use this to create a custom UI layout. Errors in the sdcard XML file will mean the built-in layout will be used.

In the worst case scenario, if the UI fails to load, simply delete the sdcard file.

If the sdcard file is present, you will be prompted if you want to overwrite it when Export is pressed.

 

Show visible buttons and UI

When pressed, shows a list of the UI elements that can be turned on and off.

 

 

Use on-screen exit button

When checked, shows an on-screen exit button.

This disables the back button exit.

 

Show wifi signal strength

When checked, shows a wifi signal strength icon.

N.B. This is the same as the wifi signal meter on your Android notification bar.

 

Show wifi link quality

When checked, shows a link quality icon.

This is a measure of errors in the link reported by the Drone. Lower levels indicate interference in the signal which will cause video drop-outs or control lag.

 

Show profile switch button

When checked, shows the profile switch button used to switch between the profiles.

 

Show snapshot button

When checked, shows the snapshot button used to take a drone camera snapshot saved to the /sdcard/ARDroneFlight/media folder.

 

Show record button

When checked, shows the record button used to record video.

 

Show map button

When checked, shows the map button used to show or hide the map.

 

Show hide button

When checked, shows the hide button used to turn on/off all the UI elements except for HUD .

 

Information block 1/2

Pressing this displays a list of the text that can be displayed in the left and right information blocks.

Information block 1 is on the left. Any options which are checked for both info 1 and info 2 will only be shown in information block 1.

 

 

 

Show altitude

Show drone altitude.

 

Show heading

Show drone heading.

 

Show velocity

Show drone velocity.

 

Show Flight Mode

Show current flight mode.

 

Show GoPro camera mode

When checked, shows the GoPro camera mode as video or still capture.

 

Show link quality

When checked, shows the wifi link quality.

This is a measure of errors in the link reported by the Drone. Lower levels indicate interference in the signal which will cause video drop-outs or control lag.

 

Show connected SSID

When checked, shows the wifi SSID that is currently connected.

 

Show GPS fix

When checked, shows the GPS fix accuracy in meters / yards.

This is only shown when the Parrot Flight Recorder is installed in the drone.

 

Show GPS distance

When checked, shows the distance between your device GPS and the drone GPS.

This is only shown when you have been into the map display and requires both a device GPS and a Flight Recorder in the drone.

Due to the GPS errors in both devices, the distance can be significantly out from the actual distance, so should not be relied on for range calculations.

 

Show profile name

When checked, shows the name of the currently selected profile.

 

Notification options

Pressing this shows a list box with the various ways of notifying via text to speech.

When the Pebble option is selected the selected notification options will also be sent to a pebble smartwatch.

 

 

HUD options

This controls the appearance and behaviour of the HUD:

 

Show HUD 3D model

When checked, shows a 3D model representing the Drone orientation and heading.

 

Use device compass heading for 3D model

When checked, the model heading will be relative to your device compass, so when they match the model will be facing straight up. When not checked, straight up is North.

You need to calibrate both your device compass (move in a figure of 8) and drone.

 

Show HUD attitude

When checked, a HUD attitude graticule which shows the Drone pitch and yaw relative to the horizon.

 

Show HUD velocity vector

When checked, shows the direction of the drone flight relative to its orientation.

 

CoPilot

Launches ARDrone combat to setup a co-pilot for flying the drone on photography sessions.

 

 

Gamepad Mapping

The Gamepad mapping screen allows the gamepad controls to be mapped for different controllers.

Touching a button section will prompt you to press a gamepad button for a Drone control.

Touching a joystick section will prompt you to move a gamepad joystick axis through its full range to select it for a Drone joystick.

If you have more than one gamepad, then use a different profile for each controller.

N.B. Gamepad mapping is only supported on Android 3.1 and newer and not all newer devices support gamepads. Check with your manufacturer for gamepad support.

 

 

 

 

Autonomous MAV

The Autonomous MAV section allows configuration of the MAVLink connection, planner mode and autonomous settings.

 

 

 

MAVLink connection type

Allows the configuration of USB or Bluetooth MAVLink connections:

 

 

 

Video percentage size in the map plan view

Controls the percentage of the screen being used to show video in the planner map view.

 

Use planner mode

Starts the map in the large planner mode, rather than split screen.

 

GPS fix needed for autonomous control

This slider controls the GPS fix accuracy that is needed before the MAVLink Waypoint following, Launch, Home and Here buttons are enabled.

The better the 3D GPS fix, the more stable the flight will be. It defaults to 6m.

 

Default waypoint height

This slider sets the default height when creating a new waypoint

It defaults to 3m.

 

Waypoint Editing

Pressing on a map waypoint now brings up a new edit dialog to allow you to edit the waypoint settings.

N.B. The new settings and height are only used by MAVLink Follow Waypoints mode. The Map Autonomous mode just uses the location.

For more detail on the waypoint format, see the Waypoint protocol.

 

 

 

Waypoint type

The Waypoint type drop down shows a list of the available MAV_CMDs.

 

 

 

Waypoints

Pressing the 'Waypoints' button takes you to the waypoint selection dialog which allows different waypoint files to be created and switched between.

Waypoint files are compatible with the QGroundControl file format.

 

 

 

Follow Waypoints

Pressing 'Follow Waypoints' uses the new MAVLink autonomous control to follow the active waypoints list.

The button will only be enabled if a sufficiently accurate GPS fix is available.

When the drone is under MAVLink waypoint following mode you cannot use manual controls and only the 'Disable' or 'Emergency' buttons will stop it.

 

New File

Pressing 'New File' creates a new waypoint file. The .txt extension is added automatically and it is created in /sdcard/ARDroneFlight/map.

 

Remove All

Pressing 'Remove All' prompts you to confirm that you want to clear all the waypoints from the currently selected waypoint file.

 

MAVLink Control

In addition to 'Follow Waypoints', Planner mode has MAVLink control buttons with icons for Launch, Home, Here, Disable and Emergency.

Follow Waypoints, Launch, Home and Here are only enabled with a good enough 3D GPS fix is available.

The Sat checkbox can only be used if you have connected to the internet in your area recently, as Google don't allow apps to cache this information.

The GPS checkbox allows the GPS and battery text to removed on a smaller screen. It defaults to be checked.

The Trk checkbox shows a track of the drone positions. It is not persisted and clears automatically when getting too large for Google maps.

When a better than 6m fix is available, the drone icon turns blue to indicate the best fix for MAVLink control.

 

 

 

Launch / Land

Pressing 'Launch' instructs the drone to take off and hover at the current position. The text changes to Land to land again.

If the button is greyed out and the Drone still flying, then use Emergency to land the drone.

 

Home

Pressing the 'Home' icon returns the drone to the current home position as determined by Parrot. This can either be the last launch position, first waypoint or current position, as Parrot are unclear what it does.

 

Here

Pressing the 'Here' icon will fly the drone to your current GPS position.

 

Disable

Pressing the 'Disable' icon tells the drone to stop its current activity and hold its current position.

 

Emergency

Pressing 'Emergency' tells the drone to stop its current activity and land at its current position.

N.B. This is via a controlled landing, not a rotor cut. It should also be used to reset the Launch state if the drone crashes.

 

Debugging

Allows the debugging mode to be turned on, at the request of the developer, so logs can be captured.

 

MeavyDev.co.uk © 2010-2015