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
Maxwell Lou Verify compatibility with Python 3.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)