Python pybullet.setGravity() Examples
The following are 29
code examples of pybullet.setGravity().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
pybullet
, or try the search function
.
Example #1
Source File: unittests.py From soccer-matlab with BSD 2-Clause "Simplified" License | 6 votes |
def test_rolling_friction(self): import pybullet as p p.connect(p.DIRECT) p.loadURDF("plane.urdf") sphere = p.loadURDF("sphere2.urdf",[0,0,1]) p.resetBaseVelocity(sphere,linearVelocity=[1,0,0]) p.changeDynamics(sphere,-1,linearDamping=0,angularDamping=0) #p.changeDynamics(sphere,-1,rollingFriction=0) p.setGravity(0,0,-10) for i in range (1000): p.stepSimulation() vel = p.getBaseVelocity(sphere) self.assertLess(vel[0][0],1e-10) self.assertLess(vel[0][1],1e-10) self.assertLess(vel[0][2],1e-10) self.assertLess(vel[1][0],1e-10) self.assertLess(vel[1][1],1e-10) self.assertLess(vel[1][2],1e-10) p.disconnect()
Example #2
Source File: cartpole_bullet.py From soccer-matlab with BSD 2-Clause "Simplified" License | 6 votes |
def _reset(self): # print("-----------reset simulation---------------") p.resetSimulation() self.cartpole = p.loadURDF(os.path.join(pybullet_data.getDataPath(),"cartpole.urdf"),[0,0,0]) self.timeStep = 0.01 p.setJointMotorControl2(self.cartpole, 1, p.VELOCITY_CONTROL, force=0) p.setGravity(0,0, -10) p.setTimeStep(self.timeStep) p.setRealTimeSimulation(0) initialCartPos = self.np_random.uniform(low=-0.5, high=0.5, size=(1,)) initialAngle = self.np_random.uniform(low=-0.5, high=0.5, size=(1,)) p.resetJointState(self.cartpole, 1, initialAngle) p.resetJointState(self.cartpole, 0, initialCartPos) self.state = p.getJointState(self.cartpole, 1)[0:2] + p.getJointState(self.cartpole, 0)[0:2] return np.array(self.state)
Example #3
Source File: kukaCamGymEnv.py From soccer-matlab with BSD 2-Clause "Simplified" License | 6 votes |
def _reset(self): self.terminated = 0 p.resetSimulation() p.setPhysicsEngineParameter(numSolverIterations=150) p.setTimeStep(self._timeStep) p.loadURDF(os.path.join(self._urdfRoot,"plane.urdf"),[0,0,-1]) p.loadURDF(os.path.join(self._urdfRoot,"table/table.urdf"), 0.5000000,0.00000,-.820000,0.000000,0.000000,0.0,1.0) xpos = 0.5 +0.2*random.random() ypos = 0 +0.25*random.random() ang = 3.1415925438*random.random() orn = p.getQuaternionFromEuler([0,0,ang]) self.blockUid =p.loadURDF(os.path.join(self._urdfRoot,"block.urdf"), xpos,ypos,-0.1,orn[0],orn[1],orn[2],orn[3]) p.setGravity(0,0,-10) self._kuka = kuka.Kuka(urdfRootPath=self._urdfRoot, timeStep=self._timeStep) self._envStepCounter = 0 p.stepSimulation() self._observation = self.getExtendedObservation() return np.array(self._observation)
Example #4
Source File: balancebot_env.py From balance-bot with MIT License | 6 votes |
def _reset(self): # reset is called once at initialization of simulation self.vt = 0 self.vd = 0 self.maxV = 24.6 # 235RPM = 24,609142453 rad/sec self._envStepCounter = 0 p.resetSimulation() p.setGravity(0,0,-10) # m/s^2 p.setTimeStep(0.01) # sec planeId = p.loadURDF("plane.urdf") cubeStartPos = [0,0,0.001] cubeStartOrientation = p.getQuaternionFromEuler([0,0,0]) path = os.path.abspath(os.path.dirname(__file__)) self.botId = p.loadURDF(os.path.join(path, "balancebot_simple.xml"), cubeStartPos, cubeStartOrientation) # you *have* to compute and return the observation from reset() self._observation = self._compute_observation() return np.array(self._observation)
Example #5
Source File: human_testing.py From assistive-gym with MIT License | 6 votes |
def reset(self, robot_base_offset=[0, 0, 0], task='scratch_itch_pr2'): self.human, self.wheelchair, self.robot, self.robot_lower_limits, self.robot_upper_limits, self.human_lower_limits, self.human_upper_limits, self.robot_right_arm_joint_indices, self.robot_left_arm_joint_indices, self.gender = self.world_creation.create_new_world(furniture_type=None, static_human_base=True, human_impairment='none', print_joints=False, gender='random') p.resetDebugVisualizerCamera(cameraDistance=1.2, cameraYaw=0, cameraPitch=-20, cameraTargetPosition=[0, 0, 1.0], physicsClientId=self.id) joints_positions = [] # self.human_controllable_joint_indices = [] self.human_controllable_joint_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # self.human_controllable_joint_indices = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] self.world_creation.setup_human_joints(self.human, joints_positions, self.human_controllable_joint_indices, use_static_joints=True, human_reactive_force=None) p.setGravity(0, 0, 0, physicsClientId=self.id) # Enable rendering p.configureDebugVisualizer(p.COV_ENABLE_RENDERING, 1, physicsClientId=self.id) return []
Example #6
Source File: pose_env.py From tensor2robot with Apache License 2.0 | 6 votes |
def _setup(self): """Sets up the robot + tray + objects. """ pybullet.resetSimulation(physicsClientId=self.cid) pybullet.setPhysicsEngineParameter(numSolverIterations=150, physicsClientId=self.cid) # pybullet.setTimeStep(self._time_step, physicsClientId=self.cid) pybullet.setGravity(0, 0, -10, physicsClientId=self.cid) plane_path = os.path.join(self._urdf_root, 'plane.urdf') pybullet.loadURDF(plane_path, [0, 0, -1], physicsClientId=self.cid) table_path = os.path.join(self._urdf_root, 'table/table.urdf') pybullet.loadURDF(table_path, [0.0, 0.0, -.65], [0., 0., 0., 1.], physicsClientId=self.cid) # Load the target object duck_path = os.path.join(self._urdf_root, 'duck_vhacd.urdf') pos = [0]*3 orn = [0., 0., 0., 1.] self._target_uid = pybullet.loadURDF( duck_path, pos, orn, physicsClientId=self.cid)
Example #7
Source File: client.py From costar_plan with Apache License 2.0 | 6 votes |
def open(self): ''' Decide how we will create our interface to the underlying simulation. We can create a GUI connection or something else. ''' options = "" if self.opengl2: connect_type = pb.GUI options = "--opengl2" elif self.gui: connect_type = pb.GUI else: connect_type = pb.DIRECT self.client = pb.connect(connect_type, options=options) GRAVITY = (0,0,-9.8) pb.setGravity(*GRAVITY) # place the robot in the world and set up the task self.task.setup()
Example #8
Source File: panda_reach_gym_env.py From pybullet-robot-envs with GNU Lesser General Public License v2.1 | 5 votes |
def reset_simulation(self): self.terminated = 0 # --- reset simulation --- # p.resetSimulation(physicsClientId=self._physics_client_id) p.setPhysicsEngineParameter(numSolverIterations=150, physicsClientId=self._physics_client_id) p.setTimeStep(self._timeStep, physicsClientId=self._physics_client_id) self._env_step_counter = 0 p.setGravity(0, 0, -9.8, physicsClientId=self._physics_client_id) # --- reset robot --- # self._robot.reset() # Let the world run for a bit for _ in range(100): p.stepSimulation(physicsClientId=self._physics_client_id) # --- reset world --- # self._world.reset() # Let the world run for a bit for _ in range(100): p.stepSimulation(physicsClientId=self._physics_client_id) if self._use_IK: self._hand_pose = self._robot._home_hand_pose # --- draw some reference frames in the simulation for debugging --- # self._robot.debug_gui() self._world.debug_gui() p.stepSimulation(physicsClientId=self._physics_client_id)
Example #9
Source File: panda_push_gym_env.py From pybullet-robot-envs with GNU Lesser General Public License v2.1 | 5 votes |
def reset_simulation(self): self.terminated = 0 # --- reset simulation --- # p.resetSimulation(physicsClientId=self._physics_client_id) p.setPhysicsEngineParameter(numSolverIterations=150, physicsClientId=self._physics_client_id) p.setTimeStep(self._timeStep, physicsClientId=self._physics_client_id) self._env_step_counter = 0 p.setGravity(0, 0, -9.8, physicsClientId=self._physics_client_id) # --- reset robot --- # self._robot.reset() # Let the world run for a bit for _ in range(100): p.stepSimulation(physicsClientId=self._physics_client_id) # --- reset world --- # self._world.reset() # Let the world run for a bit for _ in range(100): p.stepSimulation(physicsClientId=self._physics_client_id) if self._use_IK: self._hand_pose = self._robot._home_hand_pose # --- draw some reference frames in the simulation for debugging --- # self._robot.debug_gui() self._world.debug_gui() p.stepSimulation(physicsClientId=self._physics_client_id)
Example #10
Source File: icub_push_gym_env.py From pybullet-robot-envs with GNU Lesser General Public License v2.1 | 5 votes |
def reset_simulation(self): self.terminated = 0 # --- reset simulation --- # p.resetSimulation(physicsClientId=self._physics_client_id) p.setPhysicsEngineParameter(numSolverIterations=150, physicsClientId=self._physics_client_id) p.setTimeStep(self._time_step, physicsClientId=self._physics_client_id) self._env_step_counter = 0 p.setGravity(0, 0, -9.8, physicsClientId=self._physics_client_id) # --- reset robot --- # self._robot.reset() # Let the world run for a bit for _ in range(100): p.stepSimulation(physicsClientId=self._physics_client_id) # --- reset world --- # self._world.reset() # Let the world run for a bit for _ in range(100): p.stepSimulation(physicsClientId=self._physics_client_id) if self._use_IK: self._hand_pose = self._robot._home_hand_pose # --- draw some reference frames in the simulation for debugging --- # self._robot.debug_gui() self._world.debug_gui() p.stepSimulation(physicsClientId=self._physics_client_id)
Example #11
Source File: icub_reach_gym_env.py From pybullet-robot-envs with GNU Lesser General Public License v2.1 | 5 votes |
def reset_simulation(self): self.terminated = 0 # --- reset simulation --- # p.resetSimulation(physicsClientId=self._physics_client_id) p.setPhysicsEngineParameter(numSolverIterations=150, physicsClientId=self._physics_client_id) p.setTimeStep(self._time_step, physicsClientId=self._physics_client_id) self._env_step_counter = 0 p.setGravity(0, 0, -9.8, physicsClientId=self._physics_client_id) # --- reset robot --- # self._robot.reset() # Let the world run for a bit for _ in range(100): p.stepSimulation(physicsClientId=self._physics_client_id) # --- reset world --- # self._world.reset() # Let the world run for a bit for _ in range(100): p.stepSimulation(physicsClientId=self._physics_client_id) # --- draw some reference frames in the simulation for debugging --- # self._robot.debug_gui() self._world.debug_gui() p.stepSimulation(physicsClientId=self._physics_client_id)
Example #12
Source File: MJCFHopperv0Env.py From bullet-gym with MIT License | 5 votes |
def __init__(self, opts): self.gui = opts.gui self.max_episode_len = opts.max_episode_len self.delay = opts.delay if self.gui else 0.0 # do some parameter setting from your parser arguments and add other configurations # how many time to repeat each action per step(). # and how many sim steps to do per state capture # (total number of sim steps = action_repeats * steps_per_repeat self.repeats = opts.action_repeats self.steps_per_repeat = opts.steps_per_repeat # setup bullet p.connect(p.GUI if self.gui else p.DIRECT) p.setGravity(0,0,-9.81) PybulletMujocoEnv.__init__(self, "envs/models/mjcf/hopper.xml", "walker", 0.02, frame_skip=2, action_dim=3, obs_dim=8, repeats=self.repeats) self.torso = self.parts["torso"] self.foot = self.parts["foot"] self.thigh_joint = self.joints["thigh_joint"] self.leg_joint = self.joints["leg_joint"] self.foot_joint = self.joints["foot_joint"] self.metadata = { 'discrete_actions' : False, 'continuous_actions': True, 'render.modes': ['human', 'rgb_array'], 'video.frames_per_second': int(np.round(1.0 / self.timestep / self.frame_skip)) }
Example #13
Source File: scene_abstract.py From bullet-gym with MIT License | 5 votes |
def clean_everything(self): p.resetSimulation() p.setGravity(0, 0, -self.gravity) p.setPhysicsEngineParameter(fixedTimeStep=self.timestep, numSolverIterations=5, numSubSteps=2)
Example #14
Source File: robot_locomotors.py From midlevel-reps with MIT License | 5 votes |
def apply_action(self, action): if self.is_discrete: realaction = self.action_list[action] else: realaction = action p.setGravity(0, 0, 0) p.resetBaseVelocity(self.robot_ids[0], realaction[:3], realaction[3:])
Example #15
Source File: scene_abstract.py From midlevel-reps with MIT License | 5 votes |
def clean_everything(self): #p.resetSimulation() p.setGravity(0, 0, -self.gravity) #p.setDefaultContactERP(0.9) p.setPhysicsEngineParameter(fixedTimeStep=self.timestep*self.frame_skip, numSolverIterations=50, numSubSteps=(self.frame_skip-1))
Example #16
Source File: robot_locomotors.py From GtS with MIT License | 5 votes |
def apply_action(self, action): if self.is_discrete: realaction = self.action_list[action] else: realaction = action p.setGravity(0, 0, 0) p.resetBaseVelocity(self.robot_ids[0], realaction[:3], realaction[3:])
Example #17
Source File: abstract.py From costar_plan with Apache License 2.0 | 5 votes |
def setup(self): ''' Create task by adding objects to the scene, including the robot. ''' rospack = rospkg.RosPack() path = rospack.get_path('costar_simulation') static_plane_path = os.path.join(path, 'meshes', 'world', 'plane.urdf') pb.loadURDF(static_plane_path) self.world = self.makeWorld() self.task = self._makeTask() self._setup() handle = self.robot.load() pb.setGravity(0, 0, -9.807) self._setupRobot(handle) state = self.robot.getState() self.world.addActor(SimulationRobotActor( robot=self.robot, dynamics=SimulationDynamics(self.world), policy=NullPolicy(), state=state)) self._updateWorld() for handle, (obj_type, obj_name) in self._type_and_name_by_obj.items(): # Create an object and add it to the World state = GetObjectState(handle) self.world.addObject(obj_name, obj_type, handle, state) self.task.compile(self.getObjects())
Example #18
Source File: renderer.py From mvp_grasp with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self, im_width, im_height, fov, near_plane, far_plane, DEBUG=False): self.im_width = im_width self.im_height = im_height self.fov = fov self.near_plane = near_plane self.far_plane = far_plane aspect = self.im_width/self.im_height self.pm = pb.computeProjectionMatrixFOV(fov, aspect, near_plane, far_plane) self.camera_pos = np.array([0, 0, 0.5]) self.camera_rot = self._rotation_matrix([0, np.pi, 0]) self.objects = [] if DEBUG: self.cid = pb.connect(pb.GUI) else: self.cid = pb.connect(pb.DIRECT) pb.setAdditionalSearchPath(pybullet_data.getDataPath()) pb.setGravity(0, 0, -10) self.draw_camera_pos() self._rendered = None self._rendered_pos = None self._rendered_rot = None
Example #19
Source File: bullet_physics_engine.py From NTP-vat-release with MIT License | 5 votes |
def set_gravity(self, gravity): self._gravity = gravity p.setGravity(gravity[0], gravity[1], gravity[2])
Example #20
Source File: kuka_diverse_object_gym_env.py From soccer-matlab with BSD 2-Clause "Simplified" License | 5 votes |
def _reset(self): """Environment reset called at the beginning of an episode. """ # Set the camera settings. look = [0.23, 0.2, 0.54] distance = 1. pitch = -56 + self._cameraRandom*np.random.uniform(-3, 3) yaw = 245 + self._cameraRandom*np.random.uniform(-3, 3) roll = 0 self._view_matrix = p.computeViewMatrixFromYawPitchRoll( look, distance, yaw, pitch, roll, 2) fov = 20. + self._cameraRandom*np.random.uniform(-2, 2) aspect = self._width / self._height near = 0.01 far = 10 self._proj_matrix = p.computeProjectionMatrixFOV( fov, aspect, near, far) self._attempted_grasp = False self._env_step = 0 self.terminated = 0 p.resetSimulation() p.setPhysicsEngineParameter(numSolverIterations=150) p.setTimeStep(self._timeStep) p.loadURDF(os.path.join(self._urdfRoot,"plane.urdf"),[0,0,-1]) p.loadURDF(os.path.join(self._urdfRoot,"table/table.urdf"), 0.5000000,0.00000,-.820000,0.000000,0.000000,0.0,1.0) p.setGravity(0,0,-10) self._kuka = kuka.Kuka(urdfRootPath=self._urdfRoot, timeStep=self._timeStep) self._envStepCounter = 0 p.stepSimulation() # Choose the objects in the bin. urdfList = self._get_random_object( self._numObjects, self._isTest) self._objectUids = self._randomly_place_objects(urdfList) self._observation = self._get_observation() return np.array(self._observation)
Example #21
Source File: saveRestoreStateTest.py From soccer-matlab with BSD 2-Clause "Simplified" License | 5 votes |
def setupWorld(self): numObjects = 50 maximalCoordinates = False p.resetSimulation() p.setPhysicsEngineParameter(deterministicOverlappingPairs=1) p.loadURDF("planeMesh.urdf",useMaximalCoordinates=maximalCoordinates) kukaId = p.loadURDF("kuka_iiwa/model_free_base.urdf",[0,0,10], useMaximalCoordinates=maximalCoordinates) for i in range (p.getNumJoints(kukaId)): p.setJointMotorControl2(kukaId,i,p.POSITION_CONTROL,force=0) for i in range (numObjects): cube = p.loadURDF("cube_small.urdf",[0,i*0.02,(i+1)*0.2]) #p.changeDynamics(cube,-1,mass=100) p.stepSimulation() p.setGravity(0,0,-10)
Example #22
Source File: minitaur_evaluate.py From soccer-matlab with BSD 2-Clause "Simplified" License | 5 votes |
def evaluate_params(evaluateFunc, params, objectiveParams, urdfRoot='', timeStep=0.01, maxNumSteps=10000, sleepTime=0): print('start evaluation') beforeTime = time.time() p.resetSimulation() p.setTimeStep(timeStep) p.loadURDF("%s/plane.urdf" % urdfRoot) p.setGravity(0,0,-10) global minitaur minitaur = Minitaur(urdfRoot) start_position = current_position() last_position = None # for tracing line total_energy = 0 for i in range(maxNumSteps): torques = minitaur.getMotorTorques() velocities = minitaur.getMotorVelocities() total_energy += np.dot(np.fabs(torques), np.fabs(velocities)) * timeStep joint_values = evaluate_func_map[evaluateFunc](i, params) minitaur.applyAction(joint_values) p.stepSimulation() if (is_fallen()): break if i % 100 == 0: sys.stdout.write('.') sys.stdout.flush() time.sleep(sleepTime) print(' ') alpha = objectiveParams[0] final_distance = np.linalg.norm(start_position - current_position()) finalReturn = final_distance - alpha * total_energy elapsedTime = time.time() - beforeTime print ("trial for ", params, " final_distance", final_distance, "total_energy", total_energy, "finalReturn", finalReturn, "elapsed_time", elapsedTime) return finalReturn
Example #23
Source File: scratch_itch.py From assistive-gym with MIT License | 4 votes |
def reset(self): self.setup_timing() self.task_success = 0 self.prev_target_contact_pos = np.zeros(3) self.human, self.wheelchair, self.robot, self.robot_lower_limits, self.robot_upper_limits, self.human_lower_limits, self.human_upper_limits, self.robot_right_arm_joint_indices, self.robot_left_arm_joint_indices, self.gender = self.world_creation.create_new_world(furniture_type='wheelchair', static_human_base=True, human_impairment='random', print_joints=False, gender='random') self.robot_lower_limits = self.robot_lower_limits[self.robot_left_arm_joint_indices] self.robot_upper_limits = self.robot_upper_limits[self.robot_left_arm_joint_indices] self.reset_robot_joints() if self.robot_type == 'jaco': wheelchair_pos, wheelchair_orient = p.getBasePositionAndOrientation(self.wheelchair, physicsClientId=self.id) p.resetBasePositionAndOrientation(self.robot, np.array(wheelchair_pos) + np.array([-0.35, -0.3, 0.3]), p.getQuaternionFromEuler([0, 0, -np.pi/2.0], physicsClientId=self.id), physicsClientId=self.id) joints_positions = [(3, np.deg2rad(30)), (6, np.deg2rad(-90)), (16, np.deg2rad(-90)), (28, np.deg2rad(-90)), (31, np.deg2rad(80)), (35, np.deg2rad(-90)), (38, np.deg2rad(80))] self.human_controllable_joint_indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] self.world_creation.setup_human_joints(self.human, joints_positions, self.human_controllable_joint_indices, use_static_joints=True, human_reactive_force=None if self.human_control else 1, human_reactive_gain=0.01) p.resetBasePositionAndOrientation(self.human, [0, 0.03, 0.89 if self.gender == 'male' else 0.86], [0, 0, 0, 1], physicsClientId=self.id) human_joint_states = p.getJointStates(self.human, jointIndices=self.human_controllable_joint_indices, physicsClientId=self.id) self.target_human_joint_positions = np.array([x[0] for x in human_joint_states]) self.human_lower_limits = self.human_lower_limits[self.human_controllable_joint_indices] self.human_upper_limits = self.human_upper_limits[self.human_controllable_joint_indices] shoulder_pos, shoulder_orient = p.getLinkState(self.human, 5, computeForwardKinematics=True, physicsClientId=self.id)[:2] elbow_pos, elbow_orient = p.getLinkState(self.human, 7, computeForwardKinematics=True, physicsClientId=self.id)[:2] wrist_pos, wrist_orient = p.getLinkState(self.human, 9, computeForwardKinematics=True, physicsClientId=self.id)[:2] if self.robot_type == 'pr2': target_pos = np.array([-0.55, 0, 0.8]) + self.np_random.uniform(-0.05, 0.05, size=3) target_orient = np.array(p.getQuaternionFromEuler(np.array([0, 0, 0]), physicsClientId=self.id)) self.position_robot_toc(self.robot, 76, [(target_pos, target_orient)], [(shoulder_pos, None), (elbow_pos, None), (wrist_pos, None)], self.robot_left_arm_joint_indices, self.robot_lower_limits, self.robot_upper_limits, ik_indices=range(29, 29+7), pos_offset=np.array([0.1, 0, 0]), max_ik_iterations=200, step_sim=True, check_env_collisions=False, human_joint_indices=self.human_controllable_joint_indices, human_joint_positions=self.target_human_joint_positions) self.world_creation.set_gripper_open_position(self.robot, position=0.25, left=True, set_instantly=True) self.tool = self.world_creation.init_tool(self.robot, mesh_scale=[0.001]*3, pos_offset=[0, 0, 0], orient_offset=p.getQuaternionFromEuler([0, 0, 0], physicsClientId=self.id), maximal=False) elif self.robot_type == 'jaco': target_pos = np.array([-0.5, 0, 0.8]) + self.np_random.uniform(-0.05, 0.05, size=3) target_orient = p.getQuaternionFromEuler(np.array([0, np.pi/2.0, 0]), physicsClientId=self.id) self.util.ik_random_restarts(self.robot, 8, target_pos, target_orient, self.world_creation, self.robot_left_arm_joint_indices, self.robot_lower_limits, self.robot_upper_limits, ik_indices=[0, 1, 2, 3, 4, 5, 6], max_iterations=1000, max_ik_random_restarts=40, random_restart_threshold=0.03, step_sim=True) self.world_creation.set_gripper_open_position(self.robot, position=1, left=True, set_instantly=True) self.tool = self.world_creation.init_tool(self.robot, mesh_scale=[0.001]*3, pos_offset=[0, 0, 0.02], orient_offset=p.getQuaternionFromEuler([0, -np.pi/2.0, 0], physicsClientId=self.id), maximal=False) else: target_pos = np.array([-0.55, 0, 0.8]) + self.np_random.uniform(-0.05, 0.05, size=3) target_orient = p.getQuaternionFromEuler(np.array([0, np.pi/2.0, 0]), physicsClientId=self.id) if self.robot_type == 'baxter': self.position_robot_toc(self.robot, 48, [(target_pos, target_orient)], [(shoulder_pos, None), (elbow_pos, None), (wrist_pos, None)], self.robot_left_arm_joint_indices, self.robot_lower_limits, self.robot_upper_limits, ik_indices=range(10, 17), pos_offset=np.array([0, 0, 0.975]), max_ik_iterations=200, step_sim=True, check_env_collisions=False, human_joint_indices=self.human_controllable_joint_indices, human_joint_positions=self.target_human_joint_positions) else: self.position_robot_toc(self.robot, 19, [(target_pos, target_orient)], [(shoulder_pos, None), (elbow_pos, None), (wrist_pos, None)], self.robot_left_arm_joint_indices, self.robot_lower_limits, self.robot_upper_limits, ik_indices=[0, 2, 3, 4, 5, 6, 7], pos_offset=np.array([-0.1, 0, 0.975]), max_ik_iterations=200, step_sim=True, check_env_collisions=False, human_joint_indices=self.human_controllable_joint_indices, human_joint_positions=self.target_human_joint_positions) self.world_creation.set_gripper_open_position(self.robot, position=0.015, left=True, set_instantly=True) self.tool = self.world_creation.init_tool(self.robot, mesh_scale=[0.001]*3, pos_offset=[0, 0.125, 0], orient_offset=p.getQuaternionFromEuler([0, 0, np.pi/2.0], physicsClientId=self.id), maximal=False) self.generate_target() p.setGravity(0, 0, 0, physicsClientId=self.id) p.setGravity(0, 0, -1, body=self.human, physicsClientId=self.id) # Enable rendering p.configureDebugVisualizer(p.COV_ENABLE_RENDERING, 1, physicsClientId=self.id) return self._get_obs([0], [0, 0])
Example #24
Source File: MJCFInvPendulumv0Env.py From bullet-gym with MIT License | 4 votes |
def __init__(self, opts): self.gui = opts.gui self.max_episode_len = opts.max_episode_len self.delay = opts.delay if self.gui else 0.0 # do some parameter setting from your parser arguments and add other configurations # threshold for angle from z-axis. # if x or y > this value we finish episode. self.angle_threshold = 0.26 # radians; ~= 15deg # initial push force. this should be enough that taking no action will always # result in pole falling after initial_force_steps but not so much that you # can't recover. see also initial_force_steps. self.initial_force = opts.initial_force # number of sim steps initial force is applied. # (see initial_force) self.initial_force_steps = 30 # whether we do initial push in a random direction # if false we always push with along x-axis (simplee problem, useful for debugging) self.random_theta = not opts.no_random_theta # how many time to repeat each action per step(). # and how many sim steps to do per state capture # (total number of sim steps = action_repeats * steps_per_repeat self.repeats = opts.action_repeats self.steps_per_repeat = opts.steps_per_repeat self.swingup = opts.swingup self.reward_calc = opts.reward_calc # setup bullet p.connect(p.GUI if self.gui else p.DIRECT) p.setGravity(0, 0, -9.81) # maybe you need gravity? PybulletMujocoEnv.__init__(self, "envs/models/mjcf/inverted_pendulum.xml", "walker", 0.02, frame_skip=2, action_dim=1, obs_dim=5, repeats=self.repeats) self.slider = self.joints["slider"] self.polejoint = self.joints["hinge"] self.metadata = { 'discrete_actions' : False, 'continuous_actions': True, 'render.modes': ['human', 'rgb_array'], 'video.frames_per_second': int(np.round(1.0 / self.timestep / self.frame_skip)) }
Example #25
Source File: MJCF2InvPendulumv0Env.py From bullet-gym with MIT License | 4 votes |
def __init__(self, opts): self.gui = opts.gui self.max_episode_len = opts.max_episode_len self.delay = opts.delay if self.gui else 0.0 # do some parameter setting from your parser arguments and add other configurations # threshold for angle from z-axis. # if x or y > this value we finish episode. self.angle_threshold = 0.26 # radians; ~= 15deg # initial push force. this should be enough that taking no action will always # result in pole falling after initial_force_steps but not so much that you # can't recover. see also initial_force_steps. self.initial_force = opts.initial_force # number of sim steps initial force is applied. # (see initial_force) self.initial_force_steps = 30 # whether we do initial push in a random direction # if false we always push with along x-axis (simplee problem, useful for debugging) self.random_theta = not opts.no_random_theta # how many time to repeat each action per step(). # and how many sim steps to do per state capture # (total number of sim steps = action_repeats * steps_per_repeat self.repeats = opts.action_repeats self.steps_per_repeat = opts.steps_per_repeat self.swingup = opts.swingup self.reward_calc = opts.reward_calc # setup bullet p.connect(p.GUI if self.gui else p.DIRECT) p.setGravity(0, 0, -9.81) # maybe you need gravity? PybulletMujocoEnv.__init__(self, "envs/models/mjcf/inverted_double_pendulum.xml", "walker", 0.02, frame_skip=2, action_dim=1, obs_dim=8, repeats=self.repeats) self.slider = self.joints["slider"] self.polejoint = self.joints["hinge"] self.pole2joint = self.joints["hinge2"] self.metadata = { 'discrete_actions' : False, 'continuous_actions': True, 'render.modes': ['human', 'rgb_array'], 'video.frames_per_second': int(np.round(1.0 / self.timestep / self.frame_skip)) }
Example #26
Source File: Motionv0Env.py From bullet-gym with MIT License | 4 votes |
def __init__(self, opts): self.gui = opts.gui self.max_episode_len = opts.max_episode_len self.delay = opts.delay if self.gui else 0.0 self.metadata = { 'discrete_actions' : True, 'continuous_actions' : True, 'render.modes': ['human', 'rgb_array'], 'video.frames_per_second' : int(np.round(1.0 / 25.0)) } # do some parameter setting from your parser arguments and add other configurations self.control_type = opts.control_type # force to apply per action simulation step. # in the discrete case this is the fixed gain applied # in the continuous case each x/y is in range (-G, G) self.action_gain = opts.action_gain # scale of control (position, velocity) self.action_force = opts.action_force # Newton # how many time to repeat each action per step(). # and how many sim steps to do per state capture # (total number of sim steps = action_repeats * steps_per_repeat self.repeats = opts.action_repeats self.steps_per_repeat = opts.steps_per_repeat self.random_initial_position = opts.random_initial_position # setup bullet p.connect(p.GUI if self.gui else p.DIRECT) p.setGravity(0, 0, opts.gravity_force) # maybe you need gravity? p.loadURDF("envs/models/ground.urdf", 0,0,0, 0,0,0,1) # load your models if opts.morphology_type == 1: self.body = p.loadURDF("envs/models/simple-snakev0.urdf",0,0,2, 0,0,0,1) elif opts.morphology_type == 2: self.body = p.loadURDF("envs/models/springy-snakev0.urdf",0,0,2, 0,0,0,1) elif opts.morphology_type == 3: self.body = p.loadURDF("envs/models/phantomx/phantomx.urdf",0,0,2, 0,0,0,1) self.initPosition, self.initOrientation = p.getBasePositionAndOrientation(self.body) self.num_joints = p.getNumJoints(self.body) self.velocityHelper = VelocityHelper(self.body) self.reward = RewardFunction(self.body, RewardFunction.PositionReward, RewardFunction.XAxis) # velocity in X axis dimension gets rewarded # in the low dimensional case obs space for problem is (R, num_links, 13) # R = number of repeats # num joints + 1 = number of links of snake # 13d tuple for pos + orientation + velocities (angular velocity in euler) self.state_shape = (self.repeats, p.getNumJoints(self.body)+1, 13) # no state until reset. self.state = np.empty(self.state_shape, dtype=np.float32)
Example #27
Source File: simulation_manager.py From qibullet with Apache License 2.0 | 4 votes |
def launchSimulation(self, gui=True, use_shared_memory=False): """ Launches a simulation instance Parameters: gui - Boolean, if True the simulation is launched with a GUI, and with no GUI otherwise use_shared_memory - Experimental feature, only taken into account if gui=False, False by default. If True, the simulation will use the pybullet SHARED_MEMORY_SERVER mode to create an instance. If multiple simulation instances are created, this solution allows a multicore parallelisation of the bullet motion servers (one for each instance). In DIRECT mode, such a parallelisation is not possible and the motion servers are manually stepped using the _stepSimulation method. (More information in the setup section of the qiBullet wiki, and in the pybullet documentation) Returns: physics_client - The id of the simulation client created """ if gui: # pragma: no cover physics_client = pybullet.connect(pybullet.GUI) pybullet.setRealTimeSimulation(1, physicsClientId=physics_client) pybullet.configureDebugVisualizer( pybullet.COV_ENABLE_RGB_BUFFER_PREVIEW, 0, physicsClientId=physics_client) pybullet.configureDebugVisualizer( pybullet.COV_ENABLE_DEPTH_BUFFER_PREVIEW, 0, physicsClientId=physics_client) pybullet.configureDebugVisualizer( pybullet.COV_ENABLE_SEGMENTATION_MARK_PREVIEW, 0, physicsClientId=physics_client) else: if use_shared_memory: physics_client = pybullet.connect( pybullet.SHARED_MEMORY_SERVER) pybullet.setRealTimeSimulation( enableRealTimeSimulation=1, physicsClientId=physics_client) else: physics_client = pybullet.connect(pybullet.DIRECT) threading.Thread( target=self._stepSimulation, args=[physics_client]).start() pybullet.setGravity(0, 0, -9.81, physicsClientId=physics_client) return physics_client
Example #28
Source File: unittests.py From soccer-matlab with BSD 2-Clause "Simplified" License | 4 votes |
def testJacobian(self): import pybullet as p clid = p.connect(p.SHARED_MEMORY) if (clid<0): p.connect(p.DIRECT) time_step = 0.001 gravity_constant = -9.81 urdfs = ["TwoJointRobot_w_fixedJoints.urdf", "TwoJointRobot_w_fixedJoints.urdf", "kuka_iiwa/model.urdf", "kuka_lwr/kuka.urdf"] for urdf in urdfs: p.resetSimulation() p.setTimeStep(time_step) p.setGravity(0.0, 0.0, gravity_constant) robotId = p.loadURDF(urdf, useFixedBase=True) p.resetBasePositionAndOrientation(robotId,[0,0,0],[0,0,0,1]) numJoints = p.getNumJoints(robotId) endEffectorIndex = numJoints - 1 # Set a joint target for the position control and step the sim. self.setJointPosition(robotId, [0.1 * (i % 3) for i in range(numJoints)]) p.stepSimulation() # Get the joint and link state directly from Bullet. mpos, mvel, mtorq = self.getMotorJointStates(robotId) result = p.getLinkState(robotId, endEffectorIndex, computeLinkVelocity=1, computeForwardKinematics=1) link_trn, link_rot, com_trn, com_rot, frame_pos, frame_rot, link_vt, link_vr = result # Get the Jacobians for the CoM of the end-effector link. # Note that in this example com_rot = identity, and we would need to use com_rot.T * com_trn. # The localPosition is always defined in terms of the link frame coordinates. zero_vec = [0.0] * len(mpos) jac_t, jac_r = p.calculateJacobian(robotId, endEffectorIndex, com_trn, mpos, zero_vec, zero_vec) assert(allclose(dot(jac_t, mvel), link_vt)) assert(allclose(dot(jac_r, mvel), link_vr)) p.disconnect()
Example #29
Source File: saveRestoreState.py From soccer-matlab with BSD 2-Clause "Simplified" License | 4 votes |
def setupWorld(): p.resetSimulation() p.setPhysicsEngineParameter(deterministicOverlappingPairs=1) p.loadURDF("planeMesh.urdf") kukaId = p.loadURDF("kuka_iiwa/model_free_base.urdf",[0,0,10]) for i in range (p.getNumJoints(kukaId)): p.setJointMotorControl2(kukaId,i,p.POSITION_CONTROL,force=0) for i in range (numObjects): cube = p.loadURDF("cube_small.urdf",[0,i*0.02,(i+1)*0.2]) #p.changeDynamics(cube,-1,mass=100) p.stepSimulation() p.setGravity(0,0,-10)