Project drone. (Credit: AquaHacking/de Gaspé Beaubien Foundation)
Researchers face many difficulties. Assessing the ecological health of large geographic regions, especially those with a low population and few research facilities, is one of the many challenges scientists face. One such region is the Ottawa River in Canada, nearly 800 miles long with an overall drainage area of 55,000 square miles. Not only is it vast, but there are few human inhabitants and few research outposts. While gathering representative water samples in such a region is difficult enough, there is also the challenge of responding in a timely manner when problems arise. How can monitoring be performed, problems be communicated, and researchers respond, if there isn’t a supple system in place that allows a small number of researchers to perform the tasks of many? When faced with the lack of an adaptive, inexpensive environmental monitoring system, University of Toronto doctoral student in computer science Alberto Camacho and his colleague Patricio Córdova did the most reasonable thing they could do in such a situation: they devised their own system. Their technologically advanced system was designed to potentially be a part of the vast network of the Internet of Things (IoT).
In the Drone River Project, Camacho and his colleague developed a prototype to monitor the water quality of the Ottawa River, perform anomaly detection and conduct a rapid inspection. The system was designed to function automatically with little human involvement. Monitoring remote river areas like those of the Ottawa River was shown to be not only possible but also inexpensive and effective. Their prototype solution consisted of automating much of the monitoring and response process by monitoring the quality of the water using sensor data. Whenever the sensor data provided readings that were deemed to be indicative of a potential problem, a drone could be sent to make an inspection of the area. While many technologically advanced efforts today employ a drone component, Camacho and his team’s solution also included other components like automatic monitoring of social networks (e.g. Twitter), where automatic geo-located analysis of the messages was performed to detect possible anomalies in the quality of the water of the river. Camacho’s prototype showed that a solution like the one they proposed was technologically feasible. Some details of the Drone River Project were captured in a previous Environmental Monitor feature.
“To me, the fact that we were able to demonstrate technological feasibility was the best outcome,” says Camacho. “Of course, there is much more research that can be done. Other groups at the University of Toronto are doing related research with drones that inspect water, such as Angela Schoellig’s group. She is working with quadcopters in a project called Waterfly that does aerial environmental monitoring. My doctoral research itself is related to automatically constructing controllers, or programs, which satisfy user intent. The water inspection task was just one potential application of my research.”
Not one to rest on his laurels, Camacho has turned his attention to program synthesis in his doctoral research. “Program synthesis is the task of automatically constructing controllers, or programs, that satisfy user intent,” says Camacho. “The ‘classical’ way of programming is for a trained computer programmer to write code that implements a specification. For example, a programmer might write a program in C++ that makes sure that your intelligent thermostat maintains the home temperature within certain limits. This code has to be maintained, modified if the specifications change and fixed if bugs exist.”
The advantage of automatically synthesizing programs from specification (that is, the aim of program synthesis) is that implementing the program is no longer needed. Instead, the specification just needs to be defined, and the program that is generated is correct by specification. If the specification changes, then a new program is generated automatically.
Worldwide, many people now have access to technology and intelligent devices. This includes smart lighting systems, smart thermostats and so on. People have to program these devices, and many people find it challenging because they do not have basic programming skills necessary to perform rudimentary programming. “One of the challenges is then to allow people to program their devices in a form utilizing a described user intent (e.g. “I want the lights to turn off whenever I am not in the room, except if it’s Saturday and I am at the cottage. In this case I want to let people think that there’s someone inside the house so I want the lights to stay on.”). The average homeowner would have a hard time programming this behaviour for their smart lighting system. My work aims to allow the homeowner to specify the desired behaviour in English-like statements and for my program synthesis system to automatically generate the customized program from this English specification,” Camacho explains.
In the future, a homeowner might interact with the program synthesis system by speaking to their home devices or by typing in their specific English language requests. The program synthesis system associated with their home devices would be smart enough to figure out what the person wanted it to do. “We are not there yet,” says Camacho. “We know how to generate relatively simple programs from logical specifications. However, English is imprecise, sometimes ambiguous, and it can often be mistakenly interpreted. We need advances in this direction in order to better understand user intent. However, until this time comes, there’s nothing wrong with a smart device asking the homeowner to clarify or disambiguate their request.”
Camacho’s vision is that smart devices will be able to interact with humans, ask for their preferences, and also seamlessly learn from user behaviour. In order to accomplish this, techniques will be needed from different fields of artificial intelligence, not only from program synthesis. For example, there have been recent advances in the field of Reinforcement Learning, where computers can learn from observed user behaviour. There have also been advances in Neural Networks and Machine Learning. Computers can learn patterns from thousands of other people prior to the end user, and this learning will be better leveraged in the future to understand the intent of a specific person more accurately.
In the future, a program synthesis system could be used for, or in conjunction with, environmental monitoring. Perhaps a system could be integrated with satellite data, so if a person is on a hike the system could warn them that a storm heading their way and it will be there in an hour, so they would have time to protect themselves. Such a system would be excellent for keeping people safe during flooding season, in avalanche-prone areas, etc.
Camacho believes there is a lot of room for environmental monitoring tasks in the IoT. “We can think of individual tasks that need to be accomplished periodically, such as inspecting certain areas at least one time per week, monitoring the water quality daily, etc. Also, we can think of predefined protocol rules such as calling the firefighters if a fire is detected, or calling health authorities if certain levels of a poisoning substance is detected in the water, or generating a report with certain data that can only be obtained if certain subtasks are completed in a certain order. The problem is that many of these individual subtasks interact with each other, and we have a limited number of resources (whether time, people, or money) that we can spend. Automatic methods for program synthesis will be able to generate programs in a smart way that accomplishes the desired specification and accommodates for the finite resources that are available,” he says.
Generally, program synthesis for environmental monitoring could go under the general heading of safety-critical applications for humans. “If there is a storm, flooding, fire, or an environmental disaster, the program can initiate a safety protocol well before things get too bad, and keep the situation under control by anticipating potential changes to the environment (e.g. changes in the wind direction in a fire situation) and reacting immediately to them,” Camacho says. “The ability of program synthesis to generate programs that are provably correct relative to a set of rules and regulations is certainly interesting in safety-critical applications. When we did the Drone River Project for the Ottawa River, we were shocked by the number of decisions that had to be made manually by a human according to a very complicated set of rules and protocols. We think that in certain situations, humans may not have all the knowledge on hand and/or may not react fast enough in stressful situations. In contrast, a program, armed with the safety protocols and regulations can consider them all in accordance with the specific scenario, making a recommendation to the human and/or taking action. The problem with having a human ‘code’ the program manually is that errors can be introduced. However, the programs generated with program synthesis techniques are correct by specification.”
While much progress has been made in terms of environmental monitoring using the IoT, there is still much work yet to be accomplished. “It’s very challenging,” Camacho admits. “There is still a lot of research to do.”
Top image: Project drone. (Credit: AquaHacking/de Gaspé Beaubien Foundation)