Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Embed CloudXRLauncher lifecycle inside TeleopSession

Aperta
#701 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
52/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python
Ambito
ar-vr-xr, robotics

Direzione di ricerca

Inizia dagli entry point TeleopSession e CloudXRLauncher e analizza i context manager annidati dell'esempio mcap esistente. Traccia l'ordine di avvio, errore di connessione e teardown, quindi aggiungi coverage che mostri l'ownership interna, l'opt-out del launcher esterno e una pulizia corretta in caso di errore; l'esempio mcap esistente deve continuare a funzionare.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Embed CloudXRLauncher lifecycle inside TeleopSession

Context

In the live teleop path, users currently have to set up the CloudXR runtime
launcher and the teleop session as two separate context managers:

​```python
with launcher_ctx as launcher:
if launcher is not None:
print(f"[live] CloudXR runtime started (WSS log: {launcher.wss_log_path})")
print("[live] waiting for headset connection… (Ctrl+C to stop)")

with TeleopSession(config) as session:
    ...

​```

This was raised in review on the mcap-example PR (@aristarkhovNV): the nested
launcher context is extra plumbing the caller shouldn't have to wire up by hand.
Deferring it out of that PR to keep its scope on the mcap example only.

Proposal

Have TeleopSession optionally own the CloudXRLauncher lifecycle so the
common case collapses to a single context manager:

​python with TeleopSession(config) as session: ... ​

TeleopSession.__enter__ would start the launcher (when configured for the
live/CloudXR path) and __exit__ would tear it down, surfacing wss_log_path
and any launcher state via the session object.

Motivation
  • Removes boilerplate and the nested with from every caller.
  • Single ownership point for startup/teardown ordering (launcher must come up
    before the session connects, and tear down after).
  • Centralizes the launcher is not None guard instead of leaking it to callers.
Open questions / considerations
  • Opt-out path: keep the ability to inject an externally-managed launcher
    (e.g. pass launcher=... or manage_launcher=False) for callers that need to
    share one launcher across sessions or control its lifecycle themselves.
  • Backward compatibility: does anything depend on the current two-context
    shape? If so, keep the standalone launcher context working.
  • Failure semantics: if the launcher starts but the session fails to
    connect, ensure the launcher is cleanly torn down (no orphaned runtime).
  • Logging: preserve the [live] CloudXR runtime started (WSS log: …) and
    "waiting for headset connection" messages, moved inside the session.
Acceptance criteria
  • TeleopSession can start/stop the CloudXR launcher internally when configured.
  • Single with TeleopSession(config) works for the live path.
  • An escape hatch exists for an externally-managed launcher.
  • Startup/teardown ordering and failure cleanup are covered by a test.
  • Existing mcap example still works.
Lingua principale
Python
Stelle
403
Fork
94
Merge medio
2g 17m
PR unite (30g)
121

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di NVIDIA/IsaacCapture

Tutte le issue di NVIDIA/IsaacCapture

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.