Skip to content

MeasureTheFuture/scout

Repository files navigation

Scout

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 Postgres.app
  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 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
  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/github.com/MeasureTheFuture/scout/migrations up
	$ ./bin/migrate -url postgres://localhost:5432/mothership_test -path ./src/github.com/MeasureTheFuture/scout/migrations up
  1. In a new terminal, build the frontend.
	$ cd src/mothership/frontend
	$ npm install
	$ npm run build

Testing

  1. Testing the backend
	$ go test -p 1 github.com/MeasureTheFuture/scout/...
  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")
      -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

Start measuring the future

Visit localhost:1323 in your browser.

Testing for the backend:

	$ go test -p 1 github.com/MeasureTheFuture/scout/...

License

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/.