Comments (51)
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.
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.
That function should be part of the libavcodec
library which is correctly installed in /opt/ros/hydro/lib/
from data_compression.
The strange thing as that it is working on both my and Rares' machine but not on the robot...
from data_compression.
Ok, hold on, that last part might not hold.
from data_compression.
does it load things dynamically, probably?
from data_compression.
I mean using dl_load
from data_compression.
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.
Eh, now you're speaking past me=).
from data_compression.
The image_transport republish
loads the library dynamically if that's what you mean. Using pluginlib I think.
from data_compression.
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.
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.
hmmm, doesn't complain for me
from data_compression.
Do you have a camera publishing on the in topic?
from data_compression.
ah. nope...
from data_compression.
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.
got it working... and failing
from data_compression.
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.
Ok, cool.
from data_compression.
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.
hmm.... you're probably right...
from data_compression.
I'm still new to this debian stuff... I don't know for sure what's going on here. TBH
from data_compression.
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.
Fingers crossed!
from data_compression.
didn't work... It's got symbols now, but still not the link to the other file
from data_compression.
no idea really, sorry. And I have to call it day now. Pretty knackered.
from data_compression.
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.
Maybe we should try to just remove that line?
from data_compression.
Could try... though I really don't understand the consequences. That command seems magic...
from data_compression.
TBH, me neither. It's in the original package though.
from data_compression.
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.
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.
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.
I didn't do anything. give it a shot and let me know to re-release.
from data_compression.
Ok, merged: #54. Please try again.
from data_compression.
No luck there...=(
from data_compression.
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.
I think I messed things up in that attempt, will try a new one.
from data_compression.
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.
Yeah, exactly=). Will change that now.
from data_compression.
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.
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.
Good news! This was it! Now I just gotta figure out how to solve it!
from data_compression.
Yes, that is the difference! But I still don't see what the problem is...
from data_compression.
#57 should fix it, works on my machine at least.
from data_compression.
See https://lcas.lincoln.ac.uk/jenkins/job/pr-hydro-data_compression/11/console
Sorry I'm mostly offline tonight...
from data_compression.
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.
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.
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/consoleSorry I'm mostly offline tonight...
—
Reply to this email directly or view it on GitHub
#52 (comment)
.
from data_compression.
see private email!
from data_compression.
Happy to close this now...
from data_compression.
Related Issues (20)
- Associate depth and rgb frames HOT 1
- Complete rgb support HOT 1
- Put this in a properly named repository
- openni_saver build fails. HOT 2
- Use regular expressions to exlude image topics when recording rosbag HOT 1
- Decompress new video frames as needed
- Jenkins reported broken build HOT 2
- Add ros node to do the compression directly from the openni_camera node. HOT 1
- Adapt openni_launch nodes to work with strandsbag
- Hydro compile HOT 3
- Remove repo ahead of release HOT 2
- [catkinized_libav] Add proper install targets HOT 15
- specifing the date when replaying a recorded video HOT 2
- [catkinized_libav] Get both install and devel build to work HOT 1
- indigo release? HOT 16
- No depth recorded HOT 12
- Investigate if theora and h264 compression in libav
- Dependencies in CMakeLists.txt and package.xml HOT 3
- Play back openni topics from video together with rosbag HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from data_compression.