Entry Date:
April 5, 2000

The Cricket Indoor Location System


Cricket is indoor location system for pervasive and sensor-based computing environments, such as those envisioned by MIT's Project Oxygen. Cricket provides fine-grained location information---space identifiers, position coordinates, and orientation---to applications running on handhelds, laptops, and sensor nodes.

There have been two major versions of Cricket to date (July 2004). Cricket v2, the current version, is substantially more accurate and energy-efficient compared to Cricket v1. v2 has a new software stack that runs on TinyOS, has better support for continuous object tracking, has support for various auto-configuration algorithms, etc.

Many applications in pervasive and sensor computing environments are context-aware, benefitting from knowledge of their external context, such as their location. Location may be specified as a coordinate position in some coordinate system, a geographic space such as a room or portion of a room, and as the orientation of a device within some coordinate system. Examples of location-aware applications that can be developed using Cricket including resource discovery, human/robot navigation, physical/virtual computer games, location-aware sensing, hospital/medical applications (e.g., equipment and patient tracking/monitoring), stream migration, pose-aware applications like the software flashlight/marker, etc.

Cricket is intended for use indoors or in urban areas where outdoor systems like the Global Positioning System (GPS) don't work well. It can provide distance ranging and positioning precision of between 1 and 3 cm, so applications that benefit from better accuracy that the cellular E-911 services and GPS will also find Cricket useful. Cricket is designed for low-power operation and can be used as a location-aware sensor computing node (running TinyOS), to which a variety of sensors can be attached.

The best way to learn about the Cricket Technology is to check out the Cricket v2 user manual. In a nutshell, Cricket uses a combination of RF and ultrasound technologies to provide location information to attached host devices. Wall- and ceiling-mounted beacons placed through a building publish information on an RF channel. With each RF advertisement, the beacon transmits a concurrent ultrasonic pulse. Listeners attached to devices and mobiles listen for RF signals, and upon receipt of the first few bits, listen for the corresponding ultrasonic pulse. When this pulse arrives, the listener obtains a distance estimate for the corresponding beacon by taking advantage of the difference in propagation speeds between RF (speed of light) and ultrasound (speed of sound). The listener runs algorithms that correlate RF and ultrasound samples (the latter are simple pulses with no data encoded on them) and to pick the best correlation. Even in the presence of several competing beacon transmissions, Cricket achieves good precision and accuracy quickly.

In addition to determining spaces and estimating position coordinates, Cricket provides an indoor orientation capability via the Cricket compass. This facility is not yet commercially available (it is a research prototype).

A Cricket listener attaches to the host device using an RS232 serial connection. The Cricket beacon and listener are identical hardware devices (see picture above). A Cricket unit can function as either beacon or listener, or can be used in a "mixed" mode in a symmetric location architecture (which may be apporpriate in some sensor computing scenarios), all under software control. You can attach a variety of sensors to a Cricket device using the 51-pin connector on the Cricket. We also have some research prototypes of Crickets with a Compact Flash (CF) interface, which may be a more convenient form factor to attach to handhelds and laptops than the RS232 interface. These devices may become widely available in a few months. They will be software- and protocol-compatible with the RS232 version. The picture below shows what the current CF device looks like; this design is likely to change.

Cricket uses active beacons and passive listeners, which has two significant benefits. First, it is not a tracking system where a centralized controller or database receives transmissions from users and devices and tracks them. Second, it scales well as the number of devices increases; a system with active transmitters attached to devices wouldn't scale particularly well with the density of instrumented devices. Third, its decentralized architecture makes the system easy to deploy.