@@ -1874,22 +1874,20 @@ def set_dofs_velocity(self, velocity, dofs_idx=None, envs_idx=None, *, skip_forw
18741874
18751875 self ._links_state_cache .clear ()
18761876 if not skip_forward :
1877- kernel_forward_kinematics_links_geoms (
1877+ kernel_forward_velocity (
18781878 envs_idx ,
18791879 links_state = self .links_state ,
18801880 links_info = self .links_info ,
1881- joints_state = self .joints_state ,
18821881 joints_info = self .joints_info ,
18831882 dofs_state = self .dofs_state ,
1884- dofs_info = self .dofs_info ,
1885- geoms_state = self .geoms_state ,
1886- geoms_info = self .geoms_info ,
18871883 entities_info = self .entities_info ,
18881884 rigid_global_info = self ._rigid_global_info ,
18891885 static_rigid_sim_config = self ._static_rigid_sim_config ,
18901886 )
18911887
1892- def set_dofs_position (self , position , dofs_idx = None , envs_idx = None , * , skip_forward = False , unsafe = False ):
1888+ def set_dofs_position (
1889+ self , position , dofs_idx = None , envs_idx = None , * , skip_forward = False , skip_clear_collisions = False , unsafe = False
1890+ ):
18931891 position , dofs_idx , envs_idx = self ._sanitize_1D_io_variables (
18941892 position , dofs_idx , self .n_dofs , envs_idx , skip_allocation = True , unsafe = unsafe
18951893 )
@@ -1907,12 +1905,13 @@ def set_dofs_position(self, position, dofs_idx=None, envs_idx=None, *, skip_forw
19071905 self ._static_rigid_sim_config ,
19081906 )
19091907
1910- self .collider .reset (envs_idx )
1911- self .collider .clear (envs_idx )
1912- if self .constraint_solver is not None :
1913- self .constraint_solver .reset (envs_idx )
1914- self .constraint_solver .clear (envs_idx )
19151908 self ._links_state_cache .clear ()
1909+ if not skip_clear_collisions :
1910+ self .collider .reset (envs_idx )
1911+ self .collider .clear (envs_idx )
1912+ if self .constraint_solver is not None :
1913+ self .constraint_solver .reset (envs_idx )
1914+ self .constraint_solver .clear (envs_idx )
19161915 if not skip_forward :
19171916 kernel_forward_kinematics_links_geoms (
19181917 envs_idx ,
@@ -3708,17 +3707,6 @@ def func_update_cartesian_space(
37083707 rigid_global_info = rigid_global_info ,
37093708 static_rigid_sim_config = static_rigid_sim_config ,
37103709 )
3711- func_forward_velocity (
3712- i_b ,
3713- entities_info = entities_info ,
3714- links_info = links_info ,
3715- links_state = links_state ,
3716- joints_info = joints_info ,
3717- dofs_state = dofs_state ,
3718- rigid_global_info = rigid_global_info ,
3719- static_rigid_sim_config = static_rigid_sim_config ,
3720- )
3721-
37223710 func_update_geoms (
37233711 i_b = i_b ,
37243712 entities_info = entities_info ,
@@ -3766,6 +3754,16 @@ def kernel_step_1(
37663754 static_rigid_sim_config = static_rigid_sim_config ,
37673755 force_update_fixed_geoms = False ,
37683756 )
3757+ func_forward_velocity (
3758+ i_b = i_b ,
3759+ entities_info = entities_info ,
3760+ links_info = links_info ,
3761+ links_state = links_state ,
3762+ joints_info = joints_info ,
3763+ dofs_state = dofs_state ,
3764+ rigid_global_info = rigid_global_info ,
3765+ static_rigid_sim_config = static_rigid_sim_config ,
3766+ )
37693767
37703768 func_forward_dynamics (
37713769 links_state = links_state ,
@@ -3932,6 +3930,16 @@ def kernel_step_2(
39323930 static_rigid_sim_config = static_rigid_sim_config ,
39333931 force_update_fixed_geoms = False ,
39343932 )
3933+ func_forward_velocity (
3934+ i_b = i_b ,
3935+ entities_info = entities_info ,
3936+ links_info = links_info ,
3937+ links_state = links_state ,
3938+ joints_info = joints_info ,
3939+ dofs_state = dofs_state ,
3940+ rigid_global_info = rigid_global_info ,
3941+ static_rigid_sim_config = static_rigid_sim_config ,
3942+ )
39353943
39363944
39373945@ti .kernel (fastcache = gs .use_fastcache )
@@ -3967,6 +3975,41 @@ def kernel_forward_kinematics_links_geoms(
39673975 static_rigid_sim_config = static_rigid_sim_config ,
39683976 force_update_fixed_geoms = True ,
39693977 )
3978+ func_forward_velocity (
3979+ i_b = i_b ,
3980+ entities_info = entities_info ,
3981+ links_info = links_info ,
3982+ links_state = links_state ,
3983+ joints_info = joints_info ,
3984+ dofs_state = dofs_state ,
3985+ rigid_global_info = rigid_global_info ,
3986+ static_rigid_sim_config = static_rigid_sim_config ,
3987+ )
3988+
3989+
3990+ @ti .kernel (fastcache = gs .use_fastcache )
3991+ def kernel_forward_velocity (
3992+ envs_idx : ti .types .ndarray (),
3993+ links_state : array_class .LinksState ,
3994+ links_info : array_class .LinksInfo ,
3995+ joints_info : array_class .JointsInfo ,
3996+ dofs_state : array_class .DofsState ,
3997+ entities_info : array_class .EntitiesInfo ,
3998+ rigid_global_info : array_class .RigidGlobalInfo ,
3999+ static_rigid_sim_config : ti .template (),
4000+ ):
4001+ for i_b_ in range (envs_idx .shape [0 ]):
4002+ i_b = envs_idx [i_b_ ]
4003+ func_forward_velocity (
4004+ i_b = i_b ,
4005+ entities_info = entities_info ,
4006+ links_info = links_info ,
4007+ links_state = links_state ,
4008+ joints_info = joints_info ,
4009+ dofs_state = dofs_state ,
4010+ rigid_global_info = rigid_global_info ,
4011+ static_rigid_sim_config = static_rigid_sim_config ,
4012+ )
39704013
39714014
39724015@ti .func
@@ -5932,7 +5975,6 @@ def kernel_set_links_pos(
59325975 rigid_global_info : array_class .RigidGlobalInfo ,
59335976 static_rigid_sim_config : ti .template (),
59345977):
5935-
59365978 ti .loop_config (serialize = static_rigid_sim_config .para_level < gs .PARA_LEVEL .ALL )
59375979 for i_l_ , i_b_ in ti .ndrange (links_idx .shape [0 ], envs_idx .shape [0 ]):
59385980 i_b = envs_idx [i_b_ ]
@@ -5967,7 +6009,6 @@ def kernel_set_links_quat(
59676009 rigid_global_info : array_class .RigidGlobalInfo ,
59686010 static_rigid_sim_config : ti .template (),
59696011):
5970-
59716012 ti .loop_config (serialize = static_rigid_sim_config .para_level < gs .PARA_LEVEL .ALL )
59726013 for i_l_ , i_b_ in ti .ndrange (links_idx .shape [0 ], envs_idx .shape [0 ]):
59736014 i_b = envs_idx [i_b_ ]
0 commit comments