History of CSN
The CSN was established in 2009 as a summer research project by Michael Olson, a PhD student, working with four undergraduates at Caltech, supervised by Mani Chandy and Ben Krause in Computer Science and Robert Clayton and Thomas Heaton in Geophysics. Shortly thereafter, they were joined by Monica Kohler in Civil Engineering. The team built a working system with an accelerometer connected to a desktop computer that sent messages to the cloud, implemented on the Google App Engine.
The National Science Foundation funded this effort under cyber-physical systems research grant 0932392—"Community based Sense and Respond: Theory and Applications"—and the Caltech Summer Undergraduate Research Fellowship (SURF) program funded summer students. Later, the National Science Foundation funded grant 1143666—"Pervasive Computing for Disaster Response"—with Julian Bunn and Chandy as PIs; this grant supported continuing research on community based sense and response for detecting disasters such as fires, in addition to earthquakes. The Indian Institute of Technology (IIT), Gandhinagar, sent summer research students for several years to work on the project.
The Moore Foundation funded an effort to expand the system, make it robust, and deploy a significant number of sensors in the Los Angeles Basin. The client software was recoded to make it secure, robust, and have a small footprint since the software was run on computers that belonged to volunteers. The software on the App Engine was enhanced to reduce the time required to spin off new instances of computers (virtual machines) when demand arose due to rapid increases in the numbers of picks (high accelerations) during earthquakes.
Having sensors connected to computers hosted by volunteers proved to be problematic because volunteers, particularly in companies, were reluctant to run external software that executed continuously and acquired data from an outside group's sensor. Also, upgrading the software and managing different operating systems versions on different volunteer computers was difficult. These problems led CSN to implement a version of the client that only required power and an internet connection; an onboard microcomputer handled all other functions. The first onboard computer in the client was a Sheeva Plug with a one GHz processor and 1/2 GB memory running Linux. In subsequent versions, the client uses a Raspberry Pi 3b with 1 GHz and 1Gb.
The onboard computer connects to the Internet through a wired connector. We also built standalone clients that use solar power and 3G wireless communication; however, costs and scaling requirements have led us to deploy clients that required power and internet communication from external hosts. Sending data via cellular modems is expensive. Also, wireless connections break down more frequently than wired connections, and resetting wireless communications takes time.
We experimented with using the accelerometers in smartphones. We carried out experiments to estimate whether a phone was stationary or being carried by a person who was moving using Gaussian mixture models. The results are in Faulkner et. al. 2014, and an app was made available on the Google App Store. We decided to focus our work on a fixed network with dedicated sensors and onboard computers because the app sent phone locations that some people didn't like for privacy reasons; the app used some power on the phone; and the accelerometer data quality was not as good as fixed accelerometers, especially when the host was moving. Massive numbers of users of the app could help to overcome these obstacles.
A central idea of CSN is to carryout initial processing at the edges of a sensor network with continued processing in the network and cloud and with alerts going to phones and alarms. CSN built systems that analyzed data at dedicated computers between the edge (the onboard computer) and the cloud; also called computer cloudlets. Data from multistory buildings was acquired and analyzed in near real-time by having sensors in almost every floor of the building and a cloudlet in each building that acquired and analyzed data from the sensors and communicated with the cloud.
The CSN architecture and Python code base can be used for acquiring and analyzing streams of data generated by all types of sensors and by social media and other sources. We are working on testing the code base with data streams in addition to those generated by accelerometers.