-
Notifications
You must be signed in to change notification settings - Fork 35
Add Haptikos documentation #642
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
PKonMagos
wants to merge
2
commits into
NVIDIA:main
Choose a base branch
from
Haptikostech:haptikos-docs-pr
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,116 @@ | ||
| .. SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | ||
| .. SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| Haptikos Exoskeletons | ||
| ===================== | ||
|
|
||
| Use the `Haptikos <https://haptikos.tech/>`_ Exoskeletons with the Isaac Teleop framework. Currently only Linux is supported. Tested on Meta Quest headsets. Other headsets with controllers may work as well. | ||
|
|
||
| .. contents:: On this page | ||
| :local: | ||
| :depth: 2 | ||
|
|
||
| Components | ||
| ---------- | ||
|
|
||
| - **Core library** (``haptikos_core``) — wraps the Haptikos Core App(``libHaptikosCore.so``) and provides access to per-joint tracking data and haptics. | ||
| - **Plugin executable** (``haptikos_plugin``) — the primary plugin binary that enables integration with the Teleop system via CloudXR and OpenXR. | ||
|
|
||
| Prerequisites | ||
| ------------- | ||
| - **Linux** — x86_64 (tested on Ubuntu 22.04 / 24.04). | ||
| - **Haptikos API** for Linux. | ||
|
|
||
|
|
||
| Quick Start | ||
| ----------- | ||
|
|
||
| Step 1: Get the Haptikos API | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| The Haptikos API must be downloaded separately due to licensing. Check our `website <https://haptikos.tech/>`_. | ||
|
|
||
| 1. Obtain a Haptikos account. | ||
| 2. Clone the `repository <https://github.com/Haptikostech/HaptikosAPI>`_. | ||
| 3. Copy the ``HaptikosCpp_API_Shared`` folder from our HaptikosAPI repository into the ``src/plugins/haptikos`` folder. The folder structure should be the following: | ||
|
|
||
| .. code-block:: text | ||
|
|
||
| src/plugins/haptikos/ | ||
| ├── CMakeLists.txt | ||
| ├── HaptikosCpp_API_Shared | ||
| │ ├── include | ||
| │ └── lib | ||
| ├── haptikos_hands_plugin.cpp | ||
| ├── haptikos_hands_plugin.hpp | ||
| ├── main.cpp | ||
| ├── plugin.yaml | ||
| └── README.md | ||
|
|
||
| Step 2: Build the plugin | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| .. code-block:: bash | ||
|
|
||
| cd ../../.. # Navigate to TeleopCore root | ||
| cmake -S . -B build | ||
| cd build | ||
| make haptikos_hands_plugin | ||
|
|
||
| Step 3: Build the entire project | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| .. code-block:: bash | ||
|
|
||
| cmake -B build -DENABLE_CLANG_FORMAT_CHECK=OFF #From Project root | ||
| cmake --build build --parallel 4 | ||
| cmake --install build | ||
|
|
||
| We use the ``-DENABLE_CLANG_FORMAT_CHECK=OFF`` because the headers in the HaptikosAPI library are not clang-formatted. You can clang format the headers to not include the flag by running: | ||
|
|
||
| .. code-block:: bash | ||
|
|
||
| clang-format -i src/plugins/haptikos/HaptikosCpp_API_Shared/include/* | ||
|
|
||
| Step 4: Run the plugin | ||
| ~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| The Haptikos plugin connects to the Teleop session through the CloudXR / OpenXR runtime, so the runtime must be running and its environment sourced in the shell that launches the plugin. | ||
|
|
||
| In one terminal, start the CloudXR runtime (keep it running for the duration of the session): | ||
|
|
||
| .. code-block:: bash | ||
|
|
||
| source isaac_teleop_env/bin/activate | ||
| python -m isaacteleop.cloudxr | ||
|
|
||
| In a second terminal, source the environment file that the runtime writes on startup. This points the OpenXR loader at CloudXR: | ||
|
|
||
| .. code-block:: bash | ||
|
|
||
| cd IsaacTeleop/ | ||
| source ~/.cloudxr/run/cloudxr.env | ||
|
|
||
| In the same terminal, run the plugin with the following: | ||
|
|
||
| .. code-block:: bash | ||
|
|
||
| ./install/plugins/haptikos/haptikos_hands_plugin | ||
|
|
||
| Important Information | ||
| --------------------- | ||
|
|
||
| 1. To use the plugin properly it is necessary to attach the controllers on our exoskeletons using the included mount. | ||
|
|
||
| 2. The orientation calibration defines the direction the Haptikos gloves define as forward. This needs to be aligned with the Head Mounted Display's forward direction. | ||
|
|
||
| 3. To inject the hand tracking data and haptic feedback, the controllers, the Haptikos App and the exoskeletons need to be active. | ||
|
|
||
| 4. The executable will be located in the ``build/src/plugins/haptikos``. If you installed the project by running ``cmake --install build`` the executable will also be found in the ``install/plugins/haptikos`` folder. | ||
|
|
||
|
|
||
| License | ||
| ------- | ||
|
|
||
| Source files are covered by their stated licenses (Apache-2.0). The Haptikos API is | ||
| proprietary to Haptikos and is subject to its own license; it is **not** redistributed | ||
| by this project. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.