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:
- 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.
- 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.
- 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!