rqt_gui plugin load error
Hi,
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.
<launch>
<!-- (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>
<include file="$(find ur5_moveit_config)/launch/ur5_moveit_planning_execution.launch">
<arg name="limited" value="true"/>
</include>
<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"/>
</include>
</launch>
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" ?>
<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" />
<!-- The input reference ...
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.Hi,
Remember that is not the same to write:
than:
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 withnamespace:="value_ph"