@@ -270,84 +270,5 @@ def test_ideal_pd_compute(num_envs, num_joints, device, effort_lim):
270270 )
271271
272272
273- @pytest .mark .parametrize ("num_envs" , [1 , 2 ])
274- @pytest .mark .parametrize ("num_joints" , [1 , 2 ])
275- @pytest .mark .parametrize ("device" , ["cuda:0" , "cpu" ])
276- @pytest .mark .parametrize ("effort_lim" , [None , 300 ])
277- @pytest .mark .parametrize ("dm_speed_effort_gradient" , [None , 100 ])
278- @pytest .mark .parametrize ("dm_max_actuator_velocity" , [None , 200 ])
279- @pytest .mark .parametrize ("dm_velocity_dependent_resistance" , [None , 0.1 ])
280- def test_ideal_drive_model_parameters (
281- num_envs ,
282- num_joints ,
283- device ,
284- effort_lim ,
285- dm_velocity_dependent_resistance ,
286- dm_max_actuator_velocity ,
287- dm_speed_effort_gradient ,
288- ):
289- """Test the computation of the ideal pd actuator."""
290-
291- joint_names = [f"joint_{ d } " for d in range (num_joints )]
292- joint_ids = [d for d in range (num_joints )]
293- stiffness = 200
294- damping = 10
295- actuator_cfg = IdealPDActuatorCfg (
296- joint_names_expr = joint_names ,
297- stiffness = stiffness ,
298- damping = damping ,
299- effort_limit = effort_lim ,
300- dm_velocity_dependent_resistance = dm_velocity_dependent_resistance ,
301- dm_max_actuator_velocity = dm_max_actuator_velocity ,
302- dm_speed_effort_gradient = dm_speed_effort_gradient ,
303- )
304-
305- actuator = actuator_cfg .class_type (
306- actuator_cfg ,
307- joint_names = joint_names ,
308- joint_ids = joint_ids ,
309- num_envs = num_envs ,
310- device = device ,
311- stiffness = actuator_cfg .stiffness ,
312- damping = actuator_cfg .damping ,
313- )
314- desired_pos = 10.0
315- desired_vel = 0.1
316- measured_joint_pos = 1.0
317- measured_joint_vel = - 0.1
318-
319- desired_control_action = ArticulationActions ()
320- desired_control_action .joint_positions = desired_pos * torch .ones (num_envs , num_joints , device = device )
321- desired_control_action .joint_velocities = desired_vel * torch .ones (num_envs , num_joints , device = device )
322- desired_control_action .joint_efforts = torch .zeros (num_envs , num_joints , device = device )
323-
324- expected_comp_joint_effort = stiffness * (desired_pos - measured_joint_pos ) + damping * (
325- desired_vel - measured_joint_vel
326- )
327-
328- computed_control_action = actuator .compute (
329- desired_control_action ,
330- measured_joint_pos * torch .ones (num_envs , num_joints , device = device ),
331- measured_joint_vel * torch .ones (num_envs , num_joints , device = device ),
332- )
333-
334- torch .testing .assert_close (
335- expected_comp_joint_effort * torch .ones (num_envs , num_joints , device = device ), actuator .computed_effort
336- )
337-
338- if effort_lim is None :
339- torch .testing .assert_close (
340- expected_comp_joint_effort * torch .ones (num_envs , num_joints , device = device ), actuator .applied_effort
341- )
342- else :
343- torch .testing .assert_close (
344- effort_lim * torch .ones (num_envs , num_joints , device = device ), actuator .applied_effort
345- )
346- torch .testing .assert_close (
347- actuator .applied_effort ,
348- computed_control_action .joint_efforts ,
349- )
350-
351-
352273if __name__ == "__main__" :
353274 pytest .main ([__file__ , "-v" , "--maxfail=1" ])
0 commit comments