Coder Social home page Coder Social logo

project-crunch's Introduction

Project Crunch


Introduction

The goal of this project is to build a long distance virtual reality (VR) streaming system for the University of Texas at Austin Nuclear Robotics Group (UT NRG.)

This software allows operators to control a robot which inspects radioactive nuclear facilities. It takes 360° video data, processes and formats it for compatibility with the HTC Vive headset, and transmits the VR stream to the headset. A remote computer is needed onboard the robot to process and transmit the camera stream.

The project is available via GitHub releases, and comes with an installer to configure your Linux environment, and a GUI to launch and configure cameras, ROS, RViz, and the Vive headset. The installer must be run on the base station computer and the remote computer aboard the robot. The installer also has an additional ssh configuration step that must be run on the base station with the remote computer attached via a local area network (LAN.)

This repository was initially designed and created by an ECE Senior Design team composed of: Beathen Andersen, Kate Baumli, Daniel Diamont, Bryce Fuller, Caleb Johnson, John Sigmon. The team was advised by Dr. Mitchell Pyror, head of the University of Texas Nuclear Robotics Group.


Table of Contents

Usage


How to download the app and install it

Downloading

TODO how to download from release

Installation

TODO run on both computers, config ssh keys, configure lan etc

Troubleshooting

FAQ

When I configure ssh keys, there is an error that says I only have one ssh key and I must manually reconfigure it. How do I do this?

  • You typically generate an ssh key pair, which includes a private key and a public key. The installer was only able to find one of the keys. If you do not have any need for your current key setup or it is a mistake, you can simply delete the extra key and re-run the configuration. If your key was moved by mistake, you can move it back and re-run the configuration. The program looks for keys in the default location, which is ~/.ssh/id_rsa and ~/.ssh/id_rsa.pub. If the program finds a key pair, it will just use the existing keys.

In Depth Troubleshooting

We recommend cloning the repository and running the project from the command line to debug more in depth errors. You may also reference the code documentation at #TODO. #TODO add more here as we come across it. Also include instructions for gathering stdout and stderr from the project.


How to use the app

From the Release

TODO Put instructions here on how to use the app from the release.

From the Command Line

Running the app from the command line requires a python environment, and a few minor changes to the code. First install a python environment and set up the project requirements. Instructions are available here.


How to modify and maintain this project


Navigating the Repository

The installer lives under installer/ and the main app lives under app/.

There is a minimal example with a working call to a bash script in examples/src/. Run it with fbs run.


Setting up a virtual environment

It is recommended to set up a virtual environment to contain the required python dependencies. (There are several ways to do this, the author's favorite is below) Further reading on virtual environments in python can be found here, here, here and here.

From the top level of the repository (but inside of it), run:

virtualenv -p python3 .env

This sets up an entire python installation as an environment under the name .env which is not descriptive, but keeps you from having to remember how to activate all my different environments.

Next activate the environment, and install all the python dependencies via the requirements file. When the environment is active it will display to the left of the prompt, as shown below (where the $ symbol indicates your prompt.)

$ source .env/bin/activate
(.env) $ pip install -r requirements

When finished with the repository or environment, you can deactivate it with the simple command deactivate.

(.env) $ deactivate
$ 

Pointing the app to a repository instead of a release

If you wish to run the main app from the command line, you must first modify app/src/main/python/main.py. Go to the get_env_vars() function and find the code that assigns a path to self.robot_launch and self.kill_launch. There are alternate definitions for these variables commented out, they must be uncommented.


Creating a new release

Introduction

There is a provided build script for generating a new release called release.sh. Before running it make sure:

  • Be sure your repository is on master by typing git status.
  • Be sure your [virtual environment](#Setting up a virtual environment) is activated.
  • You have the Ubuntu zip utility installed. (sudo apt-get install zip)

The script will compile the projects and generate a zip and a tar file. All artifacts of the process are left in a build/ directory. Running the script again automatically deletes the build/ directory. You must follow the GitHub instructions to post the release to the repository. Be prepared to provide a short description of the changes and have a new version number ready. For more information on software versioning, please see https://en.wikipedia.org/wiki/Software_versioning.

Usage

The script must be run with the version number as an argument. For example:

bash release.sh --version 0.0.1

This generates the build/ directory which contains a .tar.gz and a .zip. Create a release by following the GitHub documentation here.

Future work? #TODO automate it https://developer.github.com/v3/guides/getting-started/ https://developer.github.com/v3/repos/releases/#create-a-release

project-crunch's People

Contributors

btandersen383 avatar danieldiamont avatar jsigee87 avatar katebaumli avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.