예제 #1
0
파일: body.py 프로젝트: gauravmm/Hexapod-IK
class Hexapod(object):
    def __init__(self, config):
        # Prepare the root reference frame.
        self.ref = ReferenceFrame(Vector3([0., 0., 0.]),
                                  Quaternion.from_z_rotation(0.))
        self.body = HexapodBody(self.ref, config)
        self.legs = [
            HexapodLeg(config, self.body, self.ref, legid)
            for legid in config.getLegs()
        ]
        self.mp = HexapodMotionPlanner(config, self.body, self.legs)
        self.stepmp = HexapodStepMotionPlanner(config, self, self.mp,
                                               self.legs,
                                               config.getLegPhases()[2])
        self.stepmp.start()

    def tick(self):
        self.stepmp.tick()
        self.mp.tick()

    def setWalking(self, forward, right, clockwise):
        self.stepmp.setStepParams(forward, right, clockwise)

    def setBodyPose(self, angle, trans):
        self.mp.updateTarget(
            {"body": {
                "trans": trans,
                "rot": angle,
                "frames": 1
            }})

    def getRawState(self):
        return dict((l.getId(), [s.getRotation() for s in l.getSegments()])
                    for l in self.legs)
예제 #2
0
파일: body.py 프로젝트: gauravmm/Hexapod-IK
 def __init__(self, config):
     # Prepare the root reference frame.
     self.ref = ReferenceFrame(Vector3([0., 0., 0.]),
                               Quaternion.from_z_rotation(0.))
     self.body = HexapodBody(self.ref, config)
     self.legs = [
         HexapodLeg(config, self.body, self.ref, legid)
         for legid in config.getLegs()
     ]
     self.mp = HexapodMotionPlanner(config, self.body, self.legs)
     self.stepmp = HexapodStepMotionPlanner(config, self, self.mp,
                                            self.legs,
                                            config.getLegPhases()[2])
     self.stepmp.start()
예제 #3
0
파일: body.py 프로젝트: gauravmm/Hexapod-IK
 def __init__(self, config):
     # Prepare the root reference frame.
     self.ref = ReferenceFrame(Vector3([0.,0.,0.]), Quaternion.from_z_rotation(0.));
     self.body = HexapodBody(self.ref, config);
     self.legs = [HexapodLeg(config, self.body, self.ref, legid) for legid in config.getLegs()];
     self.mp = HexapodMotionPlanner(config, self.body, self.legs);
     self.stepmp = HexapodStepMotionPlanner(config, self, self.mp, self.legs, config.getLegPhases()[2]);
     self.stepmp.start();
예제 #4
0
파일: body.py 프로젝트: gauravmm/Hexapod-IK
class Hexapod(object):
    def __init__(self, config):
        # Prepare the root reference frame.
        self.ref = ReferenceFrame(Vector3([0.,0.,0.]), Quaternion.from_z_rotation(0.));
        self.body = HexapodBody(self.ref, config);
        self.legs = [HexapodLeg(config, self.body, self.ref, legid) for legid in config.getLegs()];
        self.mp = HexapodMotionPlanner(config, self.body, self.legs);
        self.stepmp = HexapodStepMotionPlanner(config, self, self.mp, self.legs, config.getLegPhases()[2]);
        self.stepmp.start();
        
    def tick(self):
        self.stepmp.tick();
        self.mp.tick();
    
    def setWalking(self, forward, right, clockwise):
        self.stepmp.setStepParams(forward, right, clockwise);
    
    def setBodyPose(self, angle, trans):
        self.mp.updateTarget({"body": {"trans": trans, "rot": angle, "frames": 1}});
    
    def getRawState(self):
        return dict((l.getId(), [s.getRotation() for s in l.getSegments()]) for l in self.legs)