diff --git a/src/linkerhand_calibration/README.md b/src/linkerhand_calibration/README.md index f51fc83..d90dbd1 100644 --- a/src/linkerhand_calibration/README.md +++ b/src/linkerhand_calibration/README.md @@ -353,7 +353,6 @@ ros2 launch linkerhand_calibration \ hand_type:=left \ serial_number:=G20_LEFT_001 \ camera_extrinsics_file:=/home/lxp/projects/linkerhand_retarget_ros2/config/g20_three_camera_extrinsics.yaml \ - source_urdf_path:=/home/lxp/projects/linkerhand_retarget_ros2/src/linkerhand_retarget/linkerhand_retarget/assets/robots/hands/linker_hand/g20_left/linkerhand_g20_left.urdf \ commands_enabled:=false ``` @@ -376,11 +375,12 @@ ros2 launch linkerhand_calibration \ hand_type:=left \ serial_number:=G20_LEFT_001 \ camera_extrinsics_file:=/home/lxp/projects/linkerhand_retarget_ros2/config/g20_three_camera_extrinsics.yaml \ - source_urdf_path:=/home/lxp/projects/linkerhand_retarget_ros2/src/linkerhand_retarget/linkerhand_retarget/assets/robots/hands/linker_hand/g20_left/linkerhand_g20_left.urdf \ can_interface:=can0 ``` -右手使用同一入口;默认自动选择右手SDK话题和原始URDF: +原始URDF及其mesh随`linkerhand_calibration`安装,默认根据`hand_type`自动选择。 +如需调试其他CAD版本,仍可通过`source_urdf_path:=<绝对路径>`显式覆盖。 +右手使用同一入口,并自动选择右手SDK话题和原始URDF: ```bash ros2 launch linkerhand_calibration \ diff --git a/src/linkerhand_calibration/config/g20_right_product.yaml b/src/linkerhand_calibration/config/g20_right_product.yaml index 43d09bd..99ec4e4 100644 --- a/src/linkerhand_calibration/config/g20_right_product.yaml +++ b/src/linkerhand_calibration/config/g20_right_product.yaml @@ -21,7 +21,7 @@ cameras: camera_info: ~/.ros/camera_info/hikrobot_DB2163739.yaml artifacts: - source_urdf: src/linkerhand_retarget/linkerhand_retarget/assets/robots/hands/linker_hand/g20_right/linkerhand_g20_right.urdf + source_urdf: package://linkerhand_calibration/urdf/g20_right/linkerhand_g20_right.urdf source_urdf_sha256: eeb6ffb0e95d2a6acd4c26331ae68062e0d74160de4b552b4f6d395cce5ca4e8 camera_extrinsics: config/g20_three_camera_extrinsics.yaml camera_extrinsics_sha256: dd623572df3cb83fdefcbe92204dab54a60f2c68eb3a8c9bdb08407e8f0e5d80 diff --git a/src/linkerhand_calibration/launch/three_camera_calibration.launch.py b/src/linkerhand_calibration/launch/three_camera_calibration.launch.py index 06c0831..3c3ef52 100644 --- a/src/linkerhand_calibration/launch/three_camera_calibration.launch.py +++ b/src/linkerhand_calibration/launch/three_camera_calibration.launch.py @@ -27,15 +27,20 @@ VIEWS = ("front", "side", "top") def _default_source_urdf(hand_type: str) -> Path: - relative = Path( - "assets/robots/hands/linker_hand" - ) / f"g20_{hand_type}" / f"linkerhand_g20_{hand_type}.urdf" - workspace = Path.cwd() / "src/linkerhand_retarget/linkerhand_retarget" / relative + relative = ( + Path("urdf") + / f"g20_{hand_type}" + / f"linkerhand_g20_{hand_type}.urdf" + ) + package_source_or_share = Path(__file__).resolve().parents[1] / relative try: - installed = Path(get_package_share_directory("linkerhand_retarget")) / relative + installed = ( + Path(get_package_share_directory("linkerhand_calibration")) + / relative + ) except Exception: - installed = workspace - return workspace if workspace.is_file() else installed + installed = package_source_or_share + return installed if installed.is_file() else package_source_or_share def _launch_stack(context): diff --git a/src/linkerhand_calibration/linkerhand_calibration/compat/paths.py b/src/linkerhand_calibration/linkerhand_calibration/compat/paths.py index 7e17310..375fad4 100644 --- a/src/linkerhand_calibration/linkerhand_calibration/compat/paths.py +++ b/src/linkerhand_calibration/linkerhand_calibration/compat/paths.py @@ -9,15 +9,38 @@ _LEGACY_SOURCE_PREFIX = Path("src/g20_thumb_apriltag_calibration") _CURRENT_SOURCE_PREFIX = Path("src/linkerhand_calibration") +def _resolve_package_uri(value: str, workspace: Path) -> Path | None: + prefix = "package://" + if not value.startswith(prefix): + return None + package_name, separator, relative = value[len(prefix) :].partition("/") + if not separator or not package_name or not relative: + raise ValueError(f"invalid ROS package resource path: {value}") + workspace_candidate = (workspace / "src" / package_name / relative).resolve() + if workspace_candidate.exists(): + return workspace_candidate + try: + from ament_index_python.packages import get_package_share_directory + + package_share = Path(get_package_share_directory(package_name)) + except Exception: + return workspace_candidate + return (package_share / relative).resolve() + + def resolve_renamed_package_path(value: str | Path, workspace: Path) -> Path: - """Resolve a path and remap only the former source-package prefix. + """Resolve workspace paths, ROS package resources and the former prefix. Deployed v1 product YAML files are kept byte-for-byte stable because the artifact paths participate in operational review. Existing paths always - win; the rename mapping is used only when the literal legacy path no - longer exists. + win; package URIs prefer a source-workspace copy, and the rename mapping + is used only when the literal legacy path no longer exists. """ - raw = Path(value).expanduser() + text = str(value).strip() + package_resource = _resolve_package_uri(text, workspace) + if package_resource is not None: + return package_resource + raw = Path(text).expanduser() candidate = raw if raw.is_absolute() else workspace / raw candidate = candidate.resolve() if candidate.exists() or raw.is_absolute(): diff --git a/src/linkerhand_calibration/setup.py b/src/linkerhand_calibration/setup.py index 837b3ec..858656b 100644 --- a/src/linkerhand_calibration/setup.py +++ b/src/linkerhand_calibration/setup.py @@ -1,10 +1,31 @@ from glob import glob +from pathlib import Path from setuptools import find_packages, setup package_name = "linkerhand_calibration" + +def package_data_tree(root: str) -> list[tuple[str, list[str]]]: + """Install a resource tree without flattening relative mesh paths.""" + root_path = Path(root) + directories = [ + root_path, + *sorted(path for path in root_path.rglob("*") if path.is_dir()), + ] + result = [] + for directory in directories: + files = sorted( + str(path) for path in directory.iterdir() if path.is_file() + ) + if files: + result.append( + (str(Path("share") / package_name / directory), files) + ) + return result + + setup( name=package_name, version="0.1.0", @@ -20,7 +41,7 @@ setup( glob("config/*.yaml") + glob("config/*.xml"), ), ("share/" + package_name + "/launch", glob("launch/*.launch.py")), - ], + ] + package_data_tree("urdf"), install_requires=["setuptools", "numpy", "scipy", "PyYAML"], tests_require=["pytest"], zip_safe=True, diff --git a/src/linkerhand_calibration/test/test_config.py b/src/linkerhand_calibration/test/test_config.py index f4fcd9a..cce07b2 100644 --- a/src/linkerhand_calibration/test/test_config.py +++ b/src/linkerhand_calibration/test/test_config.py @@ -7,6 +7,24 @@ import yaml PACKAGE_ROOT = Path(__file__).resolve().parents[1] +def test_package_owns_both_g20_source_urdfs_and_their_meshes() -> None: + for side in ("left", "right"): + urdf = ( + PACKAGE_ROOT + / "urdf" + / f"g20_{side}" + / f"linkerhand_g20_{side}.urdf" + ) + assert urdf.is_file() + root = ElementTree.parse(urdf).getroot() + mesh_paths = { + mesh.attrib["filename"] for mesh in root.findall(".//mesh") + } + assert mesh_paths + assert all(not Path(path).is_absolute() for path in mesh_paths) + assert all((urdf.parent / path).is_file() for path in mesh_paths) + + def test_fastdds_profile_has_capacity_for_full_resolution_images() -> None: root = ElementTree.parse( PACKAGE_ROOT / "config" / "fastdds_large_images.xml" diff --git a/src/linkerhand_calibration/test/test_full_hand.py b/src/linkerhand_calibration/test/test_full_hand.py index 0013256..c6b5b6a 100644 --- a/src/linkerhand_calibration/test/test_full_hand.py +++ b/src/linkerhand_calibration/test/test_full_hand.py @@ -53,9 +53,8 @@ def test_runtime_fit_saturates_at_source_urdf_limit() -> None: ) bounded = clamp_runtime_fits_to_urdf_limits( - Path(__file__).resolve().parents[3] - / "src/linkerhand_retarget/linkerhand_retarget/assets/robots/" - "hands/linker_hand/g20_right/linkerhand_g20_right.urdf", + Path(__file__).resolve().parents[1] + / "urdf/g20_right/linkerhand_g20_right.urdf", {"thumb_cmc_yaw": fit}, )["thumb_cmc_yaw"] @@ -154,9 +153,8 @@ def test_right_19_keeps_four_visual_dip_curves_independent() -> None: {"visual_measurement": 1.0}, ) source_urdf = ( - Path(__file__).resolve().parents[3] - / "src/linkerhand_retarget/linkerhand_retarget/assets/robots/hands/" - "linker_hand/g20_right/linkerhand_g20_right.urdf" + Path(__file__).resolve().parents[1] + / "urdf/g20_right/linkerhand_g20_right.urdf" ) runtime = derive_mimic_passive_fits( diff --git a/src/linkerhand_calibration/test/test_g20_right_product.py b/src/linkerhand_calibration/test/test_g20_right_product.py index 63afc3f..64d5e2e 100644 --- a/src/linkerhand_calibration/test/test_g20_right_product.py +++ b/src/linkerhand_calibration/test/test_g20_right_product.py @@ -213,6 +213,10 @@ def test_product_config_locks_three_cameras_tags_and_artifact_hashes() -> None: assert set(config.cameras) == {"front", "side", "top"} assert len({camera["serial_number"] for camera in config.cameras.values()}) == 3 assert config.source_urdf.is_file() + assert config.source_urdf == ( + REPO + / "src/linkerhand_calibration/urdf/g20_right/linkerhand_g20_right.urdf" + ) assert config.camera_extrinsics.is_file() assert config.calibration_config == ( REPO diff --git a/src/linkerhand_calibration/test/test_package_rename.py b/src/linkerhand_calibration/test/test_package_rename.py index 1ff600f..7a3a6a4 100644 --- a/src/linkerhand_calibration/test/test_package_rename.py +++ b/src/linkerhand_calibration/test/test_package_rename.py @@ -5,6 +5,8 @@ import sys import pytest +from linkerhand_calibration.compat import resolve_renamed_package_path + def test_legacy_python_package_forwards_only_public_config_api() -> None: with pytest.warns(DeprecationWarning, match="linkerhand_calibration"): @@ -36,3 +38,19 @@ def test_new_and_legacy_executable_names_share_one_implementation() -> None: "linkerhand_calibration.runtime.nodes.calibration:main" in setup_text ) + + +def test_package_resource_uri_resolves_to_the_workspace_copy() -> None: + repository = Path(__file__).resolve().parents[3] + expected = ( + repository + / "src/linkerhand_calibration/urdf/g20_right/linkerhand_g20_right.urdf" + ) + + resolved = resolve_renamed_package_path( + "package://linkerhand_calibration/urdf/g20_right/" + "linkerhand_g20_right.urdf", + repository, + ) + + assert resolved == expected diff --git a/src/linkerhand_calibration/test/test_urdf_zero.py b/src/linkerhand_calibration/test/test_urdf_zero.py index d5fbbbf..a2d8835 100644 --- a/src/linkerhand_calibration/test/test_urdf_zero.py +++ b/src/linkerhand_calibration/test/test_urdf_zero.py @@ -46,14 +46,12 @@ from linkerhand_calibration.full_hand import ( ) -REPOSITORY = Path(__file__).resolve().parents[3] -SOURCE_URDF = REPOSITORY / ( - "src/linkerhand_retarget/linkerhand_retarget/assets/robots/hands/" - "linker_hand/g20_left/linkerhand_g20_left.urdf" +PACKAGE_ROOT = Path(__file__).resolve().parents[1] +SOURCE_URDF = PACKAGE_ROOT / ( + "urdf/g20_left/linkerhand_g20_left.urdf" ) -RIGHT_SOURCE_URDF = REPOSITORY / ( - "src/linkerhand_retarget/linkerhand_retarget/assets/robots/hands/" - "linker_hand/g20_right/linkerhand_g20_right.urdf" +RIGHT_SOURCE_URDF = PACKAGE_ROOT / ( + "urdf/g20_right/linkerhand_g20_right.urdf" ) diff --git a/src/linkerhand_calibration/urdf/g20_left/linkerhand_g20_left.urdf b/src/linkerhand_calibration/urdf/g20_left/linkerhand_g20_left.urdf new file mode 100644 index 0000000..9c0c1f1 --- /dev/null +++ b/src/linkerhand_calibration/urdf/g20_left/linkerhand_g20_left.urdf @@ -0,0 +1,1285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/hand_base_link.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/hand_base_link.STL new file mode 100644 index 0000000..706606c Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/hand_base_link.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/index_distal.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/index_distal.STL new file mode 100644 index 0000000..281a53c Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/index_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/index_metacarpals.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/index_metacarpals.STL new file mode 100644 index 0000000..608b860 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/index_metacarpals.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/index_middle.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/index_middle.STL new file mode 100644 index 0000000..9f00fc4 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/index_middle.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/index_proximal.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/index_proximal.STL new file mode 100644 index 0000000..4a4473d Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/index_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/middle_distal.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/middle_distal.STL new file mode 100644 index 0000000..37d5121 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/middle_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/middle_metacarpals.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/middle_metacarpals.STL new file mode 100644 index 0000000..96674b1 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/middle_metacarpals.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/middle_middle.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/middle_middle.STL new file mode 100644 index 0000000..3b17190 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/middle_middle.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/middle_proximal.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/middle_proximal.STL new file mode 100644 index 0000000..80b553d Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/middle_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_distal.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_distal.STL new file mode 100644 index 0000000..8e2e782 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_metacarpals.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_metacarpals.STL new file mode 100644 index 0000000..05a4d03 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_metacarpals.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_middle.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_middle.STL new file mode 100644 index 0000000..afab601 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_middle.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_proximal.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_proximal.STL new file mode 100644 index 0000000..446789a Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/pinky_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/ring_distal.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/ring_distal.STL new file mode 100644 index 0000000..6915e85 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/ring_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/ring_metacarpals.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/ring_metacarpals.STL new file mode 100644 index 0000000..f502969 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/ring_metacarpals.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/ring_middle.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/ring_middle.STL new file mode 100644 index 0000000..88b6ef5 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/ring_middle.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/ring_proximal.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/ring_proximal.STL new file mode 100644 index 0000000..5a06a97 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/ring_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_distal.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_distal.STL new file mode 100644 index 0000000..dc10991 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_metacarpals.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_metacarpals.STL new file mode 100644 index 0000000..156e9b3 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_metacarpals.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_metacarpals_base1.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_metacarpals_base1.STL new file mode 100644 index 0000000..16e1059 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_metacarpals_base1.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_metacarpals_base2.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_metacarpals_base2.STL new file mode 100644 index 0000000..cf5fced Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_metacarpals_base2.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_proximal.STL b/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_proximal.STL new file mode 100644 index 0000000..b657d19 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_left/meshes/thumb_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/linkerhand_g20_right.urdf b/src/linkerhand_calibration/urdf/g20_right/linkerhand_g20_right.urdf new file mode 100644 index 0000000..3d1b6cd --- /dev/null +++ b/src/linkerhand_calibration/urdf/g20_right/linkerhand_g20_right.urdf @@ -0,0 +1,1285 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/hand_base_link.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/hand_base_link.STL new file mode 100644 index 0000000..f277145 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/hand_base_link.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/index_distal.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/index_distal.STL new file mode 100644 index 0000000..b812c38 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/index_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/index_metacarpals.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/index_metacarpals.STL new file mode 100644 index 0000000..a319384 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/index_metacarpals.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/index_middle.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/index_middle.STL new file mode 100644 index 0000000..5ea8f9c Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/index_middle.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/index_proximal.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/index_proximal.STL new file mode 100644 index 0000000..923012e Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/index_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/middle_distal.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/middle_distal.STL new file mode 100644 index 0000000..cd1ee86 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/middle_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/middle_metacarpals.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/middle_metacarpals.STL new file mode 100644 index 0000000..62a6b35 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/middle_metacarpals.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/middle_middle.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/middle_middle.STL new file mode 100644 index 0000000..3b9861b Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/middle_middle.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/middle_proximal.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/middle_proximal.STL new file mode 100644 index 0000000..9febd39 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/middle_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_distal.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_distal.STL new file mode 100644 index 0000000..8f25349 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_metacarpals.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_metacarpals.STL new file mode 100644 index 0000000..64b9b7b Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_metacarpals.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_middle.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_middle.STL new file mode 100644 index 0000000..d1a62f6 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_middle.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_proximal.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_proximal.STL new file mode 100644 index 0000000..d26bc4b Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/pinky_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/ring_distal.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/ring_distal.STL new file mode 100644 index 0000000..9b53ea5 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/ring_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/ring_metacarpals.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/ring_metacarpals.STL new file mode 100644 index 0000000..095a682 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/ring_metacarpals.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/ring_middle.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/ring_middle.STL new file mode 100644 index 0000000..b25525e Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/ring_middle.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/ring_proximal.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/ring_proximal.STL new file mode 100644 index 0000000..7b2a085 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/ring_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_distal.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_distal.STL new file mode 100644 index 0000000..2dbc10f Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_metacarpals.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_metacarpals.STL new file mode 100644 index 0000000..384fd60 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_metacarpals.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_metacarpals_base1.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_metacarpals_base1.STL new file mode 100644 index 0000000..71269cb Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_metacarpals_base1.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_metacarpals_base2.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_metacarpals_base2.STL new file mode 100644 index 0000000..e1c0763 Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_metacarpals_base2.STL differ diff --git a/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_proximal.STL b/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_proximal.STL new file mode 100644 index 0000000..d32cf2d Binary files /dev/null and b/src/linkerhand_calibration/urdf/g20_right/meshes/thumb_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/linkerhand_l6v3.1_right.urdf b/src/linkerhand_calibration/urdf/l6_right/linkerhand_l6v3.1_right.urdf new file mode 100644 index 0000000..58b9f81 --- /dev/null +++ b/src/linkerhand_calibration/urdf/l6_right/linkerhand_l6v3.1_right.urdf @@ -0,0 +1,953 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 0.0084 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 0.0082 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 0.0082 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 0.0082 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 0.0082 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 0.0144 + + + + + + + + + + + + + + + + + 1.5 + 1.5 + true + + + 1.5 + 1.5 + true + + + 1.1 + 1.1 + true + + + 1.1 + 1.1 + true + + + 1.1 + 1.1 + true + + + 1.1 + 1.1 + true + + diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/hand_base_link.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/hand_base_link.STL new file mode 100644 index 0000000..7e120de Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/hand_base_link.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/index_distal.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/index_distal.STL new file mode 100644 index 0000000..88498e1 Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/index_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/index_proximal.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/index_proximal.STL new file mode 100644 index 0000000..8317a27 Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/index_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/middle_distal.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/middle_distal.STL new file mode 100644 index 0000000..c4bad01 Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/middle_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/middle_proximal.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/middle_proximal.STL new file mode 100644 index 0000000..6b1f4ed Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/middle_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/pinky_distal.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/pinky_distal.STL new file mode 100644 index 0000000..b11d56d Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/pinky_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/pinky_proximal.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/pinky_proximal.STL new file mode 100644 index 0000000..0718f2d Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/pinky_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/ring_distal.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/ring_distal.STL new file mode 100644 index 0000000..019bac7 Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/ring_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/ring_proximal.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/ring_proximal.STL new file mode 100644 index 0000000..7ac57c8 Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/ring_proximal.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/thumb_distal.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/thumb_distal.STL new file mode 100644 index 0000000..84c1e50 Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/thumb_distal.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/thumb_metacarpals.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/thumb_metacarpals.STL new file mode 100644 index 0000000..748d580 Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/thumb_metacarpals.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/thumb_metacarpals_base1.STL b/src/linkerhand_calibration/urdf/l6_right/meshes/thumb_metacarpals_base1.STL new file mode 100644 index 0000000..90c93bd Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/thumb_metacarpals_base1.STL differ diff --git a/src/linkerhand_calibration/urdf/l6_right/meshes/wrist_ft_link.stl b/src/linkerhand_calibration/urdf/l6_right/meshes/wrist_ft_link.stl new file mode 100644 index 0000000..e377c27 Binary files /dev/null and b/src/linkerhand_calibration/urdf/l6_right/meshes/wrist_ft_link.stl differ