Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Polymetis] Gripper stuck #1418

Open
2 of 5 tasks
buoyancy99 opened this issue Jan 14, 2024 · 1 comment
Open
2 of 5 tasks

[Polymetis] Gripper stuck #1418

buoyancy99 opened this issue Jan 14, 2024 · 1 comment

Comments

@buoyancy99
Copy link

buoyancy99 commented Jan 14, 2024

Type of Issue

Select the type of issue:

  • Bug report (to report a bug)
  • Feature request (to request an additional feature)
  • Tracker (I am just using this as a tracker)
  • Refactor request
  • Documentation Ask

Description

A while ago, this issue found an issue when using polymetis to control franka gripper. This is a very critical problem as one cannot control gripper to grasp one object and release it.

This PR offers a partial fix to the issue, but on real robots this doesn't completely solve the problem.

Instead, one should follow the official C++ example from franka to achieve the desired behavior of getting gripper unstuck from previous commands. This example essentially calls gripper.stop() to terminate a previous command that cannot be achieved, whenever a new command is about to be sent.

This requires us to expose the GripperInterface.stop API, so one can call GripperInterface.stop() before GripperInterface.goto or GripperInterface.grasp to get gripper unstuck.

Current Behavior

gripper = GripperInterface()

gripper.grasp(speed=0.5, force=3.0)
# let's say robot grabs a 3cm by 3cm block

gripper.goto(width=0.08, speed=0.5, force=3.0)
# expect the robot to release the object
# the robot actually cannot release the object itself! 
# this is because previous grasp command asks it to go to width=0.0, which cannot be achieved due to the block

Expected Behavior

gripper = GripperInterface()

gripper.grasp(speed=0.5, force=3.0)
# let's say robot grabs a 3cm by 3cm block

gripper.stop()  # this is added by my PR
gripper.goto(width=0.08, speed=0.5, force=3.0)
# expect the robot to release the object

Steps to reproduce

See above

Links to any relevant pastes or documents

official C++ example to teleop gripper grasping from libfranka

@buoyancy99
Copy link
Author

buoyancy99 commented Jan 14, 2024

I've already fixed the bug by exposing a python API, and tested it on hardware to get the desired behavior

see PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant