simple python OSD app for openipc groundstation to run on MacOS / Ubuntu
using gtk3.0 transparent window + pymavlink
work in progress
- download and install python 3.11 or 3.12 : https://www.python.org/downloads/
- python packages : PyGObject, pymavlink
$ pip3 install PyGObject pymavlink
This osd app could show only osd elements. so gstreamer is needed to play the video stream from air unit.
- using homebrew on MacOS
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ brew install gstreamer
- using apt-get on Ubuntu
$ sudo apt-get update
$ sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa \
gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
gstreamer1.0-libav
$ sudo apt-get install libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-good1.0-dev \
libgstreamer-plugins-bad1.0-dev
$ git clone https://github.com/OpenIPC/pyosd.git
$ cd pyosd
$ python3 pyosd.py
-
udp packets of video and telemetry from air unit are needed ( running wfb-ng )
- MacOS : using utm virtual machine for installation and running wfb-ng on ubuntu-server
- Ubuntu : install and run wfb-ng
- wfb-ng ubuntu install guide : https://github.com/svpcom/wfb-ng?tab=readme-ov-file#quick-start-using-ubuntu-ground-station
-
playing video stream by gstreamer pipeline.
$ gst-launch-1.0 -vvvv udpsrc port=5600 ! application/x-rtp, payload=32, clock-rate=90000 ! queue max-size-buffers=1 \
! rtph265depay ! h265parse ! avdec_h265 ! autovideosink sync=false -e
- running pyosd.py on the pyosd directory
$ python3 pyosd.py
*** If you want to use pyosd on Ubuntu, replacing the pymavlink connection from 'udpin:224.0.0.1:14550' to 'udpin:127.0.0.1:14550'
- 173 line of pyosd.py : https://github.com/OpenIPC/pyosd/blob/94451877e6558df44f6bf3085e632ff6120e89b1/pyosd.py#L173C9-L173C86
self.mavlink_connection = mavutil.mavlink_connection('udpin:127.0.0.1:14550')
*** If you want to use pyosd on MacOS, mulitcating the udp packets from utm virtual machine is needed. by replacing peer of video mavlink and video 'connect://224.0.0.1:14550' of utm virtual ubuntu-server.
$ sudo nano /etc/wifibroadcast.cfg
...
[gs_mavlink]
peer = 'connect://224.0.0.1:14550' # outgoing connection
# peer = 'listen://0.0.0.0:14550' # incoming connection
[gs_video]
peer = 'connect://224.0.0.1:5600' # outgoing connection for
# video sink (QGroundControl on GS)
*** when starting this app on MacOS, there are some gliches. then minimizing and re-maximizing window could be helpful.
- MacOS (14.2.1 Sonoma)
![MacOS](https://private-user-images.githubusercontent.com/165914105/342390850-262a60c6-80a4-43f6-a6ef-95f4fd46b926.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk3ODk2OTEsIm5iZiI6MTczOTc4OTM5MSwicGF0aCI6Ii8xNjU5MTQxMDUvMzQyMzkwODUwLTI2MmE2MGM2LTgwYTQtNDNmNi1hNmVmLTk1ZjRmZDQ2YjkyNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxN1QxMDQ5NTFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03YTljZDQwNjcwMGFjMmY0N2RkOGM5NmU1YWMwNTJmNDdmNTUzNDBmNTkyODU4MmVhZmM3ZjQ3Y2E1ZmFhMzM0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.xFVLRLq4P6XCXBIQSfQ0rLcVhItcs6gpN79pqk6Hl3w)
- Ubuntu (23.10 mantic)
![Ubuntu](https://private-user-images.githubusercontent.com/165914105/342391359-b8753553-562f-44be-acbd-aa8fe682ae19.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk3ODk2OTEsIm5iZiI6MTczOTc4OTM5MSwicGF0aCI6Ii8xNjU5MTQxMDUvMzQyMzkxMzU5LWI4NzUzNTUzLTU2MmYtNDRiZS1hY2JkLWFhOGZlNjgyYWUxOS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxN1QxMDQ5NTFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00MjI2NzY4MmViZTRkYTM1YzBjYjgxNDA0YWU1NTZhMDZiNWVkZDViYWRhZDNhMjJkZTE4ZTlkYTJlNzZmYzNjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.1-_CRZTPVEWg1VQVYTsAXzRp0pqhRetBp5yCB0gKr9k)