Exemple #1
0
    def __init__(self, char_file, ctrl_file):
        # NOTICE humanoid.txt and humanoid.urdf have different scales, urdf is 4x larger
        self._kin_core = KinematicCore.cKinematicCore(char_file)

        ### all private members
        self.joints = None
        self.bodys = None
        self.dof = None
        self.expdof = None

        # TODO move to function
        self.num_joints = None
        self.joint_types = None
        self.joint_dof = None
        self.pos_start = None  # start position in pose/vel vec
        self.act_start = None  # start position in action vec
        self.joint_w = None

        # control configuration
        self.kp = None
        self.kd = None
        self.a_max = None
        self.a_min = None

        ### all private members
        self._calc_kin_info(char_file)
        self._calc_ctrl_info(ctrl_file)
    def calc_reward(self):
        char = self._skeleton._kin_core.getCharacter()
        kin_energy = KinematicCore.kinematicEnergy(char, True)

        rwd = (kin_energy - self._low) / self._gap
        rwd = np.clip(rwd, 0, 1)
        return rwd
Exemple #3
0
 def calc_volume(self):
     try:
         char = self._skeleton._kin_core.getCharacter()
         volume = KinematicCore.jointConvexHullVolume(char, self._nodes)
     except:
         from IPython import embed
         embed()
     return volume
Exemple #4
0
    def get_energy_statistics(self):
        # get position of body parts and com
        l = max(len(self._frames), 120)
        spf = self._cycletime / (l + 1)
        kin_energies = []
        for i in range(l):
            t = i * spf
            cnt, pose, vel = self.slerp(t)
            self._skeleton.set_pose(pose)
            self._skeleton.set_vel(vel)

            char = self._skeleton._kin_core.getCharacter()
            e_rel = KinematicCore.kinematicEnergy(char, True)

            kin_energies.append(e_rel)

        return box_param(kin_energies)
Exemple #5
0
 def _butterworth_filter(self, vels):
     # TODO butterworth filter
     for i in range(vels.shape[1]):
         vels[:,
              i] = KinematicCore.butterworthFilter(self._spf, 6, vels[:, i])
     return vels
Exemple #6
0
 def get_kin_energy(self):
     char = self._skeleton._kin_core.getCharacter()
     kin_energy = KinematicCore.kinematicEnergy(char, True)
     return kin_energy