diff --git a/CHANGELOG.md b/CHANGELOG.md index 23b871ea..2391353f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,11 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] -- Unit testing inertia validity and projected rotation inertial to the fully-physical consistent set in https://github.com/Gepetto/example-robot-data/pull/370 -- Installing example-robot-data without hppfcl in https://github.com/Gepetto/example-robot-data/pull/338 +### Added + +- Unit testing inertia validity and projected rotation inertial to the fully-physical consistent set ([#370](https://github.com/Gepetto/example-robot-data/pull/370)) +- Installing example-robot-data without hppfcl ([#338](https://github.com/Gepetto/example-robot-data/pull/338)) - ROS: jrl_cmakemodules dependency ([#330](https://github.com/Gepetto/example-robot-data/pull/330)) - Added Centauro ([#346](https://github.com/Gepetto/example-robot-data/pull/346)) +### Changed +- Use coal instead of hppfcl ([#374](https://github.com/Gepetto/example-robot-data/pull/374)) + ## [4.4.0] - 2025-09-29 - The default git branch is now devel diff --git a/package.xml b/package.xml index 0b125ac3..a355d5b0 100644 --- a/package.xml +++ b/package.xml @@ -22,6 +22,7 @@ jrl_cmakemodules python3 python3-numpy + coal pinocchio pinocchio diff --git a/python/example_robot_data/panda.py b/python/example_robot_data/panda.py index 97c0b06e..aac317fd 100644 --- a/python/example_robot_data/panda.py +++ b/python/example_robot_data/panda.py @@ -4,9 +4,9 @@ import pinocchio as pin try: - import hppfcl as fcl + import coal except ImportError: - fcl = None + coal = None from .utils import RobotLoader, getModelPath @@ -30,10 +30,10 @@ def __init__(self, verbose=False): root = getModelPath(self.path) self.robot.urdf = join(root, self.path, self.urdf_subpath, self.urdf_filename) - # If hppfcl is not available, gracefully skip collision edits - if fcl is None or not getattr(pin, "WITH_HPP_FCL", True): + # If coal is not available, gracefully skip collision edits + if coal is None or not getattr(pin, "WITH_COLLISION", True): print( - "[PandaLoaderCollision] hppfcl not available - skipping collision geometry processing." + "[PandaLoaderCollision] coal not available - skipping collision geometry processing." ) return @@ -46,14 +46,14 @@ def __init__(self, verbose=False): base_name = "_".join(geom_object.name.split("_")[:-1]) # Convert cylinders to capsules - if isinstance(geometry, fcl.Cylinder): + if isinstance(geometry, coal.Cylinder): name = self.generate_capsule_name(base_name, list_names_capsules) list_names_capsules.append(name) capsule = pin.GeometryObject( name=name, parent_frame=int(geom_object.parentFrame), parent_joint=int(geom_object.parentJoint), - collision_geometry=fcl.Capsule( + collision_geometry=coal.Capsule( geometry.radius, geometry.halfLength ), placement=geom_object.placement, @@ -63,7 +63,7 @@ def __init__(self, verbose=False): self.robot.collision_model.removeGeometryObject(geom_object.name) # Remove spheres associated with links - elif isinstance(geometry, fcl.Sphere) and "link" in geom_object.name: + elif isinstance(geometry, coal.Sphere) and "link" in geom_object.name: self.robot.collision_model.removeGeometryObject(geom_object.name) # Recreate collision data since the collision pairs changed diff --git a/python/example_robot_data/utils.py b/python/example_robot_data/utils.py index 4f45b43b..2f4b6163 100644 --- a/python/example_robot_data/utils.py +++ b/python/example_robot_data/utils.py @@ -130,7 +130,7 @@ def __init__(self, verbose=False): self.ref_posture, ) - if pin.WITH_HPP_FCL and pin.WITH_HPP_FCL_BINDINGS: + if pin.WITH_COLLISION: # Add all collision pairs self.robot.collision_model.addAllCollisionPairs()