HandDriver Web adopts B/S architecture, supporting access to the graphical interface through a browser on a PC. The browser can be closed once the DataGlove is properly connected. It is suitable for applications in the robotic field (the interface language currently only supports English).
During use, the receiver is connected to the PC where the server is located. The distance between the DataGlove and the receiver should not be too far, ideally kept within 2-3 meters, with a maximum range of approximately 5 meters.
Only supports 1-To-2 receiver DataGlove.
Compared to the HandDriver, the following features have been removed:
FBX/BVH recording and its related configuration options;
Thumb root joint adjustment;
Firmware upgrades (if the firmware upgrade is required, it is recommended to download the Windows version. Note: always upgrade the DataGlove first, then upgrade the receiver.)
1.2. Environmental Requirements
Google Chrome is recommended.
Only supported in Ubuntu currently. Please pay special attention to the Ubuntu version requirements for different software versions.
It is recommended to deploy and start the server first, then deploy and run the web client.
3.1. Server Deployment and Startup
3.1.1. Important Notes
When deploying the server, follow the operations described in the "Regular Version" section of this document. However, if using an authorized version related to dexterous hands, be sure to first review the operation instructions for the relevant dexterous hand version (including the License Key instructions).
3.1.2. Paxini Dexterous Hands Authorized Version
The Paxini authorized version only supports operation in Ubuntu 22. The Paxini authorized version requires an License Key and corresponding software package provided by Udexreal to be used. For specific inquiries, please contact UDEXREAL sales.
If using the version that supports Paxini dexterous hand, the following steps must be performed first.
Save the server installation package HDService.zip in any directory of your system, extract it, then navigate to the HDService directory, open a terminal, and enter the following commands in sequence.
At this point, the operations required to support the Paxini dexterous hand are completed. Please proceed to refer to the Regular Version deployment instructions.
3.1.3. Regular Version (the Regular, Non-dexterous Hand Authorized Version) Deployment and Startup
Ubuntu Version
1
Install Dependencies
Save the server installation package HDService.zip in any directory of your system, extract it, then navigate to the HDService directory, open a terminal, and enter the following commands in sequence.
Install dependencies (if batch installation is not possible, they can also be installed individually)
If error occurs during the process, execute the following command, then run the dependency installation again. Repeat this cycle until all the above dependencies are installed.
2
Operations for Different Ubuntu Versions
a. Ubuntu20
Perform the following operations in any directory.
b. Ubuntu22
There are no other special operations. Proceed directly to to the step 3 described below.
c. Ubuntu24
Perform the following operations in the HDService directory.
3
Server Startup
Enter the HDService directory, open a terminal, and enter the following commands in sequence.
Update local dependency libraries
Since HDService needs to create a log directory and may also save human-side motion data, it is necessary to ensure that the directory where HDService is located on the server has sufficient read and write permissions. It is recommended to check the permissions first. If unsure, you can execute "sudo chmod -R 777 <server directory>" to grant full read, write, and execute permissions to the directory and its subdirectories.
Finally, execute the following commands in the HDService directory to complete the server deployment and service startup (If the permissions are insufficient, first execute sudo chmod +x HDService).
Windows Version
For the Windows version of the server, after extraction, it can be placed in any directory. Double-click HDService.exe to run it.
3.2. Web Client Deployment and Operation
3.2.1. Ubuntu Environment Setup
Web client deployment refers to Unity WebGL + Nginx (Ubuntu) deployment. It is recommended to place the Web client on the same computer as the server, so the deployment only needs to be done once.
1
Environment Preparation
Update the system and install the Nginx:
Create the Web client deployment directory, such as /var/www/handdriver , and copy all files from the unzipped HDWebClient.zip to this directory.
Ensure the server-config.json content is correct, for example:
If using UFW or other firewalls, open the port 80 (or 443): sudo ufw allow 'Nginx Full'
2
Nginx Configuration
Create a new site configuration: Use the command sudo vim /etc/nginx/conf.d/handdriver.conf (if vim is not available, use nano for writing) to create a configuration file, and write the following content into it (Please pay special attention to ensuring that the configurations for listen, server_name, and root in the configuration file are correctly set):
Modify the nginx.conf file
sudo vim /etc/nginx/nginx.conf (use nano for writing if vim is not available)
Change the first line user www:data to user root
Enable the site and verify the configuration
Apply the new configuration
3
Permissions and Deployment
When updating the version, simply replace the files in the Web client deployment directory (e.g., /var/www/handdriver) and execute sudo systemctl reload nginx again.
4
Verification and Operation
(This step is optional) Use curl http://192.168.5.215:8088/server-config.json (replace with the actual IP/domain and port) to check if the JSON is accessible and if the response headers meet expectations.
Open a browser and visit http://192.168.5.215:8088/ (replace with the actual IP/ domain and port) to confirm that the WebGL page loads properly. Once verified, the HandDriver Web is ready to run.
If HTTPS is required, configure the certificate (e.g., using Let's Encrypt) as needed and replace the listening port listen 8088 with the corresponding listen 443 ssl settings.
When multiple Web clients are connected to the same server, operations performed on one client (such as Calibration or Data Trans setting) will be synchronized to all other clients.
Data transmission: Data generated by each character is packaged independently and send seperately.
If the server crashes, the indicator light on the previously connected DataGlove will remain solid green. The server must be restarted before reconnecting the DataGlove.
The Old Plugin option in the Data Trans function is currently non-functional when selected.
sudo dpkg -i DexHandSDK-1.2.1-Linux.deb
sudo tar -xzf gsl.tar.gz
# Enter the gsl directory
cd gsl
sudo ./configure CFLAGS="-g -O0"
sudo make -j4
sudo make install
# Back to the HDService directory
cd ..
sudo tar -xzf eigen-3.3.7.tar.gz
# Enter the eigen-3.3.7 directory
cd eigen-3.3.7
sudo mkdir build
# Enter the build directory
cd build
sudo cmake ..
sudo make install
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.12.4/protobuf-all-3.12.4.tar.gz
tar -xzf protobuf-all-3.12.4.tar.gz
# Enter the protobuf-3.12.4 directory.
cd protobuf-3.12.4
./configure
make -j$(nproc)
sudo make install
sudo ldconfig
{
"serverUrl": "ws://192.168.5.215:7789" //This IP address is the server address. Port 7789 must not be changed.
}
server {
listen 8088; # This listening port can be set according to your actual situation.
server_name 192.168.5.215; # The actual IP or domain name where the server is located, same as the address where the Web client resides.
root /var/www/handdriver; # Actual Web client deployment directory.
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location = /server-config.json {
default_type application/json;
add_header Cache-Control "no-cache, must-revalidate";
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET, OPTIONS" always;
add_header Access-Control-Allow-Headers "Content-Type" always;
try_files /server-config.json =404;
}
location /Build/ {
add_header Cache-Control "no-store";
try_files $uri =404;
}
location /TemplateData/ {
try_files $uri =404;
}
access_log /var/log/nginx/handdriver_access.log;
error_log /var/log/nginx/handdriver_error.log;
}