- gcs uno
- About GCS uno server
- Setup your server
- Live video streaming
- connect your drones
- fly your drone
- GCS usage
- Setup companion computer
- FPV video streaming
- Connect with desktop GCS software
- Flights history
- Missions
- Use cases
- How tos
- refs
ref-hd | ref-px4 | ref-raspi_pilot | ref-vlc |
gcs uno
About GCS uno server
basic installation
This guide will help you to install GCS.uno server app along with NodeJS, Redis Server and RethinkDB on Ubuntu 16.04 server.
If you don’t have one, get it from Google Cloud, AWS, Digital Ocean or any other provider. A server with 1 CPU, 1Gb RAM and 10Gb of hard drive will fit for testing.
You can also use VirtualBox with your desktop or laptop PC or even Raspberry Pi or similar card-size computers.
You will need SSH access to your server. Login and be ready to copy-paste below commands.
- system update
sudo apt-get update && sudo apt-get upgrade -y
- install helpers
sudo apt-get install curl git
- install nodejs
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential
- install pm2 process manager
sudo npm install pm2 -g
-Install RethinkDB
source /etc/lsb-release && echo "deb http://download.rethinkdb.com/apt $DISTRIB_CODENAME main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list
wget -qO- https://download.rethinkdb.com/apt/pubkey.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install rethinkdb -y
- install Redis server
sudo apt-get install redis-server -y
install GCS uno server app
sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config
CD to you home directory if you are out of it
cd
Clone GCS.uno server repository
git clone git@github.com:aiegoo/gcs.eggs.or.kr.git
CD to project’s directory:
cd gcs_uno_server
Install app dependencies
npm install
Build front-end files
npm run build
Setup your server
Setting up RethinkDb database
Create RethinkDB instance config file
sudo cp config_templates/RethinkDB/gcs_uno_server.conf /etc/rethinkdb/instances.d/gcs_uno_server.conf
Create database instance directory
sudo rethinkdb create -d /var/lib/rethinkdb/gcs_uno_server
sudo chown -R rethinkdb.rethinkdb /var/lib/rethinkdb/gcs_uno_server
sudo /etc/init.d/rethinkdb start
sudo /etc/init.d/rethinkdb status
Redis Server configuration
Redis Server does not need any additional configuration. Just check if it runs:
sudo systemctl status redis
If you really need to change its configuration, the config file is here: /etc/redis/redis.conf
Google Maps API Key¶
GCS.uno server uses Google Maps API for front-end maps and backend geocoding lookups, so you need to obtain your API key in order to use it. Here is the original guide of how to get Google Maps API key.
After you have your API key, you need to put it in to files. Open index.html in gcs_uno_server/pilot-ui, find YOUR_API_KEY sting and replace it with your own key.
nano pilot-ui/index.html
Open server_config.js
from configs directory and put your key in a GMAPS_API_KEY property:
nano configs/server_config.js
- to normalize the map api - console.cloud.google and cafe24 for following configuration
Start app servers¶
First, cd to servers directory
cd ~/gcs_uno_server/servers
Then start application servers one by one with PM2 process manager.
pm2 start drones-server.js
pm2 start drone-udp-server.js
pm2 start gcs-tcp-server.js
pm2 start io-server.js
Setup servers autostart on system boot¶
pm2 startup
pm2 save
Open dashboard¶
Open your browser and go to http://YOUR_SERVER_IP:8080
Video streaming server installation Advanced Installation (Custom domain with SSL) GCS.uno server dashboard overview
advanced installation
If you want to use regular HTTP ports (80 and 443) for your server and/or assign a custom domain, you can install Nginx server and configure it as a reverse proxy with free SSL certificates from LetsEncrypt.
Install Nginx web server¶
sudo apt-get install nginx -y
# install LetsEncrypt certobx for nginx
sudo apt-get install software-properties-common -y
sudo apt-get update && sudo apt-get install python-certbot-nginx -y
Configure Ngnix¶
# Create new config file with your domain name. Replace GCS.EXAMPLE.COM with yours
sudo cp config_templates/Nginx/example_site.conf /etc/nginx/sites-available/GCS.EXAMPLE.COM
# Open it and set your domain name and root directory
```shell
sudo nano /etc/nginx/sites-available/GCS.http://localhost:3002/v/1
sudo ln -s /etc/nginx/sites-available/GCS.http://localhost:3002/v/1 /etc/nginx/sites-enabled/GCS.http://localhost:3002/v/1
# Create SSL certificate for your domain¶
sudo certbot --nginx
Choose your site in console dialog, then wait a minute while your certificate is created and domain name checked. At the end of process you will be prompted to choose whether to make redirection in config file or not. Press 1 (No redirect) and Enter, because our config file already has redirection instructions. Check your Nginx site config (from the steps above) if there are two lines with paths to certificate files at the end of file.
LetsEncrypt makes 3 months valid SSL certificate and sets itself to a cronjob to automatically renew it, so there is no need to do anything with it. But if you want to renew it manually, run this command:
sudo certbot renew --dry-run
Nginx proxy pass for Nimble streamer¶ If you have installed Nimble Streamer on the same system, you can put it beyond Nginx and share your domain name and SSL certificate for web-app video streaming.
Create new config file in Nginx conf.d directory
sudo cp config_templates/Nginx/nimble_proxy.conf /etc/nginx/conf.d/nimble_proxy.conf
Open your Nginx site config (from steps above), find and uncomment Nimble Proxy Pass section
sudo nano /etc/nginx/sites-available/GCS.EXAMPLE.COM
Restart Nginx
sudo systemctl restart nginx
sudo systemctl status nginx
Now you can access your dashboard with HTTPS connection, e.g. https://gcs.YOUR_DOMAIN.com
Follow with: GCS.uno server dashboard overview
Live video streaming
Nimble Streamer setup for live video streaming
This guide describes basic installation and configuration of Nimble Streamer media server. Nimble Streamer is free (but not open source) media server. For advanced configuration you can use its user-friendly WMSPanel. Here is the original installation guide.
installation
for Ubuntu 20.04
sudo bash -c 'echo -e "deb http://nimblestreamer.com/ubuntu focal/">> /etc/apt/sources.list'
wget -q -O - http://nimblestreamer.com/gpg.key | sudo apt-key add -
sudo apt-get update && sudo apt-get install nimble -y
sudo cp config_templates/Nimble/rules.conf /etc/nimble/rules.conf
sudo service nimble restart
sudo service nimble status
By default, Nimble Streamer will start automatically at system startup. If you need to disable autostart, run this command
sudo service nimble disable
Nimble Streamer uses port 8081 for HTML5 websocket player. It can be changed in /etc/nimble/nimble.conf
If you want to use Nginx server as a reverse proxy for Nimble Streamer, find more info in Advanced Installation page. If you change the Nimble Streamer port, remember to update the port in /etc/nginx/sites-available/GCS.EXAMPLE.COM
Register server in WMSPanel
Firstly, register an WMSPanel account. Then register the nimble server.
After register WMSPanel, the configuration is controlled by the WMSPanel. the /etc/nimble/rules.conf
will be overwritten. You have to go to WMSPanel to config the Interfaces for incoming published RTMP, RTSP and Icecast streams.
sudo /usr/bin/nimble_regutil
You will be asked for your WMSPanel login and password sent to you during sign up.
Regutil allows setting up specific display name for Nimble instance in WMSPanel via –server-name option.
sudo /usr/bin/nimble_regutil --server-name display_name`
Streaming live video
After you have your Nimble Streamer up and running, you can stream and view your live video.
Configure your device to stream to:
RTSP: rtsp://YOUR_DOMAIN_OR_IP:554/vs/test_video_1 or RTMP: rtmp://YOUR_DOMAIN_OR_IP:1935/vs/test_video_1
Replace YOUR_DOMAIN_OR_IP with your server’s configured domain name or IP address. Instead of test_video_1 you can use whatever you like, this is a unique ID of a stream.
Streaming test video with GStreamer
If you don’t have a camera or drone ready, it is possible to stream test video with GStreamer.
First install necessary packages along with GStreamer and its plugins (on the same server or any other suitable device)
sudo apt-get install -y autoconf automake libtool pkg-config libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly
# Then set your streaming endpoint to the environment variable
STREAM_URL="rtmp://YOUR_DOMAIN_OR_IP:1935/vs/test_video_1"
# And run GStreamer with test video
gst-launch-1.0 videotestsrc is-live=true ! \
clockoverlay halignment=right valignment=bottom text="video test" shaded-background=true font-desc="Sans, 32" ! \
videoconvert ! videoscale ! videorate ! x264enc bitrate=500 tune=zerolatency ! video/x-h264 ! h264parse config-interval=1 ! \
video/x-h264 ! queue ! flvmux name=mux ! \
rtmpsink location="$STREAM_URL live=1" \
audiotestsrc is-live=true ! audioconvert ! audiorate ! audioresample ! audio/x-raw,rate=48000 ! \
voaacenc bitrate=24000 ! audio/mpeg ! aacparse ! audio/mpeg, mpegversion=4 ! mux.
Test video stream comes with current time overlay, so it’s easy to estimate video latency.
View live video in GCS.uno web control panel¶
In a drone’s settings form use the following URL pattern for video stream URLs:
SSL connection: wss://YOUR_DOMAIN_OR_IP/vs/test_video_1 No SSL: ws://YOUR_DOMAIN_OR_IP:8081/vs/test_video_1
View live video in QGroundControl or any RTMP or RTSP player¶ To view video, you can use QGroundControl (the lowest latency) or any desktop or mobile video player with RTSP or RTMP playback capabilities (e.g. VLC). Set them to play the RTSP stream with the following URL
rtsp://YOUR_DOMAIN_OR_IP:554/vs/test_video_1
Continue with: Live video streaming with Wowza Cloud Streaming Advanced Installation (Custom domain with SSL) GCS.uno server dashboard overview
wmspanel
- Larix Grove on Android and Ios
Wowza Cloud streaming
This guide describes basic setup to stream live video from you DJI, Ardupilot or PX4 drone with the help of Wowza Streaming Cloud with Ultra Low-latency feature.
Create new stream target in Wowza Cloud¶
Log in to your Wowza Streaming Cloud account. Click on Advanced menu on the top bar (1) and choose Stream Targets (2). Then click Add button to create new stream target (3):
Choose Wowza CDN-Ultra Low Latency(1) and click
Enter your preferred stream name (1), choose Source Delivery Method as Push (2), set stream target to be enabled once it is created (3) and finally click Add (4):
After stream target has been created, you will see its parameters page. The Primary URL (1) is used to stream live video from your drone’s camera. It is also used in GCS.uno iOS app for DJI drones to stream live video. The URL which starts with wss://… from Playback URLs section (2) should be copied as video stream URL to drone’s settings in your GCS.uno web control panel. Click on Test player link to get your license key (3):
Copy your license key and continue with the next step:
Configure your GCS.uno server with Wowza Player license key¶
To play live video from Wowza Cloud you need to set up your license key. This step needs to be done only once. Open pilot-ui/index.html and find Wowza Player initialization section:
<script type="text/javascript">
window.WowzaPlayerLicense = "WOWZA_PLAYER_LICENSE_KEY"
</script>
Continue with: Live video streaming with Nimble Streamer GCS.uno server dashboard overview
connect your drones
Connect DJI drones to GCS.uno Server
DJI drones are connected to GCS.uno Server instance using our free GCS.uno iOS app. Please, install the app on your iOS mobile device before following next steps.
If you don’t have your GCS.uno server running, please refer to GCS.uno Server installation guide or test the app and your drone with our GCS.uno DJI Test Server.
Create new drone in your GCS.uno control panel¶ Choose Drones in side menu (1), then click + New drone button (2):
Type in drone’s name of your choice (1), choose DJI in Type menu (2) and click Create (3):
Set live video playback URLs (1) and click Save (2):
Configure GCS.uno app¶
Connect your mobile device to DJI remote controller, turn them on and launch GCS.uno app.
Tap on menu button (1) and choose Settings (2).
Set your GCS.uno Server’s host (1) and Auth Key (2). If your server uses SSL connection, switch on Use SSL (3). Set RTMP URL for live streaming video (4). Finally tap Save (5). If you are flying your drone in China, you have to login to DJI account (6).
Note, that each key can be used by single device simultaneously. If you try to use a key which is currently used in active connection with other device, you’ll get key in use error in the app’s telemetry status.
Now, turn on your copter and wait until the app shows it is successfully connected:
Switch on telemetry (1) and video (2) streaming in side menu:
After iOS app is connected, you will see online status in your drones list. Click on the drone’s name and choose Control from the popup menu:
Create new drone in your GCS.uno control panel¶
Choose Drones in side menu (1), then click + New drone button (2):
Configure GCS.uno app¶
Connect your mobile device to DJI remote controller, turn them on and launch GCS.uno app.
Connect Ardupilot and PX4 drones¶
There are various ways of how to connect Ardupilot and PX4 autopilots to GCS.uno Server.
With in-field pilots¶ Re-stream telemetry and video from in-field laptop to GCS.uno Server and allow simultaneous control to remote operator:
Autonomous drones and rovers¶ Connect your autonomous drone’s charging station to GCS.uno Server:
Connect autonomous drones directly to GCS.uno server using onboard 3G, 4G and 5G cellular modems and terminals:
Create new drone in your GCS.uno control panel¶
Choose Drones in side menu (1), then click + New drone button (2):
Type in drone’s name of your choice (1), choose MAVLink in Type menu (2) and click Create (3):
UDP port IN (1) and TCP port OUT (2) will be randomly set from the allowed range. Allowed ranges of UDP and TCP ports can be configured in configs/common_config.js file. UDP port is used to stream MAVLink telemetry from drone. TCP port is used to connect desktop Ground Control software (QGroundControl, MissionPlanner etc) remotely. Set live video playback URLs (3) and click Save (4):
You can set up to 3 playback URLs, which can be any of supported players type. Stream video with Nimble Streamer Stream video with Wowza Cloud Streaming
Click on the drone’s name and choose Control from the popup menu:
Once drone’s dashboard is opened, click on Info icon (1) and switch on UDP server (2). If you are going to connect with desktop Ground Control software, you can also switch on TCP server (4) for this.
Now turn on your drone together with ground equipment and configure them to stream telemetry to remote UDP port. If connection is OK and your drone sends MAVLink data, the control dashboard will switch to Online mode and you will see telemetry data.
Use your GCS.uno Server host and configured TCP port to connect with QGroundControl:
Test with Ardupilot PX4 SITL simulators
Ardupilot SITL simulator¶ Install and run Ardupilot simulator by following the original guide: Basic multiplatform (Linux, Windows, MacOS) installation
PX4 Gazebo simulator¶ Here is the guide for PX4 Gazebo sim.
MAVProxy¶
If you have not installed MAVProxy yet, do it:
sudo apt-get install python-opencv python-wxgtk2.8 python-pip python-dev python-lxml python3-lxml
sudo pip install MAVProxy
Start all together¶
Refer to Connect MAVLink drone to start UDP server and get its port number.
Make sure autopilot simulator is up and running, then start MAVProxy to forward telemetry data to GCS.uno server (replace GCS_UNO_SERVER_HOST with you server’s host or IP address and DRONE_PORT with the UDP port set in drone’s settings:
mavproxy.py --master=udp:127.0.0.1:14550 --out=udpout:GCS_UNO_SERVER_HOST:DRONE_PORT
For example, test GCS.uno server is running on localhost (IP=127.0.0.1) with drone’s UDP port=34111:
mavproxy.py --master=udp:127.0.0.1:14550 --out=udpout:127.0.0.1:34111
GCS.uno iOS Mobile App Overview¶
GCS.uno iOS mobile app is designed to stream live video and telemetry from DJI drones to your own GCS.uno local or remote server allowing BVLOS view and control over the internet.
Supported DJI drones:
Supported iOS devices: iPhones and iPads running iOS 10 and above.
If you don’t have your GCS.uno server running, please refer to GCS.uno Server installation guide or test the app and your drone with our GCS.uno DJI test server.
Continue with: Connect DJI drone to GCS.uno Server GCS.uno DJI test server Support forum GCS.uno iOS app Privacy Policy
fly your drone
dashboard overview
- Telemetry widgets.
- Info icon. Click to view drone and connection info.
- Status messages icon. Click to view list of messages.
- Current flight mode name.
- Arm/disarm status and control buttons.
- Flight modes buttons.
- Additional actions and control menu.
- Drone’s map marker.
- Home position marker.
- Live video screen.
- Live video sources switch.
- Camera control buttons.
- Flight indicators (artificial horizon, compass) and obstacles radar.
- Onscreen joystick controls (left - heading and altitude, right - move forward, backward, left and right).
- Camera gimbal control
parameter editor
preflight checklist
Geofence
semi-auto flight
auto mission flight
scheduled flight
GCS usage
GCS.uno is a web-based Ground Control Station for autonomous drones with MAVLink-compatible autopilots.
GCS.uno allows you to control multiple drones over internet. How the drone’s dashboard looks like in a web-app:
Setup options
To communicate with GCS.uno server your drone must have an internet link. This can be done in few ways, depending on what autopilot hardware is used. Linux-based autopilots with USB 4G modem onboard Such as Navio 2 hat for Raspberry Pi and Erle Brain 3.
Use Navio2 + Raspberry setup guide for this option. Autopilot board and separate companion computer with 4G onboard Any MAVLink-compatible autopilot with any Linux-based onboard companion computer with 4G USB modem. Such as Pixhawk and Odroid.
Setup companion computer. In the both ways described above the 4G USB modem is used to directly communicate with GCS.uno server. Regular radio modem link and companion computer on the ground This is commonly used telemetry link with radio modem, such as RDF900 or SiK telemetry modems. The ground modem communicates with any computer. If computer is connected to internet, it can run GCS.uno script to connect with the server.
Connecting desktop and mobile Ground Control Station software
After setting up your drone to communicate with GCS.uno server you can use your favorite desktop or mobile Ground Control Station software to connect to it using GCS.uno as a MAVLink proxy server. How to connect with QGroundControl and other Control Station software
setup Navio2 and raspi
This guide describes how to set up Navio 2 autopilot and Raspberry Pi computer (or similar) to communicate with web-based ground control station GCS.uno over internet and 4G networks.
Original docs for configuring Navio 2 autopilot board:
- Hardware setup
- Configuring Raspberry Pi
- Ardupilot installation and running To configure your autopilot you need your board computer to be connected to a wifi network with internet available.
Connecting to GCS.uno
After you set up your drone and can connect with it using regular ground control software (such as QGroundControl or MissionPlanner), there are few steps left to control a drone remotely over 4G networks.
How it works
Ardupilot is configured to stream its MAVLink telemetry messages to local (onboard) UDP port. A small script (written in JavaScript) listens to this UDP port and transmits messages to GCS.uno server. When you open GCS.uno in a web-browser, this telemetry is got from server and rendered to a screen almost in realtime. In opposite direction, you press an action button on a web-page, this magically tranforms to a MAVLink message and reaches onboard autopilot to be executed. SSH to your board Raspberry and follow next steps.
Configure Ardupilot
Depending on what frame you have configured using emlid-tool, the configuration file will be accordingly arducopter, arduplane or ardurover. Not ardupilot! Asuming you have arducopter, open config file:
sudo nano /etc/default/arducopter
Make sure these line are present or make copy-paste from here:
TELEM1="-A udp:127.0.0.1:14550"
ARDUPILOT_OPTS="$TELEM1"
ave it with Ctrl+X, y and restart Ardupilot
sudo systemctl daemon-reload
sudo systemctl restart arducopter
sudo systemctl status arducopter
It should be active and running:
Check MAVProxy
MAVProxy is used to be able to connect to autopilot using desktop GCS (over onboard or local WiFi) and our web-based GCS simultaneously. It is already installed in Emlid Raspbian image, just check it:
mavproxy.py --master=udp:127.0.0.1:14550 --out=tcpin:0.0.0.0:5762
It should looks like this:
Ctrl+C to exit.
Video streaming
GCS.uno has a video server which can be used to stream realtime RTSP video to your web-based dashboard. Next steps describe how to configure onboard Raspicam camera module.
sudo apt-get update
sudo apt-get install autoconf automake libtool pkg-config libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libraspberrypi-dev gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad
If you have dependency warnings, try to solve them using following commands:
sudo apt-get install --fix-broken --assume-yes
sudo apt-get autoremove
sudo apt-get install -f && sudo dpkg --configure -a
CD to your home dir and clone gst-rpicamsrc (this is a GStreamer wrapper around the raspivid/raspistill functionality of the RaspberryPi):
cd
git clone https://github.com/GCS-uno/gst-rpicamsrc.git
cd rpicamsrc
chmod +x autogen.sh
./autogen.sh --prefix=/usr --libdir=/usr/lib/arm-linux-gnueabihf/
make
sudo make install
gst-launch-1.0 rpicamsrc bitrate=1000000 ! filesink location=test.h264
Ctrl+C after 10 seconds and check if file test.h264 exists and readable. Configuration of video streaming to GCS.uno servers is described in the next steps.
Install additional dependencies
NodeJs
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs build-essential
# Download and install board scripts
cd
git clone https://github.com/GCS-uno/drone_board.git
cd drone_board
npm install
Inside drone_board directory you can find two shell scripts mavproxy.sh and video.sh which help running MAVProxy and video streaming. If you are sure not to use them, just skip to next step, otherwise make them executable:
chmod +x mavproxy.sh
chmod +x video.sh
Get your drone keys
Sign in to your GCS.uno dashboard, add new drone and get its MAVLink and Video keys.
Then put them in following commands to be readable by scripts. For MAVLink key (replace abcd1234 with one copied from dashboard):
DRONE_MAVLINK_KEY=abcd1234; echo "export DRONE_MAVLINK_KEY=$DRONE_MAVLINK_KEY" >>~/.bash_profile && source ~/.bash_profile
# The same for Video key (replace abcd1234):
DRONE_VIDEO_KEY=abcd1234; echo "export DRONE_VIDEO_KEY=$DRONE_VIDEO_KEY" >>~/.bash_profile && source ~/.bash_profile
Start board scripts
Check MavProxt script;
./mavproxy.sh
# If it looks good Ctrl+C to exit and then run it in bg with PM2 process managers
pm2 start mavproxy.sh --name mavproxy
# now run drone.js to check connection with GCS.uno server
node drone
# If it reports that connection is established, Ctrl+C to stop and run it again with PM2:
pm2 start drone.js --name drone
# And finally start script for video streaming:
pm2 start video.sh --name video
Enable scripts to start on system boot
Enable PM2 to start on boot:
pm2 startup
# This will prompt a sudo command which must be copied and executed to enable autostart. Then save list of active processes:
pm2 save
# check it
pm2 list
Now check your GCS.uno dashboard, you can see you drone’s telemetry streaming.
Connect USB 4G modem
Almost all 4G modems work fine with Raspberry Pi computers without any additional configuration. Just check if you have SIM-card with enabled 4G internet option. Otherwise look into modem’s manual to find out how to use it with Linux-based systems.
Setup companion computer
How to set up companion computer to communicate with GCS.uno
These guide describes how to setup any Linux-based computer as a companion one. It can either be your laptop or headless Raspberry Pi on the ground or micro-PC onboard.
How it works
Telemetry messages got from autopilot board over serial or USB port, by wires or radio link, then a small script transmits these messages to GCS.uno server. When you open GCS.uno dashboard in a web-browser, this telemetry is got from server and rendered to a screen almost in realtime. In opposite direction, you press an action button on a web-page, this magically transforms to a MAVLink message and reaches onboard autopilot to be executed. Assuming you have your computer running with internet connected and command shell available.
Install MAVProxy
MAVProxy is a fully-functioning command-line GCS for UAVs. It is used to proxy one telemetry source to many different locations. For example, one for GCS.uno script, one for ROS, and another one for QGroundControl in local network. Follow official MAVProxy manual to install it on your system.
Telemetry source
If companion computer is placed onboard, it likely communicates with autopilot over serial (UART) port. Here is a good example of configuring Pixhawk with Raspberry Pi. Radio modems can be connected either over serial or USB port. Follow modem’s manuals to connect it to your computer.
Serial port
Check it with MAVProxy:
sudo -s
mavproxy.py --master=/dev/ttyAMA0 --baudrate 57600
This command makes MAVProxy listen serial port 0 for telemetry messages and show autopilot’s status messages in console. The same source will be also for a radio modem, connected over serial port.
usb port
Check it with MAVProxy:
sudo -s
mavproxy.py --master=/dev/ttyUSB0 --baudrate 57600
udp port
MAVProxy can also listen to local UDP port:
mavproxy.py --master=udp:127.0.0.1:UDP_PORT
If MAVProxy successfully connects with your autopilot continue with installing GCS.uno board scripts.
Install additional dependencies
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -sudo apt-get install -y nodejs build-essential
sudo npm install pm2 -g
cd
git clone https://github.com/GCS-uno/drone_board.git
cd drone_board
npm install
Inside drone_board directory you can find two shell scripts mavproxy.sh and video.sh which help running MAVProxy and video streaming. If you are sure not to use them, just skip to next step, otherwise make them executable:
chmod +x mavproxy.sh
chmod +x video.sh
Get your drone keys
Sign in to your GCS.uno dashboard, add new drone and get its MAVLink and Video keys.
Then put them in following commands to be readable by scripts. For MAVLink key (replace abcd1234 with one copied from dashboard):
DRONE_MAVLINK_KEY=abcd1234; echo "export DRONE_MAVLINK_KEY=$DRONE_MAVLINK_KEY" >>~/.bash_profile && source ~/.bash_profile
# The same for Video key (replace abcd1234):
DRONE_VIDEO_KEY=abcd1234; echo "export DRONE_VIDEO_KEY=$DRONE_VIDEO_KEY" >>~/.bash_profile && source ~/.bash_profile
Start board scripts
Open mavproxy.sh file and put in MAVLink source in right way described above:
nano mavproxy.sh
./mavproxy.sh
# If it looks good Ctrl+C to exit and then run it in background with PM2 process manager:
pm2 start mavproxy.sh --name mavproxy
node drone
# If it reports that connection is established, Ctrl+C to stop and run it again with PM2:
pm2 start drone.js --name drone
pm2 startup
pm2 save
pm2 list
Now check your GCS.uno dashboard, you can see you drone’s telemetry streaming.
FPV video streaming
Streaming realtime FPV video to GCS.uno media server
GCS.uno has its own video streaming server. To setup Raspberry Pi camera module to stream video follow Video streaming section in Navio 2 and Raspberry setup guide. If you deal with analog or HDMI video inputs, check Google how to set up your hardware to stream to media server. There are various formats in which video can be streamed: RTSP, RTMP, HTTP(S)-MPEG-TS. You need to get DRONE_VIDEO_KEY from your dashboard and replace it below. RTSP stream address:
rtsp://video.gcs.uno:554/drone/DRONE_VIDEO_KEY
rtmp://video.gcs.uno:1935/drone/DRONE_VIDEO_KEY
http://video.gcs.uno:80/drone/DRONE_VIDEO_KEY/mpegts
https://video.gcs.uno:443/drone/DRONE_VIDEO_KEY/mpegts
Connect with desktop GCS software
Connecting desktop and mobile Control Station software to GCS.uno MAVLink proxy server.
You can connect to your drone with your favorite desktop or mobile Control Station software using GCS.uno server.
Get links
Log in to your dashboard and add your drone to list.
Name it somehow and click Create. After new drone is added, check if your drone’s MAVLink System ID and MAVLink Component ID are correct. The default value for both of them is 1.
Click on the name and choose GCS link in popup menu:
You can use these credentials to connect almost any MAVLink-compatible GCS software to your drone:
Due to security reasons this TCP-MAVLink bridge is locked to your IP address and will be destroyed after one hour. Each time you click GCS link in the menu, a new bridge is created and the previous one is destroyed.
Connecting QGroundControl
OS: Windows, MacOS, Linux, iOS, Android QGroundControl website: http://qgroundcontrol.com
Video streaming
If you configured video streaming to GCS.uno media server, then copy the RTSP URL above and put it to General settings in QGroundControl
Telemetry link
Move to Comm Links and click ADD button:
Choose connection type as TCP, name it, copy & paste host address and TCP port number and click OK:
Click on the GCS.uno link button just created and then click Connect:
After connecting use QGroundControl as usual:
Flights history
view and analyze logs
Missions
mission editor
Use cases
parameter Monitoring
power and pipleline inspection
delivery drones
How tos
refs
The following wiki, pages and posts are tagged with
Title | Type | Excerpt |
---|---|---|
drone guide dev_setup | post | Tue, Oct 26, 21, Qt creator offers clickable symbols, auto-completion of the complete code base and building and flashing firmware for pPX4 |
Udemy qt5 course by Packt Publishing | post | Tue, Oct 26, 21, Dive into custom model-views, showcasing the power and flexibility of the mvodel view architecture, with extensive www applications |
VSCODE as IDE for PX4 devworks | post | a powerful cross-platform source code editor/IDE that can be used for PX4 development on Ubuntu 18.04 LTS and macOS (Windows support coming soon |
GCS uno server docs | post | Sat, Nov 20, 21, this guide will hoep to intall GCS uno server app along with NodeJs, Reds and RethingDB |
Django Django Two scoops | page | summary. |
🔭 Ground Control Station web-based approach | page | summary. |
ROS topic for micro control | page | summary. |
Rules of thumb | page | Contact me for any support issues. |
Revealjs gcs workflow | page | summary. |
VSCODE as IDE for PX4 devworks | post | a powerful cross-platform source code editor/IDE that can be used for PX4 development on Ubuntu 18.04 LTS and macOS (Windows support coming soon |