Thanks for the recent corrections (3341c11 mimic ratios + thumb zero, abafd5f MCP/abduction vs mass-production). They clearly improved our sim/real agreement. One residual remains: right_thumb_proximal_joint still reaches noticeably further on hardware than its
upper="1.04720" (60 deg), enough to change whether the thumb collides with the fingers.
Device: Revo2 Basic right hand, S/N BCMTR2027J2500001, FW 1.0.20.U, Modbus RTU.
Method
Contact bisection — no camera or calibration needed:
- Close one finger to command 1000, everything else 0.
- Step
thumb_flex up in 10-unit increments until it just touches that finger.
- Divide the model's thumb angle at contact by the commanded fraction.
Commands are raw 0–1000 normalized units over set_finger_positions, so no unit→radian conversion of ours is involved. Sim is revo2_right_hand.urdf in MuJoCo, unmodified, with <mimic> re-added as equality constraints (MuJoCo's URDF importer drops them); geometry verified identical to the URDF import to 0.000000 mm.
Result
| finger closed |
first touch |
model angle at contact |
implied MCP travel |
| index |
810 units |
53.72 deg |
66.3 deg |
| middle |
985 units |
65.36 deg |
66.4 deg |
Two different contact geometries, 12 deg apart, agree to 0.1 deg. At the declared 60 deg the
model predicts first contact 85 and 104 units late — the real thumb reaches the finger while the
model still shows clearance. Setting travel to 66.4 deg also reproduces a third, held-out pose
(thumb_flex 710, thumb_aux 600, middle 1000, which just touches on hardware) to 0.3 mm,
versus 5.9 mm as published — and that pose exercises thumb_aux, which the fit never used.
A 60 deg travel plus a ~5–6 deg zero offset also fits, but worse (1.15 deg spread between the two
tests, vs 0.04 deg for a pure scale). Since 3341c11 already added +9 deg of origin compensation
here, an offset that fell slightly short is plausible; contact data alone cannot separate the two.
Pictures
Real hand vs URDF as published (60 deg) vs measured (66.4 deg):
1. thumb_flex + thumb_aux against a closed middle
Questions
- Is
upper="1.04720" the mechanical travel of the MCP, or a nominal/derated figure?
- Should command unit 1000 map to that joint limit, or is an offset intended between the command zero and the URDF zero?
max_position on our unit reads 60 deg for this joint — is that register the mechanical range or metadata?
Two minor notes
- Every
*_distal_joint carries the same velocity as its proximal while mimicking at 1.0945–1.271. A rigid follower at multiplier m moves m times faster whenever the parent does, so e.g. right_middle_distal_joint needs 2.874 rad/s, not 2.2685. Harmless kinematically, but velocity-limited planners reject reachable motions.
revo2_description_ros1 carries byte-identical values, so any fix needs applying there too.
Thanks for the recent corrections (
3341c11mimic ratios + thumb zero,abafd5fMCP/abduction vs mass-production). They clearly improved our sim/real agreement. One residual remains:right_thumb_proximal_jointstill reaches noticeably further on hardware than itsupper="1.04720"(60 deg), enough to change whether the thumb collides with the fingers.Device: Revo2 Basic right hand, S/N
BCMTR2027J2500001, FW1.0.20.U, Modbus RTU.Method
Contact bisection — no camera or calibration needed:
thumb_flexup in 10-unit increments until it just touches that finger.Commands are raw 0–1000 normalized units over
set_finger_positions, so no unit→radian conversion of ours is involved. Sim isrevo2_right_hand.urdfin MuJoCo, unmodified, with<mimic>re-added as equality constraints (MuJoCo's URDF importer drops them); geometry verified identical to the URDF import to 0.000000 mm.Result
Two different contact geometries, 12 deg apart, agree to 0.1 deg. At the declared 60 deg the
model predicts first contact 85 and 104 units late — the real thumb reaches the finger while the
model still shows clearance. Setting travel to 66.4 deg also reproduces a third, held-out pose
(
thumb_flex 710,thumb_aux 600, middle 1000, which just touches on hardware) to 0.3 mm,versus 5.9 mm as published — and that pose exercises
thumb_aux, which the fit never used.A 60 deg travel plus a ~5–6 deg zero offset also fits, but worse (1.15 deg spread between the two
tests, vs 0.04 deg for a pure scale). Since
3341c11already added +9 deg of origin compensationhere, an offset that fell slightly short is plausible; contact data alone cannot separate the two.
Pictures
Real hand vs URDF as published (60 deg) vs measured (66.4 deg):
1. thumb_flex + thumb_aux against a closed middle
Questions
upper="1.04720"the mechanical travel of the MCP, or a nominal/derated figure?max_positionon our unit reads 60 deg for this joint — is that register the mechanical range or metadata?Two minor notes
*_distal_jointcarries the samevelocityas its proximal while mimicking at 1.0945–1.271. A rigid follower at multiplier m moves m times faster whenever the parent does, so e.g.right_middle_distal_jointneeds 2.874 rad/s, not 2.2685. Harmless kinematically, but velocity-limited planners reject reachable motions.revo2_description_ros1carries byte-identical values, so any fix needs applying there too.