Salta ai contenuti

Aprire e riprodurre un file .xosc esistente

drawtonomy legge file OpenSCENARIO 1.x .xosc e li riproduce nel browser su esmini compilato in WebAssembly. Lo scenario importato non è in sola lettura — gli atti, gli eventi, le azioni e i trigger finiscono nello stesso editor che useresti per creare uno scenario da zero.

Importa una coppia .xosc + .xodr, ispeziona le fasi e gli eventi importati, e riproduci lo scenario.

Un .xosc descrive quello che fanno gli attori. Non contiene la strada — fa riferimento a una mappa OpenDRIVE .xodr nel suo elemento RoadNetwork. Senza quella strada, le entità non hanno dove essere posizionate, quindi drawtonomy te la chiede prima di importare.

Tieni a portata di mano entrambi i file prima di iniziare. Se il tuo .xosc viene dal repository esmini, il corrispondente .xodr si trova in resources/xodr/ accanto a resources/xosc/.

Seleziona il .xosc e il .xodr nel tuo file manager e rilasciali insieme sulla tela. Questo è il percorso più breve — drawtonomy li associa da solo e importa in un unico passaggio: la strada si carica, gli attori vi si posizionano e la scheda LOGIC si riempie, il tutto senza una seconda richiesta.

L’associazione si basa sulla strada che il .xosc nomina nel suo elemento RoadNetwork. Se il .xodr che hai rilasciato non è quello cui fa riferimento — oppure hai rilasciato il .xosc da solo — drawtonomy non può completare l’associazione e torna al banner OPENDRIVE MAP REFERENCED per permetterti di indicare il file strada corretto.

Menu hamburger → Importa…, poi seleziona il .xosc.

Poiché la finestra di dialogo dei file accetta un solo file, drawtonomy mostra quindi un banner in cima allo schermo:

OPENDRIVE MAP REFERENCED cut-in.xosc../xodr/e6mini.xodr

Il banner OPENDRIVE MAP REFERENCED — il nome del .xosc, il .xodr a cui fa riferimento, e un pulsante Apri .xodr

Fai clic su Apri .xodr e scegli il file strada. Il banner ha anche una ×; chiuderla termina l’importazione senza caricare nulla, quindi usa Apri .xodr a meno che tu non intenda annullare.

Aggiungi ?open= e un URL di file GitHub all’URL dell’app:

https://drawtonomy.com/?open=https://github.com/esmini/esmini/blob/master/resources/xosc/cut-in.xosc

Quel link è attivo — provalo: Apri lo scenario cut-in di esmini in drawtonomy →

drawtonomy scarica il .xosc, legge il suo riferimento RoadNetwork, e recupera il .xodr dallo stesso repository nello stesso commit o branch. Enumera anche le directory Catalogs che lo scenario referenzia e carica i file catalogo che trova — l’unica rotta in cui i cataloghi si risolvono automaticamente.

Cosa accetta e cosa no:

Host accettatilink blob di file github.com, e raw.githubusercontent.com
Rifiutatiqualsiasi altro host, e link di directory tree/
Repositorydeve essere pubblico — il fetch non è autenticato
Limite di velocitàl’enumerazione del catalogo usa l’API GitHub non autenticata, limitata a 60 richieste all’ora
Percorsi strada assolutiun RoadNetwork che punta a un percorso Windows (C:\…) non può essere risolto; ti verrà chiesto il .xodr invece

Un unico link è sufficiente per condividere uno scenario eseguibile con un revisore — senza download, senza installazione.

La rotta ?open= legge da GitHub, quindi per condividere uno scenario che hai modificato, metti i file dove GitHub può servirli:

  1. In drawtonomy, Esporta → OpenSCENARIO (.xosc)… con INCLUDI impostato su .xosc + .xodr affinché la strada viaggi con lo scenario. (Mantieni il percorso RoadNetwork relativo che l’esportazione scrive.)
  2. Esegui il commit e il push di entrambi i file a un repository GitHub pubblico.
  3. Copia l’URL blob GitHub del file .xosc (il link github.com/…/blob/… dalla pagina del file) e aggiungerlo a https://drawtonomy.com/?open=.

Chiunque apra quel link ottiene il tuo scenario modificato, la sua strada e tutti i cataloghi che il repository contiene — risolti automaticamente, poiché ?open= carica i cataloghi dallo stesso repo.

Dopo un’importazione riuscita drawtonomy passa automaticamente alla modalità Scenario e la scheda LOGIC si riempie:

  • Ogni Atto OpenSCENARIO diventa una Fase, mantenendo il suo nome. Uno scenario con CutInAndBrakeAct mostra una fase con quel nome.
  • Ogni Evento diventa una scheda evento sotto l’attore che la esegue, etichettata con il nome evento originale.
  • Il StopTrigger dello storyboard diventa il nodo CONDIZIONI DI FINE — per esempio Dopo che CutInManeuver si conclude.

Fai clic su una qualsiasi scheda evento per aprire l’editor di evento. I trigger, le azioni, i profili di dinamica e le priorità eseguono il round-trip, quindi un trigger importato Intervallo di tempo dall'attore viene letto di nuovo come Intervallo di tempo dall'attore con la stessa soglia. I nomi di Maneuver e ManeuverGroup vengono conservati nella sezione AVANZATE piuttosto che mostrati sulla scheda.

Molti scenari pubblicati dichiarano <CatalogLocations> e richiedono i loro modelli di veicoli da file catalogo esterni. Quando importi un file di questo tipo, drawtonomy mostra un toast informativo:

Questo scenario referenzia cataloghi esterni che non sono stati forniti. Rilascia i file catalogo con il .xosc, oppure gli attori potrebbero non caricarsi.

Leggi come informazione, non un errore:

  • Appare ogni volta che il .xosc dichiara le posizioni del catalogo, indipendentemente dal fatto che manca effettivamente qualcosa.
  • Le voci del catalogo veicoli standard si mappano sui modelli integrati di drawtonomy, quindi nella maggior parte dei casi ogni attore si carica con la forma, il colore e la posizione iniziale corretti, e lo scenario si riproduce completamente.
  • Il toast scompare da solo dopo pochi secondi; reimporta il file se hai bisogno di leggerlo di nuovo.
  • I cataloghi si risolvono automaticamente sulla rotta GitHub ?open=.

Se gli attori mancano davvero dopo un’importazione, appare chiaramente — le entità interessate non compaiono affatto sulla tela.

Puoi cambiare qualsiasi cosa dopo l’importazione, ma un dettaglio colpisce le persone di sorpresa. Il pannello Variabili — il pulsante {x} sulla scheda LOGIC — lo dice direttamente:

La modifica dei valori qui non modifica le azioni già importate con un valore letterale (i riferimenti vengono risolti al momento dell’importazione).

In altre parole: se il .xosc originale usava $HostVehicle_Speed e quel parametro era 27.7, l’azione importata contiene 27.7, non il riferimento. Cambiare il parametro in seguito non sposta l’azione. Modifica l’azione stessa.

La riga di trasporto in cima alla scheda LOGIC gestisce la riproduzione: play e pausa, ripristino all’inizio, velocità di riproduzione, fotocamera di follow, tracce fantasma e il badge verdetto. Trascina o fai clic sulla linea temporale per cercare in qualsiasi momento. Vedi Riproduzione per l’insieme completo.

Due abitudini che vale la pena adottare per gli scenari importati:

  • Imposta la fotocamera di follow prima di riprodurre. Le reti stradali importate sono spesso lunghe chilometri e la fotocamera predefinita non traccia nulla.
  • Cerca invece di guardare. Ogni posizione proviene dalla simulazione, quindi mettere in pausa sul fotogramma esatto di un cut-in è esatto, non una stima.
SintomoCausa
Nulla si carica dopo aver selezionato un .xoscIl file strada non è mai stato fornito. Reimporta e usa Apri .xodr sul banner.
Gli attori si siedono uno sopra l’altroLa strada non si è caricata, quindi ogni entità è tornata all’origine. Verifica che il .xodr corrisponda allo scenario.
Un attore si ferma a metà strada e non si muove mai piùHa raggiunto la fine della strada. Estendi la strada o usa un .xodr più lungo.
Toast di catalogo su ogni importazionePrevisto per qualsiasi .xosc con <CatalogLocations> — vedi sopra.
Un link GitHub è rifiutatoSolo i link blob github.com e raw.githubusercontent.com sono accettati, e il repository deve essere pubblico.