def InitSimEnv(): global quadruped global pybulletDebug physicsClient = p.connect(p.GUI) # or p.DIRECT for non-graphical version p.setAdditionalSearchPath(pybullet_data.getDataPath()) # optionally pybulletDebug = pybulletDebug() p.setGravity(0, 0, -9.81) p.loadURDF("plane.urdf") init_position = [0, 0, 0.5] init_orn = [0, 0, 0, 1] path = rospkg.RosPack().get_path("quadruped_ctrl") print("current path = " + path) quadruped = p.loadURDF(path + "/src/quadruped_robot.urdf", init_position, init_orn, useFixedBase=False) # quadruped = p.loadURDF("mini_cheetah/mini_cheetah.urdf", # init_position, init_orn, useFixedBase=False) p.resetDebugVisualizerCamera(0.2, 45, -30, [1, -1, 1]) p.setRealTimeSimulation(1) startPos = [0.02, -0.78, 1.74, 0.02, -0.78, 1.74, -0.02, -0.78, 1.74, -0.02, -0.78, 1.74] footFR_index = 3 footFL_index = 7 footHR_index = 11 footHL_index = 15 for i in range(0, footFR_index): p.setJointMotorControl2( quadruped, i, p.POSITION_CONTROL, startPos[i]) # , force = 20) for i in range(footFR_index + 1, footFL_index): p.setJointMotorControl2( quadruped, i, p.POSITION_CONTROL, startPos[i-1]) # , force = 20) for i in range(footFL_index + 1, footHR_index): p.setJointMotorControl2( quadruped, i, p.POSITION_CONTROL, startPos[i-2]) # , force = 20) for i in range(footHR_index + 1, footHL_index): p.setJointMotorControl2( quadruped, i, p.POSITION_CONTROL, startPos[i - 3]) # , force = 20)
paramIds = [] time.sleep(0.5) for j in range(p.getNumJoints(boxId)): # p.changeDynamics(boxId, j, linearDamping=0, angularDamping=0) info = p.getJointInfo(boxId, j) print(info) jointName = info[1] jointType = info[2] jointIds.append(j) footFR_index = 3 footFL_index = 7 footBR_index = 11 footBL_index = 15 pybulletDebug = pybulletDebug() robotKinematics = robotKinematics() joystick = Joystick('/dev/input/event18') #need to specify the event route arduino = ArduinoSerial('/dev/ttyACM1') #need to specify the serial port trot = trotGait() #robot properties """initial safe position""" #angles targetAngs = np.array([ 0, np.pi / 4, -np.pi / 2, 0, #BR 0, np.pi / 4, -np.pi / 2,
def InitSimEnv(): global quadruped global pybulletDebug physicsClient = p.connect(p.GUI) # or p.DIRECT for non-graphical version p.setAdditionalSearchPath(pybullet_data.getDataPath()) # optionally pybulletDebug = pybulletDebug() p.setGravity(0, 0, -9.81) p.loadURDF("plane.urdf") init_position = [0, 0, 0.5] init_orientation = p.getQuaternionFromEuler( [math.pi / 2.0, 0, math.pi / 2.0]) quadruped = p.loadURDF("laikago/laikago_toes_limits.urdf", init_position, init_orientation, useFixedBase=True) # quadruped = p.loadURDF("mini_cheetah/mini_cheetah.urdf", # init_position, init_orn, useFixedBase=False) p.resetDebugVisualizerCamera(0.2, 45, -30, [1, -1, 1]) p.setRealTimeSimulation(1) # startPos = [0.02, -0.78, 1.74, 0.02, -0.78, # 1.74, -0.02, -0.78, 1.74, -0.02, -0.78, 1.74] startPos = [[ -0.13469, 0.19749, -0.98728, -0.29301, -0.20471, -1.23984, -0.23355, 0.42011, -1.21791, -0.18938, 0.26441, -0.94834 ], [ -0.14512, 0.26054, -0.95961, -0.29102, -0.36855, -1.18856, -0.27333, 0.31933, -1.19782, -0.16195, 0.32940, -0.92682 ], [ -0.15306, 0.30261, -0.90729, -0.25868, -0.48532, -1.10858, -0.30688, 0.20205, -1.13190, -0.13235, 0.37537, -0.87545 ], [ -0.16337, 0.32781, -0.83305, -0.22920, -0.55950, -1.03486, -0.33973, 0.07726, -1.03591, -0.10455, 0.40886, -0.80869 ], [ -0.16965, 0.34171, -0.74659, -0.23311, -0.60282, -0.94829, -0.36301, -0.03726, -0.92726, -0.07940, 0.43395, -0.73493 ], [ -0.17625, 0.35017, -0.65978, -0.19650, -0.61928, -0.86229, -0.37492, -0.13853, -0.82065, -0.06165, 0.46502, -0.67749 ], [ -0.17989, 0.35836, -0.58379, -0.11653, -0.58522, -0.80736, -0.37301, -0.22084, -0.73131, -0.05417, 0.51236, -0.66087 ], [ -0.18044, 0.36833, -0.54932, -0.08977, -0.53380, -0.76223, -0.36188, -0.28908, -0.66566, -0.05688, 0.56185, -0.67457 ], [ -0.17787, 0.39126, -0.61386, -0.09028, -0.47221, -0.71330, -0.33558, -0.32496, -0.62603, -0.06434, 0.61170, -0.71491 ], [ -0.16933, 0.42446, -0.72625, -0.08722, -0.39813, -0.70583, -0.30456, -0.33030, -0.61354, -0.07068, 0.66141, -0.78657 ], [ -0.17410, 0.44456, -0.86169, -0.08785, -0.30924, -0.75960, -0.27382, -0.31084, -0.62046, -0.07733, 0.69563, -0.87640 ], [ -0.18090, 0.44405, -1.01111, -0.09562, -0.21583, -0.83420, -0.26601, -0.24525, -0.67550, -0.08763, 0.71085, -0.97991 ], [ -0.19220, 0.40517, -1.15108, -0.10542, -0.11626, -0.90293, -0.27122, -0.14297, -0.76737, -0.10005, 0.70747, -1.08610 ], [ -0.20451, 0.30068, -1.25100, -0.12191, -0.01085, -0.96244, -0.27744, -0.03505, -0.84941, -0.11237, 0.67923, -1.17895 ], [ -0.21398, 0.14288, -1.31734, -0.13083, 0.09313, -1.00631, -0.27792, 0.05942, -0.90905, -0.12975, 0.62727, -1.25950 ], [ -0.20933, -0.03553, -1.31434, -0.13410, 0.18246, -1.01992, -0.26713, 0.15417, -0.95626, -0.15533, 0.55131, -1.31573 ], [ -0.18514, -0.20865, -1.24941, -0.13137, 0.24918, -1.00930, -0.24675, 0.23442, -0.97250, -0.18472, 0.44756, -1.32951 ], [ -0.15200, -0.35830, -1.14094, -0.12812, 0.29595, -0.98447, -0.22266, 0.30016, -0.96332, -0.21647, 0.32512, -1.29471 ], [ -0.10030, -0.47457, -0.99850, -0.12894, 0.32647, -0.93602, -0.19455, 0.35509, -0.93407, -0.24689, 0.19552, -1.21388 ], [ -0.07595, -0.54361, -0.90392, -0.13124, 0.34496, -0.86624, -0.16334, 0.39909, -0.89050, -0.27480, 0.06162, -1.09754 ], [ -0.07796, -0.59147, -0.83841, -0.13472, 0.35335, -0.78171, -0.13330, 0.43503, -0.83421, -0.29635, -0.06430, -0.96968 ], [ -0.02444, -0.57695, -0.76569, -0.14084, 0.35431, -0.68742, -0.11056, 0.45942, -0.76450, -0.31035, -0.17816, -0.84233 ], [ 0.03306, -0.51857, -0.74178, -0.14370, 0.34841, -0.59691, -0.09653, 0.48009, -0.70593, -0.31628, -0.27009, -0.73351 ], [ 0.03693, -0.45715, -0.71912, -0.14406, 0.33574, -0.54469, -0.09372, 0.50782, -0.68224, -0.31207, -0.34200, -0.66205 ], [ 0.02213, -0.38793, -0.73939, -0.14644, 0.34990, -0.58431, -0.10378, 0.53688, -0.68518, -0.29773, -0.36876, -0.64115 ], [ -0.00440, -0.30834, -0.79874, -0.15446, 0.38900, -0.69914, -0.12304, 0.56939, -0.71815, -0.27581, -0.36458, -0.64736 ], [ -0.01870, -0.22990, -0.84639, -0.17108, 0.43025, -0.84662, -0.14480, 0.60458, -0.77773, -0.24323, -0.34274, -0.65512 ], [ -0.03190, -0.13705, -0.89790, -0.19256, 0.44180, -1.00410, -0.16929, 0.62965, -0.84436, -0.21962, -0.29603, -0.68556 ], [ -0.05247, -0.04078, -0.94286, -0.22764, 0.38617, -1.12246, -0.19891, 0.64651, -0.92152, -0.21120, -0.20773, -0.75772 ], [ -0.06905, 0.04676, -0.96850, -0.26272, 0.27126, -1.20372, -0.23094, 0.65590, -1.00493, -0.20474, -0.09638, -0.84458 ], [ -0.08727, 0.13061, -0.98216, -0.30963, 0.11052, -1.24698, -0.26064, 0.64843, -1.08140, -0.19889, 0.00708, -0.92231 ], [ -0.09822, 0.20722, -0.98374, -0.34176, -0.06244, -1.25238, -0.28866, 0.62110, -1.14684, -0.18915, 0.09785, -0.97609 ], [ -0.10972, 0.27104, -0.96950, -0.35302, -0.23058, -1.21682, -0.31460, 0.57537, -1.20075, -0.16983, 0.18096, -1.01378 ]] footFR_index = 3 footFL_index = 7 footHR_index = 11 footHL_index = 15 while 1: for ii in range(33): # print(ii) for i in range(0, footFR_index): p.setJointMotorControl2(quadruped, i, p.POSITION_CONTROL, startPos[ii][i]) # , force = 20) for i in range(footFR_index + 1, footFL_index): p.setJointMotorControl2(quadruped, i, p.POSITION_CONTROL, startPos[ii][i - 1]) # , force = 20) for i in range(footFL_index + 1, footHR_index): p.setJointMotorControl2(quadruped, i, p.POSITION_CONTROL, startPos[ii][i - 2]) # , force = 20) for i in range(footHR_index + 1, footHL_index): p.setJointMotorControl2(quadruped, i, p.POSITION_CONTROL, startPos[ii][i - 3]) # , force = 20) time.sleep(0.05) pos = p.getLinkState(quadruped, 3) print([pos[0][0], pos[0][1], pos[0][2]])
def InitSimEnv(): global quadruped global pybulletDebug physicsClient = p.connect(p.GUI) # or p.DIRECT for non-graphical version p.setAdditionalSearchPath(pybullet_data.getDataPath()) # optionally pybulletDebug = pybulletDebug() p.setGravity(0, 0, -9.81) p.loadURDF("plane.urdf") init_position = [0, 0, 0.5] init_orn = [0, 0, 0, 1] path = rospkg.RosPack().get_path("quadruped_ctrl") print("current path = " + path) quadruped = p.loadURDF(path + "/src/quadruped_robot.urdf", init_position, init_orn, useFixedBase=True) # quadruped = p.loadURDF("mini_cheetah/mini_cheetah.urdf", # init_position, init_orn, useFixedBase=False) p.resetDebugVisualizerCamera(0.2, 45, -30, [1, -1, 1]) p.setRealTimeSimulation(1) # startPos = [0.02, -0.78, 1.74, 0.02, -0.78, # 1.74, -0.02, -0.78, 1.74, -0.02, -0.78, 1.74] startPos = [[ 0.18964, -0.73940, 1.69547, -0.37464, -0.29397, 1.96607, 0.29970, -0.95008, 1.94149, -0.24429, -0.81545, 1.66544 ], [ 0.19949, -0.80721, 1.66951, -0.37832, -0.12916, 1.91088, 0.33957, -0.85016, 1.92731, -0.21613, -0.88191, 1.63938 ], [ 0.20642, -0.85550, 1.61857, -0.34610, -0.01919, 1.82495, 0.37164, -0.73796, 1.86622, -0.18533, -0.93072, 1.58316 ], [ 0.21550, -0.88837, 1.54637, -0.31481, 0.04758, 1.74697, 0.40253, -0.62099, 1.77531, -0.15635, -0.96748, 1.51184 ], [ 0.22052, -0.91000, 1.46168, -0.31476, 0.08178, 1.66104, 0.42368, -0.51515, 1.67112, -0.13026, -0.99580, 1.43397 ], [ 0.22615, -0.92584, 1.37707, -0.27118, 0.08824, 1.57191, 0.43360, -0.42188, 1.56801, -0.11232, -1.02931, 1.37358 ], [ 0.22917, -0.94010, 1.30293, -0.18317, 0.04696, 1.50833, 0.42996, -0.34557, 1.48027, -0.10574, -1.07751, 1.35554 ], [ 0.22962, -0.95276, 1.26910, -0.15075, -0.00975, 1.46059, 0.41762, -0.28079, 1.41427, -0.10993, -1.12702, 1.36941 ], [ 0.22800, -0.97116, 1.33172, -0.14652, -0.07690, 1.41282, 0.38997, -0.24627, 1.37125, -0.11927, -1.17571, 1.41057 ], [ 0.22118, -0.99583, 1.44078, -0.14077, -0.15305, 1.40554, 0.35776, -0.24047, 1.35384, -0.12789, -1.22201, 1.48284 ], [ 0.22850, -1.00623, 1.57583, -0.14100, -0.23939, 1.45947, 0.32602, -0.25845, 1.35541, -0.13672, -1.25113, 1.57357 ], [ 0.23876, -0.99325, 1.72599, -0.14943, -0.32874, 1.53531, 0.31844, -0.32069, 1.40807, -0.14916, -1.25980, 1.67890 ], [ 0.25440, -0.93976, 1.86820, -0.15995, -0.42477, 1.60576, 0.32497, -0.41793, 1.49933, -0.16381, -1.24861, 1.78763 ], [ 0.27125, -0.82003, 1.97062, -0.17727, -0.52778, 1.66814, 0.33259, -0.52184, 1.58147, -0.17812, -1.21201, 1.88332 ], [ 0.28657, -0.64624, 2.03815, -0.18683, -0.63046, 1.71369, 0.33416, -0.61365, 1.64069, -0.19756, -1.15141, 1.96764 ], [ 0.28634, -0.46001, 2.03275, -0.19013, -0.72083, 1.72798, 0.32412, -0.70626, 1.68583, -0.22502, -1.06808, 2.02866 ], [ 0.26361, -0.28961, 1.96213, -0.18694, -0.79000, 1.71696, 0.30363, -0.78626, 1.69870, -0.25504, -0.96059, 2.04712 ], [ 0.22901, -0.14991, 1.84738, -0.18303, -0.83992, 1.69156, 0.27888, -0.85325, 1.68560, -0.28578, -0.83993, 2.01648 ], [ 0.17246, -0.04759, 1.69747, -0.18277, -0.87546, 1.64321, 0.24977, -0.91023, 1.65176, -0.31368, -0.71754, 1.93918 ], [ 0.14546, 0.01343, 1.59947, -0.18368, -0.90037, 1.57393, 0.21744, -0.95641, 1.60309, -0.33834, -0.59423, 1.82637 ], [ 0.14625, 0.05630, 1.53407, -0.18574, -0.91589, 1.49039, 0.18635, -0.99487, 1.54188, -0.35692, -0.47916, 1.70202 ], [ 0.08696, 0.03533, 1.45460, -0.19057, -0.92447, 1.39800, 0.16265, -1.02268, 1.46853, -0.36842, -0.37531, 1.57808 ], [ 0.02524, -0.02486, 1.42246, -0.19235, -0.92522, 1.30923, 0.14818, -1.04633, 1.40775, -0.37249, -0.29138, 1.47207 ], [ 0.01809, -0.08829, 1.39887, -0.19203, -0.91603, 1.25805, 0.14576, -1.07576, 1.38352, -0.36733, -0.22371, 1.40124 ], [ 0.03155, -0.15717, 1.42138, -0.19504, -0.92790, 1.29732, 0.15673, -1.10610, 1.38790, -0.35252, -0.19737, 1.37822 ], [ 0.05823, -0.23421, 1.48508, -0.20509, -0.96025, 1.41172, 0.17745, -1.13891, 1.42353, -0.33010, -0.20016, 1.38054 ], [ 0.07251, -0.31049, 1.53516, -0.22492, -0.99256, 1.56046, 0.20117, -1.17279, 1.48591, -0.29644, -0.22063, 1.38287 ], [ 0.08583, -0.40099, 1.58901, -0.25047, -0.99258, 1.72080, 0.22765, -1.19597, 1.55581, -0.27224, -0.26497, 1.40904 ], [ 0.10666, -0.49583, 1.63750, -0.28958, -0.92583, 1.84487, 0.25957, -1.21016, 1.63709, -0.26425, -0.34894, 1.47905 ], [ 0.12330, -0.58344, 1.66599, -0.32899, -0.79866, 1.93160, 0.29429, -1.21589, 1.72513, -0.25872, -0.45517, 1.56423 ], [ 0.14159, -0.66864, 1.68271, -0.38174, -0.62570, 1.98066, 0.32652, -1.20391, 1.80623, -0.25407, -0.55389, 1.64068 ], [ 0.15252, -0.74730, 1.68610, -0.42034, -0.44236, 1.98782, 0.35677, -1.17144, 1.87639, -0.24517, -0.64147, 1.69284 ], [ 0.16384, -0.81449, 1.67367, -0.43698, -0.26971, 1.95002, 0.38470, -1.11989, 1.93491, -0.22632, -0.72205, 1.72749 ]] footFR_index = 3 footFL_index = 7 footHR_index = 11 footHL_index = 15 while 1: for ii in range(33): print(ii) for i in range(0, footFR_index): p.setJointMotorControl2(quadruped, i, p.POSITION_CONTROL, startPos[ii][i]) # , force = 20) for i in range(footFR_index + 1, footFL_index): p.setJointMotorControl2(quadruped, i, p.POSITION_CONTROL, startPos[ii][i - 1]) # , force = 20) for i in range(footFL_index + 1, footHR_index): p.setJointMotorControl2(quadruped, i, p.POSITION_CONTROL, startPos[ii][i - 2]) # , force = 20) for i in range(footHR_index + 1, footHL_index): p.setJointMotorControl2(quadruped, i, p.POSITION_CONTROL, startPos[ii][i - 3]) # , force = 20) time.sleep(0.05)