mirror of
https://github.com/PotentiaRobotics/pybullet-resources.git
synced 2025-04-04 01:20:16 -04:00
Add files via upload
This commit is contained in:
parent
3b380371f4
commit
7c888ed0b0
124
squat_analysis.py
Normal file
124
squat_analysis.py
Normal file
|
@ -0,0 +1,124 @@
|
|||
import pybullet as p
|
||||
import time
|
||||
import pybullet_data
|
||||
import math
|
||||
import matplotlib.pyplot as plt
|
||||
physicsClient = p.connect(p.GUI)#or p.DIRECT for non-graphical version
|
||||
|
||||
p.setAdditionalSearchPath(pybullet_data.getDataPath()) #optionally
|
||||
p.setGravity(0,0,-10)
|
||||
planeId = p.loadURDF("plane.urdf")
|
||||
startPos = [0,0,0]
|
||||
startOrientation = p.getQuaternionFromEuler([0,0,0])
|
||||
robotId = p.loadURDF("olympian.urdf",startPos, startOrientation,
|
||||
# useMaximalCoordinates=1, ## New feature in Pybullet
|
||||
flags=p.URDF_USE_INERTIA_FROM_FILE)
|
||||
|
||||
print("==========SIMULATION ENABLED================")
|
||||
|
||||
#GET JOINT INFO
|
||||
|
||||
print(p.getNumJoints(robotId))
|
||||
for i in range(0, p.getNumJoints(robotId)):
|
||||
print(p.getJointInfo(robotId, i)[0:13])
|
||||
|
||||
listOfJointIndeces = []
|
||||
for i in range(0, p.getNumJoints(robotId)):
|
||||
listOfJointIndeces.append(i)
|
||||
|
||||
|
||||
def calcCOM():
|
||||
|
||||
#CALCULATE COM
|
||||
masstimesxpossum = 0.0
|
||||
masstimesypossum = 0.0
|
||||
masstimeszpossum = 0.0
|
||||
masssum = 0.0
|
||||
for i in range(0, p.getNumJoints(robotId) -1):
|
||||
|
||||
# if(i >= 0):
|
||||
# print(p.getJointInfo(robotId, i)[0:13])
|
||||
|
||||
wheight = p.getDynamicsInfo(robotId, i)[0]
|
||||
xpos = p.getLinkState(robotId, i)[0][0]
|
||||
ypos = p.getLinkState(robotId, i)[0][1]
|
||||
zpos = p.getLinkState(robotId, i)[0][2]
|
||||
|
||||
masstimesxpossum += (wheight * xpos)
|
||||
masstimesypossum += (wheight * ypos)
|
||||
masstimeszpossum += (wheight * zpos)
|
||||
masssum += wheight
|
||||
|
||||
# print(wheight)
|
||||
# print(xpos)
|
||||
# print(ypos)
|
||||
# print(zpos)
|
||||
# print("\n")
|
||||
p.stepSimulation()
|
||||
com = (masstimesxpossum/masssum, masstimesypossum/masssum, masstimeszpossum/masssum)
|
||||
|
||||
print("mass: " + str(masssum))
|
||||
print("center of mass: " + str(com))
|
||||
print("\n")
|
||||
return com
|
||||
|
||||
newi = []
|
||||
|
||||
torque = 50
|
||||
comPos = []
|
||||
comPos2 = []
|
||||
def squatDown():
|
||||
|
||||
for i in range(0,30):
|
||||
comPos.append(calcCOM())
|
||||
newi.insert(0, i)
|
||||
positionsList = [0] * 23
|
||||
positionsList[11] = i/100 * 1 * math.pi #leg pitch 1
|
||||
positionsList[17] = i/100 * -1 * math.pi #leg pitch 2
|
||||
|
||||
positionsList[14] = i/50 * math.pi #leg knee 1
|
||||
positionsList[20] = i/50 * -1 * math.pi #leg knee 2
|
||||
|
||||
positionsList[16] = i/100 * 1 * math.pi#foot pitch 1
|
||||
positionsList[22] = i/100 * -1 * math.pi#foot pitch 2
|
||||
|
||||
# positionsList[0] = math.pi / 4
|
||||
forceArray = [torque]*23
|
||||
|
||||
p.setJointMotorControlArray(robotId, listOfJointIndeces, p.POSITION_CONTROL, targetPositions = positionsList, forces = forceArray)
|
||||
p.stepSimulation()
|
||||
|
||||
|
||||
def squatUp():
|
||||
for i in newi:
|
||||
comPos2.append(calcCOM())
|
||||
positionsList = [0] * 23
|
||||
positionsList[11] = i/100 * 1 * math.pi #leg pitch 1
|
||||
positionsList[17] = i/100 * -1 * math.pi #leg pitch 2
|
||||
|
||||
positionsList[14] = i/50 * math.pi #leg knee 1
|
||||
positionsList[20] = i/50 * -1 * math.pi #leg knee 2
|
||||
|
||||
positionsList[16] = i/100 * 1 * math.pi#foot pitch 1
|
||||
positionsList[22] = i/100 * -1 * math.pi#foot pitch 2
|
||||
|
||||
# positionsList[0] = math.pi / 4
|
||||
forceArray = [torque]*23
|
||||
|
||||
p.setJointMotorControlArray(robotId, listOfJointIndeces, p.POSITION_CONTROL, targetPositions = positionsList, forces = forceArray)
|
||||
p.stepSimulation()
|
||||
|
||||
squatDown()
|
||||
squatUp()
|
||||
|
||||
|
||||
plt.plot(newi, comPos)
|
||||
for i in newi[:-1]:
|
||||
newi[i] += 30
|
||||
plt.plot(newi, comPos2)
|
||||
plt.show()
|
||||
|
||||
# for i in range(0,1000000):
|
||||
# p.stepSimulation()
|
||||
# time.sleep(1./240.)
|
||||
|
Loading…
Reference in New Issue
Block a user