Giter VIP home page Giter VIP logo

build_daq's Introduction

BUILD_DAQ: A data acquisition system for multi-room, multi camera setup

Maintainer: Murat Ambarkutuk

Email: [email protected]

VAST Lab, Mechanical Engineering Department,

Virginia Tech, Blacksburg, VA

Summary:

This repository contains the necessary tools and packages needed for Steelcase funded project called BUILD. This project involves with human pose detection in 3D with multiple cameras placed in different room located in Cheatham Hall, Virginia Tech. In this repository, one can find a various python modules and classes to create a RESTful API to interact with the Image Acquisition system as well as processing the collected images.

Installation

Dependencies:

OpenPose is needed to extract poses from the collected images. Please make sure OpenPose is installed correctly (with Python bindings). You can follow this link to obtain a comprehensive guide to install Openpose.

Obtaining the Repository

  1. Open a new terminal window with CTRL+ALT+T
  2. Run the commands sequentially: Clone the repository:
git clone https://github.com/eroniki/build_daq.git

Enter to the repository folder:

cd build_daq

Install the dependencies:

sudo -H pip install -r requirements.txt

Reboot the system:

sudo reboot now

Usage:

Upon completion of the installation, the system can be started directly with

python main.py

This script creates the REST API and starts serving a WEB-interface with which the system can be manipulated.

One can find the served with interface (locally):

http://0.0.0.0:5000

or if you'd like to access the system remotely, you can use a link similar to the one in below where THE_IP_ADRESS_OF_THE_LOCAL_MACHINE is the global IP address of the computer serving the system.

http://THE_IP_ADRESS_OF_THE_LOCAL_MACHINE:5000

Documentation

Main Code

The main controller of the code lay in main.py file. This python script creates and initializes all the classes needed in the project.

Flask App

The basic User Interface is created by using Flask, a web development tool for Python.

All the necessary tools and classes were implemeted in this class, which reside in app.py module. The documentation of the computer_vision class is automatically generated from the docstrings of the classes and the functions in it. The documentation is located here.

Utility Class

The documentation of the utility class is automatically generated from the docstrings of the classes and the functions in it. The documentation is located here.

Experiment Class

The documentation of the experiment class is automatically generated from the docstrings of the classes and the functions in it. The documentation is located here.

Computer Vision Class

The documentation of the computer_vision class is automatically generated from the docstrings of the classes and the functions in it. The documentation is located here.

Pose Detection Class

Camera Class

The documentation of the camera module and its contents are automatically generated from the docstrings of the classes and the functions in it. The documentation is located here.

Calibration Process

This calibration process is provided here

Contribution

If you would like to contribute to this project, please make sure you read and understand the contribution workflow.

build_daq's People

Contributors

eroniki avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

icatimmersive

build_daq's Issues

Bounding box generation and automation

For each detected person in each frame:

  • create a bounding box (a thumbnail image)
  • save the bounding box image into its corresponding location
  • extract features on the bounding box by using the vision package
  • save the feature locations and descriptors as numpy files by using the utils package

Triangulation

By using the computer_vision package, create an estimate for each matched persons.

Visualization tools

  • Visualization tool for 2d detections
  • Visualization tool for 3d estimations
  • Visualization for matching algorithm
  • Video exporting from the different visualization tools

Add skeleton api

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

add online extrinsic calibration

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Theme and UX Design

By using a framework like Bootstrap, the user interface should be designed to create a more pleasing look for the project.

pose detection automation

  • Create the folder structure for each frame each camera and each experiment.
  • For each frame, save the detected people into a json file to its corresponding location by using the utils package.

Develop a new class for coordinate transformations

There are some many coordinate frames defined in the project (one for each camera) some of which are related to each other with extrinsic parameters.

  • Read and parse devices.json to create a tree-like structure to define camera relations
  • By using standard libraries, implement transformation between cameras (we can depend on this for the most part.)
  • Define a global coordinate frame by using one of the cameras
  • Project all the joints from stereo camera coordinate frame to the global

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.