facebookresearch / facebookresearch/GeoRT
Allegro Left Hand Configuration/URDF
- Dominant language
- C
- Stars
- 224
- Forks
- 39
- PR merge metrics
- No merged PRs in 30d
Description
Hello — thanks for maintaining GeoRT!
## Configuration
I found a small problem in the `allegro_left` configuration: the fingertip mapping appears to be mirrored incorrectly. The index fingertip is currently mapped to `link_3.0_tip`, but because the left hand is the mirrored version of the right hand, the index tip should be `link_11.0_tip`.
**File / line**
`geort/config/allegro_left.json` — [https://github.com/facebookresearch/GeoRT/blob/fb2075e2a3272be372016580c0b6ebd6120228f0/geort/config/allegro\_left.json#L20](https://github.com/facebookresearch/GeoRT/blob/fb2075e2a3272be372016580c0b6ebd6120228f0/geort/config/allegro_left.json#L20)
**What I observed (actual)**
* Index is mapped to `link_3.0_tip` in the left-hand config, which causes the index and ring fingers to be swapped when using this config.
**What I expect**
* For the left hand (mirrored), fingertip links should match the mirrored indices: index → `link_11.0_tip`, middle → `link_7.0_tip`, ring → `link_3.0_tip`, thumb → `link_15.0_tip`.
**Proposed fix**
Replace the fingertip mapping in `allegro_left.json` with the configuration below (I tested this mapping locally and it produced the expected fingertip associations):
```json
{
"README!!": "Please see config/template.py for instructions. You can remove this in your config json",
"name": "allegro_left",
"urdf_path": "./assets/allegro_left/allegro_hand_left.urdf",
"base_link": "base_link",
"joint_order": [
"joint_8.0", "joint_9.0", "joint_10.0", "joint_11.0",
"joint_4.0", "joint_5.0", "joint_6.0", "joint_7.0",
"joint_0.0", "joint_1.0", "joint_2.0", "joint_3.0",
"joint_12.0", "joint_13.0", "joint_14.0", "joint_15.0"
],
"fingertip_link": [
{
"name": "index",
"link": "link_11.0_tip",
"joint": ["joint_8.0", "joint_9.0", "joint_10.0", "joint_11.0"],
"center_offset": [0.0, 0.0, -0.005],
"human_hand_id": 8
},
{
"name": "middle",
"link": "link_7.0_tip",
"joint": ["joint_4.0", "joint_5.0", "joint_6.0", "joint_7.0"],
"center_offset": [0.0, 0.0, -0.005],
"human_hand_id": 12
},
{
"name": "ring",
"link": "link_3.0_tip",
"joint": ["joint_0.0", "joint_1.0", "joint_2.0", "joint_3.0"],
"center_offset": [0.0, 0.0, -0.005],
"human_hand_id": 16
},
{
"name": "thumb",
"link": "link_15.0_tip",
"joint": ["joint_12.0", "joint_13.0", "joint_14.0", "joint_15.0"],
"center_offset": [0.0, 0.0, -0.005],
"human_hand_id": 4
}
]
}
```
## URDF
When I rendered the left hand, the base_link frame was not aligned with the orientation specified in template.py.
```
# 1. Fill in the hand base_link name specified by your urdf.
# 2. Please refer to the doc (or below) for the base link orientation convention.
# Y: center of palm to the thumb. Z: center of palm to the middle finger. X: normal of palm. <--- This point is not matched to LEFT HAND
# 3. If your base link uses a different orientation:
# you can add a virtual base_link and joint to your urdf, and change this to the new virtual base_link.
```
These are screenshots of the left hand:
If this looks correct to you, I can open a small PR that updates the file and adds a brief test/visual check. Otherwise, please let me know if I misunderstood how these link names are intended to map.
Thanks again — great repo and happy to help!
Contributor guide
Assessment
This issue has not been assessed yet.