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

Camera calibration using easy_handeye

asked 2022-09-29 10:12:15 -0600

akumar3.1428 gravatar image

updated 2023-06-18 10:06:02 -0600

lucasw gravatar image

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 ...
(more)
edit retag flag offensive close merge delete

Comments

  1. Please share your launch file, the one calling easy_handeye/launch/calibrate.launch
  2. Please run rosrun tf2_tools view_frames.py in your terminal. It will generate frames.pdf in the current directory. Please convert it to image and share with your question.
ravijoshi gravatar image ravijoshi  ( 2022-09-30 02:39:42 -0600 )edit

You are doing the eye-on-base calibration. Therefore please follow the documentation at https://github.com/IFL-CAMP/easy_hand...

ravijoshi gravatar image ravijoshi  ( 2022-10-05 00:11:09 -0600 )edit

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.

akumar3.1428 gravatar image akumar3.1428  ( 2022-10-05 20:29:17 -0600 )edit

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.

ravijoshi gravatar image ravijoshi  ( 2022-10-05 20:49:56 -0600 )edit

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.

akumar3.1428 gravatar image akumar3.1428  ( 2022-10-05 20:53:13 -0600 )edit

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".

ravijoshi gravatar image ravijoshi  ( 2022-10-05 20:59:34 -0600 )edit

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_IPyou 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.

akumar3.1428 gravatar image akumar3.1428  ( 2022-10-05 21:15:08 -0600 )edit

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

    <!-- start the Realsense435 -->
    <include file="$(find realsense2_camera)/launch/rs_camera.launch" />

as:

    <!-- start the Realsense435 -->
    <include file="$(find realsense2_camera)/launch/rs_camera.launch" >
        <arg name="publish_tf" value="false" />
    </include>

There is no error warning now.

akumar3.1428 gravatar image akumar3.1428  ( 2022-10-11 10:17:05 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2022-10-19 12:16:41 -0600

akumar3.1428 gravatar image

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

    <!-- start the Realsense435 -->
    <include file="$(find realsense2_camera)/launch/rs_camera.launch" />

as:

    <!-- start the Realsense435 -->
    <include file="$(find realsense2_camera)/launch/rs_camera.launch" >
        <arg name="publish_tf" value="false" />
    </include>

There is no error warning now.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2022-09-29 10:12:15 -0600

Seen: 566 times

Last updated: Oct 19 '22