-
-
Notifications
You must be signed in to change notification settings - Fork 276
Satellite visibility #1299
base: main
Are you sure you want to change the base?
Satellite visibility #1299
Conversation
61c0eed
to
2633047
Compare
Codecov Report
@@ Coverage Diff @@
## main #1299 +/- ##
==========================================
+ Coverage 92.01% 92.28% +0.27%
==========================================
Files 81 81
Lines 4256 4278 +22
Branches 358 358
==========================================
+ Hits 3916 3948 +32
+ Misses 258 248 -10
Partials 82 82
Continue to review full report at Codecov.
|
Would you clarify which "section 5.4" are you looking at? I would love to see this implemented, because we've been trying for 2 years to get it right:
I'm eager to understand more about the differences between the method you propose here and the ones we explored earlier. |
I am sorry, I meant section 5.4 from Escobal's book "Methods for orbit determination". Thank you for the above links, the equation in this pull request (as of now) is the same as the equation you wrote in https://space.stackexchange.com/q/49136/10716. Yesterday, it was modified a bit and hence this pull request (as of now) is aligned with Section 5.4.5, to be specific. I would have to go through those links and understand the potential pitfalls you mentioned. Also, I had found some implementations that "seemed" to be relatively straightforward:
These are the |
0332aca
to
f9c48f3
Compare
c6588c8
to
d6119df
Compare
I had some thoughts on the Escobal's approach to solve satellite visibility. As I see, that method is intended to be applied once per orbital period. Even though Escobal's approach could work here, I think, due to the nature of the event checking procedure in poliastro, we might not necessarily need to formulate such an analytical equation since we check for event at each time step? What I tried to do in the current implementation here was somewhat inspired by Example 5.9 from Howard Curtis's fourth edition. It gives slight errors in the event detection time (ranging from ~1 s to ~2 min, in rare cases more than that) when compared to orekit's
This could imply the current addition might be closer to being correct, however there are some intricacies that would need investigation for the above slight errors. Any suggestions would be helpful here! I used this to make orekit's elevation detector: from org.orekit.bodies import GeodeticPoint
from org.orekit.frames import TopocentricFrame
from org.orekit.propagation.events import ElevationDetector
point = GeodeticPoint(78 * DEG_TO_RAD, 10 * DEG_TO_RAD, 0.0) # (lat, lon, height)
topo_frame = TopocentricFrame(Earth_orekit, point, "earth-station")
...
...
ElevationDetector(topo_frame).withHandler(StopOnEvent()) Any thoughts @astrojuanlu @jorgepiloto ? Also when I tried to check, as a first pass, by using: https://docs.astropy.org/en/stable/api/astropy.coordinates.AltAz.html to extract the |
As @astrojuanlu pointed out in the meeting to check the ellipsoid that I used for validating the event, I came to know that I had made a foolish error by comparing event times with the flattened earth from orekit, as was done for the other events. Now I changed that:
Is there any particular consequence of having both lat and lon values closer to 45 degrees for the ground stations, in general, in orbital mechanics? Update: I again tried to check today and found that errors for (45, 45) case no longer appears, but I didn't change anything in the code! So the only pairs where the error occurs now is (46, 45) and (47, 45) where the mismatch is around ~5600 seconds. I think these errors were somewhat sporadic. |
Add newline at EOF
typo
change change
Reformat Change order of arguments
3a76a58
to
5fd8f5e
Compare
Although a pull request was made: poliastro/validation#35, the deviations with orekit at two (lat, lon) pairs would need some inspection. I tried to add some graphs in poliastro/validation#35. |
This draft attempt is for satellite visibility with respect to a ground station on the central attractor. Inspired by section 5.4 on rise and set time of a satellite about an oblate planet.
is_visible
method of theSpheroidLocation
class and possible refactoring.Thanks!