ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

Trouble with prosilica_camera, PvAPI

asked 2011-03-17 05:10:36 -0500

Thomas D gravatar image

updated 2011-03-23 15:44:45 -0500

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_cam... ). 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_cam... ), 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... ) but I am fairly ... (more)

edit retag flag offensive close merge delete

Comments

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?
Eric Perko gravatar image Eric Perko  ( 2011-03-17 05:59:09 -0500 )edit
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?
Thomas D gravatar image Thomas D  ( 2011-03-18 13:50:09 -0500 )edit
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.
Thomas D gravatar image Thomas D  ( 2011-03-21 04:25:46 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2011-03-22 12:50:54 -0500

Patrick Mihelich gravatar image

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'}
edit flag offensive delete link more

Comments

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}}}
Thomas D gravatar image Thomas D  ( 2011-03-23 13:56:21 -0500 )edit
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?").
Patrick Mihelich gravatar image Patrick Mihelich  ( 2011-03-23 14:09:45 -0500 )edit
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!
Thomas D gravatar image Thomas D  ( 2011-03-23 15:33:23 -0500 )edit

I have attached a patch on Ticket #5407 for prosilica_driver that lets me use these cameras fairly well.

Thomas D gravatar image Thomas D  ( 2012-03-24 09:08:02 -0500 )edit

Question Tools

Stats

Asked: 2011-03-17 05:10:36 -0500

Seen: 1,423 times

Last updated: Mar 25 '11