SATIRE: A Software Architecture for Smart AtTIRE ================================================ Summary: -------- - This paper presents a wearable system for monitoring a person's activity and location. The system uses a total of 5 motes out of which 4 are equiped with 2 axis accelerometers and the 5th mote with a GPS receiver. The user's activity is identified from the accelerometer data while the GPS is used to track the user's location when available. Data is sampled and buffered on flash, which is downloaded over a reliable protocol when in range of a base station. Activities such as walking, sitting, climbing stairs, typing, and reading are identified via 2 methods: (1) by extracting feature vectors from the raw accelerometer data and (2) by building and training a Hidden Markov Model (HMM). Data is synchronized between motes via a simple beaconing scheme. Each mote periodically broadcasts a beacon, which subsequent motes record and interleave with the current sample. Streams of data from different motes are synchronized later on a PC by aligning beacon messages. Other: ------ - Data collection: total of 6 MicaZ motes - 5 motes sample 2 accel chans @ 25Hz with 10-bits/sample truncated to 8-bits (2 motes per arm, below and above elbow, 1 mote near waist) - 1 mote equipped with GPS receiver - Reducing data: - Truncate samples from 10-bits to 8-bits - Compression (e.g. delta encoding) - "Stillness Filter" to not record periods of inactivity. Stillness is identified if both x and y axis do not change over a timewindow. Calculates the energy of a discrete difference signal, i.e. total energy over n samples is: E = sum[i->n](x_i^2), where x_i is a sample value - Data download - Wearable motes periodically send beacon messages. The base station indicates that it is ready to receive data from a mote by replying to the mote's beacon message. NACKS are used to achieve reliability. After the base station finished getting the data from the 1st mote, it moves on to the 2nd mote until data from all motes is downloaded. - Data synchronization - Motes periodically broadcast beacons with unique IDs (essentially consists of ). The received beacons are interleaved with the current sample. Samples between motes is later synchronized on a PC by aligning beacons. - Power management - Duty-cycle scheme: Mote goes to sleep after S seconds of "stillness". It then wakes up after N sec to check for "stillness". If mote is in motion, then it starts sampling and recording data to flash. The mote keeps track of the stillness period and records the length when the stillness interval terminates. Based on 2 experiments, roughly 90% of the time the mote was in the stillness period. - User interface - End user interacts with the system via an authenticated website. A web-server and DBMS run at a remote trusted location. - Privacy and security - Currently not really addressed - Activity identification: 2 methods - Feature extraction based: - extracted features: average, std dev, RMS, integral, temporal variation, rotational direction - temporal variation => "sum of absolute Euclidean distances between accel vectors of any 2 successive time instances." - rotational direction => "gives an idea of direction of rotation movement" - activity represented as a static N-dimensional vector (where N is the number of features). Activity is identified by extracting features from the raw data and applying a least error match with the trained N-dimensional vector. (description is very vague, section 4.5.2 gives an example: EWMA between x and y axis to identify activity) - HMM based: - Training phase: HMM learns model params the maximize prob of observing the representative data set - Inference phase: prob of an observation sequence calculated from HMM - Use an ergodic (every state can be reached from every other stat) and discrete observation HMM - Details - 10 states/activity (ranges of accel mapped to symbols) - 120 observation symbols/state - train HMM via Baum-Welch technique (based on an expectation maximization alg) - How activity identified: using Forward-backward procedure - prob for each activity is calculated - activity with highest prob is chosen - Evaluation summary - Throughput: achieved about 30 Kbps - Activity recognition (from 2 experiments same user for training and testing) - stationary activities (e.g. sitting, reading, typing, lying, riding elevator, writing, and eating) - HMM based performed well (70-100% accuracy) - Feature based performed poorly (10-90% accuracy) - Non-stationary activities - HMM based performed well (70-100% accuracy) - Feature based performed better (65-80% accuracy) - Activity identification without user specific training => wide variation (e.g. sitting => very good accuracy, reading => no correlation). Authors suggest that certain activities are specialized for each user (however, needs more users to validate this hypothesis)