2020-11-06 09:11:02 +00:00
|
|
|
## Why?
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
2020-11-06 08:44:14 +00:00
|
|
|
## Description
|
|
|
|
|
|
|
|
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 `su`.
|
|
|
|
My personal recommendation is to get `Magisk` installed.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
## Dependencies
|
|
|
|
|
|
|
|
For the script:
|
|
|
|
- Python 3
|
|
|
|
- all required modules are I believe part of python core
|
|
|
|
- sqlite3
|
|
|
|
|
|
|
|
Obviously:
|
|
|
|
- QGroundControl
|
|
|
|
- DJI GO 4
|
|
|
|
|
|
|
|
|
|
|
|
## Prerequisite
|
|
|
|
|
|
|
|
- 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
|
|
|
|
- other?
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
## Preparation
|
|
|
|
|
|
|
|
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
|
|
|
|
location that `adb pull` can retrieve from.
|
|
|
|
Once your phone is rooted and reasonably under your own control (developer
|
|
|
|
options enabled, USB debugging enabled):
|
|
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
Use your own judgement when it comes to `chown` and `chmod` to match the original
|
|
|
|
`.db`
|
|
|
|
|
|
|
|
```
|
|
|
|
[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
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Future
|
|
|
|
|
|
|
|
- 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)
|