All Projects → electronicarts → ava-capture

electronicarts / ava-capture

Licence: other
Ava Capture is a distributed system to control and record several cameras from a central UI. This system would typically be used for a photogrammetry or 4D capture rig based on Ximea cameras.

Programming Languages

python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
typescript
32286 projects
HTML
75241 projects
javascript
184084 projects - #8 most used programming language
SCSS
7915 projects

Projects that are alternatives of or similar to ava-capture

Gipuma
Massively Parallel Multiview Stereopsis by Surface Normal Diffusion
Stars: ✭ 220 (+323.08%)
Mutual labels:  photogrammetry
Mvision
机器人视觉 移动机器人 VS-SLAM ORB-SLAM2 深度学习目标检测 yolov3 行为检测 opencv PCL 机器学习 无人驾驶
Stars: ✭ 6,140 (+11707.69%)
Mutual labels:  machine-vision
PyTrx
PyTrx is a Python object-oriented programme created for the purpose of calculating real-world measurements from oblique images and time-lapse image series. Its primary purpose is to obtain velocities, surface areas, and distances from oblique, optical imagery of glacial environments.
Stars: ✭ 31 (-40.38%)
Mutual labels:  photogrammetry
Mask-RCNN-CoreML
Mask-RCNN for Core ML
Stars: ✭ 116 (+123.08%)
Mutual labels:  machine-vision
TensorPy
Easy Image Classification with TensorFlow
Stars: ✭ 44 (-15.38%)
Mutual labels:  machine-vision
monodepth
Python ROS depth estimation from RGB image based on code from the paper "High Quality Monocular Depth Estimation via Transfer Learning"
Stars: ✭ 41 (-21.15%)
Mutual labels:  machine-vision
Alicevision
Photogrammetric Computer Vision Framework
Stars: ✭ 2,029 (+3801.92%)
Mutual labels:  photogrammetry
Laser control
Open-Source Laser for control mosquito, weed, and pest
Stars: ✭ 994 (+1811.54%)
Mutual labels:  machine-vision
Iterative-Closest-Point
Implementation of the iterative closest point algorithm. A point cloud is transformed such that it best matches a reference point cloud.
Stars: ✭ 101 (+94.23%)
Mutual labels:  machine-vision
computer-vision-notebooks
👁️ An authorial set of fundamental Python recipes on Computer Vision and Digital Image Processing.
Stars: ✭ 89 (+71.15%)
Mutual labels:  machine-vision
smartcar-vision
利用大规模视觉导航机器人进行快递分拣,涉及调度系统的设计、视觉导航机器人设计、大规模机器人模拟软件设计、路径规划算法研究,涉及技术栈java、C++、c、spring、swing、netty、openCV、ardunio、调度、路径规划、嵌入式、PID控制。——Using large-scale visual navigation robot for express sorting involves the design of scheduling system, visual navigation robot, large-scale robot simulation software, path planning algorithm research, and technology…
Stars: ✭ 29 (-44.23%)
Mutual labels:  machine-vision
velocity
Structure From Motion (SFM) for vehicle speed
Stars: ✭ 30 (-42.31%)
Mutual labels:  machine-vision
lodToolkit
level-of-details toolkit(LTK). Convert osgb lod tree to 3mx tree. Convert pointcloud in ply/las/laz/xyz to 3mx/osgb tree.
Stars: ✭ 81 (+55.77%)
Mutual labels:  photogrammetry
speedy-vision
GPU-accelerated Computer Vision for JavaScript.
Stars: ✭ 96 (+84.62%)
Mutual labels:  machine-vision
aruco-geobits
geobits: ArUco Ground Control Point Targets and Detection for Aerial Imagery (UAV/MAV).
Stars: ✭ 32 (-38.46%)
Mutual labels:  photogrammetry
Mvstudio
An integrated SfM (Structure from Motion) and MVS (Multi-View Stereo) solution.
Stars: ✭ 154 (+196.15%)
Mutual labels:  photogrammetry
Virgilio
Virgilio is developed and maintained by these awesome people. You can email us virgilio.datascience (at) gmail.com or join the Discord chat.
Stars: ✭ 13,200 (+25284.62%)
Mutual labels:  machine-vision
rekrei
Platform for crowdsourcing the digital recreation of lost heritage
Stars: ✭ 24 (-53.85%)
Mutual labels:  photogrammetry
prophesee ros wrapper
ROS driver for Prophesee event-based sensors
Stars: ✭ 63 (+21.15%)
Mutual labels:  machine-vision
CameraCalibTools
List of Camera Calibration Tools + Patterns
Stars: ✭ 64 (+23.08%)
Mutual labels:  photogrammetry

Ava Capture

SEED - Search for Extraordinary Experiences Division - Electronic Arts

Ava Capture is a distributed system to control and record several cameras from a central UI. This system would typically be used for a photogrammetry or 4D capture rig based on Ximea cameras. All the capture metadata is stored in a database, and the system can also be used to build a processing pipeline for the captured data.

The project contains three components: Ava Capture Node, Ava Website Frontend and Ava Website Backend.

The Ava Capture Node runs on the capture machines. These computers are directly connected to cameras, and will handle camera control and recording. Each node communicates with the central server.

The UI runs on a central web server. The server Backend is a Django project, and the Javascript Frontend uses Angular 2.

The Job Client part of our distributed job system. It can be used to implement specific pipelines to process captured data. This version contains implementations of jobs to Export files to a fileserver, and jobs to generate thumbnails from captured data.

Ava Capture Node

The Capture node has been tested on Ubuntu 16.04 and Windows 10.

Ubuntu 16.04

To build and run on Ubuntu 16.04, the first step is to install the Ximea SDK from http://www.ximea.com.

To compile, first git clone this project. Make sure these packages are installed:

sudo apt-get install cmake git
sudo apt-get install libboost-all-dev rapidjson-dev libavcodec-dev libavformat-dev libswscale-dev python2.7-dev

Then follow these steps to compile:

cd capture-node
cmake .
make

And finally run the node with this command. The server address corresponds to the machine running the Ava Website Backend.

./avaCapture --folder <folder to store recordings> [--server <server ip> --port <server port>]

It is also possible to use this script to run avaCapture and allow it to update itself from the UI:

./run_node_loop.sh &

Ava Website Frontend

The website is a single-page Angular application. It is compiled into a few static files that are served by the webserver (or the Django backend for development). The source code is compiled using Node.js.

Build Frontend (Linux using docker) (Recommended)

It is possible to build the frontend in linux using a Docker container.

A script called build_with_docker.sh is provided for this purpose. It installs Node.js and NPM inside a docker container, and use it to build the frontend.

Usage: build_with_docker.sh [dev|prod]

Build Frontend (Windows)

These instructions were tested in Windows. Building the frontend in Linux with node.js is very similar.

First Time Setup of Node.js Libraries

cd d:\code
git clone <git url for this project>
cd ava-capture\website-frontend
npm install

Build Dev

cd d:\code\ava-capture\website-frontend
npm run build:dev

This will generate files in /dist-dev. The DEV Django backend is configured to get these static files directly (in settings.py)

Build Prod

cd d:\code\ava-capture\website-frontend
npm run build:prod

This will generate files in /dist-prod. These files should be copied to the production server, and configured to be served at /d/. The static files in ava/static should be mapped to the website's /static address.

Ava Website Backend

The Backend can run on any web server (eg. nginx). For development purposes, it can also run directly from the Django server in Windows or other supported OS. It is possible to create a Python environment, install the libraries from requirements.txt and then run the django server with:

python manage.py migrate
python manage.py initialsetup
python manage.py runserver 0.0.0.0:80

Browse to http://:80/static/d/index.html. The default user/password is admin/admin. The Admin website for direct manipulation of the database is at http://:80/admin.

Running in Linux using Python Virtual Environment (recommended)

We have included a script called run_dev_webserver_venv.sh to execute Django inside a Python Virtual Environment.

This script installs the requirements to set up the virtual environment, then installs the python modules inside the vend using requirements.txt

Browse to the local website on http://127.0.0.1:8000/static/d/index.html. The default user/password is admin/admin. The Admin website for direct manipulation of the database is at http://127.0.0.1:8000/admin.

Running as a Docker container in Windows (for development)

It is also possible to run the DEV server in a Django container in Windows.

Prerequisites

  • Install Docker for Windows
  • Build frontend (see the website-frontend project)

Build the Docker image from GIT source

cd d:\code
git clone <git project url>

cd ava-capture\website-backend
docker build -t ava-django .

Run inside container

(changes will only be saved inside the container, so this is not really interesting for development)

docker run --name ava-django -p 8000:80 -v %CD%/../website-frontend/dist-dev:/dist-dev:ro ava-django

To run directly on the Windows filesystem

(useful for development, as we can update source code and it gets reloaded) and run a bash shell (this is suitable for development).

docker run --name ava-django -p 8000:80 -it -v %CD%:/code -v %CD%/../website-frontend/dist-dev:/dist-dev:ro ava-django bash
python manage.py migrate
python manage.py initialsetup
python manage.py runserver 0.0.0.0:80

Browse to the local website on http://127.0.0.1:8000/static/d/index.html. The default user/password is admin/admin. The Admin website for direct manipulation of the database is at http://127.0.0.1:8000/admin.

To clear the image

docker rm -f ava-django

Job Client

The distributed job system has two parts. The central database described in Website Backend and a set of Python Scripts to run on each machine available to run jobs. To run, simply execute:

python job_client.py http://10.10.10.10:8000

The url should correspond to the web server running the Ava Backend.

Authors

SEED - Search for Extraordinary Experiences Division - Electronic Arts

We are a cross-disciplinary team within EA Worldwide Studios. Our mission is to explore, build and help define the future of interactive entertainment.

Visit us at http://ea.com/seed

Contributing

Before you can contribute, EA must have a Contributor License Agreement (CLA) on file that has been signed by each contributor. You can sign here: http://bit.ly/electronic-arts-cla

License

Copyright (C) 2017 Electronic Arts Inc. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of Electronic Arts, Inc. ("EA") nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY ELECTRONIC ARTS AND ITS CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ELECTRONIC ARTS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].