40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import mujoco
 | |
| import numpy as np
 | |
| import mujoco_viewer
 | |
| from mini_bdx_runtime.rl_utils import mujoco_joints_order
 | |
| 
 | |
| model = mujoco.MjModel.from_xml_path(
 | |
|     "/home/antoine/MISC/mini_BDX/mini_bdx/robots/open_duck_mini_v2/scene.xml"
 | |
| )
 | |
| model.opt.timestep = 0.001
 | |
| data = mujoco.MjData(model)
 | |
| mujoco.mj_step(model, data)
 | |
| viewer = mujoco_viewer.MujocoViewer(model, data)
 | |
| 
 | |
| target = [0] * 16
 | |
| # data.ctrl[:] = np.zeros((16))
 | |
| id = 4
 | |
| max_vel = 0
 | |
| min_vel = 10000
 | |
| while True:
 | |
|     target[id] = 0.2*np.sin(2*np.pi*0.5*data.time)
 | |
|     # target[id] = 0.2
 | |
|     tau = 6.16*(np.array(target) - data.qpos) - 0.1*data.qvel
 | |
|     data.ctrl[:] = tau
 | |
|     for i, joint_name in enumerate(mujoco_joints_order):
 | |
|         if i == id:
 | |
|             pos = np.around(data.qpos[i], 2)
 | |
|             vel =  np.around(data.qvel[i], 2)
 | |
|             # print(f"{joint_name}: pos : {pos}, vel : {vel}")
 | |
|             if vel > max_vel:
 | |
|                 max_vel = vel
 | |
|             
 | |
|             if vel < min_vel:
 | |
|                 min_vel = vel
 | |
| 
 | |
|     print(f"max vel : {max_vel}, min vel : {min_vel}")
 | |
| 
 | |
|     print("==")
 | |
|     mujoco.mj_step(model, data, 15)
 | |
|     viewer.render()
 |