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

prosilica intrinsincs parameters failed to load

asked 2011-06-13 21:40:23 -0500

YBLD gravatar image

updated 2011-06-13 23:05:47 -0500

KoenBuys gravatar image

Hey All,

I'm experiencing problems with a GC1380C prosilica camera. The camera is connected through a fast Ethernet interface, which I know is not optimal but still the SampleViewer works. I've access to different parameters, I can modify them, I can see the video stream etc... However, whenever I'm trying to use the camera as follow : roslaunch prosilica.launch, I'm getting error :

SUMMARY
========

PARAMETERS
 * /rosversion
 * /prosilica_driver/trigger_mode
 * /rosdistro
 * /prosilica_driver/ip_address

NODES
  /
    prosilica_driver (prosilica_camera/prosilica_node)

auto-starting new master
process[master]: started with pid [9439]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 1ee20ff0-9668-11e0-92a6-705ab6776520
process[rosout-1]: started with pid [9452]
started core service [/rosout]
process[prosilica_driver-2]: started with pid [9455]
[ WARN] [1308043480.937092818]: Detected max data rate is 12400000 bytes/s, typical         maximum data rate for a GigE port is 115000000 bytes/s. Are you using a GigE network card and cable?

[ INFO] [1308043480.950345618]: Found camera, guid = 37112
[ WARN] [1308043480.951187554]: Failed to load intrinsics from camera
terminate called after throwing an instance of 'prosilica::ProsilicaException'
  what():  Couldn't get range of attribute StreamBytesPerSecond: Camera was unplugged
[prosilica_driver-2] process has died [pid 9455, exit code -6].
log files: /home/iis-xs/.ros/log/1ee20ff0-9668-11e0-92a6-705ab6776520/prosilica_driver-    2*.log
^C[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete

The IP address in prosilica.launch is the good one. Any idea what could be the origin of this error ?

Thank you very much,

edit retag flag offensive close merge delete

7 Answers

Sort by ยป oldest newest most voted
0

answered 2011-06-16 03:02:09 -0500

YBLD gravatar image

updated 2011-06-17 12:12:45 -0500

tfoote gravatar image

Thank very much for your help. It tried both methods. I actually have dropped packets. The log is :

[rospy.client][INFO] 2011-06-16 17:00:10,089: init_node, name[/runtime_monitor_11983_1308236410083], pid[11983]
[xmlrpc][INFO] 2011-06-16 17:00:10,090: XML-RPC server binding to 0.0.0.0
[xmlrpc][INFO] 2011-06-16 17:00:10,090: Started XML-RPC server [http://iis-xs-Satellite-Pro-L500:34239/]
[rospy.init][INFO] 2011-06-16 17:00:10,090: ROS Slave URI: [http://iis-xs-Satellite-Pro-L500:34239/]
[rospy.impl.masterslave][INFO] 2011-06-16 17:00:10,090: _ready: http://iis-xs-Satellite-Pro-L500:34239/
[xmlrpc][INFO] 2011-06-16 17:00:10,093: xml rpc node: starting XML-RPC server
[rospy.registration][INFO] 2011-06-16 17:00:10,094: Registering with master node http://localhost:11311
[rospy.init][INFO] 2011-06-16 17:00:10,191: registered with master
[rospy.rosout][INFO] 2011-06-16 17:00:10,192: initializing /rosout core topic
[rospy.rosout][INFO] 2011-06-16 17:00:10,196: connected to core topic /rosout
[rospy.simtime][INFO] 2011-06-16 17:00:10,199: /use_sim_time is not set, will not subscribe to simulated time [/clock] topic
[rospy.internal][WARNING] 2011-06-16 17:00:28,642: Unknown error initiating TCP/IP socket to iis-xs-Satellite-Pro-L500:38642 (http://iis-xs-Satellite-Pro-L500:56842/): Traceback (most recent call last):
  File "/opt/ros/diamondback/stacks/ros_comm/clients/rospy/src/rospy/impl/tcpros_base.py", line 472, in connect
    self.socket.connect((dest_addr, dest_port))
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 111] Connection refused

From the Sample Viewer, I tune the packet size to 1500 which seems to work. However, it seems that the driver tries to optimize this size and as a result change it a larger value, which cause the Sample Viewer to crash too. When I use the SDK taken from Prosilica website, I do not encounter such issues using the same fast Ethernet interface. I can't actually change to network interface as I'm using a laptop. I'm currently checking if there is a problem in the driver code.

edit flag offensive delete link more

Comments

Hi Did you find the problem in the end? I am also having problems with the prosilica_camera. I also get "failed to load intrinsics from camera"

eirikaso gravatar image eirikaso  ( 2014-02-22 02:33:39 -0500 )edit
0

answered 2011-06-16 11:06:52 -0500

Patrick Mihelich gravatar image

OK, that's interesting. The driver does try to optimize the packet size; the relevant code is in Camera::setup() in src/libprosilica/prosilica.cpp:

// adjust packet size according to the current network capacity
tPvUint32 maxPacketSize = 8228;
PvCaptureAdjustPacketSize(handle_, maxPacketSize);

8228 is a Jumbo Frame size, and the camera default on power up. PvCaptureAdjustPacketSize is supposed to determine the maximum packet size supported by the system, and configure the camera to use that value or maxPacketSize, whichever is lower.

It sounds like there's something kooky about your network card or system that's causing it to report an incorrect max packet size.

Can you try changing maxPacketSize to 1500, recompile prosilica_camera, and see if that works?

For reference, SampleViewer instead does:

tPvUint32 lMaxSize = 8228;

// get the last packet size set on the camera
PvAttrUint32Get(lHandle,"PacketSize",&lMaxSize);
// adjust the packet size according to the current network capacity
PvCaptureAdjustPacketSize(lHandle,lMaxSize);

Which seems a bit odd. That code will never increase the packet size, only decrease it.

edit flag offensive delete link more
0

answered 2011-06-14 01:49:11 -0500

YBLD gravatar image

Well, since you suggested it, I have been trying to do the calibration step as written in the troubleshooting page. The exception actually cause the calibration to fail as I'm not able to access the video stream.

edit flag offensive delete link more
0

answered 2011-06-14 08:22:38 -0500

KoenBuys gravatar image

Have you tried manually setting the StreamBytesPerSecond configuration in the Prosilica program? and restarting in Linux to run ROS? It seems like a failure because of the fast ethernet (switching back to default gigabit because of unset value).

edit flag offensive delete link more
0

answered 2011-06-16 06:49:29 -0500

KoenBuys gravatar image

Adjusting the MTU only works if your entire network setup supports this, otherwise a router or NIC might chop them up again in smaller frames.

edit flag offensive delete link more
0

answered 2011-06-14 14:37:17 -0500

Patrick Mihelich gravatar image

updated 2011-06-15 08:11:51 -0500

We've seen this sort of thing before, e.g. #ros-pkg4481. Usually it's because of too many dropped packets between the camera and computer. Can you please post the diagnostics - before starting the Prosilica, do:

rosrun runtime_monitor monitor

Then start the Prosilica driver with streaming.launch (prosilica.launch starts the camera in polled mode, so it won't automatically stream images). Look at the Packet Statistics component in the runtime monitor. On a properly configured GigE network there shouldn't be any dropped packets. On Fast Ethernet some (warning level) lost packets are expected, but things should still work.

If the error always happens on the very first diagnostics collection, we'll have to try something else. But hopefully that's not the case.

edit flag offensive delete link more
0

answered 2011-06-13 23:07:30 -0500

KoenBuys gravatar image

Did you run the camera calibration on this camera? After the camera calibration ran successfully the camera calibration matrices are stored in the internal eeprom of the camera and loaded each time the node starts.

edit flag offensive delete link more

Question Tools

Stats

Asked: 2011-06-13 21:40:23 -0500

Seen: 1,600 times

Last updated: Jun 17 '11