From iLab Cookbook

Toolkits: HTP

Haptic Tabletop Puck - development resource center

The Haptic Tabletop Puck (HTP) is a small device invented to explore and develop applications that use haptic feedback on interactive tabletop surfaces (for now, Microsoft Surface). The idea is simple and inexpensive: by attaching a plastic rod to a servo-motor that controls its height, and by sensing pressure on top of the rod, we can provide programmable levels of height and haptic response depending on the location of the device on the table. Since the tabletop provides tracking of fiducial markers, the HTP only needs to have a marker on its bottom.

For more details, you can check the paper published in the ITS (Tabletop 09) conference and the accompanying video.

Since the development of our two first generations of the htp, we have decided to open our designs to anyone that wants to build it and experiment with it. We hope that the resources in this page are useful to those of you that are interested in experimenting with haptic feedback on tabletops. You are welcome to try our designs or try new approaches. If you do, we would also love to hear from you.

The files and instructions provided in this page are provided AS IS; in fact, most of the designs and software included in this page are still at the prototype level, which means that you might need to figure out some elements yourself. In the future, we plan to streamline the contents and provide accurate descriptions of the instructions; in the meanwhile, feel free to send us an e-mail if you need some advice: or


Basic elements

The current version of HTP works on a Microsoft Surface(TM) interactive tabletop (first generation). Our prototype takes advantage from the multi-object fiducial marker tracking and identification of the Surface SDK; however, there is no reason why HTPs cannot be built to work on top of different interactive surface technologies, as long as the absolute position of the HTP on the display image can be detected. For a setup with several HTPs, it is necessary that the absolute position of each one of the devices and their identity are recognized.

Besides the interactive surface, and the computer running it, you need some way to actuate the servos from the computer and to sense the pressure on top of the rod. We use the phidgets system. Any of the InterfaceKit boards will do for the sensing of the pressure. To control the servos you can use any of the phidget servo usb adapters, although we use an advanced servo control board that allows us to power up to 8 servos from the same usb port.

HTP sets

We have generated a number of different HTP designs with different sizes and different characteristics. Here we make available three of the designs for you to download, 3DPrint, and build. The next subsection describes elements common to all designs. The subsections that follow list all the components and files of each of the designs separately.

We provide two files for every piece of the model. Files with the SLDPRT extension are solidworks models that can only be opened with the solidworks software. The STL files are the ones usually required by the 3D printer to generate a copy of the model. Note that, since the precision and resolution of 3D printers is not perfect, you might need to sand off small parts of the model before the servos and other pieces fit perfectly together.

The files are all compiled in this zip file. Please, check the sections below to know which files to print for which HTP models.


Small HTP

This is the smallest HTP that we have been able to build so far.

In this HTP the rotating head attaches directly to the rod. The rotating head piece must be perforated to have a longitudinal groove that lets the rod base move horizontally with respect to the rotating head. A screw holds the rotating head in between the two sides of the rod base.

Standard HTP

This is our current standard model. The main difference with the small HTP is how the servo is attached to the rod. Whereas in the small HTP this connection is direct, the standard uses an extra plastic piece that connects a metal ball screwed to the rotating head to another ball screwed to the bottom end of the rod. These extra pieces are usually included with the servos.

HTP with Brake

This model is larger, heavier and chunkier, but it includes a brake. The brake is just a piece of rubber that is actuated by another servo and pushes against the surface through an opening at the bottom of the HTP. This model requires an extra servo (Hitec HS 55) and a piece of rubber material that has to be glued to the "block" piece. Also, the brake servo requires a longer arm to be able to reach the bottom.

Demo software

This file contains the current version of our demo software. Please, be aware that we provide this software just as courtesy to facilitate the use the HTPs yourselves; in it you can find many examples of how we programmed the different toy-applications. However, the code is not clean or extensively commented. In the future, we are considering creating a clean API, but this will have to wait for us. Please, contact us if you are interested in this kind of project!

Retrieved from
Page last modified on December 05, 2009, at 04:50 PM