Présentation de BATCAM FX
Présentation du développement BATCAM FX
1. Introduction
BATCAM FX est une caméra acoustique temps réel de SM Instruments. Elle fournit conjointement une image optique d’une résolution de 1600×1200 et une carte de formation de voies (BF) de 40×30, ce qui permet de visualiser sur l’image la position d’où provient le son.
Ce document constitue le point de départ du développement d’une intégration avec BATCAM FX. Il présente d’un seul coup d’œil les interfaces fournies par l’appareil et décrit le flux de données ainsi que la méthode de connexion de la composition d’image en superposition, la tâche d’intégration la plus représentative. Les sujets détaillés tels que le contrôle des paramètres, l’intégration ROS 2 ou la mise à jour du micrologiciel renvoient chacun vers leur document dédié. Pour la structure globale du centre développeur et la documentation des autres produits (BATCAM FX2, FX Viewer), reportez-vous à Prise en main du centre développeur.
2. Aperçu des interfaces fournies
| Interface | Usage | Document associé |
|---|---|---|
| RTSP | Réception du flux vidéo brut de la caméra. À partir du micrologiciel 1.0.3, l’appareil peut également fournir en RTSP l’image en superposition qu’il compose lui-même. | Paramètres de superposition |
| WebSocket + Protobuf | Diffusion en temps réel de la formation de voies (BF Map), de l’audio et des résultats de classification des décharges partielles par IA (PRPD) | Ce document, Exemple Python Protobuf |
| REST API | Gestion des comptes, configuration de l’appareil (réseau, micrologiciel, redémarrage, informations sur l’appareil), déclenchement d’événements, paramètres de formation de voies et de superposition, ROS Domain ID | Playground de l’API BATCAM FX |
| ROS 2 | Réception de données et configuration basées sur les topics/actions (pris en charge à partir du micrologiciel de développement v1.0.3b) | Intégration ROS |
| Mise à jour du micrologiciel | Installation du micrologiciel via la page web ou le shell (SSH) | Mise à jour web, Mise à jour par shell |
La spécification complète des points de terminaison de l’API REST est consultable dans le Playground de l’API, où vous pouvez également effectuer les appels directement depuis le navigateur. Pour le format des messages transmis par WebSocket, reportez-vous au schéma fx-stream-protocol et au document Exemple Python Protobuf.
3. Flux de données de la composition d’image en superposition
Les données de BATCAM FX sont transmises sous la forme de données vidéo brutes de la caméra via RTSP et de données encodées avec le protocole Protobuf via WebSocket. Si vous souhaitez obtenir directement l’image en superposition, composez l’image selon l’ordre ci-dessous.

-
Recevez l’image brute depuis RTSP (
rtsp://{device_ip}/raw). -
Recevez via WebSocket le message Beamforming encodé au format Protobuf, puis décodez-le pour le convertir en un tableau (Float Array) composé de 1200 valeurs Float au total. Ce tableau correspond à la BF Map de structure
40x30aplatie en une structure1x1200, et il est transmis à une cadence de 25Hz. -
Interpolez le Float Array afin de générer l’image à superposer. La BF Map 40×30 est mappée sur l’image optique 1600×1200.
-
En combinant le flux vidéo RTSP et les données sonores reçues, vous pouvez générer en temps réel une image en superposition de Beamforming.
💡 Remarque : À partir du micrologiciel 1.0.3, BATCAM FX prend en charge la fourniture d’un flux RTSP dont l’image en superposition est composée par l’appareil lui-même ; une configuration sans composition manuelle est donc également possible. Pour la méthode de configuration, reportez-vous au document Paramètres de superposition et, pour le système de coordonnées de la BF Map et la désignation du Listening Point, au document Coordonnées du Listening Point.
4. Informations de connexion et authentification
Dans le tableau ci-dessous, {device_ip} désigne l’adresse IP de l’appareil. La configuration IP peut être consultée et modifiée via l’API REST (/setting/ip), et la version du micrologiciel de l’appareil peut être vérifiée via l’API de consultation des informations de l’appareil (/setting/status). Pour la spécification détaillée, reportez-vous au Playground de l’API.
| Élément | Valeur | Remarque |
|---|---|---|
| Flux vidéo RTSP | rtsp://{device_ip}/raw | Authentification utilisateur requise |
| Diffusion WebSocket | ws://{device_ip}/ws | Spécification du SubProtocol obligatoire |
| WebSocket SubProtocol | Subscribe | Selon les exemples, la notation en minuscules subscribe est également utilisée |
| REST API | http://{device_ip} | L’appareil expose directement l’API |
| Page de mise à jour du micrologiciel | http://{device_ip}/firmware | Voir Mise à jour web |
| Journal de mise à jour du micrologiciel | ws://{device_ip}/firmware/ws | Réception du journal de progression de la mise à jour |
| Méthode d’authentification | HTTP Basic | Commune à REST, RTSP et WebSocket |
BATCAM FX est livré avec deux comptes préconfigurés par défaut : admin et user. La création d’un compte s’effectue via le point de terminaison /auth/create, la consultation de la liste complète des comptes via /auth/all, et la consultation, la suppression ou la réinitialisation du mot de passe d’un compte individuel via /auth/account.
⚠️ Attention : Veillez à modifier le mot de passe par défaut d’usine avant toute utilisation.
Composition de l’en-tête Authorization — Si la bibliothèque WebSocket que vous utilisez prend en charge l’authentification, fournissez le Username et le Password ; si elle ne la prend pas en charge, ajoutez la clé Authorization à l’en-tête de la requête de connexion WebSocket et incluez-y la chaîne {username}:{password} encodée en base64.
Authorization: Basic base64({username}:{password})
# ex. : pour username=admin, password=passwordAuthorization: Basic YWRtaW46cGFzc3dvcmQ=Démarrage de l’abonnement (Subscribe) — Les messages ne sont pas reçus immédiatement après l’établissement de la connexion WebSocket : vous devez envoyer à la caméra un abonnement au flux de données souhaité à l’aide de l’objet Subscribe fourni par le code Protobuf pré-généré. Les Subscribe ID par flux sont les suivants.
| Subscribe ID | Message | Contenu | Fréquence de transmission |
|---|---|---|---|
| 0 | Beamforming | BF Map 40×30 (tableau Float 1×1200) | 25 Hz |
| 1 | WsAudio | Audio Float de 8000 échantillons (200 kHz × 40 ms) | 25 Hz |
| 2 | LPointAudio | Audio de formation de voies 3 canaux du Listening Point | 25 Hz |
| 3 | Prpd | Résultat de classification des décharges partielles par IA (micrologiciel v1.0.3c ou ultérieur, voir Classification PRPD par IA) | 4 Hz |
5. Exemples de code et schéma Protobuf
Un exemple d’échange de données à l’aide de Protobuf et de WebSocket est publié sur notre GitHub (exemple C#). Cet exemple couvre l’intégralité du processus de composition en superposition décrit ci-dessus et comprend également un exemple d’interface graphique (GUI).
L’exemple Python suivant illustre le déroulement, de la connexion WebSocket à l’envoi de l’abonnement puis au décodage du premier message.
import asyncioimport base64import websocketsimport fx_protocol_pb2 as pb # fichier pré-généré de fx-stream-protocol
async def stream(ip: str, user: str, password: str): cred = base64.b64encode(f"{user}:{password}".encode()).decode() headers = { "Authorization": f"Basic {cred}", "Sec-WebSocket-Protocol": "subscribe", } uri = f"ws://{ip}/ws"
async with websockets.connect(uri, additional_headers=headers, subprotocols=["subscribe"]) as ws: # Démarrer l'abonnement Beamforming (ID 0) sub = pb.Subscribe() sub.id = 0 sub.type = pb.Subscribe.SUBSCRIBE await ws.send(sub.SerializeToString())
async for raw in ws: event = pb.Event() event.ParseFromString(raw) if event.WhichOneof("data") == "beamforming": bf = event.beamforming print(f"bf count={len(bf.bf)} gain={bf.gain}") # bf count=1200
asyncio.run(stream("192.168.0.30", "admin", "password"))La configuration de l’environnement, la génération des bindings Python et les exemples détaillés par type de message sont présentés étape par étape dans le document Exemple Python Protobuf.
Le schéma et les fichiers pré-générés nécessaires à l’encodage/décodage de Protobuf sont disponibles sur notre GitLab OSS (fx-stream-protocol). Ce document se fonde sur les fichiers pré-générés du tag v0.0.2 ; pour les autres versions, consultez la liste des tags du dépôt.
6. Problèmes fréquents (Troubleshooting)
| Symptôme | Cause | Solution |
|---|---|---|
| La connexion WebSocket ne s’établit pas | SubProtocol non spécifié | Lors de la connexion, spécifiez impérativement le SubProtocol WebSocket sur Subscribe (option subprotocols de la bibliothèque). |
| La connexion s’établit mais aucun message n’est reçu | Message d’abonnement (Subscribe) non envoyé | Immédiatement après la connexion, envoyez l’objet Subscribe (id, type) pour démarrer l’abonnement. (Lien de référence C#) |
| La connexion est refusée avec une erreur d’authentification (401) | Informations d’authentification manquantes ou identifiants de compte incorrects | Fournissez le Username/Password à la fonction d’authentification de la bibliothèque (Lien de référence C#), ou composez directement l’en-tête Authorization selon le format ci-dessus. Vérifiez que le compte et le mot de passe sont corrects. |
7. Étapes suivantes
-
Playground de l’API BATCAM FX — Consultation de la spécification complète de l’API REST et appels directs
-
Paramètres de formation de voies — Filtre de fréquence, amplification, configuration du LPoint
-
Paramètres de superposition — Configuration de la composition de superposition par l’appareil lui-même (micrologiciel 1.0.3 ou ultérieur)
-
Coordonnées du Listening Point — Système de coordonnées de la BF Map et méthode de désignation du LPoint
-
Intégration ROS — Topics/actions ROS 2 et spécification des messages
-
ROS Domain ID — Configuration de ROS_DOMAIN_ID
-
Classification PRPD par IA — Réception des résultats de classification des décharges partielles basée sur l’IA
-
Mise à jour logicielle web · Mise à jour logicielle par shell — Méthodes d’installation du micrologiciel
-
Notes de version du micrologiciel — Modifications par version
-
Ressources de développement — Ensemble des dépôts d’exemples et des schémas