Dışa aktarıcı mimarisi
Dışa aktarıcı, drawtonomy’nin düzenleyici içi verisi ile harici formatlar — OpenDRIVE, OpenSCENARIO, Lanelet2 veya bir sonraki bağladığınız her şey — arasındaki köprüdür. İşlem hattını anlamak, yeni bir hedef format eklemenin ön koşuludur.
İşlem hattı
Section titled “İşlem hattı”Düzenleyici durumu ──► DrawtonomySnapshot ──► Dışa Aktarıcı ──► Dosya / blob (serileştirilebilir) (saf)1. DrawtonomySnapshot
Section titled “1. DrawtonomySnapshot”Bir anlık görüntü düz bir nesnedir: bir şekil listesi artı bir sürüm damgası ve bir zaman damgası. Serileştirilebilir, DOM referansları yoktur ve dışa aktarıcının aldığı tek girdidir.
interface DrawtonomySnapshot { version: string timestamp: string shapes: BaseShape[]}Bir anlık görüntüyü createSnapshot(shapes) ile veya kayıtlı bir
drawtonomy.svg’yi parseDrawtonomySvg(svg) ile ayrıştırarak
oluşturursunuz.
2. Dışa aktarıcı modülleri
Section titled “2. Dışa aktarıcı modülleri”Her hedef format ayrı bir saf fonksiyondur:
exporter.exportToOpenDrive(snapshot, options) → string(XML)exporter.exportToOpenScenario(snapshot, options) → string(XML)exporter.exportToLanelet2(snapshot, options) → string(OSM XML)exporter.buildEsminiZip(snapshot, options) → { blob, baseName }
Bir anlık görüntü alır, bir dize veya blob döndürürler. Düzenleyici erişimi yok, DOM yok, asenkron bağımlılık yok. Aynı girdi, aynı çıktı.
3. Çift yönlü dönüşüm
Section titled “3. Çift yönlü dönüşüm”Lanelet2 için SDK ayrıca bir ayrıştırıcı sunar:
exporter.parseOsmXml(osm) → ParsedOsmexporter.osmToShapes(parsed) → BaseShape[]
Lanelet2 içe aktarımı akışını güçlendiren budur.
Neden saf fonksiyonlar
Section titled “Neden saf fonksiyonlar”Dışa aktarıcı aynı kod yolunu tarayıcıda, bir Node CI betiğinde, bir sunucu tarafı işlem hattında veya bir tarayıcı uzantısında çalıştırır. Testler başsız tarayıcı olmadan anlık görüntü fikstürlerine karşı çalışır.
Bu, dışa aktarıcının düzenleyicide değil, @drawtonomy/sdk’da
yaşamasının nedenidir — düzenleyici SDK’ya bağlıdır, tersine
değil.
Hedef format ekleme
Section titled “Hedef format ekleme”Dışa aktarıcı, yeni hedefler için ana uzantı noktasıdır — CARLA, Unity, SUMO, özel DSL’ler. Tarif:
packages/drawtonomy-sdk/src/exporter/altına yeni bir modül ekleyin.DrawtonomySnapshotalın, bir dize veya blob döndürün.- Anlık görüntü fikstürlerini kullanarak
packages/drawtonomy-sdk/__tests__/exporter/altına testler ekleyin. - Düzenleyicinin Dışa Aktar menüsünün ondan haberdar olmasını istiyorsanız bir UI giriş noktası bağlayın (isteğe bağlı — birçok kullanıcı onu programatik olarak çağıracaktır).
Tam geliştirici kılavuzu genel depodadır: Dışa Aktarıcı Geliştirici Kılavuzu.
Ayrıca bakın
Section titled “Ayrıca bakın”- OpenDRIVE / OpenSCENARIO / esmini’ye dışa aktarın — kullanıcıya yönelik akış.
@drawtonomy/sdkgenel bakışı- Dışa Aktarıcı SDK API’si