prosilica_camera on an ARM plattform
Hello,
i am currently trying to get a manta 609B from allied vision tech to work an an arm platform. Unfortunately no binary install is available yet. If i try to install it from source, the whole compilation process works well, but as soon as i try to start camera driver i get the following error:
[ERROR] [1439993319.314367411]: Failed to load nodelet [/prosilica_driver] of type [prosilica_camera/driver]: Failed to load library /home/odroid/test_ws/devel/lib//libprosilica_nodelet.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library (Poco exception = libPvAPI.so: cannot open shared object file: No such file or directory)
I checked the the libraries. Both libprosilica_nodelet.so
and libPvAPI.so
can be found in the /devel/lib
folder.
Thank you for your answers.
EDIT1: Changed to package avtvimbacamera and added the needed arm libraries. Result:
/home/odroid/test_ws/src/avt_vimba_camera/src/avt_vimba_camera.cpp: In constructor 'avt_vimba_camera::AvtVimbaCamera::AvtVimbaCamera()':
/home/odroid/test_ws/src/avt_vimba_camera/src/avt_vimba_camera.cpp:87:84: warning: delegating constructors only available with -std=c++11 or -std=gnu++11 [enabled by default]
AvtVimbaCamera::AvtVimbaCamera() : AvtVimbaCamera(ros::this_node::getName().c_str()) {
^
g++-4.8.real: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
make[2]: *** [avt_vimba_camera/CMakeFiles/stereo_camera_node.dir/src/nodes/stereo_camera_node.cpp.o] Error 4
make[2]: *** Waiting for unfinished jobs....
Linking CXX executable /home/odroid/test_ws/devel/lib/avt_vimba_camera/mono_camera_node
make[1]: *** [avt_vimba_camera/CMakeFiles/stereo_camera_node.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[100%] Built target mono_camera_node
make: *** [all] Error 2
Invoking "make -j8 -l8" failed
EDIT2: I installed the AVT Software - Vimba v1.3 ARMHard-Float. Now i can use my Manta G609B with the package avtvimba_camera on my odroid XU3 . Unfortunately there are some frame rate restrictions. Depending on the resolution it will lower the frame rate automatically:
[ INFO] [1440425646.889163949]: New PixelFormat config (manta) :
PixelFormat : Mono8 was Mono8
[ INFO] [1440425646.899412146]: Asking for feature AcquisitionFrameRateLimit with datatype float and value 8.86603
[ WARN] [1440425646.900022564]: Max frame rate allowed: 8.86603. Setting 8...
Any ideas?
EDIT3: So i realized that the Odroid XU3 has just a FAST Ethernet controller... But no problem, i switched to an XU4, which has an GIG Ethernet Controller. But as always i got into more troubles: I am using the same launch file on the XU3, even the same microsd card!! So basically same system! The cameranode crashes after some time and it shows a really strange behavior... If i don't subscriber to the camera topic it runs forever. If i subscribe, for example with rostopic hz to check the frame rate, it crashes after some time. If i use imageview, i get the following error message from time to time:
[ERROR] [1356999010.655579398]: Unable to convert 'mono8' image to bgr8: 'Image is wrongly formed: step < width * byte_depth * num_channels or 1135 != 1280 * 1 * 1'
and then it crashes. The same stuff is running perfectly on my odroid XU3, but with a lower frame rate. Unfortunately i can't check the log file of the crash, because it doesn't exist. It looks a bit like some kind of packet loss on the Ethernet connection or? So i tested it with an USB3 to Gig Ethernet Adapter. Now i can get a higher framerates on the XU3, but the camera node crashes like on the XU4.
ANSWER: It turns out that the ethernet controller of the odroid is the bottleneck. It is only capable of a MTU packet size of around 4078.
Asked by Tirgo on 2015-08-19 09:14:38 UTC
Answers
I think the provided prosilica binaries only work on armel (soft-float), and all of the modern versions of ROS for ARM are armhf (hard-float).
You're likely getting a file not found
error because the executables are in the wrong format for your processor, and the kernel can't find an interpreter capable of running them (hence the file not found
is more like interpreter not found
).
I'm not aware of any drivers which support the AVT cameras on armhf; if you can find an armhf version of the newer VIMBRA libraries, you may be able to adapt the avt_vimbra_camera package to work on armhf.
Asked by ahendrix on 2015-08-22 02:14:29 UTC
Comments
Oh I didn't know that there is a newer version. So i changed to avt_vimbra_camera. To compile the package from source is not working on arm. But i added the arm-libraries as you mentioned and adjusted the CMakeList.txt file. Unfortunately i get now an other error. I updated my first question.
Asked by Tirgo on 2015-08-24 06:24:14 UTC
avt_vimbra_camera is now running on my odroid XU3. See the second EDIT.
Asked by Tirgo on 2015-08-24 09:16:39 UTC
That looks like the driver or the camera is limiting the frame rate. Are you sure it isn't bandwidth-limited by your network speed?
Asked by ahendrix on 2015-08-24 18:29:48 UTC
Yes it was some bandwidth issue. I swapped to my odroid XU4. But i am still facing same issues. You can check my latest EDIT. Thank you.
Asked by Tirgo on 2015-08-25 08:05:00 UTC
ANSWER: It turns out that the ethernet controller of the odroid is the bottleneck. It is only capable of a MTU packet size of around 4078.
Asked by Tirgo on 2015-12-09 02:53:13 UTC
Comments
I'd recommend to answer your own question, and then accept that answer. Right now the answer is 'hidden' behind the more button/link, which isn't that easy to find.
Asked by gvdhoorn on 2015-12-07 03:38:51 UTC