GSoC 24: All in one system identification toolkit for ardupilot

Greetings everyone. My name is Astik Srivastava, and I’m an undergraduate engineering student from Delhi Technological University, India. I’ve been selected as a contributor for ArduPilot, for this year’s Google Summer of Code, with @iampete and @bnsgeyer as my mentors. I’m working on developing a system identification library for ardupilot vehicles, which allows identification of linear parametric models for the dynamics of these vehicles. These models can be used for certification purposes, controller gain optimization, performance evaluation, etc.

The project can be majorly divided into two parts:

  1. Library for model estimation: Currently, ArduCopter provides a system identification mode, which can insert frequency sweep chirps as inputs, in various location along the control loop. My job is to provide code that can analyze this input and resulting outputs (like body rates, accelerations) to estimate a model.
  • Progress made so far: We looked at multiple open source packages written in python, that can be used for system identification. I’ll be focusing the development on top of this repository: pyAircraftIden, which provides frequency domain estimation and allows us to define custom model structures, which can be taken from literature.
  1. Lua script for frequency sweep generation for ArduPlane: Unlike Copter, Plane does not have a dedicated mode for frequency chirp input. Hence, I’ve created a lua script that can be used to excite control surfaces in both open loop and closed loop settings (manual mode for open loop, stabilize/fbwa mode for closed loop).
  • Progress made so far: The pr for frequency sweep lua script can be found here: Even though basic script is working, modifications need to be done to ensure smooth transition, pilot controllability and safety of maneuvers.
  1. Web tool development for system identification: To ensure that users with varying technical backgrounds can use the library, I’m working with my mentors to build a web tool similar to UAVlogviewer, based on the work done by us on the system identification library
  • Progress made so far: We are trying to get the code working with pyodide, to allow python code to run in browser, completely on the client side.

I’ll be regularly updating my progress here. I request the community to provide suggestions on how we can make this project better.

Thank You!

7 Likes

Hi @Astik_Srivastava,

Welcome and thanks so much for the explanation of your project!

I hope you don’t mind but I’ve added an image to the top to make it more attractive when viewed from ardupilot.org. This is the output from feeding your blog into dall-e. Feel free to replace it with something else!

1 Like

To be honest I find this image quite bad due to various AI artifacts such as “bent” props, inconsistent landing gear and GNDN wires.

If I saw article with such image on the website I would likely skip it assuming the author didn’t put more effort into the content of the article than into the image.

Hi @LupusTheCanine,

well, you know… it’s just an image Dall-e came up with in a few seconds. Feel free to provide a better one!