Skip to content

Commit 7c708ba

Browse files
committed
forward kinematics in rigid entity
1 parent 0b8f4dd commit 7c708ba

File tree

1 file changed

+65
-6
lines changed

1 file changed

+65
-6
lines changed

genesis/engine/entities/rigid_entity/rigid_entity.py

Lines changed: 65 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1300,8 +1300,19 @@ def _kernel_inverse_kinematics(
13001300
for i_sample in range(max_samples):
13011301
for _ in range(max_solver_iters):
13021302
# run FK to update link states using current q
1303-
self._solver._func_forward_kinematics_entity(self._idx_in_solver, i_b)
1304-
1303+
self._solver._func_forward_kinematics_entity(
1304+
self._idx_in_solver,
1305+
i_b,
1306+
self._solver.links_state,
1307+
self._solver.links_info,
1308+
self._solver.joints_state,
1309+
self._solver.joints_info,
1310+
self._solver.dofs_state,
1311+
self._solver.dofs_info,
1312+
self._solver.entities_info,
1313+
self._solver._rigid_global_info,
1314+
self._solver._static_rigid_sim_config,
1315+
)
13051316
# compute error
13061317
solved = True
13071318
for i_ee in range(n_links):
@@ -1386,7 +1397,19 @@ def _kernel_inverse_kinematics(
13861397

13871398
if not solved:
13881399
# re-compute final error if exited not due to solved
1389-
self._solver._func_forward_kinematics_entity(self._idx_in_solver, i_b)
1400+
self._solver._func_forward_kinematics_entity(
1401+
self._idx_in_solver,
1402+
i_b,
1403+
self._solver.links_state,
1404+
self._solver.links_info,
1405+
self._solver.joints_state,
1406+
self._solver.joints_info,
1407+
self._solver.dofs_state,
1408+
self._solver.dofs_info,
1409+
self._solver.entities_info,
1410+
self._solver._rigid_global_info,
1411+
self._solver._static_rigid_sim_config,
1412+
)
13901413
solved = True
13911414
for i_ee in range(n_links):
13921415
i_l_ee = links_idx[i_ee]
@@ -1480,7 +1503,19 @@ def _kernel_inverse_kinematics(
14801503
# restore original qpos and link state
14811504
for i_q in range(self.n_qs):
14821505
self._solver.qpos[i_q + self._q_start, i_b] = self._IK_qpos_orig[i_q, i_b]
1483-
self._solver._func_forward_kinematics_entity(self._idx_in_solver, i_b)
1506+
self._solver._func_forward_kinematics_entity(
1507+
self._idx_in_solver,
1508+
i_b,
1509+
self._solver.links_state,
1510+
self._solver.links_info,
1511+
self._solver.joints_state,
1512+
self._solver.joints_info,
1513+
self._solver.dofs_state,
1514+
self._solver.dofs_info,
1515+
self._solver.entities_info,
1516+
self._solver._rigid_global_info,
1517+
self._solver._static_rigid_sim_config,
1518+
)
14841519

14851520
@gs.assert_built
14861521
def forward_kinematics(self, qpos, qs_idx_local=None, links_idx_local=None, envs_idx=None):
@@ -1549,7 +1584,19 @@ def _kernel_forward_kinematics(
15491584
# set new qpos
15501585
self._solver.qpos[qs_idx[i_q_], envs_idx[i_b_]] = qpos[i_b_, i_q_]
15511586
# run FK
1552-
self._solver._func_forward_kinematics_entity(self._idx_in_solver, envs_idx[i_b_])
1587+
self._solver._func_forward_kinematics_entity(
1588+
self._idx_in_solver,
1589+
envs_idx[i_b_],
1590+
self._solver.links_state,
1591+
self._solver.links_info,
1592+
self._solver.joints_state,
1593+
self._solver.joints_info,
1594+
self._solver.dofs_state,
1595+
self._solver.dofs_info,
1596+
self._solver.entities_info,
1597+
self._solver._rigid_global_info,
1598+
self._solver._static_rigid_sim_config,
1599+
)
15531600

15541601
ti.loop_config(serialize=self._solver._para_level < gs.PARA_LEVEL.PARTIAL)
15551602
for i_l_, i_b_ in ti.ndrange(links_idx.shape[0], envs_idx.shape[0]):
@@ -1563,7 +1610,19 @@ def _kernel_forward_kinematics(
15631610
# restore original qpos
15641611
self._solver.qpos[qs_idx[i_q_], envs_idx[i_b_]] = self._IK_qpos_orig[qs_idx[i_q_], envs_idx[i_b_]]
15651612
# run FK
1566-
self._solver._func_forward_kinematics_entity(self._idx_in_solver, envs_idx[i_b_])
1613+
self._solver._func_forward_kinematics_entity(
1614+
self._idx_in_solver,
1615+
envs_idx[i_b_],
1616+
self._solver.links_state,
1617+
self._solver.links_info,
1618+
self._solver.joints_state,
1619+
self._solver.joints_info,
1620+
self._solver.dofs_state,
1621+
self._solver.dofs_info,
1622+
self._solver.entities_info,
1623+
self._solver._rigid_global_info,
1624+
self._solver._static_rigid_sim_config,
1625+
)
15671626

15681627
# ------------------------------------------------------------------------------------
15691628
# --------------------------------- motion planing -----------------------------------

0 commit comments

Comments
 (0)