bug: cameras inconsistently appearing in QGC
Bug description
Brought up in this forum post:
QGroundControl with BlueOS will automatically display the video streams ... [but] the video changing function is not very reliable and having 3 cameras on our setup, most of the time only 1 or 2 show up and its inconsistent with which camera shows and which don’t.
Steps to reproduce
- Start multiple streams in BlueOS
- Check QGC for available ones
- Repeat with inconsistent results [NEEDS CONFIRMATION]
Primary pain point(s)
Makes it harder to effectively use multiple cameras with BlueOS, and encourages using external applications for streaming any/all video instead of QGC (which fragments the user experience).
Prerequisites
- [X] I have checked to make sure that a similar request has not already been filed or fixed.
@Williangalvani said (internally)
It smells like MAVLink routing to me. I think a good start is to set up 3 streams and check if the heartbeat rate in QGC is 1Hz for all cameras
Makes sense to be a MAVLink issue if the cameras are appearing fine in BlueOS and can be streamed without issues when using direct UDP ports (needs confirmation, but seems likely).
Hello!
Yes, the cameras appear fine in BlueOS and when using software such as OBS to receive stream, all 3 cameras show up with high reliability. The problem only appear with QGroundControl and the moment Mavlink camera shows up.
Thanks!
Same issue was raised here, and was apparently solved by flashing on a new BlueOS image.
Interesting. Was there an update because I reflashed it before and same issue. Also it may be a bit different because I am using 3 cameras
Turns out the issue was not in fact solved - it just temporarily worked for them after they flashed, and is still somewhat intermittent.
Hey guys, did anyone get to the bottom of this? We're also having trouble with multiple cameras in BlueOS.
We did investigate this issue, and from what we discovered it appears to be a problem with mavlink-router.
To explain it a bit better, for each camera on the camera-manager, we create two threads, one for the heartbeat and the other to deal with incoming mavlink messages. Once mavlink-router receives two different heartbeats from the same UDP socket, each heartbeat with a different mavlink camera component ID, mavlink-router starts to send just messages for the latest heartbeat component ID received from the camera-manager. As a result, only a single camera works, and if there is a time difference between multiple cameras heartbeat, the others may work resulting in video change between cameras on QGC.
In addition to what Patrick said above, I want to point out two other related things:
- The ordination in the QGC combobox for camera selection is inconsistent;
- The name of the cameras that are shown in QGC is not what is chosen in mavlink-camera-manager.
Both degrade the experience for multiple cameras.
@joaoantoniocardoso is this still a thing ?
In addition to what Patrick said above, I want to point out two other related things:
* The ordination in the QGC combobox for camera selection is inconsistent; * The name of the cameras that are shown in QGC is not what is chosen in mavlink-camera-manager.Both degrade the experience for multiple cameras.
These two observations are still true. Tested on QGC 4.1 and 4.4, BlueOS master