├── .github └── workflows │ └── sphinx-docs.yml ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── Makefile ├── _static │ ├── firmware │ │ ├── clock_tree.jpg │ │ └── pin_allocation.jpg │ ├── hardware │ │ ├── 1_import_project.jpg │ │ ├── 2_project_setting.jpg │ │ ├── 3_import_setting.jpg │ │ ├── 4_project_preview.jpg │ │ ├── ProPrj_DOGlove_MainBoard.epro │ │ ├── SCH_DOGlove_MainCircuit.pdf │ │ └── onshape_model.jpg │ ├── logo.png │ └── quick_start │ │ └── pcba │ │ ├── BOM_DOGlove_MainBoard_DOGlove_MainBoard.xlsx │ │ ├── Gerber_DOGlove_MainBoard.zip │ │ └── PickAndPlace_DOGlove_MainBoard.xlsx ├── chapters │ ├── getting_started.md │ ├── the_firmware.md │ ├── the_hardware.md │ └── the_software.md ├── conf.py ├── hardware │ ├── 01_circuit.rst │ └── 02_mechanical.md ├── index.md ├── make.bat └── quick_start │ ├── 01_pcba.md │ ├── 02_3d_print.md │ ├── 03_flash_firmware.md │ ├── 04_assemble_glove.md │ └── 05_make_it_move.md └── teaser.jpg /.github/workflows/sphinx-docs.yml: -------------------------------------------------------------------------------- 1 | name: Build and Deploy Sphinx Docs 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | permissions: 9 | contents: write 10 | 11 | jobs: 12 | docs: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout 16 | uses: actions/checkout@v4 17 | 18 | - name: Set up Python 19 | uses: actions/setup-python@v5 20 | with: 21 | python-version: "3.11" 22 | 23 | - name: Install dependencies 24 | run: | 25 | pip install sphinx furo myst-parser 26 | 27 | - name: Build HTML 28 | run: | 29 | sphinx-build -b html docs/ docs/_build/html 30 | 31 | - name: Deploy to GitHub Pages 32 | uses: peaceiris/actions-gh-pages@v4 33 | with: 34 | github_token: ${{ secrets.GITHUB_TOKEN }} 35 | publish_dir: docs/_build/html 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # UV 98 | # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | #uv.lock 102 | 103 | # poetry 104 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 105 | # This is especially recommended for binary packages to ensure reproducibility, and is more 106 | # commonly ignored for libraries. 107 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 108 | #poetry.lock 109 | 110 | # pdm 111 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 112 | #pdm.lock 113 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 114 | # in version control. 115 | # https://pdm.fming.dev/latest/usage/project/#working-with-version-control 116 | .pdm.toml 117 | .pdm-python 118 | .pdm-build/ 119 | 120 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 121 | __pypackages__/ 122 | 123 | # Celery stuff 124 | celerybeat-schedule 125 | celerybeat.pid 126 | 127 | # SageMath parsed files 128 | *.sage.py 129 | 130 | # Environments 131 | .env 132 | .venv 133 | env/ 134 | venv/ 135 | ENV/ 136 | env.bak/ 137 | venv.bak/ 138 | 139 | # Spyder project settings 140 | .spyderproject 141 | .spyproject 142 | 143 | # Rope project settings 144 | .ropeproject 145 | 146 | # mkdocs documentation 147 | /site 148 | 149 | # mypy 150 | .mypy_cache/ 151 | .dmypy.json 152 | dmypy.json 153 | 154 | # Pyre type checker 155 | .pyre/ 156 | 157 | # pytype static type analyzer 158 | .pytype/ 159 | 160 | # Cython debug symbols 161 | cython_debug/ 162 | 163 | # PyCharm 164 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 165 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 166 | # and can be added to the global gitignore or merged into this file. For a more nuclear 167 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 168 | #.idea/ 169 | 170 | # Ruff stuff: 171 | .ruff_cache/ 172 | 173 | # PyPI configuration file 174 | .pypirc 175 | 176 | # Ignore all .DS_Store files 177 | **/.DS_Store 178 | 179 | # Ignore the build directory for Sphinx documentation 180 | docs/_build/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Tsinghua Embodied AI Lab (TEA Lab) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DOGlove: Dexterous Manipulation with a Low-Cost Open-Source Haptic Force Feedback Glove 2 | 3 | **Robotics: Science and Systems (RSS) 2025** 4 | 5 | Project Page | 6 | Paper | 7 | Documentation | 8 | 30min工作讲解 9 | 10 | 11 | [Han Zhang](https://doublehan07.github.io/)1,2, 12 | [Songbo Hu](https://hsb0508.github.io/)1, 13 | [Zhecheng Yuan](https://gemcollector.github.io/)1,2,3 14 | [Huazhe Xu](http://hxu.rocks/)1,2,3 15 | 16 | 1Tsinghua University, 17 | 2Shanghai Qi Zhi Institute, 18 | 3Shanghai AI Lab 19 | 20 |
21 | teaser 22 |
23 | 24 | ## 🐣 Updates 25 | * **2025/04/28** — Initial commit. 26 | * **2025/05/11** — Added embedded firmware repository. 27 | * **2025/06/01** — Added MakerWorld link, PCBA files, and Onshape model link. 28 | 29 | 30 | 🚀 Content coming soon. Thanks for your patience! 31 | 32 | ## 🏷️ License 33 | This repository is released under the MIT license. See [LICENSE](LICENSE) for more details. 34 | 35 | ## 👍 Acknowledgement 36 | - Our wrist tracking code is adapted from [HTC Vive Tracker Python API](https://github.com/tianshengs/SteamVR_Tracking). 37 | - Our Franka control code is adapted from [UMI](https://github.com/real-stanford/universal_manipulation_interface) and [Data Scaling Laws](https://github.com/Fanqi-Lin/Data-Scaling-Laws). 38 | - Our 3D diffusion policy implementation is adapted from [3D Diffusion Policy](https://github.com/YanjieZe/3D-Diffusion-Policy) and [DemoGen](https://github.com/TEA-Lab/DemoGen). 39 | - The teleoperation baseline (AnyTeleop) is implemented from [Dex Retargeting](https://github.com/dexsuite/dex-retargeting). 40 | 41 | Contact [Han Zhang](https://doublehan07.github.io/) if you have any questions or suggestions. 42 | 43 | ## 📝 Citation 44 | If you find our work useful, please consider citing: 45 | ```console 46 | @article{zhang2025doglove, 47 | title={DOGlove: Dexterous Manipulation with a Low-Cost Open-Source Haptic Force Feedback Glove}, 48 | author={Zhang, Han and Hu, Songbo and Yuan, Zhecheng and Xu, Huazhe}, 49 | journal={arXiv preprint arXiv:2502.07730}, 50 | year={2025} 51 | } 52 | ``` -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line, and also 5 | # from the environment for the first two. 6 | SPHINXOPTS ?= 7 | SPHINXBUILD ?= sphinx-build 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | -------------------------------------------------------------------------------- /docs/_static/firmware/clock_tree.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/firmware/clock_tree.jpg -------------------------------------------------------------------------------- /docs/_static/firmware/pin_allocation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/firmware/pin_allocation.jpg -------------------------------------------------------------------------------- /docs/_static/hardware/1_import_project.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/hardware/1_import_project.jpg -------------------------------------------------------------------------------- /docs/_static/hardware/2_project_setting.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/hardware/2_project_setting.jpg -------------------------------------------------------------------------------- /docs/_static/hardware/3_import_setting.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/hardware/3_import_setting.jpg -------------------------------------------------------------------------------- /docs/_static/hardware/4_project_preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/hardware/4_project_preview.jpg -------------------------------------------------------------------------------- /docs/_static/hardware/ProPrj_DOGlove_MainBoard.epro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/hardware/ProPrj_DOGlove_MainBoard.epro -------------------------------------------------------------------------------- /docs/_static/hardware/SCH_DOGlove_MainCircuit.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/hardware/SCH_DOGlove_MainCircuit.pdf -------------------------------------------------------------------------------- /docs/_static/hardware/onshape_model.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/hardware/onshape_model.jpg -------------------------------------------------------------------------------- /docs/_static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/logo.png -------------------------------------------------------------------------------- /docs/_static/quick_start/pcba/BOM_DOGlove_MainBoard_DOGlove_MainBoard.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/quick_start/pcba/BOM_DOGlove_MainBoard_DOGlove_MainBoard.xlsx -------------------------------------------------------------------------------- /docs/_static/quick_start/pcba/Gerber_DOGlove_MainBoard.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/quick_start/pcba/Gerber_DOGlove_MainBoard.zip -------------------------------------------------------------------------------- /docs/_static/quick_start/pcba/PickAndPlace_DOGlove_MainBoard.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/docs/_static/quick_start/pcba/PickAndPlace_DOGlove_MainBoard.xlsx -------------------------------------------------------------------------------- /docs/chapters/getting_started.md: -------------------------------------------------------------------------------- 1 | # Getting Started 2 | 3 | 🚀 Content coming soon. Thanks for your patience! 4 | 5 | ```{toctree} 6 | :hidden: 7 | :maxdepth: 1 8 | 9 | ../quick_start/01_pcba.md 10 | ../quick_start/02_3d_print.md 11 | ../quick_start/03_flash_firmware.md 12 | ../quick_start/04_assemble_glove.md 13 | ../quick_start/05_make_it_move.md 14 | ``` 15 | -------------------------------------------------------------------------------- /docs/chapters/the_firmware.md: -------------------------------------------------------------------------------- 1 | # Firmware 2 | 3 | The source code of the firmware is listed [here](https://github.com/doublehan07/DOGlove_Firmware). 4 | 5 | ## Use the Firmware 6 | 7 | You can download the precompiled firmware from the following link and flash it to the STM32: 8 | [DOGlove.hex](https://github.com/doublehan07/DOGlove_Firmware/releases/download/v1.0/DOGlove.hex) 9 | 10 | ## Build from Source Code 11 | 12 | To build the firmware from source: 13 | 14 | ```bash 15 | git clone https://github.com/doublehan07/DOGlove_Firmware.git 16 | cd DOGlove_Firmware 17 | make 18 | ``` 19 | 20 | > 💡 Note: You may need to install [arm-none-eabi-gcc](https://developer.arm.com/downloads/-/gnu-rm) to compile the firmware. 21 | 22 | ## Notes for Advanced Developers 23 | 24 | To modify the firmware or view pin configurations, open the [DOGlove.ioc](https://github.com/doublehan07/DOGlove_Firmware/blob/main/DOGlove.ioc) file using [STM32CubeMX](https://www.st.com/en/development-tools/stm32cubemx.html). 25 | 26 | ### Pin Allocation 27 | 28 | ![Pin Allocation](../_static/firmware/pin_allocation.jpg) 29 | 30 | ### Clock Tree Configuration 31 | 32 | ![Clock Tree](../_static/firmware/clock_tree.jpg) 33 | 34 | ### Source Code Structure 35 | 36 | * [/Core](https://github.com/doublehan07/DOGlove_Firmware/tree/main/Core): *(Auto-generated by STM32CubeMX, except for `main.c` and `stm32f0xx_it.c`)* 37 | 38 | * [main.c](https://github.com/doublehan07/DOGlove_Firmware/blob/main/Core/Src/main.c): System initialization, LRA control, and encoder data packaging. 39 | * [stm32f0xx\_it.c](https://github.com/doublehan07/DOGlove_Firmware/blob/main/Core/Src/stm32f0xx_it.c): SysTick handler used for system-level scheduling. 40 | 41 | * [/Drivers](https://github.com/doublehan07/DOGlove_Firmware/tree/main/Drivers): STM32 HAL drivers *(auto-generated)* 42 | 43 | * [/Users](https://github.com/doublehan07/DOGlove_Firmware/tree/main/Users): Custom drivers and application code. 44 | 45 | * [ads1256.c](https://github.com/doublehan07/DOGlove_Firmware/blob/main/Users/ads1256.c): ADC driver for the ADS1256 chip. 46 | * [drv2605l.c](https://github.com/doublehan07/DOGlove_Firmware/blob/main/Users/drv2605l.c): Haptic driver for the DRV2605L chip. 47 | * [tca9548a.c](https://github.com/doublehan07/DOGlove_Firmware/blob/main/Users/tca9548a.c): I2C multiplexer driver for the TCA9548A chip. 48 | * [fsr.c](https://github.com/doublehan07/DOGlove_Firmware/blob/main/Users/fsr.c): Reads power supply voltage via STM32's internal ADC. 49 | * [delay.c](https://github.com/doublehan07/DOGlove_Firmware/blob/main/Users/delay.c): Implements precise millisecond-level delay. 50 | * [lra\_control.c](https://github.com/doublehan07/DOGlove_Firmware/blob/main/Users/lra_control.c): LRA control logic and UART RX event callback. 51 | -------------------------------------------------------------------------------- /docs/chapters/the_hardware.md: -------------------------------------------------------------------------------- 1 | # Hardware 2 | 3 | DOGlove’s hardware consists of two main components: the electronics for sensing and control, and the mechanical structure for physical interaction. 4 | 5 | ```{toctree} 6 | :hidden: 7 | :maxdepth: 1 8 | 9 | ../hardware/01_circuit.rst 10 | ../hardware/02_mechanical.md 11 | ``` 12 | 13 | ## Circuit Design 14 | 15 | Learn how we designed the electronics for DOGlove, including the schematic, PCB layout, and how to import or preview the project: 16 | 17 | * [Circuit Design](../hardware/01_circuit.rst) 18 | 19 | ## Mechanical Design 20 | 21 | Explore the mechanical structure of DOGlove through a full Onshape model, which can be exported in various formats: 22 | 23 | * [Mechanical Design](../hardware/02_mechanical.md) 24 | -------------------------------------------------------------------------------- /docs/chapters/the_software.md: -------------------------------------------------------------------------------- 1 | # Software 2 | 3 | 🚀 Content coming soon. Thanks for your patience! -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- 1 | # Configuration file for the Sphinx documentation builder. 2 | # 3 | # For the full list of built-in configuration values, see the documentation: 4 | # https://www.sphinx-doc.org/en/master/usage/configuration.html 5 | 6 | # -- Project information ----------------------------------------------------- 7 | # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information 8 | 9 | project = 'DOGlove' 10 | copyright = '2025, DOGlove' 11 | author = 'Han Zhang, Songbo Hu, Zhecheng Yuan, Huazhe Xu' 12 | 13 | # -- General configuration --------------------------------------------------- 14 | # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration 15 | 16 | extensions = [ 17 | # Sphinx's own extensions 18 | "sphinx.ext.autodoc", 19 | "sphinx.ext.extlinks", 20 | "sphinx.ext.intersphinx", 21 | "sphinx.ext.mathjax", 22 | "sphinx.ext.todo", 23 | "sphinx.ext.viewcode", 24 | 'myst_parser', 25 | ] 26 | 27 | exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] 28 | 29 | 30 | 31 | # -- Options for HTML output ------------------------------------------------- 32 | # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output 33 | 34 | html_theme = "furo" 35 | html_title = "DOGlove" 36 | html_logo = "_static/logo.png" 37 | language = "en" 38 | 39 | html_static_path = ['_static'] 40 | html_css_files = ["pied-piper-admonition.css"] 41 | 42 | # -- Options for Autodoc -------------------------------------------------------------- 43 | 44 | autodoc_member_order = "bysource" 45 | autodoc_preserve_defaults = True 46 | 47 | # Keep the type hints outside the function signature, moving them to the 48 | # descriptions of the relevant function/methods. 49 | autodoc_typehints = "description" 50 | 51 | # Allow both .rst and .md 52 | source_suffix = { 53 | '.rst': 'restructuredtext', 54 | '.md': 'markdown', 55 | } 56 | -------------------------------------------------------------------------------- /docs/hardware/01_circuit.rst: -------------------------------------------------------------------------------- 1 | .. _circuit_design: 2 | 3 | Circuit Design 4 | ============== 5 | 6 | The Schematics 7 | -------------- 8 | 9 | .. raw:: html 10 | 11 | 12 | 13 | Import the Project File 14 | ------------------------ 15 | 16 | We use lceda (EasyEDA) to design the schematic and PCB layout. To preview the source project, you have two options: 17 | 18 | Option 1: Import the `.epro` File 19 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 20 | 21 | - **For users in China**: Use the `lceda Pro Edition (立创eda专业版) `__ to import the `.epro` file. 22 | - **For users in other regions**: Use the `EasyEDA Pro Edition `__ to import the `.epro` file. 23 | 24 | Steps to Import: 25 | 26 | 1. Download the :download:`ProPrj_DOGlove_MainBoard.epro <../_static/hardware/ProPrj_DOGlove_MainBoard.epro>` file. 27 | 2. Open EasyEDA Pro and navigate to ``File → Import → EasyEDA (Professional)``. 28 | 29 | .. image:: ../_static/hardware/1_import_project.jpg 30 | 31 | 3. Upload the `.epro` file, adjust the settings as shown below, then click **Import**: 32 | 33 | .. image:: ../_static/hardware/2_project_setting.jpg 34 | 35 | 4. Confirm the import settings and click **Save**: 36 | 37 | .. image:: ../_static/hardware/3_import_setting.jpg 38 | 39 | 5. You should now see the full schematic and layout preview: 40 | 41 | .. image:: ../_static/hardware/4_project_preview.jpg 42 | 43 | Option 2: View on OSHWHub (Recommended for Users in China) 44 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 45 | 46 | You can directly view the `DOGlove project on OSHWHub (立创开源硬件平台) `__, which includes the schematics, PCB layout, and BOM. The platform also supports one-click PCB fabrication. 47 | -------------------------------------------------------------------------------- /docs/hardware/02_mechanical.md: -------------------------------------------------------------------------------- 1 | # Mechanical Design 2 | 3 | You can view the 3D model of DOGlove on Onshape. The model can be exported to SolidWorks, STEP, IGES, STL, and other formats supported by Onshape. 4 | 5 | [🧩 Onshape: 3D Model](https://cad.onshape.com/documents/7fa03943c40f265f7147311f) 6 | 7 | ![Onshape Model Preview](../_static/hardware/onshape_model.jpg) 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # DOGlove 2 | 3 | DOGlove is a low-cost, open-source haptic+force feedback glove designed for dexterous manipulation and teleoperation. 4 | 5 | Check out some useful links below to learn more: 6 | 7 | [🌐 Website](https://do-glove.github.io/) | 8 | [📄 Paper](https://arxiv.org/pdf/2502.07730) | 9 | [🎥 Video](https://www.youtube.com/watch?v=2qO7dbH9zxc) | 10 | [𝕏 Tweet](https://x.com/DoubleHan07/status/1889815837810499688) 11 | 12 | [🧩 Onshape: 3D Model](https://cad.onshape.com/documents/7fa03943c40f265f7147311f) 13 | 14 | [🛠️ MakerWorld: Bambu 3mf Files](https://makerworld.com/en/models/1476400-doglove#profileId-1541008) 15 | 16 | [📟 Circuit Board: OSHWHub (lceda)](https://oshwhub.com/doublehan/doglove_mainboard) 17 | 18 | [⚙️ Firmware: STM32 Source Code](https://github.com/doublehan07/DOGlove_Firmware) 19 | 20 | --- 21 | 22 | ## Getting Started 23 | 24 | Ready to dive in? We've prepared a [detailed tutorial](chapters/getting_started) to help you build your own DOGlove! 25 | 26 | If you're new to DOGlove, the easiest way is to follow the step-by-step tutorial☝️. 27 | For experienced developers, we also highlight the key steps below👇: 28 | 29 | - **Build the hardware**: Follow the [hardware](quick_start/04_assemble_glove) tutorial to assemble your DOGlove. 30 | - **Flash the embedded firmware**: Check out the [firmware](quick_start/03_flash_firmware) script. 31 | - **Bring it to life**: Quick link to set up the [software](quick_start/05_make_it_move). 32 | 33 | 34 | ## Customizing 35 | 36 | Want to customize your DOGlove, explore the key design ideas, or contribute to the project? 37 | Check out the following sections for more details! 38 | 39 | * [Hardware](chapters/the_hardware): Circuit design details and 3D printable models. 40 | * [Firmware](chapters/the_firmware): Embedded firmware that runs on DOGlove. 41 | * [Software](chapters/the_software): Python API and interface to control DOGlove. 42 | 43 | ## Troubleshooting 44 | 45 | 46 | If you encounter any issues or have suggestions for improvements, feel free to open a GitHub issue. 47 | We'd love to hear from you. 48 | 49 | ```{toctree} 50 | :maxdepth: 1 51 | :hidden: 52 | 53 | chapters/getting_started 54 | chapters/the_hardware 55 | chapters/the_firmware 56 | chapters/the_software -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | 13 | %SPHINXBUILD% >NUL 2>NUL 14 | if errorlevel 9009 ( 15 | echo. 16 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 17 | echo.installed, then set the SPHINXBUILD environment variable to point 18 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 19 | echo.may add the Sphinx directory to PATH. 20 | echo. 21 | echo.If you don't have Sphinx installed, grab it from 22 | echo.https://www.sphinx-doc.org/ 23 | exit /b 1 24 | ) 25 | 26 | if "%1" == "" goto help 27 | 28 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 29 | goto end 30 | 31 | :help 32 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% 33 | 34 | :end 35 | popd 36 | -------------------------------------------------------------------------------- /docs/quick_start/01_pcba.md: -------------------------------------------------------------------------------- 1 | # PCB Assembly 2 | 🚀 Content coming soon. Thanks for your patience! -------------------------------------------------------------------------------- /docs/quick_start/02_3d_print.md: -------------------------------------------------------------------------------- 1 | # 3D Print 2 | 🚀 Content coming soon. Thanks for your patience! -------------------------------------------------------------------------------- /docs/quick_start/03_flash_firmware.md: -------------------------------------------------------------------------------- 1 | # Flash the Firmware 2 | 🚀 Content coming soon. Thanks for your patience! -------------------------------------------------------------------------------- /docs/quick_start/04_assemble_glove.md: -------------------------------------------------------------------------------- 1 | # Glove Assembly 2 | 🚀 Content coming soon. Thanks for your patience! -------------------------------------------------------------------------------- /docs/quick_start/05_make_it_move.md: -------------------------------------------------------------------------------- 1 | # Make it Move 2 | 🚀 Content coming soon. Thanks for your patience! -------------------------------------------------------------------------------- /teaser.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TEA-Lab/DOGlove/6d3de4ef6f33075976214e1e26ba38859d161988/teaser.jpg --------------------------------------------------------------------------------