Lawn Mowing

In Class Exercise

package agentSystem;

import igeo.IVec;
import igeo.IPoint;

public class MowingAgent extends Agent {

float vel = 25;
double mowerwidth = 25;
double desiredoverlap = 0.25;
IVec baseDir;
IVec currDir;
boolean done = false;
int time = 0;
IPoint pt;
IVec newPos;
double turn = 1.57;

public MowingAgent(AgentManager _p5, IVec _pos, IVec _bdir) {
super(_p5,_pos); = new IPoint(this.pos);
this.newPos = new IVec(this.pos);
this.baseDir = _bdir;

public void mow() {

//determine which direction I need to be going
//change direction
//turn opposite each time
this.turn = -this.turn;
//turn around and shift down to get the desired mower overlap
this.newPos = this.pos.dup().add(this.currDir.dup().rot(this.turn).len(mowerwidth-(mowerwidth*desiredoverlap)));
//get back into the lawn


//determine how far Im mowing


public boolean inBounds() {
return this.p5.boundaryCrv.isInside2d(this.pos);

public void update() {
if(!done) {
} else {
System.out.println("whew, time for a beer");

public void redraw() {
pt.pos = this.pos;


Group 1: Where are we?


The launch point of our conversation regarding the prototype which is focused on tracking people and things, hovered around the idea of “dynamic transportation networks”.  An interesting and ambitious idea to say the least, but perhaps the idea is more solution than design tool.  To open up the proposition and get at some of the fundamentals that might drive the components of such a solution toward design tools, lets abstract back from bus’s + people.

At the very least one would have to know about the following things:

  • where groups of people were at and where they wanted to go
  • the state of the network (roads) on which the buses operated
  • where buses are within the network and what the state of those buses are

To generate dynamic routes for the buses would then involve an algorithm which could find and evaluate paths within the network.  This is not unlike systems currently in use by emergency management services to dispatch people and resources for things such as building fires.

To continue the abstraction we could say that the three things we need to be able to do are

  • identify properties of agents which occupy the network in continuous and discontinuous ways.  What or who is at or near a particular node or edge within the network and what properties are exposed to them.
  • manage the nodes and edges of the network, what are their properties? how do we logically traverse the edges of the network?
  • formulate singular paths or sub networks from within the network.  Consider the way in which a single path through a collection of network nodes, is itself a network, if only a simple one

In this way, the underlying mechanisms that enable us to find say the fastest, or shortest route for a bus might be the same mechanisms that we would use to form ad-hoc networks through nearly any system which can be considered as a network.  Perhaps the prototyped design tool might allow it’s user to generate or identify particular sub networks which a person or thing is connected to based on where they are at in space?  Of course one of the more interesting conditions of this type of network thinking, still has to do with our “position” or “location” in a network, but perhaps those networks might be logical networks but not physical networks.  For instance, where are you located with respect to the social or professional network that is the Architecture community of Chicago, or of the world.  Through forming, collecting and analyzing these sub networks over time perhaps we can begin to understand not only where we are or what we are connected to, but how the super networks might be better organized.  What kinds of feedback loops can be  established here?

Ultimately this question of “Where Is Something”, physically, logically, semantically, is at the heart of what will see in the emerging paradigm of contextual computing.



The graph, a term for network from the area of mathematics referred to as graph theory, describes a collection of nodes and the edges which connect them.  Graph theory is one of the most critical and fundamental aspects to computation and data.  Much of the underlying data structures for modern software rely on graph representations of system components.   Learning how to logically or computationally move or traverse through graphs is essential to searching, sorting, analyzing, and generating: algorithm’s such as Depth-first searchBreadth-first searchDijkstra’s algorithmNearest neighbour algorithm.  More specifically algorithm’s such as A* pathfinding algorithms, which underpin much of the artificial intelligence world from video games to data mining, enable goal or objective based navigation of complex networks.

Networks in Databases
To get started operating on data networks it is imperative that we properly store our networked data.  While we will likely not be utilizing explicitly graph oriented databases, it is worth mentioning that databases organized around the premise of graph’s exist.  In the studio and seminar we will be focusing on the utilization of the postgres/postgis relational database.  Fortunately the prevalence of networks in geospatial thinking has lead to the development of some critical tools which aid in our analysis of networks using postgis data structures.

pgRouting extends the PostGIS / PostgreSQL geospatial database to provide geospatial routing functionality.

Advantages of the database routing approach are:

  • Data and attributes can be modified by many clients, like Quantum GIS and uDigthrough JDBC, ODBC, or directly using Pl/pgSQL. The clients can either be PCs or mobile devices.
  • Data changes can be reflected instantaneously through the routing engine. There is no need for precalculation.
  • The “cost” parameter can be dynamically calculated through SQL and its value can come from multiple fields or tables.

In addition a series of tools for importing data such as street networks have been developed for pgRouting enabling aquisition from sources such as Open Street MapOSM2PGSQL, and OSM2PGROUTING
Tutorials: beginners guide, workshop (extensive)

Startup technologies (first prototype)
Without presuming too much about the prototype, it’s safe to say that the system would take some kind of input (perhaps from the physical world i.e. sensor or maybe through an interactive interface), analysis or computation would be performed and some type of network oriented output produced.

Because of the immediacy to topics of transportation and logistics which spear headed the project, I would suggest that you simply begin with the transportation network data which we have access to through the data portal and OSM.  A first pass tech prototype would therefore include:

  • the process of importing this data into pgRouting friendly structures
  • demonstrable querying and route formation using pgRouting SQL queries
  • the representation of generated routes within qgis or google earth.
  • Additional considerations might include the integration of CTA api data into our database.  This would involve a simple app which could parse the XML data from the CTA’s system into table structures in our PostGres db for inclusion with base network data.

From this point, we can validate functionality and begin to think more laterally about the criteria used to create and/or interact with the data.  We start with shape based networks (road center lines), developing an understanding of how pgRouting is working, then begin to explore other networks and forming networks on the fly rather than as shape file imports.

Research Terms

  • Graph Theory
  • Topology
  • Koenigsberg Bridge Problem
  • Dijkstra’s Algorithm
  • A* Pathfiinding algorithms
  • CTA Transportation API
  • XML to PGSQL
  • pgRouting
  • Internet of Things
  • iBeacon, NFC, BlueToothLE
  • Mesh networking

Thursday 9/12 – group formation

Please meet Jordan + Thomas for a new iteration of the group project granule mapping on Thursday at 12:45, identify 10 concepts from your issue and technology research.  We will identify in the process of mapping the studio, 3-4 small groups which form a productive lineage of research relationships.

Impromptu Studio Meeting, Thursday 9/5

We will be having an all studio meeting this Thursday, September 5th,  we will begin at 12:45. Please arrive promptly, bring your lunch.

Each student is asked to bring the following:

  1. 5 critical issue oriented concepts.
    These should be terms, statements, or questions pertaining to your research.
  2. 5 Data sets titles, either that you have been looking at or that you have identified a need for.
  3. 5 Specific technologies
    These should be either concepts or products, things like “Hedonic Modeling”,  “Predicative Analysis” for concepts or “IBM Big Sheets”, “Raspberry PI” for products.

For each of these items, please print them out in large text on a single sheet of 8 1/2″ x 11″.  You should have 15 sheets with 15 different statements on them.

If you would like to meet to discuss your projects before the group meeting, professor Kearns will be available from 9:30-12:30 to do so.

Friday’s at SOM

This Friday will kick off your weekly meetings with SOM.

SantaFe Building
224 S. Michigan Avenue
Suite 1000
Chicago, IL 60604, USA

Please arrive promptly at 2:30 on the 10th floor. The Chicago Architecture Foundation’s Chicago Model is in the atrium of the building along with some interesting local architecture exhibitions which would be great to arrive early and check out.  You will be meeting with Keith Besserud, director of Black Box SOM’s internal digital research group, if you are the first to arrive ask at the front desk.

Please have all of your current research content posted to the blog, which will probably be the best approach to presenting to Keith.  I will be in the studio thursday from 9:30 – 4:00 with a break at lunchtime.  Would be great to meet with you thursday to prep for the conversation.


GIS Introduction

There are a number of resources from past blog content that have been integrated with the emerging IIT Data Cloud website.  Browse the tag cloud on the side.  Much of that content has been pulled from my past Urban Data courses.  In particular you should browse by the GIS tag.  You might also spend some time browsing work from sources like Bill Rankin’s or

From a technical standpoint, we introduced the free and open source GIS tool Quantum GIS, (QGIS), you should all download this and get it running, perhaps with some data from the city of chicago data portal.  Ujavai Gandhi has created a great collection of tutorials on using QGIS to perform just about all of the critical GIS methodologies.  We will be using a number of these in the seminar but certainly don’t wait to get going on them.