Skip to content

robotiq_description: sim goals abort as stalled when the simulator publishes no joint velocities #63

Description

@ebarnett3

What happened

With sim_isaac:=true, every gripper_cmd goal that takes longer than 0.5 s is ABORTED with stalled: true / reached_goal: false when the simulator's JointState carries no velocity array, even though the fingers are moving and reach the commanded position.

Regression from #52 (912cd2f): config/robotiq_controllers.sim.yaml and the Humble variant set allow_stalling: false so that a genuine stall on an object aborts instead of succeeding. But parallel_gripper_action_controller decides "stalled" purely from the velocity state: outside goal_tolerance, it resets its timer only while |velocity| > stall_velocity_threshold (0.05) and marks the goal stalled once stall_timeout (0.5 s) elapses without that. topic_based_ros2_control leaves the velocity state at 0 when the incoming JointState.velocity is empty, so on such a simulator the timer never resets and the goal aborts at 0.5 s regardless of the fingers' progress. Before 912cd2f the same goals were reported SUCCEEDED (mislabelled, as in #29); now they fail outright.

Reproduced on Jazzy with a stand-in simulator that tracks /isaac_joint_commands at 0.5 rad/s and publishes /isaac_joint_states (2F-85, closed → 0.1 rad, a 1.4 s move):

simulator publishes result
positions only ABORTED, stalled: true, reached_goal: false after ~0.5 s
positions + velocities SUCCEEDED, reached_goal: true

Isaac Sim's joint-state publisher includes velocities by default, which is why #52's live test passed; any simulator, bridge or recording that omits them hits this. The velocity state interface is mandatory in the controller (on_activate errors without it), so it cannot be dropped from state_interfaces to sidestep the detector.

Related: #29 (driver reports velocity 0 → same detector misfires on hardware; the gOBJ route proposed there does not exist on the sim path).

ROS distro

Jazzy

Hardware

sim_isaac:=true with topic_based_ros2_control 0.3.0, no gripper

Setup

source build on Ubuntu, ~/robotiq/devel/ros at 84c0ffc (main after #52)

Exact command

ros2 launch robotiq_description robotiq_control.launch.py sim_isaac:=true gripper_model:=2f_85
ros2 action send_goal /robotiq_gripper_controller/gripper_cmd control_msgs/action/ParallelGripperCommand "{command: {name: ['robotiq_85_left_knuckle_joint'], position: [0.1]}}"

Console output

stalled: true
reached_goal: false
Goal finished with status: ABORTED

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions