ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
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.