sys_id_chirp
Chirp maneuver for system identification. The chirp is a sine wave with frequency increasing constantly in time. It’s a good candidate as input for system identification since it covers a broad frequency spectrum. This module automates performance of the chirp and exposes an easy interface for tailoring the maneuver to your specific aircraft. The module is used by including the module in the airframe file and adding the following line to the <command_laws> section: <call fun=”sys_id_chirp_add_values(autopilot_get_motors_on(),FALSE,values)”/> You can pick the axes to apply chirps to by setting the CHIRP_AXES variable with the COMMAND_XXX variables where XXX are the actuators defined in the <commands> section of your airframe. Remeber to deactivate the control input when the system identification input is running using (can be checked using the sys_id_wave_running() function) Then, the GCS exposes the settings for the chirp. - The Chirp axis settings is the index (0-based) of the axis to choose within the CHIRP_AXES variable specified. In the default, this means i.e. 0 means roll chirp. - Amplitude is the amplitude of the chirp - On-axis noise is the fraction of the chirp amplitude to add as noise to the chirp axis (see pprz_chirp.h for more details) - On-axis noise is the absolute value for off-axis noise (see pprz_chirp.h for more details) - Fstart_hz and Fend_hz are the frequencies in hertz at the start and end of the chirp. Make sure to cover all relevant dynamics frequencies - Length_s is the length in seconds of the chirp Start the chirp by checking the Active box in the “Activate chirp”. Stop the chirp by checking the Inactive box in the same input setting. Add the message “CHIRP” to your telemetry to see chirp progress, and to your logger to automatically filter chirps in post-processing.
SYS_ID_ |
||
---|---|---|
Name |
Value |
Description |
CHIRP_AXES |
{COMMAND_ROLL,COMMAND_PITCH,COMMAND_YAW,COMMAND_THRUST} |
Which axes the chirp is applied to (specify as array with {}) |
CHIRP_ENABLED |
TRUE|FALSE |
If false, the chirp does not run and values are not added |
CHIRP_USE_NOISE |
TRUE|FALSE |
If true, add noise to all axes (also the axes where no chirp is active) |
CHIRP_EXPONENTIAL |
TRUE|FALSE |
If true, exponential-time chirp. Else, linear-time chirp |
CHIRP_FADEIN |
TRUE|FALSE |
If true, start the chirp with two wavelengths of the lowest frequency |