OVERVIEW | PUBLICATIONS | LICENSE
EagleSense is a top-view tracking system that leverages a depth-infrared hybrid sensing pipeline for real-time human activity and device recognition. It provides a minimalistic RESTful API that can be used by ubicomp applications (e.g., proxemic-aware or cross-device systems) in interactive spaces.
- EagleSense: Tracking People and Devices in Interactive Spaces using Real-Time Top-View Depth-Sensing. In Proceedings of the 35th Annual ACM Conference on Human Factors in Computing Systems (CHI'17).
EagleSense: Tracking People and Devices in Interactive Spaces using Real-Time Top-View Depth-Sensing
Copyright © 2016 Chi-Jui Wu
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
-
Install Git (and Git Desktop).
-
Clone EagleSense.
cd /your_workspace/ git clone https://github.com/cjw-charleswu/eaglesense
-
Install Visual Studio with Visual C++.
-
Install Microsoft Kinect v2 SDK.
-
Download Boost C++ Libraries windows binaries.
-
Download OpenCV 3 windows binaries.
-
Install Python 3 (The Anaconda distribution will contain most of the Python requirements.), also see
requirements.txt
. -
Install XGBoost.
Follow this installation guide. Download XGBoost.dll and then install the Python package.
eaglesense/
+-- data/
¦ +-- topviewkinect/
+-- eaglesense/
¦ +-- server/
¦ +-- topviewkinect/
+-- models/
+-- config.json
+-- setup.py
+-- server.py
+-- topviewkinect.py
+-- requirements.txt
+-- README.md
Initialize project directories
```bash
cd /path/to/eaglesense/
python setup.py
```
-
Set the following system environment variables.
- BOOSTCPP=
/path/to/boost
- PYTHON3=
/path/to/python3
(or/path/to/anaconda
) - OPENCV3=
/path/to/opencv3
- Add
%OPENCV3%\build\x64\vc15\bin
,%PYTHON3%
,%PYTHON3%\Scripts
toPATH
.
- BOOSTCPP=
-
Open the EagleSense project
/path/to/eaglesense/eaglesense/topviewkinect/topviewkinect.sln
. -
Set
solution configuration
toRelease
andx64
. -
In the solution explorer, right click the
topviewkinect
project then selectProperties
. Include the following fields as needed. Make sure the versions are correct.-
VC++ Directories --> Include Directories
$(KINECTSDK20_DIR)\inc;$(VC_IncludePath);$(WindowsSDK_IncludePath);
-
VC++ Directories --> Library Directories
$(KINECTSDK20_DIR)\lib\x64;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(NETFXKitsDir)Lib\um\x64
-
C/C++ --> General --> Additional Include Directories
include;$(OPENCV3)\build\include;$(BOOSTCPP);$(PYTHON3)\include;$(PYTHON3)\Lib\site-packages\numpy\core\include
-
Linker --> General --> Additional Library Directories
$(OPENCV3)\build\x64\vc14\lib;$(BOOSTCPP)\lib64-msvc-14.0;$(PYTHON3)\libs;$(PYTHON3)\Lib\site-packages\numpy\core\lib;%(AdditionalLibraryDirectories)
-
Linker --> Input --> Additional Dependencies
opencv_world340.lib;kinect20.lib;python36.lib;_tkinter.lib;npymath.lib;%(AdditionalDependencies)
-
-
Open
Build
thenBuild solution
(CTRL + SHIFT + B).
-
Configure the EagleSense top-view tracking system via
config.json
in the EagleSense root directory.{ "tracking": { "framerate": 1, "orientation_recognition": 1, "interaction_recognition": 1, "restful_connection": 0 }, "interaction_model": "standingtablet-xgboost.model", "restful_server": { "address": "localhost", "port": 5000 }, "data": { "depth": 1, "infrared": 1, "color": 0 } }
-
Run
cd eaglesense/ # Option 1: Python script python topviewkinect.py # Option 2: Executable ./eaglesense/topviewkinect/x64/Release/topviewkinect.exe
Usage:
General: -v [ --version ] Version -h [ --help ] Help Advanced: -r [ --replay ] Replay -c [ --capture ] Capture -p [ --postprocess ] Postprocess -f [ --features ] Postprocess (Features only) -d [ --dataset_id ] arg Dataset ID (Required for advanced options) -n [ --dataset_name ] arg (=Untitled) Dataset name
-
JSON Data
{ "timestamp": 1450123752478, "skeletons": [ { "id": 0, "head": { "x": 208, "y": 165, "z": 65, "orientation": 90, }, "activity": "tablet", "activity_tracked": 1 } ] }
-
Run
cd eaglesense/ python server.py
Usage:
python server.py [-h] [--host HOST] [--port PORT] General: -h [ --help ] Help --host HOST Server IP address --port PORT Server port number