Skip to content

[moveit_resources] Panda joint4 soft upper limit still allows planning beyond the datasheet spec (related to #116) #1098

Description

@147258369ymc

Description

The Panda URDF/SRDF used by MoveIt CI declares panda_joint4 with an upper
soft limit of roughly +0.0175 rad (+1°), whereas the Franka datasheet
specifies the joint4 upper limit at about -0.0698 rad (
-4°). Issue #116
documents this ~5° discrepancy.

This reproducer shows the consequence at the planning layer: the motion
planner commands panda_joint4 to a position that is valid under the (wrong)
URDF limit but outside the datasheet limit [-3.0718, -0.0698] rad.

To Reproduce

docker exec -it moveit_modify bash
source /ros_entrypoint.sh && cd /robofuzz/src
python3 replay_moveit_bug.py \
  --from-log /robofuzz/src/logs/20260618-150444 \
  --case position_joint4 --mode offline

Goal sequence (6 goals, all action-status SUCCESS/ABORT aligned [4,6,4,4,4,4]):

goal x y z
1 0.2968 0.2449 0.4064
2 0.2207 0.0201 0.4907
3 0.2755 -0.2108 0.5855
4 0.4444 -0.3774 0.5840
5 0.6000 -0.4290 0.4879
6 0.6000 -0.3498 0.4054

Expected Behavior

With limits matching the datasheet (joint4 upper = -0.0698 rad), the planner
should never command joint4 above -0.0698 rad.

Actual Behavior

planner desired position for panda_joint4: -0.0423 outside [-3.0718, -0.0698] rad

-0.0423 rad (-2.42°) is above the datasheet upper limit -0.0698 rad
(-4.0°) by ~1.6°, but within the URDF's wrong +0.0175 rad limit — so MoveIt
considers it valid and plans/executes it. The subsequent measured-position
samples confirm the joint dwells in the out-of-spec region for the whole motion
(781 sample points in [-3.94°, -2.42°], all above -4.0°).

Analysis

  • Root cause: data, not code — the Panda position limits in moveit_resources
    do not match the Franka datasheet (exactly Update "robot_model_and_robot_state_tutorial" to ROS2 #116).
  • This reproducer adds: the wrong limit is not merely declared, it is
    actively reached through normal planning, so the spec violation is
    observable end-to-end, not just static config.

Root cause location: moveit_resources Panda description
(panda_arm.urdf.xacro / joint_limits), per #116. Fixed by PR #118 if merged.

Relation to Existing Issues

Duplicate-class of #116.
Filed as a confirming reproducer for the ROS2 Foxy / moveit_core 2.2.3 package
set. Close as duplicate if already resolved on the branch you ship.

Additional Info

  • ROS2 Foxy, moveit_core 2.2.3, moveit_resources Panda config.
  • RoboFuzz's own README notes it suppresses this exact violation via an oracle
    MARGIN so it doesn't drown out other bugs — consistent with this being the
    known, always-triggerable Update "robot_model_and_robot_state_tutorial" to ROS2 #116.
moveit.issue3.joint4.mp4

Metadata

Metadata

Assignees

No one assigned

    Labels

    infrastructureHow the site is built or tested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions