RCbenchmark Tracking Lab Setup (1/2)
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: email@example.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 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
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.
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.
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.
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).
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.
Client Source Code
We are providing you with the source codes of the client in the following languages:
- C (Windows & Linux)
- C++ (Windows & Linux)
The client source codes will take care of the deserialization of the datagrams. You can download the client source codes from this page.
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