How can I display points clouds in rviz in a different frame than the camera frame? Or: Is the camera calibration very inaccurate?
I am trying to learn how to do hand-eye camera calibration appropriately. To that end, I would like to display the point clouds generated from the camera in rviz and check if they line up with the coordinate system of the robot.
At the moment, the point cloud, the camera coordinate frame and the robot base frame look as follows:
As can be seen in the point cloud, the displayed point cloud "hangs in the air" although it should be on the floor as the robot coordinate system is. The transform between the camera coordinate frame and the robot coordinate frame resembles (with some good-will) my own impressions.
After having gone through this process a few questions emerged:
- Do I need to transform the point clouds from the camera coordinate frame to the robot base myself and publish them on a separate topic and then display them in rviz to check of the calibration is accurate?
- Does rviz already transform point clouds itself (I am running already a broadcaster for the transform on a different node) and does the poor quality of the picture indicate that the calibration is off?
- What are usual steps to check if hand-eye calibration is done well?
I am grateful for any hints or suggestions!
Asked by fabian on 2021-01-31 06:18:33 UTC
Comments
Quick comment:
frame_id
set to something which can be reached frombase_link
and includes your calibrated transformwhether your calibration is of sufficient quality I can't say. I don't know enough of what you are capturing, what we're seeing in the screenshot and whether "the rest" of your system is setup correctly.
Asked by gvdhoorn on 2021-01-31 06:24:25 UTC
Thank you so much, @gvdhoorn! Your comments helped me a lot. The self-reference in step 3 is an excellent idea! I will do that next and try to understand the results.
Asked by fabian on 2021-01-31 08:06:37 UTC