IMU and contact sensors added
This commit is contained in:
parent
9cbf6edabe
commit
30574a1c0b
|
@ -103,6 +103,7 @@
|
||||||
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder" class="collision"/>
|
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder" class="collision"/>
|
||||||
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black"/>
|
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black"/>
|
||||||
<geom name="FR" class="foot"/>
|
<geom name="FR" class="foot"/>
|
||||||
|
<site name="FR_foot_contact" pos="0 0 -0.213" size="0.02"/>
|
||||||
</body>
|
</body>
|
||||||
</body>
|
</body>
|
||||||
</body>
|
</body>
|
||||||
|
@ -131,6 +132,8 @@
|
||||||
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder" class="collision"/>
|
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder" class="collision"/>
|
||||||
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black"/>
|
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black"/>
|
||||||
<geom name="FL" class="foot"/>
|
<geom name="FL" class="foot"/>
|
||||||
|
<site name="FL_foot_contact" pos="0 0 -0.213" size="0.02"/>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</body>
|
</body>
|
||||||
</body>
|
</body>
|
||||||
|
@ -159,6 +162,7 @@
|
||||||
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder" class="collision"/>
|
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder" class="collision"/>
|
||||||
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black"/>
|
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black"/>
|
||||||
<geom name="RR" class="foot"/>
|
<geom name="RR" class="foot"/>
|
||||||
|
<site name="RR_foot_contact" pos="0 0 -0.213" size="0.02"/>
|
||||||
</body>
|
</body>
|
||||||
</body>
|
</body>
|
||||||
</body>
|
</body>
|
||||||
|
@ -187,6 +191,8 @@
|
||||||
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder" class="collision"/>
|
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder" class="collision"/>
|
||||||
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black"/>
|
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black"/>
|
||||||
<geom name="RL" class="foot"/>
|
<geom name="RL" class="foot"/>
|
||||||
|
<site name="RL_foot_contact" pos="0 0 -0.213" size="0.02"/>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</body>
|
</body>
|
||||||
</body>
|
</body>
|
||||||
|
@ -211,6 +217,17 @@
|
||||||
<motor class="knee" name="RL_calf" joint="RL_calf_joint"/>
|
<motor class="knee" name="RL_calf" joint="RL_calf_joint"/>
|
||||||
</actuator>
|
</actuator>
|
||||||
|
|
||||||
|
<sensor>
|
||||||
|
<!-- IMU -->
|
||||||
|
<accelerometer name="imu_accel" site="imu"/>
|
||||||
|
<gyro name="imu_gyro" site="imu"/>
|
||||||
|
<!-- Contact sensors for the feet -->
|
||||||
|
<touch name="FR_foot_contact" site="FR_foot_contact"/>
|
||||||
|
<touch name="FL_foot_contact" site="RL_foot_contact"/>
|
||||||
|
<touch name="RR_foot_contact" site="RR_foot_contact"/>
|
||||||
|
<touch name="RL_foot_contact" site="RL_foot_contact"/>
|
||||||
|
</sensor>
|
||||||
|
|
||||||
<keyframe>
|
<keyframe>
|
||||||
<key name="home" qpos="0 0 0.27 1 0 0 0 0 0.9 -1.8 0 0.9 -1.8 0 0.9 -1.8 0 0.9 -1.8"
|
<key name="home" qpos="0 0 0.27 1 0 0 0 0 0.9 -1.8 0 0.9 -1.8 0 0.9 -1.8 0 0.9 -1.8"
|
||||||
ctrl="0 0.9 -1.8 0 0.9 -1.8 0 0.9 -1.8 0 0.9 -1.8"/>
|
ctrl="0 0.9 -1.8 0 0.9 -1.8 0 0.9 -1.8 0 0.9 -1.8"/>
|
||||||
|
|
|
@ -81,6 +81,15 @@ class Go2Sim:
|
||||||
def getPose(self):
|
def getPose(self):
|
||||||
return self.data.qpos[:3], self.data.qpos[3:7]
|
return self.data.qpos[:3], self.data.qpos[3:7]
|
||||||
|
|
||||||
|
def getIMU(self):
|
||||||
|
return {
|
||||||
|
'accel':np.array(self.data.sensordata[0:3]),\
|
||||||
|
'gyro': np.array(self.data.sensordata[3:6])
|
||||||
|
}
|
||||||
|
|
||||||
|
def getFootContact(self):
|
||||||
|
return self.data.sensordata[6:10]
|
||||||
|
|
||||||
def setCommands(self, q_des, dq_des, kp, kv, tau_ff):
|
def setCommands(self, q_des, dq_des, kp, kv, tau_ff):
|
||||||
q, dq = self.getJointStates()
|
q, dq = self.getJointStates()
|
||||||
tau = np.diag(kp)@(q_des-q).reshape(12,1)+ \
|
tau = np.diag(kp)@(q_des-q).reshape(12,1)+ \
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
"import mujoco\n",
|
"import mujoco\n",
|
||||||
"import time\n",
|
"import time\n",
|
||||||
"q,dq = robot.getJointStates()\n",
|
"q,dq = robot.getJointStates()\n",
|
||||||
"robot.sitDown()\n",
|
"robot.standUp()\n",
|
||||||
"for i in range(100000):\n",
|
"for i in range(100000):\n",
|
||||||
" q,dq = robot.getJointStates()\n",
|
" q,dq = robot.getJointStates()\n",
|
||||||
" tau = 20*np.eye(12)@(robot.q0 - q).reshape(12,1)\n",
|
" tau = 20*np.eye(12)@(robot.q0 - q).reshape(12,1)\n",
|
||||||
|
@ -42,7 +42,9 @@
|
||||||
"execution_count": null,
|
"execution_count": null,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": []
|
"source": [
|
||||||
|
"robot.getFootContact(), robot.getIMU()"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
|
|
Loading…
Reference in New Issue