コード例 #1
0
 def initJoints(self):
     self.shoulderYaw = Antagonist("shoulder_yaw")
     self.shoulderRoll = Antagonist("shoulder_roll")
     self.shoulderPitch = Antagonist("shoulder_pitch")
     self.upperarmRoll = DirectDrive("upperarm_roll", self.pi)
     self.elbow = Antagonist("elbow")
     self.forearmRoll = DirectDrive("forearm_roll", 1.75*self.pi)
     self.wrist = Antagonist("wrist")
     self.headYaw = DirectDrive("head_yaw", 1.5*self.pi)
コード例 #2
0
    def initJoints(self):
        for name in self.joints.keys():
            if self.joints[name]['antagonist']:
                self.joints[name]['controller'] = Antagonist(name)
            else:
                self.joints[name]['controller'] = DirectDrive(name)

            self.joints[name]['position'] = self.joints[name][
                'controller'].getJointAngle()
            self.joints[name]['velocity'] = self.joints[name][
                'controller'].getJointVelocity()
コード例 #3
0
def main(args):

    pi = 3.1416
    equilibriums = (-0.75, -0.5)
    stiffnesses = (0, 0.25, 0.5, 0.75, 1)
    distances = range(7,21,1)

    with open('results/stiffness_test.csv', 'wb') as csvfile:

        writer = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
        writer.writerow(['attempt', 'distance', 'stiffness', 'equilibirum', 'angle'])

        rospy.init_node('stiffnessTest', anonymous=True)
        
        upperarmRoll = DirectDrive("upperarm_roll", pi)
        elbow = Antagonist(-1, 1, -1, -1, 1, "biceps", "triceps", "elbow_encoder", 0, 2*pi, -0.75, 0.85)

        
        r = rospy.Rate(60)  
        
        print("Moving arm into place.")
        for i in range (0,300):
            upperarmRoll.servoTo(0)
            elbow.moveTo(0, 0)
            r.sleep()
        print("Test starting. Add weights.")
            
        for dist in distances:
            
            try:
                input("Adjust distance to " + str(dist) + " cm, and press enter.")
            except SyntaxError:
                pass
            
            for att in range (1,4):
                for stiff in stiffnesses:
                    for eq in equilibriums:
                        for i in range (0,200):
                            upperarmRoll.servoTo(0)
                            elbow.moveTo(eq, stiff)
                            r.sleep()
                        angle = elbow.getJointAngle()
                        writer.writerow([att, dist, stiff, eq, angle])
コード例 #4
0
def main(args):

    pi = 3.1416

    rospy.init_node('stiffnessTest', anonymous=True)

    upperarmRoll = DirectDrive("upperarm_roll", pi)
    elbow = Antagonist(-1, 1, -1, -1, 1, "biceps", "triceps", "elbow_encoder",
                       0, 2 * pi, -0.75, 0.85)
    forearmRoll = DirectDrive("forearm_roll", 1.75 * pi)
    wrist = Antagonist(-1, -1, -1, -1, 1, "wrist_flexor", "wrist_extensor",
                       "wrist_encoder", 0, 1.75 * pi, -1.0, 1.0)

    r = rospy.Rate(60)

    for att in range(1, 11):

        print("Moving arm into place.")
        for i in range(0, 150):
            upperarmRoll.servoTo(0)
            forearmRoll.servoTo(0)
            wrist.servoTo(0, 0)
            elbow.moveTo(0, 0)
            r.sleep()
        print("Test started, attempt: " + str(att) + ".")

        fileName = 'results/step_test_stiffness_a_' + str(att) + '.csv'
        with open(fileName, 'wb') as csvfile:
            writer = csv.writer(csvfile,
                                delimiter=' ',
                                quotechar='|',
                                quoting=csv.QUOTE_MINIMAL)
            writer.writerow([
                'time', 'stiffness', 'angle', 'flexor-angle', 'extensor-angle'
            ])

            time1 = rospy.Time.now()
            for i in range(0, 400):
                upperarmRoll.servoTo(0)
                forearmRoll.servoTo(0)
                wrist.servoTo(0, 0)

                if i < 80:
                    stiff = 0.0
                else:
                    if i < 240:
                        stiff = 1.0
                    else:
                        stiff = 0.0

                elbow.moveTo(0, stiff)

                angle = elbow.getJointAngle() * 180 / pi
                flexor = joint.eqModel.flexor.getJointAngle() * 180 / pi
                extensor = joint.eqModel.extensor.getJointAngle() * 180 / pi
                time2 = rospy.Time.now()
                duration = time2 - time1
                delta = duration.to_sec()

                writer.writerow(
                    [delta, stiff, angle, flexorAngle, extensorAngle])
                r.sleep()