Initial snapshot: hand motion pipeline (Dyn-HaMR + dex-retargeting + SPIDER)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 14:13:49 +08:00
commit 7e4ef6f98b
7002 changed files with 1452249 additions and 0 deletions
@@ -0,0 +1,22 @@
# @package _global_
dataset_name: arcticv2
task: s01-box_use_01
robot_type: xhand
embodiment_type: bimanual
data_id: 0
temperature: 1.0
num_samples: 1024
ctrl_dt: 1.5
knot_dt: 1.0
horizon: 3.0
first_ctrl_noise_scale: 2.0
last_ctrl_noise_scale: 4.0
improvement_threshold: 0.01
improvement_check_steps: 2
max_num_iterations: 16
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
joint_noise_scale: 0.1
pos_noise_scale: 0.01
rot_noise_scale: 0.01
final_noise_scale: 0.01
@@ -0,0 +1,36 @@
# @package _global_
dataset_name: arcticv2
task: s01-box_use_01
robot_type: xhand
embodiment_type: bimanual
data_id: 0
temperature: 1.0
num_samples: 1024
ctrl_dt: 1.5
knot_dt: 1.0
horizon: 3.0
first_ctrl_noise_scale: 2.0
last_ctrl_noise_scale: 4.0
improvement_threshold: -1.0
improvement_check_steps: 2
max_num_iterations: 4
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
joint_noise_scale: 0.1
pos_noise_scale: 0.01
rot_noise_scale: 0.01
final_noise_scale: 0.01
object_rot_threshold: 2.5
max_local_retries: 3
# Arctic clips start ~2 s before contact (hand approaching, object resting on
# the table only via friction). The default sanity check holds ctrl_ref[0]
# for 3 s and requires the object not to drift — that's incompatible with a
# pre-grasp start frame, so disable it here.
sanity_check_seconds: 0.0
# Arctic objects (box / laptop / mixer / notebook / waffleiron) decompose
# into 25-30 convex parts each. With bimanual xhand the contact + joint-row
# counts overflow the default per-env limits ("nefc overflow - please
# increase njmax to ~420"). Bump both above the worst observed value with
# headroom.
nconmax_per_env: 256
njmax_per_env: 768
@@ -0,0 +1,25 @@
# @package _global_
dataset_name: fair_fre
task: pick_up
robot_type: xhand
embodiment_type: right
data_id: 4
temperature: 1.0
num_samples: 1024
ctrl_dt: 1.5
knot_dt: 1.0
horizon: 3.0
ref_dt: 0.02
first_ctrl_noise_scale: 2.0
last_ctrl_noise_scale: 4.0
improvement_threshold: 0.01
improvement_check_steps: 3
terminal_rew_scale: 10.0
pos_rew_scale: 1.0
max_num_iterations: 16
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
joint_noise_scale: 0.1
pos_noise_scale: 0.01
rot_noise_scale: 0.01
final_noise_scale: 0.01
@@ -0,0 +1,24 @@
# @package _global_
# Override configuration for fair_mon dataset
dataset_name: fair_mon
robot_type: allegro
viewer: rerun-mujoco
embodiment_type: right
task: cat
rerun_spawn: true
ref_dt: 0.05
max_sim_steps: -1
horizon: 0.8
ctrl_dt: 0.1
knot_dt: 0.2
num_dr: 1
perturb_torque: 0.0
pos_noise_scale: 0.05
rot_noise_scale: 0.05
joint_noise_scale: 0.1
improvement_check_steps: 2
max_num_iterations: 16
temperature: 1.0
# original reference is bad, so we put smaller scale on tracking wrist pose
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
@@ -0,0 +1,21 @@
# @package _global_
# Override configuration for gigahand dataset
dataset_name: gigahand
robot_type: xhand
embodiment_type: bimanual
task: p36-tea
temperature: 1.0
data_id: 0
ctrl_dt: 1.5
knot_dt: 0.5
horizon: 3.0
first_ctrl_noise_scale: 1.0
last_ctrl_noise_scale: 2.0
improvement_threshold: 0.01
improvement_check_steps: 2
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
joint_noise_scale: 0.03
pos_noise_scale: 0.03
rot_noise_scale: 0.01
final_noise_scale: 0.01
@@ -0,0 +1,33 @@
# @package _global_
task: p36-tea
dataset_name: gigahand
robot_type: xhand
embodiment_type: bimanual
data_id: 0
temperature: 1.0
num_samples: 1024
first_ctrl_noise_scale: 1.0
final_noise_scale: 0.3
sim_dt: 0.005
max_num_iterations: 32
gibbs_sampling: false
# guidance related
improvement_threshold: 0.0
contact_guidance: true
guidance_decay_ratio: 0.5
init_pos_actuator_gain: 2.0
init_pos_actuator_bias: 2.0
init_rot_actuator_gain: 0.3
init_rot_actuator_bias: 0.3
# with guidance, exploration noise can be higher
joint_noise_scale: 0.15
pos_noise_scale: 0.01
rot_noise_scale: 0.01
# with guidance, horizon can be shorter
horizon: 1.6
knot_dt: 0.4
ctrl_dt: 0.2
base_pos_rew_scale: 0.03
base_rot_rew_scale: 0.03
pos_rew_scale: 1.0
rot_rew_scale: 1.0
@@ -0,0 +1,23 @@
# @package _global_
dataset_name: gigahand
robot_type: xhand
embodiment_type: bimanual
task: p36-tea
temperature: 1.0
data_id: 0
ctrl_dt: 1.5
knot_dt: 0.5
horizon: 3.0
first_ctrl_noise_scale: 1.0
last_ctrl_noise_scale: 2.0
improvement_threshold: -1.0
improvement_check_steps: 2
max_num_iterations: 8
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
joint_noise_scale: 0.03
pos_noise_scale: 0.03
rot_noise_scale: 0.01
final_noise_scale: 0.01
object_rot_threshold: 0.5
max_local_retries: 3
@@ -0,0 +1,16 @@
# @package _global_
# Override configuration for gigahand dataset
dataset_name: gigahand
robot_type: xhand
embodiment_type: bimanual
task: p36-tea
data_id: 10
horizon: 1.6
temperature: 1.0
improvement_threshold: 0.01
improvement_check_steps: 1
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
joint_noise_scale: 0.03
pos_noise_scale: 0.03
rot_noise_scale: 0.01
@@ -0,0 +1,31 @@
# @package _global_
# Override configuration for fair_mon dataset
dataset_name: amass
robot_type: unitree_g1
embodiment_type: humanoid
task: sprint
rerun_spawn: true
sim_dt: 0.0166667
ref_dt: 0.0333333
trace_dt: 0.0333333
max_sim_steps: -1
horizon: 0.8
ctrl_dt: 0.1
knot_dt: 0.1
# annealing parameters
first_ctrl_noise_scale: 0.5
last_ctrl_noise_scale: 1.0
final_noise_scale: 0.1
joint_noise_scale: 0.1
# sampling
improvement_threshold: 0.01
max_num_iterations: 16
temperature: 0.6
num_samples: 2048
# reward
vel_rew_scale: 0.0
joint_rew_scale: 1.0
pos_rew_scale: 3.0
rot_rew_scale: 1.0
contact_rew_scale: 1.0
# note: above parameter is optimized for speed. you can have better performance with horizon=1.0
@@ -0,0 +1,33 @@
# @package _global_
# Override configuration for fair_mon dataset
dataset_name: omomo
robot_type: unitree_g1
viewer: mujoco-rerun
embodiment_type: humanoid_object
task: move_largebox
rerun_spawn: true
sim_dt: 0.0166667
ref_dt: 0.0333333
trace_dt: 0.0333333
max_sim_steps: -1
horizon: 0.8
ctrl_dt: 0.1
knot_dt: 0.1
# annealing parameters
first_ctrl_noise_scale: 0.5
last_ctrl_noise_scale: 1.0
final_noise_scale: 0.1
joint_noise_scale: 0.1
# sampling
improvement_threshold: 0.01
max_num_iterations: 16
temperature: 1.0
num_samples: 2048
# reward
vel_rew_scale: 0.0
joint_rew_scale: 1.0
base_pos_rew_scale: 1.0
base_rot_rew_scale: 1.0
pos_rew_scale: 1.0
rot_rew_scale: 0.3
# note: above parameter is optimized for speed. you can have better performance with horizon=1.0
+21
View File
@@ -0,0 +1,21 @@
# @package _global_
task: lift_board
robot_type: xhand
embodiment_type: bimanual
data_id: 0
temperature: 1.0
num_samples: 1024
ctrl_dt: 1.5
knot_dt: 1.0
horizon: 3.0
first_ctrl_noise_scale: 2.0
last_ctrl_noise_scale: 4.0
improvement_threshold: 0.01
improvement_check_steps: 2
max_num_iterations: 16
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
joint_noise_scale: 0.1
pos_noise_scale: 0.01
rot_noise_scale: 0.01
final_noise_scale: 0.01
@@ -0,0 +1,32 @@
# @package _global_
task: lift_board
robot_type: xhand
embodiment_type: bimanual
data_id: 0
temperature: 1.0
num_samples: 1024
first_ctrl_noise_scale: 1.0
final_noise_scale: 0.3
sim_dt: 0.005
max_num_iterations: 32
gibbs_sampling: false
# guidance related
improvement_threshold: 0.0
contact_guidance: true
guidance_decay_ratio: 0.8
init_pos_actuator_gain: 10.0
init_pos_actuator_bias: 10.0
init_rot_actuator_gain: 0.3
init_rot_actuator_bias: 0.3
# with guidance, exploration noise can be higher
joint_noise_scale: 0.02
pos_noise_scale: 0.005
rot_noise_scale: 0.01
# with guidance, horizon can be shorter
horizon: 0.4
knot_dt: 0.1
ctrl_dt: 0.05
base_pos_rew_scale: 0.3
base_rot_rew_scale: 0.3
pos_rew_scale: 1.0
rot_rew_scale: 1.0
@@ -0,0 +1,23 @@
# @package _global_
task: lift_board
robot_type: xhand
embodiment_type: bimanual
data_id: 0
temperature: 1.0
num_samples: 1024
ctrl_dt: 1.5
knot_dt: 1.0
horizon: 3.0
first_ctrl_noise_scale: 2.0
last_ctrl_noise_scale: 4.0
improvement_threshold: -1.0
improvement_check_steps: 2
max_num_iterations: 8
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
joint_noise_scale: 0.1
pos_noise_scale: 0.01
rot_noise_scale: 0.01
final_noise_scale: 0.01
object_rot_threshold: 0.5
max_local_retries: 3
@@ -0,0 +1,17 @@
# @package _global_
task: lift_board
robot_type: xhand
embodiment_type: bimanual
data_id: 0
temperature: 1.0
num_samples: 1024
horizon: 2.0
improvement_threshold: 0.01
improvement_check_steps: 2
max_num_iterations: 32
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
# rot_rew_scale: 0.3
joint_noise_scale: 0.03
pos_noise_scale: 0.01
rot_noise_scale: 0.01
@@ -0,0 +1,22 @@
# @package _global_
dataset_name: oakinkv2
task: pick_spoon_bowl
robot_type: xhand
embodiment_type: right
data_id: 0
temperature: 1.0
num_samples: 1024
ctrl_dt: 1.5
knot_dt: 1.0
horizon: 3.0
first_ctrl_noise_scale: 2.0
last_ctrl_noise_scale: 4.0
improvement_threshold: 0.01
improvement_check_steps: 2
max_num_iterations: 16
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
joint_noise_scale: 0.1
pos_noise_scale: 0.01
rot_noise_scale: 0.01
final_noise_scale: 0.01
@@ -0,0 +1,24 @@
# @package _global_
dataset_name: oakinkv2
task: pick_spoon_bowl
robot_type: xhand
embodiment_type: right
data_id: 0
temperature: 1.0
num_samples: 1024
ctrl_dt: 1.5
knot_dt: 1.0
horizon: 3.0
first_ctrl_noise_scale: 2.0
last_ctrl_noise_scale: 4.0
improvement_threshold: -1.0
improvement_check_steps: 2
max_num_iterations: 4
base_pos_rew_scale: 0.1
base_rot_rew_scale: 0.03
joint_noise_scale: 0.1
pos_noise_scale: 0.01
rot_noise_scale: 0.01
final_noise_scale: 0.01
object_rot_threshold: 1.0
max_local_retries: 3