GSoC 2020 – Matlab and Simulink conclusion

Over the summer I have been working away adding various features to ArduPilot to improve connectivity with MATLAB and Simulink. I will give a brief overview of the features added over the course of the project.

JSON SITL backend

Firstly, a simple JSON format interface was developed, this gives an easy to implement and expand format for physics models to talk to ArduPilot. Although this was originally developed with MATLAB in mind this is now also used by the Pybullet interface along with other simulators in development.

MATLAB vehicle physics example

This allows one to write a physics backend in MATLAB and fly it with ArduPilot using the new JSON format. Custom vehicle dynamics can be added to support new vehicle types or to model existing types in more detail. The user only needs calculate the forces and moments the motors/wing/wheels/rudder/legs ect produce, the dynamics and connection are done by the provided connection function. A copter example has been made, it will happily fly with the EKF running, this is a good sign that the physics is correct and the is simulator working in sync with ArduPilot.

Simulink example

A Simulink rover and helicopter model have also been added. The rover example is very basic; however, the helicopter model is very detailed (Thanks Bill!).

Streaming and displaying Data

MATLAB can also be used as a powerful visualisation tool allowing the developer to see what is going on inside the code in real-time. This insight can help quickly track down bugs and help understand behaviors. Thanks to the UDP connection tools implemented for the physics backend this is quick and easy to setup.

Interfacing with serial ports

Again, thanks to the connection tools implemented for the physics backend it is now posible to quickly develop code that interfaces with SITL serial ports. This can be used to debug new drivers and provide known readings for testing SITL.


MATLAB was also used to prototype a new methodology for AutoTune. Although this work is not yet finished it is hoped that it will bring a autotune to new vehicle types in the future.


Instructions on how to use MALTAB and Simulink with ArduPilot can be found on the Wiki.

Pull Requests
This GSoC project has generated lots of pull requests, I’m pleased to say most of these have now been merged into the main ArduPilot repository.

It only remains to thank the ArduPilot dev team for giving me the opportunity to participate in GSoC again this year.

In particular I would like to thank @tridge and @bnsgeyer my GSoC mentors for there support and advice.


@iampete Awesome work here!! Really appreciate all of the time and effort you put into this.

1 Like

This is some fine work, but I can’t see the motivation behind it.
Is just for the sake of supporting Matlab/Simulink for those who still use it, or there are some gains/features to be found here and not elsewhere?

fantastic work Peter! I’ve so enjoyed working with you on these features

1 Like

I have been testing the MATLAB backend for a day or two now and its working really well!
Really fantastic work! Cheers :slight_smile:

1 Like