# Virtual fixture

A virtual fixture is an overlay of augmented sensory information upon a user's perception of a real environment in order to improve human performance in both direct and remotely manipulated tasks. Developed in the early 1990s by Louis Rosenberg at the U.S. Air Force Research Laboratory (AFRL), Virtual Fixtures was a pioneering platform in virtual reality and augmented reality technologies.

## History

Virtual Fixtures was first developed by Louis Rosenberg in 1992 at the USAF Armstrong Labs, resulting in the first immersive augmented reality system ever built. Because 3D graphics were too slow in the early 1990s to present a photorealistic and spatially-registered augmented reality, Virtual Fixtures used two real physical robots, controlled by a full upper-body exoskeleton worn by the user. To create the immersive experience for the user, a unique optics configuration was employed that involved a pair of binocular magnifiers aligned so that the user's view of the robot arms were brought forward so as to appear registered in the exact location of the user's real physical arms. The result was a spatially-registered immersive experience in which the user moved his or her arms, while seeing robot arms in the place where his or her arms should be. The system also employed computer-generated virtual overlays in the form of simulated physical barriers, fields, and guides, designed to assist in the user while performing real physical tasks.
Fitts Law performance testing was conducted on batteries of human test subjects, demonstrating for the first time, that a significant enhancement in human performance of real-world dexterous tasks could be achieved by providing immersive augmented reality overlays to users.

## Concept

The concept of virtual fixtures was first introduced as an overlay of virtual sensory information on a workspace in order to improve human performance in direct and remotely manipulated tasks. The virtual sensory overlays can be presented as physically realistic structures, registered in space such that they are perceived by the user to be fully present in the real workspace environment. The virtual sensory overlays can also be abstractions that have properties not possible of real physical structures. The concept of sensory overlays is difficult to visualize and talk about, as a consequence the virtual fixture metaphor was introduced. To understand what a virtual fixture is an analogy with a real physical fixture such as a ruler is often used. A simple task such as drawing a straight line on a piece of paper free-hand is a task that most humans are unable to perform with good accuracy and high speed. However, the use of a simple device such as a ruler allows the task to be carried out quickly and with good accuracy. The use of a ruler helps the user by guiding the pen along the ruler reducing the tremor and mental load of the user, thus increasing the quality of the results.
When the Virtual Fixture concept was proposed to the U.S. Air Force in 1991, augmented surgery was an example use case, expanding the idea from a virtual ruler guiding a real pencil, to a virtual medical fixture guiding a real physical scalpel manipulated by a real surgeon. The objective was to overlay virtual content upon the surgeon's direct perception of the real workspace with sufficient realism that it would be perceived as authentic additions to the surgical environment and thereby enhance surgical skill, dexterity, and performance. A proposed benefit of virtual medical fixtures as compared to real hardware was that because they were virtual additions to the ambient reality, they could be partially submerged within real patients, providing guidance and/or barriers within unexposed tissues.
The definition of virtual fixtures is much broader than simply providing guidance of the end-effector. For example, auditory virtual fixtures are used to increase the user awareness by providing audio clues that helps the user by providing multi modal cues for localization of the end-effector. However, in the context of human-machine collaborative systems, the term virtual fixtures is often used to refer to a task dependent virtual aid that is overlaid upon a real environment and guides the user's motion along desired directions while preventing motion in undesired directions or regions of the workspace.
Virtual fixtures can be either guiding virtual fixtures or forbidden regions virtual fixtures. A forbidden regions virtual fixture could be used, for example, in a teleoperated setting where the operator has to drive a vehicle at a remote site to accomplish an objective. If there are pits at the remote site which would be harmful for the vehicle to fall into forbidden regions could be defined at the various pits locations, thus preventing the operator from issuing commands that would result in the vehicle ending up in such a pit.
Such illegal commands could easily be sent by an operator because of, for instance, delays in the teleoperation loop, poor telepresence or a number of other reasons.
An example of a guiding virtual fixture could be when the vehicle must follow a certain trajectory,
The operator is then able to control the progress along the preferred direction while motion along the non-preferred direction is constrained.
With both forbidden regions and guiding virtual fixtures the stiffness, or its inverse the compliance, of the fixture can be adjusted. If the compliance is high (low stiffness) the fixture is soft. On the other hand, when the compliance is zero (maximum stiffness) the fixture is hard.

## Virtual fixture control law

This section describes how a control law that implements virtual fixtures can be derived. It is assumed that the robot is a purely kinematic device with end-effector position $\mathbf {p} =\left[x,y,z\right]$ and end-effector orientation $\mathbf {r} =\left[r_{\textrm {x}},r_{\textrm {y}},r_{\textrm {z}}\right]$ expressed in the robot's base frame $F_{\textrm {r}}$. The input control signal $\mathbf {u}$ to the robot is assumed to be a desired end-effector velocity $\mathbf {v} ={\dot {\mathbf {x} }}=\left[{\dot {\mathbf {p} }},{\dot {\mathbf {r} }}\right]$. In a tele-operated system it is often useful to scale the input velocity from the operator, $\mathbf {v} _{\textrm {op}}$ before feeding it to the robot controller. If the input from the user is of another form such as a force or position it must first be transformed to an input velocity, by for example scaling or differentiating.
Thus the control signal $\mathbf {u}$ would be computed from the operator's input velocity $\mathbf {v} _{\textrm {op}}$ as:
If $c=1$ there exists a one-to-one mapping between the operator and the slave robot.
If the constant $c$ is replaced by a diagonal matrix $\mathbf {C}$ it is possible to adjust the compliance independently for different dimensions of ${\dot {\mathbf {x} }}$. For example, setting the first three elements on the diagonal of $\mathbf {C}$ to $c$ and all other elements to zero would result in a system that only permits translational motion and not rotation. This would be an example of a hard virtual fixture that constrains the motion from $\mathbf {x} \in \mathbb {R} ^{6}$ to $\mathbf {p} \in \mathbb {R} ^{3}$. If the rest of the elements on the diagonal were set to a small value, instead of zero, the fixture would be soft, allowing some motion in the rotational directions.
To express more general constraints assume a time-varying matrix $\mathbf {D} (t)\in \mathbb {R} ^{6\times n},~n\in [1..6]$ which represents the preferred direction at time $t$. Thus if $n=1$ the preferred direction is along a curve in $\mathbb {R} ^{6}$. Likewise, $n=2$ would give preferred directions that span a surface. From $\mathbf {D}$ two projection operators can be defined, the span and kernel of the column space:
If $\mathbf {D}$ does not have full column rank the span can not be computed, consequently it is better to compute the span by using the pseudo-inverse, thus in practice the span is computed as:
where $\mathbf {D} ^{\dagger }$ denotes the pseudo-inverse of $\mathbf {D}$.
If the input velocity is split into two components as:
it is possible to rewrite the control law as:
Next introduce a new compliance that affects only the non-preferred component of the velocity input and write the final control law as: