@@ -337,7 +337,7 @@ TEST (OpenSpaceToolkit_Astrodynamics_Flight_Profile, InertialPointing)
337
337
const Real positionTolerance_m = 1e-3 ;
338
338
const Real velocityTolerance_meterPerSec = 1e-6 ;
339
339
const Real angularTolerance_asec = 0.0 ;
340
- const Real angularVelocityTolerance_radPerSec = 0.0 ;
340
+ const Real angularVelocityTolerance_radPerSec = 1e-10 ;
341
341
342
342
// Reference data setup
343
343
@@ -373,7 +373,104 @@ TEST (OpenSpaceToolkit_Astrodynamics_Flight_Profile, InertialPointing)
373
373
374
374
}
375
375
376
- TEST (OpenSpaceToolkit_Astrodynamics_Flight_Profile, NadirPointing)
376
+ // TEST (OpenSpaceToolkit_Astrodynamics_Flight_Profile, NadirPointing_LVLH)
377
+ // {
378
+
379
+ // using ostk::core::types::Shared ;
380
+ // using ostk::core::types::Real ;
381
+ // using ostk::core::types::String ;
382
+ // using ostk::core::ctnr::Array ;
383
+ // using ostk::core::ctnr::Table ;
384
+ // using ostk::core::fs::Path ;
385
+ // using ostk::core::fs::File ;
386
+
387
+ // using ostk::math::obj::Vector3d ;
388
+ // using ostk::math::geom::d3::trf::rot::Quaternion ;
389
+
390
+ // using ostk::physics::units::Length ;
391
+ // using ostk::physics::units::Angle ;
392
+ // using ostk::physics::units::Derived ;
393
+ // using ostk::physics::time::Scale ;
394
+ // using ostk::physics::time::Instant ;
395
+ // using ostk::physics::time::Duration ;
396
+ // using ostk::physics::time::Interval ;
397
+ // using ostk::physics::time::DateTime ;
398
+ // using ostk::physics::coord::Frame ;
399
+ // using ostk::physics::Environment ;
400
+ // using ostk::physics::env::obj::celest::Earth ;
401
+
402
+ // using ostk::astro::trajectory::Orbit ;
403
+ // using ostk::astro::trajectory::orbit::models::Kepler ;
404
+ // using ostk::astro::trajectory::orbit::models::kepler::COE ;
405
+ // using ostk::astro::flight::Profile ;
406
+ // using ostk::astro::flight::profile::State ;
407
+
408
+ // // LVLH #1
409
+
410
+ // {
411
+
412
+ // const Environment environment = Environment::Default() ;
413
+
414
+ // const Length semiMajorAxis = Length::Kilometers(7000.0) ;
415
+ // const Real eccentricity = 0.0 ;
416
+ // const Angle inclination = Angle::Degrees(0.0) ;
417
+ // const Angle raan = Angle::Degrees(0.0) ;
418
+ // const Angle aop = Angle::Degrees(0.0) ;
419
+ // const Angle trueAnomaly = Angle::Degrees(0.0) ;
420
+
421
+ // const COE coe = { semiMajorAxis, eccentricity, inclination, raan, aop, trueAnomaly } ;
422
+
423
+ // const Instant epoch = Instant::DateTime(DateTime(2018, 1, 1, 0, 0, 0), Scale::UTC) ;
424
+ // const Derived gravitationalParameter = Earth::GravitationalParameter ;
425
+ // const Length equatorialRadius = Earth::EquatorialRadius ;
426
+ // const Real J2 = Earth::J2 ;
427
+
428
+ // const Kepler keplerianModel = { coe, epoch, gravitationalParameter, equatorialRadius, J2, Kepler::PerturbationType::None } ;
429
+
430
+ // const Orbit orbit = { keplerianModel, environment.accessCelestialObjectWithName("Earth") } ;
431
+
432
+ // const Profile profile = Profile::NadirPointing(orbit, Orbit::FrameType::LVLH) ;
433
+
434
+ // const Real positionTolerance_m = 1e-3 ;
435
+ // const Real velocityTolerance_meterPerSec = 1e-6 ;
436
+ // const Real angularTolerance_asec = 0.0 ;
437
+ // const Real angularVelocityTolerance_radPerSec = 1e-10 ;
438
+
439
+ // // Reference data setup
440
+
441
+ // const File referenceDataFile = File::Path(Path::Parse("/app/test/OpenSpaceToolkit/Astrodynamics/Flight/Profile/NadirPointing/VVLH/Satellite_1 t_UTC x_GCRF v_GCRF q_B_GCRF w_B_GCRF_in_GCRF.csv")) ;
442
+
443
+ // const Table referenceData = Table::Load(referenceDataFile, Table::Format::CSV, true) ;
444
+
445
+ // for (const auto& referenceRow : referenceData)
446
+ // {
447
+
448
+ // const Instant instant_ref = Instant::DateTime(DateTime::Parse(referenceRow["Time (UTCG)"].accessString()), Scale::UTC) ;
449
+
450
+ // const Vector3d x_BODY_GCRF_ref = { referenceRow["x (m)"].accessReal(), referenceRow["y (m)"].accessReal(), referenceRow["z (m)"].accessReal() } ;
451
+ // const Vector3d v_BODY_GCRF_in_GCRF_ref = { referenceRow["vx (m/sec)"].accessReal(), referenceRow["vy (m/sec)"].accessReal(), referenceRow["vz (m/sec)"].accessReal() } ;
452
+ // const Quaternion q_BODY_GCRF_ref = Quaternion::XYZS(referenceRow["q1"].accessReal(), referenceRow["q2"].accessReal(), referenceRow["q3"].accessReal(), referenceRow["q4"].accessReal()).normalize() ;
453
+ // const Vector3d w_BODY_GCRF_in_BODY_ref = { referenceRow["wx (rad/sec)"].accessReal(), referenceRow["wy (rad/sec)"].accessReal(), referenceRow["wz (rad/sec)"].accessReal() } ;
454
+
455
+ // const State state = profile.getStateAt(instant_ref) ;
456
+
457
+ // const Vector3d x_BODY_GCRF = state.getPosition() ;
458
+ // const Vector3d v_BODY_GCRF_in_GCRF = state.getVelocity() ;
459
+ // const Quaternion q_BODY_GCRF = state.getAttitude() ;
460
+ // const Vector3d w_BODY_GCRF_in_BODY = state.getAngularVelocity() ;
461
+
462
+ // ASSERT_TRUE(x_BODY_GCRF.isNear(x_BODY_GCRF_ref, positionTolerance_m)) << String::Format("@ {}: {} - {} = {} [m]", instant_ref.toString(), x_BODY_GCRF.toString(), x_BODY_GCRF_ref.toString(), (x_BODY_GCRF - x_BODY_GCRF_ref).norm()) ;
463
+ // ASSERT_TRUE(v_BODY_GCRF_in_GCRF.isNear(v_BODY_GCRF_in_GCRF_ref, velocityTolerance_meterPerSec)) << String::Format("@ {}: {} - {} = {} [m/s]", instant_ref.toString(), v_BODY_GCRF_in_GCRF.toString(), v_BODY_GCRF_in_GCRF_ref.toString(), (v_BODY_GCRF_in_GCRF - v_BODY_GCRF_in_GCRF_ref).norm()) ;
464
+ // ASSERT_TRUE(q_BODY_GCRF.isNear(q_BODY_GCRF_ref, Angle::Arcseconds(angularTolerance_asec))) << String::Format("@ {}: {} / {} = {} [asec]", instant_ref.toString(), q_BODY_GCRF_ref.toString(), q_BODY_GCRF.toString(), q_BODY_GCRF.angularDifferenceWith(q_BODY_GCRF_ref).inArcseconds().toString()) ;
465
+ // ASSERT_TRUE(w_BODY_GCRF_in_BODY.isNear(w_BODY_GCRF_in_BODY_ref, angularVelocityTolerance_radPerSec)) << String::Format("@ {}: {} - {} = {} [rad/s]", instant_ref.toString(), w_BODY_GCRF_in_BODY_ref.toString(), w_BODY_GCRF_in_BODY.toString(), (w_BODY_GCRF_in_BODY - w_BODY_GCRF_in_BODY_ref).norm()) ;
466
+
467
+ // }
468
+
469
+ // }
470
+
471
+ // }
472
+
473
+ TEST (OpenSpaceToolkit_Astrodynamics_Flight_Profile, NadirPointing_VVLH)
377
474
{
378
475
379
476
using ostk::core::types::Shared ;
@@ -434,7 +531,7 @@ TEST (OpenSpaceToolkit_Astrodynamics_Flight_Profile, NadirPointing)
434
531
const Real positionTolerance_m = 1e-3 ;
435
532
const Real velocityTolerance_meterPerSec = 1e-6 ;
436
533
const Real angularTolerance_asec = 0.0 ;
437
- const Real angularVelocityTolerance_radPerSec = 0.0 ;
534
+ const Real angularVelocityTolerance_radPerSec = 1e-10 ;
438
535
439
536
// Reference data setup
440
537
@@ -462,7 +559,7 @@ TEST (OpenSpaceToolkit_Astrodynamics_Flight_Profile, NadirPointing)
462
559
ASSERT_TRUE (x_BODY_GCRF.isNear (x_BODY_GCRF_ref, positionTolerance_m)) << String::Format (" @ {}: {} - {} = {} [m]" , instant_ref.toString (), x_BODY_GCRF.toString (), x_BODY_GCRF_ref.toString (), (x_BODY_GCRF - x_BODY_GCRF_ref).norm ()) ;
463
560
ASSERT_TRUE (v_BODY_GCRF_in_GCRF.isNear (v_BODY_GCRF_in_GCRF_ref, velocityTolerance_meterPerSec)) << String::Format (" @ {}: {} - {} = {} [m/s]" , instant_ref.toString (), v_BODY_GCRF_in_GCRF.toString (), v_BODY_GCRF_in_GCRF_ref.toString (), (v_BODY_GCRF_in_GCRF - v_BODY_GCRF_in_GCRF_ref).norm ()) ;
464
561
ASSERT_TRUE (q_BODY_GCRF.isNear (q_BODY_GCRF_ref, Angle::Arcseconds (angularTolerance_asec))) << String::Format (" @ {}: {} / {} = {} [asec]" , instant_ref.toString (), q_BODY_GCRF_ref.toString (), q_BODY_GCRF.toString (), q_BODY_GCRF.angularDifferenceWith (q_BODY_GCRF_ref).inArcseconds ().toString ()) ;
465
- // ASSERT_TRUE(w_BODY_GCRF_in_BODY.isNear(w_BODY_GCRF_in_BODY_ref, angularVelocityTolerance_radPerSec)) << String::Format("@ {}: {} - {} = {} [rad/s]", instant_ref.toString(), w_BODY_GCRF_in_BODY_ref.toString(), w_BODY_GCRF_in_BODY.toString(), (w_BODY_GCRF_in_BODY - w_BODY_GCRF_in_BODY_ref).norm()) ;
562
+ ASSERT_TRUE (w_BODY_GCRF_in_BODY.isNear (w_BODY_GCRF_in_BODY_ref, angularVelocityTolerance_radPerSec)) << String::Format (" @ {}: {} - {} = {} [rad/s]" , instant_ref.toString (), w_BODY_GCRF_in_BODY_ref.toString (), w_BODY_GCRF_in_BODY.toString (), (w_BODY_GCRF_in_BODY - w_BODY_GCRF_in_BODY_ref).norm ()) ;
466
563
467
564
}
468
565
@@ -497,7 +594,7 @@ TEST (OpenSpaceToolkit_Astrodynamics_Flight_Profile, NadirPointing)
497
594
const Real positionTolerance_m = 1e-3 ;
498
595
const Real velocityTolerance_meterPerSec = 1e-6 ;
499
596
const Real angularTolerance_asec = 0.0 ;
500
- const Real angularVelocityTolerance_radPerSec = 0.0 ;
597
+ const Real angularVelocityTolerance_radPerSec = 1e-10 ;
501
598
502
599
// Reference data setup
503
600
@@ -525,7 +622,7 @@ TEST (OpenSpaceToolkit_Astrodynamics_Flight_Profile, NadirPointing)
525
622
ASSERT_TRUE (x_BODY_GCRF.isNear (x_BODY_GCRF_ref, positionTolerance_m)) << String::Format (" @ {}: {} - {} = {} [m]" , instant_ref.toString (), x_BODY_GCRF.toString (), x_BODY_GCRF_ref.toString (), (x_BODY_GCRF - x_BODY_GCRF_ref).norm ()) ;
526
623
ASSERT_TRUE (v_BODY_GCRF_in_GCRF.isNear (v_BODY_GCRF_in_GCRF_ref, velocityTolerance_meterPerSec)) << String::Format (" @ {}: {} - {} = {} [m/s]" , instant_ref.toString (), v_BODY_GCRF_in_GCRF.toString (), v_BODY_GCRF_in_GCRF_ref.toString (), (v_BODY_GCRF_in_GCRF - v_BODY_GCRF_in_GCRF_ref).norm ()) ;
527
624
ASSERT_TRUE (q_BODY_GCRF.isNear (q_BODY_GCRF_ref, Angle::Arcseconds (angularTolerance_asec))) << String::Format (" @ {}: {} / {} = {} [asec]" , instant_ref.toString (), q_BODY_GCRF_ref.toString (), q_BODY_GCRF.toString (), q_BODY_GCRF.angularDifferenceWith (q_BODY_GCRF_ref).inArcseconds ().toString ()) ;
528
- // ASSERT_TRUE(w_BODY_GCRF_in_BODY.isNear(w_BODY_GCRF_in_BODY_ref, angularVelocityTolerance_radPerSec)) << String::Format("@ {}: {} - {} = {} [rad/s]", instant_ref.toString(), w_BODY_GCRF_in_BODY_ref.toString(), w_BODY_GCRF_in_BODY.toString(), (w_BODY_GCRF_in_BODY - w_BODY_GCRF_in_BODY_ref).norm()) ;
625
+ ASSERT_TRUE (w_BODY_GCRF_in_BODY.isNear (w_BODY_GCRF_in_BODY_ref, angularVelocityTolerance_radPerSec)) << String::Format (" @ {}: {} - {} = {} [rad/s]" , instant_ref.toString (), w_BODY_GCRF_in_BODY_ref.toString (), w_BODY_GCRF_in_BODY.toString (), (w_BODY_GCRF_in_BODY - w_BODY_GCRF_in_BODY_ref).norm ()) ;
529
626
530
627
}
531
628
@@ -560,7 +657,7 @@ TEST (OpenSpaceToolkit_Astrodynamics_Flight_Profile, NadirPointing)
560
657
const Real positionTolerance_m = 1e-3 ;
561
658
const Real velocityTolerance_meterPerSec = 1e-6 ;
562
659
const Real angularTolerance_asec = 0.0 ;
563
- const Real angularVelocityTolerance_radPerSec = 0.0 ;
660
+ const Real angularVelocityTolerance_radPerSec = 1e-7 ;
564
661
565
662
// Reference data setup
566
663
@@ -588,20 +685,12 @@ TEST (OpenSpaceToolkit_Astrodynamics_Flight_Profile, NadirPointing)
588
685
ASSERT_TRUE (x_BODY_GCRF.isNear (x_BODY_GCRF_ref, positionTolerance_m)) << String::Format (" @ {}: {} - {} = {} [m]" , instant_ref.toString (), x_BODY_GCRF.toString (), x_BODY_GCRF_ref.toString (), (x_BODY_GCRF - x_BODY_GCRF_ref).norm ()) ;
589
686
ASSERT_TRUE (v_BODY_GCRF_in_GCRF.isNear (v_BODY_GCRF_in_GCRF_ref, velocityTolerance_meterPerSec)) << String::Format (" @ {}: {} - {} = {} [m/s]" , instant_ref.toString (), v_BODY_GCRF_in_GCRF.toString (), v_BODY_GCRF_in_GCRF_ref.toString (), (v_BODY_GCRF_in_GCRF - v_BODY_GCRF_in_GCRF_ref).norm ()) ;
590
687
ASSERT_TRUE (q_BODY_GCRF.isNear (q_BODY_GCRF_ref, Angle::Arcseconds (angularTolerance_asec))) << String::Format (" @ {}: {} / {} = {} [asec]" , instant_ref.toString (), q_BODY_GCRF_ref.toString (), q_BODY_GCRF.toString (), q_BODY_GCRF.angularDifferenceWith (q_BODY_GCRF_ref).inArcseconds ().toString ()) ;
591
- // ASSERT_TRUE(w_BODY_GCRF_in_BODY.isNear(w_BODY_GCRF_in_BODY_ref, angularVelocityTolerance_radPerSec)) << String::Format("@ {}: {} - {} = {} [rad/s]", instant_ref.toString(), w_BODY_GCRF_in_BODY_ref.toString(), w_BODY_GCRF_in_BODY.toString(), (w_BODY_GCRF_in_BODY - w_BODY_GCRF_in_BODY_ref).norm()) ;
688
+ ASSERT_TRUE (w_BODY_GCRF_in_BODY.isNear (w_BODY_GCRF_in_BODY_ref, angularVelocityTolerance_radPerSec)) << String::Format (" @ {}: {} - {} = {} [rad/s]" , instant_ref.toString (), w_BODY_GCRF_in_BODY_ref.toString (), w_BODY_GCRF_in_BODY.toString (), (w_BODY_GCRF_in_BODY - w_BODY_GCRF_in_BODY_ref).norm ()) ;
592
689
593
690
}
594
691
595
692
}
596
693
597
- // VVLHGD
598
-
599
- // {
600
-
601
- // [TBI]
602
-
603
- // }
604
-
605
694
}
606
695
607
696
// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
0 commit comments