def get_state(self): return opensim.State(self.state)
from osim.env import RunEnv import opensim env = RunEnv(visualize=True) observation = env.reset(seed=0) s = 0 for s in range(50000): d = False if s == 30: state_old = opensim.State(env.osim_model.state) print("State stored") print(state_old) if s % 50 == 49: env.osim_model.revert(state_old) state_old = opensim.State(state_old) print("Rollback") print(state_old) o, r, d, i = env.step(env.action_space.sample())
opensim.Vec3(0, 0, 0), opensim.Vec3(0, 0, 0)) bodyGeometry = opensim.Ellipsoid(0.1, 0.1, 0.1) bodyGeometry.setColor(opensim.Gray) blockos.attachGeometry(bodyGeometry) model.addComponent(pj) model.addComponent(blockos) #block = opensim.ContactMesh('block.obj',opensim.Vec3(0,0,0), opensim.Vec3(0,0,0), blockos); block = opensim.ContactSphere(0.4, opensim.Vec3(0, 0, 0), blockos) model.addContactGeometry(block) # Reinitialize the system with the new controller state0 = model.initSystem() state = opensim.State(state0) # Change max force muscleSet.get(0).setMaxIsometricForce(100000.0) # Get ligaments ligamentSet = [] for j in range(20, 26): ligamentSet.append( opensim.CoordinateLimitForce.safeDownCast(forceSet.get(j))) for i in range(1000): # Set some excitation values for j in range(muscleSet.getSize()): controllers[j].setValue(((i + j) % 10) * 0.1)
def reset(self): if not self.state0: self.state0 = self.model.initSystem() self.manager = opensim.Manager(self.model) self.state = opensim.State(self.state0)