Optimisation du streaming vidéo en ROS 2
Un guide pratique pour obtenir plus de votre Wi-Fi
Si vous avez déjà travaillé avec des robots mobiles sur le Wi-Fi, vous avez probablement rencontré ce scénario: vous avez mis en place un robot avec un appareil photo, peut-être deux. Vous êtes sur le terrain – ou même en face du laboratoire – essayant de voir un flux en direct tout en fonctionnant, en collectant des données ou en téléopérant. Mais ensuite, les choses commencent à tomber en panne. La latence se glisse. Les messages sont perdus. Borquettes vidéo. L’ensemble du système a l’impression de s’accrocher à un fil.
La plupart du temps, le problème se résume à une chose simple: réseau bande passante.
La diffusion de vidéo brutes sur une connexion sans fil peut facilement saturer votre réseau, surtout si vous avez affaire à des caméras haute résolution, à plusieurs flux ou à un Wi-Fi partagé. Et en ROS, la configuration de la caméra par défaut fait souvent: la publication de messages d’image complets et non compressés à la fréquence d’images complète.
La bonne nouvelle? Vous pouvez faire beaucoup mieux avec quelques changements, et nous avons deux guides qui vous montrent comment.
Pourquoi la vidéo brute en ROS est un problème
Commençons par les bases. Les pilotes de caméras ROS publient généralement des données d’image brutes non compressées par défaut, ce qui signifie qu’elle envoie un tableau complet de valeurs de pixels pour chaque trame. À une résolution de 1280 × 720 avec 3 octets par pixel (RVB) à 30 images par seconde, soit déjà plus de 660 Mbps de bande passante par appareil photo, ce qui dépasse bien la grande majorité des réseaux Wi-Fi peuvent même rêver de soutenir. Maintenant, jetez une perte ou une interférence de paquets, et le résultat est assez prévisible: des flux laggy, des sujets surchargés ou dans les pires cas, une déconnexion complète.
C’est là que la compression entre en jeu. En compressant les données d’image avant qu’elle ne soit envoyée, vous pouvez réduire considérablement l’utilisation de la bande passante, souvent sans sacrifier beaucoup en termes de qualité visuelle ou de latence.
Options de compression de la caméra en ROS 2
Le Compression des données de la caméra Le guide discute du image_transport Framework et les méthodes de compression les plus courantes utilisées dans le ROS 2. Il est important de savoir comment implémenter la compression H.264 (en utilisant FFMPEG), une norme couramment utilisée pour la compression vidéo réseau, en utilisant les packages ClearPath ROS 2.
Même si vous ne travaillez pas avec un robot ClearPath, les principes de ce guide s’appliquent directement à n’importe quel appareil photo de ROS 2.
Réglage des paramètres de compression
Malheureusement, le simple fait d’activer la compression ne suffit souvent pas pour atteindre le niveau de compression et la qualité vidéo requis pour une application donnée. Les paramètres par défaut fournissent rarement suffisamment de compression pour s’intégrer dans la bande passante Wi-Fi disponible, et dans le cas de H.264, peuvent introduire un retard vidéo. Pour ces raisons, il est très important de pousser un peu plus loin et de régler les paramètres de compression.
Le Vidéo sur Wi-Fi Le tutoriel décrit une étude de cas où une caméra noire est configurée pour une utilisation dans la téléopération. Il discute de l’évaluation de la disponibilité de la bande passante, de la façon de calculer les besoins actuels de la bande passante, du choix de la méthode de compression et du processus de réglage lui-même. Les paramètres de compression sont réglés pour répondre aux besoins de l’application, compte tenu d’un certain nombre de facteurs différents tels que la latence, la fréquence d’images, la fiabilité, la qualité et l’efficacité.
Réflexions finales
Il peut y avoir une tendance à blâmer le réseau chaque fois que les données sont perdues ou que la vidéo est lame. Mais souvent, il s’agit d’essayer d’envoyer une quantité déraisonnable de données sur le réseau. Jamais auparavant il n’y avait eu de si petits capteurs qui peuvent fournir de telles quantités de données. En tant que robotiques, nous devons être de plus en plus réfléchis sur la façon dont nous allouons notre bande passante et utilisons pleinement les outils à accomplir.
Vous pourriez être surpris par la façon dont votre système peut fonctionner avec seulement quelques ajustements bien placés.
