VisionMax - Documentation technique
Reference pour integrateurs/developpeurs : interfaces, SDK, reglages.
Ports (reference)
| Service | Port |
|---|---|
| Web (statique) | 8080 |
| ROSBridge (WS) | 5010 |
| HTTP video (MJPEG/H26x) | 8081+ |
| RTSP | 5004+ |
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 0Topics (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_valueComposants 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.
MAVLink
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'ecouteudp.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_axiscaps.supports_infinite_yaw
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_autopilotReference dialect MAVLink : config/minimal.xml. Dependence : libmavlink-dev.
Contactez-nous si quelque chose bloque pendant l'integration.
Notre équipe technique est là pour vous aider à intégrer VisionMax à vos systèmes.