Design a 4 thruster ROV

software

#1

we are doing some work on 4 thrusters ROV, and we bough a 2.8ROV kit for starters to get to know the part and etc…
so i would like to know if i would be able to actually develop a 4 thrusters ROV with the kit (purchasing extra motor of course and developing a control board suitable for it) also new body frame
then it come to most challenging part for us (programming the ROV), since this project is opensource and code are available on github we are thinking to add extra control on the 4th thruster by tweaking the code a bit…
can anyone show me the best way to approach this task? my questions are:

  1. do i need to tweak beaglebone code as well or only arduino control board?
  2. which file are used for control purpose? i open pilot and motor cpp file but dont know if its the right one…
  3. anything i need to know before proceeds with the hardware/software work?

edit:
i see that the board is using a shunt current monitor, i believe it is for motor speed control right?

Reply are much welcome, would appreciate any ideas/ comment

thanks
khairil


Port side Batteries dry much faster than Starboard side
OpenROV adding motors
#2

Hi khairil,
are you looking for a strafe thruster like this: Using extra servo control to control a strafe thruster ??


#3

Hello

I am on the same way as you, the only different thing is that I am starting from zero developing my own software.

arduino is very easy and you can do everything with it, even control a DC motor by PWM with a potentiometer to modulate the speed of your propeller! easy man.

about your ROV starter kit and the software you are using i do not know anything about it, better if you do your own and we can help you if we know anything, please show your results!


#4

This control block diagram might help you sort out what is going on with regard to the programming architecture.

We have developed the architecture to be very simple to adjust for different thruster configurations. The input control values remain as throttle, lift, and yaw all the way until they reach the Thruster Module on the Arduino where the math is all done for the PWM output to each motor. This allows just this one file to be changed when a different physical configuration is used no matter how complicated the configuration becomes (vectored thrust, strafe thruster, ver-trans, etc.)


#5

@fberg that a good ref, save me big time.
thanks

@luisgamez35 that is my first thought, then we have problem to write our own communication prog you see. most of us are specialize in control system but less capable with programming. we could do basic motor control for a robot but anything beyond that is new to us

@Brian_Grau thanks, so most program reside inside the beaglebone board right, which we access on chrome browser?
"We have developed the architecture to be very simple to adjust for different thruster configurations. The input control values remain as throttle, lift, and yaw all the way until they reach the Thruster Module on the Arduino where the math is all done for the PWM output to each motor. This allows just this one file to be changed when a different physical configuration is used no matter how complicated the configuration becomes (vectored thrust, strafe thruster, ver-trans, etc.)"
Again which file is this?


#6

my friend

basic control for a motor is what you need here, put a potentiometer into a arduino and you can regulate by PWM, if you want this to go forward and after just bring a H bridge! and this is your propeller! finish.

remember on arduino you can read analog inputs from 0 to 1023, and PWM output is from 0 to 255, use the function map() for this


#7

yes, i know that much… and since i bought the kit might as well use all the feature it have (cam, light, laser and etc)…
@luisgamez35 how do you communicate ur ROV?


#8

hi @kyril_acap

at the moment i havent done this, i only have my software done in my arduino…

for communication i will use serial RS485, with MAX485 to communicate arduino master and slave, this is because you need to have a very big lenght of cable like 50 or 100 depends of how much you want it to go.

so you will have one master near to the potentiometers and 1 slave inside ROV to control motors ;).


#9

You can edit the code through Google Chrome using the Cloud9 interface in the latest release (30.0.3). It is located on port :3131 (see release notes)

In terms of the thruster configuration the default thruster file is the Thrusters2X1

https://github.com/OpenROV/openrov-software-arduino/blob/master/OpenROV/Thrusters2X1.cpp

This file is the one that should be modified for your configuration. You will also need to change the Aconfig.h file to point to your new Thruster file name.

I know @badevguru has been working on different Thruster files for different setups. Depending on what your setup is we may already have the file written.


#10

thanks again :heart_eyes:@Brian_Grau
@luisgamez35 so that means, what you want to achieve with your ROV is control of speed & direction like RC toy… no visual and so on? our team aims is to design a stability controller for the ROV and if possible, maybe path following and path tracking control… and later a fully autonomous underwater vehicles…
but this going to be a really long ride


#11

hi.its been a long time. i had many issues (resources) with the development but i had been making bit of progress though slower than expected

here some pic… there are many trial and error, finally some improvement

there are changes to earlier design, here the latest version

this is how i ‘planned’ it to work

but im not sure how well it will ‘work’:sweat_smile:

for forward and reverse all motor will push/pull
yaw (turn) or strafe 2 thrusters (left and right)
dive/surface or pitch 2 thruster (up and down)
so a 5DOF motion is programmed (generally the control is working, yes its magic :thinking:)

*** this development mainly for Research purpose and next part is to program a more ‘smart’ Controller after the programmed motion are working to ‘practical’ level.

and final prototype ( bit different than drawing)

and i still need to figure out the ballast and buoyancy thingy…

right now the vehicle is floating on water (to be expected with that huge pvc huh :sob:)… currently i fill the tube with sand to weight down…anyone have any good or practical idea?

here some ‘doesn’t really work’ video…:weary:


my piloting sucks :worried:

all motors are working and the modified thruster program also work ( which thruster need to work)… but the problem is that my thrusters direction isnt right :confused:. … and i couldnt reverse the motor in cockpit thruster diagnostic … @Brian_Grau, @badevguru @charlesdc any though on this?
i’m not good with troubleshooting coding/programming and so
my final choice is to change the hard wiring of the thruster (i though by changing any 2 wire of the thruster gonna reverse the direction) right @Walt_Holm?


#12

the video not uploaded i think


#13

@kyril_acap:

Yes, if you swap any two wires of a 3-phase brushless motor, the direction of rotation will reverse.


#14

ok done.its works now. But now i found another issues the fourth motor i use are really much slower than the original three… the motor and esc are taken from my spare 2.8 controller board and i though i wont have issues with programming of the extra esc. also during start up. the new esc boot up later than the other 3. (the first 3 beep, then the new one beep seconds later, how can i fix this…)

thanks…


#15

found out that the last ESC is problem maybe somehow its program changes, not sure though. after replace the esc, the ROV moves a lot better. i had also made some mofification to increase its stability.

this way i also had place where to place my battery tube

my progress are slower but im working to improve some control.
diving and strafe are not working as expected, it wasnt easy since i only have a small tank for testing


#16

Thanks for updating this thread. In the latest video, the unit appears very responsive. It appears to turn in a tight radius. Have you considered splitting and/or reorienting your vertical thrusters to allow for a straight vertical movement without having to drive down to dive?


#17

hi Jim, thanks for your interest, actually if the control is working as ‘planned’ it should be able dive straight and also allow for strafe motion using current thrusters orientation. the challenges are to have all motor provides the same thrust. although we control the signal, thrusters rpm and thrust (push/pull) varies since there are no feedback for those.
i tried using IMU data but still without lucky attempt.