Plataforma · MSP
Procesado de señal vehicular como grafo YAML.
MSP es el motor de procesado de señal de MOS4. Un grafo de nodos kernel tipados se ejecuta continuamente en el dispositivo a través de 21 dominios vehiculares. Modifique un archivo .msp.yml y envíelo mediante una llamada de servicio — sin recompilar Rust, sin flashear firmware.
Escala
226 grafos a través de 21 dominios vehiculares.
| Dominio | Grafos de ejemplo |
|---|---|
| Colisión e impacto | detección de choque, disparador FNOL |
| Batería VE | estado de carga, índice de degradación |
| Combustible | tasa de consumo, fusión de nivel de depósito |
| GNSS y vía | segmentación de viajes, clasificación de tipo de vía |
| Comportamiento del conductor | frenada brusca, puntuación en curvas |
| Vibración | índice de desgaste para mantenimiento predictivo |
| Flota | detección de ralentí, contador de horas de marcha |
| Tensión y alimentación | salud de batería, activación por umbral |
| Ancho de banda CAN | medición de carga de bus, decimación |
| Temperatura | gradientes térmicos, confort de cabina |
| Velocidad y cinemática | alertas de exceso de velocidad, sobres de aceleración |
| Motor y tren de potencia | análisis de RPM, estimación de par |
| Eventos de geocerca | generación de señal de entrada a zona |
| Carga y peso | señales de estimación de carga por eje |
| Entorno | humedad, temperatura ambiente |
| TPMS | análisis de tendencia de presión de neumáticos |
| Diagnósticos | señal de presencia de DTC, correlación de fallos |
| Remolque | conexión/desconexión, estado de iluminación |
| Seguridad | cinturón de seguridad, evento de puerta abierta |
| Marítimo / off-highway | horas de motor, señales de depósito |
Tres herramientas
Crear. Depurar. Diseñar.
El flujo de desarrollo MSP abarca tres herramientas que cubren el ciclo completo: desde la creación y validación de un grafo sin conexión, hasta la depuración en vivo en un dispositivo conectado, pasando por la edición visual con la paleta de kernels.
Jupyter notebook + harness bench
Cree el grafo en un entorno Jupyter notebook. Reprodúzcalo contra grabaciones de datasets,
inspeccione formas de onda y ejecute el harness bench para obtener una puntuación
F1 por umbral de detección — más estimaciones de RAM, CPU y latencia — antes de tocar un dispositivo.
Depuración en vivo — msp-visualizer
Una herramienta React/TypeScript que lista los grafos en ejecución, consulta la topología de nodos, muestra los tiempos de benchmark por kernel y transmite muestras de señal en vivo mediante WebSocket. No se necesita ninguna herramienta adicional en un dispositivo de desarrollo.
MSP designer
Un lienzo en el navegador con una paleta de kernels. Arrastre y conecte nodos kernel, valide la estructura del grafo contra el esquema JSON en tiempo real y exporte el archivo .msp.yml consumido directamente por el runtime.
Envíanos tu grafo de señales — lo cableamos nosotros.
Ciclo de desarrollo
Del notebook al grafo desplegado — un ciclo reproducible.
El estado del arte del desarrollo MSP es un ciclo de cuatro pasos que acorta la distancia entre la creación sin conexión y el comportamiento en el dispositivo.
Paso 1
Crear y validar
Construya el grafo en el entorno Jupyter. Reprodúzcalo contra grabaciones de datasets y revise las formas de onda antes de comprometerse con un archivo YAML.
Paso 2
Puntuación F1 contra dataset de referencia
Ejecute el harness bench contra un dataset etiquetado. Obtenga una puntuación F1
por umbral de detección — reproducible entre ejecuciones y entre ingenieros.
Paso 3
Estimación de RAM / CPU / Latencia
El mismo harness informa el consumo de recursos. La estimación se convierte en el contrato para la build del dispositivo — sin sorpresas después de flashear.
Paso 4
Desplegar con resultados esperados
Envíe el grafo al dispositivo mediante una llamada de servicio. El comportamiento en vivo en el dispositivo coincide con la puntuación F1 y el sobre de recursos validados en los pasos 2 y 3.
Arquitectura de señales
Tres niveles, una API estable.
Una API estable de señales con nombre conecta el Nivel 2 y el Nivel 3. Las entradas de sensor y bus del Nivel 1 alimentan las señales de base del Nivel 2; los grafos de detección del Nivel 3 consumen los nombres, no los flujos brutos. Un nuevo sensor o PID solo se propaga al Nivel 1.
Arquitectura de señales MSP de tres niveles. El Nivel 1 contiene entradas de sensor y bus — Multi Stacks SubscribeData, GNSS, IMU y tramas CAN brutas. El Nivel 1 alimenta el Nivel 2, que contiene la capa de señal fundamental (vehicle.speed, gnss.latitude y otras). El Nivel 2 alimenta el Nivel 3, los 226 grafos de detección en 21 dominios — colisión, frenada brusca, ralentí y otros algoritmos específicos de dominio. El Nivel 3 publica a tres consumidores: el motor de política, el servicio de logs y el broker MQTT para egreso a la nube.
flowchart TB T1[Nivel 1 — sensor y bus<br/>Multi Stacks SubscribeData<br/>GNSS · IMU · tramas CAN] T2[Nivel 2 — señales de base<br/>vehicle.speed · gnss.latitude<br/>215+ señales con nombre] T3[Nivel 3 — grafos de detección<br/>colisión · frenada brusca · ralentí<br/>226 grafos, 21 dominios] T1 --> T2 --> T3 T3 -->|publicar| MEP[mos-event-processor] T3 -->|publicar| LG[mos-logs] T3 -->|publicar| MQ[broker MQTT]
Inyección en runtime
Envíe un grafo sin flashear firmware.
| Método | Descripción |
|---|---|
| LoadGraph | Enviar un grafo .msp.yml al runtime en ejecución; sin reinicio |
| EnableGraph | Activar un grafo cargado por nombre |
| DisableGraph | Pausar un grafo; el estado se preserva |
| DropGraph | Eliminar un grafo y liberar sus recursos |
| ListGraphs | Enumerar los grafos cargados con el estado del ciclo de vida |
| GetGraphInfo | Devolver la topología y la lista de kernels de un grafo |
Dirigir MSP desde un contenedor
LoadGraph desde cualquier cliente MQTT. Sin Rust requerido.
La llamada de servicio MSP es accesible desde un contenedor Python a través del broker MQTT en proceso. Un ingeniero de producto envía un nuevo grafo desde un script Python — el runtime lo valida y lo intercambia en vivo.
Contenedor Python · LoadGraph por MQTT
# dentro de cualquier contenedor Python — sin toolchain de Rust
import paho.mqtt.client as mqtt, pathlib, json
graph_yaml = pathlib.Path("harsh_brake.msp.yml").read_text()
c = mqtt.Client()
c.connect("localhost", 1883)
c.publish(
"mos/msp/LoadGraph",
json.dumps({"name": "harsh_brake", "yaml": graph_yaml}),
) La misma llamada de servicio está disponible desde C, C++, Go, Rust — o desde cualquier lenguaje que hable MQTT. El runtime está a un contenedor de distancia. Explore el SDK para el contrato de servicio completo.
Planificador
Cinco categorías de ciclo de vida para el control de ciclo de trabajo de CPU.
| Categoría | Comportamiento del planificador |
|---|---|
| always_on | Activo desde el arranque; nunca detenido por el planificador |
| event_spawned | Iniciado con un evento con nombre; detenido automáticamente al completarse |
| confidence_gated | Se ejecuta solo cuando la confianza de entrada supera el umbral |
| condition_gated | Activo mientras una clave DB o señal cumple una condición |
| intermittent | Activación periódica con ciclo de trabajo configurable |
El planificador activa y detiene automáticamente los grafos según la categoría, manteniendo baja la carga de CPU en reposo sin gestión manual del ciclo de vida en el código de la aplicación.
Observabilidad
Toma de señal en vivo y benchmarks por kernel.
msp-visualizer
Una herramienta React/TypeScript que lista los grafos en ejecución, consulta la topología de nodos, muestra los tiempos de benchmark por kernel y transmite muestras de señal en vivo mediante WebSocket. No se necesita ninguna herramienta adicional en un dispositivo de desarrollo.
Señales con nombre como API entre grafos
Las señales con nombre — vehicle.speed, gnss.latitude y otras — son
la API estable entre grafos. Los autores de grafos aguas abajo consumen señales con nombre,
no flujos de hardware brutos; los cambios de sensor no se propagan por el catálogo de grafos.
Catálogo de kernels
124 kernels en 9 categorías.
La biblioteca de kernels cubre toda la gama de procesado de señal de telemetría vehicular — desde aritmética básica y cadenas de filtros hasta geometría GNSS, detección de eventos y gestión de alimentación.
Math/arithmetic
18Operadores escalares y acumuladores en el dominio temporal.
- Valor absoluto
- Acumulador
- Derivada
- Integrador
- Mediana
- · y 13 más
Filters/DSP
23Filtros IIR/FIR, wavelets, remuestreadores, histéresis.
- Filtro Chebyshev tipo II
- Convolución
- Eliminador de offset DC
- Submuestreador
- Histéresis
- · y 18 más
Event detection
9Primitivas de umbral y gating para eventos discretos.
- Debounce asimétrico
- Puerta de eventos
- Detector de picos
- Estabilidad en banda
- Umbral
- · y 4 más
Vehicle/sensor
10GNSS, IMU, OBD y otras interfaces del lado del sensor.
- Fuente GNSS
- Desplazamiento GNSS
- Distancia GNSS
- Estimador de gravedad
- Flujo IMU
- · y 5 más
Codec/IO
19Compresión, serialización, CSV y codificadores de trama.
- Compresión bzip2
- Ensamblado de tramas CAN
- Compresión de tramas CAN
- Parser CSV
- Escritor CSV
- · y 14 más
Time/control
10Bases de tiempo, planificadores, máquinas de estados.
- Fuente de reloj de pared
- Cortador de ventana temporal
- Lectura/escritura de BD
- Tick periódico
- Generador de señal
- · y 5 más
Geometry/algebra
4Rotación 3D, atan2, constructores de matrices.
- atan2
- Constructor de matrices
- Rotación 3D
- Transformación de rotación
Graph plumbing
26Pub/sub entre grafos, contadores, sondas.
- Contador
- Escritor BD
- Descartar
- Mezclar flujos
- Sonda
- · y 21 más
Energy/power
5Ratios de energía, clasificadores de potencia, integradores persistentes.
- Perfil de distancia
- Ratio de energía
- Integrador persistente
- Clasificador de potencia
- Publicador de eventos de potencia
¿Necesitas un módulo de kernel que no está en el catálogo? Munic añade nuevos módulos por programa — habla con ingeniería.
En contexto
MSP en la cadena de señal MOS4.
MSP se sitúa entre el bus vehicular y la nube. Multi Stacks entrega tramas brutas; MSP las transforma en señales con nombre; el procesador de eventos y el broker MQTT las llevan a la nube.
Plataforma no-code
MSP es uno de los motores no-code de MOS4. Explore la superficie no-code completa junto al procesador de eventos y la capa de configuración de flota.
Multi Stacks — entrada de Nivel 1
Multi Stacks decodifica tramas CAN brutas y PIDs OBD y los publica como las entradas de Nivel 1 a las que se suscriben los grafos MSP.
OBDStacks — fuente de señal OBD
OBDStacks alimenta el flujo de PIDs OBD en las señales de Nivel 1 de MSP a través de los dominios de diagnósticos y tren de potencia.
SDK — envíe grafos mediante programación
El SDK expone el contrato de servicio MSP completo. Envíe, active y desactive grafos desde cualquier contenedor o integración en la nube.
Traiga la señal que quiere extraer.
Muéstrenos el dominio vehicular y el algoritmo; crearemos el grafo con usted en un dispositivo objetivo de su elección.