@@ -1040,22 +1040,22 @@ def reset_joints_by_scale(
1040
1040
# extract the used quantities (to enable type-hinting)
1041
1041
asset : Articulation = env .scene [asset_cfg .name ]
1042
1042
# get default joint state
1043
- joint_pos = asset .data .default_joint_pos [env_ids ].clone ()
1044
- joint_vel = asset .data .default_joint_vel [env_ids ].clone ()
1043
+ joint_pos = asset .data .default_joint_pos [env_ids , asset_cfg . joint_ids ].clone ()
1044
+ joint_vel = asset .data .default_joint_vel [env_ids , asset_cfg . joint_ids ].clone ()
1045
1045
1046
1046
# scale these values randomly
1047
1047
joint_pos *= math_utils .sample_uniform (* position_range , joint_pos .shape , joint_pos .device )
1048
1048
joint_vel *= math_utils .sample_uniform (* velocity_range , joint_vel .shape , joint_vel .device )
1049
1049
1050
1050
# clamp joint pos to limits
1051
- joint_pos_limits = asset .data .soft_joint_pos_limits [env_ids ]
1051
+ joint_pos_limits = asset .data .soft_joint_pos_limits [env_ids , asset_cfg . joint_ids ]
1052
1052
joint_pos = joint_pos .clamp_ (joint_pos_limits [..., 0 ], joint_pos_limits [..., 1 ])
1053
1053
# clamp joint vel to limits
1054
- joint_vel_limits = asset .data .soft_joint_vel_limits [env_ids ]
1054
+ joint_vel_limits = asset .data .soft_joint_vel_limits [env_ids , asset_cfg . joint_ids ]
1055
1055
joint_vel = joint_vel .clamp_ (- joint_vel_limits , joint_vel_limits )
1056
1056
1057
1057
# set into the physics simulation
1058
- asset .write_joint_state_to_sim (joint_pos , joint_vel , env_ids = env_ids )
1058
+ asset .write_joint_state_to_sim (joint_pos , joint_vel , env_ids = env_ids , joint_ids = asset_cfg . joint_ids )
1059
1059
1060
1060
1061
1061
def reset_joints_by_offset (
@@ -1074,22 +1074,22 @@ def reset_joints_by_offset(
1074
1074
asset : Articulation = env .scene [asset_cfg .name ]
1075
1075
1076
1076
# get default joint state
1077
- joint_pos = asset .data .default_joint_pos [env_ids ].clone ()
1078
- joint_vel = asset .data .default_joint_vel [env_ids ].clone ()
1077
+ joint_pos = asset .data .default_joint_pos [env_ids , asset_cfg . joint_ids ].clone ()
1078
+ joint_vel = asset .data .default_joint_vel [env_ids , asset_cfg . joint_ids ].clone ()
1079
1079
1080
1080
# bias these values randomly
1081
1081
joint_pos += math_utils .sample_uniform (* position_range , joint_pos .shape , joint_pos .device )
1082
1082
joint_vel += math_utils .sample_uniform (* velocity_range , joint_vel .shape , joint_vel .device )
1083
1083
1084
1084
# clamp joint pos to limits
1085
- joint_pos_limits = asset .data .soft_joint_pos_limits [env_ids ]
1085
+ joint_pos_limits = asset .data .soft_joint_pos_limits [env_ids , asset_cfg . joint_ids ]
1086
1086
joint_pos = joint_pos .clamp_ (joint_pos_limits [..., 0 ], joint_pos_limits [..., 1 ])
1087
1087
# clamp joint vel to limits
1088
- joint_vel_limits = asset .data .soft_joint_vel_limits [env_ids ]
1088
+ joint_vel_limits = asset .data .soft_joint_vel_limits [env_ids , asset_cfg . joint_ids ]
1089
1089
joint_vel = joint_vel .clamp_ (- joint_vel_limits , joint_vel_limits )
1090
1090
1091
1091
# set into the physics simulation
1092
- asset .write_joint_state_to_sim (joint_pos , joint_vel , env_ids = env_ids )
1092
+ asset .write_joint_state_to_sim (joint_pos , joint_vel , env_ids = env_ids , joint_ids = asset_cfg . joint_ids )
1093
1093
1094
1094
1095
1095
def reset_nodal_state_uniform (
0 commit comments