Open timonegk opened 3 years ago
I can't reproduce this on a custom non-debian build of ROS either.
Load a urdf, e.g. roslaunch pr2-description upload_pr2.launch
This is missing /robot_description_semantic
et. al. to load a MoveIt model correctly (and the loader complains about that).
roslaunch moveit_resources_panda_moveit_config demo.launch
works without any error.
Did you look through the linked libraries of bio_ik and the system dependencies for this? I would expect that bio_ik (obviously compiled in your own workspace) might link to a different version of some system library on your melodic system, resulting in ABI breakage and symbol clashes.
This is missing /robot_description_semantic et. al. to load a MoveIt model correctly (and the loader complains about that).
Yes, you're right, but the error occurs before moveit complains about the missing semantics.
It is also not a problem with my setup, I can reproduce the issue in a docker container. I attached an archive containing the reproducible example: minimal_example.tar.gz
Extract the archive, navigate to the folder, run docker build -t bio_ik_issue .
, docker run -it --name bio_ik_issue_container bio_ik_issue roslaunch moveit_resources_panda_moveit_config demo.launch
(rviz will fail, but that is not problematic). Then, in a second terminal, run docker exec -it bio_ik_issue_container bash
. In the shell, open a python console and paste the code from the issue.
It is also not a problem with my setup, I can reproduce the issue in a docker container. I attached an archive containing the reproducible example: minimal_example.tar.gz
Thanks for debugging this. I'm not saying it's a problem with your setup. It might as well be a problem with the build of a ROS package.
Thank you for setting up the docker image. I'm not sure I'll have the time to hunt this down though. :(
Could you paste the output of ldd -v
for all relevant binaries (the python module, the bio_ik object, the robot model loader) and is there any discrepancy there?
:+1: I also have this problem when using python bindings that use bio_ik
:+1: I also have this problem when using python bindings that use bio_ik
Feel free to look into this. I planned to investigate it, but did not find the time to do that until now. :sad:
So these lines in the CMakeLists.txt seems suspicious, removing them fixes the problem for me!
-static-libgcc
-static-libstdc++
Why link to these statically?
Removing the lines fixes the problem for me, too.
Thank you for finding the cause of the issue.
-static-libgcc -static-libstdc++
Why link to these statically?
Probably the same reasons why you would link any library statically. Did you benchmark whether shared linking lowers performance? Even if there should be a slight effect, fixing the issue is probably worth it from my side.
Hm I didn't know static linking affect runtime performance -- I did not benchmark anything.
The problem
I am using the MoveIt RobotModelLoader to load a URDF from the ros parameter server. The URDF will not be parsed when the following two conditions are fulfilled:
CMakeLists.txt
Reproducible example:
cd catkin_ws/src && catkin create pkg minimal_example
CMakeLists.txt
wrapper.cpp
``` #includeroslaunch pr2-description upload_pr2.launch
Then, a lot of ros errors are raised:
``` [ERROR] [1613744905.421133198]: Material [Blue] has malformed color rgba values: Unable to parse component [0.0] to a double (while parsing a color value) [ERROR] [1613744905.421257104]: Material [Blue] color has no rgba [ERROR] [1613744905.421345652]: Material [Blue] not defined in file [ERROR] [1613744905.421559337]: Material [Green] has malformed color rgba values: Unable to parse component [0.0] to a double (while parsing a color value) [ERROR] [1613744905.421679050]: Material [Green] color has no rgba [ERROR] [1613744905.421736653]: Material [Green] not defined in file [ERROR] [1613744905.421899605]: Material [Grey] has malformed color rgba values: Unable to parse component [0.7] to a double (while parsing a color value) [ERROR] [1613744905.421960551]: Material [Grey] color has no rgba [ERROR] [1613744905.421993995]: Material [Grey] not defined in file [ERROR] [1613744905.422110530]: Material [Grey2] has malformed color rgba values: Unable to parse component [0.9] to a double (while parsing a color value) [ERROR] [1613744905.422164421]: Material [Grey2] color has no rgba [ERROR] [1613744905.422200912]: Material [Grey2] not defined in file [ERROR] [1613744905.422367720]: Material [Red] has malformed color rgba values: Unable to parse component [0.8] to a double (while parsing a color value) [ERROR] [1613744905.422454364]: Material [Red] color has no rgba [ERROR] [1613744905.422525520]: Material [Red] not defined in file [ERROR] [1613744905.422691867]: Material [White] has malformed color rgba values: Unable to parse component [1.0] to a double (while parsing a color value) [ERROR] [1613744905.422749125]: Material [White] color has no rgba [ERROR] [1613744905.422812759]: Material [White] not defined in file [ERROR] [1613744905.422942299]: Material [Black] has malformed color rgba values: Unable to parse component [0.1] to a double (while parsing a color value) [ERROR] [1613744905.422995747]: Material [Black] color has no rgba [ERROR] [1613744905.423060430]: Material [Black] not defined in file [ERROR] [1613744905.423174719]: Material [LightGrey] has malformed color rgba values: Unable to parse component [0.6] to a double (while parsing a color value) [ERROR] [1613744905.423210584]: Material [LightGrey] color has no rgba [ERROR] [1613744905.423251483]: Material [LightGrey] not defined in file [ERROR] [1613744905.423448811]: Unable to parse component [-0.061] to a double (while parsing a vector value) [ERROR] [1613744905.423489629]: Could not parse inertial element for Link [base_link] [ERROR] [1613744905.423588783]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.423626958]: Could not parse inertial element for Link [base_footprint] [ERROR] [1613744905.423722349]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.423759400]: Could not parse inertial element for Link [base_bellow_link] [ERROR] [1613744905.423856896]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.423901057]: Could not parse inertial element for Link [base_laser_link] [ERROR] [1613744905.423998539]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.424035614]: Could not parse inertial element for Link [fl_caster_rotation_link] [ERROR] [1613744905.424131989]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.424168781]: Could not parse inertial element for Link [fl_caster_l_wheel_link] [ERROR] [1613744905.424261822]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.424298544]: Could not parse inertial element for Link [fl_caster_r_wheel_link] [ERROR] [1613744905.424392930]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.424430763]: Could not parse inertial element for Link [fr_caster_rotation_link] [ERROR] [1613744905.424523717]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.424561717]: Could not parse inertial element for Link [fr_caster_l_wheel_link] [ERROR] [1613744905.424642766]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.424679720]: Could not parse inertial element for Link [fr_caster_r_wheel_link] [ERROR] [1613744905.424783002]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.424820717]: Could not parse inertial element for Link [bl_caster_rotation_link] [ERROR] [1613744905.424900987]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.424937599]: Could not parse inertial element for Link [bl_caster_l_wheel_link] [ERROR] [1613744905.425029065]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.425064242]: Could not parse inertial element for Link [bl_caster_r_wheel_link] [ERROR] [1613744905.425139219]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.425177220]: Could not parse inertial element for Link [br_caster_rotation_link] [ERROR] [1613744905.425269975]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.425306871]: Could not parse inertial element for Link [br_caster_l_wheel_link] [ERROR] [1613744905.425400131]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.425436585]: Could not parse inertial element for Link [br_caster_r_wheel_link] [ERROR] [1613744905.425530191]: Unable to parse component [-0.1] to a double (while parsing a vector value) [ERROR] [1613744905.425567198]: Could not parse inertial element for Link [torso_lift_link] [ERROR] [1613744905.425667310]: Unable to parse component [-0.0625] to a double (while parsing a vector value) [ERROR] [1613744905.425704389]: Could not parse inertial element for Link [l_torso_lift_side_plate_link] [ERROR] [1613744905.425797797]: Unable to parse component [-0.0625] to a double (while parsing a vector value) [ERROR] [1613744905.425834060]: Could not parse inertial element for Link [r_torso_lift_side_plate_link] [ERROR] [1613744905.425926920]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.425963485]: Could not parse inertial element for Link [torso_lift_motor_screw_link] [ERROR] [1613744905.426056790]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.426093051]: Could not parse inertial element for Link [imu_link] [ERROR] [1613744905.426188788]: Unable to parse component [0.010907] to a double (while parsing a vector value) [ERROR] [1613744905.426225659]: Could not parse inertial element for Link [head_pan_link] [ERROR] [1613744905.426319806]: Unable to parse component [0.001716] to a double (while parsing a vector value) [ERROR] [1613744905.426356186]: Could not parse inertial element for Link [head_tilt_link] [ERROR] [1613744905.426449479]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.426485690]: Could not parse inertial element for Link [head_plate_frame] [ERROR] [1613744905.426579829]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.426642692]: Could not parse inertial element for Link [sensor_mount_link] [ERROR] [1613744905.426730224]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.426771594]: Could not parse inertial element for Link [high_def_frame] [ERROR] [1613744905.426861823]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.426899307]: Could not parse inertial element for Link [high_def_optical_frame] [ERROR] [1613744905.426978513]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.427014018]: Could not parse inertial element for Link [double_stereo_link] [ERROR] [1613744905.427105094]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.427144812]: Could not parse inertial element for Link [wide_stereo_link] [ERROR] [1613744905.427245829]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.427282756]: Could not parse inertial element for Link [wide_stereo_l_stereo_camera_frame] [ERROR] [1613744905.427379709]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.427415972]: Could not parse inertial element for Link [wide_stereo_r_stereo_camera_frame] [ERROR] [1613744905.427528414]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.427564602]: Could not parse inertial element for Link [narrow_stereo_link] [ERROR] [1613744905.427664059]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.427699921]: Could not parse inertial element for Link [narrow_stereo_l_stereo_camera_frame] [ERROR] [1613744905.427795854]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.427831885]: Could not parse inertial element for Link [narrow_stereo_r_stereo_camera_frame] [ERROR] [1613744905.427928084]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.427964662]: Could not parse inertial element for Link [projector_wg6802418_frame] [ERROR] [1613744905.428063242]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.428114795]: Could not parse inertial element for Link [projector_wg6802418_child_frame] [ERROR] [1613744905.428184298]: Unable to parse component [-0.001136] to a double (while parsing a vector value) [ERROR] [1613744905.428210630]: Could not parse inertial element for Link [laser_tilt_mount_link] [ERROR] [1613744905.428279646]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.428306179]: Could not parse inertial element for Link [laser_tilt_link] [ERROR] [1613744905.428376115]: Unable to parse component [-0.001201] to a double (while parsing a vector value) [ERROR] [1613744905.428402552]: Could not parse inertial element for Link [r_shoulder_pan_link] [ERROR] [1613744905.428472165]: Unable to parse component [0.02195] to a double (while parsing a vector value) [ERROR] [1613744905.428498587]: Could not parse inertial element for Link [r_shoulder_lift_link] [ERROR] [1613744905.428567934]: Unable to parse component [0.0] to a double (while parsing a vector value) [ERROR] [1613744905.428595138]: Could not parse inertial element for Link [r_upper_arm_roll_link] [ERROR] [1613744905.428654026]: Unable to parse component [0.21398] to a double (while parsing a vector value) [ERROR] [1613744905.428680435]: Could not parse inertial element for Link [r_upper_arm_link] [ERROR] [1613744905.428753108]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.428780626]: Could not parse inertial element for Link [r_forearm_roll_link] [ERROR] [1613744905.428849772]: Unable to parse component [0.01014] to a double (while parsing a vector value) [ERROR] [1613744905.428878595]: Could not parse inertial element for Link [r_elbow_flex_link] [ERROR] [1613744905.428954919]: Unable to parse component [0.18791] to a double (while parsing a vector value) [ERROR] [1613744905.428985475]: Could not parse inertial element for Link [r_forearm_link] [ERROR] [1613744905.429057071]: Unable to parse component [-0.00157] to a double (while parsing a vector value) [ERROR] [1613744905.429087929]: Could not parse inertial element for Link [r_wrist_flex_link] [ERROR] [1613744905.429146575]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.429175503]: Could not parse inertial element for Link [r_wrist_roll_link] [ERROR] [1613744905.429235187]: Unable to parse component [0.06623] to a double (while parsing a vector value) [ERROR] [1613744905.429264501]: Could not parse inertial element for Link [r_gripper_palm_link] [ERROR] [1613744905.429324362]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.429355596]: Could not parse inertial element for Link [r_gripper_motor_accelerometer_link] [ERROR] [1613744905.429428199]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.429459845]: Could not parse inertial element for Link [r_gripper_motor_slider_link] [ERROR] [1613744905.429533061]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.429565129]: Could not parse inertial element for Link [r_gripper_motor_screw_link] [ERROR] [1613744905.429644151]: Unable to parse component [0.03598] to a double (while parsing a vector value) [ERROR] [1613744905.429672665]: Could not parse inertial element for Link [r_gripper_l_finger_link] [ERROR] [1613744905.429745145]: Unable to parse component [0.03576] to a double (while parsing a vector value) [ERROR] [1613744905.429773194]: Could not parse inertial element for Link [r_gripper_r_finger_link] [ERROR] [1613744905.429847374]: Unable to parse component [0.00423] to a double (while parsing a vector value) [ERROR] [1613744905.429875234]: Could not parse inertial element for Link [r_gripper_l_finger_tip_link] [ERROR] [1613744905.429946583]: Unable to parse component [0.00423] to a double (while parsing a vector value) [ERROR] [1613744905.429975453]: Could not parse inertial element for Link [r_gripper_r_finger_tip_link] [ERROR] [1613744905.430074151]: Unable to parse component [-0.001201] to a double (while parsing a vector value) [ERROR] [1613744905.430102480]: Could not parse inertial element for Link [l_shoulder_pan_link] [ERROR] [1613744905.430177591]: Unable to parse component [0.02195] to a double (while parsing a vector value) [ERROR] [1613744905.430205785]: Could not parse inertial element for Link [l_shoulder_lift_link] [ERROR] [1613744905.430277491]: Unable to parse component [0.0] to a double (while parsing a vector value) [ERROR] [1613744905.430305160]: Could not parse inertial element for Link [l_upper_arm_roll_link] [ERROR] [1613744905.430379558]: Unable to parse component [0.21405] to a double (while parsing a vector value) [ERROR] [1613744905.430407262]: Could not parse inertial element for Link [l_upper_arm_link] [ERROR] [1613744905.430478621]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.430506163]: Could not parse inertial element for Link [l_forearm_roll_link] [ERROR] [1613744905.430579621]: Unable to parse component [0.01014] to a double (while parsing a vector value) [ERROR] [1613744905.430618398]: Could not parse inertial element for Link [l_elbow_flex_link] [ERROR] [1613744905.430705837]: Unable to parse component [0.18791] to a double (while parsing a vector value) [ERROR] [1613744905.430733502]: Could not parse inertial element for Link [l_forearm_link] [ERROR] [1613744905.430805290]: Unable to parse component [-0.00157] to a double (while parsing a vector value) [ERROR] [1613744905.430833176]: Could not parse inertial element for Link [l_wrist_flex_link] [ERROR] [1613744905.430907456]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.430934684]: Could not parse inertial element for Link [l_wrist_roll_link] [ERROR] [1613744905.431006990]: Unable to parse component [0.06623] to a double (while parsing a vector value) [ERROR] [1613744905.431034927]: Could not parse inertial element for Link [l_gripper_palm_link] [ERROR] [1613744905.431108694]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.431136095]: Could not parse inertial element for Link [l_gripper_motor_accelerometer_link] [ERROR] [1613744905.431210253]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.431238369]: Could not parse inertial element for Link [l_gripper_motor_slider_link] [ERROR] [1613744905.431315438]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.431343624]: Could not parse inertial element for Link [l_gripper_motor_screw_link] [ERROR] [1613744905.431415007]: Unable to parse component [0.03598] to a double (while parsing a vector value) [ERROR] [1613744905.431443524]: Could not parse inertial element for Link [l_gripper_l_finger_link] [ERROR] [1613744905.431517333]: Unable to parse component [0.03576] to a double (while parsing a vector value) [ERROR] [1613744905.431544894]: Could not parse inertial element for Link [l_gripper_r_finger_link] [ERROR] [1613744905.431616387]: Unable to parse component [0.00423] to a double (while parsing a vector value) [ERROR] [1613744905.431644363]: Could not parse inertial element for Link [l_gripper_l_finger_tip_link] [ERROR] [1613744905.431718383]: Unable to parse component [0.00423] to a double (while parsing a vector value) [ERROR] [1613744905.431745975]: Could not parse inertial element for Link [l_gripper_r_finger_tip_link] [ERROR] [1613744905.431823067]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.431856851]: Could not parse inertial element for Link [l_forearm_cam_frame] [ERROR] [1613744905.431936225]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.431964181]: Could not parse inertial element for Link [r_forearm_cam_frame] [ERROR] [1613744905.432041440]: Unable to parse component [0] to a double (while parsing a vector value) [ERROR] [1613744905.432070149]: Malformed parent origin element for joint [base_footprint_joint] [ERROR] [1613744905.432102347]: joint xml is not initialized correctly [ERROR] [1613744905.432583054]: Unable to parse URDF from parameter '/robot_description' ```Now, remove
bio_ik
from theCMakeLists.txt
, recompile, and try again. The problem will not occur.I tested this on ROS Melodic on Ubuntu 18.04 for both python2 and python3 (just replace python with python3 in the
find_package(BOOST...)
). The problem did not occur on a self compiled workspace on Debian Testing.In my case it was fortunately possible to remove
bio_ik
from the catkin components, but that may not always be the case.I'm sorry for the bizarre issue.