diff --git a/sensors/acquisition_Sys.m b/sensors/acquisition_Sys.m index 3b5dfe87b1dc1bae881a2edb44077ae80fcde106..aaa89921faf463f0bc4913a579788fdbdba9a13a 100644 --- a/sensors/acquisition_Sys.m +++ b/sensors/acquisition_Sys.m @@ -99,11 +99,12 @@ OUTPUT: if isfield(sensorData, 'pitot') for ii=1:length(sensorData.pitot.time) - sensorData.pitot.measures(ii,:) = s.SSCDRRN015PDAD5.sens(sensorData.pitot.measures(ii)/100,... + asd = s.SSCDRRN015PDAD5.sens(sensorData.pitot.measures(ii)/100,... sensorData.pitot.temperature(ii) - 273.15); - sensorData.pitot.measures(ii,:) = sensorData.pitot.measures(ii)*100; + sensorData.pitot.measures(ii,1) = asd; + sensorData.pitot.measures(ii,1) = sensorData.pitot.measures(ii)*100; end - tot.pitot_tot(tot.npitot_old:tot.npitot_old + size(sensorData.pitot.measures,1) - 1,1) = sensorData.pitot.measures(1:end); + tot.pitot_tot(tot.npitot_old:tot.npitot_old + size(sensorData.pitot.measures,1) - 1,1) = sensorData.pitot.measures; tot.time_pitot(tot.npitot_old:tot.npitot_old + size(sensorData.pitot.measures,1) - 1) = sensorData.pitot.time ; tot.npitot_old = tot.npitot_old + size(sensorData.pitot.measures,2); end diff --git a/sensors/initSensors.m b/sensors/initSensors.m index 927b873404cd2ec52979a95d9a409da19fb6d80a..3bf2a85b33e0578919d0fe7e23524242a7d40b0b 100644 --- a/sensors/initSensors.m +++ b/sensors/initSensors.m @@ -98,10 +98,10 @@ s.SSCDRRN015PDAD5.minMeasurementRange = -1034; % in mbar (-1 s.SSCDRRN015PDAD5.offset = -1.9327; % in mbar s.SSCDRRN015PDAD5.resolution = 1; % in mbar s.SSCDRRN015PDAD5.noiseVariance = 75; % guess in mbar -s.SSCDRRN015PDAD5.error2dOffset = ep_data; % [p in mbar, T in celsius, ep in mbar] +% s.SSCDRRN015PDAD5.error2dOffset = ep_data; % [p in mbar, T in celsius, ep in mbar] % check 2d offset for pitot - +sensorTot.npitot_old = 1; sensorTot.np_old = 1; sensorTot.na_old = 1; sensorTot.ngps_old = 1; diff --git a/simulator/configEuroc.m b/simulator/configEuroc.m index 5289afdd03fdcc445c2a9aea9b475092781eb1d8..d4d5f3cd520cd563b043ec558096c63d34769702 100644 --- a/simulator/configEuroc.m +++ b/simulator/configEuroc.m @@ -122,12 +122,13 @@ settings.Controls = s.State.hprot'; clear('s'); %% CONTROL AND SENSOR FREQUENCIES -settings.frequencies.controlFrequency = 10; % [hz] control action frequency -settings.frequencies.accelerometerFrequency = 100; % [hz] control action frequency -settings.frequencies.gyroFrequency = 100; % [hz] control action frequency -settings.frequencies.magnetometerFrequency = 100; % [hz] control action frequency -settings.frequencies.gpsFrequency = 10; % [hz] control action frequency -settings.frequencies.barometerFrequency = 20; % [hz] control action frequency +settings.frequencies.controlFrequency = 10; % [hz] control action frequency +settings.frequencies.accelerometerFrequency = 100; % [hz] sensor frequency +settings.frequencies.gyroFrequency = 100; % [hz] sensor frequency +settings.frequencies.magnetometerFrequency = 100; % [hz] sensor frequency +settings.frequencies.gpsFrequency = 10; % [hz] sensor frequency +settings.frequencies.barometerFrequency = 20; % [hz] sensor frequency +settings.frequencies.pitotFrequency = 20; % [hz] sensor frequency %% KALMAN TUNING PARAMETERS settings.kalman.dt_k = 0.01; % [s] kalman time step diff --git a/simulator/configRoccaraso.m b/simulator/configRoccaraso.m index 1d63a43456b80c1715d9904a433ee703807d162b..69a1bf94907910fcc1a3487782f97b1784ea9d5e 100644 --- a/simulator/configRoccaraso.m +++ b/simulator/configRoccaraso.m @@ -130,7 +130,7 @@ settings.frequencies.gyroFrequency = 100; % [hz settings.frequencies.magnetometerFrequency = 100; % [hz] sensor frequency settings.frequencies.gpsFrequency = 10; % [hz] sensor frequency settings.frequencies.barometerFrequency = 20; % [hz] sensor frequency -settings.frequencies.pitot = 20; % [hz] sensor frequency +settings.frequencies.pitotFrequency = 20; % [hz] sensor frequency %% KALMAN TUNING PARAMETERS diff --git a/simulator/manageCalibration.m b/simulator/manageCalibration.m index f1fcafe8062a10d2b0f33ac0461fa1565af48ef5..7b7bc64500d2349e0f015520a7c901f38b54c42d 100644 --- a/simulator/manageCalibration.m +++ b/simulator/manageCalibration.m @@ -4,6 +4,8 @@ Na = freq.accelerometerFrequency/freq.controlFrequency; Nm = freq.magnetometerFrequency/freq.controlFrequency; Ngps = freq.gpsFrequency/freq.controlFrequency; Nbar = freq.barometerFrequency/freq.controlFrequency; +Npit = freq.pitotFrequency/freq.controlFrequency; + ome = settings.OMEGA; phi = settings.PHI; @@ -14,33 +16,38 @@ for i = 1:Na SensorData.accelerometer.measures(i,:) = (A*[0; 0; -9.81])'; SensorData.gyro.measures(i,:) = [0, 0, 0]; end - SensorData.accelerometer.time = zeros(1,Na); - SensorData.gyro.time = zeros(1,Na); +SensorData.accelerometer.time = zeros(1,Na); +SensorData.gyro.time = zeros(1,Na); for i = 1:Nm SensorData.magnetometer.measures(i,:) = (A * magField)'; end - SensorData.magnetometer.time = zeros(1,Nm); +SensorData.magnetometer.time = zeros(1,Nm); for i = 1:Ngps SensorData.gps.velocityMeasures(i,:) = [0,0,0]; SensorData.gps.positionMeasures(i,:) = [settings.lat0,settings.lon0,settings.z0]; end - SensorData.gps.time = zeros(1,Ngps); +SensorData.gps.time = zeros(1,Ngps); - [T,~,P,~] = atmosisa(settings.z0); +[T,~,P,~] = atmosisa(settings.z0); for i = 1:Nbar SensorData.barometer.measures(i,1) = P; SensorData.barometer.temperature(i,1) = T; end - SensorData.barometer.time = zeros(1,Nbar); - +SensorData.barometer.time = zeros(1,Nbar); + +SensorData.pitot.measures = zeros(Npit,1); +for i = 1:Npit + SensorData.pitot.temperature(i,1) = T; end +SensorData.pitot.time = zeros(1,Npit); +end + function A = cdmrot(q) A = [q(1)^2 - q(2)^2 - q(3)^2 + q(4)^2, 2*(q(1)*q(2) + q(3)*q(4)), 2*(q(1)*q(3) - q(2)*q(4)); 2*(q(1)*q(2) - q(3)*q(4)), -q(1)^2 + q(2)^2 - q(3)^2 + q(4)^2, 2*(q(2)*q(3) + q(1)*q(4)) ; 2*(q(1)*q(3) + q(2)*q(4)), 2*(q(2)*q(3) - q(1)*q(4)), -q(1)^2 - q(2)^2 + q(3)^2 + q(4)^2]; - end \ No newline at end of file diff --git a/simulator/manageSignalFrequencies.m b/simulator/manageSignalFrequencies.m index c22f25fa70ae20e65d71e6ebe1a06a982387d685..e8e3b5feb7a744496c4ecc9e6d67363beeb54c1d 100644 --- a/simulator/manageSignalFrequencies.m +++ b/simulator/manageSignalFrequencies.m @@ -287,7 +287,7 @@ if isfield(freq, 'pitotFrequency') z(i) = - m*iTimeBarometer + q; else vx(i) = Y(iTimePitot == T, 4); - z(i) = -Y(iTimeBarometer == T, 3); + z(i) = -Y(iTimePitot == T, 3); end end @@ -308,8 +308,8 @@ if isfield(freq, 'pitotFrequency') wind_body = ned2body*wind_ned; - v = vx + wind_body(1); % Speed x_body + wind in x_body direction + v = (vx + wind_body(1))'; % Speed x_body + wind in x_body direction sensorData.pitot.temperature = Temp; - sensorData.pitot.measures = 0.5*rho*v*v*sign(v); % differential pressure in Pascals + sensorData.pitot.measures = (0.5*rho'.*v.*v.*sign(v))'; % differential pressure in Pascals end diff --git a/simulator/start_simulation.m b/simulator/start_simulation.m index d5a06abfbb8d5a55476174b4aa88f90ecb276834..79a36bd86b3371b186e5f0a245683cc1e1dc4026 100644 --- a/simulator/start_simulation.m +++ b/simulator/start_simulation.m @@ -50,7 +50,7 @@ end %start simulation -[Yf, Tf, cpuTimes, flagMatr, otherData] = std_run(settings); + [Yf, Tf, cpuTimes, flagMatr, otherData] = std_run(settings); if not(settings.electronics)