diff --git a/embodichain/lab/sim/solvers/opw_solver.py b/embodichain/lab/sim/solvers/opw_solver.py index e64cc99c..e3202597 100644 --- a/embodichain/lab/sim/solvers/opw_solver.py +++ b/embodichain/lab/sim/solvers/opw_solver.py @@ -127,7 +127,7 @@ def set_tcp(self, xpos: np.ndarray): self._tcp_warp = wp.mat44f(self.tcp_xpos) tcp_inv = np.eye(4, dtype=float) tcp_inv[:3, :3] = self.tcp_xpos[:3, :3].T - tcp_inv[:3, 3] = -tcp_inv[:3, :3].T @ self.tcp_xpos[:3, 3] + tcp_inv[:3, 3] = -tcp_inv[:3, :3] @ self.tcp_xpos[:3, 3] self._tcp_inv_warp = wp.mat44f(tcp_inv) def _init_warp_solver(self, cfg: OPWSolverCfg, **kwargs): diff --git a/tests/sim/solvers/test_opw_solver.py b/tests/sim/solvers/test_opw_solver.py index 8153489d..7dae255d 100644 --- a/tests/sim/solvers/test_opw_solver.py +++ b/tests/sim/solvers/test_opw_solver.py @@ -99,7 +99,12 @@ def setup_simulation(self, sim_device): "class_type": "OPWSolver", "end_link_name": "left_link6", "root_link_name": "left_arm_base", - "tcp": [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0.143], [0, 0, 0, 1]], + "tcp": [ + [0, 0, -1, 0], + [0, 1, 0, 0], + [1, 0, 0, 0.143], + [0, 0, 0, 1], + ], "qpos_limits": [ [-2.618, 0.0, -2.967, -1.745, -1.22, -2.0944], [2.618, 3.14159, 0.0, 1.745, 1.22, 2.0944],