Would it possible to run them on the external computer like jetson that physicall conencted in the same LAN network with raspberry pi/navigator that runs stable version of (BlueOS/ardusub).
The reason is → I am currently running 4 exploreHD cameras connected to the hub which connected directly to raspberry pi on USB3.0 and whenever I want to record the all 4 video source (FullHD) INSIDE the rasberry pi I have problem to do that while I am streaming them through the gstremaer using h264 over the network (100m thether and xfathom module) to topside computer.
There is no problem running it 1 or 2 cameras but for more than that I believe this is obvious limitation of the raspberry pi 4b, thus I was wondering if I can run the same pipeline but within the jetson, and jetson would have better chance to handle recording 4 camera and streaming it to the to the network to topside computer so Cockpit/QGC will receve it.
I dont have problem with writing an external node, but I want to know if there is an existing solution, for that one.
If I would need to write custom node, I assume I simply need to open a stream from the jetson and send it over the UDP using gstreamer and Cockpit should receve it (assming the source of jetson’s ip addres is mentioned in the cockpit video settings). Correct me if I am wrong
Hi @nurjan14 -
I’m a bit confused why running a BlueOS extension “externally” is relevant to the application you describe - recording / streaming 4 video streams.
If you can lower the bitrate of the cameras, via the DWE OS extension, then you can likely handle streaming all 5 (4 + 1 standard ROV camera) via the Raspberry Pi - you may need more power than the 5V supply of the Raspberry Pi can provide. If you just need to record the streams at maximum quality, without streaming them over the tether, than I’d recommend connecting them to a dedicated SBC on the vehicle (separate from BlueOS Pi / Navigator) and streaming / recording them from there.
A BlueOS extension is a docker container that runs within BllueOS. A secondary computer onboard your vehicle doesn’t need to be running BlueOS, and developing the software to run on “bare metal” rather than as a docker container usually lends itself to higher performance, at least with less configuration fiddling.
If you want the streams to end up in Cockpit, you should make them RTSP streams, and add them in BlueOS as a restream - I don’t think this is possible for more than one stream currently? Mavlink Camera Manager, running in BlueOS, needs to know about the stream in order for Cockpit to display it…
I’ve had 5 streams running in Cockpit at the same time with no issue - exploreHD, RadCam 4k stream (upcoming product), and 3 streams from a MarineSitu stereocamera - albeit at a low frame rate!
Just tacking on that Cockpit’s main video support is specifically for WebRTC streams, not arbitrary UDP ones. The camera manager in BlueOS can package a H264-encoded stream it’s provided into a WebRTC stream under the hood, which you can also run by itself (outside of BlueOS), but if you’re not using that then you may face some integration challenges or issues.
It is possible to display some other stream types provided via a URL, but Cockpit can’t nicely detect them (so the URLs need to be set manually), and it can’t record them.
I could be missing something, because the documentation is very sparse, but my understanding of the hub that you are using is that it is more of a switch than a hub. What I mean by that is that I think it enables you to connect up to 7 cameras and select which ONE (or maybe few?) is currently being passed onwards, rather than passing all 7 onwards simulataneously. Why do I think this, well this line from the documentation “thanks to our innovative switcher design”, but also the documentation shows the hub feeding into the raspberry pi 4 USB2.0 port, which in practice (and from my experience trying to make 8 usb cameras work without this DWE hub product) is going to really struggle to handle the bitrate of all 7 cameras at once.
The first test I would do is to connect them all up, SSH onto the raspberry pi and see how many video devices you can see in ls /dev
I could be wrong, and that board could be doing something clever, but I’m skeptical that it can stream all 7 cameras simultaneously at their maximum resolution and fps.
Recording happening on the device itself without recording the stream on GSC(packets drops and low quality even with highest bitrate on DWE OS). I don’t need to run Blueos on jetson or on any other computers rather than rpi + navigator stack.
The question was, would it possible to connect physically cameras to the jetson using the DWE 7 port hub and then run on the jetson some kind of software utility/node that would communicate with BlueOS extension/camera manager and therefore would transfer the data to the Cockpit.
I believe as @EliotBR mentioned better option is sending video over the WebRTC from the jetson to the network for streaming on Cockpit while recording the raw video on the jetson.
My concern was not doing from the scratch for handling the encoding part, but I assume I would use gstreamer for that one.
Thanks