Scanning Sonar Thoughts

If you install the companion software on the RPi* in the ROV then that setup will send a H264 stream to the top. On the top computer/RPi you can use QGroundControl to receive the video stream, or if you only want the video (no mavlink telemetry and whatnot) you can use a more lightweight streaming application like gstreamer/ffmpeg (CLI), or VLC (GUI).

*Note: companion software is currently only officially supported for RPi3. If you want to use RPi4 in the ROV you can try here, which I’ve managed to get working with a video stream and Ping360 as per my comments at the bottom of the issue, but there isn’t official support for it. The top computer can be whatever you want, and if you’re using a Raspberry Pi for it then I’d strongly suggest using a 4 so you have a bit more processing power to handle the data streams and display.

Think of the fathom-X like a range extender - it takes in an ethernet signal, raises the voltage to reduce losses over the tether, and then the corresponding fathom-X on the other end drops the voltage back down and gives back the output ethernet signal (this is a simplification - it actually uses the HomePlug AV standard to convert to high-frequency AC and then converts back to an ethernet signal at the other end). You can do testing of the communications with just an ethernet cable between the companion RPi and the top computer/RPi, and then add in the fathom-Xs and tether once you have the system working.

Raspberry Pis can send and receive ethernet signals. The Blue Robotics camera plugs in to the companion RPi, and provides a V4L2 (video for linux v2) interface that allows access to a H264-encoded stream at a few different sizes and framerates, as well as a few other encodings (that aren’t as efficient for streaming). The companion software uses a command-line application called gstreamer to connect to the 1080p30fps H264 stream, and converts it to a UDP stream which gets sent over ethernet. I recently covered this process in more detail in the “Existing Pipeline” section of this comment if you’re interested.

The ping sonars communicate via Ping Protocol. The companion software is made to automatically detect one Ping Altimeter, and/or one Ping360, and basically acts as a communication link to the top computer. The top computer can then run the PingViewer, which will automatically detect the connected Ping device(s), and start scanning once you select the device you want to view. If you’re connecting to both an altimeter and a Ping360 you’ll need to open one PingViewer per device.

The Python and C++ libraries for interacting with Ping Protocol are for if you want to manually control when the pings are transmitted, or do real-time analysis on the incoming signal. If you’re just wanting to view the ping scans and change the device settings then you don’t need to use a library - just use the Ping Viewer application :slight_smile:

Ping Viewer is an application, and whatever you choose to view your video in will be a separate application, so they’re in separate windows. If you’re using a RPi you’ll need to have it in desktop mode (instead of command-line/ssh mode), but from there it’s like any other computer so you can plug in a mouse and move around each window as desired. My only concern with using a Raspberry Pi as the top computer is performance, but in the case that it’s a bit too slow at decoding frames or something you can decrease the frame size or frame-rate using the web-interface that the companion computer provides to the top computer.

Hopefully this is clearer now from my comments above. Since the top computer is operating as a ‘normal’ computer, there are multiple windows that you can organise on the one display. You can also have multiple monitors/displays connected if your computer supports it, but that’s not super relevant.

A Pixhawk flight-controller is a prerequisite if you’re controlling your ROV using the mavlink protocol, which is what QGroundControl uses. That doesn’t seem to be the case for you, in which case it shouldn’t be an issue. You just need to make sure your required telemetry and ROV control communication gets through where it needs to, be that through using a separate twisted pair to what the companion computer is sending to (may have issues with noise), or by somehow hooking up the relevant components to the companion computer in the ROV and getting it to send them over ethernet to the top computer, which you’d then need to connect to your controls and whatnot (may be difficult depending on your setup).