@@ -381,70 +381,35 @@ def test_noisy_barometer(noisy_barometer, example_plain_env):
381381
382382def test_noisy_gnss (noisy_gnss , example_plain_env ):
383383 """Test the measure method of the GnssReceiver class. Checks if saved
384- measurement is (latitude, longitude, altitude ) and if measured_data is [(t, (latitude, longitude, altitude) ), ...]
384+ measurement is (x, y, z, vx, vy, vz ) and if measured_data is [(t, x, y, z, vx, vy, vz ), ...]
385385 """
386386 # expected measurement without noise
387387 relative_position = Vector ([0.4 , 0.4 , 1 ])
388- lat , lon = example_plain_env .latitude , example_plain_env .longitude
389- earth_radius = example_plain_env .earth_radius
390388 x , y , z = (Matrix .transformation (U [6 :10 ]) @ relative_position ) + Vector (U [0 :3 ])
391- drift = (x ** 2 + y ** 2 ) ** 0.5
392- bearing = (2 * np .pi - np .arctan2 (- x , y )) * (180 / np .pi )
393- latitude = np .degrees (
394- np .arcsin (
395- np .sin (np .radians (lat )) * np .cos (drift / earth_radius )
396- + np .cos (np .radians (lat ))
397- * np .sin (drift / earth_radius )
398- * np .cos (np .radians (bearing ))
399- )
400- )
401- longitude = np .degrees (
402- np .radians (lon )
403- + np .arctan2 (
404- np .sin (np .radians (bearing ))
405- * np .sin (drift / earth_radius )
406- * np .cos (np .radians (lat )),
407- np .cos (drift / earth_radius )
408- - np .sin (np .radians (lat )) * np .sin (np .radians (latitude )),
409- )
410- )
411- altitude = z
389+ vx , vy , vz = (
390+ Matrix .transformation (U [6 :10 ])
391+ @ Vector .cross (Vector (U [10 :13 ]), relative_position )
392+ ) + Vector (U [3 :6 ])
412393
413394 noisy_gnss .measure (
414395 time = TIME ,
415396 u = U ,
416397 relative_position = relative_position ,
417398 environment = example_plain_env ,
418399 )
419- assert noisy_gnss .measurement == approx ([latitude , longitude , altitude ], abs = 3.2 )
420- assert len (noisy_gnss .measurement ) == 3
421- assert noisy_gnss .measured_data [0 ][1 :] == approx (
422- [latitude , longitude , altitude ], abs = 3.2
423- )
400+ assert noisy_gnss .measurement == approx ([x , y , z , vx , vy , vz ], abs = 3.0 )
401+ assert len (noisy_gnss .measurement ) == 6
402+ assert noisy_gnss .measured_data [0 ][1 :] == approx ([x , y , z , vx , vy , vz ], abs = 3.0 )
424403 assert noisy_gnss .measured_data [0 ][0 ] == TIME
425404
426- # check last measurement considering noise error bounds
427- noisy_gnss .measure (
428- time = TIME ,
429- u = U ,
430- relative_position = relative_position ,
431- environment = example_plain_env ,
432- )
433- assert noisy_gnss .measurement == approx ([latitude , longitude , altitude ], abs = 3.2 )
434- assert len (noisy_gnss .measurement ) == 3
435- assert noisy_gnss .measured_data [1 ][1 :] == approx (
436- [latitude , longitude , altitude ], abs = 3.2
437- )
438- assert noisy_gnss .measured_data [1 ][0 ] == TIME
439-
440405
441406@pytest .mark .parametrize (
442407 "sensor, file_format, expected_header" ,
443408 [
444409 ("ideal_accelerometer" , "csv" , "t,ax,ay,az\n " ),
445410 ("ideal_gyroscope" , "csv" , "t,wx,wy,wz\n " ),
446411 ("ideal_barometer" , "csv" , "t,pressure\n " ),
447- ("ideal_gnss" , "csv" , "t,latitude,longitude,altitude \n " ),
412+ ("ideal_gnss" , "csv" , "t,x,y,z,vx,vy,vz \n " ),
448413 ],
449414)
450415def test_export_data_csv (
@@ -485,7 +450,7 @@ def test_export_data_csv(
485450 ("ideal_accelerometer" , "json" , ("ax" , "ay" , "az" )),
486451 ("ideal_gyroscope" , "json" , ("wx" , "wy" , "wz" )),
487452 ("ideal_barometer" , "json" , ("pressure" ,)),
488- ("ideal_gnss" , "json" , ("latitude " , "longitude " , "altitude " )),
453+ ("ideal_gnss" , "json" , ("x " , "y " , "z" , "vx" , "vy" , "vz " )),
489454 ],
490455)
491456def test_export_data_json (
0 commit comments