General Information
The Magic Bus project was started in 2004 as an effort to improve the experience of University bus passengers by enabling them to see where buses are and when they can be expected at bus stops. A student-run project, Magic Bus is a joint effort, funded by the U of M Parking & Transportation Services and implemented by the College of Engineering's Atmospheric, Oceanic, and Space Science Department.
The project was overseen by Professor Chris Ruf of the AOSS and EECS Departments, with technical assistance from AOSS engineering staff. The system itself was designed and implemented primarily by undergraduate engineering students in Electrical Engineering, Computer Engineering, Computer Science and the Undergraduate Research Opportunity Program (UROP) program.
Using the Global Positioning System (GPS), the system is able to display real-time bus location data on a publicly available website with less than fourteen seconds latency. Its key feature for riders is its ability to also display an estimated number of minutes until the next bus will arrive at a given stop, so riders know when to head to the bus stop.
There are several ways to access the data disseminated by Magic Bus. The primary way is this website. There is also an AOL Instant Messenger Bot which allows users to access the data not only from a computer, but also from mobile phones. Finally, for the more technically inclined, we are offering part of the back-end of our system: an XML feed that contains all of the data displayed on this site. Users can use this data in any way they see fit. Potential applications include Google Homepage Gadgets and Apple Dashboard Widgets.
If you are a University of Michigan student and would like to get involved in the Magic Bus project, or have other technical questions about our system that are not addressed here, we encourage you to e-mail the Magic Bus team at magicbus@umich.edu. Other inquiries should be directed to the bus supervisors at Parking & Transportation Services.
AIM Bot
The AIM Bot (short for AOL Instant Messenger Robot) is an AIM screen name to which users can send an instant message to obtain bus time-of-arrival data. The screen name is bustoa.
Basic usage is as follows:
- Send the name of a stop to receive the times-of-arrival for that stop
- To get a list of all stops, type route all
- To get a list of stops for a singe route, type route [route name]
- If you need a list of routes, type list routes
Note that the last three commands may not work from mobile phones because the messages returned may be too long.
For reference, the list of stops is:
XML Feed
The public XML feed is located at http://mbus.pts.umich.edu/shared/public_feed.xml. Its format is as follows:
<livefeed> <route> <name>Commuter Northbound</name> <topofloop>0</topofloop> <stop> <name>Kipke and Greene N</name> <name2>Plant Ops</name2> <toa1>1600.19</toa1> <toa2>2910</toa2> <toa3>2580</toa3> <toacount>3</toacount> </stop> <stop> <name>Administrative Services Building N</name> <name2>Admin Services</name2> <toa1>1627.79</toa1> <toa2>2937.6</toa2> <toacount>2</toacount> </stop> <stopcount>18</stopcount> </route> <routecount>1</routecount> </livefeed>
The entire feed is enclosed in the <livefeed> tag. Each route is its own child, and each stop is listed within that. Also within each <route> is the <topofloop> node and the <stopcount> node. <topofloop> is the stop in a route's sequence that represents the top of that route's loop, if that route is a loop. For example, the Northwood route goes up to the stop Northwood V 1 before it comes back down. Northwood V 1 is the 19th stop in the Northwood sequence (starting with C.C. Little being 0), so <topofloop>'s node value would be 19. If a route is not a loop, the value is 0. <stopcount> is the total number of stops on a route, and <routecount> is the total number of routes in the feed.
Within each route, each stop is represented by a <stop> node. Each stop has two names: the official, unique name (<name>), and a non-unique but more readily recognizable name (<name2>). Also in each stop are one or more <toa> nodes, which contain the estimated number of seconds until a bus of the current route will arrive at the current stop. They are not necissarily in any sorted order. Finally, the <toacount> node contains the number of <toan>s for that stop.
