Пример #1
0
def _robo_init(self, model_xml, robot_name, action_dim):
    if self.servo:
        RoboschoolForwardWalkerServo.__init__(self, power=2.5)
    else:
        RoboschoolForwardWalker.__init__(self, power=2.5)
    RoboschoolMujocoXmlEnv.__init__(self,
                               model_xml,
                               robot_name,
                               action_dim=action_dim, obs_dim=70)
Пример #2
0
 def __init__(self):
     RoboschoolForwardWalker.__init__(self, power=0.30)
     RoboschoolUrdfEnv.__init__(
         self,
         "atlas_description/urdf/atlas_v4_with_multisense.urdf",
         "pelvis",
         action_dim=30,
         obs_dim=70,
         fixed_base=False,
         self_collision=True)
Пример #3
0
def _robo_init(self, model_urdf, robot_name, action_dim):
    if self.servo:
        RoboschoolForwardWalkerServo.__init__(self, power=0.30)
    else:
        RoboschoolForwardWalker.__init__(self, power=0.30)
    RoboschoolUrdfEnv.__init__(self,
                               model_urdf,
                               robot_name,
                               action_dim=action_dim,
                               obs_dim=70,
                               fixed_base=False,
                               self_collision=True)
Пример #4
0
 def __init__(self, fn, robot_name, action_dim, obs_dim, power):
     RoboschoolMujocoXmlEnv.__init__(self, fn, robot_name, action_dim,
                                     obs_dim)
     RoboschoolForwardWalker.__init__(self, power)
Пример #5
0
 def __init__(self, power, state_dim):
     self.last_state = np.random.rand(state_dim)
     self.last_dist = 0
     self.still_counter = 0
     RoboschoolForwardWalker.__init__(self, power)
Пример #6
0
    def __init__(self, fn, robot_name, action_dim, power):

        urdfFilename = os.path.join(os.path.dirname(__file__), "models_robot",
                                    fn)

        self.velObservations = 0
        sensorsObservations = 4  #4 legs from 0 or 1
        rotationObservation = 3  #roll pith yaw
        sinCosToTarget = 2  # sin cos from angle to target
        servoObservation = 12  # rel angles
        numObservation = sensorsObservations + rotationObservation + sinCosToTarget + servoObservation + self.velObservations

        if hasattr(settings, "history1Len") == False:
            settings.history1Len = 0.0
        if hasattr(settings, "history2Len") == False:
            settings.history2Len = 0.0
        if hasattr(settings, "history3Len") == False:
            settings.history3Len = 0.0

        baseObservations = numObservation
        if settings.history1Len > 0.0:
            numObservation += baseObservations
        if settings.history2Len > 0.0:
            numObservation += baseObservations
        if settings.history3Len > 0.0:
            numObservation += baseObservations
        RoboschoolUrdfEnv.__init__(self,
                                   urdfFilename,
                                   robot_name,
                                   action_dim,
                                   numObservation,
                                   fixed_base=False,
                                   self_collision=False)
        RoboschoolForwardWalker.__init__(self, power)
        self.servo_kp = 0.3
        self.servo_kd = 0.9
        self.servo_maxTorque = 2.0
        self.time = 0.0
        self.max_servo_speed = math.radians(230.0)
        self.physics_time_step = 1.0 / 240.0
        self.walk_target_x = 1000.0  # 1km  meters
        self.walk_target_z = 0.15
        self.debugStats = 0
        self.movement_dir = [1, 0, 0]
        self.robotLibOn = 0

        self.jointsLocalPos = {}
        tree = ET.parse(urdfFilename)
        root = tree.getroot()
        for robot in root.iter('robot'):
            for joint in robot.iter('joint'):
                origin = joint.find("origin")
                posStr = origin.attrib["xyz"].split(" ")
                pos = [float(posStr[0]), float(posStr[1]), float(posStr[2])]
                self.jointsLocalPos[joint.attrib["name"]] = pos

        self.link1 = self.jointsLocalPos["fl3"]
        self.link2 = self.jointsLocalPos["fl4"]

        self.extLenX = 0.15  # 15 cm
        self.extLenY = 0.15  # 15 cm
        self.minZLeg = -0.2
        self.maxZLeg = -0.02

        self.minArea = [-self.extLenX, -self.extLenY,
                        self.minZLeg]  # 20 cm away from chassis
        self.maxArea = [+self.extLenX, +self.extLenY,
                        self.maxZLeg]  # 2 cm from chassis

        self.flMinArea = glm.vec3(self.minArea)
        self.flMaxArea = glm.vec3(self.maxArea)
        self.frMinArea = glm.vec3(self.minArea)
        self.frMaxArea = glm.vec3(self.maxArea)

        self.blMinArea = glm.vec3(self.minArea)
        self.blMaxArea = glm.vec3(self.maxArea)
        self.brMinArea = glm.vec3(self.minArea)
        self.brMaxArea = glm.vec3(self.maxArea)

        self.areaSize = [
            self.maxArea[0] - self.minArea[0],
            self.maxArea[1] - self.minArea[1],
            self.maxArea[2] - self.minArea[2]
        ]
        self.len1 = abs(self.link1[2])
        self.len2 = abs(self.link2[2])
        self.ActionIsAngles = False
        self.ActionsIsAdditive = False
        self.actionsMult = 1.0
        self.chassisSpaceX = 0.30
        self.chassisSpaceY = 0.20
        self.chassisSpaceMin = [-self.chassisSpaceX, -self.chassisSpaceY, -0.2]
        self.chassisSpaceMax = [
            +self.chassisSpaceX, +self.chassisSpaceY, -0.02
        ]
        self.inputsInChassisSpace = False
        self.actionsInChassisSpace = False
        self.inputsIsIKTargets = True

        self.perLegSpace = True
        if self.perLegSpace:
            self.extLenYOut = 0.1  # 10  cm
            self.extLenYIn = 0.03  # 2 cm
            self.flMinArea = glm.vec3(-self.extLenX, -self.extLenYIn,
                                      self.minZLeg)
            self.flMaxArea = glm.vec3(self.extLenX, self.extLenYOut,
                                      -self.maxZLeg)
            self.blMinArea = glm.vec3(-self.extLenX, -self.extLenYIn,
                                      self.minZLeg)
            self.blMaxArea = glm.vec3(self.extLenX, self.extLenYOut,
                                      -self.maxZLeg)

            self.frMinArea = glm.vec3(-self.extLenX, -self.extLenYOut,
                                      self.minZLeg)
            self.frMaxArea = glm.vec3(self.extLenX, self.extLenYIn,
                                      -self.maxZLeg)
            self.brMinArea = glm.vec3(-self.extLenX, -self.extLenYOut,
                                      self.minZLeg)
            self.brMaxArea = glm.vec3(self.extLenX, self.extLenYIn,
                                      -self.maxZLeg)

        if settings.robotLibAvailable and hasattr(settings, "robotNN"):
            if settings.robotNN == 0:
                self.robotLibOn = 1
            else:
                self.robotLibOn = 0
            self.robotLib = pyRobotLib.Robot()
            self.robotLib.load(
                "/Users/pavlogryb/Dropbox/Projects/Robot/Robot/Robot/")
            print(os.getpid())