QGC necessary? (or custom interface possible)

Hi. I’m new to BlueRov2 and I am wondering if QGC is necessary to use the device?

I want to make a custom interface instead (if this is possible) mainly for educational purposes. As I am studying Software Engineering and want to learn if interfaces like these are hard to recreate/ understand or even customise.

Any tips or advice for what I should look out to while working on this?

Hi @Mina, welcome to the forum :slight_smile:

No, not particularly. If you have a look at the BlueROV2’s Software Components you can see that QGroundControl (QGC) is just one part of the system, and if you make an alternative ground control software (GCS) that can accept the relevant inputs and transmit the relevant outputs then you can replace QGC. There are already a few options discussed in the Third Party Products / Ground Control Software forum category, which may give some idea of what others have tried and how they’ve approached it.

QGC is open source - you can customise it as much as you want and build your own versions of it, and they have a developer guide for getting started with that. Note that QGC is quite complex, particularly because it’s made to support several vehicle types which ROVs are only one of, so it includes several features and components that aren’t relevant to or used when controlling our ROVs.

For a standard BlueROV2, the only required component for controlling it is a mavlink stream, using the common and ardupilotmega message sets. You can use pymavlink to get started with that, but if you’re planning to make a full GCS and want it to be high performance then you’ll probably want to use a compiled option instead.

It’s likely you’ll want to view the video stream, in which case you’ll need something that can access and display a H264-encoded video stream from a UDP port. That can be a separate application to your GCS if you want (e.g. VLC/OBS), but if you want to have an integrated application you might want to use a library like gstreamer (which is what QGC uses).

If you’re planning to upgrade your ROV to include some kind of positioning system then you’ll also need to have some way of displaying that on a map. If that’s a GPS system that you want to integrate directly to the top-side then your GCS will need to be able to accept and parse some form of GPS communication (e.g. NMEA messages), but that’s likely better left until you have the earlier components in a usable state, especially since some positioning systems will communicate directly with the ROV in which case the GCS just needs to be able to display the positions it receives via mavlink.

1 Like

You can also contribute or help with others GCS alternatives such as kirogi:

Thank you so much for this very useful response. I haven’t had a full dive into the documentation yet, just some quick glances but with all that you have replied, I am certain it will be a lot (which is good!) but that will also mean my follow up questions (if there are any) might take a while.

I think i will skip the pymavlink and go straight into the regular mavlink stream, because I have no knowledge nor intention to use python. With the compiled option I assume you mean regular Mavlink?

Thank you so much for the tip for the gstreamer, since I do indeed want an integrated application. For as what I understood there is also sonar on the model we can use, and we will use GPS too. (again I haven’t dove into the documentation a lot yet)

All in all, looking forward to developing something for this and once again, thank you so much for the size of reply :slight_smile: If I have any follow-up questions, can I post under this thread or do I make another thread?

Mavlink is a generated protocol. Pymavlink is one of the possible libraries for using and interacting with it, but there are also several other options. There isn’t really a “regular mavlink”, because mavlink itself is just an xml specification of messages and the parameters they use.

If they’re relevant, feel free to post them here (new comments bump posts to the top of the activity list, so I/we will see them even if the original post was years ago), but if they’re unrelated to the original question then it likely makes more sense to make a separate post for them.

I’d recommend you have a look through the How to Use the Forums post - it outlines various components of how to interact with and make/format posts effectively, and also includes a breakdown of the relevant resources that you likely want to search through before asking new questions :slight_smile:

1 Like

Hello everyone,

I want to make a simple user interface that can communicate with Ardusub and companion software.

Is there any way to do it without using QGC?

Thanks,
Best regards

Hi @ugurdemirezen,

I’ve moved your post here because it’s on the same topic. Please read the responses above, then feel free to follow up if you have further questions :slight_smile: