Comparatif

MOS4 vs ROS2

ROS2 est un middleware robotique. MOS4 héberge vos nœuds rclcpp et rclpy existants sans modification dans un conteneur supervisé, fait le bridge des topics DDS vers l’EventBus typé, et ajoute autour l’OTA flotte, les stacks de protocoles véhicule et l’observabilité.

Graphe de nœuds ROS2 enveloppé dans le contour d’un conteneur MOS4 — accent ambré sur la bordure du conteneur

Chemins d’intégration

Bridge ou sidecar — nœuds inchangés dans les deux cas.

Deux flux d’intégration. Flux A : le micro service bridge mos-ros2 rejoint le graphe DDS client comme pair RTPS, découvre les topics et les relaie comme événements protobuf EventBus aux composants MOS4. Flux B : le superviseur MOS4 gère un conteneur sidecar ROS2 qui héberge les nœuds rclcpp et rclpy sans dépendance au SDK MOS, communiquant avec le bus MOS4 via loopback MQTT.

flowchart TB
  subgraph A["Flux A — bridge (mos-ros2 comme pair RTPS)"]
    R1[nœud rclcpp / rclpy] -->|topic DDS| Br[micro service bridge mos-ros2] -->|EventBus protobuf| Mc[Composant MOS4]
  end
  subgraph B["Flux B — sidecar (nœuds sans modification)"]
    Sup[Superviseur MOS4] --> Side[Conteneur sidecar ROS2]
    Side --> R2[nœud rclcpp 1]
    Side --> R3[nœud rclpy 2]
    Side <-->|loopback MQTT| Bus[Bus MOS4]
  end

Côte à côte

Comparaison des capacités.

Hébergement de nœud ROS2 Les nœuds ROS2 s’exécutent dans l’environnement d’exécution ROS2. Pas de superviseur de cycle de vie externe. MOS4 Les nœuds rclcpp/rclpy existants s’exécutent sans modification dans un conteneur sidecar géré par MCM. Pas de dépendance au SDK MOS, pas de recompilation requise.
IPC ROS2 Pub/sub DDS et RTPS sur UDP. Schéma dans des fichiers .msg et .srv. MOS4 Bus protobuf natif. Le bridge mos-ros2 traduit les topics DDS en événements EventBus typés. Micro service à micro service sur la même puce : iceoryx2 dmabuf + mémoire partagée (zero-copy). Bridge ROS2 : iceoryx2 DDS en intégralité via mos-frame.
QoS DDS ROS2 Surface QoS DDS complète : RELIABILITY, DURABILITY, HISTORY, DEADLINE, LIVELINESS. MOS4 BEST_EFFORT et RELIABLE supportés. Quatre profils nommés : sensor_data, pose_estimate, actuation_cmd, latched_config. Matrice QoS complète sur demande.
Dérive de schéma ROS2 .msg et .proto maintenus séparément ; dérive détectée au runtime au décodage de message. MOS4 proto2ros dérive les définitions ROS2 .msg et le glue CDR depuis les fichiers .proto MOS au build. Les changements de schéma dans mos-interfaces se propagent automatiquement ; la dérive est détectée à la compilation.
Superviseur de cycle de vie ROS2 Cycle de vie managé par nœud (lifecycle nodes ROS2). Pas de superviseur au niveau flotte. MOS4 Superviseur MOS4 : démarrage ordonné par dépendances, on_start/on_stop/hot-swap, watchdog par composant, redémarrage automatique. Sidecar ROS2 supervisé comme un conteneur.
OTA flotte ROS2 Hors périmètre. Pas de mécanisme OTA flotte dans ROS2. MOS4 mos-update : paquets delta signés Ed25519, partitions A/B, rollback automatique via bootcount. OTA par cohortes et canary via le compagnon cloud Munic.
Protocoles véhicule ROS2 À apporter votre propre driver. Pas de stacks de protocoles véhicule natifs. MOS4 obdstacks-v2 : 16 protocoles (CAN, CAN-FD, DoIP, UDS, J1939, ISOBUS, et plus). Valeurs de signaux décodées via l’appel de service SubscribeData — stack JSON déclaratif, pas de recompilation Rust.
Observabilité ROS2 ros2_tracing et événements de cycle de vie par nœud. Pas de pile d’observabilité flotte. MOS4 ObservabilityRegistry : histogrammes de temps de réponse par composant, compteurs d’erreurs, événements de cycle de vie. Export OpenTelemetry OTLP, propagation W3C Trace Context, batching d’erreurs structurées mos-sentry.

Source — colonne ROS2 depuis docs.ros.org; MOS4 depuis /fr/architecture.

Mappings de capteurs

Mappings canoniques MOS4 ↔ ROS2.

Le registre mappings/mos-ros2-canonical.yaml impose le contrat de mapping au build via la CLI mos-ros2-mapping. Une porte CI de matrice de couverture bloque les merges qui réduisent la couverture de mapping.

Mappings canoniques de capteurs MOS4 vers ROS2
Événement EventBus MOS4 Topic ROS2 Type ROS2
mos.events.gnss.Fix /sensors/gnss/fix sensor_msgs/NavSatFix
mos.events.imu.Raw /sensors/imu/raw sensor_msgs/Imu
mos.events.vslam.Pose /sensors/vslam/pose geometry_msgs/PoseStamped

ROS2 Jazzy LTS (supporté jusqu’en 2029) est la distro validée. Pairs Cyclone DDS et Fast DDS testés.

FAQ

Les questions qu’on nous pose le plus.

  • Puis-je conserver mes nœuds ROS2 existants ?

    Oui — c’est le design. Flux B (sidecar) : le superviseur MOS4 exécute un conteneur sidecar qui héberge les nœuds rclcpp/rclpy sans aucune dépendance au SDK MOS ni recompilation. Flux A (bridge) : le micro service mos-ros2 rejoint le graphe DDS client comme pair RTPS standard et relaie les topics comme événements EventBus et méthodes de service. Changements de code des nœuds clients : zéro.

  • Pourquoi ne pas simplement utiliser ROS2 sur une plateforme Linux légère ?

    ROS2 est un middleware robotique, pas un système d’exploitation embarqué. Il ne fournit pas de chemin OTA flotte, de stacks de protocoles véhicule, de bundle d’observabilité ni de superviseur de cycle de vie de composants au niveau OS. MOS4 fournit ces primitives et héberge les nœuds ROS2 à l’intérieur.

  • Le bridge est-il un goulot d’étranglement ?

    C’est une étape de traduction par topic dans le budget IPC standard de composant. Pour les boucles internes serrées, le schéma canonique consiste à les garder à l’intérieur du sidecar ROS2. Seuls les topics inter-domaines traversent le bridge.

  • Quelles policies QoS DDS sont supportées ?

    Les policies de fiabilité BEST_EFFORT et RELIABLE sont supportées. Quatre profils nommés — sensor_data, pose_estimate, actuation_cmd, latched_config — sont configurables par entrée de mapping et couvrent les schémas robotiques les plus courants. Matrice QoS complète disponible sur demande.

  • MOS4 livre-t-il sa propre implémentation DDS ?

    Non pour le chemin sidecar. Le sidecar utilise la couche DDS standard de ROS2 — Cyclone DDS ou Fast DDS. Pour le bridge (Flux A), le micro service mos-ros2 utilise iceoryx2 DDS en intégralité via mos-frame — basé sur rustdds, sans r2r ni FFI rcl, sans libstdc++.

  • Quand ROS2-only bat-il MOS4 + ROS2 ?

    Quand le programme est un prototype de recherche mono-véhicule sans flotte, sans intégration de bus véhicule au-delà d’un driver CAN, et sans exigence OTA. Les programmes qui livrent à une flotte de devices en production bénéficient typiquement de la couche MOS4 autour des nœuds.

  • Est-ce qualifié pour les déploiements AGV ou robots mobiles ?

    mos-ros2 exécute rclcpp/rclpy sans modification dans MCM — le schéma sidecar validé. Pour la qualification production AGV et robotique, parlez à l’ingénierie.

Apportez votre stack ROS2.

Un appel de 30 minutes avec l’ingénierie. Nous planifierons le chemin bridge ou sidecar pour vos nœuds et discuterons de la qualification AGV ou robotique.

Vous construisez sur MOS4 ?

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

Parler à l'équipe