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

How to improve robot position accuracy

asked 2022-09-30 09:18:16 -0500

machina gravatar image

Hello,

I use Moveit with my Franka Emika robot. I find that the position accuracy is not following the tolerence I fix.

My get a shift greater than 2mm. I configure the accuracy that way:

get_goal_joint_tolerance = self.move_group.get_goal_joint_tolerance()
get_goal_orientation_tolerance = self.move_group.get_goal_orientation_tolerance()
get_goal_position_tolerance = self.move_group.get_goal_position_tolerance()
get_goal_tolerance = self.move_group.get_goal_tolerance()
print("get_goal_joint_tolerance=", get_goal_joint_tolerance)
print("get_goal_orientation_tolerance=", get_goal_orientation_tolerance)
print("get_goal_position_tolerance=", get_goal_position_tolerance)
print("get_goal_tolerance=", get_goal_tolerance)
self.move_group.set_goal_orientation_tolerance(0.0001)

Here is the print result:

get_goal_joint_tolerance= 0.0001
get_goal_orientation_tolerance= 0.001
get_goal_position_tolerance= 0.0001
get_goal_tolerance= (0.0001, 0.0001, 0.001)

I set the goal at a position P0 and when I read the position I get more than 2mm shift.

How can I reduce that ?

get_goal_joint_tolerance = self.move_group.get_goal_joint_tolerance()
get_goal_orientation_tolerance = self.move_group.get_goal_orientation_tolerance()
get_goal_position_tolerance = self.move_group.get_goal_position_tolerance()
get_goal_tolerance = self.move_group.get_goal_tolerance()
print("get_goal_joint_tolerance=", get_goal_joint_tolerance)
print("get_goal_orientation_tolerance=", get_goal_orientation_tolerance)
print("get_goal_position_tolerance=", get_goal_position_tolerance)
print("get_goal_tolerance=", get_goal_tolerance)
edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
0

answered 2022-10-01 08:24:44 -0500

Mike Scheutzow gravatar image

updated 2022-10-02 09:50:10 -0500

Your robot arm is a mechanical system, and it may not be capable of doing better. You can not set an arbitrarily small number in software and expect that the robot is able to achieve it.

That said, the positioning of the arm links that you choose to use for the grasp can make this better or worse. The further you make the End Effector reach out horizontally from the base, the worse this metric usually gets (because you are forcing the joint motors to actively work to fight gravity.)

If you have evidence this is a ros software issue, it could be any number of things. To find the cause, you need to run some tests to narrow down the issue:

  • If you command a joint to a specific position, how much error does it have after it stops moving?
  • Are the joint positions being read-back accurately?
  • Is there a problem with the timing of when the joints are told to stop moving (too early or too late)?
  • is there a problem with the Inverse Kinematics (IK) calculation (e.g. an incorrect dimension in the robot model)?
edit flag offensive delete link more

Comments

The franka emika is also controllable with the supplied software DESK. With that software I get better repeatability ans precision.

machina gravatar image machina  ( 2022-10-01 09:23:52 -0500 )edit

That's an important and useful piece of information. I'll add to my answer.

Mike Scheutzow gravatar image Mike Scheutzow  ( 2022-10-02 09:26:58 -0500 )edit

On fact I notice that the repeatability problem happens when I remove thé end effector. However I remove the gripper when I launch the launch command with load_gripper:=false

machina gravatar image machina  ( 2022-10-03 10:52:50 -0500 )edit

Question Tools

2 followers

Stats

Asked: 2022-09-30 09:18:16 -0500

Seen: 224 times

Last updated: Oct 02 '22