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

Load rqt_easy_handeye plugin failed #137

Open
julyfun opened this issue Apr 17, 2024 · 7 comments
Open

Load rqt_easy_handeye plugin failed #137

julyfun opened this issue Apr 17, 2024 · 7 comments

Comments

@julyfun
Copy link

julyfun commented Apr 17, 2024

Environment

os: ubuntu20.04
ros: noetic
date: 24.4.17
device: Azure kinetic + UR10

Problem

When I roslaunch easy_handeye ur10_cali.launch(which is newly created), rviz is working correctly, but there is no rqt_easy_handeye window (although the rqt_easy_handeye node is shown in rosnode list). And I don't know how to calibrate without that GUI. Thank you for any suggestion.

This is my ur10_cali.launch (the robot is started by another computer):

<launch>
    <arg name="namespace_prefix" default="ur10_k4a_handeyecalibration"/>

    <!-- <arg name="ur_robot_driver"
         doc="If true, the new ur_robot_driver will be used; otherwise, the old ur_modern_driver"/>
    <arg name="robot_simulated"
         doc="If true, the demo.launch of ur5_moveit_config will be launched; otherwise, a connection to the real robot will be established"/>
    <arg name="robot_ip" doc="The IP address of the UR5 robot"/> -->

    <arg name="marker_size" doc="Size of the ArUco marker used, in meters"/>
    <arg name="marker_id" doc="The ID of the ArUco marker used"/>

    <!-- start the Kinect -->

    <arg name="rgb_rect" default="1" />
    <arg name="depth_rect" default="1" />
    <arg name="ir_rect" default="1" />
    <arg name="point_cloud" default="1" />
    <arg name="rgb_point_cloud" default="1" />

    <!-- Start the K4A sensor driver -->
    <!-- [j] these should be ok -->
    <group ns="k4a" >
        <include file="$(find azure_kinect_ros_driver)/launch/driver.launch" >
            <arg name="overwrite_robot_description" value="false" />
        </include>

        <!-- Spawn a nodelet manager -->
        <node pkg="nodelet" type="nodelet" name="manager" args="manager" output="screen">
            <param name="num_worker_threads" value="16" />
        </node>

        <!-- Spawn an image_proc/rectify nodelet to rectify the RGB image -->
        <node if="$(arg rgb_rect)"
              pkg="nodelet" type="nodelet" name="rectify_rgb"
              args="load image_proc/rectify manager --no-bond"
              respawn="true">
            <remap from="image_mono"  to="rgb/image_raw" />
            <remap from="image_rect"  to="rgb/image_rect_color" />
        </node>

        <!-- Spawn an image_proc/rectify nodelet to rectify the depth image -->
        <node if="$(arg depth_rect)"
              pkg="nodelet" type="nodelet" name="rectify_depth"
              args="load image_proc/rectify manager --no-bond"
              respawn="true">
            <remap from="image_mono"  to="depth/image_raw" />
            <remap from="image_rect"  to="depth/image_rect" />

            <param name="interpolation" value="0" />
        </node>

        <!-- Spawn an image_proc/rectify nodelet to rectify the IR image -->
        <node if="$(arg ir_rect)"
              pkg="nodelet" type="nodelet" name="rectify_ir"
              args="load image_proc/rectify manager --no-bond"
              respawn="true">
            <remap from="image_mono"  to="ir/image_raw" />
            <remap from="image_rect"  to="ir/image_rect" />
        </node>

        <group if="$(arg point_cloud)">
            <!-- Spawn a depth_image_proc/point_cloud_xyz nodelet to convert the
                depth image into a point cloud -->
            <node unless="$(arg rgb_point_cloud)"
                  pkg="nodelet" type="nodelet" name="point_cloud_xyz"
                  args="load depth_image_proc/point_cloud_xyz manager --no-bond"
                  respawn="true">
                <remap from="image_rect"  to="depth/image_rect" />
            </node>

            <group if="$(arg rgb_point_cloud)">
                <!-- Spawn a depth_image_proc/register nodelet to transform the
                    depth image into the color camera co-ordinate space -->
                <node pkg="nodelet" type="nodelet" name="depth_register"
                      args="load depth_image_proc/register manager --no-bond"
                      respawn="true">
                </node>

                <!-- Spawn a depth_image_proc/point_cloud_xyzrgb nodelet to convert the
                    depth_registered and color images image into a colorized point cloud -->
                <node pkg="nodelet" type="nodelet" name="point_cloud_xyzrgb"
                      args="load depth_image_proc/point_cloud_xyzrgb manager --no-bond"
                      respawn="true">
                </node>
            </group>
        </group>

    </group>

    <!-- start easy_aruco to track the example board -->
    <include file="$(find easy_aruco)/launch/track_charuco_board.launch">
        <arg name="camera_namespace" value="/k4a/rgb"/>
        <arg name="dictionary" value="DICT_6X6_250"/>
        <arg name="square_number_x" value="3"/>
        <arg name="square_number_y" value="3"/>
        <arg name="square_size" value="0.024"/>
        <arg name="marker_size" value="0.016"/>
        <arg name="reference_frame" value="camera_base"/>
        <arg name="camera_frame" value="rgb_camera_link"/> <!-- [j] yes we have that frame -->
    </include>

    <!-- start the robot -->
    <!-- <group unless="$(arg robot_simulated)">
        <include if="$(arg ur_robot_driver)" file="$(find ur_robot_driver)/launch/ur5_bringup.launch">
            <arg name="limited" value="true"/>
            <arg name="robot_ip" value="192.168.0.21"/>
        </include>
        <include unless="$(arg ur_robot_driver)" file="$(find ur_bringup)/launch/ur5_bringup.launch">
            <arg name="limited" value="true"/>
            <arg name="robot_ip" value="192.168.0.21"/>
        </include>
        <include file="$(find ur5_moveit_config)/launch/ur5_moveit_planning_execution.launch">
            <arg name="limited" value="true"/>
        </include>
    </group>
    <include if="$(arg robot_simulated)" file="$(find ur5_moveit_config)/launch/demo.launch">
        <arg name="limited" value="true" />
    </include> -->
    <!-- we don't start RViz, we have our own -->

    <!-- start easy_handeye -->
    <include file="$(find easy_handeye)/launch/calibrate.launch">
        <arg name="namespace_prefix" value="$(arg namespace_prefix)"/>
        <arg name="eye_on_hand" value="false"/>
        <!-- <arg name="start_sampling_gui" value="true"/> -->

        <arg name="tracking_base_frame" value="camera_base"/>
        <arg name="tracking_marker_frame" value="board"/>
        <arg name="robot_base_frame" value="ra_base_link"/>  <!-- before is base_link -->
        <arg name="robot_effector_frame" value="ra_wrist_3_link"/>

        <arg name="freehand_robot_movement" value="false"/>
        <arg name="robot_velocity_scaling" value="0.5"/>
        <arg name="robot_acceleration_scaling" value="0.2"/>
    </include>

</launch>

my rosnode list:

/arm_trajectory_controller_spawner
/calibrate_sr_edc
/conditional_delayed_rostool_action_multi
/conditional_delayed_rostool_diagnostic_aggregator
/conditional_delayed_rostool_movegroup_multi
/conditional_delayed_rostool_robot_state_publisher
/control_box/bag_rotate_nuc_control_7073_7770324356114935517
/control_box/core_dump_limit_nuc_control_7073_3367785699137591959
/control_box/journalctl_pub_nuc_control_7073_2390878166595180627
/control_box/record
/controller_stopper
/diagnostic_aggregator
/dummy_handeye
/easy_aruco_node
/error_reporter
/joint_0_pub
/joint_state_controller_spawner
/k4a/azure_kinect_ros_driver
/k4a/depth_register
/k4a/joint_state_publisher_azure
/k4a/manager
/k4a/point_cloud_xyzrgb
/k4a/rectify_depth
/k4a/rectify_ir
/k4a/rectify_rgb
/k4a/robot_state_publisher_azure
/mongo_wrapper_ros_nuc_control_7642_404583385217236712
/move_group
/moveit_python_wrappers_1713334404607131791
/moveit_python_wrappers_1713335908435908361
/moveit_warehouse_services
/robot_state_publisher
/rosout
/rqt_gui_cpp_node_20861
/rqt_gui_cpp_node_24272
/rviz_server_23634_6718413383284208217
/sr_hand_robot
/sr_rh_tactile_sensor_controller_spawner
/sr_ur_arm_unlock
/teach_mode_node
/ur10_k4a_handeyecalibration_eye_on_base/calibration_mover
/ur10_k4a_handeyecalibration_eye_on_base/easy_handeye_calibration_server
/ur10_k4a_handeyecalibration_eye_on_base/namespace_server_15282_2785989410345704368_rqt
/ur10_k4a_handeyecalibration_eye_on_base/namespace_server_23634_7169102761148973672_rqt_sampling_gui # the sampling gui node is renamed to this

More information: from this video on bilibili we can see that rqt_easy_handeye window is shown when the command is executed.

Plugin in cli rqt throws an error

This is an additional test. I've already included calibrate.launch and its rviz started correctly. My robot is started by nuc linked to my PC (this may be a problem), and I can execute motion planning in that rviz. When I try to load Hand-eye calibration plugin in rqt, with my launch file running, an error occurs: (The plugin Hand-eye calibration Movement is working well)

user@server:/opt/ros$ rqt
arguments:  Namespace(quiet=False)
unknowns:  []
[WARN] [1713340124.883375]: No namespace was passed at construction; remember to use set_namespace()
PluginManager._load_plugin() could not load plugin "rqt_easy_handeye/Hand-eye Calibration":
Traceback (most recent call last):
  File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/plugin_handler.py", line 102, in load
    self._load()
  File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/plugin_handler_direct.py", line 55, in _load
    self._plugin = self._plugin_provider.load(self._instance_id.plugin_id, self._context)
  File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/composite_plugin_provider.py", line 72, in load
    instance = plugin_provider.load(plugin_id, plugin_context)
  File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/composite_plugin_provider.py", line 72, in load
    instance = plugin_provider.load(plugin_id, plugin_context)
  File "/opt/ros/noetic/lib/python3/dist-packages/rqt_gui_py/ros_py_plugin_provider.py", line 61, in load
    return super(RosPyPluginProvider, self).load(plugin_id, plugin_context)
  File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/composite_plugin_provider.py", line 72, in load
    instance = plugin_provider.load(plugin_id, plugin_context)
  File "/opt/ros/noetic/lib/python3/dist-packages/rqt_gui/ros_plugin_provider.py", line 106, in load
    return class_ref(plugin_context)
  File "/home/user/catkin_ws/src/easy_handeye/rqt_easy_handeye/src/rqt_easy_handeye/rqt_easy_handeye.py", line 74, in __init__
    resp = self.client.list_algorithms()
  File "/home/user/catkin_ws/src/easy_handeye/easy_handeye/src/easy_handeye/handeye_client.py", line 84, in list_algorithms
    return self.list_algorithms_proxy()
TypeError: 'NoneType' object is not callable

Full output of roslaunch easy_handeye ur10_cali.launch

https://paste.ubuntu.com/p/QdT7gXpkxk/

@julyfun julyfun changed the title rqt_easy_handeye not starting with roslaunch command Load rqt_easy_handeye plugin failed Apr 17, 2024
@Fanqyu
Copy link

Fanqyu commented Apr 17, 2024

Hi, cannot see the plugin, too.
image
Have you solved this problem?

@julyfun
Copy link
Author

julyfun commented Apr 17, 2024

Hi, cannot see the plugin, too. image Have you solved this problem?

not yet

@Fanqyu
Copy link

Fanqyu commented Apr 23, 2024

If it's convenient, we can add the WeChat account of each other, and discuss the problem together.

@julyfun
Copy link
Author

julyfun commented Apr 23, 2024

If it's convenient, we can add the WeChat account of each other, and discuss the problem together.

ok you may email me your wechat account 😊

@ChuckAlex
Copy link

hi, Have you solved this problem?

@julyfun
Copy link
Author

julyfun commented Aug 5, 2024

hi, Have you solved this problem?

You can check easy_handeye/launch/calibrate.launch and check if the move_group parameter is set correctly to your robot's move group. The default value here is manipulator, but it could be wrong.

<arg name="move_group" default="manipulator" doc="the name of move_group for the automatic robot motion with MoveIt!" />

@Gritsua
Copy link

Gritsua commented Sep 18, 2024

hi, Have you solved this problem,and can i email my wechat to you,discussing the problem?

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

4 participants