This commit is contained in:
Erwin Coumans
2019-07-23 08:51:34 -07:00
10 changed files with 36 additions and 11 deletions

View File

@@ -12,6 +12,7 @@ from pybullet_envs.deep_mimic.learning.rl_world import RLWorld
from pybullet_utils.logger import Logger from pybullet_utils.logger import Logger
from pybullet_envs.deep_mimic.testrl import update_world, update_timestep, build_world from pybullet_envs.deep_mimic.testrl import update_world, update_timestep, build_world
import pybullet_utils.mpi_util as MPIUtil import pybullet_utils.mpi_util as MPIUtil
from mpi4py import MPI
args = [] args = []
world = None world = None
@@ -20,9 +21,15 @@ world = None
def run(): def run():
global update_timestep global update_timestep
global world global world
rank = MPI.COMM_WORLD.Get_rank()
name = "timings"+str(rank)+".json"
slot = world.env._pybullet_client.startStateLogging(world.env._pybullet_client.STATE_LOGGING_PROFILE_TIMINGS,name)
count=1000
done = False done = False
while not (done): while not (done):
count-=1
if (count<0):
world.env._pybullet_client.stopStateLogging(slot)
update_world(world, update_timestep) update_world(world, update_timestep)
return return

View File

@@ -822,6 +822,9 @@ class HumanoidStablePD(object):
jointIndices = range(num_joints) jointIndices = range(num_joints)
simJointStates = self._pybullet_client.getJointStatesMultiDof(self._sim_model, jointIndices) simJointStates = self._pybullet_client.getJointStatesMultiDof(self._sim_model, jointIndices)
kinJointStates = self._pybullet_client.getJointStatesMultiDof(self._kin_model, jointIndices) kinJointStates = self._pybullet_client.getJointStatesMultiDof(self._kin_model, jointIndices)
if useArray:
linkStatesSim = self._pybullet_client.getLinkStates(self._sim_model, jointIndices)
linkStatesKin = self._pybullet_client.getLinkStates(self._kin_model, jointIndices)
for j in range(num_joints): for j in range(num_joints):
curr_pose_err = 0 curr_pose_err = 0
curr_vel_err = 0 curr_vel_err = 0
@@ -859,10 +862,15 @@ class HumanoidStablePD(object):
vel_err += w * curr_vel_err vel_err += w * curr_vel_err
is_end_eff = j in self._end_effectors is_end_eff = j in self._end_effectors
if is_end_eff: if is_end_eff:
linkStateSim = self._pybullet_client.getLinkState(self._sim_model, j) if useArray:
linkStateKin = self._pybullet_client.getLinkState(self._kin_model, j) linkStateSim = linkStatesSim[j]
linkStateKin = linkStatesKin[j]
else:
linkStateSim = self._pybullet_client.getLinkState(self._sim_model, j)
linkStateKin = self._pybullet_client.getLinkState(self._kin_model, j)
linkPosSim = linkStateSim[0] linkPosSim = linkStateSim[0]
linkPosKin = linkStateKin[0] linkPosKin = linkStateKin[0]
linkPosDiff = [ linkPosDiff = [

View File

@@ -240,7 +240,7 @@ class PyBulletDeepMimicEnv(Env):
#print("action=",) #print("action=",)
#for a in action: #for a in action:
# print(a) # print(a)
np.savetxt("pb_action.csv", action, delimiter=",") #np.savetxt("pb_action.csv", action, delimiter=",")
self.desiredPose = self._humanoid.convertActionToPose(action) self.desiredPose = self._humanoid.convertActionToPose(action)
#we need the target root positon and orientation to be zero, to be compatible with deep mimic #we need the target root positon and orientation to be zero, to be compatible with deep mimic
self.desiredPose[0] = 0 self.desiredPose[0] = 0
@@ -252,7 +252,7 @@ class PyBulletDeepMimicEnv(Env):
self.desiredPose[6] = 0 self.desiredPose[6] = 0
target_pose = np.array(self.desiredPose) target_pose = np.array(self.desiredPose)
np.savetxt("pb_target_pose.csv", target_pose, delimiter=",") #np.savetxt("pb_target_pose.csv", target_pose, delimiter=",")
#print("set_action: desiredPose=", self.desiredPose) #print("set_action: desiredPose=", self.desiredPose)

View File

@@ -1,3 +1,4 @@
import time
import os import os
import inspect import inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
@@ -17,7 +18,7 @@ import random
update_timestep = 1. / 240. update_timestep = 1. / 240.
animating = True animating = True
step = False
def update_world(world, time_elapsed): def update_world(world, time_elapsed):
timeStep = update_timestep timeStep = update_timestep
@@ -82,11 +83,15 @@ if __name__ == '__main__':
world = build_world(args, True) world = build_world(args, True)
while (world.env._pybullet_client.isConnected()): while (world.env._pybullet_client.isConnected()):
timeStep = update_timestep timeStep = update_timestep
time.sleep(timeStep)
keys = world.env.getKeyboardEvents() keys = world.env.getKeyboardEvents()
if world.env.isKeyTriggered(keys, ' '): if world.env.isKeyTriggered(keys, ' '):
animating = not animating animating = not animating
if (animating): if world.env.isKeyTriggered(keys, 'i'):
step = True
if (animating or step):
update_world(world, timeStep) update_world(world, timeStep)
#animating=False step = False

View File

@@ -485,7 +485,7 @@ if 'BT_USE_EGL' in EGL_CXX_FLAGS:
setup( setup(
name='pybullet', name='pybullet',
version='2.5.1', version='2.5.3',
description= description=
'Official Python Interface for the Bullet Physics SDK specialized for Robotics Simulation and Reinforcement Learning', 'Official Python Interface for the Bullet Physics SDK specialized for Robotics Simulation and Reinforcement Learning',
long_description= long_description=

View File

@@ -63,7 +63,12 @@ inline int btGetVersion()
#endif #endif
#ifdef _WIN32 #ifdef _WIN32
#if defined(__MINGW32__) || defined(__CYGWIN__) || (defined (_MSC_VER) && _MSC_VER < 1300) #if defined(__GNUC__) // it should handle both MINGW and CYGWIN
#define SIMD_FORCE_INLINE __inline__ __attribute__((always_inline))
#define ATTRIBUTE_ALIGNED16(a) a __attribute__((aligned(16)))
#define ATTRIBUTE_ALIGNED64(a) a __attribute__((aligned(64)))
#define ATTRIBUTE_ALIGNED128(a) a __attribute__((aligned(128)))
#elif ( defined(_MSC_VER) && _MSC_VER < 1300 )
#define SIMD_FORCE_INLINE inline #define SIMD_FORCE_INLINE inline
#define ATTRIBUTE_ALIGNED16(a) a #define ATTRIBUTE_ALIGNED16(a) a
#define ATTRIBUTE_ALIGNED64(a) a #define ATTRIBUTE_ALIGNED64(a) a