Hi, so over the build season our team developed a vision system that uses a raspberry pi to grab frames from two cameras and send both frames to a local HTTP MJPEG Server Thread. Each camera image is sent a different port on the server, so one image is sent to address ‘127.0.0.1:9090’ and another to ‘127.0.0.1:9090’. On our control PC, we have another python script running a Tkinter GUI, which grabs frames from each url, and displays them to a user.
The code for the server can be found here:
GUI:
What we didn’t anticipate, was the latency faced when streaming two cameras simultaneously while controlling the robot, which is why we wanted to add a UDP send thread that will send a key from the control PC to the rpi, indicating which camera feed should be displayed based on a user input. When reviewing the rules, I found:
Are we allowed to setup our HTTP MJPEG stream on port 80, which is meant for roborio camera streaming, if we don’t have any cams connected to the roborio?
Am I allowed to send UDP data from my control computer to the roborio on ports 5800 -5810 during the match?
If we were to setup the MJPEG stream on ports 5800 - 5810, what might happen?
I think that port 80 is meant for an Axis/IP camera and not the RIO itself (as that’s where the Silverlight interface is), but the table is a bit vague. I think you should be fine running a camera stream from a Pi on that port, but I’m not sure.
Yup. That’s the purpose of those ports.
It appears that it’s fine to put a MJPEG stream there.