Skip to content

GRVC repository including the Graphical User Interface developed for the operation of a team of heterogeneous UAVs.

License

Notifications You must be signed in to change notification settings

alvcaballero/multiuav_gui

Repository files navigation

MultiUAV-GUI

Releases DOI

A GCS for multi UAV & long range inspection

This repository prvides an GCS software that allow command and monitoring multiple UAVs for a heterogeneous fleet of unmannned Aerial Vehicles (UAVs). This project is part of Multi Project

Example of the GCS interface

Table of Contents

Development Setup

First, clone the repo and cd into the project:

git clone https://github.com/alvcaballero/multiuav_gui.git
cd multiuav_gui

Local setup (Linux & Windows)

Install dependencies:

cd server
npm i
cd ..

For case you comunicate through ros do you have to setup a docker container

  1. Install Docker container and prepare the container
cd docker
docker build -t muavgcs:noetic .

or build with non root user

docker build --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) -t muavgcs:noetic .

  1. modify the docker/container_run.sh and change the PROJECT_DIR value and run
cd docker
nano ./container_run.sh
  1. put repos and in catkin
https://github.com/dji-sdk/Onboard-SDK.git
mkdir build
cd build
cmake..
sudo make -j7 install
cd ..

mkdir catkin_ws && cd carkin_ws
mkdir src && cd src
catkin_init_workspace

git clone --recurse-submodules --branch GimbalPitch -j8 https://github.com/alvcaballero/multiUAV_system.git
git clone https://github.com/miggilcas/Onboard-SDK-ROS
// git clone https://github.com/alvcaballero/multiUAV_system.git
// git clone https://github.com/alvcaballero/multiuav_gui.git
// git clone https://github.com/dji-sdk/Onboard-SDK-ROS
// git clone https://github.com/grvcTeam/grvc-utils.git
// git clone https://github.com/CircusMonkey/ros_rtsp.git
// git clone https://github.com/miggilcas/simple_vs.git

cd ..
catkin_make

Run locally

Backend

Move to the server directory:

cd server

Open .env.example and copy its content into a new file named .env, then set the correct value for all things. Now start the server:

npm run server

Frontend

Move to the client directory and run :

cd client
npm run start

Backend will be running on port 5000 and frontend on port 3000 (if not already in use).

RosBridge

Mode to the docker directory and run:

cd docker
./container_run.sh

In the container run for enable the rosbridge and GCS can connect with de UAVs

roslaunch aerialcore_gui connect_uas.launch

Docker (Linux)

Open .env.example and copy its content into a new file named .env, then set the correct value for all things. Install dependencies:

docker-compose run server npm i
docker-compose run bridge roslaunch aerialcore_gui connect_uas.launch

Run on Docker containers

docker-compose up

Production Setup

Local (Linux & Windows)

Frontend

Move to ./client/

npm i -g serve

Build the app:

npm run build # Or yarn build

Backend

Move to ./server/ and open .env.example and copy its content into a new file named .env, then set the correct value for all things. Now start the server:

npm run server

Docker (Linux)

Build images and run containers:

docker-compose -f docker-compose.yml -f docker-compose.prod.yml up

Documentation

The documentation of this project is Documentation HERE

📋 Features

  • Multi-robot: Allow monitoring and control multiple robot at same time or individual.

  • Heterogeneity: Each vehicle can possess distinct capabilities, including various velocities and battery requirements (maximum time of flight).

  • Multi-User: Interact with the web application to monitoring and control de robot fleet or a single robot can be access athrough internet or in local network.

  • Third-party sotfware: Interact with other software thought API like abstraction layer for big proyects.

  • ROS easy integration: Easy integration with diferents robot using ROS

  • Mission Planning: Allow create waypoint mission in the web interface and export in diferets formats.

  • Mission Planning: Allow create waypoint mission in the web interface and export in diferets formats.

  • Video Straming from robot: Actually allow integration to mavlink through ros packages mavros, in future use directly mavlink.

  • Mavlink integration: Actually allow integration to mavlink through ros packages mavros, in future use directly mavlink.

Screenshot in real Mission

⚙️ Installation

  1. To install MultiUAV-GUI need node 18 and npm and docker, I remend use nvm for use npm .

  2. Clone the repository.

git clone https://github.com/alvcaballero/multiuav_gui.git
cd multiuav_gui
  1. Install the requirements of server.
cd server
npm install

🖥️ Usage

The web interface use openStreatMaps and for elevation profile use OpentopoData

  1. Configure the server to modifi and edit .env and devices_init.yaml
cp multiuav_gui/server/.env.example multiuav_gui/server/.env
cp /multiuav_gui/server/config/devices/.devices_init.yaml' /multiuav_gui/server/config/devices/devices_init.yaml'
  1. Run server
cd multiuav_gui/server
npm run server
  1. Run rosbridge in docker
./container_run.sh
roslaunch aerialcore_gui connect_uas.launch

  1. Open the interfaz in browser http://localhost:4000/

optional use tmuxinator

Interface for control and monitoring of multiple UAV in mision

tmuxinator start -p muav-gui.yml

optional develop web interface

for development of MUAV-GUI can access to http://localhost:3000/

cd multiuav_gui/client
nvm use 18
npm install
npm run start

Documentation

you can see the documentacion for integration in Documentation HERE

additional docs

  1. Dependencias e instalacion de GCS
  2. simulation PX4 Vtool
  3. simulation PX4 Vtool
  4. UAV camera Stream

Future Work

  • Implement option to exchange ROS messages over the network,s messages using Flatbuffers without Ros on server like robofleet
  • access control
  • Data Bases model for maintain the information.

Releases

Last

  • integration with external plannig

Tag V1.4 (Download images form UAV)

Tag V1.3

Test and Setup for Muav on Proyect Omicron Demo in Plaza de Agua

  • Group points and move all route , in edit mission
  • streaming of video using Websockets in MVS Architecture
  • Donwload mission in diferentes file format

Tag V1.2

  • Calcule middle point for create a new mission

Tag V1.1

  • Creation mission page for eddit mission

References and interesting project to help in develop

  • inspector software_UAV in this project files from the camera are held via ftp and stored in the drone's backpack and then sent to the gcs via bashpass using and scp, this is done directly on the drone.

  • autonomus landing

  • Robot Fleet Open Source Communication and Management for Fleets of Autonomous Robots To exchange ROS messages over the network,s messages using Flatbuffers.

  • DJI ROS OSDK custom DJI ROS SDK package with all sensors avoidance and download camera images.

  • UAL ROS UAV abstraction layer

  • altitude sensor

  • ROS_RTSP publish video for robot to server

  • Mediamtx Server multimedia for streaming video in server part

  • traccar-web fleet management

Citation

If you find UAL useful in your research, please consider citing:

@inproceedings{poma2024Icuas,
  title={Open-Source Web-Based Ground Control Station for Long-Range Inspection with Multiple UAV s},
  author={Poma, Alvaro Ramiro and Caballero, Alvaro and Maza, Ivan and Ollero, Anibal},
  booktitle={2024 International Conference on Unmanned Aircraft Systems (ICUAS)},
  pages={1385--1392},
  year={2024},
  organization={IEEE}
}

About

GRVC repository including the Graphical User Interface developed for the operation of a team of heterogeneous UAVs.

Resources

License

Stars

Watchers

Forks

Packages

No packages published