From Murray Wiki
Jump to navigationJump to search

Sparrow is a C library for implementing real-time control systems under Linux. It was written to be a very simple set of functions that can be run with very modest hardware requirements. Sparrow is designed to work with a collection of control libraries written at Caltech:

  • Sparrow - real-time display, servo library and channel library (low-level interface)
  • Falcon - library for implementing standard control laws (state space, PID, Kalman filters, etc)
  • Skynet - a messaging library for use in networked control systems (built on top of Spread)
  • NTG - nonlinear trajectory generation library, including receding horizon control

Source Code

The source code for Sparrow and the other packages is available on SourceForge.


The sparrow library was originally written in the late 1980s to implement real-time controllers under MSDOS. Its earlier versions consisted of three primary components: a real-time servo library, a device driver interface and a simple dynamic display driver. Because MSDOS had no facilities for pre-emptive multi-tasking, the original version of sparrow used low-level interrupt service routes to implement servo loops. Since a PC at the time ran on a 66 MHz clock, sparrow was designed to be extremely efficient in the way that it implemented its functions.

Once Windows came along, development of sparrow came to a slow halt. Version 2.1g of sparrow, which was the most commonly used release, was released in 1995, although some development activities continued through 1999 as part of the rarely used 3.1 and 3.2 releases. Sparrow was revied in late 2003 as part of Caltech DARPA Grand Challenge project - we needed a simple way to display the status of real-time controllers under Linux and the sparrow display package was a good fit.

The Linux version of sparrow was developed from the DGC version of Sparrow and released as open source code.