Repository navigation
Feature: Space-to-Space RSO Imaging - #356
Merged
Merged
Conversation
dhutererprats
marked this pull request as draft
October 3, 2026 16:05
dhutererprats
force-pushed
the
feature/space-to-space-rso-imaging
branch
from
October 5, 2026 01:48
edf763e to
f5c100e
Compare
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 5, 2026
LorenzzoQM
reviewed
Oct 6, 2026
dhutererprats
force-pushed
the
feature/space-to-space-rso-imaging
branch
from
October 7, 2026 04:30
6d5c6ed to
2234295
Compare
Use the same start date, orbit, and random seed on every test run. Check countdowns before shadow entry and after rollover to later orbits. Keep the composed-observation fixture name valid. Simulator code is unchanged.
Bind catalog targets to explicit satellite names and preserve stable IDs. An omitted epoch follows the environment on each reset. Save the resolved epoch for replay and reject explicit mismatches or ambiguous bindings. Add scenario hooks for identity checks and scheduled priority updates.
Use ordinary spacecraft dynamics for passive targets and instrument/storage dynamics for imagers. Ground-station support is composed explicitly when needed. Bind actual access outputs and validate range and image size.
Keep continuous/cumulative qualification and illumination sampling in a temporary BSK-RL gate using the existing Basilisk API. Require fresh inputs and sufficient capacity, then confirm complete physical storage. Validate satellite names at construction and rename. Events use those names directly, without hashing. Update existing examples and fixtures. Warn on stale observations while preserving the selected target ID. Basilisk #1602 and BSK-RL #358 track the later native replacement.
Track owned captures, remaining bits, and complete ground deliveries. Reward callbacks permit mission-specific weights. The default gives full target-priority credit only after delivery. Cover partial transfers, cooldown, priority changes, and episode state reset.
Use a shared ordered target snapshot for observations and actions. Observation and action counts are independent, with explicit empty slots. Provide the normalized geometry row by default and use illuminationFactor through the standard Basilisk accessor. Verify rotated-frame geometry.
Add an annotated notebook and companion demo for capture, complete downlink, and catalog replay. Keep optional AMOS settings explicit. Use real environment resets to check dimensions, rewards, sampled epochs, and saved mission settings. Leave the longer policy evaluation optional.
Evaluate priority, nearest-target, and random baselines or a supplied policy. Save mission settings, observations, action/capture/delivery CSVs, and labeled PNG/PDF histories. Reject changed catalogs during replay. The learned-policy adapter is optional and requires no training run.
Exercise physical holds, access, capacity, capture confirmation, partial downlinks, ownership, independent imagers, cooldown, and episode resets. Check the example evaluator and replay with real environments. Restore mocked Basilisk simulator methods between unit tests.
Place the imaging notebook alongside inspection under Examples / Environments / RSO Missions. Document the public naming restriction and default delivery reward, and link the temporary gate replacement issues. The standalone top-level page is omitted. Record the eclipse-test assertion fix separately in the release notes. Link its dedicated issue #359 and state that eclipse prediction is unchanged.
dhutererprats
force-pushed
the
feature/space-to-space-rso-imaging
branch
from
October 7, 2026 19:04
2234295 to
c74260f
Compare
LorenzzoQM
approved these changes
Oct 7, 2026
LorenzzoQM
left a comment
Contributor
There was a problem hiding this comment.
Looks good! Thank you for addressing all comments.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Closes #357
Fixes #359
This brings space-to-space imaging into BSK-RL. An imager selects an independently orbiting RSO, tracks it, completes the required pointing hold, and stores the image. Delivery reward is given after the complete image has been downlinked. These targets are whole spacecraft, while the existing RSO Inspection example observes surface points on one nearby spacecraft.
The component commits include Lorenzo's review changes:
utc_initis optional. An unpinned catalog follows the environment's realized epoch on each reset, and saving the resolved catalog records that epoch for replay. An explicit mismatch raises an error.alpha=1.0). The example exposes its weights explicitly, including the existing AMOSalpha=0.1option.Following the agreed approach, acquisition uses a temporary BSK-RL gate with the existing Basilisk message API. Continuous holds reset when qualification breaks. Cumulative holds preserve qualifying intervals. Illumination is sampled over those intervals, and the capture is recorded only after the complete image reaches physical storage. This PR does not require the proposed native controller extension.
Type of change
Satellite names must now be valid Python identifiers, such as
EO_1instead ofEO-1. Target catalog IDs can still contain punctuation. This requirement is documented in the release notes.How should this pull request be reviewed?
The history has been rewritten so each component contains its final implementation. There is no separate review-fix or lint-cleanup commit. Each of the 50 changed files reaches its final contents in one commit.
The eclipse tests come first. The naming migration is included with acquisition/event handling, policy evaluation comes before its integration tests, and documentation comes last. After reviewing the components, check the complete path from target selection through capture, storage, downlink, and reward.
How Has This Been Tested?
Local checks used Python 3.11.9 and the existing Basilisk 2.13.0b0 runtime, without the proposed controller extension. The physical imaging/example checks also passed with the existing 2.12.0 validation runtime. All eight GitHub checks passed on the previously published history, including the Python 3.10–3.13 test matrix, benchmark smoke tests, commit messages, and documentation build.
The October 7 update changes only the release-note bullet and commit metadata. CI is running on the latest head.
The separate eclipse-test commit fixes the incorrect countdown assumption tracked in #359. The tests use the same simulation start date, orbit, and random seed on every run so the results are repeatable, then check ordinary countdowns, shadow entry, and rollover to later orbits. Eclipse prediction is unchanged. The release notes include a separate bullet identifying this as a test bug fix.
Future Work
Basilisk #1602 requests cumulative holds and target illumination in
simpleInstrumentController. BSK-RL #358 tracks replacing the temporary gate after that update is merged and available. The native implementation and tests are prepared separately and are not part of this branch.Checklist