Activity detection software for Measure the Future scouts.
Go JavaScript CSS HTML
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


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.

beta  GPLv3 License

Raspberry Pi Installation (Raspberry Pi)

Instructions on installing Measure the Future can be found here.

Compilation/Installation (OSX)

  1. Download & Install Go 1.7
  2. Install OpenCV-3.2 via Brew:
	$ brew install opencv3 --with-contrib --with-ffpmeg --with-tbb
  1. Download and Install PostgreSQL
  2. 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

  1. Enable SSL by editing the postgres config, uncommenting the line #sss = on (Remove the #)
	$ vim postgresql.conf
  1. Restart
  2. 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
  1. Download and Install Node v4.4.7
  2. Update NPM
	$ sudo npm install npm -g
  1. Create project folder and get source from Github
	$ mkdir mtf
	$ cd mtf
	$ git clone
	$ 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
	$ go get
	$ go get
	$ go get -u
  1. 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/ up
	$ ./bin/migrate -url postgres://localhost:5432/mothership_test -path ./src/ up
  1. In a new terminal, build the frontend.
	$ cd src/mothership/frontend
	$ npm install
	$ npm run build


  1. Testing the backend
	$ go test -p 1
  1. Testing the frontend
	$ cd src/scout/frontend
	$ npm run test

Operating Instructions:

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")
    	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

Start measuring the future

Visit localhost:1323 in your browser.

Testing for the backend:

	$ go test -p 1


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