forked from tangger/lerobot
chore(mypy-compliant): Ensure the model module passes MyPy type checks (#1782)
* feat(mypy-compliant): Ensure the model module passes MyPy type checks * fix * uncomment pyproject.toml for model module * fix * fix --------- Co-authored-by: Adil Zouitine <adilzouitinegm@gmail.com> Co-authored-by: Steven Palma <imstevenpmwork@ieee.org>
This commit is contained in:
@@ -282,7 +282,6 @@ ignore_errors = true
|
|||||||
|
|
||||||
[[tool.mypy.overrides]]
|
[[tool.mypy.overrides]]
|
||||||
module = "lerobot.envs.*"
|
module = "lerobot.envs.*"
|
||||||
# Enable type checking only for the envs module
|
|
||||||
ignore_errors = false
|
ignore_errors = false
|
||||||
|
|
||||||
|
|
||||||
@@ -298,9 +297,9 @@ ignore_errors = false
|
|||||||
# module = "lerobot.optim.*"
|
# module = "lerobot.optim.*"
|
||||||
# ignore_errors = false
|
# ignore_errors = false
|
||||||
|
|
||||||
# [[tool.mypy.overrides]]
|
[[tool.mypy.overrides]]
|
||||||
# module = "lerobot.model.*"
|
module = "lerobot.model.*"
|
||||||
# ignore_errors = false
|
ignore_errors = false
|
||||||
|
|
||||||
# [[tool.mypy.overrides]]
|
# [[tool.mypy.overrides]]
|
||||||
# module = "lerobot.processor.*"
|
# module = "lerobot.processor.*"
|
||||||
|
|||||||
@@ -22,18 +22,18 @@ class RobotKinematics:
|
|||||||
self,
|
self,
|
||||||
urdf_path: str,
|
urdf_path: str,
|
||||||
target_frame_name: str = "gripper_frame_link",
|
target_frame_name: str = "gripper_frame_link",
|
||||||
joint_names: list[str] = None,
|
joint_names: list[str] | None = None,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Initialize placo-based kinematics solver.
|
Initialize placo-based kinematics solver.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
urdf_path: Path to the robot URDF file
|
urdf_path (str): Path to the robot URDF file
|
||||||
target_frame_name: Name of the end-effector frame in the URDF
|
target_frame_name (str): Name of the end-effector frame in the URDF
|
||||||
joint_names: List of joint names to use for the kinematics solver
|
joint_names (list[str] | None): List of joint names to use for the kinematics solver
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
import placo
|
import placo # type: ignore[import-not-found] # C++ library with Python bindings, no type stubs available. TODO: Create stub file or request upstream typing support.
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
raise ImportError(
|
raise ImportError(
|
||||||
"placo is required for RobotKinematics. "
|
"placo is required for RobotKinematics. "
|
||||||
@@ -52,7 +52,7 @@ class RobotKinematics:
|
|||||||
# Initialize frame task for IK
|
# Initialize frame task for IK
|
||||||
self.tip_frame = self.solver.add_frame_task(self.target_frame_name, np.eye(4))
|
self.tip_frame = self.solver.add_frame_task(self.target_frame_name, np.eye(4))
|
||||||
|
|
||||||
def forward_kinematics(self, joint_pos_deg):
|
def forward_kinematics(self, joint_pos_deg: np.ndarray) -> np.ndarray:
|
||||||
"""
|
"""
|
||||||
Compute forward kinematics for given joint configuration given the target frame name in the constructor.
|
Compute forward kinematics for given joint configuration given the target frame name in the constructor.
|
||||||
|
|
||||||
@@ -77,8 +77,12 @@ class RobotKinematics:
|
|||||||
return self.robot.get_T_world_frame(self.target_frame_name)
|
return self.robot.get_T_world_frame(self.target_frame_name)
|
||||||
|
|
||||||
def inverse_kinematics(
|
def inverse_kinematics(
|
||||||
self, current_joint_pos, desired_ee_pose, position_weight=1.0, orientation_weight=0.01
|
self,
|
||||||
):
|
current_joint_pos: np.ndarray,
|
||||||
|
desired_ee_pose: np.ndarray,
|
||||||
|
position_weight: float = 1.0,
|
||||||
|
orientation_weight: float = 0.01,
|
||||||
|
) -> np.ndarray:
|
||||||
"""
|
"""
|
||||||
Compute inverse kinematics using placo solver.
|
Compute inverse kinematics using placo solver.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user