Skip to content

Extend simpleInstrumentController with cumulative holds and target illumination #1602

Open

Description

@dhutererprats

Describe your use case

Space-to-space imaging needs a minimum period of valid pointing, access, and, optionally, target illumination before commanding an image. Some missions need an uninterrupted hold; others need to accumulate valid intervals across interruptions. We also need the acquired image's mean illumination over those valid intervals.

simpleInstrumentController already supports continuous duration imaging. Could we extend it with cumulative holds and target illumination so these acquisition checks live in the instrument controller?

Proposed behavior:

  • Add an optional cumulative hold. Continuous mode resets on a constraint break; cumulative mode pauses and keeps completed valid intervals.
  • Read a target illumination message, optionally enforce a minimum illuminated fraction, and report the time-weighted mean illumination when the image is commanded.
  • Count intervals only when both sampled endpoints qualify, including irregular update spacing, so an interrupted interval adds neither hold time nor illumination.
  • Keep existing configurations working by making the new constraints opt-in.

The local candidate also includes optional input freshness and capture readiness. These prevent guidance from a previous target from qualifying a new acquisition and allow the instrument to wait for storage space. Reset clears the hold and output command. Those additions can be reviewed alongside the core hold/illumination change.

Describe alternatives solutions you've considered

For BSK-RL PR #356, we agreed to retain a temporary acquisition gate in BSK-RL while this controller update is reviewed. That lets the imaging work continue with the existing Basilisk API. Once the upstream extension is merged and available, a separate BSK-RL follow-up will replace the gate with the updated module.

Additional context

This follows the controller recommendation in the BSK-RL review. Existing continuous-duration work is covered by PR #1204, and elapsed-duration reporting by PR #1516.

A local C/SWIG implementation, module documentation, and tests are prepared. Its 44 existing and added controller tests passed against an isolated rebuilt controller and wrapper; this is local validation, not GitHub CI. The BSK-RL gate has also been checked with a Basilisk controller that lacks the proposed API, including actual acquisition, storage, and complete downlink.

The replacement on the BSK-RL side is tracked in BSK-RL #358.

Activity

  1. self-assigned this
    on Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

  • Status
    No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions