Skip to content

TEA-Lab/DOGlove

Repository files navigation

Robotics: Science and Systems (RSS) 2025

Project Page | Paper | Documentation | 30min工作讲解

Han Zhang1,2, Songbo Hu1, Zhecheng Yuan1,2,3 Huazhe Xu1,2,3

1Tsinghua University, 2Shanghai Qi Zhi Institute, 3Shanghai AI Lab

teaser

🐣 Updates

  • 2025/04/28 — Initial commit.
  • 2025/05/11 — Added embedded firmware repository.
  • 2025/06/01 — Added MakerWorld link, PCBA files, and Onshape model link.
  • 2025/06/22 — Update the tutorial. Add the Python scripts.

🛠️ Environment Setup

Tested on: Ubuntu 20.04 LTS

1. Create Conda Environment

conda create -n DOGlove python=3.9.19

2. Install MuJoCo

conda install -c conda-forge mujoco

3. Install Required Python Packages

pip install -r requirements.txt

4. Install Dynamixel Wizard

Follow the official installation guide:

  1. Download the installer: Linux Download
  2. Grant permission:
    sudo chmod 775 DynamixelWizard2Setup_x64
  3. Run the installer:
    ./DynamixelWizard2Setup_x64
  4. Follow the prompts to complete installation.
  5. Add your user to the dialout group to access the USB port:
    sudo usermod -aG dialout <your_account_id>
    # You can find your ID using:
    whoami
  6. Reboot to apply the changes:
    sudo reboot

🧪 Run Test Scripts

conda activate DOGlove
python servo.py
python glove_mcu.py

Visualize Glove Status

python fk.py

Run IK in Simulation

python fk_ik_core.py

Application Note: New Hand Models

model_spec.scale is a uniform FK-to-IK scale factor applied to all fingertips. Tune this first for each model:

  1. Set model_spec.offset = (0, 0, 0) and all per-tip adjustments to zero.
  2. Move one finger through a wide range of motion.
  3. Increase scale if IK motion amplitude is too small, or decrease it if too large.

Only tune global and per-tip translations after scale is close.

Application Note: Alignment Tuning

After scale is set, tune translation terms in this order:

  1. model_spec.offset for global XYZ alignment across all fingertips.
  2. model_spec.tip_position_adjustments[tip] for residual per-tip errors.

Use offset to correct shared drift across all fingers. Keep per-tip adjustments small, and use them only for model-specific fingertip bias.

🧰 Useful Tools

Record Current Hardware Packets

python tools/udp_record.py --duration <record_time> --output <path, e.g. recordings/udp_capture_test.jsonl>

Records current packets from hardware.

Replay Captured Packets

python tools/udp_replay.py --capture <path, e.g. recordings/udp_capture_test.jsonl>

Substitutes glove_mcu.py and servo.py with recorded packets to simulate hardware movement.

Render Captured Packets in MuJoCo

python tools/udp_reply_render.py --capture <path, e.g. recordings/udp_capture_test.jsonl>

Renders recorded packets in MuJoCo.

Wrist Tracking (Vive Tracker)

See tracker.md

🏷️ License

This repository is released under the MIT license. See LICENSE for more details.

👍 Acknowledgement

Contact Han Zhang if you have any questions or suggestions.

📝 Citation

If you find our work useful, please consider citing:

@article{zhang2025doglove,
  title={DOGlove: Dexterous Manipulation with a Low-Cost Open-Source Haptic Force Feedback Glove},
  author={Zhang, Han and Hu, Songbo and Yuan, Zhecheng and Xu, Huazhe},
  journal={arXiv preprint arXiv:2502.07730},
  year={2025}
}

About

[RSS25] Official repository of “DOGlove: Dexterous Manipulation with a Low-Cost Open-Source Haptic Force Feedback Glove”

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages