Skip to content

GripperCommand action requests wrong positions #2232

@TheUncivil

Description

@TheUncivil

Description

I'm trying to set up MoveIt to use a custom gripper, which will be operated using a GripperCommand action. Moveit only needs to call the action to move the gripper to one of two predefined positions, after which my driver should handle the rest. However, the positions requested by MoveIt are incorrect in two ways:

  • The requested positions do not correspond to my defined positions at all. I've defined the positions simply as 1 and 0, but MoveIt instead requests huge numbers (upwards of a million, sometimes in the negative).
  • The requested positions do not change when MoveIt requests a different state. Instead, MoveIt will always request the same number (though the exact number changes between runs), regardless of which state it is trying to request.

The gripper is a suction gripper, but I've implemented it by including a 'virtual' joint (which doesn't actually exist) in my urdf. Position requests to this joint determine whether the suction cup is turned on or off. MoveIt receives no feedback regarding its state, ideally I'd like it to simply request its state and have the gripper report whether it successfully assumed a requested state.

I've configured my system using the MoveIt setup assistant.

Environment

  • ROS Distro: Humble
  • OS Version: Ubuntu 22.04
  • Binary build?
  • 2.5.4-alpha
  • Cyclone DDS (I think)

Steps to reproduce

  • Set up a suction gripper in a robot URDF of your choice, including a virtual joint
  • Set up the virtual joint as a separate planning group, linked to a GripperActionController
  • Set up predefined positions for your gripper (mine are 'active' and 'inactive', with respective positional values of 1 and 0)
  • Load your robot + gripper in moveit
  • Manually select your gripper planning group and request it assume one of the defined states
  • Monitor the GripperCommand action to check the position requested by MoveIt

Expected behaviour

MoveIt should request a positional value matching the requested state as defined in the configs.

Actual behaviour

MoveIt requests oddly large values not at all matching the requested state as defined in the configs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions