Hey, folks! Here's Meuge, your usual host from the last few months.
In the last few weeks, we got a little bit of everything, analyzing, coding, and searching for feasible solutions to reach the best result. Therefore, we came up with a new feature in Poliastro's Earth module. The API may change in the future, so be aware by the time you read this. Hence, I bet you might be wondering, what's all the fuzz?
Well, now you can experiment with the new API to compute the visibility of sensors that are on board of the satellites. The FOV, field of view, the question is about meeting mission goals within the limit of a satellite sensor. Given some parameters about the viewing satellite, the fundamental problem related to calculating the field of view is estimating how much of Earth we can see. So, you are now able to know the angle of the total area that a sensor can observe. That's cool, right? If you want to take a look, see the sensors file 😊 But first things first,let's see the magic behind the scenes!
Show me the code!
from poliastro.bodies import Earth from poliastro.earth.sensors import ( max_and_min_ground_range, ) # First we need to define the next parameters # To calculate the minimum and maximum values of ground-range angles R = Earth.R.to(u.km) # Equatorial radius of the attractor h= 800 * u.km, # Altitude n_fov = (25 * u.deg).to(u.rad) # Angle of the total area that a sensor can observe. n_center = (40 * u.deg).to(u.rad) # Center boresight angle. Λ_max, Λ_min = max_and_min_ground_range(h, n_fov, n_center, R) # Please note that the total ground range is the difference between the maximum and minimum ranges
Now imagine that we have the other situation that you know the phase angle, used to specify where the sensor is looking, and you want to figure out the difference in ground-range angles, delta_λ, from the η_center angle and the latitude, φ_tgt, and longitude, λ_tgt, of the target. So we do the next!
from poliastro.bodies import Earth from poliastro.earth.sensors import ( max_and_min_ground_range_with_specific_azimuth, ) # First we need to define the next parameters h= 800 * u.km, # Altitude η_fov = (25 * u.deg).to(u.rad) # Angle of the total area that a sensor can observe. η_center = (40 * u.deg).to(u.rad) # Center boresight angle. # The sensor, β, can be aimed in many directions β = (140 * u.deg).to(u.rad) #phase angle φ_nadir = (50 * u.deg).to(u.rad) # Latitude angle of nadir point λ_nadir = (40 * u.deg).to(u.rad) # Longitude angle of nadir point R = Earth.R.to(u.km) # Equatorial radius of the attractor delta_λ, φ_tgt, λ_tgt = max_and_min_ground_range_with_specific_azimuth( h, η_center, η_fov, β, φ_nadir, λ_nadir, R)
And that's it folks.That would be all for today, and stay safe out there! 🚀