HTC Vive Tracker Developer Guidelines
HTC Vive Tracker Developer Guidelines
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.
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.
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.
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.
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.
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.
Interface
USB 2.0 full speed (client) from micro USB connector.
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).
Power
Note
AC: D+ short to D-
PC: D+/D- communication
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.
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
Sword
It is recommended to design the mounting mechanism close to the hand-held area, and set up
the length in the VR program.
Users are able to attach the Vive Tracker to any object/surface that is intended to be tracked.
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.
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:
No tracking area
Recommended area to put docking
mechanism
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.
Apparel size
Main feature
5. USB Port
3. Sensors
2. Power Button
1. LED Indicator
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.
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.
Stabilizing Pin
1/4” Bolt
Friction Pad
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).
1/4” Bolt
Electric
Connection Pad
Friction (Optional)
Pad
Spinning
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.
Accessory design
Below are the different accessory mechanisms, following ISO standards:
Mechanical
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.
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.
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
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
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.
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.
TRIGGER 0x01
BUMPER 0x02
MENU 0x04
STEAM 0x08
1 Button
PAD 0x10
PAD_FINGERDOWN 0x20
Reserved 0x40
Reserved 0x80
Sample code
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;
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
// 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.
Content developers can collect the above information and transform Tracker pose to accessory
pose.
void Update () {
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).
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);
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.
After paring is successful between the Vive Tracker and the dongle, you will see that the Vive
Tracker is detected in the SteamVR UI.
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.
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.
Step 2: Create the 3D Object for Vive Tracker. In this example, “Capsule” is used.
Step 4: Under SteamVR Controller Manager, set the size of the Objects item. In this example,
one Vive Tracker is used in the setup.
Step 5: Under SteamVR Controller Manager, on the Element 0 field, select “Capsule” as the
GameObject.
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.
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.
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.
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.
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.
5 How can I update Vive Tracker? 1. From your computer, open the SteamVR app.
6 Why does Vive Tracker When Vive Tracker turns off, some of the possible
automatically turn off? reasons might be:
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.
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.
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.