Otus Tracker Documentation and Software Download (deprecated)

RCbenchmark tracking lab server
RCbenchmark tracking lab servers

Otus Tracker Datasheet

Of you are looking for the Otus Quadcopter documentation, please click here.

Latest Datasheet


CAD model

Download STP



RCbenchmark tracking lab CAD model


You are one click away from downloading the RCbenchmark Tracking Lab, the software for the Otus Tracker.

Server and main software

We are currently offering the software, which also acts as a server, on Windows only. The client can run on any Ethernet or Wifi connected computer (Linux, Raspberry Pi, etc…). To reduce latency (<1 ms), use an Ethernet connection between the server and the client, or run the client and the server on the same machine.

Released: September 15th, 2017
Download Now:

Windows 0.90.3

You can run the software without a license key. The only limitation is that your update rate will be limited to 1 Hz. For setup information, click here.

Known Issues:

  • The trackers are shown in the software with about 0.3 s of latency on computers with slow graphic cards. This issue does not affect the time stamp or the streaming latency of the data. The display of the GUI and the server are running independently.
  • The software is not signed yet: Windows will display a warning message. Please select the option ”Run anyway”.


To communicate with other software, the server streams the data through UDP packets. Those packets are read and parsed by the client. We offer example clients for the following programming languages:

  • C
  • C#
  • C++
  • Python
  • Matlab
  • Labview

They are compatible with:

  • RCbenchmark 0.90.0.exe
  • rcbenchmark_ros_pkg_V0.0.2.zip

The client codes are well documented and they are designed to be easy to implement with your software. You can also use them as a reference to implement clients in other languages. If you have clients implemented in other languages and you want to share your code with other users, please contact us! We will make your code available with the proper credits.

Version: 0.0.2

Released: September 19th, 2017

Clients for RCbenchmark Tracking lab
ROS projects for RCbenchmark Tracking lab


Software Documentation


The tutorial is divided into three parts:

After, you may read tutorials on communication with other software such as ROS. You can follow those tutorials:

Install Steam

The RCbenchmark Tracking Lab and the Otus tracker are compatible with and require SteamVR. Install Steam by downloading the executable (.exe) from the official website. You will have to create an account. For more information, please see the Installing Steam page. Please note that it is preferable to install Steam on the default destination folder as shown on the Steam Setup image.

Installing Steam

Install SteamVR

SteamVR can be installed inside the Steam software. Open Steam, go to Library and click on Tools. Search for SteamVR and double click on it to start the installation.

Steam library dropdown


Download RCbenchmark Tracking Lab

Please download the RCbenchmark Tracking lab from this page.

Download RCbenchmark tracking lab


Run RCbenchmark Tracking Lab

Double click onRCbenchmark_Tracking_Lab_2017.exe. The first time you run the software, some background configuration will be made. The software will prompt you to manually restart the software and SteamVR. You will have to do this only once after installation. While you wait a maximum of 24 hours to receive the license key by email, you can stream data and connect controllers. The only limitation is that recording and data streaming is limited to 1 Hz.

Proceed to the hardware setup section.

Note: If after restarting the program, you get the error “Headset not connected properly” on the SteamVR tools panel, you will have to do the configuration manually as explained in the expandable section below.

Note: “Not Ready” text on the SteamVR tools panel is normal and does not impact the Otus Tracker. 

RCbenchmark tracking lab Otus


Steam VR (Not Ready)


Otus Tracker Manual Configuration (Optional)

This section should be followed if the automatic configuration of the RCbenchmark Tracking Lab did not work.

If you are getting the error shown on the right “Headset not connected properly” after running the RCbenchmark Tracking Lab Software, it means that the Otus tracker has not been configured to function with SteamVR properly. The RCbenchmark Tracking Lab Software is supposed to fix this problem the first time you run it. If the automatic modification failed, follow these steps:

  1. Locate the following configuration file and open it with a text editor: C:\Program Files (x86)\Steam\steamapps\common\SteamVR\resources\settings\default.vrsettings
  2. If you have not installed Steam on the default path ” C:\Program Files (x86)\Steam”, then Step 1 changes accordingly.
  3. Search for the “requireHmd” key under “steamvr”, set the value of this key to “false” and save the file.
  4. If SteamVR is running, close and restart it.
  5. When SteamVR restarts, you will see that it is now possible to connect the Otus tracker without the HMD.

Note: “Not Ready” text is normal and does not impact the Otus Tracker.

Not Ready text window


Require hmd = false


Hardware Setup

Install the Base Stations

  • The base stations should be installed at a maximum of 5 meters from each other. More than 5 meters may work, but it is outside the recommended specification.
  • One base stations has to be in b _mode and the other base station has to be in _c mode. You can change the mode of operation by pressing the button at the back of the base station.
  • We recommend installing the base stations at opposite corners of the room.
  • To reduce occlusion, we recommend installing the base stations at a height of around 2 meters. They should be pointing slightly downward: they have a cone of vision of 120 degrees vertically and horizontally.
  • More than two base stations is not supported.
  • The base stations are synced optically. They have to see each other to work.

You can also see part 1 and 2 in the HTC Vive PRE Installation Guide. Part 1 will explain the room configuration. Part 2 will explain how to install the base station. The other parts in the HTC Vive PRE Installation Guide are not applicable as you are using the Otus tracker.

If you see an “!” beside the base stations icon in SteamVR, you can update your firmware. Please follow the instructions from HTC here. Tracking will work even if you do not update your firmware.

Motion tracking setup diagram

(c) 2015 Valve Corporation.

Install OTUS Tracker

Unbox your Otus tracker kit. Make sure you have all of the following:

  • Otus Tracker
  • USB Wireless Receiver
  • USB to 3-pin Connector
  • USB Extension
  • USB A to USB mini
  • Vibration Isolators

To test tracking, connect the Otus tracker to a USB port on your local machine via the USB A to USB mini cable. Launch the RCbenchmark Tracking Lab software. The SteamVR control panel should launch automatically. The tracker has to see at least one base station to start tracking. Two base stations in sight are required for best tracking performances.

If you are losing tracking when the robot is running, you may need to install the included foam vibration dampers. You need three dampers per tracker. The accelerometer resonates when it experiences high frequency vibrations. We cannot filter the vibrations electronically: the tracker has to be mechanically isolated. This is why we included small vibration dampers.

You can download the CAD model of the Otus tracker here (FBX, OBJ and STL). It can be used for visualisation in your software or for 3D modeling. The model has been simplified to reduce the polygon count and increase performance when used in real time visualisation.

Otus tracker with USB

Wireless installation

The Otus tracker is powered from a 5V power source from your UAV or robot when used wirelessly. This is to reduce weight.

Follow the connection diagram on the following image. Connect the wireless receiver to the USB extension cable and the USB extension cable to your computer. The USB extension cable is not necessary, but it will reduce the risk of losing tracking due to electromagnetic interference.

Your Otus trackers come paired to their wireless receiver by default. If you want to pair the unit again, right click the controller icon in SteamVR and click “Pair Controller”. Then, press and hold the two buttons on the Otus tracker until the LED flashes blue. Once the LED is solid blue, the trackers are paired.

Proceed to the software setup in the next section.

Otus tracker to drone connection

The program generates a unique encrypted key based on your local machine (2). The encrypted key has to be sent to us via email to: licensing@rcbenchmark.com (1). The encrypted key can be copied by clicking the copy to clipboard icon (3). We will quickly send you your serial key. In the meantime, you can start using the demo version of the software. The only limitation is that the software will record and stream data at 1 Hz. The Pro version can stream data from 0-400 Hz. Please note that at 400 hz, the data is interpolated. The wireless link is limited to 250 Hz. 

RCbenchmark tracking lab key


RCbenchmark Tracking Lab Setup (2/2)

Once we receive your encrypted key by email, we will send you back a serial key (4) which will unlock the Pro version of the software. You will not need the serial key next time you open the software, but we recommend that you save the serial key. 

RCbenchmark tracking lab serial key


RCbenchmark Tracking Lab

The main page of the software is shown on the right. You can see the tracker in the virtual environment with its local axis attached. The right-hand ruleis used as the convention for vectors in 3D space. The white box close to the tracker is the HTC Vive base station. The program contains two main tabs: Track and Server. There is also another panel on the bottom right corner for controlling the frequency and resetting the local axis. We recommend marking a cross on the ground with tape and using that cross to reset your local frame of coordinate to the same location every time.

RCbenchmark tracking lab records


Recording Results

Go to Track >> Record. To record the results into a.txt_file you can toggle from Recording OFF to Recording ON. By default, the_TrackingData.txt_file containing the results will be saved inside an automatically generated folder containing the date and time the file was created. You can decide where to generate the results by clicking the_Open File/Folder Browser. The recording is done at the rate specified in the frequency field at the bottom right. The units are in meters and seconds. The txt file is comma separated. It can be opened by most software for analysis. 

RCbenchmark tracking lab recording 'on'


Real-Time Tracking

Go toTrack >> Tools. To see in-real time the numerical value of the position of the tracker you have to select the controller under Controller Information. Two types of positions are shown: Global and Local. Both are in meters. The global position is the position of the tracker with respect to the base stationb. Note that the position in the Z-Axis is the distance between the tracker and the ground. The local position is the position of the tracker with respect to a user defined frame. If we look at the example shown on the right, the Reset local axis was pressed for the selected Controller 1. The pop up at the bottom of the program shows the location of the new local axis that will be used to measure the position of the tracker with respect to that frame. The data streamed to programs connected to the RCbenchmark Tracking Lab will always be expressed in the user defined frame. 

RCbenchmark tracking lab 3D plot



Go to Server >> Record. It is possible to stream data via UDP/IP. The advantage of using the UDP/IP versus the TCP/IP is that it has a faster speed of transfer, it is lightweight and it is more efficient for applications requiring low latency. Two fields need to be specified before streaming: IPv4 Address and Port #. The IPv4 is the address where you want to send data. By default, the IPv4 Address is set to127.0.0.1which is the loopback address. The loopback address is the address used when you want to send data back to the same computer that is sending the data. To stream data to another computer you will need its IPv4 address. You will also need to provide the destination Port number. It is set to 5400 by default.

Note:To obtain the IPv4 address on a Windows machine you need to type ipconfig on the Command Prompt (see middle picture on the right).

Note:To obtain the IPv4 address on a Linux machine you need to typehostname -Ion the terminal (see bottom picture on the right).

Download RCbenchmark Tracking Lab


RCbenchmark tracking lab command prompt



babic host name


Data Streaming from Server to Client

To start streaming you have to toggle from Streaming OFF to Streaming ON. On the right you can see the RCbenchmark Tracking Lab as the Server streaming to a Client program. Each datagram (or packet) sent to the Client contains various data. If we look at the timestamp we can see the moment at which the datagram was created and sent. We can also see that the timestamp is related to the frequency set. For example, setting the frequency at 1 Hz means that a datagram is sent every second, while setting it at 400 Hz means 400 datagrams are sent per second or one datagram every 2.5 ms. Note that the timestamp is the time elapsed between the launch of the program and the datagram creation.


RCbenchmark tracking lab data streaming 'on'



RCbenchmark tracking lab data streaming


Client Source Code

We are providing you with the source codes of the client in the following languages:

  • C (Windows & Linux)
  • C++ (Windows & Linux)
  • C#
  • Python
  • LabVIEW

The client source codes will take care of the deserialization of the datagrams. You can download the client source codes from this page.


RCbenchmark tracking lab client source code


Implement Your Own Client: UDP Package Content

In the case we do not have a client for your software or programming language, your can implement your own UPD client. The content of the streamed packages are shown on the right. Each package is 184 bytes. There are in total 23 data elements, each taking 8 bytes which is the standard IEEE 754 double-precision floating-point format. This is the_double _data type found in C type languages or_float _in Python. Here is a description of the data:

  • Controller ID: the identification of the tracker (useful if you are using multiple trackers in your project)
  • Timestamp: see part 07
  • Linear Position: linear position in X,Y and Z [m]
  • Linear Velocity: linear velocity in X, Y and Z [m/s]
  • Linear Acceleration: linear acceleration in X, Y and Z [m/s^2] (NOT SUPPORTED YET)
  • Orientation Quaternion: orientation and rotation of tracker using the unit quaternions (X, Y, Z, W) convention.
  • Angular Velocity: angular velocity around X, Y and Z axes [rad/s]
  • Angular Acceleration: angular acceleration around X, Y and Z axes [rad/s^2] (NOT SUPPORTED YET)
  • Buttons: buttons found on the Otus tracker, when pressed value is set to 1 and when released goes back to 0
RCbenchmark tracking lab UDP package contents


Transport Protocol

The RCbenchmark Tracking Lab software streams UDP packets over the network. See the code here.


The User Datagram Protocol (UDP) is a transport layer protocol defined to be used with an IP network layer protocol. The UDP is simple and fast which means that it has much lower bandwidth overhead and latency. However, the packets being sent may be lost or received out of order. It is a best-effort delivery meaning that no guarantees are provided for the delivery of the packages.


The Transmission Control Protocol (TCP) is a transport layer protocol defined to be used with an IP network layer protocol. The TCP offers reliable messaging meaning that even lost packages are resent until received. It uses the three-way handshake method. However, the additional services that TCP offers comes at a cost in terms of additional data overhead and delays.


The server is theRCbenchmark Tracking Lab. The server communicates with the client program via UDP/IP and TCP/IP. The role of the server is to provide the necessary data to the client.


The client can be any program that wishes to acquire data from the server. Currently, the source code is provided to connect to the UDP sockets of the server using the following programming languages: C, C++, C#, Python, MATLAB and LabVIEW. To connect to the TCP sockets of the server, a source code in C# is provided. A ROS (Robot Operating System) module is provided, as well, to interface in real-time with the server.

Table 1. RCbenchmark Tracking Lab Ports and Protocols

Port TCP/UDP Description
5400 UDP Kinematics w.r.t. User Defined Frame, and more (See Figure 1)
0 Controller ID
8 Timestamp
16 Linear Position: x
24 Linear Position: y
32 Linear Position: z
40 Linear Velocity: x
48 Linear Velocity: y
56 Linear Velocity: z
64 Linear Acceleration: x
72 Linear Acceleration: y
80 Linear Acceleration: z
88 Orientation Quaternion: x
96 Orientation Quaternion: y
104 Orientation Quaternion: z
112 Orientation Quaternion: w
120 Angular Velocity: x
128 Angular Velocity: y
136 Angular Velocity: z
144 Angular Acceleration: x
152 Angular Acceleration: y
160 Angular Acceleration: z
168 Button 1
176 Button 2

Figure 1.UDP Package Content


The Otus tracker has low tracking performance in the form of glitches or high noise.

The Otus tracker should have a resolution and a noise level under 1mm. Here are the main reasons the tracking performance can be poor as well as the common solutions.

  • Large mirrors in the room. Cover the mirrors with sheets.
  • Interferences due to a very high number of wifi networks (like in a tradeshow). Reduce the distance between the USB dongle and the Otus. If it is not sufficient, fly in another environment, or reduce the number of wifi connections.
  • The USB dongle may be too close the computer and the computer EMI can confuse the wireless receiver. Use the provided USB extender with the USB dongle to increase the distance between the computer and the receiver.
  • The Otus tracker too close to the base station (<70 cm). Use the tracker at a distance of 0.7m to 5 m from the base stations.
  • The base stations may be mounted on flimsy supports and vibrate. Mount the base stations on the walls, or use heavy duty tripod.