Wifibroadcast 2.3ghz et streaming video avec Wifi AP

Wifibroadcast 2.3ghz et streaming video avec Wifi AP

pre-requis : Vous devez déja configurer votre Wifi Acces Point sur la station au sol  (GCS) ici : Configuration du point d’accès Wifi de la station au sol

La première solution : Broadcast over wifi network at 2.3GHz & 30dBm (1) depuis le drone « MyPiDrone » en utilisant le Wifi AP de la station au sol  (WiFi Access Point on Ubuntu)

Cette méthode permet de transmettre de la vidéo à des appareils connectés au wifi AP de la station de contrôle au sol (PC avec Ubuntu). Il est ainsi possible d’adresser plusieurs autres OS tels que :

(1) La configuration de réseau wifi à  2.3GHz n’est pas encore validée sous Android pour le moment.  Cependant la solution est valable avec le 2.4Ghz pour l’application Android Beta Tower ou QtGStreamerHUD.apk

Nous utilisons un  TP-LINK (wlan0) sur le drone et un autre TP-LINK (wlan0) sur la station au sol.

Cette solution est moins efficace que le Wifibroadcast (portée faible et plus de latence): Nous avons validé cette mise en œuvre sans tester l’efficacité.

Pour une application Android vous devez choisir : udp broadcast network (10.0.0.255) ou ip (10.0.0.12)

raspivid -ih -t $TIMEOUT -w $WIDTH -h $HEIGHT -fps $FPS -b $BITRATE -n -g $KEYFRAMERATE -pf high -o - |gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink port=5000 host=10.0.0.12
Video pour application Android

Pour un client VLC (http, rtsp) :

## mandatory to run cvlc with root user
strings /usr/bin/vlc|egrep "getppid|geteuid"
C=`strings /usr/bin/vlc|grep -c getppid`
if [ $C -eq 1 ]; then
echo "VLC getppid already set"
else
cp /usr/bin/vlc /usr/bin/vlc.ori
sed -i 's/geteuid/getppid/' /usr/bin/vlc
strings /usr/bin/vlc|egrep "getppid|geteuid"
fi
#### http
raspivid -ih -t $TIMEOUT -w $WIDTH -h $HEIGHT -fps $FPS -b $BITRATE -n -g $KEYFRAMERATE -pf high -o - |cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:5000}' :demux=h264
#### rtsp
raspivid -ih -t $TIMEOUT -w $WIDTH -h $HEIGHT -fps $FPS -b $BITRATE -n -g $KEYFRAMERATE -pf high -o - |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:5000/}' :demux=h264
video pour un client VLC

Deuxième solution: Transmission Vidéo Wifibroadcast à 2.3GHz depuis le  drone « MyPiDrone » vers la station au sol (GCS) et retransmission en 2.4GHz avec le réseau wifi en utilisant le point d’accès auquel sont connecté les appareils.

Cette solution utilise un TP-LINK (wlan: mode monitor) sur le drone et deux TP-LINK (wlan0 AP & wlan1: mode monitor) sur la station de contrôle au sol.

Sur le drone  la transmission de la vidéo est en wifibroadcast (wlan1):

raspivid -ih -t $TIMEOUT -w $WIDTH -h $HEIGHT -fps $FPS -b $BITRATE -n -g $KEYFRAMERATE -pf high -o - | tee $VIDEO | ./tx -p $PORT -b $BLOCK_SIZE -r $FECS -f $PACKET_LENGTH $
wifibroadcast video depuis le drone

La station au sol reçoit la vidéo en wifibroadcast  (wlan1) et rediffuse la  vidéo en streaming vers une application Android connectée au Wifi AP (wlan0) :

./rx -p $PORT -b $BLOCK_SIZE -r $FECS -f $PACKET_LENGTH $WLAN |gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink port=5000 host=10.0.0.12
Video streaming pour application Android

Retransmission pour un client VLC connecté au Wifi AP (wlan0) :

./rx -p $PORT -b $BLOCK_SIZE -r $FECS -f $PACKET_LENGTH $WLAN |cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:5000}' :demux=h264
video streaming pour un client VLC

NOTE : Vous pouvez utiliser picamera à la place raspivid. Voir :
Superposition de la télémétrie en mode texte sur la vidéo avant la transmission en Wifibroadcast

Pages

3 réflexions au sujet de « Wifibroadcast 2.3ghz et streaming video avec Wifi AP »

  1. Bonjour merci pour cet article très intéressant!
    Confirmez vous après tests en vol qu’un lien wifi en 2.3 GHz ne génère pas d’interférence avec la radiocommande en 2.4 GHz?

    Concernant Wifibroadcast :
    – a combien estimez vous l’augmentation de portée de la liaison wifi par ce procédé?
    – la connection wifibroadcast permet-elle d’établir une connection Mavlink entre le Drone et la GCS afin d’échanger des données de télémétrie? ou faut-il créer cette connection en 433Mhz en parallèle?

    Merci beaucoup pour vos informations passionnantes!

    Par ailleurs le réseau wifibroadcast permet-il d’établir une connection Mavlink avec le controlleur? ou

    1. Guillaume,

      – Tous les tests que l’on a effectué avec TP-LINK TL-WN722N n’ont pas révélé d’interférences avec la radio TARANIS. Les premiers tests en 2.4ghz étaient aussi satisfaisants mais on est pas resté assez longtemps sur cette fréquence pour le prouver totalement. Le 2.3Ghz permet de diminuer les risques d’interférences mais cela nécessite de modifier le driver pour TP-LINK TL-WN722N (il faut un peu d’expertise Linux pour le faire). Si vous souhaitez ne pas prendre de risques vous pouvez choisir le 5Ghz (portée moindre).

      – Avec deux TP-LINK TL-WN722N en réception (software diversity inclus dans rx) il est possible d’aller jusqu’à 3km. (infos sur le site https://befinitiv.wordpress.com/wifibroadcast-analog-like-transmission-of-live-video-data/). Nous n’avons pas testé cette limite. Nous étions dans un terrain de 300 à 400m environ pour cette vidéo : https://youtu.be/quBU6NyJETM

      – Il est possible de transmettre des données de télémétrie (ou autre chose) depuis TX vers RX grâce à la notion de port (exemple https://befinitiv.wordpress.com/2015/07/06/telemetry-osd-for-wifibroadcast/) mais par contre dans un seul sens (le wifibroadcast est unidirectionnel). Vous devez vous utiliser soit une radio 3DR en 433Mmhz (conseillé), soit un réseau wifi, soit une connexion GSM 3G ou 4G pour recevoir la télémétrie et contrôler le Drone.

      – L’accès au contrôleur NAVIO+ ou NAVIO2 se fait au travers du process ArduCopter-Quad qui s’exécute dans le RASPBERRY PI. Il existe deux choix possible pour y accéder : soit en passant par le RASPBERRY PI via MAVPROXY (mavlink) sur le réseau en TCP/IP ou soit par le port série /dev/ttyAMA0 ou l’on connecte en général une radio 3DR 433Mzh. Ce qui explique les deux process suivants:

      1/ ArduCopter-quad -A /dev/ttyAMA0 -C udp:127.0.0.1:14550

      2/ mavproxy.py –master=udp:127.0.0.1:14550 –quadcopter –out=/dev/ttyUSB0,57600

      MAVPROXY prend en charge les automatismes (module https://github.com/MyPiDrone/MyPiModule)  et le retour de la télémétrie sur la radio via /dev/ttyUSB0.

      Voir le diagramme des flux: http://mypidrone.com/wp-content/uploads/2016/10/MyPiDrone1_Tarot_Data_Flow_Diagram_V1.2.jpeg

      J’espère que mes réponses vont pouvoir vous aider.

       
      Cordialement.
      Kev&Phil
  2. Merci c’est très clair
    Quel dommage qu’il ne soit pas possible d’utiliser une cle wifi bi-bande avec par un mode monitor wifibroadcast sur 5 GHz et un mode AP sur 2,4 GHz pour télémétrie et commande RC override par Joystick
    Cela serait hyper optimisé avec un seul équipement pour toutes les transmissions entre drone et le sol

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *