Architecture of the software


Hi guys,

just trying to get a bit more into OpenROV and was trying to understand what's the status of things and what's the architecture of the project, for a software/WH stand point.

I'm basing my thoughts on what is available online and on github, which is one month old.

Basically all software runs on the ROV, nothing on the computer side, just "modern" browser.

The ROV has two boards:

  • BeagleBoard
  • The "cape", which is basically an Arduino

On the beagle board the OpenROV software runs: which is a NodeJS app which interface with the browser, and grabs images and sends them to the browser.

The arduino "cape" reads from the NodeJS app and commands the motors.

I love the simplicity: that way it becomes very easy to add more sensors or similar other features, like sonars or other sensors.

Is this the current state of the art? Or is there more?



You are correct. Basically, we have a Node.js server thats truly the brain of everything - it manages the connection between the user and the ROV and allows the ROV to send images/(sensor data soon) to the user and allows the user to send control data to the ROV.

The big thing about the image data is that we Base64-encode each image and send it over to the user where we have a simple IMG tag that we update the source attribute with the Base64-encoded image data.

We are making a few videos next week to introduce the community to some of the development process. One of which will be a software architecture overview. Sorry it's taken us so long to get that out. And thanks for all of your feedback.

You are spot-on in your assessment. I will add more detail in the video next week. Thanks!


Thank you... very clear explanation.

Interested to see how this evolves