def param_fwd_kinematics(self, param, manip_names, t, mat_result=False):
    if (not isinstance(self._geom, Robot)):
        return
    attrs = list(param._attr_types.keys())
    dof_val = self.env_body.GetActiveDOFValues()
    for attr in attrs:
        if (attr not in self._geom.dof_map):
            continue
        val = getattr(param, attr)[:, t]
        if np.any(np.isnan(val)):
            continue
        inds = self._geom.dof_map[attr]
        dof_val[inds] = val
    self.env_body.SetActiveDOFValues(dof_val)
    result = {}
    for manip_name in manip_names:
        result[manip_name] = self.fwd_kinematics(manip_name, mat_result=mat_result)
    return result
def param_fwd_kinematics(self, param, manip_names, t, mat_result=False):
    if (not isinstance(self._geom, Robot)):
        return
    attrs = list(param._attr_types.keys())
    dof_val = self.env_body.GetActiveDOFValues()
    for attr in attrs:
        if (attr not in self._geom.dof_map):
            continue
        val = getattr(param, attr)[:, t]
        if np.any(np.isnan(val)):
            continue
        inds = self._geom.dof_map[attr]
        dof_val[inds] = val
    self.env_body.SetActiveDOFValues(dof_val)
    result = {}
    for manip_name in manip_names:
        result[manip_name] = self.fwd_kinematics(manip_name, mat_result=mat_result)
    return result