Sat, Nov 20, 21, this guide will hoep to intall GCS uno server app along with NodeJs, Reds and RethingDB
This is a draft, the content is not complete and of poor quality!
ref-hd ref-px4 ref-raspi_pilot ref-vlc

4gremoteoperations-raspi

4gremoteoperations-cloudapp

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.

GCS.uno server can be deployed on any system (Linux, MacOS, Windows). Check the original installation guides of the mentioned components on how to install on your favourite OS.
If you set up a server with cloud providers, check network firewall rules to allow access to UDP and TCP ports for telemetry and video streaming. By default GCS.uno server uses UDP and TCP ports from 30000 to 65000 for telemetry, and TCP ports 554, 1935, 8081 for video streaming.
  • 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

initial-update

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¶

utils_dataflash

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 image

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

certbot

# 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

You can broadcast and view multiple streams with different IDs simultaneously. One stream can be viewed by multiple users. The overall number of publishers and viewers depends on your server performance.

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 image

image

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): image

Choose Wowza CDN-Ultra Low Latency(1) and click add button(2) ![image](https://user-images.githubusercontent.com/42961200/142723928-3f8bed13-bedc-473c-abac-9dba82b28532.png)

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): image

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): image

Copy your license key and continue with the next step: image

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

image

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): image

Type in drone’s name of your choice (1), choose DJI in Type menu (2) and click Create (3): image

Set live video playback URLs (1) and click Save (2): image

Configure GCS.uno app¶

Connect your mobile device to DJI remote controller, turn them on and launch GCS.uno app. image

Tap on menu button (1) and choose Settings (2). image

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). image

You can specify connection port in GCS.uno Server host field, e.g. you-gcs-uno-host.com:8080 If you don't specify connection port, the app will try to connect to default HTTP port 80 in case of SSL turned off. With SSL turned on the default port is 443. Allowed auth keys for mobile device connections can be set in configs/server_config.js file in DJI_KEYS list.

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:

image

Switch on telemetry (1) and video (2) streaming in side menu: image

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: image

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: image

Autonomous drones and rovers¶ Connect your autonomous drone’s charging station to GCS.uno Server: image

Connect autonomous drones directly to GCS.uno server using onboard 3G, 4G and 5G cellular modems and terminals: image

Create new drone in your GCS.uno control panel¶

Choose Drones in side menu (1), then click + New drone button (2): image

Type in drone’s name of your choice (1), choose MAVLink in Type menu (2) and click Create (3): image

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): image

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: image

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. image

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. image

Use your GCS.uno Server host and configured TCP port to connect with QGroundControl: image

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. image

image

Supported DJI drones: image

Supported iOS devices: iPhones and iPads running iOS 10 and above. image

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

image

  • 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. image

GCS.uno allows you to control multiple drones over internet. How the drone’s dashboard looks like in a web-app: image

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. image

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. image

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. image

Connecting desktop and mobile Ground Control Station software

image

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. image

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. image

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

image

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. image

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.

Log in to your dashboard and add your drone to list. image

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. image

Click on the name and choose GCS link in popup menu:

image

You can use these credentials to connect almost any MAVLink-compatible GCS software to your drone: image

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 image

Move to Comm Links and click ADD button: image

Choose connection type as TCP, name it, copy & paste host address and TCP port number and click OK: image

Click on the GCS.uno link button just created and then click Connect: image

After connecting use QGroundControl as usual: image


Flights history

view and analyze logs

Missions

mission editor


Use cases

parameter Monitoring

power and pipleline inspection

delivery drones

image


How tos

refs

node-mavlink

The following wiki, pages and posts are tagged with

TitleTypeExcerpt
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