A 'scout' is a webcam based device that can anonymously measure activity in and around physical spaces. You can build one these stand alone devices yourself, or get pre-built devices by joining the public beta program.
Instructions on installing Measure the Future can be found here.
- Download & Install Go 1.7
- Install OpenCV-3.2 via Brew:
$ brew install opencv3 --with-contrib --with-ffpmeg --with-tbb
- Download and Install PostgreSQL
- Create SSL keys for PostgreSQL
$ cd ~/Library/Application\ Support/Postgres/var-9.4/
$ openssl req -new -text -out server.req
$ openssl rsa -in privkey.pem -out server.key
$ rm privkey.pem
$ openssl req -x509 -in server.req -text -key server.key -out server.crt
$ chmod og-rwx server.key
- Enable SSL by editing the postgres config, uncommenting the line #sss = on (Remove the #)
$ vim postgresql.conf
- Restart Postgres.app
- Create Databases
$ psql
postgres=# create database mothership;
postgres=# create database mothership_test;
postgres=# create user mothership_user with password 'password';
postgres=# ALTER ROLE mothership_user SET client_encoding TO 'utf8';
postgres=# ALTER ROLE mothership_user SET default_transaction_isolation TO 'read committed';
postgres=# ALTER ROLE mothership_user SET timezone TO 'UTC';
postgres=# GRANT ALL PRIVILEGES ON DATABASE mothership TO mothership_user;
postgres=# GRANT ALL PRIVILEGES ON DATABASE mothershop_test TO mothership_user;
postgres=# \q
- Download and Install Node v4.4.7
- Update NPM
$ sudo npm install npm -g
- Create project folder and get source from Github
$ mkdir mtf
$ cd mtf
$ git clone https://github.com/MeasureTheFuture/CVBindings.git
$ cd CVBindings
$ cmake .
$ make
$ cp CVBindings.h /usr/local/opt/opencv3/include
$ cp libCVBindings.a /usr/local/opt/opencv3/lib
$ cd ..
$ export GOPATH=`pwd`
$ go get github.com/MeasureTheFuture/scout
$ go get github.com/onsi/ginkgo
$ go get github.com/onsi/gomega
$ go get -u github.com/mattes/migrate
- Build the backend, create config file and migrate databases.
$ go build scout
$ cp src/mothership/mothership.json_example mothership.json
$ ./bin/migrate -url postgres://localhost:5432/mothership -path ./src/github.com/MeasureTheFuture/scout/migrations up
$ ./bin/migrate -url postgres://localhost:5432/mothership_test -path ./src/github.com/MeasureTheFuture/scout/migrations up
- In a new terminal, build the frontend.
$ cd src/mothership/frontend
$ npm install
$ npm run build
- Testing the backend
$ go test -p 1 github.com/MeasureTheFuture/scout/...
- Testing the frontend
$ cd src/scout/frontend
$ npm run test
The scout is a stand-alone application with a basic web-based UI for controlling the measurement hardware. (ctrl-c stops the scout)
$ ./scout -help
Usage of ./scout:
-configFile string
The path to the configuration file (default "scout.json")
-debug
Should we run scout in debug mode, and render frames of detected materials
-logFile string
The output path for log files. (default "scout.log")
-videoFile string
The path to a video file to detect motion from instead of a webcam
Visit localhost:1323 in your browser.
$ go test -p 1 github.com/MeasureTheFuture/scout/...
Copyright (C) 2015, Clinton Freeman
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/.