CoppeliaRobotics / simROS

Other
24 stars 13 forks source link

sim_ros_interface not compiling anymore - possible problem with libPlugin #3

Closed rgudwin closed 4 years ago

rgudwin commented 4 years ago

Dear developers, I am using this interface since a long time, and until some weeks ago, I was able to compile it flawless. Nevertheless, I am not being able to compile this package anymore. I already downloaded the last versions of simExtROSInterface and libPlugin from GitHub and stored libPlugin at ${COPPELIASIM_ROOT_DIR}/programming/libPlugin as it used to be. The ${COPPELIASIM_ROOT_DIR} for me is /ros/csim. When I do a catkin build sim_ros_interface, I receive an overflow of messages which starts with the following errors (with really almost the same message in apparently many and many lines):

/ros/csim/programming/libPlugin/simPlusPlus/Plugin.cpp: In member function ‘void sim::Plugin::setExtVersion(const string&)’: /ros/csim/programming/libPlugin/simPlusPlus/Plugin.cpp:22:41: error: ‘sim_moduleinfoextversionstr’ was not declared in this scope simSetModuleInfo(name.c_str(), sim_moduleinfo_extversionstr, s.c_str(), 0); ^~~~~~~~ /ros/csim/programming/libPlugin/simPlusPlus/Plugin.cpp: In member function ‘void sim::Plugin::setExtVersion(int)’: /ros/csim/programming/libPlugin/simPlusPlus/Plugin.cpp:27:41: error: ‘sim_moduleinfoextversionint’ was not declared in this scope simSetModuleInfo(name.c_str(), sim_moduleinfo_extversionint, 0, i); ^~~~~~~~ /ros/csim/programming/libPlugin/simPlusPlus/Plugin.cpp:27:41: note: suggested alternative: ‘sim_drawingpersistent’ simSetModuleInfo(name.c_str(), sim_moduleinfo_extversionint, 0, i); ^~~~~~~~ sim_drawing_persistent /ros/csim/programming/libPlugin/simPlusPlus/Plugin.cpp: In member function ‘void sim::Plugin::setBuildDate(const string&)’: /ros/csim/programming/libPlugin/simPlusPlus/Plugin.cpp:32:41: error: ‘sim_moduleinfobuilddatestr’ was not declared in this scope simSetModuleInfo(name.c_str(), sim_moduleinfo_builddatestr, s.c_str(), 0); ^~~~~~~ /ros/csim/programming/libPlugin/simPlusPlus/Plugin.cpp: In member function ‘void sim::Plugin::setVerbosity(int)’: /ros/csim/programming/libPlugin/simPlusPlus/Plugin.cpp:37:41: error: ‘sim_moduleinfoverbosity’ was not declared in thi s scope simSetModuleInfo(name.c_str(), sim_moduleinfo_verbosity, 0, i);

..... and this repeats for many, many, many pages, overfilling the memory of my shell. Apparentely to cause a such huge problem, it will be certainly some very simple thing which is used everywhere. Can you provide me any clue on how to solve this ? Ricardo

rgudwin commented 4 years ago

Just a remark ... I found the bug !!! The problem is that you made changes to the "include" package. which affects this code. I just downloaded the new version of include from https://github.com/CoppeliaRobotics/include.git and everything is compiling again. But I should ask ... is it normal to have such undocumented dependencies with other packages ? Besides "libPlugin" and "include" should I keep track of which other projects in order to stay up to date ? All those listed in the ROOT/programming folder ? If this dependency is meant to be correct, at least you should express it clearly somewhere ! It will make our life easier !

rgudwin commented 4 years ago

Now even though the plugin compiles well, after that CoppeliaSim breaks while trying to start

Plugin 'OpenGL3Renderer': load succeeded. Plugin 'OpenMesh': loading... Plugin 'OpenMesh': load succeeded. Plugin 'Qhull': loading... Plugin 'Qhull': load succeeded. Plugin 'ROSInterface': loading... Could not find function simAddLog

Error: signal 11:

/ros/csim/libcoppeliaSim.so(_Z11_segHandleri+0x2b)[0x7fb5753730bb] /lib/x86_64-linux-gnu/libc.so.6(+0x3ef20)[0x7fb5792c3f20]

rgudwin commented 4 years ago

I discovered what happened ... the last commit of this package is from 4 May ... the last commit of libPlugin is from 14 May ... probably you introduced changes in libPlugin which broke the code of this package. And now I just discovered there is a hidden dependency of libPlugin on include, and probably there are other hidden dependencies which I am not aware. Have you considered the possibility of merging all these "hidden" dependencies (libPlugin, include, and every other hidden dependency) in a single "common" package which is a common dependency for every other packages ? Otherwise this will be a complete "hell" of version control. With these hidden dependencies, which only work in a specific "combination" of commits, and things not working with the last version of them in GitHub is really a nightmare. For this package to work, after trying many different combination of commits of all these packages I had to go back this package to the 2e4d567504d2dc8e57407cdd260c0162613cd511 commit and the libPlugin package to the 410537a8e4daa6afd03f1f7d977aec917704d20e commit, both of them from 21 April This was the only combination where everything was working.

fferri commented 4 years ago

If you want to build a plugin from git, you need all the dependencies to the latest version, sometimes including latest git version of CoppeliaSim. You can't expect to be able to successfully compile things by mixing released versions and git versions at random.

If you can't manage to build CoppeliaSim from git, you can as well checkout a specific version tag in every relevant git repo (plugin + dependencies). The tag name refers to the CoppeliaSim version.

Jcortesconde commented 4 years ago

Hi, I am having the same issue. As your suggestion I went to the package version 4.0.0 on the interface and on the coppelia install. (as I have no idea how to Build CoppeliaSim from Git) However I have the next issue:

File "/.../catkin_ws/src/sim_ros_interface/tools/parse_messages_and_services.py", line 4, in <module>
    import rospkg
ImportError: No module named rospkg

However I tried installing the module and this was the output:

javier@Phoenix:~/Documents/Projectos/Pasantia/catkin_ws$ sudo apt install python-rospkg
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package python-rospkg is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  python3-rospkg

E: Package 'python-rospkg' has no installation candidate

It tells me that is no longer available and that I must use python3-rospkg, however If I do so, the scripts ask for python 2 so its a no go.

So I went and did download the latest versions of the libplugin, the include one and this one and try doing that. However I had the next issue:

Plugin 'ROSInterface': loading...
Error with plugin 'ROSInterface': load failed (could not load). The plugin probably couldn't load dependency libraries. For additional infos, modify the script 'libLoadErrorCheck.sh', run it and inspect the output.

So I went and modified the script, which gave this results:

javier@Phoenix:~/.../CoppeliaSim_Edu_V4_0_0_Ubuntu18_04$ ./libLoadErrorCheck.sh 
    linux-vdso.so.1 (0x00007fff27fbd000)
    libimage_transport.so => /opt/ros/noetic/lib/libimage_transport.so (0x00007f4bed9e8000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4bed9a3000)
    libtf.so => /opt/ros/noetic/lib/libtf.so (0x00007f4bed973000)
    libroscpp.so => /opt/ros/noetic/lib/libroscpp.so (0x00007f4bed7c3000)
    librosconsole.so => /opt/ros/noetic/lib/librosconsole.so (0x00007f4bed760000)
    libroscpp_serialization.so => /opt/ros/noetic/lib/libroscpp_serialization.so (0x00007f4bed759000)
    librostime.so => /opt/ros/noetic/lib/librostime.so (0x00007f4bed72d000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4bed54c000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4bed531000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4bed33f000)
    libmessage_filters.so => /opt/ros/noetic/lib/libmessage_filters.so (0x00007f4bed337000)
    libclass_loader.so => /opt/ros/noetic/lib/libclass_loader.so (0x00007f4bed30a000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4bed2e5000)
    libroslib.so => /opt/ros/noetic/lib/libroslib.so (0x00007f4bed2ca000)
    libboost_filesystem.so.1.71.0 => /lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 (0x00007f4bed2ac000)
    libtinyxml2.so.6 => /lib/x86_64-linux-gnu/libtinyxml2.so.6 (0x00007f4bed295000)
    libconsole_bridge.so.0.4 => /lib/x86_64-linux-gnu/libconsole_bridge.so.0.4 (0x00007f4bed28f000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f4bee0ad000)
    libtf2_ros.so => /opt/ros/noetic/lib/libtf2_ros.so (0x00007f4bed1d8000)
    libtf2.so => /opt/ros/noetic/lib/libtf2.so (0x00007f4bed198000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4bed049000)
    libxmlrpcpp.so => /opt/ros/noetic/lib/libxmlrpcpp.so (0x00007f4bed025000)
    libcpp_common.so => /opt/ros/noetic/lib/libcpp_common.so (0x00007f4bed017000)
    libboost_thread.so.1.71.0 => /lib/x86_64-linux-gnu/libboost_thread.so.1.71.0 (0x00007f4becfeb000)
    libboost_chrono.so.1.71.0 => /lib/x86_64-linux-gnu/libboost_chrono.so.1.71.0 (0x00007f4becfdd000)
    librosconsole_log4cxx.so => /opt/ros/noetic/lib/librosconsole_log4cxx.so (0x00007f4becfbb000)
    librosconsole_backend_interface.so => /opt/ros/noetic/lib/librosconsole_backend_interface.so (0x00007f4becfb6000)
    liblog4cxx.so.10 => /lib/x86_64-linux-gnu/liblog4cxx.so.10 (0x00007f4becdd8000)
    libboost_regex.so.1.71.0 => /lib/x86_64-linux-gnu/libboost_regex.so.1.71.0 (0x00007f4beccd8000)
    libPocoFoundation.so.62 => /lib/x86_64-linux-gnu/libPocoFoundation.so.62 (0x00007f4becb20000)
    librospack.so => /opt/ros/noetic/lib/librospack.so (0x00007f4becacf000)
    libactionlib.so => /opt/ros/noetic/lib/libactionlib.so (0x00007f4becaae000)
    libapr-1.so.0 => /lib/x86_64-linux-gnu/libapr-1.so.0 (0x00007f4beca75000)
    libaprutil-1.so.0 => /lib/x86_64-linux-gnu/libaprutil-1.so.0 (0x00007f4beca47000)
    libicui18n.so.66 => /lib/x86_64-linux-gnu/libicui18n.so.66 (0x00007f4bec748000)
    libicuuc.so.66 => /lib/x86_64-linux-gnu/libicuuc.so.66 (0x00007f4bec560000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f4bec555000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f4bec4e2000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f4bec4c6000)
    libboost_program_options.so.1.71.0 => /lib/x86_64-linux-gnu/libboost_program_options.so.1.71.0 (0x00007f4bec437000)
    libpython3.8.so.1.0 => /lib/x86_64-linux-gnu/libpython3.8.so.1.0 (0x00007f4bebee9000)
    libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f4bebede000)
    libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f4bebea3000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f4bebe75000)
    libicudata.so.66 => /lib/x86_64-linux-gnu/libicudata.so.66 (0x00007f4bea3b4000)
    libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f4bea3af000)

which I guess it means it did load every dependencies right. I know that I should not expect to download three repos with different commits and hope it works, but I tried going to the latest stable and I had the python 2 Issue, Which I wouldnt mind, I actually downloaded python2 trying to fix this problem, but that library for python2 .

Is there a link on how to build coppelia from scratch? or some helping hand? I am using ubuntu 20.04 and ros-noetic. downloaded master because the branch said it was for melodic only.

thanks in advance, and Im sorry if I didn't open a new issue and I should have, It seemed that this one had most of what I went through trying to fix my problems.