J'ai vu des intégrateurs perdre des heures à faire bouger une caméra PTZ à gauche, à droite, en haut, en bas — en essayant d'atteindre l'angle exact dont ils ont besoin. Il existe une meilleure façon.
Oui, vous pouvez obtenir un contrôle de positionnement absolu1 sur les caméras PTZ de qualité industrielle. Au lieu d'envoyer des commandes “bouger à gauche” ou “bouger à droite”, vous envoyez des coordonnées exactes en degrés — comme Pan 180°, Tilt 45° — et la caméra se positionne instantanément à cet endroit précis. Cela nécessite du matériel avec des encodeurs absolus et un support de protocole via ONVIF, Pelco-D5, ou API HTTP6.

Le positionnement absolu change tout dans la conception d'un système de surveillance. C'est la base du suivi radar, de l'intégration de cartes SIG et de la réponse automatisée pilotée par l'IA. Ci-dessous, je détaille les questions clés que les intégrateurs me posent le plus souvent sur cette fonctionnalité — et je vous donne les vraies réponses techniques.
Table des matières
Puis-je commander à la PTZ d'aller exactement à Pan 180°, Tilt 45° via une chaîne ONVIF ?
Je reçois cette question presque chaque semaine de la part des intégrateurs de systèmes. Ils veulent savoir s'ils peuvent envoyer une seule commande et faire en sorte que la caméra atteigne une coordonnée exacte. La réponse est importante car tout leur flux de travail d'automatisation en dépend.
Oui, vous pouvez. ONVIF Profil S11 et Profil T ONVIF12 prennent tous deux en charge la commande DéplacementAbsolu . Vous envoyez une requête SOAP avec des valeurs Pan, Tilt et Zoom normalisées, et la caméra se déplace directement vers cette position exacte. L'exigence clé est que votre matériel PTZ doit disposer d' encodeurs absolus2 intégrés dans les moteurs.

Comment fonctionne la commande AbsoluteMove d'ONVIF
Le protocole ONVIF utilise des valeurs normalisées au lieu de degrés bruts. Cela signifie que les valeurs Pan et Tilt vont de -1.0 à +1.0, et que le Zoom va de 0.0 à 1.0. Votre VMS ou plateforme d'automatisation convertit les degrés du monde réel en ces valeurs normalisées avant d'envoyer la commande.
Voici à quoi ressemble une requête SOAP ONVIF typique en pratique : DéplacementAbsolu Voici à quoi ressemble une requête SOAP ONVIF typique en pratique :
<AbsoluteMove xmlns="http://www.onvif.org/ver20/ptz/wsdl">
<ProfileToken>MainStream</ProfileToken>
<Position>
<PanTilt x="0.0" y="0.25" />
<Zoom x="0.5" />
</Position>
</AbsoluteMove> Dans cet exemple, x="0.0" correspond à un Pan de 180° (le point médian d'une plage de 360°), et y="0.25" correspond à un Tilt de 45° (un quart de la course vers le haut à partir du centre). Le mappage exact dépend du système de coordonnées de la caméra, mais la logique est la même pour tous les appareils conformes à ONVIF.
Le matériel derrière la commande
Envoyer la commande est la partie facile. La partie difficile est de s'assurer que la caméra se positionne réellement là où vous lui avez dit d'aller. Cela se résume à un composant : l' encodeur absolu.
Il existe deux types d'encodeurs dans les moteurs PTZ :
| Fonctionnalité | Encodeur Incrémental | Encodeur Absolu |
|---|---|---|
| Position à la mise sous tension | Inconnue — doit se réinitialiser | Connu immédiatement |
| Dérive dans le temps | Accumule l'erreur | Pas de dérive |
| Coût | Plus bas | Plus élevé |
| Cas d'utilisation | PTZ consommateur, préréglages de base | PTZ industriel, intégration radar |
| Précision | $\pm 1.0^{\circ}$ typique | $\pm 0.1^{\circ}$ ou mieux |
Une caméra avec des encodeurs incrémentiels3 peut toujours accepter une DéplacementAbsolu commande. Mais après un cycle d'alimentation, elle perd son point de référence. Elle doit exécuter une routine de “référencement” — tourner jusqu'à un arrêt physique — avant de savoir où elle se trouve à nouveau. Pendant ce temps, votre système d'automatisation est aveugle.
Un encodeur absolu connaît sa position exacte dès la mise sous tension. Pas de référencement. Pas de délai. C'est pourquoi je recommande toujours les encodeurs absolus pour tout projet impliquant un suivi automatisé ou une intégration SIG.
Formule de conversion : Degrés en valeurs normalisées
Si votre plateforme d'automatisation fonctionne en degrés mais qu'ONVIF a besoin de valeurs normalisées, voici les calculs de base :
$$x_{pan} = \frac{(\text{Cible Pan} – 180)}{180}$$
$$y_{tilt} = \frac{\text{Cible Tilt}}{90}$$
Donc pour Pan $180^{\circ}$, Tilt $45^{\circ}$ :
- $x_{pan} = \frac{(180 – 180)}{180} = 0.0$
- $y_{tilt} = \frac{45}{90} = 0.5$
Cette formule fonctionne pour la plupart des caméras, mais vérifiez toujours le mappage des coordonnées du fabricant. Certaines caméras définissent $0^{\circ}$ comme le Nord, d'autres le définissent comme la position de mise sous tension.
La fonctionnalité de positionnement absolu permet-elle une meilleure intégration avec les cartes SIG ?
J'ai vu des projets échouer parce que l'intégrateur ne parvenait pas à lier son logiciel de cartographie à la caméra PTZ. Ils avaient un beau tableau de bord SIG, mais la caméra restait là sans rien faire lorsqu'une alarme se déclenchait. C'est un gaspillage de budget douloureux.
Le positionnement absolu est la clé qui déverrouille le véritable intégration SIG4. Lorsque votre caméra signale ses angles de panoramique et d'inclinaison exacts, votre logiciel SIG peut calculer exactement ce que la caméra regarde sur la carte. Et lorsque vous cliquez sur un point de la carte, le logiciel peut convertir cette coordonnée GPS en une commande de panoramique/inclinaison et y envoyer la caméra instantanément.

Les mathématiques derrière la conversion SIG vers PTZ
Pour lier une carte SIG à une caméra PTZ, vous avez besoin de trois informations :
- Emplacement GPS de la caméra — latitude et longitude de la position de montage de la caméra.
- Orientation de montage de la caméra — quelle direction de boussole la caméra pointe à $0^{\circ}$.
- Emplacement GPS de la cible — le point sur la carte que vous souhaitez que la caméra regarde.
Avec ces trois entrées, vous calculez l' azimut13 (cap de la boussole) de la caméra vers la cible :
$$\text{Azimut} = \arctan2\left(\sin(\Delta\lambda) \cdot \cos(\phi_2),\ \cos(\phi_1) \cdot \sin(\phi_2) – \sin(\phi_1) \cdot \cos(\phi_2) \cdot \cos(\Delta\lambda)\right)$$
Où $\phi_1$ est la latitude de la caméra, $\phi_2$ est la latitude de la cible, et $\Delta\lambda$ est la différence de longitude. Le résultat vous donne l'angle de panoramique. L'inclinaison est calculée en fonction de la distance et de la différence de hauteur.
Pourquoi le mouvement relatif brise l'intégration SIG
Avec le mouvement relatif, vous ne pouvez que dire “ tournez de 5 degrés vers la gauche ”. Mais le logiciel SIG ne pense pas en termes relatifs. Il pense en coordonnées absolues. Si le système SIG calcule qu'une cible se trouve à un azimut de $237^{\circ}$, il doit envoyer Pan = 237° directement. Il n'y a pas de moyen fiable de le faire avec des commandes relatives car :
- Vous ne connaissez pas précisément la position actuelle de la caméra.
- La latence du réseau rend les commandes “stop” peu fiables.
- De petites erreurs s'accumulent sur plusieurs mouvements.
Architecture d'intégration SIG du monde réel
Voici à quoi ressemble une pile d'intégration SIG-PTZ complète :
| Couche | Composant | Rôle |
|---|---|---|
| Détection | Radar / Capteur de périmètre | Détecte l'intrusion, sort la coordonnée GPS |
| Traitement | Serveur SIG (par exemple, ArcGIS, QGIS) | Convertit le GPS en angle d'azimut de la caméra |
| Commande | Client ONVIF / API HTTP | Envoie AbsoluteMove à la caméra PTZ |
| Retour d'information | Requête de statut PTZ | Confirme que la caméra a atteint la position cible |
| Affichage | VMS / Tableau de bord Web | Affiche la vidéo en direct avec superposition de carte |
La boucle de rétroaction est essentielle. Après avoir envoyé la commande, votre système doit interroger l'état de la PTZ pour confirmer qu'elle a bien atteint l'angle cible. C'est là que les encodeurs absolus prouvent leur valeur : la position signalée correspond à la réalité.
Conseils pratiques pour le déploiement sur le terrain
D'après mon expérience de travail avec des intégrateurs sur des projets extérieurs, voici quelques éléments qui peuvent fausser la précision de votre système SIG vers PTZ :
- Oscillation du mât due au vent. Un mât de 10 mètres soumis à un vent de 30 mph peut osciller de 1° à 2°. À une distance de 500 mètres, cela représente une erreur de 9 à 17 mètres au sol.
- Déclinaison magnétique. Si vous étalonnez le Nord de votre caméra à l'aide d'une boussole, n'oubliez pas que le Nord magnétique n'est pas le vrai Nord. Au Texas, la différence peut être de 4° à 8°.
- Alignement de montage. Même une erreur de 0,5° dans la façon dont la caméra est montée sur le support se répercutera sur chaque commande SIG.
Je recommande toujours de faire un étalonnage sur le terrain après l'installation. Choisissez trois points de repère connus, notez leurs coordonnées GPS, commandez la caméra vers chacun d'eux et mesurez le décalage. Appliquez ensuite un facteur de correction dans votre logiciel.
Quelle est la précision du retour de coordonnées basé sur les degrés lorsque je interroge l'état de la PTZ ?
Des clients m'ont dit que leurs caméras PTZ précédentes signalaient un angle mais pointaient en réalité ailleurs. Lorsque vous construisez un système automatisé, des données de position erronées sont pires que l'absence de données.
Sur les caméras PTZ de qualité industrielle avec encodeurs absolus, la précision de la requête de position est généralement de ± 0,1°. Vous pouvez interroger les valeurs actuelles de Pan, Tilt et Zoom à tout moment via ONVIF ObtenirStatut ou des appels API HTTP. Les valeurs renvoyées reflètent la position physique réelle des moteurs, et non pas seulement la dernière position commandée.

Comment fonctionnent les requêtes de position
Lorsque vous envoyez une ObtenirStatut via ONVIF, la caméra lit les valeurs d'encodeur actuelles et les convertit en coordonnées normalisées. La réponse ressemble à ceci :
<GetStatusResponse>
<PTZStatus>
<Position>
<PanTilt x="-0.333" y="0.125" />
<Zoom x="0.75" />
</Position>
<MoveStatus>
<PanTilt>IDLE</PanTilt>
<Zoom>IDLE</Zoom>
</MoveStatus>
</PTZStatus>
</GetStatusResponse> Les ÉtatDéplacement Le champ vous indique si la caméra est toujours en mouvement ou si elle a atteint sa cible. Ceci est important pour l'automatisation : vous ne devez pas capturer d'instantané tant que le statut n'indique pas INACTIF.
Sources d'erreur de position
Même avec des encodeurs absolus, certains facteurs affectent la précision :
Jeu mécanique
Le jeu est le petit espace entre les engrenages. Lorsque le moteur inverse sa direction, les engrenages doivent “rattraper” cet espace avant que la caméra ne commence réellement à bouger. L'encodeur peut signaler correctement la position du moteur, mais l'objectif de la caméra pointe légèrement différemment en raison du jeu des engrenages.
Les bonnes caméras PTZ incluent une compensation du jeu14 dans leur firmware. Cela signifie que le moteur dépasse intentionnellement la cible puis s'en approche de la même direction à chaque fois, éliminant ainsi l'erreur due au jeu des engrenages.
Effets de la température
Les engrenages métalliques se dilatent et se contractent avec la température. En été au Texas, le boîtier de la caméra peut atteindre $70^{\circ}C$ en interne. Cela peut décaler l'engrènement des dents d'une petite quantité. Sur une rotation de $360^{\circ}$, l'erreur cumulative peut atteindre $0.2^{\circ}$ à $0.3^{\circ}$.
Comparaison de la précision par catégorie de caméra
| Catégorie de caméra | Type de codeur | Précision typique | Taux de rafraîchissement de la requête de position |
|---|---|---|---|
| Grand public / Prosumer | Incrémental | $\pm 1.0^{\circ}$ à $\pm 2.0^{\circ}$ | 1 Hz |
| Commercial Mi-Gamme | Incrémental + Capteur Home | $\pm 0.5^{\circ}$ | 2-5 Hz |
| Qualité Industrielle / Militaire | Absolu (Multi-tours) | $\pm 0.05^{\circ}$ à $\pm 0.1^{\circ}$ | 10+ Hz |
Pourquoi la vitesse de requête est importante
Si vous effectuez un suivi automatique piloté par radar, la caméra doit signaler sa position suffisamment rapidement pour que l'algorithme de suivi puisse calculer les corrections. Un taux de mise à jour de 1 Hz signifie que le système ne sait où se trouve la caméra qu'une fois par seconde. À une vitesse de rotation de $400^{\circ}/s$, la caméra peut parcourir $400^{\circ}$ entre les mises à jour. C'est inutile pour le suivi.
Les caméras PTZ industrielles de notre usine prennent en charge des taux de requête de position de 10 Hz ou plus. Cela fournit à l'algorithme de suivi suffisamment de données pour effectuer des corrections fluides et précises en temps réel.
Auto-étalonnage et Correction de dérive
Même le meilleur matériel dérive après des mois de fonctionnement continu. Je recommande de mettre en place une routine d'auto-étalonnage programmée:
- Toutes les 24 heures, commandez à la caméra de se positionner sur un préréglage connu (par exemple, un repère avec des coordonnées connues).
- Utilisez l'analyse vidéo pour détecter le repère dans l'image.
- Mesurez le décalage en pixels par rapport au centre de l'image.
- Calculez la correction angulaire et appliquez-la comme un décalage dans votre logiciel de contrôle.
Cette approche en boucle fermée maintient la précision de votre système pendant des années de fonctionnement sans aucune intervention manuelle.
Le positionnement absolu est-il pris en charge par toutes les principales marques de VMS comme Genetec et Exacq ?
Je sais que cette question tient les intégrateurs éveillés la nuit. Vous choisissez une caméra, l'installez sur site, puis découvrez que votre VMS ne peut pas lui envoyer de commandes absolues. Vous avez maintenant une caméra à 3 000 $ qui ne fait que le contrôle relatif par joystick. J'ai vu cela se produire trop souvent.
La plupart des principales plateformes VMS — y compris Genetec Security Center, Exacq exacqVision, Milestone XProtect, et même des options open-source comme Blue Iris — prennent en charge les commandes ONVIF AbsoluteMove. Cependant, le niveau de prise en charge varie. Certaines plateformes exposent le contrôle complet des coordonnées dans leur interface utilisateur, tandis que d'autres ne le prennent en charge que via leur API ou SDK. Testez toujours la version spécifique du VMS avec votre modèle de caméra avant de vous engager dans un déploiement important.

La réalité de la compatibilité
Sur le papier, tout VMS qui revendique la conformité au profil ONVIF S devrait prendre en charge DéplacementAbsolu. En pratique, il y a des lacunes. Certaines plateformes VMS n'implémentent que le style joystick MouvementContinu et MouvementRelatif commandes car celles-ci sont plus simples à intégrer dans une interface utilisateur. La DéplacementAbsolu commande nécessite que le VMS maintienne un système de coordonnées, affiche les valeurs d'angle et gère la conversion normalisée en degrés — ce qui représente plus de travail de développement.
Répartition par plateforme
Voici ce que j'ai constaté lors de tests en conditions réelles :
Genetec Security Center7 prend en charge le positionnement absolu via son module Carte. Vous pouvez placer des caméras sur une carte, définir leur champ de vision et cliquer pour suivre. Le système envoie des commandes ONVIF DéplacementAbsolu en arrière-plan. Cela fonctionne bien, mais vous avez besoin du bon niveau de licence — la licence de base n'inclut pas le contrôle PTZ basé sur la carte.
Milestone XProtect9 bénéficie d'une solide prise en charge ONVIF et expose le positionnement absolu via son Smart Client et le MIP SDK. Si vous créez une intégration personnalisée — par exemple, en reliant un système radar à Milestone — vous pouvez utiliser le SDK pour envoyer des commandes absolues par programmation. L'interface utilisateur standard affiche également les coordonnées Pan/Tilt/Zoom lorsque vous survolez le panneau de contrôle PTZ.
Exacq exacqVision8 prend en charge le positionnement absolu ONVIF, mais l'interface utilisateur est plus limitée. Vous pouvez définir des préréglages en utilisant des coordonnées absolues, mais la saisie de coordonnées en temps réel n'est pas aussi fluide qu'avec Genetec ou Milestone. Pour la plupart des projets, cela convient — vous définissez vos préréglages lors de la mise en service, puis vous les déclenchez via des alarmes.
Iris bleu10 est populaire auprès des petits intégrateurs et des utilisateurs finaux technophiles. Il prend en charge ONVIF et peut envoyer des commandes absolues via son API HTTP. L'interface utilisateur de bureau est basique, mais l'API est puissante. Beaucoup de mes clients utilisent Blue Iris avec n8n ou Node-RED pour créer des flux de travail d'automatisation personnalisés.
Que tester avant d'acheter
Avant de vous engager dans une combinaison caméra-VMS pour un grand projet, je recommande d'effectuer ces trois tests :
Test 1 : Mouvement Absolu Aller-Retour
Envoyez une DéplacementAbsolu commande du VMS à une coordonnée spécifique. Interrogez ensuite la position de la caméra via ONVIF ObtenirStatut. Comparez la position commandée à la position rapportée. Elles doivent correspondre à $\pm 0.1^{\circ}$ près.
Test 2 : Précision des Présélections après Cycle d'Alimentation
Définissez cinq présélections à l'aide de coordonnées absolues. Effectuez un cycle d'alimentation de la caméra. Appelez chaque présélection et vérifiez si la caméra revient à la position exacte. Si elle dérive de plus de $0.3^{\circ}$, la caméra utilise probablement des encodeurs incrémentiels et n'est pas adaptée aux flux de travail de positionnement absolu.
Test 3 : Vitesse d'Exécution du Mouvement Absolu
Commandez à la caméra de passer de $0^{\circ}$ de panoramique à $180^{\circ}$ de panoramique. Mesurez le temps. Une bonne caméra PTZ industrielle devrait y parvenir en moins de 2 secondes à sa vitesse maximale de déplacement ($400^{\circ}/s$ ou plus). Si cela prend plus de temps, le moteur ou le pipeline de communication présente un goulot d'étranglement.
L'Avantage OEM/ODM
Une chose que je dis toujours aux intégrateurs : si votre VMS a des exigences spécifiques quant au format des commandes PTZ, nous pouvons personnaliser le firmware de la caméra pour qu'il corresponde. En tant que fabricant axé sur la R&D, nous contrôlons l'intégralité de la pile logicielle. Nous pouvons ajuster le format de réponse ONVIF, ajouter des points d'accès CGI personnalisés, ou même implémenter des protocoles propriétaires si votre projet l'exige. C'est l'avantage de travailler directement avec une usine au lieu de passer par une société commerciale qui ne peut pas modifier une seule ligne de code.
Conclusion
Le positionnement absolu transforme votre caméra PTZ d'un outil manuel en un capteur programmable. Avec les bons encodeurs, protocoles et intégration VMS, vous obtenez un contrôle précis, répétable et automatisé que le mouvement relatif ne peut tout simplement pas offrir.
1. Apprenez comment le positionnement absolu permet des mouvements de caméra précis et répétables vers des coordonnées exactes. ︎↩︎ 2. Les encodeurs absolus fournissent un retour de position immédiat et sans dérive, sans réinitialisation. ︎↩︎ 3. Les encodeurs incrémentiels perdent leur position lors d'une perte d'alimentation et nécessitent une réinitialisation, limitant la fiabilité de l'automatisation. ︎↩︎ 4. Apprenez comment les systèmes d'information géographique sont utilisés avec les caméras PTZ pour le suivi basé sur les coordonnées. ︎↩︎ 5. Pelco-D est un protocole RS-485 largement utilisé qui prend en charge les commandes de positionnement PTZ absolu. ︎↩︎ 6. Les API HTTP permettent d'envoyer des commandes PTZ absolues via de simples requêtes URL sur les réseaux IP. ︎↩︎ 7. Le VMS de Genetec prend en charge le contrôle PTZ absolu via son module Carte et son intégration ONVIF. ︎↩︎ 8. ExacqVision prend en charge le positionnement absolu ONVIF pour le contrôle PTZ basé sur des présélections. ︎↩︎ 9. Milestone XProtect expose le positionnement PTZ absolu via son Smart Client et le MIP SDK. ︎↩︎ 10. Blue Iris prend en charge les commandes absolues ONVIF via son API HTTP pour des flux de travail d'automatisation personnalisés. ︎↩︎ 11. Le profil S d'ONVIF définit le streaming vidéo de base et le contrôle PTZ, y compris AbsoluteMove. ︎↩︎ 12. Le profil T d'ONVIF étend le profil S avec des fonctionnalités avancées telles que la prise en charge de l'audio et des métadonnées. ︎↩︎ 13. L'azimut est le relèvement de compas utilisé pour calculer l'angle de panoramique d'une caméra vers une cible SIG. ︎↩︎ 14. La compensation du jeu élimine le jeu des engrenages pour un positionnement PTZ précis, en particulier lors de l'inversion de direction. ︎↩︎