Kinovarobotics / ros2_kortex

ROS2 driver for the Gen3 Kinova robot arm
Other
44 stars 39 forks source link

Add force and velocity hardware interfaces #204

Closed pac48 closed 5 months ago

pac48 commented 8 months ago

This PR adds ros2_control command interfaces to configure the gripper velocity and max effort. The plan is to deprecate the current gripper controller in ros2_control and replace it with a new one that supports position, velocity, and effort commands. See this PR for more details: https://github.com/ros-controls/ros2_controllers/pull/1002

moriarty commented 7 months ago

@pac48 is this change blocked by any other upstream changes?

Will this change be backwords compatible with humble/iron/rolling because on this main is bloomed to all versions

pac48 commented 7 months ago

I'm not following how this works. How do the controller settings use_effort_interface and use_speed_interface get used by hardware_interface.cpp?

Can we please also add some docs to educate users about how this system works?

So the use_effort_interface and use_speed_interface parameters tell the antipodal gripper controller whether or not it should claim the {joint_name}/gripper_effort and {joint_name}/gripper_speed. This is optional since not all grippers offer these interfaces. The the controller will work with or without it.

MarqRazz commented 7 months ago

But you can still claim the position interface and adjust the max velocity or effort right? As far as I know you can't control the Robotiq with velocity so that interface is not available.

pac48 commented 7 months ago

But you can still claim the position interface and adjust the max velocity or effort right? As far as I know you can't control the Robotiq with velocity so that interface is not available.

You have to claim the position interface to make the gripper move. The anitpodal gripper controller claims the position interface regardless of whether these new interfaces are specified. If you want to control the target speed and max effort, then you can claim the gripper_speed and gripper_effort. If you only claimed the gripper_speed, you cannot control the gripper. In summary, you either claim only position or claim position plus some combination of gripper_speed and gripper_effort.

adlarkin commented 7 months ago

@pac48, can you capture the discussion above about the functionality in a README or something like that? That way, when users visit this code later, they can have their questions answered by a doc in the repo instead of having to find the relevant PR.

pac48 commented 7 months ago

@pac48, can you capture the discussion above about the functionality in a README or something like that? That way, when users visit this code later, they can have their questions answered by a doc in the repo instead of having to find the relevant PR.

Okay, I added a README to explain the interfaces.

marioprats commented 7 months ago

This change requires https://github.com/ros-controls/ros2_controllers/pull/1002 to go in first right? Maybe mark as draft to indicate it shouldn't be merged it yet!

pac48 commented 7 months ago

This change requires ros-controls/ros2_controllers#1002 to go in first right? Maybe mark as draft to indicate it shouldn't be merged it yet!

@marioprats Actually, we forked ros2_controllers for now. We can build from the source until the PR goes in. It might take a while.