diff --git a/MUJOCO_LOG.TXT b/MUJOCO_LOG.TXT
new file mode 100644
index 0000000..330f128
--- /dev/null
+++ b/MUJOCO_LOG.TXT
@@ -0,0 +1,3 @@
+Mon Nov 1 15:55:46 2021
+ERROR: Could not open activation key file mjkey.txt
+
diff --git a/README.md b/README.md
index 5276af6..72590a3 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,4 @@
-# unitree_mujoco
\ No newline at end of file
+# Introduction
+[MuJoCo](https://mujoco.org/) stands for Multi-Joint dynamics with Contact. It is a physics engine for simulation and has been open source. To relise more details, see these repositories: [MuJoCo](https://github.com/deepmind/mujoco) and [MuJuCo-py](https://github.com/openai/mujoco-py).
+
+In this repo, some mujoco example scripts and the xml files of different Unitree robots are provided.
diff --git a/data/a1/meshes/calf.stl b/data/a1/meshes/calf.stl
new file mode 100644
index 0000000..2040968
Binary files /dev/null and b/data/a1/meshes/calf.stl differ
diff --git a/data/a1/meshes/hip.stl b/data/a1/meshes/hip.stl
new file mode 100644
index 0000000..5187033
Binary files /dev/null and b/data/a1/meshes/hip.stl differ
diff --git a/data/a1/meshes/thigh.stl b/data/a1/meshes/thigh.stl
new file mode 100644
index 0000000..9a7b00e
Binary files /dev/null and b/data/a1/meshes/thigh.stl differ
diff --git a/data/a1/meshes/thigh_mirror.stl b/data/a1/meshes/thigh_mirror.stl
new file mode 100644
index 0000000..ce9e43e
Binary files /dev/null and b/data/a1/meshes/thigh_mirror.stl differ
diff --git a/data/a1/meshes/trunk.stl b/data/a1/meshes/trunk.stl
new file mode 100644
index 0000000..d433933
Binary files /dev/null and b/data/a1/meshes/trunk.stl differ
diff --git a/data/a1/urdf/a1.urdf b/data/a1/urdf/a1.urdf
new file mode 100644
index 0000000..1b5bf3c
--- /dev/null
+++ b/data/a1/urdf/a1.urdf
@@ -0,0 +1,719 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+
diff --git a/data/a1/urdf/a1.xml b/data/a1/urdf/a1.xml
new file mode 100644
index 0000000..2963f6b
--- /dev/null
+++ b/data/a1/urdf/a1.xml
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/aliengo/meshes/calf.stl b/data/aliengo/meshes/calf.stl
new file mode 100644
index 0000000..8af5b2f
Binary files /dev/null and b/data/aliengo/meshes/calf.stl differ
diff --git a/data/aliengo/meshes/hip.stl b/data/aliengo/meshes/hip.stl
new file mode 100644
index 0000000..59383c4
Binary files /dev/null and b/data/aliengo/meshes/hip.stl differ
diff --git a/data/aliengo/meshes/thigh.stl b/data/aliengo/meshes/thigh.stl
new file mode 100644
index 0000000..1d0469d
Binary files /dev/null and b/data/aliengo/meshes/thigh.stl differ
diff --git a/data/aliengo/meshes/thigh_mirror.stl b/data/aliengo/meshes/thigh_mirror.stl
new file mode 100644
index 0000000..fbfc5e3
Binary files /dev/null and b/data/aliengo/meshes/thigh_mirror.stl differ
diff --git a/data/aliengo/meshes/trunk.stl b/data/aliengo/meshes/trunk.stl
new file mode 100644
index 0000000..ee2732b
Binary files /dev/null and b/data/aliengo/meshes/trunk.stl differ
diff --git a/data/aliengo/urdf/aliengo.urdf b/data/aliengo/urdf/aliengo.urdf
new file mode 100644
index 0000000..dc11a7a
--- /dev/null
+++ b/data/aliengo/urdf/aliengo.urdf
@@ -0,0 +1,718 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+ transmission_interface/SimpleTransmission
+
+ hardware_interface/EffortJointInterface
+
+
+ hardware_interface/EffortJointInterface
+ 1
+
+
+
+
+
diff --git a/data/laikago/meshes/calf.stl b/data/laikago/meshes/calf.stl
new file mode 100644
index 0000000..1db8fa3
Binary files /dev/null and b/data/laikago/meshes/calf.stl differ
diff --git a/data/laikago/meshes/hip.stl b/data/laikago/meshes/hip.stl
new file mode 100644
index 0000000..1621dcd
Binary files /dev/null and b/data/laikago/meshes/hip.stl differ
diff --git a/data/laikago/meshes/thigh.stl b/data/laikago/meshes/thigh.stl
new file mode 100644
index 0000000..f827016
Binary files /dev/null and b/data/laikago/meshes/thigh.stl differ
diff --git a/data/laikago/meshes/thigh_mirror.stl b/data/laikago/meshes/thigh_mirror.stl
new file mode 100644
index 0000000..0fd133f
Binary files /dev/null and b/data/laikago/meshes/thigh_mirror.stl differ
diff --git a/data/laikago/meshes/trunk.stl b/data/laikago/meshes/trunk.stl
new file mode 100644
index 0000000..6626045
Binary files /dev/null and b/data/laikago/meshes/trunk.stl differ
diff --git a/data/laikago/urdf/laikago.urdf b/data/laikago/urdf/laikago.urdf
new file mode 100644
index 0000000..e2b9c4b
--- /dev/null
+++ b/data/laikago/urdf/laikago.urdf
@@ -0,0 +1,393 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mujoco_py_test.py b/mujoco_py_test.py
new file mode 100644
index 0000000..af1c78f
--- /dev/null
+++ b/mujoco_py_test.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python3
+"""
+Shows how to toss a capsule to a container.
+"""
+from re import T
+from mujoco_py import load_model_from_path, MjSim, MjViewer
+import os
+import math
+import keyboard
+
+model = load_model_from_path("/home/bobzhu/Unitree/Mujoco/unitree_mujoco_git/unitree_mujoco/data/a1/urdf/a1.xml")
+sim = MjSim(model)
+
+viewer = MjViewer(sim)
+
+sim_state = sim.get_state()
+
+i = 0
+if_increase = True
+
+desired_speed = [0.0] * 12
+desired_pos = [0.0] * 12
+Kp_vel= 7.0
+Ki_vel = 0.8
+
+Kp_pos= 10.0
+
+q_vel_former = [0.0] * 12
+
+speed_command = [0.0] * 12
+speed_error = [0.0] * 12
+speed_error_former = [0.0] * 12
+
+angle_error = [0.0] * 12
+
+
+k = 0
+increase = True
+while True:
+
+ #sim.set_state(sim_state)
+
+ # if k > 50:
+ # increase = False
+ # elif k < -50:
+ # increase = True
+
+ # if increase:
+ # k+=1
+ # else:
+ # k-=1
+
+ # # print(desired_pos)
+ # for i in range(12):
+ # desired_pos[i] = 0.0
+
+ # q_pos_meas = sim.data.get_joint_qpos(sim.model.joint_names[i])
+
+ # angle_error[i] = desired_pos[i] - q_pos_meas
+
+ # if angle_error[i] < - math.pi:
+ # angle_error[i] = 2 * math.pi + angle_error[i]
+ # elif angle_error[i] >= math.pi:
+ # angle_error[i] = angle_error[i] - 2 * math.pi
+
+ # desired_speed[i] = Kp_pos * angle_error[i]
+
+ # q_vel_meas = sim.data.get_joint_qvel(sim.model.joint_names[i])
+ # #print(sim.data.get_joint_qvel(sim.model.joint_names[0]))
+
+ # speed_error[i] = desired_speed[i] - q_vel_meas
+ # speed_command[i] += Kp_vel * (speed_error[i] - speed_error_former[i]) + Ki_vel * speed_error[i]
+ # speed_error_former[i] = speed_error[i]
+
+ # if speed_command[i] > 33.5:
+ # speed_command[i] = 33.5
+ # elif speed_command[i] < -33.5:
+ # speed_command[i] = -33.5
+
+ # sim.data.ctrl[i] = speed_command[i]
+
+ #sim.data.ctrl[:] = k / 10
+
+ #print(joint_name, sim.data.get_joint_qpos(joint_name), sim.data.get_joint_qvel(joint_name))
+ sim.step()
+ viewer.render()
+ #print(" ")
+
+ if os.getenv('TESTING') is not None:
+ break