Explorer/RaspberryPi/Wifibroadcast/Integration

From PaparazziUAV
Jump to navigation Jump to search

Wifibroadcast channels:

  • channel 1: downlink camera live video
  • channel 2: downlink autopilot telemetry
  • channel 3: uplink autopilot telemetry
  • channel 4: uplink UDP tunnel
  • channel 5: downlink UDP tunnel
#Airpi
/home/pi/wifibroadcast-svpcom/wfb_tx -K /home/pi/wifibroadcast-svpcom/drone.key -p 1 -u 5600 wlan1
/home/pi/wifibroadcast-svpcom/wfb_tx -K /home/pi/wifibroadcast-svpcom/drone.key -p 2 -u 4242 -k 1 -n 2 wlan1
/home/pi/wifibroadcast-svpcom/wfb_rx -K /home/pi/wifibroadcast-svpcom/drone.key -p 3 -u 4243 -c 127.0.0.1 -k 1 -n 2 wlan1
/home/pi/wifibroadcast-svpcom/wfb_tx -K /home/pi/wifibroadcast-svpcom/drone.key -p 5 -u 14900 -k 1 -n 2 wlan1
/home/pi/wifibroadcast-svpcom/wfb_rx -K /home/pi/wifibroadcast-svpcom/drone.key -p 4 -u 14901 -c 127.0.0.1 -k 1 -n 2 wlan1
#Groundpi
#Update GCS_IP with yours
export GCS_IP=192.168.1.46
/home/pi/wifibroadcast-svpcom/wfb_rx -K /home/pi/wifibroadcast-svpcom/drone.key -p 1 -c 127.0.0.1 -u 5600 wlan1
/home/pi/wifibroadcast-svpcom/wfb_rx -K /home/pi/wifibroadcast-svpcom/drone.key -p 2 -u 4242 -c $GCS_IP wlan1
/home/pi/wifibroadcast-svpcom/wfb_tx -K /home/pi/wifibroadcast-svpcom/drone.key -p 3 -u 4243 wlan1
/home/pi/wifibroadcast-svpcom/wfb_tx -K /home/pi/wifibroadcast-svpcom/drone.key -p 4 -u 14800 -k 1 -n 2 wlan1
/home/pi/wifibroadcast-svpcom/wfb_rx -K /home/pi/wifibroadcast-svpcom/drone.key -p 5 -u 14801 -c 127.0.0.1 -k 1 -n 2 wlan1

Camera stream:

#Airpi: input camera, outputs: /tmp/camera1 (shmsrc), port 5600 (wfb_tx) 
rm /tmp/camera*; \
/usr/bin/raspivid -t 0 -w 640 -h 480 -fps 30/1 -b 3000000 -g 5 -cd H264 -n -fl -ih -pf high -if both -ex sports -mm average -awb horizon -a ENAC -ae 22 -o - \
 | gst-launch-1.0 fdsrc \
   ! h264parse \
   ! video/x-h264,stream-format=byte-stream,alignment=au \
   ! tee name=streams \
   ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 \
   ! rtph264pay name=pay0 pt=96 config-interval=1 \
   ! udpsink host=127.0.0.1 port=5600 streams. \
   ! shmsink socket-path=/tmp/camera1 wait-for-connection=false sync=false
#GroundPi: input: 5600, outputs: port 5610 (rtst server), fpv_video (displays HDMI)
gst-launch-1.0 udpsrc port=5600 \
   ! tee name=streams \
   ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 \
   ! udpsink host=127.0.0.1 port=5610 streams. \
   ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 \
   ! application/x-rtp, encoding-name=H264,payload=96 \
   ! rtph264depay ! video/x-h264,stream-format=byte-stream \
   ! fdsink \
   | /home/pi/wifibroadcast_osd/fpv_video/fpv_video &
/home/pi/gst-rtsp-server-1.14.4/examples/.libs/test-launch \
  "\"udpsrc port=5610 do-timestamp=true ! application/x-rtp, encoding-name=H264,payload=96 ! rtph264depay ! video/x-h264,stream-format=byte-stream,alignment=au ! rtph264pay name=pay0 pt=96 config-interval=1\"" "\" "


Telemetry stream:

#Airpi: send to autopilot from port 4243, get from autopilot to port 4242 locally
socat -u udp-listen:4243,reuseaddr,fork /dev/ttyAMA0,raw,echo=0,b115200 &
socat -u /dev/ttyAMA0,raw,echo=0,b115200 udp-sendto:127.0.0.1:4242 &
#GroundPi: inputs on port 4242, outputs on 4243
#default pprlink ports

Tunnel stream: (ex: ssh 10.0.1.1)

#Airpi: 
socat TUN:10.0.1.2/24,tun-name=airpituntx,iff-no-pi,tun-type=tun,su=pi,iff-up udp-sendto:127.0.0.1:14900
socat udp-listen:14901 TUN:10.0.1.2/24,tun-name=airpitunrx,iff-no-pi,tun-type=tun,su=pi,iff-up
sleep 1
ifconfig airpituntx mtu 1400 up &
#GroundPi:
socat -u TUN:10.0.1.1/24,tun-name=groundpituntx,iff-no-pi,tun-type=tun,iff-up udp-sendto:127.0.0.1:14800
socat -u udp-listen:14801 TUN:10.0.1.1/24,tun-name=groundpitunrx,iff-no-pi,tun-type=tun,iff-up
sleep 1
ifconfig groundpituntx mtu 1400 up &


Explorer/RaspberryPi/Wifibroadcast/Run