Documentation

VisionMax - Documentation technique

Reference pour integrateurs/developpeurs : interfaces, SDK, reglages.

Ports (reference)

ServicePort
Web (statique)8080
ROSBridge (WS)5010
HTTP video (MJPEG/H26x)8081+
RTSP5004+

Les valeurs exactes dependent de systemConfig/local/* (ex: camera0_RtspServer.json).

MerioProtocol

Chaine de communication MERIO : transport (serie/UDP) → frames (CRC/byte-stuffing) → payload → decodage/encodage selon un fichier de definition de protocole.

Transport

  • MerioTransportLayer : abstraction serie/UDP + framing + CRC16 + byte-stuffing.
  • Implementation : src/core_network_tourelle/include/merio_transport_layer.h

Decodage / mapping applicatif

  • AppMerioProtocol : parse des definitions (JSON) + encode/decode des blocs.
  • Implementation : src/core_device_linker/src/app_merio_protocol.*
  • Fichier de protocole (exemple) : config/TemisXL8V2.json

Structure du protocol_file (JSON)

Les fichiers config/*.json definissent des classes, des categories (ex: Commands, Status) et des blocs identifies par un id (souvent en hex).

{
  "protocol": {
    "classes": {
      "VisionMax": {
        "classCode": 25,
        "Commands": {
          "FollowMe": { "id": "0x00", "item": [ { "name": "CamId", "type": "UInt8" } ] }
        },
        "Status": {
          "Telemetry": { "id": "0x80", "item": [ { "name": "MODE", "type": "Uint8" } ] }
        }
      }
    }
  }
}

Format de trame (transport MERIO)

Details issus de src/core_network_tourelle/src/merio_transport_layer.cpp.

START: 0xAA
STUFF: 0x5A  (0xAA → 0x5A 0x00, 0x5A → 0x5A 0x5A)

Frame (unstuffed):
  LEN (uint8) = payload_len + 1
  CMD (uint8) = 0x00
  PAYLOAD (LEN-1 bytes)
  CRC16 (little-endian) over [LEN, CMD] + PAYLOAD, poly 0x1021, init 0

Topics (chainage typique)

Exemple issu des reglages (voir systemConfig/global/CommunicationInterface.json).

RX: network/receive_payload
TX: network/send_payload
Events: device_linker/data_changed, device_linker/data_changed_list
Command: device_linker/set_value

Composants ROS 2 (reference)

NetworkLayer (merio_communication)

Encapsule/transport la charge utile MERIO sur serie ou UDP.

  • Parametres : transport_mode, address, port
  • Topics : input_topic → envoi, output_topic → reception

Exemple : systemConfig/local/gimbal_NetworkLayer.json (serie) et systemConfig/local/controlStation_NetworkLayer.json (UDP).

CommunicationInterface (device_linker)

Decode/encode le payload applicatif via un fichier protocol_file et publie des valeurs (DeviceMessage).

  • Parametres cles : protocol_file, send_period_ms
  • RX/TX : topic_rx / topic_tx (UInt8MultiArray)

Exemples de protocoles : config/MilvusV2.json, config/VisionUnitV2.json.

ProxyGroundToGimbal (filter_proxy)

Proxy multi-connexion avec filtrage de paquets (utile pour relayer seulement certains IDs).

  • Parametres : proxy_connections (src→dst), filter_values
  • Format : un message peut contenir plusieurs paquets [size][payload...]

Exemple : systemConfig/global/ProxyGroundToGimbal.json.

VisionMax inclut un bridge MAVLink v2 oriente gimbal via le package merio_gimbal_mavlink. Objectif : echanger des commandes/etats MAVLink avec l'ecosysteme VisionMax.

Transport (UDP)

  • udp.bind_port : port local d'ecoute
  • udp.target_addr : adresse IP/hostname cible

IDs & heartbeat

  • ids.system_id_mode : follow_autopilot (adopte le SYSID detecte)
  • ids.system_id, ids.component_id

Interfaces ROS

  • dvmsg_topic_in : defaut /gimbal/device_linker/data_changed (DeviceMessage)
  • dvmsg_topic_out : defaut /gimbal/device_linker/set_value (DeviceMessage)

Capabilites

  • caps.has_roll_axis
  • caps.supports_infinite_yaw
Exemple (activation)
ros2 run merio_gimbal_mavlink merio_gimbal_mavlink --ros-args \
  -p udp.bind_port:=<BIND_PORT> \
  -p udp.target_addr:="<TARGET_ADDR>" \
  -p udp.target_port:=<TARGET_PORT> \
  -p ids.system_id_mode:=follow_autopilot

Reference dialect MAVLink : config/minimal.xml. Dependence : libmavlink-dev.

Besoin d'aide ?

Contactez-nous si quelque chose bloque pendant l'integration.

Notre équipe technique est là pour vous aider à intégrer VisionMax à vos systèmes.

    Documentation technique VisionMax