QGroundControl is great! It's open source and provides the ability to easily produce "survey" flight paths, which often costs a lot of money to achieve via other apps and software.
Unfortunately it does not work with DJI drones. Some great looking work has been done with https://github.com/diux-dev/rosettadrone which seems to provide this capacity. I have not tested it, but looks cool.
For one reason or another, I decided to just use the flight plan output from
QGroundControl and wrangle it into a shape that DJI GO 4 is happy with.
This way I can use the stock DJI app for now, until I have tested, and am
comfortable that the
rosettadrone approach is stable for my uses.
And I get to save masses of time with survey-type waypoints :D
Convert QGroundControl survey waypoints to DJI GO 4 waypoints 2.0. This is spefically intended to work only with the "survey" mode from QGroundControl.
This will likely only work if your smartphone is rooted, as you will need
My personal recommendation is to get
This script is largely very naiive. It works as expected with
qgroundcontrol v4.0.11-1 and
DJI GO 4 v?? as of date 06-11-2020.
There is no guarantee it will continue to work with future updates of either application. You have been warned.
By default, a backup of the original DJI GO 4 database is made, so even if the resulting db is broken, you can always recover the original.
Has only been tested using
omnirom beryllium - your mileage may vary.
For the script:
- Python 3
- all required modules are I believe part of python core
- DJI GO 4
- Open QGroundControl
- either with the app on your phone, or more easily with the desktop version. Tested with Linux and the App, but should be the same for Mac and Windoze
- Create a survey waypoint mission
- Make sure the camera lens settings are all correct
- Use your common sense to determine
- suitable overlap
- cruising flight speed
- suitable altitude
Some settings can be passed directly to the script from the commandline, and will overwrite the equivalent values from QGroundControl.
n.b. This script currently ignores takeoff and landing points, and solely focusses on the survey mission waypoints, at a single altitude.
It is assumed that you have a terminal open on your "host" in a suitable working
directory, and that
qgc2dji.py is in that directory.
When copying the
.db you can store it wherever you like - it just has to be a
adb pull can retrieve from.
Once your phone is rooted and reasonably under your own control (developer
options enabled, USB debugging enabled):
Use your own judgement when it comes to
chmod to match the original
[host]$ adb shell [phone]$ su [phone]# cp /data/data/dji.go.v4/databases/way_point_2.db /sdcard/ [phone]# <ctrl-d> [phone]$ <ctrl-d> [host]$ adb pull /sdcard/way_point_2.db ./ [host]$ python ./qgc2dji.py -i <qgroundcontrol savefile> -d ./way_point_2.db [host]$ adb push ./way_point_2.db /sdcard/ [host]$ adb shell [phone]$ su [phone]# cd /data/data/dji.go.v4/databases [phone]# mv /sdcard/way_point_2.db ./ [phone]# ls -ld drwxrwx--x 2 <user> <group> 4096 2020-11-06 11:48 . [phone]# chown <user>:<group> ./way_point_2.db [phone]# chmod 660 ./way_point_2.db
- Also update 'way_point_2_cache.db'
- Choice of "action upon mission completion"
- Currently defaults to hover
- Altitude per waypoint
- Takeoff and landing points?
- Calculate appropriate crusing flight speed?
- Dependent on required overlap and limitation of camera regarding photo interval
- Waypoint triggers (start/stop recording, take photo, etc)