Context:
We are looking to upgrade from Python 3.8 to Python 3.11 as 3.11 is the new default Python version on the Raspberry Pi 5 (and Python 3.8 will be unsupported soon). However, the DroneKit-Python library is not compatible with Python 3.11, and this decision matrix is used for the solutions to this issue.
Solution | Maintenance effort | Further impact |
---|---|---|
Do nothing: Stay on Python 3.8 | None | Compatibility issues with future versions of 3rd party Python libraries (e.g. Pytorch) |
Create our own MAVLink message processing and handling | Full responsibility on Autonomy to maintain
| Any bugs not caught at testing will occur during flight tests
|
*Fork DroneKit-Python and use as submodule | Full responsibility on Autonomy to maintain
| |
*Use DroneKit-Python as a submodule | Autonomy must maintain correct version of submodule | Submodule update by members must be made carefully
|
*Compile DroneKit-Python into a Python package | Autonomy must compile DroneKit-Python for every upgrade to new version Autonomy must maintain and allow access to correct version of package
|
*Note: DroneKit’s PyPI is out of date, but their GitHub repo is updated
...
Solution
...
Pros
...
Cons
...
Effort (time)
...
Maxwell Lou Verify compatibility with Python 3.
...
0
...
Import new DroneKit as a fork/clone (copy it into our project)
...
Import new DroneKit as a submodule
...
Create our own whl/package for new DroneKit on PyPI
...
11
It is compatible, tested using the unit test and mission planner
Some of the imports from the drone-kit library had to be changed since it assumed that it was already imported as a package (there are some weird things with imports when writing packages)
Decision
We have decided to implement the solution of forking dronekit-python source code due to low development effort and pretty low maintenance effort.