orbbec / ros_astra_camera

ROS wrapper for Astra camera
Apache License 2.0
67 stars 27 forks source link

[when doing eye-in-base calibration], [the camera astra mini pro's intrinsic matrix seems wrong] #210

Open Tianyi20 opened 1 month ago

Tianyi20 commented 1 month ago

Dear author, It seems the camera is wrong calibrated in its driver. I would appreciate if you could help me!!

Currently, i am using the easy-hand-eye clibration repository to do eye-in-base calibration. However, I find the orbecca's camera can get a very wrong calibration result, in which the translation result is nearlly three times the ground true data, but the rotation is nearlly correct.

Here is my result, i have nearlly let the end of effector of my arm to attach the camera. But in RVIZ, it shows the camera is long away to the robot arm. But what suprising me, is the rotation is nearlly accurate. But translation result is very bad.

Screenshot from 2024-10-08 19-05-53

unnamed 93067a93b246)

However, when i try to use realsense DB435 camera to do the same calibration method. The result is completely correct!!! However, when i try to use realsense DB435 camera to do the same calibration method. The result is completely correct!!!

As a result, i have a insight to the camera's published intrinsic matrix and also the resolution:

8fa2ad83532c6c95f55a887ada3acf9

The resolution and the intrinsic matrix are corresponded and seems very correct.

Then i try to debug the distrance between the camera and the aurco marker:

  1. Here is the orbecca camera to detect the distance to the aurco marker f638f0503add07fc9077505e315e60f

  2. Here is the realsense DB435 camera to detect the distance to the aurco marker. (The realsense camera is sticked to the upward of orbecca astra) d635c0f84eff0288fe03b5c56a746cc

What i find riduculous here is the realsense DB435 result is correct, however, the orbecca astra's translation in Z-axis result seems to be three times bigger than the truth data.

Here is the roslaunch file i used.

<include file="$(find astra_camera)/launch/astra.launch" >
</include>

<!-- start ArUco -->

<node name="aruco_tracker" pkg="aruco_ros" type="single">
    <remap from="/camera_info" to="/camera/color/camera_info" />
    <remap from="/image" to="/camera/color/image_raw" />
    <param name="image_is_rectified" value="true"/>
    <param name="marker_size"        value="$(arg marker_size)"/>
    <param name="marker_id"          value="$(arg marker_id)"/>
    <param name="reference_frame"    value="camera_color_optical_frame"/>
    <param name="camera_frame"       value="camera_color_optical_frame"/>
    <param name="marker_frame"       value="camera_marker" />
</node>

I have no idea why the color intrinsic matrix seems to be good, but the result seems to be three times wrong scale in tranlation Z-axis. Do you know what is the issue here? Is it possible that the camera is wrong pre-calibrated when manufacturing??

The original issue you can find in: https://github.com/IFL-CAMP/easy_handeye/issues/143.