ardupilot/libraries/AP_Math/chirp.h

54 lines
1.2 KiB
C++

#pragma once
class Chirp {
public:
// constructor
Chirp();
// initializes the chirp object
void init(float time_record, float frequency_start_hz, float frequency_stop_hz, float time_fade_in, float time_fade_out, float time_const_freq);
// determine chirp signal output at the specified time and amplitude
float update(float time, float waveform_magnitude);
// accessor for the current waveform frequency
float get_frequency_rads() {return waveform_freq_rads; }
private:
// Total chirp length in seconds
float record;
// Chirp oscillation amplitude
float magnitude;
// Chirp start frequency in rad/s
float wMin;
// Chirp end frequency in rad/s
float wMax;
// Amplitude fade in time in seconds
float fade_in;
// Amplitude fade out time in seconds
float fade_out;
// Time that chirp will remain at the min frequency before increasing to max frequency
float const_freq;
// frequency ratio
float B;
// current waveform frequency in rad/s
float waveform_freq_rads;
// current amplitude of chirp
float window;
// output of chirp signal at the requested time
float output;
};