Skip to content

Real robot has consistent pose offset on non-Cartesian motions, but Cartesian path is accurate #430

Description

@keybook2016

Describe the feature you want

Hi all,

I’m debugging a systematic pose error on the real OpenArm and would like to ask whether OpenArm has an official / recommended place to calibrate this.

I already finished the overall grasping workflow. In RViz / simulation, the pose error is almost zero. On the real robot, however, I see a clear and consistent fixed offset.

What I observed:

When using a Cartesian path, the real robot error is very small
When using a non-Cartesian path, a stable fixed offset appears
I could add compensation in my own code, but I would prefer not to do that if OpenArm already has a proper calibration / tuning place for this

From my real robot logs (pose_compare_20260323.csv), the error looks systematic rather than random.

By stage:

MOVE_TO_PREGRASP
hand error: ~59.4 mm, 7.40°
tcp error: ~67.8 mm, 7.41°
CARTESIAN_APPROACH
hand error: ~53.0 mm, 7.65°
tcp error: ~61.8 mm, 7.65°
RETREAT
hand error: ~56.6 mm, 8.77°
tcp error: ~66.0 mm, 8.72°

The xyz error pattern is also very consistent across multiple runs:

x: about -11 to -17 mm
y: about -26 to -37 mm
z: about -42 to -47 mm

So the real end-effector is consistently landing on the same side of the target, especially lower in z.

This makes me think the root cause is more likely related to something like:

joint zero / mastering / calibration
URDF not matching the real robot
joint state -> FK mismatch
base frame or end-effector frame systematic offset

rather than just grasp-pipeline parameters like:

pregrasp_distance
goal_position_tolerance

I also already confirmed that in simulation, tightening the tolerances can achieve near-mm accuracy, so this does not look like just a planning tolerance issue.

My main question is:

In OpenArm, is there a dedicated / recommended place to tune this kind of real-robot systematic offset, instead of adding manual compensation in task-level code?

Any suggestions on where to check first would be greatly appreciated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Fields

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions