rqt_gui plugin load error

asked 2019-11-19 07:33:54 -0500

FelipeH92 gravatar image


I'm trying to run a Hand-eye-calibration package using an Universal Robots and Ar_track_alvar. I'm using this package.

I made a launch file that launches the ar tracker, the robot and then the calibration procedure as per instructions in the readme.

  <!-- (start your robot's MoveIt! stack, e.g. include its moveit_planning_execution.launch) -->
  <!-- (start your tracking system's ROS driver) -->

  <arg name="robot_ip"/>

  <include file="$(find openni_launch)/launch/openni.launch"/>
  <include file="$(find eye_to_hand_calibration)/launch/ar_tracker.launch"/>
  <include file="$(find ur_modern_driver)/launch/ur5_bringup.launch">
    <arg name="limited" value="true"/>
    <arg name="robot_ip" value="$(arg robot_ip)"/>
    <arg name="reverse_port" value="50001"/>
  <include file="$(find ur5_moveit_config)/launch/ur5_moveit_planning_execution.launch">
    <arg name="limited" value="true"/>

  <include file="$(find easy_handeye)/launch/calibrate.launch">
    <arg name="eye_on_hand" value="false"/>
    <arg name="namespace_prefix" value="ur5_kinect_handeyecalibration"/>

    <!-- fill in the following parameters according to your robot's published tf frames -->
    <arg name="robot_base_frame" value="base_link"/>
    <arg name="robot_effector_frame" value="ee_link"/>

    <!-- fill in the following parameters according to your tracking system's published tf frames -->
    <arg name="tracking_base_frame" value="camera_link"/>
    <arg name="tracking_marker_frame" value="ar_marker_0"/>

The original instructions said to use "namespace" argument instead of "namespace_prefix", but I get the following error:

Invalid <arg> tag: cannot override arg 'namespace', which has already been set. 

Arg xml is <arg doc="the namespace the node will run in, and the folder in which the result will be saved" name="namespace" unless="$(arg eye_on_hand)" value="$(arg namespace_prefix)_eye_on_base"/>
The traceback for the exception was written to the log file

When I change to namespace_prefix, everything works almost fine. The package was supposed to launch rviz with two extra gui's, one for saving the poses and run the algorithm, and another for path planning. The gui to save the poses doesn't launch. I get the following error:

[ur5_kinect_handeyecalibration_eye_on_base/namespace_nascimento_Inspiron_rqt-32] process has died [pid 5609, exit code 2, cmd /opt/ros/kinetic/lib/rqt_gui/rqt_gui --clear-config --perspective-file /home/nascimento/Projects/ROS Workspaces/ROS Test Workspace/src/easy_handeye/easy_handeye/launch/rqt_easy_handeye.perspective __name:=namespace_nascimento_Inspiron_rqt __log:=/home/nascimento/.ros/log/d85375b4-0acc-11ea-a950-d80f99a74bf5/ur5_kinect_handeyecalibration_eye_on_base-namespace_nascimento_Inspiron_rqt-32.log].
log file: /home/nascimento/.ros/log/d85375b4-0acc-11ea-a950-d80f99a74bf5/ur5_kinect_handeyecalibration_eye_on_base-namespace_nascimento_Inspiron_rqt-32*.log

The calibrate.launch

<?xml version="1.0" ?>
    <!-- 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" />

    <!-- The input reference ...
edit retag flag offensive close merge delete


I tried running rosrun rqt_gui rqt_gui --clear-config --perspective-file /path-to-pck/launch/rqt_easy_handeye.perspective and it appears the bug is in the perspective file.

FelipeH92 gravatar image FelipeH92  ( 2019-11-19 09:22:08 -0500 )edit


Remember that is not the same to write:

<arg name="name_ph" value="value_ph"/>


<arg name="name_ph" default="name_ph"/>

In the first one you are instantiating an argument while in the second one you are giving it a value. Looking at your error it seems that you are instantiating two times the namespace argument.

Change value to default and give it a value when you launch with namespace:="value_ph"

Weasfas gravatar image Weasfas  ( 2019-11-21 05:44:27 -0500 )edit