South Africa
Asked — Edited
Resolved Resolved by DJ Sures!

Continous Servo Calibration. 90 Zero, Not Equal Up And Down

Hi guys.

I have created a movement class for a two wheel bot setup (Like adventure bot).

I copied the default values that ARC uses for a continuous servo movement panel.

180 108 1

I dropped the speed on each servo a little in ARC, and settled on a speed using.

D1 150 108 30

D0 30 108 150

I then copied these values in my own project (SDK). I wrote some routines that allow me to have proportional turns mid-movement, using the two wheels. (Not stop and turn).

All was well until I saw the video of DJ calibrating the continuous servos. I decided to give my bot the best chance in life :-), and to calibrate its servo's.

I calibrated servo Zero to 90.

What is really strange to me now, is that I seem to not have the full range of 90 - 180. Somewhere around 150 it stops having an effect.

What is even stranger, is that the reverse side wheel (2nd servo), is not linear to the first servo.

If servo one stops moving quicker at around 150, then I expect the other servo stop at around 30. (30 points from 180, and 1, respectively.)

This does not seem to be the case. My issue now is that using the same (step), I am not getting equal movement on the left and right wheels.

Is there a control to test each directions' max setting? (Short from listening to the servo)

If I have to go back to 108 as ZERO, that is fine (As I had nice linear movement between the servos). I would still like to know why 108 seems to be the ZERO between 1 and 180...

I must be missing something.

Thanks


ARC Pro

Upgrade to ARC Pro

ARC Pro is your gateway to a community of like-minded robot enthusiasts and professionals, all united by a passion for advanced robot programming.

PRO
Synthiam
#1  

108 isn't a stop point. If you used the calibration video, it explains that 90 is your stop point. if the continuous rotation servo panel defaults to 108, then change it to 90. I'll update it for the next release to be 90 by default.

The servo should be calibrated, as per the video, to stop at 90. Half of 180 is 90.

The calibration procedure can be found here: https://synthiam.com/Tutorials/UserTutorials/190/1

Ps, updates the description regarding the calibration procedure in the tutorial. I will update ARC to ensure 90 is the new default "stop" position.

Or remember, you can simply Release the servo to have it stop as well - which is default behavior for the ARC controls.

If you are using the sdk, there is a parameter to specify in the Movement class to release the servos when STOP is specified, rather than transmit a stop position. If you require code examples extracted from the sdk to be pasted here, let me know. Anything I can do to help!:)

South Africa
#2  

Hi DJ, thanks for your input.

I may not have explained myself properly.

Let me add some more info.

I know the ZERO is "90": 180/2. But that, as per a normal 180 degree Servo, should give me 90 points up from center (180), and 90 points down from center (1)?

I guess continuous servos don't have exactly 90 up and down? As you can "move" the center around. (This was my question, but I guess I pretty much figured the answer out with my testing.)

I am using the stop function from the SDK, and my routine stops as desired. My issue is not with forward, backward or stop actions. My bot can move forward and backward in a straight line.

My issue comes in when I want to turn. I slow down the one side. (slow down left wheel to turn left.)

On the initial/factory calibration (108 center), I had equal movement when turning right and left. (Using the same value to detract from each wheel's "Max Forward" value to turn left and right respectively).

With the new calibration, slowing the left wheel down by 15 points to turn left, has a greater effect than slowing the right wheel down by 15 points to turn right.

I.E. Turns are more effective to the left than to the right.

Yes, this can be calibrated out in my routines, but I liked that they were "equal" in their range on the factory calibration.

Ultimately, I should find the highest value up and down from ZERO (90) for each servo. Is there a control to achieve this? With a normal servo, you can easily see where it stops. With the continuous servo, I am a bit stuck.

P.S. The servo's sat perfectly still when testing ZERO (108) in the movement panel. This means they were calibrated for 108? Is this just a "figure" or does it mean something? Do continuous servos specifically have the range from 0 - 90 - 180, like regular servos?

Thanks for the help so far. To re-iterate, I can go back to the initial settings, and all would be good, but I am very curious as to this situation, because obviously I do not fully understand how continuous servos work, and I would like to!

Thanks

South Africa
#3  

Rethinking my routines now, maybe it is best to work my way up from ZERO (90) as I know where that is, instead of down from "MAX". I will give this a try, but would still like some clarification on my previous post.

PRO
Synthiam
#4  

Move away from 90. You don't have 90 positions from 90. There's only 20 or so, don't quote me on that - but it's not 90 servo speeds in either direction.

South Africa
#5  

Thank you. That answers my question.

PRO
Synthiam
#7  

Awesome:) glad I could help!