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

Revision history [back]

click to hide/show revision 1
initial version

I just load the plugin, as it is in the example .it shows that the plugin being loaded and after the simulation starts, I expected it to just apply the force whenever I make contact between left_end_effector and any link, but it doesnt work

No, that is not how the plugin is intended to work: the source isn't too pretty, but here the plugin creates two std_srvs::Empty services called on and off. Those are to be used to the vacuum on, and to turn it off again. Only in the on state will the 'gripper' exert a force on any other links that are close to it (see these lines that calculate the force).

So the workflow for this plugin is as follows (for a pick-and-place kind of application fi):

  1. put virtual vacuum gripper close to to-be-gripped object (or really: link)
  2. call the on service to "activate suction" (start exerting force on the close-by link)
  3. move the vacuum gripper somewhere else
  4. call the off service to "deactivate suction"

After the last step, the object should no longer be attached to the vacuum gripper link.

Again thank you so much gvhoorn, how can I call this "on service"?

Do a rosservice list to show you where the service is exactly located, then use rosservice call /path/to/service <tab tab> to auto-complete the request. std_srvs::Empty services don't need any input arguments, so the request should be empty.

You can of course also call these services in a regular C++ or Python program using a Service Client (C++ tutorial, Python tutorial).

I just load the plugin, as it is in the example .it shows that the plugin being loaded and after the simulation starts, I expected it to just apply the force whenever I make contact between left_end_effector and any link, but it doesnt work

No, that is not how the plugin is intended to work: the works.

The C++ source isn't too pretty, but here the plugin creates two std_srvs::Empty services called on and off. Those are to be used to the vacuum on, and to turn it off again. Only in the on state will the 'gripper' exert a force on any other links that are close to it (see these lines that calculate the force).

So the workflow for this plugin is as follows (for a pick-and-place kind of application fi):

  1. put virtual vacuum gripper close to to-be-gripped object (or really: link)
  2. call the on service to "activate suction" (start exerting force on the close-by link)
  3. move the vacuum gripper somewhere else
  4. call the off service to "deactivate suction"

After the last step, the object should no longer be attached to the vacuum gripper link.

Again thank you so much gvhoorn, how can I call this "on service"?

Do a rosservice list to show you where the service is exactly located, then use rosservice call /path/to/service <tab tab> to auto-complete the request. std_srvs::Empty services don't need any input arguments, so the request should be empty.

You can of course also call these services in a regular C++ or Python program using a Service Client (C++ tutorial, Python tutorial).

I just load the plugin, as it is in the example .it shows that the plugin being loaded and after the simulation starts, I expected it to just apply the force whenever I make contact between left_end_effector and any link, but it doesnt work

No, that is not how the plugin works.

The C++ source isn't too pretty, but here the plugin creates two std_srvs::Empty services called on and off. Those are to be used to You can use those to turn the vacuum on, and to turn it off again. Only in the on state will the 'gripper' exert a force on any other links that are close to it (see these lines that calculate the force).

So the workflow for this plugin is as follows (for a pick-and-place kind of application fi):

  1. put virtual vacuum gripper close to to-be-gripped object (or really: link)
  2. call the on service to "activate suction" (start exerting force on the close-by link)
  3. move the vacuum gripper somewhere else
  4. call the off service to "deactivate suction"

After the last step, the object should no longer be attached to the vacuum gripper link.

Again thank you so much gvhoorn, how can I call this "on service"?

Do a rosservice list to show you where the service is exactly located, then use rosservice call /path/to/service <tab tab> to auto-complete the request. std_srvs::Empty services don't need any input arguments, so the request should be empty.

You can of course also call these services in a regular C++ or Python program using a Service Client (C++ tutorial, Python tutorial).

I just load the plugin, as it is in the example .it shows that the plugin being loaded and after the simulation starts, I expected it to just apply the force whenever I make contact between left_end_effector and any link, but it doesnt work

No, that is not how the plugin works.

The C++ source isn't too pretty, but here the plugin creates two std_srvs::Empty services called on and off. You can use those to turn the vacuum on, and to turn it off again. Only in the on state will the 'gripper' exert a force on any other links that are close to it (see these lines that calculate the force).

So the workflow for this plugin is as follows (for a pick-and-place kind of application fi):

  1. put virtual vacuum gripper close to to-be-gripped object (or really: link)
  2. call the on service to "activate suction" (start exerting force on the close-by link)
  3. move the vacuum gripper somewhere else
  4. call the off service to "deactivate suction"

After the last step, the object should no longer be attached to the vacuum gripper link.

Again thank you so much gvhoorn, how can I call this "on service"?

Do a rosservice list to show you where the service is exactly located, then use rosservice call /path/to/service <tab tab> to auto-complete the request. std_srvs::Empty services don't need any input arguments, so the request should be empty.

You can of course also call these services in a regular C++ or Python program using a Service Client (C++ tutorial, Python tutorial).

I just load the plugin, as it is in the example .it shows that the plugin being loaded and after the simulation starts, I expected it to just apply the force whenever I make contact between left_end_effector and any link, but it doesnt work

No, that is not how the plugin works.

The C++ source isn't too pretty, but here the plugin creates two std_srvs::Empty services called on and off. You can use those to turn the vacuum on, and to turn it off again. Only in the on state will the 'gripper' exert a force on any other links that are close to it (see these lines that calculate the force).

So the workflow for this plugin is as follows (for a pick-and-place kind of application fi):

  1. put virtual vacuum gripper close to to-be-gripped object (or really: link)
  2. call the on service to "activate suction" (start exerting force on the close-by link)
  3. move the vacuum gripper somewhere else
  4. call the off service to "deactivate suction"

After the last step, the object should no longer be attached to the vacuum gripper link.

Again thank you so much gvhoorn, how can I call this "on service"?

Do a rosservice list to show you where the service is exactly located, then use rosservice call /path/to/service <tab tab> to auto-complete the request. std_srvs::Empty services don't need any input arguments, so the request should be empty.

You can of course also call these services in a regular C++ or Python program using a Service Client (C++ tutorial, Python tutorial).

, but use a std_srvs::Empty service client).