Camera calibration using easy_handeye
Hello, I am new to ROS. I am doing camera on base calibration on my xArm 6 DoF robot using the easy_handeye package. I am getting the following warning:
[ WARN] [1664462278.946062833]: Unable to transform object from frame 'camera_depth_frame' to planning frame 'world' (Could not find a connection between 'world' and 'camera_depth_frame' because they are not part of the same tree.Tf has two or more unconnected trees.) [ WARN] [1664462278.946136600]: Unable to transform object from frame 'camera_link' to planning frame 'world' (Could not find a connection between 'world' and 'camera_link' because they are not part of the same tree.Tf has two or more unconnected trees.) [ WARN] [1664462278.946156523]: Unable to transform object from frame 'camera_depth_optical_frame' to planning frame 'world' (Could not find a connection between 'world' and 'camera_depth_optical_frame' because they are not part of the same tree.Tf has two or more unconnected trees.) [ WARN] [1664462278.946171884]: Unable to transform object from frame 'camera_color_frame' to planning frame 'world' (Could not find a connection between 'world' and 'camera_color_frame' because they are not part of the same tree.Tf has two or more unconnected trees.)
Launch file:
<?xml version="1.0" ?>
<launch>
<!-- Setting calibration namespace -->
<arg name="eye_on_hand" doc="if true, eye-on-hand instead of eye-on-base" />
<arg name="namespace_prefix" default="easy_handeye" doc="the prefix of the namespace the node will run in, and of the folder in which the result will be saved" />
<arg if="$(arg eye_on_hand)" name="namespace" value="$(arg namespace_prefix)_eye_on_hand" doc="the namespace the node will run in, and the folder in which the result will be saved" />
<arg unless="$(arg eye_on_hand)" name="namespace" value="$(arg namespace_prefix)_eye_on_base" doc="the namespace the node will run in, and the folder in which the result will be saved" />
<!-- Automatic robot movements -->
<arg name="freehand_robot_movement" default="false" doc="if false, the rqt plugin for the automatic robot motion with MoveIt! will be started" />
<arg name="move_group_namespace" default="/" doc="the namespace of move_group for the automatic robot motion with MoveIt!" />
<arg name="move_group" default="manipulator" doc="the name of move_group for the automatic robot motion with MoveIt!" />
<arg name="translation_delta_meters" default="0.1" doc="the maximum movement that the robot should perform in the translation phase" />
<arg name="rotation_delta_degrees" default="25" doc="the maximum rotation that the robot should perform" />
<arg name="robot_velocity_scaling" default="0.3" doc="the maximum speed the robot should reach, as a factor of the speed declared in the joint_limits.yaml" />
<arg name="robot_acceleration_scaling" default="0.2" doc="the maximum acceleration the robot should reach, as a factor of the acceleration declared in the joint_limits.yaml" />
<!-- The input reference frames -->
<arg name="robot_base_frame" default="base_link" />
<arg name="robot_effector_frame" default="tool0" />
<arg name="tracking_base_frame" default="tracking_origin" />
<arg name="tracking_marker_frame" default="tracking_target" />
<!-- Publish dummy frames while calibrating -->
<arg name="publish_dummy" default="true" doc="if true, a dummy calibration will be published to keep all frames ...
easy_handeye/launch/calibrate.launch
rosrun tf2_tools view_frames.py
in your terminal. It will generateframes.pdf
in the current directory. Please convert it to image and share with your question.You are doing the eye-on-base calibration. Therefore please follow the documentation at https://github.com/IFL-CAMP/easy_hand...
Greetings, I followed the same procedure, however getting the warning
Unable to transform object from frame 'camera_depth_frame' to planning frame 'world' (Could not find a connection between 'world' and 'camera_depth_frame' because they are not part of the same tree.Tf has two or more unconnected trees.)
I want to use it on real XArm robot. - > https://github.com/xArm-Developer/xar...They have provided the code however I am not sure if I can skip the warning and go ahed with the procedure. Please review https://github.com/xArm-Developer/xar... as I have mentioned screen shorts of the moveit.
The problem is unrelated to the XArm robot. It is sort of a configuration issue. This is why I requested to share the launch file mentioned in their documentation.
Please click more above and you can see I have mentioned the launch file. Please review and thank you in advance for helping me out.
The
frames.pdf
file is looking a bit suspicious to me. I feel that there should be a "camera_link" in between "link_base" and "camera_color_optical_frame".I would like to explain it in more detail so that the question makes more sense to you. The XArm Github consist of a script to calibrate hand on eye calibration (https://github.com/xArm-Developer/xar...) go to 7.2 , by running the following command
$ roslaunch d435i_xarm_setup d435i_xarm_auto_calib.launch robot_dof:=your_xArm_DOF robot_ip:=your_xArm_IP
you can find the launch file at (https://github.com/xArm-Developer/xar...) which is build using easyhandeye pakage ( https://github.com/IFL-CAMP/easy_hand...) . I am simply trying to calibrate hand on eye using this. However, I am doubtful that something is wrong as when you will see in the moveit screen short at (https://github.com/IFL-CAMP/easy_hand...) as camera marker should be on robot however it is not. If you want, I can start a new thread with more details.I tried changing launch file and introduce real-sense to publish tf data . Please go to xarm_vision/d435i_xarm_setup/launch/d435i_auto_calib.launch, and modify the part
There is no error warning now.