0
$\begingroup$

Rosanswers logo

I am running Diamondback (ros-diamondback-desktop-full) on Ubuntu 10.04 (x86_64). I have a Prosilica GC750C camera that I am trying to get working, but having some issues. I am following the tutorials found at (http://www.ros.org/wiki/prosilica_camera/Tutorials). My question is: what am I doing wrong in the steps below? My goal is to get a stereo pair of Prosilica cameras working so that I can use the stereo_image_proc tools.

I installed the camera_drivers stack using

sudo apt-get install ros-diamondback-camera-drivers

I plugged in the Prosilica camera and ran

rosrun prosilica_gige_sdk ListCameras

This resulted in the error message

/opt/ros/diamondback/stacks/camera_drivers/prosilica_gige_sdk/bin/ListCameras: error while loading shared libraries: libPvAPI.so: cannot open shared object file: No such file or directory

As root, I created a file /etc/ld.so.conf.d/libPvAPI.conf with contents

/opt/ros/diamondback/stacks/camera_drivers/prosilica_gige_sdk/lib

and ran

sudo ldconfig

I tried the ListCameras utility again and received

No camera detected ...
02-2161A-06188 -   GC750C - Unique ID =   119898 IP@ =   192.168.1.101 [available]

Already this does not feel right. I don't think I should need to mess with ldconfig using root permissions.

I ran the Ping utility and received

-> 02-2161A-06188 - GC750C
Mode supported:     FIXED,DHCP,AutoIP
Current mode:       FIXED
Current address:    192.168.1.101
Current subnet:     255.255.255.0
Current gateway:    192.168.1.1

All of those details look reasonable and correct for my network.

I copied the prosilica.launch file from (http://www.ros.org/wiki/prosilica_camera/Tutorials/DesktopProsilicaConfiguration), modified the IP address to match the one I found using the prosilica_gige_skd tools, and used roslaunch. The result was

SUMMARY
========

PARAMETERS
 * /rosdistro
 * /prosilica/auto_gain
 * /prosilica/trigger_mode
 * /prosilica/auto_whitebalance
 * /prosilica/auto_exposure
 * /rosversion
 * /prosilica/frame_id
 * /prosilica/ip_address

NODES
  /
    prosilica (prosilica_camera/prosilica_node)

ROS_MASTER_URI=http://localhost:11311

core service [/rosout] found
process[prosilica-1]: started with pid [8380]
pure virtual method called
terminate called without an active exception
[prosilica-1] process has died [pid 8380, exit code -6].

log files: /home/thomas/.ros/log/c85a84cc-506d-11e0-9566-00241dd070f2/prosilica-1*.log
all processes on machine have died, roslaunch will exit
shutting down processing monitor...
... shutting down processing monitor complete
done

The log contains

[roscpp_internal] [2011-03-17 09:55:32,672] [thread 0x7f3b9084b760]: [DEBUG] UDPROS server listening on port [51639]
[roscpp_internal] [2011-03-17 09:55:32,677] [thread 0x7f3b9084b760]: [DEBUG] Started node [/prosilica], pid [8380], bound on [antec], xmlrpc port [40836], tcpros port [52187], logging to [/home/thomas/.ros/log/c85a84cc-506d-11e0-9566-00241dd070f2/prosilica-1.log], using [real] time
[roscpp_internal] [2011-03-17 09:55:32,920] [thread 0x7f3b885b8700]: [DEBUG] Accepted connection on socket [7], new socket [26]
[roscpp_internal] [2011-03-17 09:55:32,920] [thread 0x7f3b885b8700]: [DEBUG] TCPROS received a connection from [127.0.1.1:37805]
[roscpp_internal] [2011-03-17 09:55:32,921] [thread 0x7f3b885b8700]: [DEBUG] Connection: Creating TransportSubscriberLink for topic [/rosout] connected to [callerid=[/rosout] address=[TCPROS connection to [127.0.1.1:37805 on socket 26]]]
[roscpp_internal] [2011-03-17 09:55:34,026] [thread 0x7f3b9084b760]: [DEBUG] shutting down service [/prosilica/self_test]

I noticed this thread (http://ros-users.122217.n3.nabble.com/Problem-with-Prosilica-camera-td2604774.html) but I am fairly certain that my launch file has the correct IP address for the camera. It seems the launch file tags do not make it past the parser for this site, but the only thing I modified from the tutorial was the IP address 192.168.1.101.

Using gdb from a launch file (which is a very useful tool, thanks for the pointer Eric) gives a backtrace of

Program received signal SIGABRT, Aborted. 0x00007ffff3563a75 in
*__GI_raise (sig=<value optimized out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 64      ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
        in ../nptl/sysdeps/unix/sysv/linux/raise.c (gdb) bt
#0  0x00007ffff3563a75 in *__GI_raise (sig=<value optimized out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff35675c0 in *__GI_abort () at abort.c:92
#2  0x00007ffff40368e5 in __gnu_cxx::__verbose_terminate_handler() ()    from /usr/lib/libstdc++.so.6
#3  0x00007ffff4034d16 in ?? () from /usr/lib/libstdc++.so.6
#4  0x00007ffff4034d43 in std::terminate() () from /usr/lib/libstdc++.so.6
#5  0x00007ffff403561f in __cxa_pure_virtual () from /usr/lib/libstdc++.so.6
#6  0x00007ffff5e07e33 in ros::ServiceManager::unadvertiseService (
    this=0x7ffff60ad860, serv_name=...)
    at /tmp/buildd/ros-diamondback-ros-comm-1.4.5/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/service_manager.cpp:196
#7  0x00007ffff5e5f7a9 in ros::ServiceServer::Impl::unadvertise (this=0x6cde90)
    at /tmp/buildd/ros-diamondback-ros-comm-1.4.5/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/service_server.cpp:57
#8  0x00007ffff5e5f8de in ~Impl (this=0x6cde90, 
    __in_chrg=<value optimized out>)
    at /tmp/buildd/ros-diamondback-ros-comm-1.4.5/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/service_server.cpp:44
#9  0x00007ffff5e60192 in checked_delete<ros::ServiceServer::Impl> (
---Type <return> to continue, or q <return> to quit---
    this=<value optimized out>) at /usr/include/boost/checked_delete.hpp:34
#10 boost::detail::sp_counted_impl_p<ros::ServiceServer::Impl>::dispose (
    this=<value optimized out>)
    at /usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp:78
#11 0x00007ffff5e5f5f9 in boost::detail::sp_counted_base::release (
    this=<value optimized out>, __in_chrg=<value optimized out>)
    at /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp:145
#12 ~shared_count (this=<value optimized out>, __in_chrg=<value optimized out>)
    at /usr/include/boost/smart_ptr/detail/shared_count.hpp:217
#13 ~shared_ptr (this=<value optimized out>, __in_chrg=<value optimized out>)
    at /usr/include/boost/smart_ptr/shared_ptr.hpp:169
#14 ~ServiceServer (this=<value optimized out>, 
    __in_chrg=<value optimized out>)
    at /tmp/buildd/ros-diamondback-ros-comm-1.4.5/debian/ros-diamondback-ros-comm/opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/src/libros/service_server.cpp:76
#15 0x000000000044b46e in ~TestRunner (this=0x6ceb28, 
    __in_chrg=<value optimized out>)
    at /opt/ros/diamondback/stacks/diagnostics/self_test/include/self_test/self_test.h:69
#16 0x0000000000459ac0 in ProsilicaNode (this=0x6ce7c0, 
    node_handle=<value optimized out>)
    at /tmp/buildd/ros-diamondback-camera-drivers-1.4.1/debian/ros-diamondback-c---Type <return> to continue, or q <return> to quit--- amera-drivers/opt/ros/diamondback/stacks/camera_drivers/prosilica_camera/src/nodes/prosilica_node.cpp:184
#17 0x0000000000431cb6 in main (argc=1, argv=<value optimized out>)
    at /tmp/buildd/ros-diamondback-camera-drivers-1.4.1/debian/ros-diamondback-camera-drivers/opt/ros/diamondback/stacks/camera_drivers/prosilica_camera/src/nodes/prosilica_node.cpp:830 (gdb)

Thanks,

Thomas


Originally posted by Thomas D on ROS Answers with karma: 4347 on 2011-03-17

Post score: 1


Original comments

Comment by Thomas D on 2011-03-21:
I have also downloaded the Prosilica SDK from (http://www.alliedvisiontec.com/us/products/software/linux/gige-linux-sdk.html) and run their SampleViewer. The camera was auto-detected and I could see regular video. Somehow, I am not getting ROS setup correctly to do the same thing though.

Comment by Thomas D on 2011-03-18:
Does anyone else have a Prosilica camera that they can use to test the prosilica_camera node functionality? Specifically, run the launch file from the tutorial (http://www.ros.org/wiki/prosilica_camera/Tutorials/DesktopProsilicaConfiguration), and then use image_view to see data?

Comment by Eric Perko on 2011-03-17:
Could you try to launch the node in GDB using the directions available here: http://www.ros.org/wiki/roslaunch/Tutorials/Roslaunch%20Nodes%20in%20Valgrind%20or%20GDB and, when the node crashes, type "bt" and update your question to include the backtrace?

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

I've only seen this error when the ROS Prosilica node can't find the requested camera.

First thing to try: if SampleViewer is able to auto-detect your camera, prosilica_node should also be able to. Remove the ip_address parameter from your launch file, and make sure it's not still set on the parameter server. Then when you launch prosilica_node, it will open the first camera it finds.

I'd recommend checking out trunk of the camera_drivers stack for further trouble-shooting. Trunk fixes the prosilica_gige_sdk programs, and fixes the 'pure virtual method' nonsense so you get a backtrace for the actual error. You can use rosinstall with configuration

- svn: {local-name: camera_drivers, uri: 'https://code.ros.org/svn/ros-pkg/stacks/camera_drivers/trunk'}

Originally posted by Patrick Mihelich with karma: 4336 on 2011-03-22

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by Thomas D on 2011-03-23:
That works... Gives warning about reconfigure callback and horizontal binning but that's OK. Has warning about intrinsics, but it's not calibrated yet. I haven't verified that image_view works but still need to follow those tutorials. Should I see image_raw with 'rostopic list'? Thanks for the help!

Comment by Patrick Mihelich on 2011-03-23:
OK. I have a couple open tickets for similar issues (no white balance or autogain). I'll try to batch-fix those sometime this week. To get further in the meantime, you could open prosilica_node.cpp, comment out calls to setBinning and use binning values of 1 instead of getAttribute("Binning?").

Comment by Thomas D on 2011-03-23:
The problem seems to be that the GC750C does not have support for binning. After using rosinstall to get camera_drivers I see the error: {{{terminate called after throwing an instance of 'prosilica::ProsilicaException' what(): Couldn't set horizontal binning: Camera or attribute not found}}}

Comment by Thomas D on 2012-03-24:
I have attached a patch on Ticket #5407 for prosilica_driver that lets me use these cameras fairly well.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.