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?