Plateforme · MSP

Traitement du signal véhicule comme graphe YAML.

MSP est le moteur de traitement du signal de MOS4. Un graphe de nœuds kernel typés s'exécute en continu sur l'appareil sur 21 domaines véhicule. Modifiez un fichier .msp.yml et poussez-le via un appel de service — sans recompilation Rust, sans flash de firmware.

Système · flux de données toujours actif
Graphe de traitement de signal sur fond blueprint sombre — sources accéléromètre et gyroscope à gauche alimentent un pipeline chaîné (filtre, FFT, seuil) et trois puits (événement, log, publication MQTT) ; une branche ambre passe par un nœud d'inférence AI/ML
MSP Visualizer — inspecteur de graphe de signaux en direct avec forme d'onde, spectrogramme et marqueur de seuil

Échelle

226 graphes sur 21 domaines véhicule.

226 graphes pré-construits choc, batterie VE, carburant, GNSS, flotte et plus
21 domaines véhicule de la détection de choc au maritime off-highway
124 modules noyau sur 9 catégories de traitement du signal
215+ signaux inter-graphes nommés API stable sur la couche de signaux fondamentaux
<10% CPU en régime permanent ensemble de graphes de production représentatif sur matériel modem-class
21 domaines véhicule dans le catalogue de graphes MSP
Domaine Exemples de graphes
Choc et impact détection de choc, déclencheur FNOL
Batterie VE état de charge, indice de dégradation
Carburant taux de consommation, fusion niveau de réservoir
GNSS et route segmentation de trajet, classification type de route
Comportement conducteur freinage brusque, score de virage
Vibration indice d'usure pour maintenance prédictive
Flotte détection de ralenti, compteur d'heures de marche
Tension et alimentation santé batterie, réveil sur seuil
Bande passante CAN mesure charge bus, décimation
Température gradients thermiques, confort habitacle
Vitesse et cinématique alertes sur-vitesse, enveloppes d'accélération
Moteur et transmission analyse RPM, estimation couple
Événements géozone génération de signaux entrée de zone
Chargement et poids signaux d'estimation de charge essieu
Environnement humidité, température ambiante
TPMS analyse tendance pression pneus
Diagnostics signal présence DTC, corrélation de pannes
Remorque connexion/déconnexion, état éclairage
Sécurité ceinture, événement porte ouverte
Maritime / off-highway heures moteur, signaux réservoir

Trois outils

Créer. Déboguer. Concevoir.

Le workflow de développement MSP couvre trois outils qui couvrent la boucle complète : de la création et validation d'un graphe hors ligne, au débogage en direct sur un appareil connecté, jusqu'à l'édition visuelle avec la palette de kernels.

Notebook Jupyter + harnais bench

Créez le graphe dans un environnement notebook Jupyter. Rejouez-le sur des enregistrements de datasets, inspectez les formes d'onde et exécutez le harnais bench pour obtenir un score F1 par seuil de détection — plus des estimations de RAM, CPU et latence — avant de toucher un appareil.

Notebook Jupyter MSP — graphe MSP de comportement conducteur écrit sur des enregistrements de dataset, avec cellule TL;DR, schémas Plan A / Plan B et une cellule benchmark

Débogage en direct — msp-visualizer

Un outil React/TypeScript qui liste les graphes en cours, interroge la topologie des nœuds, affiche les temps de benchmark par kernel et diffuse des échantillons de signaux en direct via WebSocket. Aucun outillage supplémentaire requis sur un appareil de développement.

MSP Visualizer — inspecteur de graphe de signaux en direct montrant la topologie du graphe, le timing par kernel et la forme d'onde en direct

Designer MSP

Un canvas basé navigateur avec une palette de kernels. Glissez et connectez des nœuds kernel, validez la structure du graphe contre le schéma JSON en temps réel, puis exportez le .msp.yml consommé directement par le runtime.

Designer MSP — canevas navigateur avec nœuds noyau (signal_receiver, threshold, ratio, counter, probe, delayed_and, gnss) reliés en graphe behavior-over-revving, plus un panneau latéral montrant la validation de schéma JSON du .msp.yml

Envoyez-nous votre graphe de signaux — nous le câblons.

Boucle de développement

Du notebook au graphe déployé — une boucle reproductible.

La boucle de développement MSP est un cycle en quatre étapes qui réduit la distance entre la création hors ligne et le comportement sur appareil.

Étape 1

Créer et valider

Construisez le graphe dans l'environnement Jupyter. Rejouez-le sur des enregistrements de datasets et vérifiez visuellement les formes d'onde avant de valider dans un fichier YAML.

Étape 2

Score F1 contre dataset de référence

Exécutez le harnais bench contre un dataset annoté. Obtenez un score F1 par seuil de détection — reproductible entre exécutions et entre ingénieurs.

Étape 3

Estimation RAM / CPU / Latence

Le même harnais rapporte la consommation de ressources. L'estimation devient le contrat pour le build appareil — pas de surprise après le flash.

Étape 4

Déployer avec les résultats attendus

Poussez le graphe vers l'appareil via un appel de service. Le comportement en direct sur l'appareil correspond au score F1 hors ligne et à l'enveloppe de ressources validés aux étapes 2 et 3.

Architecture des signaux

Trois tiers, une API stable.

Une API stable de signaux nommés connecte les Tiers 2 et 3. Les entrées capteurs et bus du Tier 1 alimentent les signaux fondamentaux du Tier 2 ; les graphes de détection du Tier 3 consomment les noms, pas les flux bruts. Un nouveau capteur ou PID se propage uniquement dans le Tier 1.

Architecture de signaux MSP à trois tiers. Le Tier 1 contient les entrées capteurs et bus — Multi Stacks SubscribeData, GNSS, IMU et frames CAN bruts. Le Tier 1 alimente le Tier 2, qui contient la couche de signaux fondamentaux (vehicle.speed, gnss.latitude et autres). Le Tier 2 alimente le Tier 3, les 226 graphes de détection sur 21 domaines — choc, freinage brusque, ralenti et autres algorithmes spécifiques au domaine. Le Tier 3 publie vers trois consommateurs aval : le moteur de politique, le service de logs et le broker MQTT pour la sortie cloud.

flowchart TB
  T1[Tier 1 — capteurs et bus<br/>Multi Stacks SubscribeData<br/>GNSS · IMU · frames CAN]
  T2[Tier 2 — signaux fondamentaux<br/>vehicle.speed · gnss.latitude<br/>215+ signaux nommés]
  T3[Tier 3 — graphes de détection<br/>choc · freinage brusque · ralenti<br/>226 graphes, 21 domaines]
  T1 --> T2 --> T3
  T3 -->|publie| MEP[mos-event-processor]
  T3 -->|publie| LG[mos-logs]
  T3 -->|publie| MQ[broker MQTT]
Les changements de capteurs se propagent uniquement dans le Tier 1. Les auteurs de graphes Tier 3 consomment des signaux nommés, pas des flux matériels bruts.

Injection à l'exécution

Poussez un graphe sans flash de firmware.

API de service MSP
Méthode Description
LoadGraph Pousse un graphe .msp.yml vers le runtime en cours ; pas de redémarrage
EnableGraph Active un graphe chargé par nom
DisableGraph Suspend un graphe ; l'état est préservé
DropGraph Supprime un graphe et libère ses ressources
ListGraphs Énumère les graphes chargés avec leur statut de cycle de vie
GetGraphInfo Retourne la topologie et la liste de kernels d'un graphe

Piloter MSP depuis un conteneur

LoadGraph depuis n'importe quel client MQTT. Rust non requis.

L'appel de service MSP est accessible depuis un conteneur Python via le broker MQTT in-process. Un ingénieur produit pousse un nouveau graphe depuis un script Python — le runtime le valide et le permute en direct.

Conteneur Python · LoadGraph via MQTT

# dans n'importe quel conteneur Python — sans chaîne 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}),
)

Le même appel de service est disponible depuis C, C++, Go, Rust — ou depuis n'importe quel langage qui parle MQTT. Le runtime est à un conteneur de distance. Explorer le SDK pour le contrat de service complet.

Planificateur

Cinq catégories de cycle de vie pour le contrôle du cycle de service CPU.

Catégories de cycle de vie des graphes
Catégorie Comportement du planificateur
always_on Actif dès le démarrage ; jamais arrêté par le planificateur
event_spawned Démarré sur un événement nommé ; arrêt automatique à la fin
confidence_gated S'exécute seulement quand la confiance d'entrée dépasse le seuil
condition_gated Actif tant qu'une clé DB ou un signal remplit une condition
intermittent Activation périodique avec cycle de service configurable

Le planificateur active et arrête automatiquement les graphes selon la catégorie, gardant la charge CPU au ralenti faible sans gestion manuelle du cycle de vie dans le code applicatif.

Observabilité

Tap de signaux en direct et benchmarks par kernel.

msp-visualizer

Un outil React/TypeScript liste les graphes en cours, interroge la topologie des nœuds, affiche les temps de benchmark par kernel et diffuse des échantillons de signaux en direct via WebSocket. Aucun outillage supplémentaire requis sur un appareil de développement.

Signaux nommés comme API inter-graphes

Les signaux nommés — vehicle.speed, gnss.latitude et autres — sont l'API stable entre les graphes. Les auteurs de graphes aval consomment des signaux nommés, pas des flux matériels bruts ; les changements de capteurs ne se propagent pas dans le catalogue de graphes.

Catalogue de modules noyau

124 modules noyau sur 9 catégories.

La bibliothèque de modules noyau couvre toute la gamme du traitement du signal de télémétrie véhicule — de l'arithmétique de base et des chaînes de filtres à la géométrie GNSS, la détection d'événements et la gestion de l'énergie. Échantillon affiché ci-dessous ; l'ensemble complet est navigable depuis le designer MSP.

Math/arithmetic

18

Opérateurs scalaires et accumulateurs temporels.

  • Valeur absolue
  • Accumulateur
  • Dérivée
  • Intégrateur
  • Médiane
  • · et 13 de plus

Filters/DSP

23

Filtres IIR/FIR, ondelettes, ré-échantillonneurs, hystérésis.

  • Filtre Chebyshev type-II
  • Convolution
  • Suppresseur de composante DC
  • Sous-échantillonneur
  • Hystérésis
  • · et 18 de plus

Event detection

9

Primitives de seuil et de porte pour événements discrets.

  • Anti-rebond asymétrique
  • Porte d'événement
  • Détecteur de pic
  • Stabilité dans la bande
  • Seuil
  • · et 4 de plus

Vehicle/sensor

10

Interfaces GNSS, IMU, OBD et autres côté capteurs.

  • Source GNSS
  • Déplacement GNSS
  • Distance GNSS
  • Estimateur de gravité
  • Flux IMU
  • · et 5 de plus

Codec/IO

19

Compression, sérialisation, CSV et codeurs de trames.

  • Compression bzip2
  • Assemblage trame CAN
  • Compression trame CAN
  • Parseur CSV
  • Écrivain CSV
  • · et 14 de plus

Time/control

10

Bases de temps, planificateurs, machines à états.

  • Source d'horloge murale
  • Découpeur temporel
  • Lecture/écriture base de données
  • Tic périodique
  • Générateur de signal
  • · et 5 de plus

Geometry/algebra

4

Rotation 3-D, atan2, constructeurs de matrices.

  • atan2
  • Constructeur de matrice
  • Rotation 3-D
  • Transformation de rotation

Graph plumbing

26

Pub/sub entre graphes, compteurs, sondes.

  • Compteur
  • Écrivain DB
  • Drop
  • Fusion de flux
  • Sonde
  • · et 21 de plus

Energy/power

5

Ratios d'énergie, classifieurs de puissance, intégrateurs persistants.

  • Profil de distance
  • Ratio d'énergie
  • Intégrateur persistant
  • Classifieur de puissance
  • Publieur événement de puissance

Besoin d'un module noyau absent du catalogue ? Munic en ajoute par programme — parlez à l'ingénierie.

En contexte

MSP dans la chaîne de signaux MOS4.

MSP se situe entre le bus véhicule et le cloud. Multi Stacks livre les frames bruts ; MSP les transforme en signaux nommés ; le processeur d'événements et le broker MQTT les acheminent vers le cloud.

Plateforme no-code

MSP est l'un des moteurs no-code de MOS4. Explorez la surface no-code complète aux côtés du processeur d'événements et de la couche de configuration flotte.

Vue d'ensemble plateforme

Multi Stacks — entrée Tier 1

Multi Stacks décode les frames CAN bruts et les PIDs OBD et les publie comme entrées Tier 1 que les graphes MSP consomment.

Multi Stacks

OBDStacks — source de signaux OBD

OBDStacks alimente le flux de PIDs OBD dans les signaux Tier 1 de MSP sur les domaines diagnostics et groupe motopropulseur.

OBDStacks

SDK — poussez des graphes par programmation

Le SDK expose le contrat de service MSP complet. Poussez, activez et désactivez des graphes depuis n'importe quel conteneur ou intégration cloud.

Référence SDK

Apportez le signal que vous voulez extraire.

Montrez-nous le domaine véhicule et l'algorithme ; nous créerons le graphe avec vous sur l'appareil cible de votre choix.

Vous construisez sur MOS4 ?

Une réponse de l'équipe d'ingénierie, ~24 h. Pas de pitch, pas de NDA.

Parler à l'équipe