Configure trackers

The easiest place to start is at the bottom, with out input hardware. Open up the Input folder, and then Input Devices. You will see a list of all the device drivers we can create configurations for. For this example, we will use an Ascension MotionStar for our tracking system. Right-click on the MotionStar label in the tree, and select Insert from the menu. An empty ConfigChunk describing the MotionStar driver is created.

Now we need to edit the MotionStar configuration to describe the details of our system. Double-clicking on the newly-created MotionStar ConfigChunk will open an editor window. This window shows the complete set of configuration options for VR Juggler's MotionStar driver.

Figure 2.1. Editor window for MotionStar input driver.

The MotionStar is a separate computer that sits on a network and provides position data to other interested hosts. So it should not be surprising that the first few properties in the configuration are networking settings - IP address and port of the MotionStar, for example. Other input devices may use other communications methods, such as a serial connection. In that case, the configuration for that device would include port name and baud rate settings instead of the networking settings.

The Translation and Rotation properties are common to all positional devices. They describe the position of the tracking system's origin relative to the VR Juggler origin we selected in the previous step. In our example, the tracking system's origin is the position and orientation of its transmitter, which is suspended above the floor of our SSVR system. The Y value for our translation is therefore about +8.3 (for a transmitter 8.3 feet above the VR Juggler origin), and the X and Z values are the slight offset of the transmitter from the center of the floor. The rotation values (in degrees) represent the way the transmitter is facing.

Most of the other configuration options shown for the MotionStar are particular to its specific hardware and low-level software driver, and are described by the device's own documentation. However, we should draw attention to the Number of Birds property. The MotionStar hardware supports multiple positional sensors, called birds. In our example setup, we have two sensors. One is attached to a pair of stereo glasses, and the other is mounted to the wand which enables users to interact with the virtual environment.

Note that there is nothing limiting us to having a single tracking system, or even a single MotionStar driver. For example, we could create two MotionStar configurations in the same file, each with different network settings, each talking to a different physical MotionStar. The Instance Name at the top of the configuration window can be used to distinguish one from the other.

Create position proxies

In VR Juggler, we generally do not interact with input devices directly. Instead, we create proxies for them. A Position Proxy represents a single positional input. It is used to provide a simple, generic interface to position data, abstracting away from the actual hardware.

Figure 2.2. The editor window for a Position Proxy called "VJHead". The proxy attaches to a device named "MotionStar", and applies a transformation and rotation to the device data.

As mentioned previously, the MotionStar in our example setup has two sensors, so we will need to create two Position Proxies. Expand the Proxies and Aliases subtree under Input in the configuration panel. Right click on Position Proxy and insert a new instance (and repeat to create the second proxy).

Now it is time to fill in the particular information for each Proxy. We can start with the instance names, calling one proxy "VJHead" and the other "VJWand". VR Juggler applications use these proxy names to access input devices, and these particular choices of names are a convention used by most VR Juggler applications.

Each proxy has a pulldown menu where we can select the physical device it maps to - these will both refer to the MotionStar driver instance we've already configured. There is also a Unit option, which tells us which of the individual position inputs of the device to use. Our driver is configured for two sensors, so one of our proxies will be unit 0 and the other will be unit 1.

The Position Proxy also has translation and rotation options. This is useful for transforming the raw position data into something that is easy to use and manipulate. For example, in our particular example VR system, the physical tracking sensor that we are using as "VJHead" is mounted sideways on the earpiece of a pair of stereo glasses. The transformation settings we use (as seen in the screenshot) change that data so that the position returned to VR Juggler and the application itself is the position of a point directly between the user's eyes.

Creating Proxy Aliases (optional)

Proxy Aliases provide a way to introduce multiple names for a single Proxy. A Proxy Alias ConfigChunk contains only two properties: its name and the name of the Proxy it points at.[1]

The Proxy Alias provides a convenient way to reassign a commonly-used name like "VJHead" or "VJButton0" from one proxy to another. While not required, use of Proxy Aliases can make configuration files easier to modify and administrate.

[1] In VR Juggler 1.0, the Proxy Alias chunk actually contains an AliasName property in addition to the actual chunk name. This redundancy is likely to be removed in the future. For now, it is recommended that users always put the same string in the Alias chunk's Name and AliasName.