Skip to content
Simulation environment for UAVs, ROVs and AUVs using gazebo physics and unity rendering.
QML Python Roff Shell Dockerfile JavaScript
Branch: master
Clone or download

Latest commit

harishanand95 Update README.md (#8)
Add link to the website
Latest commit 340c67e Apr 3, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
autonomous_sys_build Adding chrome, toml and removing firefox shortcuts (#6) Apr 3, 2020
reference Initial commit Jul 4, 2019
setup_host
.gitignore
LICENSE Initial commit Jul 4, 2019
README.md Update README.md (#8) Apr 3, 2020
build.sh Initial commit Jul 4, 2019
preinstall.sh Initial commit Jul 4, 2019
run.sh Initial commit Jul 4, 2019

README.md

OpenUAV Flight simulator for single and multi UAVs

https://openuav.us

Introduction

The OpenUAV is a simulation environment developed for Unmanned Aerial Vehicles. The goal of this framework is to have an easy to setup, UAV testing framework for single and multi-UAV simulations. The containerized architecture makes this framework capable of scaling and hosting mutiple simulations in an on-premise or cloud environment. This project is a modification of the willkessler/nvidia-docker-novnc to include PX4/QGroundControl software packages UAV simulations.

An example workflow that implements visual servoing for UAVs using Apriltags & YOLO is available in https://github.com/DREAMS-lab/nsf_cps_challenge

Acknowledgements:

  • NSF grant CNS-1521617
  • USDA grant 2015-67021-23857
  • GRASP Lab, University of Pennsylvania
  • Penn Aerial Robotics
  • School of Earth and Space Exploration, ASU
  • Arizona State University
  • [@willkessler] (https://github.com/willkessler)

Authors: Harish Anand, hanand4 (at) asu (dot) edu;

Prof. Jnaneshwar "JD" Das, Distributed Robotic Exploration and Mapping Systems Laboratory, ASU School of Earth and Space Exploration

UPDATE

  • Support for CUDA inside containers (useful for YOLO and other object detection algorithms)

Building a GPU-enhanced Lubuntu Desktop with nvidia-docker2

To build on a plain vanilla Google Compute GPU host:

  1. Spin up a GC GPU host on the google console. Make sure it has at least one Tesla K80 GPU, and decent amount of VCPUs (e.g. 4, and enough disk space, at least 50Gb). Zone us-east-1c seems to be the best choice as of April 1, 2018.
  2. Upload this repo and unpack it in /root/build or wherever you like as a temporary location.
  3. Run preinstall.sh. This just runs apt-get update and puts in screen and emacs for getting started.
  4. Run build.sh. This will build everything needed to start up a nvidia-docker2 container with Ubuntu 16.04 and Lubuntu desktop.

To build on local machine with GPU:

  1. Replace autonomous_sys_build/xorg.conf with the xorg.conf file for your GPU.
  2. Run preinstall.sh. This runs apt-get update and puts in screen and emacs for getting started.
  3. Run build.sh. This will build everything needed to start up a nvidia-docker2 container with Ubuntu 16.04 and Lubuntu desktop.

Advanced

  1. You can try our https://hub.docker.com/r/dreamslab/openuav image to setup the system (GCP K80 GPU), it's recommended to use build.sh.

Running the container

To run the container on this host, use run.sh. Note that NoVNC will expect connections on port 40001. Then surf to your host on that port.

Nginx configuration

To setup a local machine with Nginx proxying each port as a unique subdomain, please use the following the Nginx template.

server {
        server_name ~^term-(?<subnum>\d+)\.openuav\.us$;
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/openuav.us/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/openuav.us/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
        auth_basic "Private Property";
        auth_basic_user_file /etc/nginx/.htpasswd;
        location / {
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection $connection_upgrade;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                if ($subnum ~ [0-9])
                {
                        proxy_pass http://127.0.0.1:400$subnum;
                }
                if ($subnum ~ [1-9][0-9])
                {
                        proxy_pass http://127.0.0.1:40$subnum;
                }
                proxy_ssl_certificate /etc/letsencrypt/live/openuav.us/fullchain.pem; # managed by Certbot
                proxy_ssl_certificate_key /etc/letsencrypt/live/openuav.us/privkey.pem; # managed by Certbot
                proxy_hide_header 'x-frame-options';
                proxy_read_timeout 61s;

                # Disable cache
                proxy_buffering off;
        }
}

OpenUAV video & paper

Video https://www.youtube.com/watch?v=Tcz61dXIyAs Paper https://arxiv.org/abs/1910.00739

Known issues

  1. In the local setup, if you switch users the containers have to be restarted to update for Xorg changes. A fix for it is if your machine has more than one GPU, then you can run containers on the other GPU by running an xserver in it.
You can’t perform that action at this time.