What is the recommended best practice for developing on companion computers?

Hello, having followed the discussion about Dronekit here, it seems that Dronekit will slowly fade away as a framework for development on companion computers.

So, my question to the community is, what should we be developing in, to reasonably future proof our code and follow best practices? While the core of Ardupilot is, well, the Ardupilot software itself, a lot of development for custom functionality (especially for computationally intensive stuff like computer vision) will always be best suited for the companion.

So, at present, there is pymavlink (super raw), Dronekit (on its way out) and MAVROS (and Lua scripting on the Ardupilot board but that is limited in the hardware resources it can tap). Am I missing something? Given the current state of affairs, what do you guys think is/will be the most suitable framework for developing on the companion?

ROS and ROS2 in the future

There is also mavsdk. I am not sure how mature it is, but I think it is actively maintained. I think it is emerging from the PX4 community, but mavlink is the same for both PX4 and Ardupilot. It works with both python, C++, android and ios, where android is still in beta.

Thank you both. Regarding MAVSDK, by reading the docs it seems it should support some functionality of Ardupilot but, since it is focused mainly on PX4 and the two projects use some MAVLINK messages differently, it might not support Ardupilot as fully. Also, the documentation is not (yet) as good as the old Dronekit docs. It seems to me that ROS is most likely the way forward.