ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Schunk_svh_driver: how stop the motors if they touch an object?

asked 2015-05-04 01:48:07 -0600

Alba gravatar image

updated 2015-05-04 01:50:03 -0600

I want that the motor stops if it touches an object, during the contact the motor reach a current limit (isn't it?) but the motors don't stop. Why? And is it possible to know values of actual current?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2015-06-06 08:48:07 -0600

heppner gravatar image

Hey Alba,

the fingers are controlled by a cascade of position and current controller. The position error is compensated by increasing the current on the motor (current controller) in order to accelerate it. As the target position of the grasp is most likely inside the object you want to grasp the finger can not reach that target and ramps up the current to get there. That is the desired behaviour as this allows you to exert force on an object. If you do not do this, the fingers would not exert force on the object and in turn would not be able to hold it.

You can read out the actual current values via the drivers API , more specifically the get_current call. Currently the ROS node does not publish the current values but it is a feature I am planning to add.

You could disable the channel, however the fingers would go limb and you would loose the object. Another option is to set the target position of the finger to the current position is has when the object is grasped. This will keep the finger in place, only exerting force when it is pushed out of this position. This might however result in a very loose grip.

Hope this answers your questions. Best Regards Georg

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2015-05-04 01:48:07 -0600

Seen: 174 times

Last updated: Jun 06 '15