Start.py issues regarding VIO

After guidance by field specialists, our drone was setback to run on Python 3.8, including the files required to run. However, when running “python3 start.py build fcm mqtt mavp2p vio fusion sandbox -l” (as advised to do so), we get an error stating that the “‘vio’ failed to build”. It appears it is still searching for Python 3.9 instead of version 3.8.

First off, you shouldn’t need to use the “-l” flag. That’s mainly for development and builds the container images locally versus pulling the prebuilt images from the GitHub container registry.

However, the AprilTag image will still fail to build. Due to proprietary Nvidia libraries, this has to be built on the Jetson and premade images are not available. The build issues stem from Nvidia’s base container image with the required CUDA libraries. The Jetson operating system and container images are all based on Ubuntu 18.04. Ubuntu 18.04 ships with Python 3.6 out of the box, which is out of support and rather old. We like to use newer versions of Python for the new features, so we manually install that. However, Ubuntu 18.04 has reached end-of-life at the end of May 2023. The source we were using to install newer versions of Python from (the “deadsnakes” ppa) deletes their builds for out-of-support operating systems: end-of-lifed ubuntu distributions · Issue #251 · deadsnakes/issues · GitHub

To get around it, I was able to make a copy of previously downloaded copies on Python in some of our older container images: Release Assets · bellflight/AVR-Python-arm-deb · GitHub
I have already patched this in the next-generation of the flight software: Fix python install · bellflight/AVR-VMC-AprilTag-Module@1e8b7c8 · GitHub
I have tested this on my Jetson and it appears to work. This will need to be backported (@nbrownback-bell) to the AVR-2022 repo for that repo to continue to function.