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.