High-level Framework for Rapid Development of UAS Software

Hi,

My name is Henrik, and I am currently working on my master thesis as a software engineer at University of Southern Denmark (SDU). The thesis title is "High-level Framework for Rapid Development of UAS Software". The description of the project is available here: https://drive.google.com/open?id=1FrKssRYj4sFkaI2yZmyRSdXj-rJmDjT52oqx6yTn1mo

In my feasibility study, I want to address the current techniques for developing unmanned aerial systems, why I thought it would be a good idea to ask the community, how current systems are/has being developed.

Note: this project is not specifically aimed at the Ardupilot stack, but as I am a user of Ardupilot, the initial research and development will be using the Ardupilot stack.

Note note: this project is not aimed at the actual flight control logic. This project is aimed developing complete systems, instead of flight specific software. Ardupilot flight stack is (in my personal opinion) a mature platform with a lot of active developers, why it would be reused instead of reinventing the wheel.

As the project description describes, the project aims to create a high-level framework, which enables a more rapid development of UAS software for software developers. Examples could be a ground station, able to communicate with a UAV, or a web server providing access to UAV data/state.

The project also considers onboard developing. The framework should make it possible to develop onboard applications on a companion computer, which can interact with the UAV, and make UAVs more autonomous. For example by using computer vision or external sensors.

So far I have discovered a lot of useful frameworks/environments, which all can provide some kind of access to vehicle control/data/state.

  • 3DR DroneKit
  • Dronecode SDK
  • Dronefleet
  • FlytOS
  • DJI Developer SDKs
  • ROS

Personally I have been working a bit with DroneKit, both the python version, and the android version, which to me is a very nice framework, providing some of the functionality I am looking for in this project. The downside is that it only provides a limited amount of functionality, and a lot of functionality has to be implemented by the developer, in order to have fully control of the UAV, for example direction control/velocity control of the UAV, has to be implemented by manually creating a mavlink message.

The DJI SDKs provide a more complete access to the vehicle state and control, which makes it (in my opinion) easy for developers to create a custom solutions to companies, using their platform. In my opinion, the success of this project would be to have a framework like the complete DJI SDK available to developers using other platforms than DJI.

I would like to ask the community following questions:

  1. Which framework am I missing, and what do you, as a software developer miss from any of these frameworks, and what would you like to see in another framework, which would provide the ability to develop UAS software more rapidly?
  2. What high-level programming language would you like to develop UAS software in?
  3. What would you like to have handled onboard, and what should be off loaded to the ground station?

I hope a lot of people would like to participate in this project. Everyone contributing to this project, will of course be credited in the project. I will also keep the state of the project updated in this thread.

Thank you for your participation!

Best regards, Henrik Frank
University of Southern Denmark

1 Like

Reserved for future use

Very cool. Looking forward to seeing where you take this.
MAVProxy should probably be on that list. It isn’t as abstracted as Dronekit, but is definitely a powerful framework.
I’d suggest reaching out to @peterbarker and @tridge, perhaps on gitter.
Re languages: Hidden somewhere in GitHub is an incomplete “Dronekit-Rust”.
Rust is less widespread than C++, Python and Java, but might be worth at least looking into.

Thank you for your reply!

MAVProxy is already my favorite tool for testing the ardupilot flight stack, which is why I more consider this as a already implemented GCS? Am I right? Or am I missing something?

The framework should make it possible for developers, to develop something like MAVProxy, in my opinion.

I will have a look at Dronekit-Rust. Thanks for your participation.

Henrik

MAVProxy can do many things: it’s the Grandpa of Dronekit (via DroneAPI)!
The GUI modules are ground segment examples. The CUAV imaging tools are examples of mavproxy modules that can be run on a companion computer.
http://canberrauav.github.io/cuav/build/html/index.html