Ask Your Question
1

rospack find throws exception error

asked 2018-01-04 04:58:54 -0600

kamalpandey1993 gravatar image

updated 2018-01-05 02:59:18 -0600

rospack find is giving runtime errors on my beaglebone board. Other rospack commands are running fine like rospack depends.

and here is the error message :

debian@beaglebone:~/catkin_ws$ rospack find
terminate called after throwing an instance of 'rospack::Exception'
what(): error parsing manifest of package class_loader at /home/debian/ros_catkin_ws/install_isolated/share/class_loader/package.xml
Aborted

also after writing $rosrun and pressing tab it is throwing exception error written below :

debian@beaglebone:~/catkin_ws$ rosrun terminate called after throwing an instance of 'rospack::Exception'
what(): error parsing manifest of package class_loader at /home/debian/ros_catkin_ws/install_isolated/share/class_loader/package.xml

although $ rosrun <pkg_name> <node_name> is running completely fine when typing the whole command without using tab with using tab the console is like this ;

debian@beaglebone:~/catkin_ws$ rosrun ros_o3d_wall_f find: '': No such file or directory
o3d-find: '': No such file or directory
find: '': No such file or directory

o3d-pub o3d-sub

here i pressed tab after $rosrun ros_o3d_wall_f . And then there was this line added find: no such file or directory then again i pressed tab and line added was o3d-find: no such file or directory and when i pressed tab for the third time it should me the two nodes o3d -pub and o3d-sub. can someone explain me this anomalous behavior. i have installed ros on my board from source files as apt-get repository was unable to find it.

I used the http://wiki.ros.org/lunar/Installatio... tutorial to install ros-desktop-full from source files. for my beaglebone board. Although its running fine on my desktop but on the board its throwing error.

Should i build the package again to avoid this error and if so what other packages and dependencies i need to update . Also i don't know how to remove the installed package as i used $catkin_make_install_isolated command and not the $catkin build command to build the work space so $catkin clean won't work.

Here are the contents of the package.xml file mentioned above in the error.

<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format2.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="2">
  <name>class_loader</name>
  <version>0.3.8</version>
  <description>
    The class_loader package is a ROS-independent package for loading plugins during runtime and the foundation of the higher level ROS "pluginlib" library. class_loader utilizes the host operating system's runtime loader to open runtime libraries (e.g. .so/.dll files), introspect the library for exported plugin classes, and allows users to instantiate objects of said exported classes without the explicit declaration (i.e. header file) for those classes.
  </description>
  <maintainer email="mikael@osrfoundation.org">Mikael Arguedas</maintainer>
  <author>Mirza Shah</author>
  <license>BSD</license>

  <url type="website">http://ros.org/wiki/class_loader</url>
  <url type="bugtracker">https://github.com/ros/class_loader/issues</url>
  <url type="repository">https://github.com/ros/class_loader</url>

  <buildtool_depend version_gte="0.5.68">catkin</buildtool_depend>

  <build_depend version_gte="0.3.3">cmake_modules</build_depend>

  <depend>boost</depend>
  <depend>libconsole-bridge-dev</depend>
  <depend>libpoco-dev</depend>
</package>
edit retag flag offensive close merge delete

Comments

I've re-formatted to make your output more readable ;). Then, it may worth running rospack profile command after building (ref).

130s gravatar image130s ( 2018-01-04 06:36:49 -0600 )edit
1

Please do not double post your question. You have already asked the same question here: https://github.com/ros/rospack/issues/86 In that ticket you have also been asked to provide specific information. Please do so otherwise others can't help you with your question.

Dirk Thomas gravatar imageDirk Thomas ( 2018-01-04 11:49:50 -0600 )edit

rospack profile is also giving the same error as mentioned above @130s

kamalpandey1993 gravatar imagekamalpandey1993 ( 2018-01-05 01:06:23 -0600 )edit

if somebody could explain me that when these exception error occurs maybe then i'll get my way @Dirk Thomas

kamalpandey1993 gravatar imagekamalpandey1993 ( 2018-01-05 03:22:51 -0600 )edit

The error you're getting usually means that the package.xml file has an error. Now that you've added it to you question, I don't see anything obviously wrong with it. I suppose this could be an issue with the permissions on that file, or it could be an issue with the XML format headers.

ahendrix gravatar imageahendrix ( 2018-01-05 03:32:39 -0600 )edit

It's a bit of a shot in the dark, but you might want to try removing the first two lines from this package.xml to see if that helps. (If it does, that indicates a bug in rospack or the package.xml).

ahendrix gravatar imageahendrix ( 2018-01-05 03:33:41 -0600 )edit

if somebody could explain me that when these exception error occurs maybe then i'll get my way

?

jayess gravatar imagejayess ( 2018-01-05 03:37:09 -0600 )edit

i tried commenting the top two lines and interestingly now the parse error exception is not on that file. It came from file at smclib package and after resolving that on bondpy, pluginlib, actionlib one by one. Now i cannot uncomment from all package.xml files. Could it be version error. @ahendrix

kamalpandey1993 gravatar imagekamalpandey1993 ( 2018-01-05 05:49:50 -0600 )edit

3 Answers

Sort by ยป oldest newest most voted
1

answered 2018-01-05 14:40:22 -0600

Dirk Thomas gravatar image

The problem seems to be related to the TinyXML2 version you are using. TinyXML2 version 4.0.1 (which is e.g. in Ubuntu Zesty) has a bug making it unable to parse xml-model correctly. All other versions (3.0.0 and lower as well as 5.0.0 and higher) don't have the problem and work as expected (see https://github.com/ros/rospack/issues/77 ). To address the problem you should update to a newer version of TinyXML2.

edit flag offensive delete link more

Comments

@Dirk Thomas thanks but how to update the tinyxml2. I tried updating the libtinyxml2 package and also removed the older version . But now rospack gives error for not finding libtinyxml2-4.so library. How can i change the settings in Ros to use the newer version of that library. OS is DEBIAN Stretch.

kamalpandey1993 gravatar imagekamalpandey1993 ( 2018-01-08 11:31:42 -0600 )edit

This is not a setting. You'll have to recompile - everything (or: everything that depends on tinyxml).

gvdhoorn gravatar imagegvdhoorn ( 2018-01-08 11:35:15 -0600 )edit

Until the bug is fixed in the Debian Stretch package of TinyXML2 the approach @gvdhoorn mentioned is the only way.

Dirk Thomas gravatar imageDirk Thomas ( 2018-01-08 11:38:44 -0600 )edit

Seeing as the OP has a from-source install of Lunar on Debian Stretch, wouldn't he always need to recompile? Unless ABI bw-compatibility is maintained of course.

gvdhoorn gravatar imagegvdhoorn ( 2018-01-08 11:44:40 -0600 )edit

well package.xml file is in every package , and i guess if i compile whole packages again for debian stretch, how its going to determine to use version of xml parser above 4.0.1 or lower @gvdhoorn

kamalpandey1993 gravatar imagekamalpandey1993 ( 2018-01-08 11:50:58 -0600 )edit

@Dirk Thomas should i recompile the packages by removing version 4 and installing other version. Will the ROS packages be able to find this new library, because I think their dependency is in version 4 only. Correct me if i am wrong

kamalpandey1993 gravatar imagekamalpandey1993 ( 2018-01-08 12:09:09 -0600 )edit

I don't understand your question @kamalpandey1993: how is package.xml involved in any of this? TinyXML (the library) contains a regression in version 4.0.1 - get a newer version, recompile and things should start working.

You need to recompile basic ROS pkgs that use TinyXML.

gvdhoorn gravatar imagegvdhoorn ( 2018-01-08 12:42:19 -0600 )edit

while recompiling i got this error

==> Processing catkin package: 'rospack'
make[2]: *** No rule to make target '/usr/lib/arm-linux-gnueabihf/libtinyxml2.so', needed by '/home/debian/ros_catkin_ws/devel_isolated/rospack/lib/librospack.so'.Stop

i already installed libtinyxml2.6.2 , @gvdhoorn

kamalpandey1993 gravatar imagekamalpandey1993 ( 2018-01-08 23:34:58 -0600 )edit
1

answered 2018-01-09 12:24:22 -0600

kamalpandey1993 gravatar image

updated 2018-01-09 12:26:59 -0600

Well to start with still the Debian Stretch apt repository has libtinyxml2-4.0.1 as the default package which has some regression error while parsing xml files() see this for more details : https://github.com/ros/rospack/issues/77 . Now to get a new version of tinyxml2 apt-get won't work as libtinyxml2-dev has dependency on libtinyxml2-4.0.1 . So if you try to install -dev package it will automatically ask to install version 4 (error prone).So you have to install tinyxml2 from source files. The link is here: https://github.com/leethomason/tinyxml2 . Steps to make from source files:

$git clone https://github.com/leethomason/tinyxml2.git 
$cd tinyxml2
$mkdir build && cd ./build
$cmake ..
$make && make install

This will install the library to the desired location. Now its better to recompile the whole ros project again to avoid unwanted errors.But if you are working on any development board recompiling would be a bummer(Cross-compilation is an option but not much development towards it in ros ) Few packages that i know (not all) that depends on tinyxml2 are rospack, pluginlib, gazebo_ros etc. You can recompile it for only them but before compiling make sure packages that you want to compile in build and devel directory should be deleted. I know this is not an authentic way but it could be handy till the problem is fixed. There is one more thing to note that while uninstalling the version 4 some libraries are automatically uninstalled which may cause error during compilation of some packages ex - gazebo_ros. For now you have to follow the same procedures for them too (finding source files and so on). If someone comes up with better solution please share I am desperate to resolve this issue.

edit flag offensive delete link more

Comments

A combination of this answer and the one by marguedas worked for me. I removed libtinyxml2-dev and libtinyxml2-4, built and installed the patch (as above) and finally I had to perform a

sudo ldconfig

and after that it worked.

jj364 gravatar imagejj364 ( 2018-04-24 09:10:04 -0600 )edit

Hi, I ran into this issue as well with rospack with ROS lunar and performing the steps provided seems to solve the issue with rospack, however I now get a build error for "qt_gui_cpp". I'm running Debian 9.5 on a Beaglebone Blue. I ran rosdep again and noticed it installs libtinyxml2.6.2v5.

JR Morss gravatar imageJR Morss ( 2018-09-28 02:06:32 -0600 )edit
1

answered 2018-01-10 08:49:39 -0600

marguedas gravatar image

as pointed out by @dirk-thomas, this comes from a regression in tinyxml2 v4.0.1. We had to release a patched version in ROS to work around this issue, see https://github.com/ros/rospack/issues... for more details.

The patch is API/ABI compatible so you shouldn't need to rebuild anything on top for this to work.

  1. uninstalling libtinyxml2-dev and libtinyxml2-4
  2. building from source and installing https://github.com/mikaelarguedas/tin...

Hope this helps

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2018-01-04 04:58:54 -0600

Seen: 1,271 times

Last updated: Jan 10 '18