Source code for causal_world.sim2real_tools.transfer_real

try:
    import robot_fingers
    import robot_interfaces
except ImportError:
    pass
import numpy as np


[docs]class TransferReal(object):
[docs] def __init__(self, env): """ This wrapper makes the environment to execute actions on the real robot instead, to be used when performing sim2real experiments. :param env: (causal_world.CausalWorld) the environment to convert. """ self._env = env self._real_robot = robot_fingers.Robot(robot_interfaces.trifinger, robot_fingers.create_trifinger_backend, "trifinger.yml") self._real_robot.initialize() self._frontend = self._real_robot.frontend self._repetitions = 1000.0 / (self._env._simulation_time / self._env._skip_frame)
[docs] def step(self, action): """ Used to step through the real robot. :param action: (nd.array) specifies which action should be taken by the robot. :return: (nd.array) specifies the observations returned after stepping through the robot. """ for i in range(self._repetitions): t = self._frontend.append_desired_action( robot_interfaces.trifinger.Action(position=action)) self._frontend.wait_until_time_index(t) current_position = self._frontend.get_observation(t).position current_velocity = self._frontend.get_observation(t).velocity current_torque = self._frontend.get_observation(t).torque obs = np.array([current_position, current_velocity, current_torque]) return obs.flatten()
[docs] def reset(self): """ Resets the real robot to the current starting state of the environment. :return: (nd.array) specifies the observations returned after resetting the robot. """ raise Exception("Not implemented yet")