Greetings, fellow developers and enthusiasts!
I’m thrilled to share an update on my Google Summer of Code (GSoC) 2024 project, where I’m working on enhancing the System Identification Toolkit for ArduPilot-compatible vehicles. This journey has been both challenging and rewarding, and I’m excited to share the progress and future plans with you.
Project Overview
System identification is a key process in control engineering that involves building mathematical models of dynamic systems from measured data. For ArduPilot-compatible vehicles, a robust system identification toolkit can significantly improve the accuracy and performance of the autopilot system, leading to better flight stability and control.
Updates:
- Web-Based system identification
A web-based toolkit has been created for estimating transfer function models from flight data, for both fixed-wing and multirotor UAVs. The webtool can be found here (GitHub - Astik-2002/WebTools at pyodide_sys_id).
So far, only transfer function estimation is enabled. State space estimation will be enabled in the coming weeks.
The toolkit uses pyodide to run python code in browser. This has a much slower execution than native python, hence the main python library can also be used (GitHub - Astik-2002/pyAircraftIden at development_webtool).
Below is a reference on how the interface looks:
-
The numerator and denominator of transfer function are provided in sympy polynomial syntax.
-
The start time and end time need to be provided to indicate the start and end time of chirp.
-
Symbolic params are the parameters of the transfer function that need to be estimated
The Output from the tool is given below:
The final coefficients are presented in symbolic format, and are also printed on pyodide output box.
- Lua Script for fixed-wing frequency sweep
- The script for enabling frequency sweep input on a single rc output for a fixed-wing UAV can be found here: AP_Scripting: plane doublet example modification by Astik-2002 · Pull Request #26472 · ArduPilot/ardupilot · GitHub
The script allows user to set the amplitude and total time of the chirp, along with the sweep and recovery mode. The script has been tested in SITL environment and on real-flight, however further testing is required.
I request all interested developers to try both these codes on their respective systems. As I continue to develop and enhance the System Identification Toolkit, your feedback is invaluable to us. We invite all users and developers to actively participate in shaping this toolkit by sharing your experiences, suggestions, and any issues you encounter. Kindly share your feedbacks with me or my mentors @iampete and @bnsgeyer .