Giter Site home page Giter Site logo

Comments (51)

marc-hanheide avatar marc-hanheide commented on July 18, 2024

No, I don't get this... Is libav_image_transport your code? And why would it be linking when installed via apt-get?

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Yes, or I've done the linking part in there. I mean the library that I install via apt-get should link the libav libraries also installed via apt-get (when checked via ldd /hydro/lib/liblibav_image_transport.so). That it doesn't seem to be the problem on the robot. It fails because of: /opt/ros/hydro/lib/image_transport/republish: symbol lookup error: /opt/ros/hydro/lib//liblibav_image_transport.so: undefined symbol: avcodec_register_all.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

That function should be part of the libavcodec library which is correctly installed in /opt/ros/hydro/lib/

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

The strange thing as that it is working on both my and Rares' machine but not on the robot...

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Ok, hold on, that last part might not hold.

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

does it load things dynamically, probably?

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

I mean using dl_load

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

I discovered that you need to have a camera stream before the node actually crashes. So the common denominator between all computers is that the apt-get does not work, but catkin_make install && rm -rf build devel && source install.setup.bash and run works.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Eh, now you're speaking past me=).

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

The image_transport republish loads the library dynamically if that's what you mean. Using pluginlib I think.

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

nevermind... but what the .... yes, that's what I mean. I can't really see why that should be different. Hmmmm. I'll try to think a bit more in a bit

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

You can try it by running e.g. rosrun image_transport republish raw in:=/head_xtion/depth/image_raw libav out:=/toes, given that you have a camera feed.

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

hmmm, doesn't complain for me

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Do you have a camera publishing on the in topic?

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

ah. nope...

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

I can supply you with a rosbag tomorrow if you want to try. It didn't work on the two machines where I had a camera.

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

got it working... and failing

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

the problem is that all libraries are stripped of the symbols... so dlopen calls like in pluginlib are probably not supported that easily...

$ nm -C /opt/ros/hydro/lib//liblibav_image_transport.so
nm: /opt/ros/hydro/lib//liblibav_image_transport.so: no symbols

I'll investigate

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Ok, cool.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Are you sure that is not that the libraries are not linked correctly? The library liblibav_image_transport should link e.g. libavcodec and libavutil, which show up when I do ldd liblibav_image_transport.so on my locally compiled installed system. The apt-get library does not show them when I check with ldd however.

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

hmm.... you're probably right...

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

I'm still new to this debian stuff... I don't know for sure what's going on here. TBH

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

I have made a fix to avoid stripping that lib. Stripping can also include removing unnecessary links, so maybe it makes a difference...

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Fingers crossed!

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

didn't work... It's got symbols now, but still not the link to the other file

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

no idea really, sorry. And I have to call it day now. Pretty knackered.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Hmm... I've done a little bit of research. First, to explain the setup: catkinized_libav exports a library through catkin, libav_wrap, that links all of the libraries in libav:
https://github.com/strands-project/data_compression/blob/hydro-devel/catkinized_libav/CMakeLists.txt#L43
libav_image_transport then depends on that catkin project and links libav_wrap through ${catkin_LIBRARIES}:
https://github.com/strands-project/data_compression/blob/hydro-devel/libav_image_transport/CMakeLists.txt#L9
This seems to make libav_image_transport link the libav libraries when you install it on your own system.

I also found a line it the CMake that could have something to do with this:
https://github.com/strands-project/data_compression/blob/hydro-devel/libav_image_transport/CMakeLists.txt#L147
and a thread on an issue that could be related:
ros-perception/perception_pcl#9

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Maybe we should try to just remove that line?

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

Could try... though I really don't understand the consequences. That command seems magic...

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

TBH, me neither. It's in the original package though.

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

I just checked the last build log: https://lcas.lincoln.ac.uk/jenkins/job/ros-hydro-libav-image-transport_binarydeb_precise_amd64/4/console Nothing obvious in there that looks different to what you would do on your own machine.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Have you tried building and installing on yours? Shouldn't be necessary though since it worked on two other machines=P. I'll try removing the line and check what happens when I build locally.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Yeah, it's still working so maybe it's worth a try. Did you already do it or should I supply a patch?

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

I didn't do anything. give it a shot and let me know to re-release.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Ok, merged: #54. Please try again.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

No luck there...=(

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

EDIT: Forget this, will try again
Ok @marc-hanheide , so you reported make[4]: *** No rule to make target devel/lib/libavcodec.so, needed by devel/lib/liblibav_image_transport.so. Stop. from the build farm. This does not happen on my system. Does this mean that the files required by libav_image_transport at https://github.com/strands-project/data_compression/blob/hydro-devel/libav_image_transport/CMakeLists.txt#L155 do not exist in the build server when this is compiled? They do exist after installing with apt-get in /opt/ros/hydro/lib. Or is it faulty to define it this way? It seems to work for libav_wrap: https://github.com/strands-project/data_compression/blob/hydro-devel/catkinized_libav/CMakeLists.txt#L40 which compiles on the build farm.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

I think I messed things up in that attempt, will try a new one.

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

Yes, the problem is that it expects that lib in the devel space: devel/lib/libavcodec.so and it certainly does not exist in there.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Yeah, exactly=). Will change that now.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

But on the build farm, /opt/ros/hydro/lib should be in LD_LIBRARY_PATH right? So there shouldn't be any need of prefixing the path?

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

So I'm beginning to see what the problem might be. There is one difference when building on the build farm vs locally. I'm guessing that on the build farm, the package catkinized_libav is built for itself and then installed. That installed library is then used to build libav_image_transport. Locally I build the packages together, so libav_image_transport uses the catkinized_libav in devel for building and linking. These are then installed together. Gonna try to verify that this is the problem.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Good news! This was it! Now I just gotta figure out how to solve it!

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

Yes, that is the difference! But I still don't see what the problem is...

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

#57 should fix it, works on my machine at least.

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

See https://lcas.lincoln.ac.uk/jenkins/job/pr-hydro-data_compression/11/console

Sorry I'm mostly offline tonight...

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Wow, that's pretty devastating=(. This works fine on my machine when I first compile and install catkinized_libav and then compile libav_image_transport using the installed library. I don't understand the error message... Shouldn't it try to compile catkinized_libav (which is a dependency of libav_image_transport) before trying to read its libraries? Anyways, I'm going to bed now, see you tomorrow.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Specifically, I'm confused about the help offered:

CMake Error at /tmp/test_repositories/build_repository/devel/share/catkinized_libav/cmake/catkinized_libavConfig.cmake:141 (message):
  Project 'libav_image_transport' tried to find library 'avdevice'.  The
  library is neither a target nor built/installed properly.  Did you compile
  project 'catkinized_libav'? Did you find_package() it before the
  subdirectory containing its code is included?

In the log, I don't see catkinized_libav being built, which it should, since I did indeed find_package() it.

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Is there any way to give me temporary access to trigger re-releases of data
compression?
Den 22 nov 2014 00:00 skrev "Marc Hanheide" [email protected]:

See
https://lcas.lincoln.ac.uk/jenkins/job/pr-hydro-data_compression/11/console

Sorry I'm mostly offline tonight...


Reply to this email directly or view it on GitHub
#52 (comment)
.

from data_compression.

marc-hanheide avatar marc-hanheide commented on July 18, 2024

see private email!

from data_compression.

nilsbore avatar nilsbore commented on July 18, 2024

Happy to close this now...

from data_compression.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.