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

Revision history [back]

click to hide/show revision 1
initial version

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.