Subsystem
Este bloque de función actúa como un contenedor de flujo de trabajo autocontenido. Úsalo para agrupar pasos de procesamiento relacionados dentro de un espacio de trabajo separado y editable, de modo que los escenarios complejos se mantengan organizados y sean más fáciles de gestionar.
📥 Entradas
No default inputs
Este bloque no declara entradas por sí mismo. Las entradas se crean añadiendo sockets de entrada dentro del espacio de trabajo del subsistema y exponiéndolas en el borde del bloque.
📤 Salidas
No default outputs
Este bloque no declara salidas por sí mismo. Las salidas se definen a través de los bloques hijos colocados dentro del subsistema y se exponen como salidas del subsistema.
🕹️ Controles
Open Subsystem Editor
Abre el espacio de trabajo del subsistema para añadir o editar el flujo contenido. (Normalmente disponible con doble clic en el bloque o desde el menú contextual del bloque.)
Expose Input
Crea un socket de entrada dentro del subsistema y expónlo en el borde del bloque para que el flujo padre pueda enviar datos.
Expose Output
Crea un socket de salida dentro del subsistema y expónlo en el borde del bloque para devolver resultados al flujo principal.
Run / Debug Inside
Ejecuta y depura el flujo contenido de forma independiente del escenario principal para validar su comportamiento.
🎯 Características clave
Encapsulación: Agrupa pasos de preprocesamiento, detección, seguimiento y exportación en una única unidad reutilizable.
Espacio de trabajo local: El subsistema tiene su propio lienzo editable para diseñar comportamientos complejos sin ensuciar el flujo principal.
Límites claros: Expón solo las entradas y salidas necesarias, manteniendo el grafo principal simple.
Pruebas aisladas: Abre y ejecuta el espacio de trabajo del subsistema para depurar o validar sub‑flujos de forma independiente.
Reutilización: Construye un subsistema probado una vez y reutilízalo en varios proyectos.
⚙️ Cómo se ejecuta
Cuando se ejecuta el escenario, el subsistema ejecuta su flujo interno.
Los datos entran en el subsistema a través de los sockets de entrada que hayas expuesto dentro de él.
Los bloques hijos dentro del subsistema calculan sus resultados en secuencia.
Las salidas que expusiste dentro del subsistema se recopilan y se devuelven al flujo padre como salidas del bloque.
Si un bloque hijo dentro del subsistema informa un error o un estado inválido, el subsistema reflejará ese estado para que puedas localizar y corregir el problema dentro del espacio de trabajo.
📝 Guía de uso
Añade un bloque
Subsystema tu flujo principal para contener una secuencia compleja (adquisición → procesamiento → exportación).Abre el espacio de trabajo del subsistema (
Open Subsystem Editor) y añade los bloques necesarios.Dentro del subsistema, expón solo las entradas y salidas que requiera el flujo padre.
Prueba el subsistema de forma independiente usando los controles internos de ejecución/depuración antes de integrarlo en el escenario principal.
Reutiliza y duplica subsistemas para tareas similares y así acelerar el desarrollo.
💡 Consejos y buenas prácticas
Agrupa una canalización completa de cámara dentro de un subsistema: usa
Camera USBoCamera IP (ONVIF)→ bloques de preprocesado comoImage Resize/Blur→ detectores comoObject DetectionoFind Object→ visualización conDraw Detections→ almacenamiento conImage LoggeroImage Write.Para flujos de seguimiento, coloca
Object Detection(oObject Detection - Custom) yObject_Detection_Trackerdentro de un mismo subsistema para mantener la lógica de tracking y el post‑procesado juntos.Encapsula pasos de IA pesados como
Super Resolution,Depth Estimation (DepthAny. V2)oBackground Removal (RMBG-1.4)dentro de subsistemas para poder activarlos/desactivarlos o cambiar modelos sin afectar el flujo principal.Usa subsistemas para implementar análisis en varias etapas: p. ej., selección ROI con
Image ROI Select→ análisis de forma conFind Contour/Measure Position Distance→ formateo de resultados conData to JSON.Para análisis de intersecciones o tráfico, mantén detección y tracking en un subsistema y agregación/exportación (por ejemplo
Traffic Intersection AnalysisoCSV Export) en otro para separar responsabilidades.Para paso de datos y estado local, combina subsistemas con
Data Write LocalyData Read Localpara mantener memoria local sin contaminar el flujo global.Al depurar, abre el subsistema y ejecuta solo su contenido para identificar rápidamente qué bloque interno causa salidas inválidas o inesperadas.
🛠️ Solución de problemas
No outputs appearingConfirma que has expuesto salidas dentro del subsistema. Si no hay salidas expuestas, el bloque no devolverá datos al flujo padre.Inputs not receivedAsegúrate de haber creado y expuesto sockets de entrada dentro del subsistema y que el flujo padre esté conectado a esas entradas expuestas.Child block reports invalidAbre el espacio de trabajo del subsistema e inspecciona los bloques hijos. Los errores internos aparecerán allí: corrige la configuración del bloque hijo o reemplaza el bloque problemático.Performance issuesSi el subsistema contiene procesamiento pesado (modelos de IA, super‑resolución, operaciones de gran volumen), considera perfilar dentro del subsistema y mover procesos no esenciales a subsistemas separados y bajo demanda.Need to reuse or versionDuplica el subsistema y conserva una copia de prueba. Así podrás probar parámetros o modelos distintos sin afectar el flujo en producción.
Última actualización
¿Te fue útil?