We present UNC's force feedback software library. The library provides a device-independent application programmer interface. Device-dependent code inside the library is contained in a simple "device-driver" for each type of device. We currently support two commercial force feedback devices, the SensAble Devices Phantom, and the Sarcos Research Dextrous Arm.
The library provides distributed operation, allowing the main application to run on a different computer from the one directly controlling the force feedback device. We provide high performance by decoupling the force feedback servo loop from the main application loop. The application controls the force feedback servo loop by establishing any of a variety of local approximations to the force field, including springs and planar surfaces. These approximations are then adjusted as appropriate. If desired, the main application can also directly specify forces and torques.
The library also supports the concurrent use of multiple devices, allowing for multi-user applications and the use of separate force feedback devices for a user's left and right hands.
This document is a programmer's manual for the library. It explains the concepts underlying the library and their motivation, then documents the application programmer interface in detail. It also explains how to add device-drivers for new force feedback devices.
Full document (compressed postscript).
Full document, revision C.2, April 13, 1996 (compressed postscript).