BlueOS Mavlink-Camera-Manager CPU Overload

Background

Our team has developed a pair of 1000 meter rated ROV’s mostly using Blue Robotics components. The ROV tether was suppled by TE Rochester (P/N A320327). The steel armored cable has a single 39 Ohm coax. It works well with the FathomX and regularly see data rates of 5+ Mbps. This is enough bandwidth for two video streams and an Oculus sonar set to low resolution. One of the video streams is set to 320x240 15 FPS and is used to monitor the release of the umbilical. The other camera is set to 640x480 15 FPS.

We initially believed the throughput limitations of the cable were the limiting factor with regards to video resolution. With only 5+ Mbps to work with we expected limitations. We ordered a set of RAK WisLink PLC LX200V30 EVB’s. These are similar the FathomX but have 2.5 times the data rate. We tested them we are now seeing 12-15+ Mbps data rates. We expected we could now increase the camera resolution 1080P. This was not the case. Further investigation revealed that the problem is in the Mavlink-Camera-Manager.

The Mavlink-Camera-Manager is used to configure and establish video streams from the ROV. It runs on the Raspberry Pi and is able to keep up at low resolutions, say 640x480 15 FPS, but anything higher causes the Raspberry Pi to reach 400% processor usage. This causes the camera to lock up. Again thinking this was caused by the cable, we eliminated it from the setup and connected an Ethernet cable directly to the Raspberry Pi. Nothing changed.

Setup:

We are running BlueOS version 1.4.0. When the camera resolution is set to 640x480 15FPS it works OK, the CPU % hovers around 60-80%. As long as it stays below 100% the stream does not lock up, at about 200% there are brief hesitations, but it recovers, above this percentage it locks up and often does not resume unless it is rebooted in some fashion.

Questions:

  1. In the Stream Creation window, what does it mean to disable MavLink? When I disable it, the processor load decreases somewhat, so the video continues to work without locking up at resolutions of 1280 x 720 15FPS. However, vigorous movement of the camera will eventually cause CPU% to increase and eventually lock up the camera.

  2. What does Mavlink-Camera-Manager -default settings BlueROV UDP - tcpout 127.0.0.1:5777 telling me? the TCP camera settings are set to 192.168.2.3:8554?

  3. Can somebody please respond and tell us what they are seeing on their ROV with regards to CPU % related to MavLink-Camera-Manager and what resolution your camera is set to? CPU Usage is found in System Information.

  4. Is there some place that provides more documentation about the camera settings? I’d like to try some of the other options other than RTSP, or UDP. I do not think this will solve the problem but it would be interesting to try.

We have two ROV’s one has a Pi 3 and the other a Pi 4. Both have the same issues. One has a 16GB memory card, the other a 32GB. I have multiple spare cameras and have swapped them out, no joy.

Possible solutions: We are investigating IP based cameras, there are some new ones on the market that look interesting. I’ll report back after we have tested them. We have an old Axis IP Encoder that works great but it has more latency than we would like.

1 Like

Dunno if this helps, but i’m getting 100 Mbps over 4000-ft of 90 ohm cable-tv coax using off-the-shelf ethernet-over-coax adapters. $75 a pair?
In the ROV, the Rpi connects to a 4-port hub, and my stripped-down security system DVR connects to the hub as well. Hub connects to coax adapter. This allows me 8 HD camera feeds.
So my camera feeds have nothing to do with my control system, other than sharing bandwidth through the coax adapter.