Motor Control issues



I have a couple of issues. When I power up the cape and connect to it through the UI the behaviour I experience is as follows:

Front arrow - both starboard and port thrusters run in the forward direction (direction that will enable forward motion)

Left/Right arrow - the starboard and port thrusters turn appropriately to turn left/right

Back arrow - Both starboard and port stop

No key press - Startboard thruster runs in reverse direction, port stops

Shift Key - Top thruster moves up

Ctrl Key - No movement

I believe the ideal behavior would be:-

Back arrow - Starboard and port move in reverse direction

Ctrl Key - Top thruster moves down

No key press - All thruster stop

What could be causing this behaviour?

I verified the esc program, it is same as specified in the help files. I haven't gone into the source code, do I need to do any changes?



have you calibrated the end-points on the esc's?


I have set the 10 points in the esc as specified in the link


was this part done?

Calibrating the ESC

The ESCs need to see what the signal is from the Arduino @ different speeds to work properly. If your motor is spinning when it should be idle, it is because the system is not calibrated. The steps below were used with the ESCs in the KIT but should work for any ESC.

    1. With all of the ESCs switched off, go ahead and power up. Nothing should happen on the motors, if you are getting motors spinning be sure to remove the Servo Power jumper)     2. Connect with the cockpit software and open the diagnostic pane.     3. Hold the reset button on the ESC while powering on the first ESC using the switch on the ESC... it should start beeping and the red LED flashing... let go of the reset button. (It will keep beeping which is fine).     4. Press reset once and the green LED should come on and you should here a single beep.     5. Move that motor's slider all the way to the right and then press the reset on the ESC again. You should get 2 beeps.     6. More that motor's slider all the way to the left and then press the reset on the ESC again.     7. Switch off the ESC     8. Move the next ESC and repeat... 

After calibration, you should be able to leave all of the ESCs switched on.

Creative Commons Attribution Share Alike


I did the last part of calibrating the esc. Thanks for pointing that out.

Now everything except going in reverse works.

Reverse doesn't work for all 3 thrusters. But if I go to the diagnostic pane and set some value less than 90, the motors run in reverse direction. I cannot do reverse direction through the designated keys in the keyboard.

Any help would be great.




I have the same problem, can you tell me if you find some solution.



Currently I am working with a different version of openrov using raspberry pi where everything is working. I will let you know when I fix the beaglebone version.


Ok. thanks for your fast reply



Havering the same issues. I am working with the latest version of the software 2.5.29 and I cannot get the motors to run properly they are either all the way on or off sometimes They go on sometimes they don’t and generally at full throttle very little control with the joystick or the keypad. I have run through the ESC programming multiple times always with different set of symptoms either they turn the right way they turned the wrong way but never do I get it to run properly. I do like the new features with this software but would like to understand what tank control or fly by wire? I am currently working on a shipwreck that is totally intact from the early 1800s in freshwater and would love to use this to do some of my photography, we are getting a lot of press with this shipwreck and would love to have openROV publicized with our findings.


Hi Craig:

After you programmed the ESCs, did you calibrate them? See step 92 in the Dozuki guide for OpenROV 2.6. If a motor is running in the wrong direction, the easiest way to fix it is to check the reverse box for that particular thruster in the diagnostics window.

"Tank controls" assign a joystick to each forward thruster. If you want to go forwards you push both joysticks forwards. If you want to turn you push only one forwards and maybe pull the other one back. It's similar to the way tanks used to be controlled.

"Fly by Wire" inserts an autopilot loop in-between the joysticks and the actual motor control. That allows for things like auto-stabilization, depth hold, etc. The fly-by-wire code is pretty crude right now but is getting better with each release.



thank you for the explanation of the new functions they look very exciting. This unit was purchased earlier this year from open ROV so I am assuming they were calibrated because they worked with the original software. I have ordered a program card just in case something has changed and that should be in sometime this week. Because this was previously running I am assuming it has something to do with either the new software or computer human interface. I do notice that when I initiate the cockpit interface it takes quite a while like 30 to 60 seconds before google chrome displays it. Not sure if this is part of the issue or not. I have gone through the step 92 programming multiple times and it does not seem to make any difference in the end result as it is always different. And as for the reverse box whether it is checked or not does not seem to do anything except occasionally disable him over in one direction. As I have been out of the programming arena for many years is fair a guide to the raw data that is displayed in the right-hand panel? It is kind of hard to translate the meaning of these data points without knowing the code. I did record a portion of the data stream, I do not know if this is helpful or not please let me know and I can forward.


This gets even more confusing. This time I disconnected all the ESC's except for the one I was programming and got the same results with having no reverse port thrust-er and all other thrusts were running at higher speeds when throttle was used which is very uncontrollable either minimal control or almost full throttle. Repeated this four times with absolutely the same result. Next I started playing with the port reverse motor thrust-er and that worked one time only then went back to no reverse. Next I put the reverse Starboard thrust-er check-box and voilà everything seems to work fine using the diagnostics screen(I have fairly reasonable control). Now I move down to the keyboard with thrust factor to 2(default) everything appears to work alright except the first time I push the key the port motor doesn't rotate(no mater how long I hold the key down) until second initiation. Now I set the thrust-er to one and the port motor no longer works. If I hold the reverse key down and cycle through the numbers everything works fine including the number one??? Now it's time for the Logitech joystick to be connected. The vertical thrust-er works fine in the down mode but only operates high-speed in the up mode. There is no logic to the right and left thrust-er going forward they spin either direction sometimes while running they switch directions on the fly. I checked the calibration of the joystick in Google chrome and it is rock solid. Is there somewhere in the code that I can watch the joystick commands to get a better understanding on what is being sent to the ESC's?


Hey Craig,

Not sure if you got past this, but in the telemetry the motor and mtarg items are what you are looking for. mtarg(port,vertical,starboard) is the target motor signal sent to the Arduino. Motor(port,vertical,starboard) is what signal level the Arduino is currently sending to the motors. There is a bit of abstraction in those so they do not reflect the motor reverse settings. That will be changed in a coming release.


Problem resolved with an intermittent ESC on the port side motor. Replaced the ESC and everything is running like a champ…