Seminar Topics & Project Ideas On Computer Science Electronics Electrical Mechanical Engineering Civil MBA Medicine Nursing Science Physics Mathematics Chemistry ppt pdf doc presentation downloads and Abstract

Full Version: The Haptic SpaceMouse – an input device with force-feedback through solenoids
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
The Haptic SpaceMouse – an input device with force-feedback through solenoids
[attachment=28797]
Abstract

We describe the Haptic SpaceMouse, an input device
based on the SpaceMouse[1] with 2 DOF translational
feedback in contrast to the rotational feedback often found
in force-feedback joysticks. We use solenoids as motors
in our implementation, they facilitate frictionless operation
and add little inertia to the Spacemouse. The
force-feedback controller is an Atmel ATmega32[6] microcontroller,
which is programmed to decode the device output,
thus enabling us to drive the solenoids in a closed loop.
A simple host-to-device protocol is developed to specify
the haptic forces. Our application-scenario demonstrates
rigid-body contact of an user-controlled cursor.

Introduction

Conventional haptic input devices like force-feedback
joysticks provide rotational feedback, which is problematic
in two ways. First, the produced forces are small, because
of the lever action of the stick the user manipulates,
which reduce the forces of the motors. Conversely, in applications
with velocity-control, the forces to bring the joystick
into full stop – the center position – have to be quite
high. Second, the haptic manipulation of the joystick has to
move it over a relatively large distance, because of the large
workspace of the stick.
Fortunately the human hand can sense forces to a very
fine degree, without needing large travel, so it is not necessary
to provide a big workspace with a device driving large
forces. The SpaceMouse is an example of a device for the
hand providing 6 DOF on a small workspace (3 mm3). In
order to provide haptic feedback for this device one is able
to use linear motors such as solenoids or voice-coil motors
to transmit force directly, without special transmission that
causes unnecessary friction. Furthermore it is possible to
change forces quickly, because no big masses that add inertia
are involved.

Details of the Haptic SpaceMouse

Device Assembly

The SpaceMouse is a 6dof elastic input device which is
manipulated using only small travel (1-2 mm) from an absolute
center point. For the sake of simplicity only translations
of the device are discussed. The user applies a force to the
device which leads to a travel away from the center point.
The extent of this travel is proportional to an uniform velocity
of the manipulated object – so called rate-control – with
a velocity of zero at the center point. The device coordinate
system is tied to the object.
In order to render haptic effects such as a hit of a rigid
object with a wall the device needs to be put in its center
point i.e. the negative force needs to be applied. This can
be achieved with linear motors such as solenoids, which are
mounted on the axes of the SpaceMouse.
An electric solenoid can create forces on one axis in one
direction. It is an iron anchor in a coil. If current flows
trough the coil, the anchor is pulled into the coil. The force
of a solenoid is a function of the applied current and the
position of the anchor resp. the area of the gap between
the anchor and the end stop. Unfortunately it is no linear
function of the current, but grows quadratic as the anchor
moves to its resting position.

Interface between SpaceMouse and Atmel

The Atmel AVR ATmega32 is an 8bit micro-controller
with Harvard architecture and 32kb program- and 2kb system
memory. It runs at 16MHz, has several timers to generate
PWM signals up to 4MHz. Interfaces such as UART,
I2C and SPI are available. One problem is that there is
only one UART interface where we need two – one for receiving
the SpaceMouse data and one for communicating
with the host. Therefore we used an MAX3110[7] UART
transceiver with SPI interface to connect the Atmel with
the SpaceMouse. This enables us to decode the position
right on the Atmel, using the SpaceMouse as sensor in a
closed loop. The data is relayed to the host application on
the Atmel UART. Unfortunately the SpaceMouse sends its
data at a rate of 9600 bps, bounding the bandwidth of the
whole loop to 100Hz. Newer SpaceMouse models using
the USB protocol are able to transfer data much faster,
so it is not a principal boundary, but handling USB communication
would require a whole new design with another
micro-controller.

Application

To test our device, especially the ability to simulate contact
with rigid walls, we build a simple 3D demo application.
The cursor – a small red box – can freely be moved
around in a fenced area in two dimensions. The area is
fenced by four walls which are rigid bodies. If the box
touches a wall a message is sent to the SpaceMouse over
the serial port which consists of the normal at the contact
joint. Thereupon the solenoids are driven to provide a counterforce
and the closed loop readjusts the magnitude of the
force. We use the Open Dynamics Engine (ODE)[5], an
open source physics engine for simulating rigid body dynamics,
the collision detection and its supplied drawstuff
library for visual rendering.
The advantages of our device are that the force feedback
feels natural for little forces and the solenoids showed no
perceptible exponential behavior for the used travel.
When moving the box into a corner, the SpaceMouse
started to jerk. If the user applied force was too strong, the
solenoids were no longer able to resist und could be pushed
through.

Conclusion and Future Work

We have developed a 2 DOF translational input device,
in contrast to conventional 2 DOF rotational feedback found
in joysticks. The device can provide forces up to 5 N. The
solenoids used as motors are frictionless and add low inertia
to the input system. We are able to decode the Sacemouse
output directly on our feedback controller and use
this output as feedback for a closed loop control.