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.
Umfang
226 Graphen über 21 Fahrzeugdomänen.
| 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.
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-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.
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]
Laufzeit-Injektion
Einen Graphen ohne Firmware-Flash pushen.
| 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.
| 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
18Scalar operators and time-domain accumulators.
- Absolute value
- Accumulator
- Derivative
- Integrator
- Median
- · und 13 mehr
Filters/DSP
23IIR/FIR filters, wavelets, resamplers, hysteresis.
- Chebyshev type-II filter
- Convolution
- DC offset remover
- Downsampler
- Hysteresis
- · und 18 mehr
Event detection
9Threshold and gating primitives for discrete events.
- Asymmetric debounce
- Event gate
- Peak detector
- In-band stability
- Threshold
- · und 4 mehr
Vehicle/sensor
10GNSS, IMU, OBD, and other sensor-side interfaces.
- GNSS source
- GNSS displacement
- GNSS distance
- Gravity estimator
- IMU stream
- · und 5 mehr
Codec/IO
19Compression, serialisation, CSV, and frame coders.
- bzip2 compress
- CAN-frame assemble
- CAN-frame compress
- CSV parser
- CSV writer
- · und 14 mehr
Time/control
10Time bases, schedulers, state machines.
- Wall-clock source
- Time-window cutter
- Database read/write
- Periodic ticker
- Signal generator
- · und 5 mehr
Geometry/algebra
43-D rotation, atan2, matrix builders.
- atan2
- Matrix builder
- 3-D rotation
- Rotation transform
Graph plumbing
26Pub/sub between graphs, counters, probes.
- Counter
- DB writer
- Drop
- Merge streams
- Probe
- · und 21 mehr
Energy/power
5Energy 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.
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.
OBDStacks — OBD-Signalquelle
OBDStacks speist den OBD-PID-Stream in MSP-Tier-1-Signale über die Diagnose- und Antriebsstrang-Domänen.
SDK — Graphen programmatisch pushen
Das SDK exponiert den vollständigen MSP-Servicevertrag. Graphen von jedem Container oder Cloud-Integration pushen, aktivieren und deaktivieren.
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.