Force feedback using the Phantom Arm:
Haptic Textures

Kulin Tantod


Goals & motivation

This projects explores a technique for creating simple haptic textures.

In computer graphics, texture maps are sometimes used as simpler representations of complex geometries. For instance, if a viewer is far enough away from a complex object, it might make more sense to reduce the object to a simple texture map.

It would be nice if there existed a similar way to deal with complex geometries that are intended to be presented through haptic displays. For some applications, it might make sense to present a complex object as some kind of simpler object. The simpler object might lose some of the 'veridicality' of the original object, but depending on the application, this may be acceptable. Such a technique would also make simple haptic objects more interesting (the same way that texture maps can make simple graphical objects more interesting).


Creating textures

A simple but effective method for creating haptic textures was presented by Minsky, et al. (1990). This work demonstrated that 'tactile' percepts can be communicated through 2D force reflection alone.

Her 'Sandpaper' system presented computer modeled materials and surfaces, such as sandpaper, bar grating, bumps, etc., through a 2 degree-of-freedom, force reflective joystick.

The Sandpaper system modeled textures as being composed of little bumps. Spring forces proportional to local gradients on the bumps are presented to the joystick as the user moves up and down these bumps. As the user moves down a bump, the joystick is pushed along by tiny virtual springs; as the user moves up, the joystick (the tiny springs) resists. Having many, small bumps clustered together gives the illusion of texture. This method of presenting textures was called the 'Gradient Technique.'

In essence, the Gradient Technique created a 2D haptic texture map of tangential forces. I implemented this technique on the Phantom. However, instead of only using small bumps as the texture to model, I used the normal information from arbitrary polygon meshes. This is described in the next section.


Normals from meshes as Gradients

Polygon meshes have normal information stored at each vertex. A texture patch, as I implemented it, is created by interpolating the normals for each pixel (like Phong shading), dropping one component of the normal vector (the z-component), and presenting a tangential force spring force proportional to the remaining 2D vector. As the user moves his/her finger across a textured surface, in addition to the normal forces that would usually be presented, additional tangentential forces from the texture map are presented.

Though I was unable to test the technique on very complex meshes (I used a cube), the method seemed to work and is promising.


Problems/solutions & future directions

Ideally, to model texture correctly, in addition to changing tangential forces, normal forces should be changed as well. This might make texture more believable, but still allow the simulation to not have to model the exact complex geometry of the original object that the simulation is trying to convey.

Resolution of textures

In my implementation, I used 64x64 'texel' texture maps. Since the phantom can presented forces at 400dpi, scaling would have to occur if the texture map is to be mapped onto a large object. This might present problems.

Memory consumption was also a problem on the machine (PC) and compiler (Borland 3.1) I used. Storing continuous values for forces was sacrifices so that texture maps could be of higher resolution. A 256 step value look-up table was used instead.

I wonder what the perceivable differences are of these two tradeoffs. Is using 256 steps sufficient? What resolution is sufficient?

Using textures for very complex geometries

Unfortunately, I was not able to test the technique on very complex objects at the time of the demo and this write-up. I wonder how pleasing the results of this technique actually are for complex meshes.

Another problem with this technique is that the textures require smoothing. Instabilities on the Phantom result at edges. These instabilities are very undesirable.


Conclusion

Using simplified 2D, tangential force texture maps to either make simple objects more complex, or to model more complex objects, has potential. The technique works.





Kulin Tantod
froo@leland.stanford.edu