For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

  1. Añade un bloque Subsystem a tu flujo principal para contener una secuencia compleja (adquisición → procesamiento → exportación).

  2. Abre el espacio de trabajo del subsistema (Open Subsystem Editor) y añade los bloques necesarios.

  3. Dentro del subsistema, expón solo las entradas y salidas que requiera el flujo padre.

  4. Prueba el subsistema de forma independiente usando los controles internos de ejecución/depuración antes de integrarlo en el escenario principal.

  5. 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 USB o Camera IP (ONVIF) → bloques de preprocesado como Image Resize / Blur → detectores como Object Detection o Find Object → visualización con Draw Detections → almacenamiento con Image Logger o Image Write.

  • Para flujos de seguimiento, coloca Object Detection (o Object Detection - Custom) y Object_Detection_Tracker dentro 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) o Background 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 con Find Contour / Measure Position Distance → formateo de resultados con Data 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 Analysis o CSV Export) en otro para separar responsabilidades.

  • Para paso de datos y estado local, combina subsistemas con Data Write Local y Data Read Local para 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 appearing Confirma que has expuesto salidas dentro del subsistema. Si no hay salidas expuestas, el bloque no devolverá datos al flujo padre.

  • Inputs not received Asegú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 invalid Abre 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 issues Si 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 version Duplica 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?