Plattform · MSP

Fahrzeugsignalverarbeitung als YAML-Graph.

MSP ist die MOS4-Signalverarbeitungs-Engine. Ein Graph aus typisierten Kernel-Knoten läuft kontinuierlich auf dem Gerät über 21 Fahrzeugdomänen. Bearbeiten Sie eine .msp.yml-Datei und pushen Sie sie über einen Serviceaufruf — kein Rust-Neukompilieren, kein Firmware-Flash.

System · always-on Datenfluss
Signalverarbeitungsgraph auf dunklem Blueprint-Hintergrund — Beschleunigungssensor- und Gyroskop-Quellen links speisen eine verkettete Pipeline (Filter, FFT, Schwellenwert) und drei Senken (Event, Log, MQTT Publish); ein Amber-Zweig läuft durch einen KI/ML-Inferenzknoten
MSP-Visualizer — Live-Signalgraph-Inspektor mit Wellenform, Spektrogramm und Schwellenwert-Marker

Umfang

226 Graphen über 21 Fahrzeugdomänen.

226 vorgefertigte Graphen Aufprall, EV-Batterie, Kraftstoff, GNSS, Flotte und mehr
21 Fahrzeugdomänen von Aufprallerkennung bis maritim/Off-Highway
124 Kernel-Module über 9 Signalverarbeitungskategorien
215+ benannte Inter-Graph-Signale stabile API über die Basisignalschicht
<10% CPU im Dauerbetrieb repräsentativer Produktionsgraphensatz auf modem-class-Hardware
21 Fahrzeugdomänen im MSP-Graphenkatalog
Domäne Beispielgraphen
Aufprall & Schock Stoßerkennung, FNOL-Trigger
EV-Batterie Ladezustand, Degradationsindex
Kraftstoff Verbrauchsrate, Tankpegelerfassung
GNSS & Straße Tripsegmentierung, Straßentypklassifizierung
Fahrverhalten Harsh Braking, Kurven-Score
Vibration Predictive-Maintenance-Verschleißindex
Flotte Leerlauferkennung, Betriebsstundenzähler
Spannung & Strom Batteriegesundheit, Wake-on-Threshold
CAN-Bandbreite Bus-Last-Messung, Dezimierung
Temperatur Thermische Gradienten, Kabinenkomfort
Geschwindigkeit & Kinematik Übergeschwindigkeits-Alarme, Beschleunigungshüllkurven
Motor & Antrieb Drehzahlanalyse, Drehmomentschätzung
Geofence-Events Zonen-Eintrittssignalgenerierung
Fracht & Gewicht Achslastschätzungssignale
Umgebung Feuchtigkeit, Außentemperatur
TPMS Reifendrucktrendanalyse
Diagnose DTC-Präsenzsignal, Fehlerkorrelation
Anhänger Ankoppeln/Abkoppeln, Beleuchtungszustand
Sicherheit Sicherheitsgurt, Tür-offen-Event
Maritim / Off-Highway Motorstunden, Tanksignale

Drei Werkzeuge

Verfassen. Debuggen. Gestalten.

Der MSP-Entwicklungsworkflow umfasst drei Werkzeuge, die den vollständigen Zyklus abdecken: vom Verfassen und Validieren eines Graphen offline bis zum Live-Debuggen auf einem verbundenen Gerät bis zum visuellen Bearbeiten mit der Kernel-Palette.

Jupyter-Notebook + Bench-Harness

Den Graphen in einer Jupyter-Notebook-Umgebung verfassen. Gegen Dataset-Aufzeichnungen abspielen, Wellenformen inspizieren und den bench-Harness ausführen, um einen F1-Score pro Erkennungsschwellenwert — plus RAM-, CPU- und Latenzschätzungen — zu erhalten, bevor ein Gerät berührt wird.

MSP Jupyter-Notebook — Fahrverhaltens-MSP-Graph gegen Dataset-Aufzeichnungen erstellt, mit TL;DR-Markdown-Zelle, Plan-A-/Plan-B-Graph-Diagrammen und einer Benchmark-Zelle

Live-Debug — msp-visualizer

Ein React/TypeScript-Werkzeug, das laufende Graphen auflistet, Knotentopologie abfragt, per-Kernel-Benchmark-Zeiten anzeigt und Live-Signalproben über WebSocket streamt. Kein zusätzliches Tooling auf einem Entwicklungsgerät erforderlich.

MSP-Visualizer — Live-Signalgraph-Inspektor mit Graphtopologie, per-Kernel-Timing und Live-Wellenform

MSP-Designer

Eine browserbasierte Leinwand mit einer Kernel-Palette. Kernel-Knoten ziehen und verbinden, die Graphstruktur in Echtzeit gegen das JSON-Schema validieren, dann die .msp.yml exportieren, die direkt von der Laufzeit verwendet wird.

MSP-Designer — Browser-Canvas mit Kernel-Knoten (signal_receiver, threshold, ratio, counter, probe, delayed_and, gnss), die zu einem Behavior-over-revving-Graphen verdrahtet sind, plus Seitenpanel mit JSON-Schema-Validierung der .msp.yml

Senden Sie uns Ihren Signalgraphen — wir verdrahten ihn.

Entwicklungszyklus

Vom Notebook zum deployt Graphen — ein reproduzierbarer Zyklus.

Der MSP-Entwicklungs-SOTA ist ein Vier-Schritt-Zyklus, der die Distanz zwischen Offline-Authoring und On-device-Verhalten schließt.

Schritt 1

Verfassen und validieren

Den Graphen in der Jupyter-Umgebung aufbauen. Gegen Dataset-Aufzeichnungen abspielen und Wellenformen prüfen, bevor eine YAML-Datei festgeschrieben wird.

Schritt 2

F1-Score gegen Benchmark-Dataset

Den bench-Harness gegen ein beschriftetes Dataset ausführen. Einen F1-Score pro Erkennungsschwellenwert erhalten — reproduzierbar über Ausführungen und Engineers hinweg.

Schritt 3

RAM / CPU / Latenzschätzung

Derselbe Harness meldet den Ressourcenverbrauch. Die Schätzung wird zum Vertrag für den Geräte-Build — keine Überraschungen nach dem Flash.

Schritt 4

Mit erwarteten Ergebnissen deployen

Den Graphen über einen Serviceaufruf auf das Gerät pushen. Live-Verhalten auf dem Gerät entspricht dem Offline-F1-Score und der in Schritten 2 und 3 validierten Ressourcen-Envelope.

Signalarchitektur

Drei Tiers, eine stabile API.

Eine stabile API benannter Signale verbindet Tier 2 und Tier 3. Tier-1-Sensor- und Bus-Eingaben speisen Tier-2-Basissignale; Tier-3-Erkennungsgraphen verwenden die Namen, nicht die Rohdatenströme. Ein neuer Sensor oder PID propagiert nur in Tier 1.

Drei-Tier-MSP-Signalarchitektur. Tier 1 enthält Sensor- und Bus-Eingaben — Multi Stacks SubscribeData, GNSS, IMU und rohe CAN-Frames. Tier 1 speist Tier 2, das die Basisignalschicht (vehicle.speed, gnss.latitude und andere) enthält. Tier 2 speist Tier 3, die 226 Erkennungsgraphen über 21 Domänen — Aufprall, Harsh-Brake, Leerlauf und andere domänenspezifische Algorithmen. Tier 3 publiziert zu drei nachgelagerten Konsumenten: der Policy-Engine, dem Log-Service und dem MQTT-Broker für Cloud-Egress.

flowchart TB
  T1[Tier 1 — Sensor und Bus<br/>Multi Stacks SubscribeData<br/>GNSS · IMU · CAN-Frames]
  T2[Tier 2 — Basisignale<br/>vehicle.speed · gnss.latitude<br/>215+ benannte Signale]
  T3[Tier 3 — Erkennungsgraphen<br/>crash · harsh-brake · idle<br/>226 Graphen, 21 Domänen]
  T1 --> T2 --> T3
  T3 -->|publish| MEP[mos-event-processor]
  T3 -->|publish| LG[mos-logs]
  T3 -->|publish| MQ[MQTT-Broker]
Sensor-Änderungen propagieren nur in Tier 1. Tier-3-Graph-Autoren verwenden benannte Signale, nicht rohe Hardware-Streams.

Laufzeit-Injektion

Einen Graphen ohne Firmware-Flash pushen.

MSP-Service-API
Methode Beschreibung
LoadGraph Einen .msp.yml-Graphen in die laufende Laufzeit pushen; kein Neustart
EnableGraph Einen geladenen Graphen nach Name aktivieren
DisableGraph Einen Graphen pausieren; Zustand bleibt erhalten
DropGraph Einen Graphen entfernen und seine Ressourcen freigeben
ListGraphs Geladene Graphen mit Lifecycle-Status aufzählen
GetGraphInfo Topologie und Kernel-Liste für einen Graphen zurückgeben

MSP aus einem Container steuern

LoadGraph von jedem MQTT-Client. Kein Rust erforderlich.

Der MSP-Serviceaufruf ist von einem Python-Container über den In-Process-MQTT-Broker erreichbar. Ein Produktengineer pusht einen neuen Graphen aus einem Python-Skript — die Laufzeit validiert und tauscht ihn live.

Python-Container · LoadGraph über MQTT

# innerhalb eines beliebigen Python-Containers — kein Rust-Toolchain
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}),
)

Derselbe Serviceaufruf ist von C, C++, Go, Rust verfügbar — oder von jeder Sprache, die MQTT spricht. Die Laufzeit ist einen Container entfernt. Das SDK erkunden für den vollständigen Servicevertrag.

Scheduler

Fünf Lifecycle-Kategorien für CPU-Duty-Kontrolle.

Graph-Lifecycle-Kategorien
Kategorie Scheduler-Verhalten
always_on Ab Boot aktiv; vom Scheduler nie gestoppt
event_spawned Bei einem benannten Event gestartet; nach Abschluss automatisch gestoppt
confidence_gated Läuft nur, wenn die Eingabe-Konfidenz den Schwellenwert überschreitet
condition_gated Aktiv, solange ein DB-Schlüssel oder Signal eine Bedingung erfüllt
intermittent Periodische Aktivierung mit konfigurierbarem Tastverhältnis

Der Scheduler aktiviert und stoppt Graphen automatisch basierend auf der Kategorie und hält die CPU-Last im Leerlauf niedrig ohne manuelle Lifecycle-Verwaltung im Anwendungscode.

Beobachtbarkeit

Live-Signal-Tap und per-Kernel-Benchmarks.

msp-visualizer

Ein React/TypeScript-Werkzeug listet laufende Graphen auf, fragt Knotentopologie ab, zeigt per-Kernel-Benchmark-Zeiten an und streamt Live-Signalproben über WebSocket. Kein zusätzliches Tooling auf einem Entwicklungsgerät erforderlich.

Benannte Signale als Inter-Graph-API

Benannte Signale — vehicle.speed, gnss.latitude und andere — sind die stabile API zwischen Graphen. Nachgelagerte Graph-Autoren verwenden benannte Signale, keine rohen Hardware-Streams; Sensor-Änderungen propagieren nicht durch den Graphenkatalog.

Kernel-Katalog

124 Kernel-Module über 9 Kategorien.

Die Kernel-Bibliothek deckt das volle Spektrum der Fahrzeug-Telemetrie-Signalverarbeitung ab — von einfacher Arithmetik und Filterketten bis zu GNSS-Geometrie, Event-Erkennung und Energieverwaltung. Auswahl unten gezeigt; der vollständige Satz ist im MSP-Designer durchsuchbar.

Math/arithmetic

18

Scalar operators and time-domain accumulators.

  • Absolute value
  • Accumulator
  • Derivative
  • Integrator
  • Median
  • · und 13 mehr

Filters/DSP

23

IIR/FIR filters, wavelets, resamplers, hysteresis.

  • Chebyshev type-II filter
  • Convolution
  • DC offset remover
  • Downsampler
  • Hysteresis
  • · und 18 mehr

Event detection

9

Threshold and gating primitives for discrete events.

  • Asymmetric debounce
  • Event gate
  • Peak detector
  • In-band stability
  • Threshold
  • · und 4 mehr

Vehicle/sensor

10

GNSS, IMU, OBD, and other sensor-side interfaces.

  • GNSS source
  • GNSS displacement
  • GNSS distance
  • Gravity estimator
  • IMU stream
  • · und 5 mehr

Codec/IO

19

Compression, serialisation, CSV, and frame coders.

  • bzip2 compress
  • CAN-frame assemble
  • CAN-frame compress
  • CSV parser
  • CSV writer
  • · und 14 mehr

Time/control

10

Time bases, schedulers, state machines.

  • Wall-clock source
  • Time-window cutter
  • Database read/write
  • Periodic ticker
  • Signal generator
  • · und 5 mehr

Geometry/algebra

4

3-D rotation, atan2, matrix builders.

  • atan2
  • Matrix builder
  • 3-D rotation
  • Rotation transform

Graph plumbing

26

Pub/sub between graphs, counters, probes.

  • Counter
  • DB writer
  • Drop
  • Merge streams
  • Probe
  • · und 21 mehr

Energy/power

5

Energy ratios, power classifiers, persistent integrators.

  • Distance profile
  • Energy ratio
  • Persistent integrator
  • Power classifier
  • Power event publisher

Brauchen Sie ein Kernel-Modul, das nicht im Katalog ist? Munic fügt neue Kernel-Module pro Programm hinzu — sprechen Sie mit dem Engineering-Team über den Algorithmus und den Signalvertrag.

Im Kontext

MSP in der MOS4-Signalkette.

MSP sitzt zwischen dem Fahrzeugbus und der Cloud. Multi Stacks liefert Rohdaten-Frames; MSP transformiert sie in benannte Signale; der Event-Processor und der MQTT-Broker tragen sie zur Cloud.

No-Code-Plattform

MSP ist eine von zwei No-Code-Engines in MOS4. Die vollständige No-Code-Oberfläche neben dem Event-Processor und der Flotten-Config-Schicht erkunden.

Plattformübersicht

Multi Stacks — Tier-1-Eingabe

Multi Stacks dekodiert rohe CAN-Frames und OBD-PIDs und publiziert sie als Tier-1-Eingaben, auf die MSP-Graphen abonnieren.

Multi Stacks

OBDStacks — OBD-Signalquelle

OBDStacks speist den OBD-PID-Stream in MSP-Tier-1-Signale über die Diagnose- und Antriebsstrang-Domänen.

OBDStacks

SDK — Graphen programmatisch pushen

Das SDK exponiert den vollständigen MSP-Servicevertrag. Graphen von jedem Container oder Cloud-Integration pushen, aktivieren und deaktivieren.

SDK-Referenz

Bringen Sie das Signal, das Sie extrahieren möchten.

Zeigen Sie uns die Fahrzeugdomäne und den Algorithmus; wir verfassen den Graphen mit Ihnen auf einem Zielgerät Ihrer Wahl.

Bauen Sie auf MOS4?

Eine Antwort vom Engineering-Team, ~24 h. Kein Deck, kein NDA.

Mit Engineering sprechen