Streaming Video over mobile network
It seems to me baffling how this problem can be so hard to find a solution for. On my robot I produce 15 fps 720p footage which I sometimes need to check while running. This is proving increasingly difficult. Subscribing to any image output topic grinds the whole connection to a halt until I stop subscribing, since the bandwidth required to transport raw images at that rate greatly exceeds what I can expect to get out of a 4G based mobile connection. I can't possibly be alone in experiencing this problem. I'm running ROS2 Foxy on a Jetson Xavier.
Here are a few things I have tried:
- Use Gstreamer to stream via RTSP. Works fine, but locks the camera for use with Gstreamer, meaning SLAM packages can't use it.
- Use
image_transport
with compressed data. Does not work, seems to have issues with OpenCV[image_view_node]: OpenCV(4.5.4) /tmp/OpenCV/modules/core/src/matrix.cpp:250: error: (-215:Assertion failed) s >= 0 in function 'setSize'
- Use
image_transport
with theora data. Does not work, same crash as above. Also seems like a bad match for ROS2 since there's no latching (right?), and the theora header needs to come before the rest of the data.
I'm at quite a loss. The data is transmitted fine, and with compressed (or theora) data I can receive it without choking my network. I can not, for the life of me, view the image, however. What other options are reasonable to try here? Am I misconfiguring something? Is this too much to ask?