Skip to content
Snippets Groups Projects
README.md 2.35 KiB
Newer Older
Nicolas Pope's avatar
Nicolas Pope committed
# Future Tech Lab
Nicolas Pope's avatar
Nicolas Pope committed

Nicolas Pope's avatar
Nicolas Pope committed
This monorepo contains all elements of the FTL software system.

Nicolas Pope's avatar
Nicolas Pope committed
* [Components](components/) : Modular components compiled as static libs
  * [net](components/net/) : A p2p messaging library for C++ and JavaScript
  * [rgbd-sources](components/rgbd-sources/) : Abstraction and implementations of different RGB-Depth data sources
Nicolas Pope's avatar
Nicolas Pope committed
  * renderers : A collection of visualisation tools, including for RGB-D and point clouds
  * scene-sources : Abstraction and implementations of 3D scene data sources
Nicolas Pope's avatar
Nicolas Pope committed
  * [common](components/common/) : Utility and configuration tools
* [Applications](applications/) : Executable apps for the different node machines
  * [ftl-vision](applications/vision/) : Stereo vision node in p2p network, generates an RGB-Depth net stream
  * [ftl-reconstruct](applications/reconstruct/) : Performs scene reconstruction from synchronised RGB-Depth sources
Nicolas Pope's avatar
Nicolas Pope committed
  * calibration-multi : All camera intrinsic and extrinsic calibration in one process
Nicolas Pope's avatar
Nicolas Pope committed
  * [ftl-view](applications/groupview/) : A quick camera viewing app that supports frame and video capture
Nicolas Pope's avatar
Nicolas Pope committed
  * [ftl-gui](applications/gui/) : Desktop GUI
* front-end : Client side FTL code, both web and native
* web-service : A web backend service provider acting as a form of proxy
* www : FTL Website
Nicolas Pope's avatar
Nicolas Pope committed

Nicolas Pope's avatar
Nicolas Pope committed
The architecture is a mix of C++ and NodeJS largely communicating over a p2p RPC
Nicolas Pope's avatar
Nicolas Pope committed
Overall, initial vision machines capture video sources and generate colour and
depth images. These images are then streamed from all such sources to a single
machine to reconstruct the scene in 3D. The reconstructed scene is then further
compressed and streamed to other machines for additional analysis, processing or
visualisation.

The whole system is configured using JSON config files, examples of which can be
found in the `config` folder. The intention is that a web interface will
eventually enable this configuration to take place online.

## Build
Use the following commands in the root repository directory to build:

```bash
mkdir build
cd build
cmake ..
make
```

In Windows have Visual Studio installed and use the cmake graphical interface
to configure the project.

You will need to have OpenCV and glog installed. CUDA and LibSGM are optional
but recommended also. OpenCV should have cuda stereo modules compiled, along
with the viz module if local point cloud display is required. These are contrib