• No results found

This Section discusses our methods for rendering virtual haptic surfaces using the three model components described in Section 4.2. Each component is rendered sepa- rately and added to the output of the other components to create the full feel of the surface. The rendering methods presented in this Section build on those described in [26].

During rendering, the Omni measures the user’s position and outputs a force. When the user is touching a virtual object, the endpoint position of the haptic device is referred to as the Haptic Interface Point (HIP), and the corresponding point on the surface of the object is referred to as the Ideal Haptic Interface Point (IHIP) [101]. The virtual surface is displayed using a Hooke’s law relationship so that the normal force is proportional to the user’s penetration depth into the object (the distance between the HIP and the IHIP) with a gain of 0.25 N/mm. This gain was chosen to

allow all surfaces to have the same underlying stiffness; the perceived hardness was then changed between surfaces by the tapping transients alone. A higher gain left the softer surfaces feeling too hard. Furthermore, we wanted subjects to use a large range of normal forces when interacting with the virtual surface without saturating the Omni’s force output. Because the surface was rendered using a Hooke’s law relationship, the force resolution is proportional to the Omni’s position resolution. When the stiffness value is high, only a small penetration depth is needed to reach the maximum force, making it difficult for users to apply small forces.

4.3.1

Rendering Friction

The surface friction was rendered using the stick-slip Dahl friction model presented in Section 4.2.1. The HIP x and the IHIPw are connected by a virtual spring. The first stage of spring stretch represents the presliding stick shown in Fig. 4.1. The second stage of spring stretch, the sliding region, follows simple Coulomb friction. The location of the adhesion point on the surface is calculated as:

wk =      xk−sgn(xk−xk−1)zmax if |xk−wk−1|> zmax wk−1 otherwise (4.3.1)

where wk−1 is the previous location of the adhesion point, xk is the current location of the tool, and xk−1 is the previous location of the tool. The value of zmax was

empirically tuned to ensure stability of the system. Surfaces with higher friction required a larger value for zmax than surfaces with low friction, leading us to choose

zmax to be proportional to the kinetic friction coefficient (zmax = 4 mm·µk). The friction force is then calculated as:

zk =xk−wk Ff =µkFn zk zmax (4.3.2)

The friction force is rendered using the motors of the Omni and is displayed opposite the direction of motion of the IHIP.

4.3.2

Rendering Tapping

During rendering, the displayed tapping response is a function of the user’s incoming contact speedvin, as in [62]. Because the user’s mass is constant, the momentum of the

Omni-hand system (p=mvin) varies linearly with incoming velocity. Therefore, the

amplitude of the transients must also scale with the incoming velocity. This velocity dependence is also shown in the recorded tapping transients in Fig. 4.3. For incoming speeds lower than the minimum recorded tapping speed, the lowest speed transient is scaled by the quantity vin/vmin. For incoming speeds higher than the maximum

tapping speed, the highest speed transient is directly played. For intermediate speeds, the transients from the two bounding speeds are interpolated before being played.

Although the tapping transients are recorded as accelerations, they must be ren- dered as forces to provide the momentum cancellation necessary to elicit the sensations of tapping on a stiff surface. If the tapping transients are instead played as vibra- tions, such as through a voice-coil actuator, the user’s tool continues to penetrate

the surface, creating the sensation of a soft surface. Therefore, to play the tapping vibrations as a force, we first scaled the signal by the effective mass of the handle and the user’s hand (0.05 kg, as determined in [21]) before playing it through the motors of the Omni in the direction of the surface normal. Although adding the tapping force to the stiffness response momentarily exceeds the maximum steady-state force output of the device, the duration of the high force is sufficiently small (<0.1 s) not to overheat the motors.

4.3.3

Rendering Texture

This Section describes the methods for synthesizing and rendering a texture vibration signal using the models created as described in Section 4.2.3. This Section extends the texture rendering methods that were presented in [21] to include texture signal output through a dedicated actuator (a Haptuator) instead of through the motors of the Omni.

Texture Signal Generation

In real time we generate a texture vibration signal that varies according to the in- teraction conditions. Measurements of the user’s current normal force and tangential speed are used to interpolate between models in the Delaunay triangulation. To en- sure stability, we first convert the ARMA coefficients into line spectral frequencies (LSF) before interpolation, as described in [60]. After interpolation, the LSFs are

converted back into ARMA coefficients. New coefficients and variance values are calculated at a rate of 1000 Hz.

A white Gaussian excitation signal with power equal to the interpolated variance is generated and used to drive the interpolated model. The excitation signal’s history and a history of the previous vibration outputs are used to calculate the new vibration output at a rate of 1000 Hz.

Hardware

In our initial work on this topic [21], the texture vibrations were displayed using the motors of the Omni primarily to simplify the implementation of our open-source rendering methods by others. However, displaying the vibrations through the Omni motors distorts the signal significantly because the connection from motor to hand is not rigid [79]. Therefore, we updated our rendering system to output the texture vibrations through a dedicated voice-coil actuator, a Haptuator (Tactile Labs TL- 002-14R); this model is an updated version of the model used in our TexturePad system [26]. We first considered putting the Haptuator within the body of a custom- made Omni handle, but this location requires the Haptuator to be placed behind the user’s grip. The vibrations then did not seem to emanate from tooltip contact, degrading the user experience. Therefore, we placed the Haptuator at the tip of the Omni handle, as shown in Fig. 4.5. We found that aligning the Haptuator axially to the handle felt better than orthogonal to the handle, presumably because of the

Figure 4.5: Omni with Haptuator attached to the stylus tip.

mechanical properties of the gimbal. The Haptuator was attached with a zip tie. The texture vibrations are scaled and output through an analog output pin on a Sensoray 626 PCI card at a rate of 1000 Hz. This output voltage is then passed through a linear current amplifier with a gain of 1 A/V to drive the Haptuator.

Related documents