0% found this document useful (0 votes)
158 views

HTC Vive Tracker Developer Guidelines

Uploaded by

Valentina Veleat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
158 views

HTC Vive Tracker Developer Guidelines

Uploaded by

Valentina Veleat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

HTC Vive Tracker

Developer Guidelines
Ver. 1.5
Version Control
Version Number Version Date Version Reason
1.0 2016.09.26 Initial version
1. Use case image revised.
2. Pogo pin rearranged.
1.1 2016.12.05
3. USB cable connection method deleted.
4. Data format revised.
1.2 2017.01.09 1. SteamVR monitor images revised.
1. Design of Pogo Pin Pad revised.
1.3 2017.01.19
2. Firmware upgrade revised.
1. Docking revised.
2. Data format revised.
1.4 2017.05.08
3. Tracker on Unity or Unreal added.
4. FAQ added.
1. Low pass filter (LPS) configuration
1.5 2017.07.17
added.

©2016-2017 HTC Corporation. All Rights Reserved. HTC, the HTC logo, Vive, the Vive logo,
and all other HTC product and services names are the trademarks or registered trademarks of
HTC Corporation and its affiliates in the U.S. and other countries.
Contents
Introduction ................................................................................................................................ 1
Use cases .............................................................................................................................. 1
Hardware requirements ............................................................................................................. 2
Interface ................................................................................................................................. 4
Radio frequency (RF) ............................................................................................................. 5
Power ..................................................................................................................................... 6
Optics ..................................................................................................................................... 6
Docking .................................................................................................................................. 7
Docking embodiments .................................................................................................................... 7
Mechanical considerations ...................................................................................................... 11
Apparel size ......................................................................................................................... 12
Main feature ......................................................................................................................... 13
Docking mechanism ............................................................................................................. 14
Docking with standard tripod cradle head (w/o electric connection) .............................................. 14
Docking with side tightening wheel (w/ electric connection if needed) ........................................... 14
Accessory design ................................................................................................................. 15
Design of Pogo Pin Pad ................................................................................................................ 16
Coordinate system ............................................................................................................... 17
Software components .............................................................................................................. 24
System requirements ........................................................................................................... 24
Data format .......................................................................................................................... 26
Accessory integration ........................................................................................................... 29
Unity integration ................................................................................................................. 333
Tracker on Unity or Unreal ................................................................................................... 40
Firmware upgrade ................................................................................................................ 41
FAQ ......................................................................................................................................... 42
Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Introduction
This document describes the development guidelines for VR accessory makers and content
developers. It contains information on how to use the HTC Vive Tracker to enable position
tracking and transmission of specific data (with or without the HTC Vive VR system).

Vive Tracker can pair with HTC’s wireless dongle or use its USB interface to transfer tracking
data to a PC. An accessory attached to Vive Tracker can:

 Simulate buttons of the Vive controller through the underlying Pogo pin.
 Send specific data to a PC via the USB interface of Vive Tracker or use its original
approach to do it.

Use cases
There are five use cases supported by Vive Tracker.

Use Case 1: Track passive objects with a USB cable in VR. In this case, the dongle is not
used, and Vive Tracker connects with a PC by USB directly to transfer tracking data.

Figure: Use case 1 of Vive Tracker

Use Case 2: Track passive objects using a USB cable interface in VR, with the accessory
passing data to a PC through USB, BT/Wi-Fi or propriety RF. This case is similar to Use Case
1, but the accessory transfers data to PC directly for a specific purpose based on its design.

Figure: Use case 2 of Vive Tracker

1 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Use Case 3: Track moving objects by wireless interface in VR. In this case, the dongle is used
to transfer tracking data from the Vive Tracker to a PC.

Figure: Use case 3 of Vive Tracker

Use Case 4: Track moving objects using a wireless interface in VR, with the accessory
passing data to a PC via USB, BT/Wi-Fi or propriety RF. This case is similar to Use Case 3,
but the accessory transfers data to/from a PC directly for a specific purpose based on its
design.

Figure: Use case 4 of Vive Tracker

Use Case 5: Track moving objects using a wireless interface in VR, with the accessory
simulating buttons of the Vive controller or passing data to a PC via the Vive Tracker. This
case is similar to Use Case 3, but the accessory connects with the Vive Tracker to transfer
data to/from a PC by Pogo pin or USB interface.

Figure: Use case 5 of Vive Tracker

Hardware requirements
2 HTC Confidential and Proprietary
Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

This section describes hardware requirements for accessories used with the Vive Tracker in
order to enable position tracking and input of specific data for the HTC Vive VR system.

A compatible accessory may be attached to the Vive Tracker to send specific data to a PC
through the USB interface of the Vive Tracker. The Vive Tracker needs to pair with the dongle
to transfer data to a PC. The figure below describes the conceptual architecture.

USB Wireless USB


Vive
Accessory Dongle PC
Tracker

Figure: Conceptual Architecture of Vive Tracker

3 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Interface
USB 2.0 full speed (client) from micro USB connector.

Absolute Maximum Rating

Symbol Parameter Min Max Unit


VI Input voltage - 0.5 3.6 V
VESD Electrostatic discharge voltage , Human Body Model -- 4000 V

Electrical Characteristics (Supply voltage VDD = 3.3 V)

Symbol Parameter Min Typ Max Unit


VOH High-level output voltage VDD - 0.4 -- -- V

VOL Low-level output voltage -- -- 0.4 V

VIH High-level input voltage 0.7VDD -- -- V

VIL Low-level input voltage -- -- 0.3VDD V

IOH High-level output current 20 -- -- mA


IOL Low-level output current 4 -- -- mA

IIH High-level input current -- 0.5 10 nA

IIL Low-level input current -- 0.5 10 nA

4 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Radio frequency (RF)


To establish a stable wireless connection between the Vive Tracker and the dongle, the OTA
performance of Vive Tracker cannot downgrade to more than 3dB when an accessory is
attached to the Vive Tracker.

The following are recommendations for better RF performance:

Except for essential parts, such as the 1/4’’ screw, electric connection pad (which connects
with the Pogo pin), and related circuits of the electric connection pad, metal parts of the
accessory should keep at least 30mm distance away from the antenna to avoid OTA
performance reduction when the accessory is attached to Vive Tracker.

The figure below illustrates the “keep out” area where only nonmetallic parts of the accessory
should be inside (spherical radius=30mm and the center is antenna feed point).

Figure: Restricted Area of Antenna

5 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Power

M icro U S B connector V oltage requirem ent M ax charging current M ax charging tim e

AC 1000 m A 1.5 hrs


5V+/-5%
PC 500 m A 3 hrs

P ogo pin 3 V oltage requirem ent M ax charging current M ax charging tim e

PC 5V+/-5% 500 m A 3 hrs

Note
AC: D+ short to D-
PC: D+/D- communication

Table: Micro USB connector and Pogo pin indication

Optics
The field of view (FOV) of Vive Tracker is 270 degrees. Avoid placing the structure within the
view angle, since it will block responses from Vive Tracker sensors when placed in that
direction.

If the docking part extends beyond the recommended placing cone, extra views will be
blocked.

Figure: Docking part extends beyond recommended placing cone

6 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Docking
The following are requirements for docking compatibility:

a. The docking design of Vive Tracker follows the ISO standard (ISO 1222:2010).
Furthermore, Vive Tracker has constraining features, such as the longer screw cannot
fasten all the way in.

b. The user should be able to easily attach and detach Vive Tracker with two hands.
One hand holds Vive Tracker, and the other one holds the accessory.

c. The user should not be at risk of physical harm while attaching or detaching Vive
Tracker.

d. The user should be comfortable while attaching and detaching Vive Tracker.

e. The accessory attached with Vive Tracker should be in the shape of a physical object
to avoid hitting during operating.

f. Vive Tracker should not be blocked by the accessory and affect the tracking
performance.

g. It is strongly recommended that the accessory uses low reflection material for its outer
skin to avoid reflection interference with the tracking sensors, especially if the
accessory needs to be placed within the tracking sensors' FOV area.

Docking embodiments

Gun

7 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Sword

It is recommended to design the mounting mechanism close to the hand-held area, and set up
the length in the VR program.

Multi-purpose docking base

Users are able to attach the Vive Tracker to any object/surface that is intended to be tracked.

 If the object/surface is smooth and stiff, it is recommended to use stronger adhesive


tape for attaching the docking base to the specific object/surface (ex. 3M VHB tape).

 If the object/surface is rough and soft, it is recommended to use a strap for tightening
the docking base to the specific object/surface.

8 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Improper Vive Tracker placement may cause the accessory body to obstruct the tracking
performance. The mounting distance between tracking FOV and the related accessory size is
shown below:

9 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

270 degree tracking FOV

No tracking area
Recommended area to put docking
mechanism

10 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Mechanical considerations
This section describes the mechanical considerations for developers to build various
accessories that are compatible to fit or mount with the Vive Tracker.

Figure: Vive Tracker

11 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Apparel size

Figure: Vive Tracker with different angle

The overall size of the Vive Tracker is Ф99.65mm * 42.27mm (H).

12 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Main feature

4.1 Standard Camera Mount


(1/4” Screw Nut)

4.2 Stabilizing Pin Recess

4.4 Friction Pad

4.3 Pogo Pin


(6 pins)

5. USB Port
3. Sensors
2. Power Button
1. LED Indicator

Figure: Main features

1. LED Indicator: Shows the status of Vive Tracker.

2. Power Button: Used for powering on/off, BLE pairing, etc.

3. Sensor: Receives signals from the base stations. The VR system uses the received signals
for computing the current location of Vive Tracker. Accessory should minimize surface
reflection (e.g. avoid white color surface) since it may cause faulty signal and affect
performance. Anti-reflection painting is preferred.

4. Docking Mechanism: Standard camera tripod docking method is used which is comprised
of:
4.1 1/4” Screw nut to fasten the accessory.
4.2 Stabilizing pin recess for constraining the tracking from rotation.
4.3 Pogo pin port (spring contact-type) for optional electrical connection to the accessory.
4.4 Friction pad for providing steady friction between the accessory and Vive Tracker.

5. USB Port: Used for electrical connection to the accessory through a micro USB cable.

13 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Docking mechanism
Vive Tracker applies the general camera tripod docking method, which follows ISO standards
(ISO 1222:2010).

The following are the schematic drawings of how the accessory will mount to the Vive Tracker.

Docking with standard tripod cradle head (w/o electric connection)

Stabilizing Pin
1/4” Bolt

Friction Pad

Figure: Docking with standard tripod cradle

Vive Tracker can be mounted on the cradle head first, and then attached to the main body of
the accessory (similar to how a camera is mounted on a tripod).

14 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Docking with side tightening wheel (w/ electric connection if needed)

1/4” Bolt

Pogo Pin Pad


Stabilizing Pin (Optional)

Electric
Connection Pad
Friction (Optional)
Pad
Spinning
Wheel

Figure: Docking with side tightening wheel

In this example, the mechanical method allows developers to tighten the docking screw
through the side spinning wheel. It is recommended that the spinning wheel should have a
larger diameter (25 mm or greater) for better operation.

This example is able to use the Pogo pin for extending the electric connection to somewhere
else.

15 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Accessory design
Below are the different accessory mechanisms, following ISO standards:

 1/4” bolt design


Please refer to ISO 1222-2010, Figure 1 on page 1.

 Stabilizing pin design


Vive Tracker leverages the design from ISO 1222-2010, Figure 5 on page 3. For details
on dimensions and tolerances, please refer to pages 13-17. It is suggested to apply the
Stabilizing Pin for better tracking performance.

 Screw thread design


The screw thread type that applies to Vive Tracker is 1/4” screw with 1.27 mm pitch. For
detailed information, please refer to ISO 1222-2010, pages 3-5.

16 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Design of Pogo Pin Pad

a. Pin definition (Vive Tracker)

17 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

b. Pogo Pin Pad reference design


Electrical

18 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Mechanical

19 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

20 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

21 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Coordinate system
Vive Tracker uses the “Right-handed coordinate system”.

Vive Tracker

 Datum A is set to be the top surface of the ring feature around the 1/4” Screw Nut.

 Datum B is set to be the intersection point between the centerline of Standard Camera
Mount (1/4” Screw Bolt) and Datum A.

 Datum C is set to be the intersection point between the centerline of Stabilizing Pin
Recess and Datum A.

 The coordinate system is constructed by the Datum frame of Datum A, the line of
Datum B and Datum C, and Datum C itself.

22 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Accessory:

 Datum A is set to be the top surface of the ring feature around the 1/4” Bolt.

 Datum B is set to be the intersection point between the centerline of 1/4” Screw and
Datum A.

 Datum C is set to be the intersection point between the centerline of Stabilizing Pin
and Datum A.

 The coordinate system is constructed by the Datum frame of Datum A, the line of
Datum B and Datum C, and Datum C itself.

23 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Software components
This section describes software components for the HTC Vive Tracker.

If you are an accessory maker, you can transfer data through Vive Tracker. You may refer to
the detailed data format transfer between an accessory and Vive Tracker in the Data format
section.

If you are a content developer, you can refer to Unity integration and Accessory integration
sections to create virtual reality content for an accessory attached with Vive Tracker.

When new firmware for Vive Tracker is released, you can upgrade the firmware using a PC
tool through USB cable. You can find the steps in the Firmware upgrade section.

System requirements
For both content developers and accessory makers:

1. To test Vive Tracker with your content or accessory, you need to have HTC Vive and
the relevant hardware and software environments to run it. You can find more
information on HTC Vive in www.htcvive.com

2. You need to have a PC with at least one available USB 2.0 port to plug in the dongle
(for use cases with the dongle mentioned in previous section) or Vive Tracker (for
firmware upgrade purpose). This PC should also run SteamVR for HTC Vive.

USB
Vive Tracker PC
Firmware Upgrade

Figure: Vive Tracker and PC

24 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

For accessory makers:

If your accessory needs to simulate buttons of the Vive controller or transfer data to a PC
through Vive Tracker, it must support the following interfaces respectively:

1. Pogo pin
Refer to hardware requirement section for detailed information on button simulation.

2. USB full speed host and HID class. The Vive tracker will act as a USB device to transfer
data to/from the accessory.

USB
Vive Tracker Device Host Accessory
Data Transfer

Figure: Vive Tracker and accessory

25 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Data format
This section describes data formats for accessory makers to transfer data between the
accessory and the PC through Vive Tracker when the USB interface is used.

The data format transfer from an accessory to Vive Tracker is sent by a USB HID feature
report. It is similar to the user interface of the Vive controller. Interval to send data should be
longer than 10 ms.

For information about the USB HID spec, refer to USB Device Class Definition for Human
Interface Devices (HID). Vive Tracker has three USB nodes when it connects with via USB to a
computer. To send the USB command to Vive Tracker, set the wIndex to 2.

Refer to the table below for the USB command flow between the accessory and Vive Tracker.

26 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

SetFeature 0xB3 data format:

Byte Index Data Remark


2 : phone
0 Host Type
3 : accessory
1 Charge Enable Reserved
2 OS Type Reserved
0 : 184 Hz (default)
Low Pass Filter 1 : 5 Hz
3
configuration 2 : 10 Hz
3 : 20 Hz

Byte Index 3: Configures Vive Tracker’s low pass filter setting to maintain tracking
performance when the accessory vibrates. It will revert to the default value ‘0’ after 30
seconds, or set it to default manually. The field supports Vive Tracker firmware v.20 and
higher.

SetFeature 0xB4 data format:

Byte Index Data Remark


Indicates the version of the data you send out.
0 Tag Index Default value is zero in this version of data
format.

TRIGGER 0x01
BUMPER 0x02
MENU 0x04
STEAM 0x08
1 Button
PAD 0x10
PAD_FINGERDOWN 0x20
Reserved 0x40
Reserved 0x80

2 Pad X value, value from -32768 to 32767


Pad X value
3 BYTE 2 is LSB

4 Pad Y value, value from -32768 to 32767


Pad Y value
5 BYTE 4 is LSB

6 Trigger Raw, value from 0 to 65535


Trigger Raw
7 BYTE 6 is LSB

8 Battery Level, Reserved


Battery Level
9 BYTE 8 is LSB

Table: Data Format (Accessory to Vive Tracker)

Sample code

27 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Provided below are sample codes to send the setFeature command to Vive Tracker. Note that
you need to reference the correct API in your system to implement the USB setFeature
command.

Visual Studio:
buffer[0] = 0xB3;
buffer[1] = 0x03; // Length
buffer[2] = 0x03; // 1: PC, 2: Phone, 3: Accessory
buffer[3] = 0x01;
buffer[4] = 0x00;

if (!HidD_SetFeature(m_hDevice, buffer, sizeof(buffer))) {


AfxMessageBox(L"Error: Failed to set feature.");
}

JAVA:
// Take 0xB3 command for example
data1[0] = (byte) 179; //0xB3
data1[1] = 3; //Means there are 3 bytes follow
data1[2] = 3; //Host Type: ACCESSORY
data1[3] = 1; //Reserved
data1[4] = 1; //Reserved

int result = mDeviceConn.controlTransfer(0x21, 0x09, 0x0300, 2, data1, data1.length, 0);

28 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

STM F4 series developer board:


char buffer[64];
char *p_buffer = buffer;
unsigned int buffer_size = sizeof(buffer);
memset( (void *)p_buffer, 0, buffer_size );
p_buffer[0] = 0xB3; // Command
p_buffer[1] = 0x03; // Size of Data
p_buffer[2] = 0x03; // Host Type: ACCESSORY
p_buffer[3] = 0x01;
p_buffer[4] = 0x01;

// STM API
USBH_HID_SetReport(
handle,
0x03, // Feature Report
0,
(uint8_t *)p_buffer,
buffer_size );

Haptic value range: Vive Tracker receives haptic input value from the content, while the
POGO OUT pin sets an output of HIGH with the duration in ‘ms’.

Accessory integration
This section describes information on position transformation between an accessory and Vive
Tracker. Content developers can create the correct rotation and translation result of the
content used with the attached accessory in a game engine such as Unity.

It is assumed that the local coordinate system of the accessory is z-axis facing the front (left-
handed coordinate system), and Vive Tracker is attached in the accessory as in the example
below. Rotation degree and translation distance of an accessory relevant to Vive Tracker are
described in roll, yaw, pitch and Dx, Dy, Dz respectively during the integration.

After the center of an accessory has been decided during the design, the following degrees
and distance of an accessory based on actual integration condition can be measured. For
detailed information regarding the center of the Vive Tracker, refer to guidelines related to the
hardware and mechanical design.

29 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

An example of using a gun as an accessory is described in the figure below:

Figure: Example to integrate accessory and Vive Tracker

Pitch : Angle that rotate around x axis in degrees


Yaw : Angle that rotate around y axis in degrees
Roll : Angle that rotate around z axis in degrees

Dx : Center distance of x axis between accessory and tracker


Dy : Center distance of y axis between accessory and tracker
Dz : Center distance of z axis between accessory and tracker

Content developers can collect the above information and transform Tracker pose to accessory
pose.

Assume Tracker rotation matrix is , accessory rotation matrix =


_ _ ∗ .

And accessory position = + *

30 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

The following is a Unity sample code:

public class Accessory : MonoBehaviour {

const float dX = 0.0100224f;


const float dY = -0.07616526f;
const float dZ = 0.4884118f;

const float roll = 10.854305f;


const float yaw = 91.8736f;
const float pitch = 78.805113f;

void Update () {

//Collect delta rotation and displacement between Tracker and Accessory


Vector3 delta_displacement = new Vector3(dX, dY, dZ);
Quaternion delta_rotation = Quaternion.Euler(roll, yaw, pitch);

//Get current Tracker pose


Vector3 tracker_position = SteamVR_Controller.Input(3).transform.pos;
Quaternion tracker_rotation = SteamVR_Controller.Input(3).transform.rot;

//Transform current Tracker pose to Accessory pose


GameObject.Find("Accessory ").transform.rotation = tracker_rotation * delta_rotation;
GameObject.Find("Accessory ").transform.position = tracker_position + (tracker_rotation *
delta_rotation) * delta_displacement;

Figure: Unity sample code for accessory integration (1)

31 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Another Unity sample code shows how to transform the accessory by comparing vectors
parallel to y-axis and z-axis of the Vive Tracker (AxisY_Tracker, AxisZ_Tracker in example
below) and the accessory (AxisY_Accessory, AxisZ_Accessory in example below).

public class Accessory : MonoBehaviour {

const Vector3 AxisY_Tracker = new Vectors(AxisY_Tracker_X, AxisY_Tracker_Y,


AxisY_Tracker_Z);
const Vector3 AxisZ_Tracker = new Vectors(AxisZ_Tracker_X, AxisZ_Tracker_Y,
AxisZ_Tracker_Z);

const Vector3 AxisY_Accessory = new Vectors(AxisY_ Accessory _X, AxisY_ Accessory _Y,
AxisY_ Accessory _Z);
const Vector3 AxisZ_ Accessory = new Vectors(AxisZ_ Accessory _X, AxisZ_ Accessory _Y,
AxisZ_ Accessory _Z);

void Update () {

//Calculate delta rotation by comparing vectors parallel to Y axes of Tracker and the accessory
Quaternion delta_rotY = Quaternion.FromToRotation(AxisY_Tracker, AxisY_Accessory);
AxisZ_Tracker = delta_rotY * AxisZ_Tracker;
Quaternion delta_rotZ = Quaternion.FromToRotation(AxisZ_Tracker, AxisZ_Accessory);

//Collect delta rotation and displacement between Tracker and Accessory


Vector3 delta_displacement = new Vector3(dX, dY, dZ);
Quaternion delta_rotation = delta_rotZ * delta_rotY;

//Get current Tracker pose


Vector3 tracker_position = SteamVR_Controller.Input(3).transform.pos;
Quaternion tracker_rotation = SteamVR_Controller.Input(3).transform.rot;

//Transform current Tracker pose to Accessory pose


GameObject.Find("Accessory ").transform.rotation = delta_rotation * tracker_rotation;
GameObject.Find("Accessory ").transform.position = tracker_position + (delta_rotation *
tracker_rotation) * delta_displacement;
}
}
Figure: Unity sample code for accessory integration (2)

32 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Unity integration
This section provides an example for content developers to enable Vive Tracker in VR content
by using Unity game engine.

First, you need to make Vive Tracker detectable in SteamVR. Assume that you have two Vive
controllers already, and you have plugged in the dongle into the dongle cradle to the
computer’s USB port. Right-click on one of the existing controller’s icon and click “Pair
Controller” in the pop-up menu (shown in figure below). Press the Power button on Vive
Tracker for 2 seconds, and then release it to enter the paring mode.

Figure: Pair Vive Tracker

After paring is successful between the Vive Tracker and the dongle, you will see that the Vive
Tracker is detected in the SteamVR UI.

Figure: Vive Tracker is added in SteamVR

33 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

You can download Unity is 5.3.5f1 Personal from


https://store.unity.com/download?ref=personal

Figure: Unity Version

You need to import SteamVR Plugin into your project first. If you do not have it yet, you can
download it from the Asset Store in Unity.

Figure: Unity Asset Store

34 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

In the developer version of Vive Tracker, it will use a similar approach and naming as you did
to create content for the Vive controller. The steps to create content for Vive Tracker are as
follows (with figures from Unity):

Step 1: Add “CameraRig” to Hierarchy to start creating content for SteamVR in Unity.

Figure: Add “CameraRig”

35 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Step 2: Create the 3D Object for Vive Tracker. In this example, “Capsule” is used.

Figure: Create 3D Object

36 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Step 3: Add Component > SteamVR_Tracked Object to the 3D Object “Capsule”.

Figure: Add Component “SteamVR_Tracked Object”

37 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Step 4: Under SteamVR Controller Manager, set the size of the Objects item. In this example,
one Vive Tracker is used in the setup.

Figure: Set size of object in “SteamVR Controller Manager”

38 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Step 5: Under SteamVR Controller Manager, on the Element 0 field, select “Capsule” as the
GameObject.

Figure: Set type of object in “SteamVR Controller Manager”

39 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Step 6: After completing the steps mentioned above, press the “Run” button in Unity. When
you move Vive Tracker, you will see the Capsule object is also moving in the content.

Figure: Execution of Unity

Tracker on Unity or Unreal


If you encounter problems in enabling Vive Tracker on Unity or Unreal, refer to the following
links:

 For Unity 3D developers:


o Download link for the ViveInputUtility package: AssetStore or GitHub
o Unity Plugin: https://www.assetstore.unity3d.com/en/#!/content/64219
o Unity source code: https://github.com/ViveSoftware/ViveInputUtility-Unity

 For Unreal Engine 4 developers:


o Download link for the UE4ViveTrackerSupport source code modification: GitHub.
(UE4 / GitHub subscription is required to access the UE4ViveTrackerSupport
source code modification.)
o Unreal source code: https://github.com/ViveSW/UE4ViveTrackerSupport
Firmware upgrade

40 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

In the developer version (DVT) of Vive Tracker, the ROM files for firmware upgrade will be
provided by HTC, utilizing the existing program “lighthouse_watchman_update.exe” of
SteamVR located in the folder “SteamVR\tools\lighthouse\bin\win32\”. It should be available in
your environment after the installation of the HTC Vive VR system.

For devices in DVT stage, please follow these steps to upgrade the firmware with the
upgradeFirmware.zip file.

*Note: Check the device number on the power key of your Vive Tracker. If the device number starts with D, it is in
DVT stage.

1. If a Vive controller is connected to your computer via USB, unplug it first.


2. Connect one Vive Tracker with your computer using the USB cable.
3. Unzip the file upgradeFirmware.zip.
4. Execute the file upgradeFirmware.exe.
5. When done, disconnect the USB cable to reboot device.
6. To verify tracking, check that you see the Vive Tracker icon on SteamVR beta.

For devices post-DVT stage, follow the SteamVR notification to update the firmware. You may
also do these steps to upgrade the Vive Tracker firmware:

1. Copy the firmware binary files (including MCU, FPGA and RF) provided by HTC into the
same folder of “lighthouse_watchman_update.exe” in your PC.
2. If a Vive controller is connected to your computer via USB, unplug it first.
3. Connect one Vive Tracker with your computer using the USB cable.
4. Execute the following commands.

a. Update MCU’s firmware:


lighthouse_watchman_update -mnt tracker_mcu_filename.bin

b. Update FPGA’s firmware:


lighthouse_watchman_update -fnt tracker_fpga_filename.bin

c. Update RF’s firmware:


lighthouse_watchman_update -rnt tracker_rf_filename.bin

41 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

FAQ
Type No. Question Answer
Common 1 How do I connect the dongle to my Connect one end of the supplied USB cable to the
computer? dongle cradle, and then attach the dongle to the
cradle. Connect the other end of the USB cable to
your computer.

2 How do I charge Vive Tracker? While in VR, you can check the battery level of Vive
Tracker when no apps are running, or when the
System Dashboard is up. When the battery is low, the
indicator will show a single red dot.

Make sure to use the USB cable that’s in the box.


Connect the USB cable to the power adapter that
came with your Vive controllers, and then plug the
power adapter to a power outlet to charge Vive
Tracker. You can also connect Vive Tracker to a
computer’s USB port to charge it.

When Vive Tracker is fully charged, its status light


either shows white if it is off or green if it is turned on.

3 How do I pair the dongle with Vive 1. Turn on the headset and pair the2 controllers.
Tracker?
2. Connect the dongle to your computer.

3. Turn on Vive Tracker to start the pairing process


automatically.

Warning: If Vive Tracker cannot be automatically


paired the first time, the dongle may pair with
another equipment.

To manually pair Vive Tracker, open the SteamVR


app, tap the down arrow, and then select Devices >
Pair Controller. Follow the on-screen instructions to
complete the process.
4 What does the status light on Vive The status light shows:
Tracker mean?
 Green when Vive Tracker is in normal mode
 Blinking red when battery is low
 Blinking blue when Vive Tracker is pairing with
the headset or dongle
 Blue when Vive Tracker is connecting with the
headset or dongle
 Orange when charging

42 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

5 How can I update Vive Tracker? 1. From your computer, open the SteamVR app.

2. Using the supplied USB cable, connect the Vive


Tracker to one of your computer’s USB ports. The
firmware update will start automatically once
tracker is detected by SteamVR.

Warning: Do not unplug the micro-USB cable any


time before the firmware update is complete.
Doing so could result in a firmware error.

3. When the update is complete, click Done.

6 Why does Vive Tracker When Vive Tracker turns off, some of the possible
automatically turn off? reasons might be:

 The battery is drained


 Pairing has timed out after being idle for more
than 30 seconds
 There was no user movement for 5 minutes

7 Can I use more than one Vive Multiple Vive Tracker hardware can be used, but
Tracker? limitations apply.

8 Why can't I see Vive Tracker on Check that your SteamVR app is the latest version.
SteamVR?

9 How do I reset Vive Tracker? To reset Vive Tracker, connect it to your computer
using the supplied USB cable, and then press and
hold the Power button for 10 seconds.

10 How many Tracker can be The maximum number of tracking objects can be
adapted? adopted is 11 pcs of Vive Tracker plus 2 pcs of Vive
controller.

43 HTC Confidential and Proprietary


Vive Tracker Developer Guidelines
HTC Corporation 07/17/2017
Ver. 1.5

Type No. Question Answer


SDK 1 How do identify whether Vive You can use the class type of SteamVR SDK to
Tracker or the controller is being identify if Vive Tracker or the controller is currently
tracked? being tracked.

2 Does Vive Tracker have a different Yes. Content developers need to apply different
coordination system compared to coordination settings based on the position where the
the controllers? Vive Tracker is mounted.

3 How can I replace the controller Content developers need to apply different
with Vive Tracker if I already coordination settings based on whether Vive Tracker
created content meant for the is mounted on the same position as the controller.
controller? If its position is different, content developers need to
recalibrate for Vive Tracker.

4 What's the equivalent of Vive The hardware button of Vive Tracker maps to the
Tracker's hardware button to the System button of the controller.
controller?
5 How can I simulate the button event Check the "Data format" section in the developer
when I connect Vive Tracker to a guidelines, and follow the SetFeature 0xB4 format to
computer through USB? fill your simulated data in "Button byte" data.

6 How can I simulate the controller Check the "Data format" section in the developer
trackpad when I connect Vive guidelines, and follow the SetFeature 0xB4 format to
Tracker to a computer through fill your simulated data in "Pad X" and "Pad Y" byte
USB? data.

7 Why is tracking lost when I When you connect Vive Tracker to your computer
connected Vive Tracker to a USB using a USB cable, it enters data sending mode. To
cable? resume tracking while connected to a USB port, follow
the developer guidelines to send the SetFeature 0xB3
command to fill Host type byte.

8 Can we implement our own data Vive Tracker only supports data that's compatible with
into Vive Tracker's data stream? the controllers.

Type No. Question Answer


Hardware 1 Can I customize the POGO pins? Yes, you can. For information on how to customize the
POGO pins, contact
www.vive.com/us/support/contactus.

2 What's in the downloadable 3D The 1.77KB ZIP file contains the .IGS and .STP for
CAD file for the Vive Tracker? Vive Tracker. It's not a requirement to use the files, but
it can help if you have 3D modeling software.

44 HTC Confidential and Proprietary

You might also like