roboception / rc_genicam_camera

ROS node / nodelet for GenICam cameras
BSD 3-Clause "New" or "Revised" License
9 stars 4 forks source link

Incomplete buffer received #6

Open Dhruval360 opened 1 year ago

Dhruval360 commented 1 year ago

Whenever I run three instances of rc_genicam_camera, I see a [ WARN] [1681181861.204876667]: rc_genicam_camera: Incomplete buffer received warning. I followed all the network related optimizations mentioned in the documentation.

networkDevice=$(basename /sys/class/net/e*)

read -p "Is this the Network Device? $networkDevice  (y/n) " answer

if [[ "$answer" == "y" || "$answer" == "" ]]; then
    echo "Proceeding..."
elif [[ "$answer" == "n" ]]; then
    read -p "Enter the Network Device: " networkDevice
else
    echo "Invalid input. Please enter 'y' or 'n'."
    exit
fi
echo Turning $networkDevice off...
sudo ifconfig $networkDevice down
echo Set $networkDevice\'s MTU to 9000
sudo ifconfig $networkDevice mtu 9000
echo Turning $networkDevice on...
sudo ifconfig $networkDevice up
sudo sysctl -w net.core.netdev_max_backlog=48000
sudo sysctl -w net.core.rmem_max=2147483647

I have also verified that my network connection has enough bandwidth. Could you help me understand why this is happening and how I could mitigate this issue?

Platform: NVIDIA Jetson Orin 5.10.104-tegra

Do let me know what more information I could share to help you debug this issue faster. Thanks!

flixr commented 1 year ago

While average bandwidth might be sufficient, you probably loose packets in the peaks. You could check if you loose packets in your switch and/or use a more powerful switch with larger buffer. And of course check on the Orin if you see packets that are dropped by the kernel because you didn't read them fast enough, check nic statistics and if you send pause frames (which would indicate too much data).