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() |