Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solution is off in translation along one Axis #89

Open
ivadimi opened this issue May 21, 2021 · 1 comment
Open

Solution is off in translation along one Axis #89

ivadimi opened this issue May 21, 2021 · 1 comment

Comments

@ivadimi
Copy link

ivadimi commented May 21, 2021

Description
Visually solutions appear to be correct in regards to orientation. However they are always off by some translation along the z Axis.
In the screenshot below the camera should be closer to link_5_b along the z Axis.

example_

Configuration

  • Ros Melodic
  • OpenCV 3.2 w/Charuco board
  • Realsense d435 (color stream)
  • Yaskawa GP12 Robot Arm
  • Camera is rigidly attached to link_5_b (so it has 5 DOF instead of 6)
  • Samples taken, 15-20;

What could be potentially the cause of this?

@JStech
Copy link
Contributor

JStech commented May 22, 2021

Calibrating with 5 DoF is harder, depending on the specifics of the robot--if there's a joint arrangement that gives you full 3 DoF in rotation, then you should be able to get a good calibration.

Were you able to rotate around the X and Y axes of the optical frame? Those rotations will make the Z translation observable.

Without going into too much detail (I plan to make a blog post with proper citations once I get the chance), here are the general rules to getting a good calibration:

  1. Keep the camera close to the target. Partial views are fine, as long as the target is still being detected.
  2. Between each sample, be sure to include a large rotation (30 degrees) of the camera/EEF.
  3. Make subsequent rotations around different axes.

My approach is to take the first sample, then apply a large rotation around X, then translate just enough to keep the target in frame and take a second sample. Then repeat, this time rotating around Y for the third sample, and then again around Z for the fourth sample. Then I apply rotations around X and Y, then X and Z, then Y and Z. Then I go back to X and start again until I have ~15 samples. That might not work perfectly for a 5DoF arm, but hopefully you can adapt it somehow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants