Need for a 'gentle introduction to Trident / OpenRov software development'


I write as a marine scientist and fledgling Trident pilot. I am keen to understand what is under the hood in terms of both software and hardware. I am naturally nervous about ‘black boxes’! I am also keen to understand how the base software may be modified. I see reference in a multitude of places to various low levels modifications (hacks?) but am unable to find a ‘gentle introduction to development’ so that I can understand and participate.

Is there such a single document or tutorial? I do hope so, since this will present Trident as a vibrant development environment rather than a consumer device.

By the way, Trident rocks😊

Dr Bernie McConnell
Sea Mammal Research Unit
University of St Andrews

1 Like

or perhaps someone could point me to a reasonably simple example so I can get started.

Hi Bernie,

I believe Trident is using RTI Connext DDS, which has lots of general development information on their site, from getting started video tutorials to the detailed RTI Connext DDS Core Libraries User’s Manual.

The documentation by other companies implementing the open OMG DDS standard provides different introduction perspectives and explanations to DDS that I found helpful as someone new to DDS.

Also, search this forum for posts titled ‘DDS - Software Exploration’ by @Jim_N that is written for the Trident. In #6 Jim has a Java example, Trident Data Visualizer.

So far, Sofar Ocean hasn’t provided a ‘gentle introduction to development’ as a single document or tutorial for the Trident, and I haven’t seen one anywhere else.

Details of what DDS QoS and types that are used by the Trident are in the following Trident folder :

The Trident DDS Topics are in /opt/openrov/share/orovmsg/types/xml/Topics.xml and the other *.xml files define the data in those Topics.

RTI Connext also has a free ( for now ) RTI Connector that has bindings for Python, JS, Lua and maybe Node.js coming.

What platform / language would you like to develop on / with? What kind of application are you interested in?

Let us know what you come up with.


Thanks for the detailed reply, Bill. Probably take me a week or so to digest everything.

Language: just now I’m migrating some of my day-job analysis from R to Python - not sure is the latter is appropriate for development?

Applications: bit of a chicken and egg here. But what has driven my interest is diving deep (say 50m) fast. The greater the downward pitch, the harder is seems to be to control heading. I’m mulling over a control system where the reciprocal heading is automatically established every 10m of depth. Then there might be at least a sporting chance of the ROV being under the boat when it hits bottom!

But just now these are idle thoughts. I’ll get back to you I get my head around your reply.

Many thanks


Hi Bernie,

I hope you are well. Bill is a good one to work with on getting started. I have not been on the forums in some time due to other commitments, but it has also been a desire to have an API that allows users none expert access to the DDS underbelly. I think this will come in the future, just don’t know when. I have not dove into the python side of the house and won’t for some time but it might be something we could do after the new year. We should try to garner community interest in getting a python api up. If we could get three or 4 developers to dedicate say 6 months to a community built prototype api, we might actually kick up more interest in the Trident and various use cases. Something to consider…


@mcconnell.bernie I ran across a couple links you might find interesting.

RTI has a useful page with links to lots of documentation for RTI Connext DDS v6.0.0:

As for your project of diving deep fast, Eric had some comments in this topic:

1 Like

Thanks man for explaining it so well…it is really helpful…!!! :smiley:

If anyone has an interest in the RTI Connext DDS Connector, I would suggest getting the experimental Connector downloaded now while it’s still free. It looks like it may be a two step download : 1) the target architecture library and 2) the language binding. Let me know if you’re interested in and get the Python binding working.

Interested :o

On the RTI Connext community forum, it was mentioned “RTI Connector for Python and for Javascript will be productised in Q4 of 2019.” To me it sounds like they’re going to start charging for it.

To get it for Python now for all architectures for FREE :

cd HOME/Dev/ Optional to conform to SW to log to CSV and/or display Trident DDS Topic data. git clone --recursive

You’ll then be able to copy this directory tree to other platforms. For me, it’s working on Win10, Ubuntu, RPi3B Raspbian Jessie and Buster Desktop.

May be you interested in.
Unofficial macOS control app for the Trident Drone

@dmitry Already checked it out to see what you were using for DDS. You have more than a ‘good start!’ But I don’t have a Mac.

Do you have a way to come up with pitch and compass heading? I didn’t see them being published. Maybe derive them from rov_attitude? Quaterions?

@webhoppery There is no problem getting a pitch, yaw, and roll from the quaternion. I see no usefulness in their visualisation. Instead, you see drone orientation in realtime in the lower-left corner. This is more convenient than just a set of numbers.