ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Because images are very large, they will be split into many datagrams when being sent over the wire. If ANY of those datagrams are lost, the entire image is lost. This could be what is happening in your case.
Even with large datagrams (~9000 bytes with jumbo frames), your image (roughly 3202404 = 307200 bytes) will be split into ~35 packets. The chance that all of the make it (assuming 1% packet loss) is 0.99 ^ 35 = ~0.703, or 70%. If you don't have jumbo frames turned on, your datagram size will be closer to 1500 bytes, resulting in about 200 datagrams, and the chance that all of these make it is about 0.99 ^ 200 = ~0.133 or 13%. Higher packet loss rates and smaller datagrams will make this even worse.
It's also possible that something else is wrong here; perhaps datagrams are being truncated or the topic type isn't being negotiated properly.