From 34922fab52aac036003321a106ef0d19fa8dda74 Mon Sep 17 00:00:00 2001 From: alopezrivera Date: Thu, 2 Nov 2023 12:48:18 +0100 Subject: [PATCH 1/6] Corrected mass and reference area of Delfi-C3 --- estimation/covariance_estimated_parameters.py | 4 ++-- estimation/full_estimation_example.py | 4 ++-- propagation/linear_sensitivity_analysis.py | 4 ++-- propagation/perturbed_satellite_orbit.py | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/estimation/covariance_estimated_parameters.py b/estimation/covariance_estimated_parameters.py index f3a2b12..8eea8d2 100644 --- a/estimation/covariance_estimated_parameters.py +++ b/estimation/covariance_estimated_parameters.py @@ -91,10 +91,10 @@ # Create vehicle objects. bodies.create_empty_body("Delfi-C3") -bodies.get("Delfi-C3").mass = 400.0 +bodies.get("Delfi-C3").mass = 2.2 # Create aerodynamic coefficient interface settings -reference_area = 4.0 +reference_area = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat drag_coefficient = 1.2 aero_coefficient_settings = environment_setup.aerodynamic_coefficients.constant( reference_area, [drag_coefficient, 0.0, 0.0] diff --git a/estimation/full_estimation_example.py b/estimation/full_estimation_example.py index fdb0efa..faf903e 100644 --- a/estimation/full_estimation_example.py +++ b/estimation/full_estimation_example.py @@ -91,10 +91,10 @@ # Create vehicle objects. bodies.create_empty_body("Delfi-C3") -bodies.get("Delfi-C3").mass = 400.0 +bodies.get("Delfi-C3").mass = 2.2 # Create aerodynamic coefficient interface settings -reference_area = 4.0 +reference_area = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat drag_coefficient = 1.2 aero_coefficient_settings = environment_setup.aerodynamic_coefficients.constant( reference_area, [drag_coefficient, 0.0, 0.0] diff --git a/propagation/linear_sensitivity_analysis.py b/propagation/linear_sensitivity_analysis.py index fe597f2..e05935c 100644 --- a/propagation/linear_sensitivity_analysis.py +++ b/propagation/linear_sensitivity_analysis.py @@ -94,10 +94,10 @@ # Create vehicle objects. bodies.create_empty_body("Delfi-C3") -bodies.get("Delfi-C3").mass = 400.0 +bodies.get("Delfi-C3").mass = 2.2 # Create aerodynamic coefficient interface settings -reference_area = 4.0 +reference_area = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat drag_coefficient = 1.2 aero_coefficient_settings = environment_setup.aerodynamic_coefficients.constant( reference_area, [drag_coefficient, 0.0, 0.0] diff --git a/propagation/perturbed_satellite_orbit.py b/propagation/perturbed_satellite_orbit.py index 4b01989..ca834d6 100644 --- a/propagation/perturbed_satellite_orbit.py +++ b/propagation/perturbed_satellite_orbit.py @@ -94,7 +94,7 @@ # Create vehicle objects. bodies.create_empty_body("Delfi-C3") -bodies.get("Delfi-C3").mass = 400.0 +bodies.get("Delfi-C3").mass = 2.2 # To account for the aerodynamic of the satellite, let's add an aerodynamic interface and add it to the environment setup, taking the followings into account: @@ -104,7 +104,7 @@ # - No moment coefficient. # Create aerodynamic coefficient interface settings, and add to vehicle -reference_area = 4.0 +reference_area = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection drag_coefficient = 1.2 aero_coefficient_settings = environment_setup.aerodynamic_coefficients.constant( reference_area, [drag_coefficient, 0, 0] From 7680357f92530d3f56d34f13ff16bdcc2029ff1b Mon Sep 17 00:00:00 2001 From: alopezrivera Date: Thu, 2 Nov 2023 16:00:10 +0100 Subject: [PATCH 2/6] Delfi-C3 initial state retrieved using TLEs --- .../covariance_estimated_parameters.ipynb | 25 +++++++-------- estimation/covariance_estimated_parameters.py | 19 +++++------- estimation/full_estimation_example.ipynb | 27 +++++++--------- estimation/full_estimation_example.py | 19 +++++------- propagation/keplerian_satellite_orbit.py | 2 +- propagation/linear_sensitivity_analysis.ipynb | 25 +++++++-------- propagation/linear_sensitivity_analysis.py | 22 ++++++------- propagation/perturbed_satellite_orbit.ipynb | 31 ++++++++----------- propagation/perturbed_satellite_orbit.py | 25 ++++++--------- 9 files changed, 84 insertions(+), 111 deletions(-) diff --git a/estimation/covariance_estimated_parameters.ipynb b/estimation/covariance_estimated_parameters.ipynb index 0f42a4a..5a73488 100644 --- a/estimation/covariance_estimated_parameters.ipynb +++ b/estimation/covariance_estimated_parameters.ipynb @@ -46,6 +46,7 @@ "from tudatpy import constants\n", "from tudatpy.interface import spice\n", "from tudatpy import numerical_simulation\n", + "from tudatpy.numerical_simulation import environment\n", "from tudatpy.numerical_simulation import environment_setup\n", "from tudatpy.numerical_simulation import propagation_setup\n", "from tudatpy.numerical_simulation import estimation, estimation_setup\n", @@ -136,10 +137,10 @@ "source": [ "# Create vehicle objects.\n", "bodies.create_empty_body(\"Delfi-C3\")\n", - "bodies.get(\"Delfi-C3\").mass = 400.0\n", + "bodies.get(\"Delfi-C3\").mass = 2.2\n", "\n", "# Create aerodynamic coefficient interface settings\n", - "reference_area = 4.0\n", + "reference_area = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", "drag_coefficient = 1.2\n", "aero_coefficient_settings = environment_setup.aerodynamic_coefficients.constant(\n", " reference_area, [drag_coefficient, 0.0, 0.0]\n", @@ -242,7 +243,7 @@ "### Define the initial state\n", "Realise that the initial state of the spacecraft always has to be provided as a cartesian state - i.e. in the form of a list with the first three elements representing the initial position, and the three remaining elements representing the initial velocity.\n", "\n", - "Within this example, we will make use of the `keplerian_to_cartesian_elementwise()` function - included in the `element_conversion` module - enabling us to convert an initial state from Keplerian elements to a 6x1 cartesian vector." + "Within this example, we will retrieve the initial state of Delfi-C3 using its Two-Line-Elements (TLE) the date of its launch (April the 28th, 2008). The TLE strings are obtained from [space-track.org](https://www.space-track.org)." ] }, { @@ -252,17 +253,13 @@ "metadata": {}, "outputs": [], "source": [ - "# Set the initial state of the vehicle\n", - "earth_gravitational_parameter = bodies.get(\"Earth\").gravitational_parameter\n", - "initial_state = element_conversion.keplerian_to_cartesian_elementwise(\n", - " gravitational_parameter=earth_gravitational_parameter,\n", - " semi_major_axis=7500.0E3,\n", - " eccentricity=0.1,\n", - " inclination=np.deg2rad(85.3),\n", - " argument_of_periapsis=np.deg2rad(235.7),\n", - " longitude_of_ascending_node=np.deg2rad(23.4),\n", - " true_anomaly=np.deg2rad(139.87)\n", - ")" + "# Retrieve the initial state of Delfi-C3 using Two-Line-Elements (TLEs)\n", + "delfi_tle = environment.Tle(\n", + " \"1 32789U 07021G 08119.60740078 -.00000054 00000-0 00000+0 0 9999\",\n", + " \"2 32789 098.0082 179.6267 0015321 307.2977 051.0656 14.81417433 68\"\n", + ")\n", + "delfi_ephemeris = environment.TleEphemeris( \"Earth\", \"J2000\", delfi_tle, False )\n", + "initial_state = delfi_ephemeris.cartesian_state( simulation_start_epoch )" ] }, { diff --git a/estimation/covariance_estimated_parameters.py b/estimation/covariance_estimated_parameters.py index 72e8e11..9ad4da8 100644 --- a/estimation/covariance_estimated_parameters.py +++ b/estimation/covariance_estimated_parameters.py @@ -32,6 +32,7 @@ from tudatpy import constants from tudatpy.interface import spice from tudatpy import numerical_simulation +from tudatpy.numerical_simulation import environment from tudatpy.numerical_simulation import environment_setup from tudatpy.numerical_simulation import propagation_setup from tudatpy.numerical_simulation import estimation, estimation_setup @@ -172,20 +173,16 @@ """ Realise that the initial state of the spacecraft always has to be provided as a cartesian state - i.e. in the form of a list with the first three elements representing the initial position, and the three remaining elements representing the initial velocity. -Within this example, we will make use of the `keplerian_to_cartesian_elementwise()` function - included in the `element_conversion` module - enabling us to convert an initial state from Keplerian elements to a 6x1 cartesian vector. +Within this example, we will retrieve the initial state of Delfi-C3 using its Two-Line-Elements (TLE) the date of its launch (April the 28th, 2008). The TLE strings are obtained from [space-track.org](https://www.space-track.org). """ -# Set the initial state of the vehicle -earth_gravitational_parameter = bodies.get("Earth").gravitational_parameter -initial_state = element_conversion.keplerian_to_cartesian_elementwise( - gravitational_parameter=earth_gravitational_parameter, - semi_major_axis=7500.0E3, - eccentricity=0.1, - inclination=np.deg2rad(85.3), - argument_of_periapsis=np.deg2rad(235.7), - longitude_of_ascending_node=np.deg2rad(23.4), - true_anomaly=np.deg2rad(139.87) +# Retrieve the initial state of Delfi-C3 using Two-Line-Elements (TLEs) +delfi_tle = environment.Tle( + "1 32789U 07021G 08119.60740078 -.00000054 00000-0 00000+0 0 9999", + "2 32789 098.0082 179.6267 0015321 307.2977 051.0656 14.81417433 68" ) +delfi_ephemeris = environment.TleEphemeris( "Earth", "J2000", delfi_tle, False ) +initial_state = delfi_ephemeris.cartesian_state( simulation_start_epoch ) ### Create the integrator settings diff --git a/estimation/full_estimation_example.ipynb b/estimation/full_estimation_example.ipynb index deed820..e46a969 100644 --- a/estimation/full_estimation_example.ipynb +++ b/estimation/full_estimation_example.ipynb @@ -48,6 +48,7 @@ "from tudatpy import constants\n", "from tudatpy.interface import spice\n", "from tudatpy import numerical_simulation\n", + "from tudatpy.numerical_simulation import environment\n", "from tudatpy.numerical_simulation import environment_setup\n", "from tudatpy.numerical_simulation import propagation_setup\n", "from tudatpy.numerical_simulation import estimation, estimation_setup\n", @@ -138,10 +139,10 @@ "source": [ "# Create vehicle objects.\n", "bodies.create_empty_body(\"Delfi-C3\")\n", - "bodies.get(\"Delfi-C3\").mass = 400.0\n", + "bodies.get(\"Delfi-C3\").mass = 2.2\n", "\n", "# Create aerodynamic coefficient interface settings\n", - "reference_area = 4.0\n", + "reference_area = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", "drag_coefficient = 1.2\n", "aero_coefficient_settings = environment_setup.aerodynamic_coefficients.constant(\n", " reference_area, [drag_coefficient, 0.0, 0.0]\n", @@ -150,7 +151,7 @@ "environment_setup.add_aerodynamic_coefficient_interface(bodies, \"Delfi-C3\", aero_coefficient_settings)\n", "\n", "# Create radiation pressure settings\n", - "reference_area_radiation = 4.0\n", + "reference_area = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", "radiation_pressure_coefficient = 1.2\n", "occulting_bodies = [\"Earth\"]\n", "radiation_pressure_settings = environment_setup.radiation_pressure.cannonball(\n", @@ -244,7 +245,7 @@ "### Define the initial state\n", "Realise that the initial state of the spacecraft always has to be provided as a cartesian state - i.e. in the form of a list with the first three elements representing the initial position, and the three remaining elements representing the initial velocity.\n", "\n", - "Within this example, we will make use of the `keplerian_to_cartesian_elementwise()` function - included in the `element_conversion` module - enabling us to convert an initial state from Keplerian elements to a 6x1 cartesian vector." + "Within this example, we will retrieve the initial state of Delfi-C3 using its Two-Line-Elements (TLE) the date of its launch (April the 28th, 2008). The TLE strings are obtained from [space-track.org](https://www.space-track.org)." ] }, { @@ -254,17 +255,13 @@ "metadata": {}, "outputs": [], "source": [ - "# Set the initial state of the vehicle\n", - "earth_gravitational_parameter = bodies.get(\"Earth\").gravitational_parameter\n", - "initial_state = element_conversion.keplerian_to_cartesian_elementwise(\n", - " gravitational_parameter=earth_gravitational_parameter,\n", - " semi_major_axis=7500.0E3,\n", - " eccentricity=0.1,\n", - " inclination=np.deg2rad(85.3),\n", - " argument_of_periapsis=np.deg2rad(235.7),\n", - " longitude_of_ascending_node=np.deg2rad(23.4),\n", - " true_anomaly=np.deg2rad(139.87)\n", - ")" + "# Retrieve the initial state of Delfi-C3 using Two-Line-Elements (TLEs)\n", + "delfi_tle = environment.Tle(\n", + " \"1 32789U 07021G 08119.60740078 -.00000054 00000-0 00000+0 0 9999\",\n", + " \"2 32789 098.0082 179.6267 0015321 307.2977 051.0656 14.81417433 68\"\n", + ")\n", + "delfi_ephemeris = environment.TleEphemeris( \"Earth\", \"J2000\", delfi_tle, False )\n", + "initial_state = delfi_ephemeris.cartesian_state( simulation_start_epoch )" ] }, { diff --git a/estimation/full_estimation_example.py b/estimation/full_estimation_example.py index 5ba4e3b..ca82fbb 100644 --- a/estimation/full_estimation_example.py +++ b/estimation/full_estimation_example.py @@ -32,6 +32,7 @@ from tudatpy import constants from tudatpy.interface import spice from tudatpy import numerical_simulation +from tudatpy.numerical_simulation import environment from tudatpy.numerical_simulation import environment_setup from tudatpy.numerical_simulation import propagation_setup from tudatpy.numerical_simulation import estimation, estimation_setup @@ -172,20 +173,16 @@ """ Realise that the initial state of the spacecraft always has to be provided as a cartesian state - i.e. in the form of a list with the first three elements representing the initial position, and the three remaining elements representing the initial velocity. -Within this example, we will make use of the `keplerian_to_cartesian_elementwise()` function - included in the `element_conversion` module - enabling us to convert an initial state from Keplerian elements to a 6x1 cartesian vector. +Within this example, we will retrieve the initial state of Delfi-C3 using its Two-Line-Elements (TLE) the date of its launch (April the 28th, 2008). The TLE strings are obtained from [space-track.org](https://www.space-track.org). """ -# Set the initial state of the vehicle -earth_gravitational_parameter = bodies.get("Earth").gravitational_parameter -initial_state = element_conversion.keplerian_to_cartesian_elementwise( - gravitational_parameter=earth_gravitational_parameter, - semi_major_axis=7500.0E3, - eccentricity=0.1, - inclination=np.deg2rad(85.3), - argument_of_periapsis=np.deg2rad(235.7), - longitude_of_ascending_node=np.deg2rad(23.4), - true_anomaly=np.deg2rad(139.87) +# Retrieve the initial state of Delfi-C3 using Two-Line-Elements (TLEs) +delfi_tle = environment.Tle( + "1 32789U 07021G 08119.60740078 -.00000054 00000-0 00000+0 0 9999", + "2 32789 098.0082 179.6267 0015321 307.2977 051.0656 14.81417433 68" ) +delfi_ephemeris = environment.TleEphemeris( "Earth", "J2000", delfi_tle, False ) +initial_state = delfi_ephemeris.cartesian_state( simulation_start_epoch ) ### Create the integrator settings diff --git a/propagation/keplerian_satellite_orbit.py b/propagation/keplerian_satellite_orbit.py index 614218f..d1ff8b9 100644 --- a/propagation/keplerian_satellite_orbit.py +++ b/propagation/keplerian_satellite_orbit.py @@ -139,7 +139,7 @@ This initial state always has to be provided as a cartesian state, in the form of a list with the first three elements reprensenting the initial position, and the three remaining elements representing the initial velocity. -In this case, let's make use of the `keplerian_to_cartesian_elementwise()` function that is included in the `element_conversion` module, so that the initial state can be input as Keplerian elements, and then converted in Cartesian elements. +Within this example, we will retrieve the initial state of Delfi-C3 using its Two-Line-Elements (TLE) the date of its launch (April the 28th, 2008). The TLE strings are obtained from [space-track.org](https://www.space-track.org). """ # Set initial conditions for the satellite that will be diff --git a/propagation/linear_sensitivity_analysis.ipynb b/propagation/linear_sensitivity_analysis.ipynb index e24ab83..e7dd935 100644 --- a/propagation/linear_sensitivity_analysis.ipynb +++ b/propagation/linear_sensitivity_analysis.ipynb @@ -46,6 +46,7 @@ "# Load tudatpy modules\n", "from tudatpy.interface import spice\n", "from tudatpy import numerical_simulation\n", + "from tudatpy.numerical_simulation import environment\n", "from tudatpy.numerical_simulation import environment_setup, propagation_setup, estimation_setup\n", "from tudatpy.astro import element_conversion\n", "from tudatpy import constants\n", @@ -143,7 +144,7 @@ "bodies.get(\"Delfi-C3\").mass = 400.0\n", "\n", "# Create aerodynamic coefficient interface settings\n", - "reference_area = 4.0\n", + "reference_area = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", "drag_coefficient = 1.2\n", "aero_coefficient_settings = environment_setup.aerodynamic_coefficients.constant(\n", " reference_area, [drag_coefficient, 0.0, 0.0]\n", @@ -153,7 +154,7 @@ " bodies, \"Delfi-C3\", aero_coefficient_settings)\n", "\n", "# Create radiation pressure settings\n", - "reference_area_radiation = 4.0\n", + "reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", "radiation_pressure_coefficient = 1.2\n", "occulting_bodies = [\"Earth\"]\n", "radiation_pressure_settings = environment_setup.radiation_pressure.cannonball(\n", @@ -256,7 +257,7 @@ "\n", "This initial state always has to be provided as a cartesian state, in the form of a list with the first three elements reprensenting the initial position, and the three remaining elements representing the initial velocity.\n", "\n", - "In this case, let's make use of the `keplerian_to_cartesian_elementwise()` function that is included in the `element_conversion` module, so that the initial state can be input as Keplerian elements, and then converted in Cartesian elements." + "Within this example, we will retrieve the initial state of Delfi-C3 using its Two-Line-Elements (TLE) the date of its launch (April the 28th, 2008). The TLE strings are obtained from [space-track.org](https://www.space-track.org)." ] }, { @@ -266,17 +267,13 @@ "metadata": {}, "outputs": [], "source": [ - "# Set the initial state of the vehicle\n", - "earth_gravitational_parameter = bodies.get(\"Earth\").gravitational_parameter\n", - "initial_state = element_conversion.keplerian_to_cartesian_elementwise(\n", - " gravitational_parameter=earth_gravitational_parameter,\n", - " semi_major_axis=7500.0E3,\n", - " eccentricity=0.1,\n", - " inclination=np.deg2rad(85.3),\n", - " argument_of_periapsis=np.deg2rad(235.7),\n", - " longitude_of_ascending_node=np.deg2rad(23.4),\n", - " true_anomaly=np.deg2rad(139.87)\n", - ")" + "# Retrieve the initial state of Delfi-C3 using Two-Line-Elements (TLEs)\n", + "delfi_tle = environment.Tle(\n", + " \"1 32789U 07021G 08119.60740078 -.00000054 00000-0 00000+0 0 9999\",\n", + " \"2 32789 098.0082 179.6267 0015321 307.2977 051.0656 14.81417433 68\"\n", + ")\n", + "delfi_ephemeris = environment.TleEphemeris( \"Earth\", \"J2000\", delfi_tle, False )\n", + "initial_state = delfi_ephemeris.cartesian_state( simulation_start_epoch )" ] }, { diff --git a/propagation/linear_sensitivity_analysis.py b/propagation/linear_sensitivity_analysis.py index 2226b67..6280339 100644 --- a/propagation/linear_sensitivity_analysis.py +++ b/propagation/linear_sensitivity_analysis.py @@ -31,6 +31,7 @@ # Load tudatpy modules from tudatpy.interface import spice from tudatpy import numerical_simulation +from tudatpy.numerical_simulation import environment from tudatpy.numerical_simulation import environment_setup, propagation_setup, estimation_setup from tudatpy.astro import element_conversion from tudatpy import constants @@ -108,7 +109,7 @@ bodies, "Delfi-C3", aero_coefficient_settings) # Create radiation pressure settings -reference_area_radiation = 4.0 +reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat radiation_pressure_coefficient = 1.2 occulting_bodies = ["Earth"] radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( @@ -186,20 +187,17 @@ This initial state always has to be provided as a cartesian state, in the form of a list with the first three elements reprensenting the initial position, and the three remaining elements representing the initial velocity. -In this case, let's make use of the `keplerian_to_cartesian_elementwise()` function that is included in the `element_conversion` module, so that the initial state can be input as Keplerian elements, and then converted in Cartesian elements. +In this casWithin this example, we will retrieve the initial state of Delfi-C3 using its Two-Line-Elements (TLE) the date of its launch (April the 28th, 2008). The TLE strings are obtained from [space-track.org](https://www.space-track.org). """ -# Set the initial state of the vehicle -earth_gravitational_parameter = bodies.get("Earth").gravitational_parameter -initial_state = element_conversion.keplerian_to_cartesian_elementwise( - gravitational_parameter=earth_gravitational_parameter, - semi_major_axis=7500.0E3, - eccentricity=0.1, - inclination=np.deg2rad(85.3), - argument_of_periapsis=np.deg2rad(235.7), - longitude_of_ascending_node=np.deg2rad(23.4), - true_anomaly=np.deg2rad(139.87) +# Retrieve the initial state of Delfi-C3 using Two-Line-Elements (TLEs) +delfi_tle = environment.Tle( + "1 32789U 07021G 08119.60740078 -.00000054 00000-0 00000+0 0 9999", + "2 32789 098.0082 179.6267 0015321 307.2977 051.0656 14.81417433 68" ) +delfi_ephemeris = environment.TleEphemeris( "Earth", "J2000", delfi_tle, False ) +initial_state = delfi_ephemeris.cartesian_state( simulation_start_epoch ) + ### Create the integrator settings """ diff --git a/propagation/perturbed_satellite_orbit.ipynb b/propagation/perturbed_satellite_orbit.ipynb index 61d2a66..5be5576 100644 --- a/propagation/perturbed_satellite_orbit.ipynb +++ b/propagation/perturbed_satellite_orbit.ipynb @@ -45,6 +45,7 @@ "# Load tudatpy modules\n", "from tudatpy.interface import spice\n", "from tudatpy import numerical_simulation\n", + "from tudatpy.numerical_simulation import environment\n", "from tudatpy.numerical_simulation import environment_setup, propagation_setup\n", "from tudatpy.astro import element_conversion\n", "from tudatpy import constants\n", @@ -140,7 +141,7 @@ "# Create vehicle objects.\n", "bodies.create_empty_body(\"Delfi-C3\")\n", "\n", - "bodies.get(\"Delfi-C3\").mass = 400.0" + "bodies.get(\"Delfi-C3\").mass = 2.2" ] }, { @@ -150,7 +151,7 @@ "source": [ "To account for the aerodynamic of the satellite, let's add an aerodynamic interface and add it to the environment setup, taking the followings into account:\n", "- A constant drag coefficient of 1.2.\n", - "- A reference area of 4m$^2$.\n", + "- A reference area of 0.035m$^2$.\n", "- No sideslip or lift coefficient (equal to 0).\n", "- No moment coefficient." ] @@ -163,7 +164,7 @@ "outputs": [], "source": [ "# Create aerodynamic coefficient interface settings, and add to vehicle\n", - "reference_area = 4.0\n", + "reference_area = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", "drag_coefficient = 1.2\n", "aero_coefficient_settings = environment_setup.aerodynamic_coefficients.constant(\n", " reference_area, [drag_coefficient, 0, 0]\n", @@ -188,7 +189,7 @@ "outputs": [], "source": [ "# Create radiation pressure settings, and add to vehicle\n", - "reference_area_radiation = 4.0\n", + "reference_area = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", "radiation_pressure_coefficient = 1.2\n", "occulting_bodies = [\"Earth\"]\n", "radiation_pressure_settings = environment_setup.radiation_pressure.cannonball(\n", @@ -291,7 +292,7 @@ "\n", "This initial state always has to be provided as a cartesian state, in the form of a list with the first three elements reprensenting the initial position, and the three remaining elements representing the initial velocity.\n", "\n", - "In this case, let's make use of the `keplerian_to_cartesian_elementwise()` function that is included in the `element_conversion` module, so that the initial state can be input as Keplerian elements, and then converted in Cartesian elements." + "Within this example, we will retrieve the initial state of Delfi-C3 using its Two-Line-Elements (TLE) the date of its launch (April the 28th, 2008). The TLE strings are obtained from [space-track.org](https://www.space-track.org)." ] }, { @@ -301,19 +302,13 @@ "metadata": {}, "outputs": [], "source": [ - "# Set initial conditions for the satellite that will be\n", - "# propagated in this simulation. The initial conditions are given in\n", - "# Keplerian elements and later on converted to Cartesian elements\n", - "earth_gravitational_parameter = bodies.get(\"Earth\").gravitational_parameter\n", - "initial_state = element_conversion.keplerian_to_cartesian_elementwise(\n", - " gravitational_parameter=earth_gravitational_parameter,\n", - " semi_major_axis=7500.0e3,\n", - " eccentricity=0.1,\n", - " inclination=np.deg2rad(85.3),\n", - " argument_of_periapsis=np.deg2rad(235.7),\n", - " longitude_of_ascending_node=np.deg2rad(23.4),\n", - " true_anomaly=np.deg2rad(139.87),\n", - ")" + "# Retrieve the initial state of Delfi-C3 using Two-Line-Elements (TLEs)\n", + "lageos_tle = environment.Tle(\n", + " \"1 32789U 07021G 08119.60740078 -.00000054 00000-0 00000+0 0 9999\",\n", + " \"2 32789 098.0082 179.6267 0015321 307.2977 051.0656 14.81417433 68\"\n", + ")\n", + "lageos_ephemeris = environment.TleEphemeris( \"Earth\", \"J2000\", lageos_tle, False )\n", + "initial_state = lageos_ephemeris.cartesian_state( simulation_start_epoch )" ] }, { diff --git a/propagation/perturbed_satellite_orbit.py b/propagation/perturbed_satellite_orbit.py index 43da149..3876ea9 100644 --- a/propagation/perturbed_satellite_orbit.py +++ b/propagation/perturbed_satellite_orbit.py @@ -30,6 +30,7 @@ # Load tudatpy modules from tudatpy.interface import spice from tudatpy import numerical_simulation +from tudatpy.numerical_simulation import environment from tudatpy.numerical_simulation import environment_setup, propagation_setup from tudatpy.astro import element_conversion from tudatpy import constants @@ -194,22 +195,16 @@ This initial state always has to be provided as a cartesian state, in the form of a list with the first three elements reprensenting the initial position, and the three remaining elements representing the initial velocity. -In this case, let's make use of the `keplerian_to_cartesian_elementwise()` function that is included in the `element_conversion` module, so that the initial state can be input as Keplerian elements, and then converted in Cartesian elements. -""" - -# Set initial conditions for the satellite that will be -# propagated in this simulation. The initial conditions are given in -# Keplerian elements and later on converted to Cartesian elements -earth_gravitational_parameter = bodies.get("Earth").gravitational_parameter -initial_state = element_conversion.keplerian_to_cartesian_elementwise( - gravitational_parameter=earth_gravitational_parameter, - semi_major_axis=7500.0e3, - eccentricity=0.1, - inclination=np.deg2rad(85.3), - argument_of_periapsis=np.deg2rad(235.7), - longitude_of_ascending_node=np.deg2rad(23.4), - true_anomaly=np.deg2rad(139.87), +Within this example, we will retrieve the initial state of Delfi-C3 using its Two-Line-Elements (TLE) the date of its launch (April the 28th, 2008). The TLE strings are obtained from [space-track.org](https://www.space-track.org). +""" + +# Retrieve the initial state of Delfi-C3 using Two-Line-Elements (TLEs) +lageos_tle = environment.Tle( + "1 32789U 07021G 08119.60740078 -.00000054 00000-0 00000+0 0 9999", + "2 32789 098.0082 179.6267 0015321 307.2977 051.0656 14.81417433 68" ) +lageos_ephemeris = environment.TleEphemeris( "Earth", "J2000", lageos_tle, False ) +initial_state = lageos_ephemeris.cartesian_state( simulation_start_epoch ) ### Define dependent variables to save From 8a0fc8c912b5f75a576490033e0ebeef009e3e0a Mon Sep 17 00:00:00 2001 From: alopezrivera Date: Thu, 2 Nov 2023 16:05:24 +0100 Subject: [PATCH 3/6] Updated radiation acceleration reference area to 0.035m2 --- estimation/covariance_estimated_parameters.ipynb | 2 +- estimation/covariance_estimated_parameters.py | 2 +- estimation/estimation_dynamical_models.ipynb | 2 +- estimation/estimation_dynamical_models.py | 2 +- estimation/full_estimation_example.py | 2 +- propagation/perturbed_satellite_orbit.py | 2 +- pygmo/asteroid_orbit_optimization/aoo_custom_environment.ipynb | 2 +- pygmo/asteroid_orbit_optimization/aoo_custom_environment.py | 2 +- .../aoo_design_space_exploration.ipynb | 2 +- .../asteroid_orbit_optimization/aoo_design_space_exploration.py | 2 +- pygmo/asteroid_orbit_optimization/aoo_optimization.ipynb | 2 +- pygmo/asteroid_orbit_optimization/aoo_optimization.py | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/estimation/covariance_estimated_parameters.ipynb b/estimation/covariance_estimated_parameters.ipynb index 5a73488..552068e 100644 --- a/estimation/covariance_estimated_parameters.ipynb +++ b/estimation/covariance_estimated_parameters.ipynb @@ -149,7 +149,7 @@ "environment_setup.add_aerodynamic_coefficient_interface(bodies, \"Delfi-C3\", aero_coefficient_settings)\n", "\n", "# Create radiation pressure settings\n", - "reference_area_radiation = 4.0\n", + "reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", "radiation_pressure_coefficient = 1.2\n", "occulting_bodies = [\"Earth\"]\n", "radiation_pressure_settings = environment_setup.radiation_pressure.cannonball(\n", diff --git a/estimation/covariance_estimated_parameters.py b/estimation/covariance_estimated_parameters.py index 9ad4da8..0d85736 100644 --- a/estimation/covariance_estimated_parameters.py +++ b/estimation/covariance_estimated_parameters.py @@ -105,7 +105,7 @@ environment_setup.add_aerodynamic_coefficient_interface(bodies, "Delfi-C3", aero_coefficient_settings) # Create radiation pressure settings -reference_area_radiation = 4.0 +reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat radiation_pressure_coefficient = 1.2 occulting_bodies = ["Earth"] radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( diff --git a/estimation/estimation_dynamical_models.ipynb b/estimation/estimation_dynamical_models.ipynb index 221bdb5..cbabfac 100644 --- a/estimation/estimation_dynamical_models.ipynb +++ b/estimation/estimation_dynamical_models.ipynb @@ -102,7 +102,7 @@ "bodies.get(\"MEX\").mass = 1000.0\n", "\n", "# Create radiation pressure settings\n", - "reference_area_radiation = 4.0\n", + "reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", "radiation_pressure_coefficient = 1.2\n", "occulting_bodies = [\"Mars\"]\n", "radiation_pressure_settings = environment_setup.radiation_pressure.cannonball(\n", diff --git a/estimation/estimation_dynamical_models.py b/estimation/estimation_dynamical_models.py index f3109a4..d080aab 100644 --- a/estimation/estimation_dynamical_models.py +++ b/estimation/estimation_dynamical_models.py @@ -75,7 +75,7 @@ bodies.get("MEX").mass = 1000.0 # Create radiation pressure settings -reference_area_radiation = 4.0 +reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat radiation_pressure_coefficient = 1.2 occulting_bodies = ["Mars"] radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( diff --git a/estimation/full_estimation_example.py b/estimation/full_estimation_example.py index ca82fbb..2b2e80c 100644 --- a/estimation/full_estimation_example.py +++ b/estimation/full_estimation_example.py @@ -105,7 +105,7 @@ environment_setup.add_aerodynamic_coefficient_interface(bodies, "Delfi-C3", aero_coefficient_settings) # Create radiation pressure settings -reference_area_radiation = 4.0 +reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat radiation_pressure_coefficient = 1.2 occulting_bodies = ["Earth"] radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( diff --git a/propagation/perturbed_satellite_orbit.py b/propagation/perturbed_satellite_orbit.py index 3876ea9..dd514a3 100644 --- a/propagation/perturbed_satellite_orbit.py +++ b/propagation/perturbed_satellite_orbit.py @@ -118,7 +118,7 @@ # To account for the pressure of the solar radiation on the satellite, let's add another interface. This takes a radiation pressure coefficient of 1.2, and a radiation area of 4m$^2$. This interface also accounts for the variation in pressure cause by the shadow of Earth. # Create radiation pressure settings, and add to vehicle -reference_area_radiation = 4.0 +reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat radiation_pressure_coefficient = 1.2 occulting_bodies = ["Earth"] radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( diff --git a/pygmo/asteroid_orbit_optimization/aoo_custom_environment.ipynb b/pygmo/asteroid_orbit_optimization/aoo_custom_environment.ipynb index 3e13590..4d31b73 100644 --- a/pygmo/asteroid_orbit_optimization/aoo_custom_environment.ipynb +++ b/pygmo/asteroid_orbit_optimization/aoo_custom_environment.ipynb @@ -337,7 +337,7 @@ " bodies.get(\"Spacecraft\").set_constant_mass(400.0)\n", "\n", " # Create radiation pressure settings, and add to vehicle\n", - " reference_area_radiation = 4.0\n", + " reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", " radiation_pressure_coefficient = 1.2\n", " radiation_pressure_settings = environment_setup.radiation_pressure.cannonball(\n", " \"Sun\",\n", diff --git a/pygmo/asteroid_orbit_optimization/aoo_custom_environment.py b/pygmo/asteroid_orbit_optimization/aoo_custom_environment.py index 9632fa6..94ee20a 100644 --- a/pygmo/asteroid_orbit_optimization/aoo_custom_environment.py +++ b/pygmo/asteroid_orbit_optimization/aoo_custom_environment.py @@ -242,7 +242,7 @@ def create_simulation_bodies(itokawa_radius): bodies.get("Spacecraft").set_constant_mass(400.0) # Create radiation pressure settings, and add to vehicle - reference_area_radiation = 4.0 + reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat radiation_pressure_coefficient = 1.2 radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( "Sun", diff --git a/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.ipynb b/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.ipynb index c9896c6..9d59402 100644 --- a/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.ipynb +++ b/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.ipynb @@ -312,7 +312,7 @@ " bodies.get(\"Spacecraft\").set_constant_mass(400.0)\n", "\n", " # Create radiation pressure settings, and add to vehicle\n", - " reference_area_radiation = 4.0\n", + " reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", " radiation_pressure_coefficient = 1.2\n", " radiation_pressure_settings = environment_setup.radiation_pressure.cannonball(\n", " \"Sun\",\n", diff --git a/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.py b/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.py index 7824e02..9e50d42 100644 --- a/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.py +++ b/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.py @@ -217,7 +217,7 @@ def create_simulation_bodies(itokawa_radius): bodies.get("Spacecraft").set_constant_mass(400.0) # Create radiation pressure settings, and add to vehicle - reference_area_radiation = 4.0 + reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat radiation_pressure_coefficient = 1.2 radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( "Sun", diff --git a/pygmo/asteroid_orbit_optimization/aoo_optimization.ipynb b/pygmo/asteroid_orbit_optimization/aoo_optimization.ipynb index 10e7ca5..1212357 100644 --- a/pygmo/asteroid_orbit_optimization/aoo_optimization.ipynb +++ b/pygmo/asteroid_orbit_optimization/aoo_optimization.ipynb @@ -313,7 +313,7 @@ " bodies.get(\"Spacecraft\").set_constant_mass(400.0)\n", "\n", " # Create radiation pressure settings, and add to vehicle\n", - " reference_area_radiation = 4.0\n", + " reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat\n", " radiation_pressure_coefficient = 1.2\n", " radiation_pressure_settings = environment_setup.radiation_pressure.cannonball(\n", " \"Sun\",\n", diff --git a/pygmo/asteroid_orbit_optimization/aoo_optimization.py b/pygmo/asteroid_orbit_optimization/aoo_optimization.py index 3cf94a1..8d43693 100644 --- a/pygmo/asteroid_orbit_optimization/aoo_optimization.py +++ b/pygmo/asteroid_orbit_optimization/aoo_optimization.py @@ -218,7 +218,7 @@ def create_simulation_bodies(itokawa_radius): bodies.get("Spacecraft").set_constant_mass(400.0) # Create radiation pressure settings, and add to vehicle - reference_area_radiation = 4.0 + reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat radiation_pressure_coefficient = 1.2 radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( "Sun", From 2605d8d67d86e9d5a9e19a8fcf73284607ba8762 Mon Sep 17 00:00:00 2001 From: alopezrivera Date: Thu, 2 Nov 2023 17:22:12 +0100 Subject: [PATCH 4/6] Removed lageos mentions --- propagation/perturbed_satellite_orbit.ipynb | 6 +++--- propagation/perturbed_satellite_orbit.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/propagation/perturbed_satellite_orbit.ipynb b/propagation/perturbed_satellite_orbit.ipynb index 5be5576..c430dec 100644 --- a/propagation/perturbed_satellite_orbit.ipynb +++ b/propagation/perturbed_satellite_orbit.ipynb @@ -303,12 +303,12 @@ "outputs": [], "source": [ "# Retrieve the initial state of Delfi-C3 using Two-Line-Elements (TLEs)\n", - "lageos_tle = environment.Tle(\n", + "delfi_tle = environment.Tle(\n", " \"1 32789U 07021G 08119.60740078 -.00000054 00000-0 00000+0 0 9999\",\n", " \"2 32789 098.0082 179.6267 0015321 307.2977 051.0656 14.81417433 68\"\n", ")\n", - "lageos_ephemeris = environment.TleEphemeris( \"Earth\", \"J2000\", lageos_tle, False )\n", - "initial_state = lageos_ephemeris.cartesian_state( simulation_start_epoch )" + "delfi_ephemeris = environment.TleEphemeris( \"Earth\", \"J2000\", delfi_tle, False )\n", + "initial_state = delfi_ephemeris.cartesian_state( simulation_start_epoch )" ] }, { diff --git a/propagation/perturbed_satellite_orbit.py b/propagation/perturbed_satellite_orbit.py index dd514a3..5bb5080 100644 --- a/propagation/perturbed_satellite_orbit.py +++ b/propagation/perturbed_satellite_orbit.py @@ -199,12 +199,12 @@ """ # Retrieve the initial state of Delfi-C3 using Two-Line-Elements (TLEs) -lageos_tle = environment.Tle( +delfi_tle = environment.Tle( "1 32789U 07021G 08119.60740078 -.00000054 00000-0 00000+0 0 9999", "2 32789 098.0082 179.6267 0015321 307.2977 051.0656 14.81417433 68" ) -lageos_ephemeris = environment.TleEphemeris( "Earth", "J2000", lageos_tle, False ) -initial_state = lageos_ephemeris.cartesian_state( simulation_start_epoch ) +delfi_ephemeris = environment.TleEphemeris( "Earth", "J2000", delfi_tle, False ) +initial_state = delfi_ephemeris.cartesian_state( simulation_start_epoch ) ### Define dependent variables to save From d7223fd798595358b11c7d901ae48fe43ec4f10d Mon Sep 17 00:00:00 2001 From: alopezrivera Date: Thu, 2 Nov 2023 17:28:57 +0100 Subject: [PATCH 5/6] Delfi radiation reference area correctly set for all samples In examples left over from previous commit --- estimation/covariance_estimated_parameters.py | 2 +- estimation/estimation_dynamical_models.py | 2 +- estimation/full_estimation_example.py | 2 +- pygmo/asteroid_orbit_optimization/aoo_custom_environment.py | 2 +- .../asteroid_orbit_optimization/aoo_design_space_exploration.py | 2 +- pygmo/asteroid_orbit_optimization/aoo_optimization.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/estimation/covariance_estimated_parameters.py b/estimation/covariance_estimated_parameters.py index 0d85736..9ad4da8 100644 --- a/estimation/covariance_estimated_parameters.py +++ b/estimation/covariance_estimated_parameters.py @@ -105,7 +105,7 @@ environment_setup.add_aerodynamic_coefficient_interface(bodies, "Delfi-C3", aero_coefficient_settings) # Create radiation pressure settings -reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat +reference_area_radiation = 4.0 radiation_pressure_coefficient = 1.2 occulting_bodies = ["Earth"] radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( diff --git a/estimation/estimation_dynamical_models.py b/estimation/estimation_dynamical_models.py index d080aab..f3109a4 100644 --- a/estimation/estimation_dynamical_models.py +++ b/estimation/estimation_dynamical_models.py @@ -75,7 +75,7 @@ bodies.get("MEX").mass = 1000.0 # Create radiation pressure settings -reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat +reference_area_radiation = 4.0 radiation_pressure_coefficient = 1.2 occulting_bodies = ["Mars"] radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( diff --git a/estimation/full_estimation_example.py b/estimation/full_estimation_example.py index 2b2e80c..ca82fbb 100644 --- a/estimation/full_estimation_example.py +++ b/estimation/full_estimation_example.py @@ -105,7 +105,7 @@ environment_setup.add_aerodynamic_coefficient_interface(bodies, "Delfi-C3", aero_coefficient_settings) # Create radiation pressure settings -reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat +reference_area_radiation = 4.0 radiation_pressure_coefficient = 1.2 occulting_bodies = ["Earth"] radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( diff --git a/pygmo/asteroid_orbit_optimization/aoo_custom_environment.py b/pygmo/asteroid_orbit_optimization/aoo_custom_environment.py index 94ee20a..9632fa6 100644 --- a/pygmo/asteroid_orbit_optimization/aoo_custom_environment.py +++ b/pygmo/asteroid_orbit_optimization/aoo_custom_environment.py @@ -242,7 +242,7 @@ def create_simulation_bodies(itokawa_radius): bodies.get("Spacecraft").set_constant_mass(400.0) # Create radiation pressure settings, and add to vehicle - reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat + reference_area_radiation = 4.0 radiation_pressure_coefficient = 1.2 radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( "Sun", diff --git a/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.py b/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.py index 9e50d42..7824e02 100644 --- a/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.py +++ b/pygmo/asteroid_orbit_optimization/aoo_design_space_exploration.py @@ -217,7 +217,7 @@ def create_simulation_bodies(itokawa_radius): bodies.get("Spacecraft").set_constant_mass(400.0) # Create radiation pressure settings, and add to vehicle - reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat + reference_area_radiation = 4.0 radiation_pressure_coefficient = 1.2 radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( "Sun", diff --git a/pygmo/asteroid_orbit_optimization/aoo_optimization.py b/pygmo/asteroid_orbit_optimization/aoo_optimization.py index 8d43693..3cf94a1 100644 --- a/pygmo/asteroid_orbit_optimization/aoo_optimization.py +++ b/pygmo/asteroid_orbit_optimization/aoo_optimization.py @@ -218,7 +218,7 @@ def create_simulation_bodies(itokawa_radius): bodies.get("Spacecraft").set_constant_mass(400.0) # Create radiation pressure settings, and add to vehicle - reference_area_radiation = (4*0.3*0.1+2*0.1*0.1)/4 # Average projection area of a 3U CubeSat + reference_area_radiation = 4.0 radiation_pressure_coefficient = 1.2 radiation_pressure_settings = environment_setup.radiation_pressure.cannonball( "Sun", From 33acba355a27d40a32d3cdf8c8e5053f7b8794e5 Mon Sep 17 00:00:00 2001 From: alopezrivera Date: Thu, 2 Nov 2023 18:07:37 +0100 Subject: [PATCH 6/6] Manually set initial state of Delfi-C3 to that of first available TLE in Keplerian orbit example --- propagation/keplerian_satellite_orbit.ipynb | 12 ++++++------ propagation/keplerian_satellite_orbit.py | 15 +++++++-------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/propagation/keplerian_satellite_orbit.ipynb b/propagation/keplerian_satellite_orbit.ipynb index 74ce8da..4952ea5 100644 --- a/propagation/keplerian_satellite_orbit.ipynb +++ b/propagation/keplerian_satellite_orbit.ipynb @@ -225,12 +225,12 @@ "earth_gravitational_parameter = bodies.get(\"Earth\").gravitational_parameter\n", "initial_state = element_conversion.keplerian_to_cartesian_elementwise(\n", " gravitational_parameter=earth_gravitational_parameter,\n", - " semi_major_axis=7500.0e3,\n", - " eccentricity=0.1,\n", - " inclination=np.deg2rad(85.3),\n", - " argument_of_periapsis=np.deg2rad(235.7),\n", - " longitude_of_ascending_node=np.deg2rad(23.4),\n", - " true_anomaly=np.deg2rad(139.87),\n", + " semi_major_axis=6.99276221e+06,\n", + " eccentricity=4.03294322e-03,\n", + " inclination=1.71065169e+00,\n", + " argument_of_periapsis=1.31226971e+00,\n", + " longitude_of_ascending_node=3.82958313e-01,\n", + " true_anomaly=3.07018490e+00,\n", ")" ] }, diff --git a/propagation/keplerian_satellite_orbit.py b/propagation/keplerian_satellite_orbit.py index d1ff8b9..7b78d9c 100644 --- a/propagation/keplerian_satellite_orbit.py +++ b/propagation/keplerian_satellite_orbit.py @@ -3,7 +3,6 @@ Copyright (c) 2010-2022, Delft University of Technology. All rights reserved. This file is part of the Tudat. Redistribution and use in source and binary forms, with or without modification, are permitted exclusively under the terms of the Modified BSD license. You should have received a copy of the license with this file. If not, please or visit: http://tudat.tudelft.nl/LICENSE. """ - ## Context """ This example demonstrates the basic propagation of a (quasi-massless) body under the influence of a central point-mass attractor. It therefore resembles the classic two-body problem. @@ -139,7 +138,7 @@ This initial state always has to be provided as a cartesian state, in the form of a list with the first three elements reprensenting the initial position, and the three remaining elements representing the initial velocity. -Within this example, we will retrieve the initial state of Delfi-C3 using its Two-Line-Elements (TLE) the date of its launch (April the 28th, 2008). The TLE strings are obtained from [space-track.org](https://www.space-track.org). +In this case, let's make use of the `keplerian_to_cartesian_elementwise()` function that is included in the `element_conversion` module, so that the initial state can be input as Keplerian elements, and then converted in Cartesian elements. """ # Set initial conditions for the satellite that will be @@ -148,12 +147,12 @@ earth_gravitational_parameter = bodies.get("Earth").gravitational_parameter initial_state = element_conversion.keplerian_to_cartesian_elementwise( gravitational_parameter=earth_gravitational_parameter, - semi_major_axis=7500.0e3, - eccentricity=0.1, - inclination=np.deg2rad(85.3), - argument_of_periapsis=np.deg2rad(235.7), - longitude_of_ascending_node=np.deg2rad(23.4), - true_anomaly=np.deg2rad(139.87), + semi_major_axis=6.99276221e+06, + eccentricity=4.03294322e-03, + inclination=1.71065169e+00, + argument_of_periapsis=1.31226971e+00, + longitude_of_ascending_node=3.82958313e-01, + true_anomaly=3.07018490e+00, ) ### Create the propagator settings