def step(self, a):
    pos_before = mass_center(self.model, self.sim)
    self.do_simulation(a, self.frame_skip)
    pos_after = mass_center(self.model, self.sim)
    alive_bonus = 5.0
    data = self.sim.data
    lin_vel_cost = ((1.25 * (pos_after - pos_before)) / self.dt)
    quad_ctrl_cost = (0.1 * np.square(data.ctrl).sum())
    quad_impact_cost = (5e-07 * np.square(data.cfrc_ext).sum())
    quad_impact_cost = min(quad_impact_cost, 10)
    reward = (((lin_vel_cost - quad_ctrl_cost) - quad_impact_cost) + alive_bonus)
    qpos = self.sim.data.qpos
    done = bool(((qpos[2] < 0.2) or (qpos[2] > 2.0)))
    return (self._get_obs(), reward, done, dict(reward_linvel=lin_vel_cost, reward_quadctrl=(- quad_ctrl_cost), reward_alive=alive_bonus, reward_impact=(- quad_impact_cost)))
def step(self, a):
    pos_before = mass_center(self.model, self.sim)
    self.do_simulation(a, self.frame_skip)
    pos_after = mass_center(self.model, self.sim)
    alive_bonus = 5.0
    data = self.sim.data
    lin_vel_cost = ((1.25 * (pos_after - pos_before)) / self.dt)
    quad_ctrl_cost = (0.1 * np.square(data.ctrl).sum())
    quad_impact_cost = (5e-07 * np.square(data.cfrc_ext).sum())
    quad_impact_cost = min(quad_impact_cost, 10)
    reward = (((lin_vel_cost - quad_ctrl_cost) - quad_impact_cost) + alive_bonus)
    qpos = self.sim.data.qpos
    done = bool(((qpos[2] < 0.2) or (qpos[2] > 2.0)))
    return (self._get_obs(), reward, done, dict(reward_linvel=lin_vel_cost, reward_quadctrl=(- quad_ctrl_cost), reward_alive=alive_bonus, reward_impact=(- quad_impact_cost)))