Friday, September 16, 2016

Aggregate Programming in the GIS world

One of the projects I’ve been working on for the last year or so is an interesting application of aggregate programming to airborne sensor planning.  The motivation behind this project is that lots of people want to use data from airborne sensors, whether on drones or manned platforms, for disaster response, traffic management, law enforcement, wildfire management, etc.  Those sensors, however, spend an awful lot of their time idle because there’s a lot of time spent in transit, not near one of the things the sensor's owner is trying to get information about.  If you could share those sensors opportunistically, however, they could be put to other uses in that down-time, and that’s what the system we’ve been working on does.

It turns out that a particularly easy way to implement this sensor sharing is using Protelis, our aggregate programming framework: with the rest of the project in Java, it’s simplicity itself to set up an agent-based representation of the scenario using Protelis, with agents for platforms and for sensor goals.  Then we let the agents talk to one another with an aggregate program to set up the plan, and let the plan evolve incrementally as more information comes in, updating the agents.

One of the things that has been most fun for me in working on this project has been playing with real GIS data. To make a realistic scenario, we wanted to have a reasonable example of how stuff is actually distributed in the real world, and so we found a whole bunch of publicly available GIS information about infrastructure in the San Francisco area.  It’s amazing to me how much is just sitting out there available online, like lists of all the cell phone towers, dams, and bridges.  There’s a lot more dams that you might think, too — maybe only a few really big ones, but lots of little ones.  We’ve been working with this information using an awesome open framework made by NASA called WorldWind, which has all sorts of pre-existing resources and computational support built in, as well as making beautiful visualizations.  Sometimes I just like to sit and explore our scenarios as they play.

WorldWind visualizing a fragment of a plan for a UAV (blue) to survey critical infrastructure south of San Francisco (red)
Anyway, long story short, our implementation works nicely in the real world.  Back in May, we published the first paper describing the framework, using our San Francisco earthquake scenario to show that there really is a lot of potential for sensor sharing with realistic goals.  Our second paper, which I’ve just presented at the eCAS workshop at IEEE SASO, shows that the agent-based planning can adapt quickly and effectively to highly dynamic situations, and can also provide good resilience by having more than one platform cover the same sensing goal. Next step: testing it out in the real world, we hope, where it can move towards really being able to help people.

No comments: