Using extra servo control to control a strafe thruster


You guys must be giggling…
I have called on my computer buddies but no one knows anything about programming. I have spent another 2 hours trying to understand how this bloody thing works. Am I safe to say that you download the program/files on to a micro SD card then pop it in the board in the ROV and fire it up?

Thanks again,



You can think of SSH as just a way to run commands on the beaglebone, the stuff you type in gets sent to the beaglebone and its output is sent back to the terminal program. If you are running a windows computer, an easy way to do this is with a program called putty.

  1. Download and install Putty ( on your computer.
  2. Plug the new ESC into one of the existing motor servo ports
  3. Power up the ROV and make sure that you can connect to the dashboard
  4. Open up putty and create a new session:
    Set Host Name to
    Set Saved Session to OpenROV
    Click Save button
  5. You can now open up a terminal session with the beaglebone/ROV by double clicking on the OpenROV session in the list, you shoud see a black terminal window appear. It may take a few seconds but it will then ask for a username, then a password
    Enter rov as the username and OpenROV as the password
  6. Once you are logged in some information will be dislayed and you will get a prompt something like:
  7. In here type the following commands into putty:
    cd /opt/openrov/cockpit/linux (this command changes to the directory where scripts are kept on the BB)
    sudo bash (this will ask you for a password, use OpenROV again)
  8. Wait for it to do its thing, when it is finished you should see the prompt again
  9. Close the putty window (and click ok to close the session)

Using openrov system for other kind of ROVer/drone


You must be a school teacher! That’s exactly what I needed. I’ll give it a shot and see how it goes.

If your’e ever down under…it’s my shout! (I’m buying the beer)

Thanks again,




Not a teacher, just know how foreign this stuff can be if is not something you have worked with before. I have been thinking about putting a guide together covering this sort of stuff.

As for the beer, I suspect I am a quite a bit further down under than you at the moment (you can check it out here), and probably won’t be back home (Melbourne) till March/April, so you might have to keep that one in the esky for me.


Haha, looks like you are bit further down! Let me know when you’re back in
town, I’m in Bundoora. By the time you get back i’ll be building another

Thanks again,




If you manage to get the additional ESC working, as a bit of a learning experiment I put together a mod that will enable a strafe thruster in software (attached). For it to work you will need to be running v30.0.0 on the ROV (as this is what I based it off). The changes include firmware changes to add another thruster as well as software changes for the motor diagnostics and rovpilot plugins. The lateral thruster needs to be connected to D9 and uses the gamepad X axis on the right hand stick or v/b on the keyboard (seemed appropiate, and they weren’t currently used). I have tested this on my ROV and everything seems to work well. (14.4 KB)

To install it:

  1. Download and unzip the (in it is a file called strafe.tar.gz)
  2. Start up the ROV, go into the dashboard, stop the cockpit and start the share drive
  3. Open up file explorer and enter the following address:
    \ \\OpenROV
  4. Browse to /opt/scripts/mods/ and copy strafe.tar.gz into that folder
  5. SSH into the ROV (connect with putty just like above)
  6. Enter the following commands:
    cd /opt/scripts/mods/
    sudo tar -xmvzf strafe.tar.gz -P (this will extract the modified files to the correct locations)
    cd /opt/openrov/cockpit/linux/arduino/
    sudo bash (this will re-compile and load the new firmware)
  7. Once the firmware update has finished, reboot the ROV and try it out

Design a 4 thruster ROV
Second servo pan and tilt

I am so glad you are bored down there mate! Thanks again!
It’s a rainy day here so its time to work through this and get this going. I’ll let you know.




Well first off, Adam you have done an awesome job putting together a tight working piece of programming and instruction that this old man could handle…Thanks for that! To everyone else, Walt, Brian thanks for helping me through this build. I’ll get a video together in the test tank so you can all see how slick it turned out. I couldn’t be happier.

Thanks again,


Well I haven’t edited the video so it could be a bit long, but it does show how well it handles. Again, thanks to everyone who helped me add the strafing thruster. Hopefully this helps other people who want a very maneuverable ROV.
Now it’s time piloting practice!



So cool! Glad you got it to work and there is now an example for others!


hi this is a good project, i am on this too(4 thrusters ROV), but with different motor config. @Walt_Holm can this be done on V2.8 board as well? looking at schematic, pin 23-25 on V2.8 are connected to servo channel, guess it cant be done…
anyway have you complete the 6 thrusters:yum::yum:?


If you are going to mount a 4th ESC on a V2.8 Controller Board, you have to remove resistors R70-R72 first. Removing these resistors will detach the servo control signals from test points TP23-TP25, which can then be used for the ESC outputs. See the Control Board 2.8 schematic, Sheet #2.

The resistors are a little tricky to get to- they’re located underneath ESC #3. You can either reach under the ESC with a soldering iron, or partially unsolder the ESC, remove the resistors, and then re-attach the ESC.



thanks @Walt_Holm, i see it shouldn’t be too hard, i need to know if it will affect the shunt current monitor? also are the motor current sensing circuit use to measure speed in anyway (e.g back emf)? else i need to create a separate control board for motor…


Adam did an excellent job making the strafing mod to v30.0.0 to make this work well. Can’t thank him enough, but I will be buying him a couple slabs of beer when he gets back to Melbourne in a few months.
That said, I have since replaced my dead IMU with the new version. Unfortunately the new IMU only works with V30.2, so I am waiting patiently for badevguru to get a few things sorted so I can keep strafing.



hi all,
i have a couple of question here…

  1. so after i created a new thrusters and Aconfig file, what should i do next, to make it working?
  2. how to assign a keyboard/gamepad key for that particular motion let say i have 4 motion planned (not the same as current config/motion planned) and do i need to change anything else in other part inside c9 codes?



That’s programming my friend…I am good at construction and electrical but programming…not so much. Hopefully someone responds. If not I have a few mod files that work with v 30.0.0 and v 30.0.3



The OpenROV code already has stubs for all axis of motion. The commands are currently

  • lift
  • thrust
  • roll
  • strafe
  • yaw
  • pitch

Each passes a value between -1 and 1 down to the thruster code.

The thruster files are setup so that you listen to the incoming commands and then it is up to you to covert those to the right motor commands. The code in the OpenROV repos uses a pattern of settings the requested state for each motor in a variable (new_p for port thruster) and then the actual motor value in (p for port thruster).

In the 30.0.3 release of the software, all of the commands were setup in the API to pass through the beaglebone down to the Arduino. However in the browser software, the controls were never linked up to send the Roll or Strafe commands. That is updated in the master branch of the software.


So just so my old brain understands this…it needs a bit of programming and won’t strafe “straight out of the box”?



i cant follow the later part of your explanation…
basically what does it mean?


@badevguru i have my thruster in this sequence/configuration…