if __name__ == "__main__": from itertools import count from pyrobolearn.simulators import Bullet from pyrobolearn.worlds import BasicWorld # Create simulator sim = Bullet() # create world world = BasicWorld(sim) # create robot robots = [] for _ in range(30): x, y = np.random.uniform(low=-1, high=1, size=2) robot = world.load_robot(Kilobot, position=(x, y, 0)) robots.append(robot) # print information about the robot robots[0].print_info() # Position control using sliders # robots[0].add_joint_slider() # run simulator for _ in count(): # robots[0].update_joint_slider() for robot in robots: robot.drive(5) world.step(sleep_dt=1. / 240)
def __getattr__(self, item): """The Gym Env have the same methods and attributes as the PRL Env.""" return getattr(self.env, item) # Tests if __name__ == '__main__': from pyrobolearn.simulators import Bullet import time # create simulator sim = Bullet() # create world world = BasicWorld(sim) robot = world.load_robot('coman', fixed_base=True) # create states states = State() # create rewards reward = Reward() # create Env env = Env(world, states, reward) # dummy action action = Action() # run the environment for n steps for _ in range(10000):
from itertools import count from pyrobolearn.simulators import Bullet from pyrobolearn.worlds import BasicWorld from pyrobolearn.robots import KukaIIWA, Body # Create simulator sim = Bullet() # create world world = BasicWorld(sim) # create robot robot = KukaIIWA(sim) robot.print_info() world.load_robot(robot) # define useful variables for IK dt = 1. / 240 link_id = robot.get_end_effector_ids(end_effector=0) joint_ids = robot.joints # actuated joint damping = 0.01 # for damped-least-squares IK wrt_link_id = -1 # robot.get_link_ids('iiwa_link_1') qIdx = robot.get_q_indices(joint_ids) # define gains kp = 50 # 5 if velocity control, 50 if position control kd = 0 # 2*np.sqrt(kp) # create sphere to follow sphere = world.load_visual_sphere(position=np.array([0.5, 0., 1.]),
from itertools import count from pyrobolearn.simulators import Bullet from pyrobolearn.worlds import BasicWorld from pyrobolearn.robots import Epuck # Create simulator sim = Bullet() # create world world = BasicWorld(sim) # create robot robots = [] for _ in range(5): x, y = np.random.uniform(low=-2, high=2, size=2) robot = world.load_robot(Epuck, position=(x, y, 0)) robots.append(robot) # print information about the robot robots[0].print_info() # Position control using sliders # robots[0].add_joint_slider() # run simulator for _ in count(): # robots[0].update_joint_slider() for robot in robots: robot.drive(5) world.step(sleep_dt=1. / 240)
from pyrobolearn.tasks import ILTask # variables joint_ids = None # None for all the actuated joints, or you can select which joint you want to move; e.g. [0, 1, 2] num_basis = 20 rate = 30 # Create simulator sim = Bullet() # create world world = BasicWorld(sim) # load robot in the world robot = world.load_robot(KukaIIWA) print("Robot's actuated joint ids: {}".format(robot.joints)) # create state/action state = ExponentialPhaseState(ticks=rate) action = JointPositionAction(robot, joint_ids=joint_ids) print("State: {}".format(state)) print("Action: {}".format(action)) # create environment env = Env(world, state) # create DMP policy policy = BioDiscreteDMPPolicy(action, state, num_basis=num_basis, rate=rate) # create interface/bridge
print("CoMr: {}".format(CoMr)) if robot.name == 'centauro': xref_l1f = robot.get_link_world_frame_positions(left_foot1_id) # Desired position for left foot xref_r1f = robot.get_link_world_frame_positions(right_foot1_id) # Desired position for right foot xref_l2f = robot.get_link_world_frame_positions(left_foot2_id) # Desired position for left foot xref_r2f = robot.get_link_world_frame_positions(right_foot2_id) # Desired position for right foot else: xref_lf = robot.get_link_world_frame_positions(left_foot_id) # Desired position for left foot # Qref_lf = robot.get_link_world_frame_orientations(leftFootId) xref_rf = robot.get_link_world_frame_positions(right_foot_id) # Desired position for right foot # Qref_rf = robot.get_link_world_frame_orientations(rightFootId) # Display initial and desired manipulability ellipsoid robot = world.load_robot(robot) world.step() q0 = robot.get_joint_positions() print("q0: {}".format(q0)) Jcom0 = robot.get_center_of_mass_jacobian(q0) if not robot.has_fixed_base(): vel_manip = robot.compute_velocity_manipulability_ellipsoid(Jcom0[:, 6:]) else: vel_manip = robot.compute_velocity_manipulability_ellipsoid(Jcom0) print("Mv0: {}".format(vel_manip[0:3, 0:3])) base_pos = robot.get_base_position() robot.draw_velocity_manipulability_ellipsoid(link_id=-1, JJT=10 * des_vel_manip, color=(0.1, 0.75, 0.1, 0.6)) ellipsoid_id = robot.draw_velocity_manipulability_ellipsoid(link_id=-1, JJT=10 * vel_manip[0:3, 0:3], color=(0.75, 0.1, 0.1, 0.6))
from pyrobolearn.simulators import Bullet from pyrobolearn.worlds import BasicWorld import time from itertools import count # create simulator sim = Bullet() # sim.configure_debug_visualizer(p.COV_ENABLE_GUI, 0) # sim.configure_debug_visualizer(p.COV_ENABLE_RENDERING, 0) # sim.configure_debug_visualizer(p.COV_ENABLE_TINY_RENDERER, 1) # sim.configure_debug_visualizer(p.COV_ENABLE_WIREFRAME, 1) # sim.configure_debug_visualizer(p.COV_ENABLE_Y_AXIS_UP, 0) # sim.configure_debug_visualizer(p.COV_ENABLE_RGB_BUFFER_PREVIEW, 0) # sim.configure_debug_visualizer(p.COV_ENABLE_DEPTH_BUFFER_PREVIEW, 0) # sim.configure_debug_visualizer(p.COV_ENABLE_SEGMENTATION_MARK_PREVIEW, 0) # create World world = BasicWorld(sim) # load robot robot = world.load_robot('baxter', fixed_base=True) # create bridge/interface bridge = BridgeMouseKeyboardWorld(world, verbose=True) for _ in count(): bridge.step(update_interface=True) # world.step() time.sleep(1. / 100)